This commit was manufactured by cvs2svn to create tag
'Root_R3_4_1_maintenance_patches'.

Sprout from R3_4_1_maintenance_patches 2008-10-14 19:52:13 UTC cvs2svn <platform-releng-dev@eclipse.org> 'This commit was manufactured by cvs2svn to create branch'
Delete:
    bundles/org.eclipse.jface/.classpath
    bundles/org.eclipse.jface/.cvsignore
    bundles/org.eclipse.jface/.options
    bundles/org.eclipse.jface/.project
    bundles/org.eclipse.jface/.settings/.api_filters
    bundles/org.eclipse.jface/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.jface/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.jface/.settings/org.eclipse.pde.prefs
    bundles/org.eclipse.jface/META-INF/MANIFEST.MF
    bundles/org.eclipse.jface/about.html
    bundles/org.eclipse.jface/build.properties
    bundles/org.eclipse.jface/icons/full/help.gif
    bundles/org.eclipse.jface/icons/full/message_error.gif
    bundles/org.eclipse.jface/icons/full/message_info.gif
    bundles/org.eclipse.jface/icons/full/message_warning.gif
    bundles/org.eclipse.jface/icons/full/page.gif
    bundles/org.eclipse.jface/icons/full/pref_dialog_title.gif
    bundles/org.eclipse.jface/icons/full/title_banner.png
    bundles/org.eclipse.jface/plugin.properties
    bundles/org.eclipse.jface/scripts/exportplugin.xml
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractAction.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractGroupMarker.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ControlContribution.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/CoolBarManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/GroupMarker.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IAction.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManagerOverrides.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ICoolBarManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuCreator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IStatusLineManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/IToolBarManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/MenuManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/Separator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLine.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineLayoutData.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubCoolBarManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubMenuManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubStatusLineManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubToolBarManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/images/stop.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/action/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/IBindingManagerListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/ISchemeListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/SchemeEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Trigger.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyBinding.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyLookupFactory.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequence.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequenceText.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyStroke.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/ParseException.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeySupport.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/FormalKeyFormatter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/IKeyFormatter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/KeyFormatterFactory.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ActionHandler.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/commands/PersistentState.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/commands/RadioState.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ToggleState.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/commands/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/IContextIds.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/AnimatorFactory.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlAnimator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlEnableState.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/Dialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogMessageArea.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogPage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogTray.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorSupportProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogBlockedHandler.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogConstants.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogPage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogSettings.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IInputValidator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IMessageProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangeProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangedListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangingListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ImageAndMessageArea.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/InputDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangedEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangingEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressIndicator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressMonitorDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/StatusDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TrayDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/help.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_error.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_info.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_warning.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu_disabled.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/title_banner.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/AutoCompleteField.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ComboContentAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/DecoratedField.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldAssistColors.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecoration.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecorationRegistry.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposal.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlCreator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextContentAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextControlCreator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/contassist_ovr.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/error_ovr.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/errorqf_ovr.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/info_ovr.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/required_field_cue.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/warn_ovr.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/images/dots_button.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/ConfigureColumnsDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/InternalPolicy.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/JFaceActivator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/CoolBarManager2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ICoolBarManager2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarContributionItem.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarManager2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarContributionItem2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarManager2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/AbstractColumnLayout.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridDataFactory.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridLayoutFactory.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutConstants.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutGenerator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TableColumnLayout.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TreeColumnLayout.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/layout/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/menus/AbstractTrimWidget.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IMenuStateIds.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IWidget.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/menus/TextState.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/menus/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/messages.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/operation/AccumulatingProgressMonitor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableContext.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableWithProgress.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IThreadListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/operation/ModalContext.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/operation/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanPropertyAction.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorSelector.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ComboFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/DirectoryFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditorPreferencePage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FileFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FontFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPersistentPreferenceStore.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceNode.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePageContainer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceStore.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IntegerFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/JFacePreferences.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ListEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PathEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceConverter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceNode.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferencePage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceStore.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/RadioGroupFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ScaleFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringButtonFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringFieldEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/images/pref_dialog_title.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/preference/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/AbstractResourceManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ArrayFontDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorRegistry.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/CompositeImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DataFormatException.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DerivedImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceException.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FileImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDataImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageRegistry.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceColors.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceResources.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/LocalResourceManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/MissingImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/RGBColorDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceRegistry.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/StringConverter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/URLImageDescriptor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_aix.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_hp-ux.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux_gtk.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_macosx.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_qnx.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_sunos.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows2000.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows98.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsnt.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsxp.properties
    bundles/org.eclipse.jface/src/org/eclipse/jface/resource/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/Assert.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDragAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDropAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/ILogger.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/IOpenEventListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/IPropertyChangeListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/ISafeRunnableRunner.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/ListenerList.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/OpenStrategy.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/Policy.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/PropertyChangeEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnable.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnableDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/StatusHandler.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDragSourceListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDropTargetListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/util/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractComboBoxCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractListViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AcceptAllFilter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ArrayContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/BaseLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellNavigationStrategy.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckStateChangedEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTableViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTreeViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColorCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLayoutData.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnPixelData.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationStrategy.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorDeactivationEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnWeightData.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxViewerCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ContentViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CustomHashtable.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingStyledCellLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationContext.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationOverlayIcon.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DelegatingStyledCellLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DialogCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DoubleClickEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/EditingSupport.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellHighlighter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellOwnerDrawHighlighter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBaseLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBasicPropertyConstants.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorValidator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellModifier.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckStateListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckable.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorDecorator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecoration.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecorationContext.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDelayedLabelDecorator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDoubleClickListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IElementComparer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFilter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontDecorator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputSelectionProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelDecorator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProviderListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILightweightLabelDecorator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IOpenListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IPostSelectionProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelection.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionChangedListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredSelection.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableColorProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableFontProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeSelection.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeViewerListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IViewerLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelDecorator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProviderChangedEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ListViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/NamedHandleObjectLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OpenEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OwnerDrawLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SWTFocusCellManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SelectionChangedEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredSelection.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledString.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableColumnViewerLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableLayout.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableTreeViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerColumn.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerRow.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TextCellEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeColumnViewerLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeExpansionEvent.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNodeContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePath.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePathViewerSorter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeSelection.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerColumn.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerEditor.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerRow.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/Viewer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerCell.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerComparator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerDropAdapter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerFilter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerLabel.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerRow.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerSorter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/WrappedViewerLabelProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractConcurrentModel.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractVirtualTable.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/BackgroundContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ChangeQueue.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ConcurrentTableUpdator.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/DeferredContentProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/FastProgressReporter.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModel.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModelListener.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IntHashMap.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/SetModel.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/ApplicationWindow.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/DefaultToolTip.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/IShellProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/SameShellProvider.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/WindowManager.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/window/package.html
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizard.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer2.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardNode.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardPage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/Wizard.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardDialog.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardPage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardSelectionPage.java
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/images/page.gif
    bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/package.html
    bundles/org.eclipse.ui.views/.classpath
    bundles/org.eclipse.ui.views/.cvsignore
    bundles/org.eclipse.ui.views/.project
    bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.ui.views/.settings/org.eclipse.pde.prefs
    bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
    bundles/org.eclipse.ui.views/about.html
    bundles/org.eclipse.ui.views/build.properties
    bundles/org.eclipse.ui.views/icons/full/dlcl16/defaults_ps.gif
    bundles/org.eclipse.ui.views/icons/full/dlcl16/filter_ps.gif
    bundles/org.eclipse.ui.views/icons/full/dlcl16/tree_mode.gif
    bundles/org.eclipse.ui.views/icons/full/elcl16/defaults_ps.gif
    bundles/org.eclipse.ui.views/icons/full/elcl16/filter_ps.gif
    bundles/org.eclipse.ui.views/icons/full/elcl16/tree_mode.gif
    bundles/org.eclipse.ui.views/icons/full/eview16/outline_co.gif
    bundles/org.eclipse.ui.views/icons/full/eview16/prop_ps.gif
    bundles/org.eclipse.ui.views/plugin.properties
    bundles/org.eclipse.ui.views/plugin.xml
    bundles/org.eclipse.ui.views/scripts/exportplugin.xml
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/ViewsPlugin.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/ContentOutlineMessages.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/messages.properties
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/package.html
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/PropertiesMessages.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/messages.properties
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutline.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutlinePage.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/IContentOutlinePage.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/package.html
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CategoriesAction.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ColorPropertyDescriptor.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxLabelProvider.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxPropertyDescriptor.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CopyPropertyAction.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/DefaultsAction.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/FilterAction.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ICellEditorActivationListener.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertiesHelpContextIds.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertyDescriptor.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntry.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntryListener.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetPage.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource2.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySourceProvider.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyColumnLabelProvider.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyDescriptor.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyEditingSupport.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheet.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetAction.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetCategory.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetPage.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetSorter.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/TextPropertyDescriptor.java
    bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/package.html
    bundles/org.eclipse.ui.workbench/.classpath
    bundles/org.eclipse.ui.workbench/.cvsignore
    bundles/org.eclipse.ui.workbench/.options
    bundles/org.eclipse.ui.workbench/.project
    bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.ui.workbench/.settings/org.eclipse.pde.prefs
    bundles/org.eclipse.ui.workbench/Eclipse UI Editor Support/org/eclipse/ui/internal/editorsupport/ComponentSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/AbstractSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ActiveShellExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/BasicWorkingSetElementAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ExtensionFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegateWithEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IContainmentAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IDecoratorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionBarContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorInput.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorLauncher.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorMatchingStrategy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IElementFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IExportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFileEditorMapping.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFolderLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IImportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditorInput.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IKeyBindingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ILocalWorkingSetManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationHistory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocationProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INestableKeyBindingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INewWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INullSelectionListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IObjectActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPathEditorInput.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener3.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener4.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPlaceholderFolderLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPluginContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPropertyListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IReusableEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveableFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesLifecycleListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesSource.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISharedImages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IShowEditorInput.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProviderListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISources.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IStartup.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWindowListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchActionConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart3.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindow.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSet.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetElementAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/LegacyHandlerSubmissionExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/NavigationLocation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PartInitException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PerspectiveAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PlatformUI.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/Saveable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SaveablesLifecycleEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchEncoding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/ISystemSummarySection.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionContext.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionGroup.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseNewWizardMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseSelectionListenerAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CommandNotMappedException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CompoundContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributedAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributionItemFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ExportResourcesAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ImportResourcesAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/LabelRetargetAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenInNewWindowAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewPageMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewWindowMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PartEventAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/QuickMenuCreator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/RetargetAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SelectionProviderAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SimpleWildcardTester.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityManagerEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/CategoryEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivity.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManagerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityPatternBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityRequirementBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryActivityBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifier.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifierListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IMutableActivityManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPoint.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IWorkbenchActivitySupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IdentifierEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/NotDefinedException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchActivityHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/ActionBarAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/DisplayAccess.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IActionBarConfigurer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchConfigurer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IBundleGroupConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IProductConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWebBrowser.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWebBrowser.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/AbstractHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ActionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CategoryEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandManagerEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExecutionException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExtensionParameterValues.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerSubmission.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategoryListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommand.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandImageService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManagerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementUpdater.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandlerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfiguration.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfigurationListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeySequenceBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IWorkbenchCommandSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/KeyConfigurationEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotDefinedException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotHandledException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/Priority.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextManagerEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/EnabledSubmission.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContext.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextActivation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManagerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IWorkbenchContextSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/NotDefinedException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/EditorSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementListSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileSystemElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IOverwriteQuery.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionStatusValidator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionValidator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferenceLinkArea.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferencesUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyDialogAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionStatusDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoPaneElementSelector.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TypeFilteringDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetGroup.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/IDragAndDropService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistField.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/CollapseAllHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/HandlerUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerActivation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryRadioState.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryToggleState.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/AbstractHelpUI.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/DialogPageContextComputer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IContextComputer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IWorkbenchHelpSystem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/ViewContextComputer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/WorkbenchHelp.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEnabledHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEvaluationHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSet.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionPresentation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetActionBars.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetMenuManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetSeparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetsEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActiveEditorAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivityPersistanceHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AggregateWorkingSet.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimatedTabFeedback.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationEngine.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationFeedbackBase.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BaseSaveAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BrandingProperties.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BundleGroupProperties.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllSavedAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseOthersHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CompatibleWorkbenchPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ConfigurationInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContainerPlaceholder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleBaseHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleEditorHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CyclePerspectiveHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultSaveable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultStackPresentationSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedPlaceHolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedWindow.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DirtyPerspectiveMarker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragCursors.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragHandle.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EarlyStartupRunnable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorMenuManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPane.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPluginAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSashContainer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorStack.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorEditorPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorViewPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExceptionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FaderAnimationFeedback.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBar.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBarContextMenuContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewDnDHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewPane.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FolderLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IActionSetContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IBackgroundSaveListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IChangeListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ICompatibleWorkbenchPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IHeapStatusConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ILayoutContainer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectActionContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IReorderListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ISelectionConversionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IStickyViewManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ITrimAreaChangeListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchThemeConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageAnimationFeedback.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageCycleFeedbackBase.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntModel.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalHandlerUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalSaveable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntroAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/KeyBindingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPartSash.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTree.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTreeNode.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyAnimationFeedback.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LocalWorkingSetManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LockToolBarAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MessageLine.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Model.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MultiEditorInnerPane.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEntry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectFilterTest.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectPluginAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPreferencesAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OverlayIcon.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageListenerList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPlaceholder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPluginAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSashContainer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTester.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveListenerList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PinEditorAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderFolderLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlatformUIPreferenceListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PopupMenuExtender.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductProperties.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RadioMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationFeedbackBase.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationImageFeedback.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReferenceCounter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ResetPerspectiveAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAllAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAsAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SavePerspectiveAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveableHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveablesList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionAdapterFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Semaphore.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SharedImages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShellPool.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowFastViewContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenuHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePageService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePartService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlaveSelectionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StartupThreading.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager32.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimArea.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDragPreferences.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDropTarget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimFrame.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimLayoutData.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UISynchronizer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBars.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayoutRec.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPane.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPluginAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSashContainer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStack.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStackTrimToolBar.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewerActionBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinActionBars.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPartService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginPulldown.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowTrimProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchColors.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchConfigurer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchEditorsHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPagePartList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPartReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowPropertyTester.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbookEditorsHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSet.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleGroupData.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutData.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/CommandAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/DynamicHelpAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/EditWorkingSetAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpContentsAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/PinEditorContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Activity.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPropertyTester.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Category.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistryListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Identifier.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/InternalActivityHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/PatternUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Persistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ProxyActivityManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/messages.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWebBrowser.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImagePersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandLegacyWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerLegacyWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandServiceFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandStateProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ElementReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/LegacyCommandListenerWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/Parameter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/WorkbenchCommandSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextActivation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextAuthority.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextServiceFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/NestableContextService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationImageBuilder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationResult.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutSystemDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ActionSetComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/BundleSigningTray.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CapabilityFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DialogUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencesPageContainer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ProductInfoDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardTagFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/AbstractDropTarget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/CompatibilityDragTarget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragBorder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDragOverListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/InsertCaret.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/SwtUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/TestDropLocation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/ActivePartExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionExpressionWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewerContributionExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePartHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CyclePageHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerActivation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerAuthority.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerServiceFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerListenerWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MaximizePartHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MinimizePartHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NestableHandlerService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NewEditorHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuickMenuHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuitHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SlaveHandlerService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/intro.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CancelOnModifyListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CategoryPatternFilter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CompactKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/FormalKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/ImageFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyBindingState.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeySequenceBinding.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/LegacySchemeListenerWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderVerifyListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/SchemeLegacyWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingModel.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/CommonModel.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ConflictModel.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextModel.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/KeyController.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ModelElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeModel.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CacheWrapper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellData.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayoutUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/GridInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ICachingLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ITrimManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/IWindowTrim.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutCache.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/Row.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/SizeCache.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimArea.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimCommonUIHandle.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDragPreferenceDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimToolBarBase.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/AbstractWorkbenchWidget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionRoot.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IActionSetsListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuActivation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalMenuService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuActivation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuLocationURI.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuServiceFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/PulldownDelegateWidgetProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/SlaveMenuService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimAdditionCacheEntry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimBarManager2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WidgetProxy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/Policy.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StatusUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StringMatcher.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TestPartListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIListenerLogging.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIStats.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/model/ContributionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartHost.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartPropertyProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IWorkbenchScopeConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullEditorInput.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullPersistable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/Part.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/SelectionProviderAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/StatusPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractBooleanListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractIntegerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractPropertyListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/Base64.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMap.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMapListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceStoreAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferencesAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyListenerList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapUnion.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeManagerAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/AbstractTableInformationControl.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/BasicPartList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/DefaultActionBarPresentationFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/ISelfUpdatingAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativePresentationFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativeStackPresentation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolderButtonListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationFactoryUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationSerializer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuClose.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseAll.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseOthers.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuDetach.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastView.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastViewOrientation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMaximize.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMinimize.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMove.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMoveFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMovePane.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuPinEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuRestore.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSize.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSizeFastView.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuStateChange.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/UpdatingActionContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/classic/WorkbenchPresentationFactoryClassic.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultMultiTabListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultPartList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultSimpleTabListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolderColors.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultThemeListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativePresentationFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/EnhancedFillLayout.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/IPresentablePartList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ISystemMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/LeftToRightTabOrder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PresentablePartFolder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ProxyControl.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ReplaceDragHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardEditorSystemMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardSystemToolbar.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardViewSystemMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabDragHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderEvent.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabOrder.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabbedStackPresentation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/WidgetTabItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AbstractProgressViewer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IAnimationProcessor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobBusyListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressRegion.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewUpdater.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/presentations/IActionBarPresentationFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CamelUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/Category.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSet.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSetDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/KeywordRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveExtensionReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/RegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ShowViewHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/StickyViewDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/UIExtensionTracker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewParameterValues.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardParameterValues.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardsRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActionSetSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActivePartSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActiveShellSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/CurrentSelectionSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationAuthority.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCache.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCacheComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationServiceFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ExpressionAuthority.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IEvaluationResultCache.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/INestable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IServiceLocatorCreator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IWorkbenchLocationService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/MenuSourceProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/PreferencePersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/RegistryPersistence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocatorCreator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SlaveEvaluationService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourceProviderService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchLocationService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/EclipseSplashHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/SplashHandlerFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchTestable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingColorRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingFontRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingMap.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IEditable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeElementDefinition.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/LightColorFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBContrastFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementCategory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementHelper.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchPreview.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/AllowGrabFocus.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Animations.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/GrabFocus.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/ImageAnimationTweak.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/InterceptContributions.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/LegacyAnimations.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviour.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Tweaklets.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Workbench3xImplementation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/WorkbenchImplementation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/BundleUtility.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ConfigurationElementMemento.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Descriptors.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ImageSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/PrefUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/NewWizardRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/messages.properties
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IntroContentDetector.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/CharacterKey.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IBindingService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IKeyFormatter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/Key.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyFormatterFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeySequence.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyStroke.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ModifierKey.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/NaturalKey.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ParseException.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SWTKeySupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SpecialKey.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IContributionRoot.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IMenuService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchWidget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/AdaptableList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/BaseWorkbenchContentProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/ContributionComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IComparableContribution.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IContributionService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter2.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/PerspectiveLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchPartLabelProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerComparator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerSorter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/IWorkbenchOperationSupport.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/NonLocalUndoUserApprover.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/OperationHistoryActionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/RedoActionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoActionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoRedoActionGroup.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CellEditorActionHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CoolItemGroupMarker.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownComposite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillFrame.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillStack.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorActionBarContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorInputTransfer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IContributedContentsView.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IDropActionDelegate.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageBookViewPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ISetSelectionTarget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInSource.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTarget.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTargetList.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IWorkbenchPartOrientation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IntroPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MessagePage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditorInput.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageSelectionProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/Page.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBook.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSwitcher.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginDropAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransfer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransferData.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ShowInContext.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ViewPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/WorkbenchPart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkingCopyManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ScopedPreferenceStore.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/SettingsTransfer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewPreferencesAction.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewSettingsDialog.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WizardPropertyPage.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WorkingCopyManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/AbstractPresentationFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentablePart.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentationSerializer.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IStackPresentationSite.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/PresentationUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackDropResult.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackPresentation.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/WorkbenchPresentationFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IElementCollector.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IJobRunnable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/PendingUpdateAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/UIJob.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/WorkbenchJob.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/AbstractServiceFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IDisposable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationReference.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceLocator.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceScopes.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceWithSources.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/ISourceProviderService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/AbstractSplashHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/BasicSplashHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusAdapter.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/IFocusService.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/ITestHarness.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/IWorkbenchPartTestable.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/TestableObject.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IColorFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ITheme.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemeManager.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemePreview.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/RGBBlendColorFactory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IStickyViewDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewCategory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/package.html
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardCategory.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardDescriptor.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardRegistry.java
    bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/package.html
    bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
    bundles/org.eclipse.ui.workbench/about.html
    bundles/org.eclipse.ui.workbench/build.properties
    bundles/org.eclipse.ui.workbench/plugin.properties
    bundles/org.eclipse.ui.workbench/plugin.xml
    bundles/org.eclipse.ui.workbench/scripts/exportplugin.xml
diff --git a/bundles/org.eclipse.jface/.classpath b/bundles/org.eclipse.jface/.classpath
deleted file mode 100644
index ce73933..0000000
--- a/bundles/org.eclipse.jface/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.jface/.cvsignore b/bundles/org.eclipse.jface/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.jface/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.jface/.options b/bundles/org.eclipse.jface/.options
deleted file mode 100644
index f62a68c..0000000
--- a/bundles/org.eclipse.jface/.options
+++ /dev/null
@@ -1,20 +0,0 @@
-# Debugging options for the org.eclipse.jface plugin.
-
-# Turn on debugging for the org.eclipse.ui plugin.
-org.eclipse.jface/debug=false
-
-# Log a message if a dialog is opened without a parent
-org.eclipse.jface/debug/dialog/noparent=false
-
-# Always log reentrant calls to viewers (if set to false, it just logs the first reentrant call)
-org.eclipse.jface/debug/viewers/reentrantViewerCalls=false
-
-# Show the jface new look for the preferences dialog
-org.eclipse.jface/newlook/preferences/showNewLook=false
-
-# Report when a tool bar contribution item is asked its visibility after being
-# disposed.  TODO Remove this option?  Bug 51000
-org.eclipse.jface/trace/toolbarDisposal=false
-
-# Reports the time to run an action
-org.eclipse.jface/trace/actions=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.jface/.project b/bundles/org.eclipse.jface/.project
deleted file mode 100644
index b541893..0000000
--- a/bundles/org.eclipse.jface/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jface</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.jface/.settings/.api_filters b/bundles/org.eclipse.jface/.settings/.api_filters
deleted file mode 100644
index 1215f8c..0000000
--- a/bundles/org.eclipse.jface/.settings/.api_filters
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.jface" version="2">
-    <resource path="src/org/eclipse/jface/dialogs/PopupDialog.java" type="org.eclipse.jface.dialogs.PopupDialog">
-        <filter id="388194388">
-            <message_arguments>
-                <message_argument value="org.eclipse.jface.dialogs.PopupDialog"/>
-                <message_argument value="HOVER_SHELLSTYLE"/>
-                <message_argument value="540680"/>
-            </message_arguments>
-        </filter>
-        <filter id="388194388">
-            <message_arguments>
-                <message_argument value="org.eclipse.jface.dialogs.PopupDialog"/>
-                <message_argument value="INFOPOPUP_SHELLSTYLE"/>
-                <message_argument value="8"/>
-            </message_arguments>
-        </filter>
-    </resource>
-</component>
diff --git a/bundles/org.eclipse.jface/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jface/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index e6751d1..0000000
--- a/bundles/org.eclipse.jface/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,72 +0,0 @@
-#Mon Oct 22 10:29:11 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=error
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.jface/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.jface/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 3efbe7b..0000000
--- a/bundles/org.eclipse.jface/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Mon Oct 22 10:29:11 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.javadoc=true
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return Returns the ${bare_field_name}.\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} The ${bare_field_name} to set.\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} IBM Corporation and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *     IBM Corporation - initial API and implementation\n ******************************************************************************/\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @since 3.4\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template></templates>
diff --git a/bundles/org.eclipse.jface/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.jface/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index fee4b04..0000000
--- a/bundles/org.eclipse.jface/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-#Sat Mar 19 15:31:31 EST 2005
-compilers.p.deprecated=0
-compilers.p.illegal-att-value=0
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=0
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=0
-compilers.p.unknown-element=1
-compilers.p.unknown-resource=0
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.p.unused-element-or-attribute=1
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface/META-INF/MANIFEST.MF
deleted file mode 100644
index 58c47d4..0000000
--- a/bundles/org.eclipse.jface/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,47 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.jface
-Bundle-Version: 3.4.1.qualifier
-Bundle-ClassPath: .
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.jface,
- org.eclipse.jface.action,
- org.eclipse.jface.action.images,
- org.eclipse.jface.bindings,
- org.eclipse.jface.bindings.keys,
- org.eclipse.jface.bindings.keys.formatting,
- org.eclipse.jface.commands,
- org.eclipse.jface.contexts,
- org.eclipse.jface.dialogs,
- org.eclipse.jface.dialogs.images,
- org.eclipse.jface.fieldassist,
- org.eclipse.jface.fieldassist.images,
- org.eclipse.jface.images,
- org.eclipse.jface.internal;x-friends:="org.eclipse.ui.workbench",
- org.eclipse.jface.internal.provisional.action;x-friends:="org.eclipse.ui.workbench",
- org.eclipse.jface.layout,
- org.eclipse.jface.menus,
- org.eclipse.jface.operation,
- org.eclipse.jface.preference,
- org.eclipse.jface.preference.images,
- org.eclipse.jface.resource,
- org.eclipse.jface.util,
- org.eclipse.jface.viewers,
- org.eclipse.jface.viewers.deferred,
- org.eclipse.jface.window,
- org.eclipse.jface.wizard,
- org.eclipse.jface.wizard.images
-Require-Bundle: org.eclipse.swt;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
- org.eclipse.core.commands;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
- org.eclipse.equinox.common;bundle-version="[3.2.0,4.0.0)"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4,
- CDC-1.0/Foundation-1.0,
- J2SE-1.3
-Import-Package: javax.xml.parsers,
- org.osgi.framework,
- org.w3c.dom,
- org.xml.sax
-Bundle-Activator: org.eclipse.jface.internal.JFaceActivator
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.jface/about.html b/bundles/org.eclipse.jface/about.html
deleted file mode 100644
index 4602330..0000000
--- a/bundles/org.eclipse.jface/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 2, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation 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
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jface/build.properties b/bundles/org.eclipse.jface/build.properties
deleted file mode 100644
index 2c04303..0000000
--- a/bundles/org.eclipse.jface/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.properties,\
-               about.html,\
-               .,\
-               META-INF/
-src.includes = about.html
-source.. = src/
diff --git a/bundles/org.eclipse.jface/icons/full/help.gif b/bundles/org.eclipse.jface/icons/full/help.gif
deleted file mode 100644
index 86550fe..0000000
--- a/bundles/org.eclipse.jface/icons/full/help.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/icons/full/message_error.gif b/bundles/org.eclipse.jface/icons/full/message_error.gif
deleted file mode 100644
index 2ff6678..0000000
--- a/bundles/org.eclipse.jface/icons/full/message_error.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/icons/full/message_info.gif b/bundles/org.eclipse.jface/icons/full/message_info.gif
deleted file mode 100644
index b484d9b..0000000
--- a/bundles/org.eclipse.jface/icons/full/message_info.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/icons/full/message_warning.gif b/bundles/org.eclipse.jface/icons/full/message_warning.gif
deleted file mode 100644
index 8e054d0..0000000
--- a/bundles/org.eclipse.jface/icons/full/message_warning.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/icons/full/page.gif b/bundles/org.eclipse.jface/icons/full/page.gif
deleted file mode 100644
index 4ed90dc..0000000
--- a/bundles/org.eclipse.jface/icons/full/page.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/icons/full/pref_dialog_title.gif b/bundles/org.eclipse.jface/icons/full/pref_dialog_title.gif
deleted file mode 100644
index 672442f..0000000
--- a/bundles/org.eclipse.jface/icons/full/pref_dialog_title.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/icons/full/title_banner.png b/bundles/org.eclipse.jface/icons/full/title_banner.png
deleted file mode 100644
index 01e187c..0000000
--- a/bundles/org.eclipse.jface/icons/full/title_banner.png
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/plugin.properties b/bundles/org.eclipse.jface/plugin.properties
deleted file mode 100644
index 528303e..0000000
--- a/bundles/org.eclipse.jface/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = JFace
-providerName = Eclipse.org
diff --git a/bundles/org.eclipse.jface/scripts/exportplugin.xml b/bundles/org.eclipse.jface/scripts/exportplugin.xml
deleted file mode 100644
index 2ea417c..0000000
--- a/bundles/org.eclipse.jface/scripts/exportplugin.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<project name="Export JFace" default="export" basedir="..">
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.eclipse.jface" />
-		<property name="version"  value="_2.1.0" />
-		<property name="dest"  value="${destdir}/${plugin}${version}" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-		<jar 
-			jarfile="${dest}/jface.jar"
-			basedir="bin"
-		/>
-		<copy file="plugin.xml" todir="${dest}"/>
-		<copy file="plugin.properties" todir="${dest}"/>
-		<zip zipfile="${dest}/jfacesrc.zip">
-		    <fileset dir="src" />
-  		</zip>				
-	</target>
-</project>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractAction.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractAction.java
deleted file mode 100644
index a389387..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractAction.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * <p>
- * Some common functionality to share between implementations of
- * <code>IAction</code>. This functionality deals with the property change
- * event mechanism.
- * </p>
- * <p>
- * Clients may neither instantiate nor extend this class.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class AbstractAction extends EventManager implements IAction {
-
-	public void addPropertyChangeListener(final IPropertyChangeListener listener) {
-		addListenerObject(listener);
-	}
-
-	/**
-	 * Notifies any property change listeners that a property has changed. Only
-	 * listeners registered at the time this method is called are notified.
-	 * 
-	 * @param event
-	 *            the property change event
-	 * 
-	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent)
-	 */
-	protected final void firePropertyChange(final PropertyChangeEvent event) {
-		final Object[] list = getListeners();
-		for (int i = 0; i < list.length; ++i) {
-			((IPropertyChangeListener) list[i]).propertyChange(event);
-		}
-	}
-
-	/**
-	 * Notifies any property change listeners that a property has changed. Only
-	 * listeners registered at the time this method is called are notified. This
-	 * method avoids creating an event object if there are no listeners
-	 * registered, but calls
-	 * <code>firePropertyChange(PropertyChangeEvent)</code> if there are.
-	 * 
-	 * @param propertyName
-	 *            the name of the property that has changed
-	 * @param oldValue
-	 *            the old value of the property, or <code>null</code> if none
-	 * @param newValue
-	 *            the new value of the property, or <code>null</code> if none
-	 * 
-	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent)
-	 */
-	protected final void firePropertyChange(final String propertyName,
-			final Object oldValue, final Object newValue) {
-		if (isListenerAttached()) {
-			firePropertyChange(new PropertyChangeEvent(this, propertyName,
-					oldValue, newValue));
-		}
-	}
-
-	public void removePropertyChangeListener(
-			final IPropertyChangeListener listener) {
-		removeListenerObject(listener);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractGroupMarker.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractGroupMarker.java
deleted file mode 100644
index e0e5679..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/AbstractGroupMarker.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Abstract superclass for group marker classes.
- * <p>
- * This class is not intended to be subclassed outside the framework.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class AbstractGroupMarker extends ContributionItem {
-    /**
-     * Constructor for use by subclasses.
-     */
-    protected AbstractGroupMarker() {
-    }
-
-    /**
-     * Create a new group marker with the given name.
-     * The group name must not be <code>null</code> or the empty string.
-     * The group name is also used as the item id.
-     * 
-     * @param groupName the name of the group
-     */
-    protected AbstractGroupMarker(String groupName) {
-        super(groupName);
-        Assert.isTrue(groupName != null && groupName.length() > 0);
-    }
-
-    /**
-     * Returns the group name.
-     *
-     * @return the group name
-     */
-    public String getGroupName() {
-        return getId();
-    }
-
-    /**
-     * The <code>AbstractGroupMarker</code> implementation of this <code>IContributionItem</code>
-     * method returns <code>true</code> iff the id is not <code>null</code>. Subclasses may override.
-     */
-    public boolean isGroupMarker() {
-        return getId() != null;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java
deleted file mode 100644
index 5be541b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Action.java
+++ /dev/null
@@ -1,697 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * The standard abstract implementation of an action.
- * <p>
- * Subclasses must implement the <code>IAction.run</code> method to carry out
- * the action's semantics.
- * </p>
- */
-public abstract class Action extends AbstractAction implements IAction {
-
-	private static final IMenuCreator VAL_DROP_DOWN_MENU = new IMenuCreator() {
-		public void dispose() {
-			// do nothing
-		}
-
-		public Menu getMenu(Control parent) {
-			// do nothing
-			return null;
-		}
-
-		public Menu getMenu(Menu parent) {
-			// do nothing
-			return null;
-		}
-	};
-
-	/*
-	 * The list of default values the action can have. These values will
-	 * determine the style of the action.
-	 */
-	private static final String VAL_PUSH_BTN = "PUSH_BTN"; //$NON-NLS-1$
-
-	private static final Integer VAL_RADIO_BTN_OFF = new Integer(0);
-
-	private static final Integer VAL_RADIO_BTN_ON = new Integer(1);
-
-	private static final Boolean VAL_TOGGLE_BTN_OFF = Boolean.FALSE;
-
-	private static final Boolean VAL_TOGGLE_BTN_ON = Boolean.TRUE;
-
-	/**
-	 * Converts an accelerator key code to a string representation.
-	 * 
-	 * @param keyCode
-	 *            the key code to be translated
-	 * @return a string representation of the key code
-	 */
-	public static String convertAccelerator(int keyCode) {
-		return LegacyActionTools.convertAccelerator(keyCode);
-	}
-
-	/**
-	 * Parses the given accelerator text, and converts it to an accelerator key
-	 * code.
-	 * 
-	 * @param acceleratorText
-	 *            the accelerator text
-	 * @return the SWT key code, or 0 if there is no accelerator
-	 */
-	public static int convertAccelerator(String acceleratorText) {
-		return LegacyActionTools.convertAccelerator(acceleratorText);
-	}
-
-	/**
-	 * Maps a standard keyboard key name to an SWT key code. Key names are
-	 * converted to upper case before comparison. If the key name is a single
-	 * letter, for example "S", its character code is returned.
-	 * <p>
-	 * The following key names are known (case is ignored):
-	 * <ul>
-	 * <li><code>"BACKSPACE"</code></li>
-	 * <li><code>"TAB"</code></li>
-	 * <li><code>"RETURN"</code></li>
-	 * <li><code>"ENTER"</code></li>
-	 * <li><code>"ESC"</code></li>
-	 * <li><code>"ESCAPE"</code></li>
-	 * <li><code>"DELETE"</code></li>
-	 * <li><code>"SPACE"</code></li>
-	 * <li><code>"ARROW_UP"</code>, <code>"ARROW_DOWN"</code>,
-	 * <code>"ARROW_LEFT"</code>, and <code>"ARROW_RIGHT"</code></li>
-	 * <li><code>"PAGE_UP"</code> and <code>"PAGE_DOWN"</code></li>
-	 * <li><code>"HOME"</code></li>
-	 * <li><code>"END"</code></li>
-	 * <li><code>"INSERT"</code></li>
-	 * <li><code>"F1"</code>, <code>"F2"</code> through <code>"F12"</code></li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @param token
-	 *            the key name
-	 * @return the SWT key code, <code>-1</code> if no match was found
-	 * @see org.eclipse.swt.SWT
-	 */
-	public static int findKeyCode(String token) {
-		return LegacyActionTools.findKeyCode(token);
-	}
-
-	/**
-	 * Maps an SWT key code to a standard keyboard key name. The key code is
-	 * stripped of modifiers (SWT.CTRL, SWT.ALT, SWT.SHIFT, and SWT.COMMAND). If
-	 * the key code is not an SWT code (for example if it a key code for the key
-	 * 'S'), a string containing a character representation of the key code is
-	 * returned.
-	 * 
-	 * @param keyCode
-	 *            the key code to be translated
-	 * @return the string representation of the key code
-	 * @see org.eclipse.swt.SWT
-	 * @since 2.0
-	 */
-	public static String findKeyString(int keyCode) {
-		return LegacyActionTools.findKeyString(keyCode);
-	}
-
-	/**
-	 * Maps standard keyboard modifier key names to the corresponding SWT
-	 * modifier bit. The following modifier key names are recognized (case is
-	 * ignored): <code>"CTRL"</code>, <code>"SHIFT"</code>,
-	 * <code>"ALT"</code>, and <code>"COMMAND"</code>. The given modifier
-	 * key name is converted to upper case before comparison.
-	 * 
-	 * @param token
-	 *            the modifier key name
-	 * @return the SWT modifier bit, or <code>0</code> if no match was found
-	 * @see org.eclipse.swt.SWT
-	 */
-	public static int findModifier(String token) {
-		return LegacyActionTools.findModifier(token);
-	}
-
-	/**
-	 * Returns a string representation of an SWT modifier bit (SWT.CTRL,
-	 * SWT.ALT, SWT.SHIFT, and SWT.COMMAND). Returns <code>null</code> if the
-	 * key code is not an SWT modifier bit.
-	 * 
-	 * @param keyCode
-	 *            the SWT modifier bit to be translated
-	 * @return the string representation of the SWT modifier bit, or
-	 *         <code>null</code> if the key code was not an SWT modifier bit
-	 * @see org.eclipse.swt.SWT
-	 * @since 2.0
-	 */
-	public static String findModifierString(int keyCode) {
-		return LegacyActionTools.findModifierString(keyCode);
-	}
-
-	/**
-	 * Convenience method for removing any optional accelerator text from the
-	 * given string. The accelerator text appears at the end of the text, and is
-	 * separated from the main part by a single tab character <code>'\t'</code>.
-	 * 
-	 * @param text
-	 *            the text
-	 * @return the text sans accelerator
-	 */
-	public static String removeAcceleratorText(String text) {
-		return LegacyActionTools.removeAcceleratorText(text);
-	}
-
-	/**
-	 * Convenience method for removing any mnemonics from the given string. For
-	 * example, <code>removeMnemonics("&Open")</code> will return
-	 * <code>"Open"</code>.
-	 * 
-	 * @param text
-	 *            the text
-	 * @return the text sans mnemonics
-	 * 
-	 * @since 3.0
-	 */
-	public static String removeMnemonics(String text) {
-		return LegacyActionTools.removeMnemonics(text);
-	}
-
-	/**
-	 * This action's accelerator; <code>0</code> means none.
-	 */
-	private int accelerator = 0;
-
-	/**
-	 * This action's action definition id, or <code>null</code> if none.
-	 */
-	private String actionDefinitionId;
-
-	/**
-	 * This action's description, or <code>null</code> if none.
-	 */
-	private String description;
-
-	/**
-	 * This action's disabled image, or <code>null</code> if none.
-	 */
-	private ImageDescriptor disabledImage;
-
-	/**
-	 * Indicates this action is enabled.
-	 */
-	private boolean enabled = true;
-
-	/**
-	 * An action's help listener, or <code>null</code> if none.
-	 */
-	private HelpListener helpListener;
-
-	/**
-	 * This action's hover image, or <code>null</code> if none.
-	 */
-	private ImageDescriptor hoverImage;
-
-	/**
-	 * This action's id, or <code>null</code> if none.
-	 */
-	private String id;
-
-	/**
-	 * This action's image, or <code>null</code> if none.
-	 */
-	private ImageDescriptor image;
-
-	/**
-	 * This action's text, or <code>null</code> if none.
-	 */
-	private String text;
-
-	/**
-	 * This action's tool tip text, or <code>null</code> if none.
-	 */
-	private String toolTipText;
-
-	/**
-	 * Holds the action's menu creator (an IMenuCreator) or checked state (a
-	 * Boolean for toggle button, or an Integer for radio button), or
-	 * <code>null</code> if neither have been set.
-	 * <p>
-	 * The value of this field affects the value of <code>getStyle()</code>.
-	 * </p>
-	 */
-	private Object value = null;
-
-	/**
-	 * Creates a new action with no text and no image.
-	 * <p>
-	 * Configure the action later using the set methods.
-	 * </p>
-	 */
-	protected Action() {
-		// do nothing
-	}
-
-	/**
-	 * Creates a new action with the given text and no image. Calls the zero-arg
-	 * constructor, then <code>setText</code>.
-	 * 
-	 * @param text
-	 *            the string used as the text for the action, or
-	 *            <code>null</code> if there is no text
-	 * @see #setText
-	 */
-	protected Action(String text) {
-		this();
-		setText(text);
-	}
-
-	/**
-	 * Creates a new action with the given text and image. Calls the zero-arg
-	 * constructor, then <code>setText</code> and
-	 * <code>setImageDescriptor</code>.
-	 * 
-	 * @param text
-	 *            the action's text, or <code>null</code> if there is no text
-	 * @param image
-	 *            the action's image, or <code>null</code> if there is no
-	 *            image
-	 * @see #setText
-	 * @see #setImageDescriptor
-	 */
-	protected Action(String text, ImageDescriptor image) {
-		this(text);
-		setImageDescriptor(image);
-	}
-
-	/**
-	 * Creates a new action with the given text and style.
-	 * 
-	 * @param text
-	 *            the action's text, or <code>null</code> if there is no text
-	 * @param style
-	 *            one of <code>AS_PUSH_BUTTON</code>,
-	 *            <code>AS_CHECK_BOX</code>, <code>AS_DROP_DOWN_MENU</code>,
-	 *            <code>AS_RADIO_BUTTON</code>, and
-	 *            <code>AS_UNSPECIFIED</code>.
-	 */
-	protected Action(String text, int style) {
-		this(text);
-		switch (style) {
-		case AS_PUSH_BUTTON:
-			value = VAL_PUSH_BTN;
-			break;
-		case AS_CHECK_BOX:
-			value = VAL_TOGGLE_BTN_OFF;
-			break;
-		case AS_DROP_DOWN_MENU:
-			value = VAL_DROP_DOWN_MENU;
-			break;
-		case AS_RADIO_BUTTON:
-			value = VAL_RADIO_BTN_OFF;
-			break;
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public int getAccelerator() {
-		return accelerator;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 * 
-	 */
-	public String getActionDefinitionId() {
-		return actionDefinitionId;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public String getDescription() {
-		if (description != null) {
-			return description;
-		}
-		return getToolTipText();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public ImageDescriptor getDisabledImageDescriptor() {
-		return disabledImage;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public HelpListener getHelpListener() {
-		return helpListener;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public ImageDescriptor getHoverImageDescriptor() {
-		return hoverImage;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public ImageDescriptor getImageDescriptor() {
-		return image;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public IMenuCreator getMenuCreator() {
-		// The default drop down menu value is only used
-		// to mark this action requested style. So do not
-		// return it. For backward compatibility reasons.
-		if (value == VAL_DROP_DOWN_MENU) {
-			return null;
-		}
-		if (value instanceof IMenuCreator) {
-			return (IMenuCreator) value;
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public int getStyle() {
-		// Infer the style from the value field.
-		if (value == VAL_PUSH_BTN || value == null) {
-			return AS_PUSH_BUTTON;
-		}
-		if (value == VAL_TOGGLE_BTN_ON || value == VAL_TOGGLE_BTN_OFF) {
-			return AS_CHECK_BOX;
-		}
-		if (value == VAL_RADIO_BTN_ON || value == VAL_RADIO_BTN_OFF) {
-			return AS_RADIO_BUTTON;
-		}
-		if (value instanceof IMenuCreator) {
-			return AS_DROP_DOWN_MENU;
-		}
-
-		// We should never get to this line...
-		return AS_PUSH_BUTTON;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public String getText() {
-		return text;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public String getToolTipText() {
-		return toolTipText;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public boolean isChecked() {
-		return value == VAL_TOGGLE_BTN_ON || value == VAL_RADIO_BTN_ON;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public boolean isEnabled() {
-		return enabled;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public boolean isHandled() {
-		return true;
-	}
-
-	/**
-	 * Reports the outcome of the running of this action via the
-	 * {@link IAction#RESULT} property.
-	 * 
-	 * @param success
-	 *            <code>true</code> if the action succeeded and
-	 *            <code>false</code> if the action failed or was not completed
-	 * @see IAction#RESULT
-	 * @since 3.0
-	 */
-	public final void notifyResult(boolean success) {
-		// avoid Boolean.valueOf(boolean) to allow compilation against JCL
-		// Foundation (bug 80059)
-		firePropertyChange(RESULT, null, success ? Boolean.TRUE : Boolean.FALSE);
-	}
-
-	/**
-	 * The default implementation of this <code>IAction</code> method does
-	 * nothing. Subclasses should override this method if they do not need
-	 * information from the triggering event, or override
-	 * <code>runWithEvent(Event)</code> if they do.
-	 */
-	public void run() {
-		// do nothing
-	}
-
-	/**
-	 * The default implementation of this <code>IAction</code> method ignores
-	 * the event argument, and simply calls <code>run()</code>. Subclasses
-	 * should override this method if they need information from the triggering
-	 * event, or override <code>run()</code> if not.
-	 * 
-	 * @param event
-	 *            the SWT event which triggered this action being run
-	 * @since 2.0
-	 */
-	public void runWithEvent(Event event) {
-		run();
-	}
-
-	/*
-	 * @see IAction#setAccelerator(int)
-	 */
-	public void setAccelerator(int keycode) {
-		this.accelerator = keycode;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setActionDefinitionId(String id) {
-		actionDefinitionId = id;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setChecked(boolean checked) {
-		Object newValue = null;
-
-		// For backward compatibility, if the style is not
-		// set yet, then convert it to a toggle button.
-		if (value == null || value == VAL_TOGGLE_BTN_ON
-				|| value == VAL_TOGGLE_BTN_OFF) {
-			newValue = checked ? VAL_TOGGLE_BTN_ON : VAL_TOGGLE_BTN_OFF;
-		} else if (value == VAL_RADIO_BTN_ON || value == VAL_RADIO_BTN_OFF) {
-			newValue = checked ? VAL_RADIO_BTN_ON : VAL_RADIO_BTN_OFF;
-		} else {
-			// Some other style already, so do nothing.
-			return;
-		}
-
-		if (newValue != value) {
-			value = newValue;
-			if (checked) {
-				firePropertyChange(CHECKED, Boolean.FALSE, Boolean.TRUE);
-			} else {
-				firePropertyChange(CHECKED, Boolean.TRUE, Boolean.FALSE);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setDescription(String text) {
-
-		if ((description == null && text != null)
-				|| (description != null && text == null)
-				|| (description != null && text != null && !text
-						.equals(description))) {
-			String oldDescription = description;
-			description = text;
-			firePropertyChange(DESCRIPTION, oldDescription, description);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setDisabledImageDescriptor(ImageDescriptor newImage) {
-		if (disabledImage != newImage) {
-			ImageDescriptor oldImage = disabledImage;
-			disabledImage = newImage;
-			firePropertyChange(IMAGE, oldImage, newImage);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setEnabled(boolean enabled) {
-		if (enabled != this.enabled) {
-			Boolean oldVal = this.enabled ? Boolean.TRUE : Boolean.FALSE;
-			Boolean newVal = enabled ? Boolean.TRUE : Boolean.FALSE;
-			this.enabled = enabled;
-			firePropertyChange(ENABLED, oldVal, newVal);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setHelpListener(HelpListener listener) {
-		helpListener = listener;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setHoverImageDescriptor(ImageDescriptor newImage) {
-		if (hoverImage != newImage) {
-			ImageDescriptor oldImage = hoverImage;
-			hoverImage = newImage;
-			firePropertyChange(IMAGE, oldImage, newImage);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setId(String id) {
-		this.id = id;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void setImageDescriptor(ImageDescriptor newImage) {
-		if (image != newImage) {
-			ImageDescriptor oldImage = image;
-			image = newImage;
-			firePropertyChange(IMAGE, oldImage, newImage);
-		}
-	}
-
-	/**
-	 * Sets the menu creator for this action.
-	 * <p>
-	 * Note that if this method is called, it overrides the check status.
-	 * </p>
-	 * 
-	 * @param creator
-	 *            the menu creator, or <code>null</code> if none
-	 */
-	public void setMenuCreator(IMenuCreator creator) {
-		// For backward compatibility, if the style is not
-		// set yet, then convert it to a drop down menu.
-		if (value == null) {
-			value = creator;
-			return;
-		}
-
-		if (value instanceof IMenuCreator) {
-			value = creator == null ? VAL_DROP_DOWN_MENU : creator;
-		}
-	}
-
-	/**
-	 * Sets the text for this action.
-	 * <p>
-	 * Fires a property change event for the <code>TEXT</code> property if the
-	 * text actually changes as a consequence.
-	 * </p>
-	 * <p>
-	 * The accelerator is identified by the last index of a tab character. If
-	 * there are no tab characters, then it is identified by the last index of a
-	 * '@' character. If neither, then there is no accelerator text. Note that
-	 * if you want to insert a '@' character into the text (but no accelerator,
-	 * you can simply insert a '@' or a tab at the end of the text.
-	 * </p>
-	 * 
-	 * @param text
-	 *            the text, or <code>null</code> if none
-	 */
-	public void setText(String text) {
-		String oldText = this.text;
-		int oldAccel = this.accelerator;
-		this.text = text;
-		if (text != null) {
-			String acceleratorText = LegacyActionTools
-					.extractAcceleratorText(text);
-			if (acceleratorText != null) {
-				int newAccelerator = LegacyActionTools
-						.convertLocalizedAccelerator(acceleratorText);
-				// Be sure to not wipe out the accelerator if nothing found
-				if (newAccelerator > 0) {
-					setAccelerator(newAccelerator);
-				}
-			}
-		}
-		if (!(this.accelerator == oldAccel && (oldText == null ? this.text == null
-				: oldText.equals(this.text)))) {
-			firePropertyChange(TEXT, oldText, this.text);
-		}
-	}
-
-	/**
-	 * Sets the tool tip text for this action.
-	 * <p>
-	 * Fires a property change event for the <code>TOOL_TIP_TEXT</code>
-	 * property if the tool tip text actually changes as a consequence.
-	 * </p>
-	 * 
-	 * @param toolTipText
-	 *            the tool tip text, or <code>null</code> if none
-	 */
-	public void setToolTipText(String toolTipText) {
-		String oldToolTipText = this.toolTipText;
-		if (!(oldToolTipText == null ? toolTipText == null : oldToolTipText
-				.equals(toolTipText))) {
-			this.toolTipText = toolTipText;
-			firePropertyChange(TOOL_TIP_TEXT, oldToolTipText, toolTipText);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java
deleted file mode 100644
index 9ed8ac1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java
+++ /dev/null
@@ -1,1365 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.jface.action.ExternalActionManager.IBindingManagerCallback;
-import org.eclipse.jface.bindings.Trigger;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-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.Item;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A contribution item which delegates to an action.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ActionContributionItem extends ContributionItem {
- 
-	/**
-	 * Mode bit: Show text on tool items or buttons, even if an image is
-	 * present. If this mode bit is not set, text is only shown on tool items if
-	 * there is no image present.
-	 * 
-	 * @since 3.0
-	 */
-	public static int MODE_FORCE_TEXT = 1;
-
-	/** a string inserted in the middle of text that has been shortened */
-	private static final String ellipsis = "..."; //$NON-NLS-1$
-
-	/**
-	 * Stores the result of the action. False when the action returned failure.
-	 */
-	private Boolean result = null;
-
-	private static boolean USE_COLOR_ICONS = true;
-
-	/**
-	 * Returns whether color icons should be used in toolbars.
-	 * 
-	 * @return <code>true</code> if color icons should be used in toolbars,
-	 *         <code>false</code> otherwise
-	 */
-	public static boolean getUseColorIconsInToolbars() {
-		return USE_COLOR_ICONS;
-	}
-
-	/**
-	 * Sets whether color icons should be used in toolbars.
-	 * 
-	 * @param useColorIcons
-	 *            <code>true</code> if color icons should be used in toolbars,
-	 *            <code>false</code> otherwise
-	 */
-	public static void setUseColorIconsInToolbars(boolean useColorIcons) {
-		USE_COLOR_ICONS = useColorIcons;
-	}
-
-	/**
-	 * The presentation mode.
-	 */
-	private int mode = 0;
-
-	/**
-	 * The action.
-	 */
-	private IAction action;
-
-	/**
-	 * The listener for changes to the text of the action contributed by an
-	 * external source.
-	 */
-	private final IPropertyChangeListener actionTextListener = new IPropertyChangeListener() {
-
-		/**
-		 * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent)
-		 */
-		public void propertyChange(PropertyChangeEvent event) {
-			update(event.getProperty());
-		}
-	};
-
-	/**
-	 * Remembers all images in use by this contribution item
-	 */
-	private LocalResourceManager imageManager;
-
-	/**
-	 * Listener for SWT button widget events.
-	 */
-	private Listener buttonListener;
-
-	/**
-	 * Listener for SWT menu item widget events.
-	 */
-	private Listener menuItemListener;
-
-	/**
-	 * Listener for action property change notifications.
-	 */
-	private final IPropertyChangeListener propertyListener = new IPropertyChangeListener() {
-		public void propertyChange(PropertyChangeEvent event) {
-			actionPropertyChange(event);
-		}
-	};
-
-	/**
-	 * Listener for SWT tool item widget events.
-	 */
-	private Listener toolItemListener;
-
-	/**
-	 * The widget created for this item; <code>null</code> before creation and
-	 * after disposal.
-	 */
-	private Widget widget = null;
-
-	private Listener menuCreatorListener;
-
-	/**
-	 * Creates a new contribution item from the given action. The id of the
-	 * action is used as the id of the item.
-	 * 
-	 * @param action
-	 *            the action
-	 */
-	public ActionContributionItem(IAction action) {
-		super(action.getId());
-		this.action = action;
-	}
-
-	/**
-	 * Handles a property change event on the action (forwarded by nested
-	 * listener).
-	 */
-	private void actionPropertyChange(final PropertyChangeEvent e) {
-		// This code should be removed. Avoid using free asyncExec
-
-		if (isVisible() && widget != null) {
-			Display display = widget.getDisplay();
-			if (display.getThread() == Thread.currentThread()) {
-				update(e.getProperty());
-			} else {
-				display.asyncExec(new Runnable() {
-					public void run() {
-						update(e.getProperty());
-					}
-				});
-			}
-
-		}
-	}
-
-	/**
-	 * Compares this action contribution item with another object. Two action
-	 * contribution items are equal if they refer to the identical Action.
-	 */
-	public boolean equals(Object o) {
-		if (!(o instanceof ActionContributionItem)) {
-			return false;
-		}
-		return action.equals(((ActionContributionItem) o).action);
-	}
-
-	/**
-	 * The <code>ActionContributionItem</code> implementation of this
-	 * <code>IContributionItem</code> method creates an SWT
-	 * <code>Button</code> for the action using the action's style. If the
-	 * action's checked property has been set, the button is created and primed
-	 * to the value of the checked property.
-	 */
-	public void fill(Composite parent) {
-		if (widget == null && parent != null) {
-			int flags = SWT.PUSH;
-			if (action != null) {
-				if (action.getStyle() == IAction.AS_CHECK_BOX) {
-					flags = SWT.TOGGLE;
-				}
-				if (action.getStyle() == IAction.AS_RADIO_BUTTON) {
-					flags = SWT.RADIO;
-				}
-			}
-
-			Button b = new Button(parent, flags);
-			b.setData(this);
-			b.addListener(SWT.Dispose, getButtonListener());
-			// Don't hook a dispose listener on the parent
-			b.addListener(SWT.Selection, getButtonListener());
-			if (action.getHelpListener() != null) {
-				b.addHelpListener(action.getHelpListener());
-			}
-			widget = b;
-
-			update(null);
-
-			// Attach some extra listeners.
-			action.addPropertyChangeListener(propertyListener);
-			if (action != null) {
-				String commandId = action.getActionDefinitionId();
-				ExternalActionManager.ICallback callback = ExternalActionManager
-						.getInstance().getCallback();
-
-				if ((callback != null) && (commandId != null)) {
-					callback.addPropertyChangeListener(commandId,
-							actionTextListener);
-				}
-			}
-		}
-	}
-
-	/**
-	 * The <code>ActionContributionItem</code> implementation of this
-	 * <code>IContributionItem</code> method creates an SWT
-	 * <code>MenuItem</code> for the action using the action's style. If the
-	 * action's checked property has been set, a button is created and primed to
-	 * the value of the checked property. If the action's menu creator property
-	 * has been set, a cascading submenu is created.
-	 */
-	public void fill(Menu parent, int index) {
-		if (widget == null && parent != null) {
-			int flags = SWT.PUSH;
-			if (action != null) {
-				int style = action.getStyle();
-				if (style == IAction.AS_CHECK_BOX) {
-					flags = SWT.CHECK;
-				} else if (style == IAction.AS_RADIO_BUTTON) {
-					flags = SWT.RADIO;
-				} else if (style == IAction.AS_DROP_DOWN_MENU) {
-					flags = SWT.CASCADE;
-				}
-			}
-
-			MenuItem mi = null;
-			if (index >= 0) {
-				mi = new MenuItem(parent, flags, index);
-			} else {
-				mi = new MenuItem(parent, flags);
-			}
-			widget = mi;
-
-			mi.setData(this);
-			mi.addListener(SWT.Dispose, getMenuItemListener());
-			mi.addListener(SWT.Selection, getMenuItemListener());
-			if (action.getHelpListener() != null) {
-				mi.addHelpListener(action.getHelpListener());
-			}
-
-			if (flags == SWT.CASCADE) {
-				// just create a proxy for now, if the user shows it then 
-				// fill it in
-				Menu subMenu = new Menu(parent);
-				subMenu.addListener(SWT.Show, getMenuCreatorListener());
-				subMenu.addListener(SWT.Hide, getMenuCreatorListener());
-				mi.setMenu(subMenu);
-			}
-
-			update(null);
-
-			// Attach some extra listeners.
-			action.addPropertyChangeListener(propertyListener);
-			if (action != null) {
-				String commandId = action.getActionDefinitionId();
-				ExternalActionManager.ICallback callback = ExternalActionManager
-						.getInstance().getCallback();
-
-				if ((callback != null) && (commandId != null)) {
-					callback.addPropertyChangeListener(commandId,
-							actionTextListener);
-				}
-			}
-		}
-	}
-
-	/**
-	 * The <code>ActionContributionItem</code> implementation of this ,
-	 * <code>IContributionItem</code> method creates an SWT
-	 * <code>ToolItem</code> for the action using the action's style. If the
-	 * action's checked property has been set, a button is created and primed to
-	 * the value of the checked property. If the action's menu creator property
-	 * has been set, a drop-down tool item is created.
-	 */
-	public void fill(ToolBar parent, int index) {
-		if (widget == null && parent != null) {
-			int flags = SWT.PUSH;
-			if (action != null) {
-				int style = action.getStyle();
-				if (style == IAction.AS_CHECK_BOX) {
-					flags = SWT.CHECK;
-				} else if (style == IAction.AS_RADIO_BUTTON) {
-					flags = SWT.RADIO;
-				} else if (style == IAction.AS_DROP_DOWN_MENU) {
-					flags = SWT.DROP_DOWN;
-				}
-			}
-
-			ToolItem ti = null;
-			if (index >= 0) {
-				ti = new ToolItem(parent, flags, index);
-			} else {
-				ti = new ToolItem(parent, flags);
-			}
-			ti.setData(this);
-			ti.addListener(SWT.Selection, getToolItemListener());
-			ti.addListener(SWT.Dispose, getToolItemListener());
-
-			widget = ti;
-
-			update(null);
-
-			// Attach some extra listeners.
-			action.addPropertyChangeListener(propertyListener);
-			if (action != null) {
-				String commandId = action.getActionDefinitionId();
-				ExternalActionManager.ICallback callback = ExternalActionManager
-						.getInstance().getCallback();
-
-				if ((callback != null) && (commandId != null)) {
-					callback.addPropertyChangeListener(commandId,
-							actionTextListener);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns the action associated with this contribution item.
-	 * 
-	 * @return the action
-	 */
-	public IAction getAction() {
-		return action;
-	}
-
-	/**
-	 * Returns the listener for SWT button widget events.
-	 * 
-	 * @return a listener for button events
-	 */
-	private Listener getButtonListener() {
-		if (buttonListener == null) {
-			buttonListener = new Listener() {
-				public void handleEvent(Event event) {
-					switch (event.type) {
-					case SWT.Dispose:
-						handleWidgetDispose(event);
-						break;
-					case SWT.Selection:
-						Widget ew = event.widget;
-						if (ew != null) {
-							handleWidgetSelection(event, ((Button) ew)
-									.getSelection());
-						}
-						break;
-					}
-				}
-			};
-		}
-		return buttonListener;
-	}
-
-	/**
-	 * Returns the listener for SWT menu item widget events.
-	 * 
-	 * @return a listener for menu item events
-	 */
-	private Listener getMenuItemListener() {
-		if (menuItemListener == null) {
-			menuItemListener = new Listener() {
-				public void handleEvent(Event event) {
-					switch (event.type) {
-					case SWT.Dispose:
-						handleWidgetDispose(event);
-						break;
-					case SWT.Selection:
-						Widget ew = event.widget;
-						if (ew != null) {
-							handleWidgetSelection(event, ((MenuItem) ew)
-									.getSelection());
-						}
-						break;
-					}
-				}
-			};
-		}
-		return menuItemListener;
-	}
-
-	/**
-	 * Returns the presentation mode, which is the bitwise-or of the
-	 * <code>MODE_*</code> constants. The default mode setting is 0, meaning
-	 * that for menu items, both text and image are shown (if present), but for
-	 * tool items, the text is shown only if there is no image.
-	 * 
-	 * @return the presentation mode settings
-	 * 
-	 * @since 3.0
-	 */
-	public int getMode() {
-		return mode;
-	}
-
-	/**
-	 * Returns the listener for SWT tool item widget events.
-	 * 
-	 * @return a listener for tool item events
-	 */
-	private Listener getToolItemListener() {
-		if (toolItemListener == null) {
-			toolItemListener = new Listener() {
-				public void handleEvent(Event event) {
-					switch (event.type) {
-					case SWT.Dispose:
-						handleWidgetDispose(event);
-						break;
-					case SWT.Selection:
-						Widget ew = event.widget;
-						if (ew != null) {
-							handleWidgetSelection(event, ((ToolItem) ew)
-									.getSelection());
-						}
-						break;
-					}
-				}
-			};
-		}
-		return toolItemListener;
-	}
-
-	/**
-	 * Handles a widget dispose event for the widget corresponding to this item.
-	 */
-	private void handleWidgetDispose(Event e) {
-		// Check if our widget is the one being disposed.
-		if (e.widget == widget) {
-			// Dispose of the menu creator.
-			if (action.getStyle() == IAction.AS_DROP_DOWN_MENU
-					&& menuCreatorCalled) {
-				IMenuCreator mc = action.getMenuCreator();
-				if (mc != null) {
-					mc.dispose();
-				}
-			}
-
-			// Unhook all of the listeners.
-			action.removePropertyChangeListener(propertyListener);
-			if (action != null) {
-				String commandId = action.getActionDefinitionId();
-				ExternalActionManager.ICallback callback = ExternalActionManager
-						.getInstance().getCallback();
-
-				if ((callback != null) && (commandId != null)) {
-					callback.removePropertyChangeListener(commandId,
-							actionTextListener);
-				}
-			}
-
-			// Clear the widget field.
-			widget = null;
-
-			disposeOldImages();
-		}
-	}
-
-	/**
-	 * Handles a widget selection event.
-	 */
-	private void handleWidgetSelection(Event e, boolean selection) {
-
-		Widget item = e.widget;
-		if (item != null) {
-			int style = item.getStyle();
-
-			if ((style & (SWT.TOGGLE | SWT.CHECK)) != 0) {
-				if (action.getStyle() == IAction.AS_CHECK_BOX) {
-					action.setChecked(selection);
-				}
-			} else if ((style & SWT.RADIO) != 0) {
-				if (action.getStyle() == IAction.AS_RADIO_BUTTON) {
-					action.setChecked(selection);
-				}
-			} else if ((style & SWT.DROP_DOWN) != 0) {
-				if (e.detail == 4) { // on drop-down button
-					if (action.getStyle() == IAction.AS_DROP_DOWN_MENU) {
-						IMenuCreator mc = action.getMenuCreator();
-						menuCreatorCalled = true;
-						ToolItem ti = (ToolItem) item;
-						// we create the menu as a sub-menu of "dummy" so that
-						// we can use
-						// it in a cascading menu too.
-						// If created on a SWT control we would get an SWT
-						// error...
-						// Menu dummy= new Menu(ti.getParent());
-						// Menu m= mc.getMenu(dummy);
-						// dummy.dispose();
-						if (mc != null) {
-							Menu m = mc.getMenu(ti.getParent());
-							if (m != null) {
-								// position the menu below the drop down item
-								Point point = ti.getParent().toDisplay(
-										new Point(e.x, e.y));
-								m.setLocation(point.x, point.y); // waiting
-																	// for SWT
-								// 0.42
-								m.setVisible(true);
-								return; // we don't fire the action
-							}
-						}
-					}
-				}
-			}
-
-			ExternalActionManager.IExecuteCallback callback = null;
-			String actionDefinitionId = action.getActionDefinitionId();
-			if (actionDefinitionId != null) {
-				Object obj = ExternalActionManager.getInstance()
-						.getCallback();
-				if (obj instanceof ExternalActionManager.IExecuteCallback) {
-					callback = (ExternalActionManager.IExecuteCallback) obj;
-				}
-			}
-
-			// Ensure action is enabled first.
-			// See 1GAN3M6: ITPUI:WINNT - Any IAction in the workbench can be
-			// executed while disabled.
-			if (action.isEnabled()) {
-				boolean trace = Policy.TRACE_ACTIONS;
-
-				long ms = 0L;
-				if (trace) {
-					ms = System.currentTimeMillis();
-					System.out.println("Running action: " + action.getText()); //$NON-NLS-1$
-				}				
-				
-				IPropertyChangeListener resultListener = null;
-				if (callback != null) {
-					resultListener = new IPropertyChangeListener() {
-						public void propertyChange(PropertyChangeEvent event) {
-							// Check on result
-							if (event.getProperty().equals(IAction.RESULT)) {
-								if (event.getNewValue() instanceof Boolean) {
-									result = (Boolean) event.getNewValue();
-								}
-							}
-						}
-					};
-					action.addPropertyChangeListener(resultListener);
-					callback.preExecute(action, e);
-				}
-
-				action.runWithEvent(e);
-
-				if (callback != null) {
-					if (result == null || result.equals(Boolean.TRUE)) {
-						callback.postExecuteSuccess(action, Boolean.TRUE);
-					} else {
-						callback.postExecuteFailure(action,
-								new ExecutionException(action.getText()
-										+ " returned failure.")); //$NON-NLS-1$
-					}
-				}
-
-				if (resultListener!=null) {
-					result = null;
-					action.removePropertyChangeListener(resultListener);
-				}
-				if (trace) {
-					System.out.println((System.currentTimeMillis() - ms)
-							+ " ms to run action: " + action.getText()); //$NON-NLS-1$
-				}
-			} else {
-				if (callback != null) {
-					callback.notEnabled(action, new NotEnabledException(action
-							.getText()
-							+ " is not enabled.")); //$NON-NLS-1$
-				}
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	public int hashCode() {
-		return action.hashCode();
-	}
-
-	/**
-	 * Returns whether the given action has any images.
-	 * 
-	 * @param actionToCheck
-	 *            the action
-	 * @return <code>true</code> if the action has any images,
-	 *         <code>false</code> if not
-	 */
-	private boolean hasImages(IAction actionToCheck) {
-		return actionToCheck.getImageDescriptor() != null
-				|| actionToCheck.getHoverImageDescriptor() != null
-				|| actionToCheck.getDisabledImageDescriptor() != null;
-	}
-
-	/**
-	 * Returns whether the command corresponding to this action is active.
-	 */
-	private boolean isCommandActive() {
-		IAction actionToCheck = getAction();
-
-		if (actionToCheck != null) {
-			String commandId = actionToCheck.getActionDefinitionId();
-			ExternalActionManager.ICallback callback = ExternalActionManager
-					.getInstance().getCallback();
-
-			if (callback != null) {
-				return callback.isActive(commandId);
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * The action item implementation of this <code>IContributionItem</code>
-	 * method returns <code>true</code> for menu items and <code>false</code>
-	 * for everything else.
-	 */
-	public boolean isDynamic() {
-		if (widget instanceof MenuItem) {
-			// Optimization. Only recreate the item is the check or radio style
-			// has changed.
-			boolean itemIsCheck = (widget.getStyle() & SWT.CHECK) != 0;
-			boolean actionIsCheck = getAction() != null
-					&& getAction().getStyle() == IAction.AS_CHECK_BOX;
-			boolean itemIsRadio = (widget.getStyle() & SWT.RADIO) != 0;
-			boolean actionIsRadio = getAction() != null
-					&& getAction().getStyle() == IAction.AS_RADIO_BUTTON;
-			return (itemIsCheck != actionIsCheck)
-					|| (itemIsRadio != actionIsRadio);
-		}
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionItem.
-	 */
-	public boolean isEnabled() {
-		return action != null && action.isEnabled();
-	}
-
-	/**
-	 * Returns <code>true</code> if this item is allowed to enable,
-	 * <code>false</code> otherwise.
-	 * 
-	 * @return if this item is allowed to be enabled
-	 * @since 2.0
-	 */
-	protected boolean isEnabledAllowed() {
-		if (getParent() == null) {
-			return true;
-		}
-		Boolean value = getParent().getOverrides().getEnabled(this);
-		return (value == null) ? true : value.booleanValue();
-	}
-
-	/**
-	 * The <code>ActionContributionItem</code> implementation of this
-	 * <code>ContributionItem</code> method extends the super implementation
-	 * by also checking whether the command corresponding to this action is
-	 * active.
-	 */
-	public boolean isVisible() {
-		return super.isVisible() && isCommandActive();
-	}
-
-	/**
-	 * Sets the presentation mode, which is the bitwise-or of the
-	 * <code>MODE_*</code> constants.
-	 * 
-	 * @param mode
-	 *            the presentation mode settings
-	 * 
-	 * @since 3.0
-	 */
-	public void setMode(int mode) {
-		this.mode = mode;
-		update();
-	}
-
-	/**
-	 * The action item implementation of this <code>IContributionItem</code>
-	 * method calls <code>update(null)</code>.
-	 */
-	public final void update() {
-		update(null);
-	}
-
-	/**
-	 * Synchronizes the UI with the given property.
-	 * 
-	 * @param propertyName
-	 *            the name of the property, or <code>null</code> meaning all
-	 *            applicable properties
-	 */
-	public void update(String propertyName) {
-		if (widget != null) {
-			// determine what to do
-			boolean textChanged = propertyName == null
-					|| propertyName.equals(IAction.TEXT);
-			boolean imageChanged = propertyName == null
-					|| propertyName.equals(IAction.IMAGE);
-			boolean tooltipTextChanged = propertyName == null
-					|| propertyName.equals(IAction.TOOL_TIP_TEXT);
-			boolean enableStateChanged = propertyName == null
-					|| propertyName.equals(IAction.ENABLED)
-					|| propertyName
-							.equals(IContributionManagerOverrides.P_ENABLED);
-			boolean checkChanged = (action.getStyle() == IAction.AS_CHECK_BOX || action
-					.getStyle() == IAction.AS_RADIO_BUTTON)
-					&& (propertyName == null || propertyName
-							.equals(IAction.CHECKED));
-
-			if (widget instanceof ToolItem) {
-				ToolItem ti = (ToolItem) widget;
-				String text = action.getText();
-				// the set text is shown only if there is no image or if forced
-				// by MODE_FORCE_TEXT
-				boolean showText = text != null
-						&& ((getMode() & MODE_FORCE_TEXT) != 0 || !hasImages(action));
-
-				// only do the trimming if the text will be used
-				if (showText && text != null) {
-					text = Action.removeAcceleratorText(text);
-					text = Action.removeMnemonics(text);
-				}
-
-				if (textChanged) {
-					String textToSet = showText ? text : ""; //$NON-NLS-1$
-					boolean rightStyle = (ti.getParent().getStyle() & SWT.RIGHT) != 0;
-					if (rightStyle || !ti.getText().equals(textToSet)) {
-						// In addition to being required to update the text if
-						// it
-						// gets nulled out in the action, this is also a
-						// workaround
-						// for bug 50151: Using SWT.RIGHT on a ToolBar leaves
-						// blank space
-						ti.setText(textToSet);
-					}
-				}
-
-				if (imageChanged) {
-					// only substitute a missing image if it has no text
-					updateImages(!showText);
-				}
-
-				if (tooltipTextChanged || textChanged) {
-					String toolTip = action.getToolTipText();
-					if ((toolTip == null) || (toolTip.length() == 0)) {
-						toolTip = text;
-					}
-
-					ExternalActionManager.ICallback callback = ExternalActionManager
-							.getInstance().getCallback();
-					String commandId = action.getActionDefinitionId();
-					if ((callback != null) && (commandId != null)
-							&& (toolTip != null)) {
-						String acceleratorText = callback
-								.getAcceleratorText(commandId);
-						if (acceleratorText != null
-								&& acceleratorText.length() != 0) {
-							toolTip = JFaceResources.format(
-									"Toolbar_Tooltip_Accelerator", //$NON-NLS-1$
-									new Object[] { toolTip, acceleratorText });
-						}
-					}
-
-					// if the text is showing, then only set the tooltip if
-					// different
-					if (!showText || toolTip != null && !toolTip.equals(text)) {
-						ti.setToolTipText(toolTip);
-					} else {
-						ti.setToolTipText(null);
-					}
-				}
-
-				if (enableStateChanged) {
-					boolean shouldBeEnabled = action.isEnabled()
-							&& isEnabledAllowed();
-
-					if (ti.getEnabled() != shouldBeEnabled) {
-						ti.setEnabled(shouldBeEnabled);
-					}
-				}
-
-				if (checkChanged) {
-					boolean bv = action.isChecked();
-
-					if (ti.getSelection() != bv) {
-						ti.setSelection(bv);
-					}
-				}
-				return;
-			}
-
-			if (widget instanceof MenuItem) {
-				MenuItem mi = (MenuItem) widget;
-
-				if (textChanged) {
-					int accelerator = 0;
-					String acceleratorText = null;
-					IAction updatedAction = getAction();
-					String text = null;
-					accelerator = updatedAction.getAccelerator();
-					ExternalActionManager.ICallback callback = ExternalActionManager
-							.getInstance().getCallback();
-
-					// Block accelerators that are already in use.
-					if ((accelerator != 0) && (callback != null)
-							&& (callback.isAcceleratorInUse(accelerator))) {
-						accelerator = 0;
-					}
-
-					/*
-					 * Process accelerators on GTK in a special way to avoid Bug
-					 * 42009. We will override the native input method by
-					 * allowing these reserved accelerators to be placed on the
-					 * menu. We will only do this for "Ctrl+Shift+[0-9A-FU]".
-					 */
-					final String commandId = updatedAction
-							.getActionDefinitionId();
-					if (("gtk".equals(SWT.getPlatform())) && (callback instanceof IBindingManagerCallback) //$NON-NLS-1$
-							&& (commandId != null)) {
-						final IBindingManagerCallback bindingManagerCallback = (IBindingManagerCallback) callback;
-						final IKeyLookup lookup = KeyLookupFactory.getDefault();
-						final TriggerSequence[] triggerSequences = bindingManagerCallback
-								.getActiveBindingsFor(commandId);
-						for (int i = 0; i < triggerSequences.length; i++) {
-							final TriggerSequence triggerSequence = triggerSequences[i];
-							final Trigger[] triggers = triggerSequence
-									.getTriggers();
-							if (triggers.length == 1) {
-								final Trigger trigger = triggers[0];
-								if (trigger instanceof KeyStroke) {
-									final KeyStroke currentKeyStroke = (KeyStroke) trigger;
-									final int currentNaturalKey = currentKeyStroke
-											.getNaturalKey();
-									if ((currentKeyStroke.getModifierKeys() == (lookup
-											.getCtrl() | lookup.getShift()))
-											&& ((currentNaturalKey >= '0' && currentNaturalKey <= '9')
-													|| (currentNaturalKey >= 'A' && currentNaturalKey <= 'F') || (currentNaturalKey == 'U'))) {
-										accelerator = currentKeyStroke
-												.getModifierKeys()
-												| currentNaturalKey;
-										acceleratorText = triggerSequence
-												.format();
-										break;
-									}
-								}
-							}
-						}
-					}
-
-					if (accelerator == 0) {
-						if ((callback != null) && (commandId != null)) {
-							acceleratorText = callback
-									.getAcceleratorText(commandId);
-						}
-					}
-
-					IContributionManagerOverrides overrides = null;
-
-					if (getParent() != null) {
-						overrides = getParent().getOverrides();
-					}
-
-					if (overrides != null) {
-						text = getParent().getOverrides().getText(this);
-					}
-
-					mi.setAccelerator(accelerator);
-
-					if (text == null) {
-						text = updatedAction.getText();
-					}
-
-					if (text != null && acceleratorText == null) {
-						// use extracted accelerator text in case accelerator
-						// cannot be fully represented in one int (e.g.
-						// multi-stroke keys)
-						acceleratorText = LegacyActionTools
-								.extractAcceleratorText(text);
-						if (acceleratorText == null && accelerator != 0) {
-							acceleratorText = Action
-									.convertAccelerator(accelerator);
-						}
-					}
-
-					if (text == null) {
-						text = ""; //$NON-NLS-1$
-					} else {
-						text = Action.removeAcceleratorText(text);
-					}
-
-					if (acceleratorText == null) {
-						mi.setText(text);
-					} else {
-						mi.setText(text + '\t' + acceleratorText);
-					}
-				}
-
-				if (imageChanged) {
-					updateImages(false);
-				}
-
-				if (enableStateChanged) {
-					boolean shouldBeEnabled = action.isEnabled()
-							&& isEnabledAllowed();
-
-					if (mi.getEnabled() != shouldBeEnabled) {
-						mi.setEnabled(shouldBeEnabled);
-					}
-				}
-
-				if (checkChanged) {
-					boolean bv = action.isChecked();
-
-					if (mi.getSelection() != bv) {
-						mi.setSelection(bv);
-					}
-				}
-
-				return;
-			}
-
-			if (widget instanceof Button) {
-				Button button = (Button) widget;
-
-				if (imageChanged) {
-					updateImages(false);
-				}
-
-				if (textChanged) {
-					String text = action.getText();
-					boolean showText = text != null && ((getMode() & MODE_FORCE_TEXT) != 0 || !hasImages(action));
-					// only do the trimming if the text will be used
-					if (showText) {
-						text = Action.removeAcceleratorText(text);
-					}
-					String textToSet = showText ? text : ""; //$NON-NLS-1$
-					button.setText(textToSet);
-				}
-
-				if (tooltipTextChanged) {
-					button.setToolTipText(action.getToolTipText());
-				}
-
-				if (enableStateChanged) {
-					boolean shouldBeEnabled = action.isEnabled()
-							&& isEnabledAllowed();
-
-					if (button.getEnabled() != shouldBeEnabled) {
-						button.setEnabled(shouldBeEnabled);
-					}
-				}
-
-				if (checkChanged) {
-					boolean bv = action.isChecked();
-
-					if (button.getSelection() != bv) {
-						button.setSelection(bv);
-					}
-				}
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Updates the images for this action.
-	 * 
-	 * @param forceImage
-	 *            <code>true</code> if some form of image is compulsory, and
-	 *            <code>false</code> if it is acceptable for this item to have
-	 *            no image
-	 * @return <code>true</code> if there are images for this action,
-	 *         <code>false</code> if not
-	 */
-	private boolean updateImages(boolean forceImage) {
-
-		ResourceManager parentResourceManager = JFaceResources.getResources();
-
-		if (widget instanceof ToolItem) {
-			if (USE_COLOR_ICONS) {
-				ImageDescriptor image = action.getHoverImageDescriptor();
-				if (image == null) {
-					image = action.getImageDescriptor();
-				}
-				ImageDescriptor disabledImage = action
-						.getDisabledImageDescriptor();
-
-				// Make sure there is a valid image.
-				if (image == null && forceImage) {
-					image = ImageDescriptor.getMissingImageDescriptor();
-				}
-
-				LocalResourceManager localManager = new LocalResourceManager(
-						parentResourceManager);
-
-				// performance: more efficient in SWT to set disabled and hot
-				// image before regular image
-				((ToolItem) widget)
-						.setDisabledImage(disabledImage == null ? null
-								: localManager
-										.createImageWithDefault(disabledImage));
-				((ToolItem) widget).setImage(image == null ? null
-						: localManager.createImageWithDefault(image));
-
-				disposeOldImages();
-				imageManager = localManager;
-
-				return image != null;
-			}
-			ImageDescriptor image = action.getImageDescriptor();
-			ImageDescriptor hoverImage = action.getHoverImageDescriptor();
-			ImageDescriptor disabledImage = action.getDisabledImageDescriptor();
-
-			// If there is no regular image, but there is a hover image,
-			// convert the hover image to gray and use it as the regular image.
-			if (image == null && hoverImage != null) {
-				image = ImageDescriptor.createWithFlags(action
-						.getHoverImageDescriptor(), SWT.IMAGE_GRAY);
-			} else {
-				// If there is no hover image, use the regular image as the
-				// hover image,
-				// and convert the regular image to gray
-				if (hoverImage == null && image != null) {
-					hoverImage = image;
-					image = ImageDescriptor.createWithFlags(action
-							.getImageDescriptor(), SWT.IMAGE_GRAY);
-				}
-			}
-
-			// Make sure there is a valid image.
-			if (hoverImage == null && image == null && forceImage) {
-				image = ImageDescriptor.getMissingImageDescriptor();
-			}
-
-			// Create a local resource manager to remember the images we've
-			// allocated for this tool item
-			LocalResourceManager localManager = new LocalResourceManager(
-					parentResourceManager);
-
-			// performance: more efficient in SWT to set disabled and hot image
-			// before regular image
-			((ToolItem) widget).setDisabledImage(disabledImage == null ? null
-					: localManager.createImageWithDefault(disabledImage));
-			((ToolItem) widget).setHotImage(hoverImage == null ? null
-					: localManager.createImageWithDefault(hoverImage));
-			((ToolItem) widget).setImage(image == null ? null : localManager
-					.createImageWithDefault(image));
-
-			// Now that we're no longer referencing the old images, clear them
-			// out.
-			disposeOldImages();
-			imageManager = localManager;
-
-			return image != null;
-		} else if (widget instanceof Item || widget instanceof Button) {
-
-			// Use hover image if there is one, otherwise use regular image.
-			ImageDescriptor image = action.getHoverImageDescriptor();
-			if (image == null) {
-				image = action.getImageDescriptor();
-			}
-			// Make sure there is a valid image.
-			if (image == null && forceImage) {
-				image = ImageDescriptor.getMissingImageDescriptor();
-			}
-
-			// Create a local resource manager to remember the images we've
-			// allocated for this widget
-			LocalResourceManager localManager = new LocalResourceManager(
-					parentResourceManager);
-
-			if (widget instanceof Item) {
-				((Item) widget).setImage(image == null ? null : localManager
-						.createImageWithDefault(image));
-			} else if (widget instanceof Button) {
-				((Button) widget).setImage(image == null ? null : localManager
-						.createImageWithDefault(image));
-			}
-
-			// Now that we're no longer referencing the old images, clear them
-			// out.
-			disposeOldImages();
-			imageManager = localManager;
-
-			return image != null;
-		}
-		return false;
-	}
-
-	/**
-	 * Dispose any images allocated for this contribution item
-	 */
-	private void disposeOldImages() {
-		if (imageManager != null) {
-			imageManager.dispose();
-			imageManager = null;
-		}
-	}
-
-	/**
-	 * Shorten the given text <code>t</code> so that its length doesn't exceed
-	 * the width of the given ToolItem.The default implementation replaces
-	 * characters in the center of the original string with an ellipsis ("...").
-	 * Override if you need a different strategy.
-	 * 
-	 * @param textValue
-	 *            the text to shorten
-	 * @param item
-	 *            the tool item the text belongs to
-	 * @return the shortened string
-	 * 
-	 */
-	protected String shortenText(String textValue, ToolItem item) {
-		if (textValue == null) {
-			return null;
-		}
-
-		GC gc = new GC(item.getParent());
-
-		int maxWidth = item.getImage().getBounds().width * 4;
-
-		if (gc.textExtent(textValue).x < maxWidth) {
-			gc.dispose();
-			return textValue;
-		}
-
-		for (int i = textValue.length(); i > 0; i--) {
-			String test = textValue.substring(0, i);
-			test = test + ellipsis;
-			if (gc.textExtent(test).x < maxWidth) {
-				gc.dispose();
-				return test;
-			}
-
-		}
-		gc.dispose();
-		// If for some reason we fall through abort
-		return textValue;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.ContributionItem#dispose()
-	 */
-	public void dispose() {
-		if (widget != null) {
-			widget.dispose();
-			widget = null;
-		}
-		holdMenu = null;
-	}
-	
-	/**
-	 * Handle show and hide on the proxy menu for IAction.AS_DROP_DOWN_MENU
-	 * actions.
-	 * 
-	 * @return the appropriate listener
-	 * @since 3.4
-	 */
-	private Listener getMenuCreatorListener() {
-		if (menuCreatorListener == null) {
-			menuCreatorListener = new Listener() {
-				public void handleEvent(Event event) {
-					switch (event.type) {
-					case SWT.Show:
-						handleShowProxy((Menu) event.widget);
-						break;
-					case SWT.Hide:
-						handleHideProxy((Menu) event.widget);
-						break;
-					}
-				}
-			};
-		}
-		return menuCreatorListener;
-	}
-	
-	/**
-	 * This is the easiest way to hold the menu until we can swap it in to the
-	 * proxy.
-	 */
-	private Menu holdMenu = null;
-
-	private boolean menuCreatorCalled = false;
-	
-	/**
-	 * The proxy menu is being shown, we better get the real menu.
-	 * 
-	 * @param proxy
-	 *            the proxy menu
-	 * @since 3.4
-	 */
-	private void handleShowProxy(Menu proxy) {
-		proxy.removeListener(SWT.Show, getMenuCreatorListener());
-		IMenuCreator mc = action.getMenuCreator();
-		menuCreatorCalled  = true;
-		if (mc == null) {
-			return;
-		}
-		holdMenu = mc.getMenu(proxy.getParentMenu());
-		if (holdMenu == null) {
-			return;
-		}
-		copyMenu(holdMenu, proxy);
-	}
-
-	/**
-	 * Create MenuItems in the proxy menu that can execute the real menu items
-	 * if selected. Create proxy menus for any real item submenus.
-	 * 
-	 * @param realMenu
-	 *            the real menu to copy from
-	 * @param proxy
-	 *            the proxy menu to populate
-	 * @since 3.4
-	 */
-	private void copyMenu(Menu realMenu, Menu proxy) {
-		if (realMenu.isDisposed() || proxy.isDisposed()) {
-			return;
-		}
-		
-		// we notify the real menu so it can populate itself if it was
-		// listening for SWT.Show
-		realMenu.notifyListeners(SWT.Show, null);
-
-		final Listener passThrough = new Listener() {
-			public void handleEvent(Event event) {
-				if (!event.widget.isDisposed()) {
-					Widget realItem = (Widget) event.widget.getData();
-					if (!realItem.isDisposed()) {
-						int style = event.widget.getStyle();
-						if (event.type == SWT.Selection
-								&& ((style & (SWT.TOGGLE | SWT.CHECK | SWT.RADIO)) != 0)
-								&& realItem instanceof MenuItem) {
-							((MenuItem) realItem)
-									.setSelection(((MenuItem) event.widget)
-											.getSelection());
-						}
-						event.widget = realItem;
-						realItem.notifyListeners(event.type, event);
-					}
-				}
-			}
-		};
-
-		MenuItem[] items = realMenu.getItems();
-		for (int i = 0; i < items.length; i++) {
-			final MenuItem realItem = items[i];
-			final MenuItem proxyItem = new MenuItem(proxy, realItem.getStyle());
-			proxyItem.setData(realItem);
-			proxyItem.setAccelerator(realItem.getAccelerator());
-			proxyItem.setEnabled(realItem.getEnabled());
-			proxyItem.setImage(realItem.getImage());
-			proxyItem.setSelection(realItem.getSelection());
-			proxyItem.setText(realItem.getText());
-
-			// pass through any events
-			proxyItem.addListener(SWT.Selection, passThrough);
-			proxyItem.addListener(SWT.Arm, passThrough);
-			proxyItem.addListener(SWT.Help, passThrough);
-
-			final Menu itemMenu = realItem.getMenu();
-			if (itemMenu != null) {
-				// create a proxy for any sub menu items
-				final Menu subMenu = new Menu(proxy);
-				subMenu.setData(itemMenu);
-				proxyItem.setMenu(subMenu);
-				subMenu.addListener(SWT.Show, new Listener() {
-					public void handleEvent(Event event) {
-						event.widget.removeListener(SWT.Show, this);
-						if (event.type == SWT.Show) {
-							copyMenu(itemMenu, subMenu);
-						}
-					}
-				});
-				subMenu.addListener(SWT.Help, passThrough);
-				subMenu.addListener(SWT.Hide, passThrough);
-			}
-		}
-	}
-	
-	/**
-	 * The proxy menu is being hidden, so we need to make it go away.
-	 * 
-	 * @param proxy
-	 *            the proxy menu
-	 * @since 3.4
-	 */
-	private void handleHideProxy(final Menu proxy) {
-		proxy.removeListener(SWT.Hide, getMenuCreatorListener());
-		proxy.getDisplay().asyncExec(new Runnable() {
-			public void run() {
-				if (!proxy.isDisposed()) {
-					MenuItem parentItem = proxy.getParentItem();
-					proxy.dispose();
-					parentItem.setMenu(holdMenu);
-				}
-				if (holdMenu != null && !holdMenu.isDisposed()) {
-					holdMenu.notifyListeners(SWT.Hide, null);
-				}
-				holdMenu = null;
-			}
-		});
-	}
-	
-	/**
-	 * Return the widget associated with this contribution item. It should not
-	 * be cached, as it can be disposed and re-created by its containing
-	 * ContributionManager, which controls all of the widgets lifecycle methods.
-	 * <p>
-	 * This can be used to set layout data on the widget if appropriate. The
-	 * actual type of the widget can be any valid control for this
-	 * ContributionItem's current ContributionManager.
-	 * </p>
-	 * 
-	 * @return the widget, or <code>null</code> depending on the lifecycle.
-	 * @since 3.4
-	 */
-	public Widget getWidget() {
-		return widget;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionItem.java
deleted file mode 100644
index 7a46946..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionItem.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * An abstract base implementation for contribution items.
- */
-public abstract class ContributionItem implements IContributionItem {
-
-    /**
-     * The identifier for this contribution item, of <code>null</code> if none.
-     */
-    private String id = null;
-
-    /**
-     * Indicates this item is visible in its manager; <code>true</code> 
-     * by default.
-     */
-    private boolean visible = true;
-
-    /**
-     * The parent contribution manager for this item
-     */
-    private IContributionManager parent;
-
-    /**
-     * Creates a contribution item with a <code>null</code> id.
-     * Calls <code>this(String)</code> with <code>null</code>.
-     */
-    protected ContributionItem() {
-        this(null);
-    }
-
-    /**
-     * Creates a contribution item with the given (optional) id.
-     * The given id is used to find items in a contribution manager,
-     * and for positioning items relative to other items.
-     *
-     * @param id the contribution item identifier, or <code>null</code>
-     */
-    protected ContributionItem(String id) {
-        this.id = id;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void dispose() {
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void fill(Composite parent) {
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void fill(Menu menu, int index) {
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void fill(ToolBar parent, int index) {
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     * 
-     * @since 3.0
-     */
-    public void fill(CoolBar parent, int index) {
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     * 
-     * @since 3.0
-     */
-    public void saveWidgetState() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the parent contribution manager, or <code>null</code> if this 
-     * contribution item is not currently added to a contribution manager.
-     * 
-     * @return the parent contribution manager, or <code>null</code>
-     * @since 2.0
-     */
-    public IContributionManager getParent() {
-        return parent;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method returns <code>false</code>. Subclasses may override.
-     */
-    public boolean isDirty() {
-        // @issue should this be false instead of calling isDynamic()?
-        return isDynamic();
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method returns <code>true</code>. Subclasses may override.
-     */
-    public boolean isEnabled() {
-        return true;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method returns <code>false</code>. Subclasses may override.
-     */
-    public boolean isDynamic() {
-        return false;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method returns <code>false</code>. Subclasses may override.
-     */
-    public boolean isGroupMarker() {
-        return false;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method returns <code>false</code>. Subclasses may override.
-     */
-    public boolean isSeparator() {
-        return false;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method returns the value recorded in an internal state variable,
-     * which is <code>true</code> by default. <code>setVisible</code>
-     * should be used to change this setting.
-     */
-    public boolean isVisible() {
-        return visible;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method stores the value in an internal state variable,
-     * which is <code>true</code> by default.
-     */
-    public void setVisible(boolean visible) {
-        this.visible = visible;
-    }
-
-    /**
-     * Returns a string representation of this contribution item 
-     * suitable only for debugging.
-     */
-    public String toString() {
-        return getClass().getName() + "(id=" + getId() + ")";//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void update() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void setParent(IContributionManager parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * The <code>ContributionItem</code> implementation of this 
-     * method declared on <code>IContributionItem</code> does nothing.
-     * Subclasses should override to update their state.
-     */
-    public void update(String id) {
-    }
-    
-    /**
-	 * The ID for this contribution item. It should be set once either in the
-	 * constructor or using this method.
-	 * 
-	 * @param itemId
-	 * @since 3.4
-	 * @see #getId()
-	 */
-    public void setId(String itemId) {
-    	id = itemId;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionManager.java
deleted file mode 100644
index d1c484d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionManager.java
+++ /dev/null
@@ -1,573 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Policy;
-
-/**
- * Abstract base class for all contribution managers, and standard
- * implementation of <code>IContributionManager</code>. This class provides
- * functionality common across the specific managers defined by this framework.
- * <p>
- * This class maintains a list of contribution items and a dirty flag, both as
- * internal state. In addition to providing implementations of most
- * <code>IContributionManager</code> methods, this class automatically
- * coalesces adjacent separators, hides beginning and ending separators, and
- * deals with dynamically changing sets of contributions. When the set of
- * contributions does change dynamically, the changes are propagated to the
- * control via the <code>update</code> method, which subclasses must
- * implement.
- * </p>
- * <p>
- * Note: A <code>ContributionItem</code> cannot be shared between different
- * <code>ContributionManager</code>s.
- * </p>
- */
-public abstract class ContributionManager implements IContributionManager {
-
-	// Internal debug flag.
-	// protected static final boolean DEBUG = false;
-
-	/**
-	 * The list of contribution items.
-	 */
-	private List contributions = new ArrayList();
-
-	/**
-	 * Indicates whether the widgets are in sync with the contributions.
-	 */
-	private boolean isDirty = true;
-
-	/**
-	 * Number of dynamic contribution items.
-	 */
-	private int dynamicItems = 0;
-
-	/**
-	 * The overrides for items of this manager
-	 */
-	private IContributionManagerOverrides overrides;
-
-	/**
-	 * Creates a new contribution manager.
-	 */
-	protected ContributionManager() {
-		// Do nothing.
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void add(IAction action) {
-		Assert.isNotNull(action, "Action must not be null"); //$NON-NLS-1$
-		add(new ActionContributionItem(action));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void add(IContributionItem item) {
-		Assert.isNotNull(item, "Item must not be null"); //$NON-NLS-1$
-		if (allowItem(item)) {
-			contributions.add(item);
-			itemAdded(item);
-		}
-	}
-
-	/**
-	 * Adds a contribution item to the start or end of the group with the given
-	 * name.
-	 * 
-	 * @param groupName
-	 *            the name of the group
-	 * @param item
-	 *            the contribution item
-	 * @param append
-	 *            <code>true</code> to add to the end of the group, and
-	 *            <code>false</code> to add the beginning of the group
-	 * @exception IllegalArgumentException
-	 *                if there is no group with the given name
-	 */
-	private void addToGroup(String groupName, IContributionItem item,
-			boolean append) {
-		int i;
-		Iterator items = contributions.iterator();
-		for (i = 0; items.hasNext(); i++) {
-			IContributionItem o = (IContributionItem) items.next();
-			if (o.isGroupMarker()) {
-				String id = o.getId();
-				if (id != null && id.equalsIgnoreCase(groupName)) {
-					i++;
-					if (append) {
-						for (; items.hasNext(); i++) {
-							IContributionItem ci = (IContributionItem) items
-									.next();
-							if (ci.isGroupMarker()) {
-								break;
-							}
-						}
-					}
-					if (allowItem(item)) {
-						contributions.add(i, item);
-						itemAdded(item);
-					}
-					return;
-				}
-			}
-		}
-		throw new IllegalArgumentException("Group not found: " + groupName);//$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void appendToGroup(String groupName, IAction action) {
-		addToGroup(groupName, new ActionContributionItem(action), true);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void appendToGroup(String groupName, IContributionItem item) {
-		addToGroup(groupName, item, true);
-	}
-
-	/**
-	 * This method allows subclasses of <code>ContributionManager</code> to
-	 * prevent certain items in the contributions list.
-	 * <code>ContributionManager</code> will either block or allow an addition
-	 * based on the result of this method call. This can be used to prevent
-	 * duplication, for example.
-	 * 
-	 * @param itemToAdd
-	 *            The contribution item to be added; may be <code>null</code>.
-	 * @return <code>true</code> if the addition should be allowed;
-	 *         <code>false</code> otherwise. The default implementation allows
-	 *         all items.
-	 * @since 3.0
-	 */
-	protected boolean allowItem(IContributionItem itemToAdd) {
-		return true;
-	}
-
-	/**
-	 * Internal debug method for printing statistics about this manager to
-	 * <code>System.out</code>.
-	 */
-	protected void dumpStatistics() {
-		int size = 0;
-		if (contributions != null) {
-			size = contributions.size();
-		}
-
-		System.out.println(this.toString());
-		System.out.println("   Number of elements: " + size);//$NON-NLS-1$
-		int sum = 0;
-		for (int i = 0; i < size; i++) {
-			if (((IContributionItem) contributions.get(i)).isVisible()) {
-				sum++;
-			}
-		}
-		System.out.println("   Number of visible elements: " + sum);//$NON-NLS-1$
-		System.out.println("   Is dirty: " + isDirty()); //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public IContributionItem find(String id) {
-		Iterator e = contributions.iterator();
-		while (e.hasNext()) {
-			IContributionItem item = (IContributionItem) e.next();
-			String itemId = item.getId();
-			if (itemId != null && itemId.equalsIgnoreCase(id)) {
-				return item;
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public IContributionItem[] getItems() {
-		IContributionItem[] items = new IContributionItem[contributions.size()];
-		contributions.toArray(items);
-		return items;
-	}
-	
-	/**
-	 * Return the number of contributions in this manager.
-	 * 
-	 * @return the number of contributions in this manager
-	 * @since 3.3
-	 */
-	public int getSize() {
-		return contributions.size();
-	}
-
-	/**
-	 * The <code>ContributionManager</code> implementation of this method
-	 * declared on <code>IContributionManager</code> returns the current
-	 * overrides. If there is no overrides it lazily creates one which overrides
-	 * no item state.
-	 * 
-	 * @since 2.0
-	 */
-	public IContributionManagerOverrides getOverrides() {
-		if (overrides == null) {
-			overrides = new IContributionManagerOverrides() {
-				public Boolean getEnabled(IContributionItem item) {
-					return null;
-				}
-
-				public Integer getAccelerator(IContributionItem item) {
-					return null;
-				}
-
-				public String getAcceleratorText(IContributionItem item) {
-					return null;
-				}
-
-				public String getText(IContributionItem item) {
-					return null;
-				}
-			};
-		}
-		return overrides;
-	}
-
-	/**
-	 * Returns whether this contribution manager contains dynamic items. A
-	 * dynamic contribution item contributes items conditionally, dependent on
-	 * some internal state.
-	 * 
-	 * @return <code>true</code> if this manager contains dynamic items, and
-	 *         <code>false</code> otherwise
-	 */
-	protected boolean hasDynamicItems() {
-		return (dynamicItems > 0);
-	}
-
-	/**
-	 * Returns the index of the item with the given id.
-	 * 
-	 * @param id
-	 *            The id of the item whose index is requested.
-	 * 
-	 * @return <code>int</code> the index or -1 if the item is not found
-	 */
-	public int indexOf(String id) {
-		for (int i = 0; i < contributions.size(); i++) {
-			IContributionItem item = (IContributionItem) contributions.get(i);
-			String itemId = item.getId();
-			if (itemId != null && itemId.equalsIgnoreCase(id)) {
-				return i;
-			}
-		}
-		return -1;
-	}
-
-	/**
-	 * Returns the index of the object in the internal structure. This is
-	 * different from <code>indexOf(String id)</code> since some contribution
-	 * items may not have an id.
-	 * 
-	 * @param item
-	 *            The contribution item
-	 * @return the index, or -1 if the item is not found
-	 * @since 3.0
-	 */
-	protected int indexOf(IContributionItem item) {
-		return contributions.indexOf(item);
-	}
-
-	/**
-	 * Insert the item at the given index.
-	 * 
-	 * @param index
-	 *            The index to be used for insertion
-	 * @param item
-	 *            The item to be inserted
-	 */
-	public void insert(int index, IContributionItem item) {
-		if (index > contributions.size()) {
-			throw new IndexOutOfBoundsException(
-					"inserting " + item.getId() + " at " + index); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		if (allowItem(item)) {
-			contributions.add(index, item);
-			itemAdded(item);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void insertAfter(String ID, IAction action) {
-		insertAfter(ID, new ActionContributionItem(action));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void insertAfter(String ID, IContributionItem item) {
-		IContributionItem ci = find(ID);
-		if (ci == null) {
-			throw new IllegalArgumentException("can't find ID" + ID);//$NON-NLS-1$
-		}
-		int ix = contributions.indexOf(ci);
-		if (ix >= 0) {
-			// System.out.println("insert after: " + ix);
-			if (allowItem(item)) {
-				contributions.add(ix + 1, item);
-				itemAdded(item);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void insertBefore(String ID, IAction action) {
-		insertBefore(ID, new ActionContributionItem(action));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void insertBefore(String ID, IContributionItem item) {
-		IContributionItem ci = find(ID);
-		if (ci == null) {
-			throw new IllegalArgumentException("can't find ID " + ID);//$NON-NLS-1$
-		}
-		int ix = contributions.indexOf(ci);
-		if (ix >= 0) {
-			// System.out.println("insert before: " + ix);
-			if (allowItem(item)) {
-				contributions.add(ix, item);
-				itemAdded(item);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public boolean isDirty() {
-		if (isDirty) {
-			return true;
-		}
-		if (hasDynamicItems()) {
-			for (Iterator iter = contributions.iterator(); iter.hasNext();) {
-				IContributionItem item = (IContributionItem) iter.next();
-				if (item.isDirty()) {
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public boolean isEmpty() {
-		return contributions.isEmpty();
-	}
-
-	/**
-	 * The given item was added to the list of contributions. Marks the manager
-	 * as dirty and updates the number of dynamic items, and the memento.
-	 * 
-	 * @param item
-	 *            the item to be added
-	 * 
-	 */
-	protected void itemAdded(IContributionItem item) {
-		item.setParent(this);
-		markDirty();
-		if (item.isDynamic()) {
-			dynamicItems++;
-		}
-	}
-
-	/**
-	 * The given item was removed from the list of contributions. Marks the
-	 * manager as dirty and updates the number of dynamic items.
-	 * 
-	 * @param item
-	 *            remove given parent from list of contributions
-	 */
-	protected void itemRemoved(IContributionItem item) {
-		item.setParent(null);
-		markDirty();
-		if (item.isDynamic()) {
-			dynamicItems--;
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void markDirty() {
-		setDirty(true);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void prependToGroup(String groupName, IAction action) {
-		addToGroup(groupName, new ActionContributionItem(action), false);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void prependToGroup(String groupName, IContributionItem item) {
-		addToGroup(groupName, item, false);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public IContributionItem remove(String ID) {
-		IContributionItem ci = find(ID);
-		if (ci == null) {
-			return null;
-		}
-		return remove(ci);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public IContributionItem remove(IContributionItem item) {
-		if (contributions.remove(item)) {
-			itemRemoved(item);
-			return item;
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void removeAll() {
-		IContributionItem[] items = getItems();
-		contributions.clear();
-		for (int i = 0; i < items.length; i++) {
-			IContributionItem item = items[i];
-			itemRemoved(item);
-		}
-		dynamicItems = 0;
-		markDirty();
-	}
-
-	/**
-	 * Replaces the item of the given identifier with another contribution item.
-	 * This can be used, for example, to replace large contribution items with
-	 * placeholders to avoid memory leaks. If the identifier cannot be found in
-	 * the current list of items, then this does nothing. If multiple
-	 * occurrences are found, then the replacement items is put in the first
-	 * position and the other positions are removed.
-	 * 
-	 * @param identifier
-	 *            The identifier to look for in the list of contributions;
-	 *            should not be <code>null</code>.
-	 * @param replacementItem
-	 *            The contribution item to replace the old item; must not be
-	 *            <code>null</code>. Use
-	 *            {@link org.eclipse.jface.action.ContributionManager#remove(java.lang.String) remove}
-	 *            if that is what you want to do.
-	 * @return <code>true</code> if the given identifier can be; <code>
-	 * @since 3.0
-	 */
-	public boolean replaceItem(final String identifier,
-			final IContributionItem replacementItem) {
-		if (identifier == null) {
-			return false;
-		}
-
-		final int index = indexOf(identifier);
-		if (index < 0) {
-			return false; // couldn't find the item.
-		}
-
-		// Remove the old item.
-		final IContributionItem oldItem = (IContributionItem) contributions
-				.get(index);
-		itemRemoved(oldItem);
-
-		// Add the new item.
-		contributions.set(index, replacementItem);
-		itemAdded(replacementItem); // throws NPE if (replacementItem == null)
-
-		// Go through and remove duplicates.
-		for (int i = contributions.size() - 1; i > index; i--) {
-			IContributionItem item = (IContributionItem) contributions.get(i);
-			if ((item != null) && (identifier.equals(item.getId()))) {
-				if (Policy.TRACE_TOOLBAR) {
-					System.out
-							.println("Removing duplicate on replace: " + identifier); //$NON-NLS-1$
-				}
-				contributions.remove(i);
-				itemRemoved(item);
-			}
-		}
-
-		return true; // success
-	}
-
-	/**
-	 * Sets whether this manager is dirty. When dirty, the list of contributions
-	 * is not accurately reflected in the corresponding widgets.
-	 * 
-	 * @param dirty
-	 *            <code>true</code> if this manager is dirty, and
-	 *            <code>false</code> if it is up-to-date
-	 */
-	protected void setDirty(boolean dirty) {
-		isDirty = dirty;
-	}
-
-	/**
-	 * Sets the overrides for this contribution manager
-	 * 
-	 * @param newOverrides
-	 *            the overrides for the items of this manager
-	 * @since 2.0
-	 */
-	public void setOverrides(IContributionManagerOverrides newOverrides) {
-		overrides = newOverrides;
-	}
-
-	/**
-	 * An internal method for setting the order of the contribution items.
-	 * 
-	 * @param items
-	 *            the contribution items in the specified order
-	 * @since 3.0
-	 */
-	protected void internalSetItems(IContributionItem[] items) {
-		contributions.clear();
-		for (int i = 0; i < items.length; i++) {
-			if (allowItem(items[i])) {
-				contributions.add(items[i]);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ControlContribution.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ControlContribution.java
deleted file mode 100644
index 0af50ce..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ControlContribution.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * An abstract contribution item implementation for adding an arbitrary 
- * SWT control to a tool bar. 
- * Note, however, that these items cannot be contributed to menu bars.
- * <p>
- * The <code>createControl</code> framework method must be implemented
- * by concrete subclasses.
- * </p>
- */
-public abstract class ControlContribution extends ContributionItem {
-    /**
-     * Creates a control contribution item with the given id.
-     *
-     * @param id the contribution item id
-     */
-    protected ControlContribution(String id) {
-        super(id);
-    }
-
-    /**
-     * Computes the width of the given control which is being added
-     * to a tool bar.  This is needed to determine the width of the tool bar item
-     * containing the given control.
-     * <p>
-     * The default implementation of this framework method returns 
-     * <code>control.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x</code>.
-     * Subclasses may override if required.
-     * </p>
-     *
-     * @param control the control being added
-     * @return the width of the control
-     */
-    protected int computeWidth(Control control) {
-        return control.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x;
-    }
-
-    /**
-     * Creates and returns the control for this contribution item
-     * under the given parent composite.
-     * <p>
-     * This framework method must be implemented by concrete
-     * subclasses.
-     * </p>
-     *
-     * @param parent the parent composite
-     * @return the new control
-     */
-    protected abstract Control createControl(Composite parent);
-
-    /**
-     * The control item implementation of this <code>IContributionItem</code>
-     * method calls the <code>createControl</code> framework method.
-     * Subclasses must implement <code>createControl</code> rather than
-     * overriding this method.
-     */
-    public final void fill(Composite parent) {
-        createControl(parent);
-    }
-
-    /**
-     * The control item implementation of this <code>IContributionItem</code>
-     * method throws an exception since controls cannot be added to menus.
-     */
-    public final void fill(Menu parent, int index) {
-        Assert.isTrue(false, "Can't add a control to a menu");//$NON-NLS-1$
-    }
-
-    /**
-     * The control item implementation of this <code>IContributionItem</code>
-     * method calls the <code>createControl</code> framework method to
-     * create a control under the given parent, and then creates
-     * a new tool item to hold it.
-     * Subclasses must implement <code>createControl</code> rather than
-     * overriding this method.
-     */
-    public final void fill(ToolBar parent, int index) {
-        Control control = createControl(parent);
-        ToolItem ti = new ToolItem(parent, SWT.SEPARATOR, index);
-        ti.setControl(control);
-        ti.setWidth(computeWidth(control));
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/CoolBarManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/CoolBarManager.java
deleted file mode 100644
index 0f588b6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/CoolBarManager.java
+++ /dev/null
@@ -1,1041 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * A cool bar manager is a contribution manager which realizes itself and its
- * items in a cool bar control.
- * <p>
- * This class may be instantiated; it may also be subclassed.
- * </p>
- * 
- * @since 3.0
- */
-public class CoolBarManager extends ContributionManager implements
-        ICoolBarManager {
-
-    /**
-     * A separator created by the end user.
-     */
-    public final static String USER_SEPARATOR = "UserSeparator"; //$NON-NLS-1$
-
-    /**
-     * The original creation order of the contribution items.
-     */
-    private ArrayList cbItemsCreationOrder = new ArrayList();
-
-    /**
-     * MenuManager for cool bar pop-up menu, or null if none.
-     */
-    private MenuManager contextMenuManager = null;
-
-    /**
-     * The cool bar control; <code>null</code> before creation and after
-     * disposal.
-     */
-    private CoolBar coolBar = null;
-
-    /**
-     * The cool bar items style; <code>SWT.NONE</code> by default.
-     */
-    private int itemStyle = SWT.NONE;
-
-    /**
-     * Creates a new cool bar manager with the default style. Equivalent to
-     * <code>CoolBarManager(SWT.NONE)</code>.
-     */
-    public CoolBarManager() {
-        // do nothing
-    }
-
-    /**
-     * Creates a cool bar manager for an existing cool bar control. This
-     * manager becomes responsible for the control, and will dispose of it when
-     * the manager is disposed.
-     * 
-     * @param coolBar
-     *            the cool bar control
-     */
-    public CoolBarManager(CoolBar coolBar) {
-        this();
-        Assert.isNotNull(coolBar);
-        this.coolBar = coolBar;
-        itemStyle = coolBar.getStyle();
-    }
-
-    /**
-     * Creates a cool bar manager with the given SWT style. Calling <code>createControl</code>
-     * will create the cool bar control.
-     * 
-     * @param style
-     *            the cool bar item style; see
-     *            {@link org.eclipse.swt.widgets.CoolBar CoolBar}for for valid
-     *            style bits
-     */
-    public CoolBarManager(int style) {
-        itemStyle = style;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ICoolBarManager#add(org.eclipse.jface.action.IToolBarManager)
-     */
-    public void add(IToolBarManager toolBarManager) {
-        Assert.isNotNull(toolBarManager);
-        super.add(new ToolBarContributionItem(toolBarManager));
-    }
-
-    /**
-     * Collapses consecutive separators and removes a separator from the
-     * beginning and end of the list.
-     * 
-     * @param contributionList
-     *            the list of contributions; must not be <code>null</code>.
-     * @return The contribution list provided with extraneous separators
-     *         removed; this value is never <code>null</code>, but may be
-     *         empty.
-     */
-    private ArrayList adjustContributionList(ArrayList contributionList) {
-        IContributionItem item;
-        // Fist remove a separator if it is the first element of the list
-        if (contributionList.size() != 0) {
-            item = (IContributionItem) contributionList.get(0);
-            if (item.isSeparator()) {
-                contributionList.remove(0);
-            }
-
-            ListIterator iterator = contributionList.listIterator();
-            // collapse consecutive separators
-            while (iterator.hasNext()) {
-                item = (IContributionItem) iterator.next();
-                if (item.isSeparator()) {
-                    while (iterator.hasNext()) {
-                        item = (IContributionItem) iterator.next();
-                        if (item.isSeparator()) {
-                            iterator.remove();
-                        } else {
-                            break;
-                        }
-                    }
-
-                }
-            }
-            // Now check last element to see if there is a separator
-            item = (IContributionItem) contributionList.get(contributionList
-                    .size() - 1);
-            if (item.isSeparator()) {
-                contributionList.remove(contributionList.size() - 1);
-            }
-        }
-        return contributionList;
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionManager#checkDuplication(org.eclipse.jface.action.IContributionItem)
-     */
-    protected boolean allowItem(IContributionItem itemToAdd) {
-        /* We will allow as many null entries as they like, though there should
-         * be none.
-         */
-        if (itemToAdd == null) {
-            return true;
-        }
-
-        /* Null identifiers can be expected in generic contribution items.
-         */
-        String firstId = itemToAdd.getId();
-        if (firstId == null) {
-            return true;
-        }
-
-        // Cycle through the current list looking for duplicates.
-        IContributionItem[] currentItems = getItems();
-        for (int i = 0; i < currentItems.length; i++) {
-            IContributionItem currentItem = currentItems[i];
-
-            // We ignore null entries.
-            if (currentItem == null) {
-                continue;
-            }
-
-            String secondId = currentItem.getId();
-            if (firstId.equals(secondId)) {
-                if (Policy.TRACE_TOOLBAR) { 
-                    System.out.println("Trying to add a duplicate item."); //$NON-NLS-1$
-                    new Exception().printStackTrace(System.out);
-                    System.out.println("DONE --------------------------"); //$NON-NLS-1$
-                }
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Positions the list iterator to the end of all the separators. Calling
-     * <code>next()</code> the iterator should return the immediate object
-     * following the last separator.
-     * 
-     * @param iterator
-     *            the list iterator.
-     */
-    private void collapseSeparators(ListIterator iterator) {
-
-        while (iterator.hasNext()) {
-            IContributionItem item = (IContributionItem) iterator.next();
-            if (!item.isSeparator()) {
-                iterator.previous();
-                return;
-            }
-        }
-    }
-
-    /**
-     * Returns whether the cool bar control has been created and not yet
-     * disposed.
-     * 
-     * @return <code>true</code> if the control has been created and not yet
-     *         disposed, <code>false</code> otherwise
-     */
-    private boolean coolBarExist() {
-        return coolBar != null && !coolBar.isDisposed();
-    }
-
-    /**
-     * Creates and returns this manager's cool bar control. Does not create a
-     * new control if one already exists.
-     * 
-     * @param parent
-     *            the parent control
-     * @return the cool bar control
-     */
-    public CoolBar createControl(Composite parent) {
-        Assert.isNotNull(parent);
-        if (!coolBarExist()) {
-            coolBar = new CoolBar(parent, itemStyle);
-            coolBar.setMenu(getContextMenuControl());
-            coolBar.setLocked(false);
-            update(false);
-        }
-        return coolBar;
-    }
-
-    /**
-     * Disposes of this cool bar manager and frees all allocated SWT resources.
-     * Notifies all contribution items of the dispose. Note that this method
-     * does not clean up references between this cool bar manager and its
-     * associated contribution items. Use <code>removeAll</code> for that
-     * purpose.
-     */
-    public void dispose() {
-        if (coolBarExist()) {
-            coolBar.dispose();
-            coolBar = null;
-        }
-        IContributionItem[] items = getItems();
-        for (int i = 0; i < items.length; i++) {
-            // Disposes of the contribution item.
-            // If Contribution Item is a toolbar then it will dispose of
-            // all the nested
-            // contribution items.
-            items[i].dispose();
-        }
-        // If a context menu existed then dispose of it.
-        if (contextMenuManager != null) {
-            contextMenuManager.dispose();
-            contextMenuManager = null;
-        }
-
-    }
-
-    /**
-     * Disposes the given cool item.
-     * 
-     * @param item
-     *            the cool item to dispose
-     */
-    private void dispose(CoolItem item) {
-        if ((item != null) && !item.isDisposed()) {
-
-            item.setData(null);
-            Control control = item.getControl();
-            // if the control is already disposed, setting the coolitem
-            // control to null will cause an SWT exception, workaround
-            // for 19630
-            if ((control != null) && !control.isDisposed()) {
-                item.setControl(null);
-            }
-            item.dispose();
-        }
-    }
-
-    /**
-     * Finds the cool item associated with the given contribution item.
-     * 
-     * @param item
-     *            the contribution item
-     * @return the associated cool item, or <code>null</code> if not found
-     */
-    private CoolItem findCoolItem(IContributionItem item) {
-        CoolItem[] coolItems = (coolBar == null) ? null : coolBar.getItems(); 
-        return findCoolItem(coolItems, item);
-    }
-    
-    private CoolItem findCoolItem(CoolItem[] items, IContributionItem item) {
-        if (items == null) {
-			return null;
-		}
-
-        for (int i = 0; i < items.length; i++) {
-            CoolItem coolItem = items[i];
-            IContributionItem data = (IContributionItem) coolItem.getData();
-            if (data != null && data.equals(item)) {
-				return coolItem;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Return a consistent set of wrap indices. The return value will always
-     * include at least one entry and the first entry will always be zero.
-     * CoolBar.getWrapIndices() is inconsistent in whether or not it returns an
-     * index for the first row.
-     * 
-     * @param wraps
-     *            the wrap indicies from the cool bar widget
-     * @return the adjusted wrap indicies.
-     */
-    private int[] getAdjustedWrapIndices(int[] wraps) {
-        int[] adjustedWrapIndices;
-        if (wraps.length == 0) {
-            adjustedWrapIndices = new int[] { 0 };
-        } else {
-            if (wraps[0] != 0) {
-                adjustedWrapIndices = new int[wraps.length + 1];
-                adjustedWrapIndices[0] = 0;
-                for (int i = 0; i < wraps.length; i++) {
-                    adjustedWrapIndices[i + 1] = wraps[i];
-                }
-            } else {
-                adjustedWrapIndices = wraps;
-            }
-        }
-        return adjustedWrapIndices;
-    }
-
-    /**
-     * Returns the control of the Menu Manager. If the menu manager does not
-     * have a control then one is created.
-     * 
-     * @return menu control associated with manager, or null if none
-     */
-    private Menu getContextMenuControl() {
-        if ((contextMenuManager != null) && (coolBar != null)) {
-            Menu menuWidget = contextMenuManager.getMenu();
-            if ((menuWidget == null) || (menuWidget.isDisposed())) {
-                menuWidget = contextMenuManager.createContextMenu(coolBar);
-            }
-            return menuWidget;
-        }
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ICoolBarManager#isLayoutLocked()
-     */
-    public IMenuManager getContextMenuManager() {
-        return contextMenuManager;
-    }
-
-    /**
-     * Returns the cool bar control for this manager.
-     * 
-     * @return the cool bar control, or <code>null</code> if none
-     */
-    public CoolBar getControl() {
-        return coolBar;
-    }
-
-    /**
-     * Returns an array list of all the contribution items in the manager.
-     * 
-     * @return an array list of contribution items.
-     */
-    private ArrayList getItemList() {
-        IContributionItem[] cbItems = getItems();
-        ArrayList list = new ArrayList(cbItems.length);
-        for (int i = 0; i < cbItems.length; i++) {
-            list.add(cbItems[i]);
-        }
-        return list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ICoolBarManager#isLayoutLocked()
-     */
-    public boolean getLockLayout() {
-        if (!coolBarExist()) {
-            return false;
-        }
-        return coolBar.getLocked();
-    }
-
-    /**
-     * Returns the number of rows that should be displayed visually.
-     * 
-     * @param items
-     *            the array of contributin items
-     * @return the number of rows
-     */
-    private int getNumRows(IContributionItem[] items) {
-        int numRows = 1;
-        boolean separatorFound = false;
-        for (int i = 0; i < items.length; i++) {
-            if (items[i].isSeparator()) {
-                separatorFound = true;
-            }
-            if ((separatorFound) && (items[i].isVisible())
-                    && (!items[i].isGroupMarker()) && (!items[i].isSeparator())) {
-                numRows++;
-                separatorFound = false;
-            }
-        }
-        return numRows;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ICoolBarManager#getStyle()
-     */
-    public int getStyle() {
-        return itemStyle;
-    }
-
-    /**
-     * Subclasses may extend this <code>ContributionManager</code> method,
-     * but must call <code>super.itemAdded</code>.
-     * 
-     * @see org.eclipse.jface.action.ContributionManager#itemAdded(org.eclipse.jface.action.IContributionItem)
-     */
-    protected void itemAdded(IContributionItem item) {
-        Assert.isNotNull(item);
-        super.itemAdded(item);
-        int insertedAt = indexOf(item);
-        boolean replaced = false;
-        final int size = cbItemsCreationOrder.size();
-        for (int i = 0; i < size; i++) {
-            IContributionItem created = (IContributionItem) cbItemsCreationOrder
-                    .get(i);
-            if (created.getId() != null && created.getId().equals(item.getId())) {
-                cbItemsCreationOrder.set(i, item);
-                replaced = true;
-                break;
-            }
-        }
-
-        if (!replaced) {
-            cbItemsCreationOrder.add(Math.min(Math.max(insertedAt, 0),
-                    cbItemsCreationOrder.size()), item);
-        }
-    }
-
-    /**
-     * Subclasses may extend this <code>ContributionManager</code> method,
-     * but must call <code>super.itemRemoved</code>.
-     * 
-     * @see org.eclipse.jface.action.ContributionManager#itemRemoved(org.eclipse.jface.action.IContributionItem)
-     */
-    protected void itemRemoved(IContributionItem item) {
-        Assert.isNotNull(item);
-        super.itemRemoved(item);
-        CoolItem coolItem = findCoolItem(item);
-        if (coolItem != null) {
-            coolItem.setData(null);
-        }
-    }
-
-    /**
-     * Positions the list iterator to the starting of the next row. By calling
-     * next on the returned iterator, it will return the first element of the
-     * next row.
-     * 
-     * @param iterator
-     *            the list iterator of contribution items
-     * @param ignoreCurrentItem
-     *            Whether the current item in the iterator should be considered
-     *            (as well as subsequent items).
-     */
-    private void nextRow(ListIterator iterator, boolean ignoreCurrentItem) {
-
-        IContributionItem currentElement = null;
-        if (!ignoreCurrentItem && iterator.hasPrevious()) {
-            currentElement = (IContributionItem) iterator.previous();
-            iterator.next();
-        }
-
-        if ((currentElement != null) && (currentElement.isSeparator())) {
-            collapseSeparators(iterator);
-            return;
-        } 
-
-        //Find next separator
-        while (iterator.hasNext()) {
-            IContributionItem item = (IContributionItem) iterator.next();
-            if (item.isSeparator()) {
-                // we we find a separator, collapse any consecutive
-                // separators
-                // and return
-                collapseSeparators(iterator);
-                return;
-            }
-        }
-    }
-
-    /*
-     * Used for debuging. Prints all the items in the internal structures.
-     */
-    //    private void printContributions(ArrayList contributionList) {
-    //        int index = 0;
-    //        System.out.println("----------------------------------\n"); //$NON-NLS-1$
-    //        for (Iterator i = contributionList.iterator(); i.hasNext(); index++) {
-    //            IContributionItem item = (IContributionItem) i.next();
-    //            if (item.isSeparator()) {
-    //                System.out.println("Separator"); //$NON-NLS-1$
-    //            } else {
-    //                System.out.println(index + ". Item id: " + item.getId() //$NON-NLS-1$
-    //                        + " - is Visible: " //$NON-NLS-1$
-    //                        + item.isVisible());
-    //            }
-    //        }
-    //    }
-    /**
-     * Synchronizes the visual order of the cool items in the control with this
-     * manager's internal data structures. This method should be called before
-     * requesting the order of the contribution items to ensure that the order
-     * is accurate.
-     * <p>
-     * Note that <code>update()</code> and <code>refresh()</code> are
-     * converses: <code>update()</code> changes the visual order to match the
-     * internal structures, and <code>refresh</code> changes the internal
-     * structures to match the visual order.
-     * </p>
-     */
-    public void refresh() {
-        if (!coolBarExist()) {
-            return;
-        }
-
-        // Retreives the list of contribution items as an array list
-        ArrayList contributionList = getItemList();
-
-        // Check the size of the list
-        if (contributionList.size() == 0) {
-			return;
-		}
-
-        // The list of all the cool items in their visual order
-        CoolItem[] coolItems = coolBar.getItems();
-        // The wrap indicies of the coolbar
-        int[] wrapIndicies = getAdjustedWrapIndices(coolBar.getWrapIndices());
-
-        int row = 0;
-        int coolItemIndex = 0;
-
-        // Traverse through all cool items in the coolbar add them to a new
-        // data structure
-        // in the correct order
-        ArrayList displayedItems = new ArrayList(coolBar.getItemCount());
-        for (int i = 0; i < coolItems.length; i++) {
-            CoolItem coolItem = coolItems[i];
-            if (coolItem.getData() instanceof IContributionItem) {
-                IContributionItem cbItem = (IContributionItem) coolItem
-                        .getData();
-                displayedItems.add(Math.min(i, displayedItems.size()), cbItem);
-            }
-        }
-
-        // Add separators to the displayed Items data structure
-        int offset = 0;
-        for (int i = 1; i < wrapIndicies.length; i++) {
-            int insertAt = wrapIndicies[i] + offset;
-            displayedItems.add(insertAt, new Separator(USER_SEPARATOR));
-            offset++;
-        }
-
-        // Determine which rows are invisible
-        ArrayList existingVisibleRows = new ArrayList(4);
-        ListIterator rowIterator = contributionList.listIterator();
-        collapseSeparators(rowIterator);
-        int numRow = 0;
-        while (rowIterator.hasNext()) {
-            // Scan row
-            while (rowIterator.hasNext()) {
-                IContributionItem cbItem = (IContributionItem) rowIterator
-                        .next();
-                if (displayedItems.contains(cbItem)) {
-                    existingVisibleRows.add(new Integer(numRow));
-                    break;
-                }
-                if (cbItem.isSeparator()) {
-                    break;
-                }
-            }
-            nextRow(rowIterator, false);
-            numRow++;
-        }
-
-        Iterator existingRows = existingVisibleRows.iterator();
-        // Adjust row number to the first visible
-        if (existingRows.hasNext()) {
-            row = ((Integer) existingRows.next()).intValue();
-        }
-
-        HashMap itemLocation = new HashMap();
-        for (ListIterator locationIterator = displayedItems.listIterator(); locationIterator
-                .hasNext();) {
-            IContributionItem item = (IContributionItem) locationIterator
-                    .next();
-            if (item.isSeparator()) {
-                if (existingRows.hasNext()) {
-                    Integer value = (Integer) existingRows.next();
-                    row = value.intValue();
-                } else {
-                    row++;
-                }
-            } else {
-                itemLocation.put(item, new Integer(row));
-            }
-
-        }
-
-        // Insert the contribution items in their correct location
-        for (ListIterator iterator = displayedItems.listIterator(); iterator
-                .hasNext();) {
-            IContributionItem cbItem = (IContributionItem) iterator.next();
-            if (cbItem.isSeparator()) {
-                coolItemIndex = 0;
-            } else {
-                relocate(cbItem, coolItemIndex, contributionList, itemLocation);
-                cbItem.saveWidgetState();
-                coolItemIndex++;
-            }
-        }
-
-        if (contributionList.size() != 0) {
-            contributionList = adjustContributionList(contributionList);
-            IContributionItem[] array = new IContributionItem[contributionList
-                    .size() - 1];
-            array = (IContributionItem[]) contributionList.toArray(array);
-            internalSetItems(array);
-        }
-
-    }
-
-    /**
-     * Relocates the given contribution item to the specified index.
-     * 
-     * @param cbItem
-     *            the conribution item to relocate
-     * @param index
-     *            the index to locate this item
-     * @param contributionList
-     *            the current list of conrtributions
-     * @param itemLocation
-     */
-    private void relocate(IContributionItem cbItem, int index,
-            ArrayList contributionList, HashMap itemLocation) {
-
-        if (!(itemLocation.get(cbItem) instanceof Integer)) {
-			return;
-		}
-        int targetRow = ((Integer) itemLocation.get(cbItem)).intValue();
-
-        int cbInternalIndex = contributionList.indexOf(cbItem);
-
-        //	by default add to end of list
-        int insertAt = contributionList.size();
-        // Find the row to place this item in.
-        ListIterator iterator = contributionList.listIterator();
-        // bypass any separators at the begining
-        collapseSeparators(iterator);
-        int currentRow = -1;
-        while (iterator.hasNext()) {
-
-            currentRow++;
-            if (currentRow == targetRow) {
-                // We found the row to insert the item
-                int virtualIndex = 0;
-                insertAt = iterator.nextIndex();
-                // first check the position of the current element (item)
-                // then get the next element
-                while (iterator.hasNext()) {
-                    IContributionItem item = (IContributionItem) iterator
-                            .next();
-                    Integer itemRow = (Integer) itemLocation.get(item);
-                    if (item.isSeparator()) {
-						break;
-					}
-                    // if the item has an associate widget
-                    if ((itemRow != null) && (itemRow.intValue() == targetRow)) {
-                        // if the next element is the index we are looking for
-                        // then break
-                        if (virtualIndex >= index) {
-							break;
-						}
-                        virtualIndex++;
-
-                    }
-                    insertAt++;
-                }
-                // If we don't need to move it then we return
-                if (cbInternalIndex == insertAt) {
-					return;
-				}
-                break;
-            }
-            nextRow(iterator, true);
-        }
-        contributionList.remove(cbItem);
-
-        // Adjust insertAt index
-        if (cbInternalIndex < insertAt) {
-            insertAt--;
-        }
-
-        // if we didn't find the row then add a new row
-        if (currentRow != targetRow) {
-            contributionList.add(new Separator(USER_SEPARATOR));
-            insertAt = contributionList.size();
-        }
-        insertAt = Math.min(insertAt, contributionList.size());
-        contributionList.add(insertAt, cbItem);
-
-    }
-
-    /**
-     * Restores the canonical order of this cool bar manager. The canonical
-     * order is the order in which the contribution items where added.
-     */
-    public void resetItemOrder() {
-        for (ListIterator iterator = cbItemsCreationOrder.listIterator(); iterator
-                .hasNext();) {
-            IContributionItem item = (IContributionItem) iterator.next();
-            // if its a user separator then do not include in original order.
-            if ((item.getId() != null) && (item.getId().equals(USER_SEPARATOR))) {
-                iterator.remove();
-            }
-        }
-        IContributionItem[] itemsToSet = new IContributionItem[cbItemsCreationOrder
-                .size()];
-        cbItemsCreationOrder.toArray(itemsToSet);
-        setItems(itemsToSet);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ICoolBarManager#setContextMenuManager(org.eclipse.jface.action.IMenuManager)
-     */
-    public void setContextMenuManager(IMenuManager contextMenuManager) {
-        this.contextMenuManager = (MenuManager) contextMenuManager;
-        if (coolBar != null) {
-            coolBar.setMenu(getContextMenuControl());
-        }
-    }
-
-    /**
-     * Replaces the current items with the given items.
-     * Forces an update.
-     * 
-     * @param newItems the items with which to replace the current items
-     */
-    public void setItems(IContributionItem[] newItems) {
-        // dispose of all the cool items on the cool bar manager
-        if (coolBar != null) {
-            CoolItem[] coolItems = coolBar.getItems();
-            for (int i = 0; i < coolItems.length; i++) {
-                dispose(coolItems[i]);
-            }
-        }
-        // Set the internal structure to this order
-        internalSetItems(newItems);
-        // Force and update
-        update(true);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ICoolBarManager#lockLayout(boolean)
-     */
-    public void setLockLayout(boolean value) {
-        if (!coolBarExist()) {
-            return;
-        }
-        coolBar.setLocked(value);
-    }
-
-    /**
-     * Subclasses may extend this <code>IContributionManager</code> method,
-     * but must call <code>super.update</code>.
-     * 
-     * @see org.eclipse.jface.action.IContributionManager#update(boolean)
-     */
-    public void update(boolean force) {
-        if ((!isDirty() && !force) || (!coolBarExist())) {
-            return;
-        }
-
-        boolean relock = false;
-        boolean changed = false;
-
-        try {
-            coolBar.setRedraw(false);
-
-            // Refresh the widget data with the internal data structure.
-            refresh();
-
-            if (coolBar.getLocked()) {
-                coolBar.setLocked(false);
-                relock = true;
-            }
-
-            /*
-             * Make a list of items including only those items that are
-             * visible. Separators should stay because they mark line breaks in
-             * a cool bar.
-             */
-            final IContributionItem[] items = getItems();
-            final List visibleItems = new ArrayList(items.length);
-            for (int i = 0; i < items.length; i++) {
-                final IContributionItem item = items[i];
-                if (item.isVisible()) {
-                    visibleItems.add(item);
-                }
-            }
-
-            /*
-             * Make a list of CoolItem widgets in the cool bar for which there
-             * is no current visible contribution item. These are the widgets
-             * to be disposed. Dynamic items are also removed.
-             */
-            CoolItem[] coolItems = coolBar.getItems();
-            final ArrayList coolItemsToRemove = new ArrayList(coolItems.length);
-            for (int i = 0; i < coolItems.length; i++) {
-                final Object data = coolItems[i].getData();
-                if ((data == null)
-                        || (!visibleItems.contains(data))
-                        || ((data instanceof IContributionItem) && ((IContributionItem) data)
-                                .isDynamic())) {
-                    coolItemsToRemove.add(coolItems[i]);
-                }
-            }
-
-            // Dispose of any items in the list to be removed.
-            for (int i = coolItemsToRemove.size() - 1; i >= 0; i--) {
-                CoolItem coolItem = (CoolItem) coolItemsToRemove.get(i);
-                if (!coolItem.isDisposed()) {
-                    Control control = coolItem.getControl();
-                    if (control != null) {
-                        coolItem.setControl(null);
-                        control.dispose();
-                    }
-                    coolItem.dispose();
-                }
-            }
-
-            // Add any new items by telling them to fill.
-            coolItems = coolBar.getItems();
-            IContributionItem sourceItem;
-            IContributionItem destinationItem;
-            int sourceIndex = 0;
-            int destinationIndex = 0;
-            final Iterator visibleItemItr = visibleItems.iterator();
-            while (visibleItemItr.hasNext()) {
-                sourceItem = (IContributionItem) visibleItemItr.next();
-
-                // Retrieve the corresponding contribution item from SWT's
-                // data.
-                if (sourceIndex < coolItems.length) {
-                    destinationItem = (IContributionItem) coolItems[sourceIndex]
-                            .getData();
-                } else {
-                    destinationItem = null;
-                }
-
-                // The items match is they are equal or both separators.
-                if (destinationItem != null) {
-                    if (sourceItem.equals(destinationItem)) {
-                        sourceIndex++;
-                        destinationIndex++;
-                        sourceItem.update();
-                        continue;
-
-                    } else if ((destinationItem.isSeparator())
-                            && (sourceItem.isSeparator())) {
-                        coolItems[sourceIndex].setData(sourceItem);
-                        sourceIndex++;
-                        destinationIndex++;
-                        sourceItem.update();
-                        continue;
-
-                    }
-                }
-
-                // Otherwise, a new item has to be added.
-                final int start = coolBar.getItemCount();
-                sourceItem.fill(coolBar, destinationIndex);
-                final int newItems = coolBar.getItemCount() - start;
-                for (int i = 0; i < newItems; i++) {
-                    coolBar.getItem(destinationIndex++).setData(sourceItem);
-                }
-                changed = true;
-            }
-
-            // Remove any old widgets not accounted for.
-            for (int i = coolItems.length - 1; i >= sourceIndex; i--) {
-                final CoolItem item = coolItems[i];
-                if (!item.isDisposed()) {
-                    Control control = item.getControl();
-                    if (control != null) {
-                        item.setControl(null);
-                        control.dispose();
-                    }
-                    item.dispose();
-                    changed = true;
-                }
-            }
-
-            // Update wrap indices.
-            updateWrapIndices();
-
-            // Update the sizes.
-            for (int i = 0; i < items.length; i++) {
-                IContributionItem item = items[i];
-                item.update(SIZE);
-            }
-
-            // if the coolBar was previously locked then lock it
-            if (relock) {
-                coolBar.setLocked(true);
-            }
-
-            if (changed) {
-                updateTabOrder();
-            }
-
-            // We are no longer dirty.
-            setDirty(false);
-        } finally {
-            coolBar.setRedraw(true);
-        }
-    }
-
-    /**
-     * Sets the tab order of the coolbar to the visual order of its items.
-     */
-    /* package */void updateTabOrder() {
-        if (coolBar != null) {
-            CoolItem[] items = coolBar.getItems();
-            if (items != null) {
-                ArrayList children = new ArrayList(items.length);
-                for (int i = 0; i < items.length; i++) {
-                    if ((items[i].getControl() != null)
-                            && (!items[i].getControl().isDisposed())) {
-                        children.add(items[i].getControl());
-                    }
-                }
-                // Convert array
-                Control[] childrenArray = new Control[0];
-                childrenArray = (Control[]) children.toArray(childrenArray);
-
-                if (childrenArray != null) {
-                    coolBar.setTabList(childrenArray);
-                }
-
-            }
-        }
-    }
-
-    /**
-     * Updates the indices at which the cool bar should wrap.
-     */
-    private void updateWrapIndices() {
-        final IContributionItem[] items = getItems();
-        final int numRows = getNumRows(items) - 1;
-
-        // Generate the list of wrap indices.
-        final int[] wrapIndices = new int[numRows];
-        boolean foundSeparator = false;
-        int j = 0;
-        CoolItem[] coolItems = (coolBar == null) ? null : coolBar.getItems();
-
-        for (int i = 0; i < items.length; i++) {
-            IContributionItem item = items[i];
-            CoolItem coolItem = findCoolItem(coolItems, item);
-            if (item.isSeparator()) {
-                foundSeparator = true;
-            }
-            if ((!item.isSeparator()) && (!item.isGroupMarker())
-                    && (item.isVisible()) && (coolItem != null)
-                    && (foundSeparator)) {
-                wrapIndices[j] = coolBar.indexOf(coolItem);
-                j++;
-                foundSeparator = false;
-            }
-        }
-
-        /*
-         * Check to see if these new wrap indices are different than the old
-         * ones.
-         */
-        final int[] oldIndices = coolBar.getWrapIndices();
-        boolean shouldUpdate = false;
-        if (oldIndices.length == wrapIndices.length) {
-            for (int i = 0; i < oldIndices.length; i++) {
-                if (oldIndices[i] != wrapIndices[i]) {
-                    shouldUpdate = true;
-                    break;
-                }
-            }
-        } else {
-            shouldUpdate = true;
-        }
-
-        if (shouldUpdate) {
-            coolBar.setWrapIndices(wrapIndices);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.java
deleted file mode 100644
index 1ebc918..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.java
+++ /dev/null
@@ -1,788 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import java.text.MessageFormat;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandEvent;
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.ICommandListener;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.BindingManagerEvent;
-import org.eclipse.jface.bindings.IBindingManagerListener;
-import org.eclipse.jface.bindings.Trigger;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.bindings.keys.SWTKeySupport;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * <p>
- * A manager for a callback facility which is capable of querying external
- * interfaces for additional information about actions and action contribution
- * items. This information typically includes things like accelerators and
- * textual representations.
- * </p>
- * <p>
- * <em>It is only necessary to use this mechanism if you will be using a mix of
- * actions and commands, and wish the interactions to work properly.</em>
- * </p>
- * <p>
- * For example, in the Eclipse workbench, this mechanism is used to allow the
- * command architecture to override certain values in action contribution items.
- * </p>
- * <p>
- * This class is not intended to be called or extended by any external clients.
- * </p>
- * 
- * @since 3.0
- */
-public final class ExternalActionManager {
-
-	/**
-	 * A simple implementation of the <code>ICallback</code> mechanism that
-	 * simply takes a <code>BindingManager</code> and a
-	 * <code>CommandManager</code>.
-	 * <p>
-	 * <b>Note:</b> this class is not intended to be subclassed by clients.
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public static class CommandCallback implements
-			IBindingManagerListener, IBindingManagerCallback, IExecuteCallback {
-
-		/**
-		 * The internationalization bundle for text produced by this class.
-		 */
-		private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-				.getBundle(ExternalActionManager.class.getName());
-
-		/**
-		 * The callback capable of responding to whether a command is active.
-		 */
-		private final IActiveChecker activeChecker;
-		
-		/**
-		 * Check the applicability of firing an execution event for an action.
-		 */
-		private final IExecuteApplicable applicabilityChecker;
-
-		/**
-		 * The binding manager for your application. Must not be
-		 * <code>null</code>.
-		 */
-		private final BindingManager bindingManager;
-
-		/**
-		 * Whether a listener has been attached to the binding manager yet.
-		 */
-		private boolean bindingManagerListenerAttached = false;
-
-		/**
-		 * The command manager for your application. Must not be
-		 * <code>null</code>.
-		 */
-		private final CommandManager commandManager;
-
-		/**
-		 * A set of all the command identifiers that have been logged as broken
-		 * so far. For each of these, there will be a listener on the
-		 * corresponding command. If the command ever becomes defined, the item
-		 * will be removed from this set and the listener removed. This value
-		 * may be empty, but never <code>null</code>.
-		 */
-		private final Set loggedCommandIds = new HashSet();
-
-		/**
-		 * The list of listeners that have registered for property change
-		 * notification. This is a map of command identifiers (<code>String</code>)
-		 * to listeners (<code>IPropertyChangeListener</code> or
-		 * <code>ListenerList</code> of <code>IPropertyChangeListener</code>).
-		 */
-		private final Map registeredListeners = new HashMap();
-
-		/**
-		 * Constructs a new instance of <code>CommandCallback</code> with the
-		 * workbench it should be using. All commands will be considered active.
-		 * 
-		 * @param bindingManager
-		 *            The binding manager which will provide the callback; must
-		 *            not be <code>null</code>.
-		 * @param commandManager
-		 *            The command manager which will provide the callback; must
-		 *            not be <code>null</code>.
-		 * 
-		 * @since 3.1
-		 */
-		public CommandCallback(final BindingManager bindingManager,
-				final CommandManager commandManager) {
-			this(bindingManager, commandManager, new IActiveChecker() {
-				public boolean isActive(String commandId) {
-					return true;
-				}
-
-			}, new IExecuteApplicable() {
-				public boolean isApplicable(IAction action) {
-					return true;
-				}
-			});
-		}
-		/**
-		 * Constructs a new instance of <code>CommandCallback</code> with the
-		 * workbench it should be using.
-		 * 
-		 * @param bindingManager
-		 *            The binding manager which will provide the callback; must
-		 *            not be <code>null</code>.
-		 * @param commandManager
-		 *            The command manager which will provide the callback; must
-		 *            not be <code>null</code>.
-		 * @param activeChecker
-		 *            The callback mechanism for checking whether a command is
-		 *            active; must not be <code>null</code>.
-		 * 
-		 * @since 3.1
-		 */
-		public CommandCallback(final BindingManager bindingManager,
-				final CommandManager commandManager,
-				final IActiveChecker activeChecker) {
-			this(bindingManager, commandManager, activeChecker,
-					new IExecuteApplicable() {
-				public boolean isApplicable(IAction action) {
-					return true;
-				}
-			});
-		}
-		/**
-		 * Constructs a new instance of <code>CommandCallback</code> with the
-		 * workbench it should be using.
-		 * 
-		 * @param bindingManager
-		 *            The binding manager which will provide the callback; must
-		 *            not be <code>null</code>.
-		 * @param commandManager
-		 *            The command manager which will provide the callback; must
-		 *            not be <code>null</code>.
-		 * @param activeChecker
-		 *            The callback mechanism for checking whether a command is
-		 *            active; must not be <code>null</code>.
-		 * @param checker
-		 *            The callback to check if an IAction should fire execution
-		 *            events.
-		 * 
-		 * @since 3.4
-		 */
-		public CommandCallback(final BindingManager bindingManager,
-				final CommandManager commandManager,
-				final IActiveChecker activeChecker,
-				final IExecuteApplicable checker) {
-			if (bindingManager == null) {
-				throw new NullPointerException(
-						"The callback needs a binding manager"); //$NON-NLS-1$
-			}
-
-			if (commandManager == null) {
-				throw new NullPointerException(
-						"The callback needs a command manager"); //$NON-NLS-1$
-			}
-
-			if (activeChecker == null) {
-				throw new NullPointerException(
-						"The callback needs an active callback"); //$NON-NLS-1$
-			}
-			if (checker == null) {
-				throw new NullPointerException(
-						"The callback needs an applicable callback"); //$NON-NLS-1$
-			}
-
-			this.activeChecker = activeChecker;
-			this.bindingManager = bindingManager;
-			this.commandManager = commandManager;
-			this.applicabilityChecker = checker;
-		}
-
-		/**
-		 * @see org.eclipse.jface.action.ExternalActionManager.ICallback#addPropertyChangeListener(String,
-		 *      IPropertyChangeListener)
-		 */
-		public final void addPropertyChangeListener(final String commandId,
-				final IPropertyChangeListener listener) {
-			Object existing = registeredListeners.get(commandId);
-			if (existing instanceof ListenerList) {
-				((ListenerList) existing).add(listener);
-			} else if (existing != null) {
-				ListenerList listeners = new ListenerList(ListenerList.IDENTITY);
-				listeners.add(existing);
-				listeners.add(listener);
-			} else {
-				registeredListeners.put(commandId, listener);
-			}
-			if (!bindingManagerListenerAttached) {
-				bindingManager.addBindingManagerListener(this);
-				bindingManagerListenerAttached = true;
-			}
-		}
-
-		public final void bindingManagerChanged(final BindingManagerEvent event) {
-			if (event.isActiveBindingsChanged()) {
-				final Iterator listenerItr = registeredListeners.entrySet()
-						.iterator();
-				while (listenerItr.hasNext()) {
-					final Map.Entry entry = (Map.Entry) listenerItr.next();
-					final String commandId = (String) entry.getKey();
-					final Command command = commandManager
-							.getCommand(commandId);
-					final ParameterizedCommand parameterizedCommand = new ParameterizedCommand(
-							command, null);
-					if (event.isActiveBindingsChangedFor(parameterizedCommand)) {
-						Object value = entry.getValue();
-						PropertyChangeEvent propertyChangeEvent = new PropertyChangeEvent(event
-								.getManager(), IAction.TEXT, null, null);
-						if (value instanceof ListenerList) {
-							Object[] listeners= ((ListenerList) value).getListeners();
-							for (int i = 0; i < listeners.length; i++) {
-								final IPropertyChangeListener listener = (IPropertyChangeListener) listeners[i];
-								listener.propertyChange(propertyChangeEvent);
-							}
-						} else {
-							final IPropertyChangeListener listener = (IPropertyChangeListener) value;
-							listener.propertyChange(propertyChangeEvent);
-						}
-					}
-				}
-			}
-		}
-
-		/**
-		 * @see org.eclipse.jface.action.ExternalActionManager.ICallback#getAccelerator(String)
-		 */
-		public final Integer getAccelerator(final String commandId) {
-			final TriggerSequence triggerSequence = bindingManager
-					.getBestActiveBindingFor(commandId);
-			if (triggerSequence != null) {
-				final Trigger[] triggers = triggerSequence.getTriggers();
-				if (triggers.length == 1) {
-					final Trigger trigger = triggers[0];
-					if (trigger instanceof KeyStroke) {
-						final KeyStroke keyStroke = (KeyStroke) trigger;
-						final int accelerator = SWTKeySupport
-								.convertKeyStrokeToAccelerator(keyStroke);
-						return new Integer(accelerator);
-					}
-				}
-			}
-
-			return null;
-		}
-
-		/**
-		 * @see org.eclipse.jface.action.ExternalActionManager.ICallback#getAcceleratorText(String)
-		 */
-		public final String getAcceleratorText(final String commandId) {
-			final TriggerSequence triggerSequence = bindingManager
-					.getBestActiveBindingFor(commandId);
-			if (triggerSequence == null) {
-				return null;
-			}
-
-			return triggerSequence.format();
-		}
-
-		/**
-		 * Returns the active bindings for a particular command identifier.
-		 * 
-		 * @param commandId
-		 *            The identifier of the command whose bindings are
-		 *            requested. This argument may be <code>null</code>. It
-		 *            is assumed that the command has no parameters.
-		 * @return The array of active triggers (<code>TriggerSequence</code>)
-		 *         for a particular command identifier. This value is guaranteed
-		 *         not to be <code>null</code>, but it may be empty.
-		 * @since 3.2
-		 */
-		public final TriggerSequence[] getActiveBindingsFor(
-				final String commandId) {
-			return bindingManager.getActiveBindingsFor(commandId);
-		}
-
-		/**
-		 * @see org.eclipse.jface.action.ExternalActionManager.ICallback#isAcceleratorInUse(int)
-		 */
-		public final boolean isAcceleratorInUse(final int accelerator) {
-			final KeySequence keySequence = KeySequence
-					.getInstance(SWTKeySupport
-							.convertAcceleratorToKeyStroke(accelerator));
-			return bindingManager.isPerfectMatch(keySequence)
-					|| bindingManager.isPartialMatch(keySequence);
-		}
-
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * Calling this method with an undefined command id will generate a log
-		 * message.
-		 */
-		public final boolean isActive(final String commandId) {
-			if (commandId != null) {
-				final Command command = commandManager.getCommand(commandId);
-
-				if (!command.isDefined()
-						&& (!loggedCommandIds.contains(commandId))) {
-					// The command is not yet defined, so we should log this.
-					final String message = MessageFormat.format(Util
-							.translateString(RESOURCE_BUNDLE,
-									"undefinedCommand.WarningMessage", null), //$NON-NLS-1$
-							new String[] { command.getId() });
-					IStatus status = new Status(IStatus.ERROR,
-							"org.eclipse.jface", //$NON-NLS-1$
-							0, message, new Exception());
-					Policy.getLog().log(status);
-
-					// And remember this item so we don't log it again.
-					loggedCommandIds.add(commandId);
-					command.addCommandListener(new ICommandListener() {
-						/*
-						 * (non-Javadoc)
-						 * 
-						 * @see org.eclipse.ui.commands.ICommandListener#commandChanged(org.eclipse.ui.commands.CommandEvent)
-						 */
-						public final void commandChanged(
-								final CommandEvent commandEvent) {
-							if (command.isDefined()) {
-								command.removeCommandListener(this);
-								loggedCommandIds.remove(commandId);
-							}
-						}
-					});
-
-					return true;
-				}
-
-				return activeChecker.isActive(commandId);
-			}
-
-			return true;
-		}
-
-		/**
-		 * @see org.eclipse.jface.action.ExternalActionManager.ICallback#removePropertyChangeListener(String,
-		 *      IPropertyChangeListener)
-		 */
-		public final void removePropertyChangeListener(final String commandId,
-				final IPropertyChangeListener listener) {
-			Object existing= registeredListeners.get(commandId);
-			if (existing == listener) {
-				registeredListeners.remove(commandId);
-				if (registeredListeners.isEmpty()) {
-					bindingManager.removeBindingManagerListener(this);
-					bindingManagerListenerAttached = false;
-				}
-			} else if (existing instanceof ListenerList) {
-				ListenerList existingList = (ListenerList) existing;
-				existingList.remove(listener);
-				if (existingList.size() == 1) {
-					registeredListeners.put(commandId, existingList.getListeners()[0]);
-				}
-			}
-		}
-
-		/**
-		 * @since 3.4
-		 */
-		public void preExecute(IAction action, Event event) {
-			String actionDefinitionId = action.getActionDefinitionId();
-			if (actionDefinitionId==null 
-					|| !applicabilityChecker.isApplicable(action)) {
-				return;
-			}
-			Command command = commandManager.getCommand(actionDefinitionId);
-			ExecutionEvent executionEvent = new ExecutionEvent(command,
-					Collections.EMPTY_MAP, event, null);
-
-			commandManager.firePreExecute(actionDefinitionId, executionEvent);
-		}
-
-		/**
-		 * @since 3.4
-		 */
-		public void postExecuteSuccess(IAction action, Object returnValue) {
-			String actionDefinitionId = action.getActionDefinitionId();
-			if (actionDefinitionId==null 
-					|| !applicabilityChecker.isApplicable(action)) {
-				return;
-			}
-			commandManager.firePostExecuteSuccess(actionDefinitionId, returnValue);
-		}
-
-		/**
-		 * @since 3.4
-		 */
-		public void postExecuteFailure(IAction action,
-				ExecutionException exception) {
-			String actionDefinitionId = action.getActionDefinitionId();
-			if (actionDefinitionId==null 
-					|| !applicabilityChecker.isApplicable(action)) {
-				return;
-			}
-			commandManager.firePostExecuteFailure(actionDefinitionId, exception);
-		}
-
-		/**
-		 * @since 3.4
-		 */
-		public void notDefined(IAction action, NotDefinedException exception) {
-			String actionDefinitionId = action.getActionDefinitionId();
-			if (actionDefinitionId==null 
-					|| !applicabilityChecker.isApplicable(action)) {
-				return;
-			}
-			commandManager.fireNotDefined(actionDefinitionId, exception);
-		}
-
-		/**
-		 * @since 3.4
-		 */
-		public void notEnabled(IAction action, NotEnabledException exception) {
-			String actionDefinitionId = action.getActionDefinitionId();
-			if (actionDefinitionId==null 
-					|| !applicabilityChecker.isApplicable(action)) {
-				return;
-			}
-			commandManager.fireNotEnabled(actionDefinitionId, exception);
-		}
-	}
-
-	/**
-	 * Defines a callback mechanism for developer who wish to further control
-	 * the visibility of legacy action-based contribution items.
-	 * 
-	 * @since 3.1
-	 */
-	public static interface IActiveChecker {
-		/**
-		 * Checks whether the command with the given identifier should be
-		 * considered active. This can be used in systems using some kind of
-		 * user interface filtering (e.g., activities in the Eclipse workbench).
-		 * 
-		 * @param commandId
-		 *            The identifier for the command; must not be
-		 *            <code>null</code>
-		 * @return <code>true</code> if the command is active;
-		 *         <code>false</code> otherwise.
-		 */
-		public boolean isActive(String commandId);
-	}
-
-	/**
-	 * <p>
-	 * A callback which communicates with the applications binding manager. This
-	 * interface provides more information from the binding manager, which
-	 * allows greater integration. Implementing this interface is preferred over
-	 * {@link ExternalActionManager.ICallback}.
-	 * </p>
-	 * <p>
-	 * Clients may implement this interface, but must not extend.
-	 * </p>
-	 * 
-	 * @since 3.2
-	 */
-	public static interface IBindingManagerCallback extends ICallback {
-
-		/**
-		 * <p>
-		 * Returns the active bindings for a particular command identifier.
-		 * </p>
-		 * 
-		 * @param commandId
-		 *            The identifier of the command whose bindings are
-		 *            requested. This argument may be <code>null</code>. It
-		 *            is assumed that the command has no parameters.
-		 * @return The array of active triggers (<code>TriggerSequence</code>)
-		 *         for a particular command identifier. This value is guaranteed
-		 *         not to be <code>null</code>, but it may be empty.
-		 */
-		public TriggerSequence[] getActiveBindingsFor(String commandId);
-	}
-	
-	/**
-	 * An overridable mechanism to filter certain IActions from the execution
-	 * bridge.
-	 * 
-	 * @since 3.4
-	 */
-	public static interface IExecuteApplicable {
-		/**
-		 * Allow the callback to filter out actions that should not fire
-		 * execution events.
-		 * 
-		 * @param action
-		 *            The action with an actionDefinitionId
-		 * @return true if this action should be considered.
-		 */
-		public boolean isApplicable(IAction action);
-	}
-	
-	/**
-	 * <p>
-	 * A callback for executing execution events. Allows
-	 * <code>ActionContributionItems</code> to fire useful events.
-	 * </p>
-	 * <p>
-	 * Clients must not implement this interface and must not extend.
-	 * </p>
-	 * 
-	 * @since 3.4
-	 * 
-	 */
-	public static interface IExecuteCallback {
-		
-		/**
-		 * Fires a <code>NotEnabledException</code> because the action was not
-		 * enabled.
-		 * 
-		 * @param action
-		 * 			The action contribution that caused the exception,
-		 * 			never <code>null</code>.
-		 * @param exception
-		 * 			The <code>NotEnabledException</code>, never <code>null</code>.
-		 */
-		public void notEnabled(IAction action, NotEnabledException exception);
-
-		/**
-		 * Fires a <code>NotDefinedException</code> because the action was not
-		 * defined.
-		 * 
-		 * @param action
-		 * 			The action contribution that caused the exception,
-		 * 			never <code>null</code>.
-		 * @param exception
-		 * 			The <code>NotDefinedException</code>, never <code>null</code>.
-		 */
-		public void notDefined(IAction action, NotDefinedException exception);
-		
-		/**
-		 * Fires an execution event before an action is run.
-		 * 
-		 * @param action
-		 *            The action contribution that requires an
-		 *            execution event to be fired. Cannot be <code>null</code>.
-		 * @param e
-		 *            The SWT Event, may be <code>null</code>.
-		 * 
-		 */
-		public void preExecute(IAction action,
-				Event e);
-		
-		/**
-		 * Fires an execution event when the action returned a success.
-		 * 
-		 * @param action
-		 *            The action contribution that requires an
-		 *            execution event to be fired. Cannot be <code>null</code>.
-		 * @param returnValue
-		 *            The command's result, may be <code>null</code>.
-		 * 
-		 */
-		public void postExecuteSuccess(IAction action,
-				Object returnValue);
-		
-		/**
-		 * Creates an <code>ExecutionException</code> when the action returned
-		 * a failure.
-		 * 
-		 * @param action
-		 * 			The action contribution that caused the exception,
-		 * 			never <code>null</code>.
-		 * @param exception
-		 * 			The <code>ExecutionException</code>, never <code>null</code>.
-		 */
-		public void postExecuteFailure(IAction action,
-				ExecutionException exception);
-	}
-
-	/**
-	 * A callback mechanism for some external tool to communicate extra
-	 * information to actions and action contribution items.
-	 * 
-	 * @since 3.0
-	 */
-	public static interface ICallback {
-
-		/**
-		 * <p>
-		 * Adds a listener to the object referenced by <code>identifier</code>.
-		 * This listener will be notified if a property of the item is to be
-		 * changed. This identifier is specific to mechanism being used. In the
-		 * case of the Eclipse workbench, this is the command identifier.
-		 * </p>
-		 * <p>
-		 * Has no effect if an identical listener has already been added for
-		 * the <code>identifier</code>.
-		 * </p>
-		 * 
-		 * @param identifier
-		 *            The identifier of the item to which the listener should be
-		 *            attached; must not be <code>null</code>.
-		 * @param listener
-		 *            The listener to be added; must not be <code>null</code>.
-		 */
-		public void addPropertyChangeListener(String identifier,
-				IPropertyChangeListener listener);
-
-		/**
-		 * An accessor for the accelerator associated with the item indicated by
-		 * the identifier. This identifier is specific to mechanism being used.
-		 * In the case of the Eclipse workbench, this is the command identifier.
-		 * 
-		 * @param identifier
-		 *            The identifier of the item from which the accelerator
-		 *            should be obtained ; must not be <code>null</code>.
-		 * @return An integer representation of the accelerator. This is the
-		 *         same accelerator format used by SWT.
-		 */
-		public Integer getAccelerator(String identifier);
-
-		/**
-		 * An accessor for the accelerator text associated with the item
-		 * indicated by the identifier. This identifier is specific to mechanism
-		 * being used. In the case of the Eclipse workbench, this is the command
-		 * identifier.
-		 * 
-		 * @param identifier
-		 *            The identifier of the item from which the accelerator text
-		 *            should be obtained ; must not be <code>null</code>.
-		 * @return A string representation of the accelerator. This is the
-		 *         string representation that should be displayed to the user.
-		 */
-		public String getAcceleratorText(String identifier);
-
-		/**
-		 * Checks to see whether the given accelerator is being used by some
-		 * other mechanism (outside of the menus controlled by JFace). This is
-		 * used to keep JFace from trying to grab accelerators away from someone
-		 * else.
-		 * 
-		 * @param accelerator
-		 *            The accelerator to check -- in SWT's internal accelerator
-		 *            format.
-		 * @return <code>true</code> if the accelerator is already being used
-		 *         and shouldn't be used again; <code>false</code> otherwise.
-		 */
-		public boolean isAcceleratorInUse(int accelerator);
-
-		/**
-		 * Checks whether the item matching this identifier is active. This is
-		 * used to decide whether a contribution item with this identifier
-		 * should be made visible. An inactive item is not visible.
-		 * 
-		 * @param identifier
-		 *            The identifier of the item from which the active state
-		 *            should be retrieved; must not be <code>null</code>.
-		 * @return <code>true</code> if the item is active; <code>false</code>
-		 *         otherwise.
-		 */
-		public boolean isActive(String identifier);
-
-		/**
-		 * Removes a listener from the object referenced by
-		 * <code>identifier</code>. This identifier is specific to mechanism
-		 * being used. In the case of the Eclipse workbench, this is the command
-		 * identifier.
-		 * 
-		 * @param identifier
-		 *            The identifier of the item to from the listener should be
-		 *            removed; must not be <code>null</code>.
-		 * @param listener
-		 *            The listener to be removed; must not be <code>null</code>.
-		 */
-		public void removePropertyChangeListener(String identifier,
-				IPropertyChangeListener listener);
-
-	}
-
-	/**
-	 * The singleton instance of this class. This value may be <code>null</code>--
-	 * if it has not yet been initialized.
-	 */
-	private static ExternalActionManager instance;
-
-	/**
-	 * Retrieves the current singleton instance of this class.
-	 * 
-	 * @return The singleton instance; this value is never <code>null</code>.
-	 */
-	public static ExternalActionManager getInstance() {
-		if (instance == null) {
-			instance = new ExternalActionManager();
-		}
-
-		return instance;
-	}
-
-	/**
-	 * The callback mechanism to use to retrieve extra information.
-	 */
-	private ICallback callback;
-
-	/**
-	 * Constructs a new instance of <code>ExternalActionManager</code>.
-	 */
-	private ExternalActionManager() {
-		// This is a singleton class. Only this class should create an instance.
-	}
-
-	/**
-	 * An accessor for the current call back.
-	 * 
-	 * @return The current callback mechanism being used. This is the callback
-	 *         that should be queried for extra information about actions and
-	 *         action contribution items. This value may be <code>null</code>
-	 *         if there is no extra information.
-	 */
-	public ICallback getCallback() {
-		return callback;
-	}
-
-	/**
-	 * A mutator for the current call back
-	 * 
-	 * @param callbackToUse
-	 *            The new callback mechanism to use; this value may be
-	 *            <code>null</code> if the default is acceptable (i.e., no
-	 *            extra information will provided to actions).
-	 */
-	public void setCallback(ICallback callbackToUse) {
-		callback = callbackToUse;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.properties
deleted file mode 100644
index 6e9b96e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ExternalActionManager.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-undefinedCommand.WarningMessage = The command ("{0}") is undefined
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/GroupMarker.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/GroupMarker.java
deleted file mode 100644
index 6f86d22..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/GroupMarker.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * A group marker is a special kind of contribution item denoting
- * the beginning of a group. These groups are used to structure
- * the list of items. Unlike regular contribution items and
- * separators, group markers have no visual representation.
- * The name of the group is synonymous with the contribution item id.
- * <p>
- * This class may be instantiated; it is not intended to be 
- * subclassed outside the framework.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class GroupMarker extends AbstractGroupMarker {
-    /**
-     * Create a new group marker with the given name.
-     * The group name must not be <code>null</code> or the empty string.
-     * The group name is also used as the item id.
-     * 
-     * @param groupName the name of the group
-     */
-    public GroupMarker(String groupName) {
-        super(groupName);
-    }
-
-    /**
-     * The <code>GroupMarker</code> implementation of this method
-     * returns <code>false</code> since group markers are always invisible.
-     */
-    public boolean isVisible() {
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IAction.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IAction.java
deleted file mode 100644
index 4e1a6b1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IAction.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.commands.IHandlerAttributes;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * An action represents the non-UI side of a command which can be triggered
- * by the end user. Actions are typically associated with buttons, menu items,
- * and items in tool bars. The controls for a command are built by some container,
- * which furnished the context where these controls appear and configures 
- * them with data from properties declared by the action. When the end user
- * triggers the command via its control, the action's <code>run</code>
- * method is invoked to do the real work.
- * <p>
- * Actions support a predefined set of properties (and possibly others as well).
- * Clients of an action may register property change listeners so that they get 
- * notified whenever the value of a property changes.
- * </p>
- * <p>
- * Clients should subclass the abstract base class <code>Action</code> to define 
- * concrete actions rather than implementing <code>IAction</code> from scratch.
- * </p>
- * <p>
- * This interface exists only to define the API for actions.
- * It is not intended to be implemented by clients.
- * </p>
- * 
- * @see Action
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IAction {
-
-    /**
-     * Action style constant (value <code>0</code>) indicating action style 
-     * is not specified yet. By default, the action will assume a push button
-     * style. If <code>setChecked</code> is called, then the style will change
-     * to a check box, or if <code>setMenuCreator</code> is called, then the
-     * style will change to a drop down menu.
-     * 
-     * @since 2.1
-     */
-    public static int AS_UNSPECIFIED = 0x00;
-
-    /**
-     * Action style constant (value <code>1</code>) indicating action is 
-     * a simple push button.
-     */
-    public static int AS_PUSH_BUTTON = 0x01;
-
-    /**
-     * Action style constant (value <code>2</code>) indicating action is 
-     * a check box (or a toggle button).
-     */
-    public static int AS_CHECK_BOX = 0x02;
-
-    /**
-     * Action style constant (value <code>4</code>) indicating action is 
-     * a drop down menu.
-     */
-    public static int AS_DROP_DOWN_MENU = 0x04;
-
-    /**
-     * Action style constant (value <code>8</code>) indicating action is 
-     * a radio button.
-     * 
-     * @since 2.1
-     */
-    public static int AS_RADIO_BUTTON = 0x08;
-
-    /**
-     * Property name of an action's text (value <code>"text"</code>).
-     */
-    public static final String TEXT = "text"; //$NON-NLS-1$
-
-    /**
-     * Property name of an action's enabled state
-     * (value <code>"enabled"</code>).
-     */
-    public static final String ENABLED = "enabled"; //$NON-NLS-1$
-
-    /**
-     * Property name of an action's image (value <code>"image"</code>).
-     */
-    public static final String IMAGE = "image"; //$NON-NLS-1$
-
-    /**
-     * Property name of an action's tooltip text (value <code>"toolTipText"</code>).
-     */
-    public static final String TOOL_TIP_TEXT = "toolTipText"; //$NON-NLS-1$
-
-    /**
-     * Property name of an action's description (value <code>"description"</code>).
-     * Typically the description is shown as a (longer) help text in the status line.
-     */
-    public static final String DESCRIPTION = "description"; //$NON-NLS-1$
-
-    /**
-     * Property name of an action's checked status (value
-     * <code>"checked"</code>). Applicable when the style is
-     * <code>AS_CHECK_BOX</code> or <code>AS_RADIO_BUTTON</code>.
-     */
-    public static final String CHECKED = "checked"; //$NON-NLS-1$
-
-    /**
-     * Property name of an action's success/fail result
-     * (value <code>"result"</code>). The values are
-     * <code>Boolean.TRUE</code> if running the action succeeded and 
-     * <code>Boolean.FALSE</code> if running the action failed or did not
-     * complete.
-     * <p>
-     * Not all actions report whether they succeed or fail. This property
-     * is provided for use by actions that may be invoked by clients that can
-     * take advantage of this information when present (for example, actions
-     * used in cheat sheets). Clients should always assume that running the
-     * action succeeded in the absence of notification to the contrary. 
-     * </p>
-     * 
-     * @since 3.0
-     */
-    public static final String RESULT = "result"; //$NON-NLS-1$
-    
-    /**
-     * Property name of an action's handler. Some actions delegate some or all
-     * of their behaviour or state to another object. In this case, if the
-     * object to which behaviour has been delegated changes, then a property
-     * change event should be sent with this name.
-     * 
-     * This is used to support backward compatibility of actions within the
-     * commands framework.
-     * 
-     * @since 3.1
-     */
-	public static final String HANDLED = IHandlerAttributes.ATTRIBUTE_HANDLED;
-
-    /**
-     * Adds a property change listener to this action.
-     * Has no effect if an identical listener is already registered.
-     *
-     * @param listener a property change listener
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Returns the accelerator keycode for this action.
-     * The result is the bit-wise OR of zero or more modifier masks
-     * and a key, as explained in <code>MenuItem.getAccelerator</code>.
-     *
-     * @return the accelerator keycode
-     * @see org.eclipse.swt.widgets.MenuItem#getAccelerator()
-     */
-    public int getAccelerator();
-
-    /**
-     * Returns the action definition id of this action.
-     * 
-     * @return the action definition id of this action, or
-     * <code>null</code> if none
-     * @since 2.0
-     */
-    public String getActionDefinitionId();
-
-    /**
-     * Returns the action's description if it has one.
-     * Otherwise it returns <code>getToolTipText()</code>.
-     * 
-     * @return a description for the action; may be <code>null</code> 
-     */
-    public String getDescription();
-
-    /**
-     * Returns the disabled image for this action as an image descriptor.
-     * <p>
-     * This method is associated with the <code>IMAGE</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return the image, or <code>null</code> if this action has no image
-     * @see #IMAGE
-     */
-    public ImageDescriptor getDisabledImageDescriptor();
-
-    /**
-     * Returns a help listener for this action. 
-     *
-     * @return a help listener for this action
-     */
-    public HelpListener getHelpListener();
-
-    /**
-     * Returns the hover image for this action as an image descriptor.
-     * <p>
-     * Hover images will be used on platforms that support changing the image
-     * when the user hovers over the item. This method is associated with 
-     * the <code>IMAGE</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return the image, or <code>null</code> if this action has no image
-     * @see #IMAGE
-     */
-    public ImageDescriptor getHoverImageDescriptor();
-
-    /**
-     * Returns a unique identifier for this action, or <code>null</code> if it has
-     * none.
-     *
-     * @return the action id, or <code>null</code> if none
-     */
-    public String getId();
-
-    /**
-     * Returns the image for this action as an image descriptor.
-     * <p>
-     * This method is associated with the <code>IMAGE</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return the image, or <code>null</code> if this action has no image
-     * @see #IMAGE
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns the menu creator for this action.
-     *
-     * @return the menu creator, or <code>null</code> if none
-     */
-    public IMenuCreator getMenuCreator();
-
-    /**
-     * Return this action's style.
-     *
-     * @return one of <code>AS_PUSH_BUTTON</code>, <code>AS_CHECK_BOX</code>,
-     * <code>AS_RADIO_BUTTON</code> and <code>AS_DROP_DOWN_MENU</code>.
-     */
-    public int getStyle();
-
-    /**
-     * Returns the text for this action.
-     * <p>
-     * This method is associated with the <code>TEXT</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return the text, or <code>null</code> if none
-     * @see #TEXT
-     */
-    public String getText();
-
-    /**
-     * Returns the tool tip text for this action.
-     * <p>
-     * This method is associated with the <code>TOOL_TIP_TEXT</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return the tool tip text, or <code>null</code> if none
-     * @see #TOOL_TIP_TEXT
-     */
-    public String getToolTipText();
-
-    /**
-     * Returns the checked status of this action. Applicable only if the style is
-     * <code>AS_CHECK_BOX</code> or <code>AS_RADIO_BUTTON</code>.
-     * <p>
-     * This method is associated with the <code>CHECKED</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return the checked status
-     * @see #CHECKED
-     */
-    public boolean isChecked();
-
-    /**
-     * Returns whether this action is enabled.
-     * <p>
-     * This method is associated with the <code>ENABLED</code> property;
-     * property change events are reported when its value changes.
-     * </p>
-     *
-     * @return <code>true</code> if enabled, and
-     *   <code>false</code> if disabled
-     * @see #ENABLED
-     */
-    public boolean isEnabled();
-
-    /**
-	 * Returns whether this action is handled. In the default case, this is
-	 * always <code>true</code>. However, if the action delegates some of its
-	 * behaviour to some other object, then this method should answer whether
-	 * such an object is currently available.
-	 * 
-	 * @return <code>true</code> if all of the action's behaviour is
-	 *         available; <code>false</code> otherwise.
-	 * @since 3.1
-	 */
-	public boolean isHandled();
-
-    /**
-     * Removes the given listener from this action.
-     * Has no effect if an identical listener is not registered.
-     *
-     * @param listener a property change listener
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Runs this action.
-     * Each action implementation must define the steps needed to carry out this action.
-     * The default implementation of this method in <code>Action</code>
-     * does nothing.
-     */
-    public void run();
-
-    /**
-     * Runs this action, passing the triggering SWT event.
-     * As of 2.0, <code>ActionContributionItem</code> calls this method
-     * instead of <code>run()</code>.  
-     * The default implementation of this method in <code>Action</code>
-     * simply calls <code>run()</code> for backwards compatibility.
-     * 
-     * @param event the SWT event which triggered this action being run 
-     * @since 2.0
-     */
-    public void runWithEvent(Event event);
-
-    /**
-     * Sets the action definition id of this action.
-     * 
-     * @param id the action definition id
-     * @since 2.0
-     */
-    public void setActionDefinitionId(String id);
-
-    /**
-     * Sets the checked status of this action. Applicable for the styles
-     * <code>AS_CHECK_BOX</code> or <code>AS_RADIO_BUTTON</code>.
-     * <p>
-     * Fires a property change event for the <code>CHECKED</code> property
-     * if the checked status actually changes as a consequence.
-     * </p>
-     *
-     * @param checked the new checked status
-     * @see #CHECKED
-     */
-    public void setChecked(boolean checked);
-
-    /**
-     * Sets this action's description.
-     * Typically the description is shown as a (longer) help text in the status line.
-     * <p>
-     * Fires a property change event for the <code>DESCRIPTION</code> property
-     * if the description actually changes as a consequence.
-     * </p>
-     *
-     * @param text the description, or <code>null</code> to clear the description
-     * @see #DESCRIPTION
-     */
-    public void setDescription(String text);
-
-    /**
-     * Sets the disabled image for this action, as an image descriptor.
-     * <p>
-     * Disabled images will be used on platforms that support changing the image
-     * when the item is disabled.Fires a property change event for 
-     * the <code>IMAGE</code> property
-     * if the image actually changes as a consequence.
-     * </p>
-     *
-     * @param newImage the image, or <code>null</code> if this 
-     *   action should not have an image
-     * @see #IMAGE
-     */
-    public void setDisabledImageDescriptor(ImageDescriptor newImage);
-
-    /**
-     * Sets the enabled state of this action.
-     * <p>
-     * When an action is in the enabled state, the control associated with 
-     * it is active; triggering it will end up inkoking this action's 
-     * <code>run</code> method.
-     * </p>
-     * <p>
-     * Fires a property change event for the <code>ENABLED</code> property
-     * if the enabled state actually changes as a consequence.
-     * </p>
-     *
-     * @param enabled <code>true</code> to enable, and
-     *   <code>false</code> to disable
-     * @see #ENABLED
-     */
-    public void setEnabled(boolean enabled);
-
-    /**
-     * Sets a help listener for this action. 
-     *
-     * @param listener a help listener for this action
-     */
-    public void setHelpListener(HelpListener listener);
-
-    /**
-     * Sets the hover image for this action, as an image descriptor.
-     * <p>
-     * Hover images will be used on platforms that support changing the image
-     * when the user hovers over the item.Fires a property change event for 
-     * the <code>IMAGE</code> property
-     * if the image actually changes as a consequence.
-     * </p>
-     *
-     * @param newImage the image, or <code>null</code> if this 
-     *   action should not have an image
-     * @see #IMAGE
-     */
-    public void setHoverImageDescriptor(ImageDescriptor newImage);
-
-    /**
-     * Sets the unique identifier for this action. This is used to identify actions
-     * when added to a contribution manager.
-     * It should be set when the action is created.  It should not be modified once
-     * the action is part of an action contribution item.
-     *
-     * @param id the action id
-     *
-     * @see ActionContributionItem
-     * @see IContributionItem#getId
-     */
-    public void setId(String id);
-
-    /**
-     * Sets the image for this action, as an image descriptor.
-     * <p>
-     * Fires a property change event for the <code>IMAGE</code> property
-     * if the image actually changes as a consequence.
-     * </p>
-     *
-     * @param newImage the image, or <code>null</code> if this 
-     *   action should not have an image
-     * @see #IMAGE
-     */
-    public void setImageDescriptor(ImageDescriptor newImage);
-
-    /**
-     * Sets the menu creator for this action. Applicable for style
-     * <code>AS_DROP_DOWN_MENU</code>.
-     *
-     * @param creator the menu creator, or <code>null</code> if none
-     */
-    public void setMenuCreator(IMenuCreator creator);
-
-    /**
-     * Sets the text for this action.
-     * <p>
-     * An accelerator specification may follow the actual text, separated from it by
-     * an '@' or a '\t' character.  An accelerator specification consists of zero or more 
-     * modifier tokens followed by a key code token.  The tokens are separated by a '+' character.
-     * </p>
-     * <p>
-     * Fires a property change event for the <code>TEXT</code> property
-     * if the text actually changes as a consequence.
-     * </p>
-     *
-     * @param text the text, or <code>null</code> if none
-     * @see #TEXT
-     * @see Action#findModifier
-     * @see Action#findKeyCode
-     */
-    public void setText(String text);
-
-    /**
-     * Sets the tool tip text for this action.
-     * <p>
-     * Fires a property change event for the <code>TOOL_TIP_TEXT</code> property
-     * if the tool tip text actually changes as a consequence.
-     * </p>
-     *
-     * @param text the tool tip text, or <code>null</code> if none
-     * @see #TOOL_TIP_TEXT
-     */
-    public void setToolTipText(String text);
-
-    /**
-     * <p>
-     * Sets the accelerator keycode that this action maps to. This is a bitwise OR
-     * of zero or more SWT key modifier masks (i.e. SWT.CTRL or SWT.ALT) and a
-     * character code. For example, for Ctrl+Z, use <code>SWT.CTRL | 'Z'</code>.
-     * Use 0 for no accelerator.
-     * </p>
-     * <p>
-     * This method should no longer be used for actions in the Eclipse workbench.
-     * <code>IWorkbenchCommandSupport</code> and
-     * <code>IWorkbenchContextSupport</code> provide all the functionality
-     * required for key bindings. If you set an accelerator using this method, then
-     * it will not work in the workbench if it conflicts any existing key binding,
-     * or if there is a different key binding defined for this action's definition
-     * id. The definition id should be used instead -- referring to the command in
-     * the workbench from which the key binding should be retrieved.
-     * </p>
-     * 
-     * @param keycode
-     *            the keycode to be accepted.
-     */
-    public void setAccelerator(int keycode);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionItem.java
deleted file mode 100644
index d34ccc0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionItem.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * A contribution item represents a contribution to a shared UI resource such as a
- * menu or tool bar. More generally, contribution items are managed by a contribution
- * manager.
- * For instance, in a tool bar a contribution item is a tool bar button or a separator.
- * In a menu bar a contribution item is a menu, and in a menu a contribution item 
- * is a menu item or separator.
- * <p>
- * A contribution item can realize itself in different SWT widgets, using the different 
- * <code>fill</code> methods.  The same type of contribution item can be used with a 
- * <code>MenuBarManager</code>, <code>ToolBarManager</code>, <code>CoolBarManager</code>, 
- * </code>or a <code>StatusLineManager</code>.
- * </p>
- * <p>
- * This interface is internal to the framework; it should not be implemented outside
- * the framework.
- * </p>
- *
- * @see IContributionManager
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IContributionItem {
-
-    /**
-     * Disposes of this contribution item. Called by the parent
-     * contribution manager when the manager is being disposed.
-     * Clients should not call this method directly, unless they
-     * have removed this contribution item from the containing
-     * IContributionManager before the contribution lifecycle
-     * has ended.
-     * 
-     * @since 2.1
-     */
-    public void dispose();
-
-    /**
-     * Fills the given composite control with controls representing this 
-     * contribution item.  Used by <code>StatusLineManager</code>.
-     *
-     * @param parent the parent control
-     */
-    public void fill(Composite parent);
-
-    /**
-     * Fills the given menu with controls representing this contribution item.
-     * Used by <code>MenuManager</code>.
-     *
-     * @param parent the parent menu
-     * @param index the index where the controls are inserted,
-     *   or <code>-1</code> to insert at the end
-     */
-    public void fill(Menu parent, int index);
-
-    /**
-     * Fills the given tool bar with controls representing this contribution item.
-     * Used by <code>ToolBarManager</code>.
-     *
-     * @param parent the parent tool bar
-     * @param index the index where the controls are inserted,
-     *   or <code>-1</code> to insert at the end
-     */
-    public void fill(ToolBar parent, int index);
-
-    /**
-     * Fills the given cool bar with controls representing this contribution item.
-     * Used by <code>CoolBarManager</code>.
-     *
-     * @param parent the parent cool bar
-     * @param index the index where the controls are inserted,
-     *   or <code>-1</code> to insert at the end
-     * @since 3.0
-     */
-    public void fill(CoolBar parent, int index);
-
-    /**
-     * Returns the identifier of this contribution item.
-     * The id is used for retrieving an item from its manager.
-     *
-     * @return the contribution item identifier, or <code>null</code>
-     *   if none
-     */
-    public String getId();
-
-    /**
-     * Returns whether this contribution item is enabled.
-     * 
-     * @return <code>true</code> if this item is enabled
-     */
-    public boolean isEnabled();
-
-    /**
-     * Returns whether this contribution item is dirty. A dirty item will be
-     * recreated when the action bar is updated.
-     * 
-     * @return <code>true</code> if this item is dirty
-     */
-    public boolean isDirty();
-
-    /**
-     * Returns whether this contribution item is dynamic. A dynamic contribution
-     * item contributes items conditionally, dependent on some internal state.
-     *
-     * @return <code>true</code> if this item is dynamic, and
-     *  <code>false</code> for normal items
-     */
-    public boolean isDynamic();
-
-    /**
-     * Returns whether this contribution item is a group marker.
-     * This information is used when adding items to a group.
-     *
-     * @return <code>true</code> if this item is a group marker, and
-     *  <code>false</code> for normal items
-     *
-     * @see GroupMarker
-     * @see IContributionManager#appendToGroup(String, IContributionItem)
-     * @see IContributionManager#prependToGroup(String, IContributionItem)
-     */
-    public boolean isGroupMarker();
-
-    /**
-     * Returns whether this contribution item is a separator.
-     * This information is used to enable hiding of unnecessary separators.
-     *
-     * @return <code>true</code> if this item is a separator, and
-     *  <code>false</code> for normal items
-     * @see Separator
-     */
-    public boolean isSeparator();
-
-    /**
-     * Returns whether this contribution item is visibile within its manager.
-     *
-     * @return <code>true</code> if this item is visible, and
-     *  <code>false</code> otherwise
-     */
-    public boolean isVisible();
-
-    /**
-     * Saves any state information of the control(s) owned by this contribution item.
-     * The contribution manager calls this method before disposing of the controls.
-     * 
-     * @since 3.0
-     */
-    public void saveWidgetState();
-
-    /**
-     * Sets the parent manager of this item
-     * 
-     * @param parent the parent contribution manager
-     * @since 2.0
-     */
-    public void setParent(IContributionManager parent);
-
-    /**
-     * Sets whether this contribution item is visibile within its manager.
-     *
-     * @param visible <code>true</code> if this item should be visible, and
-     *  <code>false</code> otherwise
-     */
-    public void setVisible(boolean visible);
-
-    /**
-     * Updates any SWT controls cached by this contribution item with any
-     * changes which have been made to this contribution item since the last update.
-     * Called by contribution manager update methods.
-     */
-    public void update();
-
-    /**
-     * Updates any SWT controls cached by this contribution item with changes
-     * for the the given property. 
-     * 
-     * @param id the id of the changed property
-     * @since 2.0
-     */
-    public void update(String id);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManager.java
deleted file mode 100644
index e63cf89..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManager.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * A contribution manager organizes contributions to such UI components
- * as menus, toolbars and status lines.
- * <p>
- * A contribution manager keeps track of a list of contribution
- * items. Each contribution item may has an optional identifier, which can be used
- * to retrieve items from a manager, and for positioning items relative to
- * each other. The list of contribution items can be subdivided into named groups 
- * using special contribution items that serve as group markers.
- * </p>
- * <p>
- * The <code>IContributionManager</code> interface provides general
- * protocol for adding, removing, and retrieving contribution items.
- * It also provides convenience methods that make it convenient
- * to contribute actions. This interface should be implemented
- * by all objects that wish to manage contributions.
- * </p>
- * <p>
- * There are several implementions of this interface in this package,
- * including ones for menus ({@link MenuManager <code>MenuManager</code>}),
- * tool bars ({@link ToolBarManager <code>ToolBarManager</code>}),
- * and status lines ({@link StatusLineManager <code>StatusLineManager</code>}).
- * </p>
- */
-public interface IContributionManager {
-    /**
-     * Adds an action as a contribution item to this manager.
-     * Equivalent to <code>add(new ActionContributionItem(action))</code>.
-     *
-     * @param action the action, this cannot be <code>null</code>
-     */
-    public void add(IAction action);
-
-    /**
-     * Adds a contribution item to this manager.
-     *
-     * @param item the contribution item, this cannot be <code>null</code>
-     */
-    public void add(IContributionItem item);
-
-    /**
-     * Adds a contribution item for the given action at the end of the group
-     * with the given name.
-     * Equivalent to
-     * <code>appendToGroup(groupName,new ActionContributionItem(action))</code>.
-     *
-     * @param groupName the name of the group
-     * @param action the action
-     * @exception IllegalArgumentException if there is no group with
-     *   the given name
-     */
-    public void appendToGroup(String groupName, IAction action);
-
-    /**
-     * Adds a contribution item to this manager at the end of the group
-     * with the given name.
-     *
-     * @param groupName the name of the group
-     * @param item the contribution item
-     * @exception IllegalArgumentException if there is no group with
-     *   the given name
-     */
-    public void appendToGroup(String groupName, IContributionItem item);
-
-    /**
-     * Finds the contribution item with the given id.
-     *
-     * @param id the contribution item id
-     * @return the contribution item, or <code>null</code> if
-     *   no item with the given id can be found
-     */
-    public IContributionItem find(String id);
-
-    /**
-     * Returns all contribution items known to this manager.
-     *
-     * @return a list of contribution items
-     */
-    public IContributionItem[] getItems();
-
-    /**
-     * Returns the overrides for the items of this manager.
-     * 
-     * @return the overrides for the items of this manager
-     * @since 2.0 
-     */
-    public IContributionManagerOverrides getOverrides();
-
-    /**
-     * Inserts a contribution item for the given action after the item 
-     * with the given id.
-     * Equivalent to
-     * <code>insertAfter(id,new ActionContributionItem(action))</code>.
-     *
-     * @param id the contribution item id
-     * @param action the action to insert
-     * @exception IllegalArgumentException if there is no item with
-     *   the given id
-     */
-    public void insertAfter(String id, IAction action);
-
-    /**
-     * Inserts a contribution item after the item with the given id.
-     *
-     * @param id the contribution item id
-     * @param item the contribution item to insert
-     * @exception IllegalArgumentException if there is no item with
-     *   the given id
-     */
-    public void insertAfter(String id, IContributionItem item);
-
-    /**
-     * Inserts a contribution item for the given action before the item 
-     * with the given id.
-     * Equivalent to
-     * <code>insertBefore(id,new ActionContributionItem(action))</code>.
-     *
-     * @param id the contribution item id
-     * @param action the action to insert
-     * @exception IllegalArgumentException if there is no item with
-     *   the given id
-     */
-    public void insertBefore(String id, IAction action);
-
-    /**
-     * Inserts a contribution item before the item with the given id.
-     *
-     * @param id the contribution item id
-     * @param item the contribution item to insert
-     * @exception IllegalArgumentException if there is no item with
-     *   the given id
-     */
-    public void insertBefore(String id, IContributionItem item);
-
-    /**
-     * Returns whether the list of contributions has recently changed and
-     * has yet to be reflected in the corresponding widgets.
-     *
-     * @return <code>true</code> if this manager is dirty, and <code>false</code>
-     *   if it is up-to-date
-     */
-    public boolean isDirty();
-
-    /**
-     * Returns whether this manager has any contribution items.
-     *
-     * @return <code>true</code> if there are no items, and
-     *   <code>false</code> otherwise
-     */
-    public boolean isEmpty();
-
-    /**
-     * Marks this contribution manager as dirty.
-     */
-    public void markDirty();
-
-    /**
-     * Adds a contribution item for the given action at the beginning of the 
-     * group with the given name.
-     * Equivalent to
-     * <code>prependToGroup(groupName,new ActionContributionItem(action))</code>.
-     *
-     * @param groupName the name of the group
-     * @param action the action
-     * @exception IllegalArgumentException if there is no group with
-     *   the given name
-     */
-    public void prependToGroup(String groupName, IAction action);
-
-    /**
-     * Adds a contribution item to this manager at the beginning of the 
-     * group with the given name.
-     *
-     * @param groupName the name of the group
-     * @param item the contribution item
-     * @exception IllegalArgumentException if there is no group with
-     *   the given name
-     */
-    public void prependToGroup(String groupName, IContributionItem item);
-
-    /**
-     * Removes and returns the contribution item with the given id from this manager.  
-     * Returns <code>null</code> if this manager has no contribution items
-     * with the given id.
-     *
-     * @param id the contribution item id
-     * @return the item that was found and removed, or <code>null</code> if none
-     */
-    public IContributionItem remove(String id);
-
-    /**
-     * Removes the given contribution item from the contribution items
-     * known to this manager.
-     *
-     * @param item the contribution item
-     * @return the <code>item</code> parameter if the item was removed,
-     *   and <code>null</code> if it was not found
-     */
-    public IContributionItem remove(IContributionItem item);
-
-    /**
-     * Removes all contribution items from this manager.
-     */
-    public void removeAll();
-
-    /**
-     * Updates this manager's underlying widget(s) with any changes which
-     * have been made to it or its items.  Normally changes to a contribution
-     * manager merely mark it as dirty, without updating the underlying widgets.
-     * This brings the underlying widgets up to date with any changes.
-     *
-     * @param force <code>true</code> means update even if not dirty,
-     *   and <code>false</code> for normal incremental updating
-     */
-    public void update(boolean force);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManagerOverrides.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManagerOverrides.java
deleted file mode 100644
index 886cc7c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IContributionManagerOverrides.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * This interface is used by instances of <code>IContributionItem</code>
- * to determine if the values for certain properties have been overriden
- * by their manager.
- * <p>
- * This interface is internal to the framework; it should not be implemented outside
- * the framework.
- * </p>
- * 
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IContributionManagerOverrides {
-    /**
-     * Id for the enabled property. Value is <code>"enabled"</code>.
-     * 
-     * @since 2.0
-     */
-    public final static String P_ENABLED = "enabled"; //$NON-NLS-1$
-
-    /**
-     * Find out the enablement of the item
-     * @param item the contribution item for which the enable override value is 
-     * determined
-     * @return <ul>
-     * 				<li><code>Boolean.TRUE</code> if the given contribution item should be enabled</li>
-     * 				<li><code>Boolean.FALSE</code> if the item should be disabled</li>
-     * 				<li><code>null</code> if the item may determine its own enablement</li>
-     * 			</ul>
-     * @since 2.0 
-     */
-    public Boolean getEnabled(IContributionItem item);
-
-    /**
-     * This is not intended to be called outside of the workbench. This method
-     * is intended to be deprecated in 3.1.
-     * 
-     * TODO deprecate for 3.1 
-     * @param item the contribution item for which the accelerator value is determined
-     * @return the accelerator
-     */
-    public Integer getAccelerator(IContributionItem item);
-
-    /**
-     * This is not intended to be called outside of the workbench. This method
-     * is intended to be deprecated in 3.1.
-     * 
-     * TODO deprecate for 3.1
-     * @param item the contribution item for which the accelerator text is determined
-     * @return the text for the accelerator
-     */
-    public String getAcceleratorText(IContributionItem item);
-
-    /**
-     * This is not intended to be called outside of the workbench. This method
-     * is intended to be deprecated in 3.1.
-     * 
-     * TODO deprecate for 3.1
-     * @param item the contribution item for which the text is determined
-     * @return the text
-     */
-    public String getText(IContributionItem item);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ICoolBarManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ICoolBarManager.java
deleted file mode 100644
index 85173e7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ICoolBarManager.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.widgets.CoolBar;
-
-/**
- * The <code>ICoolBarManager</code> interface provides protocol for managing
- * contributions to a cool bar. A cool bar manager delegates responsibility for
- * creating child controls to its contribution items by calling
- * {@link IContributionItem#fill(CoolBar, int)}.
- * <p>
- * This interface is internal to the framework; it should not be implemented
- * outside the framework. This package provides a concrete cool bar manager
- * implementation, {@link CoolBarManager}, which
- * clients may instantiate or subclass.
- * </p>
- * 
- * @see ToolBarContributionItem
- * @since 3.0
- */
-public interface ICoolBarManager extends IContributionManager {
-
-    /**
-     * Property name of a cool item's size (value <code>"size"</code>).
-     * <p>
-     * The cool bar manager uses this property to tell its cool items to update
-     * their size.
-     * </p>
-     * 
-     * @see IContributionItem#update(String) @issue consider declaring this
-     *      constant elsewhere
-     */
-    public static final String SIZE = "size"; //$NON-NLS-1$
-
-    /**
-     * A convenience method to add a tool bar as a contribution item to this
-     * cool bar manager. Equivalent to <code>add(new ToolBarContributionManager(toolBarManager))</code>.
-     * 
-     * @param toolBarManager
-     *            the tool bar manager to be added
-     * @see ToolBarContributionItem
-     */
-    public void add(IToolBarManager toolBarManager);
-
-    /**
-     * Returns the context menu manager used by this cool bar manager. This
-     * context menu manager is used by the cool bar manager except for cool
-     * items that provide their own.
-     * 
-     * @return the context menu manager, or <code>null</code> if none
-     * @see #setContextMenuManager
-     */
-    public IMenuManager getContextMenuManager();
-
-    /**
-     * Returns whether the layout of the underlying cool bar widget is locked.
-     * 
-     * @return <code>true</code> if cool bar layout is locked, <code>false</code>
-     *         otherwise
-     */
-    public boolean getLockLayout();
-
-    /**
-     * Returns the style of the underlying cool bar widget.
-     * 
-     * @return the style of the cool bar
-     */
-    public int getStyle();
-
-    /**
-     * Sets the context menu of this cool bar manager to the given menu
-     * manager.
-     * 
-     * @param menuManager
-     *            the context menu manager, or <code>null</code> if none
-     * @see #getContextMenuManager
-     */
-    public void setContextMenuManager(IMenuManager menuManager);
-
-    /**
-     * Locks or unlocks the layout of the underlying cool bar widget. Once the
-     * cool bar is locked, cool items cannot be repositioned by the user.
-     * <p>
-     * Note that items can be added or removed programmatically even while the
-     * cool bar is locked.
-     * </p>
-     * 
-     * @param value
-     *            <code>true</code> to lock the cool bar, <code>false</code>
-     *            to unlock
-     */
-    public void setLockLayout(boolean value);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuCreator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuCreator.java
deleted file mode 100644
index a4fa76a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuCreator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * Interface for something that creates and disposes of SWT menus.  Note that
- * it is the responsibility of the implementor to dispose of SWT menus it
- * creates. 
- */
-public interface IMenuCreator {
-    /**
-     * Disposes the menu returned by <code>getMenu</code>. Does nothing
-     * if there is no menu.  This method will be executed only when the
-     * parent of the menu is disposed.  
-     */
-    public void dispose();
-
-    /**
-     * Returns the SWT menu, created as a pop up menu parented by the
-     * given control.  In most cases, this menu can be created once, cached and reused
-     * when the pop-up/drop-down action occurs.  If the menu must be dynamically
-     * created (i.e., each time it is popped up or dropped down), the old menu
-     * should be disposed of before replacing it with the new menu.
-     *
-     * @param parent the parent control
-     * @return the menu, or <code>null</code> if the menu could not
-     *  be created
-     */
-    public Menu getMenu(Control parent);
-
-    /**
-     * Returns an SWT menu created as a drop down menu parented by the
-     * given menu.  In most cases, this menu can be created once, cached and reused
-     * when the pop-up/drop-down action occurs.  If the menu must be dynamically
-     * created (i.e., each time it is popped up or dropped down), the old menu
-     * should be disposed of before replacing it with the new menu.
-     *
-     * @param parent the parent menu
-     * @return the menu, or <code>null</code> if the menu could not
-     *  be created
-     */
-    public Menu getMenu(Menu parent);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener.java
deleted file mode 100644
index 2ddec63..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * A menu listener that gets informed when a menu is about to show.
- *
- * @see MenuManager#addMenuListener
- */
-public interface IMenuListener {
-    /**
-     * Notifies this listener that the menu is about to be shown by
-     * the given menu manager.
-     *
-     * @param manager the menu manager
-     */
-    public void menuAboutToShow(IMenuManager manager);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener2.java
deleted file mode 100644
index 4c57bcc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuListener2.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * A menu listener that gets informed when a menu is about to hide.
- *
- * @see MenuManager#addMenuListener
- * @since 3.2
- */
-public interface IMenuListener2 extends IMenuListener {
-    /**
-     * Notifies this listener that the menu is about to be hidden by
-     * the given menu manager.
-     *
-     * @param manager the menu manager
-     */
-    public void menuAboutToHide(IMenuManager manager);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuManager.java
deleted file mode 100644
index aaa2b8b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IMenuManager.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * The <code>IMenuManager</code> interface provides protocol for managing
- * contributions to a menu bar and its sub menus.
- * An <code>IMenuManager</code> is also an <code>IContributionItem</code>,
- * allowing sub-menus to be nested in parent menus.
- * <p>
- * This interface is internal to the framework; it should not be implemented outside
- * the framework.
- * </p>
- * <p>
- * This package provides a concrete menu manager implementation,
- * {@link MenuManager <code>MenuManager</code>}.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IMenuManager extends IContributionManager, IContributionItem {
-    /**
-     * Adds a menu listener to this menu.
-     * Has no effect if an identical listener is already registered.
-     *
-     * @param listener a menu listener
-     */
-    public void addMenuListener(IMenuListener listener);
-
-    /**
-     * Finds the manager for the menu at the given path. A path
-     * consists of contribution item ids separated by the separator 
-     * character.  The path separator character is <code>'/'</code>.
-     * <p>
-     * Convenience for <code>findUsingPath(path)</code> which
-     * extracts an <code>IMenuManager</code> if possible.
-     * </p>
-     *
-     * @param path the path string
-     * @return the menu contribution item, or <code>null</code>
-     *   if there is no such contribution item or if the item does
-     *   not have an associated menu manager
-     */
-    public IMenuManager findMenuUsingPath(String path);
-
-    /**
-     * Finds the contribution item at the given path. A path
-     * consists of contribution item ids separated by the separator 
-     * character. The path separator character is <code>'/'</code>.
-     *
-     * @param path the path string
-     * @return the contribution item, or <code>null</code> if there is no
-     *   such contribution item
-     */
-    public IContributionItem findUsingPath(String path);
-
-    /**
-	 * Returns whether all items should be removed when the menu is about to
-	 * show, but before notifying menu listeners. The default is
-	 * <code>false</code>.
-	 * 
-	 * @return <code>true</code> if all items should be removed when shown,
-	 *         <code>false</code> if not
-	 */
-    public boolean getRemoveAllWhenShown();
-
-    /**
-     * Returns whether this menu should be enabled or not.
-     *
-     * @return <code>true</code> if enabled, and
-     *   <code>false</code> if disabled
-     */
-    public boolean isEnabled();
-
-    /**
-     * Removes the given menu listener from this menu.
-     * Has no effect if an identical listener is not registered.
-     *
-     * @param listener the menu listener
-     */
-    public void removeMenuListener(IMenuListener listener);
-
-    /**
-	 * Sets whether all items should be removed when the menu is about to show,
-	 * but before notifying menu listeners.
-	 * 
-	 * @param removeAll
-	 *            <code>true</code> if all items should be removed when shown,
-	 *            <code>false</code> if not
-	 */
-    public void setRemoveAllWhenShown(boolean removeAll);
-
-    /**
-     * Incrementally builds the menu from the contribution items, and
-     * does so recursively for all submenus.
-     *
-     * @param force <code>true</code> means update even if not dirty,
-     *   and <code>false</code> for normal incremental updating
-     */
-    public void updateAll(boolean force);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IStatusLineManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IStatusLineManager.java
deleted file mode 100644
index a13e20e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IStatusLineManager.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The <code>IStatusLineManager</code> interface provides protocol
- * for displaying messages on a status line, for monitoring progress,
- * and for managing contributions to the status line.
- * <p>
- * <b>Note:</b> An error message overrides the current message until
- * the error message is cleared.
- * </p><p>
- * This package also provides a concrete status line manager implementation,
- * {@link StatusLineManager <code>StatusLineManager</code>}.
- * </p>
- */
-public interface IStatusLineManager extends IContributionManager {
-    /**
-     * Returns a progress monitor which reports progress
-     * in the status line.
-     *
-     * @return the progress monitor
-     * 
-     * Note: There is a delay after a beginTask message before the monitor is shown.
-     *   This may not be appropriate for all apps.
-     */
-    public IProgressMonitor getProgressMonitor();
-
-    /**
-     * Returns whether the cancel button on the status line's progress monitor
-     * is enabled.
-     *
-     * @return <code>true</code> if the cancel button is enabled, or <code>false</code> if not
-     */
-    public boolean isCancelEnabled();
-
-    /**
-     * Sets whether the cancel button on the status line's progress monitor
-     * is enabled.
-     *
-     * @param enabled <code>true</code> if the cancel button is enabled, or <code>false</code> if not
-     */
-    public void setCancelEnabled(boolean enabled);
-
-    /**
-     * Sets the error message text to be displayed on the status line.
-     * The image on the status line is cleared.
-     * <p>
-     * An error message overrides the current message until the error 
-     * message is cleared (set to <code>null</code>).
-     * </p>
-     *
-     * @param message the error message, or <code>null</code> to clear
-     * 		the current error message.
-     */
-    public void setErrorMessage(String message);
-
-    /**
-     * Sets the image and error message to be displayed on the status line.
-     * <p>
-     * An error message overrides the current message until the error 
-     * message is cleared (set to <code>null</code>).
-     * </p>
-     *
-     * @param image the image to use, or <code>null</code> for no image
-     * @param message the error message, or <code>null</code> to clear
-     * 		the current error message.
-     */
-    public void setErrorMessage(Image image, String message);
-
-    /**
-     * Sets the message text to be displayed on the status line.
-     * The image on the status line is cleared.
-     * <p>
-     * This method replaces the current message but does not affect the 
-     * error message. That is, the error message, if set, will continue
-     * to be displayed until it is cleared (set to <code>null</code>).
-     * </p>
-     *
-     * @param message the message, or <code>null</code> for no message
-     */
-    public void setMessage(String message);
-
-    /**
-     * Sets the image and message to be displayed on the status line.
-     * <p>
-     * This method replaces the current message but does not affect the 
-     * error message. That is, the error message, if set, will continue
-     * to be displayed until it is cleared (set to <code>null</code>).
-     * </p>
-     *
-     * @param image the image to use, or <code>null</code> for no image
-     * @param message the message, or <code>null</code> for no message
-     */
-    public void setMessage(Image image, String message);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IToolBarManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IToolBarManager.java
deleted file mode 100644
index f7711cf..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/IToolBarManager.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * The <code>IToolBarManager</code> interface provides protocol for managing
- * contributions to a tool bar. It extends <code>IContributionManager</code>
- * but does not declare any new members; it exists only to increase the
- * readability of code using tool bars.
- * <p>
- * This package also provides a concrete tool bar manager implementation,
- * {@link ToolBarManager <code>ToolBarManager</code>}.
- * </p>
- */
-public interface IToolBarManager extends IContributionManager {
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java
deleted file mode 100644
index 53ae441..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/LegacyActionTools.java
+++ /dev/null
@@ -1,738 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-
-/**
- * <p>
- * Some static utility methods for handling labels on actions. This includes
- * mnemonics and accelerators.
- * </p>
- * <p>
- * Clients may neither instantiate this class nor extend.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacyActionTools {
-
-	/**
-	 * Table of key codes (key type: <code>String</code>, value type:
-	 * <code>Integer</code>); <code>null</code> if not yet initialized.
-	 * 
-	 * @see #findKeyCode
-	 */
-	private static Map keyCodes = null;
-
-	/**
-	 * Table of string representations of keys (key type: <code>Integer</code>,
-	 * value type: <code>String</code>); <code>null</code>> if not yet
-	 * initialized.
-	 * 
-	 * @see #findKeyString
-	 */
-	private static Map keyStrings = null;
-
-	/**
-	 * The localized uppercase version of ALT
-	 */
-	private static String localizedAlt;
-
-	/**
-	 * The localized uppercase version of COMMAND
-	 */
-	private static String localizedCommand;
-
-	/**
-	 * The localized uppercase version of CTRL
-	 */
-	private static String localizedCtrl;
-
-	/**
-	 * Table of key codes (key type: <code>String</code>, value type:
-	 * <code>Integer</code>); <code>null</code> if not yet initialized. The
-	 * key is the localalized name of the key as it appears in menus.
-	 * 
-	 * @see #findLocalizedKeyCode
-	 */
-	private static Map localizedKeyCodes = null;
-
-	/**
-	 * The localized uppercase version of SHIFT
-	 */
-	private static String localizedShift;
-
-	/**
-	 * The constant to use if there is no mnemonic for this location.
-	 */
-	public static final char MNEMONIC_NONE = 0;
-
-	/**
-	 * Converts an accelerator key code to a string representation.
-	 * 
-	 * @param keyCode
-	 *            the key code to be translated
-	 * @return a string representation of the key code
-	 */
-	public static final String convertAccelerator(final int keyCode) {
-		String modifier = getModifierString(keyCode);
-		String fullKey;
-		if (modifier.equals("")) { //$NON-NLS-1$
-			fullKey = findKeyString(keyCode);
-		} else {
-			fullKey = modifier + "+" + findKeyString(keyCode); //$NON-NLS-1$
-		}
-		return fullKey;
-	}
-
-	/**
-	 * Parses the given accelerator text, and converts it to an accelerator key
-	 * code.
-	 * 
-	 * @param acceleratorText
-	 *            the accelerator text
-	 * @return the SWT key code, or 0 if there is no accelerator
-	 */
-	public static final int convertAccelerator(final String acceleratorText) {
-		int accelerator = 0;
-		StringTokenizer stok = new StringTokenizer(acceleratorText, "+"); //$NON-NLS-1$
-
-		int keyCode = -1;
-
-		boolean hasMoreTokens = stok.hasMoreTokens();
-		while (hasMoreTokens) {
-			String token = stok.nextToken();
-			hasMoreTokens = stok.hasMoreTokens();
-			// Every token except the last must be one of the modifiers
-			// Ctrl, Shift, Alt, or Command
-			if (hasMoreTokens) {
-				int modifier = findModifier(token);
-				if (modifier != 0) {
-					accelerator |= modifier;
-				} else { // Leave if there are none
-					return 0;
-				}
-			} else {
-				keyCode = findKeyCode(token);
-			}
-		}
-		if (keyCode != -1) {
-			accelerator |= keyCode;
-		}
-		return accelerator;
-	}
-
-	/**
-	 * Parses the given accelerator text, and converts it to an accelerator key
-	 * code.
-	 * 
-	 * Support for localized modifiers is for backwards compatibility with 1.0.
-	 * Use setAccelerator(int) to set accelerators programatically or the
-	 * <code>accelerator</code> tag in action definitions in plugin.xml.
-	 * 
-	 * @param acceleratorText
-	 *            the accelerator text localized to the current locale
-	 * @return the SWT key code, or 0 if there is no accelerator
-	 */
-	static final int convertLocalizedAccelerator(final String acceleratorText) {
-		int accelerator = 0;
-		StringTokenizer stok = new StringTokenizer(acceleratorText, "+"); //$NON-NLS-1$
-
-		int keyCode = -1;
-
-		boolean hasMoreTokens = stok.hasMoreTokens();
-		while (hasMoreTokens) {
-			String token = stok.nextToken();
-			hasMoreTokens = stok.hasMoreTokens();
-			// Every token except the last must be one of the modifiers
-			// Ctrl, Shift, Alt, or Command
-			if (hasMoreTokens) {
-				int modifier = findLocalizedModifier(token);
-				if (modifier != 0) {
-					accelerator |= modifier;
-				} else { // Leave if there are none
-					return 0;
-				}
-			} else {
-				keyCode = findLocalizedKeyCode(token);
-			}
-		}
-		if (keyCode != -1) {
-			accelerator |= keyCode;
-		}
-		return accelerator;
-	}
-
-	/**
-	 * Extracts the accelerator text from the given text. Returns
-	 * <code>null</code> if there is no accelerator text, and the empty string
-	 * if there is no text after the accelerator delimeter (tab or '@').
-	 * 
-	 * @param text
-	 *            the text for the action; may be <code>null</code>.
-	 * @return the accelerator text, or <code>null</code>
-	 */
-	public static final String extractAcceleratorText(final String text) {
-		if (text == null) {
-			return null;
-		}
-
-		int index = text.lastIndexOf('\t');
-		if (index == -1) {
-			index = text.lastIndexOf('@');
-		}
-		if (index >= 0) {
-			return text.substring(index + 1);
-		}
-		return null;
-	}
-
-	/**
-	 * Extracts the mnemonic text from the given string.
-	 * 
-	 * @param text
-	 *            The text from which the mnemonic should be extracted; may be
-	 *            <code>null</code>
-	 * @return The text of the mnemonic; will be {@link #MNEMONIC_NONE} if there
-	 *         is no mnemonic;
-	 */
-	public static final char extractMnemonic(final String text) {
-		if (text == null) {
-			return MNEMONIC_NONE;
-		}
-
-		int index = text.indexOf('&');
-		if (index == -1) {
-			return MNEMONIC_NONE;
-		}
-
-		final int textLength = text.length();
-
-		// Ignore '&' at the end of the string.
-		if (index == textLength - 1) {
-			return MNEMONIC_NONE;
-		}
-
-		// Ignore two consecutive ampersands.
-		while (text.charAt(index + 1) == '&') {
-			index = text.indexOf('&', ++index);
-			if (index == textLength - 1) {
-				return MNEMONIC_NONE;
-			}
-		}
-
-		return text.charAt(index + 1);
-	}
-
-	/**
-	 * Maps a standard keyboard key name to an SWT key code. Key names are
-	 * converted to upper case before comparison. If the key name is a single
-	 * letter, for example "S", its character code is returned.
-	 * <p>
-	 * The following key names are known (case is ignored):
-	 * <ul>
-	 * <li><code>"BACKSPACE"</code></li>
-	 * <li><code>"TAB"</code></li>
-	 * <li><code>"RETURN"</code></li>
-	 * <li><code>"ENTER"</code></li>
-	 * <li><code>"ESC"</code></li>
-	 * <li><code>"ESCAPE"</code></li>
-	 * <li><code>"DELETE"</code></li>
-	 * <li><code>"SPACE"</code></li>
-	 * <li><code>"ARROW_UP"</code>, <code>"ARROW_DOWN"</code>,
-	 * <code>"ARROW_LEFT"</code>, and <code>"ARROW_RIGHT"</code></li>
-	 * <li><code>"PAGE_UP"</code> and <code>"PAGE_DOWN"</code></li>
-	 * <li><code>"HOME"</code></li>
-	 * <li><code>"END"</code></li>
-	 * <li><code>"INSERT"</code></li>
-	 * <li><code>"F1"</code>, <code>"F2"</code> through <code>"F12"</code></li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @param token
-	 *            the key name
-	 * @return the SWT key code, <code>-1</code> if no match was found
-	 * @see SWT
-	 */
-	public static final int findKeyCode(String token) {
-		if (keyCodes == null) {
-			initKeyCodes();
-		}
-		token = token.toUpperCase();
-		Integer i = (Integer) keyCodes.get(token);
-		if (i != null) {
-			return i.intValue();
-		}
-		if (token.length() == 1) {
-			return token.charAt(0);
-		}
-		return -1;
-	}
-
-	/**
-	 * Maps an SWT key code to a standard keyboard key name. The key code is
-	 * stripped of modifiers (SWT.CTRL, SWT.ALT, SWT.SHIFT, and SWT.COMMAND). If
-	 * the key code is not an SWT code (for example if it a key code for the key
-	 * 'S'), a string containing a character representation of the key code is
-	 * returned.
-	 * 
-	 * @param keyCode
-	 *            the key code to be translated
-	 * @return the string representation of the key code
-	 * @see SWT
-	 * @since 2.0
-	 */
-	public static final String findKeyString(final int keyCode) {
-		if (keyStrings == null) {
-			initKeyStrings();
-		}
-		int i = keyCode & ~(SWT.CTRL | SWT.ALT | SWT.SHIFT | SWT.COMMAND);
-		Integer integer = new Integer(i);
-		String result = (String) keyStrings.get(integer);
-		if (result != null) {
-			return result;
-		}
-		result = new String(new char[] { (char) i });
-		return result;
-	}
-
-	/**
-	 * Find the supplied code for a localized key. As #findKeyCode but localized
-	 * to the current locale.
-	 * 
-	 * Support for localized modifiers is for backwards compatibility with 1.0.
-	 * Use setAccelerator(int) to set accelerators programatically or the
-	 * <code>accelerator</code> tag in action definitions in plugin.xml.
-	 * 
-	 * @param token
-	 *            the localized key name
-	 * @return the SWT key code, <code>-1</code> if no match was found
-	 * @see #findKeyCode
-	 */
-	private static final int findLocalizedKeyCode(String token) {
-		if (localizedKeyCodes == null) {
-			initLocalizedKeyCodes();
-		}
-		token = token.toUpperCase();
-		Integer i = (Integer) localizedKeyCodes.get(token);
-		if (i != null) {
-			return i.intValue();
-		}
-		if (token.length() == 1) {
-			return token.charAt(0);
-		}
-		return -1;
-	}
-
-	/**
-	 * Maps the localized modifier names to a code in the same manner as
-	 * #findModifier.
-	 * 
-	 * Support for localized modifiers is for backwards compatibility with 1.0.
-	 * Use setAccelerator(int) to set accelerators programatically or the
-	 * <code>accelerator</code> tag in action definitions in plugin.xml.
-	 * 
-	 * @see #findModifier
-	 */
-	private static final int findLocalizedModifier(String token) {
-		if (localizedCtrl == null) {
-			initLocalizedModifiers();
-		}
-
-		token = token.toUpperCase();
-		if (token.equals(localizedCtrl)) {
-			return SWT.CTRL;
-		}
-		if (token.equals(localizedShift)) {
-			return SWT.SHIFT;
-		}
-		if (token.equals(localizedAlt)) {
-			return SWT.ALT;
-		}
-		if (token.equals(localizedCommand)) {
-			return SWT.COMMAND;
-		}
-		return 0;
-	}
-
-	/**
-	 * Maps standard keyboard modifier key names to the corresponding SWT
-	 * modifier bit. The following modifier key names are recognized (case is
-	 * ignored): <code>"CTRL"</code>, <code>"SHIFT"</code>,
-	 * <code>"ALT"</code>, and <code>"COMMAND"</code>. The given modifier
-	 * key name is converted to upper case before comparison.
-	 * 
-	 * @param token
-	 *            the modifier key name
-	 * @return the SWT modifier bit, or <code>0</code> if no match was found
-	 * @see SWT
-	 */
-	public static final int findModifier(String token) {
-		token = token.toUpperCase();
-		if (token.equals("CTRL")) { //$NON-NLS-1$
-			return SWT.CTRL;
-		}
-		if (token.equals("SHIFT")) { //$NON-NLS-1$
-			return SWT.SHIFT;
-		}
-		if (token.equals("ALT")) { //$NON-NLS-1$
-			return SWT.ALT;
-		}
-		if (token.equals("COMMAND")) { //$NON-NLS-1$
-			return SWT.COMMAND;
-		}
-		return 0;
-	}
-
-	/**
-	 * Returns a string representation of an SWT modifier bit (SWT.CTRL,
-	 * SWT.ALT, SWT.SHIFT, and SWT.COMMAND). Returns <code>null</code> if the
-	 * key code is not an SWT modifier bit.
-	 * 
-	 * @param keyCode
-	 *            the SWT modifier bit to be translated
-	 * @return the string representation of the SWT modifier bit, or
-	 *         <code>null</code> if the key code was not an SWT modifier bit
-	 * @see SWT
-	 */
-	public static final String findModifierString(final int keyCode) {
-		if (keyCode == SWT.CTRL) {
-			return JFaceResources.getString("Ctrl"); //$NON-NLS-1$
-		}
-		if (keyCode == SWT.ALT) {
-			return JFaceResources.getString("Alt"); //$NON-NLS-1$
-		}
-		if (keyCode == SWT.SHIFT) {
-			return JFaceResources.getString("Shift"); //$NON-NLS-1$
-		}
-		if (keyCode == SWT.COMMAND) {
-			return JFaceResources.getString("Command"); //$NON-NLS-1$		
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the string representation of the modifiers (Ctrl, Alt, Shift,
-	 * Command) of the key event.
-	 * 
-	 * @param keyCode
-	 *            The key code for which the modifier string is desired.
-	 * @return The string representation of the key code; never
-	 *         <code>null</code>.
-	 */
-	private static String getModifierString(int keyCode) {
-		String modString = ""; //$NON-NLS-1$
-
-		if ((keyCode & SWT.CTRL) != 0) {
-			modString = findModifierString(keyCode & SWT.CTRL);
-		}
-
-		if ((keyCode & SWT.ALT) != 0) {
-			if (modString.equals("")) { //$NON-NLS-1$
-				modString = findModifierString(keyCode & SWT.ALT);
-			} else {
-				modString = modString
-						+ "+" + findModifierString(keyCode & SWT.ALT); //$NON-NLS-1$
-			}
-		}
-
-		if ((keyCode & SWT.SHIFT) != 0) {
-			if (modString.equals("")) { //$NON-NLS-1$
-				modString = findModifierString(keyCode & SWT.SHIFT);
-			} else {
-				modString = modString
-						+ "+" + findModifierString(keyCode & SWT.SHIFT); //$NON-NLS-1$
-			}
-		}
-
-		if ((keyCode & SWT.COMMAND) != 0) {
-			if (modString.equals("")) { //$NON-NLS-1$
-				modString = findModifierString(keyCode & SWT.COMMAND);
-			} else {
-				modString = modString
-						+ "+" + findModifierString(keyCode & SWT.COMMAND); //$NON-NLS-1$
-			}
-		}
-
-		return modString;
-	}
-
-	/**
-	 * Initializes the internal key code table.
-	 */
-	private static final void initKeyCodes() {
-		keyCodes = new HashMap(40);
-
-		keyCodes.put("BACKSPACE", new Integer(8)); //$NON-NLS-1$
-		keyCodes.put("TAB", new Integer(9)); //$NON-NLS-1$
-		keyCodes.put("RETURN", new Integer(13)); //$NON-NLS-1$
-		keyCodes.put("ENTER", new Integer(13)); //$NON-NLS-1$
-		keyCodes.put("ESCAPE", new Integer(27)); //$NON-NLS-1$
-		keyCodes.put("ESC", new Integer(27)); //$NON-NLS-1$
-		keyCodes.put("DELETE", new Integer(127)); //$NON-NLS-1$
-
-		keyCodes.put("SPACE", new Integer(' ')); //$NON-NLS-1$
-		keyCodes.put("ARROW_UP", new Integer(SWT.ARROW_UP)); //$NON-NLS-1$
-		keyCodes.put("ARROW_DOWN", new Integer(SWT.ARROW_DOWN)); //$NON-NLS-1$
-		keyCodes.put("ARROW_LEFT", new Integer(SWT.ARROW_LEFT)); //$NON-NLS-1$
-		keyCodes.put("ARROW_RIGHT", new Integer(SWT.ARROW_RIGHT)); //$NON-NLS-1$
-		keyCodes.put("PAGE_UP", new Integer(SWT.PAGE_UP)); //$NON-NLS-1$
-		keyCodes.put("PAGE_DOWN", new Integer(SWT.PAGE_DOWN)); //$NON-NLS-1$
-		keyCodes.put("HOME", new Integer(SWT.HOME)); //$NON-NLS-1$
-		keyCodes.put("END", new Integer(SWT.END)); //$NON-NLS-1$
-		keyCodes.put("INSERT", new Integer(SWT.INSERT)); //$NON-NLS-1$
-		keyCodes.put("F1", new Integer(SWT.F1)); //$NON-NLS-1$
-		keyCodes.put("F2", new Integer(SWT.F2)); //$NON-NLS-1$
-		keyCodes.put("F3", new Integer(SWT.F3)); //$NON-NLS-1$
-		keyCodes.put("F4", new Integer(SWT.F4)); //$NON-NLS-1$
-		keyCodes.put("F5", new Integer(SWT.F5)); //$NON-NLS-1$
-		keyCodes.put("F6", new Integer(SWT.F6)); //$NON-NLS-1$
-		keyCodes.put("F7", new Integer(SWT.F7)); //$NON-NLS-1$
-		keyCodes.put("F8", new Integer(SWT.F8)); //$NON-NLS-1$
-		keyCodes.put("F9", new Integer(SWT.F9)); //$NON-NLS-1$
-		keyCodes.put("F10", new Integer(SWT.F10)); //$NON-NLS-1$
-		keyCodes.put("F11", new Integer(SWT.F11)); //$NON-NLS-1$
-		keyCodes.put("F12", new Integer(SWT.F12)); //$NON-NLS-1$
-	}
-
-	/**
-	 * Initializes the internal key string table.
-	 */
-	private static void initKeyStrings() {
-		keyStrings = new HashMap(40);
-
-		keyStrings.put(new Integer(8), JFaceResources.getString("Backspace")); //$NON-NLS-1$
-		keyStrings.put(new Integer(9), JFaceResources.getString("Tab")); //$NON-NLS-1$
-		keyStrings.put(new Integer(13), JFaceResources.getString("Return")); //$NON-NLS-1$
-		keyStrings.put(new Integer(13), JFaceResources.getString("Enter")); //$NON-NLS-1$
-		keyStrings.put(new Integer(27), JFaceResources.getString("Escape")); //$NON-NLS-1$
-		keyStrings.put(new Integer(27), JFaceResources.getString("Esc")); //$NON-NLS-1$
-		keyStrings.put(new Integer(127), JFaceResources.getString("Delete")); //$NON-NLS-1$
-
-		keyStrings.put(new Integer(' '), JFaceResources.getString("Space")); //$NON-NLS-1$
-
-		keyStrings.put(new Integer(SWT.ARROW_UP), JFaceResources
-				.getString("Arrow_Up")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.ARROW_DOWN), JFaceResources
-				.getString("Arrow_Down")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.ARROW_LEFT), JFaceResources
-				.getString("Arrow_Left")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.ARROW_RIGHT), JFaceResources
-				.getString("Arrow_Right")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.PAGE_UP), JFaceResources
-				.getString("Page_Up")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.PAGE_DOWN), JFaceResources
-				.getString("Page_Down")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.HOME), JFaceResources.getString("Home")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.END), JFaceResources.getString("End")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.INSERT), JFaceResources
-				.getString("Insert")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F1), JFaceResources.getString("F1")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F2), JFaceResources.getString("F2")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F3), JFaceResources.getString("F3")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F4), JFaceResources.getString("F4")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F5), JFaceResources.getString("F5")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F6), JFaceResources.getString("F6")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F7), JFaceResources.getString("F7")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F8), JFaceResources.getString("F8")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F9), JFaceResources.getString("F9")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F10), JFaceResources.getString("F10")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F11), JFaceResources.getString("F11")); //$NON-NLS-1$
-		keyStrings.put(new Integer(SWT.F12), JFaceResources.getString("F12")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Initializes the localized internal key code table.
-	 */
-	private static void initLocalizedKeyCodes() {
-		localizedKeyCodes = new HashMap(40);
-
-		localizedKeyCodes.put(JFaceResources
-				.getString("Backspace").toUpperCase(), new Integer(8)); //$NON-NLS-1$
-		localizedKeyCodes.put(
-				JFaceResources.getString("Tab").toUpperCase(), new Integer(9)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Return").toUpperCase(), new Integer(13)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Enter").toUpperCase(), new Integer(13)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Escape").toUpperCase(), new Integer(27)); //$NON-NLS-1$
-		localizedKeyCodes.put(
-				JFaceResources.getString("Esc").toUpperCase(), new Integer(27)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Delete").toUpperCase(), new Integer(127)); //$NON-NLS-1$
-
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Space").toUpperCase(), new Integer(' ')); //$NON-NLS-1$
-
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Arrow_Up").toUpperCase(), new Integer(SWT.ARROW_UP)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Arrow_Down").toUpperCase(), new Integer(SWT.ARROW_DOWN)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Arrow_Left").toUpperCase(), new Integer(SWT.ARROW_LEFT)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Arrow_Right").toUpperCase(), new Integer(SWT.ARROW_RIGHT)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Page_Up").toUpperCase(), new Integer(SWT.PAGE_UP)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Page_Down").toUpperCase(), new Integer(SWT.PAGE_DOWN)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Home").toUpperCase(), new Integer(SWT.HOME)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("End").toUpperCase(), new Integer(SWT.END)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("Insert").toUpperCase(), new Integer(SWT.INSERT)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F1").toUpperCase(), new Integer(SWT.F1)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F2").toUpperCase(), new Integer(SWT.F2)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F3").toUpperCase(), new Integer(SWT.F3)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F4").toUpperCase(), new Integer(SWT.F4)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F5").toUpperCase(), new Integer(SWT.F5)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F6").toUpperCase(), new Integer(SWT.F6)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F7").toUpperCase(), new Integer(SWT.F7)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F8").toUpperCase(), new Integer(SWT.F8)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F9").toUpperCase(), new Integer(SWT.F9)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F10").toUpperCase(), new Integer(SWT.F10)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F11").toUpperCase(), new Integer(SWT.F11)); //$NON-NLS-1$
-		localizedKeyCodes
-				.put(
-						JFaceResources.getString("F12").toUpperCase(), new Integer(SWT.F12)); //$NON-NLS-1$
-	}
-
-	/**
-	 * Initialize the list of localized modifiers
-	 */
-	private static void initLocalizedModifiers() {
-		localizedCtrl = JFaceResources.getString("Ctrl").toUpperCase(); //$NON-NLS-1$
-		localizedShift = JFaceResources.getString("Shift").toUpperCase(); //$NON-NLS-1$
-		localizedAlt = JFaceResources.getString("Alt").toUpperCase(); //$NON-NLS-1$
-		localizedCommand = JFaceResources.getString("Command").toUpperCase(); //$NON-NLS-1$	
-	}
-
-	/**
-	 * Convenience method for removing any optional accelerator text from the
-	 * given string. The accelerator text appears at the end of the text, and is
-	 * separated from the main part by a single tab character <code>'\t'</code>.
-	 * 
-	 * @param text
-	 *            the text
-	 * @return the text sans accelerator
-	 */
-	public static final String removeAcceleratorText(final String text) {
-		int index = text.lastIndexOf('\t');
-		if (index == -1) {
-			index = text.lastIndexOf('@');
-		}
-		if (index >= 0) {
-			return text.substring(0, index);
-		}
-		return text;
-	}
-
-	/**
-	 * Convenience method for removing any mnemonics from the given string. For
-	 * example, <code>removeMnemonics("&Open")</code> will return
-	 * <code>"Open"</code>.
-	 * 
-	 * @param text
-	 *            the text
-	 * @return the text sans mnemonics
-	 */
-	public static final String removeMnemonics(final String text) {
-		int index = text.indexOf('&');
-		if (index == -1) {
-			return text;
-		}
-		int len = text.length();
-		StringBuffer sb = new StringBuffer(len);
-		int lastIndex = 0;
-		while (index != -1) {
-			// ignore & at the end
-			if (index == len - 1) {
-				break;
-			}
-			// handle the && case
-			if (text.charAt(index + 1) == '&') {
-				++index;
-			}
-
-			// DBCS languages use "(&X)" format
-			if (index > 0 && text.charAt(index - 1) == '('
-					&& text.length() >= index + 3
-					&& text.charAt(index + 2) == ')') {
-				sb.append(text.substring(lastIndex, index - 1));
-				index += 3;
-			} else {
-				sb.append(text.substring(lastIndex, index));
-				// skip the &
-				++index;
-			}
-
-			lastIndex = index;
-			index = text.indexOf('&', index);
-		}
-		if (lastIndex < len) {
-			sb.append(text.substring(lastIndex, len));
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * This class cannot be instantiated.
-	 */
-	private LegacyActionTools() {
-		// Does nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/MenuManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/MenuManager.java
deleted file mode 100644
index 0511c91..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/MenuManager.java
+++ /dev/null
@@ -1,973 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 12116 [Contributions] widgets: MenuManager.setImageDescriptor() method needed
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MenuAdapter;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * A menu manager is a contribution manager which realizes itself and its items
- * in a menu control; either as a menu bar, a sub-menu, or a context menu.
- * <p>
- * This class may be instantiated; it may also be subclassed.
- * </p>
- */
-public class MenuManager extends ContributionManager implements IMenuManager {
-
-    /**
-     * The menu id.
-     */
-    private String id;
-
-    /**
-     * List of registered menu listeners (element type: <code>IMenuListener</code>).
-     */
-    private ListenerList listeners = new ListenerList();
-
-    /**
-     * The menu control; <code>null</code> before
-     * creation and after disposal.
-     */
-    private Menu menu = null;
-
-    /**
-     * The menu item widget; <code>null</code> before
-     * creation and after disposal. This field is used
-     * when this menu manager is a sub-menu.
-     */
-    private MenuItem menuItem;
-
-    /**
-     * The text for a sub-menu.
-     */
-    private String menuText;
-    
-    /**
-     * The image for a sub-menu.
-     */
-    private ImageDescriptor image;
-    
-    /**
-     * A resource manager to remember all of the images that have been used by this menu.
-     */
-    private LocalResourceManager imageManager;
-
-    /**
-     * The overrides for items of this manager
-     */
-    private IContributionManagerOverrides overrides;
-
-    /**
-     * The parent contribution manager.
-     */
-    private IContributionManager parent;
-
-    /**
-     * Indicates whether <code>removeAll</code> should be
-     * called just before the menu is displayed.
-     */
-    private boolean removeAllWhenShown = false;
-
-    /**
-     * Indicates this item is visible in its manager; <code>true</code> 
-     * by default.
-     * @since 3.3
-     */
-    protected boolean visible = true;
-
-	/**
-	 * allows a submenu to display a shortcut key. This is often used with the
-	 * QuickMenu command or action which can pop up a menu using the shortcut.
-	 */
-	private String definitionId = null;
-
-    /**
-     * Creates a menu manager.  The text and id are <code>null</code>.
-     * Typically used for creating a context menu, where it doesn't need to be referred to by id.
-     */
-    public MenuManager() {
-        this(null, null, null);
-    }
-
-    /**
-     * Creates a menu manager with the given text. The id of the menu
-     * is <code>null</code>.
-     * Typically used for creating a sub-menu, where it doesn't need to be referred to by id.
-     *
-     * @param text the text for the menu, or <code>null</code> if none
-     */
-    public MenuManager(String text) {
-        this(text, null, null);
-    }
-
-    /**
-     * Creates a menu manager with the given text and id.
-     * Typically used for creating a sub-menu, where it needs to be referred to by id.
-     *
-     * @param text the text for the menu, or <code>null</code> if none
-     * @param id the menu id, or <code>null</code> if it is to have no id
-     */
-    public MenuManager(String text, String id) {
-        this(text, null, id);
-    }
-
-    /**
-     * Creates a menu manager with the given text, image, and id.
-     * Typically used for creating a sub-menu, where it needs to be referred to by id.
-     * 
-     * @param text the text for the menu, or <code>null</code> if none
-     * @param image the image for the menu, or <code>null</code> if none
-     * @param id the menu id, or <code>null</code> if it is to have no id
-     * @since 3.4
-     */
-    public MenuManager(String text, ImageDescriptor image, String id) {
-        this.menuText = text;
-        this.image = image;
-        this.id = id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#addMenuListener(org.eclipse.jface.action.IMenuListener)
-     */
-    public void addMenuListener(IMenuListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     * Creates and returns an SWT context menu control for this menu,
-     * and installs all registered contributions.
-     * Does not create a new control if one already exists.
-     * <p>
-     * Note that the menu is not expected to be dynamic.
-     * </p>
-     *
-     * @param parent the parent control
-     * @return the menu control
-     */
-    public Menu createContextMenu(Control parent) {
-        if (!menuExist()) {
-            menu = new Menu(parent);
-            initializeMenu();
-        }
-        return menu;
-    }
-
-    /**
-     * Creates and returns an SWT menu bar control for this menu,
-     * for use in the given <code>Decorations</code>, and installs all registered
-     * contributions. Does not create a new control if one already exists.
-     *
-     * @param parent the parent decorations
-     * @return the menu control
-     * @since 2.1
-     */
-    public Menu createMenuBar(Decorations parent) {
-        if (!menuExist()) {
-            menu = new Menu(parent, SWT.BAR);
-            update(false);
-        }
-        return menu;
-    }
-
-    /**
-     * Creates and returns an SWT menu bar control for this menu, for use in the
-     * given <code>Shell</code>, and installs all registered contributions. Does not
-     * create a new control if one already exists. This implementation simply calls
-     * the <code>createMenuBar(Decorations)</code> method
-     *
-     * @param parent the parent decorations
-     * @return the menu control
-     * @deprecated use <code>createMenuBar(Decorations)</code> instead.
-     */
-    public Menu createMenuBar(Shell parent) {
-        return createMenuBar((Decorations) parent);
-    }
-
-    /**
-     * Disposes of this menu manager and frees all allocated SWT resources.
-     * Notifies all contribution items of the dispose. Note that this method does
-     * not clean up references between this menu manager and its associated
-     * contribution items. Use <code>removeAll</code> for that purpose.
-     */
-    public void dispose() {
-        if (menuExist()) {
-			menu.dispose();
-		}
-        menu = null;
-
-        if (menuItem != null) {
-            menuItem.dispose();
-            menuItem = null;
-        }
-
-        disposeOldImages();
-        
-        IContributionItem[] items = getItems();
-        for (int i = 0; i < items.length; i++) {
-            items[i].dispose();
-        }
-        
-        markDirty();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.Composite)
-     */
-    public void fill(Composite parent) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.CoolBar, int)
-     */
-    public void fill(CoolBar parent, int index) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.Menu, int)
-     */
-    public void fill(Menu parent, int index) {
-        if (menuItem == null || menuItem.isDisposed()) {
-            if (index >= 0) {
-				menuItem = new MenuItem(parent, SWT.CASCADE, index);
-			} else {
-				menuItem = new MenuItem(parent, SWT.CASCADE);
-			}
-
-            menuItem.setText(getMenuText());
-
-            if (image != null) {
-				LocalResourceManager localManager = new LocalResourceManager(
-						JFaceResources.getResources());
-				menuItem.setImage(localManager.createImage(image));
-				disposeOldImages();
-				imageManager = localManager;
-			}
-
-            if (!menuExist()) {
-				menu = new Menu(parent);
-			}
-
-            menuItem.setMenu(menu);
-
-            initializeMenu();
-
-            setDirty(true);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.ToolBar, int)
-     */
-    public void fill(ToolBar parent, int index) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#findMenuUsingPath(java.lang.String)
-     */
-    public IMenuManager findMenuUsingPath(String path) {
-        IContributionItem item = findUsingPath(path);
-        if (item instanceof IMenuManager) {
-			return (IMenuManager) item;
-		}
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#findUsingPath(java.lang.String)
-     */
-    public IContributionItem findUsingPath(String path) {
-        String id = path;
-        String rest = null;
-        int separator = path.indexOf('/');
-        if (separator != -1) {
-            id = path.substring(0, separator);
-            rest = path.substring(separator + 1);
-        } else {
-            return super.find(path);
-        }
-
-        IContributionItem item = super.find(id);
-        if (item instanceof IMenuManager) {
-            IMenuManager manager = (IMenuManager) item;
-            return manager.findUsingPath(rest);
-        }
-        return null;
-    }
-
-    /**
-     * Notifies any menu listeners that a menu is about to show.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param manager the menu manager
-     *
-     * @see IMenuListener#menuAboutToShow
-     */
-    private void fireAboutToShow(IMenuManager manager) {
-        Object[] listeners = this.listeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-            ((IMenuListener) listeners[i]).menuAboutToShow(manager);
-        }
-    }
-
-    /**
-     * Notifies any menu listeners that a menu is about to hide.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param manager the menu manager
-     *
-     */
-    private void fireAboutToHide(IMenuManager manager) {
-        final Object[] listeners = this.listeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-        	final Object listener = listeners[i];
-			if (listener instanceof IMenuListener2) {
-				final IMenuListener2 listener2 = (IMenuListener2) listener;
-				listener2.menuAboutToHide(manager);
-			}
-        }
-    }
-
-    /**
-	 * Returns the menu id. The menu id is used when creating a contribution
-	 * item for adding this menu as a sub menu of another.
-	 * 
-	 * @return the menu id
-	 */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the SWT menu control for this menu manager.
-     *
-     * @return the menu control
-     */
-    public Menu getMenu() {
-        return menu;
-    }
-
-    /**
-     * Returns the text shown in the menu, potentially with a shortcut
-     * appended.
-     *
-     * @return the menu text
-     */
-    public String getMenuText() {
-		if (definitionId == null) {
-			return menuText;
-		}
-		ExternalActionManager.ICallback callback = ExternalActionManager
-				.getInstance().getCallback();
-		if (callback != null) {
-			String shortCut = callback.getAcceleratorText(definitionId);
-			if (shortCut == null) {
-				return menuText;
-			}
-			return menuText + "\t" + shortCut; //$NON-NLS-1$
-		}
-		return menuText;
-	}
-    
-    /**
-	 * Returns the image for this menu as an image descriptor.
-	 * 
-	 * @return the image, or <code>null</code> if this menu has no image
-	 * @since 3.4
-	 */
-    public ImageDescriptor getImageDescriptor() {
-    	return image;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionManager#getOverrides()
-     */
-    public IContributionManagerOverrides getOverrides() {
-        if (overrides == null) {
-            if (parent == null) {
-                overrides = new IContributionManagerOverrides() {
-                    public Integer getAccelerator(IContributionItem item) {
-                        return null;
-                    }
-
-                    public String getAcceleratorText(IContributionItem item) {
-                        return null;
-                    }
-
-                    public Boolean getEnabled(IContributionItem item) {
-                        return null;
-                    }
-
-                    public String getText(IContributionItem item) {
-                        return null;
-                    }
-                };
-            } else {
-                overrides = parent.getOverrides();
-            }
-            super.setOverrides(overrides);
-        }
-        return overrides;
-    }
-
-    /**
-     * Returns the parent contribution manager of this manger.
-     * 
-     * @return the parent contribution manager
-     * @since 2.0
-     */
-    public IContributionManager getParent() {
-        return parent;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#getRemoveAllWhenShown()
-     */
-    public boolean getRemoveAllWhenShown() {
-        return removeAllWhenShown;
-    }
-
-    /**
-     * Notifies all listeners that this menu is about to appear.
-     */
-    private void handleAboutToShow() {
-        if (removeAllWhenShown) {
-			removeAll();
-		}
-        fireAboutToShow(this);
-        update(false, false);
-    }
-
-    /**
-     * Notifies all listeners that this menu is about to disappear.
-     */
-    private void handleAboutToHide() {
-        fireAboutToHide(this);
-    }
-
-    /**
-     * Initializes the menu control.
-     */
-    private void initializeMenu() {
-        menu.addMenuListener(new MenuAdapter() {
-            public void menuHidden(MenuEvent e) {
-                //			ApplicationWindow.resetDescription(e.widget);
-            	handleAboutToHide();
-            }
-
-            public void menuShown(MenuEvent e) {
-                handleAboutToShow();
-            }
-        });
-        // Don't do an update(true) here, in case menu is never opened.
-        // Always do it lazily in handleAboutToShow().
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isDynamic()
-     */
-    public boolean isDynamic() {
-        return false;
-    }
-
-    /**
-     * Returns whether this menu should be enabled or not.
-     * Used to enable the menu item containing this menu when it is realized as a sub-menu.
-     * <p>
-     * The default implementation of this framework method
-     * returns <code>true</code>. Subclasses may reimplement.
-     * </p>
-     *
-     * @return <code>true</code> if enabled, and
-     *   <code>false</code> if disabled
-     */
-    public boolean isEnabled() {
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isGroupMarker()
-     */
-    public boolean isGroupMarker() {
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isSeparator()
-     */
-    public boolean isSeparator() {
-        return false;
-    }
-
-    /**
-     * Check if the contribution is item is a subsitute for ourselves
-     * 
-     * @param item the contribution item
-     * @return <code>true</code> if give item is a substitution for ourselves 
-     * @deprecated this method is no longer a part of the 
-     *   {@link org.eclipse.jface.action.IContributionItem} API.
-     */
-    public boolean isSubstituteFor(IContributionItem item) {
-        return this.equals(item);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isVisible()
-     */
-    public boolean isVisible() {
-        if (!visible) {
-			return false; // short circuit calculations in this case
-		}
-
-        if (removeAllWhenShown) {
-        	// we have no way of knowing if the menu has children
-        	return true;
-        }
-        
-        // menus aren't visible if all of its children are invisible (or only contains visible separators).
-        IContributionItem[] childItems = getItems();
-        boolean visibleChildren = false;
-        for (int j = 0; j < childItems.length; j++) {
-            if (childItems[j].isVisible() && !childItems[j].isSeparator()) {
-                visibleChildren = true;
-                break;
-            }
-        }
-
-        return visibleChildren;
-    }
-
-    
-    /**
-     * The <code>MenuManager</code> implementation of this <code>ContributionManager</code> method
-     * also propagates the dirty flag up the parent chain.
-     * 
-     * @since 3.1
-     */
-    public void markDirty() {
-        super.markDirty();
-        // Can't optimize by short-circuiting when the first dirty manager is encountered,
-        // since non-visible children are not even processed.
-        // That is, it's possible to have a dirty sub-menu under a non-dirty parent menu
-        // even after the parent menu has been updated. 
-        // If items are added/removed in the sub-menu, we still need to propagate the dirty flag up,
-        // even if the sub-menu is already dirty, since the result of isVisible() may change
-        // due to the added/removed items.
-        IContributionManager parent = getParent();
-        if (parent != null) {
-            parent.markDirty();
-        }
-    }
-    
-    /**
-     * Returns whether the menu control is created
-     * and not disposed.
-     * 
-     * @return <code>true</code> if the control is created
-     *	and not disposed, <code>false</code> otherwise
-	 * @since 3.4 protected, was added in 3.1 as private method
-     */
-    protected boolean menuExist() {
-        return menu != null && !menu.isDisposed();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#removeMenuListener(org.eclipse.jface.action.IMenuListener)
-     */
-    public void removeMenuListener(IMenuListener listener) {
-        listeners.remove(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#saveWidgetState()
-     */
-    public void saveWidgetState() {
-    }
-
-    /**
-     * Sets the overrides for this contribution manager
-     * 
-     * @param newOverrides the overrides for the items of this manager
-     * @since 2.0
-     */
-    public void setOverrides(IContributionManagerOverrides newOverrides) {
-        overrides = newOverrides;
-        super.setOverrides(overrides);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#setParent(org.eclipse.jface.action.IContributionManager)
-     */
-    public void setParent(IContributionManager manager) {
-        parent = manager;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#setRemoveAllWhenShown(boolean)
-     */
-    public void setRemoveAllWhenShown(boolean removeAll) {
-        this.removeAllWhenShown = removeAll;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#setVisible(boolean)
-     */
-    public void setVisible(boolean visible) {
-        this.visible = visible;
-    }
-    
-    /**
-	 * Sets the action definition id of this action. This simply allows the menu
-	 * item text to include a short cut if available.  It can be used to
-	 * notify a user of a key combination that will open a quick menu.
-	 * 
-	 * @param definitionId
-	 *            the command definition id
-	 * @since 3.4
-	 */
-    public void setActionDefinitionId(String definitionId) {
-    	this.definitionId = definitionId; 
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#update()
-     */
-    public void update() {
-        updateMenuItem();
-    }
-
-    /**
-     * The <code>MenuManager</code> implementation of this <code>IContributionManager</code>
-     * updates this menu, but not any of its submenus.
-     *
-     * @see #updateAll
-     */
-    public void update(boolean force) {
-        update(force, false);
-    }
-
-    /**
-	 * Get all the items from the implementation's widget.
-	 * 
-	 * @return the menu items
-	 * @since 3.4
-	 */
-    protected Item[] getMenuItems() {
-    	if (menu != null) {
-    		return menu.getItems();
-    	}
-    	return null;
-    }
-
-    /**
-	 * Get an item from the implementation's widget.
-	 * 
-	 * @param index
-	 *            of the item
-	 * @return the menu item
-	 * @since 3.4
-	 */
-    protected Item getMenuItem(int index) {
-    	if (menu !=null) {
-    		return menu.getItem(index);
-    	}
-    	return null;
-    }
-
-    /**
-     * Get the menu item count for the implementation's widget.
-     * 
-     * @return the number of items
-     * @since 3.4
-     */
-    protected int getMenuItemCount() {
-    	if (menu != null) {
-    		return menu.getItemCount();
-    	}
-    	return 0;
-    }
-
-    /**
-	 * Call an <code>IContributionItem</code>'s fill method with the
-	 * implementation's widget. The default is to use the <code>Menu</code>
-	 * widget.<br>
-	 * <code>fill(Menu menu, int index)</code>
-	 * 
-	 * @param ci
-	 *            An <code>IContributionItem</code> whose <code>fill()</code>
-	 *            method should be called.
-	 * @param index
-	 *            The position the <code>fill()</code> method should start
-	 *            inserting at.
-	 * @since 3.4
-	 */
-    protected void doItemFill(IContributionItem ci, int index) {
-        ci.fill(menu, index);
-    }
-
-    /**
-     * Incrementally builds the menu from the contribution items.
-     * This method leaves out double separators and separators in the first 
-     * or last position.
-     *
-     * @param force <code>true</code> means update even if not dirty,
-     *   and <code>false</code> for normal incremental updating
-     * @param recursive <code>true</code> means recursively update 
-     *   all submenus, and <code>false</code> means just this menu
-     */
-    protected void update(boolean force, boolean recursive) {
-        if (isDirty() || force) {
-            if (menuExist()) {
-                // clean contains all active items without double separators
-                IContributionItem[] items = getItems();
-                List clean = new ArrayList(items.length);
-                IContributionItem separator = null;
-                for (int i = 0; i < items.length; ++i) {
-                    IContributionItem ci = items[i];
-                    if (!ci.isVisible()) {
-						continue;
-					}
-                    if (ci.isSeparator()) {
-                        // delay creation until necessary 
-                        // (handles both adjacent separators, and separator at end)
-                        separator = ci;
-                    } else {
-                        if (separator != null) {
-                            if (clean.size() > 0) {
-								clean.add(separator);
-							}
-                            separator = null;
-                        }
-                        clean.add(ci);
-                    }
-                }
-
-                // remove obsolete (removed or non active)
-                Item[] mi = getMenuItems();
-
-                for (int i = 0; i < mi.length; i++) {
-                    Object data = mi[i].getData();
-
-                    if (data == null || !clean.contains(data)) {
-                        mi[i].dispose();
-                    } else if (data instanceof IContributionItem
-                            && ((IContributionItem) data).isDynamic()
-                            && ((IContributionItem) data).isDirty()) {
-                        mi[i].dispose();
-                    }
-                }
-
-                // add new
-                mi = getMenuItems();
-                int srcIx = 0;
-                int destIx = 0;
-
-                for (Iterator e = clean.iterator(); e.hasNext();) {
-                    IContributionItem src = (IContributionItem) e.next();
-                    IContributionItem dest;
-
-                    // get corresponding item in SWT widget
-                    if (srcIx < mi.length) {
-						dest = (IContributionItem) mi[srcIx].getData();
-					} else {
-						dest = null;
-					}
-
-                    if (dest != null && src.equals(dest)) {
-                        srcIx++;
-                        destIx++;
-                    } else if (dest != null && dest.isSeparator()
-                            && src.isSeparator()) {
-                        mi[srcIx].setData(src);
-                        srcIx++;
-                        destIx++;
-                    } else {
-                        int start = getMenuItemCount();
-                        doItemFill(src, destIx);
-                        int newItems = getMenuItemCount() - start;
-                        for (int i = 0; i < newItems; i++) {
-                            Item item = getMenuItem(destIx++);
-                            item.setData(src);
-                        }
-                    }
-
-                    // May be we can optimize this call. If the menu has just
-                    // been created via the call src.fill(fMenuBar, destIx) then
-                    // the menu has already been updated with update(true) 
-                    // (see MenuManager). So if force is true we do it again. But
-                    // we can't set force to false since then information for the
-                    // sub sub menus is lost.
-                    if (recursive) {
-                        IContributionItem item = src;
-                        if (item instanceof SubContributionItem) {
-							item = ((SubContributionItem) item).getInnerItem();
-						}
-                        if (item instanceof IMenuManager) {
-							((IMenuManager) item).updateAll(force);
-						}
-                    }
-
-                }
-
-                // remove any old menu items not accounted for
-                for (; srcIx < mi.length; srcIx++) {
-					mi[srcIx].dispose();
-				}
-
-                setDirty(false);
-            }
-        } else {
-            // I am not dirty. Check if I must recursivly walk down the hierarchy.
-            if (recursive) {
-                IContributionItem[] items = getItems();
-                for (int i = 0; i < items.length; ++i) {
-                    IContributionItem ci = items[i];
-                    if (ci instanceof IMenuManager) {
-                        IMenuManager mm = (IMenuManager) ci;
-                        if (mm.isVisible()) {
-                            mm.updateAll(force);
-                        }
-                    }
-                }
-            }
-        }
-        updateMenuItem();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
-     */
-    public void update(String property) {
-        IContributionItem items[] = getItems();
-
-        for (int i = 0; i < items.length; i++) {
-			items[i].update(property);
-		}
-        
-        if (menu != null && !menu.isDisposed() && menu.getParentItem() != null) {
-        	if (IAction.TEXT.equals(property)) {
-                String text = getOverrides().getText(this);
-
-                if (text == null) {
-    				text = getMenuText();
-    			}
-
-                if (text != null) {
-                    ExternalActionManager.ICallback callback = ExternalActionManager
-                            .getInstance().getCallback();
-
-                    if (callback != null) {
-                        int index = text.indexOf('&');
-
-                        if (index >= 0 && index < text.length() - 1) {
-                            char character = Character.toUpperCase(text
-                                    .charAt(index + 1));
-
-                            if (callback.isAcceleratorInUse(SWT.ALT | character)) {
-                                if (index == 0) {
-    								text = text.substring(1);
-    							} else {
-    								text = text.substring(0, index)
-                                            + text.substring(index + 1);
-    							}
-                            }
-                        }
-                    }
-
-                    menu.getParentItem().setText(text);
-                }
-        	} else if (IAction.IMAGE.equals(property) && image != null) {
-    			LocalResourceManager localManager = new LocalResourceManager(JFaceResources
-    					.getResources());
-    			menu.getParentItem().setImage(localManager.createImage(image));
-    			disposeOldImages();
-    			imageManager = localManager;
-        	}
-        }
-    }
-
-	/**
-	 * Dispose any images allocated for this menu
-	 */
-	private void disposeOldImages() {
-		if (imageManager != null) {
-			imageManager.dispose();
-			imageManager = null;
-		}
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#updateAll(boolean)
-     */
-    public void updateAll(boolean force) {
-        update(force, true);
-    }
-
-    /**
-     * Updates the menu item for this sub menu.
-     * The menu item is disabled if this sub menu is empty.
-     * Does nothing if this menu is not a submenu.
-     */
-    private void updateMenuItem() {
-        /*
-         * Commented out until proper solution to enablement of
-         * menu item for a sub-menu is found. See bug 30833 for
-         * more details.
-         *  
-         if (menuItem != null && !menuItem.isDisposed() && menuExist()) {
-         IContributionItem items[] = getItems();
-         boolean enabled = false;
-         for (int i = 0; i < items.length; i++) {
-         IContributionItem item = items[i];
-         enabled = item.isEnabled();
-         if(enabled) break;
-         }
-         // Workaround for 1GDDCN2: SWT:Linux - MenuItem.setEnabled() always causes a redraw
-         if (menuItem.getEnabled() != enabled)
-         menuItem.setEnabled(enabled);
-         }
-         */
-        // Partial fix for bug #34969 - diable the menu item if no
-        // items in sub-menu (for context menus).
-        if (menuItem != null && !menuItem.isDisposed() && menuExist()) {
-            boolean enabled = removeAllWhenShown || menu.getItemCount() > 0;
-            // Workaround for 1GDDCN2: SWT:Linux - MenuItem.setEnabled() always causes a redraw
-            if (menuItem.getEnabled() != enabled) {
-                // We only do this for context menus (for bug #34969)
-                Menu topMenu = menu;
-                while (topMenu.getParentMenu() != null) {
-					topMenu = topMenu.getParentMenu();
-				}
-                if ((topMenu.getStyle() & SWT.BAR) == 0) {
-					menuItem.setEnabled(enabled);
-				}
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Separator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Separator.java
deleted file mode 100644
index 5f120ee..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/Separator.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * A separator is a special kind of contribution item which acts
- * as a visual separator and, optionally, acts as a group marker.
- * Unlike group markers, separators do have a visual representation for
- * menus and toolbars.
- * <p>
- * This class may be instantiated; it is not intended to be 
- * subclassed outside the framework.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class Separator extends AbstractGroupMarker {
-    /**
-     * Creates a separator which does not start a new group.
-     */
-    public Separator() {
-        super();
-    }
-
-    /**
-     * Creates a new separator which also defines a new group having the given group name.
-     * The group name must not be <code>null</code> or the empty string.
-     * The group name is also used as the item id.
-     * 
-     * @param groupName the group name of the separator
-     */
-    public Separator(String groupName) {
-        super(groupName);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     * Fills the given menu with a SWT separator MenuItem.
-     */
-    public void fill(Menu menu, int index) {
-        if (index >= 0) {
-			new MenuItem(menu, SWT.SEPARATOR, index);
-		} else {
-			new MenuItem(menu, SWT.SEPARATOR);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     * Fills the given tool bar with a SWT separator ToolItem.
-     */
-    public void fill(ToolBar toolbar, int index) {
-        if (index >= 0) {
-			new ToolItem(toolbar, SWT.SEPARATOR, index);
-		} else {
-			new ToolItem(toolbar, SWT.SEPARATOR);
-		}
-    }
-
-    /** 
-     * The <code>Separator</code> implementation of this <code>IContributionItem</code> 
-     * method returns <code>true</code>
-     */
-    public boolean isSeparator() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLine.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLine.java
deleted file mode 100644
index f65f72f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLine.java
+++ /dev/null
@@ -1,679 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.ProgressIndicator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Display;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * A StatusLine control is a SWT Composite with a horizontal layout which hosts
- * a number of status indication controls. Typically it is situated below the
- * content area of the window.
- * <p>
- * By default a StatusLine has two predefined status controls: a MessageLine and
- * a ProgressIndicator and it provides API for easy access.
- * </p>
- * <p>
- * This is an internal class, not intended to be used outside the JFace
- * framework.
- * </p>
- */
-/* package */class StatusLine extends Composite implements IProgressMonitor {
-
-	/** Horizontal gaps between items. */
-	public static final int GAP = 3;
-
-	/** Progress bar creation is delayed by this ms */
-	public static final int DELAY_PROGRESS = 500;
-
-	/** visibility state of the progressbar */
-	protected boolean fProgressIsVisible = false;
-
-	/** visibility state of the cancle button */
-	protected boolean fCancelButtonIsVisible = false;
-
-	/** enablement state of the cancle button */
-	protected boolean fCancelEnabled = false;
-
-	/** name of the task */
-	protected String fTaskName;
-
-	/** is the task is cancled */
-	protected boolean fIsCanceled;
-
-	/** the start time of the task */
-	protected long fStartTime;
-
-	private Cursor fStopButtonCursor;
-
-	/** the message text */
-	protected String fMessageText;
-
-	/** the message image */
-	protected Image fMessageImage;
-
-	/** the error text */
-	protected String fErrorText;
-
-	/** the error image */
-	protected Image fErrorImage;
-
-	/** the message label */
-	protected CLabel fMessageLabel;
-
-	/** the composite parent of the progress bar */
-	protected Composite fProgressBarComposite;
-
-	/** the progress bar */
-	protected ProgressIndicator fProgressBar;
-
-	/** the toolbar */
-	protected ToolBar fToolBar;
-
-	/** the cancle button */
-	protected ToolItem fCancelButton;
-
-	/** stop image descriptor */
-	protected static ImageDescriptor fgStopImage = ImageDescriptor
-			.createFromFile(StatusLine.class, "images/stop.gif");//$NON-NLS-1$
-	static {
-		JFaceResources.getImageRegistry().put(
-				"org.eclipse.jface.parts.StatusLine.stopImage", fgStopImage);//$NON-NLS-1$
-	}
-
-	/**
-	 * Layout the contribution item controls on the status line.
-	 */
-	public class StatusLineLayout extends Layout {
-		private final StatusLineLayoutData DEFAULT_DATA = new StatusLineLayoutData();
-
-		public Point computeSize(Composite composite, int wHint, int hHint,
-				boolean changed) {
-
-			if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-
-			Control[] children = composite.getChildren();
-			int totalWidth = 0;
-			int maxHeight = 0;
-			int totalCnt = 0;
-			for (int i = 0; i < children.length; i++) {
-				boolean useWidth = true;
-				Control w = children[i];
-				if (w == fProgressBarComposite && !fProgressIsVisible) {
-					useWidth = false;
-				} else if (w == fToolBar && !fCancelButtonIsVisible) {
-					useWidth = false;
-				}
-				StatusLineLayoutData data = (StatusLineLayoutData) w
-						.getLayoutData();
-				if (data == null) {
-					data = DEFAULT_DATA;
-				}
-				Point e = w.computeSize(data.widthHint, data.heightHint,
-						changed);
-				if (useWidth) {
-					totalWidth += e.x;
-					totalCnt++;
-				}
-				maxHeight = Math.max(maxHeight, e.y);
-			}
-			if (totalCnt > 0) {
-				totalWidth += (totalCnt - 1) * GAP;
-			}
-			if (totalWidth <= 0) {
-				totalWidth = maxHeight * 4;
-			}
-			return new Point(totalWidth, maxHeight);
-		}
-
-		public void layout(Composite composite, boolean flushCache) {
-
-			if (composite == null) {
-				return;
-			}
-
-			// StatusLineManager skips over the standard status line widgets
-			// in its update method. There is thus a dependency
-			// between the layout of the standard widgets and the update method.
-
-			// Make sure cancel button and progress bar are before
-			// contributions.
-			fMessageLabel.moveAbove(null);
-			fToolBar.moveBelow(fMessageLabel);
-			fProgressBarComposite.moveBelow(fToolBar);
-
-			Rectangle rect = composite.getClientArea();
-			Control[] children = composite.getChildren();
-			int count = children.length;
-
-			int ws[] = new int[count];
-
-			int h = rect.height;
-			int totalWidth = -GAP;
-			for (int i = 0; i < count; i++) {
-				Control w = children[i];
-				if (w == fProgressBarComposite && !fProgressIsVisible) {
-					continue;
-				}
-				if (w == fToolBar && !fCancelButtonIsVisible) {
-					continue;
-				}
-				StatusLineLayoutData data = (StatusLineLayoutData) w
-						.getLayoutData();
-				if (data == null) {
-					data = DEFAULT_DATA;
-				}
-				int width = w.computeSize(data.widthHint, h, flushCache).x;
-				ws[i] = width;
-				totalWidth += width + GAP;
-			}
-
-			int diff = rect.width - totalWidth;
-			ws[0] += diff; // make the first StatusLabel wider
-
-			// Check against minimum recommended width
-			final int msgMinWidth = rect.width / 3;
-			if (ws[0] < msgMinWidth) {
-				diff = ws[0] - msgMinWidth;
-				ws[0] = msgMinWidth;
-			} else {
-				diff = 0;
-			}
-
-			// Take space away from the contributions first.
-			for (int i = count - 1; i >= 0 && diff < 0; --i) {
-				int min = Math.min(ws[i], -diff);
-				ws[i] -= min;
-				diff += min + GAP;
-			}
-
-			int x = rect.x;
-			int y = rect.y;
-			for (int i = 0; i < count; i++) {
-				Control w = children[i];
-				/*
-				 * Workaround for Linux Motif: Even if the progress bar and
-				 * cancel button are not set to be visible ad of width 0, they
-				 * still draw over the first pixel of the editor contributions.
-				 * 
-				 * The fix here is to draw the progress bar and cancel button
-				 * off screen if they are not visible.
-				 */
-				if (w == fProgressBarComposite && !fProgressIsVisible
-						|| w == fToolBar && !fCancelButtonIsVisible) {
-					w.setBounds(x + rect.width, y, ws[i], h);
-					continue;
-				}
-				w.setBounds(x, y, ws[i], h);
-				if (ws[i] > 0) {
-					x += ws[i] + GAP;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Create a new StatusLine as a child of the given parent.
-	 * 
-	 * @param parent
-	 *            the parent for this Composite
-	 * @param style
-	 *            the style used to create this widget
-	 */
-	public StatusLine(Composite parent, int style) {
-		super(parent, style);
-
-		addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				handleDispose();
-			}
-		});
-
-		// StatusLineManager skips over the standard status line widgets
-		// in its update method. There is thus a dependency
-		// between this code defining the creation and layout of the standard
-		// widgets and the update method.
-
-		setLayout(new StatusLineLayout());
-
-		fMessageLabel = new CLabel(this, SWT.NONE);// SWT.SHADOW_IN);
-		// Color[] colors = new Color[2];
-		// colors[0] =
-		// parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW);
-		// colors[1] = fMessageLabel.getBackground();
-		// int[] gradient = new int[] {JFaceColors.STATUS_PERCENT};
-		// fMessageLabel.setBackground(colors, gradient);
-
-		fProgressIsVisible = false;
-		fCancelEnabled = false;
-
-		fToolBar = new ToolBar(this, SWT.FLAT);
-		fCancelButton = new ToolItem(fToolBar, SWT.PUSH);
-		fCancelButton.setImage(fgStopImage.createImage());
-		fCancelButton.setToolTipText(JFaceResources
-				.getString("Cancel_Current_Operation")); //$NON-NLS-1$
-		fCancelButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				setCanceled(true);
-			}
-		});
-		fCancelButton.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				Image i = fCancelButton.getImage();
-				if ((i != null) && (!i.isDisposed())) {
-					i.dispose();
-				}
-			}
-		});
-
-		// We create a composite to create the progress bar in
-		// so that it can be centered. See bug #32331
-		fProgressBarComposite = new Composite(this, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.horizontalSpacing = 0;
-		layout.verticalSpacing = 0;
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		fProgressBarComposite.setLayout(layout);
-		fProgressBar = new ProgressIndicator(fProgressBarComposite);
-		fProgressBar.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
-				| GridData.GRAB_VERTICAL));
-
-		fStopButtonCursor = new Cursor(getDisplay(), SWT.CURSOR_ARROW);
-	}
-
-	/**
-	 * Notifies that the main task is beginning.
-	 * 
-	 * @param name
-	 *            the name (or description) of the main task
-	 * @param totalWork
-	 *            the total number of work units into which the main task is
-	 *            been subdivided. If the value is 0 or UNKNOWN the
-	 *            implemenation is free to indicate progress in a way which
-	 *            doesn't require the total number of work units in advance. In
-	 *            general users should use the UNKNOWN value if they don't know
-	 *            the total amount of work units.
-	 */
-	public void beginTask(String name, int totalWork) {
-		final long timestamp = System.currentTimeMillis();
-		fStartTime = timestamp;
-		final boolean animated = (totalWork == UNKNOWN || totalWork == 0);
-		// make sure the progress bar is made visible while
-		// the task is running. Fixes bug 32198 for the non-animated case.
-		Runnable timer = new Runnable() {
-			public void run() {
-				StatusLine.this.startTask(timestamp, animated);
-			}
-		};
-		if (fProgressBar == null) {
-			return;
-		}
-
-		fProgressBar.getDisplay().timerExec(DELAY_PROGRESS, timer);
-		if (!animated) {
-			fProgressBar.beginTask(totalWork);
-		}
-		if (name == null) {
-			fTaskName = Util.ZERO_LENGTH_STRING;
-		} else {
-			fTaskName = name;
-		}
-		setMessage(fTaskName);
-	}
-
-	/**
-	 * Notifies that the work is done; that is, either the main task is
-	 * completed or the user cancelled it. Done() can be called more than once;
-	 * an implementation should be prepared to handle this case.
-	 */
-	public void done() {
-
-		fStartTime = 0;
-
-		if (fProgressBar != null) {
-			fProgressBar.sendRemainingWork();
-			fProgressBar.done();
-		}
-		setMessage(null);
-
-		hideProgress();
-	}
-
-	/**
-	 * Returns the status line's progress monitor
-	 * 
-	 * @return {@link IProgressMonitor} the progress monitor
-	 */
-	public IProgressMonitor getProgressMonitor() {
-		return this;
-	}
-
-	/**
-	 * @private
-	 */
-	protected void handleDispose() {
-		if (fStopButtonCursor != null) {
-			fStopButtonCursor.dispose();
-			fStopButtonCursor = null;
-		}
-		if (fProgressBar != null) {
-			fProgressBar.dispose();
-			fProgressBar = null;
-		}
-	}
-
-	/**
-	 * Hides the Cancel button and ProgressIndicator.
-	 * 
-	 */
-	protected void hideProgress() {
-
-		if (fProgressIsVisible && !isDisposed()) {
-			fProgressIsVisible = false;
-			fCancelEnabled = false;
-			fCancelButtonIsVisible = false;
-			if (fToolBar != null && !fToolBar.isDisposed()) {
-				fToolBar.setVisible(false);
-			}
-			if (fProgressBarComposite != null
-					&& !fProgressBarComposite.isDisposed()) {
-				fProgressBarComposite.setVisible(false);
-			}
-			layout();
-		}
-	}
-
-	/**
-	 * @see IProgressMonitor#internalWorked(double)
-	 */
-	public void internalWorked(double work) {
-		if (!fProgressIsVisible) {
-			if (System.currentTimeMillis() - fStartTime > DELAY_PROGRESS) {
-				showProgress();
-			}
-		}
-
-		if (fProgressBar != null) {
-			fProgressBar.worked(work);
-		}
-	}
-
-	/**
-	 * Returns true if the user does some UI action to cancel this operation.
-	 * (like hitting the Cancel button on the progress dialog). The long running
-	 * operation typically polls isCanceled().
-	 */
-	public boolean isCanceled() {
-		return fIsCanceled;
-	}
-
-	/**
-	 * Returns
-	 * <code>true</true> if the ProgressIndication provides UI for canceling
-	 * a long running operation.
-	 * @return <code>true</true> if the ProgressIndication provides UI for canceling
-	 */
-	public boolean isCancelEnabled() {
-		return fCancelEnabled;
-	}
-
-	/**
-	 * Sets the cancel status. This method is usually called with the argument
-	 * false if a client wants to abort a cancel action.
-	 */
-	public void setCanceled(boolean b) {
-		fIsCanceled = b;
-		if (fCancelButton != null) {
-			fCancelButton.setEnabled(!b);
-		}
-	}
-
-	/**
-	 * Controls whether the ProgressIndication provides UI for canceling a long
-	 * running operation. If the ProgressIndication is currently visible calling
-	 * this method may have a direct effect on the layout because it will make a
-	 * cancel button visible.
-	 * 
-	 * @param enabled
-	 *            <code>true</true> if cancel should be enabled
-	 */
-	public void setCancelEnabled(boolean enabled) {
-		fCancelEnabled = enabled;
-		if (fProgressIsVisible && !fCancelButtonIsVisible && enabled) {
-			showButton();
-			layout();
-		}
-		if (fCancelButton != null && !fCancelButton.isDisposed()) {
-			fCancelButton.setEnabled(enabled);
-		}
-	}
-
-	/**
-	 * Sets the error message text to be displayed on the status line. The image
-	 * on the status line is cleared.
-	 * 
-	 * @param message
-	 *            the error message, or <code>null</code> for no error message
-	 */
-	public void setErrorMessage(String message) {
-		setErrorMessage(null, message);
-	}
-
-	/**
-	 * Sets an image and error message text to be displayed on the status line.
-	 * 
-	 * @param image
-	 *            the image to use, or <code>null</code> for no image
-	 * @param message
-	 *            the error message, or <code>null</code> for no error message
-	 */
-	public void setErrorMessage(Image image, String message) {
-		fErrorText = trim(message);
-		fErrorImage = image;
-		updateMessageLabel();
-	}
-
-	/**
-	 * Applies the given font to this status line.
-	 */
-	public void setFont(Font font) {
-		super.setFont(font);
-		Control[] children = getChildren();
-		for (int i = 0; i < children.length; i++) {
-			children[i].setFont(font);
-		}
-	}
-
-	/**
-	 * Sets the message text to be displayed on the status line. The image on
-	 * the status line is cleared.
-	 * 
-	 * @param message
-	 *            the error message, or <code>null</code> for no error message
-	 */
-	public void setMessage(String message) {
-		setMessage(null, message);
-	}
-
-	/**
-	 * Sets an image and a message text to be displayed on the status line.
-	 * 
-	 * @param image
-	 *            the image to use, or <code>null</code> for no image
-	 * @param message
-	 *            the message, or <code>null</code> for no message
-	 */
-	public void setMessage(Image image, String message) {
-		fMessageText = trim(message);
-		fMessageImage = image;
-		updateMessageLabel();
-	}
-
-	/**
-	 * @see IProgressMonitor#setTaskName(java.lang.String)
-	 */
-	public void setTaskName(String name) {
-		if (name == null)
-			fTaskName = Util.ZERO_LENGTH_STRING;
-		else
-			fTaskName = name;
-	}
-
-	/**
-	 * Makes the Cancel button visible.
-	 * 
-	 */
-	protected void showButton() {
-		if (fToolBar != null && !fToolBar.isDisposed()) {
-			fToolBar.setVisible(true);
-			fToolBar.setEnabled(true);
-			fToolBar.setCursor(fStopButtonCursor);
-			fCancelButtonIsVisible = true;
-		}
-	}
-
-	/**
-	 * Shows the Cancel button and ProgressIndicator.
-	 * 
-	 */
-	protected void showProgress() {
-		if (!fProgressIsVisible && !isDisposed()) {
-			fProgressIsVisible = true;
-			if (fCancelEnabled) {
-				showButton();
-			}
-			if (fProgressBarComposite != null
-					&& !fProgressBarComposite.isDisposed()) {
-				fProgressBarComposite.setVisible(true);
-			}
-			layout();
-		}
-	}
-
-	/**
-	 * @private
-	 */
-	void startTask(final long timestamp, final boolean animated) {
-		if (!fProgressIsVisible && fStartTime == timestamp) {
-			showProgress();
-			if (animated) {
-				if (fProgressBar != null && !fProgressBar.isDisposed()) {
-					fProgressBar.beginAnimatedTask();
-				}
-			}
-		}
-	}
-
-	/**
-	 * Notifies that a subtask of the main task is beginning. Subtasks are
-	 * optional; the main task might not have subtasks.
-	 * 
-	 * @param name
-	 *            the name (or description) of the subtask
-	 * @see IProgressMonitor#subTask(String)
-	 */
-	public void subTask(String name) {
-
-		String newName;
-		if (name == null)
-			newName = Util.ZERO_LENGTH_STRING;
-		else
-			newName = name;
-
-		String text;
-		if (fTaskName.length() == 0) {
-			text = newName;
-		} else {
-			text = JFaceResources.format(
-					"Set_SubTask", new Object[] { fTaskName, newName });//$NON-NLS-1$
-		}
-		setMessage(text);
-	}
-
-	/**
-	 * Trims the message to be displayable in the status line. This just pulls
-	 * out the first line of the message. Allows null.
-	 */
-	String trim(String message) {
-		if (message == null) {
-			return null;
-		}
-		message = Util.replaceAll(message, "&", "&&"); //$NON-NLS-1$//$NON-NLS-2$
-		int cr = message.indexOf('\r');
-		int lf = message.indexOf('\n');
-		if (cr == -1 && lf == -1) {
-			return message;
-		}
-		int len;
-		if (cr == -1) {
-			len = lf;
-		} else if (lf == -1) {
-			len = cr;
-		} else {
-			len = Math.min(cr, lf);
-		}
-		return message.substring(0, len);
-	}
-
-	/**
-	 * Updates the message label widget.
-	 */
-	protected void updateMessageLabel() {
-		if (fMessageLabel != null && !fMessageLabel.isDisposed()) {
-			Display display = fMessageLabel.getDisplay();
-			if ((fErrorText != null && fErrorText.length() > 0)
-					|| fErrorImage != null) {
-				fMessageLabel.setForeground(JFaceColors.getErrorText(display));
-				fMessageLabel.setText(fErrorText);
-				fMessageLabel.setImage(fErrorImage);
-			} else {
-				fMessageLabel.setForeground(display
-						.getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));
-				fMessageLabel.setText(fMessageText == null ? "" : fMessageText); //$NON-NLS-1$
-				fMessageLabel.setImage(fMessageImage);
-			}
-		}
-	}
-
-	/**
-	 * @see IProgressMonitor#worked(int)
-	 */
-	public void worked(int work) {
-		internalWorked(work);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java
deleted file mode 100644
index 6ccc79b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineContributionItem.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-
-/**
- * A contribution item to be used with status line managers.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * 
- * @since 3.4
- */
-public class StatusLineContributionItem extends ContributionItem {
-
-	private final static int DEFAULT_CHAR_WIDTH = 40;
-
-	private int charWidth;
-
-	private CLabel label;
-
-	/**
-	 * The composite into which this contribution item has been placed. This
-	 * will be <code>null</code> if this instance has not yet been
-	 * initialized.
-	 */
-	private Composite statusLine = null;
-
-	private String text = Util.ZERO_LENGTH_STRING;
-
-	private int widthHint = -1;
-
-	private int heightHint = -1;
-
-	/**
-	 * Creates a status line contribution item with the given id.
-	 * 
-	 * @param id
-	 *            the contribution item's id, or <code>null</code> if it is to
-	 *            have no id
-	 */
-	public StatusLineContributionItem(String id) {
-		this(id, DEFAULT_CHAR_WIDTH);
-	}
-
-	/**
-	 * Creates a status line contribution item with the given id that displays
-	 * the given number of characters.
-	 * 
-	 * @param id
-	 *            the contribution item's id, or <code>null</code> if it is to
-	 *            have no id
-	 * @param charWidth
-	 *            the number of characters to display
-	 */
-	public StatusLineContributionItem(String id, int charWidth) {
-		super(id);
-		this.charWidth = charWidth;
-		setVisible(false); // no text to start with
-	}
-
-	public void fill(Composite parent) {
-		statusLine = parent;
-
-		Label sep = new Label(parent, SWT.SEPARATOR);
-		label = new CLabel(statusLine, SWT.SHADOW_NONE);
-
-		if (widthHint < 0) {
-			GC gc = new GC(statusLine);
-			gc.setFont(statusLine.getFont());
-			FontMetrics fm = gc.getFontMetrics();
-			widthHint = fm.getAverageCharWidth() * charWidth;
-			heightHint = fm.getHeight();
-			gc.dispose();
-		}
-
-		StatusLineLayoutData data = new StatusLineLayoutData();
-		data.widthHint = widthHint;
-		label.setLayoutData(data);
-		label.setText(text);
-
-		data = new StatusLineLayoutData();
-		data.heightHint = heightHint;
-		sep.setLayoutData(data);
-	}
-
-	/**
-	 * An accessor for the current location of this status line contribution
-	 * item -- relative to the display.
-	 * 
-	 * @return The current location of this status line; <code>null</code> if
-	 *         not yet initialized.
-	 */
-	public Point getDisplayLocation() {
-		if ((label != null) && (statusLine != null)) {
-			return statusLine.toDisplay(label.getLocation());
-		}
-
-		return null;
-	}
-
-	/**
-	 * Retrieves the text that is being displayed in the status line.
-	 * 
-	 * @return the text that is currently being displayed
-	 */
-	public String getText() {
-		return text;
-	}
-
-	/**
-	 * Sets the text to be displayed in the status line.
-	 * 
-	 * @param text
-	 *            the text to be displayed, must not be <code>null</code>
-	 */
-	public void setText(String text) {
-		Assert.isNotNull(text);
-
-		this.text = escape(text);
-
-		if (label != null && !label.isDisposed()) {
-			label.setText(this.text);
-		}
-
-		if (this.text.length() == 0) {
-			if (isVisible()) {
-				setVisible(false);
-				IContributionManager contributionManager = getParent();
-
-				if (contributionManager != null) {
-					contributionManager.update(true);
-				}
-			}
-		} else {
-			if (!isVisible()) {
-				setVisible(true);
-				IContributionManager contributionManager = getParent();
-
-				if (contributionManager != null) {
-					contributionManager.update(true);
-				}
-			}
-		}
-	}
-
-	private String escape(String text) {
-		return Util.replaceAll(text, "&", "&&");  //$NON-NLS-1$//$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineLayoutData.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineLayoutData.java
deleted file mode 100644
index df93ec5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineLayoutData.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.SWT;
-
-/**
- * Represents the layout data object for <code>Control</code> within the status line.
- * To set a <code>StatusLineLayoutData</code> object into a <code>Control</code>, use
- * the <code>setLayoutData()</code> method. 
- * <p>
- * NOTE: Do not reuse <code>StatusLineLayoutData</code> objects. Every control in the
- * status line must have a unique <code>StatusLineLayoutData</code> instance or
- * <code>null</code>.
- * </p>
- * 
- * @since 2.1
- */
-public class StatusLineLayoutData {
-    /**
-     * The <code>widthHint</code> specifies a minimum width for
-     * the <code>Control</code>. A value of <code>SWT.DEFAULT</code>
-     * indicates that no minimum width is specified.
-     *
-     * The default value is <code>SWT.DEFAULT</code>.
-     */
-    public int widthHint = SWT.DEFAULT;
-
-    /**
-     * The <code>heightHint</code> specifies a minimum height for
-     * the <code>Control</code>. A value of <code>SWT.DEFAULT</code>
-     * indicates that no minimum height is specified.
-     *
-     * The default value is <code>SWT.DEFAULT</code>.
-     */
-    public int heightHint = SWT.DEFAULT;
-
-    /**
-     * Creates an initial status line layout data object.
-     */
-    public StatusLineLayoutData() {
-        super();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
deleted file mode 100644
index a7a92f5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A status line manager is a contribution manager which realizes itself and its items
- * in a status line control.
- * <p>
- * This class may be instantiated; it may also be subclassed if a more
- * sophisticated layout is required.
- * </p>
- */
-public class StatusLineManager extends ContributionManager implements
-        IStatusLineManager {
-
-    /**
-     * Identifier of group marker used to position contributions at the beginning
-     * of the status line.
-     * 
-     * @since 3.0
-     */
-    public static final String BEGIN_GROUP = "BEGIN_GROUP"; //$NON-NLS-1$
-
-    /**
-     * Identifier of group marker used to position contributions in the middle
-     * of the status line.
-     * 
-     * @since 3.0
-     */
-    public static final String MIDDLE_GROUP = "MIDDLE_GROUP"; //$NON-NLS-1$
-
-    /**
-     * Identifier of group marker used to position contributions at the end
-     * of the status line.
-     * 
-     * @since 3.0
-     */
-    public static final String END_GROUP = "END_GROUP"; //$NON-NLS-1$
-
-    /**
-     * The status line control; <code>null</code> before
-     * creation and after disposal.
-     */
-    private Composite statusLine = null;
-
-    /**
-     * Creates a new status line manager.
-     * Use the <code>createControl</code> method to create the 
-     * status line control.
-     */
-    public StatusLineManager() {
-    	add(new GroupMarker(BEGIN_GROUP));
-        add(new GroupMarker(MIDDLE_GROUP));
-        add(new GroupMarker(END_GROUP));
-    }
-
-    /**
-     * Creates and returns this manager's status line control. 
-     * Does not create a new control if one already exists.
-     * <p>
-     * Note: Since 3.0 the return type is <code>Control</code>.  Before 3.0, the return type was 
-     *   the package-private class <code>StatusLine</code>.
-     * </p>
-     *
-     * @param parent the parent control
-     * @return the status line control
-     */
-    public Control createControl(Composite parent) {
-        return createControl(parent, SWT.NONE);
-    }
-
-    /**
-     * Creates and returns this manager's status line control. 
-     * Does not create a new control if one already exists.
-     *
-     * @param parent the parent control
-     * @param style the style for the control
-     * @return the status line control
-     * @since 3.0
-     */
-    public Control createControl(Composite parent, int style) {
-        if (!statusLineExist() && parent != null) {
-            statusLine = new StatusLine(parent, style);
-            update(false);
-        }
-        return statusLine;
-    }
-
-    /**
-     * Disposes of this status line manager and frees all allocated SWT resources.
-     * Notifies all contribution items of the dispose. Note that this method does
-     * not clean up references between this status line manager and its associated
-     * contribution items. Use <code>removeAll</code> for that purpose.
-     */
-    public void dispose() {
-        if (statusLineExist()) {
-			statusLine.dispose();
-		}
-        statusLine = null;
-
-        IContributionItem items[] = getItems();
-        for (int i = 0; i < items.length; i++) {
-            items[i].dispose();
-        }
-    }
-
-    /**
-     * Returns the control used by this StatusLineManager.
-     * 
-     * @return the control used by this manager
-     */
-    public Control getControl() {
-        return statusLine;
-    }
-
-    /**
-     * Returns the progress monitor delegate. Override this method
-     * to provide your own object used to handle progress.
-     * 
-     * @return the IProgressMonitor delegate
-     * @since 3.0
-     */
-    protected IProgressMonitor getProgressMonitorDelegate() {
-        return (IProgressMonitor) getControl();
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IStatusLineManager
-     */
-    public IProgressMonitor getProgressMonitor() {
-
-        return new IProgressMonitorWithBlocking() {
-
-            IProgressMonitor progressDelegate = getProgressMonitorDelegate();
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String, int)
-             */
-            public void beginTask(String name, int totalWork) {
-                progressDelegate.beginTask(name, totalWork);
-
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#done()
-             */
-            public void done() {
-                progressDelegate.done();
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
-             */
-            public void internalWorked(double work) {
-                progressDelegate.internalWorked(work);
-
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#isCanceled()
-             */
-            public boolean isCanceled() {
-                return progressDelegate.isCanceled();
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#setCanceled(boolean)
-             */
-            public void setCanceled(boolean value) {
-                //Don't bother updating for disposed status
-                if (statusLine.isDisposed()) {
-					return;
-				}
-                progressDelegate.setCanceled(value);
-
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-             */
-            public void setTaskName(String name) {
-                progressDelegate.setTaskName(name);
-
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-             */
-            public void subTask(String name) {
-                progressDelegate.subTask(name);
-
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
-             */
-            public void worked(int work) {
-                progressDelegate.worked(work);
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-             */
-            public void clearBlocked() {
-                //Do nothing here as we let the modal context handle it
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-             */
-            public void setBlocked(IStatus reason) {
-                //			Do nothing here as we let the modal context handle it
-            }
-        };
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatueLineManager
-     */
-    public boolean isCancelEnabled() {
-        return statusLineExist() && ((StatusLine) statusLine).isCancelEnabled();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatueLineManager
-     */
-    public void setCancelEnabled(boolean enabled) {
-        if (statusLineExist()) {
-			((StatusLine) statusLine).setCancelEnabled(enabled);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setErrorMessage(String message) {
-        if (statusLineExist()) {
-			((StatusLine) statusLine).setErrorMessage(message);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setErrorMessage(Image image, String message) {
-        if (statusLineExist()) {
-			((StatusLine) statusLine).setErrorMessage(image, message);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setMessage(String message) {
-        if (statusLineExist()) {
-			((StatusLine) statusLine).setMessage(message);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setMessage(Image image, String message) {
-        if (statusLineExist()) {
-			((StatusLine) statusLine).setMessage(image, message);
-		}
-    }
-
-    /**
-     * Returns whether the status line control is created
-     * and not disposed.
-     * 
-     * @return <code>true</code> if the control is created
-     *	and not disposed, <code>false</code> otherwise
-     */
-    private boolean statusLineExist() {
-        return statusLine != null && !statusLine.isDisposed();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void update(boolean force) {
-
-        //boolean DEBUG= false;
-
-        if (isDirty() || force) {
-
-            if (statusLineExist()) {
-                statusLine.setRedraw(false);
-
-                // NOTE: the update algorithm is non-incremental.
-                // An incremental algorithm requires that SWT items can be created in the middle of the list
-                // but the ContributionItem.fill(Composite) method used here does not take an index, so this
-                // is not possible.
-
-                Control ws[] = statusLine.getChildren();
-                for (int i = 0; i < ws.length; i++) {
-                    Control w = ws[i];
-                    Object data = w.getData();
-                    if (data instanceof IContributionItem) {
-                        w.dispose();
-                    }
-                }
-
-                int oldChildCount = statusLine.getChildren().length;
-                IContributionItem[] items = getItems();
-                for (int i = 0; i < items.length; ++i) {
-                    IContributionItem ci = items[i];
-                    if (ci.isVisible()) {
-                        ci.fill(statusLine);
-                        // associate controls with contribution item
-                        Control[] newChildren = statusLine.getChildren();
-                        for (int j = oldChildCount; j < newChildren.length; j++) {
-                            newChildren[j].setData(ci);
-                        }
-                        oldChildCount = newChildren.length;
-                    }
-                }
-
-                setDirty(false);
-
-                statusLine.layout();
-                statusLine.setRedraw(true);
-            }
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionItem.java
deleted file mode 100644
index f1cb77d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionItem.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * A <code>SubContributionItem</code> is a wrapper for an <code>IContributionItem</code>.  
- * It is used within a <code>SubContributionManager</code> to control the visibility
- * of items.
- * <p>
- * This class is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class SubContributionItem implements IContributionItem {
-    /**
-     * The visibility of the item.
-     */
-    private boolean visible;
-
-    /**
-     * The inner item for this contribution.  
-     */
-    private IContributionItem innerItem;
-
-    /**
-     * Creates a new <code>SubContributionItem</code>.
-     * @param item the contribution item to be wrapped
-     */
-    public SubContributionItem(IContributionItem item) {
-        innerItem = item;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * delegates to the inner item. Subclasses may override.
-     */
-    public void dispose() {
-        innerItem.dispose();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void fill(Composite parent) {
-        if (visible) {
-			innerItem.fill(parent);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void fill(Menu parent, int index) {
-        if (visible) {
-			innerItem.fill(parent, index);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void fill(ToolBar parent, int index) {
-        if (visible) {
-			innerItem.fill(parent, index);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public String getId() {
-        return innerItem.getId();
-    }
-
-    /**
-     * Returns the inner contribution item.
-     *
-     * @return the inner contribution item
-     */
-    public IContributionItem getInnerItem() {
-        return innerItem;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public boolean isEnabled() {
-        return innerItem.isEnabled();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public boolean isDirty() {
-        return innerItem.isDirty();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public boolean isDynamic() {
-        return innerItem.isDynamic();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public boolean isGroupMarker() {
-        return innerItem.isGroupMarker();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public boolean isSeparator() {
-        return innerItem.isSeparator();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public boolean isVisible() {
-        return visible && innerItem.isVisible();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void setParent(IContributionManager parent) {
-        // do nothing, the parent of our inner item
-        // is its SubContributionManager
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void setVisible(boolean visible) {
-        this.visible = visible;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void update() {
-        innerItem.update();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     */
-    public void update(String id) {
-        innerItem.update(id);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.CoolBar, int)
-     */
-    public void fill(CoolBar parent, int index) {
-        if (visible) {
-			innerItem.fill(parent, index);
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#saveWidgetState()
-     */
-    public void saveWidgetState() {
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionManager.java
deleted file mode 100644
index 705b2ba..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubContributionManager.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * A <code>SubContributionManager</code> is used to define a set of contribution
- * items within a parent manager.  Once defined, the visibility of the entire set can 
- * be changed as a unit.
- */
-public abstract class SubContributionManager implements IContributionManager {
-    /**
-     * The parent contribution manager.
-     */
-    private IContributionManager parentMgr;
-
-    /**
-     * Maps each item in the manager to a wrapper.  The wrapper is used to 
-     * control the visibility of each item.
-     */
-    private Map mapItemToWrapper = new HashMap();
-
-    /**
-     * The visibility of the manager,
-     */
-    private boolean visible = false;
-
-    /**
-     * Constructs a new <code>SubContributionManager</code>
-     *
-     * @param mgr the parent contribution manager.  All contributions made to the
-     *      <code>SubContributionManager</code> are forwarded and appear in the
-     *      parent manager.
-     */
-    public SubContributionManager(IContributionManager mgr) {
-        super();
-        parentMgr = mgr;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void add(IAction action) {
-        add(new ActionContributionItem(action));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void add(IContributionItem item) {
-        item.setParent(this);
-        SubContributionItem wrap = wrap(item);
-        wrap.setVisible(visible);
-        parentMgr.add(wrap);
-        itemAdded(item, wrap);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void appendToGroup(String groupName, IAction action) {
-        appendToGroup(groupName, new ActionContributionItem(action));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void appendToGroup(String groupName, IContributionItem item) {
-        item.setParent(this);
-        SubContributionItem wrap = wrap(item);
-        wrap.setVisible(visible);
-        parentMgr.appendToGroup(groupName, wrap);
-        itemAdded(item, wrap);
-    }
-
-    /**
-     * Disposes this sub contribution manager, removing all its items
-     * and cleaning up any other resources allocated by it.
-     * This must leave no trace of this sub contribution manager
-     * in the parent manager.  Subclasses may extend.
-     * 
-     * @since 3.0
-     */
-    public void disposeManager() {
-        Iterator it = mapItemToWrapper.values().iterator();
-        // Dispose items in addition to removing them.
-        // See bugs 64024 and 73715 for details.
-	    // Do not use getItems() here as subclasses can override that in bad ways.
-        while (it.hasNext()) {
-            IContributionItem item = (IContributionItem) it.next();
-            item.dispose();
-        }
-        removeAll();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     *
-     * Returns the item passed to us, not the wrapper.
-     */
-    public IContributionItem find(String id) {
-        IContributionItem item = parentMgr.find(id);
-        // Return the item passed to us, not the wrapper.
-        item = unwrap(item);
-        return item;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     *
-     * Returns the items passed to us, not the wrappers.
-     */
-    public IContributionItem[] getItems() {
-        IContributionItem[] result = new IContributionItem[mapItemToWrapper
-                .size()];
-        mapItemToWrapper.keySet().toArray(result);
-        return result;
-    }
-
-    /**
-     * Returns the parent manager.
-     *
-     * @return the parent manager
-     */
-    public IContributionManager getParent() {
-        return parentMgr;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public IContributionManagerOverrides getOverrides() {
-        return parentMgr.getOverrides();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void insertAfter(String id, IAction action) {
-        insertAfter(id, new ActionContributionItem(action));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void insertAfter(String id, IContributionItem item) {
-        item.setParent(this);
-        SubContributionItem wrap = wrap(item);
-        wrap.setVisible(visible);
-        parentMgr.insertAfter(id, wrap);
-        itemAdded(item, wrap);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void insertBefore(String id, IAction action) {
-        insertBefore(id, new ActionContributionItem(action));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void insertBefore(String id, IContributionItem item) {
-        item.setParent(this);
-        SubContributionItem wrap = wrap(item);
-        wrap.setVisible(visible);
-        parentMgr.insertBefore(id, wrap);
-        itemAdded(item, wrap);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public boolean isDirty() {
-        return parentMgr.isDirty();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public boolean isEmpty() {
-        return parentMgr.isEmpty();
-    }
-
-    /**
-     * Returns whether the contribution list is visible.
-     * If the visibility is <code>true</code> then each item within the manager 
-     * appears within the parent manager.  Otherwise, the items are not visible.
-     *
-     * @return <code>true</code> if the manager is visible
-     */
-    public boolean isVisible() {
-        return visible;
-    }
-
-    /**
-     * Notifies that an item has been added.
-     * <p>
-     * Subclasses are not expected to override this method.
-     * </p>
-     *
-     * @param item the item contributed by the client
-     * @param wrap the item contributed to the parent manager as a proxy for the item
-     *      contributed by the client
-     */
-    protected void itemAdded(IContributionItem item, SubContributionItem wrap) {
-        mapItemToWrapper.put(item, wrap);
-    }
-
-    /**
-     * Notifies that an item has been removed.
-     * <p>
-     * Subclasses are not expected to override this method.
-     * </p>
-     *
-     * @param item the item contributed by the client
-     */
-    protected void itemRemoved(IContributionItem item) {
-        mapItemToWrapper.remove(item);
-    }
-
-    /**
-     * @return fetch all enumeration of wrappers for the item
-     * @deprecated Use getItems(String value) instead.
-     */
-    public Enumeration items() {
-        final Iterator i = mapItemToWrapper.values().iterator();
-        return new Enumeration() {
-            public boolean hasMoreElements() {
-                return i.hasNext();
-            }
-
-            public Object nextElement() {
-                return i.next();
-            }
-        };
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void markDirty() {
-        parentMgr.markDirty();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void prependToGroup(String groupName, IAction action) {
-        prependToGroup(groupName, new ActionContributionItem(action));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void prependToGroup(String groupName, IContributionItem item) {
-        item.setParent(this);
-        SubContributionItem wrap = wrap(item);
-        wrap.setVisible(visible);
-        parentMgr.prependToGroup(groupName, wrap);
-        itemAdded(item, wrap);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public IContributionItem remove(String id) {
-        IContributionItem result = parentMgr.remove(id);
-        if (result != null) {
-			itemRemoved(result);
-		}
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public IContributionItem remove(IContributionItem item) {
-        SubContributionItem wrap = (SubContributionItem) mapItemToWrapper
-                .get(item);
-        if (wrap == null) {
-			return null;
-		}
-        IContributionItem result = parentMgr.remove(wrap);
-        if (result == null) {
-			return null;
-		}
-        itemRemoved(item);
-        return item;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public void removeAll() {
-        Iterator it = mapItemToWrapper.values().iterator();
-        while (it.hasNext()) {
-            IContributionItem item = (IContributionItem) it.next();
-            parentMgr.remove(item);
-        }
-        mapItemToWrapper.clear();
-    }
-
-    /**
-     * Sets the visibility of the manager.  If the visibility is <code>true</code>
-     * then each item within the manager appears within the parent manager.
-     * Otherwise, the items are not visible.
-     *
-     * @param visible the new visibility
-     */
-    public void setVisible(boolean visible) {
-        this.visible = visible;
-        if (mapItemToWrapper.size() > 0) {
-            Iterator it = mapItemToWrapper.values().iterator();
-            while (it.hasNext()) {
-                IContributionItem item = (IContributionItem) it.next();
-                item.setVisible(visible);
-            }
-            parentMgr.markDirty();
-        }
-    }
-
-    /**
-     * Wraps a contribution item in a sub contribution item, and returns the new wrapper.
-     * @param item the contribution item to be wrapped
-     * @return the wrapped item
-     */
-    protected SubContributionItem wrap(IContributionItem item) {
-        return new SubContributionItem(item);
-    }
-
-    /**
-     * Unwraps a nested contribution item. If the contribution item is an
-     * instance of <code>SubContributionItem</code>, then its inner item is
-     * returned. Otherwise, the item itself is returned.
-     * 
-     * @param item
-     *            The item to unwrap; may be <code>null</code>.
-     * @return The inner item of <code>item</code>, if <code>item</code> is
-     *         a <code>SubContributionItem</code>;<code>item</code>
-     *         otherwise.
-     */
-    protected IContributionItem unwrap(IContributionItem item) {
-        if (item instanceof SubContributionItem) {
-            return ((SubContributionItem) item).getInnerItem();
-        }
-
-        return item;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubCoolBarManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubCoolBarManager.java
deleted file mode 100644
index f5a179a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubCoolBarManager.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A <code>SubCoolBarManager</code> monitors the additional and removal of 
- * items from a parent manager so that visibility of the entire set can be changed as a
- * unit.
- * 
- * @since 3.0
- */
-public class SubCoolBarManager extends SubContributionManager implements
-        ICoolBarManager {
-
-    /**
-     * Constructs a new manager.
-     *
-     * @param mgr the parent manager.  All contributions made to the 
-     *      <code>SubCoolBarManager</code> are forwarded and appear in the
-     *      parent manager.
-     */
-    public SubCoolBarManager(ICoolBarManager mgr) {
-        super(mgr);
-        Assert.isNotNull(mgr);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ICoolBarManager#add(org.eclipse.jface.action.IToolBarManager)
-     */
-    public void add(IToolBarManager toolBarManager) {
-        Assert.isNotNull(toolBarManager);
-        super.add(new ToolBarContributionItem(toolBarManager));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ICoolBarManager#getStyle()
-     */
-    public int getStyle() {
-        // It is okay to cast down since we only accept coolBarManager objects in the
-        // constructor
-        return ((ICoolBarManager) getParent()).getStyle();
-    }
-
-    /**
-     * Returns the parent cool bar manager that this sub-manager contributes to.
-     * 
-     * @return the parent cool bar manager 
-     */
-    protected final ICoolBarManager getParentCoolBarManager() {
-        // Cast is ok because that's the only
-        // thing we accept in the construtor.
-        return (ICoolBarManager) getParent();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ICoolBarManager#isLayoutLocked()
-     */
-    public boolean getLockLayout() {
-        return getParentCoolBarManager().getLockLayout();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ICoolBarManager#lockLayout(boolean)
-     */
-    public void setLockLayout(boolean value) {
-    }
-
-    /* (non-Javadoc)
-     * SubCoolBarManagers do not have control of the global context menu.
-     */
-    public IMenuManager getContextMenuManager() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * In SubCoolBarManager we do nothing.
-     */
-    public void setContextMenuManager(IMenuManager menuManager) {
-        // do nothing
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionManager#update(boolean)
-     */
-    public void update(boolean force) {
-        // This method is not governed by visibility.  The client may
-        // call <code>setVisible</code> and then force an update.  At that
-        // point we need to update the parent.
-        getParentCoolBarManager().update(force);
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubMenuManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubMenuManager.java
deleted file mode 100644
index 33c9b43..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubMenuManager.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * A <code>SubMenuManager</code> is used to define a set of contribution
- * items within a parent manager.  Once defined, the visibility of the entire set can 
- * be changed as a unit.
- * <p>
- * A client may ask for and make additions to a submenu.  The visibility of these items
- * is also controlled by the visibility of the <code>SubMenuManager</code>.
- * </p>
- */
-public class SubMenuManager extends SubContributionManager implements
-        IMenuManager {
-
-    /**
-     * Maps each submenu in the manager to a wrapper.  The wrapper is used to
-     * monitor additions and removals.  If the visibility of the manager is modified
-     * the visibility of the submenus is also modified.
-     */
-    private Map mapMenuToWrapper;
-
-    /**
-     * List of registered menu listeners (element type: <code>IMenuListener</code>).
-     */
-    private ListenerList menuListeners = new ListenerList();
-
-    /**
-     * The menu listener added to the parent.  Lazily initialized
-     * in addMenuListener.
-     */
-    private IMenuListener menuListener;
-
-    /**
-     * Constructs a new manager.
-     *
-     * @param mgr the parent manager.  All contributions made to the 
-     *      <code>SubMenuManager</code> are forwarded and appear in the
-     *      parent manager.
-     */
-    public SubMenuManager(IMenuManager mgr) {
-        super(mgr);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#addMenuListener(org.eclipse.jface.action.IMenuListener)
-     */
-    public void addMenuListener(IMenuListener listener) {
-        menuListeners.add(listener);
-        if (menuListener == null) {
-            menuListener = new IMenuListener() {
-                public void menuAboutToShow(IMenuManager manager) {
-                    Object[] listeners = menuListeners.getListeners();
-                    for (int i = 0; i < listeners.length; ++i) {
-                        ((IMenuListener) listeners[i])
-                                .menuAboutToShow(SubMenuManager.this);
-                    }
-                }
-            };
-        }
-        getParentMenuManager().addMenuListener(menuListener);
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void dispose() {
-        // do nothing
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.SubContributionManager#disposeManager()
-     */
-    public void disposeManager() {
-        if (menuListener != null) {
-            getParentMenuManager().removeMenuListener(menuListener);
-            menuListener = null;
-            menuListeners.clear();
-        }
-        // Dispose wrapped menus in addition to removing them.
-        // See bugs 64024 and 73715 for details.
-        // important to dispose menu wrappers before call to super,
-        // otherwise super's call to removeAll will remove them
-        // before they can be disposed
-        if (mapMenuToWrapper != null) {
-            Iterator iter = mapMenuToWrapper.values().iterator();
-            while (iter.hasNext()) {
-                SubMenuManager wrapper = (SubMenuManager) iter.next();
-                wrapper.disposeManager();
-            }
-            mapMenuToWrapper.clear();
-            mapMenuToWrapper = null;
-        }
-        super.disposeManager();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.Composite)
-     */
-    public void fill(Composite parent) {
-        if (isVisible()) {
-			getParentMenuManager().fill(parent);
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.CoolBar, int)
-     */
-    public void fill(CoolBar parent, int index) {
-        // do nothing
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.Menu, int)
-     */
-    public void fill(Menu parent, int index) {
-        if (isVisible()) {
-			getParentMenuManager().fill(parent, index);
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.ToolBar, int)
-     */
-    public void fill(ToolBar parent, int index) {
-        if (isVisible()) {
-			getParentMenuManager().fill(parent, index);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     *
-     * Returns the item passed to us, not the wrapper.
-     * In the case of menu's not added by this manager,
-     * ensure that we return a wrapper for the menu.
-     */
-    public IContributionItem find(String id) {
-        IContributionItem item = getParentMenuManager().find(id);
-        if (item instanceof SubContributionItem) {
-			// Return the item passed to us, not the wrapper.
-            item = unwrap(item);
-		}
-
-        if (item instanceof IMenuManager) {
-            // if it is a menu manager wrap it before returning
-            IMenuManager menu = (IMenuManager) item;
-            item = getWrapper(menu);
-        }
-
-        return item;
-    }
-
-    /**
-     * <p>
-     * The menu returned is wrapped within a <code>SubMenuManager</code> to
-     * monitor additions and removals.  If the visibility of this menu is modified
-     * the visibility of the submenus is also modified.
-     * </p>
-     */
-    public IMenuManager findMenuUsingPath(String path) {
-        IContributionItem item = findUsingPath(path);
-        if (item instanceof IMenuManager) {
-            return (IMenuManager) item;
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IMenuManager.
-     *
-     * Returns the item passed to us, not the wrapper.
-     *
-     * We use use the same algorithm as MenuManager.findUsingPath, but unwrap
-     * submenus along so that SubMenuManagers are visible.
-     */
-    public IContributionItem findUsingPath(String path) {
-        String id = path;
-        String rest = null;
-        int separator = path.indexOf('/');
-        if (separator != -1) {
-            id = path.substring(0, separator);
-            rest = path.substring(separator + 1);
-        }
-        IContributionItem item = find(id); // unwraps item
-        if (rest != null && item instanceof IMenuManager) {
-            IMenuManager menu = (IMenuManager) item;
-            item = menu.findUsingPath(rest);
-        }
-        return item;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#getId()
-     */
-    public String getId() {
-        return getParentMenuManager().getId();
-    }
-
-    /**
-     * @return the parent menu manager that this sub-manager contributes to. 
-     */
-    protected final IMenuManager getParentMenuManager() {
-        // Cast is ok because that's the only
-        // thing we accept in the construtor.
-        return (IMenuManager) getParent();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#getRemoveAllWhenShown()
-     */
-    public boolean getRemoveAllWhenShown() {
-        return false;
-    }
-
-    /**
-     * Returns the menu wrapper for a menu manager.
-     * <p>
-     * The sub menus within this menu are wrapped within a <code>SubMenuManager</code> to
-     * monitor additions and removals.  If the visibility of this menu is modified
-     * the visibility of the sub menus is also modified.
-     * <p>
-     * @param mgr the menu manager to be wrapped
-     *
-     * @return the menu wrapper
-     */
-    protected IMenuManager getWrapper(IMenuManager mgr) {
-        if (mapMenuToWrapper == null) {
-            mapMenuToWrapper = new HashMap(4);
-        }
-        SubMenuManager wrapper = (SubMenuManager) mapMenuToWrapper.get(mgr);
-        if (wrapper == null) {
-            wrapper = wrapMenu(mgr);
-            mapMenuToWrapper.put(mgr, wrapper);
-        }
-        return wrapper;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isDynamic()
-     */
-    public boolean isDynamic() {
-        return getParentMenuManager().isDynamic();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isEnabled()
-     */
-    public boolean isEnabled() {
-        return isVisible() && getParentMenuManager().isEnabled();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isGroupMarker()
-     */
-    public boolean isGroupMarker() {
-        return getParentMenuManager().isGroupMarker();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isSeparator()
-     */
-    public boolean isSeparator() {
-        return getParentMenuManager().isSeparator();
-    }
-
-    /**
-     * Remove all contribution items.
-     */
-    public void removeAll() {
-        super.removeAll();
-        if (mapMenuToWrapper != null) {
-            Iterator iter = mapMenuToWrapper.values().iterator();
-            while (iter.hasNext()) {
-                SubMenuManager wrapper = (SubMenuManager) iter.next();
-                wrapper.removeAll();
-            }
-            mapMenuToWrapper.clear();
-            mapMenuToWrapper = null;
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#removeMenuListener(org.eclipse.jface.action.IMenuListener)
-     */
-    public void removeMenuListener(IMenuListener listener) {
-        menuListeners.remove(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#saveWidgetState()
-     */
-    public void saveWidgetState() {
-        // do nothing
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#setParent(org.eclipse.jface.action.IContributionManager)
-     */
-    public void setParent(IContributionManager parent) {
-        // do nothing, our "parent manager's" parent 
-        // is set when it is added to a manager
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#setRemoveAllWhenShown(boolean)
-     */
-    public void setRemoveAllWhenShown(boolean removeAll) {
-        Assert.isTrue(false, "Should not be called on submenu manager"); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.SubContributionManager#setVisible(boolean)
-     */
-    public void setVisible(boolean visible) {
-        super.setVisible(visible);
-        if (mapMenuToWrapper != null) {
-            Iterator iter = mapMenuToWrapper.values().iterator();
-            while (iter.hasNext()) {
-                SubMenuManager wrapper = (SubMenuManager) iter.next();
-                wrapper.setVisible(visible);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#update()
-     */
-    public void update() {
-        // This method is not governed by visibility.  The client may
-        // call <code>setVisible</code> and then force an update.  At that
-        // point we need to update the parent.
-        getParentMenuManager().update();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionManager#update(boolean)
-     */
-    public void update(boolean force) {
-        // This method is not governed by visibility.  The client may
-        // call <code>setVisible</code> and then force an update.  At that
-        // point we need to update the parent.
-        getParentMenuManager().update(force);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
-     */
-    public void update(String id) {
-        getParentMenuManager().update(id);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IMenuManager#updateAll(boolean)
-     */
-    public void updateAll(boolean force) {
-        // This method is not governed by visibility.  The client may
-        // call <code>setVisible</code> and then force an update.  At that
-        // point we need to update the parent.
-        getParentMenuManager().updateAll(force);
-    }
-
-    /**
-     * Wraps a menu manager in a sub menu manager, and returns the new wrapper.
-     * @param menu the menu manager to wrap
-     * @return the new wrapped menu manager
-     */
-    protected SubMenuManager wrapMenu(IMenuManager menu) {
-        SubMenuManager mgr = new SubMenuManager(menu);
-        mgr.setVisible(isVisible());
-        return mgr;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubStatusLineManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubStatusLineManager.java
deleted file mode 100644
index 8f7f967..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubStatusLineManager.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A <code>SubStatusLineManager</code> is used to define a set of contribution
- * items within a parent manager.  Once defined, the visibility of the entire set can 
- * be changed as a unit.
- */
-public class SubStatusLineManager extends SubContributionManager implements
-        IStatusLineManager {
-    /**
-     * Current status line message.
-     */
-    private String message;
-
-    /**
-     * Current status line error message.
-     */
-    private String errorMessage;
-
-    /**
-     * Current status line message image.
-     */
-    private Image messageImage;
-
-    /**
-     * Current status line error image
-     */
-    private Image errorImage;
-
-    /**
-     * Constructs a new manager.
-     *
-     * @param mgr the parent manager.  All contributions made to the 
-     *      <code>SubStatusLineManager</code> are forwarded and appear in the
-     *      parent manager.
-     */
-    public SubStatusLineManager(IStatusLineManager mgr) {
-        super(mgr);
-    }
-
-    /**
-     * @return the parent status line manager that this sub-manager contributes
-     * to 
-     */
-    protected final IStatusLineManager getParentStatusLineManager() {
-        // Cast is ok because that's the only
-        // thing we accept in the construtor.
-        return (IStatusLineManager) getParent();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public IProgressMonitor getProgressMonitor() {
-        return getParentStatusLineManager().getProgressMonitor();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public boolean isCancelEnabled() {
-        return getParentStatusLineManager().isCancelEnabled();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setCancelEnabled(boolean enabled) {
-        getParentStatusLineManager().setCancelEnabled(enabled);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setErrorMessage(String message) {
-        this.errorImage = null;
-        this.errorMessage = message;
-        if (isVisible()) {
-			getParentStatusLineManager().setErrorMessage(errorMessage);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setErrorMessage(Image image, String message) {
-        this.errorImage = image;
-        this.errorMessage = message;
-        if (isVisible()) {
-			getParentStatusLineManager().setErrorMessage(errorImage,
-                    errorMessage);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setMessage(String message) {
-        this.messageImage = null;
-        this.message = message;
-        if (isVisible()) {
-			getParentStatusLineManager().setMessage(message);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void setMessage(Image image, String message) {
-        this.messageImage = image;
-        this.message = message;
-        if (isVisible()) {
-			getParentStatusLineManager().setMessage(messageImage, message);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on SubContributionManager.
-     */
-    public void setVisible(boolean visible) {
-        super.setVisible(visible);
-        if (visible) {
-            getParentStatusLineManager().setErrorMessage(errorImage,
-                    errorMessage);
-            getParentStatusLineManager().setMessage(messageImage, message);
-        } else {
-            getParentStatusLineManager().setMessage(null, null);
-            getParentStatusLineManager().setErrorMessage(null, null);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStatusLineManager.
-     */
-    public void update(boolean force) {
-        // This method is not governed by visibility.  The client may
-        // call <code>setVisible</code> and then force an update.  At that
-        // point we need to update the parent.
-        getParentStatusLineManager().update(force);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubToolBarManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubToolBarManager.java
deleted file mode 100644
index b88627a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/SubToolBarManager.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-/**
- * A <code>SubToolBarManager</code> monitors the additional and removal of 
- * items from a parent manager so that visibility of the entire set can be changed as a
- * unit.
- */
-public class SubToolBarManager extends SubContributionManager implements
-        IToolBarManager {
-
-    /**
-     * Constructs a new manager.
-     *
-     * @param mgr the parent manager.  All contributions made to the 
-     *      <code>SubToolBarManager</code> are forwarded and appear in the
-     *      parent manager.
-     */
-    public SubToolBarManager(IToolBarManager mgr) {
-        super(mgr);
-    }
-
-    /**
-     * @return the parent toolbar manager that this sub-manager contributes to
-     */
-    protected final IToolBarManager getParentToolBarManager() {
-        // Cast is ok because that's the only
-        // thing we accept in the construtor.
-        return (IToolBarManager) getParent();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IToolBarManager.
-     */
-    public void update(boolean force) {
-        // This method is not governed by visibility.  The client may
-        // call <code>setVisible</code> and then force an update.  At that
-        // point we need to update the parent.
-        getParentToolBarManager().update(force);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarContributionItem.java
deleted file mode 100644
index 08c5ddc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarContributionItem.java
+++ /dev/null
@@ -1,673 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.action;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * The <code>ToolBarContributionItem</code> class provides a wrapper for tool
- * bar managers when used in cool bar managers. It extends <code>ContributionItem</code>
- * but and provides some additional methods to customize the size of the cool
- * item and to retrieve the underlying tool bar manager.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * 
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ToolBarContributionItem extends ContributionItem implements IToolBarContributionItem {
-
-    /**
-     * A constant used by <code>setMinimumItemsToShow</code> and <code>getMinimumItemsToShow</code>
-     * to indicate that all tool items should be shown in the cool item.
-     */
-    public static final int SHOW_ALL_ITEMS = -1;
-
-    /**
-     * The pull down menu used to list all hidden tool items if the current
-     * size is less than the preffered size.
-     */
-    private MenuManager chevronMenuManager = null;
-
-    /**
-     * The widget created for this item; <code>null</code> before creation
-     * and after disposal.
-     */
-    private CoolItem coolItem = null;
-
-    /**
-     * Current height of cool item
-     */
-    private int currentHeight = -1;
-
-    /**
-     * Current width of cool item.
-     */
-    private int currentWidth = -1;
-
-    /**
-     * A flag indicating that this item has been disposed. This prevents future
-     * method invocations from doing things they shouldn't.
-     */
-    private boolean disposed = false;
-
-    /**
-     * Mininum number of tool items to show in the cool item widget.
-     */
-    private int minimumItemsToShow = SHOW_ALL_ITEMS;
-
-    /**
-     * The tool bar manager used to manage the tool items contained in the cool
-     * item widget.
-     */
-    private ToolBarManager toolBarManager = null;
-
-    /**
-     * Enable/disable chevron support.
-     */
-    private boolean useChevron = true;
-
-    /**
-     * Convenience method equivalent to <code>ToolBarContributionItem(new ToolBarManager(), null)</code>.
-     */
-    public ToolBarContributionItem() {
-        this(new ToolBarManager(), null);
-    }
-
-    /**
-     * Convenience method equivalent to <code>ToolBarContributionItem(toolBarManager, null)</code>.
-     * 
-     * @param toolBarManager
-     *            the tool bar manager
-     */
-    public ToolBarContributionItem(IToolBarManager toolBarManager) {
-        this(toolBarManager, null);
-    }
-
-    /**
-     * Creates a tool bar contribution item.
-     * 
-     * @param toolBarManager
-     *            the tool bar manager to wrap
-     * @param id
-     *            the contribution item id, or <code>null</code> if none
-     */
-    public ToolBarContributionItem(IToolBarManager toolBarManager, String id) {
-        super(id);
-        Assert.isTrue(toolBarManager instanceof ToolBarManager);
-        this.toolBarManager = (ToolBarManager) toolBarManager;
-    }
-
-    /**
-     * Checks whether this contribution item has been disposed. If it has, and
-     * the tracing options are active, then it prints some debugging
-     * information.
-     * 
-     * @return <code>true</code> if the item is disposed; <code>false</code>
-     *         otherwise.
-     *  
-     */
-    private final boolean checkDisposed() {
-        if (disposed) {
-            if (Policy.TRACE_TOOLBAR) {
-                System.out
-                        .println("Method invocation on a disposed tool bar contribution item."); //$NON-NLS-1$
-                new Exception().printStackTrace(System.out);
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#dispose()
-     */
-    public void dispose() {
-        // Dispose of the ToolBar and all its contributions
-        if (toolBarManager != null) {
-            toolBarManager.dispose();
-            toolBarManager = null;
-        }
-
-        /*
-         * We need to dispose the cool item or we might be left holding a cool
-         * item with a disposed control.
-         */
-        if ((coolItem != null) && (!coolItem.isDisposed())) {
-            coolItem.dispose();
-            coolItem = null;
-        }
-
-        // Mark this item as disposed.
-        disposed = true;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.CoolBar,
-     *      int)
-     */
-    public void fill(CoolBar coolBar, int index) {
-        if (checkDisposed()) {
-            return;
-        }
-
-        if (coolItem == null && coolBar != null) {
-            ToolBar oldToolBar = toolBarManager.getControl();
-            ToolBar toolBar = toolBarManager.createControl(coolBar);
-            if ((oldToolBar != null) && (oldToolBar.equals(toolBar))) {
-                // We are using an old tool bar, so we need to update.
-                toolBarManager.update(true);
-            }
-
-            // Do not create a coolItem if the toolbar is empty
-            if (toolBar.getItemCount() < 1) {
-				return;
-			}
-            int flags = SWT.DROP_DOWN;
-            if (index >= 0) {
-                coolItem = new CoolItem(coolBar, flags, index);
-            } else {
-                coolItem = new CoolItem(coolBar, flags);
-            }
-            // sets the back reference
-            coolItem.setData(this);
-            // Add the toolbar to the CoolItem widget
-            coolItem.setControl(toolBar);
-
-            // Handle Context Menu
-            // ToolBarManager.createControl can actually return a pre-existing control.
-            // Only add the listener if the toolbar was newly created (bug 62097).
-            if (oldToolBar != toolBar) {
-	            toolBar.addListener(SWT.MenuDetect, new Listener() {
-	
-	                public void handleEvent(Event event) {
-	                    // if the toolbar does not have its own context menu then
-	                    // handle the event
-	                    if (toolBarManager.getContextMenuManager() == null) {
-	                        handleContextMenu(event);
-	                    }
-	                }
-	            });
-            }
-
-            // Handle for chevron clicking
-            if (getUseChevron()) {
-                // Chevron Support
-                coolItem.addSelectionListener(new SelectionAdapter() {
-
-                    public void widgetSelected(SelectionEvent event) {
-                        if (event.detail == SWT.ARROW) {
-                            handleChevron(event);
-                        }
-                    }
-                });
-            }
-
-            // Handle for disposal
-            coolItem.addDisposeListener(new DisposeListener() {
-
-                public void widgetDisposed(DisposeEvent event) {
-                    handleWidgetDispose(event);
-                }
-            });
-
-            // Sets the size of the coolItem
-            updateSize(true);
-        }
-    }
-
-    /**
-     * Returns a consistent set of wrap indices. The return value will always
-     * include at least one entry and the first entry will always be zero.
-     * CoolBar.getWrapIndices() is inconsistent in whether or not it returns an
-     * index for the first row.
-     */
-    private int[] getAdjustedWrapIndices(int[] wraps) {
-        int[] adjustedWrapIndices;
-        if (wraps.length == 0) {
-            adjustedWrapIndices = new int[] { 0 };
-        } else {
-            if (wraps[0] != 0) {
-                adjustedWrapIndices = new int[wraps.length + 1];
-                adjustedWrapIndices[0] = 0;
-                for (int i = 0; i < wraps.length; i++) {
-                    adjustedWrapIndices[i + 1] = wraps[i];
-                }
-            } else {
-                adjustedWrapIndices = wraps;
-            }
-        }
-        return adjustedWrapIndices;
-    }
-
-    /**
-     * Returns the current height of the corresponding cool item.
-     * 
-     * @return the current height
-     */
-    public int getCurrentHeight() {
-        if (checkDisposed()) {
-            return -1;
-        }
-        return currentHeight;
-    }
-
-    /**
-     * Returns the current width of the corresponding cool item.
-     * 
-     * @return the current size
-     */
-    public int getCurrentWidth() {
-        if (checkDisposed()) {
-            return -1;
-        }
-        return currentWidth;
-    }
-
-    /**
-     * Returns the minimum number of tool items to show in the cool item.
-     * 
-     * @return the minimum number of tool items to show, or <code>SHOW_ALL_ITEMS</code>
-     *         if a value was not set
-     * @see #setMinimumItemsToShow(int)
-     */
-    public int getMinimumItemsToShow() {
-        if (checkDisposed()) {
-            return -1;
-        }
-        return minimumItemsToShow;
-    }
-
-    /**
-     * Returns the internal tool bar manager of the contribution item.
-     * 
-     * @return the tool bar manager, or <code>null</code> if one is not
-     *         defined.
-     * @see IToolBarManager
-     */
-    public IToolBarManager getToolBarManager() {
-        if (checkDisposed()) {
-            return null;
-        }
-        return toolBarManager;
-    }
-
-    /**
-     * Returns whether chevron support is enabled.
-     * 
-     * @return <code>true</code> if chevron support is enabled, <code>false</code>
-     *         otherwise
-     */
-    public boolean getUseChevron() {
-        if (checkDisposed()) {
-            return false;
-        }
-        return useChevron;
-    }
-
-    /**
-     * Create and display the chevron menu.
-     */
-    private void handleChevron(SelectionEvent event) {
-        CoolItem item = (CoolItem) event.widget;
-        Control control = item.getControl();
-        if ((control instanceof ToolBar) == false) {
-            return;
-        }
-        CoolBar coolBar = item.getParent();
-        ToolBar toolBar = (ToolBar) control;
-        Rectangle toolBarBounds = toolBar.getBounds();
-        ToolItem[] items = toolBar.getItems();
-        ArrayList hidden = new ArrayList();
-        for (int i = 0; i < items.length; ++i) {
-            Rectangle itemBounds = items[i].getBounds();
-            if (!((itemBounds.x + itemBounds.width <= toolBarBounds.width) && (itemBounds.y
-                    + itemBounds.height <= toolBarBounds.height))) {
-                hidden.add(items[i]);
-            }
-        }
-
-        // Create a pop-up menu with items for each of the hidden buttons.
-        if (chevronMenuManager != null) {
-            chevronMenuManager.dispose();
-        }
-        chevronMenuManager = new MenuManager();
-        for (Iterator i = hidden.iterator(); i.hasNext();) {
-            ToolItem toolItem = (ToolItem) i.next();
-            IContributionItem data = (IContributionItem) toolItem.getData();
-            if (data instanceof ActionContributionItem) {
-                ActionContributionItem contribution = new ActionContributionItem(
-                        ((ActionContributionItem) data).getAction());
-                chevronMenuManager.add(contribution);
-            } else if (data instanceof SubContributionItem) {
-                IContributionItem innerData = ((SubContributionItem) data)
-                        .getInnerItem();
-                if (innerData instanceof ActionContributionItem) {
-                    ActionContributionItem contribution = new ActionContributionItem(
-                            ((ActionContributionItem) innerData).getAction());
-                    chevronMenuManager.add(contribution);
-                }
-            } else if (data.isSeparator()) {
-                chevronMenuManager.add(new Separator());
-            }
-        }
-        Menu popup = chevronMenuManager.createContextMenu(coolBar);
-        Point chevronPosition = coolBar.toDisplay(event.x, event.y);
-        popup.setLocation(chevronPosition.x, chevronPosition.y);
-        popup.setVisible(true);
-    }
-
-    /**
-     * Handles the event when the toobar item does not have its own context
-     * menu.
-     * 
-     * @param event
-     *            the event object
-     */
-    private void handleContextMenu(Event event) {
-        ToolBar toolBar = toolBarManager.getControl();
-        // If parent has a menu then use that one
-        Menu parentMenu = toolBar.getParent().getMenu();
-        if ((parentMenu != null) && (!parentMenu.isDisposed())) {
-            toolBar.setMenu(parentMenu);
-            // Hook listener to remove menu once it has disapeared
-            parentMenu.addListener(SWT.Hide, new Listener() {
-
-                public void handleEvent(Event innerEvent) {
-                    ToolBar innerToolBar = toolBarManager.getControl();
-                    if (innerToolBar != null) {
-                        innerToolBar.setMenu(null);
-                        Menu innerParentMenu = innerToolBar.getParent()
-                                .getMenu();
-                        if (innerParentMenu != null) {
-                            innerParentMenu.removeListener(SWT.Hide, this);
-                        }
-                    }
-                }
-            });
-        }
-    }
-
-    /**
-     * Handles the disposal of the widget.
-     * 
-     * @param event
-     *            the event object
-     */
-    private void handleWidgetDispose(DisposeEvent event) {
-        coolItem = null;
-    }
-
-    /**
-     * A contribution item is visible iff its internal state is visible <em>or</em>
-     * the tool bar manager contains something other than group markers and
-     * separators.
-     * 
-     * @return <code>true</code> if the tool bar manager contains something
-     *         other than group marks and separators, and the internal state is
-     *         set to be visible.
-     */
-    public boolean isVisible() {
-        if (checkDisposed()) {
-            return false;
-        }
-
-        boolean visibleItem = false;
-        if (toolBarManager != null) {
-            IContributionItem[] contributionItems = toolBarManager.getItems();
-            for (int i = 0; i < contributionItems.length; i++) {
-                IContributionItem contributionItem = contributionItems[i];
-                if ((!contributionItem.isGroupMarker())
-                        && (!contributionItem.isSeparator())) {
-                    visibleItem = true;
-                    break;
-                }
-            }
-        }
-
-        return (visibleItem || super.isVisible());
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#saveWidgetState()
-     */
-    public void saveWidgetState() {
-        if (checkDisposed()) {
-            return;
-        }
-        if (coolItem == null) {
-			return;
-		}
-
-        //1. Save current size
-        CoolBar coolBar = coolItem.getParent();
-        boolean isLastOnRow = false;
-        int lastIndex = coolBar.getItemCount() - 1;
-        int coolItemIndex = coolBar.indexOf(coolItem);
-        int[] wrapIndicies = getAdjustedWrapIndices(coolBar.getWrapIndices());
-        // Traverse through all wrap indicies backwards
-        for (int row = wrapIndicies.length - 1; row >= 0; row--) {
-            if (wrapIndicies[row] <= coolItemIndex) {
-
-                int nextRow = row + 1;
-                int nextRowStartIndex;
-                if (nextRow > (wrapIndicies.length - 1)) {
-                    nextRowStartIndex = lastIndex + 1;
-                } else {
-                    nextRowStartIndex = wrapIndicies[nextRow];
-                }
-
-                // Check to see if its the last item on the row
-                if (coolItemIndex == (nextRowStartIndex - 1)) {
-                    isLastOnRow = true;
-                }
-                break;
-            }
-        }
-
-        // Save the preferred size as actual size for the last item on a row
-        int nCurrentWidth;
-        if (isLastOnRow) {
-            nCurrentWidth = coolItem.getPreferredSize().x;
-        } else {
-            nCurrentWidth = coolItem.getSize().x;
-        }
-        setCurrentWidth(nCurrentWidth);
-        setCurrentHeight(coolItem.getSize().y);
-    }
-
-    /**
-     * Sets the current height of the cool item. Update(SIZE) should be called
-     * to adjust the widget.
-     * 
-     * @param currentHeight
-     *            the current height to set
-     */
-    public void setCurrentHeight(int currentHeight) {
-        if (checkDisposed()) {
-            return;
-        }
-        this.currentHeight = currentHeight;
-    }
-
-    /**
-     * Sets the current width of the cool item. Update(SIZE) should be called
-     * to adjust the widget.
-     * 
-     * @param currentWidth
-     *            the current width to set
-     */
-    public void setCurrentWidth(int currentWidth) {
-        if (checkDisposed()) {
-            return;
-        }
-        this.currentWidth = currentWidth;
-    }
-
-    /**
-     * Sets the minimum number of tool items to show in the cool item. If this
-     * number is less than the total tool items, a chevron will appear and the
-     * hidden tool items appear in a drop down menu. By default, all the tool
-     * items are shown in the cool item.
-     * 
-     * @param minimumItemsToShow
-     *            the minimum number of tool items to show.
-     * @see #getMinimumItemsToShow()
-     * @see #setUseChevron(boolean)
-     */
-    public void setMinimumItemsToShow(int minimumItemsToShow) {
-        if (checkDisposed()) {
-            return;
-        }
-        this.minimumItemsToShow = minimumItemsToShow;
-    }
-
-    /**
-     * Enables or disables chevron support for the cool item. By default,
-     * chevron support is enabled.
-     * 
-     * @param value
-     *            <code>true</code> to enable chevron support, <code>false</code>
-     *            otherwise.
-     */
-    public void setUseChevron(boolean value) {
-        if (checkDisposed()) {
-            return;
-        }
-        useChevron = value;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
-     */
-    public void update(String propertyName) {
-        if (checkDisposed()) {
-            return;
-        }
-        if (coolItem != null) {
-            IToolBarManager manager = getToolBarManager();
-            if (manager != null) {
-                manager.update(true);
-            }
-
-            if ((propertyName == null)
-                    || propertyName.equals(ICoolBarManager.SIZE)) {
-                updateSize(true);
-            }
-        }
-    }
-
-    /**
-     * Updates the cool items' preferred, minimum, and current size. The
-     * preferred size is calculated based on the tool bar size and extra trim.
-     * 
-     * @param changeCurrentSize
-     *            <code>true</code> if the current size should be changed to
-     *            the preferred size, <code>false</code> to not change the
-     *            current size
-     */
-    private void updateSize(boolean changeCurrentSize) {
-        if (checkDisposed()) {
-            return;
-        }
-        // cannot set size if coolItem is null
-        if (coolItem == null || coolItem.isDisposed()) {
-            return;
-        }
-        boolean locked = false;
-        CoolBar coolBar = coolItem.getParent();
-        try {
-            // Fix odd behaviour with locked tool bars
-            if (coolBar != null) {
-                if (coolBar.getLocked()) {
-                    coolBar.setLocked(false);
-                    locked = true;
-                }
-            }
-            ToolBar toolBar = (ToolBar) coolItem.getControl();
-            if ((toolBar == null) || (toolBar.isDisposed())
-                    || (toolBar.getItemCount() <= 0)) {
-                // if the toolbar does not contain any items then dispose of
-                // coolItem
-                coolItem.setData(null);
-                Control control = coolItem.getControl();
-                if ((control != null) && !control.isDisposed()) {
-                    control.dispose();
-                    coolItem.setControl(null);
-                }
-                if (!coolItem.isDisposed()) {
-                    coolItem.dispose();
-                }
-            } else {
-                // If the toolbar item exists then adjust the size of the cool
-                // item
-                Point toolBarSize = toolBar.computeSize(SWT.DEFAULT,
-                        SWT.DEFAULT);
-                // Set the preffered size to the size of the toolbar plus trim
-                Point preferredSize = coolItem.computeSize(toolBarSize.x,
-                        toolBarSize.y);
-                coolItem.setPreferredSize(preferredSize);
-                // note setMinimumSize must be called before setSize, see PR
-                // 15565
-                // Set minimum size
-                if (getMinimumItemsToShow() != SHOW_ALL_ITEMS) {
-                    int toolItemWidth = toolBar.getItems()[0].getWidth();
-                    int minimumWidth = toolItemWidth * getMinimumItemsToShow();
-                    coolItem.setMinimumSize(minimumWidth, toolBarSize.y);
-                } else {
-                    coolItem.setMinimumSize(toolBarSize.x, toolBarSize.y);
-                }
-                if (changeCurrentSize) {
-                    // Set current size to preferred size
-                    coolItem.setSize(preferredSize);
-                }
-            }
-        } finally {
-            // If the cool bar was locked, then set it back to locked
-            if ((locked) && (coolBar != null)) {
-                coolBar.setLocked(true);
-            }
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
deleted file mode 100644
index e47a8c9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.action;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.ACC;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.accessibility.AccessibleListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * A tool bar manager is a contribution manager which realizes itself and its
- * items in a tool bar control.
- * <p>
- * This class may be instantiated; it may also be subclassed if a more
- * sophisticated layout is required.
- * </p>
- */
-public class ToolBarManager extends ContributionManager implements
-		IToolBarManager {
-
-	/**
-	 * The tool bar items style; <code>SWT.NONE</code> by default.
-	 */
-	private int itemStyle = SWT.NONE;
-
-	/**
-	 * The tool bat control; <code>null</code> before creation and after
-	 * disposal.
-	 */
-	private ToolBar toolBar = null;
-
-	/**
-	 * The menu manager to the context menu associated with the toolbar.
-	 * 
-	 * @since 3.0
-	 */
-	private MenuManager contextMenuManager = null;
-
-	/**
-	 * Creates a new tool bar manager with the default SWT button style. Use the
-	 * {@link #createControl(Composite)} method to create the tool bar control.
-	 * 
-	 */
-	public ToolBarManager() {
-		//Do nothing if there are no parameters
-	}
-
-	/**
-	 * Creates a tool bar manager with the given SWT button style. Use the
-	 * <code>createControl</code> method to create the tool bar control.
-	 * 
-	 * @param style
-	 *            the tool bar item style
-	 * @see org.eclipse.swt.widgets.ToolBar for valid style bits
-	 */
-	public ToolBarManager(int style) {
-		itemStyle = style;
-	}
-
-	/**
-	 * Creates a tool bar manager for an existing tool bar control. This manager
-	 * becomes responsible for the control, and will dispose of it when the
-	 * manager is disposed.
-	 * <strong>NOTE</strong> When creating a ToolBarManager from an existing
-	 * {@link ToolBar} you will not get the accessible listener provided by
-	 * JFace.
-	 * @see #ToolBarManager()
-	 * @see #ToolBarManager(int)
-	 * 
-	 * @param toolbar
-	 *            the tool bar control
-	 */
-	public ToolBarManager(ToolBar toolbar) {
-		this();
-		this.toolBar = toolbar;
-	}
-
-	/**
-	 * Creates and returns this manager's tool bar control. Does not create a
-	 * new control if one already exists. Also create an {@link AccessibleListener}
-	 * for the {@link ToolBar}.
-	 * 
-	 * @param parent
-	 *            the parent control
-	 * @return the tool bar control
-	 */
-	public ToolBar createControl(Composite parent) {
-		if (!toolBarExist() && parent != null) {
-			toolBar = new ToolBar(parent, itemStyle);
-			toolBar.setMenu(getContextMenuControl());
-			update(true);
-			
-			toolBar.getAccessible().addAccessibleListener(getAccessibleListener());
-		}
-
-		return toolBar;
-	}
-
-	/**
-	 * Get the accessible listener for the tool bar.
-	 * 
-	 * @return AccessibleListener
-	 * 
-	 * @since 3.1
-	 */
-	private AccessibleListener getAccessibleListener() {
-		return new AccessibleAdapter() {
-			public void getName(AccessibleEvent e) {
-				if (e.childID != ACC.CHILDID_SELF) {
-					ToolItem item = toolBar.getItem(e.childID);
-					if (item != null) {
-						String toolTip = item.getToolTipText();
-						if (toolTip != null) {
-							e.result = toolTip;
-						}
-					}
-				}
-			}
-		};
-
-	}
-
-	/**
-	 * Disposes of this tool bar manager and frees all allocated SWT resources.
-	 * Notifies all contribution items of the dispose. Note that this method
-	 * does not clean up references between this tool bar manager and its
-	 * associated contribution items. Use <code>removeAll</code> for that
-	 * purpose.
-	 */
-	public void dispose() {
-
-		if (toolBarExist()) {
-			toolBar.dispose();
-		}
-		toolBar = null;
-
-		IContributionItem[] items = getItems();
-		for (int i = 0; i < items.length; i++) {
-			items[i].dispose();
-		}
-
-		if (getContextMenuManager() != null) {
-			getContextMenuManager().dispose();
-			setContextMenuManager(null);
-		}
-	}
-
-	/**
-	 * Returns the tool bar control for this manager.
-	 * 
-	 * @return the tool bar control, or <code>null</code> if none (before
-	 *         creating or after disposal)
-	 */
-	public ToolBar getControl() {
-		return toolBar;
-	}
-
-	/**
-	 * Re-lays out the tool bar.
-	 * <p>
-	 * The default implementation of this framework method re-lays out the
-	 * parent when the number of items are different and the new count != 0
-	 * 
-	 * @param layoutBar
-	 *            the tool bar control
-	 * @param oldCount
-	 *            the old number of items
-	 * @param newCount
-	 *            the new number of items
-	 */
-	protected void relayout(ToolBar layoutBar, int oldCount, int newCount) {
-		if ((oldCount != newCount) && (newCount!=0)) {
-			Point beforePack = layoutBar.getSize();
-			layoutBar.pack(true);
-			Point afterPack = layoutBar.getSize();
-			
-			// If the TB didn't change size then we're done
-			if (beforePack.equals(afterPack))
-				return;
-			
-			// OK, we need to re-layout the TB
-			layoutBar.getParent().layout();
-			
-			// Now, if we're in a CoolBar then change the CoolItem size as well
-			if (layoutBar.getParent() instanceof CoolBar) {
-				CoolBar cb = (CoolBar) layoutBar.getParent();
-				CoolItem[] items = cb.getItems();
-				for (int i = 0; i < items.length; i++) {
-					if (items[i].getControl() == layoutBar) {
-						Point curSize = items[i].getSize();
-						items[i].setSize(curSize.x+ (afterPack.x - beforePack.x),
-									curSize.y+ (afterPack.y - beforePack.y));
-						return;
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns whether the tool bar control is created and not disposed.
-	 * 
-	 * @return <code>true</code> if the control is created and not disposed,
-	 *         <code>false</code> otherwise
-	 */
-	private boolean toolBarExist() {
-		return toolBar != null && !toolBar.isDisposed();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IContributionManager.
-	 */
-	public void update(boolean force) {
-
-		//	long startTime= 0;
-		//	if (DEBUG) {
-		//		dumpStatistics();
-		//		startTime= (new Date()).getTime();
-		//	}
-
-		if (isDirty() || force) {
-
-			if (toolBarExist()) {
-
-				int oldCount = toolBar.getItemCount();
-
-				// clean contains all active items without double separators
-				IContributionItem[] items = getItems();
-				ArrayList clean = new ArrayList(items.length);
-				IContributionItem separator = null;
-				//			long cleanStartTime= 0;
-				//			if (DEBUG) {
-				//				cleanStartTime= (new Date()).getTime();
-				//			}
-				for (int i = 0; i < items.length; ++i) {
-					IContributionItem ci = items[i];
-					if (!ci.isVisible()) {
-						continue;
-					}
-					if (ci.isSeparator()) {
-						// delay creation until necessary
-						// (handles both adjacent separators, and separator at
-						// end)
-						separator = ci;
-					} else {
-						if (separator != null) {
-							if (clean.size() > 0) {
-								clean.add(separator);
-							}
-							separator = null;
-						}
-						clean.add(ci);
-					}
-				}
-				//			if (DEBUG) {
-				//				System.out.println(" Time needed to build clean vector: " +
-				// ((new Date()).getTime() - cleanStartTime));
-				//			}
-
-				// determine obsolete items (removed or non active)
-				ToolItem[] mi = toolBar.getItems();
-				ArrayList toRemove = new ArrayList(mi.length);
-				for (int i = 0; i < mi.length; i++) {
-					Object data = mi[i].getData();
-					if (data == null
-							|| !clean.contains(data)
-							|| (data instanceof IContributionItem && ((IContributionItem) data)
-									.isDynamic())) {
-						toRemove.add(mi[i]);
-					}
-				}
-
-				// Turn redraw off if the number of items to be added
-				// is above a certain threshold, to minimize flicker,
-				// otherwise the toolbar can be seen to redraw after each item.
-				// Do this before any modifications are made.
-				// We assume each contribution item will contribute at least one
-				// toolbar item.
-				boolean useRedraw = (clean.size() - (mi.length - toRemove
-						.size())) >= 3;
-                try {
-                    if (useRedraw) {
-                        toolBar.setRedraw(false);
-                    }
-
-                    // remove obsolete items
-                    for (int i = toRemove.size(); --i >= 0;) {
-                        ToolItem item = (ToolItem) toRemove.get(i);
-                        if (!item.isDisposed()) {
-                            Control ctrl = item.getControl();
-                            if (ctrl != null) {
-                                item.setControl(null);
-                                ctrl.dispose();
-                            }
-                            item.dispose();
-                        }
-                    }
-
-                    // add new items
-                    IContributionItem src, dest;
-                    mi = toolBar.getItems();
-                    int srcIx = 0;
-                    int destIx = 0;
-                    for (Iterator e = clean.iterator(); e.hasNext();) {
-                        src = (IContributionItem) e.next();
-
-                        // get corresponding item in SWT widget
-                        if (srcIx < mi.length) {
-							dest = (IContributionItem) mi[srcIx].getData();
-						} else {
-							dest = null;
-						}
-
-                        if (dest != null && src.equals(dest)) {
-                            srcIx++;
-                            destIx++;
-                            continue;
-                        }
-
-                        if (dest != null && dest.isSeparator()
-                                && src.isSeparator()) {
-                            mi[srcIx].setData(src);
-                            srcIx++;
-                            destIx++;
-                            continue;
-                        }
-
-                        int start = toolBar.getItemCount();
-                        src.fill(toolBar, destIx);
-                        int newItems = toolBar.getItemCount() - start;
-                        for (int i = 0; i < newItems; i++) {
-                            ToolItem item = toolBar.getItem(destIx++);
-                            item.setData(src);
-                        }
-                    }
-
-                    // remove any old tool items not accounted for
-                    for (int i = mi.length; --i >= srcIx;) {
-                        ToolItem item = mi[i];
-                        if (!item.isDisposed()) {
-                            Control ctrl = item.getControl();
-                            if (ctrl != null) {
-                                item.setControl(null);
-                                ctrl.dispose();
-                            }
-                            item.dispose();
-                        }
-                    }
-
-                    setDirty(false);
-
-                    // turn redraw back on if we turned it off above
-                } finally {
-                    if (useRedraw) {
-                        toolBar.setRedraw(true);
-                    }
-                }
-
-				int newCount = toolBar.getItemCount();
-				
-				// If we're forcing a change then ensure that we re-layout everything
-				if (force)
-					oldCount = newCount+1;
-				
-				relayout(toolBar, oldCount, newCount);
-			}
-
-		}
-
-		//	if (DEBUG) {
-		//		System.out.println(" Time needed for update: " + ((new
-		// Date()).getTime() - startTime));
-		//		System.out.println();
-		//	}
-	}
-
-	/**
-	 * Returns the control of the Menu Manager. If the menu manager does not
-	 * have a control then one is created.
-	 * 
-	 * @return menu widget associated with manager
-	 */
-	private Menu getContextMenuControl() {
-		if ((contextMenuManager != null) && (toolBar != null)) {
-			Menu menuWidget = contextMenuManager.getMenu();
-			if ((menuWidget == null) || (menuWidget.isDisposed())) {
-				menuWidget = contextMenuManager.createContextMenu(toolBar);
-			}
-			return menuWidget;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the context menu manager for this tool bar manager.
-	 * 
-	 * @return the context menu manager, or <code>null</code> if none
-	 * @since 3.0
-	 */
-	public MenuManager getContextMenuManager() {
-		return contextMenuManager;
-	}
-
-	/**
-	 * Sets the context menu manager for this tool bar manager to the given menu
-	 * manager. If the tool bar control exists, it also adds the menu control to
-	 * the tool bar.
-	 * 
-	 * @param contextMenuManager
-	 *            the context menu manager, or <code>null</code> if none
-	 * @since 3.0
-	 */
-	public void setContextMenuManager(MenuManager contextMenuManager) {
-		this.contextMenuManager = contextMenuManager;
-		if (toolBar != null) {
-			toolBar.setMenu(getContextMenuControl());
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/images/stop.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/images/stop.gif
deleted file mode 100644
index dc47edf..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/images/stop.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/action/package.html
deleted file mode 100644
index b9f7ac7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/action/package.html
+++ /dev/null
@@ -1,31 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides support for shared UI resources such as menus,
-tool bars, and status lines.
-<h2>
-Package Specification</h2>
-Contribution managers coordinate contributions to shared UI resources such
-as menus, menu bars, tool bars, and status lines. <tt>ContributionManager</tt>
-maintains the contributions as a dynamic list of contribution items (<tt>IContributionItems</tt>).
-Separators (<tt>Separator</tt>) can be included in contribution lists to
-break up the list's visual representation. Internally, contribution lists
-can be organized into named groups via special group markers (<tt>GroupMarker</tt>)
-to facilitate programatic insertion at specific positions within the list.
-<p>Three specific contribution managers are provided: a status line manager
-(<tt>StatusLineManager</tt>), a tool bar manager (<tt>ToolBarManager</tt>),
-and a hierarchical menu manager (<tt>MenuManager</tt>).
-<p>Actions (<tt>IAction</tt>) are commands which can be triggered from
-the UI, like the ones found in menus, toolbars, and buttons. Menus and
-tools bars are typically populated with contribution items that delegate
-to actions (<tt>ActionContributionItem</tt>).
-<p>Note: None of the classes in this package maintain global state.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java
deleted file mode 100644
index 4b32100..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Binding.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.StringWriter;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * A binding is a link between user input and the triggering of a particular
- * command. The most common example of a binding is a keyboard shortcut, but
- * there are also mouse and gesture bindings.
- * </p>
- * <p>
- * Bindings are linked to particular conditions within the application. Some of
- * these conditions change infrequently (e.g., locale, scheme), while some will
- * tend to change quite frequently (e.g., context). This allows the bindings to
- * be tailored to particular situations. For example, a set of bindings may be
- * appropriate only inside a text editor.  Or, perhaps, a set of bindings might
- * be appropriate only for a given locale, such as bindings that coexist with
- * the Input Method Editor (IME) on Chinese locales.
- * </p>
- * <p>
- * It is also possible to remove a particular binding. This is typically done as
- * part of user configuration (e.g., user changing keyboard shortcuts). However,
- * it can also be helpful when trying to change a binding on a particular locale
- * or platform. An "unbinding" is really just a binding with no command
- * identifier. For it to unbind a particular binding, it must match that binding
- * in its context identifier and scheme identifier. Subclasses (e.g.,
- * <code>KeyBinding</code>) may require other properties to match (e.g.,
- * <code>keySequence</code>). If these properties match, then this is an
- * unbinding. Note: the locale and platform can be different.
- * </p>
- * <p>
- * For example, imagine you have a key binding that looks like this:
- * </p>
- * <code><pre>
- * KeyBinding(command, scheme, context, &quot;Ctrl+Shift+F&quot;)
- * </pre></code>
- * <p>
- * On GTK+, the "Ctrl+Shift+F" interferes with some native behaviour. To change
- * the binding, we first unbind the "Ctrl+Shift+F" key sequence by 
- * assigning it a null command on the gtk platform.  We then create a new binding
- * that maps the command to the "Esc Ctrl+F" key sequence.
- * </p>
- * <code><pre>
- *     KeyBinding("Ctrl+Shift+F",null,scheme,context,null,gtk,null,SYSTEM)
- *     KeyBinding("Esc Ctrl+F",parameterizedCommand,scheme,context,null,gtk,SYSTEM)
- * </pre></code>
- * <p>
- * Bindings are intended to be immutable objects.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class Binding {
-
-	/**
-	 * The constant integer hash code value meaning the hash code has not yet
-	 * been computed.
-	 */
-	private static final int HASH_CODE_NOT_COMPUTED = -1;
-
-	/**
-	 * A factor for computing the hash code for all key bindings.
-	 */
-	private final static int HASH_FACTOR = 89;
-
-	/**
-	 * The seed for the hash code for all key bindings.
-	 */
-	private final static int HASH_INITIAL = Binding.class.getName().hashCode();
-
-	/**
-	 * The type of binding that is defined by the system (i.e., by the
-	 * application developer). In the case of an application based on the
-	 * Eclipse workbench, this is the registry.
-	 */
-	public static final int SYSTEM = 0;
-
-	/**
-	 * The type of binding that is defined by the user (i.e., by the end user of
-	 * the application). In the case of an application based on the Eclipse
-	 * workbench, this is the preference store.
-	 */
-	public static final int USER = 1;
-
-	/**
-	 * The parameterized command to which this binding applies. This value may
-	 * be <code>null</code> if this binding is meant to "unbind" an existing
-	 * binding.
-	 */
-	private final ParameterizedCommand command;
-
-	/**
-	 * The context identifier to which this binding applies. This context must
-	 * be active before this key binding becomes active. This value will never
-	 * be <code>null</code>.
-	 */
-	private final String contextId;
-
-	/**
-	 * The hash code for this key binding. This value is computed lazily, and
-	 * marked as invalid when one of the values on which it is based changes.
-	 */
-	private transient int hashCode = HASH_CODE_NOT_COMPUTED;
-
-	/**
-	 * The locale in which this binding applies. This value may be
-	 * <code>null</code> if this binding is meant to apply to all locales.
-	 * This string should be in the same format returned by
-	 * <code>Locale.getDefault().toString()</code>.
-	 */
-	private final String locale;
-
-	/**
-	 * The platform on which this binding applies. This value may be
-	 * <code>null</code> if this binding is meant to apply to all platforms.
-	 * This string should be in the same format returned by
-	 * <code>SWT.getPlatform</code>.
-	 */
-	private final String platform;
-
-	/**
-	 * The identifier of the scheme in which this binding applies. This value
-	 * will never be <code>null</code>.
-	 */
-	private final String schemeId;
-
-	/**
-	 * The string representation of this binding. This string is for debugging
-	 * purposes only, and is not meant to be displayed to the user. This value
-	 * is computed lazily.
-	 */
-	protected transient String string = null;
-
-	/**
-	 * The type of binding this represents. This is used to distinguish between
-	 * different priority levels for bindings. For example, in our case,
-	 * <code>USER</code> bindings override <code>SYSTEM</code> bindings.
-	 */
-	private final int type;
-
-	/**
-	 * Constructs a new instance of <code>Binding</code>.
-	 * 
-	 * @param command
-	 *            The parameterized command to which this binding applies; this
-	 *            value may be <code>null</code> if the binding is meant to
-	 *            "unbind" a previously defined binding.
-	 * @param schemeId
-	 *            The scheme to which this binding belongs; this value must not
-	 *            be <code>null</code>.
-	 * @param contextId
-	 *            The context to which this binding applies; this value must not
-	 *            be <code>null</code>.
-	 * @param locale
-	 *            The locale to which this binding applies; this value may be
-	 *            <code>null</code> if it applies to all locales.
-	 * @param platform
-	 *            The platform to which this binding applies; this value may be
-	 *            <code>null</code> if it applies to all platforms.
-	 * @param windowManager
-	 *            The window manager to which this binding applies; this value
-	 *            may be <code>null</code> if it applies to all window
-	 *            managers. This value is currently ignored.
-	 * @param type
-	 *            The type of binding. This should be either <code>SYSTEM</code>
-	 *            or <code>USER</code>.
-	 */
-	protected Binding(final ParameterizedCommand command,
-			final String schemeId, final String contextId, final String locale,
-			final String platform, final String windowManager, final int type) {
-		if (schemeId == null) {
-			throw new NullPointerException("The scheme cannot be null"); //$NON-NLS-1$
-		}
-
-		if (contextId == null) {
-			throw new NullPointerException("The context cannot be null"); //$NON-NLS-1$
-		}
-
-		if ((type != SYSTEM) && (type != USER)) {
-			throw new IllegalArgumentException(
-					"The type must be SYSTEM or USER"); //$NON-NLS-1$
-		}
-
-		this.command = command;
-		this.schemeId = schemeId.intern();
-		this.contextId = contextId.intern();
-		this.locale = (locale == null) ? null : locale.intern();
-		this.platform = (platform == null) ? null : platform.intern();
-		this.type = type;
-	}
-
-	/**
-	 * Tests whether this binding is intended to delete another binding. The
-	 * receiver must have a <code>null</code> command identifier.
-	 * 
-	 * @param binding
-	 *            The binding to test; must not be <code>null</code>.
-	 *            This binding must be a <code>SYSTEM</code> binding.
-	 * @return <code>true</code> if the receiver deletes the binding defined by
-	 * 			the argument.
-	 */
-	final boolean deletes(final Binding binding) {
-		boolean deletes = true;
-		deletes &= Util.equals(getContextId(), binding.getContextId());
-		deletes &= Util.equals(getTriggerSequence(), binding
-				.getTriggerSequence());
-		if (getLocale() != null) {
-			deletes &= !Util.equals(getLocale(), binding.getLocale());
-		}
-		if (getPlatform() != null) {
-			deletes &= !Util.equals(getPlatform(), binding.getPlatform());
-		}
-		deletes &= (binding.getType() == SYSTEM);
-		deletes &= Util.equals(getParameterizedCommand(), null);
-
-		return deletes;
-	}
-
-	/**
-	 * Tests whether this binding is equal to another object. Bindings are only
-	 * equal to other bindings with equivalent values.
-	 * 
-	 * @param object
-	 *            The object with which to compare; may be <code>null</code>.
-	 * @return <code>true</code> if the object is a binding with equivalent
-	 *         values for all of its properties; <code>false</code> otherwise.
-	 */
-	public final boolean equals(final Object object) {
-		if (this == object) {
-			return true;
-
-		}
-		if (!(object instanceof Binding)) {
-			return false;
-		}
-
-		final Binding binding = (Binding) object;
-		if (!Util.equals(getParameterizedCommand(), binding
-				.getParameterizedCommand())) {
-			return false;
-		}
-		if (!Util.equals(getContextId(), binding.getContextId())) {
-			return false;
-		}
-		if (!Util.equals(getTriggerSequence(), binding.getTriggerSequence())) {
-			return false;
-		}
-		if (!Util.equals(getLocale(), binding.getLocale())) {
-			return false;
-		}
-		if (!Util.equals(getPlatform(), binding.getPlatform())) {
-			return false;
-		}
-		if (!Util.equals(getSchemeId(), binding.getSchemeId())) {
-			return false;
-		}
-		return (getType() == binding.getType());
-	}
-
-	/**
-	 * Returns the parameterized command to which this binding applies. If the
-	 * identifier is <code>null</code>, then this binding is "unbinding" an
-	 * existing binding.
-	 * 
-	 * @return The fully-parameterized command; may be <code>null</code>.
-	 */
-	public final ParameterizedCommand getParameterizedCommand() {
-		return command;
-	}
-
-	/**
-	 * Returns the identifier of the context in which this binding applies.
-	 * 
-	 * @return The context identifier; never <code>null</code>.
-	 */
-	public final String getContextId() {
-		return contextId;
-	}
-
-	/**
-	 * Returns the locale in which this binding applies. If the locale is
-	 * <code>null</code>, then this binding applies to all locales. This
-	 * string is the same format as returned by
-	 * <code>Locale.getDefault().toString()</code>.
-	 * 
-	 * @return The locale; may be <code>null</code>.
-	 */
-	public final String getLocale() {
-		return locale;
-	}
-
-	/**
-	 * Returns the platform on which this binding applies. If the platform is
-	 * <code>null</code>, then this binding applies to all platforms. This
-	 * string is the same format as returned by <code>SWT.getPlatform()</code>.
-	 * 
-	 * @return The platform; may be <code>null</code>.
-	 */
-	public final String getPlatform() {
-		return platform;
-	}
-
-	/**
-	 * Returns the identifier of the scheme in which this binding applies.
-	 * 
-	 * @return The scheme identifier; never <code>null</code>.
-	 */
-	public final String getSchemeId() {
-		return schemeId;
-	}
-
-	/**
-	 * Returns the sequence of trigger for a given binding. The triggers can be
-	 * anything, but above all it must be hashable. This trigger sequence is
-	 * used by the binding manager to distinguish between different bindings.
-	 * 
-	 * @return The object representing an input event that will trigger this
-	 *         binding; must not be <code>null</code>.
-	 */
-	public abstract TriggerSequence getTriggerSequence();
-
-	/**
-	 * Returns the type for this binding. As it stands now, this value will
-	 * either be <code>SYSTEM</code> or <code>USER</code>. In the future,
-	 * more types might be added.
-	 * 
-	 * @return The type for this binding.
-	 */
-	public final int getType() {
-		return type;
-	}
-
-	/**
-	 * Computes the hash code for this key binding based on all of its
-	 * attributes.
-	 * 
-	 * @return The hash code for this key binding.
-	 */
-	public final int hashCode() {
-		if (hashCode == HASH_CODE_NOT_COMPUTED) {
-			hashCode = HASH_INITIAL;
-			hashCode = hashCode * HASH_FACTOR
-					+ Util.hashCode(getParameterizedCommand());
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(getContextId());
-			hashCode = hashCode * HASH_FACTOR
-					+ Util.hashCode(getTriggerSequence());
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(getLocale());
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(getPlatform());
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(getSchemeId());
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(getType());
-			if (hashCode == HASH_CODE_NOT_COMPUTED) {
-				hashCode++;
-			}
-		}
-
-		return hashCode;
-	}
-
-	/**
-	 * The string representation of this binding -- for debugging purposes only.
-	 * This string should not be shown to an end user. This should be overridden
-	 * by subclasses that add properties.
-	 * 
-	 * @return The string representation; never <code>null</code>.
-	 */
-	public String toString() {
-		if (string == null) {
-			
-			final StringWriter sw = new StringWriter();
-			final BufferedWriter stringBuffer = new BufferedWriter(sw);
-			try {
-				stringBuffer.write("Binding("); //$NON-NLS-1$
-				stringBuffer.write(getTriggerSequence().toString());
-				stringBuffer.write(',');
-				stringBuffer.newLine();
-				stringBuffer.write('\t');
-				stringBuffer.write(command==null?"":command.toString()); //$NON-NLS-1$
-				stringBuffer.write(',');
-				stringBuffer.newLine();
-				stringBuffer.write('\t');
-				stringBuffer.write(schemeId);
-				stringBuffer.write(',');
-				stringBuffer.newLine();
-				stringBuffer.write('\t');
-				stringBuffer.write(contextId);
-				stringBuffer.write(',');
-				stringBuffer.write(locale==null?"":locale); //$NON-NLS-1$
-				stringBuffer.write(',');
-				stringBuffer.write(platform==null?"":platform); //$NON-NLS-1$
-				stringBuffer.write(',');
-				stringBuffer.write((type == SYSTEM) ? "system" : "user"); //$NON-NLS-1$//$NON-NLS-2$
-				stringBuffer.write(')');
-				stringBuffer.flush();
-			} catch (IOException e) {
-				// shouldn't get this
-			}
-			string = sw.toString();
-		}
-
-		return string;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
deleted file mode 100644
index d3e9f9c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManager.java
+++ /dev/null
@@ -1,2312 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.HandleObjectManager;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.commands.contexts.ContextManagerEvent;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.contexts.IContextIds;
-import org.eclipse.jface.internal.InternalPolicy;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.SWT;
-
-/**
- * <p>
- * A central repository for bindings -- both in the defined and undefined
- * states. Schemes and bindings can be created and retrieved using this manager.
- * It is possible to listen to changes in the collection of schemes and bindings
- * by adding a listener to the manager.
- * </p>
- * <p>
- * The binding manager is very sensitive to performance. Misusing the manager
- * can render an application unenjoyable to use. As such, each of the public
- * methods states the current run-time performance. In future releases, it is
- * guaranteed that the method will run in at least the stated time constraint --
- * though it might get faster. Where possible, we have also tried to be memory
- * efficient.
- * </p>
- * 
- * @since 3.1
- */
-public final class BindingManager extends HandleObjectManager implements
-		IContextManagerListener, ISchemeListener {
-
-	/**
-	 * This flag can be set to <code>true</code> if the binding manager should
-	 * print information to <code>System.out</code> when certain boundary
-	 * conditions occur.
-	 */
-	public static boolean DEBUG = false;
-
-	/**
-	 * Returned for optimized lookup.
-	 */
-	private static final TriggerSequence[] EMPTY_TRIGGER_SEQUENCE = new TriggerSequence[0];
-
-	/**
-	 * The separator character used in locales.
-	 */
-	private static final String LOCALE_SEPARATOR = "_"; //$NON-NLS-1$
-
-	/**
-	 * </p>
-	 * A utility method for adding entries to a map. The map is checked for
-	 * entries at the key. If such an entry exists, it is expected to be a
-	 * <code>Collection</code>. The value is then appended to the collection.
-	 * If no such entry exists, then a collection is created, and the value
-	 * added to the collection.
-	 * </p>
-	 * 
-	 * @param map
-	 *            The map to modify; if this value is <code>null</code>, then
-	 *            this method simply returns.
-	 * @param key
-	 *            The key to look up in the map; may be <code>null</code>.
-	 * @param value
-	 *            The value to look up in the map; may be <code>null</code>.
-	 */
-	private static final void addReverseLookup(final Map map, final Object key,
-			final Object value) {
-		if (map == null) {
-			return;
-		}
-
-		final Object currentValue = map.get(key);
-		if (currentValue != null) {
-			final Collection values = (Collection) currentValue;
-			values.add(value);
-		} else { // currentValue == null
-			final Collection values = new ArrayList(1);
-			values.add(value);
-			map.put(key, values);
-		}
-	}
-
-	/**
-	 * <p>
-	 * Takes a fully-specified string, and converts it into an array of
-	 * increasingly less-specific strings. So, for example, "en_GB" would become
-	 * ["en_GB", "en", "", null].
-	 * </p>
-	 * <p>
-	 * This method runs in linear time (O(n)) over the length of the string.
-	 * </p>
-	 * 
-	 * @param string
-	 *            The string to break apart into its less specific components;
-	 *            should not be <code>null</code>.
-	 * @param separator
-	 *            The separator that indicates a separation between a degrees of
-	 *            specificity; should not be <code>null</code>.
-	 * @return An array of strings from the most specific (i.e.,
-	 *         <code>string</code>) to the least specific (i.e.,
-	 *         <code>null</code>).
-	 */
-	private static final String[] expand(String string, final String separator) {
-		// Test for boundary conditions.
-		if (string == null || separator == null) {
-			return new String[0];
-		}
-
-		final List strings = new ArrayList();
-		final StringBuffer stringBuffer = new StringBuffer();
-		string = string.trim(); // remove whitespace
-		if (string.length() > 0) {
-			final StringTokenizer stringTokenizer = new StringTokenizer(string,
-					separator);
-			while (stringTokenizer.hasMoreElements()) {
-				if (stringBuffer.length() > 0) {
-					stringBuffer.append(separator);
-				}
-				stringBuffer.append(((String) stringTokenizer.nextElement())
-						.trim());
-				strings.add(stringBuffer.toString());
-			}
-		}
-		Collections.reverse(strings);
-		strings.add(Util.ZERO_LENGTH_STRING);
-		strings.add(null);
-		return (String[]) strings.toArray(new String[strings.size()]);
-	}
-
-	/**
-	 * The active bindings. This is a map of triggers (
-	 * <code>TriggerSequence</code>) to bindings (<code>Binding</code>).
-	 * This value will only be <code>null</code> if the active bindings have
-	 * not yet been computed. Otherwise, this value may be empty.
-	 */
-	private Map activeBindings = null;
-
-	/**
-	 * The active bindings indexed by fully-parameterized commands. This is a
-	 * map of fully-parameterized commands (<code>ParameterizedCommand</code>)
-	 * to triggers ( <code>TriggerSequence</code>). This value will only be
-	 * <code>null</code> if the active bindings have not yet been computed.
-	 * Otherwise, this value may be empty.
-	 */
-	private Map activeBindingsByParameterizedCommand = null;
-	
-	private Set triggerConflicts = new HashSet();
-
-	/**
-	 * The scheme that is currently active. An active scheme is the one that is
-	 * currently dictating which bindings will actually work. This value may be
-	 * <code>null</code> if there is no active scheme. If the active scheme
-	 * becomes undefined, then this should automatically revert to
-	 * <code>null</code>.
-	 */
-	private Scheme activeScheme = null;
-
-	/**
-	 * The array of scheme identifiers, starting with the active scheme and
-	 * moving up through its parents. This value may be <code>null</code> if
-	 * there is no active scheme.
-	 */
-	private String[] activeSchemeIds = null;
-
-	/**
-	 * The number of bindings in the <code>bindings</code> array.
-	 */
-	private int bindingCount = 0;
-
-	/**
-	 * A cache of context IDs that weren't defined.
-	 */
-	private Set bindingErrors = new HashSet();
-
-	/**
-	 * The array of all bindings currently handled by this manager. This array
-	 * is the raw list of bindings, as provided to this manager. This value may
-	 * be <code>null</code> if there are no bindings. The size of this array
-	 * is not necessarily the number of bindings.
-	 */
-	private Binding[] bindings = null;
-
-	/**
-	 * A cache of the bindings previously computed by this manager. This value
-	 * may be empty, but it is never <code>null</code>. This is a map of
-	 * <code>CachedBindingSet</code> to <code>CachedBindingSet</code>.
-	 */
-	private Map cachedBindings = new HashMap();
-
-	/**
-	 * The command manager for this binding manager. This manager is only needed
-	 * for the <code>getActiveBindingsFor(String)</code> method. This value is
-	 * guaranteed to never be <code>null</code>.
-	 */
-	private final CommandManager commandManager;
-
-	/**
-	 * The context manager for this binding manager. For a binding manager to
-	 * function, it needs to listen for changes to the contexts. This value is
-	 * guaranteed to never be <code>null</code>.
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * The locale for this manager. This defaults to the current locale. The
-	 * value will never be <code>null</code>.
-	 */
-	private String locale = Locale.getDefault().toString();
-
-	/**
-	 * The array of locales, starting with the active locale and moving up
-	 * through less specific representations of the locale. For example,
-	 * ["en_US", "en", "", null]. This value will never be <code>null</code>.
-	 */
-	private String[] locales = expand(locale, LOCALE_SEPARATOR);
-
-	/**
-	 * The platform for this manager. This defaults to the current platform. The
-	 * value will never be <code>null</code>.
-	 */
-	private String platform = SWT.getPlatform();
-
-	/**
-	 * The array of platforms, starting with the active platform and moving up
-	 * through less specific representations of the platform. For example,
-	 * ["gtk", "", null]. This value will never be <code>null,/code>.
-	 */
-	private String[] platforms = expand(platform, Util.ZERO_LENGTH_STRING);
-
-	/**
-	 * A map of prefixes (<code>TriggerSequence</code>) to a map of
-	 * available completions (possibly <code>null</code>, which means there
-	 * is an exact match). The available completions is a map of trigger (<code>TriggerSequence</code>)
-	 * to bindings (<code>Binding</code>). This value may be
-	 * <code>null</code> if there is no existing solution.
-	 */
-	private Map prefixTable = null;
-
-	/**
-	 * <p>
-	 * Constructs a new instance of <code>BindingManager</code>.
-	 * </p>
-	 * <p>
-	 * This method completes in amortized constant time (O(1)).
-	 * </p>
-	 * 
-	 * @param contextManager
-	 *            The context manager that will support this binding manager.
-	 *            This value must not be <code>null</code>.
-	 * @param commandManager
-	 *            The command manager that will support this binding manager.
-	 *            This value must not be <code>null</code>.
-	 */
-	public BindingManager(final ContextManager contextManager,
-			final CommandManager commandManager) {
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"A binding manager requires a context manager"); //$NON-NLS-1$
-		}
-
-		if (commandManager == null) {
-			throw new NullPointerException(
-					"A binding manager requires a command manager"); //$NON-NLS-1$
-		}
-
-		this.contextManager = contextManager;
-		contextManager.addContextManagerListener(this);
-		this.commandManager = commandManager;
-	}
-
-	/**
-	 * <p>
-	 * Adds a single new binding to the existing array of bindings. If the array
-	 * is currently <code>null</code>, then a new array is created and this
-	 * binding is added to it. This method does not detect duplicates.
-	 * </p>
-	 * <p>
-	 * This method completes in amortized <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @param binding
-	 *            The binding to be added; must not be <code>null</code>.
-	 */
-	public final void addBinding(final Binding binding) {
-		if (binding == null) {
-			throw new NullPointerException("Cannot add a null binding"); //$NON-NLS-1$
-		}
-
-		if (bindings == null) {
-			bindings = new Binding[1];
-		} else if (bindingCount >= bindings.length) {
-			final Binding[] oldBindings = bindings;
-			bindings = new Binding[oldBindings.length * 2];
-			System.arraycopy(oldBindings, 0, bindings, 0, oldBindings.length);
-		}
-		bindings[bindingCount++] = binding;
-		clearCache();
-	}
-
-	/**
-	 * <p>
-	 * Adds a listener to this binding manager. The listener will be notified
-	 * when the set of defined schemes or bindings changes. This can be used to
-	 * track the global appearance and disappearance of bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in amortized constant time (<code>O(1)</code>).
-	 * </p>
-	 * 
-	 * @param listener
-	 *            The listener to attach; must not be <code>null</code>.
-	 */
-	public final void addBindingManagerListener(
-			final IBindingManagerListener listener) {
-		addListenerObject(listener);
-	}
-
-	/**
-	 * <p>
-	 * Builds a prefix table look-up for a map of active bindings.
-	 * </p>
-	 * <p>
-	 * This method takes <code>O(mn)</code>, where <code>m</code> is the
-	 * length of the trigger sequences and <code>n</code> is the number of
-	 * bindings.
-	 * </p>
-	 * 
-	 * @param activeBindings
-	 *            The map of triggers (<code>TriggerSequence</code>) to
-	 *            command ids (<code>String</code>) which are currently
-	 *            active. This value may be <code>null</code> if there are no
-	 *            active bindings, and it may be empty. It must not be
-	 *            <code>null</code>.
-	 * @return A map of prefixes (<code>TriggerSequence</code>) to a map of
-	 *         available completions (possibly <code>null</code>, which means
-	 *         there is an exact match). The available completions is a map of
-	 *         trigger (<code>TriggerSequence</code>) to command identifier (<code>String</code>).
-	 *         This value will never be <code>null</code>, but may be empty.
-	 */
-	private final Map buildPrefixTable(final Map activeBindings) {
-		final Map prefixTable = new HashMap();
-
-		final Iterator bindingItr = activeBindings.entrySet().iterator();
-		while (bindingItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) bindingItr.next();
-			final TriggerSequence triggerSequence = (TriggerSequence) entry
-					.getKey();
-
-			// Add the perfect match.
-			if (!prefixTable.containsKey(triggerSequence)) {
-				prefixTable.put(triggerSequence, null);
-			}
-
-			final TriggerSequence[] prefixes = triggerSequence.getPrefixes();
-			final int prefixesLength = prefixes.length;
-			if (prefixesLength == 0) {
-				continue;
-			}
-
-			// Break apart the trigger sequence.
-			final Binding binding = (Binding) entry.getValue();
-			for (int i = 0; i < prefixesLength; i++) {
-				final TriggerSequence prefix = prefixes[i];
-				final Object value = prefixTable.get(prefix);
-				if ((prefixTable.containsKey(prefix)) && (value instanceof Map)) {
-					((Map) value).put(triggerSequence, binding);
-				} else {
-					final Map map = new HashMap();
-					prefixTable.put(prefix, map);
-					map.put(triggerSequence, binding);
-				}
-			}
-		}
-
-		return prefixTable;
-	}
-
-	/**
-	 * <p>
-	 * Clears the cache, and the existing solution. If debugging is turned on,
-	 * then this will also print a message to standard out.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 */
-	private final void clearCache() {
-		if (DEBUG) {
-			Tracing.printTrace("BINDINGS", "Clearing cache"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		cachedBindings.clear();
-		clearSolution();
-	}
-
-	/**
-	 * <p>
-	 * Clears the existing solution.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 */
-	private final void clearSolution() {
-		setActiveBindings(null, null, null, null);
-	}
-
-	/**
-	 * Compares the identifier of two schemes, and decides which scheme is the
-	 * youngest (i.e., the child) of the two. Both schemes should be active
-	 * schemes.
-	 * 
-	 * @param schemeId1
-	 *            The identifier of the first scheme; must not be
-	 *            <code>null</code>.
-	 * @param schemeId2
-	 *            The identifier of the second scheme; must not be
-	 *            <code>null</code>.
-	 * @return <code>0</code> if the two schemes are equal of if neither
-	 *         scheme is active; <code>1</code> if the second scheme is the
-	 *         youngest; and <code>-1</code> if the first scheme is the
-	 *         youngest.
-	 * @since 3.2
-	 */
-	private final int compareSchemes(final String schemeId1,
-			final String schemeId2) {
-		if (!schemeId2.equals(schemeId1)) {
-			for (int i = 0; i < activeSchemeIds.length; i++) {
-				final String schemePointer = activeSchemeIds[i];
-				if (schemeId2.equals(schemePointer)) {
-					return 1;
-
-				} else if (schemeId1.equals(schemePointer)) {
-					return -1;
-
-				}
-
-			}
-		}
-
-		return 0;
-	}
-
-	/**
-	 * <p>
-	 * Computes the bindings given the context tree, and inserts them into the
-	 * <code>commandIdsByTrigger</code>. It is assumed that
-	 * <code>locales</code>,<code>platforsm</code> and
-	 * <code>schemeIds</code> correctly reflect the state of the application.
-	 * This method does not deal with caching.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @param activeContextTree
-	 *            The map representing the tree of active contexts. The map is
-	 *            one of child to parent, each being a context id (
-	 *            <code>String</code>). The keys are never <code>null</code>,
-	 *            but the values may be (i.e., no parent). This map may be
-	 *            empty. It may be <code>null</code> if we shouldn't consider
-	 *            contexts.
-	 * @param bindingsByTrigger
-	 *            The empty of map that is intended to be filled with triggers (
-	 *            <code>TriggerSequence</code>) to bindings (
-	 *            <code>Binding</code>). This value must not be
-	 *            <code>null</code> and must be empty.
-	 * @param triggersByCommandId
-	 *            The empty of map that is intended to be filled with command
-	 *            identifiers (<code>String</code>) to triggers (
-	 *            <code>TriggerSequence</code>). This value must either be
-	 *            <code>null</code> (indicating that these values are not
-	 *            needed), or empty (indicating that this map should be
-	 *            computed).
-	 */
-	private final void computeBindings(final Map activeContextTree,
-			final Map bindingsByTrigger, final Map triggersByCommandId, 
-			final Map conflictsByTrigger) {
-		/*
-		 * FIRST PASS: Remove all of the bindings that are marking deletions.
-		 */
-		final Binding[] trimmedBindings = removeDeletions(bindings);
-
-		/*
-		 * SECOND PASS: Just throw in bindings that match the current state. If
-		 * there is more than one match for a binding, then create a list.
-		 */
-		final Map possibleBindings = new HashMap();
-		final int length = trimmedBindings.length;
-		for (int i = 0; i < length; i++) {
-			final Binding binding = trimmedBindings[i];
-			boolean found;
-
-			// Check the context.
-			final String contextId = binding.getContextId();
-			if ((activeContextTree != null)
-					&& (!activeContextTree.containsKey(contextId))) {
-				continue;
-			}
-
-			// Check the locale.
-			if (!localeMatches(binding)) {
-				continue;
-			}
-
-			// Check the platform.
-			if (!platformMatches(binding)) {
-				continue;
-			}
-
-			// Check the scheme ids.
-			final String schemeId = binding.getSchemeId();
-			found = false;
-			if (activeSchemeIds != null) {
-				for (int j = 0; j < activeSchemeIds.length; j++) {
-					if (Util.equals(schemeId, activeSchemeIds[j])) {
-						found = true;
-						break;
-					}
-				}
-			}
-			if (!found) {
-				continue;
-			}
-
-			// Insert the match into the list of possible matches.
-			final TriggerSequence trigger = binding.getTriggerSequence();
-			final Object existingMatch = possibleBindings.get(trigger);
-			if (existingMatch instanceof Binding) {
-				possibleBindings.remove(trigger);
-				final Collection matches = new ArrayList();
-				matches.add(existingMatch);
-				matches.add(binding);
-				possibleBindings.put(trigger, matches);
-
-			} else if (existingMatch instanceof Collection) {
-				final Collection matches = (Collection) existingMatch;
-				matches.add(binding);
-
-			} else {
-				possibleBindings.put(trigger, binding);
-			}
-		}
-
-		MultiStatus conflicts = new MultiStatus("org.eclipse.jface", 0, //$NON-NLS-1$
-				"Keybinding conflicts occurred.  They may interfere with normal accelerator operation.", //$NON-NLS-1$
-				null);
-		/*
-		 * THIRD PASS: In this pass, we move any non-conflicting bindings
-		 * directly into the map. In the case of conflicts, we apply some
-		 * further logic to try to resolve them. If the conflict can't be
-		 * resolved, then we log the problem.
-		 */
-		final Iterator possibleBindingItr = possibleBindings.entrySet()
-				.iterator();
-		while (possibleBindingItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) possibleBindingItr.next();
-			final TriggerSequence trigger = (TriggerSequence) entry.getKey();
-			final Object match = entry.getValue();
-			/*
-			 * What we do depends slightly on whether we are trying to build a
-			 * list of all possible bindings (disregarding context), or a flat
-			 * map given the currently active contexts.
-			 */
-			if (activeContextTree == null) {
-				// We are building the list of all possible bindings.
-				final Collection bindings = new ArrayList();
-				if (match instanceof Binding) {
-					bindings.add(match);
-					bindingsByTrigger.put(trigger, bindings);
-					addReverseLookup(triggersByCommandId, ((Binding) match)
-							.getParameterizedCommand(), trigger);
-
-				} else if (match instanceof Collection) {
-					bindings.addAll((Collection) match);
-					bindingsByTrigger.put(trigger, bindings);
-
-					final Iterator matchItr = bindings.iterator();
-					while (matchItr.hasNext()) {
-						addReverseLookup(triggersByCommandId,
-								((Binding) matchItr.next())
-										.getParameterizedCommand(), trigger);
-					}
-				}
-
-			} else {
-				// We are building the flat map of trigger to commands.
-				if (match instanceof Binding) {
-					final Binding binding = (Binding) match;
-					bindingsByTrigger.put(trigger, binding);
-					addReverseLookup(triggersByCommandId, binding
-							.getParameterizedCommand(), trigger);
-
-				} else if (match instanceof Collection) {
-					final Binding winner = resolveConflicts((Collection) match,
-							activeContextTree);
-					if (winner == null) {
-						// warn once ... so as not to flood the logs
-						conflictsByTrigger.put(trigger, match);
-						if (triggerConflicts.add(trigger)) {
-							final StringWriter sw = new StringWriter();
-							final BufferedWriter buffer = new BufferedWriter(sw);
-							try {
-								buffer.write("A conflict occurred for "); //$NON-NLS-1$
-								buffer.write(trigger.toString());
-								buffer.write(':');
-								Iterator i = ((Collection) match).iterator();
-								while (i.hasNext()) {
-									buffer.newLine();
-									buffer.write(i.next().toString());
-								}
-								buffer.flush();
-							} catch (IOException e) {
-								// we should not get this
-							}
-							conflicts.add(new Status(IStatus.WARNING,
-									"org.eclipse.jface", //$NON-NLS-1$
-									sw.toString()));
-						}
-						if (DEBUG) {
-							Tracing.printTrace("BINDINGS", //$NON-NLS-1$
-									"A conflict occurred for " + trigger); //$NON-NLS-1$
-							Tracing.printTrace("BINDINGS", "    " + match); //$NON-NLS-1$ //$NON-NLS-2$
-						}
-					} else {
-						bindingsByTrigger.put(trigger, winner);
-						addReverseLookup(triggersByCommandId, winner
-								.getParameterizedCommand(), trigger);
-					}
-				}
-			}
-		}
-		if (conflicts.getSeverity() != IStatus.OK) {
-			Policy.getLog().log(conflicts);
-		}
-	}
-
-	/**
-	 * <p>
-	 * Notifies this manager that the context manager has changed. This method
-	 * is intended for internal use only.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 */
-	public final void contextManagerChanged(
-			final ContextManagerEvent contextManagerEvent) {
-		if (contextManagerEvent.isActiveContextsChanged()) {
-// clearSolution();
-			recomputeBindings();
-		}
-	}
-
-	/**
-	 * Returns the number of strokes in an array of triggers. It is assumed that
-	 * there is one natural key per trigger. The strokes are counted based on
-	 * the type of key. Natural keys are worth one; ctrl is worth two; shift is
-	 * worth four; and alt is worth eight.
-	 * 
-	 * @param triggers
-	 *            The triggers on which to count strokes; must not be
-	 *            <code>null</code>.
-	 * @return The value of the strokes in the triggers.
-	 * @since 3.2
-	 */
-	private final int countStrokes(final Trigger[] triggers) {
-		int strokeCount = triggers.length;
-		for (int i = 0; i < triggers.length; i++) {
-			final Trigger trigger = triggers[i];
-			if (trigger instanceof KeyStroke) {
-				final KeyStroke keyStroke = (KeyStroke) trigger;
-				final int modifierKeys = keyStroke.getModifierKeys();
-				final IKeyLookup lookup = KeyLookupFactory.getDefault();
-				if ((modifierKeys & lookup.getAlt()) != 0) {
-					strokeCount += 8;
-				}
-				if ((modifierKeys & lookup.getCtrl()) != 0) {
-					strokeCount += 2;
-				}
-				if ((modifierKeys & lookup.getShift()) != 0) {
-					strokeCount += 4;
-				}
-				if ((modifierKeys & lookup.getCommand()) != 0) {
-					strokeCount += 2;
-				}
-			} else {
-				strokeCount += 99;
-			}
-		}
-
-		return strokeCount;
-	}
-
-	/**
-	 * <p>
-	 * Creates a tree of context identifiers, representing the hierarchical
-	 * structure of the given contexts. The tree is structured as a mapping from
-	 * child to parent.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the height of the context tree.
-	 * </p>
-	 * 
-	 * @param contextIds
-	 *            The set of context identifiers to be converted into a tree;
-	 *            must not be <code>null</code>.
-	 * @return The tree of contexts to use; may be empty, but never
-	 *         <code>null</code>. The keys and values are both strings.
-	 */
-	private final Map createContextTreeFor(final Set contextIds) {
-		final Map contextTree = new HashMap();
-
-		final Iterator contextIdItr = contextIds.iterator();
-		while (contextIdItr.hasNext()) {
-			String childContextId = (String) contextIdItr.next();
-			while (childContextId != null) {
-				// Check if we've already got the part of the tree from here up.
-				if (contextTree.containsKey(childContextId)) {
-					break;
-				}
-
-				// Retrieve the context.
-				final Context childContext = contextManager
-						.getContext(childContextId);
-
-				// Add the child-parent pair to the tree.
-				try {
-					final String parentContextId = childContext.getParentId();
-					contextTree.put(childContextId, parentContextId);
-					childContextId = parentContextId;
-				} catch (final NotDefinedException e) {
-					break; // stop ascending
-				}
-			}
-		}
-
-		return contextTree;
-	}
-
-	/**
-	 * <p>
-	 * Creates a tree of context identifiers, representing the hierarchical
-	 * structure of the given contexts. The tree is structured as a mapping from
-	 * child to parent. In this tree, the key binding specific filtering of
-	 * contexts will have taken place.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n^2)</code>, where <code>n</code>
-	 * is the height of the context tree.
-	 * </p>
-	 * 
-	 * @param contextIds
-	 *            The set of context identifiers to be converted into a tree;
-	 *            must not be <code>null</code>.
-	 * @return The tree of contexts to use; may be empty, but never
-	 *         <code>null</code>. The keys and values are both strings.
-	 */
-	private final Map createFilteredContextTreeFor(final Set contextIds) {
-		// Check to see whether a dialog or window is active.
-		boolean dialog = false;
-		boolean window = false;
-		Iterator contextIdItr = contextIds.iterator();
-		while (contextIdItr.hasNext()) {
-			final String contextId = (String) contextIdItr.next();
-			if (IContextIds.CONTEXT_ID_DIALOG.equals(contextId)) {
-				dialog = true;
-				continue;
-			}
-			if (IContextIds.CONTEXT_ID_WINDOW.equals(contextId)) {
-				window = true;
-				continue;
-			}
-		}
-
-		/*
-		 * Remove all context identifiers for contexts whose parents are dialog
-		 * or window, and the corresponding dialog or window context is not
-		 * active.
-		 */
-		contextIdItr = contextIds.iterator();
-		while (contextIdItr.hasNext()) {
-			String contextId = (String) contextIdItr.next();
-			Context context = contextManager.getContext(contextId);
-			try {
-				String parentId = context.getParentId();
-				while (parentId != null) {
-					if (IContextIds.CONTEXT_ID_DIALOG.equals(parentId)) {
-						if (!dialog) {
-							contextIdItr.remove();
-						}
-						break;
-					}
-					if (IContextIds.CONTEXT_ID_WINDOW.equals(parentId)) {
-						if (!window) {
-							contextIdItr.remove();
-						}
-						break;
-					}
-					if (IContextIds.CONTEXT_ID_DIALOG_AND_WINDOW
-							.equals(parentId)) {
-						if ((!window) && (!dialog)) {
-							contextIdItr.remove();
-						}
-						break;
-					}
-
-					context = contextManager.getContext(parentId);
-					parentId = context.getParentId();
-				}
-			} catch (NotDefinedException e) {
-				// since this context was part of an undefined hierarchy,
-				// I'm going to yank it out as a bad bet
-				contextIdItr.remove();
-
-				// This is a logging optimization, only log the error once.
-				if (context == null || !bindingErrors.contains(context.getId())) {
-					if (context != null) {
-						bindingErrors.add(context.getId());
-					}
-
-					// now log like you've never logged before!
-					Policy
-							.getLog()
-							.log(
-									new Status(
-											IStatus.ERROR,
-											Policy.JFACE,
-											IStatus.OK,
-											"Undefined context while filtering dialog/window contexts", //$NON-NLS-1$
-											e));
-				}
-			}
-		}
-
-		return createContextTreeFor(contextIds);
-	}
-
-	/**
-	 * <p>
-	 * Notifies all of the listeners to this manager that the defined or active
-	 * schemes of bindings have changed.
-	 * </p>
-	 * <p>
-	 * The time this method takes to complete is dependent on external
-	 * listeners.
-	 * </p>
-	 * 
-	 * @param event
-	 *            The event to send to all of the listeners; must not be
-	 *            <code>null</code>.
-	 */
-	private final void fireBindingManagerChanged(final BindingManagerEvent event) {
-		if (event == null) {
-			throw new NullPointerException();
-		}
-
-		final Object[] listeners = getListeners();
-		for (int i = 0; i < listeners.length; i++) {
-			final IBindingManagerListener listener = (IBindingManagerListener) listeners[i];
-			listener.bindingManagerChanged(event);
-		}
-	}
-
-	/**
-	 * <p>
-	 * Returns the active bindings. The caller must not modify the returned map.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the active bindings are
-	 * not yet computed, then this completes in <code>O(nn)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @return The map of triggers (<code>TriggerSequence</code>) to
-	 *         bindings (<code>Binding</code>) which are currently active.
-	 *         This value may be <code>null</code> if there are no active
-	 *         bindings, and it may be empty.
-	 */
-	private final Map getActiveBindings() {
-		if (activeBindings == null) {
-			recomputeBindings();
-		}
-
-		return activeBindings;
-	}
-
-	/**
-	 * <p>
-	 * Returns the active bindings indexed by command identifier. The caller
-	 * must not modify the returned map.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the active bindings are
-	 * not yet computed, then this completes in <code>O(nn)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @return The map of fully-parameterized commands (<code>ParameterizedCommand</code>)
-	 *         to triggers (<code>TriggerSequence</code>) which are
-	 *         currently active. This value may be <code>null</code> if there
-	 *         are no active bindings, and it may be empty.
-	 */
-	private final Map getActiveBindingsByParameterizedCommand() {
-		if (activeBindingsByParameterizedCommand == null) {
-			recomputeBindings();
-		}
-
-		return activeBindingsByParameterizedCommand;
-	}
-
-	/**
-	 * <p>
-	 * Computes the bindings for the current state of the application, but
-	 * disregarding the current contexts. This can be useful when trying to
-	 * display all the possible bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @return A map of trigger (<code>TriggerSequence</code>) to bindings (
-	 *         <code>Collection</code> containing <code>Binding</code>).
-	 *         This map may be empty, but it is never <code>null</code>.
-	 */
-	public final Map getActiveBindingsDisregardingContext() {
-		if (bindings == null) {
-			// Not yet initialized. This is happening too early. Do nothing.
-			return Collections.EMPTY_MAP;
-		}
-
-		// Build a cached binding set for that state.
-		final CachedBindingSet bindingCache = new CachedBindingSet(null,
-				locales, platforms, activeSchemeIds);
-
-		/*
-		 * Check if the cached binding set already exists. If so, simply set the
-		 * active bindings and return.
-		 */
-		CachedBindingSet existingCache = (CachedBindingSet) cachedBindings
-				.get(bindingCache);
-		if (existingCache == null) {
-			existingCache = bindingCache;
-			cachedBindings.put(existingCache, existingCache);
-		}
-		Map commandIdsByTrigger = existingCache.getBindingsByTrigger();
-		if (commandIdsByTrigger != null) {
-			if (DEBUG) {
-				Tracing.printTrace("BINDINGS", "Cache hit"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			return Collections.unmodifiableMap(commandIdsByTrigger);
-		}
-
-		// There is no cached entry for this.
-		if (DEBUG) {
-			Tracing.printTrace("BINDINGS", "Cache miss"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		// Compute the active bindings.
-		commandIdsByTrigger = new HashMap();
-		final Map triggersByParameterizedCommand = new HashMap();
-		final Map conflictsByTrigger = new HashMap();
-		computeBindings(null, commandIdsByTrigger,
-				triggersByParameterizedCommand, conflictsByTrigger);
-		existingCache.setBindingsByTrigger(commandIdsByTrigger);
-		existingCache.setTriggersByCommandId(triggersByParameterizedCommand);
-		existingCache.setConflictsByTrigger(conflictsByTrigger);
-		return Collections.unmodifiableMap(commandIdsByTrigger);
-	}
-
-	/**
-	 * <p>
-	 * Computes the bindings for the current state of the application, but
-	 * disregarding the current contexts. This can be useful when trying to
-	 * display all the possible bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @return A map of trigger (<code>TriggerSequence</code>) to bindings (
-	 *         <code>Collection</code> containing <code>Binding</code>).
-	 *         This map may be empty, but it is never <code>null</code>.
-	 * @since 3.2
-	 */
-	private final Map getActiveBindingsDisregardingContextByParameterizedCommand() {
-		if (bindings == null) {
-			// Not yet initialized. This is happening too early. Do nothing.
-			return Collections.EMPTY_MAP;
-		}
-
-		// Build a cached binding set for that state.
-		final CachedBindingSet bindingCache = new CachedBindingSet(null,
-				locales, platforms, activeSchemeIds);
-
-		/*
-		 * Check if the cached binding set already exists. If so, simply set the
-		 * active bindings and return.
-		 */
-		CachedBindingSet existingCache = (CachedBindingSet) cachedBindings
-				.get(bindingCache);
-		if (existingCache == null) {
-			existingCache = bindingCache;
-			cachedBindings.put(existingCache, existingCache);
-		}
-		Map triggersByParameterizedCommand = existingCache
-				.getTriggersByCommandId();
-		if (triggersByParameterizedCommand != null) {
-			if (DEBUG) {
-				Tracing.printTrace("BINDINGS", "Cache hit"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			return Collections.unmodifiableMap(triggersByParameterizedCommand);
-		}
-
-		// There is no cached entry for this.
-		if (DEBUG) {
-			Tracing.printTrace("BINDINGS", "Cache miss"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		// Compute the active bindings.
-		final Map commandIdsByTrigger = new HashMap();
-		final Map conflictsByTrigger = new HashMap();
-		triggersByParameterizedCommand = new HashMap();
-		computeBindings(null, commandIdsByTrigger,
-				triggersByParameterizedCommand, conflictsByTrigger);
-		existingCache.setBindingsByTrigger(commandIdsByTrigger);
-		existingCache.setTriggersByCommandId(triggersByParameterizedCommand);
-		existingCache.setConflictsByTrigger(conflictsByTrigger);
-
-		return Collections.unmodifiableMap(triggersByParameterizedCommand);
-	}
-
-	/**
-	 * <p>
-	 * Computes the bindings for the current state of the application, but
-	 * disregarding the current contexts. This can be useful when trying to
-	 * display all the possible bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @return All of the active bindings (<code>Binding</code>), not sorted
-	 *         in any fashion. This collection may be empty, but it is never
-	 *         <code>null</code>.
-	 */
-	public final Collection getActiveBindingsDisregardingContextFlat() {
-		final Collection bindingCollections = getActiveBindingsDisregardingContext()
-				.values();
-		final Collection mergedBindings = new ArrayList();
-		final Iterator bindingCollectionItr = bindingCollections.iterator();
-		while (bindingCollectionItr.hasNext()) {
-			final Collection bindingCollection = (Collection) bindingCollectionItr
-					.next();
-			if ((bindingCollection != null) && (!bindingCollection.isEmpty())) {
-				mergedBindings.addAll(bindingCollection);
-			}
-		}
-
-		return mergedBindings;
-	}
-
-	/**
-	 * <p>
-	 * Returns the active bindings for a particular command identifier, but
-	 * discounting the current contexts. This method operates in O(n) time over
-	 * the number of bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the active bindings are
-	 * not yet computed, then this completes in <code>O(nn)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param parameterizedCommand
-	 *            The fully-parameterized command whose bindings are requested.
-	 *            This argument may be <code>null</code>.
-	 * @return The array of active triggers (<code>TriggerSequence</code>)
-	 *         for a particular command identifier. This value is guaranteed to
-	 *         never be <code>null</code>, but it may be empty.
-	 * @since 3.2
-	 */
-	public final TriggerSequence[] getActiveBindingsDisregardingContextFor(
-			final ParameterizedCommand parameterizedCommand) {
-		final Object object = getActiveBindingsDisregardingContextByParameterizedCommand()
-				.get(parameterizedCommand);
-		if (object instanceof Collection) {
-			final Collection collection = (Collection) object;
-			return (TriggerSequence[]) collection
-					.toArray(new TriggerSequence[collection.size()]);
-		}
-
-		return EMPTY_TRIGGER_SEQUENCE;
-	}
-
-	/**
-	 * <p>
-	 * Returns the active bindings for a particular command identifier. This
-	 * method operates in O(n) time over the number of bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the active bindings are
-	 * not yet computed, then this completes in <code>O(nn)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param parameterizedCommand
-	 *            The fully-parameterized command whose bindings are requested.
-	 *            This argument may be <code>null</code>.
-	 * @return The array of active triggers (<code>TriggerSequence</code>)
-	 *         for a particular command identifier. This value is guaranteed to
-	 *         never be <code>null</code>, but it may be empty.
-	 */
-	public final TriggerSequence[] getActiveBindingsFor(
-			final ParameterizedCommand parameterizedCommand) {
-		final Object object = getActiveBindingsByParameterizedCommand().get(
-				parameterizedCommand);
-		if (object instanceof Collection) {
-			final Collection collection = (Collection) object;
-			return (TriggerSequence[]) collection
-					.toArray(new TriggerSequence[collection.size()]);
-		}
-
-		return EMPTY_TRIGGER_SEQUENCE;
-	}
-
-	/**
-	 * <p>
-	 * Returns the active bindings for a particular command identifier. This
-	 * method operates in O(n) time over the number of bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the active bindings are
-	 * not yet computed, then this completes in <code>O(nn)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            The identifier of the command whose bindings are requested.
-	 *            This argument may be <code>null</code>. It is assumed that
-	 *            the command has no parameters.
-	 * @return The array of active triggers (<code>TriggerSequence</code>)
-	 *         for a particular command identifier. This value is guaranteed not
-	 *         to be <code>null</code>, but it may be empty.
-	 */
-	public final TriggerSequence[] getActiveBindingsFor(final String commandId) {
-		final ParameterizedCommand parameterizedCommand = new ParameterizedCommand(
-				commandManager.getCommand(commandId), null);
-		return getActiveBindingsFor(parameterizedCommand);
-	}
-
-	/**
-	 * A variation on {@link BindingManager#getActiveBindingsFor(String)} that
-	 * returns an array of bindings, rather than trigger sequences. This method
-	 * is needed for doing "best" calculations on the active bindings.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the active bindings
-	 *            should be retrieved; must not be <code>null</code>.
-	 * @return The active bindings for the given command; this value may be
-	 *         <code>null</code> if there are no active bindings.
-	 * @since 3.2
-	 */
-	private final Binding[] getActiveBindingsFor1(final ParameterizedCommand command) {
-		final TriggerSequence[] triggers = getActiveBindingsFor(command);
-		if (triggers.length == 0) {
-			return null;
-		}
-
-		final Map activeBindings = getActiveBindings();
-		if (activeBindings != null) {
-			final Binding[] bindings = new Binding[triggers.length];
-			for (int i = 0; i < triggers.length; i++) {
-				final TriggerSequence triggerSequence = triggers[i];
-				final Object object = activeBindings.get(triggerSequence);
-				final Binding binding = (Binding) object;
-				bindings[i] = binding;
-			}
-			return bindings;
-		}
-
-		return null;
-	}
-
-	/**
-	 * <p>
-	 * Gets the currently active scheme.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @return The active scheme; may be <code>null</code> if there is no
-	 *         active scheme. If a scheme is returned, it is guaranteed to be
-	 *         defined.
-	 */
-	public final Scheme getActiveScheme() {
-		return activeScheme;
-	}
-
-	/**
-	 * Gets the best active binding for a command. The best binding is the one
-	 * that would be most appropriate to show in a menu. Bindings which belong
-	 * to a child scheme are given preference over those in a parent scheme.
-	 * Bindings which belong to a particular locale or platform are given
-	 * preference over those that do not. The rest of the calculaton is based
-	 * most on various concepts of "length", as well as giving some modifier
-	 * keys preference (e.g., <code>Alt</code> is less likely to appear than
-	 * <code>Ctrl</code>).
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the best active
-	 *            binding should be retrieved; must not be <code>null</code>.
-	 * @return The trigger sequence for the best binding; may be
-	 *         <code>null</code> if no bindings are active for the given
-	 *         command.
-	 * @since 3.2
-	 */
-	public final TriggerSequence getBestActiveBindingFor(final String commandId) {
-		return getBestActiveBindingFor(new ParameterizedCommand(commandManager.getCommand(commandId), null));
-	}
-	
-	/**
-	 * @param command
-	 * @return
-	 * 		a trigger sequence, or <code>null</code>
-	 * @since 3.4
-	 */
-	public final TriggerSequence getBestActiveBindingFor(final ParameterizedCommand command) {
-		final Binding[] bindings = getActiveBindingsFor1(command);
-		if ((bindings == null) || (bindings.length == 0)) {
-			return null;
-		}
-
-		Binding bestBinding = bindings[0];
-		int compareTo;
-		for (int i = 1; i < bindings.length; i++) {
-			final Binding currentBinding = bindings[i];
-
-			// Bindings in a child scheme are always given preference.
-			final String bestSchemeId = bestBinding.getSchemeId();
-			final String currentSchemeId = currentBinding.getSchemeId();
-			compareTo = compareSchemes(bestSchemeId, currentSchemeId);
-			if (compareTo > 0) {
-				bestBinding = currentBinding;
-			}
-			if (compareTo != 0) {
-				continue;
-			}
-
-			/*
-			 * Bindings with a locale are given preference over those that do
-			 * not.
-			 */
-			final String bestLocale = bestBinding.getLocale();
-			final String currentLocale = currentBinding.getLocale();
-			if ((bestLocale == null) && (currentLocale != null)) {
-				bestBinding = currentBinding;
-			}
-			if (!(Util.equals(bestLocale, currentLocale))) {
-				continue;
-			}
-
-			/*
-			 * Bindings with a platform are given preference over those that do
-			 * not.
-			 */
-			final String bestPlatform = bestBinding.getPlatform();
-			final String currentPlatform = currentBinding.getPlatform();
-			if ((bestPlatform == null) && (currentPlatform != null)) {
-				bestBinding = currentBinding;
-			}
-			if (!(Util.equals(bestPlatform, currentPlatform))) {
-				continue;
-			}
-
-			/*
-			 * Check to see which has the least number of triggers in the
-			 * trigger sequence.
-			 */
-			final TriggerSequence bestTriggerSequence = bestBinding
-					.getTriggerSequence();
-			final TriggerSequence currentTriggerSequence = currentBinding
-					.getTriggerSequence();
-			final Trigger[] bestTriggers = bestTriggerSequence.getTriggers();
-			final Trigger[] currentTriggers = currentTriggerSequence
-					.getTriggers();
-			compareTo = bestTriggers.length - currentTriggers.length;
-			if (compareTo > 0) {
-				bestBinding = currentBinding;
-			}
-			if (compareTo != 0) {
-				continue;
-			}
-
-			/*
-			 * Compare the number of keys pressed in each trigger sequence. Some
-			 * types of keys count less than others (i.e., some types of
-			 * modifiers keys are less likely to be chosen).
-			 */
-			compareTo = countStrokes(bestTriggers)
-					- countStrokes(currentTriggers);
-			if (compareTo > 0) {
-				bestBinding = currentBinding;
-			}
-			if (compareTo != 0) {
-				continue;
-			}
-
-			// If this is still a tie, then just chose the shortest text.
-			compareTo = bestTriggerSequence.format().length()
-					- currentTriggerSequence.format().length();
-			if (compareTo > 0) {
-				bestBinding = currentBinding;
-			}
-		}
-
-		return bestBinding.getTriggerSequence();
-	}
-
-	/**
-	 * Gets the formatted string representing the best active binding for a
-	 * command. The best binding is the one that would be most appropriate to
-	 * show in a menu. Bindings which belong to a child scheme are given
-	 * preference over those in a parent scheme. The rest of the calculaton is
-	 * based most on various concepts of "length", as well as giving some
-	 * modifier keys preference (e.g., <code>Alt</code> is less likely to
-	 * appear than <code>Ctrl</code>).
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the best active
-	 *            binding should be retrieved; must not be <code>null</code>.
-	 * @return The formatted string for the best binding; may be
-	 *         <code>null</code> if no bindings are active for the given
-	 *         command.
-	 * @since 3.2
-	 */
-	public final String getBestActiveBindingFormattedFor(final String commandId) {
-		final TriggerSequence binding = getBestActiveBindingFor(commandId);
-		if (binding != null) {
-			return binding.format();
-		}
-
-		return null;
-	}
-	/**
-	 * <p>
-	 * Returns the set of all bindings managed by this class.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @return The array of all bindings. This value may be <code>null</code>
-	 *         and it may be empty.
-	 */
-	public final Binding[] getBindings() {
-		if (bindings == null) {
-			return null;
-		}
-
-		final Binding[] returnValue = new Binding[bindingCount];
-		System.arraycopy(bindings, 0, returnValue, 0, bindingCount);
-		return returnValue;
-	}
-
-	/**
-	 * <p>
-	 * Returns the array of schemes that are defined.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @return The array of defined schemes; this value may be empty or
-	 *         <code>null</code>.
-	 */
-	public final Scheme[] getDefinedSchemes() {
-		return (Scheme[]) definedHandleObjects
-				.toArray(new Scheme[definedHandleObjects.size()]);
-	}
-
-	/**
-	 * <p>
-	 * Returns the active locale for this binding manager. The locale is in the
-	 * same format as <code>Locale.getDefault().toString()</code>.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @return The active locale; never <code>null</code>.
-	 */
-	public final String getLocale() {
-		return locale;
-	}
-
-	/**
-	 * <p>
-	 * Returns all of the possible bindings that start with the given trigger
-	 * (but are not equal to the given trigger).
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the bindings aren't
-	 * currently computed, then this completes in <code>O(n)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param trigger
-	 *            The prefix to look for; must not be <code>null</code>.
-	 * @return A map of triggers (<code>TriggerSequence</code>) to bindings (<code>Binding</code>).
-	 *         This map may be empty, but it is never <code>null</code>.
-	 */
-	public final Map getPartialMatches(final TriggerSequence trigger) {
-		final Map partialMatches = (Map) getPrefixTable().get(trigger);
-		if (partialMatches == null) {
-			return Collections.EMPTY_MAP;
-		}
-
-		return partialMatches;
-	}
-
-	/**
-	 * <p>
-	 * Returns the command identifier for the active binding matching this
-	 * trigger, if any.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the bindings aren't
-	 * currently computed, then this completes in <code>O(n)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param trigger
-	 *            The trigger to match; may be <code>null</code>.
-	 * @return The binding that matches, if any; <code>null</code> otherwise.
-	 */
-	public final Binding getPerfectMatch(final TriggerSequence trigger) {
-		return (Binding) getActiveBindings().get(trigger);
-	}
-
-	/**
-	 * <p>
-	 * Returns the active platform for this binding manager. The platform is in
-	 * the same format as <code>SWT.getPlatform()</code>.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @return The active platform; never <code>null</code>.
-	 */
-	public final String getPlatform() {
-		return platform;
-	}
-
-	/**
-	 * <p>
-	 * Returns the prefix table. The caller must not modify the returned map.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the active bindings are
-	 * not yet computed, then this completes in <code>O(n)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @return A map of prefixes (<code>TriggerSequence</code>) to a map of
-	 *         available completions (possibly <code>null</code>, which means
-	 *         there is an exact match). The available completions is a map of
-	 *         trigger (<code>TriggerSequence</code>) to binding (<code>Binding</code>).
-	 *         This value will never be <code>null</code> but may be empty.
-	 */
-	private final Map getPrefixTable() {
-		if (prefixTable == null) {
-			recomputeBindings();
-		}
-
-		return prefixTable;
-	}
-
-	/**
-	 * <p>
-	 * Gets the scheme with the given identifier. If the scheme does not already
-	 * exist, then a new (undefined) scheme is created with that identifier.
-	 * This guarantees that schemes will remain unique.
-	 * </p>
-	 * <p>
-	 * This method completes in amortized <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @param schemeId
-	 *            The identifier for the scheme to retrieve; must not be
-	 *            <code>null</code>.
-	 * @return A scheme with the given identifier.
-	 */
-	public final Scheme getScheme(final String schemeId) {
-		checkId(schemeId);
-
-		Scheme scheme = (Scheme) handleObjectsById.get(schemeId);
-		if (scheme == null) {
-			scheme = new Scheme(schemeId);
-			handleObjectsById.put(schemeId, scheme);
-			scheme.addSchemeListener(this);
-		}
-
-		return scheme;
-	}
-
-	/**
-	 * <p>
-	 * Ascends all of the parents of the scheme until no more parents are found.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the height of the context tree.
-	 * </p>
-	 * 
-	 * @param schemeId
-	 *            The id of the scheme for which the parents should be found;
-	 *            may be <code>null</code>.
-	 * @return The array of scheme ids (<code>String</code>) starting with
-	 *         <code>schemeId</code> and then ascending through its ancestors.
-	 */
-	private final String[] getSchemeIds(String schemeId) {
-		final List strings = new ArrayList();
-		while (schemeId != null) {
-			strings.add(schemeId);
-			try {
-				schemeId = getScheme(schemeId).getParentId();
-			} catch (final NotDefinedException e) {
-				Policy.getLog().log(
-						new Status(IStatus.ERROR, Policy.JFACE, IStatus.OK,
-								"Failed ascending scheme parents", //$NON-NLS-1$
-								e));
-				return new String[0];
-			}
-		}
-
-		return (String[]) strings.toArray(new String[strings.size()]);
-	}
-
-	/**
-	 * <p>
-	 * Returns whether the given trigger sequence is a partial match for the
-	 * given sequence.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the bindings aren't
-	 * currently computed, then this completes in <code>O(n)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param trigger
-	 *            The sequence which should be the prefix for some binding;
-	 *            should not be <code>null</code>.
-	 * @return <code>true</code> if the trigger can be found in the active
-	 *         bindings; <code>false</code> otherwise.
-	 */
-	public final boolean isPartialMatch(final TriggerSequence trigger) {
-		return (getPrefixTable().get(trigger) != null);
-	}
-
-	/**
-	 * <p>
-	 * Returns whether the given trigger sequence is a perfect match for the
-	 * given sequence.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>. If the bindings aren't
-	 * currently computed, then this completes in <code>O(n)</code>, where
-	 * <code>n</code> is the number of bindings.
-	 * </p>
-	 * 
-	 * @param trigger
-	 *            The sequence which should match exactly; should not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if the trigger can be found in the active
-	 *         bindings; <code>false</code> otherwise.
-	 */
-	public final boolean isPerfectMatch(final TriggerSequence trigger) {
-		return getActiveBindings().containsKey(trigger);
-	}
-
-	/**
-	 * <p>
-	 * Tests whether the locale for the binding matches one of the active
-	 * locales.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of active locales.
-	 * </p>
-	 * 
-	 * @param binding
-	 *            The binding with which to test; must not be <code>null</code>.
-	 * @return <code>true</code> if the binding's locale matches;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean localeMatches(final Binding binding) {
-		boolean matches = false;
-
-		final String locale = binding.getLocale();
-		if (locale == null) {
-			return true; // shortcut a common case
-		}
-
-		for (int i = 0; i < locales.length; i++) {
-			if (Util.equals(locales[i], locale)) {
-				matches = true;
-				break;
-			}
-		}
-
-		return matches;
-	}
-
-	/**
-	 * <p>
-	 * Tests whether the platform for the binding matches one of the active
-	 * platforms.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of active platforms.
-	 * </p>
-	 * 
-	 * @param binding
-	 *            The binding with which to test; must not be <code>null</code>.
-	 * @return <code>true</code> if the binding's platform matches;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean platformMatches(final Binding binding) {
-		boolean matches = false;
-
-		final String platform = binding.getPlatform();
-		if (platform == null) {
-			return true; // shortcut a common case
-		}
-
-		for (int i = 0; i < platforms.length; i++) {
-			if (Util.equals(platforms[i], platform)) {
-				matches = true;
-				break;
-			}
-		}
-
-		return matches;
-	}
-
-	/**
-	 * <p>
-	 * This recomputes the bindings based on changes to the state of the world.
-	 * This computation can be triggered by changes to contexts, the active
-	 * scheme, the locale, or the platform. This method tries to use the cache
-	 * of pre-computed bindings, if possible. When this method completes,
-	 * <code>activeBindings</code> will be set to the current set of bindings
-	 * and <code>cachedBindings</code> will contain an instance of
-	 * <code>CachedBindingSet</code> representing these bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n+pn)</code>, where <code>n</code>
-	 * is the number of bindings, and <code>p</code> is the average number of
-	 * triggers in a trigger sequence.
-	 * </p>
-	 */
-	private final void recomputeBindings() {
-		if (bindings == null) {
-			// Not yet initialized. This is happening too early. Do nothing.
-			setActiveBindings(Collections.EMPTY_MAP, Collections.EMPTY_MAP,
-					Collections.EMPTY_MAP, Collections.EMPTY_MAP);
-			return;
-		}
-
-		// Figure out the current state.
-		final Set activeContextIds = new HashSet(contextManager
-				.getActiveContextIds());
-		final Map activeContextTree = createFilteredContextTreeFor(activeContextIds);
-
-		// Build a cached binding set for that state.
-		final CachedBindingSet bindingCache = new CachedBindingSet(
-				activeContextTree, locales, platforms, activeSchemeIds);
-
-		/*
-		 * Check if the cached binding set already exists. If so, simply set the
-		 * active bindings and return.
-		 */
-		CachedBindingSet existingCache = (CachedBindingSet) cachedBindings
-				.get(bindingCache);
-		if (existingCache == null) {
-			existingCache = bindingCache;
-			cachedBindings.put(existingCache, existingCache);
-		}
-		Map commandIdsByTrigger = existingCache.getBindingsByTrigger();
-		if (commandIdsByTrigger != null) {
-			if (DEBUG) {
-				Tracing.printTrace("BINDINGS", "Cache hit"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			setActiveBindings(commandIdsByTrigger, existingCache
-					.getTriggersByCommandId(), existingCache.getPrefixTable(),
-					existingCache.getConflictsByTrigger());
-			return;
-		}
-
-		// There is no cached entry for this.
-		if (DEBUG) {
-			Tracing.printTrace("BINDINGS", "Cache miss"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		// Compute the active bindings.
-		commandIdsByTrigger = new HashMap();
-		final Map triggersByParameterizedCommand = new HashMap();
-		final Map conflictsByTrigger = new HashMap();
-		computeBindings(activeContextTree, commandIdsByTrigger,
-				triggersByParameterizedCommand, conflictsByTrigger);
-		existingCache.setBindingsByTrigger(commandIdsByTrigger);
-		existingCache.setTriggersByCommandId(triggersByParameterizedCommand);
-		existingCache.setConflictsByTrigger(conflictsByTrigger);
-		setActiveBindings(commandIdsByTrigger, triggersByParameterizedCommand,
-				buildPrefixTable(commandIdsByTrigger),
-				conflictsByTrigger);
-		existingCache.setPrefixTable(prefixTable);
-	}
-
-	/**
-	 * <p>
-	 * Remove the specific binding by identity. Does nothing if the binding is
-	 * not in the manager.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @param binding
-	 *            The binding to be removed; must not be <code>null</code>.
-	 * @since 3.2
-	 */
-	public final void removeBinding(final Binding binding) {
-		if (bindings == null || bindings.length < 1) {
-			return;
-		}
-
-		final Binding[] newBindings = new Binding[bindings.length];
-		boolean bindingsChanged = false;
-		int index = 0;
-		for (int i = 0; i < bindingCount; i++) {
-			final Binding b = bindings[i];
-			if (b == binding) {
-				bindingsChanged = true;
-			} else {
-				newBindings[index++] = b;
-			}
-		}
-
-		if (bindingsChanged) {
-			this.bindings = newBindings;
-			bindingCount = index;
-			clearCache();
-		}
-	}
-
-	/**
-	 * <p>
-	 * Removes a listener from this binding manager.
-	 * </p>
-	 * <p>
-	 * This method completes in amortized <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            The listener to be removed; must not be <code>null</code>.
-	 */
-	public final void removeBindingManagerListener(
-			final IBindingManagerListener listener) {
-		removeListenerObject(listener);
-	}
-
-	/**
-	 * <p>
-	 * Removes any binding that matches the given values -- regardless of
-	 * command identifier.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @param sequence
-	 *            The sequence to match; may be <code>null</code>.
-	 * @param schemeId
-	 *            The scheme id to match; may be <code>null</code>.
-	 * @param contextId
-	 *            The context id to match; may be <code>null</code>.
-	 * @param locale
-	 *            The locale to match; may be <code>null</code>.
-	 * @param platform
-	 *            The platform to match; may be <code>null</code>.
-	 * @param windowManager
-	 *            The window manager to match; may be <code>null</code>. TODO
-	 *            Currently ignored.
-	 * @param type
-	 *            The type to look for.
-	 * 
-	 */
-	public final void removeBindings(final TriggerSequence sequence,
-			final String schemeId, final String contextId, final String locale,
-			final String platform, final String windowManager, final int type) {
-		if ((bindings == null) || (bindingCount < 1)) {
-			return;
-		}
-
-		final Binding[] newBindings = new Binding[bindings.length];
-		boolean bindingsChanged = false;
-		int index = 0;
-		for (int i = 0; i < bindingCount; i++) {
-			final Binding binding = bindings[i];
-			boolean equals = true;
-			equals &= Util.equals(sequence, binding.getTriggerSequence());
-			equals &= Util.equals(schemeId, binding.getSchemeId());
-			equals &= Util.equals(contextId, binding.getContextId());
-			equals &= Util.equals(locale, binding.getLocale());
-			equals &= Util.equals(platform, binding.getPlatform());
-			equals &= (type == binding.getType());
-			if (equals) {
-				bindingsChanged = true;
-			} else {
-				newBindings[index++] = binding;
-			}
-		}
-
-		if (bindingsChanged) {
-			this.bindings = newBindings;
-			bindingCount = index;
-			clearCache();
-		}
-	}
-
-	/**
-	 * <p>
-	 * Attempts to remove deletion markers from the collection of bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @param bindings
-	 *            The bindings from which the deleted items should be removed.
-	 *            This array should not be <code>null</code>, but may be
-	 *            empty.
-	 * @return The array of bindings with the deletions removed; never
-	 *         <code>null</code>, but may be empty. Contains only instances
-	 *         of <code>Binding</code>.
-	 */
-	private final Binding[] removeDeletions(final Binding[] bindings) {
-		final Map deletions = new HashMap();
-		final Binding[] bindingsCopy = new Binding[bindingCount];
-		System.arraycopy(bindings, 0, bindingsCopy, 0, bindingCount);
-		int deletedCount = 0;
-
-		// Extract the deletions.
-		for (int i = 0; i < bindingCount; i++) {
-			final Binding binding = bindingsCopy[i];
-			if ((binding.getParameterizedCommand() == null)
-					&& (localeMatches(binding)) && (platformMatches(binding))) {
-				final TriggerSequence sequence = binding.getTriggerSequence();
-				final Object currentValue = deletions.get(sequence);
-				if (currentValue instanceof Binding) {
-					final Collection collection = new ArrayList(2);
-					collection.add(currentValue);
-					collection.add(binding);
-					deletions.put(sequence, collection);
-				} else if (currentValue instanceof Collection) {
-					final Collection collection = (Collection) currentValue;
-					collection.add(binding);
-				} else {
-					deletions.put(sequence, binding);
-				}
-				bindingsCopy[i] = null;
-				deletedCount++;
-			}
-		}
-
-		if (DEBUG) {
-			Tracing.printTrace("BINDINGS", "There are " + deletions.size() //$NON-NLS-1$ //$NON-NLS-2$
-					+ " deletion markers"); //$NON-NLS-1$
-		}
-
-		// Remove the deleted items.
-		for (int i = 0; i < bindingCount; i++) {
-			final Binding binding = bindingsCopy[i];
-			if (binding != null) {
-				final Object deletion = deletions.get(binding
-						.getTriggerSequence());
-				if (deletion instanceof Binding) {
-					if (((Binding) deletion).deletes(binding)) {
-						bindingsCopy[i] = null;
-						deletedCount++;
-					}
-
-				} else if (deletion instanceof Collection) {
-					final Collection collection = (Collection) deletion;
-					final Iterator iterator = collection.iterator();
-					while (iterator.hasNext()) {
-						final Object deletionBinding = iterator.next();
-						if (deletionBinding instanceof Binding) {
-							if (((Binding) deletionBinding).deletes(binding)) {
-								bindingsCopy[i] = null;
-								deletedCount++;
-								break;
-							}
-						}
-					}
-
-				}
-			}
-		}
-
-		// Compact the array.
-		final Binding[] returnValue = new Binding[bindingCount - deletedCount];
-		int index = 0;
-		for (int i = 0; i < bindingCount; i++) {
-			final Binding binding = bindingsCopy[i];
-			if (binding != null) {
-				returnValue[index++] = binding;
-			}
-		}
-
-		return returnValue;
-	}
-
-	/**
-	 * <p>
-	 * Attempts to resolve the conflicts for the given bindings.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @param bindings
-	 *            The bindings which all match the same trigger sequence; must
-	 *            not be <code>null</code>, and should contain at least two
-	 *            items. This collection should only contain instances of
-	 *            <code>Binding</code> (i.e., no <code>null</code> values).
-	 * @param activeContextTree
-	 *            The tree of contexts to be used for all of the comparison. All
-	 *            of the keys should be active context identifiers (i.e., never
-	 *            <code>null</code>). The values will be their parents (i.e.,
-	 *            possibly <code>null</code>). Both keys and values are
-	 *            context identifiers (<code>String</code>). This map should
-	 *            never be empty, and must never be <code>null</code>.
-	 * @return The binding which best matches the current state. If there is a
-	 *         tie, then return <code>null</code>.
-	 */
-	private final Binding resolveConflicts(final Collection bindings,
-			final Map activeContextTree) {
-		/*
-		 * This flag is used to indicate when the bestMatch binding conflicts
-		 * with another binding. We keep the best match binding so that we know
-		 * if we find a better binding. However, if we don't find a better
-		 * binding, then we known to return null.
-		 */
-		boolean conflict = false;
-
-		final Iterator bindingItr = bindings.iterator();
-		Binding bestMatch = (Binding) bindingItr.next();
-
-		/*
-		 * Iterate over each binding and compare it with the best match. If a
-		 * better match is found, then replace the best match and set the
-		 * conflict flag to false. If a conflict is found, then leave the best
-		 * match and set the conflict flag. Otherwise, just continue.
-		 */
-		while (bindingItr.hasNext()) {
-			final Binding current = (Binding) bindingItr.next();
-
-			/*
-			 * SCHEME: Test whether the current is in a child scheme. Bindings
-			 * defined in a child scheme will always take priority over bindings
-			 * defined in a parent scheme.
-			 */
-			final String currentSchemeId = current.getSchemeId();
-			final String bestSchemeId = bestMatch.getSchemeId();
-			final int compareTo = compareSchemes(bestSchemeId, currentSchemeId);
-			if (compareTo > 0) {
-				bestMatch = current;
-				conflict = false;
-			}
-			if (compareTo != 0) {
-				continue;
-			}
-
-			/*
-			 * CONTEXTS: Check for context superiority. Bindings defined in a
-			 * child context will take priority over bindings defined in a
-			 * parent context -- assuming that the schemes lead to a conflict.
-			 */
-			final String currentContext = current.getContextId();
-			final String bestContext = bestMatch.getContextId();
-			if (!currentContext.equals(bestContext)) {
-				boolean goToNextBinding = false;
-
-				// Ascend the current's context tree.
-				String contextPointer = currentContext;
-				while (contextPointer != null) {
-					if (contextPointer.equals(bestContext)) {
-						// the current wins
-						bestMatch = current;
-						conflict = false;
-						goToNextBinding = true;
-						break;
-					}
-					contextPointer = (String) activeContextTree
-							.get(contextPointer);
-				}
-
-				// Ascend the best match's context tree.
-				contextPointer = bestContext;
-				while (contextPointer != null) {
-					if (contextPointer.equals(currentContext)) {
-						// the best wins
-						goToNextBinding = true;
-						break;
-					}
-					contextPointer = (String) activeContextTree
-							.get(contextPointer);
-				}
-
-				if (goToNextBinding) {
-					continue;
-				}
-			}
-
-			/*
-			 * TYPE: Test for type superiority.
-			 */
-			if (current.getType() > bestMatch.getType()) {
-				bestMatch = current;
-				conflict = false;
-				continue;
-			} else if (bestMatch.getType() > current.getType()) {
-				continue;
-			}
-
-			// We could not resolve the conflict between these two.
-			conflict = true;
-		}
-
-		// If the best match represents a conflict, then return null.
-		if (conflict) {
-			return null;
-		}
-
-		// Otherwise, we have a winner....
-		return bestMatch;
-	}
-
-	/**
-	 * <p>
-	 * Notifies this manager that a scheme has changed. This method is intended
-	 * for internal use only.
-	 * </p>
-	 * <p>
-	 * This method calls out to listeners, and so the time it takes to complete
-	 * is dependent on third-party code.
-	 * </p>
-	 * 
-	 * @param schemeEvent
-	 *            An event describing the change in the scheme.
-	 */
-	public final void schemeChanged(final SchemeEvent schemeEvent) {
-		if (schemeEvent.isDefinedChanged()) {
-			final Scheme scheme = schemeEvent.getScheme();
-			final boolean schemeIdAdded = scheme.isDefined();
-			boolean activeSchemeChanged = false;
-			if (schemeIdAdded) {
-				definedHandleObjects.add(scheme);
-			} else {
-				definedHandleObjects.remove(scheme);
-
-				if (activeScheme == scheme) {
-					activeScheme = null;
-					activeSchemeIds = null;
-					activeSchemeChanged = true;
-
-					// Clear the binding solution.
-					clearSolution();
-				}
-			}
-
-			if (isListenerAttached()) {
-				fireBindingManagerChanged(new BindingManagerEvent(this, false,
-						null, activeSchemeChanged, scheme, schemeIdAdded,
-						false, false));
-			}
-		}
-	}
-
-	/**
-	 * Sets the active bindings and the prefix table. This ensures that the two
-	 * values change at the same time, and that any listeners are notified
-	 * appropriately.
-	 * 
-	 * @param activeBindings
-	 *            This is a map of triggers ( <code>TriggerSequence</code>)
-	 *            to bindings (<code>Binding</code>). This value will only
-	 *            be <code>null</code> if the active bindings have not yet
-	 *            been computed. Otherwise, this value may be empty.
-	 * @param activeBindingsByCommandId
-	 *            This is a map of fully-parameterized commands (<code>ParameterizedCommand</code>)
-	 *            to triggers ( <code>TriggerSequence</code>). This value
-	 *            will only be <code>null</code> if the active bindings have
-	 *            not yet been computed. Otherwise, this value may be empty.
-	 * @param prefixTable
-	 *            A map of prefixes (<code>TriggerSequence</code>) to a map
-	 *            of available completions (possibly <code>null</code>, which
-	 *            means there is an exact match). The available completions is a
-	 *            map of trigger (<code>TriggerSequence</code>) to binding (<code>Binding</code>).
-	 *            This value may be <code>null</code> if there is no existing
-	 *            solution.
-	 */
-	private final void setActiveBindings(final Map activeBindings,
-			final Map activeBindingsByCommandId, final Map prefixTable,
-			final Map conflicts) {
-		this.activeBindings = activeBindings;
-		final Map previousBindingsByParameterizedCommand = this.activeBindingsByParameterizedCommand;
-		this.activeBindingsByParameterizedCommand = activeBindingsByCommandId;
-		this.prefixTable = prefixTable;
-		InternalPolicy.currentConflicts = conflicts;
-
-		fireBindingManagerChanged(new BindingManagerEvent(this, true,
-				previousBindingsByParameterizedCommand, false, null, false,
-				false, false));
-	}
-
-	/**
-	 * <p>
-	 * Selects one of the schemes as the active scheme. This scheme must be
-	 * defined.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the height of the context tree.
-	 * </p>
-	 * 
-	 * @param scheme
-	 *            The scheme to become active; must not be <code>null</code>.
-	 * @throws NotDefinedException
-	 *             If the given scheme is currently undefined.
-	 */
-	public final void setActiveScheme(final Scheme scheme)
-			throws NotDefinedException {
-		if (scheme == null) {
-			throw new NullPointerException("Cannot activate a null scheme"); //$NON-NLS-1$
-		}
-
-		if ((scheme == null) || (!scheme.isDefined())) {
-			throw new NotDefinedException(
-					"Cannot activate an undefined scheme. " //$NON-NLS-1$
-							+ scheme.getId());
-		}
-
-		if (Util.equals(activeScheme, scheme)) {
-			return;
-		}
-
-		activeScheme = scheme;
-		activeSchemeIds = getSchemeIds(activeScheme.getId());
-		clearSolution();
-		fireBindingManagerChanged(new BindingManagerEvent(this, false, null,
-				true, null, false, false, false));
-	}
-
-	/**
-	 * <p>
-	 * Changes the set of bindings for this binding manager. Changing the set of
-	 * bindings all at once ensures that: (1) duplicates are removed; and (2)
-	 * avoids unnecessary intermediate computations. This method clears the
-	 * existing bindings, but does not trigger a recomputation (other method
-	 * calls are required to do that).
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(n)</code>, where <code>n</code> is
-	 * the number of bindings.
-	 * </p>
-	 * 
-	 * @param bindings
-	 *            The new array of bindings; may be <code>null</code>. This
-	 *            set is copied into a local data structure.
-	 */
-	public final void setBindings(final Binding[] bindings) {
-		if (Arrays.equals(this.bindings, bindings)) {
-			return; // nothing has changed
-		}
-
-		if ((bindings == null) || (bindings.length == 0)) {
-			this.bindings = null;
-			bindingCount = 0;
-		} else {
-			final int bindingsLength = bindings.length;
-			this.bindings = new Binding[bindingsLength];
-			System.arraycopy(bindings, 0, this.bindings, 0, bindingsLength);
-			bindingCount = bindingsLength;
-		}
-		clearCache();
-	}
-
-	/**
-	 * <p>
-	 * Changes the locale for this binding manager. The locale can be used to
-	 * provide locale-specific bindings. If the locale is different than the
-	 * current locale, this will force a recomputation of the bindings. The
-	 * locale is in the same format as
-	 * <code>Locale.getDefault().toString()</code>.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @param locale
-	 *            The new locale; must not be <code>null</code>.
-	 * @see Locale#getDefault()
-	 */
-	public final void setLocale(final String locale) {
-		if (locale == null) {
-			throw new NullPointerException("The locale cannot be null"); //$NON-NLS-1$
-		}
-
-		if (!Util.equals(this.locale, locale)) {
-			this.locale = locale;
-			this.locales = expand(locale, LOCALE_SEPARATOR);
-			clearSolution();
-			fireBindingManagerChanged(new BindingManagerEvent(this, false,
-					null, false, null, false, true, false));
-		}
-	}
-
-	/**
-	 * <p>
-	 * Changes the platform for this binding manager. The platform can be used
-	 * to provide platform-specific bindings. If the platform is different than
-	 * the current platform, then this will force a recomputation of the
-	 * bindings. The locale is in the same format as
-	 * <code>SWT.getPlatform()</code>.
-	 * </p>
-	 * <p>
-	 * This method completes in <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @param platform
-	 *            The new platform; must not be <code>null</code>.
-	 * @see org.eclipse.swt.SWT#getPlatform()
-	 */
-	public final void setPlatform(final String platform) {
-		if (platform == null) {
-			throw new NullPointerException("The platform cannot be null"); //$NON-NLS-1$
-		}
-
-		if (!Util.equals(this.platform, platform)) {
-			this.platform = platform;
-			this.platforms = expand(platform, Util.ZERO_LENGTH_STRING);
-			clearSolution();
-			fireBindingManagerChanged(new BindingManagerEvent(this, false,
-					null, false, null, false, false, true));
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java
deleted file mode 100644
index 7e4815b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/BindingManagerEvent.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.AbstractBitSetEvent;
-import org.eclipse.jface.util.Util;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>BindingManager</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.1
- * @see IBindingManagerListener#bindingManagerChanged(BindingManagerEvent)
- */
-public final class BindingManagerEvent extends AbstractBitSetEvent {
-
-	/**
-	 * The bit used to represent whether the map of active bindings has changed.
-	 */
-	private static final int CHANGED_ACTIVE_BINDINGS = 1;
-
-	/**
-	 * The bit used to represent whether the active scheme has changed.
-	 */
-	private static final int CHANGED_ACTIVE_SCHEME = 1 << 1;
-
-	/**
-	 * The bit used to represent whether the active locale has changed.
-	 */
-	private static final int CHANGED_LOCALE = 1 << 2;
-
-	/**
-	 * The bit used to represent whether the active platform has changed.
-	 */
-	private static final int CHANGED_PLATFORM = 1 << 3;
-
-	/**
-	 * The bit used to represent whether the scheme's defined state has changed.
-	 */
-	private static final int CHANGED_SCHEME_DEFINED = 1 << 4;
-
-	/**
-	 * The binding manager that has changed; this value is never
-	 * <code>null</code>.
-	 */
-	private final BindingManager manager;
-
-	/**
-	 * The map of triggers (<code>Collection</code> of
-	 * <code>TriggerSequence</code>) by parameterized command (<code>ParameterizedCommand</code>)
-	 * before the change occurred. This map may be empty and it may be
-	 * <code>null</code>.
-	 */
-	private final Map previousTriggersByParameterizedCommand;
-
-	/**
-	 * The scheme that became defined or undefined. This value may be
-	 * <code>null</code> if no scheme changed its defined state.
-	 */
-	private final Scheme scheme;
-
-	/**
-	 * Creates a new instance of this class.
-	 * 
-	 * @param manager
-	 *            the instance of the binding manager that changed; must not be
-	 *            <code>null</code>.
-	 * @param activeBindingsChanged
-	 *            Whether the active bindings have changed.
-	 * @param previousTriggersByParameterizedCommand
-	 *            The map of triggers (<code>TriggerSequence</code>) by
-	 *            fully-parameterized command (<code>ParameterizedCommand</code>)
-	 *            before the change occured. This map may be <code>null</code>
-	 *            or empty.
-	 * @param activeSchemeChanged
-	 *            true, iff the active scheme changed.
-	 * @param scheme
-	 *            The scheme that became defined or undefined; <code>null</code>
-	 *            if no scheme changed state.
-	 * @param schemeDefined
-	 *            <code>true</code> if the given scheme became defined;
-	 *            <code>false</code> otherwise.
-	 * @param localeChanged
-	 *            <code>true</code> iff the active locale changed
-	 * @param platformChanged
-	 *            <code>true</code> iff the active platform changed
-	 */
-	public BindingManagerEvent(final BindingManager manager,
-			final boolean activeBindingsChanged,
-			final Map previousTriggersByParameterizedCommand,
-			final boolean activeSchemeChanged, final Scheme scheme,
-			final boolean schemeDefined, final boolean localeChanged,
-			final boolean platformChanged) {
-		if (manager == null) {
-			throw new NullPointerException(
-					"A binding manager event needs a binding manager"); //$NON-NLS-1$
-		}
-		this.manager = manager;
-
-		if (schemeDefined && (scheme == null)) {
-			throw new NullPointerException(
-					"If a scheme changed defined state, then there should be a scheme identifier"); //$NON-NLS-1$
-		}
-		this.scheme = scheme;
-
-		this.previousTriggersByParameterizedCommand = previousTriggersByParameterizedCommand;
-
-		if (activeBindingsChanged) {
-			changedValues |= CHANGED_ACTIVE_BINDINGS;
-		}
-		if (activeSchemeChanged) {
-			changedValues |= CHANGED_ACTIVE_SCHEME;
-		}
-		if (localeChanged) {
-			changedValues |= CHANGED_LOCALE;
-		}
-		if (platformChanged) {
-			changedValues |= CHANGED_PLATFORM;
-		}
-		if (schemeDefined) {
-			changedValues |= CHANGED_SCHEME_DEFINED;
-		}
-	}
-
-	/**
-	 * Returns the instance of the manager that changed.
-	 * 
-	 * @return the instance of the manager that changed. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	public final BindingManager getManager() {
-		return manager;
-	}
-
-	/**
-	 * Returns the scheme that changed.
-	 * 
-	 * @return The changed scheme
-	 */
-	public final Scheme getScheme() {
-		return scheme;
-	}
-
-	/**
-	 * Returns whether the active bindings have changed.
-	 * 
-	 * @return <code>true</code> if the active bindings have changed;
-	 *         <code>false</code> otherwise.
-	 */
-	public final boolean isActiveBindingsChanged() {
-		return ((changedValues & CHANGED_ACTIVE_BINDINGS) != 0);
-	}
-
-	/**
-	 * Computes whether the active bindings have changed for a given command
-	 * identifier.
-	 * 
-	 * @param parameterizedCommand
-	 *            The fully-parameterized command whose bindings might have
-	 *            changed; must not be <code>null</code>.
-	 * @return <code>true</code> if the active bindings have changed for the
-	 *         given command identifier; <code>false</code> otherwise.
-	 */
-	public final boolean isActiveBindingsChangedFor(
-			final ParameterizedCommand parameterizedCommand) {
-		final TriggerSequence[] currentBindings = manager
-				.getActiveBindingsFor(parameterizedCommand);
-		final TriggerSequence[] previousBindings;
-		if (previousTriggersByParameterizedCommand != null) {
-			final Collection previousBindingCollection = (Collection) previousTriggersByParameterizedCommand
-					.get(parameterizedCommand);
-			if (previousBindingCollection == null) {
-				previousBindings = null;
-			} else {
-				previousBindings = (TriggerSequence[]) previousBindingCollection
-						.toArray(new TriggerSequence[previousBindingCollection
-								.size()]);
-			}
-		} else {
-			previousBindings = null;
-		}
-
-		return !Util.equals(currentBindings, previousBindings);
-	}
-
-	/**
-	 * Returns whether or not the active scheme changed.
-	 * 
-	 * @return true, iff the active scheme property changed.
-	 */
-	public final boolean isActiveSchemeChanged() {
-		return ((changedValues & CHANGED_ACTIVE_SCHEME) != 0);
-	}
-
-	/**
-	 * Returns whether the locale has changed
-	 * 
-	 * @return <code>true</code> if the locale changed; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean isLocaleChanged() {
-		return ((changedValues & CHANGED_LOCALE) != 0);
-	}
-
-	/**
-	 * Returns whether the platform has changed
-	 * 
-	 * @return <code>true</code> if the platform changed; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean isPlatformChanged() {
-		return ((changedValues & CHANGED_PLATFORM) != 0);
-	}
-
-	/**
-	 * Returns whether the list of defined scheme identifiers has changed.
-	 * 
-	 * @return <code>true</code> if the list of scheme identifiers has
-	 *         changed; <code>false</code> otherwise.
-	 */
-	public final boolean isSchemeChanged() {
-		return (scheme != null);
-	}
-
-	/**
-	 * Returns whether or not the scheme became defined
-	 * 
-	 * @return <code>true</code> if the scheme became defined.
-	 */
-	public final boolean isSchemeDefined() {
-		return (((changedValues & CHANGED_SCHEME_DEFINED) != 0) && (scheme != null));
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
deleted file mode 100644
index 1da7b67..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/CachedBindingSet.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings;
-
-import java.util.Map;
-
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * A resolution of bindings for a given state. To see if we already have a
- * cached binding set, just create one of these binding sets and then look it up
- * in a map. If it is not already there, then add it and set the cached binding
- * resolution.
- * </p>
- * 
- * @since 3.1
- */
-final class CachedBindingSet {
-
-	/**
-	 * A factor for computing the hash code for all cached binding sets.
-	 */
-	private final static int HASH_FACTOR = 89;
-
-	/**
-	 * The seed for the hash code for all cached binding sets.
-	 */
-	private final static int HASH_INITIAL = CachedBindingSet.class.getName()
-			.hashCode();
-
-	/**
-	 * <p>
-	 * A representation of the tree of active contexts at the time this cached
-	 * binding set was computed. It is a map of context id (<code>String</code>)
-	 * to context id (<code>String</code>). Each key represents one of the
-	 * active contexts or one of its ancestors, while each value represents its
-	 * parent. This is a way of perserving information about what the hierarchy
-	 * looked like.
-	 * </p>
-	 * <p>
-	 * This value will be <code>null</code> if the contexts were disregarded
-	 * in the computation. It may also be empty. All of the keys are guaranteed
-	 * to be non- <code>null</code>, but the values can be <code>null</code>
-	 * (i.e., no parent).
-	 * </p>
-	 */
-	private final Map activeContextTree;
-
-	/**
-	 * The map representing the resolved state of the bindings. This is a map of
-	 * a trigger (<code>TriggerSequence</code>) to binding (<code>Binding</code>).
-	 * This value may be <code>null</code> if it has not yet been initialized.
-	 */
-	private Map bindingsByTrigger = null;
-
-	/**
-	 * A map of triggers to collections of bindings. If this binding set
-	 * contains conflicts, they are logged here.
-	 * 
-	 * @since 3.3
-	 */
-	private Map conflictsByTrigger = null;
-
-	/**
-	 * The hash code for this object. This value is computed lazily, and marked
-	 * as invalid when one of the values on which it is based changes.
-	 */
-	private transient int hashCode;
-
-	/**
-	 * Whether <code>hashCode</code> still contains a valid value.
-	 */
-	private transient boolean hashCodeComputed = false;
-
-	/**
-	 * <p>
-	 * The list of locales that were active at the time this binding set was
-	 * computed. This list starts with the most specific representation of the
-	 * locale, and moves to more general representations. For example, this
-	 * array might look like ["en_US", "en", "", null].
-	 * </p>
-	 * <p>
-	 * This value will never be <code>null</code>, and it will never be
-	 * empty. It must contain at least one element, but its elements can be
-	 * <code>null</code>.
-	 * </p>
-	 */
-	private final String[] locales;
-
-	/**
-	 * <p>
-	 * The list of platforms that were active at the time this binding set was
-	 * computed. This list starts with the most specific representation of the
-	 * platform, and moves to more general representations. For example, this
-	 * array might look like ["gtk", "", null].
-	 * </p>
-	 * <p>
-	 * This value will never be <code>null</code>, and it will never be
-	 * empty. It must contain at least one element, but its elements can be
-	 * <code>null</code>.
-	 * </p>
-	 */
-	private final String[] platforms;
-
-	/**
-	 * A map of prefixes (<code>TriggerSequence</code>) to a map of
-	 * available completions (possibly <code>null</code>, which means there
-	 * is an exact match). The available completions is a map of trigger (<code>TriggerSequence</code>)
-	 * to command identifier (<code>String</code>). This value is
-	 * <code>null</code> if it has not yet been initialized.
-	 */
-	private Map prefixTable = null;
-
-	/**
-	 * <p>
-	 * The list of schemes that were active at the time this binding set was
-	 * computed. This list starts with the active scheme, and then continues
-	 * with all of its ancestors -- in order. For example, this might look like
-	 * ["emacs", "default"].
-	 * </p>
-	 * <p>
-	 * This value will never be <code>null</code>, and it will never be
-	 * empty. It must contain at least one element. Its elements cannot be
-	 * <code>null</code>.
-	 * </p>
-	 */
-	private final String[] schemeIds;
-
-	/**
-	 * The map representing the resolved state of the bindings. This is a map of
-	 * a command id (<code>String</code>) to triggers (<code>Collection</code>
-	 * of <code>TriggerSequence</code>). This value may be <code>null</code>
-	 * if it has not yet been initialized.
-	 */
-	private Map triggersByCommandId = null;
-
-	/**
-	 * Constructs a new instance of <code>CachedBindingSet</code>.
-	 * 
-	 * @param activeContextTree
-	 *            The set of context identifiers that were active when this
-	 *            binding set was calculated; may be empty. If it is
-	 *            <code>null</code>, then the contexts were disregarded in
-	 *            the computation. This is a map of context id (
-	 *            <code>String</code>) to parent context id (
-	 *            <code>String</code>). This is a way of caching the look of
-	 *            the context tree at the time the binding set was computed.
-	 * @param locales
-	 *            The locales that were active when this binding set was
-	 *            calculated. The first element is the currently active locale,
-	 *            and it is followed by increasingly more general locales. This
-	 *            must not be <code>null</code> and must contain at least one
-	 *            element. The elements can be <code>null</code>, though.
-	 * @param platforms
-	 *            The platform that were active when this binding set was
-	 *            calculated. The first element is the currently active
-	 *            platform, and it is followed by increasingly more general
-	 *            platforms. This must not be <code>null</code> and must
-	 *            contain at least one element. The elements can be
-	 *            <code>null</code>, though.
-	 * @param schemeIds
-	 *            The scheme that was active when this binding set was
-	 *            calculated, followed by its ancestors. This may be
-	 *            <code>null</code or empty. The
-	 *            elements cannot be <code>null</code>.
-	 */
-	CachedBindingSet(final Map activeContextTree, final String[] locales,
-			final String[] platforms, final String[] schemeIds) {
-		if (locales == null) {
-			throw new NullPointerException("The locales cannot be null."); //$NON-NLS-1$
-		}
-
-		if (locales.length == 0) {
-			throw new NullPointerException("The locales cannot be empty."); //$NON-NLS-1$
-		}
-
-		if (platforms == null) {
-			throw new NullPointerException("The platforms cannot be null."); //$NON-NLS-1$
-		}
-
-		if (platforms.length == 0) {
-			throw new NullPointerException("The platforms cannot be empty."); //$NON-NLS-1$
-		}
-
-		this.activeContextTree = activeContextTree;
-		this.locales = locales;
-		this.platforms = platforms;
-		this.schemeIds = schemeIds;
-	}
-
-	/**
-	 * Compares this binding set with another object. The objects will be equal
-	 * if they are both instance of <code>CachedBindingSet</code> and have
-	 * equivalent values for all of their properties.
-	 * 
-	 * @param object
-	 *            The object with which to compare; may be <code>null</code>.
-	 * @return <code>true</code> if they are both instances of
-	 *         <code>CachedBindingSet</code> and have the same values for all
-	 *         of their properties; <code>false</code> otherwise.
-	 */
-	public final boolean equals(final Object object) {
-		if (!(object instanceof CachedBindingSet)) {
-			return false;
-		}
-
-		final CachedBindingSet other = (CachedBindingSet) object;
-
-		if (!Util.equals(activeContextTree, other.activeContextTree)) {
-			return false;
-		}
-		if (!Util.equals(locales, other.locales)) {
-			return false;
-		}
-		if (!Util.equals(platforms, other.platforms)) {
-			return false;
-		}
-		return Util.equals(schemeIds, other.schemeIds);
-	}
-
-	/**
-	 * Returns the map of command identifiers indexed by trigger sequence.
-	 * 
-	 * @return A map of triggers (<code>TriggerSequence</code>) to bindings (<code>Binding</code>).
-	 *         This value may be <code>null</code> if this was not yet
-	 *         initialized.
-	 */
-	final Map getBindingsByTrigger() {
-		return bindingsByTrigger;
-	}
-
-	/**
-	 * Returns a map of conflicts for this set of contexts.
-	 * 
-	 * @return A map of trigger to a collection of Bindings. May be
-	 *         <code>null</code>.
-	 * @since 3.3
-	 */
-	final Map getConflictsByTrigger() {
-		return conflictsByTrigger;
-	}
-
-	/**
-	 * Returns the map of prefixes to a map of trigger sequence to command
-	 * identifiers.
-	 * 
-	 * @return A map of prefixes (<code>TriggerSequence</code>) to a map of
-	 *         available completions (possibly <code>null</code>, which means
-	 *         there is an exact match). The available completions is a map of
-	 *         trigger (<code>TriggerSequence</code>) to command identifier (<code>String</code>).
-	 *         This value may be <code>null</code> if it has not yet been
-	 *         initialized.
-	 */
-	final Map getPrefixTable() {
-		return prefixTable;
-	}
-
-	/**
-	 * Returns the map of triggers indexed by command identifiers.
-	 * 
-	 * @return A map of command identifiers (<code>String</code>) to
-	 *         triggers (<code>Collection</code> of
-	 *         <code>TriggerSequence</code>). This value may be
-	 *         <code>null</code> if this was not yet initialized.
-	 */
-	final Map getTriggersByCommandId() {
-		return triggersByCommandId;
-	}
-
-	/**
-	 * Computes the hash code for this cached binding set. The hash code is
-	 * based only on the immutable values. This allows the set to be created and
-	 * checked for in a hashed collection <em>before</em> doing any
-	 * computation.
-	 * 
-	 * @return The hash code for this cached binding set.
-	 */
-	public final int hashCode() {
-		if (!hashCodeComputed) {
-			hashCode = HASH_INITIAL;
-			hashCode = hashCode * HASH_FACTOR
-					+ Util.hashCode(activeContextTree);
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(locales);
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(platforms);
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(schemeIds);
-			hashCodeComputed = true;
-		}
-
-		return hashCode;
-	}
-
-	/**
-	 * Sets the map of command identifiers indexed by trigger.
-	 * 
-	 * @param commandIdsByTrigger
-	 *            The map to set; must not be <code>null</code>. This is a
-	 *            map of triggers (<code>TriggerSequence</code>) to binding (<code>Binding</code>).
-	 */
-	final void setBindingsByTrigger(final Map commandIdsByTrigger) {
-		if (commandIdsByTrigger == null) {
-			throw new NullPointerException(
-					"Cannot set a null binding resolution"); //$NON-NLS-1$
-		}
-
-		this.bindingsByTrigger = commandIdsByTrigger;
-	}
-
-	/**
-	 * Sets the map of conflicting bindings by trigger.
-	 * 
-	 * @param conflicts
-	 *            The map to set; must not be <code>null</code>.
-	 * @since 3.3
-	 */
-	final void setConflictsByTrigger(final Map conflicts) {
-		if (conflicts == null) {
-			throw new NullPointerException(
-					"Cannot set a null binding conflicts"); //$NON-NLS-1$
-		}
-		conflictsByTrigger = conflicts;
-	}
-
-	/**
-	 * Sets the map of prefixes to a map of trigger sequence to command
-	 * identifiers.
-	 * 
-	 * @param prefixTable
-	 *            A map of prefixes (<code>TriggerSequence</code>) to a map
-	 *            of available completions (possibly <code>null</code>, which
-	 *            means there is an exact match). The available completions is a
-	 *            map of trigger (<code>TriggerSequence</code>) to command
-	 *            identifier (<code>String</code>). Must not be
-	 *            <code>null</code>.
-	 */
-	final void setPrefixTable(final Map prefixTable) {
-		if (prefixTable == null) {
-			throw new NullPointerException("Cannot set a null prefix table"); //$NON-NLS-1$
-		}
-
-		this.prefixTable = prefixTable;
-	}
-
-	/**
-	 * Sets the map of triggers indexed by command identifiers.
-	 * 
-	 * @param triggersByCommandId
-	 *            The map to set; must not be <code>null</code>. This is a
-	 *            map of command identifiers (<code>String</code>) to
-	 *            triggers (<code>Collection</code> of
-	 *            <code>TriggerSequence</code>).
-	 */
-	final void setTriggersByCommandId(final Map triggersByCommandId) {
-		if (triggersByCommandId == null) {
-			throw new NullPointerException(
-					"Cannot set a null binding resolution"); //$NON-NLS-1$
-		}
-
-		this.triggersByCommandId = triggersByCommandId;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/IBindingManagerListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/IBindingManagerListener.java
deleted file mode 100644
index 3263fa5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/IBindingManagerListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings;
-
-/**
- * <p>
- * An instance of <code>BindingManagerListener</code> can be used by clients to
- * receive notification of changes to an instance of
- * <code>BindingManager</code>. 
- * </p>
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @see BindingManager#addBindingManagerListener(IBindingManagerListener)
- * @see org.eclipse.jface.bindings.BindingManager#addBindingManagerListener(IBindingManagerListener)
- * @see BindingManagerEvent
- */
-public interface IBindingManagerListener {
-
-	/**
-	 * Notifies that attributes inside an instance of <code>BindingManager</code> have changed. 
-	 * Specific details are described in the <code>BindingManagerEvent</code>.  Changes in the
-	 * binding manager can cause the set of defined or active schemes or bindings to change.
-	 * 
-	 * @param event
-	 *            the binding manager event. Guaranteed not to be <code>null</code>.
-	 */
-	void bindingManagerChanged(BindingManagerEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/ISchemeListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/ISchemeListener.java
deleted file mode 100644
index cb889e9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/ISchemeListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings;
-
-/**
- * <p>
- * An instance of <code>ISchemeListener</code> can be used by clients to
- * receive notification of changes to one or more instances of
- * <code>IScheme</code>.
- * </p>
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @see Scheme#addSchemeListener(ISchemeListener)
- * @see Scheme#removeSchemeListener(ISchemeListener)
- * @see SchemeEvent
- */
-public interface ISchemeListener {
-
-    /**
-     * Notifies that one or more attributes of an instance of
-     * <code>IScheme</code> have changed. Specific details are described in
-     * the <code>SchemeEvent</code>.
-     * 
-     * @param schemeEvent
-     *            the scheme event. Guaranteed not to be <code>null</code>.
-     */
-    void schemeChanged(SchemeEvent schemeEvent);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java
deleted file mode 100644
index d0c77c4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Scheme.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.commands.common.NamedHandleObject;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * An instance of <code>IScheme</code> is a handle representing a binding
- * scheme as defined by the extension point <code>org.eclipse.ui.bindings</code>.
- * The identifier of the handle is the identifier of the scheme being represented.
- * </p>
- * <p>
- * An instance of <code>IScheme</code> can be obtained from an instance of
- * <code>ICommandManager</code> for any identifier, whether or not a scheme
- * with that identifier is defined in the plugin registry.
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation. If a scheme is defined, that means that
- * its corresponding plug-in is active. If the plug-in is then deactivated, the
- * scheme will still exist but it will be undefined. An attempt to use an
- * undefined scheme will result in a <code>NotDefinedException</code>
- * being thrown.
- * </p>
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.1
- * @see ISchemeListener
- * @see org.eclipse.core.commands.CommandManager
- */
-public final class Scheme extends NamedHandleObject implements Comparable {
-
-    /**
-     * The collection of all objects listening to changes on this scheme. This
-     * value is <code>null</code> if there are no listeners.
-     */
-    private Set listeners = null;
-
-    /**
-     * The parent identifier for this scheme. This is the identifier of the
-     * scheme from which this scheme inherits some of its bindings. This value
-     * can be <code>null</code> if the scheme has no parent.
-     */
-    private String parentId = null;
-
-    /**
-     * Constructs a new instance of <code>Scheme</code> with an identifier.
-     * 
-     * @param id
-     *            The identifier to create; must not be <code>null</code>.
-     */
-    Scheme(final String id) {
-        super(id);
-    }
-
-    /**
-     * Registers an instance of <code>ISchemeListener</code> to listen for
-     * changes to attributes of this instance.
-     * 
-     * @param schemeListener
-     *            the instance of <code>ISchemeListener</code> to register.
-     *            Must not be <code>null</code>. If an attempt is made to
-     *            register an instance of <code>ISchemeListener</code> which
-     *            is already registered with this instance, no operation is
-     *            performed.
-     */
-    public final void addSchemeListener(final ISchemeListener schemeListener) {
-        if (schemeListener == null) {
-            throw new NullPointerException("Can't add a null scheme listener."); //$NON-NLS-1$
-        }
-
-        if (listeners == null) {
-            listeners = new HashSet();
-        }
-
-        listeners.add(schemeListener);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public final int compareTo(final Object object) {
-        final Scheme scheme = (Scheme) object;
-        int compareTo = Util.compare(this.id, scheme.id);
-        if (compareTo == 0) {
-            compareTo = Util.compare(this.name, scheme.name);
-            if (compareTo == 0) {
-                compareTo = Util.compare(this.parentId, scheme.parentId);
-                if (compareTo == 0) {
-                    compareTo = Util.compare(this.description,
-                            scheme.description);
-                    if (compareTo == 0) {
-                        compareTo = Util.compare(this.defined, scheme.defined);
-                    }
-                }
-            }
-        }
-
-        return compareTo;
-    }
-
-    /**
-     * <p>
-     * Defines this scheme by giving it a name, and possibly a description and a
-     * parent identifier as well. The defined property for the scheme automatically 
-     * becomes <code>true</code>.
-     * </p>
-     * <p>
-     * Notification is sent to all listeners that something has changed.
-     * </p>
-     * 
-     * @param name
-     *            The name of this scheme; must not be <code>null</code>.
-     * @param description
-     *            The description for this scheme; may be <code>null</code>.
-     * @param parentId
-     *            The parent identifier for this scheme; may be
-     *            <code>null</code>.
-     */
-    public final void define(final String name, final String description,
-            final String parentId) {
-        if (name == null) {
-            throw new NullPointerException(
-                    "The name of a scheme cannot be null"); //$NON-NLS-1$
-        }
-
-        final boolean definedChanged = !this.defined;
-        this.defined = true;
-
-        final boolean nameChanged = !Util.equals(this.name, name);
-        this.name = name;
-
-        final boolean descriptionChanged = !Util.equals(this.description,
-                description);
-        this.description = description;
-
-        final boolean parentIdChanged = !Util.equals(this.parentId, parentId);
-        this.parentId = parentId;
-
-        fireSchemeChanged(new SchemeEvent(this, definedChanged, nameChanged,
-                descriptionChanged, parentIdChanged));
-    }
-
-    /**
-     * Notifies all listeners that this scheme has changed. This sends the given
-     * event to all of the listeners, if any.
-     * 
-     * @param event
-     *            The event to send to the listeners; must not be
-     *            <code>null</code>.
-     */
-    private final void fireSchemeChanged(final SchemeEvent event) {
-        if (event == null) {
-            throw new NullPointerException(
-                    "Cannot send a null event to listeners."); //$NON-NLS-1$
-        }
-
-        if (listeners == null) {
-            return;
-        }
-
-        final Iterator listenerItr = listeners.iterator();
-        while (listenerItr.hasNext()) {
-            final ISchemeListener listener = (ISchemeListener) listenerItr
-                    .next();
-            listener.schemeChanged(event);
-        }
-    }
-
-    /**
-     * <p>
-     * Returns the identifier of the parent of the scheme represented by this
-     * handle.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the identifier of the parent of the scheme represented by this
-     *         handle. May be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the scheme represented by this handle is not defined.
-     */
-    public final String getParentId() throws NotDefinedException {
-        if (!defined) {
-            throw new NotDefinedException(
-                    "Cannot get the parent identifier from an undefined scheme. "  //$NON-NLS-1$
-            		+ id);
-        }
-
-        return parentId;
-    }
-
-    /**
-     * Unregisters an instance of <code>ISchemeListener</code> listening for
-     * changes to attributes of this instance.
-     * 
-     * @param schemeListener
-     *            the instance of <code>ISchemeListener</code> to unregister.
-     *            Must not be <code>null</code>. If an attempt is made to
-     *            unregister an instance of <code>ISchemeListener</code> which
-     *            is not already registered with this instance, no operation is
-     *            performed.
-     */
-    public final void removeSchemeListener(final ISchemeListener schemeListener) {
-        if (schemeListener == null) {
-            throw new NullPointerException("Cannot remove a null listener."); //$NON-NLS-1$
-        }
-
-        if (listeners == null) {
-            return;
-        }
-
-        listeners.remove(schemeListener);
-
-        if (listeners.isEmpty()) {
-            listeners = null;
-        }
-    }
-
-    /**
-     * The string representation of this command -- for debugging purposes only.
-     * This string should not be shown to an end user.
-     * 
-     * @return The string representation; never <code>null</code>.
-     */
-    public final String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append("Scheme("); //$NON-NLS-1$
-            stringBuffer.append(id);
-            stringBuffer.append(',');
-            stringBuffer.append(name);
-            stringBuffer.append(',');
-            stringBuffer.append(description);
-            stringBuffer.append(',');
-            stringBuffer.append(parentId);
-            stringBuffer.append(',');
-            stringBuffer.append(defined);
-            stringBuffer.append(')');
-            string = stringBuffer.toString();
-        }
-        return string;
-    }
-
-    /**
-     * Makes this scheme become undefined. This has the side effect of changing
-     * the name, description and parent identifier to <code>null</code>.
-     * Notification is sent to all listeners.
-     */
-    public final void undefine() {
-        string = null;
-
-        final boolean definedChanged = defined;
-        defined = false;
-
-        final boolean nameChanged = name != null;
-        name = null;
-
-        final boolean descriptionChanged = description != null;
-        description = null;
-
-        final boolean parentIdChanged = parentId != null;
-        parentId = null;
-
-        fireSchemeChanged(new SchemeEvent(this, definedChanged, nameChanged,
-                descriptionChanged, parentIdChanged));
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/SchemeEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/SchemeEvent.java
deleted file mode 100644
index d1fdf78..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/SchemeEvent.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings;
-
-import org.eclipse.core.commands.common.AbstractNamedHandleEvent;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>IScheme</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.1
- * @see ISchemeListener#schemeChanged(SchemeEvent)
- */
-public final class SchemeEvent extends AbstractNamedHandleEvent {
-
-	/**
-	 * The bit used to represent whether the scheme has changed its parent.
-	 */
-	private static final int CHANGED_PARENT_ID = LAST_USED_BIT << 1;
-
-	/**
-	 * The scheme that has changed; this value is never <code>null</code>.
-	 */
-	private final Scheme scheme;
-
-	/**
-	 * Creates a new instance of this class.
-	 * 
-	 * @param scheme
-	 *            the instance of the interface that changed; must not be
-	 *            <code>null</code>.
-	 * @param definedChanged
-	 *            true, iff the defined property changed.
-	 * @param nameChanged
-	 *            true, iff the name property changed.
-	 * @param descriptionChanged
-	 *            <code>true</code> if the description property changed;
-	 *            <code>false</code> otherwise.
-	 * @param parentIdChanged
-	 *            true, iff the parentId property changed.
-	 */
-	public SchemeEvent(Scheme scheme, boolean definedChanged,
-			boolean nameChanged, boolean descriptionChanged,
-			boolean parentIdChanged) {
-		super(definedChanged, descriptionChanged, nameChanged);
-
-		if (scheme == null) {
-			throw new NullPointerException();
-		}
-		this.scheme = scheme;
-
-		if (parentIdChanged) {
-			changedValues |= CHANGED_PARENT_ID;
-		}
-	}
-
-	/**
-	 * Returns the instance of the scheme that changed.
-	 * 
-	 * @return the instance of the scheme that changed. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	public final Scheme getScheme() {
-		return scheme;
-	}
-
-	/**
-	 * Returns whether or not the parentId property changed.
-	 * 
-	 * @return true, iff the parentId property changed.
-	 */
-	public final boolean isParentIdChanged() {
-		return ((changedValues & CHANGED_PARENT_ID) != 0);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Trigger.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Trigger.java
deleted file mode 100644
index 58dce3b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/Trigger.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings;
-
-/**
- * <p>
- * The abstract class for any object that can be used as a trigger for a binding. 
- * This ensures that trigger conform to certain minimum requirements. Namely, triggers 
- * need to be hashable.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class Trigger implements Comparable {
-
-    /**
-     * Tests whether this object is equal to another object. A handle object is
-     * only equal to another trigger with the same properties.
-     * 
-     * @param object
-     *            The object with which to compare; may be <code>null</code>.
-     * @return <code>true</code> if the objects are equal; <code>false</code>
-     *         otherwise.
-     */
-    public abstract boolean equals(final Object object);
-
-    /**
-     * Computes the hash code for this object.
-     * 
-     * @return The hash code for this object.
-     */
-    public abstract int hashCode();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java
deleted file mode 100644
index 93d1c3a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/TriggerSequence.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings;
-
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * A sequence of one or more triggers. None of these triggers may be
- * <code>null</code>.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class TriggerSequence {
-	
-	/**
-	 * The value to see that hash code to if the hash code is not yet computed.
-	 */
-	private static final int HASH_CODE_NOT_COMPUTED = -1;
-
-	/**
-	 * A factor for computing the hash code for all trigger sequences.
-	 */
-	private static final int HASH_FACTOR = 89;
-
-	/**
-	 * An internal constant used only in this object's hash code algorithm.
-	 */
-	private static final int HASH_INITIAL = TriggerSequence.class.getName()
-			.hashCode();
-
-	/**
-	 * The hash code for this object. This value is computed lazily, and marked
-	 * as invalid when one of the values on which it is based changes.  This
-	 * values is <code>HASH_CODE_NOT_COMPUTED</code> iff the hash code has not
-	 * yet been computed.
-	 */
-	protected transient int hashCode = HASH_CODE_NOT_COMPUTED;
-
-	/**
-	 * The list of trigger in this sequence. This value is never
-	 * <code>null</code>, and never contains <code>null</code> elements.
-	 */
-	protected final Trigger[] triggers;
-
-	/**
-	 * Constructs a new instance of <code>TriggerSequence</code>.
-	 * 
-	 * @param triggers
-	 *            The triggers contained within this sequence; must not be
-	 *            <code>null</code> or contain <code>null</code> elements.
-	 *            May be empty.
-	 */
-	public TriggerSequence(final Trigger[] triggers) {
-		if (triggers == null) {
-			throw new NullPointerException("The triggers cannot be null"); //$NON-NLS-1$
-		}
-
-		for (int i = 0; i < triggers.length; i++) {
-			if (triggers[i] == null) {
-				throw new IllegalArgumentException(
-						"All triggers in a trigger sequence must be an instance of Trigger"); //$NON-NLS-1$
-			}
-		}
-
-		final int triggerLength = triggers.length;
-		this.triggers = new Trigger[triggerLength];
-		System.arraycopy(triggers, 0, this.triggers, 0, triggerLength);
-	}
-
-	/**
-	 * Returns whether or not this key sequence ends with the given key
-	 * sequence.
-	 * 
-	 * @param triggerSequence
-	 *            a trigger sequence. Must not be <code>null</code>.
-	 * @param equals
-	 *            whether or not an identical trigger sequence should be
-	 *            considered as a possible match.
-	 * @return <code>true</code>, iff the given trigger sequence ends with
-	 *         this trigger sequence.
-	 */
-	public final boolean endsWith(final TriggerSequence triggerSequence,
-			final boolean equals) {
-		if (triggerSequence == null) {
-			throw new NullPointerException(
-					"Cannot end with a null trigger sequence"); //$NON-NLS-1$
-		}
-
-		return Util.endsWith(triggers, triggerSequence.triggers, equals);
-	}
-
-	public final boolean equals(final Object object) {
-		// Check if they're the same.
-		if (object == this) {
-			return true;
-		}
-
-		// Check if they're the same type.
-		if (!(object instanceof TriggerSequence)) {
-			return false;
-		}
-
-		final TriggerSequence triggerSequence = (TriggerSequence) object;
-		return Util.equals(triggers, triggerSequence.triggers);
-	}
-
-	/**
-	 * Formats this trigger sequence into the current default look.
-	 * 
-	 * @return A string representation for this trigger sequence using the
-	 *         default look; never <code>null</code>.
-	 */
-	public abstract String format();
-
-	/**
-	 * <p>
-	 * Returns a list of prefixes for the current sequence. A prefix is any
-	 * leading subsequence in a <code>TriggerSequence</code>. A prefix is
-	 * also an instance of <code>TriggerSequence</code>.
-	 * </p>
-	 * <p>
-	 * For example, consider a trigger sequence that consists of four triggers:
-	 * A, B, C and D. The prefixes would be "", "A", "A B", and "A B C". The
-	 * list of prefixes must always be the same as the size of the trigger list.
-	 * </p>
-	 * 
-	 * @return The array of possible prefixes for this sequence. This array must
-	 *         not be <code>null</code>, but may be empty. It must only
-	 *         contains instances of <code>TriggerSequence</code>.
-	 */
-	public abstract TriggerSequence[] getPrefixes();
-
-	/**
-	 * Returns the list of triggers.
-	 * 
-	 * @return The triggers; never <code>null</code> and guaranteed to only
-	 *         contain instances of <code>Trigger</code>.
-	 */
-	public final Trigger[] getTriggers() {
-		final int triggerLength = triggers.length;
-		final Trigger[] triggerCopy = new Trigger[triggerLength];
-		System.arraycopy(triggers, 0, triggerCopy, 0, triggerLength);
-		return triggerCopy;
-	}
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see java.lang.Object#hashCode()
-	 */
-	public final int hashCode() {
-		if (hashCode == HASH_CODE_NOT_COMPUTED) {
-			hashCode = HASH_INITIAL;
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(triggers);
-			if (hashCode == HASH_CODE_NOT_COMPUTED) {
-				hashCode++;
-			}
-		}
-
-		return hashCode;
-	}
-
-	/**
-	 * Returns whether or not this trigger sequence is empty.
-	 * 
-	 * @return <code>true</code>, iff the trigger sequence is empty.
-	 */
-	public final boolean isEmpty() {
-		return (triggers.length == 0);
-	}
-
-	/**
-	 * Returns whether or not this trigger sequence starts with the given
-	 * trigger sequence.
-	 * 
-	 * @param triggerSequence
-	 *            a trigger sequence. Must not be <code>null</code>.
-	 * @param equals
-	 *            whether or not an identical trigger sequence should be
-	 *            considered as a possible match.
-	 * @return <code>true</code>, iff the given trigger sequence starts with
-	 *         this key sequence.
-	 */
-	public final boolean startsWith(final TriggerSequence triggerSequence,
-			final boolean equals) {
-		if (triggerSequence == null) {
-			throw new NullPointerException(
-					"A trigger sequence cannot start with null"); //$NON-NLS-1$
-		}
-
-		return Util.startsWith(triggers, triggerSequence.triggers, equals);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java
deleted file mode 100644
index ad057aa..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/IKeyLookup.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings.keys;
-
-/**
- * <p>
- * A facilitiy for converting the formal representation for key strokes
- * (i.e., used in persistence) into real key stroke instances.
- * </p>
- * 
- * @since 3.1
- */
-public interface IKeyLookup {
-	/**
-	 * The formal name of the 'Alt' key.
-	 */
-	public static final String ALT_NAME = "ALT"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Arrow Down' key.
-	 */
-	public static final String ARROW_DOWN_NAME = "ARROW_DOWN"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Arrow Left' key.
-	 */
-	public static final String ARROW_LEFT_NAME = "ARROW_LEFT"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Arrow Right' key.
-	 */
-	public static final String ARROW_RIGHT_NAME = "ARROW_RIGHT"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Arrow Up' key.
-	 */
-	public static final String ARROW_UP_NAME = "ARROW_UP"; //$NON-NLS-1$
-	
-	/**
-	 * An alternate name for the backspace key.
-	 */
-	public static final String BACKSPACE_NAME = "BACKSPACE"; //$NON-NLS-1$
-
-	/**
-	 * The formal name for the 'Break' key.
-	 */
-	public static final String BREAK_NAME = "BREAK"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the backspace key.
-	 */
-	public static final String BS_NAME = "BS"; //$NON-NLS-1$
-
-	/**
-	 * The formal name for the 'Caps Lock' key.
-	 */
-	public static final String CAPS_LOCK_NAME = "CAPS_LOCK"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Command' key.
-	 */
-	public static final String COMMAND_NAME = "COMMAND"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the carriage return (U+000D)
-	 */
-	public static final String CR_NAME = "CR"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Ctrl' key.
-	 */
-	public static final String CTRL_NAME = "CTRL"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the delete (U+007F) key
-	 */
-	public static final String DEL_NAME = "DEL"; //$NON-NLS-1$
-	
-	/**
-	 * An alternative name for the delete key.
-	 */
-	public static final String DELETE_NAME = "DELETE"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'End' key.
-	 */
-	public static final String END_NAME = "END"; //$NON-NLS-1$
-	
-	/**
-	 * An alternative name for the enter key.
-	 */
-	public static final String ENTER_NAME = "ENTER"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the escape (U+001B) key.
-	 */
-	public static final String ESC_NAME = "ESC"; //$NON-NLS-1$
-	
-	/**
-	 * An alternative name for the escape key.
-	 */
-	public static final String ESCAPE_NAME = "ESCAPE"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F1' key.
-	 */
-	public static final String F1_NAME = "F1"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F10' key.
-	 */
-	public static final String F10_NAME = "F10"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F11' key.
-	 */
-	public static final String F11_NAME = "F11"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F12' key.
-	 */
-	public static final String F12_NAME = "F12"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F13' key.
-	 */
-	public static final String F13_NAME = "F13"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F14' key.
-	 */
-	public static final String F14_NAME = "F14"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F15' key.
-	 */
-	public static final String F15_NAME = "F15"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F2' key.
-	 */
-	public static final String F2_NAME = "F2"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F3' key.
-	 */
-	public static final String F3_NAME = "F3"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F4' key.
-	 */
-	public static final String F4_NAME = "F4"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F5' key.
-	 */
-	public static final String F5_NAME = "F5"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F6' key.
-	 */
-	public static final String F6_NAME = "F6"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F7' key.
-	 */
-	public static final String F7_NAME = "F7"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F8' key.
-	 */
-	public static final String F8_NAME = "F8"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'F9' key.
-	 */
-	public static final String F9_NAME = "F9"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the form feed (U+000C) key.
-	 */
-	public static final String FF_NAME = "FF"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Home' key.
-	 */
-	public static final String HOME_NAME = "HOME"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Insert' key.
-	 */
-	public static final String INSERT_NAME = "INSERT"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the line feed (U+000A) key.
-	 */
-	public static final String LF_NAME = "LF"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'M1' key.
-	 */
-	public static final String M1_NAME = "M1"; //$NON-NLS-1$	
-
-	/**
-	 * The formal name of the 'M2' key.
-	 */
-	public static final String M2_NAME = "M2"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'M3' key.
-	 */
-	public static final String M3_NAME = "M3"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'M4' key.
-	 */
-	public static final String M4_NAME = "M4"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the null (U+0000) key.
-	 */
-	public static final String NUL_NAME = "NUL"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'NumLock' key.
-	 */
-	public static final String NUM_LOCK_NAME = "NUM_LOCK"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '0' key on the numpad.
-	 */
-	public static final String NUMPAD_0_NAME = "NUMPAD_0"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '1' key on the numpad.
-	 */
-	public static final String NUMPAD_1_NAME = "NUMPAD_1"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '2' key on the numpad.
-	 */
-	public static final String NUMPAD_2_NAME = "NUMPAD_2"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '3' key on the numpad.
-	 */
-	public static final String NUMPAD_3_NAME = "NUMPAD_3"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '4' key on the numpad.
-	 */
-	public static final String NUMPAD_4_NAME = "NUMPAD_4"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '5' key on the numpad.
-	 */
-	public static final String NUMPAD_5_NAME = "NUMPAD_5"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '6' key on the numpad.
-	 */
-	public static final String NUMPAD_6_NAME = "NUMPAD_6"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '7' key on the numpad.
-	 */
-	public static final String NUMPAD_7_NAME = "NUMPAD_7"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '8' key on the numpad.
-	 */
-	public static final String NUMPAD_8_NAME = "NUMPAD_8"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '9' key on the numpad.
-	 */
-	public static final String NUMPAD_9_NAME = "NUMPAD_9"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Add' key on the numpad.
-	 */
-	public static final String NUMPAD_ADD_NAME = "NUMPAD_ADD"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Decimal' key on the numpad.
-	 */
-	public static final String NUMPAD_DECIMAL_NAME = "NUMPAD_DECIMAL"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Divide' key on the numpad.
-	 */
-	public static final String NUMPAD_DIVIDE_NAME = "NUMPAD_DIVIDE"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Enter' key on the numpad.
-	 */
-	public static final String NUMPAD_ENTER_NAME = "NUMPAD_ENTER"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the '=' key on the numpad.
-	 */
-	public static final String NUMPAD_EQUAL_NAME = "NUMPAD_EQUAL"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Multiply' key on the numpad.
-	 */
-	public static final String NUMPAD_MULTIPLY_NAME = "NUMPAD_MULTIPLY"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Subtract' key on the numpad.
-	 */
-	public static final String NUMPAD_SUBTRACT_NAME = "NUMPAD_SUBTRACT"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Page Down' key.
-	 */
-	public static final String PAGE_DOWN_NAME = "PAGE_DOWN"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the 'Page Up' key.
-	 */
-	public static final String PAGE_UP_NAME = "PAGE_UP"; //$NON-NLS-1$
-
-	/**
-	 * The formal name for the 'Pause' key.
-	 */
-	public static final String PAUSE_NAME = "PAUSE"; //$NON-NLS-1$
-
-	/**
-	 * The formal name for the 'Print Screen' key.
-	 */
-	public static final String PRINT_SCREEN_NAME = "PRINT_SCREEN"; //$NON-NLS-1$
-	
-	/**
-	 * An alternative name for the enter key.
-	 */
-	public static final String RETURN_NAME = "RETURN"; //$NON-NLS-1$
-
-	/**
-	 * The formal name for the 'Scroll Lock' key.
-	 */
-	public static final String SCROLL_LOCK_NAME = "SCROLL_LOCK"; //$NON-NLS-1$		
-
-	/**
-	 * The formal name of the 'Shift' key.
-	 */
-	public static final String SHIFT_NAME = "SHIFT"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the space (U+0020) key.
-	 */
-	public static final String SPACE_NAME = "SPACE"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the tab (U+0009) key.
-	 */
-	public static final String TAB_NAME = "TAB"; //$NON-NLS-1$
-
-	/**
-	 * The formal name of the vertical tab (U+000B) key.
-	 */
-	public static final String VT_NAME = "VT"; //$NON-NLS-1$	
-
-	/**
-	 * Looks up a single natural key by its formal name, and returns the integer
-	 * representation for this natural key
-	 * 
-	 * @param name
-	 *            The formal name of the natural key to look-up; must not be
-	 *            <code>null</code>.
-	 * @return The integer representation of this key. If the natural key cannot
-	 *         be found, then this method returns <code>0</code>.
-	 */
-	public int formalKeyLookup(String name);	
-
-	/**
-	 * Looks up a single natural key by its formal name, and returns the integer
-	 * representation for this natural key
-	 * 
-	 * @param name
-	 *            The formal name of the natural key to look-up; must not be
-	 *            <code>null</code>.
-	 * @return The integer representation of this key. If the natural key cannot
-	 *         be found, then this method returns <code>0</code>.
-	 */
-	public Integer formalKeyLookupInteger(String name);
-
-	/**
-	 * Looks up a single modifier key by its formal name, and returns the integer
-	 * representation for this modifier key
-	 * 
-	 * @param name
-	 *            The formal name of the modifier key to look-up; must not be
-	 *            <code>null</code>.
-	 * @return The integer representation of this key. If the modifier key
-	 *         cannot be found, then this method returns <code>0</code>.
-	 */
-	public int formalModifierLookup(String name);
-
-	/**
-	 * Looks up a key value, and returns the formal string representation for
-	 * that key
-	 * 
-	 * @param key
-	 *            The key to look-up.
-	 * @return The formal string representation of this key. If this key cannot
-	 *         be found, then it is simply the character corresponding to that
-	 *         integer value.
-	 */
-	public String formalNameLookup(int key);
-
-	/**
-	 * Returns the integer representation of the ALT key.
-	 * 
-	 * @return The ALT key
-	 */
-	public int getAlt();
-
-	/**
-	 * Returns the integer representation of the COMMAND key.
-	 * 
-	 * @return The COMMAND key
-	 */
-	public int getCommand();
-
-	/**
-	 * Returns the integer representation of the CTRL key.
-	 * 
-	 * @return The CTRL key
-	 */
-	public int getCtrl();
-
-	/**
-	 * Returns the integer representation of the SHIFT key.
-	 * 
-	 * @return The SHIFT key
-	 */
-	public int getShift();
-
-	/**
-	 * Returns whether the given key is a modifier key.
-	 * 
-	 * @param key
-	 *            The integer value of the key to check.
-	 * @return <code>true</code> if the key is one of the modifier keys;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean isModifierKey(int key);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyBinding.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyBinding.java
deleted file mode 100644
index 157a05d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyBinding.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings.keys;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.TriggerSequence;
-
-/**
- * <p>
- * A keyboard shortcut. This is a binding between some keyboard input and the
- * triggering of a command. This object is immutable.
- * </p>
- * 
- * @since 3.1
- */
-public final class KeyBinding extends Binding {
-
-	/**
-	 * The key sequence which triggers this binding. This sequence is never
-	 * <code>null</code>.
-	 */
-	private final KeySequence keySequence;
-
-	/**
-	 * Constructs a new instance of <code>KeyBinding</code>.
-	 * 
-	 * @param keySequence
-	 *            The key sequence which should trigger this binding. This value
-	 *            must not be <code>null</code>. It also must be a complete,
-	 *            non-empty key sequence.
-	 * @param command
-	 *            The parameterized command to which this binding applies; this
-	 *            value may be <code>null</code> if the binding is meant to
-	 *            "unbind" a previously defined binding.
-	 * @param schemeId
-	 *            The scheme to which this binding belongs; this value must not
-	 *            be <code>null</code>.
-	 * @param contextId
-	 *            The context to which this binding applies; this value must not
-	 *            be <code>null</code>.
-	 * @param locale
-	 *            The locale to which this binding applies; this value may be
-	 *            <code>null</code> if it applies to all locales.
-	 * @param platform
-	 *            The platform to which this binding applies; this value may be
-	 *            <code>null</code> if it applies to all platforms.
-	 * @param windowManager
-	 *            The window manager to which this binding applies; this value
-	 *            may be <code>null</code> if it applies to all window
-	 *            managers. This value is currently ignored.
-	 * @param type
-	 *            The type of binding. This should be either <code>SYSTEM</code>
-	 *            or <code>USER</code>.
-	 */
-	public KeyBinding(final KeySequence keySequence,
-			final ParameterizedCommand command, final String schemeId,
-			final String contextId, final String locale, final String platform,
-			final String windowManager, final int type) {
-		super(command, schemeId, contextId, locale, platform, windowManager,
-				type);
-
-		if (keySequence == null) {
-			throw new NullPointerException("The key sequence cannot be null"); //$NON-NLS-1$
-		}
-
-		if (!keySequence.isComplete()) {
-			throw new IllegalArgumentException(
-					"Cannot bind to an incomplete key sequence"); //$NON-NLS-1$
-		}
-
-		if (keySequence.isEmpty()) {
-			throw new IllegalArgumentException(
-					"Cannot bind to an empty key sequence"); //$NON-NLS-1$
-		}
-
-		this.keySequence = keySequence;
-	}
-
-	/**
-	 * Returns the key sequence which triggers this binding. The key sequence
-	 * will not be <code>null</code>, empty or incomplete.
-	 * 
-	 * @return The key sequence; never <code>null</code>.
-	 */
-	public final KeySequence getKeySequence() {
-		return keySequence;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.Binding#getTriggerSequence()
-	 */
-	public TriggerSequence getTriggerSequence() {
-		return getKeySequence();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyLookupFactory.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyLookupFactory.java
deleted file mode 100644
index f280ea1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyLookupFactory.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings.keys;
-
-
-/**
- * <p>
- * A factory class for <code>ILookup</code> instances. This factory can be
- * used to retrieve instances of look-ups defined by this package. It also
- * allows you to define your own look-up for use in the classes.
- * </p>
- * 
- * @since 3.1
- */
-public final class KeyLookupFactory {
-
-	/**
-	 * The SWT key look-up defined by this package.
-	 */
-	private static final SWTKeyLookup SWT_KEY_LOOKUP = new SWTKeyLookup();
-
-	/**
-	 * The instance that should be used by <code>KeyStroke</code> in
-	 * converting string representations to instances.
-	 */
-	private static IKeyLookup defaultLookup = SWT_KEY_LOOKUP;
-
-	/**
-	 * Provides an instance of <code>SWTKeyLookup</code>.
-	 * 
-	 * @return The SWT look-up table for key stroke format information; never
-	 *         <code>null</code>.
-	 */
-	public static final IKeyLookup getSWTKeyLookup() {
-		return SWT_KEY_LOOKUP;
-	}
-
-	/**
-	 * An accessor for the current default look-up.
-	 * 
-	 * @return The default look-up; never <code>null</code>.
-	 */
-	public static final IKeyLookup getDefault() {
-		return defaultLookup;
-	}
-
-	/**
-	 * Sets the default look-up.
-	 * 
-	 * @param defaultLookup
-	 *            the default look-up. Must not be <code>null</code>.
-	 */
-	public static final void setDefault(final IKeyLookup defaultLookup) {
-		if (defaultLookup == null) {
-			throw new NullPointerException("The look-up must not be null"); //$NON-NLS-1$
-		}
-
-		KeyLookupFactory.defaultLookup = defaultLookup;
-	}
-
-	/**
-	 * This class should not be instantiated.
-	 */
-	private KeyLookupFactory() {
-		// Not to be constructred.
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequence.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequence.java
deleted file mode 100644
index abf927f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequence.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.formatting.KeyFormatterFactory;
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * A <code>KeySequence</code> is defined as a list of zero or more
- * <code>KeyStrokes</code>, with the stipulation that all
- * <code>KeyStroke</code> objects must be complete, save for the last one,
- * whose completeness is optional. A <code>KeySequence</code> is said to be
- * complete if all of its <code>KeyStroke</code> objects are complete.
- * </p>
- * <p>
- * All <code>KeySequence</code> objects have a formal string representation
- * available via the <code>toString()</code> method. There are a number of
- * methods to get instances of <code>KeySequence</code> objects, including one
- * which can parse this formal string representation.
- * </p>
- * <p>
- * All <code>KeySequence</code> objects, via the <code>format()</code>
- * method, provide a version of their formal string representation translated by
- * platform and locale, suitable for display to a user.
- * </p>
- * <p>
- * <code>KeySequence</code> objects are immutable. Clients are not permitted
- * to extend this class.
- * </p>
- * 
- * @since 3.1
- */
-public final class KeySequence extends TriggerSequence implements Comparable {
-
-	/**
-	 * An empty key sequence instance for use by everyone.
-	 */
-	private final static KeySequence EMPTY_KEY_SEQUENCE = new KeySequence(
-			new KeyStroke[0]);
-
-	/**
-	 * The delimiter between multiple key strokes in a single key sequence --
-	 * expressed in the formal key stroke grammar. This is not to be displayed
-	 * to the user. It is only intended as an internal representation.
-	 */
-	public final static String KEY_STROKE_DELIMITER = "\u0020"; //$NON-NLS-1$
-
-	/**
-	 * The set of delimiters for <code>KeyStroke</code> objects allowed during
-	 * parsing of the formal string representation.
-	 */
-	public final static String KEY_STROKE_DELIMITERS = KEY_STROKE_DELIMITER
-			+ "\b\r\u007F\u001B\f\n\0\t\u000B"; //$NON-NLS-1$
-
-	/**
-	 * Gets an instance of <code>KeySequence</code>.
-	 * 
-	 * @return a key sequence. This key sequence will have no key strokes.
-	 *         Guaranteed not to be <code>null</code>.
-	 */
-	public static final KeySequence getInstance() {
-		return EMPTY_KEY_SEQUENCE;
-	}
-
-	/**
-	 * Creates an instance of <code>KeySequence</code> given a key sequence
-	 * and a key stroke.
-	 * 
-	 * @param keySequence
-	 *            a key sequence. Must not be <code>null</code>.
-	 * @param keyStroke
-	 *            a key stroke. Must not be <code>null</code>.
-	 * @return a key sequence that is equal to the given key sequence with the
-	 *         given key stroke appended to the end. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	public static final KeySequence getInstance(final KeySequence keySequence,
-			final KeyStroke keyStroke) {
-		if (keySequence == null || keyStroke == null) {
-			throw new NullPointerException();
-		}
-
-		final KeyStroke[] oldKeyStrokes = keySequence.getKeyStrokes();
-		final int oldKeyStrokeLength = oldKeyStrokes.length;
-		final KeyStroke[] newKeyStrokes = new KeyStroke[oldKeyStrokeLength + 1];
-		System
-				.arraycopy(oldKeyStrokes, 0, newKeyStrokes, 0,
-						oldKeyStrokeLength);
-		newKeyStrokes[oldKeyStrokeLength] = keyStroke;
-		return new KeySequence(newKeyStrokes);
-	}
-
-	/**
-	 * Creates an instance of <code>KeySequence</code> given a single key
-	 * stroke.
-	 * 
-	 * @param keyStroke
-	 *            a single key stroke. Must not be <code>null</code>.
-	 * @return a key sequence. Guaranteed not to be <code>null</code>.
-	 */
-	public static final KeySequence getInstance(final KeyStroke keyStroke) {
-		return new KeySequence(new KeyStroke[] { keyStroke });
-	}
-
-	/**
-	 * Creates an instance of <code>KeySequence</code> given an array of key
-	 * strokes.
-	 * 
-	 * @param keyStrokes
-	 *            the array of key strokes. This array may be empty, but it must
-	 *            not be <code>null</code>. This array must not contain
-	 *            <code>null</code> elements.
-	 * @return a key sequence. Guaranteed not to be <code>null</code>.
-	 */
-	public static final KeySequence getInstance(final KeyStroke[] keyStrokes) {
-		return new KeySequence(keyStrokes);
-	}
-
-	/**
-	 * Creates an instance of <code>KeySequence</code> given a list of key
-	 * strokes.
-	 * 
-	 * @param keyStrokes
-	 *            the list of key strokes. This list may be empty, but it must
-	 *            not be <code>null</code>. If this list is not empty, it
-	 *            must only contain instances of <code>KeyStroke</code>.
-	 * @return a key sequence. Guaranteed not to be <code>null</code>.
-	 */
-	public static final KeySequence getInstance(final List keyStrokes) {
-		return new KeySequence((KeyStroke[]) keyStrokes
-				.toArray(new KeyStroke[keyStrokes.size()]));
-	}
-
-	/**
-	 * Creates an instance of <code>KeySequence</code> by parsing a given
-	 * formal string representation.
-	 * 
-	 * @param string
-	 *            the formal string representation to parse.
-	 * @return a key sequence. Guaranteed not to be <code>null</code>.
-	 * @throws ParseException
-	 *             if the given formal string representation could not be parsed
-	 *             to a valid key sequence.
-	 */
-	public static final KeySequence getInstance(final String string)
-			throws ParseException {
-		if (string == null) {
-			throw new NullPointerException();
-		}
-
-		final List keyStrokes = new ArrayList();
-		final StringTokenizer stringTokenizer = new StringTokenizer(string,
-				KEY_STROKE_DELIMITERS);
-
-		try {
-			while (stringTokenizer.hasMoreTokens()) {
-				keyStrokes.add(KeyStroke.getInstance(stringTokenizer
-						.nextToken()));
-			}
-
-			final KeyStroke[] keyStrokeArray = (KeyStroke[]) keyStrokes
-					.toArray(new KeyStroke[keyStrokes.size()]);
-			return new KeySequence(keyStrokeArray);
-		} catch (final IllegalArgumentException e) {
-			throw new ParseException(
-					"Could not construct key sequence with these key strokes: " //$NON-NLS-1$
-							+ keyStrokes);
-		} catch (final NullPointerException e) {
-			throw new ParseException(
-					"Could not construct key sequence with these key strokes: " //$NON-NLS-1$
-							+ keyStrokes);
-		}
-	}
-
-	/**
-	 * Constructs an instance of <code>KeySequence</code> given a list of key
-	 * strokes.
-	 * 
-	 * @param keyStrokes
-	 *            the list of key strokes. This list may be empty, but it must
-	 *            not be <code>null</code>. If this list is not empty, it
-	 *            must only contain instances of <code>KeyStroke</code>.
-	 */
-	protected KeySequence(final KeyStroke[] keyStrokes) {
-		super(keyStrokes);
-
-		for (int i = 0; i < triggers.length - 1; i++) {
-			KeyStroke keyStroke = (KeyStroke) triggers[i];
-
-			if (!keyStroke.isComplete()) {
-				throw new IllegalArgumentException();
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#compareTo(java.lang.Object)
-	 */
-	public final int compareTo(final Object object) {
-		final KeySequence castedObject = (KeySequence) object;
-		return Util.compare(triggers, castedObject.triggers);
-	}
-
-	/**
-	 * Formats this key sequence into the current default look.
-	 * 
-	 * @return A string representation for this key sequence using the default
-	 *         look; never <code>null</code>.
-	 */
-	public final String format() {
-		return KeyFormatterFactory.getDefault().format(this);
-	}
-
-	/**
-	 * Returns the list of key strokes for this key sequence.
-	 * 
-	 * @return the list of key strokes keys. This list may be empty, but is
-	 *         guaranteed not to be <code>null</code>. If this list is not
-	 *         empty, it is guaranteed to only contain instances of
-	 *         <code>KeyStroke</code>.
-	 */
-	public final KeyStroke[] getKeyStrokes() {
-		final int triggerLength = triggers.length;
-		final KeyStroke[] keyStrokes = new KeyStroke[triggerLength];
-		System.arraycopy(triggers, 0, keyStrokes, 0, triggerLength);
-		return keyStrokes;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.TriggerSequence#getPrefixes()
-	 */
-	public final TriggerSequence[] getPrefixes() {
-		final int numberOfPrefixes = triggers.length;
-		final TriggerSequence[] prefixes = new TriggerSequence[numberOfPrefixes];
-		prefixes[0] = KeySequence.getInstance();
-		for (int i = 0; i < numberOfPrefixes - 1; i++) {
-			final KeyStroke[] prefixKeyStrokes = new KeyStroke[i + 1];
-			System.arraycopy(triggers, 0, prefixKeyStrokes, 0, i + 1);
-			prefixes[i + 1] = KeySequence.getInstance(prefixKeyStrokes);
-		}
-
-		return prefixes;
-	}
-
-	/**
-	 * Returns whether or not this key sequence is complete. Key sequences are
-	 * complete iff all of their key strokes are complete.
-	 * 
-	 * @return <code>true</code>, iff the key sequence is complete.
-	 */
-	public final boolean isComplete() {
-		final int triggersLength = triggers.length;
-		for (int i = 0; i < triggersLength; i++) {
-			if (!((KeyStroke) triggers[i]).isComplete()) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Returns the formal string representation for this key sequence.
-	 * 
-	 * @return The formal string representation for this key sequence.
-	 *         Guaranteed not to be <code>null</code>.
-	 * @see java.lang.Object#toString()
-	 */
-	public final String toString() {
-		return KeyFormatterFactory.getFormalKeyFormatter().format(this);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequenceText.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequenceText.java
deleted file mode 100644
index 1b04028..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeySequenceText.java
+++ /dev/null
@@ -1,961 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.TreeSet;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * <p>
- * A wrapper around the SWT text widget that traps literal key presses and
- * converts them into key sequences for display. There are two types of key
- * strokes that are displayed: complete and incomplete. A complete key stroke is
- * one with a natural key, while an incomplete one has no natural key.
- * Incomplete key strokes are only displayed until they are made complete or
- * their component key presses are released.
- * </p>
- * 
- * @since 3.1
- */
-public final class KeySequenceText {
-
-	/**
-	 * A key listener that traps incoming events and displays them in the
-	 * wrapped text field. It has no effect on traversal operations.
-	 */
-	private class KeyTrapListener implements Listener {
-		/**
-		 * The index at which insertion should occur. This is used if there is a
-		 * replacement occurring in the middle of the stroke, and the first key
-		 * stroke was incomplete.
-		 */
-		private int insertionIndex = -1;
-
-		/**
-		 * Resets the insertion index to point nowhere. In other words, it is
-		 * set to <code>-1</code>.
-		 */
-		void clearInsertionIndex() {
-			insertionIndex = -1;
-		}
-
-		/**
-		 * Deletes the current selection. If there is no selection, then it
-		 * deletes the last key stroke.
-		 * 
-		 * @param keyStrokes
-		 *            The key strokes from which to delete. This list must not
-		 *            be <code>null</code>, and must represent a valid key
-		 *            sequence.
-		 * @return An array of keystrokes minus the keystrokes that were
-		 *         deleted.
-		 */
-		private final KeyStroke[] deleteKeyStroke(final KeyStroke[] keyStrokes) {
-			clearInsertionIndex();
-
-			if (hasSelection()) {
-				/*
-				 * Delete the current selection -- disallowing incomplete
-				 * strokes in the middle of the sequence.
-				 */
-				final KeyStroke[][] deletedKeyStrokes = new KeyStroke[1][];
-				deleteSelection(keyStrokes, false, deletedKeyStrokes);
-				return deletedKeyStrokes[0];
-			}
-
-			// Remove the last key stroke.
-			if (keyStrokes.length > 0) {
-				final int newKeyStrokesLength = keyStrokes.length - 1;
-				final KeyStroke[] newKeyStrokes = new KeyStroke[newKeyStrokesLength];
-				System.arraycopy(keyStrokes, 0, newKeyStrokes, 0,
-						newKeyStrokesLength);
-				return newKeyStrokes;
-			}
-
-			return keyStrokes;
-		}
-
-		/**
-		 * Handles the key pressed and released events on the wrapped text
-		 * widget. This makes sure to either add the pressed key to the
-		 * temporary key stroke, or complete the current temporary key stroke
-		 * and prompt for the next. In the case of a key release, this makes
-		 * sure that the temporary stroke is correctly displayed --
-		 * corresponding with modifier keys that may have been released.
-		 * 
-		 * @param event
-		 *            The triggering event; must not be <code>null</code>.
-		 */
-		public void handleEvent(Event event) {
-			KeyStroke[] keyStrokes = getKeySequence().getKeyStrokes();
-
-			// Dispatch the event to the correct handler.
-			if (event.type == SWT.KeyDown) {
-				keyStrokes = handleKeyDown(event, keyStrokes);
-			} else if (event.type == SWT.KeyUp) {
-				keyStrokes = handleKeyUp(event, keyStrokes);
-			}
-
-			// Update the underlying widget.
-			setKeySequence(KeySequence.getInstance(keyStrokes));
-
-			// Prevent the event from reaching the widget.
-			event.doit = false;
-		}
-
-		/**
-		 * Handles the case where the key event is an <code>SWT.KeyDown</code>
-		 * event. This either causes a deletion (if it is an unmodified
-		 * backspace key stroke), or an insertion (if it is any other key).
-		 * 
-		 * @param event
-		 *            The trigger key down event; must not be <code>null</code>.
-		 * @param keyStrokes
-		 *            The current list of key strokes. This valud must not be
-		 *            <code>null</code>, and it must represent a valid key
-		 *            sequence.
-		 */
-		private KeyStroke[] handleKeyDown(Event event, KeyStroke[] keyStrokes) {
-			// Is it an unmodified backspace character?
-			if ((event.character == SWT.BS || event.character == SWT.DEL) && (event.stateMask == 0)) {
-				return deleteKeyStroke(keyStrokes);
-			}
-
-			return insertKeyStroke(event, keyStrokes);
-		}
-
-		/**
-		 * Handles the case where the key event is an <code>SWT.KeyUp</code>
-		 * event. This resets the insertion index. If there is an incomplete
-		 * stroke, then that incomplete stroke is modified to match the keys
-		 * that are still held. If no keys are held, then the incomplete stroke
-		 * is removed.
-		 * 
-		 * @param event
-		 *            The triggering event; must not be <code>null</code>
-		 * @param keyStrokes
-		 *            The key strokes that are part of the current key sequence;
-		 *            these key strokes are guaranteed to represent a valid key
-		 *            sequence. This value must not be <code>null</code>.
-		 */
-		private final KeyStroke[] handleKeyUp(final Event event,
-				final KeyStroke[] keyStrokes) {
-			if (hasIncompleteStroke()) {
-				/*
-				 * Figure out the SWT integer representation of the remaining
-				 * values.
-				 */
-				Event mockEvent = new Event();
-				if ((event.keyCode & SWT.MODIFIER_MASK) != 0) {
-					// This key up is a modifier key being released.
-					mockEvent.stateMask = event.stateMask - event.keyCode;
-				} else {
-					/*
-					 * This key up is the other end of a key down that was
-					 * trapped by the operating system or window manager.
-					 */
-					mockEvent.stateMask = event.stateMask;
-				}
-
-				/*
-				 * Get a reasonable facsimile of the stroke that is still
-				 * pressed.
-				 */
-				int key = SWTKeySupport
-						.convertEventToUnmodifiedAccelerator(mockEvent);
-				KeyStroke remainingStroke = SWTKeySupport
-						.convertAcceleratorToKeyStroke(key);
-				final int keyStrokesLength = keyStrokes.length;
-				final KeyStroke[] newKeyStrokes;
-				if ((keyStrokesLength > 0)
-						&& (remainingStroke.getModifierKeys() != 0)) {
-					newKeyStrokes = new KeyStroke[keyStrokesLength];
-					System.arraycopy(keyStrokes, 0, newKeyStrokes, 0,
-							keyStrokesLength - 1);
-					newKeyStrokes[keyStrokesLength - 1] = remainingStroke;
-
-				} else if (keyStrokesLength > 0) {
-					newKeyStrokes = new KeyStroke[keyStrokesLength - 1];
-					System.arraycopy(keyStrokes, 0, newKeyStrokes, 0,
-							keyStrokesLength - 1);
-
-				} else if (remainingStroke.getModifierKeys() != 0) {
-					newKeyStrokes = new KeyStroke[keyStrokesLength + 1];
-					System.arraycopy(keyStrokes, 0, newKeyStrokes, 0,
-							keyStrokesLength);
-					newKeyStrokes[keyStrokesLength] = remainingStroke;
-
-				} else {
-					newKeyStrokes = keyStrokes;
-
-				}
-
-				return newKeyStrokes;
-			}
-
-			return keyStrokes;
-		}
-
-		/**
-		 * <p>
-		 * Handles the case where a key down event is leading to a key stroke
-		 * being inserted. The current selection is deleted, and an invalid
-		 * remanents of the stroke are also removed. The insertion is carried
-		 * out at the cursor position.
-		 * </p>
-		 * <p>
-		 * If only a natural key is selected (as part of a larger key stroke),
-		 * then it is possible for the user to press a natural key to replace
-		 * the old natural key. In this situation, pressing any modifier keys
-		 * will replace the whole thing.
-		 * </p>
-		 * <p>
-		 * If the insertion point is not at the end of the sequence, then
-		 * incomplete strokes will not be immediately inserted. Only when the
-		 * sequence is completed is the stroke inserted. This is a requirement
-		 * as the widget must always represent a valid key sequence. The
-		 * insertion point is tracked using <code>insertionIndex</code>,
-		 * which is an index into the key stroke array.
-		 * </p>
-		 * 
-		 * @param event
-		 *            The triggering key down event; must not be
-		 *            <code>null</code>.
-		 * @param keyStrokes
-		 *            The key strokes into which the current stroke should be
-		 *            inserted. This value must not be <code>null</code>, and
-		 *            must represent a valid key sequence.
-		 */
-		private final KeyStroke[] insertKeyStroke(final Event event,
-				KeyStroke[] keyStrokes) {
-			// Compute the key stroke to insert.
-			int key = SWTKeySupport.convertEventToUnmodifiedAccelerator(event);
-			KeyStroke stroke = SWTKeySupport.convertAcceleratorToKeyStroke(key);
-
-			/*
-			 * Only insert the stroke if it is *not ScrollLock. Let's not get
-			 * silly
-			 */
-			if ((SWT.NUM_LOCK == stroke.getNaturalKey())
-					|| (SWT.CAPS_LOCK == stroke.getNaturalKey())
-					|| (SWT.SCROLL_LOCK == stroke.getNaturalKey())) {
-				return keyStrokes;
-			}
-
-			if (insertionIndex != -1) {
-				// There is a previous replacement still going on.
-				if (stroke.isComplete()) {
-					keyStrokes = insertStrokeAt(keyStrokes, stroke,
-							insertionIndex);
-					clearInsertionIndex();
-				}
-
-			} else if (hasSelection()) {
-				// There is a selection that needs to be replaced.
-				final KeyStroke[][] deletedKeyStrokes = new KeyStroke[1][];
-				insertionIndex = deleteSelection(keyStrokes, stroke
-						.isComplete(), deletedKeyStrokes);
-				keyStrokes = deletedKeyStrokes[0];
-				if ((stroke.isComplete())
-						|| (insertionIndex >= keyStrokes.length)) {
-					keyStrokes = insertStrokeAt(keyStrokes, stroke,
-							insertionIndex);
-					clearInsertionIndex();
-				}
-
-			} else {
-				// No selection, so remove the incomplete stroke, if any
-				if ((hasIncompleteStroke()) && (keyStrokes.length > 0)) {
-					final KeyStroke[] newKeyStrokes = new KeyStroke[keyStrokes.length - 1];
-					System.arraycopy(keyStrokes, 0, newKeyStrokes, 0,
-							keyStrokes.length - 1);
-					keyStrokes = newKeyStrokes;
-				}
-
-				// And then add the new stroke.
-				if ((keyStrokes.length == 0)
-						|| (insertionIndex >= keyStrokes.length)
-						|| (isCursorInLastPosition())) {
-					keyStrokes = insertStrokeAt(keyStrokes, stroke,
-							keyStrokes.length);
-					clearInsertionIndex();
-				} else {
-					/*
-					 * I'm just getting the insertionIndex here. No actual
-					 * deletion should occur.
-					 */
-					final KeyStroke[][] deletedKeyStrokes = new KeyStroke[1][];
-					insertionIndex = deleteSelection(keyStrokes, stroke
-							.isComplete(), deletedKeyStrokes);
-					keyStrokes = deletedKeyStrokes[0];
-					if (stroke.isComplete()) {
-						keyStrokes = insertStrokeAt(keyStrokes, stroke,
-								insertionIndex);
-						clearInsertionIndex();
-					}
-				}
-
-			}
-
-			return keyStrokes;
-		}
-	}
-
-	/**
-	 * A traversal listener that blocks all traversal except for tabs and arrow
-	 * keys.
-	 */
-	private class TraversalFilter implements Listener {
-		/**
-		 * Handles the traverse event on the text field wrapped by this class.
-		 * It swallows all traverse events example for tab and arrow key
-		 * navigation. The other forms of navigation can be reached by tabbing
-		 * off of the control.
-		 * 
-		 * @param event
-		 *            The trigger event; must not be <code>null</code>.
-		 */
-		public void handleEvent(Event event) {
-			switch (event.detail) {
-			case SWT.TRAVERSE_ESCAPE:
-			case SWT.TRAVERSE_MNEMONIC:
-			case SWT.TRAVERSE_NONE:
-			case SWT.TRAVERSE_PAGE_NEXT:
-			case SWT.TRAVERSE_PAGE_PREVIOUS:
-			case SWT.TRAVERSE_RETURN:
-				event.type = SWT.None;
-				event.doit = false;
-				break;
-
-			case SWT.TRAVERSE_TAB_NEXT:
-			case SWT.TRAVERSE_TAB_PREVIOUS:
-				// Check if modifiers other than just 'Shift' were
-				// down.
-				if ((event.stateMask & (SWT.MODIFIER_MASK ^ SWT.SHIFT)) != 0) {
-					// Modifiers other than shift were down.
-					event.type = SWT.None;
-					event.doit = false;
-					break;
-				}
-
-				// fall through -- either no modifiers, or just shift.
-
-			case SWT.TRAVERSE_ARROW_NEXT:
-			case SWT.TRAVERSE_ARROW_PREVIOUS:
-			default:
-				// Let the traversal happen, but clear the incomplete
-				// stroke
-				if (hasIncompleteStroke()) {
-					final KeyStroke[] oldKeyStrokes = getKeySequence()
-							.getKeyStrokes();
-					final int newKeyStrokesLength = oldKeyStrokes.length - 1;
-					if (newKeyStrokesLength >= 1) {
-						final KeyStroke[] newKeyStrokes = new KeyStroke[newKeyStrokesLength];
-						System.arraycopy(oldKeyStrokes, 0, newKeyStrokes, 0,
-								newKeyStrokesLength);
-						setKeySequence(KeySequence.getInstance(newKeyStrokes));
-					} else {
-						setKeySequence(KeySequence.getInstance());
-					}
-				}
-			}
-
-		}
-	}
-
-	/**
-	 * The manager resposible for installing and removing the traversal filter
-	 * when the key sequence entry widget gains and loses focus.
-	 */
-	private class TraversalFilterManager implements FocusListener {
-		/** The managed filter. We only need one instance. */
-		private TraversalFilter filter = new TraversalFilter();
-		
-		private boolean filtering = false;
-
-		/**
-		 * Attaches the global traversal filter.
-		 * 
-		 * @param event
-		 *            Ignored.
-		 */
-		public void focusGained(FocusEvent event) {
-			Display.getCurrent().addFilter(SWT.Traverse, filter);
-			filtering = true;
-		}
-
-		/**
-		 * Detaches the global traversal filter.
-		 * 
-		 * @param event
-		 *            Ignored.
-		 */
-		public void focusLost(FocusEvent event) {
-			Display.getCurrent().removeFilter(SWT.Traverse, filter);
-			filtering = false;
-		}
-		
-		/**
-		 * Remove the traverse filter if we close without focusOut.
-		 */
-		public void dispose() {
-			if (filtering) {
-				Display.getCurrent().removeFilter(SWT.Traverse, filter);
-			}
-		}
-	}
-
-	/**
-	 * A modification listener that makes sure that external events to this
-	 * class (i.e., direct modification of the underlying text) do not break
-	 * this class' view of the world.
-	 */
-	private class UpdateSequenceListener implements ModifyListener {
-		/**
-		 * Handles the modify event on the underlying text widget.
-		 * 
-		 * @param event
-		 *            The triggering event; ignored.
-		 */
-		public void modifyText(ModifyEvent event) {
-			try {
-				// The original sequence.
-				KeySequence originalSequence = getKeySequence();
-
-				// The new sequence drawn from the text.
-				String contents = getText();
-				KeySequence newSequence = KeySequence.getInstance(contents);
-
-				// Check to see if they're the same.
-				if (!originalSequence.equals(newSequence)) {
-					setKeySequence(newSequence);
-				}
-
-			} catch (ParseException e) {
-				// Abort any cut/paste-driven modifications
-				setKeySequence(getKeySequence());
-			}
-		}
-	}
-
-	static {
-		TreeSet trappedKeys = new TreeSet();
-		trappedKeys.add(SWTKeySupport.convertAcceleratorToKeyStroke(SWT.TAB));
-		trappedKeys.add(SWTKeySupport.convertAcceleratorToKeyStroke(SWT.TAB
-				| SWT.SHIFT));
-		trappedKeys.add(SWTKeySupport.convertAcceleratorToKeyStroke(SWT.BS));
-		List trappedKeyList = new ArrayList(trappedKeys);
-		TRAPPED_KEYS = Collections.unmodifiableList(trappedKeyList);
-	}
-
-	/** An empty string instance for use in clearing text values. */
-	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
-	/**
-	 * The special integer value for the maximum number of strokes indicating
-	 * that an infinite number should be allowed.
-	 */
-	public static final int INFINITE = -1;
-
-	/**
-	 * The name of the property representing the current key sequence in this
-	 * key sequence widget.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String P_KEY_SEQUENCE = "org.eclipse.jface.bindings.keys.KeySequenceText.KeySequence"; //$NON-NLS-1$
-
-	/**
-	 * The keys trapped by this widget. This list is guaranteed to be roughly
-	 * accurate. Perfection is not possible, as SWT does not export traversal
-	 * keys as constants.
-	 */
-	public static final List TRAPPED_KEYS;
-
-	/**
-	 * The key filter attached to the underlying widget that traps key events.
-	 */
-	private final KeyTrapListener keyFilter = new KeyTrapListener();
-
-	/**
-	 * The text of the key sequence -- containing only the complete key strokes.
-	 */
-	private KeySequence keySequence = KeySequence.getInstance();
-
-	/**
-	 * Those listening to changes to the key sequence in this widget. This value
-	 * may be <code>null</code> if there are no listeners.
-	 */
-	private Collection listeners = null;
-
-	/** The maximum number of key strokes permitted in the sequence. */
-	private int maxStrokes = INFINITE;
-
-	/** The text widget that is wrapped for this class. */
-	private final Text text;
-
-	/**
-	 * The listener that makes sure that the text widget remains up-to-date with
-	 * regards to external modification of the text (e.g., cut & pasting).
-	 */
-	private final UpdateSequenceListener updateSequenceListener = new UpdateSequenceListener();
-
-	/**
-	 * Constructs an instance of <code>KeySequenceTextField</code> with the
-	 * text field to use. If the platform is carbon (MacOS X), then the font is
-	 * set to be the same font used to display accelerators in the menus.
-	 * 
-	 * @param wrappedText
-	 *            The text widget to wrap; must not be <code>null</code>.
-	 */
-	public KeySequenceText(Text wrappedText) {
-		text = wrappedText;
-
-		// Set the font if the platform is carbon.
-		if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			// Don't worry about this font name here; it is the official menu
-			// font and point size on the Mac.
-			final Font font = new Font(text.getDisplay(),
-					"Lucida Grande", 13, SWT.NORMAL); //$NON-NLS-1$
-			text.setFont(font);
-			text.addDisposeListener(new DisposeListener() {
-				public void widgetDisposed(DisposeEvent e) {
-					font.dispose();
-				}
-			});
-		}
-
-		// Add the key listener.
-		text.addListener(SWT.KeyUp, keyFilter);
-		text.addListener(SWT.KeyDown, keyFilter);
-
-		final TraversalFilterManager traversalFilterManager = new TraversalFilterManager();
-		text.addFocusListener(traversalFilterManager);
-		text.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				traversalFilterManager.dispose();
-			} 
-		});
-
-		// Add an internal modify listener.
-		text.addModifyListener(updateSequenceListener);
-	}
-
-	/**
-	 * Adds a property change listener to this key sequence widget. It will be
-	 * notified when the key sequence changes.
-	 * 
-	 * @param listener
-	 *            The listener to be notified when changes occur; must not be
-	 *            <code>null</code>.
-	 * @since 3.2
-	 */
-	public final void addPropertyChangeListener(
-			final IPropertyChangeListener listener) {
-		if (listener == null) {
-			return;
-		}
-
-		if (listeners == null) {
-			listeners = new ArrayList(1);
-		}
-
-		listeners.add(listener);
-	}
-
-	/**
-	 * Clears the text field and resets all the internal values.
-	 */
-	public void clear() {
-		final KeySequence oldKeySequence = keySequence;
-		keySequence = KeySequence.getInstance();
-		text.setText(EMPTY_STRING);
-		firePropertyChangeEvent(oldKeySequence);
-	}
-
-	/**
-	 * Removes the key strokes from the list corresponding the selection. If
-	 * <code>allowIncomplete</code>, then invalid key sequences will be
-	 * allowed (i.e., those with incomplete strokes in the non-terminal
-	 * position). Otherwise, incomplete strokes will be removed. This modifies
-	 * <code>keyStrokes</code> in place, and has no effect on the text widget
-	 * this class wraps.
-	 * 
-	 * @param keyStrokes
-	 *            The list of key strokes from which the selection should be
-	 *            removed; must not be <code>null</code>.
-	 * @param allowIncomplete
-	 *            Whether incomplete strokes should be allowed to exist in the
-	 *            list after the deletion.
-	 * @param deletedKeyStrokes
-	 *            The list of keystrokes that were deleted by this operation.
-	 *            Declared as final since it will hold a reference to the new
-	 *            keyStroke array that has deleted the selected keystrokes.
-	 * @return The index at which a subsequent insert should occur. This index
-	 *         only has meaning to the <code>insertStrokeAt</code> method.
-	 */
-	private final int deleteSelection(final KeyStroke[] keyStrokes,
-			final boolean allowIncomplete, final KeyStroke[][] deletedKeyStrokes) {
-		// Get the current selection.
-		Point selection = text.getSelection();
-		int start = selection.x;
-		int end = selection.y;
-
-		/*
-		 * Using the key sequence format method, discover the point at which
-		 * adding key strokes passes or equals the start of the selection. In
-		 * other words, find the first stroke that is part of the selection.
-		 * Keep track of the text range under which the stroke appears (i.e.,
-		 * startTextIndex->string.length() is the first selected stroke).
-		 */
-		String string = new String();
-		List currentStrokes = new ArrayList();
-		int startTextIndex = 0; // keeps track of the start of the stroke
-		final int keyStrokesLength = keyStrokes.length;
-		int i;
-		for (i = 0; (i < keyStrokesLength) && (string.length() < start); i++) {
-			startTextIndex = string.length();
-			currentStrokes.add(keyStrokes[i]);
-			string = KeySequence.getInstance(currentStrokes).format();
-		}
-
-		/*
-		 * If string.length() == start, then the cursor is positioned between
-		 * strokes (i.e., selection is outside of a stroke).
-		 */
-		int startStrokeIndex;
-		if (string.length() == start) {
-			startStrokeIndex = currentStrokes.size();
-		} else {
-			startStrokeIndex = currentStrokes.size() - 1;
-		}
-
-		/*
-		 * Check to see if the cursor is only positioned, rather than actually
-		 * selecting something. We only need to compute the end if there is a
-		 * selection.
-		 */
-		int endStrokeIndex;
-		if (start == end) {
-			// return the current keystrokes, nothing has to be deleted
-			deletedKeyStrokes[0] = keyStrokes;
-			return startStrokeIndex;
-		}
-
-		for (; (i < keyStrokesLength) && (string.length() < end); i++) {
-			currentStrokes.add(keyStrokes[i]);
-			string = KeySequence.getInstance(currentStrokes).format();
-		}
-		endStrokeIndex = currentStrokes.size() - 1;
-		if (endStrokeIndex < 0) {
-			endStrokeIndex = 0;
-		}
-
-		/*
-		 * Remove the strokes that are touched by the selection. Keep track of
-		 * the first stroke removed.
-		 */
-		final int newLength = keyStrokesLength
-				- (endStrokeIndex - startStrokeIndex + 1);
-		deletedKeyStrokes[0] = new KeyStroke[newLength];
-		final KeyStroke startStroke = keyStrokes[startStrokeIndex];
-		KeyStroke keyStrokeResult[] = new KeyStroke[newLength];
-		System.arraycopy(keyStrokes, 0, keyStrokeResult, 0, startStrokeIndex);
-		System.arraycopy(keyStrokes, endStrokeIndex + 1, keyStrokeResult,
-				startStrokeIndex, keyStrokesLength - endStrokeIndex - 1);
-		System.arraycopy(keyStrokeResult, 0, deletedKeyStrokes[0], 0, newLength);
-
-		/*
-		 * Allow the first stroke removed to be replaced by an incomplete
-		 * stroke.
-		 */
-		if (allowIncomplete) {
-			final int modifierKeys = startStroke.getModifierKeys();
-			KeyStroke incompleteStroke = KeyStroke.getInstance(modifierKeys,
-					KeyStroke.NO_KEY);
-			int incompleteStrokeLength = incompleteStroke.format().length();
-			if ((startTextIndex + incompleteStrokeLength) <= start) {
-				final KeyStroke[] added = new KeyStroke[newLength + 1];
-				System.arraycopy(deletedKeyStrokes[0], 0, added, 0,
-						startStrokeIndex);
-				added[startStrokeIndex] = incompleteStroke;
-				System.arraycopy(deletedKeyStrokes[0], startStrokeIndex, added,
-						startStrokeIndex + 1, newLength - startStrokeIndex);
-				deletedKeyStrokes[0] = added;
-			}
-		}
-
-		return startStrokeIndex;
-	}
-
-	/**
-	 * Fires a property change event to all of the listeners.
-	 * 
-	 * @param oldKeySequence
-	 *            The old key sequence; must not be <code>null</code>.
-	 * @since 3.2
-	 */
-	protected final void firePropertyChangeEvent(
-			final KeySequence oldKeySequence) {
-		if (listeners != null) {
-			final Iterator listenerItr = listeners.iterator();
-			final PropertyChangeEvent event = new PropertyChangeEvent(this,
-					P_KEY_SEQUENCE, oldKeySequence, getKeySequence());
-			while (listenerItr.hasNext()) {
-				final IPropertyChangeListener listener = (IPropertyChangeListener) listenerItr
-						.next();
-				listener.propertyChange(event);
-			}
-		}
-	}
-
-	/**
-	 * An accessor for the <code>KeySequence</code> that corresponds to the
-	 * current state of the text field. This includes incomplete strokes.
-	 * 
-	 * @return The key sequence representation; never <code>null</code>.
-	 */
-	public KeySequence getKeySequence() {
-		return keySequence;
-	}
-
-	/**
-	 * An accessor for the underlying text widget's contents.
-	 * 
-	 * @return The text contents of this entry; never <code>null</code>.
-	 */
-	private String getText() {
-		return text.getText();
-	}
-
-	/**
-	 * Tests whether the current key sequence has a stroke with no natural key.
-	 * 
-	 * @return <code>true</code> is there is an incomplete stroke;
-	 *         <code>false</code> otherwise.
-	 */
-	private boolean hasIncompleteStroke() {
-		return !keySequence.isComplete();
-	}
-
-	/**
-	 * Tests whether the current text widget has some text selection.
-	 * 
-	 * @return <code>true</code> if the number of selected characters it
-	 *         greater than zero; <code>false</code> otherwise.
-	 */
-	private boolean hasSelection() {
-		return (text.getSelectionCount() > 0);
-	}
-
-	/**
-	 * Inserts the key stroke at the current insertion point. This does a
-	 * regular delete and insert, as if the key had been pressed.
-	 * 
-	 * @param stroke
-	 *            The key stroke to insert; must not be <code>null</code>.
-	 */
-	public void insert(KeyStroke stroke) {
-		if (!stroke.isComplete()) {
-			return;
-		}
-
-		// Copy the key strokes in the current key sequence.
-		final KeySequence keySequence = getKeySequence();
-		final KeyStroke[] oldKeyStrokes = keySequence.getKeyStrokes();
-		final KeyStroke[] newKeyStrokes;
-		if ((hasIncompleteStroke()) && (!keySequence.isEmpty())) {
-			final int newKeyStrokesLength = oldKeyStrokes.length - 1;
-			newKeyStrokes = new KeyStroke[newKeyStrokesLength];
-			System.arraycopy(oldKeyStrokes, 0, newKeyStrokes, 0,
-					newKeyStrokesLength);
-		} else {
-			newKeyStrokes = oldKeyStrokes;
-		}
-
-		KeyStroke[][] deletedKeyStrokes = new KeyStroke[1][];
-		int index = deleteSelection(newKeyStrokes, false, deletedKeyStrokes);
-		if (index == -1) {
-			index = 0;
-		}
-
-		final KeyStroke[] keyStrokes = insertStrokeAt(newKeyStrokes, stroke, index);
-		keyFilter.clearInsertionIndex();
-		setKeySequence(KeySequence.getInstance(keyStrokes));
-	}
-
-	/**
-	 * Inserts the stroke at the given index in the list of strokes. If the
-	 * stroke currently at that index is incomplete, then it tries to merge the
-	 * two strokes. If merging is a complete failure (unlikely), then it will
-	 * simply overwrite the incomplete stroke. If the stroke at the index is
-	 * complete, then it simply inserts the stroke independently.
-	 * 
-	 * @param keyStrokes
-	 *            The list of key strokes in which the key stroke should be
-	 *            appended; must not be <code>null</code>.
-	 * @param stroke
-	 *            The stroke to insert; should not be <code>null</code>.
-	 * @param index
-	 *            The index at which to insert; must be a valid index into the
-	 *            list of key strokes.
-	 */
-	private final KeyStroke[] insertStrokeAt(final KeyStroke[] keyStrokes,
-			KeyStroke stroke, int index) {
-		final int keyStrokesLength = keyStrokes.length;
-		final KeyStroke currentStroke = (index >= keyStrokesLength) ? null
-				: keyStrokes[index];
-		if ((currentStroke != null) && (!currentStroke.isComplete())) {
-			int modifierKeys = currentStroke.getModifierKeys();
-			final int naturalKey = stroke.getNaturalKey();
-			modifierKeys |= stroke.getModifierKeys();
-			keyStrokes[index] = KeyStroke.getInstance(modifierKeys, naturalKey);
-			return keyStrokes;
-		}
-
-		final KeyStroke[] newKeyStrokes = new KeyStroke[keyStrokesLength + 1];
-		System.arraycopy(keyStrokes, 0, newKeyStrokes, 0, index);
-		newKeyStrokes[index] = stroke;
-		if (index < keyStrokesLength) {
-			System.arraycopy(keyStrokes, index, newKeyStrokes, index + 1,
-					keyStrokesLength-index);
-		}
-		return newKeyStrokes;
-	}
-
-	/**
-	 * Tests whether the cursor is in the last position. This means that the
-	 * selection extends to the last position.
-	 * 
-	 * @return <code>true</code> if the selection extends to the last
-	 *         position; <code>false</code> otherwise.
-	 */
-	private boolean isCursorInLastPosition() {
-		return (text.getSelection().y >= getText().length());
-	}
-
-	/**
-	 * Removes the given listener from this key sequence widget.
-	 * 
-	 * @param listener
-	 *            The listener to be removed; must not be <code>null</code>.
-	 * @since 3.2
-	 */
-	public final void removePropertyChangeListener(
-			final IPropertyChangeListener listener) {
-		if ((listener == null) || (listeners == null)) {
-			return;
-		}
-
-		listeners.remove(listener);
-	}
-
-	/**
-	 * <p>
-	 * A mutator for the key sequence stored within this widget. The text and
-	 * caret position are updated.
-	 * </p>
-	 * <p>
-	 * All sequences are limited to maxStrokes number of strokes in length. If
-	 * there are already that number of strokes, then it does not show
-	 * incomplete strokes, and does not keep track of them.
-	 * </p>
-	 * 
-	 * @param newKeySequence
-	 *            The new key sequence for this widget; may be <code>null</code>
-	 *            if none.
-	 */
-	public void setKeySequence(KeySequence newKeySequence) {
-		final KeySequence oldKeySequence = keySequence;
-
-		if (newKeySequence == null) {
-			text.setText(""); //$NON-NLS-1$
-		} else {
-			keySequence = newKeySequence;			
-		}
-		
-		// Trim any extra strokes.
-		if (maxStrokes != INFINITE) {
-			final KeyStroke[] oldKeyStrokes = keySequence.getKeyStrokes();
-			if (maxStrokes < oldKeyStrokes.length) {
-				final KeyStroke[] newKeyStrokes = new KeyStroke[maxStrokes];
-				System
-						.arraycopy(oldKeyStrokes, 0, newKeyStrokes, 0,
-								maxStrokes);
-				keySequence = KeySequence.getInstance(newKeyStrokes);
-			}
-		}
-
-		// Check to see if the text has changed.
-		String currentString = getText();
-		String newString = keySequence.format();
-		if (!currentString.equals(newString)) {
-			// We need to update the text
-			text.removeModifyListener(updateSequenceListener);
-			text.setText(keySequence.format());
-			text.addModifyListener(updateSequenceListener);
-			text.setSelection(getText().length());
-		}
-
-		firePropertyChangeEvent(oldKeySequence);
-	}
-
-	/**
-	 * Returns the maximum number of strokes that are permitted in this widget
-	 * at one time.
-	 * 
-	 * @return The maximum number of strokes; will be a positive integer or
-	 *         <code>INFINITE</code>.
-	 */
-	public int getKeyStrokeLimit() {
-		return maxStrokes;
-	}
-
-	/**
-	 * A mutator for the maximum number of strokes that are permitted in this
-	 * widget at one time.
-	 * 
-	 * @param keyStrokeLimit
-	 *            The maximum number of strokes; must be a positive integer or
-	 *            <code>INFINITE</code>.
-	 */
-	public void setKeyStrokeLimit(int keyStrokeLimit) {
-		if (keyStrokeLimit > 0 || keyStrokeLimit == INFINITE) {
-			this.maxStrokes = keyStrokeLimit;
-		} else {
-			throw new IllegalArgumentException();
-		}
-
-		// Make sure we are obeying the new limit.
-		setKeySequence(getKeySequence());
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyStroke.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyStroke.java
deleted file mode 100644
index f5e6451..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/KeyStroke.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.bindings.Trigger;
-import org.eclipse.jface.bindings.keys.formatting.KeyFormatterFactory;
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * A <code>KeyStroke</code> is defined as an optional set of modifier keys
- * followed optionally by a natural key. A <code>KeyStroke</code> is said to
- * be complete if it contains a natural key. A natural key is any Unicode
- * character (e.g., "backspace", etc.), any character belonging to a natural
- * language (e.g., "A", "1", "[", etc.), or any special control character
- * specific to computers (e.g., "F10", "PageUp", etc.).
- * </p>
- * <p>
- * All <code>KeyStroke</code> objects have a formal string representation
- * available via the <code>toString()</code> method. There are a number of
- * methods to get instances of <code>KeyStroke</code> objects, including one
- * which can parse this formal string representation.
- * </p>
- * <p>
- * All <code>KeyStroke</code> objects, via the <code>format()</code> method,
- * provide a version of their formal string representation translated by
- * platform and locale, suitable for display to a user.
- * </p>
- * <p>
- * <code>KeyStroke</code> objects are immutable. Clients are not permitted to
- * extend this class.
- * </p>
- * 
- * @since 3.1
- */
-public final class KeyStroke extends Trigger implements Comparable {
-
-	/**
-	 * The delimiter between multiple keys in a single key strokes -- expressed
-	 * in the formal key stroke grammar. This is not to be displayed to the
-	 * user. It is only intended as an internal representation.
-	 */
-	public static final String KEY_DELIMITER = "\u002B"; //$NON-NLS-1$
-
-	/**
-	 * The set of delimiters for <code>Key</code> objects allowed during
-	 * parsing of the formal string representation.
-	 */
-	public static final String KEY_DELIMITERS = KEY_DELIMITER;
-
-	/**
-	 * The representation for no key.
-	 */
-	public static final int NO_KEY = 0;
-
-	/**
-	 * Creates an instance of <code>KeyStroke</code> given a natural key.
-	 * 
-	 * @param naturalKey
-	 *            the natural key. The format of this integer is defined by
-	 *            whichever widget toolkit you are using; <code>NO_KEY</code>
-	 *            always means no natural key.
-	 * @return a key stroke. This key stroke will have no modifier keys.
-	 *         Guaranteed not to be <code>null</code>.
-	 * @see SWTKeySupport
-	 */
-	public static final KeyStroke getInstance(final int naturalKey) {
-		return new KeyStroke(NO_KEY, naturalKey);
-	}
-
-	/**
-	 * Creates an instance of <code>KeyStroke</code> given a set of modifier keys
-	 * and a natural key.
-	 * 
-	 * @param modifierKeys
-	 *            the modifier keys. The format of this integer is defined by
-	 *            whichever widget toolkit you are using; <code>NO_KEY</code>
-	 *            always means no modifier keys.
-	 * @param naturalKey
-	 *            the natural key. The format of this integer is defined by
-	 *            whichever widget toolkit you are using; <code>NO_KEY</code>
-	 *            always means no natural key.
-	 * @return a key stroke. Guaranteed not to be <code>null</code>.
-	 * @see SWTKeySupport
-	 */
-	public static final KeyStroke getInstance(final int modifierKeys,
-			final int naturalKey) {
-		return new KeyStroke(modifierKeys, naturalKey);
-	}
-
-	/**
-	 * Creates an instance of <code>KeyStroke</code> by parsing a given a formal
-	 * string representation.
-	 * 
-	 * @param string
-	 *            the formal string representation to parse.
-	 * @return a key stroke. Guaranteed not to be <code>null</code>.
-	 * @throws ParseException
-	 *             if the given formal string representation could not be parsed
-	 *             to a valid key stroke.
-	 */
-	public static final KeyStroke getInstance(final String string)
-			throws ParseException {
-		if (string == null) {
-			throw new NullPointerException("Cannot parse a null string"); //$NON-NLS-1$
-		}
-
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		int modifierKeys = NO_KEY;
-		int naturalKey = NO_KEY;
-		final StringTokenizer stringTokenizer = new StringTokenizer(string,
-				KEY_DELIMITERS, true);
-		int i = 0;
-
-		while (stringTokenizer.hasMoreTokens()) {
-			String token = stringTokenizer.nextToken();
-
-			if (i % 2 == 0) {
-				if (stringTokenizer.hasMoreTokens()) {
-					token = token.toUpperCase();
-					final int modifierKey = lookup.formalModifierLookup(token);
-					if (modifierKey == NO_KEY) {
-						throw new ParseException(
-								"Cannot create key stroke with duplicate or non-existent modifier key: " //$NON-NLS-1$
-										+ token);
-					}
-
-					modifierKeys |= modifierKey;
-
-				} else if (token.length() == 1) {
-					naturalKey = token.charAt(0);
-
-				} else {
-					token = token.toUpperCase();
-					naturalKey = lookup.formalKeyLookup(token);
-				}
-			}
-
-			i++;
-		}
-
-		return new KeyStroke(modifierKeys, naturalKey);
-	}
-
-	/**
-	 * An integer representation of the modifier keys; <code>NO_KEY</code>
-	 * means that there is no modifier key.
-	 */
-	private final int modifierKeys;
-
-	/**
-	 * The natural key for this key stroke. This value is <code>NO_KEY</code>
-	 * if the key stroke is incomplete (i.e., has no natural key).
-	 */
-	private final int naturalKey;
-
-	/**
-	 * Constructs an instance of <code>KeyStroke</code> given a set of
-	 * modifier keys and a natural key.
-	 * 
-	 * @param modifierKeys
-	 *            the modifier keys. The format of this integer is defined by
-	 *            whichever widget toolkit you are using; <code>NO_KEY</code>
-	 *            always means no modifier keys.
-	 * @param naturalKey
-	 *            the natural key. The format of this integer is defined by
-	 *            whichever widget toolkit you are using; <code>NO_KEY</code>
-	 *            always means no natural key.
-	 * @see SWTKeySupport
-	 */
-	private KeyStroke(final int modifierKeys, final int naturalKey) {
-		this.modifierKeys = modifierKeys;
-		this.naturalKey = naturalKey;
-	}
-
-    /*
-     * (non-Javadoc)
-     * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public final int compareTo(final Object object) {
-		final KeyStroke keyStroke = (KeyStroke) object;
-		int compareTo = Util.compare(modifierKeys, keyStroke.modifierKeys);
-
-		if (compareTo == 0) {
-			compareTo = Util.compare(naturalKey, keyStroke.naturalKey);
-		}
-
-		return compareTo;
-	}
-
-    /*
-     * (non-Javadoc)
-     * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public final boolean equals(final Object object) {
-		if (!(object instanceof KeyStroke)) {
-			return false;
-		}
-
-		final KeyStroke keyStroke = (KeyStroke) object;
-		if (modifierKeys != keyStroke.modifierKeys) {
-			return false;
-		}
-
-		return (naturalKey == keyStroke.naturalKey);
-	}
-
-	/**
-	 * Formats this key stroke into the current default look.
-	 * 
-	 * @return A string representation for this key stroke using the default
-	 *         look; never <code>null</code>.
-	 */
-	public final String format() {
-		return KeyFormatterFactory.getDefault().format(this);
-	}
-
-	/**
-	 * Returns the modifier keys for this key stroke.
-	 * 
-	 * @return the bit mask of modifier keys; <code>NO_KEY</code> means that
-	 *         there is no modifier key.
-	 */
-	public final int getModifierKeys() {
-		return modifierKeys;
-	}
-
-	/**
-	 * Returns the natural key for this key stroke.
-	 * 
-	 * @return The natural key for this key stroke. This value is
-	 *         <code>NO_KEY</code> if the key stroke is incomplete (i.e., has
-	 *         no natural key).
-	 */
-	public final int getNaturalKey() {
-		return naturalKey;
-	}
-
-    /*
-     * (non-Javadoc)
-     * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public final int hashCode() {
-		return modifierKeys << 4 + naturalKey;
-	}
-
-	/**
-	 * Returns whether or not this key stroke is complete. Key strokes are
-	 * complete iff they have a natural key which is not <code>NO_KEY</code>.
-	 * 
-	 * @return <code>true</code>, iff the key stroke is complete.
-	 */
-	public final boolean isComplete() {
-		return (naturalKey != NO_KEY);
-	}
-
-	/**
-	 * Returns the formal string representation for this key stroke.
-	 * 
-	 * @return The formal string representation for this key stroke. Guaranteed
-	 *         not to be <code>null</code>.
-	 * @see java.lang.Object#toString()
-	 */
-	public final String toString() {
-		return KeyFormatterFactory.getFormalKeyFormatter().format(this);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/ParseException.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/ParseException.java
deleted file mode 100644
index 920ed15..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/ParseException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys;
-
-/**
- * <p>
- * An exception indicating problems while parsing formal string representations
- * of either <code>KeyStroke</code> or <code>KeySequence</code> objects.
- * </p>
- * <p>
- * <code>ParseException</code> objects are immutable. Clients are not
- * permitted to extend this class.
- * </p>
- * 
- * @since 3.1
- */
-public final class ParseException extends Exception {
-
-    /**
-     * Generated serial version UID for this class.
-     * 
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3257009864814376241L;
-
-    /**
-     * Constructs a <code>ParseException</code> with the specified detail
-     * message.
-     * 
-     * @param s
-     *            the detail message.
-     */
-    public ParseException(final String s) {
-        super(s);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java
deleted file mode 100644
index 171f0af..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeyLookup.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.bindings.keys;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.SWT;
-
-/**
- * <p>
- * A look-up table for the formal grammar for keys, and the integer values they
- * represent. This look-up table is hard-coded to use SWT representations. By
- * replacing this class (and
- * {@link org.eclipse.jface.bindings.keys.SWTKeySupport}), you can remove the
- * dependency on SWT.
- * </p>
- * 
- * @since 3.1
- * @see org.eclipse.jface.bindings.keys.KeyLookupFactory
- */
-public final class SWTKeyLookup implements IKeyLookup {
-
-	/**
-	 * The look-up table for modifier keys. This is a map of formal name (<code>String</code>)
-	 * to integer value (<code>Integer</code>).
-	 */
-	private final Map modifierKeyTable = new HashMap();
-
-	/**
-	 * The look-up table for formal names. This is a map of integer value (<code>Integer</code>)
-	 * to formal name (<code>String</code>).
-	 */
-	private final Map nameTable = new HashMap();
-
-	/**
-	 * The look-up table for natural keys. This is a map of formal name (<code>String</code>)
-	 * to integer value (<code>Integer</code>).
-	 */
-	private final Map naturalKeyTable = new HashMap();
-
-	/**
-	 * Constructs a new look-up class. This should only be done by the look-up
-	 * factory.
-	 * 
-	 * @see KeyLookupFactory
-	 */
-	SWTKeyLookup() {
-		final Integer alt = new Integer(SWT.ALT);
-		final Integer command = new Integer(SWT.COMMAND);
-		final Integer ctrl = new Integer(SWT.CTRL);
-		final Integer shift = new Integer(SWT.SHIFT);
-		modifierKeyTable.put(ALT_NAME, alt);
-		nameTable.put(alt, ALT_NAME);
-		modifierKeyTable.put(COMMAND_NAME, command);
-		nameTable.put(command, COMMAND_NAME);
-		modifierKeyTable.put(CTRL_NAME, ctrl);
-		nameTable.put(ctrl, CTRL_NAME);
-		modifierKeyTable.put(SHIFT_NAME, shift);
-		nameTable.put(shift, SHIFT_NAME);
-		modifierKeyTable.put(M1_NAME,
-				"carbon".equals(SWT.getPlatform()) ? command : ctrl); //$NON-NLS-1$
-		modifierKeyTable.put(M2_NAME, shift);
-		modifierKeyTable.put(M3_NAME, alt);
-		modifierKeyTable.put(M4_NAME, "carbon".equals(SWT.getPlatform()) ? ctrl //$NON-NLS-1$
-				: command);
-
-		final Integer arrowDown = new Integer(SWT.ARROW_DOWN);
-		naturalKeyTable.put(ARROW_DOWN_NAME, arrowDown);
-		nameTable.put(arrowDown, ARROW_DOWN_NAME);
-		final Integer arrowLeft = new Integer(SWT.ARROW_LEFT);
-		naturalKeyTable.put(ARROW_LEFT_NAME, arrowLeft);
-		nameTable.put(arrowLeft, ARROW_LEFT_NAME);
-		final Integer arrowRight = new Integer(SWT.ARROW_RIGHT);
-		naturalKeyTable.put(ARROW_RIGHT_NAME, arrowRight);
-		nameTable.put(arrowRight, ARROW_RIGHT_NAME);
-		final Integer arrowUp = new Integer(SWT.ARROW_UP);
-		naturalKeyTable.put(ARROW_UP_NAME, arrowUp);
-		nameTable.put(arrowUp, ARROW_UP_NAME);
-		final Integer breakKey = new Integer(SWT.BREAK);
-		naturalKeyTable.put(BREAK_NAME, breakKey);
-		nameTable.put(breakKey, BREAK_NAME);
-		final Integer bs = new Integer(SWT.BS);
-		naturalKeyTable.put(BS_NAME, bs);
-		nameTable.put(bs, BS_NAME);
-		naturalKeyTable.put(BACKSPACE_NAME, bs);
-		final Integer capsLock = new Integer(SWT.CAPS_LOCK);
-		naturalKeyTable.put(CAPS_LOCK_NAME, capsLock);
-		nameTable.put(capsLock, CAPS_LOCK_NAME);
-		final Integer cr = new Integer(SWT.CR);
-		naturalKeyTable.put(CR_NAME, cr);
-		nameTable.put(cr, CR_NAME);
-		naturalKeyTable.put(ENTER_NAME, cr);
-		naturalKeyTable.put(RETURN_NAME, cr);
-		final Integer del = new Integer(SWT.DEL);
-		naturalKeyTable.put(DEL_NAME, del);
-		nameTable.put(del, DEL_NAME);
-		naturalKeyTable.put(DELETE_NAME, del);
-		final Integer end = new Integer(SWT.END);
-		naturalKeyTable.put(END_NAME, end);
-		nameTable.put(end, END_NAME);
-		final Integer esc = new Integer(SWT.ESC);
-		naturalKeyTable.put(ESC_NAME, esc);
-		nameTable.put(esc, ESC_NAME);
-		naturalKeyTable.put(ESCAPE_NAME, esc);
-		final Integer f1 = new Integer(SWT.F1);
-		naturalKeyTable.put(F1_NAME, f1);
-		nameTable.put(f1, F1_NAME);
-		final Integer f2 = new Integer(SWT.F2);
-		naturalKeyTable.put(F2_NAME, new Integer(SWT.F2));
-		nameTable.put(f2, F2_NAME);
-		final Integer f3 = new Integer(SWT.F3);
-		naturalKeyTable.put(F3_NAME, new Integer(SWT.F3));
-		nameTable.put(f3, F3_NAME);
-		final Integer f4 = new Integer(SWT.F4);
-		naturalKeyTable.put(F4_NAME, new Integer(SWT.F4));
-		nameTable.put(f4, F4_NAME);
-		final Integer f5 = new Integer(SWT.F5);
-		naturalKeyTable.put(F5_NAME, new Integer(SWT.F5));
-		nameTable.put(f5, F5_NAME);
-		final Integer f6 = new Integer(SWT.F6);
-		naturalKeyTable.put(F6_NAME, new Integer(SWT.F6));
-		nameTable.put(f6, F6_NAME);
-		final Integer f7 = new Integer(SWT.F7);
-		naturalKeyTable.put(F7_NAME, new Integer(SWT.F7));
-		nameTable.put(f7, F7_NAME);
-		final Integer f8 = new Integer(SWT.F8);
-		naturalKeyTable.put(F8_NAME, new Integer(SWT.F8));
-		nameTable.put(f8, F8_NAME);
-		final Integer f9 = new Integer(SWT.F9);
-		naturalKeyTable.put(F9_NAME, new Integer(SWT.F9));
-		nameTable.put(f9, F9_NAME);
-		final Integer f10 = new Integer(SWT.F10);
-		naturalKeyTable.put(F10_NAME, new Integer(SWT.F10));
-		nameTable.put(f10, F10_NAME);
-		final Integer f11 = new Integer(SWT.F11);
-		naturalKeyTable.put(F11_NAME, new Integer(SWT.F11));
-		nameTable.put(f11, F11_NAME);
-		final Integer f12 = new Integer(SWT.F12);
-		naturalKeyTable.put(F12_NAME, new Integer(SWT.F12));
-		nameTable.put(f12, F12_NAME);
-		final Integer f13 = new Integer(SWT.F13);
-		naturalKeyTable.put(F13_NAME, new Integer(SWT.F13));
-		nameTable.put(f13, F13_NAME);
-		final Integer f14 = new Integer(SWT.F14);
-		naturalKeyTable.put(F14_NAME, new Integer(SWT.F14));
-		nameTable.put(f14, F14_NAME);
-		final Integer f15 = new Integer(SWT.F15);
-		naturalKeyTable.put(F15_NAME, new Integer(SWT.F15));
-		nameTable.put(f15, F15_NAME);
-		final Integer ff = new Integer(12); // ASCII 0x0C
-		naturalKeyTable.put(FF_NAME, ff);
-		nameTable.put(ff, FF_NAME);
-		final Integer home = new Integer(SWT.HOME);
-		naturalKeyTable.put(HOME_NAME, home);
-		nameTable.put(home, HOME_NAME);
-		final Integer insert = new Integer(SWT.INSERT);
-		naturalKeyTable.put(INSERT_NAME, insert);
-		nameTable.put(insert, INSERT_NAME);
-		final Integer lf = new Integer(SWT.LF);
-		naturalKeyTable.put(LF_NAME, lf);
-		nameTable.put(lf, LF_NAME);
-		final Integer nul = new Integer(SWT.NULL);
-		naturalKeyTable.put(NUL_NAME, nul);
-		nameTable.put(nul, NUL_NAME);
-		final Integer numLock = new Integer(SWT.NUM_LOCK);
-		naturalKeyTable.put(NUM_LOCK_NAME, numLock);
-		nameTable.put(numLock, NUM_LOCK_NAME);
-		final Integer keypad0 = new Integer(SWT.KEYPAD_0);
-		naturalKeyTable.put(NUMPAD_0_NAME, keypad0);
-		nameTable.put(keypad0, NUMPAD_0_NAME);
-		final Integer keypad1 = new Integer(SWT.KEYPAD_1);
-		naturalKeyTable.put(NUMPAD_1_NAME, keypad1);
-		nameTable.put(keypad1, NUMPAD_1_NAME);
-		final Integer keypad2 = new Integer(SWT.KEYPAD_2);
-		naturalKeyTable.put(NUMPAD_2_NAME, keypad2);
-		nameTable.put(keypad2, NUMPAD_2_NAME);
-		final Integer keypad3 = new Integer(SWT.KEYPAD_3);
-		naturalKeyTable.put(NUMPAD_3_NAME, keypad3);
-		nameTable.put(keypad3, NUMPAD_3_NAME);
-		final Integer keypad4 = new Integer(SWT.KEYPAD_4);
-		naturalKeyTable.put(NUMPAD_4_NAME, keypad4);
-		nameTable.put(keypad4, NUMPAD_4_NAME);
-		final Integer keypad5 = new Integer(SWT.KEYPAD_5);
-		naturalKeyTable.put(NUMPAD_5_NAME, keypad5);
-		nameTable.put(keypad5, NUMPAD_5_NAME);
-		final Integer keypad6 = new Integer(SWT.KEYPAD_6);
-		naturalKeyTable.put(NUMPAD_6_NAME, keypad6);
-		nameTable.put(keypad6, NUMPAD_6_NAME);
-		final Integer keypad7 = new Integer(SWT.KEYPAD_7);
-		naturalKeyTable.put(NUMPAD_7_NAME, keypad7);
-		nameTable.put(keypad7, NUMPAD_7_NAME);
-		final Integer keypad8 = new Integer(SWT.KEYPAD_8);
-		naturalKeyTable.put(NUMPAD_8_NAME, keypad8);
-		nameTable.put(keypad8, NUMPAD_8_NAME);
-		final Integer keypad9 = new Integer(SWT.KEYPAD_9);
-		naturalKeyTable.put(NUMPAD_9_NAME, keypad9);
-		nameTable.put(keypad9, NUMPAD_9_NAME);
-		final Integer keypadAdd = new Integer(SWT.KEYPAD_ADD);
-		naturalKeyTable.put(NUMPAD_ADD_NAME, keypadAdd);
-		nameTable.put(keypadAdd, NUMPAD_ADD_NAME);
-		final Integer keypadDecimal = new Integer(SWT.KEYPAD_DECIMAL);
-		naturalKeyTable.put(NUMPAD_DECIMAL_NAME, keypadDecimal);
-		nameTable.put(keypadDecimal, NUMPAD_DECIMAL_NAME);
-		final Integer keypadDivide = new Integer(SWT.KEYPAD_DIVIDE);
-		naturalKeyTable.put(NUMPAD_DIVIDE_NAME, keypadDivide);
-		nameTable.put(keypadDivide, NUMPAD_DIVIDE_NAME);
-		final Integer keypadCr = new Integer(SWT.KEYPAD_CR);
-		naturalKeyTable.put(NUMPAD_ENTER_NAME, keypadCr);
-		nameTable.put(keypadCr, NUMPAD_ENTER_NAME);
-		final Integer keypadEqual = new Integer(SWT.KEYPAD_EQUAL);
-		naturalKeyTable.put(NUMPAD_EQUAL_NAME, keypadEqual);
-		nameTable.put(keypadEqual, NUMPAD_EQUAL_NAME);
-		final Integer keypadMultiply = new Integer(SWT.KEYPAD_MULTIPLY);
-		naturalKeyTable.put(NUMPAD_MULTIPLY_NAME, keypadMultiply);
-		nameTable.put(keypadMultiply, NUMPAD_MULTIPLY_NAME);
-		final Integer keypadSubtract = new Integer(SWT.KEYPAD_SUBTRACT);
-		naturalKeyTable.put(NUMPAD_SUBTRACT_NAME, keypadSubtract);
-		nameTable.put(keypadSubtract, NUMPAD_SUBTRACT_NAME);
-		final Integer pageDown = new Integer(SWT.PAGE_DOWN);
-		naturalKeyTable.put(PAGE_DOWN_NAME, pageDown);
-		nameTable.put(pageDown, PAGE_DOWN_NAME);
-		final Integer pageUp = new Integer(SWT.PAGE_UP);
-		naturalKeyTable.put(PAGE_UP_NAME, pageUp);
-		nameTable.put(pageUp, PAGE_UP_NAME);
-		final Integer pause = new Integer(SWT.PAUSE);
-		naturalKeyTable.put(PAUSE_NAME, pause);
-		nameTable.put(pause, PAUSE_NAME);
-		final Integer printScreen = new Integer(SWT.PRINT_SCREEN);
-		naturalKeyTable.put(PRINT_SCREEN_NAME, printScreen);
-		nameTable.put(printScreen, PRINT_SCREEN_NAME);
-		final Integer scrollLock = new Integer(SWT.SCROLL_LOCK);
-		naturalKeyTable.put(SCROLL_LOCK_NAME, scrollLock);
-		nameTable.put(scrollLock, SCROLL_LOCK_NAME);
-		final Integer space = new Integer(' ');
-		naturalKeyTable.put(SPACE_NAME, space);
-		nameTable.put(space, SPACE_NAME);
-		final Integer tab = new Integer(SWT.TAB);
-		naturalKeyTable.put(TAB_NAME, tab);
-		nameTable.put(tab, TAB_NAME);
-		final Integer vt = new Integer(11); // ASCII 0x0B
-		naturalKeyTable.put(VT_NAME, vt);
-		nameTable.put(vt, VT_NAME);
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#formalKeyLookup(java.lang.String)
- 	 * 
-	 */	
-	public final int formalKeyLookup(final String name) {
-		final Object value = naturalKeyTable.get(name);
-		if (value instanceof Integer) {
-			return ((Integer) value).intValue();
-		}
-		
-		if (name.length() > 0) {
-			throw new IllegalArgumentException("Unrecognized formal key name: " //$NON-NLS-1$
-					+ name);
-		}
-
-		return name.charAt(0);
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#formalKeyLookupInteger(java.lang.String)
- 	 * 
-	 */	
-	public final Integer formalKeyLookupInteger(final String name) {
-		final Object value = naturalKeyTable.get(name);
-		if (value instanceof Integer) {
-			return (Integer) value;
-		}
-
-		return new Integer(name.charAt(0));
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#formalModifierLookup(java.lang.String)
- 	 * 
-	 */	
-	public final int formalModifierLookup(final String name) {
-		final Object value = modifierKeyTable.get(name);
-		if (value instanceof Integer) {
-			return ((Integer) value).intValue();
-		}
-
-		return 0;
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#formalNameLookup(int)
- 	 * 
-	 */	
-	public final String formalNameLookup(final int key) {
-		final Integer keyObject = new Integer(key);
-		final Object value = nameTable.get(keyObject);
-		if (value instanceof String) {
-			return (String) value;
-		}
-
-		return Util.ZERO_LENGTH_STRING + ((char) key);
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#getAlt()
- 	 * 
-	 */	
-	public final int getAlt() {
-		return SWT.ALT;
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#getCommand()
- 	 * 
-	 */	
-	public final int getCommand() {
-		return SWT.COMMAND;
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#getCtrl()
- 	 * 
-	 */	
-	public final int getCtrl() {
-		return SWT.CTRL;
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#getShift()
- 	 * 
-	 */	
-	public final int getShift() {
-		return SWT.SHIFT;
-	}
-
-	/*
-     * (non-Javadoc)
-     * 
- 	 * @see org.eclipse.jface.bindings.keys.IKeyLookup#isModifierKey(int)
- 	 * 
-	 */	
-	public final boolean isModifierKey(final int key) {
-		return ((key & SWT.MODIFIER_MASK) != 0);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeySupport.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeySupport.java
deleted file mode 100644
index c5429b9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/SWTKeySupport.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys;
-
-import org.eclipse.jface.bindings.keys.formatting.IKeyFormatter;
-import org.eclipse.jface.bindings.keys.formatting.NativeKeyFormatter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * <p>
- * A utility class for converting SWT events into key strokes.
- * </p>
- * 
- * @since 3.1
- */
-public final class SWTKeySupport {
-
-	/**
-	 * A formatter that displays key sequences in a style native to the
-	 * platform.
-	 */
-	private static final IKeyFormatter NATIVE_FORMATTER = new NativeKeyFormatter();
-
-	/**
-	 * Given an SWT accelerator value, provide the corresponding key stroke.
-	 * 
-	 * @param accelerator
-	 *            The accelerator to convert; should be a valid SWT accelerator
-	 *            value.
-	 * @return The equivalent key stroke; never <code>null</code>.
-	 */
-	public static final KeyStroke convertAcceleratorToKeyStroke(int accelerator) {
-		final int modifierKeys = accelerator & SWT.MODIFIER_MASK;
-		final int naturalKey;
-		if (accelerator == modifierKeys) {
-			naturalKey = KeyStroke.NO_KEY;
-		} else {
-			naturalKey = accelerator - modifierKeys;
-		}
-		
-		return KeyStroke.getInstance(modifierKeys, naturalKey);
-	}
-
-	/**
-	 * <p>
-	 * Converts the given event into an SWT accelerator value -- considering the
-	 * modified character with the shift modifier. This is the third accelerator
-	 * value that should be checked when processing incoming key events.
-	 * </p>
-	 * <p>
-	 * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-	 * "Ctrl+Shift+%".
-	 * </p>
-	 * 
-	 * @param event
-	 *            The event to be converted; must not be <code>null</code>.
-	 * @return The combination of the state mask and the unmodified character.
-	 */
-	public static final int convertEventToModifiedAccelerator(final Event event) {
-		int modifiers = event.stateMask & SWT.MODIFIER_MASK;
-		char character = topKey(event);
-		return modifiers + toUpperCase(character);
-	}
-
-	/**
-	 * <p>
-	 * Converts the given event into an SWT accelerator value -- considering the
-	 * unmodified character with all modifier keys. This is the first
-	 * accelerator value that should be checked when processing incoming key
-	 * events. However, all alphabetic characters are considered as their
-	 * uppercase equivalents.
-	 * </p>
-	 * <p>
-	 * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-	 * "Ctrl+Shift+5".
-	 * </p>
-	 * 
-	 * @param event
-	 *            The event to be converted; must not be <code>null</code>.
-	 * @return The combination of the state mask and the unmodified character.
-	 */
-	public static final int convertEventToUnmodifiedAccelerator(
-			final Event event) {
-		return convertEventToUnmodifiedAccelerator(event.stateMask,
-				event.keyCode);
-	}
-
-	/**
-	 * <p>
-	 * Converts the given state mask and key code into an SWT accelerator value --
-	 * considering the unmodified character with all modifier keys. All
-	 * alphabetic characters are considered as their uppercase equivalents.
-	 * </p>
-	 * <p>
-	 * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-	 * "Ctrl+Shift+5".
-	 * </p>
-	 * 
-	 * @param stateMask
-	 *            The integer mask of modifiers keys depressed when this was
-	 *            pressed.
-	 * @param keyCode
-	 *            The key that was pressed, before being modified.
-	 * @return The combination of the state mask and the unmodified character.
-	 */
-	private static final int convertEventToUnmodifiedAccelerator(
-			final int stateMask, final int keyCode) {
-		int modifiers = stateMask & SWT.MODIFIER_MASK;
-		int character = keyCode;
-		return modifiers + toUpperCase(character);
-	}
-
-	/**
-	 * <p>
-	 * Converts the given event into an SWT accelerator value -- considering the
-	 * unmodified character with all modifier keys. This is the first
-	 * accelerator value that should be checked. However, all alphabetic
-	 * characters are considered as their uppercase equivalents.
-	 * </p>
-	 * <p>
-	 * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-	 * "Ctrl+%".
-	 * </p>
-	 * 
-	 * @param event
-	 *            The event to be converted; must not be <code>null</code>.
-	 * @return The combination of the state mask and the unmodified character.
-	 */
-	public static final int convertEventToUnmodifiedAccelerator(
-			final KeyEvent event) {
-		return convertEventToUnmodifiedAccelerator(event.stateMask,
-				event.keyCode);
-	}
-
-	/**
-	 * Converts the given event into an SWT accelerator value -- considering the
-	 * modified character without the shift modifier. This is the second
-	 * accelerator value that should be checked when processing incoming key
-	 * events. Key strokes with alphabetic natural keys are run through
-	 * <code>convertEventToUnmodifiedAccelerator</code>.
-	 * 
-	 * @param event
-	 *            The event to be converted; must not be <code>null</code>.
-	 * @return The combination of the state mask without shift, and the modified
-	 *         character.
-	 */
-	public static final int convertEventToUnshiftedModifiedAccelerator(
-			final Event event) {
-		// Disregard alphabetic key strokes.
-		if (Character.isLetter((char) event.keyCode)) {
-			return convertEventToUnmodifiedAccelerator(event);
-		}
-
-		int modifiers = event.stateMask & (SWT.MODIFIER_MASK ^ SWT.SHIFT);
-		char character = topKey(event);
-		return modifiers + toUpperCase(character);
-	}
-
-	/**
-	 * Given a key stroke, this method provides the equivalent SWT accelerator
-	 * value. The functional inverse of
-	 * <code>convertAcceleratorToKeyStroke</code>.
-	 * 
-	 * @param keyStroke
-	 *            The key stroke to convert; must not be <code>null</code>.
-	 * @return The SWT accelerator value
-	 */
-	public static final int convertKeyStrokeToAccelerator(
-			final KeyStroke keyStroke) {
-		return keyStroke.getModifierKeys() + keyStroke.getNaturalKey();
-	}
-
-	/**
-	 * Provides an instance of <code>IKeyFormatter</code> appropriate for the
-	 * current instance.
-	 * 
-	 * @return an instance of <code>IKeyFormatter</code> appropriate for the
-	 *         current instance; never <code>null</code>.
-	 */
-	public static IKeyFormatter getKeyFormatterForPlatform() {
-		return NATIVE_FORMATTER;
-	}
-
-	/**
-	 * Makes sure that a fully-modified character is converted to the normal
-	 * form. This means that "Ctrl+" key strokes must reverse the modification
-	 * caused by control-escaping. Also, all lower case letters are converted to
-	 * uppercase.
-	 * 
-	 * @param event
-	 *            The event from which the fully-modified character should be
-	 *            pulled.
-	 * @return The modified character, uppercase and without control-escaping.
-	 */
-	private static final char topKey(final Event event) {
-		char character = event.character;
-		boolean ctrlDown = (event.stateMask & SWT.CTRL) != 0;
-
-		if (ctrlDown && event.character != event.keyCode
-				&& event.character < 0x20 
-				&& (event.keyCode & SWT.KEYCODE_BIT) == 0) {
-			character += 0x40;
-		}
-
-		return character;
-	}
-
-	/**
-	 * Makes the given character uppercase if it is a letter.
-	 * 
-	 * @param keyCode
-	 *            The character to convert.
-	 * @return The uppercase equivalent, if any; otherwise, the character
-	 *         itself.
-	 */
-	private static final int toUpperCase(int keyCode) {
-		// Will this key code be truncated?
-		if (keyCode > 0xFFFF) {
-			return keyCode;
-		}
-
-		// Downcast in safety. Only make characters uppercase.
-		final char character = (char) keyCode;
-		return Character.isLetter(character) ? Character.toUpperCase(character)
-				: keyCode;
-	}
-
-	/**
-	 * This class should never be instantiated.
-	 */
-	protected SWTKeySupport() {
-		// This class should never be instantiated.
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.java
deleted file mode 100644
index c609ec3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys.formatting;
-
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * An abstract implementation of a key formatter that provides a lot of common
- * key formatting functionality. It is recommended that implementations of
- * <code>IKeyFormatter</code> subclass from here, rather than implementing
- * <code>IKeyFormatter</code> directly.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class AbstractKeyFormatter implements IKeyFormatter {
-
-	/**
-	 * The key for the delimiter between keys. This is used in the
-	 * internationalization bundles.
-	 */
-	protected static final String KEY_DELIMITER_KEY = "KEY_DELIMITER"; //$NON-NLS-1$
-
-	/**
-	 * The key for the delimiter between key strokes. This is used in the
-	 * internationalization bundles.
-	 */
-	protected static final String KEY_STROKE_DELIMITER_KEY = "KEY_STROKE_DELIMITER"; //$NON-NLS-1$
-
-	/**
-	 * An empty integer array that can be used in
-	 * <code>sortModifierKeys(int)</code>.
-	 */
-	protected static final int[] NO_MODIFIER_KEYS = new int[0];
-
-	/**
-	 * The bundle in which to look up the internationalized text for all of the
-	 * individual keys in the system. This is the platform-agnostic version of
-	 * the internationalized strings. Some platforms (namely Carbon) provide
-	 * special Unicode characters and glyphs for some keys.
-	 */
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(AbstractKeyFormatter.class.getName());
-
-	/**
-	 * The keys in the resource bundle. This is used to avoid missing resource
-	 * exceptions when they aren't necessary.
-	 */
-	private static final Set resourceBundleKeys = new HashSet();
-
-	static {
-		final Enumeration keyEnumeration = RESOURCE_BUNDLE.getKeys();
-		while (keyEnumeration.hasMoreElements()) {
-			final Object element = keyEnumeration.nextElement();
-			resourceBundleKeys.add(element);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keysKeyFormatter#format(org.eclipse.jface.bindings.keys.KeySequence)
-	 */
-	public String format(final int key) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		final String name = lookup.formalNameLookup(key);
-
-		if (resourceBundleKeys.contains(name)) {
-			return Util.translateString(RESOURCE_BUNDLE, name, name);
-		}
-		
-		return name;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.KeyFormatter#format(org.eclipse.jface.bindings.keys.KeySequence)
-	 */
-	public String format(KeySequence keySequence) {
-		StringBuffer stringBuffer = new StringBuffer();
-
-		final KeyStroke[] keyStrokes = keySequence.getKeyStrokes();
-		final int keyStrokesLength = keyStrokes.length;
-		for (int i = 0; i < keyStrokesLength; i++) {
-			stringBuffer.append(format(keyStrokes[i]));
-
-			if (i + 1 < keyStrokesLength) {
-				stringBuffer.append(getKeyStrokeDelimiter());
-			}
-		}
-
-		return stringBuffer.toString();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.KeyFormatter#formatKeyStroke(org.eclipse.jface.bindings.keys.KeyStroke)
-	 */
-	public String format(final KeyStroke keyStroke) {
-		final String keyDelimiter = getKeyDelimiter();
-
-		// Format the modifier keys, in sorted order.
-		final int modifierKeys = keyStroke.getModifierKeys();
-		final int[] sortedModifierKeys = sortModifierKeys(modifierKeys);
-		final StringBuffer stringBuffer = new StringBuffer();
-		if (sortedModifierKeys != null) {
-			for (int i = 0; i < sortedModifierKeys.length; i++) {
-				final int modifierKey = sortedModifierKeys[i];
-				if (modifierKey != KeyStroke.NO_KEY) {
-					stringBuffer.append(format(modifierKey));
-					stringBuffer.append(keyDelimiter);
-				}
-			}
-		}
-
-		// Format the natural key, if any.
-		final int naturalKey = keyStroke.getNaturalKey();
-		if (naturalKey != 0) {
-			stringBuffer.append(format(naturalKey));
-		}
-
-		return stringBuffer.toString();
-
-	}
-
-	/**
-	 * An accessor for the delimiter you wish to use between keys. This is used
-	 * by the default format implementations to determine the key delimiter.
-	 * 
-	 * @return The delimiter to use between keys; should not be
-	 *         <code>null</code>.
-	 */
-	protected abstract String getKeyDelimiter();
-
-	/**
-	 * An accessor for the delimiter you wish to use between key strokes. This
-	 * used by the default format implementations to determine the key stroke
-	 * delimiter.
-	 * 
-	 * @return The delimiter to use between key strokes; should not be
-	 *         <code>null</code>.
-	 */
-	protected abstract String getKeyStrokeDelimiter();
-
-	/**
-	 * Separates the modifier keys from each other, and then places them in an
-	 * array in some sorted order. The sort order is dependent on the type of
-	 * formatter.
-	 * 
-	 * @param modifierKeys
-	 *            The modifier keys from the key stroke.
-	 * @return An array of modifier key values -- separated and sorted in some
-	 *         order. Any values in this array that are
-	 *         <code>KeyStroke.NO_KEY</code> should be ignored.
-	 */
-	protected abstract int[] sortModifierKeys(final int modifierKeys);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
deleted file mode 100644
index 1949c93..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/AbstractKeyFormatter.properties
+++ /dev/null
@@ -1,74 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# Modifier keys
-ALT=Alt
-COMMAND=Command
-CTRL=Ctrl
-SHIFT=Shift
-
-# Special keys
-ARROW_DOWN=Down
-ARROW_LEFT=Left
-ARROW_RIGHT=Right
-ARROW_UP=Up
-BREAK=Break
-CAPS_LOCK=CapsLock
-END=End
-F1=F1
-F10=F10
-F11=F11
-F12=F12
-F2=F2
-F3=F3
-F4=F4
-F5=F5
-F6=F6
-F7=F7
-F8=F8
-F9=F9
-HOME=Home
-INSERT=Insert
-NUM_LOCK=NumLock
-NUMPAD_0=Numpad_0
-NUMPAD_1=Numpad_1
-NUMPAD_2=Numpad_2
-NUMPAD_3=Numpad_3
-NUMPAD_4=Numpad_4
-NUMPAD_5=Numpad_5
-NUMPAD_6=Numpad_6
-NUMPAD_7=Numpad_7
-NUMPAD_8=Numpad_8
-NUMPAD_9=Numpad_9
-NUMPAD_ADD=Numpad_Add
-NUMPAD_DECIMAL=Numpad_Decimal
-NUMPAD_DIVIDE=Numpad_Divide
-NUMPAD_ENTER=Numpad_Enter
-NUMPAD_EQUAL=Numpad_Equal
-NUMPAD_MULTIPLY=Numpad_Multiply
-NUMPAD_SUBTRACT=Numpad_Subtract
-PAGE_DOWN=PageDown
-PAGE_UP=PageUp
-PAUSE=Pause
-PRINT_SCREEN=PrintScreen
-SCROLL_LOCK=ScrollLock
-
-# Character keys
-BS=Backspace
-CR=Enter
-DEL=Delete
-ESC=Esc
-FF=FormFeed
-LF=LineFeed
-NUL=Null
-SPACE=Space
-TAB=Tab
-VT=VerticalTab
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.java
deleted file mode 100644
index ab22d3d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys.formatting;
-
-import java.util.ResourceBundle;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.util.Util;
-
-/**
- * <p>
- * A key formatter providing the Emacs-style accelerators using single letters
- * to represent the modifier keys.
- * </p>
- * 
- * @since 3.1
- */
-public final class EmacsKeyFormatter extends AbstractKeyFormatter {
-
-	/**
-	 * The resource bundle used by <code>format()</code> to translate formal
-	 * string representations by locale.
-	 */
-	private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(EmacsKeyFormatter.class.getName());
-
-	/**
-	 * Formats an individual key into a human readable format. This converts the
-	 * key into a format similar to Xemacs.
-	 * 
-	 * @param key
-	 *            The key to format; must not be <code>null</code>.
-	 * @return The key formatted as a string; should not be <code>null</code>.
-	 */
-	public String format(final int key) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		if (lookup.isModifierKey(key)) {
-			String formattedName = Util.translateString(RESOURCE_BUNDLE, lookup
-					.formalNameLookup(key), null);
-			if (formattedName != null) {
-				return formattedName;
-			}
-		}
-
-		return super.format(key).toLowerCase();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#getKeyDelimiter()
-	 */
-	protected String getKeyDelimiter() {
-		return Util.translateString(RESOURCE_BUNDLE, KEY_DELIMITER_KEY,
-				KeyStroke.KEY_DELIMITER);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#getKeyStrokeDelimiter()
-	 */
-	protected String getKeyStrokeDelimiter() {
-		return Util.translateString(RESOURCE_BUNDLE, KEY_STROKE_DELIMITER_KEY,
-				KeySequence.KEY_STROKE_DELIMITER);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#sortModifierKeys(int)
-	 */
-	protected int[] sortModifierKeys(int modifierKeys) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		final int[] sortedKeys = new int[4];
-		int index = 0;
-
-		if ((modifierKeys & lookup.getAlt()) != 0) {
-			sortedKeys[index++] = lookup.getAlt();
-		}
-		if ((modifierKeys & lookup.getCommand()) != 0) {
-			sortedKeys[index++] = lookup.getCommand();
-		}
-		if ((modifierKeys & lookup.getCtrl()) != 0) {
-			sortedKeys[index++] = lookup.getCtrl();
-		}
-		if ((modifierKeys & lookup.getShift()) != 0) {
-			sortedKeys[index++] = lookup.getShift();
-		}
-
-		return sortedKeys;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.properties
deleted file mode 100644
index b9529a9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/EmacsKeyFormatter.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# Modifier keys
-ALT=M
-COMMAND=D
-CTRL=C
-SHIFT=S
-
-# Delimiters
-KEY_DELIMITER=-
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/FormalKeyFormatter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/FormalKeyFormatter.java
deleted file mode 100644
index 4cf85e7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/FormalKeyFormatter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys.formatting;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-
-/**
- * <p>
- * Formats the keys in the internal key sequence grammar. This is used for
- * persistence, and is not really intended for display to the user.
- * </p>
- * 
- * @since 3.1
- */
-public final class FormalKeyFormatter extends AbstractKeyFormatter {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.KeyFormatter#format(org.eclipse.ui.keys.KeySequence)
-	 */
-	public String format(final int key) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		return lookup.formalNameLookup(key);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#getKeyDelimiter()
-	 */
-	protected String getKeyDelimiter() {
-		return KeyStroke.KEY_DELIMITER;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#getKeyStrokeDelimiter()
-	 */
-	protected String getKeyStrokeDelimiter() {
-		return KeySequence.KEY_STROKE_DELIMITER;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#sortModifierKeys(int)
-	 */
-	protected int[] sortModifierKeys(final int modifierKeys) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		final int[] sortedKeys = new int[4];
-		int index = 0;
-
-		if ((modifierKeys & lookup.getAlt()) != 0) {
-			sortedKeys[index++] = lookup.getAlt();
-		}
-		if ((modifierKeys & lookup.getCommand()) != 0) {
-			sortedKeys[index++] = lookup.getCommand();
-		}
-		if ((modifierKeys & lookup.getCtrl()) != 0) {
-			sortedKeys[index++] = lookup.getCtrl();
-		}
-		if ((modifierKeys & lookup.getShift()) != 0) {
-			sortedKeys[index++] = lookup.getShift();
-		}
-
-		return sortedKeys;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/IKeyFormatter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/IKeyFormatter.java
deleted file mode 100644
index 7bc870d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/IKeyFormatter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys.formatting;
-
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-
-/**
- * <p>
- * Any formatter capable of taking a key sequence or a key stroke and converting
- * it into a string. These formatters are used to produce the strings that the
- * user sees in the keys preference page and the menus, as well as the strings
- * that are used for persistent storage.
- * </p>
- * 
- * @since 3.1
- */
-public interface IKeyFormatter {
-
-	/**
-	 * Formats an individual key into a human readable format. This uses an
-	 * internationalization resource bundle to look up the key. This does not do
-	 * any platform-specific formatting (e.g., Carbon's command character).
-	 * 
-	 * @param key
-	 *            The key to format.
-	 * @return The key formatted as a string; should not be <code>null</code>.
-	 */
-	String format(int key);
-
-	/**
-	 * Format the given key sequence into a string. The manner of the conversion
-	 * is dependent on the formatter. It is required that unequal key sequences
-	 * return unequal strings.
-	 * 
-	 * @param keySequence
-	 *            The key sequence to convert; must not be <code>null</code>.
-	 * @return A string representation of the key sequence; must not be
-	 *         <code>null</code>.
-	 */
-	String format(KeySequence keySequence);
-
-	/**
-	 * Format the given key strokes into a string. The manner of the conversion
-	 * is dependent on the formatter. It is required that unequal key strokes
-	 * return unequal strings.
-	 * 
-	 * @param keyStroke
-	 *            The key stroke to convert; must not be <Code>null</code>.
-	 * @return A string representation of the key stroke; must not be <code>
-	 *         null</code>
-	 */
-	String format(KeyStroke keyStroke);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/KeyFormatterFactory.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/KeyFormatterFactory.java
deleted file mode 100644
index e313b82..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/KeyFormatterFactory.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys.formatting;
-
-
-
-/**
- * <p>
- * A cache for formatters. It keeps a few instances of pre-defined instances of
- * <code>IKeyFormatter</code> available for use. It also allows the default
- * formatter to be changed.
- * </p>
- * 
- * @since 3.1
- * @see org.eclipse.jface.bindings.keys.formatting.IKeyFormatter
- */
-public final class KeyFormatterFactory {
-
-    /**
-     * The formatter that renders key bindings in a platform-dependent manner.
-     */
-    private static final IKeyFormatter FORMAL_KEY_FORMATTER = new FormalKeyFormatter();
-
-    /**
-     * The formatter that renders key bindings in a form similar to XEmacs
-     */
-    private static final IKeyFormatter EMACS_KEY_FORMATTER = new EmacsKeyFormatter();
-
-    /**
-     * The default formatter. This is normally the formal key formatter, but can
-     * be changed by users of this API.
-     */
-    private static IKeyFormatter defaultKeyFormatter = FORMAL_KEY_FORMATTER;
-
-    /**
-     * An accessor for the current default key formatter.
-     * 
-     * @return The default formatter; never <code>null</code>.
-     */
-    public static final IKeyFormatter getDefault() {
-        return defaultKeyFormatter;
-    }
-
-    /**
-     * Provides an instance of <code>EmacsKeyFormatter</code>.
-     * 
-     * @return The Xemacs formatter; never <code>null</code>.
-     */
-    public static final IKeyFormatter getEmacsKeyFormatter() {
-        return EMACS_KEY_FORMATTER;
-    }
-
-    /**
-     * Provides an instance of <code>FormalKeyFormatter</code>.
-     * 
-     * @return The formal formatter; never <code>null</code>.
-     */
-    public static final IKeyFormatter getFormalKeyFormatter() {
-        return FORMAL_KEY_FORMATTER;
-    }
-
-    /**
-     * Sets the default key formatter.
-     * 
-     * @param defaultKeyFormatter
-     *            the default key formatter. Must not be <code>null</code>.
-     */
-    public static final void setDefault(final IKeyFormatter defaultKeyFormatter) {
-        if (defaultKeyFormatter == null) {
-			throw new NullPointerException();
-		}
-
-        KeyFormatterFactory.defaultKeyFormatter = defaultKeyFormatter;
-    }
-
-    /**
-     * This class should not be instantiated.
-     */
-    private KeyFormatterFactory() {
-        // Not to be constructred.
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java
deleted file mode 100644
index 0ec0f97..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.bindings.keys.formatting;
-
-import java.util.HashMap;
-import java.util.ResourceBundle;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.SWT;
-
-/**
- * <p>
- * Formats the key sequences and key strokes into the native human-readable
- * format. This is typically what you would see on the menus for the given
- * platform and locale.
- * </p>
- * 
- * @since 3.1
- */
-public final class NativeKeyFormatter extends AbstractKeyFormatter {
-
-	/**
-	 * The key into the internationalization resource bundle for the delimiter
-	 * to use between keys (on the Carbon platform).
-	 */
-	private final static String CARBON_KEY_DELIMITER_KEY = "CARBON_KEY_DELIMITER"; //$NON-NLS-1$
-
-	/**
-	 * A look-up table for the string representations of various carbon keys.
-	 */
-	private final static HashMap CARBON_KEY_LOOK_UP = new HashMap();
-
-	/**
-	 * The resource bundle used by <code>format()</code> to translate formal
-	 * string representations by locale.
-	 */
-	private final static ResourceBundle RESOURCE_BUNDLE;
-
-	/**
-	 * The key into the internationalization resource bundle for the delimiter
-	 * to use between key strokes (on the Win32 platform).
-	 */
-	private final static String WIN32_KEY_STROKE_DELIMITER_KEY = "WIN32_KEY_STROKE_DELIMITER"; //$NON-NLS-1$
-
-	static {
-		RESOURCE_BUNDLE = ResourceBundle.getBundle(NativeKeyFormatter.class
-				.getName());
-
-		final String carbonBackspace = "\u232B"; //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.BS_NAME, carbonBackspace);
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.BACKSPACE_NAME, carbonBackspace);
-		CARBON_KEY_LOOK_UP
-				.put(IKeyLookup.CR_NAME, "\u21A9"); //$NON-NLS-1$
-		final String carbonDelete = "\u2326"; //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.DEL_NAME, carbonDelete);
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.DELETE_NAME, carbonDelete);
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.SPACE_NAME, "\u2423"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.ALT_NAME, "\u2325"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.COMMAND_NAME, "\u2318"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.CTRL_NAME, "\u2303"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.SHIFT_NAME, "\u21E7"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.ARROW_DOWN_NAME, "\u2193"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.ARROW_LEFT_NAME, "\u2190"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.ARROW_RIGHT_NAME, "\u2192"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.ARROW_UP_NAME, "\u2191"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.END_NAME, "\u2198"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.NUMPAD_ENTER_NAME, "\u2324"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.HOME_NAME, "\u2196"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.PAGE_DOWN_NAME, "\u21DF"); //$NON-NLS-1$
-		CARBON_KEY_LOOK_UP.put(IKeyLookup.PAGE_UP_NAME, "\u21DE"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Formats an individual key into a human readable format. This uses an
-	 * internationalization resource bundle to look up the key. This does the
-	 * platform-specific formatting for Carbon.
-	 * 
-	 * @param key
-	 *            The key to format.
-	 * @return The key formatted as a string; should not be <code>null</code>.
-	 */
-	public final String format(final int key) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		final String name = lookup.formalNameLookup(key);
-
-		// TODO consider platform-specific resource bundles
-		if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$    	
-			String formattedName = (String) CARBON_KEY_LOOK_UP.get(name);
-			if (formattedName != null) {
-				return formattedName;
-			}
-		}
-
-		return super.format(key);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#getKeyDelimiter()
-	 */
-	protected String getKeyDelimiter() {
-		// We must do the look up every time, as our locale might change.
-		if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			return Util.translateString(RESOURCE_BUNDLE,
-					CARBON_KEY_DELIMITER_KEY, Util.ZERO_LENGTH_STRING);
-		}
-
-		return Util.translateString(RESOURCE_BUNDLE, KEY_DELIMITER_KEY,
-				KeyStroke.KEY_DELIMITER);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#getKeyStrokeDelimiter()
-	 */
-	protected String getKeyStrokeDelimiter() {
-		// We must do the look up every time, as our locale might change.
-		if ("win32".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			return Util.translateString(RESOURCE_BUNDLE,
-					WIN32_KEY_STROKE_DELIMITER_KEY,
-					KeySequence.KEY_STROKE_DELIMITER);
-		}
-
-		return Util.translateString(RESOURCE_BUNDLE, KEY_STROKE_DELIMITER_KEY,
-				KeySequence.KEY_STROKE_DELIMITER);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.keys.AbstractKeyFormatter#sortModifierKeys(int)
-	 */
-	protected int[] sortModifierKeys(final int modifierKeys) {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		final String platform = SWT.getPlatform();
-		final int[] sortedKeys = new int[4];
-		int index = 0;
-
-		if ("win32".equals(platform) || "wpf".equals(platform)) { //$NON-NLS-1$ //$NON-NLS-2$
-			if ((modifierKeys & lookup.getCtrl()) != 0) {
-				sortedKeys[index++] = lookup.getCtrl();
-			}
-			if ((modifierKeys & lookup.getAlt()) != 0) {
-				sortedKeys[index++] = lookup.getAlt();
-			}
-			if ((modifierKeys & lookup.getShift()) != 0) {
-				sortedKeys[index++] = lookup.getShift();
-			}
-
-		} else if ("gtk".equals(platform) || "motif".equals(platform)) { //$NON-NLS-1$ //$NON-NLS-2$
-			if ((modifierKeys & lookup.getShift()) != 0) {
-				sortedKeys[index++] = lookup.getShift();
-			}
-			if ((modifierKeys & lookup.getCtrl()) != 0) {
-				sortedKeys[index++] = lookup.getCtrl();
-			}
-			if ((modifierKeys & lookup.getAlt()) != 0) {
-				sortedKeys[index++] = lookup.getAlt();
-			}
-
-		} else if ("carbon".equals(platform)) { //$NON-NLS-1$
-			if ((modifierKeys & lookup.getShift()) != 0) {
-				sortedKeys[index++] = lookup.getShift();
-			}
-			if ((modifierKeys & lookup.getCtrl()) != 0) {
-				sortedKeys[index++] = lookup.getCtrl();
-			}
-			if ((modifierKeys & lookup.getAlt()) != 0) {
-				sortedKeys[index++] = lookup.getAlt();
-			}
-			if ((modifierKeys & lookup.getCommand()) != 0) {
-				sortedKeys[index++] = lookup.getCommand();
-			}
-
-		}
-
-		return sortedKeys;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.properties
deleted file mode 100644
index c997e2f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/NativeKeyFormatter.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-KEY_DELIMITER=+
-CARBON_KEY_DELIMITER=
-WIN32_KEY_STROKE_DELIMITER=, 
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/package.html
deleted file mode 100644
index 77d3c49..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/formatting/package.html
+++ /dev/null
@@ -1,31 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides support for formatting key sequences.</p>
-
-<h2>Package Specification</h2>
-<p>
-This is a collection fo various formatters for key sequences.  The formatters
-are accessible through the <code>KeyFormatterFactory</code>.  To change how
-keys are formatted in the user interface, call
-<code>KeyFormatterFactory.setDefault(IKeyFormatter)</code>.  They provided
-formatters are:
-</p>
-<dl>
-<dt>FormalKeyFormatter</dt>
-<dd>Provides a formal grammar for reading and writing key sequences.</dd>
-<dt>NativeKeyFormatter</dt>
-<dd>Provide a native-looking, human-readable format for keys.</dd>
-<dt>CompactKeyFormatter</dt>
-<dd>A variation of the native formatter that provides a more compact representation.</dd>
-<dt>EmacsKeyFormatter</dt>
-<dd>An Xemacs-style formatter (e.g., C^x C^x).</dd>
-</dl>
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/package.html
deleted file mode 100644
index 24514f4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/keys/package.html
+++ /dev/null
@@ -1,38 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides support for bindings between commands and keys.</p>
-
-<h2>Package Specification</h2>
-<p>
-This just a key-specific implementation of the generic bindings and trigger
-support.  This package provides an abstraction layer between the SWT key events
-and key bindings within JFace.
-</p>
-<p>
-<code>KeySequence</code> is a <code>TriggerSequence</code> that has
-<code>KeyStroke</code> instances as triggers.  A <code>KeyStroke</code> is
-composed of one or more keys held down at the same time.  A key stroke ends
-when the keys are released.  A key stroke can contain zero or more modifiers
-keys, but it always contains exactly one natural key.  A modifier key is one of
-Ctrl, Shift, Alt, or Command.  A natural key is anything else.</p>
-<p>
-Natural keys are further subdivided into special keys and character keys.
-Character keys are keys that have an ASCII representation (e.g., Space, 'A' and
-Backspace).  Special keys are ones that do not (e.g., Arrow Up, F11, and
-NumLock).
-</p>
-<p>
-<code>SWTKeySupport</code> is a static class that provides the link between SWT
-and these internal representations.  It has methods for converting between SWT
-key events and the internal representation, and vice versa.  It also provides
-access to the native-style key formatting facilities.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/package.html
deleted file mode 100644
index 2896e85..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/bindings/package.html
+++ /dev/null
@@ -1,38 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides support for bindings between commands and various user input events
-(e.g., keyboard shortcuts).</p>
-
-<h2>Package Specification</h2>
-<p>
-This package provides the common classes and abstract classes required to
-provide binding support.
-</p>
-<p>
-All the real work in this package is carried out by the
-<code>BindingManager</code>, and most work with bindings can be carried out
-directly with it.  The binding manager manages a collection of bindings, and
-decides which bindings are active at any point in time.  By changes the various
-properties of the manager, the active bindings will change.  The binding
-manager implements a caching scheme that is optimized for an infreqeuntly
-changing set of bindings, but frequently changing properties.
-</p>
-<p>
-The binding manager also manages schemes.  A scheme is a grouping of bindings.
-To create a scheme, use <code>BindingManager.getScheme(String)</code>.  The
-scheme must then be defined before it can be used.
-</p>
-<p>
-If you wish to implement your own type of binding, then you must subclass
-<code>Trigger</code> and <code>TriggerSequence</code>.  Then, simply use these
-subclasses with the <code>BindingManager</code>.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ActionHandler.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ActionHandler.java
deleted file mode 100644
index 5e3223f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ActionHandler.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.commands;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.HandlerEvent;
-import org.eclipse.core.commands.IHandlerListener;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * <p>
- * This class adapts instances of <code>IAction</code> to
- * <code>IHandler</code>.
- * </p>
- * 
- * @since 3.1
- */
-public final class ActionHandler extends AbstractHandler {
-
-	/**
-	 * The wrapped action. This value is never <code>null</code>.
-	 */
-	private final IAction action;
-
-	/**
-	 * The property change listener hooked on to the action. This is initialized
-	 * when the first listener is attached to this handler, and is removed when
-	 * the handler is disposed or the last listener is removed.
-	 */
-	private IPropertyChangeListener propertyChangeListener;
-
-	/**
-	 * Creates a new instance of this class given an instance of
-	 * <code>IAction</code>.
-	 * 
-	 * @param action
-	 *            the action. Must not be <code>null</code>.
-	 */
-	public ActionHandler(final IAction action) {
-		if (action == null) {
-			throw new NullPointerException();
-		}
-
-		this.action = action;
-	}
-
-	public final void addHandlerListener(final IHandlerListener handlerListener) {
-		if (!hasListeners()) {
-			attachListener();
-		}
-
-		super.addHandlerListener(handlerListener);
-	}
-
-	/**
-	 * When a listener is attached to this handler, then this registers a
-	 * listener with the underlying action.
-	 * 
-	 * @since 3.1
-	 */
-	private final void attachListener() {
-		if (propertyChangeListener == null) {
-			propertyChangeListener = new IPropertyChangeListener() {
-				public final void propertyChange(
-						final PropertyChangeEvent propertyChangeEvent) {
-					final String property = propertyChangeEvent.getProperty();
-					fireHandlerChanged(new HandlerEvent(ActionHandler.this,
-							IAction.ENABLED.equals(property), IAction.HANDLED
-									.equals(property)));
-				}
-			};
-		}
-
-		this.action.addPropertyChangeListener(propertyChangeListener);
-	}
-
-	/**
-	 * When no more listeners are registered, then this is used to removed the
-	 * property change listener from the underlying action.
-	 */
-	private final void detachListener() {
-		this.action.removePropertyChangeListener(propertyChangeListener);
-		propertyChangeListener = null;
-	}
-
-	/**
-	 * Removes the property change listener from the action.
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#dispose()
-	 */
-	public final void dispose() {
-		if (hasListeners()) {
-			action.removePropertyChangeListener(propertyChangeListener);
-		}
-	}
-	
-	public final Object execute(final ExecutionEvent event)
-			throws ExecutionException {
-		if ((action.getStyle() == IAction.AS_CHECK_BOX)
-				|| (action.getStyle() == IAction.AS_RADIO_BUTTON)) {
-			action.setChecked(!action.isChecked());
-		}
-		final Object trigger = event.getTrigger();
-		try {
-			if (trigger instanceof Event) {
-				action.runWithEvent((Event) trigger);
-			} else {
-				action.runWithEvent(new Event());
-			}
-		} catch (Exception e) {
-			throw new ExecutionException(
-					"While executing the action, an exception occurred", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the action associated with this handler
-	 * 
-	 * @return the action associated with this handler (not null)
-	 * @since 3.1
-	 */
-	public final IAction getAction() {
-		return action;
-	}
-	
-	public final boolean isEnabled() {
-		return action.isEnabled();
-	}
-	
-	public final boolean isHandled() {
-		return action.isHandled();
-	}
-	
-	public final void removeHandlerListener(
-			final IHandlerListener handlerListener) {
-		super.removeHandlerListener(handlerListener);
-
-		if (!hasListeners()) {
-			detachListener();
-		}
-	}
-	
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("ActionHandler("); //$NON-NLS-1$
-		buffer.append(action);
-		buffer.append(')');
-
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/PersistentState.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/PersistentState.java
deleted file mode 100644
index 5681efa..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/PersistentState.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.commands;
-
-import org.eclipse.core.commands.State;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * <p>
- * This is a state that can be made persistent. A state is persisted to a
- * preference store.
- * </p>
- * <p>
- * Clients may extend this class.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class PersistentState extends State {
-
-	/**
-	 * Whether this state should be persisted.
-	 */
-	private boolean persisted;
-
-	/**
-	 * Loads this state from the preference store, given the location at which
-	 * to look. This method must be symmetric with a call to
-	 * {@link #save(IPreferenceStore, String)}.
-	 * 
-	 * @param store
-	 *            The store from which to read; must not be <code>null</code>.
-	 * @param preferenceKey
-	 *            The key at which the state is stored; must not be
-	 *            <code>null</code>.
-	 */
-	public abstract void load(final IPreferenceStore store,
-			final String preferenceKey);
-
-	/**
-	 * Saves this state to the preference store, given the location at which to
-	 * write. This method must be symmetric with a call to
-	 * {@link #load(IPreferenceStore, String)}.
-	 * 
-	 * @param store
-	 *            The store to which the state should be written; must not be
-	 *            <code>null</code>.
-	 * @param preferenceKey
-	 *            The key at which the state should be stored; must not be
-	 *            <code>null</code>.
-	 */
-	public abstract void save(final IPreferenceStore store,
-			final String preferenceKey);
-
-	/**
-	 * Sets whether this state should be persisted.
-	 * 
-	 * @param persisted
-	 *            Whether this state should be persisted.
-	 */
-	public void setShouldPersist(final boolean persisted) {
-		this.persisted = persisted;
-	}
-
-	/**
-	 * Whether this state should be persisted. Subclasses should check this
-	 * method before loading or saving.
-	 * 
-	 * @return <code>true</code> if this state should be persisted;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean shouldPersist() {
-		return persisted;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/RadioState.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/RadioState.java
deleted file mode 100644
index 334240a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/RadioState.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.commands;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.IStateListener;
-import org.eclipse.core.commands.State;
-import org.eclipse.jface.menus.IMenuStateIds;
-
-/**
- * <p>
- * A piece of boolean state grouped with other boolean states. Of these states,
- * only one may have a value of {@link Boolean#TRUE} at any given point in time.
- * The values of all other states must be {@link Boolean#FALSE}.
- * </p>
- * <p>
- * If this state is registered using {@link IMenuStateIds#STYLE}, then it will
- * control the presentation of the command if displayed in the menus, tool bars
- * or status line.
- * </p>
- * <p>
- * Clients may instantiate or extend this interface.
- * </p>
- * 
- * @since 3.2
- */
-public class RadioState extends ToggleState {
-
-	/**
-	 * The manager of radio groups within the application. This ensures that
-	 * only one member of a radio group is active at any one time, and tracks
-	 * group memberships.
-	 */
-	private static final class RadioStateManager {
-
-		/**
-		 * A group of radio states with the same identifier.
-		 */
-		private static final class RadioGroup implements IStateListener {
-
-			/**
-			 * The active state. If there is no active state, then this value is
-			 * <code>null</code>.
-			 */
-			private RadioState active = null;
-
-			/**
-			 * The current members in this group. If there are no members, then
-			 * this value is <code>nlistenerull</code>.
-			 */
-			private Set members = null;
-
-			/**
-			 * Activates a memeber. This checks to see if there are any other
-			 * active members. If there are, they are deactivated.
-			 * 
-			 * @param state
-			 *            The state that should become active; must not be
-			 *            <code>null</code>.
-			 */
-			private final void activateMember(final RadioState state) {
-				if (active!=null && active != state) {
-					active.setValue(Boolean.FALSE);
-				}
-				active = state;
-			}
-
-			/**
-			 * Adds a member to this radio group. If the state being added is
-			 * active, then it replaces the currently active group memeber as
-			 * the active state.
-			 * 
-			 * @param state
-			 *            The state to add; must not be <code>null</code>.
-			 */
-			private final void addMember(final RadioState state) {
-				if (members == null) {
-					members = new HashSet(5);
-				}
-
-				members.add(state);
-				state.addListener(this);
-
-				final Object value = state.getValue();
-				if (value instanceof Boolean) {
-					if (((Boolean) value).booleanValue()) {
-						activateMember(state);
-					}
-				}
-			}
-
-			public final void handleStateChange(final State state,
-					final Object oldValue) {
-				final Object newValue = state.getValue();
-				if (newValue instanceof Boolean) {
-					if (((Boolean) newValue).booleanValue()) {
-						activateMember((RadioState) state);
-					}
-				}
-			}
-
-			/**
-			 * Removes a member from this radio group. If the state was the
-			 * active state, then there will be no active state.
-			 * 
-			 * @param state
-			 *            The state to remove; must not be <code>null</code>.
-			 */
-			private final void removeMember(final RadioState state) {
-				state.removeListener(this);
-				if (active == state) {
-					active = null;
-				}
-
-				if (members == null) {
-					return;
-				}
-				members.remove(state);
-			}
-		}
-
-		/**
-		 * The map of radio states indexed by identifier (<code>String</code>).
-		 * The radio states is either a single <code>RadioState</code>
-		 * instance or a <code>Collection</code> of <code>RadioState</code>
-		 * instances.
-		 */
-		private static Map radioStatesById = null;
-
-		/**
-		 * Activates a particular state within a given group.
-		 * 
-		 * @param identifier
-		 *            The identifier of the group to which the state belongs;
-		 *            must not be <code>null</code>.
-		 * @param state
-		 *            The state to activate; must not be <code>null</code>.
-		 */
-		private static final void activateGroup(final String identifier,
-				final RadioState state) {
-			if (radioStatesById == null) {
-				return;
-			}
-
-			final Object currentValue = radioStatesById.get(identifier);
-			if (currentValue instanceof RadioGroup) {
-				final RadioGroup radioGroup = (RadioGroup) currentValue;
-				radioGroup.activateMember(state);
-			}
-		}
-
-		/**
-		 * Registers a piece of state with the radio manager.
-		 * 
-		 * @param identifier
-		 *            The identifier of the radio group; must not be
-		 *            <code>null</code>.
-		 * @param state
-		 *            The state to register; must not be <code>null</code>.
-		 */
-		private static final void registerState(final String identifier,
-				final RadioState state) {
-			if (radioStatesById == null) {
-				radioStatesById = new HashMap();
-			}
-
-			final Object currentValue = radioStatesById.get(identifier);
-			final RadioGroup radioGroup;
-			if (currentValue instanceof RadioGroup) {
-				radioGroup = (RadioGroup) currentValue;
-			} else {
-				radioGroup = new RadioGroup();
-			}
-			radioGroup.addMember(state);
-		}
-
-		/**
-		 * Unregisters a piece of state from the radio manager.
-		 * 
-		 * @param identifier
-		 *            The identifier of the radio group; must not be
-		 *            <code>null</code>.
-		 * @param state
-		 *            The state to unregister; must not be <code>null</code>.
-		 */
-		private static final void unregisterState(final String identifier,
-				final RadioState state) {
-			if (radioStatesById == null) {
-				return;
-			}
-
-			final Object currentValue = radioStatesById.get(identifier);
-			if (currentValue instanceof RadioGroup) {
-				final RadioGroup radioGroup = (RadioGroup) currentValue;
-				radioGroup.removeMember(state);
-			}
-		}
-	}
-
-	/**
-	 * The identifier of the radio group to which this state belongs. This value
-	 * may be <code>null</code> if this state doesn't really belong to a group
-	 * (yet).
-	 */
-	private String radioGroupIdentifier = null;
-
-	/**
-	 * Unregisters this state from the manager, which detaches the listeners.
-	 */
-	public void dispose() {
-		setRadioGroupIdentifier(null);
-	}
-
-	/**
-	 * Sets the identifier of the radio group for this piece of state. If the
-	 * identifier is cleared, then the state is unregistered.
-	 * 
-	 * @param identifier
-	 *            The identifier of the radio group for this state; may be
-	 *            <code>null</code> if the identifier is being cleared.
-	 * 
-	 */
-	public final void setRadioGroupIdentifier(final String identifier) {
-		if (identifier == null) {
-			RadioStateManager.unregisterState(radioGroupIdentifier, this);
-			radioGroupIdentifier = null;
-		} else {
-			radioGroupIdentifier = identifier;
-			RadioStateManager.registerState(identifier, this);
-		}
-	}
-
-	/**
-	 * Sets the value for this object. This notifies the radio state manager of
-	 * the change.
-	 * 
-	 * @param value
-	 *            The new value; should be a <code>Boolean</code>.
-	 */
-	public void setValue(final Object value) {
-		if (!(value instanceof Boolean)) {
-			throw new IllegalArgumentException(
-					"RadioState takes a Boolean as a value"); //$NON-NLS-1$
-		}
-
-		if (((Boolean) value).booleanValue() && (radioGroupIdentifier != null)) {
-			RadioStateManager.activateGroup(radioGroupIdentifier, this);
-		}
-
-		super.setValue(value);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ToggleState.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ToggleState.java
deleted file mode 100644
index 71d6131..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/ToggleState.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.commands;
-
-import org.eclipse.jface.menus.IMenuStateIds;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * <p>
- * A piece of state storing a {@link Boolean}.
- * </p>
- * <p>
- * If this state is registered using {@link IMenuStateIds#STYLE}, then it will
- * control the presentation of the command if displayed in the menus, tool bars
- * or status line.
- * </p>
- * <p>
- * Clients may instantiate this class, but must not extend.
- * </p>
- * 
- * @since 3.2
- */
-public class ToggleState extends PersistentState {
-
-	/**
-	 * Constructs a new <code>ToggleState</code>. By default, the toggle is
-	 * off (e.g., <code>false</code>).
-	 */
-	public ToggleState() {
-		setValue(Boolean.FALSE);
-	}
-
-	public final void load(final IPreferenceStore store,
-			final String preferenceKey) {
-		final boolean currentValue = ((Boolean) getValue()).booleanValue(); 
-		store.setDefault(preferenceKey, currentValue);
-		if (shouldPersist() && (store.contains(preferenceKey))) {
-			final boolean value = store.getBoolean(preferenceKey);
-			setValue(value ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-
-	public final void save(final IPreferenceStore store,
-			final String preferenceKey) {
-		if (shouldPersist()) {
-			final Object value = getValue();
-			if (value instanceof Boolean) {
-				store.setValue(preferenceKey, ((Boolean) value).booleanValue());
-			}
-		}
-	}
-
-	public void setValue(final Object value) {
-		if (!(value instanceof Boolean)) {
-			throw new IllegalArgumentException(
-					"ToggleState takes a Boolean as a value"); //$NON-NLS-1$
-		}
-
-		super.setValue(value);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/package.html
deleted file mode 100644
index d0e2c2f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/commands/package.html
+++ /dev/null
@@ -1,18 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides JFace-specific support for commands.</p>
-
-<h2>Package Specification</h2>
-<p>
-This package provides a handler that wraps a legacy instance of
-<code>IAction</code>, as well as a manager for associating images with commands.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/IContextIds.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/IContextIds.java
deleted file mode 100644
index 3011235..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/IContextIds.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.contexts;
-
-/**
- * <p>
- * A list of well-known context identifiers. The context identifiers use the
- * prefix "org.eclipse.ui" for historical reasons. These contexts exist as part 
- * of JFace.
- * </p>
- * <p>
- * This interface should not be implemented or extended by clients.
- * </p>
- * 
- * @since 3.1
- */
-public interface IContextIds {
-
-	/**
-	 * The identifier for the context that is active when a shell registered as
-	 * a dialog.
-	 */
-	public static final String CONTEXT_ID_DIALOG = "org.eclipse.ui.contexts.dialog"; //$NON-NLS-1$
-
-	/**
-	 * The identifier for the context that is active when a shell is registered
-	 * as either a window or a dialog.
-	 */
-	public static final String CONTEXT_ID_DIALOG_AND_WINDOW = "org.eclipse.ui.contexts.dialogAndWindow"; //$NON-NLS-1$
-
-	/**
-	 * The identifier for the context that is active when a shell is registered
-	 * as a window.
-	 */
-	public static final String CONTEXT_ID_WINDOW = "org.eclipse.ui.contexts.window"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/package.html
deleted file mode 100644
index f09c5cf..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/contexts/package.html
+++ /dev/null
@@ -1,18 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides JFace-specific support for contexts.</p>
-
-<h2>Package Specification</h2>
-<p>
-This package provides some context identifiers that have special meaning in the
-context of JFace.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/AnimatorFactory.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/AnimatorFactory.java
deleted file mode 100644
index 76d8e9e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/AnimatorFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.swt.widgets.Control;
-
-
-/**
- * Factory for control animators used by JFace to animate the display of an SWT
- * Control. Through the use of the method
- * {@link org.eclipse.jface.util.Policy#setAnimatorFactory(AnimatorFactory)} 
- * a new type of animator factory can be plugged into JFace.
- * 
- * @since 3.2
- * @deprecated as of 3.3, this class is no longer used.
- */
-public class AnimatorFactory {
-	/**
-	 * Creates a new ControlAnimator for use by JFace in animating
-	 * the display of an SWT Control. <p>
-	 * Subclasses should override this method.
-	 * 
-	 * @param control the SWT Control to de displayed 
-	 * @return the ControlAnimator.
-	 * @since 3.2
-	 */
-	public ControlAnimator createAnimator(Control control) {
-		return new ControlAnimator(control);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlAnimator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlAnimator.java
deleted file mode 100644
index be05086..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlAnimator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * ControlAnimator provides a simple implementation to display or hide a control
- * at the bottom of the parent composite. Other animations will be written as
- * subclasses of this class. <p>
- * Instances of this class can be created using an AnimatorFactory.
- * 
- * @since 3.2
- */
-
-
-public class ControlAnimator {
-	/** the control that will be displayed or hidden */
-	protected Control control;	
-	
-	/**
-	 * Constructs a new ControlAnimator instance and passes along the
-	 * control that will be displayed or hidden.
-	 * 
-	 * @param control the control that will be displayed or hidden.
-	 */
-	public ControlAnimator(Control control) {
-		this.control = control;
-	}
-
-	/**
-	 * Displays or hides a control at the bottom of the parent composite
-	 * and makes use of the control's SWT visible flag.<p>
-	 * Subclasses should override this method.</p>
-	 * 
-	 * @param visible <code>true</code> if the control should be shown, 
-	 * 		  and <code>false</code> otherwise.
-	 */
-	public void setVisible(boolean visible){
-		// Using the SWT visible flag to determine if the control has
-		// already been displayed or hidden. Return if already displayed
-		// and visible is true, or if already hidden and visible is false.
-		if (!(control.isVisible() ^ visible))
-			return;
-		control.setVisible(visible);
-		Rectangle parentBounds = control.getParent().getBounds();
-		int bottom = parentBounds.height;		
-		final int endY = visible ? bottom - control.getBounds().height
-				: bottom;
-		Point loc = control.getLocation();
-		control.setLocation(loc.x,endY);
-	}
-	
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlEnableState.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlEnableState.java
deleted file mode 100644
index cba792b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ControlEnableState.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Helper class to save the enable/disable state of a control including all its
- * descendent controls.
- */
-public class ControlEnableState {
-    /**
-     * List of exception controls (element type: <code>Control</code>);
-     * <code>null</code> if none.
-     */
-    private List exceptions = null;
-
-    /**
-     * List of saved states (element type: <code>ItemState</code>).
-     */
-    private List states;
-
-    /**
-     * Internal class for recording the enable/disable state of a single
-     * control.
-     */
-    private class ItemState {
-    	/** the control */
-        protected Control item;
-
-        /** the state */
-        protected boolean state;
-
-        /**
-         * Create a new instance of the receiver.
-         * 
-         * @param item
-         * @param state
-         */
-        public ItemState(Control item, boolean state) {
-            this.item = item;
-            this.state = state;
-        }
-
-        /**
-         * Restore the enabled state to the original value.
-         *  
-         */
-        public void restore() {
-            if (item == null || item.isDisposed()) {
-				return;
-			}
-            item.setEnabled(state);
-        }
-    }
-
-    /**
-     * Creates a new object and saves in it the current enable/disable state of
-     * the given control and its descendents; the controls that are saved are
-     * also disabled.
-     * 
-     * @param w
-     *            the control
-     */
-    protected ControlEnableState(Control w) {
-        this(w, null);
-    }
-
-    /**
-     * Creates a new object and saves in it the current enable/disable state of
-     * the given control and its descendents except for the given list of
-     * exception cases; the controls that are saved are also disabled.
-     * 
-     * @param w
-     *            the control
-     * @param exceptions
-     *            the list of controls to not disable (element type:
-     *            <code>Control</code>), or <code>null</code> if none
-     */
-    protected ControlEnableState(Control w, List exceptions) {
-        super();
-        states = new ArrayList();
-        this.exceptions = exceptions;
-        readStateForAndDisable(w);
-    }
-
-    /**
-     * Saves the current enable/disable state of the given control and its
-     * descendents in the returned object; the controls are all disabled.
-     * 
-     * @param w
-     *            the control
-     * @return an object capturing the enable/disable state
-     */
-    public static ControlEnableState disable(Control w) {
-        return new ControlEnableState(w);
-    }
-
-    /**
-     * Saves the current enable/disable state of the given control and its
-     * descendents in the returned object except for the given list of exception
-     * cases; the controls that are saved are also disabled.
-     * 
-     * @param w
-     *            the control
-     * @param exceptions
-     *            the list of controls to not disable (element type:
-     *            <code>Control</code>)
-     * @return an object capturing the enable/disable state
-     */
-    public static ControlEnableState disable(Control w, List exceptions) {
-        return new ControlEnableState(w, exceptions);
-    }
-
-    /**
-     * Recursively reads the enable/disable state for the given window and
-     * disables all controls.
-     * @param control Control
-     */
-    private void readStateForAndDisable(Control control) {
-        if ((exceptions != null && exceptions.contains(control))) {
-			return;
-		}
-        if (control instanceof Composite) {
-            Composite c = (Composite) control;
-            Control[] children = c.getChildren();
-            for (int i = 0; i < children.length; i++) {
-                readStateForAndDisable(children[i]);
-            }
-        }
-        // XXX: Workaround for 1G2Q8SS: ITPUI:Linux - Combo box is not enabled
-        // in "File->New->Solution"
-        states.add(new ItemState(control, control.getEnabled()));
-        control.setEnabled(false);
-    }
-
-    /**
-     * Restores the window enable state saved in this object.
-     */
-    public void restore() {
-        int size = states.size();
-        for (int i = 0; i < size; i++) {
-            ((ItemState) states.get(i)).restore();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/Dialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/Dialog.java
deleted file mode 100644
index 9989492..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/Dialog.java
+++ /dev/null
@@ -1,1307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 218553 [JFace] mis-spelling of their in applyDialogFont(...)
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.util.Arrays;
-import java.util.HashMap;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.jface.window.SameShellProvider;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FormData;
-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.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A dialog is a specialized window used for narrow-focused communication with
- * the user.
- * <p>
- * Dialogs are usually modal. Consequently, it is generally bad practice to open
- * a dialog without a parent. A modal dialog without a parent is not prevented
- * from disappearing behind the application's other windows, making it very
- * confusing for the user.
- * </p>
- * <p>
- * If there is more than one modal dialog is open the second one should be
- * parented off of the shell of the first one otherwise it is possible that the
- * OS will give focus to the first dialog potentially blocking the UI.
- * </p>
- */
-public abstract class Dialog extends Window {
-	/**
-	 * Image registry key for error image (value
-	 * <code>"dialog_error_image"</code>).
-	 * 
-	 * @deprecated use
-	 *             org.eclipse.swt.widgets.Display.getSystemImage(SWT.ICON_ERROR)
-	 */
-	public static final String DLG_IMG_ERROR = "dialog_error_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for info image (value <code>"dialog_info_image"</code>).
-	 * 
-	 * @deprecated use
-	 *             org.eclipse.swt.widgets.Display.getSystemImage(SWT.ICON_INFORMATION)
-	 */
-	public static final String DLG_IMG_INFO = "dialog_info_imageg"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for question image (value
-	 * <code>"dialog_question_image"</code>).
-	 * 
-	 * @deprecated org.eclipse.swt.widgets.Display.getSystemImage(SWT.ICON_QUESTION)
-	 */
-	public static final String DLG_IMG_QUESTION = "dialog_question_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for warning image (value
-	 * <code>"dialog_warning_image"</code>).
-	 * 
-	 * @deprecated use
-	 *             org.eclipse.swt.widgets.Display.getSystemImage(SWT.ICON_WARNING)
-	 */
-	public static final String DLG_IMG_WARNING = "dialog_warning_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for info message image (value
-	 * <code>"dialog_messasge_info_image"</code>).
-	 * 
-	 * @since 2.0
-	 */
-	public static final String DLG_IMG_MESSAGE_INFO = "dialog_messasge_info_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for info message image (value
-	 * <code>"dialog_messasge_warning_image"</code>).
-	 * 
-	 * @since 2.0
-	 */
-	public static final String DLG_IMG_MESSAGE_WARNING = "dialog_messasge_warning_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for info message image (value
-	 * <code>"dialog_message_error_image"</code>).
-	 * 
-	 * @since 2.0
-	 */
-	public static final String DLG_IMG_MESSAGE_ERROR = "dialog_message_error_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for help image (value
-	 * <code>"dialog_help_image"</code>).
-	 * 
-	 * @since 3.2
-	 */
-	public static final String DLG_IMG_HELP = "dialog_help_image"; //$NON-NLS-1$
-
-	/**
-	 * The ellipsis is the string that is used to represent shortened text.
-	 * 
-	 * @since 3.0
-	 */
-	public static final String ELLIPSIS = "..."; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog x location.
-	 * 
-	 * @since 3.2
-	 */
-	private static final String DIALOG_ORIGIN_X = "DIALOG_X_ORIGIN"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog y location.
-	 * 
-	 * @since 3.2
-	 */
-	private static final String DIALOG_ORIGIN_Y = "DIALOG_Y_ORIGIN"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog width.
-	 * 
-	 * @since 3.2
-	 */
-	private static final String DIALOG_WIDTH = "DIALOG_WIDTH"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog height.
-	 * 
-	 * @since 3.2
-	 */
-	private static final String DIALOG_HEIGHT = "DIALOG_HEIGHT"; //$NON-NLS-1$
-	
-	/**
-	 * The dialog settings key name for the font used when the dialog
-	 * height and width was stored.
-	 *
-	 *@since 3.2
-	 */
-	private static final String DIALOG_FONT_DATA = "DIALOG_FONT_NAME"; //$NON-NLS-1$
-	
-	/**
-	 * A value that can be used for stored dialog width or height that
-	 * indicates that the default bounds should be used.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int DIALOG_DEFAULT_BOUNDS = -1;
-
-	/**
-	 * Constants that can be used for specifying the strategy for persisting
-	 * dialog bounds.  These constants represent bit masks that can be used
-	 * together.
-	 *
-	 *@since 3.2
-	 */
-	
-	/**
-	 * Persist the last location of the dialog.
-	 * @since 3.2
-	 */
-	public static final int DIALOG_PERSISTLOCATION = 0x0001;
-	/**
-	 * Persist the last known size of the dialog.
-	 * @since 3.2
-	 */
-	public static final int DIALOG_PERSISTSIZE = 0x0002;
-	
-	/**
-	 * The dialog area; <code>null</code> until dialog is layed out.
-	 */
-	protected Control dialogArea;
-
-	/**
-	 * The button bar; <code>null</code> until dialog is layed out.
-	 */
-	public Control buttonBar;
-	
-	/**
-	 * Collection of buttons created by the <code>createButton</code> method.
-	 */
-	private HashMap buttons = new HashMap();
-
-	/**
-	 * Font metrics to use for determining pixel sizes.
-	 */
-	private FontMetrics fontMetrics;
-	
-	/**
-	 * Number of horizontal dialog units per character, value <code>4</code>.
-	 */
-	private static final int HORIZONTAL_DIALOG_UNIT_PER_CHAR = 4;
-
-	/**
-	 * Number of vertical dialog units per character, value <code>8</code>.
-	 */
-	private static final int VERTICAL_DIALOG_UNITS_PER_CHAR = 8;
-
-	/**
-	 * Returns the number of pixels corresponding to the height of the given
-	 * number of characters.
-	 * <p>
-	 * The required <code>FontMetrics</code> parameter may be created in the
-	 * following way: <code>
-	 * 	GC gc = new GC(control);
-	 *	gc.setFont(control.getFont());
-	 *	fontMetrics = gc.getFontMetrics();
-	 *	gc.dispose();
-	 * </code>
-	 * </p>
-	 * 
-	 * @param fontMetrics
-	 *            used in performing the conversion
-	 * @param chars
-	 *            the number of characters
-	 * @return the number of pixels
-	 * @since 2.0
-	 */
-	public static int convertHeightInCharsToPixels(FontMetrics fontMetrics,
-			int chars) {
-		return fontMetrics.getHeight() * chars;
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the given number of
-	 * horizontal dialog units.
-	 * <p>
-	 * The required <code>FontMetrics</code> parameter may be created in the
-	 * following way: <code>
-	 * 	GC gc = new GC(control);
-	 *	gc.setFont(control.getFont());
-	 *	fontMetrics = gc.getFontMetrics();
-	 *	gc.dispose();
-	 * </code>
-	 * </p>
-	 * 
-	 * @param fontMetrics
-	 *            used in performing the conversion
-	 * @param dlus
-	 *            the number of horizontal dialog units
-	 * @return the number of pixels
-	 * @since 2.0
-	 */
-	public static int convertHorizontalDLUsToPixels(FontMetrics fontMetrics,
-			int dlus) {
-		// round to the nearest pixel
-		return (fontMetrics.getAverageCharWidth() * dlus + HORIZONTAL_DIALOG_UNIT_PER_CHAR / 2)
-				/ HORIZONTAL_DIALOG_UNIT_PER_CHAR;
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the given number of
-	 * vertical dialog units.
-	 * <p>
-	 * The required <code>FontMetrics</code> parameter may be created in the
-	 * following way: <code>
-	 * 	GC gc = new GC(control);
-	 *	gc.setFont(control.getFont());
-	 *	fontMetrics = gc.getFontMetrics();
-	 *	gc.dispose();
-	 * </code>
-	 * </p>
-	 * 
-	 * @param fontMetrics
-	 *            used in performing the conversion
-	 * @param dlus
-	 *            the number of vertical dialog units
-	 * @return the number of pixels
-	 * @since 2.0
-	 */
-	public static int convertVerticalDLUsToPixels(FontMetrics fontMetrics,
-			int dlus) {
-		// round to the nearest pixel
-		return (fontMetrics.getHeight() * dlus + VERTICAL_DIALOG_UNITS_PER_CHAR / 2)
-				/ VERTICAL_DIALOG_UNITS_PER_CHAR;
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the width of the given
-	 * number of characters.
-	 * <p>
-	 * The required <code>FontMetrics</code> parameter may be created in the
-	 * following way: <code>
-	 * 	GC gc = new GC(control);
-	 *	gc.setFont(control.getFont());
-	 *	fontMetrics = gc.getFontMetrics();
-	 *	gc.dispose();
-	 * </code>
-	 * </p>
-	 * 
-	 * @param fontMetrics
-	 *            used in performing the conversion
-	 * @param chars
-	 *            the number of characters
-	 * @return the number of pixels
-	 * @since 2.0
-	 */
-	public static int convertWidthInCharsToPixels(FontMetrics fontMetrics,
-			int chars) {
-		return fontMetrics.getAverageCharWidth() * chars;
-	}
-
-	/**
-	 * Shortens the given text <code>textValue</code> so that its width in
-	 * pixels does not exceed the width of the given control. Overrides
-	 * characters in the center of the original string with an ellipsis ("...")
-	 * if necessary. If a <code>null</code> value is given, <code>null</code>
-	 * is returned.
-	 * 
-	 * @param textValue
-	 *            the original string or <code>null</code>
-	 * @param control
-	 *            the control the string will be displayed on
-	 * @return the string to display, or <code>null</code> if null was passed
-	 *         in
-	 * 
-	 * @since 3.0
-	 */
-	public static String shortenText(String textValue, Control control) {
-		if (textValue == null) {
-			return null;
-		}
-		GC gc = new GC(control);
-		int maxWidth = control.getBounds().width - 5;
-		int maxExtent = gc.textExtent(textValue).x;
-		if (maxExtent < maxWidth) {
-			gc.dispose();
-			return textValue;
-		}
-		int length = textValue.length();
-		int charsToClip = Math.round(0.95f*length * (1 - ((float)maxWidth/maxExtent)));
-		int pivot = length / 2;
-		int start = pivot - (charsToClip/2);
-		int end = pivot + (charsToClip/2) + 1;
-		while (start >= 0 && end < length) {
-			String s1 = textValue.substring(0, start);
-			String s2 = textValue.substring(end, length);
-			String s = s1 + ELLIPSIS + s2;
-			int l = gc.textExtent(s).x;
-			if (l < maxWidth) {
-				gc.dispose();
-				return s;
-			}
-			start--;
-			end++;
-		}
-		gc.dispose();
-		return textValue;
-	}
-
-	/**
-	 * Create a default instance of the blocked handler which does not do
-	 * anything.
-	 */
-	public static IDialogBlockedHandler blockedHandler = new IDialogBlockedHandler() {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.IDialogBlockedHandler#clearBlocked()
-		 */
-		public void clearBlocked() {
-			// No default behaviour
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.IDialogBlockedHandler#showBlocked(org.eclipse.core.runtime.IProgressMonitor,
-		 *      org.eclipse.core.runtime.IStatus, java.lang.String)
-		 */
-		public void showBlocked(IProgressMonitor blocking,
-				IStatus blockingStatus, String blockedName) {
-			// No default behaviour
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.IDialogBlockedHandler#showBlocked(org.eclipse.swt.widgets.Shell,
-		 *      org.eclipse.core.runtime.IProgressMonitor,
-		 *      org.eclipse.core.runtime.IStatus, java.lang.String)
-		 */
-		public void showBlocked(Shell parentShell, IProgressMonitor blocking,
-				IStatus blockingStatus, String blockedName) {
-			// No default behaviour
-		}
-	};
-
-	/**
-	 * Creates a dialog instance. Note that the window will have no visual
-	 * representation (no widgets) until it is told to open. By default,
-	 * <code>open</code> blocks for dialogs.
-	 * 
-	 * @param parentShell
-	 *            the parent shell, or <code>null</code> to create a top-level
-	 *            shell
-	 */
-	protected Dialog(Shell parentShell) {
-		this(new SameShellProvider(parentShell));
-		if (parentShell == null && Policy.DEBUG_DIALOG_NO_PARENT) {
-			Policy.getLog().log(
-					new Status(IStatus.INFO, Policy.JFACE, IStatus.INFO, this
-							.getClass()
-							+ " created with no shell",//$NON-NLS-1$
-							new Exception()));
-		}
-	}
-
-	/**
-	 * Creates a dialog with the given parent.
-	 * 
-	 * @param parentShell
-	 *            object that returns the current parent shell
-	 * 
-	 * @since 3.1
-	 */
-	protected Dialog(IShellProvider parentShell) {
-		super(parentShell);
-		if (isResizable()) {
-			setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.MAX | SWT.RESIZE
-					| getDefaultOrientation());
-		} else {
-			setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL
-					| getDefaultOrientation());
-		}
-		setBlockOnOpen(true);
-	}
-
-	/**
-	 * Notifies that this dialog's button with the given id has been pressed.
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method calls
-	 * <code>okPressed</code> if the ok button is the pressed, and
-	 * <code>cancelPressed</code> if the cancel button is the pressed. All
-	 * other button presses are ignored. Subclasses may override to handle other
-	 * buttons, but should call <code>super.buttonPressed</code> if the
-	 * default handling of the ok and cancel buttons is desired.
-	 * </p>
-	 * 
-	 * @param buttonId
-	 *            the id of the button that was pressed (see
-	 *            <code>IDialogConstants.*_ID</code> constants)
-	 */
-	protected void buttonPressed(int buttonId) {
-		if (IDialogConstants.OK_ID == buttonId) {
-			okPressed();
-		} else if (IDialogConstants.CANCEL_ID == buttonId) {
-			cancelPressed();
-		}
-	}
-
-	/**
-	 * Notifies that the cancel button of this dialog has been pressed.
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method sets
-	 * this dialog's return code to <code>Window.CANCEL</code> and closes the
-	 * dialog. Subclasses may override if desired.
-	 * </p>
-	 */
-	protected void cancelPressed() {
-		setReturnCode(CANCEL);
-		close();
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the height of the given
-	 * number of characters.
-	 * <p>
-	 * This method may only be called after <code>initializeDialogUnits</code>
-	 * has been called.
-	 * </p>
-	 * <p>
-	 * Clients may call this framework method, but should not override it.
-	 * </p>
-	 * 
-	 * @param chars
-	 *            the number of characters
-	 * @return the number of pixels
-	 */
-	protected int convertHeightInCharsToPixels(int chars) {
-		// test for failure to initialize for backward compatibility
-		if (fontMetrics == null) {
-			return 0;
-		}
-		return convertHeightInCharsToPixels(fontMetrics, chars);
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the given number of
-	 * horizontal dialog units.
-	 * <p>
-	 * This method may only be called after <code>initializeDialogUnits</code>
-	 * has been called.
-	 * </p>
-	 * <p>
-	 * Clients may call this framework method, but should not override it.
-	 * </p>
-	 * 
-	 * @param dlus
-	 *            the number of horizontal dialog units
-	 * @return the number of pixels
-	 */
-	protected int convertHorizontalDLUsToPixels(int dlus) {
-		// test for failure to initialize for backward compatibility
-		if (fontMetrics == null) {
-			return 0;
-		}
-		return convertHorizontalDLUsToPixels(fontMetrics, dlus);
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the given number of
-	 * vertical dialog units.
-	 * <p>
-	 * This method may only be called after <code>initializeDialogUnits</code>
-	 * has been called.
-	 * </p>
-	 * <p>
-	 * Clients may call this framework method, but should not override it.
-	 * </p>
-	 * 
-	 * @param dlus
-	 *            the number of vertical dialog units
-	 * @return the number of pixels
-	 */
-	protected int convertVerticalDLUsToPixels(int dlus) {
-		// test for failure to initialize for backward compatibility
-		if (fontMetrics == null) {
-			return 0;
-		}
-		return convertVerticalDLUsToPixels(fontMetrics, dlus);
-	}
-
-	/**
-	 * Returns the number of pixels corresponding to the width of the given
-	 * number of characters.
-	 * <p>
-	 * This method may only be called after <code>initializeDialogUnits</code>
-	 * has been called.
-	 * </p>
-	 * <p>
-	 * Clients may call this framework method, but should not override it.
-	 * </p>
-	 * 
-	 * @param chars
-	 *            the number of characters
-	 * @return the number of pixels
-	 */
-	protected int convertWidthInCharsToPixels(int chars) {
-		// test for failure to initialize for backward compatibility
-		if (fontMetrics == null) {
-			return 0;
-		}
-		return convertWidthInCharsToPixels(fontMetrics, chars);
-	}
-
-	/**
-	 * Creates a new button with the given id.
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method creates
-	 * a standard push button, registers it for selection events including
-	 * button presses, and registers default buttons with its shell. The button
-	 * id is stored as the button's client data. If the button id is
-	 * <code>IDialogConstants.CANCEL_ID</code>, the new button will be
-	 * accessible from <code>getCancelButton()</code>. If the button id is
-	 * <code>IDialogConstants.OK_ID</code>, the new button will be accesible
-	 * from <code>getOKButton()</code>. Note that the parent's layout is
-	 * assumed to be a <code>GridLayout</code> and the number of columns in
-	 * this layout is incremented. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @param id
-	 *            the id of the button (see <code>IDialogConstants.*_ID</code>
-	 *            constants for standard dialog button ids)
-	 * @param label
-	 *            the label from the button
-	 * @param defaultButton
-	 *            <code>true</code> if the button is to be the default button,
-	 *            and <code>false</code> otherwise
-	 * 
-	 * @return the new button
-	 * 
-	 * @see #getCancelButton
-	 * @see #getOKButton()
-	 */
-	protected Button createButton(Composite parent, int id, String label,
-			boolean defaultButton) {
-		// increment the number of columns in the button bar
-		((GridLayout) parent.getLayout()).numColumns++;
-		Button button = new Button(parent, SWT.PUSH);
-		button.setText(label);
-		button.setFont(JFaceResources.getDialogFont());
-		button.setData(new Integer(id));
-		button.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent event) {
-				buttonPressed(((Integer) event.widget.getData()).intValue());
-			}
-		});
-		if (defaultButton) {
-			Shell shell = parent.getShell();
-			if (shell != null) {
-				shell.setDefaultButton(button);
-			}
-		}
-		buttons.put(new Integer(id), button);
-		setButtonLayoutData(button);
-		return button;
-	}
-
-	/**
-	 * Creates and returns the contents of this dialog's button bar.
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method lays
-	 * out a button bar and calls the <code>createButtonsForButtonBar</code>
-	 * framework method to populate it. Subclasses may override.
-	 * </p>
-	 * <p>
-	 * The returned control's layout data must be an instance of
-	 * <code>GridData</code>.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite to contain the button bar
-	 * @return the button bar control
-	 */
-	protected Control createButtonBar(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		// create a layout with spacing and margins appropriate for the font
-		// size.
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 0; // this is incremented by createButton
-		layout.makeColumnsEqualWidth = true;
-		layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		composite.setLayout(layout);
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_END
-				| GridData.VERTICAL_ALIGN_CENTER);
-		composite.setLayoutData(data);
-		composite.setFont(parent.getFont());
-		
-		// Add the buttons to the button bar.
-		createButtonsForButtonBar(composite);
-		return composite;
-	}
-
-	/**
-	 * Adds buttons to this dialog's button bar.
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method adds
-	 * standard ok and cancel buttons using the <code>createButton</code>
-	 * framework method. These standard buttons will be accessible from
-	 * <code>getCancelButton</code>, and <code>getOKButton</code>.
-	 * Subclasses may override.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the button bar composite
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		// create OK and Cancel buttons by default
-		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
-				true);
-		createButton(parent, IDialogConstants.CANCEL_ID,
-				IDialogConstants.CANCEL_LABEL, false);
-	}
-
-	/*
-	 * @see Window.initializeBounds()
-	 */
-	protected void initializeBounds() {
-		String platform = SWT.getPlatform();
-		if ("carbon".equals(platform)) { //$NON-NLS-1$
-			// On Mac OS X the default button must be the right-most button
-			Shell shell = getShell();
-			if (shell != null) {
-				Button defaultButton = shell.getDefaultButton();
-				if (defaultButton != null
-						&& isContained(buttonBar, defaultButton)) {
-					defaultButton.moveBelow(null);
-				}
-			}
-		}
-		
-		super.initializeBounds();
-	}
-
-	/**
-	 * Returns true if the given Control is a direct or indirect child of
-	 * container.
-	 * 
-	 * @param container
-	 *            the potential parent
-	 * @param control
-	 * @return boolean <code>true</code> if control is a child of container
-	 */
-	private boolean isContained(Control container, Control control) {
-		Composite parent;
-		while ((parent = control.getParent()) != null) {
-			if (parent == container) {
-				return true;
-			}
-			control = parent;
-		}
-		return false;
-	}
-
-	/**
-	 * The <code>Dialog</code> implementation of this <code>Window</code>
-	 * method creates and lays out the top level composite for the dialog, and
-	 * determines the appropriate horizontal and vertical dialog units based on
-	 * the font size. It then calls the <code>createDialogArea</code> and
-	 * <code>createButtonBar</code> methods to create the dialog area and
-	 * button bar, respectively. Overriding <code>createDialogArea</code> and
-	 * <code>createButtonBar</code> are recommended rather than overriding
-	 * this method.
-	 */
-	protected Control createContents(Composite parent) {
-		// create the top level composite for the dialog
-		Composite composite = new Composite(parent, 0);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		layout.verticalSpacing = 0;
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		applyDialogFont(composite);
-		// initialize the dialog units
-		initializeDialogUnits(composite);
-		// create the dialog area and button bar
-		dialogArea = createDialogArea(composite);
-		buttonBar = createButtonBar(composite);
-				
-		return composite;
-	}
-
-	/**
-	 * Creates and returns the contents of the upper part of this dialog (above
-	 * the button bar).
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method creates
-	 * and returns a new <code>Composite</code> with standard margins and
-	 * spacing.
-	 * </p>
-	 * <p>
-	 * The returned control's layout data must be an instance of
-	 * <code>GridData</code>. This method must not modify the parent's
-	 * layout.
-	 * </p>
-	 * <p>
-	 * Subclasses must override this method but may call <code>super</code> as
-	 * in the following example:
-	 * </p>
-	 * 
-	 * <pre>
-	 * Composite composite = (Composite) super.createDialogArea(parent);
-	 * //add controls to composite as necessary
-	 * return composite;
-	 * </pre>
-	 * 
-	 * @param parent
-	 *            the parent composite to contain the dialog area
-	 * @return the dialog area control
-	 */
-	protected Control createDialogArea(Composite parent) {
-		// create a composite with standard margins and spacing
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
-		layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		applyDialogFont(composite);
-		return composite;
-	}
-
-	/**
-	 * Returns the button created by the method <code>createButton</code> for
-	 * the specified ID as defined on <code>IDialogConstants</code>. If
-	 * <code>createButton</code> was never called with this ID, or if
-	 * <code>createButton</code> is overridden, this method will return
-	 * <code>null</code>.
-	 * 
-	 * @param id
-	 *            the id of the button to look for
-	 * 
-	 * @return the button for the ID or <code>null</code>
-	 * 
-	 * @see #createButton(Composite, int, String, boolean)
-	 * @since 2.0
-	 */
-	protected Button getButton(int id) {
-		return (Button) buttons.get(new Integer(id));
-	}
-
-	/**
-	 * Returns the button bar control.
-	 * <p>
-	 * Clients may call this framework method, but should not override it.
-	 * </p>
-	 * 
-	 * @return the button bar, or <code>null</code> if the button bar has not
-	 *         been created yet
-	 */
-	protected Control getButtonBar() {
-		return buttonBar;
-	}
-
-	/**
-	 * Returns the button created when <code>createButton</code> is called
-	 * with an ID of <code>IDialogConstants.CANCEL_ID</code>. If
-	 * <code>createButton</code> was never called with this parameter, or if
-	 * <code>createButton</code> is overridden, <code>getCancelButton</code>
-	 * will return <code>null</code>.
-	 * 
-	 * @return the cancel button or <code>null</code>
-	 * 
-	 * @see #createButton(Composite, int, String, boolean)
-	 * @since 2.0
-	 * @deprecated Use <code>getButton(IDialogConstants.CANCEL_ID)</code>
-	 *             instead. This method will be removed soon.
-	 */
-	protected Button getCancelButton() {
-		return getButton(IDialogConstants.CANCEL_ID);
-	}
-
-	/**
-	 * Returns the dialog area control.
-	 * <p>
-	 * Clients may call this framework method, but should not override it.
-	 * </p>
-	 * 
-	 * @return the dialog area, or <code>null</code> if the dialog area has
-	 *         not been created yet
-	 */
-	protected Control getDialogArea() {
-		return dialogArea;
-	}
-
-	/**
-	 * Returns the standard dialog image with the given key. Note that these
-	 * images are managed by the dialog framework, and must not be disposed by
-	 * another party.
-	 * 
-	 * @param key
-	 *            one of the <code>Dialog.DLG_IMG_* </code> constants
-	 * @return the standard dialog image
-	 * 
-	 * NOTE: Dialog does not use the following images in the registry
-	 * DLG_IMG_ERROR DLG_IMG_INFO DLG_IMG_QUESTION DLG_IMG_WARNING
-	 * 
-	 * They are now coming directly from SWT, see ImageRegistry. For backwards
-	 * compatibility they are still supported, however new code should use SWT
-	 * for these.
-	 * 
-	 * @see Display#getSystemImage(int)
-	 */
-	public static Image getImage(String key) {
-		return JFaceResources.getImageRegistry().get(key);
-	}
-
-	/**
-	 * Returns the button created when <code>createButton</code> is called
-	 * with an ID of <code>IDialogConstants.OK_ID</code>. If
-	 * <code>createButton</code> was never called with this parameter, or if
-	 * <code>createButton</code> is overridden, <code>getOKButton</code>
-	 * will return <code>null</code>.
-	 * 
-	 * @return the OK button or <code>null</code>
-	 * 
-	 * @see #createButton(Composite, int, String, boolean)
-	 * @since 2.0
-	 * @deprecated Use <code>getButton(IDialogConstants.OK_ID)</code> instead.
-	 *             This method will be removed soon.
-	 */
-	protected Button getOKButton() {
-		return getButton(IDialogConstants.OK_ID);
-	}
-
-	/**
-	 * Initializes the computation of horizontal and vertical dialog units based
-	 * on the size of current font.
-	 * <p>
-	 * This method must be called before any of the dialog unit based conversion
-	 * methods are called.
-	 * </p>
-	 * 
-	 * @param control
-	 *            a control from which to obtain the current font
-	 */
-	protected void initializeDialogUnits(Control control) {
-		// Compute and store a font metric
-		GC gc = new GC(control);
-		gc.setFont(JFaceResources.getDialogFont());
-		fontMetrics = gc.getFontMetrics();
-		gc.dispose();
-	}
-
-	/**
-	 * Notifies that the ok button of this dialog has been pressed.
-	 * <p>
-	 * The <code>Dialog</code> 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() {
-		setReturnCode(OK);
-		close();
-	}
-
-	/**
-	 * Set the layout data of the button to a GridData with appropriate heights
-	 * and widths.
-	 * 
-	 * @param button
-	 */
-	protected void setButtonLayoutData(Button button) {
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-		int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-		data.widthHint = Math.max(widthHint, minSize.x);
-		button.setLayoutData(data);
-	}
-
-	/**
-	 * Set the layout data of the button to a FormData with appropriate heights
-	 * and widths.
-	 * 
-	 * @param button
-	 */
-	protected void setButtonLayoutFormData(Button button) {
-		FormData data = new FormData();
-		int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-		data.width = Math.max(widthHint, minSize.x);
-		button.setLayoutData(data);
-	}
-
-	/**
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		if (getShell() != null && !getShell().isDisposed()) {
-			saveDialogBounds(getShell());
-		}
-
-		boolean returnValue = super.close();
-		if (returnValue) {
-			buttons = new HashMap();
-			buttonBar = null;
-			dialogArea = null;
-		}
-		return returnValue;
-	}
-
-	/**
-	 * Applies the dialog font to all controls that currently have the default
-	 * font.
-	 * 
-	 * @param control
-	 *            the control to apply the font to. Font will also be applied to
-	 *            its children. If the control is <code>null</code> nothing
-	 *            happens.
-	 */
-	public static void applyDialogFont(Control control) {
-		if (control == null || dialogFontIsDefault()) {
-			return;
-		}
-		Font dialogFont = JFaceResources.getDialogFont();
-		applyDialogFont(control, dialogFont);
-	}
-
-	/**
-	 * Sets the dialog font on the control and any of its children if their font
-	 * is not otherwise set.
-	 * 
-	 * @param control
-	 *            the control to apply the font to. Font will also be applied to
-	 *            its children.
-	 * @param dialogFont
-	 *            the dialog font to set
-	 */
-	private static void applyDialogFont(Control control, Font dialogFont) {
-		if (hasDefaultFont(control)) {
-			control.setFont(dialogFont);
-		}
-		if (control instanceof Composite) {
-			Control[] children = ((Composite) control).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				applyDialogFont(children[i], dialogFont);
-			}
-		}
-	}
-
-	/**
-	 * Return whether or not this control has the same font as it's default.
-	 * 
-	 * @param control
-	 *            Control
-	 * @return boolean
-	 */
-	private static boolean hasDefaultFont(Control control) {
-		FontData[] controlFontData = control.getFont().getFontData();
-		FontData[] defaultFontData = getDefaultFont(control).getFontData();
-		if (controlFontData.length == defaultFontData.length) {
-			for (int i = 0; i < controlFontData.length; i++) {
-				if (controlFontData[i].equals(defaultFontData[i])) {
-					continue;
-				}
-				return false;
-			}
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Get the default font for this type of control.
-	 * 
-	 * @param control
-	 * @return the default font
-	 */
-	private static Font getDefaultFont(Control control) {
-		String fontName = "DEFAULT_FONT_" + control.getClass().getName(); //$NON-NLS-1$
-		if (JFaceResources.getFontRegistry().hasValueFor(fontName)) {
-			return JFaceResources.getFontRegistry().get(fontName);
-		}
-		Font cached = control.getFont();
-		control.setFont(null);
-		Font defaultFont = control.getFont();
-		control.setFont(cached);
-		JFaceResources.getFontRegistry().put(fontName,
-				defaultFont.getFontData());
-		return defaultFont;
-	}
-
-	/**
-	 * Return whether or not the dialog font is currently the same as the
-	 * default font.
-	 * 
-	 * @return boolean if the two are the same
-	 */
-	protected static boolean dialogFontIsDefault() {
-		FontData[] dialogFontData = JFaceResources.getFontRegistry()
-				.getFontData(JFaceResources.DIALOG_FONT);
-		FontData[] defaultFontData = JFaceResources.getFontRegistry()
-				.getFontData(JFaceResources.DEFAULT_FONT);
-		return Arrays.equals(dialogFontData, defaultFontData);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#create()
-	 */
-	public void create() {
-		super.create();
-		applyDialogFont(buttonBar);
-	}
-
-	/**
-	 * Get the IDialogBlockedHandler to be used by WizardDialogs and
-	 * ModalContexts.
-	 * 
-	 * @return Returns the blockedHandler.
-	 */
-	public static IDialogBlockedHandler getBlockedHandler() {
-		return blockedHandler;
-	}
-
-	/**
-	 * Set the IDialogBlockedHandler to be used by WizardDialogs and
-	 * ModalContexts.
-	 * 
-	 * @param blockedHandler
-	 *            The blockedHandler for the dialogs.
-	 */
-	public static void setBlockedHandler(IDialogBlockedHandler blockedHandler) {
-		Dialog.blockedHandler = blockedHandler;
-	}
-
-	/**
-	 * Gets the dialog settings that should be used for remembering the bounds of
-	 * of the dialog, according to the dialog bounds strategy.
-	 * 
-	 * @return settings the dialog settings used to store the dialog's location
-	 *         and/or size, or <code>null</code> if the dialog's bounds should
-	 *         never be stored.
-	 * 
-	 * @since 3.2
-	 * @see Dialog#getDialogBoundsStrategy()
-	 */
-	protected IDialogSettings getDialogBoundsSettings() {
-		return null;
-	}
-
-	/**
-	 * Get the integer constant that describes the strategy for persisting the
-	 * dialog bounds. This strategy is ignored if the implementer does not also
-	 * specify the dialog settings for storing the bounds in
-	 * Dialog.getDialogBoundsSettings().
-	 * 
-	 * @return the constant describing the strategy for persisting the dialog
-	 *         bounds.
-	 * 
-	 * @since 3.2
-	 * @see Dialog#DIALOG_PERSISTLOCATION
-	 * @see Dialog#DIALOG_PERSISTSIZE
-	 * @see Dialog#getDialogBoundsSettings()
-	 */
-	protected int getDialogBoundsStrategy() {
-		return DIALOG_PERSISTLOCATION | DIALOG_PERSISTSIZE;
-	}
-
-	/**
-	 * Saves the bounds of the shell in the appropriate dialog settings. The
-	 * bounds are recorded relative to the parent shell, if there is one, or
-	 * display coordinates if there is no parent shell.
-	 * 
-	 * @param shell
-	 *            The shell whose bounds are to be stored
-	 * 
-	 * @since 3.2
-	 */
-	private void saveDialogBounds(Shell shell) {		
-		IDialogSettings settings = getDialogBoundsSettings();
-		if (settings != null) {
-			Point shellLocation = shell.getLocation();
-			Point shellSize = shell.getSize();
-			Shell parent = getParentShell();
-			if (parent != null) {
-				Point parentLocation = parent.getLocation();
-				shellLocation.x -= parentLocation.x;
-				shellLocation.y -= parentLocation.y;
-			}
-			int strategy = getDialogBoundsStrategy();
-			if ((strategy & DIALOG_PERSISTLOCATION) != 0) {
-				settings.put(DIALOG_ORIGIN_X, shellLocation.x);
-				settings.put(DIALOG_ORIGIN_Y, shellLocation.y);
-			}
-			if ((strategy & DIALOG_PERSISTSIZE) != 0) {
-				settings.put(DIALOG_WIDTH, shellSize.x);
-				settings.put(DIALOG_HEIGHT, shellSize.y);
-				FontData [] fontDatas = JFaceResources.getDialogFont().getFontData();
-				if (fontDatas.length > 0) {
-					settings.put(DIALOG_FONT_DATA, fontDatas[0].toString());
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns the initial size to use for the shell. Overridden
-	 * to check whether a size has been stored in dialog settings.
-	 * If a size has been stored, it is returned.
-	 * 
-	 * @return the initial size of the shell
-	 * 
-	 * @since 3.2
-	 * @see #getDialogBoundsSettings()
-	 * @see #getDialogBoundsStrategy()
-	 */
-	protected Point getInitialSize() {
-		Point result = super.getInitialSize();
-		
-		// Check the dialog settings for a stored size.
-		if ((getDialogBoundsStrategy() & DIALOG_PERSISTSIZE)!= 0) {
-			IDialogSettings settings = getDialogBoundsSettings();
-			if (settings != null) {
-				// Check that the dialog font matches the font used
-				// when the bounds was stored.  If the font has changed,
-				// we do not honor the stored settings.  
-				// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=132821
-				boolean useStoredBounds = true;
-				String previousDialogFontData = settings.get(DIALOG_FONT_DATA);
-				// There is a previously stored font, so we will check it.
-				// Note that if we haven't stored the font before, then we will
-				// use the stored bounds.  This allows restoring of dialog bounds 
-				// that were stored before we started storing the fontdata.
-				if (previousDialogFontData != null && previousDialogFontData.length() > 0) {
-					FontData [] fontDatas = JFaceResources.getDialogFont().getFontData();
-					if (fontDatas.length > 0) {
-						String currentDialogFontData = fontDatas[0].toString();
-						useStoredBounds = currentDialogFontData.equalsIgnoreCase(previousDialogFontData);
-					}
-				}
-				if (useStoredBounds) {
-					try {
-						// Get the stored width and height.
-						int width = settings.getInt(DIALOG_WIDTH);
-						if (width != DIALOG_DEFAULT_BOUNDS) {
-							result.x = width;
-						}
-						int height = settings.getInt(DIALOG_HEIGHT);
-						if (height != DIALOG_DEFAULT_BOUNDS) {
-							result.y = height;
-						}
-		
-					} catch (NumberFormatException e) {
-					}
-				}
-			}
-		}
-		// No attempt is made to constrain the bounds. The default
-		// constraining behavior in Window will be used.
-		return result;
-	}
-
-	/**
-	 * Returns the initial location to use for the shell. Overridden
-	 * to check whether the bounds of the dialog have been stored in
-	 * dialog settings.  If a location has been stored, it is returned.
-	 * 
-	 * @param initialSize
-	 *            the initial size of the shell, as returned by
-	 *            <code>getInitialSize</code>.
-	 * @return the initial location of the shell
-	 * 
-	 * @since 3.2
-	 * @see #getDialogBoundsSettings()
-	 * @see #getDialogBoundsStrategy()
-	 */
-	protected Point getInitialLocation(Point initialSize) {
-		Point result = super.getInitialLocation(initialSize);
-		if ((getDialogBoundsStrategy() & DIALOG_PERSISTLOCATION)!= 0) {
-			IDialogSettings settings = getDialogBoundsSettings();
-			if (settings != null) {
-				try {
-					int x = settings.getInt(DIALOG_ORIGIN_X);
-					int y = settings.getInt(DIALOG_ORIGIN_Y);
-					result = new Point(x, y);
-					// The coordinates were stored relative to the parent shell.
-					// Convert to display coordinates.
-					Shell parent = getParentShell();
-					if (parent != null) {
-						Point parentLocation = parent.getLocation();
-						result.x += parentLocation.x;
-						result.y += parentLocation.y;
-					}
-				} catch (NumberFormatException e) {
-				}
-			}
-		}
-		// No attempt is made to constrain the bounds. The default
-		// constraining behavior in Window will be used.
-		return result;
-	}
-	
-	/**
-	 * Returns a boolean indicating whether the dialog should be
-	 * considered resizable when the shell style is initially
-	 * set.  
-	 * 
-	 * This method is used to ensure that all style 
-	 * bits appropriate for resizable dialogs are added to the 
-	 * shell style.  Individual dialogs may always set the shell 
-	 * style to ensure that a dialog is resizable, but using this
-	 * method ensures that resizable dialogs will be created with
-	 * the same set of style bits.
-	 * 
-	 * Style bits will never be removed based on the return value 
-	 * of this method.  For example, if a dialog returns 
-	 * <code>false</code>, but also sets a style bit for a 
-	 * SWT.RESIZE border, the style bit will be honored.
-	 * 
-	 * @return a boolean indicating whether the dialog is 
-	 * resizable and should have the default style bits for
-	 * resizable dialogs
-	 * 
-	 * @since 3.4
-	 */
-	protected boolean isResizable() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogMessageArea.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogMessageArea.java
deleted file mode 100644
index 14a0927..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogMessageArea.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Image;
-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.Text;
-
-/**
- * The DialogMessageArea is a resusable component for adding an accessible
- * message area to a dialog.
- * 
- * When the message is normal a CLabel is used but an errors replaces the
- * message area with a non editable text that can take focus for use by screen
- * readers.
- * 
- * @since 3.0
- */
-public class DialogMessageArea extends Object {
-    private Text messageText;
-
-    private Label messageImageLabel;
-
-    private Composite messageComposite;
-
-    private String lastMessageText;
-
-    private int lastMessageType;
-
-    private CLabel titleLabel;
-
-    /**
-     * Create a new instance of the receiver.
-     */
-    public DialogMessageArea() {
-        //No initial behaviour
-    }
-
-    /**
-     * Create the contents for the receiver.
-     * 
-     * @param parent
-     *            the Composite that the children will be created in
-     */
-    public void createContents(Composite parent) {
-       
-        // Message label
-        titleLabel = new CLabel(parent, SWT.NONE);
-        titleLabel.setFont(JFaceResources.getBannerFont());
-        messageComposite = new Composite(parent, SWT.NONE);
-        GridLayout messageLayout = new GridLayout();
-        messageLayout.numColumns = 2;
-        messageLayout.marginWidth = 0;
-        messageLayout.marginHeight = 0;
-        messageLayout.makeColumnsEqualWidth = false;
-        messageComposite.setLayout(messageLayout);
-        messageImageLabel = new Label(messageComposite, SWT.NONE);
-        messageImageLabel.setImage(JFaceResources
-                .getImage(Dialog.DLG_IMG_MESSAGE_INFO));
-        messageImageLabel.setLayoutData(new GridData(
-                GridData.VERTICAL_ALIGN_CENTER));
-  
-        messageText = new Text(messageComposite, SWT.NONE);
-        messageText.setEditable(false);
-  
-        GridData textData = new GridData(GridData.GRAB_HORIZONTAL
-                | GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);
-        messageText.setLayoutData(textData);
-  
-    }
-
-    /**
-     * Set the layoutData for the title area. In most cases this will be a copy
-     * of the layoutData used in setMessageLayoutData.
-     * 
-     * @param layoutData
-     *            the layoutData for the title
-     * @see #setMessageLayoutData(Object)
-     */
-    public void setTitleLayoutData(Object layoutData) {
-        titleLabel.setLayoutData(layoutData);
-    }
-
-    /**
-     * Set the layoutData for the messageArea. In most cases this will be a copy
-     * of the layoutData used in setTitleLayoutData.
-     * 
-     * @param layoutData
-     *            the layoutData for the message area composite.
-     * @see #setTitleLayoutData(Object)
-     */
-    public void setMessageLayoutData(Object layoutData) {
-        messageComposite.setLayoutData(layoutData);
-    }
-
-    /**
-     * Show the title.
-     * 
-     * @param titleMessage
-     *            String for the titke
-     * @param titleImage
-     *            Image or <code>null</code>
-     */
-    public void showTitle(String titleMessage, Image titleImage) {
-        titleLabel.setImage(titleImage);
-        titleLabel.setText(titleMessage);
-        restoreTitle();
-        return;
-    }
-
-    /**
-     * Enable the title and disable the message text and image.
-     */
-    public void restoreTitle() {
-        titleLabel.setVisible(true);
-        messageComposite.setVisible(false);
-        lastMessageText = null;
-        lastMessageType = IMessageProvider.NONE;
-    }
-
-    /**
-     * Show the new message in the message text and update the image. Base the
-     * background color on whether or not there are errors.
-     * 
-     * @param newMessage
-     *            The new value for the message
-     * @param newType
-     *            One of the IMessageProvider constants. If newType is
-     *            IMessageProvider.NONE show the title.
-     * @see IMessageProvider
-     */
-    public void updateText(String newMessage, int newType) {
-        Image newImage = null;
-        switch (newType) {
-        case IMessageProvider.NONE:
-            if (newMessage == null) {
-				restoreTitle();
-			} else {
-				showTitle(newMessage, null);
-			}
-            return;
-        case IMessageProvider.INFORMATION:
-            newImage = JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_INFO);
-            break;
-        case IMessageProvider.WARNING:
-            newImage = JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING);
-            break;
-        case IMessageProvider.ERROR:
-            newImage = JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR);
-
-            break;
-        }
-        messageComposite.setVisible(true);
-        titleLabel.setVisible(false);
-        // Any more updates required?
-        // If the message text equals the tooltip (i.e. non-shortened text is the same)
-        // and shortened text is the same (i.e. not a resize)
-        // and the image is the same then nothing to do
-        String shortText = Dialog.shortenText(newMessage,messageText);
-        if (newMessage.equals(messageText.getToolTipText())
-                && newImage == messageImageLabel.getImage()
-                	&& shortText.equals(messageText.getText())) {
-			return;
-		}
-        messageImageLabel.setImage(newImage);
-        messageText.setText(Dialog.shortenText(newMessage,messageText));
-        messageText.setToolTipText(newMessage);
-        lastMessageText = newMessage;
- 
-    }
-
-
-    /**
-     * Clear the error message. Restore the previously displayed message if
-     * there is one, if not restore the title label.
-     *  
-     */
-    public void clearErrorMessage() {
-        if (lastMessageText == null) {
-			restoreTitle();
-		} else {
-			updateText(lastMessageText, lastMessageType);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogPage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogPage.java
deleted file mode 100644
index 9da5db1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogPage.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Abstract base implementation of a dialog page. All dialog pages are
- * subclasses of this one.
- */
-public abstract class DialogPage implements IDialogPage, IMessageProvider {
-    /**
-     * The control for this dialog page.
-     */
-    private Control control;
-
-    /**
-     * Optional title; <code>null</code> if none.
-     * 
-     * @see #setTitle
-     */
-    private String title = null;
-
-    /**
-     * Optional description; <code>null</code> if none.
-     * 
-     * @see #setDescription
-     */
-    private String description = null;
-
-    /**
-     * Cached image; <code>null</code> if none.
-     * 
-     * @see #setImageDescriptor(ImageDescriptor)
-     */
-    private Image image = null;
-
-    /**
-     * Optional image; <code>null</code> if none.
-     * 
-     * @see #setImageDescriptor(ImageDescriptor)
-     */
-    private ImageDescriptor imageDescriptor = null;
-
-    /**
-     * The current message; <code>null</code> if none.
-     */
-    private String message = null;
-
-    /**
-     * The current message type; default value <code>NONE</code>.
-     */
-    private int messageType = NONE;
-
-    /**
-     * The current error message; <code>null</code> if none.
-     */
-    private String errorMessage = null;
-
-    /**
-     * Font metrics to use for determining pixel sizes.
-     */
-    private FontMetrics fontMetrics;
-
-    /**
-     * Creates a new empty dialog page.
-     */
-    protected DialogPage() {
-        //No initial behaviour
-    }
-
-    /**
-     * Creates a new dialog page with the given title.
-     * 
-     * @param title
-     *            the title of this dialog page, or <code>null</code> if none
-     */
-    protected DialogPage(String title) {
-        this.title = title;
-    }
-
-    /**
-     * Creates a new dialog page with the given title and image.
-     * 
-     * @param title
-     *            the title of this dialog page, or <code>null</code> if none
-     * @param image
-     *            the image for this dialog page, or <code>null</code> if none
-     */
-    protected DialogPage(String title, ImageDescriptor image) {
-        this(title);
-        imageDescriptor = image;
-    }
-
-    /**
-     * Returns the number of pixels corresponding to the height of the given
-     * number of characters.
-     * <p>
-     * This method may only be called after <code>initializeDialogUnits</code>
-     * has been called.
-     * </p>
-     * <p>
-     * Clients may call this framework method, but should not override it.
-     * </p>
-     * 
-     * @param chars
-     *            the number of characters
-     * @return the number of pixels
-     */
-    protected int convertHeightInCharsToPixels(int chars) {
-        // test for failure to initialize for backward compatibility
-        if (fontMetrics == null) {
-			return 0;
-		}
-        return Dialog.convertHeightInCharsToPixels(fontMetrics, chars);
-    }
-
-    /**
-     * Returns the number of pixels corresponding to the given number of
-     * horizontal dialog units.
-     * <p>
-     * This method may only be called after <code>initializeDialogUnits</code>
-     * has been called.
-     * </p>
-     * <p>
-     * Clients may call this framework method, but should not override it.
-     * </p>
-     * 
-     * @param dlus
-     *            the number of horizontal dialog units
-     * @return the number of pixels
-     */
-    protected int convertHorizontalDLUsToPixels(int dlus) {
-        // test for failure to initialize for backward compatibility
-        if (fontMetrics == null) {
-			return 0;
-		}
-        return Dialog.convertHorizontalDLUsToPixels(fontMetrics, dlus);
-    }
-
-    /**
-     * Returns the number of pixels corresponding to the given number of
-     * vertical dialog units.
-     * <p>
-     * This method may only be called after <code>initializeDialogUnits</code>
-     * has been called.
-     * </p>
-     * <p>
-     * Clients may call this framework method, but should not override it.
-     * </p>
-     * 
-     * @param dlus
-     *            the number of vertical dialog units
-     * @return the number of pixels
-     */
-    protected int convertVerticalDLUsToPixels(int dlus) {
-        // test for failure to initialize for backward compatibility
-        if (fontMetrics == null) {
-			return 0;
-		}
-        return Dialog.convertVerticalDLUsToPixels(fontMetrics, dlus);
-    }
-
-    /**
-     * Returns the number of pixels corresponding to the width of the given
-     * number of characters.
-     * <p>
-     * This method may only be called after <code>initializeDialogUnits</code>
-     * has been called.
-     * </p>
-     * <p>
-     * Clients may call this framework method, but should not override it.
-     * </p>
-     * 
-     * @param chars
-     *            the number of characters
-     * @return the number of pixels
-     */
-    protected int convertWidthInCharsToPixels(int chars) {
-        // test for failure to initialize for backward compatibility
-        if (fontMetrics == null) {
-			return 0;
-		}
-        return Dialog.convertWidthInCharsToPixels(fontMetrics, chars);
-    }
-
-    /**
-     * The <code>DialogPage</code> implementation of an
-     * <code>IDialogPage</code> method does nothing. Subclasses may extend.
-     */
-    public void dispose() {
-        // deallocate SWT resources
-        if (image != null) {
-            image.dispose();
-            image = null;
-        }
-    }
-
-    /**
-     * Returns the top level control for this dialog page.
-     * 
-     * @return the top level control
-     */
-    public Control getControl() {
-        return control;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Returns the symbolic font name used by dialog pages.
-     * 
-     * @return the symbolic font name
-     */
-    protected String getDialogFontName() {
-        return JFaceResources.DIALOG_FONT;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public String getErrorMessage() {
-        return errorMessage;
-    }
-
-    /**
-     * Returns the default font to use for this dialog page.
-     * 
-     * @return the font
-     */
-    protected Font getFont() {
-        return JFaceResources.getFontRegistry().get(getDialogFontName());
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public Image getImage() {
-        if (image == null) {
-            if (imageDescriptor != null) {
-                image = imageDescriptor.createImage();
-            }
-        }
-        return image;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IMessageProvider.
-     */
-    public int getMessageType() {
-        return messageType;
-    }
-
-    /**
-     * Returns this dialog page's shell. Convenience method for
-     * <code>getControl().getShell()</code>. This method may only be called
-     * after the page's control has been created.
-     * 
-     * @return the shell
-     */
-    public Shell getShell() {
-        return getControl().getShell();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public String getTitle() {
-        return title;
-    }
-
-    /**
-     * Returns the tool tip text for the widget with the given id.
-     * <p>
-     * The default implementation of this framework method does nothing and
-     * returns <code>null</code>. Subclasses may override.
-     * </p>
-     * 
-     * @param widgetId
-     *            the id of the widget for which hover help is requested
-     * @return the tool tip text, or <code>null</code> if none
-     * @deprecated 
-     */
-    protected final String getToolTipText(int widgetId) {
-        // return nothing by default
-        return null;
-    }
-
-    /**
-     * Initializes the computation of horizontal and vertical dialog units based
-     * on the size of current font.
-     * <p>
-     * This method must be called before any of the dialog unit based conversion
-     * methods are called.
-     * </p>
-     * 
-     * @param testControl
-     *            a control from which to obtain the current font
-     */
-    protected void initializeDialogUnits(Control testControl) {
-        // Compute and store a font metric
-        GC gc = new GC(testControl);
-        gc.setFont(JFaceResources.getDialogFont());
-        fontMetrics = gc.getFontMetrics();
-        gc.dispose();
-    }
-
-    /**
-     * Sets the <code>GridData</code> on the specified button to be one that
-     * is spaced for the current dialog page units. The method
-     * <code>initializeDialogUnits</code> must be called once before calling
-     * this method for the first time.
-     * 
-     * @param button
-     *            the button to set the <code>GridData</code>
-     * @return the <code>GridData</code> set on the specified button
-     */
-    protected GridData setButtonLayoutData(Button button) {
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-        Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-        data.widthHint = Math.max(widthHint, minSize.x);
-        button.setLayoutData(data);
-        return data;
-    }
-
-    /**
-     * Tests whether this page's UI content has already been created.
-     * 
-     * @return <code>true</code> if the control has been created, and
-     *         <code>false</code> if not
-     */
-    protected boolean isControlCreated() {
-        return control != null;
-    }
-
-    /**
-     * This default implementation of an <code>IDialogPage</code> method does
-     * nothing. Subclasses should override to take some action in response to a
-     * help request.
-     */
-    public void performHelp() {
-        //No default help
-    }
-
-    /**
-     * Set the control for the receiver.
-     * @param newControl
-     */
-    protected void setControl(Control newControl) {
-        control = newControl;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    /**
-     * Sets or clears the error message for this page.
-     * 
-     * @param newMessage
-     *            the message, or <code>null</code> to clear the error message
-     */
-    public void setErrorMessage(String newMessage) {
-        errorMessage = newMessage;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IDialogPage.
-     */
-    public void setImageDescriptor(ImageDescriptor desc) {
-        imageDescriptor = desc;
-        if (image != null) {
-            image.dispose();
-            image = null;
-        }
-    }
-
-    /**
-     * Sets or clears the message for this page.
-     * <p>
-     * This is a shortcut for <code>setMessage(newMesasge, NONE)</code>
-     * </p>
-     * 
-     * @param newMessage
-     *            the message, or <code>null</code> to clear the message
-     */
-    public void setMessage(String newMessage) {
-        setMessage(newMessage, NONE);
-    }
-
-    /**
-     * Sets the message for this page with an indication of what type of message
-     * it is.
-     * <p>
-     * The valid message types are one of <code>NONE</code>,
-     * <code>INFORMATION</code>,<code>WARNING</code>, or
-     * <code>ERROR</code>.
-     * </p>
-     * <p>
-     * Note that for backward compatibility, a message of type
-     * <code>ERROR</code> is different than an error message (set using
-     * <code>setErrorMessage</code>). An error message overrides the current
-     * message until the error message is cleared. This method replaces the
-     * current message and does not affect the error message.
-     * </p>
-     * 
-     * @param newMessage
-     *            the message, or <code>null</code> to clear the message
-     * @param newType
-     *            the message type
-     * @since 2.0
-     */
-    public void setMessage(String newMessage, int newType) {
-        message = newMessage;
-        messageType = newType;
-    }
-
-    /**
-     * The <code>DialogPage</code> implementation of this
-     * <code>IDialogPage</code> method remembers the title in an internal
-     * state variable. Subclasses may extend.
-     */
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    /**
-     * The <code>DialogPage</code> implementation of this
-     * <code>IDialogPage</code> method sets the control to the given
-     * visibility state. Subclasses may extend.
-     */
-    public void setVisible(boolean visible) {
-        control.setVisible(visible);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java
deleted file mode 100644
index b724e3e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java
+++ /dev/null
@@ -1,562 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * Concrete implementation of a dialog settings (<code>IDialogSettings</code>)
- * using a hash table and XML. The dialog store can be read
- * from and saved to a stream. All keys and values must be strings or array of
- * strings. Primitive types are converted to strings.
- * <p>
- * This class was not designed to be subclassed.
- *
- * Here is an example of using a DialogSettings:
- * </p>
- * <pre>
- * <code>
- * DialogSettings settings = new DialogSettings("root");
- * settings.put("Boolean1",true);
- * settings.put("Long1",100);
- * settings.put("Array1",new String[]{"aaaa1","bbbb1","cccc1"});
- * DialogSettings section = new DialogSettings("sectionName");
- * settings.addSection(section);
- * section.put("Int2",200);
- * section.put("Float2",1.1);
- * section.put("Array2",new String[]{"aaaa2","bbbb2","cccc2"});
- * settings.save("c:\\temp\\test\\dialog.xml");
- * </code>
- * </pre>
- * @noextend This class is not intended to be subclassed by clients.
- */
-
-public class DialogSettings implements IDialogSettings {
-    // The name of the DialogSettings.
-    private String name;
-
-    /* A Map of DialogSettings representing each sections in a DialogSettings.
-     It maps the DialogSettings' name to the DialogSettings */
-    private Map sections;
-
-    /* A Map with all the keys and values of this sections.
-     Either the keys an values are restricted to strings. */
-    private Map items;
-
-    // A Map with all the keys mapped to array of strings.
-    private Map arrayItems;
-
-    private static final String TAG_SECTION = "section";//$NON-NLS-1$
-
-    private static final String TAG_NAME = "name";//$NON-NLS-1$
-
-    private static final String TAG_KEY = "key";//$NON-NLS-1$
-
-    private static final String TAG_VALUE = "value";//$NON-NLS-1$
-
-    private static final String TAG_LIST = "list";//$NON-NLS-1$
-
-    private static final String TAG_ITEM = "item";//$NON-NLS-1$
-
-    /**
-     * Create an empty dialog settings which loads and saves its
-     * content to a file.
-     * Use the methods <code>load(String)</code> and <code>store(String)</code>
-     * to load and store this dialog settings.
-     *
-     * @param sectionName the name of the section in the settings.
-     */
-    public DialogSettings(String sectionName) {
-        name = sectionName;
-        items = new HashMap();
-        arrayItems = new HashMap();
-        sections = new HashMap();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public IDialogSettings addNewSection(String sectionName) {
-        DialogSettings section = new DialogSettings(sectionName);
-        addSection(section);
-        return section;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void addSection(IDialogSettings section) {
-        sections.put(section.getName(), section);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public String get(String key) {
-        return (String) items.get(key);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public String[] getArray(String key) {
-        return (String[]) arrayItems.get(key);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public boolean getBoolean(String key) {
-        return Boolean.valueOf((String) items.get(key)).booleanValue();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public double getDouble(String key) throws NumberFormatException {
-        String setting = (String) items.get(key);
-        if (setting == null) {
-			throw new NumberFormatException(
-                    "There is no setting associated with the key \"" + key + "\"");//$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-        return new Double(setting).doubleValue();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public float getFloat(String key) throws NumberFormatException {
-        String setting = (String) items.get(key);
-        if (setting == null) {
-			throw new NumberFormatException(
-                    "There is no setting associated with the key \"" + key + "\"");//$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-        return new Float(setting).floatValue();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public int getInt(String key) throws NumberFormatException {
-        String setting = (String) items.get(key);
-        if (setting == null) {
-            //new Integer(null) will throw a NumberFormatException and meet our spec, but this message
-            //is clearer.
-            throw new NumberFormatException(
-                    "There is no setting associated with the key \"" + key + "\"");//$NON-NLS-1$ //$NON-NLS-2$
-        }
-
-        return new Integer(setting).intValue();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public long getLong(String key) throws NumberFormatException {
-        String setting = (String) items.get(key);
-        if (setting == null) {
-            //new Long(null) will throw a NumberFormatException and meet our spec, but this message
-            //is clearer.
-            throw new NumberFormatException(
-                    "There is no setting associated with the key \"" + key + "\"");//$NON-NLS-1$ //$NON-NLS-2$
-        }
-
-        return new Long(setting).longValue();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public IDialogSettings getSection(String sectionName) {
-        return (IDialogSettings) sections.get(sectionName);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public IDialogSettings[] getSections() {
-        Collection values = sections.values();
-        DialogSettings[] result = new DialogSettings[values.size()];
-        values.toArray(result);
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void load(Reader r) {
-        Document document = null;
-        try {
-            DocumentBuilder parser = DocumentBuilderFactory.newInstance()
-                    .newDocumentBuilder();
-            //		parser.setProcessNamespace(true);
-            document = parser.parse(new InputSource(r));
-
-            //Strip out any comments first
-            Node root = document.getFirstChild();
-            while (root.getNodeType() == Node.COMMENT_NODE) {
-                document.removeChild(root);
-                root = document.getFirstChild();
-            }
-            load(document, (Element) root);
-        } catch (ParserConfigurationException e) {
-            // ignore
-        } catch (IOException e) {
-            // ignore
-        } catch (SAXException e) {
-            // ignore
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void load(String fileName) throws IOException {
-        FileInputStream stream = new FileInputStream(fileName);
-        BufferedReader reader = new BufferedReader(new InputStreamReader(
-                stream, "utf-8"));//$NON-NLS-1$
-        load(reader);
-        reader.close();
-    }
-
-    /* (non-Javadoc)
-     * Load the setting from the <code>document</code>
-     */
-    private void load(Document document, Element root) {
-        name = root.getAttribute(TAG_NAME);
-        NodeList l = root.getElementsByTagName(TAG_ITEM);
-        for (int i = 0; i < l.getLength(); i++) {
-            Node n = l.item(i);
-            if (root == n.getParentNode()) {
-                String key = ((Element) l.item(i)).getAttribute(TAG_KEY);
-                String value = ((Element) l.item(i)).getAttribute(TAG_VALUE);
-                items.put(key, value);
-            }
-        }
-        l = root.getElementsByTagName(TAG_LIST);
-        for (int i = 0; i < l.getLength(); i++) {
-            Node n = l.item(i);
-            if (root == n.getParentNode()) {
-                Element child = (Element) l.item(i);
-                String key = child.getAttribute(TAG_KEY);
-                NodeList list = child.getElementsByTagName(TAG_ITEM);
-                List valueList = new ArrayList();
-                for (int j = 0; j < list.getLength(); j++) {
-                    Element node = (Element) list.item(j);
-                    if (child == node.getParentNode()) {
-                        valueList.add(node.getAttribute(TAG_VALUE));
-                    }
-                }
-                String[] value = new String[valueList.size()];
-                valueList.toArray(value);
-                arrayItems.put(key, value);
-            }
-        }
-        l = root.getElementsByTagName(TAG_SECTION);
-        for (int i = 0; i < l.getLength(); i++) {
-            Node n = l.item(i);
-            if (root == n.getParentNode()) {
-                DialogSettings s = new DialogSettings("NoName");//$NON-NLS-1$
-                s.load(document, (Element) n);
-                addSection(s);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, String[] value) {
-        arrayItems.put(key, value);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, double value) {
-        put(key, String.valueOf(value));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, float value) {
-        put(key, String.valueOf(value));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, int value) {
-        put(key, String.valueOf(value));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, long value) {
-        put(key, String.valueOf(value));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, String value) {
-        items.put(key, value);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void put(String key, boolean value) {
-        put(key, String.valueOf(value));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void save(Writer writer) throws IOException {
-    	save(new XMLWriter(writer));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogSettings.
-     */
-    public void save(String fileName) throws IOException {
-        FileOutputStream stream = new FileOutputStream(fileName);
-        XMLWriter writer = new XMLWriter(stream);
-        save(writer);
-        writer.close();
-    }
-
-    /* (non-Javadoc)
-     * Save the settings in the <code>document</code>.
-     */
-    private void save(XMLWriter out) {
-    	HashMap attributes = new HashMap(2);
-    	attributes.put(TAG_NAME, name == null ? "" : name); //$NON-NLS-1$
-        out.startTag(TAG_SECTION, attributes);
-        attributes.clear();
-
-        for (Iterator i = items.keySet().iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            attributes.put(TAG_KEY, key == null ? "" : key); //$NON-NLS-1$
-            String string = (String) items.get(key);
-            attributes.put(TAG_VALUE, string == null ? "" : string); //$NON-NLS-1$        
-            out.printTag(TAG_ITEM, attributes, true);
-        }
-
-        attributes.clear();
-        for (Iterator i = arrayItems.keySet().iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            attributes.put(TAG_KEY, key == null ? "" : key); //$NON-NLS-1$
-            out.startTag(TAG_LIST, attributes);
-            String[] value = (String[]) arrayItems.get(key);
-            attributes.clear();
-            if (value != null) {
-                for (int index = 0; index < value.length; index++) {
-                    String string = value[index];
-                    attributes.put(TAG_VALUE, string == null ? "" : string); //$NON-NLS-1$
-                    out.printTag(TAG_ITEM, attributes, true);
-                }
-            }
-            out.endTag(TAG_LIST);
-            attributes.clear();
-        }
-        for (Iterator i = sections.values().iterator(); i.hasNext();) {
-            ((DialogSettings) i.next()).save(out);
-        }
-        out.endTag(TAG_SECTION);
-    }
-    
-    /**
-     * A simple XML writer.  Using this instead of the javax.xml.transform classes allows
-     * compilation against JCL Foundation (bug 80059). 
-     */
-    private static class XMLWriter extends PrintWriter {
-    	/** current number of tabs to use for ident */
-    	protected int tab;
-
-    	/** the xml header */
-    	protected static final String XML_VERSION = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; //$NON-NLS-1$
-
-    	/**
-    	 * Create a new XMLWriter 
-    	 * @param output the stream to write the output to
-    	 * @throws UnsupportedEncodingException thrown if charset is not supported
-    	 */
-    	public XMLWriter(OutputStream output) throws UnsupportedEncodingException {
-    		super(new OutputStreamWriter(output, "UTF8")); //$NON-NLS-1$
-    		tab = 0;
-    		println(XML_VERSION);
-    	}
-
-    	/**
-    	 * Create a new XMLWriter 
-    	 * @param output the write to used when writing to
-    	 */
-    	public XMLWriter(Writer output) {
-    		super(output);
-    		tab = 0;
-    		println(XML_VERSION);
-    	}
-
-    	/**
-    	 * write the intended end tag
-    	 * @param name the name of the tag to end
-    	 */
-    	public void endTag(String name) {
-    		tab--;
-    		printTag("/" + name, null, false); //$NON-NLS-1$
-    	}
-
-    	private void printTabulation() {
-    		for (int i = 0; i < tab; i++) {
-				super.print('\t');
-			}
-    	}
-
-    	/**
-    	 * write the tag to the stream and format it by itending it and add new line after the tag
-    	 * @param name the name of the tag
-    	 * @param parameters map of parameters
-    	 * @param close should the tag be ended automatically (=> empty tag)
-    	 */
-    	public void printTag(String name, HashMap parameters, boolean close) {
-    		printTag(name, parameters, true, true, close);
-    	}
-
-    	private void printTag(String name, HashMap parameters, boolean shouldTab, boolean newLine, boolean close) {
-    		StringBuffer sb = new StringBuffer();
-    		sb.append('<');
-    		sb.append(name);
-    		if (parameters != null) {
-				for (Enumeration e = Collections.enumeration(parameters.keySet()); e.hasMoreElements();) {
-    				sb.append(" "); //$NON-NLS-1$
-    				String key = (String) e.nextElement();
-    				sb.append(key);
-    				sb.append("=\""); //$NON-NLS-1$
-    				sb.append(getEscaped(String.valueOf(parameters.get(key))));
-    				sb.append("\""); //$NON-NLS-1$
-    			}
-			}
-    		if (close) {
-				sb.append('/');
-			}
-    		sb.append('>');
-    		if (shouldTab) {
-				printTabulation();
-			}
-    		if (newLine) {
-				println(sb.toString());
-			} else {
-				print(sb.toString());
-			}
-    	}
-
-    	/**
-    	 * start the tag
-    	 * @param name the name of the tag
-    	 * @param parameters map of parameters
-    	 */
-    	public void startTag(String name, HashMap parameters) {
-    		startTag(name, parameters, true);
-    		tab++;
-    	}
-
-    	private void startTag(String name, HashMap parameters, boolean newLine) {
-    		printTag(name, parameters, true, newLine, false);
-    	}
-
-    	private static void appendEscapedChar(StringBuffer buffer, char c) {
-    		String replacement = getReplacement(c);
-    		if (replacement != null) {
-    			buffer.append('&');
-    			buffer.append(replacement);
-    			buffer.append(';');
-    		} else {
-    			buffer.append(c);
-    		}
-    	}
-
-    	private static String getEscaped(String s) {
-    		StringBuffer result = new StringBuffer(s.length() + 10);
-    		for (int i = 0; i < s.length(); ++i) {
-				appendEscapedChar(result, s.charAt(i));
-			}
-    		return result.toString();
-    	}
-
-    	private static String getReplacement(char c) {
-    		// Encode special XML characters into the equivalent character references.
-    		// The first five are defined by default for all XML documents.
-    		// The next three (#xD, #xA, #x9) are encoded to avoid them
-			// being converted to spaces on deserialization
-    		switch (c) {
-    			case '<' :
-    				return "lt"; //$NON-NLS-1$
-    			case '>' :
-    				return "gt"; //$NON-NLS-1$
-    			case '"' :
-    				return "quot"; //$NON-NLS-1$
-    			case '\'' :
-    				return "apos"; //$NON-NLS-1$
-    			case '&' :
-    				return "amp"; //$NON-NLS-1$
-    			case '\r':
-					return "#x0D"; //$NON-NLS-1$
-				case '\n':
-					return "#x0A"; //$NON-NLS-1$
-				case '\u0009':
-					return "#x09"; //$NON-NLS-1$
-    		}
-    		return null;
-    	}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogTray.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogTray.java
deleted file mode 100644
index 444ae1d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogTray.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * <p>
- * This class is the abstract superclass of all dialog trays. A tray can be opened
- * in any <code>TrayDialog</code>.
- * </p>
- * 
- * @see org.eclipse.jface.dialogs.TrayDialog
- * @since 3.2
- */
-public abstract class DialogTray {
-
-	/**
-	 * Creates the contents (widgets) that will be contained in the tray.
-	 * <p>
-	 * Tray implementions must not set a layout on the parent composite, or assume
-	 * a particular layout on the parent. The tray dialog will allocate space
-	 * according to the natural size of the tray, and will fill the tray area with the
-	 * tray's contents.
-	 * </p>
-	 * 
-	 * @param parent the composite that will contain the tray
-	 * @return the contents of the tray, as a <code>Control</code>
-	 */
-	protected abstract Control createContents(Composite parent);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java
deleted file mode 100644
index 4cc1cd0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorDialog.java
+++ /dev/null
@@ -1,689 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * 		IBM Corporation - initial API and implementation 
- * 		Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should
- * 			be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A dialog to display one or more errors to the user, as contained in an
- * <code>IStatus</code> object. If an error contains additional detailed
- * information then a Details button is automatically supplied, which shows or
- * hides an error details viewer when pressed by the user.
- * 
- * @see org.eclipse.core.runtime.IStatus
- */
-public class ErrorDialog extends IconAndMessageDialog {
-	/**
-	 * Static to prevent opening of error dialogs for automated testing.
-	 */
-	public static boolean AUTOMATED_MODE = false;
-
-	/**
-	 * Reserve room for this many list items.
-	 */
-	private static final int LIST_ITEM_COUNT = 7;
-
-	/**
-	 * The nesting indent.
-	 */
-	private static final String NESTING_INDENT = "  "; //$NON-NLS-1$
-
-	/**
-	 * The Details button.
-	 */
-	private Button detailsButton;
-
-	/**
-	 * The title of the dialog.
-	 */
-	private String title;
-
-	/**
-	 * The SWT list control that displays the error details.
-	 */
-	private List list;
-
-	/**
-	 * Indicates whether the error details viewer is currently created.
-	 */
-	private boolean listCreated = false;
-
-	/**
-	 * Filter mask for determining which status items to display.
-	 */
-	private int displayMask = 0xFFFF;
-
-	/**
-	 * The main status object.
-	 */
-	private IStatus status;
-
-	/**
-	 * The current clipboard. To be disposed when closing the dialog.
-	 */
-	private Clipboard clipboard;
-
-	private boolean shouldIncludeTopLevelErrorInDetails = false;
-
-
-	/**
-	 * Creates an error dialog. Note that the dialog will have no visual
-	 * representation (no widgets) until it is told to open.
-	 * <p>
-	 * Normally one should use <code>openError</code> to create and open one
-	 * of these. This constructor is useful only if the error object being
-	 * displayed contains child items <it>and </it> you need to specify a mask
-	 * which will be used to filter the displaying of these children. The error
-	 * dialog will only be displayed if there is at least one child status
-	 * matching the mask.
-	 * </p>
-	 * 
-	 * @param parentShell
-	 *            the shell under which to create this dialog
-	 * @param dialogTitle
-	 *            the title to use for this dialog, or <code>null</code> to
-	 *            indicate that the default title should be used
-	 * @param message
-	 *            the message to show in this dialog, or <code>null</code> to
-	 *            indicate that the error's message should be shown as the
-	 *            primary message
-	 * @param status
-	 *            the error to show to the user
-	 * @param displayMask
-	 *            the mask to use to filter the displaying of child items, as
-	 *            per <code>IStatus.matches</code>
-	 * @see org.eclipse.core.runtime.IStatus#matches(int)
-	 */
-	public ErrorDialog(Shell parentShell, String dialogTitle, String message,
-			IStatus status, int displayMask) {
-		super(parentShell);
-		this.title = dialogTitle == null ? JFaceResources
-				.getString("Problem_Occurred") : //$NON-NLS-1$
-				dialogTitle;
-		this.message = message == null ? status.getMessage()
-				: JFaceResources
-						.format(
-								"Reason", new Object[] { message, status.getMessage() }); //$NON-NLS-1$
-		this.status = status;
-		this.displayMask = displayMask;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog. Handles the pressing of the Ok
-	 * or Details button in this dialog. If the Ok button was pressed then close
-	 * this dialog. If the Details button was pressed then toggle the displaying
-	 * of the error details area. Note that the Details button will only be
-	 * visible if the error being displayed specifies child details.
-	 */
-	protected void buttonPressed(int id) {
-		if (id == IDialogConstants.DETAILS_ID) {
-			// was the details button pressed?
-			toggleDetailsArea();
-		} else {
-			super.buttonPressed(id);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in Window.
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-		shell.setText(title);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		// create OK and Details buttons
-		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
-				true);
-		createDetailsButton(parent);
-	}
-
-	/**
-	 * Create the area for extra error support information.
-	 * 
-	 * @param parent
-	 */
-	private void createSupportArea(Composite parent) {
-
-		ErrorSupportProvider provider = Policy.getErrorSupportProvider();
-
-		if (provider == null)
-			return;
-
-		Composite supportArea = new Composite(parent, SWT.NONE);
-		provider.createSupportArea(supportArea, status);
-
-		GridData supportData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		supportData.verticalSpan = 4;
-		supportArea.setLayoutData(supportData);
-		if (supportArea.getLayout() == null){
-			GridLayout layout = new GridLayout();
-			layout.marginWidth = 0;
-			layout.marginHeight = 0;
-			supportArea.setLayout(layout); // Give it a default layout if one isn't set
-		}
-
-
-	}
-
-	/**
-	 * Create the details button if it should be included.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @since 3.2
-	 */
-	protected void createDetailsButton(Composite parent) {
-		if (shouldShowDetailsButton()) {
-			detailsButton = createButton(parent, IDialogConstants.DETAILS_ID,
-					IDialogConstants.SHOW_DETAILS_LABEL, false);
-		}
-	}
-
-	/**
-	 * This implementation of the <code>Dialog</code> framework method creates
-	 * and lays out a composite. Subclasses that require a different dialog area
-	 * may either override this method, or call the <code>super</code>
-	 * implementation and add controls to the created composite.
-	 * 
-	 * Note:  Since 3.4, the created composite no longer grabs excess vertical space.
-	 * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=72489.
-	 * If the old behavior is desired by subclasses, get the returned composite's
-	 * layout data and set grabExcessVerticalSpace to true.
-	 */
-	protected Control createDialogArea(Composite parent) {
-		createMessageArea(parent);
-		createSupportArea(parent);
-		// create a composite with standard margins and spacing
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
-		layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		layout.numColumns = 2;
-		composite.setLayout(layout);
-		GridData childData = new GridData(GridData.FILL_BOTH);
-		childData.horizontalSpan = 2;
-		childData.grabExcessVerticalSpace = false;
-		composite.setLayoutData(childData);
-		composite.setFont(parent.getFont());
-
-		return composite;
-	}
-
-	/*
-	 * @see IconAndMessageDialog#createDialogAndButtonArea(Composite)
-	 */
-	protected void createDialogAndButtonArea(Composite parent) {
-		super.createDialogAndButtonArea(parent);
-		if (this.dialogArea instanceof Composite) {
-			// Create a label if there are no children to force a smaller layout
-			Composite dialogComposite = (Composite) dialogArea;
-			if (dialogComposite.getChildren().length == 0) {
-				new Label(dialogComposite, SWT.NULL);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage()
-	 */
-	protected Image getImage() {
-		if (status != null) {
-			if (status.getSeverity() == IStatus.WARNING) {
-				return getWarningImage();
-			}
-			if (status.getSeverity() == IStatus.INFO) {
-				return getInfoImage();
-			}
-		}
-		// If it was not a warning or an error then return the error image
-		return getErrorImage();
-	}
-
-	/**
-	 * Create this dialog's drop-down list component.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @return the drop-down list component
-	 */
-	protected List createDropDownList(Composite parent) {
-		// create the list
-		list = new List(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
-				| SWT.MULTI);
-		// fill the list
-		populateList(list);
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-				| GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL
-				| GridData.GRAB_VERTICAL);
-		data.heightHint = list.getItemHeight() * LIST_ITEM_COUNT;
-		data.horizontalSpan = 2;
-		list.setLayoutData(data);
-		list.setFont(parent.getFont());
-		Menu copyMenu = new Menu(list);
-		MenuItem copyItem = new MenuItem(copyMenu, SWT.NONE);
-		copyItem.addSelectionListener(new SelectionListener() {
-			/*
-			 * @see SelectionListener.widgetSelected (SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				copyToClipboard();
-			}
-
-			/*
-			 * @see SelectionListener.widgetDefaultSelected(SelectionEvent)
-			 */
-			public void widgetDefaultSelected(SelectionEvent e) {
-				copyToClipboard();
-			}
-		});
-		copyItem.setText(JFaceResources.getString("copy")); //$NON-NLS-1$
-		list.setMenu(copyMenu);
-		listCreated = true;
-		return list;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Window.
-	 */
-	/**
-	 * Extends <code>Window.open()</code>. Opens an error dialog to display
-	 * the error. If you specified a mask to filter the displaying of these
-	 * children, the error dialog will only be displayed if there is at least
-	 * one child status matching the mask.
-	 */
-	public int open() {
-		if (!AUTOMATED_MODE && shouldDisplay(status, displayMask)) {
-			return super.open();
-		}
-		setReturnCode(OK);
-		return OK;
-	}
-
-	/**
-	 * Opens an error dialog to display the given error. Use this method if the
-	 * error object being displayed does not contain child items, or if you wish
-	 * to display all such items without filtering.
-	 * 
-	 * @param parent
-	 *            the parent shell of the dialog, or <code>null</code> if none
-	 * @param dialogTitle
-	 *            the title to use for this dialog, or <code>null</code> to
-	 *            indicate that the default title should be used
-	 * @param message
-	 *            the message to show in this dialog, or <code>null</code> to
-	 *            indicate that the error's message should be shown as the
-	 *            primary message
-	 * @param status
-	 *            the error to show to the user
-	 * @return the code of the button that was pressed that resulted in this
-	 *         dialog closing. This will be <code>Dialog.OK</code> if the OK
-	 *         button was pressed, or <code>Dialog.CANCEL</code> if this
-	 *         dialog's close window decoration or the ESC key was used.
-	 */
-	public static int openError(Shell parent, String dialogTitle,
-			String message, IStatus status) {
-		return openError(parent, dialogTitle, message, status, IStatus.OK
-				| IStatus.INFO | IStatus.WARNING | IStatus.ERROR);
-	}
-
-	/**
-	 * Opens an error dialog to display the given error. Use this method if the
-	 * error object being displayed contains child items <it>and </it> you wish
-	 * to specify a mask which will be used to filter the displaying of these
-	 * children. The error dialog will only be displayed if there is at least
-	 * one child status matching the mask.
-	 * 
-	 * @param parentShell
-	 *            the parent shell of the dialog, or <code>null</code> if none
-	 * @param title
-	 *            the title to use for this dialog, or <code>null</code> to
-	 *            indicate that the default title should be used
-	 * @param message
-	 *            the message to show in this dialog, or <code>null</code> to
-	 *            indicate that the error's message should be shown as the
-	 *            primary message
-	 * @param status
-	 *            the error to show to the user
-	 * @param displayMask
-	 *            the mask to use to filter the displaying of child items, as
-	 *            per <code>IStatus.matches</code>
-	 * @return the code of the button that was pressed that resulted in this
-	 *         dialog closing. This will be <code>Dialog.OK</code> if the OK
-	 *         button was pressed, or <code>Dialog.CANCEL</code> if this
-	 *         dialog's close window decoration or the ESC key was used.
-	 * @see org.eclipse.core.runtime.IStatus#matches(int)
-	 */
-	public static int openError(Shell parentShell, String title,
-			String message, IStatus status, int displayMask) {
-		ErrorDialog dialog = new ErrorDialog(parentShell, title, message,
-				status, displayMask);
-		return dialog.open();
-	}
-
-	/**
-	 * Populates the list using this error dialog's status object. This walks
-	 * the child static of the status object and displays them in a list. The
-	 * format for each entry is status_path : status_message If the status's
-	 * path was null then it (and the colon) are omitted.
-	 * 
-	 * @param listToPopulate
-	 *            The list to fill.
-	 */
-	private void populateList(List listToPopulate) {
-		populateList(listToPopulate, status, 0,
-				shouldIncludeTopLevelErrorInDetails);
-	}
-
-	/**
-	 * Populate the list with the messages from the given status. Traverse the
-	 * children of the status deeply and also traverse CoreExceptions that
-	 * appear in the status.
-	 * 
-	 * @param listToPopulate
-	 *            the list to populate
-	 * @param buildingStatus
-	 *            the status being displayed
-	 * @param nesting
-	 *            the nesting level (increases one level for each level of
-	 *            children)
-	 * @param includeStatus
-	 *            whether to include the buildingStatus in the display or just
-	 *            its children
-	 */
-	private void populateList(List listToPopulate, IStatus buildingStatus,
-			int nesting, boolean includeStatus) {
-
-		if (!buildingStatus.matches(displayMask)) {
-			return;
-		}
-
-		Throwable t = buildingStatus.getException();
-		boolean isCoreException = t instanceof CoreException;
-		boolean incrementNesting = false;
-
-		if (includeStatus) {
-			StringBuffer sb = new StringBuffer();
-			for (int i = 0; i < nesting; i++) {
-				sb.append(NESTING_INDENT);
-			}
-			String message = buildingStatus.getMessage();
-			sb.append(message);
-			listToPopulate.add(sb.toString());
-			incrementNesting = true;
-		}
-
-		if (!isCoreException && t != null) {
-			// Include low-level exception message
-			StringBuffer sb = new StringBuffer();
-			for (int i = 0; i < nesting; i++) {
-				sb.append(NESTING_INDENT);
-			}
-			String message = t.getLocalizedMessage();
-			if (message == null) {
-				message = t.toString();
-			}
-
-			sb.append(message);
-			listToPopulate.add(sb.toString());
-			incrementNesting = true;
-		}
-
-		if (incrementNesting) {
-			nesting++;
-		}
-
-		// Look for a nested core exception
-		if (isCoreException) {
-			CoreException ce = (CoreException) t;
-			IStatus eStatus = ce.getStatus();
-			// Only print the exception message if it is not contained in the
-			// parent message
-			if (message == null || message.indexOf(eStatus.getMessage()) == -1) {
-				populateList(listToPopulate, eStatus, nesting, true);
-			}
-		}
-
-		// Look for child status
-		IStatus[] children = buildingStatus.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			populateList(listToPopulate, children[i], nesting, true);
-		}
-	}
-
-	/**
-	 * Returns whether the given status object should be displayed.
-	 * 
-	 * @param status
-	 *            a status object
-	 * @param mask
-	 *            a mask as per <code>IStatus.matches</code>
-	 * @return <code>true</code> if the given status should be displayed, and
-	 *         <code>false</code> otherwise
-	 * @see org.eclipse.core.runtime.IStatus#matches(int)
-	 */
-	protected static boolean shouldDisplay(IStatus status, int mask) {
-		IStatus[] children = status.getChildren();
-		if (children == null || children.length == 0) {
-			return status.matches(mask);
-		}
-		for (int i = 0; i < children.length; i++) {
-			if (children[i].matches(mask)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Toggles the unfolding of the details area. This is triggered by the user
-	 * pressing the details button.
-	 */
-	private void toggleDetailsArea() {
-		Point windowSize = getShell().getSize();
-		Point oldSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-		if (listCreated) {
-			list.dispose();
-			listCreated = false;
-			detailsButton.setText(IDialogConstants.SHOW_DETAILS_LABEL);
-		} else {
-			list = createDropDownList((Composite) getContents());
-			detailsButton.setText(IDialogConstants.HIDE_DETAILS_LABEL);
-			getContents().getShell().layout();
-		}
-		Point newSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-		getShell()
-				.setSize(
-						new Point(windowSize.x, windowSize.y
-								+ (newSize.y - oldSize.y)));
-	}
-
-	/**
-	 * Put the details of the status of the error onto the stream.
-	 * 
-	 * @param buildingStatus
-	 * @param buffer
-	 * @param nesting
-	 */
-	private void populateCopyBuffer(IStatus buildingStatus,
-			StringBuffer buffer, int nesting) {
-		if (!buildingStatus.matches(displayMask)) {
-			return;
-		}
-		for (int i = 0; i < nesting; i++) {
-			buffer.append(NESTING_INDENT);
-		}
-		buffer.append(buildingStatus.getMessage());
-		buffer.append("\n"); //$NON-NLS-1$
-
-		// Look for a nested core exception
-		Throwable t = buildingStatus.getException();
-		if (t instanceof CoreException) {
-			CoreException ce = (CoreException) t;
-			populateCopyBuffer(ce.getStatus(), buffer, nesting + 1);
-		} else if (t != null) {
-			// Include low-level exception message
-			for (int i = 0; i < nesting; i++) {
-				buffer.append(NESTING_INDENT);
-			}
-			String message = t.getLocalizedMessage();
-			if (message == null) {
-				message = t.toString();
-			}
-			buffer.append(message);
-			buffer.append("\n"); //$NON-NLS-1$
-		}
-
-		IStatus[] children = buildingStatus.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			populateCopyBuffer(children[i], buffer, nesting + 1);
-		}
-	}
-
-	/**
-	 * Copy the contents of the statuses to the clipboard.
-	 */
-	private void copyToClipboard() {
-		if (clipboard != null) {
-			clipboard.dispose();
-		}
-		StringBuffer statusBuffer = new StringBuffer();
-		populateCopyBuffer(status, statusBuffer, 0);
-		clipboard = new Clipboard(list.getDisplay());
-		clipboard.setContents(new Object[] { statusBuffer.toString() },
-				new Transfer[] { TextTransfer.getInstance() });
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		if (clipboard != null) {
-			clipboard.dispose();
-		}
-		return super.close();
-	}
-
-	/**
-	 * Show the details portion of the dialog if it is not already visible. This
-	 * method will only work when it is invoked after the control of the dialog
-	 * has been set. In other words, after the <code>createContents</code>
-	 * method has been invoked and has returned the control for the content area
-	 * of the dialog. Invoking the method before the content area has been set
-	 * or after the dialog has been disposed will have no effect.
-	 * 
-	 * @since 3.1
-	 */
-	protected final void showDetailsArea() {
-		if (!listCreated) {
-			Control control = getContents();
-			if (control != null && !control.isDisposed()) {
-				toggleDetailsArea();
-			}
-		}
-	}
-
-	/**
-	 * Return whether the Details button should be included. This method is
-	 * invoked once when the dialog is built. By default, the Details button is
-	 * only included if the status used when creating the dialog was a
-	 * multi-status or if the status contains an exception. Subclasses may
-	 * override.
-	 * 
-	 * @return whether the Details button should be included
-	 * @since 3.1
-	 */
-	protected boolean shouldShowDetailsButton() {
-		return status.isMultiStatus() || status.getException() != null;
-	}
-
-	/**
-	 * Set the status displayed by this error dialog to the given status. This
-	 * only affects the status displayed by the Details list. The message, image
-	 * and title should be updated by the subclass, if desired.
-	 * 
-	 * @param status
-	 *            the status to be displayed in the details list
-	 * @since 3.1
-	 */
-	protected final void setStatus(IStatus status) {
-		if (this.status != status) {
-			this.status = status;
-		}
-		shouldIncludeTopLevelErrorInDetails = true;
-		if (listCreated) {
-			repopulateList();
-		}
-	}
-
-	/**
-	 * Repopulate the supplied list widget.
-	 */
-	private void repopulateList() {
-		if (list != null && !list.isDisposed()) {
-			list.removeAll();
-			populateList(list);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getColumnCount()
-	 */
-	int getColumnCount() {
-		if (Policy.getErrorSupportProvider() == null)
-			return 2;
-		return 3;
-	}
-	
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorSupportProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorSupportProvider.java
deleted file mode 100644
index 9293ac9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ErrorSupportProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A ErrorSupportProvider defines the area to be shown in an error dialog for extra support information.
- * @since 3.3
- *
- */
-public abstract class ErrorSupportProvider {
-	
-	
-		/**
-		 * Create an area for adding support components as a child of parent.
-		 * @param parent The parent {@link Composite}
-		 * @param status The {@link IStatus} that is being displayed.
-		 * @return Control
-		 */
-		public abstract Control createSupportArea(Composite parent, IStatus status);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogBlockedHandler.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogBlockedHandler.java
deleted file mode 100644
index 5affefc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogBlockedHandler.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * The IDialogBlockedHandler is the handler used by
- * JFace to provide extra information when a
- * blocking has occured. There is one static instance
- * of this class used by WizardDialog and ModalContext.
- * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
- * @see  org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(IStatus)
- * @see WizardDialog
- * @since 3.0
- */
-public interface IDialogBlockedHandler {
-    /**
-     * The blockage has been cleared. Clear the
-     * extra information and resume.
-     */
-    public void clearBlocked();
-
-    /**
-     * A blockage has occured. Show the blockage and 
-     * forward any actions to blockingMonitor. 
-     * <b>NOTE:</b> This will open any blocked notification immediately
-     * even if there is a modal shell open.
-     * 
-     * @param parentShell The shell this is being sent from. If the parent
-     * shell is <code>null</code> the behavior will be the same as
-     * IDialogBlockedHandler#showBlocked(IProgressMonitor, IStatus, String)
-     * 
-     * @param blocking The monitor to forward to. This is most
-     * important for calls to <code>cancel()</code>.
-     * @param blockingStatus The status that describes the blockage
-     * @param blockedName The name of the locked operation.
-     * @see IDialogBlockedHandler#showBlocked(IProgressMonitor, IStatus, String)
-     */
-    public void showBlocked(Shell parentShell, IProgressMonitor blocking,
-            IStatus blockingStatus, String blockedName);
-
-    /**
-     * A blockage has occured. Show the blockage when there is 
-     * no longer any modal shells in the UI and forward any actions 
-     * to blockingMonitor. 
-     * 
-     * <b>NOTE:</b> As no shell has been specified this method will
-     * not open any blocked notification until all other modal shells
-     * have been closed.
-     * 
-     * @param blocking The monitor to forward to. This is most
-     * important for calls to <code>cancel()</code>.
-     * @param blockingStatus The status that describes the blockage
-     * @param blockedName The name of the locked operation.
-     */
-    public void showBlocked(IProgressMonitor blocking, IStatus blockingStatus,
-            String blockedName);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogConstants.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogConstants.java
deleted file mode 100644
index 883a4c2..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogConstants.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-/**
- * Various dialog-related constants.
- * <p>
- * Within the dialog framework, all buttons are referred to by a button id.
- * Various common buttons, like "OK", "Cancel", and "Finish", have pre-assigned
- * button ids for convenience. If an application requires other dialog buttons,
- * they should be assigned application-specific button ids counting up from
- * <code>CLIENT_ID</code>.
- * </p>
- * <p>
- * Button label constants are also provided for the common buttons. JFace
- * automatically localizes these strings to the current locale; that is,
- * <code>YES_LABEL</code> would be bound to the string <code>"Si"</code> in
- * a Spanish locale, but to <code>"Oui"</code> in a French one.
- * </p>
- * <p>
- * All margins, spacings, and sizes are given in "dialog units" (DLUs), where
- * <ul>
- * <li>1 horizontal DLU = 1/4 average character width</li>
- * <li>1 vertical DLU = 1/8 average character height</li>
- * </ul>
- * </p>
- */
-import org.eclipse.jface.resource.JFaceResources;
-
-/**
- * IDialogConstants is the interface for common dialog strings and ids
- * used throughout JFace.
- * It is recommended that you use these labels and ids whereever 
- * for consistency with the JFace dialogs.
- */
-public interface IDialogConstants {
-    // button ids
-	
-	// Note:  if new button ids are added, see 
-	// MessageDialogWithToggle.mapButtonLabelToButtonID(String, int)
-    /**
-     * Button id for an "Ok" button (value 0).
-     */
-    public int OK_ID = 0;
-
-    /**
-     * Button id for a "Cancel" button (value 1).
-     */
-    public int CANCEL_ID = 1;
-
-    /**
-     * Button id for a "Yes" button (value 2).
-     */
-    public int YES_ID = 2;
-
-    /**
-     * Button id for a "No" button (value 3).
-     */
-    public int NO_ID = 3;
-
-    /**
-     * Button id for a "Yes to All" button (value 4).
-     */
-    public int YES_TO_ALL_ID = 4;
-
-    /**
-     * Button id for a "Skip" button (value 5).
-     */
-    public int SKIP_ID = 5;
-
-    /**
-     * Button id for a "Stop" button (value 6).
-     */
-    public int STOP_ID = 6;
-
-    /**
-     * Button id for an "Abort" button (value 7).
-     */
-    public int ABORT_ID = 7;
-
-    /**
-     * Button id for a "Retry" button (value 8).
-     */
-    public int RETRY_ID = 8;
-
-    /**
-     * Button id for an "Ignore" button (value 9).
-     */
-    public int IGNORE_ID = 9;
-
-    /**
-     * Button id for a "Proceed" button (value 10).
-     */
-    public int PROCEED_ID = 10;
-
-    /**
-     * Button id for an "Open" button (value 11).
-     */
-    public int OPEN_ID = 11;
-
-    /**
-     * Button id for a "Close" button (value 12).
-     */
-    public int CLOSE_ID = 12;
-
-    /**
-     * Button id for a "Details" button (value 13).
-     */
-    public int DETAILS_ID = 13;
-
-    /**
-     * Button id for a "Back" button (value 14).
-     */
-    public int BACK_ID = 14;
-
-    /**
-     * Button id for a "Next" button (value 15).
-     */
-    public int NEXT_ID = 15;
-
-    /**
-     * Button id for a "Finish" button (value 16).
-     */
-    public int FINISH_ID = 16;
-
-    /**
-     * Button id for a "Help" button (value 17).
-     */
-    public int HELP_ID = 17;
-
-    /**
-     * Button id for a "Select All" button (value 18).
-     */
-    public int SELECT_ALL_ID = 18;
-
-    /**
-     * Button id for a "Deselect All" button (value 19).
-     */
-    public int DESELECT_ALL_ID = 19;
-
-    /**
-     * Button id for a "Select types" button (value 20).
-     */
-    public int SELECT_TYPES_ID = 20;
-
-    /**
-     * Button id for a "No to All" button (value 21).
-     */
-    public int NO_TO_ALL_ID = 21;
-
-    /**
-     * Starting button id reserved for internal use by JFace (value 256). JFace
-     * classes make ids by adding to this number.
-     */
-    public int INTERNAL_ID = 256;
-
-    /**
-     * Starting button id reserved for use by clients of JFace (value 1024).
-     * Clients of JFace should make ids by adding to this number.
-     */
-    public int CLIENT_ID = 1024;
-
-    // button labels
-    /**
-     * The label for OK buttons.
-     */
-    public String OK_LABEL = JFaceResources.getString("ok"); //$NON-NLS-1$
-
-    /**
-     * The label for cancel buttons.
-     */
-    public String CANCEL_LABEL = JFaceResources.getString("cancel"); //$NON-NLS-1$
-
-    /**
-     * The label for yes buttons.
-     */
-    public String YES_LABEL = JFaceResources.getString("yes"); //$NON-NLS-1$
-
-    /**
-     * The label for no buttons.
-     */
-    public String NO_LABEL = JFaceResources.getString("no"); //$NON-NLS-1$
-
-    /**
-     * The label for not to all buttons.
-     */
-    public String NO_TO_ALL_LABEL = JFaceResources.getString("notoall"); //$NON-NLS-1$
-
-    /**
-     * The label for yes to all buttons.
-     */
-    public String YES_TO_ALL_LABEL = JFaceResources.getString("yestoall"); //$NON-NLS-1$
-
-    /**
-     * The label for skip buttons.
-     */
-    public String SKIP_LABEL = JFaceResources.getString("skip"); //$NON-NLS-1$
-
-    /**
-     * The label for stop buttons.
-     */
-    public String STOP_LABEL = JFaceResources.getString("stop"); //$NON-NLS-1$
-
-    /**
-     * The label for abort buttons.
-     */
-    public String ABORT_LABEL = JFaceResources.getString("abort"); //$NON-NLS-1$
-
-    /**
-     * The label for retry buttons.
-     */
-    public String RETRY_LABEL = JFaceResources.getString("retry"); //$NON-NLS-1$
-
-    /**
-     * The label for ignore buttons.
-     */
-    public String IGNORE_LABEL = JFaceResources.getString("ignore"); //$NON-NLS-1$
-
-    /**
-     * The label for proceed buttons.
-     */
-    public String PROCEED_LABEL = JFaceResources.getString("proceed"); //$NON-NLS-1$
-
-    /**
-     * The label for open buttons.
-     */
-    public String OPEN_LABEL = JFaceResources.getString("open"); //$NON-NLS-1$
-
-    /**
-     * The label for close buttons.
-     */
-    public String CLOSE_LABEL = JFaceResources.getString("close"); //$NON-NLS-1$
-
-    /**
-     * The label for show details buttons.
-     */
-    public String SHOW_DETAILS_LABEL = JFaceResources.getString("showDetails"); //$NON-NLS-1$
-
-    /**
-     * The label for hide details buttons.
-     */
-    public String HIDE_DETAILS_LABEL = JFaceResources.getString("hideDetails"); //$NON-NLS-1$
-
-    /**
-     * The label for back buttons.
-     */
-    public String BACK_LABEL = JFaceResources.getString("backButton"); //$NON-NLS-1$
-
-    /**
-     * The label for next buttons.
-     */
-    public String NEXT_LABEL = JFaceResources.getString("nextButton"); //$NON-NLS-1$
-
-    /**
-     * The label for finish buttons.
-     */
-    public String FINISH_LABEL = JFaceResources.getString("finish"); //$NON-NLS-1$
-
-    /**
-     * The label for help buttons.
-     */
-    public String HELP_LABEL = JFaceResources.getString("help"); //$NON-NLS-1$
-
-    // Margins, spacings, and sizes
-    /**
-     * Vertical margin in dialog units (value 7).
-     */
-    public int VERTICAL_MARGIN = 7;
-
-    /**
-     * Vertical spacing in dialog units (value 4).
-     */
-    public int VERTICAL_SPACING = 4;
-
-    /**
-     * Horizontal margin in dialog units (value 7).
-     */
-    public int HORIZONTAL_MARGIN = 7;
-
-    /**
-     * Horizontal spacing in dialog units (value 4).
-     */
-    public int HORIZONTAL_SPACING = 4;
-
-    /**
-     * Height of button bar in dialog units (value 25).
-     */
-    public int BUTTON_BAR_HEIGHT = 25;
-
-    /**
-     * Left margin in dialog units (value 20).
-     */
-    public int LEFT_MARGIN = 20;
-
-    /**
-     * Button margin in dialog units (value 4).
-     */
-    public int BUTTON_MARGIN = 4;
-
-    /**
-     * Button height in dialog units (value 14).
-     * 
-     * @deprecated This constant is no longer in use.
-     * The button heights are now determined by the layout.
-     */
-    public int BUTTON_HEIGHT = 14;
-
-    /**
-     * Button width in dialog units (value 61).
-     */
-    public int BUTTON_WIDTH = 61;
-
-    /**
-     * Indent in dialog units (value 21).
-     */
-    public int INDENT = 21;
-
-    /**
-     * Small indent in dialog units (value 7).
-     */
-    public int SMALL_INDENT = 7;
-
-    /**
-     * Entry field width in dialog units (value 200).
-     */
-    public int ENTRY_FIELD_WIDTH = 200;
-
-    /**
-     * Minimum width of message area in dialog units (value 300).
-     */
-    public int MINIMUM_MESSAGE_AREA_WIDTH = 300;
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogPage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogPage.java
deleted file mode 100644
index 19f73b4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogPage.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Interface for a page in a multi-page dialog.
- */
-public interface IDialogPage {
-    /**
-     * Creates the top level control for this dialog
-     * page under the given parent composite.
-     * <p>
-     * Implementors are responsible for ensuring that
-     * the created control can be accessed via <code>getControl</code>
-     * </p>
-     *
-     * @param parent the parent composite
-     */
-    public void createControl(Composite parent);
-
-    /**
-     * Disposes the SWT resources allocated by this
-     * dialog page.
-     */
-    public void dispose();
-
-    /**
-     * Returns the top level control for this dialog page.
-     * <p>
-     * May return <code>null</code> if the control
-     * has not been created yet.
-     * </p>
-     *
-     * @return the top level control or <code>null</code>
-     */
-    public Control getControl();
-
-    /**
-     * Returns this dialog page's description text.
-     *
-     * @return the description text for this dialog page, 
-     *  or <code>null</code> if none
-     */
-    public String getDescription();
-
-    /**
-     * Returns the current error message for this dialog page.
-     * May be <code>null</code> to indicate no error message.
-     * <p>
-     * An error message should describe some error state,
-     * as opposed to a message which may simply provide instruction
-     * or information to the user.
-     * </p>
-     * 
-     * @return the error message, or <code>null</code> if none
-     */
-    public String getErrorMessage();
-
-    /**
-     * Returns this dialog page's image.
-     *
-     * @return the image for this dialog page, or <code>null</code>
-     *  if none
-     */
-    public Image getImage();
-
-    /**
-     * Returns the current message for this wizard page.
-     * <p>
-     * A message provides instruction or information to the 
-     * user, as opposed to an error message which should 
-     * describe some error state.
-     * </p>
-     * 
-     * @return the message, or <code>null</code> if none
-     */
-    public String getMessage();
-
-    /**
-     * Returns this dialog page's title.
-     *
-     * @return the title of this dialog page, 
-     *  or <code>null</code> if none
-     */
-    public String getTitle();
-
-    /**
-     * Notifies that help has been requested for this dialog page.
-     */
-    public void performHelp();
-
-    /**
-     * Sets this dialog page's description text.
-     * 
-     * @param description the description text for this dialog
-     *  page, or <code>null</code> if none
-     */
-    public void setDescription(String description);
-
-    /**
-     * Sets this dialog page's image.
-     *
-     * @param image the image for this dialog page, 
-     *  or <code>null</code> if none
-     */
-    public void setImageDescriptor(ImageDescriptor image);
-
-    /**
-     * Set this dialog page's title.
-     *
-     * @param title the title of this dialog page, 
-     *  or <code>null</code> if none
-     */
-    public void setTitle(String title);
-
-    /**
-     * Sets the visibility of this dialog page.
-     *
-     * @param visible <code>true</code> to make this page visible,
-     *  and <code>false</code> to hide it
-     */
-    public void setVisible(boolean visible);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogSettings.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogSettings.java
deleted file mode 100644
index 70933ea..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IDialogSettings.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
-
-/**
- * An interface to a storage mechanism for making dialog settings persistent.
- * The store manages a collection of key/value pairs. The keys must be strings
- * and the values can be either, strings or array of strings. Convenience API to
- * convert primitive types to strings is provided.
- */
-public interface IDialogSettings {
-    /**
-     * Create a new section in the receiver and return it.
-     * 
-     * @param name
-     *            the name of the new section
-     * @return the new section
-     */
-    public IDialogSettings addNewSection(String name);
-
-    /**
-     * Add a section in the receiver.
-     * 
-     * @param section
-     *            the section to be added
-     */
-    public void addSection(IDialogSettings section);
-
-    /**
-     * Returns the value of the given key in this dialog settings.
-     * 
-     * @param key
-     *            the key
-     * @return the value, or <code>null</code> if none
-     */
-    public String get(String key);
-
-    /**
-     * Returns the value, an array of strings, of the given key in this dialog
-     * settings.
-     * 
-     * @param key
-     *            the key
-     * @return the array of string, or <code>null</code> if none
-     */
-    public String[] getArray(String key);
-
-    /**
-     * Convenience API. Convert the value of the given key in this dialog
-     * settings to a boolean and return it.
-     * 
-     * @param key
-     *            the key
-     * @return the boolean value, or <code>false</code> if none
-     */
-    public boolean getBoolean(String key);
-
-    /**
-     * Convenience API. Convert the value of the given key in this dialog
-     * settings to a double and return it.
-     * 
-     * @param key
-     *            the key
-     * @return the value coverted to double, or throws
-     *         <code>NumberFormatException</code> if none
-     * 
-     * @exception NumberFormatException
-     *                if the string value does not contain a parsable number.
-     * @see java.lang.Double#valueOf(java.lang.String)
-     */
-    public double getDouble(String key) throws NumberFormatException;
-
-    /**
-     * Convenience API. Convert the value of the given key in this dialog
-     * settings to a float and return it.
-     * 
-     * @param key
-     *            the key
-     * @return the value coverted to float, or throws
-     *         <code>NumberFormatException</code> if none
-     * 
-     * @exception NumberFormatException
-     *                if the string value does not contain a parsable number.
-     * @see java.lang.Float#valueOf(java.lang.String)
-     */
-    public float getFloat(String key) throws NumberFormatException;
-
-    /**
-     * Convenience API. Convert the value of the given key in this dialog
-     * settings to a int and return it.
-     * 
-     * @param key
-     *            the key
-     * @return the value coverted to int, or throws
-     *         <code>NumberFormatException</code> if none
-     * 
-     * @exception NumberFormatException
-     *                if the string value does not contain a parsable number.
-     * @see java.lang.Integer#valueOf(java.lang.String)
-     */
-    public int getInt(String key) throws NumberFormatException;
-
-    /**
-     * Convenience API. Convert the value of the given key in this dialog
-     * settings to a long and return it.
-     * 
-     * @param key
-     *            the key
-     * @return the value coverted to long, or throws
-     *         <code>NumberFormatException</code> if none
-     * 
-     * @exception NumberFormatException
-     *                if the string value does not contain a parsable number.
-     * @see java.lang.Long#valueOf(java.lang.String)
-     */
-    public long getLong(String key) throws NumberFormatException;
-
-    /**
-     * Returns the IDialogSettings name.
-     * 
-     * @return the name
-     */
-    public String getName();
-
-    /**
-     * Returns the section with the given name in this dialog settings.
-     * 
-     * @param sectionName
-     *            the key
-     * @return IDialogSettings (the section), or <code>null</code> if none
-     */
-    public IDialogSettings getSection(String sectionName);
-
-    /**
-     * Returns all the sections in this dialog settings.
-     * 
-     * @return the section, or <code>null</code> if none
-     */
-    public IDialogSettings[] getSections();
-
-    /**
-     * Load a dialog settings from a stream and fill the receiver with its
-     * content.
-     * 
-     * @param reader
-     *            a Reader specifying the stream where the settings are read
-     *            from.
-     * @throws IOException
-     */
-    public void load(Reader reader) throws IOException;
-
-    /**
-     * Load a dialog settings from a file and fill the receiver with its
-     * content.
-     * 
-     * @param fileName
-     *            the name of the file the settings are read from.
-     * @throws IOException
-     */
-    public void load(String fileName) throws IOException;
-
-    /**
-     * Adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, String[] value);
-
-    /**
-     * Convenience API. Converts the double <code>value</code> to a string and
-     * adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, double value);
-
-    /**
-     * Convenience API. Converts the float <code>value</code> to a string and
-     * adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, float value);
-
-    /**
-     * Convenience API. Converts the int <code>value</code> to a string and
-     * adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, int value);
-
-    /**
-     * Convenience API. Converts the long <code>value</code> to a string and
-     * adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, long value);
-
-    /**
-     * Adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, String value);
-
-    /**
-     * Convenience API. Converts the boolean <code>value</code> to a string
-     * and adds the pair <code>key/value</code> to this dialog settings.
-     * 
-     * @param key
-     *            the key.
-     * @param value
-     *            the value to be associated with the <code>key</code>
-     */
-    public void put(String key, boolean value);
-
-    /**
-     * Save a dialog settings to a stream
-     * 
-     * @param writer
-     *            a Writer specifying the stream the settings are written in.
-     * @throws IOException
-     */
-    public void save(Writer writer) throws IOException;
-
-    /**
-     * Save a dialog settings to a file.
-     * 
-     * @param fileName
-     *            the name of the file the settings are written in.
-     * @throws IOException
-     */
-    public void save(String fileName) throws IOException;
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IInputValidator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IInputValidator.java
deleted file mode 100644
index f87abae..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IInputValidator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-/**
- * The IInputValidator is the interface for simple validators. 
- * @see org.eclipse.jface.dialogs.InputDialog
- */
-public interface IInputValidator {
-    /**
-     * Validates the given string.  Returns an error message to display
-     * if the new text is invalid.  Returns <code>null</code> if there
-     * is no error.  Note that the empty string is not treated the same
-     * as <code>null</code>; it indicates an error state but with no message
-     * to display.
-     * 
-     * @param newText the text to check for validity
-     * 
-     * @return an error message or <code>null</code> if no error
-     */
-    public String isValid(String newText);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IMessageProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IMessageProvider.java
deleted file mode 100644
index 6f6b6b3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IMessageProvider.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-/**
- * Minimal interface to a message provider. Used for dialog pages which can
- * provide a message with an icon.
- * 
- * @since 2.0
- */
-public interface IMessageProvider {
-    /**
-     * Constant for a regular message (value 0).
-     * <p>
-     * Typically this indicates that the message should be shown without an
-     * icon.
-     * </p>
-     */
-    public final static int NONE = 0;
-
-    /**
-     * Constant for an info message (value 1).
-     */
-    public final static int INFORMATION = 1;
-
-    /**
-     * Constant for a warning message (value 2).
-     */
-    public final static int WARNING = 2;
-
-    /**
-     * Constant for an error message (value 3).
-     */
-    public final static int ERROR = 3;
-
-    /**
-     * Returns the current message for this message provider.
-     * <p>
-     * A message provides instruction or information to the user.
-     * </p>
-     * 
-     * @return the message, or <code>null</code> if none
-     */
-    public String getMessage();
-
-    /**
-     * Returns a value indicating if the message is a an information message, a
-     * warning message, or an error message.
-     * <p>
-     * Returns one of <code>NONE</code>,<code>INFORMATION</code>,
-     * <code>WARNING</code>, or <code>ERROR</code>.
-     * </p>
-     * 
-     * @return the message type
-     */
-    public int getMessageType();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangeProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangeProvider.java
deleted file mode 100644
index 2f63de0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangeProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-/**
- * Minimal interface to a page change provider. Used for dialogs which can
- * switch between multiple pages.
- * 
- * @since 3.1
- */
-public interface IPageChangeProvider {
-	/**
-	 * Returns the currently selected page in the dialog.
-	 * 
-	 * @return the selected page in the dialog or <code>null</code> if none is
-	 *         selected. The type may be domain specific. In 
-	 *         the JFace provided dialogs this will be an instance of 
-	 *         <code>IDialogPage</code>. 
-	 */
-	Object getSelectedPage();
-
-	/**
-	 * Adds a listener for page changes in this page change provider. Has no
-	 * effect if an identical listener is already registered.
-	 * 
-	 * @param listener
-	 *            a page changed listener
-	 */
-	void addPageChangedListener(IPageChangedListener listener);
-
-	/**
-	 * Removes the given page change listener from this page change provider.
-	 * Has no effect if an identical listener is not registered.
-	 * 
-	 * @param listener
-	 *            a page changed listener
-	 */
-	void removePageChangedListener(IPageChangedListener listener);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangedListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangedListener.java
deleted file mode 100644
index 28cb144..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangedListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-/**
- * A listener which is notified when the current page of the multi-page dialog
- * is changed.
- * 
- * @see IPageChangeProvider
- * @see PageChangedEvent
- * 
- * @since 3.1
- */
-public interface IPageChangedListener {
-	/**
-	 * Notifies that the selected page has changed.
-	 * 
-	 * @param event
-	 *            event object describing the change
-	 */
-	public void pageChanged(PageChangedEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangingListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangingListener.java
deleted file mode 100644
index fc3c993..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IPageChangingListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Chris Gross (schtoo@schtoo.com) - initial API and implementation for bug 16179
- *     IBM Corporation - revisions to initial contribution
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-/**
- * A listener which is notified when the current page of a multi-page dialog is
- * changing. Use this listener to perform long-running work that should only be
- * executed once, when the page is in the process of changing, rather then
- * during validation of page controls.
- * 
- * @see PageChangingEvent
- * @since 3.3
- */
-public interface IPageChangingListener {
-	
-	/**
-	 * Handle the an <code>IDialogPage</code> changing.
-	 * 
-	 * The <code>doit</code> field of the <code>PageChangingEvent</code>
-	 * must be set to false to prevent the page from changing.
-	 * 
-	 * @param event
-	 *            event object describing the change
-	 */
-	public void handlePageChanging(PageChangingEvent event);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java
deleted file mode 100644
index 46f5cbc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/IconAndMessageDialog.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM - bug 156790: Adopt GridLayoutFactory within JFace
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.layout.LayoutConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * The IconAndMessageDialog is the abstract superclass of dialogs that have an
- * icon and a message as the first two widgets. In this dialog the icon and
- * message are direct children of the shell in order that they can be read by
- * accessibility tools more easily.
- */
-public abstract class IconAndMessageDialog extends Dialog {
-	/**
-	 * Message (a localized string).
-	 */
-	protected String message;
-
-	/**
-	 * Message label is the label the message is shown on.
-	 */
-	protected Label messageLabel;
-
-	/**
-	 * Return the label for the image.
-	 */
-	protected Label imageLabel;
-
-	/**
-	 * Constructor for IconAndMessageDialog.
-	 * 
-	 * @param parentShell
-	 *            the parent shell, or <code>null</code> to create a top-level
-	 *            shell
-	 */
-	public IconAndMessageDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/**
-	 * Create the area the message will be shown in.
-	 * <p>
-	 * The parent composite is assumed to use GridLayout as its layout manager,
-	 * since the parent is typically the composite created in
-	 * {@link Dialog#createDialogArea}.
-	 * </p>
-	 * 
-	 * @param composite
-	 *            The composite to parent from.
-	 * @return Control
-	 */
-	protected Control createMessageArea(Composite composite) {
-		// create composite
-		// create image
-		Image image = getImage();
-		if (image != null) {
-			imageLabel = new Label(composite, SWT.NULL);
-			image.setBackground(imageLabel.getBackground());
-			imageLabel.setImage(image);
-			addAccessibleListeners(imageLabel, image);
-			GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.BEGINNING)
-					.applyTo(imageLabel);
-		}
-		// create message
-		if (message != null) {
-			messageLabel = new Label(composite, getMessageLabelStyle());
-			messageLabel.setText(message);
-			GridDataFactory
-					.fillDefaults()
-					.align(SWT.FILL, SWT.BEGINNING)
-					.grab(true, false)
-					.hint(
-							convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH),
-							SWT.DEFAULT).applyTo(messageLabel);
-		}
-		return composite;
-	}
-
-	private String getAccessibleMessageFor(Image image) {
-		if (image.equals(getErrorImage())) {
-			return JFaceResources.getString("error");//$NON-NLS-1$
-		}
-
-		if (image.equals(getWarningImage())) {
-			return JFaceResources.getString("warning");//$NON-NLS-1$
-		}
-
-		if (image.equals(getInfoImage())) {
-			return JFaceResources.getString("info");//$NON-NLS-1$
-		}
-
-		if (image.equals(getQuestionImage())) {
-			return JFaceResources.getString("question"); //$NON-NLS-1$
-		}
-
-		return null;
-	}
-
-	/**
-	 * Add an accessible listener to the label if it can be inferred from the
-	 * image.
-	 * 
-	 * @param label
-	 * @param image
-	 */
-	private void addAccessibleListeners(Label label, final Image image) {
-		label.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-			public void getName(AccessibleEvent event) {
-				final String accessibleMessage = getAccessibleMessageFor(image);
-				if (accessibleMessage == null) {
-					return;
-				}
-				event.result = accessibleMessage;
-			}
-		});
-	}
-
-	/**
-	 * Returns the style for the message label.
-	 * 
-	 * @return the style for the message label
-	 * 
-	 * @since 3.0
-	 */
-	protected int getMessageLabelStyle() {
-		return SWT.WRAP;
-	}
-
-	/*
-	 * @see Dialog.createButtonBar()
-	 */
-	protected Control createButtonBar(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayoutFactory.fillDefaults().numColumns(0) // this is incremented
-				// by createButton
-				.equalWidth(true).applyTo(composite);
-
-		GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).span(2, 1)
-				.applyTo(composite);
-		composite.setFont(parent.getFont());
-		// Add the buttons to the button bar.
-		createButtonsForButtonBar(composite);
-		return composite;
-	}
-
-	/**
-	 * Returns the image to display beside the message in this dialog.
-	 * <p>
-	 * Subclasses may override.
-	 * </p>
-	 * 
-	 * @return the image to display beside the message
-	 * @since 2.0
-	 */
-	protected abstract Image getImage();
-
-	/*
-	 * @see Dialog.createContents(Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		// initialize the dialog units
-		initializeDialogUnits(parent);
-		Point defaultSpacing = LayoutConstants.getSpacing();
-		GridLayoutFactory.fillDefaults().margins(LayoutConstants.getMargins())
-				.spacing(defaultSpacing.x * 2,
-				defaultSpacing.y).numColumns(getColumnCount()).applyTo(parent);
-
-		GridDataFactory.fillDefaults().grab(true, true).applyTo(parent);
-		createDialogAndButtonArea(parent);
-		return parent;
-	}
-
-	/**
-	 * Get the number of columns in the layout of the Shell of the dialog.
-	 * 
-	 * @return int
-	 * @since 3.3
-	 */
-	int getColumnCount() {
-		return 2;
-	}
-
-	/**
-	 * Create the dialog area and the button bar for the receiver.
-	 * 
-	 * @param parent
-	 */
-	protected void createDialogAndButtonArea(Composite parent) {
-		// create the dialog area and button bar
-		dialogArea = createDialogArea(parent);
-		buttonBar = createButtonBar(parent);
-		// Apply to the parent so that the message gets it too.
-		applyDialogFont(parent);
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying an error.
-	 * 
-	 * @return image the error image
-	 */
-	public Image getErrorImage() {
-		return getSWTImage(SWT.ICON_ERROR);
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying a warning.
-	 * 
-	 * @return image the warning image
-	 */
-	public Image getWarningImage() {
-		return getSWTImage(SWT.ICON_WARNING);
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying information.
-	 * 
-	 * @return image the information image
-	 */
-	public Image getInfoImage() {
-		return getSWTImage(SWT.ICON_INFORMATION);
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying a question.
-	 * 
-	 * @return image the question image
-	 */
-	public Image getQuestionImage() {
-		return getSWTImage(SWT.ICON_QUESTION);
-	}
-
-	/**
-	 * Get an <code>Image</code> from the provide SWT image constant.
-	 * 
-	 * @param imageID
-	 *            the SWT image constant
-	 * @return image the image
-	 */
-	private Image getSWTImage(final int imageID) {
-		Shell shell = getShell();
-		final Display display;
-		if (shell == null) {
-			shell = getParentShell();
-		}
-		if (shell == null) {
-			display = Display.getCurrent();
-		} else {
-			display = shell.getDisplay();
-		}
-
-		final Image[] image = new Image[1];
-		display.syncExec(new Runnable() {
-			public void run() {
-				image[0] = display.getSystemImage(imageID);
-			}
-		});
-
-		return image[0];
-
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ImageAndMessageArea.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ImageAndMessageArea.java
deleted file mode 100644
index 6c9eea2..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ImageAndMessageArea.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.fieldassist.DecoratedField;
-import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
-import org.eclipse.jface.fieldassist.TextControlCreator;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Instances of this class provide a message area to display a message and an
- * associated image.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.2
- * @deprecated As of 3.3, this class is no longer necessary.
- * 
- */
-public class ImageAndMessageArea extends Composite {
-
-	private int BORDER_MARGIN = IDialogConstants.HORIZONTAL_SPACING / 2;
-
-	private DecoratedField messageField;
-
-	private Composite container;
-
-	/**
-	 * Constructs a new ImageAndMessageArea with an empty decorated field. Calls
-	 * to <code>setText(String text)</code> and
-	 * <code>setImage(Image image)</code> are required in order to fill the
-	 * message area. Also, the instance will be invisible when initially
-	 * created.
-	 * <p>
-	 * The style bit <code>SWT.WRAP</code> should be used if a larger message
-	 * area is desired.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @param style
-	 *            the SWT style bits. Using SWT.WRAP will create a larger
-	 *            message area.
-	 */
-	public ImageAndMessageArea(Composite parent, int style) {
-		super(parent, style);
-		container = new Composite(this, style);
-		GridLayout glayout = new GridLayout();
-		glayout.numColumns = 2;
-		glayout.marginWidth = 0;
-		glayout.marginHeight = 0;
-		glayout.marginTop = BORDER_MARGIN;
-		glayout.marginBottom = BORDER_MARGIN;
-		container.setLayout(glayout);
-
-		messageField = new DecoratedField(container, SWT.READ_ONLY | style,
-				new TextControlCreator());
-		setFont(JFaceResources.getDialogFont());
-
-		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
-		int lineHeight = ((Text) messageField.getControl()).getLineHeight();
-		if ((style & SWT.WRAP) > 0)
-			gd.heightHint = 2 * lineHeight;
-		else
-			gd.heightHint = lineHeight;
-
-		messageField.getLayoutControl().setLayoutData(gd);
-
-		addPaintListener(new PaintListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)
-			 */
-			public void paintControl(PaintEvent e) {
-				onPaint(e);
-			}
-		});
-
-		// sets the layout and size to account for the BORDER_MARGIN between
-		// the border drawn around the container and the decorated field.
-		setLayout(new Layout() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
-			 *      boolean)
-			 */
-			public void layout(Composite parent, boolean changed) {
-				Rectangle carea = getClientArea();
-				container.setBounds(carea.x + BORDER_MARGIN, carea.y
-						+ BORDER_MARGIN, carea.width - (2 * BORDER_MARGIN),
-						carea.height - (2 * BORDER_MARGIN));
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
-			 *      int, int, boolean)
-			 */
-			public Point computeSize(Composite parent, int wHint, int hHint,
-					boolean changed) {
-				Point size;
-				size = container.computeSize(wHint, hHint, changed);
-
-				// size set to account for the BORDER_MARGIN on
-				// all sides of the decorated field
-				size.x += 4;
-				size.y += 4;
-				return size;
-			}
-		});
-		setVisible(false);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.widgets.Control#setBackground(org.eclipse.swt.graphics.Color)
-	 */
-	public void setBackground(Color bg) {
-		super.setBackground(bg);
-		messageField.getLayoutControl().setBackground(bg);
-		messageField.getControl().setBackground(bg);
-		container.setBackground(bg);
-	}
-
-	/**
-	 * Sets the text in the decorated field which will be displayed in the
-	 * message area.
-	 * 
-	 * @param text
-	 *            the text to be displayed in the message area
-	 * 
-	 * @see org.eclipse.swt.widgets.Text#setText(String string)
-	 */
-	public void setText(String text) {
-		((Text) messageField.getControl()).setText(text);
-	}
-
-	/**
-	 * Adds an image to decorated field to be shown in the message area.
-	 * 
-	 * @param image
-	 *            desired image to be shown in the ImageAndMessageArea
-	 */
-	public void setImage(Image image) {
-		FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault();
-		registry.registerFieldDecoration("messageImage", null, image); //$NON-NLS-1$
-		messageField.addFieldDecoration(registry
-				.getFieldDecoration("messageImage"), //$NON-NLS-1$
-				SWT.LEFT | SWT.TOP, false);
-	}
-
-	/**
-	 * Draws the message area composite with rounded corners.
-	 */
-	private void onPaint(PaintEvent e) {
-		Rectangle carea = getClientArea();
-		e.gc.setForeground(getForeground());
-
-		// draws the polyline to be rounded in a 2 pixel squared area
-		e.gc.drawPolyline(new int[] { carea.x, carea.y + carea.height - 1,
-				carea.x, carea.y + 2, carea.x + 2, carea.y,
-				carea.x + carea.width - 3, carea.y, carea.x + carea.width - 1,
-				carea.y + 2, carea.x + carea.width - 1,
-				carea.y + carea.height - 1 });
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.widgets.Control#setFont(org.eclipse.swt.graphics.Font)
-	 */
-	public void setFont(Font font) {
-		super.setFont(font);
-		((Text) messageField.getControl()).setFont(font);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.widgets.Control#setToolTipText(java.lang.String)
-	 */
-	public void setToolTipText(String text) {
-		super.setToolTipText(text);
-		((Text) messageField.getControl()).setToolTipText(text);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/InputDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/InputDialog.java
deleted file mode 100644
index f0ff4c8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/InputDialog.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.resource.StringConverter;
-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.widgets.Button;
-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;
-
-/**
- * A simple input dialog for soliciting an input string from the user.
- * <p>
- * This concrete dialog class can be instantiated as is, or further subclassed as
- * required.
- * </p>
- */
-public class InputDialog extends Dialog {
-    /**
-     * The title of the dialog.
-     */
-    private String title;
-
-    /**
-     * The message to display, or <code>null</code> if none.
-     */
-    private String message;
-
-    /**
-     * The input value; the empty string by default.
-     */
-    private String value = "";//$NON-NLS-1$
-
-    /**
-     * The input validator, or <code>null</code> if none.
-     */
-    private IInputValidator validator;
-
-    /**
-     * Ok button widget.
-     */
-    private Button okButton;
-
-    /**
-     * Input text widget.
-     */
-    private Text text;
-
-    /**
-     * Error message label widget.
-     */
-    private Text errorMessageText;
-    
-    /**
-     * Error message string.
-     */
-    private String errorMessage;
-
-    /**
-     * Creates an input dialog with OK and Cancel buttons. Note that the dialog
-     * will have no visual representation (no widgets) until it is told to open.
-     * <p>
-     * Note that the <code>open</code> method blocks for input dialogs.
-     * </p>
-     * 
-     * @param parentShell
-     *            the parent shell, or <code>null</code> to create a top-level
-     *            shell
-     * @param dialogTitle
-     *            the dialog title, or <code>null</code> if none
-     * @param dialogMessage
-     *            the dialog message, or <code>null</code> if none
-     * @param initialValue
-     *            the initial input value, or <code>null</code> if none
-     *            (equivalent to the empty string)
-     * @param validator
-     *            an input validator, or <code>null</code> if none
-     */
-    public InputDialog(Shell parentShell, String dialogTitle,
-            String dialogMessage, String initialValue, IInputValidator validator) {
-        super(parentShell);
-        this.title = dialogTitle;
-        message = dialogMessage;
-        if (initialValue == null) {
-			value = "";//$NON-NLS-1$
-		} else {
-			value = initialValue;
-		}
-        this.validator = validator;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void buttonPressed(int buttonId) {
-        if (buttonId == IDialogConstants.OK_ID) {
-            value = text.getText();
-        } else {
-            value = null;
-        }
-        super.buttonPressed(buttonId);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        if (title != null) {
-			shell.setText(title);
-		}
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        // create OK and Cancel buttons by default
-        okButton = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-        //do this here because setting the text will set enablement on the ok
-        // button
-        text.setFocus();
-        if (value != null) {
-            text.setText(value);
-            text.selectAll();
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected Control createDialogArea(Composite parent) {
-        // create composite
-        Composite composite = (Composite) super.createDialogArea(parent);
-        // create message
-        if (message != null) {
-            Label label = new Label(composite, SWT.WRAP);
-            label.setText(message);
-            GridData data = new GridData(GridData.GRAB_HORIZONTAL
-                    | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
-                    | GridData.VERTICAL_ALIGN_CENTER);
-            data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
-            label.setLayoutData(data);
-            label.setFont(parent.getFont());
-        }
-        text = new Text(composite, getInputTextStyle());
-        text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
-                | GridData.HORIZONTAL_ALIGN_FILL));
-        text.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                validateInput();
-            }
-        });
-        errorMessageText = new Text(composite, SWT.READ_ONLY | SWT.WRAP);
-        errorMessageText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
-                | GridData.HORIZONTAL_ALIGN_FILL));
-        errorMessageText.setBackground(errorMessageText.getDisplay()
-                .getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
-        // Set the error message text
-        // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=66292
-        setErrorMessage(errorMessage);
-
-        applyDialogFont(composite);
-        return composite;
-    }
-
-    /**
-     * Returns the error message label.
-     * 
-     * @return the error message label
-     * @deprecated use setErrorMessage(String) instead
-     */
-    protected Label getErrorMessageLabel() {
-        return null;
-    }
-
-    /**
-     * Returns the ok button.
-     * 
-     * @return the ok button
-     */
-    protected Button getOkButton() {
-        return okButton;
-    }
-
-    /**
-     * Returns the text area.
-     * 
-     * @return the text area
-     */
-    protected Text getText() {
-        return text;
-    }
-
-    /**
-     * Returns the validator.
-     * 
-     * @return the validator
-     */
-    protected IInputValidator getValidator() {
-        return validator;
-    }
-
-    /**
-     * Returns the string typed into this input dialog.
-     * 
-     * @return the input string
-     */
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * Validates the input.
-     * <p>
-     * The default implementation of this framework method delegates the request
-     * to the supplied input validator object; if it finds the input invalid,
-     * the error message is displayed in the dialog's message line. This hook
-     * method is called whenever the text changes in the input field.
-     * </p>
-     */
-    protected void validateInput() {
-        String errorMessage = null;
-        if (validator != null) {
-            errorMessage = validator.isValid(text.getText());
-        }
-        // Bug 16256: important not to treat "" (blank error) the same as null
-        // (no error)
-        setErrorMessage(errorMessage);
-    }
-
-    /**
-     * Sets or clears the error message.
-     * If not <code>null</code>, the OK button is disabled.
-     * 
-     * @param errorMessage
-     *            the error message, or <code>null</code> to clear
-     * @since 3.0
-     */
-    public void setErrorMessage(String errorMessage) {
-    	this.errorMessage = errorMessage;
-    	if (errorMessageText != null && !errorMessageText.isDisposed()) {
-    		errorMessageText.setText(errorMessage == null ? " \n " : errorMessage); //$NON-NLS-1$
-    		// Disable the error message text control if there is no error, or
-    		// no error text (empty or whitespace only).  Hide it also to avoid
-    		// color change.
-    		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=130281
-    		boolean hasError = errorMessage != null && (StringConverter.removeWhiteSpaces(errorMessage)).length() > 0;
-    		errorMessageText.setEnabled(hasError);
-    		errorMessageText.setVisible(hasError);
-    		errorMessageText.getParent().update();
-    		// Access the ok button by id, in case clients have overridden button creation.
-    		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=113643
-    		Control button = getButton(IDialogConstants.OK_ID);
-    		if (button != null) {
-    			button.setEnabled(errorMessage == null);
-    		}
-    	}
-    }
-    
-	/**
-	 * Returns the style bits that should be used for the input text field.
-	 * Defaults to a single line entry. Subclasses may override.
-	 * 
-	 * @return the integer style bits that should be used when creating the
-	 *         input text
-	 * 
-	 * @since 3.4
-	 */
-	protected int getInputTextStyle() {
-		return SWT.SINGLE | SWT.BORDER;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialog.java
deleted file mode 100644
index cdb6804..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialog.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A dialog for showing messages to the user.
- * <p>
- * This concrete dialog class can be instantiated as is, or further subclassed
- * as required.
- * </p>
- */
-public class MessageDialog extends IconAndMessageDialog {
-    /**
-     * Constant for a dialog with no image (value 0).
-     */
-    public final static int NONE = 0;
-
-    /**
-     * Constant for a dialog with an error image (value 1).
-     */
-    public final static int ERROR = 1;
-
-    /**
-     * Constant for a dialog with an info image (value 2).
-     */
-    public final static int INFORMATION = 2;
-
-    /**
-     * Constant for a dialog with a question image (value 3).
-     */
-    public final static int QUESTION = 3;
-
-    /**
-     * Constant for a dialog with a warning image (value 4).
-     */
-    public final static int WARNING = 4;
-
-    /**
-     * Labels for buttons in the button bar (localized strings).
-     */
-    private String[] buttonLabels;
-
-    /**
-     * The buttons. Parallels <code>buttonLabels</code>.
-     */
-    private Button[] buttons;
-
-    /**
-     * Index into <code>buttonLabels</code> of the default button.
-     */
-    private int defaultButtonIndex;
-
-    /**
-     * Dialog title (a localized string).
-     */
-    private String title;
-
-    /**
-     * Dialog title image.
-     */
-    private Image titleImage;
-
-    /**
-     * Image, or <code>null</code> if none.
-     */
-    private Image image = null;
-
-    /**
-     * The custom dialog area.
-     */
-    private Control customArea;
-
-    /**
-     * Create a message dialog. Note that the dialog will have no visual
-     * representation (no widgets) until it is told to open.
-     * <p>
-     * The labels of the buttons to appear in the button bar are supplied in
-     * this constructor as an array. The <code>open</code> method will return
-     * the index of the label in this array corresponding to the button that was
-     * pressed to close the dialog. If the dialog was dismissed without pressing
-     * a button (ESC, etc.) then -1 is returned. Note that the <code>open</code>
-     * method blocks.
-     * </p>
-     * 
-     * @param parentShell
-     *            the parent shell
-     * @param dialogTitle
-     *            the dialog title, or <code>null</code> if none
-     * @param dialogTitleImage
-     *            the dialog title image, or <code>null</code> if none
-     * @param dialogMessage
-     *            the dialog message
-     * @param dialogImageType
-     *            one of the following values:
-     *            <ul>
-     *            <li><code>MessageDialog.NONE</code> for a dialog with no
-     *            image</li>
-     *            <li><code>MessageDialog.ERROR</code> for a dialog with an
-     *            error image</li>
-     *            <li><code>MessageDialog.INFORMATION</code> for a dialog
-     *            with an information image</li>
-     *            <li><code>MessageDialog.QUESTION </code> for a dialog with a
-     *            question image</li>
-     *            <li><code>MessageDialog.WARNING</code> for a dialog with a
-     *            warning image</li>
-     *            </ul>
-     * @param dialogButtonLabels
-     *            an array of labels for the buttons in the button bar
-     * @param defaultIndex
-     *            the index in the button label array of the default button
-     */
-    public MessageDialog(Shell parentShell, String dialogTitle,
-            Image dialogTitleImage, String dialogMessage, int dialogImageType,
-            String[] dialogButtonLabels, int defaultIndex) {
-        super(parentShell);
-        this.title = dialogTitle;
-        this.titleImage = dialogTitleImage;
-        this.message = dialogMessage;
-
-        switch (dialogImageType) {
-        case ERROR: {
-            this.image = getErrorImage();
-            break;
-        }
-        case INFORMATION: {
-            this.image = getInfoImage();
-            break;
-        }
-        case QUESTION: {
-            this.image = getQuestionImage();
-            break;
-        }
-        case WARNING: {
-            this.image = getWarningImage();
-            break;
-        }
-        }
-        this.buttonLabels = dialogButtonLabels;
-        this.defaultButtonIndex = defaultIndex;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-     */
-    protected void buttonPressed(int buttonId) {
-        setReturnCode(buttonId);
-        close();
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        if (title != null) {
-			shell.setText(title);
-		}
-        if (titleImage != null) {
-			shell.setImage(titleImage);
-		}
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        buttons = new Button[buttonLabels.length];
-        for (int i = 0; i < buttonLabels.length; i++) {
-            String label = buttonLabels[i];
-            Button button = createButton(parent, i, label,
-                    defaultButtonIndex == i);
-            buttons[i] = button;
-        }
-    }
-
-    /**
-     * Creates and returns the contents of an area of the dialog which appears
-     * below the message and above the button bar.
-     * <p>
-     * The default implementation of this framework method returns
-     * <code>null</code>. Subclasses may override.
-     * </p>
-     * 
-     * @param parent
-     *            parent composite to contain the custom area
-     * @return the custom area control, or <code>null</code>
-     */
-    protected Control createCustomArea(Composite parent) {
-        return null;
-    }
-
-    /**
-     * This implementation of the <code>Dialog</code> framework method creates
-     * and lays out a composite and calls <code>createMessageArea</code> and
-     * <code>createCustomArea</code> to populate it. Subclasses should
-     * override <code>createCustomArea</code> to add contents below the
-     * message.
-     */
-    protected Control createDialogArea(Composite parent) {
-        // create message area
-        createMessageArea(parent);
-        // create the top level composite for the dialog area
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        composite.setLayout(layout);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.horizontalSpan = 2;
-        composite.setLayoutData(data);
-        // allow subclasses to add custom controls
-        customArea = createCustomArea(composite);
-        //If it is null create a dummy label for spacing purposes
-        if (customArea == null) {
-			customArea = new Label(composite, SWT.NULL);
-		}
-        return composite;
-    }
-
-    /**
-     * Gets a button in this dialog's button bar.
-     * 
-     * @param index
-     *            the index of the button in the dialog's button bar
-     * @return a button in the dialog's button bar
-     */
-    protected Button getButton(int index) {
-        return buttons[index];
-    }
-
-    /**
-     * Returns the minimum message area width in pixels This determines the
-     * minimum width of the dialog.
-     * <p>
-     * Subclasses may override.
-     * </p>
-     * 
-     * @return the minimum message area width (in pixels)
-     */
-    protected int getMinimumMessageWidth() {
-        return convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
-    }
-
-    /**
-     * Handle the shell close. Set the return code to <code>SWT.DEFAULT</code>
-     * as there has been no explicit close by the user.
-     * 
-     * @see org.eclipse.jface.window.Window#handleShellCloseEvent()
-     */
-    protected void handleShellCloseEvent() {
-        //Sets a return code of SWT.DEFAULT since none of the dialog buttons
-        // were pressed to close the dialog.
-        super.handleShellCloseEvent();
-        setReturnCode(SWT.DEFAULT);
-    }
-
-    /**
-     * Convenience method to open a simple confirm (OK/Cancel) dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @return <code>true</code> if the user presses the OK button,
-     *         <code>false</code> otherwise
-     */
-    public static boolean openConfirm(Shell parent, String title, String message) {
-        MessageDialog dialog = new MessageDialog(parent, title, null, // accept
-                // the
-                // default
-                // window
-                // icon
-                message, QUESTION, new String[] { IDialogConstants.OK_LABEL,
-                        IDialogConstants.CANCEL_LABEL }, 0); // OK is the
-        // default
-        return dialog.open() == 0;
-    }
-
-    /**
-     * Convenience method to open a standard error dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     */
-    public static void openError(Shell parent, String title, String message) {
-        MessageDialog dialog = new MessageDialog(parent, title, null, // accept
-                // the
-                // default
-                // window
-                // icon
-                message, ERROR, new String[] { IDialogConstants.OK_LABEL }, 0); // ok
-        // is
-        // the
-        // default
-        dialog.open();
-        return;
-    }
-
-    /**
-     * Convenience method to open a standard information dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     */
-    public static void openInformation(Shell parent, String title,
-            String message) {
-        MessageDialog dialog = new MessageDialog(parent, title, null, // accept
-                // the
-                // default
-                // window
-                // icon
-                message, INFORMATION,
-                new String[] { IDialogConstants.OK_LABEL }, 0);
-        // ok is the default
-        dialog.open();
-        return;
-    }
-
-    /**
-     * Convenience method to open a simple Yes/No question dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @return <code>true</code> if the user presses the OK button,
-     *         <code>false</code> otherwise
-     */
-    public static boolean openQuestion(Shell parent, String title,
-            String message) {
-        MessageDialog dialog = new MessageDialog(parent, title, null, // accept
-                // the
-                // default
-                // window
-                // icon
-                message, QUESTION, new String[] { IDialogConstants.YES_LABEL,
-                        IDialogConstants.NO_LABEL }, 0); // yes is the default
-        return dialog.open() == 0;
-    }
-
-    /**
-     * Convenience method to open a standard warning dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     */
-    public static void openWarning(Shell parent, String title, String message) {
-        MessageDialog dialog = new MessageDialog(parent, title, null, // accept
-                // the
-                // default
-                // window
-                // icon
-                message, WARNING, new String[] { IDialogConstants.OK_LABEL }, 0); // ok
-        // is
-        // the
-        // default
-        dialog.open();
-        return;
-    }
-
-    /*
-     * @see org.eclipse.jface.dialogs.Dialog#createButton(org.eclipse.swt.widgets.Composite,
-     *      int, java.lang.String, boolean)
-     */
-    protected Button createButton(Composite parent, int id, String label,
-            boolean defaultButton) {
-        Button button = super.createButton(parent, id, label, defaultButton);
-        //Be sure to set the focus if the custom area cannot so as not
-        //to lose the defaultButton.
-        if (defaultButton && !customShouldTakeFocus()) {
-			button.setFocus();
-		}
-        return button;
-    }
-
-    /**
-     * Return whether or not we should apply the workaround where we take focus
-     * for the default button or if that should be determined by the dialog. By
-     * default only return true if the custom area is a label or CLabel that
-     * cannot take focus.
-     * 
-     * @return boolean
-     */
-    protected boolean customShouldTakeFocus() {
-        if (customArea instanceof Label) {
-			return false;
-		}
-        if (customArea instanceof CLabel) {
-			return (customArea.getStyle() & SWT.NO_FOCUS) > 0;
-		}
-        return true;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage()
-     */
-    public Image getImage() {
-        return image;
-    }
-
-    /**
-     * An accessor for the labels to use on the buttons.
-     * 
-     * @return The button labels to used; never <code>null</code>.
-     */
-    protected String[] getButtonLabels() {
-        return buttonLabels;
-    }
-
-    /**
-     * An accessor for the index of the default button in the button array.
-     * 
-     * @return The default button index.
-     */
-    protected int getDefaultButtonIndex() {
-        return defaultButtonIndex;
-    }
-
-    /**
-     * A mutator for the array of buttons in the button bar.
-     * 
-     * @param buttons
-     *            The buttons in the button bar; must not be <code>null</code>.
-     */
-    protected void setButtons(Button[] buttons) {
-        if (buttons == null) {
-            throw new NullPointerException(
-                    "The array of buttons cannot be null.");} //$NON-NLS-1$
-        this.buttons = buttons;
-    }
-
-    /**
-     * A mutator for the button labels.
-     * 
-     * @param buttonLabels
-     *            The button labels to use; must not be <code>null</code>.
-     */
-    protected void setButtonLabels(String[] buttonLabels) {
-        if (buttonLabels == null) {
-            throw new NullPointerException(
-                    "The array of button labels cannot be null.");} //$NON-NLS-1$
-        this.buttonLabels = buttonLabels;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java
deleted file mode 100644
index daa1115..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialogWithToggle.java
+++ /dev/null
@@ -1,712 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-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.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * <p>
- * A message dialog which also allows the user to adjust a toggle setting. If a
- * preference store is provided and the user selects the toggle, then the user's
- * answer (yes/ok or no) will be persisted in the store. If no store is
- * provided, then this information can be queried after the dialog closes.
- * </p>
- * <p>
- * This type of dialog should be used whenever you want to user to be able to
- * avoid being prompted in the future. It is <strong>strongly </strong>
- * recommended that a cancel option be provided, so that the user has the option
- * of making the decision at a later point in time. The semantic for a cancel
- * button should be to cancel the operation (if it has not yet started), or stop
- * the operation (if it has already started).
- * </p>
- * <p>
- * It is the responsibility of the developer to provide a mechanism for the user
- * to change this preference at some later point in time (e.g., through a
- * preference page).
- * </p>
- * 
- * @since 3.0
- */
-public class MessageDialogWithToggle extends MessageDialog {
-
-    /**
-     * The value of the preference when the user has asked that the answer to
-     * the question always be "okay" or "yes".
-     */
-    public static final String ALWAYS = "always"; //$NON-NLS-1$
-
-    /**
-     * The value of the preference when the user has asked that the answer to
-     * the question always be "no".
-     */
-    public static final String NEVER = "never"; //$NON-NLS-1$
-
-    /**
-     * The value of the preference when the user wishes to prompted for an
-     * answer every time the question is to be asked.
-     */
-    public static final String PROMPT = "prompt"; //$NON-NLS-1$
-
-    /**
-     * Convenience method to open a standard error dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     * @param store
-     *            the IPreference store in which the user's preference should be
-     *            persisted; <code>null</code> if you don't want it persisted
-     *            automatically.
-     * @param key
-     *            the key to use when persisting the user's preference;
-     *            <code>null</code> if you don't want it persisted.
-     * @return the dialog, after being closed by the user, which the client can
-     *         only call <code>getReturnCode()</code> or
-     *         <code>getToggleState()</code>
-     */
-    public static MessageDialogWithToggle openError(Shell parent, String title,
-            String message, String toggleMessage, boolean toggleState,
-            IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new MessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, ERROR, new String[] { IDialogConstants.OK_LABEL }, 0, // ok
-                // is
-                // the
-                // default
-                toggleMessage, toggleState);
-        dialog.prefStore = store;
-        dialog.prefKey = key;
-        dialog.open();
-        return dialog;
-    }
-
-    /**
-     * Convenience method to open a standard information dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     * @param store
-     *            the IPreference store in which the user's preference should be
-     *            persisted; <code>null</code> if you don't want it persisted
-     *            automatically.
-     * @param key
-     *            the key to use when persisting the user's preference;
-     *            <code>null</code> if you don't want it persisted.
-     * 
-     * @return the dialog, after being closed by the user, which the client can
-     *         only call <code>getReturnCode()</code> or
-     *         <code>getToggleState()</code>
-     */
-    public static MessageDialogWithToggle openInformation(Shell parent,
-            String title, String message, String toggleMessage,
-            boolean toggleState, IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new MessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, INFORMATION,
-                new String[] { IDialogConstants.OK_LABEL }, 0, // ok is the
-                // default
-                toggleMessage, toggleState);
-        dialog.prefStore = store;
-        dialog.prefKey = key;
-        dialog.open();
-        return dialog;
-    }
-
-    /**
-     * Convenience method to open a simple confirm (OK/Cancel) dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     * @param store
-     *            the IPreference store in which the user's preference should be
-     *            persisted; <code>null</code> if you don't want it persisted
-     *            automatically.
-     * @param key
-     *            the key to use when persisting the user's preference;
-     *            <code>null</code> if you don't want it persisted.
-     * @return the dialog, after being closed by the user, which the client can
-     *         only call <code>getReturnCode()</code> or
-     *         <code>getToggleState()</code>
-     */
-    public static MessageDialogWithToggle openOkCancelConfirm(Shell parent,
-            String title, String message, String toggleMessage,
-            boolean toggleState, IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new MessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, QUESTION, new String[] { IDialogConstants.OK_LABEL,
-                        IDialogConstants.CANCEL_LABEL }, 0, // OK is the default
-                toggleMessage, toggleState);
-        dialog.prefStore = store;
-        dialog.prefKey = key;
-        dialog.open();
-        return dialog;
-    }
-
-    /**
-     * Convenience method to open a standard warning dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     * @param store
-     *            the IPreference store in which the user's preference should be
-     *            persisted; <code>null</code> if you don't want it persisted
-     *            automatically.
-     * @param key
-     *            the key to use when persisting the user's preference;
-     *            <code>null</code> if you don't want it persisted.
-     * @return the dialog, after being closed by the user, which the client can
-     *         only call <code>getReturnCode()</code> or
-     *         <code>getToggleState()</code>
-     */
-    public static MessageDialogWithToggle openWarning(Shell parent,
-            String title, String message, String toggleMessage,
-            boolean toggleState, IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new MessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, WARNING, new String[] { IDialogConstants.OK_LABEL },
-                0, // ok is the default
-                toggleMessage, toggleState);
-        dialog.prefStore = store;
-        dialog.prefKey = key;
-        dialog.open();
-        return dialog;
-    }
-
-    /**
-     * Convenience method to open a simple question Yes/No/Cancel dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     * @param store
-     *            the IPreference store in which the user's preference should be
-     *            persisted; <code>null</code> if you don't want it persisted
-     *            automatically.
-     * @param key
-     *            the key to use when persisting the user's preference;
-     *            <code>null</code> if you don't want it persisted.
-     * @return the dialog, after being closed by the user, which the client can
-     *         only call <code>getReturnCode()</code> or
-     *         <code>getToggleState()</code>
-     */
-    public static MessageDialogWithToggle openYesNoCancelQuestion(Shell parent,
-            String title, String message, String toggleMessage,
-            boolean toggleState, IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new MessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, QUESTION, new String[] { IDialogConstants.YES_LABEL,
-                        IDialogConstants.NO_LABEL,
-                        IDialogConstants.CANCEL_LABEL }, 0, // YES is the
-                // default
-                toggleMessage, toggleState);
-        dialog.prefStore = store;
-        dialog.prefKey = key;
-        dialog.open();
-        return dialog;
-    }
-
-    /**
-     * Convenience method to open a simple Yes/No question dialog.
-     * 
-     * @param parent
-     *            the parent shell of the dialog, or <code>null</code> if none
-     * @param title
-     *            the dialog's title, or <code>null</code> if none
-     * @param message
-     *            the message
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     * @param store
-     *            the IPreference store in which the user's preference should be
-     *            persisted; <code>null</code> if you don't want it persisted
-     *            automatically.
-     * @param key
-     *            the key to use when persisting the user's preference;
-     *            <code>null</code> if you don't want it persisted.
-     * 
-     * @return the dialog, after being closed by the user, which the client can
-     *         only call <code>getReturnCode()</code> or
-     *         <code>getToggleState()</code>
-     */
-    public static MessageDialogWithToggle openYesNoQuestion(Shell parent,
-            String title, String message, String toggleMessage,
-            boolean toggleState, IPreferenceStore store, String key) {
-        MessageDialogWithToggle dialog = new MessageDialogWithToggle(parent,
-                title, null, // accept the default window icon
-                message, QUESTION, new String[] { IDialogConstants.YES_LABEL,
-                        IDialogConstants.NO_LABEL }, 0, // yes is the default
-                toggleMessage, toggleState);
-        dialog.prefStore = store;
-        dialog.prefKey = key;
-        dialog.open();
-        return dialog;
-    }
-
-    /**
-     * The key at which the toggle state should be stored within the
-     * preferences. This value may be <code>null</code>, which indicates that
-     * no preference should be updated automatically. It is then the
-     * responsibility of the user of this API to use the information from the
-     * toggle. Note: a <code>prefStore</code> is also needed.
-     */
-    private String prefKey = null;
-
-    /**
-     * The preference store which will be affected by the toggle button. This
-     * value may be <code>null</code>, which indicates that no preference
-     * should be updated automatically. It is then the responsibility of the
-     * user of this API to use the information from the toggle. Note: a
-     * <code>prefKey</code> is also needed.
-     */
-    private IPreferenceStore prefStore = null;
-
-    /**
-     * The toggle button (widget). This value is <code>null</code> until the
-     * dialog is created.
-     */
-    private Button toggleButton = null;
-
-    /**
-     * The message displayed to the user, with the toggle button. This is the
-     * text besides the toggle. If it is <code>null</code>, this means that
-     * the default text for the toggle should be used.
-     */
-    private String toggleMessage;
-
-    /**
-     * The initial selected state of the toggle.
-     */
-    private boolean toggleState;
-
-    /**
-     * Creates a message dialog with a toggle. See the superclass constructor
-     * for info on the other parameters.
-     * 
-     * @param parentShell
-     *            the parent shell
-     * @param dialogTitle
-     *            the dialog title, or <code>null</code> if none
-     * @param image
-     *            the dialog title image, or <code>null</code> if none
-     * @param message
-     *            the dialog message
-     * @param dialogImageType
-     *            one of the following values:
-     *            <ul>
-     *            <li><code>MessageDialog.NONE</code> for a dialog with no
-     *            image</li>
-     *            <li><code>MessageDialog.ERROR</code> for a dialog with an
-     *            error image</li>
-     *            <li><code>MessageDialog.INFORMATION</code> for a dialog
-     *            with an information image</li>
-     *            <li><code>MessageDialog.QUESTION </code> for a dialog with a
-     *            question image</li>
-     *            <li><code>MessageDialog.WARNING</code> for a dialog with a
-     *            warning image</li>
-     *            </ul>
-     * @param dialogButtonLabels
-     *            an array of labels for the buttons in the button bar
-     * @param defaultIndex
-     *            the index in the button label array of the default button
-     * @param toggleMessage
-     *            the message for the toggle control, or <code>null</code> for
-     *            the default message
-     * @param toggleState
-     *            the initial state for the toggle
-     *  
-     */
-    public MessageDialogWithToggle(Shell parentShell, String dialogTitle,
-            Image image, String message, int dialogImageType,
-            String[] dialogButtonLabels, int defaultIndex,
-            String toggleMessage, boolean toggleState) {
-        super(parentShell, dialogTitle, image, message, dialogImageType,
-                dialogButtonLabels, defaultIndex);
-        this.toggleMessage = toggleMessage;
-        this.toggleState = toggleState;
-        setButtonLabels(dialogButtonLabels);
-    }
-
-    /**
-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-     */
-    protected void buttonPressed(int buttonId) {
-        super.buttonPressed(buttonId);
-
-        if (buttonId != IDialogConstants.CANCEL_ID && toggleState
-                && prefStore != null && prefKey != null) {
-            switch (buttonId) {
-            case IDialogConstants.YES_ID:
-            case IDialogConstants.YES_TO_ALL_ID:
-            case IDialogConstants.PROCEED_ID:
-            case IDialogConstants.OK_ID:
-                prefStore.setValue(prefKey, ALWAYS);
-                break;
-            case IDialogConstants.NO_ID:
-            case IDialogConstants.NO_TO_ALL_ID:
-                prefStore.setValue(prefKey, NEVER);
-                break;
-            }
-        }
-    }
-
-    /**
-     * @see Dialog#createButtonBar(Composite)
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        final String[] buttonLabels = getButtonLabels();
-        final Button[] buttons = new Button[buttonLabels.length];
-        final int defaultButtonIndex = getDefaultButtonIndex();
-
-        int suggestedId = IDialogConstants.INTERNAL_ID;
-        for (int i = 0; i < buttonLabels.length; i++) {
-            String label = buttonLabels[i];
-            // get the JFace button ID that matches the label, or use the specified
-            // id if there is no match.
-            int id = mapButtonLabelToButtonID(label, suggestedId);
-            
-            // if the suggested id was used, increment the default for next use
-            if (id == suggestedId) {
-				suggestedId++;
-			}
- 
-            Button button = createButton(parent, id, label,
-                    defaultButtonIndex == i);
-            buttons[i] = button;
- 
-        }
-        setButtons(buttons);
-    }
-
-    /**
-     * @see Dialog#createDialogArea(Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite dialogAreaComposite = (Composite) super
-                .createDialogArea(parent);
-        setToggleButton(createToggleButton(dialogAreaComposite));
-        return dialogAreaComposite;
-    }
-
-    /**
-     * Creates a toggle button without any text or state.  The text and state
-     * will be created by <code>createDialogArea</code>. 
-     * 
-     * @param parent
-     *            The composite in which the toggle button should be placed;
-     *            must not be <code>null</code>.
-     * @return The added toggle button; never <code>null</code>.
-     */
-    protected Button createToggleButton(Composite parent) {
-        final Button button = new Button(parent, SWT.CHECK | SWT.LEFT);
-
-        GridData data = new GridData(SWT.NONE);
-        data.horizontalSpan = 2;
-        button.setLayoutData(data);
-        button.setFont(parent.getFont());
-
-        button.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                toggleState = button.getSelection();
-            }
-
-        });
-
-        return button;
-    }
-
-    /**
-     * Returns the toggle button.
-     * 
-     * @return the toggle button
-     */
-    protected Button getToggleButton() {
-        return toggleButton;
-    }
-
-    /**
-     * An accessor for the current preference store for this dialog.
-     * 
-     * @return The preference store; this value may be <code>null</code> if no
-     *         preference is being used.
-     */
-    public IPreferenceStore getPrefStore() {
-        return prefStore;
-    }
-
-    /**
-     * An accessor for the current key of the toggle preference.
-     * 
-     * @return The preference key; this value may be <code>null</code> if no
-     *         preference is being used.
-     */
-    public String getPrefKey() {
-        return prefKey;
-    }
-
-    /**
-     * Returns the toggle state. This can be called even after the dialog is
-     * closed.
-     * 
-     * @return <code>true</code> if the toggle button is checked,
-     *         <code>false</code> if not
-     */
-    public boolean getToggleState() {
-        return toggleState;
-    }
-
-    /**
-     * A mutator for the key of the preference to be modified by the toggle
-     * button.
-     * 
-     * @param prefKey
-     *            The prefKey to set. If this value is <code>null</code>,
-     *            then no preference will be modified.
-     */
-    public void setPrefKey(String prefKey) {
-        this.prefKey = prefKey;
-    }
-
-    /**
-     * A mutator for the preference store to be modified by the toggle button.
-     * 
-     * @param prefStore
-     *            The prefStore to set. If this value is <code>null</code>,
-     *            then no preference will be modified.
-     */
-    public void setPrefStore(IPreferenceStore prefStore) {
-        this.prefStore = prefStore;
-    }
-
-    /**
-     * A mutator for the button providing the toggle option. If the button
-     * exists, then it will automatically get the text set to the current toggle
-     * message, and its selection state set to the current selection state.
-     * 
-     * @param button
-     *            The button to use; must not be <code>null</code>.
-     */
-    protected void setToggleButton(Button button) {
-        if (button == null) {
-            throw new NullPointerException(
-                    "A message dialog with toggle may not have a null toggle button.");} //$NON-NLS-1$
-
-        if (!button.isDisposed()) {
-            final String text;
-            if (toggleMessage == null) {
-                text = JFaceResources
-                        .getString("MessageDialogWithToggle.defaultToggleMessage"); //$NON-NLS-1$
-            } else {
-                text = toggleMessage;
-            }
-            button.setText(text);
-            button.setSelection(toggleState);
-        }
-
-        this.toggleButton = button;
-    }
-
-    /**
-     * A mutator for the text on the toggle button. The button will
-     * automatically get updated with the new text, if it exists.
-     * 
-     * @param message
-     *            The new text of the toggle button; if it is <code>null</code>,
-     *            then used the default toggle message.
-     */
-    protected void setToggleMessage(String message) {
-        this.toggleMessage = message;
-
-        if ((toggleButton != null) && (!toggleButton.isDisposed())) {
-            final String text;
-            if (toggleMessage == null) {
-                text = JFaceResources
-                        .getString("MessageDialogWithToggle.defaultToggleMessage"); //$NON-NLS-1$
-            } else {
-                text = toggleMessage;
-            }
-            toggleButton.setText(text);
-        }
-    }
-
-    /**
-     * A mutator for the state of the toggle button. This method will update the
-     * button, if it exists.
-     * 
-     * @param toggleState
-     *            The desired state of the toggle button (<code>true</code>
-     *            means the toggle should be selected).
-     */
-    public void setToggleState(boolean toggleState) {
-        this.toggleState = toggleState;
-
-        // Update the button, if it exists.
-        if ((toggleButton != null) && (!toggleButton.isDisposed())) {
-            toggleButton.setSelection(toggleState);
-        }
-    }
-    
-    /**
-     * Attempt to find a standard JFace button id that matches the specified button
-     * label.  If no match can be found, use the default id provided.
-     * 
-     * @param buttonLabel the button label whose id is sought
-     * @param defaultId the id to use for the button if there is no standard id
-     * @return the id for the specified button label
-     */
-    private int mapButtonLabelToButtonID(String buttonLabel, int defaultId) {
-    	// Not pretty but does the job...
-    	if (IDialogConstants.OK_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.OK_ID;
-		}
-    	
-	    if (IDialogConstants.YES_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.YES_ID;
-		}
-	    
-	    if (IDialogConstants.NO_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.NO_ID;
-		}
-	    
-	    if (IDialogConstants.CANCEL_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.CANCEL_ID;
-		}
-	    
-	    if (IDialogConstants.YES_TO_ALL_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.YES_TO_ALL_ID;
-		}
-	    
-	    if (IDialogConstants.SKIP_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.SKIP_ID;
-		}
-	    
-	    if (IDialogConstants.STOP_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.STOP_ID;
-		}
-	    
-	    if (IDialogConstants.ABORT_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.ABORT_ID;
-		}
-	    
-	    if (IDialogConstants.RETRY_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.RETRY_ID;
-		}
-	    
-	    if (IDialogConstants.IGNORE_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.IGNORE_ID;
-		}
-	    
-	    if (IDialogConstants.PROCEED_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.PROCEED_ID;
-		}
-	    
-	    if (IDialogConstants.OPEN_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.OPEN_ID;
-		}
-	    
-	    if (IDialogConstants.CLOSE_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.CLOSE_ID;
-		}
-	    
-	    if (IDialogConstants.BACK_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.BACK_ID;
-		}
-	    
-	    if (IDialogConstants.NEXT_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.NEXT_ID;
-		}
-	    
-	    if (IDialogConstants.FINISH_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.FINISH_ID;
-		}
-	    
-	    if (IDialogConstants.HELP_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.HELP_ID;
-		}
-	    
-	    if (IDialogConstants.NO_TO_ALL_LABEL.equals(buttonLabel)) {
-			return IDialogConstants.NO_TO_ALL_ID;
-		}
-	    
-	    if (IDialogConstants.SHOW_DETAILS_LABEL.equals(buttonLabel)) {
-	    	return IDialogConstants.DETAILS_ID;
-	    }
-	    
-	    if (IDialogConstants.HIDE_DETAILS_LABEL.equals(buttonLabel)) {
-	    	return IDialogConstants.DETAILS_ID;
-	    }
-        
-        //          No XXX_LABEL in IDialogConstants for these. Unlikely
-        //            they would be used in a message dialog though.
-        //        	public int SELECT_ALL_ID = 18;
-        //        	public int DESELECT_ALL_ID = 19;
-        //        	public int SELECT_TYPES_ID = 20;
-
-	    return defaultId;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangedEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangedEvent.java
deleted file mode 100644
index d4a6a92..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangedEvent.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Event object describing a page selection change. The source of these events
- * is a page change provider.
- * 
- * @see IPageChangeProvider
- * @see IPageChangedListener
- * 
- * @since 3.1
- */
-public class PageChangedEvent extends EventObject {
-
-	/**
-	 * Generated serial version UID for this class.
-	 * 
-	 * @since 3.1
-	 */
-	private static final long serialVersionUID = 3835149545519723574L;
-
-	/**
-	 * The selected page.
-	 */
-	protected Object selectedPage;
-
-	/**
-	 * Creates a new event for the given source and selected page.
-	 * 
-	 * @param source
-	 *            the page change provider
-	 * @param selectedPage
-	 *            the selected page. In the JFace provided dialogs this
-	 *            will be an <code>IDialogPage</code>.
-	 */
-	public PageChangedEvent(IPageChangeProvider source,
-			Object selectedPage) {
-		super(source);
-		Assert.isNotNull(selectedPage);
-		this.selectedPage = selectedPage;
-	}
-
-	/**
-	 * Returns the selected page.
-	 * 
-	 * @return the selected page. In dialogs implemented by JFace, 
-	 * 		this will be an <code>IDialogPage</code>.
-	 */
-	public Object getSelectedPage() {
-		return selectedPage;
-	}
-
-	/**
-	 * Returns the page change provider that is the source of this event.
-	 * 
-	 * @return the originating page change provider
-	 */
-	public IPageChangeProvider getPageChangeProvider() {
-		return (IPageChangeProvider) getSource();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangingEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangingEvent.java
deleted file mode 100644
index 4b78ac0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PageChangingEvent.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Chris Gross (schtoo@schtoo.com) - initial API and implementation for bug 16179
- *     IBM Corporation - revisions to initial contribution
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Event object describing an <code>IDialogPage</code> in the midst of changing.
- * 
- * @see IPageChangingListener
- * @since 3.3
- */
-public class PageChangingEvent extends EventObject {
-
-
-	private static final long serialVersionUID = 1L;
-	
-	private Object currentPage;
-	
-	private Object targetPage;
-	
-	/**
-	 * Public field that dictates if the page change will successfully change.
-	 * 
-	 * Set this field to <code>false</code> to prevent the page from changing.
-	 *   
-	 * Default value is <code>true</code>.
-	 */
-	public boolean doit = true;
-
-	/**
-	 * Creates a new event for the given source, selected (current) page and
-	 * direction.
-	 * 
-	 * @param source
-	 *            the page changing provider (the source of this event)
-	 * @param currentPage
-	 *            the current page. In the JFace provided dialogs this will be
-	 *            an <code>IDialogPage</code>.
-	 * @param targetPage
-	 *            the target page. In the JFace provided dialogs this will be an
-	 *            <code>IDialogPage</code>.
-	 */
-	public PageChangingEvent(Object source, Object currentPage, Object targetPage) {
-		super(source);
-		Assert.isNotNull(currentPage);
-		Assert.isNotNull(targetPage);
-		this.currentPage = currentPage;
-		this.targetPage = targetPage;
-	}
-
-	/**
-	 * Returns the current page from which the page change originates.
-	 * 
-	 * @return the current page. In dialogs implemented by JFace, 
-	 * 		this will be an <code>IDialogPage</code>.
-	 */
-	public Object getCurrentPage() {
-		return currentPage;
-	}
-
-	/**
-	 * Returns the target page to change to.
-	 * 
-	 * @return the target page. In dialogs implemented by JFace, 
-	 * 		this will be an <code>IDialogPage</code>.
-	 */
-	public Object getTargetPage() {
-		return targetPage;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
deleted file mode 100644
index ab1f850..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
+++ /dev/null
@@ -1,1597 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM - bug 156790: Adopt GridLayoutFactory within JFace
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-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.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Tracker;
-
-/**
- * A lightweight, transient dialog that is popped up to show contextual or
- * temporal information and is easily dismissed. Clients control whether the
- * dialog should be able to receive input focus. An optional title area at the
- * top and an optional info area at the bottom can be used to provide additional
- * information.
- * <p>
- * Because the dialog is short-lived, most of the configuration of the dialog is
- * done in the constructor. Set methods are only provided for those values that
- * are expected to be dynamically computed based on a particular instance's
- * internal state.
- * <p>
- * Clients are expected to override the creation of the main dialog area, and
- * may optionally override the creation of the title area and info area in order
- * to add content. In general, however, the creation of stylistic features, such
- * as the dialog menu, separator styles, and fonts, is kept private so that all
- * popup dialogs will have a similar appearance.
- * 
- * @since 3.2
- */
-public class PopupDialog extends Window {
-
-	/**
-	 * 
-	 */
-	private static final GridDataFactory LAYOUTDATA_GRAB_BOTH = GridDataFactory
-			.fillDefaults().grab(true, true);
-
-	/**
-	 * The dialog settings key name for stored dialog x location.
-	 */
-	private static final String DIALOG_ORIGIN_X = "DIALOG_X_ORIGIN"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog y location.
-	 */
-	private static final String DIALOG_ORIGIN_Y = "DIALOG_Y_ORIGIN"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog width.
-	 */
-	private static final String DIALOG_WIDTH = "DIALOG_WIDTH"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for stored dialog height.
-	 */
-	private static final String DIALOG_HEIGHT = "DIALOG_HEIGHT"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for remembering if the persisted bounds
-	 * should be accessed.
-	 * 
-	 * @deprecated Since 3.4, this is retained only for backward compatibility.
-	 */
-	private static final String DIALOG_USE_PERSISTED_BOUNDS = "DIALOG_USE_PERSISTED_BOUNDS"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for remembering if the bounds persisted
-	 * prior to 3.4 have been migrated to the 3.4 settings.
-	 * 
-	 * @since 3.4
-	 * @deprecated This is marked deprecated at its introduction to discourage
-	 *             future dependency
-	 */
-	private static final String DIALOG_VALUE_MIGRATED_TO_34 = "hasBeenMigratedTo34"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for remembering if the persisted size should
-	 * be accessed.
-	 */
-	private static final String DIALOG_USE_PERSISTED_SIZE = "DIALOG_USE_PERSISTED_SIZE"; //$NON-NLS-1$
-
-	/**
-	 * The dialog settings key name for remembering if the persisted location
-	 * should be accessed.
-	 */
-	private static final String DIALOG_USE_PERSISTED_LOCATION = "DIALOG_USE_PERSISTED_LOCATION"; //$NON-NLS-1$
-
-	/**
-	 * Move action for the dialog.
-	 */
-	private class MoveAction extends Action {
-
-		MoveAction() {
-			super(JFaceResources.getString("PopupDialog.move"), //$NON-NLS-1$
-					IAction.AS_PUSH_BUTTON);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			performTrackerAction(SWT.NONE);
-		}
-
-	}
-
-	/**
-	 * Resize action for the dialog.
-	 */
-	private class ResizeAction extends Action {
-
-		ResizeAction() {
-			super(JFaceResources.getString("PopupDialog.resize"), //$NON-NLS-1$
-					IAction.AS_PUSH_BUTTON);
-		}
-
-		/*
-		 * @see org.eclipse.jface.action.Action#run()
-		 */
-		public void run() {
-			performTrackerAction(SWT.RESIZE);
-		}
-	}
-
-	/**
-	 * 
-	 * Remember bounds action for the dialog.
-	 */
-	private class PersistBoundsAction extends Action {
-
-		PersistBoundsAction() {
-			super(JFaceResources.getString("PopupDialog.persistBounds"), //$NON-NLS-1$
-					IAction.AS_CHECK_BOX);
-			setChecked(persistLocation && persistSize);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			persistSize = isChecked();
-			persistLocation = persistSize;
-		}
-	}
-
-	/**
-	 * 
-	 * Remember bounds action for the dialog.
-	 */
-	private class PersistSizeAction extends Action {
-
-		PersistSizeAction() {
-			super(JFaceResources.getString("PopupDialog.persistSize"), //$NON-NLS-1$
-					IAction.AS_CHECK_BOX);
-			setChecked(persistSize);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			persistSize = isChecked();
-		}
-	}
-
-	/**
-	 * 
-	 * Remember location action for the dialog.
-	 */
-	private class PersistLocationAction extends Action {
-
-		PersistLocationAction() {
-			super(JFaceResources.getString("PopupDialog.persistLocation"), //$NON-NLS-1$
-					IAction.AS_CHECK_BOX);
-			setChecked(persistLocation);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			persistLocation = isChecked();
-		}
-	}
-
-	/**
-	 * Shell style appropriate for a simple hover popup that cannot get focus.
-	 * 
-	 */
-	public final static int HOVER_SHELLSTYLE = SWT.NO_FOCUS | SWT.ON_TOP
-			| SWT.TOOL;
-
-	/**
-	 * Shell style appropriate for an info popup that can get focus.
-	 */
-	public final static int INFOPOPUP_SHELLSTYLE = SWT.TOOL;
-
-	/**
-	 * Shell style appropriate for a resizable info popup that can get focus.
-	 */
-	public final static int INFOPOPUPRESIZE_SHELLSTYLE = SWT.RESIZE;
-
-	/**
-	 * Margin width (in pixels) to be used in layouts inside popup dialogs
-	 * (value is 0).
-	 */
-	public final static int POPUP_MARGINWIDTH = 0;
-
-	/**
-	 * Margin height (in pixels) to be used in layouts inside popup dialogs
-	 * (value is 0).
-	 */
-	public final static int POPUP_MARGINHEIGHT = 0;
-
-	/**
-	 * Vertical spacing (in pixels) between cells in the layouts inside popup
-	 * dialogs (value is 1).
-	 */
-	public final static int POPUP_VERTICALSPACING = 1;
-
-	/**
-	 * Vertical spacing (in pixels) between cells in the layouts inside popup
-	 * dialogs (value is 1).
-	 */
-	public final static int POPUP_HORIZONTALSPACING = 1;
-
-	/**
-	 * Image registry key for menu image.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String POPUP_IMG_MENU = "popup_menu_image"; //$NON-NLS-1$
-
-	/**
-	 * Image registry key for disabled menu image.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String POPUP_IMG_MENU_DISABLED = "popup_menu_image_diabled"; //$NON-NLS-1$
-
-	/**
-	 * 
-	 */
-	private static final GridLayoutFactory POPUP_LAYOUT_FACTORY = GridLayoutFactory
-			.fillDefaults().margins(POPUP_MARGINWIDTH, POPUP_MARGINHEIGHT)
-			.spacing(POPUP_HORIZONTALSPACING, POPUP_VERTICALSPACING);
-
-	/**
-	 * The dialog's toolbar for the move and resize capabilities.
-	 */
-	private ToolBar toolBar = null;
-
-	/**
-	 * The dialog's menu manager.
-	 */
-	private MenuManager menuManager = null;
-
-	/**
-	 * The control representing the main dialog area.
-	 */
-	private Control dialogArea;
-
-	/**
-	 * Labels that contain title and info text. Cached so they can be updated
-	 * dynamically if possible.
-	 */
-	private Label titleLabel, infoLabel;
-
-	/**
-	 * Separator controls. Cached so they can be excluded from color changes.
-	 */
-	private Control titleSeparator, infoSeparator;
-
-	/**
-	 * Font to be used for the info area text. Computed based on the dialog's
-	 * font.
-	 */
-	private Font infoFont;
-
-	/**
-	 * Font to be used for the title area text. Computed based on the dialog's
-	 * font.
-	 */
-	private Font titleFont;
-
-	/**
-	 * Flags indicating whether we are listening for shell deactivate events,
-	 * either those or our parent's. Used to prevent closure when a menu command
-	 * is chosen or a secondary popup is launched.
-	 */
-	private boolean listenToDeactivate;
-
-	private boolean listenToParentDeactivate;
-
-	private Listener parentDeactivateListener;
-
-	/**
-	 * Flag indicating whether focus should be taken when the dialog is opened.
-	 */
-	private boolean takeFocusOnOpen = false;
-
-	/**
-	 * Flag specifying whether a menu should be shown that allows the user to
-	 * move and resize.
-	 */
-	private boolean showDialogMenu = false;
-
-	/**
-	 * Flag specifying whether menu actions allowing the user to choose whether
-	 * the dialog bounds and location should be persisted are to be shown.
-	 */
-	private boolean showPersistActions = false;
-
-	/**
-	 * Flag specifying whether the size of the popup should be persisted. This
-	 * flag is used as initial default and updated by the menu if it is shown.
-	 */
-	private boolean persistSize = false;
-
-	/**
-	 * Flag specifying whether the location of the popup should be persisted.
-	 * This flag is used as initial default and updated by the menu if it is
-	 * shown.
-	 */
-	private boolean persistLocation = false;
-	/**
-	 * Flag specifying whether to use new 3.4 API instead of the old one.
-	 * 
-	 * @since 3.4
-	 */
-	private boolean isUsing34API = true;
-
-	/**
-	 * Text to be shown in an optional title area (on top).
-	 */
-	private String titleText;
-
-	/**
-	 * Text to be shown in an optional info area (at the bottom).
-	 */
-	private String infoText;
-
-	/**
-	 * Constructs a new instance of <code>PopupDialog</code>.
-	 * 
-	 * @param parent
-	 *            The parent shell.
-	 * @param shellStyle
-	 *            The shell style.
-	 * @param takeFocusOnOpen
-	 *            A boolean indicating whether focus should be taken by this
-	 *            popup when it opens.
-	 * @param persistBounds
-	 *            A boolean indicating whether the bounds (size and location) of
-	 *            the dialog should be persisted upon close of the dialog. The
-	 *            bounds can only be persisted if the dialog settings for
-	 *            persisting the bounds are also specified. If a menu action
-	 *            will be provided that allows the user to control this feature,
-	 *            then the last known value of the user's setting will be used
-	 *            instead of this flag.
-	 * @param showDialogMenu
-	 *            A boolean indicating whether a menu for moving and resizing
-	 *            the popup should be provided.
-	 * @param showPersistActions
-	 *            A boolean indicating whether actions allowing the user to
-	 *            control the persisting of the dialog size and location should
-	 *            be shown in the dialog menu. This parameter has no effect if
-	 *            <code>showDialogMenu</code> is <code>false</code>.
-	 * @param titleText
-	 *            Text to be shown in an upper title area, or <code>null</code>
-	 *            if there is no title.
-	 * @param infoText
-	 *            Text to be shown in a lower info area, or <code>null</code>
-	 *            if there is no info area.
-	 * 
-	 * @see PopupDialog#getDialogSettings()
-	 * @deprecated As of 3.4, replaced by
-	 *             {@link #PopupDialog(Shell, int, boolean, boolean, boolean, boolean, boolean, String, String)}
-	 */
-	public PopupDialog(Shell parent, int shellStyle, boolean takeFocusOnOpen,
-			boolean persistBounds, boolean showDialogMenu,
-			boolean showPersistActions, String titleText, String infoText) {
-		this(parent, shellStyle, takeFocusOnOpen, persistBounds, persistBounds,
-				showDialogMenu, showPersistActions, titleText, infoText, false);
-	}
-
-	/**
-	 * Constructs a new instance of <code>PopupDialog</code>.
-	 * 
-	 * @param parent
-	 *            The parent shell.
-	 * @param shellStyle
-	 *            The shell style.
-	 * @param takeFocusOnOpen
-	 *            A boolean indicating whether focus should be taken by this
-	 *            popup when it opens.
-	 * @param persistSize
-	 *            A boolean indicating whether the size should be persisted upon
-	 *            close of the dialog. The size can only be persisted if the
-	 *            dialog settings for persisting the bounds are also specified.
-	 *            If a menu action will be provided that allows the user to
-	 *            control this feature and the user hasn't changed that setting,
-	 *            then this flag is used as initial default for the menu.
-	 * @param persistLocation
-	 *            A boolean indicating whether the location should be persisted
-	 *            upon close of the dialog. The location can only be persisted
-	 *            if the dialog settings for persisting the bounds are also
-	 *            specified. If a menu action will be provided that allows the
-	 *            user to control this feature and the user hasn't changed that
-	 *            setting, then this flag is used as initial default for the
-	 *            menu. default for the menu until the user changed it.
-	 * @param showDialogMenu
-	 *            A boolean indicating whether a menu for moving and resizing
-	 *            the popup should be provided.
-	 * @param showPersistActions
-	 *            A boolean indicating whether actions allowing the user to
-	 *            control the persisting of the dialog bounds and location
-	 *            should be shown in the dialog menu. This parameter has no
-	 *            effect if <code>showDialogMenu</code> is <code>false</code>.
-	 * @param titleText
-	 *            Text to be shown in an upper title area, or <code>null</code>
-	 *            if there is no title.
-	 * @param infoText
-	 *            Text to be shown in a lower info area, or <code>null</code>
-	 *            if there is no info area.
-	 * 
-	 * @see PopupDialog#getDialogSettings()
-	 * 
-	 * @since 3.4
-	 */
-	public PopupDialog(Shell parent, int shellStyle, boolean takeFocusOnOpen,
-			boolean persistSize, boolean persistLocation,
-			boolean showDialogMenu, boolean showPersistActions,
-			String titleText, String infoText) {
-		this(parent, shellStyle, takeFocusOnOpen, persistSize, persistLocation,
-				showDialogMenu, showPersistActions, titleText, infoText, true);
-
-	}
-
-	/**
-	 * Constructs a new instance of <code>PopupDialog</code>.
-	 * 
-	 * @param parent
-	 *            The parent shell.
-	 * @param shellStyle
-	 *            The shell style.
-	 * @param takeFocusOnOpen
-	 *            A boolean indicating whether focus should be taken by this
-	 *            popup when it opens.
-	 * @param persistSize
-	 *            A boolean indicating whether the size should be persisted upon
-	 *            close of the dialog. The size can only be persisted if the
-	 *            dialog settings for persisting the bounds are also specified.
-	 *            If a menu action will be provided that allows the user to
-	 *            control this feature and the user hasn't changed that setting,
-	 *            then this flag is used as initial default for the menu.
-	 * @param persistLocation
-	 *            A boolean indicating whether the location should be persisted
-	 *            upon close of the dialog. The location can only be persisted
-	 *            if the dialog settings for persisting the bounds are also
-	 *            specified. If a menu action will be provided that allows the
-	 *            user to control this feature and the user hasn't changed that
-	 *            setting, then this flag is used as initial default for the
-	 *            menu. default for the menu until the user changed it.
-	 * @param showDialogMenu
-	 *            A boolean indicating whether a menu for moving and resizing
-	 *            the popup should be provided.
-	 * @param showPersistActions
-	 *            A boolean indicating whether actions allowing the user to
-	 *            control the persisting of the dialog bounds and location
-	 *            should be shown in the dialog menu. This parameter has no
-	 *            effect if <code>showDialogMenu</code> is <code>false</code>.
-	 * @param titleText
-	 *            Text to be shown in an upper title area, or <code>null</code>
-	 *            if there is no title.
-	 * @param infoText
-	 *            Text to be shown in a lower info area, or <code>null</code>
-	 *            if there is no info area.
-	 * @param use34API
-	 *            <code>true</code> if 3.4 API should be used
-	 * 
-	 * @see PopupDialog#getDialogSettings()
-	 * 
-	 * @since 3.4
-	 */
-	private PopupDialog(Shell parent, int shellStyle, boolean takeFocusOnOpen,
-			boolean persistSize, boolean persistLocation,
-			boolean showDialogMenu, boolean showPersistActions,
-			String titleText, String infoText, boolean use34API) {
-		super(parent);
-		// Prior to 3.4, we encouraged use of SWT.NO_TRIM and provided a
-		// border using a black composite background and margin. Now we
-		// use SWT.TOOL to get the border for some cases and this conflicts
-		// with SWT.NO_TRIM. Clients who previously have used SWT.NO_TRIM
-		// and still had a border drawn for them would find their border go
-		// away unless we do the following:
-		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=219743
-		if ((shellStyle & SWT.NO_TRIM) != 0) {
-			shellStyle &= ~(SWT.NO_TRIM | SWT.SHELL_TRIM);
-		}
-
-		setShellStyle(shellStyle);
-		this.takeFocusOnOpen = takeFocusOnOpen;
-		this.showDialogMenu = showDialogMenu;
-		this.showPersistActions = showPersistActions;
-		this.titleText = titleText;
-		this.infoText = infoText;
-
-		setBlockOnOpen(false);
-
-		this.isUsing34API = use34API;
-
-		this.persistSize = persistSize;
-		this.persistLocation = persistLocation;
-
-		migrateBoundsSetting();
-
-		initializeWidgetState();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#configureShell(Shell)
-	 */
-	protected void configureShell(Shell shell) {
-		GridLayoutFactory.fillDefaults().margins(0, 0).spacing(5, 5).applyTo(
-				shell);
-
-		shell.addListener(SWT.Deactivate, new Listener() {
-			public void handleEvent(Event event) {
-				/*
-				 * Close if we are deactivating and have no child shells. If we
-				 * have child shells, we are deactivating due to their opening.
-				 * On X, we receive this when a menu child (such as the system
-				 * menu) of the shell opens, but I have not found a way to
-				 * distinguish that case here. Hence bug #113577 still exists.
-				 */
-				if (listenToDeactivate && event.widget == getShell()
-						&& getShell().getShells().length == 0) {
-					asyncClose();
-				} else {
-					/*
-					 * We typically ignore deactivates to work around
-					 * platform-specific event ordering. Now that we've ignored
-					 * whatever we were supposed to, start listening to
-					 * deactivates. Example issues can be found in
-					 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=123392
-					 */
-					listenToDeactivate = true;
-				}
-			}
-		});
-		// Set this true whenever we activate. It may have been turned
-		// off by a menu or secondary popup showing.
-		shell.addListener(SWT.Activate, new Listener() {
-			public void handleEvent(Event event) {
-				// ignore this event if we have launched a child
-				if (event.widget == getShell()
-						&& getShell().getShells().length == 0) {
-					listenToDeactivate = true;
-					// Typically we start listening for parent deactivate after
-					// we are activated, except on the Mac, where the deactivate
-					// is received after activate.
-					// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=100668
-					listenToParentDeactivate = !"carbon".equals(SWT.getPlatform()); //$NON-NLS-1$
-				}
-			}
-		});
-
-		if ((getShellStyle() & SWT.ON_TOP) != 0 && shell.getParent() != null) {
-			parentDeactivateListener = new Listener() {
-				public void handleEvent(Event event) {
-					if (listenToParentDeactivate) {
-						asyncClose();
-					} else {
-						// Our first deactivate, now start listening on the Mac.
-						listenToParentDeactivate = listenToDeactivate;
-					}
-				}
-			};
-			shell.getParent().addListener(SWT.Deactivate,
-					parentDeactivateListener);
-		}
-
-		shell.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent event) {
-				handleDispose();
-			}
-		});
-	}
-
-	private void asyncClose() {
-		// workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=152010
-		getShell().getDisplay().asyncExec(new Runnable() {
-			public void run() {
-				close();
-			}
-		});
-	}
-
-	/**
-	 * The <code>PopupDialog</code> implementation of this <code>Window</code>
-	 * method creates and lays out the top level composite for the dialog. It
-	 * then calls the <code>createTitleMenuArea</code>,
-	 * <code>createDialogArea</code>, and <code>createInfoTextArea</code>
-	 * methods to create an optional title and menu area on the top, a dialog
-	 * area in the center, and an optional info text area at the bottom.
-	 * Overriding <code>createDialogArea</code> and (optionally)
-	 * <code>createTitleMenuArea</code> and <code>createTitleMenuArea</code>
-	 * are recommended rather than overriding this method.
-	 * 
-	 * @param parent
-	 *            the composite used to parent the contents.
-	 * 
-	 * @return the control representing the contents.
-	 */
-	protected Control createContents(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		POPUP_LAYOUT_FACTORY.applyTo(composite);
-		LAYOUTDATA_GRAB_BOTH.applyTo(composite);
-
-		// Title area
-		if (hasTitleArea()) {
-			createTitleMenuArea(composite);
-			titleSeparator = createHorizontalSeparator(composite);
-		}
-		// Content
-		dialogArea = createDialogArea(composite);
-		// Create a grid data layout data if one was not provided.
-		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=118025
-		if (dialogArea.getLayoutData() == null) {
-			LAYOUTDATA_GRAB_BOTH.applyTo(dialogArea);
-		}
-
-		// Info field
-		if (hasInfoArea()) {
-			infoSeparator = createHorizontalSeparator(composite);
-			createInfoTextArea(composite);
-		}
-
-		applyColors(composite);
-		applyFonts(composite);
-		return composite;
-	}
-
-	/**
-	 * Creates and returns the contents of the dialog (the area below the title
-	 * area and above the info text area.
-	 * <p>
-	 * The <code>PopupDialog</code> implementation of this framework method
-	 * creates and returns a new <code>Composite</code> with standard margins
-	 * and spacing.
-	 * <p>
-	 * The returned control's layout data must be an instance of
-	 * <code>GridData</code>. This method must not modify the parent's
-	 * layout.
-	 * <p>
-	 * Subclasses must override this method but may call <code>super</code> as
-	 * in the following example:
-	 * 
-	 * <pre>
-	 * Composite composite = (Composite) super.createDialogArea(parent);
-	 * //add controls to composite as necessary
-	 * return composite;
-	 * </pre>
-	 * 
-	 * @param parent
-	 *            the parent composite to contain the dialog area
-	 * @return the dialog area control
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		POPUP_LAYOUT_FACTORY.applyTo(composite);
-		LAYOUTDATA_GRAB_BOTH.applyTo(composite);
-		return composite;
-	}
-
-	/**
-	 * Returns the control that should get initial focus. Subclasses may
-	 * override this method.
-	 * 
-	 * @return the Control that should receive focus when the popup opens.
-	 */
-	protected Control getFocusControl() {
-		return dialogArea;
-	}
-
-	/**
-	 * Sets the tab order for the popup. Clients should override to introduce
-	 * specific tab ordering.
-	 * 
-	 * @param composite
-	 *            the composite in which all content, including the title area
-	 *            and info area, was created. This composite's parent is the
-	 *            shell.
-	 */
-	protected void setTabOrder(Composite composite) {
-		// default is to do nothing
-	}
-
-	/**
-	 * Returns a boolean indicating whether the popup should have a title area
-	 * at the top of the dialog. Subclasses may override. Default behavior is to
-	 * have a title area if there is to be a menu or title text.
-	 * 
-	 * @return <code>true</code> if a title area should be created,
-	 *         <code>false</code> if it should not.
-	 */
-	protected boolean hasTitleArea() {
-		return titleText != null || showDialogMenu;
-	}
-
-	/**
-	 * Returns a boolean indicating whether the popup should have an info area
-	 * at the bottom of the dialog. Subclasses may override. Default behavior is
-	 * to have an info area if info text was provided at the time of creation.
-	 * 
-	 * @return <code>true</code> if a title area should be created,
-	 *         <code>false</code> if it should not.
-	 */
-	protected boolean hasInfoArea() {
-		return infoText != null;
-	}
-
-	/**
-	 * Creates the title and menu area. Subclasses typically need not override
-	 * this method, but instead should use the constructor parameters
-	 * <code>showDialogMenu</code> and <code>showPersistAction</code> to
-	 * indicate whether a menu should be shown, and
-	 * <code>createTitleControl</code> to to customize the presentation of the
-	 * title.
-	 * 
-	 * <p>
-	 * If this method is overridden, the returned control's layout data must be
-	 * an instance of <code>GridData</code>. This method must not modify the
-	 * parent's layout.
-	 * 
-	 * @param parent
-	 *            The parent composite.
-	 * @return The Control representing the title and menu area.
-	 */
-	protected Control createTitleMenuArea(Composite parent) {
-
-		Composite titleAreaComposite = new Composite(parent, SWT.NONE);
-		POPUP_LAYOUT_FACTORY.copy().numColumns(2).applyTo(titleAreaComposite);
-		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true,
-				false).applyTo(titleAreaComposite);
-
-		createTitleControl(titleAreaComposite);
-
-		if (showDialogMenu) {
-			createDialogMenu(titleAreaComposite);
-		}
-		return titleAreaComposite;
-	}
-
-	/**
-	 * Creates the control to be used to represent the dialog's title text.
-	 * Subclasses may override if a different control is desired for
-	 * representing the title text, or if something different than the title
-	 * should be displayed in location where the title text typically is shown.
-	 * 
-	 * <p>
-	 * If this method is overridden, the returned control's layout data must be
-	 * an instance of <code>GridData</code>. This method must not modify the
-	 * parent's layout.
-	 * 
-	 * @param parent
-	 *            The parent composite.
-	 * @return The Control representing the title area.
-	 */
-	protected Control createTitleControl(Composite parent) {
-		titleLabel = new Label(parent, SWT.NONE);
-
-		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true,
-				false).span(showDialogMenu ? 1 : 2, 1).applyTo(titleLabel);
-
-		if (titleText != null) {
-			titleLabel.setText(titleText);
-		}
-		return titleLabel;
-	}
-
-	/**
-	 * Creates the optional info text area. This method is only called if the
-	 * <code>hasInfoArea()</code> method returns true. Subclasses typically
-	 * need not override this method, but may do so.
-	 * 
-	 * <p>
-	 * If this method is overridden, the returned control's layout data must be
-	 * an instance of <code>GridData</code>. This method must not modify the
-	 * parent's layout.
-	 * 
-	 * 
-	 * @param parent
-	 *            The parent composite.
-	 * @return The control representing the info text area.
-	 * 
-	 * @see PopupDialog#hasInfoArea()
-	 * @see PopupDialog#createTitleControl(Composite)
-	 */
-	protected Control createInfoTextArea(Composite parent) {
-		// Status label
-		infoLabel = new Label(parent, SWT.RIGHT);
-		infoLabel.setText(infoText);
-		
-		GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL,
-				SWT.BEGINNING).applyTo(infoLabel);
-		infoLabel.setForeground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_WIDGET_DARK_SHADOW));
-		return infoLabel;
-	}
-
-	/**
-	 * Create a horizontal separator for the given parent.
-	 * 
-	 * @param parent
-	 *            The parent composite.
-	 * @return The Control representing the horizontal separator.
-	 */
-	private Control createHorizontalSeparator(Composite parent) {
-		Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL
-				| SWT.LINE_DOT);
-		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true,
-				false).applyTo(separator);
-		return separator;
-	}
-
-	/**
-	 * Create the dialog's menu for the move and resize actions.
-	 * 
-	 * @param parent
-	 *            The parent composite.
-	 */
-	private void createDialogMenu(Composite parent) {
-
-		toolBar = new ToolBar(parent, SWT.FLAT);
-		ToolItem viewMenuButton = new ToolItem(toolBar, SWT.PUSH, 0);
-
-		GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).applyTo(
-				toolBar);
-		viewMenuButton.setImage(JFaceResources.getImage(POPUP_IMG_MENU));
-		viewMenuButton.setDisabledImage(JFaceResources
-				.getImage(POPUP_IMG_MENU_DISABLED));
-		viewMenuButton.setToolTipText(JFaceResources
-				.getString("PopupDialog.menuTooltip")); //$NON-NLS-1$
-		viewMenuButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				showDialogMenu();
-			}
-		});
-		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=177183
-		toolBar.addMouseListener(new MouseAdapter() {
-			public void mouseDown(MouseEvent e) {
-				showDialogMenu();
-			}
-		});
-	}
-
-	/**
-	 * Fill the dialog's menu. Subclasses may extend or override.
-	 * 
-	 * @param dialogMenu
-	 *            The dialog's menu.
-	 */
-	protected void fillDialogMenu(IMenuManager dialogMenu) {
-		dialogMenu.add(new GroupMarker("SystemMenuStart")); //$NON-NLS-1$
-		dialogMenu.add(new MoveAction());
-		dialogMenu.add(new ResizeAction());
-		if (showPersistActions) {
-			if (isUsing34API) {
-				dialogMenu.add(new PersistLocationAction());
-				dialogMenu.add(new PersistSizeAction());
-			} else {
-				dialogMenu.add(new PersistBoundsAction());
-			}
-		}
-		dialogMenu.add(new Separator("SystemMenuEnd")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Perform the requested tracker action (resize or move).
-	 * 
-	 * @param style
-	 *            The track style (resize or move).
-	 */
-	private void performTrackerAction(int style) {
-		Shell shell = getShell();
-		if (shell == null || shell.isDisposed()) {
-			return;
-		}
-
-		Tracker tracker = new Tracker(shell.getDisplay(), style);
-		tracker.setStippled(true);
-		Rectangle[] r = new Rectangle[] { shell.getBounds() };
-		tracker.setRectangles(r);
-
-		// Ignore any deactivate events caused by opening the tracker.
-		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=120656
-		boolean oldListenToDeactivate = listenToDeactivate;
-		listenToDeactivate = false;
-		if (tracker.open()) {
-			if (shell != null && !shell.isDisposed()) {
-				shell.setBounds(tracker.getRectangles()[0]);
-			}
-		}
-		listenToDeactivate = oldListenToDeactivate;
-	}
-
-	/**
-	 * Show the dialog's menu. This message has no effect if the receiver was
-	 * not configured to show a menu. Clients may call this method in order to
-	 * trigger the menu via keystrokes or other gestures. Subclasses typically
-	 * do not override method.
-	 */
-	protected void showDialogMenu() {
-		if (!showDialogMenu) {
-			return;
-		}
-
-		if (menuManager == null) {
-			menuManager = new MenuManager();
-			fillDialogMenu(menuManager);
-		}
-		// Setting this flag works around a problem that remains on X only,
-		// whereby activating the menu deactivates our shell.
-		listenToDeactivate = !"gtk".equals(SWT.getPlatform()); //$NON-NLS-1$
-
-		Menu menu = menuManager.createContextMenu(getShell());
-		Rectangle bounds = toolBar.getBounds();
-		Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
-		topLeft = getShell().toDisplay(topLeft);
-		menu.setLocation(topLeft.x, topLeft.y);
-		menu.setVisible(true);
-	}
-
-	/**
-	 * Set the text to be shown in the popup's info area. This message has no
-	 * effect if there was no info text supplied when the dialog first opened.
-	 * Subclasses may override this method.
-	 * 
-	 * @param text
-	 *            the text to be shown when the info area is displayed.
-	 * 
-	 */
-	protected void setInfoText(String text) {
-		infoText = text;
-		if (infoLabel != null) {
-			infoLabel.setText(text);
-		}
-	}
-
-	/**
-	 * Set the text to be shown in the popup's title area. This message has no
-	 * effect if there was no title label specified when the dialog was
-	 * originally opened. Subclasses may override this method.
-	 * 
-	 * @param text
-	 *            the text to be shown when the title area is displayed.
-	 * 
-	 */
-	protected void setTitleText(String text) {
-		titleText = text;
-		if (titleLabel != null) {
-			titleLabel.setText(text);
-		}
-	}
-
-	/**
-	 * Return a boolean indicating whether this dialog will persist its bounds.
-	 * This value is initially set in the dialog's constructor, but can be
-	 * modified if the persist bounds action is shown on the menu and the user
-	 * has changed its value. Subclasses may override this method.
-	 * 
-	 * @return <code>true</code> if the dialog's bounds will be persisted,
-	 *         <code>false</code> if it will not.
-	 * 
-	 * @deprecated As of 3.4, please use {@link #getPersistLocation()} or
-	 *             {@link #getPersistSize()} to determine separately whether
-	 *             size or location should be persisted.
-	 */
-	protected boolean getPersistBounds() {
-		return persistLocation && persistSize;
-	}
-
-	/**
-	 * Return a boolean indicating whether this dialog will persist its
-	 * location. This value is initially set in the dialog's constructor, but
-	 * can be modified if the persist location action is shown on the menu and
-	 * the user has changed its value. Subclasses may override this method.
-	 * 
-	 * @return <code>true</code> if the dialog's location will be persisted,
-	 *         <code>false</code> if it will not.
-	 * 
-	 * @see #getPersistSize()
-	 * @since 3.4
-	 */
-	protected boolean getPersistLocation() {
-		return persistLocation;
-	}
-
-	/**
-	 * Return a boolean indicating whether this dialog will persist its size.
-	 * This value is initially set in the dialog's constructor, but can be
-	 * modified if the persist size action is shown on the menu and the user has
-	 * changed its value. Subclasses may override this method.
-	 * 
-	 * @return <code>true</code> if the dialog's size will be persisted,
-	 *         <code>false</code> if it will not.
-	 * 
-	 * @see #getPersistLocation()
-	 * @since 3.4
-	 */
-	protected boolean getPersistSize() {
-		return persistSize;
-	}
-
-	/**
-	 * Opens this window, creating it first if it has not yet been created.
-	 * <p>
-	 * This method is reimplemented for special configuration of PopupDialogs.
-	 * It never blocks on open, immediately returning <code>OK</code> if the
-	 * open is successful, or <code>CANCEL</code> if it is not. It provides
-	 * framework hooks that allow subclasses to set the focus and tab order, and
-	 * avoids the use of <code>shell.open()</code> in cases where the focus
-	 * should not be given to the shell initially.
-	 * 
-	 * @return the return code
-	 * 
-	 * @see org.eclipse.jface.window.Window#open()
-	 */
-	public int open() {
-
-		Shell shell = getShell();
-		if (shell == null || shell.isDisposed()) {
-			shell = null;
-			// create the window
-			create();
-			shell = getShell();
-		}
-
-		// provide a hook for adjusting the bounds. This is only
-		// necessary when there is content driven sizing that must be
-		// adjusted each time the dialog is opened.
-		adjustBounds();
-
-		// limit the shell size to the display size
-		constrainShellSize();
-
-		// set up the tab order for the dialog
-		setTabOrder((Composite) getContents());
-
-		// initialize flags for listening to deactivate
-		listenToDeactivate = false;
-		listenToParentDeactivate = false;
-
-		// open the window
-		if (takeFocusOnOpen) {
-			shell.open();
-			getFocusControl().setFocus();
-		} else {
-			shell.setVisible(true);
-		}
-
-		return OK;
-
-	}
-
-	/**
-	 * Closes this window, disposes its shell, and removes this window from its
-	 * window manager (if it has one).
-	 * <p>
-	 * This method is extended to save the dialog bounds and initialize widget
-	 * state so that the widgets can be recreated if the dialog is reopened.
-	 * This method may be extended (<code>super.close</code> must be called).
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the window is (or was already) closed, and
-	 *         <code>false</code> if it is still open
-	 */
-	public boolean close() {
-		// If already closed, there is nothing to do.
-		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=127505
-		if (getShell() == null || getShell().isDisposed()) {
-			return true;
-		}
-
-		saveDialogBounds(getShell());
-		// Widgets are about to be disposed, so null out any state
-		// related to them that was not handled in dispose listeners.
-		// We do this before disposal so that any received activate or
-		// deactivate events are duly ignored.
-		initializeWidgetState();
-
-		if (parentDeactivateListener != null) {
-			getShell().getParent().removeListener(SWT.Deactivate,
-					parentDeactivateListener);
-			parentDeactivateListener = null;
-		}
-
-		return super.close();
-	}
-
-	/**
-	 * Gets the dialog settings that should be used for remembering the bounds
-	 * of the dialog. Subclasses should override this method when they wish to
-	 * persist the bounds of the dialog.
-	 * 
-	 * @return settings the dialog settings used to store the dialog's location
-	 *         and/or size, or <code>null</code> if the dialog's bounds should
-	 *         never be stored.
-	 */
-	protected IDialogSettings getDialogSettings() {
-		return null;
-	}
-
-	/**
-	 * Saves the bounds of the shell in the appropriate dialog settings. The
-	 * bounds are recorded relative to the parent shell, if there is one, or
-	 * display coordinates if there is no parent shell. Subclasses typically
-	 * need not override this method, but may extend it (calling
-	 * <code>super.saveDialogBounds</code> if additional bounds information
-	 * should be stored. Clients may also call this method to persist the bounds
-	 * at times other than closing the dialog.
-	 * 
-	 * @param shell
-	 *            The shell whose bounds are to be stored
-	 */
-	protected void saveDialogBounds(Shell shell) {
-		IDialogSettings settings = getDialogSettings();
-		if (settings != null) {
-			Point shellLocation = shell.getLocation();
-			Point shellSize = shell.getSize();
-			Shell parent = getParentShell();
-			if (parent != null) {
-				Point parentLocation = parent.getLocation();
-				shellLocation.x -= parentLocation.x;
-				shellLocation.y -= parentLocation.y;
-			}
-			String prefix = getClass().getName();
-			if (persistSize) {
-				settings.put(prefix + DIALOG_WIDTH, shellSize.x);
-				settings.put(prefix + DIALOG_HEIGHT, shellSize.y);
-			}
-			if (persistLocation) {
-				settings.put(prefix + DIALOG_ORIGIN_X, shellLocation.x);
-				settings.put(prefix + DIALOG_ORIGIN_Y, shellLocation.y);
-			}
-			if (showPersistActions && showDialogMenu) {
-				settings.put(getClass().getName() + DIALOG_USE_PERSISTED_SIZE,
-						persistSize);
-				settings.put(getClass().getName()
-						+ DIALOG_USE_PERSISTED_LOCATION, persistLocation);
-
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#getInitialSize()
-	 */
-	protected Point getInitialSize() {
-		Point result = getDefaultSize();
-		if (persistSize) {
-			IDialogSettings settings = getDialogSettings();
-			if (settings != null) {
-				try {
-					int width = settings.getInt(getClass().getName()
-							+ DIALOG_WIDTH);
-					int height = settings.getInt(getClass().getName()
-							+ DIALOG_HEIGHT);
-					result = new Point(width, height);
-
-				} catch (NumberFormatException e) {
-				}
-			}
-		}
-		// No attempt is made to constrain the bounds. The default
-		// constraining behavior in Window will be used.
-		return result;
-	}
-
-	/**
-	 * Return the default size to use for the shell. This default size is used
-	 * if the dialog does not have any persisted size to restore. The default
-	 * implementation returns the preferred size of the shell. Subclasses should
-	 * override this method when an alternate default size is desired, rather
-	 * than overriding {@link #getInitialSize()}.
-	 * 
-	 * @return the initial size of the shell
-	 * 
-	 * @see #getPersistSize()
-	 * @since 3.4
-	 */
-	protected Point getDefaultSize() {
-		return super.getInitialSize();
-	}
-
-	/**
-	 * Returns the default location to use for the shell. This default location
-	 * is used if the dialog does not have any persisted location to restore.
-	 * The default implementation uses the location computed by
-	 * {@link org.eclipse.jface.window.Window#getInitialLocation(Point)}.
-	 * Subclasses should override this method when an alternate default location
-	 * is desired, rather than overriding {@link #getInitialLocation(Point)}.
-	 * 
-	 * @param initialSize
-	 *            the initial size of the shell, as returned by
-	 *            <code>getInitialSize</code>.
-	 * @return the initial location of the shell
-	 * 
-	 * @see #getPersistLocation()
-	 * @since 3.4
-	 */
-	protected Point getDefaultLocation(Point initialSize) {
-		return super.getInitialLocation(initialSize);
-	}
-
-	/**
-	 * Adjust the bounds of the popup as necessary prior to opening the dialog.
-	 * Default is to do nothing, which honors any bounds set directly by clients
-	 * or those that have been saved in the dialog settings. Subclasses should
-	 * override this method when there are bounds computations that must be
-	 * checked each time the dialog is opened.
-	 */
-	protected void adjustBounds() {
-	}
-
-	/**
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#getInitialLocation(org.eclipse.swt.graphics.Point)
-	 */
-	protected Point getInitialLocation(Point initialSize) {
-		Point result = getDefaultLocation(initialSize);
-		if (persistLocation) {
-			IDialogSettings settings = getDialogSettings();
-			if (settings != null) {
-				try {
-					int x = settings.getInt(getClass().getName()
-							+ DIALOG_ORIGIN_X);
-					int y = settings.getInt(getClass().getName()
-							+ DIALOG_ORIGIN_Y);
-					result = new Point(x, y);
-					// The coordinates were stored relative to the parent shell.
-					// Convert to display coordinates.
-					Shell parent = getParentShell();
-					if (parent != null) {
-						Point parentLocation = parent.getLocation();
-						result.x += parentLocation.x;
-						result.y += parentLocation.y;
-					}
-				} catch (NumberFormatException e) {
-				}
-			}
-		}
-		// No attempt is made to constrain the bounds. The default
-		// constraining behavior in Window will be used.
-		return result;
-	}
-
-	/**
-	 * Apply any desired color to the specified composite and its children.
-	 * 
-	 * @param composite
-	 *            the contents composite
-	 */
-	private void applyColors(Composite composite) {
-		// The getForeground() and getBackground() methods
-		// should not answer null, but IColorProvider clients
-		// are accustomed to null meaning use the default, so we guard
-		// against this assumption.
-		Color color = getForeground();
-		if (color == null)
-			color = getDefaultForeground();
-		applyForegroundColor(color, composite, getForegroundColorExclusions());
-		color = getBackground();
-		if (color == null)
-			color = getDefaultBackground();
-		applyBackgroundColor(color, composite, getBackgroundColorExclusions());
-	}
-
-	/**
-	 * Get the foreground color that should be used for this popup. Subclasses
-	 * may override.
-	 * 
-	 * @return the foreground color to be used. Should not be <code>null</code>.
-	 * 
-	 * @since 3.4
-	 * 
-	 * @see #getForegroundColorExclusions()
-	 */
-	protected Color getForeground() {
-		return getDefaultForeground();
-	}
-
-	/**
-	 * Get the background color that should be used for this popup. Subclasses
-	 * may override.
-	 * 
-	 * @return the background color to be used. Should not be <code>null</code>.
-	 * 
-	 * @since 3.4
-	 * 
-	 * @see #getBackgroundColorExclusions()
-	 */
-	protected Color getBackground() {
-		return getDefaultBackground();
-	}
-
-	/**
-	 * Return the default foreground color used for popup dialogs.
-	 * 
-	 * @return the default foreground color.
-	 */
-	private Color getDefaultForeground() {
-		return getShell().getDisplay()
-				.getSystemColor(SWT.COLOR_INFO_FOREGROUND);
-	}
-
-	/**
-	 * Return the default background color used for popup dialogs.
-	 * 
-	 * @return the default background color
-	 */
-	private Color getDefaultBackground() {
-		return getShell().getDisplay()
-				.getSystemColor(SWT.COLOR_INFO_BACKGROUND);
-	}
-
-	/**
-	 * Apply any desired fonts to the specified composite and its children.
-	 * 
-	 * @param composite
-	 *            the contents composite
-	 */
-	private void applyFonts(Composite composite) {
-		Dialog.applyDialogFont(composite);
-
-		if (titleLabel != null) {
-			Font font = titleLabel.getFont();
-			FontData[] fontDatas = font.getFontData();
-			for (int i = 0; i < fontDatas.length; i++) {
-				fontDatas[i].setStyle(SWT.BOLD);
-			}
-			titleFont = new Font(titleLabel.getDisplay(), fontDatas);
-			titleLabel.setFont(titleFont);
-		}
-
-		if (infoLabel != null) {
-			Font font = infoLabel.getFont();
-			FontData[] fontDatas = font.getFontData();
-			for (int i = 0; i < fontDatas.length; i++) {
-				fontDatas[i].setHeight(fontDatas[i].getHeight() * 9 / 10);
-			}
-			infoFont = new Font(infoLabel.getDisplay(), fontDatas);
-			infoLabel.setFont(infoFont);
-		}
-	}
-
-	/**
-	 * Set the specified foreground color for the specified control and all of
-	 * its children, except for those specified in the list of exclusions.
-	 * 
-	 * @param color
-	 *            the color to use as the foreground color
-	 * @param control
-	 *            the control whose color is to be changed
-	 * @param exclusions
-	 *            a list of controls who are to be excluded from getting their
-	 *            color assigned
-	 */
-	private void applyForegroundColor(Color color, Control control,
-			List exclusions) {
-		if (!exclusions.contains(control)) {
-			control.setForeground(color);
-		}
-		if (control instanceof Composite) {
-			Control[] children = ((Composite) control).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				applyForegroundColor(color, children[i], exclusions);
-			}
-		}
-	}
-
-	/**
-	 * Set the specified background color for the specified control and all of
-	 * its children, except for those specified in the list of exclusions.
-	 * 
-	 * @param color
-	 *            the color to use as the background color
-	 * @param control
-	 *            the control whose color is to be changed
-	 * @param exclusions
-	 *            a list of controls who are to be excluded from getting their
-	 *            color assigned
-	 */
-	private void applyBackgroundColor(Color color, Control control,
-			List exclusions) {
-		if (!exclusions.contains(control)) {
-			control.setBackground(color);
-		}
-		if (control instanceof Composite) {
-			Control[] children = ((Composite) control).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				applyBackgroundColor(color, children[i], exclusions);
-			}
-		}
-	}
-
-	/**
-	 * Set the specified foreground color for the specified control and all of
-	 * its children. Subclasses may override this method, but typically do not.
-	 * If a subclass wishes to exclude a particular control in its contents from
-	 * getting the specified foreground color, it may instead override
-	 * {@link #getForegroundColorExclusions()}.
-	 * 
-	 * @param color
-	 *            the color to use as the foreground color
-	 * @param control
-	 *            the control whose color is to be changed
-	 * @see PopupDialog#getForegroundColorExclusions()
-	 */
-	protected void applyForegroundColor(Color color, Control control) {
-		applyForegroundColor(color, control, getForegroundColorExclusions());
-	}
-
-	/**
-	 * Set the specified background color for the specified control and all of
-	 * its children. Subclasses may override this method, but typically do not.
-	 * If a subclass wishes to exclude a particular control in its contents from
-	 * getting the specified background color, it may instead override
-	 * {@link #getBackgroundColorExclusions()}
-	 * 
-	 * @param color
-	 *            the color to use as the background color
-	 * @param control
-	 *            the control whose color is to be changed
-	 * @see PopupDialog#getBackgroundColorExclusions()
-	 */
-	protected void applyBackgroundColor(Color color, Control control) {
-		applyBackgroundColor(color, control, getBackgroundColorExclusions());
-	}
-
-	/**
-	 * Return a list of controls which should never have their foreground color
-	 * reset. Subclasses may extend this method, but should always call
-	 * <code>super.getForegroundColorExclusions</code> to aggregate the list.
-	 * 
-	 * 
-	 * @return the List of controls
-	 */
-	protected List getForegroundColorExclusions() {
-		List list = new ArrayList(3);
-		if (infoLabel != null) {
-			list.add(infoLabel);
-		}
-		if (titleSeparator != null) {
-			list.add(titleSeparator);
-		}
-		if (infoSeparator != null) {
-			list.add(infoSeparator);
-		}
-		return list;
-	}
-
-	/**
-	 * Return a list of controls which should never have their background color
-	 * reset. Subclasses may extend this method, but should always call
-	 * <code>super.getBackgroundColorExclusions</code> to aggregate the list.
-	 * 
-	 * @return the List of controls
-	 */
-	protected List getBackgroundColorExclusions() {
-		List list = new ArrayList(2);
-		if (titleSeparator != null) {
-			list.add(titleSeparator);
-		}
-		if (infoSeparator != null) {
-			list.add(infoSeparator);
-		}
-		return list;
-	}
-
-	/**
-	 * Initialize any state related to the widgetry that should be set up each
-	 * time widgets are created.
-	 */
-	private void initializeWidgetState() {
-		menuManager = null;
-		dialogArea = null;
-		titleLabel = null;
-		titleSeparator = null;
-		infoSeparator = null;
-		infoLabel = null;
-		toolBar = null;
-
-		// If the menu item for persisting bounds is displayed, use the stored
-		// value to determine whether any persisted bounds should be honored at
-		// all.
-		if (showDialogMenu && showPersistActions) {
-			IDialogSettings settings = getDialogSettings();
-			if (settings != null) {
-				String key = getClass().getName() + DIALOG_USE_PERSISTED_SIZE;
-				if (settings.get(key) != null || !isUsing34API)
-					persistSize = settings.getBoolean(key);
-				key = getClass().getName() + DIALOG_USE_PERSISTED_LOCATION;
-				if (settings.get(key) != null || !isUsing34API)
-					persistLocation = settings.getBoolean(key);
-			}
-		}
-	}
-
-	private void migrateBoundsSetting() {
-		IDialogSettings settings = getDialogSettings();
-		if (settings == null)
-			return;
-
-		final String className = getClass().getName();
-
-		String key = className + DIALOG_USE_PERSISTED_BOUNDS;
-		String value = settings.get(key);
-		if (value == null || DIALOG_VALUE_MIGRATED_TO_34.equals(value))
-			return;
-
-		boolean storeBounds = settings.getBoolean(key);
-		settings.put(className + DIALOG_USE_PERSISTED_LOCATION, storeBounds);
-		settings.put(className + DIALOG_USE_PERSISTED_SIZE, storeBounds);
-		settings.put(key, DIALOG_VALUE_MIGRATED_TO_34);
-	}
-
-	/**
-	 * The dialog is being disposed. Dispose of any resources allocated.
-	 * 
-	 */
-	private void handleDispose() {
-		if (infoFont != null && !infoFont.isDisposed()) {
-			infoFont.dispose();
-		}
-		infoFont = null;
-		if (titleFont != null && !titleFont.isDisposed()) {
-			titleFont.dispose();
-		}
-		titleFont = null;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressIndicator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressIndicator.java
deleted file mode 100644
index a006a4b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressIndicator.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Mark Siegel <mark.siegel@businessobjects.com> - Fix for Bug 184533
- *     			[Progress] ProgressIndicator uses hardcoded style for ProgressBar
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.ProgressBar;
-
-/**
- * A control for showing progress feedback for a long running operation. This
- * control supports both determinate and indeterminate SWT progress bars. For
- * indeterminate progress, we don't have to know the total amount of work in
- * advance and no <code>worked</code> method needs to be called.
- */
-public class ProgressIndicator extends Composite {
-    private final static int PROGRESS_MAX = 1000; // value to use for max in
-
-    // progress bar
-    private boolean animated = true;
-
-    private StackLayout layout;
-
-    private ProgressBar determinateProgressBar;
-
-    private ProgressBar indeterminateProgressBar;
-
-    private double totalWork;
-
-    private double sumWorked;
-
-    /**
-     * Create a ProgressIndicator as a child under the given parent.
-     * 
-     * @param parent
-     *            The widgets parent
-     */
-    public ProgressIndicator(Composite parent) {
-        this(parent, SWT.NONE);      
-    }
-    
-    /**
-     * Create a ProgressIndicator as a child under the given parent.
-     * 
-     * @param parent
-     *            The widgets parent
-     * @param style the SWT style constants for progress monitors created 
-     * 	by the receiver.
-     * @since 3.4
-     */
-    public ProgressIndicator(Composite parent, int style) {
-    	super(parent, SWT.NULL);
-    	
-    	 // Enforce horizontal only if vertical isn't set
-        if ((style & SWT.VERTICAL) == 0)
-            style |= SWT.HORIZONTAL;
-
-        determinateProgressBar = new ProgressBar(this, style);
-        indeterminateProgressBar = new ProgressBar(this, style
-                | SWT.INDETERMINATE);
-        layout = new StackLayout();
-        setLayout(layout);
-    }
-
-    /**
-     * Initialize the progress bar to be animated.
-     */
-    public void beginAnimatedTask() {
-        done();
-        layout.topControl = indeterminateProgressBar;
-        layout();
-        animated = true;
-    }
-
-    /**
-     * Initialize the progress bar.
-     * 
-     * @param max
-     *            The maximum value.
-     */
-    public void beginTask(int max) {
-        done();
-        this.totalWork = max;
-        this.sumWorked = 0;
-        determinateProgressBar.setMinimum(0);
-        determinateProgressBar.setMaximum(PROGRESS_MAX);
-        determinateProgressBar.setSelection(0);
-        layout.topControl = determinateProgressBar;
-        layout();
-        animated = false;
-    }
-
-    /**
-     * Progress is done.
-     */
-    public void done() {
-        if (!animated) {
-            determinateProgressBar.setMinimum(0);
-            determinateProgressBar.setMaximum(0);
-            determinateProgressBar.setSelection(0);
-        }
-        layout.topControl = null;
-        layout();
-    }
-
-    /**
-     * Moves the progress indicator to the end.
-     */
-    public void sendRemainingWork() {
-        worked(totalWork - sumWorked);
-    }
-
-    /**
-     * Moves the progress indicator by the given amount of work units
-     * @param work the amount of work to increment by.
-     */
-    public void worked(double work) {
-        if (work == 0 || animated) {
-            return;
-        }
-        sumWorked += work;
-        if (sumWorked > totalWork) {
-            sumWorked = totalWork;
-        }
-        if (sumWorked < 0) {
-            sumWorked = 0;
-        }
-        int value = (int) (sumWorked / totalWork * PROGRESS_MAX);
-        if (determinateProgressBar.getSelection() < value) {
-            determinateProgressBar.setSelection(value);
-        }
-    }
-
-    /**
-	 * Show the receiver as showing an error.
-	 * @since 3.4
-	 */
-	public void showError() {
-		determinateProgressBar.setState(SWT.ERROR);
-		indeterminateProgressBar.setState(SWT.ERROR);
-	}
-	
-	/**
-	 * Show the receiver as being paused.
-	 * @since 3.4
-	 */
-	public void showPaused() {
-		determinateProgressBar.setState(SWT.PAUSED);
-		indeterminateProgressBar.setState(SWT.PAUSED);
-	}
-
-	/**
-	 * Reset the progress bar to it's normal style.
-	 * @since 3.4
-	 */
-	public void showNormal() {
-		determinateProgressBar.setState(SWT.NORMAL);
-		indeterminateProgressBar.setState(SWT.NORMAL);
-		
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressMonitorDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressMonitorDialog.java
deleted file mode 100644
index 4068e88..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressMonitorDialog.java
+++ /dev/null
@@ -1,685 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.operation.ModalContext;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-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.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A modal dialog that displays progress during a long running operation.
- * <p>
- * This concrete dialog class can be instantiated as is, or further subclassed
- * as required.
- * </p>
- * <p>
- * Typical usage is:
- * 
- * <pre>
- *  
- *   
- *    try {
- *       IRunnableWithProgress op = ...;
- *       new ProgressMonitorDialog(activeShell).run(true, true, op);
- *    } catch (InvocationTargetException e) {
- *       // handle exception
- *    } catch (InterruptedException e) {
- *       // handle cancelation
- *    }
- *    
- *   
- * </pre>
- * 
- * </p>
- * <p>
- * Note that the ProgressMonitorDialog is not intended to be used with multiple
- * runnables - this dialog should be discarded after completion of one
- * IRunnableWithProgress and a new one instantiated for use by a second or
- * sebsequent IRunnableWithProgress to ensure proper initialization.
- * </p>
- * <p>
- * Note that not forking the process will result in it running in the UI which
- * may starve the UI. The most obvious symptom of this problem is non
- * responsiveness of the cancel button. If you are running within the UI Thread
- * you should do the bulk of your work in another Thread to prevent starvation.
- * It is recommended that fork is set to true in most cases.
- * </p>
- */
-public class ProgressMonitorDialog extends IconAndMessageDialog implements
-		IRunnableContext {
-	/**
-	 * Name to use for task when normal task name is empty string.
-	 */
-	private static String DEFAULT_TASKNAME = JFaceResources
-			.getString("ProgressMonitorDialog.message"); //$NON-NLS-1$
-
-	/**
-	 * Constants for label and monitor size
-	 */
-	private static int LABEL_DLUS = 21;
-
-	private static int BAR_DLUS = 9;
-
-	/**
-	 * The progress indicator control.
-	 */
-	protected ProgressIndicator progressIndicator;
-
-	/**
-	 * The label control for the task. Kept for backwards compatibility.
-	 */
-	protected Label taskLabel;
-
-	/**
-	 * The label control for the subtask.
-	 */
-	protected Label subTaskLabel;
-
-	/**
-	 * The Cancel button control.
-	 */
-	protected Button cancel;
-
-	/**
-	 * Indicates whether the Cancel button is to be shown.
-	 */
-	protected boolean operationCancelableState = false;
-
-	/**
-	 * Indicates whether the Cancel button is to be enabled.
-	 */
-	protected boolean enableCancelButton;
-
-	/**
-	 * The progress monitor.
-	 */
-	private ProgressMonitor progressMonitor = new ProgressMonitor();
-
-	/**
-	 * The name of the current task (used by ProgressMonitor).
-	 */
-	private String task;
-
-	/**
-	 * The nesting depth of currently running runnables.
-	 */
-	private int nestingDepth;
-
-	/**
-	 * The cursor used in the cancel button;
-	 */
-	protected Cursor arrowCursor;
-
-	/**
-	 * The cursor used in the shell;
-	 */
-	private Cursor waitCursor;
-
-	/**
-	 * Flag indicating whether to open or merely create the dialog before run.
-	 */
-	private boolean openOnRun = true;
-
-	/**
-	 * Internal progress monitor implementation.
-	 */
-	private class ProgressMonitor implements IProgressMonitorWithBlocking {
-		private String fSubTask = "";//$NON-NLS-1$
-
-		private boolean fIsCanceled;
-
-		/**
-		 * is the process forked
-		 */
-		protected boolean forked = false;
-
-		/**
-		 * is locked
-		 */
-		protected boolean locked = false;
-
-		public void beginTask(String name, int totalWork) {
-			if (progressIndicator.isDisposed()) {
-				return;
-			}
-			if (name == null) {
-				task = "";//$NON-NLS-1$
-			} else {
-				task = name;
-			}
-			String s = task;
-			if (s.length() <= 0) {
-				s = DEFAULT_TASKNAME;
-			}
-			setMessage(s, false);
-			if (!forked) {
-				update();
-			}
-			if (totalWork == UNKNOWN) {
-				progressIndicator.beginAnimatedTask();
-			} else {
-				progressIndicator.beginTask(totalWork);
-			}
-		}
-
-		public void done() {
-			if (!progressIndicator.isDisposed()) {
-				progressIndicator.sendRemainingWork();
-				progressIndicator.done();
-			}
-		}
-
-		public void setTaskName(String name) {
-			if (name == null) {
-				task = "";//$NON-NLS-1$
-			} else {
-				task = name;
-			}
-			String s = task;
-			if (s.length() <= 0) {
-				s = DEFAULT_TASKNAME;
-			}
-			setMessage(s, false);
-			if (!forked) {
-				update();
-			}
-		}
-
-		public boolean isCanceled() {
-			return fIsCanceled;
-		}
-
-		public void setCanceled(boolean b) {
-			fIsCanceled = b;
-			if (locked) {
-				clearBlocked();
-			}
-		}
-
-		public void subTask(String name) {
-			if (subTaskLabel.isDisposed()) {
-				return;
-			}
-			if (name == null) {
-				fSubTask = "";//$NON-NLS-1$
-			} else {
-				fSubTask = name;
-			}
-			subTaskLabel.setText(shortenText(fSubTask, subTaskLabel));
-			if (!forked) {
-				subTaskLabel.update();
-			}
-		}
-
-		public void worked(int work) {
-			internalWorked(work);
-		}
-
-		public void internalWorked(double work) {
-			if (!progressIndicator.isDisposed()) {
-				progressIndicator.worked(work);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-		 */
-		public void clearBlocked() {
-			if (getShell().isDisposed())
-				return;
-			locked = false;
-			updateForClearBlocked();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-		 */
-		public void setBlocked(IStatus reason) {
-			if (getShell().isDisposed())
-				return;
-			locked = true;
-			updateForSetBlocked(reason);
-		}
-	}
-
-	/**
-	 * Clear blocked state from the receiver.
-	 */
-	protected void updateForClearBlocked() {
-		progressIndicator.showNormal();
-		setMessage(task, true);
-		imageLabel.setImage(getImage());
-		
-	}
-
-	/**
-	 * Set blocked state from the receiver.
-	 * 
-	 * @param reason
-	 *            IStatus that gives the details
-	 */
-	protected void updateForSetBlocked(IStatus reason) {
-		progressIndicator.showPaused();
-		setMessage(reason.getMessage(), true);
-		imageLabel.setImage(getImage());
-		
-	}
-
-	/**
-	 * Creates a progress monitor dialog under the given shell. The dialog has a
-	 * standard title and no image. <code>open</code> is non-blocking.
-	 * 
-	 * @param parent
-	 *            the parent shell, or <code>null</code> to create a top-level
-	 *            shell
-	 */
-	public ProgressMonitorDialog(Shell parent) {
-		super(parent);
-		// no close button on the shell style
-		if (isResizable()) {
-			setShellStyle(getDefaultOrientation() | SWT.BORDER | SWT.TITLE
-					| SWT.APPLICATION_MODAL | SWT.RESIZE | SWT.MAX);
-		} else {
-			setShellStyle(getDefaultOrientation() | SWT.BORDER | SWT.TITLE
-					| SWT.APPLICATION_MODAL);
-		}
-		setBlockOnOpen(false);
-	}
-
-	/**
-	 * Enables the cancel button (asynchronously).
-	 * 
-	 * @param b
-	 *            The state to set the button to.
-	 */
-	private void asyncSetOperationCancelButtonEnabled(final boolean b) {
-		if (getShell() != null) {
-			getShell().getDisplay().asyncExec(new Runnable() {
-				public void run() {
-					setOperationCancelButtonEnabled(b);
-				}
-			});
-		}
-	}
-
-	/**
-	 * The cancel button has been pressed.
-	 * 
-	 * @since 3.0
-	 */
-	protected void cancelPressed() {
-		// NOTE: this was previously done from a listener installed on the
-		// cancel button. On GTK, the listener installed by
-		// Dialog.createButton is called first and this was throwing an
-		// exception because the cancel button was already disposed
-		cancel.setEnabled(false);
-		progressMonitor.setCanceled(true);
-		super.cancelPressed();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Window.
-	 */
-	/**
-	 * The <code>ProgressMonitorDialog</code> implementation of this method
-	 * only closes the dialog if there are no currently running runnables.
-	 */
-	public boolean close() {
-		if (getNestingDepth() <= 0) {
-			clearCursors();
-			return super.close();
-		}
-		return false;
-	}
-
-	/**
-	 * Clear the cursors in the dialog.
-	 * 
-	 * @since 3.0
-	 */
-	protected void clearCursors() {
-		if (cancel != null && !cancel.isDisposed()) {
-			cancel.setCursor(null);
-		}
-		Shell shell = getShell();
-		if (shell != null && !shell.isDisposed()) {
-			shell.setCursor(null);
-		}
-		if (arrowCursor != null) {
-			arrowCursor.dispose();
-		}
-		if (waitCursor != null) {
-			waitCursor.dispose();
-		}
-		arrowCursor = null;
-		waitCursor = null;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in Window.
-	 */
-	protected void configureShell(final Shell shell) {
-		super.configureShell(shell);
-		shell.setText(JFaceResources.getString("ProgressMonitorDialog.title")); //$NON-NLS-1$
-		if (waitCursor == null) {
-			waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
-		}
-		shell.setCursor(waitCursor);
-		// Add a listener to set the message properly when the dialog becomes
-		// visible
-		shell.addListener(SWT.Show, new Listener() {
-			public void handleEvent(Event event) {
-				// We need to async the message update since the Show precedes
-				// visibility
-				shell.getDisplay().asyncExec(new Runnable() {
-					public void run() {
-						setMessage(message, true);
-					}
-				});
-			}
-		});
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog.
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		// cancel button
-		createCancelButton(parent);
-	}
-
-	/**
-	 * Creates the cancel button.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @since 3.0
-	 */
-	protected void createCancelButton(Composite parent) {
-		cancel = createButton(parent, IDialogConstants.CANCEL_ID,
-				IDialogConstants.CANCEL_LABEL, true);
-		if (arrowCursor == null) {
-			arrowCursor = new Cursor(cancel.getDisplay(), SWT.CURSOR_ARROW);
-		}
-		cancel.setCursor(arrowCursor);
-		setOperationCancelButtonEnabled(enableCancelButton);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog.
-	 */
-	protected Control createDialogArea(Composite parent) {
-		setMessage(DEFAULT_TASKNAME, false);
-		createMessageArea(parent);
-		// Only set for backwards compatibility
-		taskLabel = messageLabel;
-		// progress indicator
-		progressIndicator = new ProgressIndicator(parent);
-		GridData gd = new GridData();
-		gd.heightHint = convertVerticalDLUsToPixels(BAR_DLUS);
-		gd.horizontalAlignment = GridData.FILL;
-		gd.grabExcessHorizontalSpace = true;
-		gd.horizontalSpan = 2;
-		progressIndicator.setLayoutData(gd);
-		// label showing current task
-		subTaskLabel = new Label(parent, SWT.LEFT | SWT.WRAP);
-		gd = new GridData(GridData.FILL_HORIZONTAL);
-		gd.heightHint = convertVerticalDLUsToPixels(LABEL_DLUS);
-		gd.horizontalSpan = 2;
-		subTaskLabel.setLayoutData(gd);
-		subTaskLabel.setFont(parent.getFont());
-		return parent;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#getInitialSize()
-	 */
-	protected Point getInitialSize() {
-		Point calculatedSize = super.getInitialSize();
-		if (calculatedSize.x < 450) {
-			calculatedSize.x = 450;
-		}
-		return calculatedSize;
-	}
-
-	/**
-	 * Returns the progress monitor to use for operations run in this progress
-	 * dialog.
-	 * 
-	 * @return the progress monitor
-	 */
-	public IProgressMonitor getProgressMonitor() {
-		return progressMonitor;
-	}
-
-	/**
-	 * This implementation of IRunnableContext#run(boolean, boolean,
-	 * IRunnableWithProgress) runs the given <code>IRunnableWithProgress</code>
-	 * using the progress monitor for this progress dialog and blocks until the
-	 * runnable has been run, regardless of the value of <code>fork</code>.
-	 * The dialog is opened before the runnable is run, and closed after it
-	 * completes. It is recommended that <code>fork</code> is set to true in
-	 * most cases. If <code>fork</code> is set to <code>false</code>, the
-	 * runnable will run in the UI thread and it is the runnable's
-	 * responsibility to call <code>Display.readAndDispatch()</code> to ensure
-	 * UI responsiveness.
-	 */
-	public void run(boolean fork, boolean cancelable,
-			IRunnableWithProgress runnable) throws InvocationTargetException,
-			InterruptedException {
-		setCancelable(cancelable);
-		try {
-			aboutToRun();
-			// Let the progress monitor know if they need to update in UI Thread
-			progressMonitor.forked = fork;
-			ModalContext.run(runnable, fork, getProgressMonitor(), getShell()
-					.getDisplay());
-		} finally {
-			finishedRun();
-		}
-	}
-
-	/**
-	 * Returns whether the dialog should be opened before the operation is run.
-	 * Defaults to <code>true</code>
-	 * 
-	 * @return <code>true</code> to open the dialog before run,
-	 *         <code>false</code> to only create the dialog, but not open it
-	 * @since 3.0
-	 */
-	public boolean getOpenOnRun() {
-		return openOnRun;
-	}
-
-	/**
-	 * Sets whether the dialog should be opened before the operation is run.
-	 * NOTE: Setting this to false and not forking a process may starve any
-	 * asyncExec that tries to open the dialog later.
-	 * 
-	 * @param openOnRun
-	 *            <code>true</code> to open the dialog before run,
-	 *            <code>false</code> to only create the dialog, but not open
-	 *            it
-	 * @since 3.0
-	 */
-	public void setOpenOnRun(boolean openOnRun) {
-		this.openOnRun = openOnRun;
-	}
-
-	/**
-	 * Returns the nesting depth of running operations.
-	 * 
-	 * @return the nesting depth of running operations
-	 * @since 3.0
-	 */
-	protected int getNestingDepth() {
-		return nestingDepth;
-	}
-
-	/**
-	 * Increments the nesting depth of running operations.
-	 * 
-	 * @since 3.0
-	 */
-	protected void incrementNestingDepth() {
-		nestingDepth++;
-	}
-
-	/**
-	 * Decrements the nesting depth of running operations.
-	 * 
-	 * @since 3.0
-	 * 
-	 */
-	protected void decrementNestingDepth() {
-		nestingDepth--;
-	}
-
-	/**
-	 * Called just before the operation is run. Default behaviour is to open or
-	 * create the dialog, based on the setting of <code>getOpenOnRun</code>,
-	 * and increment the nesting depth.
-	 * 
-	 * @since 3.0
-	 */
-	protected void aboutToRun() {
-		if (getOpenOnRun()) {
-			open();
-		} else {
-			create();
-		}
-		incrementNestingDepth();
-	}
-
-	/**
-	 * Called just after the operation is run. Default behaviour is to decrement
-	 * the nesting depth, and close the dialog.
-	 * 
-	 * @since 3.0
-	 */
-	protected void finishedRun() {
-		decrementNestingDepth();
-		close();
-	}
-
-	/**
-	 * Sets whether the progress dialog is cancelable or not.
-	 * 
-	 * @param cancelable
-	 *            <code>true</code> if the end user can cancel this progress
-	 *            dialog, and <code>false</code> if it cannot be canceled
-	 */
-	public void setCancelable(boolean cancelable) {
-		if (cancel == null) {
-			enableCancelButton = cancelable;
-		} else {
-			asyncSetOperationCancelButtonEnabled(cancelable);
-		}
-	}
-
-	/**
-	 * Helper to enable/disable Cancel button for this dialog.
-	 * 
-	 * @param b
-	 *            <code>true</code> to enable the cancel button, and
-	 *            <code>false</code> to disable it
-	 * @since 3.0
-	 */
-	protected void setOperationCancelButtonEnabled(boolean b) {
-		operationCancelableState = b;
-		cancel.setEnabled(b);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage()
-	 */
-	protected Image getImage() {
-		return getInfoImage();
-	}
-
-	/**
-	 * Set the message in the message label.
-	 * 
-	 * @param messageString
-	 *            The string for the new message.
-	 * @param force
-	 *            If force is true then always set the message text.
-	 */
-	private void setMessage(String messageString, boolean force) {
-		// must not set null text in a label
-		message = messageString == null ? "" : messageString; //$NON-NLS-1$
-		if (messageLabel == null || messageLabel.isDisposed()) {
-			return;
-		}
-		if (force || messageLabel.isVisible()) {
-			messageLabel.setToolTipText(message);
-			messageLabel.setText(shortenText(message, messageLabel));
-		}
-	}
-
-	/**
-	 * Update the message label. Required if the monitor is forked.
-	 */
-	private void update() {
-		if (messageLabel == null || messageLabel.isDisposed()) {
-			return;
-		}
-		messageLabel.update();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#open()
-	 */
-	public int open() {
-		// Check to be sure it is not already done. If it is just return OK.
-		if (!getOpenOnRun()) {
-			if (getNestingDepth() == 0) {
-				return OK;
-			}
-		}
-		int result = super.open();
-		// update message label just in case beginTask() has been invoked
-		// already
-		if (task == null || task.length() == 0)
-			setMessage(DEFAULT_TASKNAME, true);
-		else
-			setMessage(task, true);
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/StatusDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/StatusDialog.java
deleted file mode 100644
index 7c7f436..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/StatusDialog.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Color;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * An abstract base class for dialogs with a status bar and OK/CANCEL buttons.
- * The status message is specified in an IStatus which can be of severity ERROR,
- * WARNING, INFO or OK. The OK button is enabled or disabled depending on the
- * status.
- * 
- * @since 3.1
- */
-public abstract class StatusDialog extends TrayDialog {
-
-	private Button fOkButton;
-
-	private MessageLine fStatusLine;
-
-	private IStatus fLastStatus;
-
-	private String fTitle;
-
-	private Image fImage;
-
-	private boolean fStatusLineAboveButtons = true;
-
-	/**
-	 * A message line displaying a status.
-	 */
-	private class MessageLine extends CLabel {
-
-		private Color fNormalMsgAreaBackground;
-
-		/**
-		 * Creates a new message line as a child of the given parent.
-		 * 
-		 * @param parent
-		 */
-		public MessageLine(Composite parent) {
-			this(parent, SWT.LEFT);
-		}
-
-		/**
-		 * Creates a new message line as a child of the parent and with the
-		 * given SWT stylebits.
-		 * 
-		 * @param parent
-		 * @param style
-		 */
-		public MessageLine(Composite parent, int style) {
-			super(parent, style);
-			fNormalMsgAreaBackground = getBackground();
-		}
-
-		/**
-		 * Find an image assocated with the status.
-		 * 
-		 * @param status
-		 * @return Image
-		 */
-		private Image findImage(IStatus status) {
-			if (status.isOK()) {
-				return null;
-			} else if (status.matches(IStatus.ERROR)) {
-				return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR);
-			} else if (status.matches(IStatus.WARNING)) {
-				return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING);
-			} else if (status.matches(IStatus.INFO)) {
-				return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_INFO);
-			}
-			return null;
-		}
-
-		/**
-		 * Sets the message and image to the given status.
-		 * 
-		 * @param status
-		 *            IStatus or <code>null</code>. <code>null</code> will
-		 *            set the empty text and no image.
-		 */
-		public void setErrorStatus(IStatus status) {
-			if (status != null && !status.isOK()) {
-				String message = status.getMessage();
-				if (message != null && message.length() > 0) {
-					setText(message);
-					// unqualified call of setImage is too ambiguous for
-					// Foundation 1.0 compiler
-					// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=140576
-					MessageLine.this.setImage(findImage(status));
-					setBackground(JFaceColors.getErrorBackground(getDisplay()));
-					return;
-				}
-			}
-			setText(""); //$NON-NLS-1$	
-			// unqualified call of setImage is too ambiguous for Foundation 1.0
-			// compiler
-			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=140576
-			MessageLine.this.setImage(null);
-			setBackground(fNormalMsgAreaBackground);
-		}
-	}
-
-	/**
-	 * Creates an instance of a status dialog.
-	 * 
-	 * @param parent
-	 *            the parent Shell of the dialog
-	 */
-	public StatusDialog(Shell parent) {
-		super(parent);
-		fLastStatus = new Status(IStatus.OK, Policy.JFACE, IStatus.OK,
-				Util.ZERO_LENGTH_STRING, null);
-	}
-
-	/**
-	 * Specifies whether status line appears to the left of the buttons
-	 * (default) or above them.
-	 * 
-	 * @param aboveButtons
-	 *            if <code>true</code> status line is placed above buttons; if
-	 *            <code>false</code> to the right
-	 */
-	public void setStatusLineAboveButtons(boolean aboveButtons) {
-		fStatusLineAboveButtons = aboveButtons;
-	}
-
-	/**
-	 * Update the dialog's status line to reflect the given status. It is safe
-	 * to call this method before the dialog has been opened.
-	 * 
-	 * @param status
-	 *            the status to set
-	 */
-	protected void updateStatus(IStatus status) {
-		fLastStatus = status;
-		if (fStatusLine != null && !fStatusLine.isDisposed()) {
-			updateButtonsEnableState(status);
-			fStatusLine.setErrorStatus(status);
-		}
-	}
-
-	/**
-	 * Returns the last status.
-	 * 
-	 * @return IStatus
-	 */
-	public IStatus getStatus() {
-		return fLastStatus;
-	}
-
-	/**
-	 * Updates the status of the ok button to reflect the given status.
-	 * Subclasses may override this method to update additional buttons.
-	 * 
-	 * @param status
-	 *            the status.
-	 */
-	protected void updateButtonsEnableState(IStatus status) {
-		if (fOkButton != null && !fOkButton.isDisposed()) {
-			fOkButton.setEnabled(!status.matches(IStatus.ERROR));
-		}
-	}
-
-	/*
-	 * @see Window#create(Shell)
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-		if (fTitle != null) {
-			shell.setText(fTitle);
-		}
-	}
-
-	/*
-	 * @see Window#create()
-	 */
-	public void create() {
-		super.create();
-		if (fLastStatus != null) {
-			// policy: dialogs are not allowed to come up with an error message
-			if (fLastStatus.matches(IStatus.ERROR)) {
-				// remove the message
-				fLastStatus = new Status(IStatus.ERROR,
-						fLastStatus.getPlugin(), fLastStatus.getCode(),
-						"", fLastStatus.getException()); //$NON-NLS-1$
-			}
-			updateStatus(fLastStatus);
-		}
-	}
-
-	/*
-	 * @see Dialog#createButtonsForButtonBar(Composite)
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		fOkButton = createButton(parent, IDialogConstants.OK_ID,
-				IDialogConstants.OK_LABEL, true);
-		createButton(parent, IDialogConstants.CANCEL_ID,
-				IDialogConstants.CANCEL_LABEL, false);
-	}
-
-	/*
-	 * @see Dialog#createButtonBar(Composite)
-	 */
-	protected Control createButtonBar(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NULL);
-		GridLayout layout = new GridLayout();
-
-		if (fStatusLineAboveButtons) {
-			layout.numColumns = 1;
-		} else {
-			layout.numColumns = 2;
-		}
-
-		layout.marginHeight = 0;
-		layout.marginLeft = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		layout.marginWidth = 0;
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-		if (!fStatusLineAboveButtons && isHelpAvailable()) {
-			createHelpControl(composite);
-		}
-		fStatusLine = new MessageLine(composite);
-		fStatusLine.setAlignment(SWT.LEFT);
-		GridData statusData = new GridData(GridData.FILL_HORIZONTAL);
-		fStatusLine.setErrorStatus(null);
-		if (fStatusLineAboveButtons && isHelpAvailable()) {
-			statusData.horizontalSpan = 2;
-			createHelpControl(composite);
-		}
-		fStatusLine.setLayoutData(statusData);
-		applyDialogFont(composite);
-
-		/*
-		 * Create the rest of the button bar, but tell it not to create a help
-		 * button (we've already created it).
-		 */
-		boolean helpAvailable = isHelpAvailable();
-		setHelpAvailable(false);
-		super.createButtonBar(composite);
-		setHelpAvailable(helpAvailable);
-		return composite;
-	}
-
-	/**
-	 * Sets the title for this dialog.
-	 * 
-	 * @param title
-	 *            the title.
-	 */
-	public void setTitle(String title) {
-		fTitle = title != null ? title : ""; //$NON-NLS-1$
-		Shell shell = getShell();
-		if ((shell != null) && !shell.isDisposed()) {
-			shell.setText(fTitle);
-		}
-	}
-
-	/**
-	 * Sets the image for this dialog.
-	 * 
-	 * @param image
-	 *            the image.
-	 */
-	public void setImage(Image image) {
-		fImage = image;
-		Shell shell = getShell();
-		if ((shell != null) && !shell.isDisposed()) {
-			shell.setImage(fImage);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java
deleted file mode 100644
index db95b91..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TitleAreaDialog.java
+++ /dev/null
@@ -1,627 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Konstantin Scheglov <scheglov_ke@nlmk.ru > - Fix for bug 41172
- *     [Dialogs] Bug with Image in TitleAreaDialog
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 82064
- *     [Dialogs] TitleAreaDialog#setTitleImage cannot be called before open()
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-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.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * A dialog that has a title area for displaying a title and an image as well as
- * a common area for displaying a description, a message, or an error message.
- * <p>
- * This dialog class may be subclassed.
- */
-public class TitleAreaDialog extends TrayDialog {
-	/**
-	 * Image registry key for error message image.
-	 */
-	public static final String DLG_IMG_TITLE_ERROR = DLG_IMG_MESSAGE_ERROR;
-
-	/**
-	 * Image registry key for banner image (value
-	 * <code>"dialog_title_banner_image"</code>).
-	 */
-	public static final String DLG_IMG_TITLE_BANNER = "dialog_title_banner_image";//$NON-NLS-1$
-
-	/**
-	 * Message type constant used to display an info icon with the message.
-	 * 
-	 * @since 2.0
-	 * @deprecated
-	 */
-	public final static String INFO_MESSAGE = "INFO_MESSAGE"; //$NON-NLS-1$
-
-	/**
-	 * Message type constant used to display a warning icon with the message.
-	 * 
-	 * @since 2.0
-	 * @deprecated
-	 */
-	public final static String WARNING_MESSAGE = "WARNING_MESSAGE"; //$NON-NLS-1$
-
-	// Space between an image and a label
-	private static final int H_GAP_IMAGE = 5;
-
-	// Minimum dialog width (in dialog units)
-	private static final int MIN_DIALOG_WIDTH = 350;
-
-	// Minimum dialog height (in dialog units)
-	private static final int MIN_DIALOG_HEIGHT = 150;
-
-	private Label titleLabel;
-
-	private Label titleImageLabel;
-
-	private Label bottomFillerLabel;
-
-	private Label leftFillerLabel;
-
-	private RGB titleAreaRGB;
-
-	Color titleAreaColor;
-
-	private String message = ""; //$NON-NLS-1$
-
-	private String errorMessage;
-
-	private Text messageLabel;
-
-	private Composite workArea;
-
-	private Label messageImageLabel;
-
-	private Image messageImage;
-
-	private boolean showingError = false;
-
-	private boolean titleImageLargest = true;
-
-	private int messageLabelHeight;
-
-	private Image titleAreaImage;
-
-	/**
-	 * Instantiate a new title area dialog.
-	 * 
-	 * @param parentShell
-	 *            the parent SWT shell
-	 */
-	public TitleAreaDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/*
-	 * @see Dialog.createContents(Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		// create the overall composite
-		Composite contents = new Composite(parent, SWT.NONE);
-		contents.setLayoutData(new GridData(GridData.FILL_BOTH));
-		// initialize the dialog units
-		initializeDialogUnits(contents);
-		FormLayout layout = new FormLayout();
-		contents.setLayout(layout);
-		// Now create a work area for the rest of the dialog
-		workArea = new Composite(contents, SWT.NONE);
-		GridLayout childLayout = new GridLayout();
-		childLayout.marginHeight = 0;
-		childLayout.marginWidth = 0;
-		childLayout.verticalSpacing = 0;
-		workArea.setLayout(childLayout);
-		Control top = createTitleArea(contents);
-		resetWorkAreaAttachments(top);
-		workArea.setFont(JFaceResources.getDialogFont());
-		// initialize the dialog units
-		initializeDialogUnits(workArea);
-		// create the dialog area and button bar
-		dialogArea = createDialogArea(workArea);
-		buttonBar = createButtonBar(workArea);
-		return contents;
-	}
-
-	/**
-	 * Creates and returns the contents of the upper part of this dialog (above
-	 * the button bar).
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method creates
-	 * and returns a new <code>Composite</code> with no margins and spacing.
-	 * Subclasses should override.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            The parent composite to contain the dialog area
-	 * @return the dialog area control
-	 */
-	protected Control createDialogArea(Composite parent) {
-		// create the top level composite for the dialog area
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		layout.verticalSpacing = 0;
-		layout.horizontalSpacing = 0;
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		composite.setFont(parent.getFont());
-		// Build the separator line
-		Label titleBarSeparator = new Label(composite, SWT.HORIZONTAL
-				| SWT.SEPARATOR);
-		titleBarSeparator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		return composite;
-	}
-
-	/**
-	 * Creates the dialog's title area.
-	 * 
-	 * @param parent
-	 *            the SWT parent for the title area widgets
-	 * @return Control with the highest x axis value.
-	 */
-	private Control createTitleArea(Composite parent) {
-
-		// add a dispose listener
-		parent.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				if (titleAreaColor != null) {
-					titleAreaColor.dispose();
-				}
-			}
-		});
-		// Determine the background color of the title bar
-		Display display = parent.getDisplay();
-		Color background;
-		Color foreground;
-		if (titleAreaRGB != null) {
-			titleAreaColor = new Color(display, titleAreaRGB);
-			background = titleAreaColor;
-			foreground = null;
-		} else {
-			background = JFaceColors.getBannerBackground(display);
-			foreground = JFaceColors.getBannerForeground(display);
-		}
-
-		parent.setBackground(background);
-		int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		// Dialog image @ right
-		titleImageLabel = new Label(parent, SWT.CENTER);
-		titleImageLabel.setBackground(background);
-		if (titleAreaImage == null)
-			titleImageLabel.setImage(JFaceResources
-					.getImage(DLG_IMG_TITLE_BANNER));
-		else
-			titleImageLabel.setImage(titleAreaImage);
-
-		FormData imageData = new FormData();
-		imageData.top = new FormAttachment(0, 0);
-		// Note: do not use horizontalSpacing on the right as that would be a
-		// regression from
-		// the R2.x style where there was no margin on the right and images are
-		// flush to the right
-		// hand side. see reopened comments in 41172
-		imageData.right = new FormAttachment(100, 0); // horizontalSpacing
-		titleImageLabel.setLayoutData(imageData);
-		// Title label @ top, left
-		titleLabel = new Label(parent, SWT.LEFT);
-		JFaceColors.setColors(titleLabel, foreground, background);
-		titleLabel.setFont(JFaceResources.getBannerFont());
-		titleLabel.setText(" ");//$NON-NLS-1$
-		FormData titleData = new FormData();
-		titleData.top = new FormAttachment(0, verticalSpacing);
-		titleData.right = new FormAttachment(titleImageLabel);
-		titleData.left = new FormAttachment(0, horizontalSpacing);
-		titleLabel.setLayoutData(titleData);
-		// Message image @ bottom, left
-		messageImageLabel = new Label(parent, SWT.CENTER);
-		messageImageLabel.setBackground(background);
-		// Message label @ bottom, center
-		messageLabel = new Text(parent, SWT.WRAP | SWT.READ_ONLY);
-		JFaceColors.setColors(messageLabel, foreground, background);
-		messageLabel.setText(" \n "); // two lines//$NON-NLS-1$
-		messageLabel.setFont(JFaceResources.getDialogFont());
-		messageLabelHeight = messageLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
-		// Filler labels
-		leftFillerLabel = new Label(parent, SWT.CENTER);
-		leftFillerLabel.setBackground(background);
-		bottomFillerLabel = new Label(parent, SWT.CENTER);
-		bottomFillerLabel.setBackground(background);
-		setLayoutsForNormalMessage(verticalSpacing, horizontalSpacing);
-		determineTitleImageLargest();
-		if (titleImageLargest)
-			return titleImageLabel;
-		return messageLabel;
-	}
-
-	/**
-	 * Determine if the title image is larger than the title message and message
-	 * area. This is used for layout decisions.
-	 */
-	private void determineTitleImageLargest() {
-		int titleY = titleImageLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
-		int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		int labelY = titleLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
-		labelY += verticalSpacing;
-		labelY += messageLabelHeight;
-		labelY += verticalSpacing;
-		titleImageLargest = titleY > labelY;
-	}
-
-	/**
-	 * Set the layout values for the messageLabel, messageImageLabel and
-	 * fillerLabel for the case where there is a normal message.
-	 * 
-	 * @param verticalSpacing
-	 *            int The spacing between widgets on the vertical axis.
-	 * @param horizontalSpacing
-	 *            int The spacing between widgets on the horizontal axis.
-	 */
-	private void setLayoutsForNormalMessage(int verticalSpacing,
-			int horizontalSpacing) {
-		FormData messageImageData = new FormData();
-		messageImageData.top = new FormAttachment(titleLabel, verticalSpacing);
-		messageImageData.left = new FormAttachment(0, H_GAP_IMAGE);
-		messageImageLabel.setLayoutData(messageImageData);
-		FormData messageLabelData = new FormData();
-		messageLabelData.top = new FormAttachment(titleLabel, verticalSpacing);
-		messageLabelData.right = new FormAttachment(titleImageLabel);
-		messageLabelData.left = new FormAttachment(messageImageLabel,
-				horizontalSpacing);
-		messageLabelData.height = messageLabelHeight;
-		if (titleImageLargest)
-			messageLabelData.bottom = new FormAttachment(titleImageLabel, 0,
-					SWT.BOTTOM);
-		messageLabel.setLayoutData(messageLabelData);
-		FormData fillerData = new FormData();
-		fillerData.left = new FormAttachment(0, horizontalSpacing);
-		fillerData.top = new FormAttachment(messageImageLabel, 0);
-		fillerData.bottom = new FormAttachment(messageLabel, 0, SWT.BOTTOM);
-		bottomFillerLabel.setLayoutData(fillerData);
-		FormData data = new FormData();
-		data.top = new FormAttachment(messageImageLabel, 0, SWT.TOP);
-		data.left = new FormAttachment(0, 0);
-		data.bottom = new FormAttachment(messageImageLabel, 0, SWT.BOTTOM);
-		data.right = new FormAttachment(messageImageLabel, 0);
-		leftFillerLabel.setLayoutData(data);
-	}
-
-	/**
-	 * The <code>TitleAreaDialog</code> implementation of this
-	 * <code>Window</code> methods returns an initial size which is at least
-	 * some reasonable minimum.
-	 * 
-	 * @return the initial size of the dialog
-	 */
-	protected Point getInitialSize() {
-		Point shellSize = super.getInitialSize();
-		return new Point(Math.max(
-				convertHorizontalDLUsToPixels(MIN_DIALOG_WIDTH), shellSize.x),
-				Math.max(convertVerticalDLUsToPixels(MIN_DIALOG_HEIGHT),
-						shellSize.y));
-	}
-
-	/**
-	 * Retained for backward compatibility.
-	 * 
-	 * Returns the title area composite. There is no composite in this
-	 * implementation so the shell is returned.
-	 * 
-	 * @return Composite
-	 * @deprecated
-	 */
-	protected Composite getTitleArea() {
-		return getShell();
-	}
-
-	/**
-	 * Returns the title image label.
-	 * 
-	 * @return the title image label
-	 */
-	protected Label getTitleImageLabel() {
-		return titleImageLabel;
-	}
-
-	/**
-	 * Display the given error message. The currently displayed message is saved
-	 * and will be redisplayed when the error message is set to
-	 * <code>null</code>.
-	 * 
-	 * @param newErrorMessage
-	 *            the newErrorMessage to display or <code>null</code>
-	 */
-	public void setErrorMessage(String newErrorMessage) {
-		// Any change?
-		if (errorMessage == null ? newErrorMessage == null : errorMessage
-				.equals(newErrorMessage))
-			return;
-		errorMessage = newErrorMessage;
-
-		// Clear or set error message.
-		if (errorMessage == null) {
-			if (showingError) {
-				// we were previously showing an error
-				showingError = false;
-			}
-			// show the message
-			// avoid calling setMessage in case it is overridden to call
-			// setErrorMessage,
-			// which would result in a recursive infinite loop
-			if (message == null) // this should probably never happen since
-				// setMessage does this conversion....
-				message = ""; //$NON-NLS-1$
-			updateMessage(message);
-			messageImageLabel.setImage(messageImage);
-			setImageLabelVisible(messageImage != null);
-		} else {
-			// Add in a space for layout purposes but do not
-			// change the instance variable
-			String displayedErrorMessage = " " + errorMessage; //$NON-NLS-1$
-			updateMessage(displayedErrorMessage);
-			if (!showingError) {
-				// we were not previously showing an error
-				showingError = true;
-				messageImageLabel.setImage(JFaceResources
-						.getImage(DLG_IMG_TITLE_ERROR));
-				setImageLabelVisible(true);
-			}
-		}
-		layoutForNewMessage();
-	}
-
-	/**
-	 * Re-layout the labels for the new message.
-	 */
-	private void layoutForNewMessage() {
-		int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		// If there are no images then layout as normal
-		if (errorMessage == null && messageImage == null) {
-			setImageLabelVisible(false);
-			setLayoutsForNormalMessage(verticalSpacing, horizontalSpacing);
-		} else {
-			messageImageLabel.setVisible(true);
-			bottomFillerLabel.setVisible(true);
-			leftFillerLabel.setVisible(true);
-			/**
-			 * Note that we do not use horizontalSpacing here as when the
-			 * background of the messages changes there will be gaps between the
-			 * icon label and the message that are the background color of the
-			 * shell. We add a leading space elsewhere to compendate for this.
-			 */
-			FormData data = new FormData();
-			data.left = new FormAttachment(0, H_GAP_IMAGE);
-			data.top = new FormAttachment(titleLabel, verticalSpacing);
-			messageImageLabel.setLayoutData(data);
-			data = new FormData();
-			data.top = new FormAttachment(messageImageLabel, 0);
-			data.left = new FormAttachment(0, 0);
-			data.bottom = new FormAttachment(messageLabel, 0, SWT.BOTTOM);
-			data.right = new FormAttachment(messageImageLabel, 0, SWT.RIGHT);
-			bottomFillerLabel.setLayoutData(data);
-			data = new FormData();
-			data.top = new FormAttachment(messageImageLabel, 0, SWT.TOP);
-			data.left = new FormAttachment(0, 0);
-			data.bottom = new FormAttachment(messageImageLabel, 0, SWT.BOTTOM);
-			data.right = new FormAttachment(messageImageLabel, 0);
-			leftFillerLabel.setLayoutData(data);
-			FormData messageLabelData = new FormData();
-			messageLabelData.top = new FormAttachment(titleLabel,
-					verticalSpacing);
-			messageLabelData.right = new FormAttachment(titleImageLabel);
-			messageLabelData.left = new FormAttachment(messageImageLabel, 0);
-			messageLabelData.height = messageLabelHeight;
-			if (titleImageLargest)
-				messageLabelData.bottom = new FormAttachment(titleImageLabel,
-						0, SWT.BOTTOM);
-			messageLabel.setLayoutData(messageLabelData);
-		}
-		// Do not layout before the dialog area has been created
-		// to avoid incomplete calculations.
-		if (dialogArea != null)
-			workArea.getParent().layout(true);
-	}
-
-	/**
-	 * Set the message text. If the message line currently displays an error,
-	 * the message is saved and will be redisplayed when the error message is
-	 * set to <code>null</code>.
-	 * <p>
-	 * Shortcut for <code>setMessage(newMessage, IMessageProvider.NONE)</code>
-	 * </p>
-	 * This method should be called after the dialog has been opened as it
-	 * updates the message label immediately.
-	 * 
-	 * @param newMessage
-	 *            the message, or <code>null</code> to clear the message
-	 */
-	public void setMessage(String newMessage) {
-		setMessage(newMessage, IMessageProvider.NONE);
-	}
-
-	/**
-	 * Sets the message for this dialog with an indication of what type of
-	 * message it is.
-	 * <p>
-	 * The valid message types are one of <code>NONE</code>,
-	 * <code>INFORMATION</code>,<code>WARNING</code>, or
-	 * <code>ERROR</code>.
-	 * </p>
-	 * <p>
-	 * Note that for backward compatibility, a message of type
-	 * <code>ERROR</code> is different than an error message (set using
-	 * <code>setErrorMessage</code>). An error message overrides the current
-	 * message until the error message is cleared. This method replaces the
-	 * current message and does not affect the error message.
-	 * </p>
-	 * 
-	 * @param newMessage
-	 *            the message, or <code>null</code> to clear the message
-	 * @param newType
-	 *            the message type
-	 * @since 2.0
-	 */
-	public void setMessage(String newMessage, int newType) {
-		Image newImage = null;
-		if (newMessage != null) {
-			switch (newType) {
-			case IMessageProvider.NONE:
-				break;
-			case IMessageProvider.INFORMATION:
-				newImage = JFaceResources.getImage(DLG_IMG_MESSAGE_INFO);
-				break;
-			case IMessageProvider.WARNING:
-				newImage = JFaceResources.getImage(DLG_IMG_MESSAGE_WARNING);
-				break;
-			case IMessageProvider.ERROR:
-				newImage = JFaceResources.getImage(DLG_IMG_MESSAGE_ERROR);
-				break;
-			}
-		}
-		showMessage(newMessage, newImage);
-	}
-
-	/**
-	 * Show the new message and image.
-	 * 
-	 * @param newMessage
-	 * @param newImage
-	 */
-	private void showMessage(String newMessage, Image newImage) {
-		// Any change?
-		if (message.equals(newMessage) && messageImage == newImage) {
-			return;
-		}
-		message = newMessage;
-		if (message == null)
-			message = "";//$NON-NLS-1$
-		// Message string to be shown - if there is an image then add in
-		// a space to the message for layout purposes
-		String shownMessage = (newImage == null) ? message : " " + message; //$NON-NLS-1$  
-		messageImage = newImage;
-		if (!showingError) {
-			// we are not showing an error
-			updateMessage(shownMessage);
-			messageImageLabel.setImage(messageImage);
-			setImageLabelVisible(messageImage != null);
-			layoutForNewMessage();
-		}
-	}
-
-	/**
-	 * Update the contents of the messageLabel.
-	 * 
-	 * @param newMessage
-	 *            the message to use
-	 */
-	private void updateMessage(String newMessage) {
-		messageLabel.setText(newMessage);
-	}
-
-	/**
-	 * Sets the title to be shown in the title area of this dialog.
-	 * 
-	 * @param newTitle
-	 *            the title show
-	 */
-	public void setTitle(String newTitle) {
-		if (titleLabel == null)
-			return;
-		String title = newTitle;
-		if (title == null)
-			title = "";//$NON-NLS-1$
-		titleLabel.setText(title);
-	}
-
-	/**
-	 * Sets the title bar color for this dialog.
-	 * 
-	 * @param color
-	 *            the title bar color
-	 */
-	public void setTitleAreaColor(RGB color) {
-		titleAreaRGB = color;
-	}
-
-	/**
-	 * Sets the title image to be shown in the title area of this dialog.
-	 * 
-	 * @param newTitleImage
-	 *            the title image to be shown
-	 */
-	public void setTitleImage(Image newTitleImage) {
-
-		titleAreaImage = newTitleImage;
-		if (titleImageLabel != null) {
-			titleImageLabel.setImage(newTitleImage);
-			titleImageLabel.setVisible(newTitleImage != null);
-			if (newTitleImage != null) {
-				determineTitleImageLargest();
-				Control top;
-				if (titleImageLargest)
-					top = titleImageLabel;
-				else
-					top = messageLabel;
-				resetWorkAreaAttachments(top);
-			}
-		}
-	}
-
-	/**
-	 * Make the label used for displaying error images visible depending on
-	 * boolean.
-	 * 
-	 * @param visible
-	 *            If <code>true</code> make the image visible, if not then
-	 *            make it not visible.
-	 */
-	private void setImageLabelVisible(boolean visible) {
-		messageImageLabel.setVisible(visible);
-		bottomFillerLabel.setVisible(visible);
-		leftFillerLabel.setVisible(visible);
-	}
-
-	/**
-	 * Reset the attachment of the workArea to now attach to top as the top
-	 * control.
-	 * 
-	 * @param top
-	 */
-	private void resetWorkAreaAttachments(Control top) {
-		FormData childData = new FormData();
-		childData.top = new FormAttachment(top);
-		childData.right = new FormAttachment(100, 0);
-		childData.left = new FormAttachment(0, 0);
-		childData.bottom = new FormAttachment(100, 0);
-		workArea.setLayoutData(childData);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TrayDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TrayDialog.java
deleted file mode 100644
index 334f253..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/TrayDialog.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.dialogs;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-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.Layout;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * A <code>TrayDialog</code> is a specialized <code>Dialog</code> that can contain
- * a tray on its side. The tray's content is provided as a <code>DialogTray</code>.
- * <p>
- * It is recommended to subclass this class instead of <code>Dialog</code> in all
- * cases except where the dialog should never show a tray. For example, dialogs
- * which are very short, simple, and quick to dismiss (e.g. a message dialog with
- * an OK button) should subclass <code>Dialog</code>.
- * </p>
- * <p>
- * Note: Trays are not supported on dialogs that use a custom layout on the <code>
- * Shell</code> by overriding <code>Window#getLayout()</code>.
- * </p>
- * 
- * @see org.eclipse.jface.dialogs.DialogTray
- * @see org.eclipse.jface.window.Window#getLayout()
- * @since 3.2
- */
-public abstract class TrayDialog extends Dialog {
-
-	private static boolean dialogHelpAvailable;
-
-	/*
-	 * The dialog's tray (null if none).
-	 */
-	private DialogTray tray;
-
-	/*
-	 * The tray's control.
-	 */
-	private Control trayControl;
-	
-	/*
-	 * The separator to the left of the sash.
-	 */
-	private Label leftSeparator;
-	
-	/*
-	 * The separator to the right of the sash.
-	 */
-	private Label rightSeparator;
-	
-	/*
-	 * The sash that allows the user to resize the tray.
-	 */
-	private Sash sash;
-	
-	/*
-	 * Whether or not help is available for this dialog.
-	 */
-	private boolean helpAvailable = isDialogHelpAvailable();
-
-	/**
-	 * Creates a tray dialog instance. Note that the window will have no visual
-	 * representation (no widgets) until it is told to open.
-	 * 
-	 * @param shell the parent shell, or <code>null</code> to create a top-level shell
-	 */
-	protected TrayDialog(Shell shell) {
-		super(shell);
-	}
-	
-	/**
-	 * Creates a tray dialog with the given parent.
-	 * 
-	 * @param parentShell the object that returns the current parent shell
-	 */
-	protected TrayDialog(IShellProvider parentShell) {
-		super(parentShell);
-	}
-
-	/**
-	 * Closes this dialog's tray, disposing its widgets.
-	 * 
-	 * @throws IllegalStateException if the tray was not open
-	 */
-	public void closeTray() throws IllegalStateException {
-		if (getTray() == null) {
-			throw new IllegalStateException("Tray was not open"); //$NON-NLS-1$
-		}
-		int trayWidth = trayControl.getSize().x + leftSeparator.getSize().x + sash.getSize().x + rightSeparator.getSize().x;
-		trayControl.dispose();
-		trayControl = null;
-		tray = null;
-		leftSeparator.dispose();
-		leftSeparator = null;
-		rightSeparator.dispose();
-		rightSeparator = null;
-		sash.dispose();
-		sash = null;
-		Shell shell = getShell();
-		Rectangle bounds = shell.getBounds();
-		shell.setBounds(bounds.x + ((getDefaultOrientation() == SWT.RIGHT_TO_LEFT) ? trayWidth : 0), bounds.y, bounds.width - trayWidth, bounds.height);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#close()
-	 */
-	public boolean close() {
-		/*
-		 * Close the tray to ensure that those dialogs that remember their
-		 * size do not store the tray size.
-		 */
-		if (getTray() != null) {
-			closeTray();
-		}
-		return super.close();
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-	protected Control createButtonBar(Composite parent) {
-    	Composite composite = new Composite(parent, SWT.NONE);
-    	GridLayout layout = new GridLayout();
-    	layout.marginWidth = 0;
-    	layout.marginHeight = 0;
-    	layout.horizontalSpacing = 0;
-    	composite.setLayout(layout);
-    	composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
-    	composite.setFont(parent.getFont());
-
-		// create help control if needed
-        if (isHelpAvailable()) {
-        	Control helpControl = createHelpControl(composite);
-        	((GridData) helpControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		}
-        Control buttonSection = super.createButtonBar(composite);
-        ((GridData) buttonSection.getLayoutData()).grabExcessHorizontalSpace = true;
-        return composite;
-	}
-
-	/**
-	 * Creates a new help control that provides access to context help.
-	 * <p>
-	 * The <code>TrayDialog</code> implementation of this method creates
-	 * the control, registers it for selection events including selection,
-	 * Note that the parent's layout is assumed to be a <code>GridLayout</code>
-	 * and the number of columns in this layout is incremented. Subclasses may
-	 * override.
-	 * </p>
-	 * 
-	 * @param parent the parent composite
-	 * @return the help control
-	 */
-    protected Control createHelpControl(Composite parent) {
-		Image helpImage = JFaceResources.getImage(DLG_IMG_HELP);
-		if (helpImage != null) {
-			return createHelpImageButton(parent, helpImage);
-		}
-		return createHelpLink(parent);
-    }
-    
-    /*
-     * Creates a button with a help image. This is only used if there
-     * is an image available.
-     */
-	private ToolBar createHelpImageButton(Composite parent, Image image) {
-        ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.NO_FOCUS);
-        ((GridLayout) parent.getLayout()).numColumns++;
-		toolBar.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
-		final Cursor cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-		toolBar.setCursor(cursor);
-		toolBar.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				cursor.dispose();
-			}
-		});		
-        ToolItem item = new ToolItem(toolBar, SWT.NONE);
-		item.setImage(image);
-		item.setToolTipText(JFaceResources.getString("helpToolTip")); //$NON-NLS-1$
-		item.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-				helpPressed();
-            }
-        });
-		return toolBar;
-	}
-
-	/*
-	 * Creates a help link. This is used when there is no help image
-	 * available.
-	 */
-	private Link createHelpLink(Composite parent) {
-		Link link = new Link(parent, SWT.WRAP | SWT.NO_FOCUS);
-        ((GridLayout) parent.getLayout()).numColumns++;
-		link.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
-		link.setText("<a>"+IDialogConstants.HELP_LABEL+"</a>"); //$NON-NLS-1$ //$NON-NLS-2$
-		link.setToolTipText(IDialogConstants.HELP_LABEL);
-		link.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-				helpPressed();
-            }
-        });
-		return link;
-	}	
-	
-	/*
-	 * Returns whether or not the given layout can support the addition of a tray.
-	 */
-	private boolean isCompatibleLayout(Layout layout) {
-		if (layout != null && layout instanceof GridLayout) {
-			GridLayout grid = (GridLayout)layout;
-			return !grid.makeColumnsEqualWidth && (grid.horizontalSpacing == 0) &&
-					(grid.marginWidth == 0) && (grid.marginHeight == 0) &&
-					(grid.numColumns == 5);
-		}
-		return false;
-	}
-
-	/**
-	 * Returns whether or not context help is available for this dialog. This
-	 * can affect whether or not the dialog will display additional help
-	 * mechanisms such as a help control in the button bar.
-	 * 
-	 * @return whether or not context help is available for this dialog
-	 */
-	public boolean isHelpAvailable() {
-		return helpAvailable;
-	}
-	
-	/**
-	 * The tray dialog's default layout is a modified version of the default
-	 * <code>Window</code> layout that can accomodate a tray, however it still
-	 * conforms to the description of the <code>Window</code> default layout.
-	 * <p>
-	 * Note: Trays may not be supported with all custom layouts on the dialog's
-	 * Shell. To avoid problems, use a single outer <code>Composite</code> for
-	 * your dialog area, and set your custom layout on that <code>Composite</code>.
-	 * </p>
-	 * 
-	 * @see org.eclipse.jface.window.Window#getLayout()
-	 * @return a newly created layout or <code>null</code> for no layout
-	 */
-	protected Layout getLayout() {
-		GridLayout layout = (GridLayout)super.getLayout();
-		layout.numColumns = 5;
-		layout.horizontalSpacing = 0;
-		return layout;
-	}
-	
-	/**
-	 * Returns the tray currently shown in the dialog, or <code>null</code>
-	 * if there is no tray.
-	 * 
-	 * @return the dialog's current tray, or <code>null</code> if there is none
-	 */
-	public DialogTray getTray() {
-		return tray;
-	}
-	
-	/*
-	 * Called when the help control is invoked. This emulates the keyboard
-	 * context help behavior (e.g. F1 on Windows). It traverses the widget
-	 * tree upward until it finds a widget that has a help listener on it,
-	 * then invokes a help event on that widget.
-	 */
-	private void helpPressed() {
-    	if (getShell() != null) {
-	    	Control c = getShell().getDisplay().getFocusControl();
-	    	while (c != null) {
-	    		if (c.isListening(SWT.Help)) {
-	    			c.notifyListeners(SWT.Help, new Event());
-	    			break;
-	    		}
-	    		c = c.getParent();
-	    	}
-    	}
-	}
-	
-	/**
-	 * Constructs the tray's widgets and displays the tray in this dialog. The
-	 * dialog's size will be adjusted to accomodate the tray.
-	 * 
-	 * @param tray the tray to show in this dialog
-	 * @throws IllegalStateException if the dialog already has a tray open
-	 * @throws UnsupportedOperationException if the dialog does not support trays,
-	 *            for example if it uses a custom layout.
-	 */
-	public void openTray(DialogTray tray) throws IllegalStateException, UnsupportedOperationException {
-		if (tray == null) {
-			throw new NullPointerException("Tray was null"); //$NON-NLS-1$
-		}
-		if (getTray() != null) {
-			throw new IllegalStateException("Tray was already open"); //$NON-NLS-1$
-		}
-		if (!isCompatibleLayout(getShell().getLayout())) {
-			throw new UnsupportedOperationException("Trays not supported with custom layouts"); //$NON-NLS-1$
-		}
-		final Shell shell = getShell();
-		leftSeparator = new Label(shell, SWT.SEPARATOR | SWT.VERTICAL);
-		leftSeparator.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-		sash = new Sash(shell, SWT.VERTICAL);
-		sash.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-		rightSeparator = new Label(shell, SWT.SEPARATOR | SWT.VERTICAL);
-		rightSeparator.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-		trayControl = tray.createContents(shell);
-		Rectangle clientArea = shell.getClientArea();
-		final GridData data = new GridData(GridData.FILL_VERTICAL);
-		data.widthHint = trayControl.computeSize(SWT.DEFAULT, clientArea.height).x;
-		trayControl.setLayoutData(data);
-		int trayWidth = leftSeparator.computeSize(SWT.DEFAULT, clientArea.height).x + sash.computeSize(SWT.DEFAULT, clientArea.height).x + rightSeparator.computeSize(SWT.DEFAULT, clientArea.height).x + data.widthHint;
-		Rectangle bounds = shell.getBounds();
-		shell.setBounds(bounds.x - ((getDefaultOrientation() == SWT.RIGHT_TO_LEFT) ? trayWidth : 0), bounds.y, bounds.width + trayWidth, bounds.height);
-		sash.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				if (event.detail != SWT.DRAG) {
-					Rectangle clientArea = shell.getClientArea();
-					int newWidth = clientArea.width - event.x - (sash.getSize().x + rightSeparator.getSize().x);
-					if (newWidth != data.widthHint) {
-						data.widthHint = newWidth;
-						shell.layout();
-					}
-				}
-			}
-		});
-		this.tray = tray;
-	}
-	
-	/**
-	 * Sets whether or not context help is available for this dialog. This
-	 * can affect whether or not the dialog will display additional help
-	 * mechanisms such as a help control in the button bar.
-	 * 
-	 * @param helpAvailable whether or not context help is available for the dialog
-	 */
-	public void setHelpAvailable(boolean helpAvailable) {
-		this.helpAvailable = helpAvailable;
-	}
-	
-	/**
-	 * Tests if dialogs that have help control should show it
-	 * all the time or only when explicitly requested for
-	 * each dialog instance.
-	 * 
-	 * @return <code>true</code> if dialogs that support help
-	 * control should show it by default, <code>false</code> otherwise.
-	 * @since 3.2
-	 */
-	public static boolean isDialogHelpAvailable() {
-		return dialogHelpAvailable;
-	}
-	
-	/**
-	 * Sets whether JFace dialogs that support help control should
-	 * show the control by default. If set to <code>false</code>, 
-	 * help control can still be shown on a per-dialog basis.
-	 * 
-	 * @param helpAvailable <code>true</code> to show the help
-	 * control, <code>false</code> otherwise.
-	 * @since 3.2
-	 */
-	public static void setDialogHelpAvailable(boolean helpAvailable) {
-		dialogHelpAvailable = helpAvailable;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/help.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/help.gif
deleted file mode 100644
index 86550fe..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/help.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_error.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_error.gif
deleted file mode 100644
index 2ff6678..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_error.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_info.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_info.gif
deleted file mode 100644
index b484d9b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_info.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_warning.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_warning.gif
deleted file mode 100644
index 8e054d0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/message_warning.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu.gif
deleted file mode 100644
index bd37eb5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu_disabled.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu_disabled.gif
deleted file mode 100644
index 5d13485..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/popup_menu_disabled.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/title_banner.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/title_banner.gif
deleted file mode 100644
index 4ed90dc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/images/title_banner.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/package.html
deleted file mode 100644
index e376429..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/package.html
+++ /dev/null
@@ -1,28 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides support for dialogs.
-<h2>
-Package Specification</h2>
-A dialog is a specialized window, typically consisting of a dialog area
-and a button bar, designed for narrow-focussed communication with the user.
-<p>The dialog framework consists of an abstract base class (<tt>Dialog</tt>),
-along with more concrete dialog subclasses for displaying messages (<tt>MessageDialog</tt>),
-soliciting text input (<tt>InputDialog</tt>), and displaying progress during
-a long-running operation (<tt>ProgressMonitorDialog</tt>).
-<p>Dialog stores (<tt>IDialogStore</tt>, <tt>DialogStore</tt>) provide
-a general framework for organizing a dialog's settings into key/value pairs.
-Multi-page dialogs are made easier through the use of dialog pages (<tt>IDialogPage</tt>,
-<tt>DialogPage</tt>).
-<p>Note: None of the classes in this package maintain global state.
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/AutoCompleteField.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/AutoCompleteField.java
deleted file mode 100644
index 8d22823..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/AutoCompleteField.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.widgets.Control;
-
-/**
- * AutoCompleteField is a class which attempts to auto-complete a user's
- * keystrokes by activating a popup that filters a list of proposals according
- * to the content typed by the user.
- * 
- * @see ContentProposalAdapter
- * @see SimpleContentProposalProvider
- * 
- * @since 3.3
- */
-public class AutoCompleteField {
-
-	private SimpleContentProposalProvider proposalProvider;
-	private ContentProposalAdapter adapter;
-
-	/**
-	 * Construct an AutoComplete field on the specified control, whose
-	 * completions are characterized by the specified array of Strings.
-	 * 
-	 * @param control
-	 *            the control for which autocomplete is desired. May not be
-	 *            <code>null</code>.
-	 * @param controlContentAdapter
-	 *            the <code>IControlContentAdapter</code> used to obtain and
-	 *            update the control's contents. May not be <code>null</code>.
-	 * @param proposals
-	 *            the array of Strings representing valid content proposals for
-	 *            the field.
-	 */
-	public AutoCompleteField(Control control,
-			IControlContentAdapter controlContentAdapter, String[] proposals) {
-		proposalProvider = new SimpleContentProposalProvider(proposals);
-		proposalProvider.setFiltering(true);
-		adapter = new ContentProposalAdapter(control, controlContentAdapter,
-				proposalProvider, null, null);
-		adapter.setPropagateKeys(true);
-		adapter
-				.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
-	}
-
-	/**
-	 * Set the Strings to be used as content proposals.
-	 * 
-	 * @param proposals
-	 *            the array of Strings to be used as proposals.
-	 */
-	public void setProposals(String[] proposals) {
-		proposalProvider.setProposals(proposals);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ComboContentAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ComboContentAdapter.java
deleted file mode 100644
index d54aa6e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ComboContentAdapter.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * An {@link IControlContentAdapter} for SWT Combo controls. This is a
- * convenience class for easily creating a {@link ContentProposalAdapter} for
- * combo fields.
- * 
- * @since 3.2
- */
-public class ComboContentAdapter implements IControlContentAdapter,
-		IControlContentAdapter2 {
-	
-	/*
-	 * Set to <code>true</code> if we should compute the text
-	 * vertical bounds rather than just use the field size.
-	 * Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=164748
-	 * The corresponding SWT bug is
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=44072
-	 */
-	private static final boolean COMPUTE_TEXT_USING_CLIENTAREA = !"carbon".equals(SWT.getPlatform()); //$NON-NLS-1$
-
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.taskassistance.IControlContentAdapter#getControlContents(org.eclipse.swt.widgets.Control)
-	 */
-	public String getControlContents(Control control) {
-		return ((Combo) control).getText();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#setControlContents(org.eclipse.swt.widgets.Control,
-	 *      java.lang.String, int)
-	 */
-	public void setControlContents(Control control, String text,
-			int cursorPosition) {
-		((Combo) control).setText(text);
-		((Combo) control)
-				.setSelection(new Point(cursorPosition, cursorPosition));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#insertControlContents(org.eclipse.swt.widgets.Control,
-	 *      java.lang.String, int)
-	 */
-	public void insertControlContents(Control control, String text,
-			int cursorPosition) {
-		Combo combo = (Combo) control;
-		String contents = combo.getText();
-		Point selection = combo.getSelection();
-		StringBuffer sb = new StringBuffer();
-		sb.append(contents.substring(0, selection.x));
-		sb.append(text);
-		if (selection.y < contents.length()) {
-			sb.append(contents.substring(selection.y, contents.length()));
-		}
-		combo.setText(sb.toString());
-		selection.x = selection.x + cursorPosition;
-		selection.y = selection.x;
-		combo.setSelection(selection);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#getCursorPosition(org.eclipse.swt.widgets.Control)
-	 */
-	public int getCursorPosition(Control control) {
-		return ((Combo) control).getSelection().x;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#getInsertionBounds(org.eclipse.swt.widgets.Control)
-	 */
-	public Rectangle getInsertionBounds(Control control) {
-		// This doesn't take horizontal scrolling into affect. 
-		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=204599
-		Combo combo = (Combo) control;
-		int position = combo.getSelection().y;
-		String contents = combo.getText();
-		GC gc = new GC(combo);
-		gc.setFont(combo.getFont());
-		Point extent = gc.textExtent(contents.substring(0, Math.min(position,
-				contents.length())));
-		gc.dispose();
-		if (COMPUTE_TEXT_USING_CLIENTAREA) {
-			return new Rectangle(combo.getClientArea().x + extent.x, combo
-				.getClientArea().y, 1, combo.getClientArea().height);
-		}
-		return new Rectangle(extent.x, 0, 1, combo.getSize().y);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#setCursorPosition(org.eclipse.swt.widgets.Control,
-	 *      int)
-	 */
-	public void setCursorPosition(Control control, int index) {
-		((Combo) control).setSelection(new Point(index, index));
-	}
-
-	/**
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter2#getSelection(org.eclipse.swt.widgets.Control)
-	 * 
-	 * @since 3.4
-	 */
-	public Point getSelection(Control control) {
-		return ((Combo) control).getSelection();
-	}
-
-	/**
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter2#setSelection(org.eclipse.swt.widgets.Control,
-	 *      org.eclipse.swt.graphics.Point)
-	 * 
-	 * @since 3.4
-	 */
-	public void setSelection(Control control, Point range) {
-		((Combo) control).setSelection(range);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
deleted file mode 100644
index 859ea14..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
+++ /dev/null
@@ -1,2093 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.preference.JFacePreferences;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-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.ScrollBar;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * ContentProposalAdapter can be used to attach content proposal behavior to a
- * control. This behavior includes obtaining proposals, opening a popup dialog,
- * managing the content of the control relative to the selections in the popup,
- * and optionally opening up a secondary popup to further describe proposals.
- * <p>
- * A number of configurable options are provided to determine how the control
- * content is altered when a proposal is chosen, how the content proposal popup
- * is activated, and whether any filtering should be done on the proposals as
- * the user types characters.
- * <p>
- * This class is not intended to be subclassed.
- * 
- * @since 3.2
- */
-public class ContentProposalAdapter {
-
-	/*
-	 * The lightweight popup used to show content proposals for a text field. If
-	 * additional information exists for a proposal, then selecting that
-	 * proposal will result in the information being displayed in a secondary
-	 * popup.
-	 */
-	class ContentProposalPopup extends PopupDialog {
-		/*
-		 * The listener we install on the popup and related controls to
-		 * determine when to close the popup. Some events (move, resize, close,
-		 * deactivate) trigger closure as soon as they are received, simply
-		 * because one of the registered listeners received them. Other events
-		 * depend on additional circumstances.
-		 */
-		private final class PopupCloserListener implements Listener {
-			private boolean scrollbarClicked = false;
-
-			public void handleEvent(final Event e) {
-
-				// If focus is leaving an important widget or the field's
-				// shell is deactivating
-				if (e.type == SWT.FocusOut) {
-					scrollbarClicked = false;
-					/*
-					 * Ignore this event if it's only happening because focus is
-					 * moving between the popup shells, their controls, or a
-					 * scrollbar. Do this in an async since the focus is not
-					 * actually switched when this event is received.
-					 */
-					e.display.asyncExec(new Runnable() {
-						public void run() {
-							if (isValid()) {
-								if (scrollbarClicked || hasFocus()) {
-									return;
-								}
-								// Workaround a problem on X and Mac, whereby at
-								// this point, the focus control is not known.
-								// This can happen, for example, when resizing
-								// the popup shell on the Mac.
-								// Check the active shell.
-								Shell activeShell = e.display.getActiveShell();
-								if (activeShell == getShell()
-										|| (infoPopup != null && infoPopup
-												.getShell() == activeShell)) {
-									return;
-								}
-								/*
-								 * System.out.println(e);
-								 * System.out.println(e.display.getFocusControl());
-								 * System.out.println(e.display.getActiveShell());
-								 */
-								close();
-							}
-						}
-					});
-					return;
-				}
-
-				// Scroll bar has been clicked. Remember this for focus event
-				// processing.
-				if (e.type == SWT.Selection) {
-					scrollbarClicked = true;
-					return;
-				}
-				// For all other events, merely getting them dictates closure.
-				close();
-			}
-
-			// Install the listeners for events that need to be monitored for
-			// popup closure.
-			void installListeners() {
-				// Listeners on this popup's table and scroll bar
-				proposalTable.addListener(SWT.FocusOut, this);
-				ScrollBar scrollbar = proposalTable.getVerticalBar();
-				if (scrollbar != null) {
-					scrollbar.addListener(SWT.Selection, this);
-				}
-
-				// Listeners on this popup's shell
-				getShell().addListener(SWT.Deactivate, this);
-				getShell().addListener(SWT.Close, this);
-
-				// Listeners on the target control
-				control.addListener(SWT.MouseDoubleClick, this);
-				control.addListener(SWT.MouseDown, this);
-				control.addListener(SWT.Dispose, this);
-				control.addListener(SWT.FocusOut, this);
-				// Listeners on the target control's shell
-				Shell controlShell = control.getShell();
-				controlShell.addListener(SWT.Move, this);
-				controlShell.addListener(SWT.Resize, this);
-
-			}
-
-			// Remove installed listeners
-			void removeListeners() {
-				if (isValid()) {
-					proposalTable.removeListener(SWT.FocusOut, this);
-					ScrollBar scrollbar = proposalTable.getVerticalBar();
-					if (scrollbar != null) {
-						scrollbar.removeListener(SWT.Selection, this);
-					}
-
-					getShell().removeListener(SWT.Deactivate, this);
-					getShell().removeListener(SWT.Close, this);
-				}
-
-				if (control != null && !control.isDisposed()) {
-
-					control.removeListener(SWT.MouseDoubleClick, this);
-					control.removeListener(SWT.MouseDown, this);
-					control.removeListener(SWT.Dispose, this);
-					control.removeListener(SWT.FocusOut, this);
-
-					Shell controlShell = control.getShell();
-					controlShell.removeListener(SWT.Move, this);
-					controlShell.removeListener(SWT.Resize, this);
-				}
-			}
-		}
-
-		/*
-		 * The listener we will install on the target control.
-		 */
-		private final class TargetControlListener implements Listener {
-			// Key events from the control
-			public void handleEvent(Event e) {
-				if (!isValid()) {
-					return;
-				}
-
-				char key = e.character;
-
-				// Traverse events are handled depending on whether the
-				// event has a character.
-				if (e.type == SWT.Traverse) {
-					// If the traverse event contains a legitimate character,
-					// then we must set doit false so that the widget will
-					// receive the key event. We return immediately so that
-					// the character is handled only in the key event.
-					// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=132101
-					if (key != 0) {
-						e.doit = false;
-						return;
-					}
-					// Traversal does not contain a character. Set doit true
-					// to indicate TRAVERSE_NONE will occur and that no key
-					// event will be triggered. We will check for navigation
-					// keys below.
-					e.detail = SWT.TRAVERSE_NONE;
-					e.doit = true;
-				} else {
-					// Default is to only propagate when configured that way.
-					// Some keys will always set doit to false anyway.
-					e.doit = propagateKeys;
-				}
-
-				// No character. Check for navigation keys.
-
-				if (key == 0) {
-					int newSelection = proposalTable.getSelectionIndex();
-					int visibleRows = (proposalTable.getSize().y / proposalTable
-							.getItemHeight()) - 1;
-					switch (e.keyCode) {
-					case SWT.ARROW_UP:
-						newSelection -= 1;
-						if (newSelection < 0) {
-							newSelection = proposalTable.getItemCount() - 1;
-						}
-						// Not typical - usually we get this as a Traverse and
-						// therefore it never propagates. Added for consistency.
-						if (e.type == SWT.KeyDown) {
-							// don't propagate to control
-							e.doit = false;
-						}
-
-						break;
-
-					case SWT.ARROW_DOWN:
-						newSelection += 1;
-						if (newSelection > proposalTable.getItemCount() - 1) {
-							newSelection = 0;
-						}
-						// Not typical - usually we get this as a Traverse and
-						// therefore it never propagates. Added for consistency.
-						if (e.type == SWT.KeyDown) {
-							// don't propagate to control
-							e.doit = false;
-						}
-
-						break;
-
-					case SWT.PAGE_DOWN:
-						newSelection += visibleRows;
-						if (newSelection >= proposalTable.getItemCount()) {
-							newSelection = proposalTable.getItemCount() - 1;
-						}
-						if (e.type == SWT.KeyDown) {
-							// don't propagate to control
-							e.doit = false;
-						}
-						break;
-
-					case SWT.PAGE_UP:
-						newSelection -= visibleRows;
-						if (newSelection < 0) {
-							newSelection = 0;
-						}
-						if (e.type == SWT.KeyDown) {
-							// don't propagate to control
-							e.doit = false;
-						}
-						break;
-
-					case SWT.HOME:
-						newSelection = 0;
-						if (e.type == SWT.KeyDown) {
-							// don't propagate to control
-							e.doit = false;
-						}
-						break;
-
-					case SWT.END:
-						newSelection = proposalTable.getItemCount() - 1;
-						if (e.type == SWT.KeyDown) {
-							// don't propagate to control
-							e.doit = false;
-						}
-						break;
-
-					// If received as a Traverse, these should propagate
-					// to the control as keydown. If received as a keydown,
-					// proposals should be recomputed since the cursor
-					// position has changed.
-					case SWT.ARROW_LEFT:
-					case SWT.ARROW_RIGHT:
-						if (e.type == SWT.Traverse) {
-							e.doit = false;
-						} else {
-							e.doit = true;
-							String contents = getControlContentAdapter()
-									.getControlContents(getControl());
-							// If there are no contents, changes in cursor
-							// position have no effect. Note also that we do 
-							// not affect the filter text on ARROW_LEFT as 
-							// we would with BS.
-							if (contents.length() > 0) {
-								asyncRecomputeProposals(filterText);
-							}
-						}
-						break;
-
-					// Any unknown keycodes will cause the popup to close.
-					// Modifier keys are explicitly checked and ignored because
-					// they are not complete yet (no character).
-					default:
-						if (e.keyCode != SWT.CAPS_LOCK && e.keyCode != SWT.MOD1
-								&& e.keyCode != SWT.MOD2
-								&& e.keyCode != SWT.MOD3
-								&& e.keyCode != SWT.MOD4) {
-							close();
-						}
-						return;
-					}
-
-					// If any of these navigation events caused a new selection,
-					// then handle that now and return.
-					if (newSelection >= 0) {
-						selectProposal(newSelection);
-					}
-					return;
-				}
-
-				// key != 0
-				// Check for special keys involved in cancelling, accepting, or
-				// filtering the proposals.
-				switch (key) {
-				case SWT.ESC:
-					e.doit = false;
-					close();
-					break;
-
-				case SWT.LF:
-				case SWT.CR:
-					e.doit = false;
-					Object p = getSelectedProposal();
-					if (p != null) {
-						acceptCurrentProposal();
-					} else {
-						close();
-					}
-					break;
-
-				case SWT.TAB:
-					e.doit = false;
-					getShell().setFocus();
-					return;
-
-				case SWT.BS:
-					// Backspace should back out of any stored filter text
-					if (filterStyle != FILTER_NONE) {
-						// We have no filter to back out of, so do nothing
-						if (filterText.length() == 0) {
-							return;
-						}
-						// There is filter to back out of
-						filterText = filterText.substring(0, filterText
-								.length() - 1);
-						asyncRecomputeProposals(filterText);
-						return;
-					}
-					// There is no filtering provided by us, but some
-					// clients provide their own filtering based on content.
-					// Recompute the proposals if the cursor position
-					// will change (is not at 0).
-					int pos = getControlContentAdapter().getCursorPosition(
-							getControl());
-					// We rely on the fact that the contents and pos do not yet
-					// reflect the result of the BS. If the contents were
-					// already empty, then BS should not cause
-					// a recompute.
-					if (pos > 0) {
-						asyncRecomputeProposals(filterText);
-					}
-					break;
-
-				default:
-					// If the key is a defined unicode character, and not one of
-					// the special cases processed above, update the filter text
-					// and filter the proposals.
-					if (Character.isDefined(key)) {
-						if (filterStyle == FILTER_CUMULATIVE) {
-							filterText = filterText + String.valueOf(key);
-						} else if (filterStyle == FILTER_CHARACTER) {
-							filterText = String.valueOf(key);
-						}
-						// Recompute proposals after processing this event.
-						asyncRecomputeProposals(filterText);
-					}
-					break;
-				}
-			}
-		}
-
-		/*
-		 * Internal class used to implement the secondary popup.
-		 */
-		private class InfoPopupDialog extends PopupDialog {
-
-			/*
-			 * The text control that displays the text.
-			 */
-			private Text text;
-
-			/*
-			 * The String shown in the popup.
-			 */
-			private String contents = EMPTY;
-
-			/*
-			 * Construct an info-popup with the specified parent.
-			 */
-			InfoPopupDialog(Shell parent) {
-				super(parent, PopupDialog.HOVER_SHELLSTYLE, false, false,
-						false, false, null, null);
-			}
-
-			/*
-			 * Create a text control for showing the info about a proposal.
-			 */
-			protected Control createDialogArea(Composite parent) {
-				text = new Text(parent, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP
-						| SWT.NO_FOCUS);
-
-				// Use the compact margins employed by PopupDialog.
-				GridData gd = new GridData(GridData.BEGINNING
-						| GridData.FILL_BOTH);
-				gd.horizontalIndent = PopupDialog.POPUP_HORIZONTALSPACING;
-				gd.verticalIndent = PopupDialog.POPUP_VERTICALSPACING;
-				text.setLayoutData(gd);
-				text.setText(contents);
-
-				// since SWT.NO_FOCUS is only a hint...
-				text.addFocusListener(new FocusAdapter() {
-					public void focusGained(FocusEvent event) {
-						ContentProposalPopup.this.close();
-					}
-				});
-				return text;
-			}
-
-			/*
-			 * Adjust the bounds so that we appear adjacent to our parent shell
-			 */
-			protected void adjustBounds() {
-				Rectangle parentBounds = getParentShell().getBounds();
-				Rectangle proposedBounds;
-				// Try placing the info popup to the right
-				Rectangle rightProposedBounds = new Rectangle(parentBounds.x
-						+ parentBounds.width
-						+ PopupDialog.POPUP_HORIZONTALSPACING, parentBounds.y
-						+ PopupDialog.POPUP_VERTICALSPACING,
-						parentBounds.width, parentBounds.height);
-				rightProposedBounds = getConstrainedShellBounds(rightProposedBounds);
-				// If it won't fit on the right, try the left
-				if (rightProposedBounds.intersects(parentBounds)) {
-					Rectangle leftProposedBounds = new Rectangle(parentBounds.x
-							- parentBounds.width - POPUP_HORIZONTALSPACING - 1,
-							parentBounds.y, parentBounds.width,
-							parentBounds.height);
-					leftProposedBounds = getConstrainedShellBounds(leftProposedBounds);
-					// If it won't fit on the left, choose the proposed bounds
-					// that fits the best
-					if (leftProposedBounds.intersects(parentBounds)) {
-						if (rightProposedBounds.x - parentBounds.x >= parentBounds.x
-								- leftProposedBounds.x) {
-							rightProposedBounds.x = parentBounds.x
-									+ parentBounds.width
-									+ PopupDialog.POPUP_HORIZONTALSPACING;
-							proposedBounds = rightProposedBounds;
-						} else {
-							leftProposedBounds.width = parentBounds.x
-									- POPUP_HORIZONTALSPACING
-									- leftProposedBounds.x;
-							proposedBounds = leftProposedBounds;
-						}
-					} else {
-						// use the proposed bounds on the left
-						proposedBounds = leftProposedBounds;
-					}
-				} else {
-					// use the proposed bounds on the right
-					proposedBounds = rightProposedBounds;
-				}
-				getShell().setBounds(proposedBounds);
-			}
-			
-			/*
-			 * (non-Javadoc)
-			 * @see org.eclipse.jface.dialogs.PopupDialog#getForeground()
-			 */
-			protected Color getForeground() {
-				return control.getDisplay().
-						getSystemColor(SWT.COLOR_INFO_FOREGROUND);
-			}
-			
-			/*
-			 * (non-Javadoc)
-			 * @see org.eclipse.jface.dialogs.PopupDialog#getBackground()
-			 */
-			protected Color getBackground() {
-				return control.getDisplay().
-						getSystemColor(SWT.COLOR_INFO_BACKGROUND);
-			}
-
-			/*
-			 * Set the text contents of the popup.
-			 */
-			void setContents(String newContents) {
-				if (newContents == null) {
-					newContents = EMPTY;
-				}
-				this.contents = newContents;
-				if (text != null && !text.isDisposed()) {
-					text.setText(contents);
-				}
-			}
-
-			/*
-			 * Return whether the popup has focus.
-			 */
-			boolean hasFocus() {
-				if (text == null || text.isDisposed()) {
-					return false;
-				}
-				return text.getShell().isFocusControl()
-						|| text.isFocusControl();
-			}
-		}
-
-		/*
-		 * The listener installed on the target control.
-		 */
-		private Listener targetControlListener;
-
-		/*
-		 * The listener installed in order to close the popup.
-		 */
-		private PopupCloserListener popupCloser;
-
-		/*
-		 * The table used to show the list of proposals.
-		 */
-		private Table proposalTable;
-
-		/*
-		 * The proposals to be shown (cached to avoid repeated requests).
-		 */
-		private IContentProposal[] proposals;
-
-		/*
-		 * Secondary popup used to show detailed information about the selected
-		 * proposal..
-		 */
-		private InfoPopupDialog infoPopup;
-
-		/*
-		 * Flag indicating whether there is a pending secondary popup update.
-		 */
-		private boolean pendingDescriptionUpdate = false;
-
-		/*
-		 * Filter text - tracked while popup is open, only if we are told to
-		 * filter
-		 */
-		private String filterText = EMPTY;
-
-		/**
-		 * Constructs a new instance of this popup, specifying the control for
-		 * which this popup is showing content, and how the proposals should be
-		 * obtained and displayed.
-		 * 
-		 * @param infoText
-		 *            Text to be shown in a lower info area, or
-		 *            <code>null</code> if there is no info area.
-		 */
-		ContentProposalPopup(String infoText, IContentProposal[] proposals) {
-			// IMPORTANT: Use of SWT.ON_TOP is critical here for ensuring
-			// that the target control retains focus on Mac and Linux. Without
-			// it, the focus will disappear, keystrokes will not go to the
-			// popup, and the popup closer will wrongly close the popup.
-			// On platforms where SWT.ON_TOP overrides SWT.RESIZE, we will live
-			// with this.
-			// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=126138
-			super(control.getShell(), SWT.RESIZE | SWT.ON_TOP, false, false,
-					false, false, null, infoText);
-			this.proposals = proposals;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * @see org.eclipse.jface.dialogs.PopupDialog#getForeground()
-		 */
-		protected Color getForeground() {
-			return JFaceResources.getColorRegistry().get(
-					JFacePreferences.CONTENT_ASSIST_FOREGROUND_COLOR);
-		}
-		
-		/*
-		 * (non-Javadoc)
-		 * @see org.eclipse.jface.dialogs.PopupDialog#getBackground()
-		 */
-		protected Color getBackground() {
-			return JFaceResources.getColorRegistry().get(
-					JFacePreferences.CONTENT_ASSIST_BACKGROUND_COLOR);
-		}
-
-		/*
-		 * Creates the content area for the proposal popup. This creates a table
-		 * and places it inside the composite. The table will contain a list of
-		 * all the proposals.
-		 * 
-		 * @param parent The parent composite to contain the dialog area; must
-		 * not be <code>null</code>.
-		 */
-		protected final Control createDialogArea(final Composite parent) {
-			// Use virtual where appropriate (see flag definition).
-			if (USE_VIRTUAL) {
-				proposalTable = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL
-						| SWT.VIRTUAL);
-
-				Listener listener = new Listener() {
-					public void handleEvent(Event event) {
-						handleSetData(event);
-					}
-				};
-				proposalTable.addListener(SWT.SetData, listener);
-			} else {
-				proposalTable = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL);
-			}
-
-			// set the proposals to force population of the table.
-			setProposals(filterProposals(proposals, filterText));
-
-			proposalTable.setHeaderVisible(false);
-			proposalTable.addSelectionListener(new SelectionListener() {
-
-				public void widgetSelected(SelectionEvent e) {
-					// If a proposal has been selected, show it in the secondary
-					// popup. Otherwise close the popup.
-					if (e.item == null) {
-						if (infoPopup != null) {
-							infoPopup.close();
-						}
-					} else {
-						showProposalDescription();
-					}
-				}
-
-				// Default selection was made. Accept the current proposal.
-				public void widgetDefaultSelected(SelectionEvent e) {
-					acceptCurrentProposal();
-				}
-			});
-			return proposalTable;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.PopupDialog.adjustBounds()
-		 */
-		protected void adjustBounds() {
-			// Get our control's location in display coordinates.
-			Point location = control.getDisplay().map(control.getParent(),
-					null, control.getLocation());
-			int initialX = location.x + POPUP_OFFSET;
-			int initialY = location.y + control.getSize().y + POPUP_OFFSET;
-			// If we are inserting content, use the cursor position to
-			// position the control.
-			if (getProposalAcceptanceStyle() == PROPOSAL_INSERT) {
-				Rectangle insertionBounds = controlContentAdapter
-						.getInsertionBounds(control);
-				initialX = initialX + insertionBounds.x;
-				initialY = location.y + insertionBounds.y
-						+ insertionBounds.height;
-			}
-
-			// If there is no specified size, force it by setting
-			// up a layout on the table.
-			if (popupSize == null) {
-				GridData data = new GridData(GridData.FILL_BOTH);
-				data.heightHint = proposalTable.getItemHeight()
-						* POPUP_CHAR_HEIGHT;
-				data.widthHint = Math.max(control.getSize().x,
-						POPUP_MINIMUM_WIDTH);
-				proposalTable.setLayoutData(data);
-				getShell().pack();
-				popupSize = getShell().getSize();
-			}
-			getShell().setBounds(initialX, initialY, popupSize.x, popupSize.y);
-
-			// Now set up a listener to monitor any changes in size.
-			getShell().addListener(SWT.Resize, new Listener() {
-				public void handleEvent(Event e) {
-					popupSize = getShell().getSize();
-					if (infoPopup != null) {
-						infoPopup.adjustBounds();
-					}
-				}
-			});
-		}
-
-		/*
-		 * Handle the set data event. Set the item data of the requested item to
-		 * the corresponding proposal in the proposal cache.
-		 */
-		private void handleSetData(Event event) {
-			TableItem item = (TableItem) event.item;
-			int index = proposalTable.indexOf(item);
-
-			if (0 <= index && index < proposals.length) {
-				IContentProposal current = proposals[index];
-				item.setText(getString(current));
-				item.setImage(getImage(current));
-				item.setData(current);
-			} else {
-				// this should not happen, but does on win32
-			}
-		}
-
-		/*
-		 * Caches the specified proposals and repopulates the table if it has
-		 * been created.
-		 */
-		private void setProposals(IContentProposal[] newProposals) {
-			if (newProposals == null || newProposals.length == 0) {
-				newProposals = getEmptyProposalArray();
-			}
-			this.proposals = newProposals;
-
-			// If there is a table
-			if (isValid()) {
-				final int newSize = newProposals.length;
-				if (USE_VIRTUAL) {
-					// Set and clear the virtual table. Data will be
-					// provided in the SWT.SetData event handler.
-					proposalTable.setItemCount(newSize);
-					proposalTable.clearAll();
-				} else {
-					// Populate the table manually
-					proposalTable.setRedraw(false);
-					proposalTable.setItemCount(newSize);
-					TableItem[] items = proposalTable.getItems();
-					for (int i = 0; i < items.length; i++) {
-						TableItem item = items[i];
-						IContentProposal proposal = newProposals[i];
-						item.setText(getString(proposal));
-						item.setImage(getImage(proposal));
-						item.setData(proposal);
-					}
-					proposalTable.setRedraw(true);
-				}
-				// Default to the first selection if there is content.
-				if (newProposals.length > 0) {
-					selectProposal(0);
-				} else {
-					// No selection, close the secondary popup if it was open
-					if (infoPopup != null) {
-						infoPopup.close();
-					}
-
-				}
-			}
-		}
-
-		/*
-		 * Get the string for the specified proposal. Always return a String of
-		 * some kind.
-		 */
-		private String getString(IContentProposal proposal) {
-			if (proposal == null) {
-				return EMPTY;
-			}
-			if (labelProvider == null) {
-				return proposal.getLabel() == null ? proposal.getContent()
-						: proposal.getLabel();
-			}
-			return labelProvider.getText(proposal);
-		}
-
-		/*
-		 * Get the image for the specified proposal. If there is no image
-		 * available, return null.
-		 */
-		private Image getImage(IContentProposal proposal) {
-			if (proposal == null || labelProvider == null) {
-				return null;
-			}
-			return labelProvider.getImage(proposal);
-		}
-
-		/*
-		 * Return an empty array. Used so that something always shows in the
-		 * proposal popup, even if no proposal provider was specified.
-		 */
-		private IContentProposal[] getEmptyProposalArray() {
-			return new IContentProposal[0];
-		}
-
-		/*
-		 * Answer true if the popup is valid, which means the table has been
-		 * created and not disposed.
-		 */
-		private boolean isValid() {
-			return proposalTable != null && !proposalTable.isDisposed();
-		}
-
-		/*
-		 * Return whether the receiver has focus. Since 3.4, this includes a
-		 * check for whether the info popup has focus.
-		 */
-		private boolean hasFocus() {
-			if (!isValid()) {
-				return false;
-			}
-			if (getShell().isFocusControl() || proposalTable.isFocusControl()) {
-				return true;
-			}
-			if (infoPopup != null && infoPopup.hasFocus()) {
-				return true;
-			}
-			return false;
-		}
-
-		/*
-		 * Return the current selected proposal.
-		 */
-		private IContentProposal getSelectedProposal() {
-			if (isValid()) {
-				int i = proposalTable.getSelectionIndex();
-				if (proposals == null || i < 0 || i >= proposals.length) {
-					return null;
-				}
-				return proposals[i];
-			}
-			return null;
-		}
-
-		/*
-		 * Select the proposal at the given index.
-		 */
-		private void selectProposal(int index) {
-			Assert
-					.isTrue(index >= 0,
-							"Proposal index should never be negative"); //$NON-NLS-1$
-			if (!isValid() || proposals == null || index >= proposals.length) {
-				return;
-			}
-			proposalTable.setSelection(index);
-			proposalTable.showSelection();
-
-			showProposalDescription();
-		}
-
-		/**
-		 * Opens this ContentProposalPopup. This method is extended in order to
-		 * add the control listener when the popup is opened and to invoke the
-		 * secondary popup if applicable.
-		 * 
-		 * @return the return code
-		 * 
-		 * @see org.eclipse.jface.window.Window#open()
-		 */
-		public int open() {
-			int value = super.open();
-			if (popupCloser == null) {
-				popupCloser = new PopupCloserListener();
-			}
-			popupCloser.installListeners();
-			IContentProposal p = getSelectedProposal();
-			if (p != null) {
-				showProposalDescription();
-			}
-			return value;
-		}
-
-		/**
-		 * Closes this popup. This method is extended to remove the control
-		 * listener.
-		 * 
-		 * @return <code>true</code> if the window is (or was already) closed,
-		 *         and <code>false</code> if it is still open
-		 */
-		public boolean close() {
-			popupCloser.removeListeners();
-			if (infoPopup != null) {
-				infoPopup.close();
-			}
-			boolean ret = super.close();
-			notifyPopupClosed();
-			return ret;
-		}
-
-		/*
-		 * Show the currently selected proposal's description in a secondary
-		 * popup.
-		 */
-		private void showProposalDescription() {
-			// If we do not already have a pending update, then
-			// create a thread now that will show the proposal description
-			if (!pendingDescriptionUpdate) {
-				// Create a thread that will sleep for the specified delay
-				// before creating the popup. We do not use Jobs since this
-				// code must be able to run independently of the Eclipse
-				// runtime.
-				Runnable runnable = new Runnable() {
-					public void run() {
-						pendingDescriptionUpdate = true;
-						try {
-							Thread.sleep(POPUP_DELAY);
-						} catch (InterruptedException e) {
-						}
-						if (!isValid()) {
-							return;
-						}
-						getShell().getDisplay().syncExec(new Runnable() {
-							public void run() {
-								// Query the current selection since we have
-								// been delayed
-								IContentProposal p = getSelectedProposal();
-								if (p != null) {
-									String description = p.getDescription();
-									if (description != null) {
-										if (infoPopup == null) {
-											infoPopup = new InfoPopupDialog(
-													getShell());
-											infoPopup.open();
-											infoPopup
-													.getShell()
-													.addDisposeListener(
-															new DisposeListener() {
-																public void widgetDisposed(
-																		DisposeEvent event) {
-																	infoPopup = null;
-																}
-															});
-										}
-										infoPopup.setContents(p
-												.getDescription());
-									} else if (infoPopup != null) {
-										infoPopup.close();
-									}
-									pendingDescriptionUpdate = false;
-
-								}
-							}
-						});
-					}
-				};
-				Thread t = new Thread(runnable);
-				t.start();
-			}
-		}
-
-		/*
-		 * Accept the current proposal.
-		 */
-		private void acceptCurrentProposal() {
-			// Close before accepting the proposal. This is important
-			// so that the cursor position can be properly restored at
-			// acceptance, which does not work without focus on some controls.
-			// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=127108
-			IContentProposal proposal = getSelectedProposal();
-			close();
-			proposalAccepted(proposal);
-		}
-
-		/*
-		 * Request the proposals from the proposal provider, and recompute any
-		 * caches. Repopulate the popup if it is open.
-		 */
-		private void recomputeProposals(String filterText) {
-			IContentProposal[] allProposals = getProposals();
-			// If the non-filtered proposal list is empty, we should
-			// close the popup.
-			// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=147377
-			if (allProposals.length == 0) {
-				proposals = allProposals;
-				close();
-			} else {
-				// Keep the popup open, but filter by any provided filter text
-				setProposals(filterProposals(allProposals, filterText));
-			}
-		}
-
-		/*
-		 * In an async block, request the proposals. This is used when clients
-		 * are in the middle of processing an event that affects the widget
-		 * content. By using an async, we ensure that the widget content is up
-		 * to date with the event.
-		 */
-		private void asyncRecomputeProposals(final String filterText) {
-			if (isValid()) {
-				control.getDisplay().asyncExec(new Runnable() {
-					public void run() {
-						recordCursorPosition();
-						recomputeProposals(filterText);
-					}
-				});
-			} else {
-				recomputeProposals(filterText);
-			}
-		}
-
-		/*
-		 * Filter the provided list of content proposals according to the filter
-		 * text.
-		 */
-		private IContentProposal[] filterProposals(
-				IContentProposal[] proposals, String filterString) {
-			if (filterString.length() == 0) {
-				return proposals;
-			}
-
-			// Check each string for a match. Use the string displayed to the
-			// user, not the proposal content.
-			ArrayList list = new ArrayList();
-			for (int i = 0; i < proposals.length; i++) {
-				String string = getString(proposals[i]);
-				if (string.length() >= filterString.length()
-						&& string.substring(0, filterString.length())
-								.equalsIgnoreCase(filterString)) {
-					list.add(proposals[i]);
-				}
-
-			}
-			return (IContentProposal[]) list.toArray(new IContentProposal[list
-					.size()]);
-		}
-
-		Listener getTargetControlListener() {
-			if (targetControlListener == null) {
-				targetControlListener = new TargetControlListener();
-			}
-			return targetControlListener;
-		}
-	}
-
-	/**
-	 * Flag that controls the printing of debug info.
-	 */
-	public static final boolean DEBUG = false;
-
-	/**
-	 * Indicates that a chosen proposal should be inserted into the field.
-	 */
-	public static final int PROPOSAL_INSERT = 1;
-
-	/**
-	 * Indicates that a chosen proposal should replace the entire contents of
-	 * the field.
-	 */
-	public static final int PROPOSAL_REPLACE = 2;
-
-	/**
-	 * Indicates that the contents of the control should not be modified when a
-	 * proposal is chosen. This is typically used when a client needs more
-	 * specialized behavior when a proposal is chosen. In this case, clients
-	 * typically register an IContentProposalListener so that they are notified
-	 * when a proposal is chosen.
-	 */
-	public static final int PROPOSAL_IGNORE = 3;
-
-	/**
-	 * Indicates that there should be no filter applied as keys are typed in the
-	 * popup.
-	 */
-	public static final int FILTER_NONE = 1;
-
-	/**
-	 * Indicates that a single character filter applies as keys are typed in the
-	 * popup.
-	 */
-	public static final int FILTER_CHARACTER = 2;
-
-	/**
-	 * Indicates that a cumulative filter applies as keys are typed in the
-	 * popup. That is, each character typed will be added to the filter.
-	 * 
-	 * @deprecated As of 3.4, filtering that is sensitive to changes in the
-	 *             control content should be performed by the supplied
-	 *             {@link IContentProposalProvider}, such as that performed by
-	 *             {@link SimpleContentProposalProvider}
-	 */
-	public static final int FILTER_CUMULATIVE = 3;
-
-	/*
-	 * Set to <code>true</code> to use a Table with SWT.VIRTUAL. This is a
-	 * workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=98585#c40
-	 * The corresponding SWT bug is
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=90321
-	 */
-	private static final boolean USE_VIRTUAL = !"motif".equals(SWT.getPlatform()); //$NON-NLS-1$
-
-	/*
-	 * The delay before showing a secondary popup.
-	 */
-	private static final int POPUP_DELAY = 750;
-
-	/*
-	 * The character height hint for the popup. May be overridden by using
-	 * setInitialPopupSize.
-	 */
-	private static final int POPUP_CHAR_HEIGHT = 10;
-
-	/*
-	 * The minimum pixel width for the popup. May be overridden by using
-	 * setInitialPopupSize.
-	 */
-	private static final int POPUP_MINIMUM_WIDTH = 300;
-
-	/*
-	 * The pixel offset of the popup from the bottom corner of the control.
-	 */
-	private static final int POPUP_OFFSET = 3;
-
-	/*
-	 * Empty string.
-	 */
-	private static final String EMPTY = ""; //$NON-NLS-1$
-
-	/*
-	 * The object that provides content proposals.
-	 */
-	private IContentProposalProvider proposalProvider;
-
-	/*
-	 * A label provider used to display proposals in the popup, and to extract
-	 * Strings from non-String proposals.
-	 */
-	private ILabelProvider labelProvider;
-
-	/*
-	 * The control for which content proposals are provided.
-	 */
-	private Control control;
-
-	/*
-	 * The adapter used to extract the String contents from an arbitrary
-	 * control.
-	 */
-	private IControlContentAdapter controlContentAdapter;
-
-	/*
-	 * The popup used to show proposals.
-	 */
-	private ContentProposalPopup popup;
-
-	/*
-	 * The keystroke that signifies content proposals should be shown.
-	 */
-	private KeyStroke triggerKeyStroke;
-
-	/*
-	 * The String containing characters that auto-activate the popup.
-	 */
-	private String autoActivateString;
-
-	/*
-	 * Integer that indicates how an accepted proposal should affect the
-	 * control. One of PROPOSAL_IGNORE, PROPOSAL_INSERT, or PROPOSAL_REPLACE.
-	 * Default value is PROPOSAL_INSERT.
-	 */
-	private int proposalAcceptanceStyle = PROPOSAL_INSERT;
-
-	/*
-	 * A boolean that indicates whether key events received while the proposal
-	 * popup is open should also be propagated to the control. Default value is
-	 * true.
-	 */
-	private boolean propagateKeys = true;
-
-	/*
-	 * Integer that indicates the filtering style. One of FILTER_CHARACTER,
-	 * FILTER_CUMULATIVE, FILTER_NONE.
-	 */
-	private int filterStyle = FILTER_NONE;
-
-	/*
-	 * The listener we install on the control.
-	 */
-	private Listener controlListener;
-
-	/*
-	 * The list of IContentProposalListener listeners.
-	 */
-	private ListenerList proposalListeners = new ListenerList();
-
-	/*
-	 * The list of IContentProposalListener2 listeners.
-	 */
-	private ListenerList proposalListeners2 = new ListenerList();
-
-	/*
-	 * Flag that indicates whether the adapter is enabled. In some cases,
-	 * adapters may be installed but depend upon outside state.
-	 */
-	private boolean isEnabled = true;
-
-	/*
-	 * The delay in milliseconds used when autoactivating the popup.
-	 */
-	private int autoActivationDelay = 0;
-
-	/*
-	 * A boolean indicating whether a keystroke has been received. Used to see
-	 * if an autoactivation delay was interrupted by a keystroke.
-	 */
-	private boolean receivedKeyDown;
-
-	/*
-	 * The desired size in pixels of the proposal popup.
-	 */
-	private Point popupSize;
-
-	/*
-	 * The remembered position of the insertion position. Not all controls will
-	 * restore the insertion position if the proposal popup gets focus, so we
-	 * need to remember it.
-	 */
-	private int insertionPos = -1;
-
-	/*
-	 * The remembered selection range. Not all controls will restore the
-	 * selection position if the proposal popup gets focus, so we need to
-	 * remember it.
-	 */
-	private Point selectionRange = new Point(-1, -1);
-
-	/*
-	 * A flag that indicates that we are watching modify events
-	 */
-	private boolean watchModify = false;
-
-	/**
-	 * Construct a content proposal adapter that can assist the user with
-	 * choosing content for the field.
-	 * 
-	 * @param control
-	 *            the control for which the adapter is providing content assist.
-	 *            May not be <code>null</code>.
-	 * @param controlContentAdapter
-	 *            the <code>IControlContentAdapter</code> used to obtain and
-	 *            update the control's contents as proposals are accepted. May
-	 *            not be <code>null</code>.
-	 * @param proposalProvider
-	 *            the <code>IContentProposalProvider</code> used to obtain
-	 *            content proposals for this control, or <code>null</code> if
-	 *            no content proposal is available.
-	 * @param keyStroke
-	 *            the keystroke that will invoke the content proposal popup. If
-	 *            this value is <code>null</code>, then proposals will be
-	 *            activated automatically when any of the auto activation
-	 *            characters are typed.
-	 * @param autoActivationCharacters
-	 *            An array of characters that trigger auto-activation of content
-	 *            proposal. If specified, these characters will trigger
-	 *            auto-activation of the proposal popup, regardless of whether
-	 *            an explicit invocation keyStroke was specified. If this
-	 *            parameter is <code>null</code>, then only a specified
-	 *            keyStroke will invoke content proposal. If this parameter is
-	 *            <code>null</code> and the keyStroke parameter is
-	 *            <code>null</code>, then all alphanumeric characters will
-	 *            auto-activate content proposal.
-	 */
-	public ContentProposalAdapter(Control control,
-			IControlContentAdapter controlContentAdapter,
-			IContentProposalProvider proposalProvider, KeyStroke keyStroke,
-			char[] autoActivationCharacters) {
-		super();
-		// We always assume the control and content adapter are valid.
-		Assert.isNotNull(control);
-		Assert.isNotNull(controlContentAdapter);
-		this.control = control;
-		this.controlContentAdapter = controlContentAdapter;
-
-		// The rest of these may be null
-		this.proposalProvider = proposalProvider;
-		this.triggerKeyStroke = keyStroke;
-		if (autoActivationCharacters != null) {
-			this.autoActivateString = new String(autoActivationCharacters);
-		}
-		addControlListener(control);
-	}
-
-	/**
-	 * Get the control on which the content proposal adapter is installed.
-	 * 
-	 * @return the control on which the proposal adapter is installed.
-	 */
-	public Control getControl() {
-		return control;
-	}
-
-	/**
-	 * Get the label provider that is used to show proposals.
-	 * 
-	 * @return the {@link ILabelProvider} used to show proposals, or
-	 *         <code>null</code> if one has not been installed.
-	 */
-	public ILabelProvider getLabelProvider() {
-		return labelProvider;
-	}
-
-	/**
-	 * Return a boolean indicating whether the receiver is enabled.
-	 * 
-	 * @return <code>true</code> if the adapter is enabled, and
-	 *         <code>false</code> if it is not.
-	 */
-	public boolean isEnabled() {
-		return isEnabled;
-	}
-
-	/**
-	 * Set the label provider that is used to show proposals. The lifecycle of
-	 * the specified label provider is not managed by this adapter. Clients must
-	 * dispose the label provider when it is no longer needed.
-	 * 
-	 * @param labelProvider
-	 *            the (@link ILabelProvider} used to show proposals.
-	 */
-	public void setLabelProvider(ILabelProvider labelProvider) {
-		this.labelProvider = labelProvider;
-	}
-
-	/**
-	 * Return the proposal provider that provides content proposals given the
-	 * current content of the field. A value of <code>null</code> indicates
-	 * that there are no content proposals available for the field.
-	 * 
-	 * @return the {@link IContentProposalProvider} used to show proposals. May
-	 *         be <code>null</code>.
-	 */
-	public IContentProposalProvider getContentProposalProvider() {
-		return proposalProvider;
-	}
-
-	/**
-	 * Set the content proposal provider that is used to show proposals.
-	 * 
-	 * @param proposalProvider
-	 *            the {@link IContentProposalProvider} used to show proposals
-	 */
-	public void setContentProposalProvider(
-			IContentProposalProvider proposalProvider) {
-		this.proposalProvider = proposalProvider;
-	}
-
-	/**
-	 * Return the array of characters on which the popup is autoactivated.
-	 * 
-	 * @return An array of characters that trigger auto-activation of content
-	 *         proposal. If specified, these characters will trigger
-	 *         auto-activation of the proposal popup, regardless of whether an
-	 *         explicit invocation keyStroke was specified. If this parameter is
-	 *         <code>null</code>, then only a specified keyStroke will invoke
-	 *         content proposal. If this value is <code>null</code> and the
-	 *         keyStroke value is <code>null</code>, then all alphanumeric
-	 *         characters will auto-activate content proposal.
-	 */
-	public char[] getAutoActivationCharacters() {
-		if (autoActivateString == null) {
-			return null;
-		}
-		return autoActivateString.toCharArray();
-	}
-
-	/**
-	 * Set the array of characters that will trigger autoactivation of the
-	 * popup.
-	 * 
-	 * @param autoActivationCharacters
-	 *            An array of characters that trigger auto-activation of content
-	 *            proposal. If specified, these characters will trigger
-	 *            auto-activation of the proposal popup, regardless of whether
-	 *            an explicit invocation keyStroke was specified. If this
-	 *            parameter is <code>null</code>, then only a specified
-	 *            keyStroke will invoke content proposal. If this parameter is
-	 *            <code>null</code> and the keyStroke value is
-	 *            <code>null</code>, then all alphanumeric characters will
-	 *            auto-activate content proposal.
-	 * 
-	 */
-	public void setAutoActivationCharacters(char[] autoActivationCharacters) {
-		if (autoActivationCharacters == null) {
-			this.autoActivateString = null;
-		} else {
-			this.autoActivateString = new String(autoActivationCharacters);
-		}
-	}
-
-	/**
-	 * Set the delay, in milliseconds, used before any autoactivation is
-	 * triggered.
-	 * 
-	 * @return the time in milliseconds that will pass before a popup is
-	 *         automatically opened
-	 */
-	public int getAutoActivationDelay() {
-		return autoActivationDelay;
-
-	}
-
-	/**
-	 * Set the delay, in milliseconds, used before autoactivation is triggered.
-	 * 
-	 * @param delay
-	 *            the time in milliseconds that will pass before a popup is
-	 *            automatically opened
-	 */
-	public void setAutoActivationDelay(int delay) {
-		autoActivationDelay = delay;
-
-	}
-
-	/**
-	 * Get the integer style that indicates how an accepted proposal affects the
-	 * control's content.
-	 * 
-	 * @return a constant indicating how an accepted proposal should affect the
-	 *         control's content. Should be one of <code>PROPOSAL_INSERT</code>,
-	 *         <code>PROPOSAL_REPLACE</code>, or <code>PROPOSAL_IGNORE</code>.
-	 *         (Default is <code>PROPOSAL_INSERT</code>).
-	 */
-	public int getProposalAcceptanceStyle() {
-		return proposalAcceptanceStyle;
-	}
-
-	/**
-	 * Set the integer style that indicates how an accepted proposal affects the
-	 * control's content.
-	 * 
-	 * @param acceptance
-	 *            a constant indicating how an accepted proposal should affect
-	 *            the control's content. Should be one of
-	 *            <code>PROPOSAL_INSERT</code>, <code>PROPOSAL_REPLACE</code>,
-	 *            or <code>PROPOSAL_IGNORE</code>
-	 */
-	public void setProposalAcceptanceStyle(int acceptance) {
-		proposalAcceptanceStyle = acceptance;
-	}
-
-	/**
-	 * Return the integer style that indicates how keystrokes affect the content
-	 * of the proposal popup while it is open.
-	 * 
-	 * @return a constant indicating how keystrokes in the proposal popup affect
-	 *         filtering of the proposals shown. <code>FILTER_NONE</code>
-	 *         specifies that no filtering will occur in the content proposal
-	 *         list as keys are typed. <code>FILTER_CHARACTER</code> specifies
-	 *         the content of the popup will be filtered by the most recently
-	 *         typed character. <code>FILTER_CUMULATIVE</code> is deprecated
-	 *         and no longer recommended. It specifies that the content of the
-	 *         popup will be filtered by a string containing all the characters
-	 *         typed since the popup has been open. The default is
-	 *         <code>FILTER_NONE</code>.
-	 */
-	public int getFilterStyle() {
-		return filterStyle;
-	}
-
-	/**
-	 * Set the integer style that indicates how keystrokes affect the content of
-	 * the proposal popup while it is open. Popup-based filtering is useful for
-	 * narrowing and navigating the list of proposals provided once the popup is
-	 * open. Filtering of the proposals will occur even when the control content
-	 * is not affected by user typing. Note that automatic filtering is not used
-	 * to achieve content-sensitive filtering such as auto-completion. Filtering
-	 * that is sensitive to changes in the control content should be performed
-	 * by the supplied {@link IContentProposalProvider}.
-	 * 
-	 * @param filterStyle
-	 *            a constant indicating how keystrokes received in the proposal
-	 *            popup affect filtering of the proposals shown.
-	 *            <code>FILTER_NONE</code> specifies that no automatic
-	 *            filtering of the content proposal list will occur as keys are
-	 *            typed in the popup. <code>FILTER_CHARACTER</code> specifies
-	 *            that the content of the popup will be filtered by the most
-	 *            recently typed character. <code>FILTER_CUMULATIVE</code> is
-	 *            deprecated and no longer recommended. It specifies that the
-	 *            content of the popup will be filtered by a string containing
-	 *            all the characters typed since the popup has been open.
-	 */
-	public void setFilterStyle(int filterStyle) {
-		this.filterStyle = filterStyle;
-	}
-
-	/**
-	 * Return the size, in pixels, of the content proposal popup.
-	 * 
-	 * @return a Point specifying the last width and height, in pixels, of the
-	 *         content proposal popup.
-	 */
-	public Point getPopupSize() {
-		return popupSize;
-	}
-
-	/**
-	 * Set the size, in pixels, of the content proposal popup. This size will be
-	 * used the next time the content proposal popup is opened.
-	 * 
-	 * @param size
-	 *            a Point specifying the desired width and height, in pixels, of
-	 *            the content proposal popup.
-	 */
-	public void setPopupSize(Point size) {
-		popupSize = size;
-	}
-
-	/**
-	 * Get the boolean that indicates whether key events (including
-	 * auto-activation characters) received by the content proposal popup should
-	 * also be propagated to the adapted control when the proposal popup is
-	 * open.
-	 * 
-	 * @return a boolean that indicates whether key events (including
-	 *         auto-activation characters) should be propagated to the adapted
-	 *         control when the proposal popup is open. Default value is
-	 *         <code>true</code>.
-	 */
-	public boolean getPropagateKeys() {
-		return propagateKeys;
-	}
-
-	/**
-	 * Set the boolean that indicates whether key events (including
-	 * auto-activation characters) received by the content proposal popup should
-	 * also be propagated to the adapted control when the proposal popup is
-	 * open.
-	 * 
-	 * @param propagateKeys
-	 *            a boolean that indicates whether key events (including
-	 *            auto-activation characters) should be propagated to the
-	 *            adapted control when the proposal popup is open.
-	 */
-	public void setPropagateKeys(boolean propagateKeys) {
-		this.propagateKeys = propagateKeys;
-	}
-
-	/**
-	 * Return the content adapter that can get or retrieve the text contents
-	 * from the adapter's control. This method is used when a client, such as a
-	 * content proposal listener, needs to update the control's contents
-	 * manually.
-	 * 
-	 * @return the {@link IControlContentAdapter} which can update the control
-	 *         text.
-	 */
-	public IControlContentAdapter getControlContentAdapter() {
-		return controlContentAdapter;
-	}
-
-	/**
-	 * Set the boolean flag that determines whether the adapter is enabled.
-	 * 
-	 * @param enabled
-	 *            <code>true</code> if the adapter is enabled and responding
-	 *            to user input, <code>false</code> if it is ignoring user
-	 *            input.
-	 * 
-	 */
-	public void setEnabled(boolean enabled) {
-		// If we are disabling it while it's proposing content, close the
-		// content proposal popup.
-		if (isEnabled && !enabled) {
-			if (popup != null) {
-				popup.close();
-			}
-		}
-		isEnabled = enabled;
-	}
-
-	/**
-	 * Add the specified listener to the list of content proposal listeners that
-	 * are notified when content proposals are chosen.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            the IContentProposalListener to be added as a listener. Must
-	 *            not be <code>null</code>. If an attempt is made to register
-	 *            an instance which is already registered with this instance,
-	 *            this method has no effect.
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IContentProposalListener
-	 */
-	public void addContentProposalListener(IContentProposalListener listener) {
-		proposalListeners.add(listener);
-	}
-
-	/**
-	 * Removes the specified listener from the list of content proposal
-	 * listeners that are notified when content proposals are chosen.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            the IContentProposalListener to be removed as a listener. Must
-	 *            not be <code>null</code>. If the listener has not already
-	 *            been registered, this method has no effect.
-	 * 
-	 * @since 3.3
-	 * @see org.eclipse.jface.fieldassist.IContentProposalListener
-	 */
-	public void removeContentProposalListener(IContentProposalListener listener) {
-		proposalListeners.remove(listener);
-	}
-
-	/**
-	 * Add the specified listener to the list of content proposal listeners that
-	 * are notified when a content proposal popup is opened or closed.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            the IContentProposalListener2 to be added as a listener. Must
-	 *            not be <code>null</code>. If an attempt is made to register
-	 *            an instance which is already registered with this instance,
-	 *            this method has no effect.
-	 * 
-	 * @since 3.3
-	 * @see org.eclipse.jface.fieldassist.IContentProposalListener2
-	 */
-	public void addContentProposalListener(IContentProposalListener2 listener) {
-		proposalListeners2.add(listener);
-	}
-
-	/**
-	 * Remove the specified listener from the list of content proposal listeners
-	 * that are notified when a content proposal popup is opened or closed.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            the IContentProposalListener2 to be removed as a listener.
-	 *            Must not be <code>null</code>. If the listener has not
-	 *            already been registered, this method has no effect.
-	 * 
-	 * @since 3.3
-	 * @see org.eclipse.jface.fieldassist.IContentProposalListener2
-	 */
-	public void removeContentProposalListener(IContentProposalListener2 listener) {
-		proposalListeners2.remove(listener);
-	}
-
-	/*
-	 * Add our listener to the control. Debug information to be left in until
-	 * this support is stable on all platforms.
-	 */
-	private void addControlListener(Control control) {
-		if (DEBUG) {
-			System.out
-					.println("ContentProposalListener#installControlListener()"); //$NON-NLS-1$
-		}
-
-		if (controlListener != null) {
-			return;
-		}
-		controlListener = new Listener() {
-			public void handleEvent(Event e) {
-				if (!isEnabled) {
-					return;
-				}
-
-				switch (e.type) {
-				case SWT.Traverse:
-				case SWT.KeyDown:
-					if (DEBUG) {
-						StringBuffer sb;
-						if (e.type == SWT.Traverse) {
-							sb = new StringBuffer("Traverse"); //$NON-NLS-1$
-						} else {
-							sb = new StringBuffer("KeyDown"); //$NON-NLS-1$
-						}
-						sb.append(" received by adapter"); //$NON-NLS-1$
-						dump(sb.toString(), e);
-					}
-					// If the popup is open, it gets first shot at the
-					// keystroke and should set the doit flags appropriately.
-					if (popup != null) {
-						popup.getTargetControlListener().handleEvent(e);
-						if (DEBUG) {
-							StringBuffer sb;
-							if (e.type == SWT.Traverse) {
-								sb = new StringBuffer("Traverse"); //$NON-NLS-1$
-							} else {
-								sb = new StringBuffer("KeyDown"); //$NON-NLS-1$
-							}
-							sb.append(" after being handled by popup"); //$NON-NLS-1$
-							dump(sb.toString(), e);
-						}
-
-						return;
-					}
-
-					// We were only listening to traverse events for the popup
-					if (e.type == SWT.Traverse) {
-						return;
-					}
-
-					// The popup is not open. We are looking at keydown events
-					// for a trigger to open the popup.
-					if (triggerKeyStroke != null) {
-						// Either there are no modifiers for the trigger and we
-						// check the character field...
-						if ((triggerKeyStroke.getModifierKeys() == KeyStroke.NO_KEY && triggerKeyStroke
-								.getNaturalKey() == e.character)
-								||
-								// ...or there are modifiers, in which case the
-								// keycode and state must match
-								(triggerKeyStroke.getNaturalKey() == e.keyCode && ((triggerKeyStroke
-										.getModifierKeys() & e.stateMask) == triggerKeyStroke
-										.getModifierKeys()))) {
-							// We never propagate the keystroke for an explicit
-							// keystroke invocation of the popup
-							e.doit = false;
-							openProposalPopup(false);
-							return;
-						}
-					}
-					/*
-					 * The triggering keystroke was not invoked. If a character
-					 * was typed, compare it to the autoactivation characters.
-					 */
-					if (e.character != 0) {
-						if (autoActivateString != null) {
-							if (autoActivateString.indexOf(e.character) >= 0) {
-								autoActivate();
-							} else {
-								// No autoactivation occurred, so record the key
-								// down as a means to interrupt any
-								// autoactivation
-								// that is pending due to autoactivation delay.
-								receivedKeyDown = true;
-							}
-						} else {
-							// The autoactivate string is null. If the trigger
-							// is also null, we want to act on any modification
-							// to the content.  Set a flag so we'll catch this
-							// in the modify event.
-							if (triggerKeyStroke == null) {
-								watchModify = true;
-							}
-						}
-					}
-					break;
-
-				// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=147377
-				// Given that we will close the popup when there are no valid
-				// proposals, we must reopen it when there are. This means
-				// we should check modifications in those cases.
-				// See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=183650
-				// The watchModify flag ensures that we don't autoactivate if
-				// the content change was caused by something other than typing.
-				case SWT.Modify:
-					if (triggerKeyStroke == null && autoActivateString == null
-							&& watchModify) {
-						if (DEBUG) {
-							dump("Modify event triggers autoactivation", e); //$NON-NLS-1$
-						}
-						watchModify = false;
-						// We don't autoactivate if the net change is no
-						// content.  In other words, backspacing to empty 
-						// should never cause a popup to open.
-						if (!isControlContentEmpty()) {
-							autoActivate();
-						}
-					}
-					break;
-				default:
-					break;
-				}
-			}
-
-			/**
-			 * Dump the given events to "standard" output.
-			 * 
-			 * @param who
-			 *            who is dumping the event
-			 * @param e
-			 *            the event
-			 */
-			private void dump(String who, Event e) {
-				StringBuffer sb = new StringBuffer(
-						"--- [ContentProposalAdapter]\n"); //$NON-NLS-1$
-				sb.append(who);
-				sb.append(" - e: keyCode=" + e.keyCode + hex(e.keyCode)); //$NON-NLS-1$
-				sb.append("; character=" + e.character + hex(e.character)); //$NON-NLS-1$
-				sb.append("; stateMask=" + e.stateMask + hex(e.stateMask)); //$NON-NLS-1$
-				sb.append("; doit=" + e.doit); //$NON-NLS-1$
-				sb.append("; detail=" + e.detail + hex(e.detail)); //$NON-NLS-1$
-				sb.append("; widget=" + e.widget); //$NON-NLS-1$
-				System.out.println(sb);
-			}
-
-			private String hex(int i) {
-				return "[0x" + Integer.toHexString(i) + ']'; //$NON-NLS-1$
-			}
-		};
-		control.addListener(SWT.KeyDown, controlListener);
-		control.addListener(SWT.Traverse, controlListener);
-		control.addListener(SWT.Modify, controlListener);
-
-		if (DEBUG) {
-			System.out
-					.println("ContentProposalAdapter#installControlListener() - installed"); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Open the proposal popup and display the proposals provided by the
-	 * proposal provider. If there are no proposals to be shown, do not show the
-	 * popup. This method returns immediately. That is, it does not wait for the
-	 * popup to open or a proposal to be selected.
-	 * 
-	 * @param autoActivated
-	 *            a boolean indicating whether the popup was autoactivated. If
-	 *            false, a beep will sound when no proposals can be shown.
-	 */
-	private void openProposalPopup(boolean autoActivated) {
-		if (isValid()) {
-			if (popup == null) {
-				// Check whether there are any proposals to be shown.
-				recordCursorPosition(); // must be done before getting proposals
-				IContentProposal[] proposals = getProposals();
-				if (proposals.length > 0) {
-					if (DEBUG) {
-						System.out.println("POPUP OPENED BY PRECEDING EVENT"); //$NON-NLS-1$
-					}
-					recordCursorPosition();
-					popup = new ContentProposalPopup(null, proposals);
-					popup.open();
-					popup.getShell().addDisposeListener(new DisposeListener() {
-						public void widgetDisposed(DisposeEvent event) {
-							popup = null;
-						}
-					});
-					notifyPopupOpened();
-				} else if (!autoActivated) {
-					getControl().getDisplay().beep();
-				}
-			}
-		}
-	}
-
-	/**
-	 * Open the proposal popup and display the proposals provided by the
-	 * proposal provider. This method returns immediately. That is, it does not
-	 * wait for a proposal to be selected. This method is used by subclasses to
-	 * explicitly invoke the opening of the popup. If there are no proposals to
-	 * show, the popup will not open and a beep will be sounded.
-	 */
-	protected void openProposalPopup() {
-		openProposalPopup(false);
-	}
-
-	/**
-	 * Close the proposal popup without accepting a proposal. This method
-	 * returns immediately, and has no effect if the proposal popup was not
-	 * open. This method is used by subclasses to explicitly close the popup
-	 * based on additional logic.
-	 * 
-	 * @since 3.3
-	 */
-	protected void closeProposalPopup() {
-		if (popup != null) {
-			popup.close();
-		}
-	}
-
-	/*
-	 * A content proposal has been accepted. Update the control contents
-	 * accordingly and notify any listeners.
-	 * 
-	 * @param proposal the accepted proposal
-	 */
-	private void proposalAccepted(IContentProposal proposal) {
-		switch (proposalAcceptanceStyle) {
-		case (PROPOSAL_REPLACE):
-			setControlContent(proposal.getContent(), proposal
-					.getCursorPosition());
-			break;
-		case (PROPOSAL_INSERT):
-			insertControlContent(proposal.getContent(), proposal
-					.getCursorPosition());
-			break;
-		default:
-			// do nothing. Typically a listener is installed to handle this in
-			// a custom way.
-			break;
-		}
-
-		// In all cases, notify listeners of an accepted proposal.
-		notifyProposalAccepted(proposal);
-	}
-
-	/*
-	 * Set the text content of the control to the specified text, setting the
-	 * cursorPosition at the desired location within the new contents.
-	 */
-	private void setControlContent(String text, int cursorPosition) {
-		if (isValid()) {
-			// should already be false, but just in case.
-			watchModify = false;
-			controlContentAdapter.setControlContents(control, text,
-					cursorPosition);
-		}
-	}
-
-	/*
-	 * Insert the specified text into the control content, setting the
-	 * cursorPosition at the desired location within the new contents.
-	 */
-	private void insertControlContent(String text, int cursorPosition) {
-		if (isValid()) {
-			// should already be false, but just in case.
-			watchModify = false;
-			// Not all controls preserve their selection index when they lose
-			// focus, so we must set it explicitly here to what it was before
-			// the popup opened.
-			// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=127108
-			// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=139063
-			if (controlContentAdapter instanceof IControlContentAdapter2
-					&& selectionRange.x != -1) {
-				((IControlContentAdapter2) controlContentAdapter).setSelection(
-						control, selectionRange);
-			} else if (insertionPos != -1) {
-				controlContentAdapter.setCursorPosition(control, insertionPos);
-			}
-			controlContentAdapter.insertControlContents(control, text,
-					cursorPosition);
-		}
-	}
-
-	/*
-	 * Check that the control and content adapter are valid.
-	 */
-	private boolean isValid() {
-		return control != null && !control.isDisposed()
-				&& controlContentAdapter != null;
-	}
-
-	/*
-	 * Record the control's cursor position.
-	 */
-	private void recordCursorPosition() {
-		if (isValid()) {
-			IControlContentAdapter adapter = getControlContentAdapter();
-			insertionPos = adapter.getCursorPosition(control);
-			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=139063
-			if (adapter instanceof IControlContentAdapter2) {
-				selectionRange = ((IControlContentAdapter2) adapter)
-						.getSelection(control);
-			}
-
-		}
-	}
-
-	/*
-	 * Get the proposals from the proposal provider. Gets all of the proposals
-	 * without doing any filtering.
-	 */
-	private IContentProposal[] getProposals() {
-		if (proposalProvider == null || !isValid()) {
-			return null;
-		}
-		if (DEBUG) {
-			System.out.println(">>> obtaining proposals from provider"); //$NON-NLS-1$
-		}
-		int position = insertionPos;
-		if (position == -1) {
-			position = getControlContentAdapter().getCursorPosition(
-					getControl());
-		}
-		String contents = getControlContentAdapter().getControlContents(
-				getControl());
-		IContentProposal[] proposals = proposalProvider.getProposals(contents,
-				position);
-		return proposals;
-	}
-
-	/**
-	 * Autoactivation has been triggered. Open the popup using any specified
-	 * delay.
-	 */
-	private void autoActivate() {
-		if (autoActivationDelay > 0) {
-			Runnable runnable = new Runnable() {
-				public void run() {
-					receivedKeyDown = false;
-					try {
-						Thread.sleep(autoActivationDelay);
-					} catch (InterruptedException e) {
-					}
-					if (!isValid() || receivedKeyDown) {
-						return;
-					}
-					getControl().getDisplay().syncExec(new Runnable() {
-						public void run() {
-							openProposalPopup(true);
-						}
-					});
-				}
-			};
-			Thread t = new Thread(runnable);
-			t.start();
-		} else {
-			// Since we do not sleep, we must open the popup
-			// in an async exec. This is necessary because
-			// this method may be called in the middle of handling
-			// some event that will cause the cursor position or
-			// other important info to change as a result of this
-			// event occurring.
-			getControl().getDisplay().asyncExec(new Runnable() {
-				public void run() {
-					if (isValid()) {
-						openProposalPopup(true);
-					}
-				}
-			});
-		}
-	}
-
-	/*
-	 * A proposal has been accepted. Notify interested listeners.
-	 */
-	private void notifyProposalAccepted(IContentProposal proposal) {
-		if (DEBUG) {
-			System.out.println("Notify listeners - proposal accepted."); //$NON-NLS-1$
-		}
-		final Object[] listenerArray = proposalListeners.getListeners();
-		for (int i = 0; i < listenerArray.length; i++) {
-			((IContentProposalListener) listenerArray[i])
-					.proposalAccepted(proposal);
-		}
-	}
-
-	/*
-	 * The proposal popup has opened. Notify interested listeners.
-	 */
-	private void notifyPopupOpened() {
-		if (DEBUG) {
-			System.out.println("Notify listeners - popup opened."); //$NON-NLS-1$
-		}
-		final Object[] listenerArray = proposalListeners2.getListeners();
-		for (int i = 0; i < listenerArray.length; i++) {
-			((IContentProposalListener2) listenerArray[i])
-					.proposalPopupOpened(this);
-		}
-	}
-
-	/*
-	 * The proposal popup has closed. Notify interested listeners.
-	 */
-	private void notifyPopupClosed() {
-		if (DEBUG) {
-			System.out.println("Notify listeners - popup closed."); //$NON-NLS-1$
-		}
-		final Object[] listenerArray = proposalListeners2.getListeners();
-		for (int i = 0; i < listenerArray.length; i++) {
-			((IContentProposalListener2) listenerArray[i])
-					.proposalPopupClosed(this);
-		}
-	}
-
-	/**
-	 * Returns whether the content proposal popup has the focus. This includes
-	 * both the primary popup and any secondary info popup that may have focus.
-	 * 
-	 * @return <code>true</code> if the proposal popup or its secondary info
-	 *         popup has the focus
-	 * @since 3.4
-	 */
-	public boolean hasProposalPopupFocus() {
-		return popup != null && popup.hasFocus();
-	}
-
-	/*
-	 * Return whether the control content is empty
-	 */
-	private boolean isControlContentEmpty() {
-		return getControlContentAdapter().getControlContents(getControl())
-				.length() == 0;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java
deleted file mode 100644
index 783923f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java
+++ /dev/null
@@ -1,1207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MenuDetectEvent;
-import org.eclipse.swt.events.MenuDetectListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.Region;
-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.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * ControlDecoration renders an image decoration near a control. It allows
- * clients to specify an image and a position for the image relative to the
- * control. A ControlDecoration may be assigned description text, which can
- * optionally be shown when the user hovers over the image. Clients can decorate
- * any kind of control.
- * <p>
- * Decoration images always appear on the left or right side of the field, never
- * above or below it. Decorations can be positioned at the top, center, or
- * bottom of either side of the control. Future implementations may provide
- * additional positioning options for decorations.
- * <p>
- * ControlDecoration renders the image adjacent to the specified (already
- * created) control, with no guarantee that it won't be clipped or otherwise
- * obscured or overlapped by adjacent controls, including another
- * ControlDecoration placed in the same location. Clients should ensure that
- * there is adequate space adjacent to the control to show the decoration
- * properly.
- * <p>
- * Clients using ControlDecoration should typically ensure that enough margin
- * space is reserved for a decoration by altering the layout data margins,
- * although this is not assumed or required by the ControlDecoration
- * implementation.
- * <p>
- * This class is intended to be instantiated and used by clients. It is not
- * intended to be subclassed by clients.
- * 
- * @since 3.3
- * 
- * @see FieldDecoration
- * @see FieldDecorationRegistry
- */
-public class ControlDecoration {
-	/**
-	 * Debug flag for tracing
-	 */
-	private static boolean DEBUG = false;
-
-	/**
-	 * Cached platform flags for dealing with platform-specific issues.
-	 */
-	private static boolean CARBON = "carbon".equals(SWT.getPlatform()); //$NON-NLS-1$
-
-	/**
-	 * The associated control
-	 */
-	private Control control;
-
-	/**
-	 * The composite on which to render the decoration and hook mouse events, or
-	 * null if we are hooking all parent composites.
-	 */
-	private Composite composite;
-
-	/**
-	 * The associated image.
-	 */
-	private Image image;
-
-	/**
-	 * The associated description text.
-	 */
-	private String descriptionText;
-	/**
-	 * The position of the decoration.
-	 */
-	private int position;
-
-	/**
-	 * The decoration's visibility flag
-	 */
-	private boolean visible = true;
-
-	/**
-	 * Boolean indicating whether the decoration should only be shown when the
-	 * control has focus
-	 */
-	private boolean showOnlyOnFocus = false;
-
-	/**
-	 * Boolean indicating whether the decoration should show its description
-	 * text in a hover when the user hovers over the decoration.
-	 */
-	private boolean showHover = true;
-
-	/**
-	 * Margin width used between the decorator and the control.
-	 */
-	private int marginWidth = 0;
-
-	/**
-	 * Registered selection listeners.
-	 */
-	private ListenerList selectionListeners = new ListenerList();
-
-	/**
-	 * Registered menu detect listeners.
-	 */
-	private ListenerList menuDetectListeners = new ListenerList();
-
-	/**
-	 * The focus listener
-	 */
-	private FocusListener focusListener;
-
-	/**
-	 * The dispose listener
-	 */
-	private DisposeListener disposeListener;
-
-	/**
-	 * The paint listener installed for drawing the decoration
-	 */
-	private PaintListener paintListener;
-
-	/**
-	 * The mouse listener installed for tracking the hover
-	 */
-	private MouseTrackListener mouseTrackListener;
-
-	/**
-	 * The mouse move listener installed for tracking the hover
-	 */
-	private MouseMoveListener mouseMoveListener;
-
-	/**
-	 * The untyped listener installed for notifying external listeners
-	 */
-	private Listener compositeListener;
-
-	/**
-	 * Control that we last installed a move listener on. We only want one at a
-	 * time.
-	 */
-	private Control moveListeningTarget = null;
-
-	/**
-	 * Debug counter used to match add and remove listeners
-	 */
-	private int listenerInstalls = 0;
-
-	/**
-	 * The current rectangle used for tracking mouse moves
-	 */
-	private Rectangle decorationRectangle;
-
-	/**
-	 * An internal flag tracking whether we have focus. We use this rather than
-	 * isFocusControl() so that we can set the flag as soon as we get the focus
-	 * callback, rather than having to do an asyncExec in the middle of a focus
-	 * callback to ensure that isFocusControl() represents the outcome of the
-	 * event.
-	 */
-	private boolean hasFocus = false;
-
-	/**
-	 * The hover used for showing description text
-	 */
-	private Hover hover;
-
-	/**
-	 * The hover used to show a decoration image's description.
-	 */
-	class Hover {
-		private static final String EMPTY = ""; //$NON-NLS-1$
-
-		/**
-		 * Offset of info hover arrow from the left or right side.
-		 */
-		private int hao = 10;
-
-		/**
-		 * Width of info hover arrow.
-		 */
-		private int haw = 8;
-
-		/**
-		 * Height of info hover arrow.
-		 */
-		private int hah = 10;
-
-		/**
-		 * Margin around info hover text.
-		 */
-		private int hm = 2;
-
-		/**
-		 * This info hover's shell.
-		 */
-		Shell hoverShell;
-
-		/**
-		 * The info hover text.
-		 */
-		String text = EMPTY;
-
-		/**
-		 * The region used to manage the shell shape
-		 */
-		Region region;
-
-		/**
-		 * Boolean indicating whether the last computed polygon location had an
-		 * arrow on left. (true if left, false if right).
-		 */
-		boolean arrowOnLeft = true;
-
-		/*
-		 * Create a hover parented by the specified shell.
-		 */
-		Hover(Shell parent) {
-			final Display display = parent.getDisplay();
-			hoverShell = new Shell(parent, SWT.NO_TRIM | SWT.ON_TOP
-					| SWT.NO_FOCUS | SWT.TOOL);
-			hoverShell.setBackground(display
-					.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-			hoverShell.setForeground(display
-					.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
-			hoverShell.addPaintListener(new PaintListener() {
-				public void paintControl(PaintEvent pe) {
-					pe.gc.drawText(text, hm, hm);
-					if (!CARBON) {
-						pe.gc.drawPolygon(getPolygon(true));
-					}
-				}
-			});
-			hoverShell.addMouseListener(new MouseAdapter() {
-				public void mouseDown(MouseEvent e) {
-					hideHover();
-				}
-			});
-		}
-
-		/*
-		 * Compute a polygon that represents a hover with an arrow pointer. If
-		 * border is true, compute the polygon inset by 1-pixel border. Consult
-		 * the arrowOnLeft flag to determine which side the arrow is on.
-		 */
-		int[] getPolygon(boolean border) {
-			Point e = getExtent();
-			int b = border ? 1 : 0;
-			if (arrowOnLeft) {
-				return new int[] { 0, 0, e.x - b, 0, e.x - b, e.y - b,
-						hao + haw, e.y - b, hao + haw / 2, e.y + hah - b, hao,
-						e.y - b, 0, e.y - b, 0, 0 };
-			}
-			return new int[] { 0, 0, e.x - b, 0, e.x - b, e.y - b,
-					e.x - hao - b, e.y - b, e.x - hao - haw / 2, e.y + hah - b,
-					e.x - hao - haw, e.y - b, 0, e.y - b, 0, 0 };
-		}
-
-		/*
-		 * Dispose the hover, it is no longer needed. Dispose any resources
-		 * allocated by the hover.
-		 */
-		void dispose() {
-			if (!hoverShell.isDisposed()) {
-				hoverShell.dispose();
-			}
-			if (region != null) {
-				region.dispose();
-			}
-		}
-
-		/*
-		 * Set the visibility of the hover.
-		 */
-		void setVisible(boolean visible) {
-			if (visible) {
-				if (!hoverShell.isVisible()) {
-					hoverShell.setVisible(true);
-				}
-			} else {
-				if (hoverShell.isVisible()) {
-					hoverShell.setVisible(false);
-				}
-			}
-		}
-
-		/*
-		 * Set the text of the hover to the specified text. Recompute the size
-		 * and location of the hover to hover near the decoration rectangle,
-		 * pointing the arrow toward the target control.
-		 */
-		void setText(String t, Rectangle decorationRectangle,
-				Control targetControl) {
-			if (t == null) {
-				t = EMPTY;
-			}
-			if (!t.equals(text)) {
-				Point oldSize = getExtent();
-				text = t;
-				hoverShell.redraw();
-				Point newSize = getExtent();
-				if (!oldSize.equals(newSize)) {
-					// set a flag that indicates the direction of arrow
-					arrowOnLeft = decorationRectangle.x <= targetControl
-							.getLocation().x;
-					setNewShape();
-				}
-			}
-
-			Point extent = getExtent();
-			int y = -extent.y - hah + 1;
-			int x = arrowOnLeft ? -hao + haw / 2 : -extent.x + hao + haw / 2;
-
-			hoverShell.setLocation(control.getParent().toDisplay(
-					decorationRectangle.x + x, decorationRectangle.y + y));
-		}
-
-		/*
-		 * Return whether or not the hover (shell) is visible.
-		 */
-		boolean isVisible() {
-			return hoverShell.isVisible();
-		}
-
-		/*
-		 * Compute the extent of the hover for the current text.
-		 */
-		Point getExtent() {
-			GC gc = new GC(hoverShell);
-			Point e = gc.textExtent(text);
-			gc.dispose();
-			e.x += hm * 2;
-			e.y += hm * 2;
-			return e;
-		}
-
-		/*
-		 * Compute a new shape for the hover shell.
-		 */
-		void setNewShape() {
-			Region oldRegion = region;
-			region = new Region();
-			region.add(getPolygon(false));
-			hoverShell.setRegion(region);
-			if (oldRegion != null) {
-				oldRegion.dispose();
-			}
-
-		}
-	}
-
-	/**
-	 * Construct a ControlDecoration for decorating the specified control at the
-	 * specified position relative to the control. Render the decoration on top
-	 * of any Control that happens to appear at the specified location.
-	 * <p>
-	 * SWT constants are used to specify the position of the decoration relative
-	 * to the control. The position should include style bits describing both
-	 * the vertical and horizontal orientation. <code>SWT.LEFT</code> and
-	 * <code>SWT.RIGHT</code> describe the horizontal placement of the
-	 * decoration relative to the control, and the constants
-	 * <code>SWT.TOP</code>, <code>SWT.CENTER</code>, and
-	 * <code>SWT.BOTTOM</code> describe the vertical alignment of the
-	 * decoration relative to the control. Decorations always appear on either
-	 * the left or right side of the control, never above or below it. For
-	 * example, a decoration appearing on the left side of the field, at the
-	 * top, is specified as SWT.LEFT | SWT.TOP. If no position style bits are
-	 * specified, the control decoration will be positioned to the left and
-	 * center of the control (<code>SWT.LEFT | SWT.CENTER</code>).
-	 * </p>
-	 * 
-	 * @param control
-	 *            the control to be decorated
-	 * @param position
-	 *            bit-wise or of position constants (<code>SWT.TOP</code>,
-	 *            <code>SWT.BOTTOM</code>, <code>SWT.LEFT</code>,
-	 *            <code>SWT.RIGHT</code>, and <code>SWT.CENTER</code>).
-	 */
-	public ControlDecoration(Control control, int position) {
-		this(control, position, null);
-
-	}
-
-	/**
-	 * Construct a ControlDecoration for decorating the specified control at the
-	 * specified position relative to the control. Render the decoration only on
-	 * the specified Composite or its children. The decoration will be clipped
-	 * if it does not appear within the visible bounds of the composite or its
-	 * child composites.
-	 * <p>
-	 * SWT constants are used to specify the position of the decoration relative
-	 * to the control. The position should include style bits describing both
-	 * the vertical and horizontal orientation. <code>SWT.LEFT</code> and
-	 * <code>SWT.RIGHT</code> describe the horizontal placement of the
-	 * decoration relative to the control, and the constants
-	 * <code>SWT.TOP</code>, <code>SWT.CENTER</code>, and
-	 * <code>SWT.BOTTOM</code> describe the vertical alignment of the
-	 * decoration relative to the control. Decorations always appear on either
-	 * the left or right side of the control, never above or below it. For
-	 * example, a decoration appearing on the left side of the field, at the
-	 * top, is specified as SWT.LEFT | SWT.TOP. If no position style bits are
-	 * specified, the control decoration will be positioned to the left and
-	 * center of the control (<code>SWT.LEFT | SWT.CENTER</code>).
-	 * </p>
-	 * 
-	 * @param control
-	 *            the control to be decorated
-	 * @param position
-	 *            bit-wise or of position constants (<code>SWT.TOP</code>,
-	 *            <code>SWT.BOTTOM</code>, <code>SWT.LEFT</code>,
-	 *            <code>SWT.RIGHT</code>, and <code>SWT.CENTER</code>).
-	 * @param composite
-	 *            The SWT composite within which the decoration should be
-	 *            rendered. The decoration will be clipped to this composite,
-	 *            but it may be rendered on a child of the composite. The
-	 *            decoration will not be visible if the specified composite or
-	 *            its child composites are not visible in the space relative to
-	 *            the control, where the decoration is to be rendered. If this
-	 *            value is <code>null</code>, then the decoration will be
-	 *            rendered on whichever composite (or composites) are located in
-	 *            the specified position.
-	 */
-	public ControlDecoration(Control control, int position, Composite composite) {
-		this.position = position;
-		this.control = control;
-		this.composite = composite;
-
-		addControlListeners();
-
-	}
-
-	/**
-	 * Adds the listener to the collection of listeners who will be notified
-	 * when the platform-specific context menu trigger has occurred, by sending
-	 * it one of the messages defined in the <code>MenuDetectListener</code>
-	 * interface.
-	 * <p>
-	 * The <code>widget</code> field in the SelectionEvent will contain the
-	 * Composite on which the decoration is rendered that received the click.
-	 * The <code>x</code> and <code>y</code> fields will be in coordinates
-	 * relative to the display. The <code>data</code> field will contain the
-	 * decoration that received the event.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            the listener which should be notified
-	 * 
-	 * @see org.eclipse.swt.events.MenuDetectListener
-	 * @see org.eclipse.swt.events.MenuDetectEvent
-	 * @see #removeMenuDetectListener
-	 */
-	public void addMenuDetectListener(MenuDetectListener listener) {
-		menuDetectListeners.add(listener);
-	}
-
-	/**
-	 * Removes the listener from the collection of listeners who will be
-	 * notified when the platform-specific context menu trigger has occurred.
-	 * 
-	 * @param listener
-	 *            the listener which should no longer be notified. This message
-	 *            has no effect if the listener was not previously added to the
-	 *            receiver.
-	 * 
-	 * @see org.eclipse.swt.events.MenuDetectListener
-	 * @see #addMenuDetectListener
-	 */
-	public void removeMenuDetectListener(MenuDetectListener listener) {
-		menuDetectListeners.remove(listener);
-	}
-
-	/**
-	 * Adds the listener to the collection of listeners who will be notified
-	 * when the decoration is selected, by sending it one of the messages
-	 * defined in the <code>SelectionListener</code> interface.
-	 * <p>
-	 * <code>widgetSelected</code> is called when the decoration is selected
-	 * (by mouse click). <code>widgetDefaultSelected</code> is called when the
-	 * decoration is double-clicked.
-	 * </p>
-	 * <p>
-	 * The <code>widget</code> field in the SelectionEvent will contain the
-	 * Composite on which the decoration is rendered that received the click.
-	 * The <code>x</code> and <code>y</code> fields will be in coordinates
-	 * relative to that widget. The <code>data</code> field will contain the
-	 * decoration that received the event.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            the listener which should be notified
-	 * 
-	 * @see org.eclipse.swt.events.SelectionListener
-	 * @see org.eclipse.swt.events.SelectionEvent
-	 * @see #removeSelectionListener
-	 */
-	public void addSelectionListener(SelectionListener listener) {
-		selectionListeners.add(listener);
-	}
-
-	/**
-	 * Removes the listener from the collection of listeners who will be
-	 * notified when the decoration is selected.
-	 * 
-	 * @param listener
-	 *            the listener which should no longer be notified. This message
-	 *            has no effect if the listener was not previously added to the
-	 *            receiver.
-	 * 
-	 * @see org.eclipse.swt.events.SelectionListener
-	 * @see #addSelectionListener
-	 */
-	public void removeSelectionListener(SelectionListener listener) {
-		selectionListeners.remove(listener);
-	}
-
-	/**
-	 * Dispose this ControlDecoration. Unhook any listeners that have been
-	 * installed on the target control. This method has no effect if the
-	 * receiver is already disposed.
-	 */
-	public void dispose() {
-		if (control == null) {
-			return;
-		}
-		if (hover != null) {
-			hover.dispose();
-			hover = null;
-		}
-		removeControlListeners();
-		control = null;
-	}
-
-	/**
-	 * Get the control that is decorated by the receiver.
-	 * 
-	 * @return the Control decorated by the receiver. May be <code>null</code>
-	 *         if the control has been uninstalled.
-	 */
-	public Control getControl() {
-		return control;
-	}
-
-	/**
-	 * Add any listeners needed on the target control and on the composite where
-	 * the decoration is to be rendered.
-	 */
-	private void addControlListeners() {
-		disposeListener = new DisposeListener() {
-			public void widgetDisposed(DisposeEvent event) {
-				dispose();
-			}
-		};
-		printAddListener(control, "DISPOSE"); //$NON-NLS-1$
-		control.addDisposeListener(disposeListener);
-
-		focusListener = new FocusListener() {
-			public void focusGained(FocusEvent event) {
-				hasFocus = true;
-				if (showOnlyOnFocus) {
-					update();
-				}
-			}
-
-			public void focusLost(FocusEvent event) {
-				hasFocus = false;
-				if (showOnlyOnFocus) {
-					update();
-				}
-			}
-		};
-		printAddListener(control, "FOCUS"); //$NON-NLS-1$
-		control.addFocusListener(focusListener);
-
-		// Listener for painting the decoration
-		paintListener = new PaintListener() {
-			public void paintControl(PaintEvent event) {
-				Control control = (Control) event.widget;
-				Rectangle rect = getDecorationRectangle(control);
-				if (shouldShowDecoration()) {
-					event.gc.drawImage(getImage(), rect.x, rect.y);
-				}
-			}
-		};
-
-		// Listener for tracking the end of a hover. Only installed
-		// after a hover begins.
-		mouseMoveListener = new MouseMoveListener() {
-			public void mouseMove(MouseEvent event) {
-				if (showHover) {
-					if (!decorationRectangle.contains(event.x, event.y)) {
-						hideHover();
-						// No need to listen any longer
-						printRemoveListener(event.widget, "MOUSEMOVE"); //$NON-NLS-1$
-						((Control) event.widget)
-								.removeMouseMoveListener(mouseMoveListener);
-						moveListeningTarget = null;
-					}
-				}
-			}
-		};
-
-		// Listener for tracking the beginning of a hover. Always installed.
-		mouseTrackListener = new MouseTrackListener() {
-			public void mouseExit(MouseEvent event) {
-				// Just in case we didn't catch it before.
-				Control target = (Control) event.widget;
-				if (target == moveListeningTarget) {
-					printRemoveListener(target, "MOUSEMOVE"); //$NON-NLS-1$
-					target.removeMouseMoveListener(mouseMoveListener);
-					moveListeningTarget = null;
-				}
-				hideHover();
-			}
-
-			public void mouseHover(MouseEvent event) {
-				if (showHover) {
-					decorationRectangle = getDecorationRectangle((Control) event.widget);
-					if (decorationRectangle.contains(event.x, event.y)) {
-						showHoverText(getDescriptionText());
-						Control target = (Control) event.widget;
-						if (moveListeningTarget == null) {
-							printAddListener(target, "MOUSEMOVE"); //$NON-NLS-1$
-							target.addMouseMoveListener(mouseMoveListener);
-							moveListeningTarget = target;
-						} else if (target != moveListeningTarget) {
-							printRemoveListener(moveListeningTarget,
-									"MOUSEMOVE"); //$NON-NLS-1$
-							moveListeningTarget
-									.removeMouseMoveListener(mouseMoveListener);
-							printAddListener(target, "MOUSEMOVE"); //$NON-NLS-1$
-							target.addMouseMoveListener(mouseMoveListener);
-							moveListeningTarget = target;
-						} else {
-							// It is already installed on this control.
-						}
-					}
-				}
-			}
-
-			public void mouseEnter(MouseEvent event) {
-				// Nothing to do until a hover occurs.
-			}
-		};
-
-		compositeListener = new Listener() {
-			public void handleEvent(Event event) {
-				// Don't forward events if decoration is not showing
-				if (!visible) {
-					return;
-				}
-				// Notify listeners if any are registered.
-				switch (event.type) {
-				case SWT.MouseDown:
-					if (!selectionListeners.isEmpty())
-						notifySelectionListeners(event);
-					break;
-				case SWT.MouseDoubleClick:
-					if (!selectionListeners.isEmpty())
-						notifySelectionListeners(event);
-					break;
-				case SWT.MenuDetect:
-					if (!menuDetectListeners.isEmpty())
-						notifyMenuDetectListeners(event);
-					break;
-				}
-			}
-		};
-
-		// We do not know which parent in the control hierarchy
-		// is providing the decoration space, so hook all the way up, until
-		// the shell or the specified parent composite is reached.
-		Composite c = control.getParent();
-		while (c != null) {
-			installCompositeListeners(c);
-			if (composite != null && composite == c) {
-				// We just installed on the specified composite, so stop.
-				c = null;
-			} else if (c instanceof Shell) {
-				// We just installed on a shell, so don't go further
-				c = null;
-			} else {
-				c = c.getParent();
-			}
-		}
-		// force a redraw of the decoration area so our paint listener
-		// is notified.
-		update();
-	}
-
-	/*
-	 * Install the listeners used to paint and track mouse events on the
-	 * composite.
-	 */
-	private void installCompositeListeners(Composite c) {
-		if (!c.isDisposed()) {
-			printAddListener(c, "PAINT"); //$NON-NLS-1$
-			c.addPaintListener(paintListener);
-			printAddListener(c, "MOUSETRACK"); //$NON-NLS-1$
-			c.addMouseTrackListener(mouseTrackListener);
-			printAddListener(c, "SWT.MenuDetect"); //$NON-NLS-1$
-			c.addListener(SWT.MenuDetect, compositeListener);
-			printAddListener(c, "SWT.MouseDown"); //$NON-NLS-1$
-			c.addListener(SWT.MouseDown, compositeListener);
-			printAddListener(c, "SWT.MouseDoubleClick"); //$NON-NLS-1$
-			c.addListener(SWT.MouseDoubleClick, compositeListener);
-		}
-	}
-
-	/*
-	 * Remove the listeners used to paint and track mouse events on the
-	 * composite.
-	 */
-	private void removeCompositeListeners(Composite c) {
-		if (!c.isDisposed()) {
-			printRemoveListener(c, "PAINT"); //$NON-NLS-1$
-			c.removePaintListener(paintListener);
-			printRemoveListener(c, "MOUSETRACK"); //$NON-NLS-1$
-			c.removeMouseTrackListener(mouseTrackListener);
-			printRemoveListener(c, "SWT.MenuDetect"); //$NON-NLS-1$
-			c.removeListener(SWT.MenuDetect, compositeListener);
-			printRemoveListener(c, "SWT.MouseDown"); //$NON-NLS-1$
-			c.removeListener(SWT.MouseDown, compositeListener);
-			printRemoveListener(c, "SWT.MouseDoubleClick"); //$NON-NLS-1$
-			c.removeListener(SWT.MouseDoubleClick, compositeListener);
-		}
-	}
-
-	private void notifySelectionListeners(Event event) {
-		if (!(event.widget instanceof Control)) {
-			return;
-		}
-		if (getDecorationRectangle((Control) event.widget).contains(event.x,
-				event.y)) {
-			SelectionEvent clientEvent = new SelectionEvent(event);
-			clientEvent.data = this;
-			if (getImage() != null) {
-				clientEvent.height = getImage().getBounds().height;
-				clientEvent.width = getImage().getBounds().width;
-			}
-			Object[] listeners;
-			switch (event.type) {
-			case SWT.MouseDoubleClick:
-				if (event.button == 1) {
-					listeners = selectionListeners.getListeners();
-					for (int i = 0; i < listeners.length; i++) {
-						((SelectionListener) listeners[i])
-								.widgetDefaultSelected(clientEvent);
-					}
-				}
-				break;
-			case SWT.MouseDown:
-				if (event.button == 1) {
-					listeners = selectionListeners.getListeners();
-					for (int i = 0; i < listeners.length; i++) {
-						((SelectionListener) listeners[i])
-								.widgetSelected(clientEvent);
-					}
-				}
-				break;
-			}
-		}
-	}
-
-	private void notifyMenuDetectListeners(Event event) {
-		if (getDecorationRectangle(null).contains(event.x, event.y)) {
-			MenuDetectEvent clientEvent = new MenuDetectEvent(event);
-			clientEvent.data = this;
-			Object[] listeners = menuDetectListeners.getListeners();
-			for (int i = 0; i < listeners.length; i++) {
-				((MenuDetectListener) listeners[i]).menuDetected(clientEvent);
-
-			}
-		}
-	}
-
-	/**
-	 * Show the specified text using the same hover dialog as is used to show
-	 * decorator descriptions. When {@link #setShowHover(boolean)} has been set
-	 * to <code>true</code>, a decoration's description text will be shown in
-	 * an info hover over the field's control whenever the mouse hovers over the
-	 * decoration. This method can be used to show a decoration's description
-	 * text at other times (such as when the control receives focus), or to show
-	 * other text associated with the field. The hover will not be shown if the
-	 * decoration is hidden.
-	 * 
-	 * @param text
-	 *            the text to be shown in the info hover, or <code>null</code>
-	 *            if no text should be shown.
-	 */
-	public void showHoverText(String text) {
-		if (control == null) {
-			return;
-		}
-		showHoverText(text, control);
-	}
-
-	/**
-	 * Hide any hover popups that are currently showing on the control. When
-	 * {@link #setShowHover(boolean)} has been set to <code>true</code>, a
-	 * decoration's description text will be shown in an info hover over the
-	 * field's control as long as the mouse hovers over the decoration, and will
-	 * be hidden when the mouse exits the decoration. This method can be used to
-	 * hide a hover, whether it was shown explicitly using
-	 * {@link #showHoverText(String)}, or was showing because the user was
-	 * hovering in the decoration.
-	 * <p>
-	 * This message has no effect if there is no current hover.
-	 * 
-	 */
-	public void hideHover() {
-		if (hover != null) {
-			hover.setVisible(false);
-		}
-	}
-
-	/**
-	 * Show the control decoration. This message has no effect if the decoration
-	 * is already showing. If {@link #setShowOnlyOnFocus(boolean)} is set to
-	 * <code>true</code>, the decoration will only be shown if the control
-	 * has focus.
-	 */
-	public void show() {
-		if (!visible) {
-			visible = true;
-			update();
-		}
-	}
-
-	/**
-	 * Hide the control decoration and any associated hovers. This message has
-	 * no effect if the decoration is already hidden.
-	 */
-	public void hide() {
-		if (visible) {
-			visible = false;
-			hideHover();
-			update();
-		}
-	}
-
-	/**
-	 * Get the description text that may be shown in a hover for this
-	 * decoration.
-	 * 
-	 * @return the text to be shown as a description for the decoration, or
-	 *         <code>null</code> if none has been set.
-	 */
-	public String getDescriptionText() {
-		return descriptionText;
-	}
-
-	/**
-	 * Set the image shown in this control decoration. Update the rendered
-	 * decoration.
-	 * 
-	 * @param text
-	 *            the text to be shown as a description for the decoration, or
-	 *            <code>null</code> if none has been set.
-	 */
-	public void setDescriptionText(String text) {
-		this.descriptionText = text;
-		update();
-	}
-
-	/**
-	 * Get the image shown in this control decoration.
-	 * 
-	 * @return the image to be shown adjacent to the control, or
-	 *         <code>null</code> if one has not been set.
-	 */
-	public Image getImage() {
-		return image;
-	}
-
-	/**
-	 * Set the image shown in this control decoration. Update the rendered
-	 * decoration.
-	 * 
-	 * @param image
-	 *            the image to be shown adjacent to the control. Should never be
-	 *            <code>null</code>.
-	 */
-	public void setImage(Image image) {
-		this.image = image;
-		update();
-	}
-
-	/**
-	 * Get the boolean that controls whether the decoration is shown only when
-	 * the control has focus. The default value of this setting is
-	 * <code>false</code>.
-	 * 
-	 * @return <code>true</code> if the decoration should only be shown when
-	 *         the control has focus, and <code>false</code> if it should
-	 *         always be shown. Note that if the control is not capable of
-	 *         receiving focus (<code>SWT.NO_FOCUS</code>), then the
-	 *         decoration will never show when this value is <code>true</code>.
-	 */
-	public boolean getShowOnlyOnFocus() {
-		return showOnlyOnFocus;
-	}
-
-	/**
-	 * Set the boolean that controls whether the decoration is shown only when
-	 * the control has focus. The default value of this setting is
-	 * <code>false</code>.
-	 * 
-	 * @param showOnlyOnFocus
-	 *            <code>true</code> if the decoration should only be shown
-	 *            when the control has focus, and <code>false</code> if it
-	 *            should always be shown. Note that if the control is not
-	 *            capable of receiving focus (<code>SWT.NO_FOCUS</code>),
-	 *            then the decoration will never show when this value is
-	 *            <code>true</code>.
-	 */
-	public void setShowOnlyOnFocus(boolean showOnlyOnFocus) {
-		this.showOnlyOnFocus = showOnlyOnFocus;
-		update();
-	}
-
-	/**
-	 * Get the boolean that controls whether the decoration's description text
-	 * should be shown in a hover when the user hovers over the decoration. The
-	 * default value of this setting is <code>true</code>.
-	 * 
-	 * @return <code>true</code> if a hover popup containing the decoration's
-	 *         description text should be shown when the user hovers over the
-	 *         decoration, and <code>false</code> if a hover should not be
-	 *         shown.
-	 */
-	public boolean getShowHover() {
-		return showHover;
-	}
-
-	/**
-	 * Set the boolean that controls whether the decoration's description text
-	 * should be shown in a hover when the user hovers over the decoration. The
-	 * default value of this setting is <code>true</code>.
-	 * 
-	 * @param showHover
-	 *            <code>true</code> if a hover popup containing the
-	 *            decoration's description text should be shown when the user
-	 *            hovers over the decoration, and <code>false</code> if a
-	 *            hover should not be shown.
-	 */
-	public void setShowHover(boolean showHover) {
-		this.showHover = showHover;
-		update();
-	}
-
-	/**
-	 * Get the margin width in pixels that should be used between the decorator
-	 * and the horizontal edge of the control. The default value of this setting
-	 * is <code>0</code>.
-	 * 
-	 * @return the number of pixels that should be reserved between the
-	 *         horizontal edge of the control and the adjacent edge of the
-	 *         decoration.
-	 */
-	public int getMarginWidth() {
-		return marginWidth;
-	}
-
-	/**
-	 * Set the margin width in pixels that should be used between the decorator
-	 * and the horizontal edge of the control. The default value of this setting
-	 * is <code>0</code>.
-	 * 
-	 * @param marginWidth
-	 *            the number of pixels that should be reserved between the
-	 *            horizontal edge of the control and the adjacent edge of the
-	 *            decoration.
-	 */
-	public void setMarginWidth(int marginWidth) {
-		this.marginWidth = marginWidth;
-		update();
-	}
-
-	/**
-	 * Something has changed, requiring redraw. Redraw the decoration and update
-	 * the hover text if appropriate.
-	 */
-	protected void update() {
-		if (control == null || control.isDisposed()) {
-			return;
-		}
-		Rectangle rect = getDecorationRectangle(control.getShell());
-		// Redraw this rectangle in all children
-		control.getShell()
-				.redraw(rect.x, rect.y, rect.width, rect.height, true);
-		control.getShell().update();
-		if (hover != null && getDescriptionText() != null) {
-			hover.setText(getDescriptionText(), getDecorationRectangle(control
-					.getParent()), control);
-		}
-	}
-
-	/*
-	 * Show the specified text in the hover, positioning the hover near the
-	 * specified control.
-	 */
-	private void showHoverText(String text, Control hoverNear) {
-		// If we aren't to show a hover, don't do anything.
-		if (!showHover) {
-			return;
-		}
-
-		// If we are not visible, don't show the hover.
-		if (!visible) {
-			return;
-		}
-		// If there is no text, don't do anything.
-		if (text == null) {
-			hideHover();
-			return;
-		}
-
-		// If there is no control, nothing to do
-		if (control == null) {
-			return;
-		}
-		// Create the hover if it's not showing
-		if (hover == null) {
-			hover = new Hover(hoverNear.getShell());
-		}
-		hover.setText(text, getDecorationRectangle(control.getParent()),
-				control);
-		hover.setVisible(true);
-	}
-
-	/*
-	 * Remove any listeners installed on the controls.
-	 */
-	private void removeControlListeners() {
-		if (control == null) {
-			return;
-		}
-		printRemoveListener(control, "FOCUS"); //$NON-NLS-1$
-		control.removeFocusListener(focusListener);
-		focusListener = null;
-
-		printRemoveListener(control, "DISPOSE"); //$NON-NLS-1$
-		control.removeDisposeListener(disposeListener);
-		disposeListener = null;
-
-		Composite c = control.getParent();
-		while (c != null) {
-			removeCompositeListeners(c);
-			if (composite != null && composite == c) {
-				// We previously installed listeners only to the specified
-				// composite, so stop.
-				c = null;
-			} else if (c instanceof Shell) {
-				// We previously installed listeners only up to the first Shell
-				// encountered, so stop.
-				c = null;
-			} else {
-				c = c.getParent();
-			}
-		}
-		paintListener = null;
-		mouseTrackListener = null;
-		compositeListener = null;
-
-		// We may have a remaining mouse move listener installed
-		if (moveListeningTarget != null) {
-			printRemoveListener(moveListeningTarget, "MOUSEMOVE"); //$NON-NLS-1$
-			moveListeningTarget.removeMouseMoveListener(mouseMoveListener);
-			moveListeningTarget = null;
-			mouseMoveListener = null;
-		}
-		if (DEBUG) {
-			if (listenerInstalls > 0) {
-				System.out.println("LISTENER LEAK>>>CHECK TRACE ABOVE"); //$NON-NLS-1$
-			} else if (listenerInstalls < 0) {
-				System.out
-						.println("REMOVED UNREGISTERED LISTENERS>>>CHECK TRACE ABOVE"); //$NON-NLS-1$
-			} else {
-				System.out.println("ALL INSTALLED LISTENERS WERE REMOVED."); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Return the rectangle in which the decoration should be rendered, in
-	 * coordinates relative to the specified control. If the specified control
-	 * is null, return the rectangle in display coordinates.
-	 * 
-	 * @param targetControl
-	 *            the control whose coordinates should be used
-	 * @return the rectangle in which the decoration should be rendered
-	 */
-	protected Rectangle getDecorationRectangle(Control targetControl) {
-		if (getImage() == null || control == null) {
-			return new Rectangle(0, 0, 0, 0);
-		}
-		// Compute the bounds first relative to the control's parent.
-		Rectangle imageBounds = getImage().getBounds();
-		Rectangle controlBounds = control.getBounds();
-		int x, y;
-		// Compute x
-		if ((position & SWT.RIGHT) == SWT.RIGHT) {
-			x = controlBounds.x + controlBounds.width + marginWidth;
-		} else {
-			// default is left
-			x = controlBounds.x - imageBounds.width - marginWidth;
-		}
-		// Compute y
-		if ((position & SWT.TOP) == SWT.TOP) {
-			y = controlBounds.y;
-		} else if ((position & SWT.BOTTOM) == SWT.BOTTOM) {
-			y = controlBounds.y + control.getBounds().height
-					- imageBounds.height;
-		} else {
-			// default is center
-			y = controlBounds.y
-					+ (control.getBounds().height - imageBounds.height) / 2;
-		}
-
-		// Now convert to coordinates relative to the target control.
-		Point globalPoint = control.getParent().toDisplay(x, y);
-		Point targetPoint;
-		if (targetControl == null) {
-			targetPoint = globalPoint;
-		} else {
-			targetPoint = targetControl.toControl(globalPoint);
-		}
-		return new Rectangle(targetPoint.x, targetPoint.y, imageBounds.width,
-				imageBounds.height);
-	}
-
-	/*
-	 * Return true if the decoration should be shown, false if it should not.
-	 */
-	private boolean shouldShowDecoration() {
-		if (!visible) {
-			return false;
-		}
-		if (control == null || control.isDisposed() || getImage() == null) {
-			return false;
-		}
-
-		if (!control.isVisible()) {
-			return false;
-		}
-		if (showOnlyOnFocus) {
-			return hasFocus;
-		}
-		return true;
-	}
-
-	/*
-	 * If in debug mode, print info about adding the specified listener.
-	 */
-	private void printAddListener(Widget widget, String listenerType) {
-		listenerInstalls++;
-		if (DEBUG) {
-			System.out
-					.println("Added listener>>>" + listenerType + " to>>>" + widget); //$NON-NLS-1$//$NON-NLS-2$
-		}
-	}
-
-	/*
-	 * If in debug mode, print info about adding the specified listener.
-	 */
-	private void printRemoveListener(Widget widget, String listenerType) {
-		listenerInstalls--;
-		if (DEBUG) {
-			System.out
-					.println("Removed listener>>>" + listenerType + " from>>>" + widget); //$NON-NLS-1$//$NON-NLS-2$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/DecoratedField.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/DecoratedField.java
deleted file mode 100644
index ac69204..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/DecoratedField.java
+++ /dev/null
@@ -1,873 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Region;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * DecoratedField manages image decorations around a control. It allows clients
- * to specify an image decoration and a position for the decoration relative to
- * the field. Decorations may be assigned descriptions, which are shown when the
- * user hovers over the decoration. Clients can decorate any kind of control by
- * supplying a {@link IControlCreator} to create the control that is decorated.
- * <p>
- * Decorations always appear on either horizontal side of the field, never above
- * or below it. Decorations can be positioned at the top or bottom of either
- * side. Future implementations may provide additional positioning options for
- * decorations.
- * <p>
- * By default, DecoratedField will consult the {@link FieldDecorationRegistry}
- * to determine how much space should be reserved for each decoration. This
- * allows fields with decorations from different sources to align properly on
- * the same dialog, since the registry tracks the size of all decorations
- * registered. Therefore, it is recommended, but not required, that clients of
- * DecoratedField register the decorations used. In cases where alignment
- * between different fields is not a concern, clients can use
- * <code>setUseMaximumDecorationWidth(false)</code> and need not register
- * their decorations.
- * <p>
- * This class is not intended to be subclassed.
- * 
- * @since 3.2
- * @deprecated As of 3.3, clients should use {@link ControlDecoration} instead.
- */
-public class DecoratedField {
-
-	/**
-	 * Cached platform flags for dealing with platform-specific issues.
-	 */
-	private static boolean CARBON = "carbon".equals(SWT.getPlatform()); //$NON-NLS-1$
-
-	/**
-	 * Constants describing the array indices used to hold the decorations in
-	 * array slots.
-	 */
-
-	private static final int LEFT_TOP = 0;
-
-	private static final int LEFT_BOTTOM = 1;
-
-	private static final int RIGHT_TOP = 2;
-
-	private static final int RIGHT_BOTTOM = 3;
-
-	private static final int DECORATION_SLOTS = 4;
-
-	/**
-	 * Simple data structure class for specifying the internals for a field
-	 * decoration. This class contains data specific to the implementation of
-	 * field decorations as labels attached to the field. Clients should use
-	 * <code>FieldDecoration</code> for specifying a decoration.
-	 */
-	private class FieldDecorationData {
-
-		/* Package */FieldDecoration decoration;
-
-		/* Package */Label label;
-
-		/* Package */FormData data;
-
-		/* Package */boolean showOnFocus;
-
-		/* Package */boolean visible = true;
-
-		/**
-		 * Create a decoration data representing the specified decoration, using
-		 * the specified label and form data for its representation.
-		 * 
-		 * @param decoration
-		 *            the decoration whose data is kept.
-		 * @param label
-		 *            the label used to represent the decoration.
-		 * @param formData
-		 *            the form data used to attach the decoration to its field.
-		 * @param showOnFocus
-		 *            a boolean specifying whether the decoration should only be
-		 *            shown when the field has focus.
-		 */
-		FieldDecorationData(FieldDecoration decoration, Label label,
-				FormData formData, boolean showOnFocus) {
-			this.decoration = decoration;
-			this.label = label;
-			this.data = formData;
-			this.showOnFocus = showOnFocus;
-		}
-	}
-
-	/**
-	 * Decorations keyed by position.
-	 */
-	private FieldDecorationData[] decDatas = new FieldDecorationData[DECORATION_SLOTS];
-
-	/**
-	 * The associated control
-	 */
-	private Control control;
-
-	/**
-	 * The composite with form layout used to manage decorations.
-	 */
-	private Composite form;
-
-	/**
-	 * The boolean that indicates whether the maximum decoration width is used
-	 * when allocating space for decorations.
-	 */
-	private boolean useMaxDecorationWidth = true;
-
-	/**
-	 * The hover used for showing description text
-	 */
-	private Hover hover;
-
-	/**
-	 * The hover used to show a decoration image's description.
-	 */
-	class Hover {
-		private static final String EMPTY = ""; //$NON-NLS-1$
-
-		/**
-		 * Offset of info hover arrow from the left or right side.
-		 */
-		private int hao = 10;
-
-		/**
-		 * Width of info hover arrow.
-		 */
-		private int haw = 8;
-
-		/**
-		 * Height of info hover arrow.
-		 */
-		private int hah = 10;
-
-		/**
-		 * Margin around info hover text.
-		 */
-		private int hm = 2;
-
-		/**
-		 * This info hover's shell.
-		 */
-		Shell hoverShell;
-
-		/**
-		 * The info hover text.
-		 */
-		String text = EMPTY;
-
-		/**
-		 * The region used to manage the shell shape
-		 */
-		Region region;
-
-		/**
-		 * Boolean indicating whether the last computed polygon location had an
-		 * arrow on left. (true if left, false if right).
-		 */
-		boolean arrowOnLeft = true;
-
-		/*
-		 * Create a hover parented by the specified shell.
-		 */
-		Hover(Shell parent) {
-			final Display display = parent.getDisplay();
-			hoverShell = new Shell(parent, SWT.NO_TRIM | SWT.ON_TOP
-					| SWT.NO_FOCUS | SWT.TOOL);
-			hoverShell.setBackground(display
-					.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-			hoverShell.setForeground(display
-					.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
-			hoverShell.addPaintListener(new PaintListener() {
-				public void paintControl(PaintEvent pe) {
-					pe.gc.drawString(text, hm, hm);
-					if (!CARBON) {
-						pe.gc.drawPolygon(getPolygon(true));
-					}
-				}
-			});
-			hoverShell.addMouseListener(new MouseAdapter() {
-				public void mouseDown(MouseEvent e) {
-					hideHover();
-				}
-			});
-		}
-
-		/*
-		 * Compute a polygon that represents a hover with an arrow pointer. If
-		 * border is true, compute the polygon inset by 1-pixel border. Consult
-		 * the arrowOnLeft flag to determine which side the arrow is on.
-		 */
-		int[] getPolygon(boolean border) {
-			Point e = getExtent();
-			int b = border ? 1 : 0;
-			if (arrowOnLeft) {
-				return new int[] { 0, 0, e.x - b, 0, e.x - b, e.y - b,
-						hao + haw, e.y - b, hao + haw / 2, e.y + hah - b, hao,
-						e.y - b, 0, e.y - b, 0, 0 };
-			}
-			return new int[] { 0, 0, e.x - b, 0, e.x - b, e.y - b,
-					e.x - hao - b, e.y - b, e.x - hao - haw / 2, e.y + hah - b,
-					e.x - hao - haw, e.y - b, 0, e.y - b, 0, 0 };
-		}
-
-		/*
-		 * Dispose the hover, it is no longer needed. Dispose any resources
-		 * allocated by the hover.
-		 */
-		void dispose() {
-			if (!hoverShell.isDisposed()) {
-				hoverShell.dispose();
-			}
-			if (region != null) {
-				region.dispose();
-			}
-		}
-
-		/*
-		 * Set the visibility of the hover.
-		 */
-		void setVisible(boolean visible) {
-			if (visible) {
-				if (!hoverShell.isVisible()) {
-					hoverShell.setVisible(true);
-				}
-			} else {
-				if (hoverShell.isVisible()) {
-					hoverShell.setVisible(false);
-				}
-			}
-		}
-
-		/*
-		 * Set the text of the hover to the specified text. Recompute the size
-		 * and location of the hover to hover near the specified control,
-		 * pointing the arrow toward the target control.
-		 */
-		void setText(String t, Control hoverNear, Control targetControl) {
-			if (t == null) {
-				t = EMPTY;
-			}
-			if (!t.equals(text)) {
-				Point oldSize = getExtent();
-				text = t;
-				hoverShell.redraw();
-				Point newSize = getExtent();
-				if (!oldSize.equals(newSize)) {
-					// set a flag that indicates the direction of arrow
-					arrowOnLeft = hoverNear.getLocation().x <= targetControl
-							.getLocation().x;
-					setNewShape();
-				}
-			}
-
-			if (hoverNear != null) {
-				Point extent = getExtent();
-				int y = -extent.y - hah + 1;
-				int x = arrowOnLeft ? -hao + haw / 2 : -extent.x + hao + haw
-						/ 2;
-
-				hoverShell.setLocation(hoverNear.toDisplay(x, y));
-			}
-
-		}
-
-		/*
-		 * Return whether or not the hover (shell) is visible.
-		 */
-		boolean isVisible() {
-			return hoverShell.isVisible();
-		}
-
-		/*
-		 * Compute the extent of the hover for the current text.
-		 */
-		Point getExtent() {
-			GC gc = new GC(hoverShell);
-			Point e = gc.textExtent(text);
-			gc.dispose();
-			e.x += hm * 2;
-			e.y += hm * 2;
-			return e;
-		}
-
-		/*
-		 * Compute a new shape for the hover shell.
-		 */
-		void setNewShape() {
-			Region oldRegion = region;
-			region = new Region();
-			region.add(getPolygon(false));
-			hoverShell.setRegion(region);
-			if (oldRegion != null) {
-				oldRegion.dispose();
-			}
-
-		}
-	}
-
-	/**
-	 * Construct a decorated field which is parented by the specified composite
-	 * and has the given style bits. Use the controlCreator to create the
-	 * specific kind of control that is decorated inside the field.
-	 * 
-	 * @param parent
-	 *            the parent of the decorated field.
-	 * @param style
-	 *            the desired style bits for the field.
-	 * @param controlCreator
-	 *            the IControlCreator used to specify the specific kind of
-	 *            control that is to be decorated.
-	 * 
-	 * @see IControlCreator
-	 */
-	public DecoratedField(Composite parent, int style,
-			IControlCreator controlCreator) {
-		this.form = createForm(parent);
-		this.control = controlCreator.createControl(form, style);
-
-		addControlListeners();
-		form.setTabList(new Control[] { control });
-
-		// Set up the initial layout data.
-		FormData data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.top = new FormAttachment(0, 0);
-		data.right = new FormAttachment(100, 0);
-		data.bottom = new FormAttachment(100, 0);
-		control.setLayoutData(data);
-
-	}
-
-	/**
-	 * Adds an image decoration to the field.
-	 * 
-	 * @param decoration
-	 *            A FieldDecoration describing the image and description for the
-	 *            decoration
-	 * 
-	 * @param position
-	 *            The SWT constant indicating the position of the decoration
-	 *            relative to the field's control. The position should include
-	 *            style bits describing both the vertical and horizontal
-	 *            orientation. <code>SWT.LEFT</code> and
-	 *            <code>SWT.RIGHT</code> describe the horizontal placement of
-	 *            the decoration relative to the field, and the constants
-	 *            <code>SWT.TOP</code> and <code>SWT.BOTTOM</code> describe
-	 *            the vertical alignment of the decoration relative to the
-	 *            field. Decorations always appear on either horizontal side of
-	 *            the field, never above or below it. For example, a decoration
-	 *            appearing on the left side of the field, at the top, is
-	 *            specified as SWT.LEFT | SWT.TOP. If an image decoration
-	 *            already exists in the specified position, it will be replaced
-	 *            by the one specified.
-	 * @param showOnFocus
-	 *            <code>true</code> if the decoration should only be shown
-	 *            when the associated control has focus, <code>false</code> if
-	 *            it should always be shown.
-	 * 
-	 */
-	public void addFieldDecoration(FieldDecoration decoration, int position,
-			boolean showOnFocus) {
-		final Label label;
-		FormData formData;
-		int i = indexForPosition(position);
-		if (decDatas[i] == null) {
-			formData = createFormDataForIndex(i, decoration.getImage());
-			label = new Label(form, SWT.HORIZONTAL | SWT.VERTICAL | SWT.CENTER);
-			label.addMouseTrackListener(new MouseTrackListener() {
-				public void mouseHover(MouseEvent event) {
-					FieldDecorationData decData = (FieldDecorationData) event.widget
-							.getData();
-					String desc = decData.decoration.getDescription();
-					if (desc != null) {
-						showHoverText(desc, label);
-					}
-				}
-
-				public void mouseEnter(MouseEvent event) {
-				}
-
-				public void mouseExit(MouseEvent event) {
-					hideHover();
-				}
-			});
-			decDatas[i] = new FieldDecorationData(decoration, label, formData,
-					showOnFocus);
-		} else {
-			label = decDatas[i].label;
-			formData = decDatas[i].data;
-			decDatas[i].decoration = decoration;
-			decDatas[i].showOnFocus = showOnFocus;
-		}
-		label.setImage(decDatas[i].decoration.getImage());
-		label.setData(decDatas[i]);
-		label.setLayoutData(formData);
-		label.setVisible(!showOnFocus);
-
-		// Since sizes may have changed or there could be a new position
-		// defined, we need to update layout data on the control.
-		updateControlAttachments(i, decDatas[i]);
-	}
-
-	/*
-	 * A decoration at the specified index has been added. Update the control's
-	 * attachments if it has not previously been attached on that side or if it
-	 * was attached to a decoration with a lesser width.
-	 */
-	private void updateControlAttachments(int index, FieldDecorationData decData) {
-		FormData formData = (FormData) control.getLayoutData();
-		int newWidth = widthOf(decData.decoration.getImage());
-		// opposing represents the location of the decoration above or below
-		// the one in question.
-		int opposing;
-
-		switch (index) {
-		case LEFT_TOP:
-		case LEFT_BOTTOM:
-			if (index == LEFT_TOP) {
-				opposing = LEFT_BOTTOM;
-			} else {
-				opposing = LEFT_TOP;
-			}
-			if (decDatas[opposing] == null) {
-				// No decorator on the opposing side.
-				// Attach the control to this decorator
-				formData.left = new FormAttachment(decData.label);
-			} else if (decDatas[opposing].data.width < newWidth) {
-				// Decorator on opposing side is the smaller one. Attach
-				// control to the new one.
-				formData.left = new FormAttachment(decData.label);
-				// Center align the smaller one relative to the larger one.
-				decDatas[opposing].data.left.alignment = SWT.CENTER;
-				decDatas[opposing].data.left.control = decData.label;
-			} else {
-				// The new decorator is the smaller one. Keep the
-				// control attached to the opposing one.
-				formData = null;
-				// Horizontally center the smaller one relative to the larger
-				// one.
-				decData.data.left.alignment = SWT.CENTER;
-				decData.data.left.control = decDatas[opposing].label;
-			}
-			break;
-		/*
-		 * The only real difference in right side cases is that we are attaching
-		 * the right side of the control to the wider decoration rather than the
-		 * left side of the control. Other concerns (horizontally aligning the
-		 * smaller decoration relative to the larger one) are the same.
-		 */
-		case RIGHT_TOP:
-		case RIGHT_BOTTOM:
-			if (index == RIGHT_TOP) {
-				opposing = RIGHT_BOTTOM;
-			} else {
-				opposing = RIGHT_TOP;
-			}
-			if (decDatas[opposing] == null) {
-				// No decorator on the opposing side.
-				// Attach the control to this decorator.
-				formData.right = new FormAttachment(decData.label);
-			} else if (decDatas[opposing].data.width < newWidth) {
-				// Decorator on opposing side is the smaller one. Attach
-				// control to the new one.
-				formData.right = new FormAttachment(decData.label);
-				// Center align the smaller one to the larger one.
-				// Note that this could be done using the left or right
-				// attachment, we use the right since it is already
-				// created for all right-side decorations.
-				decDatas[opposing].data.right.alignment = SWT.CENTER;
-				decDatas[opposing].data.right.control = decData.label;
-			} else {
-				// The new decorator is the smaller one. Keep the
-				// control attached to the opposing one.
-				formData = null;
-				// Horizontally center align the smaller one to the
-				// larger one.
-				decData.data.right.alignment = SWT.CENTER;
-				decData.data.right.control = decDatas[opposing].label;
-			}
-			break;
-		default:
-			return;
-		}
-		if (formData != null) {
-			// Form data was updated.
-			control.setLayoutData(formData);
-			form.layout();
-		}
-	}
-
-	/**
-	 * Get the control that is decorated by the receiver.
-	 * 
-	 * @return the Control decorated by the receiver, or <code>null</code> if
-	 *         none has been created yet.
-	 */
-	public Control getControl() {
-		return control;
-	}
-
-	/**
-	 * Get the control that represents the decorated field. This composite
-	 * should be used to lay out the field within its parent.
-	 * 
-	 * @return the Control that should be layed out in the field's parent's
-	 *         layout. This is typically not the control itself, since
-	 *         additional controls are used to represent the decorations.
-	 */
-	public Control getLayoutControl() {
-		return form;
-	}
-
-	/**
-	 * Create the parent composite and a form layout that will be used to manage
-	 * decorations.
-	 */
-	private Composite createForm(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NO_FOCUS);
-		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=126553
-		composite.setBackgroundMode(SWT.INHERIT_DEFAULT);
-		composite.setLayout(new FormLayout());
-		return composite;
-	}
-
-	/**
-	 * Add any listeners needed on the target control.
-	 */
-	private void addControlListeners() {
-		control.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent event) {
-				if (hover != null) {
-					hover.dispose();
-				}
-			}
-		});
-		control.addFocusListener(new FocusListener() {
-			public void focusGained(FocusEvent event) {
-				controlFocusGained();
-			}
-
-			public void focusLost(FocusEvent event) {
-				controlFocusLost();
-			}
-
-		});
-	}
-
-	/*
-	 * Return the index in the array of decoration datas that represents the
-	 * specified SWT position.
-	 * 
-	 * @param position The SWT constant indicating the position of the
-	 * decoration relative to the field's control. The position should include
-	 * style bits describing both the vertical and horizontal orientation.
-	 * <code>SWT.LEFT</code> and <code>SWT.RIGHT</code> describe the
-	 * horizontal placement of the decoration relative to the field, and the
-	 * constants <code>SWT.TOP</code> and <code>SWT.BOTTOM</code> describe
-	 * the vertical alignment of the decoration relative to the field.
-	 * Decorations always appear on either horizontal side of the field, never
-	 * above or below it. For example, a decoration appearing on the left side
-	 * of the field, at the top, is specified as SWT.LEFT | SWT.TOP.
-	 * 
-	 * @return index the index in the array of decorations that represents the
-	 * specified SWT position. If the position is not an expected position, the
-	 * index representing the top left position will be returned.
-	 * 
-	 */
-	private int indexForPosition(int position) {
-		switch (position) {
-		case SWT.LEFT | SWT.BOTTOM:
-			return LEFT_BOTTOM;
-		case SWT.RIGHT | SWT.TOP:
-			return RIGHT_TOP;
-		case SWT.RIGHT | SWT.BOTTOM:
-			return RIGHT_BOTTOM;
-		default:
-			return LEFT_TOP;
-		}
-	}
-
-	/*
-	 * Create a form data that will place the decoration at the specified
-	 * position.
-	 * 
-	 * @param index the index in the decDatas describing the position of the
-	 * decoration.
-	 * 
-	 * @param image the image shown in the decoration.
-	 * 
-	 */
-	private FormData createFormDataForIndex(int index, Image image) {
-		Assert.isTrue(index >= 0 && index < DECORATION_SLOTS,
-				"Index out of range"); //$NON-NLS-1$
-
-		FormData data = new FormData();
-		switch (index) {
-		case LEFT_TOP:
-			data.left = new FormAttachment(0, 0);
-			data.top = new FormAttachment(0, 0);
-			break;
-		case LEFT_BOTTOM:
-			data.left = new FormAttachment(0, 0);
-			data.bottom = new FormAttachment(100, 0);
-			break;
-		case RIGHT_TOP:
-			data.right = new FormAttachment(100, 0);
-			data.top = new FormAttachment(0, 0);
-			break;
-		case RIGHT_BOTTOM:
-			data.right = new FormAttachment(100, 0);
-			data.bottom = new FormAttachment(100, 0);
-			break;
-		}
-		data.width = widthOf(image);
-		data.height = SWT.DEFAULT;
-
-		return data;
-	}
-
-	/**
-	 * Show the specified text using the same hover dialog as is used to show
-	 * decorator descriptions. Normally, a decoration's description text will be
-	 * shown in an info hover over the field's control whenever the mouse hovers
-	 * over the decoration. This method can be used to show a decoration's
-	 * description text at other times (such as when the control receives
-	 * focus), or to show other text associated with the field.
-	 * 
-	 * <p>
-	 * If there is currently a hover visible, the hover's text will be replaced
-	 * with the specified text.
-	 * 
-	 * @param text
-	 *            the text to be shown in the info hover, or <code>null</code>
-	 *            if no text should be shown.
-	 */
-	public void showHoverText(String text) {
-		showHoverText(text, control);
-	}
-
-	/**
-	 * Hide any hover popups that are currently showing on the control.
-	 * Normally, a decoration's description text will be shown in an info hover
-	 * over the field's control as long as the mouse hovers over the decoration,
-	 * and will be hidden when the mouse exits the control. This method can be
-	 * used to hide a hover that was shown using <code>showHoverText</code>,
-	 * or to programatically hide the current decoration hover.
-	 * 
-	 * <p>
-	 * This message has no effect if there is no current hover.
-	 * 
-	 */
-	public void hideHover() {
-		if (hover != null) {
-			hover.setVisible(false);
-		}
-	}
-
-	/*
-	 * The target control gained focus. Any decorations that should show only
-	 * when they have the focus should be shown here.
-	 */
-	private void controlFocusGained() {
-		for (int i = 0; i < DECORATION_SLOTS; i++) {
-			if (decDatas[i] != null && decDatas[i].showOnFocus) {
-				setVisible(decDatas[i], true);
-			}
-		}
-	}
-
-	/*
-	 * The target control lost focus. Any decorations that should show only when
-	 * they have the focus should be hidden here.
-	 */
-	private void controlFocusLost() {
-		for (int i = 0; i < DECORATION_SLOTS; i++) {
-			if (decDatas[i] != null && decDatas[i].showOnFocus) {
-				setVisible(decDatas[i], false);
-			}
-		}
-	}
-
-	/**
-	 * Show the specified decoration. This message has no effect if the
-	 * decoration is already showing, or was not already added to the field
-	 * using <code>addFieldDecoration</code>.
-	 * 
-	 * @param decoration
-	 *            the decoration to be shown.
-	 */
-	public void showDecoration(FieldDecoration decoration) {
-		FieldDecorationData data = getDecorationData(decoration);
-		if (data == null) {
-			return;
-		}
-		// record the fact that client would like it to be visible
-		data.visible = true;
-		// even if it is supposed to be shown, if the field does not have focus,
-		// do not show it (yet)
-		if (!data.showOnFocus || control.isFocusControl()) {
-			setVisible(data, true);
-		}
-	}
-
-	/**
-	 * Hide the specified decoration. This message has no effect if the
-	 * decoration is already hidden, or was not already added to the field using
-	 * <code>addFieldDecoration</code>.
-	 * 
-	 * @param decoration
-	 *            the decoration to be hidden.
-	 */
-	public void hideDecoration(FieldDecoration decoration) {
-		FieldDecorationData data = getDecorationData(decoration);
-		if (data == null) {
-			return;
-		}
-		// Store the desired visibility in the decData. We remember the
-		// client's instructions so that changes in visibility caused by
-		// field focus changes won't violate the client's visibility setting.
-		data.visible = false;
-		setVisible(data, false);
-	}
-
-	/**
-	 * Update the specified decoration. This message should be used if the image
-	 * or description in the decoration have changed. This message has no
-	 * immediate effect if the decoration is not visible, and no effect at all
-	 * if the decoration was not previously added to the field.
-	 * 
-	 * @param decoration
-	 *            the decoration to be hidden.
-	 */
-	public void updateDecoration(FieldDecoration decoration) {
-		FieldDecorationData data = getDecorationData(decoration);
-		if (data == null) {
-			return;
-		}
-		if (data.label != null) {
-			data.label.setImage(decoration.getImage());
-			// If the decoration is being shown, and a hover is active,
-			// update the hover text to display the new description.
-			if (data.label.getVisible() == true && hover != null) {
-				showHoverText(decoration.getDescription(), data.label);
-			}
-		}
-	}
-
-	/*
-	 * Set the visibility of the specified decoration data. This method does not
-	 * change the visibility value stored in the decData, but instead consults
-	 * it to determine how the visibility should be changed. This method is
-	 * called any time visibility of a decoration might change, whether by
-	 * client API or focus changes.
-	 */
-	private void setVisible(FieldDecorationData decData, boolean visible) {
-		// Check the decData visibility flag, since it contains the client's
-		// instructions for visibility.
-		if (visible && decData.visible) {
-			decData.label.setVisible(true);
-		} else {
-			decData.label.setVisible(false);
-		}
-	}
-
-	/*
-	 * Get the FieldDecorationData that corresponds to the given decoration.
-	 */
-	private FieldDecorationData getDecorationData(FieldDecoration dec) {
-		for (int i = 0; i < DECORATION_SLOTS; i++) {
-			if (decDatas[i] != null && dec == decDatas[i].decoration
-					&& decDatas[i].label != null
-					&& !decDatas[i].label.isDisposed()) {
-				return decDatas[i];
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * Show the specified text in the hover, positioning the hover near the
-	 * specified control.
-	 */
-	private void showHoverText(String text, Control hoverNear) {
-		if (text == null) {
-			hideHover();
-			return;
-		}
-
-		if (hover == null) {
-			hover = new Hover(hoverNear.getShell());
-		}
-		hover.setText(text, hoverNear, control);
-		hover.setVisible(true);
-	}
-
-	/**
-	 * Set a boolean that indicates whether the receiver should use the
-	 * decoration registry's maximum decoration width when allocating space for
-	 * decorations. The default value is <code>true</code>. Using the maximum
-	 * decoration width is useful so that decorated fields on the same dialog
-	 * that have different decoration widths will all align. This also allows
-	 * client dialogs to align non-decorated fields with decorated fields by
-	 * consulting the maximum decoration width.
-	 * </p>
-	 * <p>
-	 * Clients may wish to set this value to <code>false</code> in cases where
-	 * space usage is more important than alignment of fields. This value must
-	 * be set before the decorations are added in order to ensure proper
-	 * alignment.
-	 * </p>
-	 * 
-	 * @param useMaximumWidth
-	 *            <code>true</code> if the maximum decoration width should be
-	 *            used as the size for all decorations, <code>false</code> if
-	 *            only the decoration size should be used.
-	 * 
-	 * @see FieldDecorationRegistry#getMaximumDecorationWidth()
-	 */
-	public void setUseMaximumDecorationWidth(boolean useMaximumWidth) {
-		useMaxDecorationWidth = useMaximumWidth;
-	}
-
-	/*
-	 * Return the width appropriate for the specified decoration image.
-	 */
-	private int widthOf(Image image) {
-		if (image == null) {
-			return 0;
-		}
-		return useMaxDecorationWidth ? FieldDecorationRegistry.getDefault()
-				.getMaximumDecorationWidth() : image.getBounds().width;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldAssistColors.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldAssistColors.java
deleted file mode 100644
index 7fcd603..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldAssistColors.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * FieldAssistColors defines protocol for retrieving colors that can be used to
- * provide visual cues with fields. For consistency with JFace dialogs and
- * wizards, it is recommended that FieldAssistColors is used when colors are
- * used to annotate fields.
- * <p>
- * Color resources that are returned using methods in this class are maintained
- * in the JFace color registries, or by SWT. Users of any color resources
- * provided by this class are not responsible for the lifecycle of the color.
- * Colors provided by this class should never be disposed by clients. In some
- * cases, clients are provided information, such as RGB values, in order to
- * create their own color resources. In these cases, the client should manage
- * the lifecycle of any created resource.
- * 
- * @since 3.2
- * @deprecated As of 3.3, this class is no longer necessary.
- */
-public class FieldAssistColors {
-
-	private static boolean DEBUG = false;
-
-	/*
-	 * Keys are background colors, values are the color with the alpha value
-	 * applied
-	 */
-	private static Map requiredFieldColorMap = new HashMap();
-
-	/*
-	 * Keys are colors we have created, values are the displays on which they
-	 * were created.
-	 */
-	private static Map displays = new HashMap();
-
-	/**
-	 * Compute the RGB of the color that should be used for the background of a
-	 * control to indicate that the control has an error. Because the color
-	 * suitable for indicating an error depends on the colors set into the
-	 * control, this color is always computed dynamically and provided as an RGB
-	 * value. Clients who use this RGB to create a Color resource are
-	 * responsible for managing the life cycle of the color.
-	 * <p>
-	 * This color is computed dynamically each time that it is queried. Clients
-	 * should typically call this method once, create a color from the RGB
-	 * provided, and dispose of the color when finished using it.
-	 * 
-	 * @param control
-	 *            the control for which the background color should be computed.
-	 * @return the RGB value indicating a background color appropriate for
-	 *         indicating an error in the control.
-	 */
-	public static RGB computeErrorFieldBackgroundRGB(Control control) {
-		/*
-		 * Use a 10% alpha of the error color applied on top of the widget
-		 * background color.
-		 */
-		Color dest = control.getBackground();
-		Color src = JFaceColors.getErrorText(control.getDisplay());
-		int destRed = dest.getRed();
-		int destGreen = dest.getGreen();
-		int destBlue = dest.getBlue();
-
-		// 10% alpha
-		int alpha = (int) (0xFF * 0.10f);
-		// Alpha blending math
-		destRed += (src.getRed() - destRed) * alpha / 0xFF;
-		destGreen += (src.getGreen() - destGreen) * alpha / 0xFF;
-		destBlue += (src.getBlue() - destBlue) * alpha / 0xFF;
-
-		return new RGB(destRed, destGreen, destBlue);
-	}
-
-	/**
-	 * Return the color that should be used for the background of a control to
-	 * indicate that the control is a required field and does not have content.
-	 * <p>
-	 * This color is managed by FieldAssistResources and should never be
-	 * disposed by clients.
-	 * 
-	 * @param control
-	 *            the control on which the background color will be used.
-	 * @return the color used to indicate that a field is required.
-	 */
-	public static Color getRequiredFieldBackgroundColor(Control control) {
-		final Display display = control.getDisplay();
-
-		// If we are in high contrast mode, then don't apply an alpha
-		if (display.getHighContrast()) {
-			return control.getBackground();
-		}
-
-		// See if a color has already been computed
-		Object storedColor = requiredFieldColorMap.get(control.getBackground());
-		if (storedColor != null) {
-			return (Color) storedColor;
-		}
-
-		// There is no color already created, so we must create one.
-		// Use a 15% alpha of yellow on top of the widget background.
-		Color dest = control.getBackground();
-		Color src = display.getSystemColor(SWT.COLOR_YELLOW);
-		int destRed = dest.getRed();
-		int destGreen = dest.getGreen();
-		int destBlue = dest.getBlue();
-
-		// 15% alpha
-		int alpha = (int) (0xFF * 0.15f);
-		// Alpha blending math
-		destRed += (src.getRed() - destRed) * alpha / 0xFF;
-		destGreen += (src.getGreen() - destGreen) * alpha / 0xFF;
-		destBlue += (src.getBlue() - destBlue) * alpha / 0xFF;
-
-		// create the color
-		Color color = new Color(display, destRed, destGreen, destBlue);
-		// record the color in a map using the original color as the key
-		requiredFieldColorMap.put(dest, color);
-		// If we have never created a color on this display before, install
-		// a dispose exec on the display.
-		if (!displays.containsValue(display)) {
-			display.disposeExec(new Runnable() {
-				public void run() {
-					disposeColors(display);
-				}
-			});
-		}
-		// Record the color and its display in a map for later disposal.
-		displays.put(color, display);
-		return color;
-	}
-
-	/*
-	 * Dispose any colors that were allocated for the given display.
-	 */
-	private static void disposeColors(Display display) {
-		List toBeRemoved = new ArrayList(1);
-
-		if (DEBUG) {
-			System.out.println("Display map is " + displays.toString()); //$NON-NLS-1$
-			System.out
-					.println("Color map is " + requiredFieldColorMap.toString()); //$NON-NLS-1$
-		}
-
-		// Look for any stored colors that were created on this display
-		for (Iterator i = displays.keySet().iterator(); i.hasNext();) {
-			Color color = (Color) i.next();
-			if (((Display) displays.get(color)).equals(display)) {
-				// The color is on this display. Mark it for removal.
-				toBeRemoved.add(color);
-
-				// Now look for any references to it in the required field color
-				// map
-				List toBeRemovedFromRequiredMap = new ArrayList(1);
-				for (Iterator iter = requiredFieldColorMap.keySet().iterator(); iter
-						.hasNext();) {
-					Color bgColor = (Color) iter.next();
-					if (((Color) requiredFieldColorMap.get(bgColor))
-							.equals(color)) {
-						// mark it for removal from the required field color map
-						toBeRemovedFromRequiredMap.add(bgColor);
-					}
-				}
-				// Remove references in the required field map now that
-				// we are done iterating.
-				for (int j = 0; j < toBeRemovedFromRequiredMap.size(); j++) {
-					requiredFieldColorMap.remove(toBeRemovedFromRequiredMap
-							.get(j));
-				}
-			}
-		}
-		// Remove references in the display map now that we are
-		// done iterating
-		for (int i = 0; i < toBeRemoved.size(); i++) {
-			Color color = (Color) toBeRemoved.get(i);
-			// Removing from the display map must be done before disposing the
-			// color or else the comparison between this color and the one
-			// in the map will fail.
-			displays.remove(color);
-			// Dispose it
-			if (DEBUG) {
-				System.out.println("Disposing color " + color.toString()); //$NON-NLS-1$
-			}
-			color.dispose();
-		}
-		if (DEBUG) {
-			System.out.println("Display map is " + displays.toString()); //$NON-NLS-1$
-			System.out
-					.println("Color map is " + requiredFieldColorMap.toString()); //$NON-NLS-1$
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecoration.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecoration.java
deleted file mode 100644
index 597661c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecoration.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * FieldDecoration is a simple data structure class for specifying a decoration
- * for a field. A decoration may be rendered in different ways depending on the
- * type of field it is used with.
- * 
- * @see FieldDecorationRegistry
- * 
- * @since 3.2
- */
-public class FieldDecoration {
-
-	/*
-	 * The image to be shown in the decoration.
-	 */
-	private Image image;
-
-	/*
-	 * The description to show in the decoration's hover.
-	 */
-	private String description;
-
-	/**
-	 * Create a decoration for a field with the specified image and description
-	 * text.
-	 * 
-	 * @param image
-	 *            the image shown in the decoration. A <code>null</code> image
-	 *            will result in a blank decoration, which may be used to
-	 *            reserve space near the field.
-	 * @param description
-	 *            the description shown when the user hovers over the
-	 *            decoration. A <code>null</code> description indicates that
-	 *            there will be no hover for the decoration.
-	 */
-	public FieldDecoration(Image image, String description) {
-		this.image = image;
-		this.description = description;
-	}
-
-	/**
-	 * Return the image shown in the decoration, or <code>null</code> if no
-	 * image is specified.
-	 * 
-	 * @return the image shown in the decoration. A return value of
-	 *         <code>null</code> signifies a blank decoration.
-	 */
-	public Image getImage() {
-		return image;
-	}
-
-	/**
-	 * Set the image shown in the decoration, or <code>null</code> if no image
-	 * is specified. It is up to the caller to update any decorated fields that
-	 * are showing the description in order to display the new image.
-	 * 
-	 * @param image
-	 *            the image shown in the decoration. A value of
-	 *            <code>null</code> signifies a blank decoration.
-	 */
-	public void setImage(Image image) {
-		this.image = image;
-	}
-
-	/**
-	 * Return the description for the decoration shown when the user hovers over
-	 * the decoration.
-	 * 
-	 * @return the String description of the decoration. A return value of
-	 *         <code>null</code> indicates that no description will be shown.
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * Set the description for the decoration shown when the user hovers over
-	 * the decoration. It is up to the caller to update any decorated fields
-	 * showing the description.
-	 * 
-	 * @param description
-	 *            the String description of the decoration. A value of
-	 *            <code>null</code> indicates that no description will be
-	 *            shown.
-	 */
-	public void setDescription(String description) {
-		this.description = description;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecorationRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecorationRegistry.java
deleted file mode 100644
index b70a6d9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/FieldDecorationRegistry.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * FieldDecorationRegistry is a common registry used to define shared field
- * decorations within an application. Unlike resource registries, the
- * FieldDecorationRegistry does not perform any lifecycle management of the
- * decorations.
- * </p>
- * <p>
- * Clients may specify images for the decorations in several different ways.
- * Images may be described by their image id in a specified
- * {@link ImageRegistry}. In this case, the life cycle of the image is managed
- * by the image registry, and the decoration registry will not attempt to obtain
- * an image from the image registry until the decoration is actually requested.
- * In cases where the client has access to an already-created image, the image
- * itself can be specified when registering the decoration. In this case, the
- * life cycle should be managed by the specifying client.
- * </p>
- * 
- * @see FieldDecoration
- * @see ImageRegistry
- * 
- * @since 3.2
- */
-public class FieldDecorationRegistry {
-
-	/**
-	 * Decoration id for the decoration that should be used to cue the user that
-	 * content proposals are available.
-	 */
-	public static final String DEC_CONTENT_PROPOSAL = "DEC_CONTENT_PROPOSAL"; //$NON-NLS-1$
-
-	/**
-	 * Decoration id for the decoration that should be used to cue the user that
-	 * a field is required.
-	 */
-	public static final String DEC_REQUIRED = "DEC_REQUIRED"; //$NON-NLS-1$
-
-	/**
-	 * Decoration id for the decoration that should be used to cue the user that
-	 * a field has an error.
-	 */
-	public static final String DEC_ERROR = "DEC_ERROR"; //$NON-NLS-1$
-
-	/**
-	 * Decoration id for the decoration that should be used to cue the user that
-	 * a field has a warning.
-	 */
-	public static final String DEC_WARNING = "DEC_WARNING"; //$NON-NLS-1$
-
-	/**
-	 * Decoration id for the decoration that should be used to cue the user that
-	 * a field has additional information.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String DEC_INFORMATION = "DEC_INFORMATION"; //$NON-NLS-1$
-
-	/**
-	 * Decoration id for the decoration that should be used to cue the user that
-	 * a field has an error with quick fix available.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String DEC_ERROR_QUICKFIX = "DEC_ERRORQUICKFIX"; //$NON-NLS-1$
-
-	/*
-	 * Image id's
-	 */
-	private static final String IMG_DEC_FIELD_CONTENT_PROPOSAL = "org.eclipse.jface.fieldassist.IMG_DEC_FIELD_CONTENT_PROPOSAL"; //$NON-NLS-1$
-
-	private static final String IMG_DEC_FIELD_REQUIRED = "org.eclipse.jface.fieldassist.IMG_DEC_FIELD_REQUIRED"; //$NON-NLS-1$
-
-	private static final String IMG_DEC_FIELD_ERROR = "org.eclipse.jface.fieldassist.IMG_DEC_FIELD_ERROR"; //$NON-NLS-1$
-	
-	private static final String IMG_DEC_FIELD_ERROR_QUICKFIX = "org.eclipse.jface.fieldassist.IMG_DEC_FIELD_ERROR_QUICKFIX"; //$NON-NLS-1$
-
-	private static final String IMG_DEC_FIELD_WARNING = "org.eclipse.jface.fieldassist.IMG_DEC_FIELD_WARNING"; //$NON-NLS-1$
-
-	private static final String IMG_DEC_FIELD_INFO = "org.eclipse.jface.fieldassist.IMG_DEC_FIELD_INFO"; //$NON-NLS-1$
-
-	/*
-	 * Declare images and decorations immediately.
-	 */
-	static {
-		ImageRegistry imageRegistry = JFaceResources.getImageRegistry();
-
-		// Define the images used in the standard decorations.
-		imageRegistry.put(IMG_DEC_FIELD_CONTENT_PROPOSAL, ImageDescriptor
-				.createFromFile(FieldDecorationRegistry.class,
-						"images/contassist_ovr.gif"));//$NON-NLS-1$
-		imageRegistry.put(IMG_DEC_FIELD_ERROR, ImageDescriptor.createFromFile(
-				FieldDecorationRegistry.class, "images/error_ovr.gif"));//$NON-NLS-1$
-
-		imageRegistry.put(IMG_DEC_FIELD_WARNING, ImageDescriptor
-				.createFromFile(FieldDecorationRegistry.class,
-						"images/warn_ovr.gif"));//$NON-NLS-1$
-
-		imageRegistry.put(IMG_DEC_FIELD_REQUIRED, ImageDescriptor
-				.createFromFile(FieldDecorationRegistry.class,
-						"images/required_field_cue.gif"));//$NON-NLS-1$	
-		
-		imageRegistry.put(IMG_DEC_FIELD_ERROR_QUICKFIX, ImageDescriptor
-				.createFromFile(FieldDecorationRegistry.class,
-						"images/errorqf_ovr.gif"));//$NON-NLS-1$
-		
-		imageRegistry.put(IMG_DEC_FIELD_INFO, ImageDescriptor
-				.createFromFile(FieldDecorationRegistry.class,
-						"images/info_ovr.gif"));//$NON-NLS-1$		
-
-		// Define the standard decorations. Some do not have standard
-		// descriptions. Use null in these cases.
-		getDefault()
-				.registerFieldDecoration(
-						DEC_CONTENT_PROPOSAL,
-						JFaceResources
-								.getString("FieldDecorationRegistry.contentAssistMessage"), //$NON-NLS-1$
-						IMG_DEC_FIELD_CONTENT_PROPOSAL, imageRegistry);
-
-		getDefault().registerFieldDecoration(
-				DEC_ERROR,
-				JFaceResources
-						.getString("FieldDecorationRegistry.errorMessage"), //$NON-NLS-1$
-				IMG_DEC_FIELD_ERROR, imageRegistry);
-		
-		getDefault().registerFieldDecoration(
-				DEC_ERROR_QUICKFIX,
-				JFaceResources
-						.getString("FieldDecorationRegistry.errorQuickFixMessage"), //$NON-NLS-1$
-				IMG_DEC_FIELD_ERROR_QUICKFIX, imageRegistry);
-
-		getDefault().registerFieldDecoration(DEC_WARNING, null,
-				IMG_DEC_FIELD_WARNING, imageRegistry);
-		
-		getDefault().registerFieldDecoration(DEC_INFORMATION, null,
-				IMG_DEC_FIELD_INFO, imageRegistry);
-
-		getDefault()
-				.registerFieldDecoration(
-						DEC_REQUIRED,
-						JFaceResources
-								.getString("FieldDecorationRegistry.requiredFieldMessage"), //$NON-NLS-1$
-						IMG_DEC_FIELD_REQUIRED, imageRegistry);
-
-	}
-
-	/*
-	 * Data structure that holds onto the decoration image info and description,
-	 * and can produce a decorator on request.
-	 */
-	class Entry {
-		private String description;
-
-		private String imageId;
-
-		private ImageRegistry imageRegistry;
-
-		private Image image;
-
-		private FieldDecoration decoration;
-
-		Entry(String description, String imageId, ImageRegistry registry) {
-			this.description = description;
-			this.imageId = imageId;
-			this.imageRegistry = registry;
-		}
-
-		Entry(String description, Image image) {
-			this.description = description;
-			this.image = image;
-		}
-
-		FieldDecoration getDecoration() {
-			if (decoration == null) {
-				if (image == null) {
-					if (imageRegistry == null) {
-						imageRegistry = JFaceResources.getImageRegistry();
-					}
-					image = imageRegistry.get(imageId);
-				}
-				decoration = new FieldDecoration(image, description);
-			}
-			// Null out all other fields now that the decoration has an image
-			description = null;
-			imageId = null;
-			imageRegistry = null;
-			image = null;
-
-			return decoration;
-		}
-	}
-
-	/**
-	 * Default instance of the registry. Applications may install their own
-	 * registry.
-	 */
-	private static FieldDecorationRegistry defaultInstance;
-
-	/**
-	 * Maximum width and height used by decorations in this registry. Clients
-	 * may use these values to reserve space in dialogs for decorations or to
-	 * adjust layouts so that decorated and non-decorated fields line up.
-	 */
-	private int maxDecorationWidth = 0;
-	private int maxDecorationHeight = 0;
-
-	private HashMap /* <String id, FieldDecoration> */decorations = new HashMap();
-
-	/**
-	 * Get the default FieldDecorationRegistry.
-	 * 
-	 * @return the singleton FieldDecorationRegistry that is used to manage
-	 *         shared field decorations.
-	 */
-	public static FieldDecorationRegistry getDefault() {
-		if (defaultInstance == null) {
-			defaultInstance = new FieldDecorationRegistry();
-		}
-		return defaultInstance;
-	}
-
-	/**
-	 * Set the default FieldDecorationRegistry.
-	 * 
-	 * @param defaultRegistry
-	 *            the singleton FieldDecorationRegistry that is used to manage
-	 *            shared field decorations.
-	 */
-	public static void setDefault(FieldDecorationRegistry defaultRegistry) {
-		defaultInstance = defaultRegistry;
-	}
-
-	/**
-	 * Construct a FieldDecorationRegistry.
-	 */
-	public FieldDecorationRegistry() {
-		maxDecorationWidth = 0;
-		maxDecorationHeight = 0;
-	}
-
-	/**
-	 * Get the maximum width (in pixels) of any decoration retrieved so far in
-	 * the registry. This value changes as decorations are added and retrieved.
-	 * This value can be used by clients to reserve space or otherwise compute
-	 * margins when aligning non-decorated fields with decorated fields.
-	 * 
-	 * @return the maximum width in pixels of any accessed decoration
-	 */
-	public int getMaximumDecorationWidth() {
-		return maxDecorationWidth;
-	}
-
-	/**
-	 * Get the maximum height (in pixels) of any decoration retrieved so far in
-	 * the registry. This value changes as decorations are added and retrieved.
-	 * This value can be used by clients to reserve space or otherwise compute
-	 * margins when aligning non-decorated fields with decorated fields.
-	 * 
-	 * 
-	 * @return the maximum height in pixels of any accessed decoration
-	 */
-	public int getMaximumDecorationHeight() {
-		return maxDecorationHeight;
-	}
-
-	/**
-	 * Registers a field decoration using the specified id. The lifecyle of the
-	 * supplied image should be managed by the client. That is, it will never be
-	 * disposed by this registry and the decoration should be removed from the
-	 * registry if the image is ever disposed elsewhere.
-	 * 
-	 * @param id
-	 *            the String id used to identify and access the decoration.
-	 * @param description
-	 *            the String description to be used in the decoration, or
-	 *            <code>null</code> if the decoration has no description.
-	 * @param image
-	 *            the image to be used in the decoration
-	 */
-	public void registerFieldDecoration(String id, String description,
-			Image image) {
-		decorations.put(id, new Entry(description, image));
-		// Recompute the maximums since this might be a replacement
-		recomputeMaximums();
-	}
-
-	/**
-	 * Registers a field decoration using the specified id. An image id of an
-	 * image located in the default JFaceResources image registry is supplied.
-	 * The image will not be created until the decoration is requested.
-	 * 
-	 * @param id
-	 *            the String id used to identify and access the decoration.
-	 * @param description
-	 *            the String description to be used in the decoration, or
-	 *            <code>null</code> if the decoration has no description. *
-	 * @param imageId
-	 *            the id of the image in the JFaceResources image registry that
-	 *            is used for this decorator
-	 */
-	public void registerFieldDecoration(String id, String description,
-			String imageId) {
-		decorations.put(id, new Entry(description, imageId, JFaceResources
-				.getImageRegistry()));
-		// Recompute the maximums as this could be a replacement of a previous
-		// image.
-		recomputeMaximums();
-	}
-
-	/**
-	 * Registers a field decoration using the specified id. An image id and an
-	 * image registry are supplied. The image will not be created until the
-	 * decoration is requested.
-	 * 
-	 * @param id
-	 *            the String id used to identify and access the decoration.
-	 * @param description
-	 *            the String description to be used in the decoration, or
-	 *            <code>null</code> if the decoration has no description. *
-	 * @param imageId
-	 *            the id of the image in the supplied image registry that is
-	 *            used for this decorator
-	 * @param imageRegistry
-	 *            the registry used to obtain the image
-	 */
-	public void registerFieldDecoration(String id, String description,
-			String imageId, ImageRegistry imageRegistry) {
-		decorations.put(id, new Entry(description, imageId, imageRegistry));
-		// Recompute the maximums since this could be a replacement
-		recomputeMaximums();
-	}
-
-	/**
-	 * Unregisters the field decoration with the specified id. No lifecycle
-	 * management is performed on the decoration's image. This message has no
-	 * effect if no field decoration with the specified id was previously
-	 * registered.
-	 * </p>
-	 * <p>
-	 * This method need not be called if the registered decoration's image is
-	 * managed in an image registry. In that case, leaving the decoration in the
-	 * registry will do no harm since the image will remain valid and will be
-	 * properly disposed when the application is shut down. This method should
-	 * be used in cases where the caller intends to dispose of the image
-	 * referred to by the decoration, or otherwise determines that the
-	 * decoration should no longer be used.
-	 * 
-	 * @param id
-	 *            the String id of the decoration to be unregistered.
-	 */
-	public void unregisterFieldDecoration(String id) {
-		decorations.remove(id);
-		recomputeMaximums();
-	}
-
-	/**
-	 * Returns the field decoration registered by the specified id .
-	 * 
-	 * @param id
-	 *            the String id used to access the decoration.
-	 * @return the FieldDecoration with the specified id, or <code>null</code>
-	 *         if there is no decoration with the specified id.
-	 */
-	public FieldDecoration getFieldDecoration(String id) {
-		Object entry = decorations.get(id);
-		if (entry == null) {
-			return null;
-		}
-		return ((Entry) entry).getDecoration();
-
-	}
-
-	/*
-	 * The maximum decoration width and height must be recomputed. Typically
-	 * called in response to adding, removing, or replacing a decoration.
-	 */
-	private void recomputeMaximums() {
-		Iterator entries = decorations.values().iterator();
-		
-		maxDecorationHeight = 0;
-		maxDecorationWidth = 0;
-		while (entries.hasNext()) {
-			Image image = ((Entry)entries.next()).getDecoration().getImage();
-			if (image != null) {
-				maxDecorationHeight = Math.max(maxDecorationHeight, image.getBounds().height);
-				maxDecorationWidth = Math.max(maxDecorationWidth, image.getBounds().width);
-			}
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposal.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposal.java
deleted file mode 100644
index 538e7f6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposal.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-/**
- * IContentProposal describes a content proposal to be shown. It consists of the
- * content that will be provided if the proposal is accepted, an optional label
- * used to describe the content to the user, and an optional description that
- * further elaborates the meaning of the proposal.
- * 
- * @since 3.2
- */
-public interface IContentProposal {
-	/**
-	 * Return the content represented by this proposal.
-	 * 
-	 * @return the String content represented by this proposal.
-	 */
-	public String getContent();
-
-	/**
-	 * Return the integer position within the contents that the cursor should be
-	 * placed after the proposal is accepted.
-	 * 
-	 * @return the zero-based index position within the contents where the
-	 *         cursor should be placed after the proposal is accepted.
-	 */
-	public int getCursorPosition();
-
-	/**
-	 * Return the label used to describe this proposal.
-	 * 
-	 * @return the String label used to display the proposal. If
-	 *         <code>null</code>, then the content will be displayed as the
-	 *         label.
-	 */
-	public String getLabel();
-
-	/**
-	 * Return a description that describes this proposal.
-	 * 
-	 * @return the String label used to further the proposal. If
-	 *         <code>null</code>, then no description will be displayed.
-	 */
-	public String getDescription();
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener.java
deleted file mode 100644
index 61a2310..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-/**
- * This interface is used to listen to notifications from a
- * {@link ContentProposalAdapter}.
- * 
- * @since 3.2
- */
-public interface IContentProposalListener {
-	/**
-	 * A content proposal has been accepted.
-	 * 
-	 * @param proposal
-	 *            the accepted content proposal
-	 */
-	public void proposalAccepted(IContentProposal proposal);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener2.java
deleted file mode 100644
index 31c0d4d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalListener2.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-/**
- * This interface is used to listen to additional notifications from a
- * {@link ContentProposalAdapter}.
- * 
- * @since 3.3
- */
-public interface IContentProposalListener2 {
-	/**
-	 * A content proposal popup has been opened for content proposal assistance.
-	 * 
-	 * @param adapter
-	 *            the ContentProposalAdapter which is providing content proposal
-	 *            behavior to a control
-	 */
-	public void proposalPopupOpened(ContentProposalAdapter adapter);
-
-	/**
-	 * A content proposal popup has been closed.
-	 * 
-	 * @param adapter
-	 *            the ContentProposalAdapter which is providing content proposal
-	 *            behavior to a control
-	 */
-	public void proposalPopupClosed(ContentProposalAdapter adapter);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalProvider.java
deleted file mode 100644
index 55983e0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IContentProposalProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-/**
- * IContentProposalProvider provides an array of IContentProposals that are
- * appropriate for a textual dialog field, given the field's current content and
- * the current cursor position. 
- * 
- * @since 3.2
- */
-public interface IContentProposalProvider {
-
-	/**
-	 * Return an array of Objects representing the valid content proposals for a
-	 * field.
-	 * 
-	 * @param contents
-	 *            the current contents of the text field
-	 * @param position
-	 *            the current position of the cursor in the contents
-	 * 
-	 * @return the array of {@link IContentProposal} that represent valid
-	 *         proposals for the field.
-	 */
-	IContentProposal[] getProposals(String contents, int position);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter.java
deleted file mode 100644
index b76025c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * This interface is used to set and retrieve text content from an arbitrary
- * control. Clients are expected to implement this interface when defining a
- * {@link ContentProposalAdapter}, in order to specify how to retrieve and set
- * the contents of the control being adapted.
- * 
- * @since 3.2
- */
-public interface IControlContentAdapter {
-	/**
-	 * Set the contents of the specified control to the specified text. Must not
-	 * be <code>null</code>.
-	 * 
-	 * @param control
-	 *            the control whose contents are to be set (replaced).
-	 * @param contents
-	 *            the String specifying the new control content.
-	 * @param cursorPosition
-	 *            the zero-based index representing the desired cursor position
-	 *            in the control's contents after the contents are set.
-	 */
-	public void setControlContents(Control control, String contents,
-			int cursorPosition);
-
-	/**
-	 * Insert the specified contents into the control's current contents. Must
-	 * not be <code>null</code>.
-	 * 
-	 * @param control
-	 *            the control whose contents are to be altered.
-	 * @param contents
-	 *            the String to be inserted into the control contents.
-	 * @param cursorPosition
-	 *            the zero-based index representing the desired cursor position
-	 *            within the inserted contents after the insertion is made.
-	 */
-	public void insertControlContents(Control control, String contents,
-			int cursorPosition);
-
-	/**
-	 * Get the text contents of the control.
-	 * 
-	 * @param control
-	 *            the control whose contents are to be retrieved.
-	 * @return the String contents of the control.
-	 */
-	public String getControlContents(Control control);
-
-	/**
-	 * Get the current cursor position in the control. The position is specified
-	 * as a zero-based index into the string. Valid ranges are from 0 to N,
-	 * where N is the size of the contents string. A value of N indicates that
-	 * the cursor is at the end of the contents.
-	 * 
-	 * @param control
-	 *            the control whose position is to be retrieved.
-	 * @return the zero-based index representing the cursor position in the
-	 *         control's contents.
-	 */
-	public int getCursorPosition(Control control);
-
-	/**
-	 * Get the bounds (in pixels) of the insertion point for the control
-	 * content. This is a rectangle, in coordinates relative to the control,
-	 * where the insertion point is displayed. If the implementer does not have
-	 * an insertion point, or cannot determine the location of the insertion
-	 * point, it is appropriate to return the bounds of the entire control. This
-	 * value may be used to position a content proposal popup.
-	 * 
-	 * @param control
-	 *            the control whose offset is to be retrieved.
-	 * @return the pixel width representing the distance between the edge of the
-	 *         control and the insertion point.
-	 */
-	public Rectangle getInsertionBounds(Control control);
-
-	/**
-	 * Set the current cursor position in the control. The position is specified
-	 * as a zero-based index into the string. Valid ranges are from 0 to N,
-	 * where N is the size of the contents string. A value of N indicates that
-	 * the cursor is at the end of the contents.
-	 * 
-	 * @param control
-	 *            the control whose cursor position is to be set.
-	 * @param index
-	 *            the zero-based index representing the cursor position in the
-	 *            control's contents.
-	 */
-	public void setCursorPosition(Control control, int index);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter2.java
deleted file mode 100644
index bc6192b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlContentAdapter2.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * This interface is used by a {@link ContentProposalAdapter} in order to
- * retrieve and set the selection range in a control.
- * 
- * @since 3.4
- */
-public interface IControlContentAdapter2 {
-	/**
-	 * Get the current selection range in the control. The x coordinate of the
-	 * returned point is the position of the first selected character and the y
-	 * coordinate of the returned point is the position of the last selected
-	 * character. The positions are specified as a zero-based index into the
-	 * string. Valid ranges are from 0 to N, where N is the size of the contents
-	 * string. A value of N indicates that the last character is in the
-	 * selection.
-	 * 
-	 * @param control
-	 *            the control whose position is to be retrieved.
-	 * @return a point representing the selection start and end
-	 */
-	public Point getSelection(Control control);
-
-	/**
-	 * Set the current selection range in the control. The x coordinate of the
-	 * provided point is the position of the first selected character and the y
-	 * coordinate of the point is the position of the last selected character.
-	 * The positions are specified as a zero-based index into the string. Valid
-	 * ranges are from 0 to N, where N is the size of the contents string. A
-	 * value of N indicates that the last character is in the selection. If the
-	 * x and y coordinates are the same, then there is no selection.
-	 * 
-	 * @param control
-	 *            the control whose position is to be retrieved.
-	 * @param range
-	 *            a point representing the selection start and end
-	 */
-	public void setSelection(Control control, Point range);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlCreator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlCreator.java
deleted file mode 100644
index d083e42..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/IControlCreator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * This interface is used to create a control with a specific parent and style
- * bits. It is used by {@link DecoratedField} to create the control to be
- * decorated. Clients are expected to implement this interface in order to
- * create a particular kind of control for decoration.
- * 
- * @since 3.2
- * @deprecated As of 3.3, clients should use {@link ControlDecoration} instead
- *             of {@link DecoratedField}.
- * 
- */
-public interface IControlCreator {
-	/**
-	 * Create a control with the specified parent and style bits.
-	 * 
-	 * @param parent
-	 *            the parent of the control
-	 * @param style
-	 *            the style of the control
-	 * 
-	 * @return the Control that was created.
-	 */
-	public Control createControl(Composite parent, int style);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java
deleted file mode 100644
index 89819ad..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/SimpleContentProposalProvider.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Amir Kouchekinia <amir@pyrus.us> - bug 200762
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import java.util.ArrayList;
-
-/**
- * SimpleContentProposalProvider is a class designed to map a static list of
- * Strings to content proposals.
- * 
- * @see IContentProposalProvider
- * @since 3.2
- * 
- */
-public class SimpleContentProposalProvider implements IContentProposalProvider {
-
-	/*
-	 * The proposals provided.
-	 */
-	private String[] proposals;
-
-	/*
-	 * The proposals mapped to IContentProposal. Cached for speed in the case
-	 * where filtering is not used.
-	 */
-	private IContentProposal[] contentProposals;
-
-	/*
-	 * Boolean that tracks whether filtering is used.
-	 */
-	private boolean filterProposals = false;
-
-	/**
-	 * Construct a SimpleContentProposalProvider whose content proposals are
-	 * always the specified array of Objects.
-	 * 
-	 * @param proposals
-	 *            the array of Strings to be returned whenever proposals are
-	 *            requested.
-	 */
-	public SimpleContentProposalProvider(String[] proposals) {
-		super();
-		this.proposals = proposals;
-	}
-
-	/**
-	 * Return an array of Objects representing the valid content proposals for a
-	 * field. 
-	 * 
-	 * @param contents
-	 *            the current contents of the field (only consulted if filtering
-	 *            is set to <code>true</code>)
-	 * @param position
-	 *            the current cursor position within the field (ignored)
-	 * @return the array of Objects that represent valid proposals for the field
-	 *         given its current content.
-	 */
-	public IContentProposal[] getProposals(String contents, int position) {
-		if (filterProposals) {
-			ArrayList list = new ArrayList();
-			for (int i = 0; i < proposals.length; i++) {
-				if (proposals[i].length() >= contents.length()
-						&& proposals[i].substring(0, contents.length())
-								.equalsIgnoreCase(contents)) {
-					list.add(makeContentProposal(proposals[i]));
-				}
-			}
-			return (IContentProposal[]) list.toArray(new IContentProposal[list
-					.size()]);
-		}
-		if (contentProposals == null) {
-			contentProposals = new IContentProposal[proposals.length];
-			for (int i = 0; i < proposals.length; i++) {
-				contentProposals[i] = makeContentProposal(proposals[i]);
-			}
-		}
-		return contentProposals;
-	}
-
-	/**
-	 * Set the Strings to be used as content proposals.
-	 * 
-	 * @param items
-	 *            the array of Strings to be used as proposals.
-	 */
-	public void setProposals(String[] items) {
-		this.proposals = items;
-		contentProposals = null;
-	}
-
-	/**
-	 * Set the boolean that controls whether proposals are filtered according to
-	 * the current field content.
-	 * 
-	 * @param filterProposals
-	 *            <code>true</code> if the proposals should be filtered to
-	 *            show only those that match the current contents of the field,
-	 *            and <code>false</code> if the proposals should remain the
-	 *            same, ignoring the field content.
-	 * @since 3.3
-	 */
-	public void setFiltering(boolean filterProposals) {
-		this.filterProposals = filterProposals;
-		// Clear any cached proposals.
-		contentProposals = null;
-	}
-
-	/*
-	 * Make an IContentProposal for showing the specified String.
-	 */
-	private IContentProposal makeContentProposal(final String proposal) {
-		return new IContentProposal() {
-			public String getContent() {
-				return proposal;
-			}
-
-			public String getDescription() {
-				return null;
-			}
-
-			public String getLabel() {
-				return null;
-			}
-
-			public int getCursorPosition() {
-				return proposal.length();
-			}
-		};
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextContentAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextContentAdapter.java
deleted file mode 100644
index 5620085..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextContentAdapter.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * An {@link IControlContentAdapter} for SWT Text controls. This is a
- * convenience class for easily creating a {@link ContentProposalAdapter} for
- * text fields.
- * 
- * @since 3.2
- */
-public class TextContentAdapter implements IControlContentAdapter,
-		IControlContentAdapter2 {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.taskassistance.IControlContentAdapter#getControlContents(org.eclipse.swt.widgets.Control)
-	 */
-	public String getControlContents(Control control) {
-		return ((Text) control).getText();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#setControlContents(org.eclipse.swt.widgets.Control,
-	 *      java.lang.String, int)
-	 */
-	public void setControlContents(Control control, String text,
-			int cursorPosition) {
-		((Text) control).setText(text);
-		((Text) control).setSelection(cursorPosition, cursorPosition);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#insertControlContents(org.eclipse.swt.widgets.Control,
-	 *      java.lang.String, int)
-	 */
-	public void insertControlContents(Control control, String text,
-			int cursorPosition) {
-		Point selection = ((Text) control).getSelection();
-		((Text) control).insert(text);
-		// Insert will leave the cursor at the end of the inserted text. If this
-		// is not what we wanted, reset the selection.
-		if (cursorPosition < text.length()) {
-			((Text) control).setSelection(selection.x + cursorPosition,
-					selection.x + cursorPosition);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#getCursorPosition(org.eclipse.swt.widgets.Control)
-	 */
-	public int getCursorPosition(Control control) {
-		return ((Text) control).getCaretPosition();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#getInsertionBounds(org.eclipse.swt.widgets.Control)
-	 */
-	public Rectangle getInsertionBounds(Control control) {
-		Text text = (Text) control;
-		Point caretOrigin = text.getCaretLocation();
-		// We fudge the y pixels due to problems with getCaretLocation
-		// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=52520
-		return new Rectangle(caretOrigin.x + text.getClientArea().x,
-				caretOrigin.y + text.getClientArea().y + 3, 1, text.getLineHeight());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter#setCursorPosition(org.eclipse.swt.widgets.Control,
-	 *      int)
-	 */
-	public void setCursorPosition(Control control, int position) {
-		((Text) control).setSelection(new Point(position, position));
-	}
-
-	/**
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter2#getSelection(org.eclipse.swt.widgets.Control)
-	 * 
-	 * @since 3.4
-	 */
-	public Point getSelection(Control control) {
-		return ((Text) control).getSelection();
-	}
-
-	/**
-	 * @see org.eclipse.jface.fieldassist.IControlContentAdapter2#setSelection(org.eclipse.swt.widgets.Control,
-	 *      org.eclipse.swt.graphics.Point)
-	 * 
-	 * @since 3.4
-	 */
-	public void setSelection(Control control, Point range) {
-		((Text) control).setSelection(range);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextControlCreator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextControlCreator.java
deleted file mode 100644
index 509437d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/TextControlCreator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.fieldassist;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * An {@link IControlCreator} for SWT Text controls. This is a convenience class
- * for creating text controls to be supplied to a decorated field.
- * 
- * @since 3.2
- * @deprecated As of 3.3, clients should use {@link ControlDecoration} instead
- *             of {@link DecoratedField}.
- * 
- */
-public class TextControlCreator implements IControlCreator {
-
-	public Control createControl(Composite parent, int style) {
-		return new Text(parent, style);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/contassist_ovr.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/contassist_ovr.gif
deleted file mode 100644
index 5c68bdb..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/contassist_ovr.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/error_ovr.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/error_ovr.gif
deleted file mode 100644
index 7291a53..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/error_ovr.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/errorqf_ovr.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/errorqf_ovr.gif
deleted file mode 100644
index 2468e99..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/errorqf_ovr.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/info_ovr.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/info_ovr.gif
deleted file mode 100644
index d485366..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/info_ovr.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/required_field_cue.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/required_field_cue.gif
deleted file mode 100644
index d94a8f8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/required_field_cue.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/warn_ovr.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/warn_ovr.gif
deleted file mode 100644
index 6f46bf9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/images/warn_ovr.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/package.html
deleted file mode 100644
index 7e6c849..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/package.html
+++ /dev/null
@@ -1,51 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides classes that help communicate proper content for fields in dialogs and wizards.
-<h2>
-Package Specification</h2>
-<p>
-This package provides classes that can be used to guide a dialog user through choosing
-appropriate content for fields in a dialog or wizard.
-<p>
-A <tt>ContentProposalAdapter</tt> can be attached to an arbitrary control to provide 
-a popup showing content proposals.  These proposals appear when the defined
-assist keystroke is invoked.  The <tt>ContentProposalAdapter</tt> manages the creation, 
-hiding, and showing of the proposal popup, as well as the proper handling of key events
-between the adapted control and its popup.  Implementors of <tt>IControlContentAdapter</tt>
-allow the adapter to set and retrieve the contents of the supplied control.
-</p>
-<p>
-An <tt>AutoCompleteField</tt> configures a <tt>ContentProposalAdapter</tt> in a manner
-that supports automatic field completion popups that filter based on the control's
-contents.
-</p>
-<p>
-<tt>ControlDecoration</tt> can be used to decorate an arbitrary control with 
-an image that communicates information about the control's content.  Decorations can be
-used to show additional information about a field, such as its status, or a cue
-that shows availability of content proposals.  Decorations are defined in pre-defined
-locations relative to the control, and can be set up to show at all times, or only
-when the control has focus.  It is up to the client to ensure there is enough
-space allocated to render the control decoration.  Decorations can optionally show 
-descriptive text when the user hovers over them.  
-</p>
-<p>
-<tt>DecoratedField</tt> can also be used to decorate a control.  The main difference
-is that decorated fields reserve space for multiple decorations in particular
-locations around the control.  To do this, the field manages the creation of the 
-field's control, using a specialized layout to ensure there is adequate space 
-reserved for decorations around the control. Other than using the field to manage 
-the decorations themselves, clients are expected to interact 
-directly with the control.  
-</p>
-
-<p>Note: None of the classes in this package maintain global state.
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/images/dots_button.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/images/dots_button.gif
deleted file mode 100644
index 5552219..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/images/dots_button.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/ConfigureColumnsDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/ConfigureColumnsDialog.java
deleted file mode 100644
index 42869b0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/ConfigureColumnsDialog.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.internal;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-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.Item;
-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.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-
-/**
- * NON-API - This class is internal and will be moved to another package in 3.5.
- * 
- */
-public class ConfigureColumnsDialog extends Dialog {
-
-	private Control targetControl;
-	private ColumnObject[] columnObjects;
-	private Table table;
-	private Button upButton;
-	private Button downButton;
-	private Text text;
-	private boolean moveableColumnsFound;
-
-	class ColumnObject {
-		Item column;
-		int index;
-		String name;
-		Image image;
-		boolean visible;
-		int width;
-		boolean moveable;
-		boolean resizable;
-
-		ColumnObject(Item column, int index, String text, Image image,
-				int width, boolean moveable, boolean resizable, boolean visible) {
-			this.column = column;
-			this.index = index;
-			this.name = text;
-			this.image = image;
-			this.width = width;
-			this.moveable = moveable;
-			this.resizable = resizable;
-			this.visible = visible;
-		}
-	}
-
-	/**
-	 * NON-API - This class is internal and will be moved to another package in
-	 * 3.5. Creates a new dialog for configuring columns of the given column
-	 * viewer. The column viewer must have an underlying {@link Tree} or {@link
-	 * Table}, other controls are not supported.
-	 * 
-	 * @param shellProvider
-	 * @param table
-	 */
-	public ConfigureColumnsDialog(IShellProvider shellProvider, Table table) {
-		this(shellProvider, (Control) table);
-	}
-
-	/**
-	 * NON-API - This class is internal and will be moved to another package in
-	 * 3.5. Creates a new dialog for configuring columns of the given column
-	 * viewer. The column viewer must have an underlying {@link Tree} or {@link
-	 * Table}, other controls are not supported.
-	 * 
-	 * @param shellProvider
-	 * @param tree
-	 */
-	public ConfigureColumnsDialog(IShellProvider shellProvider, Tree tree) {
-		this(shellProvider, (Control) tree);
-	}
-
-	/**
-	 * @param shellProvider
-	 * @param control
-	 */
-	private ConfigureColumnsDialog(IShellProvider shellProvider, Control control) {
-		super(shellProvider);
-		this.targetControl = control;
-		this.moveableColumnsFound = createColumnObjects();
-	}
-
-	protected boolean isResizable() {
-		return true;
-	}
-
-	public void create() {
-		super.create();
-		getShell().setText(
-				JFaceResources.getString("ConfigureColumnsDialog_Title")); //$NON-NLS-1$
-	}
-	
-	protected void initializeBounds() {
-		super.initializeBounds();
-		table.setSelection(0);
-		handleSelectionChanged(0);
-	}
-
-	/**
-	 * Returns true if any of the columns is moveable (can be reordered).
-	 */
-	private boolean createColumnObjects() {
-		boolean result = true;
-		Item[] columns = getViewerColumns();
-		ColumnObject[] cObjects = new ColumnObject[columns.length];
-		for (int i = 0; i < columns.length; i++) {
-			Item c = columns[i];
-			boolean moveable = getMoveable(c);
-			result = result && moveable;
-			cObjects[i] = new ColumnObject(c, i, getColumnName(c),
-					getColumnImage(c), getColumnWidth(c), moveable,
-					getResizable(c), true);
-		}
-		int[] columnOrder = getColumnOrder();
-		columnObjects = new ColumnObject[columns.length];
-		for (int i = 0; i < columnOrder.length; i++) {
-			columnObjects[i] = cObjects[columnOrder[i]];
-		}
-		return result;
-	}
-
-	/**
-	 * @param c
-	 * @return
-	 */
-	private Image getColumnImage(Item item) {
-		if (item instanceof TableColumn) {
-			return ((TableColumn) item).getImage();
-		} else if (item instanceof TreeColumn) {
-			return ((TreeColumn) item).getImage();
-		}
-		return null;
-	}
-
-	/**
-	 * @return
-	 */
-	private int[] getColumnOrder() {
-		if (targetControl instanceof Table) {
-			return ((Table) targetControl).getColumnOrder();
-		} else if (targetControl instanceof Tree) {
-			return ((Tree) targetControl).getColumnOrder();
-		}
-		return new int[0];
-	}
-
-	/**
-	 * @param c
-	 * @return
-	 */
-	private boolean getMoveable(Item item) {
-		if (item instanceof TableColumn) {
-			return ((TableColumn) item).getMoveable();
-		} else if (item instanceof TreeColumn) {
-			return ((TreeColumn) item).getMoveable();
-		}
-		return false;
-	}
-
-	/**
-	 * @param c
-	 * @return
-	 */
-	private boolean getResizable(Item item) {
-		if (item instanceof TableColumn) {
-			return ((TableColumn) item).getResizable();
-		} else if (item instanceof TreeColumn) {
-			return ((TreeColumn) item).getResizable();
-		}
-		return false;
-	}
-
-	protected Control createDialogArea(Composite parent) {
-		Composite composite = (Composite) super.createDialogArea(parent);
-
-		table = new Table(composite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL
-				| SWT.H_SCROLL /*
-													 * | SWT.CHECK
-													 */);
-		for (int i = 0; i < columnObjects.length; i++) {
-			TableItem tableItem = new TableItem(table, SWT.NONE);
-			tableItem.setText(columnObjects[i].name);
-			tableItem.setImage(columnObjects[i].image);
-			tableItem.setData(columnObjects[i]);
-		}
-
-		GridDataFactory.defaultsFor(table)
-				.span(1, moveableColumnsFound ? 3 : 1).applyTo(table);
-
-		if (moveableColumnsFound) {
-			upButton = new Button(composite, SWT.PUSH);
-			upButton.setText(JFaceResources
-					.getString("ConfigureColumnsDialog_up")); //$NON-NLS-1$
-			upButton.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event event) {
-					handleMove(table, true);
-				}
-			});
-			setButtonLayoutData(upButton);
-			downButton = new Button(composite, SWT.PUSH);
-			downButton.setText(JFaceResources
-					.getString("ConfigureColumnsDialog_down")); //$NON-NLS-1$
-			downButton.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event event) {
-					handleMove(table, false);
-				}
-			});
-			setButtonLayoutData(downButton);
-
-			// filler label
-			createLabel(composite, ""); //$NON-NLS-1$
-		}
-
-		Composite widthComposite = new Composite(composite, SWT.NONE);
-		createLabel(widthComposite, JFaceResources
-				.getString("ConfigureColumnsDialog_WidthOfSelectedColumn")); //$NON-NLS-1$
-
-		text = new Text(widthComposite, SWT.SINGLE | SWT.BORDER);
-		// see #initializeBounds
-		text.setText(Integer.toString(1000));
-
-		GridLayoutFactory.fillDefaults().numColumns(2).applyTo(widthComposite);
-
-		int numColumns = moveableColumnsFound ? 2 : 1;
-
-		GridDataFactory.defaultsFor(widthComposite).grab(false, false).span(
-				numColumns, 1).applyTo(widthComposite);
-
-		GridLayoutFactory.swtDefaults().numColumns(numColumns).applyTo(
-				composite);
-
-		table.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				handleSelectionChanged(table.indexOf((TableItem) event.item));
-			}
-		});
-		text.addListener(SWT.Modify, new Listener() {
-			public void handleEvent(Event event) {
-				ColumnObject columnObject = columnObjects[table
-						.getSelectionIndex()];
-				if (!columnObject.resizable) {
-					return;
-				}
-				try {
-					int width = Integer.parseInt(text.getText());
-					columnObject.width = width;
-				} catch (NumberFormatException ex) {
-					// ignore for now
-				}
-			}
-		});
-
-		Dialog.applyDialogFont(composite);
-
-		return composite;
-	}
-
-	/**
-	 * @param table
-	 * @param up
-	 */
-	protected void handleMove(Table table, boolean up) {
-		int index = table.getSelectionIndex();
-		int newIndex = index + (up ? -1 : 1);
-		if (index < 0 || index >= table.getItemCount()) {
-			return;
-		}
-		ColumnObject columnObject = columnObjects[index];
-		columnObjects[index] = columnObjects[newIndex];
-		columnObjects[newIndex] = columnObject;
-		table.getItem(index).dispose();
-		TableItem newItem = new TableItem(table, SWT.NONE, newIndex);
-		newItem.setText(columnObject.name);
-		newItem.setImage(columnObject.image);
-		newItem.setData(columnObject);
-		table.setSelection(newIndex);
-		handleSelectionChanged(newIndex);
-	}
-
-	private void createLabel(final Composite composite, String string) {
-		Label label = new Label(composite, SWT.NONE);
-		label.setText(string);
-	}
-
-	/**
-	 * @param item
-	 * @return
-	 */
-	private String getColumnName(Item item) {
-		String result = ""; //$NON-NLS-1$
-		if (item instanceof TableColumn) {
-			result = ((TableColumn) item).getText();
-			if (result.trim().equals("")) { //$NON-NLS-1$
-				result = ((TableColumn) item).getToolTipText();
-			}
-		} else if (item instanceof TreeColumn) {
-			result = ((TreeColumn) item).getText();
-			if (result.trim().equals("")) { //$NON-NLS-1$
-				result = ((TreeColumn) item).getToolTipText();
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @param item
-	 * @return
-	 */
-	private int getColumnWidth(Item item) {
-		if (item instanceof TableColumn) {
-			return ((TableColumn) item).getWidth();
-		} else if (item instanceof TreeColumn) {
-			return ((TreeColumn) item).getWidth();
-		}
-		return 0;
-	}
-
-	/**
-	 * @return
-	 */
-	private Item[] getViewerColumns() {
-		if (targetControl instanceof Table) {
-			return ((Table) targetControl).getColumns();
-		} else if (targetControl instanceof Tree) {
-			return ((Tree) targetControl).getColumns();
-		}
-		return new Item[0];
-	}
-
-	private void handleSelectionChanged(int index) {
-		ColumnObject c = columnObjects[index];
-		text.setText(Integer.toString(c.width));
-		text.setEnabled(c.resizable);
-		if (moveableColumnsFound) {
-			upButton.setEnabled(c.moveable && index > 0);
-			downButton.setEnabled(c.moveable
-					&& index + 1 < table.getItemCount());
-		}
-	}
-
-	protected void okPressed() {
-		int[] columnOrder = new int[columnObjects.length];
-		for (int i = 0; i < columnObjects.length; i++) {
-			ColumnObject columnObject = columnObjects[i];
-			columnOrder[i] = columnObject.index;
-			setColumnWidth(columnObject.column, columnObject.width);
-		}
-		setColumnOrder(columnOrder);
-		super.okPressed();
-	}
-
-	/**
-	 * @param column
-	 * @param width
-	 */
-	private void setColumnWidth(Item item, int width) {
-		if (item instanceof TableColumn) {
-			((TableColumn) item).setWidth(width);
-		} else if (item instanceof TreeColumn) {
-			((TreeColumn) item).setWidth(width);
-		}
-	}
-
-	/**
-	 * @param columnOrder
-	 */
-	private void setColumnOrder(int[] order) {
-		if (targetControl instanceof Table) {
-			((Table) targetControl).setColumnOrder(order);
-		} else if (targetControl instanceof Tree) {
-			((Tree) targetControl).setColumnOrder(order);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/InternalPolicy.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/InternalPolicy.java
deleted file mode 100644
index 28280f3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/InternalPolicy.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jface.internal;
-
-import java.util.Map;
-
-/**
- * Internal class used for non-API debug flags.
- * 
- * @since 3.3
- */
-public class InternalPolicy {
-
-	/**
-	 * (NON-API) A flag to indicate whether reentrant viewer calls should always be
-	 * logged. If false, only the first reentrant call will cause a log entry.
-	 * 
-	 * @since 3.3
-	 */
-	public static boolean DEBUG_LOG_REENTRANT_VIEWER_CALLS = false;
-
-	/**
-	 * (NON-API) Instead of logging current conflicts they can be
-	 * held here.  If there is a problem, they can be reported then.
-	 */
-	public static Map currentConflicts = null;
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/JFaceActivator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/JFaceActivator.java
deleted file mode 100644
index b4229f0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/JFaceActivator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jface.internal;
-
-import org.osgi.framework.*;
-
-/**
- * JFaceActivator is the activator class for the JFace plug-in when it is being used
- * within a full Eclipse install.
- * @since 3.3
- *
- */
-public class JFaceActivator implements BundleActivator {
-
-	private static BundleContext bundleContext;
-
-	/* (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		bundleContext = context;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		bundleContext = null;
-	}
-
-	/**
-	 * Return the bundle context for this bundle, or <code>null</code> if
-	 * there is not one. (for instance if the bundle is not activated or we aren't
-	 * running OSGi.
-	 * 
-	 * @return the bundle context or <code>null</code>
-	 */
-	public static BundleContext getBundleContext() {
-		return bundleContext;
-	}
-
-	/**
-	 * Return the Bundle object for JFace. Returns <code>null</code> if it is not
-	 * available.
-	 * 
-	 * @return the bundle or <code>null</code>
-	 */
-	public static Bundle getBundle() {
-		return bundleContext == null ? null : bundleContext.getBundle();
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/CoolBarManager2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/CoolBarManager2.java
deleted file mode 100644
index a76b80d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/CoolBarManager2.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.internal.provisional.action;
-
-import org.eclipse.jface.action.CoolBarManager;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-
-/**
- * Extends <code>CoolBarManager</code> to implement <code>ICoolBarManager2</code>
- * 
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
-*/
-public class CoolBarManager2 extends CoolBarManager implements ICoolBarManager2 {
-
-    /**
-     * Creates a new cool bar manager with the default style. Equivalent to
-     * <code>CoolBarManager(SWT.NONE)</code>.
-     */
-    public CoolBarManager2() {
-        super();
-    }
-
-    /**
-     * Creates a cool bar manager for an existing cool bar control. This
-     * manager becomes responsible for the control, and will dispose of it when
-     * the manager is disposed.
-     * 
-     * @param coolBar
-     *            the cool bar control
-     */
-    public CoolBarManager2(CoolBar coolBar) {
-        super(coolBar);
-    }
-
-    /**
-     * Creates a cool bar manager with the given SWT style. Calling <code>createControl</code>
-     * will create the cool bar control.
-     * 
-     * @param style
-     *            the cool bar item style; see
-     *            {@link org.eclipse.swt.widgets.CoolBar CoolBar}for for valid
-     *            style bits
-     */
-    public CoolBarManager2(int style) {
-       super(style);
-    }
-    
-    /**
-     * Creates and returns this manager's cool bar control. Does not create a
-     * new control if one already exists.
-     * 
-     * @param parent
-     *            the parent control
-     * @return the cool bar control
-	 * @since 3.2
-     */
-    public Control createControl2(Composite parent) {
-        return createControl(parent);
-    }
-    
-    /**
-     * Returns the control for this manager.
-     * 
-     * @return the control, or <code>null</code> if none
-	 * @since 3.2
-     */
-    public Control getControl2() {
-        return getControl();
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ICoolBarManager2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ICoolBarManager2.java
deleted file mode 100644
index 169f764..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ICoolBarManager2.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.internal.provisional.action;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Extends <code>ICoolBarManager</code> to allow clients to be decoupled
- * from the actual kind of control used.
- * 
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public interface ICoolBarManager2 extends ICoolBarManager {
-
-    /**
-     * Creates and returns this manager's control. Does not create a
-     * new control if one already exists.
-     * 
-     * 
-     * @param parent
-     *            the parent control
-     * @return the control
-	 * @since 3.2
-     */
-    public Control createControl2(Composite parent);
-
-    /**
-     * Returns the bar control for this manager.
-     * 
-	 * <p>
-	 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
-	 * part of a work in progress. There is a guarantee neither that this API will
-	 * work nor that it will remain the same. Please do not use this API without
-	 * consulting with the Platform/UI team.
-	 * </p>
-     *  
-     * @return the bar control, or <code>null</code> if none
-	 * @since 3.2
-     */
-    public Control getControl2();
-
-    /**
-     * Synchronizes the visual order of the cool items in the control with this
-     * manager's internal data structures. This method should be called before
-     * requesting the order of the contribution items to ensure that the order
-     * is accurate.
-     * <p>
-     * Note that <code>update()</code> and <code>refresh()</code> are
-     * converses: <code>update()</code> changes the visual order to match the
-     * internal structures, and <code>refresh</code> changes the internal
-     * structures to match the visual order.
-     * </p>
-     * 
-	 * <p>
-	 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
-	 * part of a work in progress. There is a guarantee neither that this API will
-	 * work nor that it will remain the same. Please do not use this API without
-	 * consulting with the Platform/UI team.
-	 * </p>
-     * 
-	 * @since 3.2
-     */
-    public void refresh();
-    
-    /**
-	 * Disposes the resources for this manager.
-     * 
-	 * <p>
-	 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
-	 * part of a work in progress. There is a guarantee neither that this API will
-	 * work nor that it will remain the same. Please do not use this API without
-	 * consulting with the Platform/UI team.
-	 * </p>
-     * 
-     * @since 3.2 
-     */
-    public void dispose();
-
-    /**
-     * Restores the canonical order of this cool bar manager. The canonical
-     * order is the order in which the contribution items where added.
-     * 
-	 * <p>
-	 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
-	 * part of a work in progress. There is a guarantee neither that this API will
-	 * work nor that it will remain the same. Please do not use this API without
-	 * consulting with the Platform/UI team.
-	 * </p>
-     * 
-	 * @since 3.2     
-	 */
-    public void resetItemOrder();
-
-    /**
-     * Replaces the current items with the given items.
-     * Forces an update.
-     * 
-	 * <p>
-	 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
-	 * part of a work in progress. There is a guarantee neither that this API will
-	 * work nor that it will remain the same. Please do not use this API without
-	 * consulting with the Platform/UI team.
-	 * </p>
-     * 
-     * @param newItems the items with which to replace the current items
-     * @since 3.2
-	 */
-    public void setItems(IContributionItem[] newItems);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarContributionItem.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarContributionItem.java
deleted file mode 100644
index cec2a35..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarContributionItem.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.internal.provisional.action;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.IToolBarManager;
-
-/**
- * The intention of this interface is to provide in interface for 
- * ToolBarContributionItem so that the implementation can be replaced.
- * 
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public interface IToolBarContributionItem extends IContributionItem {
-
-    /**
-     * Returns the current height of the corresponding cool item.
-     * 
-     * @return the current height
-     */
-    public int getCurrentHeight();
-
-    /**
-     * Returns the current width of the corresponding cool item.
-     * 
-     * @return the current size
-     */
-    public int getCurrentWidth();
-
-    /**
-     * Returns the minimum number of tool items to show in the cool item.
-     * 
-     * @return the minimum number of tool items to show, or <code>SHOW_ALL_ITEMS</code>
-     *         if a value was not set
-     * @see #setMinimumItemsToShow(int)
-     */
-    public int getMinimumItemsToShow();
-    
-    /**
-     * Returns whether chevron support is enabled.
-     * 
-     * @return <code>true</code> if chevron support is enabled, <code>false</code>
-     *         otherwise
-     */
-    public boolean getUseChevron();
-    
-    /**
-     * Sets the current height of the cool item. Update(SIZE) should be called
-     * to adjust the widget.
-     * 
-     * @param currentHeight
-     *            the current height to set
-     */
-    public void setCurrentHeight(int currentHeight);
-
-    /**
-     * Sets the current width of the cool item. Update(SIZE) should be called
-     * to adjust the widget.
-     * 
-     * @param currentWidth
-     *            the current width to set
-     */
-    public void setCurrentWidth(int currentWidth);
-
-    /**
-     * Sets the minimum number of tool items to show in the cool item. If this
-     * number is less than the total tool items, a chevron will appear and the
-     * hidden tool items appear in a drop down menu. By default, all the tool
-     * items are shown in the cool item.
-     * 
-     * @param minimumItemsToShow
-     *            the minimum number of tool items to show.
-     * @see #getMinimumItemsToShow()
-     * @see #setUseChevron(boolean)
-     */
-    public void setMinimumItemsToShow(int minimumItemsToShow);
-
-    /**
-     * Enables or disables chevron support for the cool item. By default,
-     * chevron support is enabled.
-     * 
-     * @param value
-     *            <code>true</code> to enable chevron support, <code>false</code>
-     *            otherwise.
-     */
-    public void setUseChevron(boolean value);
-    
-    /**
-     * Returns the internal tool bar manager of the contribution item.
-     * 
-     * @return the tool bar manager, or <code>null</code> if one is not
-     *         defined.
-     * @see IToolBarManager
-     */
-    public IToolBarManager getToolBarManager();
-    
-    /**
-     * Returns the parent contribution manager, or <code>null</code> if this 
-     * contribution item is not currently added to a contribution manager.
-     * 
-     * @return the parent contribution manager, or <code>null</code>
-     * 
-     * TODO may not need this, getToolBarManager may be enough.
-     */
-    public IContributionManager getParent();
-    
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarManager2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarManager2.java
deleted file mode 100644
index 5f65571..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/IToolBarManager2.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.internal.provisional.action;
-
-import org.eclipse.jface.action.IContributionManagerOverrides;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * The <code>IToolBarManager2</code> extends <code>IToolBarManager</code> to
- * allow clients to be isolated from the actual kind of SWT control used by the
- * manager.
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public interface IToolBarManager2 extends IToolBarManager {
-
-	/**
-	 * The property id for changes to the control's layout
-	 */
-	public static final String PROP_LAYOUT = "PROP_LAYOUT"; //$NON-NLS-1$
-
-	/**
-	 * Creates and returns this manager's toolbar control. Does not create a new
-	 * control if one already exists.
-	 * 
-	 * @param parent
-	 *            the parent control
-	 * @return the toolbar control
-	 */
-	public ToolBar createControl(Composite parent);
-
-	/**
-	 * Creates and returns this manager's control. Does not create a new control
-	 * if one already exists.
-	 * 
-	 * @param parent
-	 *            the parent control
-	 * @return the control
-	 */
-	public Control createControl2(Composite parent);
-
-	/**
-	 * Returns the toolbar control for this manager.
-	 * 
-	 * @return the toolbar control, or <code>null</code> if none
-	 */
-	public ToolBar getControl();
-
-	/**
-	 * Returns the control for this manager.
-	 * 
-	 * @return the control, or <code>null</code> if none
-	 */
-	public Control getControl2();
-
-	/**
-	 * Disposes the resources for this manager.
-	 */
-	public void dispose();
-
-	/**
-	 * Returns the item count of the control used by this manager.
-	 * 
-	 * @return the number of items in the control
-	 */
-	public int getItemCount();
-
-	/**
-	 * Registers a property change listner with this manager.
-	 * 
-	 * @param listener
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener);
-
-	/**
-	 * Removes a property change listner from this manager.
-	 * 
-	 * @param listener
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener);
-
-	/**
-	 * Sets the overrides for this contribution manager
-	 * 
-	 * @param newOverrides
-	 *            the overrides for the items of this manager
-	 */
-	public void setOverrides(IContributionManagerOverrides newOverrides);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarContributionItem2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarContributionItem2.java
deleted file mode 100644
index 2ff1239..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarContributionItem2.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.internal.provisional.action;
-
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.ToolBarContributionItem;
-
-/**
- * Extends <code>ToolBarContributionItem</code> to implement <code>IToolBarContributionItem</code>.
- * 
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public class ToolBarContributionItem2 extends ToolBarContributionItem implements
-		IToolBarContributionItem {
-
-	/**
-	 * 
-	 */
-	public ToolBarContributionItem2() {
-		super();
-	}
-
-	/**
-	 * @param toolBarManager
-	 */
-	public ToolBarContributionItem2(IToolBarManager toolBarManager) {
-		super(toolBarManager);
-	}
-
-	/**
-	 * @param toolBarManager
-	 * @param id
-	 */
-	public ToolBarContributionItem2(IToolBarManager toolBarManager, String id) {
-		super(toolBarManager, id);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarManager2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarManager2.java
deleted file mode 100644
index d026d64..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/provisional/action/ToolBarManager2.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.internal.provisional.action;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * Extends <code>ToolBarManager</code> to implement <code>IToolBarManager2</code>.
- * 
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public class ToolBarManager2 extends ToolBarManager implements IToolBarManager2 {
-
-	/**
-	 * A collection of objects listening to changes to this manager. This
-	 * collection is <code>null</code> if there are no listeners.
-	 */
-	private transient ListenerList listenerList = null;
-	
-	/**
-	 * Creates a new tool bar manager with the default SWT button style. Use the
-	 * <code>createControl</code> method to create the tool bar control.
-	 */
-	public ToolBarManager2() {
-		super();
-	}
-
-	/**
-	 * Creates a tool bar manager with the given SWT button style. Use the
-	 * <code>createControl</code> method to create the tool bar control.
-	 * 
-	 * @param style
-	 *            the tool bar item style
-	 * @see org.eclipse.swt.widgets.ToolBar for valid style bits
-	 */
-	public ToolBarManager2(int style) {
-		super(style);
-	}
-
-	/**
-	 * Creates a tool bar manager for an existing tool bar control. This manager
-	 * becomes responsible for the control, and will dispose of it when the
-	 * manager is disposed.
-	 * 
-	 * @param toolbar
-	 *            the tool bar control
-	 */
-	public ToolBarManager2(ToolBar toolbar) {
-		super(toolbar);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IToolBarManager2#createControl2(org.eclipse.swt.widgets.Composite)
-	 */
-	public Control createControl2(Composite parent) {
-		return createControl(parent);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IToolBarManager2#getControl2()
-	 */
-	public Control getControl2() {
-		return getControl();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IToolBarManager2#getItemCount()
-	 */
-	public int getItemCount() {
-		ToolBar toolBar = getControl();
-		if (toolBar == null || toolBar.isDisposed()) {
-			return 0;
-		}
-		return toolBar.getItemCount();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IToolBarManager2#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		if (listenerList == null) {
-			listenerList = new ListenerList(ListenerList.IDENTITY);
-		}
-
-		listenerList.add(listener);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IToolBarManager2#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		if (listenerList != null) {
-			listenerList.remove(listener);
-
-			if (listenerList.isEmpty()) {
-				listenerList = null;
-			}
-		}
-	}
-	
-	/**
-	 * @return the listeners attached to this event manager.
-	 * The listeners currently attached; may be empty, but never
-	 * null.
-	 * 
-	 */
-	protected final Object[] getListeners() {
-		final ListenerList list = listenerList;
-		if (list == null) {
-			return new Object[0];
-		}
-
-		return list.getListeners();
-	}
-
-	/*
-	 * Notifies any property change listeners that a property has changed. Only
-	 * listeners registered at the time this method is called are notified.
-	 */
-	private void firePropertyChange(final PropertyChangeEvent event) {
-		final Object[] list = getListeners();
-		for (int i = 0; i < list.length; ++i) {
-			((IPropertyChangeListener) list[i]).propertyChange(event);
-		}
-	}
-
-	/*
-	 * Notifies any property change listeners that a property has changed. Only
-	 * listeners registered at the time this method is called are notified. This
-	 * method avoids creating an event object if there are no listeners
-	 * registered, but calls firePropertyChange(PropertyChangeEvent) if there are.
-	 */
-	private void firePropertyChange(final String propertyName,
-			final Object oldValue, final Object newValue) {
-		if (listenerList != null) {
-			firePropertyChange(new PropertyChangeEvent(this, propertyName,
-					oldValue, newValue));
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.ToolBarManager#relayout(org.eclipse.swt.widgets.ToolBar, int, int)
-	 */
-	protected void relayout(ToolBar layoutBar, int oldCount, int newCount) {
-		super.relayout(layoutBar, oldCount, newCount);
-		firePropertyChange(PROP_LAYOUT, new Integer(oldCount), new Integer(newCount));
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/AbstractColumnLayout.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/AbstractColumnLayout.java
deleted file mode 100644
index f420735..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/AbstractColumnLayout.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation (original file org.eclipse.ui.texteditor.templates.ColumnLayout)
- *     Tom Schindl <tom.schindl@bestsolution.at> - refactored to be widget independent (bug 171824)
- *                                               - fix for bug 178280, 184342, 184045, 208014, 214532
- *     Micah Hainline <micah_hainline@yahoo.com> - fix in bug: 208335
- *******************************************************************************/
-package org.eclipse.jface.layout;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.viewers.ColumnLayoutData;
-import org.eclipse.jface.viewers.ColumnPixelData;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Scrollable;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * The AbstractColumnLayout is a {@link Layout} used to set the size of a table
- * in a consistent way even during a resize unlike a {@link TableLayout} which
- * only sets initial sizes.
- *
- * <p>
- * <b>You can only add the layout to a container whose only child is the
- * table/tree control you want the layouts applied to.</b>
- * </p>
- *
- * @since 3.4
- */
-public abstract class AbstractColumnLayout extends Layout {
-	private static int COLUMN_TRIM;
-	static {
-		if ("win32".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			COLUMN_TRIM = 4;
-		} else if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			COLUMN_TRIM = 24;
-		} else {
-			COLUMN_TRIM = 3;
-		}
-	}
-
-	static final boolean IS_GTK = "gtk".equals(SWT.getPlatform());//$NON-NLS-1$
-
-	static final String LAYOUT_DATA = Policy.JFACE + ".LAYOUT_DATA"; //$NON-NLS-1$
-
-	private boolean inupdateMode = false;
-
-	private boolean relayout = true;
-
-	private Listener resizeListener = new Listener() {
-
-		public void handleEvent(Event event) {
-			if (!inupdateMode) {
-				updateColumnData(event.widget);
-			}
-		}
-
-	};
-
-	/**
-	 * Adds a new column of data to this table layout.
-	 *
-	 * @param column
-	 *            the column
-	 *
-	 * @param data
-	 *            the column layout data
-	 */
-	public void setColumnData(Widget column, ColumnLayoutData data) {
-
-		if (column.getData(LAYOUT_DATA) == null) {
-			column.addListener(SWT.Resize, resizeListener);
-		}
-
-		column.setData(LAYOUT_DATA, data);
-	}
-
-	/**
-	 * Compute the size of the table or tree based on the ColumnLayoutData and
-	 * the width and height hint.
-	 *
-	 * @param scrollable
-	 *            the widget to compute
-	 * @param wHint
-	 *            the width hint
-	 * @param hHint
-	 *            the height hint
-	 * @return Point where x is the width and y is the height
-	 */
-	private Point computeTableTreeSize(Scrollable scrollable, int wHint,
-			int hHint) {
-		Point result = scrollable.computeSize(wHint, hHint);
-
-		int width = 0;
-		int size = getColumnCount(scrollable);
-		for (int i = 0; i < size; ++i) {
-			ColumnLayoutData layoutData = getLayoutData(scrollable, i);
-			if (layoutData instanceof ColumnPixelData) {
-				ColumnPixelData col = (ColumnPixelData) layoutData;
-				width += col.width;
-				if (col.addTrim) {
-					width += getColumnTrim();
-				}
-			} else if (layoutData instanceof ColumnWeightData) {
-				ColumnWeightData col = (ColumnWeightData) layoutData;
-				width += col.minimumWidth;
-			} else {
-				Assert.isTrue(false, "Unknown column layout data"); //$NON-NLS-1$
-			}
-		}
-		if (width > result.x)
-			result.x = width;
-
-		return result;
-	}
-
-	/**
-	 * Layout the scrollable based on the supplied width and area. Only increase
-	 * the size of the scrollable if increase is <code>true</code>.
-	 *
-	 * @param scrollable
-	 * @param width
-	 * @param area
-	 * @param increase
-	 */
-	private void layoutTableTree(final Scrollable scrollable, final int width,
-			final Rectangle area, final boolean increase) {
-		final int numberOfColumns = getColumnCount(scrollable);
-		final int[] widths = new int[numberOfColumns];
-
-		final int[] weightColumnIndices = new int[numberOfColumns];
-		int numberOfWeightColumns = 0;
-
-		int fixedWidth = 0;
-		int totalWeight = 0;
-
-		// First calc space occupied by fixed columns
-		for (int i = 0; i < numberOfColumns; i++) {
-			ColumnLayoutData col = getLayoutData(scrollable, i);
-			if (col instanceof ColumnPixelData) {
-				ColumnPixelData cpd = (ColumnPixelData) col;
-				int pixels = cpd.width;
-				if (cpd.addTrim) {
-					pixels += getColumnTrim();
-				}
-				widths[i] = pixels;
-				fixedWidth += pixels;
-			} else if (col instanceof ColumnWeightData) {
-				ColumnWeightData cw = (ColumnWeightData) col;
-				weightColumnIndices[numberOfWeightColumns] = i;
-				numberOfWeightColumns++;
-				totalWeight += cw.weight;
-			} else {
-				Assert.isTrue(false, "Unknown column layout data"); //$NON-NLS-1$
-			}
-		}
-
-		boolean recalculate;
-		do {
-			recalculate = false;
-			for (int i = 0; i < numberOfWeightColumns; i++) {
-				int colIndex = weightColumnIndices[i];
-				ColumnWeightData cw = (ColumnWeightData) getLayoutData(
-						scrollable, colIndex);
-				final int minWidth = cw.minimumWidth;
-				final int allowedWidth = totalWeight == 0 ? 0 : (width - fixedWidth) * cw.weight
-						/ totalWeight;
-				if (allowedWidth < minWidth) {
-					/*
-					 * if the width assigned by weight is less than the minimum,
-					 * then treat this column as fixed, remove it from weight
-					 * calculations, and recalculate other weights.
-					 */
-					numberOfWeightColumns--;
-					totalWeight -= cw.weight;
-					fixedWidth += minWidth;
-					widths[colIndex] = minWidth;
-					System.arraycopy(weightColumnIndices, i + 1,
-							weightColumnIndices, i, numberOfWeightColumns - i);
-					recalculate = true;
-					break;
-				}
-				widths[colIndex] = allowedWidth;
-			}
-		} while (recalculate);
-
-		if (increase) {
-			scrollable.setSize(area.width, area.height);
-		}
-
-		inupdateMode = true;
-		setColumnWidths(scrollable, widths);
-		scrollable.update();
-		inupdateMode = false;
-
-		if (!increase) {
-			scrollable.setSize(area.width, area.height);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
-	 *      int, int, boolean)
-	 */
-	protected Point computeSize(Composite composite, int wHint, int hHint,
-			boolean flushCache) {
-		return computeTableTreeSize(getControl(composite), wHint, hHint);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
-	 *      boolean)
-	 */
-	protected void layout(Composite composite, boolean flushCache) {
-		Rectangle area = composite.getClientArea();
-		Scrollable table = getControl(composite);
-		int tableWidth = table.getSize().x;
-		int trim = computeTrim(area, table, tableWidth);
-		int width = Math.max(0, area.width - trim);
-
-		if (width > 1)
-			layoutTableTree(table, width, area, tableWidth < area.width);
-
-		// For the first time we need to relayout because Scrollbars are not
-		// calculate appropriately
-		if (relayout) {
-			relayout = false;
-			composite.layout();
-		}
-	}
-
-	/**
-	 * Compute the area required for trim.
-	 *
-	 * @param area
-	 * @param scrollable
-	 * @param currentWidth
-	 * @return int
-	 */
-	private int computeTrim(Rectangle area, Scrollable scrollable,
-			int currentWidth) {
-		int trim;
-
-		if (currentWidth > 1) {
-			trim = currentWidth - scrollable.getClientArea().width;
-		} else {
-			// initially, the table has no extend and no client area - use the
-			// border with
-			// plus some padding as educated guess
-			trim = 2 * scrollable.getBorderWidth() + 1;
-		}
-
-		return trim;
-	}
-
-	/**
-	 * Get the control being laid out.
-	 *
-	 * @param composite
-	 *            the composite with the layout
-	 * @return {@link Scrollable}
-	 */
-	Scrollable getControl(Composite composite) {
-		return (Scrollable) composite.getChildren()[0];
-	}
-
-	/**
-	 * Get the number of columns for the receiver.
-	 *
-	 * @return the number of columns
-	 */
-	abstract int getColumnCount(Scrollable tableTree);
-
-	/**
-	 * Set the widths of the columns.
-	 *
-	 * @param widths
-	 */
-	abstract void setColumnWidths(Scrollable tableTree, int[] widths);
-
-	abstract ColumnLayoutData getLayoutData(Scrollable tableTree,
-			int columnIndex);
-
-	abstract void updateColumnData(Widget column);
-
-	/**
-	 * The number of extra pixels taken as horizontal trim by the table column.
-	 * To ensure there are N pixels available for the content of the column,
-	 * assign N+COLUMN_TRIM for the column width.
-	 *
-	 * @return the trim used by the columns
-	 * @since 3.4
-	 */
-	protected int getColumnTrim() {
-		return COLUMN_TRIM;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridDataFactory.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridDataFactory.java
deleted file mode 100644
index 39845e1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridDataFactory.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM - initial implementation, bug 178888
- *******************************************************************************/
-package org.eclipse.jface.layout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * This class provides a convienient shorthand for creating and initializing
- * GridData. This offers several benefits over creating GridData normal way:
- * 
- * <ul>
- * <li>The same factory can be used many times to create several GridData instances</li>
- * <li>The setters on GridDataFactory all return "this", allowing them to be chained</li> 
- * <li>GridDataFactory uses vector setters (it accepts Points), making it easy to
- *     set X and Y values together</li>
- * </ul>
- * 
- * <p>
- * GridDataFactory instances are created using one of the static methods on this class. 
- * </p>
- * 
- * <p>
- * Example usage:
- * </p>
- * <code><pre>
- * 
- * ////////////////////////////////////////////////////////////
- * // Example 1: Typical grid data for a non-wrapping label
- * 
- *     // GridDataFactory version
- *     GridDataFactory.fillDefaults().applyTo(myLabel);
- * 
- *     // Equivalent SWT version
- *     GridData labelData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
- *     myLabel.setLayoutData(labelData);
- * 
- * ///////////////////////////////////////////////////////////
- * // Example 2: Typical grid data for a wrapping label
- * 
- *     // GridDataFactory version
- *     GridDataFactory.fillDefaults()
- *          .align(SWT.FILL, SWT.CENTER)
- *    	    .hint(150, SWT.DEFAULT)
- *    	    .grab(true, false)
- *          .applyTo(wrappingLabel);
- *      
- *     // Equivalent SWT version
- *     GridData wrappingLabelData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);
- *     wrappingLabelData.minimumWidth = 1;
- *     wrappingLabelData.widthHint = 150;
- *     wrappingLabel.setLayoutData(wrappingLabelData);
- * 
- * //////////////////////////////////////////////////////////////
- * // Example 3: Typical grid data for a scrollable control (a list box, tree, table, etc.)
- * 
- *     // GridDataFactory version
- *     GridDataFactory.fillDefaults().grab(true, true).hint(150, 150).applyTo(listBox);
- * 
- *     // Equivalent SWT version
- *     GridData listBoxData = new GridData(GridData.FILL_BOTH);
- *     listBoxData.widthHint = 150;
- *     listBoxData.heightHint = 150;
- *     listBoxData.minimumWidth = 1;
- *     listBoxData.minimumHeight = 1;
- *     listBox.setLayoutData(listBoxData);
- * 
- * /////////////////////////////////////////////////////////////
- * // Example 4: Typical grid data for a button
- *
- *     // GridDataFactory version
- *     Point preferredSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
- *     Point hint = Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
- *     GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(hint).applyTo(button);
- *
- *     // Equivalent SWT version
- *     Point preferredSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
- *     Point hint = Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
- *     GridData buttonData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
- *     buttonData.widthHint = hint.x;
- *     buttonData.heightHint = hint.y;
- *     button.setLayoutData(buttonData);
- *     
- * /////////////////////////////////////////////////////////////
- * // Example 5: Generated GridData
- *
- *     // Generates GridData a wrapping label that spans 2 columns
- *     GridDataFactory.generate(wrappingLabel, 2, 1);
- *     
- *     // Generates GridData for a listbox. and adjusts the preferred size to 300x400 pixels
- *     GridDataFactory.defaultsFor(listBox).hint(300, 400).applyTo(listBox);
- *     
- *     // Generates GridData equivalent to example 4
- *     GridDataFactory.generate(button, 1, 1);
- *          
- * </pre></code>
- * 
- * @since 3.2
- */
-public final class GridDataFactory {
-    private GridData data;
-    
-    /**
-     * Creates a GridDataFactory that creates copes of the given GridData. 
-     * 
-     * @param d template GridData to copy
-     */
-    private GridDataFactory(GridData d) {
-        this.data = d;
-    }
-    
-    /**
-     * Creates a new GridDataFactory initialized with the SWT defaults.
-     * This factory will generate GridData that is equivalent to 
-     * "new GridData()".
-     * 
-     * <p>
-     * Initial values are:
-     * </p>
-     * 
-     * <ul>
-     * <li>align(SWT.BEGINNING, SWT.CENTER)</li>
-     * <li>exclude(false)</li>
-     * <li>grab(false, false)</li>
-     * <li>hint(SWT.DEFAULT, SWT.DEFAULT)</li>
-     * <li>indent(0,0)</li>
-     * <li>minSize(0,0)</li>
-     * <li>span(1,1)</li>
-     * </ul>
-     * 
-     * @return a new GridDataFactory instance
-     * @see #fillDefaults()
-     */
-    public static GridDataFactory swtDefaults() {
-    	return new GridDataFactory(new GridData());
-    }
-    
-    /**
-     * Creates a new GridDataFactory that creates copies of the given GridData
-     * by default.
-     * 
-     * @param data GridData to copy
-     * @return a new GridDataFactory that creates copies of the argument by default
-     */
-    public static GridDataFactory createFrom(GridData data) {
-    	return new GridDataFactory(copyData(data));
-    }
-    
-    /**
-     * Creates a GridDataFactory initialized with defaults that will cause
-     * the control to fill its cell. The minimum size is set to the smallest possible
-     * minimum size supported by SWT. Currently, the smallest supported minimum size
-     * is (1,1) so this is the default. If GridLayout ever adds support for grid data
-     * with no minimum size, this will be changed to 0,0 in the future. 
-     * 
-     * <p>
-     * Initial values are:
-     * </p>
-     * 
-     * <ul>
-     * <li>align(SWT.FILL, SWT.FILL)</li>
-     * <li>exclude(false)</li>
-     * <li>grab(false, false)</li>
-     * <li>hint(SWT.DEFAULT, SWT.DEFAULT)</li>
-     * <li>indent(0,0)</li>
-     * <li>minSize(1,1)</li>
-     * <li>span(1,1)</li>
-     * </ul>
-     *  
-     * @return a GridDataFactory that makes controls fill their grid by default
-     * 
-     * @see #swtDefaults()
-     */
-    public static GridDataFactory fillDefaults() {
-    	GridData data = new GridData();
-        data.minimumWidth = 1;
-        data.minimumHeight = 1;
-        data.horizontalAlignment = SWT.FILL;
-        data.verticalAlignment = SWT.FILL;
-        
-    	return new GridDataFactory(data);
-    }
-    
-    /**
-     * Returns a GridDataFactory initialized with heuristicly generated defaults for the given control.
-     * To be precise, this method picks the default values that GridLayoutFactory.generateLayout
-     * would have assigned to the control. Does not attach GridData to the control. Callers must
-     * additionally call applyTo(theControl) if they wish to use the generated values.
-     * 
-     * <p>
-     * This method is intended for situations where generateLayout is generating layout data
-     * for a particular control that is not quite right for the desired layout.
-     * This allows callers to start with the generated values and tweak one or two settings
-     * before applying the GridData to the control.
-     * </p> 
-     * 
-     * @see GridLayoutFactory#generateLayout(org.eclipse.swt.widgets.Composite)
-     * @param theControl 
-     * @return a GridLayoutFactory initialized with defaults that GridLayoutFactory would have 
-     * @since 3.3
-     */
-    public static GridDataFactory defaultsFor(Control theControl) {
-    	return LayoutGenerator.defaultsFor(theControl);
-    }
-    
-    /**
-     * Generates layout data to the given control, given the number of cells
-     * spanned by the control. Attaches a GridData to the control. This method 
-     * allows generated layout data to be used with controls that span multiple cells. 
-     * <p>
-     * The generated layout data is the same as what would be generated by 
-     * GridLayoutFactory.generateLayout, except that the span is configurable
-     * </p>  
-     * 
-     * @see GridLayoutFactory#generateLayout(org.eclipse.swt.widgets.Composite)
-     * @param theControl
-     * @param hSpan number of columns spanned by the control
-     * @param vSpan number of rows spanned by the control
-     * @since 3.3
-     */
-    public static void generate(Control theControl, int hSpan, int vSpan) {
-    	defaultsFor(theControl).span(hSpan, vSpan).applyTo(theControl);
-    }
-
-    /**
-     * Generates layout data to the given control, given the number of cells
-     * spanned by the control. Attaches GridData to the control. This method 
-     * allows generated layout data to be used with controls that span multiple cells. 
-     * <p>
-     * The generated layout data is the same as what would be generated by 
-     * GridLayoutFactory.generateLayout, except that the span is configurable
-     * </p>  
-     * 
-     * @see GridLayoutFactory#generateLayout(org.eclipse.swt.widgets.Composite)
-     * @param theControl
-     * @param span The x coordinate indicates the number of
-     * columns spanned, and the y coordinate indicates the number of rows.
-     * @since 3.3
-     */
-    public static void generate(Control theControl, Point span) {
-    	defaultsFor(theControl).span(span).applyTo(theControl);
-    }
-    
-    /**
-     * Sets the GridData span. The span controls how many cells
-     * are filled by the control. 
-     * 
-     * @param hSpan number of columns spanned by the control
-     * @param vSpan number of rows spanned by the control
-     * @return this
-     */
-    public GridDataFactory span(int hSpan, int vSpan) {
-        data.horizontalSpan = hSpan;
-        data.verticalSpan = vSpan;
-        return this;
-    }
-
-    /**
-     * Sets the GridData span. The span controls how many cells
-     * are filled by the control. 
-     * 
-     * @param span the new span. The x coordinate indicates the number of
-     * columns spanned, and the y coordinate indicates the number of rows.
-     * @return this
-     */
-    public GridDataFactory span(Point span) {
-        data.horizontalSpan = span.x;
-        data.verticalSpan = span.y;
-        return this;
-    }
-
-    /**
-     * Sets the width and height hints. The width and height hints override
-     * the control's preferred size. If either hint is set to SWT.DEFAULT,
-     * the control's preferred size is used. 
-     * 
-     * @param xHint horizontal hint (pixels), or SWT.DEFAULT to use the control's preferred size
-     * @param yHint vertical hint (pixels), or SWT.DEFAULT to use the control's preferred size
-     * @return this
-     */
-    public GridDataFactory hint(int xHint, int yHint) {
-        data.widthHint = xHint;
-        data.heightHint = yHint;
-        return this;
-    }
-
-    /**
-     * Sets the width and height hints. The width and height hints override
-     * the control's preferred size. If either hint is set to SWT.DEFAULT,
-     * the control's preferred size is used.
-     * 
-     * @param hint size (pixels) to be used instead of the control's preferred size. If
-     * the x or y values are set to SWT.DEFAULT, the control's computeSize() method will
-     * be used to obtain that dimension of the preferred size.
-     * @return this
-     */
-    public GridDataFactory hint(Point hint) {
-        data.widthHint = hint.x;
-        data.heightHint = hint.y;
-        return this;
-    }
-
-    /**
-     * Sets the alignment of the control within its cell.
-     * 
-     * @param hAlign horizontal alignment. One of SWT.BEGINNING, SWT.CENTER, SWT.END, or SWT.FILL.
-     * @param vAlign vertical alignment. One of SWT.BEGINNING, SWT.CENTER, SWT.END, or SWT.FILL.
-     * @return this
-     */
-    public GridDataFactory align(int hAlign, int vAlign) {
-    	if (hAlign != SWT.BEGINNING && hAlign != SWT.CENTER && hAlign != GridData.CENTER && hAlign != SWT.END && hAlign != GridData.END && hAlign != SWT.FILL && hAlign != SWT.LEFT && hAlign != SWT.RIGHT) {
-    		throw new IllegalArgumentException();
-    	}
-    	if (vAlign != SWT.BEGINNING && vAlign != SWT.CENTER && vAlign != GridData.CENTER && vAlign != SWT.END && vAlign != GridData.END && vAlign != SWT.FILL && vAlign != SWT.TOP && vAlign != SWT.BOTTOM) {
-    		throw new IllegalArgumentException();
-    	}
-        data.horizontalAlignment = hAlign;
-        data.verticalAlignment = vAlign;
-        return this;
-    }
-
-    /**
-     * Sets the indent of the control within the cell. Moves the position of the control
-     * by the given number of pixels. Positive values move toward the lower-right, negative
-     * values move toward the upper-left.
-     * 
-     * @param hIndent distance to move to the right (negative values move left)
-     * @param vIndent distance to move down (negative values move up)
-     * @return this
-     */
-    public GridDataFactory indent(int hIndent, int vIndent) {
-        data.horizontalIndent = hIndent;
-        data.verticalIndent = vIndent;
-        return this;
-    }
-
-    /**
-     * Sets the indent of the control within the cell. Moves the position of the control
-     * by the given number of pixels. Positive values move toward the lower-right, negative
-     * values move toward the upper-left.
-     * 
-     * @param indent offset to move the control
-     * @return this
-     */
-    public GridDataFactory indent(Point indent) {
-        data.horizontalIndent = indent.x;
-        data.verticalIndent = indent.y;
-        return this;
-    }
-
-    /**
-     * Determines whether extra horizontal or vertical space should be allocated to
-     * this control's column when the layout resizes. If any control in the column
-     * is set to grab horizontal then the whole column will grab horizontal space.
-     * If any control in the row is set to grab vertical then the whole row will grab
-     * vertical space.
-     * 
-     * @param horizontal true if the control's column should grow horizontally
-     * @param vertical true if the control's row should grow vertically
-     * @return this
-     */
-    public GridDataFactory grab(boolean horizontal, boolean vertical) {
-        data.grabExcessHorizontalSpace = horizontal;
-        data.grabExcessVerticalSpace = vertical;
-        return this;
-    }
-
-    /**
-     * Sets the minimum size for the control. The control will not be permitted
-     * to shrink below this size. Note: GridLayout treats a minimum size of 0
-     * as an undocumented special value, so the smallest possible minimum size 
-     * is a size of 1. A minimum size of SWT.DEFAULT indicates that the result
-     * of computeSize(int, int, boolean) should be used as the control's minimum
-     * size.
-     * 
-     * 
-     * @param minX minimum a value of 1 or more is a horizontal size of the control (pixels). 
-     *        SWT.DEFAULT indicates that the control's preferred size should be used. A size
-     *        of 0 has special semantics defined by GridLayout. 
-     * @param minY minimum a value of 1 or more is a vertical size of the control (pixels). SWT.DEFAULT
-     *        indicates that the control's preferred size should be used. A size
-     *        of 0 has special semantics defined by GridLayout.
-     * @return this
-     */
-    public GridDataFactory minSize(int minX, int minY) {
-        data.minimumWidth = minX;
-        data.minimumHeight = minY;
-        return this;
-    }
-
-    /**
-     * Sets the minimum size for the control. The control will not be permitted
-     * to shrink below this size. Note: GridLayout treats a minimum size of 0
-     * as an undocumented special value, so the smallest possible minimum size 
-     * is a size of 1. A minimum size of SWT.DEFAULT indicates that the result
-     * of computeSize(int, int, boolean) should be used as the control's minimum
-     * size.
-     * 
-     * @param min minimum size of the control
-     * @return this
-     */
-    public GridDataFactory minSize(Point min) {
-        data.minimumWidth = min.x;
-        data.minimumHeight = min.y;
-        return this;
-    }
-
-    /**
-     * Instructs the GridLayout to ignore this control when performing layouts. 
-     * 
-     * @param shouldExclude true iff the control should be excluded from layouts
-     * @return this
-     */
-    public GridDataFactory exclude(boolean shouldExclude) {
-        data.exclude = shouldExclude;
-        return this;
-    }
-
-    /**
-     * Creates a new GridData instance. All attributes of the GridData instance
-     * will be initialized by the factory.
-     * 
-     * @return a new GridData instance
-     */
-    public GridData create() {
-        return copyData(data);
-    }
-
-    /**
-     * Creates a copy of the reciever.
-     * 
-     * @return a copy of the reciever
-     */
-    public GridDataFactory copy() {
-    	return new GridDataFactory(create());
-    }
-    
-    /**
-     * Returns a copy of the given GridData 
-     * 
-     * @param data GridData to copy
-     * @return a copy of the argument
-     */
-    public static GridData copyData(GridData data) {
-        GridData newData = new GridData(data.horizontalAlignment, data.verticalAlignment, data.grabExcessHorizontalSpace, data.grabExcessVerticalSpace, data.horizontalSpan,
-                data.verticalSpan);
-        newData.exclude = data.exclude;
-        newData.heightHint = data.heightHint;
-        newData.horizontalIndent = data.horizontalIndent;
-        newData.minimumHeight = data.minimumHeight;
-        newData.minimumWidth = data.minimumWidth;
-        newData.verticalIndent = data.verticalIndent;
-        newData.widthHint = data.widthHint;
-
-        return newData;
-    }
-
-    /**
-     * Sets the layout data on the given control. Creates a new GridData instance and
-     * assigns it to the control by calling control.setLayoutData.
-     *  
-     * @param control control whose layout data will be initialized
-     */
-    public void applyTo(Control control) {
-        control.setLayoutData(create());
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridLayoutFactory.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridLayoutFactory.java
deleted file mode 100644
index f956bfe..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/GridLayoutFactory.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM - initial implementation, bug 178888
- *     Karsten Stoeckmann - bug 156982
- *******************************************************************************/
-package org.eclipse.jface.layout;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * GridLayoutFactory creates and initializes grid layouts. There are two ways to use GridLayoutFactory.
- * Normally, it is used as a shorthand for writing "new GridLayout()" and initializing a bunch 
- * of fields. In this case the main benefit is a more concise syntax and the ability to create more
- * than one identical GridLayout from the same factory. Changing a property of the factory will affect
- * future layouts created by the factory, but has no effect on layouts that have already been created.
- * 
- * <p>
- * GridLayoutFactory can also generate grid data for all the controls in a layout. This is done with
- * the generateLayout method. To use this feature:
- * </p>
- * 
- * <ol>
- * <li>Create the composite</li>
- * <li>Create all the controls in the composite</li>
- * <li>Call generateLayout</li>
- * </ol>
- * 
- * <p>
- * The order here is important. generateLayout must be called after all the child controls have
- * been created. generateLayout will not change any layout data that has already been attached
- * to a child control and it will not recurse into nested composites. 
- * </p>
- *
- * @since 3.2
- */
-public final class GridLayoutFactory {
-	
-	/**
-	 * Template layout. The factory will create copies of this layout. 
-	 */
-    private GridLayout l;
-
-    /**
-     * Creates a new GridLayoutFactory that will create copies of the given layout.
-     * 
-     * @param l layout to copy
-     */
-    private GridLayoutFactory(GridLayout l) {
-        this.l = l;
-    }
-
-    /**
-     * Creates a factory that creates copies of the given layout.
-     * 
-     * @param l layout to copy
-     * @return a new GridLayoutFactory instance that creates copies of the given layout
-     */
-    public static GridLayoutFactory createFrom(GridLayout l) {
-    	return new GridLayoutFactory(copyLayout(l));
-    }
-    
-    /**
-     * Creates a copy of the reciever.
-     * 
-     * @return a copy of the reciever
-     */
-    public GridLayoutFactory copy() {
-    	return new GridLayoutFactory(create());
-    }
-    
-    /**
-     * Creates a GridLayoutFactory that creates GridLayouts with the default SWT
-     * values.
-     * 
-     * <p>
-     * Initial values are:
-     * </p>
-     * 
-     * <ul>
-     * <li>numColumns(1)</li>
-     * <li>margins(5,5)</li>
-     * <li>extendedMargins(0,0,0,0)</li>
-     * <li>spacing(5,5)</li>
-     * <li>equalWidth(false)</li>
-     * </ul>
-     * 
-     * @return a GridLayoutFactory that creates GridLayouts as though created with
-     * their default constructor
-     * @see #fillDefaults
-     */
-    public static GridLayoutFactory swtDefaults() {
-    	return new GridLayoutFactory(new GridLayout());
-    }
-
-    /**
-     * Creates a GridLayoutFactory that creates GridLayouts with no margins and 
-     * default dialog spacing.
-     * 
-     * <p>
-     * Initial values are:
-     * </p>
-     * 
-     * <ul>
-     * <li>numColumns(1)</li>
-     * <li>margins(0,0)</li>
-     * <li>extendedMargins(0,0,0,0)</li>
-     * <li>spacing(LayoutConstants.getSpacing())</li>
-     * <li>equalWidth(false)</li>
-     * </ul>
-     * 
-     * @return a GridLayoutFactory that creates GridLayouts as though created with
-     * their default constructor
-     * @see #swtDefaults
-     */
-    public static GridLayoutFactory fillDefaults() {
-    	GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        Point defaultSpacing = LayoutConstants.getSpacing();
-        layout.horizontalSpacing = defaultSpacing.x;
-        layout.verticalSpacing = defaultSpacing.y;
-        return new GridLayoutFactory(layout);
-    }
-    
-    /**
-     * Sets whether the columns should be forced to be equal width
-     * 
-     * @param equal true iff the columns should be forced to be equal width
-     * @return this
-     */
-    public GridLayoutFactory equalWidth(boolean equal) {
-        l.makeColumnsEqualWidth = equal;
-        return this;
-    }
-
-    /**
-     * Sets the spacing for layouts created with this factory. The spacing
-     * is the distance between cells within the layout. 
-     * 
-     * @param hSpacing horizontal spacing (pixels)
-     * @param vSpacing vertical spacing (pixels)
-     * @return this
-     * @see #margins(Point)
-     * @see #margins(int, int)
-     */
-    public GridLayoutFactory spacing(int hSpacing, int vSpacing) {
-        l.horizontalSpacing = hSpacing;
-        l.verticalSpacing = vSpacing;
-        return this;
-    }
-
-    /**
-     * Sets the spacing for layouts created with this factory. The spacing
-     * is the distance between cells within the layout. 
-     * 
-     * @param spacing space between controls in the layout (pixels)
-     * @return this
-     * @see #margins(Point)
-     * @see #margins(int, int)
-     */
-    public GridLayoutFactory spacing(Point spacing) {
-        l.horizontalSpacing = spacing.x;
-        l.verticalSpacing = spacing.y;
-        return this;
-    }
-
-    /**
-     * Sets the margins for layouts created with this factory. The margins
-     * are the distance between the outer cells and the edge of the layout.
-     * 
-     * @param margins margin size (pixels)
-     * @return this
-     * @see #spacing(Point)
-     * @see #spacing(int, int)
-     */
-    public GridLayoutFactory margins(Point margins) {
-        l.marginWidth = margins.x;
-        l.marginHeight = margins.y;
-        return this;
-    }
-
-    /**
-	 * Sets the margins for layouts created with this factory. The margins
-	 * specify the number of pixels of horizontal and vertical margin that will
-	 * be placed along the left/right and top/bottom edges of the layout. Note
-	 * that thes margins will be added to the ones specified by
-	 * {@link #extendedMargins(int, int, int, int)}.
-	 * 
-	 * @param width
-	 *            margin width (pixels)
-	 * @param height
-	 *            margin height (pixels)
-	 * @return this
-	 * @see #spacing(Point)
-	 * * @see #spacing(int, int)
-	 */
-    public GridLayoutFactory margins(int width, int height) {
-        l.marginWidth = width;
-        l.marginHeight = height;
-        return this;
-    }
-
-    /**
-	 * Sets the margins for layouts created with this factory. The margins
-	 * specify the number of pixels of horizontal and vertical margin that will
-	 * be placed along the left, right, top, and bottom edges of the layout.
-	 * Note that thes margins will be added to the ones specified by
-	 * {@link #margins(int, int)}.
-	 * 
-	 * @param left
-	 *            left margin size (pixels)
-	 * @param right
-	 *            right margin size (pixels)
-	 * @param top
-	 *            top margin size (pixels)
-	 * @param bottom
-	 *            bottom margin size (pixels)
-	 * @return this
-	 * @see #spacing(Point)
-	 * @see #spacing(int, int)
-	 * 
-	 * @since 3.3
-	 */
-    public GridLayoutFactory extendedMargins(int left, int right, int top, int bottom) {
-        l.marginLeft = left;
-        l.marginRight = right;
-        l.marginTop = top;
-        l.marginBottom = bottom;
-        return this;
-    }
-
-    /**
-	 * Sets the margins for layouts created with this factory. The margins
-	 * specify the number of pixels of horizontal and vertical margin that will
-	 * be placed along the left, right, top, and bottom edges of the layout.
-	 * Note that thes margins will be added to the ones specified by
-	 * {@link #margins(int, int)}.
-	 * 
-     * <code><pre>
-     *     // Construct a GridLayout whose left, right, top, and bottom 
-     *     // margin sizes are 10, 5, 0, and 15 respectively
-     *      
-     *     Rectangle margins = Geometry.createDiffRectangle(10,5,0,15);
-     *     GridLayoutFactory.fillDefaults().extendedMargins(margins).applyTo(composite1);
-     * </pre></code>
-	 * 
-	 * @param differenceRect rectangle which, when added to the client area of the
-	 *        layout, returns the outer area of the layout. The x and y values of
-	 *        the rectangle correspond to the position of the bounds of the 
-	 *        layout with respect to the client area. They should be negative. 
-	 *        The width and height correspond to the relative size of the bounds
-	 *        of the layout with respect to the client area, and should be positive. 
-	 * @return this
-	 * @see #spacing(Point)
-	 * @see #spacing(int, int)
-	 * 
-	 * @since 3.3
-	 */
-    public GridLayoutFactory extendedMargins(Rectangle differenceRect) {
-        l.marginLeft = -differenceRect.x;
-        l.marginTop = -differenceRect.y;
-        l.marginBottom = differenceRect.y + differenceRect.height;
-        l.marginRight = differenceRect.x + differenceRect.width;
-        return this;
-    }
-    
-    /**
-     * Sets the number of columns in the layout
-     * 
-     * @param numColumns number of columns in the layout
-     * @return this
-     */
-    public GridLayoutFactory numColumns(int numColumns) {
-        l.numColumns = numColumns;
-        return this;
-    }
-
-    /**
-     * Creates a new GridLayout, and initializes it with values from the factory.
-     * 
-     * @return a new initialized GridLayout.
-     * @see #applyTo
-     */
-    public GridLayout create() {
-        return copyLayout(l);
-    }
-
-    /**
-     * Creates a new GridLayout and attaches it to the given composite.
-     * Does not create the GridData of any of the controls in the composite.
-     * 
-     * @param c composite whose layout will be set
-     * @see #generateLayout
-     * @see #create
-     * @see GridLayoutFactory
-     */
-    public void applyTo(Composite c) {
-        c.setLayout(copyLayout(l));
-    }
-
-    /**
-     * Copies the given GridLayout instance
-     * 
-     * @param l layout to copy
-     * @return a new GridLayout
-     */
-    public static GridLayout copyLayout(GridLayout l) {
-        GridLayout result = new GridLayout(l.numColumns, l.makeColumnsEqualWidth);
-        result.horizontalSpacing = l.horizontalSpacing;
-        result.marginBottom = l.marginBottom;
-        result.marginHeight = l.marginHeight;
-        result.marginLeft = l.marginLeft;
-        result.marginRight = l.marginRight;
-        result.marginTop = l.marginTop;
-        result.marginWidth = l.marginWidth;
-        result.verticalSpacing = l.verticalSpacing;
-
-        return result;
-    }
-
-    /**
-     * Applies this layout to the given composite, and attaches default GridData
-     * to all immediate children that don't have one. The layout is generated using 
-     * heuristics based on the widget types. In most cases, it will create exactly the same
-     * layout that would have been hardcoded by the programmer. In any situation
-     * where it does not produce the desired layout, the GridData for any child can be 
-     * overridden by attaching the layout data before calling this method. In these cases,
-     * the special-case layout data can be hardcoded and the algorithm can supply defaults
-     * to the rest.
-     * 
-     * <p>
-     * This must be called <b>AFTER</b> all of the child controls have been created and their
-     * layouts attached. This method will attach a layout to the given composite. If any new 
-     * children are created after calling this method, their GridData must be created manually. 
-     * The algorithm does not recurse into child composites. To generate all the layouts in
-     * a widget hierarchy, the method must be called bottom-up for each Composite.   
-     * </p>
-     * 
-     * <p>
-     * All controls are made to span a single cell. The algorithm tries to classify controls into one 
-     * of the following categories:
-     * </p>
-     * 
-     * <ul>
-     * <li>Pushbuttons: Set to a constant size large enough to fit their text and no smaller
-     * than the default button size.</li>
-     * <li>Wrapping with text (labels, read-only text boxes, etc.): override the preferred horizontal 
-     *     size with the default wrapping point, fill horizontally, grab horizontal space, keep the
-     *     preferred vertical size</li>
-     * <li>Wrapping without text (toolbars, coolbars, etc.): fill align, don't grab, use the preferred size</li>
-     * <li>Horizontally scrolling controls (anything with horizontal scrollbars or where the user edits
-     *     text and can cursor through it from left-to-right): override the preferred horizontal size with
-     *     a constant, grab horizontal, fill horizontal.</li>
-     * <li>Vertically scrolling controls (anything with vertical scrollbars or where the user edits
-     *     text and can cursor through it up and down): override the preferred vertical size with a constant,
-     *     grab vertical, fill vertical</li>
-     * <li>Nested layouts: fill align both directions, grab along any dimension if the layout would
-     *     be able to expand along that dimension.</li>
-     * <li>Non-wrapping non-scrollable read-only text: fill horizontally, center vertically, default size, don't grab </li>
-     * <li>Non-wrapping non-scrollable non-text: fill both, default size, don't grab</li>
-     * </ul>
-     * 
-     * @param c composite whose layout will be generated
-     */
-    public void generateLayout(Composite c) {
-        applyTo(c);
-        LayoutGenerator.generateLayout(c);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutConstants.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutConstants.java
deleted file mode 100644
index 6c540ea..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutConstants.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.layout;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Contains various layout constants
- * 
- * @since 3.2
- */
-public final class LayoutConstants {
-	private static Point dialogMargins = null;
-	private static Point dialogSpacing = null;
-	private static Point minButtonSize = null;
-	
-	private static void initializeConstants() {
-		if (dialogMargins != null) {
-			return;
-		}
-		
-		GC gc = new GC(Display.getCurrent());
-		gc.setFont(JFaceResources.getDialogFont());
-		FontMetrics fontMetrics = gc.getFontMetrics();
-
-		dialogMargins = new Point(Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN),
-				Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN));
-
-		dialogSpacing = new Point(Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING),
-				Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING));
-
-		minButtonSize  = new Point(Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH), 0);
-		
-		gc.dispose();
-	}
-	
-	/**
-	 * Returns the default dialog margins, in pixels
-	 * 
-	 * @return the default dialog margins, in pixels
-	 */
-    public static final Point getMargins() {
-    	initializeConstants();
-    	return dialogMargins;
-    }
-
-    /**
-     * Returns the default dialog spacing, in pixels
-     * 
-     * @return the default dialog spacing, in pixels
-     */
-    public static final Point getSpacing() {
-    	initializeConstants();
-    	return dialogSpacing;
-    }
-
-    /**
-     * Returns the default minimum button size, in pixels
-     * 
-     * @return the default minimum button size, in pixels
-     */
-    public static final Point getMinButtonSize() {
-    	initializeConstants();
-    	return minButtonSize;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutGenerator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutGenerator.java
deleted file mode 100644
index c4e33e2..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/LayoutGenerator.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.layout;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Point;
-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.Layout;
-import org.eclipse.swt.widgets.Scrollable;
-
-/* package */class LayoutGenerator {
-
-    /**
-     * Default size for controls with varying contents
-     */
-    private static final Point defaultSize = new Point(150, 150);
-
-    /**
-     * Default wrapping size for wrapped labels
-     */
-    private static final int wrapSize = 350;
-
-    private static final GridDataFactory nonWrappingLabelData = GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).grab(false, false);
-
-    private static boolean hasStyle(Control c, int style) {
-        return (c.getStyle() & style) != 0;
-    }
-
-    /**
-     * Generates a GridLayout for the given composite by examining its child
-     * controls and attaching layout data to any immediate children that do not
-     * already have layout data.
-     * 
-     * @param toGenerate
-     *            composite to generate a layout for
-     */
-    public static void generateLayout(Composite toGenerate) {
-        Control[] children = toGenerate.getChildren();
-
-        for (int i = 0; i < children.length; i++) {
-            Control control = children[i];
-
-            // Skip any children that already have layout data
-            if (control.getLayoutData() != null) {
-                continue;
-            }
-
-            applyLayoutDataTo(control);
-        }
-    }
-
-    private static void applyLayoutDataTo(Control control) {
-    	defaultsFor(control).applyTo(control);
-    }
-    
-    /**
-     * Creates default factory for this control types:
-     * <ul>
-     * 	<li>{@link Button} with {@link SWT#CHECK}</li>
-     * 	<li>{@link Button}</li>
-     * 	<li>{@link Composite}</li>
-     * </ul>
-     * @param control the control the factory is search for
-     * @return a default factory for the control
-     */
-    public static GridDataFactory defaultsFor(Control control) {
-        if (control instanceof Button) {
-            Button button = (Button) control;
-
-            if (hasStyle(button, SWT.CHECK)) {
-                return nonWrappingLabelData.copy();
-            } else {
-                return GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(Geometry.max(button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true), LayoutConstants.getMinButtonSize()));
-            }
-        }
-
-        if (control instanceof Scrollable) {
-            Scrollable scrollable = (Scrollable) control;
-
-            if (scrollable instanceof Composite) {
-                Composite composite = (Composite) control;
-
-                Layout theLayout = composite.getLayout();
-                if (theLayout instanceof GridLayout) {
-                    boolean growsHorizontally = false;
-                    boolean growsVertically = false;
-
-                    Control[] children = composite.getChildren();
-                    for (int i = 0; i < children.length; i++) {
-                        Control child = children[i];
-
-                        GridData data = (GridData) child.getLayoutData();
-
-                        if (data != null) {
-                            if (data.grabExcessHorizontalSpace) {
-                                growsHorizontally = true;
-                            }
-                            if (data.grabExcessVerticalSpace) {
-                                growsVertically = true;
-                            }
-                        }
-                    }
-
-                    return GridDataFactory.fillDefaults().grab(growsHorizontally, growsVertically);
-                }
-            }
-        }
-
-        boolean wrapping = hasStyle(control, SWT.WRAP);
-
-        // Assume any control with the H_SCROLL or V_SCROLL flags are
-        // horizontally or vertically
-        // scrollable, respectively.
-        boolean hScroll = hasStyle(control, SWT.H_SCROLL);
-        boolean vScroll = hasStyle(control, SWT.V_SCROLL);
-
-        boolean containsText = hasMethod(control, "setText", new Class[] { String.class }); //$NON-NLS-1$
-
-        // If the control has a setText method, an addModifyListener method, and
-        // does not have
-        // the SWT.READ_ONLY flag, assume it contains user-editable text.
-        boolean userEditable = !hasStyle(control, SWT.READ_ONLY) && containsText && hasMethod(control, "addModifyListener", new Class[] { ModifyListener.class }); //$NON-NLS-1$
-
-        // For controls containing user-editable text...
-        if (userEditable) {
-            if (hasStyle(control, SWT.MULTI)) {
-                vScroll = true;
-            }
-
-            if (!wrapping) {
-                hScroll = true;
-            }
-        }
-
-        // Compute the horizontal hint
-        int hHint = SWT.DEFAULT;
-        boolean grabHorizontal = hScroll;
-
-        // For horizontally-scrollable controls, override their horizontal
-        // preferred size
-        // with a constant
-        if (hScroll) {
-            hHint = defaultSize.x;
-        } else {
-            // For wrapping controls, there are two cases.
-            // 1. For controls that contain text (like wrapping labels,
-            // read-only text boxes,
-            // etc.) override their preferred size with the preferred wrapping
-            // point and
-            // make them grab horizontal space.
-            // 2. For non-text controls (like wrapping toolbars), assume that
-            // their non-wrapped
-            // size is best.
-
-            if (wrapping) {
-                if (containsText) {
-                    hHint = wrapSize;
-                    grabHorizontal = true;
-                }
-            }
-        }
-
-        int vAlign = SWT.FILL;
-
-        // Heuristic for labels: Controls that contain non-wrapping read-only
-        // text should be
-        // center-aligned rather than fill-aligned
-        if (!vScroll && !wrapping && !userEditable && containsText) {
-            vAlign = SWT.CENTER;
-        }
-
-        return GridDataFactory.fillDefaults().grab(grabHorizontal, vScroll).align(SWT.FILL, vAlign).hint(hHint, vScroll ? defaultSize.y : SWT.DEFAULT);
-    }
-
-    private static boolean hasMethod(Control control, String name, Class[] parameterTypes) {
-        Class c = control.getClass();
-        try {
-            return c.getMethod(name, parameterTypes) != null;
-        } catch (SecurityException e) {
-            return false;
-        } catch (NoSuchMethodException e) {
-            return false;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TableColumnLayout.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TableColumnLayout.java
deleted file mode 100644
index 92f6895..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TableColumnLayout.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * 	   Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                               - fix for bug 178280
- *     IBM Corporation - API refactoring and general maintenance
- *******************************************************************************/
-
-package org.eclipse.jface.layout;
-
-import org.eclipse.jface.viewers.ColumnLayoutData;
-import org.eclipse.jface.viewers.ColumnPixelData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Scrollable;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * The TableColumnLayout is the {@link Layout} used to maintain
- * {@link TableColumn} sizes in a {@link Table}.
- * 
- * <p>
- * <b>You can only add the {@link Layout} to a container whose <i>only</i>
- * child is the {@link Table} control you want the {@link Layout} applied to.
- * Don't assign the layout directly the {@link Table}</b>
- * </p>
- * 
- * @since 3.3
- */
-public class TableColumnLayout extends AbstractColumnLayout {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#getColumnCount(org.eclipse.swt.widgets.Scrollable)
-	 */
-	int getColumnCount(Scrollable tableTree) {
-		return ((Table) tableTree).getColumnCount();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#setColumnWidths(org.eclipse.swt.widgets.Scrollable,
-	 *      int[])
-	 */
-	void setColumnWidths(Scrollable tableTree, int[] widths) {
-		TableColumn[] columns = ((Table) tableTree).getColumns();
-		for (int i = 0; i < widths.length; i++) {
-			columns[i].setWidth(widths[i]);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#getLayoutData(int)
-	 */
-	ColumnLayoutData getLayoutData(Scrollable tableTree, int columnIndex) {
-		TableColumn column = ((Table) tableTree).getColumn(columnIndex);
-		return (ColumnLayoutData) column.getData(LAYOUT_DATA);
-	}
-
-	Composite getComposite(Widget column) {
-		return ((TableColumn) column).getParent().getParent();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#updateColumnData(org.eclipse.swt.widgets.Widget)
-	 */
-	void updateColumnData(Widget column) {
-		TableColumn tColumn = (TableColumn) column;
-		Table t = tColumn.getParent();
-		
-		if( ! IS_GTK || t.getColumn(t.getColumnCount()-1) != tColumn ){
-			tColumn.setData(LAYOUT_DATA,new ColumnPixelData(tColumn.getWidth()));
-			layout(t.getParent(), true);
-		}	
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TreeColumnLayout.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TreeColumnLayout.java
deleted file mode 100644
index 7258acb..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/TreeColumnLayout.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * 	   Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                               - fix for bug 178280, 183999, 184609
- *     IBM Corporation - API refactoring and general maintenance
- *******************************************************************************/
-
-package org.eclipse.jface.layout;
-
-
-import org.eclipse.jface.viewers.ColumnLayoutData;
-import org.eclipse.jface.viewers.ColumnPixelData;
-import org.eclipse.swt.events.TreeEvent;
-import org.eclipse.swt.events.TreeListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Scrollable;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * The TreeColumnLayout is the {@link Layout} used to maintain {@link TreeColumn} sizes in a 
- * {@link Tree}.
- * 
- * <p>
- * <b>You can only add the {@link Layout} to a container whose <i>only</i>
- * child is the {@link Tree} control you want the {@link Layout} applied to.
- * Don't assign the layout directly the {@link Tree}</b>
- * </p>
- * 
- * @since 3.3
- */
-public class TreeColumnLayout extends AbstractColumnLayout {
-	private boolean addListener = true;
-	
-	private static class TreeLayoutListener implements TreeListener {
-
-		public void treeCollapsed(TreeEvent e) {
-			update((Tree) e.widget);
-		}
-
-		public void treeExpanded(TreeEvent e) {
-			update((Tree) e.widget);
-		}
-		
-		private void update(final Tree tree) {
-			tree.getDisplay().asyncExec(new Runnable() {
-
-				public void run() {
-					tree.update();
-					tree.getParent().layout();
-				}
-				
-			});
-		}
-		
-	}
-	
-	private static final TreeLayoutListener listener = new TreeLayoutListener();
-	
-	protected void layout(Composite composite, boolean flushCache) {
-		super.layout(composite, flushCache);
-		if( addListener ) {
-			addListener=false;
-			((Tree)getControl(composite)).addTreeListener(listener);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#getColumnCount(org.eclipse.swt.widgets.Scrollable)
-	 */
-	int getColumnCount(Scrollable tree) {
-		return ((Tree) tree).getColumnCount();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#setColumnWidths(org.eclipse.swt.widgets.Scrollable, int[])
-	 */
-	void setColumnWidths(Scrollable tree, int[] widths) {
-		TreeColumn[] columns = ((Tree) tree).getColumns();
-		for (int i = 0; i < widths.length; i++) {
-			columns[i].setWidth(widths[i]);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.layout.AbstractColumnLayout#getLayoutData(org.eclipse.swt.widgets.Scrollable, int)
-	 */
-	ColumnLayoutData getLayoutData(Scrollable tableTree, int columnIndex) {
-		TreeColumn column = ((Tree) tableTree).getColumn(columnIndex);
-		return (ColumnLayoutData) column.getData(LAYOUT_DATA);
-	}
-	
-	void updateColumnData(Widget column) {
-		TreeColumn tColumn = (TreeColumn) column;
-		Tree t = tColumn.getParent();
-		
-		if( ! IS_GTK || t.getColumn(t.getColumnCount()-1) != tColumn ){
-			tColumn.setData(LAYOUT_DATA,new ColumnPixelData(tColumn.getWidth()));
-			layout(t.getParent(), true);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/package.html
deleted file mode 100644
index c4de2b3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/layout/package.html
+++ /dev/null
@@ -1,15 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides support for layout generation. 
-<h2>
-Package Specification</h2>
-<p> This package provides classes that can be used to generate layouts.
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/AbstractTrimWidget.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/AbstractTrimWidget.java
deleted file mode 100644
index d22ea16..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/AbstractTrimWidget.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.menus;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * This extension to the {@link IWidget} interface allows clients adding
- * elements to the trim to receive notifications if the User moves the widget to
- * another trim area.
- * <p>
- * This class is intended to be the base for any trim contributions.
- * </p>
- * @since 3.2
- * 
- */
-public abstract class AbstractTrimWidget implements IWidget {
-	/**
-	 * This method is called to initially construct the widget and is also
-	 * called whenever the widget's composite has been moved to a trim area on a
-	 * different side of the workbench. It is the client's responsibility to
-	 * control the life-cycle of the Control it manages.
-	 * <p>
-	 * For example: If the implementation is constructing a {@link ToolBar} and
-	 * the orientation were to change from horizontal to vertical it would have
-	 * to <code>dispose</code> its old ToolBar and create a new one with the
-	 * correct orientation.
-	 * </p>
-	 * <p>
-	 * The sides can be one of:
-	 * <ul>
-	 * <li>{@link SWT#TOP}</li>
-	 * <li>{@link SWT#BOTTOM}</li>
-	 * <li>{@link SWT#LEFT}</li>
-	 * <li>{@link SWT#RIGHT}</li>
-	 * </ul>
-	 * </p>
-	 * <p>
-	 * 
-	 * @param parent
-	 *            The parent to (re)create the widget under
-	 * 
-	 * @param oldSide
-	 *            The previous side ({@link SWT#DEFAULT} on the initial fill)
-	 * @param newSide
-	 *            The current side
-	 */
-	public abstract void fill(Composite parent, int oldSide, int newSide);
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#dispose()
-	 */
-	public abstract void dispose();
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.Composite)
-	 */
-	public void fill(Composite parent) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.Menu, int)
-	 */
-	public void fill(Menu parent, int index) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.ToolBar, int)
-	 */
-	public void fill(ToolBar parent, int index) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.CoolBar, int)
-	 */
-	public void fill(CoolBar parent, int index) {
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IMenuStateIds.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IMenuStateIds.java
deleted file mode 100644
index 219c6f7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IMenuStateIds.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.menus;
-
-import org.eclipse.core.commands.INamedHandleStateIds;
-import org.eclipse.jface.commands.RadioState;
-import org.eclipse.jface.commands.ToggleState;
-
-/**
- * <p>
- * State identifiers that should be understood by items and renderers of items.
- * The state is associated with the command, and then interpreted by the menu
- * renderer.
- * </p>
- * <p>
- * Clients may implement or extend this class.
- * </p>
- * 
- * @since 3.2
- */
-public interface IMenuStateIds extends INamedHandleStateIds {
-
-	/**
-	 * The state id used for indicating the widget style of a command presented
-	 * in the menus and tool bars. This state must be an instance of
-	 * {@link ToggleState} or {@link RadioState}.
-	 */
-	public static String STYLE = "STYLE"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IWidget.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IWidget.java
deleted file mode 100644
index c7c2285..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/IWidget.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.menus;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * <p>
- * Provides a hook by which third-party code can contribute SWT widgets to a
- * menu, tool bar or status line. This can be used, for example, to add a combo
- * box to the status line, or a "Location" bar to the tool bar.
- * </p>
- * <p>
- * It is possible for fill and dispose to be called multiple times for a single
- * instance of <code>IWidget</code>.
- * </p>
- * <p>
- * Clients may implement, but must not extend.
- * </p>
- * 
- * @since 3.2
- */
-public interface IWidget {
-
-	/**
-	 * Disposes of the underlying widgets. This can be called when the widget is
-	 * becoming hidden.
-	 */
-	public void dispose();
-
-	/**
-	 * Fills the given composite control with controls representing this widget.
-	 * 
-	 * @param parent
-	 *            the parent control
-	 */
-	public void fill(Composite parent);
-
-	/**
-	 * Fills the given menu with controls representing this widget.
-	 * 
-	 * @param parent
-	 *            the parent menu
-	 * @param index
-	 *            the index where the controls are inserted, or <code>-1</code>
-	 *            to insert at the end
-	 */
-	public void fill(Menu parent, int index);
-
-	/**
-	 * Fills the given tool bar with controls representing this contribution
-	 * item.
-	 * 
-	 * @param parent
-	 *            the parent tool bar
-	 * @param index
-	 *            the index where the controls are inserted, or <code>-1</code>
-	 *            to insert at the end
-	 */
-	public void fill(ToolBar parent, int index);
-
-	/**
-	 * Fills the given cool bar with controls representing this contribution
-	 * item.
-	 * 
-	 * @param parent
-	 *            the parent cool bar
-	 * @param index
-	 *            the index where the controls are inserted, or <code>-1</code>
-	 *            to insert at the end
-	 */
-	public void fill(CoolBar parent, int index);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/TextState.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/TextState.java
deleted file mode 100644
index 4b10b05..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/TextState.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.menus;
-
-import org.eclipse.core.commands.INamedHandleStateIds;
-import org.eclipse.jface.commands.PersistentState;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * <p>
- * A piece of state carrying a single {@link String}.
- * </p>
- * <p>
- * If this state is registered using {@link INamedHandleStateIds#NAME} or
- * {@link INamedHandleStateIds#DESCRIPTION}, then this allows the handler to
- * communicate a textual change for a given command. This is typically used by
- * graphical applications to allow more specific text to be displayed in the
- * menus. For example, "Undo" might become "Undo Typing" through the use of a
- * {@link TextState}.
- * </p>
- * <p>
- * Clients may instantiate this class, but must not extend.
- * </p>
- * 
- * @since 3.2
- * @see INamedHandleStateIds
- */
-public class TextState extends PersistentState {
-
-	public final void load(final IPreferenceStore store,
-			final String preferenceKey) {
-		final String value = store.getString(preferenceKey);
-		setValue(value);
-	}
-
-	public final void save(final IPreferenceStore store,
-			final String preferenceKey) {
-		final Object value = getValue();
-		if (value instanceof String) {
-			store.setValue(preferenceKey, ((String) value));
-		}
-	}
-
-	public void setValue(final Object value) {
-		if (!(value instanceof String)) {
-			throw new IllegalArgumentException(
-					"TextState takes a String as a value"); //$NON-NLS-1$
-		}
-
-		super.setValue(value);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/package.html
deleted file mode 100644
index 15c0893..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/menus/package.html
+++ /dev/null
@@ -1,15 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides support for trim specification. 
-<h2>
-Package Specification</h2>
-<p> This package provides classes for trim widgets.
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/messages.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/messages.properties
deleted file mode 100644
index d892102..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/messages.properties
+++ /dev/null
@@ -1,219 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS file for JFace
-#############################################################
-
-#############################################################
-# Global label definitions
-#############################################################
-ok=OK
-cancel=Cancel
-yes=&Yes
-yestoall=Yes To &All
-skip=S&kip
-stop=&Stop
-abort=&Abort
-retry=&Retry
-ignore=&Ignore
-proceed=&Proceed
-open=&Open
-close=&Close
-showDetails=&Details >>
-hideDetails=<< &Details
-backButton=< &Back
-nextButton=&Next >
-finish=&Finish
-help=&Help
-helpToolTip=Help
-no=&No
-notoall=No &To All
-finish=&Finish
-help=&Help
-defaults=Restore &Defaults
-apply=&Apply
-openBrowse=&Browse...
-
-openChange=&Change...
-help=&Help
-close=&Close
-copy = &Copy
-
-error=Error
-warning=Warning
-info=Info
-question=Question
-
-##############################################################
-# Wizard Closing Dialog
-##############################################################
-WizardClosingDialog.title=Wizard Closing
-WizardClosingDialog.message=Wizard can not be closed due to an active operation. You must cancel the operation before you can close the wizard.
-
-##############################################################
-# Wizard Dialog
-##############################################################
-WizardDialog.missingSetControl = {0} has no page control
-
-##############################################################
-# The Progress Monitor Dialog
-##############################################################
-ProgressMonitorDialog.title=Progress Information
-ProgressMonitorDialog.message=Operation in progress...
-
-##############################################################
-# Preference Dialog
-##############################################################
-PreferenceDialog.title=Preferences
-PreferenceDialog.saveErrorTitle=Problem Saving Preferences
-PreferenceDialog.saveErrorMessage=A problem was encountered saving the page {0}.\n{1}
-
-##############################################################
-# Change Errors
-##############################################################
-PreferenceStore.changeError=Error notifying a preference change listener. Check the log for details.
-FontRegistry.changeError=Error notifying a font registry change listener. Check the log for details.
-		
-##############################################################
-# Abort Page Flipping Dialog
-##############################################################
-AbortPageFlippingDialog.title=Could Not Accept Changes 
-AbortPageFlippingDialog.message=The currently displayed page contains invalid values.
-
-##############################################################
-# Field editors
-##############################################################
-StringFieldEditor.errorMessage=Field contains an invalid value
-IntegerFieldEditor.errorMessage=Value must be an Integer
-IntegerFieldEditor.errorMessageRange=Value must be an Integer between {0} and {1}
-FileFieldEditor.errorMessage=Value must be an existing file
-FileFieldEditor.errorMessage2=Value must be an absolute path
-DirectoryFieldEditor.errorMessage=Value must be an existing directory
-ListEditor.add = Ne&w...
-ListEditor.remove = &Remove
-ListEditor.up = &Up
-ListEditor.down = Dow&n
-
-##############################################################
-# Error messages for TextViewer
-##############################################################
-TextViewer.invalidRangeArg=Invalid range argument
-TextViewer.invalidVisibleRegionArg=Invalid visible region argument
-
-#############################################################
-# org.eclipse.jface.action 
-#############################################################
-Cancel_Current_Operation = Cancel Current Operation
-Set_SubTask = {0}: {1}
-Toolbar_Tooltip_Accelerator = {0} ({1})
-
-#############################################################
-# org.eclipse.jface.dialog
-############################################################
-Problem_Occurred = Problem Occurred
-Reason = {0}\n\nReason:\n {1}
-MessageDialogWithToggle.defaultToggleMessage = &Remember my decision
-PopupDialog.resize = &Resize
-PopupDialog.move = &Move
-PopupDialog.persistBounds = R&emember Size and Location
-PopupDialog.persistSize = Remember Si&ze
-PopupDialog.persistLocation = Remember &Location
-PopupDialog.menuTooltip = Menu
-
-############################################################
-
-Image_not_found = Image not found
-<empty_selection> = <empty selection>
-
-########################################################
-# Font properties labels for displaying a font
-#######################################################
-BoldItalicFont = bold italic
-BoldFont = bold
-ItalicFont = italic
-RegularFont = regular
-
-#############################################################
-# String representations of keys for Status line messages
-############################################################
-Ctrl = Ctrl
-Command = Command
-Alt = Alt
-Shift = Shift
-Backspace = Backspace
-Tab = Tab
-Return = Return
-Enter = Enter
-Escape = Escape
-Esc = Esc
-Delete = Delete
-Space = Space
-Arrow_Up = Arrow Up
-Arrow_Down = Arrow Down
-Arrow_Left = Arrow Left
-Arrow_Right = Arrow Right
-Page_Up = Page Up
-Page_Down = Page Down
-Home = Home
-End = End
-Insert = Insert
-F1 = F1
-F2 = F2
-F3 = F3
-F4 = F4
-F5 = F5
-F6 = F6
-F7 = F7
-F8 = F8
-F9 = F9
-F10 = F10
-F11 = F11
-F12 = F12
-
-##############################################
-# Safe Runnable
-##############################################
-SafeRunnable.errorMessage = An error has occurred. See error log for more details.
-ColorSelector.Name=Color Selector
-
-#############################################################
-# org.eclipse.jface.viewers.deferred 
-#############################################################
-Sorting = sorting
-
-
-#############################################################
-# org.eclipse.jface.util 
-#############################################################
-LocalSelectionTransfer.errorMessage=Received wrong transfer data. 
-
-#############################################################
-# org.eclipse.jface.fieldAssist
-#############################################################
-FieldDecorationRegistry.errorMessage=Error in field content
-FieldDecorationRegistry.contentAssistMessage=Content Assist Available 
-FieldDecorationRegistry.requiredFieldMessage=Required Field
-FieldDecorationRegistry.errorQuickFixMessage=Error in field content.  Quick Fix Available.
-
-###############################################################
-# org.eclipse.jface.util.SafeRunnableDialog
-#############################################################
-SafeRunnableDialog_reason=Reason
-SafeRunnableDialog_checkDetailsMessage=Check the details
-SafeRunnableDialog_MultipleErrorsTitle=Multiple Errors have Occurred
-SafeRunnableDialog_MultipleErrorsMessage=Multiple operations have reported errors. Select an error to view its details.
-
-#############################################################
-# org.eclipse.jface.internal.ConfigureColumnsDialog
-#############################################################
-ConfigureColumnsDialog_Title=Configure Columns
-ConfigureColumnsDialog_WidthOfSelectedColumn=&Width of selected column:
-ConfigureColumnsDialog_up = &Up
-ConfigureColumnsDialog_down = &Down
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/AccumulatingProgressMonitor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/AccumulatingProgressMonitor.java
deleted file mode 100644
index 63f6554..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/AccumulatingProgressMonitor.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.operation;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ProgressMonitorWrapper;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * A progress monitor that accumulates <code>worked</code> and <code>subtask</code> 
- * calls in the following way by wrapping a standard progress monitor:
- * <ul>
- * <li> When a <code>worked</code> or <code>subtask</code> call occurs the first time,
- *		the progress monitor posts a runnable into the asynchronous SWT event queue.
- * </li>
- * <li> Subsequent calls to <code>worked</code> or <code>subtask</code> do not post
- *		a new runnable as long as a previous runnable still exists in the SWT event
- *		queue. In this case, the progress monitor just updates the internal state of
- *		the runnable that waits in the SWT event queue for its execution. If no runnable
- *		exists, a new one is created and posted into the event queue.
- * </ul>
- * <p>
- * This class is internal to the framework; clients outside JFace should not
- * use this class.
- * </p>
- */
-/* package */class AccumulatingProgressMonitor extends ProgressMonitorWrapper {
-
-    /**
-     * The display.
-     */
-    private Display display;
-
-    /**
-     * The collector, or <code>null</code> if none.
-     */
-    private Collector collector;
-
-    private String currentTask = ""; //$NON-NLS-1$
-
-    private class Collector implements Runnable {
-        private String subTask;
-
-        private double worked;
-
-        private IProgressMonitor monitor;
-
-        /**
-         * Create a new collector.
-         * @param subTask
-         * @param work
-         * @param monitor
-         */
-        public Collector(String subTask, double work, IProgressMonitor monitor) {
-            this.subTask = subTask;
-            this.worked = work;
-            this.monitor = monitor;
-        }
-
-        /**
-         * Add worked to the work.
-         * @param workedIncrement
-         */
-        public void worked(double workedIncrement) {
-            this.worked = this.worked + workedIncrement;
-        }
-
-        /**
-         * Set the subTask name.
-         * @param subTaskName
-         */
-        public void subTask(String subTaskName) {
-            this.subTask = subTaskName;
-        }
-
-        /**
-         * Run the collector.
-         */
-        public void run() {
-            clearCollector(this);
-            if (subTask != null) {
-				monitor.subTask(subTask);
-			}
-            if (worked > 0) {
-				monitor.internalWorked(worked);
-			}
-        }
-    }
-
-    /**
-     * Creates an accumulating progress monitor wrapping the given one
-     * that uses the given display.
-     * 
-     * @param monitor the actual progress monitor to be wrapped
-     * @param display the SWT display used to forward the calls 
-     *  to the wrapped progress monitor
-     */
-    public AccumulatingProgressMonitor(IProgressMonitor monitor, Display display) {
-        super(monitor);
-        Assert.isNotNull(display);
-        this.display = display;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IProgressMonitor.
-     */
-    public void beginTask(final String name, final int totalWork) {
-        synchronized (this) {
-            collector = null;
-        }
-        display.asyncExec(new Runnable() {
-            public void run() {
-                currentTask = name;
-                getWrappedProgressMonitor().beginTask(name, totalWork);
-            }
-        });
-    }
-
-    /**
-     * Clears the collector object used to accumulate work and subtask calls
-     * if it matches the given one.
-     * @param collectorToClear
-     */
-    private synchronized void clearCollector(Collector collectorToClear) {
-        // Check if the accumulator is still using the given collector.
-        // If not, don't clear it.
-        if (this.collector == collectorToClear) {
-			this.collector = null;
-		}
-    }
-
-    /**
-     *  Creates a collector object to accumulate work and subtask calls.
-     * @param subTask
-     * @param work
-     */
-    private void createCollector(String subTask, double work) {
-        collector = new Collector(subTask, work, getWrappedProgressMonitor());
-        display.asyncExec(collector);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IProgressMonitor.
-     */
-    public void done() {
-        synchronized (this) {
-            collector = null;
-        }
-        display.asyncExec(new Runnable() {
-            public void run() {
-                getWrappedProgressMonitor().done();
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IProgressMonitor.
-     */
-    public synchronized void internalWorked(final double work) {
-        if (collector == null) {
-            createCollector(null, work);
-        } else {
-            collector.worked(work);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IProgressMonitor.
-     */
-    public void setTaskName(final String name) {
-        synchronized (this) {
-            collector = null;
-        }
-        display.asyncExec(new Runnable() {
-            public void run() {
-                currentTask = name;
-                getWrappedProgressMonitor().setTaskName(name);
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IProgressMonitor.
-     */
-    public synchronized void subTask(final String name) {
-        if (collector == null) {
-            createCollector(name, 0);
-        } else {
-            collector.subTask(name);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IProgressMonitor.
-     */
-    public synchronized void worked(int work) {
-        internalWorked(work);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.ProgressMonitorWrapper#clearBlocked()
-     */
-    public void clearBlocked() {
-
-        //If this is a monitor that can report blocking do so.
-        //Don't bother with a collector as this should only ever
-        //happen once and prevent any more progress.
-        final IProgressMonitor pm = getWrappedProgressMonitor();
-        if (!(pm instanceof IProgressMonitorWithBlocking)) {
-			return;
-		}
-
-        display.asyncExec(new Runnable() {
-            /* (non-Javadoc)
-             * @see java.lang.Runnable#run()
-             */
-            public void run() {
-                ((IProgressMonitorWithBlocking) pm).clearBlocked();
-                Dialog.getBlockedHandler().clearBlocked();
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.ProgressMonitorWrapper#setBlocked(org.eclipse.core.runtime.IStatus)
-     */
-    public void setBlocked(final IStatus reason) {
-        //If this is a monitor that can report blocking do so.
-        //Don't bother with a collector as this should only ever
-        //happen once and prevent any more progress.
-        final IProgressMonitor pm = getWrappedProgressMonitor();
-        if (!(pm instanceof IProgressMonitorWithBlocking)) {
-			return;
-		}
-
-        display.asyncExec(new Runnable() {
-            /* (non-Javadoc)
-             * @see java.lang.Runnable#run()
-             */
-            public void run() {
-                ((IProgressMonitorWithBlocking) pm).setBlocked(reason);
-                //Do not give a shell as we want it to block until it opens.
-                Dialog.getBlockedHandler().showBlocked(pm, reason, currentTask);
-            }
-        });
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableContext.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableContext.java
deleted file mode 100644
index 9dee304..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableContext.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.operation;
-
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * Interface for UI components which can execute a long-running operation
- * in the form of an <code>IRunnableWithProgress</code>.
- * The context is responsible for displaying a progress indicator and Cancel
- * button to the end user while the operation is in progress; the context
- * supplies a progress monitor to be used from code running inside the operation.
- * Note that an <code>IRunnableContext</code> is not a runnable itself.
- * <p>
- * For examples of UI components which implement this interface,
- * see <code>ApplicationWindow</code>, <code>ProgressMonitorDialog</code>,
- * and <code>WizardDialog</code>.
- * </p>
- *
- * @see IRunnableWithProgress
- * @see org.eclipse.jface.window.ApplicationWindow
- * @see org.eclipse.jface.dialogs.ProgressMonitorDialog
- * @see org.eclipse.jface.wizard.WizardDialog
- */
-public interface IRunnableContext {
-    /**
-     * <p>
-     * Runs the given <code>IRunnableWithProgress</code> in this context.
-     * For example, if this is a <code>ProgressMonitorDialog</code> then the runnable
-     * is run using this dialog's progress monitor.
-     * </p>
-     * <p>
-     * If <code>fork</code> is <code>false</code>, the current thread is used
-     * to run the runnable. Note that if <code>fork</code> is <code>true</code>,
-     * it is unspecified whether or not this method blocks until the runnable
-     * has been run. Implementers should document whether the runnable is run
-     * synchronously (blocking) or asynchronously (non-blocking), or if no
-     * assumption can be made about the blocking behaviour.
-     * </p>
-     *
-     * @param fork <code>true</code> if the runnable should be run in a separate thread,
-     *  and <code>false</code> to run in the same thread
-     * @param cancelable <code>true</code> to enable the cancelation, and
-     *  <code>false</code> to make the operation uncancellable
-     * @param runnable the runnable to run
-     *
-     * @exception InvocationTargetException wraps any exception or error which occurs 
-     *  while running the runnable
-     * @exception InterruptedException propagated by the context if the runnable 
-     *  acknowledges cancelation by throwing this exception.  This should not be thrown
-     *  if cancelable is <code>false</code>.
-     */
-    public void run(boolean fork, boolean cancelable,
-            IRunnableWithProgress runnable) throws InvocationTargetException,
-            InterruptedException;
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableWithProgress.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableWithProgress.java
deleted file mode 100644
index e3ae65d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IRunnableWithProgress.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.operation;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * The <code>IRunnableWithProgress</code> interface should be implemented by any
- * class whose instances are intended to be executed as a long-running operation.
- * Long-running operations are typically presented at the UI via a modal dialog
- * showing a progress indicator and a Cancel button.
- * The class must define a <code>run</code> method that takes a progress monitor.
- * The <code>run</code> method is usually not invoked directly, but rather by
- * passing the <code>IRunnableWithProgress</code> to the <code>run</code> method of
- * an <code>IRunnableContext</code>, which provides the UI for the progress monitor
- * and Cancel button.
- *
- * @see IRunnableContext
- */
-public interface IRunnableWithProgress {
-    /**
-     * Runs this operation.  Progress should be reported to the given progress monitor.
-     * This method is usually invoked by an <code>IRunnableContext</code>'s <code>run</code> method,
-     * which supplies the 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
-     * @exception InvocationTargetException if the run 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>
-     *
-     * @see IRunnableContext#run
-     */
-    public void run(IProgressMonitor monitor) throws InvocationTargetException,
-            InterruptedException;
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IThreadListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IThreadListener.java
deleted file mode 100644
index ee9ba64..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/IThreadListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.operation;
-
-/**
- * A thread listener is an object that is interested in receiving notifications
- * of thread changes.  For example, a thread listener can be used to notify a 
- * runnable of the thread that will execute it, allowing the runnable to transfer
- * thread-local state from the calling thread before control passes to the new thread.
- * 
- * @since 3.1
- */
-public interface IThreadListener {
-	/**
-	 * Notification that a thread change is occurring.
-	 * 
-	 * @param thread The new thread
-	 */
-	public void threadChange(Thread thread);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/ModalContext.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/ModalContext.java
deleted file mode 100644
index f8b54a5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/ModalContext.java
+++ /dev/null
@@ -1,505 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.operation;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.ProgressMonitorWrapper;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Utility class for supporting modal operations. The runnable passed to the
- * <code>run</code> method is executed in a separate thread, depending on the
- * value of the passed fork argument. If the runnable is executed in a separate
- * thread then the current thread either waits until the new thread ends or, if
- * the current thread is the UI thread, it polls the SWT event queue and
- * dispatches each event.
- * <p>
- * This class is not intended to be subclassed.
- * </p>
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ModalContext {
-
-	/**
-	 * Indicated whether ModalContext is in debug mode; <code>false</code> by
-	 * default.
-	 */
-	private static boolean debug = false;
-
-	/**
-	 * The number of nested modal runs, or 0 if not inside a modal run. This is
-	 * global state.
-	 */
-	private static int modalLevel = 0;
-
-	/**
-	 * Indicates whether operations should be run in a separate thread. Defaults
-	 * to true. For internal debugging use, set to false to run operations in
-	 * the calling thread.
-	 */
-	private static boolean runInSeparateThread = true;
-
-	/**
-	 * Thread which runs the modal context.
-	 */
-	private static class ModalContextThread extends Thread {
-		/**
-		 * The operation to be run.
-		 */
-		private IRunnableWithProgress runnable;
-
-		/**
-		 * The exception thrown by the operation starter.
-		 */
-		private Throwable throwable;
-
-		/**
-		 * The progress monitor used for progress and cancelation.
-		 */
-		private IProgressMonitor progressMonitor;
-
-		/**
-		 * The display used for event dispatching.
-		 */
-		private Display display;
-
-		/**
-		 * Indicates whether to continue event queue dispatching.
-		 */
-		private volatile boolean continueEventDispatching = true;
-
-		/**
-		 * The thread that forked this modal context thread.
-		 * 
-		 * @since 3.1
-		 */
-		private Thread callingThread;
-
-		/**
-		 * Creates a new modal context.
-		 * 
-		 * @param operation
-		 *            the runnable to run
-		 * @param monitor
-		 *            the progress monitor to use to display progress and
-		 *            receive requests for cancelation
-		 * @param display
-		 *            the display to be used to read and dispatch events
-		 */
-		private ModalContextThread(IRunnableWithProgress operation,
-				IProgressMonitor monitor, Display display) {
-			super("ModalContext"); //$NON-NLS-1$
-			Assert.isTrue(monitor != null && display != null);
-			runnable = operation;
-			progressMonitor = new AccumulatingProgressMonitor(monitor, display);
-			this.display = display;
-			this.callingThread = Thread.currentThread();
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on Thread.
-		 */
-		public void run() {
-			try {
-				if (runnable != null) {
-					runnable.run(progressMonitor);
-				}
-			} catch (InvocationTargetException e) {
-				throwable = e;
-			} catch (InterruptedException e) {
-				throwable = e;
-			} catch (RuntimeException e) {
-				throwable = e;
-			} catch (ThreadDeath e) {
-				// Make sure to propagate ThreadDeath, or threads will never
-				// fully terminate
-				throw e;
-			} catch (Error e) {
-				throwable = e;
-			} finally {
-				// notify the operation of change of thread of control
-				if (runnable instanceof IThreadListener) {
-					Throwable exception = 
-						invokeThreadListener(((IThreadListener) runnable), callingThread);
-					
-					//Forward it if we don't already have one
-					if(exception != null && throwable == null)
-						throwable = exception;
-				}
-
-				// Make sure that all events in the asynchronous event queue
-				// are dispatched.
-				display.syncExec(new Runnable() {
-					public void run() {
-						// do nothing
-					}
-				});
-
-				// Stop event dispatching
-				continueEventDispatching = false;
-
-				// Force the event loop to return from sleep () so that
-				// it stops event dispatching.
-				display.asyncExec(null);
-			}
-		}
-
-		/**
-		 * Processes events or waits until this modal context thread terminates.
-		 */
-		public void block() {
-			if (display == Display.getCurrent()) {
-				int exceptionCount = 0;
-				while (continueEventDispatching) {
-					// Run the event loop. Handle any uncaught exceptions caused
-					// by UI events.
-					try {
-						if (!display.readAndDispatch()) {
-							display.sleep();
-						}
-						exceptionCount = 0;
-					}
-					// ThreadDeath is a normal error when the thread is dying.
-					// We must
-					// propagate it in order for it to properly terminate.
-					catch (ThreadDeath e) {
-						throw (e);
-					}
-					// For all other exceptions, log the problem.
-					catch (Throwable t) {
-						exceptionCount++;
-						if (exceptionCount > 2 || display.isDisposed()) {
-			                if (t instanceof RuntimeException) {
-								throw (RuntimeException) t;
-							} else if (t instanceof Error) {
-								throw (Error) t;
-							} else {
-								throw new RuntimeException(t);
-							}
-						}
-						Policy
-								.getLog()
-								.log(
-										new Status(
-												IStatus.ERROR,
-												Policy.JFACE,
-												"Unhandled event loop exception during blocked modal context.",//$NON-NLS-1$
-												t));
-					}
-				}
-			} else {
-				try {
-					join();
-				} catch (InterruptedException e) {
-					throwable = e;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns whether the first progress monitor is the same as, or a wrapper
-	 * around, the second progress monitor.
-	 * 
-	 * @param monitor1
-	 *            the first progress monitor
-	 * @param monitor2
-	 *            the second progress monitor
-	 * @return <code>true</code> if the first is the same as, or a wrapper
-	 *         around, the second
-	 * @see ProgressMonitorWrapper
-	 */
-	public static boolean canProgressMonitorBeUsed(IProgressMonitor monitor1,
-			IProgressMonitor monitor2) {
-		if (monitor1 == monitor2) {
-			return true;
-		}
-
-		while (monitor1 instanceof ProgressMonitorWrapper) {
-			monitor1 = ((ProgressMonitorWrapper) monitor1)
-					.getWrappedProgressMonitor();
-			if (monitor1 == monitor2) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Checks with the given progress monitor and throws
-	 * <code>InterruptedException</code> if it has been canceled.
-	 * <p>
-	 * Code in a long-running operation should call this method regularly so
-	 * that a request to cancel will be honored.
-	 * </p>
-	 * <p>
-	 * Convenience for:
-	 * 
-	 * <pre>
-	 * if (monitor.isCanceled())
-	 * 	throw new InterruptedException();
-	 * </pre>
-	 * 
-	 * </p>
-	 * 
-	 * @param monitor
-	 *            the progress monitor
-	 * @exception InterruptedException
-	 *                if cancelling the operation has been requested
-	 * @see IProgressMonitor#isCanceled()
-	 */
-	public static void checkCanceled(IProgressMonitor monitor)
-			throws InterruptedException {
-		if (monitor.isCanceled()) {
-			throw new InterruptedException();
-		}
-	}
-
-	/**
-	 * Returns the currently active modal context thread, or null if no modal
-	 * context is active.
-	 */
-	private static ModalContextThread getCurrentModalContextThread() {
-		Thread t = Thread.currentThread();
-		if (t instanceof ModalContextThread) {
-			return (ModalContextThread) t;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the modal nesting level.
-	 * <p>
-	 * The modal nesting level increases by one each time the
-	 * <code>ModalContext.run</code> method is called within the dynamic scope
-	 * of another call to <code>ModalContext.run</code>.
-	 * </p>
-	 * 
-	 * @return the modal nesting level, or <code>0</code> if this method is
-	 *         called outside the dynamic scope of any invocation of
-	 *         <code>ModalContext.run</code>
-	 */
-	public static int getModalLevel() {
-		return modalLevel;
-	}
-
-	/**
-	 * Returns whether the given thread is running a modal context.
-	 * 
-	 * @param thread
-	 *            The thread to be checked
-	 * @return <code>true</code> if the given thread is running a modal
-	 *         context, <code>false</code> if not
-	 */
-	public static boolean isModalContextThread(Thread thread) {
-		return thread instanceof ModalContextThread;
-	}
-
-	/**
-	 * Runs the given runnable in a modal context, passing it a progress
-	 * monitor.
-	 * <p>
-	 * The modal nesting level is increased by one from the perspective of the
-	 * given runnable.
-	 * </p>
-	 * <p>
-	 * If the supplied operation implements <code>IThreadListener</code>, it
-	 * will be notified of any thread changes required to execute the operation.
-	 * Specifically, the operation will be notified of the thread that will call
-	 * its <code>run</code> method before it is called, and will be notified
-	 * of the change of control back to the thread calling this method when the
-	 * operation completes. These thread change notifications give the operation
-	 * an opportunity to transfer any thread-local state to the execution thread
-	 * before control is transferred to the new thread.
-	 * </p>
-	 * 
-	 * @param operation
-	 *            the runnable to run
-	 * @param fork
-	 *            <code>true</code> if the runnable should run in a separate
-	 *            thread, and <code>false</code> if in the same thread
-	 * @param monitor
-	 *            the progress monitor to use to display progress and receive
-	 *            requests for cancelation
-	 * @param display
-	 *            the display to be used to read and dispatch events
-	 * @exception InvocationTargetException
-	 *                if the run method must propagate a checked exception, it
-	 *                should wrap it inside an
-	 *                <code>InvocationTargetException</code>; runtime
-	 *                exceptions and errors are automatically wrapped in an
-	 *                <code>InvocationTargetException</code> by this method
-	 * @exception InterruptedException
-	 *                if the operation detects a request to cancel, using
-	 *                <code>IProgressMonitor.isCanceled()</code>, it should
-	 *                exit by throwing <code>InterruptedException</code>;
-	 *                this method propagates the exception
-	 */
-	public static void run(IRunnableWithProgress operation, boolean fork,
-			IProgressMonitor monitor, Display display)
-			throws InvocationTargetException, InterruptedException {
-		Assert.isTrue(operation != null && monitor != null);
-
-		modalLevel++;
-		try {
-			if (monitor != null) {
-				monitor.setCanceled(false);
-			}
-			// Is the runnable supposed to be execute in the same thread.
-			if (!fork || !runInSeparateThread) {
-				runInCurrentThread(operation, monitor);
-			} else {
-				ModalContextThread t = getCurrentModalContextThread();
-				if (t != null) {
-					Assert.isTrue(canProgressMonitorBeUsed(monitor,
-							t.progressMonitor));
-					runInCurrentThread(operation, monitor);
-				} else {
-					t = new ModalContextThread(operation, monitor, display);
-					Throwable listenerException = null;
-					if (operation instanceof IThreadListener) {
-						listenerException = invokeThreadListener((IThreadListener) operation, t);
-					}
-					
-					if(listenerException == null){
-						t.start();
-						t.block();
-					}
-					else {
-						if(t.throwable == null)
-							t.throwable = listenerException;
-					}
-					Throwable throwable = t.throwable;
-					if (throwable != null) {
-						if (debug
-								&& !(throwable instanceof InterruptedException)
-								&& !(throwable instanceof OperationCanceledException)) {
-							System.err
-									.println("Exception in modal context operation:"); //$NON-NLS-1$
-							throwable.printStackTrace();
-							System.err.println("Called from:"); //$NON-NLS-1$
-							// Don't create the InvocationTargetException on the
-							// throwable,
-							// otherwise it will print its stack trace (from the
-							// other thread).
-							new InvocationTargetException(null)
-									.printStackTrace();
-						}
-						if (throwable instanceof InvocationTargetException) {
-							throw (InvocationTargetException) throwable;
-						} else if (throwable instanceof InterruptedException) {
-							throw (InterruptedException) throwable;
-						} else if (throwable instanceof OperationCanceledException) {
-							// See 1GAN3L5: ITPUI:WIN2000 - ModalContext
-							// converts OperationCancelException into
-							// InvocationTargetException
-							throw new InterruptedException(throwable
-									.getMessage());
-						} else {
-							throw new InvocationTargetException(throwable);
-						}
-					}
-				}
-			}
-		} finally {
-			modalLevel--;
-		}
-	}
-
-	/**
-	 * Invoke the ThreadListener if there are any errors or RuntimeExceptions
-	 * return them.
-	 * 
-	 * @param listener
-	 * @param switchingThread
-	 *            the {@link Thread} being switched to
-	 */
-	static Throwable invokeThreadListener(IThreadListener listener,
-			Thread switchingThread) {
-		try {
-			listener.threadChange(switchingThread);
-		} catch (ThreadDeath e) {
-			// Make sure to propagate ThreadDeath, or threads will never
-			// fully terminate
-			throw e;
-		} catch (Error e) {
-			return e;
-		}catch (RuntimeException e) {
-			return e;
-		}
-		return null;
-	}
-
-	/**
-	 * Run a runnable. Convert all thrown exceptions to either
-	 * InterruptedException or InvocationTargetException
-	 */
-	private static void runInCurrentThread(IRunnableWithProgress runnable,
-			IProgressMonitor progressMonitor) throws InterruptedException,
-			InvocationTargetException {
-		try {
-			if (runnable != null) {
-				runnable.run(progressMonitor);
-			}
-		} catch (InvocationTargetException e) {
-			throw e;
-		} catch (InterruptedException e) {
-			throw e;
-		} catch (OperationCanceledException e) {
-			throw new InterruptedException();
-		} catch (ThreadDeath e) {
-			// Make sure to propagate ThreadDeath, or threads will never fully
-			// terminate
-			throw e;
-		} catch (RuntimeException e) {
-			throw new InvocationTargetException(e);
-		} catch (Error e) {
-			throw new InvocationTargetException(e);
-		}
-	}
-
-	/**
-	 * Sets whether ModalContext is running in debug mode.
-	 * 
-	 * @param debugMode
-	 *            <code>true</code> for debug mode, and <code>false</code>
-	 *            for normal mode (the default)
-	 */
-	public static void setDebugMode(boolean debugMode) {
-		debug = debugMode;
-	}
-
-	/**
-	 * Sets whether ModalContext may process events (by calling
-	 * <code>Display.readAndDispatch()</code>) while running operations. By
-	 * default, ModalContext will process events while running operations. Use
-	 * this method to disallow event processing temporarily.
-	 * 
-	 * @param allowReadAndDispatch
-	 *            <code>true</code> (the default) if events may be processed
-	 *            while running an operation, <code>false</code> if
-	 *            Display.readAndDispatch() should not be called from
-	 *            ModalContext.
-	 * @since 3.2
-	 */
-	public static void setAllowReadAndDispatch(boolean allowReadAndDispatch) {
-		// use a separate thread if and only if it is OK to spin the event loop
-		runInSeparateThread = allowReadAndDispatch;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/package.html
deleted file mode 100644
index 1680896..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/operation/package.html
+++ /dev/null
@@ -1,26 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides JFace support for long-running operations.
-<h2>
-Package Specification</h2>
-Long-running operations must be dealt with specially in order to keep the
-UI helpful and responsive. Typically this involves temporarily disabling
-most controls and displaying a busy cursor and progress indicator; while
-the operation is in progress, the only requests that will be accepted will
-be ones to cancel the operation.
-<p>The <tt>IRunnableWithProgress</tt> interface should be implemented by
-any class whose instances are intended to be executed as long-running operations.
-These objects can then be run in any runnable context (<tt>IRunnableContext</tt>),
-including such standard JFace UI components as application windows (<tt>ApplicationWindow</tt>),
-wizard dialogs (<tt>WizardDialog</tt>), and progress monitor dialogs (<tt>ProgressMonitorDialog</tt>).
-The utility class <tt>ModalContext</tt> defines the basic mechanism and
-UI event loop for modal operations.
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanFieldEditor.java
deleted file mode 100644
index 2984f66..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanFieldEditor.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-
-/**
- * A field editor for a boolean type preference.
- */
-public class BooleanFieldEditor extends FieldEditor {
-
-    /**
-     * Style constant (value <code>0</code>) indicating the default
-     * layout where the field editor's check box appears to the left
-     * of the label.
-     */
-    public static final int DEFAULT = 0;
-
-    /**
-     * Style constant (value <code>1</code>) indicating a layout 
-     * where the field editor's label appears on the left
-     * with a check box on the right.
-     */
-    public static final int SEPARATE_LABEL = 1;
-
-    /**
-     * Style bits. Either <code>DEFAULT</code> or
-     * <code>SEPARATE_LABEL</code>.
-     */
-    private int style;
-
-    /**
-     * The previously selected, or "before", value.
-     */
-    private boolean wasSelected;
-
-    /**
-     * The checkbox control, or <code>null</code> if none.
-     */
-    private Button checkBox = null;
-
-    /**
-     * Creates a new boolean field editor 
-     */
-    protected BooleanFieldEditor() {
-    }
-
-    /**
-     * Creates a boolean field editor in the given style.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param style the style, either <code>DEFAULT</code> or
-     *   <code>SEPARATE_LABEL</code>
-     * @param parent the parent of the field editor's control
-     * @see #DEFAULT
-     * @see #SEPARATE_LABEL
-     */
-    public BooleanFieldEditor(String name, String labelText, int style,
-            Composite parent) {
-        init(name, labelText);
-        this.style = style;
-        createControl(parent);
-    }
-
-    /**
-     * Creates a boolean field editor in the default style.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param label the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    public BooleanFieldEditor(String name, String label, Composite parent) {
-        this(name, label, DEFAULT, parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void adjustForNumColumns(int numColumns) {
-        if (style == SEPARATE_LABEL) {
-			numColumns--;
-		}
-        ((GridData) checkBox.getLayoutData()).horizontalSpan = numColumns;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        String text = getLabelText();
-        switch (style) {
-        case SEPARATE_LABEL:
-            getLabelControl(parent);
-            numColumns--;
-            text = null;
-        default:
-            checkBox = getChangeControl(parent);
-            GridData gd = new GridData();
-            gd.horizontalSpan = numColumns;
-            checkBox.setLayoutData(gd);
-            if (text != null) {
-				checkBox.setText(text);
-			}
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     * Loads the value from the preference store and sets it to
-     * the check box.
-     */
-    protected void doLoad() {
-        if (checkBox != null) {
-            boolean value = getPreferenceStore()
-                    .getBoolean(getPreferenceName());
-            checkBox.setSelection(value);
-            wasSelected = value;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     * Loads the default value from the preference store and sets it to
-     * the check box.
-     */
-    protected void doLoadDefault() {
-        if (checkBox != null) {
-            boolean value = getPreferenceStore().getDefaultBoolean(
-                    getPreferenceName());
-            checkBox.setSelection(value);
-            wasSelected = value;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doStore() {
-        getPreferenceStore().setValue(getPreferenceName(),
-                checkBox.getSelection());
-    }
-
-    /**
-     * Returns this field editor's current value.
-     *
-     * @return the value
-     */
-    public boolean getBooleanValue() {
-        return checkBox.getSelection();
-    }
-
-    /**
-     * Returns the change button for this field editor.
-     * @param parent The Composite to create the receiver in.
-     *
-     * @return the change button
-     */
-    protected Button getChangeControl(Composite parent) {
-        if (checkBox == null) {
-            checkBox = new Button(parent, SWT.CHECK | SWT.LEFT);
-            checkBox.setFont(parent.getFont());
-            checkBox.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent e) {
-                    boolean isSelected = checkBox.getSelection();
-                    valueChanged(wasSelected, isSelected);
-                    wasSelected = isSelected;
-                }
-            });
-            checkBox.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    checkBox = null;
-                }
-            });
-        } else {
-            checkParent(checkBox, parent);
-        }
-        return checkBox;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public int getNumberOfControls() {
-        switch (style) {
-        case SEPARATE_LABEL:
-            return 2;
-        default:
-            return 1;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public void setFocus() {
-        if (checkBox != null) {
-            checkBox.setFocus();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public void setLabelText(String text) {
-        super.setLabelText(text);
-        Label label = getLabelControl();
-        if (label == null && checkBox != null) {
-            checkBox.setText(text);
-        }
-    }
-
-    /**
-     * Informs this field editor's listener, if it has one, about a change
-     * to the value (<code>VALUE</code> property) provided that the old and
-     * new values are different.
-     *
-     * @param oldValue the old value
-     * @param newValue the new value
-     */
-    protected void valueChanged(boolean oldValue, boolean newValue) {
-        setPresentsDefaultValue(false);
-        if (oldValue != newValue) {
-			fireStateChanged(VALUE, oldValue, newValue);
-		}
-    }
-
-    /*
-     * @see FieldEditor.setEnabled
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        //Only call super if there is a label already
-        if (style == SEPARATE_LABEL) {
-			super.setEnabled(enabled, parent);
-		}
-        getChangeControl(parent).setEnabled(enabled);
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanPropertyAction.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanPropertyAction.java
deleted file mode 100644
index 9751ab8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/BooleanPropertyAction.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * The BooleanPropertyAction is an action that set the values of a 
- * boolean property in the preference store.
- */
-
-public class BooleanPropertyAction extends Action {
-
-    private IPreferenceStore preferenceStore;
-
-    private String property;
-
-    /**
-     * Create a new instance of the receiver.
-     * @param title The displayable name of the action.
-     * @param preferenceStore The preference store to propogate changes to
-     * @param property The property that is being updated
-     * @throws IllegalArgumentException Thrown if preferenceStore or
-     * property are <code>null</code>.
-     */
-    public BooleanPropertyAction(String title,
-            IPreferenceStore preferenceStore, String property)
-            throws IllegalArgumentException {
-        super(title, AS_CHECK_BOX);
-
-        if (preferenceStore == null || property == null) {
-			throw new IllegalArgumentException();
-		}
-
-        this.preferenceStore = preferenceStore;
-        this.property = property;
-        final String finalProprety = property;
-
-        preferenceStore
-                .addPropertyChangeListener(new IPropertyChangeListener() {
-                    public void propertyChange(PropertyChangeEvent event) {
-                        if (finalProprety.equals(event.getProperty())) {
-							setChecked(Boolean.TRUE.equals(event.getNewValue()));
-						}
-                    }
-                });
-
-        setChecked(preferenceStore.getBoolean(property));
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.action.IAction#run()
-     */
-    public void run() {
-        preferenceStore.setValue(property, isChecked());
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorFieldEditor.java
deleted file mode 100644
index 36ffcd4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorFieldEditor.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A field editor for a color type preference.
- */
-public class ColorFieldEditor extends FieldEditor {
-
-	/**
-	 * The color selector, or <code>null</code> if none.
-	 */
-	private ColorSelector colorSelector;
-
-	/**
-	 * Creates a new color field editor
-	 */
-	protected ColorFieldEditor() {
-		//No default behavior
-	}
-
-	/**
-	 * Creates a color field editor.
-	 * 
-	 * @param name
-	 *            the name of the preference this field editor works on
-	 * @param labelText
-	 *            the label text of the field editor
-	 * @param parent
-	 *            the parent of the field editor's control
-	 */
-	public ColorFieldEditor(String name, String labelText, Composite parent) {
-		super(name, labelText, parent);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on FieldEditor.
-	 */
-	protected void adjustForNumColumns(int numColumns) {
-		((GridData) colorSelector.getButton().getLayoutData()).horizontalSpan = numColumns - 1;
-	}
-
-	/**
-	 * Computes the size of the color image displayed on the button.
-	 * <p>
-	 * This is an internal method and should not be called by clients.
-	 * </p>
-	 * 
-	 * @param window
-	 *            the window to create a GC on for calculation.
-	 * @return Point The image size
-	 *  
-	 */
-	protected Point computeImageSize(Control window) {
-		// Make the image height as high as a corresponding character. This
-		// makes sure that the button has the same size as a "normal" text
-		// button.
-		GC gc = new GC(window);
-		Font f = JFaceResources.getFontRegistry().get(
-				JFaceResources.DEFAULT_FONT);
-		gc.setFont(f);
-		int height = gc.getFontMetrics().getHeight();
-		gc.dispose();
-		Point p = new Point(height * 3 - 6, height);
-		return p;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int)
-	 */
-	protected void doFillIntoGrid(Composite parent, int numColumns) {
-		Control control = getLabelControl(parent);
-		GridData gd = new GridData();
-		gd.horizontalSpan = numColumns - 1;
-		control.setLayoutData(gd);
-
-		Button colorButton = getChangeControl(parent);
-		colorButton.setLayoutData(new GridData());
-		
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#doLoad()
-	 */
-	protected void doLoad() {
-		if (colorSelector == null) {
-			return;
-		}
-		colorSelector.setColorValue(PreferenceConverter.getColor(
-				getPreferenceStore(), getPreferenceName()));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on FieldEditor.
-	 */
-	protected void doLoadDefault() {
-		if (colorSelector == null) {
-			return;
-		}
-		colorSelector.setColorValue(PreferenceConverter.getDefaultColor(
-				getPreferenceStore(), getPreferenceName()));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on FieldEditor.
-	 */
-	protected void doStore() {
-		PreferenceConverter.setValue(getPreferenceStore(), getPreferenceName(),
-				colorSelector.getColorValue());
-	}
-
-	/**
-	 * Get the color selector used by the receiver.
-	 * 
-	 * @return ColorSelector/
-	 */
-	public ColorSelector getColorSelector() {
-		return colorSelector;
-	}
-
-	/**
-	 * Returns the change button for this field editor.
-	 * 
-	 * @param parent
-	 *            The control to create the button in if required.
-	 * @return the change button
-	 */
-	protected Button getChangeControl(Composite parent) {
-		if (colorSelector == null) {
-			colorSelector = new ColorSelector(parent);
-			colorSelector.addListener(new IPropertyChangeListener() {
-				// forward the property change of the color selector
-				public void propertyChange(PropertyChangeEvent event) {
-					ColorFieldEditor.this.fireValueChanged(event.getProperty(),
-							event.getOldValue(), event.getNewValue());
-					setPresentsDefaultValue(false);
-				}
-			});
-
-		} else {
-			checkParent(colorSelector.getButton(), parent);
-		}
-		return colorSelector.getButton();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on FieldEditor.
-	 */
-	public int getNumberOfControls() {
-		return 2;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.FieldEditor#setEnabled(boolean,
-	 *      org.eclipse.swt.widgets.Composite)
-	 */
-	public void setEnabled(boolean enabled, Composite parent) {
-		super.setEnabled(enabled, parent);
-		getChangeControl(parent).setEnabled(enabled);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorSelector.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorSelector.java
deleted file mode 100644
index 45daaec..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ColorSelector.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.ColorDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * The <code>ColorSelector</code> is a wrapper for a button that displays a
- * selected <code>Color</code> and allows the user to change the selection.
- */
-public class ColorSelector extends EventManager {
-    /**
-     * Property name that signifies the selected color of this
-     * <code>ColorSelector</code> has changed.
-     * 
-     * @since 3.0
-     */
-    public static final String PROP_COLORCHANGE = "colorValue"; //$NON-NLS-1$
-
-    private Button fButton;
-
-    private Color fColor;
-
-    private RGB fColorValue;
-
-    private Point fExtent;
-
-    private Image fImage;
-
-    /**
-     * Create a new instance of the reciever and the button that it wrappers in
-     * the supplied parent <code>Composite</code>.
-     * 
-     * @param parent
-     *            The parent of the button.
-     */
-    public ColorSelector(Composite parent) {
-        fButton = new Button(parent, SWT.PUSH);
-        fExtent = computeImageSize(parent);
-        fImage = new Image(parent.getDisplay(), fExtent.x, fExtent.y);
-        GC gc = new GC(fImage);
-        gc.setBackground(fButton.getBackground());
-        gc.fillRectangle(0, 0, fExtent.x, fExtent.y);
-        gc.dispose();
-        fButton.setImage(fImage);
-        fButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent event) {
-                open();
-            }
-        });
-        fButton.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent event) {
-                if (fImage != null) {
-                    fImage.dispose();
-                    fImage = null;
-                }
-                if (fColor != null) {
-                    fColor.dispose();
-                    fColor = null;
-                }
-            }
-        });
-        fButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.accessibility.AccessibleAdapter#getName(org.eclipse.swt.accessibility.AccessibleEvent)
-             */
-            public void getName(AccessibleEvent e) {
-                e.result = JFaceResources.getString("ColorSelector.Name"); //$NON-NLS-1$
-            }
-        });
-    }
-
-    /**
-     * Adds a property change listener to this <code>ColorSelector</code>.
-     * Events are fired when the color in the control changes via the user
-     * clicking an selecting a new one in the color dialog. No event is fired in
-     * the case where <code>setColorValue(RGB)</code> is invoked.
-     * 
-     * @param listener
-     *            a property change listener
-     * @since 3.0
-     */
-    public void addListener(IPropertyChangeListener listener) {
-        addListenerObject(listener);
-    }
-
-    /**
-     * Compute the size of the image to be displayed.
-     * 
-     * @param window -
-     *            the window used to calculate
-     * @return <code>Point</code>
-     */
-    private Point computeImageSize(Control window) {
-        GC gc = new GC(window);
-        Font f = JFaceResources.getFontRegistry().get(
-                JFaceResources.DIALOG_FONT);
-        gc.setFont(f);
-        int height = gc.getFontMetrics().getHeight();
-        gc.dispose();
-        Point p = new Point(height * 3 - 6, height);
-        return p;
-    }
-
-    /**
-     * Get the button control being wrappered by the selector.
-     * 
-     * @return <code>Button</code>
-     */
-    public Button getButton() {
-        return fButton;
-    }
-
-    /**
-     * Return the currently displayed color.
-     * 
-     * @return <code>RGB</code>
-     */
-    public RGB getColorValue() {
-        return fColorValue;
-    }
-
-    /**
-     * Removes the given listener from this <code>ColorSelector</code>. Has
-     * no affect if the listener is not registered.
-     * 
-     * @param listener
-     *            a property change listener
-     * @since 3.0
-     */
-    public void removeListener(IPropertyChangeListener listener) {
-        removeListenerObject(listener);
-    }
-
-    /**
-     * Set the current color value and update the control.
-     * 
-     * @param rgb
-     *            The new color.
-     */
-    public void setColorValue(RGB rgb) {
-        fColorValue = rgb;
-        updateColorImage();
-    }
-
-    /**
-     * Set whether or not the button is enabled.
-     * 
-     * @param state
-     *            the enabled state.
-     */
-    public void setEnabled(boolean state) {
-        getButton().setEnabled(state);
-    }
-
-    /**
-     * Update the image being displayed on the button using the current color
-     * setting.
-     */
-    protected void updateColorImage() {
-        Display display = fButton.getDisplay();
-        GC gc = new GC(fImage);
-        gc.setForeground(display.getSystemColor(SWT.COLOR_BLACK));
-        gc.drawRectangle(0, 2, fExtent.x - 1, fExtent.y - 4);
-        if (fColor != null) {
-			fColor.dispose();
-		}
-        fColor = new Color(display, fColorValue);
-        gc.setBackground(fColor);
-        gc.fillRectangle(1, 3, fExtent.x - 2, fExtent.y - 5);
-        gc.dispose();
-        fButton.setImage(fImage);
-    }
-
-    /**
-	 * Activate the editor for this selector. This causes the color selection
-	 * dialog to appear and wait for user input.
-	 * 
-	 * @since 3.2
-	 */
-	public void open() {
-		ColorDialog colorDialog = new ColorDialog(fButton.getShell());
-		colorDialog.setRGB(fColorValue);
-		RGB newColor = colorDialog.open();
-		if (newColor != null) {
-		    RGB oldValue = fColorValue;
-		    fColorValue = newColor;
-		    final Object[] finalListeners = getListeners();
-		    if (finalListeners.length > 0) {
-		        PropertyChangeEvent pEvent = new PropertyChangeEvent(
-		                this, PROP_COLORCHANGE, oldValue, newColor);
-		        for (int i = 0; i < finalListeners.length; ++i) {
-		            IPropertyChangeListener listener = (IPropertyChangeListener) finalListeners[i];
-		            listener.propertyChange(pEvent);
-		        }
-		    }
-		    updateColorImage();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ComboFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ComboFieldEditor.java
deleted file mode 100644
index 81bb5b7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ComboFieldEditor.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 214392 missing implementation of ComboFieldEditor.setEnabled
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A field editor for a combo box that allows the drop-down selection of one of
- * a list of items.
- * 
- * @since 3.3
- */
-public class ComboFieldEditor extends FieldEditor {
-
-	/**
-	 * The <code>Combo</code> widget.
-	 */
-	private Combo fCombo;
-	
-	/**
-	 * The value (not the name) of the currently selected item in the Combo widget.
-	 */
-	private String fValue;
-	
-	/**
-	 * The names (labels) and underlying values to populate the combo widget.  These should be
-	 * arranged as: { {name1, value1}, {name2, value2}, ...}
-	 */
-	private String[][] fEntryNamesAndValues;
-
-	/**
-	 * Create the combo box field editor.
-	 * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-	 * @param entryNamesAndValues the names (labels) and underlying values to populate the combo widget.  These should be
-	 * arranged as: { {name1, value1}, {name2, value2}, ...}
-	 * @param parent the parent composite
-	 */
-	public ComboFieldEditor(String name, String labelText, String[][] entryNamesAndValues, Composite parent) {
-		init(name, labelText);
-		Assert.isTrue(checkArray(entryNamesAndValues));
-		fEntryNamesAndValues = entryNamesAndValues;
-		createControl(parent);		
-	}
-
-	/**
-	 * Checks whether given <code>String[][]</code> is of "type" 
-	 * <code>String[][2]</code>.
-	 *
-	 * @return <code>true</code> if it is ok, and <code>false</code> otherwise
-	 */
-	private boolean checkArray(String[][] table) {
-		if (table == null) {
-			return false;
-		}
-		for (int i = 0; i < table.length; i++) {
-			String[] array = table[i];
-			if (array == null || array.length != 2) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int)
-	 */
-	protected void adjustForNumColumns(int numColumns) {
-		if (numColumns > 1) {
-			Control control = getLabelControl();
-			int left = numColumns;
-			if (control != null) {
-				((GridData)control.getLayoutData()).horizontalSpan = 1;
-				left = left - 1;
-			}
-			((GridData)fCombo.getLayoutData()).horizontalSpan = left;
-		} else {
-			Control control = getLabelControl();
-			if (control != null) {
-				((GridData)control.getLayoutData()).horizontalSpan = 1;
-			}
-			((GridData)fCombo.getLayoutData()).horizontalSpan = 1;			
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int)
-	 */
-	protected void doFillIntoGrid(Composite parent, int numColumns) {
-		int comboC = 1;
-		if (numColumns > 1) {
-			comboC = numColumns - 1;
-		}
-		Control control = getLabelControl(parent);
-		GridData gd = new GridData();
-		gd.horizontalSpan = 1;
-		control.setLayoutData(gd);
-		control = getComboBoxControl(parent);
-		gd = new GridData();
-		gd.horizontalSpan = comboC;
-		gd.horizontalAlignment = GridData.FILL;
-		control.setLayoutData(gd);
-		control.setFont(parent.getFont());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#doLoad()
-	 */
-	protected void doLoad() {
-		updateComboForValue(getPreferenceStore().getString(getPreferenceName()));
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault()
-	 */
-	protected void doLoadDefault() {
-		updateComboForValue(getPreferenceStore().getDefaultString(getPreferenceName()));
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#doStore()
-	 */
-	protected void doStore() {
-		if (fValue == null) {
-			getPreferenceStore().setToDefault(getPreferenceName());
-			return;
-		}
-		getPreferenceStore().setValue(getPreferenceName(), fValue);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls()
-	 */
-	public int getNumberOfControls() {
-		return 2;
-	}
-
-	/*
-	 * Lazily create and return the Combo control.
-	 */
-	private Combo getComboBoxControl(Composite parent) {
-		if (fCombo == null) {
-			fCombo = new Combo(parent, SWT.READ_ONLY);
-			fCombo.setFont(parent.getFont());
-			for (int i = 0; i < fEntryNamesAndValues.length; i++) {
-				fCombo.add(fEntryNamesAndValues[i][0], i);
-			}
-			
-			fCombo.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent evt) {
-					String oldValue = fValue;
-					String name = fCombo.getText();
-					fValue = getValueForName(name);
-					setPresentsDefaultValue(false);
-					fireValueChanged(VALUE, oldValue, fValue);					
-				}
-			});
-		}
-		return fCombo;
-	}
-	
-	/*
-	 * Given the name (label) of an entry, return the corresponding value.
-	 */
-	private String getValueForName(String name) {
-		for (int i = 0; i < fEntryNamesAndValues.length; i++) {
-			String[] entry = fEntryNamesAndValues[i];
-			if (name.equals(entry[0])) {
-				return entry[1];
-			}
-		}
-		return fEntryNamesAndValues[0][0];
-	}
-	
-	/*
-	 * Set the name in the combo widget to match the specified value.
-	 */
-	private void updateComboForValue(String value) {
-		fValue = value;
-		for (int i = 0; i < fEntryNamesAndValues.length; i++) {
-			if (value.equals(fEntryNamesAndValues[i][1])) {
-				fCombo.setText(fEntryNamesAndValues[i][0]);
-				return;
-			}
-		}
-		if (fEntryNamesAndValues.length > 0) {
-			fValue = fEntryNamesAndValues[0][1];
-			fCombo.setText(fEntryNamesAndValues[0][0]);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.FieldEditor#setEnabled(boolean,
-	 *      org.eclipse.swt.widgets.Composite)
-	 */
-	public void setEnabled(boolean enabled, Composite parent) {
-		super.setEnabled(enabled, parent);
-		getComboBoxControl(parent).setEnabled(enabled);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/DirectoryFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/DirectoryFieldEditor.java
deleted file mode 100644
index bad39f1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/DirectoryFieldEditor.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.io.File;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-
-/**
- * A field editor for a directory path type preference. A standard directory
- * dialog appears when the user presses the change button.
- */
-public class DirectoryFieldEditor extends StringButtonFieldEditor {
-    /**
-     * Creates a new directory field editor 
-     */
-    protected DirectoryFieldEditor() {
-    }
-
-    /**
-     * Creates a directory field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    public DirectoryFieldEditor(String name, String labelText, Composite parent) {
-        init(name, labelText);
-        setErrorMessage(JFaceResources
-                .getString("DirectoryFieldEditor.errorMessage"));//$NON-NLS-1$
-        setChangeButtonText(JFaceResources.getString("openBrowse"));//$NON-NLS-1$
-        setValidateStrategy(VALIDATE_ON_FOCUS_LOST);
-        createControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StringButtonFieldEditor.
-     * Opens the directory chooser dialog and returns the selected directory.
-     */
-    protected String changePressed() {
-        File f = new File(getTextControl().getText());
-        if (!f.exists()) {
-			f = null;
-		}
-        File d = getDirectory(f);
-        if (d == null) {
-			return null;
-		}
-
-        return d.getAbsolutePath();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StringFieldEditor.
-     * Checks whether the text input field contains a valid directory.
-     */
-    protected boolean doCheckState() {
-        String fileName = getTextControl().getText();
-        fileName = fileName.trim();
-        if (fileName.length() == 0 && isEmptyStringAllowed()) {
-			return true;
-		}
-        File file = new File(fileName);
-        return file.isDirectory();
-    }
-
-    /**
-     * Helper that opens the directory chooser dialog.
-     * @param startingDirectory The directory the dialog will open in.
-     * @return File File or <code>null</code>.
-     * 
-     */
-    private File getDirectory(File startingDirectory) {
-
-        DirectoryDialog fileDialog = new DirectoryDialog(getShell(), SWT.OPEN);
-        if (startingDirectory != null) {
-			fileDialog.setFilterPath(startingDirectory.getPath());
-		}
-        String dir = fileDialog.open();
-        if (dir != null) {
-            dir = dir.trim();
-            if (dir.length() > 0) {
-				return new File(dir);
-			}
-        }
-
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditor.java
deleted file mode 100644
index 1444511..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditor.java
+++ /dev/null
@@ -1,715 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.dialogs.DialogPage;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-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.Label;
-
-/**
- * Abstract base class for all field editors.
- * <p>
- * A field editor presents the value of a preference to the end 
- * user. The value is loaded from a preference store; if
- * modified by the end user, the value is validated and eventually
- * stored back to the preference store. A field editor reports
- * an event when the value, or the validity of the value, changes.
- * </p>
- * <p>
- * Field editors should be used in conjunction with a field 
- * editor preference page (<code>FieldEditorPreferencePage</code>)
- * which coordinates everything and provides the message line
- * which display messages emanating from the editor.
- * </p>
- * <p>
- * This package contains ready-to-use field editors for various
- * types of preferences:
- * <ul>
- *   <li><code>BooleanFieldEditor</code> - booleans</li>
- *   <li><code>IntegerFieldEditor</code> - integers</li>
- *   <li><code>StringFieldEditor</code> - text strings</li>
- *   <li><code>RadioGroupFieldEditor</code> - enumerations</li>
- *   <li><code>ColorFieldEditor</code> - RGB colors</li>
- *   <li><code>FontFieldEditor</code> - fonts</li>
- *   <li><code>DirectoryFieldEditor</code> - directories</li>
- *   <li><code>FileFieldEditor</code> - files</li>
- *   <li><code>PathEditor</code> - paths</li>
- * </ul>
- * </p>
- */
-public abstract class FieldEditor {
-
-    /**
-     * Property name constant (value <code>"field_editor_is_valid"</code>)
-     * to signal a change in the validity of the value of this field editor.
-     */
-    public static final String IS_VALID = "field_editor_is_valid";//$NON-NLS-1$
-
-    /**
-     * Property name constant (value <code>"field_editor_value"</code>)
-     * to signal a change in the value of this field editor.
-     */
-    public static final String VALUE = "field_editor_value";//$NON-NLS-1$
-
-    /** 
-     * Gap between label and control.
-     */
-    protected static final int HORIZONTAL_GAP = 8;
-
-    /**
-     * The preference store, or <code>null</code> if none.
-     */
-    private IPreferenceStore preferenceStore = null;
-
-    /**
-     * The name of the preference displayed in this field editor.
-     */
-    private String preferenceName;
-
-    /**
-     * Indicates whether the default value is currently displayed,
-     * initially <code>false</code>.
-     */
-    private boolean isDefaultPresented = false;
-
-    /**
-     * The label's text.
-     */
-    private String labelText;
-
-    /**
-     * The label control.
-     */
-    private Label label;
-
-    /**
-     * Listener, or <code>null</code> if none
-     */
-    private IPropertyChangeListener propertyChangeListener;
-
-    /** 
-     * The page containing this field editor
-     */
-    private DialogPage page;
-
-    /**
-     * Creates a new field editor.
-     */
-    protected FieldEditor() {
-    }
-
-    /**
-     * Creates a new field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    protected FieldEditor(String name, String labelText, Composite parent) {
-        init(name, labelText);
-        createControl(parent);
-    }
-
-    /**
-     * Adjusts the horizontal span of this field editor's basic controls.
-     * <p>
-     * Subclasses must implement this method to adjust the horizontal span 
-     * of controls so they appear correct in the given number of columns.
-     * </p>
-     * <p>
-     * The number of columns will always be equal to or greater than the 
-     * value returned by this editor's <code>getNumberOfControls</code> method.
-     *
-     * @param numColumns the number of columns
-     */
-    protected abstract void adjustForNumColumns(int numColumns);
-
-    /**
-     * Applies a font.
-     * <p>
-     * The default implementation of this framework method
-     * does nothing. Subclasses should override this method
-     * if they want to change the font of the SWT control to
-     * a value different than the standard dialog font.
-     * </p>
-     */
-    protected void applyFont() {
-    }
-
-    /**
-     * Checks if the given parent is the current parent of the
-     * supplied control; throws an (unchecked) exception if they
-     * are not correctly related.
-     *
-     * @param control the control
-     * @param parent the parent control
-     */
-    protected void checkParent(Control control, Composite parent) {
-        Assert.isTrue(control.getParent() == parent, "Different parents");//$NON-NLS-1$
-    }
-
-    /**
-     * Clears the error message from the message line.
-     */
-    protected void clearErrorMessage() {
-        if (page != null) {
-			page.setErrorMessage(null);
-		}
-    }
-
-    /**
-     * Clears the normal message from the message line.
-     */
-    protected void clearMessage() {
-        if (page != null) {
-			page.setMessage(null);
-		}
-    }
-
-    /**
-     * Returns the number of pixels corresponding to the
-     * given number of horizontal dialog units.
-     * <p>
-     * Clients may call this framework method, but should not override it.
-     * </p>
-     *
-     * @param control the control being sized
-     * @param dlus the number of horizontal dialog units
-     * @return the number of pixels
-     */
-    protected int convertHorizontalDLUsToPixels(Control control, int dlus) {
-        GC gc = new GC(control);
-        gc.setFont(control.getFont());
-        int averageWidth = gc.getFontMetrics().getAverageCharWidth();
-        gc.dispose();
-
-        double horizontalDialogUnitSize = averageWidth * 0.25;
-
-        return (int) Math.round(dlus * horizontalDialogUnitSize);
-    }
-
-    /**
-     * Returns the number of pixels corresponding to the
-     * given number of vertical dialog units.
-     * <p>
-     * Clients may call this framework method, but should not override it.
-     * </p>
-     *
-     * @param control the control being sized
-     * @param dlus the number of vertical dialog units
-     * @return the number of pixels
-     */
-    protected int convertVerticalDLUsToPixels(Control control, int dlus) {
-        GC gc = new GC(control);
-        gc.setFont(control.getFont());
-        int height = gc.getFontMetrics().getHeight();
-        gc.dispose();
-
-        double verticalDialogUnitSize = height * 0.125;
-
-        return (int) Math.round(dlus * verticalDialogUnitSize);
-    }
-
-    /**
-     * Creates this field editor's main control containing all of its
-     * basic controls.
-     *
-     * @param parent the parent control
-     */
-    protected void createControl(Composite parent) {
-        GridLayout layout = new GridLayout();
-        layout.numColumns = getNumberOfControls();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        layout.horizontalSpacing = HORIZONTAL_GAP;
-        parent.setLayout(layout);
-        doFillIntoGrid(parent, layout.numColumns);
-    }
-
-    /**
-     * Disposes the SWT resources used by this field editor.
-     */
-    public void dispose() {
-        // nothing to dispose
-    }
-
-    /**
-     * Fills this field editor's basic controls into the given parent.
-     * <p>
-     * Subclasses must implement this method to create the controls
-     * for this field editor.
-     * </p>
-     *
-     * @param parent the composite used as a parent for the basic controls;
-     *	the parent's layout must be a <code>GridLayout</code>
-     * @param numColumns the number of columns
-     */
-    protected abstract void doFillIntoGrid(Composite parent, int numColumns);
-
-    /**
-     * Initializes this field editor with the preference value from
-     * the preference store.
-     * <p>
-     * Subclasses must implement this method to properly initialize 
-     * the field editor.
-     * </p>
-     */
-    protected abstract void doLoad();
-
-    /**
-     * Initializes this field editor with the default preference value from
-     * the preference store.
-     * <p>
-     * Subclasses must implement this method to properly initialize 
-     * the field editor.
-     * </p>
-     */
-    protected abstract void doLoadDefault();
-
-    /**
-     * Stores the preference value from this field editor into
-     * the preference store.
-     * <p>
-     * Subclasses must implement this method to save the entered value
-     * into the preference store.
-     * </p>
-     */
-    protected abstract void doStore();
-
-    /**
-     * Fills this field editor's basic controls into the given parent. 
-     *
-     * @param parent the composite used as a parent for the basic controls;
-     *	the parent's layout must be a <code>GridLayout</code>
-     * @param numColumns the number of columns
-     */
-    public void fillIntoGrid(Composite parent, int numColumns) {
-        Assert.isTrue(numColumns >= getNumberOfControls());
-        Assert.isTrue(parent.getLayout() instanceof GridLayout);
-        doFillIntoGrid(parent, numColumns);
-    }
-
-    /**
-     * Informs this field editor's listener, if it has one, about a change to
-     * one of this field editor's boolean-valued properties. Does nothing
-     * if the old and new values are the same.
-     *
-     * @param property the field editor property name, 
-     *   such as <code>VALUE</code> or <code>IS_VALID</code>
-     * @param oldValue the old value
-     * @param newValue the new value
-     */
-    protected void fireStateChanged(String property, boolean oldValue,
-            boolean newValue) {
-        if (oldValue == newValue) {
-			return;
-		}
-        fireValueChanged(property, oldValue ? Boolean.TRUE : Boolean.FALSE, newValue ? Boolean.TRUE : Boolean.FALSE);
-    }
-
-    /**
-     * Informs this field editor's listener, if it has one, about a change to
-     * one of this field editor's properties.
-     *
-     * @param property the field editor property name, 
-     *   such as <code>VALUE</code> or <code>IS_VALID</code>
-     * @param oldValue the old value object, or <code>null</code>
-     * @param newValue the new value, or <code>null</code>
-     */
-    protected void fireValueChanged(String property, Object oldValue,
-            Object newValue) {
-        if (propertyChangeListener == null) {
-			return;
-		}
-        propertyChangeListener.propertyChange(new PropertyChangeEvent(this,
-                property, oldValue, newValue));
-    }
-
-    /**
-     * Returns the symbolic font name used by this field editor.
-     *
-     * @return the symbolic font name
-     */
-    public String getFieldEditorFontName() {
-        return JFaceResources.DIALOG_FONT;
-    }
-
-    /**
-     * Returns the label control. 
-     *
-     * @return the label control, or <code>null</code>
-     *  if no label control has been created
-     */
-    protected Label getLabelControl() {
-        return label;
-    }
-
-    /**
-     * Returns this field editor's label component.
-     * <p>
-     * The label is created if it does not already exist
-     * </p>
-     *
-     * @param parent the parent
-     * @return the label control
-     */
-    public Label getLabelControl(Composite parent) {
-        if (label == null) {
-            label = new Label(parent, SWT.LEFT);
-            label.setFont(parent.getFont());
-            String text = getLabelText();
-            if (text != null) {
-				label.setText(text);
-			}
-            label.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    label = null;
-                }
-            });
-        } else {
-            checkParent(label, parent);
-        }
-        return label;
-    }
-
-    /**
-     * Returns this field editor's label text.
-     *
-     * @return the label text
-     */
-    public String getLabelText() {
-        return labelText;
-    }
-
-    /**
-     * Returns the number of basic controls this field editor consists of.
-     *
-     * @return the number of controls
-     */
-    public abstract int getNumberOfControls();
-
-    /**
-     * Returns the name of the preference this field editor operates on.
-     *
-     * @return the name of the preference
-     */
-    public String getPreferenceName() {
-        return preferenceName;
-    }
-
-    /**
-     * Returns the preference page in which this field editor
-     * appears.
-     *
-     * @return the preference page, or <code>null</code> if none
-     * @deprecated use #getPage()
-     */
-    protected PreferencePage getPreferencePage() {
-    	if(page != null && page instanceof PreferencePage) {
-			return (PreferencePage) page;
-		}
-    	return null;
-    }
-    
-    /**
-     * Return the DialogPage that the receiver is sending
-     * updates to.
-     * 
-     * @return DialogPage or <code>null</code> if it 
-     * has not been set.
-     * 
-     * @since 3.1
-     */
-    protected DialogPage getPage(){
-    	return page;
-    }
-
-    /**
-     * Returns the preference store used by this field editor.
-     *
-     * @return the preference store, or <code>null</code> if none
-     * @see #setPreferenceStore
-     */
-    public IPreferenceStore getPreferenceStore() {
-        return preferenceStore;
-    }
-
-    /**
-     * Initialize the field editor with the given preference name and label.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param text the label text of the field editor
-     */
-    protected void init(String name, String text) {
-        Assert.isNotNull(name);
-        Assert.isNotNull(text);
-        preferenceName = name;
-        this.labelText = text;
-    }
-
-    /**
-     * Returns whether this field editor contains a valid value.
-     * <p>
-     * The default implementation of this framework method
-     * returns <code>true</code>. Subclasses wishing to perform
-     * validation should override both this method and
-     * <code>refreshValidState</code>.
-     * </p>
-     * 
-     * @return <code>true</code> if the field value is valid,
-     *   and <code>false</code> if invalid
-     * @see #refreshValidState()
-     */
-    public boolean isValid() {
-        return true;
-    }
-
-    /**
-     * Initializes this field editor with the preference value from
-     * the preference store.
-     */
-    public void load() {
-        if (preferenceStore != null) {
-            isDefaultPresented = false;
-            doLoad();
-            refreshValidState();
-        }
-    }
-
-    /**
-     * Initializes this field editor with the default preference value
-     * from the preference store.
-     */
-    public void loadDefault() {
-        if (preferenceStore != null) {
-            isDefaultPresented = true;
-            doLoadDefault();
-            refreshValidState();
-        }
-    }
-
-    /**
-     * Returns whether this field editor currently presents the
-     * default value for its preference.
-     * 
-     * @return <code>true</code> if the default value is presented,
-     *   and <code>false</code> otherwise
-     */
-    public boolean presentsDefaultValue() {
-        return isDefaultPresented;
-    }
-
-    /**
-     * Refreshes this field editor's valid state after a value change
-     * and fires an <code>IS_VALID</code> property change event if
-     * warranted.
-     * <p>
-     * The default implementation of this framework method does
-     * nothing. Subclasses wishing to perform validation should override
-     * both this method and <code>isValid</code>.
-     * </p>
-     *
-     * @see #isValid
-     */
-    protected void refreshValidState() {
-    }
-
-    /**
-     * Sets the focus to this field editor.
-     * <p>
-     * The default implementation of this framework method
-     * does nothing. Subclasses may reimplement.
-     * </p>
-     */
-    public void setFocus() {
-        // do nothing;
-    }
-
-    /**
-     * Sets this field editor's label text.
-     * The label is typically presented to the left of the entry field.
-     *
-     * @param text the label text
-     */
-    public void setLabelText(String text) {
-        Assert.isNotNull(text);
-        labelText = text;
-        if (label != null) {
-			label.setText(text);
-		}
-    }
-
-    /**
-     * Sets the name of the preference this field editor operates on.
-     * <p>
-     * The ability to change this allows the same field editor object
-     * to be reused for different preferences.
-     * </p>
-     * <p>
-     * For example: <p>
-     * <pre>
-     * 	...
-     *  editor.setPreferenceName("font");
-     * 	editor.load();
-     * </pre>
-     * </p>
-     *
-     * @param name the name of the preference
-     */
-    public void setPreferenceName(String name) {
-        preferenceName = name;
-    }
-
-    /**
-     * Sets the preference page in which this field editor
-     * appears.
-     *
-     * @param preferencePage the preference page, or <code>null</code> if none
-     * @deprecated use #setPage(DialogPage)
-     */
-    public void setPreferencePage(PreferencePage preferencePage) {
-        setPage(preferencePage);
-    }
-    
-
-    /**
-     * Set the page to be the receiver.
-	 * @param dialogPage
-	 * 
-	 * @since 3.1
-	 */
-	public void setPage(DialogPage dialogPage) {
-		page = dialogPage;
-		
-	}
-
-	/**
-     * Sets the preference store used by this field editor.
-     *
-     * @param store the preference store, or <code>null</code> if none
-     * @see #getPreferenceStore
-     */
-    public void setPreferenceStore(IPreferenceStore store) {
-        preferenceStore = store;
-    }
-
-    /**
-     * Sets whether this field editor is presenting the default value.
-     *
-     * @param booleanValue <code>true</code> if the default value is being presented,
-     *  and <code>false</code> otherwise
-     */
-    protected void setPresentsDefaultValue(boolean booleanValue) {
-        isDefaultPresented = booleanValue;
-    }
-
-    /**
-     * Sets or removes the property change listener for this field editor.
-     * <p>
-     * Note that field editors can support only a single listener.
-     * </p>
-     *
-     * @param listener a property change listener, or <code>null</code>
-     *  to remove
-     */
-    public void setPropertyChangeListener(IPropertyChangeListener listener) {
-        propertyChangeListener = listener;
-    }
-
-    /**
-     * Shows the given error message in the page for this
-     * field editor if it has one.
-     *
-     * @param msg the error message
-     */
-    protected void showErrorMessage(String msg) {
-        if (page != null) {
-			page.setErrorMessage(msg);
-		}
-    }
-
-    /**
-     * Shows the given message in the page for this
-     * field editor if it has one.
-     *
-     * @param msg the message
-     */
-    protected void showMessage(String msg) {
-        if (page != null) {
-			page.setErrorMessage(msg);
-		}
-    }
-
-    /**
-     * Stores this field editor's value back into the preference store.
-     */
-    public void store() {
-        if (preferenceStore == null) {
-			return;
-		}
-
-        if (isDefaultPresented) {
-            preferenceStore.setToDefault(preferenceName);
-        } else {
-            doStore();
-        }
-    }
-
-    /**
-     * Set the GridData on button to be one that is spaced for the
-     * current font.
-     * @param button the button the data is being set on.
-     */
-
-    protected void setButtonLayoutData(Button button) {
-
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-
-        // Compute and store a font metric
-        GC gc = new GC(button);
-        gc.setFont(button.getFont());
-        FontMetrics fontMetrics = gc.getFontMetrics();
-        gc.dispose();
-
-        int widthHint = org.eclipse.jface.dialogs.Dialog
-                .convertVerticalDLUsToPixels(fontMetrics,
-                        IDialogConstants.BUTTON_WIDTH);
-        data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT,
-                SWT.DEFAULT, true).x);
-        button.setLayoutData(data);
-    }
-
-    /**
-     * Set whether or not the controls in the field editor
-     * are enabled.
-     * @param enabled The enabled state.
-     * @param parent The parent of the controls in the group.
-     *  Used to create the controls if required.
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        getLabelControl(parent).setEnabled(enabled);
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditorPreferencePage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditorPreferencePage.java
deleted file mode 100644
index 1863709..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FieldEditorPreferencePage.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * 	   Chris Tilt (chris@tilts.net) - Bug 38547 - [Preferences] Changing preferences 
- * 			ignored after "Restore defaults" pressed.
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-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;
-
-/**
- * A special abstract preference page to host field editors.
- * <p>
- * Subclasses must implement the <code>createFieldEditors</code> method
- * and should override <code>createLayout</code> if a special layout of the field
- * editors is needed.
- * </p>
- */
-public abstract class FieldEditorPreferencePage extends PreferencePage
-        implements IPropertyChangeListener {
-
-    /**
-     * Layout constant (value <code>0</code>) indicating that
-     * each field editor is handled as a single component.
-     */
-    public static final int FLAT = 0;
-
-    /**
-     * Layout constant (value <code>1</code>) indicating that
-     * the field editors' basic controls are put into a grid layout.
-     */
-    public static final int GRID = 1;
-
-    /** 
-     * The vertical spacing used by layout styles <code>FLAT</code> 
-     * and <code>GRID</code>.
-     */
-    protected static final int VERTICAL_SPACING = 10;
-
-    /** 
-     * The margin width used by layout styles <code>FLAT</code> 
-     * and <code>GRID</code>.
-     */
-    protected static final int MARGIN_WIDTH = 0;
-
-    /** 
-     * The margin height used by layout styles <code>FLAT</code> 
-     * and <code>GRID</code>.
-     */
-    protected static final int MARGIN_HEIGHT = 0;
-
-    /**
-     * The field editors, or <code>null</code> if not created yet.
-     */
-    private List fields = null;
-
-    /**
-     * The layout style; either <code>FLAT</code> or <code>GRID</code>.
-     */
-    private int style;
-
-    /** 
-     * The first invalid field editor, or <code>null</code>
-     * if all field editors are valid.
-     */
-    private FieldEditor invalidFieldEditor = null;
-
-    /**
-     * The parent composite for field editors
-     */
-    private Composite fieldEditorParent;
-
-    /**
-	 * Create a new instance of the reciever.
-	 */
-	public FieldEditorPreferencePage() {
-		this(FLAT);
-	}
-
-	/**
-     * Creates a new field editor preference page with the given style,
-     * an empty title, and no image.
-     *
-     * @param style either <code>GRID</code> or <code>FLAT</code>
-     */
-    protected FieldEditorPreferencePage(int style) {
-        super();
-        this.style = style;
-    }
-
-    /**
-     * Creates a new field editor preference page with the given title 
-     * and style, but no image.
-     *
-     * @param title the title of this preference page
-     * @param style either <code>GRID</code> or <code>FLAT</code>
-     */
-    protected FieldEditorPreferencePage(String title, int style) {
-        super(title);
-        this.style = style;
-    }
-
-    /**
-     * Creates a new field editor preference page with the given title,
-     * image, and style.
-     *
-     * @param title the title of this preference page
-     * @param image the image for this preference page, or 
-     *   <code>null</code> if none
-     * @param style either <code>GRID</code> or <code>FLAT</code>
-     */
-    protected FieldEditorPreferencePage(String title, ImageDescriptor image,
-            int style) {
-        super(title, image);
-        this.style = style;
-    }
-
-    /**
-     * Adds the given field editor to this page.
-     *
-     * @param editor the field editor
-     */
-    protected void addField(FieldEditor editor) {
-        if (fields == null) {
-			fields = new ArrayList();
-		}
-        fields.add(editor);
-    }
-
-    /**
-     * Adjust the layout of the field editors so that
-     * they are properly aligned.
-     */
-    protected void adjustGridLayout() {
-        int numColumns = calcNumberOfColumns();
-        ((GridLayout) fieldEditorParent.getLayout()).numColumns = numColumns;
-        if (fields != null) {
-            for (int i = 0; i < fields.size(); i++) {
-                FieldEditor fieldEditor = (FieldEditor) fields.get(i);
-                fieldEditor.adjustForNumColumns(numColumns);
-            }
-        }
-    }
-
-    /**
-     * Applys the font to the field editors managed by this page.
-     */
-    protected void applyFont() {
-        if (fields != null) {
-            Iterator e = fields.iterator();
-            while (e.hasNext()) {
-                FieldEditor pe = (FieldEditor) e.next();
-                pe.applyFont();
-            }
-        }
-    }
-
-    /**
-     * Calculates the number of columns needed to host all field editors.
-     *
-     * @return the number of columns
-     */
-    private int calcNumberOfColumns() {
-        int result = 0;
-        if (fields != null) {
-            Iterator e = fields.iterator();
-            while (e.hasNext()) {
-                FieldEditor pe = (FieldEditor) e.next();
-                result = Math.max(result, pe.getNumberOfControls());
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Recomputes the page's error state by calling <code>isValid</code> for
-     * every field editor.
-     */
-    protected void checkState() {
-        boolean valid = true;
-        invalidFieldEditor = null;
-        // The state can only be set to true if all
-        // field editors contain a valid value. So we must check them all
-        if (fields != null) {
-            int size = fields.size();
-            for (int i = 0; i < size; i++) {
-                FieldEditor editor = (FieldEditor) fields.get(i);
-                valid = valid && editor.isValid();
-                if (!valid) {
-                    invalidFieldEditor = editor;
-                    break;
-                }
-            }
-        }
-        setValid(valid);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PreferencePage.
-     */
-    protected Control createContents(Composite parent) {
-        fieldEditorParent = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 1;
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        fieldEditorParent.setLayout(layout);
-        fieldEditorParent.setFont(parent.getFont());
-
-        createFieldEditors();
-
-        if (style == GRID) {
-			adjustGridLayout();
-		}
-
-        initialize();
-        checkState();
-        return fieldEditorParent;
-    }
-
-    /**
-     * Creates the page's field editors.
-     * <p>
-     * The default implementation of this framework method
-     * does nothing. Subclass must implement this method to
-     * create the field editors.
-     * </p>
-     * <p>
-     * Subclasses should call <code>getFieldEditorParent</code>
-     * to obtain the parent control for each field editor.
-     * This same parent should not be used for more than
-     * one editor as the parent may change for each field
-     * editor depending on the layout style of the page
-     * </p>
-     */
-    protected abstract void createFieldEditors();
-
-    /**	
-     * The field editor preference page implementation of an <code>IDialogPage</code>
-     * method disposes of this page's controls and images.
-     * Subclasses may override to release their own allocated SWT
-     * resources, but must call <code>super.dispose</code>.
-     */
-    public void dispose() {
-        super.dispose();
-        if (fields != null) {
-            Iterator e = fields.iterator();
-            while (e.hasNext()) {
-                FieldEditor pe = (FieldEditor) e.next();
-                pe.setPage(null);
-                pe.setPropertyChangeListener(null);
-                pe.setPreferenceStore(null);
-            }
-        }
-    }
-
-    /**
-     * Returns a parent composite for a field editor.
-     * <p>
-     * This value must not be cached since a new parent
-     * may be created each time this method called. Thus
-     * this method must be called each time a field editor
-     * is constructed.
-     * </p>
-     *
-     * @return a parent
-     */
-    protected Composite getFieldEditorParent() {
-        if (style == FLAT) {
-            // Create a new parent for each field editor
-            Composite parent = new Composite(fieldEditorParent, SWT.NULL);
-            parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-            return parent;
-        }
-        // Just return the parent
-        return fieldEditorParent;
-    }
-
-    /**
-     * Initializes all field editors.
-     */
-    protected void initialize() {
-        if (fields != null) {
-            Iterator e = fields.iterator();
-            while (e.hasNext()) {
-                FieldEditor pe = (FieldEditor) e.next();
-                pe.setPage(this);
-                pe.setPropertyChangeListener(this);
-                pe.setPreferenceStore(getPreferenceStore());
-                pe.load();
-            }
-        }
-    }
-
-    /**	
-     * The field editor preference page implementation of a <code>PreferencePage</code>
-     * method loads all the field editors with their default values.
-     */
-    protected void performDefaults() {
-        if (fields != null) {
-            Iterator e = fields.iterator();
-            while (e.hasNext()) {
-                FieldEditor pe = (FieldEditor) e.next();
-                pe.loadDefault();
-            }
-        }
-        // Force a recalculation of my error state.
-        checkState();
-        super.performDefaults();
-    }
-
-    /** 
-     * The field editor preference page implementation of this 
-     * <code>PreferencePage</code> method saves all field editors by
-     * calling <code>FieldEditor.store</code>. Note that this method
-     * does not save the preference store itself; it just stores the
-     * values back into the preference store.
-     *
-     * @see FieldEditor#store()
-     */
-    public boolean performOk() {
-        if (fields != null) {
-            Iterator e = fields.iterator();
-            while (e.hasNext()) {
-                FieldEditor pe = (FieldEditor) e.next();
-                pe.store();
-                pe.setPresentsDefaultValue(false);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * The field editor preference page implementation of this <code>IPreferencePage</code>
-     * (and <code>IPropertyChangeListener</code>) method intercepts <code>IS_VALID</code> 
-     * events but passes other events on to its superclass.
-     */
-    public void propertyChange(PropertyChangeEvent event) {
-
-        if (event.getProperty().equals(FieldEditor.IS_VALID)) {
-            boolean newValue = ((Boolean) event.getNewValue()).booleanValue();
-            // If the new value is true then we must check all field editors.
-            // If it is false, then the page is invalid in any case.
-            if (newValue) {
-                checkState();
-            } else {
-                invalidFieldEditor = (FieldEditor) event.getSource();
-                setValid(newValue);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialog.
-     */
-    public void setVisible(boolean visible) {
-        super.setVisible(visible);
-        if (visible && invalidFieldEditor != null) {
-            invalidFieldEditor.setFocus();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FileFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FileFieldEditor.java
deleted file mode 100644
index d3cb7cc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FileFieldEditor.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.io.File;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.FileDialog;
-
-/**
- * A field editor for a file path type preference. A standard file 
- * dialog appears when the user presses the change button.
- */
-public class FileFieldEditor extends StringButtonFieldEditor {
-
-    /**
-     * List of legal file extension suffixes, or <code>null</code>
-     * for system defaults.
-     */
-    private String[] extensions = null;
-
-    /**
-     * Indicates whether the path must be absolute;
-     * <code>false</code> by default.
-     */
-    private boolean enforceAbsolute = false;
-
-    /**
-     * Creates a new file field editor 
-     */
-    protected FileFieldEditor() {
-    }
-
-    /**
-     * Creates a file field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    public FileFieldEditor(String name, String labelText, Composite parent) {
-        this(name, labelText, false, parent);
-    }
-    
-    /**
-     * Creates a file field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param enforceAbsolute <code>true</code> if the file path
-     *  must be absolute, and <code>false</code> otherwise
-     * @param parent the parent of the field editor's control
-     */
-    public FileFieldEditor(String name, String labelText, boolean enforceAbsolute, Composite parent) {
-        this(name, labelText, enforceAbsolute, VALIDATE_ON_FOCUS_LOST, parent);
-    }
-    /**
-     * Creates a file field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param enforceAbsolute <code>true</code> if the file path
-     *  must be absolute, and <code>false</code> otherwise
-     * @param validationStrategy either {@link StringButtonFieldEditor#VALIDATE_ON_KEY_STROKE}
-     *  to perform on the fly checking, or {@link StringButtonFieldEditor#VALIDATE_ON_FOCUS_LOST}
-     *  (the default) to perform validation only after the text has been typed in
-     * @param parent the parent of the field editor's control.
-     * @since 3.4
-     * @see StringButtonFieldEditor#VALIDATE_ON_KEY_STROKE
-     * @see StringButtonFieldEditor#VALIDATE_ON_FOCUS_LOST
-     */
-    public FileFieldEditor(String name, String labelText,
-            boolean enforceAbsolute, int validationStrategy, Composite parent) {
-        init(name, labelText);
-        this.enforceAbsolute = enforceAbsolute;
-        setErrorMessage(JFaceResources
-                .getString("FileFieldEditor.errorMessage"));//$NON-NLS-1$
-        setChangeButtonText(JFaceResources.getString("openBrowse"));//$NON-NLS-1$
-        setValidateStrategy(validationStrategy);
-        createControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StringButtonFieldEditor.
-     * Opens the file chooser dialog and returns the selected file.
-     */
-    protected String changePressed() {
-        File f = new File(getTextControl().getText());
-        if (!f.exists()) {
-			f = null;
-		}
-        File d = getFile(f);
-        if (d == null) {
-			return null;
-		}
-
-        return d.getAbsolutePath();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StringFieldEditor.
-     * Checks whether the text input field specifies an existing file.
-     */
-    protected boolean checkState() {
-
-        String msg = null;
-
-        String path = getTextControl().getText();
-        if (path != null) {
-			path = path.trim();
-		} else {
-			path = "";//$NON-NLS-1$
-		}
-        if (path.length() == 0) {
-            if (!isEmptyStringAllowed()) {
-				msg = getErrorMessage();
-			}
-        } else {
-            File file = new File(path);
-            if (file.isFile()) {
-                if (enforceAbsolute && !file.isAbsolute()) {
-					msg = JFaceResources
-                            .getString("FileFieldEditor.errorMessage2");//$NON-NLS-1$
-				}
-            } else {
-                msg = getErrorMessage();
-            }
-        }
-
-        if (msg != null) { // error
-            showErrorMessage(msg);
-            return false;
-        }
-
-        // OK!
-        clearErrorMessage();
-        return true;
-    }
-
-    /**
-     * Helper to open the file chooser dialog.
-     * @param startingDirectory the directory to open the dialog on.
-     * @return File The File the user selected or <code>null</code> if they
-     * do not.
-     */
-    private File getFile(File startingDirectory) {
-
-        FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
-        if (startingDirectory != null) {
-			dialog.setFileName(startingDirectory.getPath());
-		}
-        if (extensions != null) {
-			dialog.setFilterExtensions(extensions);
-		}
-        String file = dialog.open();
-        if (file != null) {
-            file = file.trim();
-            if (file.length() > 0) {
-				return new File(file);
-			}
-        }
-
-        return null;
-    }
-
-    /**
-     * Sets this file field editor's file extension filter.
-     *
-     * @param extensions a list of file extension, or <code>null</code> 
-     * to set the filter to the system's default value
-     */
-    public void setFileExtensions(String[] extensions) {
-        this.extensions = extensions;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FontFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FontFieldEditor.java
deleted file mode 100644
index fd3fc6d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/FontFieldEditor.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.FontDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * A field editor for a font type preference.
- */
-public class FontFieldEditor extends FieldEditor {
-
-    /**
-     * The change font button, or <code>null</code> if none
-     * (before creation and after disposal).
-     */
-    private Button changeFontButton = null;
-
-    /**
-     * The text for the change font button, or <code>null</code>
-     * if missing.
-     */
-    private String changeButtonText;
-
-    /**
-     * The text for the preview, or <code>null</code> if no preview is desired
-     */
-    private String previewText;
-
-    /**
-     * Font data for the chosen font button, or <code>null</code> if none.
-     */
-    private FontData[] chosenFont;
-
-    /**
-     * The label that displays the selected font, or <code>null</code> if none.
-     */
-    private Label valueControl;
-
-    /**
-     * The previewer, or <code>null</code> if none.
-     */
-    private DefaultPreviewer previewer;
-
-    /**
-     * Internal font previewer implementation.
-     */
-    private static class DefaultPreviewer {
-        private Text text;
-
-        private String string;
-
-        private Font font;
-
-        /**
-         * Constructor for the previewer.
-         * @param s
-         * @param parent
-         */
-        public DefaultPreviewer(String s, Composite parent) {
-            string = s;
-            text = new Text(parent, SWT.READ_ONLY | SWT.BORDER);
-            text.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent e) {
-                    if (font != null) {
-						font.dispose();
-					}
-                }
-            });
-            if (string != null) {
-				text.setText(string);
-			}
-        }
-
-        /**
-         * @return the control the previewer is using
-         */
-        public Control getControl() {
-            return text;
-        }
-
-        /**
-         * Set the font to display with
-         * @param fontData
-         */
-        public void setFont(FontData[] fontData) {
-            if (font != null) {
-				font.dispose();
-			}
-            font = new Font(text.getDisplay(), fontData);
-            text.setFont(font);
-        }
-
-        /**
-         * @return the preferred size of the previewer.
-         */
-        public int getPreferredExtent() {
-            return 40;
-        }
-    }
-
-    /**
-     * Creates a new font field editor 
-     */
-    protected FontFieldEditor() {
-    }
-
-    /**
-     * Creates a font field editor with an optional preview area.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param previewAreaText the text used for the preview window. If it is
-     * <code>null</code> there will be no preview area,
-     * @param parent the parent of the field editor's control
-     */
-    public FontFieldEditor(String name, String labelText,
-            String previewAreaText, Composite parent) {
-        init(name, labelText);
-        previewText = previewAreaText;
-        changeButtonText = JFaceResources.getString("openChange"); //$NON-NLS-1$
-        createControl(parent);
-
-    }
-
-    /**
-     * Creates a font field editor without a preview.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    public FontFieldEditor(String name, String labelText, Composite parent) {
-        this(name, labelText, null, parent);
-
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void adjustForNumColumns(int numColumns) {
-
-        GridData data = new GridData();
-        if (valueControl.getLayoutData() != null) {
-			data = (GridData) valueControl.getLayoutData();
-		}
-
-        data.horizontalSpan = numColumns - getNumberOfControls() + 1;
-        valueControl.setLayoutData(data);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void applyFont() {
-        if (chosenFont != null && previewer != null) {
-			previewer.setFont(chosenFont);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        getLabelControl(parent);
-
-        valueControl = getValueControl(parent);
-
-        GridData gd = new GridData(GridData.FILL_HORIZONTAL
-                | GridData.GRAB_HORIZONTAL);
-        gd.horizontalSpan = numColumns - getNumberOfControls() + 1;
-        valueControl.setLayoutData(gd);
-        if (previewText != null) {
-            previewer = new DefaultPreviewer(previewText, parent);
-            gd = new GridData(GridData.FILL_HORIZONTAL);
-            gd.heightHint = previewer.getPreferredExtent();
-            gd.widthHint = previewer.getPreferredExtent();
-            previewer.getControl().setLayoutData(gd);
-        }
-
-        changeFontButton = getChangeControl(parent);
-        gd = new GridData();
-        int widthHint = convertHorizontalDLUsToPixels(changeFontButton,
-                IDialogConstants.BUTTON_WIDTH);
-        gd.widthHint = Math.max(widthHint, changeFontButton.computeSize(
-                SWT.DEFAULT, SWT.DEFAULT, true).x);
-        changeFontButton.setLayoutData(gd);
-
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoad() {
-        if (changeFontButton == null) {
-			return;
-		}
-        updateFont(PreferenceConverter.getFontDataArray(getPreferenceStore(),
-                getPreferenceName()));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoadDefault() {
-        if (changeFontButton == null) {
-			return;
-		}
-        updateFont(PreferenceConverter.getDefaultFontDataArray(
-                getPreferenceStore(), getPreferenceName()));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doStore() {
-        if (chosenFont != null) {
-			PreferenceConverter.setValue(getPreferenceStore(),
-                    getPreferenceName(), chosenFont);
-		}
-    }
-
-    /**
-     * Returns the change button for this field editor.
-     *
-     * @param parent The Composite to create the button in if required.
-     * @return the change button
-     */
-    protected Button getChangeControl(Composite parent) {
-        if (changeFontButton == null) {
-            changeFontButton = new Button(parent, SWT.PUSH);
-            if (changeButtonText != null) {
-				changeFontButton.setText(changeButtonText);
-			}
-            changeFontButton.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent event) {
-                    FontDialog fontDialog = new FontDialog(changeFontButton
-                            .getShell());
-                    if (chosenFont != null) {
-						fontDialog.setFontList(chosenFont);
-					}
-                    FontData font = fontDialog.open();
-                    if (font != null) {
-                        FontData[] oldFont = chosenFont;
-                        if (oldFont == null) {
-							oldFont = JFaceResources.getDefaultFont()
-                                    .getFontData();
-						}
-                        setPresentsDefaultValue(false);
-                        FontData[] newData = new FontData[1];
-                        newData[0] = font;
-                        updateFont(newData);
-                        fireValueChanged(VALUE, oldFont[0], font);
-                    }
-
-                }
-            });
-            changeFontButton.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    changeFontButton = null;
-                }
-            });
-            changeFontButton.setFont(parent.getFont());
-            setButtonLayoutData(changeFontButton);
-        } else {
-            checkParent(changeFontButton, parent);
-        }
-        return changeFontButton;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public int getNumberOfControls() {
-        if (previewer == null) {
-			return 3;
-		}
-        
-        return 4;
-    }
-
-    /**
-     * Returns the preferred preview height. 
-     *
-     * @return the height, or <code>-1</code> if no previewer
-     *  is installed
-     */
-    public int getPreferredPreviewHeight() {
-        if (previewer == null) {
-			return -1;
-		}
-        return previewer.getPreferredExtent();
-    }
-
-    /**
-     * Returns the preview control for this field editor.
-     *
-     * @return the preview control
-     */
-    public Control getPreviewControl() {
-        if (previewer == null) {
-			return null;
-		}
-
-        return previewer.getControl();
-    }
-
-    /**
-     * Returns the value control for this field editor. The value control
-     * displays the currently selected font name.
-     * @param parent The Composite to create the viewer in if required
-     * @return the value control
-     */
-    protected Label getValueControl(Composite parent) {
-        if (valueControl == null) {
-            valueControl = new Label(parent, SWT.LEFT);
-            valueControl.setFont(parent.getFont());
-            valueControl.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    valueControl = null;
-                }
-            });
-        } else {
-            checkParent(valueControl, parent);
-        }
-        return valueControl;
-    }
-
-    /**
-     * Sets the text of the change button.
-     *
-     * @param text the new text
-     */
-    public void setChangeButtonText(String text) {
-        Assert.isNotNull(text);
-        changeButtonText = text;
-        if (changeFontButton != null) {
-			changeFontButton.setText(text);
-		}
-    }
-
-    /**
-     * Updates the change font button and the previewer to reflect the
-     * newly selected font.
-     * @param font The FontData[] to update with.
-     */
-    private void updateFont(FontData font[]) {
-        FontData[] bestFont = JFaceResources.getFontRegistry().filterData(
-                font, valueControl.getDisplay());
-
-        //if we have nothing valid do as best we can
-        if (bestFont == null) {
-			bestFont = getDefaultFontData();
-		}
-
-        //Now cache this value in the receiver
-        this.chosenFont = bestFont;
-
-        if (valueControl != null) {
-            valueControl.setText(StringConverter.asString(chosenFont[0]));
-        }
-        if (previewer != null) {
-            previewer.setFont(bestFont);
-        }
-    }
-
-    /**
-     * Store the default preference for the field
-     * being edited
-     */
-    protected void setToDefault() {
-        FontData[] defaultFontData = PreferenceConverter
-                .getDefaultFontDataArray(getPreferenceStore(),
-                        getPreferenceName());
-        PreferenceConverter.setValue(getPreferenceStore(), getPreferenceName(),
-                defaultFontData);
-    }
-
-    /**
-     * Get the system default font data.
-     * @return FontData[]
-     */
-    private FontData[] getDefaultFontData() {
-        return valueControl.getDisplay().getSystemFont().getFontData();
-    }
-
-    /*
-     * @see FieldEditor.setEnabled(boolean,Composite).
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        super.setEnabled(enabled, parent);
-        getChangeControl(parent).setEnabled(enabled);
-        getValueControl(parent).setEnabled(enabled);
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPersistentPreferenceStore.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPersistentPreferenceStore.java
deleted file mode 100644
index e17c0dd..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPersistentPreferenceStore.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.io.IOException;
-
-/**
- * IPersistentPreferenceStore is a preference store that can 
- * be saved.
- */
-public interface IPersistentPreferenceStore extends IPreferenceStore {
-
-    /**
-     * Saves the non-default-valued preferences known to this preference
-     * store to the file from which they were originally loaded.
-     *
-     * @exception java.io.IOException if there is a problem saving this store
-     */
-    public void save() throws IOException;
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceNode.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceNode.java
deleted file mode 100644
index b399cc6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceNode.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Interface to a node in a preference dialog. 
- * A preference node maintains a label and image used to display the
- * node in a preference dialog (usually in the form of a tree), 
- * as well as the preference page this node stands for.
- *
- * The node may use lazy creation for its page
- *
- * Note that all preference nodes must be dispose their resources.
- * The node must dispose the page managed by this node, and any SWT resources
- * allocated by this node (Images, Fonts, etc).
- * However the node itself may be reused.
- */
-public interface IPreferenceNode {
-    /**
-     * Adds the given preference node as a subnode of this
-     * preference node.
-     *
-     * @param node the node to add
-     */
-    public void add(IPreferenceNode node);
-
-    /**
-     * Creates the preference page for this node.
-     */
-    public void createPage();
-
-    /**
-     * Release the page managed by this node, and any SWT resources
-     * held onto by this node (Images, Fonts, etc).  
-     *
-     * Note that nodes are reused so this is not a call to dispose the
-     * node itself.
-     */
-    public void disposeResources();
-
-    /**
-     * Returns the subnode of this contribution node with the given node id.
-     *
-     * @param id the preference node id
-     * @return the subnode, or <code>null</code> if none
-     */
-    public IPreferenceNode findSubNode(String id);
-
-    /**
-     * Returns the id of this contribution node.
-     * This id identifies a contribution node relative to its parent.
-     *
-     * @return the node id
-     */
-    public String getId();
-
-    /**
-     * Returns the image used to present this node in a preference dialog.
-     *
-     * @return the image for this node, or <code>null</code>
-     *   if there is no image for this node
-     */
-    public Image getLabelImage();
-
-    /**
-     * Returns the text label used to present this node in a preference dialog.
-     *
-     * @return the text label for this node, or <code>null</code>
-     *   if there is no label for this node
-     */
-    public String getLabelText();
-
-    /**
-     * Returns the preference page for this node.
-     *
-     * @return the preference page
-     */
-    public IPreferencePage getPage();
-
-    /**
-     * Returns an iterator over the subnodes (immediate children)
-     * of this contribution node.
-     *
-     * @return an IPreferenceNode array containing the child nodes
-     */
-    public IPreferenceNode[] getSubNodes();
-
-    /**
-     * Removes the subnode of this preference node with the given node id.
-     *
-     * @param id the subnode id
-     * @return the removed subnode, or <code>null</code> if none
-     */
-    public IPreferenceNode remove(String id);
-
-    /**
-     * Removes the given preference node from the list of subnodes
-     * (immediate children) of this node.
-     *
-     * @param node the node to remove
-     * @return <code>true</code> if the node was removed,
-     *  and <code>false</code> otherwise
-     */
-    public boolean remove(IPreferenceNode node);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePage.java
deleted file mode 100644
index dd42905..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePage.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.dialogs.IDialogPage;
-import org.eclipse.swt.graphics.Point;
-
-/**
- * An interface for a preference page. This interface
- * is used primarily by the page's container 
- */
-public interface IPreferencePage extends IDialogPage {
-
-    /**
-     * Computes a size for this page's UI component. 
-     *
-     * @return the size of the preference page encoded as
-     *   <code>new Point(width,height)</code>, or 
-     *   <code>(0,0)</code> if the page doesn't currently have any UI component
-     */
-    public Point computeSize();
-
-    /**
-     * Returns whether this dialog page is in a valid state.
-     * 
-     * @return <code>true</code> if the page is in a valid state,
-     *   and <code>false</code> if invalid
-     */
-    public boolean isValid();
-
-    /**
-     * Checks whether it is alright to leave this page.
-     * 
-     * @return <code>false</code> to abort page flipping and the
-     *  have the current page remain visible, and <code>true</code>
-     *  to allow the page flip
-     */
-    public boolean okToLeave();
-
-    /**
-     * Notifies that the container of this preference page has been canceled.
-     * 
-     * @return <code>false</code> to abort the container's cancel 
-     *  procedure and <code>true</code> to allow the cancel to happen
-     */
-    public boolean performCancel();
-
-    /**
-     * Notifies that the OK button of this page's container has been pressed.
-     * 
-     * @return <code>false</code> to abort the container's OK
-     *  processing and <code>true</code> to allow the OK to happen
-     */
-    public boolean performOk();
-
-    /**
-     * Sets or clears the container of this page.
-     *
-     * @param preferencePageContainer the preference page container, or <code>null</code> 
-     */
-    public void setContainer(IPreferencePageContainer preferencePageContainer);
-
-    /**
-     * Sets the size of this page's UI component.
-     *
-     * @param size the size of the preference page encoded as
-     *   <code>new Point(width,height)</code>
-     */
-    public void setSize(Point size);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePageContainer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePageContainer.java
deleted file mode 100644
index 770e4f7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferencePageContainer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-/**
- * An interface used by a preference page to talk to
- * its dialog.
- */
-public interface IPreferencePageContainer {
-    /**
-     * Returns the preference store.
-     *
-     * @return the preference store, or <code>null</code> if none
-     */
-    public IPreferenceStore getPreferenceStore();
-
-    /**
-     * Adjusts the enable state of the OK 
-     * button to reflect the state of the currently active 
-     * page in this container.
-     * <p>
-     * This method is called by the container itself
-     * when its preference page changes and may be called
-     * by the page at other times to force a button state
-     * update.
-     * </p>
-     */
-    public void updateButtons();
-
-    /**
-     * Updates the message (or error message) shown in the message line to 
-     * reflect the state of the currently active page in this container.
-     * <p>
-     * This method is called by the container itself
-     * when its preference page changes and may be called
-     * by the page at other times to force a message 
-     * update.
-     * </p>
-     */
-    public void updateMessage();
-
-    /**
-     * Updates the title to reflect the state of the 
-     * currently active page in this container.
-     * <p>
-     * This method is called by the container itself
-     * when its page changes and may be called
-     * by the page at other times to force a title  
-     * update.
-     * </p>
-     */
-    public void updateTitle();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceStore.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceStore.java
deleted file mode 100644
index b15af78..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IPreferenceStore.java
+++ /dev/null
@@ -1,583 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-
-/**
- * The <code>IPreferenceStore</code> interface represents a table mapping
- * named preferences to values. If there is no value for a given name, 
- * then that preferences's default value is returned; and if there is no
- * default value for that preference, then a default-default value is returned.
- * The default-default values for the primitive types are as follows:
- * <ul>
- * 	<li><code>boolean</code> = <code>false</code></li>
- * 	<li><code>double</code> = <code>0.0</code></li>
- * 	<li><code>float</code> = <code>0.0f</code></li>
- * 	<li><code>int</code> = <code>0</code></li>
- *  <li><code>long</code> = <code>0</code></li>
- * 	<li><code>String</code> = <code>""</code> (the empty string)</li>
- * </ul>
- * <p>
- * Thus a preference store maintains two values for each of a set of
- * names: a current value and a default value.
- * The typical usage is to establish the defaults for all known preferences
- * and then restore previously stored values for preferences whose values 
- * were different from their defaults. After the current values of
- * the preferences have been modified, it is a simple matter to write
- * out only those preferences whose values are different from their defaults.
- * This two-tiered approach to saving and restoring preference setting
- * minimized the number of preferences that need to be persisted; indeed,
- * the normal starting state does not require storing any preferences
- * at all.
- * </p>
- * <p>
- * A property change event is reported whenever a preferences current
- * value actually changes (whether through <code>setValue</code>,
- * <code>setToDefault</code>, or other unspecified means). Note, however,
- * that manipulating default values (with <code>setDefault</code>)
- * does not cause such events to be reported.
- * </p>
- * <p>
- * Clients who need a preference store may implement this interface or 
- * instantiate the standard implementation <code>PreferenceStore</code>.
- * </p>
- *
- * @see PreferenceStore
- */
-public interface IPreferenceStore {
-
-    /**
-     * The default-default value for boolean preferences (<code>false</code>).
-     */
-    public static final boolean BOOLEAN_DEFAULT_DEFAULT = false;
-
-    /**
-     * The default-default value for double preferences (<code>0.0</code>).
-     */
-    public static final double DOUBLE_DEFAULT_DEFAULT = 0.0;
-
-    /**
-     * The default-default value for float preferences (<code>0.0f</code>).
-     */
-    public static final float FLOAT_DEFAULT_DEFAULT = 0.0f;
-
-    /**
-     * The default-default value for int preferences (<code>0</code>).
-     */
-    public static final int INT_DEFAULT_DEFAULT = 0;
-
-    /**
-     * The default-default value for long preferences (<code>0L</code>).
-     */
-    public static final long LONG_DEFAULT_DEFAULT = 0L;
-
-    /**
-     * The default-default value for String preferences (<code>""</code>).
-     */
-    public static final String STRING_DEFAULT_DEFAULT = ""; //$NON-NLS-1$
-
-    /**
-     * The string representation used for <code>true</code> (<code>"true"</code>).
-     */
-    public static final String TRUE = "true"; //$NON-NLS-1$
-
-    /**
-     * The string representation used for <code>false</code> (<code>"false"</code>).
-     */
-    public static final String FALSE = "false"; //$NON-NLS-1$
-
-    /**
-     * <p>
-     * Adds a property change listener to this preference store.
-     * </p>
-     * <p>
-     * <b>Note</b> The types of the oldValue and newValue of the
-     * generated PropertyChangeEvent are determined by whether
-     * or not the typed API in IPreferenceStore was called.
-     * If values are changed via setValue(name,type) the 
-     * values in the PropertyChangedEvent will be of that type.
-     * If they are set using a non typed API (i.e. #setToDefault
-     * or using the OSGI Preferences) the values will be unconverted
-     * Strings.
-     * </p>
-     * <p>
-     * A listener will be called in the same Thread
-     * that it is invoked in. Any Thread dependant listeners (such as 
-     * those who update an SWT widget) will need to update in the
-     * correct Thread. In the case of an SWT update you can update
-     * using Display#syncExec(Runnable) or Display#asyncExec(Runnable).
-     * </p>
-     * <p>  
-     * Likewise any application that updates an IPreferenceStore 
-     * from a Thread other than the UI Thread should be aware of
-     * any listeners that require an update in the UI Thread. 
-     * </p>
-     *
-     * @param listener a property change listener
-     * @see org.eclipse.jface.util.PropertyChangeEvent
-     * @see #setToDefault(String)
-     * @see #setValue(String, boolean)
-     * @see #setValue(String, double)
-     * @see #setValue(String, float)
-     * @see #setValue(String, int)
-     * @see #setValue(String, long)
-     * @see #setValue(String, String)
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Returns whether the named preference is known to this preference
-     * store.
-     *
-     * @param name the name of the preference
-     * @return <code>true</code> if either a current value or a default
-     *  value is known for the named preference, and <code>false</code> otherwise
-     */
-    public boolean contains(String name);
-
-    /**
-     * Fires a property change event corresponding to a change to the
-     * current value of the preference with the given name.
-     * <p>
-     * This method is provided on this interface to simplify the implementation 
-     * of decorators. There is normally no need to call this method since
-     * <code>setValue</code> and <code>setToDefault</code> report such
-     * events in due course. Implementations should funnel all preference
-     * changes through this method.
-     * </p>
-     *
-     * @param name the name of the preference, to be used as the property
-     *  in the event object
-     * @param oldValue the old value
-     * @param newValue the new value
-     */
-    public void firePropertyChangeEvent(String name, Object oldValue,
-            Object newValue);
-
-    /**
-     * Returns the current value of the boolean-valued preference with the
-     * given name.
-     * Returns the default-default value (<code>false</code>) if there
-     * is no preference with the given name, or if the current value 
-     * cannot be treated as a boolean.
-     *
-     * @param name the name of the preference
-     * @return the boolean-valued preference
-     */
-    public boolean getBoolean(String name);
-
-    /**
-     * Returns the default value for the boolean-valued preference
-     * with the given name.
-     * Returns the default-default value (<code>false</code>) if there
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a boolean.
-     *
-     * @param name the name of the preference
-     * @return the default value of the named preference
-     */
-    public boolean getDefaultBoolean(String name);
-
-    /**
-     * Returns the default value for the double-valued preference
-     * with the given name.
-     * Returns the default-default value (<code>0.0</code>) if there
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a double.
-     *
-     * @param name the name of the preference
-     * @return the default value of the named preference
-     */
-    public double getDefaultDouble(String name);
-
-    /**
-     * Returns the default value for the float-valued preference
-     * with the given name.
-     * Returns the default-default value (<code>0.0f</code>) if there
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a float.
-     *
-     * @param name the name of the preference
-     * @return the default value of the named preference
-     */
-    public float getDefaultFloat(String name);
-
-    /**
-     * Returns the default value for the integer-valued preference
-     * with the given name.
-     * Returns the default-default value (<code>0</code>) if there
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as an integer.
-     *
-     * @param name the name of the preference
-     * @return the default value of the named preference
-     */
-    public int getDefaultInt(String name);
-
-    /**
-     * Returns the default value for the long-valued preference
-     * with the given name.
-     * Returns the default-default value (<code>0L</code>) if there
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a long.
-     *
-     * @param name the name of the preference
-     * @return the default value of the named preference
-     */
-    public long getDefaultLong(String name);
-
-    /**
-     * Returns the default value for the string-valued preference
-     * with the given name.
-     * Returns the default-default value (the empty string <code>""</code>) 
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a string.
-     *
-     * @param name the name of the preference
-     * @return the default value of the named preference
-     */
-    public String getDefaultString(String name);
-
-    /**
-     * Returns the current value of the double-valued preference with the
-     * given name.
-     * Returns the default-default value (<code>0.0</code>) if there
-     * is no preference with the given name, or if the current value 
-     * cannot be treated as a double.
-     *
-     * @param name the name of the preference
-     * @return the double-valued preference
-     */
-    public double getDouble(String name);
-
-    /**
-     * Returns the current value of the float-valued preference with the
-     * given name.
-     * Returns the default-default value (<code>0.0f</code>) if there
-     * is no preference with the given name, or if the current value 
-     * cannot be treated as a float.
-     *
-     * @param name the name of the preference
-     * @return the float-valued preference
-     */
-    public float getFloat(String name);
-
-    /**
-     * Returns the current value of the integer-valued preference with the
-     * given name.
-     * Returns the default-default value (<code>0</code>) if there
-     * is no preference with the given name, or if the current value 
-     * cannot be treated as an integter.
-     *
-     * @param name the name of the preference
-     * @return the int-valued preference
-     */
-    public int getInt(String name);
-
-    /**
-     * Returns the current value of the long-valued preference with the
-     * given name.
-     * Returns the default-default value (<code>0L</code>) if there
-     * is no preference with the given name, or if the current value 
-     * cannot be treated as a long.
-     *
-     * @param name the name of the preference
-     * @return the long-valued preference
-     */
-    public long getLong(String name);
-
-    /**
-     * Returns the current value of the string-valued preference with the
-     * given name.
-     * Returns the default-default value (the empty string <code>""</code>)
-     * if there is no preference with the given name, or if the current value 
-     * cannot be treated as a string.
-     *
-     * @param name the name of the preference
-     * @return the string-valued preference
-     */
-    public String getString(String name);
-
-    /**
-     * Returns whether the current value of the preference with the given name
-     * has the default value.
-     *
-     * @param name the name of the preference
-     * @return <code>true</code> if the preference has a known default value
-     * and its current value is the same, and <code>false</code> otherwise
-     * (including the case where the preference is unknown to this store)
-     */
-    public boolean isDefault(String name);
-
-    /**
-     * Returns whether the current values in this property store
-     * require saving.
-     *
-     * @return <code>true</code> if at least one of values of 
-     *  the preferences known to this store has changed and 
-     *  requires saving, and <code>false</code> otherwise.
-     */
-    public boolean needsSaving();
-
-    /**
-     * Sets the current value of the preference with the given name to
-     * the given string value without sending a property change.
-     * <p>
-     * This method does not fire a property change event and 
-     * should only be used for setting internal preferences 
-     * that are not meant to be processed by listeners.
-     * Normal clients should instead call #setValue.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void putValue(String name, String value);
-
-    /**
-     * Removes the given listener from this preference store.
-     * Has no affect if the listener is not registered.
-     *
-     * @param listener a property change listener
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Sets the default value for the double-valued preference with the
-     * given name. 
-     * <p>
-     * Note that the current value of the preference is affected if
-     * the preference's current value was its old default value, in which
-     * case it changes to the new default value. If the preference's current
-     * is different from its old default value, its current value is
-     * unaffected. No property change events are reported by changing default
-     * values.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new default value for the preference
-     */
-    public void setDefault(String name, double value);
-
-    /**
-     * Sets the default value for the float-valued preference with the
-     * given name. 
-     * <p>
-     * Note that the current value of the preference is affected if
-     * the preference's current value was its old default value, in which
-     * case it changes to the new default value. If the preference's current
-     * is different from its old default value, its current value is
-     * unaffected. No property change events are reported by changing default
-     * values.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new default value for the preference
-     */
-    public void setDefault(String name, float value);
-
-    /**
-     * Sets the default value for the integer-valued preference with the
-     * given name. 
-     * <p>
-     * Note that the current value of the preference is affected if
-     * the preference's current value was its old default value, in which
-     * case it changes to the new default value. If the preference's current
-     * is different from its old default value, its current value is
-     * unaffected. No property change events are reported by changing default
-     * values.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new default value for the preference
-     */
-    public void setDefault(String name, int value);
-
-    /**
-     * Sets the default value for the long-valued preference with the
-     * given name. 
-     * <p>
-     * Note that the current value of the preference is affected if
-     * the preference's current value was its old default value, in which
-     * case it changes to the new default value. If the preference's current
-     * is different from its old default value, its current value is
-     * unaffected. No property change events are reported by changing default
-     * values.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new default value for the preference
-     */
-    public void setDefault(String name, long value);
-
-    /**
-     * Sets the default value for the string-valued preference with the
-     * given name. 
-     * <p>
-     * Note that the current value of the preference is affected if
-     * the preference's current value was its old default value, in which
-     * case it changes to the new default value. If the preference's current
-     * is different from its old default value, its current value is
-     * unaffected. No property change events are reported by changing default
-     * values.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param defaultObject the new default value for the preference
-     */
-    public void setDefault(String name, String defaultObject);
-
-    /**
-     * Sets the default value for the boolean-valued preference with the
-     * given name. 
-     * <p>
-     * Note that the current value of the preference is affected if
-     * the preference's current value was its old default value, in which
-     * case it changes to the new default value. If the preference's current
-     * is different from its old default value, its current value is
-     * unaffected. No property change events are reported by changing default
-     * values.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new default value for the preference
-     */
-    public void setDefault(String name, boolean value);
-
-    /**
-     * Sets the current value of the preference with the given name back
-     * to its default value.
-     * <p>
-     * Note that the preferred way of re-initializing a preference to the
-     * appropriate default value is to call <code>setToDefault</code>.
-     * This is implemented by removing the named value from the store, 
-     * thereby exposing the default value.
-     * </p>
-     *
-     * @param name the name of the preference
-     */
-    public void setToDefault(String name);
-
-    /**
-     * Sets the current value of the double-valued preference with the
-     * given name.
-     * <p>
-     * A property change event is reported if the current value of the 
-     * preference actually changes from its previous value. In the event
-     * object, the property name is the name of the preference, and the
-     * old and new values are wrapped as objects.
-     * </p>
-     * <p>
-     * Note that the preferred way of re-initializing a preference to its
-     * default value is to call <code>setToDefault</code>.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void setValue(String name, double value);
-
-    /**
-     * Sets the current value of the float-valued preference with the
-     * given name.
-     * <p>
-     * A property change event is reported if the current value of the 
-     * preference actually changes from its previous value. In the event
-     * object, the property name is the name of the preference, and the
-     * old and new values are wrapped as objects.
-     * </p>
-     * <p>
-     * Note that the preferred way of re-initializing a preference to its
-     * default value is to call <code>setToDefault</code>.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void setValue(String name, float value);
-
-    /**
-     * Sets the current value of the integer-valued preference with the
-     * given name.
-     * <p>
-     * A property change event is reported if the current value of the 
-     * preference actually changes from its previous value. In the event
-     * object, the property name is the name of the preference, and the
-     * old and new values are wrapped as objects.
-     * </p>
-     * <p>
-     * Note that the preferred way of re-initializing a preference to its
-     * default value is to call <code>setToDefault</code>.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void setValue(String name, int value);
-
-    /**
-     * Sets the current value of the long-valued preference with the
-     * given name.
-     * <p>
-     * A property change event is reported if the current value of the 
-     * preference actually changes from its previous value. In the event
-     * object, the property name is the name of the preference, and the
-     * old and new values are wrapped as objects.
-     * </p>
-     * <p>
-     * Note that the preferred way of re-initializing a preference to its
-     * default value is to call <code>setToDefault</code>.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void setValue(String name, long value);
-
-    /**
-     * Sets the current value of the string-valued preference with the
-     * given name.
-     * <p>
-     * A property change event is reported if the current value of the 
-     * preference actually changes from its previous value. In the event
-     * object, the property name is the name of the preference, and the
-     * old and new values are wrapped as objects.
-     * </p>
-     * <p>
-     * Note that the preferred way of re-initializing a preference to its
-     * default value is to call <code>setToDefault</code>.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void setValue(String name, String value);
-
-    /**
-     * Sets the current value of the boolean-valued preference with the
-     * given name.
-     * <p>
-     * A property change event is reported if the current value of the 
-     * preference actually changes from its previous value. In the event
-     * object, the property name is the name of the preference, and the
-     * old and new values are wrapped as objects.
-     * </p>
-     * <p>
-     * Note that the preferred way of re-initializing a preference to its
-     * default value is to call <code>setToDefault</code>.
-     * </p>
-     *
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public void setValue(String name, boolean value);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IntegerFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IntegerFieldEditor.java
deleted file mode 100644
index d9b45fb..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/IntegerFieldEditor.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     <sgandon@nds.com> - Fix for bug 109389 - IntegerFieldEditor
- *     does not fire property change all the time
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * A field editor for an integer type preference.
- */
-public class IntegerFieldEditor extends StringFieldEditor {
-    private int minValidValue = 0;
-
-    private int maxValidValue = Integer.MAX_VALUE;
-
-    private static final int DEFAULT_TEXT_LIMIT = 10;
-
-    /**
-     * Creates a new integer field editor 
-     */
-    protected IntegerFieldEditor() {
-    }
-
-    /**
-     * Creates an integer field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    public IntegerFieldEditor(String name, String labelText, Composite parent) {
-        this(name, labelText, parent, DEFAULT_TEXT_LIMIT);
-    }
-
-    /**
-     * Creates an integer field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     * @param textLimit the maximum number of characters in the text.
-     */
-    public IntegerFieldEditor(String name, String labelText, Composite parent,
-            int textLimit) {
-        init(name, labelText);
-        setTextLimit(textLimit);
-        setEmptyStringAllowed(false);
-        setErrorMessage(JFaceResources
-                .getString("IntegerFieldEditor.errorMessage"));//$NON-NLS-1$
-        createControl(parent);
-    }
-
-    /**
-     * Sets the range of valid values for this field.
-     * 
-     * @param min the minimum allowed value (inclusive)
-     * @param max the maximum allowed value (inclusive)
-     */
-    public void setValidRange(int min, int max) {
-        minValidValue = min;
-        maxValidValue = max;
-        setErrorMessage(JFaceResources.format(
-        		"IntegerFieldEditor.errorMessageRange", //$NON-NLS-1$
-        		new Object[] { new Integer(min), new Integer(max) }));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StringFieldEditor.
-     * Checks whether the entered String is a valid integer or not.
-     */
-    protected boolean checkState() {
-
-        Text text = getTextControl();
-
-        if (text == null) {
-			return false;
-		}
-
-        String numberString = text.getText();
-        try {
-            int number = Integer.valueOf(numberString).intValue();
-            if (number >= minValidValue && number <= maxValidValue) {
-				clearErrorMessage();
-				return true;
-			}
-            
-			showErrorMessage();
-			return false;
-			
-        } catch (NumberFormatException e1) {
-            showErrorMessage();
-        }
-
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoad() {
-        Text text = getTextControl();
-        if (text != null) {
-            int value = getPreferenceStore().getInt(getPreferenceName());
-            text.setText("" + value);//$NON-NLS-1$
-            oldValue = "" + value; //$NON-NLS-1$
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoadDefault() {
-        Text text = getTextControl();
-        if (text != null) {
-            int value = getPreferenceStore().getDefaultInt(getPreferenceName());
-            text.setText("" + value);//$NON-NLS-1$
-        }
-        valueChanged();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doStore() {
-        Text text = getTextControl();
-        if (text != null) {
-            Integer i = new Integer(text.getText());
-            getPreferenceStore().setValue(getPreferenceName(), i.intValue());
-        }
-    }
-
-    /**
-     * Returns this field editor's current value as an integer.
-     *
-     * @return the value
-     * @exception NumberFormatException if the <code>String</code> does not
-     *   contain a parsable integer
-     */
-    public int getIntValue() throws NumberFormatException {
-        return new Integer(getStringValue()).intValue();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/JFacePreferences.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/JFacePreferences.java
deleted file mode 100644
index fd41cc5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/JFacePreferences.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-/**
- * 
- * JFacePreferences is a class used to administer the preferences used by JFace
- * objects.
- */
-public final class JFacePreferences {
-
-	/**
-	 * Identifier for the Error Color
-	 */
-	public static final String ERROR_COLOR = "ERROR_COLOR"; //$NON-NLS-1$
-
-	/**
-	 * Identifier for the Hyperlink Color
-	 */
-	public static final String HYPERLINK_COLOR = "HYPERLINK_COLOR"; //$NON-NLS-1$
-
-	/**
-	 * Identifier for the Active Hyperlink Colour
-	 */
-	public static final String ACTIVE_HYPERLINK_COLOR = "ACTIVE_HYPERLINK_COLOR"; //$NON-NLS-1$
-
-	/**
-	 * Identifier for the color used to show extra informations in labels, as a
-	 * qualified name. For example in 'Foo.txt - myproject/bar', the qualifier
-	 * is '- myproject/bar'.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String QUALIFIER_COLOR = "QUALIFIER_COLOR"; //$NON-NLS-1$
-
-	/**
-	 * Identifier for the color used to show label decorations For example in
-	 * 'Foo.txt [1.16]', the decoration is '[1.16]'.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String DECORATIONS_COLOR = "DECORATIONS_COLOR"; //$NON-NLS-1$
-
-	/**
-	 * Identifier for the color used to counter informations For example in
-	 * 'Foo.txt (2 matches)', the counter information is '(2 matches)'.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String COUNTER_COLOR = "COUNTER_COLOR"; //$NON-NLS-1$
-
-	
-	/**
-	 * Identifier for the color used for the background of content assist
-	 * popup dialogs.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String CONTENT_ASSIST_BACKGROUND_COLOR = "CONTENT_ASSIST_BACKGROUND_COLOR"; //$NON-NLS-1$
-
-	/**
-	 * Identifier for the color used for the foreground of content assist
-	 * popup dialogs.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String CONTENT_ASSIST_FOREGROUND_COLOR = "CONTENT_ASSIST_FOREGROUND_COLOR"; //$NON-NLS-1$
-
-
-
-	private static IPreferenceStore preferenceStore;
-
-	/**
-	 * Prevent construction.
-	 */
-	private JFacePreferences() {
-	}
-
-	/**
-	 * Return the preference store for the receiver.
-	 * 
-	 * @return IPreferenceStore or null
-	 */
-	public static IPreferenceStore getPreferenceStore() {
-		return preferenceStore;
-	}
-
-	/**
-	 * Set the preference store for the receiver.
-	 * 
-	 * @param store
-	 *            IPreferenceStore
-	 */
-	public static void setPreferenceStore(IPreferenceStore store) {
-		preferenceStore = store;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ListEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ListEditor.java
deleted file mode 100644
index 6c0a9a6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ListEditor.java
+++ /dev/null
@@ -1,448 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-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.List;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * An abstract field editor that manages a list of input values. 
- * The editor displays a list containing the values, buttons for
- * adding and removing values, and Up and Down buttons to adjust
- * the order of elements in the list.
- * <p>
- * Subclasses must implement the <code>parseString</code>,
- * <code>createList</code>, and <code>getNewInputObject</code>
- * framework methods.
- * </p>
- */
-public abstract class ListEditor extends FieldEditor {
-
-    /**
-     * The list widget; <code>null</code> if none
-     * (before creation or after disposal).
-     */
-    private List list;
-
-    /**
-     * The button box containing the Add, Remove, Up, and Down buttons;
-     * <code>null</code> if none (before creation or after disposal).
-     */
-    private Composite buttonBox;
-
-    /**
-     * The Add button.
-     */
-    private Button addButton;
-
-    /**
-     * The Remove button.
-     */
-    private Button removeButton;
-
-    /**
-     * The Up button.
-     */
-    private Button upButton;
-
-    /**
-     * The Down button.
-     */
-    private Button downButton;
-
-    /**
-     * The selection listener.
-     */
-    private SelectionListener selectionListener;
-
-    /**
-     * Creates a new list field editor 
-     */
-    protected ListEditor() {
-    }
-
-    /**
-     * Creates a list field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    protected ListEditor(String name, String labelText, Composite parent) {
-        init(name, labelText);
-        createControl(parent);
-    }
-
-    /**
-     * Notifies that the Add button has been pressed.
-     */
-    private void addPressed() {
-        setPresentsDefaultValue(false);
-        String input = getNewInputObject();
-
-        if (input != null) {
-            int index = list.getSelectionIndex();
-            if (index >= 0) {
-				list.add(input, index + 1);
-			} else {
-				list.add(input, 0);
-			}
-            selectionChanged();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void adjustForNumColumns(int numColumns) {
-        Control control = getLabelControl();
-        ((GridData) control.getLayoutData()).horizontalSpan = numColumns;
-        ((GridData) list.getLayoutData()).horizontalSpan = numColumns - 1;
-    }
-
-    /**
-     * Creates the Add, Remove, Up, and Down button in the given button box.
-     *
-     * @param box the box for the buttons
-     */
-    private void createButtons(Composite box) {
-        addButton = createPushButton(box, "ListEditor.add");//$NON-NLS-1$
-        removeButton = createPushButton(box, "ListEditor.remove");//$NON-NLS-1$
-        upButton = createPushButton(box, "ListEditor.up");//$NON-NLS-1$
-        downButton = createPushButton(box, "ListEditor.down");//$NON-NLS-1$
-    }
-
-    /**
-     * Combines the given list of items into a single string.
-     * This method is the converse of <code>parseString</code>. 
-     * <p>
-     * Subclasses must implement this method.
-     * </p>
-     *
-     * @param items the list of items
-     * @return the combined string
-     * @see #parseString
-     */
-    protected abstract String createList(String[] items);
-
-    /**
-     * Helper method to create a push button.
-     * 
-     * @param parent the parent control
-     * @param key the resource name used to supply the button's label text
-     * @return Button
-     */
-    private Button createPushButton(Composite parent, String key) {
-        Button button = new Button(parent, SWT.PUSH);
-        button.setText(JFaceResources.getString(key));
-        button.setFont(parent.getFont());
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        int widthHint = convertHorizontalDLUsToPixels(button,
-                IDialogConstants.BUTTON_WIDTH);
-        data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT,
-                SWT.DEFAULT, true).x);
-        button.setLayoutData(data);
-        button.addSelectionListener(getSelectionListener());
-        return button;
-    }
-
-    /**
-     * Creates a selection listener.
-     */
-    public void createSelectionListener() {
-        selectionListener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent event) {
-                Widget widget = event.widget;
-                if (widget == addButton) {
-                    addPressed();
-                } else if (widget == removeButton) {
-                    removePressed();
-                } else if (widget == upButton) {
-                    upPressed();
-                } else if (widget == downButton) {
-                    downPressed();
-                } else if (widget == list) {
-                    selectionChanged();
-                }
-            }
-        };
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        Control control = getLabelControl(parent);
-        GridData gd = new GridData();
-        gd.horizontalSpan = numColumns;
-        control.setLayoutData(gd);
-
-        list = getListControl(parent);
-        gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.verticalAlignment = GridData.FILL;
-        gd.horizontalSpan = numColumns - 1;
-        gd.grabExcessHorizontalSpace = true;
-        list.setLayoutData(gd);
-
-        buttonBox = getButtonBoxControl(parent);
-        gd = new GridData();
-        gd.verticalAlignment = GridData.BEGINNING;
-        buttonBox.setLayoutData(gd);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoad() {
-        if (list != null) {
-            String s = getPreferenceStore().getString(getPreferenceName());
-            String[] array = parseString(s);
-            for (int i = 0; i < array.length; i++) {
-                list.add(array[i]);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoadDefault() {
-        if (list != null) {
-            list.removeAll();
-            String s = getPreferenceStore().getDefaultString(
-                    getPreferenceName());
-            String[] array = parseString(s);
-            for (int i = 0; i < array.length; i++) {
-                list.add(array[i]);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doStore() {
-        String s = createList(list.getItems());
-        if (s != null) {
-			getPreferenceStore().setValue(getPreferenceName(), s);
-		}
-    }
-
-    /**
-     * Notifies that the Down button has been pressed.
-     */
-    private void downPressed() {
-        swap(false);
-    }
-
-    /**
-     * Returns this field editor's button box containing the Add, Remove,
-     * Up, and Down button.
-     *
-     * @param parent the parent control
-     * @return the button box
-     */
-    public Composite getButtonBoxControl(Composite parent) {
-        if (buttonBox == null) {
-            buttonBox = new Composite(parent, SWT.NULL);
-            GridLayout layout = new GridLayout();
-            layout.marginWidth = 0;
-            buttonBox.setLayout(layout);
-            createButtons(buttonBox);
-            buttonBox.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    addButton = null;
-                    removeButton = null;
-                    upButton = null;
-                    downButton = null;
-                    buttonBox = null;
-                }
-            });
-
-        } else {
-            checkParent(buttonBox, parent);
-        }
-
-        selectionChanged();
-        return buttonBox;
-    }
-
-    /**
-     * Returns this field editor's list control.
-     *
-     * @param parent the parent control
-     * @return the list control
-     */
-    public List getListControl(Composite parent) {
-        if (list == null) {
-            list = new List(parent, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL
-                    | SWT.H_SCROLL);
-            list.setFont(parent.getFont());
-            list.addSelectionListener(getSelectionListener());
-            list.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    list = null;
-                }
-            });
-        } else {
-            checkParent(list, parent);
-        }
-        return list;
-    }
-
-    /**
-     * Creates and returns a new item for the list.
-     * <p>
-     * Subclasses must implement this method.
-     * </p>
-     *
-     * @return a new item
-     */
-    protected abstract String getNewInputObject();
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public int getNumberOfControls() {
-        return 2;
-    }
-
-    /**
-     * Returns this field editor's selection listener.
-     * The listener is created if nessessary.
-     *
-     * @return the selection listener
-     */
-    private SelectionListener getSelectionListener() {
-        if (selectionListener == null) {
-			createSelectionListener();
-		}
-        return selectionListener;
-    }
-
-    /**
-     * Returns this field editor's shell.
-     * <p>
-     * This method is internal to the framework; subclassers should not call
-     * this method.
-     * </p>
-     *
-     * @return the shell
-     */
-    protected Shell getShell() {
-        if (addButton == null) {
-			return null;
-		}
-        return addButton.getShell();
-    }
-
-    /**
-     * Splits the given string into a list of strings.
-     * This method is the converse of <code>createList</code>. 
-     * <p>
-     * Subclasses must implement this method.
-     * </p>
-     *
-     * @param stringList the string
-     * @return an array of <code>String</code>
-     * @see #createList
-     */
-    protected abstract String[] parseString(String stringList);
-
-    /**
-     * Notifies that the Remove button has been pressed.
-     */
-    private void removePressed() {
-        setPresentsDefaultValue(false);
-        int index = list.getSelectionIndex();
-        if (index >= 0) {
-            list.remove(index);
-            selectionChanged();
-        }
-    }
-
-    /**
-     * Notifies that the list selection has changed.
-     */
-    private void selectionChanged() {
-
-        int index = list.getSelectionIndex();
-        int size = list.getItemCount();
-
-        removeButton.setEnabled(index >= 0);
-        upButton.setEnabled(size > 1 && index > 0);
-        downButton.setEnabled(size > 1 && index >= 0 && index < size - 1);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public void setFocus() {
-        if (list != null) {
-            list.setFocus();
-        }
-    }
-
-    /**
-     * Moves the currently selected item up or down.
-     *
-     * @param up <code>true</code> if the item should move up,
-     *  and <code>false</code> if it should move down
-     */
-    private void swap(boolean up) {
-        setPresentsDefaultValue(false);
-        int index = list.getSelectionIndex();
-        int target = up ? index - 1 : index + 1;
-
-        if (index >= 0) {
-            String[] selection = list.getSelection();
-            Assert.isTrue(selection.length == 1);
-            list.remove(index);
-            list.add(selection[0], target);
-            list.setSelection(target);
-        }
-        selectionChanged();
-    }
-
-    /**
-     * Notifies that the Up button has been pressed.
-     */
-    private void upPressed() {
-        swap(true);
-    }
-
-    /*
-     * @see FieldEditor.setEnabled(boolean,Composite).
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        super.setEnabled(enabled, parent);
-        getListControl(parent).setEnabled(enabled);
-        addButton.setEnabled(enabled);
-        removeButton.setEnabled(enabled);
-        upButton.setEnabled(enabled);
-        downButton.setEnabled(enabled);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PathEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PathEditor.java
deleted file mode 100644
index 606a97e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PathEditor.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-
-/**
- * A field editor to edit directory paths.
- */
-public class PathEditor extends ListEditor {
-
-    /**
-     * The last path, or <code>null</code> if none.
-     */
-    private String lastPath;
-
-    /**
-     * The special label text for directory chooser, 
-     * or <code>null</code> if none.
-     */
-    private String dirChooserLabelText;
-
-    /**
-     * Creates a new path field editor 
-     */
-    protected PathEditor() {
-    }
-
-    /**
-     * Creates a path field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param dirChooserLabelText the label text displayed for the directory chooser
-     * @param parent the parent of the field editor's control
-     */
-    public PathEditor(String name, String labelText,
-            String dirChooserLabelText, Composite parent) {
-        init(name, labelText);
-        this.dirChooserLabelText = dirChooserLabelText;
-        createControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ListEditor.
-     * Creates a single string from the given array by separating each
-     * string with the appropriate OS-specific path separator.
-     */
-    protected String createList(String[] items) {
-        StringBuffer path = new StringBuffer("");//$NON-NLS-1$
-
-        for (int i = 0; i < items.length; i++) {
-            path.append(items[i]);
-            path.append(File.pathSeparator);
-        }
-        return path.toString();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ListEditor.
-     * Creates a new path element by means of a directory dialog.
-     */
-    protected String getNewInputObject() {
-
-        DirectoryDialog dialog = new DirectoryDialog(getShell());
-        if (dirChooserLabelText != null) {
-			dialog.setMessage(dirChooserLabelText);
-		}
-        if (lastPath != null) {
-            if (new File(lastPath).exists()) {
-				dialog.setFilterPath(lastPath);
-			}
-        }
-        String dir = dialog.open();
-        if (dir != null) {
-            dir = dir.trim();
-            if (dir.length() == 0) {
-				return null;
-			}
-            lastPath = dir;
-        }
-        return dir;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ListEditor.
-     */
-    protected String[] parseString(String stringList) {
-        StringTokenizer st = new StringTokenizer(stringList, File.pathSeparator
-                + "\n\r");//$NON-NLS-1$
-        ArrayList v = new ArrayList();
-        while (st.hasMoreElements()) {
-            v.add(st.nextElement());
-        }
-        return (String[]) v.toArray(new String[v.size()]);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceContentProvider.java
deleted file mode 100644
index 6e8ebe7..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceContentProvider.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * Provides a tree model for <code>PreferenceManager</code> content.
- * 
- * @since 3.0
- */
-public class PreferenceContentProvider implements ITreeContentProvider {
-
-    private PreferenceManager manager;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-        manager = null;
-    }
-
-    /**
-     * Find the parent of the provided node.  Will search recursivly through the
-     * preference tree.
-     * 
-     * @param parent the possible parent node.
-     * @param target the target child node.
-     * @return the parent node of the child node.
-     */
-    private IPreferenceNode findParent(IPreferenceNode parent,
-            IPreferenceNode target) {
-        if (parent.getId().equals(target.getId())) {
-			return null;
-		}
-
-        IPreferenceNode found = parent.findSubNode(target.getId());
-        if (found != null) {
-			return parent;
-		}
-
-        IPreferenceNode[] children = parent.getSubNodes();
-
-        for (int i = 0; i < children.length; i++) {
-            found = findParent(children[i], target);
-            if (found != null) {
-				return found;
-			}
-        }
-
-        return null;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-     */
-    public Object[] getChildren(Object parentElement) {//must be an instance of <code>IPreferenceNode</code>.
-        return ((IPreferenceNode) parentElement).getSubNodes();
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object inputElement) {// must be an instance of <code>PreferenceManager</code>.
-        return getChildren(((PreferenceManager) inputElement).getRoot());
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-     */
-    public Object getParent(Object element) {//must be an instance of <code>IPreferenceNode</code>.
-        IPreferenceNode targetNode = (IPreferenceNode) element;
-        IPreferenceNode root = manager.getRoot();
-        return findParent(root, targetNode);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-     */
-    public boolean hasChildren(Object element) {
-        return getChildren(element).length > 0;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        manager = (PreferenceManager) newInput;
-    }
-	/**
-	 * Set the manager for the preferences.
-	 * @param manager The manager to set.
-	 * 
-	 * @since 3.1
-	 */
-	protected void setManager(PreferenceManager manager) {
-		this.manager = manager;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceConverter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceConverter.java
deleted file mode 100644
index 5e7cfb8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceConverter.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.util.Arrays;
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * A utility class for dealing with preferences whose values are
- * common SWT objects (color, points, rectangles, and font data).
- * The static methods on this class handle the conversion between
- * the SWT objects and their string representations.
- * <p>
- * Usage:
- * <pre>
- * IPreferenceStore store = ...;
- * PreferenceConverter.setValue(store, "bg", new RGB(127,127,127));
- * ...
- * RBG bgColor = PreferenceConverter.getValue(store, "bg");
- * </pre>
- * </p>
- * <p>
- * This class contains static methods and fields only and cannot 
- * be instantiated.
- * </p>
- * Note: touching this class has the side effect of creating a display (static initializer).
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-public class PreferenceConverter {
-
-    /**
-     * The default-default value for point preferences
-     * (the origin, <code>(0,0)</code>).
-     */
-    public static final Point POINT_DEFAULT_DEFAULT = new Point(0, 0);
-
-    /**
-     * The default-default value for rectangle preferences
-     * (the empty rectangle <code>(0,0,0,0)</code>).
-     */
-    public static final Rectangle RECTANGLE_DEFAULT_DEFAULT = new Rectangle(0,
-            0, 0, 0);
-
-    /**
-     * The default-default value for color preferences 
-     * (black, <code>RGB(0,0,0)</code>).
-     */
-    public static final RGB COLOR_DEFAULT_DEFAULT = new RGB(0, 0, 0);
-
-    private static final String ENTRY_SEPARATOR = ";"; //$NON-NLS-1$
-
-    /**
-     * The default-default value for <code>FontData[]</code> preferences.
-     */
-    public static final FontData[] FONTDATA_ARRAY_DEFAULT_DEFAULT;
-
-    /**
-     * The default-default value for <code>FontData</code> preferences.
-     */
-    public static final FontData FONTDATA_DEFAULT_DEFAULT;
-    static {
-		Display display = Display.getCurrent();
-		if (display == null) {
-			display = Display.getDefault ();
-		}
-		
-        FONTDATA_ARRAY_DEFAULT_DEFAULT = display.getSystemFont().getFontData();
-        /**
-         * The default-default value for <code>FontData</code> preferences.
-         * This is left in for compatibility purposes. It is recommended that
-         * FONTDATA_ARRAY_DEFAULT_DEFAULT is actually used.
-         */
-
-        FONTDATA_DEFAULT_DEFAULT = FONTDATA_ARRAY_DEFAULT_DEFAULT[0];
-    }
-
-    /* (non-Javadoc)
-     * private constructor to prevent instantiation.
-     */
-    private PreferenceConverter() {
-        //no-op
-    }
-
-    /**
-     * Helper method to construct a color from the given string.
-     * @param value the indentifier for the color
-     * @return RGB
-     */
-    private static RGB basicGetColor(String value) {
-
-        if (IPreferenceStore.STRING_DEFAULT_DEFAULT.equals(value)) {
-			return COLOR_DEFAULT_DEFAULT;
-		}
-
-        RGB color = StringConverter.asRGB(value, null);
-        if (color == null) {
-			return COLOR_DEFAULT_DEFAULT;
-		}
-        return color;
-    }
-
-    /**
-     * Helper method to construct a <code>FontData</code> from the given string.
-     * String is in the form FontData;FontData; in order that
-     * multiple FontDatas can be defined.
-     * @param value the identifier for the font
-     * @return FontData[]
-     * 
-     * @since 3.0
-     */
-    public static FontData[] basicGetFontData(String value) {
-        if (IPreferenceStore.STRING_DEFAULT_DEFAULT.equals(value)) {
-			return FONTDATA_ARRAY_DEFAULT_DEFAULT;
-		}
-
-        //Read in all of them to get the value
-        StringTokenizer tokenizer = new StringTokenizer(value, ENTRY_SEPARATOR);
-        int numTokens = tokenizer.countTokens();
-        FontData[] fontData = new FontData[numTokens];
-
-        for (int i = 0; i < numTokens; i++) {
-            try {
-                fontData[i] = new FontData(tokenizer.nextToken());
-            } catch (SWTException error) {
-                return FONTDATA_ARRAY_DEFAULT_DEFAULT;
-            } catch (IllegalArgumentException error) {
-                return FONTDATA_ARRAY_DEFAULT_DEFAULT;
-            }
-        }
-        return fontData;
-    }
-
-    /**
-     * Reads the supplied string and returns its corresponding
-     * FontData. If it cannot be read then the default FontData
-     * will be returned.
-     * 
-     * @param fontDataValue the string value for the font data  
-     * @return the font data
-     */
-    public static FontData[] readFontData(String fontDataValue) {
-        return basicGetFontData(fontDataValue);
-    }
-
-    /**
-     * Helper method to construct a point from the given string.
-     * @param value
-     * @return Point
-     */
-    private static Point basicGetPoint(String value) {
-        Point dp = new Point(POINT_DEFAULT_DEFAULT.x, POINT_DEFAULT_DEFAULT.y);
-        if (IPreferenceStore.STRING_DEFAULT_DEFAULT.equals(value)) {
-			return dp;
-		}
-        return StringConverter.asPoint(value, dp);
-    }
-
-    /**
-     *  Helper method to construct a rectangle from the given string.
-     * @param value
-     * @return Rectangle
-     */
-    private static Rectangle basicGetRectangle(String value) {
-        // We can't just return RECTANGLE_DEFAULT_DEFAULT because
-        // a rectangle object doesn't have value semantik.
-        Rectangle dr = new Rectangle(RECTANGLE_DEFAULT_DEFAULT.x,
-                RECTANGLE_DEFAULT_DEFAULT.y, RECTANGLE_DEFAULT_DEFAULT.width,
-                RECTANGLE_DEFAULT_DEFAULT.height);
-
-        if (IPreferenceStore.STRING_DEFAULT_DEFAULT.equals(value)) {
-			return dr;
-		}
-        return StringConverter.asRectangle(value, dr);
-    }
-
-    /**
-     * Returns the current value of the color-valued preference with the
-     * given name in the given preference store.
-     * Returns the default-default value (<code>COLOR_DEFAULT_DEFAULT</code>) 
-     * if there is no preference with the given name, or if the current value 
-     * cannot be treated as a color.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the color-valued preference
-     */
-    public static RGB getColor(IPreferenceStore store, String name) {
-        return basicGetColor(store.getString(name));
-    }
-
-    /**
-     * Returns the default value for the color-valued preference
-     * with the given name in the given preference store.
-     * Returns the default-default value (<code>COLOR_DEFAULT_DEFAULT</code>) 
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a color.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the default value of the preference
-     */
-    public static RGB getDefaultColor(IPreferenceStore store, String name) {
-        return basicGetColor(store.getDefaultString(name));
-    }
-
-    /**
-     * Returns the default value array for the font-valued preference
-     * with the given name in the given preference store.
-     * Returns the default-default value (<code>FONTDATA_ARRAY_DEFAULT_DEFAULT</code>) 
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as font data.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the default value of the preference
-     */
-    public static FontData[] getDefaultFontDataArray(IPreferenceStore store,
-            String name) {
-        return basicGetFontData(store.getDefaultString(name));
-    }
-
-    /**
-     * Returns a single default value for the font-valued preference
-     * with the given name in the given preference store.
-     * Returns the default-default value (<code>FONTDATA_DEFAULT_DEFAULT</code>) 
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as font data.
-     * This method is provided for backwards compatibility. It is
-     * recommended that <code>getDefaultFontDataArray</code> is
-     * used instead.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the default value of the preference
-     */
-    public static FontData getDefaultFontData(IPreferenceStore store,
-            String name) {
-        return getDefaultFontDataArray(store, name)[0];
-    }
-
-    /**
-     * Returns the default value for the point-valued preference
-     * with the given name in the given preference store.
-     * Returns the default-default value (<code>POINT_DEFAULT_DEFAULT</code>) 
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a point.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the default value of the preference
-     */
-    public static Point getDefaultPoint(IPreferenceStore store, String name) {
-        return basicGetPoint(store.getDefaultString(name));
-    }
-
-    /**
-     * Returns the default value for the rectangle-valued preference
-     * with the given name in the given preference store.
-     * Returns the default-default value (<code>RECTANGLE_DEFAULT_DEFAULT</code>) 
-     * is no default preference with the given name, or if the default 
-     * value cannot be treated as a rectangle.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the default value of the preference
-     */
-    public static Rectangle getDefaultRectangle(IPreferenceStore store,
-            String name) {
-        return basicGetRectangle(store.getDefaultString(name));
-    }
-
-    /**
-     * Returns the current value of the font-valued preference with the
-     * given name in the given preference store.
-     * Returns the default-default value (<code>FONTDATA_ARRAY_DEFAULT_DEFAULT</code>) 
-     * if there is no preference with the given name, or if the current value 
-     * cannot be treated as font data.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the font-valued preference
-     */
-    public static FontData[] getFontDataArray(IPreferenceStore store,
-            String name) {
-        return basicGetFontData(store.getString(name));
-    }
-
-    /**
-     * Returns the current value of the first entry of the
-     * font-valued preference with the
-     * given name in the given preference store.
-     * Returns the default-default value (<code>FONTDATA_ARRAY_DEFAULT_DEFAULT</code>) 
-     * if there is no preference with the given name, or if the current value 
-     * cannot be treated as font data.
-     * This API is provided for backwards compatibility. It is
-     * recommended that <code>getFontDataArray</code> is used instead.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the font-valued preference
-     */
-    public static FontData getFontData(IPreferenceStore store, String name) {
-        return getFontDataArray(store, name)[0];
-    }
-
-    /**
-     * Returns the current value of the point-valued preference with the
-     * given name in the given preference store.
-     * Returns the default-default value (<code>POINT_DEFAULT_DEFAULT</code>) 
-     * if there is no preference with the given name, or if the current value 
-     * cannot be treated as a point.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the point-valued preference
-     */
-    public static Point getPoint(IPreferenceStore store, String name) {
-        return basicGetPoint(store.getString(name));
-    }
-
-    /**
-     * Returns the current value of the rectangle-valued preference with the
-     * given name in the given preference store.
-     * Returns the default-default value (<code>RECTANGLE_DEFAULT_DEFAULT</code>) 
-     * if there is no preference with the given name, or if the current value 
-     * cannot be treated as a rectangle.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @return the rectangle-valued preference
-     */
-    public static Rectangle getRectangle(IPreferenceStore store, String name) {
-        return basicGetRectangle(store.getString(name));
-    }
-
-    /**
-     * Sets the default value of the preference with the given name
-     * in the given preference store. As FontDatas are stored as 
-     * arrays this method is only provided for backwards compatibility.
-     * Use <code>setDefault(IPreferenceStore, String, FontData[])</code>
-     * instead.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new default value of the preference
-     */
-    public static void setDefault(IPreferenceStore store, String name,
-            FontData value) {
-        FontData[] fontDatas = new FontData[1];
-        fontDatas[0] = value;
-        setDefault(store, name, fontDatas);
-    }
-
-    /**
-     * Sets the default value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new default value of the preference
-     */
-    public static void setDefault(IPreferenceStore store, String name,
-            FontData[] value) {
-        store.setDefault(name, getStoredRepresentation(value));
-    }
-
-    /**
-     * Sets the default value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new default value of the preference
-     */
-    public static void setDefault(IPreferenceStore store, String name,
-            Point value) {
-        store.setDefault(name, StringConverter.asString(value));
-    }
-
-    /**
-     * Sets the default value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new default value of the preference
-     */
-    public static void setDefault(IPreferenceStore store, String name,
-            Rectangle value) {
-        store.setDefault(name, StringConverter.asString(value));
-    }
-
-    /**
-     * Sets the default value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new default value of the preference
-     */
-    public static void setDefault(IPreferenceStore store, String name, RGB value) {
-        store.setDefault(name, StringConverter.asString(value));
-    }
-
-    /**
-     * Sets the current value of the preference with the given name
-     * in the given preference store. 
-     * <p>
-     * Included for backwards compatibility.  This method is equivalent to
-     * </code>setValue(store, name, new FontData[]{value})</code>.
-     * </p>
-     * 
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public static void setValue(IPreferenceStore store, String name,
-            FontData value) {
-        setValue(store, name, new FontData[] { value });
-    }
-
-    /**
-     * Sets the current value of the preference with the given name
-     * in the given preference store. This method also sets the corresponding
-     * key in the JFace font registry to the value and fires a 
-     * property change event to listeners on the preference store.
-     * 
-     * <p>
-     * Note that this API does not update any other settings that may
-     * be dependant upon it. Only the value in the preference store 
-     * and in the font registry is updated.
-     * </p> 
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     * 
-     * @see #putValue(IPreferenceStore, String, FontData[])
-     */
-    public static void setValue(IPreferenceStore store, String name,
-            FontData[] value) {
-        FontData[] oldValue = getFontDataArray(store, name);
-        // see if the font has changed
-        if (!Arrays.equals(oldValue, value)) {
-            store.putValue(name, getStoredRepresentation(value));
-            JFaceResources.getFontRegistry().put(name, value);
-            store.firePropertyChangeEvent(name, oldValue, value);
-        }
-    }
-
-    /**
-     * Sets the current value of the preference with the given name
-     * in the given preference store. This method does not update
-     * the font registry or fire a property change event.
-     * 
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     * 
-     * @see PreferenceConverter#setValue(IPreferenceStore, String, FontData[])
-     */
-    public static void putValue(IPreferenceStore store, String name,
-            FontData[] value) {
-        FontData[] oldValue = getFontDataArray(store, name);
-        // see if the font has changed
-        if (!Arrays.equals(oldValue, value)) {
-            store.putValue(name, getStoredRepresentation(value));
-        }
-    }
-
-    /**
-     * Returns the stored representation of the given array of FontData objects.
-     * The stored representation has the form FontData;FontData;
-     * Only includes the non-null entries.
-     * 
-     * @param fontData the array of FontData objects
-     * @return the stored representation of the FontData objects
-     * @since 3.0
-     */
-    public static String getStoredRepresentation(FontData[] fontData) {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < fontData.length; i++) {
-            if (fontData[i] != null) {
-                buffer.append(fontData[i].toString());
-                buffer.append(ENTRY_SEPARATOR);
-            }
-        }
-        return buffer.toString();
-    }
-
-    /**
-     * Sets the current value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public static void setValue(IPreferenceStore store, String name, Point value) {
-        Point oldValue = getPoint(store, name);
-        if (oldValue == null || !oldValue.equals(value)) {
-            store.putValue(name, StringConverter.asString(value));
-            store.firePropertyChangeEvent(name, oldValue, value);
-        }
-    }
-
-    /**
-     * Sets the current value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public static void setValue(IPreferenceStore store, String name,
-            Rectangle value) {
-        Rectangle oldValue = getRectangle(store, name);
-        if (oldValue == null || !oldValue.equals(value)) {
-            store.putValue(name, StringConverter.asString(value));
-            store.firePropertyChangeEvent(name, oldValue, value);
-        }
-    }
-
-    /**
-     * Sets the current value of the preference with the given name
-     * in the given preference store.
-     *
-     * @param store the preference store
-     * @param name the name of the preference
-     * @param value the new current value of the preference
-     */
-    public static void setValue(IPreferenceStore store, String name, RGB value) {
-        RGB oldValue = getColor(store, name);
-        if (oldValue == null || !oldValue.equals(value)) {
-            store.putValue(name, StringConverter.asString(value));
-            store.firePropertyChangeEvent(name, oldValue, value);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceDialog.java
deleted file mode 100644
index 7e6e5db..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceDialog.java
+++ /dev/null
@@ -1,1528 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Teddy Walker <teddy.walker@googlemail.com> 
- *     	- Bug 188056 [Preferences] PreferencePages have to less indent in PreferenceDialog
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.DialogMessageArea;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.dialogs.IPageChangeProvider;
-import org.eclipse.jface.dialogs.IPageChangedListener;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.PageChangedEvent;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-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.TreeViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-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.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-
-/**
- * A preference dialog is a hierarchical presentation of preference pages. Each
- * page is represented by a node in the tree shown on the left hand side of the
- * dialog; when a node is selected, the corresponding page is shown on the right
- * hand side.
- */
-public class PreferenceDialog extends TrayDialog implements IPreferencePageContainer, IPageChangeProvider {
-	/**
-	 * Layout for the page container.
-	 *  
-	 */
-	private class PageLayout extends Layout {
-		public Point computeSize(Composite composite, int wHint, int hHint, boolean force) {
-			if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-			int x = minimumPageSize.x;
-			int y = minimumPageSize.y;
-			Control[] children = composite.getChildren();
-			for (int i = 0; i < children.length; i++) {
-				Point size = children[i].computeSize(SWT.DEFAULT, SWT.DEFAULT, force);
-				x = Math.max(x, size.x);
-				y = Math.max(y, size.y);
-			}
-			
-			//As pages can implement thier own computeSize
-			//take it into account
-			if(currentPage != null){
-				Point size = currentPage.computeSize();
-				x = Math.max(x, size.x);
-				y = Math.max(y, size.y);
-			}
-			
-			if (wHint != SWT.DEFAULT) {
-				x = wHint;
-			}
-			if (hHint != SWT.DEFAULT) {
-				y = hHint;
-			}
-			return new Point(x, y);
-		}
-
-		public void layout(Composite composite, boolean force) {
-			Rectangle rect = composite.getClientArea();
-			Control[] children = composite.getChildren();
-			for (int i = 0; i < children.length; i++) {
-				children[i].setSize(rect.width, rect.height);
-			}
-		}
-	}
-
-	//The id of the last page that was selected
-	private static String lastPreferenceId = null;
-
-	//The last known tree width
-	private static int lastTreeWidth = 180;
-
-	/**
-	 * Indentifier for the error image
-	 */
-	public static final String PREF_DLG_IMG_TITLE_ERROR = DLG_IMG_MESSAGE_ERROR;
-
-	/**
-	 * Title area fields
-	 */
-	public static final String PREF_DLG_TITLE_IMG = "preference_dialog_title_image"; //$NON-NLS-1$
-
-	/**
-	 * Return code used when dialog failed
-	 */
-	protected static final int FAILED = 2;
-	
-	/**
-	 * The current preference page, or <code>null</code> if there is none.
-	 */
-	private IPreferencePage currentPage;
-
-	private DialogMessageArea messageArea;
-
-	private Point lastShellSize;
-
-	private IPreferenceNode lastSuccessfulNode;
-
-	/**
-	 * The minimum page size; 400 by 400 by default.
-	 * 
-	 * @see #setMinimumPageSize(Point)
-	 */
-	private Point minimumPageSize = new Point(400, 400);
-
-	/**
-	 * The OK button.
-	 */
-	private Button okButton;
-
-	/**
-	 * The Composite in which a page is shown.
-	 */
-	private Composite pageContainer;
-
-	/**
-	 * The preference manager.
-	 */
-	private PreferenceManager preferenceManager;
-
-	/**
-	 * Flag for the presence of the error message.
-	 */
-	private boolean showingError = false;
-
-	/**
-	 * Preference store, initially <code>null</code> meaning none.
-	 * 
-	 * @see #setPreferenceStore
-	 */
-	private IPreferenceStore preferenceStore;
-
-	private Composite titleArea;
-
-	/**
-	 * The tree viewer.
-	 */
-	private TreeViewer treeViewer;
-	
-    private ListenerList pageChangedListeners = new ListenerList();
-
-    /**
-     *  Composite with a FormLayout to contain the title area
-     */
-    Composite formTitleComposite;
-
-	private ScrolledComposite scrolled;
-
-	/**
-	 * Creates a new preference dialog under the control of the given preference
-	 * manager.
-	 * 
-	 * @param parentShell
-	 *            the parent shell
-	 * @param manager
-	 *            the preference manager
-	 */
-	public PreferenceDialog(Shell parentShell, PreferenceManager manager) {
-		super(parentShell);
-		preferenceManager = manager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-	 */
-	protected void buttonPressed(int buttonId) {
-		switch (buttonId) {
-		case IDialogConstants.OK_ID: {
-			okPressed();
-			return;
-		}
-		case IDialogConstants.CANCEL_ID: {
-			cancelPressed();
-			return;
-		}
-		case IDialogConstants.HELP_ID: {
-			helpPressed();
-			return;
-		}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#cancelPressed()
-	 */
-	protected void cancelPressed() {
-		// Inform all pages that we are cancelling
-		Iterator nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER).iterator();
-		while (nodes.hasNext()) {
-			final IPreferenceNode node = (IPreferenceNode) nodes.next();
-			if (getPage(node) != null) {
-				SafeRunnable.run(new SafeRunnable() {
-					public void run() {
-						if (!getPage(node).performCancel()) {
-							return;
-						}
-					}
-				});
-			}
-		}
-		setReturnCode(CANCEL);
-		close();
-	}
-
-	/**
-	 * Clear the last selected node. This is so that we not chache the last
-	 * selection in case of an error.
-	 */
-	void clearSelectedNode() {
-		setSelectedNodePreference(null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		
-		//Do this is in a SafeRunnable as it may run client code
-		SafeRunnable runnable = new SafeRunnable(){
-			/* (non-Javadoc)
-			 * @see org.eclipse.core.runtime.ISafeRunnable#run()
-			 */
-			public void run() throws Exception {
-				List nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER);
-				for (int i = 0; i < nodes.size(); i++) {
-					IPreferenceNode node = (IPreferenceNode) nodes.get(i);
-					node.disposeResources();
-				}
-				
-			}
-			
-			/* (non-Javadoc)
-			 * @see org.eclipse.jface.util.SafeRunnable#handleException(java.lang.Throwable)
-			 */
-			public void handleException(Throwable e) {
-				super.handleException(e);
-				clearSelectedNode();//Do not cache a node with problems
-			}
-		};
-		
-		SafeRunner.run(runnable);
-		
-		return super.close();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void configureShell(Shell newShell) {
-		super.configureShell(newShell);
-		newShell.setText(JFaceResources.getString("PreferenceDialog.title")); //$NON-NLS-1$
-		newShell.addShellListener(new ShellAdapter() {
-			public void shellActivated(ShellEvent e) {
-				if (lastShellSize == null) {
-					lastShellSize = getShell().getSize();
-				}
-			}
-
-		});
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#constrainShellSize()
-	 */
-	protected void constrainShellSize() {
-		super.constrainShellSize();
-		// record opening shell size
-		if (lastShellSize == null) {
-			lastShellSize = getShell().getSize();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		// create OK and Cancel buttons by default
-		okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
-		getShell().setDefaultButton(okButton);
-		createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createContents(final Composite parent) {
-		final Control[] control = new Control[1];
-		BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
-			public void run() {
-				control[0] = PreferenceDialog.super.createContents(parent);
-				// Add the first page
-				selectSavedItem();
-			}
-		});
-
-		return control[0];
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		final Composite composite = (Composite) super.createDialogArea(parent);
-		GridLayout parentLayout = ((GridLayout) composite.getLayout());
-		parentLayout.numColumns = 4;
-		parentLayout.marginHeight = 0;
-		parentLayout.marginWidth = 0;
-		parentLayout.verticalSpacing = 0;
-		parentLayout.horizontalSpacing = 0;
-		
-		composite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-		
-		Control treeControl = createTreeAreaContents(composite);
-		createSash(composite,treeControl);
-		
-		Label versep = new Label(composite, SWT.SEPARATOR | SWT.VERTICAL);
-		GridData verGd = new GridData(GridData.FILL_VERTICAL | GridData.GRAB_VERTICAL);
-	
-		versep.setLayoutData(verGd);
-		versep.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true));
-		
-		Composite pageAreaComposite = new Composite(composite, SWT.NONE);
-		pageAreaComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		GridLayout layout = new GridLayout(1, true);
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		layout.verticalSpacing = 0;
-		pageAreaComposite.setLayout(layout);
-		
-		formTitleComposite = new Composite(pageAreaComposite, SWT.NONE);
-		FormLayout titleLayout = new FormLayout();
-		titleLayout.marginWidth = 0;
-		titleLayout.marginHeight = 0;
-		formTitleComposite.setLayout(titleLayout);
-		
-		GridData titleGridData = new GridData(GridData.FILL_HORIZONTAL);
-		titleGridData.horizontalIndent = IDialogConstants.HORIZONTAL_MARGIN;
-		formTitleComposite.setLayoutData(titleGridData);
-		
-		// Build the title area and separator line
-		Composite titleComposite = new Composite(formTitleComposite, SWT.NONE);
-		layout = new GridLayout();
-		layout.marginBottom = 5;
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		layout.horizontalSpacing = 0;
-		titleComposite.setLayout(layout);
-		
-		FormData titleFormData = new FormData();
-	   	titleFormData.top = new FormAttachment(0,0);
-    	titleFormData.left = new FormAttachment(0,0);
-    	titleFormData.right = new FormAttachment(100,0);
-    	titleFormData.bottom = new FormAttachment(100,0);
-		
-		titleComposite.setLayoutData(titleFormData);
-		createTitleArea(titleComposite);
-		
-		Label separator = new Label(pageAreaComposite, SWT.HORIZONTAL | SWT.SEPARATOR);
-
-		separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
-		
-		
-		// Build the Page container
-		pageContainer = createPageContainer(pageAreaComposite);
-		GridData pageContainerData = new GridData(GridData.FILL_BOTH);
-		pageContainerData.horizontalIndent = IDialogConstants.HORIZONTAL_MARGIN;
-		pageContainer.setLayoutData(pageContainerData);
-		// Build the separator line
-		Label bottomSeparator = new Label(parent, SWT.HORIZONTAL | SWT.SEPARATOR);
-		bottomSeparator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
-		return composite;
-	}
-
-	/**
-	 * Create the sash with right control on the right. Note 
-	 * that this method assumes GridData for the layout data
-	 * of the rightControl.
-	 * @param composite
-	 * @param rightControl
-	 * @return Sash
-	 * 
-	 * @since 3.1
-	 */
-	protected Sash createSash(final Composite composite, final Control rightControl) {
-		final Sash sash = new Sash(composite, SWT.VERTICAL);
-		sash.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-		sash.setBackground(composite.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-		// the following listener resizes the tree control based on sash deltas.
-		// If necessary, it will also grow/shrink the dialog.
-		sash.addListener(SWT.Selection, new Listener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-			 */
-			public void handleEvent(Event event) {
-				if (event.detail == SWT.DRAG) {
-					return;
-				}
-				int shift = event.x - sash.getBounds().x;
-				GridData data = (GridData) rightControl.getLayoutData();
-				int newWidthHint = data.widthHint + shift;
-				if (newWidthHint < 20) {
-					return;
-				}
-				Point computedSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-				Point currentSize = getShell().getSize();
-				// if the dialog wasn't of a custom size we know we can shrink
-				// it if necessary based on sash movement.
-				boolean customSize = !computedSize.equals(currentSize);
-				data.widthHint = newWidthHint;
-				setLastTreeWidth(newWidthHint);
-				composite.layout(true);
-				// recompute based on new widget size
-				computedSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-				// if the dialog was of a custom size then increase it only if
-				// necessary.
-				if (customSize) {
-					computedSize.x = Math.max(computedSize.x, currentSize.x);
-				}
-				computedSize.y = Math.max(computedSize.y, currentSize.y);
-				if (computedSize.equals(currentSize)) {
-					return;
-				}
-				setShellSize(computedSize.x, computedSize.y);
-				lastShellSize = getShell().getSize();
-			}
-		});
-		return sash;
-	}
-
-	/**
-	 * Creates the inner page container.
-	 * 
-	 * @param parent
-	 * @return Composite
-	 */
-	protected Composite createPageContainer(Composite parent) {
-	
-		Composite outer = new Composite(parent, SWT.NONE);
-		
-		GridData outerData = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL
-				| GridData.GRAB_VERTICAL);
-		outerData.horizontalIndent = IDialogConstants.HORIZONTAL_MARGIN;
-				
-		outer.setLayout(new GridLayout());
-		outer.setLayoutData(outerData);
-		
-		//Create an outer composite for spacing
-		scrolled = new ScrolledComposite(outer, SWT.V_SCROLL | SWT.H_SCROLL);
-
-		// always show the focus control
-		scrolled.setShowFocusedControl(true);
-		scrolled.setExpandHorizontal(true);
-		scrolled.setExpandVertical(true);
-		
-		GridData scrolledData = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL
-				| GridData.GRAB_VERTICAL);
-				
-		scrolled.setLayoutData(scrolledData);
-		
-		Composite result = new Composite(scrolled, SWT.NONE);
-		
-		GridData resultData = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL
-				| GridData.GRAB_VERTICAL);
-				
-		result.setLayout(getPageLayout());
-		result.setLayoutData(resultData);
-		
-		scrolled.setContent(result);
-		
-		return result;
-	}
-
-	/**
-	 * Return the layout for the composite that contains
-	 * the pages.
-	 * @return PageLayout
-	 * 
-	 * @since 3.1
-	 */
-	protected Layout getPageLayout() {
-		return new PageLayout();
-	}
-
-	/**
-	 * Creates the wizard's title area.
-	 * 
-	 * @param parent
-	 *            the SWT parent for the title area composite.
-	 * @return the created title area composite.
-	 */
-	protected Composite createTitleArea(Composite parent) {
-		// Create the title area which will contain
-		// a title, message, and image.
-		int margins = 2;
-		titleArea = new Composite(parent, SWT.NONE);
-		FormLayout layout = new FormLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = margins;
-		titleArea.setLayout(layout);
-
-		
-		GridData layoutData = new GridData(GridData.FILL_HORIZONTAL);
-		layoutData.verticalAlignment = SWT.TOP;
-		titleArea.setLayoutData(layoutData);
-
-		// Message label
-		messageArea = new DialogMessageArea();
-		messageArea.createContents(titleArea);
-
-		titleArea.addControlListener(new ControlAdapter() {
-			/* (non-Javadoc)
-			 * @see org.eclipse.swt.events.ControlAdapter#controlResized(org.eclipse.swt.events.ControlEvent)
-			 */
-			public void controlResized(ControlEvent e) {
-				updateMessage();
-			}
-		});
-
-		final IPropertyChangeListener fontListener = new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (JFaceResources.BANNER_FONT.equals(event.getProperty())) {
-					updateMessage();
-				}
-				if (JFaceResources.DIALOG_FONT.equals(event.getProperty())) {
-					updateMessage();
-					Font dialogFont = JFaceResources.getDialogFont();
-					updateTreeFont(dialogFont);
-					Control[] children = ((Composite) buttonBar).getChildren();
-					for (int i = 0; i < children.length; i++) {
-						children[i].setFont(dialogFont);
-					}
-				}
-			}
-		};
-
-		titleArea.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent event) {
-				JFaceResources.getFontRegistry().removeListener(fontListener);
-			}
-		});
-		JFaceResources.getFontRegistry().addListener(fontListener);
-		messageArea.setTitleLayoutData(createMessageAreaData());
-		messageArea.setMessageLayoutData(createMessageAreaData());
-		return titleArea;
-	}
-
-	/**
-	 * Create the layout data for the message area.
-	 * 
-	 * @return FormData for the message area.
-	 */
-	private FormData createMessageAreaData() {
-		FormData messageData = new FormData();
-		messageData.top = new FormAttachment(0);
-		messageData.bottom = new FormAttachment(100);
-		messageData.right = new FormAttachment(100);
-		messageData.left = new FormAttachment(0);
-		return messageData;
-	}
-
-	/**
-	 * @param parent
-	 *            the SWT parent for the tree area controls.
-	 * @return the new <code>Control</code>.
-	 * @since 3.0
-	 */
-	protected Control createTreeAreaContents(Composite parent) {
-		// Build the tree an put it into the composite.
-		treeViewer = createTreeViewer(parent);
-		treeViewer.setInput(getPreferenceManager());
-		updateTreeFont(JFaceResources.getDialogFont());
-		layoutTreeAreaControl(treeViewer.getControl());
-		return treeViewer.getControl();
-	}
-
-	/**
-	 * Create a new <code>TreeViewer</code>.
-	 * 
-	 * @param parent
-	 *            the parent <code>Composite</code>.
-	 * @return the <code>TreeViewer</code>.
-	 * @since 3.0
-	 */
-	protected TreeViewer createTreeViewer(Composite parent) {
-		final TreeViewer viewer = new TreeViewer(parent, SWT.NONE);
-		addListeners(viewer);
-		viewer.setLabelProvider(new PreferenceLabelProvider());
-		viewer.setContentProvider(new PreferenceContentProvider());
-		return viewer;
-	}
-
-	/**
-	 * Add the listeners to the tree viewer.
-	 * @param viewer
-	 * 
-	 * @since 3.1
-	 */
-	protected void addListeners(final TreeViewer viewer) {
-		viewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
-			private void handleError() {
-				try {
-					// remove the listener temporarily so that the events caused
-					// by the error handling dont further cause error handling
-					// to occur.
-					viewer.removePostSelectionChangedListener(this);
-					showPageFlippingAbortDialog();
-					selectCurrentPageAgain();
-					clearSelectedNode();
-				} finally {
-					viewer.addPostSelectionChangedListener(this);
-				}
-			}
-
-			public void selectionChanged(SelectionChangedEvent event) {
-				final Object selection = getSingleSelection(event.getSelection());
-				if (selection instanceof IPreferenceNode) {
-					BusyIndicator.showWhile(getShell().getDisplay(), new Runnable(){
-						public void run() {
-							if (!isCurrentPageValid()) {
-								handleError();
-							} else if (!showPage((IPreferenceNode) selection)) {
-								// Page flipping wasn't successful
-								handleError();
-							} else {
-								// Everything went well
-								lastSuccessfulNode = (IPreferenceNode) selection;
-							}
-						}
-					});
-				}
-			}
-		});
-		((Tree) viewer.getControl()).addSelectionListener(new SelectionAdapter() {
-			public void widgetDefaultSelected(final SelectionEvent event) {
-				ISelection selection = viewer.getSelection();
-				if (selection.isEmpty()) {
-					return;
-				}
-				IPreferenceNode singleSelection = getSingleSelection(selection);
-				boolean expanded = viewer.getExpandedState(singleSelection);
-				viewer.setExpandedState(singleSelection, !expanded);
-			}
-		});
-		//Register help listener on the tree to use context sensitive help
-		viewer.getControl().addHelpListener(new HelpListener() {
-			public void helpRequested(HelpEvent event) {
-				// call perform help on the current page
-				if (currentPage != null) {
-					currentPage.performHelp();
-				}
-			}
-		});
-	}
-
-	/**
-	 * Find the <code>IPreferenceNode</code> that has data the same id as the
-	 * supplied value.
-	 * 
-	 * @param nodeId
-	 *            the id to search for.
-	 * @return <code>IPreferenceNode</code> or <code>null</code> if not
-	 *         found.
-	 */
-	protected IPreferenceNode findNodeMatching(String nodeId) {
-		List nodes = preferenceManager.getElements(PreferenceManager.POST_ORDER);
-		for (Iterator i = nodes.iterator(); i.hasNext();) {
-			IPreferenceNode node = (IPreferenceNode) i.next();
-			if (node.getId().equals(nodeId)) {
-				return node;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Get the last known right side width.
-	 * 
-	 * @return the width.
-	 */
-	protected int getLastRightWidth() {
-		return lastTreeWidth;
-	}
-
-	/**
-	 * Returns the preference mananger used by this preference dialog.
-	 * 
-	 * @return the preference mananger
-	 */
-	public PreferenceManager getPreferenceManager() {
-		return preferenceManager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#getPreferenceStore()
-	 */
-	public IPreferenceStore getPreferenceStore() {
-		return preferenceStore;
-	}
-
-	/**
-	 * Get the name of the selected item preference
-	 * 
-	 * @return String
-	 */
-	protected String getSelectedNodePreference() {
-		return lastPreferenceId;
-	}
-
-	/**
-	 * @param selection
-	 *            the <code>ISelection</code> to examine.
-	 * @return the first element, or null if empty.
-	 */
-	protected IPreferenceNode getSingleSelection(ISelection selection) {
-		if (!selection.isEmpty()) {
-			IStructuredSelection structured = (IStructuredSelection) selection;
-			if (structured.getFirstElement() instanceof IPreferenceNode) {
-				return (IPreferenceNode) structured.getFirstElement();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * @return the <code>TreeViewer</code> for this dialog.
-	 * @since 3.3
-	 */
-	public TreeViewer getTreeViewer() {
-		return treeViewer;
-	}
-
-	/**
-	 * Save the values specified in the pages.
-	 * <p>
-	 * The default implementation of this framework method saves all pages of
-	 * type <code>PreferencePage</code> (if their store needs saving and is a
-	 * <code>PreferenceStore</code>).
-	 * </p>
-	 * <p>
-	 * Subclasses may override.
-	 * </p>
-	 */
-	protected void handleSave() {
-		Iterator nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER).iterator();
-		while (nodes.hasNext()) {
-			IPreferenceNode node = (IPreferenceNode) nodes.next();
-			IPreferencePage page = node.getPage();
-			if (page instanceof PreferencePage) {
-				// Save now in case tbe workbench does not shutdown cleanly
-				IPreferenceStore store = ((PreferencePage) page).getPreferenceStore();
-				if (store != null && store.needsSaving()
-						&& store instanceof IPersistentPreferenceStore) {
-					try {
-						((IPersistentPreferenceStore) store).save();
-					} catch (IOException e) {
-						String message =JFaceResources.format(
-                                "PreferenceDialog.saveErrorMessage", new Object[] { page.getTitle(), e.getMessage() }); //$NON-NLS-1$ 
-			            Policy.getStatusHandler().show(
-			                    new Status(IStatus.ERROR, Policy.JFACE, message, e),
-			                    JFaceResources.getString("PreferenceDialog.saveErrorTitle")); //$NON-NLS-1$                              			                   
-										
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Notifies that the window's close button was pressed, the close menu was
-	 * selected, or the ESCAPE key pressed.
-	 * <p>
-	 * The default implementation of this framework method sets the window's
-	 * return code to <code>CANCEL</code> and closes the window using
-	 * <code>close</code>. Subclasses may extend or reimplement.
-	 * </p>
-	 */
-	protected void handleShellCloseEvent() {
-		// handle the same as pressing cancel
-		cancelPressed();
-	}
-
-	/**
-	 * Notifies of the pressing of the Help button.
-	 * <p>
-	 * The default implementation of this framework method calls
-	 * <code>performHelp</code> on the currently active page.
-	 * </p>
-	 */
-	protected void helpPressed() {
-		if (currentPage != null) {
-			currentPage.performHelp();
-		}
-	}
-
-	/**
-	 * Returns whether the current page is valid.
-	 * 
-	 * @return <code>false</code> if the current page is not valid, or or
-	 *         <code>true</code> if the current page is valid or there is no
-	 *         current page
-	 */
-	protected boolean isCurrentPageValid() {
-		if (currentPage == null) {
-			return true;
-		}
-		return currentPage.isValid();
-	}
-
-	/**
-	 * @param control
-	 *            the <code>Control</code> to lay out.
-	 * @since 3.0
-	 */
-	protected void layoutTreeAreaControl(Control control) {
-		GridData gd = new GridData(GridData.FILL_VERTICAL);
-		gd.widthHint = getLastRightWidth();
-		gd.verticalSpan = 1;
-		control.setLayoutData(gd);
-	}
-
-	/**
-	 * The preference dialog implementation of this <code>Dialog</code>
-	 * framework method sends <code>performOk</code> to all pages of the
-	 * preference dialog, then calls <code>handleSave</code> on this dialog to
-	 * save any state, and then calls <code>close</code> to close this dialog.
-	 */
-	protected void okPressed() {
-		SafeRunnable.run(new SafeRunnable() {
-			private boolean errorOccurred;
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.ISafeRunnable#run()
-			 */
-			public void run() {
-				getButton(IDialogConstants.OK_ID).setEnabled(false);
-				errorOccurred = false;
-				boolean hasFailedOK = false;
-				try {
-					// Notify all the pages and give them a chance to abort
-					Iterator nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER)
-							.iterator();
-					while (nodes.hasNext()) {
-						IPreferenceNode node = (IPreferenceNode) nodes.next();
-						IPreferencePage page = node.getPage();
-						if (page != null) {
-							if (!page.performOk()){
-								hasFailedOK = true;
-								return;
-							}
-						}
-					}
-				} catch (Exception e) {
-					handleException(e);
-				} finally {
-					//Don't bother closing if the OK failed
-					if(hasFailedOK){
-						setReturnCode(FAILED);
-						getButton(IDialogConstants.OK_ID).setEnabled(true);
-						return;
-					}
-					
-					if (!errorOccurred) {
-						//Give subclasses the choice to save the state of the
-					    //preference pages.
-						handleSave();
-					}
-					setReturnCode(OK);
-					close();
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
-			 */
-			public void handleException(Throwable e) {
-				errorOccurred = true;
-				
-				Policy.getLog().log(new Status(IStatus.ERROR, Policy.JFACE, 0, e.toString(), e));
-
-				clearSelectedNode();
-				String message = JFaceResources.getString("SafeRunnable.errorMessage"); //$NON-NLS-1$
-
-                Policy.getStatusHandler().show(
-                        new Status(IStatus.ERROR, Policy.JFACE, message, e),
-                        JFaceResources.getString("Error")); //$NON-NLS-1$                                                             
-
-			}
-		});
-	}
-
-	/**
-	 * Selects the page determined by <code>lastSuccessfulNode</code> in the
-	 * page hierarchy.
-	 */
-	void selectCurrentPageAgain() {
-		if (lastSuccessfulNode == null) {
-			return;
-		}
-		getTreeViewer().setSelection(new StructuredSelection(lastSuccessfulNode));
-		currentPage.setVisible(true);
-	}
-
-	/**
-	 * Selects the saved item in the tree of preference pages. If it cannot do
-	 * this it saves the first one.
-	 */
-	protected void selectSavedItem() {
-		IPreferenceNode node = findNodeMatching(getSelectedNodePreference());
-		if (node == null) {
-			IPreferenceNode[] nodes = preferenceManager.getRootSubNodes();
-			ViewerComparator comparator = getTreeViewer().getComparator();
-			if (comparator != null)	{
-				comparator.sort(null, nodes);
-			}
-			ViewerFilter[] filters = getTreeViewer().getFilters();
-			for (int i = 0; i < nodes.length; i++) {
-				IPreferenceNode selectedNode = nodes[i];
-				// See if it passes all filters
-				for (int j = 0; j < filters.length; j++) {
-					if (!filters[j].select(this.treeViewer, preferenceManager
-							.getRoot(), selectedNode)) {
-						selectedNode = null;
-						break;
-					}
-				}
-				// if it passes all filters select it
-				if (selectedNode != null) {
-					node = selectedNode;
-					break;
-				}
-			}
-		}
-		if (node != null) {
-			getTreeViewer().setSelection(new StructuredSelection(node), true);
-			// Keep focus in tree. See bugs 2692, 2621, and 6775.
-			getTreeViewer().getControl().setFocus();
-		}
-	}
-
-	/**
-	 * Display the given error message. The currently displayed message is saved
-	 * and will be redisplayed when the error message is set to
-	 * <code>null</code>.
-	 * 
-	 * @param newErrorMessage
-	 *            the errorMessage to display or <code>null</code>
-	 */
-	public void setErrorMessage(String newErrorMessage) {
-		if (newErrorMessage == null) {
-			messageArea.clearErrorMessage();
-		} else {
-			messageArea.updateText(newErrorMessage, IMessageProvider.ERROR);
-		}
-	}
-
-	/**
-	 * Save the last known tree width.
-	 * 
-	 * @param width
-	 *            the width.
-	 */
-	private void setLastTreeWidth(int width) {
-		lastTreeWidth = width;
-	}
-
-	/**
-	 * Set the message text. If the message line currently displays an error,
-	 * the message is stored and will be shown after a call to clearErrorMessage
-	 * <p>
-	 * Shortcut for <code>setMessage(newMessage, NONE)</code>
-	 * </p>
-	 * 
-	 * @param newMessage
-	 *            the message, or <code>null</code> to clear the message
-	 */
-	public void setMessage(String newMessage) {
-		setMessage(newMessage, IMessageProvider.NONE);
-	}
-
-	/**
-	 * Sets the message for this dialog with an indication of what type of
-	 * message it is.
-	 * <p>
-	 * The valid message types are one of <code>NONE</code>,
-	 * <code>INFORMATION</code>,<code>WARNING</code>, or
-	 * <code>ERROR</code>.
-	 * </p>
-	 * <p>
-	 * Note that for backward compatibility, a message of type
-	 * <code>ERROR</code> is different than an error message (set using
-	 * <code>setErrorMessage</code>). An error message overrides the current
-	 * message until the error message is cleared. This method replaces the
-	 * current message and does not affect the error message.
-	 * </p>
-	 * 
-	 * @param newMessage
-	 *            the message, or <code>null</code> to clear the message
-	 * @param newType
-	 *            the message type
-	 * @since 2.0
-	 */
-	public void setMessage(String newMessage, int newType) {
-		messageArea.updateText(newMessage, newType);
-	}
-
-	/**
-	 * Sets the minimum page size.
-	 * 
-	 * @param minWidth
-	 *            the minimum page width
-	 * @param minHeight
-	 *            the minimum page height
-	 * @see #setMinimumPageSize(Point)
-	 */
-	public void setMinimumPageSize(int minWidth, int minHeight) {
-		minimumPageSize.x = minWidth;
-		minimumPageSize.y = minHeight;
-	}
-
-	/**
-	 * Sets the minimum page size.
-	 * 
-	 * @param size
-	 *            the page size encoded as <code>new Point(width,height)</code>
-	 * @see #setMinimumPageSize(int,int)
-	 */
-	public void setMinimumPageSize(Point size) {
-		minimumPageSize.x = size.x;
-		minimumPageSize.y = size.y;
-	}
-
-	/**
-	 * Sets the preference store for this preference dialog.
-	 * 
-	 * @param store
-	 *            the preference store
-	 * @see #getPreferenceStore
-	 */
-	public void setPreferenceStore(IPreferenceStore store) {
-		Assert.isNotNull(store);
-		preferenceStore = store;
-	}
-
-	/**
-	 * Save the currently selected node.
-	 */
-	private void setSelectedNode() {
-		String storeValue = null;
-		IStructuredSelection selection = (IStructuredSelection) getTreeViewer().getSelection();
-		if (selection.size() == 1) {
-			IPreferenceNode node = (IPreferenceNode) selection.getFirstElement();
-			storeValue = node.getId();
-		}
-		setSelectedNodePreference(storeValue);
-	}
-
-	/**
-	 * Sets the name of the selected item preference. Public equivalent to
-	 * <code>setSelectedNodePreference</code>.
-	 * 
-	 * @param pageId
-	 *            The identifier for the page
-	 * @since 3.0
-	 */
-	public void setSelectedNode(String pageId) {
-		setSelectedNodePreference(pageId);
-	}
-
-	/**
-	 * Sets the name of the selected item preference.
-	 * 
-	 * @param pageId
-	 *            The identifier for the page
-	 */
-	protected void setSelectedNodePreference(String pageId) {
-		lastPreferenceId = pageId;
-	}
-
-	/**
-	 * Changes the shell size to the given size, ensuring that it is no larger
-	 * than the display bounds.
-	 * 
-	 * @param width
-	 *            the shell width
-	 * @param height
-	 *            the shell height
-	 */
-	private void setShellSize(int width, int height) {
-		Rectangle preferred = getShell().getBounds();
-		preferred.width = width;
-		preferred.height = height;
-		getShell().setBounds(getConstrainedShellBounds(preferred));
-	}
-
-	/**
-	 * Shows the preference page corresponding to the given preference node.
-	 * Does nothing if that page is already current.
-	 * 
-	 * @param node
-	 *            the preference node, or <code>null</code> if none
-	 * @return <code>true</code> if the page flip was successful, and
-	 *         <code>false</code> is unsuccessful
-	 */
-	protected boolean showPage(IPreferenceNode node) {
-		if (node == null) {
-			return false;
-		}
-		// Create the page if nessessary
-		if (node.getPage() == null) {
-			createPage(node);
-		}
-		if (node.getPage() == null) {
-			return false;
-		}
-		IPreferencePage newPage = getPage(node);
-		if (newPage == currentPage) {
-			return true;
-		}
-		if (currentPage != null) {
-			if (!currentPage.okToLeave()) {
-				return false;
-			}
-		}
-		IPreferencePage oldPage = currentPage;
-		currentPage = newPage;
-		// Set the new page's container
-		currentPage.setContainer(this);
-		// Ensure that the page control has been created
-		// (this allows lazy page control creation)
-		if (currentPage.getControl() == null) {
-			final boolean[] failed = { false };
-			SafeRunnable.run(new ISafeRunnable() {
-				public void handleException(Throwable e) {
-					failed[0] = true;
-				}
-
-				public void run() {
-					createPageControl(currentPage, pageContainer);
-				}
-			});
-			if (failed[0]) {
-				return false;
-			}
-			// the page is responsible for ensuring the created control is
-			// accessable
-			// via getControl.
-			Assert.isNotNull(currentPage.getControl());
-		}
-		// Force calculation of the page's description label because
-		// label can be wrapped.
-		final Point[] size = new Point[1];
-		final Point failed = new Point(-1, -1);
-		SafeRunnable.run(new ISafeRunnable() {
-			public void handleException(Throwable e) {
-				size[0] = failed;
-			}
-
-			public void run() {
-				size[0] = currentPage.computeSize();
-			}
-		});
-		if (size[0].equals(failed)) {
-			return false;
-		}
-		Point contentSize = size[0];
-		// Do we need resizing. Computation not needed if the
-		// first page is inserted since computing the dialog's
-		// size is done by calling dialog.open().
-		// Also prevent auto resize if the user has manually resized
-		Shell shell = getShell();
-		Point shellSize = shell.getSize();
-		if (oldPage != null) {
-			Rectangle rect = pageContainer.getClientArea();
-			Point containerSize = new Point(rect.width, rect.height);
-			int hdiff = contentSize.x - containerSize.x;
-			int vdiff = contentSize.y - containerSize.y;
-			if ((hdiff > 0 || vdiff > 0) && shellSize.equals(lastShellSize)) {
-					hdiff = Math.max(0, hdiff);
-					vdiff = Math.max(0, vdiff);
-					setShellSize(shellSize.x + hdiff, shellSize.y + vdiff);
-					lastShellSize = shell.getSize();
-					if (currentPage.getControl().getSize().x == 0) {
-						currentPage.getControl().setSize(containerSize);
-					}
-				
-			} else {
-				currentPage.setSize(containerSize);
-			}
-		}
-		
-		scrolled.setMinSize(contentSize);
-		// Ensure that all other pages are invisible
-		// (including ones that triggered an exception during
-		// their creation).
-		Control[] children = pageContainer.getChildren();
-		Control currentControl = currentPage.getControl();
-		for (int i = 0; i < children.length; i++) {
-			if (children[i] != currentControl) {
-				children[i].setVisible(false);
-			}
-		}
-		// Make the new page visible
-		currentPage.setVisible(true);
-		if (oldPage != null) {
-			oldPage.setVisible(false);
-		}
-		// update the dialog controls
-		update();
-		return true;
-	}
-
-	/**
-	 * Create the page for the node.
-	 * @param node
-	 * 
-	 * @since 3.1
-	 */
-	protected void createPage(IPreferenceNode node) {
-		node.createPage();
-	}
-
-	/**
-	 * Get the page for the node.
-	 * @param node
-	 * @return IPreferencePage
-	 * 
-	 * @since 3.1
-	 */
-	protected IPreferencePage getPage(IPreferenceNode node) {
-		return node.getPage();
-	}
-
-	/**
-	 * Shows the "Page Flipping abort" dialog.
-	 */
-	void showPageFlippingAbortDialog() {
-		MessageDialog.openError(getShell(), JFaceResources
-				.getString("AbortPageFlippingDialog.title"), //$NON-NLS-1$
-				JFaceResources.getString("AbortPageFlippingDialog.message")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Updates this dialog's controls to reflect the current page.
-	 */
-	protected void update() {
-		// Update the title bar
-		updateTitle();
-		// Update the message line
-		updateMessage();
-		// Update the buttons
-		updateButtons();
-		//Saved the selected node in the preferences
-		setSelectedNode();
-		firePageChanged(new PageChangedEvent(this, getCurrentPage()));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#updateButtons()
-	 */
-	public void updateButtons() {
-		okButton.setEnabled(isCurrentPageValid());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#updateMessage()
-	 */
-	public void updateMessage() {
-		String message = null;
-		String errorMessage = null;
-		if(currentPage != null){
-			message = currentPage.getMessage();
-			errorMessage = currentPage.getErrorMessage();
-		}
-		int messageType = IMessageProvider.NONE;
-		if (message != null && currentPage instanceof IMessageProvider) {
-			messageType = ((IMessageProvider) currentPage).getMessageType();
-		}
-
-		if (errorMessage == null){
-			if (showingError) {
-				// we were previously showing an error
-				showingError = false;
-			}
-		}
-		else {
-			message = errorMessage;
-			messageType = IMessageProvider.ERROR;
-			if (!showingError) {
-				// we were not previously showing an error
-				showingError = true;
-			}
-		}  
-		messageArea.updateText(message,messageType);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#updateTitle()
-	 */
-	public void updateTitle() {
-		if(currentPage == null) {
-			return;
-		}
-		messageArea.showTitle(currentPage.getTitle(), currentPage.getImage());
-	}
-
-	/**
-	 * Update the tree to use the specified <code>Font</code>.
-	 * 
-	 * @param dialogFont
-	 *            the <code>Font</code> to use.
-	 * @since 3.0
-	 */
-	protected void updateTreeFont(Font dialogFont) {
-		getTreeViewer().getControl().setFont(dialogFont);
-	}
-
-	/**
-	 * Returns the currentPage.
-	 * @return IPreferencePage
-	 * @since 3.1
-	 */
-	protected IPreferencePage getCurrentPage() {
-		return currentPage;
-	}
-
-	/**
-	 * Sets the current page.
-	 * @param currentPage
-	 * 
-	 * @since 3.1
-	 */
-	protected void setCurrentPage(IPreferencePage currentPage) {
-		this.currentPage = currentPage;
-	}
-
-	/**
-	 * Set the treeViewer.
-	 * @param treeViewer
-	 * 
-	 * @since 3.1
-	 */
-	protected void setTreeViewer(TreeViewer treeViewer) {
-		this.treeViewer = treeViewer;
-	}
-
-	/**
-	 * Get the composite that is showing the page.
-	 *
-	 * @return Composite.
-	 * 
-	 * @since 3.1
-	 */
-	protected Composite getPageContainer() {
-		return this.pageContainer;
-	}
-
-	/**
-	 * Set the composite that is showing the page.
-	 * @param pageContainer Composite
-	 * 
-	 * @since 3.1
-	 */
-	protected void setPageContainer(Composite pageContainer) {
-		this.pageContainer = pageContainer;
-	}
-	/**
-	 * Create the page control for the supplied page.
-	 * 
-	 * @param page - the preference page to be shown
-	 * @param parent - the composite to parent the page
-	 * 
-	 * @since 3.1
-	 */
-	protected void createPageControl(IPreferencePage page, Composite parent) {
-		page.createControl(parent);
-	}
-	
-	/**
-	 * @see org.eclipse.jface.dialogs.IPageChangeProvider#getSelectedPage()
-	 * 
-	 * @since 3.1
-	 */
-	public Object getSelectedPage() {
-			return getCurrentPage();
-		}
-	
-	/**
-	 * @see org.eclipse.jface.dialogs.IPageChangeProvider#addPageChangedListener(org.eclipse.jface.dialogs.IPageChangedListener)
-	 * @since 3.1
-	 */
-	public void addPageChangedListener(IPageChangedListener listener) {
-		pageChangedListeners.add(listener);
-	}
-	
-	/**
-	 * @see org.eclipse.jface.dialogs.IPageChangeProvider#removePageChangedListener(org.eclipse.jface.dialogs.IPageChangedListener)
-	 * @since 3.1
-	 */
-	public void removePageChangedListener(IPageChangedListener listener) {
-		pageChangedListeners.remove(listener);
-		
-	}
-
-	/**
-     * Notifies any selection changed listeners that the selected page
-     * has changed.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param event a selection changed event
-     *
-     * @see IPageChangedListener#pageChanged
-     * 
-     * @since 3.1
-     */
-    protected void firePageChanged(final PageChangedEvent event) {
-        Object[] listeners = pageChangedListeners.getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            final IPageChangedListener l = (IPageChangedListener) listeners[i];
-            SafeRunnable.run(new SafeRunnable() {
-                public void run() {
-                    l.pageChanged(event);
-                }
-            });
-        }
-    }	
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceLabelProvider.java
deleted file mode 100644
index e20b0bc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceLabelProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Provides labels for <code>IPreferenceNode</code> objects.
- * 
- * @since 3.0
- */
-public class PreferenceLabelProvider extends LabelProvider {
-
-    /**
-     * @param element must be an instance of <code>IPreferenceNode</code>.
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        return ((IPreferenceNode) element).getLabelText();
-    }
-
-    /**
-     * @param element must be an instance of <code>IPreferenceNode</code>.
-     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-     */
-    public Image getImage(Object element) {
-        return ((IPreferenceNode) element).getLabelImage();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceManager.java
deleted file mode 100644
index 4b809b1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceManager.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A preference manager maintains a hierarchy of preference nodes and
- * associated preference pages.
- */
-public class PreferenceManager {
-    /**
-     * Pre-order traversal means visit the root first,
-     * then the children.
-     */
-    public static final int PRE_ORDER = 0;
-
-    /**
-     * Post-order means visit the children, and then the root.
-     */
-    public static final int POST_ORDER = 1;
-    
-    /**
-     * The id of the root node.
-     */
-    private final static String ROOT_NODE_ID = ""; //$NON-NLS-1$
-
-    /**
-     * The root node.
-     * Note that the root node is a special internal node
-     * that is used to collect together all the nodes that
-     * have no parent; it is not given out to clients.
-     */
-    PreferenceNode root;
-
-    /**
-     * The path separator character.
-     */
-    String separator;
-
-    /**
-     * Creates a new preference manager.
-     */
-    public PreferenceManager() {
-        this('.', new PreferenceNode(ROOT_NODE_ID));
-    }
-    
-    /**
-     * Creates a new preference manager with the given
-     * path separator.
-     * 
-     * @param separatorChar
-     */
-    public PreferenceManager(final char separatorChar) { 
-    	this(separatorChar, new PreferenceNode(ROOT_NODE_ID));
-    }
-
-    /**
-     * Creates a new preference manager with the given
-     * path separator and root node.
-     *
-     * @param separatorChar the separator character
-     * @param rootNode the root node. 
-     *
-     * @since 3.4
-     */
-    public PreferenceManager(final char separatorChar, PreferenceNode rootNode) {
-        separator = new String(new char[] { separatorChar });
-        this.root = rootNode;
-    }
-
-    /**
-     * Adds the given preference node as a subnode of the
-     * node at the given path.
-     *
-     * @param path the path
-     * @param node the node to add
-     * @return <code>true</code> if the add was successful,
-     *  and <code>false</code> if there is no contribution at
-     *  the given path
-     */
-    public boolean addTo(String path, IPreferenceNode node) {
-        IPreferenceNode target = find(path);
-        if (target == null) {
-			return false;
-		}
-        target.add(node);
-        return true;
-    }
-
-    /**
-     * Adds the given preference node as a subnode of the
-     * root.
-     *
-     * @param node the node to add, which must implement 
-     *   <code>IPreferenceNode</code>
-     */
-    public void addToRoot(IPreferenceNode node) {
-        Assert.isNotNull(node);
-        root.add(node);
-    }
-
-    /**
-     * Recursively enumerates all nodes at or below the given node
-     * and adds them to the given list in the given order.
-     * 
-     * @param node the starting node
-     * @param sequence a read-write list of preference nodes
-     *  (element type: <code>IPreferenceNode</code>)
-     *  in the given order
-     * @param order the traversal order, one of 
-     *	<code>PRE_ORDER</code> and <code>POST_ORDER</code>
-     */
-    protected void buildSequence(IPreferenceNode node, List sequence, int order) {
-        if (order == PRE_ORDER) {
-			sequence.add(node);
-		}
-        IPreferenceNode[] subnodes = node.getSubNodes();
-        for (int i = 0; i < subnodes.length; i++) {
-            buildSequence(subnodes[i], sequence, order);
-        }
-        if (order == POST_ORDER) {
-			sequence.add(node);
-		}
-    }
-
-    /**
-     * Finds and returns the contribution node at the given path.
-     *
-     * @param path the path
-     * @return the node, or <code>null</code> if none
-     */
-    public IPreferenceNode find(String path) {
-       return find(path,root);
-    }
-    
-    /**
-     * Finds and returns the preference node directly
-     * below the top at the given path.
-     *
-     * @param path the path
-     * @param top top at the given path
-     * @return the node, or <code>null</code> if none
-     * 
-     * @since 3.1
-     */
-    protected IPreferenceNode find(String path,IPreferenceNode top){
-    	 Assert.isNotNull(path);
-         StringTokenizer stok = new StringTokenizer(path, separator);
-         IPreferenceNode node = top;
-         while (stok.hasMoreTokens()) {
-             String id = stok.nextToken();
-             node = node.findSubNode(id);
-             if (node == null) {
-				return null;
-			}
-         }
-         if (node == top) {
-			return null;
-		}
-         return node;
-    }
-
-    /**
-     * Returns all preference nodes managed by this
-     * manager.
-     *
-     * @param order the traversal order, one of 
-     *	<code>PRE_ORDER</code> and <code>POST_ORDER</code>
-     * @return a list of preference nodes
-     *  (element type: <code>IPreferenceNode</code>)
-     *  in the given order
-     */
-    public List getElements(int order) {
-        Assert.isTrue(order == PRE_ORDER || order == POST_ORDER,
-                "invalid traversal order");//$NON-NLS-1$
-        ArrayList sequence = new ArrayList();
-        IPreferenceNode[] subnodes = getRoot().getSubNodes();
-        for (int i = 0; i < subnodes.length; i++) {
-			buildSequence(subnodes[i], sequence, order);
-		}
-        return sequence;
-    }
-
-    /**
-     * Returns the root node.
-     * Note that the root node is a special internal node
-     * that is used to collect together all the nodes that
-     * have no parent; it is not given out to clients.
-     *
-     * @return the root node
-     */
-    protected IPreferenceNode getRoot() {
-        return root;
-    }
-
-	/**
-	 * Returns the root level nodes of this preference manager.
-	 * 
-	 * @return an array containing the root nodes
-	 * @since 3.2
-	 */
-	public final IPreferenceNode[] getRootSubNodes() {
-		return getRoot().getSubNodes();
-	}
-
-    /**
-	 * Removes the preference node at the given path.
-	 * 
-	 * @param path
-	 *            the path
-	 * @return the node that was removed, or <code>null</code> if there was no
-	 *         node at the given path
-	 */
-    public IPreferenceNode remove(String path) {
-        Assert.isNotNull(path);
-        int index = path.lastIndexOf(separator);
-        if (index == -1) {
-			return root.remove(path);
-		}
-        // Make sure that the last character in the string isn't the "."
-        Assert.isTrue(index < path.length() - 1, "Path can not end with a dot");//$NON-NLS-1$
-        String parentPath = path.substring(0, index);
-        String id = path.substring(index + 1);
-        IPreferenceNode parentNode = find(parentPath);
-        if (parentNode == null) {
-			return null;
-		}
-        return parentNode.remove(id);
-    }
-
-    /**
-     * Removes the given prefreence node if it is managed by
-     * this contribution manager.
-     *
-     * @param node the node to remove
-     * @return <code>true</code> if the node was removed,
-     *  and <code>false</code> otherwise
-     */
-    public boolean remove(IPreferenceNode node) {
-        Assert.isNotNull(node);
-
-        return root.remove(node);
-    }
-
-    /**
-     * Removes all contribution nodes known to this manager.
-     */
-    public void removeAll() {
-        root = new PreferenceNode("");//$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceNode.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceNode.java
deleted file mode 100644
index 5644cbd..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceNode.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A concrete implementation of a node in a preference dialog tree. This class
- * also supports lazy creation of the node's preference page.
- */
-public class PreferenceNode implements IPreferenceNode {
-    /**
-     * Preference page, or <code>null</code> if not yet loaded.
-     */
-    private IPreferencePage page;
-
-    /**
-     * The list of subnodes (immediate children) of this node (element type:
-     * <code>IPreferenceNode</code>).
-     */
-    private List subNodes;
-
-    /**
-     * Name of a class that implements <code>IPreferencePage</code>, or
-     * <code>null</code> if none.
-     */
-    private String classname;
-
-    /**
-     * The id of this node.
-     */
-    private String id;
-
-    /**
-     * Text label for this node. Note that this field is only used prior to the
-     * creation of the preference page.
-     */
-    private String label;
-
-    /**
-     * Image descriptor for this node, or <code>null</code> if none.
-     */
-    private ImageDescriptor imageDescriptor;
-
-    /**
-     * Cached image, or <code>null</code> if none.
-     */
-    private Image image;
-
-    /**
-     * Creates a new preference node with the given id. The new node has no
-     * subnodes.
-     * 
-     * @param id
-     *            the node id
-     */
-    public PreferenceNode(String id) {
-        Assert.isNotNull(id);
-        this.id = id;
-    }
-
-    /**
-     * Creates a preference node with the given id, label, and image, and
-     * lazily-loaded preference page. The preference node assumes (sole)
-     * responsibility for disposing of the image; this will happen when the node
-     * is disposed.
-     * 
-     * @param id
-     *            the node id
-     * @param label
-     *            the label used to display the node in the preference dialog's
-     *            tree
-     * @param image
-     *            the image displayed left of the label in the preference
-     *            dialog's tree, or <code>null</code> if none
-     * @param className
-     *            the class name of the preference page; this class must
-     *            implement <code>IPreferencePage</code>
-     */
-    public PreferenceNode(String id, String label, ImageDescriptor image,
-            String className) {
-        this(id);
-        this.imageDescriptor = image;
-        Assert.isNotNull(label);
-        this.label = label;
-        this.classname = className;
-    }
-
-    /**
-     * Creates a preference node with the given id and preference page. The
-     * title of the preference page is used for the node label. The node will
-     * not have an image.
-     * 
-     * @param id
-     *            the node id
-     * @param preferencePage
-     *            the preference page
-     */
-    public PreferenceNode(String id, IPreferencePage preferencePage) {
-        this(id);
-        Assert.isNotNull(preferencePage);
-        page = preferencePage;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public void add(IPreferenceNode node) {
-        if (subNodes == null) {
-			subNodes = new ArrayList();
-		}
-        subNodes.add(node);
-    }
-
-    /**
-     * Creates a new instance of the given class <code>className</code>.
-     * 
-     * @param className
-     * @return new Object or <code>null</code> in case of failures.
-     */
-    private Object createObject(String className) {
-        Assert.isNotNull(className);
-        try {
-            Class cl = Class.forName(className);
-            if (cl != null) {
-				return cl.newInstance();
-			}
-        } catch (ClassNotFoundException e) {
-            return null;
-        } catch (InstantiationException e) {
-            return null;
-        } catch (IllegalAccessException e) {
-            return null;
-        } catch (NoSuchMethodError e) {
-            return null;
-        }
-        return null;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public void createPage() {
-        page = (IPreferencePage) createObject(classname);
-        if (getLabelImage() != null) {
-			page.setImageDescriptor(imageDescriptor);
-		}
-        page.setTitle(label);
-    }
-
-    /**
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public void disposeResources() {
-        if (image != null) {
-            image.dispose();
-            image = null;
-        }
-        if (page != null) {
-            page.dispose();
-            page = null;
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IContributionNode.
-     */
-    public IPreferenceNode findSubNode(String id) {
-        Assert.isNotNull(id);
-        Assert.isTrue(id.length() > 0);
-        if (subNodes == null) {
-			return null;
-		}
-        int size = subNodes.size();
-        for (int i = 0; i < size; i++) {
-            IPreferenceNode node = (IPreferenceNode) subNodes.get(i);
-            if (id.equals(node.getId())) {
-				return node;
-			}
-        }
-        return null;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public String getId() {
-        return this.id;
-    }
-
-    /**
-     * Returns the image descriptor for this node.
-     * 
-     * @return the image descriptor
-     */
-    protected ImageDescriptor getImageDescriptor() {
-        return imageDescriptor;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public Image getLabelImage() {
-        if (image == null && imageDescriptor != null) {
-            image = imageDescriptor.createImage();
-        }
-        return image;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public String getLabelText() {
-        if (page != null) {
-			return page.getTitle();
-		}
-        return label;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public IPreferencePage getPage() {
-        return page;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public IPreferenceNode[] getSubNodes() {
-        if (subNodes == null) {
-			return new IPreferenceNode[0];
-		}
-        return (IPreferenceNode[]) subNodes
-                .toArray(new IPreferenceNode[subNodes.size()]);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public IPreferenceNode remove(String id) {
-        IPreferenceNode node = findSubNode(id);
-        if (node != null) {
-			remove(node);
-		}
-        return node;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPreferenceNode.
-     */
-    public boolean remove(IPreferenceNode node) {
-        if (subNodes == null) {
-			return false;
-		}
-        return subNodes.remove(node);
-    }
-
-    /**
-     * Set the current page to be newPage.
-     * 
-     * @param newPage
-     */
-    public void setPage(IPreferencePage newPage) {
-        page = newPage;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferencePage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferencePage.java
deleted file mode 100644
index 9ae4348..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferencePage.java
+++ /dev/null
@@ -1,663 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * 	   Sebastian Davids <sdavids@gmx.de> - Fix for bug 38729 - [Preferences]
- * 			 NPE PreferencePage isValid.
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.DialogPage;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogPage;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-
-/**
- * Abstract base implementation for all preference page implementations.
- * <p>
- * Subclasses must implement the <code>createControl</code> framework
- * method to supply the page's main control.
- * </p>
- * <p>
- * Subclasses should extend the <code>doComputeSize</code> framework
- * method to compute the size of the page's control.
- * </p>
- * <p>
- * Subclasses may override the <code>performOk</code>, <code>performApply</code>, 
- * <code>performDefaults</code>, <code>performCancel</code>, and <code>performHelp</code>
- * framework methods to react to the standard button events.
- * </p>
- * <p>
- * Subclasses may call the <code>noDefaultAndApplyButton</code> framework
- * method before the page's control has been created to suppress
- * the standard Apply and Defaults buttons.
- * </p>
- */
-public abstract class PreferencePage extends DialogPage implements
-        IPreferencePage {
-
-    /**
-     * Preference store, or <code>null</code>.
-     */
-    private IPreferenceStore preferenceStore;
-
-    /**
-     * Valid state for this page; <code>true</code> by default.
-     *
-     * @see #isValid
-     */
-    private boolean isValid = true;
-
-    /**
-     * Body of page.
-     */
-    private Control body;
-
-    /**
-     * Whether this page has the standard Apply and Defaults buttons; 
-     * <code>true</code> by default.
-     *
-     * @see #noDefaultAndApplyButton
-     */
-    private boolean createDefaultAndApplyButton = true;
-
-    /**
-     * Standard Defaults button, or <code>null</code> if none.
-     * This button has id <code>DEFAULTS_ID</code>.
-     */
-    private Button defaultsButton = null;
-
-    /**
-     * The container this preference page belongs to; <code>null</code>
-     * if none.
-     */
-    private IPreferencePageContainer container = null;
-
-    /**
-     * Standard Apply button, or <code>null</code> if none.
-     * This button has id <code>APPLY_ID</code>.
-     */
-    private Button applyButton = null;
-
-    /**
-     * Description label.
-     * 
-     * @see #createDescriptionLabel(Composite)
-     */
-    private Label descriptionLabel;
-
-    /**
-     * Caches size of page.
-     */
-    private Point size = null;
-
-   
-    /**
-     * Creates a new preference page with an empty title and no image.
-     */
-    protected PreferencePage() {
-        this(""); //$NON-NLS-1$
-    }
-
-    /**
-     * Creates a new preference page with the given title and no image.
-     *
-     * @param title the title of this preference page
-     */
-    protected PreferencePage(String title) {
-        super(title);
-    }
-
-    /**
-     * Creates a new abstract preference page with the given title and image.
-     *
-     * @param title the title of this preference page
-     * @param image the image for this preference page,
-     *  or <code>null</code> if none
-     */
-    protected PreferencePage(String title, ImageDescriptor image) {
-        super(title, image);
-    }
-
-    /**
-     * Computes the size for this page's UI control.
-     * <p>
-     * The default implementation of this <code>IPreferencePage</code>
-     * method returns the size set by <code>setSize</code>; if no size
-     * has been set, but the page has a UI control, the framework
-     * method <code>doComputeSize</code> is called to compute the size.
-     * </p>
-     *
-     * @return the size of the preference page encoded as
-     *   <code>new Point(width,height)</code>, or 
-     *   <code>(0,0)</code> if the page doesn't currently have any UI component
-     */
-    public Point computeSize() {
-        if (size != null) {
-			return size;
-		}
-        Control control = getControl();
-        if (control != null) {
-            size = doComputeSize();
-            return size;
-        }
-        return new Point(0, 0);
-    }
-
-    /**
-     * Contributes additional buttons to the given composite.
-     * <p>
-     * The default implementation of this framework hook method does
-     * nothing. Subclasses should override this method to contribute buttons 
-     * to this page's button bar. For each button a subclass contributes,
-     * it must also increase the parent's grid layout number of columns
-     * by one; that is,
-     * <pre>
-     * ((GridLayout) parent.getLayout()).numColumns++);
-     * </pre>
-     * </p>
-     *
-     * @param parent the button bar
-     */
-    protected void contributeButtons(Composite parent) {
-    }
-
-    /**
-     * Creates and returns the SWT control for the customized body 
-     * of this preference page under the given parent composite.
-     * <p>
-     * This framework method must be implemented by concrete subclasses. Any
-     * subclass returning a <code>Composite</code> object whose <code>Layout</code>
-     * has default margins (for example, a <code>GridLayout</code>) are expected to
-     * set the margins of this <code>Layout</code> to 0 pixels. 
-     * </p>
-     *
-     * @param parent the parent composite
-     * @return the new control
-     */
-    protected abstract Control createContents(Composite parent);
-
-    /**
-     * The <code>PreferencePage</code> implementation of this 
-     * <code>IDialogPage</code> method creates a description label
-     * and button bar for the page. It calls <code>createContents</code>
-     * to create the custom contents of the page.
-     * <p>
-     * If a subclass that overrides this method creates a <code>Composite</code>
-     * that has a layout with default margins (for example, a <code>GridLayout</code>)
-     * it is expected to set the margins of this <code>Layout</code> to 0 pixels.
-     * @see IDialogPage#createControl(Composite)
-     */
-    public void createControl(Composite parent){
-
-        GridData gd;
-        Composite content = new Composite(parent, SWT.NONE);
-        setControl(content);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        content.setLayout(layout);
-        //Apply the font on creation for backward compatibility
-        applyDialogFont(content);
-
-        // initialize the dialog units
-        initializeDialogUnits(content);
-
-        descriptionLabel = createDescriptionLabel(content);
-        if (descriptionLabel != null) {
-            descriptionLabel.setLayoutData(new GridData(
-                    GridData.FILL_HORIZONTAL));
-        }
-
-        body = createContents(content);
-        if (body != null) {
-			// null is not a valid return value but support graceful failure
-            body.setLayoutData(new GridData(GridData.FILL_BOTH));
-		}
-
-        Composite buttonBar = new Composite(content, SWT.NONE);
-        layout = new GridLayout();
-        layout.numColumns = 0;
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        layout.makeColumnsEqualWidth = false;
-        buttonBar.setLayout(layout);
-        
-        gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
-        
-        buttonBar.setLayoutData(gd);
-
-        contributeButtons(buttonBar);
-        
-        if (createDefaultAndApplyButton) {
-            layout.numColumns = layout.numColumns + 2;
-			String[] labels = JFaceResources.getStrings(new String[] {
-					"defaults", "apply" }); //$NON-NLS-2$//$NON-NLS-1$
-			int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-			defaultsButton = new Button(buttonBar, SWT.PUSH);
-			defaultsButton.setText(labels[0]);
-			Dialog.applyDialogFont(defaultsButton);
-			GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-			Point minButtonSize = defaultsButton.computeSize(SWT.DEFAULT,
-					SWT.DEFAULT, true);
-			data.widthHint = Math.max(widthHint, minButtonSize.x);
-			defaultsButton.setLayoutData(data);
-			defaultsButton.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent e) {
-					performDefaults();
-				}
-			});
-
-            applyButton = new Button(buttonBar, SWT.PUSH);
-			applyButton.setText(labels[1]);
-			Dialog.applyDialogFont(applyButton);
-			data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-			minButtonSize = applyButton.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-					true);
-			data.widthHint = Math.max(widthHint, minButtonSize.x);
-			applyButton.setLayoutData(data);
-			applyButton.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent e) {
-					performApply();
-				}
-			});
-            applyButton.setEnabled(isValid());
-            applyDialogFont(buttonBar);
-        } else {
-            /* Check if there are any other buttons on the button bar.
-             * If not, throw away the button bar composite.  Otherwise
-             * there is an unusually large button bar.
-             */
-            if (buttonBar.getChildren().length < 1) {
-				buttonBar.dispose();
-			}
-        }
-    }
-
-	
-
-	/**
-     * Apply the dialog font to the composite and it's children
-     * if it is set. Subclasses may override if they wish to
-     * set the font themselves.
-     * @param composite
-     */
-    protected void applyDialogFont(Composite composite) {
-        Dialog.applyDialogFont(composite);
-    }
-
-    /**
-     * Creates and returns an SWT label under the given composite.
-     *
-     * @param parent the parent composite
-     * @return the new label
-     */
-    protected Label createDescriptionLabel(Composite parent) {
-        Label result = null;
-        String description = getDescription();
-        if (description != null) {
-            result = new Label(parent, SWT.WRAP);
-            result.setFont(parent.getFont());
-            result.setText(description);
-        }
-        return result;
-    }
-
-    /**
-     * Computes the size needed by this page's UI control.
-     * <p>
-     * All pages should override this method and set the appropriate sizes
-     * of their widgets, and then call <code>super.doComputeSize</code>.
-     * </p>
-     *
-     * @return the size of the preference page encoded as
-     *   <code>new Point(width,height)</code>
-     */
-    protected Point doComputeSize() {
-        if (descriptionLabel != null && body != null) {
-            Point bodySize = body.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-            GridData gd = (GridData) descriptionLabel.getLayoutData();
-            gd.widthHint = bodySize.x;
-        }
-        return getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-    }
-
-    /**
-     * Returns the preference store of this preference page.
-     * <p>
-     * This is a framework hook method for subclasses to return a
-     * page-specific preference store. The default implementation
-     * returns <code>null</code>.
-     * </p>
-     *
-     * @return the preference store, or <code>null</code> if none
-     */
-    protected IPreferenceStore doGetPreferenceStore() {
-        return null;
-    }
-
-    /**
-     * Returns the container of this page.
-     *
-     * @return the preference page container, or <code>null</code> if this
-     *   page has yet to be added to a container
-     */
-    public IPreferencePageContainer getContainer() {
-        return container;
-    }
-
-    /**
-     * Returns the preference store of this preference page.
-     *
-     * @return the preference store , or <code>null</code> if none
-     */
-    public IPreferenceStore getPreferenceStore() {
-        if (preferenceStore == null) {
-			preferenceStore = doGetPreferenceStore();
-		}
-        if (preferenceStore != null) {
-			return preferenceStore;
-		} else if (container != null) {
-			return container.getPreferenceStore();
-		}
-        return null;
-    }
-
-    /**	
-     * The preference page implementation of an <code>IPreferencePage</code>
-     * method returns whether this preference page is valid. Preference
-     * pages are considered valid by default; call <code>setValid(false)</code>
-     * to make a page invalid.
-     * @see IPreferencePage#isValid()
-     */
-    public boolean isValid() {
-        return isValid;
-    }
-
-    /**
-     * Suppresses creation of the standard Default and Apply buttons
-     * for this page.
-     * <p>
-     * Subclasses wishing a preference page without these buttons
-     * should call this framework method before the page's control
-     * has been created.
-     * </p>
-     */
-    protected void noDefaultAndApplyButton() {
-        createDefaultAndApplyButton = false;
-    }
-
-    /**
-     * The <code>PreferencePage</code> implementation of this 
-     * <code>IPreferencePage</code> method returns <code>true</code>
-     * if the page is valid.
-     * @see IPreferencePage#okToLeave()
-     */
-    public boolean okToLeave() {
-        return isValid();
-    }
-
-    /**
-     * Performs special processing when this page's Apply button has been pressed.
-     * <p>
-     * This is a framework hook method for sublcasses to do special things when
-     * the Apply button has been pressed.
-     * The default implementation of this framework method simply calls
-     * <code>performOk</code> to simulate the pressing of the page's OK button.
-     * </p>
-     * 
-     * @see #performOk
-     */
-    protected void performApply() {
-        performOk();
-    }
-
-    /**	
-     * The preference page implementation of an <code>IPreferencePage</code>
-     * method performs special processing when this page's Cancel button has
-     * been pressed.
-     * <p>
-     * This is a framework hook method for subclasses to do special things when
-     * the Cancel button has been pressed. The default implementation of this
-     * framework method does nothing and returns <code>true</code>.
-     * @see IPreferencePage#performCancel()
-     */
-    public boolean performCancel() {
-        return true;
-    }
-
-    /**
-     * Performs special processing when this page's Defaults button has been pressed.
-     * <p>
-     * This is a framework hook method for subclasses to do special things when
-     * the Defaults button has been pressed.
-     * Subclasses may override, but should call <code>super.performDefaults</code>.
-     * </p>
-     */
-    protected void performDefaults() {
-        updateApplyButton();
-    }
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.IPreferencePage#performOk()
-     */
-    public boolean performOk() {
-        return true;
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.IPreferencePage#setContainer(org.eclipse.jface.preference.IPreferencePageContainer)
-     */
-    public void setContainer(IPreferencePageContainer container) {
-        this.container = container;
-    }
-
-    /**
-     * Sets the preference store for this preference page.
-     * <p>
-     * If preferenceStore is set to null, getPreferenceStore
-     * will invoke doGetPreferenceStore the next time it is called.
-     * </p>
-     *
-     * @param store the preference store, or <code>null</code>
-     * @see #getPreferenceStore
-     */
-    public void setPreferenceStore(IPreferenceStore store) {
-        preferenceStore = store;
-    }
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.IPreferencePage#setSize(org.eclipse.swt.graphics.Point)
-     */
-    public void setSize(Point uiSize) {
-        Control control = getControl();
-        if (control != null) {
-            control.setSize(uiSize);
-            size = uiSize;
-        }
-    }
-
-    /**
-     * The <code>PreferencePage</code> implementation of this <code>IDialogPage</code>
-     * method extends the <code>DialogPage</code> implementation to update
-     * the preference page container title. Subclasses may extend.
-     * @see IDialogPage#setTitle(String)
-     */
-    public void setTitle(String title) {
-        super.setTitle(title);
-        if (getContainer() != null) {
-			getContainer().updateTitle();
-		}
-    }
-
-    /**
-     * Sets whether this page is valid.
-     * The enable state of the container buttons and the
-     * apply button is updated when a page's valid state 
-     * changes.
-     * <p>
-     *
-     * @param b the new valid state
-     */
-    public void setValid(boolean b) {
-        boolean oldValue = isValid;
-        isValid = b;
-        if (oldValue != isValid) {
-            // update container state
-            if (getContainer() != null) {
-				getContainer().updateButtons();
-			}
-            // update page state
-            updateApplyButton();
-        }
-    }
-
-   
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getTitle();
-    }
-
-    /**
-     * Updates the enabled state of the Apply button to reflect whether 
-     * this page is valid.
-     */
-    protected void updateApplyButton() {
-        if (applyButton != null) {
-			applyButton.setEnabled(isValid());
-		}
-    }
-
-    /**
-     * Creates a composite with a highlighted Note entry and a message text.
-     * This is designed to take up the full width of the page.
-     * 
-     * @param font the font to use
-     * @param composite the parent composite
-     * @param title the title of the note
-     * @param message the message for the note
-     * @return the composite for the note
-     */
-    protected Composite createNoteComposite(Font font, Composite composite,
-            String title, String message) {
-        Composite messageComposite = new Composite(composite, SWT.NONE);
-        GridLayout messageLayout = new GridLayout();
-        messageLayout.numColumns = 2;
-        messageLayout.marginWidth = 0;
-        messageLayout.marginHeight = 0;
-        messageComposite.setLayout(messageLayout);
-        messageComposite.setLayoutData(new GridData(
-                GridData.HORIZONTAL_ALIGN_FILL));
-        messageComposite.setFont(font);
-
-        final Label noteLabel = new Label(messageComposite, SWT.BOLD);
-        noteLabel.setText(title);
-        noteLabel.setFont(JFaceResources.getFontRegistry().getBold(
-				JFaceResources.DEFAULT_FONT));	
-        noteLabel
-                .setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
-
-        final IPropertyChangeListener fontListener = new IPropertyChangeListener() {
-            public void propertyChange(PropertyChangeEvent event) {
-                if (JFaceResources.BANNER_FONT.equals(event.getProperty())) {
-                    noteLabel.setFont(JFaceResources
-                            .getFont(JFaceResources.BANNER_FONT));
-                }
-            }
-        };
-        JFaceResources.getFontRegistry().addListener(fontListener);
-        noteLabel.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent event) {
-                JFaceResources.getFontRegistry().removeListener(fontListener);
-            }
-        });
-
-        Label messageLabel = new Label(messageComposite, SWT.WRAP);
-        messageLabel.setText(message);
-        messageLabel.setFont(font);
-        return messageComposite;
-    }
-
-    /**
-     * Returns the Apply button.
-     * 
-     * @return the Apply button
-     */
-    protected Button getApplyButton() {
-        return applyButton;
-    }
-
-    /**
-     * Returns the Restore Defaults button.
-     * 
-     * @return the Restore Defaults button
-     */
-    protected Button getDefaultsButton() {
-        return defaultsButton;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.IDialogPage#performHelp()
-     */
-    public void performHelp() {
-        getControl().notifyListeners(SWT.Help, new Event());
-    }
-
-	/**
-	 * Apply the data to the receiver. By default do nothing.
-	 * @param data
-	 * @since 3.1
-	 */
-	public void applyData(Object data) {
-		
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.DialogPage#setErrorMessage(java.lang.String)
-	 */
-	public void setErrorMessage(String newMessage) {
-		super.setErrorMessage(newMessage);
-		if (getContainer() != null) {
-			getContainer().updateMessage();
-		}
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.DialogPage#setMessage(java.lang.String, int)
-	 */
-	public void setMessage(String newMessage, int newType) {
-		super.setMessage(newMessage, newType);
-		if (getContainer() != null) {
-			getContainer().updateMessage();
-		}
-	}	
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceStore.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceStore.java
deleted file mode 100644
index 29259ba..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceStore.java
+++ /dev/null
@@ -1,712 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Properties;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-
-/**
- * A concrete preference store implementation based on an internal
- * <code>java.util.Properties</code> object, with support for persisting the
- * non-default preference values to files or streams.
- * <p>
- * This class was not designed to be subclassed.
- * </p>
- * 
- * @see IPreferenceStore
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PreferenceStore extends EventManager implements
-		IPersistentPreferenceStore {
-
-	/**
-	 * The mapping from preference name to preference value (represented as
-	 * strings).
-	 */
-	private Properties properties;
-
-	/**
-	 * The mapping from preference name to default preference value (represented
-	 * as strings); <code>null</code> if none.
-	 */
-	private Properties defaultProperties;
-
-	/**
-	 * Indicates whether a value as been changed by <code>setToDefault</code>
-	 * or <code>setValue</code>; initially <code>false</code>.
-	 */
-	private boolean dirty = false;
-
-	/**
-	 * The file name used by the <code>load</code> method to load a property
-	 * file. This filename is used to save the properties file when
-	 * <code>save</code> is called.
-	 */
-	private String filename;
-
-	/**
-	 * Creates an empty preference store.
-	 * <p>
-	 * Use the methods <code>load(InputStream)</code> and
-	 * <code>save(InputStream)</code> to load and store this preference store.
-	 * </p>
-	 * 
-	 * @see #load(InputStream)
-	 * @see #save(OutputStream, String)
-	 */
-	public PreferenceStore() {
-		defaultProperties = new Properties();
-		properties = new Properties(defaultProperties);
-	}
-
-	/**
-	 * Creates an empty preference store that loads from and saves to the a
-	 * file.
-	 * <p>
-	 * Use the methods <code>load()</code> and <code>save()</code> to load
-	 * and store this preference store.
-	 * </p>
-	 * 
-	 * @param filename
-	 *            the file name
-	 * @see #load()
-	 * @see #save()
-	 */
-	public PreferenceStore(String filename) {
-		this();
-		Assert.isNotNull(filename);
-		this.filename = filename;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		addListenerObject(listener);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public boolean contains(String name) {
-		return (properties.containsKey(name) || defaultProperties
-				.containsKey(name));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void firePropertyChangeEvent(String name, Object oldValue,
-			Object newValue) {
-		final Object[] finalListeners = getListeners();
-		// Do we need to fire an event.
-		if (finalListeners.length > 0
-				&& (oldValue == null || !oldValue.equals(newValue))) {
-			final PropertyChangeEvent pe = new PropertyChangeEvent(this, name,
-					oldValue, newValue);
-			for (int i = 0; i < finalListeners.length; ++i) {
-				final IPropertyChangeListener l = (IPropertyChangeListener) finalListeners[i];
-				SafeRunnable.run(new SafeRunnable(JFaceResources
-						.getString("PreferenceStore.changeError")) { //$NON-NLS-1$
-							public void run() {
-								l.propertyChange(pe);
-							}
-						});
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public boolean getBoolean(String name) {
-		return getBoolean(properties, name);
-	}
-
-	/**
-	 * Helper function: gets boolean for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @return boolean
-	 */
-	private boolean getBoolean(Properties p, String name) {
-		String value = p != null ? p.getProperty(name) : null;
-		if (value == null) {
-			return BOOLEAN_DEFAULT_DEFAULT;
-		}
-		if (value.equals(IPreferenceStore.TRUE)) {
-			return true;
-		}
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public boolean getDefaultBoolean(String name) {
-		return getBoolean(defaultProperties, name);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public double getDefaultDouble(String name) {
-		return getDouble(defaultProperties, name);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public float getDefaultFloat(String name) {
-		return getFloat(defaultProperties, name);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public int getDefaultInt(String name) {
-		return getInt(defaultProperties, name);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public long getDefaultLong(String name) {
-		return getLong(defaultProperties, name);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public String getDefaultString(String name) {
-		return getString(defaultProperties, name);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public double getDouble(String name) {
-		return getDouble(properties, name);
-	}
-
-	/**
-	 * Helper function: gets double for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @return double
-	 */
-	private double getDouble(Properties p, String name) {
-		String value = p != null ? p.getProperty(name) : null;
-		if (value == null) {
-			return DOUBLE_DEFAULT_DEFAULT;
-		}
-		double ival = DOUBLE_DEFAULT_DEFAULT;
-		try {
-			ival = new Double(value).doubleValue();
-		} catch (NumberFormatException e) {
-		}
-		return ival;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public float getFloat(String name) {
-		return getFloat(properties, name);
-	}
-
-	/**
-	 * Helper function: gets float for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @return float
-	 */
-	private float getFloat(Properties p, String name) {
-		String value = p != null ? p.getProperty(name) : null;
-		if (value == null) {
-			return FLOAT_DEFAULT_DEFAULT;
-		}
-		float ival = FLOAT_DEFAULT_DEFAULT;
-		try {
-			ival = new Float(value).floatValue();
-		} catch (NumberFormatException e) {
-		}
-		return ival;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public int getInt(String name) {
-		return getInt(properties, name);
-	}
-
-	/**
-	 * Helper function: gets int for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @return int
-	 */
-	private int getInt(Properties p, String name) {
-		String value = p != null ? p.getProperty(name) : null;
-		if (value == null) {
-			return INT_DEFAULT_DEFAULT;
-		}
-		int ival = 0;
-		try {
-			ival = Integer.parseInt(value);
-		} catch (NumberFormatException e) {
-		}
-		return ival;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public long getLong(String name) {
-		return getLong(properties, name);
-	}
-
-	/**
-	 * Helper function: gets long for a given name.
-	 * 
-	 * @param p
-	 *            the properties storage (may be <code>null</code>)
-	 * @param name
-	 *            the name of the property
-	 * @return the long or a default value of if:
-	 *         <ul>
-	 *         <li>properties storage is <code>null</code></li>
-	 *         <li>property is not found</li>
-	 *         <li>property value is not a number</li>
-	 *         </ul>
-	 * @see IPreferenceStore#LONG_DEFAULT_DEFAULT
-	 */
-	private long getLong(Properties p, String name) {
-		String value = p != null ? p.getProperty(name) : null;
-		if (value == null) {
-			return LONG_DEFAULT_DEFAULT;
-		}
-		long ival = LONG_DEFAULT_DEFAULT;
-		try {
-			ival = Long.parseLong(value);
-		} catch (NumberFormatException e) {
-		}
-		return ival;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public String getString(String name) {
-		return getString(properties, name);
-	}
-
-	/**
-	 * Helper function: gets string for a given name.
-	 * 
-	 * @param p
-	 *            the properties storage (may be <code>null</code>)
-	 * @param name
-	 *            the name of the property
-	 * @return the value or a default value of if:
-	 *         <ul>
-	 *         <li>properties storage is <code>null</code></li>
-	 *         <li>property is not found</li>
-	 *         <li>property value is not a number</li>
-	 *         </ul>
-	 * @see IPreferenceStore#STRING_DEFAULT_DEFAULT
-	 */
-	private String getString(Properties p, String name) {
-		String value = p != null ? p.getProperty(name) : null;
-		if (value == null) {
-			return STRING_DEFAULT_DEFAULT;
-		}
-		return value;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public boolean isDefault(String name) {
-		return (!properties.containsKey(name) && defaultProperties
-				.containsKey(name));
-	}
-
-	/**
-	 * Prints the contents of this preference store to the given print stream.
-	 * 
-	 * @param out
-	 *            the print stream
-	 */
-	public void list(PrintStream out) {
-		properties.list(out);
-	}
-
-	/**
-	 * Prints the contents of this preference store to the given print writer.
-	 * 
-	 * @param out
-	 *            the print writer
-	 */
-	public void list(PrintWriter out) {
-		properties.list(out);
-	}
-
-	/**
-	 * Loads this preference store from the file established in the constructor
-	 * <code>PreferenceStore(java.lang.String)</code> (or by
-	 * <code>setFileName</code>). Default preference values are not affected.
-	 * 
-	 * @exception java.io.IOException
-	 *                if there is a problem loading this store
-	 */
-	public void load() throws IOException {
-		if (filename == null) {
-			throw new IOException("File name not specified");//$NON-NLS-1$
-		}
-		FileInputStream in = new FileInputStream(filename);
-		load(in);
-		in.close();
-	}
-
-	/**
-	 * Loads this preference store from the given input stream. Default
-	 * preference values are not affected.
-	 * 
-	 * @param in
-	 *            the input stream
-	 * @exception java.io.IOException
-	 *                if there is a problem loading this store
-	 */
-	public void load(InputStream in) throws IOException {
-		properties.load(in);
-		dirty = false;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public boolean needsSaving() {
-		return dirty;
-	}
-
-	/**
-	 * Returns an enumeration of all preferences known to this store which have
-	 * current values other than their default value.
-	 * 
-	 * @return an array of preference names
-	 */
-	public String[] preferenceNames() {
-		ArrayList list = new ArrayList();
-		Enumeration it = properties.propertyNames();
-		while (it.hasMoreElements()) {
-			list.add(it.nextElement());
-		}
-		return (String[]) list.toArray(new String[list.size()]);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void putValue(String name, String value) {
-		String oldValue = getString(name);
-		if (oldValue == null || !oldValue.equals(value)) {
-			setValue(properties, name, value);
-			dirty = true;
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		removeListenerObject(listener);
-	}
-
-	/**
-	 * Saves the non-default-valued preferences known to this preference store
-	 * to the file from which they were originally loaded.
-	 * 
-	 * @exception java.io.IOException
-	 *                if there is a problem saving this store
-	 */
-	public void save() throws IOException {
-		if (filename == null) {
-			throw new IOException("File name not specified");//$NON-NLS-1$
-		}
-		FileOutputStream out = null;
-		try {
-			out = new FileOutputStream(filename);
-			save(out, null);
-		} finally {
-			if (out != null) {
-				out.close();
-			}
-		}
-	}
-
-	/**
-	 * Saves this preference store to the given output stream. The given string
-	 * is inserted as header information.
-	 * 
-	 * @param out
-	 *            the output stream
-	 * @param header
-	 *            the header
-	 * @exception java.io.IOException
-	 *                if there is a problem saving this store
-	 */
-	public void save(OutputStream out, String header) throws IOException {
-		properties.store(out, header);
-		dirty = false;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setDefault(String name, double value) {
-		setValue(defaultProperties, name, value);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setDefault(String name, float value) {
-		setValue(defaultProperties, name, value);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setDefault(String name, int value) {
-		setValue(defaultProperties, name, value);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setDefault(String name, long value) {
-		setValue(defaultProperties, name, value);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setDefault(String name, String value) {
-		setValue(defaultProperties, name, value);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setDefault(String name, boolean value) {
-		setValue(defaultProperties, name, value);
-	}
-
-	/**
-	 * Sets the name of the file used when loading and storing this preference
-	 * store.
-	 * <p>
-	 * Afterward, the methods <code>load()</code> and <code>save()</code>
-	 * can be used to load and store this preference store.
-	 * </p>
-	 * 
-	 * @param name
-	 *            the file name
-	 * @see #load()
-	 * @see #save()
-	 */
-	public void setFilename(String name) {
-		filename = name;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setToDefault(String name) {
-		Object oldValue = properties.get(name);
-		properties.remove(name);
-		dirty = true;
-		Object newValue = null;
-		if (defaultProperties != null) {
-			newValue = defaultProperties.get(name);
-		}
-		firePropertyChangeEvent(name, oldValue, newValue);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setValue(String name, double value) {
-		double oldValue = getDouble(name);
-		if (oldValue != value) {
-			setValue(properties, name, value);
-			dirty = true;
-			firePropertyChangeEvent(name, new Double(oldValue), new Double(
-					value));
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setValue(String name, float value) {
-		float oldValue = getFloat(name);
-		if (oldValue != value) {
-			setValue(properties, name, value);
-			dirty = true;
-			firePropertyChangeEvent(name, new Float(oldValue), new Float(value));
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setValue(String name, int value) {
-		int oldValue = getInt(name);
-		if (oldValue != value) {
-			setValue(properties, name, value);
-			dirty = true;
-			firePropertyChangeEvent(name, new Integer(oldValue), new Integer(
-					value));
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setValue(String name, long value) {
-		long oldValue = getLong(name);
-		if (oldValue != value) {
-			setValue(properties, name, value);
-			dirty = true;
-			firePropertyChangeEvent(name, new Long(oldValue), new Long(value));
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setValue(String name, String value) {
-		String oldValue = getString(name);
-		if (oldValue == null || !oldValue.equals(value)) {
-			setValue(properties, name, value);
-			dirty = true;
-			firePropertyChangeEvent(name, oldValue, value);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPreferenceStore.
-	 */
-	public void setValue(String name, boolean value) {
-		boolean oldValue = getBoolean(name);
-		if (oldValue != value) {
-			setValue(properties, name, value);
-			dirty = true;
-			firePropertyChangeEvent(name, oldValue ? Boolean.TRUE
-					: Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-
-	/**
-	 * Helper method: sets value for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @param value
-	 */
-	private void setValue(Properties p, String name, double value) {
-		Assert.isTrue(p != null);
-		p.put(name, Double.toString(value));
-	}
-
-	/**
-	 * Helper method: sets value for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @param value
-	 */
-	private void setValue(Properties p, String name, float value) {
-		Assert.isTrue(p != null);
-		p.put(name, Float.toString(value));
-	}
-
-	/**
-	 * Helper method: sets value for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @param value
-	 */
-	private void setValue(Properties p, String name, int value) {
-		Assert.isTrue(p != null);
-		p.put(name, Integer.toString(value));
-	}
-
-	/**
-	 * Helper method: sets the value for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @param value
-	 */
-	private void setValue(Properties p, String name, long value) {
-		Assert.isTrue(p != null);
-		p.put(name, Long.toString(value));
-	}
-
-	/**
-	 * Helper method: sets the value for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @param value
-	 */
-	private void setValue(Properties p, String name, String value) {
-		Assert.isTrue(p != null && value != null);
-		p.put(name, value);
-	}
-
-	/**
-	 * Helper method: sets the value for a given name.
-	 * 
-	 * @param p
-	 * @param name
-	 * @param value
-	 */
-	private void setValue(Properties p, String name, boolean value) {
-		Assert.isTrue(p != null);
-		p.put(name, value == true ? IPreferenceStore.TRUE
-				: IPreferenceStore.FALSE);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/RadioGroupFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/RadioGroupFieldEditor.java
deleted file mode 100644
index 826f0c4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/RadioGroupFieldEditor.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-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.Group;
-
-/**
- * A field editor for an enumeration type preference.
- * The choices are presented as a list of radio buttons.
- */
-public class RadioGroupFieldEditor extends FieldEditor {
-
-    /**
-     * List of radio button entries of the form [label,value].
-     */
-    private String[][] labelsAndValues;
-
-    /**
-     * Number of columns into which to arrange the radio buttons.
-     */
-    private int numColumns;
-
-    /**
-     * Indent used for the first column of the radion button matrix.
-     */
-    private int indent = HORIZONTAL_GAP;
-
-    /**
-     * The current value, or <code>null</code> if none.
-     */
-    private String value;
-
-    /**
-     * The box of radio buttons, or <code>null</code> if none
-     * (before creation and after disposal).
-     */
-    private Composite radioBox;
-
-    /**
-     * The radio buttons, or <code>null</code> if none
-     * (before creation and after disposal).
-     */
-    private Button[] radioButtons;
-
-    /**
-     * Whether to use a Group control.
-     */
-    private boolean useGroup;
-
-    /**
-     * Creates a new radio group field editor 
-     */
-    protected RadioGroupFieldEditor() {
-    }
-
-    /**
-     * Creates a radio group field editor.  
-     * This constructor does not use a <code>Group</code> to contain the radio buttons.
-     * It is equivalent to using the following constructor with <code>false</code>
-     * for the <code>useGroup</code> argument.
-     * <p>
-     * Example usage:
-     * <pre>
-     *		RadioGroupFieldEditor editor= new RadioGroupFieldEditor(
-     *			"GeneralPage.DoubleClick", resName, 1,
-     *			new String[][] {
-     *				{"Open Browser", "open"},
-     *				{"Expand Tree", "expand"}
-     *			},
-     *          parent);	
-     * </pre>
-     * </p>
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param numColumns the number of columns for the radio button presentation
-     * @param labelAndValues list of radio button [label, value] entries;
-     *  the value is returned when the radio button is selected
-     * @param parent the parent of the field editor's control
-     */
-    public RadioGroupFieldEditor(String name, String labelText, int numColumns,
-            String[][] labelAndValues, Composite parent) {
-        this(name, labelText, numColumns, labelAndValues, parent, false);
-    }
-
-    /**
-     * Creates a radio group field editor.
-     * <p>
-     * Example usage:
-     * <pre>
-     *		RadioGroupFieldEditor editor= new RadioGroupFieldEditor(
-     *			"GeneralPage.DoubleClick", resName, 1,
-     *			new String[][] {
-     *				{"Open Browser", "open"},
-     *				{"Expand Tree", "expand"}
-     *			},
-     *          parent,
-     *          true);	
-     * </pre>
-     * </p>
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param numColumns the number of columns for the radio button presentation
-     * @param labelAndValues list of radio button [label, value] entries;
-     *  the value is returned when the radio button is selected
-     * @param parent the parent of the field editor's control
-     * @param useGroup whether to use a Group control to contain the radio buttons
-     */
-    public RadioGroupFieldEditor(String name, String labelText, int numColumns,
-            String[][] labelAndValues, Composite parent, boolean useGroup) {
-        init(name, labelText);
-        Assert.isTrue(checkArray(labelAndValues));
-        this.labelsAndValues = labelAndValues;
-        this.numColumns = numColumns;
-        this.useGroup = useGroup;
-        createControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void adjustForNumColumns(int numColumns) {
-        Control control = getLabelControl();
-        if (control != null) {
-            ((GridData) control.getLayoutData()).horizontalSpan = numColumns;
-        }
-        ((GridData) radioBox.getLayoutData()).horizontalSpan = numColumns;
-    }
-
-    /**
-     * Checks whether given <code>String[][]</code> is of "type" 
-     * <code>String[][2]</code>.
-     * @param table
-     *
-     * @return <code>true</code> if it is ok, and <code>false</code> otherwise
-     */
-    private boolean checkArray(String[][] table) {
-        if (table == null) {
-			return false;
-		}
-        for (int i = 0; i < table.length; i++) {
-            String[] array = table[i];
-            if (array == null || array.length != 2) {
-				return false;
-			}
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        if (useGroup) {
-            Control control = getRadioBoxControl(parent);
-            GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-            control.setLayoutData(gd);
-        } else {
-            Control control = getLabelControl(parent);
-            GridData gd = new GridData();
-            gd.horizontalSpan = numColumns;
-            control.setLayoutData(gd);
-            control = getRadioBoxControl(parent);
-            gd = new GridData();
-            gd.horizontalSpan = numColumns;
-            gd.horizontalIndent = indent;
-            control.setLayoutData(gd);
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoad() {
-        updateValue(getPreferenceStore().getString(getPreferenceName()));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoadDefault() {
-        updateValue(getPreferenceStore().getDefaultString(getPreferenceName()));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doStore() {
-        if (value == null) {
-            getPreferenceStore().setToDefault(getPreferenceName());
-            return;
-        }
-
-        getPreferenceStore().setValue(getPreferenceName(), value);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public int getNumberOfControls() {
-        return 1;
-    }
-
-    /**
-     * Returns this field editor's radio group control.
-     * @param parent The parent to create the radioBox in
-     * @return the radio group control
-     */
-    public Composite getRadioBoxControl(Composite parent) {
-        if (radioBox == null) {
-
-            Font font = parent.getFont();
-
-            if (useGroup) {
-                Group group = new Group(parent, SWT.NONE);
-                group.setFont(font);
-                String text = getLabelText();
-                if (text != null) {
-					group.setText(text);
-				}
-                radioBox = group;
-                GridLayout layout = new GridLayout();
-                layout.horizontalSpacing = HORIZONTAL_GAP;
-                layout.numColumns = numColumns;
-                radioBox.setLayout(layout);
-            } else {
-                radioBox = new Composite(parent, SWT.NONE);
-                GridLayout layout = new GridLayout();
-                layout.marginWidth = 0;
-                layout.marginHeight = 0;
-                layout.horizontalSpacing = HORIZONTAL_GAP;
-                layout.numColumns = numColumns;
-                radioBox.setLayout(layout);
-                radioBox.setFont(font);
-            }
-
-            radioButtons = new Button[labelsAndValues.length];
-            for (int i = 0; i < labelsAndValues.length; i++) {
-                Button radio = new Button(radioBox, SWT.RADIO | SWT.LEFT);
-                radioButtons[i] = radio;
-                String[] labelAndValue = labelsAndValues[i];
-                radio.setText(labelAndValue[0]);
-                radio.setData(labelAndValue[1]);
-                radio.setFont(font);
-                radio.addSelectionListener(new SelectionAdapter() {
-                    public void widgetSelected(SelectionEvent event) {
-                        String oldValue = value;
-                        value = (String) event.widget.getData();
-                        setPresentsDefaultValue(false);
-                        fireValueChanged(VALUE, oldValue, value);
-                    }
-                });
-            }
-            radioBox.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    radioBox = null;
-                    radioButtons = null;
-                }
-            });
-        } else {
-            checkParent(radioBox, parent);
-        }
-        return radioBox;
-    }
-
-    /**
-     * Sets the indent used for the first column of the radion button matrix.
-     *
-     * @param indent the indent (in pixels)
-     */
-    public void setIndent(int indent) {
-        if (indent < 0) {
-			this.indent = 0;
-		} else {
-			this.indent = indent;
-		}
-    }
-
-    /**
-     * Select the radio button that conforms to the given value.
-     *
-     * @param selectedValue the selected value
-     */
-    private void updateValue(String selectedValue) {
-        this.value = selectedValue;
-        if (radioButtons == null) {
-			return;
-		}
-
-        if (this.value != null) {
-            boolean found = false;
-            for (int i = 0; i < radioButtons.length; i++) {
-                Button radio = radioButtons[i];
-                boolean selection = false;
-                if (((String) radio.getData()).equals(this.value)) {
-                    selection = true;
-                    found = true;
-                }
-                radio.setSelection(selection);
-            }
-            if (found) {
-				return;
-			}
-        }
-
-        // We weren't able to find the value. So we select the first
-        // radio button as a default.
-        if (radioButtons.length > 0) {
-            radioButtons[0].setSelection(true);
-            this.value = (String) radioButtons[0].getData();
-        }
-        return;
-    }
-
-    /*
-     * @see FieldEditor.setEnabled(boolean,Composite).
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        if (!useGroup) {
-			super.setEnabled(enabled, parent);
-		}
-        for (int i = 0; i < radioButtons.length; i++) {
-            radioButtons[i].setEnabled(enabled);
-        }
-
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ScaleFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ScaleFieldEditor.java
deleted file mode 100644
index 1a9269f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/ScaleFieldEditor.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Scale;
-
-/**
- * A field editor for an integer type preference. This class may be used as is,
- * or subclassed as required.
- * 
- * @since 3.0
- */
-public class ScaleFieldEditor extends FieldEditor {
-
-    /**
-     * Value that will feed Scale.setIncrement(int).
-     */
-    private int incrementValue;
-
-    /**
-     * Value that will feed Scale.setMaximum(int).
-     */
-    private int maxValue;
-
-    /**
-     * Value that will feed Scale.setMinimum(int).
-     */
-    private int minValue;
-
-    /**
-     * Old integer value.
-     */
-    private int oldValue;
-
-    /**
-     * Value that will feed Scale.setPageIncrement(int).
-     */
-    private int pageIncrementValue;
-
-    /**
-     * The scale, or <code>null</code> if none.
-     */
-    protected Scale scale;
-
-    /**
-     * Creates a scale field editor.
-     * 
-     * @param name
-     *            the name of the preference this field editor works on
-     * @param labelText
-     *            the label text of the field editor
-     * @param parent
-     *            the parent of the field editor's control
-     */
-    public ScaleFieldEditor(String name, String labelText, Composite parent) {
-        super(name, labelText, parent);
-        setDefaultValues();
-    }
-
-    /**
-     * Creates a scale field editor with particular scale values.
-     * 
-     * @param name
-     *            the name of the preference this field editor works on
-     * @param labelText
-     *            the label text of the field editor
-     * @param parent
-     *            the parent of the field editor's control
-     * @param min
-     *            the value used for Scale.setMinimum(int).
-     * @param max
-     *            the value used for Scale.setMaximum(int).
-     * @param increment
-     *            the value used for Scale.setIncrement(int).
-     * @param pageIncrement
-     *            the value used for Scale.setPageIncrement(int).
-     */
-    public ScaleFieldEditor(String name, String labelText, Composite parent,
-            int min, int max, int increment, int pageIncrement) {
-        super(name, labelText, parent);
-        setValues(min, max, increment, pageIncrement);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int)
-     */
-    protected void adjustForNumColumns(int numColumns) {
-        ((GridData) scale.getLayoutData()).horizontalSpan = numColumns - 1;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite,
-     *      int)
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        Control control = getLabelControl(parent);
-        GridData gd = new GridData();
-        control.setLayoutData(gd);
-
-        scale = getScaleControl(parent);
-        gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.verticalAlignment = GridData.FILL;
-        gd.horizontalSpan = numColumns - 1;
-        gd.grabExcessHorizontalSpace = true;
-        scale.setLayoutData(gd);
-        updateScale();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#doLoad()
-     */
-    protected void doLoad() {
-        if (scale != null) {
-            int value = getPreferenceStore().getInt(getPreferenceName());
-            scale.setSelection(value);
-            oldValue = value;
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault()
-     */
-    protected void doLoadDefault() {
-        if (scale != null) {
-            int value = getPreferenceStore().getDefaultInt(getPreferenceName());
-            scale.setSelection(value);
-        }
-        valueChanged();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#doStore()
-     */
-    protected void doStore() {
-        getPreferenceStore()
-                .setValue(getPreferenceName(), scale.getSelection());
-    }
-
-    /**
-     * Returns the value that will be used for Scale.setIncrement(int).
-     * 
-     * @return the value.
-     * @see org.eclipse.swt.widgets.Scale#setIncrement(int)
-     */
-    public int getIncrement() {
-        return incrementValue;
-    }
-
-    /**
-     * Returns the value that will be used for Scale.setMaximum(int).
-     * 
-     * @return the value.
-     * @see org.eclipse.swt.widgets.Scale#setMaximum(int)
-     */
-    public int getMaximum() {
-        return maxValue;
-    }
-
-    /**
-     * Returns the value that will be used for Scale.setMinimum(int).
-     * 
-     * @return the value.
-     * @see org.eclipse.swt.widgets.Scale#setMinimum(int)
-     */
-    public int getMinimum() {
-        return minValue;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls()
-     */
-    public int getNumberOfControls() {
-        return 2;
-    }
-
-    /**
-     * Returns the value that will be used for Scale.setPageIncrement(int).
-     * 
-     * @return the value.
-     * @see org.eclipse.swt.widgets.Scale#setPageIncrement(int)
-     */
-    public int getPageIncrement() {
-        return pageIncrementValue;
-    }
-
-    /**
-     * Returns this field editor's scale control.
-     * 
-     * @return the scale control, or <code>null</code> if no scale field is
-     *         created yet
-     */
-    public Scale getScaleControl() {
-        return scale;
-    }
-
-    /**
-     * Returns this field editor's scale control. The control is created if it
-     * does not yet exist.
-     * 
-     * @param parent
-     *            the parent
-     * @return the scale control
-     */
-    private Scale getScaleControl(Composite parent) {
-        if (scale == null) {
-            scale = new Scale(parent, SWT.HORIZONTAL);
-            scale.setFont(parent.getFont());
-            scale.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent event) {
-                    valueChanged();
-                }
-            });
-            scale.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    scale = null;
-                }
-            });
-        } else {
-            checkParent(scale, parent);
-        }
-        return scale;
-    }
-
-    /**
-     * Set default values for the various scale fields.  These defaults are:<br>
-     * <ul>
-     * <li>Minimum  = 0
-     * <li>Maximim = 10
-     * <li>Increment = 1
-     * <li>Page Increment = 1
-     * </ul> 
-     */
-    private void setDefaultValues() {
-        setValues(0, 10, 1, 1);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.FieldEditor#setFocus()
-     */
-    public void setFocus() {
-        if (scale != null && !scale.isDisposed()) {
-            scale.setFocus();
-        }
-    }
-
-    /**
-     * Set the value to be used for Scale.setIncrement(int) and update the
-     * scale.
-     * 
-     * @param increment
-     *            a value greater than 0.
-     * @see org.eclipse.swt.widgets.Scale#setIncrement(int)
-     */
-    public void setIncrement(int increment) {
-        this.incrementValue = increment;
-        updateScale();
-    }
-
-    /**
-     * Set the value to be used for Scale.setMaximum(int) and update the
-     * scale.
-     * 
-     * @param max
-     *            a value greater than 0.
-     * @see org.eclipse.swt.widgets.Scale#setMaximum(int)
-     */
-    public void setMaximum(int max) {
-        this.maxValue = max;
-        updateScale();
-    }
-
-    /**
-     * Set the value to be used for Scale.setMinumum(int) and update the
-     * scale.
-     * 
-     * @param min
-     *            a value greater than 0.
-     * @see org.eclipse.swt.widgets.Scale#setMinimum(int)
-     */
-    public void setMinimum(int min) {
-        this.minValue = min;
-        updateScale();
-    }
-
-    /**
-     * Set the value to be used for Scale.setPageIncrement(int) and update the
-     * scale.
-     * 
-     * @param pageIncrement
-     *            a value greater than 0.
-     * @see org.eclipse.swt.widgets.Scale#setPageIncrement(int)
-     */
-    public void setPageIncrement(int pageIncrement) {
-        this.pageIncrementValue = pageIncrement;
-        updateScale();
-    }
-
-    /**
-     * Set all Scale values.
-     * 
-     * @param min
-     *            the value used for Scale.setMinimum(int).
-     * @param max
-     *            the value used for Scale.setMaximum(int).
-     * @param increment
-     *            the value used for Scale.setIncrement(int).
-     * @param pageIncrement
-     *            the value used for Scale.setPageIncrement(int).
-     */
-    private void setValues(int min, int max, int increment, int pageIncrement) {
-        this.incrementValue = increment;
-        this.maxValue = max;
-        this.minValue = min;
-        this.pageIncrementValue = pageIncrement;
-        updateScale();
-    }
-
-    /**
-     * Update the scale particulars with set values.
-     */
-    private void updateScale() {
-        if (scale != null && !scale.isDisposed()) {
-            scale.setMinimum(getMinimum());
-            scale.setMaximum(getMaximum());
-            scale.setIncrement(getIncrement());
-            scale.setPageIncrement(getPageIncrement());
-        }
-    }
-
-    /**
-     * Informs this field editor's listener, if it has one, about a change to
-     * the value (<code>VALUE</code> property) provided that the old and new
-     * values are different.
-     * <p>
-     * This hook is <em>not</em> called when the scale is initialized (or
-     * reset to the default value) from the preference store.
-     * </p>
-     */
-    protected void valueChanged() {
-        setPresentsDefaultValue(false);
-
-        int newValue = scale.getSelection();
-        if (newValue != oldValue) {
-            fireStateChanged(IS_VALID, false, true);
-            fireValueChanged(VALUE, new Integer(oldValue),
-                    new Integer(newValue));
-            oldValue = newValue;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringButtonFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringButtonFieldEditor.java
deleted file mode 100644
index 9fbae8a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringButtonFieldEditor.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Thierry Lach - thierry.lach@bbdodetroit.com - Fix for Bug 37155
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * An abstract field editor for a string type preference that presents
- * a string input field with a change button to its right to edit the
- * input field's content. When the user presses the change button, the
- * abstract framework method <code>changePressed()</code> gets called
- * to compute a new string.
- */
-public abstract class StringButtonFieldEditor extends StringFieldEditor {
-
-    /**
-     * The change button, or <code>null</code> if none
-     * (before creation and after disposal).
-     */
-    private Button changeButton;
-
-    /**
-     * The text for the change button, or <code>null</code> if missing.
-     */
-    private String changeButtonText;
-
-    /**
-     * Creates a new string button field editor 
-     */
-    protected StringButtonFieldEditor() {
-    }
-
-    /**
-     * Creates a string button field editor.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    protected StringButtonFieldEditor(String name, String labelText,
-            Composite parent) {
-        init(name, labelText);
-        createControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void adjustForNumColumns(int numColumns) {
-        ((GridData) getTextControl().getLayoutData()).horizontalSpan = numColumns - 2;
-    }
-
-    /**
-     * Notifies that this field editor's change button has been pressed.
-     * <p>
-     * Subclasses must implement this method to provide a corresponding
-     * new string for the text field. If the returned value is <code>null</code>,
-     * the currently displayed value remains.
-     * </p>
-     *
-     * @return the new string to display, or <code>null</code> to leave the
-     *  old string showing
-     */
-    protected abstract String changePressed();
-
-    /* (non-Javadoc)
-     * Method declared on StringFieldEditor (and FieldEditor).
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        super.doFillIntoGrid(parent, numColumns - 1);
-        changeButton = getChangeControl(parent);
-        GridData gd = new GridData();
-        gd.horizontalAlignment = GridData.FILL;
-        int widthHint = convertHorizontalDLUsToPixels(changeButton,
-                IDialogConstants.BUTTON_WIDTH);
-        gd.widthHint = Math.max(widthHint, changeButton.computeSize(
-                SWT.DEFAULT, SWT.DEFAULT, true).x);
-        changeButton.setLayoutData(gd);
-    }
-
-    /**
-     * Get the change control. Create it in parent if required.
-     * @param parent
-     * @return Button
-     */
-    protected Button getChangeControl(Composite parent) {
-        if (changeButton == null) {
-            changeButton = new Button(parent, SWT.PUSH);
-            if (changeButtonText == null) {
-				changeButtonText = JFaceResources.getString("openChange"); //$NON-NLS-1$
-			}
-            changeButton.setText(changeButtonText);
-            changeButton.setFont(parent.getFont());
-            changeButton.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent evt) {
-                    String newValue = changePressed();
-                    if (newValue != null) {
-                        setStringValue(newValue);
-                    }
-                }
-            });
-            changeButton.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    changeButton = null;
-                }
-            });
-        } else {
-            checkParent(changeButton, parent);
-        }
-        return changeButton;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public int getNumberOfControls() {
-        return 3;
-    }
-
-    /**
-     * Returns this field editor's shell.
-     *
-     * @return the shell
-     */
-    protected Shell getShell() {
-        if (changeButton == null) {
-			return null;
-		}
-        return changeButton.getShell();
-    }
-
-    /**
-     * Sets the text of the change button.
-     *
-     * @param text the new text
-     */
-    public void setChangeButtonText(String text) {
-        Assert.isNotNull(text);
-        changeButtonText = text;
-        if (changeButton != null) {
-			changeButton.setText(text);
-			Point prefSize = changeButton.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			GridData data = (GridData)changeButton.getLayoutData();
-			data.widthHint = Math.max(SWT.DEFAULT, prefSize.x);
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.FieldEditor#setEnabled(boolean, org.eclipse.swt.widgets.Composite)
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        super.setEnabled(enabled, parent);
-        if (changeButton != null) {
-            changeButton.setEnabled(enabled);
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringFieldEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringFieldEditor.java
deleted file mode 100644
index 53c2fbd..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/StringFieldEditor.java
+++ /dev/null
@@ -1,522 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.preference;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * A field editor for a string type preference.
- * <p>
- * This class may be used as is, or subclassed as required.
- * </p>
- */
-public class StringFieldEditor extends FieldEditor {
-
-    /**
-     * Validation strategy constant (value <code>0</code>) indicating that
-     * the editor should perform validation after every key stroke.
-     *
-     * @see #setValidateStrategy
-     */
-    public static final int VALIDATE_ON_KEY_STROKE = 0;
-
-    /**
-     * Validation strategy constant (value <code>1</code>) indicating that
-     * the editor should perform validation only when the text widget 
-     * loses focus.
-     *
-     * @see #setValidateStrategy
-     */
-    public static final int VALIDATE_ON_FOCUS_LOST = 1;
-
-    /**
-     * Text limit constant (value <code>-1</code>) indicating unlimited
-     * text limit and width.
-     */
-    public static int UNLIMITED = -1;
-
-    /**
-     * Cached valid state.
-     */
-    private boolean isValid;
-
-    /**
-     * Old text value.
-     * @since 3.4 this field is protected.
-     */
-    protected String oldValue;
-
-    /**
-     * The text field, or <code>null</code> if none.
-     */
-    Text textField;
-
-    /**
-     * Width of text field in characters; initially unlimited.
-     */
-    private int widthInChars = UNLIMITED;
-
-    /**
-     * Text limit of text field in characters; initially unlimited.
-     */
-    private int textLimit = UNLIMITED;
-
-    /**
-     * The error message, or <code>null</code> if none.
-     */
-    private String errorMessage;
-
-    /**
-     * Indicates whether the empty string is legal;
-     * <code>true</code> by default.
-     */
-    private boolean emptyStringAllowed = true;
-
-    /**
-     * The validation strategy; 
-     * <code>VALIDATE_ON_KEY_STROKE</code> by default.
-     */
-    private int validateStrategy = VALIDATE_ON_KEY_STROKE;
-
-    /**
-     * Creates a new string field editor 
-     */
-    protected StringFieldEditor() {
-    }
-
-    /**
-     * Creates a string field editor.
-     * Use the method <code>setTextLimit</code> to limit the text.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param width the width of the text input field in characters,
-     *  or <code>UNLIMITED</code> for no limit
-     * @param strategy either <code>VALIDATE_ON_KEY_STROKE</code> to perform
-     *  on the fly checking (the default), or <code>VALIDATE_ON_FOCUS_LOST</code> to
-     *  perform validation only after the text has been typed in
-     * @param parent the parent of the field editor's control
-     * @since 2.0
-     */
-    public StringFieldEditor(String name, String labelText, int width,
-            int strategy, Composite parent) {
-        init(name, labelText);
-        widthInChars = width;
-        setValidateStrategy(strategy);
-        isValid = false;
-        errorMessage = JFaceResources
-                .getString("StringFieldEditor.errorMessage");//$NON-NLS-1$
-        createControl(parent);
-    }
-
-    /**
-     * Creates a string field editor.
-     * Use the method <code>setTextLimit</code> to limit the text.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param width the width of the text input field in characters,
-     *  or <code>UNLIMITED</code> for no limit
-     * @param parent the parent of the field editor's control
-     */
-    public StringFieldEditor(String name, String labelText, int width,
-            Composite parent) {
-        this(name, labelText, width, VALIDATE_ON_KEY_STROKE, parent);
-    }
-
-    /**
-     * Creates a string field editor of unlimited width.
-     * Use the method <code>setTextLimit</code> to limit the text.
-     * 
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-     * @param parent the parent of the field editor's control
-     */
-    public StringFieldEditor(String name, String labelText, Composite parent) {
-        this(name, labelText, UNLIMITED, parent);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void adjustForNumColumns(int numColumns) {
-        GridData gd = (GridData) textField.getLayoutData();
-        gd.horizontalSpan = numColumns - 1;
-        // We only grab excess space if we have to
-        // If another field editor has more columns then
-        // we assume it is setting the width.
-        gd.grabExcessHorizontalSpace = gd.horizontalSpan == 1;
-    }
-
-    /**
-     * Checks whether the text input field contains a valid value or not.
-     *
-     * @return <code>true</code> if the field value is valid,
-     *   and <code>false</code> if invalid
-     */
-    protected boolean checkState() {
-        boolean result = false;
-        if (emptyStringAllowed) {
-			result = true;
-		}
-
-        if (textField == null) {
-			result = false;
-		}
-
-        String txt = textField.getText();
-
-        result = (txt.trim().length() > 0) || emptyStringAllowed;
-
-        // call hook for subclasses
-        result = result && doCheckState();
-
-        if (result) {
-			clearErrorMessage();
-		} else {
-			showErrorMessage(errorMessage);
-		}
-
-        return result;
-    }
-
-    /**
-     * Hook for subclasses to do specific state checks.
-     * <p>
-     * The default implementation of this framework method does
-     * nothing and returns <code>true</code>.  Subclasses should 
-     * override this method to specific state checks.
-     * </p>
-     *
-     * @return <code>true</code> if the field value is valid,
-     *   and <code>false</code> if invalid
-     */
-    protected boolean doCheckState() {
-        return true;
-    }
-
-    /**
-     * Fills this field editor's basic controls into the given parent.
-     * <p>
-     * The string field implementation of this <code>FieldEditor</code>
-     * framework method contributes the text field. Subclasses may override
-     * but must call <code>super.doFillIntoGrid</code>.
-     * </p>
-     */
-    protected void doFillIntoGrid(Composite parent, int numColumns) {
-        getLabelControl(parent);
-
-        textField = getTextControl(parent);
-        GridData gd = new GridData();
-        gd.horizontalSpan = numColumns - 1;
-        if (widthInChars != UNLIMITED) {
-            GC gc = new GC(textField);
-            try {
-                Point extent = gc.textExtent("X");//$NON-NLS-1$
-                gd.widthHint = widthInChars * extent.x;
-            } finally {
-                gc.dispose();
-            }
-        } else {
-            gd.horizontalAlignment = GridData.FILL;
-            gd.grabExcessHorizontalSpace = true;
-        }
-        textField.setLayoutData(gd);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoad() {
-        if (textField != null) {
-            String value = getPreferenceStore().getString(getPreferenceName());
-            textField.setText(value);
-            oldValue = value;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doLoadDefault() {
-        if (textField != null) {
-            String value = getPreferenceStore().getDefaultString(
-                    getPreferenceName());
-            textField.setText(value);
-        }
-        valueChanged();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void doStore() {
-        getPreferenceStore().setValue(getPreferenceName(), textField.getText());
-    }
-
-    /**
-     * Returns the error message that will be displayed when and if 
-     * an error occurs.
-     *
-     * @return the error message, or <code>null</code> if none
-     */
-    public String getErrorMessage() {
-        return errorMessage;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public int getNumberOfControls() {
-        return 2;
-    }
-
-    /**
-     * Returns the field editor's value.
-     *
-     * @return the current value
-     */
-    public String getStringValue() {
-        if (textField != null) {
-			return textField.getText();
-		}
-        
-        return getPreferenceStore().getString(getPreferenceName());
-    }
-
-    /**
-     * Returns this field editor's text control.
-     *
-     * @return the text control, or <code>null</code> if no
-     * text field is created yet
-     */
-    protected Text getTextControl() {
-        return textField;
-    }
-
-    /**
-     * Returns this field editor's text control.
-     * <p>
-     * The control is created if it does not yet exist
-     * </p>
-     *
-     * @param parent the parent
-     * @return the text control
-     */
-    public Text getTextControl(Composite parent) {
-        if (textField == null) {
-            textField = new Text(parent, SWT.SINGLE | SWT.BORDER);
-            textField.setFont(parent.getFont());
-            switch (validateStrategy) {
-            case VALIDATE_ON_KEY_STROKE:
-                textField.addKeyListener(new KeyAdapter() {
-
-                    /* (non-Javadoc)
-                     * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
-                     */
-                    public void keyReleased(KeyEvent e) {
-                        valueChanged();
-                    }
-                });
-
-                break;
-            case VALIDATE_ON_FOCUS_LOST:
-                textField.addKeyListener(new KeyAdapter() {
-                    public void keyPressed(KeyEvent e) {
-                        clearErrorMessage();
-                    }
-                });
-                textField.addFocusListener(new FocusAdapter() {
-                    public void focusGained(FocusEvent e) {
-                        refreshValidState();
-                    }
-
-                    public void focusLost(FocusEvent e) {
-                        valueChanged();
-                        clearErrorMessage();
-                    }
-                });
-                break;
-            default:
-                Assert.isTrue(false, "Unknown validate strategy");//$NON-NLS-1$
-            }
-            textField.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent event) {
-                    textField = null;
-                }
-            });
-            if (textLimit > 0) {//Only set limits above 0 - see SWT spec
-                textField.setTextLimit(textLimit);
-            }
-        } else {
-            checkParent(textField, parent);
-        }
-        return textField;
-    }
-
-    /**
-     * Returns whether an empty string is a valid value.
-     *
-     * @return <code>true</code> if an empty string is a valid value, and
-     *  <code>false</code> if an empty string is invalid
-     * @see #setEmptyStringAllowed
-     */
-    public boolean isEmptyStringAllowed() {
-        return emptyStringAllowed;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public boolean isValid() {
-        return isValid;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    protected void refreshValidState() {
-        isValid = checkState();
-    }
-
-    /**
-     * Sets whether the empty string is a valid value or not.
-     *
-     * @param b <code>true</code> if the empty string is allowed,
-     *  and <code>false</code> if it is considered invalid
-     */
-    public void setEmptyStringAllowed(boolean b) {
-        emptyStringAllowed = b;
-    }
-
-    /**
-     * Sets the error message that will be displayed when and if 
-     * an error occurs.
-     *
-     * @param message the error message
-     */
-    public void setErrorMessage(String message) {
-        errorMessage = message;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on FieldEditor.
-     */
-    public void setFocus() {
-        if (textField != null) {
-            textField.setFocus();
-        }
-    }
-
-    /**
-     * Sets this field editor's value.
-     *
-     * @param value the new value, or <code>null</code> meaning the empty string
-     */
-    public void setStringValue(String value) {
-        if (textField != null) {
-            if (value == null) {
-				value = "";//$NON-NLS-1$
-			}
-            oldValue = textField.getText();
-            if (!oldValue.equals(value)) {
-                textField.setText(value);
-                valueChanged();
-            }
-        }
-    }
-
-    /**
-     * Sets this text field's text limit.
-     *
-     * @param limit the limit on the number of character in the text
-     *  input field, or <code>UNLIMITED</code> for no limit
-
-     */
-    public void setTextLimit(int limit) {
-        textLimit = limit;
-        if (textField != null) {
-			textField.setTextLimit(limit);
-		}
-    }
-
-    /**
-     * Sets the strategy for validating the text.
-     * <p>
-     * Calling this method has no effect after <code>createPartControl</code>
-     * is called. Thus this method is really only useful for subclasses to call
-     * in their constructor. However, it has public visibility for backward 
-     * compatibility.
-     * </p>
-     *
-     * @param value either <code>VALIDATE_ON_KEY_STROKE</code> to perform
-     *  on the fly checking (the default), or <code>VALIDATE_ON_FOCUS_LOST</code> to
-     *  perform validation only after the text has been typed in
-     */
-    public void setValidateStrategy(int value) {
-        Assert.isTrue(value == VALIDATE_ON_FOCUS_LOST
-                || value == VALIDATE_ON_KEY_STROKE);
-        validateStrategy = value;
-    }
-
-    /**
-     * Shows the error message set via <code>setErrorMessage</code>.
-     */
-    public void showErrorMessage() {
-        showErrorMessage(errorMessage);
-    }
-
-    /**
-     * Informs this field editor's listener, if it has one, about a change
-     * to the value (<code>VALUE</code> property) provided that the old and
-     * new values are different.
-     * <p>
-     * This hook is <em>not</em> called when the text is initialized 
-     * (or reset to the default value) from the preference store.
-     * </p>
-     */
-    protected void valueChanged() {
-        setPresentsDefaultValue(false);
-        boolean oldState = isValid;
-        refreshValidState();
-
-        if (isValid != oldState) {
-			fireStateChanged(IS_VALID, oldState, isValid);
-		}
-
-        String newValue = textField.getText();
-        if (!newValue.equals(oldValue)) {
-            fireValueChanged(VALUE, oldValue, newValue);
-            oldValue = newValue;
-        }
-    }
-
-    /*
-     * @see FieldEditor.setEnabled(boolean,Composite).
-     */
-    public void setEnabled(boolean enabled, Composite parent) {
-        super.setEnabled(enabled, parent);
-        getTextControl(parent).setEnabled(enabled);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/images/pref_dialog_title.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/images/pref_dialog_title.gif
deleted file mode 100644
index 672442f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/images/pref_dialog_title.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/package.html
deleted file mode 100644
index 0ddc967..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/preference/package.html
+++ /dev/null
@@ -1,67 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides a framework for preferences.
-<h2>
-Package Specification</h2>
-A <b>preference manager</b> (class <tt>PreferenceManager</tt>) maintains
-a tree of <b>preference nodes</b>. Preferences are presented to the end
-user in a <b>preference dialog</b> consisting of <b>preference pages</b>.
-A preference page consists of multiple preference fields, which can be
-displayed and modified though <b>field editors</b>. The framework contains
-an abstract base class for preference dialogs (<tt>PreferenceDialog</tt>),
-and an abstract preference page class (<tt>FieldEditorPreferencePage</tt>)
-for hosting these field editors.
-<p>The individual preference values are maintained in a <b>preference store</b>
-(<tt>IPreferenceStore</tt>). Each preference has a current value and a
-default value use to (re-)initialize it. The framework provides a concrete
-preference store implementation (<tt>PreferenceStore</tt>) based on an
-internal <tt>java.util.Properties</tt> object, with support for persisting
-the non-default preference values to files or streams.
-<p>A field editor presents the value of a single preference to the end
-user. The value is loaded from the preference store; if modified by the
-end user, the value is validated and eventually stored back to the preference
-store.
-<p>This package contains ready-to-use field editors for various types of
-preferences:
-<ul>
-<li>
-<tt>BooleanFieldEditor</tt> - booleans</li>
-
-<li>
-<tt>IntegerFieldEditor</tt> - integers</li>
-
-<li>
-<tt>StringFieldEditor</tt> - text strings</li>
-
-<li>
-<tt>RadioGroupFieldEditor</tt> - enumerations</li>
-
-<li>
-<tt>ColorFieldEditor</tt> - RGB colors</li>
-
-<li>
-<tt>FontFieldEditor</tt> - fonts</li>
-
-<li>
-<tt>DirectoryFieldEditor</tt> - directories</li>
-
-<li>
-<tt>FileFieldEditor</tt> - files</li>
-
-<li>
-<tt>PathEditor</tt> - paths</li>
-</ul>
-All field editors are subclasses of the abstract base class <tt>FieldEditor</tt>;
-the framework allows new kinds of field editors to be defined by subclassing
-this class or one of its subclasses.
-<p>Note: None of the classes in this package maintain global state.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/AbstractResourceManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/AbstractResourceManager.java
deleted file mode 100644
index 4fb7391..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/AbstractResourceManager.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Abstract implementation of ResourceManager. Maintains reference counts for all previously
- * allocated SWT resources. Delegates to the abstract method allocate(...) the first time a resource
- * is referenced and delegates to the abstract method deallocate(...) the last time a reference is
- * removed.
- * 
- * @since 3.1
- */
-abstract class AbstractResourceManager extends ResourceManager {
-
-    /**
-     * Map of ResourceDescriptor onto RefCount. (null when empty)
-     */
-    private HashMap map = null;
-    
-    /**
-     * Holds a reference count for a previously-allocated resource
-     */
-    private static class RefCount {
-        Object resource;
-        int count = 1;
-        
-        RefCount(Object resource) {
-            this.resource = resource;
-        }
-    }
-    
-    /**
-     * Called the first time a resource is requested. Should allocate and return a resource
-     * of the correct type. 
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor identifier for the resource to allocate
-     * @return the newly allocated resource
-     * @throws DeviceResourceException Thrown when allocation of an SWT device resource fails 
-     */
-    protected abstract Object allocate(DeviceResourceDescriptor descriptor) throws DeviceResourceException;
-
-    /**
-     * Called the last time a resource is dereferenced. Should release any resources reserved by
-     * allocate(...).
-     * 
-     * @since 3.1 
-     *
-     * @param resource resource being deallocated
-     * @param descriptor identifier for the resource
-     */
-    protected abstract void deallocate(Object resource, DeviceResourceDescriptor descriptor); 
-    
-    /* (non-Javadoc)
-     * @see ResourceManager#create(DeviceResourceDescriptor)
-     */
-    public final Object create(DeviceResourceDescriptor descriptor) throws DeviceResourceException {
-
-        // Lazily allocate the map
-        if (map == null) {
-            map = new HashMap();
-        }
-        
-        // Get the current reference count
-        RefCount count = (RefCount)map.get(descriptor);
-        if (count != null) {
-            // If this resource already exists, increment the reference count and return
-            // the existing resource.
-            count.count++;
-            return count.resource;
-        }
-        
-        // Allocate and return a new resource (with ref count = 1)
-        Object resource = allocate(descriptor);
-        
-        count = new RefCount(resource);
-        map.put(descriptor, count);
-        
-        return resource;
-    }
-
-    /* (non-Javadoc)
-     * @see ResourceManager#destroy(DeviceResourceDescriptor)
-     */
-    public final void destroy(DeviceResourceDescriptor descriptor) {
-        // If the map is empty (null) then there are no resources to dispose
-        if (map == null) {
-            return;
-        }
-        
-        // Find the existing resource
-        RefCount count = (RefCount)map.get(descriptor);
-        if (count != null) {
-            // If the resource exists, decrement the reference count.
-            count.count--;
-            if (count.count == 0) {
-                // If this was the last reference, deallocate it.
-                deallocate(count.resource, descriptor);
-                map.remove(descriptor);
-            }
-        }
-        
-        // Null out the map when empty to save a small amount of memory
-        if (map.isEmpty()) {
-            map = null;
-        }
-    }
-
-    /**
-     * Deallocates any resources allocated by this registry that have not yet been
-     * deallocated.
-     * 
-     * @since 3.1 
-     */
-    public void dispose() {
-        super.dispose();
-        
-        if (map == null) {
-            return;
-        }
-        
-        Collection entries = map.entrySet();
-
-        for (Iterator iter = entries.iterator(); iter.hasNext();) {
-            Map.Entry next = (Map.Entry) iter.next();
-            
-            Object key = next.getKey();
-            RefCount val = (RefCount)next.getValue();
-            
-            deallocate(val.resource, (DeviceResourceDescriptor)key);
-        }
-        
-        map = null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceManager#find(org.eclipse.jface.resource.DeviceResourceDescriptor)
-     */
-    public Object find(DeviceResourceDescriptor descriptor) {
-        if (map == null) {
-            return null;
-        }
-        RefCount refCount = (RefCount)map.get(descriptor);
-        if (refCount == null)
-        	return null;
-		return refCount.resource;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ArrayFontDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ArrayFontDescriptor.java
deleted file mode 100644
index 8c057aa..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ArrayFontDescriptor.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-
-/**
- * Describes a Font using an array of FontData
- * 
- * @since 3.1
- */
-final class ArrayFontDescriptor extends FontDescriptor {
-
-    private FontData[] data;
-    private Font originalFont = null;
-    
-    /**
-     * Creates a font descriptor for a font with the given name, height,
-     * and style. These arguments are passed directly to the constructor
-     * of Font.
-     * 
-     * @param data FontData describing the font to create
-     * 
-     * @see org.eclipse.swt.graphics.Font#Font(org.eclipse.swt.graphics.Device, org.eclipse.swt.graphics.FontData)
-     * @since 3.1
-     */
-    public ArrayFontDescriptor(FontData[] data) {
-        this.data = data;
-    }
- 
-    /**
-     * Creates a font descriptor that describes the given font.
-     * 
-     * @param originalFont font to be described
-     * 
-     * @see FontDescriptor#createFrom(org.eclipse.swt.graphics.Font)
-     * @since 3.1
-     */
-    public ArrayFontDescriptor(Font originalFont) {
-        this(originalFont.getFontData());
-        this.originalFont = originalFont;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.FontDescriptor#getFontData()
-     */
-    public FontData[] getFontData() {
-    	// Copy the original array to ensure that callers will not modify it
-    	return copy(data);
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.FontDescriptor#createFont(org.eclipse.swt.graphics.Device)
-     */
-    public Font createFont(Device device) {
-        
-        // If this descriptor is an existing font, then we can return the original font
-        // if this is the same device.
-        if (originalFont != null) {         
-            // If we're allocating on the same device as the original font, return the original.
-            if (originalFont.getDevice() == device) {
-                return originalFont;
-            }
-        }
-        
-        return new Font(device, data);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if ((obj.getClass() == ArrayFontDescriptor.class)) {
-            ArrayFontDescriptor descr = (ArrayFontDescriptor)obj;
-            
-            if (descr.originalFont != originalFont) {
-                return false;
-            }
-            
-            if (originalFont != null) {
-                return true;
-            }
-            
-            if (data.length != descr.data.length) {
-                return false;
-            }
-            
-            for (int i = 0; i < data.length; i++) {
-                FontData fd = data[i];
-                FontData fd2 = descr.data[i];
-                
-                if (!fd.equals(fd2)) {
-                    return false;
-                }
-            }
-            
-            return true;
-        }
-        
-        return false;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        if (originalFont != null) {
-            return originalFont.hashCode();
-        }
-        
-        int code = 0;
-        
-        for (int i = 0; i < data.length; i++) {
-            FontData fd = data[i];
-            code += fd.hashCode();
-        }
-        return code;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.FontDescriptor#destroyFont(org.eclipse.swt.graphics.Font)
-     */
-    public void destroyFont(Font previouslyCreatedFont) {
-        if (previouslyCreatedFont == originalFont) {
-            return;
-        }
-        previouslyCreatedFont.dispose();
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorDescriptor.java
deleted file mode 100644
index ab5875e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorDescriptor.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * Lightweight descriptor for an SWT color. Each ColorDescriptor will create a particular SWT 
- * Color on demand. This object will be compared so hashCode(...) and equals(...) must 
- * return meaningful values.
- * 
- * @since 3.1
- */
-public abstract class ColorDescriptor extends DeviceResourceDescriptor {
-    
-    /**
-     * Creates a ColorDescriptor from an existing Color, given the Device associated
-     * with the original Color. This is the usual way to convert a Color into
-     * a ColorDescriptor. Note that the returned ColorDescriptor depends on the
-     * original Color, and disposing the Color will invalidate the ColorDescriptor.
-     * 
-     * @deprecated use {@link ColorDescriptor#createFrom(Color)}
-     * 
-     * @since 3.1
-     *
-     * @param toCreate Color to convert into a ColorDescriptor.
-     * @param originalDevice this must be the same Device that was passed into the
-     * original Color's constructor.
-     * @return a newly created ColorDescriptor that describes the given Color.
-     */
-    public static ColorDescriptor createFrom(Color toCreate, Device originalDevice) {
-        return new RGBColorDescriptor(toCreate);
-    }
-    
-    /**
-     * Creates a ColorDescriptor from an existing color. 
-     * 
-     * The returned ColorDescriptor depends on the original Color. Disposing
-     * the original colour while the color descriptor is still in use may cause 
-     * SWT to throw a graphic disposed exception.
-     * 
-     * @since 3.1
-     *
-     * @param toCreate Color to generate a ColorDescriptor from
-     * @return a newly created ColorDescriptor
-     */
-    public static ColorDescriptor createFrom(Color toCreate) {
-        return new RGBColorDescriptor(toCreate);
-    }
-    
-    /**
-     * Returns a color descriptor for the given RGB values
-     * @since 3.1 
-     *
-     * @param toCreate RGB values to create
-     * @return a new ColorDescriptor
-     */
-    public static ColorDescriptor createFrom(RGB toCreate) {
-        return new RGBColorDescriptor(toCreate);
-    }
-    
-    /**
-     * Returns the Color described by this descriptor.
-     * 
-     * @param device SWT device on which to allocate the Color
-     * @return a newly allocated SWT Color object (never null)
-     * @throws DeviceResourceException if unable to allocate the Color
-     */
-    public abstract Color createColor(Device device) throws DeviceResourceException;
-    
-    /**
-     * Undoes whatever was done by createColor. 
-     * 
-     * @since 3.1 
-     *
-     * @param toDestroy a Color that was previously allocated by an equal ColorDescriptor
-     */
-    public abstract void destroyColor(Color toDestroy);
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#createResource(org.eclipse.swt.graphics.Device)
-     */
-    public final Object createResource(Device device) throws DeviceResourceException {
-        return createColor(device);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#destroyResource(java.lang.Object)
-     */
-    public final void destroyResource(Object previouslyCreatedObject) {
-        destroyColor((Color)previouslyCreatedObject);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorRegistry.java
deleted file mode 100644
index e38b88b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ColorRegistry.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * A color registry maintains a mapping between symbolic color names and SWT 
- * <code>Color</code>s.
- * <p>
- * A color registry owns all of the <code>Color</code> objects registered with 
- * it, and automatically disposes of them when the SWT Display that creates the 
- * <code>Color</code>s is disposed. Because of this, clients do not need to 
- * (indeed, must not attempt to) dispose of <code>Color</code> objects 
- * themselves.
- * </p>
- * <p>
- * Methods are provided for registering listeners that will be kept
- * apprised of changes to list of registed colors.
- * </p>
- * <p>
- * Clients may instantiate this class (it was not designed to be subclassed).
- * </p>
- * 
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ColorRegistry extends ResourceRegistry {
-
-	/**
-	 * Default color value.  This is cyan (very unappetizing). 
-	 * @since 3.4
-	 */
-    private static final ColorDescriptor DEFAULT_COLOR = new RGBColorDescriptor(new RGB(0, 255, 255));
-
-	/**
-     * This registries <code>Display</code>. All colors will be allocated using 
-     * it.
-     */
-    protected Display display;
-
-    /**
-     * Collection of <code>Color</code> that are now stale to be disposed when 
-     * it is safe to do so (i.e. on shutdown).
-     */
-    private List staleColors = new ArrayList();
-
-    /**
-     * Table of known colors, keyed by symbolic color name (key type: <code>String</code>,
-     * value type: <code>org.eclipse.swt.graphics.Color</code>.
-     */
-    private Map stringToColor = new HashMap(7);
-
-    /**
-     * Table of known color data, keyed by symbolic color name (key type:
-     * <code>String</code>, value type: <code>org.eclipse.swt.graphics.RGB</code>).
-     */
-    private Map stringToRGB = new HashMap(7);
-
-    /**
-     * Runnable that cleans up the manager on disposal of the display.
-     */
-    protected Runnable displayRunnable = new Runnable() {
-        public void run() {
-            clearCaches();
-        }
-    };
-
-	private final boolean cleanOnDisplayDisposal;
-
-    /**
-     * Create a new instance of the receiver that is hooked to the current 
-     * display.
-     * 
-     * @see org.eclipse.swt.widgets.Display#getCurrent()
-     */
-    public ColorRegistry() {
-        this(Display.getCurrent(), true);
-    }
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param display the <code>Display</code> to hook into.
-     */
-    public ColorRegistry(Display display) {
-    	this (display, true);
-    }
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param display the <code>Display</code> to hook into
-     * @param cleanOnDisplayDisposal
-	 *            whether all fonts allocated by this <code>ColorRegistry</code>
-	 *            should be disposed when the display is disposed
-     * @since 3.1
-     */
-    public ColorRegistry(Display display, boolean cleanOnDisplayDisposal) {
-		Assert.isNotNull(display);
-        this.display = display;
-        this.cleanOnDisplayDisposal = cleanOnDisplayDisposal;
-        if (cleanOnDisplayDisposal) {
-			hookDisplayDispose();
-		}
-    }
-
-    /**
-     * Create a new <code>Color</code> on the receivers <code>Display</code>.
-     * 
-     * @param rgb the <code>RGB</code> data for the color.
-     * @return the new <code>Color</code> object.
-     * 
-     * @since 3.1
-     */
-    private Color createColor(RGB rgb) {
-    	if (this.display == null) {
-    		Display display = Display.getCurrent();
-    		if (display == null) {
-    			throw new IllegalStateException();
-    		}
-    		this.display = display;
-    		if (cleanOnDisplayDisposal) {
-    			hookDisplayDispose();
-    		}
-    	}
-        return new Color(display, rgb);
-    }
-
-    /**
-     * Dispose of all of the <code>Color</code>s in this iterator.
-     * 
-     * @param iterator over <code>Collection</code> of <code>Color</code>
-     */
-    private void disposeColors(Iterator iterator) {
-        while (iterator.hasNext()) {
-            Object next = iterator.next();
-            ((Color) next).dispose();
-        }
-    }
-
-    /**
-     * Returns the <code>color</code> associated with the given symbolic color 
-     * name, or <code>null</code> if no such definition exists.
-     * 
-     * @param symbolicName symbolic color name
-     * @return the <code>Color</code> or <code>null</code>
-     */
-    public Color get(String symbolicName) {
-
-        Assert.isNotNull(symbolicName);
-        Object result = stringToColor.get(symbolicName);
-        if (result != null) {
-			return (Color) result;
-		}
-
-        Color color = null;
-
-        result = stringToRGB.get(symbolicName);
-        if (result == null) {
-			return null;
-		}
-
-        color = createColor((RGB) result);
-
-        stringToColor.put(symbolicName, color);
-
-        return color;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceRegistry#getKeySet()
-     */
-    public Set getKeySet() {
-        return Collections.unmodifiableSet(stringToRGB.keySet());
-    }
-
-    /**
-     * Returns the color data associated with the given symbolic color name.
-     *
-     * @param symbolicName symbolic color name.
-     * @return the <code>RGB</code> data, or <code>null</code> if the symbolic name
-     * is not valid.
-     */
-    public RGB getRGB(String symbolicName) {
-        Assert.isNotNull(symbolicName);
-        return (RGB) stringToRGB.get(symbolicName);
-    }
-    
-    /**
-	 * Returns the color descriptor associated with the given symbolic color
-	 * name. As of 3.4 if this color is not defined then an unspecified color
-	 * is returned. Users that wish to ensure a reasonable default value should
-	 * use {@link #getColorDescriptor(String, ColorDescriptor)} instead.
-	 * 
-	 * @since 3.1
-	 * 
-	 * @param symbolicName
-	 * @return the color descriptor associated with the given symbolic color
-	 *         name or an unspecified sentinel.
-	 */
-	public ColorDescriptor getColorDescriptor(String symbolicName) {
-		return getColorDescriptor(symbolicName, DEFAULT_COLOR);
-	}
-    
-    /**
-	 * Returns the color descriptor associated with the given symbolic color
-	 * name. If this name does not exist within the registry the supplied
-	 * default value will be used.
-	 * 
-	 * @param symbolicName
-	 * @param defaultValue
-	 * @return the color descriptor associated with the given symbolic color
-	 *         name or the default
-	 * @since 3.4
-	 */
-	public ColorDescriptor getColorDescriptor(String symbolicName,
-			ColorDescriptor defaultValue) {
-		RGB rgb = getRGB(symbolicName);
-		if (rgb == null)
-			return defaultValue;
-		return ColorDescriptor.createFrom(rgb);
-	}
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.resource.ResourceRegistry#clearCaches()
-	 */
-    protected void clearCaches() {
-        disposeColors(stringToColor.values().iterator());
-        disposeColors(staleColors.iterator());
-        stringToColor.clear();
-        staleColors.clear();
-        display = null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceRegistry#hasValueFor(java.lang.String)
-     */
-    public boolean hasValueFor(String colorKey) {
-        return stringToRGB.containsKey(colorKey);
-    }
-
-    /**
-     * Hook a dispose listener on the SWT display.
-     */
-    private void hookDisplayDispose() {
-        display.disposeExec(displayRunnable);
-    }
-
-    /**
-     * Adds (or replaces) a color to this color registry under the given 
-     * symbolic name.
-     * <p>
-     * A property change event is reported whenever the mapping from a symbolic
-     * name to a color changes. The source of the event is this registry; the
-     * property name is the symbolic color name.
-     * </p>
-     * 
-     * @param symbolicName the symbolic color name
-     * @param colorData an <code>RGB</code> object
-     */
-    public void put(String symbolicName, RGB colorData) {
-        put(symbolicName, colorData, true);
-    }
-
-    /**
-     * Adds (or replaces) a color to this color registry under the given 
-     * symbolic name.
-     * <p>
-     * A property change event is reported whenever the mapping from a symbolic
-     * name to a color changes. The source of the event is this registry; the
-     * property name is the symbolic color name.
-     * </p>
-     * 
-     * @param symbolicName the symbolic color name
-     * @param colorData an <code>RGB</code> object
-     * @param update - fire a color mapping changed if true. False if this
-     *            method is called from the get method as no setting has
-     *            changed.
-     */
-    private void put(String symbolicName, RGB colorData, boolean update) {
-
-        Assert.isNotNull(symbolicName);
-        Assert.isNotNull(colorData);
-
-        RGB existing = (RGB) stringToRGB.get(symbolicName);
-        if (colorData.equals(existing)) {
-			return;
-		}
-
-        Color oldColor = (Color) stringToColor.remove(symbolicName);
-        stringToRGB.put(symbolicName, colorData);
-        if (update) {
-			fireMappingChanged(symbolicName, existing, colorData);
-		}
-
-        if (oldColor != null) {
-			staleColors.add(oldColor);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/CompositeImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/CompositeImageDescriptor.java
deleted file mode 100644
index 9db0480..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/CompositeImageDescriptor.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * Abstract base class for image descriptors that synthesize an image from other
- * images in order to simulate the effect of custom drawing. For example, this
- * could be used to superimpose a red bar dexter symbol across an image to
- * indicate that something was disallowed.
- * <p>
- * Subclasses must implement the <code>getSize</code> and <code>fill</code>
- * methods. Little or no work happens until the image descriptor's image is
- * actually requested by a call to <code>createImage</code> (or to
- * <code>getImageData</code> directly).
- * </p>
- */
-public abstract class CompositeImageDescriptor extends ImageDescriptor {
-
-	/**
-	 * The image data for this composite image.
-	 */
-	private ImageData imageData;
-
-	/**
-	 * Constructs an uninitialized composite image.
-	 */
-	protected CompositeImageDescriptor() {
-	}
-
-	/**
-	 * Draw the composite images.
-	 * <p>
-	 * Subclasses must implement this framework method to paint images within
-	 * the given bounds using one or more calls to the <code>drawImage</code>
-	 * framework method.
-	 * </p>
-	 * 
-	 * @param width
-	 *            the width
-	 * @param height
-	 *            the height
-	 */
-	protected abstract void drawCompositeImage(int width, int height);
-
-	/**
-	 * Draws the given source image data into this composite image at the given
-	 * position.
-	 * <p>
-	 * Call this internal framework method to superimpose another image atop
-	 * this composite image.
-	 * </p>
-	 * 
-	 * @param src
-	 *            the source image data
-	 * @param ox
-	 *            the x position
-	 * @param oy
-	 *            the y position
-	 */
-	final protected void drawImage(ImageData src, int ox, int oy) {
-		ImageData dst = imageData;
-		PaletteData srcPalette = src.palette;
-		ImageData srcMask = null;
-		int alphaMask = 0, alphaShift = 0;
-		if (src.maskData != null) {
-			srcMask = src.getTransparencyMask ();
-			if (src.depth == 32) {
-				alphaMask = ~(srcPalette.redMask | srcPalette.greenMask | srcPalette.blueMask);
-				while (alphaMask != 0 && ((alphaMask >>> alphaShift) & 1) == 0) alphaShift++;
-			}
-		}
-		for (int srcY = 0, dstY = srcY + oy; srcY < src.height; srcY++, dstY++) {
-			for (int srcX = 0, dstX = srcX + ox; srcX < src.width; srcX++, dstX++) {
-				if (!(0 <= dstX && dstX < dst.width && 0 <= dstY && dstY < dst.height)) continue;
-				int srcPixel = src.getPixel(srcX, srcY);
-				int srcAlpha = 255;
-				if (src.maskData != null) {
-					if (src.depth == 32) {
-						srcAlpha = (srcPixel & alphaMask) >>> alphaShift;
-						if (srcAlpha == 0) {
-							srcAlpha = srcMask.getPixel(srcX, srcY) != 0 ? 255 : 0;
-						}
-					} else {
-						if (srcMask.getPixel(srcX, srcY) == 0) srcAlpha = 0;
-					}
-				} else if (src.transparentPixel != -1) {
-					if (src.transparentPixel == srcPixel) srcAlpha = 0;
-				} else if (src.alpha != -1) {
-					srcAlpha = src.alpha;
-				} else if (src.alphaData != null) {
-					srcAlpha = src.getAlpha(srcX, srcY);
-				}
-				if (srcAlpha == 0) continue;
-				int srcRed, srcGreen, srcBlue;
-				if (srcPalette.isDirect) {
-					srcRed = srcPixel & srcPalette.redMask;
-					srcRed = (srcPalette.redShift < 0) ? srcRed >>> -srcPalette.redShift : srcRed << srcPalette.redShift;
-					srcGreen = srcPixel & srcPalette.greenMask;
-					srcGreen = (srcPalette.greenShift < 0) ? srcGreen >>> -srcPalette.greenShift : srcGreen << srcPalette.greenShift;
-					srcBlue = srcPixel & srcPalette.blueMask;
-					srcBlue = (srcPalette.blueShift < 0) ? srcBlue >>> -srcPalette.blueShift : srcBlue << srcPalette.blueShift;
-				} else {
-					RGB rgb = srcPalette.getRGB(srcPixel);
-					srcRed = rgb.red;
-					srcGreen = rgb.green;
-					srcBlue = rgb.blue;
-				}
-				int dstRed, dstGreen, dstBlue, dstAlpha;
-				if (srcAlpha == 255) {
-					dstRed = srcRed;
-					dstGreen = srcGreen;
-					dstBlue= srcBlue;
-					dstAlpha = srcAlpha;
-				} else {
-					int dstPixel = dst.getPixel(dstX, dstY);
-					dstAlpha = dst.getAlpha(dstX, dstY);
-					dstRed = (dstPixel & 0xFF) >>> 0;
-					dstGreen = (dstPixel & 0xFF00) >>> 8;
-					dstBlue = (dstPixel & 0xFF0000) >>> 16;
-					dstRed += (srcRed - dstRed) * srcAlpha / 255;
-					dstGreen += (srcGreen - dstGreen) * srcAlpha / 255;
-					dstBlue += (srcBlue - dstBlue) * srcAlpha / 255;
-					dstAlpha += (srcAlpha - dstAlpha) * srcAlpha / 255;
-				}
-				dst.setPixel(dstX, dstY, ((dstRed & 0xFF) << 0) | ((dstGreen & 0xFF) << 8) | ((dstBlue & 0xFF) << 16));
-				dst.setAlpha(dstX, dstY, dstAlpha);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on ImageDesciptor.
-	 */
-	public ImageData getImageData() {
-		Point size = getSize();		
-		
-		/* Create a 24 bit image data with alpha channel */
-		imageData = new ImageData(size.x, size.y, 24, new PaletteData(0xFF, 0xFF00, 0xFF0000));
-		imageData.alphaData = new byte[imageData.width * imageData.height];
-		
-		drawCompositeImage(size.x, size.y);
-		
-		/* Detect minimum transparency */
-		boolean transparency = false;
-		byte[] alphaData = imageData.alphaData;
-		for (int i = 0; i < alphaData.length; i++) {
-			int alpha = alphaData[i] & 0xFF;
-			if (!(alpha == 0 || alpha == 255)) {
-				/* Full alpha channel transparency */
-				return imageData;
-			}
-			if (!transparency && alpha == 0) transparency = true;
-		}
-		if (transparency) {
-			/* Reduce to 1-bit alpha channel transparency */
-			PaletteData palette = new PaletteData(new RGB[]{new RGB(0, 0, 0), new RGB(255, 255, 255)});
-			ImageData mask = new ImageData(imageData.width, imageData.height, 1, palette);
-			for (int y = 0; y < mask.height; y++) {
-				for (int x = 0; x < mask.width; x++) {
-					mask.setPixel(x, y, imageData.getAlpha(x, y) == 255 ? 1 : 0);
-				}
-			}
-		} else {
-			/* no transparency */
-			imageData.alphaData = null;
-		}
-		return imageData;
-	}
-	
-
-	/**
-	 * Return the transparent pixel for the receiver.
-	 * <strong>NOTE</strong> This value is not currently in use in the 
-	 * default implementation.
-	 * @return int
-	 * @since 3.3
-	 */
-	protected int getTransparentPixel() {
-		return 0;
-	}
-
-	/**
-	 * Return the size of this composite image.
-	 * <p>
-	 * Subclasses must implement this framework method.
-	 * </p>
-	 * 
-	 * @return the x and y size of the image expressed as a point object
-	 */
-	protected abstract Point getSize();
-
-	/**
-	 * @param imageData The imageData to set.
-	 * @since 3.3
-	 */
-	protected void setImageData(ImageData imageData) {
-		this.imageData = imageData;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DataFormatException.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DataFormatException.java
deleted file mode 100644
index 2732cb9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DataFormatException.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-/**
- * An exception indicating that a string value could not be
- * converted into the requested data type.
- *
- * @see StringConverter
- */
-public class DataFormatException extends IllegalArgumentException {
-    
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3544955467404031538L;
-
-    /**
-     * Creates a new exception.
-     */
-    public DataFormatException() {
-        super();
-    }
-
-    /**
-     * Creates a new exception.
-     *
-     * @param message the message
-     */
-    public DataFormatException(String message) {
-        super(message);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DerivedImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DerivedImageDescriptor.java
deleted file mode 100644
index 4e0379d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DerivedImageDescriptor.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * An image descriptor which creates images based on another ImageDescriptor, but with
- * additional SWT flags. Note that this is only intended for compatibility. 
- * 
- * @since 3.1
- */
-final class DerivedImageDescriptor extends ImageDescriptor {
-
-    private ImageDescriptor original;
-    private int flags;
-    
-    /**
-     * Create a new image descriptor
-     * @param original the original one
-     * @param swtFlags flags to be used when image is created {@link Image#Image(Device, Image, int)}
-     * @see SWT#IMAGE_COPY
-     * @see SWT#IMAGE_DISABLE
-     * @see SWT#IMAGE_GRAY
-     */
-    public DerivedImageDescriptor(ImageDescriptor original, int swtFlags) {
-        this.original = original;
-        flags = swtFlags;
-    }
-    
-    public Object createResource(Device device) throws DeviceResourceException {
-        try {
-            return internalCreateImage(device);
-        } catch (SWTException e) {
-            throw new DeviceResourceException(this, e);
-        }
-    }
-    
-    public Image createImage(Device device) {
-        return internalCreateImage(device);
-    }
-    
-    public int hashCode() {
-        return original.hashCode() + flags;
-    }
-    
-    public boolean equals(Object arg0) {
-        if (arg0 instanceof DerivedImageDescriptor) {
-            DerivedImageDescriptor desc = (DerivedImageDescriptor)arg0;
-            
-            return desc.original == original && flags == desc.flags;
-        }
-        
-        return false;
-    }
-    
-    /**
-     * Creates a new Image on the given device. Note that we defined a new
-     * method rather than overloading createImage since this needs to be
-     * called by getImageData(), and we want to be absolutely certain not
-     * to cause infinite recursion if the base class gets refactored. 
-     *
-     * @param device device to create the image on
-     * @return a newly allocated Image. Must be disposed by calling image.dispose().
-     */
-    private final Image internalCreateImage(Device device) {
-        Image originalImage = original.createImage(device);
-        Image result = new Image(device, originalImage, flags);
-        original.destroyResource(originalImage);
-        return result;
-    }
-    
-    public ImageData getImageData() {
-        Image image = internalCreateImage(Display.getCurrent());
-        ImageData result = image.getImageData();
-        image.dispose();
-        return result;
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceDescriptor.java
deleted file mode 100644
index b7ce8c5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceDescriptor.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Device;
-
-/**
- * Instances of this class can allocate and dispose SWT resources. Each
- * instance describes a particular resource (such as a Color, Font, or Image)
- * and can create and destroy that resource on demand. DeviceResourceDescriptors
- * are managed by a ResourceRegistry.
- * 
- * @see org.eclipse.jface.resource.ResourceManager
- * 
- * @since 3.1
- */
-public abstract class DeviceResourceDescriptor {
-    /**
-     * Creates the resource described by this descriptor
-     * 
-     * @since 3.1 
-     *
-     * @param device the Device on which to allocate the resource
-     * @return the newly allocated resource (not null)
-     * @throws DeviceResourceException if unable to allocate the resource
-     */
-    public abstract Object createResource(Device device);
-    
-    /**
-     * Undoes everything that was done by a previous call to create(...), given
-     * the object that was returned by create(...).
-     * 
-     * @since 3.1 
-     *
-     * @param previouslyCreatedObject an object that was returned by an equal 
-     * descriptor in a previous call to createResource(...).
-     */
-    public abstract void destroyResource(Object previouslyCreatedObject);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceException.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceException.java
deleted file mode 100644
index 4907b0a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-
-/**
- * Thrown when allocation of an SWT device resource fails
- * 
- * @since 3.1
- */
-public class DeviceResourceException extends RuntimeException {
-    
-	private Throwable cause;
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 11454598756198L;
-    
-	/**
-	 * Creates a DeviceResourceException indicating an error attempting to
-	 * create a resource and an embedded low-level exception describing the cause 
-	 * 
-	 * @param missingResource
-     * @param cause cause of the exception (or null if none)
-	 */
-    public DeviceResourceException(DeviceResourceDescriptor missingResource, Throwable cause) {
-        super("Unable to create resource " + missingResource.toString()); //$NON-NLS-1$
-        // don't pass the cause to super, to allow compilation against JCL Foundation (bug 80059)
-        this.cause = cause;
-    }
-    
-    /**
-     * Creates a DeviceResourceException indicating an error attempting to
-     * create a resource 
-     * 
-     * @param missingResource
-     */
-    public DeviceResourceException(DeviceResourceDescriptor missingResource) {
-        this(missingResource, null);
-    }
-    
-    /**
-     * Returns the cause of this throwable or <code>null</code> if the
-     * cause is nonexistent or unknown. 
-     * 
-     * @return the cause or <code>null</code>
-     * @since 3.1
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-    
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceManager.java
deleted file mode 100644
index db02255..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/DeviceResourceManager.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Manages SWT resources for a particular device.
- *  
- * <p>
- * IMPORTANT: in most cases clients should use a <code>LocalResourceManager</code> instead of a
- * <code>DeviceResourceManager</code>. To create a resource manager on a particular display, 
- * use <code>new LocalResourceManager(JFaceResources.getResources(myDisplay))</code>.
- * <code>DeviceResourceManager</code> should only be used directly when managing
- * resources for a device other than a Display (such as a printer).  
- * </p>
- * 
- * @see LocalResourceManager
- * 
- * @since 3.1
- */
-public final class DeviceResourceManager extends AbstractResourceManager {
-    
-    private Device device;
-    private Image missingImage;
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceManager#getDevice()
-     */
-    public Device getDevice() {
-        return device;
-    }
-    
-    /**
-     * Creates a new registry for the given device.
-     * 
-     * @param device device to manage
-     */
-    public DeviceResourceManager(Device device) {
-        this.device = device;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.AbstractResourceManager#allocate(org.eclipse.jface.resource.DeviceResourceDescriptor)
-     */
-    protected Object allocate(DeviceResourceDescriptor descriptor) throws DeviceResourceException {
-        return descriptor.createResource(device);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.AbstractResourceManager#deallocate(java.lang.Object, org.eclipse.jface.resource.DeviceResourceDescriptor)
-     */
-    protected void deallocate(Object resource, DeviceResourceDescriptor descriptor) {
-        descriptor.destroyResource(resource);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceManager#getDefaultImage()
-     */
-    protected Image getDefaultImage() {
-        if (missingImage == null) {
-            missingImage = ImageDescriptor.getMissingImageDescriptor().createImage();
-        }
-        return missingImage;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.AbstractResourceManager#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        if (missingImage != null) {
-            missingImage.dispose();
-            missingImage = null;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FileImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FileImageDescriptor.java
deleted file mode 100644
index f7dd117..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FileImageDescriptor.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.internal.JFaceActivator;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-
-/**
- * An image descriptor that loads its image information from a file.
- */
-class FileImageDescriptor extends ImageDescriptor {
-
-	/**
-	 * The class whose resource directory contain the file, or <code>null</code>
-	 * if none.
-	 */
-	private Class location;
-
-	/**
-	 * The name of the file.
-	 */
-	private String name;
-
-	/**
-	 * Creates a new file image descriptor. The file has the given file name and
-	 * is located in the given class's resource directory. If the given class is
-	 * <code>null</code>, the file name must be absolute.
-	 * <p>
-	 * Note that the file is not accessed until its <code>getImageDate</code>
-	 * method is called.
-	 * </p>
-	 * 
-	 * @param clazz
-	 *            class for resource directory, or <code>null</code>
-	 * @param filename
-	 *            the name of the file
-	 */
-	FileImageDescriptor(Class clazz, String filename) {
-		this.location = clazz;
-		this.name = filename;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	public boolean equals(Object o) {
-		if (!(o instanceof FileImageDescriptor)) {
-			return false;
-		}
-		FileImageDescriptor other = (FileImageDescriptor) o;
-		if (location != null) {
-			if (!location.equals(other.location)) {
-				return false;
-			}
-		} else {
-			if (other.location != null) {
-				return false;
-			}
-		}
-		return name.equals(other.name);
-	}
-
-	/**
-	 * @see org.eclipse.jface.resource.ImageDescriptor#getImageData() The
-	 *      FileImageDescriptor implementation of this method is not used by
-	 *      {@link ImageDescriptor#createImage(boolean, Device)} as of version
-	 *      3.4 so that the SWT OS optimised loading can be used.
-	 */
-	public ImageData getImageData() {
-		InputStream in = getStream();
-		ImageData result = null;
-		if (in != null) {
-			try {
-				result = new ImageData(in);
-			} catch (SWTException e) {
-				if (e.code != SWT.ERROR_INVALID_IMAGE) {
-					throw e;
-					// fall through otherwise
-				}
-			} finally {
-				try {
-					in.close();
-				} catch (IOException e) {
-					// System.err.println(getClass().getName()+".getImageData():
-					// "+
-					// "Exception while closing InputStream : "+e);
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a stream on the image contents. Returns null if a stream could
-	 * not be opened.
-	 * 
-	 * @return the buffered stream on the file or <code>null</code> if the
-	 *         file cannot be found
-	 */
-	private InputStream getStream() {
-		InputStream is = null;
-
-		if (location != null) {
-			is = location.getResourceAsStream(name);
-
-		} else {
-			try {
-				is = new FileInputStream(name);
-			} catch (FileNotFoundException e) {
-				return null;
-			}
-		}
-		if (is == null) {
-			return null;
-		}
-		return new BufferedInputStream(is);
-
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	public int hashCode() {
-		int code = name.hashCode();
-		if (location != null) {
-			code += location.hashCode();
-		}
-		return code;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	/**
-	 * The <code>FileImageDescriptor</code> implementation of this
-	 * <code>Object</code> method returns a string representation of this
-	 * object which is suitable only for debugging.
-	 */
-	public String toString() {
-		return "FileImageDescriptor(location=" + location + ", name=" + name + ")";//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.resource.ImageDescriptor#createImage(boolean,
-	 *      org.eclipse.swt.graphics.Device)
-	 */
-	public Image createImage(boolean returnMissingImageOnError, Device device) {
-		String path = getFilePath();
-		if (path == null)
-			return createDefaultImage(returnMissingImageOnError, device);
-		try {			
-			return new Image(device, path);
-		} catch (SWTException exception) {
-			//if we fail try the default way using a stream
-		}
-		return super.createImage(returnMissingImageOnError, device);
-	}
-
-	/**
-	 * Return default image if returnMissingImageOnError is true.
-	 * 
-	 * @param device
-	 * @return Image or <code>null</code>
-	 */
-	private Image createDefaultImage(boolean returnMissingImageOnError,
-			Device device) {
-		try {
-			if (returnMissingImageOnError)
-				return new Image(device, DEFAULT_IMAGE_DATA);
-		} catch (SWTException nextException) {
-			return null;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the filename for the ImageData.
-	 * 
-	 * @return {@link String} or <code>null</code> if the file cannot be found
-	 */
-	private String getFilePath() {
-
-		if (location == null)
-			return new Path(name).toOSString();
-
-		URL resource = location.getResource(name);
-
-		if (resource == null)
-			return null;
-		try {
-			if (JFaceActivator.getBundleContext() == null) {// Stand-alone case
-
-				return new Path(resource.getFile()).toOSString();
-			}
-			return new Path(FileLocator.toFileURL(resource).getPath()).toOSString();
-		} catch (IOException e) {
-			Policy.logException(e);
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontDescriptor.java
deleted file mode 100644
index a3fca83..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontDescriptor.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Lightweight descriptor for a font. Creates the described font on demand.
- * Subclasses can implement different ways of describing a font. These objects
- * will be compared, so hashCode(...) and equals(...) must return something 
- * meaningful.
- * 
- * @since 3.1
- */
-public abstract class FontDescriptor extends DeviceResourceDescriptor {
-    
-    /**
-     * Creates a FontDescriptor that describes an existing font. The resulting
-     * descriptor depends on the Font. Disposing the Font while the descriptor
-     * is still in use may throw a graphic disposed exception.
-     * 
-     * @since 3.1
-     *
-     * @deprecated use {@link FontDescriptor#createFrom(Font)}
-     *
-     * @param font a font to describe
-     * @param originalDevice must be the same Device that was passed into
-     * the font's constructor when it was first created.
-     * @return a newly created FontDescriptor.
-     */
-    public static FontDescriptor createFrom(Font font, Device originalDevice) {
-        return new ArrayFontDescriptor(font);
-    }
-    
-    /**
-     * Creates a FontDescriptor that describes an existing font. The resulting
-     * descriptor depends on the original Font, and disposing the original Font
-     * while the descriptor is still in use may cause SWT to throw a graphic
-     * disposed exception.
-     * 
-     * @since 3.1
-     *
-     * @param font font to create
-     * @return a newly created FontDescriptor that describes the given font
-     */
-    public static FontDescriptor createFrom(Font font) {
-        return new ArrayFontDescriptor(font);
-    }
-    
-    /**
-     * Creates a new FontDescriptor given the an array of FontData that describes 
-     * the font.
-     * 
-     * @since 3.1
-     *
-     * @param data an array of FontData that describes the font (will be passed into
-     * the Font's constructor)
-     * @return a FontDescriptor that describes the given font
-     */
-    public static FontDescriptor createFrom(FontData[] data) {
-        return new ArrayFontDescriptor(data);
-    }
-    
-    /**
-     * Creates a new FontDescriptor given the associated FontData
-     * 
-     * @param data FontData describing the font to create
-     * @return a newly created FontDescriptor
-     */
-    public static FontDescriptor createFrom(FontData data) {
-        return new ArrayFontDescriptor(new FontData[]{data});
-    }
-    
-    /**
-     * Creates a new FontDescriptor given an OS-specific font name, height, and style.
-     * 
-     * @see Font#Font(org.eclipse.swt.graphics.Device, java.lang.String, int, int)
-     *
-     * @param name os-specific font name
-     * @param height height (pixels)
-     * @param style a bitwise combination of NORMAL, BOLD, ITALIC 
-     * @return a new FontDescriptor
-     */
-    public static FontDescriptor createFrom(String name, int height, int style) {
-        return createFrom(new FontData(name, height, style));
-    }
-    
-    /**
-     * Returns the set of FontData associated with this font. Modifying the elements
-     * in the returned array has no effect on the original FontDescriptor.
-     * 
-     * @return the set of FontData associated with this font
-     * @since 3.3
-     */
-    public FontData[] getFontData() {
-    	Font tempFont = createFont(Display.getCurrent());
-    	FontData[] result = tempFont.getFontData();
-    	destroyFont(tempFont);
-    	return result;
-    }
-    
-    /**
-     * Returns an array of FontData containing copies of the FontData
-     * from the original. 
-     * 
-     * @param original array to copy
-     * @return a deep copy of the original array
-     * @since 3.3
-     */
-    public static FontData[] copy(FontData[] original) {
-    	FontData[] result = new FontData[original.length];
-    	for (int i = 0; i < original.length; i++) {
-			FontData next = original[i];
-			
-			result[i] = copy(next);
-		}
-    	
-    	return result;
-    }
-    
-    /**
-     * Returns a copy of the original FontData
-     * 
-	 * @param next FontData to copy
-	 * @return a copy of the given FontData
-     * @since 3.3
-	 */
-	public static FontData copy(FontData next) {
-		FontData result = new FontData(next.getName(), next.getHeight(), next.getStyle());
-		result.setLocale(next.getLocale());
-		return result;
-	}
-
-	/**
-     * Returns a FontDescriptor that is equivalent to the reciever, but uses
-     * the given style bits. 
-     * 
-     * <p>Does not modify the reciever.</p>
-     * 
-     * @param style a bitwise combination of SWT.NORMAL, SWT.ITALIC and SWT.BOLD
-     * @return a new FontDescriptor with the given style
-     * 
-     * @since 3.3
-     */
-    public final FontDescriptor setStyle(int style) {
-    	FontData[] data = getFontData();
-    	
-    	for (int i = 0; i < data.length; i++) {
-			FontData next = data[i];
-			
-			next.setStyle(style);
-		}
-
-    	// Optimization: avoid holding onto extra instances by returning the reciever if
-    	// if it is exactly the same as the result
-    	FontDescriptor result = new ArrayFontDescriptor(data);
-    	if (result.equals(this)) {
-    		return this;
-    	}
-    	
-    	return result;
-    }
-    
-    /**
-     * <p>Returns a FontDescriptor that is equivalent to the reciever, but
-     * has the given style bits, in addition to any styles the reciever already has.</p>
-     * 
-     * <p>Does not modify the reciever.</p>
-     * 
-     * @param style a bitwise combination of SWT.NORMAL, SWT.ITALIC and SWT.BOLD
-     * @return a new FontDescriptor with the given additional style bits
-     * @since 3.3
-     */
-    public final FontDescriptor withStyle(int style) {
-    	FontData[] data = getFontData();
-    	
-    	for (int i = 0; i < data.length; i++) {
-			FontData next = data[i];
-			
-			next.setStyle(next.getStyle() | style);
-		}
-    	
-    	// Optimization: avoid allocating extra instances by returning the reciever if
-    	// if it is exactly the same as the result
-    	FontDescriptor result = new ArrayFontDescriptor(data);
-    	if (result.equals(this)) {
-    		return this;
-    	}
-    	
-    	return result;    	
-    }
-    
-    /**
-     * <p>Returns a new FontDescriptor that is equivalent to the reciever, but
-     * has the given height.</p>
-     * 
-     * <p>Does not modify the reciever.</p>
-     * 
-     * @param height a height, in points
-     * @return a new FontDescriptor with the height, in points
-     * @since 3.3
-     */
-    public final FontDescriptor setHeight(int height) {
-    	FontData[] data = getFontData();
-    	
-    	for (int i = 0; i < data.length; i++) {
-			FontData next = data[i];
-			
-			next.setHeight(height);
-		}
-    	
-    	// Optimization: avoid holding onto extra instances by returning the reciever if
-    	// if it is exactly the same as the result
-    	FontDescriptor result = new ArrayFontDescriptor(data);
-    	if (result.equals(this)) {
-    		return this;
-    	}
-    	
-    	return result;    	
-    }
-
-    /**
-     * <p>Returns a FontDescriptor that is equivalent to the reciever, but whose height
-     * is larger by the given number of points.</p>
-     * 
-     * <p>Does not modify the reciever.</p>
-     * 
-     * @param heightDelta a change in height, in points. Negative values will return smaller
-     * fonts. 
-     * @return a FontDescriptor whose height differs from the reciever by the given number
-     * of points. 
-     * @since 3.3
-     */
-    public final FontDescriptor increaseHeight(int heightDelta) {
-    	if (heightDelta == 0) {
-    		return this;
-    	}
-    	FontData[] data = getFontData();
-    	
-    	for (int i = 0; i < data.length; i++) {
-			FontData next = data[i];
-			
-			next.setHeight(next.getHeight() + heightDelta);
-		}
-    	
-    	return new ArrayFontDescriptor(data);    	
-    }
-    
-    /**
-     * Creates the Font described by this descriptor. 
-     * 
-     * @since 3.1 
-     *
-     * @param device device on which to allocate the font
-     * @return a newly allocated Font (never null)
-     * @throws DeviceResourceException if unable to allocate the Font
-     */
-    public abstract Font createFont(Device device) throws DeviceResourceException;
-    
-    /**
-     * Deallocates anything that was allocated by createFont, given a font
-     * that was allocated by an equal FontDescriptor.
-     * 
-     * @since 3.1 
-     *
-     * @param previouslyCreatedFont previously allocated font
-     */
-    public abstract void destroyFont(Font previouslyCreatedFont);
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#create(org.eclipse.swt.graphics.Device)
-     */
-    public final Object createResource(Device device) throws DeviceResourceException {
-        return createFont(device);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#destroy(java.lang.Object)
-     */
-    public final void destroyResource(Object previouslyCreatedObject) {
-        destroyFont((Font)previouslyCreatedObject);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
deleted file mode 100644
index 88ce0ea..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
+++ /dev/null
@@ -1,839 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A font registry maintains a mapping between symbolic font names 
- * and SWT fonts.
- * <p>
- * A font registry owns all of the font objects registered
- * with it, and automatically disposes of them when the SWT Display
- * that creates the fonts is disposed. Because of this, clients do 
- * not need to (indeed, must not attempt to) dispose of font 
- * objects themselves.
- * </p>
- * <p>
- * A special constructor is provided for populating a font registry
- * from a property files using the standard Java resource bundle mechanism.
- * </p>
- * <p>
- * Methods are provided for registering listeners that will be kept
- * apprised of changes to list of registed fonts.
- * </p>
- * <p>
- * Clients may instantiate this class (it was not designed to be subclassed).
- * </p>
- * 
- * Since 3.0 this class extends ResourceRegistry.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class FontRegistry extends ResourceRegistry {
-
-    /**
-     * FontRecord is a private helper class that holds onto a font
-     * and can be used to generate its bold and italic version. 
-     */
-    private class FontRecord {
-
-        Font baseFont;
-
-        Font boldFont;
-
-        Font italicFont;
-
-        FontData[] baseData;
-
-        /**
-         * Create a new instance of the receiver based on the 
-         * plain font and the data for it.
-         * @param plainFont The base looked up font.
-         * @param data The data used to look it up.
-         */
-        FontRecord(Font plainFont, FontData[] data) {
-            baseFont = plainFont;
-            baseData = data;
-        }
-
-        /**
-         * Dispose any of the fonts created for this record.
-         */
-        void dispose() {
-            baseFont.dispose();
-            if (boldFont != null) {
-				boldFont.dispose();
-			}
-            if (italicFont != null) {
-				italicFont.dispose();
-			}
-        }
-
-        /**
-         * Return the base Font.
-         * @return Font
-         */
-        public Font getBaseFont() {
-            return baseFont;
-        }
-
-        /**
-         * Return the bold Font. Create a bold version
-         * of the base font to get it.
-         * @return Font
-         */
-        public Font getBoldFont() {
-            if (boldFont != null) {
-				return boldFont;
-			}
-
-            FontData[] boldData = getModifiedFontData(SWT.BOLD);
-            boldFont = new Font(Display.getCurrent(), boldData);
-            return boldFont;
-        }
-
-        /**
-         * Get a version of the base font data with the specified 
-         * style.
-         * @param style the new style
-         * @return the font data with the style {@link FontData#FontData(String, int, int)}
-         * @see SWT#ITALIC
-         * @see SWT#NORMAL
-         * @see SWT#BOLD
-         * @todo Generated comment
-         */
-        private FontData[] getModifiedFontData(int style) {
-            FontData[] styleData = new FontData[baseData.length];
-            for (int i = 0; i < styleData.length; i++) {
-                FontData base = baseData[i];
-                styleData[i] = new FontData(base.getName(), base.getHeight(),
-                        base.getStyle() | style);
-            }
-
-            return styleData;
-        }
-
-        /**
-         * Return the italic Font. Create an italic version of the
-         * base font to get it.
-         * @return Font
-         */
-        public Font getItalicFont() {
-            if (italicFont != null) {
-				return italicFont;
-			}
-
-            FontData[] italicData = getModifiedFontData(SWT.ITALIC);
-            italicFont = new Font(Display.getCurrent(), italicData);
-            return italicFont;
-        }
-
-        /**
-         * Add any fonts that were allocated for this record to the
-         * stale fonts. Anything that matches the default font will
-         * be skipped.
-         * @param defaultFont The system default.
-         */
-        void addAllocatedFontsToStale(Font defaultFont) {
-            //Return all of the fonts allocated by the receiver.
-            //if any of them are the defaultFont then don't bother.
-            if (defaultFont != baseFont && baseFont != null) {
-				staleFonts.add(baseFont);
-			}
-            if (defaultFont != boldFont && boldFont != null) {
-				staleFonts.add(boldFont);
-			}
-            if (defaultFont != italicFont && italicFont != null) {
-				staleFonts.add(italicFont);
-			}
-        }
-    }
-
-    /**
-     * Table of known fonts, keyed by symbolic font name
-     * (key type: <code>String</code>, 
-     *  value type: <code>FontRecord</code>.
-     */
-    private Map stringToFontRecord = new HashMap(7);
-
-    /**
-     * Table of known font data, keyed by symbolic font name
-     * (key type: <code>String</code>, 
-     *  value type: <code>org.eclipse.swt.graphics.FontData[]</code>).
-     */
-    private Map stringToFontData = new HashMap(7);
-
-    /**
-     * Collection of Fonts that are now stale to be disposed
-     * when it is safe to do so (i.e. on shutdown).
-     * @see List
-     */
-    private List staleFonts = new ArrayList();
-
-    /**
-     * Runnable that cleans up the manager on disposal of the display.
-     */
-    protected Runnable displayRunnable = new Runnable() {
-        public void run() {
-            clearCaches();
-        }
-    };
-
-	private boolean displayDisposeHooked;
-
-	private final boolean cleanOnDisplayDisposal;
-
-    /**
-     * Creates an empty font registry.
-     * <p>
-     * There must be an SWT Display created in the current 
-     * thread before calling this method.
-     * </p>
-     */
-    public FontRegistry() {
-    	this(Display.getCurrent(), true);
-    }
-
-    /**
-     * Creates a font registry and initializes its content from
-     * a property file.
-     * <p>
-     * There must be an SWT Display created in the current 
-     * thread before calling this method.
-     * </p>
-     * <p>
-     * The OS name (retrieved using <code>System.getProperty("os.name")</code>)
-     * is converted to lowercase, purged of whitespace, and appended 
-     * as suffix (separated by an underscore <code>'_'</code>) to the given 
-     * location string to yield the base name of a resource bundle
-     * acceptable to <code>ResourceBundle.getBundle</code>.
-     * The standard Java resource bundle mechanism is then used to locate
-     * and open the appropriate properties file, taking into account
-     * locale specific variations.
-     * </p>
-     * <p>
-     * For example, on the Windows 2000 operating system the location string
-     * <code>"com.example.myapp.Fonts"</code> yields the base name 
-     * <code>"com.example.myapp.Fonts_windows2000"</code>. For the US English locale,
-     * this further elaborates to the resource bundle name
-     * <code>"com.example.myapp.Fonts_windows2000_en_us"</code>.
-     * </p>
-     * <p>
-     * If no appropriate OS-specific resource bundle is found, the
-     * process is repeated using the location as the base bundle name.
-     * </p>
-     * <p>
-     * The property file contains entries that look like this:
-     * <pre>
-     *	textfont.0=MS Sans Serif-regular-10
-     *	textfont.1=Times New Roman-regular-10
-     *	
-     *	titlefont.0=MS Sans Serif-regular-12
-     *	titlefont.1=Times New Roman-regular-12
-     * </pre>
-     * Each entry maps a symbolic font names (the font registry keys) with
-     * a "<code>.<it>n</it></code> suffix to standard font names
-     * on the right. The suffix indicated order of preference: 
-     * "<code>.0</code>" indicates the first choice,
-     * "<code>.1</code>" indicates the second choice, and so on.
-     * </p>
-     * The following example shows how to use the font registry:
-     * <pre>
-     *	FontRegistry registry = new FontRegistry("com.example.myapp.fonts");
-     *  Font font = registry.get("textfont");
-     *  control.setFont(font);
-     *  ...
-     * </pre>
-     *
-     * @param location the name of the resource bundle
-     * @param loader the ClassLoader to use to find the resource bundle
-     * @exception MissingResourceException if the resource bundle cannot be found
-     * @since 2.1
-     */
-    public FontRegistry(String location, ClassLoader loader)
-            throws MissingResourceException {
-        Display display = Display.getCurrent();
-        Assert.isNotNull(display);
-        // FIXE: need to respect loader
-        //readResourceBundle(location, loader);
-        readResourceBundle(location);
-
-        cleanOnDisplayDisposal = true;
-        hookDisplayDispose(display);
-    }
-
-    /**
-     * Load the FontRegistry using the ClassLoader from the PlatformUI
-     * plug-in
-     * @param location the location to read the resource bundle from
-     * @throws MissingResourceException Thrown if a resource is missing
-     */
-    public FontRegistry(String location) throws MissingResourceException {
-        // FIXE:
-        //	this(location, WorkbenchPlugin.getDefault().getDescriptor().getPluginClassLoader());
-        this(location, null);
-    }
-
-    /**
-     * Read the resource bundle at location. Look for a file with the
-     * extension _os_ws first, then _os then just the name.
-     * @param location - String - the location of the file.
-     */
-
-    private void readResourceBundle(String location) {
-        String osname = System.getProperty("os.name").trim(); //$NON-NLS-1$
-        String wsname = SWT.getPlatform();
-        osname = StringConverter.removeWhiteSpaces(osname).toLowerCase();
-        wsname = StringConverter.removeWhiteSpaces(wsname).toLowerCase();
-        String OSLocation = location;
-        String WSLocation = location;
-        ResourceBundle bundle = null;
-        if (osname != null) {
-            OSLocation = location + "_" + osname; //$NON-NLS-1$
-            if (wsname != null) {
-				WSLocation = OSLocation + "_" + wsname; //$NON-NLS-1$
-			}
-        }
-
-        try {
-            bundle = ResourceBundle.getBundle(WSLocation);
-            readResourceBundle(bundle, WSLocation);
-        } catch (MissingResourceException wsException) {
-            try {
-                bundle = ResourceBundle.getBundle(OSLocation);
-                readResourceBundle(bundle, WSLocation);
-            } catch (MissingResourceException osException) {
-                if (location != OSLocation) {
-                    bundle = ResourceBundle.getBundle(location);
-                    readResourceBundle(bundle, WSLocation);
-                } else {
-					throw osException;
-				}
-            }
-        }
-    }
-
-    /**
-     * Creates an empty font registry.
-     *
-     * @param display the Display
-     */
-    public FontRegistry(Display display) {
-        this(display, true);
-    }
-    
-    /**
-	 * Creates an empty font registry.
-	 * 
-	 * @param display
-	 *            the <code>Display</code>
-	 * @param cleanOnDisplayDisposal
-	 *            whether all fonts allocated by this <code>FontRegistry</code>
-	 *            should be disposed when the display is disposed
-	 * @since 3.1
-	 */
-	public FontRegistry(Display display, boolean cleanOnDisplayDisposal) {
-		Assert.isNotNull(display);
-		this.cleanOnDisplayDisposal = cleanOnDisplayDisposal;
-		if (cleanOnDisplayDisposal) {
-			hookDisplayDispose(display);
-		}
-	}
-
-    /**
-	 * Find the first valid fontData in the provided list. If none are valid
-	 * return the first one regardless. If the list is empty return null. Return
-	 * <code>null</code> if one cannot be found.
-	 * 
-     * @param fonts the font list
-     * @param display the display used 
-     * @return the font data of the like describe above
-	 * 
-	 * @deprecated use bestDataArray in order to support Motif multiple entry
-	 *             fonts.
-	 */
-    public FontData bestData(FontData[] fonts, Display display) {
-        for (int i = 0; i < fonts.length; i++) {
-            FontData fd = fonts[i];
-
-            if (fd == null) {
-				break;
-			}
-
-            FontData[] fixedFonts = display.getFontList(fd.getName(), false);
-            if (isFixedFont(fixedFonts, fd)) {
-                return fd;
-            }
-
-            FontData[] scalableFonts = display.getFontList(fd.getName(), true);
-            if (scalableFonts.length > 0) {
-                return fd;
-            }
-        }
-
-        //None of the provided datas are valid. Return the
-        //first one as it is at least the first choice.
-        if (fonts.length > 0) {
-			return fonts[0];
-		}
-        
-        //Nothing specified 
-        return null;
-    }
-
-    /**
-     * Find the first valid fontData in the provided list. 
-     * If none are valid return the first one regardless.
-     * If the list is empty return <code>null</code>.
-     * 
-     * @param fonts list of fonts
-     * @param display the display
-     * @return font data like described above
-     * @deprecated use filterData in order to preserve 
-     * multiple entry fonts on Motif
-     */
-    public FontData[] bestDataArray(FontData[] fonts, Display display) {
-
-        FontData bestData = bestData(fonts, display);
-        if (bestData == null) {
-			return null;
-		}
-        
-        FontData[] datas = new FontData[1];
-        datas[0] = bestData;
-        return datas;
-    }
-    
-    /**
-     * Removes from the list all fonts that do not exist in this system.  
-     * If none are valid, return the first irregardless.  If the list is 
-     * empty return <code>null</code>.
-     * 
-     * @param fonts the fonts to check
-     * @param display the display to check against
-     * @return the list of fonts that have been found on this system
-     * @since 3.1
-     */
-    public FontData [] filterData(FontData [] fonts, Display display) {
-    	ArrayList good = new ArrayList(fonts.length);
-    	for (int i = 0; i < fonts.length; i++) {
-            FontData fd = fonts[i];
-
-            if (fd == null) {
-				continue;
-			}
-
-            FontData[] fixedFonts = display.getFontList(fd.getName(), false);
-            if (isFixedFont(fixedFonts, fd)) {
-                good.add(fd);
-            }
-
-            FontData[] scalableFonts = display.getFontList(fd.getName(), true);
-            if (scalableFonts.length > 0) {
-                good.add(fd);
-            }
-        }
-
-    	
-        //None of the provided datas are valid. Return the
-        //first one as it is at least the first choice.
-        if (good.isEmpty() && fonts.length > 0) {
-        	good.add(fonts[0]);
-        }
-        else if (fonts.length == 0) {
-        	return null;
-        }
-        
-        return (FontData[]) good.toArray(new FontData[good.size()]);    	
-    }
-    
-
-    /**
-     * Creates a new font with the given font datas or <code>null</code>
-     * if there is no data.
-     * @return FontRecord for the new Font or <code>null</code>.
-     */
-    private FontRecord createFont(String symbolicName, FontData[] fonts) {
-        Display display = Display.getCurrent();
-        if (display == null) {
-        	return null;
-        }
-        if (cleanOnDisplayDisposal && !displayDisposeHooked) {
-        	hookDisplayDispose(display);
-        }
-
-        FontData[] validData = filterData(fonts, display);
-        if (validData.length == 0) {
-            //Nothing specified 
-            return null;
-        } 
-
-        //Do not fire the update from creation as it is not a property change
-        put(symbolicName, validData, false);
-        Font newFont = new Font(display, validData);
-        return new FontRecord(newFont, validData);
-    }
-
-    /**
-     * Calculates the default font and returns the result.
-     * This method creates a font that must be disposed.
-     */
-    Font calculateDefaultFont() {
-        Display current = Display.getCurrent();
-        if (current == null) {
-            Shell shell = new Shell();
-            Font font = new Font(null, shell.getFont().getFontData());
-            shell.dispose();
-            return font;
-        }
-		return new Font(current, current.getSystemFont().getFontData());
-    }
-
-    /**
-     * Returns the default font data.  Creates it if necessary.
-     * @return Font
-     */
-    public Font defaultFont() {
-        return defaultFontRecord().getBaseFont();
-    }
-
-    /**
-     * Returns the font descriptor for the font with the given symbolic
-     * font name. Returns the default font if there is no special value
-     * associated with that name
-     * 
-     * @param symbolicName symbolic font name
-     * @return the font descriptor (never null)
-     * 
-     * @since 3.3
-     */
-    public FontDescriptor getDescriptor(String symbolicName) {
-        Assert.isNotNull(symbolicName);
-        return FontDescriptor.createFrom(getFontData(symbolicName));
-    }
-    
-    
-    
-    /**
-     * Returns the default font record.
-     */
-    private FontRecord defaultFontRecord() {
-
-        FontRecord record = (FontRecord) stringToFontRecord
-                .get(JFaceResources.DEFAULT_FONT);
-        if (record == null) {
-            Font defaultFont = calculateDefaultFont();
-            record = createFont(JFaceResources.DEFAULT_FONT, defaultFont
-                    .getFontData());
-            defaultFont.dispose();
-            stringToFontRecord.put(JFaceResources.DEFAULT_FONT, record);
-        }
-        return record;
-    }
-
-    /**
-     * Returns the default font data.  Creates it if necessary.
-     */
-    private FontData[] defaultFontData() {
-        return defaultFontRecord().baseData;
-    }
-
-    /**
-     * Returns the font data associated with the given symbolic font name.
-     * Returns the default font data if there is no special value associated
-     * with that name.
-     *
-     * @param symbolicName symbolic font name
-     * @return the font
-     */
-    public FontData[] getFontData(String symbolicName) {
-
-        Assert.isNotNull(symbolicName);
-        Object result = stringToFontData.get(symbolicName);
-        if (result == null) {
-			return defaultFontData();
-		}
-
-        return (FontData[]) result;
-    }
-
-    /**
-     * Returns the font associated with the given symbolic font name.
-     * Returns the default font if there is no special value associated
-     * with that name.
-     *
-     * @param symbolicName symbolic font name
-     * @return the font
-     */
-    public Font get(String symbolicName) {
-
-        return getFontRecord(symbolicName).getBaseFont();
-    }
-
-    /**
-     * Returns the bold font associated with the given symbolic font name.
-     * Returns the bolded default font if there is no special value associated
-     * with that name.
-     *
-     * @param symbolicName symbolic font name
-     * @return the font
-     * @since 3.0
-     */
-    public Font getBold(String symbolicName) {
-
-        return getFontRecord(symbolicName).getBoldFont();
-    }
-
-    /**
-     * Returns the italic font associated with the given symbolic font name.
-     * Returns the italic default font if there is no special value associated
-     * with that name.
-     *
-     * @param symbolicName symbolic font name
-     * @return the font
-     * @since 3.0
-     */
-    public Font getItalic(String symbolicName) {
-
-        return getFontRecord(symbolicName).getItalicFont();
-    }
-
-    /**
-     * Return the font record for the key.
-     * @param symbolicName The key for the record.
-     * @return FontRecird
-     */
-    private FontRecord getFontRecord(String symbolicName) {
-        Assert.isNotNull(symbolicName);
-        Object result = stringToFontRecord.get(symbolicName);
-        if (result != null) {
-			return (FontRecord) result;
-		}
-
-        result = stringToFontData.get(symbolicName);
-
-        FontRecord fontRecord;
-
-        if (result == null) {
-			fontRecord = defaultFontRecord();
-		} else {
-			fontRecord = createFont(symbolicName, (FontData[]) result);
-		}
-
-        if (fontRecord == null) {
-			fontRecord = defaultFontRecord();
-		}
-
-        stringToFontRecord.put(symbolicName, fontRecord);
-        return fontRecord;
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceRegistry#getKeySet()
-     */
-    public Set getKeySet() {
-        return Collections.unmodifiableSet(stringToFontData.keySet());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceRegistry#hasValueFor(java.lang.String)
-     */
-    public boolean hasValueFor(String fontKey) {
-        return stringToFontData.containsKey(fontKey);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceRegistry#clearCaches()
-     */
-    protected void clearCaches() {
-
-        Iterator iterator = stringToFontRecord.values().iterator();
-        while (iterator.hasNext()) {
-            Object next = iterator.next();
-            ((FontRecord) next).dispose();
-        }
-
-        disposeFonts(staleFonts.iterator());
-        stringToFontRecord.clear();
-        staleFonts.clear();
-        
-        displayDisposeHooked = false;
-    }
-
-    /**
-     * Dispose of all of the fonts in this iterator.
-     * @param iterator over Collection of Font
-     */
-    private void disposeFonts(Iterator iterator) {
-        while (iterator.hasNext()) {
-            Object next = iterator.next();
-            ((Font) next).dispose();
-        }
-    }
-
-    /**
-     * Hook a dispose listener on the SWT display.
-     */
-    private void hookDisplayDispose(Display display) {
-    	displayDisposeHooked = true;
-    	display.disposeExec(displayRunnable);
-    }
-
-    /**
-     * Checks whether the given font is in the list of fixed fonts.
-     */
-    private boolean isFixedFont(FontData[] fixedFonts, FontData fd) {
-        // Can't use FontData.equals() since some values aren't
-        // set if a fontdata isn't used.
-        int height = fd.getHeight();
-        String name = fd.getName();
-        for (int i = 0; i < fixedFonts.length; i++) {
-            FontData fixed = fixedFonts[i];
-            if (fixed.getHeight() == height && fixed.getName().equals(name)) {
-				return true;
-			}
-        }
-        return false;
-    }
-
-    /**
-     * Converts a String into a FontData object.
-     */
-    private FontData makeFontData(String value) throws MissingResourceException {
-        try {
-            return StringConverter.asFontData(value.trim());
-        } catch (DataFormatException e) {
-            throw new MissingResourceException(
-                    "Wrong font data format. Value is: \"" + value + "\"", getClass().getName(), value); //$NON-NLS-2$//$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Adds (or replaces) a font to this font registry under the given
-     * symbolic name.
-     * <p>
-     * A property change event is reported whenever the mapping from
-     * a symbolic name to a font changes. The source of the event is
-     * this registry; the property name is the symbolic font name.
-     * </p>
-     *
-     * @param symbolicName the symbolic font name
-     * @param fontData an Array of FontData
-     */
-    public void put(String symbolicName, FontData[] fontData) {
-        put(symbolicName, fontData, true);
-    }
-
-    /**
-     * Adds (or replaces) a font to this font registry under the given
-     * symbolic name.
-     * <p>
-     * A property change event is reported whenever the mapping from
-     * a symbolic name to a font changes. The source of the event is
-     * this registry; the property name is the symbolic font name.
-     * </p>
-     *
-     * @param symbolicName the symbolic font name
-     * @param fontData an Array of FontData
-     * @param update - fire a font mapping changed if true. False
-     * 	if this method is called from the get method as no setting
-     *  has changed.
-     */
-    private void put(String symbolicName, FontData[] fontData, boolean update) {
-
-        Assert.isNotNull(symbolicName);
-        Assert.isNotNull(fontData);
-
-        FontData[] existing = (FontData[]) stringToFontData.get(symbolicName);
-        if (Arrays.equals(existing, fontData)) {
-			return;
-		}
-
-        FontRecord oldFont = (FontRecord) stringToFontRecord
-                .remove(symbolicName);
-        stringToFontData.put(symbolicName, fontData);
-        if (update) {
-			fireMappingChanged(symbolicName, existing, fontData);
-		}
-
-        if (oldFont != null) {
-			oldFont.addAllocatedFontsToStale(defaultFontRecord().getBaseFont());
-		}
-    }
-
-    /**
-     * Reads the resource bundle.  This puts FontData[] objects
-     * in the mapping table.  These will lazily be turned into
-     * real Font objects when requested.
-     */
-    private void readResourceBundle(ResourceBundle bundle, String bundleName)
-            throws MissingResourceException {
-        Enumeration keys = bundle.getKeys();
-        while (keys.hasMoreElements()) {
-            String key = (String) keys.nextElement();
-            int pos = key.lastIndexOf('.');
-            if (pos == -1) {
-                stringToFontData.put(key, new FontData[] { makeFontData(bundle
-                        .getString(key)) });
-            } else {
-                String name = key.substring(0, pos);
-                int i = 0;
-                try {
-                    i = Integer.parseInt(key.substring(pos + 1));
-                } catch (NumberFormatException e) {
-                    //Panic the file can not be parsed.
-                    throw new MissingResourceException(
-                            "Wrong key format ", bundleName, key); //$NON-NLS-1$
-                }
-                FontData[] elements = (FontData[]) stringToFontData.get(name);
-                if (elements == null) {
-                    elements = new FontData[8];
-                    stringToFontData.put(name, elements);
-                }
-                if (i > elements.length) {
-                    FontData[] na = new FontData[i + 8];
-                    System.arraycopy(elements, 0, na, 0, elements.length);
-                    elements = na;
-                    stringToFontData.put(name, elements);
-                }
-                elements[i] = makeFontData(bundle.getString(key));
-            }
-        }
-    }
-
-	/**
-	 * Returns the font descriptor for the JFace default font.
-	 * 
-	 * @return the font descriptor for the JFace default font
-     * @since 3.3
-	 */
-	public FontDescriptor defaultFontDescriptor() {
-		return FontDescriptor.createFrom(defaultFontData());
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDataImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDataImageDescriptor.java
deleted file mode 100644
index 45d1b93..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDataImageDescriptor.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-
-/**
- * @since 3.1
- */
-class ImageDataImageDescriptor extends ImageDescriptor {
-
-    private ImageData data;
-    
-    /**
-     * Original image being described, or null if this image is described
-     * completely using its ImageData
-     */
-    private Image originalImage = null;
-    
-    /**
-     * Creates an image descriptor, given an image and the device it was created on.
-     * 
-     * @param originalImage
-     */
-    ImageDataImageDescriptor(Image originalImage) {
-        this(originalImage.getImageData());
-        this.originalImage = originalImage;
-    }
-    
-    /**
-     * Creates an image descriptor, given some image data.
-     * 
-     * @param data describing the image
-     */
-
-    ImageDataImageDescriptor(ImageData data) {
-        this.data = data;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#create(org.eclipse.swt.graphics.Device)
-     */
-    public Object createResource(Device device) throws DeviceResourceException {
-
-        // If this descriptor is an existing font, then we can return the original font
-        // if this is the same device.
-        if (originalImage != null) {
-            // If we're allocating on the same device as the original font, return the original.
-            if (originalImage.getDevice() == device) {
-                return originalImage;
-            }
-        }
-        
-        return super.createResource(device);
-    }
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#destroy(java.lang.Object)
-     */
-    public void destroyResource(Object previouslyCreatedObject) {
-        if (previouslyCreatedObject == originalImage) {
-            return;
-        }
-        
-        super.destroyResource(previouslyCreatedObject);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ImageDescriptor#getImageData()
-     */
-    public ImageData getImageData() {
-        return data;
-    }
-    
-    /* (non-Javadoc)
-     * @see Object#hashCode
-     */
-    public int hashCode() {
-    	 if (originalImage != null) {
-             return System.identityHashCode(originalImage);
-         }
-         return data.hashCode();
-    }
-
-    /* (non-Javadoc)
-     * @see Object#equals
-     */
-    public boolean equals(Object obj) {
-        if (!(obj instanceof ImageDataImageDescriptor)) {
-			return false;
-		} 
-        
-        ImageDataImageDescriptor imgWrap = (ImageDataImageDescriptor) obj;
-        
-        //Intentionally using == instead of equals() as Image.hashCode() changes
-        //when the image is disposed and so leaks may occur with equals()
-       
-        if (originalImage != null) {
-            return imgWrap.originalImage == originalImage;
-        }
-        
-        return (imgWrap.originalImage == null && data.equals(imgWrap.data));
-    }
-    
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java
deleted file mode 100644
index f0f8011..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.net.URL;
-
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * An image descriptor is an object that knows how to create
- * an SWT image.  It does not hold onto images or cache them,
- * but rather just creates them on demand.  An image descriptor
- * is intended to be a lightweight representation of an image
- * that can be manipulated even when no SWT display exists.
- * <p>
- * This package defines a concrete image descriptor implementation
- * which reads an image from a file (<code>FileImageDescriptor</code>).
- * It also provides abstract framework classes (this one and
- * <code>CompositeImageDescriptor</code>) which may be subclassed to define
- * news kinds of image descriptors.
- * </p>
- * <p>
- * Using this abstract class involves defining a concrete subclass
- * and providing an implementation for the <code>getImageData</code>
- * method.
- * </p>
- * <p>
- * There are two ways to get an Image from an ImageDescriptor. The method
- * createImage will always return a new Image which must be disposed by
- * the caller. Alternatively, createResource() returns a shared
- * Image. When the caller is done with an image obtained from createResource,
- * they must call destroyResource() rather than disposing the Image directly.
- * The result of createResource() can be safely cast to an Image. 
- * </p>
- *
- * @see org.eclipse.swt.graphics.Image
- */
-public abstract class ImageDescriptor extends DeviceResourceDescriptor {
-
-    /** 
-     * A small red square used to warn that an image cannot be created.
-     * <p>
-     */
-    protected static final ImageData DEFAULT_IMAGE_DATA = new ImageData(6, 6,
-            1, new PaletteData(new RGB[] { new RGB(255, 0, 0) }));
-
-    /**
-     * Constructs an image descriptor.
-     */
-    protected ImageDescriptor() {
-        // do nothing
-    }
-
-    /**
-     * Creates and returns a new image descriptor from a file.
-     * Convenience method for
-     * <code>new FileImageDescriptor(location,filename)</code>.
-     *
-     * @param location the class whose resource directory contain the file
-     * @param filename the file name
-     * @return a new image descriptor
-     */
-    public static ImageDescriptor createFromFile(Class location, String filename) {
-        return new FileImageDescriptor(location, filename);
-    }
-    
-    /**
-     * Creates and returns a new image descriptor given ImageData
-     * describing the image.
-     * 
-     * @since 3.1 
-     *
-     * @param data contents of the image
-     * @return newly created image descriptor
-     */
-    public static ImageDescriptor createFromImageData(ImageData data) {
-        return new ImageDataImageDescriptor(data);
-    }
-    
-    /**
-     * Creates and returns a new image descriptor for the given image. Note 
-     * that disposing the original Image will cause the descriptor to become invalid.
-     * 
-     * @since 3.1 
-     *
-     * @param img image to create
-     * @return a newly created image descriptor
-     */
-    public static ImageDescriptor createFromImage(Image img) {
-        return new ImageDataImageDescriptor(img);
-    }
-    
-    /**
-     * Creates an ImageDescriptor based on the given original descriptor, but with additional
-     * SWT flags.
-     *  
-     * <p>
-     * Note that this sort of ImageDescriptor is slower and consumes more resources than
-     * a regular image descriptor. It will also never generate results that look as nice as
-     * a hand-drawn image. Clients are encouraged to supply their own disabled/grayed/etc. images
-     * rather than using a default image and transforming it.
-     * </p>
-     * 
-     * @param originalImage image to transform
-     * @param swtFlags any flag that can be passed to the flags argument of Image#Image(Device, Image, int)
-     * @return an ImageDescriptor that creates new images by transforming the given image descriptor
-     * 
-     * @see Image#Image(Device, Image, int) 
-     * @since 3.1 
-     *
-     */
-    public static ImageDescriptor createWithFlags(ImageDescriptor originalImage, int swtFlags) {
-        return new DerivedImageDescriptor(originalImage, swtFlags);
-    }
-
-    /**
-     * Creates and returns a new image descriptor for the given image. This
-     * method takes the Device that created the Image as an argument, allowing
-     * the original Image to be reused if the descriptor is asked for another
-     * Image on the same device. Note that disposing the original Image will 
-     * cause the descriptor to become invalid.
-     * 
-     * @deprecated use {@link ImageDescriptor#createFromImage(Image)}
-     * @since 3.1 
-     *
-     * @param img image to create
-     * @param theDevice the device that was used to create the Image
-     * @return a newly created image descriptor
-     */
-    public static ImageDescriptor createFromImage(Image img, Device theDevice) {
-        return new ImageDataImageDescriptor(img);
-    }
-    
-    /**
-     * Creates and returns a new image descriptor from a URL.
-     *
-     * @param url The URL of the image file.
-     * @return a new image descriptor
-     */
-    public static ImageDescriptor createFromURL(URL url) {
-        if (url == null) {
-            return getMissingImageDescriptor();
-        }
-        return new URLImageDescriptor(url);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#createResource(org.eclipse.swt.graphics.Device)
-     */
-    public Object createResource(Device device) throws DeviceResourceException {
-        Image result = createImage(false, device);
-        if (result == null) {
-            throw new DeviceResourceException(this);
-        }
-        return result;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.DeviceResourceDescriptor#destroyResource(Object)
-     */
-    public void destroyResource(Object previouslyCreatedObject) {
-        ((Image)previouslyCreatedObject).dispose();
-    }
-    
-    /**
-	 * Creates and returns a new SWT image for this image descriptor. Note that
-	 * each call returns a new SWT image object. The returned image must be
-	 * explicitly disposed using the image's dispose call. The image will not be
-	 * automatically garbage collected. A default image is returned in the event
-	 * of an error.
-     * 
-     * <p>
-     * Note: this method differs from createResource(Device) in that the returned image
-     * must be disposed directly, whereas an image obtained from createResource(...)
-     * must be disposed by calling destroyResource(...). It is not possible to 
-     * mix-and-match. If you obtained the Image from this method, you must not dispose
-     * it by calling destroyResource. Clients are encouraged to use 
-     * create/destroyResource and downcast the result to Image rather than using 
-     * createImage.
-     * </p>
-     * 
-	 * <p>
-	 * Note: it is still possible for this method to return <code>null</code>
-	 * in extreme cases, for example if SWT runs out of image handles.
-	 * </p>
-	 * 
-	 * @return a new image or <code>null</code> if the image could not be
-	 *         created
-	 */
-    public Image createImage() {
-        return createImage(true);
-    }
-
-    /**
-	 * Creates and returns a new SWT image for this image descriptor. The
-	 * returned image must be explicitly disposed using the image's dispose
-	 * call. The image will not be automatically garbage collected. In the event
-	 * of an error, a default image is returned if
-	 * <code>returnMissingImageOnError</code> is true, otherwise
-	 * <code>null</code> is returned.
-	 * <p>
-	 * Note: Even if <code>returnMissingImageOnError</code> is true, it is
-	 * still possible for this method to return <code>null</code> in extreme
-	 * cases, for example if SWT runs out of image handles.
-	 * </p>
-	 * 
-	 * @param returnMissingImageOnError
-	 *            flag that determines if a default image is returned on error
-	 * @return a new image or <code>null</code> if the image could not be
-	 *         created
-	 */
-    public Image createImage(boolean returnMissingImageOnError) {
-        return createImage(returnMissingImageOnError, Display.getCurrent());
-    }
-
-    /**
-	 * Creates and returns a new SWT image for this image descriptor. The
-	 * returned image must be explicitly disposed using the image's dispose
-	 * call. The image will not be automatically garbage collected. A default
-	 * image is returned in the event of an error.
-	 * <p>
-	 * Note: it is still possible for this method to return <code>null</code>
-	 * in extreme cases, for example if SWT runs out of image handles.
-	 * </p>
-	 * 
-	 * @param device
-	 *            the device on which to create the image
-	 * @return a new image or <code>null</code> if the image could not be
-	 *         created
-	 * @since 2.0
-	 */
-    public Image createImage(Device device) {
-        return createImage(true, device);
-    }
-
-    /**
-	 * Creates and returns a new SWT image for this image descriptor. The
-	 * returned image must be explicitly disposed using the image's dispose
-	 * call. The image will not be automatically garbage collected. In the even
-	 * of an error, a default image is returned if
-	 * <code>returnMissingImageOnError</code> is true, otherwise
-	 * <code>null</code> is returned.
-	 * <p>
-	 * Note: Even if <code>returnMissingImageOnError</code> is true, it is
-	 * still possible for this method to return <code>null</code> in extreme
-	 * cases, for example if SWT runs out of image handles.
-	 * </p>
-	 * 
-	 * @param returnMissingImageOnError
-	 *            flag that determines if a default image is returned on error
-	 * @param device
-	 *            the device on which to create the image
-	 * @return a new image or <code>null</code> if the image could not be
-	 *         created
-	 * @since 2.0
-	 */
-    public Image createImage(boolean returnMissingImageOnError, Device device) {
-
-        ImageData data = getImageData();
-        if (data == null) {
-            if (!returnMissingImageOnError) {
-                return null;
-            }
-            data = DEFAULT_IMAGE_DATA;
-        }
-
-        /*
-         * Try to create the supplied image. If there is an SWT Exception try and create
-         * the default image if that was requested. Return null if this fails.
-         */
-
-        try {
-            if (data.transparentPixel >= 0) {
-                ImageData maskData = data.getTransparencyMask();
-                return new Image(device, data, maskData);
-            }
-            return new Image(device, data);
-        } catch (SWTException exception) {
-            if (returnMissingImageOnError) {
-                try {
-                    return new Image(device, DEFAULT_IMAGE_DATA);
-                } catch (SWTException nextException) {
-                    return null;
-                }
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Creates and returns a new SWT <code>ImageData</code> object
-     * for this image descriptor.
-     * Note that each call returns a new SWT image data object.
-     * <p>
-     * This framework method is declared public so that it is
-     * possible to request an image descriptor's image data without
-     * creating an SWT image object.
-     * </p>
-     * <p>
-     * Returns <code>null</code> if the image data could not be created.
-     * </p>
-     *
-     * @return a new image data or <code>null</code>
-     */
-    public abstract ImageData getImageData();
-
-    /**
-     * Returns the shared image descriptor for a missing image.
-     *
-     * @return the missing image descriptor
-     */
-    public static ImageDescriptor getMissingImageDescriptor() {
-        return MissingImageDescriptor.getInstance();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageRegistry.java
deleted file mode 100644
index 54b0c02..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageRegistry.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Steven Ketcham (sketcham@dsicdi.com) - Bug 42451
- *     [Dialogs] ImageRegistry throws null pointer exception in
- *     application with multiple Display's
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * An image registry maintains a mapping between symbolic image names 
- * and SWT image objects or special image descriptor objects which
- * defer the creation of SWT image objects until they are needed.
- * <p>
- * An image registry owns all of the image objects registered
- * with it, and automatically disposes of them when the SWT Display
- * that creates the images is disposed. Because of this, clients do not 
- * need to (indeed, must not attempt to) dispose of these images themselves.
- * </p>
- * <p>
- * Clients may instantiate this class (it was not designed to be subclassed).
- * </p>
- * <p>
- * Unlike the FontRegistry, it is an error to replace images. As a result
- * there are no events that fire when values are changed in the registry
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ImageRegistry {
-    /**
-     * display used when getting images
-     */
-    private Display display;
-
-    private ResourceManager manager;
-
-    private Map table;
-    
-    private Runnable disposeRunnable = new Runnable() {
-        public void run() {
-            dispose();
-        }
-    };
-    
-    /**
-     * Contains the data for an entry in the registry. 
-     */
-    private static class Entry {
-    	/** the image */
-        protected Image image;
-
-        /** the descriptor */
-        protected ImageDescriptor descriptor;
-    }
-    
-    private static class OriginalImageDescriptor extends ImageDescriptor {
-        private Image original;
-        private int refCount = 0;
-        private Device originalDisplay;
-        
-        /**
-         * @param original the original image
-         * @param originalDisplay the device the image is part of
-         */
-        public OriginalImageDescriptor(Image original, Device originalDisplay) {
-            this.original = original;
-            this.originalDisplay = originalDisplay;
-        }
-        
-        public Object createResource(Device device) throws DeviceResourceException {
-            if (device == originalDisplay) {
-                refCount++;
-                return original;
-            }
-            return super.createResource(device);
-        }
-        
-        public void destroyResource(Object toDispose) {
-            if (original == toDispose) {
-                refCount--;
-                if (refCount == 0) {
-                    original.dispose();
-                    original = null;
-                }
-            } else {
-                super.destroyResource(toDispose);
-            }
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.resource.ImageDescriptor#getImageData()
-         */
-        public ImageData getImageData() {
-            return original.getImageData();
-        }
-    }
-        
-    /**
-     * Creates an empty image registry.
-     * <p>
-     * There must be an SWT Display created in the current 
-     * thread before calling this method.
-     * </p>
-     */
-    public ImageRegistry() {
-        this(Display.getCurrent());
-    }
-
-    /**
-     * Creates an empty image registry using the given resource manager to allocate images.
-     * 
-     * @param manager the resource manager used to allocate images
-     * 
-     * @since 3.1
-     */
-    public ImageRegistry(ResourceManager manager) {
-        Assert.isNotNull(manager);
-        Device dev = manager.getDevice();
-        if (dev instanceof Display) {
-            this.display = (Display)dev;
-        }
-        this.manager = manager;
-        manager.disposeExec(disposeRunnable);
-    }
-    
-    /**
-     * Creates an empty image registry.
-     * 
-     * @param display this <code>Display</code> must not be 
-     *        <code>null</code> and must not be disposed in order
-     *        to use this registry
-     */
-    public ImageRegistry(Display display) {
-        this(JFaceResources.getResources(display));
-    }
-    
-    /**
-     * Returns the image associated with the given key in this registry, 
-     * or <code>null</code> if none.
-     * 
-     * @param key the key
-     * @return the image, or <code>null</code> if none
-     */
-    public Image get(String key) {
-
-        // can be null
-        if (key == null) {
-            return null;
-        }
-        
-        if (display != null) {
-            /**
-             * NOTE, for backwards compatibility the following images are supported
-             * here, they should never be disposed, hence we explicitly return them 
-             * rather then registering images that SWT will dispose.  
-             * 
-             * Applications should go direclty to SWT for these icons.
-             * 
-             * @see Display.getSystemIcon(int ID)
-             */
-            int swtKey = -1;
-            if (key.equals(Dialog.DLG_IMG_INFO)) {
-                swtKey = SWT.ICON_INFORMATION;
-            }
-            if (key.equals(Dialog.DLG_IMG_QUESTION)) {
-                swtKey = SWT.ICON_QUESTION;
-            }
-            if (key.equals(Dialog.DLG_IMG_WARNING)) {
-                swtKey = SWT.ICON_WARNING;
-            }
-            if (key.equals(Dialog.DLG_IMG_ERROR)) {
-                swtKey = SWT.ICON_ERROR;
-            }
-            // if we actually just want to return an SWT image do so without
-            // looking in the registry
-            if (swtKey != -1) {
-                final Image[] image = new Image[1];
-                final int id = swtKey;
-                display.syncExec(new Runnable() {
-                    public void run() {
-                        image[0] = display.getSystemImage(id);
-                    }
-                });
-                return image[0];
-            }
-        }
-
-        Entry entry = getEntry(key);
-        if (entry == null) {
-            return null;
-        }
-        
-        if (entry.image == null) {
-            entry.image = manager.createImageWithDefault(entry.descriptor);
-        }
-        
-        return entry.image;
-    }
-
-    /**
-     * Returns the descriptor associated with the given key in this registry, 
-     * or <code>null</code> if none.
-     *
-     * @param key the key
-     * @return the descriptor, or <code>null</code> if none
-     * @since 2.1
-     */
-    public ImageDescriptor getDescriptor(String key) {
-        Entry entry = getEntry(key);
-        if (entry == null) {
-            return null;
-        }
-        
-        return entry.descriptor;
-    }
-
-    /**
-     * Adds (or replaces) an image descriptor to this registry. The first time
-     * this new entry is retrieved, the image descriptor's image will be computed 
-     * (via </code>ImageDescriptor.createImage</code>) and remembered. 
-     * This method replaces an existing image descriptor associated with the 
-     * given key, but fails if there is a real image associated with it.
-     *
-     * @param key the key
-     * @param descriptor the ImageDescriptor
-     * @exception IllegalArgumentException if the key already exists
-     */
-    public void put(String key, ImageDescriptor descriptor) {
-        Entry entry = getEntry(key);
-        if (entry == null) {
-            entry = new Entry();
-            getTable().put(key, entry);
-        }
-        
-        if (entry.image != null) {
-            throw new IllegalArgumentException(
-                    "ImageRegistry key already in use: " + key); //$NON-NLS-1$            
-        }
-        
-        entry.descriptor = descriptor;
-    }
-
-    /**
-     * Adds an image to this registry.  This method fails if there
-     * is already an image or descriptor for the given key.
-     * <p>
-     * Note that an image registry owns all of the image objects registered
-     * with it, and automatically disposes of them when the SWT Display is disposed. 
-     * Because of this, clients must not register an image object
-     * that is managed by another object.
-     * </p>
-     *
-     * @param key the key
-     * @param image the image, should not be <code>null</code>
-     * @exception IllegalArgumentException if the key already exists
-     */
-    public void put(String key, Image image) {
-        Entry entry = getEntry(key);
-        
-        if (entry == null) {
-            entry = new Entry();
-            putEntry(key, entry);
-        }
-        
-        if (entry.image != null || entry.descriptor != null) {
-            throw new IllegalArgumentException(
-                    "ImageRegistry key already in use: " + key); //$NON-NLS-1$            
-        }
-        
-        // Check for a null image here, otherwise the problem won't appear
-        // until dispose.
-        // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=130315
-        Assert.isNotNull(image, "Cannot register a null image."); //$NON-NLS-1$
-        entry.image = image;
-        entry.descriptor = new OriginalImageDescriptor(image, manager.getDevice());
-        
-        try {
-            manager.create(entry.descriptor);
-        } catch (DeviceResourceException e) {            
-        }
-    }
-
-    /**
-     * Removes an image from this registry.  
-     * If an SWT image was allocated, it is disposed.
-     * This method has no effect if there is no image or descriptor for the given key.
-     * @param key the key
-     */
-    public void remove(String key) {
-        ImageDescriptor descriptor = getDescriptor(key);
-        if (descriptor != null) {
-            manager.destroy(descriptor);
-            getTable().remove(key);
-        }
-    }
-
-    private Entry getEntry(String key) {
-        return (Entry) getTable().get(key);
-    }
-
-    private void putEntry(String key, Entry entry) {
-        getTable().put(key, entry);
-    }
-
-    private Map getTable() {
-        if (table == null) {
-            table = new HashMap(10);
-        }
-        return table;
-    }
-    
-    /**
-     * Disposes this image registry, disposing any images
-     * that were allocated for it, and clearing its entries.
-     * 
-     * @since 3.1
-     */
-    public void dispose() {
-        manager.cancelDisposeExec(disposeRunnable);
-        
-        if (table != null) {
-            for (Iterator i = table.values().iterator(); i.hasNext();) {
-                Entry entry = (Entry) i.next();
-                if (entry.image != null) {
-                    manager.destroyImage(entry.descriptor);
-                }
-            }
-            table = null;
-        }
-        display = null;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceColors.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceColors.java
deleted file mode 100644
index 95561ea..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceColors.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.jface.preference.JFacePreferences;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * JFaceColors is the class that stores references
- * to all of the colors used by JFace.
- */
-public class JFaceColors {
-
-    /**
-     * @param display the display the color is from
-     * @return the Color used for banner backgrounds
-     * @see SWT#COLOR_LIST_BACKGROUND
-     * @see Display#getSystemColor(int)
-     */
-    public static Color getBannerBackground(Display display) {
-        return display.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
-    }
-
-    /**
-     * @param display the display the color is from
-     * @return the Color used for banner foregrounds
-     * @see SWT#COLOR_LIST_FOREGROUND
-     * @see Display#getSystemColor(int)
-     */
-    public static Color getBannerForeground(Display display) {
-        return display.getSystemColor(SWT.COLOR_LIST_FOREGROUND);
-    }
-
-    /**
-     * @param display the display the color is from
-     * @return the background Color for widgets that display errors.
-     * @see SWT#COLOR_WIDGET_BACKGROUND
-     * @see Display#getSystemColor(int)
-     */
-    public static Color getErrorBackground(Display display) {
-        return display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
-    }
-
-    /**
-     * @param display the display the color is from
-     * @return the border Color for widgets that display errors.
-     * @see SWT#COLOR_WIDGET_DARK_SHADOW
-     * @see Display#getSystemColor(int)
-     */
-    public static Color getErrorBorder(Display display) {
-        return display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW);
-    }
-
-    /**
-     * @param display the display the color is from
-     * @return the default color to use for displaying errors.
-     * @see ColorRegistry#get(String)
-     * @see JFacePreferences#ERROR_COLOR
-     */
-    public static Color getErrorText(Display display) {
-        return JFaceResources.getColorRegistry().get(
-                JFacePreferences.ERROR_COLOR);
-    }
-
-    /**
-     * @param display the display the color is from
-     * @return the default color to use for displaying hyperlinks.
-     * @see ColorRegistry#get(String)
-     * @see JFacePreferences#HYPERLINK_COLOR
-     */
-    public static Color getHyperlinkText(Display display) {
-        return JFaceResources.getColorRegistry().get(
-                JFacePreferences.HYPERLINK_COLOR);
-    }
-
-    /**
-     * @param display the display the color is from
-     * @return the default color to use for displaying active hyperlinks.
-     * @see ColorRegistry#get(String)
-     * @see JFacePreferences#ACTIVE_HYPERLINK_COLOR
-     */
-    public static Color getActiveHyperlinkText(Display display) {
-        return JFaceResources.getColorRegistry().get(
-                JFacePreferences.ACTIVE_HYPERLINK_COLOR);
-    }
-
-    /**
-     * Clear out the cached color for name. This is generally
-     * done when the color preferences changed and any cached colors
-     * may be disposed. Users of the colors in this class should add a IPropertyChangeListener
-     * to detect when any of these colors change.
-     * @param colorName name of the color
-     * 
-     * @deprecated JFaceColors no longer maintains a cache of colors.  This job 
-     * is now handled by the ColorRegistry.
-     */
-    public static void clearColor(String colorName) {
-        //no-op
-    }
-
-    /**
-     * Dispose of all allocated colors. Called on workbench
-     * shutdown.
-     * 
-     * @deprecated JFaceColors no longer maintains a cache of colors.  This job 
-     * is now handled by the ColorRegistry.
-     */
-    public static void disposeColors() {
-        //no-op
-    }
-
-    /**
-     * Set the foreground and background colors of the
-     * control to the specified values. If the values are
-     * null than ignore them. 
-     * @param control the control the foreground and/or background color should be set
-     * 
-     * @param foreground Color the foreground color (maybe <code>null</code>)
-     * @param background Color the background color (maybe <code>null</code>)
-     */
-    public static void setColors(Control control, Color foreground,
-            Color background) {
-        if (foreground != null) {
-			control.setForeground(foreground);
-		}
-        if (background != null) {
-			control.setBackground(background);
-		}
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceResources.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceResources.java
deleted file mode 100644
index 6428926..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/JFaceResources.java
+++ /dev/null
@@ -1,596 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.net.URL;
-import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.internal.JFaceActivator;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.osgi.framework.Bundle;
-
-/**
- * Utility methods to access JFace-specific resources.
- * <p>
- * All methods declared on this class are static. This class cannot be
- * instantiated.
- * </p>
- * <p>
- * The following global state is also maintained by this class:
- * <ul>
- * <li>a font registry</li>
- * <li>a color registry</li>
- * <li>an image registry</li>
- * <li>a resource bundle</li>
- * </ul>
- * </p>
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class JFaceResources {
-
-	/**
-	 * The path to the icons in the resources.
-	 */
-	private final static String ICONS_PATH = "$nl$/icons/full/";//$NON-NLS-1$
-
-	/**
-	 * Map of Display onto DeviceResourceManager. Holds all the resources for
-	 * the associated display.
-	 */
-	private static final Map registries = new HashMap();
-
-	/**
-	 * The symbolic font name for the banner font (value
-	 * <code>"org.eclipse.jface.bannerfont"</code>).
-	 */
-	public static final String BANNER_FONT = "org.eclipse.jface.bannerfont"; //$NON-NLS-1$
-
-	/**
-	 * The JFace resource bundle; eagerly initialized.
-	 */
-	private static final ResourceBundle bundle = ResourceBundle
-			.getBundle("org.eclipse.jface.messages"); //$NON-NLS-1$
-
-	/**
-	 * The JFace color registry; <code>null</code> until lazily initialized or
-	 * explicitly set.
-	 */
-	private static ColorRegistry colorRegistry;
-
-	/**
-	 * The symbolic font name for the standard font (value
-	 * <code>"org.eclipse.jface.defaultfont"</code>).
-	 */
-	public static final String DEFAULT_FONT = "org.eclipse.jface.defaultfont"; //$NON-NLS-1$
-
-	/**
-	 * The symbolic font name for the dialog font (value
-	 * <code>"org.eclipse.jface.dialogfont"</code>).
-	 */
-	public static final String DIALOG_FONT = "org.eclipse.jface.dialogfont"; //$NON-NLS-1$
-
-	/**
-	 * The JFace font registry; <code>null</code> until lazily initialized or
-	 * explicitly set.
-	 */
-	private static FontRegistry fontRegistry = null;
-
-	/**
-	 * The symbolic font name for the header font (value
-	 * <code>"org.eclipse.jface.headerfont"</code>).
-	 */
-	public static final String HEADER_FONT = "org.eclipse.jface.headerfont"; //$NON-NLS-1$
-
-	/**
-	 * The JFace image registry; <code>null</code> until lazily initialized.
-	 */
-	private static ImageRegistry imageRegistry = null;
-
-	/**
-	 * The symbolic font name for the text font (value
-	 * <code>"org.eclipse.jface.textfont"</code>).
-	 */
-	public static final String TEXT_FONT = "org.eclipse.jface.textfont"; //$NON-NLS-1$
-
-	/**
-	 * The symbolic font name for the viewer font (value
-	 * <code>"org.eclipse.jface.viewerfont"</code>).
-	 * 
-	 * @deprecated This font is not in use
-	 */
-	public static final String VIEWER_FONT = "org.eclipse.jface.viewerfont"; //$NON-NLS-1$
-
-	/**
-	 * The symbolic font name for the window font (value
-	 * <code>"org.eclipse.jface.windowfont"</code>).
-	 * 
-	 * @deprecated This font is not in use
-	 */
-	public static final String WINDOW_FONT = "org.eclipse.jface.windowfont"; //$NON-NLS-1$
-
-	/**
-	 * Returns the formatted message for the given key in JFace's resource
-	 * bundle.
-	 * 
-	 * @param key
-	 *            the resource name
-	 * @param args
-	 *            the message arguments
-	 * @return the string
-	 */
-	public static String format(String key, Object[] args) {
-		return MessageFormat.format(getString(key), args);
-	}
-
-	/**
-	 * Returns the JFace's banner font. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.BANNER_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 */
-	public static Font getBannerFont() {
-		return getFontRegistry().get(BANNER_FONT);
-	}
-
-	/**
-	 * Returns the resource bundle for JFace itself. The resouble bundle is
-	 * obtained from
-	 * <code>ResourceBundle.getBundle("org.eclipse.jface.jface_nls")</code>.
-	 * <p>
-	 * Note that several static convenience methods are also provided on this
-	 * class for directly accessing resources in this bundle.
-	 * </p>
-	 * 
-	 * @return the resource bundle
-	 */
-	public static ResourceBundle getBundle() {
-		return bundle;
-	}
-
-	/**
-	 * Returns the color registry for JFace itself.
-	 * <p>
-	 * 
-	 * @return the <code>ColorRegistry</code>.
-	 * @since 3.0
-	 */
-	public static ColorRegistry getColorRegistry() {
-		if (colorRegistry == null) {
-			colorRegistry = new ColorRegistry();
-			initializeDefaultColors();
-		}
-		return colorRegistry;
-	}
-
-	/**
-	 * Returns the global resource manager for the given display
-	 * 
-	 * @since 3.1
-	 * 
-	 * @param toQuery
-	 *            display to query
-	 * @return the global resource manager for the given display
-	 */
-	public static ResourceManager getResources(final Display toQuery) {
-		ResourceManager reg = (ResourceManager) registries.get(toQuery);
-
-		if (reg == null) {
-			final DeviceResourceManager mgr = new DeviceResourceManager(toQuery);
-			reg = mgr;
-			registries.put(toQuery, reg);
-			toQuery.disposeExec(new Runnable() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see java.lang.Runnable#run()
-				 */
-				public void run() {
-					mgr.dispose();
-					registries.remove(toQuery);
-				}
-			});
-		}
-
-		return reg;
-	}
-
-	/**
-	 * Returns the ResourceManager for the current display. May only be called
-	 * from a UI thread.
-	 * 
-	 * @since 3.1
-	 * 
-	 * @return the global ResourceManager for the current display
-	 */
-	public static ResourceManager getResources() {
-		return getResources(Display.getCurrent());
-	}
-
-	/**
-	 * Returns JFace's standard font. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.DEFAULT_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 */
-	public static Font getDefaultFont() {
-		return getFontRegistry().defaultFont();
-	}
-
-	/**
-	 * Returns the descriptor for JFace's standard font. Convenience method
-	 * equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().getDescriptor(JFaceResources.DEFAULT_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 * @since 3.3
-	 */
-	public static FontDescriptor getDefaultFontDescriptor() {
-		return getFontRegistry().defaultFontDescriptor();
-	}
-
-	/**
-	 * Returns the JFace's dialog font. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.DIALOG_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 */
-	public static Font getDialogFont() {
-		return getFontRegistry().get(DIALOG_FONT);
-	}
-
-	/**
-	 * Returns the descriptor for JFace's dialog font. Convenience method
-	 * equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().getDescriptor(JFaceResources.DIALOG_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 * @since 3.3
-	 */
-	public static FontDescriptor getDialogFontDescriptor() {
-		return getFontRegistry().getDescriptor(DIALOG_FONT);
-	}
-
-	/**
-	 * Returns the font in JFace's font registry with the given symbolic font
-	 * name. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(symbolicName)
-	 * </pre>
-	 * 
-	 * If an error occurs, return the default font.
-	 * 
-	 * @param symbolicName
-	 *            the symbolic font name
-	 * @return the font
-	 */
-	public static Font getFont(String symbolicName) {
-		return getFontRegistry().get(symbolicName);
-	}
-
-	/**
-	 * Returns the font descriptor for in JFace's font registry with the given
-	 * symbolic name. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().getDescriptor(symbolicName)
-	 * </pre>
-	 * 
-	 * If an error occurs, return the default font.
-	 * 
-	 * @param symbolicName
-	 *            the symbolic font name
-	 * @return the font descriptor (never null)
-	 * @since 3.3
-	 */
-	public static FontDescriptor getFontDescriptor(String symbolicName) {
-		return getFontRegistry().getDescriptor(symbolicName);
-	}
-
-	/**
-	 * Returns the font registry for JFace itself. If the value has not been
-	 * established by an earlier call to <code>setFontRegistry</code>, is it
-	 * initialized to
-	 * <code>new FontRegistry("org.eclipse.jface.resource.jfacefonts")</code>.
-	 * <p>
-	 * Note that several static convenience methods are also provided on this
-	 * class for directly accessing JFace's standard fonts.
-	 * </p>
-	 * 
-	 * @return the JFace font registry
-	 */
-	public static FontRegistry getFontRegistry() {
-		if (fontRegistry == null) {
-			fontRegistry = new FontRegistry(
-					"org.eclipse.jface.resource.jfacefonts"); //$NON-NLS-1$
-		}
-		return fontRegistry;
-	}
-
-	/**
-	 * Returns the JFace's header font. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.HEADER_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 */
-	public static Font getHeaderFont() {
-		return getFontRegistry().get(HEADER_FONT);
-	}
-
-	/**
-	 * Returns the descriptor for JFace's header font. Convenience method
-	 * equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.HEADER_FONT)
-	 * </pre>
-	 * 
-	 * @return the font descriptor (never null)
-	 * @since 3.3
-	 */
-	public static FontDescriptor getHeaderFontDescriptor() {
-		return getFontRegistry().getDescriptor(HEADER_FONT);
-	}
-
-	/**
-	 * Returns the image in JFace's image registry with the given key, or
-	 * <code>null</code> if none. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getImageRegistry().get(key)
-	 * </pre>
-	 * 
-	 * @param key
-	 *            the key
-	 * @return the image, or <code>null</code> if none
-	 */
-	public static Image getImage(String key) {
-		return getImageRegistry().get(key);
-	}
-
-	/**
-	 * Returns the image registry for JFace itself.
-	 * <p>
-	 * Note that the static convenience method <code>getImage</code> is also
-	 * provided on this class.
-	 * </p>
-	 * 
-	 * @return the JFace image registry
-	 */
-	public static ImageRegistry getImageRegistry() {
-		if (imageRegistry == null) {
-			imageRegistry = new ImageRegistry(
-					getResources(Display.getCurrent()));
-			initializeDefaultImages();
-		}
-		return imageRegistry;
-	}
-
-	/**
-	 * Initialize default images in JFace's image registry.
-	 * 
-	 */
-	private static void initializeDefaultImages() {
-
-		Object bundle = null;
-		try {
-			bundle = JFaceActivator.getBundle();
-		} catch (NoClassDefFoundError exception) {
-			// Test to see if OSGI is present
-		}
-		declareImage(bundle, Wizard.DEFAULT_IMAGE, ICONS_PATH + "page.gif", //$NON-NLS-1$
-				Wizard.class, "images/page.gif"); //$NON-NLS-1$
-
-		// register default images for dialogs
-		declareImage(bundle, Dialog.DLG_IMG_MESSAGE_INFO, ICONS_PATH
-				+ "message_info.gif", Dialog.class, "images/message_info.gif"); //$NON-NLS-1$ //$NON-NLS-2$
-		declareImage(bundle, Dialog.DLG_IMG_MESSAGE_WARNING, ICONS_PATH
-				+ "message_warning.gif", Dialog.class, //$NON-NLS-1$
-				"images/message_warning.gif"); //$NON-NLS-1$
-		declareImage(bundle, Dialog.DLG_IMG_MESSAGE_ERROR, ICONS_PATH
-				+ "message_error.gif", Dialog.class, "images/message_error.gif");//$NON-NLS-1$ //$NON-NLS-2$
-		declareImage(bundle, Dialog.DLG_IMG_HELP,
-				ICONS_PATH + "help.gif", Dialog.class, "images/help.gif");//$NON-NLS-1$ //$NON-NLS-2$
-		declareImage(
-				bundle,
-				TitleAreaDialog.DLG_IMG_TITLE_BANNER,
-				ICONS_PATH + "title_banner.png", TitleAreaDialog.class, "images/title_banner.gif");//$NON-NLS-1$ //$NON-NLS-2$
-		declareImage(
-				bundle,
-				PreferenceDialog.PREF_DLG_TITLE_IMG,
-				ICONS_PATH + "pref_dialog_title.gif", PreferenceDialog.class, "images/pref_dialog_title.gif");//$NON-NLS-1$ //$NON-NLS-2$
-		declareImage(bundle, PopupDialog.POPUP_IMG_MENU, ICONS_PATH
-				+ "popup_menu.gif", PopupDialog.class, "images/popup_menu.gif");//$NON-NLS-1$ //$NON-NLS-2$
-		declareImage(
-				bundle,
-				PopupDialog.POPUP_IMG_MENU_DISABLED,
-				ICONS_PATH + "popup_menu_disabled.gif", PopupDialog.class, "images/popup_menu_disabled.gif");//$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Declares a JFace image given the path of the image file (relative to the
-	 * JFace plug-in). This is a helper method that creates the image descriptor
-	 * and passes it to the main <code>declareImage</code> method.
-	 * 
-	 * @param bundle
-	 *            the {@link Bundle} or <code>null</code> of the Bundle cannot
-	 *            be found
-	 * @param key
-	 *            the symbolic name of the image
-	 * @param path
-	 *            the path of the image file relative to the base of the
-	 *            workbench plug-ins install directory
-	 * @param fallback
-	 *            the {@link Class} where the fallback implementation of the
-	 *            image is relative to
-	 * @param fallbackPath
-	 *            the path relative to the fallback {@link Class}
-	 * 
-	 */
-	private static final void declareImage(Object bundle, String key,
-			String path, Class fallback, String fallbackPath) {
-
-		ImageDescriptor descriptor = null;
-
-		if (bundle != null) {
-			URL url = FileLocator.find((Bundle) bundle, new Path(path), null);
-			if (url != null)
-				descriptor = ImageDescriptor.createFromURL(url);
-		}
-
-		// If we failed then load from the backup file
-		if (descriptor == null)
-			descriptor = ImageDescriptor.createFromFile(fallback, fallbackPath);
-
-		imageRegistry.put(key, descriptor);
-	}
-
-	/**
-	 * Returns the resource object with the given key in JFace's resource
-	 * bundle. If there isn't any value under the given key, the key is
-	 * returned.
-	 * 
-	 * @param key
-	 *            the resource name
-	 * @return the string
-	 */
-	public static String getString(String key) {
-		try {
-			return bundle.getString(key);
-		} catch (MissingResourceException e) {
-			return key;
-		}
-	}
-
-	/**
-	 * Returns a list of string values corresponding to the given list of keys.
-	 * The lookup is done with <code>getString</code>. The values are in the
-	 * same order as the keys.
-	 * 
-	 * @param keys
-	 *            a list of keys
-	 * @return a list of corresponding string values
-	 */
-	public static String[] getStrings(String[] keys) {
-		Assert.isNotNull(keys);
-		int length = keys.length;
-		String[] result = new String[length];
-		for (int i = 0; i < length; i++) {
-			result[i] = getString(keys[i]);
-		}
-		return result;
-	}
-
-	/**
-	 * Returns JFace's text font. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 */
-	public static Font getTextFont() {
-		return getFontRegistry().get(TEXT_FONT);
-	}
-
-	/**
-	 * Returns the descriptor for JFace's text font. Convenience method
-	 * equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().getDescriptor(JFaceResources.TEXT_FONT)
-	 * </pre>
-	 * 
-	 * @return the font descriptor (never null)
-	 * @since 3.3
-	 */
-	public static FontDescriptor getTextFontDescriptor() {
-		return getFontRegistry().getDescriptor(TEXT_FONT);
-	}
-
-	/**
-	 * Returns JFace's viewer font. Convenience method equivalent to
-	 * 
-	 * <pre>
-	 * JFaceResources.getFontRegistry().get(JFaceResources.VIEWER_FONT)
-	 * </pre>
-	 * 
-	 * @return the font
-	 * @deprecated This font is not in use
-	 */
-	public static Font getViewerFont() {
-		return getFontRegistry().get(VIEWER_FONT);
-	}
-
-	/**
-	 * Sets JFace's font registry to the given value. This method may only be
-	 * called once; the call must occur before
-	 * <code>JFaceResources.getFontRegistry</code> is invoked (either directly
-	 * or indirectly).
-	 * 
-	 * @param registry
-	 *            a font registry
-	 */
-	public static void setFontRegistry(FontRegistry registry) {
-		Assert.isTrue(fontRegistry == null,
-				"Font registry can only be set once."); //$NON-NLS-1$
-		fontRegistry = registry;
-	}
-
-	/*
-	 * (non-Javadoc) Declare a private constructor to block instantiation.
-	 */
-	private JFaceResources() {
-		// no-op
-	}
-
-	/*
-	 * Initialize any JFace colors that may not be initialized via a client.
-	 */
-	private static void initializeDefaultColors() {
-		// JFace Colors that may not be defined in a workbench theme should be
-		// defined here.
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/LocalResourceManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/LocalResourceManager.java
deleted file mode 100644
index 757ae58..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/LocalResourceManager.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Control;
-
-
-/**
- * A local registry that shares its resources with some global registry.
- * LocalResourceManager is typically used to safeguard against leaks. Clients
- * can use a nested registry to allocate and deallocate resources in the
- * global registry. Calling dispose() on the nested registry will deallocate
- * everything allocated for the nested registry without affecting the rest
- * of the global registry.
- * <p>
- * A nested registry can be used to manage the resources for, say, a dialog
- * box.
- * </p>
- * @since 3.1
- */
-public final class LocalResourceManager extends AbstractResourceManager {
-
-    private ResourceManager parentRegistry;
-    
-    /**
-     * Creates a local registry that delegates to the given global registry
-     * for all resource allocation and deallocation. 
-     * 
-     * @param parentRegistry global registry 
-     */
-    public LocalResourceManager(ResourceManager parentRegistry) {
-        this.parentRegistry = parentRegistry;
-    }
-    
-    /**
-     * Creates a local registry that wraps the given global registry. Anything
-     * allocated by this registry will be automatically cleaned up with the given
-     * control is disposed. Note that registries created in this way should not
-     * be used to allocate any resource that must outlive the given control.
-     * 
-     * @param parentRegistry global registry that handles resource allocation
-     * @param owner control whose disposal will trigger cleanup of everything 
-     * in the registry.
-     */
-    public LocalResourceManager(ResourceManager parentRegistry, Control owner) {
-        this(parentRegistry);
-        
-        owner.addDisposeListener(new DisposeListener() {
-	        /* (non-Javadoc)
-	         * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-	         */
-	        public void widgetDisposed(DisposeEvent e) {
-	            LocalResourceManager.this.dispose();
-	        } 
-        });
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceManager#getDevice()
-     */
-    public Device getDevice() {
-        return parentRegistry.getDevice();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.AbstractResourceManager#allocate(org.eclipse.jface.resource.DeviceResourceDescriptor)
-     */
-    protected Object allocate(DeviceResourceDescriptor descriptor)
-            throws DeviceResourceException {
-        return parentRegistry.create(descriptor);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.AbstractResourceManager#deallocate(java.lang.Object, org.eclipse.jface.resource.DeviceResourceDescriptor)
-     */
-    protected void deallocate(Object resource,
-            DeviceResourceDescriptor descriptor) {
-        
-        parentRegistry.destroy(descriptor);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ResourceManager#getDefaultImage()
-     */
-    protected Image getDefaultImage() {
-        return parentRegistry.getDefaultImage();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/MissingImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/MissingImageDescriptor.java
deleted file mode 100644
index 84f5977..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/MissingImageDescriptor.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.ImageData;
-
-/**
- * The image descriptor for a missing image.
- * <p>
- * Use <code>MissingImageDescriptor.getInstance</code> to
- * access the singleton instance maintained in an
- * internal state variable. 
- * </p>
- */
-class MissingImageDescriptor extends ImageDescriptor {
-    private static MissingImageDescriptor instance;
-
-    /**
-     * Constructs a new missing image descriptor.
-     */
-    private MissingImageDescriptor() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ImageDesciptor.
-     */
-    public ImageData getImageData() {
-        return DEFAULT_IMAGE_DATA;
-    }
-
-    /**
-     * Returns the shared missing image descriptor instance.
-     *
-     * @return the image descriptor for a missing image
-     */
-    static MissingImageDescriptor getInstance() {
-        if (instance == null) {
-            instance = new MissingImageDescriptor();
-        }
-        return instance;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/RGBColorDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/RGBColorDescriptor.java
deleted file mode 100644
index a96b20a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/RGBColorDescriptor.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * Describes a color by its RGB values.
- * 
- * @since 3.1
- */
-class RGBColorDescriptor extends ColorDescriptor {
-
-    private RGB color;
-    
-    /**
-     * Color being copied, or null if none
-     */
-    private Color originalColor = null;
-    
-    /**
-     * Creates a new RGBColorDescriptor given some RGB values
-     * 
-     * @param color RGB values (not null)
-     */
-    public RGBColorDescriptor(RGB color) {
-        this.color = color;
-    }
-    
-	/**
-     * Creates a new RGBColorDescriptor that describes an existing color. 
-     * 
-     * @since 3.1
-     *
-     * @param originalColor a color to describe
-     */
-    public RGBColorDescriptor(Color originalColor) {
-        this(originalColor.getRGB());
-        this.originalColor = originalColor;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof RGBColorDescriptor) {
-            RGBColorDescriptor other = (RGBColorDescriptor) obj;
-            
-            return other.color.equals(color) && other.originalColor == originalColor;
-        }
-        
-        return false;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return color.hashCode();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resources.ColorDescriptor#createColor()
-     */
-    public Color createColor(Device device) {
-        // If this descriptor is wrapping an existing color, then we can return the original color
-        // if this is the same device.
-        if (originalColor != null) {
-            // If we're allocating on the same device as the original color, return the original.
-            if (originalColor.getDevice() == device) {
-                return originalColor;
-            }            
-        }
-        
-        return new Color(device, color);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ColorDescriptor#destroyColor(org.eclipse.swt.graphics.Color)
-     */
-    public void destroyColor(Color toDestroy) {
-        if (toDestroy == originalColor) {
-            return;
-        }
-        
-        toDestroy.dispose();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceManager.java
deleted file mode 100644
index 14df30f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceManager.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * This class manages SWT resources. It manages reference-counted instances of resources
- * such as Fonts, Images, and Colors, and allows them to be accessed using descriptors.
- * Everything allocated through the registry should also be disposed through the registry.
- * Since the resources are shared and reference counted, they should never be disposed
- * directly.
- * <p>
- * ResourceManager handles correct allocation and disposal of resources. It differs from 
- * the various JFace *Registry classes, which also map symbolic IDs onto resources. In 
- * general, you should use a *Registry class to map IDs onto descriptors, and use a 
- * ResourceManager to convert the descriptors into real Images/Fonts/etc.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class ResourceManager {
-    
-	/**
-	 * List of Runnables scheduled to run when the ResourceManager is disposed.
-	 * null if empty.
-	 */
-    private List disposeExecs = null;
-    
-    /**
-     * Returns the Device for which this ResourceManager will create resources 
-     * 
-     * @since 3.1
-     *
-     * @return the Device associated with this ResourceManager
-     */
-    public abstract Device getDevice();
-    
-    /**
-     * Returns the resource described by the given descriptor. If the resource already
-     * exists, the reference count is incremented and the exiting resource is returned.
-     * Otherwise, a new resource is allocated. Every call to this method should have
-     * a corresponding call to {@link #destroy(DeviceResourceDescriptor)}.
-     * 
-     * <p>If the resource is intended to live for entire lifetime of the resource manager, 
-     * a subsequent call to {@link #destroy(DeviceResourceDescriptor)} may be omitted and the
-     * resource will be cleaned up when the resource manager is disposed. This pattern
-     * is useful for short-lived {@link LocalResourceManager}s, but should never be used 
-     * with the global resource manager since doing so effectively leaks the resource.</p>
-     * 
-     * <p>The resources returned from this method are reference counted and may be shared 
-     * internally with other resource managers. They should never be disposed outside of the 
-     * ResourceManager framework, or it will cause exceptions in other code that shares
-     * them. For example, never call {@link org.eclipse.swt.graphics.Resource#dispose()} 
-     * on anything returned from this method.</p>
-     * 
-     * <p>Callers may safely downcast the result to the resource type associated with 
-     * the descriptor. For example, when given an ImageDescriptor, the return
-     * value of this method will always be an Image.</p>
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor descriptor for the resource to allocate
-     * @return the newly allocated resource (not null)
-     * @throws DeviceResourceException if unable to allocate the resource
-     */
-    public abstract Object create(DeviceResourceDescriptor descriptor);
-    
-    /**
-     * Deallocates a resource previously allocated by {@link #create(DeviceResourceDescriptor)}. 
-     * Descriptors are compared by equality, not identity. If the same resource was 
-     * created multiple times, this may decrement a reference count rather than 
-     * disposing the actual resource.  
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor identifier for the resource
-     */
-    public abstract void destroy(DeviceResourceDescriptor descriptor);
-    
-    /**
-     * <p>Returns a previously-allocated resource or allocates a new one if none
-     * exists yet. The resource will remain allocated for at least the lifetime
-     * of this resource manager. If necessary, the resource will be deallocated 
-     * automatically when the resource manager is disposed.</p>
-     * 
-     * <p>The resources returned from this method are reference counted and may be shared 
-     * internally with other resource managers. They should never be disposed outside of the 
-     * ResourceManager framework, or it will cause exceptions in other code that shares
-     * them. For example, never call {@link org.eclipse.swt.graphics.Resource#dispose()} 
-     * on anything returned from this method.</p>
-     * 
-     * <p>
-     * Callers may safely downcast the result to the resource type associated with 
-     * the descriptor. For example, when given an ImageDescriptor, the return
-     * value of this method may be downcast to Image.
-     * </p>
-     * 
-     * <p>
-     * This method should only be used for resources that should remain
-     * allocated for the lifetime of the resource manager. To allocate shorter-lived
-     * resources, manage them with <code>create</code>, and <code>destroy</code>
-     * rather than this method.
-     * </p>
-     * 
-     * <p>
-     * This method should never be called on the global resource manager,
-     * since all resources will remain allocated for the lifetime of the app and
-     * will be effectively leaked.
-     * </p>
-     * 
-     * @param descriptor identifier for the requested resource
-     * @return the requested resource. Never null.
-     * @throws DeviceResourceException if the resource does not exist yet and cannot
-     * be created for any reason.
-     * 
-     * @since 3.3
-     */
-    public final Object get(DeviceResourceDescriptor descriptor) {
-    	Object result = find(descriptor);
-    	
-    	if (result == null) {
-    		result = create(descriptor);
-    	}
-    	
-    	return result;
-    }
-    
-    /**
-     * <p>Creates an image, given an image descriptor. Images allocated in this manner must
-     * be disposed by {@link #destroyImage(ImageDescriptor)}, and never by calling 
-     * {@link Image#dispose()}.</p>
-     * 
-     * <p>
-     * If the image is intended to remain allocated for the lifetime of the ResourceManager,
-     * the call to destroyImage may be omitted and the image will be cleaned up automatically
-     * when the ResourceManager is disposed. This should only be done with short-lived ResourceManagers,
-     * as doing so with the global manager effectively leaks the resource.
-     * </p>
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor descriptor for the image to create
-     * @return the Image described by this descriptor (possibly shared by other equivalent
-     * ImageDescriptors)
-     * @throws DeviceResourceException if unable to allocate the Image
-     */
-    public final Image createImage(ImageDescriptor descriptor) {
-    	// Assertion added to help diagnose client bugs.  See bug #83711 and bug #90454.
-    	Assert.isNotNull(descriptor);
-    	
-        return (Image)create(descriptor);
-    }
-    
-    /**
-     * Creates an image, given an image descriptor. Images allocated in this manner must
-     * be disposed by {@link #destroyImage(ImageDescriptor)}, and never by calling 
-     * {@link Image#dispose()}.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor descriptor for the image to create
-     * @return the Image described by this descriptor (possibly shared by other equivalent
-     * ImageDescriptors)
-     */
-    public final Image createImageWithDefault(ImageDescriptor descriptor) {
-        if (descriptor == null) {
-        	return getDefaultImage();
-        }
-        
-        try {
-			return (Image) create(descriptor);
-		} catch (DeviceResourceException e) {
-			Policy.getLog().log(
-					new Status(IStatus.WARNING, "org.eclipse.jface", 0, //$NON-NLS-1$
-							"The image could not be loaded: " + descriptor, //$NON-NLS-1$
-							e));
-			return getDefaultImage();
-		} catch (SWTException e) {
-			Policy.getLog().log(
-					new Status(IStatus.WARNING, "org.eclipse.jface", 0, //$NON-NLS-1$
-							"The image could not be loaded: " + descriptor, //$NON-NLS-1$
-							e));
-			return getDefaultImage();
-		}
-    }
-    
-    /**
-     * Returns the default image that will be returned in the event that the intended
-     * image is missing.
-     * 
-     * @since 3.1
-     *
-     * @return a default image that will be returned in the event that the intended
-     * image is missing.
-     */
-    protected abstract Image getDefaultImage();
-
-    /**
-     * Undoes everything that was done by {@link #createImage(ImageDescriptor)}.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor identifier for the image to dispose
-     */
-    public final void destroyImage(ImageDescriptor descriptor) {
-        destroy(descriptor);
-    }
-
-    /**
-     * Allocates a color, given a color descriptor. Any color allocated in this
-     * manner must be disposed by calling {@link #destroyColor(ColorDescriptor)}, 
-     * or by an eventual call to {@link #dispose()}. {@link Color#dispose()} must
-     * never been called directly on the returned color.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor descriptor for the color to create
-     * @return the Color described by the given ColorDescriptor (not null)
-     * @throws DeviceResourceException if unable to create the color
-     */
-    public final Color createColor(ColorDescriptor descriptor) {
-        return (Color)create(descriptor);
-    }
-
-    /**
-     * Allocates a color, given its RGB value. Any color allocated in this
-     * manner must be disposed by calling {@link #destroyColor(RGB)}, 
-     * or by an eventual call to {@link #dispose()}. {@link Color#dispose()} must
-     * never been called directly on the returned color.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor descriptor for the color to create
-     * @return the Color described by the given ColorDescriptor (not null)
-     * @throws DeviceResourceException if unable to create the color
-     */
-    public final Color createColor(RGB descriptor) {
-        return createColor(new RGBColorDescriptor(descriptor));
-    }
-    
-    /**
-     * Undoes everything that was done by a call to {@link #createColor(RGB)}.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor RGB value of the color to dispose
-     */
-    public final void destroyColor(RGB descriptor) {
-        destroyColor(new RGBColorDescriptor(descriptor));
-    }
-
-    /**
-     * Undoes everything that was done by a call to {@link #createColor(ColorDescriptor)}.
-     * 
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor identifier for the color to dispose
-     */
-    public final void destroyColor(ColorDescriptor descriptor) {
-        destroy(descriptor);
-    }
-    
-    /**
-     * Returns the Font described by the given FontDescriptor. Any Font
-     * allocated in this manner must be deallocated by calling disposeFont(...),
-     * or by an eventual call to {@link #dispose()}.  The method {@link Font#dispose()}
-     * must never be called directly on the returned font.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor description of the font to create
-     * @return the Font described by the given descriptor
-     * @throws DeviceResourceException if unable to create the font
-     */
-    public final Font createFont(FontDescriptor descriptor) {
-        return (Font)create(descriptor);
-    }
-    
-    /**
-     * Undoes everything that was done by a previous call to {@link #createFont(FontDescriptor)}.
-     * 
-     * @since 3.1 
-     *
-     * @param descriptor description of the font to destroy
-     */
-    public final void destroyFont(FontDescriptor descriptor) {
-        destroy(descriptor);
-    }
-    
-    /**
-     * Disposes any remaining resources allocated by this manager. 
-     */
-    public void dispose() {
-        if (disposeExecs == null) {
-            return;
-        }
-        
-        // If one of the runnables throws an exception, we need to propagate it.
-        // However, this should not prevent the remaining runnables from being 
-        // notified. If any runnables throw an exception, we remember one of them
-        // here and throw it at the end of the method.
-        RuntimeException foundException = null;
-        
-        Runnable[] execs = (Runnable[]) disposeExecs.toArray(new Runnable[disposeExecs.size()]);
-        for (int i = 0; i < execs.length; i++) {
-            Runnable exec = execs[i];            
-            
-            try {
-                exec.run();
-            } catch (RuntimeException e) {
-                // Ensure that we propagate an exception, but don't stop notifying
-                // the remaining runnables.
-                foundException = e;
-            }
-        }
-        
-        if (foundException != null) {
-            // If any runnables threw an exception, propagate one of them.
-            throw foundException;
-        }
-    }
-    
-    /**
-     * Returns a previously allocated resource associated with the given descriptor, or
-     * null if none exists yet. 
-     * 
-     * @since 3.1
-     *
-     * @param descriptor descriptor to find
-     * @return a previously allocated resource for the given descriptor or null if none.
-     */
-    public abstract Object find(DeviceResourceDescriptor descriptor);
-    
-    /**
-     * Causes the <code>run()</code> method of the runnable to
-     * be invoked just before the receiver is disposed. The runnable
-     * can be subsequently canceled by a call to <code>cancelDisposeExec</code>.
-     * 
-     * @param r runnable to execute.
-     */
-    public void disposeExec(Runnable r) {
-        Assert.isNotNull(r);
-        
-        if (disposeExecs == null) {
-            disposeExecs = new ArrayList();
-        }
-        
-        disposeExecs.add(r);
-    }
-    
-    /**
-     * Cancels a runnable that was previously scheduled with <code>disposeExec</code>.
-     * Has no effect if the given runnable was not previously registered with
-     * disposeExec.
-     * 
-     * @param r runnable to cancel
-     */
-    public void cancelDisposeExec(Runnable r) {
-        Assert.isNotNull(r);
-        
-        if (disposeExecs == null) {
-            return;
-        }
-        
-        disposeExecs.remove(r);
-        
-        if (disposeExecs.isEmpty()) {
-            disposeExecs = null;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceRegistry.java
deleted file mode 100644
index 82184b8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ResourceRegistry.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.Set;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * Abstract base class for various JFace registries.
- * 
- * @since 3.0
- */
-public abstract class ResourceRegistry extends EventManager {
-
-    /**
-     * Adds a property change listener to this registry.
-     * 
-     * @param listener a property change listener
-     */
-    public void addListener(IPropertyChangeListener listener) {
-        addListenerObject(listener);
-    }
-
-    /**
-     * Disposes all currently allocated resources.
-     */
-    protected abstract void clearCaches();
-
-    /** 
-     * @return the set of keys this manager knows about.  This collection 
-     * should be immutable.
-     */
-    public abstract Set getKeySet();
-
-    /**
-     * Return whether or not the receiver has a value for the supplied key.
-     * 
-     * @param key the key
-     * @return <code>true</code> if there is a value for this key
-     */
-    public abstract boolean hasValueFor(String key);
-
-    /**
-     * Fires a <code>PropertyChangeEvent</code>.
-     * 
-     * @param name the name of the symbolic value that is changing.
-     * @param oldValue the old value.
-     * @param newValue the new value.
-     */
-    protected void fireMappingChanged(String name, Object oldValue,
-            Object newValue) {
-        final Object[] myListeners = getListeners();
-        if (myListeners.length > 0) {
-            PropertyChangeEvent event = new PropertyChangeEvent(this, name,
-                    oldValue, newValue);
-            for (int i = 0; i < myListeners.length; ++i) {
-                try {
-                    ((IPropertyChangeListener) myListeners[i])
-                            .propertyChange(event);
-                } catch (Exception e) {
-                    // TODO: how to log?
-                }
-            }
-        }
-    }
-
-    /**
-     * Removes the given listener from this registry. Has no affect if the
-     * listener is not registered.
-     * 
-     * @param listener a property change listener
-     */
-    public void removeListener(IPropertyChangeListener listener) {
-        removeListenerObject(listener);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/StringConverter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/StringConverter.java
deleted file mode 100644
index 35ab2fb..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/StringConverter.java
+++ /dev/null
@@ -1,887 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.util.ArrayList;
-import java.util.NoSuchElementException;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- * Helper class for converting various data types to and from
- * strings. Supported types include:
- * <ul>
- *   <li><code>boolean</code></li>
- *   <li><code>int</code></li>
- *   <li><code>long</code></li>
- *   <li><code>float</code></li>
- *   <li><code>double</code></li>
- *   <li><code>org.eclipse.swt.graphics.Point</code></li>
- *   <li><code>org.eclipse.swt.graphics.Rectangle</code></li>
- *   <li><code>org.eclipse.swt.graphics.RGB</code></li>
- *   <li><code>org.eclipse.swt.graphics.FontData</code></li>
- * </ul>
- * <p>
- * All methods declared on this class are static. This
- * class cannot be instantiated.
- * </p>
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class StringConverter {
-
-    /**
-     * Internal font style constant for regular fonts.
-     */
-    private static final String REGULAR = "regular"; //$NON-NLS-1$
-
-    /**
-     * Internal font style constant for bold fonts.
-     */
-    private static final String BOLD = "bold"; //$NON-NLS-1$
-
-    /**
-     * Internal font style constant for italic fonts.
-     */
-    private static final String ITALIC = "italic"; //$NON-NLS-1$
-
-    /**
-     * Internal font style constant for bold italic fonts.
-     */
-    private static final String BOLD_ITALIC = "bold italic"; //$NON-NLS-1$
-
-    /**
-     * Internal constant for the separator character used in
-     * font specifications.
-     */
-    private static final char SEPARATOR = '-';
-
-    /**
-     * Internal constant for the seperator character used in font list
-     * specifications.
-     */
-    private static final String FONT_SEPARATOR = ";"; //$NON-NLS-1$
-
-    /* (non-Javadoc)
-     * Declare a private constructor to block instantiation.
-     */
-    private StringConverter() {
-        //no-op
-    }
-
-    /**
-     * Breaks out space-separated words into an array of words.
-     * For example: <code>"no comment"</code> into an array 
-     * <code>a[0]="no"</code> and <code>a[1]= "comment"</code>.
-     *
-     * @param value the string to be converted
-     * @return the list of words
-     * @throws DataFormatException thrown if request string could not seperated
-     */
-    public static String[] asArray(String value) throws DataFormatException {
-        ArrayList list = new ArrayList();
-        StringTokenizer stok = new StringTokenizer(value);
-        while (stok.hasMoreTokens()) {
-            list.add(stok.nextToken());
-        }
-        String result[] = new String[list.size()];
-        list.toArray(result);
-        return result;
-    }
-
-    /**
-     /**
-     * Breaks out space-separated words into an array of words.
-     * For example: <code>"no comment"</code> into an array 
-     * <code>a[0]="no"</code> and <code>a[1]= "comment"</code>.
-     * Returns the given default value if the value cannot be parsed.
-     *
-     * @param value the string to be converted
-     * @param dflt the default value
-     * @return the list of words, or the default value
-     */
-    public static String[] asArray(String value, String[] dflt) {
-        try {
-            return asArray(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into a boolean.
-     * This method fails if the value does not represent a boolean.
-     * <p>
-     * Valid representations of <code>true</code> include the strings
-     * "<code>t</code>", "<code>true</code>", or equivalent in mixed
-     * or upper case.
-     * Similarly, valid representations of <code>false</code> include the strings
-     * "<code>f</code>", "<code>false</code>", or equivalent in mixed
-     * or upper case. 
-     * </p>
-     *
-     * @param value the value to be converted
-     * @return the value as a boolean
-     * @exception DataFormatException if the given value does not represent
-     *	a boolean
-     */
-    public static boolean asBoolean(String value) throws DataFormatException {
-        String v = value.toLowerCase();
-        if (v.equals("t") || v.equals("true")) { //$NON-NLS-1$ //$NON-NLS-2$
-			return true;
-		}
-        if (value.equals("f") || v.equals("false")) { //$NON-NLS-1$ //$NON-NLS-2$
-			return false;
-		}
-        throw new DataFormatException(
-                "Value " + value + "doesn't represent a boolean"); //$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Converts the given value into a boolean.
-     * Returns the given default value if the 
-     * value does not represent a boolean.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a boolean, or the default value
-     */
-    public static boolean asBoolean(String value, boolean dflt) {
-        try {
-            return asBoolean(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into a double.
-     * This method fails if the value does not represent a double.
-     *
-     * @param value the value to be converted
-     * @return the value as a double
-     * @exception DataFormatException if the given value does not represent
-     *	a double
-     */
-    public static double asDouble(String value) throws DataFormatException {
-        try {
-            return (Double.valueOf(value)).doubleValue();
-        } catch (NumberFormatException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-    }
-
-    /**
-     * Converts the given value into a double.
-     * Returns the given default value if the 
-     * value does not represent a double.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a double, or the default value
-     */
-    public static double asDouble(String value, double dflt) {
-        try {
-            return asDouble(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into a float.
-     * This method fails if the value does not represent a float.
-     *
-     * @param value the value to be converted
-     * @return the value as a float
-     * @exception DataFormatException if the given value does not represent
-     *	a float
-     */
-    public static float asFloat(String value) throws DataFormatException {
-        try {
-            return (Float.valueOf(value)).floatValue();
-        } catch (NumberFormatException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-    }
-
-    /**
-     * Converts the given value into a float.
-     * Returns the given default value if the 
-     * value does not represent a float.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a float, or the default value
-     */
-    public static float asFloat(String value, float dflt) {
-        try {
-            return asFloat(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into an SWT font data object.
-     * This method fails if the value does not represent font data.
-     * <p>
-     * A valid font data representation is a string of the form
-     * <code><it>fontname</it>-<it>style</it>-<it>height</it></code> where
-     * <code><it>fontname</it></code> is the name of a font,
-     * <code><it>style</it></code> is a font style (one of
-     * <code>"regular"</code>, <code>"bold"</code>,
-     * <code>"italic"</code>, or <code>"bold italic"</code>)
-     * and <code><it>height</it></code> is an integer representing the
-     * font height. Example: <code>Times New Roman-bold-36</code>.
-     * </p>
-     *
-     * @param value the value to be converted
-     * @return the value as font data
-     * @exception DataFormatException if the given value does not represent
-     *	font data
-     */
-    public static FontData asFontData(String value) throws DataFormatException {
-        if (value == null) {
-			throw new DataFormatException(
-                    "Null doesn't represent a valid font data"); //$NON-NLS-1$
-		}
-        String name = null;
-        int height = 0;
-        int style = 0;
-        try {
-            int length = value.length();
-            int heightIndex = value.lastIndexOf(SEPARATOR);
-            if (heightIndex == -1) {
-				throw new DataFormatException(
-                        "No correct font data format \"" + value + "\""); //$NON-NLS-2$//$NON-NLS-1$
-			}
-            height = StringConverter.asInt(value.substring(heightIndex + 1,
-                    length));
-            int faceIndex = value.lastIndexOf(SEPARATOR, heightIndex - 1);
-            if (faceIndex == -1) {
-				throw new DataFormatException(
-                        "No correct font data format \"" + value + "\""); //$NON-NLS-2$//$NON-NLS-1$
-			}
-            String s = value.substring(faceIndex + 1, heightIndex);
-            if (BOLD_ITALIC.equals(s)) {
-                style = SWT.BOLD | SWT.ITALIC;
-            } else if (BOLD.equals(s)) {
-                style = SWT.BOLD;
-            } else if (ITALIC.equals(s)) {
-                style = SWT.ITALIC;
-            } else if (REGULAR.equals(s)) {
-                style = SWT.NORMAL;
-            } else {
-                throw new DataFormatException("Unknown face name \"" + s + "\""); //$NON-NLS-2$//$NON-NLS-1$
-            }
-            name = value.substring(0, faceIndex);
-        } catch (NoSuchElementException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-        return new FontData(name, height, style);
-    }
-
-	/**
-	 * Returns the result of converting a list of comma-separated tokens into an array
-	 * 
-	 * @return the array of string tokens
-	 * @param prop the initial comma-separated string
-	 */
-	private static String[] getArrayFromList(String prop, String separator) {
-		if (prop == null || prop.trim().equals("")) { //$NON-NLS-1$
-			return new String[0];
-		}
-		ArrayList list = new ArrayList();
-		StringTokenizer tokens = new StringTokenizer(prop, separator); 
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (!token.equals("")) { //$NON-NLS-1$
-				list.add(token);
-			}
-		}
-		return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[list.size()]);
-	}
-
-    /**
-     * Convert the given value into an array of SWT font data objects.
-     * 
-     * @param value the font list string 
-     * @return the value as a font list
-     * @since 3.0
-     */
-    public static FontData[] asFontDataArray(String value) {
-        String[] strings = getArrayFromList(value, FONT_SEPARATOR);
-        ArrayList data = new ArrayList(strings.length);
-        for (int i = 0; i < strings.length; i++) {
-            try {
-                data.add(StringConverter.asFontData(strings[i]));
-            } catch (DataFormatException e) {
-                //do-nothing
-            }
-        }
-        return (FontData[]) data.toArray(new FontData[data.size()]);
-    }
-
-    /**
-     * Converts the given value into an SWT font data object.
-     * Returns the given default value if the 
-     * value does not represent a font data object.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a font data object, or the default value
-     */
-    public static FontData asFontData(String value, FontData dflt) {
-        try {
-            return asFontData(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into an int.
-     * This method fails if the value does not represent an int.
-     *
-     * @param value the value to be converted
-     * @return the value as an int
-     * @exception DataFormatException if the given value does not represent
-     *	an int
-     */
-    public static int asInt(String value) throws DataFormatException {
-        try {
-            return Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-    }
-
-    /**
-     * Converts the given value into an int.
-     * Returns the given default value if the 
-     * value does not represent an int.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as an int, or the default value
-     */
-    public static int asInt(String value, int dflt) {
-        try {
-            return asInt(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into a long.
-     * This method fails if the value does not represent a long.
-     *
-     * @param value the value to be converted
-     * @return the value as a long
-     * @exception DataFormatException if the given value does not represent
-     *	a long
-     */
-    public static long asLong(String value) throws DataFormatException {
-        try {
-            return Long.parseLong(value);
-        } catch (NumberFormatException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-    }
-
-    /**
-     * Converts the given value into a long.
-     * Returns the given default value if the 
-     * value does not represent a long.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a long, or the default value
-     */
-    public static long asLong(String value, long dflt) {
-        try {
-            return asLong(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into an SWT point.
-     * This method fails if the value does not represent a point.
-     * <p>
-     * A valid point representation is a string of the form
-     * <code><it>x</it>,<it>y</it></code> where
-     * <code><it>x</it></code> and <code><it>y</it></code>
-     * are valid ints.
-     * </p>
-     *
-     * @param value the value to be converted
-     * @return the value as a point
-     * @exception DataFormatException if the given value does not represent
-     *	a point
-     */
-    public static Point asPoint(String value) throws DataFormatException {
-        if (value == null) {
-			throw new DataFormatException(
-                    "Null doesn't represent a valid point"); //$NON-NLS-1$
-		}
-        StringTokenizer stok = new StringTokenizer(value, ","); //$NON-NLS-1$
-        String x = stok.nextToken();
-        String y = stok.nextToken();
-        int xval = 0, yval = 0;
-        try {
-            xval = Integer.parseInt(x);
-            yval = Integer.parseInt(y);
-        } catch (NumberFormatException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-        return new Point(xval, yval);
-    }
-
-    /**
-     * Converts the given value into an SWT point.
-     * Returns the given default value if the 
-     * value does not represent a point.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a point, or the default value
-     */
-    public static Point asPoint(String value, Point dflt) {
-        try {
-            return asPoint(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into an SWT rectangle.
-     * This method fails if the value does not represent a rectangle.
-     * <p>
-     * A valid rectangle representation is a string of the form
-     * <code><it>x</it>,<it>y</it>,<it>width</it>,<it>height</it></code>
-     * where <code><it>x</it></code>, <code><it>y</it></code>,
-     * <code><it>width</it></code>, and <code><it>height</it></code>
-     * are valid ints.
-     * </p>
-     *
-     * @param value the value to be converted
-     * @return the value as a rectangle
-     * @exception DataFormatException if the given value does not represent
-     *	a rectangle
-     */
-    public static Rectangle asRectangle(String value)
-            throws DataFormatException {
-        if (value == null) {
-			throw new DataFormatException(
-                    "Null doesn't represent a valid rectangle"); //$NON-NLS-1$
-		}
-        StringTokenizer stok = new StringTokenizer(value, ","); //$NON-NLS-1$
-        String x = stok.nextToken();
-        String y = stok.nextToken();
-        String width = stok.nextToken();
-        String height = stok.nextToken();
-        int xval = 0, yval = 0, wval = 0, hval = 0;
-        try {
-            xval = Integer.parseInt(x);
-            yval = Integer.parseInt(y);
-            wval = Integer.parseInt(width);
-            hval = Integer.parseInt(height);
-        } catch (NumberFormatException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-        return new Rectangle(xval, yval, wval, hval);
-    }
-
-    /**
-     * Converts the given value into an SWT rectangle.
-     * Returns the given default value if the 
-     * value does not represent a rectangle.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a rectangle, or the default value
-     */
-    public static Rectangle asRectangle(String value, Rectangle dflt) {
-        try {
-            return asRectangle(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given value into an SWT RGB color value.
-     * This method fails if the value does not represent an RGB
-     * color value.
-     * <p>
-     * A valid RGB color value representation is a string of the form
-     * <code><it>red</it>,<it>green</it></code>,<it>blue</it></code> where
-     * <code><it>red</it></code>, <it>green</it></code>, and 
-     * <code><it>blue</it></code> are valid ints.
-     * </p>
-     *
-     * @param value the value to be converted
-     * @return the value as an RGB color value
-     * @exception DataFormatException if the given value does not represent
-     *	an RGB color value
-     */
-    public static RGB asRGB(String value) throws DataFormatException {
-        if (value == null) {
-			throw new DataFormatException("Null doesn't represent a valid RGB"); //$NON-NLS-1$
-		}
-        StringTokenizer stok = new StringTokenizer(value, ","); //$NON-NLS-1$
-
-        try {
-            String red = stok.nextToken().trim();
-            String green = stok.nextToken().trim();
-            String blue = stok.nextToken().trim();
-            int rval = 0, gval = 0, bval = 0;
-            try {
-                rval = Integer.parseInt(red);
-                gval = Integer.parseInt(green);
-                bval = Integer.parseInt(blue);
-            } catch (NumberFormatException e) {
-                throw new DataFormatException(e.getMessage());
-            }
-            return new RGB(rval, gval, bval);
-        } catch (NoSuchElementException e) {
-            throw new DataFormatException(e.getMessage());
-        }
-    }
-
-    /**
-     * Converts the given value into an SWT RGB color value.
-     * Returns the given default value if the 
-     * value does not represent an RGB color value.
-     *
-     * @param value the value to be converted
-     * @param dflt the default value
-     * @return the value as a RGB color value, or the default value
-     */
-    public static RGB asRGB(String value, RGB dflt) {
-        try {
-            return asRGB(value);
-        } catch (DataFormatException e) {
-            return dflt;
-        }
-    }
-
-    /**
-     * Converts the given double value to a string.
-     * Equivalent to <code>String.valueOf(value)</code>.
-     *
-     * @param value the double value
-     * @return the string representing the given double
-     */
-    public static String asString(double value) {
-        return String.valueOf(value);
-    }
-
-    /**
-     * Converts the given float value to a string.
-     * Equivalent to <code>String.valueOf(value)</code>.
-     *
-     * @param value the float value
-     * @return the string representing the given float
-     */
-    public static String asString(float value) {
-        return String.valueOf(value);
-    }
-
-    /**
-     * Converts the given int value to a string.
-     * Equivalent to <code>String.valueOf(value)</code>.
-     *
-     * @param value the int value
-     * @return the string representing the given int
-     */
-    public static String asString(int value) {
-        return String.valueOf(value);
-    }
-
-    /**
-     * Converts the given long value to a string.
-     * Equivalent to <code>String.valueOf(value)</code>.
-     *
-     * @param value the long value
-     * @return the string representing the given long
-     */
-    public static String asString(long value) {
-        return String.valueOf(value);
-    }
-
-    /**
-     * Converts the given boolean object to a string.
-     * Equivalent to <code>String.valueOf(value.booleanValue())</code>.
-     *
-     * @param value the boolean object
-     * @return the string representing the given boolean value
-     */
-    public static String asString(Boolean value) {
-        Assert.isNotNull(value);
-        return String.valueOf(value.booleanValue());
-    }
-
-    /**
-     * Converts the given double object to a string.
-     * Equivalent to <code>String.valueOf(value.doubleValue())</code>.
-     *
-     * @param value the double object
-     * @return the string representing the given double value
-     */
-    public static String asString(Double value) {
-        Assert.isNotNull(value);
-        return String.valueOf(value.doubleValue());
-    }
-
-    /**
-     * Converts the given float object to a string.
-     * Equivalent to <code>String.valueOf(value.floatValue())</code>.
-     *
-     * @param value the float object
-     * @return the string representing the given float value
-     */
-    public static String asString(Float value) {
-        Assert.isNotNull(value);
-        return String.valueOf(value.floatValue());
-    }
-
-    /**
-     * Converts the given integer object to a string.
-     * Equivalent to <code>String.valueOf(value.intValue())</code>.
-     *
-     * @param value the integer object
-     * @return the string representing the given integer value
-     */
-    public static String asString(Integer value) {
-        Assert.isNotNull(value);
-        return String.valueOf(value.intValue());
-    }
-
-    /**
-     * Converts the given long object to a string.
-     * Equivalent to <code>String.valueOf(value.longValue())</code>.
-     *
-     * @param value the long object
-     * @return the string representing the given long value
-     */
-    public static String asString(Long value) {
-        Assert.isNotNull(value);
-        return String.valueOf(value.longValue());
-    }
-
-    /**
-     * Converts a font data array  to a string. The string representation is
-     * that of asString(FontData) seperated by ';'
-     * 
-     * @param value The font data.
-     * @return The string representation of the font data arra.
-     * @since 3.0
-     */
-    public static String asString(FontData[] value) {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < value.length; i++) {
-            buffer.append(asString(value[i]));
-            if (i != value.length - 1) {
-				buffer.append(FONT_SEPARATOR);
-			}
-        }
-        return buffer.toString();
-    }
-
-    /**
-     * Converts a font data object to a string. The string representation is
-     * "font name-style-height" (for example "Times New Roman-bold-36").
-     * @param value The font data.
-     * @return The string representation of the font data object.
-     */
-    public static String asString(FontData value) {
-        Assert.isNotNull(value);
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(value.getName());
-        buffer.append(SEPARATOR);
-        int style = value.getStyle();
-        boolean bold = (style & SWT.BOLD) == SWT.BOLD;
-        boolean italic = (style & SWT.ITALIC) == SWT.ITALIC;
-        if (bold && italic) {
-            buffer.append(BOLD_ITALIC);
-        } else if (bold) {
-            buffer.append(BOLD);
-        } else if (italic) {
-            buffer.append(ITALIC);
-        } else {
-            buffer.append(REGULAR);
-        }
-
-        buffer.append(SEPARATOR);
-        buffer.append(value.getHeight());
-        return buffer.toString();
-    }
-
-    /**
-     * Converts the given SWT point object to a string.
-     * <p>
-     * The string representation of a point has the form
-     * <code><it>x</it>,<it>y</it></code> where
-     * <code><it>x</it></code> and <code><it>y</it></code>
-     * are string representations of integers.
-     * </p>
-     *
-     * @param value the point object
-     * @return the string representing the given point
-     */
-    public static String asString(Point value) {
-        Assert.isNotNull(value);
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(value.x);
-        buffer.append(',');
-        buffer.append(value.y);
-        return buffer.toString();
-    }
-
-    /**
-     * Converts the given SWT rectangle object to a string.
-     * <p>
-     * The string representation of a rectangle has the form
-     * <code><it>x</it>,<it>y</it>,<it>width</it>,<it>height</it></code>
-     * where <code><it>x</it></code>, <code><it>y</it></code>,
-     * <code><it>width</it></code>, and <code><it>height</it></code>
-     * are string representations of integers.
-     * </p>
-     *
-     * @param value the rectangle object
-     * @return the string representing the given rectangle
-     */
-    public static String asString(Rectangle value) {
-        Assert.isNotNull(value);
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(value.x);
-        buffer.append(',');
-        buffer.append(value.y);
-        buffer.append(',');
-        buffer.append(value.width);
-        buffer.append(',');
-        buffer.append(value.height);
-        return buffer.toString();
-    }
-
-    /**
-     * Converts the given SWT RGB color value object to a string.
-     * <p>
-     * The string representation of an RGB color value has the form
-     * <code><it>red</it>,<it>green</it></code>,<it>blue</it></code> where
-     * <code><it>red</it></code>, <it>green</it></code>, and 
-     * <code><it>blue</it></code> are string representations of integers.
-     * </p>
-     *
-     * @param value the RGB color value object
-     * @return the string representing the given RGB color value
-     */
-    public static String asString(RGB value) {
-        Assert.isNotNull(value);
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(value.red);
-        buffer.append(',');
-        buffer.append(value.green);
-        buffer.append(',');
-        buffer.append(value.blue);
-        return buffer.toString();
-    }
-
-    /**
-     * Converts the given boolean value to a string.
-     * Equivalent to <code>String.valueOf(value)</code>.
-     *
-     * @param value the boolean value
-     * @return the string representing the given boolean
-     */
-    public static String asString(boolean value) {
-        return String.valueOf(value);
-    }
-
-    /**
-     * Returns the given string with all whitespace characters removed.
-     * <p>
-     * All characters that have codes less than or equal to <code>'&#92;u0020'</code> 
-     * (the space character) are considered to be a white space.
-     * </p>
-     *
-     * @param s the source string
-     * @return the string with all whitespace characters removed
-     */
-    public static String removeWhiteSpaces(String s) {
-        //check for no whitespace (common case)
-        boolean found = false;
-        int wsIndex = -1;
-        int size = s.length();
-        for (int i = 0; i < size; i++) {
-            found = Character.isWhitespace(s.charAt(i));
-            if (found) {
-                wsIndex = i;
-                break;
-            }
-        }
-        if (!found) {
-			return s;
-		}
-
-        StringBuffer result = new StringBuffer(s.substring(0, wsIndex));
-        for (int i = wsIndex + 1; i < size; i++) {
-            char ch = s.charAt(i);
-            if (!Character.isWhitespace(ch)) {
-				result.append(ch);
-			}
-        }
-        return result.toString();
-    }
-
-    /**
-     * Converts a font data object to a string representation for display. 
-     * 	The string representation is
-     * "font name-style-height" (for example "Times New Roman-bold-36").
-     * @param value The font data.
-     * @return The string representation of the font data object.
-     * @deprecated use asString(FontData)
-     */
-    public static String asDisplayableString(FontData value) {
-        Assert.isNotNull(value);
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(value.getName());
-        buffer.append(SEPARATOR);
-        int style = value.getStyle();
-        boolean bold = (style & SWT.BOLD) == SWT.BOLD;
-        boolean italic = (style & SWT.ITALIC) == SWT.ITALIC;
-        if (bold && italic) {
-            buffer.append(JFaceResources.getString("BoldItalicFont")); //$NON-NLS-1$
-        } else if (bold) {
-            buffer.append(JFaceResources.getString("BoldFont")); //$NON-NLS-1$
-        } else if (italic) {
-            buffer.append(JFaceResources.getString("ItalicFont")); //$NON-NLS-1$
-        } else {
-            buffer.append(JFaceResources.getString("RegularFont")); //$NON-NLS-1$
-        }
-        buffer.append(SEPARATOR);
-        buffer.append(value.getHeight());
-        return buffer.toString();
-
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/URLImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/URLImageDescriptor.java
deleted file mode 100644
index 23f3592..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/URLImageDescriptor.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.resource;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.internal.JFaceActivator;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-
-/**
- * An ImageDescriptor that gets its information from a URL. This class is not
- * public API. Use ImageDescriptor#createFromURL to create a descriptor that
- * uses a URL.
- */
-class URLImageDescriptor extends ImageDescriptor {
-	/**
-	 * Constant for the file protocol for optimized loading
-	 */ 
-	private static final String FILE_PROTOCOL = "file";  //$NON-NLS-1$
-	private URL url;
-
-	/**
-	 * Creates a new URLImageDescriptor.
-	 * 
-	 * @param url
-	 *            The URL to load the image from. Must be non-null.
-	 */
-	URLImageDescriptor(URL url) {
-		this.url = url;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	public boolean equals(Object o) {
-		if (!(o instanceof URLImageDescriptor)) {
-			return false;
-		}
-		return ((URLImageDescriptor) o).url.equals(this.url);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on ImageDesciptor. Returns null if the
-	 * image data cannot be read.
-	 */
-	public ImageData getImageData() {
-		ImageData result = null;
-		InputStream in = getStream();
-		if (in != null) {
-			try {
-				result = new ImageData(in);
-			} catch (SWTException e) {
-				if (e.code != SWT.ERROR_INVALID_IMAGE) {
-					throw e;
-					// fall through otherwise
-				}
-			} finally {
-				try {
-					in.close();
-				} catch (IOException e) {
-					Policy.getLog().log(
-							new Status(IStatus.ERROR, Policy.JFACE, e
-									.getLocalizedMessage(), e));
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a stream on the image contents. Returns null if a stream could
-	 * not be opened.
-	 * 
-	 * @return the stream for loading the data
-	 */
-	protected InputStream getStream() {
-		try {
-			return new BufferedInputStream(url.openStream());
-		} catch (IOException e) {
-			return null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	public int hashCode() {
-		return url.hashCode();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Object.
-	 */
-	/**
-	 * The <code>URLImageDescriptor</code> implementation of this
-	 * <code>Object</code> method returns a string representation of this
-	 * object which is suitable only for debugging.
-	 */
-	public String toString() {
-		return "URLImageDescriptor(" + url + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Returns the filename for the ImageData.
-	 * 
-	 * @return {@link String} or <code>null</code> if the file cannot be found
-	 */
-	private String getFilePath() {
-
-		try {
-			if (JFaceActivator.getBundleContext() == null) {
-				if (FILE_PROTOCOL.equalsIgnoreCase(url.getProtocol()))
-					return new Path(url.getFile()).toOSString();
-				return null;
-			}
-
-			URL locatedURL = FileLocator.toFileURL(url);
-			if (FILE_PROTOCOL.equalsIgnoreCase(locatedURL.getProtocol()))
-				return new Path(locatedURL.getPath()).toOSString();
-			return null;
-
-		} catch (IOException e) {
-			Policy.logException(e);
-			return null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.resource.ImageDescriptor#createImage(boolean,
-	 *      org.eclipse.swt.graphics.Device)
-	 */
-	public Image createImage(boolean returnMissingImageOnError, Device device) {
-
-		// Try to see if we can optimize using SWTs file based image support.
-		String path = getFilePath();
-		if (path == null)
-			return super.createImage(returnMissingImageOnError, device);
-
-		try {
-			return new Image(device, path);
-		} catch (SWTException exception) {
-			// If we fail fall back to the slower input stream method.
-		}
-		return super.createImage(returnMissingImageOnError, device);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts.properties
deleted file mode 100644
index 129ec90..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Generic NLS font file for JFace
-# *.0 is Windows font
-# *.1 is Unix font
-#############################################################
-org.eclipse.jface.bannerfont.0=MS Sans Serif-bold-10
-org.eclipse.jface.bannerfont.1=b&h-lucidabright-regular-10
-
-org.eclipse.jface.headerfont.0=MS Sans Serif-bold-12
-org.eclipse.jface.headerfont.1=b&h-lucidabright-regular-12
-
-org.eclipse.jface.textfont.0=Courier New-regular-10
-org.eclipse.jface.textfont.1=Courier-regular-10
-org.eclipse.jface.textfont.2=b&h-lucidabright-regular-9
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_aix.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_aix.properties
deleted file mode 100644
index 9254f94..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_aix.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Aix font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=adobe-courier-bold-14
-org.eclipse.jface.headerfont.0=misc-fixed-bold-14
-org.eclipse.jface.textfont.0=adobe-courier-regular-12
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_hp-ux.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_hp-ux.properties
deleted file mode 100644
index 6883353..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_hp-ux.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# HP UX font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=adobe-courier-bold-14
-org.eclipse.jface.headerfont.0=adobe-courier-regular-14
-org.eclipse.jface.textfont.0=adobe-courier-regular-14
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux.properties
deleted file mode 100644
index 39b6899..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Linux font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=adobe-courier-bold-14
-org.eclipse.jface.headerfont.0=misc-fixed-bold-14
-org.eclipse.jface.textfont.0=adobe-courier-regular-12
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux_gtk.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux_gtk.properties
deleted file mode 100644
index b743b2e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_linux_gtk.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Linux GTK font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=Sans-bold-10
-org.eclipse.jface.headerfont.0=Sans-bold-12
-org.eclipse.jface.textfont.0=Monospace-regular-10
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_macosx.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_macosx.properties
deleted file mode 100644
index 6197fa4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_macosx.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Carbon font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=Lucida Grande-bold-12
-org.eclipse.jface.headerfont.0=Lucida Grande-bold-14
-
-org.eclipse.jface.textfont.0=Monaco-regular-11
-org.eclipse.jface.textfont.1=Courier-regular-12
-org.eclipse.jface.textfont.2=Courier New-regular-12
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_qnx.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_qnx.properties
deleted file mode 100644
index b1c216d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_qnx.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# QNX font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=TextFont-bold-9
-org.eclipse.jface.headerfont.0=TextFont-bold-9
-org.eclipse.jface.textfont.0=TextFont-regular-9
-
-
-
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_sunos.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_sunos.properties
deleted file mode 100644
index a10c0be..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_sunos.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Solaris font file for JFace
-#############################################################
-org.eclipse.jface.bannerfont.0=adobe-courier-bold-14
-org.eclipse.jface.headerfont.0=misc-fixed-bold-14
-org.eclipse.jface.textfont.0=adobe-courier-regular-12
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows2000.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows2000.properties
deleted file mode 100644
index c152f1c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows2000.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS font file for JFace when running under Windows 2000
-#############################################################
-org.eclipse.jface.bannerfont.0=Tahoma-bold-10
-
-org.eclipse.jface.headerfont.0=Tahoma-bold-12
-
-org.eclipse.jface.textfont.0=Courier New-regular-10
-org.eclipse.jface.textfont.1=Courier-regular-10
-org.eclipse.jface.textfont.2=Lucida Console-regular-9
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows98.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows98.properties
deleted file mode 100644
index 5a23376..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windows98.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS font file for JFace when running under Windows 98
-#############################################################
-org.eclipse.jface.bannerfont.0=MS Sans Serif-bold-10
-
-org.eclipse.jface.headerfont.0=MS Sans Serif-bold-12
-
-org.eclipse.jface.textfont.0=Courier New-regular-10
-org.eclipse.jface.textfont.1=Courier-regular-10
-org.eclipse.jface.textfont.2=Lucida Console-regular-9
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsnt.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsnt.properties
deleted file mode 100644
index 41740b0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsnt.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS font file for JFace when running under Windows NT
-#############################################################
-org.eclipse.jface.bannerfont.0=MS Sans Serif-bold-10
-
-org.eclipse.jface.headerfont.0=MS Sans Serif-bold-12
-
-org.eclipse.jface.textfont.0=Courier New-regular-10
-org.eclipse.jface.textfont.1=Courier-regular-10
-org.eclipse.jface.textfont.2=Lucida Console-regular-9
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsxp.properties b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsxp.properties
deleted file mode 100644
index 6888654..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/jfacefonts_windowsxp.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS font file for JFace when running under Windows XP
-#############################################################
-org.eclipse.jface.bannerfont.0=Tahoma-bold-10
-
-org.eclipse.jface.headerfont.0=Tahoma-bold-12
-
-org.eclipse.jface.textfont.0=Courier New-regular-10
-org.eclipse.jface.textfont.1=Courier-regular-10
-org.eclipse.jface.textfont.2=Lucida Console-regular-9
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/package.html
deleted file mode 100644
index d380325..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/package.html
+++ /dev/null
@@ -1,51 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides support for managing resources such as SWT
-fonts and images.
-<h2>
-Package Specification</h2>
-This package contains support for managing resources, including:
-<ul>
-<li>
-font registries (<tt>FontRegistry</tt>) - for hanging on to the SWT font
-objects needed by an application</li>
-
-<li>
-color registries (<tt>ColorRegistry</tt>) - for hanging on to the SWT color 
-objects needed by an application</li>
-
-<li>
-image registries (<tt>ImageRegistry</tt>) - for hanging on to the SWT image
-objects needed by an application</li>
-
-<li>
-image descriptors (<tt>ImageDescriptor</tt>) - surrogate object for creating
-SWT images</li>
-
-<li>
-string conversion (<tt>StringConverter</tt>) - for parsing property files</li>
-</ul>
-The JFace resources module is an independent JFace module requiring a basic
-knowledge of SWT and the JFace property change event mechanism. Familiarity
-with other JFace modules is not required.
-<p>Image descriptors are objects that knows how to create an image on demand.
-They serve as a lightweight representation of images in situations where
-no SWT display exists yet, and are used mainly in conjunction with image
-registries. This package contains the image descriptor framework, which
-is a simple hierarchy rooted at the abstract class <tt>ImageDescriptor</tt>.
-The framework includes abstract subclasses for composing images (<tt>CompositeImageDescriptor</tt>)
-as well as a ready-made concrete subclass for loading images from files
-(<tt>FileImageDescriptor</tt>).
-<p>The class <tt>JFaceResources</tt> maintains global state on behalf of
-JFace itself consisting of JFace's own image registry, font registry, resource
-bundle, and preference store.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Assert.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Assert.java
deleted file mode 100644
index 39711a0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Assert.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-/**
- * <code>Assert</code> is useful for for embedding runtime sanity checks
- * in code. The static predicate methods all test a condition and throw some
- * type of unchecked exception if the condition does not hold.
- * <p>
- * Assertion failure exceptions, like most runtime exceptions, are
- * thrown when something is misbehaving. Assertion failures are invariably
- * unspecified behavior; consequently, clients should never rely on
- * these being thrown (or not thrown). <b>If you find yourself in the
- * position where you need to catch an assertion failure, you have most 
- * certainly written your program incorrectly.</b>
- * </p>
- * <p>
- * Note that an <code>assert</code> statement is slated to be added to the
- * Java language in JDK 1.4, rending this class obsolete.
- * 
- * @deprecated As of 3.3, replaced by {@link org.eclipse.core.runtime.Assert}
- * </p>
- */
-public final class Assert {
-
-    /**
-     * <code>AssertionFailedException</code> is a runtime exception thrown
-     * by some of the methods in <code>Assert</code>.
-     * <p>
-     * This class is not declared public to prevent some misuses; programs that catch 
-     * or otherwise depend on assertion failures are susceptible to unexpected
-     * breakage when assertions in the code are added or removed.
-     * </p>
-     */
-    private static class AssertionFailedException extends RuntimeException {
-
-        /**
-         * Generated serial version UID for this class.
-         * @since 3.1
-         */
-        private static final long serialVersionUID = 3257852073508024376L;
-
-        /**
-         * Constructs a new exception.
-         */
-        public AssertionFailedException() {
-        }
-
-        /**
-         * Constructs a new exception with the given message.
-         * @param detail the detail message
-         */
-        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 outcome 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) {
-        // succeed as quickly as possible
-        if (expression) {
-            return true;
-        }
-        return isLegal(expression, "");//$NON-NLS-1$
-    }
-
-    /**
-     * 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 outcome 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("assertion failed; " + message); //$NON-NLS-1$
-		}
-        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.
-     * <p>
-     * As a general rule, parameters passed to API methods must not be
-     * <code>null</code> unless <b>explicitly</b> allowed in the method's
-     * specification. Similarly, results returned from API methods are never
-     * <code>null</code> unless <b>explicitly</b> allowed in the method's
-     * specification. Implementations are encouraged to make regular use of 
-     * <code>Assert.isNotNull</code> to ensure that <code>null</code> 
-     * parameters are detected as early as possible.
-     * </p>
-     * 
-     * @param object the value to test
-     * @exception AssertionFailedException an unspecified unchecked exception if the object
-     *   is <code>null</code>
-     */
-    public static void isNotNull(Object object) {
-        // succeed as quickly as possible
-        if (object != null) {
-            return;
-        }
-        isNotNull(object, "");//$NON-NLS-1$
-    }
-
-    /**
-     * 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.
-     * <p>
-     * As a general rule, parameters passed to API methods must not be
-     * <code>null</code> unless <b>explicitly</b> allowed in the method's
-     * specification. Similarly, results returned from API methods are never
-     * <code>null</code> unless <b>explicitly</b> allowed in the method's
-     * specification. Implementations are encouraged to make regular use of 
-     * <code>Assert.isNotNull</code> to ensure that <code>null</code> 
-     * parameters are detected as early as possible.
-     * </p>
-     * 
-     * @param object the value to test
-     * @param message the message to include in the exception
-     * @exception AssertionFailedException an unspecified unchecked exception if the object
-     *   is <code>null</code>
-     */
-    public static void isNotNull(Object object, String message) {
-        if (object == null) {
-			throw new AssertionFailedException("null argument;" + message);//$NON-NLS-1$
-		}
-    }
-
-    /**
-     * 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 outcome of the check
-     * @return <code>true</code> if the check passes (does not return
-     *    if the check fails)
-     */
-    public static boolean isTrue(boolean expression) {
-        // succeed as quickly as possible
-        if (expression) {
-            return true;
-        }
-        return isTrue(expression, "");//$NON-NLS-1$
-    }
-
-    /**
-     * 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 outcome 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("Assertion failed: " + message);//$NON-NLS-1$
-		}
-        return expression;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDragAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDragAdapter.java
deleted file mode 100644
index b1483db..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDragAdapter.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-
-/**
- * A <code>DelegatingDragAdapter</code> is a <code>DragSourceListener</code> that  
- * maintains and delegates to a set of {@link TransferDragSourceListener}s. Each 
- * TransferDragSourceListener can then be implemented as if it were the 
- * <code>DragSource's</code> only DragSourceListener.
- * <p>
- * When a drag is started, a subset of all <code>TransferDragSourceListeners</code>
- * is generated and stored in a list of <i>active</i> listeners. This subset is
- * calculated by forwarding {@link DragSourceListener#dragStart(DragSourceEvent)} to 
- * every listener, and checking if the {@link DragSourceEvent#doit doit} field is left 
- * set to <code>true</code>.
- * </p> 
- * The <code>DragSource</code>'s set of supported Transfer types ({@link
- * DragSource#setTransfer(Transfer[])}) is updated to reflect the Transfer types
- * corresponding to the active listener subset.
- * <p>
- * If and when {@link #dragSetData(DragSourceEvent)} is called, a single
- * <code>TransferDragSourceListener</code> is chosen, and only it is allowed to set the
- * drag data. The chosen listener is the first listener in the subset of active listeners
- * whose Transfer supports ({@link Transfer#isSupportedType(TransferData)}) the 
- * <code>dataType</code> in the <code>DragSourceEvent</code>.
- * </p>
- * <p>
- * The following example snippet shows a <code>DelegatingDragAdapter</code> with two
- * <code>TransferDragSourceListeners</code>. One implements drag of text strings, 
- * the other supports file transfer and demonstrates how a listener can be disabled using
- * the dragStart method. 
- * </p>
- * <code><pre>
- *		final TreeViewer viewer = new TreeViewer(shell, SWT.NONE);
- *		
- *		DelegatingDragAdapter dragAdapter = new DelegatingDragAdapter();		
- *		dragAdapter.addDragSourceListener(new TransferDragSourceListener() {
- *			public Transfer getTransfer() {
- *				return TextTransfer.getInstance();
- *			}
- *			public void dragStart(DragSourceEvent event) {
- *				// always enabled, can control enablement based on selection etc.
- *			}
- *			public void dragSetData(DragSourceEvent event) {
- *				event.data = "Transfer data";
- *			}
- *			public void dragFinished(DragSourceEvent event) {
- *				// no clean-up required
- *			}
- *		});
- *		dragAdapter.addDragSourceListener(new TransferDragSourceListener() {
- *			public Transfer getTransfer() {
- *				return FileTransfer.getInstance();
- *			}
- *			public void dragStart(DragSourceEvent event) {
- *				// enable drag listener if there is a viewer selection
- *				event.doit = !viewer.getSelection().isEmpty();
- *			}
- *			public void dragSetData(DragSourceEvent event) {
- *				File file1 = new File("C:/temp/file1");
- *				File file2 = new File("C:/temp/file2");
- *				event.data = new String[] {file1.getAbsolutePath(), file2.getAbsolutePath()};
- *			}
- *			public void dragFinished(DragSourceEvent event) {
- *				// no clean-up required
- *			}
- *		});
- *		viewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, dragAdapter.getTransfers(), dragAdapter);
- * </pre></code>
- * @since 3.0
- */
-public class DelegatingDragAdapter implements DragSourceListener {
-    private List listeners = new ArrayList();
-
-    private List activeListeners = new ArrayList();
-
-    private TransferDragSourceListener currentListener;
-
-    /**
-     * Adds the given <code>TransferDragSourceListener</code>.
-     * 
-     * @param listener the new listener
-     */
-    public void addDragSourceListener(TransferDragSourceListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     * The drop has successfully completed. This event is forwarded to the current 
-     * drag listener.
-     * Doesn't update the current listener, since the current listener  is already the one
-     * that completed the drag operation.
-     * 
-     * @param event the drag source event
-     * @see DragSourceListener#dragFinished(DragSourceEvent)
-     */
-    public void dragFinished(final DragSourceEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drag Finished: " + toString()); //$NON-NLS-1$
-        SafeRunnable.run(new SafeRunnable() {
-            public void run() throws Exception {
-                if (currentListener != null) {
-                    // there is a listener that can handle the drop, delegate the event
-                    currentListener.dragFinished(event);
-                } else {
-                    // The drag was canceled and currentListener was never set, so send the
-                    // dragFinished event to all the active listeners. 
-                    Iterator iterator = activeListeners.iterator();
-                    while (iterator.hasNext()) {
-						((TransferDragSourceListener) iterator.next())
-                                .dragFinished(event);
-					}
-                }
-            }
-        });
-        currentListener = null;
-        activeListeners.clear();
-    }
-
-    /**
-     * The drop data is requested.
-     * Updates the current listener and then forwards the event to it.
-     * 
-     * @param event the drag source event
-     * @see DragSourceListener#dragSetData(DragSourceEvent)
-     */
-    public void dragSetData(final DragSourceEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drag Set Data: " + toString()); //$NON-NLS-1$
-
-        updateCurrentListener(event); // find a listener that can provide the given data type
-        if (currentListener != null) {
-        	SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    currentListener.dragSetData(event);
-                }
-            });
-        }
-    }
-
-    /**
-     * A drag operation has started.
-     * Forwards this event to each listener. A listener must set <code>event.doit</code> 
-     * to <code>false</code> if it cannot handle the drag operation. If a listener can  
-     * handle the drag, it is added to the list of active listeners.  
-     * The drag is aborted if there are no listeners that can handle it.  
-     * 
-     * @param event the drag source event
-     * @see DragSourceListener#dragStart(DragSourceEvent)
-     */
-    public void dragStart(final DragSourceEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drag Start: " + toString()); //$NON-NLS-1$
-        boolean doit = false; // true if any one of the listeners can handle the drag
-        List transfers = new ArrayList(listeners.size());
-
-        activeListeners.clear();
-        for (int i = 0; i < listeners.size(); i++) {
-            final TransferDragSourceListener listener = (TransferDragSourceListener) listeners
-                    .get(i);
-            event.doit = true; // restore event.doit
-            SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    listener.dragStart(event);
-                }
-            });
-            if (event.doit) { // the listener can handle this drag
-                transfers.add(listener.getTransfer());
-                activeListeners.add(listener);
-            }
-            doit |= event.doit;
-        }
-
-        if (doit) {
-			((DragSource) event.widget).setTransfer((Transfer[]) transfers
-                    .toArray(new Transfer[transfers.size()]));
-		}
-
-        event.doit = doit;
-    }
-
-    /**
-     * Returns the <code>Transfer<code>s from every <code>TransferDragSourceListener</code>.
-     * 
-     * @return the combined <code>Transfer</code>s
-     */
-    public Transfer[] getTransfers() {
-        Transfer[] types = new Transfer[listeners.size()];
-        for (int i = 0; i < listeners.size(); i++) {
-            TransferDragSourceListener listener = (TransferDragSourceListener) listeners
-                    .get(i);
-            types[i] = listener.getTransfer();
-        }
-        return types;
-    }
-
-    /**
-     * Returns <code>true</code> if there are no listeners to delegate drag events to.
-     * 
-     * @return <code>true</code> if there are no <code>TransferDragSourceListeners</code>
-     * 	<code>false</code> otherwise.
-     */
-    public boolean isEmpty() {
-        return listeners.isEmpty();
-    }
-
-    /**
-     * Removes the given <code>TransferDragSourceListener</code>.
-     * Listeners should not be removed while a drag and drop operation is in progress.
-     *  
-     * @param listener the <code>TransferDragSourceListener</code> to remove
-     */
-    public void removeDragSourceListener(TransferDragSourceListener listener) {
-        listeners.remove(listener);
-        if (currentListener == listener) {
-			currentListener = null;
-		}
-        if (activeListeners.contains(listener)) {
-			activeListeners.remove(listener);
-		}
-    }
-
-    /**
-     * Updates the current listener to one that can handle the drag. There can 
-     * be many listeners and each listener may be able to handle many <code>TransferData</code> 
-     * types.  The first listener found that supports one of the <code>TransferData</ode> 
-     * types specified in the <code>DragSourceEvent</code> will be selected.
-     * 
-     * @param event the drag source event
-     */
-    private void updateCurrentListener(DragSourceEvent event) {
-        currentListener = null;
-        if (event.dataType == null) {
-			return;
-		}
-        Iterator iterator = activeListeners.iterator();
-        while (iterator.hasNext()) {
-            TransferDragSourceListener listener = (TransferDragSourceListener) iterator
-                    .next();
-
-            if (listener.getTransfer().isSupportedType(event.dataType)) {
-                //				if (Policy.DEBUG_DRAG_DROP)
-                //					System.out.println("Current drag listener: " + listener); //$NON-NLS-1$			
-                currentListener = listener;
-                return;
-            }
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDropAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDropAdapter.java
deleted file mode 100644
index d9626c5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDropAdapter.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-
-/**
- * A <code>DelegatingDropAdapter</code> is a <code>DropTargetListener</code> that 
- * maintains and delegates to a set of {@link TransferDropTargetListener}s. Each 
- * <code>TransferDropTargetListener</code> can then be implemented as if it were 
- * the DropTarget's only <code>DropTargetListener</code>.
- * <p>
- * On <code>dragEnter</code>, <code>dragOperationChanged</code>, <code>dragOver</code>
- * and <code>drop</code>, a <i>current</i> listener is obtained from the set of all 
- * <code>TransferDropTargetListeners</code>. The current listener is the first listener 
- * to return <code>true</code> for 
- * {@link TransferDropTargetListener#isEnabled(DropTargetEvent)}.
- * The current listener is forwarded all <code>DropTargetEvents</code> until some other
- * listener becomes the current listener, or the drop terminates.
- * </p>
- * <p>
- * After adding all <code>TransferDropTargetListeners</code> to the 
- * <code>DelegatingDropAdapter</code> the combined set of <code>Transfers</code> should 
- * be set in the SWT <code>DropTarget</code>. <code>#getTransfers()</code> provides the 
- * set of <code>Transfer</code> types of all <code>TransferDropTargetListeners</code>. 
- * </p>
- * <p>
- * The following example snippet shows a <code>DelegatingDropAdapter</code> with two
- * <code>TransferDropTargetListeners</code>. One supports dropping resources and 
- * demonstrates how a listener can be disabled in the isEnabled method. 
- * The other listener supports text transfer. 
- * </p>
- * <code><pre>
- *		final TreeViewer viewer = new TreeViewer(shell, SWT.NONE);
- * 		DelegatingDropAdapter dropAdapter = new DelegatingDropAdapter();
- *		dropAdapter.addDropTargetListener(new TransferDropTargetListener() {
- *			public Transfer getTransfer() {
- *				return ResourceTransfer.getInstance();
- *			}
- *			public boolean isEnabled(DropTargetEvent event) {
- *				// disable drop listener if there is no viewer selection
- *				if (viewer.getSelection().isEmpty())
- *					return false;
- *				return true;
- *			}
- *			public void dragEnter(DropTargetEvent event) {}
- *			public void dragLeave(DropTargetEvent event) {}
- *			public void dragOperationChanged(DropTargetEvent event) {}
- *			public void dragOver(DropTargetEvent event) {}
- *			public void drop(DropTargetEvent event) {
- *				if (event.data == null)
- *					return;
- *				IResource[] resources = (IResource[]) event.data;
- *				if (event.detail == DND.DROP_COPY) {
- *					// copy resources
- *				} else {
- *					// move resources
- *				}
- *					
- *			}
- *			public void dropAccept(DropTargetEvent event) {}
- *		});
- *		dropAdapter.addDropTargetListener(new TransferDropTargetListener() {
- *			public Transfer getTransfer() {
- *				return TextTransfer.getInstance();
- *			}
- *			public boolean isEnabled(DropTargetEvent event) {
- *				return true;
- *			}
- *			public void dragEnter(DropTargetEvent event) {}
- *			public void dragLeave(DropTargetEvent event) {}
- *			public void dragOperationChanged(DropTargetEvent event) {}
- *			public void dragOver(DropTargetEvent event) {}
- *			public void drop(DropTargetEvent event) {
- *				if (event.data == null)
- *					return;
- *				System.out.println(event.data);
- *			}
- *			public void dropAccept(DropTargetEvent event) {}
- *		});		
- *		viewer.addDropSupport(DND.DROP_COPY | DND.DROP_MOVE, dropAdapter.getTransfers(), dropAdapter);
- * </pre></code>
- * @since 3.0
- */
-public class DelegatingDropAdapter implements DropTargetListener {
-    private List listeners = new ArrayList();
-
-    private TransferDropTargetListener currentListener;
-
-    private int originalDropType;
-
-    /**
-     * Adds the given <code>TransferDropTargetListener</code>.
-     * 
-     * @param listener the new listener
-     */
-    public void addDropTargetListener(TransferDropTargetListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     * The cursor has entered the drop target boundaries. The current listener is 
-     * updated, and <code>#dragEnter()</code> is forwarded to the current listener.
-     * 
-     * @param event the drop target event 
-     * @see DropTargetListener#dragEnter(DropTargetEvent)
-     */
-    public void dragEnter(DropTargetEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drag Enter: " + toString()); //$NON-NLS-1$
-        originalDropType = event.detail;
-        updateCurrentListener(event);
-    }
-
-    /**
-     * The cursor has left the drop target boundaries. The event is forwarded to the 
-     * current listener.
-     * 
-     * @param event the drop target event
-     * @see DropTargetListener#dragLeave(DropTargetEvent)
-     */
-    public void dragLeave(final DropTargetEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drag Leave: " + toString()); //$NON-NLS-1$
-        setCurrentListener(null, event);
-    }
-
-    /**
-     * The operation being performed has changed (usually due to the user changing 
-     * a drag modifier key while dragging). Updates the current listener and forwards 
-     * this event to that listener.
-     * 
-     * @param event the drop target event
-     * @see DropTargetListener#dragOperationChanged(DropTargetEvent)
-     */
-    public void dragOperationChanged(final DropTargetEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drag Operation Changed to: " + event.detail); //$NON-NLS-1$
-        originalDropType = event.detail;
-        TransferDropTargetListener oldListener = getCurrentListener();
-        updateCurrentListener(event);
-        final TransferDropTargetListener newListener = getCurrentListener();
-        // only notify the current listener if it hasn't changed based on the 
-        // operation change. otherwise the new listener would get a dragEnter 
-        // followed by a dragOperationChanged with the exact same event. 
-        if (newListener != null && newListener == oldListener) {
-            SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    newListener.dragOperationChanged(event);
-                }
-            });
-        }
-    }
-
-    /**
-     * The cursor is moving over the drop target. Updates the current listener and 
-     * forwards this event to that listener. If no listener can handle the drag 
-     * operation the <code>event.detail</code> field is set to <code>DND.DROP_NONE</code> 
-     * to indicate an invalid drop.
-     *   
-     * @param event the drop target event
-     * @see DropTargetListener#dragOver(DropTargetEvent)
-     */
-    public void dragOver(final DropTargetEvent event) {
-        TransferDropTargetListener oldListener = getCurrentListener();
-        updateCurrentListener(event);
-        final TransferDropTargetListener newListener = getCurrentListener();
-
-        // only notify the current listener if it hasn't changed based on the 
-        // drag over. otherwise the new listener would get a dragEnter 
-        // followed by a dragOver with the exact same event. 
-        if (newListener != null && newListener == oldListener) {
-        	SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    newListener.dragOver(event);
-                }
-            });
-        }
-    }
-
-    /**
-     * Forwards this event to the current listener, if there is one. Sets the
-     * current listener to <code>null</code> afterwards.
-     * 
-     * @param event the drop target event
-     * @see DropTargetListener#drop(DropTargetEvent)
-     */
-    public void drop(final DropTargetEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drop: " + toString()); //$NON-NLS-1$
-        updateCurrentListener(event);
-        if (getCurrentListener() != null) {
-        	SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    getCurrentListener().drop(event);
-                }
-            });
-        }
-        setCurrentListener(null, event);
-    }
-
-    /**
-     * Forwards this event to the current listener if there is one.
-     * 
-     * @param event the drop target event
-     * @see DropTargetListener#dropAccept(DropTargetEvent)
-     */
-    public void dropAccept(final DropTargetEvent event) {
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Drop Accept: " + toString()); //$NON-NLS-1$
-        if (getCurrentListener() != null) {
-        	SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    getCurrentListener().dropAccept(event);
-                }
-            });
-        }
-    }
-
-    /**
-     * Returns the listener which currently handles drop events.
-     * 
-     * @return the <code>TransferDropTargetListener</code> which currently 
-     * 	handles drop events.
-     */
-    private TransferDropTargetListener getCurrentListener() {
-        return currentListener;
-    }
-
-    /**
-     * Returns the transfer data type supported by the given listener.
-     * Returns <code>null</code> if the listener does not support any of the   
-     * specified data types.
-     *  
-     * @param dataTypes available data types
-     * @param listener <code>TransferDropTargetListener</code> to use for testing 
-     * 	supported data types.
-     * @return the transfer data type supported by the given listener or 
-     * 	<code>null</code>.
-     */
-    private TransferData getSupportedTransferType(TransferData[] dataTypes,
-            TransferDropTargetListener listener) {
-        for (int i = 0; i < dataTypes.length; i++) {
-            if (listener.getTransfer().isSupportedType(dataTypes[i])) {
-                return dataTypes[i];
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns the combined set of <code>Transfer</code> types of all 
-     * <code>TransferDropTargetListeners</code>.
-     * 
-     * @return the combined set of <code>Transfer</code> types
-     */
-    public Transfer[] getTransfers() {
-        Transfer[] types = new Transfer[listeners.size()];
-        for (int i = 0; i < listeners.size(); i++) {
-            TransferDropTargetListener listener = (TransferDropTargetListener) listeners
-                    .get(i);
-            types[i] = listener.getTransfer();
-        }
-        return types;
-    }
-
-    /**
-     * Returns <code>true</code> if there are no listeners to delegate events to.
-     * 
-     * @return <code>true</code> if there are no <code>TransferDropTargetListeners</code>
-     *	<code>false</code> otherwise
-     */
-    public boolean isEmpty() {
-        return listeners.isEmpty();
-    }
-
-    /**
-     * Removes the given <code>TransferDropTargetListener</code>.
-     * Listeners should not be removed while a drag and drop operation is in progress.
-     * 
-     * @param listener the listener to remove
-     */
-    public void removeDropTargetListener(TransferDropTargetListener listener) {
-        if (currentListener == listener) {
-			currentListener = null;
-		}
-        listeners.remove(listener);
-    }
-
-    /**
-     * Sets the current listener to <code>listener</code>. Sends the given 
-     * <code>DropTargetEvent</code> if the current listener changes.
-     * 
-     * @return <code>true</code> if the new listener is different than the previous
-     *	<code>false</code> otherwise
-     */
-    private boolean setCurrentListener(TransferDropTargetListener listener,
-            final DropTargetEvent event) {
-        if (currentListener == listener) {
-			return false;
-		}
-        if (currentListener != null) {
-        	SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    currentListener.dragLeave(event);
-                }
-            });
-        }
-        currentListener = listener;
-        //		if (Policy.DEBUG_DRAG_DROP)
-        //			System.out.println("Current drop listener: " + listener); //$NON-NLS-1$
-        if (currentListener != null) {
-        	SafeRunnable.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    currentListener.dragEnter(event);
-                }
-            });
-        }
-        return true;
-    }
-
-    /**
-     * Updates the current listener to one that can handle the drop. There can be many
-     * listeners and each listener may be able to handle many <code>TransferData</code> 
-     * types. The first listener found that can handle a drop of one of the given 
-     * <code>TransferData</code> types will be selected.
-     * If no listener can handle the drag operation the <code>event.detail</code> field
-     * is set to <code>DND.DROP_NONE</code> to indicate an invalid drop.
-     *
-     * @param event the drop target event
-     */
-    private void updateCurrentListener(DropTargetEvent event) {
-        int originalDetail = event.detail;
-        // revert the detail to the "original" drop type that the User indicated.
-        // this is necessary because the previous listener may have changed the detail 
-        // to something other than what the user indicated.
-        event.detail = originalDropType;
-
-        Iterator iter = listeners.iterator();
-        while (iter.hasNext()) {
-            TransferDropTargetListener listener = (TransferDropTargetListener) iter
-                    .next();
-            TransferData dataType = getSupportedTransferType(event.dataTypes,
-                    listener);
-            if (dataType != null) {
-                TransferData originalDataType = event.currentDataType;
-                // set the data type supported by the drop listener
-                event.currentDataType = dataType;
-                if (listener.isEnabled(event)) {
-                    // if the listener stays the same, set its previously determined  
-                    // event detail 
-                    if (!setCurrentListener(listener, event)) {
-						event.detail = originalDetail;
-					}
-                    return;
-                }
-				event.currentDataType = originalDataType;
-            }
-        }
-        setCurrentListener(null, event);
-        event.detail = DND.DROP_NONE;
-        
-        // -always- ensure that expand/scroll are on...otherwise
-        // if a valid drop target is a child of an invalid one
-        // you can't get there...
-        event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java
deleted file mode 100644
index f824d1e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Geometry.java
+++ /dev/null
@@ -1,807 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Contains static methods for performing simple geometric operations
- * on the SWT geometry classes.
- *
- * @since 3.0
- */
-public class Geometry {
-
-    /**
-     * Prevent this class from being instantiated.
-     * 
-     * @since 3.0
-     */
-    private Geometry() {
-    	//This is not instantiated
-    }
-
-    /**
-     * Returns the square of the distance between two points. 
-     * <p>This is preferred over the real distance when searching
-     * for the closest point, since it avoids square roots.</p>
-     * 
-     * @param p1 first endpoint
-     * @param p2 second endpoint
-     * @return the square of the distance between the two points
-     * 
-     * @since 3.0
-     */
-    public static int distanceSquared(Point p1, Point p2) {
-        int term1 = p1.x - p2.x;
-        int term2 = p1.y - p2.y;
-        return term1 * term1 + term2 * term2;
-    }
-
-    /**
-     * Returns the magnitude of the given 2d vector (represented as a Point)
-     *  
-     * @param p point representing the 2d vector whose magnitude is being computed
-     * @return the magnitude of the given 2d vector
-     * @since 3.0
-     */
-    public static double magnitude(Point p) {
-        return Math.sqrt(magnitudeSquared(p));
-    }
-
-    /**
-     * Returns the square of the magnitude of the given 2-space vector (represented
-     * using a point)
-     * 
-     * @param p the point whose magnitude is being computed
-     * @return the square of the magnitude of the given vector
-     * @since 3.0
-     */
-    public static int magnitudeSquared(Point p) {
-        return p.x * p.x + p.y * p.y;
-    }
-
-    /**
-     * Returns the dot product of the given vectors (expressed as Points)
-     * 
-     * @param p1 the first vector
-     * @param p2 the second vector
-     * @return the dot product of the two vectors
-     * @since 3.0
-     */
-    public static int dotProduct(Point p1, Point p2) {
-        return p1.x * p2.x + p1.y * p2.y;
-    }
-
-    /**
-     * Returns a new point whose coordinates are the minimum of the coordinates of the
-     * given points
-     * 
-     * @param p1 a Point
-     * @param p2 a Point
-     * @return a new point whose coordinates are the minimum of the coordinates of the
-     * given points
-     * @since 3.0
-     */
-    public static Point min(Point p1, Point p2) {
-        return new Point(Math.min(p1.x, p2.x), Math.min(p1.y, p2.y));
-    }
-
-    /**
-     * Returns a new point whose coordinates are the maximum of the coordinates
-     * of the given points
-     * @param p1 a Point
-     * @param p2 a Point
-     * @return point a new point whose coordinates are the maximum of the coordinates
-     * @since 3.0
-     */
-    public static Point max(Point p1, Point p2) {
-        return new Point(Math.max(p1.x, p2.x), Math.max(p1.y, p2.y));
-    }
-
-    /**
-     * Returns a vector in the given direction with the given
-     * magnitude. Directions are given using SWT direction constants, and
-     * the resulting vector is in the screen's coordinate system. That is,
-     * the vector (0, 1) is down and the vector (1, 0) is right. 
-     * 
-     * @param distance magnitude of the vector
-     * @param direction one of SWT.TOP, SWT.BOTTOM, SWT.LEFT, or SWT.RIGHT
-     * @return a point representing a vector in the given direction with the given magnitude
-     * @since 3.0
-     */
-    public static Point getDirectionVector(int distance, int direction) {
-        switch (direction) {
-        case SWT.TOP:
-            return new Point(0, -distance);
-        case SWT.BOTTOM:
-            return new Point(0, distance);
-        case SWT.LEFT:
-            return new Point(-distance, 0);
-        case SWT.RIGHT:
-            return new Point(distance, 0);
-        }
-
-        return new Point(0, 0);
-    }
-
-    /**
-     * Returns the point in the center of the given rectangle.
-     * 
-     * @param rect rectangle being computed
-     * @return a Point at the center of the given rectangle.
-     * @since 3.0
-     */
-    public static Point centerPoint(Rectangle rect) {
-        return new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);
-    }
-
-    /**
-     * Returns a copy of the given point
-     * 
-     * @param toCopy point to copy
-     * @return a copy of the given point
-     */
-    public static Point copy(Point toCopy) {
-        return new Point(toCopy.x, toCopy.y);
-    }
-    
-    /**
-     * Sets result equal to toCopy
-     * 
-     * @param result object that will be modified
-     * @param toCopy object that will be copied
-     * @since 3.1
-     */
-    public static void set(Point result, Point toCopy) {
-    	result.x = toCopy.x;
-    	result.y = toCopy.y;
-    }
-    
-    /**
-     * Sets result equal to toCopy
-     * 
-     * @param result object that will be modified
-     * @param toCopy object that will be copied
-     * @since 3.1
-     */
-    public static void set(Rectangle result, Rectangle toCopy) {
-    	result.x = toCopy.x;
-    	result.y = toCopy.y;
-    	result.width = toCopy.width;
-    	result.height = toCopy.height;
-    }
-
-    /**
-     * <p>Returns a new difference Rectangle whose x, y, width, and height are equal to the difference of the corresponding
-     * attributes from the given rectangles</p>
-     * 
-     * <p></p>
-     * <b>Example: Compute the margins for a given Composite, and apply those same margins to a new GridLayout</b>
-     * 
-     * <code><pre>      
-     *      // Compute the client area, in the coordinate system of the input composite's parent  
-     *      Rectangle clientArea = Display.getCurrent().map(inputComposite, 
-     *      	inputComposite.getParent(), inputComposite.getClientArea());
-     *      
-     *      // Compute the margins for a given Composite by subtracting the client area from the composite's bounds
-     *      Rectangle margins = Geometry.subtract(inputComposite.getBounds(), clientArea);
-     *      
-     *      // Now apply these margins to a new GridLayout
-     *      GridLayout layout = GridLayoutFactory.fillDefaults().margins(margins).create();
-     * </pre></code>
-     * 
-     * @param rect1 first rectangle
-     * @param rect2 rectangle to subtract
-     * @return the difference between the two rectangles (computed as rect1 - rect2)
-     * @since 3.3
-     */
-    public static Rectangle subtract(Rectangle rect1, Rectangle rect2) {
-    	return new Rectangle(rect1.x - rect2.x, rect1.y - rect2.y, rect1.width - rect2.width, rect1.height - rect2.height);
-    }
-    
-    /**
-     * <p>Returns a new Rectangle whose x, y, width, and height is the sum of the x, y, width, and height values of 
-     * both rectangles respectively.</p>
-     * 
-     * @param rect1 first rectangle to add
-     * @param rect2 second rectangle to add
-     * @return a new rectangle whose x, y, height, and width attributes are the sum of the corresponding attributes from
-     *         the arguments.
-     * @since 3.3
-     */
-    public static Rectangle add(Rectangle rect1, Rectangle rect2) {
-    	return new Rectangle(rect1.x + rect2.x, rect1.y + rect2.y, 
-    			rect1.width + rect2.width, rect1.height + rect2.height);
-    }
-    
-    /**
-     * Adds two points as 2d vectors. Returns a new point whose coordinates are
-     * the sum of the original two points.
-     * 
-     * @param point1 the first point (not null)
-     * @param point2 the second point (not null)
-     * @return a new point whose coordinates are the sum of the given points
-     * @since 3.0
-     */
-    public static Point add(Point point1, Point point2) {
-        return new Point(point1.x + point2.x, point1.y + point2.y);
-    }
-    
-    /**
-     * Divides both coordinates of the given point by the given scalar. 
-     * 
-     * @since 3.1 
-     *
-     * @param toDivide point to divide
-     * @param scalar denominator
-     * @return a new Point whose coordinates are equal to the original point divided by the scalar
-     */
-    public static Point divide(Point toDivide, int scalar) {
-        return new Point(toDivide.x / scalar, toDivide.y / scalar);
-    }
-    
-
-    /**
-     * Performs vector subtraction on two points. Returns a new point equal to
-     * (point1 - point2).
-     * 
-     * @param point1 initial point
-     * @param point2 vector to subtract
-     * @return the difference (point1 - point2)
-     * @since 3.0
-     */
-    public static Point subtract(Point point1, Point point2) {
-        return new Point(point1.x - point2.x, point1.y - point2.y);
-    }
-
-    /**
-     * Swaps the X and Y coordinates of the given point.
-     * 
-     * @param toFlip modifies this point
-     * @since 3.1
-     */
-    public static void flipXY(Point toFlip) {
-    	int temp = toFlip.x;
-    	toFlip.x = toFlip.y;
-    	toFlip.y = temp;
-    }
-
-    /**
-     * Swaps the X and Y coordinates of the given rectangle, along with the height and width.
-     * 
-     * @param toFlip modifies this rectangle
-     * @since 3.1
-     */
-    public static void flipXY(Rectangle toFlip) {
-    	int temp = toFlip.x;
-    	toFlip.x = toFlip.y;
-    	toFlip.y = temp;
-    	
-    	temp = toFlip.width;
-    	toFlip.width = toFlip.height;
-    	toFlip.height = temp;
-    }
-    
-    /**
-     * Returns the height or width of the given rectangle.
-     * 
-     * @param toMeasure rectangle to measure
-     * @param width returns the width if true, and the height if false
-     * @return the width or height of the given rectangle
-     * @since 3.0
-     */
-    public static int getDimension(Rectangle toMeasure, boolean width) {
-        if (width) {
-            return toMeasure.width;
-        }
-		return toMeasure.height;
-    }
-
-    /**
-     * Returns the x or y coordinates of the given point.
-     * 
-     * @param toMeasure point being measured
-     * @param width if true, returns x. Otherwise, returns y.
-     * @return the x or y coordinate
-     * @since 3.1
-     */
-    public static int getCoordinate(Point toMeasure, boolean width) {
-    	return width ? toMeasure.x : toMeasure.y;
-    }
-    
-    /**
-     * Returns the x or y coordinates of the given rectangle.
-     * 
-     * @param toMeasure rectangle being measured
-     * @param width if true, returns x. Otherwise, returns y.
-     * @return the x or y coordinate
-     * @since 3.1
-     */
-    public static int getCoordinate(Rectangle toMeasure, boolean width) {
-    	return width ? toMeasure.x : toMeasure.y;
-    }
-    
-    /**
-     * Sets one dimension of the given rectangle. Modifies the given rectangle.
-     * 
-     * @param toSet rectangle to modify
-     * @param width if true, the width is modified. If false, the height is modified.
-     * @param newCoordinate new value of the width or height
-     * @since 3.1
-     */
-    public static void setDimension(Rectangle toSet, boolean width, int newCoordinate) {
-    	if (width) {
-    		toSet.width = newCoordinate;
-    	} else {
-    		toSet.height = newCoordinate;
-    	}
-    }
-
-    /**
-     * Sets one coordinate of the given rectangle. Modifies the given rectangle.
-     * 
-     * @param toSet rectangle to modify
-     * @param width if true, the x coordinate is modified. If false, the y coordinate is modified.
-     * @param newCoordinate new value of the x or y coordinates
-     * @since 3.1
-     */
-    public static void setCoordinate(Rectangle toSet, boolean width, int newCoordinate) {
-    	if (width) {
-    		toSet.x = newCoordinate;
-    	} else {
-    		toSet.y = newCoordinate;
-    	}
-    }
-    
-    /**
-     * Sets one coordinate of the given point. Modifies the given point.
-     * 
-     * @param toSet point to modify
-     * @param width if true, the x coordinate is modified. If false, the y coordinate is modified.
-     * @param newCoordinate new value of the x or y coordinates
-     * @since 3.1
-     */
-    public static void setCoordinate(Point toSet, boolean width, int newCoordinate) {
-    	if (width) {
-    		toSet.x = newCoordinate;
-    	} else {
-    		toSet.y = newCoordinate;
-    	}
-    }
-    
-    /**
-     * Returns the distance of the given point from a particular side of the given rectangle.
-     * Returns negative values for points outside the rectangle.
-     * 
-     * @param rectangle a bounding rectangle
-     * @param testPoint a point to test
-     * @param edgeOfInterest side of the rectangle to test against
-     * @return the distance of the given point from the given edge of the rectangle
-     * @since 3.0
-     */
-    public static int getDistanceFromEdge(Rectangle rectangle, Point testPoint,
-            int edgeOfInterest) {
-        switch (edgeOfInterest) {
-        case SWT.TOP:
-            return testPoint.y - rectangle.y;
-        case SWT.BOTTOM:
-            return rectangle.y + rectangle.height - testPoint.y;
-        case SWT.LEFT:
-            return testPoint.x - rectangle.x;
-        case SWT.RIGHT:
-            return rectangle.x + rectangle.width - testPoint.x;
-        }
-
-        return 0;
-    }
-
-    /**
-     * Extrudes the given edge inward by the given distance. That is, if one side of the rectangle
-     * was sliced off with a given thickness, this returns the rectangle that forms the slice. Note
-     * that the returned rectangle will be inside the given rectangle if size > 0.
-     * 
-     * @param toExtrude the rectangle to extrude. The resulting rectangle will share three sides
-     * with this rectangle.
-     * @param size distance to extrude. A negative size will extrude outwards (that is, the resulting
-     * rectangle will overlap the original iff this is positive). 
-     * @param orientation the side to extrude.  One of SWT.LEFT, SWT.RIGHT, SWT.TOP, or SWT.BOTTOM. The 
-     * resulting rectangle will always share this side with the original rectangle.
-     * @return a rectangle formed by extruding the given side of the rectangle by the given distance.
-     * @since 3.0
-     */
-    public static Rectangle getExtrudedEdge(Rectangle toExtrude, int size,
-            int orientation) {
-        Rectangle bounds = new Rectangle(toExtrude.x, toExtrude.y,
-                toExtrude.width, toExtrude.height);
-
-        if (!isHorizontal(orientation)) {
-            bounds.width = size;
-        } else {
-            bounds.height = size;
-        }
-
-        switch (orientation) {
-        case SWT.RIGHT:
-            bounds.x = toExtrude.x + toExtrude.width - bounds.width;
-            break;
-        case SWT.BOTTOM:
-            bounds.y = toExtrude.y + toExtrude.height - bounds.height;
-            break;
-        }
-
-        normalize(bounds);
-
-        return bounds;
-    }
-
-    /**
-     * Returns the opposite of the given direction. That is, returns SWT.LEFT if
-     * given SWT.RIGHT and visa-versa.
-     * 
-     * @param swtDirectionConstant one of SWT.LEFT, SWT.RIGHT, SWT.TOP, or SWT.BOTTOM
-     * @return one of SWT.LEFT, SWT.RIGHT, SWT.TOP, or SWT.BOTTOM
-     * @since 3.0
-     */
-    public static int getOppositeSide(int swtDirectionConstant) {
-        switch (swtDirectionConstant) {
-        case SWT.TOP:
-            return SWT.BOTTOM;
-        case SWT.BOTTOM:
-            return SWT.TOP;
-        case SWT.LEFT:
-            return SWT.RIGHT;
-        case SWT.RIGHT:
-            return SWT.LEFT;
-        }
-
-        return swtDirectionConstant;
-    }
-
-    /**
-     * Converts the given boolean into an SWT orientation constant.
-     * 
-     * @param horizontal if true, returns SWT.HORIZONTAL. If false, returns SWT.VERTICAL 
-     * @return SWT.HORIZONTAL or SWT.VERTICAL.
-     * @since 3.0
-     */
-    public static int getSwtHorizontalOrVerticalConstant(boolean horizontal) {
-        if (horizontal) {
-            return SWT.HORIZONTAL;
-        }
-		return SWT.VERTICAL;
-    }
-
-    /**
-     * Returns true iff the given SWT side constant corresponds to a horizontal side
-     * of a rectangle. That is, returns true for the top and bottom but false for the
-     * left and right.
-     * 
-     * @param swtSideConstant one of SWT.TOP, SWT.BOTTOM, SWT.LEFT, or SWT.RIGHT
-     * @return true iff the given side is horizontal.
-     * @since 3.0
-     */
-    public static boolean isHorizontal(int swtSideConstant) {
-        return !(swtSideConstant == SWT.LEFT || swtSideConstant == SWT.RIGHT);
-    }
-
-    /**
-     * Moves the given rectangle by the given delta.
-     * 
-     * @param rect rectangle to move (will be modified)
-     * @param delta direction vector to move the rectangle by
-     * @since 3.0
-     */
-    public static void moveRectangle(Rectangle rect, Point delta) {
-        rect.x += delta.x;
-        rect.y += delta.y;
-    }
-
-    /**
-     * Moves each edge of the given rectangle outward by the given amount. Negative values
-     * cause the rectangle to contract. Does not allow the rectangle's width or height to be
-     * reduced below zero.
-     *  
-     * @param rect normalized rectangle to modify
-     * @param differenceRect difference rectangle to be added to rect
-     * @since 3.3
-     */
-    public static void expand(Rectangle rect, Rectangle differenceRect) {
-    	rect.x += differenceRect.x;
-    	rect.y += differenceRect.y;
-    	rect.height = Math.max(0, rect.height + differenceRect.height);
-    	rect.width = Math.max(0, rect.width + differenceRect.width);
-    }
-    
-    /**
-     * <p>Returns a rectangle which, when added to another rectangle, will expand each side
-     * by the given number of units.</p>
-     * 
-     * <p>This is commonly used to store margin sizes. For example:</p>
-     * 
-     * <code><pre>
-     *     // Expands the left, right, top, and bottom 
-     *     // of the given control by 10, 5, 1, and 15 units respectively
-     *      
-     *     Rectangle margins = Geometry.createDifferenceRect(10,5,1,15);
-     *     Rectangle bounds = someControl.getBounds();
-     *     someControl.setBounds(Geometry.add(bounds, margins));
-     * </pre></code>
-     * 
-     * @param left distance to expand the left side (negative values move the edge inward)
-     * @param right distance to expand the right side (negative values move the edge inward)
-     * @param top distance to expand the top (negative values move the edge inward)
-     * @param bottom distance to expand the bottom (negative values move the edge inward)
-     * 
-     * @return a difference rectangle that, when added to another rectangle, will cause each
-     * side to expand by the given number of units
-     * @since 3.3
-     */
-    public static Rectangle createDiffRectangle(int left, int right, int top, int bottom) {
-    	return new Rectangle(-left, -top, left + right, top + bottom);
-    }
-    
-    /**
-     * Moves each edge of the given rectangle outward by the given amount. Negative values
-     * cause the rectangle to contract. Does not allow the rectangle's width or height to be
-     * reduced below zero.
-     *  
-     * @param rect normalized rectangle to modify
-     * @param left distance to move the left edge outward (negative values move the edge inward)
-     * @param right distance to move the right edge outward (negative values move the edge inward) 
-     * @param top distance to move the top edge outward (negative values move the edge inward)
-     * @param bottom distance to move the bottom edge outward (negative values move the edge inward)
-     * @since 3.1
-     */
-    public static void expand(Rectangle rect, int left, int right, int top, int bottom) {
-        rect.x -= left;
-        rect.width = Math.max(0, rect.width + left + right);
-        rect.y -= top;
-        rect.height = Math.max(0, rect.height + top + bottom);
-    }
-    
-    /**
-     * Normalizes the given rectangle. That is, any rectangle with
-     * negative width or height becomes a rectangle with positive
-     * width or height that extends to the upper-left of the original
-     * rectangle. 
-     * 
-     * @param rect rectangle to modify
-     * @since 3.0
-     */
-    public static void normalize(Rectangle rect) {
-        if (rect.width < 0) {
-            rect.width = -rect.width;
-            rect.x -= rect.width;
-        }
-
-        if (rect.height < 0) {
-            rect.height = -rect.height;
-            rect.y -= rect.height;
-        }
-    }
-
-    /**
-     * Converts the given rectangle from display coordinates to the local coordinate system 
-     * of the given object into display coordinates.
-     * 
-     * @param coordinateSystem local coordinate system being converted to
-     * @param toConvert rectangle to convert
-     * @return a rectangle in control coordinates
-     * @since 3.0
-     */
-    public static Rectangle toControl(Control coordinateSystem,
-            Rectangle toConvert) {
-    	return(coordinateSystem.getDisplay().map
-    			(null,coordinateSystem,toConvert));
-    }
-
-    /**
-     * Converts the given rectangle from the local coordinate system of the given object
-     * into display coordinates.
-     * 
-     * @param coordinateSystem local coordinate system being converted from
-     * @param toConvert rectangle to convert
-     * @return a rectangle in display coordinates
-     * @since 3.0
-     */
-    public static Rectangle toDisplay(Control coordinateSystem,
-            Rectangle toConvert) {
-    	return(coordinateSystem.getDisplay().map
-    			(coordinateSystem,null,toConvert));   
-
-    }
-
-    /**
-     * Determines where the given point lies with respect to the given rectangle.
-     * Returns a combination of SWT.LEFT, SWT.RIGHT, SWT.TOP, and SWT.BOTTOM, combined
-     * with bitwise or (for example, returns SWT.TOP | SWT.LEFT if the point is to the
-     * upper-left of the rectangle). Returns 0 if the point lies within the rectangle.
-     * Positions are in screen coordinates (ie: a point is to the upper-left of the
-     * rectangle if its x and y coordinates are smaller than any point in the rectangle)
-     *  
-     * @param boundary normalized boundary rectangle 
-     * @param toTest point whose relative position to the rectangle is being computed
-     * @return one of SWT.LEFT | SWT.TOP, SWT.TOP, SWT.RIGHT | SWT.TOP, SWT.LEFT, 0,
-     * SWT.RIGHT, SWT.LEFT | SWT.BOTTOM, SWT.BOTTOM, SWT.RIGHT | SWT.BOTTOM
-     * @since 3.0
-     */
-    public static int getRelativePosition(Rectangle boundary, Point toTest) {
-        int result = 0;
-
-        if (toTest.x < boundary.x) {
-            result |= SWT.LEFT;
-        } else if (toTest.x >= boundary.x + boundary.width) {
-            result |= SWT.RIGHT;
-        }
-
-        if (toTest.y < boundary.y) {
-            result |= SWT.TOP;
-        } else if (toTest.y >= boundary.y + boundary.height) {
-            result |= SWT.BOTTOM;
-        }
-
-        return result;
-    }
-
-    /**
-     * Returns the distance from the point to the nearest edge of the given
-     * rectangle. Returns negative values if the point lies outside the rectangle.
-     * 
-     * @param boundary rectangle to test
-     * @param toTest point to test
-     * @return the distance between the given point and the nearest edge of the rectangle.
-     * Returns positive values for points inside the rectangle and negative values for points
-     * outside the rectangle.
-     * @since 3.1
-     */
-    public static int getDistanceFrom(Rectangle boundary, Point toTest) {
-        int side = getClosestSide(boundary, toTest);
-        return getDistanceFromEdge(boundary, toTest, side);
-    }
-    
-    /**
-     * Returns the edge of the given rectangle is closest to the given
-     * point.
-     * 
-     * @param boundary rectangle to test
-     * @param toTest point to compare
-     * @return one of SWT.LEFT, SWT.RIGHT, SWT.TOP, or SWT.BOTTOM
-     * 
-     * @since 3.0
-     */
-    public static int getClosestSide(Rectangle boundary, Point toTest) {
-        int[] sides = new int[] { SWT.LEFT, SWT.RIGHT, SWT.TOP, SWT.BOTTOM };
-
-        int closestSide = SWT.LEFT;
-        int closestDistance = Integer.MAX_VALUE;
-
-        for (int idx = 0; idx < sides.length; idx++) {
-            int side = sides[idx];
-
-            int distance = getDistanceFromEdge(boundary, toTest, side);
-
-            if (distance < closestDistance) {
-                closestDistance = distance;
-                closestSide = side;
-            }
-        }
-
-        return closestSide;
-    }
-
-    /**
-     * Returns a copy of the given rectangle
-     * 
-     * @param toCopy rectangle to copy
-     * @return a copy of the given rectangle
-     * @since 3.0
-     */
-    public static Rectangle copy(Rectangle toCopy) {
-        return new Rectangle(toCopy.x, toCopy.y, toCopy.width, toCopy.height);
-    }
-
-    /**
-     * Returns the size of the rectangle, as a Point
-     * 
-     * @param rectangle rectangle whose size is being computed
-     * @return the size of the given rectangle
-     * @since 3.0
-     */
-    public static Point getSize(Rectangle rectangle) {
-        return new Point(rectangle.width, rectangle.height);
-    }
-
-    /**
-     * Sets the size of the given rectangle to the given size
-     * 
-     * @param rectangle rectangle to modify
-     * @param newSize new size of the rectangle
-     * @since 3.0
-     */
-    public static void setSize(Rectangle rectangle, Point newSize) {
-        rectangle.width = newSize.x;
-        rectangle.height = newSize.y;
-    }
-
-    /**
-     * Sets the x,y position of the given rectangle. For a normalized
-     * rectangle (a rectangle with positive width and height), this will
-     * be the upper-left corner of the rectangle. 
-     * 
-     * @param rectangle rectangle to modify
-     * @param newLocation new location of the rectangle
-     * 
-     * @since 3.0
-     */
-    public static void setLocation(Rectangle rectangle, Point newLocation) {
-        rectangle.x = newLocation.x;
-        rectangle.y = newLocation.y;
-    }
-
-    /**
-     * Returns the x,y position of the given rectangle. For normalized rectangles
-     * (rectangles with positive width and height), this is the upper-left
-     * corner of the rectangle.
-     * 
-     * @param toQuery rectangle to query
-     * @return a Point containing the x,y position of the rectangle
-     * 
-     * @since 3.0
-     */
-    public static Point getLocation(Rectangle toQuery) {
-        return new Point(toQuery.x, toQuery.y);
-    }
-
-    /**
-     * Returns a new rectangle with the given position and dimensions, expressed
-     * as points.
-     * 
-     * @param position the (x,y) position of the rectangle
-     * @param size the size of the new rectangle, where (x,y) -> (width, height)
-     * @return a new Rectangle with the given position and size
-     * 
-     * @since 3.0
-     */
-    public static Rectangle createRectangle(Point position, Point size) {
-        return new Rectangle(position.x, position.y, size.x, size.y);
-    }
-    
-    /**
-	 * Repositions the 'inner' rectangle to lie completely within the bounds of the 'outer'
-	 * rectangle if possible. One use for this is to ensure that, when setting a control's bounds,
-	 * that they will always lie within its parent's client area (to avoid clipping).
-	 * 
-	 * @param inner The 'inner' rectangle to be repositioned (should be smaller than the 'outer' rectangle)
-	 * @param outer The 'outer' rectangle
-	 */
-	public static void moveInside(Rectangle inner, Rectangle outer) {
-		// adjust X
-		if (inner.x < outer.x) {
-			inner.x = outer.x;
-		}
-		if ((inner.x + inner.width) > (outer.x + outer.width)) {
-			inner.x -= (inner.x + inner.width) - (outer.x + outer.width);
-		}
-
-		// Adjust Y
-		if (inner.y < outer.y) {
-			inner.y = outer.y;
-		}
-		if ((inner.y + inner.height) > (outer.y + outer.height)) {
-			inner.y -= (inner.y + inner.height) - (outer.y + outer.height);
-		}
-	}
-    
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ILogger.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ILogger.java
deleted file mode 100644
index 5fe3a24..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ILogger.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Chris Gross (schtoo@schtoo.com) - initial API and implementation
- *       (bug 49497 [RCP] JFace dependency on org.eclipse.core.runtime enlarges standalone JFace applications)
- *******************************************************************************/
-
-package org.eclipse.jface.util;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * A mechanism to log errors throughout JFace.
- * <p>
- * Clients may provide their own implementation to change
- * how errors are logged from within JFace.
- * </p>
- * 
- * @see org.eclipse.jface.util.Policy#getLog()
- * @see org.eclipse.jface.util.Policy#setLog(ILogger)
- * @since 3.1
- */
-public interface ILogger {
-	
-	/**
-	 * Logs the given status.
-	 * 
-	 * @param status the status to log
-	 */
-	public void log(IStatus status);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/IOpenEventListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/IOpenEventListener.java
deleted file mode 100644
index f93ce54..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/IOpenEventListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-/**
- * Listener for open events which are generated on selection
- * of default selection depending on the user preferences.
- * 
- * <p>
- * Usage:
- * <pre>
- *	OpenStrategy handler = new OpenStrategy(control);
- *	handler.addOpenListener(new IOpenEventListener() {
- *		public void handleOpen(SelectionEvent e) {
- *			... // code to handle the open event.
- *		}
- *	});
- * </pre>
- * </p>
- *
- * @see OpenStrategy
- */
-public interface IOpenEventListener {
-    /**
-     * Called when a selection or default selection occurs 
-     * depending on the user preference. 
-     * @param e the selection event
-     */
-    public void handleOpen(SelectionEvent e);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/IPropertyChangeListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/IPropertyChangeListener.java
deleted file mode 100644
index 4f4db8e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/IPropertyChangeListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import java.util.EventListener;
-
-/**
- * Listener for property changes.
- * <p>
- * Usage:
- * <pre>
- * IPropertyChangeListener listener =
- *   new IPropertyChangeListener() {
- *      public void propertyChange(PropertyChangeEvent event) {
- *         ... // code to deal with occurrence of property change
- *      }
- *   };
- * emitter.addPropertyChangeListener(listener);
- * ...
- * emitter.removePropertyChangeListener(listener);
- * </pre>
- * </p>
- */
-public interface IPropertyChangeListener extends EventListener {
-    /**
-     * Notification that a property has changed.
-     * <p>
-     * This method gets called when the observed object fires a property
-     * change event.
-     * </p>
-     *
-     * @param event the property change event object describing which property
-     * changed and how
-     */
-    public void propertyChange(PropertyChangeEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ISafeRunnableRunner.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ISafeRunnableRunner.java
deleted file mode 100644
index 0a045cb..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ISafeRunnableRunner.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Chris Gross (schtoo@schtoo.com) - initial API and implementation
- *       (bug 49497 [RCP] JFace dependency on org.eclipse.core.runtime enlarges standalone JFace applications)
- *******************************************************************************/
-
-package org.eclipse.jface.util;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-
-/**
- * Runs a safe runnables.
- * <p>
- * Clients may provide their own implementation to change
- * how safe runnables are run from within JFace.
- * </p>
- * 
- * @see SafeRunnable#getRunner()
- * @see SafeRunnable#setRunner(ISafeRunnableRunner)
- * @see SafeRunnable#run(ISafeRunnable)
- * @since 3.1
- */
-public interface ISafeRunnableRunner {
-	
-	/**
-	 * Runs the runnable.  All <code>ISafeRunnableRunners</code> must catch any exception
-	 * thrown by the <code>ISafeRunnable</code> and pass the exception to 
-	 * <code>ISafeRunnable.handleException()</code>. 
-	 * @param code the code executed as a save runnable
-	 *
-	 * @see SafeRunnable#run(ISafeRunnable)
-	 */
-	public abstract void run(ISafeRunnable code);
-	
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ListenerList.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ListenerList.java
deleted file mode 100644
index 6ccc7cc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/ListenerList.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-/**
- * This class is used to maintain a list of listeners, and is used in the
- * implementations of several classes within JFace which allow you to register
- * listeners of various kinds. It is a fairly lightweight object, occupying
- * minimal space when no listeners are registered.
- * <p>
- * Note that the <code>add</code> method checks for and eliminates duplicates
- * based on identity (not equality). Likewise, the <code>remove</code> method
- * compares based on identity.
- * </p>
- * <p>
- * Use the <code>getListeners</code> method when notifying listeners. Note
- * that no garbage is created if no listeners are registered. The recommended
- * code sequence for notifying all registered listeners of say,
- * <code>FooListener.eventHappened</code>, is:
- * 
- * <pre>
- * Object[] listeners = myListenerList.getListeners();
- * for (int i = 0; i &lt; listeners.length; ++i) {
- * 	((FooListener) listeners[i]).eventHappened(event);
- * }
- * </pre>
- * 
- * </p>
- * 
- * @deprecated Please use {@link org.eclipse.core.runtime.ListenerList} instead.
- *             Please note that the {@link #ListenerList(int)} and
- *             {@link org.eclipse.core.runtime.ListenerList#ListenerList(int)}
- *             constructors have different semantics. Please read the javadoc
- *             carefully. Also note that the equivalent of
- *             {@link #ListenerList()} is actually
- *             {@link org.eclipse.core.runtime.ListenerList#ListenerList(int)}
- *             with {@link org.eclipse.core.runtime.ListenerList#IDENTITY} as
- *             the argument.
- */
-public class ListenerList extends org.eclipse.core.runtime.ListenerList {
-
-	/**
-	 * Creates a listener list with an initial capacity of 1.
-	 */
-	public ListenerList() {
-		super(IDENTITY);
-	}
-
-	/**
-	 * Creates a listener list with the given initial capacity.
-	 * 
-	 * @param capacity
-	 *            the number of listeners which this list can initially accept
-	 *            without growing its internal representation; must be at least
-	 *            1
-	 */
-	public ListenerList(int capacity) {
-		// the runtime ListenerList does not support capacity
-		this();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java
deleted file mode 100644
index 9ad62ca..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/LocalSelectionTransfer.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.dnd.ByteArrayTransfer;
-import org.eclipse.swt.dnd.TransferData;
-
-/**
- * A LocalSelectionTransfer may be used for drag and drop operations
- * within the same instance of Eclipse.
- * The selection is made available directly for use in the DropTargetListener.
- * dropAccept method. The DropTargetEvent passed to dropAccept does not contain
- * the drop data. The selection may be used for validation purposes so that the
- * drop can be aborted if appropriate.
- *
- * This class is not intended to be subclassed.
- * 
- * @since 3.2
- */
-public class LocalSelectionTransfer extends ByteArrayTransfer {
-
-    // First attempt to create a UUID for the type name to make sure that
-    // different Eclipse applications use different "types" of
-    // <code>LocalSelectionTransfer</code>
-    private static final String TYPE_NAME = "local-selection-transfer-format" + (new Long(System.currentTimeMillis())).toString(); //$NON-NLS-1$;
-
-    private static final int TYPEID = registerType(TYPE_NAME);
-
-    private static final LocalSelectionTransfer INSTANCE = new LocalSelectionTransfer();
-
-    private ISelection selection;
-
-    private long selectionSetTime;
-
-    /**
-     * Only the singleton instance of this class may be used. 
-     */
-    protected LocalSelectionTransfer() {
-    	// do nothing
-    }
-
-    /**
-     * Returns the singleton.
-     * 
-     * @return the singleton
-     */
-    public static LocalSelectionTransfer getTransfer() {
-        return INSTANCE;
-    }
-
-    /**
-     * Returns the local transfer data.
-     * 
-     * @return the local transfer data
-     */
-    public ISelection getSelection() {
-        return selection;
-    }
-
-    /**
-     * Tests whether native drop data matches this transfer type.
-     * 
-     * @param result result of converting the native drop data to Java
-     * @return true if the native drop data does not match this transfer type.
-     * 	false otherwise.
-     */
-    private boolean isInvalidNativeType(Object result) {
-        return !(result instanceof byte[])
-                || !TYPE_NAME.equals(new String((byte[]) result));
-    }
-
-    /**
-     * Returns the type id used to identify this transfer.
-     * 
-     * @return the type id used to identify this transfer.
-     */
-    protected int[] getTypeIds() {
-        return new int[] { TYPEID };
-    }
-
-    /**
-     * Returns the type name used to identify this transfer.
-     * 
-     * @return the type name used to identify this transfer.
-     */
-    protected String[] getTypeNames() {
-        return new String[] { TYPE_NAME };
-    }
-
-    /**
-     * Overrides org.eclipse.swt.dnd.ByteArrayTransfer#javaToNative(Object,
-     * TransferData).
-     * Only encode the transfer type name since the selection is read and
-     * written in the same process.
-     * 
-     * @see org.eclipse.swt.dnd.ByteArrayTransfer#javaToNative(java.lang.Object, org.eclipse.swt.dnd.TransferData)
-     */
-    public void javaToNative(Object object, TransferData transferData) {
-        byte[] check = TYPE_NAME.getBytes();
-        super.javaToNative(check, transferData);
-    }
-
-    /**
-     * Overrides org.eclipse.swt.dnd.ByteArrayTransfer#nativeToJava(TransferData).
-     * Test if the native drop data matches this transfer type.
-     * 
-     * @see org.eclipse.swt.dnd.ByteArrayTransfer#nativeToJava(TransferData)
-     */
-    public Object nativeToJava(TransferData transferData) {
-        Object result = super.nativeToJava(transferData);
-        if (isInvalidNativeType(result)) {
-        	Policy.getLog().log(new Status(
-                            IStatus.ERROR,
-                            Policy.JFACE,
-                            IStatus.ERROR,
-                            JFaceResources.getString("LocalSelectionTransfer.errorMessage"), null)); //$NON-NLS-1$
-        }
-        return selection;
-    }
-
-    /**
-     * Sets the transfer data for local use.
-     * 
-     * @param s the transfer data
-     */
-    public void setSelection(ISelection s) {
-        selection = s;
-    }
-
-    /**
-     * Returns the time when the selection operation
-     * this transfer is associated with was started.
-     * 
-     * @return the time when the selection operation has started
-     * 
-     * @see org.eclipse.swt.events.TypedEvent#time
-     */
-    public long getSelectionSetTime() {
-        return selectionSetTime;
-    }
-
-    /**
-     * Sets the time when the selection operation this
-     * transfer is associated with was started.
-     * If assigning this from an SWT event, be sure to use
-     * <code>setSelectionTime(event.time & 0xFFFF)</code>
-     * 
-     * @param time the time when the selection operation was started
-     * 
-     * @see org.eclipse.swt.events.TypedEvent#time
-     */
-    public void setSelectionSetTime(long time) {
-        selectionSetTime = time;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/OpenStrategy.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/OpenStrategy.java
deleted file mode 100644
index f1bf514..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/OpenStrategy.java
+++ /dev/null
@@ -1,480 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.custom.TableTreeItem;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Implementation of single-click and double-click strategies.
- * <p>
- * Usage:
- * <pre>
- *	OpenStrategy handler = new OpenStrategy(control);
- *	handler.addOpenListener(new IOpenEventListener() {
- *		public void handleOpen(SelectionEvent e) {
- *			... // code to handle the open event.
- *		}
- *	});
- * </pre>
- * </p>
- */
-public class OpenStrategy {
-    /** 
-     * Default behavior. Double click to open the item.
-     */
-    public static final int DOUBLE_CLICK = 0;
-
-    /** 
-     * Single click will open the item.
-     */
-    public static final int SINGLE_CLICK = 1;
-
-    /** 
-     * Hover will select the item.
-     */
-    public static final int SELECT_ON_HOVER = 1 << 1;
-
-    /**
-     * Open item when using arrow keys
-     */
-    public static final int ARROW_KEYS_OPEN = 1 << 2;
-
-    /** A single click will generate
-     * an open event but key arrows will not do anything.
-     * 
-     * @deprecated
-     */
-    public static final int NO_TIMER = SINGLE_CLICK;
-
-    /** A single click will generate an open
-     * event and key arrows will generate an open event after a
-     * small time.
-     * 
-     * @deprecated
-     */
-    public static final int FILE_EXPLORER = SINGLE_CLICK | ARROW_KEYS_OPEN;
-
-    /** Pointing to an item will change the selection
-     * and a single click will gererate an open event
-     * 
-     * @deprecated
-     */
-    public static final int ACTIVE_DESKTOP = SINGLE_CLICK | SELECT_ON_HOVER;
-
-    // Time used in FILE_EXPLORER and ACTIVE_DESKTOP
-    private static final int TIME = 500;
-
-    /* SINGLE_CLICK or DOUBLE_CLICK;
-     * In case of SINGLE_CLICK, the bits SELECT_ON_HOVER and ARROW_KEYS_OPEN
-     * my be set as well. */
-    private static int CURRENT_METHOD = DOUBLE_CLICK;
-
-    private Listener eventHandler;
-
-    private ListenerList openEventListeners = new ListenerList();
-
-    private ListenerList selectionEventListeners = new ListenerList();
-
-    private ListenerList postSelectionEventListeners = new ListenerList();
-
-    /**
-     * @param control the control the strategy is applied to
-     */
-    public OpenStrategy(Control control) {
-        initializeHandler(control.getDisplay());
-        addListener(control);
-    }
-
-    /**
-     * Adds an IOpenEventListener to the collection of openEventListeners
-     * @param listener the listener to add
-     */
-    public void addOpenListener(IOpenEventListener listener) {
-        openEventListeners.add(listener);
-    }
-
-    /**
-     * Removes an IOpenEventListener to the collection of openEventListeners
-     * @param listener the listener to remove
-     */
-    public void removeOpenListener(IOpenEventListener listener) {
-        openEventListeners.remove(listener);
-    }
-
-    /**
-     * Adds an SelectionListener to the collection of selectionEventListeners
-     * @param listener the listener to add
-     */
-    public void addSelectionListener(SelectionListener listener) {
-        selectionEventListeners.add(listener);
-    }
-
-    /**
-     * Removes an SelectionListener to the collection of selectionEventListeners
-     * @param listener the listener to remove
-     */
-    public void removeSelectionListener(SelectionListener listener) {
-        selectionEventListeners.remove(listener);
-    }
-
-    /**
-     * Adds an SelectionListener to the collection of selectionEventListeners
-     * @param listener the listener to add
-     */
-    public void addPostSelectionListener(SelectionListener listener) {
-        postSelectionEventListeners.add(listener);
-    }
-
-    /**
-     * Removes an SelectionListener to the collection of selectionEventListeners
-     * @param listener the listener to remove
-     */
-    public void removePostSelectionListener(SelectionListener listener) {
-        postSelectionEventListeners.remove(listener);
-    }
-
-    /**
-     * This method is internal to the framework; it should not be implemented outside
-     * the framework.
-     * @return the current used single/double-click method
-     * 
-     */
-    public static int getOpenMethod() {
-        return CURRENT_METHOD;
-    }
-
-    /**
-     * Set the current used single/double-click method.
-     * 
-     * This method is internal to the framework; it should not be implemented outside
-     * the framework.
-     * @param method the method to be used
-     * @see OpenStrategy#DOUBLE_CLICK
-     * @see OpenStrategy#SINGLE_CLICK
-     * @see OpenStrategy#SELECT_ON_HOVER
-     * @see OpenStrategy#ARROW_KEYS_OPEN
-     */
-    public static void setOpenMethod(int method) {
-        if (method == DOUBLE_CLICK) {
-            CURRENT_METHOD = method;
-            return;
-        }
-        if ((method & SINGLE_CLICK) == 0) {
-			throw new IllegalArgumentException("Invalid open mode"); //$NON-NLS-1$
-		}
-        if ((method & (SINGLE_CLICK | SELECT_ON_HOVER | ARROW_KEYS_OPEN)) == 0) {
-			throw new IllegalArgumentException("Invalid open mode"); //$NON-NLS-1$
-		}
-        CURRENT_METHOD = method;
-    }
-
-    /**
-     * @return true if editors should be activated when opened. 
-     */
-    public static boolean activateOnOpen() {
-        return getOpenMethod() == DOUBLE_CLICK;
-    }
-
-    /*
-     * Adds all needed listener to the control in order to implement
-     * single-click/double-click strategies.
-     */
-    private void addListener(Control c) {
-        c.addListener(SWT.MouseEnter, eventHandler);
-        c.addListener(SWT.MouseExit, eventHandler);
-        c.addListener(SWT.MouseMove, eventHandler);
-        c.addListener(SWT.MouseDown, eventHandler);
-        c.addListener(SWT.MouseUp, eventHandler);
-        c.addListener(SWT.KeyDown, eventHandler);
-        c.addListener(SWT.Selection, eventHandler);
-        c.addListener(SWT.DefaultSelection, eventHandler);
-        c.addListener(SWT.Collapse, eventHandler);
-        c.addListener(SWT.Expand, eventHandler);
-    }
-
-    /*
-     * Fire the selection event to all selectionEventListeners
-     */
-    private void fireSelectionEvent(SelectionEvent e) {
-        if (e.item != null && e.item.isDisposed()) {
-			return;
-		}
-        Object l[] = selectionEventListeners.getListeners();
-        for (int i = 0; i < l.length; i++) {
-            ((SelectionListener) l[i]).widgetSelected(e);
-        }
-    }
-
-    /*
-     * Fire the default selection event to all selectionEventListeners
-     */
-    private void fireDefaultSelectionEvent(SelectionEvent e) {
-        Object l[] = selectionEventListeners.getListeners();
-        for (int i = 0; i < l.length; i++) {
-            ((SelectionListener) l[i]).widgetDefaultSelected(e);
-        }
-    }
-
-    /*
-     * Fire the post selection event to all postSelectionEventListeners
-     */
-    private void firePostSelectionEvent(SelectionEvent e) {
-        if (e.item != null && e.item.isDisposed()) {
-			return;
-		}
-        Object l[] = postSelectionEventListeners.getListeners();
-        for (int i = 0; i < l.length; i++) {
-            ((SelectionListener) l[i]).widgetSelected(e);
-        }
-    }
-
-    /*
-     * Fire the open event to all openEventListeners
-     */
-    private void fireOpenEvent(SelectionEvent e) {
-        if (e.item != null && e.item.isDisposed()) {
-			return;
-		}
-        Object l[] = openEventListeners.getListeners();
-        for (int i = 0; i < l.length; i++) {
-            ((IOpenEventListener) l[i]).handleOpen(e);
-        }
-    }
-
-    //Initialize event handler.
-    private void initializeHandler(final Display display) {
-        eventHandler = new Listener() {
-            boolean timerStarted = false;
-
-            Event mouseUpEvent = null;
-
-            Event mouseMoveEvent = null;
-
-            SelectionEvent selectionPendent = null;
-
-            boolean enterKeyDown = false;
-
-            SelectionEvent defaultSelectionPendent = null;
-
-            boolean arrowKeyDown = false;
-
-            final int[] count = new int[1];
-
-            long startTime = System.currentTimeMillis();
-
-            boolean collapseOccurred = false;
-
-            boolean expandOccurred = false;
-
-            public void handleEvent(final Event e) {
-                if (e.type == SWT.DefaultSelection) {
-                    SelectionEvent event = new SelectionEvent(e);
-                    fireDefaultSelectionEvent(event);
-                    if (CURRENT_METHOD == DOUBLE_CLICK) {
-                        fireOpenEvent(event);
-                    } else {
-                        if (enterKeyDown) {
-                            fireOpenEvent(event);
-                            enterKeyDown = false;
-                            defaultSelectionPendent = null;
-                        } else {
-                            defaultSelectionPendent = event;
-                        }
-                    }
-                    return;
-                }
-
-                switch (e.type) {
-                case SWT.MouseEnter:
-                case SWT.MouseExit:
-                    mouseUpEvent = null;
-                    mouseMoveEvent = null;
-                    selectionPendent = null;
-                    break;
-                case SWT.MouseMove:
-                    if ((CURRENT_METHOD & SELECT_ON_HOVER) == 0) {
-						return;
-					}
-                    if (e.stateMask != 0) {
-						return;
-					}
-                    if (e.widget.getDisplay().getFocusControl() != e.widget) {
-						return;
-					}
-                    mouseMoveEvent = e;
-                    final Runnable runnable[] = new Runnable[1];
-                    runnable[0] = new Runnable() {
-                        public void run() {
-                            long time = System.currentTimeMillis();
-                            int diff = (int) (time - startTime);
-                            if (diff <= TIME) {
-                                display.timerExec(diff * 2 / 3, runnable[0]);
-                            } else {
-                                timerStarted = false;
-                                setSelection(mouseMoveEvent);
-                            }
-                        }
-                    };
-                    startTime = System.currentTimeMillis();
-                    if (!timerStarted) {
-                        timerStarted = true;
-                        display.timerExec(TIME * 2 / 3, runnable[0]);
-                    }
-                    break;
-                case SWT.MouseDown:
-                    mouseUpEvent = null;
-                    arrowKeyDown = false;
-                    break;
-                case SWT.Expand:
-                    expandOccurred = true;
-                    break;
-                case SWT.Collapse:
-                    collapseOccurred = true;
-                    break;
-                case SWT.MouseUp:
-                    mouseMoveEvent = null;
-                    if ((e.button != 1) || ((e.stateMask & ~SWT.BUTTON1) != 0)) {
-						return;
-					}
-                    if (selectionPendent != null
-                            && !(collapseOccurred || expandOccurred)) {
-                        mouseSelectItem(selectionPendent);
-                    } else {
-                        mouseUpEvent = e;
-                        collapseOccurred = false;
-                        expandOccurred = false;
-                    }
-                    break;
-                case SWT.KeyDown:
-                    mouseMoveEvent = null;
-                    mouseUpEvent = null;
-                    arrowKeyDown = ((e.keyCode == SWT.ARROW_UP) || (e.keyCode == SWT.ARROW_DOWN))
-                            && e.stateMask == 0;
-                    if (e.character == SWT.CR) {
-                        if (defaultSelectionPendent != null) {
-                            fireOpenEvent(new SelectionEvent(e));
-                            enterKeyDown = false;
-                            defaultSelectionPendent = null;
-                        } else {
-                            enterKeyDown = true;
-                        }
-                    }
-                    break;
-                case SWT.Selection:
-                    SelectionEvent event = new SelectionEvent(e);
-                    fireSelectionEvent(event);
-                    mouseMoveEvent = null;
-                    if (mouseUpEvent != null) {
-						mouseSelectItem(event);
-					} else {
-						selectionPendent = event;
-					}
-                    count[0]++;
-                    final int id = count[0];
-                    // In the case of arrowUp/arrowDown when in the arrowKeysOpen mode, we
-                    // want to delay any selection until the last arrowDown/Up occurs.  This
-                    // handles the case where the user presses arrowDown/Up successively.
-                    // We only want to open an editor for the last selected item.
-                    display.asyncExec(new Runnable() {
-                        public void run() {
-                            if (arrowKeyDown) {
-                                display.timerExec(TIME, new Runnable() {
-
-                                    public void run() {
-                                        if (id == count[0]) {
-                                            firePostSelectionEvent(new SelectionEvent(
-                                                    e));
-                                            if ((CURRENT_METHOD & ARROW_KEYS_OPEN) != 0) {
-												fireOpenEvent(new SelectionEvent(
-                                                        e));
-											}
-                                        }
-                                    }
-                                });
-                            } else {
-                                firePostSelectionEvent(new SelectionEvent(e));
-                            }
-                        }
-                    });
-                    break;
-                }
-            }
-
-            void mouseSelectItem(SelectionEvent e) {
-                if ((CURRENT_METHOD & SINGLE_CLICK) != 0) {
-					fireOpenEvent(e);
-				}
-                mouseUpEvent = null;
-                selectionPendent = null;
-            }
-
-            void setSelection(Event e) {
-                if (e == null) {
-					return;
-				}
-                Widget w = e.widget;
-                if (w.isDisposed()) {
-					return;
-				}
-
-                SelectionEvent selEvent = new SelectionEvent(e);
-
-                /*ISSUE: May have to create a interface with method:
-                 setSelection(Point p) so that user's custom widgets 
-                 can use this class. If we keep this option. */
-                if (w instanceof Tree) {
-                    Tree tree = (Tree) w;
-                    TreeItem item = tree.getItem(new Point(e.x, e.y));
-                    if (item != null) {
-						tree.setSelection(new TreeItem[] { item });
-					}
-                    selEvent.item = item;
-                } else if (w instanceof Table) {
-                    Table table = (Table) w;
-                    TableItem item = table.getItem(new Point(e.x, e.y));
-                    if (item != null) {
-						table.setSelection(new TableItem[] { item });
-					}
-                    selEvent.item = item;
-                } else if (w instanceof TableTree) {
-                    TableTree table = (TableTree) w;
-                    TableTreeItem item = table.getItem(new Point(e.x, e.y));
-                    if (item != null) {
-						table.setSelection(new TableTreeItem[] { item });
-					}
-                    selEvent.item = item;
-                } else {
-                    return;
-                }
-                if (selEvent.item == null) {
-					return;
-				}
-                fireSelectionEvent(selEvent);
-                firePostSelectionEvent(selEvent);
-            }
-        };
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Policy.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Policy.java
deleted file mode 100644
index c3219d8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Policy.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross (schtoo@schtoo.com) - support for ILogger added
- *       (bug 49497 [RCP] JFace dependency on org.eclipse.core.runtime enlarges standalone JFace applications)
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.AnimatorFactory;
-import org.eclipse.jface.dialogs.ErrorSupportProvider;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * The Policy class handles settings for behaviour, debug flags and logging
- * within JFace.
- * 
- * @since 3.0
- */
-public class Policy {
-
-	/**
-	 * Constant for the the default setting for debug options.
-	 */
-	public static final boolean DEFAULT = false;
-
-	/**
-	 * The unique identifier of the JFace plug-in.
-	 */
-	public static final String JFACE = "org.eclipse.jface"; //$NON-NLS-1$
-
-	private static ILogger log;
-
-	private static Comparator viewerComparator;
-
-	private static AnimatorFactory animatorFactory;
-
-	/**
-	 * A flag to indicate whether unparented dialogs should be checked.
-	 */
-	public static boolean DEBUG_DIALOG_NO_PARENT = DEFAULT;
-
-	/**
-	 * A flag to indicate whether actions are being traced.
-	 */
-	public static boolean TRACE_ACTIONS = DEFAULT;
-
-	/**
-	 * A flag to indicate whether toolbars are being traced.
-	 */
-
-	public static boolean TRACE_TOOLBAR = DEFAULT;
-
-	private static ErrorSupportProvider errorSupportProvider;
-
-	private static StatusHandler statusHandler;
-
-	/**
-	 * Returns the dummy log to use if none has been set
-	 */
-	private static ILogger getDummyLog() {
-		return new ILogger() {
-			public void log(IStatus status) {
-				System.err.println(status.getMessage());
-				if (status.getException() != null) {
-					status.getException().printStackTrace(System.err);
-				}
-			}
-		};
-	}
-
-	/**
-	 * Sets the logger used by JFace to log errors.
-	 * 
-	 * @param logger
-	 *            the logger to use, or <code>null</code> to use the default
-	 *            logger
-	 * @since 3.1
-	 */
-	public static void setLog(ILogger logger) {
-		log = logger;
-	}
-
-	/**
-	 * Returns the logger used by JFace to log errors.
-	 * <p>
-	 * The default logger prints the status to <code>System.err</code>.
-	 * </p>
-	 * 
-	 * @return the logger
-	 * @since 3.1
-	 */
-	public static ILogger getLog() {
-		if (log == null) {
-			log = getDummyLog();
-		}
-		return log;
-	}
-
-	/**
-	 * Sets the status handler used by JFace to handle statuses.
-	 * 
-	 * @param status
-	 *            the handler to use, or <code>null</code> to use the default
-	 *            one
-	 * @since 3.4
-	 */
-	public static void setStatusHandler(StatusHandler status) {
-		statusHandler = status;
-	}
-
-	/**
-	 * Returns the status handler used by JFace to handle statuses.
-	 * 
-	 * @return the status handler
-	 * @since 3.4
-	 */
-	public static StatusHandler getStatusHandler() {
-		if (statusHandler == null) {
-			statusHandler = getDummyStatusHandler();
-		}
-		return statusHandler;
-	}
-
-	private static StatusHandler getDummyStatusHandler() {
-		return new StatusHandler() {
-			private SafeRunnableDialog dialog;
-
-			public void show(final IStatus status, String title) {
-				Runnable runnable = new Runnable() {
-					public void run() {
-						if (dialog == null || dialog.getShell().isDisposed()) {
-							dialog = new SafeRunnableDialog(status);
-							dialog.create();
-							dialog.getShell().addDisposeListener(
-									new DisposeListener() {
-										public void widgetDisposed(
-												DisposeEvent e) {
-											dialog = null;
-										}
-									});
-							dialog.open();
-						} else {
-							dialog.addStatus(status);
-							dialog.refresh();
-						}
-					}
-				};
-				if (Display.getCurrent() != null) {
-					runnable.run();
-				} else {
-					Display.getDefault().asyncExec(runnable);
-				}
-			}
-		};
-	}
-
-	/**
-	 * Return the default comparator used by JFace to sort strings.
-	 * 
-	 * @return a default comparator used by JFace to sort strings
-	 */
-	private static Comparator getDefaultComparator() {
-		return new Comparator() {
-			/**
-			 * Compares string s1 to string s2.
-			 * 
-			 * @param s1
-			 *            string 1
-			 * @param s2
-			 *            string 2
-			 * @return Returns an integer value. Value is less than zero if
-			 *         source is less than target, value is zero if source and
-			 *         target are equal, value is greater than zero if source is
-			 *         greater than target.
-			 * @exception ClassCastException
-			 *                the arguments cannot be cast to Strings.
-			 */
-			public int compare(Object s1, Object s2) {
-				return ((String) s1).compareTo((String) s2);
-			}
-		};
-	}
-
-	/**
-	 * Return the comparator used by JFace to sort strings.
-	 * 
-	 * @return the comparator used by JFace to sort strings
-	 * @since 3.2
-	 */
-	public static Comparator getComparator() {
-		if (viewerComparator == null) {
-			viewerComparator = getDefaultComparator();
-		}
-		return viewerComparator;
-	}
-
-	/**
-	 * Sets the comparator used by JFace to sort strings.
-	 * 
-	 * @param comparator
-	 *            comparator used by JFace to sort strings
-	 * @since 3.2
-	 */
-	public static void setComparator(Comparator comparator) {
-		org.eclipse.core.runtime.Assert.isTrue(viewerComparator == null);
-		viewerComparator = comparator;
-	}
-
-	/**
-	 * Sets the animator factory used by JFace to create control animator
-	 * instances.
-	 * 
-	 * @param factory
-	 *            the AnimatorFactory to use.
-	 * @since 3.2
-	 * @deprecated this is no longer in use as of 3.3
-	 */
-	public static void setAnimatorFactory(AnimatorFactory factory) {
-		animatorFactory = factory;
-	}
-
-	/**
-	 * Returns the animator factory used by JFace to create control animator
-	 * instances.
-	 * 
-	 * @return the animator factory used to create control animator instances.
-	 * @since 3.2
-	 * @deprecated this is no longer in use as of 3.3
-	 */
-	public static AnimatorFactory getAnimatorFactory() {
-		if (animatorFactory == null)
-			animatorFactory = new AnimatorFactory();
-		return animatorFactory;
-	}
-
-	/**
-	 * Set the error support provider for error dialogs.
-	 * 
-	 * @param provider
-	 * @since 3.3
-	 */
-	public static void setErrorSupportProvider(ErrorSupportProvider provider) {
-		errorSupportProvider = provider;
-	}
-
-	/**
-	 * Return the ErrorSupportProvider for the receiver.
-	 * 
-	 * @return ErrorSupportProvider or <code>null</code> if this has not been
-	 *         set
-	 * @since 3.3
-	 */
-	public static ErrorSupportProvider getErrorSupportProvider() {
-		return errorSupportProvider;
-	}
-
-	/**
-	 * Log the Exception to the logger.
-	 * 
-	 * @param exception
-	 * @since 3.4
-	 */
-	public static void logException(Exception exception) {
-		getLog().log(
-				new Status(IStatus.ERROR, JFACE, exception
-						.getLocalizedMessage(), exception));
-
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/PropertyChangeEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/PropertyChangeEvent.java
deleted file mode 100644
index 186f478..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/PropertyChangeEvent.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import java.util.EventObject;
-import org.eclipse.core.runtime.Assert;
-
-/**
- * An event object describing a change to a named property.
- * <p>
- * This concrete class was designed to be instantiated, but may
- * also be subclassed if required.
- * </p>
- * <p>
- * The JFace frameworks contain classes that report property 
- * change events for internal state changes that may be of interest
- * to external parties. A special listener interface
- * (<code>IPropertyChangeListener</code>) is defined for this purpose,
- * and a typical class allow listeners to be registered via
- * an <code>addPropertyChangeListener</code> method.
- * </p>
- *
- * @see IPropertyChangeListener
- */
-public class PropertyChangeEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3256726173533811256L;
-
-    /**
-     * The name of the changed property.
-     */
-    private String propertyName;
-
-    /**
-     * The old value of the changed property, or <code>null</code> if
-     * not known or not relevant.
-     */
-    private Object oldValue;
-
-    /**
-     * The new value of the changed property, or <code>null</code> if
-     * not known or not relevant.
-     */
-    private Object newValue;
-
-    /**
-     * Creates a new property change event.
-     *
-     * @param source the object whose property has changed
-     * @param property the property that has changed (must not be <code>null</code>)
-     * @param oldValue the old value of the property, or <code>null</code> if none
-     * @param newValue the new value of the property, or <code>null</code> if none
-     */
-    public PropertyChangeEvent(Object source, String property, Object oldValue,
-            Object newValue) {
-        super(source);
-        Assert.isNotNull(property);
-        this.propertyName = property;
-        this.oldValue = oldValue;
-        this.newValue = newValue;
-    }
-
-    /**
-     * Returns the new value of the property.
-     *
-     * @return the new value, or <code>null</code> if not known
-     *  or not relevant (for instance if the property was removed).
-     */
-    public Object getNewValue() {
-        return newValue;
-    }
-
-    /**
-     * Returns the old value of the property.
-     *
-     * @return the old value, or <code>null</code> if not known
-     *  or not relevant (for instance if the property was just
-     *  added and there was no old value).
-     */
-    public Object getOldValue() {
-        return oldValue;
-    }
-
-    /**
-     * Returns the name of the property that changed.
-     * <p>
-     * Warning: there is no guarantee that the property name returned
-     * is a constant string.  Callers must compare property names using
-     * equals, not ==.
-     * </p>
-     *
-     * @return the name of the property that changed
-     */
-    public String getProperty() {
-        return propertyName;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnable.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnable.java
deleted file mode 100644
index 62ef4cc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnable.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross (schtoo@schtoo.com) - support for ISafeRunnableRunner added
- *       (bug 49497 [RCP] JFace dependency on org.eclipse.core.runtime enlarges standalone JFace applications)
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.JFaceResources;
-
-/**
- * Implements a default implementation of ISafeRunnable. The default
- * implementation of <code>handleException</code> opens a dialog to show any
- * errors as they accumulate.
- * <p>
- * This may be executed on any thread.
- */
-public abstract class SafeRunnable implements ISafeRunnable {
-
-	private static boolean ignoreErrors = false;
-
-	private static ISafeRunnableRunner runner;
-
-	private String message;
-
-	/**
-	 * Creates a new instance of SafeRunnable with a default error message.
-	 */
-	public SafeRunnable() {
-		// do nothing
-	}
-
-	/**
-	 * Creates a new instance of SafeRunnable with the given error message.
-	 * 
-	 * @param message
-	 *            the error message to use
-	 */
-	public SafeRunnable(String message) {
-		this.message = message;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
-	 */
-	public void handleException(Throwable e) {
-		// Workaround to avoid interactive error dialogs during
-		// automated testing
-		if (ignoreErrors)
-			return;
-
-		if (message == null)
-			message = JFaceResources.getString("SafeRunnable.errorMessage"); //$NON-NLS-1$
-
-		Policy.getStatusHandler().show(
-				new Status(IStatus.ERROR, Policy.JFACE, message, e),
-				JFaceResources.getString("SafeRunnable.errorMessage")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Flag to avoid interactive error dialogs during automated testing.
-	 * 
-	 * @param flag
-	 * @return true if errors should be ignored
-	 * @deprecated use getIgnoreErrors()
-	 */
-	public static boolean getIgnoreErrors(boolean flag) {
-		return ignoreErrors;
-	}
-
-	/**
-	 * Flag to avoid interactive error dialogs during automated testing.
-	 * 
-	 * @return true if errors should be ignored
-	 * 
-	 * @since 3.0
-	 */
-	public static boolean getIgnoreErrors() {
-		return ignoreErrors;
-	}
-
-	/**
-	 * Flag to avoid interactive error dialogs during automated testing.
-	 * 
-	 * @param flag
-	 *            set to true if errors should be ignored
-	 */
-	public static void setIgnoreErrors(boolean flag) {
-		ignoreErrors = flag;
-	}
-
-	/**
-	 * Returns the safe runnable runner.
-	 * 
-	 * @return the safe runnable runner
-	 * 
-	 * @since 3.1
-	 */
-	public static ISafeRunnableRunner getRunner() {
-		if (runner == null) {
-			runner = createDefaultRunner();
-		}
-		return runner;
-	}
-
-	/**
-	 * Creates the default safe runnable runner.
-	 * 
-	 * @return the default safe runnable runner
-	 * @since 3.1
-	 */
-	private static ISafeRunnableRunner createDefaultRunner() {
-		return new ISafeRunnableRunner() {
-			public void run(ISafeRunnable code) {
-				try {
-					code.run();
-				} catch (Exception e) {
-					handleException(code, e);
-				} catch (LinkageError e) {
-					handleException(code, e);
-				}
-			}
-
-			private void handleException(ISafeRunnable code, Throwable e) {
-				if (!(e instanceof OperationCanceledException)) {
-					try {
-						Policy.getLog()
-								.log(
-										new Status(IStatus.ERROR, Policy.JFACE,
-												IStatus.ERROR,
-												"Exception occurred", e)); //$NON-NLS-1$
-					} catch (Exception ex) {
-						e.printStackTrace();
-					}
-				}
-				code.handleException(e);
-			}
-		};
-	}
-
-	/**
-	 * Sets the safe runnable runner.
-	 * 
-	 * @param runner
-	 *            the runner to set, or <code>null</code> to reset to the
-	 *            default runner
-	 * @since 3.1
-	 */
-	public static void setRunner(ISafeRunnableRunner runner) {
-		SafeRunnable.runner = runner;
-	}
-
-	/**
-	 * Runs the given safe runnable using the safe runnable runner. This is a
-	 * convenience method, equivalent to:
-	 * <code>SafeRunnable.getRunner().run(runnable)</code>.
-	 * 
-	 * @param runnable
-	 *            the runnable to run
-	 * @since 3.1
-	 */
-	public static void run(ISafeRunnable runnable) {
-		getRunner().run(runnable);
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnableDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnableDialog.java
deleted file mode 100644
index 561090a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/SafeRunnableDialog.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.CellLabelProvider;
-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.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerCell;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * SafeRunnableDialog is a dialog that can show the results of multiple safe
- * runnable errors.
- * 
- */
-class SafeRunnableDialog extends ErrorDialog {
-
-	private TableViewer statusListViewer;
-
-	private Collection statuses = new ArrayList();
-
-	/**
-	 * Create a new instance of the receiver on a status.
-	 * 
-	 * @param status
-	 *            The status to display.
-	 */
-	SafeRunnableDialog(IStatus status) {
-
-		super(null, JFaceResources.getString("error"), status.getMessage(), //$NON-NLS-1$
-				status, IStatus.ERROR);
-
-		setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS | SWT.RESIZE | SWT.MIN | SWT.MAX
-				| getDefaultOrientation());
-
-		setStatus(status);
-		statuses.add(status);
-		
-		setBlockOnOpen(false);
-
-		String reason = JFaceResources
-				.getString("SafeRunnableDialog_checkDetailsMessage"); //$NON-NLS-1$
-		if (status.getException() != null) {
-			reason = status.getException().getMessage() == null ? status
-					.getException().toString() : status.getException()
-					.getMessage();
-		}
-		this.message = JFaceResources.format(JFaceResources
-				.getString("SafeRunnableDialog_reason"), new Object[] { //$NON-NLS-1$
-				status.getMessage(), reason });
-	}
-
-	/**
-	 * Method which should be invoked when new errors become available for
-	 * display
-	 */
-	void refresh() {
-
-		if (AUTOMATED_MODE)
-			return;
-
-		createStatusList((Composite) dialogArea);
-		updateEnablements();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.ErrorDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Control area = super.createDialogArea(parent);
-		createStatusList((Composite) area);
-		return area;
-	}
-
-	/**
-	 * Create the status list if required.
-	 * 
-	 * @param parent
-	 *            the Control to create it in.
-	 */
-	private void createStatusList(Composite parent) {
-		if (isMultipleStatusDialog()) {
-			if (statusListViewer == null) {
-				// The job list doesn't exist so create it.
-				setMessage(JFaceResources
-						.getString("SafeRunnableDialog_MultipleErrorsMessage")); //$NON-NLS-1$
-				getShell()
-						.setText(
-								JFaceResources
-										.getString("SafeRunnableDialog_MultipleErrorsTitle")); //$NON-NLS-1$
-				createStatusListArea(parent);
-				showDetailsArea();
-			}
-			refreshStatusList();
-		}
-	}
-
-	/*
-	 * Update the button enablements
-	 */
-	private void updateEnablements() {
-		Button details = getButton(IDialogConstants.DETAILS_ID);
-		if (details != null) {
-			details.setEnabled(true);
-		}
-	}
-
-	/**
-	 * This method sets the message in the message label.
-	 * 
-	 * @param messageString -
-	 *            the String for the message area
-	 */
-	private void setMessage(String messageString) {
-		// must not set null text in a label
-		message = messageString == null ? "" : messageString; //$NON-NLS-1$
-		if (messageLabel == null || messageLabel.isDisposed()) {
-			return;
-		}
-		messageLabel.setText(message);
-	}
-
-	/**
-	 * Create an area that allow the user to select one of multiple jobs that
-	 * have reported errors
-	 * 
-	 * @param parent -
-	 *            the parent of the area
-	 */
-	private void createStatusListArea(Composite parent) {
-		// Display a list of jobs that have reported errors
-		statusListViewer = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL
-				| SWT.V_SCROLL | SWT.BORDER);
-		statusListViewer.setComparator(getViewerComparator());
-		Control control = statusListViewer.getControl();
-		GridData data = new GridData(GridData.FILL_BOTH
-				| GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
-		data.heightHint = convertHeightInCharsToPixels(10);
-		control.setLayoutData(data);
-		statusListViewer.setContentProvider(getStatusContentProvider());
-		statusListViewer.setLabelProvider(getStatusListLabelProvider());
-		statusListViewer
-				.addSelectionChangedListener(new ISelectionChangedListener() {
-					public void selectionChanged(SelectionChangedEvent event) {
-						handleSelectionChange();
-					}
-				});
-		applyDialogFont(parent);
-		statusListViewer.setInput(this);
-	}
-
-	/**
-	 * Return the label provider for the status list.
-	 * 
-	 * @return CellLabelProvider
-	 */
-	private CellLabelProvider getStatusListLabelProvider() {
-		return new CellLabelProvider() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.CellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
-			 */
-			public void update(ViewerCell cell) {
-				cell.setText(((IStatus) cell.getElement()).getMessage());
-
-			}
-		};
-	}
-
-	/**
-	 * Return the content provider for the statuses.
-	 * 
-	 * @return IStructuredContentProvider
-	 */
-	private IStructuredContentProvider getStatusContentProvider() {
-		return new IStructuredContentProvider() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-			 */
-			public Object[] getElements(Object inputElement) {
-				return statuses.toArray();
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-			 */
-			public void dispose() {
-
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-			 *      java.lang.Object, java.lang.Object)
-			 */
-			public void inputChanged(Viewer viewer, Object oldInput,
-					Object newInput) {
-
-			}
-		};
-	}
-
-	/*
-	 * Return whether there are multiple errors to be displayed
-	 */
-	private boolean isMultipleStatusDialog() {
-		return statuses.size() > 1;
-	}
-
-	/**
-	 * Return a viewer sorter for looking at the jobs.
-	 * 
-	 * @return ViewerSorter
-	 */
-	private ViewerComparator getViewerComparator() {
-		return new ViewerComparator() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
-			 *      java.lang.Object, java.lang.Object)
-			 */
-			public int compare(Viewer testViewer, Object e1, Object e2) {
-				String message1 = ((IStatus) e1).getMessage();
-				String message2 = ((IStatus) e2).getMessage();
-				if (message1 == null)
-					return 1;
-				if (message2 == null)
-					return -1;
-
-				return message1.compareTo(message2);
-			}
-		};
-	}
-
-	/**
-	 * Refresh the contents of the viewer.
-	 */
-	void refreshStatusList() {
-		if (statusListViewer != null
-				&& !statusListViewer.getControl().isDisposed()) {
-			statusListViewer.refresh();
-			Point newSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			getShell().setSize(newSize);
-		}
-	}
-
-	/**
-	 * Get the single selection. Return null if the selection is not just one
-	 * element.
-	 * 
-	 * @return IStatus or <code>null</code>.
-	 */
-	private IStatus getSingleSelection() {
-		ISelection rawSelection = statusListViewer.getSelection();
-		if (rawSelection != null
-				&& rawSelection instanceof IStructuredSelection) {
-			IStructuredSelection selection = (IStructuredSelection) rawSelection;
-			if (selection.size() == 1) {
-				return (IStatus) selection.getFirstElement();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * The selection in the multiple job list has changed. Update widget
-	 * enablements and repopulate the list.
-	 */
-	void handleSelectionChange() {
-		IStatus newSelection = getSingleSelection();
-		setStatus(newSelection);
-		updateEnablements();
-		showDetailsArea();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.ErrorDialog#shouldShowDetailsButton()
-	 */
-	protected boolean shouldShowDetailsButton() {
-		return true;
-	}
-
-	/**
-	 * Add the status to the receiver.
-	 * @param status
-	 */
-	public void addStatus(IStatus status) {
-		statuses.add(status);
-		refresh();
-		
-	}
-
-	
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/StatusHandler.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/StatusHandler.java
deleted file mode 100644
index a5db69d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/StatusHandler.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.util;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * A mechanism to handle statuses throughout JFace.
- * <p>
- * Clients may provide their own implementation to change how statuses are
- * handled from within JFace.
- * </p>
- * 
- * @see org.eclipse.jface.util.Policy#getStatusHandler()
- * @see org.eclipse.jface.util.Policy#setStatusHandler(StatusHandler)
- * 
- * @since 3.4
- */
-abstract public class StatusHandler {
-    
-	/**
-	 * Show the given status.
-	 * 
-	 * @param status
-	 *            status to handle
-	 * @param title
-	 *            title for the status
-	 */
-	abstract public void show(IStatus status, String title);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDragSourceListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDragSourceListener.java
deleted file mode 100644
index 7fc3685..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDragSourceListener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.Transfer;
-
-/**
- * A <code>TransferDragSourceListener</code> is a <code>DragSourceListener</code> 
- * that can handle one type of SWT {@link Transfer}. 
- * The purpose of a <code>TransferDragSourceListener</code> is to:
- * <ul>
- *   <li>Determine enablement for a drag operation. A <code>TransferDragSourceListener</code>
- * 	will not be used in a drag operation if the <code>DragSourceEvent#doit</code> field 
- * 	is set to false in <code>DragSourceListener#dragStart(DragSourceEvent)</code>.
- *   <li>Set data for a single type of drag and <code>Transfer</code> type.
- * </ul>
- * <p>
- * A <code>DelegatingDragAdapter</code> allows these functions to be implemented 
- * separately for unrelated types of drags. <code>DelegatingDragAdapter</code> then 
- * combines the function of each <code>TransferDragSourceListener</code>, while 
- * allowing them to be implemented as if they were the only <code>DragSourceListener</code>.
- * </p>
- * @since 3.0
- */
-public interface TransferDragSourceListener extends DragSourceListener {
-    /**
-     * Returns the <code>Transfer</code> type that this listener can provide data for.
-     * 
-     * @return the <code>Transfer</code> associated with this listener
-     */
-    Transfer getTransfer();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDropTargetListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDropTargetListener.java
deleted file mode 100644
index cec4b9b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/TransferDropTargetListener.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.util;
-
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-
-/**
- * A <code>TransferDropTargetListener</code> is a <code>DropTragetListener</code> 
- * that handles one type of SWT {@link Transfer}. 
- * The purpose of a <code>TransferDropTargetListener</code> is to:
- * <ul>
- *   <li>Determine enablement for a drop operation. A <code>TransferDropTargetListener</code>
- * 		will not be used if <code>isEnabled</code> returns false. 
- *   <li>When enabled, optionally show feedback on the <code>DropTarget</code>.
- *   <li>Perform the actual drop
- * </ul>
- * A <code>DelegatingDropAdapter</code> allows these functions to be implemented 
- * separately for unrelated types of drags. <code>DelegatingDropAdapter</code> then 
- * combines the function of each <code>TransferDropTargetListener</code>, while 
- * allowing them to be implemented as if they were the only <code>DragSourceListener</code>.
- * @since 3.0
- */
-public interface TransferDropTargetListener extends DropTargetListener {
-    /**
-     * Returns the <code>Transfer</code> type that this listener can 
-     * accept a drop operation for.
-     * 
-     * @return the <code>Transfer</code> for this listener
-     */
-    Transfer getTransfer();
-
-    /**
-     * Returns <code>true</code> if this listener can handle the drop
-     * based on the given <code>DropTargetEvent</code>.
-     * <p>
-     * This method is called by the <code>DelegatingDropAdapter</code> only
-     * if the <code>DropTargetEvent</code> contains a transfer data type
-     * supported by this listener. The <code>Transfer</code> returned by the 
-     * <code>#getTransfer()</code> method is used for this purpose.
-     * </p>
-     * 
-     * @param event the drop target event
-     * @return <code>true</code> if the listener is enabled for the given
-     * 	drop target event.
-     */
-    boolean isEnabled(DropTargetEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java
deleted file mode 100644
index c0d58ea..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/Util.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.util;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-/**
- * <p>
- * A static class providing utility methods to all of JFace.
- * </p>
- * 
- * @since 3.1
- */
-public final class Util {
-
-	/**
-	 * An unmodifiable, empty, sorted set. This value is guaranteed to never
-	 * change and never be <code>null</code>.
-	 */
-	public static final SortedSet EMPTY_SORTED_SET = Collections
-			.unmodifiableSortedSet(new TreeSet());
-
-	/**
-	 * A common zero-length string. It avoids needing write <code>NON-NLS</code>
-	 * next to code fragments. It's also a bit clearer to read.
-	 */
-	public static final String ZERO_LENGTH_STRING = ""; //$NON-NLS-1$
-
-	/**
-	 * Verifies that the given object is an instance of the given class.
-	 * 
-	 * @param object
-	 *            The object to check; may be <code>null</code>.
-	 * @param c
-	 *            The class which the object should be; must not be
-	 *            <code>null</code>.
-	 */
-	public static final void assertInstance(final Object object, final Class c) {
-		assertInstance(object, c, false);
-	}
-
-	/**
-	 * Verifies the given object is an instance of the given class. It is
-	 * possible to specify whether the object is permitted to be
-	 * <code>null</code>.
-	 * 
-	 * @param object
-	 *            The object to check; may be <code>null</code>.
-	 * @param c
-	 *            The class which the object should be; must not be
-	 *            <code>null</code>.
-	 * @param allowNull
-	 *            Whether the object is allowed to be <code>null</code>.
-	 */
-	private static final void assertInstance(final Object object,
-			final Class c, final boolean allowNull) {
-		if (object == null && allowNull) {
-			return;
-		}
-
-		if (object == null || c == null) {
-			throw new NullPointerException();
-		} else if (!c.isInstance(object)) {
-			throw new IllegalArgumentException();
-		}
-	}
-
-	/**
-	 * Compares two boolean values. <code>false</code> is considered to be
-	 * "less than" <code>true</code>.
-	 * 
-	 * @param left
-	 *            The left value to compare
-	 * @param right
-	 *            The right value to compare
-	 * @return <code>-1</code> if the left is <code>false</code> and the
-	 *         right is <code>true</code>. <code>1</code> if the opposite
-	 *         is true. If they are equal, then it returns <code>0</code>.
-	 */
-	public static final int compare(final boolean left, final boolean right) {
-		return left == false ? (right == true ? -1 : 0) : 1;
-	}
-
-	/**
-	 * Compares two integer values.
-	 * 
-	 * @param left
-	 *            The left value to compare
-	 * @param right
-	 *            The right value to compare
-	 * @return <code>left - right</code>
-	 */
-	public static final int compare(final int left, final int right) {
-		return left - right;
-	}
-
-	/**
-	 * Compares to comparable objects -- defending against <code>null</code>.
-	 * 
-	 * @param left
-	 *            The left object to compare; may be <code>null</code>.
-	 * @param right
-	 *            The right object to compare; may be <code>null</code>.
-	 * @return The result of the comparison. <code>null</code> is considered
-	 *         to be the least possible value.
-	 */
-	public static final int compare(final Comparable left,
-			final Comparable right) {
-		if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-			return left.compareTo(right);
-		}
-	}
-
-	/**
-	 * Compares two arrays of comparable objects -- accounting for
-	 * <code>null</code>.
-	 * 
-	 * @param left
-	 *            The left array to be compared; may be <code>null</code>.
-	 * @param right
-	 *            The right array to be compared; may be <code>null</code>.
-	 * @return The result of the comparison. <code>null</code> is considered
-	 *         to be the least possible value. A shorter array is considered
-	 *         less than a longer array.
-	 */
-	public static final int compare(final Comparable[] left,
-			final Comparable[] right) {
-		if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-			int l = left.length;
-			int r = right.length;
-
-			if (l != r) {
-				return l - r;
-			}
-
-			for (int i = 0; i < l; i++) {
-				int compareTo = compare(left[i], right[i]);
-
-				if (compareTo != 0) {
-					return compareTo;
-				}
-			}
-
-			return 0;
-		}
-	}
-
-	/**
-	 * Compares two lists -- account for <code>null</code>. The lists must
-	 * contain comparable objects.
-	 * 
-	 * @param left
-	 *            The left list to compare; may be <code>null</code>. This
-	 *            list must only contain instances of <code>Comparable</code>.
-	 * @param right
-	 *            The right list to compare; may be <code>null</code>. This
-	 *            list must only contain instances of <code>Comparable</code>.
-	 * @return The result of the comparison. <code>null</code> is considered
-	 *         to be the least possible value. A shorter list is considered less
-	 *         than a longer list.
-	 */
-	public static final int compare(final List left, final List right) {
-		if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-			int l = left.size();
-			int r = right.size();
-
-			if (l != r) {
-				return l - r;
-			}
-
-			for (int i = 0; i < l; i++) {
-				int compareTo = compare((Comparable) left.get(i),
-						(Comparable) right.get(i));
-
-				if (compareTo != 0) {
-					return compareTo;
-				}
-			}
-
-			return 0;
-		}
-	}
-
-	/**
-	 * Tests whether the first array ends with the second array.
-	 * 
-	 * @param left
-	 *            The array to check (larger); may be <code>null</code>.
-	 * @param right
-	 *            The array that should be a subsequence (smaller); may be
-	 *            <code>null</code>.
-	 * @param equals
-	 *            Whether the two array are allowed to be equal.
-	 * @return <code>true</code> if the second array is a subsequence of the
-	 *         array list, and they share end elements.
-	 */
-	public static final boolean endsWith(final Object[] left,
-			final Object[] right, final boolean equals) {
-		if (left == null || right == null) {
-			return false;
-		}
-
-		int l = left.length;
-		int r = right.length;
-
-		if (r > l || !equals && r == l) {
-			return false;
-		}
-
-		for (int i = 0; i < r; i++) {
-			if (!equals(left[l - i - 1], right[r - i - 1])) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Checks whether the two objects are <code>null</code> -- allowing for
-	 * <code>null</code>.
-	 * 
-	 * @param left
-	 *            The left object to compare; may be <code>null</code>.
-	 * @param right
-	 *            The right object to compare; may be <code>null</code>.
-	 * @return <code>true</code> if the two objects are equivalent;
-	 *         <code>false</code> otherwise.
-	 */
-	public static final boolean equals(final Object left, final Object right) {
-		return left == null ? right == null : ((right != null) && left
-				.equals(right));
-	}
-
-	/**
-	 * Tests whether two arrays of objects are equal to each other. The arrays
-	 * must not be <code>null</code>, but their elements may be
-	 * <code>null</code>.
-	 * 
-	 * @param leftArray
-	 *            The left array to compare; may be <code>null</code>, and
-	 *            may be empty and may contain <code>null</code> elements.
-	 * @param rightArray
-	 *            The right array to compare; may be <code>null</code>, and
-	 *            may be empty and may contain <code>null</code> elements.
-	 * @return <code>true</code> if the arrays are equal length and the
-	 *         elements at the same position are equal; <code>false</code>
-	 *         otherwise.
-	 */
-	public static final boolean equals(final Object[] leftArray,
-			final Object[] rightArray) {
-		if (leftArray == rightArray) {
-			return true;
-		}
-
-		if (leftArray == null) {
-			return (rightArray == null);
-		} else if (rightArray == null) {
-			return false;
-		}
-
-		if (leftArray.length != rightArray.length) {
-			return false;
-		}
-
-		for (int i = 0; i < leftArray.length; i++) {
-			final Object left = leftArray[i];
-			final Object right = rightArray[i];
-			final boolean equal = (left == null) ? (right == null) : (left
-					.equals(right));
-			if (!equal) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Provides a hash code based on the given integer value.
-	 * 
-	 * @param i
-	 *            The integer value
-	 * @return <code>i</code>
-	 */
-	public static final int hashCode(final int i) {
-		return i;
-	}
-
-	/**
-	 * Provides a hash code for the object -- defending against
-	 * <code>null</code>.
-	 * 
-	 * @param object
-	 *            The object for which a hash code is required.
-	 * @return <code>object.hashCode</code> or <code>0</code> if
-	 *         <code>object</code> if <code>null</code>.
-	 */
-	public static final int hashCode(final Object object) {
-		return object != null ? object.hashCode() : 0;
-	}
-
-	/**
-	 * Computes the hash code for an array of objects, but with defense against
-	 * <code>null</code>.
-	 * 
-	 * @param objects
-	 *            The array of objects for which a hash code is needed; may be
-	 *            <code>null</code>.
-	 * @return The hash code for <code>objects</code>; or <code>0</code> if
-	 *         <code>objects</code> is <code>null</code>.
-	 */
-	public static final int hashCode(final Object[] objects) {
-		if (objects == null) {
-			return 0;
-		}
-
-		int hashCode = 89;
-		for (int i = 0; i < objects.length; i++) {
-			final Object object = objects[i];
-			if (object != null) {
-				hashCode = hashCode * 31 + object.hashCode();
-			}
-		}
-
-		return hashCode;
-	}
-
-	/**
-	 * Checks whether the second array is a subsequence of the first array, and
-	 * that they share common starting elements.
-	 * 
-	 * @param left
-	 *            The first array to compare (large); may be <code>null</code>.
-	 * @param right
-	 *            The second array to compare (small); may be <code>null</code>.
-	 * @param equals
-	 *            Whether it is allowed for the two arrays to be equivalent.
-	 * @return <code>true</code> if the first arrays starts with the second
-	 *         list; <code>false</code> otherwise.
-	 */
-	public static final boolean startsWith(final Object[] left,
-			final Object[] right, final boolean equals) {
-		if (left == null || right == null) {
-			return false;
-		}
-
-		int l = left.length;
-		int r = right.length;
-
-		if (r > l || !equals && r == l) {
-			return false;
-		}
-
-		for (int i = 0; i < r; i++) {
-			if (!equals(left[i], right[i])) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Converts an array into a string representation that is suitable for
-	 * debugging.
-	 * 
-	 * @param array
-	 *            The array to convert; may be <code>null</code>.
-	 * @return The string representation of the array; never <code>null</code>.
-	 */
-	public static final String toString(final Object[] array) {
-		if (array == null) {
-			return "null"; //$NON-NLS-1$
-		}
-
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append('[');
-
-		final int length = array.length;
-		for (int i = 0; i < length; i++) {
-			if (i != 0) {
-				buffer.append(',');
-			}
-			final Object object = array[i];
-			final String element = String.valueOf(object);
-			buffer.append(element);
-		}
-		buffer.append(']');
-
-		return buffer.toString();
-	}
-
-	/**
-	 * Provides a translation of a particular key from the resource bundle.
-	 * 
-	 * @param resourceBundle
-	 *            The key to look up in the resource bundle; should not be
-	 *            <code>null</code>.
-	 * @param key
-	 *            The key to look up in the resource bundle; should not be
-	 *            <code>null</code>.
-	 * @param defaultString
-	 *            The value to return if the resource cannot be found; may be
-	 *            <code>null</code>.
-	 * @return The value of the translated resource at <code>key</code>. If
-	 *         the key cannot be found, then it is simply the
-	 *         <code>defaultString</code>.
-	 */
-	public static final String translateString(
-			final ResourceBundle resourceBundle, final String key,
-			final String defaultString) {
-		if (resourceBundle != null && key != null) {
-			try {
-				final String translatedString = resourceBundle.getString(key);
-
-				if (translatedString != null) {
-					return translatedString;
-				}
-			} catch (MissingResourceException eMissingResource) {
-				// Such is life. We'll return the key
-			}
-		}
-
-		return defaultString;
-	}
-	
-	/**
-	 * Foundation replacement for String.replaceAll(*).
-	 * 
-	 * @param src the starting string.
-	 * @param find the string to find.
-	 * @param replacement the string to replace.
-	 * @return The new string.
-	 * @since 3.4
-	 */
-	public static final String replaceAll(String src, String find, String replacement) {
-		final int len = src.length();
-		final int findLen = find.length();
-
-		int idx = src.indexOf(find);
-		if (idx < 0) {
-			return src;
-		}
-
-		StringBuffer buf = new StringBuffer();
-		int beginIndex = 0;
-		while (idx != -1 && idx < len) {
-			buf.append(src.substring(beginIndex, idx));
-			buf.append(replacement);
-			
-			beginIndex = idx + findLen;
-			if (beginIndex < len) {
-				idx = src.indexOf(find, beginIndex);
-			} else {
-				idx = -1;
-			}
-		}
-		if (beginIndex<len) {
-			buf.append(src.substring(beginIndex, (idx==-1?len:idx)));
-		}
-		return buf.toString();
-	}
-
-	/**
-	 * This class should never be constructed.
-	 */
-	private Util() {
-		// Not allowed.
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/package.html
deleted file mode 100644
index 4b1d4a8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/package.html
+++ /dev/null
@@ -1,15 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides useful building blocks used throughout JFace,
-including property change events, a listener list implementation, and runtime
-checked assertions.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractComboBoxCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractComboBoxCellEditor.java
deleted file mode 100644
index 63dd381..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractComboBoxCellEditor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Tom Schindl and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation (bug 174739)
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Abstract base class for Cell-Editors presented as combo boxes
- *
- * @since 3.4
- *
- */
-abstract class AbstractComboBoxCellEditor extends CellEditor {
-	/**
-	 * The list is dropped down when the activation is done through the mouse
-	 */
-	public static final int DROP_DOWN_ON_MOUSE_ACTIVATION = 1;
-
-	/**
-	 * The list is dropped down when the activation is done through the keyboard
-	 */
-	public static final int DROP_DOWN_ON_KEY_ACTIVATION = 1 << 1;
-
-	/**
-	 * The list is dropped down when the activation is done without
-	 * ui-interaction
-	 */
-	public static final int DROP_DOWN_ON_PROGRAMMATIC_ACTIVATION = 1 << 2;
-
-	/**
-	 * The list is dropped down when the activation is done by traversing from
-	 * cell to cell
-	 */
-	public static final int DROP_DOWN_ON_TRAVERSE_ACTIVATION = 1 << 3;
-
-	private int activationStyle = SWT.NONE;
-
-	/**
-	 * Create a new cell-editor
-	 *
-	 * @param parent
-	 *            the parent of the combo
-	 * @param style
-	 *            the style used to create the combo
-	 */
-	AbstractComboBoxCellEditor(Composite parent, int style) {
-		super(parent, style);
-	}
-
-	/**
-	 * Creates a new cell editor with no control and no st of choices.
-	 * Initially, the cell editor has no cell validator.
-	 *
-	 */
-	AbstractComboBoxCellEditor() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.CellEditor#activate(org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent)
-	 */
-	public void activate(ColumnViewerEditorActivationEvent activationEvent) {
-		super.activate(activationEvent);
-		if (activationStyle != SWT.NONE) {
-			boolean dropDown = false;
-			if ((activationEvent.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION || activationEvent.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION)
-					&& (activationStyle & DROP_DOWN_ON_MOUSE_ACTIVATION) != 0 ) {
-				dropDown = true;
-			} else if (activationEvent.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
-					&& (activationStyle & DROP_DOWN_ON_KEY_ACTIVATION) != 0 ) {
-				dropDown = true;
-			} else if (activationEvent.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
-					&& (activationStyle & DROP_DOWN_ON_PROGRAMMATIC_ACTIVATION) != 0) {
-				dropDown = true;
-			} else if (activationEvent.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
-					&& (activationStyle & DROP_DOWN_ON_TRAVERSE_ACTIVATION) != 0) {
-				dropDown = true;
-			}
-
-			if (dropDown) {
-				getControl().getDisplay().asyncExec(new Runnable() {
-
-					public void run() {
-						((CCombo) getControl()).setListVisible(true);
-					}
-
-				});
-
-			}
-		}
-	}
-
-	/**
-	 * This method allows to control how the combo reacts when activated
-	 *
-	 * @param activationStyle
-	 *            the style used
-	 */
-	public void setActivationStyle(int activationStyle) {
-		this.activationStyle = activationStyle;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractListViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractListViewer.java
deleted file mode 100644
index 3d505c8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractListViewer.java
+++ /dev/null
@@ -1,550 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Longfield <clongfield@internap.com> - Fix for Bug 70856
- *     Tom Schindl - fix for bug 157309
- *     Brad Reynolds - bug 141435
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Abstract base class for viewers that contain lists of items (such as a combo or list).
- * Most of the viewer implementation is in this base class, except for the minimal code that
- * actually communicates with the underlying widget.
- * 
- * @see org.eclipse.jface.viewers.ListViewer
- * @see org.eclipse.jface.viewers.ComboViewer
- * 
- * @since 3.0
- */
-public abstract class AbstractListViewer extends StructuredViewer {
-
-    /**
-     * A list of viewer elements (element type: <code>Object</code>).
-     */
-    private java.util.List listMap = new ArrayList();
-
-    /**
-     * Adds the given string to the underlying widget at the given index
-     *  
-     * @param string the string to add
-     * @param index position to insert the string into
-     */
-    protected abstract void listAdd(String string, int index);
-
-    /**
-     * Sets the text of the item at the given index in the underlying widget.
-     * 
-     * @param index index to modify
-     * @param string new text
-     */
-    protected abstract void listSetItem(int index, String string);
-
-    /**
-     * Returns the zero-relative indices of the items which are currently
-     * selected in the underlying widget.  The array is empty if no items are selected.
-     * <p>
-     * Note: This is not the actual structure used by the receiver
-     * to maintain its selection, so modifying the array will
-     * not affect the receiver. 
-     * </p>
-     * @return the array of indices of the selected items
-     */
-    protected abstract int[] listGetSelectionIndices();
-
-    /**
-     * Returns the number of items contained in the underlying widget.
-     *
-     * @return the number of items
-     */
-    protected abstract int listGetItemCount();
-
-    /**
-     * Sets the underlying widget's items to be the given array of items.
-     *
-     * @param labels the array of label text
-     */
-    protected abstract void listSetItems(String[] labels);
-
-    /**
-     * Removes all of the items from the underlying widget.
-     */
-    protected abstract void listRemoveAll();
-
-    /**
-     * Removes the item from the underlying widget at the given
-     * zero-relative index.
-     * 
-     * @param index the index for the item
-     */
-    protected abstract void listRemove(int index);
-
-    /**
-     * Selects the items at the given zero-relative indices in the underlying widget.
-     * The current selection is cleared before the new items are selected.
-     * <p>
-     * Indices that are out of range and duplicate indices are ignored.
-     * If the receiver is single-select and multiple indices are specified,
-     * then all indices are ignored.
-     *
-     * @param ixs the indices of the items to select
-     */
-    protected abstract void listSetSelection(int[] ixs);
-
-    /**
-     * Shows the selection.  If the selection is already showing in the receiver,
-     * this method simply returns.  Otherwise, the items are scrolled until
-     * the selection is visible.
-     */
-    protected abstract void listShowSelection();
-
-    /**
-     * Deselects all selected items in the underlying widget.
-     */
-    protected abstract void listDeselectAll();
-
-    /**
-     * Adds the given elements to this list viewer.
-     * If this viewer does not have a sorter, the elements are added at the end
-     * in the order given; otherwise the elements are inserted at appropriate positions.
-     * <p>
-     * This method should be called (by the content provider) when elements 
-     * have been added to the model, in order to cause the viewer to accurately
-     * reflect the model. This method only affects the viewer, not the model.
-     * </p>
-     *
-     * @param elements the elements to add
-     */
-    public void add(Object[] elements) {
-        assertElementsNotNull(elements);
-        Object[] filtered = filter(elements);
-        ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
-        for (int i = 0; i < filtered.length; i++) {
-            Object element = filtered[i];
-            int ix = indexForElement(element);
-            insertItem(labelProvider, element, ix);
-        }
-    }
-    
-    private void insertItem(ILabelProvider labelProvider, Object element, int index) {
-        listAdd(getLabelProviderText(labelProvider, element), index);
-		listMap.add(index, element);
-		mapElement(element, getControl()); // must map it, since findItem only looks in map, if enabled
-    }
-    
-    /**
-	 * Inserts the given element into this list viewer at the given position.
-	 * If this viewer has a sorter, the position is ignored and the element is
-	 * inserted at the correct position in the sort order.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been added to the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @param position
-	 *            a 0-based position relative to the model, or -1 to indicate
-	 *            the last position
-	 * @since 3.3
-	 */
-    public void insert(Object element, int position) {
-    	if (getComparator() != null || hasFilters()) {
-    		add(element);
-    		return;
-    	}
-    	
-    	insertItem((ILabelProvider) getLabelProvider(), element, position);
-    }
-    
-    
-    /**
-     * Return the text for the element from the labelProvider.
-     * If it is null then return the empty String.
-     * @param labelProvider ILabelProvider
-     * @param element
-     * @return String. Return the emptyString if the labelProvider
-     * returns null for the text.
-     * 
-     * @since 3.1
-     */
-    private String getLabelProviderText(ILabelProvider labelProvider, Object element){
-    	String text = labelProvider.getText(element);
-        if(text == null) {
-			return "";//$NON-NLS-1$
-		}
-        return text;
-    }
-
-    /**
-     * Adds the given element to this list viewer.
-     * If this viewer does not have a sorter, the element is added at the end;
-     * otherwise the element is inserted at the appropriate position.
-     * <p>
-     * This method should be called (by the content provider) when a single element 
-     * has been added to the model, in order to cause the viewer to accurately
-     * reflect the model. This method only affects the viewer, not the model.
-     * Note that there is another method for efficiently processing the simultaneous
-     * addition of multiple elements.
-     * </p>
-     *
-     * @param element the element
-     */
-    public void add(Object element) {
-        add(new Object[] { element });
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     * Since SWT.List doesn't use items we always return the List itself.
-     */
-    protected Widget doFindInputItem(Object element) {
-        if (element != null && equals(element, getRoot())) {
-			return getControl();
-		}
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     * Since SWT.List doesn't use items we always return the List itself.
-     */
-    protected Widget doFindItem(Object element) {
-        if (element != null) {
-            if (listMapContains(element)) {
-				return getControl();
-			}
-        }
-        return null;
-    }
-
-	/* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    protected void doUpdateItem(Widget data, Object element, boolean fullMap) {
-        if (element != null) {
-            int ix = getElementIndex(element);
-            if (ix >= 0) {
-                ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
-                listSetItem(ix, getLabelProviderText(labelProvider,element));
-            }
-        }
-    }
-
-    /**
-     * Returns the element with the given index from this list viewer.
-     * Returns <code>null</code> if the index is out of range.
-     *
-     * @param index the zero-based index
-     * @return the element at the given index, or <code>null</code> if the
-     *   index is out of range
-     */
-    public Object getElementAt(int index) {
-        if (index >= 0 && index < listMap.size()) {
-			return listMap.get(index);
-		}
-        return null;
-    }
-
-    /**
-     * The list viewer implementation of this <code>Viewer</code> framework
-     * method returns the label provider, which in the case of list
-     * viewers will be an instance of <code>ILabelProvider</code>.
-     */
-    public IBaseLabelProvider getLabelProvider() {
-        return super.getLabelProvider();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Viewer.
-     */
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    protected List getSelectionFromWidget() {
-        int[] ixs = listGetSelectionIndices();
-        ArrayList list = new ArrayList(ixs.length);
-        for (int i = 0; i < ixs.length; i++) {
-            Object e = getElementAt(ixs[i]);
-            if (e != null) {
-				list.add(e);
-			}
-        }
-        return list;
-    }
-
-    /**
-     * @param element the element to insert
-     * @return the index where the item should be inserted.
-     */
-    protected int indexForElement(Object element) {
-        ViewerComparator comparator = getComparator();
-        if (comparator == null) {
-			return listGetItemCount();
-		}
-        int count = listGetItemCount();
-        int min = 0, max = count - 1;
-        while (min <= max) {
-            int mid = (min + max) / 2;
-            Object data = listMap.get(mid);
-            int compare = comparator.compare(this, data, element);
-            if (compare == 0) {
-                // find first item > element
-                while (compare == 0) {
-                    ++mid;
-                    if (mid >= count) {
-                        break;
-                    }
-                    data = listMap.get(mid);
-                    compare = comparator.compare(this, data, element);
-                }
-                return mid;
-            }
-            if (compare < 0) {
-				min = mid + 1;
-			} else {
-				max = mid - 1;
-			}
-        }
-        return min;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Viewer.
-     */
-    protected void inputChanged(Object input, Object oldInput) {
-        listMap.clear();
-        Object[] children = getSortedChildren(getRoot());
-        int size = children.length;
-
-        listRemoveAll();
-        String[] labels = new String[size];
-        for (int i = 0; i < size; i++) {
-            Object el = children[i];
-            labels[i] = getLabelProviderText((ILabelProvider) getLabelProvider(),el);
-            listMap.add(el);
-            mapElement(el, getControl()); // must map it, since findItem only looks in map, if enabled
-        }
-        listSetItems(labels);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    protected void internalRefresh(Object element) {
-        Control list = getControl();
-        if (element == null || equals(element, getRoot())) {
-            // the parent
-            if (listMap != null) {
-				listMap.clear();
-			}
-            unmapAllElements();
-            List selection = getSelectionFromWidget();
-            
-            int topIndex = -1;
-            if (selection == null || selection.isEmpty()) {
-            	topIndex = listGetTopIndex();
-            }
-            
-            Object[] children = null;
-            list.setRedraw(false);
-            try {
-				listRemoveAll();
-	            
-	            children = getSortedChildren(getRoot());
-				String[] items = new String[children.length];
-				
-				ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
-				
-				for (int i = 0; i < items.length; i++) {
-	                Object el = children[i];
-	                items[i] = getLabelProviderText(labelProvider, el);
-	                listMap.add(el);
-	                mapElement(el, list); // must map it, since findItem only looks in map, if enabled
-	            }
-				
-				listSetItems(items);
-            } finally {
-            	list.setRedraw(true);
-            }
-            
-            if (topIndex == -1) {
-            	setSelectionToWidget(selection, false);
-            } else {
-				listSetTopIndex(Math.min(topIndex, children.length));
-            }
-        } else {
-            doUpdateItem(list, element, true);
-        }
-    }
-    
-    /**
-     * Returns the index of the item currently at the top of the viewable area.
-     * <p>
-     * Default implementation returns -1.
-     * </p>
-     * @return index, -1 for none
-     * @since 3.3
-     */
-    protected int listGetTopIndex(){
-    	return -1;
-    }
-
-    /**
-     * Sets the index of the item to be at the top of the viewable area.
-     * <p>
-     * Default implementation does nothing.
-     * </p>
-     * @param index the given index. -1 for none.  index will always refer to a valid index.
-     * @since 3.3
-     */
-    protected void listSetTopIndex(int index) {
-    }
-    
-    /**
-     * Removes the given elements from this list viewer.
-     *
-     * @param elements the elements to remove
-     */
-    private void internalRemove(final Object[] elements) {
-        Object input = getInput();
-        for (int i = 0; i < elements.length; ++i) {
-            if (equals(elements[i], input)) {
-                setInput(null);
-                return;
-            }
-            int ix = getElementIndex(elements[i]);
-            if (ix >= 0) {
-                listRemove(ix);
-                listMap.remove(ix);
-                unmapElement(elements[i], getControl());
-            }
-        }
-    }
-
-    /**
-     * Removes the given elements from this list viewer.
-     * The selection is updated if required.
-     * <p>
-     * This method should be called (by the content provider) when elements 
-     * have been removed from the model, in order to cause the viewer to accurately
-     * reflect the model. This method only affects the viewer, not the model.
-     * </p>
-     *
-     * @param elements the elements to remove
-     */
-    public void remove(final Object[] elements) {
-        assertElementsNotNull(elements);
-        if (elements.length == 0) {
-        	return;
-        }
-        preservingSelection(new Runnable() {
-            public void run() {
-                internalRemove(elements);
-            }
-        });
-    }
-
-    /**
-     * Removes the given element from this list viewer.
-     * The selection is updated if necessary.
-     * <p>
-     * This method should be called (by the content provider) when a single element 
-     * has been removed from the model, in order to cause the viewer to accurately
-     * reflect the model. This method only affects the viewer, not the model.
-     * Note that there is another method for efficiently processing the simultaneous
-     * removal of multiple elements.
-     * </p>
-     *
-     * @param element the element
-     */
-    public void remove(Object element) {
-        remove(new Object[] { element });
-    }
-
-    /**
-	 * The list viewer implementation of this <code>Viewer</code> framework
-	 * method ensures that the given label provider is an instance of
-	 * <code>ILabelProvider</code>.
-	 * 
-	 * <b>The optional interfaces {@link IColorProvider} and
-	 * {@link IFontProvider} have no effect for this type of viewer</b>
-	 */
-    public void setLabelProvider(IBaseLabelProvider labelProvider) {
-        Assert.isTrue(labelProvider instanceof ILabelProvider);
-        super.setLabelProvider(labelProvider);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    protected void setSelectionToWidget(List in, boolean reveal) {
-        if (in == null || in.size() == 0) { // clear selection
-            listDeselectAll();
-        } else {
-            int n = in.size();
-            int[] ixs = new int[n];
-            int count = 0;
-            for (int i = 0; i < n; ++i) {
-                Object el = in.get(i);
-                int ix = getElementIndex(el);
-                if (ix >= 0) {
-					ixs[count++] = ix;
-				}
-            }
-            if (count < n) {
-                System.arraycopy(ixs, 0, ixs = new int[count], 0, count);
-            }
-            listSetSelection(ixs);
-            if (reveal) {
-                listShowSelection();
-            }
-        }
-    }
-
-    /**
-     * Returns the index of the given element in listMap, or -1 if the element cannot be found.
-     * As of 3.3, uses the element comparer if available.
-     * 
-     * @param element
-     * @return the index
-     */
-    int getElementIndex(Object element) {
-		IElementComparer comparer = getComparer();
-		if (comparer == null) {
-			return listMap.indexOf(element);
-		}
-		int size = listMap.size();
-		for (int i = 0; i < size; i++) {
-			if (comparer.equals(element, listMap.get(i)))
-				return i;
-		}
-		return -1;
-	}
-
-    /**
-	 * @param element
-	 * @return true if listMap contains the given element
-	 * 
-	 * @since 3.3
-	 */
-	private boolean listMapContains(Object element) {
-		return getElementIndex(element) != -1;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
deleted file mode 100644
index 9975f72..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
+++ /dev/null
@@ -1,1353 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation bug 154329
- *                                               - fixes in bug 170381, 198665, 200731
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * This is a widget independent class implementors of
- * {@link org.eclipse.swt.widgets.Table} like widgets can use to provide a
- * viewer on top of their widget implementations.
- *
- * @since 3.3
- */
-public abstract class AbstractTableViewer extends ColumnViewer {
-
-	private class VirtualManager {
-
-		/**
-		 * The currently invisible elements as provided by the content provider
-		 * or by addition. This will not be populated by an
-		 * ILazyStructuredContentProvider as an ILazyStructuredContentProvider
-		 * is only queried on the virtual callback.
-		 */
-		private Object[] cachedElements = new Object[0];
-
-		/**
-		 * Create a new instance of the receiver.
-		 *
-		 */
-		public VirtualManager() {
-			addTableListener();
-		}
-
-		/**
-		 * Add the listener for SetData on the table
-		 */
-		private void addTableListener() {
-			getControl().addListener(SWT.SetData, new Listener() {
-				/*
-				 * (non-Javadoc)
-				 *
-				 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-				 */
-				public void handleEvent(Event event) {
-					Item item = (Item) event.item;
-					final int index = doIndexOf(item);
-					Object element = resolveElement(index);
-					if (element == null) {
-						// Didn't find it so make a request
-						// Keep looking if it is not in the cache.
-						IContentProvider contentProvider = getContentProvider();
-						// If we are building lazily then request lookup now
-						if (contentProvider instanceof ILazyContentProvider) {
-							((ILazyContentProvider) contentProvider)
-									.updateElement(index);
-							return;
-						}
-					}
-
-					associate(element, item);
-					updateItem(item, element);
-				}
-
-			});
-		}
-
-		/**
-		 * Get the element at index.Resolve it lazily if this is available.
-		 *
-		 * @param index
-		 * @return Object or <code>null</code> if it could not be found
-		 */
-		protected Object resolveElement(int index) {
-
-			Object element = null;
-			if (index < cachedElements.length) {
-				element = cachedElements[index];
-			}
-
-			return element;
-		}
-
-		/**
-		 * A non visible item has been added.
-		 *
-		 * @param element
-		 * @param index
-		 */
-		public void notVisibleAdded(Object element, int index) {
-
-			int requiredCount = doGetItemCount() + 1;
-
-			Object[] newCache = new Object[requiredCount];
-			System.arraycopy(cachedElements, 0, newCache, 0, index);
-			if (index < cachedElements.length) {
-				System.arraycopy(cachedElements, index, newCache, index + 1,
-						cachedElements.length - index);
-			}
-			newCache[index] = element;
-			cachedElements = newCache;
-
-			doSetItemCount(requiredCount);
-		}
-
-		/**
-		 * The elements with the given indices need to be removed from the
-		 * cache.
-		 *
-		 * @param indices
-		 */
-		public void removeIndices(int[] indices) {
-			if (indices.length == 1) {
-				removeIndicesFromTo(indices[0], indices[0]);
-			}
-			int requiredCount = doGetItemCount() - indices.length;
-
-			Arrays.sort(indices);
-			Object[] newCache = new Object[requiredCount];
-			int indexInNewCache = 0;
-			int nextToSkip = 0;
-			for (int i = 0; i < cachedElements.length; i++) {
-				if (nextToSkip < indices.length && i == indices[nextToSkip]) {
-					nextToSkip++;
-				} else {
-					newCache[indexInNewCache++] = cachedElements[i];
-				}
-			}
-			cachedElements = newCache;
-		}
-
-		/**
-		 * The elements between the given indices (inclusive) need to be removed
-		 * from the cache.
-		 *
-		 * @param from
-		 * @param to
-		 */
-		public void removeIndicesFromTo(int from, int to) {
-			int indexAfterTo = to + 1;
-			Object[] newCache = new Object[cachedElements.length
-					- (indexAfterTo - from)];
-			System.arraycopy(cachedElements, 0, newCache, 0, from);
-			if (indexAfterTo < cachedElements.length) {
-				System.arraycopy(cachedElements, indexAfterTo, newCache, from,
-						cachedElements.length - indexAfterTo);
-			}
-		}
-
-		/**
-		 * @param element
-		 * @return the index of the element in the cache, or null
-		 */
-		public int find(Object element) {
-			return Arrays.asList(cachedElements).indexOf(element);
-		}
-
-		/**
-		 * @param count
-		 */
-		public void adjustCacheSize(int count) {
-			if (count == cachedElements.length) {
-				return;
-			} else if (count < cachedElements.length) {
-				Object[] newCache = new Object[count];
-				System.arraycopy(cachedElements, 0, newCache, 0, count);
-				cachedElements = newCache;
-			} else {
-				Object[] newCache = new Object[count];
-				System.arraycopy(cachedElements, 0, newCache, 0,
-						cachedElements.length);
-				cachedElements = newCache;
-			}
-		}
-
-	}
-
-	private VirtualManager virtualManager;
-
-	/**
-	 * Create the new viewer for table like widgets
-	 */
-	public AbstractTableViewer() {
-		super();
-	}
-
-	protected void hookControl(Control control) {
-		super.hookControl(control);
-		initializeVirtualManager(getControl().getStyle());
-	}
-
-	/**
-	 * Initialize the virtual manager to manage the virtual state if the table
-	 * is VIRTUAL. If not use the default no-op version.
-	 *
-	 * @param style
-	 */
-	private void initializeVirtualManager(int style) {
-		if ((style & SWT.VIRTUAL) == 0) {
-			return;
-		}
-
-		virtualManager = new VirtualManager();
-	}
-
-	/**
-	 * Adds the given elements to this table viewer. If this viewer does not
-	 * have a sorter, the elements are added at the end in the order given;
-	 * otherwise the elements are inserted at appropriate positions.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been added to the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param elements
-	 *            the elements to add
-	 */
-	public void add(Object[] elements) {
-		assertElementsNotNull(elements);
-		if (checkBusy())
-			return;
-		Object[] filtered = filter(elements);
-
-		for (int i = 0; i < filtered.length; i++) {
-			Object element = filtered[i];
-			int index = indexForElement(element);
-			createItem(element, index);
-		}
-	}
-
-	/**
-	 * Create a new TableItem at index if required.
-	 *
-	 * @param element
-	 * @param index
-	 *
-	 * @since 3.1
-	 */
-	private void createItem(Object element, int index) {
-		if (virtualManager == null) {
-			updateItem(internalCreateNewRowPart(SWT.NONE, index).getItem(),
-					element);
-		} else {
-			virtualManager.notVisibleAdded(element, index);
-
-		}
-	}
-
-	/**
-	 * Create a new row.  Callers can only use the returned object locally and before
-	 * making the next call on the viewer since it may be re-used for subsequent method
-	 * calls.
-	 *
-	 * @param style
-	 *            the style for the new row
-	 * @param rowIndex
-	 *            the index of the row or -1 if the row is appended at the end
-	 * @return the newly created row
-	 */
-	protected abstract ViewerRow internalCreateNewRowPart(int style,
-			int rowIndex);
-
-	/**
-	 * Adds the given element to this table viewer. If this viewer does not have
-	 * a sorter, the element is added at the end; otherwise the element is
-	 * inserted at the appropriate position.
-	 * <p>
-	 * This method should be called (by the content provider) when a single
-	 * element has been added to the model, in order to cause the viewer to
-	 * accurately reflect the model. This method only affects the viewer, not
-	 * the model. Note that there is another method for efficiently processing
-	 * the simultaneous addition of multiple elements.
-	 * </p>
-	 *
-	 * @param element
-	 *            the element to add
-	 */
-	public void add(Object element) {
-		add(new Object[] { element });
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#doFindInputItem(java.lang.Object)
-	 */
-	protected Widget doFindInputItem(Object element) {
-		if (equals(element, getRoot())) {
-			return getControl();
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#doFindItem(java.lang.Object)
-	 */
-	protected Widget doFindItem(Object element) {
-
-		Item[] children = doGetItems();
-		for (int i = 0; i < children.length; i++) {
-			Item item = children[i];
-			Object data = item.getData();
-			if (data != null && equals(data, element)) {
-				return item;
-			}
-		}
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#doUpdateItem(org.eclipse.swt.widgets.Widget,
-	 *      java.lang.Object, boolean)
-	 */
-	protected void doUpdateItem(Widget widget, Object element, boolean fullMap) {
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			if (widget instanceof Item) {
-				final Item item = (Item) widget;
-
-				// remember element we are showing
-				if (fullMap) {
-					associate(element, item);
-				} else {
-					Object data = item.getData();
-					if (data != null) {
-						unmapElement(data, item);
-					}
-					item.setData(element);
-					mapElement(element, item);
-				}
-
-				int columnCount = doGetColumnCount();
-				if (columnCount == 0)
-					columnCount = 1;// If there are no columns do the first one
-
-				ViewerRow viewerRowFromItem = getViewerRowFromItem(item);
-
-				boolean isVirtual = (getControl().getStyle() & SWT.VIRTUAL) != 0;
-
-				// If the control is virtual, we cannot use the cached viewer row object. See bug 188663.
-				if (isVirtual) {
-					viewerRowFromItem = (ViewerRow) viewerRowFromItem.clone();
-				}
-
-				// Also enter loop if no columns added. See 1G9WWGZ: JFUIF:WINNT -
-				// TableViewer with 0 columns does not work
-				for (int column = 0; column < columnCount || column == 0; column++) {
-					ViewerColumn columnViewer = getViewerColumn(column);
-					ViewerCell cellToUpdate = updateCell(viewerRowFromItem,
-							column, element);
-
-					// If the control is virtual, we cannot use the cached cell object. See bug 188663.
-					if (isVirtual) {
-						cellToUpdate = new ViewerCell(cellToUpdate.getViewerRow(), cellToUpdate.getColumnIndex(), element);
-					}
-
-					columnViewer.refresh(cellToUpdate);
-
-					// clear cell (see bug 201280)
-					updateCell(null, 0, null);
-
-					// As it is possible for user code to run the event
-					// loop check here.
-					if (item.isDisposed()) {
-						unmapElement(element, item);
-						return;
-					}
-
-				}
-
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ColumnViewer#getColumnViewerOwner(int)
-	 */
-	protected Widget getColumnViewerOwner(int columnIndex) {
-		int columnCount = doGetColumnCount();
-
-		if (columnIndex < 0
-				|| (columnIndex > 0 && columnIndex >= columnCount)) {
-			return null;
-		}
-
-		if (columnCount == 0)// Hang it off the table if it
-			return getControl();
-
-		return doGetColumn(columnIndex);
-	}
-
-	/**
-	 * Returns the element with the given index from this table viewer. Returns
-	 * <code>null</code> if the index is out of range.
-	 * <p>
-	 * This method is internal to the framework.
-	 * </p>
-	 *
-	 * @param index
-	 *            the zero-based index
-	 * @return the element at the given index, or <code>null</code> if the
-	 *         index is out of range
-	 */
-	public Object getElementAt(int index) {
-		if (index >= 0 && index < doGetItemCount()) {
-			Item i = doGetItem(index);
-			if (i != null) {
-				return i.getData();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * The table viewer implementation of this <code>Viewer</code> framework
-	 * method returns the label provider, which in the case of table viewers
-	 * will be an instance of either <code>ITableLabelProvider</code> or
-	 * <code>ILabelProvider</code>. If it is an
-	 * <code>ITableLabelProvider</code>, then it provides a separate label
-	 * text and image for each column. If it is an <code>ILabelProvider</code>,
-	 * then it provides only the label text and image for the first column, and
-	 * any remaining columns are blank.
-	 */
-	public IBaseLabelProvider getLabelProvider() {
-		return super.getLabelProvider();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget()
-	 */
-	protected List getSelectionFromWidget() {
-		if (virtualManager != null) {
-			return getVirtualSelection();
-		}
-		Widget[] items = doGetSelection();
-		ArrayList list = new ArrayList(items.length);
-		for (int i = 0; i < items.length; i++) {
-			Widget item = items[i];
-			Object e = item.getData();
-			if (e != null) {
-				list.add(e);
-			}
-		}
-		return list;
-	}
-
-	/**
-	 * Get the virtual selection. Avoid calling SWT whenever possible to prevent
-	 * extra widget creation.
-	 *
-	 * @return List of Object
-	 */
-
-	private List getVirtualSelection() {
-
-		List result = new ArrayList();
-		int[] selectionIndices = doGetSelectionIndices();
-		if (getContentProvider() instanceof ILazyContentProvider) {
-			ILazyContentProvider lazy = (ILazyContentProvider) getContentProvider();
-			for (int i = 0; i < selectionIndices.length; i++) {
-				int selectionIndex = selectionIndices[i];
-				lazy.updateElement(selectionIndex);// Start the update
-				Object element = doGetItem(selectionIndex).getData();
-				// Only add the element if it got updated.
-				// If this is done deferred the selection will
-				// be incomplete until selection is finished.
-				if (element != null) {
-					result.add(element);
-				}
-			}
-		} else {
-			for (int i = 0; i < selectionIndices.length; i++) {
-				Object element = null;
-				// See if it is cached
-				int selectionIndex = selectionIndices[i];
-				if (selectionIndex < virtualManager.cachedElements.length) {
-					element = virtualManager.cachedElements[selectionIndex];
-				}
-				if (element == null) {
-					// Not cached so try the item's data
-					Item item = doGetItem(selectionIndex);
-					element = item.getData();
-				}
-				if (element != null) {
-					result.add(element);
-				}
-			}
-
-		}
-		return result;
-	}
-
-	/**
-	 * @param element
-	 *            the element to insert
-	 * @return the index where the item should be inserted.
-	 */
-	protected int indexForElement(Object element) {
-		ViewerComparator comparator = getComparator();
-		if (comparator == null) {
-			return doGetItemCount();
-		}
-		int count = doGetItemCount();
-		int min = 0, max = count - 1;
-		while (min <= max) {
-			int mid = (min + max) / 2;
-			Object data = doGetItem(mid).getData();
-			int compare = comparator.compare(this, data, element);
-			if (compare == 0) {
-				// find first item > element
-				while (compare == 0) {
-					++mid;
-					if (mid >= count) {
-						break;
-					}
-					data = doGetItem(mid).getData();
-					compare = comparator.compare(this, data, element);
-				}
-				return mid;
-			}
-			if (compare < 0) {
-				min = mid + 1;
-			} else {
-				max = mid - 1;
-			}
-		}
-		return min;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.Viewer#inputChanged(java.lang.Object,
-	 *      java.lang.Object)
-	 */
-	protected void inputChanged(Object input, Object oldInput) {
-		getControl().setRedraw(false);
-		try {
-			preservingSelection(new Runnable() {
-				public void run() {
-					internalRefresh(getRoot());
-				}
-			});
-		} finally {
-			getControl().setRedraw(true);
-		}
-	}
-
-	/**
-	 * Inserts the given element into this table viewer at the given position.
-	 * If this viewer has a sorter, the position is ignored and the element is
-	 * inserted at the correct position in the sort order.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been added to the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param element
-	 *            the element
-	 * @param position
-	 *            a 0-based position relative to the model, or -1 to indicate
-	 *            the last position
-	 */
-	public void insert(Object element, int position) {
-		applyEditorValue();
-		if (getComparator() != null || hasFilters()) {
-			add(element);
-			return;
-		}
-		if (position == -1) {
-			position = doGetItemCount();
-		}
-		if (checkBusy())
-			return;
-		createItem(element, position);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#internalRefresh(java.lang.Object)
-	 */
-	protected void internalRefresh(Object element) {
-		internalRefresh(element, true);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#internalRefresh(java.lang.Object,
-	 *      boolean)
-	 */
-	protected void internalRefresh(Object element, boolean updateLabels) {
-		applyEditorValue();
-		if (element == null || equals(element, getRoot())) {
-			if (virtualManager == null) {
-				internalRefreshAll(updateLabels);
-			} else {
-				internalVirtualRefreshAll();
-			}
-		} else {
-			Widget w = findItem(element);
-			if (w != null) {
-				updateItem(w, element);
-			}
-		}
-	}
-
-	/**
-	 * Refresh all with virtual elements.
-	 *
-	 * @since 3.1
-	 */
-	private void internalVirtualRefreshAll() {
-
-		Object root = getRoot();
-		IContentProvider contentProvider = getContentProvider();
-
-		// Invalidate for lazy
-		if (!(contentProvider instanceof ILazyContentProvider)
-				&& (contentProvider instanceof IStructuredContentProvider)) {
-			// Don't cache if the root is null but cache if it is not lazy.
-			if (root != null) {
-				virtualManager.cachedElements = getSortedChildren(root);
-				doSetItemCount(virtualManager.cachedElements.length);
-			}
-		}
-		doClearAll();
-	}
-
-	/**
-	 * Refresh all of the elements of the table. update the labels if
-	 * updatLabels is true;
-	 *
-	 * @param updateLabels
-	 *
-	 * @since 3.1
-	 */
-	private void internalRefreshAll(boolean updateLabels) {
-		// the parent
-
-		// in the code below, it is important to do all disassociates
-		// before any associates, since a later disassociate can undo an
-		// earlier associate
-		// e.g. if (a, b) is replaced by (b, a), the disassociate of b to
-		// item 1 could undo
-		// the associate of b to item 0.
-
-		Object[] children = getSortedChildren(getRoot());
-		Item[] items = doGetItems();
-		int min = Math.min(children.length, items.length);
-		for (int i = 0; i < min; ++i) {
-
-			Item item = items[i];
-
-			// if the element is unchanged, update its label if appropriate
-			if (equals(children[i], item.getData())) {
-				if (updateLabels) {
-					updateItem(item, children[i]);
-				} else {
-					// associate the new element, even if equal to the old
-					// one,
-					// to remove stale references (see bug 31314)
-					associate(children[i], item);
-				}
-			} else {
-				// updateItem does an associate(...), which can mess up
-				// the associations if the order of elements has changed.
-				// E.g. (a, b) -> (b, a) first replaces a->0 with b->0, then
-				// replaces b->1 with a->1, but this actually removes b->0.
-				// So, if the object associated with this item has changed,
-				// just disassociate it for now, and update it below.
-				// we also need to reset the item (set its text,images etc. to
-				// default values) because the label decorators rely on this
-				disassociate(item);
-				doClear(i);
-			}
-		}
-		// dispose of all items beyond the end of the current elements
-		if (min < items.length) {
-			for (int i = items.length; --i >= min;) {
-
-				disassociate(items[i]);
-			}
-			if (virtualManager != null) {
-				virtualManager.removeIndicesFromTo(min, items.length - 1);
-			}
-			doRemove(min, items.length - 1);
-		}
-		// Workaround for 1GDGN4Q: ITPUI:WIN2000 - TableViewer icons get
-		// scrunched
-		if (doGetItemCount() == 0) {
-			doRemoveAll();
-		}
-		// Update items which were disassociated above
-		for (int i = 0; i < min; ++i) {
-
-			Item item = items[i];
-			if (item.getData() == null) {
-				updateItem(item, children[i]);
-			}
-		}
-		// add any remaining elements
-		for (int i = min; i < children.length; ++i) {
-			createItem(children[i], i);
-		}
-	}
-
-	/**
-	 * Removes the given elements from this table viewer.
-	 *
-	 * @param elements
-	 *            the elements to remove
-	 */
-	private void internalRemove(final Object[] elements) {
-		Object input = getInput();
-		for (int i = 0; i < elements.length; ++i) {
-			if (equals(elements[i], input)) {
-				boolean oldBusy = isBusy();
-				setBusy(false);
-				try {
-					setInput(null);
-				} finally {
-					setBusy(oldBusy);
-				}
-				return;
-			}
-		}
-		// use remove(int[]) rather than repeated TableItem.dispose() calls
-		// to allow SWT to optimize multiple removals
-		int[] indices = new int[elements.length];
-		int count = 0;
-		for (int i = 0; i < elements.length; ++i) {
-			Widget w = findItem(elements[i]);
-			if (w == null && virtualManager != null) {
-				int index = virtualManager.find(elements[i]);
-				if (index != -1) {
-					indices[count++] = index;
-				}
-			} else if (w instanceof Item) {
-				Item item = (Item) w;
-				disassociate(item);
-				indices[count++] = doIndexOf(item);
-			}
-		}
-		if (count < indices.length) {
-			System.arraycopy(indices, 0, indices = new int[count], 0, count);
-		}
-		if (virtualManager != null) {
-			virtualManager.removeIndices(indices);
-		}
-		doRemove(indices);
-
-		// Workaround for 1GDGN4Q: ITPUI:WIN2000 - TableViewer icons get
-		// scrunched
-		if (doGetItemCount() == 0) {
-			doRemoveAll();
-		}
-	}
-
-	/**
-	 * Removes the given elements from this table viewer. The selection is
-	 * updated if required.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been removed from the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param elements
-	 *            the elements to remove
-	 */
-	public void remove(final Object[] elements) {
-		assertElementsNotNull(elements);
-		if (checkBusy())
-			return;
-		if (elements.length == 0) {
-			return;
-		}
-		preservingSelection(new Runnable() {
-			public void run() {
-				internalRemove(elements);
-			}
-		});
-	}
-
-	/**
-	 * Removes the given element from this table viewer. The selection is
-	 * updated if necessary.
-	 * <p>
-	 * This method should be called (by the content provider) when a single
-	 * element has been removed from the model, in order to cause the viewer to
-	 * accurately reflect the model. This method only affects the viewer, not
-	 * the model. Note that there is another method for efficiently processing
-	 * the simultaneous removal of multiple elements.
-	 * </p>
-	 * <strong>NOTE:</strong> removing an object from a virtual table will
-	 * decrement the itemCount.
-	 *
-	 * @param element
-	 *            the element
-	 */
-	public void remove(Object element) {
-		remove(new Object[] { element });
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#reveal(java.lang.Object)
-	 */
-	public void reveal(Object element) {
-		Assert.isNotNull(element);
-		Widget w = findItem(element);
-		if (w instanceof Item) {
-			doShowItem((Item) w);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#setSelectionToWidget(java.util.List,
-	 *      boolean)
-	 */
-	protected void setSelectionToWidget(List list, boolean reveal) {
-		if (list == null) {
-			doDeselectAll();
-			return;
-		}
-
-		if (virtualManager != null) {
-			virtualSetSelectionToWidget(list, reveal);
-			return;
-		}
-
-		// This is vital to use doSetSelection because on SWT-Table on Win32 this will also
-		// move the focus to this row (See bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=198665)
-		if (reveal) {
-			int size = list.size();
-			Item[] items = new Item[size];
-			int count = 0;
-			for (int i = 0; i < size; ++i) {
-				Object o = list.get(i);
-				Widget w = findItem(o);
-				if (w instanceof Item) {
-					Item item = (Item) w;
-					items[count++] = item;
-				}
-			}
-			if (count < size) {
-				System.arraycopy(items, 0, items = new Item[count], 0, count);
-			}
-			doSetSelection(items);
-		} else {
-			doDeselectAll(); // Clear the selection
-			if( ! list.isEmpty() ) {
-				int[] indices = new int[list.size()];
-
-				Iterator it = list.iterator();
-				Item[] items = doGetItems();
-				Object modelElement;
-
-				int count = 0;
-				while( it.hasNext() ) {
-					modelElement = it.next();
-					boolean found = false;
-					for (int i = 0; i < items.length && !found; i++) {
-						if (equals(modelElement, items[i].getData())) {
-							indices[count++] = i;
-							found = true;
-						}
-					}
-				}
-
-				if (count < indices.length) {
-					System.arraycopy(indices, 0, indices = new int[count], 0, count);
-				}
-
-				doSelect(indices);
-			}
-		}
-	}
-
-	/**
-	 * Set the selection on a virtual table
-	 *
-	 * @param list
-	 *            The elements to set
-	 * @param reveal
-	 *            Whether or not reveal the first item.
-	 */
-	private void virtualSetSelectionToWidget(List list, boolean reveal) {
-		int size = list.size();
-		int[] indices = new int[list.size()];
-
-		Item firstItem = null;
-		int count = 0;
-		HashSet virtualElements = new HashSet();
-		for (int i = 0; i < size; ++i) {
-			Object o = list.get(i);
-			Widget w = findItem(o);
-			if (w instanceof Item) {
-				Item item = (Item) w;
-				indices[count++] = doIndexOf(item);
-				if (firstItem == null) {
-					firstItem = item;
-				}
-			} else {
-				virtualElements.add(o);
-			}
-		}
-
-		if (getContentProvider() instanceof ILazyContentProvider) {
-			ILazyContentProvider provider = (ILazyContentProvider) getContentProvider();
-
-			// Now go through it again until all is done or we are no longer
-			// virtual
-			// This may create all items so it is not a good
-			// idea in general.
-			// Use #setSelection (int [] indices,boolean reveal) instead
-			for (int i = 0; virtualElements.size() > 0 && i < doGetItemCount(); i++) {
-				provider.updateElement(i);
-				Item item = doGetItem(i);
-				if (virtualElements.contains(item.getData())) {
-					indices[count++] = i;
-					virtualElements.remove(item.getData());
-					if (firstItem == null) {
-						firstItem = item;
-					}
-				}
-			}
-		} else {
-
-			if (count != list.size()) {// As this is expensive skip it if all
-				// have been found
-				// If it is not lazy we can use the cache
-				for (int i = 0; i < virtualManager.cachedElements.length; i++) {
-					Object element = virtualManager.cachedElements[i];
-					if (virtualElements.contains(element)) {
-						Item item = doGetItem(i);
-						item.getText();// Be sure to fire the update
-						indices[count++] = i;
-						virtualElements.remove(element);
-						if (firstItem == null) {
-							firstItem = item;
-						}
-					}
-				}
-			}
-		}
-
-		if (count < size) {
-			System.arraycopy(indices, 0, indices = new int[count], 0, count);
-		}
-		doDeselectAll();
-		doSelect(indices);
-
-		if (reveal && firstItem != null) {
-			doShowItem(firstItem);
-		}
-	}
-
-	/**
-	 * Set the item count of the receiver.
-	 *
-	 * @param count
-	 *            the new table size.
-	 *
-	 * @since 3.1
-	 */
-	public void setItemCount(int count) {
-		if (checkBusy())
-			return;
-		int oldCount = doGetItemCount();
-		if (count < oldCount) {
-			// need to disassociate elements that are being disposed
-			for (int i = count; i < oldCount; i++) {
-				Item item = doGetItem(i);
-				if (item.getData() != null) {
-					disassociate(item);
-				}
-			}
-		}
-		doSetItemCount(count);
-		if (virtualManager != null) {
-			virtualManager.adjustCacheSize(count);
-		}
-		getControl().redraw();
-	}
-
-	/**
-	 * Replace the element at the given index with the given element. This
-	 * method will not call the content provider to verify. <strong>Note that
-	 * this method will materialize a TableItem the given index.</strong>.
-	 * 
-	 * @param element
-	 * @param index
-	 * @see ILazyContentProvider
-	 * 
-	 * @since 3.1
-	 */
-	public void replace(Object element, int index) {
-		if (checkBusy())
-			return;
-		Item item = doGetItem(index);
-		refreshItem(item, element);
-	}
-
-	/**
-	 * Clear the table item at the specified index
-	 *
-	 * @param index
-	 *            the index of the table item to be cleared
-	 *
-	 * @since 3.1
-	 */
-	public void clear(int index) {
-		Item item = doGetItem(index);
-		if (item.getData() != null) {
-			disassociate(item);
-		}
-		doClear(index);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getRawChildren(java.lang.Object)
-	 */
-	protected Object[] getRawChildren(Object parent) {
-
-		Assert.isTrue(!(getContentProvider() instanceof ILazyContentProvider),
-				"Cannot get raw children with an ILazyContentProvider");//$NON-NLS-1$
-		return super.getRawChildren(parent);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#assertContentProviderType(org.eclipse.jface.viewers.IContentProvider)
-	 */
-	protected void assertContentProviderType(IContentProvider provider) {
-		Assert.isTrue(provider instanceof IStructuredContentProvider
-				|| provider instanceof ILazyContentProvider);
-	}
-
-	/**
-	 * Searches the receiver's list starting at the first item (index 0) until
-	 * an item is found that is equal to the argument, and returns the index of
-	 * that item. If no item is found, returns -1.
-	 *
-	 * @param item
-	 *            the search item
-	 * @return the index of the item
-	 *
-	 * @since 3.3
-	 */
-	protected abstract int doIndexOf(Item item);
-
-	/**
-	 * Returns the number of items contained in the receiver.
-	 *
-	 * @return the number of items
-	 *
-	 * @since 3.3
-	 */
-	protected abstract int doGetItemCount();
-
-	/**
-	 * Sets the number of items contained in the receiver.
-	 *
-	 * @param count
-	 *            the number of items
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doSetItemCount(int count);
-
-	/**
-	 * Returns a (possibly empty) array of TableItems which are the items in the
-	 * receiver.
-	 *
-	 * @return the items in the receiver
-	 *
-	 * @since 3.3
-	 */
-	protected abstract Item[] doGetItems();
-
-	/**
-	 * Returns the column at the given, zero-relative index in the receiver.
-	 * Throws an exception if the index is out of range. Columns are returned in
-	 * the order that they were created. If no TableColumns were created by the
-	 * programmer, this method will throw ERROR_INVALID_RANGE despite the fact
-	 * that a single column of data may be visible in the table. This occurs
-	 * when the programmer uses the table like a list, adding items but never
-	 * creating a column.
-	 *
-	 * @param index
-	 *            the index of the column to return
-	 * @return the column at the given index
-	 * @exception IllegalArgumentException -
-	 *                if the index is not between 0 and the number of elements
-	 *                in the list minus 1 (inclusive)
-	 *
-	 * @since 3.3
-	 */
-	protected abstract Widget doGetColumn(int index);
-
-	/**
-	 * Returns the item at the given, zero-relative index in the receiver.
-	 * Throws an exception if the index is out of range.
-	 *
-	 * @param index
-	 *            the index of the item to return
-	 * @return the item at the given index
-	 * @exception IllegalArgumentException -
-	 *                if the index is not between 0 and the number of elements
-	 *                in the list minus 1 (inclusive)
-	 *
-	 * @since 3.3
-	 */
-	protected abstract Item doGetItem(int index);
-
-	/**
-	 * Returns an array of {@link Item} that are currently selected in the
-	 * receiver. The order of the items is unspecified. An empty array indicates
-	 * that no items are selected.
-	 *
-	 * @return an array representing the selection
-	 *
-	 * @since 3.3
-	 */
-	protected abstract Item[] doGetSelection();
-
-	/**
-	 * Returns the zero-relative indices of the items which are currently
-	 * selected in the receiver. The order of the indices is unspecified. The
-	 * array is empty if no items are selected.
-	 *
-	 * @return an array representing the selection
-	 *
-	 * @since 3.3
-	 */
-	protected abstract int[] doGetSelectionIndices();
-
-	/**
-	 * Clears all the items in the receiver. The text, icon and other attributes
-	 * of the items are set to their default values. If the table was created
-	 * with the <code>SWT.VIRTUAL</code> style, these attributes are requested
-	 * again as needed.
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doClearAll();
-
-	/**
-	 * Resets the given item in the receiver. The text, icon and other attributes
-	 * of the item are set to their default values.
-	 *
-	 * @param item the item to reset
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doResetItem(Item item);
-
-	/**
-	 * Removes the items from the receiver which are between the given
-	 * zero-relative start and end indices (inclusive).
-	 *
-	 * @param start
-	 *            the start of the range
-	 * @param end
-	 *            the end of the range
-	 *
-	 * @exception IllegalArgumentException -
-	 *                if either the start or end are not between 0 and the
-	 *                number of elements in the list minus 1 (inclusive)
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doRemove(int start, int end);
-
-	/**
-	 * Removes all of the items from the receiver.
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doRemoveAll();
-
-	/**
-	 * Removes the items from the receiver's list at the given zero-relative
-	 * indices.
-	 *
-	 * @param indices
-	 *            the array of indices of the items
-	 *
-	 * @exception IllegalArgumentException -
-	 *                if the array is null, or if any of the indices is not
-	 *                between 0 and the number of elements in the list minus 1
-	 *                (inclusive)
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doRemove(int[] indices);
-
-	/**
-	 * Shows the item. If the item is already showing in the receiver, this
-	 * method simply returns. Otherwise, the items are scrolled until the item
-	 * is visible.
-	 *
-	 * @param item
-	 *            the item to be shown
-	 *
-	 * @exception IllegalArgumentException -
-	 *                if the item is null
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doShowItem(Item item);
-
-	/**
-	 * Deselects all selected items in the receiver.
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doDeselectAll();
-
-	/**
-	 * Sets the receiver's selection to be the given array of items. The current
-	 * selection is cleared before the new items are selected.
-	 * <p>
-	 * Items that are not in the receiver are ignored. If the receiver is
-	 * single-select and multiple items are specified, then all items are
-	 * ignored.
-	 * </p>
-	 *
-	 * @param items
-	 *            the array of items
-	 *
-	 * @exception IllegalArgumentException -
-	 *                if the array of items is null
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doSetSelection(Item[] items);
-
-	/**
-	 * Shows the selection. If the selection is already showing in the receiver,
-	 * this method simply returns. Otherwise, the items are scrolled until the
-	 * selection is visible.
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doShowSelection();
-
-	/**
-	 * Selects the items at the given zero-relative indices in the receiver. The
-	 * current selection is cleared before the new items are selected.
-	 * <p>
-	 * Indices that are out of range and duplicate indices are ignored. If the
-	 * receiver is single-select and multiple indices are specified, then all
-	 * indices are ignored.
-	 * </p>
-	 *
-	 * @param indices
-	 *            the indices of the items to select
-	 *
-	 * @exception IllegalArgumentException -
-	 *                if the array of indices is null
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doSetSelection(int[] indices);
-
-	/**
-	 * Clears the item at the given zero-relative index in the receiver. The
-	 * text, icon and other attributes of the item are set to the default value.
-	 * If the table was created with the <code>SWT.VIRTUAL</code> style, these
-	 * attributes are requested again as needed.
-	 *
-	 * @param index
-	 *            the index of the item to clear
-	 *
-	 * @exception IllegalArgumentException -
-	 *                if the index is not between 0 and the number of elements
-	 *                in the list minus 1 (inclusive)
-	 *
-	 * @see SWT#VIRTUAL
-	 * @see SWT#SetData
-	 *
-	 * @since 3.3
-	 */
-	protected abstract void doClear(int index);
-
-
-
-	/**
-	 * Selects the items at the given zero-relative indices in the receiver.
-	 * The current selection is not cleared before the new items are selected.
-	 * <p>
-	 * If the item at a given index is not selected, it is selected.
-	 * If the item at a given index was already selected, it remains selected.
-	 * Indices that are out of range and duplicate indices are ignored.
-	 * If the receiver is single-select and multiple indices are specified,
-	 * then all indices are ignored.
-	 * </p>
-	 *
-	 * @param indices the array of indices for the items to select
-	 *
-	 * @exception IllegalArgumentException - if the array of indices is null
-	 *
-	 */
-	protected abstract void doSelect(int[] indices);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
deleted file mode 100644
index bdca9c4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
+++ /dev/null
@@ -1,3065 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - bug 153993, bug 167323, bug 175192
- *     Lasse Knudsen, bug 205700
- *     Micah Hainline, bug 210448
- *     Michael Schneider, bug 210747
- *     Bruce Sutton, bug 221768
- *     Matthew Hall, bug 221988
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.events.TreeEvent;
-import org.eclipse.swt.events.TreeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Abstract base implementation for tree-structure-oriented viewers (trees and
- * table trees).
- * <p>
- * Nodes in the tree can be in either an expanded or a collapsed state,
- * depending on whether the children on a node are visible. This class
- * introduces public methods for controlling the expanding and collapsing of
- * nodes.
- * </p>
- * <p>
- * As of 3.2, AbstractTreeViewer supports multiple equal elements (each with a
- * different parent chain) in the tree. This support requires that clients
- * enable the element map by calling <code>setUseHashLookup(true)</code>.
- * </p>
- * <p>
- * Content providers for abstract tree viewers must implement one of the
- * interfaces <code>ITreeContentProvider</code> or (as of 3.2, to support
- * multiple equal elements) <code>ITreePathContentProvider</code>.
- * </p>
- *
- * @see TreeViewer
- */
-public abstract class AbstractTreeViewer extends ColumnViewer {
-
-	/**
-	 * Constant indicating that all levels of the tree should be expanded or
-	 * collapsed.
-	 *
-	 * @see #expandToLevel(int)
-	 * @see #collapseToLevel(Object, int)
-	 */
-	public static final int ALL_LEVELS = -1;
-
-	/**
-	 * List of registered tree listeners (element type:
-	 * <code>TreeListener</code>).
-	 */
-	private ListenerList treeListeners = new ListenerList();
-
-	/**
-	 * The level to which the tree is automatically expanded each time the
-	 * viewer's input is changed (that is, by <code>setInput</code>). A value
-	 * of 0 means that auto-expand is off.
-	 *
-	 * @see #setAutoExpandLevel
-	 */
-	private int expandToLevel = 0;
-
-	/**
-	 * Safe runnable used to update an item.
-	 */
-	class UpdateItemSafeRunnable extends SafeRunnable {
-		private Object element;
-
-		private Item item;
-
-		UpdateItemSafeRunnable(Item item, Object element) {
-			this.item = item;
-			this.element = element;
-		}
-
-		public void run() {
-			doUpdateItem(item, element);
-		}
-
-	}
-
-	/**
-	 * Creates an abstract tree viewer. The viewer has no input, no content
-	 * provider, a default label provider, no sorter, no filters, and has
-	 * auto-expand turned off.
-	 */
-	protected AbstractTreeViewer() {
-		// do nothing
-	}
-
-	/**
-	 * Adds the given child elements to this viewer as children of the given
-	 * parent element. If this viewer does not have a sorter, the elements are
-	 * added at the end of the parent's list of children in the order given;
-	 * otherwise, the elements are inserted at the appropriate positions.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been added to the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param parentElementOrTreePath
-	 *            the parent element
-	 * @param childElements
-	 *            the child elements to add
-	 */
-	public void add(Object parentElementOrTreePath, Object[] childElements) {
-		Assert.isNotNull(parentElementOrTreePath);
-		assertElementsNotNull(childElements);
-		if (checkBusy())
-			return;
-		Widget[] widgets = internalFindItems(parentElementOrTreePath);
-		// If parent hasn't been realized yet, just ignore the add.
-		if (widgets.length == 0) {
-			return;
-		}
-
-		for (int i = 0; i < widgets.length; i++) {
-			internalAdd(widgets[i], parentElementOrTreePath, childElements);
-		}
-	}
-
-	/**
-	 * Find the items for the given element of tree path
-	 *
-	 * @param parentElementOrTreePath
-	 *            the element or tree path
-	 * @return the items for that element
-	 *
-	 * @since 3.3
-	 */
-	final protected Widget[] internalFindItems(Object parentElementOrTreePath) {
-		Widget[] widgets;
-		if (parentElementOrTreePath instanceof TreePath) {
-			TreePath path = (TreePath) parentElementOrTreePath;
-			Widget w = internalFindItem(path);
-			if (w == null) {
-				widgets = new Widget[] {};
-			} else {
-				widgets = new Widget[] { w };
-			}
-		} else {
-			widgets = findItems(parentElementOrTreePath);
-		}
-		return widgets;
-	}
-
-	/**
-	 * Return the item at the given path or <code>null</code>
-	 *
-	 * @param path
-	 *            the path
-	 * @return {@link Widget} the item at that path
-	 */
-	private Widget internalFindItem(TreePath path) {
-		Widget[] widgets = findItems(path.getLastSegment());
-		for (int i = 0; i < widgets.length; i++) {
-			Widget widget = widgets[i];
-			if (widget instanceof Item) {
-				Item item = (Item) widget;
-				TreePath p = getTreePathFromItem(item);
-				if (p.equals(path)) {
-					return widget;
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Adds the given child elements to this viewer as children of the given
-	 * parent element.
-	 * <p>
-	 * EXPERIMENTAL. Not to be used except by JDT. This method was added to
-	 * support JDT's explorations into grouping by working sets, which requires
-	 * viewers to support multiple equal elements. See bug 76482 for more
-	 * details. This support will likely be removed in Eclipse 3.2 in favor of
-	 * proper support for multiple equal elements.
-	 * </p>
-	 *
-	 * @param widget
-	 *            the widget for the parent element
-	 * @param parentElementOrTreePath
-	 *            the parent element
-	 * @param childElements
-	 *            the child elements to add
-	 * @since 3.1
-	 */
-	protected void internalAdd(Widget widget, Object parentElementOrTreePath,
-			Object[] childElements) {
-		Object parent;
-		TreePath path;
-		if (parentElementOrTreePath instanceof TreePath) {
-			path = (TreePath) parentElementOrTreePath;
-			parent = path.getLastSegment();
-		} else {
-			parent = parentElementOrTreePath;
-			path = null;
-		}
-
-		// optimization!
-		// if the widget is not expanded we just invalidate the subtree
-		if (widget instanceof Item) {
-			Item ti = (Item) widget;
-			if (!getExpanded(ti)) {
-				boolean needDummy = isExpandable(ti, path, parent);
-				boolean haveDummy = false;
-				// remove all children
-				Item[] items = getItems(ti);
-				for (int i = 0; i < items.length; i++) {
-					if (items[i].getData() != null) {
-						disassociate(items[i]);
-						items[i].dispose();
-					} else {
-						if (needDummy && !haveDummy) {
-							haveDummy = true;
-						} else {
-							items[i].dispose();
-						}
-					}
-				}
-				// append a dummy if necessary
-				if (needDummy && !haveDummy) {
-					newItem(ti, SWT.NULL, -1);
-				}
-				return;
-			}
-		}
-
-		if (childElements.length > 0) {
-			// TODO: Add filtering back?
-			Object[] filtered = filter(parentElementOrTreePath, childElements);
-			ViewerComparator comparator = getComparator();
-			if (comparator != null) {
-				if (comparator instanceof TreePathViewerSorter) {
-					TreePathViewerSorter tpvs = (TreePathViewerSorter) comparator;
-					if (path == null) {
-						path = internalGetSorterParentPath(widget, comparator);
-					}
-					tpvs.sort(this, path, filtered);
-				} else {
-					comparator.sort(this, filtered);
-				}
-			}
-			createAddedElements(widget, filtered);
-		}
-	}
-
-	/**
-	 * Filter the children elements.
-	 *
-	 * @param parentElementOrTreePath
-	 *            the parent element or path
-	 * @param elements
-	 *            the child elements
-	 * @return the filter list of children
-	 */
-	private Object[] filter(Object parentElementOrTreePath, Object[] elements) {
-		ViewerFilter[] filters = getFilters();
-		if (filters != null) {
-			ArrayList filtered = new ArrayList(elements.length);
-			for (int i = 0; i < elements.length; i++) {
-				boolean add = true;
-				for (int j = 0; j < filters.length; j++) {
-					add = filters[j].select(this, parentElementOrTreePath,
-							elements[i]);
-					if (!add) {
-						break;
-					}
-				}
-				if (add) {
-					filtered.add(elements[i]);
-				}
-			}
-			return filtered.toArray();
-		}
-		return elements;
-	}
-
-	/**
-	 * Create the new elements in the parent widget. If the child already exists
-	 * do nothing.
-	 *
-	 * @param widget
-	 * @param elements
-	 *            Sorted list of elements to add.
-	 */
-	private void createAddedElements(Widget widget, Object[] elements) {
-
-		if (elements.length == 1) {
-			if (equals(elements[0], widget.getData())) {
-				return;
-			}
-		}
-
-		ViewerComparator comparator = getComparator();
-		TreePath parentPath = internalGetSorterParentPath(widget, comparator);
-		Item[] items = getChildren(widget);
-
-		// Optimize for the empty case
-		if (items.length == 0) {
-			for (int i = 0; i < elements.length; i++) {
-				createTreeItem(widget, elements[i], -1);
-			}
-			return;
-		}
-
-		// Optimize for no comparator
-		if (comparator == null) {
-			for (int i = 0; i < elements.length; i++) {
-				Object element = elements[i];
-				if (itemExists(items, element)) {
-					internalRefresh(element);
-				} else {
-					createTreeItem(widget, element, -1);
-				}
-			}
-			return;
-		}
-		// As the items are sorted already we optimize for a
-		// start position. This is the insertion position relative to the
-		// original item array.
-		int indexInItems = 0;
-		
-		// Count of elements we have added. See bug 205700 for why this is needed.
-		int newItems = 0;
-		
-		elementloop: for (int i = 0; i < elements.length; i++) {
-			Object element = elements[i];
-			// update the index relative to the original item array
-			indexInItems = insertionPosition(items, comparator,
-					indexInItems, element, parentPath);
-			if (indexInItems == items.length) {
-				createTreeItem(widget, element, -1);
-				newItems++;
-			} else {
-				// Search for an item for the element. The comparator might
-				// regard elements as equal when they are not.
-
-				// Use a separate index variable to search within the existing
-				// elements that compare equally, see
-				// TreeViewerTestBug205700.testAddEquallySortedElements.
-				int insertionIndexInItems = indexInItems;
-				while( insertionIndexInItems < items.length
-						&& internalCompare(comparator, parentPath, element,
-								items[insertionIndexInItems].getData()) == 0) {
-					// As we cannot assume the sorter is consistent with
-					// equals() - therefore we can
-					// just check against the item prior to this index (if
-					// any)
-					if (items[insertionIndexInItems].getData().equals(element)) {
-						// Found the item for the element.
-						// Refresh the element in case it has new children.
-						internalRefresh(element);
-						// Do not create a new item - continue with the next element.
-						continue elementloop;
-					}
-					insertionIndexInItems++;
-				}
-				// Did we get to the end?
-				if (insertionIndexInItems == items.length) {
-					createTreeItem(widget, element, -1);
-					newItems++;
-				} else {
-					// InsertionIndexInItems is the index in the original array. We
-					// need to correct by the number of new items we have
-					// created. See bug 205700.
-					createTreeItem(widget, element, insertionIndexInItems + newItems);
-					newItems++;
-				}
-			}
-		}
-	}
-
-	/**
-	 * See if element is the data of one of the elements in items.
-	 *
-	 * @param items
-	 * @param element
-	 * @return <code>true</code> if the element matches.
-	 */
-	private boolean itemExists(Item[] items, Object element) {
-		if (usingElementMap()) {
-			Widget[] existingItems = findItems(element);
-			// optimization for two common cases
-			if (existingItems.length == 0) {
-				return false;
-			} else if (existingItems.length == 1) {
-				if (items.length > 0 && existingItems[0] instanceof Item) {
-					Item existingItem = (Item) existingItems[0];
-					return getParentItem(existingItem) == getParentItem(items[0]);
-				}
-			}
-		}
-		for (int i = 0; i < items.length; i++) {
-			if (items[i].getData().equals(element)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns the index where the item should be inserted. It uses sorter to
-	 * determine the correct position, if sorter is not assigned, returns the
-	 * index of the element after the last.
-	 *
-	 * @param items
-	 *            the items to search
-	 * @param comparator
-	 *            The comparator to use.
-	 * @param lastInsertion
-	 *            the start index to start search for position from this allows
-	 *            optimizing search for multiple elements that are sorted
-	 *            themselves.
-	 * @param element
-	 *            element to find position for.
-	 * @param parentPath
-	 *            the tree path for the element's parent or <code>null</code>
-	 *            if the element is a root element or the sorter is not a
-	 *            {@link TreePathViewerSorter}
-	 * @return the index to use when inserting the element.
-	 *
-	 */
-
-	private int insertionPosition(Item[] items, ViewerComparator comparator,
-			int lastInsertion, Object element, TreePath parentPath) {
-
-		int size = items.length;
-		if (comparator == null) {
-			return size;
-		}
-		int min = lastInsertion, max = size - 1;
-
-		while (min <= max) {
-			int mid = (min + max) / 2;
-			Object data = items[mid].getData();
-			int compare = internalCompare(comparator, parentPath, data, element);
-			if (compare == 0) {
-				return mid;// Return if we already match
-			}
-			if (compare < 0) {
-				min = mid + 1;
-			} else {
-				max = mid - 1;
-			}
-		}
-		return min;
-
-	}
-
-	/**
-	 * Returns the index where the item should be inserted. It uses sorter to
-	 * determine the correct position, if sorter is not assigned, returns the
-	 * index of the element after the last.
-	 *
-	 * @param parent
-	 *            The parent widget
-	 * @param sorter
-	 *            The sorter to use.
-	 * @param startIndex
-	 *            the start index to start search for position from this allows
-	 *            optimizing search for multiple elements that are sorted
-	 *            themselves.
-	 * @param element
-	 *            element to find position for.
-	 * @param currentSize
-	 *            the current size of the collection
-	 * @return the index to use when inserting the element.
-	 *
-	 */
-
-	/**
-	 * Returns the index where the item should be inserted.
-	 *
-	 * @param parent
-	 *            The parent widget the element will be inserted into.
-	 * @param element
-	 *            The element to insert.
-	 * @return the index of the element
-	 */
-	protected int indexForElement(Widget parent, Object element) {
-		ViewerComparator comparator = getComparator();
-		TreePath parentPath = internalGetSorterParentPath(parent, comparator);
-
-		Item[] items = getChildren(parent);
-		int count = items.length;
-
-		if (comparator == null) {
-			return count;
-		}
-		int min = 0, max = count - 1;
-
-		while (min <= max) {
-			int mid = (min + max) / 2;
-			Object data = items[mid].getData();
-			int compare = internalCompare(comparator, parentPath, data, element);
-			if (compare == 0) {
-				// find first item > element
-				while (compare == 0) {
-					++mid;
-					if (mid >= count) {
-						break;
-					}
-					data = items[mid].getData();
-					compare = internalCompare(comparator, parentPath, data,
-							element);
-				}
-				return mid;
-			}
-			if (compare < 0) {
-				min = mid + 1;
-			} else {
-				max = mid - 1;
-			}
-		}
-		return min;
-	}
-
-	/**
-	 * Return the tree path that should be used as the parent path for the given
-	 * widget and sorter. A <code>null</code> is returned if either the sorter
-	 * is not a {@link TreePathViewerSorter} or if the parent widget is not an
-	 * {@link Item} (i.e. is the root of the tree).
-	 *
-	 * @param parent
-	 *            the parent widget
-	 * @param comparator
-	 *            the sorter
-	 * @return the tree path that should be used as the parent path for the
-	 *         given widget and sorter
-	 */
-	private TreePath internalGetSorterParentPath(Widget parent,
-			ViewerComparator comparator) {
-		TreePath path;
-		if (comparator instanceof TreePathViewerSorter
-				&& parent instanceof Item) {
-			Item item = (Item) parent;
-			path = getTreePathFromItem(item);
-		} else {
-			path = null;
-		}
-		return path;
-	}
-
-	/**
-	 * Compare the two elements using the given sorter. If the sorter is a
-	 * {@link TreePathViewerSorter}, the provided tree path will be used. If
-	 * the tree path is null and the sorter is a tree path sorter, then the
-	 * elements are root elements
-	 *
-	 * @param comparator
-	 *            the sorter
-	 * @param parentPath
-	 *            the path of the elements' parent
-	 * @param e1
-	 *            the first element
-	 * @param e2
-	 *            the second element
-	 * @return the result of comparing the two elements
-	 */
-	private int internalCompare(ViewerComparator comparator,
-			TreePath parentPath, Object e1, Object e2) {
-		if (comparator instanceof TreePathViewerSorter) {
-			TreePathViewerSorter tpvs = (TreePathViewerSorter) comparator;
-			return tpvs.compare(this, parentPath, e1, e2);
-		}
-		return comparator.compare(this, e1, e2);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getSortedChildren(java.lang.Object)
-	 */
-	protected Object[] getSortedChildren(Object parentElementOrTreePath) {
-		Object[] result = getFilteredChildren(parentElementOrTreePath);
-		ViewerComparator comparator = getComparator();
-		if (parentElementOrTreePath != null
-				&& comparator instanceof TreePathViewerSorter) {
-			TreePathViewerSorter tpvs = (TreePathViewerSorter) comparator;
-
-			// be sure we're not modifying the original array from the model
-			result = (Object[]) result.clone();
-
-			TreePath path = null;
-			if (parentElementOrTreePath instanceof TreePath) {
-				path = (TreePath) parentElementOrTreePath;
-			} else {
-				Object parent = parentElementOrTreePath;
-				Widget w = internalGetWidgetToSelect(parent);
-				if (w != null) {
-					path = internalGetSorterParentPath(w, comparator);
-				}
-			}
-			tpvs.sort(this, path, result);
-		} else if (comparator != null) {
-			// be sure we're not modifying the original array from the model
-			result = (Object[]) result.clone();
-			comparator.sort(this, result);
-		}
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getFilteredChildren(java.lang.Object)
-	 */
-	protected Object[] getFilteredChildren(Object parentElementOrTreePath) {
-		Object[] result = getRawChildren(parentElementOrTreePath);
-		ViewerFilter[] filters = getFilters();
-		for (int i = 0; i < filters.length; i++) {
-			ViewerFilter filter = filters[i];
-			result = filter.filter(this, parentElementOrTreePath, result);
-		}
-		return result;
-	}
-
-	/**
-	 * Adds the given child element to this viewer as a child of the given
-	 * parent element. If this viewer does not have a sorter, the element is
-	 * added at the end of the parent's list of children; otherwise, the element
-	 * is inserted at the appropriate position.
-	 * <p>
-	 * This method should be called (by the content provider) when a single
-	 * element has been added to the model, in order to cause the viewer to
-	 * accurately reflect the model. This method only affects the viewer, not
-	 * the model. Note that there is another method for efficiently processing
-	 * the simultaneous addition of multiple elements.
-	 * </p>
-	 *
-	 * @param parentElementOrTreePath
-	 *            the parent element or path
-	 * @param childElement
-	 *            the child element
-	 */
-	public void add(Object parentElementOrTreePath, Object childElement) {
-		add(parentElementOrTreePath, new Object[] { childElement });
-	}
-
-	/**
-	 * Adds the given SWT selection listener to the given SWT control.
-	 *
-	 * @param control
-	 *            the SWT control
-	 * @param listener
-	 *            the SWT selection listener
-	 * @deprecated
-	 */
-	protected void addSelectionListener(Control control,
-			SelectionListener listener) {
-		// do nothing
-	}
-
-	/**
-	 * Adds a listener for expand and collapse events in this viewer. Has no
-	 * effect if an identical listener is already registered.
-	 *
-	 * @param listener
-	 *            a tree viewer listener
-	 */
-	public void addTreeListener(ITreeViewerListener listener) {
-		treeListeners.add(listener);
-	}
-
-	/**
-	 * Adds the given SWT tree listener to the given SWT control.
-	 *
-	 * @param control
-	 *            the SWT control
-	 * @param listener
-	 *            the SWT tree listener
-	 */
-	protected abstract void addTreeListener(Control control,
-			TreeListener listener);
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see StructuredViewer#associate(Object, Item)
-	 */
-	protected void associate(Object element, Item item) {
-		Object data = item.getData();
-		if (data != null && data != element && equals(data, element)) {
-			// workaround for PR 1FV62BT
-			// assumption: elements are equal but not identical
-			// -> remove from map but don't touch children
-			unmapElement(data, item);
-			item.setData(element);
-			mapElement(element, item);
-		} else {
-			// recursively disassociate all
-			super.associate(element, item);
-		}
-	}
-
-	/**
-	 * Collapses all nodes of the viewer's tree, starting with the root. This
-	 * method is equivalent to <code>collapseToLevel(ALL_LEVELS)</code>.
-	 */
-	public void collapseAll() {
-		Object root = getRoot();
-		if (root != null) {
-			collapseToLevel(root, ALL_LEVELS);
-		}
-	}
-
-	/**
-	 * Collapses the subtree rooted at the given element or tree path to the
-	 * given level.
-	 *
-	 * @param elementOrTreePath
-	 *            the element or tree path
-	 * @param level
-	 *            non-negative level, or <code>ALL_LEVELS</code> to collapse
-	 *            all levels of the tree
-	 */
-	public void collapseToLevel(Object elementOrTreePath, int level) {
-		Assert.isNotNull(elementOrTreePath);
-		Widget w = internalGetWidgetToSelect(elementOrTreePath);
-		if (w != null) {
-			internalCollapseToLevel(w, level);
-		}
-	}
-
-	/**
-	 * Creates all children for the given widget.
-	 * <p>
-	 * The default implementation of this framework method assumes that
-	 * <code>widget.getData()</code> returns the element corresponding to the
-	 * node. Note: the node is not visually expanded! You may have to call
-	 * <code>parent.setExpanded(true)</code>.
-	 * </p>
-	 *
-	 * @param widget
-	 *            the widget
-	 */
-	protected void createChildren(final Widget widget) {
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			final Item[] tis = getChildren(widget);
-			if (tis != null && tis.length > 0) {
-				Object data = tis[0].getData();
-				if (data != null) {
-					return; // children already there!
-				}
-			}
-
-			BusyIndicator.showWhile(widget.getDisplay(), new Runnable() {
-				public void run() {
-					// fix for PR 1FW89L7:
-					// don't complain and remove all "dummies" ...
-					if (tis != null) {
-						for (int i = 0; i < tis.length; i++) {
-							if (tis[i].getData() != null) {
-								disassociate(tis[i]);
-								Assert.isTrue(tis[i].getData() == null,
-										"Second or later child is non -null");//$NON-NLS-1$
-
-							}
-							tis[i].dispose();
-						}
-					}
-					Object d = widget.getData();
-					if (d != null) {
-						Object parentElement = d;
-						Object[] children;
-						if (isTreePathContentProvider() && widget instanceof Item) {
-							TreePath path = getTreePathFromItem((Item) widget);
-							children = getSortedChildren(path);
-						} else {
-							children = getSortedChildren(parentElement);
-						}
-						for (int i = 0; i < children.length; i++) {
-							createTreeItem(widget, children[i], -1);
-						}
-					}
-				}
-
-			});
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Creates a single item for the given parent and synchronizes it with the
-	 * given element.
-	 *
-	 * @param parent
-	 *            the parent widget
-	 * @param element
-	 *            the element
-	 * @param index
-	 *            if non-negative, indicates the position to insert the item
-	 *            into its parent
-	 */
-	protected void createTreeItem(Widget parent, Object element, int index) {
-		Item item = newItem(parent, SWT.NULL, index);
-		updateItem(item, element);
-		updatePlus(item, element);
-	}
-
-	/**
-	 * The <code>AbstractTreeViewer</code> implementation of this method also
-	 * recurses over children of the corresponding element.
-	 */
-	protected void disassociate(Item item) {
-		super.disassociate(item);
-		// recursively unmapping the items is only required when
-		// the hash map is used. In the other case disposing
-		// an item will recursively dispose its children.
-		if (usingElementMap()) {
-			disassociateChildren(item);
-		}
-	}
-
-	/**
-	 * Disassociates the children of the given SWT item from their corresponding
-	 * elements.
-	 *
-	 * @param item
-	 *            the widget
-	 */
-	private void disassociateChildren(Item item) {
-		Item[] items = getChildren(item);
-		for (int i = 0; i < items.length; i++) {
-			if (items[i].getData() != null) {
-				disassociate(items[i]);
-			}
-		}
-	}
-
-	/* (non-Javadoc) Method declared on StructuredViewer. */
-	protected Widget doFindInputItem(Object element) {
-		// compare with root
-		Object root = getRoot();
-		if (root == null) {
-			return null;
-		}
-
-		if (equals(root, element)) {
-			return getControl();
-		}
-		return null;
-	}
-
-	/* (non-Javadoc) Method declared on StructuredViewer. */
-	protected Widget doFindItem(Object element) {
-		// compare with root
-		Object root = getRoot();
-		if (root == null) {
-			return null;
-		}
-
-		Item[] items = getChildren(getControl());
-		if (items != null) {
-			for (int i = 0; i < items.length; i++) {
-				Widget o = internalFindItem(items[i], element);
-				if (o != null) {
-					return o;
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Copies the attributes of the given element into the given SWT item.
-	 *
-	 * @param item
-	 *            the SWT item
-	 * @param element
-	 *            the element
-	 */
-	protected void doUpdateItem(final Item item, Object element) {
-		if (item.isDisposed()) {
-			unmapElement(element, item);
-			return;
-		}
-
-		int columnCount = doGetColumnCount();
-		if (columnCount == 0)// If no columns are created then fake one
-			columnCount = 1;
-
-		ViewerRow viewerRowFromItem = getViewerRowFromItem(item);
-
-		boolean isVirtual = (getControl().getStyle() & SWT.VIRTUAL) != 0;
-
-		// If the control is virtual, we cannot use the cached viewer row object. See bug 188663.
-		if (isVirtual) {
-			viewerRowFromItem = (ViewerRow) viewerRowFromItem.clone();
-		}
-
-		for (int column = 0; column < columnCount; column++) {
-			ViewerColumn columnViewer = getViewerColumn(column);
-			ViewerCell cellToUpdate = updateCell(viewerRowFromItem, column,
-					element);
-
-			// If the control is virtual, we cannot use the cached cell object. See bug 188663.
-			if (isVirtual) {
-				cellToUpdate = new ViewerCell(cellToUpdate.getViewerRow(), cellToUpdate.getColumnIndex(), element);
-			}
-
-			columnViewer.refresh(cellToUpdate);
-
-			// clear cell (see bug 201280)
-			updateCell(null, 0, null);
-
-			// As it is possible for user code to run the event
-			// loop check here.
-			if (item.isDisposed()) {
-				unmapElement(element, item);
-				return;
-			}
-
-		}
-	}
-
-	/**
-	 * Returns <code>true</code> if the given list and array of items refer to
-	 * the same model elements. Order is unimportant.
-	 * <p>
-	 * This method is not intended to be overridden by subclasses.
-	 * </p>
-	 *
-	 * @param items
-	 *            the list of items
-	 * @param current
-	 *            the array of items
-	 * @return <code>true</code> if the refer to the same elements,
-	 *         <code>false</code> otherwise
-	 *
-	 * @since 3.1 in TreeViewer, moved to AbstractTreeViewer in 3.3
-	 */
-	protected boolean isSameSelection(List items, Item[] current) {
-		// If they are not the same size then they are not equivalent
-		int n = items.size();
-		if (n != current.length) {
-			return false;
-		}
-
-		CustomHashtable itemSet = newHashtable(n * 2 + 1);
-		for (Iterator i = items.iterator(); i.hasNext();) {
-			Item item = (Item) i.next();
-			Object element = item.getData();
-			itemSet.put(element, element);
-		}
-
-		// Go through the items of the current collection
-		// If there is a mismatch return false
-		for (int i = 0; i < current.length; i++) {
-			if (current[i].getData() == null
-					|| !itemSet.containsKey(current[i].getData())) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-
-
-	/* (non-Javadoc) Method declared on StructuredViewer. */
-	protected void doUpdateItem(Widget widget, Object element, boolean fullMap) {
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			if (widget instanceof Item) {
-				Item item = (Item) widget;
-
-				// ensure that back pointer is correct
-				if (fullMap) {
-					associate(element, item);
-				} else {
-					Object data = item.getData();
-					if (data != null) {
-						unmapElement(data, item);
-					}
-					item.setData(element);
-					mapElement(element, item);
-				}
-
-				// update icon and label
-				SafeRunnable.run(new UpdateItemSafeRunnable(item, element));
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Expands all nodes of the viewer's tree, starting with the root. This
-	 * method is equivalent to <code>expandToLevel(ALL_LEVELS)</code>.
-	 */
-	public void expandAll() {
-		expandToLevel(ALL_LEVELS);
-	}
-
-	/**
-	 * Expands the root of the viewer's tree to the given level.
-	 *
-	 * @param level
-	 *            non-negative level, or <code>ALL_LEVELS</code> to expand all
-	 *            levels of the tree
-	 */
-	public void expandToLevel(int level) {
-		expandToLevel(getRoot(), level);
-	}
-
-	/**
-	 * Expands all ancestors of the given element or tree path so that the given
-	 * element becomes visible in this viewer's tree control, and then expands
-	 * the subtree rooted at the given element to the given level.
-	 *
-	 * @param elementOrTreePath
-	 *            the element
-	 * @param level
-	 *            non-negative level, or <code>ALL_LEVELS</code> to expand all
-	 *            levels of the tree
-	 */
-	public void expandToLevel(Object elementOrTreePath, int level) {
-		if (checkBusy())
-			return;
-		Widget w = internalExpand(elementOrTreePath, true);
-		if (w != null) {
-			internalExpandToLevel(w, level);
-		}
-	}
-
-	/**
-	 * Fires a tree collapsed event. Only listeners registered at the time this
-	 * method is called are notified.
-	 *
-	 * @param event
-	 *            the tree expansion event
-	 * @see ITreeViewerListener#treeCollapsed
-	 */
-	protected void fireTreeCollapsed(final TreeExpansionEvent event) {
-		Object[] listeners = treeListeners.getListeners();
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			for (int i = 0; i < listeners.length; ++i) {
-				final ITreeViewerListener l = (ITreeViewerListener) listeners[i];
-				SafeRunnable.run(new SafeRunnable() {
-					public void run() {
-						l.treeCollapsed(event);
-					}
-				});
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Fires a tree expanded event. Only listeners registered at the time this
-	 * method is called are notified.
-	 *
-	 * @param event
-	 *            the tree expansion event
-	 * @see ITreeViewerListener#treeExpanded
-	 */
-	protected void fireTreeExpanded(final TreeExpansionEvent event) {
-		Object[] listeners = treeListeners.getListeners();
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			for (int i = 0; i < listeners.length; ++i) {
-				final ITreeViewerListener l = (ITreeViewerListener) listeners[i];
-				SafeRunnable.run(new SafeRunnable() {
-					public void run() {
-						l.treeExpanded(event);
-					}
-				});
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Returns the auto-expand level.
-	 *
-	 * @return non-negative level, or <code>ALL_LEVELS</code> if all levels of
-	 *         the tree are expanded automatically
-	 * @see #setAutoExpandLevel
-	 */
-	public int getAutoExpandLevel() {
-		return expandToLevel;
-	}
-
-	/**
-	 * Returns the SWT child items for the given SWT widget.
-	 *
-	 * @param widget
-	 *            the widget
-	 * @return the child items
-	 */
-	protected abstract Item[] getChildren(Widget widget);
-
-	/**
-	 * Get the child for the widget at index. Note that the default
-	 * implementation is not very efficient and should be overridden if this
-	 * class is implemented.
-	 *
-	 * @param widget
-	 *            the widget to check
-	 * @param index
-	 *            the index of the widget
-	 * @return Item or <code>null</code> if widget is not a type that can
-	 *         contain items.
-	 *
-	 * @throws ArrayIndexOutOfBoundsException
-	 *             if the index is not valid.
-	 * @since 3.1
-	 */
-	protected Item getChild(Widget widget, int index) {
-		return getChildren(widget)[index];
-	}
-
-	/**
-	 * Returns whether the given SWT item is expanded or collapsed.
-	 *
-	 * @param item
-	 *            the item
-	 * @return <code>true</code> if the item is considered expanded and
-	 *         <code>false</code> if collapsed
-	 */
-	protected abstract boolean getExpanded(Item item);
-
-	/**
-	 * Returns a list of elements corresponding to expanded nodes in this
-	 * viewer's tree, including currently hidden ones that are marked as
-	 * expanded but are under a collapsed ancestor.
-	 * <p>
-	 * This method is typically used when preserving the interesting state of a
-	 * viewer; <code>setExpandedElements</code> is used during the restore.
-	 * </p>
-	 *
-	 * @return the array of expanded elements
-	 * @see #setExpandedElements
-	 */
-	public Object[] getExpandedElements() {
-		ArrayList items = new ArrayList();
-		internalCollectExpandedItems(items, getControl());
-		ArrayList result = new ArrayList(items.size());
-		for (Iterator it = items.iterator(); it.hasNext();) {
-			Item item = (Item) it.next();
-			Object data = item.getData();
-			if (data != null) {
-				result.add(data);
-			}
-		}
-		return result.toArray();
-	}
-
-	/**
-	 * Returns whether the node corresponding to the given element or tree path
-	 * is expanded or collapsed.
-	 *
-	 * @param elementOrTreePath
-	 *            the element
-	 * @return <code>true</code> if the node is expanded, and
-	 *         <code>false</code> if collapsed
-	 */
-	public boolean getExpandedState(Object elementOrTreePath) {
-		Assert.isNotNull(elementOrTreePath);
-		Widget item = internalGetWidgetToSelect(elementOrTreePath);
-		if (item instanceof Item) {
-			return getExpanded((Item) item);
-		}
-		return false;
-	}
-
-	/**
-	 * Returns the number of child items of the given SWT control.
-	 *
-	 * @param control
-	 *            the control
-	 * @return the number of children
-	 */
-	protected abstract int getItemCount(Control control);
-
-	/**
-	 * Returns the number of child items of the given SWT item.
-	 *
-	 * @param item
-	 *            the item
-	 * @return the number of children
-	 */
-	protected abstract int getItemCount(Item item);
-
-	/**
-	 * Returns the child items of the given SWT item.
-	 *
-	 * @param item
-	 *            the item
-	 * @return the child items
-	 */
-	protected abstract Item[] getItems(Item item);
-
-	/**
-	 * Returns the item after the given item in the tree, or <code>null</code>
-	 * if there is no next item.
-	 *
-	 * @param item
-	 *            the item
-	 * @param includeChildren
-	 *            <code>true</code> if the children are considered in
-	 *            determining which item is next, and <code>false</code> if
-	 *            subtrees are ignored
-	 * @return the next item, or <code>null</code> if none
-	 */
-	protected Item getNextItem(Item item, boolean includeChildren) {
-		if (item == null) {
-			return null;
-		}
-		if (includeChildren && getExpanded(item)) {
-			Item[] children = getItems(item);
-			if (children != null && children.length > 0) {
-				return children[0];
-			}
-		}
-
-		// next item is either next sibling or next sibling of first
-		// parent that has a next sibling.
-		Item parent = getParentItem(item);
-		if (parent == null) {
-			return null;
-		}
-		Item[] siblings = getItems(parent);
-		if (siblings != null) {
-			if (siblings.length <= 1) {
-				return getNextItem(parent, false);
-			}
-
-			for (int i = 0; i < siblings.length; i++) {
-				if (siblings[i] == item && i < (siblings.length - 1)) {
-					return siblings[i + 1];
-				}
-			}
-		}
-		return getNextItem(parent, false);
-	}
-
-	/**
-	 * Returns the parent item of the given item in the tree, or
-	 * <code>null</code> if there is no parent item.
-	 *
-	 * @param item
-	 *            the item
-	 * @return the parent item, or <code>null</code> if none
-	 */
-	protected abstract Item getParentItem(Item item);
-
-	/**
-	 * Returns the item before the given item in the tree, or <code>null</code>
-	 * if there is no previous item.
-	 *
-	 * @param item
-	 *            the item
-	 * @return the previous item, or <code>null</code> if none
-	 */
-	protected Item getPreviousItem(Item item) {
-		// previous item is either right-most visible descendent of previous
-		// sibling or parent
-		Item parent = getParentItem(item);
-		if (parent == null) {
-			return null;
-		}
-		Item[] siblings = getItems(parent);
-		if (siblings.length == 0 || siblings[0] == item) {
-			return parent;
-		}
-		Item previous = siblings[0];
-		for (int i = 1; i < siblings.length; i++) {
-			if (siblings[i] == item) {
-				return rightMostVisibleDescendent(previous);
-			}
-			previous = siblings[i];
-		}
-		return null;
-	}
-
-	/* (non-Javadoc) Method declared on StructuredViewer. */
-	protected Object[] getRawChildren(Object parentElementOrTreePath) {
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			Object parent;
-			TreePath path;
-			if (parentElementOrTreePath instanceof TreePath) {
-				path = (TreePath) parentElementOrTreePath;
-				parent = path.getLastSegment();
-			} else {
-				parent = parentElementOrTreePath;
-				path = null;
-			}
-			if (parent != null) {
-				if (equals(parent, getRoot())) {
-					return super.getRawChildren(parent);
-				}
-				IContentProvider cp = getContentProvider();
-				if (cp instanceof ITreePathContentProvider) {
-					ITreePathContentProvider tpcp = (ITreePathContentProvider) cp;
-					if (path == null) {
-						// A path was not provided so try and find one
-						Widget w = findItem(parent);
-						if (w instanceof Item) {
-							Item item = (Item) w;
-							path = getTreePathFromItem(item);
-						}
-						if (path == null) {
-							path = new TreePath(new Object[] { parent });
-						}
-					}
-					Object[] result = tpcp.getChildren(path);
-					if (result != null) {
-						return result;
-					}
-				} else if (cp instanceof ITreeContentProvider) {
-					ITreeContentProvider tcp = (ITreeContentProvider) cp;
-					Object[] result = tcp.getChildren(parent);
-					if (result != null) {
-						return result;
-					}
-				}
-			}
-			return new Object[0];
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Returns all selected items for the given SWT control.
-	 *
-	 * @param control
-	 *            the control
-	 * @return the list of selected items
-	 */
-	protected abstract Item[] getSelection(Control control);
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget()
-	 */
-	protected List getSelectionFromWidget() {
-		Widget[] items = getSelection(getControl());
-		ArrayList list = new ArrayList(items.length);
-		for (int i = 0; i < items.length; i++) {
-			Widget item = items[i];
-			Object e = item.getData();
-			if (e != null) {
-				list.add(e);
-			}
-		}
-		return list;
-	}
-
-	/*
-	 * Overridden in AbstractTreeViewer to fix bug 108102 (code copied from
-	 * StructuredViewer to avoid introducing new API) (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#handleDoubleSelect(org.eclipse.swt.events.SelectionEvent)
-	 */
-	protected void handleDoubleSelect(SelectionEvent event) {
-		// handle case where an earlier selection listener disposed the control.
-		Control control = getControl();
-		if (control != null && !control.isDisposed()) {
-			// If the double-clicked element can be obtained from the event, use
-			// it
-			// otherwise get it from the control. Some controls like List do
-			// not have the notion of item.
-			// For details, see bug 90161 [Navigator] DefaultSelecting folders
-			// shouldn't always expand first one
-			ISelection selection;
-			if (event.item != null && event.item.getData() != null) {
-
-				// changes to fix bug 108102 follow
-				TreePath treePath = getTreePathFromItem((Item) event.item);
-				selection = new TreeSelection(treePath);
-				// end of changes
-
-			} else {
-				selection = getSelection();
-				updateSelection(selection);
-			}
-			fireDoubleClick(new DoubleClickEvent(this, selection));
-		}
-	}
-
-	/**
-	 * Handles a tree collapse event from the SWT widget.
-	 *
-	 * @param event
-	 *            the SWT tree event
-	 */
-	protected void handleTreeCollapse(TreeEvent event) {
-		if (event.item.getData() != null) {
-			fireTreeCollapsed(new TreeExpansionEvent(this, event.item.getData()));
-		}
-	}
-
-	/**
-	 * Handles a tree expand event from the SWT widget.
-	 *
-	 * @param event
-	 *            the SWT tree event
-	 */
-	protected void handleTreeExpand(TreeEvent event) {
-		createChildren(event.item);
-		if (event.item.getData() != null) {
-			fireTreeExpanded(new TreeExpansionEvent(this, event.item.getData()));
-		}
-	}
-
-	/* (non-Javadoc) Method declared on Viewer. */
-	protected void hookControl(Control control) {
-		super.hookControl(control);
-		addTreeListener(control, new TreeListener() {
-			public void treeExpanded(TreeEvent event) {
-				handleTreeExpand(event);
-			}
-
-			public void treeCollapsed(TreeEvent event) {
-				handleTreeCollapse(event);
-			}
-		});
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on StructuredViewer. Builds the initial
-	 * tree and handles the automatic expand feature.
-	 */
-	protected void inputChanged(Object input, Object oldInput) {
-		preservingSelection(new Runnable() {
-			public void run() {
-	            Control tree = getControl();
-	            tree.setRedraw(false);
-	            try {
-	                removeAll(tree);
-	                tree.setData(getRoot());
-	                internalInitializeTree(tree);
-	            } finally {
-	                tree.setRedraw(true);
-	            }
-			}
-		});
-	}
-
-	/**
-	 * Initializes the tree with root items, expanding to the appropriate
-	 * level if necessary.
-	 *
-	 * @param tree the tree control
-	 * @since 3.3
-	 */
-	protected void internalInitializeTree(Control tree) {
-		createChildren(tree);
-		internalExpandToLevel(tree, expandToLevel);
-	}
-
-	/**
-	 * Recursively collapses the subtree rooted at the given widget to the given
-	 * level.
-	 * <p>
-	 * </p>
-	 * Note that the default implementation of this method does not call
-	 * <code>setRedraw</code>.
-	 *
-	 * @param widget
-	 *            the widget
-	 * @param level
-	 *            non-negative level, or <code>ALL_LEVELS</code> to collapse
-	 *            all levels of the tree
-	 */
-	protected void internalCollapseToLevel(Widget widget, int level) {
-		if (level == ALL_LEVELS || level > 0) {
-
-			if (widget instanceof Item) {
-				setExpanded((Item) widget, false);
-			}
-
-			if (level == ALL_LEVELS || level > 1) {
-				Item[] children = getChildren(widget);
-				if (children != null) {
-					int nextLevel = (level == ALL_LEVELS ? ALL_LEVELS
-							: level - 1);
-					for (int i = 0; i < children.length; i++) {
-						internalCollapseToLevel(children[i], nextLevel);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Recursively collects all expanded items from the given widget.
-	 *
-	 * @param result
-	 *            a list (element type: <code>Item</code>) into which to
-	 *            collect the elements
-	 * @param widget
-	 *            the widget
-	 */
-	private void internalCollectExpandedItems(List result, Widget widget) {
-		Item[] items = getChildren(widget);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			if (getExpanded(item)) {
-				result.add(item);
-			}
-			internalCollectExpandedItems(result, item);
-		}
-	}
-
-	/**
-	 * Tries to create a path of tree items for the given element or tree path.
-	 * This method recursively walks up towards the root of the tree and in the
-	 * case of an element (rather than a tree path) assumes that
-	 * <code>getParent</code> returns the correct parent of an element.
-	 *
-	 * @param elementOrPath
-	 *            the element
-	 * @param expand
-	 *            <code>true</code> if all nodes on the path should be
-	 *            expanded, and <code>false</code> otherwise
-	 * @return Widget
-	 */
-	protected Widget internalExpand(Object elementOrPath, boolean expand) {
-
-		if (elementOrPath == null) {
-			return null;
-		}
-
-		Widget w = internalGetWidgetToSelect(elementOrPath);
-		if (w == null) {
-			if (equals(elementOrPath, getRoot())) { // stop at root
-				return null;
-			}
-			// my parent has to create me
-			Object parent = getParentElement(elementOrPath);
-			if (parent != null) {
-				Widget pw = internalExpand(parent, false);
-				if (pw != null) {
-					// let my parent create me
-					createChildren(pw);
-					Object element = internalToElement(elementOrPath);
-					w = internalFindChild(pw, element);
-					if (expand && pw instanceof Item) {
-						// expand parent items top-down
-						Item item = (Item) pw;
-						LinkedList toExpandList = new LinkedList();
-						while (item != null && !getExpanded(item)) {
-							toExpandList.addFirst(item);
-							item = getParentItem(item);
-						}
-						for (Iterator it = toExpandList.iterator(); it
-								.hasNext();) {
-							Item toExpand = (Item) it.next();
-							setExpanded(toExpand, true);
-						}
-					}
-				}
-			}
-		}
-		return w;
-	}
-
-	/**
-	 * If the argument is a tree path, returns its last segment, otherwise
-	 * return the argument
-	 *
-	 * @param elementOrPath
-	 *            an element or a tree path
-	 * @return the element, or the last segment of the tree path
-	 */
-	private Object internalToElement(Object elementOrPath) {
-		if (elementOrPath instanceof TreePath) {
-			return ((TreePath) elementOrPath).getLastSegment();
-		}
-		return elementOrPath;
-	}
-
-	/**
-	 * This method takes a tree path or an element. If the argument is not a
-	 * tree path, returns the parent of the given element or <code>null</code>
-	 * if the parent is not known. If the argument is a tree path with more than
-	 * one segment, returns its parent tree path, otherwise returns
-	 * <code>null</code>.
-	 *
-	 * @param elementOrTreePath
-	 * @return the parent element, or parent path, or <code>null</code>
-	 *
-	 * @since 3.2
-	 */
-	protected Object getParentElement(Object elementOrTreePath) {
-		if (elementOrTreePath instanceof TreePath) {
-			TreePath treePath = (TreePath) elementOrTreePath;
-			return (treePath).getParentPath();
-		}
-		IContentProvider cp = getContentProvider();
-		if (cp instanceof ITreePathContentProvider) {
-			ITreePathContentProvider tpcp = (ITreePathContentProvider) cp;
-			TreePath[] paths = tpcp.getParents(elementOrTreePath);
-			if (paths.length > 0) {
-				if (paths[0].getSegmentCount() == 0) {
-					return getRoot();
-				}
-				return paths[0].getLastSegment();
-			}
-		}
-		if (cp instanceof ITreeContentProvider) {
-			ITreeContentProvider tcp = (ITreeContentProvider) cp;
-			return tcp.getParent(elementOrTreePath);
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the widget to be selected for the given element or tree path.
-	 *
-	 * @param elementOrTreePath
-	 *            the element or tree path to select
-	 * @return the widget to be selected, or <code>null</code> if not found
-	 *
-	 * @since 3.1
-	 */
-	protected Widget internalGetWidgetToSelect(Object elementOrTreePath) {
-		if (elementOrTreePath instanceof TreePath) {
-			TreePath treePath = (TreePath) elementOrTreePath;
-			if (treePath.getSegmentCount() == 0) {
-				return getControl();
-			}
-			Widget[] candidates = findItems(treePath.getLastSegment());
-			for (int i = 0; i < candidates.length; i++) {
-				Widget candidate = candidates[i];
-				if (!(candidate instanceof Item)) {
-					continue;
-				}
-				if (treePath.equals(getTreePathFromItem((Item) candidate),
-						getComparer())) {
-					return candidate;
-				}
-			}
-			return null;
-		}
-		return findItem(elementOrTreePath);
-	}
-
-	/**
-	 * Recursively expands the subtree rooted at the given widget to the given
-	 * level.
-	 * <p>
-	 * </p>
-	 * Note that the default implementation of this method does not call
-	 * <code>setRedraw</code>.
-	 *
-	 * @param widget
-	 *            the widget
-	 * @param level
-	 *            non-negative level, or <code>ALL_LEVELS</code> to collapse
-	 *            all levels of the tree
-	 */
-	protected void internalExpandToLevel(Widget widget, int level) {
-		if (level == ALL_LEVELS || level > 0) {
-			if (widget instanceof Item && widget.getData() != null
-					&& !isExpandable((Item) widget, null, widget.getData())) {
-				return;
-			}
-			createChildren(widget);
-			if (widget instanceof Item) {
-				setExpanded((Item) widget, true);
-			}
-			if (level == ALL_LEVELS || level > 1) {
-				Item[] children = getChildren(widget);
-				if (children != null) {
-					int newLevel = (level == ALL_LEVELS ? ALL_LEVELS
-							: level - 1);
-					for (int i = 0; i < children.length; i++) {
-						internalExpandToLevel(children[i], newLevel);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Non-recursively tries to find the given element as a child of the given
-	 * parent (item or tree).
-	 *
-	 * @param parent
-	 *            the parent item
-	 * @param element
-	 *            the element
-	 * @return Widget
-	 */
-	private Widget internalFindChild(Widget parent, Object element) {
-		Item[] items = getChildren(parent);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			Object data = item.getData();
-			if (data != null && equals(data, element)) {
-				return item;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Recursively tries to find the given element.
-	 *
-	 * @param parent
-	 *            the parent item
-	 * @param element
-	 *            the element
-	 * @return Widget
-	 */
-	private Widget internalFindItem(Item parent, Object element) {
-
-		// compare with node
-		Object data = parent.getData();
-		if (data != null) {
-			if (equals(data, element)) {
-				return parent;
-			}
-		}
-		// recurse over children
-		Item[] items = getChildren(parent);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			Widget o = internalFindItem(item, element);
-			if (o != null) {
-				return o;
-			}
-		}
-		return null;
-	}
-
-	/* (non-Javadoc) Method declared on StructuredViewer. */
-	protected void internalRefresh(Object element) {
-		internalRefresh(element, true);
-	}
-
-	/* (non-Javadoc) Method declared on StructuredViewer. */
-	protected void internalRefresh(Object element, boolean updateLabels) {
-		// If element is null, do a full refresh.
-		if (element == null) {
-			internalRefresh(getControl(), getRoot(), true, updateLabels);
-			return;
-		}
-		Widget[] items = findItems(element);
-		if (items.length != 0) {
-			for (int i = 0; i < items.length; i++) {
-				// pick up structure changes too
-				internalRefresh(items[i], element, true, updateLabels);
-			}
-		}
-	}
-
-	/**
-	 * Refreshes the tree starting at the given widget.
-	 * <p>
-	 * EXPERIMENTAL. Not to be used except by JDT. This method was added to
-	 * support JDT's explorations into grouping by working sets, which requires
-	 * viewers to support multiple equal elements. See bug 76482 for more
-	 * details. This support will likely be removed in Eclipse 3.2 in favor of
-	 * proper support for multiple equal elements.
-	 * </p>
-	 *
-	 * @param widget
-	 *            the widget
-	 * @param element
-	 *            the element
-	 * @param doStruct
-	 *            <code>true</code> if structural changes are to be picked up,
-	 *            and <code>false</code> if only label provider changes are of
-	 *            interest
-	 * @param updateLabels
-	 *            <code>true</code> to update labels for existing elements,
-	 *            <code>false</code> to only update labels as needed, assuming
-	 *            that labels for existing elements are unchanged.
-	 * @since 3.1
-	 */
-	protected void internalRefresh(Widget widget, Object element,
-			boolean doStruct, boolean updateLabels) {
-
-		if (widget instanceof Item) {
-			if (doStruct) {
-				updatePlus((Item) widget, element);
-			}
-			if (updateLabels || !equals(element, widget.getData())) {
-				doUpdateItem(widget, element, true);
-			} else {
-				associate(element, (Item) widget);
-			}
-		}
-
-		if (doStruct) {
-			internalRefreshStruct(widget, element, updateLabels);
-		} else {
-			Item[] children = getChildren(widget);
-			if (children != null) {
-				for (int i = 0; i < children.length; i++) {
-					Widget item = children[i];
-					Object data = item.getData();
-					if (data != null) {
-						internalRefresh(item, data, doStruct, updateLabels);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Update the structure and recurse. Items are updated in updateChildren, as
-	 * needed.
-	 *
-	 * @param widget
-	 * @param element
-	 * @param updateLabels
-	 */
-	/* package */void internalRefreshStruct(Widget widget, Object element,
-			boolean updateLabels) {
-		updateChildren(widget, element, null, updateLabels);
-		Item[] children = getChildren(widget);
-		if (children != null) {
-			for (int i = 0; i < children.length; i++) {
-				Widget item = children[i];
-				Object data = item.getData();
-				if (data != null) {
-					internalRefreshStruct(item, data, updateLabels);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Removes the given elements from this viewer.
-	 * <p>
-	 * EXPERIMENTAL. Not to be used except by JDT. This method was added to
-	 * support JDT's explorations into grouping by working sets, which requires
-	 * viewers to support multiple equal elements. See bug 76482 for more
-	 * details. This support will likely be removed in Eclipse 3.2 in favor of
-	 * proper support for multiple equal elements.
-	 * </p>
-	 *
-	 * @param elementsOrPaths
-	 *            the elements or element paths to remove
-	 * @since 3.1
-	 */
-	protected void internalRemove(Object[] elementsOrPaths) {
-		Object input = getInput();
-		for (int i = 0; i < elementsOrPaths.length; ++i) {
-			Object element = elementsOrPaths[i];
-			if (equals(element, input)) {
-				setInput(null);
-				return;
-			}
-			Widget[] childItems = internalFindItems(element);
-			if (childItems.length > 0) {
-				for (int j = 0; j < childItems.length; j++) {
-					Widget childItem = childItems[j];
-					if (childItem instanceof Item) {
-						disassociate((Item) childItem);
-						childItem.dispose();
-					}
-				}
-			} else {
-				// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=210747
-				Object parent = getParentElement(element);
-				if (parent != null
-						&& !equals(parent, getRoot())
-						&& !(parent instanceof TreePath && ((TreePath) parent)
-								.getSegmentCount() == 0)) {
-					Widget[] parentItems = internalFindItems(parent);
-					for (int j = 0; j < parentItems.length; j++) {
-						Widget parentItem = parentItems[j];
-						if (parentItem instanceof Item) {
-							updatePlus((Item) parentItem, parent);
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Removes the given elements from this viewer, whenever those elements
-	 * appear as children of the given parent.
-	 *
-	 * @param parent the parent element
-	 * @param elements
-	 *            the elements to remove
-	 * @since 3.1
-	 */
-	protected void internalRemove(Object parent, Object[] elements) {
-
-		CustomHashtable toRemove = new CustomHashtable(getComparer());
-		for (int i = 0; i < elements.length; i++) {
-			toRemove.put(elements[i], elements[i]);
-		}
-
-		// Find each place the parent appears in the tree
-		Widget[] parentItemArray = findItems(parent);
-		for (int i = 0; i < parentItemArray.length; i++) {
-			Widget parentItem = parentItemArray[i];
-
-			// May happen if parent element is a descendent of of a previously
-			// removed element
-			if (parentItem.isDisposed())
-				continue;
-
-			// Iterate over the child items and remove each one
-			Item[] children = getChildren(parentItem);
-
-			if (children.length == 1 && children[0].getData() == null &&
-					parentItem instanceof Item) { // dummy node
-				// Remove plus if parent element has no children
-				updatePlus((Item) parentItem, parent);
-			} else {
-				for (int j = 0; j < children.length; j++) {
-					Item child = children[j];
-
-					Object data = child.getData();
-					if (data != null && toRemove.containsKey(data)) {
-						disassociate(child);
-						child.dispose();
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Sets the expanded state of all items to correspond to the given set of
-	 * expanded elements.
-	 *
-	 * @param expandedElements
-	 *            the set (element type: <code>Object</code>) of elements
-	 *            which are expanded
-	 * @param widget
-	 *            the widget
-	 */
-	private void internalSetExpanded(CustomHashtable expandedElements,
-			Widget widget) {
-		Item[] items = getChildren(widget);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			Object data = item.getData();
-			if (data != null) {
-				// remove the element to avoid an infinite loop
-				// if the same element appears on a child item
-				boolean expanded = expandedElements.remove(data) != null;
-				if (expanded != getExpanded(item)) {
-					if (expanded) {
-						createChildren(item);
-					}
-					setExpanded(item, expanded);
-				}
-			}
-			if (expandedElements.size() > 0) {
-				internalSetExpanded(expandedElements, item);
-			}
-		}
-	}
-
-	/**
-	 * Sets the expanded state of all items to correspond to the given set of
-	 * expanded tree paths.
-	 *
-	 * @param expandedTreePaths
-	 *            the set (element type: <code>TreePath</code>) of elements
-	 *            which are expanded
-	 * @param widget
-	 *            the widget
-	 */
-	private void internalSetExpandedTreePaths(
-			CustomHashtable expandedTreePaths, Widget widget,
-			TreePath currentPath) {
-		Item[] items = getChildren(widget);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			Object data = item.getData();
-			TreePath childPath = data == null ? null : currentPath
-					.createChildPath(data);
-			if (data != null && childPath != null) {
-				// remove the element to avoid an infinite loop
-				// if the same element appears on a child item
-				boolean expanded = expandedTreePaths.remove(childPath) != null;
-				if (expanded != getExpanded(item)) {
-					if (expanded) {
-						createChildren(item);
-					}
-					setExpanded(item, expanded);
-				}
-			}
-			internalSetExpandedTreePaths(expandedTreePaths, item, childPath);
-		}
-	}
-
-	/**
-	 * Return whether the tree node representing the given element or path can
-	 * be expanded. Clients should query expandability by path if the viewer's
-	 * content provider is an {@link ITreePathContentProvider}.
-	 * <p>
-	 * The default implementation of this framework method calls
-	 * <code>hasChildren</code> on this viewer's content provider. It may be
-	 * overridden if necessary.
-	 * </p>
-	 *
-	 * @param elementOrTreePath
-	 *            the element or path
-	 * @return <code>true</code> if the tree node representing the given
-	 *         element can be expanded, or <code>false</code> if not
-	 */
-	public boolean isExpandable(Object elementOrTreePath) {
-		Object element;
-		TreePath path;
-		if (elementOrTreePath instanceof TreePath) {
-			path = (TreePath) elementOrTreePath;
-			element = path.getLastSegment();
-		} else {
-			element = elementOrTreePath;
-			path = null;
-		}
-		IContentProvider cp = getContentProvider();
-		if (cp instanceof ITreePathContentProvider) {
-			ITreePathContentProvider tpcp = (ITreePathContentProvider) cp;
-			if (path == null) {
-				// A path was not provided so try and find one
-				Widget w = findItem(element);
-				if (w instanceof Item) {
-					Item item = (Item) w;
-					path = getTreePathFromItem(item);
-				}
-				if (path == null) {
-					path = new TreePath(new Object[] { element });
-				}
-			}
-			return tpcp.hasChildren(path);
-		}
-		if (cp instanceof ITreeContentProvider) {
-			ITreeContentProvider tcp = (ITreeContentProvider) cp;
-			return tcp.hasChildren(element);
-		}
-		return false;
-	}
-
-	/**
-	 * Return whether the given element is expandable.
-	 *
-	 * @param item
-	 *            the tree item for the element
-	 * @param parentPath
-	 *            the parent path if it is known or <code>null</code> if it
-	 *            needs to be determines
-	 * @param element
-	 *            the element
-	 * @return whether the given element is expandable
-	 */
-	private boolean isExpandable(Item item, TreePath parentPath, Object element) {
-		Object elementOrTreePath = element;
-		if (isTreePathContentProvider()) {
-			if (parentPath != null) {
-				elementOrTreePath = parentPath.createChildPath(element);
-			} else {
-				elementOrTreePath = getTreePathFromItem(item);
-			}
-		}
-		return isExpandable(elementOrTreePath);
-	}
-
-	/* (non-Javadoc) Method declared on Viewer. */
-	protected void labelProviderChanged() {
-		// we have to walk the (visible) tree and update every item
-		Control tree = getControl();
-		tree.setRedraw(false);
-		// don't pick up structure changes, but do force label updates
-		internalRefresh(tree, getRoot(), false, true);
-		tree.setRedraw(true);
-	}
-
-	/**
-	 * Creates a new item.
-	 *
-	 * @param parent
-	 *            the parent widget
-	 * @param style
-	 *            SWT style bits
-	 * @param index
-	 *            if non-negative, indicates the position to insert the item
-	 *            into its parent
-	 * @return the newly-created item
-	 */
-	protected abstract Item newItem(Widget parent, int style, int index);
-
-	/**
-	 * Removes the given elements from this viewer. The selection is updated if
-	 * required.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been removed from the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param elementsOrTreePaths
-	 *            the elements to remove
-	 */
-	public void remove(final Object[] elementsOrTreePaths) {
-		assertElementsNotNull(elementsOrTreePaths);
-		if (elementsOrTreePaths.length == 0) {
-			return;
-		}
-		if (checkBusy())
-			return;
-		preservingSelection(new Runnable() {
-			public void run() {
-				internalRemove(elementsOrTreePaths);
-			}
-		});
-	}
-
-	/**
-	 * Removes the given elements from this viewer whenever they appear as
-	 * children of the given parent element. If the given elements also appear
-	 * as children of some other parent, the other parent will remain unchanged.
-	 * The selection is updated if required.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been removed from the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param parent
-	 *            the parent of the elements to remove
-	 * @param elements
-	 *            the elements to remove
-	 *
-	 * @since 3.2
-	 */
-	public void remove(final Object parent, final Object[] elements) {
-		assertElementsNotNull(elements);
-		if (elements.length == 0) {
-			return;
-		}
-		if (checkBusy())
-			return;
-		preservingSelection(new Runnable() {
-			public void run() {
-				internalRemove(parent, elements);
-			}
-		});
-	}
-
-	/**
-	 * Removes the given element from the viewer. The selection is updated if
-	 * necessary.
-	 * <p>
-	 * This method should be called (by the content provider) when a single
-	 * element has been removed from the model, in order to cause the viewer to
-	 * accurately reflect the model. This method only affects the viewer, not
-	 * the model. Note that there is another method for efficiently processing
-	 * the simultaneous removal of multiple elements.
-	 * </p>
-	 *
-	 * @param elementsOrTreePaths
-	 *            the element
-	 */
-	public void remove(Object elementsOrTreePaths) {
-		remove(new Object[] { elementsOrTreePaths });
-	}
-
-	/**
-	 * Removes all items from the given control.
-	 *
-	 * @param control
-	 *            the control
-	 */
-	protected abstract void removeAll(Control control);
-
-	/**
-	 * Removes a listener for expand and collapse events in this viewer. Has no
-	 * affect if an identical listener is not registered.
-	 *
-	 * @param listener
-	 *            a tree viewer listener
-	 */
-	public void removeTreeListener(ITreeViewerListener listener) {
-		treeListeners.remove(listener);
-	}
-
-	/**
-	 * This implementation of reveal() reveals the given element or tree path.
-	 */
-	public void reveal(Object elementOrTreePath) {
-		Assert.isNotNull(elementOrTreePath);
-		Widget w = internalExpand(elementOrTreePath, true);
-		if (w instanceof Item) {
-			showItem((Item) w);
-		}
-	}
-
-	/**
-	 * Returns the rightmost visible descendent of the given item. Returns the
-	 * item itself if it has no children.
-	 *
-	 * @param item
-	 *            the item to compute the descendent of
-	 * @return the rightmost visible descendent or the item itself if it has no
-	 *         children
-	 */
-	private Item rightMostVisibleDescendent(Item item) {
-		Item[] children = getItems(item);
-		if (getExpanded(item) && children != null && children.length > 0) {
-			return rightMostVisibleDescendent(children[children.length - 1]);
-		}
-		return item;
-	}
-
-	/* (non-Javadoc) Method declared on Viewer. */
-	public Item scrollDown(int x, int y) {
-		Item current = getItem(x, y);
-		if (current != null) {
-			Item next = getNextItem(current, true);
-			showItem(next == null ? current : next);
-			return next;
-		}
-		return null;
-	}
-
-	/* (non-Javadoc) Method declared on Viewer. */
-	public Item scrollUp(int x, int y) {
-		Item current = getItem(x, y);
-		if (current != null) {
-			Item previous = getPreviousItem(current);
-			showItem(previous == null ? current : previous);
-			return previous;
-		}
-		return null;
-	}
-
-	/**
-	 * Sets the auto-expand level to be used when the input of the viewer is set
-	 * using {@link #setInput(Object)}. The value 0 means that there is no
-	 * auto-expand; 1 means that the invisible root element is expanded (since
-	 * most concrete subclasses do not show the root element, there is usually
-	 * no practical difference between using the values 0 and 1); 2 means that
-	 * top-level elements are expanded, but not their children; 3 means that
-	 * top-level elements are expanded, and their children, but not
-	 * grandchildren; and so on.
-	 * <p>
-	 * The value <code>ALL_LEVELS</code> means that all subtrees should be
-	 * expanded.
-	 * </p>
-	 * <p>
-	 * Note that in previous releases, the Javadoc for this method had an off-by
-	 * one error. See bug 177669 for details.
-	 * </p>
-	 * 
-	 * @param level
-	 *            non-negative level, or <code>ALL_LEVELS</code> to expand all
-	 *            levels of the tree
-	 */
-	public void setAutoExpandLevel(int level) {
-		expandToLevel = level;
-	}
-
-	/**
-	 * The <code>AbstractTreeViewer</code> implementation of this method
-	 * checks to ensure that the content provider is an
-	 * <code>ITreeContentProvider</code>.
-	 */
-	public void setContentProvider(IContentProvider provider) {
-		// the actual check is in assertContentProviderType
-		super.setContentProvider(provider);
-	}
-
-	protected void assertContentProviderType(IContentProvider provider) {
-		Assert.isTrue(provider instanceof ITreeContentProvider
-				|| provider instanceof ITreePathContentProvider);
-	}
-
-	/**
-	 * Sets the expand state of the given item.
-	 *
-	 * @param item
-	 *            the item
-	 * @param expand
-	 *            the expand state of the item
-	 */
-	protected abstract void setExpanded(Item item, boolean expand);
-
-	/**
-	 * Sets which nodes are expanded in this viewer's tree. The given list
-	 * contains the elements that are to be expanded; all other nodes are to be
-	 * collapsed.
-	 * <p>
-	 * This method is typically used when restoring the interesting state of a
-	 * viewer captured by an earlier call to <code>getExpandedElements</code>.
-	 * </p>
-	 *
-	 * @param elements
-	 *            the array of expanded elements
-	 * @see #getExpandedElements
-	 */
-	public void setExpandedElements(Object[] elements) {
-		assertElementsNotNull(elements);
-		if (checkBusy()) {
-			return;
-		}
-		CustomHashtable expandedElements = newHashtable(elements.length * 2 + 1);
-		for (int i = 0; i < elements.length; ++i) {
-			Object element = elements[i];
-			// Ensure item exists for element. This will materialize items for
-			// each element and their parents, if possible. This is important
-			// to support expanding of inner tree nodes without necessarily
-			// expanding their parents.
-			internalExpand(element, false);
-			expandedElements.put(element, element);
-		}
-		// this will traverse all existing items, and create children for
-		// elements that need to be expanded. If the tree contains multiple
-		// equal elements, and those are in the set of elements to be expanded,
-		// only the first item found for each element will be expanded.
-		internalSetExpanded(expandedElements, getControl());
-	}
-
-	/**
-	 * Sets which nodes are expanded in this viewer's tree. The given list
-	 * contains the tree paths that are to be expanded; all other nodes are to
-	 * be collapsed.
-	 * <p>
-	 * This method is typically used when restoring the interesting state of a
-	 * viewer captured by an earlier call to <code>getExpandedTreePaths</code>.
-	 * </p>
-	 *
-	 * @param treePaths
-	 *            the array of expanded tree paths
-	 * @see #getExpandedTreePaths()
-	 *
-	 * @since 3.2
-	 */
-	public void setExpandedTreePaths(TreePath[] treePaths) {
-		assertElementsNotNull(treePaths);
-		if (checkBusy())
-			return;
-		final IElementComparer comparer = getComparer();
-		IElementComparer treePathComparer = new IElementComparer() {
-
-			public boolean equals(Object a, Object b) {
-				return ((TreePath) a).equals(((TreePath) b), comparer);
-			}
-
-			public int hashCode(Object element) {
-				return ((TreePath) element).hashCode(comparer);
-			}
-		};
-		CustomHashtable expandedTreePaths = new CustomHashtable(
-				treePaths.length * 2 + 1, treePathComparer);
-		for (int i = 0; i < treePaths.length; ++i) {
-			TreePath treePath = treePaths[i];
-			// Ensure item exists for element. This will materialize items for
-			// each element and their parents, if possible. This is important
-			// to support expanding of inner tree nodes without necessarily
-			// expanding their parents.
-			internalExpand(treePath, false);
-			expandedTreePaths.put(treePath, treePath);
-		}
-		// this will traverse all existing items, and create children for
-		// elements that need to be expanded. If the tree contains multiple
-		// equal elements, and those are in the set of elements to be expanded,
-		// only the first item found for each element will be expanded.
-		internalSetExpandedTreePaths(expandedTreePaths, getControl(),
-				new TreePath(new Object[0]));
-	}
-
-	/**
-	 * Sets whether the node corresponding to the given element or tree path is
-	 * expanded or collapsed.
-	 *
-	 * @param elementOrTreePath
-	 *            the element
-	 * @param expanded
-	 *            <code>true</code> if the node is expanded, and
-	 *            <code>false</code> if collapsed
-	 */
-	public void setExpandedState(Object elementOrTreePath, boolean expanded) {
-		Assert.isNotNull(elementOrTreePath);
-		if (checkBusy())
-			return;
-		Widget item = internalExpand(elementOrTreePath, false);
-		if (item instanceof Item) {
-			if (expanded) {
-				createChildren(item);
-			}
-			setExpanded((Item) item, expanded);
-		}
-	}
-
-	/**
-	 * Sets the selection to the given list of items.
-	 *
-	 * @param items
-	 *            list of items (element type:
-	 *            <code>org.eclipse.swt.widgets.Item</code>)
-	 */
-	protected abstract void setSelection(List items);
-
-	/**
-	 * This implementation of setSelectionToWidget accepts a list of elements or
-	 * a list of tree paths.
-	 */
-	protected void setSelectionToWidget(List v, boolean reveal) {
-		if (v == null) {
-			setSelection(new ArrayList(0));
-			return;
-		}
-		int size = v.size();
-		List newSelection = new ArrayList(size);
-		for (int i = 0; i < size; ++i) {
-			Object elementOrTreePath = v.get(i);
-			// Use internalExpand since item may not yet be created. See
-			// 1G6B1AR.
-			Widget w = internalExpand(elementOrTreePath, false);
-			if (w instanceof Item) {
-				newSelection.add(w);
-			} else if (w == null && elementOrTreePath instanceof TreePath) {
-				TreePath treePath = (TreePath) elementOrTreePath;
-				Object element = treePath.getLastSegment();
-				if (element != null) {
-					w = internalExpand(element, false);
-					if (w instanceof Item) {
-						newSelection.add(w);
-					}
-				}
-			}
-		}
-		setSelection(newSelection);
-
-		// Although setting the selection in the control should reveal it,
-		// setSelection may be a no-op if the selection is unchanged,
-		// so explicitly reveal items in the selection here.
-		// See bug 100565 for more details.
-		if (reveal && newSelection.size() > 0) {
-			// Iterate backwards so the first item in the list
-			// is the one guaranteed to be visible
-			for (int i = (newSelection.size()-1); i >= 0; i--) {
-				showItem((Item) newSelection.get(i));
-			}
-		}
-	}
-
-	/**
-	 * Shows the given item.
-	 *
-	 * @param item
-	 *            the item
-	 */
-	protected abstract void showItem(Item item);
-
-	/**
-	 * Updates the tree items to correspond to the child elements of the given
-	 * parent element. If null is passed for the children, this method obtains
-	 * them (only if needed).
-	 *
-	 * @param widget
-	 *            the widget
-	 * @param parent
-	 *            the parent element
-	 * @param elementChildren
-	 *            the child elements, or null
-	 * @deprecated this is no longer called by the framework
-	 */
-	protected void updateChildren(Widget widget, Object parent,
-			Object[] elementChildren) {
-		updateChildren(widget, parent, elementChildren, true);
-	}
-
-	/**
-	 * Updates the tree items to correspond to the child elements of the given
-	 * parent element. If null is passed for the children, this method obtains
-	 * them (only if needed).
-	 *
-	 * @param widget
-	 *            the widget
-	 * @param parent
-	 *            the parent element
-	 * @param elementChildren
-	 *            the child elements, or null
-	 * @param updateLabels
-	 *            <code>true</code> to update labels for existing elements,
-	 *            <code>false</code> to only update labels as needed, assuming
-	 *            that labels for existing elements are unchanged.
-	 * @since 2.1
-	 */
-	private void updateChildren(Widget widget, Object parent,
-			Object[] elementChildren, boolean updateLabels) {
-		// optimization! prune collapsed subtrees
-		if (widget instanceof Item) {
-			Item ti = (Item) widget;
-			if (!getExpanded(ti)) {
-				// need a dummy node if element is expandable;
-				// but try to avoid recreating the dummy node
-				boolean needDummy = isExpandable(ti, null, parent);
-				boolean haveDummy = false;
-				// remove all children
-				Item[] items = getItems(ti);
-				for (int i = 0; i < items.length; i++) {
-					if (items[i].getData() != null) {
-						disassociate(items[i]);
-						items[i].dispose();
-					} else {
-						if (needDummy && !haveDummy) {
-							haveDummy = true;
-						} else {
-							items[i].dispose();
-						}
-					}
-				}
-				if (needDummy && !haveDummy) {
-					newItem(ti, SWT.NULL, -1);
-				}
-
-				return;
-			}
-		}
-
-		// If the children weren't passed in, get them now since they're needed
-		// below.
-		if (elementChildren == null) {
-			if (isTreePathContentProvider() && widget instanceof Item) {
-				TreePath path = getTreePathFromItem((Item) widget);
-				elementChildren = getSortedChildren(path);
-			} else {
-				elementChildren = getSortedChildren(parent);
-			}
-		}
-
-		Control tree = getControl();
-
-		// WORKAROUND
-		int oldCnt = -1;
-		if (widget == tree) {
-			oldCnt = getItemCount(tree);
-		}
-
-		Item[] items = getChildren(widget,elementChildren);
-		
-		// save the expanded elements
-		CustomHashtable expanded = newHashtable(CustomHashtable.DEFAULT_CAPACITY); // assume
-																					// num
-																					// expanded
-																					// is
-																					// small
-		for (int i = 0; i < items.length; ++i) {
-			if (getExpanded(items[i])) {
-				Object element = items[i].getData();
-				if (element != null) {
-					expanded.put(element, element);
-				}
-			}
-		}
-
-		int min = Math.min(elementChildren.length, items.length);
-
-		// dispose of surplus items, optimizing for the case where elements have
-		// been deleted but not reordered, or all elements have been removed.
-		int numItemsToDispose = items.length - min;
-		if (numItemsToDispose > 0) {
-			CustomHashtable children = newHashtable(elementChildren.length * 2);
-			for (int i = 0; i < elementChildren.length; i++) {
-				Object elementChild = elementChildren[i];
-				children.put(elementChild, elementChild);
-			}
-			int i = 0;
-			while (numItemsToDispose > 0 && i < items.length) {
-				Object data = items[i].getData();
-				if (data == null || items.length - i <= numItemsToDispose || !children.containsKey(data)) {
-					if (data != null) {
-						disassociate(items[i]);
-					}
-					items[i].dispose();
-					if (i + 1 < items.length) {
-						// The components at positions i+1 through
-						// items.length-1 in the source array are copied into
-						// positions i through items.length-2
-						System.arraycopy(items, i + 1, items, i, items.length - (i+1));
-					}
-					numItemsToDispose--;
-				} else {
-					i++;
-				}
-			}
-		}
-
-		// compare first min items, and update item if necessary
-		// need to do it in two passes:
-		// 1: disassociate old items
-		// 2: associate new items
-		// because otherwise a later disassociate can remove a mapping made for
-		// a previous associate,
-		// making the map inconsistent
-		for (int i = 0; i < min; ++i) {
-			Item item = items[i];
-			Object oldElement = item.getData();
-			if (oldElement != null) {
-				Object newElement = elementChildren[i];
-				if (newElement != oldElement) {
-					if (equals(newElement, oldElement)) {
-						// update the data to be the new element, since
-						// although the elements
-						// may be equal, they may still have different labels
-						// or children
-						Object data = item.getData();
-						if (data != null) {
-							unmapElement(data, item);
-						}
-						item.setData(newElement);
-						mapElement(newElement, item);
-					} else {
-						disassociate(item);
-						// Clear the text and image to force a label update
-						item.setImage(null);
-						item.setText("");//$NON-NLS-1$
-
-					}
-				}
-			}
-		}
-
-		for (int i = 0; i < min; ++i) {
-			Item item = items[i];
-			Object newElement = elementChildren[i];
-			if (item.getData() == null) {
-				// old and new elements are not equal
-				associate(newElement, item);
-				updatePlus(item, newElement);
-				updateItem(item, newElement);
-			} else {
-				// old and new elements are equal
-				updatePlus(item, newElement);
-				if (updateLabels) {
-					updateItem(item, newElement);
-				}
-			}
-		}
-
-		// Restore expanded state for items that changed position.
-		// Make sure setExpanded is called after updatePlus, since
-		// setExpanded(false) fails if item has no children.
-		// Need to call setExpanded for both expanded and unexpanded
-		// cases since the expanded state can change either way.
-		// This needs to be done in a second loop, see bug 148025.
-		for (int i = 0; i < min; ++i) {
-			Item item = items[i];
-			Object newElement = elementChildren[i];
-			setExpanded(item, expanded.containsKey(newElement));
-		}
-
-		// add any remaining elements
-		if (min < elementChildren.length) {
-			for (int i = min; i < elementChildren.length; ++i) {
-				createTreeItem(widget, elementChildren[i], i);
-			}
-
-			// Need to restore expanded state in a separate pass
-			// because createTreeItem does not return the new item.
-			// Avoid doing this unless needed.
-			if (expanded.size() > 0) {
-				// get the items again, to include the new items
-				items = getChildren(widget);
-				for (int i = min; i < elementChildren.length; ++i) {
-					// Restore expanded state for items that changed position.
-					// Make sure setExpanded is called after updatePlus (called
-					// in createTreeItem), since
-					// setExpanded(false) fails if item has no children.
-					// Only need to call setExpanded if element was expanded
-					// since new items are initially unexpanded.
-					if (expanded.containsKey(elementChildren[i])) {
-						setExpanded(items[i], true);
-					}
-				}
-			}
-		}
-
-		// WORKAROUND
-		if (widget == tree && oldCnt == 0 && getItemCount(tree) != 0) {
-			// System.out.println("WORKAROUND setRedraw");
-			tree.setRedraw(false);
-			tree.setRedraw(true);
-		}
-	}
-
-	/**
-	 * Return the items to be refreshed as part of an update. elementChildren are the
-	 * new elements.
-	 * @param widget
-	 * @param elementChildren
-	 * @since 3.4
-	 * @return Item[]
-	 * <strong>NOTE:</strong> This API is experimental and may be deleted
-	 * before 3.4 is released.
-	 */
-	public Item[] getChildren(Widget widget,  Object[] elementChildren) {
-		return getChildren(widget);
-	}
-
-	/**
-	 * Updates the "+"/"-" icon of the tree node from the given element. It
-	 * calls <code>isExpandable</code> to determine whether an element is
-	 * expandable.
-	 *
-	 * @param item
-	 *            the item
-	 * @param element
-	 *            the element
-	 */
-	protected void updatePlus(Item item, Object element) {
-		boolean hasPlus = getItemCount(item) > 0;
-		boolean needsPlus = isExpandable(item, null, element);
-		boolean removeAll = false;
-		boolean addDummy = false;
-		Object data = item.getData();
-		if (data != null && equals(element, data)) {
-			// item shows same element
-			if (hasPlus != needsPlus) {
-				if (needsPlus) {
-					addDummy = true;
-				} else {
-					removeAll = true;
-				}
-			}
-		} else {
-			// item shows different element
-			removeAll = true;
-			addDummy = needsPlus;
-
-			// we cannot maintain expand state so collapse it
-			setExpanded(item, false);
-		}
-		if (removeAll) {
-			// remove all children
-			Item[] items = getItems(item);
-			for (int i = 0; i < items.length; i++) {
-				if (items[i].getData() != null) {
-					disassociate(items[i]);
-				}
-				items[i].dispose();
-			}
-		}
-		if (addDummy) {
-			newItem(item, SWT.NULL, -1); // append a dummy
-		}
-	}
-
-	/**
-	 * Gets the expanded elements that are visible to the user. An expanded
-	 * element is only visible if the parent is expanded.
-	 *
-	 * @return the visible expanded elements
-	 * @since 2.0
-	 */
-	public Object[] getVisibleExpandedElements() {
-		ArrayList v = new ArrayList();
-		internalCollectVisibleExpanded(v, getControl());
-		return v.toArray();
-	}
-
-	private void internalCollectVisibleExpanded(ArrayList result, Widget widget) {
-		Item[] items = getChildren(widget);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			if (getExpanded(item)) {
-				Object data = item.getData();
-				if (data != null) {
-					result.add(data);
-				}
-				// Only recurse if it is expanded - if
-				// not then the children aren't visible
-				internalCollectVisibleExpanded(result, item);
-			}
-		}
-	}
-
-	/**
-	 * Returns the tree path for the given item.
-	 * @param item
-	 * @return {@link TreePath}
-	 *
-	 * @since 3.2
-	 */
-	protected TreePath getTreePathFromItem(Item item) {
-		LinkedList segments = new LinkedList();
-		while (item != null) {
-			Object segment = item.getData();
-			Assert.isNotNull(segment);
-			segments.addFirst(segment);
-			item = getParentItem(item);
-		}
-		return new TreePath(segments.toArray());
-	}
-
-	/**
-	 * This implementation of getSelection() returns an instance of
-	 * ITreeSelection.
-	 *
-	 * @since 3.2
-	 */
-	public ISelection getSelection() {
-		Control control = getControl();
-		if (control == null || control.isDisposed()) {
-			return TreeSelection.EMPTY;
-		}
-		Widget[] items = getSelection(getControl());
-		ArrayList list = new ArrayList(items.length);
-		for (int i = 0; i < items.length; i++) {
-			Widget item = items[i];
-			if (item.getData() != null) {
-				list.add(getTreePathFromItem((Item) item));
-			}
-		}
-		return new TreeSelection((TreePath[]) list.toArray(new TreePath[list
-				.size()]), getComparer());
-	}
-
-	protected void setSelectionToWidget(ISelection selection, boolean reveal) {
-		if (selection instanceof ITreeSelection) {
-			ITreeSelection treeSelection = (ITreeSelection) selection;
-			setSelectionToWidget(Arrays.asList(treeSelection.getPaths()),
-					reveal);
-		} else {
-			super.setSelectionToWidget(selection, reveal);
-		}
-	}
-
-	/**
-	 * Returns a list of tree paths corresponding to expanded nodes in this
-	 * viewer's tree, including currently hidden ones that are marked as
-	 * expanded but are under a collapsed ancestor.
-	 * <p>
-	 * This method is typically used when preserving the interesting state of a
-	 * viewer; <code>setExpandedElements</code> is used during the restore.
-	 * </p>
-	 *
-	 * @return the array of expanded tree paths
-	 * @see #setExpandedElements
-	 *
-	 * @since 3.2
-	 */
-	public TreePath[] getExpandedTreePaths() {
-		ArrayList items = new ArrayList();
-		internalCollectExpandedItems(items, getControl());
-		ArrayList result = new ArrayList(items.size());
-		for (Iterator it = items.iterator(); it.hasNext();) {
-			Item item = (Item) it.next();
-			TreePath treePath = getTreePathFromItem(item);
-			if (treePath != null) {
-				result.add(treePath);
-			}
-		}
-		return (TreePath[]) result.toArray(new TreePath[items.size()]);
-	}
-
-	private boolean isTreePathContentProvider() {
-		return getContentProvider() instanceof ITreePathContentProvider;
-	}
-
-	/**
-	 * Inserts the given element as a new child element of the given parent
-	 * element at the given position. If this viewer has a sorter, the position
-	 * is ignored and the element is inserted at the correct position in the
-	 * sort order.
-	 * <p>
-	 * This method should be called (by the content provider) when elements have
-	 * been added to the model, in order to cause the viewer to accurately
-	 * reflect the model. This method only affects the viewer, not the model.
-	 * </p>
-	 *
-	 * @param parentElementOrTreePath
-	 *            the parent element, or the tree path to the parent
-	 * @param element
-	 *            the element
-	 * @param position
-	 *            a 0-based position relative to the model, or -1 to indicate
-	 *            the last position
-	 *
-	 * @since 3.2
-	 */
-	public void insert(Object parentElementOrTreePath, Object element,
-			int position) {
-		Assert.isNotNull(parentElementOrTreePath);
-		Assert.isNotNull(element);
-		if (checkBusy())
-			return;
-		if (getComparator() != null || hasFilters()) {
-			add(parentElementOrTreePath, new Object[] { element });
-			return;
-		}
-		Widget[] items;
-		if (internalIsInputOrEmptyPath(parentElementOrTreePath)) {
-			items = new Widget[] { getControl() };
-		} else {
-			items = internalFindItems(parentElementOrTreePath);
-		}
-
-		for (int i = 0; i < items.length; i++) {
-			Widget widget = items[i];
-			if (widget instanceof Item) {
-				Item item = (Item) widget;
-
-				Item[] childItems = getChildren(item);
-				if (getExpanded(item)
-						|| (childItems.length > 0 && childItems[0].getData() != null)) {
-					// item has real children, go ahead and add
-					int insertionPosition = position;
-					if (insertionPosition == -1) {
-						insertionPosition = getItemCount(item);
-					}
-
-					createTreeItem(item, element, insertionPosition);
-				} else {
-					Object parentElement = parentElementOrTreePath;
-					if (element instanceof TreePath)
-						parentElement = ((TreePath) parentElement).getLastSegment();
-					updatePlus(item, parentElement);
-				}
-			} else {
-				int insertionPosition = position;
-				if (insertionPosition == -1) {
-					insertionPosition = getItemCount((Control) widget);
-				}
-
-				createTreeItem(widget, element, insertionPosition);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ColumnViewer#getColumnViewerOwner(int)
-	 */
-	protected Widget getColumnViewerOwner(int columnIndex) {
-		// Return null by default
-		return null;
-	}
-
-	/**
-	 * This implementation of {@link #getItemAt(Point)} returns null to ensure
-	 * API backwards compatibility. Subclasses should override.
-	 *
-	 * @since 3.3
-	 */
-	protected Item getItemAt(Point point) {
-		return null;
-	}
-
-	/**
-	 * This implementation of {@link #createViewerEditor()} returns null to ensure
-	 * API backwards compatibility. Subclasses should override.
-	 *
-	 * @since 3.3
-	 */
-	protected ColumnViewerEditor createViewerEditor() {
-		return null;
-	}
-
-	/**
-	 * Returns the number of columns of this viewer.
-	 * <p><b>Subclasses should overwrite this method, which has a default
-	 * implementation (returning 0) for API backwards compatility reasons</b></p>
-	 *
-	 * @return the number of columns
-	 *
-	 * @since 3.3
-	 */
-	protected int doGetColumnCount() {
-		return 0;
-	}
-
-
-	/**
-	 * This implementation of buildLabel handles tree paths as well as elements.
-	 *
-	 * @param updateLabel
-	 *            the ViewerLabel to collect the result in
-	 * @param elementOrPath
-	 *            the element or tree path for which a label should be built
-	 *
-	 * @see org.eclipse.jface.viewers.StructuredViewer#buildLabel(org.eclipse.jface.viewers.ViewerLabel,
-	 *      java.lang.Object)
-	 */
-	protected void buildLabel(ViewerLabel updateLabel, Object elementOrPath) {
-		Object element;
-		if (elementOrPath instanceof TreePath) {
-			TreePath path = (TreePath) elementOrPath;
-			IBaseLabelProvider provider = getLabelProvider();
-			if (provider instanceof ITreePathLabelProvider) {
-				ITreePathLabelProvider pprov = (ITreePathLabelProvider) provider;
-				buildLabel(updateLabel, path, pprov);
-				return;
-			}
-			element = path.getLastSegment();
-		} else {
-			element = elementOrPath;
-		}
-		super.buildLabel(updateLabel, element);
-	}
-
-	/**
-	 * Returns true if the given object is either the input or an empty tree path.
-	 *
-	 * @param elementOrTreePath an element which could either be the viewer's input, or a tree path
-	 *
-	 * @return <code>true</code> if the given object is either the input or an empty tree path,
-	 * <code>false</code> otherwise.
-	 * @since 3.3
-	 */
-	final protected boolean internalIsInputOrEmptyPath(final Object elementOrTreePath) {
-		if (elementOrTreePath.equals(getRoot()))
-			return true;
-		if (!(elementOrTreePath instanceof TreePath))
-			return false;
-		return ((TreePath) elementOrTreePath).getSegmentCount() == 0;
-	}
-
-	/*
-	 * Subclasses should implement
-	 */
-	protected ViewerRow getViewerRowFromItem(Widget item) {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AcceptAllFilter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AcceptAllFilter.java
deleted file mode 100644
index 0d9bd85..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AcceptAllFilter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-
-/**
- * Filter that accepts everything. Available as a singleton since having
- * more than one instance would be wasteful.
- * 
- * @since 3.1
- */
-public final class AcceptAllFilter implements IFilter {
-
-	/**
-	 * Returns the singleton instance of AcceptAllFilter
-	 * 
-	 * @return the singleton instance of AcceptAllFilter
-	 */
-	public static IFilter getInstance() {
-		return singleton;
-	}
-	
-	/**
-	 * The singleton instance
-	 */
-	private static IFilter singleton = new AcceptAllFilter();
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.deferred.IFilter#select(java.lang.Object)
-	 */
-	public boolean select(Object toTest) {
-		return true;
-	}
-	
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-	public boolean equals(Object other) {
-		return other == this || other instanceof AcceptAllFilter;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ArrayContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ArrayContentProvider.java
deleted file mode 100644
index 7bbfa77..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ArrayContentProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.Collection;
-
-/**
- * This implementation of <code>IStructuredContentProvider</code> handles
- * the case where the viewer input is an unchanging array or collection of elements.
- * <p>
- * This class is not intended to be subclassed outside the viewer framework.
- * </p> 
- * 
- * @since 2.1
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ArrayContentProvider implements IStructuredContentProvider {
-
-    /**
-     * Returns the elements in the input, which must be either an array or a
-     * <code>Collection</code>. 
-     */
-    public Object[] getElements(Object inputElement) {
-        if (inputElement instanceof Object[]) {
-			return (Object[]) inputElement;
-		}
-        if (inputElement instanceof Collection) {
-			return ((Collection) inputElement).toArray();
-		}
-        return new Object[0];
-    }
-
-    /**
-     * This implementation does nothing.
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        // do nothing.
-    }
-
-    /**
-     * This implementation does nothing.
-     */
-    public void dispose() {
-        // do nothing.
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/BaseLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/BaseLabelProvider.java
deleted file mode 100644
index d610aa4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/BaseLabelProvider.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.util.SafeRunnable;
-
-/**
- * BaseLabelProvider is a default concrete implementation of
- * {@link IBaseLabelProvider} 
- * 
- * @since 3.3
- * 
- */
-public class BaseLabelProvider extends EventManager implements IBaseLabelProvider {
-	
-	/* (non-Javadoc)
-     * Method declared on IBaseLabelProvider.
-     */
-    public void addListener(ILabelProviderListener listener) {
-        addListenerObject(listener);
-    }
-
-    /**
-     * The <code>BaseLabelProvider</code> implementation of this 
-     * <code>IBaseLabelProvider</code> method clears its internal listener list.
-     * Subclasses may extend but should call the super implementation.
-     */
-    public void dispose() {
-    	clearListeners();
-    }
-    
-    /**
-     * The <code>BaseLabelProvider</code> implementation of this 
-     * <code>IBaseLabelProvider</code> method returns <code>true</code>. Subclasses may 
-     * override.
-     */
-    public boolean isLabelProperty(Object element, String property) {
-        return true;
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-     */
-    public void removeListener(ILabelProviderListener listener) {
-        removeListenerObject(listener);
-    }
-    
-    /**
-	 * Fires a label provider changed event to all registered listeners Only
-	 * listeners registered at the time this method is called are notified.
-	 * 
-	 * @param event
-	 *            a label provider changed event
-	 * 
-	 * @see ILabelProviderListener#labelProviderChanged
-	 */
-	protected void fireLabelProviderChanged(final LabelProviderChangedEvent event) {
-		Object[] listeners = getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			final ILabelProviderListener l = (ILabelProviderListener) listeners[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.labelProviderChanged(event);
-				}
-			});
-
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellEditor.java
deleted file mode 100644
index 39514f4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellEditor.java
+++ /dev/null
@@ -1,939 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - bugfix in: 187963, 218336
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Abstract base class for cell editors. Implements property change listener
- * handling, and SWT window management.
- * <p>
- * Subclasses implement particular kinds of cell editors. This package contains
- * various specialized cell editors:
- * <ul>
- * <li><code>TextCellEditor</code> - for simple text strings</li>
- * <li><code>ColorCellEditor</code> - for colors</li>
- * <li><code>ComboBoxCellEditor</code> - value selected from drop-down combo
- * box</li>
- * <li><code>CheckboxCellEditor</code> - boolean valued checkbox</li>
- * <li><code>DialogCellEditor</code> - value from arbitrary dialog</li>
- * </ul>
- * </p>
- */
-public abstract class CellEditor {
-
-	/**
-	 * List of cell editor listeners (element type:
-	 * <code>ICellEditorListener</code>).
-	 */
-	private ListenerList listeners = new ListenerList();
-
-	/**
-	 * List of cell editor property change listeners (element type:
-	 * <code>IPropertyChangeListener</code>).
-	 */
-	private ListenerList propertyChangeListeners = new ListenerList();
-
-	/**
-	 * Indicates whether this cell editor's current value is valid.
-	 */
-	private boolean valid = false;
-
-	/**
-	 * Optional cell editor validator; <code>null</code> if none.
-	 */
-	private ICellEditorValidator validator = null;
-
-	/**
-	 * The error message string to display for invalid values; <code>null</code>
-	 * if none (that is, the value is valid).
-	 */
-	private String errorMessage = null;
-
-	/**
-	 * Indicates whether this cell editor has been changed recently.
-	 */
-	private boolean dirty = false;
-
-	/**
-	 * This cell editor's control, or <code>null</code> if not created yet.
-	 */
-	private Control control = null;
-
-	/**
-	 * Default cell editor style
-	 */
-	private static final int defaultStyle = SWT.NONE;
-
-	/**
-	 * This cell editor's style
-	 */
-	private int style = defaultStyle;
-
-	/**
-	 * Struct-like layout data for cell editors, with reasonable defaults for
-	 * all fields.
-	 * 
-	 * @noextend This class is not intended to be subclassed by clients.
-	 */
-	public static class LayoutData {
-		/**
-		 * Horizontal alignment; <code>SWT.LEFT</code> by default.
-		 */
-		public int horizontalAlignment = SWT.LEFT;
-
-		/**
-		 * Indicates control grabs additional space; <code>true</code> by
-		 * default.
-		 */
-		public boolean grabHorizontal = true;
-
-		/**
-		 * Minimum width in pixels; <code>50</code> pixels by default.
-		 */
-		public int minimumWidth = 50;
-
-		/**
-		 * Minimum height in pixels; by default the height is aligned to the
-		 * row-height
-		 * @since 3.4
-		 */
-		public int minimumHeight = SWT.DEFAULT;
-
-		/**
-		 * The vertical alignment; <code>SWT.CENTER</code> by default.
-		 * @since 3.4
-		 */
-		public int verticalAlignment = SWT.CENTER;
-	}
-
-	/**
-	 * Property name for the copy action
-	 */
-	public static final String COPY = "copy"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the cut action
-	 */
-	public static final String CUT = "cut"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the delete action
-	 */
-	public static final String DELETE = "delete"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the find action
-	 */
-	public static final String FIND = "find"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the paste action
-	 */
-	public static final String PASTE = "paste"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the redo action
-	 */
-	public static final String REDO = "redo"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the select all action
-	 */
-	public static final String SELECT_ALL = "selectall"; //$NON-NLS-1$
-
-	/**
-	 * Property name for the undo action
-	 */
-	public static final String UNDO = "undo"; //$NON-NLS-1$
-
-	/**
-	 * Creates a new cell editor with no control The cell editor has no cell
-	 * validator.
-	 *
-	 * @since 2.1
-	 */
-	protected CellEditor() {
-	}
-
-	/**
-	 * Creates a new cell editor under the given parent control. The cell editor
-	 * has no cell validator.
-	 *
-	 * @param parent
-	 *            the parent control
-	 */
-	protected CellEditor(Composite parent) {
-		this(parent, defaultStyle);
-	}
-
-	/**
-	 * Creates a new cell editor under the given parent control. The cell editor
-	 * has no cell validator.
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @param style
-	 *            the style bits
-	 * @since 2.1
-	 */
-	protected CellEditor(Composite parent, int style) {
-		this.style = style;
-		create(parent);
-	}
-
-	/**
-	 * Activates this cell editor.
-	 * <p>
-	 * The default implementation of this framework method does nothing.
-	 * Subclasses may reimplement.
-	 * </p>
-	 */
-	public void activate() {
-	}
-
-	/**
-	 * Adds a listener to this cell editor. Has no effect if an identical
-	 * listener is already registered.
-	 *
-	 * @param listener
-	 *            a cell editor listener
-	 */
-	public void addListener(ICellEditorListener listener) {
-		listeners.add(listener);
-	}
-
-	/**
-	 * Adds a property change listener to this cell editor. Has no effect if an
-	 * identical property change listener is already registered.
-	 *
-	 * @param listener
-	 *            a property change listener
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		propertyChangeListeners.add(listener);
-	}
-
-	/**
-	 * Creates the control for this cell editor under the given parent control.
-	 * <p>
-	 * This framework method must be implemented by concrete subclasses.
-	 * </p>
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @return the new control, or <code>null</code> if this cell editor has
-	 *         no control
-	 */
-	protected abstract Control createControl(Composite parent);
-
-	/**
-	 * Creates the control for this cell editor under the given parent control.
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @since 2.1
-	 */
-	public void create(Composite parent) {
-		Assert.isTrue(control == null);
-		control = createControl(parent);
-		// See 1GD5CA6: ITPUI:ALL - TaskView.setSelection does not work
-		// Control is created with getVisible()==true by default.
-		// This causes composite.setFocus() to work incorrectly.
-		// The cell editor's control grabs focus instead, even if it is not
-		// active.
-		// Make the control invisible here by default.
-		deactivate();
-	}
-
-	/**
-	 * Hides this cell editor's control. Does nothing if this cell editor is not
-	 * visible.
-	 */
-	public void deactivate() {
-		if (control != null && !control.isDisposed()) {
-			control.setVisible(false);
-		}
-	}
-
-	/**
-	 * Disposes of this cell editor and frees any associated SWT resources.
-	 */
-	public void dispose() {
-		if (control != null && !control.isDisposed()) {
-			control.dispose();
-		}
-		control = null;
-	}
-
-	/**
-	 * Returns this cell editor's value.
-	 * <p>
-	 * This framework method must be implemented by concrete subclasses.
-	 * </p>
-	 *
-	 * @return the value of this cell editor
-	 * @see #getValue
-	 */
-	protected abstract Object doGetValue();
-
-	/**
-	 * Sets the focus to the cell editor's control.
-	 * <p>
-	 * This framework method must be implemented by concrete subclasses.
-	 * </p>
-	 *
-	 * @see #setFocus
-	 */
-	protected abstract void doSetFocus();
-
-	/**
-	 * Sets this cell editor's value.
-	 * <p>
-	 * This framework method must be implemented by concrete subclasses.
-	 * </p>
-	 *
-	 * @param value
-	 *            the value of this cell editor
-	 * @see #setValue
-	 */
-	protected abstract void doSetValue(Object value);
-
-	/**
-	 * Notifies all registered cell editor listeners of an apply event. Only
-	 * listeners registered at the time this method is called are notified.
-	 *
-	 * @see ICellEditorListener#applyEditorValue
-	 */
-	protected void fireApplyEditorValue() {
-		Object[] array = listeners.getListeners();
-		for (int i = 0; i < array.length; i++) {
-			final ICellEditorListener l = (ICellEditorListener) array[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.applyEditorValue();
-				}
-			});
-		}
-	}
-
-	/**
-	 * Notifies all registered cell editor listeners that editing has been
-	 * canceled.
-	 *
-	 * @see ICellEditorListener#cancelEditor
-	 */
-	protected void fireCancelEditor() {
-		Object[] array = listeners.getListeners();
-		for (int i = 0; i < array.length; i++) {
-			final ICellEditorListener l = (ICellEditorListener) array[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.cancelEditor();
-				}
-			});
-		}
-	}
-
-	/**
-	 * Notifies all registered cell editor listeners of a value change.
-	 *
-	 * @param oldValidState
-	 *            the valid state before the end user changed the value
-	 * @param newValidState
-	 *            the current valid state
-	 * @see ICellEditorListener#editorValueChanged
-	 */
-	protected void fireEditorValueChanged(final boolean oldValidState,
-			final boolean newValidState) {
-		Object[] array = listeners.getListeners();
-		for (int i = 0; i < array.length; i++) {
-			final ICellEditorListener l = (ICellEditorListener) array[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.editorValueChanged(oldValidState, newValidState);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Notifies all registered property listeners of an enablement change.
-	 *
-	 * @param actionId
-	 *            the id indicating what action's enablement has changed.
-	 */
-	protected void fireEnablementChanged(final String actionId) {
-		Object[] array = propertyChangeListeners.getListeners();
-		for (int i = 0; i < array.length; i++) {
-			final IPropertyChangeListener l = (IPropertyChangeListener) array[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.propertyChange(new PropertyChangeEvent(this, actionId,
-							null, null));
-				}
-			});
-		}
-	}
-
-	/**
-	 * Sets the style bits for this cell editor.
-	 *
-	 * @param style
-	 *            the SWT style bits for this cell editor
-	 * @since 2.1
-	 */
-	public void setStyle(int style) {
-		this.style = style;
-	}
-
-	/**
-	 * Returns the style bits for this cell editor.
-	 *
-	 * @return the style for this cell editor
-	 * @since 2.1
-	 */
-	public int getStyle() {
-		return style;
-	}
-
-	/**
-	 * Returns the control used to implement this cell editor.
-	 *
-	 * @return the control, or <code>null</code> if this cell editor has no
-	 *         control
-	 */
-	public Control getControl() {
-		return control;
-	}
-
-	/**
-	 * Returns the current error message for this cell editor.
-	 *
-	 * @return the error message if the cell editor is in an invalid state, and
-	 *         <code>null</code> if the cell editor is valid
-	 */
-	public String getErrorMessage() {
-		return errorMessage;
-	}
-
-	/**
-	 * Returns a layout data object for this cell editor. This is called each
-	 * time the cell editor is activated and controls the layout of the SWT
-	 * table editor.
-	 * <p>
-	 * The default implementation of this method sets the minimum width to the
-	 * control's preferred width. Subclasses may extend or reimplement.
-	 * </p>
-	 *
-	 * @return the layout data object
-	 */
-	public LayoutData getLayoutData() {
-		LayoutData result = new LayoutData();
-		Control control = getControl();
-		if (control != null) {
-			result.minimumWidth = control.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-					true).x;
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the input validator for this cell editor.
-	 *
-	 * @return the input validator, or <code>null</code> if none
-	 */
-	public ICellEditorValidator getValidator() {
-		return validator;
-	}
-
-	/**
-	 * Returns this cell editor's value provided that it has a valid one.
-	 *
-	 * @return the value of this cell editor, or <code>null</code> if the cell
-	 *         editor does not contain a valid value
-	 */
-	public final Object getValue() {
-		if (!valid) {
-			return null;
-		}
-
-		return doGetValue();
-	}
-
-	/**
-	 * Returns whether this cell editor is activated.
-	 *
-	 * @return <code>true</code> if this cell editor's control is currently
-	 *         activated, and <code>false</code> if not activated
-	 */
-	public boolean isActivated() {
-		// Use the state of the visible style bit (getVisible()) rather than the
-		// window's actual visibility (isVisible()) to get correct handling when
-		// an ancestor control goes invisible, see bug 85331.
-		return control != null && control.getVisible();
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * copy action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if copy is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isCopyEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns whether the given value is valid for this cell editor. This cell
-	 * editor's validator (if any) makes the actual determination.
-	 *
-	 * @param value
-	 *            the value to check for
-	 *
-	 * @return <code>true</code> if the value is valid, and <code>false</code>
-	 *         if invalid
-	 */
-	protected boolean isCorrect(Object value) {
-		errorMessage = null;
-		if (validator == null) {
-			return true;
-		}
-
-		errorMessage = validator.isValid(value);
-		return (errorMessage == null || errorMessage.equals(""));//$NON-NLS-1$
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * cut action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if cut is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isCutEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * delete action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if delete is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isDeleteEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns whether the value of this cell editor has changed since the last
-	 * call to <code>setValue</code>.
-	 *
-	 * @return <code>true</code> if the value has changed, and
-	 *         <code>false</code> if unchanged
-	 */
-	public boolean isDirty() {
-		return dirty;
-	}
-
-	/**
-	 * Marks this cell editor as dirty.
-	 *
-	 * @since 2.1
-	 */
-	protected void markDirty() {
-		dirty = true;
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * find action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if find is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isFindEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * paste action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if paste is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isPasteEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * redo action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if redo is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isRedoEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * select all action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if select all is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isSelectAllEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns <code>true</code> if this cell editor is able to perform the
-	 * undo action.
-	 * <p>
-	 * This default implementation always returns <code>false</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 *
-	 * @return <code>true</code> if undo is possible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isUndoEnabled() {
-		return false;
-	}
-
-	/**
-	 * Returns whether this cell editor has a valid value. The default value is
-	 * false.
-	 *
-	 * @return <code>true</code> if the value is valid, and <code>false</code>
-	 *         if invalid
-	 *
-	 * @see #setValueValid(boolean)
-	 */
-	public boolean isValueValid() {
-		return valid;
-	}
-
-	/**
-	 * Processes a key release event that occurred in this cell editor.
-	 * <p>
-	 * The default implementation of this framework method cancels editing when
-	 * the ESC key is pressed. When the RETURN key is pressed the current value
-	 * is applied and the cell editor deactivates. Subclasses should call this
-	 * method at appropriate times. Subclasses may also extend or reimplement.
-	 * </p>
-	 *
-	 * @param keyEvent
-	 *            the key event
-	 */
-	protected void keyReleaseOccured(KeyEvent keyEvent) {
-		if (keyEvent.character == '\u001b') { // Escape character
-			fireCancelEditor();
-		} else if (keyEvent.character == '\r') { // Return key
-			fireApplyEditorValue();
-			deactivate();
-		}
-	}
-
-	/**
-	 * Processes a focus lost event that occurred in this cell editor.
-	 * <p>
-	 * The default implementation of this framework method applies the current
-	 * value and deactivates the cell editor. Subclasses should call this method
-	 * at appropriate times. Subclasses may also extend or reimplement.
-	 * </p>
-	 */
-	protected void focusLost() {
-		if (isActivated()) {
-			fireApplyEditorValue();
-			deactivate();
-		}
-	}
-
-	/**
-	 * Performs the copy action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performCopy() {
-	}
-
-	/**
-	 * Performs the cut action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performCut() {
-	}
-
-	/**
-	 * Performs the delete action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performDelete() {
-	}
-
-	/**
-	 * Performs the find action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performFind() {
-	}
-
-	/**
-	 * Performs the paste action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performPaste() {
-	}
-
-	/**
-	 * Performs the redo action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performRedo() {
-	}
-
-	/**
-	 * Performs the select all action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performSelectAll() {
-	}
-
-	/**
-	 * Performs the undo action. This default implementation does nothing.
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 */
-	public void performUndo() {
-	}
-
-	/**
-	 * Removes the given listener from this cell editor. Has no affect if an
-	 * identical listener is not registered.
-	 *
-	 * @param listener
-	 *            a cell editor listener
-	 */
-	public void removeListener(ICellEditorListener listener) {
-		listeners.remove(listener);
-	}
-
-	/**
-	 * Removes the given property change listener from this cell editor. Has no
-	 * affect if an identical property change listener is not registered.
-	 *
-	 * @param listener
-	 *            a property change listener
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		propertyChangeListeners.remove(listener);
-	}
-
-	/**
-	 * Sets or clears the current error message for this cell editor.
-	 * <p>
-	 * No formatting is done here, the message to be set is expected to be fully
-	 * formatted before being passed in.
-	 * </p>
-	 *
-	 * @param message
-	 *            the error message, or <code>null</code> to clear
-	 */
-	protected void setErrorMessage(String message) {
-		errorMessage = message;
-	}
-
-	/**
-	 * Sets the focus to the cell editor's control.
-	 */
-	public void setFocus() {
-		doSetFocus();
-	}
-
-	/**
-	 * Sets the input validator for this cell editor.
-	 *
-	 * @param validator
-	 *            the input validator, or <code>null</code> if none
-	 */
-	public void setValidator(ICellEditorValidator validator) {
-		this.validator = validator;
-	}
-
-	/**
-	 * Sets this cell editor's value.
-	 *
-	 * @param value
-	 *            the value of this cell editor
-	 */
-	public final void setValue(Object value) {
-		valid = isCorrect(value);
-		dirty = false;
-		doSetValue(value);
-	}
-
-	/**
-	 * Sets the valid state of this cell editor. The default value is false.
-	 * Subclasses should call this method on construction.
-	 *
-	 * @param valid
-	 *            <code>true</code> if the current value is valid, and
-	 *            <code>false</code> if invalid
-	 *
-	 * @see #isValueValid
-	 */
-	protected void setValueValid(boolean valid) {
-		this.valid = valid;
-	}
-
-	/**
-	 * The value has changed. Updates the valid state flag, marks this cell
-	 * editor as dirty, and notifies all registered cell editor listeners of a
-	 * value change.
-	 *
-	 * @param oldValidState
-	 *            the valid state before the end user changed the value
-	 * @param newValidState
-	 *            the current valid state
-	 * @see ICellEditorListener#editorValueChanged
-	 */
-	protected void valueChanged(boolean oldValidState, boolean newValidState) {
-		valid = newValidState;
-		dirty = true;
-		fireEditorValueChanged(oldValidState, newValidState);
-	}
-
-	/**
-	 * Activate the editor but also inform the editor which event triggered its
-	 * activation. <b>The default implementation simply calls
-	 * {@link #activate()}</b>
-	 *
-	 * @param activationEvent
-	 *            the editor activation event
-	 * @since 3.3
-	 */
-	public void activate(ColumnViewerEditorActivationEvent activationEvent) {
-		activate();
-	}
-
-	/**
-	 * The default implementation of this method returns true. Subclasses that
-	 * hook their own focus listener should override this method and return
-	 * false. See also bug 58777.
-	 *
-	 * @return <code>true</code> to indicate that a focus listener has to be
-	 *         attached
-	 * @since 3.4
-	 */
-	protected boolean dependsOnExternalFocusListener() {
-		return true;
-	}
-
-	/**
-	 * @param event
-	 *            deactivation event
-	 * @since 3.4
-	 *
-	 */
-	protected void deactivate(ColumnViewerEditorDeactivationEvent event) {
-		deactivate();
-	}
-
-	/**
-	 * Returns the duration, in milliseconds, between the mouse button click
-	 * that activates the cell editor and a subsequent mouse button click that
-	 * will be considered a <em>double click</em> on the underlying control.
-	 * Clients may override, in particular, clients can return 0 to denote that
-	 * two subsequent mouse clicks in a cell should not be interpreted as a
-	 * double click.
-	 *
-	 * @return the timeout or <code>0</code>
-	 * @since 3.4
-	 */
-	protected int getDoubleClickTimeout() {
-		return Display.getCurrent().getDoubleClickTime();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellLabelProvider.java
deleted file mode 100644
index 1333f95..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellLabelProvider.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Shindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											- bug fixes for 182443
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-
-/**
- * The CellLabelProvider is an abstract implementation of a label provider for
- * structured viewers.
- * 
- * <p><b>This class is intended to be subclassed</b></p>
- * 
- * @since 3.3
- * @see ColumnLabelProvider as a concrete implementation
- */
-public abstract class CellLabelProvider extends BaseLabelProvider {
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	public CellLabelProvider() {
-		super();
-	}
-
-	/**
-	 * Create a ViewerLabelProvider for the column at index
-	 * 
-	 * @param labelProvider
-	 *            The labelProvider to convert
-	 * @return ViewerLabelProvider
-	 */
-	/* package */static CellLabelProvider createViewerLabelProvider(
-			ColumnViewer viewer, IBaseLabelProvider labelProvider) {
-
-		boolean noColumnTreeViewer = viewer instanceof AbstractTreeViewer && viewer
-				.doGetColumnCount() == 0;
-
-		if (!noColumnTreeViewer
-				&& (labelProvider instanceof ITableLabelProvider
-						|| labelProvider instanceof ITableColorProvider || labelProvider instanceof ITableFontProvider))
-			return new TableColumnViewerLabelProvider(labelProvider);
-		if (labelProvider instanceof CellLabelProvider)
-			return (CellLabelProvider) labelProvider;
-		return new WrappedViewerLabelProvider(labelProvider);
-
-	}
-
-	/**
-	 * Get the image displayed in the tool tip for object.
-	 * 
-	 * <p>
-	 * <b>If {@link #getToolTipText(Object)} and
-	 * {@link #getToolTipImage(Object)} both return <code>null</code> the
-	 * control is set back to standard behavior</b>
-	 * </p>
-	 * 
-	 * @param object
-	 *            the element for which the tool tip is shown
-	 * @return {@link Image} or <code>null</code> if there is not image.
-	 */
-
-	public Image getToolTipImage(Object object) {
-		return null;
-	}
-
-	/**
-	 * Get the text displayed in the tool tip for object.
-	 * 
-	 * <p>
-	 * <b>If {@link #getToolTipText(Object)} and
-	 * {@link #getToolTipImage(Object)} both return <code>null</code> the
-	 * control is set back to standard behavior</b>
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element for which the tool tip is shown
-	 * @return the {@link String} or <code>null</code> if there is not text to
-	 *         display
-	 */
-	public String getToolTipText(Object element) {
-		return null;
-	}
-
-	/**
-	 * Return the background color used for the tool tip
-	 * 
-	 * @param object
-	 *            the {@link Object} for which the tool tip is shown
-	 * 
-	 * @return the {@link Color} used or <code>null</code> if you want to use
-	 *         the default color {@link SWT#COLOR_INFO_BACKGROUND}
-	 * @see SWT#COLOR_INFO_BACKGROUND
-	 */
-	public Color getToolTipBackgroundColor(Object object) {
-		return null;
-	}
-
-	/**
-	 * The foreground color used to display the the text in the tool tip
-	 * 
-	 * @param object
-	 *            the {@link Object} for which the tool tip is shown
-	 * @return the {@link Color} used or <code>null</code> if you want to use
-	 *         the default color {@link SWT#COLOR_INFO_FOREGROUND}
-	 * @see SWT#COLOR_INFO_FOREGROUND
-	 */
-	public Color getToolTipForegroundColor(Object object) {
-		return null;
-	}
-
-	/**
-	 * Get the {@link Font} used to display the tool tip
-	 * 
-	 * @param object
-	 *            the element for which the tool tip is shown
-	 * @return {@link Font} or <code>null</code> if the default font is to be
-	 *         used.
-	 */
-	public Font getToolTipFont(Object object) {
-		return null;
-	}
-
-	/**
-	 * Return the amount of pixels in x and y direction you want the tool tip to
-	 * pop up from the mouse pointer. The default shift is 10px right and 0px
-	 * below your mouse cursor. Be aware of the fact that you should at least
-	 * position the tool tip 1px right to your mouse cursor else click events
-	 * may not get propagated properly.
-	 * 
-	 * @param object
-	 *            the element for which the tool tip is shown
-	 * @return {@link Point} to shift of the tool tip or <code>null</code> if the
-	 *         default shift should be used.
-	 */
-	public Point getToolTipShift(Object object) {
-		return null;
-	}
-
-	/**
-	 * Return whether or not to use the native tool tip. If you switch to native
-	 * tool tips only the value from {@link #getToolTipText(Object)} is used all
-	 * other features from custom tool tips are not supported.
-	 * 
-	 * <p>
-	 * To reset the control to native behavior you should return
-	 * <code>true</code> from this method and <code>null</code> from
-	 * {@link #getToolTipText(Object)} or <code>null</code> from
-	 * {@link #getToolTipText(Object)} and {@link #getToolTipImage(Object)} at
-	 * the same time
-	 * </p>
-	 * 
-	 * @param object
-	 *            the {@link Object} for which the tool tip is shown
-	 * @return <code>true</code> if native tool tips should be used
-	 */
-	public boolean useNativeToolTip(Object object) {
-		return false;
-	}
-
-	/**
-	 * The time in milliseconds the tool tip is shown for.
-	 * 
-	 * @param object
-	 *            the {@link Object} for which the tool tip is shown
-	 * @return time in milliseconds the tool tip is shown for
-	 */
-	public int getToolTipTimeDisplayed(Object object) {
-		return 0;
-	}
-
-	/**
-	 * The time in milliseconds until the tool tip is displayed.
-	 * 
-	 * @param object
-	 *            the {@link Object} for which the tool tip is shown
-	 * @return time in milliseconds until the tool tip is displayed
-	 */
-	public int getToolTipDisplayDelayTime(Object object) {
-		return 0;
-	}
-
-	/**
-	 * The {@link SWT} style used to create the {@link CLabel} (see there for
-	 * supported styles). By default {@link SWT#SHADOW_NONE} is used.
-	 * 
-	 * @param object
-	 *            the element for which the tool tip is shown
-	 * @return the style used to create the label
-	 * @see CLabel
-	 */
-	public int getToolTipStyle(Object object) {
-		return SWT.SHADOW_NONE;
-	}
-
-	/**
-	 * Update the label for cell.
-	 * 
-	 * @param cell
-	 *            {@link ViewerCell}
-	 */
-	public abstract void update(ViewerCell cell);
-	
-	/**
-	 * Initialize this label provider for use with the given column viewer for
-	 * the given column. Subclasses may extend but should call the super
-	 * implementation (which at this time is empty but may be changed in the
-	 * future).
-	 * 
-	 * @param viewer
-	 *            the viewer
-	 * @param column
-	 *            the column, or <code>null</code> if a column is not
-	 *            available.
-	 * 
-	 * @since 3.4
-	 */
-	protected void initialize(ColumnViewer viewer, ViewerColumn column) {
-	}
-
-	/**
-	 * Dispose of this label provider which was used with the given column
-	 * viewer and column. Subclasses may extend but should call the super
-	 * implementation (which calls {@link #dispose()}).
-	 * 
-	 * @param viewer
-	 *            the viewer
-	 * @param column
-	 *            the column, or <code>null</code> if a column is not
-	 *            available.
-	 * 
-	 * @since 3.4
-	 */
-	public void dispose(ColumnViewer viewer, ViewerColumn column) {
-		dispose();
-	}
-	
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellNavigationStrategy.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellNavigationStrategy.java
deleted file mode 100644
index b1d562f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CellNavigationStrategy.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * This class implementation the strategy how the table is navigated using the
- * keyboard.
- * 
- * <p>
- * <b>Subclasses can implement their custom navigation algorithms</b>
- * </p>
- * 
- * @since 3.3
- * 
- */
-public class CellNavigationStrategy {
-	/**
-	 * is the given event an event which moves the selection to another cell
-	 * 
-	 * @param viewer
-	 *            the viewer we are working for
-	 * @param event
-	 *            the key event
-	 * @return <code>true</code> if a new cell is searched
-	 */
-	public boolean isNavigationEvent(ColumnViewer viewer, Event event) {
-		switch (event.keyCode) {
-		case SWT.ARROW_UP:
-		case SWT.ARROW_DOWN:
-		case SWT.ARROW_LEFT:
-		case SWT.ARROW_RIGHT:
-		case SWT.HOME:
-		case SWT.PAGE_DOWN:
-		case SWT.PAGE_UP:
-		case SWT.END:
-			return true;
-		default:
-			return false;
-		}
-	}
-
-	/**
-	 * @param viewer
-	 *            the viewer we are working for
-	 * @param cellToCollapse
-	 *            the cell to collapse
-	 * @param event
-	 *            the key event
-	 * @return <code>true</code> if this event triggers collapsing of a node
-	 */
-	public boolean isCollapseEvent(ColumnViewer viewer,
-			ViewerCell cellToCollapse, Event event) {
-		return false;
-	}
-
-	/**
-	 * @param viewer
-	 *            the viewer we are working for
-	 * @param cellToExpand
-	 *            the cell to expand
-	 * @param event
-	 *            the key event
-	 * @return <code>true</code> if this event triggers expanding of a node
-	 */
-	public boolean isExpandEvent(ColumnViewer viewer, ViewerCell cellToExpand,
-			Event event) {
-		return false;
-	}
-
-	/**
-	 * @param viewer
-	 *            the viewer working for
-	 * @param cellToExpand
-	 *            the cell the user wants to expand
-	 * @param event
-	 *            the event triggering the expansion
-	 */
-	public void expand(ColumnViewer viewer, ViewerCell cellToExpand, Event event) {
-
-	}
-
-	/**
-	 * @param viewer
-	 *            the viewer working for
-	 * @param cellToCollapse
-	 *            the cell the user wants to collapse
-	 * @param event
-	 *            the event triggering the expansion
-	 */
-	public void collapse(ColumnViewer viewer, ViewerCell cellToCollapse,
-			Event event) {
-
-	}
-
-	/**
-	 * @param viewer
-	 *            the viewer we are working for
-	 * @param currentSelectedCell
-	 *            the cell currently selected
-	 * @param event
-	 *            the key event
-	 * @return the cell which is highlighted next or <code>null</code> if the
-	 *         default implementation is taken. E.g. it's fairly impossible to
-	 *         react on PAGE_DOWN requests
-	 */
-	public ViewerCell findSelectedCell(ColumnViewer viewer,
-			ViewerCell currentSelectedCell, Event event) {
-
-		switch (event.keyCode) {
-		case SWT.ARROW_UP:
-			if (currentSelectedCell != null) {
-				return currentSelectedCell.getNeighbor(ViewerCell.ABOVE, false);
-			}
-			break;
-		case SWT.ARROW_DOWN:
-			if (currentSelectedCell != null) {
-				return currentSelectedCell.getNeighbor(ViewerCell.BELOW, false);
-			}
-			break;
-		case SWT.ARROW_LEFT:
-			if (currentSelectedCell != null) {
-				return currentSelectedCell.getNeighbor(ViewerCell.LEFT, true);
-			}
-			break;
-		case SWT.ARROW_RIGHT:
-			if (currentSelectedCell != null) {
-				return currentSelectedCell.getNeighbor(ViewerCell.RIGHT, true);
-			}
-			break;
-		}
-
-		return null;
-	}
-
-	/**
-	 * This method is consulted to decide whether an event has to be canceled or
-	 * not. By default events who collapse/expand tree-nodes are canceled
-	 * 
-	 * @param viewer
-	 *            the viewer working for
-	 * @param event
-	 *            the event
-	 * @return <code>true</code> if the event has to be canceled
-	 */
-	public boolean shouldCancelEvent(ColumnViewer viewer, Event event) {
-		return event.keyCode == SWT.ARROW_LEFT
-				|| event.keyCode == SWT.ARROW_RIGHT;
-	}
-
-	/**
-	 * This method is called by the framework to initialize this navigation
-	 * strategy object. Subclasses may extend.
-	 */
-	protected void init() {
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckStateChangedEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckStateChangedEvent.java
deleted file mode 100644
index a916588..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckStateChangedEvent.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-/**
- * Event object describing a change to the checked state
- * of a viewer element.
- *
- * @see ICheckStateListener
- */
-public class CheckStateChangedEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3256443603340244789L;
-
-    /**
-     * The viewer element.
-     */
-    private Object element;
-
-    /**
-     * The checked state.
-     */
-    private boolean state;
-
-    /**
-     * Creates a new event for the given source, element, and checked state.
-     *
-     * @param source the source
-     * @param element the element
-     * @param state the checked state
-     */
-    public CheckStateChangedEvent(ICheckable source, Object element,
-            boolean state) {
-        super(source);
-        this.element = element;
-        this.state = state;
-    }
-
-    /**
-     * Returns the checkable that is the source of this event.
-     *
-     * @return the originating checkable
-     */
-    public ICheckable getCheckable() {
-        return (ICheckable) source;
-    }
-
-    /**
-     * Returns the checked state of the element.
-     *
-     * @return the checked state
-     */
-    public boolean getChecked() {
-        return state;
-    }
-
-    /**
-     * Returns the element whose check state changed.
-     *
-     * @return the element
-     */
-    public Object getElement() {
-        return element;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxCellEditor.java
deleted file mode 100644
index 2b32402..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxCellEditor.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A cell editor that manages a checkbox.
- * The cell editor's value is a boolean.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Note that this implementation simply fakes it and does does not create
- * any new controls. The mere activation of this editor means that the value
- * of the check box is being toggled by the end users; the listener method
- * <code>applyEditorValue</code> is immediately called to signal the change.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class CheckboxCellEditor extends CellEditor {
-
-    /**
-     * The checkbox value.
-     */
-    /* package */
-    boolean value = false;
-
-    /**
-     * Default CheckboxCellEditor style
-     */
-    private static final int defaultStyle = SWT.NONE;
-
-    /**
-     * Creates a new checkbox cell editor with no control
-     * @since 2.1
-     */
-    public CheckboxCellEditor() {
-        setStyle(defaultStyle);
-    }
-
-    /**
-     * Creates a new checkbox cell editor parented under the given control.
-     * The cell editor value is a boolean value, which is initially <code>false</code>.
-     * Initially, the cell editor has no cell validator.
-     *
-     * @param parent the parent control
-     */
-    public CheckboxCellEditor(Composite parent) {
-        this(parent, defaultStyle);
-    }
-
-    /**
-     * Creates a new checkbox cell editor parented under the given control.
-     * The cell editor value is a boolean value, which is initially <code>false</code>.
-     * Initially, the cell editor has no cell validator.
-     *
-     * @param parent the parent control
-     * @param style the style bits
-     * @since 2.1
-     */
-    public CheckboxCellEditor(Composite parent, int style) {
-        super(parent, style);
-    }
-
-    /**
-     * The <code>CheckboxCellEditor</code> implementation of
-     * this <code>CellEditor</code> framework method simulates
-     * the toggling of the checkbox control and notifies
-     * listeners with <code>ICellEditorListener.applyEditorValue</code>.
-     */
-    public void activate() {
-        value = !value;
-        fireApplyEditorValue();
-    }
-
-    /**
-     * The <code>CheckboxCellEditor</code> implementation of
-     * this <code>CellEditor</code> framework method does
-     * nothing and returns <code>null</code>.
-     */
-    protected Control createControl(Composite parent) {
-        return null;
-    }
-
-    /**
-     * The <code>CheckboxCellEditor</code> implementation of
-     * this <code>CellEditor</code> framework method returns
-     * the checkbox setting wrapped as a <code>Boolean</code>.
-     *
-     * @return the Boolean checkbox value
-     */
-    protected Object doGetValue() {
-        return value ? Boolean.TRUE : Boolean.FALSE;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    protected void doSetFocus() {
-        // Ignore
-    }
-
-    /**
-     * The <code>CheckboxCellEditor</code> implementation of
-     * this <code>CellEditor</code> framework method accepts
-     * a value wrapped as a <code>Boolean</code>.
-     *
-     * @param value a Boolean value
-     */
-    protected void doSetValue(Object value) {
-        Assert.isTrue(value instanceof Boolean);
-        this.value = ((Boolean) value).booleanValue();
-    }
-
-    public void activate(ColumnViewerEditorActivationEvent activationEvent) {
-    	if (activationEvent.eventType != ColumnViewerEditorActivationEvent.TRAVERSAL) {
-    		super.activate(activationEvent);
-    	}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTableViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTableViewer.java
deleted file mode 100644
index 12d22ff..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTableViewer.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A concrete viewer based on an SWT <code>Table</code>
- * control with checkboxes on each node.
- * <p>
- * This class is not intended to be subclassed outside the viewer framework. 
- * It is designed to be instantiated with a pre-existing SWT table control and configured
- * with a domain-specific content provider, label provider, element filter (optional),
- * and element sorter (optional).
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class CheckboxTableViewer extends TableViewer implements ICheckable {
-
-    /**
-     * List of check state listeners (element type: <code>ICheckStateListener</code>).
-     */
-    private ListenerList checkStateListeners = new ListenerList();
-
-    /**
-     * Creates a table viewer on a newly-created table control under the given parent.
-     * The table control is created using the SWT style bits: 
-     * <code>SWT.CHECK</code> and <code>SWT.BORDER</code>.
-     * The table has one column.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     * <p>
-     * This is equivalent to calling <code>new CheckboxTableViewer(parent, SWT.BORDER)</code>.
-     * See that constructor for more details.
-     * </p>
-     *
-     * @param parent the parent control
-     * 
-     * @deprecated use newCheckList(Composite, int) or new CheckboxTableViewer(Table)
-     *   instead (see below for details)
-     */
-    public CheckboxTableViewer(Composite parent) {
-        this(parent, SWT.BORDER);
-    }
-
-    /**
-     * Creates a table viewer on a newly-created table control under the given parent.
-     * The table control is created using the given SWT style bits, plus the 
-     * <code>SWT.CHECK</code> style bit.
-     * The table has one column. 
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     * <p>
-     * This also adds a <code>TableColumn</code> for the single column, 
-     * and sets a <code>TableLayout</code> on the table which sizes the column to fill 
-     * the table for its initial sizing, but does nothing on subsequent resizes.
-     * </p>
-     * <p>
-     * If the caller just needs to show a single column with no header,
-     * it is preferable to use the <code>newCheckList</code> factory method instead,
-     * since SWT properly handles the initial sizing and subsequent resizes in this case.
-     * </p>
-     * <p>
-     * If the caller adds its own columns, uses <code>Table.setHeadersVisible(true)</code>, 
-     * or needs to handle dynamic resizing of the table, it is recommended to  
-     * create the <code>Table</code> itself, specifying the <code>SWT.CHECK</code> style bit 
-     * (along with any other style bits needed), and use <code>new CheckboxTableViewer(Table)</code> 
-     * rather than this constructor.
-     * </p>
-     * 
-     * @param parent the parent control
-     * @param style SWT style bits
-     * 
-     * @deprecated use newCheckList(Composite, int) or new CheckboxTableViewer(Table) 
-     *   instead (see above for details)
-     */
-    public CheckboxTableViewer(Composite parent, int style) {
-        this(createTable(parent, style));
-    }
-
-    /**
-     * Creates a table viewer on a newly-created table control under the given parent.
-     * The table control is created using the given SWT style bits, plus the 
-     * <code>SWT.CHECK</code> style bit.
-     * The table shows its contents in a single column, with no header.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     * <p>
-     * No <code>TableColumn</code> is added. SWT does not require a 
-     * <code>TableColumn</code> if showing only a single column with no header.
-     * SWT correctly handles the initial sizing and subsequent resizes in this case.
-     *
-     * @param parent the parent control
-     * @param style SWT style bits
-     * 
-     * @since 2.0
-     * @return CheckboxTableViewer
-     */
-    public static CheckboxTableViewer newCheckList(Composite parent, int style) {
-        Table table = new Table(parent, SWT.CHECK | style);
-        return new CheckboxTableViewer(table);
-    }
-
-    /**
-     * Creates a table viewer on the given table control.
-     * The <code>SWT.CHECK</code> style bit must be set on the given table control.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param table the table control
-     */
-    public CheckboxTableViewer(Table table) {
-        super(table);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public void addCheckStateListener(ICheckStateListener listener) {
-        checkStateListeners.add(listener);
-    }
-
-    /**
-     * Creates a new table control with one column.
-     *
-     * @param parent the parent control
-     * @param style style bits
-     * @return a new table control
-     */
-    protected static Table createTable(Composite parent, int style) {
-        Table table = new Table(parent, SWT.CHECK | style);
-
-        // Although this table column is not needed, and can cause resize problems,
-        // it can't be removed since this would be a breaking change against R1.0.
-        // See bug 6643 for more details.
-        new TableColumn(table, SWT.NONE);
-        TableLayout layout = new TableLayout();
-        layout.addColumnData(new ColumnWeightData(100));
-        table.setLayout(layout);
-
-        return table;
-    }
-
-    /**
-     * Notifies any check state listeners that a check state changed  has been received.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param event a check state changed event
-     *
-     * @see ICheckStateListener#checkStateChanged
-     */
-    private void fireCheckStateChanged(final CheckStateChangedEvent event) {
-        Object[] array = checkStateListeners.getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final ICheckStateListener l = (ICheckStateListener) array[i];
-            SafeRunnable.run(new SafeRunnable() {
-                public void run() {
-                    l.checkStateChanged(event);
-                }
-            });
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public boolean getChecked(Object element) {
-        Widget widget = findItem(element);
-        if (widget instanceof TableItem) {
-            return ((TableItem) widget).getChecked();
-        }
-        return false;
-    }
-
-    /**
-     * Returns a list of elements corresponding to checked table items in this
-     * viewer.
-     * <p>
-     * This method is typically used when preserving the interesting
-     * state of a viewer; <code>setCheckedElements</code> is used during the restore.
-     * </p>
-     *
-     * @return the array of checked elements
-     * @see #setCheckedElements
-     */
-    public Object[] getCheckedElements() {
-        TableItem[] children = getTable().getItems();
-        ArrayList v = new ArrayList(children.length);
-        for (int i = 0; i < children.length; i++) {
-            TableItem item = children[i];
-            if (item.getChecked()) {
-				v.add(item.getData());
-			}
-        }
-        return v.toArray();
-    }
-
-    /**
-     * Returns the grayed state of the given element.
-     *
-     * @param element the element
-     * @return <code>true</code> if the element is grayed,
-     *   and <code>false</code> if not grayed
-     */
-    public boolean getGrayed(Object element) {
-        Widget widget = findItem(element);
-        if (widget instanceof TableItem) {
-            return ((TableItem) widget).getGrayed();
-        }
-        return false;
-    }
-
-    /**
-     * Returns a list of elements corresponding to grayed nodes in this
-     * viewer.
-     * <p>
-     * This method is typically used when preserving the interesting
-     * state of a viewer; <code>setGrayedElements</code> is used during the restore.
-     * </p>
-     *
-     * @return the array of grayed elements
-     * @see #setGrayedElements
-     */
-    public Object[] getGrayedElements() {
-        TableItem[] children = getTable().getItems();
-        List v = new ArrayList(children.length);
-        for (int i = 0; i < children.length; i++) {
-            TableItem item = children[i];
-            if (item.getGrayed()) {
-				v.add(item.getData());
-			}
-        }
-        return v.toArray();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    public void handleSelect(SelectionEvent event) {
-        if (event.detail == SWT.CHECK) {
-            super.handleSelect(event); // this will change the current selection
-
-            TableItem item = (TableItem) event.item;
-            Object data = item.getData();
-            if (data != null) {
-                fireCheckStateChanged(new CheckStateChangedEvent(this, data,
-                        item.getChecked()));
-            }
-        } else {
-			super.handleSelect(event);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Viewer.
-     */
-    protected void preservingSelection(Runnable updateCode) {
-
-        TableItem[] children = getTable().getItems();
-        CustomHashtable checked = newHashtable(children.length * 2 + 1);
-        CustomHashtable grayed = newHashtable(children.length * 2 + 1);
-
-        for (int i = 0; i < children.length; i++) {
-            TableItem item = children[i];
-            Object data = item.getData();
-            if (data != null) {
-                if (item.getChecked()) {
-					checked.put(data, data);
-				}
-                if (item.getGrayed()) {
-					grayed.put(data, data);
-				}
-            }
-        }
-
-        super.preservingSelection(updateCode);
-
-        children = getTable().getItems();
-        for (int i = 0; i < children.length; i++) {
-            TableItem item = children[i];
-            Object data = item.getData();
-            if (data != null) {
-                item.setChecked(checked.containsKey(data));
-                item.setGrayed(grayed.containsKey(data));
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public void removeCheckStateListener(ICheckStateListener listener) {
-        checkStateListeners.remove(listener);
-    }
-
-    /**
-     * Sets to the given value the checked state for all elements in this viewer.
-     * Does not fire events to check state listeners.
-     *
-     * @param state <code>true</code> if the element should be checked,
-     *  and <code>false</code> if it should be unchecked
-     */
-    public void setAllChecked(boolean state) {
-        TableItem[] children = getTable().getItems();
-        for (int i = 0; i < children.length; i++) {
-            TableItem item = children[i];
-            item.setChecked(state);
-        }
-    }
-
-    /**
-     * Sets to the given value the grayed state for all elements in this viewer.
-     *
-     * @param state <code>true</code> if the element should be grayed,
-     *  and <code>false</code> if it should be ungrayed
-     */
-    public void setAllGrayed(boolean state) {
-        TableItem[] children = getTable().getItems();
-        for (int i = 0; i < children.length; i++) {
-            TableItem item = children[i];
-            item.setGrayed(state);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public boolean setChecked(Object element, boolean state) {
-        Assert.isNotNull(element);
-        Widget widget = findItem(element);
-        if (widget instanceof TableItem) {
-            ((TableItem) widget).setChecked(state);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets which nodes are checked in this viewer.
-     * The given list contains the elements that are to be checked;
-     * all other nodes are to be unchecked.
-     * Does not fire events to check state listeners.
-     * <p>
-     * This method is typically used when restoring the interesting
-     * state of a viewer captured by an earlier call to <code>getCheckedElements</code>.
-     * </p>
-     *
-     * @param elements the list of checked elements (element type: <code>Object</code>)
-     * @see #getCheckedElements
-     */
-    public void setCheckedElements(Object[] elements) {
-        assertElementsNotNull(elements);
-        CustomHashtable set = newHashtable(elements.length * 2 + 1);
-        for (int i = 0; i < elements.length; ++i) {
-            set.put(elements[i], elements[i]);
-        }
-        TableItem[] items = getTable().getItems();
-        for (int i = 0; i < items.length; ++i) {
-            TableItem item = items[i];
-            Object element = item.getData();
-            if (element != null) {
-                boolean check = set.containsKey(element);
-                // only set if different, to avoid flicker
-                if (item.getChecked() != check) {
-                    item.setChecked(check);
-                }
-            }
-        }
-    }
-
-    /**
-     * Sets the grayed state for the given element in this viewer.
-     *
-     * @param element the element
-     * @param state <code>true</code> if the item should be grayed,
-     *  and <code>false</code> if it should be ungrayed
-     * @return <code>true</code> if the element is visible and the gray
-     *  state could be set, and <code>false</code> otherwise
-     */
-    public boolean setGrayed(Object element, boolean state) {
-        Assert.isNotNull(element);
-        Widget widget = findItem(element);
-        if (widget instanceof TableItem) {
-            ((TableItem) widget).setGrayed(state);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets which nodes are grayed in this viewer.
-     * The given list contains the elements that are to be grayed;
-     * all other nodes are to be ungrayed.
-     * <p>
-     * This method is typically used when restoring the interesting
-     * state of a viewer captured by an earlier call to <code>getGrayedElements</code>.
-     * </p>
-     *
-     * @param elements the array of grayed elements
-     *
-     * @see #getGrayedElements
-     */
-    public void setGrayedElements(Object[] elements) {
-        assertElementsNotNull(elements);
-        CustomHashtable set = newHashtable(elements.length * 2 + 1);
-        for (int i = 0; i < elements.length; ++i) {
-            set.put(elements[i], elements[i]);
-        }
-        TableItem[] items = getTable().getItems();
-        for (int i = 0; i < items.length; ++i) {
-            TableItem item = items[i];
-            Object element = item.getData();
-            if (element != null) {
-                boolean gray = set.containsKey(element);
-                // only set if different, to avoid flicker
-                if (item.getGrayed() != gray) {
-                    item.setGrayed(gray);
-                }
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTreeViewer.java
deleted file mode 100644
index 7853cc6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CheckboxTreeViewer.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A concrete tree-structured viewer based on an SWT <code>Tree</code>
- * control with checkboxes on each node.
- * <p>
- * This class is not intended to be subclassed outside the viewer framework. 
- * It is designed to be instantiated with a pre-existing SWT tree control and configured
- * with a domain-specific content provider, label provider, element filter (optional),
- * and element sorter (optional).
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class CheckboxTreeViewer extends TreeViewer implements ICheckable {
-
-    /**
-     * List of check state listeners (element type: <code>ICheckStateListener</code>).
-     */
-    private ListenerList checkStateListeners = new ListenerList();
-
-    /**
-     * Last item clicked on, or <code>null</code> if none.
-     */
-    private TreeItem lastClickedItem = null;
-
-    /**
-     * Creates a tree viewer on a newly-created tree control under the given parent.
-     * The tree control is created using the SWT style bits: <code>CHECK</code> and <code>BORDER</code>.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param parent the parent control
-     */
-    public CheckboxTreeViewer(Composite parent) {
-        this(parent, SWT.BORDER);
-    }
-
-    /**
-     * Creates a tree viewer on a newly-created tree control under the given parent.
-     * The tree control is created using the given SWT style bits, plus the <code>CHECK</code> style bit.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param parent the parent control
-     * @param style the SWT style bits
-     */
-    public CheckboxTreeViewer(Composite parent, int style) {
-        this(new Tree(parent, SWT.CHECK | style));
-    }
-
-    /**
-     * Creates a tree viewer on the given tree control.
-     * The <code>SWT.CHECK</code> style bit must be set on the given tree control.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param tree the tree control
-     */
-    public CheckboxTreeViewer(Tree tree) {
-        super(tree);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public void addCheckStateListener(ICheckStateListener listener) {
-        checkStateListeners.add(listener);
-    }
-
-    /**
-     * Applies the checked and grayed states of the given widget and its
-     * descendents.
-     *
-     * @param checked a set of elements (element type: <code>Object</code>) 
-     * @param grayed a set of elements (element type: <code>Object</code>) 
-     * @param widget the widget
-     */
-    private void applyState(CustomHashtable checked, CustomHashtable grayed,
-            Widget widget) {
-        Item[] items = getChildren(widget);
-        for (int i = 0; i < items.length; i++) {
-            Item item = items[i];
-            if (item instanceof TreeItem) {
-                Object data = item.getData();
-                if (data != null) {
-                    TreeItem ti = (TreeItem) item;
-                    ti.setChecked(checked.containsKey(data));
-                    ti.setGrayed(grayed.containsKey(data));
-                }
-            }
-            applyState(checked, grayed, item);
-        }
-    }
-
-    /**
-     * Notifies any check state listeners that the check state of an element has changed.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param event a check state changed event
-     *
-     * @see ICheckStateListener#checkStateChanged
-     */
-    protected void fireCheckStateChanged(final CheckStateChangedEvent event) {
-        Object[] array = checkStateListeners.getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final ICheckStateListener l = (ICheckStateListener) array[i];
-            SafeRunnable.run(new SafeRunnable() {
-                public void run() {
-                    l.checkStateChanged(event);
-                }
-            });
-        }
-
-    }
-
-    /**
-     * Gathers the checked and grayed states of the given widget and its
-     * descendents.
-     *
-     * @param checked a writable set of elements (element type: <code>Object</code>) 
-     * @param grayed a writable set of elements (element type: <code>Object</code>) 
-     * @param widget the widget
-     */
-    private void gatherState(CustomHashtable checked, CustomHashtable grayed,
-            Widget widget) {
-        Item[] items = getChildren(widget);
-        for (int i = 0; i < items.length; i++) {
-            Item item = items[i];
-            if (item instanceof TreeItem) {
-                Object data = item.getData();
-                if (data != null) {
-                    TreeItem ti = (TreeItem) item;
-                    if (ti.getChecked()) {
-						checked.put(data, data);
-					}
-                    if (ti.getGrayed()) {
-						grayed.put(data, data);
-					}
-                }
-            }
-            gatherState(checked, grayed, item);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public boolean getChecked(Object element) {
-        Widget widget = findItem(element);
-        if (widget instanceof TreeItem) {
-			return ((TreeItem) widget).getChecked();
-		}
-        return false;
-    }
-
-    /**
-     * Returns a list of checked elements in this viewer's tree, 
-     * including currently hidden ones that are marked as
-     * checked but are under a collapsed ancestor.
-     * <p>
-     * This method is typically used when preserving the interesting
-     * state of a viewer; <code>setCheckedElements</code> is used during the restore.
-     * </p>
-     *
-     * @return the array of checked elements
-     *
-     * @see #setCheckedElements
-     */
-    public Object[] getCheckedElements() {
-        ArrayList v = new ArrayList();
-        Control tree = getControl();
-        internalCollectChecked(v, tree);
-        return v.toArray();
-    }
-
-    /**
-     * Returns the grayed state of the given element.
-     *
-     * @param element the element
-     * @return <code>true</code> if the element is grayed,
-     *   and <code>false</code> if not grayed
-     */
-    public boolean getGrayed(Object element) {
-        Widget widget = findItem(element);
-        if (widget instanceof TreeItem) {
-            return ((TreeItem) widget).getGrayed();
-        }
-        return false;
-    }
-
-    /**
-     * Returns a list of grayed elements in this viewer's tree, 
-     * including currently hidden ones that are marked as
-     * grayed but are under a collapsed ancestor.
-     * <p>
-     * This method is typically used when preserving the interesting
-     * state of a viewer; <code>setGrayedElements</code> is used during the restore.
-     * </p>
-     *
-     * @return the array of grayed elements
-     *
-     * @see #setGrayedElements
-     */
-    public Object[] getGrayedElements() {
-        List result = new ArrayList();
-        internalCollectGrayed(result, getControl());
-        return result.toArray();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    protected void handleDoubleSelect(SelectionEvent event) {
-
-        if (lastClickedItem != null) {
-            TreeItem item = lastClickedItem;
-            Object data = item.getData();
-            if (data != null) {
-                boolean state = item.getChecked();
-                setChecked(data, !state);
-                fireCheckStateChanged(new CheckStateChangedEvent(this, data,
-                        !state));
-            }
-            lastClickedItem = null;
-        } else {
-			super.handleDoubleSelect(event);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on StructuredViewer.
-     */
-    protected void handleSelect(SelectionEvent event) {
-
-        lastClickedItem = null;
-        if (event.detail == SWT.CHECK) {
-            TreeItem item = (TreeItem) event.item;
-            lastClickedItem = item;
-            super.handleSelect(event);
-
-            Object data = item.getData();
-            if (data != null) {
-                fireCheckStateChanged(new CheckStateChangedEvent(this, data,
-                        item.getChecked()));
-            }
-        } else {
-			super.handleSelect(event);
-		}
-    }
-
-    /**
-     * Gathers the checked states of the given widget and its
-     * descendents, following a pre-order traversal of the tree.
-     *
-     * @param result a writable list of elements (element type: <code>Object</code>)
-     * @param widget the widget
-     */
-    private void internalCollectChecked(List result, Widget widget) {
-        Item[] items = getChildren(widget);
-        for (int i = 0; i < items.length; i++) {
-            Item item = items[i];
-            if (item instanceof TreeItem && ((TreeItem) item).getChecked()) {
-                Object data = item.getData();
-                if (data != null) {
-					result.add(data);
-				}
-            }
-            internalCollectChecked(result, item);
-        }
-    }
-
-    /**
-     * Gathers the grayed states of the given widget and its
-     * descendents, following a pre-order traversal of the tree.
-     *
-     * @param result a writable list of elements (element type: <code>Object</code>)
-     * @param widget the widget
-     */
-    private void internalCollectGrayed(List result, Widget widget) {
-        Item[] items = getChildren(widget);
-        for (int i = 0; i < items.length; i++) {
-            Item item = items[i];
-            if (item instanceof TreeItem && ((TreeItem) item).getGrayed()) {
-                Object data = item.getData();
-                if (data != null) {
-					result.add(data);
-				}
-            }
-            internalCollectGrayed(result, item);
-        }
-    }
-
-    /**
-     * Sets the checked state of all items to correspond to the given set of checked elements.
-     *
-     * @param checkedElements the set (element type: <code>Object</code>) of elements which are checked
-     * @param widget the widget
-     */
-    private void internalSetChecked(CustomHashtable checkedElements,
-            Widget widget) {
-        Item[] items = getChildren(widget);
-        for (int i = 0; i < items.length; i++) {
-            TreeItem item = (TreeItem) items[i];
-            Object data = item.getData();
-            if (data != null) {
-                boolean checked = checkedElements.containsKey(data);
-                if (checked != item.getChecked()) {
-                    item.setChecked(checked);
-                }
-            }
-            internalSetChecked(checkedElements, item);
-        }
-    }
-
-    /**
-     * Sets the grayed state of all items to correspond to the given set of grayed elements.
-     *
-     * @param grayedElements the set (element type: <code>Object</code>) of elements which are grayed
-     * @param widget the widget
-     */
-    private void internalSetGrayed(CustomHashtable grayedElements, Widget widget) {
-        Item[] items = getChildren(widget);
-        for (int i = 0; i < items.length; i++) {
-            TreeItem item = (TreeItem) items[i];
-            Object data = item.getData();
-            if (data != null) {
-                boolean grayed = grayedElements.containsKey(data);
-                if (grayed != item.getGrayed()) {
-                    item.setGrayed(grayed);
-                }
-            }
-            internalSetGrayed(grayedElements, item);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Viewer.
-     */
-    protected void preservingSelection(Runnable updateCode) {
-
-        int n = getItemCount(getControl());
-        CustomHashtable checkedNodes = newHashtable(n * 2 + 1);
-        CustomHashtable grayedNodes = newHashtable(n * 2 + 1);
-
-        gatherState(checkedNodes, grayedNodes, getControl());
-
-        super.preservingSelection(updateCode);
-
-        applyState(checkedNodes, grayedNodes, getControl());
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public void removeCheckStateListener(ICheckStateListener listener) {
-        checkStateListeners.remove(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ICheckable.
-     */
-    public boolean setChecked(Object element, boolean state) {
-        Assert.isNotNull(element);
-        Widget widget = internalExpand(element, false);
-        if (widget instanceof TreeItem) {
-            ((TreeItem) widget).setChecked(state);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets the checked state for the children of the given item.
-     *
-     * @param item the item
-     * @param state <code>true</code> if the item should be checked,
-     *  and <code>false</code> if it should be unchecked
-     */
-    private void setCheckedChildren(Item item, boolean state) {
-        createChildren(item);
-        Item[] items = getChildren(item);
-        if (items != null) {
-            for (int i = 0; i < items.length; i++) {
-                Item it = items[i];
-                if (it.getData() != null && (it instanceof TreeItem)) {
-                    TreeItem treeItem = (TreeItem) it;
-                    treeItem.setChecked(state);
-                    setCheckedChildren(treeItem, state);
-                }
-            }
-        }
-    }
-
-    /**
-     * Sets which elements are checked in this viewer's tree.
-     * The given list contains the elements that are to be checked;
-     * all other elements are to be unchecked.
-     * Does not fire events to check state listeners.
-     * <p>
-     * This method is typically used when restoring the interesting
-     * state of a viewer captured by an earlier call to <code>getCheckedElements</code>.
-     * </p>
-     *
-     * @param elements the array of checked elements
-     * @see #getCheckedElements
-     */
-    public void setCheckedElements(Object[] elements) {
-        assertElementsNotNull(elements);
-        CustomHashtable checkedElements = newHashtable(elements.length * 2 + 1);
-        for (int i = 0; i < elements.length; ++i) {
-            Object element = elements[i];
-            // Ensure item exists for element
-            internalExpand(element, false);
-            checkedElements.put(element, element);
-        }
-        Control tree = getControl();
-        tree.setRedraw(false);
-        internalSetChecked(checkedElements, tree);
-        tree.setRedraw(true);
-    }
-
-    /**
-     * Sets the grayed state for the given element in this viewer.
-     *
-     * @param element the element
-     * @param state <code>true</code> if the item should be grayed,
-     *  and <code>false</code> if it should be ungrayed
-     * @return <code>true</code> if the gray state could be set, 
-     *  and <code>false</code> otherwise
-     */
-    public boolean setGrayed(Object element, boolean state) {
-        Assert.isNotNull(element);
-        Widget widget = internalExpand(element, false);
-        if (widget instanceof TreeItem) {
-            ((TreeItem) widget).setGrayed(state);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Check and gray the selection rather than calling both
-     * setGrayed and setChecked as an optimization.
-     * Does not fire events to check state listeners.
-     * @param element the item being checked
-     * @param state a boolean indicating selection or deselection
-     * @return boolean indicating success or failure.
-     */
-    public boolean setGrayChecked(Object element, boolean state) {
-        Assert.isNotNull(element);
-        Widget widget = internalExpand(element, false);
-        if (widget instanceof TreeItem) {
-            TreeItem item = (TreeItem) widget;
-            item.setChecked(state);
-            item.setGrayed(state);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets which elements are grayed in this viewer's tree.
-     * The given list contains the elements that are to be grayed;
-     * all other elements are to be ungrayed.
-     * <p>
-     * This method is typically used when restoring the interesting
-     * state of a viewer captured by an earlier call to <code>getGrayedElements</code>.
-     * </p>
-     *
-     * @param elements the array of grayed elements
-     *
-     * @see #getGrayedElements
-     */
-    public void setGrayedElements(Object[] elements) {
-        assertElementsNotNull(elements);
-        CustomHashtable grayedElements = newHashtable(elements.length * 2 + 1);
-        for (int i = 0; i < elements.length; ++i) {
-            Object element = elements[i];
-            // Ensure item exists for element
-            internalExpand(element, false);
-            grayedElements.put(element, element);
-        }
-        Control tree = getControl();
-        tree.setRedraw(false);
-        internalSetGrayed(grayedElements, tree);
-        tree.setRedraw(true);
-    }
-
-    /**
-     * Sets the grayed state for the given element and its parents
-     * in this viewer.
-     *
-     * @param element the element
-     * @param state <code>true</code> if the item should be grayed,
-     *  and <code>false</code> if it should be ungrayed
-     * @return <code>true</code> if the element is visible and the gray
-     *  state could be set, and <code>false</code> otherwise
-     * @see #setGrayed
-     */
-    public boolean setParentsGrayed(Object element, boolean state) {
-        Assert.isNotNull(element);
-        Widget widget = internalExpand(element, false);
-        if (widget instanceof TreeItem) {
-            TreeItem item = (TreeItem) widget;
-            item.setGrayed(state);
-            item = item.getParentItem();
-            while (item != null) {
-                item.setGrayed(state);
-                item = item.getParentItem();
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets the checked state for the given element and its visible
-     * children in this viewer.
-     * Assumes that the element has been expanded before. To enforce
-     * that the item is expanded, call <code>expandToLevel</code>
-     * for the element.
-     * Does not fire events to check state listeners.
-     *
-     * @param element the element
-     * @param state <code>true</code> if the item should be checked,
-     *  and <code>false</code> if it should be unchecked
-     * @return <code>true</code> if the checked state could be set, 
-     *  and <code>false</code> otherwise
-     */
-    public boolean setSubtreeChecked(Object element, boolean state) {
-        Widget widget = internalExpand(element, false);
-        if (widget instanceof TreeItem) {
-            TreeItem item = (TreeItem) widget;
-            item.setChecked(state);
-            setCheckedChildren(item, state);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets to the given value the checked state for all elements in this viewer.
-     * Does not fire events to check state listeners.
-     * Assumes that the element has been expanded before. To enforce
-     * that the item is expanded, call <code>expandToLevel</code>
-     * for the element.
-     *
-     * @param state <code>true</code> if the element should be checked,
-     *  and <code>false</code> if it should be unchecked
-     * @deprecated as this method only checks or unchecks visible items
-     * is is recommended that {@link #setSubtreeChecked(Object, boolean)}
-     * is used instead.
-     * @see #setSubtreeChecked(Object, boolean) 
-     *  
-     *  @since 3.2
-     */
-	public void setAllChecked(boolean state) {
-		setAllChecked(state,  getTree().getItems());
-		
-	}
-
-	/**
-	 * Set the checked state of the visible items and their children to state.
-	 * @param state
-	 * @param items
-	 * @deprecated
-	 * @see #setAllChecked(boolean)
-	 */
-	private void setAllChecked(boolean state, TreeItem[] items) {
-		for (int i = 0; i < items.length; i++) {
-			items[i].setChecked(state);			
-			TreeItem[] children = items[i].getItems();
-			setAllChecked(state, children);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColorCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColorCellEditor.java
deleted file mode 100644
index 2157349..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColorCellEditor.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.ColorDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Tree;
-
-/**
- * A cell editor that manages a color field.
- * The cell editor's value is the color (an SWT <code>RBG</code>).
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ColorCellEditor extends DialogCellEditor {
-
-    /**
-     * The default extent in pixels.
-     */
-    private static final int DEFAULT_EXTENT = 16;
-
-    /**
-     * Gap between between image and text in pixels.
-     */
-    private static final int GAP = 6;
-
-    /**
-     * The composite widget containing the color and RGB label widgets
-     */
-    private Composite composite;
-
-    /**
-     * The label widget showing the current color.
-     */
-    private Label colorLabel;
-
-    /**
-     * The label widget showing the RGB values.
-     */
-    private Label rgbLabel;
-
-    /**
-     * The image.
-     */
-    private Image image;
-
-    /**
-     * Internal class for laying out this cell editor.
-     */
-    private class ColorCellLayout extends Layout {
-        public Point computeSize(Composite editor, int wHint, int hHint,
-                boolean force) {
-            if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-            Point colorSize = colorLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                    force);
-            Point rgbSize = rgbLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                    force);
-            return new Point(colorSize.x + GAP + rgbSize.x, Math.max(
-                    colorSize.y, rgbSize.y));
-        }
-
-        public void layout(Composite editor, boolean force) {
-            Rectangle bounds = editor.getClientArea();
-            Point colorSize = colorLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                    force);
-            Point rgbSize = rgbLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                    force);
-            int ty = (bounds.height - rgbSize.y) / 2;
-            if (ty < 0) {
-				ty = 0;
-			}
-            colorLabel.setBounds(-1, 0, colorSize.x, colorSize.y);
-            rgbLabel.setBounds(colorSize.x + GAP - 1, ty, bounds.width
-                    - colorSize.x - GAP, bounds.height);
-        }
-    }
-
-    /**
-     * Creates a new color cell editor parented under the given control.
-     * The cell editor value is black (<code>RGB(0,0,0)</code>) initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    public ColorCellEditor(Composite parent) {
-        this(parent, SWT.NONE);
-    }
-
-    /**
-     * Creates a new color cell editor parented under the given control.
-     * The cell editor value is black (<code>RGB(0,0,0)</code>) initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     * @param style the style bits
-     * @since 2.1
-     */
-    public ColorCellEditor(Composite parent, int style) {
-        super(parent, style);
-        doSetValue(new RGB(0, 0, 0));
-    }
-
-    /**
-     * Creates and returns the color image data for the given control
-     * and RGB value. The image's size is either the control's item extent 
-     * or the cell editor's default extent, which is 16 pixels square.
-     *
-     * @param w the control
-     * @param color the color
-     */
-    private ImageData createColorImage(Control w, RGB color) {
-
-        GC gc = new GC(w);
-        FontMetrics fm = gc.getFontMetrics();
-        int size = fm.getAscent();
-        gc.dispose();
-
-        int indent = 6;
-        int extent = DEFAULT_EXTENT;
-        if (w instanceof Table) {
-			extent = ((Table) w).getItemHeight() - 1;
-		} else if (w instanceof Tree) {
-			extent = ((Tree) w).getItemHeight() - 1;
-		} else if (w instanceof TableTree) {
-			extent = ((TableTree) w).getItemHeight() - 1;
-		}
-
-        if (size > extent) {
-			size = extent;
-		}
-
-        int width = indent + size;
-        int height = extent;
-
-        int xoffset = indent;
-        int yoffset = (height - size) / 2;
-
-        RGB black = new RGB(0, 0, 0);
-        PaletteData dataPalette = new PaletteData(new RGB[] { black, black,
-                color });
-        ImageData data = new ImageData(width, height, 4, dataPalette);
-        data.transparentPixel = 0;
-
-        int end = size - 1;
-        for (int y = 0; y < size; y++) {
-            for (int x = 0; x < size; x++) {
-                if (x == 0 || y == 0 || x == end || y == end) {
-					data.setPixel(x + xoffset, y + yoffset, 1);
-				} else {
-					data.setPixel(x + xoffset, y + yoffset, 2);
-				}
-            }
-        }
-
-        return data;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DialogCellEditor.
-     */
-    protected Control createContents(Composite cell) {
-        Color bg = cell.getBackground();
-        composite = new Composite(cell, getStyle());
-        composite.setBackground(bg);
-        composite.setLayout(new ColorCellLayout());
-        colorLabel = new Label(composite, SWT.LEFT);
-        colorLabel.setBackground(bg);
-        rgbLabel = new Label(composite, SWT.LEFT);
-        rgbLabel.setBackground(bg);
-        rgbLabel.setFont(cell.getFont());
-        return composite;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    public void dispose() {
-        if (image != null) {
-            image.dispose();
-            image = null;
-        }
-        super.dispose();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DialogCellEditor.
-     */
-    protected Object openDialogBox(Control cellEditorWindow) {
-        ColorDialog dialog = new ColorDialog(cellEditorWindow.getShell());
-        Object value = getValue();
-        if (value != null) {
-			dialog.setRGB((RGB) value);
-		}
-        value = dialog.open();
-        return dialog.getRGB();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DialogCellEditor.
-     */
-    protected void updateContents(Object value) {
-        RGB rgb = (RGB) value;
-        // XXX: We don't have a value the first time this method is called".
-        if (rgb == null) {
-            rgb = new RGB(0, 0, 0);
-        }
-        // XXX: Workaround for 1FMQ0P3: SWT:ALL - TableItem.setImage doesn't work if using the identical image."
-        if (image != null) {
-			image.dispose();
-		}
-
-        ImageData id = createColorImage(colorLabel.getParent().getParent(), rgb);
-        ImageData mask = id.getTransparencyMask();
-        image = new Image(colorLabel.getDisplay(), id, mask);
-        colorLabel.setImage(image);
-
-        rgbLabel
-                .setText("(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");//$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLabelProvider.java
deleted file mode 100644
index 05a64ad..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLabelProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The ColumnLabelProvider is the label provider for viewers
- * that have column support such as {@link TreeViewer} and
- * {@link TableViewer}
- * 
- * <p><b>This classes is intended to be subclassed</b></p>
- * 
- * @since 3.3
- *
- */
-public class ColumnLabelProvider extends CellLabelProvider implements
-		IFontProvider, IColorProvider, ILabelProvider {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.CellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
-	 */
-	public void update(ViewerCell cell) {
-		Object element = cell.getElement();
-		cell.setText(getText(element));
-		Image image = getImage(element);
-		cell.setImage(image);
-		cell.setBackground(getBackground(element));
-		cell.setForeground(getForeground(element));
-		cell.setFont(getFont(element));
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
-	 */
-	public Font getFont(Object element) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object)
-	 */
-	public Color getBackground(Object element) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object)
-	 */
-	public Color getForeground(Object element) {
-		return null;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-	 */
-	public Image getImage(Object element) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-	 */
-	public String getText(Object element) {
-		return element == null ? "" : element.toString();//$NON-NLS-1$
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLayoutData.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLayoutData.java
deleted file mode 100644
index 965fdab..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnLayoutData.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * An abstract column layout data describing the information needed 
- * (by <code>TableLayout</code>) to properly lay out a table. 
- * <p>
- * This class is not intended to be subclassed outside the framework.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class ColumnLayoutData {
-
-    /**
-     * Indicates whether the column is resizable.
-     */
-    public boolean resizable;
-
-    /**
-     * Creates a new column layout data object.
-     *
-     * @param resizable <code>true</code> if the column is resizable, and <code>false</code> if not
-     */
-    protected ColumnLayoutData(boolean resizable) {
-        this.resizable = resizable;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnPixelData.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnPixelData.java
deleted file mode 100644
index f1b1750..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnPixelData.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Describes the width of a table column in pixels, and
- * whether the column is resizable.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ColumnPixelData extends ColumnLayoutData {
-
-   /**
-     * The column's width in pixels.
-     */
-    public int width;
-
-	/**
-	 * Whether to allocate extra width to the column to account for
-	 * trim taken by the column itself.
-	 * The default is <code>false</code> for backwards compatibility, but
-	 * the recommended practice is to specify <code>true</code>, and
-	 * specify the desired width for the content of the column, rather
-	 * than adding a fudge factor to the specified width.
-	 * 
-	 * @since 3.1
-	 */
-	public boolean addTrim = false;
-	
-    /**
-     * Creates a resizable column width of the given number of pixels.
-     *
-     * @param widthInPixels the width of column in pixels
-     */
-    public ColumnPixelData(int widthInPixels) {
-        this(widthInPixels, true, false);
-    }
-
-    /**
-     * Creates a column width of the given number of pixels.
-     *
-     * @param widthInPixels the width of column in pixels
-     * @param resizable <code>true</code> if the column is resizable,
-     *   and <code>false</code> if size of the column is fixed
-     */
-    public ColumnPixelData(int widthInPixels, boolean resizable) {
-		this(widthInPixels, resizable, false);
-    }
-
-    /**
-	 * Creates a column width of the given number of pixels.
-	 * 
-	 * @param widthInPixels
-	 *            the width of column in pixels
-	 * @param resizable
-	 *            <code>true</code> if the column is resizable, and
-	 *            <code>false</code> if size of the column is fixed
-	 * @param addTrim
-	 *            <code>true</code> to allocate extra width to the column to
-	 *            account for trim taken by the column itself,
-	 *            <code>false</code> to use the given width exactly
-	 * @since 3.1
-	 */
-    public ColumnPixelData(int widthInPixels, boolean resizable, boolean addTrim) {
-        super(resizable);
-        Assert.isTrue(widthInPixels >= 0);
-        this.width = widthInPixels;
-		this.addTrim = addTrim;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewer.java
deleted file mode 100644
index 9003e55..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewer.java
+++ /dev/null
@@ -1,819 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation; bug 153993
- *												   fix in bug 163317, 151295, 167323, 167858, 184346, 187826, 201905
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.internal.InternalPolicy;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * The ColumnViewer is the abstract superclass of viewers that have columns
- * (e.g., AbstractTreeViewer and AbstractTableViewer). Concrete subclasses of
- * {@link ColumnViewer} should implement a matching concrete subclass of {@link
- * ViewerColumn}.
- * 
- * <strong> This class is not intended to be subclassed outside of the JFace
- * viewers framework.</strong>
- * 
- * @since 3.3
- * 
- */
-public abstract class ColumnViewer extends StructuredViewer {
-	private CellEditor[] cellEditors;
-
-	private ICellModifier cellModifier;
-
-	private String[] columnProperties;
-
-	/**
-	 * The cell is a cached viewer cell used for refreshing.
-	 */
-	private ViewerCell cell = new ViewerCell(null, 0, null);
-
-	private ColumnViewerEditor viewerEditor;
-
-	private boolean busy;
-	private boolean logWhenBusy = true; // initially true, set to false
-
-	// after logging for the first
-	// time
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	public ColumnViewer() {
-
-	}
-
-	protected void hookControl(Control control) {
-		super.hookControl(control);
-		viewerEditor = createViewerEditor();
-		hookEditingSupport(control);
-	}
-
-	/**
-	 * Hook up the editing support. Subclasses may override.
-	 * 
-	 * @param control
-	 * 		the control you want to hook on
-	 */
-	protected void hookEditingSupport(Control control) {
-		// Needed for backwards comp with AbstractTreeViewer and TableTreeViewer
-		// who are not hooked this way others may already overwrite and provide
-		// their
-		// own impl
-		if (viewerEditor != null) {
-			control.addMouseListener(new MouseAdapter() {
-				public void mouseDown(MouseEvent e) {
-					// Workaround for bug 185817
-					if (e.count != 2) {
-						handleMouseDown(e);
-					}
-				}
-
-				public void mouseDoubleClick(MouseEvent e) {
-					handleMouseDown(e);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Creates the viewer editor used for editing cell contents. To be
-	 * implemented by subclasses.
-	 * 
-	 * @return the editor, or <code>null</code> if this viewer does not support
-	 * 	editing cell contents.
-	 */
-	protected abstract ColumnViewerEditor createViewerEditor();
-
-	/**
-	 * Returns the viewer cell at the given widget-relative coordinates, or
-	 * <code>null</code> if there is no cell at that location
-	 * 
-	 * @param point
-	 * 		the widget-relative coordinates
-	 * @return the cell or <code>null</code> if no cell is found at the given
-	 * 	point
-	 * 
-	 * @since 3.4
-	 */
-	public ViewerCell getCell(Point point) {
-		ViewerRow row = getViewerRow(point);
-		if (row != null) {
-			return row.getCell(point);
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the viewer row at the given widget-relative coordinates.
-	 * 
-	 * @param point
-	 * 		the widget-relative coordinates of the viewer row
-	 * @return ViewerRow the row or <code>null</code> if no row is found at the
-	 * 	given coordinates
-	 */
-	protected ViewerRow getViewerRow(Point point) {
-		Item item = getItemAt(point);
-
-		if (item != null) {
-			return getViewerRowFromItem(item);
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns a {@link ViewerRow} associated with the given row widget.
-	 * Implementations may re-use the same instance for different row widgets;
-	 * callers can only use the viewer row locally and until the next call to
-	 * this method.
-	 * 
-	 * @param item
-	 * 		the row widget
-	 * @return ViewerRow a viewer row object
-	 */
-	protected abstract ViewerRow getViewerRowFromItem(Widget item);
-
-	/**
-	 * Returns the column widget at the given column index.
-	 * 
-	 * @param columnIndex
-	 * 		the column index
-	 * @return Widget the column widget
-	 */
-	protected abstract Widget getColumnViewerOwner(int columnIndex);
-
-	/**
-	 * Returns the viewer column for the given column index.
-	 * 
-	 * @param columnIndex
-	 * 		the column index
-	 * @return the viewer column at the given index, or <code>null</code> if
-	 * 	there is none for the given index
-	 */
-	/* package */ViewerColumn getViewerColumn(final int columnIndex) {
-
-		ViewerColumn viewer;
-		Widget columnOwner = getColumnViewerOwner(columnIndex);
-
-		if (columnOwner == null || columnOwner.isDisposed()) {
-			return null;
-		}
-
-		viewer = (ViewerColumn) columnOwner
-				.getData(ViewerColumn.COLUMN_VIEWER_KEY);
-
-		if (viewer == null) {
-			viewer = createViewerColumn(columnOwner, CellLabelProvider
-					.createViewerLabelProvider(this, getLabelProvider()));
-			setupEditingSupport(columnIndex, viewer);
-		}
-
-		if (viewer.getEditingSupport() == null && getCellModifier() != null) {
-			setupEditingSupport(columnIndex, viewer);
-		}
-
-		return viewer;
-	}
-
-	/**
-	 * Sets up editing support for the given column based on the "old" cell
-	 * editor API.
-	 * 
-	 * @param columnIndex
-	 * @param viewer
-	 */
-	private void setupEditingSupport(final int columnIndex, ViewerColumn viewer) {
-		if (getCellModifier() != null) {
-			viewer.setEditingSupport(new EditingSupport(this) {
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see
-				 * org.eclipse.jface.viewers.EditingSupport#canEdit(java.lang
-				 * .Object)
-				 */
-				public boolean canEdit(Object element) {
-					Object[] properties = getColumnProperties();
-
-					if (columnIndex < properties.length) {
-						return getCellModifier().canModify(element,
-								(String) getColumnProperties()[columnIndex]);
-					}
-
-					return false;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see
-				 * org.eclipse.jface.viewers.EditingSupport#getCellEditor(java
-				 * .lang.Object)
-				 */
-				public CellEditor getCellEditor(Object element) {
-					CellEditor[] editors = getCellEditors();
-					if (columnIndex < editors.length) {
-						return getCellEditors()[columnIndex];
-					}
-					return null;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see
-				 * org.eclipse.jface.viewers.EditingSupport#getValue(java.lang
-				 * .Object)
-				 */
-				public Object getValue(Object element) {
-					Object[] properties = getColumnProperties();
-
-					if (columnIndex < properties.length) {
-						return getCellModifier().getValue(element,
-								(String) getColumnProperties()[columnIndex]);
-					}
-
-					return null;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see
-				 * org.eclipse.jface.viewers.EditingSupport#setValue(java.lang
-				 * .Object, java.lang.Object)
-				 */
-				public void setValue(Object element, Object value) {
-					Object[] properties = getColumnProperties();
-
-					if (columnIndex < properties.length) {
-						getCellModifier().modify(findItem(element),
-								(String) getColumnProperties()[columnIndex],
-								value);
-					}
-				}
-
-				boolean isLegacySupport() {
-					return true;
-				}
-			});
-		}
-	}
-
-	/**
-	 * Creates a generic viewer column for the given column widget, based on the
-	 * given label provider.
-	 * 
-	 * @param columnOwner
-	 * 		the column widget
-	 * @param labelProvider
-	 * 		the label provider to use for the column
-	 * @return ViewerColumn the viewer column
-	 */
-	private ViewerColumn createViewerColumn(Widget columnOwner,
-			CellLabelProvider labelProvider) {
-		ViewerColumn column = new ViewerColumn(this, columnOwner) {
-		};
-		column.setLabelProvider(labelProvider, false);
-		return column;
-	}
-
-	/**
-	 * Update the cached cell object with the given row and column.
-	 * 
-	 * @param rowItem
-	 * @param column
-	 * @return ViewerCell
-	 */
-	/* package */ViewerCell updateCell(ViewerRow rowItem, int column,
-			Object element) {
-		cell.update(rowItem, column, element);
-		return cell;
-	}
-
-	/**
-	 * Returns the {@link Item} at the given widget-relative coordinates, or
-	 * <code>null</code> if there is no item at the given coordinates.
-	 * 
-	 * @param point
-	 * 		the widget-relative coordinates
-	 * @return the {@link Item} at the coordinates or <code>null</code> if there
-	 * 	is no item at the given coordinates
-	 */
-	protected abstract Item getItemAt(Point point);
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getItem(int, int)
-	 */
-	protected Item getItem(int x, int y) {
-		return getItemAt(getControl().toControl(x, y));
-	}
-
-	/**
-	 * The column viewer implementation of this <code>Viewer</code> framework
-	 * method ensures that the given label provider is an instance of
-	 * <code>ITableLabelProvider</code>, <code>ILabelProvider</code>, or
-	 * <code>CellLabelProvider</code>.
-	 * <p>
-	 * If the label provider is an {@link ITableLabelProvider} , then it
-	 * provides a separate label text and image for each column. Implementers of
-	 * <code>ITableLabelProvider</code> may also implement {@link
-	 * ITableColorProvider} and/or {@link ITableFontProvider} to provide colors
-	 * and/or fonts.
-	 * </p>
-	 * <p>
-	 * If the label provider is an <code>ILabelProvider</code> , then it
-	 * provides only the label text and image for the first column, and any
-	 * remaining columns are blank. Implementers of <code>ILabelProvider</code>
-	 * may also implement {@link IColorProvider} and/or {@link IFontProvider} to
-	 * provide colors and/or fonts.
-	 * </p>
-	 * 
-	 */
-	public void setLabelProvider(IBaseLabelProvider labelProvider) {
-		Assert.isTrue(labelProvider instanceof ITableLabelProvider
-				|| labelProvider instanceof ILabelProvider
-				|| labelProvider instanceof CellLabelProvider);
-		updateColumnParts(labelProvider);// Reset the label providers in the
-		// columns
-		super.setLabelProvider(labelProvider);
-		if (labelProvider instanceof CellLabelProvider) {
-			((CellLabelProvider) labelProvider).initialize(this, null);
-		}
-	}
-
-	void internalDisposeLabelProvider(IBaseLabelProvider oldProvider) {
-		if (oldProvider instanceof CellLabelProvider) {
-			((CellLabelProvider) oldProvider).dispose(this, null);
-		} else {
-			super.internalDisposeLabelProvider(oldProvider);
-		}
-	}
-
-	/**
-	 * Clear the viewer parts for the columns
-	 */
-	private void updateColumnParts(IBaseLabelProvider labelProvider) {
-		ViewerColumn column;
-		int i = 0;
-
-		while ((column = getViewerColumn(i++)) != null) {
-			column.setLabelProvider(CellLabelProvider
-					.createViewerLabelProvider(this, labelProvider), false);
-		}
-	}
-
-	/**
-	 * Cancels a currently active cell editor if one is active. All changes
-	 * already done in the cell editor are lost.
-	 * 
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 */
-	public void cancelEditing() {
-		if (viewerEditor != null) {
-			viewerEditor.cancelEditing();
-		}
-	}
-
-	/**
-	 * Apply the value of the active cell editor if one is active.
-	 * 
-	 * @since 3.3
-	 */
-	protected void applyEditorValue() {
-		if (viewerEditor != null) {
-			viewerEditor.applyEditorValue();
-		}
-	}
-
-	/**
-	 * Starts editing the given element at the given column index.
-	 * 
-	 * @param element
-	 * 		the model element
-	 * @param column
-	 * 		the column index
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 */
-	public void editElement(Object element, int column) {
-		if (viewerEditor != null) {
-			try {
-				getControl().setRedraw(false);
-				// Set the selection at first because in Tree's
-				// the element might not be materialized
-				setSelection(new StructuredSelection(element), true);
-
-				Widget item = findItem(element);
-				if (item != null) {
-					ViewerRow row = getViewerRowFromItem(item);
-					if (row != null) {
-						ViewerCell cell = row.getCell(column);
-						if (cell != null) {
-							triggerEditorActivationEvent(new ColumnViewerEditorActivationEvent(
-									cell));
-						}
-					}
-				}
-			} finally {
-				getControl().setRedraw(true);
-			}
-		}
-	}
-
-	/**
-	 * Return the CellEditors for the receiver, or <code>null</code> if no cell
-	 * editors are set.
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * 
-	 * 
-	 * @return CellEditor[]
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public CellEditor[] getCellEditors() {
-		return cellEditors;
-	}
-
-	/**
-	 * Returns the cell modifier of this viewer, or <code>null</code> if none
-	 * has been set.
-	 * 
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * 
-	 * @return the cell modifier, or <code>null</code>
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public ICellModifier getCellModifier() {
-		return cellModifier;
-	}
-
-	/**
-	 * Returns the column properties of this table viewer. The properties must
-	 * correspond with the columns of the table control. They are used to
-	 * identify the column in a cell modifier.
-	 * 
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * 
-	 * @return the list of column properties
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public Object[] getColumnProperties() {
-		return columnProperties;
-	}
-
-	/**
-	 * Returns whether there is an active cell editor.
-	 * 
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if there is an active cell editor, and
-	 * 	<code>false</code> otherwise
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public boolean isCellEditorActive() {
-		if (viewerEditor != null) {
-			return viewerEditor.isCellEditorActive();
-		}
-		return false;
-	}
-
-	public void refresh(Object element) {
-		if (checkBusy())
-			return;
-
-		if (isCellEditorActive()) {
-			cancelEditing();
-		}
-
-		super.refresh(element);
-	}
-
-	public void refresh(Object element, boolean updateLabels) {
-		if (checkBusy())
-			return;
-
-		if (isCellEditorActive()) {
-			cancelEditing();
-		}
-
-		super.refresh(element, updateLabels);
-	}
-
-	public void update(Object element, String[] properties) {
-		if (checkBusy())
-			return;
-		super.update(element, properties);
-	}
-
-	/**
-	 * Sets the cell editors of this column viewer. If editing is not supported
-	 * by this viewer the call simply has no effect.
-	 * 
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * <p>
-	 * Users setting up an editable {@link TreeViewer} or {@link TableViewer} with more than 1 column <b>have</b>
-	 * to pass the SWT.FULL_SELECTION style bit
-	 * </p>
-	 * @param editors
-	 * 		the list of cell editors
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public void setCellEditors(CellEditor[] editors) {
-		this.cellEditors = editors;
-	}
-
-	/**
-	 * Sets the cell modifier for this column viewer. This method does nothing
-	 * if editing is not supported by this viewer.
-	 * 
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * <p>
-	 * Users setting up an editable {@link TreeViewer} or {@link TableViewer} with more than 1 column <b>have</b>
-	 * to pass the SWT.FULL_SELECTION style bit
-	 * </p>
-	 * @param modifier
-	 * 		the cell modifier
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public void setCellModifier(ICellModifier modifier) {
-		this.cellModifier = modifier;
-	}
-
-	/**
-	 * Sets the column properties of this column viewer. The properties must
-	 * correspond with the columns of the control. They are used to identify the
-	 * column in a cell modifier. If editing is not supported by this viewer the
-	 * call simply has no effect.
-	 * 
-	 * <p>
-	 * Since 3.3, an alternative API is available, see {@link
-	 * ViewerColumn#setEditingSupport(EditingSupport)} for a more flexible way
-	 * of editing values in a column viewer.
-	 * </p>
-	 * <p>
-	 * Users setting up an editable {@link TreeViewer} or {@link TableViewer} with more than 1 column <b>have</b>
-	 * to pass the SWT.FULL_SELECTION style bit
-	 * </p>
-	 * @param columnProperties
-	 * 		the list of column properties
-	 * @since 3.1 (in subclasses, added in 3.3 to abstract class)
-	 * @see ViewerColumn#setEditingSupport(EditingSupport)
-	 * @see EditingSupport
-	 */
-	public void setColumnProperties(String[] columnProperties) {
-		this.columnProperties = columnProperties;
-	}
-
-	/**
-	 * Returns the number of columns contained in the receiver. If no columns
-	 * were created by the programmer, this value is zero, despite the fact that
-	 * visually, one column of items may be visible. This occurs when the
-	 * programmer uses the column viewer like a list, adding elements but never
-	 * creating a column.
-	 * 
-	 * @return the number of columns
-	 * 
-	 * @since 3.3
-	 */
-	protected abstract int doGetColumnCount();
-
-	/**
-	 * Returns the label provider associated with the column at the given index
-	 * or <code>null</code> if no column with this index is known.
-	 * 
-	 * @param columnIndex
-	 * 		the column index
-	 * @return the label provider associated with the column or
-	 * 	<code>null</code> if no column with this index is known
-	 * 
-	 * @since 3.3
-	 */
-	public CellLabelProvider getLabelProvider(int columnIndex) {
-		ViewerColumn column = getViewerColumn(columnIndex);
-		if (column != null) {
-			return column.getLabelProvider();
-		}
-		return null;
-	}
-
-	private void handleMouseDown(MouseEvent e) {
-		ViewerCell cell = getCell(new Point(e.x, e.y));
-
-		if (cell != null) {
-			triggerEditorActivationEvent(new ColumnViewerEditorActivationEvent(
-					cell, e));
-		}
-	}
-
-	/**
-	 * Invoking this method fires an editor activation event which tries to
-	 * enable the editor but before this event is passed to {@link
-	 * ColumnViewerEditorActivationStrategy} to see if this event should really
-	 * trigger editor activation
-	 * 
-	 * @param event
-	 * 		the activation event
-	 */
-	protected void triggerEditorActivationEvent(
-			ColumnViewerEditorActivationEvent event) {
-		viewerEditor.handleEditorActivationEvent(event);
-	}
-
-	/**
-	 * @param columnViewerEditor
-	 * 		the new column viewer editor
-	 */
-	public void setColumnViewerEditor(ColumnViewerEditor columnViewerEditor) {
-		Assert.isNotNull(columnViewerEditor);
-		this.viewerEditor = columnViewerEditor;
-	}
-
-	/**
-	 * @return the currently attached viewer editor
-	 */
-	public ColumnViewerEditor getColumnViewerEditor() {
-		return viewerEditor;
-	}
-
-	protected Object[] getRawChildren(Object parent) {
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			return super.getRawChildren(parent);
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	void clearLegacyEditingSetup() {
-		if (!getControl().isDisposed() && getCellEditors() != null) {
-			int count = doGetColumnCount();
-
-			for (int i = 0; i < count || i == 0; i++) {
-				Widget owner = getColumnViewerOwner(i);
-				if (owner != null && !owner.isDisposed()) {
-					ViewerColumn column = (ViewerColumn) owner
-							.getData(ViewerColumn.COLUMN_VIEWER_KEY);
-					if (column != null) {
-						EditingSupport e = column.getEditingSupport();
-						// Ensure that only EditingSupports are wiped that are
-						// setup
-						// for Legacy reasons
-						if (e != null && e.isLegacySupport()) {
-							column.setEditingSupport(null);
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Checks if this viewer is currently busy, logging a warning and returning
-	 * <code>true</code> if it is busy. A column viewer is busy when it is
-	 * processing a refresh, add, remove, insert, replace, setItemCount,
-	 * expandToLevel, update, setExpandedElements, or similar method that may
-	 * make calls to client code. Column viewers are not designed to handle
-	 * reentrant calls while they are busy. The method returns <code>true</code>
-	 * if the viewer is busy. It is recommended that this method be used by
-	 * subclasses to determine whether the viewer is busy to return early from
-	 * state-changing methods.
-	 * 
-	 * <p>
-	 * This method is not intended to be overridden by subclasses.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the viewer is busy.
-	 * 
-	 * @since 3.4
-	 */
-	protected boolean checkBusy() {
-		if (isBusy()) {
-			if (logWhenBusy) {
-				String message = "Ignored reentrant call while viewer is busy."; //$NON-NLS-1$
-				if (!InternalPolicy.DEBUG_LOG_REENTRANT_VIEWER_CALLS) {
-					// stop logging after the first
-					logWhenBusy = false;
-					message += " This is only logged once per viewer instance," + //$NON-NLS-1$
-							" but similar calls will still be ignored."; //$NON-NLS-1$
-				}
-				Policy.getLog().log(
-						new Status(IStatus.WARNING, Policy.JFACE, message,
-								new RuntimeException()));
-			}
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Sets the busy state of this viewer. Subclasses MUST use <code>try</code>
-	 * ...<code>finally</code> as follows to ensure that the busy flag is reset
-	 * to its original value:
-	 * 
-	 * <pre>
-	 * boolean oldBusy = isBusy();
-	 * setBusy(true);
-	 * try {
-	 * 	// do work
-	 * } finally {
-	 * 	setBusy(oldBusy);
-	 * }
-	 * </pre>
-	 * 
-	 * <p>
-	 * This method is not intended to be overridden by subclasses.
-	 * </p>
-	 * 
-	 * @param busy
-	 * 		the new value of the busy flag
-	 * 
-	 * @since 3.4
-	 */
-	protected void setBusy(boolean busy) {
-		this.busy = busy;
-	}
-
-	/**
-	 * Returns <code>true</code> if this viewer is currently busy processing a
-	 * refresh, add, remove, insert, replace, setItemCount, expandToLevel,
-	 * update, setExpandedElements, or similar method that may make calls to
-	 * client code. Column viewers are not designed to handle reentrant calls
-	 * while they are busy. It is recommended that clients avoid using this
-	 * method if they can ensure by other means that they will not make
-	 * reentrant calls to methods like the ones listed above. See bug 184991 for
-	 * background discussion.
-	 * 
-	 * <p>
-	 * This method is not intended to be overridden by subclasses.
-	 * </p>
-	 * 
-	 * @return Returns whether this viewer is busy.
-	 * 
-	 * @since 3.4
-	 */
-	public boolean isBusy() {
-		return busy;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java
deleted file mode 100644
index 9f67161..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java
+++ /dev/null
@@ -1,722 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - refactoring (bug 153993)
- *     											   fix in bug: 151295,178946,166500,195908,201906,207676,180504,216706,218336
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-
-/**
- * This is the base for all editor implementations of Viewers. ColumnViewer
- * implementors have to subclass this class and implement the missing methods
- *
- * @since 3.3
- * @see TableViewerEditor
- * @see TreeViewerEditor
- */
-public abstract class ColumnViewerEditor {
-	private CellEditor cellEditor;
-
-	private ICellEditorListener cellEditorListener;
-
-	private FocusListener focusListener;
-
-	private MouseListener mouseListener;
-
-	private ColumnViewer viewer;
-
-	private TraverseListener tabeditingListener;
-
-	private ViewerCell cell;
-
-	private ListenerList editorActivationListener;
-
-	private ColumnViewerEditorActivationStrategy editorActivationStrategy;
-
-	private boolean inEditorDeactivation;
-	
-	private DisposeListener disposeListener;
-
-	/**
-	 * Tabbing from cell to cell is turned off
-	 */
-	public static final int DEFAULT = 1;
-
-	/**
-	 * Should if the end of the row is reach started from the start/end of the
-	 * row below/above
-	 */
-	public static final int TABBING_MOVE_TO_ROW_NEIGHBOR = 1 << 1;
-
-	/**
-	 * Should if the end of the row is reach started from the beginning in the
-	 * same row
-	 */
-	public static final int TABBING_CYCLE_IN_ROW = 1 << 2;
-
-	/**
-	 * Support tabbing to Cell above/below the current cell
-	 */
-	public static final int TABBING_VERTICAL = 1 << 3;
-
-	/**
-	 * Should tabbing from column to column with in one row be supported
-	 */
-	public static final int TABBING_HORIZONTAL = 1 << 4;
-
-	/**
-	 * Style mask used to enable keyboard activation
-	 */
-	public static final int KEYBOARD_ACTIVATION = 1 << 5;
-
-	/**
-	 * Style mask used to turn <b>off</b> the feature that an editor activation
-	 * is canceled on double click. It is also possible to turn off this feature
-	 * per cell-editor using {@link CellEditor#getDoubleClickTimeout()}
-	 * @since 3.4
-	 */
-	public static final int KEEP_EDITOR_ON_DOUBLE_CLICK = 1 << 6;
-
-	private int feature;
-
-	/**
-	 * @param viewer
-	 *            the viewer this editor is attached to
-	 * @param editorActivationStrategy
-	 *            the strategy used to decide about editor activation
-	 * @param feature
-	 *            bit mask controlling the editor
-	 *            <ul>
-	 *            <li>{@link ColumnViewerEditor#DEFAULT}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_HORIZONTAL}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_VERTICAL}</li>
-	 *            </ul>
-	 */
-	protected ColumnViewerEditor(final ColumnViewer viewer,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		this.viewer = viewer;
-		this.editorActivationStrategy = editorActivationStrategy;
-		if ((feature & KEYBOARD_ACTIVATION) == KEYBOARD_ACTIVATION) {
-			this.editorActivationStrategy
-					.setEnableEditorActivationWithKeyboard(true);
-		}
-		this.feature = feature;
-		this.disposeListener = new DisposeListener() {
-
-			public void widgetDisposed(DisposeEvent e) {
-				if( viewer.isCellEditorActive() ) {
-					cancelEditing();
-				}
-			}
-			
-		};
-		initCellEditorListener();
-	}
-
-	private void initCellEditorListener() {
-		cellEditorListener = new ICellEditorListener() {
-			public void editorValueChanged(boolean oldValidState,
-					boolean newValidState) {
-				// Ignore.
-			}
-
-			public void cancelEditor() {
-				ColumnViewerEditor.this.cancelEditing();
-			}
-
-			public void applyEditorValue() {
-				ColumnViewerEditor.this.applyEditorValue();
-			}
-		};
-	}
-
-	private boolean activateCellEditor(final ColumnViewerEditorActivationEvent activationEvent) {
-
-		ViewerColumn part = viewer.getViewerColumn(cell.getColumnIndex());
-		Object element = cell.getElement();
-
-		if (part != null && part.getEditingSupport() != null
-				&& part.getEditingSupport().canEdit(element)) {
-			cellEditor = part.getEditingSupport().getCellEditor(element);
-			if (cellEditor != null) {
-				int timeout = cellEditor.getDoubleClickTimeout();
-
-				final int activationTime;
-
-				if (timeout != 0) {
-					activationTime = activationEvent.time + timeout;
-				} else {
-					activationTime = 0;
-				}
-
-				if (editorActivationListener != null
-						&& !editorActivationListener.isEmpty()) {
-					Object[] ls = editorActivationListener.getListeners();
-					for (int i = 0; i < ls.length; i++) {
-						((ColumnViewerEditorActivationListener) ls[i])
-								.beforeEditorActivated(activationEvent);
-
-						// Was the activation canceled ?
-						if (activationEvent.cancel) {
-							return false;
-						}
-					}
-				}
-
-				updateFocusCell(cell, activationEvent);
-
-				cellEditor.addListener(cellEditorListener);
-				part.getEditingSupport().initializeCellEditorValue(cellEditor,
-						cell);
-
-				// Tricky flow of control here:
-				// activate() can trigger callback to cellEditorListener which
-				// will clear cellEditor
-				// so must get control first, but must still call activate()
-				// even if there is no control.
-				final Control control = cellEditor.getControl();
-				cellEditor.activate(activationEvent);
-				if (control == null) {
-					return false;
-				}
-				setLayoutData(cellEditor.getLayoutData());
-				setEditor(control, (Item) cell.getItem(), cell.getColumnIndex());
-				cellEditor.setFocus();
-
-				if (cellEditor.dependsOnExternalFocusListener()) {
-					if (focusListener == null) {
-						focusListener = new FocusAdapter() {
-							public void focusLost(FocusEvent e) {
-								applyEditorValue();
-							}
-						};
-					}
-					control.addFocusListener(focusListener);
-				}
-
-				mouseListener = new MouseAdapter() {
-					public void mouseDown(MouseEvent e) {
-						// time wrap?
-						// check for expiration of doubleClickTime
-						if (shouldFireDoubleClick(activationTime, e.time, activationEvent) && e.button == 1) {
-							control.removeMouseListener(mouseListener);
-							cancelEditing();
-							handleDoubleClickEvent();
-						} else if (mouseListener != null) {
-							control.removeMouseListener(mouseListener);
-						}
-					}
-				};
-
-				if (activationTime != 0
-						&& (feature & KEEP_EDITOR_ON_DOUBLE_CLICK) == 0) {
-					control.addMouseListener(mouseListener);
-				}
-
-				if (tabeditingListener == null) {
-					tabeditingListener = new TraverseListener() {
-
-						public void keyTraversed(TraverseEvent e) {
-							if ((feature & DEFAULT) != DEFAULT) {
-								processTraverseEvent(cell.getColumnIndex(),
-										viewer.getViewerRowFromItem(cell
-												.getItem()), e);
-							}
-						}
-					};
-				}
-
-				control.addTraverseListener(tabeditingListener);
-
-				if (editorActivationListener != null
-						&& !editorActivationListener.isEmpty()) {
-					Object[] ls = editorActivationListener.getListeners();
-					for (int i = 0; i < ls.length; i++) {
-						((ColumnViewerEditorActivationListener) ls[i])
-								.afterEditorActivated(activationEvent);
-					}
-				}
-				
-				this.cell.getItem().addDisposeListener(disposeListener);
-
-				return true;
-			}
-
-		}
-
-		return false;
-	}
-
-	private boolean shouldFireDoubleClick(int activationTime, int mouseTime,
-			ColumnViewerEditorActivationEvent activationEvent) {
-		return mouseTime <= activationTime
-				&& activationEvent.eventType != ColumnViewerEditorActivationEvent.KEY_PRESSED
-				&& activationEvent.eventType != ColumnViewerEditorActivationEvent.PROGRAMMATIC
-				&& activationEvent.eventType != ColumnViewerEditorActivationEvent.TRAVERSAL;
-	}
-
-	/**
-	 * Applies the current value and deactivates the currently active cell
-	 * editor.
-	 */
-	void applyEditorValue() {
-		// avoid re-entering
-		if (!inEditorDeactivation) {
-			try {
-				inEditorDeactivation = true;
-				CellEditor c = this.cellEditor;
-				if (c != null && this.cell != null) {
-					ColumnViewerEditorDeactivationEvent tmp = new ColumnViewerEditorDeactivationEvent(
-							cell);
-					tmp.eventType = ColumnViewerEditorDeactivationEvent.EDITOR_SAVED;
-					if (editorActivationListener != null
-							&& !editorActivationListener.isEmpty()) {
-						Object[] ls = editorActivationListener.getListeners();
-						for (int i = 0; i < ls.length; i++) {
-
-							((ColumnViewerEditorActivationListener) ls[i])
-									.beforeEditorDeactivated(tmp);
-						}
-					}
-
-					Item t = (Item) this.cell.getItem();
-
-					// don't null out table item -- same item is still selected
-					if (t != null && !t.isDisposed()) {
-						saveEditorValue(c);
-					}
-					if (!viewer.getControl().isDisposed()) {
-						setEditor(null, null, 0);
-					}
-
-					c.removeListener(cellEditorListener);
-					Control control = c.getControl();
-					if (control != null && !control.isDisposed()) {
-						if (mouseListener != null) {
-							control.removeMouseListener(mouseListener);
-							// Clear the instance not needed any more
-							mouseListener = null;
-						}
-						if (focusListener != null) {
-							control.removeFocusListener(focusListener);
-						}
-
-						if (tabeditingListener != null) {
-							control.removeTraverseListener(tabeditingListener);
-						}
-					}
-					c.deactivate(tmp);
-
-					if (editorActivationListener != null
-							&& !editorActivationListener.isEmpty()) {
-						Object[] ls = editorActivationListener.getListeners();
-						for (int i = 0; i < ls.length; i++) {
-							((ColumnViewerEditorActivationListener) ls[i])
-									.afterEditorDeactivated(tmp);
-						}
-					}
-					
-					if( ! this.cell.getItem().isDisposed() ) {
-						this.cell.getItem().removeDisposeListener(disposeListener);
-					}
-				}
-
-				this.cellEditor = null;
-				this.cell = null;
-			} finally {
-				inEditorDeactivation = false;
-			}
-		}
-	}
-
-	/**
-	 * Cancel editing
-	 */
-	void cancelEditing() {
-		// avoid re-entering
-		if (!inEditorDeactivation) {
-			try {
-				inEditorDeactivation = true;
-				if (cellEditor != null) {
-					ColumnViewerEditorDeactivationEvent tmp = new ColumnViewerEditorDeactivationEvent(
-							cell);
-					tmp.eventType = ColumnViewerEditorDeactivationEvent.EDITOR_CANCELED;
-					if (editorActivationListener != null
-							&& !editorActivationListener.isEmpty()) {
-						Object[] ls = editorActivationListener.getListeners();
-						for (int i = 0; i < ls.length; i++) {
-
-							((ColumnViewerEditorActivationListener) ls[i])
-									.beforeEditorDeactivated(tmp);
-						}
-					}
-
-					if (!viewer.getControl().isDisposed()) {
-						setEditor(null, null, 0);
-					}
-
-					cellEditor.removeListener(cellEditorListener);
-
-					Control control = cellEditor.getControl();
-					if (control != null && !viewer.getControl().isDisposed()) {
-						if (mouseListener != null) {
-							control.removeMouseListener(mouseListener);
-							// Clear the instance not needed any more
-							mouseListener = null;
-						}
-						if (focusListener != null) {
-							control.removeFocusListener(focusListener);
-						}
-
-						if (tabeditingListener != null) {
-							control.removeTraverseListener(tabeditingListener);
-						}
-					}
-
-					CellEditor oldEditor = cellEditor;
-					oldEditor.deactivate(tmp);
-
-					if (editorActivationListener != null
-							&& !editorActivationListener.isEmpty()) {
-						Object[] ls = editorActivationListener.getListeners();
-						for (int i = 0; i < ls.length; i++) {
-							((ColumnViewerEditorActivationListener) ls[i])
-									.afterEditorDeactivated(tmp);
-						}
-					}
-					
-					if( ! this.cell.getItem().isDisposed() ) {
-						this.cell.getItem().addDisposeListener(disposeListener);
-					}
-					
-					this.cellEditor = null;
-					this.cell = null;
-
-				}
-			} finally {
-				inEditorDeactivation = false;
-			}
-		}
-	}
-
-	/**
-	 * Enable the editor by mouse down
-	 *
-	 * @param event
-	 */
-	void handleEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
-
-		// Only activate if the event isn't tagged as canceled
-		if (!event.cancel
-				&& editorActivationStrategy.isEditorActivationEvent(event)) {
-			if (cellEditor != null) {
-				applyEditorValue();
-			}
-
-			this.cell = (ViewerCell) event.getSource();
-
-			if( ! activateCellEditor(event) ) {
-				this.cell = null;
-				this.cellEditor = null;
-			}
-		}
-	}
-
-	private void saveEditorValue(CellEditor cellEditor) {
-		ViewerColumn part = viewer.getViewerColumn(cell.getColumnIndex());
-
-		if (part != null && part.getEditingSupport() != null) {
-			part.getEditingSupport().saveCellEditorValue(cellEditor, cell);
-		}
-	}
-
-	/**
-	 * Return whether there is an active cell editor.
-	 *
-	 * @return <code>true</code> if there is an active cell editor; otherwise
-	 *         <code>false</code> is returned.
-	 */
-	boolean isCellEditorActive() {
-		return cellEditor != null;
-	}
-
-	void handleDoubleClickEvent() {
-		viewer.fireDoubleClick(new DoubleClickEvent(viewer, viewer
-				.getSelection()));
-		viewer.fireOpen(new OpenEvent(viewer, viewer.getSelection()));
-	}
-
-	/**
-	 * Adds the given listener, it is to be notified when the cell editor is
-	 * activated or deactivated.
-	 *
-	 * @param listener
-	 *            the listener to add
-	 */
-	public void addEditorActivationListener(
-			ColumnViewerEditorActivationListener listener) {
-		if (editorActivationListener == null) {
-			editorActivationListener = new ListenerList();
-		}
-		editorActivationListener.add(listener);
-	}
-
-	/**
-	 * Removes the given listener.
-	 *
-	 * @param listener
-	 *            the listener to remove
-	 */
-	public void removeEditorActivationListener(
-			ColumnViewerEditorActivationListener listener) {
-		if (editorActivationListener != null) {
-			editorActivationListener.remove(listener);
-		}
-	}
-
-	/**
-	 * Process the traverse event and opens the next available editor depending
-	 * of the implemented strategy. The default implementation uses the style
-	 * constants
-	 * <ul>
-	 * <li>{@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}</li>
-	 * <li>{@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}</li>
-	 * <li>{@link ColumnViewerEditor#TABBING_VERTICAL}</li>
-	 * <li>{@link ColumnViewerEditor#TABBING_HORIZONTAL}</li>
-	 * </ul>
-	 *
-	 * <p>
-	 * Subclasses may overwrite to implement their custom logic to edit the next
-	 * cell
-	 * </p>
-	 *
-	 * @param columnIndex
-	 *            the index of the current column
-	 * @param row
-	 *            the current row - may only be used for the duration of this
-	 *            method call
-	 * @param event
-	 *            the traverse event
-	 */
-	protected void processTraverseEvent(int columnIndex, ViewerRow row,
-			TraverseEvent event) {
-
-		ViewerCell cell2edit = null;
-
-		if (event.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
-			event.doit = false;
-
-			if ((event.stateMask & SWT.CTRL) == SWT.CTRL
-					&& (feature & TABBING_VERTICAL) == TABBING_VERTICAL) {
-				cell2edit = searchCellAboveBelow(row, viewer, columnIndex, true);
-			} else if ((feature & TABBING_HORIZONTAL) == TABBING_HORIZONTAL) {
-				cell2edit = searchPreviousCell(row, row.getCell(columnIndex),
-						row.getCell(columnIndex), viewer);
-			}
-		} else if (event.detail == SWT.TRAVERSE_TAB_NEXT) {
-			event.doit = false;
-
-			if ((event.stateMask & SWT.CTRL) == SWT.CTRL
-					&& (feature & TABBING_VERTICAL) == TABBING_VERTICAL) {
-				cell2edit = searchCellAboveBelow(row, viewer, columnIndex,
-						false);
-			} else if ((feature & TABBING_HORIZONTAL) == TABBING_HORIZONTAL) {
-				cell2edit = searchNextCell(row, row.getCell(columnIndex), row
-						.getCell(columnIndex), viewer);
-			}
-		}
-
-		if (cell2edit != null) {
-
-			viewer.getControl().setRedraw(false);
-			ColumnViewerEditorActivationEvent acEvent = new ColumnViewerEditorActivationEvent(
-					cell2edit, event);
-			viewer.triggerEditorActivationEvent(acEvent);
-			viewer.getControl().setRedraw(true);
-		}
-	}
-
-	private ViewerCell searchCellAboveBelow(ViewerRow row, ColumnViewer viewer,
-			int columnIndex, boolean above) {
-		ViewerCell rv = null;
-
-		ViewerRow newRow = null;
-
-		if (above) {
-			newRow = row.getNeighbor(ViewerRow.ABOVE, false);
-		} else {
-			newRow = row.getNeighbor(ViewerRow.BELOW, false);
-		}
-
-		if (newRow != null) {
-			ViewerColumn column = viewer.getViewerColumn(columnIndex);
-			if (column != null
-					&& column.getEditingSupport() != null
-					&& column.getEditingSupport().canEdit(
-							newRow.getItem().getData())) {
-				rv = newRow.getCell(columnIndex);
-			} else {
-				rv = searchCellAboveBelow(newRow, viewer, columnIndex, above);
-			}
-		}
-
-		return rv;
-	}
-
-	private boolean isCellEditable(ColumnViewer viewer, ViewerCell cell) {
-		ViewerColumn column = viewer.getViewerColumn(cell.getColumnIndex());
-		return column != null && column.getEditingSupport() != null
-				&& column.getEditingSupport().canEdit(cell.getElement());
-	}
-
-	private ViewerCell searchPreviousCell(ViewerRow row,
-			ViewerCell currentCell, ViewerCell originalCell, ColumnViewer viewer) {
-		ViewerCell rv = null;
-		ViewerCell previousCell;
-
-		if (currentCell != null) {
-			previousCell = currentCell.getNeighbor(ViewerCell.LEFT, true);
-		} else {
-			if (row.getColumnCount() != 0) {
-				previousCell = row.getCell(row.getCreationIndex(row
-						.getColumnCount() - 1));
-			} else {
-				previousCell = row.getCell(0);
-			}
-
-		}
-
-		// No endless loop
-		if (originalCell.equals(previousCell)) {
-			return null;
-		}
-
-		if (previousCell != null) {
-			if (isCellEditable(viewer, previousCell)) {
-				rv = previousCell;
-			} else {
-				rv = searchPreviousCell(row, previousCell, originalCell, viewer);
-			}
-		} else {
-			if ((feature & TABBING_CYCLE_IN_ROW) == TABBING_CYCLE_IN_ROW) {
-				rv = searchPreviousCell(row, null, originalCell, viewer);
-			} else if ((feature & TABBING_MOVE_TO_ROW_NEIGHBOR) == TABBING_MOVE_TO_ROW_NEIGHBOR) {
-				ViewerRow rowAbove = row.getNeighbor(ViewerRow.ABOVE, false);
-				if (rowAbove != null) {
-					rv = searchPreviousCell(rowAbove, null, originalCell,
-							viewer);
-				}
-			}
-		}
-
-		return rv;
-	}
-
-	private ViewerCell searchNextCell(ViewerRow row, ViewerCell currentCell,
-			ViewerCell originalCell, ColumnViewer viewer) {
-		ViewerCell rv = null;
-
-		ViewerCell nextCell;
-
-		if (currentCell != null) {
-			nextCell = currentCell.getNeighbor(ViewerCell.RIGHT, true);
-		} else {
-			nextCell = row.getCell(row.getCreationIndex(0));
-		}
-
-		// No endless loop
-		if (originalCell.equals(nextCell)) {
-			return null;
-		}
-
-		if (nextCell != null) {
-			if (isCellEditable(viewer, nextCell)) {
-				rv = nextCell;
-			} else {
-				rv = searchNextCell(row, nextCell, originalCell, viewer);
-			}
-		} else {
-			if ((feature & TABBING_CYCLE_IN_ROW) == TABBING_CYCLE_IN_ROW) {
-				rv = searchNextCell(row, null, originalCell, viewer);
-			} else if ((feature & TABBING_MOVE_TO_ROW_NEIGHBOR) == TABBING_MOVE_TO_ROW_NEIGHBOR) {
-				ViewerRow rowBelow = row.getNeighbor(ViewerRow.BELOW, false);
-				if (rowBelow != null) {
-					rv = searchNextCell(rowBelow, null, originalCell, viewer);
-				}
-			}
-		}
-
-		return rv;
-	}
-
-	/**
-	 * Position the editor inside the control
-	 *
-	 * @param w
-	 *            the editor control
-	 * @param item
-	 *            the item (row) in which the editor is drawn in
-	 * @param fColumnNumber
-	 *            the column number in which the editor is shown
-	 */
-	protected abstract void setEditor(Control w, Item item, int fColumnNumber);
-
-	/**
-	 * set the layout data for the editor
-	 *
-	 * @param layoutData
-	 *            the layout data used when editor is displayed
-	 */
-	protected abstract void setLayoutData(CellEditor.LayoutData layoutData);
-
-	/**
-	 * @param focusCell
-	 *            updates the cell with the current input focus
-	 * @param event
-	 *            the event requesting to update the focusCell
-	 */
-	protected abstract void updateFocusCell(ViewerCell focusCell,
-			ColumnViewerEditorActivationEvent event);
-
-	/**
-	 * @return the cell currently holding the focus if no cell has the focus or
-	 *         the viewer implementation doesn't support <code>null</code> is
-	 *         returned
-	 *
-	 */
-	public ViewerCell getFocusCell() {
-		return null;
-	}
-
-	/**
-	 * @return the viewer working for
-	 */
-	protected ColumnViewer getViewer() {
-		return viewer;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java
deleted file mode 100644
index d951645..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationEvent.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.TraverseEvent;
-
-/**
- * This event is passed on when a cell-editor is going to be activated
- * 
- * @since 3.3
- * 
- */
-public class ColumnViewerEditorActivationEvent extends EventObject {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * if a key is pressed on a selected cell
-	 */
-	public static final int KEY_PRESSED = 1;
-
-	/**
-	 * if a cell is selected using a single click of the mouse
-	 */
-	public static final int MOUSE_CLICK_SELECTION = 2;
-
-	/**
-	 * if a cell is selected using double clicking of the mouse
-	 */
-	public static final int MOUSE_DOUBLE_CLICK_SELECTION = 3;
-
-	/**
-	 * if a cell is activated using code like e.g
-	 * {@link ColumnViewer#editElement(Object, int)}
-	 */
-	public static final int PROGRAMMATIC = 4;
-
-	/**
-	 * is a cell is activated by traversing
-	 */
-	public static final int TRAVERSAL = 5;
-
-	/**
-	 * the original event triggered
-	 */
-	public EventObject sourceEvent;
-
-	/**
-	 * The time the event is triggered
-	 */
-	public int time;
-
-	/**
-	 * The event type triggered:
-	 * <ul>
-	 * <li>{@link #KEY_PRESSED} if a key is pressed on a selected cell</li>
-	 * <li>{@link #MOUSE_CLICK_SELECTION} if a cell is selected using a single
-	 * click of the mouse</li>
-	 * <li>{@link #MOUSE_DOUBLE_CLICK_SELECTION} if a cell is selected using
-	 * double clicking of the mouse</li>
-	 * </ul>
-	 */
-	public int eventType;
-
-	/**
-	 * <b>Only set for {@link #KEY_PRESSED}</b>
-	 */
-	public int keyCode;
-
-	/**
-	 * <b>Only set for {@link #KEY_PRESSED}</b>
-	 */
-	public char character;
-
-	/**
-	 * The statemask
-	 */
-	public int stateMask;
-
-	/**
-	 * Cancel the event (=> editor is not activated)
-	 */
-	public boolean cancel = false;
-	
-	/**
-	 * This constructor can be used when no event exists. The type set is
-	 * {@link #PROGRAMMATIC}
-	 * 
-	 * @param cell
-	 *            the cell
-	 */
-	public ColumnViewerEditorActivationEvent(ViewerCell cell) {
-		super(cell);
-		eventType = PROGRAMMATIC;
-	}
-
-	/**
-	 * This constructor is used for all types of mouse events. Currently the
-	 * type is can be {@link #MOUSE_CLICK_SELECTION} and
-	 * {@link #MOUSE_DOUBLE_CLICK_SELECTION}
-	 * 
-	 * @param cell
-	 *            the cell source of the event
-	 * @param event
-	 *            the event
-	 */
-	public ColumnViewerEditorActivationEvent(ViewerCell cell, MouseEvent event) {
-		super(cell);
-
-		if (event.count >= 2) {
-			eventType = MOUSE_DOUBLE_CLICK_SELECTION;
-		} else {
-			eventType = MOUSE_CLICK_SELECTION;
-		}
-
-		this.sourceEvent = event;
-		this.time = event.time;
-	}
-
-	/**
-	 * @param cell
-	 *            the cell source of the event
-	 * @param event
-	 *            the event
-	 */
-	public ColumnViewerEditorActivationEvent(ViewerCell cell, KeyEvent event) {
-		super(cell);
-		this.eventType = KEY_PRESSED;
-		this.sourceEvent = event;
-		this.time = event.time;
-		this.keyCode = event.keyCode;
-		this.character = event.character;
-		this.stateMask = event.stateMask;
-	}
-
-	/**
-	 * This constructor is used to mark the activation triggered by a traversal
-	 * 
-	 * @param cell
-	 *            the cell source of the event
-	 * @param event
-	 *            the event
-	 */
-	public ColumnViewerEditorActivationEvent(ViewerCell cell, TraverseEvent event) {
-		super(cell);
-		this.eventType = TRAVERSAL;
-		this.sourceEvent = event;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationListener.java
deleted file mode 100644
index 3f531ae..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationListener.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * Parties interested in activation and deactivation of editors extend this
- * class and implement any or all of the methods
- * 
- * @since 3.3
- * 
- */
-public abstract class ColumnViewerEditorActivationListener {
-	/**
-	 * Called before an editor is activated
-	 * 
-	 * @param event
-	 *            the event
-	 */
-	public abstract void beforeEditorActivated(ColumnViewerEditorActivationEvent event);
-
-	/**
-	 * Called after an editor has been activated
-	 * 
-	 * @param event the event
-	 */
-	public abstract void afterEditorActivated(ColumnViewerEditorActivationEvent event);
-
-	/**
-	 * Called before an editor is deactivated
-	 * 
-	 * @param event
-	 *            the event
-	 */
-	public abstract void beforeEditorDeactivated(ColumnViewerEditorDeactivationEvent event);
-
-	
-	/**
-	 * Called after an editor is deactivated
-	 * 
-	 * @param event the event
-	 */
-	public abstract void afterEditorDeactivated(ColumnViewerEditorDeactivationEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationStrategy.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationStrategy.java
deleted file mode 100644
index ce432e2..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorActivationStrategy.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											 - fix for bug 187817
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.MouseEvent;
-
-/**
- * This class is responsible to determine if a cell selection event is triggers
- * an editor activation. Implementors can extend and overwrite to implement
- * custom editing behavior
- *
- * @since 3.3
- */
-public class ColumnViewerEditorActivationStrategy {
-	private ColumnViewer viewer;
-
-	private KeyListener keyboardActivationListener;
-
-	/**
-	 * @param viewer
-	 *            the viewer the editor support is attached to
-	 */
-	public ColumnViewerEditorActivationStrategy(ColumnViewer viewer) {
-		this.viewer = viewer;
-	}
-
-	/**
-	 * @param event
-	 *            the event triggering the action
-	 * @return <code>true</code> if this event should open the editor
-	 */
-	protected boolean isEditorActivationEvent(
-			ColumnViewerEditorActivationEvent event) {
-		boolean singleSelect = ((IStructuredSelection)viewer.getSelection()).size() == 1;
-		boolean isLeftMouseSelect = event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION && ((MouseEvent)event.sourceEvent).button == 1;
-
-		return singleSelect && (isLeftMouseSelect
-				|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
-				|| event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL);
-	}
-
-	/**
-	 * @return the cell holding the current focus
-	 */
-	private ViewerCell getFocusCell() {
-		return viewer.getColumnViewerEditor().getFocusCell();
-	}
-
-	/**
-	 * @return the viewer
-	 */
-	public ColumnViewer getViewer() {
-		return viewer;
-	}
-
-	/**
-	 * Enable activation of cell editors by keyboard
-	 *
-	 * @param enable
-	 *            <code>true</code> to enable
-	 */
-	public void setEnableEditorActivationWithKeyboard(boolean enable) {
-		if (enable) {
-			if (keyboardActivationListener == null) {
-				keyboardActivationListener = new KeyListener() {
-
-					public void keyPressed(KeyEvent e) {
-						ViewerCell cell = getFocusCell();
-
-						if (cell != null) {
-							viewer
-									.triggerEditorActivationEvent(new ColumnViewerEditorActivationEvent(
-											cell, e));
-						}
-					}
-
-					public void keyReleased(KeyEvent e) {
-
-					}
-
-				};
-				viewer.getControl().addKeyListener(keyboardActivationListener);
-			}
-		} else {
-			if (keyboardActivationListener != null) {
-				viewer.getControl().removeKeyListener(
-						keyboardActivationListener);
-				keyboardActivationListener = null;
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorDeactivationEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorDeactivationEvent.java
deleted file mode 100644
index 3ed0168..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditorDeactivationEvent.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                                 fixes in bug: 178946
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-/**
- * This event is fired when an editor deactivated
- *
- * @since 3.3
- * @noextend This class is not intended to be subclassed by clients.
- *
- */
-public class ColumnViewerEditorDeactivationEvent extends EventObject {
-
-	/**
-	 *
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * The event type
-	 * @since 3.4
-	 */
-	public int eventType;
-
-	/**
-	 * Event when editor is canceled
-	 * @since 3.4
-	 */
-	public static final int EDITOR_CANCELED = 1;
-
-	/**
-	 * Event when editor is saved
-	 * @since 3.4
-	 */
-	public static final int EDITOR_SAVED = 2;
-
-	/**
-	 * @param source
-	 */
-	public ColumnViewerEditorDeactivationEvent(Object source) {
-		super(source);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java
deleted file mode 100644
index 524edbd..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                                 bugfix in: 195137, 198089
- *     Fredy Dobler <fredy@dobler.net> - bug 159600
- *     Brock Janiczak <brockj@tpg.com.au> - bug 182443
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.window.DefaultToolTip;
-import org.eclipse.jface.window.ToolTip;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * The ColumnViewerTooltipSupport is the class that provides tool tips for
- * ColumnViewers.
- *
- * @since 3.3
- *
- */
-public class ColumnViewerToolTipSupport extends DefaultToolTip {
-	private ColumnViewer viewer;
-
-	private static final String VIEWER_CELL_KEY = Policy.JFACE
-			+ "_VIEWER_CELL_KEY"; //$NON-NLS-1$
-
-	private static final int DEFAULT_SHIFT_X = 10;
-
-	private static final int DEFAULT_SHIFT_Y = 0;
-
-	/**
-	 * Enable ToolTip support for the viewer by creating an instance from this
-	 * class. To get all necessary informations this support class consults the
-	 * {@link CellLabelProvider}.
-	 *
-	 * @param viewer
-	 *            the viewer the support is attached to
-	 * @param style
-	 *            style passed to control tool tip behavior
-	 *
-	 * @param manualActivation
-	 *            <code>true</code> if the activation is done manually using
-	 *            {@link #show(Point)}
-	 */
-	protected ColumnViewerToolTipSupport(ColumnViewer viewer, int style,
-			boolean manualActivation) {
-		super(viewer.getControl(), style, manualActivation);
-		this.viewer = viewer;
-	}
-
-	/**
-	 * Enable ToolTip support for the viewer by creating an instance from this
-	 * class. To get all necessary informations this support class consults the
-	 * {@link CellLabelProvider}.
-	 *
-	 * @param viewer
-	 *            the viewer the support is attached to
-	 */
-	public static void enableFor(ColumnViewer viewer) {
-		new ColumnViewerToolTipSupport(viewer, ToolTip.NO_RECREATE, false);
-	}
-
-	/**
-	 * Enable ToolTip support for the viewer by creating an instance from this
-	 * class. To get all necessary informations this support class consults the
-	 * {@link CellLabelProvider}.
-	 *
-	 * @param viewer
-	 *            the viewer the support is attached to
-	 * @param style
-	 *            style passed to control tool tip behavior
-	 *
-	 * @see ToolTip#RECREATE
-	 * @see ToolTip#NO_RECREATE
-	 */
-	public static void enableFor(ColumnViewer viewer, int style) {
-		new ColumnViewerToolTipSupport(viewer, style, false);
-	}
-
-	protected Object getToolTipArea(Event event) {
-		return viewer.getCell(new Point(event.x, event.y));
-	}
-
-	/**
-	 * Instead of overwriting this method subclasses should overwrite
-	 * {@link #createViewerToolTipContentArea(Event, ViewerCell, Composite)}
-	 */
-	protected Composite createToolTipContentArea(Event event, Composite parent) {
-		ViewerCell cell = (ViewerCell) getData(VIEWER_CELL_KEY);
-		setData(VIEWER_CELL_KEY, null);
-
-		return createViewerToolTipContentArea(event, cell, parent);
-	}
-
-	/**
-	 * Creates the content area of the tool tip giving access to the cell the
-	 * tip is shown for. Subclasses can overload this method to implement their
-	 * own tool tip design.
-	 *
-	 * <p>
-	 * This method is called from
-	 * {@link #createToolTipContentArea(Event, Composite)} and by default calls
-	 * the {@link DefaultToolTip#createToolTipContentArea(Event, Composite)}.
-	 * </p>
-	 *
-	 * @param event
-	 *            the event that which
-	 * @param cell
-	 *            the cell the tool tip is shown for
-	 * @param parent
-	 *            the parent of the control to create
-	 * @return the control to be displayed in the tool tip area
-	 * @since 3.4
-	 */
-	protected Composite createViewerToolTipContentArea(Event event,
-			ViewerCell cell, Composite parent) {
-		return super.createToolTipContentArea(event, parent);
-	}
-
-	protected boolean shouldCreateToolTip(Event event) {
-		if (!super.shouldCreateToolTip(event)) {
-			return false;
-		}
-
-		boolean rv = false;
-
-		ViewerRow row = viewer.getViewerRow(new Point(event.x, event.y));
-
-		viewer.getControl().setToolTipText(""); //$NON-NLS-1$
-		Point point = new Point(event.x, event.y);
-
-		if (row != null) {
-			Object element = row.getItem().getData();
-
-			ViewerCell cell = row.getCell(point);
-			ViewerColumn viewPart = viewer.getViewerColumn(cell
-					.getColumnIndex());
-
-			if (viewPart == null) {
-				return false;
-			}
-
-			CellLabelProvider labelProvider = viewPart.getLabelProvider();
-			boolean useNative = labelProvider.useNativeToolTip(element);
-
-			String text = labelProvider.getToolTipText(element);
-			Image img = null;
-
-			if (!useNative) {
-				img = labelProvider.getToolTipImage(element);
-			}
-
-			if (useNative || (text == null && img == null)) {
-				viewer.getControl().setToolTipText(text);
-				rv = false;
-			} else {
-				setPopupDelay(labelProvider.getToolTipDisplayDelayTime(element));
-				setHideDelay(labelProvider.getToolTipTimeDisplayed(element));
-
-				Point shift = labelProvider.getToolTipShift(element);
-
-				if (shift == null) {
-					setShift(new Point(DEFAULT_SHIFT_X, DEFAULT_SHIFT_Y));
-				} else {
-					setShift(new Point(shift.x, shift.y));
-				}
-
-				setData(VIEWER_CELL_KEY, cell);
-
-				setText(text);
-				setImage(img);
-				setStyle(labelProvider.getToolTipStyle(element));
-				setForegroundColor(labelProvider
-						.getToolTipForegroundColor(element));
-				setBackgroundColor(labelProvider
-						.getToolTipBackgroundColor(element));
-				setFont(labelProvider.getToolTipFont(element));
-
-				// Check if at least one of the values is set
-				rv = getText(event) != null || getImage(event) != null;
-			}
-		}
-
-		return rv;
-	}
-
-	protected void afterHideToolTip(Event event) {
-		super.afterHideToolTip(event);
-		// Clear the restored value else this could be a source of a leak
-		setData(VIEWER_CELL_KEY, null);
-		if (event != null && event.widget != viewer.getControl()) {
-			viewer.getControl().setFocus();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnWeightData.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnWeightData.java
deleted file mode 100644
index aa112e4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnWeightData.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Describes the width of a table column in terms of a weight, 
- * a minimum width, and whether the column is resizable.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ColumnWeightData extends ColumnLayoutData {
-
-    /** 
-     * Default width of a column (in pixels).
-     */
-    public static final int MINIMUM_WIDTH = 20;
-
-    /**
-     * The column's minimum width in pixels.
-     */
-    public int minimumWidth;
-
-    /**
-     * The column's weight.
-     */
-    public int weight;
-
-    /**
-     * Creates a resizable column width with the given weight and a default
-     * minimum width.
-     *
-     * @param weight the weight of the column
-     */
-    public ColumnWeightData(int weight) {
-        this(weight, true);
-    }
-
-    /**
-     * Creates a resizable column width with the given weight and minimum width.
-     *
-     * @param weight the weight of the column
-     * @param minimumWidth the minimum width of the column in pixels
-     */
-    public ColumnWeightData(int weight, int minimumWidth) {
-        this(weight, minimumWidth, true);
-    }
-
-    /**
-     * Creates a column width with the given weight and minimum width.
-     *
-     * @param weight the weight of the column
-     * @param minimumWidth the minimum width of the column in pixels
-     * @param resizable <code>true</code> if the column is resizable,
-     *   and <code>false</code> if size of the column is fixed
-     */
-    public ColumnWeightData(int weight, int minimumWidth, boolean resizable) {
-        super(resizable);
-        Assert.isTrue(weight >= 0);
-        Assert.isTrue(minimumWidth >= 0);
-        this.weight = weight;
-        this.minimumWidth = minimumWidth;
-    }
-
-    /**
-     * Creates a column width with the given weight and a default
-     * minimum width.
-     *
-     * @param weight the weight of the column
-     * @param resizable <code>true</code> if the column is resizable,
-     *   and <code>false</code> if size of the column is fixed
-     */
-    public ColumnWeightData(int weight, boolean resizable) {
-        this(weight, MINIMUM_WIDTH, resizable);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxCellEditor.java
deleted file mode 100644
index 11c6136..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxCellEditor.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - bugfix in 174739
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.text.MessageFormat; // Not using ICU to support standalone JFace
-// scenario
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A cell editor that presents a list of items in a combo box. The cell editor's
- * value is the zero-based index of the selected item.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ComboBoxCellEditor extends AbstractComboBoxCellEditor {
-
-	/**
-	 * The list of items to present in the combo box.
-	 */
-	private String[] items;
-
-	/**
-	 * The zero-based index of the selected item.
-	 */
-	int selection;
-
-	/**
-	 * The custom combo box control.
-	 */
-	CCombo comboBox;
-
-	/**
-	 * Default ComboBoxCellEditor style
-	 */
-	private static final int defaultStyle = SWT.NONE;
-
-	/**
-	 * Creates a new cell editor with no control and no st of choices.
-	 * Initially, the cell editor has no cell validator.
-	 *
-	 * @since 2.1
-	 * @see CellEditor#setStyle
-	 * @see CellEditor#create
-	 * @see ComboBoxCellEditor#setItems
-	 * @see CellEditor#dispose
-	 */
-	public ComboBoxCellEditor() {
-		setStyle(defaultStyle);
-	}
-
-	/**
-	 * Creates a new cell editor with a combo containing the given list of
-	 * choices and parented under the given control. The cell editor value is
-	 * the zero-based index of the selected item. Initially, the cell editor has
-	 * no cell validator and the first item in the list is selected.
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @param items
-	 *            the list of strings for the combo box
-	 */
-	public ComboBoxCellEditor(Composite parent, String[] items) {
-		this(parent, items, defaultStyle);
-	}
-
-	/**
-	 * Creates a new cell editor with a combo containing the given list of
-	 * choices and parented under the given control. The cell editor value is
-	 * the zero-based index of the selected item. Initially, the cell editor has
-	 * no cell validator and the first item in the list is selected.
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @param items
-	 *            the list of strings for the combo box
-	 * @param style
-	 *            the style bits
-	 * @since 2.1
-	 */
-	public ComboBoxCellEditor(Composite parent, String[] items, int style) {
-		super(parent, style);
-		setItems(items);
-	}
-
-	/**
-	 * Returns the list of choices for the combo box
-	 *
-	 * @return the list of choices for the combo box
-	 */
-	public String[] getItems() {
-		return this.items;
-	}
-
-	/**
-	 * Sets the list of choices for the combo box
-	 *
-	 * @param items
-	 *            the list of choices for the combo box
-	 */
-	public void setItems(String[] items) {
-		Assert.isNotNull(items);
-		this.items = items;
-		populateComboBoxItems();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on CellEditor.
-	 */
-	protected Control createControl(Composite parent) {
-
-		comboBox = new CCombo(parent, getStyle());
-		comboBox.setFont(parent.getFont());
-
-		populateComboBoxItems();
-
-		comboBox.addKeyListener(new KeyAdapter() {
-			// hook key pressed - see PR 14201
-			public void keyPressed(KeyEvent e) {
-				keyReleaseOccured(e);
-			}
-		});
-
-		comboBox.addSelectionListener(new SelectionAdapter() {
-			public void widgetDefaultSelected(SelectionEvent event) {
-				applyEditorValueAndDeactivate();
-			}
-
-			public void widgetSelected(SelectionEvent event) {
-				selection = comboBox.getSelectionIndex();
-			}
-		});
-
-		comboBox.addTraverseListener(new TraverseListener() {
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_ESCAPE
-						|| e.detail == SWT.TRAVERSE_RETURN) {
-					e.doit = false;
-				}
-			}
-		});
-
-		comboBox.addFocusListener(new FocusAdapter() {
-			public void focusLost(FocusEvent e) {
-				ComboBoxCellEditor.this.focusLost();
-			}
-		});
-		return comboBox;
-	}
-
-	/**
-	 * The <code>ComboBoxCellEditor</code> implementation of this
-	 * <code>CellEditor</code> framework method returns the zero-based index
-	 * of the current selection.
-	 *
-	 * @return the zero-based index of the current selection wrapped as an
-	 *         <code>Integer</code>
-	 */
-	protected Object doGetValue() {
-		return new Integer(selection);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on CellEditor.
-	 */
-	protected void doSetFocus() {
-		comboBox.setFocus();
-	}
-
-	/**
-	 * The <code>ComboBoxCellEditor</code> implementation of this
-	 * <code>CellEditor</code> framework method sets the minimum width of the
-	 * cell. The minimum width is 10 characters if <code>comboBox</code> is
-	 * not <code>null</code> or <code>disposed</code> else it is 60 pixels
-	 * to make sure the arrow button and some text is visible. The list of
-	 * CCombo will be wide enough to show its longest item.
-	 */
-	public LayoutData getLayoutData() {
-		LayoutData layoutData = super.getLayoutData();
-		if ((comboBox == null) || comboBox.isDisposed()) {
-			layoutData.minimumWidth = 60;
-		} else {
-			// make the comboBox 10 characters wide
-			GC gc = new GC(comboBox);
-			layoutData.minimumWidth = (gc.getFontMetrics()
-					.getAverageCharWidth() * 10) + 10;
-			gc.dispose();
-		}
-		return layoutData;
-	}
-
-	/**
-	 * The <code>ComboBoxCellEditor</code> implementation of this
-	 * <code>CellEditor</code> framework method accepts a zero-based index of
-	 * a selection.
-	 *
-	 * @param value
-	 *            the zero-based index of the selection wrapped as an
-	 *            <code>Integer</code>
-	 */
-	protected void doSetValue(Object value) {
-		Assert.isTrue(comboBox != null && (value instanceof Integer));
-		selection = ((Integer) value).intValue();
-		comboBox.select(selection);
-	}
-
-	/**
-	 * Updates the list of choices for the combo box for the current control.
-	 */
-	private void populateComboBoxItems() {
-		if (comboBox != null && items != null) {
-			comboBox.removeAll();
-			for (int i = 0; i < items.length; i++) {
-				comboBox.add(items[i], i);
-			}
-
-			setValueValid(true);
-			selection = 0;
-		}
-	}
-
-	/**
-	 * Applies the currently selected value and deactivates the cell editor
-	 */
-	void applyEditorValueAndDeactivate() {
-		// must set the selection before getting value
-		selection = comboBox.getSelectionIndex();
-		Object newValue = doGetValue();
-		markDirty();
-		boolean isValid = isCorrect(newValue);
-		setValueValid(isValid);
-
-		if (!isValid) {
-			// Only format if the 'index' is valid
-			if (items.length > 0 && selection >= 0 && selection < items.length) {
-				// try to insert the current value into the error message.
-				setErrorMessage(MessageFormat.format(getErrorMessage(),
-						new Object[] { items[selection] }));
-			} else {
-				// Since we don't have a valid index, assume we're using an
-				// 'edit'
-				// combo so format using its text value
-				setErrorMessage(MessageFormat.format(getErrorMessage(),
-						new Object[] { comboBox.getText() }));
-			}
-		}
-
-		fireApplyEditorValue();
-		deactivate();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.CellEditor#focusLost()
-	 */
-	protected void focusLost() {
-		if (isActivated()) {
-			applyEditorValueAndDeactivate();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.CellEditor#keyReleaseOccured(org.eclipse.swt.events.KeyEvent)
-	 */
-	protected void keyReleaseOccured(KeyEvent keyEvent) {
-		if (keyEvent.character == '\u001b') { // Escape character
-			fireCancelEditor();
-		} else if (keyEvent.character == '\t') { // tab key
-			applyEditorValueAndDeactivate();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxViewerCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxViewerCellEditor.java
deleted file mode 100644
index 6ac42c9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboBoxViewerCellEditor.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Tom Schindl and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                                 bugfix in 174739
- *     Eric Rizzo - bug 213315
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.text.MessageFormat; // Not using ICU to support standalone JFace
-// scenario
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A cell editor that presents a list of items in a combo box. In contrast to
- * {@link ComboBoxCellEditor} it wraps the underlying {@link CCombo} using a
- * {@link ComboViewer}
- * @since 3.4
- */
-public class ComboBoxViewerCellEditor extends AbstractComboBoxCellEditor {
-
-	/**
-	 * The custom combo box control.
-	 */
-	ComboViewer viewer;
-
-	Object selectedValue;
-
-	/**
-	 * Default ComboBoxCellEditor style
-	 */
-	private static final int defaultStyle = SWT.NONE;
-
-	/**
-	 * Creates a new cell editor with a combo viewer and a default style
-	 *
-	 * @param parent
-	 *            the parent control
-	 */
-	public ComboBoxViewerCellEditor(Composite parent) {
-		this(parent, defaultStyle);
-	}
-
-	/**
-	 * Creates a new cell editor with a combo viewer and the given style
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @param style
-	 *            the style bits
-	 */
-	public ComboBoxViewerCellEditor(Composite parent, int style) {
-		super(parent, style);
-		setValueValid(true);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on CellEditor.
-	 */
-	protected Control createControl(Composite parent) {
-
-		CCombo comboBox = new CCombo(parent, getStyle());
-		comboBox.setFont(parent.getFont());
-		viewer = new ComboViewer(comboBox);
-
-		comboBox.addKeyListener(new KeyAdapter() {
-			// hook key pressed - see PR 14201
-			public void keyPressed(KeyEvent e) {
-				keyReleaseOccured(e);
-			}
-		});
-
-		comboBox.addSelectionListener(new SelectionAdapter() {
-			public void widgetDefaultSelected(SelectionEvent event) {
-				applyEditorValueAndDeactivate();
-			}
-
-			public void widgetSelected(SelectionEvent event) {
-				ISelection selection = viewer.getSelection();
-				if (selection.isEmpty()) {
-					selectedValue = null;
-				} else {
-					selectedValue = ((IStructuredSelection) selection)
-							.getFirstElement();
-				}
-			}
-		});
-
-		comboBox.addTraverseListener(new TraverseListener() {
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_ESCAPE
-						|| e.detail == SWT.TRAVERSE_RETURN) {
-					e.doit = false;
-				}
-			}
-		});
-
-		comboBox.addFocusListener(new FocusAdapter() {
-			public void focusLost(FocusEvent e) {
-				ComboBoxViewerCellEditor.this.focusLost();
-			}
-		});
-		return comboBox;
-	}
-
-	/**
-	 * The <code>ComboBoxCellEditor</code> implementation of this
-	 * <code>CellEditor</code> framework method returns the zero-based index
-	 * of the current selection.
-	 *
-	 * @return the zero-based index of the current selection wrapped as an
-	 *         <code>Integer</code>
-	 */
-	protected Object doGetValue() {
-		return selectedValue;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on CellEditor.
-	 */
-	protected void doSetFocus() {
-		viewer.getControl().setFocus();
-	}
-
-	/**
-	 * The <code>ComboBoxCellEditor</code> implementation of this
-	 * <code>CellEditor</code> framework method sets the minimum width of the
-	 * cell. The minimum width is 10 characters if <code>comboBox</code> is
-	 * not <code>null</code> or <code>disposed</code> eles it is 60 pixels
-	 * to make sure the arrow button and some text is visible. The list of
-	 * CCombo will be wide enough to show its longest item.
-	 */
-	public LayoutData getLayoutData() {
-		LayoutData layoutData = super.getLayoutData();
-		if ((viewer.getControl() == null) || viewer.getControl().isDisposed()) {
-			layoutData.minimumWidth = 60;
-		} else {
-			// make the comboBox 10 characters wide
-			GC gc = new GC(viewer.getControl());
-			layoutData.minimumWidth = (gc.getFontMetrics()
-					.getAverageCharWidth() * 10) + 10;
-			gc.dispose();
-		}
-		return layoutData;
-	}
-
-	/**
-	 * Set a new value
-	 *
-	 * @param value
-	 *            the new value
-	 */
-	protected void doSetValue(Object value) {
-	    Assert.isTrue(viewer != null);
-	    selectedValue = value;
-	    if (value == null) {
-	        viewer.setSelection(StructuredSelection.EMPTY);
-	    } else {
-	        viewer.setSelection(new StructuredSelection(value));
-	    }
-	}
-
-	/**
-	 * @param labelProvider
-	 *            the label provider used
-	 * @see StructuredViewer#setLabelProvider(IBaseLabelProvider)
-	 */
-	public void setLabelProvider(IBaseLabelProvider labelProvider) {
-		viewer.setLabelProvider(labelProvider);
-	}
-
-	/**
-	 * @param provider
-	 *            the content provider used
-	 * @see StructuredViewer#setContentProvider(IContentProvider)
-	 */
-	public void setContenProvider(IStructuredContentProvider provider) {
-		viewer.setContentProvider(provider);
-	}
-
-	/**
-	 * @param input
-	 *            the input used
-	 * @see StructuredViewer#setInput(Object)
-	 */
-	public void setInput(Object input) {
-		viewer.setInput(input);
-	}
-
-	/**
-	 * @return get the viewer
-	 */
-	public ComboViewer getViewer() {
-		return viewer;
-	}
-
-	/**
-	 * Applies the currently selected value and deactiavates the cell editor
-	 */
-	void applyEditorValueAndDeactivate() {
-		// must set the selection before getting value
-		ISelection selection = viewer.getSelection();
-		if (selection.isEmpty()) {
-			selectedValue = null;
-		} else {
-			selectedValue = ((IStructuredSelection) selection)
-					.getFirstElement();
-		}
-
-		Object newValue = doGetValue();
-		markDirty();
-		boolean isValid = isCorrect(newValue);
-		setValueValid(isValid);
-
-		if (!isValid) {
-			MessageFormat.format(getErrorMessage(),
-					new Object[] { selectedValue });
-		}
-
-		fireApplyEditorValue();
-		deactivate();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.CellEditor#focusLost()
-	 */
-	protected void focusLost() {
-		if (isActivated()) {
-			applyEditorValueAndDeactivate();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.CellEditor#keyReleaseOccured(org.eclipse.swt.events.KeyEvent)
-	 */
-	protected void keyReleaseOccured(KeyEvent keyEvent) {
-		if (keyEvent.character == '\u001b') { // Escape character
-			fireCancelEditor();
-		} else if (keyEvent.character == '\t') { // tab key
-			applyEditorValueAndDeactivate();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboViewer.java
deleted file mode 100644
index 27421a3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ComboViewer.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids - bug 69254
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A concrete viewer based either on an SWT <code>Combo</code> control or <code>CCombo</code>
- * control. This class is intended as an alternative to the JFace <code>ListViewer</code>, which displays
- * its content in a combo box rather than a list. Wherever possible, this class attempts to behave
- * like ListViewer. <p>
- * 
- * This class is designed to be instantiated with a pre-existing SWT combo control 
- * and configured with a domain-specific content provider, label provider, element
- * filter (optional), and element sorter (optional).
- * </p>
- * 
- * @see org.eclipse.jface.viewers.ListViewer
- * @since 3.0 (made non-final in 3.4)
- */
-public class ComboViewer extends AbstractListViewer {
-
-    /**
-     * This viewer's list control if this viewer is instantiated with a combo control; otherwise
-     * <code>null</code>.
-     * 
-     * @see #ComboViewer(Combo)
-     */
-    private Combo combo;
-    
-    /**
-     * This viewer's list control if this viewer is instantiated with a CCombo control; otherwise
-     * <code>null</code>.
-     * 
-     * @see #ComboViewer(CCombo)
-     * @since 3.3
-     */
-    private CCombo ccombo;
-
-    /**
-     * Creates a combo viewer on a newly-created combo control under the given parent.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param parent the parent control
-     */
-    public ComboViewer(Composite parent) {
-        this(parent, SWT.READ_ONLY | SWT.BORDER);
-    }
-
-    /**
-     * Creates a combo viewer on a newly-created combo control under the given parent.
-     * The combo control is created using the given SWT style bits.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param parent the parent control
-     * @param style the SWT style bits
-     */
-    public ComboViewer(Composite parent, int style) {
-        this(new Combo(parent, style));
-    }
-
-    /**
-     * Creates a combo viewer on the given combo control.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param list the combo control
-     */
-    public ComboViewer(Combo list) {
-        this.combo = list;
-        hookControl(list);
-    }
-    
-    /**
-     * Creates a combo viewer on the given CCombo control.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param list the CCombo control
-     * @since 3.3
-     */
-    public ComboViewer(CCombo list) {
-        this.ccombo = list;
-        hookControl(list);
-    }
-
-    protected void listAdd(String string, int index) {
-        if (combo == null) {
-            ccombo.add(string, index);
-        } else {
-            combo.add(string, index);
-        }
-    }
-
-    protected void listSetItem(int index, String string) {
-        if (combo == null) {
-            ccombo.setItem(index, string);
-        } else {
-            combo.setItem(index, string);
-        }
-    }
-
-    protected int[] listGetSelectionIndices() {
-        if (combo == null) {
-            return new int[] { ccombo.getSelectionIndex() };
-        } else {
-            return new int[] { combo.getSelectionIndex() };
-        }
-    }
-
-    protected int listGetItemCount() {
-        if (combo == null) {
-            return ccombo.getItemCount();
-        } else {
-            return combo.getItemCount();
-        }
-    }
-
-    protected void listSetItems(String[] labels) {
-        if (combo == null) {
-            ccombo.setItems(labels);
-        } else {
-            combo.setItems(labels);
-        }
-    }
-
-    protected void listRemoveAll() {
-        if (combo == null) {
-            ccombo.removeAll();
-        } else {
-            combo.removeAll();
-        }
-    }
-
-    protected void listRemove(int index) {
-        if (combo == null) {
-            ccombo.remove(index);
-        } else {
-            combo.remove(index);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Viewer.
-     */
-    public Control getControl() {
-        if (combo == null) {
-            return ccombo;
-        } else {
-            return combo;
-        }
-    }
-
-    /**
-	 * Returns this list viewer's list control. If the viewer was not created on
-	 * a CCombo control, some kind of unchecked exception is thrown.
-	 * 
-	 * @return the list control
-     * @since 3.3
-	 */
-    public CCombo getCCombo() {
-        Assert.isNotNull(ccombo);
-        return ccombo;
-    }
-
-    /**
-     * Returns this list viewer's list control. If the viewer was not created on
-	 * a Combo control, some kind of unchecked exception is thrown.
-     *
-     * @return the list control
-     */
-    public Combo getCombo() {
-    	Assert.isNotNull(combo);
-        return combo;
-    }
-    
-    /*
-     * Do nothing -- combos only display the selected element, so there is no way
-     * we can ensure that the given element is visible without changing the selection.
-     * Method defined on StructuredViewer.
-     */
-    public void reveal(Object element) {
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listSetSelection(int[])
-     */
-    protected void listSetSelection(int[] ixs) {
-        if (combo == null) {
-            for (int idx = 0; idx < ixs.length; idx++) {
-                ccombo.select(ixs[idx]);
-            }
-        } else {
-            for (int idx = 0; idx < ixs.length; idx++) {
-                combo.select(ixs[idx]);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listDeselectAll()
-     */
-    protected void listDeselectAll() {
-        if (combo == null) {
-            ccombo.deselectAll();
-            ccombo.clearSelection();
-        } else {
-            combo.deselectAll();
-            combo.clearSelection();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listShowSelection()
-     */
-    protected void listShowSelection() {
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ContentViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ContentViewer.java
deleted file mode 100644
index 6128f87..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ContentViewer.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A content viewer is a model-based adapter on a widget which accesses its
- * model by means of a content provider and a label provider.
- * <p>
- * A viewer's model consists of elements, represented by objects.
- * A viewer defines and implements generic infrastructure for handling model 
- * input, updates, and selections in terms of elements.
- * Input is obtained by querying an <code>IContentProvider</code> which returns
- * elements. The elements themselves are not displayed directly.  They are
- * mapped to labels, containing text and/or an image, using the viewer's 
- * <code>ILabelProvider</code>.
- * </p>
- * <p>
- * Implementing a concrete content viewer typically involves the following steps:
- * <ul>
- * <li>
- * create SWT controls for viewer (in constructor) (optional)
- * </li>
- * <li>
- * initialize SWT controls from input (inputChanged)
- * </li>
- * <li>
- * define viewer-specific update methods
- * </li>
- * <li>
- * support selections (<code>setSelection</code>, <code>getSelection</code>)
- * </ul>
- * </p>
- */
-public abstract class ContentViewer extends Viewer {
-
-    /**
-     * This viewer's content provider, or <code>null</code> if none.
-     */
-    private IContentProvider contentProvider = null;
-
-    /**
-     * This viewer's input, or <code>null</code> if none.
-     * The viewer's input provides the "model" for the viewer's content.
-     */
-    private Object input = null;
-
-    /**
-     * This viewer's label provider. Initially <code>null</code>, but
-     * lazily initialized (to a <code>SimpleLabelProvider</code>).
-     */
-    private IBaseLabelProvider labelProvider = null;
-
-    /**
-     * This viewer's label provider listener.
-     * Note: Having a viewer register a label provider listener with
-     * a label provider avoids having to define public methods
-     * for internal events.
-     */
-    private final ILabelProviderListener labelProviderListener = new ILabelProviderListener() {
-        public void labelProviderChanged(LabelProviderChangedEvent event) {
-            ContentViewer.this.handleLabelProviderChanged(event);
-        }
-    };
-
-    /**
-     * Creates a content viewer with no input, no content provider, and a
-     * default label provider.
-     */
-    protected ContentViewer() {
-    }
-
-    /**
-     * Returns the content provider used by this viewer, 
-     * or <code>null</code> if this view does not yet have a content
-     * provider.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method returns the content
-     * provider recorded is an internal state variable. 
-     * Overriding this method is generally not required; 
-     * however, if overriding in a subclass, 
-     * <code>super.getContentProvider</code> must be invoked.
-     * </p>
-     *
-     * @return the content provider, or <code>null</code> if none
-     */
-    public IContentProvider getContentProvider() {
-        return contentProvider;
-    }
-
-    /**
-     * The <code>ContentViewer</code> implementation of this <code>IInputProvider</code> 
-     * method returns the current input of this viewer, or <code>null</code>
-     * if none. The viewer's input provides the "model" for the viewer's
-     * content.
-     */
-    public Object getInput() {
-        return input;
-    }
-
-    /**
-     * Returns the label provider used by this viewer.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method returns the label
-     * provider recorded in an internal state variable; if none has been
-     * set (with <code>setLabelProvider</code>) a default label provider
-     * will be created, remembered, and returned.
-     * Overriding this method is generally not required; 
-     * however, if overriding in a subclass,
-     * <code>super.getLabelProvider</code> must be invoked.
-     * </p>
-     *
-     * @return a label provider
-     */
-    public IBaseLabelProvider getLabelProvider() {
-        if (labelProvider == null) {
-			labelProvider = new LabelProvider();
-		}
-        return labelProvider;
-    }
-
-    /**
-     * Handles a dispose event on this viewer's control.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method disposes of this
-     * viewer's label provider and content provider (if it has one).
-     * Subclasses should override this method to perform any additional
-     * cleanup of resources; however, overriding methods must invoke
-     * <code>super.handleDispose</code>.
-     * </p>
-     *
-     * @param event a dispose event
-     */
-    protected void handleDispose(DisposeEvent event) {
-        if (contentProvider != null) {
-            contentProvider.inputChanged(this, getInput(), null);
-            contentProvider.dispose();
-            contentProvider = null;
-        }
-        if (labelProvider != null) {
-            labelProvider.removeListener(labelProviderListener);
-            labelProvider.dispose();
-            labelProvider = null;
-        }
-        input = null;
-    }
-
-    /**
-     * Handles a label provider changed event.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method calls <code>labelProviderChanged()</code>
-     * to cause a complete refresh of the viewer.
-     * Subclasses may reimplement or extend. 
-     * </p>
-     * @param event the change event
-     */
-    protected void handleLabelProviderChanged(LabelProviderChangedEvent event) {
-        labelProviderChanged();
-    }
-
-    /**
-     * Adds event listener hooks to the given control.
-     * <p>
-     * All subclasses must call this method when their control is
-     * first established.
-     * </p> 
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method hooks 
-     * dispose events for the given control.
-     * Subclasses may override if they need to add other control hooks;
-     * however, <code>super.hookControl</code> must be invoked.
-     * </p>
-     *
-     * @param control the control
-     */
-    protected void hookControl(Control control) {
-        control.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent event) {
-                handleDispose(event);
-            }
-        });
-    }
-
-    /**
-     * Notifies that the label provider has changed.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method calls <code>refresh()</code>.
-     * Subclasses may reimplement or extend.
-     * </p>
-     */
-    protected void labelProviderChanged() {
-        refresh();
-    }
-
-    /**
-     * Sets the content provider used by this viewer.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method records the 
-     * content provider in an internal state variable.
-     * Overriding this method is generally not required; 
-     * however, if overriding in a subclass,
-     * <code>super.setContentProvider</code> must be invoked.
-     * </p>
-     *
-     * @param contentProvider the content provider
-     * @see #getContentProvider
-     */
-    public void setContentProvider(IContentProvider contentProvider) {
-        Assert.isNotNull(contentProvider);
-        IContentProvider oldContentProvider = this.contentProvider;
-        this.contentProvider = contentProvider;
-        if (oldContentProvider != null) {
-            Object currentInput = getInput();
-            oldContentProvider.inputChanged(this, currentInput, null);
-            oldContentProvider.dispose();
-            contentProvider.inputChanged(this, null, currentInput);
-            refresh();
-        }
-    }
-
-    /**
-     * The <code>ContentViewer</code> implementation of this <code>Viewer</code>
-     * method invokes <code>inputChanged</code> on the content provider and then the
-     * <code>inputChanged</code> hook method. This method fails if this viewer does
-     * not have a content provider. Subclassers are advised to override 
-     * <code>inputChanged</code> rather than this method, but may extend this method
-     * if required.
-     */
-    public void setInput(Object input) {
-        Assert
-                .isTrue(getContentProvider() != null,
-                        "ContentViewer must have a content provider when input is set."); //$NON-NLS-1$
-
-        Object oldInput = getInput();
-        contentProvider.inputChanged(this, oldInput, input);
-        this.input = input;
-
-        // call input hook
-        inputChanged(this.input, oldInput);
-    }
-
-    /**
-     * Sets the label provider for this viewer.
-     * <p>
-     * The <code>ContentViewer</code> implementation of this method ensures that the
-     * given label provider is connected to this viewer and the
-     * former label provider is disconnected from this viewer.
-     * Overriding this method is generally not required; 
-     * however, if overriding in a subclass,
-     * <code>super.setLabelProvider</code> must be invoked.
-     * </p>
-     *
-     * @param labelProvider the label provider, or <code>null</code> if none
-     */
-    public void setLabelProvider(IBaseLabelProvider labelProvider) {
-        IBaseLabelProvider oldProvider = this.labelProvider;
-        // If it hasn't changed, do nothing.
-        // This also ensures that the provider is not disposed
-        // if set a second time.
-        if (labelProvider == oldProvider) {
-            return;
-        }
-        if (oldProvider != null) {
-            oldProvider.removeListener(this.labelProviderListener);
-        }
-        this.labelProvider = labelProvider;
-        if (labelProvider != null) {
-            labelProvider.addListener(this.labelProviderListener);
-        }
-        refresh();
-
-        // Dispose old provider after refresh, so that items never refer to stale images.
-        if (oldProvider != null) {
-    		internalDisposeLabelProvider(oldProvider);
-        }
-    }
-
-	/**
-	 * @param oldProvider
-	 * 
-	 * @since 3.4
-	 */
-	void internalDisposeLabelProvider(IBaseLabelProvider oldProvider) {
-		oldProvider.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CustomHashtable.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CustomHashtable.java
deleted file mode 100644
index c611558..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/CustomHashtable.java
+++ /dev/null
@@ -1,434 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Peter Shipton - original hashtable implementation
- *     Nick Edgar - added element comparer support
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-
-/**
- * CustomHashtable associates keys with values. Keys and values cannot be null.
- * The size of the Hashtable is the number of key/value pairs it contains.
- * The capacity is the number of key/value pairs the Hashtable can hold.
- * The load factor is a float value which determines how full the Hashtable
- * gets before expanding the capacity. If the load factor of the Hashtable
- * is exceeded, the capacity is doubled.
- * <p>
- * CustomHashtable allows a custom comparator and hash code provider.
- */
-/* package */final class CustomHashtable {
-
-    /**
-     * HashMapEntry is an internal class which is used to hold the entries of a Hashtable.
-     */
-    private static class HashMapEntry {
-        Object key, value;
-
-        HashMapEntry next;
-
-        HashMapEntry(Object theKey, Object theValue) {
-            key = theKey;
-            value = theValue;
-        }
-    }
-
-    private static final class EmptyEnumerator implements Enumeration {
-        public boolean hasMoreElements() {
-            return false;
-        }
-
-        public Object nextElement() {
-            throw new NoSuchElementException();
-        }
-    }
-
-    private class HashEnumerator implements Enumeration {
-        boolean key;
-
-        int start;
-
-        HashMapEntry entry;
-
-        HashEnumerator(boolean isKey) {
-            key = isKey;
-            start = firstSlot;
-        }
-
-        public boolean hasMoreElements() {
-            if (entry != null) {
-				return true;
-			}
-            while (start <= lastSlot) {
-				if (elementData[start++] != null) {
-                    entry = elementData[start - 1];
-                    return true;
-                }
-			}
-            return false;
-        }
-
-        public Object nextElement() {
-            if (hasMoreElements()) {
-                Object result = key ? entry.key : entry.value;
-                entry = entry.next;
-                return result;
-            } else {
-				throw new NoSuchElementException();
-			}
-        }
-    }
-
-    transient int elementCount;
-
-    transient HashMapEntry[] elementData;
-
-    private float loadFactor;
-
-    private int threshold;
-
-    transient int firstSlot = 0;
-
-    transient int lastSlot = -1;
-
-    transient private IElementComparer comparer;
-
-    private static final EmptyEnumerator emptyEnumerator = new EmptyEnumerator();
-
-    /**
-     * The default capacity used when not specified in the constructor.
-     */
-    public static final int DEFAULT_CAPACITY = 13;
-
-    /**
-     * Constructs a new Hashtable using the default capacity
-     * and load factor.
-     */
-    public CustomHashtable() {
-        this(13);
-    }
-
-    /**
-     * Constructs a new Hashtable using the specified capacity
-     * and the default load factor.
-     *
-     * @param capacity the initial capacity
-     */
-    public CustomHashtable(int capacity) {
-        this(capacity, null);
-    }
-
-    /**
-     * Constructs a new hash table with the default capacity and the given
-     * element comparer.
-     *
-     * @param comparer the element comparer to use to compare keys and obtain
-     *   hash codes for keys, or <code>null</code>  to use the normal 
-     *   <code>equals</code> and <code>hashCode</code> methods
-     */
-    public CustomHashtable(IElementComparer comparer) {
-        this(DEFAULT_CAPACITY, comparer);
-    }
-
-    /**
-     * Constructs a new hash table with the given capacity and the given
-     * element comparer.
-     * 
-     * @param capacity the maximum number of elements that can be added without
-     *   rehashing
-     * @param comparer the element comparer to use to compare keys and obtain
-     *   hash codes for keys, or <code>null</code>  to use the normal 
-     *   <code>equals</code> and <code>hashCode</code> methods
-     */
-    public CustomHashtable(int capacity, IElementComparer comparer) {
-        if (capacity >= 0) {
-            elementCount = 0;
-            elementData = new HashMapEntry[capacity == 0 ? 1 : capacity];
-            firstSlot = elementData.length;
-            loadFactor = 0.75f;
-            computeMaxSize();
-        } else {
-			throw new IllegalArgumentException();
-		}
-        this.comparer = comparer;
-    }
-
-    /**
-     * Constructs a new hash table with enough capacity to hold all keys in the
-     * given hash table, then adds all key/value pairs in the given hash table
-     * to the new one, using the given element comparer.
-     * @param table the original hash table to copy from
-     * 
-     * @param comparer the element comparer to use to compare keys and obtain
-     *   hash codes for keys, or <code>null</code>  to use the normal 
-     *   <code>equals</code> and <code>hashCode</code> methods
-     */
-    public CustomHashtable(CustomHashtable table, IElementComparer comparer) {
-        this(table.size() * 2, comparer);
-        for (int i = table.elementData.length; --i >= 0;) {
-            HashMapEntry entry = table.elementData[i];
-            while (entry != null) {
-                put(entry.key, entry.value);
-                entry = entry.next;
-            }
-        }
-    }
-    
-    /**
-     * Returns the element comparer used  to compare keys and to obtain
-     * hash codes for keys, or <code>null</code> if no comparer has been
-     * provided.
-     * 
-     * @return the element comparer or <code>null</code>
-     * 
-     * @since 3.2
-     */
-    public IElementComparer getComparer() {
-    	return comparer;
-    }
-
-    private void computeMaxSize() {
-        threshold = (int) (elementData.length * loadFactor);
-    }
-
-    /**
-     * Answers if this Hashtable contains the specified object as a key
-     * of one of the key/value pairs.
-     *
-     * @param		key	the object to look for as a key in this Hashtable
-     * @return		true if object is a key in this Hashtable, false otherwise
-     */
-    public boolean containsKey(Object key) {
-        return getEntry(key) != null;
-    }
-
-    /**
-     * Answers an Enumeration on the values of this Hashtable. The
-     * results of the Enumeration may be affected if the contents
-     * of this Hashtable are modified.
-     *
-     * @return		an Enumeration of the values of this Hashtable
-     */
-    public Enumeration elements() {
-        if (elementCount == 0) {
-			return emptyEnumerator;
-		}
-        return new HashEnumerator(false);
-    }
-
-    /**
-     * Answers the value associated with the specified key in
-     * this Hashtable.
-     *
-     * @param		key	the key of the value returned
-     * @return		the value associated with the specified key, null if the specified key
-     *				does not exist
-     */
-    public Object get(Object key) {
-        int index = (hashCode(key) & 0x7FFFFFFF) % elementData.length;
-        HashMapEntry entry = elementData[index];
-        while (entry != null) {
-            if (keyEquals(key, entry.key)) {
-				return entry.value;
-			}
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    private HashMapEntry getEntry(Object key) {
-        int index = (hashCode(key) & 0x7FFFFFFF) % elementData.length;
-        HashMapEntry entry = elementData[index];
-        while (entry != null) {
-            if (keyEquals(key, entry.key)) {
-				return entry;
-			}
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Answers the hash code for the given key.
-     */
-    private int hashCode(Object key) {
-        if (comparer == null) {
-			return key.hashCode();
-		} else {
-			return comparer.hashCode(key);
-		}
-    }
-
-    /**
-     * Compares two keys for equality.
-     */
-    private boolean keyEquals(Object a, Object b) {
-        if (comparer == null) {
-			return a.equals(b);
-		} else {
-			return comparer.equals(a, b);
-		}
-    }
-
-    /**
-     * Answers an Enumeration on the keys of this Hashtable. The
-     * results of the Enumeration may be affected if the contents
-     * of this Hashtable are modified.
-     *
-     * @return		an Enumeration of the keys of this Hashtable
-     */
-    public Enumeration keys() {
-        if (elementCount == 0) {
-			return emptyEnumerator;
-		}
-        return new HashEnumerator(true);
-    }
-
-    /**
-     * Associate the specified value with the specified key in this Hashtable.
-     * If the key already exists, the old value is replaced. The key and value
-     * cannot be null.
-     *
-     * @param		key	the key to add
-     * @param		value	the value to add
-     * @return		the old value associated with the specified key, null if the key did
-     *				not exist
-     */
-    public Object put(Object key, Object value) {
-        if (key != null && value != null) {
-            int index = (hashCode(key) & 0x7FFFFFFF) % elementData.length;
-            HashMapEntry entry = elementData[index];
-            while (entry != null && !keyEquals(key, entry.key)) {
-				entry = entry.next;
-			}
-            if (entry == null) {
-                if (++elementCount > threshold) {
-                    rehash();
-                    index = (hashCode(key) & 0x7FFFFFFF) % elementData.length;
-                }
-                if (index < firstSlot) {
-					firstSlot = index;
-				}
-                if (index > lastSlot) {
-					lastSlot = index;
-				}
-                entry = new HashMapEntry(key, value);
-                entry.next = elementData[index];
-                elementData[index] = entry;
-                return null;
-            }
-            Object result = entry.value;
-            entry.key = key; // important to avoid hanging onto keys that are equal but "old" -- see bug 30607
-            entry.value = value;
-            return result;
-        } else {
-			throw new NullPointerException();
-		}
-    }
-
-    /**
-     * Increases the capacity of this Hashtable. This method is sent when
-     * the size of this Hashtable exceeds the load factor.
-     */
-    private void rehash() {
-        int length = elementData.length << 1;
-        if (length == 0) {
-			length = 1;
-		}
-        firstSlot = length;
-        lastSlot = -1;
-        HashMapEntry[] newData = new HashMapEntry[length];
-        for (int i = elementData.length; --i >= 0;) {
-            HashMapEntry entry = elementData[i];
-            while (entry != null) {
-                int index = (hashCode(entry.key) & 0x7FFFFFFF) % length;
-                if (index < firstSlot) {
-					firstSlot = index;
-				}
-                if (index > lastSlot) {
-					lastSlot = index;
-				}
-                HashMapEntry next = entry.next;
-                entry.next = newData[index];
-                newData[index] = entry;
-                entry = next;
-            }
-        }
-        elementData = newData;
-        computeMaxSize();
-    }
-
-    /**
-     * Remove the key/value pair with the specified key from this Hashtable.
-     *
-     * @param		key	the key to remove
-     * @return		the value associated with the specified key, null if the specified key
-     *				did not exist
-     */
-    public Object remove(Object key) {
-        HashMapEntry last = null;
-        int index = (hashCode(key) & 0x7FFFFFFF) % elementData.length;
-        HashMapEntry entry = elementData[index];
-        while (entry != null && !keyEquals(key, entry.key)) {
-            last = entry;
-            entry = entry.next;
-        }
-        if (entry != null) {
-            if (last == null) {
-				elementData[index] = entry.next;
-			} else {
-				last.next = entry.next;
-			}
-            elementCount--;
-            return entry.value;
-        }
-        return null;
-    }
-
-    /**
-     * Answers the number of key/value pairs in this Hashtable.
-     *
-     * @return		the number of key/value pairs in this Hashtable
-     */
-    public int size() {
-        return elementCount;
-    }
-
-    /**
-     * Answers the string representation of this Hashtable.
-     *
-     * @return		the string representation of this Hashtable
-     */
-    public String toString() {
-        if (size() == 0) {
-			return "{}"; //$NON-NLS-1$
-		}
-
-        StringBuffer buffer = new StringBuffer();
-        buffer.append('{');
-        for (int i = elementData.length; --i >= 0;) {
-            HashMapEntry entry = elementData[i];
-            while (entry != null) {
-                buffer.append(entry.key);
-                buffer.append('=');
-                buffer.append(entry.value);
-                buffer.append(", "); //$NON-NLS-1$
-                entry = entry.next;
-            }
-        }
-        // Remove the last ", "
-        if (elementCount > 0) {
-			buffer.setLength(buffer.length() - 2);
-		}
-        buffer.append('}');
-        return buffer.toString();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingLabelProvider.java
deleted file mode 100644
index fb4d427..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingLabelProvider.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A decorating label provider is a label provider which combines 
- * a nested label provider and an optional decorator.
- * The decorator decorates the label text, image, font and colors provided by 
- * the nested label provider.
- */
-public class DecoratingLabelProvider extends LabelProvider implements
-        ILabelProvider, IViewerLabelProvider, IColorProvider, IFontProvider, ITreePathLabelProvider {
-		
-    private ILabelProvider provider;
-
-    private ILabelDecorator decorator;
-
-    // Need to keep our own list of listeners
-    private ListenerList listeners = new ListenerList();
-
-	private IDecorationContext decorationContext = DecorationContext.DEFAULT_CONTEXT;
-
-    /**
-     * Creates a decorating label provider which uses the given label decorator
-     * to decorate labels provided by the given label provider.
-     *
-     * @param provider the nested label provider
-     * @param decorator the label decorator, or <code>null</code> if no decorator is to be used initially
-     */
-    public DecoratingLabelProvider(ILabelProvider provider,
-            ILabelDecorator decorator) {
-        Assert.isNotNull(provider);
-        this.provider = provider;
-        this.decorator = decorator;
-    }
-
-    /**
-     * The <code>DecoratingLabelProvider</code> implementation of this <code>IBaseLabelProvider</code> method
-     * adds the listener to both the nested label provider and the label decorator.
-     *
-     * @param listener a label provider listener
-     */
-    public void addListener(ILabelProviderListener listener) {
-        super.addListener(listener);
-        provider.addListener(listener);
-        if (decorator != null) {
-            decorator.addListener(listener);
-        }
-        listeners.add(listener);
-    }
-
-    /**
-     * The <code>DecoratingLabelProvider</code> implementation of this <code>IBaseLabelProvider</code> method
-     * disposes both the nested label provider and the label decorator.
-     */
-    public void dispose() {
-        provider.dispose();
-        if (decorator != null) {
-            decorator.dispose();
-        }
-    }
-
-    /**
-     * The <code>DecoratingLabelProvider</code> implementation of this 
-     * <code>ILabelProvider</code> method returns the image provided
-     * by the nested label provider's <code>getImage</code> method, 
-     * decorated with the decoration provided by the label decorator's
-     * <code>decorateImage</code> method.
-     */
-    public Image getImage(Object element) {
-        Image image = provider.getImage(element);
-        if (decorator != null) {
-        	if (decorator instanceof LabelDecorator) {
-				LabelDecorator ld2 = (LabelDecorator) decorator;
-	            Image decorated = ld2.decorateImage(image, element, getDecorationContext());
-	            if (decorated != null) {
-	                return decorated;
-	            }
-			} else {
-	            Image decorated = decorator.decorateImage(image, element);
-	            if (decorated != null) {
-	                return decorated;
-	            }
-			}
-        }
-        return image;
-    }
-
-	/**
-     * Returns the label decorator, or <code>null</code> if none has been set.
-     *
-     * @return the label decorator, or <code>null</code> if none has been set.
-     */
-    public ILabelDecorator getLabelDecorator() {
-        return decorator;
-    }
-
-    /**
-     * Returns the nested label provider.
-     *
-     * @return the nested label provider
-     */
-    public ILabelProvider getLabelProvider() {
-        return provider;
-    }
-
-    /**
-     * The <code>DecoratingLabelProvider</code> implementation of this 
-     * <code>ILabelProvider</code> method returns the text label provided
-     * by the nested label provider's <code>getText</code> method, 
-     * decorated with the decoration provided by the label decorator's
-     * <code>decorateText</code> method.
-     */
-    public String getText(Object element) {
-        String text = provider.getText(element);
-        if (decorator != null) {
-        	if (decorator instanceof LabelDecorator) {
-				LabelDecorator ld2 = (LabelDecorator) decorator;
-	            String decorated = ld2.decorateText(text, element, getDecorationContext());
-	            if (decorated != null) {
-	                return decorated;
-	            }
-			} else {
-	            String decorated = decorator.decorateText(text, element);
-	            if (decorated != null) {
-	                return decorated;
-	            }
-			}
-        }
-        return text;
-    }
-
-    /**
-     * The <code>DecoratingLabelProvider</code> implementation of this 
-     * <code>IBaseLabelProvider</code> method returns <code>true</code> if the corresponding method
-     * on the nested label provider returns <code>true</code> or if the corresponding method on the 
-     * decorator returns <code>true</code>.
-     */
-    public boolean isLabelProperty(Object element, String property) {
-        if (provider.isLabelProperty(element, property)) {
-			return true;
-		}
-        if (decorator != null && decorator.isLabelProperty(element, property)) {
-			return true;
-		}
-        return false;
-    }
-
-    /**
-     * The <code>DecoratingLabelProvider</code> implementation of this <code>IBaseLabelProvider</code> method
-     * removes the listener from both the nested label provider and the label decorator.
-     *
-     * @param listener a label provider listener
-     */
-    public void removeListener(ILabelProviderListener listener) {
-        super.removeListener(listener);
-        provider.removeListener(listener);
-        if (decorator != null) {
-            decorator.removeListener(listener);
-        }
-        listeners.remove(listener);
-    }
-
-    /**
-     * Sets the label decorator.
-     * Removes all known listeners from the old decorator, and adds all known listeners to the new decorator.
-     * The old decorator is not disposed.
-     * Fires a label provider changed event indicating that all labels should be updated.
-     * Has no effect if the given decorator is identical to the current one.
-     *
-     * @param decorator the label decorator, or <code>null</code> if no decorations are to be applied
-     */
-    public void setLabelDecorator(ILabelDecorator decorator) {
-        ILabelDecorator oldDecorator = this.decorator;
-        if (oldDecorator != decorator) {
-            Object[] listenerList = this.listeners.getListeners();
-            if (oldDecorator != null) {
-                for (int i = 0; i < listenerList.length; ++i) {
-                    oldDecorator
-                            .removeListener((ILabelProviderListener) listenerList[i]);
-                }
-            }
-            this.decorator = decorator;
-            if (decorator != null) {
-                for (int i = 0; i < listenerList.length; ++i) {
-                    decorator
-                            .addListener((ILabelProviderListener) listenerList[i]);
-                }
-            }
-            fireLabelProviderChanged(new LabelProviderChangedEvent(this));
-        }
-    }
-
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IViewerLabelProvider#updateLabel(org.eclipse.jface.viewers.ViewerLabel, java.lang.Object)
-     */
-    public void updateLabel(ViewerLabel settings, Object element) {
-
-        ILabelDecorator currentDecorator = getLabelDecorator();
-        String oldText = settings.getText();
-        boolean decorationReady = true;
-        if (currentDecorator instanceof IDelayedLabelDecorator) {
-            IDelayedLabelDecorator delayedDecorator = (IDelayedLabelDecorator) currentDecorator;
-            if (!delayedDecorator.prepareDecoration(element, oldText)) {
-                // The decoration is not ready but has been queued for processing
-                decorationReady = false;
-            }
-        }
-        // update icon and label
-
-        if (decorationReady || oldText == null
-                || settings.getText().length() == 0) {
-			settings.setText(getText(element));
-		}
-
-        Image oldImage = settings.getImage();
-        if (decorationReady || oldImage == null) {
-            settings.setImage(getImage(element));
-        }
- 
-        if(decorationReady) {
-			updateForDecorationReady(settings,element);
-		}
-
-    }
-
-	/**
-	 * Decoration is ready. Update anything else for the settings.
-	 * @param settings The object collecting the settings.
-	 * @param element The Object being decorated.
-	 * @since 3.1
-	 */
-	protected void updateForDecorationReady(ViewerLabel settings, Object element) {
-		
-		if(decorator instanceof IColorDecorator){
-			IColorDecorator colorDecorator = (IColorDecorator) decorator;
-			settings.setBackground(colorDecorator.decorateBackground(element));
-			settings.setForeground(colorDecorator.decorateForeground(element));
-		}
-		
-		if(decorator instanceof IFontDecorator) {
-			settings.setFont(((IFontDecorator) decorator).decorateFont(element));
-		}
-		
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object)
-	 */
-	public Color getBackground(Object element) {
-		if(provider instanceof IColorProvider) {
-			return ((IColorProvider) provider).getBackground(element);
-		}
-		return null;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
-	 */
-	public Font getFont(Object element) {
-		if(provider instanceof IFontProvider) {
-			return ((IFontProvider) provider).getFont(element);
-		}
-		return null;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object)
-	 */
-	public Color getForeground(Object element) {
-		if(provider instanceof IColorProvider) {
-			return ((IColorProvider) provider).getForeground(element);
-		}
-		return null;
-	}
-
-    /**
-     * Return the decoration context associated with this label provider.
-     * It will be passed to the decorator if the decorator is an 
-     * instance of {@link LabelDecorator}.
-     * @return the decoration context associated with this label provider
-     * 
-     * @since 3.2
-     */
-    public IDecorationContext getDecorationContext() {
-		return decorationContext;
-	}
-    
-    /**
-     * Set the decoration context that will be based to the decorator 
-     * for this label provider if that decorator implements {@link LabelDecorator}.
-     * @param decorationContext the decoration context.
-     * 
-     * @since 3.2
-     */
-	public void setDecorationContext(IDecorationContext decorationContext) {
-		Assert.isNotNull(decorationContext);
-		this.decorationContext = decorationContext;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ITreePathLabelProvider#updateLabel(org.eclipse.jface.viewers.ViewerLabel, org.eclipse.jface.viewers.TreePath)
-	 */
-	public void updateLabel(ViewerLabel settings, TreePath elementPath) {
-        ILabelDecorator currentDecorator = getLabelDecorator();
-        String oldText = settings.getText();
-        Object element = elementPath.getLastSegment();
-        boolean decorationReady = true;
-        if (currentDecorator instanceof LabelDecorator) {
-			LabelDecorator labelDecorator = (LabelDecorator) currentDecorator;
-           if (!labelDecorator.prepareDecoration(element, oldText, getDecorationContext())) {
-                // The decoration is not ready but has been queued for processing
-                decorationReady = false;
-            }
-		} else if (currentDecorator instanceof IDelayedLabelDecorator) {
-            IDelayedLabelDecorator delayedDecorator = (IDelayedLabelDecorator) currentDecorator;
-            if (!delayedDecorator.prepareDecoration(element, oldText)) {
-                // The decoration is not ready but has been queued for processing
-                decorationReady = false;
-            }
-        }
-        settings.setHasPendingDecorations(!decorationReady);
-        // update icon and label
-
-        if (provider instanceof ITreePathLabelProvider) {
-			ITreePathLabelProvider pprov = (ITreePathLabelProvider) provider;
-			if (decorationReady || oldText == null
-	                || settings.getText().length() == 0) {
-				pprov.updateLabel(settings, elementPath);
-				decorateSettings(settings, elementPath);
-			}
-		} else {
-	        if (decorationReady || oldText == null
-	                || settings.getText().length() == 0) {
-				settings.setText(getText(element));
-			}
-	
-	        Image oldImage = settings.getImage();
-	        if (decorationReady || oldImage == null) {
-	            settings.setImage(getImage(element));
-	        }
-	 
-	        if(decorationReady) {
-				updateForDecorationReady(settings,element);
-			}
-		}
-
-	}
-
-	/**
-	 * Decorate the settings
-	 * @param settings the settings obtained from the label provider
-	 * @param elementPath the element path being decorated
-	 */
-	private void decorateSettings(ViewerLabel settings, TreePath elementPath) {
-		Object element = elementPath.getLastSegment();
-        if (decorator != null) {
-        	if (decorator instanceof LabelDecorator) {
-				LabelDecorator labelDecorator = (LabelDecorator) decorator;
-				String text = labelDecorator.decorateText(settings.getText(), element, getDecorationContext());
-	            if (text != null && text.length() > 0)
-	            	settings.setText(text);
-	            Image image = labelDecorator.decorateImage(settings.getImage(), element, getDecorationContext());
-	            if (image != null)
-	            	settings.setImage(image);
-	            
-			} else {
-				String text = decorator.decorateText(settings.getText(), element);
-	            if (text != null && text.length() > 0)
-	            	settings.setText(text);
-	            Image image = decorator.decorateImage(settings.getImage(), element);
-	            if (image != null)
-	            	settings.setImage(image);
-			}
-    		if(decorator instanceof IColorDecorator){
-    			IColorDecorator colorDecorator = (IColorDecorator) decorator;
-    			Color background = colorDecorator.decorateBackground(element);
-    			if (background != null)
-    				settings.setBackground(background);
-    			Color foreground = colorDecorator.decorateForeground(element);
-    			if (foreground != null)
-    				settings.setForeground(foreground);
-    		}
-    		
-    		if(decorator instanceof IFontDecorator) {
-    			Font font = ((IFontDecorator) decorator).decorateFont(element);
-    			if (font != null)
-    				settings.setFont(font);
-    		}
-        }
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingStyledCellLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingStyledCellLabelProvider.java
deleted file mode 100644
index 9ac7fa9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingStyledCellLabelProvider.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.StyledString.Styler;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A {@link DecoratingStyledCellLabelProvider} is a
- * {@link DelegatingStyledCellLabelProvider} that uses a nested
- * {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider} to compute
- * styled text label and image and takes a {@link ILabelDecorator} to decorate
- * the label.
- * 
- * <p>
- * Use this label provider as a replacement for the
- * {@link DecoratingLabelProvider} when decorating styled text labels.
- * </p>
- * 
- * <p>
- * The {@link DecoratingStyledCellLabelProvider} will try to evaluate the text
- * decoration added by the {@link ILabelDecorator} and will apply the style
- * returned by {@link #getDecorationStyle(Object)}
- * </p>
- * <p>
- * The {@link ILabelDecorator} can optionally implement {@link IColorDecorator}
- * and {@link IFontDecorator} to provide foreground and background color and
- * font decoration.
- * </p>
- * 
- * @since 3.4
- */
-public class DecoratingStyledCellLabelProvider extends
-		DelegatingStyledCellLabelProvider {
-
-	private ILabelDecorator decorator;
-	private IDecorationContext decorationContext= DecorationContext.DEFAULT_CONTEXT;
-	private ILabelProviderListener labelProviderListener;
-
-	/**
-	 * Creates a {@link DecoratingStyledCellLabelProvider} that delegates the
-	 * requests for styled labels and for images to a
-	 * {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider}.
-	 * 
-	 * @param labelProvider
-	 *            the styled label provider
-	 * @param decorator
-	 *            a label decorator or <code>null</code> to not decorate the
-	 *            label
-	 * @param decorationContext
-	 *            a decoration context or <code>null</code> if the no
-	 *            decorator is configured or the default decorator should be
-	 *            used
-	 */
-	public DecoratingStyledCellLabelProvider(
-			IStyledLabelProvider labelProvider, ILabelDecorator decorator,
-			IDecorationContext decorationContext) {
-		super(labelProvider);
-
-		this.decorator = decorator;
-		this.decorationContext = decorationContext != null ? decorationContext
-				: DecorationContext.DEFAULT_CONTEXT;
-		
-		this.labelProviderListener = new ILabelProviderListener() {
-			public void labelProviderChanged(LabelProviderChangedEvent event) {
-				fireLabelProviderChanged(event);
-			}
-		};
-		labelProvider.addListener(this.labelProviderListener);
-		if (decorator != null)
-			decorator.addListener(this.labelProviderListener);
-	}
-
-	/**
-	 * Returns the decoration context associated with this label provider. It
-	 * will be passed to the decorator if the decorator is an instance of
-	 * {@link LabelDecorator}.
-	 * 
-	 * @return the decoration context associated with this label provider
-	 */
-	public IDecorationContext getDecorationContext() {
-		return this.decorationContext;
-	}
-
-	/**
-	 * Set the decoration context that will be based to the decorator for this
-	 * label provider if that decorator implements {@link LabelDecorator}.
-	 * 
-	 * @param decorationContext
-	 *            the decoration context.
-	 */
-	public void setDecorationContext(IDecorationContext decorationContext) {
-		Assert.isNotNull(decorationContext);
-		this.decorationContext = decorationContext;
-	}
-
-	private boolean waitForPendingDecoration(ViewerCell cell) {
-		if (this.decorator == null)
-			return false;
-
-		Object element = cell.getElement();
-		String oldText = cell.getText();
-
-		boolean isDecorationPending = false;
-		if (this.decorator instanceof LabelDecorator) {
-			isDecorationPending = !((LabelDecorator) this.decorator)
-					.prepareDecoration(element, oldText, getDecorationContext());
-		} else if (this.decorator instanceof IDelayedLabelDecorator) {
-			isDecorationPending = !((IDelayedLabelDecorator) this.decorator)
-					.prepareDecoration(element, oldText);
-		}
-		if (isDecorationPending && oldText.length() == 0) {
-			// item is empty: is shown for the first time: don't wait
-			return false;
-		}
-		return isDecorationPending;
-	}
-
-	public void update(ViewerCell cell) {
-		if (waitForPendingDecoration(cell)) {
-			return; // wait until the decoration is ready
-		}
-		super.update(cell);
-	}
-
-	public Color getForeground(Object element) {
-		if (this.decorator instanceof IColorDecorator) {
-			Color foreground = ((IColorDecorator) this.decorator)
-					.decorateForeground(element);
-			if (foreground != null)
-				return foreground;
-		}
-		return super.getForeground(element);
-	}
-
-	public Color getBackground(Object element) {
-		if (this.decorator instanceof IColorDecorator) {
-			Color color = ((IColorDecorator) this.decorator)
-					.decorateBackground(element);
-			if (color != null)
-				return color;
-		}
-		return super.getBackground(element);
-	}
-
-	public Font getFont(Object element) {
-		if (this.decorator instanceof IFontDecorator) {
-			Font font = ((IFontDecorator) this.decorator).decorateFont(element);
-			if (font != null)
-				return font;
-		}
-		return super.getFont(element);
-	}
-
-	public Image getImage(Object element) {
-		Image image = super.getImage(element);
-		if (this.decorator == null) {
-			return image;
-		}
-		Image decorated = null;
-		if (this.decorator instanceof LabelDecorator) {
-			decorated = ((LabelDecorator) this.decorator).decorateImage(image,
-					element, getDecorationContext());
-		} else {
-			decorated = this.decorator.decorateImage(image, element);
-		}
-		if (decorated != null)
-			return decorated;
-
-		return image;
-	}
-
-	/**
-	 * Returns the styled text for the label of the given element.
-	 * 
-	 * @param element
-	 *            the element for which to provide the styled label text
-	 * @return the styled text string used to label the element
-	 */
-	protected StyledString getStyledText(Object element) {
-		StyledString styledString = super.getStyledText(element);
-		if (this.decorator == null) {
-			return styledString;
-		}
-
-		String label = styledString.getString();
-		String decorated;
-		if (this.decorator instanceof LabelDecorator) {
-			decorated = ((LabelDecorator) this.decorator).decorateText(label,
-					element, getDecorationContext());
-		} else {
-			decorated = this.decorator.decorateText(label, element);
-		}
-		if (decorated == null)
-			return styledString;
-
-		int originalStart = decorated.indexOf(label);
-		if (originalStart == -1) {
-			return new StyledString(decorated); // the decorator did
-														// something wild
-		}
-
-		if (decorated.length() == label.length())
-			return styledString;
-
-		Styler style = getDecorationStyle(element);
-		if (originalStart > 0) {
-			StyledString newString = new StyledString(decorated
-					.substring(0, originalStart), style);
-			newString.append(styledString);
-			styledString = newString;
-		}
-		if (decorated.length() > originalStart + label.length()) { // decorator
-																	// appended
-																	// something
-			return styledString.append(decorated.substring(originalStart
-					+ label.length()), style);
-		}
-		return styledString;
-	}
-
-	/**
-	 * Sets the {@link StyledString.Styler} to be used for string
-	 * decorations. By default the
-	 * {@link StyledString#DECORATIONS_STYLER decoration style}. Clients
-	 * can override.
-	 * 
-	 * Note that it is the client's responsibility to react on color changes of
-	 * the decoration color by refreshing the view
-	 * 
-	 * @param element
-	 *            the element that has been decorated
-	 * 
-	 * @return return the decoration style
-	 */
-	protected Styler getDecorationStyle(Object element) {
-		return StyledString.DECORATIONS_STYLER;
-	}
-
-	/**
-	 * Returns the decorator or <code>null</code> if no decorator is installed
-	 * 
-	 * @return the decorator or <code>null</code> if no decorator is installed
-	 */
-	public ILabelDecorator getLabelDecorator() {
-		return this.decorator;
-	}
-
-	/**
-	 * Sets the label decorator. Removes all known listeners from the old
-	 * decorator, and adds all known listeners to the new decorator. The old
-	 * decorator is not disposed. Fires a label provider changed event
-	 * indicating that all labels should be updated. Has no effect if the given
-	 * decorator is identical to the current one.
-	 * 
-	 * @param newDecorator
-	 *            the label decorator, or <code>null</code> if no decorations
-	 *            are to be applied
-	 */
-	public void setLabelDecorator(ILabelDecorator newDecorator) {
-		ILabelDecorator oldDecorator = this.decorator;
-		if (oldDecorator != newDecorator) {
-			if (oldDecorator != null)
-				oldDecorator.removeListener(this.labelProviderListener);
-			this.decorator = newDecorator;
-			if (newDecorator != null) {
-				newDecorator.addListener(this.labelProviderListener);
-			}
-		}
-		fireLabelProviderChanged(new LabelProviderChangedEvent(this));
-	}
-
-	public void addListener(ILabelProviderListener listener) {
-		super.addListener(listener);
-		if (this.decorator != null) {
-			this.decorator.addListener(this.labelProviderListener);
-		}
-	}
-
-	public void removeListener(ILabelProviderListener listener) {
-		super.removeListener(listener);
-		if (this.decorator != null) {
-			this.decorator.removeListener(this.labelProviderListener);
-		}
-	}
-
-	public boolean isLabelProperty(Object element, String property) {
-		if (super.isLabelProperty(element, property)) {
-			return true;
-		}
-		return this.decorator != null
-				&& this.decorator.isLabelProperty(element, property);
-	}
-
-	public void dispose() {
-		super.dispose();
-		if (this.decorator != null) {
-			this.decorator.removeListener(this.labelProviderListener);
-			this.decorator.dispose();
-			this.decorator = null;
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationContext.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationContext.java
deleted file mode 100644
index 3cd5aa1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationContext.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A concrete implementation of the {@link IDecorationContext} interface,
- * suitable for instantiating.
- * <p>
- * This class is not intended to be subclassed.
- * </p>
- * @since 3.2
- */
-public class DecorationContext implements IDecorationContext {
-	
-	/**
-	 * Constant that defines a default decoration context that has
-	 * no context ids associated with it.
-	 */
-	public static final IDecorationContext DEFAULT_CONTEXT = new DecorationContext();
-	
-	private Map properties = new HashMap();
-
-	/**
-	 * Create a decoration context.
-	 */
-	public DecorationContext() {
-	}
-	
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IDecorationContext#getProperty(java.lang.String)
-	 */
-	public Object getProperty(String property) {
-		return properties.get(property);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IDecorationContext#getProperties()
-	 */
-	public String[] getProperties() {
-		return (String[]) properties.keySet().toArray(new String[properties.size()]);
-	}
-
-	/**
-	 * Set the given property to the given value. Setting the value of
-	 * a property to <code>null</code> removes the property from
-	 * the context.
-	 * @param property the property
-	 * @param value the value of the property or <code>null</code>
-	 * if the property is to be removed.
-	 */
-	public void putProperty(String property, Object value) {
-		if (value == null) {
-			properties.remove(property);
-		} else {
-			properties.put(property, value);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationOverlayIcon.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationOverlayIcon.java
deleted file mode 100644
index 6e868da..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecorationOverlayIcon.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.Arrays;
-
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.*;
-
-/**
- * A <code>DecorationOverlayIcon</code> is an image descriptor that can be used
- * to overlay decoration images on to the 4 corner quadrants of a base image.
- * The four quadrants are {@link IDecoration#TOP_LEFT}, {@link IDecoration#TOP_RIGHT},
- * {@link IDecoration#BOTTOM_LEFT} and {@link IDecoration#BOTTOM_RIGHT}. Additionally,
- * the overlay can be used to provide an underlay corresponding to {@link IDecoration#UNDERLAY}. 
- * 
- * @since 3.3
- * @see IDecoration
- */
-public class DecorationOverlayIcon extends CompositeImageDescriptor {
-	
-    // the base image
-    private Image base;
-
-    // the overlay images
-    private ImageDescriptor[] overlays;
-
-    // the size
-    private Point size;
-
-    /**
-     * Create the decoration overlay for the base image using the array of
-     * provided overlays. The indices of the array correspond to the values
-     * of the 5 overlay constants defined on {@link IDecoration} 
-     * ({@link IDecoration#TOP_LEFT}, {@link IDecoration#TOP_RIGHT},
-     * {@link IDecoration#BOTTOM_LEFT}, {@link IDecoration#BOTTOM_RIGHT} 
-     * and{@link IDecoration#UNDERLAY}).
-     * 
-     * @param baseImage the base image
-     * @param overlaysArray the overlay images
-     * @param sizeValue the size of the resulting image
-     */
-    public DecorationOverlayIcon(Image baseImage,
-            ImageDescriptor[] overlaysArray, Point sizeValue) {
-        this.base = baseImage;
-        this.overlays = overlaysArray;
-        this.size = sizeValue;
-    }
-    
-    /**
-     * Create the decoration overlay for the base image using the array of
-     * provided overlays. The indices of the array correspond to the values
-     * of the 5 overlay constants defined on {@link IDecoration} 
-     * ({@link IDecoration#TOP_LEFT}, {@link IDecoration#TOP_RIGHT},
-     * {@link IDecoration#BOTTOM_LEFT}, {@link IDecoration#BOTTOM_RIGHT} 
-     * and {@link IDecoration#UNDERLAY}).
-     * 
-     * @param baseImage the base image
-     * @param overlaysArray the overlay images
-     */
-    public DecorationOverlayIcon(Image baseImage, ImageDescriptor[] overlaysArray) {
-    	this(baseImage, overlaysArray, new Point(baseImage.getBounds().width, baseImage.getBounds().height));
-    }
-
-    /**
-     * Create a decoration overlay icon that will place the given overlay icon in
-     * the given quadrant of the base image.
-	 * @param baseImage the base image
-	 * @param overlayImage the overlay image
-	 * @param quadrant the quadrant (one of {@link IDecoration} 
-     * ({@link IDecoration#TOP_LEFT}, {@link IDecoration#TOP_RIGHT},
-     * {@link IDecoration#BOTTOM_LEFT}, {@link IDecoration#BOTTOM_RIGHT} 
-     * or {@link IDecoration#UNDERLAY})
-	 */
-	public DecorationOverlayIcon(Image baseImage, ImageDescriptor overlayImage, int quadrant) {
-		this(baseImage, createArrayFrom(overlayImage, quadrant));
-	}
-
-	/**
-	 * Convert the given image and quadrant into the proper input array.
-	 * @param overlayImage the overlay image
-	 * @param quadrant the quadrant
-	 * @return an array with the given image in the proper quadrant
-	 */
-	private static ImageDescriptor[] createArrayFrom(
-			ImageDescriptor overlayImage, int quadrant) {
-		ImageDescriptor[] descs = new ImageDescriptor[] { null, null, null, null, null };
-		descs[quadrant] = overlayImage;
-		return descs;
-	}
-
-	/**
-     * Draw the overlays for the receiver.
-     * @param overlaysArray 
-     */
-    private void drawOverlays(ImageDescriptor[] overlaysArray) {
-
-        for (int i = 0; i < overlays.length; i++) {
-            ImageDescriptor overlay = overlaysArray[i];
-            if (overlay == null) {
-				continue;
-			}
-            ImageData overlayData = overlay.getImageData();
-            //Use the missing descriptor if it is not there.
-            if (overlayData == null) {
-				overlayData = ImageDescriptor.getMissingImageDescriptor()
-                        .getImageData();
-			}
-            switch (i) {
-            case IDecoration.TOP_LEFT:
-                drawImage(overlayData, 0, 0);
-                break;
-            case IDecoration.TOP_RIGHT:
-                drawImage(overlayData, size.x - overlayData.width, 0);
-                break;
-            case IDecoration.BOTTOM_LEFT:
-                drawImage(overlayData, 0, size.y - overlayData.height);
-                break;
-            case IDecoration.BOTTOM_RIGHT:
-                drawImage(overlayData, size.x - overlayData.width, size.y
-                        - overlayData.height);
-                break;
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object o) {
-        if (!(o instanceof DecorationOverlayIcon)) {
-			return false;
-		}
-        DecorationOverlayIcon other = (DecorationOverlayIcon) o;
-        return base.equals(other.base)
-                && Arrays.equals(overlays, other.overlays);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        int code = System.identityHashCode(base);
-        for (int i = 0; i < overlays.length; i++) {
-            if (overlays[i] != null) {
-				code ^= overlays[i].hashCode();
-			}
-        }
-        return code;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int)
-     */
-    protected void drawCompositeImage(int width, int height) {
-    	if (overlays.length > IDecoration.UNDERLAY) {
-	        ImageDescriptor underlay = overlays[IDecoration.UNDERLAY];
-	        if (underlay != null) {
-				drawImage(underlay.getImageData(), 0, 0);
-			}
-    	}
-    	if (overlays.length > IDecoration.REPLACE && overlays[IDecoration.REPLACE] != null) {
-    		drawImage(overlays[IDecoration.REPLACE].getImageData(), 0, 0);
-    	} else {
-    		drawImage(base.getImageData(), 0, 0);
-    	}
-        drawOverlays(overlays);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize()
-     */
-    protected Point getSize() {
-        return size;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor#getTransparentPixel()
-     */
-    protected int getTransparentPixel() {
-    	return base.getImageData().transparentPixel;
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DelegatingStyledCellLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DelegatingStyledCellLabelProvider.java
deleted file mode 100644
index 6e7607b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DelegatingStyledCellLabelProvider.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.Arrays;
-
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A {@link DelegatingStyledCellLabelProvider} is a
- * {@link StyledCellLabelProvider} that delegates requests for the styled string
- * and the image to a
- * {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider}.
- * 
- * <p>
- * Existing label providers can be enhanced by implementing
- * {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider} so they can be
- * used in viewers with styled labels.
- * </p>
- * 
- * <p>
- * The {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider} can
- * optionally implement {@link IColorProvider} and {@link IFontProvider} to
- * provide foreground and background color and a default font.
- * </p>
- * 
- * @since 3.4
- */
-public class DelegatingStyledCellLabelProvider extends StyledCellLabelProvider {
-
-	/**
-	 * Interface marking a label provider that provides styled text labels and
-	 * images.
-	 * <p>
-	 * The {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider} can
-	 * optionally implement {@link IColorProvider} and {@link IFontProvider} to
-	 * provide foreground and background color and a default font.
-	 * </p>
-	 */
-	public static interface IStyledLabelProvider extends IBaseLabelProvider {
-
-		/**
-		 * Returns the styled text label for the given element
-		 * 
-		 * @param element
-		 *            the element to evaluate the styled string for
-		 * 
-		 * @return the styled string.
-		 */
-		public StyledString getStyledText(Object element);
-
-		/**
-		 * Returns the image for the label of the given element. The image is
-		 * owned by the label provider and must not be disposed directly.
-		 * Instead, dispose the label provider when no longer needed.
-		 * 
-		 * @param element
-		 *            the element for which to provide the label image
-		 * @return the image used to label the element, or <code>null</code>
-		 *         if there is no image for the given object
-		 */
-		public Image getImage(Object element);
-	}
-
-	private IStyledLabelProvider styledLabelProvider;
-
-	/**
-	 * Creates a {@link DelegatingStyledCellLabelProvider} that delegates the
-	 * requests for the styled labels and the images to a
-	 * {@link IStyledLabelProvider}.
-	 * 
-	 * @param labelProvider
-	 *            the label provider that provides the styled labels and the
-	 *            images
-	 */
-	public DelegatingStyledCellLabelProvider(IStyledLabelProvider labelProvider) {
-		if (labelProvider == null)
-			throw new IllegalArgumentException(
-					"Label provider must not be null"); //$NON-NLS-1$
-
-		this.styledLabelProvider = labelProvider;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StyledCellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
-	 */
-	public void update(ViewerCell cell) {
-		Object element = cell.getElement();
-
-		StyledString styledString = getStyledText(element);
-		String newText= styledString.toString();
-		
-		StyleRange[] oldStyleRanges= cell.getStyleRanges();
-		StyleRange[] newStyleRanges= isOwnerDrawEnabled() ? styledString.getStyleRanges() : null;
-		
-		if (!Arrays.equals(oldStyleRanges, newStyleRanges)) {
-			cell.setStyleRanges(newStyleRanges);
-			if (cell.getText().equals(newText)) {
-				// make sure there will be a refresh from a change
-				cell.setText(""); //$NON-NLS-1$
-			}
-		}
-		
-		cell.setText(newText);
-		cell.setImage(getImage(element));
-		cell.setFont(getFont(element));
-		cell.setForeground(getForeground(element));
-		cell.setBackground(getBackground(element));
-		
-		// no super call required. changes on item will trigger the refresh.
-	}
-
-	/**
-	 * Provides a foreground color for the given element.
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the foreground color for the element, or <code>null</code> to
-	 *         use the default foreground color
-	 */
-	public Color getForeground(Object element) {
-		if (this.styledLabelProvider instanceof IColorProvider) {
-			return ((IColorProvider) this.styledLabelProvider)
-					.getForeground(element);
-		}
-		return null;
-	}
-
-	/**
-	 * Provides a background color for the given element.
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the background color for the element, or <code>null</code> to
-	 *         use the default background color
-	 */
-	public Color getBackground(Object element) {
-		if (this.styledLabelProvider instanceof IColorProvider) {
-			return ((IColorProvider) this.styledLabelProvider)
-					.getBackground(element);
-		}
-		return null;
-	}
-
-	/**
-	 * Provides a font for the given element.
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the font for the element, or <code>null</code> to use the
-	 *         default font
-	 */
-	public Font getFont(Object element) {
-		if (this.styledLabelProvider instanceof IFontProvider) {
-			return ((IFontProvider) this.styledLabelProvider).getFont(element);
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the image for the label of the given element. The image is owned
-	 * by the label provider and must not be disposed directly. Instead, dispose
-	 * the label provider when no longer needed.
-	 * 
-	 * @param element
-	 *            the element for which to provide the label image
-	 * @return the image used to label the element, or <code>null</code> if
-	 *         there is no image for the given object
-	 */
-	public Image getImage(Object element) {
-		return this.styledLabelProvider.getImage(element);
-	}
-
-	/**
-	 * Returns the styled text for the label of the given element.
-	 * 
-	 * @param element
-	 *            the element for which to provide the styled label text
-	 * @return the styled text string used to label the element
-	 */
-	protected StyledString getStyledText(Object element) {
-		return this.styledLabelProvider.getStyledText(element);
-	}
-
-	/**
-	 * Returns the styled string provider.
-	 * 
-	 * @return the wrapped label provider
-	 */
-	public IStyledLabelProvider getStyledStringProvider() {
-		return this.styledLabelProvider;
-	}
-
-	public void addListener(ILabelProviderListener listener) {
-		super.addListener(listener);
-		this.styledLabelProvider.addListener(listener);
-	}
-
-	public void removeListener(ILabelProviderListener listener) {
-		super.removeListener(listener);
-		this.styledLabelProvider.removeListener(listener);
-	}
-
-	public boolean isLabelProperty(Object element, String property) {
-		return this.styledLabelProvider.isLabelProperty(element, property);
-	}
-
-	public void dispose() {
-		super.dispose();
-		this.styledLabelProvider.dispose();
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DialogCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DialogCellEditor.java
deleted file mode 100644
index 0ad09ff..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DialogCellEditor.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.text.MessageFormat;	// Not using ICU to support standalone JFace scenario
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Layout;
-
-/**
- * An abstract cell editor that uses a dialog.
- * Dialog cell editors usually have a label control on the left and a button on
- * the right. Pressing the button opens a dialog window (for example, a color dialog
- * or a file dialog) to change the cell editor's value.
- * The cell editor's value is the value of the dialog.
- * <p>
- * Subclasses may override the following methods:
- * <ul>
- *	<li><code>createButton</code>: creates the cell editor's button control</li>
- *	<li><code>createContents</code>: creates the cell editor's 'display value' control</li>
- *	<li><code>updateContents</code>: updates the cell editor's 'display value' control
- * 		after its value has changed</li>
- *	<li><code>openDialogBox</code>: opens the dialog box when the end user presses
- *      the button</li>
- * </ul>
- * </p>
- */
-public abstract class DialogCellEditor extends CellEditor {
-
-    /**
-     * Image registry key for three dot image (value <code>"cell_editor_dots_button_image"</code>).
-     */
-    public static final String CELL_EDITOR_IMG_DOTS_BUTTON = "cell_editor_dots_button_image";//$NON-NLS-1$
-
-    /**
-     * The editor control.
-     */
-    private Composite editor;
-
-    /**
-     * The current contents.
-     */
-    private Control contents;
-
-    /**
-     * The label that gets reused by <code>updateLabel</code>.
-     */
-    private Label defaultLabel;
-
-    /**
-     * The button.
-     */
-    private Button button;
-
-	/**
-	 * Listens for 'focusLost' events and  fires the 'apply' event as long
-	 * as the focus wasn't lost because the dialog was opened.
-	 */
-	private FocusListener buttonFocusListener;
-
-    /**
-     * The value of this cell editor; initially <code>null</code>.
-     */
-    private Object value = null;
-
-    static {
-        ImageRegistry reg = JFaceResources.getImageRegistry();
-        reg.put(CELL_EDITOR_IMG_DOTS_BUTTON, ImageDescriptor.createFromFile(
-                DialogCellEditor.class, "images/dots_button.gif"));//$NON-NLS-1$
-    }
-
-    /**
-     * Internal class for laying out the dialog.
-     */
-    private class DialogCellLayout extends Layout {
-        public void layout(Composite editor, boolean force) {
-            Rectangle bounds = editor.getClientArea();
-            Point size = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, force);
-            if (contents != null) {
-				contents.setBounds(0, 0, bounds.width - size.x, bounds.height);
-			}
-            button.setBounds(bounds.width - size.x, 0, size.x, bounds.height);
-        }
-
-        public Point computeSize(Composite editor, int wHint, int hHint,
-                boolean force) {
-            if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-            Point contentsSize = contents.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                    force);
-            Point buttonSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                    force);
-            // Just return the button width to ensure the button is not clipped
-            // if the label is long.
-            // The label will just use whatever extra width there is
-            Point result = new Point(buttonSize.x, Math.max(contentsSize.y,
-                    buttonSize.y));
-            return result;
-        }
-    }
-
-    /**
-     * Default DialogCellEditor style
-     */
-    private static final int defaultStyle = SWT.NONE;
-
-    /**
-     * Creates a new dialog cell editor with no control
-     * @since 2.1
-     */
-    public DialogCellEditor() {
-        setStyle(defaultStyle);
-    }
-
-    /**
-     * Creates a new dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected DialogCellEditor(Composite parent) {
-        this(parent, defaultStyle);
-    }
-
-    /**
-     * Creates a new dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     * @param style the style bits
-     * @since 2.1
-     */
-    protected DialogCellEditor(Composite parent, int style) {
-        super(parent, style);
-    }
-
-    /**
-     * Creates the button for this cell editor under the given parent control.
-     * <p>
-     * The default implementation of this framework method creates the button 
-     * display on the right hand side of the dialog cell editor. Subclasses
-     * may extend or reimplement.
-     * </p>
-     *
-     * @param parent the parent control
-     * @return the new button control
-     */
-    protected Button createButton(Composite parent) {
-        Button result = new Button(parent, SWT.DOWN);
-        result.setText("..."); //$NON-NLS-1$
-        return result;
-    }
-
-    /**
-     * Creates the controls used to show the value of this cell editor.
-     * <p>
-     * The default implementation of this framework method creates
-     * a label widget, using the same font and background color as the parent control.
-     * </p>
-     * <p>
-     * Subclasses may reimplement.  If you reimplement this method, you
-     * should also reimplement <code>updateContents</code>.
-     * </p>
-     *
-     * @param cell the control for this cell editor 
-     * @return the underlying control
-     */
-    protected Control createContents(Composite cell) {
-        defaultLabel = new Label(cell, SWT.LEFT);
-        defaultLabel.setFont(cell.getFont());
-        defaultLabel.setBackground(cell.getBackground());
-        return defaultLabel;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    protected Control createControl(Composite parent) {
-
-        Font font = parent.getFont();
-        Color bg = parent.getBackground();
-
-        editor = new Composite(parent, getStyle());
-        editor.setFont(font);
-        editor.setBackground(bg);
-        editor.setLayout(new DialogCellLayout());
-
-        contents = createContents(editor);
-        updateContents(value);
-
-        button = createButton(editor);
-        button.setFont(font);
-
-        button.addKeyListener(new KeyAdapter() {
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.KeyListener#keyReleased(org.eclipse.swt.events.KeyEvent)
-             */
-            public void keyReleased(KeyEvent e) {
-                if (e.character == '\u001b') { // Escape
-                    fireCancelEditor();
-                }
-            }
-        });
-        
-        button.addFocusListener(getButtonFocusListener());
-        
-        button.addSelectionListener(new SelectionAdapter() {
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent event) {
-            	// Remove the button's focus listener since it's guaranteed
-            	// to lose focus when the dialog opens
-            	button.removeFocusListener(getButtonFocusListener());
-                
-            	Object newValue = openDialogBox(editor);
-            	
-            	// Re-add the listener once the dialog closes
-            	button.addFocusListener(getButtonFocusListener());
-
-            	if (newValue != null) {
-                    boolean newValidState = isCorrect(newValue);
-                    if (newValidState) {
-                        markDirty();
-                        doSetValue(newValue);
-                    } else {
-                        // try to insert the current value into the error message.
-                        setErrorMessage(MessageFormat.format(getErrorMessage(),
-                                new Object[] { newValue.toString() }));
-                    }
-                    fireApplyEditorValue();
-                }
-            }
-        });
-
-        setValueValid(true);
-
-        return editor;
-    }
-
-    /* (non-Javadoc)
-     * 
-     * Override in order to remove the button's focus listener if the celleditor
-     * is deactivating.
-     * 
-     * @see org.eclipse.jface.viewers.CellEditor#deactivate()
-     */
-    public void deactivate() {
-    	if (button != null && !button.isDisposed()) {
-    		button.removeFocusListener(getButtonFocusListener());
-    	}
-    	
-		super.deactivate();
-	}
-
-	/* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    protected Object doGetValue() {
-        return value;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on CellEditor.
-     * The focus is set to the cell editor's button. 
-     */
-    protected void doSetFocus() {
-        button.setFocus();
-        
-        // add a FocusListener to the button
-        button.addFocusListener(getButtonFocusListener());
-    }
-
-    /**
-     * Return a listener for button focus.
-     * @return FocusListener
-     */
-    private FocusListener getButtonFocusListener() {
-    	if (buttonFocusListener == null) {
-    		buttonFocusListener = new FocusListener() {
-
-				/* (non-Javadoc)
-				 * @see org.eclipse.swt.events.FocusListener#focusGained(org.eclipse.swt.events.FocusEvent)
-				 */
-				public void focusGained(FocusEvent e) {
-					// Do nothing
-				}
-
-				/* (non-Javadoc)
-				 * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt.events.FocusEvent)
-				 */
-				public void focusLost(FocusEvent e) {
-					DialogCellEditor.this.focusLost();
-				}
-    		};
-    	}
-    	
-    	return buttonFocusListener;
-	}
-
-	/* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    protected void doSetValue(Object value) {
-        this.value = value;
-        updateContents(value);
-    }
-
-    /**
-     * Returns the default label widget created by <code>createContents</code>.
-     *
-     * @return the default label widget
-     */
-    protected Label getDefaultLabel() {
-        return defaultLabel;
-    }
-
-    /**
-     * Opens a dialog box under the given parent control and returns the
-     * dialog's value when it closes, or <code>null</code> if the dialog
-     * was canceled or no selection was made in the dialog.
-     * <p>
-     * This framework method must be implemented by concrete subclasses.
-     * It is called when the user has pressed the button and the dialog
-     * box must pop up.
-     * </p>
-     *
-     * @param cellEditorWindow the parent control cell editor's window
-     *   so that a subclass can adjust the dialog box accordingly
-     * @return the selected value, or <code>null</code> if the dialog was 
-     *   canceled or no selection was made in the dialog
-     */
-    protected abstract Object openDialogBox(Control cellEditorWindow);
-
-    /**
-     * Updates the controls showing the value of this cell editor.
-     * <p>
-     * The default implementation of this framework method just converts
-     * the passed object to a string using <code>toString</code> and
-     * sets this as the text of the label widget.
-     * </p>
-     * <p>
-     * Subclasses may reimplement.  If you reimplement this method, you
-     * should also reimplement <code>createContents</code>.
-     * </p>
-     *
-     * @param value the new value of this cell editor
-     */
-    protected void updateContents(Object value) {
-        if (defaultLabel == null) {
-			return;
-		}
-
-        String text = "";//$NON-NLS-1$
-        if (value != null) {
-			text = value.toString();
-		}
-        defaultLabel.setText(text);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DoubleClickEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DoubleClickEvent.java
deleted file mode 100644
index 156f3f4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DoubleClickEvent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Event object describing a double-click. The source of these
- * events is a viewer.
- *
- * @see IDoubleClickListener
- */
-public class DoubleClickEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3258408443605038133L;
-    
-    /**
-     * The selection.
-     */
-    protected ISelection selection;
-
-    /**
-     * Creates a new event for the given source and selection.
-     *
-     * @param source the viewer
-     * @param selection the selection
-     */
-    public DoubleClickEvent(Viewer source, ISelection selection) {
-        super(source);
-        Assert.isNotNull(selection);
-        this.selection = selection;
-    }
-
-    /**
-     * Returns the selection.
-     *
-     * @return the selection
-     */
-    public ISelection getSelection() {
-        return selection;
-    }
-
-    /**
-     * Returns the viewer that is the source of this event.
-     *
-     * @return the originating viewer
-     */
-    public Viewer getViewer() {
-        return (Viewer) getSource();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/EditingSupport.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/EditingSupport.java
deleted file mode 100644
index 7d4d50a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/EditingSupport.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											   fix in bug 151295,167325,201905
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * EditingSupport is the abstract superclass of the support for cell editing.
- *
- * @since 3.3
- *
- */
-public abstract class EditingSupport {
-
-	private ColumnViewer viewer;
-
-	/**
-	 * @param viewer
-	 *            a new viewer
-	 */
-	public EditingSupport(ColumnViewer viewer) {
-		Assert.isNotNull(viewer, "Viewer is not allowed to be null"); //$NON-NLS-1$
-		this.viewer = viewer;
-	}
-
-	/**
-	 * The editor to be shown
-	 *
-	 * @param element
-	 *            the model element
-	 * @return the CellEditor
-	 */
-	protected abstract CellEditor getCellEditor(Object element);
-
-	/**
-	 * Is the cell editable
-	 *
-	 * @param element
-	 *            the model element
-	 * @return true if editable
-	 */
-	protected abstract boolean canEdit(Object element);
-
-	/**
-	 * Get the value to set to the editor
-	 *
-	 * @param element
-	 *            the model element
-	 * @return the value shown
-	 */
-	protected abstract Object getValue(Object element);
-
-	/**
-	 * Restore the value from the CellEditor
-	 *
-	 * <p>
-	 * <b>Subclasses should overwrite!</b>
-	 * </p>
-	 *
-	 * @param element
-	 *            the model element
-	 * @param value
-	 *            the new value
-	 */
-	protected abstract void setValue(Object element, Object value);
-
-	/**
-	 * @return the viewer this editing support works for
-	 */
-	public ColumnViewer getViewer() {
-		return viewer;
-	}
-
-	/**
-	 * Initialize the editor. Frameworks like Databinding can hook in here and provide
-	 * a customized implementation. <p><b>Standard customers should not overwrite this method but {@link #getValue(Object)}</b></p>
-	 *
-	 * @param cellEditor
-	 *            the cell editor
-	 * @param cell
-	 *            the cell the editor is working for
-	 */
-	protected void initializeCellEditorValue(CellEditor cellEditor, ViewerCell cell) {
-		Object value = getValue(cell.getElement());
-		cellEditor.setValue(value);
-	}
-
-	/**
-	 * Save the value of the cell editor back to the model. Frameworks like Databinding can hook in here and provide
-	 * a customized implementation. <p><b>Standard customers should not overwrite this method but {@link #setValue(Object, Object)} </b></p>
-	 * @param cellEditor
-	 *            the cell-editor
-	 * @param cell
-	 * 			  the cell the editor is working for
-	 */
-	protected void saveCellEditorValue(CellEditor cellEditor, ViewerCell cell) {
-		Object value = cellEditor.getValue();
-		setValue(cell.getElement(), value);
-	}
-
-	boolean isLegacySupport() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellHighlighter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellHighlighter.java
deleted file mode 100644
index 88f3cd8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellHighlighter.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											   bugfix in: 182800
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * @since 3.3
- *
- */
-public abstract class FocusCellHighlighter {
-	private ColumnViewer viewer;
-
-	/**
-	 * @param viewer
-	 */
-	public FocusCellHighlighter(ColumnViewer viewer) {
-		this.viewer = viewer;
-	}
-
-	/**
-	 * @return the focus cell
-	 */
-	public ViewerCell getFocusCell() {
-		return viewer.getColumnViewerEditor().getFocusCell();
-	}
-
-	/**
-	 * Called by the framework when the focus cell has changed. Subclasses may
-	 * extend.
-	 *
-	 * @param cell
-	 *            the new focus cell
-	 * @deprecated use {@link #focusCellChanged(ViewerCell, ViewerCell)} instead
-	 */
-	protected void focusCellChanged(ViewerCell cell) {
-	}
-
-	/**
-	 * Called by the framework when the focus cell has changed. Subclasses may
-	 * extend.
-	 * <p>
-	 * <b>The default implementation for this method calls
-	 * focusCellChanged(ViewerCell). Subclasses should override this method
-	 * rather than {@link #focusCellChanged(ViewerCell)} .</b>
-	 *
-	 * @param newCell
-	 *            the new focus cell or <code>null</code> if no new cell
-	 *            receives the focus
-	 * @param oldCell
-	 *            the old focus cell or <code>null</code> if no cell has been
-	 *            focused before
-	 * @since 3.4
-	 */
-	protected void focusCellChanged(ViewerCell newCell, ViewerCell oldCell) {
-		focusCellChanged(newCell);
-	}
-
-	/**
-	 * This method is called by the framework to initialize this cell
-	 * highlighter object. Subclasses may extend.
-	 */
-	protected void init() {
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellOwnerDrawHighlighter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellOwnerDrawHighlighter.java
deleted file mode 100644
index 53dc7ca..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/FocusCellOwnerDrawHighlighter.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * 	   IBM Corporation - initial API and implementation
- * 	   Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- * 												 - fix for bug 183850, 182652, 182800, 215069
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * A concrete implementation of {@link FocusCellHighlighter} using by setting
- * the control into owner draw mode and highlighting the currently selected
- * cell. To make the use this class you should create the control with the
- * {@link SWT#FULL_SELECTION} bit set
- * 
- * This class can be subclassed to configure how the coloring of the selected
- * cell.
- * 
- * @since 3.3
- * 
- */
-public class FocusCellOwnerDrawHighlighter extends FocusCellHighlighter {
-	/**
-	 * Create a new instance which can be passed to a
-	 * {@link TreeViewerFocusCellManager}
-	 * 
-	 * @param viewer
-	 *            the viewer
-	 */
-	public FocusCellOwnerDrawHighlighter(ColumnViewer viewer) {
-		super(viewer);
-		hookListener(viewer);
-	}
-
-	private void markFocusedCell(Event event, ViewerCell cell) {
-		Color background = (cell.getControl().isFocusControl()) ? getSelectedCellBackgroundColor(cell)
-				: getSelectedCellBackgroundColorNoFocus(cell);
-		Color foreground = (cell.getControl().isFocusControl()) ? getSelectedCellForegroundColor(cell)
-				: getSelectedCellForegroundColorNoFocus(cell);
-
-		if (foreground != null || background != null || onlyTextHighlighting(cell)) {
-			GC gc = event.gc;
-
-			if (background == null) {
-				background = cell.getItem().getDisplay().getSystemColor(
-						SWT.COLOR_LIST_SELECTION);
-			}
-
-			if (foreground == null) {
-				foreground = cell.getItem().getDisplay().getSystemColor(
-						SWT.COLOR_LIST_SELECTION_TEXT);
-			}
-
-			gc.setBackground(background);
-			gc.setForeground(foreground);
-			
-			if (onlyTextHighlighting(cell)) {
-				Rectangle area = event.getBounds();
-				Rectangle rect = cell.getTextBounds();
-				if( rect != null ) {
-					area.x = rect.x;
-				}
-				gc.fillRectangle(area);
-			} else {
-				gc.fillRectangle(event.getBounds());
-			}
-			
-			event.detail &= ~SWT.SELECTED;
-		}
-	}
-
-	private void removeSelectionInformation(Event event, ViewerCell cell) {
-		GC gc = event.gc;
-		gc.setBackground(cell.getViewerRow().getBackground(
-				cell.getColumnIndex()));
-		gc.setForeground(cell.getViewerRow().getForeground(
-				cell.getColumnIndex()));
-		gc.fillRectangle(cell.getBounds());
-		event.detail &= ~SWT.SELECTED;
-	}
-
-	private void hookListener(final ColumnViewer viewer) {
-
-		Listener listener = new Listener() {
-
-			public void handleEvent(Event event) {
-				if ((event.detail & SWT.SELECTED) > 0) {
-					ViewerCell focusCell = getFocusCell();
-					ViewerRow row = viewer.getViewerRowFromItem(event.item);
-
-					Assert
-							.isNotNull(row,
-									"Internal structure invalid. Item without associated row is not possible."); //$NON-NLS-1$
-
-					ViewerCell cell = row.getCell(event.index);
-
-					if (focusCell == null || !cell.equals(focusCell)) {
-						removeSelectionInformation(event, cell);
-					} else {
-						markFocusedCell(event, cell);
-					}
-				}
-			}
-
-		};
-		viewer.getControl().addListener(SWT.EraseItem, listener);
-	}
-
-	/**
-	 * The color to use when rendering the background of the selected cell when
-	 * the control has the input focus
-	 * 
-	 * @param cell
-	 *            the cell which is colored
-	 * @return the color or <code>null</code> to use the default
-	 */
-	protected Color getSelectedCellBackgroundColor(ViewerCell cell) {
-		return null;
-	}
-
-	/**
-	 * The color to use when rendering the foreground (=text) of the selected
-	 * cell when the control has the input focus
-	 * 
-	 * @param cell
-	 *            the cell which is colored
-	 * @return the color or <code>null</code> to use the default
-	 */
-	protected Color getSelectedCellForegroundColor(ViewerCell cell) {
-		return null;
-	}
-
-	/**
-	 * The color to use when rendering the foreground (=text) of the selected
-	 * cell when the control has <b>no</b> input focus
-	 * 
-	 * @param cell
-	 *            the cell which is colored
-	 * @return the color or <code>null</code> to use the same used when
-	 *         control has focus
-	 * @since 3.4
-	 */
-	protected Color getSelectedCellForegroundColorNoFocus(ViewerCell cell) {
-		return null;
-	}
-
-	/**
-	 * The color to use when rendering the background of the selected cell when
-	 * the control has <b>no</b> input focus
-	 * 
-	 * @param cell
-	 *            the cell which is colored
-	 * @return the color or <code>null</code> to use the same used when
-	 *         control has focus
-	 * @since 3.4
-	 */
-	protected Color getSelectedCellBackgroundColorNoFocus(ViewerCell cell) {
-		return null;
-	}
-
-	/**
-	 * Controls whether the whole cell or only the text-area is highlighted
-	 * 
-	 * @param cell
-	 *            the cell which is highlighted
-	 * @return <code>true</code> if only the text area should be highlighted
-	 * @since 3.4
-	 */
-	protected boolean onlyTextHighlighting(ViewerCell cell) {
-		return false;
-	}
-
-	protected void focusCellChanged(ViewerCell newCell, ViewerCell oldCell) {
-		super.focusCellChanged(newCell, oldCell);
-
-		// Redraw new area
-		if (newCell != null) {
-			Rectangle rect = newCell.getBounds();
-			int x = newCell.getColumnIndex() == 0 ? 0 : rect.x;
-			int width = newCell.getColumnIndex() == 0 ? rect.x + rect.width
-					: rect.width;
-			// 1 is a fix for Linux-GTK
-			newCell.getControl().redraw(x, rect.y - 1, width, rect.height + 1,
-					true);
-		}
-
-		if (oldCell != null) {
-			Rectangle rect = oldCell.getBounds();
-			int x = oldCell.getColumnIndex() == 0 ? 0 : rect.x;
-			int width = oldCell.getColumnIndex() == 0 ? rect.x + rect.width
-					: rect.width;
-			// 1 is a fix for Linux-GTK
-			oldCell.getControl().redraw(x, rect.y - 1, width, rect.height + 1,
-					true);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBaseLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBaseLabelProvider.java
deleted file mode 100644
index a6af26a6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBaseLabelProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A label provider maps an element of the viewer's model to
- * an optional image and optional text string used to display
- * the element in the viewer's control.  Certain label providers
- * may allow multiple labels per element.  
- * This is an "abstract interface", defining methods common 
- * to all label providers, but does not actually define the methods 
- * to get the label(s) for an element.  This interface should never
- * be directly implemented.
- * Most viewers will take either an <code>ILabelProvider</code> or
- * an <code>ITableLabelProvider</code>.
- * <p>
- * A label provider must not be shared between viewers 
- * since a label provider generally manages SWT resources (images),
- * which must be disposed when the viewer is disposed.
- * To simplify life cycle management, the current label provider 
- * of a viewer is disposed when the viewer is disposed.
- * </p>
- * <p>
- * Label providers can be used outside the context of viewers wherever
- * images are needed.  When label providers are used in this fashion
- * it is the responsibility of the user to ensure <code>dispose</code>
- * is called when the provider is no longer needed.
- * </p>
- *
- * @see ILabelProvider
- * @see ITableLabelProvider
- */
-public interface IBaseLabelProvider {
-    /**
-     * Adds a listener to this label provider. 
-     * Has no effect if an identical listener is already registered.
-     * <p>
-     * Label provider listeners are informed about state changes 
-     * that affect the rendering of the viewer that uses this label provider.
-     * </p>
-     *
-     * @param listener a label provider listener
-     */
-    public void addListener(ILabelProviderListener listener);
-
-    /**
-     * Disposes of this label provider.  When a label provider is
-     * attached to a viewer, the viewer will automatically call
-     * this method when the viewer is being closed.  When label providers
-     * are used outside of the context of a viewer, it is the client's
-     * responsibility to ensure that this method is called when the
-     * provider is no longer needed.
-     */
-    public void dispose();
-
-    /**
-     * Returns whether the label would be affected 
-     * by a change to the given property of the given element.
-     * This can be used to optimize a non-structural viewer update.
-     * If the property mentioned in the update does not affect the label,
-     * then the viewer need not update the label.
-     *
-     * @param element the element
-     * @param property the property
-     * @return <code>true</code> if the label would be affected,
-     *    and <code>false</code> if it would be unaffected
-     */
-    public boolean isLabelProperty(Object element, String property);
-
-    /**
-     * Removes a listener to this label provider.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a label provider listener
-     */
-    public void removeListener(ILabelProviderListener listener);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBasicPropertyConstants.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBasicPropertyConstants.java
deleted file mode 100644
index cad8e42..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IBasicPropertyConstants.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Predefined property names used for elements displayed in viewers.
- *
- * @see StructuredViewer#update(Object, String[])
- * @see StructuredViewer#update(Object[], String[])
- * @see IBaseLabelProvider#isLabelProperty
- * @see ViewerComparator#isSorterProperty
- * @see ViewerFilter#isFilterProperty
- */
-public interface IBasicPropertyConstants {
-
-    /**
-     * Property name constant (value <code>"org.eclipse.jface.text"</code>)
-     * for an element's label text.
-     *
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText
-     */
-    public static final String P_TEXT = "org.eclipse.jface.text"; //$NON-NLS-1$
-
-    /**
-     * Property name constant (value <code>"org.eclipse.jface.image"</code>)
-     * for an element's label image.
-     *
-     * @see org.eclipse.jface.viewers.ILabelProvider#getImage
-     */
-    public static final String P_IMAGE = "org.eclipse.jface.image"; //$NON-NLS-1$
-
-    /**
-     * Property name constant (value <code>"org.eclipse.jface.children"</code>)
-     * for an element's children.
-     */
-    public static final String P_CHILDREN = "org.eclipse.jface.children"; //$NON-NLS-1$
-
-    /**
-     * Property name constant (value <code>"org.eclipse.jface.parent"</code>)
-     * for an element's parent object.
-     */
-    public static final String P_PARENT = "org.eclipse.jface.parent"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorListener.java
deleted file mode 100644
index 697af3f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorListener.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A listener which is notified of significant events in the
- * life of a cell editor.
- * <p>
- * This interface should be implemented by classes that wish to
- * react to cell editor activity.
- * </p>
- * <p>
- * Note: the cell editor is not passed as a parameter to any
- * of these methods; so the assumption is that the listener
- * knows which cell editor is talking to it.
- * </p>
- */
-public interface ICellEditorListener {
-    /**
-     * Notifies that the end user has requested applying a value.
-     * All cell editors send this notification.
-     * <p>
-     * The normal reaction is to update the model with the current cell editor value.
-     * However, if the value is not valid, it should not be applied. 
-     * A typical text-based cell editor would send this message
-     * when the end user hits Return, whereas other editors would
-     * send it whenever their value changes.
-     * </p>
-     */
-    public void applyEditorValue();
-
-    /**
-     * Notifies that the end user has canceled editing.
-     * All cell editors send this notification.
-     * A listener should <b>not</b> update the model based on this
-     * notification; see <code>applyEditorValue</code>.
-     */
-    public void cancelEditor();
-
-    /**
-     * Notifies that the end user is changing the value in the cell editor. This
-     * notification is normally sent only by text-based editors in response to a
-     * keystroke, so that the listener may show an error message reflecting the
-     * current valid state. This notification is sent while the value is being
-     * actively edited, before the value is applied or canceled.  A listener should
-     * <b>not</b> update the model based on this notification; see
-     * <code>applyEditorValue</code>.
-     * <p>
-     * If the <code>newValidState</code> parameter is <code>true</code>,
-     * the new value may be retrieved by calling <code>ICellEditor.getValue</code>
-     * on the appropriate cell editor.
-     * </p>
-     * 
-     * @param oldValidState the valid state before the end user changed the value
-     * @param newValidState the current valid state
-     */
-    public void editorValueChanged(boolean oldValidState, boolean newValidState);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorValidator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorValidator.java
deleted file mode 100644
index 8722111..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellEditorValidator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * An interface for validating a cell editor's input.
- * <p>
- * This interface should be implemented by classes that wish to
- * act as cell editor validators.
- * </p>
- */
-public interface ICellEditorValidator {
-    /**
-     * Returns a string indicating whether the given value is valid;
-     * <code>null</code> means valid, and non-<code>null</code> means
-     * invalid, with the result being the error message to display
-     * to the end user.
-     * <p>
-     * It is the responsibility of the implementor to fully format the
-     * message before returning it.
-     * </p>
-     * 
-     * @param value the value to be validated
-     * @return the error message, or <code>null</code> indicating
-     *	that the value is valid
-     */
-    public String isValid(Object value);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellModifier.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellModifier.java
deleted file mode 100644
index 372eae0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICellModifier.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A cell modifier is used to access the data model from a cell
- * editor in an abstract way. It offers methods to:
- * <ul>
- *	<li>to check if a a model element's property can be edited or not</li>
- *	<li>retrieve a value a model element's property</li>
- *	<li>to store a cell editor's value back into the model 
- *    element's property</li>
- * </ul>
- * <p>
- * This interface should be implemented by classes that wish to
- * act as cell modifiers.
- * </p>
- */
-public interface ICellModifier {
-    /**
-     * Checks whether the given property of the given element can be 
-     * modified.
-     *
-     * @param element the element
-     * @param property the property
-     * @return <code>true</code> if the property can be modified,
-     *   and <code>false</code> if it is not modifiable
-     */
-    public boolean canModify(Object element, String property);
-
-    /**
-     * Returns the value for the given property of the given element.
-     * Returns <code>null</code> if the element does not have the given property.
-     *
-     * @param element the element
-     * @param property the property
-     * @return the property value
-     */
-    public Object getValue(Object element, String property);
-
-    /**
-     * Modifies the value for the given property of the given element.
-     * Has no effect if the element does not have the given property,
-     * or if the property cannot be modified.
-     * <p>
-     * Note that it is possible for an SWT Item to be passed instead of 
-     * the model element. To handle this case in a safe way, use: 
-     * <pre>
-     *     if (element instanceof Item) {
-     *         element = ((Item) element).getData();
-     *     }
-     *     // modify the element's property here
-     * </pre>
-     * </p>
-     * 
-     * @param element the model element or SWT Item (see above)
-     * @param property the property
-     * @param value the new property value
-     * 
-     * @see org.eclipse.swt.widgets.Item
-     */
-    public void modify(Object element, String property, Object value);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckStateListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckStateListener.java
deleted file mode 100644
index 74586f9..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckStateListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A listener which is notified of changes to the checked
- * state of items in checkbox viewers.
- *
- * @see CheckStateChangedEvent
- */
-public interface ICheckStateListener {
-    /**
-     * Notifies of a change to the checked state of an element.
-     *
-     * @param event event object describing the change
-     */
-    void checkStateChanged(CheckStateChangedEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckable.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckable.java
deleted file mode 100644
index 37143c6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ICheckable.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Interface for objects that support elements with a checked state.
- *
- * @see ICheckStateListener
- * @see CheckStateChangedEvent
- */
-public interface ICheckable {
-    /**
-     * Adds a listener for changes to the checked state of elements
-     * in this viewer.
-     * Has no effect if an identical listener is already registered.
-     *
-     * @param listener a check state listener
-     */
-    public void addCheckStateListener(ICheckStateListener listener);
-
-    /**
-     * Returns the checked state of the given element.
-     *
-     * @param element the element
-     * @return <code>true</code> if the element is checked,
-     *   and <code>false</code> if not checked
-     */
-    public boolean getChecked(Object element);
-
-    /**
-     * Removes the given check state listener from this viewer.
-     * Has no effect if an identical listener is not registered.
-     *
-     * @param listener a check state listener
-     */
-    public void removeCheckStateListener(ICheckStateListener listener);
-
-    /**
-     * Sets the checked state for the given element in this viewer.
-     * Does not fire events to check state listeners.
-     *
-     * @param element the element
-     * @param state <code>true</code> if the item should be checked,
-     *  and <code>false</code> if it should be unchecked
-     * @return <code>true</code> if the checked state could be set, 
-     *  and <code>false</code> otherwise
-     */
-    public boolean setChecked(Object element, boolean state);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorDecorator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorDecorator.java
deleted file mode 100644
index d8294e0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorDecorator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Color;
-
-/**
- * The IColorDecorator is an interface for objects that return a color to
- * decorate either the foreground and background colors for displaying an
- * an object.
- * 
- * If an IColorDecorator decorates a foreground or background in an object 
- * that also has an IColorProvider the IColorDecorator will take precedence.
- * @see IColorProvider
- * 
- * @since 3.1
- */
-public interface IColorDecorator {
-	
-	/**
-	 * Return the foreground Color for element or <code>null</code> if there
-	 * is not one.
-	 * @param element
-	 * @return Color or <code>null</code>
-	 */
-	public Color decorateForeground(Object element);
-	
-	/**
-	 * Return the background Color for element or <code>null</code> if there
-	 * is not one.
-	 * @param element
-	 * @return Color or <code>null</code>
-	 */
-	public Color decorateBackground(Object element);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorProvider.java
deleted file mode 100644
index a58efac..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IColorProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Interface to provide color representation for a given element.
- * @see org.eclipse.jface.viewers.IColorDecorator
- */
-public interface IColorProvider {
-
-    /**
-     * Provides a foreground color for the given element.
-     * 
-     * @param element the element
-     * @return	the foreground color for the element, or <code>null</code> 
-     *   to use the default foreground color
-     */
-    Color getForeground(Object element);
-
-    /**
-     * Provides a background color for the given element.
-     * 
-     * @param element the element
-     * @return	the background color for the element, or <code>null</code> 
-     *   to use the default background color
-     */
-    Color getBackground(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IContentProvider.java
deleted file mode 100644
index 9a5547a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IContentProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/** 
- * A content provider mediates between the viewer's model
- * and the viewer itself.
- * 
- * @see org.eclipse.jface.viewers.ContentViewer#setContentProvider(IContentProvider)
- */
-public interface IContentProvider {
-    /**
-     * Disposes of this content provider.  
-     * This is called by the viewer when it is disposed.
-     * <p>
-     * The viewer should not be updated during this call, as it is in the process
-     * of being disposed.
-     * </p>
-     */
-    public void dispose();
-
-    /**
-     * Notifies this content provider that the given viewer's input
-     * has been switched to a different element.
-     * <p>
-     * A typical use for this method is registering the content provider as a listener
-     * to changes on the new input (using model-specific means), and deregistering the viewer 
-     * from the old input. In response to these change notifications, the content provider
-     * should update the viewer (see the add, remove, update and refresh methods on the viewers).
-     * </p>
-     * <p>
-     * The viewer should not be updated during this call, as it might be in the process
-     * of being disposed.
-     * </p>
-     *
-     * @param viewer the viewer
-     * @param oldInput the old input element, or <code>null</code> if the viewer
-     *   did not previously have an input
-     * @param newInput the new input element, or <code>null</code> if the viewer
-     *   does not have an input
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecoration.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecoration.java
deleted file mode 100644
index e4b41c3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecoration.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-
-/**
- * Defines the result of decorating an element.
- * 
- * This interface is not meant to be implemented and will be provided to
- * instances of <code>ILightweightLabelDecorator</code>.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IDecoration{
-
-	/**
-	 * Constants for placement of image decorations.
-	 */
-	public static final int TOP_LEFT = 0;
-
-	/**
-	 * Constant for the top right quadrant.
-	 */
-	public static final int TOP_RIGHT = 1;
-
-	/**
-	 * Constant for the bottom left quadrant.
-	 */
-	public static final int BOTTOM_LEFT = 2;
-
-	/**
-	 * Constant for the bottom right quadrant.
-	 */
-	public static final int BOTTOM_RIGHT = 3;
-
-	/**
-	 * Constant for the underlay.
-	 */
-	public static final int UNDERLAY = 4;
-
-	/**
-	 * Constant for replacing the original image. Note that for this to have an
-	 * effect on the resulting decorated image, {@link #ENABLE_REPLACE} has to
-	 * be set to {@link Boolean#TRUE} in the {@link IDecorationContext} (opt-in
-	 * model). If replacement behavior is enabled, the resulting decorated image
-	 * will be constructed by first painting the underlay, then the replacement
-	 * image, and then the regular quadrant images.
-	 * 
-	 * @since 3.4
-	 */
-	public static final int REPLACE = 5;
-	
-	/**
-	 * Constant that is used as the property key on an
-	 * {@link IDecorationContext}. To enable image replacement, set to
-	 * {@link Boolean#TRUE}.
-	 * 
-	 * @since 3.4
-	 * @see IDecorationContext
-	 */
-	public static final String ENABLE_REPLACE = "org.eclipse.jface.viewers.IDecoration.disableReplace"; //$NON-NLS-1$
-	
-	/**
-	 * Adds a prefix to the element's label.
-	 * 
-	 * @param prefix
-	 *            the prefix
-	 */
-	public void addPrefix(String prefix);
-
-	/**
-	 * Adds a suffix to the element's label.
-	 * 
-	 * @param suffix
-	 *            the suffix
-	 */
-	public void addSuffix(String suffix);
-
-	/**
-	 * Adds an overlay to the element's image.
-	 * 
-	 * @param overlay
-	 *            the overlay image descriptor
-	 */
-	public void addOverlay(ImageDescriptor overlay);
-
-	/**
-	 * Adds an overlay to the element's image.
-	 * 
-	 * @param overlay
-	 *            the overlay image descriptor
-	 * @param quadrant
-	 *            The constant for the quadrant to draw the image on.
-	 */
-	public void addOverlay(ImageDescriptor overlay, int quadrant);
-	
-	/**
-	 * Set the foreground color for this decoration.
-	 * @param color the color to be set for the foreground
-	 * 
-	 * @since 3.1
-	 */
-	public void setForegroundColor(Color color);
-	
-	/**
-	 * Set the background color for this decoration.
-	 * @param color the color to be set for the background
-	 * 
-	 * @since 3.1
-	 */
-	public void setBackgroundColor(Color color);
-	
-	/**
-	 * Set the font for this decoration.
-	 * @param font the font to use in this decoration
-	 * 
-	 * @since 3.1
-	 */
-	public void setFont(Font font);
-
-	/**
-	 * Return the decoration context in which this decoration
-	 * will be applied.
-	 * @return the decoration context
-	 * 
-	 * @since 3.2
-	 */
-	public IDecorationContext getDecorationContext();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecorationContext.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecorationContext.java
deleted file mode 100644
index bba6f7a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDecorationContext.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-
-/**
- * A decoration context provides additional information to
- * a label decorator.
- * <p>
- * This interface is not intended to be implemented by clients
- * 
- * @see LabelDecorator
- * 
- * @since 3.2
- */
-public interface IDecorationContext {
-	
-	/**
-	 * Get the value of the given property or <code>null</code>
-	 * if the property does not exist in this context.
-	 * @param property the property
-	 * @return the value of the given property or <code>null</code>
-	 */
-	Object getProperty(String property);
-	
-	/**
-	 * Return the properties that exist in this context
-	 * (i.e. the set of properties that have values associated
-	 * with them.
-	 * @return the properties that exist in this context
-	 */
-	String[] getProperties();
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDelayedLabelDecorator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDelayedLabelDecorator.java
deleted file mode 100644
index ea7f91e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDelayedLabelDecorator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A delayed label decorator is a label decorator that may not have a
- * decoration available immediately. This interface defines the methods for
- * requesting the preparation of a decorator for an object and for querying
- * if the decorator is ready. Interested parties should register an
- * ILabelProviderListener with a delayed label decorator in order to be informed
- * when the decoration is ready.
- * @since 3.0
- */
-public interface IDelayedLabelDecorator extends ILabelDecorator {
-
-    /**
-     * Prepare the element for decoration. If it is already decorated and ready for update
-     * return true. If decoration is pending return false.
-     * @param element The element to be decorated
-     * @param originalText The starting text. 
-     * @return boolean <code>true</code> if the decoration is ready for this element
-     */
-
-    public boolean prepareDecoration(Object element, String originalText);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDoubleClickListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDoubleClickListener.java
deleted file mode 100644
index 814f7ca..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IDoubleClickListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A listener which is notified of double-click events on viewers.
- */
-public interface IDoubleClickListener {
-    /**
-     * Notifies of a double click.
-     *
-     * @param event event object describing the double-click
-     */
-    public void doubleClick(DoubleClickEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IElementComparer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IElementComparer.java
deleted file mode 100644
index 84d9c19..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IElementComparer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * This interface is used to compare elements in a viewer for equality,
- * and to provide the hash code for an element.
- * This allows the client of the viewer to specify different equality criteria
- * and a different hash code implementation than the 
- * <code>equals</code> and <code>hashCode</code> implementations of the
- * elements themselves. 
- * 
- * @see StructuredViewer#setComparer
- */
-public interface IElementComparer {
-
-    /**
-     * Compares two elements for equality
-     * 
-     * @param a the first element
-     * @param b the second element
-     * @return whether a is equal to b
-     */
-    boolean equals(Object a, Object b);
-
-    /**
-     * Returns the hash code for the given element.
-     * @param element the element the hash code is calculated for
-     * 
-     * @return the hash code for the given element
-     */
-    int hashCode(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFilter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFilter.java
deleted file mode 100644
index b5b3ba5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFilter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Interface for filters. Can accept or reject items.
- * 
- * @since 3.1
- */
-public interface IFilter {
-	/**
-	 * Determines if the given object passes this filter.
-	 * 
-	 * @param toTest object to compare against the filter 
-	 * 
-	 * @return <code>true</code> if the object is accepted by the filter.
-	 */
-	public boolean select(Object toTest);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontDecorator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontDecorator.java
deleted file mode 100644
index ea69c37..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontDecorator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Font;
-
-/**
- * The IFontDecorator is an interface for objects that return a font to
- * decorate an object.
- * 
- * If an IFontDecorator decorates a font in an object that also has
- * an IFontProvider the IFontDecorator will take precedence.
- * @see IFontProvider
- * 
- * @since 3.1
- */
-public interface IFontDecorator {
-	
-	/**
-	 * Return the font for element or <code>null</code> if there
-	 * is not one.
-	 * 
-	 * @param element
-	 * @return Font or <code>null</code>
-	 */
-	public Font decorateFont(Object element);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontProvider.java
deleted file mode 100644
index 8e19ab4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IFontProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Font;
-
-/**
- * Interface to provide font representation for a given element.
- * @see org.eclipse.jface.viewers.IFontDecorator
- * 
- * @since 3.0
- */
-public interface IFontProvider {
-
-    /**
-     * Provides a font for the given element.
-     * 
-     * @param element the element
-     * @return the font for the element, or <code>null</code> 
-     *   to use the default font
-     */
-    public Font getFont(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputProvider.java
deleted file mode 100644
index 30fdca0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Interface common to all objects that provide an input.
- */
-public interface IInputProvider {
-    /**
-     * Returns the input.
-     *
-     * @return the input object
-     */
-    public Object getInput();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputSelectionProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputSelectionProvider.java
deleted file mode 100644
index b5fdeab..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IInputSelectionProvider.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Interface common to all objects that provide both an input and
- * a selection.
- */
-public interface IInputSelectionProvider extends IInputProvider,
-        ISelectionProvider {
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelDecorator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelDecorator.java
deleted file mode 100644
index 16fc861..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelDecorator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A label decorator decorates the label text and image for some element.
- * The original label text and image are obtained by some other means,
- * for example by a label provider.
- *
- * @see ILabelProvider
- */
-public interface ILabelDecorator extends IBaseLabelProvider {
-    /**
-     * Returns an image that is based on the given image,
-     * but decorated with additional information relating to the state
-     * of the provided element.
-     * 
-     * Text and image decoration updates can occur as a result of other updates
-     * within the workbench including deferred decoration by background processes.
-     * Clients should handle labelProviderChangedEvents for the given element to get
-     * the complete decoration.
-     * @see LabelProviderChangedEvent
-     * @see IBaseLabelProvider#addListener
-     *
-     * @param image the input image to decorate, or <code>null</code> if the element has no image
-     * @param element the element whose image is being decorated
-     * @return the decorated image, or <code>null</code> if no decoration is to be applied
-     *
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor
-     */
-    public Image decorateImage(Image image, Object element);
-
-    /**
-     * Returns a text label that is based on the given text label,
-     * but decorated with additional information relating to the state
-     * of the provided element.
-     * 
-     * Text and image decoration updates can occur as a result of other updates
-     * within the workbench including deferred decoration by background processes.
-     * Clients should handle labelProviderChangedEvents for the given element to get
-     * the complete decoration.
-     * @see LabelProviderChangedEvent
-     * @see IBaseLabelProvider#addListener
-     *
-     * @param text the input text label to decorate
-     * @param element the element whose image is being decorated
-     * @return the decorated text label, or <code>null</code> if no decoration is to be applied
-     */
-    public String decorateText(String text, Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProvider.java
deleted file mode 100644
index 414f159..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProvider.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Extends <code>IBaseLabelProvider</code> with the methods
- * to provide the text and/or image for the label of a given element. 
- * Used by most structured viewers, except table viewers.
- */
-public interface ILabelProvider extends IBaseLabelProvider {
-    /**
-     * Returns the image for the label of the given element.  The image
-     * is owned by the label provider and must not be disposed directly.
-     * Instead, dispose the label provider when no longer needed.
-     *
-     * @param element the element for which to provide the label image
-     * @return the image used to label the element, or <code>null</code>
-     *   if there is no image for the given object
-     */
-    public Image getImage(Object element);
-
-    /**
-     * Returns the text for the label of the given element.
-     *
-     * @param element the element for which to provide the label text
-     * @return the text string used to label the element, or <code>null</code>
-     *   if there is no text label for the given object
-     */
-    public String getText(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProviderListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProviderListener.java
deleted file mode 100644
index 8f9d095..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILabelProviderListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/** 
- * A listener which is notified when a label provider's state changes.
- *
- * @see IBaseLabelProvider#addListener
- * @see IBaseLabelProvider#removeListener
- */
-public interface ILabelProviderListener {
-    /**
-     * Notifies this listener that the state of the label provider 
-     * has changed in a way that affects the labels it computes.
-     * <p>
-     * A typical response would be to refresh all labels by 
-     * re-requesting them from the label provider.
-     * </p>
-     *
-     * @param event the label provider change event
-     */
-    public void labelProviderChanged(LabelProviderChangedEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyContentProvider.java
deleted file mode 100644
index a97f371..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyContentProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * The ILazyContentProvider is the content provider
- * for table viewers created using the SWT.VIRTUAL flag that
- * only wish to return their contents as they are queried.
- * 
- * <strong>NOTE:</strong> As the ILazyContentProvider does
- * not have API for determining the total item count any
- * changes to the number of items for this object while
- * require a call to <code>#setItemCount</code> on the 
- * viewer that uses it.
- */
-public interface ILazyContentProvider extends IContentProvider {
-	/**
-	 * Called when a previously-blank item becomes visible in the
-	 * TableViewer. If the content provider knows the element
-	 * at this row, it should respond by calling 
-	 * TableViewer#replace(Object, int).
-	 * 
-	 * <strong>NOTE</strong> #updateElement(int index) can be used to determine selection
-	 * values. TableViewer#replace(Object, int) is not called before 
-	 * returning from this method selections may have missing or stale elements.
-	 * In this situation it is suggested that the selection is asked
-	 * for again after he update.
-	 * 
-	 * @param index The index that is being updated in the
-	 * table.
-	 */
-	public void updateElement(int index);
-	
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java
deleted file mode 100644
index fdfc1e6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreeContentProvider.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * The ILazyTreeContentProvider is the content provider for tree viewers created
- * using the SWT.VIRTUAL flag that only wish to return their contents as they
- * are queried.
- * 
- * @since 3.2
- */
-public interface ILazyTreeContentProvider extends IContentProvider {
-	/**
-	 * Called when a previously-blank item becomes visible in the TreeViewer. If
-	 * the content provider knows the child element for the given parent at this
-	 * index, it should respond by calling
-	 * {@link TreeViewer#replace(Object, int, Object)}. The content provider
-	 * should also update the child count for any replaced element by calling
-	 * {@link TreeViewer#setChildCount(Object, int)}. If the given current child
-	 * count is already correct, setChildCount does not have to be called since
-	 * a call to replace will not change the child count.
-	 * 
-	 * <strong>NOTE</strong> #updateElement(int index) can be used to determine
-	 * selection values. If TableViewer#replace(Object, int) is not called
-	 * before returning from this method, selections may have missing or stale
-	 * elements. In this situation it is suggested that the selection is asked
-	 * for again after replace() has been called.
-	 * 
-	 * @param parent
-	 *            The parent of the element, or the viewer's input if the
-	 *            element to update is a root element
-	 * @param index
-	 *            The index of the element to update in the tree
-	 */
-	public void updateElement(Object parent, int index);
-
-	/**
-	 * Called when the TreeViewer needs an up-to-date child count for the given
-	 * element, for example from {@link TreeViewer#refresh()} and
-	 * {@link TreeViewer#setInput(Object)}. If the content provider knows the
-	 * given element, it should respond by calling
-	 * {@link TreeViewer#setChildCount(Object, int)}. If the given current
-	 * child count is already correct, no action has to be taken by this content
-	 * provider.
-	 * 
-	 * @param element
-	 *            The element for which an up-to-date child count is needed, or
-	 *            the viewer's input if the number of root elements is requested 
-	 * @param currentChildCount 
-	 * 			  The current child count for the element that needs updating
-	 */
-	public void updateChildCount(Object element, int currentChildCount);
-	
-    /**
-     * Returns the parent for the given element, or <code>null</code> 
-     * indicating that the parent can't be computed. 
-     * In this case the tree-structured viewer can't expand
-     * a given node correctly if requested.
-     *
-     * @param element the element
-     * @return the parent element, or <code>null</code> if it
-     *   has none or if the parent cannot be computed
-     */
-	public Object getParent(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java
deleted file mode 100644
index 32b87e5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILazyTreePathContentProvider.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * The ILazyTreePathContentProvider is a tree path-based content provider for
- * tree viewers created using the SWT.VIRTUAL flag that only wish to return
- * their contents as they are queried.
- * 
- * @since 3.3
- */
-public interface ILazyTreePathContentProvider extends IContentProvider {
-	/**
-	 * Called when a previously-blank item becomes visible in the TreeViewer. If
-	 * the content provider knows the child element for the given parent at this
-	 * index, it should respond by calling
-	 * {@link TreeViewer#replace(Object, int, Object)}. The content provider
-	 * should also update the child count for any replaced element by calling
-	 * {@link TreeViewer#setChildCount(Object, int)}. If the given current child
-	 * count is already correct, setChildCount does not have to be called since
-	 * a call to replace will not change the child count.
-	 * 
-	 * <strong>NOTE</strong> #updateElement(int index) can be used to determine
-	 * selection values. If TableViewer#replace(Object, int) is not called
-	 * before returning from this method, selections may have missing or stale
-	 * elements. In this situation it is suggested that the selection is asked
-	 * for again after replace() has been called.
-	 * 
-	 * @param parentPath
-	 *            The tree path of parent of the element, or if the
-	 *            element to update is a root element, an empty tree path
-	 * @param index
-	 *            The index of the element to update in the tree
-	 */
-	public void updateElement(TreePath parentPath, int index);
-
-	/**
-	 * Called when the TreeViewer needs an up-to-date child count for the given
-	 * tree path, for example from {@link TreeViewer#refresh()} and
-	 * {@link TreeViewer#setInput(Object)}. If the content provider knows the
-	 * element at the given tree path, it should respond by calling
-	 * {@link TreeViewer#setChildCount(Object, int)}. If the given current
-	 * child count is already correct, no action has to be taken by this content
-	 * provider.
-	 * 
-	 * @param treePath
-	 *            The tree path for which an up-to-date child count is needed, or
-	 *            if the number of root elements is requested, the empty tree path 
-	 * @param currentChildCount 
-	 * 			  The current child count for the element that needs updating
-	 */
-	public void updateChildCount(TreePath treePath, int currentChildCount);
-	
-	/**
-	 * Called when the TreeViewer needs up-to-date information whether the node
-	 * at the given tree path can be expanded. If the content provider knows the
-	 * element at the given tree path, it should respond by calling
-	 * {@link TreeViewer#setHasChildren(Object, boolean)}. The content provider
-	 * may also choose to call {@link TreeViewer#setChildCount(Object, int)}
-	 * instead if it knows the number of children.
-	 * 
-	 * <p>
-	 * Intended as an optimization for when the viewer does not need the actual
-	 * children. Clients may be able to implement this more efficiently than
-	 * <code>updateChildCount</code>.
-	 * </p>
-	 * 
-	 * @param path
-	 *            The tree path for which up-to-date information about children
-	 *            is needed
-	 */
-	public void updateHasChildren(TreePath path);
-
-	/**
-	 * Return the possible parent paths for the given element. An empty array
-	 * can be returned if the paths cannot be computed. In this case the
-	 * tree-structured viewer can't expand a given node correctly if requested.
-	 * If the element is a potential child of the input of the viewer, an empty
-	 * tree path should be an entry in the returned array.
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the possible parent paths for the given element
-	 */
-	public TreePath[] getParents(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILightweightLabelDecorator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILightweightLabelDecorator.java
deleted file mode 100644
index 5fdecab..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ILightweightLabelDecorator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * The <code>ILightweightLabelDecorator</code> is a decorator that decorates
- * using a prefix, suffix and overlay image rather than doing all 
- * of the image and text management itself like an <code>ILabelDecorator</code>.
- */
-public interface ILightweightLabelDecorator extends IBaseLabelProvider {
-
-    /**
-     * Calculates decorations based on element. 
-     * 
-     * @param element the element to decorate
-     * @param decoration the decoration to set
-     */
-    public void decorate(Object element, IDecoration decoration);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IOpenListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IOpenListener.java
deleted file mode 100644
index 34c3b4e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IOpenListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A listener which is notified of open events on viewers.
- */
-public interface IOpenListener {
-    /**
-     * Notifies of an open event.
-     *
-     * @param event event object describing the open event
-     */
-    public void open(OpenEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IPostSelectionProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IPostSelectionProvider.java
deleted file mode 100644
index a62792d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IPostSelectionProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Selection provider extension interface to allow providers
- * to notify about post selection changed events.
- * A post selection changed event is equivalent to selection changed event
- * if the selection change was triggered by the mouse, but it has a delay 
- * if the selection change is triggered by keyboard navigation.
- *
- * @see ISelectionProvider
- * 
- * @since 3.0
- */
-public interface IPostSelectionProvider extends ISelectionProvider {
-
-    /**
-     * Adds a listener for post selection changes in this selection provider.
-     * Has no effect if an identical listener is already registered.
-     *
-     * @param listener a selection changed listener
-     */
-    public void addPostSelectionChangedListener(
-            ISelectionChangedListener listener);
-
-    /**
-     * Removes the given listener for post selection changes from this selection 
-     * provider.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a selection changed listener
-     */
-    public void removePostSelectionChangedListener(
-            ISelectionChangedListener listener);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelection.java
deleted file mode 100644
index 1213320..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelection.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Interface for a selection.
- *
- * @see ISelectionProvider
- * @see ISelectionChangedListener
- * @see SelectionChangedEvent
- */
-public interface ISelection {
-
-    /**
-     * Returns whether this selection is empty.
-     * 
-     * @return <code>true</code> if this selection is empty,
-     *   and <code>false</code> otherwise
-     */
-    public boolean isEmpty();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionChangedListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionChangedListener.java
deleted file mode 100644
index c5a27e5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionChangedListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/** 
- * A listener which is notified when a viewer's selection changes.
- *
- * @see ISelection
- * @see ISelectionProvider
- * @see SelectionChangedEvent
- */
-public interface ISelectionChangedListener {
-    /**
-     * Notifies that the selection has changed.
-     *
-     * @param event event object describing the change
-     */
-    public void selectionChanged(SelectionChangedEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionProvider.java
deleted file mode 100644
index 4a4e963..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ISelectionProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Interface common to all objects that provide a selection.
- *
- * @see ISelection
- * @see ISelectionChangedListener
- * @see SelectionChangedEvent
- */
-public interface ISelectionProvider {
-    /**
-     * Adds a listener for selection changes in this selection provider.
-     * Has no effect if an identical listener is already registered.
-     *
-     * @param listener a selection changed listener
-     */
-    public void addSelectionChangedListener(ISelectionChangedListener listener);
-
-    /**
-     * Returns the current selection for this provider.
-     * 
-     * @return the current selection
-     */
-    public ISelection getSelection();
-
-    /**
-     * Removes the given selection change listener from this selection provider.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a selection changed listener
-     */
-    public void removeSelectionChangedListener(
-            ISelectionChangedListener listener);
-
-    /**
-     * Sets the current selection for this selection provider.
-     *
-     * @param selection the new selection
-     */
-    public void setSelection(ISelection selection);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java
deleted file mode 100644
index c994e9b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredContentProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * An interface to content providers for structured viewers.
- *
- * @see StructuredViewer
- */
-public interface IStructuredContentProvider extends IContentProvider {
-    /**
-     * Returns the elements to display in the viewer 
-     * when its input is set to the given element. 
-     * These elements can be presented as rows in a table, items in a list, etc.
-     * The result is not modified by the viewer.
-     * <p>
-     * <b>NOTE:</b> For instances where the viewer is displaying a tree
-     * containing a single 'root' element it is still necessary that the
-     * 'input' does not return <i>itself</i> from this method. This leads
-     * to recursion issues (see bug 9262).
-     * </p>
-     * @param inputElement the input element
-     * @return the array of elements to display in the viewer
-     */
-    public Object[] getElements(Object inputElement);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredSelection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredSelection.java
deleted file mode 100644
index b471a04..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IStructuredSelection.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A selection containing elements.
- */
-public interface IStructuredSelection extends ISelection {
-    /**
-     * Returns the first element in this selection, or <code>null</code>
-     * if the selection is empty.
-     *
-     * @return an element, or <code>null</code> if none
-     */
-    public Object getFirstElement();
-
-    /**
-     * Returns an iterator over the elements of this selection.
-     *
-     * @return an iterator over the selected elements
-     */
-    public Iterator iterator();
-
-    /**
-     * Returns the number of elements selected in this selection.
-     *
-     * @return the number of elements selected
-     */
-    public int size();
-
-    /**
-     * Returns the elements in this selection as an array.
-     *
-     * @return the selected elements as an array
-     */
-    public Object[] toArray();
-
-    /**
-     * Returns the elements in this selection as a <code>List</code>.
-     * <strong>Note</strong> In the default implementation of {@link #toList()} in
-     * {@link StructuredSelection} the returned list is not a copy of the elements of the 
-     * receiver and modifying it will modify the contents of the selection.
-     *
-     * @return the selected elements as a list
-     */
-    public List toList();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableColorProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableColorProvider.java
deleted file mode 100644
index 1b0a6ae..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableColorProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Initial implementation - Gunnar Ahlberg (IBS AB, www.ibs.net)
- *     IBM Corporation - further revisions
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Interface to provide color representation for a given cell within
- * the row for an element in a table.
- * @since 3.1
- */
-public interface ITableColorProvider {
-
-    /**
-     * Provides a foreground color for the given element.
-     * 
-     * @param element the element
-     * @param columnIndex the zero-based index of the column in which
-     * 	the color appears
-     * @return the foreground color for the element, or <code>null</code> to
-     *         use the default foreground color
-     */
-    Color getForeground(Object element, int columnIndex);
-
-    /**
-     * Provides a background color for the given element at the specified index
-     * 
-     * @param element the element
-     * @param columnIndex the zero-based index of the column in which the color appears
-     * @return the background color for the element, or <code>null</code> to
-     *         use the default background color
-     *  
-     */
-    Color getBackground(Object element, int columnIndex);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableFontProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableFontProvider.java
deleted file mode 100644
index 03cd53c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableFontProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Font;
-
-/**
- * The ITableFontProvider is a font provider that provides fonts to 
- * individual cells within tables.
- * @since 3.1
- */
-public interface ITableFontProvider {
-	
-	/**
-	 * Provides a font for the given element at index
-	 * columnIndex.
-	 * @param element The element being displayed
-	 * @param columnIndex The index of the column being displayed
-	 * @return Font
-	 */
-	public Font getFont(Object element, int columnIndex);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableLabelProvider.java
deleted file mode 100644
index a38d722..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITableLabelProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Extends <code>IBaseLabelProvider</code> with the methods
- * to provide the text and/or image for each column of a given element.  
- * Used by table viewers.
- *
- * @see TableViewer
- */
-public interface ITableLabelProvider extends IBaseLabelProvider {
-    /**
-     * Returns the label image for the given column of the given element.
-     *
-     * @param element the object representing the entire row, or 
-     *    <code>null</code> indicating that no input object is set
-     *    in the viewer
-     * @param columnIndex the zero-based index of the column in which
-     *   the label appears
-     * @return Image or <code>null</code> if there is no image for the 
-     *  given object at columnIndex
-     */
-    public Image getColumnImage(Object element, int columnIndex);
-
-    /**
-     * Returns the label text for the given column of the given element.
-     *
-     * @param element the object representing the entire row, or
-     *   <code>null</code> indicating that no input object is set
-     *   in the viewer
-     * @param columnIndex the zero-based index of the column in which the label appears
-     * @return String or or <code>null</code> if there is no text for the 
-     *  given object at columnIndex
-     */
-    public String getColumnText(Object element, int columnIndex);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java
deleted file mode 100644
index 7b1c0fd..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeContentProvider.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * An interface to content providers for tree-structure-oriented
- * viewers.
- *
- * @see AbstractTreeViewer
- */
-public interface ITreeContentProvider extends IStructuredContentProvider {
-    /**
-     * Returns the child elements of the given parent element.
-     * <p>
-     * The difference between this method and <code>IStructuredContentProvider.getElements</code> 
-     * is that <code>getElements</code> is called to obtain the 
-     * tree viewer's root elements, whereas <code>getChildren</code> is used
-     * to obtain the children of a given parent element in the tree (including a root).
-     * </p>
-     * The result is not modified by the viewer.
-     *
-     * @param parentElement the parent element
-     * @return an array of child elements
-     */
-    public Object[] getChildren(Object parentElement);
-
-    /**
-     * Returns the parent for the given element, or <code>null</code> 
-     * indicating that the parent can't be computed. 
-     * In this case the tree-structured viewer can't expand
-     * a given node correctly if requested.
-     *
-     * @param element the element
-     * @return the parent element, or <code>null</code> if it
-     *   has none or if the parent cannot be computed
-     */
-    public Object getParent(Object element);
-
-    /**
-     * Returns whether the given element has children.
-     * <p>
-     * Intended as an optimization for when the viewer does not
-     * need the actual children.  Clients may be able to implement
-     * this more efficiently than <code>getChildren</code>.
-     * </p>
-     *
-     * @param element the element
-     * @return <code>true</code> if the given element has children,
-     *  and <code>false</code> if it has no children
-     */
-    public boolean hasChildren(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java
deleted file mode 100644
index ce87dab..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathContentProvider.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * An interface to content providers for tree-structure-oriented viewers that
- * provides content based on the path of elements in the tree viewer..
- * 
- * @see AbstractTreeViewer
- * @since 3.2
- */
-public interface ITreePathContentProvider extends IStructuredContentProvider {
-
-	/**
-	 * Returns the child elements of the last element in the given path.
-	 * Implementors may want to use the additional context of the complete path
-	 * of a parent element in order to decide which children to return.
-	 * <p>
-	 * The provided path is relative to the input. The root elements must
-	 * be obtained by calling
-	 * {@link IStructuredContentProvider#getElements(Object)}.
-	 * </p>
-	 * The result is not modified by the viewer.
-	 * 
-	 * @param parentPath
-	 *            the path of the parent element
-	 * @return an array of child elements
-	 */
-	public Object[] getChildren(TreePath parentPath);
-
-	/**
-	 * Returns whether the last element of the given path has children.
-	 * <p>
-	 * Intended as an optimization for when the viewer does not need the actual
-	 * children. Clients may be able to implement this more efficiently than
-	 * <code>getChildren</code>.
-	 * </p>
-	 * 
-	 * @param path
-	 *            the path
-	 * @return <code>true</code> if the lat element of the path has children,
-	 *         and <code>false</code> if it has no children
-	 */
-	public boolean hasChildren(TreePath path);
-
-	/**
-	 * Return the possible parent paths for the given element. An empty array
-	 * can be returned if the paths cannot be computed. If the element is 
-	 * a potential child of the input of the viewer, an empty tree path
-	 * should be an entry in the returned array.
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the possible parent paths for the given element
-	 */
-	public TreePath[] getParents(Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathLabelProvider.java
deleted file mode 100644
index ac2abd1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreePathLabelProvider.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * An extension to {@link ILabelProvider} that is given the 
- * path of the element being decorated, when it is available.
- * @since 3.2
- */
-public interface ITreePathLabelProvider extends IBaseLabelProvider {
-    
-    /**
-     * Updates the label for the given element.
-     * 
-     * @param label the label to update
-     * @param elementPath the path of the element being decorated
-     */
-    public void updateLabel(ViewerLabel label, TreePath elementPath);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeSelection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeSelection.java
deleted file mode 100644
index 41e7ba5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeSelection.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * A selection containing tree paths.
- * <p>
- * It is recommended that clients do not implement this interface but instead
- * use the standard implementation of this interface, {@link TreeSelection}.
- * <code>TreeSelection</code> adds API for getting the {@link IElementComparer}
- * of a selection (if available). This is important for clients who want to
- * create a slightly modified tree selection based on an existing tree selection.
- * The recommended coding pattern in this case is as follows:
- * <pre>
- * ITreeSelection selection = (ITreeSelection)treeViewer.getSelection();
- * TreePath[] paths = selection.getPaths();
- * IElementComparer comparer = null;
- * if (selection instanceof TreeSelection) {
- *   comparer = ((TreeSelection)selection).getElementComparer();
- * }
- * TreePath[] modifiedPaths = ... // modify as required
- * TreeSelection modifiedSelection = new TreeSelection(modifiedPaths, comparer);
- * </pre>
- * See bugs 135818 and 133375 for details.
- * </p>
- * 
- * @since 3.2
- *
- */
-public interface ITreeSelection extends IStructuredSelection {
-
-	/**
-	 * Returns the paths in this selection
-	 * 
-	 * @return the paths in this selection
-	 */
-	public TreePath[] getPaths();
-
-	/**
-	 * Returns the paths in this selection whose last segment is equal
-	 * to the given element
-	 * 
-	 * @param element the element to get the tree paths for
-	 * 
-	 * @return the array of tree paths
-	 */
-	public TreePath[] getPathsFor(Object element);
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeViewerListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeViewerListener.java
deleted file mode 100644
index eadf9cf..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ITreeViewerListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/** 
- * A listener which is notified when a tree viewer expands or collapses
- * a node.
- */
-public interface ITreeViewerListener {
-    /**
-     * Notifies that a node in the tree has been collapsed.
-     *
-     * @param event event object describing details
-     */
-    public void treeCollapsed(TreeExpansionEvent event);
-
-    /**
-     * Notifies that a node in the tree has been expanded.
-     *
-     * @param event event object describing details
-     */
-    public void treeExpanded(TreeExpansionEvent event);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IViewerLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IViewerLabelProvider.java
deleted file mode 100644
index 97f9767..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/IViewerLabelProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-/**
- * Extends <code>IBaseLabelProvider</code> with the methods
- * to update the label for a given element.  The label is represented by a 
- * <code>ViewerLabel</code>.
- * Unlike <code>ILabelProvider</code>, this allows the text and image to be
- * set in the same request, rather than via separate requests.  
- * <p>
- * It also allows the current values for the text and image to be considered by 
- * the label provider, allowing for potential optimizations.
- * For example, decorating label providers that run in the background can hold off
- * applying an update to a previously populated label until the decoration is ready,
- * thereby reducing flicker.
- * </p>
- * 
- * @see IDelayedLabelDecorator
- * @since 3.0
- */
-public interface IViewerLabelProvider extends IBaseLabelProvider {
-
-    /**
-     * Updates the label for the given element.
-     * 
-     * @param label the label to update
-     * @param element the element
-     */
-    public void updateLabel(ViewerLabel label, Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelDecorator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelDecorator.java
deleted file mode 100644
index 46991ba..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelDecorator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The LabelDecorator is an abstract superclass of ILabelDecorators
- * that support IDecorationContext.
- * @see IDecorationContext
- * @since 3.2
- *
- */
-public abstract class LabelDecorator implements ILabelDecorator {
-	
-	 /**
-     * Returns an image that is based on the given image,
-     * but decorated with additional information relating to the state
-     * of the provided element taking into account the provided context.
-     * 
-     * Text and image decoration updates can occur as a result of other updates
-     * within the workbench including deferred decoration by background processes.
-     * Clients should handle labelProviderChangedEvents for the given element to get
-     * the complete decoration.
-     * @see LabelProviderChangedEvent
-     * @see IBaseLabelProvider#addListener
-     *
-     * @param image the input image to decorate, or <code>null</code> if the element has no image
-     * @param element the element whose image is being decorated
-     * @param context additional context information about the element being decorated
-     * @return the decorated image, or <code>null</code> if no decoration is to be applied
-     *
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor
-     */
-    public abstract Image decorateImage(Image image, Object element, IDecorationContext context);
-
-    /**
-     * Returns a text label that is based on the given text label,
-     * but decorated with additional information relating to the state
-     * of the provided element taking into account the provided context.
-     * 
-     * Text and image decoration updates can occur as a result of other updates
-     * within the workbench including deferred decoration by background processes.
-     * Clients should handle labelProviderChangedEvents for the given element to get
-     * the complete decoration.
-     * @see LabelProviderChangedEvent
-     * @see IBaseLabelProvider#addListener
-     *
-     * @param text the input text label to decorate
-     * @param element the element whose image is being decorated
-     * @param context additional context information about the element being decorated
-     * @return the decorated text label, or <code>null</code> if no decoration is to be applied
-     */
-    public abstract String decorateText(String text, Object element, IDecorationContext context);
-    
-    /**
-     * Prepare the element for decoration. If it is already decorated and ready for update
-     * return true. If decoration is pending return false.
-     * @param element The element to be decorated
-     * @param originalText The starting text. 
-     * @param context The decoration context
-     * @return boolean <code>true</code> if the decoration is ready for this element
-     */
-    public abstract boolean prepareDecoration(Object element, String originalText, IDecorationContext context);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProvider.java
deleted file mode 100644
index b7336c8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProvider.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A label provider implementation which, by default, uses an element's
- * <code>toString</code> value for its text and <code>null</code> for its
- * image.
- * <p>
- * This class may be used as is, or subclassed to provide richer labels.
- * Subclasses may override any of the following methods:
- * <ul>
- * <li><code>isLabelProperty</code></li>
- * <li><code>getImage</code></li>
- * <li><code>getText</code></li>
- * <li><code>dispose</code></li>
- * </ul>
- * </p>
- */
-public class LabelProvider extends BaseLabelProvider implements ILabelProvider {
-
-	/**
-	 * Creates a new label provider.
-	 */
-	public LabelProvider() {
-	}
-
-
-	/**
-	 * The <code>LabelProvider</code> implementation of this
-	 * <code>ILabelProvider</code> method returns <code>null</code>.
-	 * Subclasses may override.
-	 */
-	public Image getImage(Object element) {
-		return null;
-	}
-
-	/**
-	 * The <code>LabelProvider</code> implementation of this
-	 * <code>ILabelProvider</code> method returns the element's
-	 * <code>toString</code> string. Subclasses may override.
-	 */
-	public String getText(Object element) {
-		return element == null ? "" : element.toString();//$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProviderChangedEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProviderChangedEvent.java
deleted file mode 100644
index a49686b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/LabelProviderChangedEvent.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-/**
- * Event object describing a label provider state change.
- *
- * @see ILabelProviderListener
- */
-public class LabelProviderChangedEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3258410612479309878L;
-    
-    /**
-     * The elements whose labels need to be updated or <code>null</code>.
-     */
-    private Object[] elements;
-
-    /**
-     * Creates a new event for the given source, indicating that all labels
-     * provided by the source are no longer valid and should be updated.
-     *
-     * @param source the label provider
-     */
-    public LabelProviderChangedEvent(IBaseLabelProvider source) {
-        super(source);
-    }
-
-    /**
-     * Creates a new event for the given source, indicating that the label
-     * provided by the source for the given elements is no longer valid and should be updated.
-     *
-     * @param source the label provider
-     * @param elements the element whose labels have changed
-     */
-    public LabelProviderChangedEvent(IBaseLabelProvider source,
-            Object[] elements) {
-        super(source);
-        this.elements = elements;
-    }
-
-    /**
-     * Creates a new event for the given source, indicating that the label
-     * provided by the source for the given element is no longer valid and should be updated.
-     *
-     * @param source the label provider
-     * @param element the element whose label needs to be updated
-     */
-    public LabelProviderChangedEvent(IBaseLabelProvider source, Object element) {
-        super(source);
-        this.elements = new Object[1];
-        this.elements[0] = element;
-    }
-
-    /**
-     * Returns the first element whose label needs to be updated,
-     * or <code>null</code> if all labels need to be updated.
-     *
-     * @return the element whose label needs to be updated or <code>null</code>
-     */
-    public Object getElement() {
-        if (this.elements == null || this.elements.length == 0) {
-			return null;
-		} else {
-			return this.elements[0];
-		}
-    }
-
-    /**
-     * Returns the elements whose labels need to be updated,
-     * or <code>null</code> if all labels need to be updated.
-     *
-     * @return the element whose labels need to be updated or <code>null</code>
-     */
-    public Object[] getElements() {
-        if (this.elements == null) {
-			return null;
-		} else {
-			return this.elements;
-		}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ListViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ListViewer.java
deleted file mode 100644
index da03289..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ListViewer.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Brad Reynolds - bug 141435
- *     Tom Schindl <tom.schindl@bestsolution.at> - bug 157309, 177619
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A concrete viewer based on an SWT <code>List</code> control.
- * <p>
- * This class is not intended to be subclassed. It is designed to be
- * instantiated with a pre-existing SWT <code>List</code> control and configured
- * with a domain-specific content provider, label provider, element filter (optional),
- * and element sorter (optional).
- * <p>
- * Note that the SWT <code>List</code> control only supports the display of strings, not icons.
- * If you need to show icons for items, use <code>TableViewer</code> instead.
- * </p>
- * 
- * @see TableViewer
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ListViewer extends AbstractListViewer {
-
-    /**
-     * This viewer's list control.
-     */
-    private org.eclipse.swt.widgets.List list;
-
-    /**
-     * Creates a list viewer on a newly-created list control under the given parent.
-     * The list control is created using the SWT style bits <code>MULTI, H_SCROLL, V_SCROLL,</code> and <code>BORDER</code>.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param parent the parent control
-     */
-    public ListViewer(Composite parent) {
-        this(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-    }
-
-    /**
-     * Creates a list viewer on a newly-created list control under the given parent.
-     * The list control is created using the given SWT style bits.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param parent the parent control
-     * @param style the SWT style bits
-     */
-    public ListViewer(Composite parent, int style) {
-        this(new org.eclipse.swt.widgets.List(parent, style));
-    }
-
-    /**
-     * Creates a list viewer on the given list control.
-     * The viewer has no input, no content provider, a default label provider, 
-     * no sorter, and no filters.
-     *
-     * @param list the list control
-     */
-    public ListViewer(org.eclipse.swt.widgets.List list) {
-        this.list = list;
-        hookControl(list);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Viewer.
-     */
-    public Control getControl() {
-        return list;
-    }
-
-    /**
-     * Returns this list viewer's list control.
-     *
-     * @return the list control
-     */
-    public org.eclipse.swt.widgets.List getList() {
-        return list;
-    }
-
-    /*
-     * Non-Javadoc.
-     * Method defined on StructuredViewer.
-     */
-    public void reveal(Object element) {
-        Assert.isNotNull(element);
-        int index = getElementIndex(element);
-        if (index == -1) {
-			return;
-		}
-        // algorithm patterned after List.showSelection()
-        int count = list.getItemCount();
-        if (count == 0) {
-			return;
-		}
-        int height = list.getItemHeight();
-        Rectangle rect = list.getClientArea();
-        int topIndex = list.getTopIndex();
-        int visibleCount = Math.max(rect.height / height, 1);
-        int bottomIndex = Math.min(topIndex + visibleCount, count) - 1;
-        if ((topIndex <= index) && (index <= bottomIndex)) {
-			return;
-		}
-        int newTop = Math.min(Math.max(index - (visibleCount / 2), 0),
-                count - 1);
-        list.setTopIndex(newTop);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listAdd(java.lang.String, int)
-     */
-    protected void listAdd(String string, int index) {
-        list.add(string, index);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listSetItem(int, java.lang.String)
-     */
-    protected void listSetItem(int index, String string) {
-        list.setItem(index, string);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listGetSelectionIndices()
-     */
-    protected int[] listGetSelectionIndices() {
-        return list.getSelectionIndices();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listGetItemCount()
-     */
-    protected int listGetItemCount() {
-        return list.getItemCount();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listSetItems(java.lang.String[])
-     */
-    protected void listSetItems(String[] labels) {
-        list.setItems(labels);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listRemoveAll()
-     */
-    protected void listRemoveAll() {
-        list.removeAll();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listRemove(int)
-     */
-    protected void listRemove(int index) {
-        list.remove(index);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listSelectAndShow(int[])
-     */
-    protected void listSetSelection(int[] ixs) {
-        list.setSelection(ixs);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listDeselectAll()
-     */
-    protected void listDeselectAll() {
-        list.deselectAll();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listShowSelection()
-     */
-    protected void listShowSelection() {
-        list.showSelection();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listGetTopIndex()
-     */
-    protected int listGetTopIndex() {
-    	return list.getTopIndex();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractListViewer#listSetTopIndex(int)
-     */
-    protected void listSetTopIndex(int index) {
-    	list.setTopIndex(index);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.AbstractListViewer#setSelectionToWidget(java.util.List, boolean)
-	 */
-	protected void setSelectionToWidget(List in, boolean reveal) {
-		if( reveal ) {
-			super.setSelectionToWidget(in, reveal);
-		} else {
-			if (in == null || in.size() == 0) { // clear selection
-	            list.deselectAll();
-	        } else {
-	            int n = in.size();
-	            int[] ixs = new int[n];
-	            int count = 0;
-	            for (int i = 0; i < n; ++i) {
-	                Object el = in.get(i);
-	                int ix = getElementIndex(el);
-	                if (ix >= 0) {
-						ixs[count++] = ix;
-					}
-	            }
-	            if (count < n) {
-	                System.arraycopy(ixs, 0, ixs = new int[count], 0, count);
-	            }
-	            list.deselectAll();
-	            list.select(ixs);
-	        }
-		}
-	}
-    
-    
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/NamedHandleObjectLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/NamedHandleObjectLabelProvider.java
deleted file mode 100644
index 256700b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/NamedHandleObjectLabelProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.commands.common.NamedHandleObject;
-import org.eclipse.core.commands.common.NotDefinedException;
-
-/**
- * A label provider for instances of <code>NamedHandlerObject</code>, which
- * exposes the name as the label.
- * 
- * @since 3.2
- */
-public final class NamedHandleObjectLabelProvider extends LabelProvider {
-	
-	/**
-	 * The text of the element is simply the name of the element if its a
-	 * defined instance of <code>NamedHandleObject</code>. Otherwise, this
-	 * method just returns <code>null</code>.
-	 * 
-	 * @param element
-	 *            The element for which the text should be retrieved; may be
-	 *            <code>null</code>.
-	 * @return the name of the handle object; <code>null</code> if there is no
-	 *         name or if the element is not a named handle object.
-	 */
-	public final String getText(final Object element) {
-		if (element instanceof NamedHandleObject) {
-			try {
-				return ((NamedHandleObject) element).getName();
-			} catch (final NotDefinedException e) {
-				return null;
-			}
-		}
-
-		return null;
-	}
-}
-
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OpenEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OpenEvent.java
deleted file mode 100644
index 96df2e3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OpenEvent.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Event object describing an open which may be generated from a 
- * selection or default selection event. The source of these
- * events is a viewer.
- *
- * @see IOpenListener
- */
-public class OpenEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3761972652973176117L;
-    
-    /**
-     * The selection.
-     */
-    protected ISelection selection;
-
-    /**
-     * Creates a new event for the given source and selection.
-     *
-     * @param source the viewer
-     * @param selection the selection
-     */
-    public OpenEvent(Viewer source, ISelection selection) {
-        super(source);
-        Assert.isNotNull(selection);
-        this.selection = selection;
-    }
-
-    /**
-     * Returns the selection.
-     *
-     * @return the selection
-     */
-    public ISelection getSelection() {
-        return selection;
-    }
-
-    /**
-     * Returns the viewer that is the source of this event.
-     *
-     * @return the originating viewer
-     */
-    public Viewer getViewer() {
-        return (Viewer) getSource();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OwnerDrawLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OwnerDrawLabelProvider.java
deleted file mode 100644
index 68ec4b4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/OwnerDrawLabelProvider.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * OwnerDrawLabelProvider is an abstract implementation of a label provider that
- * handles custom draw.
- * 
- * <p>
- * <b>This class is intended to be subclassed by implementors.</b>
- * </p>
- * 
- * @since 3.3
- * 
- */
-public abstract class OwnerDrawLabelProvider extends CellLabelProvider {
-
-	static class OwnerDrawListener implements Listener {
-		Set enabledColumns = new HashSet();
-		int enabledGlobally = 0;
-		private ColumnViewer viewer;
-
-		OwnerDrawListener(ColumnViewer viewer) {
-			this.viewer = viewer;
-		}
-
-		public void handleEvent(Event event) {
-			CellLabelProvider provider = viewer.getViewerColumn(event.index)
-					.getLabelProvider();
-			ViewerColumn column = viewer.getViewerColumn(event.index);
-			if (enabledGlobally > 0 || enabledColumns.contains(column)) {
-				if (provider instanceof OwnerDrawLabelProvider) {
-					Object element = event.item.getData();
-					OwnerDrawLabelProvider ownerDrawProvider = (OwnerDrawLabelProvider) provider;
-					switch (event.type) {
-					case SWT.MeasureItem:
-						ownerDrawProvider.measure(event, element);
-						break;
-					case SWT.PaintItem:
-						ownerDrawProvider.paint(event, element);
-						break;
-					case SWT.EraseItem:
-						ownerDrawProvider.erase(event, element);
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	private static final String OWNER_DRAW_LABEL_PROVIDER_LISTENER = "owner_draw_label_provider_listener"; //$NON-NLS-1$
-
-	/**
-	 * Set up the owner draw callbacks for the viewer.
-	 * 
-	 * @param viewer
-	 *            the viewer the owner draw is set up
-	 * 
-	 * @deprecated Since 3.4, the default implementation of
-	 *             {@link CellLabelProvider#initialize(ColumnViewer, ViewerColumn)}
-	 *             in this class will set up the necessary owner draw callbacks
-	 *             automatically. Calls to this method can be removed.
-	 */
-	public static void setUpOwnerDraw(final ColumnViewer viewer) {
-		getOrCreateOwnerDrawListener(viewer).enabledGlobally++;
-	}
-
-	/**
-	 * @param viewer
-	 * @param control
-	 * @return
-	 */
-	private static OwnerDrawListener getOrCreateOwnerDrawListener(
-			final ColumnViewer viewer) {
-		Control control = viewer.getControl();
-		OwnerDrawListener listener = (OwnerDrawListener) control
-				.getData(OWNER_DRAW_LABEL_PROVIDER_LISTENER);
-		if (listener == null) {
-			listener = new OwnerDrawListener(viewer);
-			control.setData(OWNER_DRAW_LABEL_PROVIDER_LISTENER, listener);
-			control.addListener(SWT.MeasureItem, listener);
-			control.addListener(SWT.EraseItem, listener);
-			control.addListener(SWT.PaintItem, listener);
-		}
-		return listener;
-	}
-
-	/**
-	 * Create a new instance of the receiver based on a column viewer.
-	 * 
-	 */
-	public OwnerDrawLabelProvider() {
-
-	}
-
-	public void dispose(ColumnViewer viewer, ViewerColumn column) {
-		if (!viewer.getControl().isDisposed()) {
-			setOwnerDrawEnabled(viewer, column, false);
-		}
-		super.dispose(viewer, column);
-	}
-
-	/**
-	 * This implementation of
-	 * {@link CellLabelProvider#initialize(ColumnViewer, ViewerColumn)}
-	 * delegates to {@link #initialize(ColumnViewer, ViewerColumn, boolean)}
-	 * with a value of <code>true</code> for <code>enableOwnerDraw</code>.
-	 * Subclasses may override this method but should either call the super
-	 * implementation or, alternatively,
-	 * {@link #initialize(ColumnViewer, ViewerColumn, boolean)}.
-	 */
-	protected void initialize(ColumnViewer viewer, ViewerColumn column) {
-		this.initialize(viewer, column, true);
-	}
-
-	/**
-	 * May be called from subclasses that override
-	 * {@link #initialize(ColumnViewer, ViewerColumn)} but want to customize
-	 * whether owner draw will be enabled. This method calls
-	 * <code>super.initialize(ColumnViewer, ViewerColumn)</code>, and then
-	 * enables or disables owner draw by calling
-	 * {@link #setOwnerDrawEnabled(ColumnViewer, ViewerColumn, boolean)}.
-	 * 
-	 * @param viewer
-	 *            the viewer
-	 * @param column
-	 *            the column, or <code>null</code> if a column is not
-	 *            available.
-	 * @param enableOwnerDraw
-	 *            <code>true</code> if owner draw should be enabled for the
-	 *            given viewer and column, <code>false</code> otherwise.
-	 * 
-	 * @since 3.4
-	 */
-	final protected void initialize(ColumnViewer viewer, ViewerColumn column,
-			boolean enableOwnerDraw) {
-		super.initialize(viewer, column);
-		setOwnerDrawEnabled(viewer, column, enableOwnerDraw);
-	}
-
-	public void update(ViewerCell cell) {
-		// Force a redraw
-		Rectangle cellBounds = cell.getBounds();
-		cell.getControl().redraw(cellBounds.x, cellBounds.y, cellBounds.width,
-				cellBounds.height, true);
-
-	}
-
-	/**
-	 * Handle the erase event. The default implementation colors the background
-	 * of selected areas with {@link SWT#COLOR_LIST_SELECTION} and foregrounds
-	 * with {@link SWT#COLOR_LIST_SELECTION_TEXT}. Note that this
-	 * implementation causes non-native behavior on some platforms. Subclasses
-	 * should override this method and <b>not</b> call the super
-	 * implementation.
-	 * 
-	 * @param event
-	 *            the erase event
-	 * @param element
-	 *            the model object
-	 * @see SWT#EraseItem
-	 * @see SWT#COLOR_LIST_SELECTION
-	 * @see SWT#COLOR_LIST_SELECTION_TEXT
-	 */
-	protected void erase(Event event, Object element) {
-
-		Rectangle bounds = event.getBounds();
-		if ((event.detail & SWT.SELECTED) != 0) {
-
-			Color oldForeground = event.gc.getForeground();
-			Color oldBackground = event.gc.getBackground();
-
-			event.gc.setBackground(event.item.getDisplay().getSystemColor(
-					SWT.COLOR_LIST_SELECTION));
-			event.gc.setForeground(event.item.getDisplay().getSystemColor(
-					SWT.COLOR_LIST_SELECTION_TEXT));
-			event.gc.fillRectangle(bounds);
-			/* restore the old GC colors */
-			event.gc.setForeground(oldForeground);
-			event.gc.setBackground(oldBackground);
-			/* ensure that default selection is not drawn */
-			event.detail &= ~SWT.SELECTED;
-
-		}
-
-	}
-
-	/**
-	 * Handle the measure event.
-	 * 
-	 * @param event
-	 *            the measure event
-	 * @param element
-	 *            the model element
-	 * @see SWT#MeasureItem
-	 */
-	protected abstract void measure(Event event, Object element);
-
-	/**
-	 * Handle the paint event.
-	 * 
-	 * @param event
-	 *            the paint event
-	 * @param element
-	 *            the model element
-	 * @see SWT#PaintItem
-	 */
-	protected abstract void paint(Event event, Object element);
-
-	/**
-	 * Enables or disables owner draw for the given viewer and column. This
-	 * method will attach or remove a listener to the underlying control as
-	 * necessary. This method is called from
-	 * {@link #initialize(ColumnViewer, ViewerColumn)} and
-	 * {@link #dispose(ColumnViewer, ViewerColumn)} but may be called from
-	 * subclasses to enable or disable owner draw dynamically.
-	 * 
-	 * @param viewer
-	 *            the viewer
-	 * @param column
-	 *            the column, or <code>null</code> if a column is not
-	 *            available
-	 * @param enabled
-	 *            <code>true</code> if owner draw should be enabled,
-	 *            <code>false</code> otherwise
-	 * 
-	 * @since 3.4
-	 */
-	protected void setOwnerDrawEnabled(ColumnViewer viewer,
-			ViewerColumn column, boolean enabled) {
-		if (enabled) {
-			OwnerDrawListener listener = getOrCreateOwnerDrawListener(viewer);
-			if (column == null) {
-				listener.enabledGlobally++;
-			} else {
-				listener.enabledColumns.add(column);
-			}
-		} else {
-			OwnerDrawListener listener = (OwnerDrawListener) viewer
-					.getControl().getData(OWNER_DRAW_LABEL_PROVIDER_LISTENER);
-			if (listener != null) {
-				if (column == null) {
-					listener.enabledGlobally--;
-				} else {
-					listener.enabledColumns.remove(column);
-				}
-				if (listener.enabledColumns.isEmpty()
-						&& listener.enabledGlobally <= 0) {
-					viewer.getControl().removeListener(SWT.MeasureItem,
-							listener);
-					viewer.getControl().removeListener(SWT.EraseItem, listener);
-					viewer.getControl().removeListener(SWT.PaintItem, listener);
-					viewer.getControl().setData(
-							OWNER_DRAW_LABEL_PROVIDER_LISTENER, null);
-				}
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SWTFocusCellManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SWTFocusCellManager.java
deleted file mode 100644
index de94e18..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SWTFocusCellManager.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                               - bug fix for bug 187189, 182800, 215069
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * This class is responsible to provide cell management base features for the
- * SWT-Controls {@link org.eclipse.swt.widgets.Table} and
- * {@link org.eclipse.swt.widgets.Tree}.
- *
- * @since 3.3
- *
- */
-abstract class SWTFocusCellManager {
-
-	private CellNavigationStrategy navigationStrategy;
-
-	private ColumnViewer viewer;
-
-	private ViewerCell focusCell;
-
-	private FocusCellHighlighter cellHighlighter;
-
-	private DisposeListener itemDeletionListener = new DisposeListener() {
-
-		public void widgetDisposed(DisposeEvent e) {
-			setFocusCell(null);
-		}
-
-	};
-
-	/**
-	 * @param viewer
-	 * @param focusDrawingDelegate
-	 * @param navigationDelegate
-	 */
-	public SWTFocusCellManager(ColumnViewer viewer,
-			FocusCellHighlighter focusDrawingDelegate,
-			CellNavigationStrategy navigationDelegate) {
-		this.viewer = viewer;
-		this.cellHighlighter = focusDrawingDelegate;
-		this.navigationStrategy = navigationDelegate;
-		hookListener(viewer);
-	}
-
-	/**
-	 * This method is called by the framework to initialize this cell manager.
-	 */
-	void init() {
-		this.cellHighlighter.init();
-		this.navigationStrategy.init();
-	}
-
-	private void handleMouseDown(Event event) {
-		ViewerCell cell = viewer.getCell(new Point(event.x, event.y));
-		if (cell != null) {
-
-			if (!cell.equals(focusCell)) {
-				setFocusCell(cell);
-			}
-		}
-	}
-
-	private void handleKeyDown(Event event) {
-		ViewerCell tmp = null;
-
-		if (navigationStrategy.isCollapseEvent(viewer, focusCell, event)) {
-			navigationStrategy.collapse(viewer, focusCell, event);
-		} else if (navigationStrategy.isExpandEvent(viewer, focusCell, event)) {
-			navigationStrategy.expand(viewer, focusCell, event);
-		} else if (navigationStrategy.isNavigationEvent(viewer, event)) {
-			tmp = navigationStrategy.findSelectedCell(viewer, focusCell, event);
-
-			if (tmp != null) {
-				if (!tmp.equals(focusCell)) {
-					setFocusCell(tmp);
-				}
-			}
-		}
-
-		if (navigationStrategy.shouldCancelEvent(viewer, event)) {
-			event.doit = false;
-		}
-	}
-
-	private void handleSelection(Event event) {
-		if ((event.detail & SWT.CHECK) == 0 && focusCell != null && focusCell.getItem() != event.item
-				&& event.item != null ) {
-			ViewerRow row = viewer.getViewerRowFromItem(event.item);
-			Assert
-					.isNotNull(row,
-							"Internal Structure invalid. Row item has no row ViewerRow assigned"); //$NON-NLS-1$
-			ViewerCell tmp = row.getCell(focusCell.getColumnIndex());
-			if (!focusCell.equals(tmp)) {
-				setFocusCell(tmp);
-			}
-		}
-	}
-
-	private void handleFocusIn(Event event) {
-		if (focusCell == null) {
-			setFocusCell(getInitialFocusCell());
-		}
-	}
-
-	abstract ViewerCell getInitialFocusCell();
-
-	private void hookListener(ColumnViewer viewer) {
-		Listener listener = new Listener() {
-
-			public void handleEvent(Event event) {
-				switch (event.type) {
-				case SWT.MouseDown:
-					handleMouseDown(event);
-					break;
-				case SWT.KeyDown:
-					handleKeyDown(event);
-					break;
-				case SWT.Selection:
-					handleSelection(event);
-					break;
-				case SWT.FocusIn:
-					handleFocusIn(event);
-					break;
-				}
-			}
-		};
-
-		viewer.getControl().addListener(SWT.MouseDown, listener);
-		viewer.getControl().addListener(SWT.KeyDown, listener);
-		viewer.getControl().addListener(SWT.Selection, listener);
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
-			public void selectionChanged(SelectionChangedEvent event) {
-				if( event.selection.isEmpty() ) {
-					setFocusCell(null);
-				}
-			}
-
-		});
-		viewer.getControl().addListener(SWT.FocusIn, listener);
-	}
-
-	/**
-	 * @return the cell with the focus
-	 *
-	 */
-	public ViewerCell getFocusCell() {
-		return focusCell;
-	}
-
-	void setFocusCell(ViewerCell focusCell) {
-		ViewerCell oldCell = this.focusCell;
-
-		if( this.focusCell != null && ! this.focusCell.getItem().isDisposed() ) {
-			this.focusCell.getItem().removeDisposeListener(itemDeletionListener);
-		}
-
-		this.focusCell = focusCell;
-
-		if( this.focusCell != null && ! this.focusCell.getItem().isDisposed() ) {
-			this.focusCell.getItem().addDisposeListener(itemDeletionListener);
-		}
-
-		this.cellHighlighter.focusCellChanged(focusCell,oldCell);
-	}
-
-	ColumnViewer getViewer() {
-		return viewer;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SelectionChangedEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SelectionChangedEvent.java
deleted file mode 100644
index 1c13c80..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/SelectionChangedEvent.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Event object describing a selection change. The source of these
- * events is a selection provider.
- *
- * @see ISelection
- * @see ISelectionProvider
- * @see ISelectionChangedListener
- */
-public class SelectionChangedEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3835149545519723574L;
-    
-    /**
-     * The selection.
-     */
-    protected ISelection selection;
-
-    /**
-     * Creates a new event for the given source and selection.
-     *
-     * @param source the selection provider
-     * @param selection the selection
-     */
-    public SelectionChangedEvent(ISelectionProvider source, ISelection selection) {
-        super(source);
-        Assert.isNotNull(selection);
-        this.selection = selection;
-    }
-
-    /**
-     * Returns the selection.
-     *
-     * @return the selection
-     */
-    public ISelection getSelection() {
-        return selection;
-    }
-
-    /**
-     * Returns the selection provider that is the source of this event.
-     *
-     * @return the originating selection provider
-     */
-    public ISelectionProvider getSelectionProvider() {
-        return (ISelectionProvider) getSource();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredSelection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredSelection.java
deleted file mode 100644
index bea76d1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredSelection.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A concrete implementation of the <code>IStructuredSelection</code> interface,
- * suitable for instantiating.
- * <p>
- * This class is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class StructuredSelection implements IStructuredSelection {
-
-    /**
-     * The element that make up this structured selection.
-     */
-    private Object[] elements;
-
-    /**
-     * The element comparer, or <code>null</code>
-     */
-	private IElementComparer comparer;
-
-    /**
-     * The canonical empty selection. This selection should be used instead of
-     * <code>null</code>.
-     */
-    public static final StructuredSelection EMPTY = new StructuredSelection();
-
-    /**
-     * Creates a new empty selection.  
-     * See also the static field <code>EMPTY</code> which contains an empty selection singleton.
-     *
-     * @see #EMPTY
-     */
-    public StructuredSelection() {
-    }
-
-    /**
-     * Creates a structured selection from the given elements.
-     *
-     * @param elements an array of elements
-     */
-    public StructuredSelection(Object[] elements) {
-        this.elements = new Object[elements.length];
-        System.arraycopy(elements, 0, this.elements, 0, elements.length);
-    }
-
-    /**
-     * Creates a structured selection containing a single object.
-     * The object must not be <code>null</code>.
-     *
-     * @param element the element
-     */
-    public StructuredSelection(Object element) {
-        Assert.isNotNull(element);
-        elements = new Object[] { element };
-    }
-
-    /**
-     * Creates a structured selection from the given <code>List</code>. 
-     * @param elements list of selected elements
-     */
-    public StructuredSelection(List elements) {
-    	this(elements, null);
-    }
-
-    /**
-	 * Creates a structured selection from the given <code>List</code> and
-	 * element comparer. If an element comparer is provided, it will be used to
-	 * determine equality between structured selection objects provided that
-	 * they both are based on the same (identical) comparer. See bug 
-	 * 
-	 * @param elements
-	 *            list of selected elements
-	 * @param comparer
-	 *            the comparer, or null
-	 * @since 3.4
-	 */
-	public StructuredSelection(List elements, IElementComparer comparer) {
-        Assert.isNotNull(elements);
-        this.elements = elements.toArray();
-        this.comparer = comparer;
-	}
-
-	/**
-     * Returns whether this structured selection is equal to the given object.
-     * Two structured selections are equal if they contain the same elements
-     * in the same order.
-     *
-     * @param o the other object
-     * @return <code>true</code> if they are equal, and <code>false</code> otherwise
-     */
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        //null and other classes
-        if (!(o instanceof StructuredSelection)) {
-            return false;
-        }
-        StructuredSelection s2 = (StructuredSelection) o;
-
-        // either or both empty?
-        if (isEmpty()) {
-            return s2.isEmpty();
-        }
-        if (s2.isEmpty()) {
-            return false;
-        }
-
-        boolean useComparer = comparer != null && comparer == s2.comparer;
-        
-        //size
-        int myLen = elements.length;
-        if (myLen != s2.elements.length) {
-            return false;
-        }
-        //element comparison
-        for (int i = 0; i < myLen; i++) {
-        	if (useComparer) {
-                if (!comparer.equals(elements[i], s2.elements[i])) {
-                    return false;
-                }
-        	} else {
-	            if (!elements[i].equals(s2.elements[i])) {
-	                return false;
-	            }
-        	}
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IStructuredSelection.
-     */
-    public Object getFirstElement() {
-        return isEmpty() ? null : elements[0];
-    }
-
-    /* (non-Javadoc)
-     * Method declared in ISelection.
-     */
-    public boolean isEmpty() {
-        return elements == null || elements.length == 0;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IStructuredSelection.
-     */
-    public Iterator iterator() {
-        return Arrays.asList(elements == null ? new Object[0] : elements)
-                .iterator();
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IStructuredSelection.
-     */
-    public int size() {
-        return elements == null ? 0 : elements.length;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IStructuredSelection.
-     */
-    public Object[] toArray() {
-        return elements == null ? new Object[0] : (Object[]) elements.clone();
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IStructuredSelection.
-     */
-    public List toList() {
-        return Arrays.asList(elements == null ? new Object[0] : elements);
-    }
-
-    /**
-     * Internal method which returns a string representation of this
-     * selection suitable for debug purposes only.
-     *
-     * @return debug string
-     */
-    public String toString() {
-        return isEmpty() ? JFaceResources.getString("<empty_selection>") : toList().toString(); //$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
deleted file mode 100644
index 80aff18..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
+++ /dev/null
@@ -1,2214 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl - bug 151205
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.IOpenEventListener;
-import org.eclipse.jface.util.OpenStrategy;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.custom.TableTreeItem;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Abstract base implementation for structure-oriented viewers (trees, lists,
- * tables). Supports custom sorting, filtering, and rendering.
- * <p>
- * Any number of viewer filters can be added to this viewer (using
- * <code>addFilter</code>). When the viewer receives an update, it asks each
- * of its filters if it is out of date, and refilters elements as required.
- * </p>
- * 
- * @see ViewerFilter
- * @see ViewerComparator
- */
-public abstract class StructuredViewer extends ContentViewer implements IPostSelectionProvider {
-
-	/**
-	 * A map from the viewer's model elements to SWT widgets. (key type:
-	 * <code>Object</code>, value type: <code>Widget</code>, or <code>Widget[]</code>).
-	 * <code>null</code> means that the element map is disabled.
-	 */
-	private CustomHashtable elementMap;
-
-	/**
-	 * The comparer to use for comparing elements, or <code>null</code> to use
-	 * the default <code>equals</code> and <code>hashCode</code> methods on
-	 * the element itself.
-	 */
-	private IElementComparer comparer;
-
-	/**
-	 * This viewer's comparator used for sorting. <code>null</code> means there is no comparator.
-	 */
-	private ViewerComparator sorter;
-
-	/**
-	 * This viewer's filters (element type: <code>ViewerFilter</code>).
-	 * <code>null</code> means there are no filters.
-	 */
-	private List filters;
-
-	/**
-	 * Indicates whether a selection change is in progress on this viewer.
-	 * 
-	 * @see #setSelection(ISelection, boolean)
-	 */
-	private boolean inChange;
-
-	/**
-	 * Used while a selection change is in progress on this viewer to indicates
-	 * whether the selection should be restored.
-	 * 
-	 * @see #setSelection(ISelection, boolean)
-	 */
-	private boolean restoreSelection;
-
-	/**
-	 * List of double-click state listeners (element type:
-	 * <code>IDoubleClickListener</code>).
-	 * 
-	 * @see #fireDoubleClick
-	 */
-	private ListenerList doubleClickListeners = new ListenerList();
-
-	/**
-	 * List of open listeners (element type:
-	 * <code>ISelectionActivateListener</code>).
-	 * 
-	 * @see #fireOpen
-	 */
-	private ListenerList openListeners = new ListenerList();
-
-	/**
-	 * List of post selection listeners (element type:
-	 * <code>ISelectionActivateListener</code>).
-	 * 
-	 * @see #firePostSelectionChanged
-	 */
-	private ListenerList postSelectionChangedListeners = new ListenerList();
-
-	/**
-	 * The colorAndFontCollector is an object used by viewers that
-	 * support the IColorProvider, the IFontProvider and/or the 
-	 * IViewerLabelProvider for color and font updates.
-	 * Initialize it to have no color or font providing
-	 * initially.
-	 * @since 3.1
-	 */
-	private ColorAndFontCollector colorAndFontCollector = new ColorAndFontCollector();
-	
-	/**
-	 * Empty array of widgets.
-	 */
-	private static Widget[] NO_WIDGETS = new Widget[0];
-
-	/**
-	 * The ColorAndFontCollector is a helper class for viewers
-	 * that have color and font support ad optionally decorators.
-	 * @see IColorDecorator
-	 * @see IFontDecorator
-	 * @see IColorProvider
-	 * @see IFontProvider
-	 * @see IDecoration
-	 */
-	protected class ColorAndFontCollectorWithProviders extends ColorAndFontCollector{
-
-		IColorProvider colorProvider;
-
-		IFontProvider fontProvider;
-		
-		/**
-		 * Create a new instance of the receiver using the supplied
-		 * label provider. If it is an IColorProvider or IFontProvider
-		 * set these values up.
-		 * @param provider IBaseLabelProvider
-		 * @see IColorProvider
-		 * @see IFontProvider
-		 */
-		public ColorAndFontCollectorWithProviders(IBaseLabelProvider provider) {
-			super();
-			if (provider instanceof IColorProvider) {
-				colorProvider = (IColorProvider) provider;
-			}
-			if (provider instanceof IFontProvider) {
-				fontProvider = (IFontProvider) provider;
-			}
-		}
-		
-	
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.StructuredViewer.ColorAndFontManager#setFontsAndColors(java.lang.Object)
-		 */
-		public void setFontsAndColors(Object element){
-			
-			if(fontProvider != null){
-				if(font == null) {
-					font = fontProvider.getFont(element);
-				}	
-			}
-			
-			if(colorProvider == null) {
-				return;
-			}			
-			//Set the colors if they are not set yet
-			if(background == null) {
-				background = colorProvider.getBackground(element);
-			}
-			
-			if(foreground == null) {
-				foreground = colorProvider.getForeground(element);
-			}			
-		}
-		
-		/**
-		 * Apply the fonts and colors to the control if
-		 * required.
-		 * @param control
-		 */
-		public void applyFontsAndColors(TableItem control) {
-			
-			if(colorProvider == null){
-				if(usedDecorators){
-					//If there is no provider only apply set values
-					if(background != null) {
-						control.setBackground(background);
-					}
-				
-					if(foreground != null) {
-						control.setForeground(foreground);
-					}
-				}
-			}
-			else{
-				//Always set the value if there is a provider
-				control.setBackground(background);
-				control.setForeground(foreground);
-			}
-			
-			if(fontProvider == null){
-				if(usedDecorators && font != null) {
-					control.setFont(font);
-				}
-			} else {
-				control.setFont(font);
-			}
-			
-			clear();
-		}
-		
-
-	
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.StructuredViewer.ColorAndFontManager#applyFontsAndColors(org.eclipse.swt.widgets.TreeItem)
-		 */
-		public void applyFontsAndColors(TreeItem control) {
-			
-			if(colorProvider == null){
-				if(usedDecorators){
-					//If there is no provider only apply set values
-					if(background != null) {
-						control.setBackground(background);
-					}
-				
-					if(foreground != null) {
-						control.setForeground(foreground);
-					}
-				}
-			}
-			else{
-				//Always set the value if there is a provider
-				control.setBackground(background);
-				control.setForeground(foreground);
-			}
-			
-			if(fontProvider == null){
-				if(usedDecorators && font != null) {
-					control.setFont(font);
-				}
-			} else {
-				control.setFont(font);
-			}
-			
-			clear();
-		}
-		
-	
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.StructuredViewer.ColorAndFontManager#applyFontsAndColors(org.eclipse.swt.custom.TableTreeItem)
-		 */
-		public void applyFontsAndColors(TableTreeItem control) {
-			
-			if(colorProvider == null){
-				if(usedDecorators){
-					//If there is no provider only apply set values
-					if(background != null) {
-						control.setBackground(background);
-					}
-				
-					if(foreground != null) {
-						control.setForeground(foreground);
-					}
-				}
-			}
-			else{
-				//Always set the value if there is a provider
-				control.setBackground(background);
-				control.setForeground(foreground);
-			}
-			
-			if(fontProvider == null){
-				if(usedDecorators && font != null) {
-					control.setFont(font);
-				}
-			} else {
-				control.setFont(font);
-			}
-			
-			clear();
-		}
-		
-		
-	}
-	
-	/**
-	 * The ColorAndFontCollector collects fonts and colors without a
-	 * a color or font provider.
-	 *
-	 */
-	protected class ColorAndFontCollector {
-
-		Color foreground = null;
-
-		Color background = null;
-
-		Font font = null;
-
-		boolean usedDecorators = false;
-
-		/**
-		 * Create a new instance of the receiver with
-		 * no color and font provider.	
-		 */
-		public ColorAndFontCollector(){
-			super();
-		}
-		
-
-		/**
-		 * Clear all of the results.
-		 */
-		public void clear() {
-			foreground = null;
-			background = null;
-			font = null;
-			usedDecorators = false;
-		}
-
-		
-		/**
-		 * Set the initial fonts and colors for the element from the
-		 * content providers.
-		 * @param element Object
-		 */
-		public void setFontsAndColors(Object element){
-			//Do nothing if there are no providers
-		}
-
-		/**
-		 * Set that decorators were applied.
-		 */
-		public void setUsedDecorators() {
-			this.usedDecorators = true;
-		}
-
-		/**
-		 * Apply the fonts and colors to the control if
-		 * required.
-		 * @param control
-		 */
-		public void applyFontsAndColors(TableItem control) {
-			
-			if(usedDecorators){
-				//If there is no provider only apply set values
-				if(background != null) {
-					control.setBackground(background);
-				}
-			
-				if(foreground != null) {
-					control.setForeground(foreground);
-				}
-		
-				if(font != null) {
-					control.setFont(font);
-				}
-			}
-			clear();
-		}
-		
-		/**
-		 * Apply the fonts and colors to the control if
-		 * required.
-		 * @param control
-		 */
-		public void applyFontsAndColors(TreeItem control) {
-			if(usedDecorators){
-				//If there is no provider only apply set values
-				if(background != null) {
-					control.setBackground(background);
-				}
-			
-				if(foreground != null) {
-					control.setForeground(foreground);
-				}
-		
-				if(font != null) {
-					control.setFont(font);
-				}
-			}
-			clear();
-		}
-		
-		/**
-		 * Apply the fonts and colors to the control if
-		 * required.
-		 * @param control
-		 */
-		public void applyFontsAndColors(TableTreeItem control) {
-			if(usedDecorators){
-				//If there is no provider only apply set values
-				if(background != null) {
-					control.setBackground(background);
-				}
-			
-				if(foreground != null) {
-					control.setForeground(foreground);
-				}
-		
-				if(font != null) {
-					control.setFont(font);
-				}
-			}
-			clear();
-		}
-		
-		/**
-		 * Set the background color.
-		 * @param background 
-		 */
-		public void setBackground(Color background) {
-			this.background = background;
-		}
-		/**
-		 * Set the font.
-		 * @param font 
-		 */
-		public void setFont(Font font) {
-			this.font = font;
-		}
-		/**
-		 * Set the foreground color.
-		 * @param foreground
-		 */
-		public void setForeground(Color foreground) {
-			this.foreground = foreground;
-		}
-	
-		
-	}
-
-	/**
-	 * The safe runnable used to update an item.
-	 */
-	class UpdateItemSafeRunnable extends SafeRunnable {
-		private Widget widget;
-
-		private Object element;
-
-		private boolean fullMap;
-
-		UpdateItemSafeRunnable(Widget widget, Object element, boolean fullMap) {
-			this.widget = widget;
-			this.element = element;
-			this.fullMap = fullMap;
-		}
-
-		public void run() {
-			doUpdateItem(widget, element, fullMap);
-		}
-	}
-	
-	/**
-	 * Creates a structured element viewer. The viewer has no input, no content
-	 * provider, a default label provider, no sorter, and no filters.
-	 */
-	protected StructuredViewer() {
-		// do nothing
-	}
-
-	/**
-	 * Adds a listener for double-clicks in this viewer. Has no effect if an
-	 * identical listener is already registered.
-	 * 
-	 * @param listener
-	 *            a double-click listener
-	 */
-	public void addDoubleClickListener(IDoubleClickListener listener) {
-		doubleClickListeners.add(listener);
-	}
-
-	/**
-	 * Adds a listener for selection-open in this viewer. Has no effect if an
-	 * identical listener is already registered.
-	 * 
-	 * @param listener
-	 *            a double-click listener
-	 */
-	public void addOpenListener(IOpenListener listener) {
-		openListeners.add(listener);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPostSelectionProvider.
-	 */
-	public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
-		postSelectionChangedListeners.add(listener);
-	}
-
-	/**
-	 * Adds support for dragging items out of this viewer via a user
-	 * drag-and-drop operation.
-	 * 
-	 * @param operations
-	 *            a bitwise OR of the supported drag and drop operation types (
-	 *            <code>DROP_COPY</code>,<code>DROP_LINK</code>, and
-	 *            <code>DROP_MOVE</code>)
-	 * @param transferTypes
-	 *            the transfer types that are supported by the drag operation
-	 * @param listener
-	 *            the callback that will be invoked to set the drag data and to
-	 *            cleanup after the drag and drop operation finishes
-	 * @see org.eclipse.swt.dnd.DND
-	 */
-	public void addDragSupport(int operations, Transfer[] transferTypes, DragSourceListener listener) {
-
-		Control myControl = getControl();
-		final DragSource dragSource = new DragSource(myControl, operations);
-		dragSource.setTransfer(transferTypes);
-		dragSource.addDragListener(listener);
-	}
-
-	/**
-	 * Adds support for dropping items into this viewer via a user drag-and-drop
-	 * operation.
-	 * 
-	 * @param operations
-	 *            a bitwise OR of the supported drag and drop operation types (
-	 *            <code>DROP_COPY</code>,<code>DROP_LINK</code>, and
-	 *            <code>DROP_MOVE</code>)
-	 * @param transferTypes
-	 *            the transfer types that are supported by the drop operation
-	 * @param listener
-	 *            the callback that will be invoked after the drag and drop
-	 *            operation finishes
-	 * @see org.eclipse.swt.dnd.DND
-	 */
-	public void addDropSupport(int operations, Transfer[] transferTypes,
-			final DropTargetListener listener) {
-		Control control = getControl();
-		DropTarget dropTarget = new DropTarget(control, operations);
-		dropTarget.setTransfer(transferTypes);
-		dropTarget.addDropListener(listener);
-	}
-
-	/**
-	 * Adds the given filter to this viewer, and triggers refiltering and
-	 * resorting of the elements. If you want to add more than one filter
-	 * consider using {@link StructuredViewer#setFilters(ViewerFilter[])}.
-	 * 
-	 * @param filter
-	 *            a viewer filter
-	 * @see StructuredViewer#setFilters(ViewerFilter[])
-	 */
-	public void addFilter(ViewerFilter filter) {
-		if (filters == null) {
-			filters = new ArrayList();
-		}
-		filters.add(filter);
-		refresh();
-	}
-
-	/**
-	 * Asserts that the given array of elements is itself non- <code>null</code>
-	 * and contains no <code>null</code> elements.
-	 * 
-	 * @param elements
-	 *            the array to check
-	 */
-	protected void assertElementsNotNull(Object[] elements) {
-		Assert.isNotNull(elements);
-		for (int i = 0, n = elements.length; i < n; ++i) {
-			Assert.isNotNull(elements[i]);
-		}
-	}
-
-	/**
-	 * Associates the given element with the given widget. Sets the given item's
-	 * data to be the element, and maps the element to the item in the element
-	 * map (if enabled).
-	 * 
-	 * @param element
-	 *            the element
-	 * @param item
-	 *            the widget
-	 */
-	protected void associate(Object element, Item item) {
-		Object data = item.getData();
-		if (data != element) {
-			if (data != null) {
-				disassociate(item);
-			}
-			item.setData(element);
-		}
-		// Always map the element, even if data == element,
-		// since unmapAllElements() can leave the map inconsistent
-		// See bug 2741 for details.
-		mapElement(element, item);
-	}
-
-	/**
-	 * Disassociates the given SWT item from its corresponding element. Sets the
-	 * item's data to <code>null</code> and removes the element from the
-	 * element map (if enabled).
-	 * 
-	 * @param item
-	 *            the widget
-	 */
-	protected void disassociate(Item item) {
-		Object element = item.getData();
-		Assert.isNotNull(element);
-		//Clear the map before we clear the data
-		unmapElement(element, item);
-		item.setData(null);
-	}
-
-	/**
-	 * Returns the widget in this viewer's control which represents the given
-	 * element if it is the viewer's input.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param element
-	 * @return the corresponding widget, or <code>null</code> if none
-	 */
-	protected abstract Widget doFindInputItem(Object element);
-
-	/**
-	 * Returns the widget in this viewer's control which represent the given
-	 * element. This method searches all the children of the input element.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param element
-	 * @return the corresponding widget, or <code>null</code> if none
-	 */
-	protected abstract Widget doFindItem(Object element);
-
-	/**
-	 * Copies the attributes of the given element into the given SWT item. The
-	 * element map is updated according to the value of <code>fullMap</code>.
-	 * If <code>fullMap</code> is <code>true</code> then the current mapping
-	 * from element to widgets is removed and the new mapping is added. If
-	 * full map is <code>false</code> then only the new map gets installed.
-	 * Installing only the new map is necessary in cases where only the order of
-	 * elements changes but not the set of elements.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param item
-	 * @param element element
-	 * @param fullMap
-	 *            <code>true</code> if mappings are added and removed, and
-	 *            <code>false</code> if only the new map gets installed
-	 */
-	protected abstract void doUpdateItem(Widget item, Object element, boolean fullMap);
-
-	/**
-	 * Compares two elements for equality. Uses the element comparer if one has
-	 * been set, otherwise uses the default <code>equals</code> method on the
-	 * elements themselves.
-	 * 
-	 * @param elementA
-	 *            the first element
-	 * @param elementB
-	 *            the second element
-	 * @return whether elementA is equal to elementB
-	 */
-	protected boolean equals(Object elementA, Object elementB) {
-		if (comparer == null) {
-			return elementA == null ? elementB == null : elementA.equals(elementB);
-		} else {
-			return elementA == null ? elementB == null : comparer.equals(elementA, elementB);
-		}
-	}
-
-	/**
-	 * Returns the result of running the given elements through the filters.
-	 * 
-	 * @param elements
-	 *            the elements to filter
-	 * @return only the elements which all filters accept
-	 */
-	protected Object[] filter(Object[] elements) {
-		if (filters != null) {
-			ArrayList filtered = new ArrayList(elements.length);
-			Object root = getRoot();
-			for (int i = 0; i < elements.length; i++) {
-				boolean add = true;
-				for (int j = 0; j < filters.size(); j++) {
-					add = ((ViewerFilter) filters.get(j)).select(this, root, elements[i]);
-					if (!add) {
-						break;
-					}
-				}
-				if (add) {
-					filtered.add(elements[i]);
-				}
-			}
-			return filtered.toArray();
-		}
-		return elements;
-	}
-
-	/**
-	 * Finds the widget which represents the given element.
-	 * <p>
-	 * The default implementation of this method tries first to find the widget
-	 * for the given element assuming that it is the viewer's input; this is
-	 * done by calling <code>doFindInputItem</code>. If it is not found
-	 * there, it is looked up in the internal element map provided that this
-	 * feature has been enabled. If the element map is disabled, the widget is
-	 * found via <code>doFindInputItem</code>.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the corresponding widget, or <code>null</code> if none
-	 */
-	protected final Widget findItem(Object element) {
-		Widget[] result = findItems(element);
-		return result.length == 0 ? null : result[0];
-	}
-
-	/**
-	 * Finds the widgets which represent the given element. The returned array
-	 * must not be changed by clients; it might change upon calling other
-	 * methods on this viewer.
-	 * <p>
-	 * This method was introduced to support multiple equal elements in a viewer
-	 * (@see {@link AbstractTreeViewer}). Multiple equal elements are only
-	 * supported if the element map is enabled by calling
-	 * {@link #setUseHashlookup(boolean)} and passing <code>true</code>.
-	 * </p>
-	 * <p>
-	 * The default implementation of this method tries first to find the widget
-	 * for the given element assuming that it is the viewer's input; this is
-	 * done by calling <code>doFindInputItem</code>. If it is not found
-	 * there, the widgets are looked up in the internal element map provided
-	 * that this feature has been enabled. If the element map is disabled, the
-	 * widget is found via <code>doFindInputItem</code>.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the corresponding widgets
-	 * 
-	 * @since 3.2
-	 */
-	protected final Widget[] findItems(Object element) {
-		Widget result = doFindInputItem(element);
-		if (result != null) {
-			return new Widget[] { result };
-		}
-		// if we have an element map use it, otherwise search for the item.
-		if (usingElementMap()) {
-			Object widgetOrWidgets = elementMap.get(element);
-			if (widgetOrWidgets==null) {
-				return NO_WIDGETS;
-			} else if (widgetOrWidgets instanceof Widget) {
-				return new Widget[] {(Widget) widgetOrWidgets};
-			} else {
-				return (Widget[])widgetOrWidgets;
-			}
-		}
-		result = doFindItem(element);
-		return result == null ? NO_WIDGETS : new Widget[] { result };
-	}
-
-	/**
-	 * Notifies any double-click listeners that a double-click has been
-	 * received. Only listeners registered at the time this method is called are
-	 * notified.
-	 * 
-	 * @param event
-	 *            a double-click event
-	 * 
-	 * @see IDoubleClickListener#doubleClick
-	 */
-	protected void fireDoubleClick(final DoubleClickEvent event) {
-		Object[] listeners = doubleClickListeners.getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			final IDoubleClickListener l = (IDoubleClickListener) listeners[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.doubleClick(event);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Notifies any open event listeners that a open event has been received.
-	 * Only listeners registered at the time this method is called are notified.
-	 * 
-	 * @param event
-	 *            a double-click event
-	 * 
-	 * @see IOpenListener#open(OpenEvent)
-	 */
-	protected void fireOpen(final OpenEvent event) {
-		Object[] listeners = openListeners.getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			final IOpenListener l = (IOpenListener) listeners[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.open(event);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Notifies any post selection listeners that a post selection event has
-	 * been received. Only listeners registered at the time this method is
-	 * called are notified.
-	 * 
-	 * @param event
-	 *            a selection changed event
-	 * 
-	 * @see #addPostSelectionChangedListener(ISelectionChangedListener)
-	 */
-	protected void firePostSelectionChanged(final SelectionChangedEvent event) {
-		Object[] listeners = postSelectionChangedListeners.getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.selectionChanged(event);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Returns the comparer to use for comparing elements, or
-	 * <code>null</code> if none has been set.  If specified,
-	 * the viewer uses this to compare and hash elements rather
-	 * than the elements' own equals and hashCode methods.
-	 *           
-	 * @return the comparer to use for comparing elements or
-	 *            <code>null</code>
-	 */
-	public IElementComparer getComparer() {
-		return comparer;
-	}
-
-	/**
-	 * Returns the filtered array of children of the given element. The
-	 * resulting array must not be modified, as it may come directly from the
-	 * model's internal state.
-	 * 
-	 * @param parent
-	 *            the parent element
-	 * @return a filtered array of child elements
-	 */
-	protected Object[] getFilteredChildren(Object parent) {
-		Object[] result = getRawChildren(parent);
-		if (filters != null) {
-			for (Iterator iter = filters.iterator(); iter.hasNext();) {
-				ViewerFilter f = (ViewerFilter) iter.next();
-				result = f.filter(this, parent, result);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns this viewer's filters.
-	 * 
-	 * @return an array of viewer filters
-	 * @see StructuredViewer#setFilters(ViewerFilter[])
-	 */
-	public ViewerFilter[] getFilters() {
-		if (filters == null) {
-			return new ViewerFilter[0];
-		}
-		ViewerFilter[] result = new ViewerFilter[filters.size()];
-		filters.toArray(result);
-		return result;
-	}
-
-	/**
-	 * Returns the item at the given display-relative coordinates, or
-	 * <code>null</code> if there is no item at that location or 
-	 * the underlying SWT-Control is not made up of {@link Item} 
-	 * (e.g {@link ListViewer}) 
-	 * <p>
-	 * The default implementation of this method returns <code>null</code>.
-	 * </p>
-	 * 
-	 * @param x
-	 *            horizontal coordinate
-	 * @param y
-	 *            vertical coordinate
-	 * @return the item, or <code>null</code> if there is no item at the given
-	 *         coordinates
-	 * @deprecated This method is deprecated in 3.3 in favor of {@link ColumnViewer#getItemAt(org.eclipse.swt.graphics.Point)}. 
-	 * Viewers who are not subclasses of {@link ColumnViewer} should consider using a
-	 * widget relative implementation like {@link ColumnViewer#getItemAt(org.eclipse.swt.graphics.Point)}.
-	 *  
-	 */
-	protected Item getItem(int x, int y) {
-		return null;
-	}
-
-	/**
-	 * Returns the children of the given parent without sorting and filtering
-	 * them. The resulting array must not be modified, as it may come directly
-	 * from the model's internal state.
-	 * <p>
-	 * Returns an empty array if the given parent is <code>null</code>.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent element
-	 * @return the child elements
-	 */
-	protected Object[] getRawChildren(Object parent) {
-		Object[] result = null;
-		if (parent != null) {
-			IStructuredContentProvider cp = (IStructuredContentProvider) getContentProvider();
-			if (cp != null) {
-				result = cp.getElements(parent);
-				assertElementsNotNull(result);
-			}
-		}
-		return (result != null) ? result : new Object[0];
-	}
-
-	/**
-	 * Returns the root element.
-	 * <p>
-	 * The default implementation of this framework method forwards to
-	 * <code>getInput</code>. Override if the root element is different from
-	 * the viewer's input element.
-	 * </p>
-	 * 
-	 * @return the root element, or <code>null</code> if none
-	 */
-	protected Object getRoot() {
-		return getInput();
-	}
-
-	/**
-	 * The <code>StructuredViewer</code> implementation of this method returns
-	 * the result as an <code>IStructuredSelection</code>.
-	 * <p>
-	 * Subclasses do not typically override this method, but implement
-	 * <code>getSelectionFromWidget(List)</code> instead.
-	 * <p>
-	 * @return ISelection
-	 */
-	public ISelection getSelection() {
-		Control control = getControl();
-		if (control == null || control.isDisposed()) {
-			return StructuredSelection.EMPTY;
-		}
-		List list = getSelectionFromWidget();
-		return new StructuredSelection(list, comparer);
-	}
-
-	/**
-	 * Retrieves the selection, as a <code>List</code>, from the underlying
-	 * widget.
-	 * 
-	 * @return the list of selected elements
-	 */
-	protected abstract List getSelectionFromWidget();
-
-	/**
-	 * Returns the sorted and filtered set of children of the given element. The
-	 * resulting array must not be modified, as it may come directly from the
-	 * model's internal state.
-	 * 
-	 * @param parent
-	 *            the parent element
-	 * @return a sorted and filtered array of child elements
-	 */
-	protected Object[] getSortedChildren(Object parent) {
-		Object[] result = getFilteredChildren(parent);
-		if (sorter != null) {
-			// be sure we're not modifying the original array from the model
-			result = (Object[]) result.clone();
-			sorter.sort(this, result);
-		}
-		return result;
-	}
-
-	/**
-	 * Returns this viewer's sorter, or <code>null</code> if it does not have
-	 * one.  If this viewer has a comparator that was set via 
-	 * <code>setComparator(ViewerComparator)</code> then this method will return 
-	 * <code>null</code> if the comparator is not an instance of ViewerSorter.
-     * <p>
-     * It is recommended to use <code>getComparator()</code> instead.
-     * </p>
-	 * 
-	 * @return a viewer sorter, or <code>null</code> if none or if the comparator is 
-	 * 				not an instance of ViewerSorter
-	 */
-	public ViewerSorter getSorter() {
-		if (sorter instanceof ViewerSorter)
-			return (ViewerSorter)sorter;
-		return null;
-	}
-
-	/**
-	 * Return this viewer's comparator used to sort elements.
-	 * This method should be used instead of <code>getSorter()</code>.
-	 * 
-	 * @return a viewer comparator, or <code>null</code> if none
-     *
-	 * @since 3.2
-	 */
-	public ViewerComparator getComparator(){
-		return sorter;
-	}
-	
-	/**
-	 * Handles a double-click select event from the widget.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param event
-	 *            the SWT selection event
-	 */
-	protected void handleDoubleSelect(SelectionEvent event) {
-		// This method is reimplemented in AbstractTreeViewer to fix bug 108102.
-		
-		// handle case where an earlier selection listener disposed the control.
-		Control control = getControl();
-		if (control != null && !control.isDisposed()) {
-			// If the double-clicked element can be obtained from the event, use it
-			// otherwise get it from the control.  Some controls like List do
-			// not have the notion of item.
-			// For details, see bug 90161 [Navigator] DefaultSelecting folders shouldn't always expand first one
-			ISelection selection;
-			if (event.item != null && event.item.getData() != null) {
-				selection = new StructuredSelection(event.item.getData());
-			}
-			else {
-				selection = getSelection();
-				updateSelection(selection);
-			}
-			fireDoubleClick(new DoubleClickEvent(this, selection));
-		}
-	}
-
-	/**
-	 * Handles an open event from the OpenStrategy.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param event
-	 *            the SWT selection event
-	 */
-	protected void handleOpen(SelectionEvent event) {
-		Control control = getControl();
-		if (control != null && !control.isDisposed()) {
-			ISelection selection = getSelection();
-			fireOpen(new OpenEvent(this, selection));
-		}
-	}
-
-	/**
-	 * Handles an invalid selection.
-	 * <p>
-	 * This framework method is called if a model change picked up by a viewer
-	 * results in an invalid selection. For instance if an element contained in
-	 * the selection has been removed from the viewer, the viewer is free to
-	 * either remove the element from the selection or to pick another element
-	 * as its new selection. The default implementation of this method calls
-	 * <code>updateSelection</code>. Subclasses may override it to implement
-	 * a different strategy for picking a new selection when the old selection
-	 * becomes invalid.
-	 * </p>
-	 * 
-	 * @param invalidSelection
-	 *            the selection before the viewer was updated
-	 * @param newSelection
-	 *            the selection after the update, or <code>null</code> if none
-	 */
-	protected void handleInvalidSelection(ISelection invalidSelection, ISelection newSelection) {
-		updateSelection(newSelection);
-		SelectionChangedEvent event = new SelectionChangedEvent(this, newSelection);
-		firePostSelectionChanged(event);
-	}
-
-	/**
-	 * The <code>StructuredViewer</code> implementation of this
-	 * <code>ContentViewer</code> method calls <code>update</code> if the
-	 * event specifies that the label of a given element has changed, otherwise
-	 * it calls super. Subclasses may reimplement or extend.
-	 * </p>
-	 * @param event the event that generated this update
-	 */
-	protected void handleLabelProviderChanged(LabelProviderChangedEvent event) {
-		Object[] elements = event.getElements();
-		if (elements != null) {
-			update(elements, null);
-		} else {
-			super.handleLabelProviderChanged(event);
-		}
-	}
-
-	/**
-	 * Handles a select event from the widget.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param event
-	 *            the SWT selection event
-	 */
-	protected void handleSelect(SelectionEvent event) {
-		// handle case where an earlier selection listener disposed the control.
-		Control control = getControl();
-		if (control != null && !control.isDisposed()) {
-			updateSelection(getSelection());
-		}
-	}
-
-	/**
-	 * Handles a post select event from the widget.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param e the SWT selection event
-	 */
-	protected void handlePostSelect(SelectionEvent e) {
-		SelectionChangedEvent event = new SelectionChangedEvent(this, getSelection());
-		firePostSelectionChanged(event);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Viewer.
-	 */
-	protected void hookControl(Control control) {
-		super.hookControl(control);
-		OpenStrategy handler = new OpenStrategy(control);
-		handler.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				// On Windows, selection events may happen during a refresh.
-				// Ignore these events if we are currently in preservingSelection().
-				// See bug 184441.
-				if (!inChange) {
-					handleSelect(e);
-				}
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				handleDoubleSelect(e);
-			}
-		});
-		handler.addPostSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				handlePostSelect(e);
-			}
-		});
-		handler.addOpenListener(new IOpenEventListener() {
-			public void handleOpen(SelectionEvent e) {
-				StructuredViewer.this.handleOpen(e);
-			}
-		});
-	}
-
-	/**
-	 * Returns whether this viewer has any filters.
-	 * @return boolean
-	 */
-	protected boolean hasFilters() {
-		return filters != null && filters.size() > 0;
-	}
-
-	/**
-	 * Refreshes this viewer starting at the given element.
-	 * 
-	 * @param element
-	 *            the element
-	 */
-	protected abstract void internalRefresh(Object element);
-
-	/**
-	 * Refreshes this viewer starting at the given element. Labels are updated
-	 * as described in <code>refresh(boolean updateLabels)</code>.
-	 * <p>
-	 * The default implementation simply calls
-	 * <code>internalRefresh(element)</code>, ignoring
-	 * <code>updateLabels</code>.
-	 * <p>
-	 * If this method is overridden to do the actual refresh, then
-	 * <code>internalRefresh(Object element)</code> should simply call
-	 * <code>internalRefresh(element, true)</code>.
-	 * 
-	 * @param element
-	 *            the element
-	 * @param updateLabels
-	 *            <code>true</code> to update labels for existing elements,
-	 *            <code>false</code> to only update labels as needed, assuming
-	 *            that labels for existing elements are unchanged.
-	 * 
-	 * @since 2.0
-	 */
-	protected void internalRefresh(Object element, boolean updateLabels) {
-		internalRefresh(element);
-	}
-
-	/**
-	 * Adds the element item pair to the element map.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @param item
-	 *            the corresponding widget
-	 */
-	protected void mapElement(Object element, Widget item) {
-		if (elementMap != null) {
-			Object widgetOrWidgets = elementMap.get(element);
-			if (widgetOrWidgets == null) {
-				elementMap.put(element, item);
-			} else if (widgetOrWidgets instanceof Widget) {
-				if (widgetOrWidgets != item) {
-					elementMap.put(element, new Widget[] {
-							(Widget) widgetOrWidgets, item });
-				}
-			} else {
-				Widget[] widgets = (Widget[]) widgetOrWidgets;
-				int indexOfItem = Arrays.asList(widgets).indexOf(item);
-				if (indexOfItem == -1) {
-					int length = widgets.length;
-					System.arraycopy(widgets, 0,
-							widgets = new Widget[length + 1], 0, length);
-					widgets[length] = item;
-					elementMap.put(element, widgets);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Determines whether a change to the given property of the given element
-	 * would require refiltering and/or resorting.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @param property
-	 *            the property
-	 * @return <code>true</code> if refiltering is required, and
-	 *         <code>false</code> otherwise
-	 */
-	protected boolean needsRefilter(Object element, String property) {
-		if (sorter != null && sorter.isSorterProperty(element, property)) {
-			return true;
-		}
-
-		if (filters != null) {
-			for (int i = 0, n = filters.size(); i < n; ++i) {
-				ViewerFilter filter = (ViewerFilter) filters.get(i);
-				if (filter.isFilterProperty(element, property)) {
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns a new hashtable using the given capacity and this viewer's element comparer.
-	 * 
-	 * @param capacity the initial capacity of the hashtable
-	 * @return a new hashtable
-	 * 
-	 * @since 3.0
-	 */
-	CustomHashtable newHashtable(int capacity) {
-		return new CustomHashtable(capacity, getComparer());
-	}
-
-	/**
-	 * Attempts to preserves the current selection across a run of the given
-	 * code.
-	 * <p>
-	 * The default implementation of this method:
-	 * <ul>
-	 * <li>discovers the old selection (via <code>getSelection</code>)</li>
-	 * <li>runs the given runnable</li>
-	 * <li>attempts to restore the old selection (using
-	 * <code>setSelectionToWidget</code></li>
-	 * <li>rediscovers the resulting selection (via <code>getSelection</code>)
-	 * </li>
-	 * <li>calls <code>handleInvalidSelection</code> if the resulting selection is different from the old selection</li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @param updateCode
-	 *            the code to run
-	 */
-	protected void preservingSelection(Runnable updateCode) {
-		preservingSelection(updateCode, false);
-	}
-
-	/**
-	 * Attempts to preserves the current selection across a run of the given
-	 * code, with a best effort to avoid scrolling if <code>reveal</code> is false,
-	 * or to reveal the selection if <code>reveal</code> is true.
-	 * <p>
-	 * The default implementation of this method:
-	 * <ul>
-	 * <li>discovers the old selection (via <code>getSelection</code>)</li>
-	 * <li>runs the given runnable</li>
-	 * <li>attempts to restore the old selection (using
-	 * <code>setSelectionToWidget</code></li>
-	 * <li>rediscovers the resulting selection (via <code>getSelection</code>)
-	 * </li>
-	 * <li>calls <code>handleInvalidSelection</code> if the selection did not
-	 * take</li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @param updateCode
-	 *            the code to run
-	 * @param reveal
-	 *            <code>true</code> if the selection should be made visible,
-	 *            <code>false</code> if scrolling should be avoided
-	 * @since 3.3
-	 */
-	void preservingSelection(Runnable updateCode, boolean reveal) {
-
-		ISelection oldSelection = null;
-		try {
-			// preserve selection
-			oldSelection = getSelection();
-			inChange = restoreSelection = true;
-
-			// perform the update
-			updateCode.run();
-
-		} finally {
-			inChange = false;
-
-			// restore selection
-			if (restoreSelection) {
-				setSelectionToWidget(oldSelection, reveal);
-			}
-
-			// send out notification if old and new differ
-			ISelection newSelection = getSelection();
-			if (!newSelection.equals(oldSelection)) {
-				handleInvalidSelection(oldSelection, newSelection);
-			}
-		}
-	}
-	
-	/*
-	 * Non-Javadoc. Method declared on Viewer.
-	 */
-	public void refresh() {
-		refresh(getRoot());
-	}
-
-	/**
-	 * Refreshes this viewer with information freshly obtained from this
-	 * viewer's model. If <code>updateLabels</code> is <code>true</code>
-	 * then labels for otherwise unaffected elements are updated as well.
-	 * Otherwise, it assumes labels for existing elements are unchanged, and
-	 * labels are only obtained as needed (for example, for new elements).
-	 * <p>
-	 * Calling <code>refresh(true)</code> has the same effect as
-	 * <code>refresh()</code>.
-	 * <p>
-	 * Note that the implementation may still obtain labels for existing
-	 * elements even if <code>updateLabels</code> is false. The intent is
-	 * simply to allow optimization where possible.
-	 * 
-	 * @param updateLabels
-	 *            <code>true</code> to update labels for existing elements,
-	 *            <code>false</code> to only update labels as needed, assuming
-	 *            that labels for existing elements are unchanged.
-	 * 
-	 * @since 2.0
-	 */
-	public void refresh(boolean updateLabels) {
-		refresh(getRoot(), updateLabels);
-	}
-
-	/**
-	 * Refreshes this viewer starting with the given element.
-	 * <p>
-	 * Unlike the <code>update</code> methods, this handles structural changes
-	 * to the given element (e.g. addition or removal of children). If only the
-	 * given element needs updating, it is more efficient to use the
-	 * <code>update</code> methods.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 */
-	public void refresh(final Object element) {
-		preservingSelection(new Runnable() {
-			public void run() {
-				internalRefresh(element);
-			}
-		});
-	}
-
-	/**
-	 * Refreshes this viewer starting with the given element. Labels are updated
-	 * as described in <code>refresh(boolean updateLabels)</code>.
-	 * <p>
-	 * Unlike the <code>update</code> methods, this handles structural changes
-	 * to the given element (e.g. addition or removal of children). If only the
-	 * given element needs updating, it is more efficient to use the
-	 * <code>update</code> methods.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @param updateLabels
-	 *            <code>true</code> to update labels for existing elements,
-	 *            <code>false</code> to only update labels as needed, assuming
-	 *            that labels for existing elements are unchanged.
-	 * 
-	 * @since 2.0
-	 */
-	public void refresh(final Object element, final boolean updateLabels) {
-		preservingSelection(new Runnable() {
-			public void run() {
-				internalRefresh(element, updateLabels);
-			}
-		});
-	}
-
-	/**
-	 * 
-	 * Refreshes the given item with the given element. Calls
-	 * <code>doUpdateItem(..., false)</code>.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * @param widget
-     *            the widget
-	 * @param element
-     *            the element
-	 */
-	protected final void refreshItem(Widget widget, Object element) {
-		SafeRunnable.run(new UpdateItemSafeRunnable(widget, element, true));
-	}
-
-	/**
-	 * Removes the given open listener from this viewer. Has no affect if an
-	 * identical listener is not registered.
-	 * 
-	 * @param listener
-	 *            a double-click listener
-	 */
-	public void removeOpenListener(IOpenListener listener) {
-		openListeners.remove(listener);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPostSelectionProvider.
-	 */
-	public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
-		postSelectionChangedListeners.remove(listener);
-	}
-
-	/**
-	 * Removes the given double-click listener from this viewer. Has no affect
-	 * if an identical listener is not registered.
-	 * 
-	 * @param listener
-	 *            a double-click listener
-	 */
-	public void removeDoubleClickListener(IDoubleClickListener listener) {
-		doubleClickListeners.remove(listener);
-	}
-
-	/**
-	 * Removes the given filter from this viewer, and triggers refiltering and
-	 * resorting of the elements if required. Has no effect if the identical
-	 * filter is not registered. If you want to remove more than one filter
-	 * consider using {@link StructuredViewer#setFilters(ViewerFilter[])}.
-	 * 
-	 * @param filter
-	 *            a viewer filter
-	 * @see StructuredViewer#setFilters(ViewerFilter[])
-	 */
-	public void removeFilter(ViewerFilter filter) {
-		Assert.isNotNull(filter);
-		if (filters != null) {
-			// Note: can't use List.remove(Object). Use identity comparison
-			// instead.
-			for (Iterator i = filters.iterator(); i.hasNext();) {
-				Object o = i.next();
-				if (o == filter) {
-					i.remove();
-					refresh();
-					if (filters.size() == 0) {
-						filters = null;
-					}
-					return;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Sets the filters, replacing any previous filters, and triggers
-	 * refiltering and resorting of the elements.
-	 * 
-	 * @param filters
-	 *            an array of viewer filters
-	 * @since 3.3
-	 */
-	public void setFilters(ViewerFilter[] filters) {
-		if (filters.length == 0) {
-			resetFilters();
-		} else {
-			this.filters = new ArrayList(Arrays.asList(filters));
-			refresh();
-		}
-	}
-	
-	/**
-	 * Discards this viewer's filters and triggers refiltering and resorting of
-	 * the elements.
-	 */
-	public void resetFilters() {
-		if (filters != null) {
-			filters = null;
-			refresh();
-		}
-	}
-
-	/**
-	 * Ensures that the given element is visible, scrolling the viewer if
-	 * necessary. The selection is unchanged.
-	 * 
-	 * @param element
-	 *            the element to reveal
-	 */
-	public abstract void reveal(Object element);
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ContentViewer#setContentProvider(org.eclipse.jface.viewers.IContentProvider)
-	 */
-	public void setContentProvider(IContentProvider provider) {
-		assertContentProviderType(provider);
-		super.setContentProvider(provider);
-	}
-
-	/**
-	 * Assert that the content provider is of one of the
-	 * supported types.
-	 * @param provider
-	 */
-	protected void assertContentProviderType(IContentProvider provider) {
-		Assert.isTrue(provider instanceof IStructuredContentProvider);
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.Viewer#setInput(java.lang.Object)
-	 */
-	public final void setInput(Object input) {
-
-		try {
-			//		fInChange= true;
-
-			unmapAllElements();
-
-			super.setInput(input);
-
-		} finally {
-			//		fInChange= false;
-		}
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.Viewer#setSelection(org.eclipse.jface.viewers.ISelection, boolean)
-	 */
-	public void setSelection(ISelection selection, boolean reveal) {
-		/**
-		 * <p>
-		 * If the new selection differs from the current selection the hook
-		 * <code>updateSelection</code> is called.
-		 * </p>
-		 * <p>
-		 * If <code>setSelection</code> is called from within
-		 * <code>preserveSelection</code>, the call to
-		 * <code>updateSelection</code> is delayed until the end of
-		 * <code>preserveSelection</code>.
-		 * </p>
-		 * <p>
-		 * Subclasses do not typically override this method, but implement
-		 * <code>setSelectionToWidget</code> instead.
-		 * </p>
-		 */
-		Control control = getControl();
-		if (control == null || control.isDisposed()) {
-			return;
-		}
-		if (!inChange) {
-			setSelectionToWidget(selection, reveal);
-			ISelection sel = getSelection();
-			updateSelection(sel);
-			firePostSelectionChanged(new SelectionChangedEvent(this, sel));
-		} else {
-			restoreSelection = false;
-			setSelectionToWidget(selection, reveal);
-		}
-	}
-
-	/**
-	 * Parlays the given list of selected elements into selections on this
-	 * viewer's control.
-	 * <p>
-	 * Subclasses should override to set their selection based on the given list
-	 * of elements.
-	 * </p>
-	 * 
-	 * @param l
-	 *            list of selected elements (element type: <code>Object</code>)
-	 *            or <code>null</code> if the selection is to be cleared
-	 * @param reveal
-	 *            <code>true</code> if the selection is to be made visible,
-	 *            and <code>false</code> otherwise
-	 */
-	protected abstract void setSelectionToWidget(List l, boolean reveal);
-
-	/**
-	 * Converts the selection to a <code>List</code> and calls
-	 * <code>setSelectionToWidget(List, boolean)</code>. The selection is
-	 * expected to be an <code>IStructuredSelection</code> of elements. If
-	 * not, the selection is cleared.
-	 * <p>
-	 * Subclasses do not typically override this method, but implement
-	 * <code>setSelectionToWidget(List, boolean)</code> instead.
-	 * 
-	 * @param selection
-	 *            an IStructuredSelection of elements
-	 * @param reveal
-	 *            <code>true</code> to reveal the first element in the
-	 *            selection, or <code>false</code> otherwise
-	 */
-	protected void setSelectionToWidget(ISelection selection, boolean reveal) {
-		if (selection instanceof IStructuredSelection) {
-			setSelectionToWidget(((IStructuredSelection) selection).toList(), reveal);
-		} else {
-			setSelectionToWidget((List) null, reveal);
-		}
-	}
-
-	/**
-	 * Sets this viewer's sorter and triggers refiltering and resorting of this
-	 * viewer's element. Passing <code>null</code> turns sorting off.  
-     * <p>
-     * It is recommended to use <code>setComparator()</code> instead.
-     * </p>
-	 * 
-	 * @param sorter
-	 *            a viewer sorter, or <code>null</code> if none
-	 */
-	public void setSorter(ViewerSorter sorter) {
-		if (this.sorter != sorter) {
-			this.sorter = sorter;
-			refresh();
-		}
-	}
-
-	/**
-	 * Sets this viewer's comparator to be used for sorting elements, and triggers refiltering and 
-	 * resorting of this viewer's element.  <code>null</code> turns sorting off.
-	 * To get the viewer's comparator, call <code>getComparator()</code>.
-     * <p>
-     * IMPORTANT: This method was introduced in 3.2. If a reference to this viewer object 
-     * is passed to clients who call <code>getSorter()<code>, null may be returned from
-     * from that method even though the viewer is sorting its elements using the
-     * viewer's comparator.
-     * </p>
-	 * 
-	 * @param comparator a viewer comparator, or <code>null</code> if none
-     *
-     * @since 3.2
-	 */
-	public void setComparator(ViewerComparator comparator){
-		if (this.sorter != comparator){
-			this.sorter = comparator;
-			refresh();
-		}
-	}
-	
-	/**
-	 * Configures whether this structured viewer uses an internal hash table to
-	 * speeds up the mapping between elements and SWT items. This must be called
-	 * before the viewer is given an input (via <code>setInput</code>).
-	 * 
-	 * @param enable
-	 *            <code>true</code> to enable hash lookup, and
-	 *            <code>false</code> to disable it
-	 */
-	public void setUseHashlookup(boolean enable) {
-		Assert.isTrue(getInput() == null,
-				"Can only enable the hash look up before input has been set");//$NON-NLS-1$
-		if (enable) {
-			elementMap = newHashtable(CustomHashtable.DEFAULT_CAPACITY);
-		} else {
-			elementMap = null;
-		}
-	}
-
-	/**
-	 * Sets the comparer to use for comparing elements, or <code>null</code>
-	 * to use the default <code>equals</code> and <code>hashCode</code>
-	 * methods on the elements themselves.
-	 * 
-	 * @param comparer
-	 *            the comparer to use for comparing elements or
-	 *            <code>null</code>
-	 */
-	public void setComparer(IElementComparer comparer) {
-		this.comparer = comparer;
-		if (elementMap != null) {
-			elementMap = new CustomHashtable(elementMap, comparer);
-		}
-	}
-
-	/**
-	 * Hook for testing.
-	 * @param element
-	 * @return Widget
-	 */
-	public Widget testFindItem(Object element) {
-		return findItem(element);
-	}
-
-	/**
-	 * Hook for testing.
-	 * @param element
-	 * @return Widget[]
-	 * @since 3.2
-	 */
-	public Widget[] testFindItems(Object element) {
-		return findItems(element);
-	}
-	
-	/**
-	 * Removes all elements from the map.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 */
-	protected void unmapAllElements() {
-		if (elementMap != null) {
-			elementMap = newHashtable(CustomHashtable.DEFAULT_CAPACITY);
-		}
-	}
-
-	/**
-	 * Removes the given element from the internal element to widget map. Does
-	 * nothing if mapping is disabled. If mapping is enabled, the given element
-	 * must be present.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 */
-	protected void unmapElement(Object element) {
-		if (elementMap != null) {
-			elementMap.remove(element);
-		}
-	}
-
-	/**
-	 * Removes the given association from the internal element to widget map.
-	 * Does nothing if mapping is disabled, or if the given element does not map
-	 * to the given item.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @param item the item to unmap
-	 * @since 2.0
-	 */
-	protected void unmapElement(Object element, Widget item) {
-		// double-check that the element actually maps to the given item before
-		// unmapping it
-		if (elementMap != null) {
-			Object widgetOrWidgets = elementMap.get(element);
-			if (widgetOrWidgets == null) {
-				// item was not mapped, return
-				return;
-			} else if (widgetOrWidgets instanceof Widget) {
-				if (item == widgetOrWidgets) {
-					elementMap.remove(element);
-				}
-			} else {
-				Widget[] widgets = (Widget[]) widgetOrWidgets;
-				int indexOfItem = Arrays.asList(widgets).indexOf(item);
-				if (indexOfItem == -1) {
-					return;
-				}
-				int length = widgets.length;
-				if (indexOfItem == 0) {
-					if(length == 1) {
-						elementMap.remove(element);
-					} else {
-						Widget[] updatedWidgets = new Widget[length - 1];
-						System.arraycopy(widgets, 1, updatedWidgets, 0, length -1 );
-						elementMap.put(element, updatedWidgets);
-					}
-				} else {
-					Widget[] updatedWidgets = new Widget[length - 1];
-					System.arraycopy(widgets, 0, updatedWidgets, 0, indexOfItem);
-					System.arraycopy(widgets, indexOfItem + 1, updatedWidgets, indexOfItem, length - indexOfItem - 1);
-					elementMap.put(element, updatedWidgets);
-				}
-			}
-		}
-	}
-
-	// flag to indicate that a full refresh took place. See bug 102440.
-	private boolean refreshOccurred;
-	
-	/**
-	 * Updates the given elements' presentation when one or more of their
-	 * properties change. Only the given elements are updated.
-	 * <p>
-	 * This does not handle structural changes (e.g. addition or removal of
-	 * elements), and does not update any other related elements (e.g. child
-	 * elements). To handle structural changes, use the <code>refresh</code>
-	 * methods instead.
-	 * </p>
-	 * <p>
-	 * This should be called when an element has changed in the model, in order
-	 * to have the viewer accurately reflect the model. This method only affects
-	 * the viewer, not the model.
-	 * </p>
-	 * <p>
-	 * Specifying which properties are affected may allow the viewer to optimize
-	 * the update. For example, if the label provider is not affected by changes
-	 * to any of these properties, an update may not actually be required.
-	 * Specifying <code>properties</code> as <code>null</code> forces a full
-	 * update of the given elements.
-	 * </p>
-	 * <p>
-	 * If the viewer has a sorter which is affected by a change to one of the
-	 * properties, the elements' positions are updated to maintain the sort
-	 * order. Note that resorting does not happen if <code>properties</code>
-	 * is <code>null</code>.
-	 * </p>
-	 * <p>
-	 * If the viewer has a filter which is affected by a change to one of the
-	 * properties, elements may appear or disappear if the change affects
-	 * whether or not they are filtered out.
-	 * </p>
-	 * 
-	 * @param elements
-	 *            the elements
-	 * @param properties
-	 *            the properties that have changed, or <code>null</code> to
-	 *            indicate unknown
-	 */
-	public void update(Object[] elements, String[] properties) {
-		boolean previousValue = refreshOccurred;
-		refreshOccurred = false;
-		try {
-			for (int i = 0; i < elements.length; ++i) {
-				update(elements[i], properties);
-				if (refreshOccurred) {
-					return;
-				}
-			}
-		} finally {
-			refreshOccurred = previousValue;
-		}
-	}
-
-	/**
-	 * Updates the given element's presentation when one or more of its
-	 * properties changes. Only the given element is updated.
-	 * <p>
-	 * This does not handle structural changes (e.g. addition or removal of
-	 * elements), and does not update any other related elements (e.g. child
-	 * elements). To handle structural changes, use the <code>refresh</code>
-	 * methods instead.
-	 * </p>
-	 * <p>
-	 * This should be called when an element has changed in the model, in order
-	 * to have the viewer accurately reflect the model. This method only affects
-	 * the viewer, not the model.
-	 * </p>
-	 * <p>
-	 * Specifying which properties are affected may allow the viewer to optimize
-	 * the update. For example, if the label provider is not affected by changes
-	 * to any of these properties, an update may not actually be required.
-	 * Specifying <code>properties</code> as <code>null</code> forces a full
-	 * update of the element.
-	 * </p>
-	 * <p>
-	 * If the viewer has a sorter which is affected by a change to one of the
-	 * properties, the element's position is updated to maintain the sort order.
-	 * Note that resorting does not happen if <code>properties</code> is
-	 * <code>null</code>.
-	 * </p>
-	 * <p>
-	 * If the viewer has a filter which is affected by a change to one of the
-	 * properties, the element may appear or disappear if the change affects
-	 * whether or not the element is filtered out.
-	 * </p>
-	 * 
-	 * @param element
-	 *            the element
-	 * @param properties
-	 *            the properties that have changed, or <code>null</code> to
-	 *            indicate unknown
-	 */
-	public void update(Object element, String[] properties) {
-		Assert.isNotNull(element);
-		Widget[] items = findItems(element);
-
-		boolean mayExitEarly = !refreshOccurred;
-		for (int i = 0; i < items.length; i++) {
-			internalUpdate(items[i], element, properties);
-			if (mayExitEarly && refreshOccurred) {
-				// detected a change from refreshOccurred==false to refreshOccurred==true 
-				return;
-			}
-		}		
-	}
-
-	/**
-     * Updates the given element's presentation when one or more of its
-     * properties changes. Only the given element is updated.
-     * <p>
-     * EXPERIMENTAL.  Not to be used except by JDT.
-     * This method was added to support JDT's explorations
-     * into grouping by working sets, which requires viewers to support multiple 
-     * equal elements.  See bug 76482 for more details.  This support will
-     * likely be removed in Eclipse 3.3 in favor of proper support for
-     * multiple equal elements (which was implemented for AbtractTreeViewer in 3.2). 
-     * </p>
-     * @param widget
-     *            the widget for the element
-     * @param element
-     *            the element
-     * @param properties
-     *            the properties that have changed, or <code>null</code> to
-     *            indicate unknown
-     */
-	protected void internalUpdate(Widget widget, Object element, String[] properties) {
-		boolean needsRefilter = false;
-		if (properties != null) {
-			for (int i = 0; i < properties.length; ++i) {
-				needsRefilter = needsRefilter(element, properties[i]);
-				if (needsRefilter) {
-					break;
-				}
-			}
-		}
-		if (needsRefilter) {
-			preservingSelection(new Runnable() {
-				public void run() {
-					internalRefresh(getRoot());
-					refreshOccurred = true;
-				}
-			});
-			return;
-		}
-
-		boolean needsUpdate;
-		if (properties == null) {
-			needsUpdate = true;
-		} else {
-			needsUpdate = false;
-			IBaseLabelProvider labelProvider = getLabelProvider();
-			for (int i = 0; i < properties.length; ++i) {
-				needsUpdate = labelProvider.isLabelProperty(element, properties[i]);
-				if (needsUpdate) {
-					break;
-				}
-			}
-		}
-		if (needsUpdate) {
-			updateItem(widget, element);
-		}
-	}
-
-	/**
-	 * Copies attributes of the given element into the given widget.
-	 * <p>
-	 * This method is internal to the framework; subclassers should not call
-	 * this method. Calls <code>doUpdateItem(widget, element, true)</code>.
-	 * </p>
-	 * 
-	 * @param widget
-	 *            the widget
-	 * @param element
-	 *            the element
-	 */
-	protected final void updateItem(Widget widget, Object element) {
-		SafeRunnable.run(new UpdateItemSafeRunnable(widget, element, true));
-	}
-
-	/**
-	 * Updates the selection of this viewer.
-	 * <p>
-	 * This framework method should be called when the selection in the viewer
-	 * widget changes.
-	 * </p>
-	 * <p>
-	 * The default implementation of this method notifies all selection change
-	 * listeners recorded in an internal state variable. Overriding this method
-	 * is generally not required; however, if overriding in a subclass,
-	 * <code>super.updateSelection</code> must be invoked.
-	 * </p>
-	 * 
-	 * @param selection
-	 *            the selection, or <code>null</code> if none
-	 */
-	protected void updateSelection(ISelection selection) {
-		SelectionChangedEvent event = new SelectionChangedEvent(this, selection);
-		fireSelectionChanged(event);
-	}
-
-	/**
-	 * Returns whether this structured viewer is configured to use an internal
-	 * map to speed up the mapping between elements and SWT items.
-	 * <p>
-	 * The default implementation of this framework method checks whether the
-	 * internal map has been initialized.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the element map is enabled, and
-	 *         <code>false</code> if disabled
-	 */
-	protected boolean usingElementMap() {
-		return elementMap != null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ContentViewer#setLabelProvider(org.eclipse.jface.viewers.IBaseLabelProvider)
-	 */
-	public void setLabelProvider(IBaseLabelProvider labelProvider) {
-		if (labelProvider instanceof IColorProvider || labelProvider instanceof IFontProvider) {
-			colorAndFontCollector = new ColorAndFontCollectorWithProviders(labelProvider);
-		} else {
-			colorAndFontCollector = new ColorAndFontCollector();
-		}
-		super.setLabelProvider(labelProvider);
-		
-	}
-	
-	/**
-	 * Build a label up for the element using the supplied label provider.
-	 * @param updateLabel The ViewerLabel to collect the result in
-	 * @param element The element being decorated.
-	 */
-	protected void buildLabel(ViewerLabel updateLabel, Object element){
-
-		if (getLabelProvider() instanceof IViewerLabelProvider) {
-			IViewerLabelProvider itemProvider = (IViewerLabelProvider) getLabelProvider();
-			itemProvider.updateLabel(updateLabel, element);
-            		
-			colorAndFontCollector.setUsedDecorators();
-			
-			if(updateLabel.hasNewBackground()) {
-				colorAndFontCollector.setBackground(updateLabel.getBackground());
-			}
-			
-			if(updateLabel.hasNewForeground()) {
-				colorAndFontCollector.setForeground(updateLabel.getForeground());
-			}
-			
-			if(updateLabel.hasNewFont()) {
-				colorAndFontCollector.setFont(updateLabel.getFont());
-			}
-			return;
-
-		} 
-		
-		if(getLabelProvider() instanceof ILabelProvider){
-			ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
-			updateLabel.setText(labelProvider.getText(element));
-			updateLabel.setImage(labelProvider.getImage(element));
-		}
-	
-	}
-	
-	/**
-	 * Build a label up for the element using the supplied label provider.
-	 * @param updateLabel The ViewerLabel to collect the result in
-	 * @param element The element being decorated.
-	 * @param labelProvider ILabelProvider the labelProvider for the receiver.
-	 */
-	void buildLabel(ViewerLabel updateLabel, Object element,IViewerLabelProvider labelProvider){
-
-			labelProvider.updateLabel(updateLabel, element);
-            		
-			colorAndFontCollector.setUsedDecorators();
-			
-			if(updateLabel.hasNewBackground()) {
-				colorAndFontCollector.setBackground(updateLabel.getBackground());
-			}
-			
-			if(updateLabel.hasNewForeground()) {
-				colorAndFontCollector.setForeground(updateLabel.getForeground());
-			}
-			
-			if(updateLabel.hasNewFont()) {
-				colorAndFontCollector.setFont(updateLabel.getFont());
-			}
-	
-	}
-	
-	/**
-	 * Build a label up for the element using the supplied label provider.
-	 * @param updateLabel The ViewerLabel to collect the result in
-	 * @param elementPath The path of the element being decorated.
-	 * @param labelProvider ILabelProvider the labelProvider for the receiver.
-	 */
-	void buildLabel(ViewerLabel updateLabel, TreePath elementPath,ITreePathLabelProvider labelProvider){
-
-			labelProvider.updateLabel(updateLabel, elementPath);
-            		
-			colorAndFontCollector.setUsedDecorators();
-			
-			if(updateLabel.hasNewBackground()) {
-				colorAndFontCollector.setBackground(updateLabel.getBackground());
-			}
-			
-			if(updateLabel.hasNewForeground()) {
-				colorAndFontCollector.setForeground(updateLabel.getForeground());
-			}
-			
-			if(updateLabel.hasNewFont()) {
-				colorAndFontCollector.setFont(updateLabel.getFont());
-			}
-	
-	}
-	
-	/**
-	 * Build a label up for the element using the supplied label provider.
-	 * @param updateLabel The ViewerLabel to collect the result in
-	 * @param element The element being decorated.
-	 * @param labelProvider ILabelProvider the labelProvider for the receiver.
-	 */
-	void buildLabel(ViewerLabel updateLabel, Object element,ILabelProvider labelProvider){
-			updateLabel.setText(labelProvider.getText(element));
-			updateLabel.setImage(labelProvider.getImage(element));
-	}
-
-	/**
-	 * Get the ColorAndFontCollector for the receiver.
-	 * @return ColorAndFontCollector 
-	 * @since 3.1
-	 */
-	protected ColorAndFontCollector getColorAndFontCollector() {
-		return colorAndFontCollector;
-	}
-	
-	protected void handleDispose(DisposeEvent event) {
-		super.handleDispose(event);
-		sorter = null;
-		comparer = null;
-		if (filters != null)
-			filters.clear();
-		elementMap = newHashtable(1);
-		openListeners.clear();
-		doubleClickListeners.clear();
-		colorAndFontCollector.clear();
-		postSelectionChangedListeners.clear();
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java
deleted file mode 100644
index 15b547d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledCellLabelProvider.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Michael Krkoska - initial API and implementation (bug 188333)
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.TextLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * A {@link StyledCellLabelProvider} supports styled labels by using owner
- * draw.
- * Besides the styles in labels, the label provider preserves native viewer behavior:
- * <ul>
- * <li>similar image and label positioning</li>
- * <li>native drawing of focus and selection</li>
- * </ul>
- * <p>
- * For providing the label's styles, create a subclass and overwrite
- * {@link StyledCellLabelProvider#update(ViewerCell)} to
- * return set all information needed to render a element. Use
- * {@link ViewerCell#setStyleRanges(StyleRange[])} to set style ranges
- * on the label.
- * </p>
- * <p>
- * The current version of the {@link StyledCellLabelProvider} will ignore all font settings on
- * {@link StyleRange}. Different fonts would make labels wider, and the native
- * selection drawing could not be reused.
- * </p>
- * 
- * <p><strong>NOTE:</strong> This API is experimental and may be deleted or
- * changed before 3.4 is released.</p>
- * 
- * @since 3.4
- */
-public abstract class StyledCellLabelProvider extends OwnerDrawLabelProvider {
-
-	/**
-	 * Style constant for indicating that the styled colors are to be applied
-	 * even it the viewer's item is selected. Default is not to apply colors.
-	 */
-	public static final int COLORS_ON_SELECTION = 1 << 0;
-
-	/**
-	 * Style constant for indicating to draw the focus if requested by the owner
-	 * draw event. Default is to draw the focus.
-	 */
-	public static final int NO_FOCUS = 1 << 1;
-	
-	/**
-	 * Private constant to indicate if owner draw is enabled for the
-	 * label provider's column.
-	 */
-	private static final int OWNER_DRAW_ENABLED = 1 << 4;
-
-	private int style;
-
-	// reused text layout
-	private TextLayout cachedTextLayout;
-	
-	private ColumnViewer viewer;
-	private ViewerColumn column;
-
-	/**
-	 * Creates a new StyledCellLabelProvider. By default, owner draw is enabled, focus is drawn and no
-	 * colors are painted on selected elements.
-	 */
-	public StyledCellLabelProvider() {
-		this(0);
-	}
-
-	/**
-	 * Creates a new StyledCellLabelProvider. By default, owner draw is enabled.
-	 * 
-	 * @param style
-	 *            the style bits
-	 * @see StyledCellLabelProvider#COLORS_ON_SELECTION
-	 * @see StyledCellLabelProvider#NO_FOCUS
-	 */
-	public StyledCellLabelProvider(int style) {
-		this.style = style & (COLORS_ON_SELECTION | NO_FOCUS)
-							| OWNER_DRAW_ENABLED;
-	}
-	
-	/**
-	 * Returns <code>true</code> is the owner draw rendering is enabled for this label provider.
-	 * By default owner draw rendering is enabled. If owner draw rendering is disabled, rending is
-	 * done by the viewer and no styled ranges (see {@link ViewerCell#getStyleRanges()})
-	 * are drawn.
-	 * 
-	 * @return <code>true</code> is the rendering of styles is enabled.
-	 */
-	public boolean isOwnerDrawEnabled() {
-		return (this.style & OWNER_DRAW_ENABLED) != 0;
-	}
-	
-	/**
-	 * Specifies whether owner draw rendering is enabled for this label
-	 * provider. By default owner draw rendering is enabled. If owner draw
-	 * rendering is disabled, rendering is done by the viewer and no styled
-	 * ranges (see {@link ViewerCell#getStyleRanges()}) are drawn.
-	 * It is the caller's responsibility to also call
-	 * {@link StructuredViewer#refresh()} or similar methods to update the
-	 * underlying widget.
-	 * 
-	 * @param enabled
-	 *            specifies if owner draw rendering is enabled
-	 */
-	public void setOwnerDrawEnabled(boolean enabled) {
-		boolean isEnabled= isOwnerDrawEnabled();
-		if (isEnabled != enabled) {
-			if (enabled) {
-				this.style |= OWNER_DRAW_ENABLED;
-			} else {
-				this.style &= ~OWNER_DRAW_ENABLED;
-			}
-			if (this.viewer != null) {
-				setOwnerDrawEnabled(this.viewer, this.column, enabled);
-			}
-		}
-	}
-	
-	/**
-	 * Returns the viewer on which this label provider is installed on or <code>null</code> if the
-	 * label provider is not installed.
-	 * 
-	 * @return the viewer on which this label provider is installed on or <code>null</code> if the
-	 * label provider is not installed.
-	 */
-	protected final ColumnViewer getViewer() {
-		return this.viewer;
-	}
-	
-	/**
-	 * Returns the column on which this label provider is installed on or <code>null</code> if the
-	 * label provider is not installed.
-	 * 
-	 * @return the column on which this label provider is installed on or <code>null</code> if the
-	 * label provider is not installed.
-	 */
-	protected final ViewerColumn getColumn() {
-		return this.column;
-	}
-		
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.OwnerDrawLabelProvider#initialize(org.eclipse.jface.viewers.ColumnViewer, org.eclipse.jface.viewers.ViewerColumn)
-	 */
-	public void initialize(ColumnViewer viewer, ViewerColumn column) {
-		Assert.isTrue(this.viewer == null && this.column == null, "Label provider instance already in use"); //$NON-NLS-1$
-		
-		this.viewer= viewer;
-		this.column= column;
-		super.initialize(viewer, column, isOwnerDrawEnabled());
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.BaseLabelProvider#dispose()
-	 */
-	public void dispose() {
-		if (this.cachedTextLayout != null) {
-			cachedTextLayout.dispose();
-			cachedTextLayout = null;
-		}
-	
-		this.viewer= null;
-		this.column= null;
-		
-		super.dispose();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.OwnerDrawLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
-	 */
-	public void update(ViewerCell cell) {
-		// clients must override and configure the cell and call super
-		super.update(cell); // calls 'repaint' to trigger the paint listener
-	}
-
-	private TextLayout getSharedTextLayout(Display display) {
-		if (cachedTextLayout == null) {
-			int orientation = viewer.getControl().getStyle() & (SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT);
-			cachedTextLayout = new TextLayout(display);
-			cachedTextLayout.setOrientation(orientation);
-		} else {
-			cachedTextLayout.setText(""); // make sure no previous ranges are cleared //$NON-NLS-1$
-		}
-		return cachedTextLayout;
-	}
-
-	private boolean useColors(Event event) {
-		return (event.detail & SWT.SELECTED) == 0
-				|| (this.style & COLORS_ON_SELECTION) != 0;
-	}
-
-	private boolean drawFocus(Event event) {
-		return (event.detail & SWT.FOCUSED) != 0
-				&& (this.style & NO_FOCUS) == 0;
-	}
-
-	/**
-	 * Returns a {@link TextLayout} instance for the given cell
-	 * configured with the style ranges. The text layout instance is managed by
-	 * the label provider. Caller of the method must not dispose the text
-	 * layout.
-	 * 
-	 * @param diplay
-	 *            the current display
-	 * @param applyColors
-	 *            if set, create colors in the result
-	 * @param cell
-	 *            the viewer cell
-	 * @return a TextLayout instance
-	 */
-	private TextLayout getTextLayoutForInfo(Display display, ViewerCell cell, boolean applyColors) {
-		TextLayout layout = getSharedTextLayout(display);
-		
-		layout.setText(cell.getText());
-		layout.setFont(cell.getFont()); // set also if null to clear previous usages
-		
-		StyleRange[] styleRanges = cell.getStyleRanges();
-		if (styleRanges != null) { // user didn't fill styled ranges
-			for (int i = 0; i < styleRanges.length; i++) {
-				StyleRange curr = prepareStyleRange(styleRanges[i], applyColors);
-				layout.setStyle(curr, curr.start, curr.start + curr.length - 1);
-			}
-		}
-
-		return layout;
-	}
-	
-	/**
-	 * Prepares the given style range before it is applied to the label. This method makes sure that
-	 * no colors are drawn when the element is selected.
-	 * The current version of the {@link StyledCellLabelProvider} will also ignore all font settings on the
-	 * style range. Clients can override.
-	 * 
-	 * @param styleRange
-	 *               the style range to prepare. the style range element must not be modified
-	 * @param applyColors
-	 *               specifies if colors should be applied.
-	 * @return
-	 *               returns the style range to use on the label
-	 */
-	protected StyleRange prepareStyleRange(StyleRange styleRange, boolean applyColors) {
-		// if no colors apply or font is set, create a clone and clear the
-		// colors and font
-		if (styleRange.font != null || !applyColors
-				&& (styleRange.foreground != null || styleRange.background != null)) {
-			styleRange = (StyleRange) styleRange.clone();
-			styleRange.font = null; // ignore font settings until bug 168807 is resolved
-			if (!applyColors) {
-				styleRange.foreground = null;
-				styleRange.background = null;
-			}
-		}
-		return styleRange;
-	}
-
-	private ViewerCell getViewerCell(Event event, Object element) {
-		ViewerRow row= viewer.getViewerRowFromItem(event.item);
-		return new ViewerCell(row, event.index, element);
-	}
-	
-	/**
-	 * Handle the erase event. The default implementation does nothing to ensure
-	 * keep native selection highlighting working.
-	 * 
-	 * @param event
-	 *            the erase event
-	 * @param element
-	 *            the model object
-	 * @see SWT#EraseItem
-	 */
-	protected void erase(Event event, Object element) {
-		// use native erase
-		if (isOwnerDrawEnabled()) {
-			// info has been set by 'update': announce that we paint ourselves
-			event.detail &= ~SWT.FOREGROUND;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.OwnerDrawLabelProvider#measure(org.eclipse.swt.widgets.Event,
-	 *      java.lang.Object)
-	 */
-	protected void measure(Event event, Object element) {
-		// use native measuring
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.OwnerDrawLabelProvider#paint(org.eclipse.swt.widgets.Event,
-	 *      java.lang.Object)
-	 */
-	protected void paint(Event event, Object element) {
-		if (!isOwnerDrawEnabled())
-			return;
-		
-		ViewerCell cell= getViewerCell(event, element);
-
-		boolean applyColors = useColors(event);
-		GC gc = event.gc;
-		// remember colors to restore the GC later
-		Color oldForeground = gc.getForeground();
-		Color oldBackground = gc.getBackground();
-		
-		if (applyColors) {
-			Color foreground= cell.getForeground();
-			if (foreground != null) {
-				gc.setForeground(foreground);
-			}
-			
-			Color background= cell.getBackground();
-			if (background != null) {
-				gc.setBackground(background);
-			}
-		}
-
-		Image image = cell.getImage();
-		if (image != null) {
-			Rectangle imageBounds = cell.getImageBounds();
-			if (imageBounds != null) {
-				Rectangle bounds = image.getBounds();
-	
-				// center the image in the given space
-				int x = imageBounds.x
-						+ Math.max(0, (imageBounds.width - bounds.width) / 2);
-				int y = imageBounds.y
-						+ Math.max(0, (imageBounds.height - bounds.height) / 2);
-				gc.drawImage(image, x, y);
-			}
-		}
-
-		TextLayout textLayout = getTextLayoutForInfo(event.display, cell, applyColors);
-
-		Rectangle textBounds = cell.getTextBounds();
-		if (textBounds != null) {
-			Rectangle layoutBounds = textLayout.getBounds();
-	
-			int x = textBounds.x;
-			int y = textBounds.y
-					+ Math.max(0, (textBounds.height - layoutBounds.height) / 2);
-	
-			textLayout.draw(gc, x, y);
-		}
-
-		if (drawFocus(event)) {
-			Rectangle focusBounds = cell.getViewerRow().getBounds();
-			gc.drawFocus(focusBounds.x, focusBounds.y, focusBounds.width,
-					focusBounds.height);
-		}
-		
-		if (applyColors) {
-			gc.setForeground(oldForeground);
-			gc.setBackground(oldBackground);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledString.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledString.java
deleted file mode 100644
index 0c2cfb5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StyledString.java
+++ /dev/null
@@ -1,509 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.preference.JFacePreferences;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.graphics.TextStyle;
-
-/**
- * A mutable string with styled ranges. All ranges mark substrings of the string
- * and do not overlap. Styles are applied using instances of {@link Styler} to
- * compute the result of {@link #getStyleRanges()}.
- * 
- * The styled string can be built in the following two ways:
- * <ul>
- * <li>new strings with stylers can be appended</li>
- * <li>stylers can by applied to ranges of the existing string</li>
- * </ul>
- * 
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * 
- * @since 3.4
- */
-public class StyledString {
-
-	/**
-	 * A styler will be asked to apply its styles to one ore more ranges in the
-	 * {@link StyledString}.
-	 * 
-	 */
-	public static abstract class Styler {
-
-		/**
-		 * Applies the styles represented by this object to the given textStyle.
-		 * 
-		 * @param textStyle
-		 *            the {@link TextStyle} to modify
-		 */
-		public abstract void applyStyles(TextStyle textStyle);
-	}
-
-	/**
-	 * A built-in styler using the {@link JFacePreferences#QUALIFIER_COLOR}
-	 * managed in the JFace color registry (See
-	 * {@link JFaceResources#getColorRegistry()}).
-	 */
-	public static final Styler QUALIFIER_STYLER = createColorRegistryStyler(
-			JFacePreferences.QUALIFIER_COLOR, null);
-
-	/**
-	 * A built-in styler using the {@link JFacePreferences#COUNTER_COLOR}
-	 * managed in the JFace color registry (See
-	 * {@link JFaceResources#getColorRegistry()}).
-	 */
-	public static final Styler COUNTER_STYLER = createColorRegistryStyler(
-			JFacePreferences.COUNTER_COLOR, null);
-
-	/**
-	 * A built-in styler using the {@link JFacePreferences#DECORATIONS_COLOR}
-	 * managed in the JFace color registry (See
-	 * {@link JFaceResources#getColorRegistry()}).
-	 */
-	public static final Styler DECORATIONS_STYLER = createColorRegistryStyler(
-			JFacePreferences.DECORATIONS_COLOR, null);
-
-	/**
-	 * Creates a styler that takes the given foreground and background colors
-	 * from the JFace color registry.
-	 * 
-	 * @param foregroundColorName
-	 *            the color name for the foreground color
-	 * @param backgroundColorName
-	 *            the color name for the background color
-	 * 
-	 * @return the created style
-	 */
-	public static Styler createColorRegistryStyler(String foregroundColorName,
-			String backgroundColorName) {
-		return new DefaultStyler(foregroundColorName, backgroundColorName);
-	}
-
-	private static final StyleRange[] EMPTY = new StyleRange[0];
-	private StringBuffer fBuffer;
-	private StyleRunList fStyleRuns;
-
-	/**
-	 * Creates an empty {@link StyledString}.
-	 */
-	public StyledString() {
-		fBuffer = new StringBuffer();
-		fStyleRuns = null;
-	}
-
-	/**
-	 * Creates an {@link StyledString} initialized with a string without
-	 * a style associated.
-	 * 
-	 * @param string
-	 *            the string
-	 */
-	public StyledString(String string) {
-		this(string, null);
-	}
-
-	/**
-	 * Creates an {@link StyledString} initialized with a string and a
-	 * style.
-	 * 
-	 * @param string
-	 *            the string
-	 * @param styler
-	 *            the styler for the string or <code>null</code> to not
-	 *            associated a styler.
-	 */
-	public StyledString(String string, Styler styler) {
-		this();
-		append(string, styler);
-	}
-
-	/**
-	 * Returns the string of this {@link StyledString}.
-	 * 
-	 * @return the current string of this {@link StyledString}.
-	 */
-	public String getString() {
-		return fBuffer.toString();
-	}
-	
-	/**
-	 * Returns the string of this {@link StyledString}.
-	 * 
-	 * @return the current string of this {@link StyledString}.
-	 */
-	public String toString() {
-		return getString();
-	}
-
-	/**
-	 * Returns the length of the string of this {@link StyledString}.
-	 * 
-	 * @return the length of the current string
-	 */
-	public int length() {
-		return fBuffer.length();
-	}
-
-	/**
-	 * Appends a string to the {@link StyledString}. The appended string
-	 * will have no associated styler.
-	 * 
-	 * @param string
-	 *            the string to append
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(String string) {
-		return append(string, null);
-	}
-	
-	/**
-	 * Appends the string representation of the given character array
-	 * to the {@link StyledString}. The appended
-	 * character array will have no associated styler.
-	 * 
-	 * @param chars
-	 *            the character array to append
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(char[] chars) {
-		return append(chars, null);
-	}
-
-	/**
-	 * Appends the string representation of the given character
-	 * to the {@link StyledString}. The appended
-	 * character will have no associated styler.
-	 * 
-	 * @param ch
-	 *            the character to append
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(char ch) {
-		return append(String.valueOf(ch), null);
-	}
-
-	/**
-	 * Appends a string with styles to the {@link StyledString}.
-	 * 
-	 * @param string
-	 *            the string to append
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(StyledString string) {
-		if (string.length() == 0) {
-			return this;
-		}
-
-		int offset = fBuffer.length();
-		fBuffer.append(string.toString());
-
-		List otherRuns = string.fStyleRuns;
-		if (otherRuns != null && !otherRuns.isEmpty()) {
-			for (int i = 0; i < otherRuns.size(); i++) {
-				StyleRun curr = (StyleRun) otherRuns.get(i);
-				if (i == 0 && curr.offset != 0) {
-					appendStyleRun(null, offset); // appended string will
-					// start with the default
-					// color
-				}
-				appendStyleRun(curr.style, offset + curr.offset);
-			}
-		} else {
-			appendStyleRun(null, offset); // appended string will start with
-			// the default color
-		}
-		return this;
-	}
-
-	/**
-	 * Appends the string representation of the given character
-	 * with a style to the {@link StyledString}. The
-	 * appended character will have the given style associated.
-	 * 
-	 * @param ch
-	 *            the character to append
-	 * @param styler
-	 *            the styler to use for styling the character to append or
-	 *            <code>null</code> if no styler should be associated with the
-	 *            appended character
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(char ch, Styler styler) {
-		return append(String.valueOf(ch), styler);
-	}
-
-	/**
-	 * Appends a string with a style to the {@link StyledString}. The
-	 * appended string will be styled using the given styler.
-	 * 
-	 * @param string
-	 *            the string to append
-	 * @param styler
-	 *            the styler to use for styling the string to append or
-	 *            <code>null</code> if no styler should be associated with the
-	 *            appended string.
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(String string, Styler styler) {
-		if (string.length() == 0)
-			return this;
-
-		int offset = fBuffer.length(); // the length before appending
-		fBuffer.append(string);
-		appendStyleRun(styler, offset);
-		return this;
-	}
-	
-	/**
-	 * Appends the string representation of the given character array
-	 * with a style to the {@link StyledString}. The
-	 * appended character array will be styled using the given styler.
-	 * 
-	 * @param chars
-	 *            the character array to append
-	 * @param styler
-	 *            the styler to use for styling the character array to append or
-	 *            <code>null</code> if no styler should be associated with the
-	 *            appended character array
-	 * @return returns a reference to this object
-	 */
-	public StyledString append(char[] chars, Styler styler) {
-		if (chars.length == 0)
-			return this;
-
-		int offset = fBuffer.length(); // the length before appending
-		fBuffer.append(chars);
-		appendStyleRun(styler, offset);
-		return this;
-	}
-
-	/**
-	 * Sets a styler to use for the given source range. The range must be
-	 * subrange of actual string of this {@link StyledString}. Stylers
-	 * previously set for that range will be overwritten.
-	 * 
-	 * @param offset
-	 *            the start offset of the range
-	 * @param length
-	 *            the length of the range
-	 * @param styler
-	 *            the styler to set
-	 * 
-	 * @throws StringIndexOutOfBoundsException
-	 *             if <code>start</code> is less than zero, or if offset plus
-	 *             length is greater than the length of this object.
-	 */
-	public void setStyle(int offset, int length, Styler styler) {
-		if (offset < 0 || offset + length > fBuffer.length()) {
-			throw new StringIndexOutOfBoundsException(
-					"Invalid offset (" + offset + ") or length (" + length + ")"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-		}
-		if (length == 0) {
-			return;
-		}
-		if (!hasRuns() || getLastRun().offset <= offset) {
-			appendStyleRun(styler, offset);
-			if (offset + length != fBuffer.length()) {
-				appendStyleRun(null, offset + length);
-			}
-			return;
-		}
-
-		int endRun = findRun(offset + length);
-		if (endRun >= 0) {
-			// run with the same end index, nothing to change
-		} else {
-			endRun = -(endRun + 1);
-			if (offset + length < fBuffer.length()) {
-				Styler prevStyle = endRun > 0 ? fStyleRuns.getRun(endRun - 1).style
-						: null;
-				fStyleRuns
-						.add(endRun, new StyleRun(offset + length, prevStyle));
-			}
-		}
-
-		int startRun = findRun(offset);
-		if (startRun >= 0) {
-			// run with the same start index
-			StyleRun styleRun = fStyleRuns.getRun(startRun);
-			styleRun.style = styler;
-		} else {
-			startRun = -(startRun + 1);
-
-			Styler prevStyle = startRun > 0 ? fStyleRuns.getRun(startRun - 1).style
-					: null;
-			if (isDifferentStyle(prevStyle, styler)
-					|| (startRun == 0 && styler != null)) {
-				fStyleRuns.add(startRun, new StyleRun(offset, styler));
-				endRun++; // endrun is moved one back
-			} else {
-				startRun--; // we use the previous
-			}
-		}
-		if (startRun + 1 < endRun) {
-			fStyleRuns.removeRange(startRun + 1, endRun);
-		}
-	}
-
-	/**
-	 * Returns an array of {@link StyleRange} resulting from applying all
-	 * associated stylers for this string builder.
-	 * 
-	 * @return an array of all {@link StyleRange} resulting from applying the
-	 *         stored stylers to this string.
-	 */
-	public StyleRange[] getStyleRanges() {
-		if (hasRuns()) {
-			ArrayList res = new ArrayList();
-
-			List styleRuns = getStyleRuns();
-			int offset = 0;
-			Styler style = null;
-			for (int i = 0; i < styleRuns.size(); i++) {
-				StyleRun curr = (StyleRun) styleRuns.get(i);
-				if (isDifferentStyle(curr.style, style)) {
-					if (curr.offset > offset && style != null) {
-						res.add(createStyleRange(offset, curr.offset, style));
-					}
-					offset = curr.offset;
-					style = curr.style;
-				}
-			}
-			if (fBuffer.length() > offset && style != null) {
-				res.add(createStyleRange(offset, fBuffer.length(), style));
-			}
-			return (StyleRange[]) res.toArray(new StyleRange[res.size()]);
-		}
-		return EMPTY;
-	}
-
-	private int findRun(int offset) {
-		// method assumes that fStyleRuns is not null
-		int low = 0;
-		int high = fStyleRuns.size() - 1;
-		while (low <= high) {
-			int mid = (low + high) / 2;
-			StyleRun styleRun = fStyleRuns.getRun(mid);
-			if (styleRun.offset < offset) {
-				low = mid + 1;
-			} else if (styleRun.offset > offset) {
-				high = mid - 1;
-			} else {
-				return mid; // key found
-			}
-		}
-		return -(low + 1); // key not found.
-	}
-
-	private StyleRange createStyleRange(int start, int end, Styler style) {
-		StyleRange styleRange = new StyleRange();
-		styleRange.start = start;
-		styleRange.length = end - start;
-		style.applyStyles(styleRange);
-		return styleRange;
-	}
-
-	private boolean hasRuns() {
-		return fStyleRuns != null && !fStyleRuns.isEmpty();
-	}
-
-	private void appendStyleRun(Styler style, int offset) {
-		StyleRun lastRun = getLastRun();
-		if (lastRun != null && lastRun.offset == offset) {
-			lastRun.style = style;
-			return;
-		}
-
-		if (lastRun == null && style != null || lastRun != null
-				&& isDifferentStyle(style, lastRun.style)) {
-			getStyleRuns().add(new StyleRun(offset, style));
-		}
-	}
-
-	private boolean isDifferentStyle(Styler style1, Styler style2) {
-		if (style1 == null) {
-			return style2 != null;
-		}
-		return !style1.equals(style2);
-	}
-
-	private StyleRun getLastRun() {
-		if (fStyleRuns == null || fStyleRuns.isEmpty()) {
-			return null;
-		}
-		return fStyleRuns.getRun(fStyleRuns.size() - 1);
-	}
-
-	private List getStyleRuns() {
-		if (fStyleRuns == null)
-			fStyleRuns = new StyleRunList();
-		return fStyleRuns;
-	}
-
-	private static class StyleRun {
-		public int offset;
-		public Styler style;
-
-		public StyleRun(int offset, Styler style) {
-			this.offset = offset;
-			this.style = style;
-		}
-
-		public String toString() {
-			return "Offset " + offset + ", style: " + style; //$NON-NLS-1$//$NON-NLS-2$
-		}
-	}
-
-	private static class StyleRunList extends ArrayList {
-		private static final long serialVersionUID = 123L;
-
-		public StyleRunList() {
-			super(3);
-		}
-
-		public StyleRun getRun(int index) {
-			return (StyleRun) get(index);
-		}
-
-		public void removeRange(int fromIndex, int toIndex) {
-			super.removeRange(fromIndex, toIndex);
-		}
-	}
-
-	private static class DefaultStyler extends Styler {
-		private final String fForegroundColorName;
-		private final String fBackgroundColorName;
-
-		public DefaultStyler(String foregroundColorName,
-				String backgroundColorName) {
-			fForegroundColorName = foregroundColorName;
-			fBackgroundColorName = backgroundColorName;
-		}
-
-		public void applyStyles(TextStyle textStyle) {
-			ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
-			if (fForegroundColorName != null) {
-				textStyle.foreground = colorRegistry.get(fForegroundColorName);
-			}
-			if (fBackgroundColorName != null) {
-				textStyle.background = colorRegistry.get(fBackgroundColorName);
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableColumnViewerLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableColumnViewerLabelProvider.java
deleted file mode 100644
index 2000b97..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableColumnViewerLabelProvider.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Shindl <tom.schindl@bestsolution.at> - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-
-/**
- * TableColumnViewerLabelProvider is the mapping from the table based providers
- * to the ViewerLabelProvider.
- * 
- * @since 3.3
- * @see ITableLabelProvider
- * @see ITableColorProvider
- * @see ITableFontProvider
- * 
- */
-class TableColumnViewerLabelProvider extends WrappedViewerLabelProvider {
-
-	private ITableLabelProvider tableLabelProvider;
-
-	private ITableColorProvider tableColorProvider;
-
-	private ITableFontProvider tableFontProvider;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param labelProvider
-	 *            instance of a table based label provider
-	 * @see ITableLabelProvider
-	 * @see ITableColorProvider
-	 * @see ITableFontProvider
-	 */
-	public TableColumnViewerLabelProvider(IBaseLabelProvider labelProvider) {
-		super(labelProvider);
-
-		if (labelProvider instanceof ITableLabelProvider)
-			tableLabelProvider = (ITableLabelProvider) labelProvider;
-
-		if (labelProvider instanceof ITableColorProvider)
-			tableColorProvider = (ITableColorProvider) labelProvider;
-
-		if (labelProvider instanceof ITableFontProvider)
-			tableFontProvider = (ITableFontProvider) labelProvider;
-	}
-
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.WrappedViewerLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
-	 */
-	public void update(ViewerCell cell) {
-
-		Object element = cell.getElement();
-		int index = cell.getColumnIndex();
-
-		if (tableLabelProvider == null) {
-			cell.setText(getLabelProvider().getText(element));
-			cell.setImage(getLabelProvider().getImage(element));
-		} else {
-			cell.setText(tableLabelProvider.getColumnText(element, index));
-			cell.setImage(tableLabelProvider.getColumnImage(element, index));
-		}
-
-		if (tableColorProvider == null) {
-			if (getColorProvider() != null) {
-				cell.setBackground(getColorProvider().getBackground(element));
-				cell.setForeground(getColorProvider().getForeground(element));
-			}
-
-		} else {
-			cell.setBackground(tableColorProvider
-					.getBackground(element, index));
-			cell.setForeground(tableColorProvider
-					.getForeground(element, index));
-
-		}
-
-		if (tableFontProvider == null) {
-			if (getFontProvider() != null)
-				cell.setFont(getFontProvider().getFont(element));
-		} else
-			cell.setFont(tableFontProvider.getFont(element, index));
-
-	}
-
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableLayout.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableLayout.java
deleted file mode 100644
index cdbf474..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableLayout.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Florian Priester - bug 106059
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-
-/**
- * A layout for a table. Call <code>addColumnData</code> to add columns.
- * The TableLayout {@link ColumnLayoutData} is only valid until the table
- * is resized. To keep the proportions constant when the table is resized 
- * see {@link TableColumnLayout}
- */
-public class TableLayout extends Layout {
-
-	/**
-	 * The number of extra pixels taken as horizontal trim by the table column.
-	 * To ensure there are N pixels available for the content of the column,
-	 * assign N+COLUMN_TRIM for the column width.
-	 * 
-	 * @since 3.1
-	 */
-	private static int COLUMN_TRIM;
-
-	static {
-		if ("win32".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			COLUMN_TRIM = 4;
-		} else if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			COLUMN_TRIM = 24;
-		} else {
-			COLUMN_TRIM = 3;
-		}
-	}
-
-	/**
-	 * The list of column layout data (element type:
-	 * <code>ColumnLayoutData</code>).
-	 */
-	private List columns = new ArrayList();
-
-	/**
-	 * Indicates whether <code>layout</code> has yet to be called.
-	 */
-	private boolean firstTime = true;
-
-	/**
-	 * Creates a new table layout.
-	 */
-	public TableLayout() {
-	}
-
-	/**
-	 * Adds a new column of data to this table layout.
-	 * 
-	 * @param data
-	 *            the column layout data
-	 */
-	public void addColumnData(ColumnLayoutData data) {
-		columns.add(data);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Layout.
-	 */
-	public Point computeSize(Composite c, int wHint, int hHint, boolean flush) {
-		if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-			return new Point(wHint, hHint);
-		}
-
-		Table table = (Table) c;
-		// To avoid recursions.
-		table.setLayout(null);
-		// Use native layout algorithm
-		Point result = table.computeSize(wHint, hHint, flush);
-		table.setLayout(this);
-
-		int width = 0;
-		int size = columns.size();
-		for (int i = 0; i < size; ++i) {
-			ColumnLayoutData layoutData = (ColumnLayoutData) columns.get(i);
-			if (layoutData instanceof ColumnPixelData) {
-				ColumnPixelData col = (ColumnPixelData) layoutData;
-				width += col.width;
-				if (col.addTrim) {
-					width += COLUMN_TRIM;
-				}
-			} else if (layoutData instanceof ColumnWeightData) {
-				ColumnWeightData col = (ColumnWeightData) layoutData;
-				width += col.minimumWidth;
-			} else {
-				Assert.isTrue(false, "Unknown column layout data");//$NON-NLS-1$
-			}
-		}
-		if (width > result.x) {
-			result.x = width;
-		}
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Layout.
-	 */
-	public void layout(Composite c, boolean flush) {
-		// Only do initial layout. Trying to maintain proportions when resizing
-		// is too hard,
-		// causes lots of widget flicker, causes scroll bars to appear and
-		// occasionally stick around (on Windows),
-		// requires hooking column resizing as well, and may not be what the
-		// user wants anyway.
-		if (!firstTime) {
-			return;
-		}
-
-		int width = c.getClientArea().width;
-
-		// XXX: Layout is being called with an invalid value the first time
-		// it is being called on Linux. This method resets the
-		// Layout to null so we make sure we run it only when
-		// the value is OK.
-		if (width <= 1) {
-			return;
-		}
-
-		Item[] tableColumns = getColumns(c);
-		int size = Math.min(columns.size(), tableColumns.length);
-		int[] widths = new int[size];
-		int fixedWidth = 0;
-		int numberOfWeightColumns = 0;
-		int totalWeight = 0;
-
-		// First calc space occupied by fixed columns
-		for (int i = 0; i < size; i++) {
-			ColumnLayoutData col = (ColumnLayoutData) columns.get(i);
-			if (col instanceof ColumnPixelData) {
-				ColumnPixelData cpd = (ColumnPixelData) col;
-				int pixels = cpd.width;
-				if (cpd.addTrim) {
-					pixels += COLUMN_TRIM;
-				}
-				widths[i] = pixels;
-				fixedWidth += pixels;
-			} else if (col instanceof ColumnWeightData) {
-				ColumnWeightData cw = (ColumnWeightData) col;
-				numberOfWeightColumns++;
-				// first time, use the weight specified by the column data,
-				// otherwise use the actual width as the weight
-				// int weight = firstTime ? cw.weight :
-				// tableColumns[i].getWidth();
-				int weight = cw.weight;
-				totalWeight += weight;
-			} else {
-				Assert.isTrue(false, "Unknown column layout data");//$NON-NLS-1$
-			}
-		}
-
-		// Do we have columns that have a weight
-		if (numberOfWeightColumns > 0) {
-			// Now distribute the rest to the columns with weight.
-			int rest = width - fixedWidth;
-			int totalDistributed = 0;
-			for (int i = 0; i < size; ++i) {
-				ColumnLayoutData col = (ColumnLayoutData) columns.get(i);
-				if (col instanceof ColumnWeightData) {
-					ColumnWeightData cw = (ColumnWeightData) col;
-					// calculate weight as above
-					// int weight = firstTime ? cw.weight :
-					// tableColumns[i].getWidth();
-					int weight = cw.weight;
-					int pixels = totalWeight == 0 ? 0 : weight * rest
-							/ totalWeight;
-					if (pixels < cw.minimumWidth) {
-						pixels = cw.minimumWidth;
-					}
-					totalDistributed += pixels;
-					widths[i] = pixels;
-				}
-			}
-
-			// Distribute any remaining pixels to columns with weight.
-			int diff = rest - totalDistributed;
-			for (int i = 0; diff > 0; ++i) {
-				if (i == size) {
-					i = 0;
-				}
-				ColumnLayoutData col = (ColumnLayoutData) columns.get(i);
-				if (col instanceof ColumnWeightData) {
-					++widths[i];
-					--diff;
-				}
-			}
-		}
-
-		firstTime = false;
-
-		for (int i = 0; i < size; i++) {
-			setWidth(tableColumns[i], widths[i]);
-		}
-	}
-
-	/**
-	 * Set the width of the item.
-	 * 
-	 * @param item
-	 * @param width
-	 */
-	private void setWidth(Item item, int width) {
-		if (item instanceof TreeColumn) {
-			((TreeColumn) item).setWidth(width);
-		} else {
-			((TableColumn) item).setWidth(width);
-		}
-
-	}
-
-	/**
-	 * Return the columns for the receiver.
-	 * 
-	 * @param composite
-	 * @return Item[]
-	 */
-	private Item[] getColumns(Composite composite) {
-		if (composite instanceof Tree) {
-			return ((Tree) composite).getColumns();
-		}
-		return ((Table) composite).getColumns();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableTreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableTreeViewer.java
deleted file mode 100644
index e8f0fb6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableTreeViewer.java
+++ /dev/null
@@ -1,859 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - bug 153993
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.custom.TableTreeEditor;
-import org.eclipse.swt.custom.TableTreeItem;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.TreeListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A concrete viewer based on a SWT <code>TableTree</code> control.
- * <p>
- * This class is not intended to be subclassed outside the viewer framework. It
- * is designed to be instantiated with a pre-existing SWT table tree control and
- * configured with a domain-specific content provider, label provider, element
- * filter (optional), and element sorter (optional).
- * </p>
- * <p>
- * Content providers for table tree viewers must implement the
- * <code>ITreeContentProvider</code> interface.
- * </p>
- * <p>
- * Label providers for table tree viewers must implement either the
- * <code>ITableLabelProvider</code> or the <code>ILabelProvider</code>
- * interface (see <code>TableTreeViewer.setLabelProvider</code> for more
- * details).
- * </p>
- * 
- * @deprecated As of 3.1 use {@link TreeViewer} instead
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class TableTreeViewer extends AbstractTreeViewer {
-	/**
-	 * Internal table viewer implementation.
-	 */
-	private TableTreeEditorImpl tableEditorImpl;
-
-	/**
-	 * This viewer's table tree control.
-	 */
-	private TableTree tableTree;
-
-	/**
-	 * This viewer's table tree editor.
-	 */
-	private TableTreeEditor tableTreeEditor;
-
-	/**
-	 * Copied from original TableEditorImpl and moved here since refactoring
-	 * completely wiped out the original implementation in 3.3
-	 * 
-	 * @since 3.1
-	 */
-	class TableTreeEditorImpl {
-
-		private CellEditor cellEditor;
-
-		private CellEditor[] cellEditors;
-
-		private ICellModifier cellModifier;
-
-		private String[] columnProperties;
-
-		private Item tableItem;
-
-		private int columnNumber;
-
-		private ICellEditorListener cellEditorListener;
-
-		private FocusListener focusListener;
-
-		private MouseListener mouseListener;
-
-		private int doubleClickExpirationTime;
-
-		private ColumnViewer viewer;
-
-		private TableTreeEditorImpl(ColumnViewer viewer) {
-			this.viewer = viewer;
-			initCellEditorListener();
-		}
-
-		/**
-		 * Returns this <code>TableViewerImpl</code> viewer
-		 * 
-		 * @return the viewer
-		 */
-		public ColumnViewer getViewer() {
-			return viewer;
-		}
-
-		private void activateCellEditor() {
-			if( cellEditors != null ) {
-				if( cellEditors[columnNumber] != null && cellModifier != null ) {
-					Object element = tableItem.getData();
-					String property = columnProperties[columnNumber];
-					
-					if( cellModifier.canModify(element, property) ) {
-						cellEditor = cellEditors[columnNumber];
-						
-						cellEditor.addListener(cellEditorListener);
-						
-						Object value = cellModifier.getValue(element, property);
-						cellEditor.setValue(value);
-						// Tricky flow of control here:
-						// activate() can trigger callback to cellEditorListener
-						// which will clear cellEditor
-						// so must get control first, but must still call activate()
-						// even if there is no control.
-						final Control control = cellEditor.getControl();
-						cellEditor.activate();
-						if (control == null) {
-							return;
-						}
-						setLayoutData(cellEditor.getLayoutData());
-						setEditor(control, tableItem, columnNumber);
-						cellEditor.setFocus();
-						if (focusListener == null) {
-							focusListener = new FocusAdapter() {
-								public void focusLost(FocusEvent e) {
-									applyEditorValue();
-								}
-							};
-						}
-						control.addFocusListener(focusListener);
-						mouseListener = new MouseAdapter() {
-							public void mouseDown(MouseEvent e) {
-								// time wrap?
-								// check for expiration of doubleClickTime
-								if (e.time <= doubleClickExpirationTime) {
-									control.removeMouseListener(mouseListener);
-									cancelEditing();
-									handleDoubleClickEvent();
-								} else if (mouseListener != null) {
-									control.removeMouseListener(mouseListener);
-								}
-							}
-						};
-						control.addMouseListener(mouseListener);
-					}
-				}
-			}
-		}
-
-		/**
-		 * Activate a cell editor for the given mouse position.
-		 */
-		private void activateCellEditor(MouseEvent event) {
-			if (tableItem == null || tableItem.isDisposed()) {
-				// item no longer exists
-				return;
-			}
-			int columnToEdit;
-			int columns = getColumnCount();
-			if (columns == 0) {
-				// If no TableColumn, Table acts as if it has a single column
-				// which takes the whole width.
-				columnToEdit = 0;
-			} else {
-				columnToEdit = -1;
-				for (int i = 0; i < columns; i++) {
-					Rectangle bounds = getBounds(tableItem, i);
-					if (bounds.contains(event.x, event.y)) {
-						columnToEdit = i;
-						break;
-					}
-				}
-				if (columnToEdit == -1) {
-					return;
-				}
-			}
-
-			columnNumber = columnToEdit;
-			activateCellEditor();
-		}
-
-		/**
-		 * Deactivates the currently active cell editor.
-		 */
-		public void applyEditorValue() {
-			CellEditor c = this.cellEditor;
-			if (c != null) {
-				// null out cell editor before calling save
-				// in case save results in applyEditorValue being re-entered
-				// see 1GAHI8Z: ITPUI:ALL - How to code event notification when
-				// using cell editor ?
-				this.cellEditor = null;
-				Item t = this.tableItem;
-				// don't null out table item -- same item is still selected
-				if (t != null && !t.isDisposed()) {
-					saveEditorValue(c, t);
-				}
-				setEditor(null, null, 0);
-				c.removeListener(cellEditorListener);
-				Control control = c.getControl();
-				if (control != null) {
-					if (mouseListener != null) {
-						control.removeMouseListener(mouseListener);
-					}
-					if (focusListener != null) {
-						control.removeFocusListener(focusListener);
-					}
-				}
-				c.deactivate();
-			}
-		}
-
-		/**
-		 * Cancels the active cell editor, without saving the value back to the
-		 * domain model.
-		 */
-		public void cancelEditing() {
-			if (cellEditor != null) {
-				setEditor(null, null, 0);
-				cellEditor.removeListener(cellEditorListener);
-				CellEditor oldEditor = cellEditor;
-				cellEditor = null;
-				oldEditor.deactivate();
-			}
-		}
-
-		/**
-		 * Start editing the given element.
-		 * 
-		 * @param element
-		 * @param column
-		 */
-		public void editElement(Object element, int column) {
-			if (cellEditor != null) {
-				applyEditorValue();
-			}
-
-			setSelection(new StructuredSelection(element), true);
-			Item[] selection = getSelection();
-			if (selection.length != 1) {
-				return;
-			}
-
-			tableItem = selection[0];
-
-			// Make sure selection is visible
-			showSelection();
-			columnNumber = column;
-			activateCellEditor();
-
-		}
-
-		/**
-		 * Return the array of CellEditors used in the viewer
-		 * 
-		 * @return the cell editors
-		 */
-		public CellEditor[] getCellEditors() {
-			return cellEditors;
-		}
-
-		/**
-		 * Get the cell modifier
-		 * 
-		 * @return the cell modifier
-		 */
-		public ICellModifier getCellModifier() {
-			return cellModifier;
-		}
-
-		/**
-		 * Return the properties for the column
-		 * 
-		 * @return the array of column properties
-		 */
-		public Object[] getColumnProperties() {
-			return columnProperties;
-		}
-
-		/**
-		 * Handles the mouse down event; activates the cell editor.
-		 * 
-		 * @param event
-		 *            the mouse event that should be handled
-		 */
-		public void handleMouseDown(MouseEvent event) {
-			if (event.button != 1) {
-				return;
-			}
-
-			if (cellEditor != null) {
-				applyEditorValue();
-			}
-
-			// activate the cell editor immediately. If a second mouseDown
-			// is received prior to the expiration of the doubleClick time then
-			// the cell editor will be deactivated and a doubleClick event will
-			// be processed.
-			//
-			doubleClickExpirationTime = event.time
-					+ Display.getCurrent().getDoubleClickTime();
-
-			Item[] items = getSelection();
-			// Do not edit if more than one row is selected.
-			if (items.length != 1) {
-				tableItem = null;
-				return;
-			}
-			tableItem = items[0];
-			
-			activateCellEditor(event);
-		}
-
-		private void initCellEditorListener() {
-			cellEditorListener = new ICellEditorListener() {
-				public void editorValueChanged(boolean oldValidState,
-						boolean newValidState) {
-					// Ignore.
-				}
-
-				public void cancelEditor() {
-					TableTreeEditorImpl.this.cancelEditing();
-				}
-
-				public void applyEditorValue() {
-					TableTreeEditorImpl.this.applyEditorValue();
-				}
-			};
-		}
-
-		/**
-		 * Return whether there is an active cell editor.
-		 * 
-		 * @return <code>true</code> if there is an active cell editor;
-		 *         otherwise <code>false</code> is returned.
-		 */
-		public boolean isCellEditorActive() {
-			return cellEditor != null;
-		}
-
-		/**
-		 * Saves the value of the currently active cell editor, by delegating to
-		 * the cell modifier.
-		 */
-		private void saveEditorValue(CellEditor cellEditor, Item tableItem) {
-			if( cellModifier != null ) {
-				if( ! cellEditor.isValueValid() ) {
-					// Do what????
-				}
-			}
-			String property = null;
-			
-			if( columnProperties != null && columnNumber < columnProperties.length ) {
-				property = columnProperties[columnNumber];
-			}
-			cellModifier.modify(tableItem, property, cellEditor.getValue());
-		}
-
-		/**
-		 * Set the cell editors
-		 * 
-		 * @param editors
-		 */
-		public void setCellEditors(CellEditor[] editors) {
-			this.cellEditors = editors;
-		}
-
-		/**
-		 * Set the cell modifier
-		 * 
-		 * @param modifier
-		 */
-		public void setCellModifier(ICellModifier modifier) {
-			this.cellModifier = modifier;
-		}
-
-		/**
-		 * Set the column properties
-		 * 
-		 * @param columnProperties
-		 */
-		public void setColumnProperties(String[] columnProperties) {
-			this.columnProperties = columnProperties;
-		}
-
-		Rectangle getBounds(Item item, int columnNumber) {
-			return ((TableTreeItem) item).getBounds(columnNumber);
-		}
-
-		int getColumnCount() {
-			// getColumnCount() should be a API in TableTree.
-			return getTableTree().getTable().getColumnCount();
-		}
-
-		Item[] getSelection() {
-			return getTableTree().getSelection();
-		}
-
-		void setEditor(Control w, Item item, int columnNumber) {
-			tableTreeEditor.setEditor(w, (TableTreeItem) item, columnNumber);
-		}
-
-		void setSelection(StructuredSelection selection, boolean b) {
-			TableTreeViewer.this.setSelection(selection, b);
-		}
-
-		void showSelection() {
-			getTableTree().showSelection();
-		}
-
-		void setLayoutData(CellEditor.LayoutData layoutData) {
-			tableTreeEditor.horizontalAlignment = layoutData.horizontalAlignment;
-			tableTreeEditor.grabHorizontal = layoutData.grabHorizontal;
-			tableTreeEditor.minimumWidth = layoutData.minimumWidth;
-		}
-
-		void handleDoubleClickEvent() {
-			Viewer viewer = getViewer();
-			fireDoubleClick(new DoubleClickEvent(viewer, viewer.getSelection()));
-			fireOpen(new OpenEvent(viewer, viewer.getSelection()));
-		}
-	}
-
-	/**
-	 * Creates a table tree viewer on the given table tree control. The viewer
-	 * has no input, no content provider, a default label provider, no sorter,
-	 * and no filters.
-	 * 
-	 * @param tree
-	 *            the table tree control
-	 */
-	public TableTreeViewer(TableTree tree) {
-		super();
-		tableTree = tree;
-		hookControl(tree);
-		tableTreeEditor = new TableTreeEditor(tableTree);
-		tableEditorImpl = new TableTreeEditorImpl(this);
-	}
-
-	/**
-	 * Creates a table tree viewer on a newly-created table tree control under
-	 * the given parent. The table tree control is created using the SWT style
-	 * bits <code>MULTI, H_SCROLL, V_SCROLL, and BORDER</code>. The viewer
-	 * has no input, no content provider, a default label provider, no sorter,
-	 * and no filters.
-	 * 
-	 * @param parent
-	 *            the parent control
-	 */
-	public TableTreeViewer(Composite parent) {
-		this(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-	}
-
-	/**
-	 * Creates a table tree viewer on a newly-created table tree control under
-	 * the given parent. The table tree control is created using the given SWT
-	 * style bits. The viewer has no input, no content provider, a default label
-	 * provider, no sorter, and no filters.
-	 * 
-	 * @param parent
-	 *            the parent control
-	 * @param style
-	 *            the SWT style bits
-	 */
-	public TableTreeViewer(Composite parent, int style) {
-		this(new TableTree(parent, style));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected void addTreeListener(Control c, TreeListener listener) {
-		((TableTree) c).addTreeListener(listener);
-	}
-
-	/**
-	 * Cancels a currently active cell editor. All changes already done in the
-	 * cell editor are lost.
-	 */
-	public void cancelEditing() {
-		tableEditorImpl.cancelEditing();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected void doUpdateItem(Item item, Object element) {
-		// update icon and label
-		// Similar code in TableTreeViewer.doUpdateItem()
-		IBaseLabelProvider prov = getLabelProvider();
-		ITableLabelProvider tprov = null;
-
-		if (prov instanceof ITableLabelProvider) {
-			tprov = (ITableLabelProvider) prov;
-		}
-
-		int columnCount = tableTree.getTable().getColumnCount();
-		TableTreeItem ti = (TableTreeItem) item;
-		// Also enter loop if no columns added. See 1G9WWGZ: JFUIF:WINNT -
-		// TableViewer with 0 columns does not work
-		for (int column = 0; column < columnCount || column == 0; column++) {
-			String text = "";//$NON-NLS-1$
-			Image image = null;
-			if (tprov != null) {
-				text = tprov.getColumnText(element, column);
-				image = tprov.getColumnImage(element, column);
-			} else {
-				if (column == 0) {
-					ViewerLabel updateLabel = new ViewerLabel(item.getText(),
-							item.getImage());
-					buildLabel(updateLabel, element);
-
-					// As it is possible for user code to run the event
-					// loop check here.
-					if (item.isDisposed()) {
-						unmapElement(element, item);
-						return;
-					}
-
-					text = updateLabel.getText();
-					image = updateLabel.getImage();
-				}
-			}
-
-			// Avoid setting text to null
-			if (text == null) {
-				text = ""; //$NON-NLS-1$
-			}
-
-			ti.setText(column, text);
-			// Apparently a problem to setImage to null if already null
-			if (ti.getImage(column) != image) {
-				ti.setImage(column, image);
-			}
-
-			getColorAndFontCollector().setFontsAndColors(element);
-			getColorAndFontCollector().applyFontsAndColors(ti);
-		}
-
-	}
-
-	/**
-	 * Starts editing the given element.
-	 * 
-	 * @param element
-	 *            the element
-	 * @param column
-	 *            the column number
-	 */
-	public void editElement(Object element, int column) {
-		tableEditorImpl.editElement(element, column);
-	}
-
-	/**
-	 * Returns the cell editors of this viewer.
-	 * 
-	 * @return the list of cell editors
-	 */
-	public CellEditor[] getCellEditors() {
-		return tableEditorImpl.getCellEditors();
-	}
-
-	/**
-	 * Returns the cell modifier of this viewer.
-	 * 
-	 * @return the cell modifier
-	 */
-	public ICellModifier getCellModifier() {
-		return tableEditorImpl.getCellModifier();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected Item[] getChildren(Widget o) {
-		if (o instanceof TableTreeItem) {
-			return ((TableTreeItem) o).getItems();
-		}
-		if (o instanceof TableTree) {
-			return ((TableTree) o).getItems();
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#getChild(org.eclipse.swt.widgets.Widget,
-	 *      int)
-	 */
-	protected Item getChild(Widget widget, int index) {
-		if (widget instanceof TableTreeItem) {
-			return ((TableTreeItem) widget).getItem(index);
-		}
-		if (widget instanceof TableTree) {
-			return ((TableTree) widget).getItem(index);
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the column properties of this viewer. The properties must
-	 * correspond with the columns of the table control. They are used to
-	 * identify the column in a cell modifier.
-	 * 
-	 * @return the list of column properties
-	 */
-	public Object[] getColumnProperties() {
-		return tableEditorImpl.getColumnProperties();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Viewer.
-	 */
-	public Control getControl() {
-		return tableTree;
-	}
-
-	/**
-	 * Returns the element with the given index from this viewer. Returns
-	 * <code>null</code> if the index is out of range.
-	 * <p>
-	 * This method is internal to the framework.
-	 * </p>
-	 * 
-	 * @param index
-	 *            the zero-based index
-	 * @return the element at the given index, or <code>null</code> if the
-	 *         index is out of range
-	 */
-	public Object getElementAt(int index) {
-		// XXX: Workaround for 1GBCSB1: SWT:WIN2000 - TableTree should have
-		// getItem(int index)
-		TableTreeItem i = tableTree.getItems()[index];
-		if (i != null) {
-			return i.getData();
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected boolean getExpanded(Item item) {
-		return ((TableTreeItem) item).getExpanded();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ColumnViewer#getItemAt(org.eclipse.swt.graphics.Point)
-	 */
-	protected Item getItemAt(Point p) {
-		return getTableTree().getTable().getItem(p);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected int getItemCount(Control widget) {
-		return ((TableTree) widget).getItemCount();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected int getItemCount(Item item) {
-		return ((TableTreeItem) item).getItemCount();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected org.eclipse.swt.widgets.Item[] getItems(
-			org.eclipse.swt.widgets.Item item) {
-		return ((TableTreeItem) item).getItems();
-	}
-
-	/**
-	 * The table tree viewer implementation of this <code>Viewer</code>
-	 * framework method returns the label provider, which in the case of table
-	 * tree viewers will be an instance of either
-	 * <code>ITableLabelProvider</code> or <code>ILabelProvider</code>. If
-	 * it is an <code>ITableLabelProvider</code>, then it provides a separate
-	 * label text and image for each column. If it is an
-	 * <code>ILabelProvider</code>, then it provides only the label text and
-	 * image for the first column, and any remaining columns are blank.
-	 */
-	public IBaseLabelProvider getLabelProvider() {
-		return super.getLabelProvider();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected Item getParentItem(Item item) {
-		return ((TableTreeItem) item).getParentItem();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected Item[] getSelection(Control widget) {
-		return ((TableTree) widget).getSelection();
-	}
-
-	/**
-	 * Returns this table tree viewer's table tree control.
-	 * 
-	 * @return the table tree control
-	 */
-	public TableTree getTableTree() {
-		return tableTree;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on AbstractTreeViewer.
-	 */
-	protected void hookControl(Control control) {
-		super.hookControl(control);
-		tableTree.getTable().addMouseListener(new MouseAdapter() {
-			public void mouseDown(MouseEvent e) {
-				/*
-				 * If user clicked on the [+] or [-], do not activate
-				 * CellEditor.
-				 */
-				// XXX: This code should not be here. SWT should either have
-				// support to see
-				// if the user clicked on the [+]/[-] or manage the table editor
-				// activation
-				org.eclipse.swt.widgets.TableItem[] items = tableTree
-						.getTable().getItems();
-				for (int i = 0; i < items.length; i++) {
-					Rectangle rect = items[i].getImageBounds(0);
-					if (rect.contains(e.x, e.y)) {
-						return;
-					}
-				}
-
-				tableEditorImpl.handleMouseDown(e);
-			}
-		});
-	}
-
-	/**
-	 * Returns whether there is an active cell editor.
-	 * 
-	 * @return <code>true</code> if there is an active cell editor, and
-	 *         <code>false</code> otherwise
-	 */
-	public boolean isCellEditorActive() {
-		return tableEditorImpl.isCellEditorActive();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected Item newItem(Widget parent, int flags, int ix) {
-		TableTreeItem item;
-		if (ix >= 0) {
-			if (parent instanceof TableTreeItem) {
-				item = new TableTreeItem((TableTreeItem) parent, flags, ix);
-			} else {
-				item = new TableTreeItem((TableTree) parent, flags, ix);
-			}
-		} else {
-			if (parent instanceof TableTreeItem) {
-				item = new TableTreeItem((TableTreeItem) parent, flags);
-			} else {
-				item = new TableTreeItem((TableTree) parent, flags);
-			}
-		}
-		return item;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void removeAll(Control widget) {
-		((TableTree) widget).removeAll();
-	}
-
-	/**
-	 * Sets the cell editors of this table viewer.
-	 * 
-	 * @param editors
-	 *            the list of cell editors
-	 */
-	public void setCellEditors(CellEditor[] editors) {
-		tableEditorImpl.setCellEditors(editors);
-	}
-
-	/**
-	 * Sets the cell modifier of this table viewer.
-	 * 
-	 * @param modifier
-	 *            the cell modifier
-	 */
-	public void setCellModifier(ICellModifier modifier) {
-		tableEditorImpl.setCellModifier(modifier);
-	}
-
-	/**
-	 * Sets the column properties of this table viewer. The properties must
-	 * correspond with the columns of the table control. They are used to
-	 * identify the column in a cell modifier.
-	 * 
-	 * @param columnProperties
-	 *            the list of column properties
-	 */
-	public void setColumnProperties(String[] columnProperties) {
-		tableEditorImpl.setColumnProperties(columnProperties);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void setExpanded(Item node, boolean expand) {
-		((TableTreeItem) node).setExpanded(expand);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void setSelection(List items) {
-		TableTreeItem[] newItems = new TableTreeItem[items.size()];
-		items.toArray(newItems);
-		getTableTree().setSelection(newItems);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void showItem(Item item) {
-		getTableTree().showItem((TableTreeItem) item);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewer.java
deleted file mode 100644
index 3013c6c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewer.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - concept of ViewerRow,
- *                                                 fix for 159597, refactoring (bug 153993),
- *                                                 widget-independency (bug 154329), fix for 187826, 191468
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A concrete viewer based on a SWT <code>Table</code> control.
- * <p>
- * This class is not intended to be subclassed outside the viewer framework. It
- * is designed to be instantiated with a pre-existing SWT table control and
- * configured with a domain-specific content provider, table label provider,
- * element filter (optional), and element sorter (optional).
- * </p>
- * <p>
- * Label providers for table viewers must implement either the
- * <code>ITableLabelProvider</code> or the <code>ILabelProvider</code> interface
- * (see <code>TableViewer.setLabelProvider</code> for more details).
- * </p>
- * <p>
- * As of 3.1 the TableViewer now supports the SWT.VIRTUAL flag. If the
- * underlying table is SWT.VIRTUAL, the content provider may implement {@link
- * ILazyContentProvider} instead of {@link IStructuredContentProvider} . Note
- * that in this case, the viewer does not support sorting or filtering. Also
- * note that in this case, the Widget based APIs may return null if the element
- * is not specified or not created yet.
- * </p>
- * <p>
- * Users of SWT.VIRTUAL should also avoid using getItems() from the Table within
- * the TreeViewer as this does not necessarily generate a callback for the
- * TreeViewer to populate the items. It also has the side effect of creating all
- * of the items thereby eliminating the performance improvements of SWT.VIRTUAL.
- * </p>
- * <p>
- * Users setting up an editable table with more than 1 column <b>have</b> to pass the
- * SWT.FULL_SELECTION style bit
- * </p>
- * 
- * @see SWT#VIRTUAL
- * @see #doFindItem(Object)
- * @see #internalRefresh(Object, boolean)
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class TableViewer extends AbstractTableViewer {
-	/**
-	 * This viewer's table control.
-	 */
-	private Table table;
-
-	/**
-	 * The cached row which is reused all over
-	 */
-	private TableViewerRow cachedRow;
-
-	/**
-	 * Creates a table viewer on a newly-created table control under the given
-	 * parent. The table control is created using the SWT style bits
-	 * <code>MULTI, H_SCROLL, V_SCROLL,</code> and <code>BORDER</code>. The
-	 * viewer has no input, no content provider, a default label provider, no
-	 * sorter, and no filters. The table has no columns.
-	 * 
-	 * @param parent
-	 * 		the parent control
-	 */
-	public TableViewer(Composite parent) {
-		this(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-	}
-
-	/**
-	 * Creates a table viewer on a newly-created table control under the given
-	 * parent. The table control is created using the given style bits. The
-	 * viewer has no input, no content provider, a default label provider, no
-	 * sorter, and no filters. The table has no columns.
-	 * 
-	 * @param parent
-	 * 		the parent control
-	 * @param style
-	 * 		SWT style bits
-	 */
-	public TableViewer(Composite parent, int style) {
-		this(new Table(parent, style));
-	}
-
-	/**
-	 * Creates a table viewer on the given table control. The viewer has no
-	 * input, no content provider, a default label provider, no sorter, and no
-	 * filters.
-	 * 
-	 * @param table
-	 * 		the table control
-	 */
-	public TableViewer(Table table) {
-		this.table = table;
-		hookControl(table);
-	}
-
-	public Control getControl() {
-		return table;
-	}
-
-	/**
-	 * Returns this table viewer's table control.
-	 * 
-	 * @return the table control
-	 */
-	public Table getTable() {
-		return table;
-	}
-
-	protected ColumnViewerEditor createViewerEditor() {
-		return new TableViewerEditor(this, null,
-				new ColumnViewerEditorActivationStrategy(this),
-				ColumnViewerEditor.DEFAULT);
-	}
-
-	/**
-	 * <p>
-	 * Sets a new selection for this viewer and optionally makes it visible. The
-	 * TableViewer implementation of this method is inefficient for the
-	 * ILazyContentProvider as lookup is done by indices rather than elements
-	 * and may require population of the entire table in worse case.
-	 * </p>
-	 * <p>
-	 * Use Table#setSelection(int[] indices) and Table#showSelection() if you
-	 * wish to set selection more efficiently when using a ILazyContentProvider.
-	 * </p>
-	 * 
-	 * @param selection
-	 * 		the new selection
-	 * @param reveal
-	 * 		<code>true</code> if the selection is to be made visible, and
-	 * 		<code>false</code> otherwise
-	 * @see Table#setSelection(int[])
-	 * @see Table#showSelection()
-	 */
-	public void setSelection(ISelection selection, boolean reveal) {
-		super.setSelection(selection, reveal);
-	}
-
-	protected ViewerRow getViewerRowFromItem(Widget item) {
-		if (cachedRow == null) {
-			cachedRow = new TableViewerRow((TableItem) item);
-		} else {
-			cachedRow.setItem((TableItem) item);
-		}
-
-		return cachedRow;
-	}
-
-	/**
-	 * Create a new row with style at index
-	 * 
-	 * @param style
-	 * @param rowIndex
-	 * @return ViewerRow
-	 * @since 3.3
-	 */
-	protected ViewerRow internalCreateNewRowPart(int style, int rowIndex) {
-		TableItem item;
-
-		if (rowIndex >= 0) {
-			item = new TableItem(table, style, rowIndex);
-		} else {
-			item = new TableItem(table, style);
-		}
-
-		return getViewerRowFromItem(item);
-	}
-
-	protected Item getItemAt(Point p) {
-		TableItem[] selection = table.getSelection();
-
-		if (selection.length == 1) {
-			int columnCount = table.getColumnCount();
-
-			for (int i = 0; i < columnCount; i++) {
-				if (selection[0].getBounds(i).contains(p)) {
-					return selection[0];
-				}
-			}
-		}
-
-		return table.getItem(p);
-	}
-
-	// Methods to provide widget independency
-
-	protected int doGetItemCount() {
-		return table.getItemCount();
-	}
-
-	protected int doIndexOf(Item item) {
-		return table.indexOf((TableItem) item);
-	}
-
-	protected void doSetItemCount(int count) {
-		table.setItemCount(count);
-	}
-
-	protected Item[] doGetItems() {
-		return table.getItems();
-	}
-
-	protected int doGetColumnCount() {
-		return table.getColumnCount();
-	}
-
-	protected Widget doGetColumn(int index) {
-		return table.getColumn(index);
-	}
-
-	protected Item doGetItem(int index) {
-		return table.getItem(index);
-	}
-
-	protected Item[] doGetSelection() {
-		return table.getSelection();
-	}
-
-	protected int[] doGetSelectionIndices() {
-		return table.getSelectionIndices();
-	}
-
-	protected void doClearAll() {
-		table.clearAll();
-	}
-
-	protected void doResetItem(Item item) {
-		TableItem tableItem = (TableItem) item;
-		int columnCount = Math.max(1, table.getColumnCount());
-		for (int i = 0; i < columnCount; i++) {
-			tableItem.setText(i, ""); //$NON-NLS-1$
-			if (tableItem.getImage(i) != null) {
-				tableItem.setImage(i, null);
-			}
-		}
-	}
-
-	protected void doRemove(int start, int end) {
-		table.remove(start, end);
-	}
-
-	protected void doRemoveAll() {
-		table.removeAll();
-	}
-
-	protected void doRemove(int[] indices) {
-		table.remove(indices);
-	}
-
-	protected void doShowItem(Item item) {
-		table.showItem((TableItem) item);
-	}
-
-	protected void doDeselectAll() {
-		table.deselectAll();
-	}
-
-	protected void doSetSelection(Item[] items) {
-		Assert.isNotNull(items, "Items-Array can not be null"); //$NON-NLS-1$
-
-		TableItem[] t = new TableItem[items.length];
-		System.arraycopy(items, 0, t, 0, t.length);
-
-		table.setSelection(t);
-	}
-
-	protected void doShowSelection() {
-		table.showSelection();
-	}
-
-	protected void doSetSelection(int[] indices) {
-		table.setSelection(indices);
-	}
-
-	protected void doClear(int index) {
-		table.clear(index);
-	}
-
-	protected void doSelect(int[] indices) {
-		table.select(indices);
-	}
-
-	/**
-	 * Refreshes this viewer starting with the given element. Labels are updated
-	 * as described in <code>refresh(boolean updateLabels)</code>. The methods
-	 * attempts to preserve the selection.
-	 * <p>
-	 * Unlike the <code>update</code> methods, this handles structural changes
-	 * to the given element (e.g. addition or removal of children). If only the
-	 * given element needs updating, it is more efficient to use the
-	 * <code>update</code> methods.
-	 * </p>
-	 * 
-	 * <p>
-	 * Subclasses who can provide this feature can open this method for the
-	 * public
-	 * </p>
-	 * 
-	 * @param element
-	 * 		the element
-	 * @param updateLabels
-	 * 		<code>true</code> to update labels for existing elements,
-	 * 		<code>false</code> to only update labels as needed, assuming that labels
-	 * 		for existing elements are unchanged.
-	 * @param reveal
-	 * 		<code>true</code> to make the preserved selection visible afterwards
-	 * 
-	 * @since 3.3
-	 */
-	public void refresh(final Object element, final boolean updateLabels,
-			boolean reveal) {
-		if (checkBusy())
-			return;
-
-		if (isCellEditorActive()) {
-			cancelEditing();
-		}
-
-		preservingSelection(new Runnable() {
-			public void run() {
-				internalRefresh(element, updateLabels);
-			}
-		}, reveal);
-	}
-
-	/**
-	 * Refreshes this viewer with information freshly obtained from this
-	 * viewer's model. If <code>updateLabels</code> is <code>true</code> then
-	 * labels for otherwise unaffected elements are updated as well. Otherwise,
-	 * it assumes labels for existing elements are unchanged, and labels are
-	 * only obtained as needed (for example, for new elements).
-	 * <p>
-	 * Calling <code>refresh(true)</code> has the same effect as
-	 * <code>refresh()</code>.
-	 * <p>
-	 * Note that the implementation may still obtain labels for existing
-	 * elements even if <code>updateLabels</code> is false. The intent is simply
-	 * to allow optimization where possible.
-	 * 
-	 * @param updateLabels
-	 * 		<code>true</code> to update labels for existing elements,
-	 * 		<code>false</code> to only update labels as needed, assuming that labels
-	 * 		for existing elements are unchanged.
-	 * @param reveal
-	 * 		<code>true</code> to make the preserved selection visible afterwards
-	 * 
-	 * @since 3.3
-	 */
-	public void refresh(boolean updateLabels, boolean reveal) {
-		refresh(getRoot(), updateLabels, reveal);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerColumn.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerColumn.java
deleted file mode 100644
index 814634c..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerColumn.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Tom Schindl and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Tom Schindl - initial API and implementation
- *     Boris Bokowski (IBM Corporation) - Javadoc improvements
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-
-/**
- * ViewerColumn implementation for TableViewer to enable column-specific label
- * providers and editing support.
- * 
- * @since 3.3
- */
-public final class TableViewerColumn extends ViewerColumn {
-	private TableColumn column;
-
-	/**
-	 * Creates a new viewer column for the given {@link TableViewer} on a new
-	 * {@link TableColumn} with the given style bits. The column is added at the
-	 * end of the list of columns.
-	 * 
-	 * @param viewer
-	 *            the table viewer to which this column belongs
-	 * @param style
-	 *            the style used to create the column, for applicable style bits
-	 *            see {@link TableColumn}
-	 * @see TableColumn#TableColumn(Table, int)
-	 */
-	public TableViewerColumn(TableViewer viewer, int style) {
-		this(viewer, style, -1);
-	}
-
-	/**
-	 * Creates a new viewer column for the given {@link TableViewer} on a new
-	 * {@link TableColumn} with the given style bits. The column is inserted at
-	 * the given index into the list of columns.
-	 * 
-	 * @param viewer
-	 *            the table viewer to which this column belongs
-	 * @param style
-	 *            the style used to create the column, for applicable style bits
-	 *            see {@link TableColumn}
-	 * @param index
-	 *            the index at which to place the newly created column
-	 * @see TableColumn#TableColumn(Table, int, int)
-	 */
-	public TableViewerColumn(TableViewer viewer, int style, int index) {
-		this(viewer, createColumn(viewer.getTable(), style, index));
-	}
-
-	/**
-	 * Creates a new viewer column for the given {@link TableViewer} on the given
-	 * {@link TableColumn}.
-	 * 
-	 * @param viewer
-	 *            the table viewer to which this column belongs
-	 * @param column
-	 *            the underlying table column
-	 */
-	public TableViewerColumn(TableViewer viewer, TableColumn column) {
-		super(viewer, column);
-		this.column = column;
-	}
-	
-	private static TableColumn createColumn(Table table, int style, int index) {
-		if (index >= 0) {
-			return new TableColumn(table, style, index);
-		}
-
-		return new TableColumn(table, style);
-	}
-
-	/**
-	 * @return the underlying SWT table column
-	 */
-	public TableColumn getColumn() {
-		return column;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerEditor.java
deleted file mode 100644
index f0a9683..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerEditor.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                                 fixes in bug 198665, 200731
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.CellEditor.LayoutData;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableEditor;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-
-/**
- * This is an editor-implementation for {@link Table}
- *
- * @since 3.3
- *
- */
-public final class TableViewerEditor extends ColumnViewerEditor {
-	/**
-	 * This viewer's table editor.
-	 */
-	private TableEditor tableEditor;
-
-	private SWTFocusCellManager focusCellManager;
-
-	/**
-	 * @param viewer
-	 *            the viewer the editor is attached to
-	 * @param focusCellManager
-	 *            the cell focus manager if one used or <code>null</code>
-	 * @param editorActivationStrategy
-	 *            the strategy used to decide about the editor activation
-	 * @param feature
-	 *            the feature mask
-	 */
-	TableViewerEditor(TableViewer viewer, SWTFocusCellManager focusCellManager,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		super(viewer, editorActivationStrategy, feature);
-		tableEditor = new TableEditor(viewer.getTable());
-		this.focusCellManager = focusCellManager;
-	}
-
-	/**
-	 * Create a customized editor with focusable cells
-	 *
-	 * @param viewer
-	 *            the viewer the editor is created for
-	 * @param focusCellManager
-	 *            the cell focus manager if one needed else <code>null</code>
-	 * @param editorActivationStrategy
-	 *            activation strategy to control if an editor activated
-	 * @param feature
-	 *            bit mask controlling the editor
-	 *            <ul>
-	 *            <li>{@link ColumnViewerEditor#DEFAULT}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_HORIZONTAL}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_VERTICAL}</li>
-	 *            </ul>
-	 * @see #create(TableViewer, ColumnViewerEditorActivationStrategy, int)
-	 */
-	public static void create(TableViewer viewer,
-			SWTFocusCellManager focusCellManager,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		TableViewerEditor editor = new TableViewerEditor(viewer,
-				focusCellManager, editorActivationStrategy, feature);
-		viewer.setColumnViewerEditor(editor);
-		if (focusCellManager != null) {
-			focusCellManager.init();
-		}
-	}
-
-	/**
-	 * Create a customized editor whose activation process is customized
-	 *
-	 * @param viewer
-	 *            the viewer the editor is created for
-	 * @param editorActivationStrategy
-	 *            activation strategy to control if an editor activated
-	 * @param feature
-	 *            bit mask controlling the editor
-	 *            <ul>
-	 *            <li>{@link ColumnViewerEditor#DEFAULT}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_HORIZONTAL}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_VERTICAL}</li>
-	 *            </ul>
-	 */
-	public static void create(TableViewer viewer,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		create(viewer, null, editorActivationStrategy, feature);
-	}
-
-	protected void setEditor(Control w, Item item, int columnNumber) {
-		tableEditor.setEditor(w, (TableItem) item, columnNumber);
-	}
-
-	protected void setLayoutData(LayoutData layoutData) {
-		tableEditor.grabHorizontal = layoutData.grabHorizontal;
-		tableEditor.horizontalAlignment = layoutData.horizontalAlignment;
-		tableEditor.minimumWidth = layoutData.minimumWidth;
-		tableEditor.verticalAlignment = layoutData.verticalAlignment;
-
-		if( layoutData.minimumHeight != SWT.DEFAULT ) {
-			tableEditor.minimumHeight = layoutData.minimumHeight;
-		}
-	}
-
-	public ViewerCell getFocusCell() {
-		if (focusCellManager != null) {
-			return focusCellManager.getFocusCell();
-		}
-
-		return super.getFocusCell();
-	}
-
-	protected void updateFocusCell(ViewerCell focusCell,
-			ColumnViewerEditorActivationEvent event) {
-		// Update the focus cell when we activated the editor with these 2
-		// events
-		if (event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
-				|| event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL) {
-
-			List l = getViewer().getSelectionFromWidget();
-
-			if (focusCellManager != null) {
-				focusCellManager.setFocusCell(focusCell);
-			}
-
-			if (!l.contains(focusCell.getElement())) {
-				getViewer().setSelection(
-						new StructuredSelection(focusCell.getElement()),true);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java
deleted file mode 100644
index 6fcb340..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerFocusCellManager.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                                 fix in bug: 210752
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.widgets.Table;
-
-/**
- * This class is responsible to provide the concept of cells for {@link Table}.
- * This concept is needed to provide features like editor activation with the
- * keyboard
- *
- * @since 3.3
- *
- */
-public class TableViewerFocusCellManager extends SWTFocusCellManager {
-	private static final CellNavigationStrategy TABLE_NAVIGATE = new CellNavigationStrategy();
-
-	/**
-	 * Create a new manager with a default navigation strategy:
-	 * <ul>
-	 * <li><code>SWT.ARROW_UP</code>: navigate to cell above</li>
-	 * <li><code>SWT.ARROW_DOWN</code>: navigate to cell below</li>
-	 * <li><code>SWT.ARROW_RIGHT</code>: navigate to next visible cell on
-	 * the right</li>
-	 * <li><code>SWT.ARROW_LEFT</code>: navigate to next visible cell on the
-	 * left</li>
-	 * </ul>
-	 *
-	 * @param viewer
-	 *            the viewer the manager is bound to
-	 * @param focusDrawingDelegate
-	 *            the delegate responsible to highlight selected cell
-	 */
-	public TableViewerFocusCellManager(TableViewer viewer,
-			FocusCellHighlighter focusDrawingDelegate) {
-		this(viewer, focusDrawingDelegate, TABLE_NAVIGATE);
-	}
-
-	/**
-	 * Create a new manager
-	 *
-	 * @param viewer
-	 *            the viewer the manager is bound to
-	 * @param focusDrawingDelegate
-	 *            the delegate responsible to highlight selected cell
-	 * @param navigationStrategy
-	 *            the strategy used to navigate the cells
-	 * @since 3.4
-	 */
-	public TableViewerFocusCellManager(TableViewer viewer,
-			FocusCellHighlighter focusDrawingDelegate,
-			CellNavigationStrategy navigationStrategy) {
-		super(viewer, focusDrawingDelegate, navigationStrategy);
-	}
-
-	ViewerCell getInitialFocusCell() {
-		Table table = (Table) getViewer().getControl();
-
-		if (! table.isDisposed() && table.getItemCount() > 0 && ! table.getItem(0).isDisposed()) {
-			return getViewer().getViewerRowFromItem(table.getItem(0))
-					.getCell(0);
-		}
-
-		return null;
-	}
-
-	public ViewerCell getFocusCell() {
-		ViewerCell cell = super.getFocusCell();
-		Table t = (Table) getViewer().getControl();
-
-		// It is possible that the selection has changed under the hood
-		if (cell != null) {
-			if (t.getSelection().length == 1
-					&& t.getSelection()[0] != cell.getItem()) {
-				setFocusCell(getViewer().getViewerRowFromItem(
-						t.getSelection()[0]).getCell(cell.getColumnIndex()));
-			}
-		}
-
-		return super.getFocusCell();
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerRow.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerRow.java
deleted file mode 100644
index 3c20a22..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerRow.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											 - fix in bug: 174355,195908,198035,215069,227421
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * TableViewerRow is the Table specific implementation of ViewerRow
- * @since 3.3
- *
- */
-public class TableViewerRow extends ViewerRow {
-	private TableItem item;
-
-	/**
-	 * Create a new instance of the receiver from item.
-	 * @param item
-	 */
-	TableViewerRow(TableItem item) {
-		this.item = item;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getBounds(int)
-	 */
-	public Rectangle getBounds(int columnIndex) {
-		return item.getBounds(columnIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getBounds()
-	 */
-	public Rectangle getBounds() {
-		return item.getBounds();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getItem()
-	 */
-	public Widget getItem() {
-		return item;
-	}
-
-	void setItem(TableItem item) {
-		this.item = item;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getColumnCount()
-	 */
-	public int getColumnCount() {
-		return item.getParent().getColumnCount();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getBackground(int)
-	 */
-	public Color getBackground(int columnIndex) {
-		return item.getBackground(columnIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getFont(int)
-	 */
-	public Font getFont(int columnIndex) {
-		return item.getFont(columnIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getForeground(int)
-	 */
-	public Color getForeground(int columnIndex) {
-		return item.getForeground(columnIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getImage(int)
-	 */
-	public Image getImage(int columnIndex) {
-		return item.getImage(columnIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getText(int)
-	 */
-	public String getText(int columnIndex) {
-		return item.getText(columnIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#setBackground(int, org.eclipse.swt.graphics.Color)
-	 */
-	public void setBackground(int columnIndex, Color color) {
-		item.setBackground(columnIndex, color);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#setFont(int, org.eclipse.swt.graphics.Font)
-	 */
-	public void setFont(int columnIndex, Font font) {
-		item.setFont(columnIndex, font);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#setForeground(int, org.eclipse.swt.graphics.Color)
-	 */
-	public void setForeground(int columnIndex, Color color) {
-		item.setForeground(columnIndex, color);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#setImage(int, org.eclipse.swt.graphics.Image)
-	 */
-	public void setImage(int columnIndex, Image image) {
-		Image oldImage = item.getImage(columnIndex);
-		if (oldImage != image) {
-			item.setImage(columnIndex,image);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#setText(int, java.lang.String)
-	 */
-	public void setText(int columnIndex, String text) {
-		item.setText(columnIndex, text == null ? "" : text); //$NON-NLS-1$
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getControl()
-	 */
-	public Control getControl() {
-		return item.getParent();
-	}
-
-	public ViewerRow getNeighbor(int direction, boolean sameLevel) {
-		if( direction == ViewerRow.ABOVE ) {
-			return getRowAbove();
-		} else if( direction == ViewerRow.BELOW ) {
-			return getRowBelow();
-		} else {
-			throw new IllegalArgumentException("Illegal value of direction argument."); //$NON-NLS-1$
-		}
-	}
-
-
-	private ViewerRow getRowAbove() {
-		int index = item.getParent().indexOf(item) - 1;
-
-		if( index >= 0 ) {
-			return new TableViewerRow(item.getParent().getItem(index));
-		}
-
-		return null;
-	}
-
-	private ViewerRow getRowBelow() {
-		int index = item.getParent().indexOf(item) + 1;
-
-		if( index < item.getParent().getItemCount() ) {
-			TableItem tmp = item.getParent().getItem(index);
-			//TODO NULL can happen in case of VIRTUAL => How do we deal with that
-			if( tmp != null ) {
-				return new TableViewerRow(tmp);
-			}
-		}
-
-		return null;
-	}
-
-	public TreePath getTreePath() {
-		return new TreePath(new Object[] {item.getData()});
-	}
-
-	public Object clone() {
-		return new TableViewerRow(item);
-	}
-
-	public Object getElement() {
-		return item.getData();
-	}
-
-	public int getVisualIndex(int creationIndex) {
-		int[] order = item.getParent().getColumnOrder();
-
-		for (int i = 0; i < order.length; i++) {
-			if (order[i] == creationIndex) {
-				return i;
-			}
-		}
-
-		return super.getVisualIndex(creationIndex);
-	}
-
-	public int getCreationIndex(int visualIndex) {
-		if( item != null && ! item.isDisposed() && hasColumns() && isValidOrderIndex(visualIndex) ) {
-			return item.getParent().getColumnOrder()[visualIndex];
-		}
-		return super.getCreationIndex(visualIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getTextBounds(int)
-	 */
-	public Rectangle getTextBounds(int index) {
-		return item.getTextBounds(index);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getImageBounds(int)
-	 */
-	public Rectangle getImageBounds(int index) {
-		return item.getImageBounds(index);
-	}
-
-	private boolean hasColumns() {
-		return this.item.getParent().getColumnCount() != 0;
-	}
-
-	private boolean isValidOrderIndex(int currentIndex) {
-		return currentIndex < this.item.getParent().getColumnOrder().length;
-	}
-	
-	int getWidth(int columnIndex) {
-		return item.getParent().getColumn(columnIndex).getWidth();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TextCellEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TextCellEditor.java
deleted file mode 100644
index 152b52f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TextCellEditor.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.text.MessageFormat;	// Not using ICU to support standalone JFace scenario
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-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.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * A cell editor that manages a text entry field.
- * The cell editor's value is the text string itself.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class TextCellEditor extends CellEditor {
-
-    /**
-     * The text control; initially <code>null</code>.
-     */
-    protected Text text;
-
-    private ModifyListener modifyListener;
-
-    /**
-     * State information for updating action enablement
-     */
-    private boolean isSelection = false;
-
-    private boolean isDeleteable = false;
-
-    private boolean isSelectable = false;
-
-    /**
-     * Default TextCellEditor style
-     * specify no borders on text widget as cell outline in table already
-     * provides the look of a border.
-     */
-    private static final int defaultStyle = SWT.SINGLE;
-
-    /**
-     * Creates a new text string cell editor with no control
-     * The cell editor value is the string itself, which is initially the empty
-     * string. Initially, the cell editor has no cell validator.
-     * 
-     * @since 2.1
-     */
-    public TextCellEditor() {
-        setStyle(defaultStyle);
-    }
-
-    /**
-     * Creates a new text string cell editor parented under the given control.
-     * The cell editor value is the string itself, which is initially the empty string. 
-     * Initially, the cell editor has no cell validator.
-     *
-     * @param parent the parent control
-     */
-    public TextCellEditor(Composite parent) {
-        this(parent, defaultStyle);
-    }
-
-    /**
-     * Creates a new text string cell editor parented under the given control.
-     * The cell editor value is the string itself, which is initially the empty string. 
-     * Initially, the cell editor has no cell validator.
-     *
-     * @param parent the parent control
-     * @param style the style bits
-     * @since 2.1
-     */
-    public TextCellEditor(Composite parent, int style) {
-        super(parent, style);
-    }
-
-    /**
-     * Checks to see if the "deletable" state (can delete/
-     * nothing to delete) has changed and if so fire an
-     * enablement changed notification.
-     */
-    private void checkDeleteable() {
-        boolean oldIsDeleteable = isDeleteable;
-        isDeleteable = isDeleteEnabled();
-        if (oldIsDeleteable != isDeleteable) {
-            fireEnablementChanged(DELETE);
-        }
-    }
-
-    /**
-     * Checks to see if the "selectable" state (can select)
-     * has changed and if so fire an enablement changed notification.
-     */
-    private void checkSelectable() {
-        boolean oldIsSelectable = isSelectable;
-        isSelectable = isSelectAllEnabled();
-        if (oldIsSelectable != isSelectable) {
-            fireEnablementChanged(SELECT_ALL);
-        }
-    }
-
-    /**
-     * Checks to see if the selection state (selection /
-     * no selection) has changed and if so fire an
-     * enablement changed notification.
-     */
-    private void checkSelection() {
-        boolean oldIsSelection = isSelection;
-        isSelection = text.getSelectionCount() > 0;
-        if (oldIsSelection != isSelection) {
-            fireEnablementChanged(COPY);
-            fireEnablementChanged(CUT);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    protected Control createControl(Composite parent) {
-        text = new Text(parent, getStyle());
-        text.addSelectionListener(new SelectionAdapter() {
-            public void widgetDefaultSelected(SelectionEvent e) {
-                handleDefaultSelection(e);
-            }
-        });
-        text.addKeyListener(new KeyAdapter() {
-            // hook key pressed - see PR 14201  
-            public void keyPressed(KeyEvent e) {
-                keyReleaseOccured(e);
-
-                // as a result of processing the above call, clients may have
-                // disposed this cell editor
-                if ((getControl() == null) || getControl().isDisposed()) {
-					return;
-				}
-                checkSelection(); // see explanation below
-                checkDeleteable();
-                checkSelectable();
-            }
-        });
-        text.addTraverseListener(new TraverseListener() {
-            public void keyTraversed(TraverseEvent e) {
-                if (e.detail == SWT.TRAVERSE_ESCAPE
-                        || e.detail == SWT.TRAVERSE_RETURN) {
-                    e.doit = false;
-                }
-            }
-        });
-        // We really want a selection listener but it is not supported so we
-        // use a key listener and a mouse listener to know when selection changes
-        // may have occurred
-        text.addMouseListener(new MouseAdapter() {
-            public void mouseUp(MouseEvent e) {
-                checkSelection();
-                checkDeleteable();
-                checkSelectable();
-            }
-        });
-        text.addFocusListener(new FocusAdapter() {
-            public void focusLost(FocusEvent e) {
-                TextCellEditor.this.focusLost();
-            }
-        });
-        text.setFont(parent.getFont());
-        text.setBackground(parent.getBackground());
-        text.setText("");//$NON-NLS-1$
-        text.addModifyListener(getModifyListener());
-        return text;
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of
-     * this <code>CellEditor</code> framework method returns
-     * the text string.
-     *
-     * @return the text string
-     */
-    protected Object doGetValue() {
-        return text.getText();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on CellEditor.
-     */
-    protected void doSetFocus() {
-        if (text != null) {
-            text.selectAll();
-            text.setFocus();
-            checkSelection();
-            checkDeleteable();
-            checkSelectable();
-        }
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of
-     * this <code>CellEditor</code> framework method accepts
-     * a text string (type <code>String</code>).
-     *
-     * @param value a text string (type <code>String</code>)
-     */
-    protected void doSetValue(Object value) {
-        Assert.isTrue(text != null && (value instanceof String));
-        text.removeModifyListener(getModifyListener());
-        text.setText((String) value);
-        text.addModifyListener(getModifyListener());
-    }
-
-    /**
-     * Processes a modify event that occurred in this text cell editor.
-     * This framework method performs validation and sets the error message
-     * accordingly, and then reports a change via <code>fireEditorValueChanged</code>.
-     * Subclasses should call this method at appropriate times. Subclasses
-     * may extend or reimplement.
-     *
-     * @param e the SWT modify event
-     */
-    protected void editOccured(ModifyEvent e) {
-        String value = text.getText();
-        if (value == null) {
-			value = "";//$NON-NLS-1$
-		}
-        Object typedValue = value;
-        boolean oldValidState = isValueValid();
-        boolean newValidState = isCorrect(typedValue);
-        if (typedValue == null && newValidState) {
-			Assert.isTrue(false,
-                    "Validator isn't limiting the cell editor's type range");//$NON-NLS-1$
-		}
-        if (!newValidState) {
-            // try to insert the current value into the error message.
-            setErrorMessage(MessageFormat.format(getErrorMessage(),
-                    new Object[] { value }));
-        }
-        valueChanged(oldValidState, newValidState);
-    }
-
-    /**
-     * Since a text editor field is scrollable we don't
-     * set a minimumSize.
-     */
-    public LayoutData getLayoutData() {
-        return new LayoutData();
-    }
-
-    /**
-     * Return the modify listener.
-     */
-    private ModifyListener getModifyListener() {
-        if (modifyListener == null) {
-            modifyListener = new ModifyListener() {
-                public void modifyText(ModifyEvent e) {
-                    editOccured(e);
-                }
-            };
-        }
-        return modifyListener;
-    }
-
-    /**
-     * Handles a default selection event from the text control by applying the editor
-     * value and deactivating this cell editor.
-     * 
-     * @param event the selection event
-     * 
-     * @since 3.0
-     */
-    protected void handleDefaultSelection(SelectionEvent event) {
-        // same with enter-key handling code in keyReleaseOccured(e);
-        fireApplyEditorValue();
-        deactivate();
-    }
-
-    /**
-     * The <code>TextCellEditor</code>  implementation of this 
-     * <code>CellEditor</code> method returns <code>true</code> if 
-     * the current selection is not empty.
-     */
-    public boolean isCopyEnabled() {
-        if (text == null || text.isDisposed()) {
-			return false;
-		}
-        return text.getSelectionCount() > 0;
-    }
-
-    /**
-     * The <code>TextCellEditor</code>  implementation of this 
-     * <code>CellEditor</code> method returns <code>true</code> if 
-     * the current selection is not empty.
-     */
-    public boolean isCutEnabled() {
-        if (text == null || text.isDisposed()) {
-			return false;
-		}
-        return text.getSelectionCount() > 0;
-    }
-
-    /**
-     * The <code>TextCellEditor</code>  implementation of this 
-     * <code>CellEditor</code> method returns <code>true</code>
-     * if there is a selection or if the caret is not positioned 
-     * at the end of the text.
-     */
-    public boolean isDeleteEnabled() {
-        if (text == null || text.isDisposed()) {
-			return false;
-		}
-        return text.getSelectionCount() > 0
-                || text.getCaretPosition() < text.getCharCount();
-    }
-
-    /**
-     * The <code>TextCellEditor</code>  implementation of this 
-     * <code>CellEditor</code> method always returns <code>true</code>.
-     */
-    public boolean isPasteEnabled() {
-        if (text == null || text.isDisposed()) {
-			return false;
-		}
-        return true;
-    }
-
-    /**
-     * Check if save all is enabled
-     * @return true if it is 
-     */
-    public boolean isSaveAllEnabled() {
-        if (text == null || text.isDisposed()) {
-			return false;
-		}
-        return true;
-    }
-
-    /**
-     * Returns <code>true</code> if this cell editor is
-     * able to perform the select all action.
-     * <p>
-     * This default implementation always returns 
-     * <code>false</code>.
-     * </p>
-     * <p>
-     * Subclasses may override
-     * </p>
-     * @return <code>true</code> if select all is possible,
-     *  <code>false</code> otherwise
-     */
-    public boolean isSelectAllEnabled() {
-        if (text == null || text.isDisposed()) {
-			return false;
-		}
-        return text.getCharCount() > 0;
-    }
-
-    /**
-     * Processes a key release event that occurred in this cell editor.
-     * <p>
-     * The <code>TextCellEditor</code> implementation of this framework method 
-     * ignores when the RETURN key is pressed since this is handled in 
-     * <code>handleDefaultSelection</code>.
-     * An exception is made for Ctrl+Enter for multi-line texts, since
-     * a default selection event is not sent in this case. 
-     * </p>
-     *
-     * @param keyEvent the key event
-     */
-    protected void keyReleaseOccured(KeyEvent keyEvent) {
-        if (keyEvent.character == '\r') { // Return key
-            // Enter is handled in handleDefaultSelection.
-            // Do not apply the editor value in response to an Enter key event
-            // since this can be received from the IME when the intent is -not-
-            // to apply the value.  
-            // See bug 39074 [CellEditors] [DBCS] canna input mode fires bogus event from Text Control
-            //
-            // An exception is made for Ctrl+Enter for multi-line texts, since
-            // a default selection event is not sent in this case. 
-            if (text != null && !text.isDisposed()
-                    && (text.getStyle() & SWT.MULTI) != 0) {
-                if ((keyEvent.stateMask & SWT.CTRL) != 0) {
-                    super.keyReleaseOccured(keyEvent);
-                }
-            }
-            return;
-        }
-        super.keyReleaseOccured(keyEvent);
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of this
-     * <code>CellEditor</code> method copies the
-     * current selection to the clipboard. 
-     */
-    public void performCopy() {
-        text.copy();
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of this
-     * <code>CellEditor</code> method cuts the
-     * current selection to the clipboard. 
-     */
-    public void performCut() {
-        text.cut();
-        checkSelection();
-        checkDeleteable();
-        checkSelectable();
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of this
-     * <code>CellEditor</code> method deletes the
-     * current selection or, if there is no selection,
-     * the character next character from the current position. 
-     */
-    public void performDelete() {
-        if (text.getSelectionCount() > 0) {
-			// remove the contents of the current selection
-            text.insert(""); //$NON-NLS-1$
-		} else {
-            // remove the next character
-            int pos = text.getCaretPosition();
-            if (pos < text.getCharCount()) {
-                text.setSelection(pos, pos + 1);
-                text.insert(""); //$NON-NLS-1$
-            }
-        }
-        checkSelection();
-        checkDeleteable();
-        checkSelectable();
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of this
-     * <code>CellEditor</code> method pastes the
-     * the clipboard contents over the current selection. 
-     */
-    public void performPaste() {
-        text.paste();
-        checkSelection();
-        checkDeleteable();
-        checkSelectable();
-    }
-
-    /**
-     * The <code>TextCellEditor</code> implementation of this
-     * <code>CellEditor</code> method selects all of the
-     * current text. 
-     */
-    public void performSelectAll() {
-        text.selectAll();
-        checkSelection();
-        checkDeleteable();
-    }
-
-    /**
-	 * This implementation of
-	 * {@link CellEditor#dependsOnExternalFocusListener()} returns false if the
-	 * current instance's class is TextCellEditor, and true otherwise.
-	 * Subclasses that hook their own focus listener should override this method
-	 * and return false. See also bug 58777.
-	 * 
-	 * @since 3.4
-	 */
-	protected boolean dependsOnExternalFocusListener() {
-		return getClass() != TextCellEditor.class;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeColumnViewerLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeColumnViewerLabelProvider.java
deleted file mode 100644
index a894fd6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeColumnViewerLabelProvider.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * TreeViewerLabelProvider is the ViewerLabelProvider that handles TreePaths.
- * 
- * @since 3.3
- * 
- */
-public class TreeColumnViewerLabelProvider extends
-		TableColumnViewerLabelProvider {
-	private ITreePathLabelProvider treePathProvider = new ITreePathLabelProvider() {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ITreePathLabelProvider#updateLabel(org.eclipse.jface.viewers.ViewerLabel,
-		 *      org.eclipse.jface.viewers.TreePath)
-		 */
-		public void updateLabel(ViewerLabel label, TreePath elementPath) {
-			// Do nothing by default
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-		 */
-		public void dispose() {
-			// Do nothing by default
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void addListener(ILabelProviderListener listener) {
-			// Do nothing by default
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void removeListener(ILabelProviderListener listener) {
-			// Do nothing by default
-
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
-		 */
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-
-	};
-
-	/**
-	 * Create a new instance of the receiver with the supplied labelProvider.
-	 * 
-	 * @param labelProvider
-	 */
-	public TreeColumnViewerLabelProvider(IBaseLabelProvider labelProvider) {
-		super(labelProvider);
-	}
-
-	/**
-	 * Update the label for the element with TreePath.
-	 * 
-	 * @param label
-	 * @param elementPath
-	 */
-	public void updateLabel(ViewerLabel label, TreePath elementPath) {
-		treePathProvider.updateLabel(label, elementPath);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ViewerLabelProvider#setProviders(java.lang.Object)
-	 */
-	public void setProviders(Object provider) {
-		super.setProviders(provider);
-		if (provider instanceof ITreePathLabelProvider)
-			treePathProvider = (ITreePathLabelProvider) provider;
-	}
-
-	/**
-	 * Return the ITreePathLabelProvider for the receiver.
-	 * 
-	 * @return Returns the treePathProvider.
-	 */
-	public ITreePathLabelProvider getTreePathProvider() {
-		return treePathProvider;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeExpansionEvent.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeExpansionEvent.java
deleted file mode 100644
index 0726ec6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeExpansionEvent.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.EventObject;
-
-/**
- * Event object describing a tree node being expanded
- * or collapsed. The source of these events is the tree viewer.
- *
- * @see ITreeViewerListener
- */
-public class TreeExpansionEvent extends EventObject {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3618414930227835185L;
-    
-    /**
-     * The element that was expanded or collapsed.
-     */
-    private Object element;
-
-    /**
-     * Creates a new event for the given source and element.
-     *
-     * @param source the tree viewer
-     * @param element the element
-     */
-    public TreeExpansionEvent(AbstractTreeViewer source, Object element) {
-        super(source);
-        this.element = element;
-    }
-
-    /**
-     * Returns the element that got expanded or collapsed.
-     *
-     * @return the element
-     */
-    public Object getElement() {
-        return element;
-    }
-
-    /**
-     * Returns the originator of the event.
-     *
-     * @return the originating tree viewer
-     */
-    public AbstractTreeViewer getTreeViewer() {
-        return (AbstractTreeViewer) source;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java
deleted file mode 100644
index 01def33..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNode.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.jface.util.Util;
-
-/**
- * A simple data structure that is useful for implemented tree models. This can
- * be returned by
- * {@link org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)}.
- * It allows simple delegation of methods from
- * {@link org.eclipse.jface.viewers.ITreeContentProvider} such as
- * {@link org.eclipse.jface.viewers.ITreeContentProvider#getChildren(Object)},
- * {@link org.eclipse.jface.viewers.ITreeContentProvider#getParent(Object)} and
- * {@link org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(Object)}
- * 
- * @since 3.2
- */
-public class TreeNode {
-
-	/**
-	 * The array of child tree nodes for this tree node. If there are no
-	 * children, then this value may either by an empty array or
-	 * <code>null</code>. There should be no <code>null</code> children in
-	 * the array.
-	 */
-	private TreeNode[] children;
-
-	/**
-	 * The parent tree node for this tree node. This value may be
-	 * <code>null</code> if there is no parent.
-	 */
-	private TreeNode parent;
-
-	/**
-	 * The value contained in this node. This value may be anything.
-	 */
-	protected Object value;
-
-	/**
-	 * Constructs a new instance of <code>TreeNode</code>.
-	 * 
-	 * @param value
-	 *            The value held by this node; may be anything.
-	 */
-	public TreeNode(final Object value) {
-		this.value = value;
-	}
-	
-	public boolean equals(final Object object) {
-		if (object instanceof TreeNode) {
-			return Util.equals(this.value, ((TreeNode) object).value);
-		}
-
-		return false;
-	}
-
-	/**
-	 * Returns the child nodes. Empty arrays are converted to <code>null</code>
-	 * before being returned.
-	 * 
-	 * @return The child nodes; may be <code>null</code>, but never empty.
-	 *         There should be no <code>null</code> children in the array.
-	 */
-	public TreeNode[] getChildren() {
-		if (children != null && children.length == 0) {
-			return null;
-		}
-		return children;
-	}
-
-	/**
-	 * Returns the parent node.
-	 * 
-	 * @return The parent node; may be <code>null</code> if there are no
-	 *         parent nodes.
-	 */
-	public TreeNode getParent() {
-		return parent;
-	}
-
-	/**
-	 * Returns the value held by this node.
-	 * 
-	 * @return The value; may be anything.
-	 */
-	public Object getValue() {
-		return value;
-	}
-
-	/**
-	 * Returns whether the tree has any children.
-	 * 
-	 * @return <code>true</code> if its array of children is not
-	 *         <code>null</code> and is non-empty; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean hasChildren() {
-		return children != null && children.length > 0;
-	}
-	
-	public int hashCode() {
-		return Util.hashCode(value);
-	}
-
-	/**
-	 * Sets the children for this node.
-	 * 
-	 * @param children
-	 *            The child nodes; may be <code>null</code> or empty. There
-	 *            should be no <code>null</code> children in the array.
-	 */
-	public void setChildren(final TreeNode[] children) {
-		this.children = children;
-	}
-
-	/**
-	 * Sets the parent for this node.
-	 * 
-	 * @param parent
-	 *            The parent node; may be <code>null</code>.
-	 */
-	public void setParent(final TreeNode parent) {
-		this.parent = parent;
-	}
-}
-
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNodeContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNodeContentProvider.java
deleted file mode 100644
index 9fa1ebc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeNodeContentProvider.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-/**
- * <p>
- * A content provider that expects every element to be a <code>TreeNode</code>.
- * Most methods delegate to <code>TreeNode</code>. <code>dispose()</code>
- * and <code>inputChanged(Viewer, Object, Object)</code> do nothing by
- * default.
- * </p>
- * <p>
- * This class and all of its methods may be overridden or extended.
- * </p>
- * 
- * @since 3.2
- * @see org.eclipse.jface.viewers.TreeNode
- */
-public class TreeNodeContentProvider implements ITreeContentProvider {
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-	 */
-	public void dispose() {
-		// Do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-	 */
-	public Object[] getChildren(final Object parentElement) {
-		final TreeNode node = (TreeNode) parentElement;
-		return node.getChildren();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-	 */
-	public Object[] getElements(final Object inputElement) {
-		if (inputElement instanceof TreeNode[]) {
-			return (TreeNode[]) inputElement;
-		}
-		return new Object[0];
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-	 */
-	public Object getParent(final Object element) {
-		final TreeNode node = (TreeNode) element;
-		return node.getParent();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-	 */
-	public boolean hasChildren(final Object element) {
-		final TreeNode node = (TreeNode) element;
-		return node.hasChildren();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-	 *      java.lang.Object, java.lang.Object)
-	 */
-	public void inputChanged(final Viewer viewer, final Object oldInput,
-			final Object newInput) {
-		// Do nothing
-	}
-}
-
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePath.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePath.java
deleted file mode 100644
index c153b23..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePath.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A tree path denotes a model element in a tree viewer. Tree path objects have
- * value semantics. A model element is represented by a path of elements in the
- * tree from the root element to the leaf element.
- * <p>
- * Clients may instantiate this class. Not intended to be subclassed.
- * </p>
- * 
- * @since 3.2
- */
-public final class TreePath {
-	
-	/**
-	 * Constant for representing an empty tree path.
-	 */
-	public static final TreePath EMPTY = new TreePath(new Object[0]);
-	
-	private Object[] segments;
-
-	private int hash;
-
-	/**
-	 * Constructs a path identifying a leaf node in a tree.
-	 * 
-	 * @param segments
-	 *            path of elements to a leaf node in a tree, starting with the
-	 *            root element
-	 */
-	public TreePath(Object[] segments) {
-		Assert.isNotNull(segments);
-		for (int i = 0; i < segments.length; i++) {
-			Assert.isNotNull(segments[i]);
-		}
-		this.segments = segments;
-	}
-
-	/**
-	 * Returns the element at the specified index in this path.
-	 * 
-	 * @param index
-	 *            index of element to return
-	 * @return element at the specified index
-	 */
-	public Object getSegment(int index) {
-		return segments[index];
-	}
-
-	/**
-	 * Returns the number of elements in this path.
-	 * 
-	 * @return the number of elements in this path
-	 */
-	public int getSegmentCount() {
-		return segments.length;
-	}
-
-	/**
-	 * Returns the first element in this path, or <code>null</code> if this
-	 * path has no segments.
-	 * 
-	 * @return the first element in this path
-	 */
-	public Object getFirstSegment() {
-		if (segments.length == 0) {
-			return null;
-		}
-		return segments[0];
-	}
-
-	/**
-	 * Returns the last element in this path, or <code>null</code> if this
-	 * path has no segments.
-	 * 
-	 * @return the last element in this path
-	 */
-	public Object getLastSegment() {
-		if (segments.length == 0) {
-			return null;
-		}
-		return segments[segments.length - 1];
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object other) {
-		if (!(other instanceof TreePath)) {
-			return false;
-		}
-		return equals((TreePath) other, null);
-	}
-
-	/**
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		if (hash == 0) {
-			hash = hashCode(null);
-		}
-		return hash;
-	}
-
-	/**
-	 * Returns a hash code computed from the hash codes of the segments, using
-	 * the given comparer to compute the hash codes of the segments.
-	 * 
-	 * @param comparer
-	 *            comparer to use or <code>null</code> if the segments' hash
-	 *            codes should be computed by calling their hashCode() methods.
-	 * @return the computed hash code
-	 */
-	public int hashCode(IElementComparer comparer) {
-		int result = 0;
-		for (int i = 0; i < segments.length; i++) {
-			if (comparer == null) {
-				result += segments[i].hashCode();
-			} else {
-				result += comparer.hashCode(segments[i]);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns whether this path is equivalent to the given path using the
-	 * specified comparer to compare individual elements.
-	 * 
-	 * @param otherPath
-	 *            tree path to compare to
-	 * @param comparer
-	 *            comparator to use or <code>null</code> if segments should be
-	 *            compared using equals()
-	 * @return whether the paths are equal
-	 */
-	public boolean equals(TreePath otherPath, IElementComparer comparer) {
-		if (otherPath == null) {
-			return false;
-		}
-		if (segments.length != otherPath.segments.length) {
-			return false;
-		}
-		for (int i = 0; i < segments.length; i++) {
-			if (comparer == null) {
-				if (!segments[i].equals(otherPath.segments[i])) {
-					return false;
-				}
-			} else {
-				if (!comparer.equals(segments[i], otherPath.segments[i])) {
-					return false;
-				}
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Returns whether this path starts with the same segments as the given
-	 * path, using the given comparer to compare segments.
-	 * 
-	 * @param treePath
-	 *            path to compare to
-	 * @param comparer
-	 *            the comparer to use, or <code>null</code> if equals() should
-	 *            be used to compare segments
-	 * @return whether the given path is a prefix of this path, or the same as
-	 *         this path
-	 */
-	public boolean startsWith(TreePath treePath, IElementComparer comparer) {
-		int thisSegmentCount = getSegmentCount();
-		int otherSegmentCount = treePath.getSegmentCount();
-		if (otherSegmentCount == thisSegmentCount) {
-			return equals(treePath, comparer);
-		}
-		if (otherSegmentCount > thisSegmentCount) {
-			return false;
-		}
-		for (int i = 0; i < otherSegmentCount; i++) {
-			Object otherSegment = treePath.getSegment(i);
-			if (comparer == null) {
-				if (!otherSegment.equals(segments[i])) {
-					return false;
-				}
-			} else {
-				if (!comparer.equals(otherSegment, segments[i])) {
-					return false;
-				}
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Returns a copy of this tree path with one segment removed from the end,
-	 * or <code>null</code> if this tree path has no segments.
-	 * @return a tree path
-	 */
-	public TreePath getParentPath() {
-		int segmentCount = getSegmentCount();
-		if (segmentCount < 1) {
-			return null;
-		} else if (segmentCount == 1) {
-			return EMPTY;
-		}
-		Object[] parentSegments = new Object[segmentCount - 1];
-		System.arraycopy(segments, 0, parentSegments, 0, segmentCount - 1);
-		return new TreePath(parentSegments);
-	}
-
-	/**
-	 * Returns a copy of this tree path with the given segment added at the end.
-	 * @param newSegment 
-	 * @return a tree path
-	 */
-	public TreePath createChildPath(Object newSegment) {
-		int segmentCount = getSegmentCount();
-		Object[] childSegments = new Object[segmentCount + 1];
-		if(segmentCount>0) {
-			System.arraycopy(segments, 0, childSegments, 0, segmentCount);
-		}
-		childSegments[segmentCount] = newSegment;
-		return new TreePath(childSegments);
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePathViewerSorter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePathViewerSorter.java
deleted file mode 100644
index a49f84d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreePathViewerSorter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * A viewer sorter that is provided extra context in the form of the path of the
- * parent element of the elements being sorted.
- * 
- * @since 3.2
- */
-public class TreePathViewerSorter extends ViewerSorter {
-
-	/**
-	 * Provide a category for the given element that will have the given parent
-	 * path when it is added to the viewer. The provided path is
-	 * relative to the viewer input. The parent path will
-	 * be <code>null</code> when the elements are root elements.
-	 * <p>
-	 * By default, the this method calls
-	 * {@link ViewerSorter#category(Object)}. Subclasses may override.
-	 * 
-	 * @param parentPath
-	 *            the parent path for the element
-	 * @param element
-	 *            the element
-	 * @return the category of the element
-	 */
-	public int category(TreePath parentPath, Object element) {
-		return category(element);
-	}
-	
-	/**
-	 * Compare the given elements that will have the given parent
-	 * path when they are added to the viewer. The provided path is
-	 * relative to the viewer input. The parent path will
-	 * be <code>null</code> when the elements are root elements.
-	 * <p>
-	 * By default, the this method calls
-	 * {@link ViewerSorter#sort(Viewer, Object[])}. Subclasses may override.
-	 * @param viewer the viewer
-	 * @param parentPath the parent path for the two elements
-     * @param e1 the first element
-     * @param e2 the second element
-     * @return a negative number if the first element is less  than the 
-     *  second element; the value <code>0</code> if the first element is
-     *  equal to the second element; and a positive
-	 */
-	public int compare(Viewer viewer, TreePath parentPath, Object e1, Object e2) {
-		return compare(viewer, e1, e2);
-	}
-	
-	/**
-     * Returns whether this viewer sorter would be affected 
-     * by a change to the given property of the given element.
-     * The provided path is
-	 * relative to the viewer input. The parent path will
-	 * be <code>null</code> when the elements are root elements.
-     * <p>
-     * The default implementation of this method calls
-     * {@link ViewerSorter#isSorterProperty(Object, String)}.
-     * Subclasses may reimplement.
-	 * @param parentPath the parent path of the element
-     * @param element the element
-     * @param property the property
-     * @return <code>true</code> if the sorting would be affected,
-     *    and <code>false</code> if it would be unaffected
-	 */
-    public boolean isSorterProperty(TreePath parentPath, Object element, String property) {
-        return isSorterProperty(element, property);
-    }
-    
-    /**
-     * Sorts the given elements in-place, modifying the given array.
-     * The provided path is
-	 * relative to the viewer input. The parent path will
-	 * be <code>null</code> when the elements are root elements.
-     * <p>
-     * The default implementation of this method uses the 
-     * java.util.Arrays#sort algorithm on the given array, 
-     * calling {@link #compare(Viewer, TreePath, Object, Object)} to compare elements.
-     * </p>
-     * <p>
-     * Subclasses may reimplement this method to provide a more optimized implementation.
-     * </p>
-     *
-     * @param viewer the viewer
-     * @param parentPath the parent path of the given elements
-     * @param elements the elements to sort
-     */
-    public void sort(final Viewer viewer, final TreePath parentPath, Object[] elements) {
-        Arrays.sort(elements, new Comparator() {
-            public int compare(Object a, Object b) {
-                return TreePathViewerSorter.this.compare(viewer, parentPath, a, b);
-            }
-        });
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeSelection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeSelection.java
deleted file mode 100644
index 26a162f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeSelection.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A concrete implementation of the <code>ITreeSelection</code> interface,
- * suitable for instantiating.
- * <p>
- * This class is not intended to be subclassed.
- * </p>
- * 
- * @since 3.2
- */
-public class TreeSelection extends StructuredSelection implements ITreeSelection {
-
-	/* Implementation note.  This class extends StructuredSelection because many pre-existing
-	 * JFace viewer clients assumed that the only implementation of IStructuredSelection 
-	 * was StructuredSelection.  By extending StructuredSelection rather than implementing
-	 * ITreeSelection directly, we avoid this problem.
-	 * For more details, see Bug 121939 [Viewers] TreeSelection should subclass StructuredSelection. 
-	 */
-	
-	private TreePath[] paths = null;
-	private CustomHashtable element2TreePaths = null;
-
-	/**
-	 * The canonical empty selection. This selection should be used instead of
-	 * <code>null</code>.
-	 */
-	public static final TreeSelection EMPTY = new TreeSelection();
-	
-	private static final TreePath[] EMPTY_TREE_PATHS= new TreePath[0];
-	
-	private static class InitializeData {
-		List selection;
-		TreePath[] paths;
-		CustomHashtable element2TreePaths;
-		
-		private InitializeData(TreePath[] paths, IElementComparer comparer) {
-			this.paths= new TreePath[paths.length];
-			System.arraycopy(paths, 0, this.paths, 0, paths.length);
-			element2TreePaths = new CustomHashtable(comparer);
-			int size = paths.length;
-			selection = new ArrayList(size);
-			for (int i = 0; i < size; i++) {
-				Object lastSegment= paths[i].getLastSegment();
-				Object mapped= element2TreePaths.get(lastSegment);
-				if (mapped == null) {
-					selection.add(lastSegment);
-					element2TreePaths.put(lastSegment, paths[i]);
-				} else if (mapped instanceof List) {
-					((List)mapped).add(paths[i]);
-				} else {
-					List newMapped= new ArrayList(2);
-					newMapped.add(mapped);
-					newMapped.add(paths[i]);
-					element2TreePaths.put(lastSegment, newMapped);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Constructs a selection based on the elements identified by the given tree
-	 * paths.
-	 * 
-	 * @param paths
-	 *            tree paths
-	 */
-	public TreeSelection(TreePath[] paths) {
-		this(new InitializeData(paths, null));
-	}
-
-	/**
-	 * Constructs a selection based on the elements identified by the given tree
-	 * paths.
-	 * 
-	 * @param paths
-	 *            tree paths
-	 * @param comparer 
-	 *            the comparer, or <code>null</code> if default equals is to be used
-	 */
-	public TreeSelection(TreePath[] paths, IElementComparer comparer) {
-		this(new InitializeData(paths, comparer));
-	}
-
-	/**
-	 * Constructs a selection based on the elements identified by the given tree
-	 * path.
-	 * 
-	 * @param treePath
-	 *            tree path, or <code>null</code> for an empty selection
-	 */
-	public TreeSelection(TreePath treePath) {
-		this(treePath != null ? new TreePath[] { treePath } : EMPTY_TREE_PATHS, null);
-	}
-
-	/**
-	 * Constructs a selection based on the elements identified by the given tree
-	 * path.
-	 * 
-	 * @param treePath
-	 *            tree path, or <code>null</code> for an empty selection
-	 * @param comparer 
-	 *            the comparer, or <code>null</code> if default equals is to be used
-	 */
-	public TreeSelection(TreePath treePath, IElementComparer comparer) {
-		this(treePath != null ? new TreePath[] { treePath } : EMPTY_TREE_PATHS, comparer);
-	}
-	
-	/**
-	 * Creates a new tree selection based on the initialization data.
-	 * 
-	 * @param data the data
-	 */
-	private TreeSelection(InitializeData data) {
-		super(data.selection);
-		paths= data.paths;
-		element2TreePaths= data.element2TreePaths;
-	}
-
-	/**
-	 * Creates a new empty selection. See also the static field
-	 * <code>EMPTY</code> which contains an empty selection singleton.
-	 * <p>
-	 * Note that TreeSelection.EMPTY is not equals() to StructuredViewer.EMPTY.
-	 * </p>
-	 * 
-	 * @see #EMPTY
-	 */
-	public TreeSelection() {
-		super();
-	}
-	
-	/**
-	 * Returns the element comparer passed in when the tree selection
-	 * has been created or <code>null</code> if no comparer has been
-	 * provided.
-	 * 
-	 * @return the element comparer or <code>null</code>
-	 * 
-	 * @since 3.2
-	 */
-	public IElementComparer getElementComparer() {
-		if (element2TreePaths == null)
-			return null;
-		return element2TreePaths.getComparer();
-	}
-	
-	public boolean equals(Object obj) {
-		if (!(obj instanceof TreeSelection)) {
-			// Fall back to super implementation, see bug 135837.
-			return super.equals(obj);
-		}
-		TreeSelection selection = (TreeSelection) obj;
-		int size = getPaths().length;
-		if (selection.getPaths().length == size) {
-			IElementComparer comparerOrNull = (getElementComparer() == selection
-					.getElementComparer()) ? getElementComparer() : null;
-			if (size > 0) {
-				for (int i = 0; i < paths.length; i++) {
-					if (!paths[i].equals(selection.paths[i], comparerOrNull)) {
-						return false;
-					}
-				}
-			}
-			return true;
-		}
-		return false;
-	}
-
-	public int hashCode() {
-		int code = getClass().hashCode();
-		if (paths != null) {
-			for (int i = 0; i < paths.length; i++) {
-				code = code * 17 + paths[i].hashCode(getElementComparer());
-			}
-		}
-		return code;
-	}
-
-	public TreePath[] getPaths() {
-		return paths==null ? EMPTY_TREE_PATHS : (TreePath[]) paths.clone();
-	}
-	
-	public TreePath[] getPathsFor(Object element) {
-		Object value= element2TreePaths==null ? null : element2TreePaths.get(element);
-		if (value == null) {
-			return EMPTY_TREE_PATHS;
-		} else if (value instanceof TreePath) {
-			return new TreePath[] { (TreePath)value };
-		} else if (value instanceof List) {
-			List l= (List)value;
-			return (TreePath[])l.toArray(new TreePath[l.size()]);
-		} else {
-			// should not happen:
-			Assert.isTrue(false, "Unhandled case"); //$NON-NLS-1$
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
deleted file mode 100644
index faeb011..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
+++ /dev/null
@@ -1,1132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - concept of ViewerRow,
- *                                                 refactoring (bug 153993), bug 167323, 191468, 205419
- *     Matthew Hall - bug 221988
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.TreeEvent;
-import org.eclipse.swt.events.TreeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A concrete viewer based on an SWT <code>Tree</code> control.
- * <p>
- * This class is not intended to be subclassed outside the viewer framework. It
- * is designed to be instantiated with a pre-existing SWT tree control and
- * configured with a domain-specific content provider, label provider, element
- * filter (optional), and element sorter (optional).
- * </p>
- * <p>
- * Content providers for tree viewers must implement either the
- * {@link ITreeContentProvider} interface, (as of 3.2) the
- * {@link ILazyTreeContentProvider} interface, or (as of 3.3) the
- * {@link ILazyTreePathContentProvider}. If the content provider is an
- * <code>ILazyTreeContentProvider</code> or an
- * <code>ILazyTreePathContentProvider</code>, the underlying Tree must be
- * created using the {@link SWT#VIRTUAL} style bit, the tree viewer will not
- * support sorting or filtering, and hash lookup must be enabled by calling
- * {@link #setUseHashlookup(boolean)}.
- * </p>
- * <p>
- * Users setting up an editable tree with more than 1 column <b>have</b> to pass the
- * SWT.FULL_SELECTION style bit
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class TreeViewer extends AbstractTreeViewer {
-
-	private static final String VIRTUAL_DISPOSE_KEY = Policy.JFACE
-			+ ".DISPOSE_LISTENER"; //$NON-NLS-1$
-
-	/**
-	 * This viewer's control.
-	 */
-	private Tree tree;
-
-	/**
-	 * Flag for whether the tree has been disposed of.
-	 */
-	private boolean treeIsDisposed = false;
-
-	private boolean contentProviderIsLazy;
-
-	private boolean contentProviderIsTreeBased;
-
-	/**
-	 * The row object reused
-	 */
-	private TreeViewerRow cachedRow;
-
-	/**
-	 * true if we are inside a preservingSelection() call
-	 */
-	private boolean preservingSelection;
-
-	/**
-	 * Creates a tree viewer on a newly-created tree control under the given
-	 * parent. The tree control is created using the SWT style bits
-	 * <code>MULTI, H_SCROLL, V_SCROLL,</code> and <code>BORDER</code>. The
-	 * viewer has no input, no content provider, a default label provider, no
-	 * sorter, and no filters.
-	 *
-	 * @param parent
-	 *            the parent control
-	 */
-	public TreeViewer(Composite parent) {
-		this(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-	}
-
-	/**
-	 * Creates a tree viewer on a newly-created tree control under the given
-	 * parent. The tree control is created using the given SWT style bits. The
-	 * viewer has no input, no content provider, a default label provider, no
-	 * sorter, and no filters.
-	 *
-	 * @param parent
-	 *            the parent control
-	 * @param style
-	 *            the SWT style bits used to create the tree.
-	 */
-	public TreeViewer(Composite parent, int style) {
-		this(new Tree(parent, style));
-	}
-
-	/**
-	 * Creates a tree viewer on the given tree control. The viewer has no input,
-	 * no content provider, a default label provider, no sorter, and no filters.
-	 *
-	 * @param tree
-	 *            the tree control
-	 */
-	public TreeViewer(Tree tree) {
-		super();
-		this.tree = tree;
-		hookControl(tree);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void addTreeListener(Control c, TreeListener listener) {
-		((Tree) c).addTreeListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ColumnViewer#getColumnViewerOwner(int)
-	 */
-	protected Widget getColumnViewerOwner(int columnIndex) {
-		if (columnIndex < 0 || ( columnIndex > 0 && columnIndex >= getTree().getColumnCount() ) ) {
-			return null;
-		}
-
-		if (getTree().getColumnCount() == 0)// Hang it off the table if it
-			return getTree();
-
-		return getTree().getColumn(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected Item[] getChildren(Widget o) {
-		if (o instanceof TreeItem) {
-			return ((TreeItem) o).getItems();
-		}
-		if (o instanceof Tree) {
-			return ((Tree) o).getItems();
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in Viewer.
-	 */
-	public Control getControl() {
-		return tree;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected boolean getExpanded(Item item) {
-		return ((TreeItem) item).getExpanded();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ColumnViewer#getItemAt(org.eclipse.swt.graphics.Point)
-	 */
-	protected Item getItemAt(Point p) {
-		TreeItem[] selection = tree.getSelection();
-
-		if( selection.length == 1 ) {
-			int columnCount = tree.getColumnCount();
-
-			for( int i = 0; i < columnCount; i++ ) {
-				if( selection[0].getBounds(i).contains(p) ) {
-					return selection[0];
-				}
-			}
-		}
-
-		return getTree().getItem(p);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected int getItemCount(Control widget) {
-		return ((Tree) widget).getItemCount();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected int getItemCount(Item item) {
-		return ((TreeItem) item).getItemCount();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected Item[] getItems(Item item) {
-		return ((TreeItem) item).getItems();
-	}
-
-	/**
-	 * The tree viewer implementation of this <code>Viewer</code> framework
-	 * method ensures that the given label provider is an instance of either
-	 * <code>ITableLabelProvider</code> or <code>ILabelProvider</code>. If
-	 * it is an <code>ITableLabelProvider</code>, then it provides a separate
-	 * label text and image for each column. If it is an
-	 * <code>ILabelProvider</code>, then it provides only the label text and
-	 * image for the first column, and any remaining columns are blank.
-	 */
-	public IBaseLabelProvider getLabelProvider() {
-		return super.getLabelProvider();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected Item getParentItem(Item item) {
-		return ((TreeItem) item).getParentItem();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected Item[] getSelection(Control widget) {
-		return ((Tree) widget).getSelection();
-	}
-
-	/**
-	 * Returns this tree viewer's tree control.
-	 *
-	 * @return the tree control
-	 */
-	public Tree getTree() {
-		return tree;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#hookControl(org.eclipse.swt.widgets.Control)
-	 */
-	protected void hookControl(Control control) {
-		super.hookControl(control);
-		Tree treeControl = (Tree) control;
-
-		if ((treeControl.getStyle() & SWT.VIRTUAL) != 0) {
-			treeControl.addDisposeListener(new DisposeListener() {
-				public void widgetDisposed(DisposeEvent e) {
-					treeIsDisposed = true;
-					unmapAllElements();
-				}
-			});
-			treeControl.addListener(SWT.SetData, new Listener() {
-
-				public void handleEvent(Event event) {
-					if (contentProviderIsLazy) {
-						TreeItem item = (TreeItem) event.item;
-						TreeItem parentItem = item.getParentItem();
-						int index = event.index;
-						virtualLazyUpdateWidget(
-								parentItem == null ? (Widget) getTree()
-										: parentItem, index);
-					}
-				}
-
-			});
-		}
-	}
-
-	protected ColumnViewerEditor createViewerEditor() {
-		return new TreeViewerEditor(this,null,new ColumnViewerEditorActivationStrategy(this),ColumnViewerEditor.DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected Item newItem(Widget parent, int flags, int ix) {
-		TreeItem item;
-
-		if (parent instanceof TreeItem) {
-			item = (TreeItem) createNewRowPart(getViewerRowFromItem(parent),
-					flags, ix).getItem();
-		} else {
-			item = (TreeItem) createNewRowPart(null, flags, ix).getItem();
-		}
-
-		return item;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void removeAll(Control widget) {
-		((Tree) widget).removeAll();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void setExpanded(Item node, boolean expand) {
-		((TreeItem) node).setExpanded(expand);
-		if (contentProviderIsLazy) {
-			// force repaints to happen
-			getControl().update();
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void setSelection(List items) {
-
-		Item[] current = getSelection(getTree());
-
-		// Don't bother resetting the same selection
-		if (isSameSelection(items, current)) {
-			return;
-		}
-
-		TreeItem[] newItems = new TreeItem[items.size()];
-		items.toArray(newItems);
-		getTree().setSelection(newItems);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in AbstractTreeViewer.
-	 */
-	protected void showItem(Item item) {
-		getTree().showItem((TreeItem) item);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#getChild(org.eclipse.swt.widgets.Widget,
-	 *      int)
-	 */
-	protected Item getChild(Widget widget, int index) {
-		if (widget instanceof TreeItem) {
-			return ((TreeItem) widget).getItem(index);
-		}
-		if (widget instanceof Tree) {
-			return ((Tree) widget).getItem(index);
-		}
-		return null;
-	}
-
-	protected void assertContentProviderType(IContentProvider provider) {
-		if (provider instanceof ILazyTreeContentProvider
-				|| provider instanceof ILazyTreePathContentProvider) {
-			return;
-		}
-		super.assertContentProviderType(provider);
-	}
-
-	protected Object[] getRawChildren(Object parent) {
-		if (contentProviderIsLazy) {
-			return new Object[0];
-		}
-		return super.getRawChildren(parent);
-	}
-
-	void preservingSelection(Runnable updateCode, boolean reveal) {
-		if (preservingSelection){
-			// avoid preserving the selection if called reentrantly,
-			// see bug 172640
-			updateCode.run();
-			return;
-		}
-		preservingSelection = true;
-		try {
-			super.preservingSelection(updateCode, reveal);
-		} finally {
-			preservingSelection = false;
-		}
-	}
-
-	/**
-	 * For a TreeViewer with a tree with the VIRTUAL style bit set, set the
-	 * number of children of the given element or tree path. To set the number
-	 * of children of the invisible root of the tree, you can pass the input
-	 * object or an empty tree path.
-	 *
-	 * @param elementOrTreePath
-	 *            the element, or tree path
-	 * @param count
-	 *
-	 * @since 3.2
-	 */
-	public void setChildCount(final Object elementOrTreePath, final int count) {
-		if (checkBusy())
-			return;
-		preservingSelection(new Runnable() {
-			public void run() {
-				if (internalIsInputOrEmptyPath(elementOrTreePath)) {
-					getTree().setItemCount(count);
-					return;
-				}
-				Widget[] items = internalFindItems(elementOrTreePath);
-				for (int i = 0; i < items.length; i++) {
-					TreeItem treeItem = (TreeItem) items[i];
-					treeItem.setItemCount(count);
-				}
-			}
-		});
-	}
-
-	/**
-	 * For a TreeViewer with a tree with the VIRTUAL style bit set, replace the
-	 * given parent's child at index with the given element. If the given parent
-	 * is this viewer's input or an empty tree path, this will replace the root
-	 * element at the given index.
-	 * <p>
-	 * This method should be called by implementers of ILazyTreeContentProvider
-	 * to populate this viewer.
-	 * </p>
-	 *
-	 * @param parentElementOrTreePath
-	 *            the parent of the element that should be updated, or the tree
-	 *            path to that parent
-	 * @param index
-	 *            the index in the parent's children
-	 * @param element
-	 *            the new element
-	 *
-	 * @see #setChildCount(Object, int)
-	 * @see ILazyTreeContentProvider
-	 * @see ILazyTreePathContentProvider
-	 *
-	 * @since 3.2
-	 */
-	public void replace(final Object parentElementOrTreePath, final int index,
-			final Object element) {
-		if (checkBusy())
-			return;
-		Item[] selectedItems = getSelection(getControl());
-		TreeSelection selection = (TreeSelection) getSelection();
-		Widget[] itemsToDisassociate;
-		if (parentElementOrTreePath instanceof TreePath) {
-			TreePath elementPath = ((TreePath) parentElementOrTreePath)
-					.createChildPath(element);
-			itemsToDisassociate = internalFindItems(elementPath);
-		} else {
-			itemsToDisassociate = internalFindItems(element);
-		}
-		if (internalIsInputOrEmptyPath(parentElementOrTreePath)) {
-			if (index < tree.getItemCount()) {
-				TreeItem item = tree.getItem(index);
-				selection = adjustSelectionForReplace(selectedItems, selection, item, element, getRoot());
-				// disassociate any different item that represents the
-				// same element under the same parent (the tree)
-				for (int i = 0; i < itemsToDisassociate.length; i++) {
-					if (itemsToDisassociate[i] instanceof TreeItem) {
-						TreeItem itemToDisassociate = (TreeItem) itemsToDisassociate[i];
-						if (itemToDisassociate != item
-								&& itemToDisassociate.getParentItem() == null) {
-							int indexToDisassociate = getTree().indexOf(
-									itemToDisassociate);
-							disassociate(itemToDisassociate);
-							getTree().clear(indexToDisassociate, true);
-						}
-					}
-				}
-				Object oldData = item.getData();
-				updateItem(item, element);
-				if (!TreeViewer.this.equals(oldData, element)) {
-					item.clearAll(true);
-				}
-			}
-		} else {
-			Widget[] parentItems = internalFindItems(parentElementOrTreePath);
-			for (int i = 0; i < parentItems.length; i++) {
-				TreeItem parentItem = (TreeItem) parentItems[i];
-				if (index < parentItem.getItemCount()) {
-					TreeItem item = parentItem.getItem(index);
-					selection = adjustSelectionForReplace(selectedItems, selection, item, element, parentItem.getData());
-					// disassociate any different item that represents the
-					// same element under the same parent (the tree)
-					for (int j = 0; j < itemsToDisassociate.length; j++) {
-						if (itemsToDisassociate[j] instanceof TreeItem) {
-							TreeItem itemToDisassociate = (TreeItem) itemsToDisassociate[j];
-							if (itemToDisassociate != item
-									&& itemToDisassociate.getParentItem() == parentItem) {
-								int indexToDisaccociate = parentItem
-										.indexOf(itemToDisassociate);
-								disassociate(itemToDisassociate);
-								parentItem.clear(indexToDisaccociate, true);
-							}
-						}
-					}
-					Object oldData = item.getData();
-					updateItem(item, element);
-					if (!TreeViewer.this.equals(oldData, element)) {
-						item.clearAll(true);
-					}
-				}
-			}
-		}
-		// Restore the selection if we are not already in a nested preservingSelection:
-		if (!preservingSelection) {
-			setSelectionToWidget(selection, false);
-			// send out notification if old and new differ
-			ISelection newSelection = getSelection();
-			if (!newSelection.equals(selection)) {
-				handleInvalidSelection(selection, newSelection);
-			}
-		}
-	}
-
-	/**
-	 * Fix for bug 185673: If the currently replaced item was selected, add it
-	 * to the selection that is being restored. Only do this if its getData() is
-	 * currently null
-	 *
-	 * @param selectedItems
-	 * @param selection
-	 * @param item
-	 * @param element
-	 * @return
-	 */
-	private TreeSelection adjustSelectionForReplace(Item[] selectedItems,
-			TreeSelection selection, TreeItem item, Object element, Object parentElement) {
-		if (item.getData() != null || selectedItems.length == selection.size()
-				|| parentElement == null) {
-			// Don't do anything - we are not seeing an instance of bug 185673
-			return selection;
-		}
-		for (int i = 0; i < selectedItems.length; i++) {
-			if (item == selectedItems[i]) {
-				// The current item was selected, but its data is null.
-				// The data will be replaced by the given element, so to keep
-				// it selected, we have to add it to the selection.
-				TreePath[] originalPaths = selection.getPaths();
-				int length = originalPaths.length;
-				TreePath[] paths = new TreePath[length + 1];
-				System.arraycopy(originalPaths, 0, paths, 0, length);
-				// set the element temporarily so that we can call getTreePathFromItem
-				item.setData(element);
-				paths[length] = getTreePathFromItem(item);
-				item.setData(null);
-				return new TreeSelection(paths, selection.getElementComparer());
-			}
-		}
-		// The item was not selected, return the given selection
-		return selection;
-	}
-
-	public boolean isExpandable(Object element) {
-		if (contentProviderIsLazy) {
-			TreeItem treeItem = (TreeItem) internalExpand(element, false);
-			if (treeItem == null) {
-				return false;
-			}
-			virtualMaterializeItem(treeItem);
-			return treeItem.getItemCount() > 0;
-		}
-		return super.isExpandable(element);
-	}
-
-	protected Object getParentElement(Object element) {
-		boolean oldBusy = isBusy();
-		setBusy(true);
-		try {
-			if (contentProviderIsLazy && !contentProviderIsTreeBased && !(element instanceof TreePath)) {
-				ILazyTreeContentProvider lazyTreeContentProvider = (ILazyTreeContentProvider) getContentProvider();
-				return lazyTreeContentProvider.getParent(element);
-			}
-			if (contentProviderIsLazy && contentProviderIsTreeBased && !(element instanceof TreePath)) {
-				ILazyTreePathContentProvider lazyTreePathContentProvider = (ILazyTreePathContentProvider) getContentProvider();
-				TreePath[] parents = lazyTreePathContentProvider
-				.getParents(element);
-				if (parents != null && parents.length > 0) {
-					return parents[0];
-				}
-			}
-			return super.getParentElement(element);
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	protected void createChildren(Widget widget) {
-		if (contentProviderIsLazy) {
-			Object element = widget.getData();
-			if (element == null && widget instanceof TreeItem) {
-				// parent has not been materialized
-				virtualMaterializeItem((TreeItem) widget);
-				// try getting the element now that updateElement was called
-				element = widget.getData();
-			}
-			if (element ==  null) {
-				// give up because the parent is still not materialized
-				return;
-			}
-			Item[] children = getChildren(widget);
-			if (children.length == 1 && children[0].getData() == null) {
-				// found a dummy node
-				virtualLazyUpdateChildCount(widget, children.length);
-				children = getChildren(widget);
-			}
-			// touch all children to make sure they are materialized
-			for (int i = 0; i < children.length; i++) {
-				if (children[i].getData() == null) {
-					virtualLazyUpdateWidget(widget, i);
-				}
-			}
-			return;
-		}
-		super.createChildren(widget);
-	}
-
-	protected void internalAdd(Widget widget, Object parentElement,
-			Object[] childElements) {
-		if (contentProviderIsLazy) {
-			if (widget instanceof TreeItem) {
-				TreeItem ti = (TreeItem) widget;
-				int count = ti.getItemCount() + childElements.length;
-				ti.setItemCount(count);
-				ti.clearAll(false);
-			} else {
-				Tree t = (Tree) widget;
-				t.setItemCount(t.getItemCount() + childElements.length);
-				t.clearAll(false);
-			}
-			return;
-		}
-		super.internalAdd(widget, parentElement, childElements);
-	}
-
-	private void virtualMaterializeItem(TreeItem treeItem) {
-		if (treeItem.getData() != null) {
-			// already materialized
-			return;
-		}
-		if (!contentProviderIsLazy) {
-			return;
-		}
-		int index;
-		Widget parent = treeItem.getParentItem();
-		if (parent == null) {
-			parent = treeItem.getParent();
-		}
-		Object parentElement = parent.getData();
-		if (parentElement != null) {
-			if (parent instanceof Tree) {
-				index = ((Tree) parent).indexOf(treeItem);
-			} else {
-				index = ((TreeItem) parent).indexOf(treeItem);
-			}
-			virtualLazyUpdateWidget(parent, index);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#internalRefreshStruct(org.eclipse.swt.widgets.Widget,
-	 *      java.lang.Object, boolean)
-	 */
-	protected void internalRefreshStruct(Widget widget, Object element,
-			boolean updateLabels) {
-		if (contentProviderIsLazy) {
-			// clear all starting with the given widget
-			if (widget instanceof Tree) {
-				((Tree) widget).clearAll(true);
-			} else if (widget instanceof TreeItem) {
-				((TreeItem) widget).clearAll(true);
-			}
-			int index = 0;
-			Widget parent = null;
-			if (widget instanceof TreeItem) {
-				TreeItem treeItem = (TreeItem) widget;
-				parent = treeItem.getParentItem();
-				if (parent == null) {
-					parent = treeItem.getParent();
-				}
-				if (parent instanceof Tree) {
-					index = ((Tree) parent).indexOf(treeItem);
-				} else {
-					index = ((TreeItem) parent).indexOf(treeItem);
-				}
-			}
-			virtualRefreshExpandedItems(parent, widget, element, index);
-			return;
-		}
-		super.internalRefreshStruct(widget, element, updateLabels);
-	}
-
-	/**
-	 * Traverses the visible (expanded) part of the tree and updates child
-	 * counts.
-	 *
-	 * @param parent the parent of the widget, or <code>null</code> if the widget is the tree
-	 * @param widget
-	 * @param element
-	 * @param index the index of the widget in the children array of its parent, or 0 if the widget is the tree
-	 */
-	private void virtualRefreshExpandedItems(Widget parent, Widget widget, Object element, int index) {
-		if (widget instanceof Tree) {
-			if (element == null) {
-				((Tree) widget).setItemCount(0);
-				return;
-			}
-			virtualLazyUpdateChildCount(widget, getChildren(widget).length);
-		} else if (((TreeItem) widget).getExpanded()) {
-			// prevent SetData callback
-			((TreeItem)widget).setText(" "); //$NON-NLS-1$
-			virtualLazyUpdateWidget(parent, index);
-		} else {
-			return;
-		}
-		Item[] items = getChildren(widget);
-		for (int i = 0; i < items.length; i++) {
-			Item item = items[i];
-			Object data = item.getData();
-			virtualRefreshExpandedItems(widget, item, data, i);
-		}
-	}
-
-	/*
-	 * To unmap elements correctly, we need to register a dispose listener with
-	 * the item if the tree is virtual.
-	 */
-	protected void mapElement(Object element, final Widget item) {
-		super.mapElement(element, item);
-		// make sure to unmap elements if the tree is virtual
-		if ((getTree().getStyle() & SWT.VIRTUAL) != 0) {
-			// only add a dispose listener if item hasn't already on assigned
-			// because it is reused
-			if (item.getData(VIRTUAL_DISPOSE_KEY) == null) {
-				item.setData(VIRTUAL_DISPOSE_KEY, Boolean.TRUE);
-				item.addDisposeListener(new DisposeListener() {
-					public void widgetDisposed(DisposeEvent e) {
-						if (!treeIsDisposed) {
-							Object data = item.getData();
-							if (usingElementMap() && data != null) {
-								unmapElement(data, item);
-							}
-						}
-					}
-				});
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ColumnViewer#getRowPartFromItem(org.eclipse.swt.widgets.Widget)
-	 */
-	protected ViewerRow getViewerRowFromItem(Widget item) {
-		if( cachedRow == null ) {
-			cachedRow = new TreeViewerRow((TreeItem) item);
-		} else {
-			cachedRow.setItem((TreeItem) item);
-		}
-
-		return cachedRow;
-	}
-
-	/**
-	 * Create a new ViewerRow at rowIndex
-	 *
-	 * @param parent
-	 * @param style
-	 * @param rowIndex
-	 * @return ViewerRow
-	 */
-	private ViewerRow createNewRowPart(ViewerRow parent, int style, int rowIndex) {
-		if (parent == null) {
-			if (rowIndex >= 0) {
-				return getViewerRowFromItem(new TreeItem(tree, style, rowIndex));
-			}
-			return getViewerRowFromItem(new TreeItem(tree, style));
-		}
-
-		if (rowIndex >= 0) {
-			return getViewerRowFromItem(new TreeItem((TreeItem) parent.getItem(),
-					SWT.NONE, rowIndex));
-		}
-
-		return getViewerRowFromItem(new TreeItem((TreeItem) parent.getItem(),
-				SWT.NONE));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#internalInitializeTree(org.eclipse.swt.widgets.Control)
-	 */
-	protected void internalInitializeTree(Control widget) {
-		if (contentProviderIsLazy) {
-			if (widget instanceof Tree && widget.getData() != null) {
-				virtualLazyUpdateChildCount(widget, 0);
-				return;
-			}
-		}
-		super.internalInitializeTree(tree);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#updatePlus(org.eclipse.swt.widgets.Item,
-	 *      java.lang.Object)
-	 */
-	protected void updatePlus(Item item, Object element) {
-		if (contentProviderIsLazy) {
-			Object data = item.getData();
-			int itemCount = 0;
-			if (data != null) {
-				// item is already materialized
-				itemCount = ((TreeItem) item).getItemCount();
-			}
-			virtualLazyUpdateHasChildren(item, itemCount);
-		} else {
-			super.updatePlus(item, element);
-		}
-	}
-
-	/**
-	 * Removes the element at the specified index of the parent.  The selection is updated if required.
-	 *
-	 * @param parentOrTreePath the parent element, the input element, or a tree path to the parent element
-	 * @param index child index
-	 * @since 3.3
-	 */
-	public void remove(final Object parentOrTreePath, final int index) {
-		if (checkBusy())
-			return;
-		final List oldSelection = new LinkedList(Arrays
-				.asList(((TreeSelection) getSelection()).getPaths()));
-		preservingSelection(new Runnable() {
-			public void run() {
-				TreePath removedPath = null;
-				if (internalIsInputOrEmptyPath(parentOrTreePath)) {
-					Tree tree = (Tree) getControl();
-					if (index < tree.getItemCount()) {
-						TreeItem item = tree.getItem(index);
-						if (item.getData() != null) {
-							removedPath = getTreePathFromItem(item);
-							disassociate(item);
-						}
-						item.dispose();
-					}
-				} else {
-					Widget[] parentItems = internalFindItems(parentOrTreePath);
-					for (int i = 0; i < parentItems.length; i++) {
-						TreeItem parentItem = (TreeItem) parentItems[i];
-						if (parentItem.isDisposed())
-							continue;
-						if (index < parentItem.getItemCount()) {
-							TreeItem item = parentItem.getItem(index);
-							if (item.getData() != null) {
-								removedPath = getTreePathFromItem(item);
-								disassociate(item);
-							}
-							item.dispose();
-						}
-					}
-				}
-				if (removedPath != null) {
-					boolean removed = false;
-					for (Iterator it = oldSelection.iterator(); it
-							.hasNext();) {
-						TreePath path = (TreePath) it.next();
-						if (path.startsWith(removedPath, getComparer())) {
-							it.remove();
-							removed = true;
-						}
-					}
-					if (removed) {
-						setSelection(new TreeSelection(
-								(TreePath[]) oldSelection
-										.toArray(new TreePath[oldSelection
-												.size()]), getComparer()),
-								false);
-					}
-
-				}
-			}
-		});
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#handleTreeExpand(org.eclipse.swt.events.TreeEvent)
-	 */
-	protected void handleTreeExpand(TreeEvent event) {
-		if (contentProviderIsLazy) {
-			if (event.item.getData() != null) {
-				Item[] children = getChildren(event.item);
-				if (children.length == 1 && children[0].getData()==null) {
-					// we have a dummy child node, ask for an updated child
-					// count
-					virtualLazyUpdateChildCount(event.item, children.length);
-				}
-				fireTreeExpanded(new TreeExpansionEvent(this, event.item
-						.getData()));
-			}
-			return;
-		}
-		super.handleTreeExpand(event);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.AbstractTreeViewer#setContentProvider(org.eclipse.jface.viewers.IContentProvider)
-	 */
-	public void setContentProvider(IContentProvider provider) {
-		contentProviderIsLazy = (provider instanceof ILazyTreeContentProvider)
-				|| (provider instanceof ILazyTreePathContentProvider);
-		contentProviderIsTreeBased = provider instanceof ILazyTreePathContentProvider;
-		super.setContentProvider(provider);
-	}
-
-	/**
-	 * For a TreeViewer with a tree with the VIRTUAL style bit set, inform the
-	 * viewer about whether the given element or tree path has children. Avoid
-	 * calling this method if the number of children has already been set.
-	 *
-	 * @param elementOrTreePath
-	 *            the element, or tree path
-	 * @param hasChildren
-	 *
-	 * @since 3.3
-	 */
-	public void setHasChildren(final Object elementOrTreePath, final boolean hasChildren) {
-		if (checkBusy())
-			return;
-		preservingSelection(new Runnable() {
-			public void run() {
-				if (internalIsInputOrEmptyPath(elementOrTreePath)) {
-					if (hasChildren) {
-						virtualLazyUpdateChildCount(getTree(),
-								getChildren(getTree()).length);
-					} else {
-						setChildCount(elementOrTreePath, 0);
-					}
-					return;
-				}
-				Widget[] items = internalFindItems(elementOrTreePath);
-				for (int i = 0; i < items.length; i++) {
-					TreeItem item = (TreeItem) items[i];
-					if (!hasChildren) {
-						item.setItemCount(0);
-					} else {
-						if (!item.getExpanded()) {
-							item.setItemCount(1);
-							TreeItem child = item.getItem(0);
-							if (child.getData() != null) {
-								disassociate(child);
-							}
-							item.clear(0, true);
-						} else {
-                            virtualLazyUpdateChildCount(item, item.getItemCount());
-                        }
-					}
-				}
-			}
-		});
-	}
-
-	/**
-	 * Update the widget at index.
-	 * @param widget
-	 * @param index
-	 */
-	private void virtualLazyUpdateWidget(Widget widget, int index) {
-		boolean oldBusy = isBusy();
-		setBusy(false);
-		try {
-			if (contentProviderIsTreeBased) {
-				TreePath treePath;
-				if (widget instanceof Item) {
-					if (widget.getData() == null) {
-						// we need to materialize the parent first
-						// see bug 167668
-						// however, that would be too risky
-						// see bug 182782 and bug 182598
-						// so we just ignore this call altogether
-						// and don't do this: virtualMaterializeItem((TreeItem) widget);
-						return;
-					}
-					treePath = getTreePathFromItem((Item) widget);
-				} else {
-					treePath = TreePath.EMPTY;
-				}
-				((ILazyTreePathContentProvider) getContentProvider())
-						.updateElement(treePath, index);
-			} else {
-				((ILazyTreeContentProvider) getContentProvider()).updateElement(
-						widget.getData(), index);
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Update the child count
-	 * @param widget
-	 * @param currentChildCount
-	 */
-	private void virtualLazyUpdateChildCount(Widget widget, int currentChildCount) {
-		boolean oldBusy = isBusy();
-		setBusy(false);
-		try {
-			if (contentProviderIsTreeBased) {
-				TreePath treePath;
-				if (widget instanceof Item) {
-					treePath = getTreePathFromItem((Item) widget);
-				} else {
-					treePath = TreePath.EMPTY;
-				}
-				((ILazyTreePathContentProvider) getContentProvider())
-				.updateChildCount(treePath, currentChildCount);
-			} else {
-				((ILazyTreeContentProvider) getContentProvider()).updateChildCount(widget.getData(), currentChildCount);
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	/**
-	 * Update the item with the current child count.
-	 * @param item
-	 * @param currentChildCount
-	 */
-	private void virtualLazyUpdateHasChildren(Item item, int currentChildCount) {
-		boolean oldBusy = isBusy();
-		setBusy(false);
-		try {
-			if (contentProviderIsTreeBased) {
-				TreePath treePath;
-				treePath = getTreePathFromItem(item);
-				if (currentChildCount == 0) {
-					// item is not expanded (but may have a plus currently)
-					((ILazyTreePathContentProvider) getContentProvider())
-					.updateHasChildren(treePath);
-				} else {
-					((ILazyTreePathContentProvider) getContentProvider())
-					.updateChildCount(treePath, currentChildCount);
-				}
-			} else {
-				((ILazyTreeContentProvider) getContentProvider()).updateChildCount(item.getData(), currentChildCount);
-			}
-		} finally {
-			setBusy(oldBusy);
-		}
-	}
-
-	protected void disassociate(Item item) {
-		if (contentProviderIsLazy) {
-			// avoid causing a callback:
-			item.setText(" "); //$NON-NLS-1$
-		}
-		super.disassociate(item);
-	}
-
-	protected int doGetColumnCount() {
-		return tree.getColumnCount();
-	}
-
-	/**
-	 * Sets a new selection for this viewer and optionally makes it visible.
-	 * <p>
-	 * <b>Currently the <code>reveal</code> parameter is not honored because
-	 * {@link Tree} does not provide an API to only select an item without
-	 * scrolling it into view</b>
-	 * </p>
-	 *
-	 * @param selection
-	 *            the new selection
-	 * @param reveal
-	 *            <code>true</code> if the selection is to be made visible,
-	 *            and <code>false</code> otherwise
-	 */
-	public void setSelection(ISelection selection, boolean reveal) {
-		super.setSelection(selection, reveal);
-	}
-
-	public void editElement(Object element, int column) {
-		if( element instanceof TreePath ) {
-			try {
-				getControl().setRedraw(false);
-				setSelection(new TreeSelection((TreePath) element));
-				TreeItem[] items = tree.getSelection();
-
-				if( items.length == 1 ) {
-					ViewerRow row = getViewerRowFromItem(items[0]);
-
-					if (row != null) {
-						ViewerCell cell = row.getCell(column);
-						if (cell != null) {
-							triggerEditorActivationEvent(new ColumnViewerEditorActivationEvent(cell));
-						}
-					}
-				}
-			} finally {
-				getControl().setRedraw(true);
-			}
-		} else {
-			super.editElement(element, column);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerColumn.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerColumn.java
deleted file mode 100644
index 3da3987..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerColumn.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Tom Schindl and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Tom Schindl - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-
-/**
- * ViewerColumn implementation for TreeViewer to enable column-specific label
- * providers and editing support.
- * 
- * @since 3.3
- * 
- */
-public final class TreeViewerColumn extends ViewerColumn {
-	private TreeColumn column;
-
-	/**
-	 * Creates a new viewer column for the given {@link TreeViewer} on a new
-	 * {@link TreeColumn} with the given style bits. The column is inserted at
-	 * the given index into the list of columns.
-	 * 
-	 * @param viewer
-	 *            the tree viewer to which this column belongs
-	 * @param style
-	 *            the style bits used to create the column, for applicable style bits
-	 *            see {@link TreeColumn}
-	 * @see TreeColumn#TreeColumn(Tree, int)
-	 */
-	public TreeViewerColumn(TreeViewer viewer, int style) {
-		this(viewer, style, -1);
-	}
-
-	/**
-	 * Creates a new viewer column for the given {@link TreeViewer} on a new
-	 * {@link TreeColumn} with the given style bits. The column is added at the
-	 * end of the list of columns.
-	 * 
-	 * @param viewer
-	 *            the tree viewer to which this column belongs
-	 * @param style
-	 *            the style bits used to create the column, for applicable style bits
-	 *            see {@link TreeColumn}
-	 * @param index
-	 *            the index at which to place the newly created column
-	 * @see TreeColumn#TreeColumn(Tree, int, int)
-	 */
-	public TreeViewerColumn(TreeViewer viewer, int style, int index) {
-		this(viewer, createColumn(viewer.getTree(), style, index));
-	}
-
-	/**
-	 * Creates a new viewer column for the given {@link TreeViewer} on the given
-	 * {@link TreeColumn}.
-	 * 
-	 * @param viewer
-	 *            the tree viewer to which this column belongs
-	 * @param column
-	 *            the underlying tree column
-	 */
-	public TreeViewerColumn(TreeViewer viewer, TreeColumn column) {
-		super(viewer, column);
-		this.column = column;
-	}
-	
-	private static TreeColumn createColumn(Tree table, int style, int index) {
-		if (index >= 0) {
-			return new TreeColumn(table, style, index);
-		}
-
-		return new TreeColumn(table, style);
-	}
-
-	/**
-	 * @return the underlying SWT column
-	 */
-	public TreeColumn getColumn() {
-		return column;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerEditor.java
deleted file mode 100644
index 492a8b1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerEditor.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											   fixes in bug 198665, 200731, 187963
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.CellEditor.LayoutData;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TreeEditor;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-
-/**
- * This is an editor implementation for {@link Tree}
- *
- * @since 3.3
- */
-public class TreeViewerEditor extends ColumnViewerEditor {
-	/**
-	 * This viewer's tree editor.
-	 */
-	private TreeEditor treeEditor;
-
-	private SWTFocusCellManager focusCellManager;
-
-	/**
-	 * @param viewer
-	 *            the viewer the editor is attached to
-	 * @param focusCellManager
-	 *            the cell focus manager if one used or <code>null</code>
-	 * @param editorActivationStrategy
-	 *            the strategy used to decide about the editor activation
-	 * @param feature
-	 *            the feature mask
-	 */
-	TreeViewerEditor(TreeViewer viewer, SWTFocusCellManager focusCellManager,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		super(viewer, editorActivationStrategy, feature);
-		treeEditor = new TreeEditor(viewer.getTree());
-		this.focusCellManager = focusCellManager;
-	}
-
-	/**
-	 * Create a customized editor with focusable cells
-	 *
-	 * @param viewer
-	 *            the viewer the editor is created for
-	 * @param focusCellManager
-	 *            the cell focus manager if one needed else <code>null</code>
-	 * @param editorActivationStrategy
-	 *            activation strategy to control if an editor activated
-	 * @param feature
-	 *            bit mask controlling the editor
-	 *            <ul>
-	 *            <li>{@link ColumnViewerEditor#DEFAULT}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_HORIZONTAL}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_VERTICAL}</li>
-	 *            </ul>
-	 * @see #create(TreeViewer, ColumnViewerEditorActivationStrategy, int)
-	 */
-	public static void create(TreeViewer viewer,
-			SWTFocusCellManager focusCellManager,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		TreeViewerEditor editor = new TreeViewerEditor(viewer,
-				focusCellManager, editorActivationStrategy, feature);
-		viewer.setColumnViewerEditor(editor);
-		if (focusCellManager != null) {
-			focusCellManager.init();
-		}
-	}
-
-	/**
-	 * Create a customized editor whose activation process is customized
-	 *
-	 * @param viewer
-	 *            the viewer the editor is created for
-	 * @param editorActivationStrategy
-	 *            activation strategy to control if an editor activated
-	 * @param feature
-	 *            bit mask controlling the editor
-	 *            <ul>
-	 *            <li>{@link ColumnViewerEditor#DEFAULT}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_CYCLE_IN_ROW}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_HORIZONTAL}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_MOVE_TO_ROW_NEIGHBOR}</li>
-	 *            <li>{@link ColumnViewerEditor#TABBING_VERTICAL}</li>
-	 *            </ul>
-	 */
-	public static void create(TreeViewer viewer,
-			ColumnViewerEditorActivationStrategy editorActivationStrategy,
-			int feature) {
-		create(viewer, null, editorActivationStrategy, feature);
-	}
-
-	protected void setEditor(Control w, Item item, int fColumnNumber) {
-		treeEditor.setEditor(w, (TreeItem) item, fColumnNumber);
-	}
-
-	protected void setLayoutData(LayoutData layoutData) {
-		treeEditor.grabHorizontal = layoutData.grabHorizontal;
-		treeEditor.horizontalAlignment = layoutData.horizontalAlignment;
-		treeEditor.minimumWidth = layoutData.minimumWidth;
-		treeEditor.verticalAlignment = layoutData.verticalAlignment;
-		if( layoutData.minimumHeight != SWT.DEFAULT ) {
-			treeEditor.minimumHeight = layoutData.minimumHeight;
-		}
-	}
-
-	public ViewerCell getFocusCell() {
-		if (focusCellManager != null) {
-			return focusCellManager.getFocusCell();
-		}
-
-		return super.getFocusCell();
-	}
-
-	protected void updateFocusCell(ViewerCell focusCell,
-			ColumnViewerEditorActivationEvent event) {
-		// Update the focus cell when we activated the editor with these 2
-		// events
-		if (event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
-				|| event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL) {
-
-			List l = getViewer().getSelectionFromWidget();
-
-			if (focusCellManager != null) {
-				focusCellManager.setFocusCell(focusCell);
-			}
-
-			if (!l.contains(focusCell.getElement())) {
-				getViewer().setSelection(
-						new TreeSelection(focusCell.getViewerRow()
-								.getTreePath()),true);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java
deleted file mode 100644
index 6944a0f..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerFocusCellManager.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl<tom.schindl@bestsolution.at> - initial API and implementation
- *     											- fix in bug: 195908, 210752
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-
-/**
- * This class is responsible to provide the concept of cells for {@link Tree}.
- * This concept is needed to provide features like editor activation with the
- * keyboard
- *
- * @since 3.3
- *
- */
-public class TreeViewerFocusCellManager extends SWTFocusCellManager {
-	private static final CellNavigationStrategy TREE_NAVIGATE = new CellNavigationStrategy() {
-		public void collapse(ColumnViewer viewer, ViewerCell cellToCollapse,
-				Event event) {
-			if (cellToCollapse != null) {
-				((TreeItem) cellToCollapse.getItem()).setExpanded(false);
-			}
-		}
-
-		public void expand(ColumnViewer viewer, ViewerCell cellToExpand,
-				Event event) {
-			if (cellToExpand != null) {
-				TreeViewer v = (TreeViewer) viewer;
-				v.setExpandedState(v.getTreePathFromItem((Item) cellToExpand
-						.getItem()), true);
-			}
-		}
-
-		public boolean isCollapseEvent(ColumnViewer viewer,
-				ViewerCell cellToCollapse, Event event) {
-
-			if (cellToCollapse == null) {
-				return false;
-			}
-
-			return cellToCollapse != null
-					&& ((TreeItem) cellToCollapse.getItem()).getExpanded()
-					&& event.keyCode == SWT.ARROW_LEFT
-					&& isFirstColumnCell(cellToCollapse);
-		}
-
-		public boolean isExpandEvent(ColumnViewer viewer,
-				ViewerCell cellToExpand, Event event) {
-
-			if (cellToExpand == null) {
-				return false;
-			}
-
-			return cellToExpand != null
-					&& ((TreeItem) cellToExpand.getItem()).getItemCount() > 0
-					&& !((TreeItem) cellToExpand.getItem()).getExpanded()
-					&& event.keyCode == SWT.ARROW_RIGHT
-					&& isFirstColumnCell(cellToExpand);
-		}
-
-		private boolean isFirstColumnCell(ViewerCell cell) {
-			return cell.getViewerRow().getVisualIndex(cell.getColumnIndex()) == 0;
-		}
-	};
-
-	/**
-	 * Create a new manager using a default navigation strategy:
-	 * <ul>
-	 * <li><code>SWT.ARROW_UP</code>: navigate to cell above</li>
-	 * <li><code>SWT.ARROW_DOWN</code>: navigate to cell below</li>
-	 * <li><code>SWT.ARROW_RIGHT</code>: on first column (collapses if item
-	 * is expanded) else navigate to next visible cell on the right</li>
-	 * <li><code>SWT.ARROW_LEFT</code>: on first column (expands if item is
-	 * collapsed) else navigate to next visible cell on the left</li>
-	 * </ul>
-	 *
-	 * @param viewer
-	 *            the viewer the manager is bound to
-	 * @param focusDrawingDelegate
-	 *            the delegate responsible to highlight selected cell
-	 */
-	public TreeViewerFocusCellManager(TreeViewer viewer,
-			FocusCellHighlighter focusDrawingDelegate) {
-		this(viewer, focusDrawingDelegate, TREE_NAVIGATE);
-	}
-
-	/**
-	 * Create a new manager with a custom navigation strategy
-	 *
-	 * @param viewer
-	 *            the viewer the manager is bound to
-	 * @param focusDrawingDelegate
-	 *            the delegate responsible to highlight selected cell
-	 * @param navigationStrategy
-	 *            the strategy used to navigate the cells
-	 * @since 3.4
-	 */
-	public TreeViewerFocusCellManager(TreeViewer viewer,
-			FocusCellHighlighter focusDrawingDelegate,
-			CellNavigationStrategy navigationStrategy) {
-		super(viewer, focusDrawingDelegate, navigationStrategy);
-	}
-
-	ViewerCell getInitialFocusCell() {
-		Tree tree = (Tree) getViewer().getControl();
-
-		if (! tree.isDisposed() && tree.getItemCount() > 0 && ! tree.getItem(0).isDisposed()) {
-			return getViewer().getViewerRowFromItem(tree.getItem(0)).getCell(0);
-		}
-
-		return null;
-	}
-
-	public ViewerCell getFocusCell() {
-		ViewerCell cell = super.getFocusCell();
-		Tree t = (Tree) getViewer().getControl();
-
-		// It is possible that the selection has changed under the hood
-		if (cell != null) {
-			if (t.getSelection().length == 1
-					&& t.getSelection()[0] != cell.getItem()) {
-				setFocusCell(getViewer().getViewerRowFromItem(
-						t.getSelection()[0]).getCell(cell.getColumnIndex()));
-			}
-		}
-
-		return super.getFocusCell();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerRow.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerRow.java
deleted file mode 100644
index 5becd4e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerRow.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											 - fix in bug: 174355,171126,,195908,198035,215069,227421
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.LinkedList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * TreeViewerRow is the Tree implementation of ViewerRow.
- *
- * @since 3.3
- *
- */
-public class TreeViewerRow extends ViewerRow {
-	private TreeItem item;
-
-	/**
-	 * Create a new instance of the receiver.
-	 *
-	 * @param item
-	 */
-	TreeViewerRow(TreeItem item) {
-		this.item = item;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getBounds(int)
-	 */
-	public Rectangle getBounds(int columnIndex) {
-		return item.getBounds(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getBounds()
-	 */
-	public Rectangle getBounds() {
-		return item.getBounds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getColumnCount()
-	 */
-	public int getColumnCount() {
-		return item.getParent().getColumnCount();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getItem()
-	 */
-	public Widget getItem() {
-		return item;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getBackground(int)
-	 */
-	public Color getBackground(int columnIndex) {
-		return item.getBackground(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getFont(int)
-	 */
-	public Font getFont(int columnIndex) {
-		return item.getFont(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getForeground(int)
-	 */
-	public Color getForeground(int columnIndex) {
-		return item.getForeground(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getImage(int)
-	 */
-	public Image getImage(int columnIndex) {
-		return item.getImage(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getText(int)
-	 */
-	public String getText(int columnIndex) {
-		return item.getText(columnIndex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#setBackground(int,
-	 *      org.eclipse.swt.graphics.Color)
-	 */
-	public void setBackground(int columnIndex, Color color) {
-		item.setBackground(columnIndex, color);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#setFont(int,
-	 *      org.eclipse.swt.graphics.Font)
-	 */
-	public void setFont(int columnIndex, Font font) {
-		item.setFont(columnIndex, font);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#setForeground(int,
-	 *      org.eclipse.swt.graphics.Color)
-	 */
-	public void setForeground(int columnIndex, Color color) {
-		item.setForeground(columnIndex, color);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#setImage(int,
-	 *      org.eclipse.swt.graphics.Image)
-	 */
-	public void setImage(int columnIndex, Image image) {
-		Image oldImage = item.getImage(columnIndex);
-		if (image != oldImage) {
-			item.setImage(columnIndex, image);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#setText(int, java.lang.String)
-	 */
-	public void setText(int columnIndex, String text) {
-		item.setText(columnIndex, text == null ? "" : text); //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.eclipse.jface.viewers.ViewerRow#getControl()
-	 */
-	public Control getControl() {
-		return item.getParent();
-	}
-
-	public ViewerRow getNeighbor(int direction, boolean sameLevel) {
-		if (direction == ViewerRow.ABOVE) {
-			return getRowAbove(sameLevel);
-		} else if (direction == ViewerRow.BELOW) {
-			return getRowBelow(sameLevel);
-		} else {
-			throw new IllegalArgumentException(
-					"Illegal value of direction argument."); //$NON-NLS-1$
-		}
-	}
-
-	private ViewerRow getRowBelow(boolean sameLevel) {
-		Tree tree = item.getParent();
-
-		// This means we have top-level item
-		if (item.getParentItem() == null) {
-			if (sameLevel || !item.getExpanded()) {
-				int index = tree.indexOf(item) + 1;
-
-				if (index < tree.getItemCount()) {
-					return new TreeViewerRow(tree.getItem(index));
-				}
-			} else if (item.getExpanded() && item.getItemCount() > 0) {
-				return new TreeViewerRow(item.getItem(0));
-			}
-		} else {
-			if (sameLevel || !item.getExpanded()) {
-				TreeItem parentItem = item.getParentItem();
-
-				int nextIndex = parentItem.indexOf(item) + 1;
-				int totalIndex = parentItem.getItemCount();
-
-				TreeItem itemAfter;
-
-				// This would mean that it was the last item
-				if (nextIndex == totalIndex) {
-					itemAfter = findNextItem(parentItem);
-				} else {
-					itemAfter = parentItem.getItem(nextIndex);
-				}
-
-				if (itemAfter != null) {
-					return new TreeViewerRow(itemAfter);
-				}
-
-			} else if (item.getExpanded() && item.getItemCount() > 0) {
-				return new TreeViewerRow(item.getItem(0));
-			}
-		}
-
-		return null;
-	}
-
-	private ViewerRow getRowAbove(boolean sameLevel) {
-		Tree tree = item.getParent();
-
-		// This means we have top-level item
-		if (item.getParentItem() == null) {
-			int index = tree.indexOf(item) - 1;
-			TreeItem nextTopItem = null;
-
-			if (index >= 0) {
-				nextTopItem = tree.getItem(index);
-			}
-
-			if (nextTopItem != null) {
-				if (sameLevel) {
-					return new TreeViewerRow(nextTopItem);
-				}
-
-				return new TreeViewerRow(findLastVisibleItem(nextTopItem));
-			}
-		} else {
-			TreeItem parentItem = item.getParentItem();
-			int previousIndex = parentItem.indexOf(item) - 1;
-
-			TreeItem itemBefore;
-			if (previousIndex >= 0) {
-				if (sameLevel) {
-					itemBefore = parentItem.getItem(previousIndex);
-				} else {
-					itemBefore = findLastVisibleItem(parentItem
-							.getItem(previousIndex));
-				}
-			} else {
-				itemBefore = parentItem;
-			}
-
-			if (itemBefore != null) {
-				return new TreeViewerRow(itemBefore);
-			}
-		}
-
-		return null;
-	}
-
-	private TreeItem findLastVisibleItem(TreeItem parentItem) {
-		TreeItem rv = parentItem;
-
-		while (rv.getExpanded() && rv.getItemCount() > 0) {
-			rv = rv.getItem(rv.getItemCount() - 1);
-		}
-
-		return rv;
-	}
-
-	private TreeItem findNextItem(TreeItem item) {
-		TreeItem rv = null;
-		Tree tree = item.getParent();
-		TreeItem parentItem = item.getParentItem();
-
-		int nextIndex;
-		int totalItems;
-
-		if (parentItem == null) {
-			nextIndex = tree.indexOf(item) + 1;
-			totalItems = tree.getItemCount();
-		} else {
-			nextIndex = parentItem.indexOf(item) + 1;
-			totalItems = parentItem.getItemCount();
-		}
-
-		// This is once more the last item in the tree
-		// Search on
-		if (nextIndex == totalItems) {
-			if (item.getParentItem() != null) {
-				rv = findNextItem(item.getParentItem());
-			}
-		} else {
-			if (parentItem == null) {
-				rv = tree.getItem(nextIndex);
-			} else {
-				rv = parentItem.getItem(nextIndex);
-			}
-		}
-
-		return rv;
-	}
-
-	public TreePath getTreePath() {
-		TreeItem tItem = item;
-		LinkedList segments = new LinkedList();
-		while (tItem != null) {
-			Object segment = tItem.getData();
-			Assert.isNotNull(segment);
-			segments.addFirst(segment);
-			tItem = tItem.getParentItem();
-		}
-
-		return new TreePath(segments.toArray());
-	}
-
-	void setItem(TreeItem item) {
-		this.item = item;
-	}
-
-	public Object clone() {
-		return new TreeViewerRow(item);
-	}
-
-	public Object getElement() {
-		return item.getData();
-	}
-
-	public int getVisualIndex(int creationIndex) {
-		int[] order = item.getParent().getColumnOrder();
-
-		for (int i = 0; i < order.length; i++) {
-			if (order[i] == creationIndex) {
-				return i;
-			}
-		}
-
-		return super.getVisualIndex(creationIndex);
-	}
-
-	public int getCreationIndex(int visualIndex) {
-		if( item != null && ! item.isDisposed() && hasColumns() && isValidOrderIndex(visualIndex) ) {
-			return item.getParent().getColumnOrder()[visualIndex];
-		}
-		return super.getCreationIndex(visualIndex);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getTextBounds(int)
-	 */
-	public Rectangle getTextBounds(int index) {
-		return item.getTextBounds(index);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerRow#getImageBounds(int)
-	 */
-	public Rectangle getImageBounds(int index) {
-		return item.getImageBounds(index);
-	}	
-	
-	private boolean hasColumns() {
-		return this.item.getParent().getColumnCount() != 0;
-	}
-
-	private boolean isValidOrderIndex(int currentIndex) {
-		return currentIndex < this.item.getParent().getColumnOrder().length;
-	}
-
-	int getWidth(int columnIndex) {
-		return item.getParent().getColumn(columnIndex).getWidth();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/Viewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/Viewer.java
deleted file mode 100644
index bca6433..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/Viewer.java
+++ /dev/null
@@ -1,406 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-
-/**
- * A viewer is a model-based adapter on a widget.
- * <p>
- * A viewer can be created as an adapter on a pre-existing control (e.g., 
- * creating a <code>ListViewer</code> on an existing <code>List</code> control).
- * All viewers also provide a convenience constructor for creating the control.
- * </p>
- * <p>
- * Implementing a concrete viewer typically involves the following steps:
- * <ul>
- * <li>
- * create SWT controls for viewer (in constructor) (optional)
- * </li>
- * <li>
- * initialize SWT controls from input (inputChanged)
- * </li>
- * <li>
- * define viewer-specific update methods
- * </li>
- * <li>
- * support selections (<code>setSelection</code>, <code>getSelection</code>)
- * </li>
- * </ul>
- * </p>
- */
-public abstract class Viewer implements IInputSelectionProvider {
-
-    /**
-     * List of selection change listeners (element type: <code>ISelectionChangedListener</code>).
-     *
-     * @see #fireSelectionChanged
-     */
-    private ListenerList selectionChangedListeners = new ListenerList();
-
-    /**
-     * List of help request listeners (element type: <code>org.eclipse.swt.events.HelpListener</code>).
-     * Help request listeners.
-     *
-     * @see #handleHelpRequest
-     */
-    private ListenerList helpListeners = new ListenerList();
-
-    /**
-     * The names of this viewer's properties.
-     * <code>null</code> if this viewer has no properties.
-     *
-     * @see #setData
-     */
-    private String[] keys;
-
-    /**
-     * The values of this viewer's properties.
-     * <code>null</code> if this viewer has no properties.
-     * This array parallels the value of the <code>keys</code> field.
-     *
-     * @see #setData
-     */
-    private Object[] values;
-
-    /**
-     * Remembers whether we've hooked the help listener on the control or not.
-     */
-    private boolean helpHooked = false;
-
-    /**
-     * Help listener for the control, created lazily when client's first help listener is added.
-     */
-    private HelpListener helpListener = null;
-
-    /**
-     * Unique key for associating element data with widgets.
-     * @see org.eclipse.swt.widgets.Widget#setData(String, Object)
-     */
-    protected static final String WIDGET_DATA_KEY = "org.eclipse.jface.viewers.WIDGET_DATA";//$NON-NLS-1$
-
-    /**
-     * Creates a new viewer.
-     */
-    protected Viewer() {
-    }
-
-    /**
-     * Adds a listener for help requests in this viewer.
-     * Has no effect if an identical listener is already registered.
-     *
-     * @param listener a help listener
-     */
-    public void addHelpListener(HelpListener listener) {
-        helpListeners.add(listener);
-        if (!helpHooked) {
-            Control control = getControl();
-            if (control != null && !control.isDisposed()) {
-                if (this.helpListener == null) {
-                    this.helpListener = new HelpListener() {
-                        public void helpRequested(HelpEvent event) {
-                            handleHelpRequest(event);
-                        }
-                    };
-                }
-                control.addHelpListener(this.helpListener);
-                helpHooked = true;
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void addSelectionChangedListener(ISelectionChangedListener listener) {
-        selectionChangedListeners.add(listener);
-    }
-
-    /**
-     * Notifies any help listeners that help has been requested.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param event a help event
-     *
-     * @see HelpListener#helpRequested(org.eclipse.swt.events.HelpEvent)
-     */
-    protected void fireHelpRequested(HelpEvent event) {
-        Object[] listeners = helpListeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-            ((HelpListener) listeners[i]).helpRequested(event);
-        }
-    }
-
-    /**
-     * Notifies any selection changed listeners that the viewer's selection has changed.
-     * Only listeners registered at the time this method is called are notified.
-     *
-     * @param event a selection changed event
-     *
-     * @see ISelectionChangedListener#selectionChanged
-     */
-    protected void fireSelectionChanged(final SelectionChangedEvent event) {
-        Object[] listeners = selectionChangedListeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-            final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-            SafeRunnable.run(new SafeRunnable() {
-                public void run() {
-                    l.selectionChanged(event);
-                }
-            });
-        }
-    }
-
-    /**
-     * Returns the primary control associated with this viewer.
-     *
-     * @return the SWT control which displays this viewer's content
-     */
-    public abstract Control getControl();
-
-    /**
-     * Returns the value of the property with the given name,
-     * or <code>null</code> if the property is not found.
-     * <p>
-     * The default implementation performs a (linear) search of
-     * an internal table. Overriding this method is generally not
-     * required if the number of different keys is small. If a more
-     * efficient representation of a viewer's properties is required,
-     * override both <code>getData</code> and <code>setData</code>.
-     * </p>
-     *
-     * @param key the property name
-     * @return the property value, or <code>null</code> if
-     *    the property is not found
-     */
-    public Object getData(String key) {
-        Assert.isNotNull(key);
-        if (keys == null) {
-			return null;
-		}
-        for (int i = 0; i < keys.length; i++) {
-            if (keys[i].equals(key)) {
-				return values[i];
-			}
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Copy-down of method declared on <code>IInputProvider</code>.
-     */
-    public abstract Object getInput();
-
-    /* (non-Javadoc)
-     * Copy-down of method declared on <code>ISelectionProvider</code>.
-     */
-    public abstract ISelection getSelection();
-
-    /**
-     * Handles a help request from the underlying SWT control.
-     * The default behavior is to fire a help request,
-     * with the event's data modified to hold this viewer.
-     * @param event the event
-     * 
-     */
-    protected void handleHelpRequest(HelpEvent event) {
-        Object oldData = event.data;
-        event.data = this;
-        fireHelpRequested(event);
-        event.data = oldData;
-    }
-
-    /**
-     * Internal hook method called when the input to this viewer is
-     * initially set or subsequently changed.
-     * <p>
-     * The default implementation does nothing. Subclassers may override 
-     * this method to do something when a viewer's input is set.
-     * A typical use is populate the viewer.
-     * </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 void inputChanged(Object input, Object oldInput) {
-    }
-
-    /**
-     * Refreshes this viewer completely with information freshly obtained from this
-     * viewer's model.
-     */
-    public abstract void refresh();
-
-    /**
-     * Removes the given help listener from this viewer.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a help listener
-     */
-    public void removeHelpListener(HelpListener listener) {
-        helpListeners.remove(listener);
-        if (helpListeners.size() == 0) {
-            Control control = getControl();
-            if (control != null && !control.isDisposed()) {
-                control.removeHelpListener(this.helpListener);
-                helpHooked = false;
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void removeSelectionChangedListener(
-            ISelectionChangedListener listener) {
-        selectionChangedListeners.remove(listener);
-    }
-
-    /**
-     * Scrolls the viewer's control down by one item from the given
-     * display-relative coordinates.  Returns the newly revealed Item,
-     * or <code>null</code> if no scrolling occurred or if the viewer
-     * doesn't represent an item-based widget.
-     *
-     * @param x horizontal coordinate
-     * @param y vertical coordinate
-     * @return the item scrolled down to
-     */
-    public Item scrollDown(int x, int y) {
-        return null;
-    }
-
-    /**
-     * Scrolls the viewer's control up by one item from the given
-     * display-relative coordinates.  Returns the newly revealed Item,
-     * or <code>null</code> if no scrolling occurred or if the viewer
-     * doesn't represent an item-based widget.
-     *
-     * @param x horizontal coordinate
-     * @param y vertical coordinate
-     * @return the item scrolled up to
-     */
-    public Item scrollUp(int x, int y) {
-        return null;
-    }
-
-    /**
-     * Sets the value of the property with the given name to the
-     * given value, or to <code>null</code> if the property is to be
-     * removed. If this viewer has such a property, its value is
-     * replaced; otherwise a new property is added.
-     * <p>
-     * The default implementation records properties in an internal
-     * table which is searched linearly. Overriding this method is generally not
-     * required if the number of different keys is small. If a more
-     * efficient representation of a viewer's properties is required,
-     * override both <code>getData</code> and <code>setData</code>.
-     * </p>
-     *
-     * @param key the property name
-     * @param value the property value, or <code>null</code> if
-     *    the property is not found
-     */
-    public void setData(String key, Object value) {
-        Assert.isNotNull(key);
-        /* Remove the key/value pair */
-        if (value == null) {
-            if (keys == null) {
-				return;
-			}
-            int index = 0;
-            while (index < keys.length && !keys[index].equals(key)) {
-				index++;
-			}
-            if (index == keys.length) {
-				return;
-			}
-            if (keys.length == 1) {
-                keys = null;
-                values = null;
-            } else {
-                String[] newKeys = new String[keys.length - 1];
-                Object[] newValues = new Object[values.length - 1];
-                System.arraycopy(keys, 0, newKeys, 0, index);
-                System.arraycopy(keys, index + 1, newKeys, index,
-                        newKeys.length - index);
-                System.arraycopy(values, 0, newValues, 0, index);
-                System.arraycopy(values, index + 1, newValues, index,
-                        newValues.length - index);
-                keys = newKeys;
-                values = newValues;
-            }
-            return;
-        }
-
-        /* Add the key/value pair */
-        if (keys == null) {
-            keys = new String[] { key };
-            values = new Object[] { value };
-            return;
-        }
-        for (int i = 0; i < keys.length; i++) {
-            if (keys[i].equals(key)) {
-                values[i] = value;
-                return;
-            }
-        }
-        String[] newKeys = new String[keys.length + 1];
-        Object[] newValues = new Object[values.length + 1];
-        System.arraycopy(keys, 0, newKeys, 0, keys.length);
-        System.arraycopy(values, 0, newValues, 0, values.length);
-        newKeys[keys.length] = key;
-        newValues[values.length] = value;
-        keys = newKeys;
-        values = newValues;
-    }
-
-    /**
-     * Sets or clears the input for this viewer.
-     *
-     * @param input the input of this viewer, or <code>null</code> if none
-     */
-    public abstract void setInput(Object input);
-
-    /**
-	 * The viewer implementation of this <code>ISelectionProvider</code>
-	 * method make the new selection for this viewer without making it visible.
-	 * <p>
-	 * This method is equivalent to <code>setSelection(selection,false)</code>.
-	 * </p>
-	 * <p>
-	 * Note that some implementations may not be able to set the selection
-	 * without also revealing it, for example (as of 3.3) TreeViewer.
-	 * </p>
-	 */
-    public void setSelection(ISelection selection) {
-        setSelection(selection, false);
-    }
-
-    /**
-     * Sets a new selection for this viewer and optionally makes it visible.
-     * <p>
-     * Subclasses must implement this method.
-     * </p>
-     *
-     * @param selection the new selection
-     * @param reveal <code>true</code> if the selection is to be made
-     *   visible, and <code>false</code> otherwise
-     */
-    public abstract void setSelection(ISelection selection, boolean reveal);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerCell.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerCell.java
deleted file mode 100644
index 872e179..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerCell.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *     											 - fix in bug: 195908,198035,215069,215735,227421
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * The ViewerCell is the JFace representation of a cell entry in a ViewerRow.
- *
- * @since 3.3
- *
- */
-public class ViewerCell {
-	private int columnIndex;
-
-	private ViewerRow row;
-
-	private Object element;
-
-	/**
-	 * Constant denoting the cell above current one (value is 1).
-	 */
-	public static int ABOVE = 1;
-
-	/**
-	 * Constant denoting the cell below current one (value is 2).
-	 */
-	public static int BELOW = 1 << 1;
-
-	/**
-	 * Constant denoting the cell to the left of the current one (value is 4).
-	 */
-	public static int LEFT = 1 << 2;
-
-	/**
-	 * Constant denoting the cell to the right of the current one (value is 8).
-	 */
-	public static int RIGHT = 1 << 3;
-
-	
-	/**
-	 * Create a new instance of the receiver on the row.
-	 *
-	 * @param row
-	 * @param columnIndex
-	 */
-	ViewerCell(ViewerRow row, int columnIndex, Object element) {
-		this.row = row;
-		this.columnIndex = columnIndex;
-		this.element = element;
-	}
-
-	/**
-	 * Get the index of the cell.
-	 *
-	 * @return the index
-	 */
-	public int getColumnIndex() {
-		return columnIndex;
-	}
-
-	/**
-	 * Get the bounds of the cell.
-	 *
-	 * @return {@link Rectangle}
-	 */
-	public Rectangle getBounds() {
-		return row.getBounds(columnIndex);
-	}
-
-	/**
-	 * Get the element this row represents.
-	 *
-	 * @return {@link Object}
-	 */
-	public Object getElement() {
-		if (element != null) {
-			return element;
-		}
-
-		if (row != null) {
-			return row.getElement();
-		}
-
-		return null;
-	}
-
-	/**
-	 * Return the text for the cell.
-	 *
-	 * @return {@link String}
-	 */
-	public String getText() {
-		return row.getText(columnIndex);
-	}
-
-	/**
-	 * Return the Image for the cell.
-	 *
-	 * @return {@link Image} or <code>null</code>
-	 */
-	public Image getImage() {
-		return row.getImage(columnIndex);
-	}
-
-	/**
-	 * Set the background color of the cell.
-	 *
-	 * @param background
-	 */
-	public void setBackground(Color background) {
-		row.setBackground(columnIndex, background);
-
-	}
-
-	/**
-	 * Set the foreground color of the cell.
-	 *
-	 * @param foreground
-	 */
-	public void setForeground(Color foreground) {
-		row.setForeground(columnIndex, foreground);
-
-	}
-
-	/**
-	 * Set the font of the cell.
-	 *
-	 * @param font
-	 */
-	public void setFont(Font font) {
-		row.setFont(columnIndex, font);
-
-	}
-
-	/**
-	 * Set the text for the cell.
-	 *
-	 * @param text
-	 */
-	public void setText(String text) {
-		row.setText(columnIndex, text);
-
-	}
-
-	/**
-	 * Set the Image for the cell.
-	 *
-	 * @param image
-	 */
-	public void setImage(Image image) {
-		row.setImage(columnIndex, image);
-
-	}
-	
-	/**
-	 * Set the style ranges to be applied on the text label
-	 * Note: Requires {@link StyledCellLabelProvider} with owner draw enabled.
-	 * 
-	 * @param styleRanges the styled ranges
-	 * 
-	 * @since 3.4
-	 */
-	public void setStyleRanges(StyleRange[] styleRanges) {
-		row.setStyleRanges(columnIndex, styleRanges);
-	}
-	
-	
-	/**
-	 * Returns the style ranges to be applied on the text label or <code>null</code> if no
-	 * style ranges have been set.
-	 * 
-	 * @return styleRanges the styled ranges
-	 * 
-	 * @since 3.4
-	 */
-	public StyleRange[] getStyleRanges() {
-		return row.getStyleRanges(columnIndex);
-	}
-
-	/**
-	 * Set the columnIndex.
-	 *
-	 * @param column
-	 */
-	void setColumn(int column) {
-		columnIndex = column;
-
-	}
-
-	/**
-	 * Set the row to rowItem and the columnIndex to column.
-	 *
-	 * @param rowItem
-	 * @param column
-	 */
-	void update(ViewerRow rowItem, int column, Object element) {
-		row = rowItem;
-		columnIndex = column;
-		this.element = element;
-	}
-
-	/**
-	 * Return the item for the receiver.
-	 *
-	 * @return {@link Item}
-	 */
-	public Widget getItem() {
-		return row.getItem();
-	}
-
-	/**
-	 * Get the control for this cell.
-	 *
-	 * @return {@link Control}
-	 */
-	public Control getControl() {
-		return row.getControl();
-	}
-
-	/**
-	 * Get the current index. This can be different from the original index when
-	 * columns are reordered
-	 *
-	 * @return the current index (as shown in the UI)
-	 * @since 3.4
-	 */
-	public int getVisualIndex() {
-		return row.getVisualIndex(getColumnIndex());
-	}
-
-	/**
-	 * Returns the specified neighbor of this cell, or <code>null</code> if no
-	 * neighbor exists in the given direction. Direction constants can be
-	 * combined by bitwise OR; for example, this method will return the cell to
-	 * the upper-left of the current cell by passing {@link #ABOVE} |
-	 * {@link #LEFT}. If <code>sameLevel</code> is <code>true</code>, only
-	 * cells in sibling rows (under the same parent) will be considered.
-	 *
-	 * @param directionMask
-	 *            the direction mask used to identify the requested neighbor
-	 *            cell
-	 * @param sameLevel
-	 *            if <code>true</code>, only consider cells from sibling rows
-	 * @return the requested neighbor cell, or <code>null</code> if not found
-	 */
-	public ViewerCell getNeighbor(int directionMask, boolean sameLevel) {
-		ViewerRow row;
-
-		if ((directionMask & ABOVE) == ABOVE) {
-			row = this.row.getNeighbor(ViewerRow.ABOVE, sameLevel);
-		} else if ((directionMask & BELOW) == BELOW) {
-			row = this.row.getNeighbor(ViewerRow.BELOW, sameLevel);
-		} else {
-			row = this.row;
-		}
-
-		if (row != null) {
-			int columnIndex;
-			columnIndex = getVisualIndex();
-
-			int modifier = 0;
-
-			if ((directionMask & LEFT) == LEFT) {
-				modifier = -1;
-			} else if ((directionMask & RIGHT) == RIGHT) {
-				modifier = 1;
-			}
-
-			columnIndex += modifier;
-
-			if (columnIndex >= 0 && columnIndex < row.getColumnCount()) {
-				ViewerCell cell = row.getCellAtVisualIndex(columnIndex);
-				if( cell != null ) {
-					while( cell != null && columnIndex < row.getColumnCount() - 1  && columnIndex > 0 ) {
-						if( cell.isVisible() ) {
-							break;
-						}
-
-						columnIndex += modifier;
-						cell = row.getCellAtVisualIndex(columnIndex);
-						if( cell == null ) {
-							break;
-						}
-					}
-				}
-
-				return cell;
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * @return the row
-	 */
-	public ViewerRow getViewerRow() {
-		return row;
-	}
-
-	/**
-	 * The location and bounds of the area where the text is drawn depends on
-	 * various things (image displayed, control with SWT.CHECK)
-	 *
-	 * @return The bounds of the of the text area. May return <code>null</code>
-	 *         if the underlying widget implementation doesn't provide this
-	 *         information
-	 * @since 3.4
-	 */
-	public Rectangle getTextBounds() {
-		return row.getTextBounds(columnIndex);
-	}
-	
-	/**
-	 * Returns the location and bounds of the area where the image is drawn 
-	 * 
-	 * @return The bounds of the of the image area. May return <code>null</code>
-	 *         if the underlying widget implementation doesn't provide this
-	 *         information
-	 * @since 3.4
-	 */
-	public Rectangle getImageBounds() {
-		return row.getImageBounds(columnIndex);
-	}
-
-	/**
-	 * Gets the foreground color of the cell.
-	 * 
-	 * @return the foreground of the cell or <code>null</code> for the default foreground
-	 * 
-	 * @since 3.4
-	 */
-	public Color getForeground() {
-		return row.getForeground(columnIndex);
-	}
-	
-	/**
-	 * Gets the background color of the cell.
-	 * 
-	 * @return the background of the cell or <code>null</code> for the default background
-	 * 
-	 * @since 3.4
-	 */
-	public Color getBackground() {
-		return row.getBackground(columnIndex);
-	}
-	
-	/**
-	 * Gets the font of the cell.
-	 * 
-	 * @return the font of the cell or <code>null</code> for the default font
-	 * 
-	 * @since 3.4
-	 */
-	public Font getFont() {
-		return row.getFont(columnIndex);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + columnIndex;
-		result = prime * result + ((row == null) ? 0 : row.hashCode());
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final ViewerCell other = (ViewerCell) obj;
-		if (columnIndex != other.columnIndex)
-			return false;
-		if (row == null) {
-			if (other.row != null)
-				return false;
-		} else if (!row.equals(other.row))
-			return false;
-		return true;
-	}
-	
-	private int getWidth() {
-		return row.getWidth(columnIndex);
-	}
-	
-	private boolean isVisible() {
-		return getWidth() > 0;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
deleted file mode 100644
index 9b5ed12..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Shindl <tom.schindl@bestsolution.at> - initial API and implementation
- * 												  fix for bug 163317, 201905
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Instances of this class represent a column of a {@link ColumnViewer}. Label
- * providers and editing support can be configured for each column separately.
- * Concrete subclasses of {@link ColumnViewer} should implement a matching
- * concrete subclass of {@link ViewerColumn}.
- * 
- * @since 3.3
- * 
- */
-public abstract class ViewerColumn {
-
-	private CellLabelProvider labelProvider;
-
-	static String COLUMN_VIEWER_KEY = Policy.JFACE + ".columnViewer";//$NON-NLS-1$
-
-	private EditingSupport editingSupport;
-
-	private ILabelProviderListener listener;
-
-	private boolean listenerRegistered = false;
-
-	private ColumnViewer viewer;
-
-	/**
-	 * Create a new instance of the receiver at columnIndex.
-	 * 
-	 * @param viewer
-	 *            the viewer the column is part of
-	 * @param columnOwner
-	 *            the widget owning the viewer in case the widget has no columns
-	 *            this could be the widget itself
-	 */
-	protected ViewerColumn(final ColumnViewer viewer, Widget columnOwner) {
-		this.viewer = viewer;
-		columnOwner.setData(ViewerColumn.COLUMN_VIEWER_KEY, this);
-		this.listener = new ILabelProviderListener() {
-
-			public void labelProviderChanged(LabelProviderChangedEvent event) {
-				viewer.handleLabelProviderChanged(event);
-			}
-
-		};
-		columnOwner.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				handleDispose(viewer);
-			}
-		});
-	}
-
-	/**
-	 * Return the label provider for the receiver.
-	 * 
-	 * @return ViewerLabelProvider
-	 */
-	/* package */CellLabelProvider getLabelProvider() {
-		return labelProvider;
-	}
-
-	/**
-	 * Set the label provider for the column. Subclasses may extend but must
-	 * call the super implementation.
-	 * 
-	 * @param labelProvider
-	 *            the new {@link CellLabelProvider}
-	 */
-	public void setLabelProvider(CellLabelProvider labelProvider) {
-		setLabelProvider(labelProvider, true);
-	}
-
-	/**
-	 * @param labelProvider
-	 * @param registerListener
-	 */
-	/* package */void setLabelProvider(CellLabelProvider labelProvider,
-			boolean registerListener) {
-		if (listenerRegistered && this.labelProvider != null) {
-			this.labelProvider.removeListener(listener);
-			listenerRegistered = false;
-			if (registerListener) {
-				this.labelProvider.dispose(viewer, this);
-			}
-		}
-
-		this.labelProvider = labelProvider;
-
-		if (registerListener) {
-			this.labelProvider.initialize(viewer, this);
-			this.labelProvider.addListener(listener);
-			listenerRegistered = true;
-		}
-	}
-
-	/**
-	 * Return the editing support for the receiver.
-	 * 
-	 * @return {@link EditingSupport}
-	 */
-	/* package */EditingSupport getEditingSupport() {
-		return editingSupport;
-	}
-
-	/**
-	 * Set the editing support. Subclasses may extend but must call the super
-	 * implementation.
-	 * <p>
-	 * Users setting up an editable {@link TreeViewer} or {@link TableViewer} with more than 1 column <b>have</b>
-	 * to pass the SWT.FULL_SELECTION style bit when creating the viewer
-	 * </p>
-	 * @param editingSupport
-	 *            The {@link EditingSupport} to set.
-	 */
-	public void setEditingSupport(EditingSupport editingSupport) {
-		this.editingSupport = editingSupport;
-	}
-
-	/**
-	 * Refresh the cell for the given columnIndex. <strong>NOTE:</strong>the
-	 * {@link ViewerCell} provided to this method is no longer valid after this
-	 * method returns. Do not cache the cell for future use.
-	 * 
-	 * @param cell
-	 *            {@link ViewerCell}
-	 */
-	/* package */void refresh(ViewerCell cell) {
-		getLabelProvider().update(cell);
-	}
-
-	/**
-	 * Disposes of the label provider (if set), unregisters the listener and
-	 * nulls the references to the label provider and editing support. This
-	 * method is called when the underlying widget is disposed. Subclasses may
-	 * extend but must call the super implementation.
-	 */
-	protected void handleDispose() {
-		boolean disposeLabelProvider = listenerRegistered;
-		CellLabelProvider cellLabelProvider = labelProvider;
-		setLabelProvider(null, false);
-		if (disposeLabelProvider) {
-			cellLabelProvider.dispose(viewer, this);
-		}
-		editingSupport = null;
-		listener = null;
-		viewer = null;
-	}
-
-	private void handleDispose(ColumnViewer viewer) {
-		handleDispose();
-		viewer.clearLegacyEditingSetup();
-	}
-
-	/**
-	 * Returns the viewer of this viewer column.
-	 * 
-	 * @return Returns the viewer.
-	 * 
-	 * @since 3.4
-	 */
-	public ColumnViewer getViewer() {
-		return viewer;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerComparator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerComparator.java
deleted file mode 100644
index 893cfd1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerComparator.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-import org.eclipse.jface.util.Policy;
-
-/**
- * A viewer comparator is used by a {@link StructuredViewer} to
- * reorder the elements provided by its content provider.
- * <p>
- * The default <code>compare</code> method compares elements using two steps. 
- * The first step uses the values returned from <code>category</code>. 
- * By default, all elements are in the same category. 
- * The second level is based on a case insensitive compare of the strings obtained 
- * from the content viewer's label provider via <code>ILabelProvider.getText</code>.
- * </p>
- * <p>
- * Subclasses may implement the <code>isSorterProperty</code> method;
- * they may reimplement the <code>category</code> method to provide 
- * categorization; and they may override the <code>compare</code> methods
- * to provide a totally different way of sorting elements.
- * </p>
- * @see IStructuredContentProvider
- * @see StructuredViewer
- * 
- * @since 3.2
- */
-public class ViewerComparator {
-	/**
-	 * The comparator to use to sort a viewer's contents.
-	 */
-	private Comparator comparator;
-
-	/**
-     * Creates a new {@link ViewerComparator}, which uses the default comparator
-     * to sort strings.
-	 *
-	 */
-	public ViewerComparator(){
-		this(null);
-	}
-	
-	/**
-     * Creates a new {@link ViewerComparator}, which uses the given comparator
-     * to sort strings.
-     * 
-	 * @param comparator
-	 */
-	public ViewerComparator(Comparator comparator){
-		this.comparator = comparator;
-	}
-
-	/**
-	 * Returns the comparator used to sort strings.
-	 * 
-	 * @return the comparator used to sort strings
-	 */
-	protected Comparator getComparator() {
-		if (comparator == null){
-			comparator = Policy.getComparator();
-		}
-		return comparator;
-	}
-
-    /**
-     * Returns the category of the given element. The category is a
-     * number used to allocate elements to bins; the bins are arranged
-     * in ascending numeric order. The elements within a bin are arranged
-     * via a second level sort criterion.
-     * <p>
-     * The default implementation of this framework method returns
-     * <code>0</code>. Subclasses may reimplement this method to provide
-     * non-trivial categorization.
-     * </p>
-     *
-     * @param element the element
-     * @return the category
-     */
-    public int category(Object element) {
-        return 0;
-    }
-
-    /**
-     * Returns a negative, zero, or positive number depending on whether
-     * the first element is less than, equal to, or greater than
-     * the second element.
-     * <p>
-     * The default implementation of this method is based on
-     * comparing the elements' categories as computed by the <code>category</code>
-     * framework method. Elements within the same category are further 
-     * subjected to a case insensitive compare of their label strings, either
-     * as computed by the content viewer's label provider, or their 
-     * <code>toString</code> values in other cases. Subclasses may override.
-     * </p>
-     * 
-     * @param viewer the viewer
-     * @param e1 the first element
-     * @param e2 the second element
-     * @return a negative number if the first element is less  than the 
-     *  second element; the value <code>0</code> if the first element is
-     *  equal to the second element; and a positive number if the first
-     *  element is greater than the second element
-     */
-    public int compare(Viewer viewer, Object e1, Object e2) {
-        int cat1 = category(e1);
-        int cat2 = category(e2);
-
-        if (cat1 != cat2) {
-			return cat1 - cat2;
-		}
-    	
-        String name1;
-        String name2;
-
-        if (viewer == null || !(viewer instanceof ContentViewer)) {
-            name1 = e1.toString();
-            name2 = e2.toString();
-        } else {
-            IBaseLabelProvider prov = ((ContentViewer) viewer)
-                    .getLabelProvider();
-            if (prov instanceof ILabelProvider) {
-                ILabelProvider lprov = (ILabelProvider) prov;
-                name1 = lprov.getText(e1);
-                name2 = lprov.getText(e2);
-            } else {
-                name1 = e1.toString();
-                name2 = e2.toString();
-            }
-        }
-        if (name1 == null) {
-			name1 = "";//$NON-NLS-1$
-		}
-        if (name2 == null) {
-			name2 = "";//$NON-NLS-1$
-		}
-
-        // use the comparator to compare the strings
-        return getComparator().compare(name1, name2);
-    }
-
-    /**
-     * Returns whether this viewer sorter would be affected 
-     * by a change to the given property of the given element.
-     * <p>
-     * The default implementation of this method returns <code>false</code>.
-     * Subclasses may reimplement.
-     * </p>
-     *
-     * @param element the element
-     * @param property the property
-     * @return <code>true</code> if the sorting would be affected,
-     *    and <code>false</code> if it would be unaffected
-     */
-    public boolean isSorterProperty(Object element, String property) {
-        return false;
-    }
-
-    /**
-     * Sorts the given elements in-place, modifying the given array.
-     * <p>
-     * The default implementation of this method uses the 
-     * java.util.Arrays#sort algorithm on the given array, 
-     * calling <code>compare</code> to compare elements.
-     * </p>
-     * <p>
-     * Subclasses may reimplement this method to provide a more optimized implementation.
-     * </p>
-     *
-     * @param viewer the viewer
-     * @param elements the elements to sort
-     */
-    public void sort(final Viewer viewer, Object[] elements) {
-        Arrays.sort(elements, new Comparator() {
-            public int compare(Object a, Object b) {
-                return ViewerComparator.this.compare(viewer, a, b);
-            }
-        });
-    }	
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerDropAdapter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerDropAdapter.java
deleted file mode 100644
index db8743a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerDropAdapter.java
+++ /dev/null
@@ -1,487 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTargetAdapter;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.TreeItem;
-
-/**
- * This adapter class provides generic drag-and-drop support for a viewer.
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- *   <li><code>validateDrop</code> - identifies valid drop targets in viewer</li>
- *   <li><code>performDrop</code> - carries out a drop into a viewer</li>
- * </ul>
- * The <code>setFeedbackEnabled</code> method can be called to turn on and off 
- * visual insertion feedback (on by default).
- * </p>
- */
-public abstract class ViewerDropAdapter extends DropTargetAdapter {
-
-    /**
-     * Constant describing the position of the cursor relative 
-     * to the target object.  This means the mouse is positioned
-     * slightly before the target.
-     * @see #getCurrentLocation()
-     */
-    public static final int LOCATION_BEFORE = 1;
-
-    /**
-     * Constant describing the position of the cursor relative 
-     * to the target object.  This means the mouse is positioned
-     * slightly after the target.
-     * @see #getCurrentLocation()
-     */
-    public static final int LOCATION_AFTER = 2;
-
-    /**
-     * Constant describing the position of the cursor relative 
-     * to the target object.  This means the mouse is positioned
-     * directly on the target.
-     * @see #getCurrentLocation()
-     */
-    public static final int LOCATION_ON = 3;
-
-    /**
-     * Constant describing the position of the cursor relative 
-     * to the target object.  This means the mouse is not positioned
-     * over or near any valid target.
-     * @see #getCurrentLocation()
-     */
-    public static final int LOCATION_NONE = 4;
-
-    /**
-     * The viewer to which this drop support has been added.
-     */
-    private Viewer viewer;
-
-    /**
-     * The current operation.
-     */
-    private int currentOperation = DND.DROP_NONE;
-
-    /**
-     * The last valid operation.
-     */
-    private int lastValidOperation = DND.DROP_NONE;
-
-    /**
-     * The data item currently under the mouse.
-     */
-    private Object currentTarget;
-
-    /**
-     * Information about the position of the mouse relative to the
-     * target (before, on, or after the target.  Location is one of
-     * the <code>LOCATION_* </code> constants defined in this type.
-     */
-    private int currentLocation;
-
-    /**
-     * A flag that allows adapter users to turn the insertion
-     * feedback on or off. Default is <code>true</code>.
-     */
-    private boolean feedbackEnabled = true;
-
-    /**
-     * A flag that allows adapter users to turn auto scrolling
-     * on or off. Default is <code>true</code>.
-     */
-    private boolean scrollEnabled = true;
-
-    /**
-     * A flag that allows adapter users to turn auto
-     * expanding on or off. Default is <code>true</code>.
-     */
-    private boolean expandEnabled = true;
-    
-    /**
-     * A flag that allows adapter users to turn selection feedback
-     *  on or off. Default is <code>true</code>.
-     */
-    private boolean selectFeedbackEnabled = true;
-
-    /**
-     * Creates a new drop adapter for the given viewer.
-     *
-     * @param viewer the viewer
-     */
-    protected ViewerDropAdapter(Viewer viewer) {
-        this.viewer = viewer;
-    }
-
-    /**
-     * Returns the position of the given event's coordinates relative to its target.
-     * The position is determined to be before, after, or on the item, based on
-     * some threshold value.
-     *
-     * @param event the event
-     * @return one of the <code>LOCATION_* </code>constants defined in this class
-     */
-    protected int determineLocation(DropTargetEvent event) {
-        if (!(event.item instanceof Item)) {
-            return LOCATION_NONE;
-        }
-        Item item = (Item) event.item;
-        Point coordinates = new Point(event.x, event.y);
-        coordinates = viewer.getControl().toControl(coordinates);
-        if (item != null) {
-            Rectangle bounds = getBounds(item);
-            if (bounds == null) {
-                return LOCATION_NONE;
-            }
-            if ((coordinates.y - bounds.y) < 5) {
-                return LOCATION_BEFORE;
-            }
-            if ((bounds.y + bounds.height - coordinates.y) < 5) {
-                return LOCATION_AFTER;
-            }
-        }
-        return LOCATION_ON;
-    }
-
-    /**
-     * Returns the target item of the given drop event.
-     *
-     * @param event the event
-     * @return The target of the drop, may be <code>null</code>.
-     */
-    protected Object determineTarget(DropTargetEvent event) {
-        return event.item == null ? null : event.item.getData();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The mouse has moved over the drop target.  If the
-     * target item has changed, notify the action and check
-     * that it is still enabled.
-     */
-    private void doDropValidation(DropTargetEvent event) {
-        //update last valid operation
-        if (event.detail != DND.DROP_NONE) {
-            lastValidOperation = event.detail;
-        }
-        //valid drop and set event detail accordingly
-        if (validateDrop(currentTarget, event.detail, event.currentDataType)) {
-            currentOperation = lastValidOperation;
-        } else {
-            currentOperation = DND.DROP_NONE;
-        }
-        event.detail = currentOperation;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The drag has entered this widget's region.  See
-     * if the drop should be allowed.
-     */
-    public void dragEnter(DropTargetEvent event) {
-        currentTarget = determineTarget(event);
-        doDropValidation(event);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The drop operation has changed, see if the action
-     * should still be enabled.
-     */
-    public void dragOperationChanged(DropTargetEvent event) {
-        currentTarget = determineTarget(event);
-        doDropValidation(event);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The mouse has moved over the drop target.  If the
-     * target item has changed, notify the action and check
-     * that it is still enabled.
-     */
-    public void dragOver(DropTargetEvent event) {
-        //use newly revealed item as target if scrolling occurs
-        Object target = determineTarget(event);
-
-        //set the location feedback
-        int oldLocation = currentLocation;
-        currentLocation = determineLocation(event);
-        setFeedback(event, currentLocation);
-
-        //see if anything has really changed before doing validation.
-        if (target != currentTarget || currentLocation != oldLocation) {
-            currentTarget = target;
-            doDropValidation(event);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The user has dropped something on the desktop viewer.
-     */
-    public void drop(DropTargetEvent event) {
-        currentLocation = determineLocation(event);
-
-        //perform the drop behavior
-        if (!performDrop(event.data)) {
-            event.detail = DND.DROP_NONE;
-        }
-        currentOperation = event.detail;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * Last chance for the action to disable itself
-     */
-    public void dropAccept(DropTargetEvent event) {
-        if (!validateDrop(currentTarget, event.detail, event.currentDataType)) {
-            event.detail = DND.DROP_NONE;
-        }
-    }
-
-    /**
-     * Returns the bounds of the given SWT tree or table item.
-     *
-     * @param item the SWT Item
-     * @return the bounds, or <code>null</code> if it is not a known type of item
-     */
-    protected Rectangle getBounds(Item item) {
-        if (item instanceof TreeItem) {
-            return ((TreeItem) item).getBounds();
-        }
-        if (item instanceof TableItem) {
-            return ((TableItem) item).getBounds(0);
-        }
-        return null;
-    }
-
-    /**
-     * Returns a constant describing the position of the mouse relative to the
-     * target (before, on, or after the target.  
-     *
-     * @return one of the <code>LOCATION_* </code> constants defined in this type
-     */
-    protected int getCurrentLocation() {
-        return currentLocation;
-    }
-
-    /**
-     * Returns the current operation.
-     *
-     * @return a <code>DROP_*</code> constant from class <code>DND</code>
-     *
-     * @see DND#DROP_COPY
-     * @see DND#DROP_MOVE
-     * @see DND#DROP_LINK
-     * @see DND#DROP_NONE
-     */
-    protected int getCurrentOperation() {
-        return currentOperation;
-    }
-
-    /**
-     * Returns the target object currently under the mouse.
-     *
-     * @return the current target object
-     */
-    protected Object getCurrentTarget() {
-        return currentTarget;
-    }
-
-    /**
-     * Returns whether visible insertion feedback should be presented to the user.
-     * <p>
-     * Typical insertion feedback is the horizontal insertion bars that appear 
-     * between adjacent items while dragging.
-     * </p>
-     *
-     * @return <code>true</code> if visual feedback is desired, and <code>false</code> if not
-     */
-    public boolean getFeedbackEnabled() {
-        return feedbackEnabled;
-    }
-
-    /**
-     * Returns the object currently selected by the viewer.
-     *
-     * @return the selected object, or <code>null</code> if either no object or 
-     *   multiple objects are selected
-     */
-    protected Object getSelectedObject() {
-        ISelection selection = viewer.getSelection();
-        if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
-            IStructuredSelection structured = (IStructuredSelection) selection;
-            return structured.getFirstElement();
-        }
-        return null;
-    }
-
-    /**
-     * @return the viewer to which this drop support has been added.
-     */
-    protected Viewer getViewer() {
-        return viewer;
-    }
-
-    /**
-     * @deprecated this method should not be used. Exception handling has been 
-     * 	removed from DropTargetAdapter methods overridden by this class.
-     * Handles any exception that occurs during callback, including 
-     * rethrowing behavior.
-     * <p>
-     * [Issue: Implementation prints stack trace and eats exception to avoid
-     *  crashing VA/J.
-     *  Consider conditionalizing the implementation to do one thing in VAJ
-     *  and something more reasonable in other operating environments.
-     * ]
-     * </p>
-     *
-     * @param exception the exception
-     * @param event the event
-     */
-    protected void handleException(Throwable exception, DropTargetEvent event) {
-        // Currently we never rethrow because VA/Java crashes if an SWT
-        // callback throws anything. Generally catching Throwable is bad, but in
-        // this cases it's better than hanging the image.
-        exception.printStackTrace();
-        event.detail = DND.DROP_NONE;
-    }
-
-    /**
-     * Performs any work associated with the drop.
-     * <p>
-     * Subclasses must implement this method to provide drop behavior.
-     * </p>
-     *
-     * @param data the drop data
-     * @return <code>true</code> if the drop was successful, and 
-     *   <code>false</code> otherwise
-     */
-    public abstract boolean performDrop(Object data);
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The mouse has moved over the drop target.  If the
-     * target item has changed, notify the action and check
-     * that it is still enabled.
-     */
-    private void setFeedback(DropTargetEvent event, int location) {
-        if (feedbackEnabled) {
-            switch (location) {
-            case LOCATION_BEFORE:
-                event.feedback = DND.FEEDBACK_INSERT_BEFORE;
-                break;
-            case LOCATION_AFTER:
-                event.feedback = DND.FEEDBACK_INSERT_AFTER;
-                break;
-            case LOCATION_ON:
-            default:
-                event.feedback = DND.FEEDBACK_SELECT;
-                break;
-            }
-        }
-        
-         // Explicitly inhibit SELECT feedback if desired
-		if (!selectFeedbackEnabled) {
-			event.feedback &= ~DND.FEEDBACK_SELECT;
-		}
-
-		if (expandEnabled) {
-			event.feedback |= DND.FEEDBACK_EXPAND;
-		}
-		if (scrollEnabled) {
-			event.feedback |= DND.FEEDBACK_SCROLL;
-		}
-    }
-
-    /**
-	 * Sets whether visible insertion feedback should be presented to the user.
-	 * <p>
-	 * Typical insertion feedback is the horizontal insertion bars that appear
-	 * between adjacent items while dragging.
-	 * </p>
-	 * 
-	 * @param value
-	 *            <code>true</code> if visual feedback is desired, and
-	 *            <code>false</code> if not
-	 */
-    public void setFeedbackEnabled(boolean value) {
-        feedbackEnabled = value;
-    }
-
-    /**
-     * Sets whether selection feedback should be provided during dragging.
-     *
-     * @param value <code>true</code> if selection feedback is desired, and
-     *   <code>false</code> if not
-     *   
-     * @since 3.2
-     */
-    public void setSelectionFeedbackEnabled(boolean value) {
-        selectFeedbackEnabled = value;
-    }
-
-    /**
-     * Sets whether auto scrolling and expanding should be provided during dragging.
-     *
-     * @param value <code>true</code> if scrolling and expanding is desired, and
-     *   <code>false</code> if not
-     * @since 2.0
-     */
-    public void setScrollExpandEnabled(boolean value) {
-    	expandEnabled = value;
-    	scrollEnabled = value;
-    }
-
-    /**
-     * Sets whether auto expanding should be provided during dragging.
-     *
-     * @param value <code>true</code> if expanding is desired, and
-     *   <code>false</code> if not
-     * @since 3.4
-     */
-    public void setExpandEnabled(boolean value) {
-        expandEnabled = value;
-    }
-    
-    /**
-     * Sets whether auto scrolling should be provided during dragging.
-     *
-     * @param value <code>true</code> if scrolling is desired, and
-     *   <code>false</code> if not
-     * @since 3.4
-     */
-    public void setScrollEnabled(boolean value) {
-        scrollEnabled = value;
-    }
-
-    /**
-     * Validates dropping on the given object. This method is called whenever some 
-     * aspect of the drop operation changes.
-     * <p>
-     * Subclasses must implement this method to define which drops make sense.
-     * </p>
-     * 
-     * @param target the object that the mouse is currently hovering over, or
-     *   <code>null</code> if the mouse is hovering over empty space
-     * @param operation the current drag operation (copy, move, etc.)
-     * @param transferType the current transfer type
-     * @return <code>true</code> if the drop is valid, and <code>false</code>
-     *   otherwise
-     */
-    public abstract boolean validateDrop(Object target, int operation,
-            TransferData transferType);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerFilter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerFilter.java
deleted file mode 100644
index 910a9d2..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerFilter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.util.ArrayList;
-
-/**
- * A viewer filter is used by a structured viewer to
- * extract a subset of elements provided by its content provider.
- * <p>
- * Subclasses must implement the <code>select</code> method
- * and may implement the <code>isFilterProperty</code> method.
- * </p>
- * @see IStructuredContentProvider
- * @see StructuredViewer
- */
-public abstract class ViewerFilter {
-    /**
-     * Creates a new viewer filter.
-     */
-    protected ViewerFilter() {
-    }
-
-    /**
-     * Filters the given elements for the given viewer.
-     * The input array is not modified.
-     * <p>
-     * The default implementation of this method calls 
-     * <code>select</code> on each element in the array, 
-     * and returns only those elements for which <code>select</code>
-     * returns <code>true</code>.
-     * </p>
-     * @param viewer the viewer
-     * @param parent the parent element
-     * @param elements the elements to filter
-     * @return the filtered elements
-     */
-    public Object[] filter(Viewer viewer, Object parent, Object[] elements) {
-        int size = elements.length;
-        ArrayList out = new ArrayList(size);
-        for (int i = 0; i < size; ++i) {
-            Object element = elements[i];
-            if (select(viewer, parent, element)) {
-				out.add(element);
-			}
-        }
-        return out.toArray();
-    }
-
-    /**
-     * Filters the given elements for the given viewer.
-     * The input array is not modified.
-     * <p>
-     * The default implementation of this method calls 
-     * {@link #filter(Viewer, Object, Object[])} with the 
-     * parent from the path. Subclasses may override
-     * </p>
-     * @param viewer the viewer
-     * @param parentPath the path of the parent element
-     * @param elements the elements to filter
-     * @return the filtered elements
-     * @since 3.2
-     */
-    public Object[] filter(Viewer viewer, TreePath parentPath, Object[] elements) {
-        return filter(viewer, parentPath.getLastSegment(), elements);
-    }
-    
-    /**
-     * Returns whether this viewer filter would be affected 
-     * by a change to the given property of the given element.
-     * <p>
-     * The default implementation of this method returns <code>false</code>.
-     * Subclasses should reimplement.
-     * </p>
-     *
-     * @param element the element
-     * @param property the property
-     * @return <code>true</code> if the filtering would be affected,
-     *    and <code>false</code> if it would be unaffected
-     */
-    public boolean isFilterProperty(Object element, String property) {
-        return false;
-    }
-
-    /**
-     * Returns whether the given element makes it through this filter.
-     *
-     * @param viewer the viewer
-     * @param parentElement the parent element
-     * @param element the element
-     * @return <code>true</code> if element is included in the
-     *   filtered set, and <code>false</code> if excluded
-     */
-    public abstract boolean select(Viewer viewer, Object parentElement,
-            Object element);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerLabel.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerLabel.java
deleted file mode 100644
index 49b55c6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerLabel.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.shindl@bestsolution.at> - tooltip support
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-
-/**
- * The ViewerLabel is the class that is passed to a viewer to handle updates of
- * labels. It keeps track of both original and updates text.
- * 
- * @see IViewerLabelProvider
- * @since 3.0
- */
-public class ViewerLabel {
-
-	// New values for the receiver. Null if nothing has been set.
-	private String newText = null;
-
-	private Image newImage = null;
-
-	private boolean imageUpdated = false;
-
-	private boolean textUpdated = false;
-
-	private Color background = null;
-
-	private Color foreground = null;
-
-	private Font font = null;
-
-	// The initial values for the receiver.
-	private String startText;
-
-	private Image startImage;
-
-	private boolean hasPendingDecorations;
-
-	private String tooltipText;
-
-	private Color tooltipForegroundColor;
-
-	private Color tooltipBackgroundColor;
-
-	private Point tooltipShift;
-
-	/**
-	 * Create a new instance of the receiver with the supplied initial text and
-	 * image.
-	 * 
-	 * @param initialText
-	 * @param initialImage
-	 */
-	public ViewerLabel(String initialText, Image initialImage) {
-		startText = initialText;
-		startImage = initialImage;
-	}
-
-	/**
-	 * Get the image for the receiver. If the new image has been set return it,
-	 * otherwise return the starting image.
-	 * 
-	 * @return Returns the image.
-	 */
-	public final Image getImage() {
-		if (imageUpdated) {
-			return newImage;
-		}
-		return startImage;
-	}
-
-	/**
-	 * Set the image for the receiver.
-	 * 
-	 * @param image
-	 *            The image to set.
-	 */
-	public final void setImage(Image image) {
-		imageUpdated = true;
-		newImage = image;
-	}
-
-	/**
-	 * Get the text for the receiver. If the new text has been set return it,
-	 * otherwise return the starting text.
-	 * 
-	 * @return String or <code>null</code> if there was no initial text and
-	 *         nothing was updated.
-	 */
-	public final String getText() {
-		if (textUpdated) {
-			return newText;
-		}
-		return startText;
-	}
-
-	/**
-	 * Set the text for the receiver.
-	 * 
-	 * @param text
-	 *            String The label to set. This value should not be
-	 *            <code>null</code>.
-	 * @see #hasNewText()
-	 */
-	public final void setText(String text) {
-		newText = text;
-		textUpdated = true;
-	}
-
-	/**
-	 * Return whether or not the image has been set.
-	 * 
-	 * @return boolean. <code>true</code> if the image has been set to
-	 *         something new.
-	 * 
-	 * @since 3.1
-	 */
-	public boolean hasNewImage() {
-
-		// If we started with null any change is an update
-		if (startImage == null) {
-			return newImage != null;
-		}
-
-		if (imageUpdated) {
-			return !(startImage.equals(newImage));
-		}
-		return false;
-	}
-
-	/**
-	 * Return whether or not the text has been set.
-	 * 
-	 * @return boolean. <code>true</code> if the text has been set to
-	 *         something new.
-	 */
-	public boolean hasNewText() {
-
-		// If we started with null any change is an update
-		if (startText == null) {
-			return newText != null;
-		}
-
-		if (textUpdated) {
-			return !(startText.equals(newText));
-		}
-
-		return false;
-	}
-
-	/**
-	 * Return whether or not the background color has been set.
-	 * 
-	 * @return boolean. <code>true</code> if the value has been set.
-	 */
-	public boolean hasNewBackground() {
-		return background != null;
-	}
-
-	/**
-	 * Return whether or not the foreground color has been set.
-	 * 
-	 * @return boolean. <code>true</code> if the value has been set.
-	 * 
-	 * @since 3.1
-	 */
-	public boolean hasNewForeground() {
-		return foreground != null;
-	}
-
-	/**
-	 * Return whether or not the font has been set.
-	 * 
-	 * @return boolean. <code>true</code> if the value has been set.
-	 * 
-	 * @since 3.1
-	 */
-	public boolean hasNewFont() {
-		return font != null;
-	}
-
-	/**
-	 * Get the background Color.
-	 * 
-	 * @return Color or <code>null</code> if no new value was set.
-	 * 
-	 * @since 3.1
-	 */
-	public Color getBackground() {
-		return background;
-	}
-
-	/**
-	 * Set the background Color.
-	 * 
-	 * @param background
-	 *            Color. This value should not be <code>null</code>.
-	 * 
-	 * @since 3.1
-	 */
-	public void setBackground(Color background) {
-		this.background = background;
-	}
-
-	/**
-	 * Get the font.
-	 * 
-	 * @return Font or <code>null</code> if no new value was set.
-	 * 
-	 * @since 3.1
-	 */
-	public Font getFont() {
-		return font;
-	}
-
-	/**
-	 * Set the font.
-	 * 
-	 * @param font
-	 *            Font This value should not be <code>null</code>.
-	 * 
-	 * @since 3.1
-	 */
-	public void setFont(Font font) {
-		this.font = font;
-	}
-
-	/**
-	 * Get the foreground Color.
-	 * 
-	 * @return Color or <code>null</code> if no new value was set.
-	 * 
-	 * @since 3.1
-	 */
-	public Color getForeground() {
-		return foreground;
-	}
-
-	/**
-	 * Set the foreground Color.
-	 * 
-	 * @param foreground
-	 *            Color This value should not be <code>null</code>.
-	 * 
-	 * @since 3.1
-	 */
-	public void setForeground(Color foreground) {
-		this.foreground = foreground;
-	}
-
-	/**
-	 * Set whether or not there are any decorations pending.
-	 * 
-	 * @param hasPendingDecorations
-	 */
-	void setHasPendingDecorations(boolean hasPendingDecorations) {
-		this.hasPendingDecorations = hasPendingDecorations;
-	}
-
-	/**
-	 * @return <code>boolean</code>. <code>true</code> if there are any
-	 *         decorations pending.
-	 */
-	boolean hasPendingDecorations() {
-		return hasPendingDecorations;
-	}
-
-	/**
-	 * Returns the tooltipText.
-	 * 
-	 * @return {@link String} or <code>null</code> if the tool tip text was
-	 *         never set.
-	 * 
-	 * @since 3.3
-	 */
-	public String getTooltipText() {
-		return tooltipText;
-	}
-
-	/**
-	 * Set the tool tip text.
-	 * 
-	 * @param tooltipText
-	 *            The tooltipText {@link String} to set. This value should not
-	 *            be <code>null</code>.
-	 * 
-	 * @since 3.3
-	 */
-	public void setTooltipText(String tooltipText) {
-		this.tooltipText = tooltipText;
-	}
-
-	/**
-	 * Return whether or not the tool tip text has been set.
-	 * 
-	 * @return <code>boolean</code>. <code>true</code> if the tool tip text
-	 *         has been set.
-	 * 
-	 * @since 3.3
-	 */
-	public boolean hasNewTooltipText() {
-		return this.tooltipText != null;
-	}
-
-	/**
-	 * Return the tool tip background color.
-	 * 
-	 * @return {@link Color} or <code>null</code> if the tool tip background
-	 *         color has not been set.
-	 * 
-	 * @since 3.3
-	 */
-	public Color getTooltipBackgroundColor() {
-		return tooltipBackgroundColor;
-	}
-
-	/**
-	 * Set the background {@link Color} for tool tip.
-	 * 
-	 * @param tooltipBackgroundColor
-	 *            The {@link Color} to set. This value should not be
-	 *            <code>null</code>.
-	 * 
-	 * @since 3.3
-	 */
-	public void setTooltipBackgroundColor(Color tooltipBackgroundColor) {
-		this.tooltipBackgroundColor = tooltipBackgroundColor;
-	}
-
-	/**
-	 * Return whether or not the tool tip background color has been set.
-	 * 
-	 * @return <code>boolean</code>. <code>true</code> if the tool tip text
-	 *         has been set.
-	 * 
-	 * @since 3.3
-	 */
-	public boolean hasNewTooltipBackgroundColor() {
-		return tooltipBackgroundColor != null;
-	}
-
-	/**
-	 * Return the foreground {@link Color}.
-	 * 
-	 * @return Returns {@link Color} or <code>null</code> if the tool tip
-	 *         foreground color has not been set.
-	 * 
-	 * @since 3.3
-	 */
-	public Color getTooltipForegroundColor() {
-		return tooltipForegroundColor;
-	}
-
-	/**
-	 * Set the foreground {@link Color} for tool tip.
-	 * 
-	 * @param tooltipForegroundColor
-	 *            The tooltipForegroundColor to set.
-	 *            
-	 * @since 3.3
-	 */
-	public void setTooltipForegroundColor(Color tooltipForegroundColor) {
-		this.tooltipForegroundColor = tooltipForegroundColor;
-	}
-
-	/**
-	 * 
-	 * Return whether or not the tool tip foreground color has been set.
-	 * 
-	 * @return <code>boolean</code>. <code>true</code> if the tool tip foreground
-	 *         has been set.
-	 * 
-	 * @since 3.3
-	 */
-	public boolean hasNewTooltipForegroundColor() {
-		return tooltipForegroundColor != null;
-	}
-
-	/**
-	 * @return Returns the tooltipShift.
-	 * @since 3.3
-	 */
-	public Point getTooltipShift() {
-		return tooltipShift;
-	}
-
-	/**
-	 * @param tooltipShift
-	 *            The tooltipShift to set.
-	 * @since 3.3
-	 */
-	public void setTooltipShift(Point tooltipShift) {
-		this.tooltipShift = tooltipShift;
-	}
-
-	/**
-	 * @return Return whether or not the tool tip shift has been set.
-	 * @since 3.3
-	 */
-	public boolean hasTooltipShift() {
-		return this.tooltipShift != null;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerRow.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerRow.java
deleted file mode 100644
index 7285029..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerRow.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                               - fix in bug: 166346,167325,174355,195908,198035,215069,227421
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * ViewerRow is the abstract superclass of the part that represents items in a
- * Table or Tree. Implementors of {@link ColumnViewer} have to provide a
- * concrete implementation for the underlying widget
- * 
- * @since 3.3
- * 
- */
-public abstract class ViewerRow implements Cloneable {
-
-	/**
-	 * Constant denoting the row above the current one (value is 1).
-	 * 
-	 * @see #getNeighbor(int, boolean)
-	 */
-	public static final int ABOVE = 1;
-
-	/**
-	 * Constant denoting the row below the current one (value is 2).
-	 * 
-	 * @see #getNeighbor(int, boolean)
-	 */
-	public static final int BELOW = 2;
-	
-	private static final String KEY_TEXT_LAYOUT = Policy.JFACE + "styled_label_key_"; //$NON-NLS-1$
-
-	/**
-	 * Get the bounds of the entry at the columnIndex,
-	 * 
-	 * @param columnIndex
-	 * @return {@link Rectangle}
-	 */
-	public abstract Rectangle getBounds(int columnIndex);
-
-	/**
-	 * Return the bounds for the whole item.
-	 * 
-	 * @return {@link Rectangle}
-	 */
-	public abstract Rectangle getBounds();
-
-	/**
-	 * Return the item for the receiver.
-	 * 
-	 * @return {@link Widget}
-	 */
-	public abstract Widget getItem();
-
-	/**
-	 * Return the number of columns for the receiver.
-	 * 
-	 * @return the number of columns
-	 */
-	public abstract int getColumnCount();
-
-	/**
-	 * Return the image at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @return {@link Image} or <code>null</code>
-	 */
-	public abstract Image getImage(int columnIndex);
-
-	/**
-	 * Set the image at the columnIndex
-	 * 
-	 * @param columnIndex
-	 * @param image
-	 */
-	public abstract void setImage(int columnIndex, Image image);
-
-	/**
-	 * Get the text at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @return {@link String}
-	 */
-	public abstract String getText(int columnIndex);
-
-	/**
-	 * Set the text at the columnIndex
-	 * 
-	 * @param columnIndex
-	 * @param text
-	 */
-	public abstract void setText(int columnIndex, String text);
-
-	/**
-	 * Get the background at the columnIndex,
-	 * 
-	 * @param columnIndex
-	 * @return {@link Color} or <code>null</code>
-	 */
-	public abstract Color getBackground(int columnIndex);
-
-	/**
-	 * Set the background at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @param color
-	 */
-	public abstract void setBackground(int columnIndex, Color color);
-
-	/**
-	 * Get the foreground at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @return {@link Color} or <code>null</code>
-	 */
-	public abstract Color getForeground(int columnIndex);
-
-	/**
-	 * Set the foreground at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @param color
-	 */
-	public abstract void setForeground(int columnIndex, Color color);
-
-	/**
-	 * Get the font at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @return {@link Font} or <code>null</code>
-	 */
-	public abstract Font getFont(int columnIndex);
-
-	/**
-	 * Set the {@link Font} at the columnIndex.
-	 * 
-	 * @param columnIndex
-	 * @param font
-	 */
-	public abstract void setFont(int columnIndex, Font font);
-
-	/**
-	 * Get the ViewerCell at point.
-	 * 
-	 * @param point
-	 * @return {@link ViewerCell}
-	 */
-	public ViewerCell getCell(Point point) {
-		int index = getColumnIndex(point);
-		return getCell(index);
-	}
-
-	/**
-	 * Get the columnIndex of the point.
-	 * 
-	 * @param point
-	 * @return int or -1 if it cannot be found.
-	 */
-	public int getColumnIndex(Point point) {
-		int count = getColumnCount();
-
-		// If there are no columns the column-index is 0
-		if (count == 0) {
-			return 0;
-		}
-
-		for (int i = 0; i < count; i++) {
-			if (getBounds(i).contains(point)) {
-				return i;
-			}
-		}
-
-		return -1;
-	}
-
-	/**
-	 * Get a ViewerCell for the column at index.
-	 * 
-	 * @param column
-	 * @return {@link ViewerCell} or <code>null</code> if the index is
-	 *         negative.
-	 */
-	public ViewerCell getCell(int column) {
-		if (column >= 0)
-			return new ViewerCell((ViewerRow) clone(), column, getElement());
-
-		return null;
-	}
-
-	/**
-	 * Get the Control for the receiver.
-	 * 
-	 * @return {@link Control}
-	 */
-	public abstract Control getControl();
-
-	/**
-	 * Returns a neighboring row, or <code>null</code> if no neighbor exists
-	 * in the given direction. If <code>sameLevel</code> is <code>true</code>,
-	 * only sibling rows (under the same parent) will be considered.
-	 * 
-	 * @param direction
-	 *            the direction {@link #BELOW} or {@link #ABOVE}
-	 * 
-	 * @param sameLevel
-	 *            if <code>true</code>, search only within sibling rows
-	 * @return the row above/below, or <code>null</code> if not found
-	 */
-	public abstract ViewerRow getNeighbor(int direction, boolean sameLevel);
-
-	/**
-	 * The tree path used to identify an element by the unique path
-	 * 
-	 * @return the path
-	 */
-	public abstract TreePath getTreePath();
-
-	public abstract Object clone();
-
-	/**
-	 * @return the model element
-	 */
-	public abstract Object getElement();
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((getItem() == null) ? 0 : getItem().hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final ViewerRow other = (ViewerRow) obj;
-		if (getItem() == null) {
-			if (other.getItem() != null)
-				return false;
-		} else if (!getItem().equals(other.getItem()))
-			return false;
-		return true;
-	}
-
-	/**
-	 * The cell at the current index (as shown in the UI). This can be different
-	 * to the original index when columns are reordered.
-	 * 
-	 * @param visualIndex
-	 *            the current index (as shown in the UI)
-	 * @return the cell at the currently visible index
-	 */
-	ViewerCell getCellAtVisualIndex(int visualIndex) {
-		return getCell(getCreationIndex(visualIndex));
-	}
-
-	/**
-	 * Translate the original column index to the actual one.
-	 * <p>
-	 * <b>Because of backwards API compatibility the default implementation
-	 * returns the original index. Implementators of {@link ColumnViewer} should
-	 * overwrite this method if their widget supports reordered columns</b>
-	 * </p>
-	 * 
-	 * @param creationIndex
-	 *            the original index
-	 * @return the current index (as shown in the UI)
-	 * @since 3.4
-	 */
-	protected int getVisualIndex(int creationIndex) {
-		return creationIndex;
-	}
-
-	/**
-	 * Translate the current column index (as shown in the UI) to the original
-	 * one.
-	 * <p>
-	 * <b>Because of backwards API compatibility the default implementation
-	 * returns the original index. Implementators of {@link ColumnViewer} should
-	 * overwrite this method if their widget supports reordered columns</b>
-	 * </p>
-	 * 
-	 * @param visualIndex
-	 *            the current index (as shown in the UI)
-	 * @return the original index
-	 * @since 3.4
-	 */
-	protected int getCreationIndex(int visualIndex) {
-		return visualIndex;
-	}
-
-	/**
-	 * The location and bounds of the area where the text is drawn depends on
-	 * various things (image displayed, control with SWT.CHECK)
-	 * 
-	 * @param index
-	 *            the column index
-	 * @return the bounds of the of the text area. May return <code>null</code>
-	 *         if the underlying widget implementation doesn't provide this
-	 *         information
-	 * @since 3.4
-	 */
-	public Rectangle getTextBounds(int index) {
-		return null;
-	}
-	
-
-	/**
-	 * Returns the location and bounds of the area where the image is drawn.
-	 * 
-	 * @param index
-	 *            the column index
-	 * @return the bounds of the of the image area. May return <code>null</code>
-	 *         if the underlying widget implementation doesn't provide this
-	 *         information
-	 * @since 3.4
-	 */
-	public Rectangle getImageBounds(int index) {
-		return null;
-	}
-	
-	/**
-	 * Set the style ranges to be applied on the text label at the column index
-	 * Note: Requires {@link StyledCellLabelProvider} with owner draw enabled.
-	 * 
-	 * @param columnIndex the index of the column
-	 * @param styleRanges the styled ranges
-	 * 
-	 * @since 3.4
-	 */
-	public void setStyleRanges(int columnIndex, StyleRange[] styleRanges) {
-		getItem().setData(KEY_TEXT_LAYOUT + columnIndex, styleRanges);
-	}
-	
-	
-	/**
-	 * Returns the style ranges to be applied on the text label at the column index or <code>null</code> if no
-	 * style ranges have been set.
-	 * 
-	 * @param columnIndex the index of the column
-	 * @return styleRanges the styled ranges
-	 * 
-	 * @since 3.4
-	 */
-	public StyleRange[] getStyleRanges(int columnIndex) {
-		return (StyleRange[]) getItem().getData(KEY_TEXT_LAYOUT + columnIndex);
-	}
-	
-	int getWidth(int columnIndex) {
-		return getBounds(columnIndex).width;
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerSorter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerSorter.java
deleted file mode 100644
index efa5839..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerSorter.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers;
-
-import java.text.Collator; // can't use ICU - Collator used in public API
-
-/**
- * A viewer sorter is used by a {@link StructuredViewer} to reorder the elements 
- * provided by its content provider.
- * <p>
- * The default <code>compare</code> method compares elements using two steps. 
- * The first step uses the values returned from <code>category</code>. 
- * By default, all elements are in the same category. 
- * The second level is based on a case insensitive compare of the strings obtained 
- * from the content viewer's label provider via <code>ILabelProvider.getText</code>.
- * </p>
- * <p>
- * Subclasses may implement the <code>isSorterProperty</code> method;
- * they may reimplement the <code>category</code> method to provide 
- * categorization; and they may override the <code>compare</code> methods
- * to provide a totally different way of sorting elements.
- * </p>
- * <p>
- * It is recommended to use <code>ViewerComparator</code> instead.
- * </p>
- * @see IStructuredContentProvider
- * @see StructuredViewer
- */
-public class ViewerSorter extends ViewerComparator {
-    /**
-     * The collator used to sort strings.
-     * 
-     * @deprecated as of 3.3 Use {@link ViewerComparator#getComparator()}
-     */
-    protected Collator collator;
-
-    /**
-     * Creates a new viewer sorter, which uses the default collator
-     * to sort strings.
-     */
-    public ViewerSorter() {
-        this(Collator.getInstance());
-    }
-
-    /**
-     * Creates a new viewer sorter, which uses the given collator
-     * to sort strings.
-     *
-     * @param collator the collator to use to sort strings
-     */
-    public ViewerSorter(Collator collator) {
-    	super(collator);
-        this.collator = collator;
-    }
-
-    /**
-     * Returns the collator used to sort strings.
-     *
-     * @return the collator used to sort strings
-     * @deprecated as of 3.3 Use {@link ViewerComparator#getComparator()}
-     */
-    public Collator getCollator() {
-        return collator;
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/WrappedViewerLabelProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/WrappedViewerLabelProvider.java
deleted file mode 100644
index a95cc4e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/WrappedViewerLabelProvider.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.viewers;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The WrappedViewerLabelProvider is a label provider that allows
- * {@link ILabelProvider}, {@link IColorProvider} and {@link IFontProvider} to
- * be mapped to a ColumnLabelProvider.
- * 
- * @since 3.3
- * 
- */
-class WrappedViewerLabelProvider extends ColumnLabelProvider {
-
-	private static ILabelProvider defaultLabelProvider = new LabelProvider();
-
-	private ILabelProvider labelProvider = defaultLabelProvider;
-
-	private IColorProvider colorProvider;
-
-	private IFontProvider fontProvider;
-
-	private IViewerLabelProvider viewerLabelProvider;
-
-	private ITreePathLabelProvider treePathLabelProvider;
-
-	/**
-	 * Create a new instance of the receiver based on labelProvider.
-	 * 
-	 * @param labelProvider
-	 */
-	public WrappedViewerLabelProvider(IBaseLabelProvider labelProvider) {
-		super();
-		setProviders(labelProvider);
-	}
-
-	/**
-	 * Set the any providers for the receiver that can be adapted from provider.
-	 * 
-	 * @param provider
-	 *            {@link Object}
-	 */
-	public void setProviders(Object provider) {
-		if (provider instanceof ITreePathLabelProvider)
-			treePathLabelProvider = ((ITreePathLabelProvider) provider);
-
-		if (provider instanceof IViewerLabelProvider)
-			viewerLabelProvider = ((IViewerLabelProvider) provider);
-
-		if (provider instanceof ILabelProvider)
-			labelProvider = ((ILabelProvider) provider);
-
-		if (provider instanceof IColorProvider)
-			colorProvider = (IColorProvider) provider;
-
-		if (provider instanceof IFontProvider)
-			fontProvider = (IFontProvider) provider;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
-	 */
-	public Font getFont(Object element) {
-		if (fontProvider == null) {
-			return null;
-		}
-
-		return fontProvider.getFont(element);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object)
-	 */
-	public Color getBackground(Object element) {
-		if (colorProvider == null) {
-			return null;
-		}
-
-		return colorProvider.getBackground(element);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-	 */
-	public String getText(Object element) {
-		return getLabelProvider().getText(element);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-	 */
-	public Image getImage(Object element) {
-		return getLabelProvider().getImage(element);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object)
-	 */
-	public Color getForeground(Object element) {
-		if (colorProvider == null) {
-			return null;
-		}
-
-		return colorProvider.getForeground(element);
-	}
-
-	/**
-	 * Get the label provider
-	 * 
-	 * @return {@link ILabelProvider}
-	 */
-	ILabelProvider getLabelProvider() {
-		return labelProvider;
-	}
-
-	/**
-	 * Get the color provider
-	 * 
-	 * @return {@link IColorProvider}
-	 */
-	IColorProvider getColorProvider() {
-		return colorProvider;
-	}
-
-	/**
-	 * Get the font provider
-	 * 
-	 * @return {@link IFontProvider}.
-	 */
-	IFontProvider getFontProvider() {
-		return fontProvider;
-	}
-
-	public void update(ViewerCell cell) {
-		Object element = cell.getElement();
-		if(viewerLabelProvider == null && treePathLabelProvider == null){
-			// inlined super implementation with performance optimizations
-			cell.setText(getText(element));
-			Image image = getImage(element);
-			cell.setImage(image);
-			if (colorProvider != null) {
-				cell.setBackground(getBackground(element));
-				cell.setForeground(getForeground(element));
-			}
-			if (fontProvider != null) {
-				cell.setFont(getFont(element));
-			}
-			return;
-		}
-		
-		ViewerLabel label = new ViewerLabel(cell.getText(), cell.getImage());
-		
-		if (treePathLabelProvider != null) {
-			TreePath treePath = cell.getViewerRow().getTreePath();
-
-			Assert.isNotNull(treePath);
-			treePathLabelProvider.updateLabel(label, treePath);
-		} else if (viewerLabelProvider != null) {
-			viewerLabelProvider.updateLabel(label, element);
-		} 
-		if (!label.hasNewForeground() && colorProvider != null) 
-			label.setForeground(getForeground(element));
-		
-		if (!label.hasNewBackground() && colorProvider != null) 
-			label.setBackground(getBackground(element));
-		
-		if (!label.hasNewFont() && fontProvider != null) 
-			label.setFont(getFont(element));
-		
-		applyViewerLabel(cell, label);
-	}
-
-	private void applyViewerLabel(ViewerCell cell, ViewerLabel label) {
-		if (label.hasNewText()) {
-			cell.setText(label.getText());
-		}
-		if (label.hasNewImage()) {
-			cell.setImage(label.getImage());
-		}
-		if (colorProvider!= null || label.hasNewBackground()) {
-			cell.setBackground(label.getBackground());
-		}
-		if (colorProvider!= null || label.hasNewForeground()) {
-			cell.setForeground(label.getForeground());
-		}
-		if (fontProvider!= null || label.hasNewFont()) {
-			cell.setFont(label.getFont());
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractConcurrentModel.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractConcurrentModel.java
deleted file mode 100644
index f493244..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractConcurrentModel.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import org.eclipse.core.runtime.ListenerList;
-
-
-/**
- * Abstract base class for all IConcurrentModel implementations. Clients should
- * subclass this class instead of implementing IConcurrentModel directly. 
- * 
- * @since 3.1
- */
-public abstract class AbstractConcurrentModel implements
-        IConcurrentModel {
-
-    private ListenerList listeners = new ListenerList(); 
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.deferred.IConcurrentContentProvider#addListener(org.eclipse.jface.viewers.deferred.IConcurrentContentProviderListener)
-     */
-    public void addListener(IConcurrentModelListener listener) {
-        listeners.add(listener);
-    }
-    
-    /**
-     * Fires an add notification to all listeners
-     * 
-     * @param added objects added to the set
-     */
-    protected final void fireAdd(Object[] added) {
-        Object[] listenerArray = listeners.getListeners();
-        
-        for (int i = 0; i < listenerArray.length; i++) {
-            IConcurrentModelListener next = (IConcurrentModelListener) listenerArray[i];
-            
-            next.add(added);
-        }
-    }
-
-    /**
-     * Fires a remove notification to all listeners
-     * 
-     * @param removed objects removed from the set
-     */
-    protected final void fireRemove(Object[] removed) {
-        Object[] listenerArray = listeners.getListeners();
-        
-        for (int i = 0; i < listenerArray.length; i++) {
-            IConcurrentModelListener next = (IConcurrentModelListener) listenerArray[i];
-            
-            next.remove(removed);
-        }
-    }
-    
-    /**
-     * Fires an update notification to all listeners
-     * 
-     * @param updated objects that have changed
-     */
-    protected final void fireUpdate(Object[] updated) {
-        Object[] listenerArray = listeners.getListeners();
-        
-        for (int i = 0; i < listenerArray.length; i++) {
-            IConcurrentModelListener next = (IConcurrentModelListener) listenerArray[i];
-            
-            next.update(updated);
-        }
-    }
-    
-    /**
-     * Returns the array of listeners for this model
-     * 
-     * @return the array of listeners for this model 
-     */
-    protected final IConcurrentModelListener[] getListeners() {
-    	Object[] l = listeners.getListeners();
-    	IConcurrentModelListener[] result = new IConcurrentModelListener[l.length];
-    	
-    	for (int i = 0; i < l.length; i++) {
-			result[i] = (IConcurrentModelListener)l[i];
-		}
-    	
-    	return result;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.deferred.IConcurrentContentProvider#removeListener(org.eclipse.jface.viewers.deferred.IConcurrentContentProviderListener)
-     */
-    public void removeListener(IConcurrentModelListener listener) {
-        listeners.remove(listener);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractVirtualTable.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractVirtualTable.java
deleted file mode 100644
index 7c8d6c1..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/AbstractVirtualTable.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Wrapper for a virtual-table-like widget. Contains all methods needed for lazy updates.
- * The JFace algorithms for deferred or lazy content providers should talk to this class
- * instead of directly to a TableViewer. This will allow them to be used with other virtual
- * viewers and widgets in the future.
- * 
- * <p>
- * For example, if SWT starts to support virtual Lists in the future, it should be possible
- * to create an adapter from <code>AbstractVirtualTable</code> to <code>ListViewer</code> in 
- * order to reuse the existing algorithms for deferred updates. 
- * </p>
- * 
- * <p>
- * This is package visiblity by design. It would only need to be made public if there was
- * a demand to use the deferred content provider algorithms like 
- * <code>BackgroundContentProvider</code> with non-JFace viewers.
- * </p>
- * 
- * @since 3.1
- */
-abstract class AbstractVirtualTable {
-    /**
-     * Tells the receiver that the item at given row has changed. This may indicate
-     * that a different element is now at this row, but does not necessarily indicate
-     * that the element itself has changed. The receiver should request information for
-     * this row the next time it becomes visibile.
-     * 
-     * @param index row to clear
-     */
-    public abstract void clear(int index);
-    
-    /**
-     * Notifies the receiver that the given element is now located at the given index.
-     * 
-     * @param element object located at the row
-     * @param itemIndex row number
-     */
-    public abstract void replace(Object element, int itemIndex);
-    
-    /**
-     * Sets the item count for this table 
-     * 
-     * @param total new total number of items
-     */
-    public abstract void setItemCount(int total);
-    
-    /**
-     * Returns the index of the top item visible in the table
-     * 
-     * @return the index of the top item visible in the table
-     */
-    public abstract int getTopIndex();
-    
-    /**
-     * Returns the number of items currently visible in the table. This is
-     * the size of the currently visible window, not the total size of the table.
-     * 
-     * @return the number of items currently visible in the table
-     */
-    public abstract int getVisibleItemCount();
-    
-    /**
-     * Returns the total number of items in the table
-     * 
-     * @return the total number of items in the table
-     */
-    public abstract int getItemCount();
-    
-    /**
-     * Returns the SWT control that this API is wrappering.
-     * @return Control.
-     */
-    public abstract Control getControl();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/BackgroundContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/BackgroundContentProvider.java
deleted file mode 100644
index c7c776b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/BackgroundContentProvider.java
+++ /dev/null
@@ -1,572 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.AcceptAllFilter;
-import org.eclipse.jface.viewers.IFilter;
-import org.eclipse.jface.viewers.deferred.ConcurrentTableUpdator.Range;
-
-/**
- * Contains the algorithm for performing background sorting and filtering in a virtual
- * table. This is the real implementation for <code>DeferredContentProvider</code>.
- * However, this class will work with anything that implements <code>AbstractVirtualTable</code>
- * rather than being tied to a <code>TableViewer</code>.
- * 
- * <p>
- * This is package visiblity since it currently only needs to be used in one place,
- * but it could potentially be made public if there was a need to use the same background
- * sorting algorithm for something other than a TableViewer. 
- * </p>
- * 
- * <p>
- * Information flow is like this:
- * </p>
- * <ol>
- * <li>IConcurrentModel sends unordered elements to BackgroundContentProvider (in a background thread)</li>
- * <li>BackgroundContentProvider sorts, filters, and sends element/index pairs to
- *     ConcurrentTableUpdator (in a background thread)</li>
- * <li>ConcurrentTableUpdator batches the updates and sends them to an AbstractVirtualTable 
- *     (in the UI thread)</li>  
- * </ol>
- * 
- * <p>
- * Internally, sorting is done using a <code>LazySortedCollection</code>. This data structure
- * allows the content provider to locate and sort the visible range without fully sorting
- * all elements in the table. It also supports fast cancellation, allowing the visible range
- * to change in the middle of a sort without discarding partially-sorted information from
- * the previous range.
- * </p>
- * 
- * @since 3.1
- */
-/* package */ final class BackgroundContentProvider {
-    
-	/**
-	 * Sorting message string
-	 */
-    private static final String SORTING = JFaceResources.getString("Sorting"); //$NON-NLS-1$
-
-    /**
-     * Table limit. -1 if unlimited
-     */
-	private int limit = -1;
-	
-	/**
-	 * Model that is currently providing input to this content provider.
-	 */
-    private IConcurrentModel model;
-    
-    /**
-     * Current sort order 
-     */
-    private volatile Comparator sortOrder;
-    
-    /**
-     * True iff the content provider has 
-     */
-    private volatile IFilter filter = AcceptAllFilter.getInstance();
-    
-    /**
-     * Queued changes
-     */
-    private ChangeQueue changeQueue = new ChangeQueue();
-    
-    /**
-     * Listener that gets callbacks from the model
-     */
-    private IConcurrentModelListener listener = new IConcurrentModelListener() {
-    	/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.IConcurrentModelListener#add(java.lang.Object[])
-		 */
-		public void add(Object[] added) {
-			BackgroundContentProvider.this.add(added);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.IConcurrentModelListener#remove(java.lang.Object[])
-		 */
-		public void remove(Object[] removed) {
-			BackgroundContentProvider.this.remove(removed);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.IConcurrentModelListener#setContents(java.lang.Object[])
-		 */
-		public void setContents(Object[] newContents) {
-			BackgroundContentProvider.this.setContents(newContents);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.IConcurrentModelListener#update(java.lang.Object[])
-		 */
-		public void update(Object[] changed) {
-			BackgroundContentProvider.this.update(changed);
-		}
-		
-    };
-
-    /**
-     * Object that posts updates to the UI thread. Must synchronize on
-     * sortMutex when accessing. 
-     */
-    private ConcurrentTableUpdator updator;
-    
-    private IProgressMonitor sortingProgressMonitor = new NullProgressMonitor();
-    private Thread sortThread = null;
-
-	private volatile FastProgressReporter sortMon = new FastProgressReporter();
-
-	private volatile Range range = new Range(0,0);
-    
-    /**
-     * Creates a new background content provider
-     *  
-     * @param table table that will receive updates
-     * @param model data source
-     * @param sortOrder initial sort order
-     */
-    public BackgroundContentProvider(AbstractVirtualTable table, 
-            IConcurrentModel model, Comparator sortOrder) {
-        
-        updator = new ConcurrentTableUpdator(table);
-        this.model = model;
-        this.sortOrder = sortOrder;
-        model.addListener(listener);
-    }
-    
-    /**
-     * Cleans up this content provider, detaches listeners, frees up memory, etc. 
-     * Must be the last public method called on this object.
-     */
-    public void dispose() {
-        cancelSortJob();
-        updator.dispose();
-        model.removeListener(listener);
-    }
-    
-    /**
-     * Force a refresh. Asks the model to re-send its complete contents.
-     */
-    public void refresh() {
-    	if (updator.isDisposed()) {
-    		return;
-    	}
-        model.requestUpdate(listener);
-    }
-
-    /**
-     * Called from sortJob. Sorts the elements defined by sortStart and sortLength.
-     * Schedules a UI update when finished.
-     * 
-     * @param mon monitor where progress will be reported
-     */
-    private void doSort(IProgressMonitor mon) {        
-        
-        // Workaround for some weirdness in the Jobs framework: if you cancel a monitor
-        // for a job that has ended and reschedule that same job, it will start 
-        // the job with a monitor that is already cancelled. We can workaround this by
-        // removing all references to the progress monitor whenever the job terminates,
-        // but this would require additional synchronize blocks (which are slow) and more
-        // complexity. Instead, we just un-cancel the monitor at the start of each job. 
-        mon.setCanceled(false);
-
-       	mon.beginTask(SORTING, 100);
-       	
-        // Create a LazySortedCollection
-        Comparator order = sortOrder;
-        IFilter f = filter;
-        LazySortedCollection collection = new LazySortedCollection(order);
-        
-        // Fill it in with all existing known objects
-        Object[] knownObjects = updator.getKnownObjects();
-        for (int i = 0; i < knownObjects.length; i++) {
-			Object object = knownObjects[i];
-			if (object != null) {
-				collection.add(object);
-			}
-		}
-
-        boolean dirty = false;
-        int prevSize = knownObjects.length;
-        updator.setTotalItems(prevSize);
-        
-		// Start processing changes
-        while(true) {
-        	// If the sort order has changed, build a new LazySortedCollection with
-        	// the new comparator
-        	if (order != sortOrder) {
-        		dirty = true;
-        		order = sortOrder;
-        		// Copy all elements from the old collection to the new one 
-        		LazySortedCollection newCollection = new LazySortedCollection(order);
-        		
-        		Object[] items = collection.getItems(false);
-        		for (int j = 0; j < items.length && order == sortOrder; j++) {
-					Object item = items[j];
-					
-					newCollection.add(item);
-				}
-        		
-        		// If the sort order changed again, re-loop
-				if (order != sortOrder) {
-					continue;
-				}
-				collection = newCollection;
-				continue;
-        	} 
-        	
-        	// If the filter has changed
-        	if (f != filter) {
-        		dirty = true;
-        		f = filter;
-        		
-        		Object[] items = collection.getItems(false);
-        		
-        		// Remove any items that don't pass the new filter
-        		for (int j = 0; j < items.length && f == filter; j++) {
-					Object toTest = items[j];
-					
-					if (!f.select(toTest)) {
-						collection.remove(toTest);
-					}
-				}
-        		continue;
-        	}
-        
-        	// If there are pending changes, process one of them
-        	if (!changeQueue.isEmpty()) {
-        		dirty = true;
-	        	ChangeQueue.Change next = changeQueue.dequeue();
-	        	
-	        	switch(next.getType()) {
-		        	case ChangeQueue.ADD: {
-		            	filteredAdd(collection, next.getElements(), f);
-		        		break;
-		        	}
-		        	case ChangeQueue.REMOVE: {
-		        		Object[] toRemove = next.getElements();
-	
-		                flush(toRemove, collection);
-		                collection.removeAll(toRemove);
-	
-		        		break;
-		        	}
-		        	case ChangeQueue.UPDATE: {
-		        		Object[] items  = next.getElements();
-		        		
-	        	        for (int i = 0; i < items.length; i++) {
-	        	            Object item = items[i];
-	        	            
-	        	            if (collection.contains(item)) {
-	        	                // TODO: write a collection.update(...) method
-	        	                collection.remove(item);
-	        	                collection.add(item);
-	        	                updator.clear(item);        	                
-	        	            }
-	        	        }
-		        	        
-		        		break;
-		        	}
-		        	case ChangeQueue.SET: {
-		        		Object[] items = next.getElements();
-		        		collection.clear();
-		        		filteredAdd(collection, items, f);
-		        	        
-		        		break;
-		        	}
-	        	}
-	        	
-	        	continue;
-        	}
-        	
-	        int totalElements = collection.size();
-            if (limit != -1) {
-                if (totalElements > limit) {
-                    totalElements = limit;
-                }
-            }
-            
-            if (totalElements != prevSize) {
-            	prevSize = totalElements;
-	            // Send the total items to the updator ASAP -- the user may want
-	            // to scroll to a different section of the table, which would
-	            // cause our sort range to change and cause this job to get cancelled.
-		        updator.setTotalItems(totalElements);
-		        dirty = true;
-            }
-            
-            // Terminate loop
-            if (!dirty) {
-            	break;
-            }
-        	
-            try {
-            	ConcurrentTableUpdator.Range updateRange = updator.getVisibleRange();
-            	sortMon = new FastProgressReporter();
-            	range = updateRange;
-            	int sortStart = updateRange.start;
-            	int sortLength = updateRange.length;
-            
-		        if (limit != -1) {
-		            collection.retainFirst(limit, sortMon);
-		        }
-
-		        sortLength = Math.min(sortLength, totalElements - sortStart);
-		        sortLength = Math.max(sortLength, 0);
-		        
-		        Object[] objectsOfInterest = new Object[sortLength];
-		     
-		        collection.getRange(objectsOfInterest, sortStart, true, sortMon);
-		        
-		        // Send the new elements to the table
-		        for (int i = 0; i < sortLength; i++) {
-					Object object = objectsOfInterest[i];
-					updator.replace(object, sortStart + i);
-				}
-		        
-			    objectsOfInterest = new Object[collection.size()];
-			        
-			    collection.getFirst(objectsOfInterest, true, sortMon);
-		        
-		        // Send the new elements to the table
-		        for (int i = 0; i < totalElements; i++) {
-					Object object = objectsOfInterest[i];
-					updator.replace(object, i);
-				}
-
-            } catch (InterruptedException e) {
-            	continue;
-            }
-            
-            dirty = false;
-	    }
-        
-        mon.done();
-    }
-
-	/**
-	 * @param collection
-	 * @param toAdd
-	 */
-	private static void filteredAdd(LazySortedCollection collection, Object[] toAdd, IFilter filter) {
-		if (filter != AcceptAllFilter.getInstance()) { 
-			for (int i = 0; i < toAdd.length; i++) {
-				Object object = toAdd[i];
-				
-				if (filter.select(object)) {
-					collection.add(object);
-				}
-			}
-		} else {
-			collection.addAll(toAdd);
-		}
-	}
-    
-    /**
-     * Sets the sort order for this content provider
-     * 
-     * @param sorter sort order
-     */
-    public void setSortOrder(Comparator sorter) {
-    	Assert.isNotNull(sorter);
-        this.sortOrder = sorter;
-    	sortMon.cancel();
-        refresh();
-    }
-    
-    /**
-     * Sets the filter for this content provider
-     * 
-     * @param toSet filter to set
-     */
-    public void setFilter(IFilter toSet) {
-    	Assert.isNotNull(toSet);
-    	this.filter = toSet;
-    	sortMon.cancel();
-    	refresh();
-    }
-    
-    /**
-     * Sets the maximum table size. Based on the current sort order,
-     * the table will be truncated if it grows beyond this size.
-     * Using a limit improves memory usage and performance, and is
-     * strongly recommended for large tables. 
-     * 
-     * @param limit maximum rows to show in the table or -1 if unbounded
-     */
-    public void setLimit(int limit) {
-        this.limit = limit;
-        refresh();
-    }
-    
-    /**
-     * Returns the maximum table size or -1 if unbounded
-     * 
-     * @return the maximum number of rows in the table or -1 if unbounded
-     */
-    public int getLimit() {
-        return limit;
-    }
-    
-    /**
-     * Checks if currently visible range has changed, and triggers and update
-     * and resort if necessary. Must be called in the UI thread, typically
-     * within a SWT.SetData callback.
-     * @param includeIndex the index that should be included in the visible range.
-     */
-    public void checkVisibleRange(int includeIndex) {
-    	updator.checkVisibleRange(includeIndex);
-		ConcurrentTableUpdator.Range newRange = updator.getVisibleRange();
-		ConcurrentTableUpdator.Range oldRange = range;
-		
-		// If we're in the middle of processing an invalid range, cancel the sort
-		if (newRange.start != oldRange.start || newRange.length != oldRange.length) {
-			sortMon.cancel();
-		}
-    }
-    
-    /**
-     * This lock protects the two boolean variables sortThreadStarted and resortScheduled.
-     */
-    private Object lock = new Object();
-
-    /**
-     * true if the sort thread is running
-     */
-    private boolean sortThreadStarted = false;
-
-    /**
-     * true if we need to sort
-     */
-    private boolean sortScheduled = false;
-    
-	private final class SortThread extends Thread {
-		private SortThread(String name) {
-			super(name);
-		}
-
-		public void run() {
-			loop: while (true) {
-				synchronized (lock) {
-					sortScheduled = false;
-				}
-				try {
-					// this is the main work
-					doSort(sortingProgressMonitor);
-				} catch (Exception ex) {
-					// ignore
-				}
-				synchronized (lock) {
-					if (sortScheduled) {
-						continue loop;
-					}
-					sortThreadStarted = false;
-					break loop;
-				}
-			}
-		}
-	}
-    
-    /**
-     * Must be called whenever the model changes. Dirties this object and triggers a sort
-     * if necessary. 
-     */
-    private void makeDirty() {
-		synchronized (lock) {
-			sortMon.cancel();
-			// request sorting
-			sortScheduled = true;
-			if (!sortThreadStarted) {
-				sortThreadStarted = true;
-				sortThread = new SortThread(SORTING);
-				sortThread.setDaemon(true);
-				sortThread.setPriority(Thread.NORM_PRIORITY - 1);
-				sortThread.start();
-			}
-		}
-	}
-    
-    /**
-	 * Cancels any sort in progress. Note that we try to use the
-	 * FastProgresReporter if possible since this is more responsive than
-	 * cancelling the sort job. However, it is not a problem to cancel in both
-	 * ways.
-	 */
-    private void cancelSortJob() {
-        sortMon.cancel();
-        sortingProgressMonitor.setCanceled(true);
-    }
-    
-    /**
-	 * Called when new elements are added to the model.
-	 * 
-	 * @param toAdd
-	 *            newly added elements
-	 */
-    private void add(Object[] toAdd) {
-    	changeQueue.enqueue(ChangeQueue.ADD, toAdd);
-    	makeDirty();
-    }
-    
-    /**
-     * Called with the complete contents of the model
-     * 
-     * @param contents new contents of the model
-     */
-    private void setContents(Object[] contents) {
-    	changeQueue.enqueue(ChangeQueue.SET, contents);
-    	makeDirty();
-    }
-
-    /**
-     * Called when elements are removed from the model
-     * 
-     * @param toRemove elements removed from the model
-     */
-    private void remove(Object[] toRemove) {
-        changeQueue.enqueue(ChangeQueue.REMOVE, toRemove);
-        makeDirty();
-        refresh();
-    }
-
-    /**
-     * Notifies the updator that the given elements have changed 
-     * 
-     * @param toFlush changed elements
-     * @param collection collection of currently-known elements
-     */
-    private void flush(Object[] toFlush, LazySortedCollection collection) {
-        for (int i = 0; i < toFlush.length; i++) {
-            Object item = toFlush[i];
-            
-            if (collection.contains(item)) {
-                updator.clear(item);
-            }
-        }
-    }
-
-
-    /**
-     * Called when elements in the model change
-     * 
-     * @param items changed items
-     */
-    private void update(Object[] items) {
-        changeQueue.enqueue(ChangeQueue.UPDATE, items);
-        makeDirty();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ChangeQueue.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ChangeQueue.java
deleted file mode 100644
index 575bde3..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ChangeQueue.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-
-/**
- * Holds a queue of additions, removals, updates, and SET calls for a
- * BackgroundContentProvider
- */
-final class ChangeQueue {
-	/**
-	 * Represents the addition of an item
-	 * @since 3.1
-	 */
-	public static final int ADD = 0;
-	/**
-	 * Represents the removal of an item
-	 * @since 3.1
-	 */
-	public static final int REMOVE = 1;
-	/**
-	 * Represents a reset of all the items
-	 * @since 3.1
-	 */
-	public static final int SET = 2;
-	/**
-	 * Represents an update of an item
-	 * @since 3.1
-	 */
-	public static final int UPDATE = 3;
-	
-	/**
-	 * 
-	 * @since 3.1
-	 */
-	public static final class Change {
-		private int type;
-		private Object[] elements;
-		
-		/**
-		 * Create a change of the specified type that affects the given elements.
-		 * 
-		 * @param type one of <code>ADD</code>, <code>REMOVE</code>, <code>SET</code>, or <code>UPDATE</code>.
-		 * @param elements the elements affected by the change.
-		 * 
-		 * @since 3.1
-		 */
-		public Change(int type, Object[] elements) {
-			this.type = type;
-			this.elements = elements;
-		}
-		
-		/**
-		 * Get the type of change.
-		 * @return one of <code>ADD</code>, <code>REMOVE</code>, <code>SET</code>, or <code>UPDATE</code>.
-		 * 
-		 * @since 3.1
-		 */
-		public int getType() {
-			return type;
-		}
-		
-		/**
-		 * Return the elements associated with the change.
-		 * @return the elements affected by the change.
-		 * 
-		 * @since 3.1
-		 */
-		public Object[] getElements() {
-			return elements;
-		}
-	}
-	
-	private LinkedList queue = new LinkedList();
-	private int workload = 0;
-	
-	/**
-	 * Create a change of the given type and elements and enqueue it.
-	 * 
-	 * @param type the type of change to be created
-	 * @param elements the elements affected by the change
-	 */
-	public synchronized void enqueue(int type, Object[] elements) {
-		enqueue(new Change(type, elements));
-	}
-	
-	/**
-	 * Add the specified change to the queue
-	 * @param toQueue the change to be added
-	 */
-	public synchronized void enqueue(Change toQueue) {
-		// A SET event makes all previous adds, removes, and sets redundant... so remove
-		// them from the queue
-		if (toQueue.type == SET) {
-			workload = 0;
-			LinkedList newQueue = new LinkedList();
-			for (Iterator iter = queue.iterator(); iter.hasNext();) {
-				Change next = (Change) iter.next();
-				
-				if (next.getType() == ADD || next.getType() == REMOVE || next.getType() == SET) {
-					continue;
-				}
-				
-				newQueue.add(next);
-				workload += next.elements.length;
-			}
-			queue = newQueue;
-		}
-		
-		queue.add(toQueue);
-		workload += toQueue.elements.length;
-	}
-	
-	/**
-	 * Remove the first change from the queue.
-	 * @return the first change
-	 */
-	public synchronized Change dequeue() {
-		Change result = (Change)queue.removeFirst();
-		
-		workload -= result.elements.length;
-		return result;
-	}
-	
-	/**
-	 * Return whether the queue is empty
-	 * @return <code>true</code> if empty, <code>false</code> otherwise
-	 */
-	public synchronized boolean isEmpty() {
-		return queue.isEmpty();
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ConcurrentTableUpdator.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ConcurrentTableUpdator.java
deleted file mode 100644
index b8d8054..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/ConcurrentTableUpdator.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-
-
-/**
- * Allows a table to be accessed from a background thread. Provides a table-like public 
- * interface that can accessed from a background thread. As updates arrive from the 
- * background thread, it batches and schedules updates to the real table in the UI thread. 
- * This class can be used with any widget that can be wrapped in the 
- * <code>AbstractVirtualTable</code> interface.  
- * 
- * @since 3.1
- */
-/* package */ final class ConcurrentTableUpdator {
-	/**
-	 * Wrapper for the real table. May only be accessed in the UI thread.
-	 */
-    private AbstractVirtualTable table;
-    
-    /**
-     * The array of objects that have been sent to the UI. Elements are null
-     * if they either haven't been sent yet or have been scheduled for clear. 
-     * Maps indices onto elements.
-     */
-    private Object[] sentObjects = new Object[0];
-    
-    /**
-     * Map of elements to object indices (inverse of the knownObjects array)
-     */
-    private IntHashMap knownIndices = new IntHashMap();
-    
-    /**
-     * Contains all known objects that have been sent here from the background
-     * thread.
-     */
-    private Object[] knownObjects = new Object[0];
-    
-    // Minimum length for the pendingFlushes stack
-    private static final int MIN_FLUSHLENGTH = 64;
-    
-    /**
-     * Array of element indices. Contains elements scheduled to be
-     * cleared. Only the beginning of the array is used. The number
-     * of used elements is stored in lastClear
-     */
-    private int[] pendingClears = new int[MIN_FLUSHLENGTH];
-    
-    /**
-     * Number of pending clears in the pendingClears array (this is normally
-     * used instead of pendingClears.length since the 
-     * pendingClears array is usually larger than the actual number of pending
-     * clears) 
-     */
-    private int lastClear = 0;
-    
-    /**
-     * Last known visible range
-     */    
-    private volatile Range lastRange = new Range(0,0);
-    
-    /**
-     * True iff a UI update has been scheduled
-     */
-    private volatile boolean updateScheduled;
-    
-    /**
-     * True iff this object has been disposed
-     */
-    private volatile boolean disposed = false;
-    
-    /**
-     * Object that holds a start index and length. Allows
-     * the visible range to be returned as an atomic operation.
-     */
-    public final static class Range {
-        int start = 0;
-        int length = 0;
-        
-        /**
-         * @param s
-         * @param l
-         */
-        public Range(int s, int l) {
-            start = s;
-            length = l;
-        }
-    }
-    
-    /**
-     * Runnable that can be posted with an asyncExec to schedule
-     * an update to the real table.  
-     */
-    Runnable uiRunnable = new Runnable() {
-        public void run() {
-            updateScheduled = false;
-            if(!table.getControl().isDisposed()) {
-				updateTable();
-			}
-        }
-    };
-    
-    /**
-     * Creates a new table updator
-     * 
-     * @param table real table to update
-     */
-    public ConcurrentTableUpdator(AbstractVirtualTable table) {
-        this.table = table;
-    }
-    
-    /**
-     * Cleans up the updator object (but not the table itself).
-     */
-    public void dispose() {
-    	disposed = true;
-    }
-    
-    /**
-     * True iff this object has been disposed. 
-     * 
-     * @return true iff dispose() has been called
-     */
-    public boolean isDisposed() {
-    	return disposed;
-    }
-    
-    /**
-     * Returns the currently visible range
-     * 
-     * @return the currently visible range
-     */
-    public Range getVisibleRange() {
-    	return lastRange;
-    }
-    
-    /**
-     * Marks the given object as dirty. Will cause it to be cleared
-     * in the table. 
-     * 
-     * @param toFlush
-     */
-    public void clear(Object toFlush) {
-        synchronized(this) {
-            int currentIdx = knownIndices.get(toFlush, -1);
-
-            // If we've never heard of this object, bail out.
-            if (currentIdx == -1) {
-                return;
-            }
-
-            pushClear(currentIdx);
-        }
-        
-    }
-    
-    /**
-     * Sets the size of the table. Called from a background thread.
-     * 
-     * @param newTotal
-     */
-    public void setTotalItems(int newTotal) {
-        synchronized (this) {
-            if (newTotal != knownObjects.length) {
-                if (newTotal < knownObjects.length) {
-                    // Flush any objects that are being removed as a result of the resize
-                    for (int i = newTotal; i < knownObjects.length; i++) {
-                        Object toFlush = knownObjects[i];
-                        
-                        if (toFlush != null) {
-                        	knownIndices.remove(toFlush);
-                        }
-                    }
-                }
-                
-                int minSize = Math.min(knownObjects.length, newTotal);
-                
-	            Object[] newKnownObjects = new Object[newTotal];
-	            System.arraycopy(knownObjects, 0, newKnownObjects, 0, minSize);
-	            knownObjects = newKnownObjects;
-	            	            
-	            scheduleUIUpdate();
-            }
-        }
-    }
-    
-    /**
-     * Pushes an index onto the clear stack
-     * 
-     * @param toClear row to clear
-     */
-    private void pushClear(int toClear) {
-        
-    	// If beyond the end of the table
-    	if (toClear >= sentObjects.length) {
-    		return;
-    	}
-    	
-    	// If already flushed or never sent
-        if (sentObjects[toClear] == null) {
-        	return;            
-        }
-
-        // Mark as flushed
-        sentObjects[toClear] = null;
-    	
-        if (lastClear >= pendingClears.length) {
-            int newCapacity = Math.min(MIN_FLUSHLENGTH, lastClear * 2);
-            int[] newPendingClears = new int[newCapacity];
-            System.arraycopy(pendingClears, 0, newPendingClears, 0, lastClear);
-            pendingClears = newPendingClears;
-        }
-        
-        pendingClears[lastClear++] = toClear;
-    }
-    
-    /**
-     * Sets the item on the given row to the given value. May be called from a background
-     * thread. Schedules a UI update if necessary
-     * 
-     * @param idx row to change
-     * @param value new value for the given row
-     */
-    public void replace(Object value, int idx) {        
-        // Keep the synchronized block as small as possible, since the UI may
-        // be waiting on it.
-        synchronized(this) {
-            Object oldObject = knownObjects[idx];
-            
-            if (oldObject != value) {
-            	if (oldObject != null) {
-            		knownIndices.remove(oldObject);
-            	}
-            	
-                knownObjects[idx] = value;
-                
-            	if (value != null) {
-	        		int oldIndex = knownIndices.get(value, -1);
-	        		if (oldIndex != -1) {
-	        			knownObjects[oldIndex] = null;
-	        			pushClear(oldIndex);
-	        		}
-	        		
-	        		knownIndices.put(value, idx);
-            	}
-                
-                pushClear(idx);
-                
-                scheduleUIUpdate();
-            }
-        } 
-    }
-
-    /**
-     * Schedules a UI update. Has no effect if an update has already been
-     * scheduled.
-     */
-    private void scheduleUIUpdate() {
-        synchronized(this) {
-	        if (!updateScheduled) {
-	            updateScheduled = true;
-	            if(!table.getControl().isDisposed()) {
-					table.getControl().getDisplay().asyncExec(uiRunnable);
-				}
-	        }
-        }
-    }
-    
-    
-    /**
-     * Called in the UI thread by a SetData callback. Refreshes the
-     * table if necessary. Returns true iff a refresh is needed.
-     * @param includeIndex the index that should be included in the visible range.
-     */
-    public void checkVisibleRange(int includeIndex) {
-        int start = Math.min(table.getTopIndex() - 1, includeIndex);
-        int length = Math.max(table.getVisibleItemCount(), includeIndex - start);
-        Range r = lastRange;
-
-    	if (start != r.start || length != r.length) {
-    		updateTable();
-    	}
-    }
-    
-    /**
-     * Updates the table. Sends any unsent items in the visible range to the table,
-     * and clears any previously-visible items that have not yet been sent to the table.
-     * Must be called from the UI thread.
-     */
-    private void updateTable() {    	
-        
-        synchronized(this) {
-
-        	// Resize the table if necessary
-	        if (sentObjects.length != knownObjects.length) {
-	        	Object[] newSentObjects = new Object[knownObjects.length];
-	        	System.arraycopy(newSentObjects, 0, sentObjects, 0, 
-	        			Math.min(newSentObjects.length, sentObjects.length));
-	        	sentObjects = newSentObjects;
-	            table.setItemCount(newSentObjects.length);
-	        }
-
-	        // Compute the currently visible range
-	        int start = Math.min(table.getTopIndex(), knownObjects.length);
-	        int length = Math.min(table.getVisibleItemCount(), knownObjects.length - start);
-	        int itemCount = table.getItemCount();
-            
-        	int oldStart = lastRange.start;
-        	int oldLen = lastRange.length;
-        	
-        	// Store the visible range. Do it BEFORE sending any table.clear calls,
-        	// since clearing a visible row will result in a SetData callback which
-        	// cause another table update if the visible range is different from
-        	// the stored values -- this could cause infinite recursion.
-        	lastRange = new Range(start, length);
-        	
-			// Re-clear any items in the old range that were never filled in
-			for(int idx = 0; idx < oldLen; idx++) {
-				int row = idx + oldStart;
-				
-				// If this item is no longer visible
-				if (row < itemCount && (row < start || row >= start + length)) {
-					
-					// Note: if we wanted to be really aggressive about clearing
-					// items that are no longer visible, we could clear here unconditionally.
-					// The current way of doing things won't clear a row if its contents are
-					// up-to-date.
-					if (sentObjects[row] == null) {
-						table.clear(row);
-					}
-				}
-			}
-			
-			// Process any pending clears
-	        if (lastClear > 0) {
-				for (int i = 0; i < lastClear; i++) {
-					int row = pendingClears[i];
-		
-					if (row < sentObjects.length) {
-						table.clear(row);
-					}
-				}
-	
-				if (pendingClears.length > MIN_FLUSHLENGTH) {
-					pendingClears = new int[MIN_FLUSHLENGTH];
-				}
-				lastClear = 0;
-	        }
-		    
-	        // Send any unsent items in the visible range
-	        for (int idx = 0; idx < length; idx++) {
-	        	int row = idx + start;
-	        	
-	        	Object obj = knownObjects[row];
-	        	if (obj != null && obj != sentObjects[idx]) {
-	        		table.replace(obj, row);
-	        		sentObjects[idx] = obj;
-	        	}
-	        }
-	        
-        }
-    }
-
-	/**
-	 * Return the array of all known objects that have been sent here from the background
-     * thread.
-	 * @return the array of all known objects
-	 */
-	public Object[] getKnownObjects() {
-		return knownObjects;
-	}
-    
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/DeferredContentProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/DeferredContentProvider.java
deleted file mode 100644
index c2fa302..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/DeferredContentProvider.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.AcceptAllFilter;
-import org.eclipse.jface.viewers.IFilter;
-import org.eclipse.jface.viewers.ILazyContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Table;
-
-/**
- * Content provider that performs sorting and filtering in a background thread.
- * Requires a <code>TableViewer</code> created with the <code>SWT.VIRTUAL</code>
- * flag and an <code>IConcurrentModel</code> as input.
- * <p>
- * The sorter and filter must be set directly on the content provider.
- * Any sorter or filter on the TableViewer will be ignored. 
- * </p>
- *  
- * <p>
- * The real implementation is in <code>BackgroundContentProvider</code>. This 
- * object is a lightweight wrapper that adapts the algorithm to work with 
- * <code>TableViewer</code>.
- * </p>
- * 
- * @since 3.1
- */
-public class DeferredContentProvider implements ILazyContentProvider {
-
-	private int limit = -1;
-	private BackgroundContentProvider provider;
-	private Comparator sortOrder;
-	private IFilter filter = AcceptAllFilter.getInstance();
-	private AbstractVirtualTable table;
-	
-	private static final class TableViewerAdapter extends AbstractVirtualTable {
-		
-		private TableViewer viewer;
-		
-		/**
-		 * @param viewer
-		 */
-		public TableViewerAdapter(TableViewer viewer) {
-			this.viewer = viewer;
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#flushCache(java.lang.Object)
-		 */
-		public void clear(int index) {
-			viewer.clear(index);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#replace(java.lang.Object, int)
-		 */
-		public void replace(Object element, int itemIndex) {
-			viewer.replace(element, itemIndex);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#setItemCount(int)
-		 */
-		public void setItemCount(int total) {
-			viewer.setItemCount(total);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#getItemCount()
-		 */
-		public int getItemCount() {
-			return viewer.getTable().getItemCount();
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#getTopIndex()
-		 */
-		public int getTopIndex() {
-			return Math.max(viewer.getTable().getTopIndex() - 1, 0);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#getVisibleItemCount()
-		 */
-		public int getVisibleItemCount() {
-			Table table = viewer.getTable();
-			Rectangle rect = table.getClientArea ();
-			int itemHeight = table.getItemHeight ();
-			int headerHeight = table.getHeaderHeight ();
-			return (rect.height - headerHeight + itemHeight - 1) / (itemHeight + table.getGridLineWidth());
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.deferred.AbstractVirtualTable#getControl()
-		 */
-		public Control getControl() {
-			return viewer.getControl();
-		}
-		
-	}
-
-	/**
-	 * Create a DeferredContentProvider with the given sort order.
-	 * @param sortOrder a comparator that sorts the content.
-	 */
-	public DeferredContentProvider(Comparator sortOrder) {
-		this.sortOrder = sortOrder;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-	 */
-	public void dispose() {
-		setProvider(null);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-	 */
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		if (newInput == null) {
-			setProvider(null);
-			return;
-		}
-		
-		Assert.isTrue(newInput instanceof IConcurrentModel);
-		Assert.isTrue(viewer instanceof TableViewer);
-		IConcurrentModel model = (IConcurrentModel)newInput;
-		
-		this.table = new TableViewerAdapter((TableViewer)viewer);
-		
-		BackgroundContentProvider newProvider = new BackgroundContentProvider(
-				table,
-				model, sortOrder); 
-		
-		setProvider(newProvider);
-		
-		newProvider.setLimit(limit);
-		newProvider.setFilter(filter);
-	}
-	
-	/**
-	 * Sets the sort order for this content provider. This sort order takes priority
-	 * over anything that was supplied to the <code>TableViewer</code>.
-	 * 
-	 * @param sortOrder new sort order. The comparator must be able to support being
-	 * used in a background thread.
-	 */
-	public void setSortOrder(Comparator sortOrder) {
-		Assert.isNotNull(sortOrder);
-		this.sortOrder = sortOrder;
-		if (provider != null) {
-			provider.setSortOrder(sortOrder);
-		}
-	}
-	
-	/**
-	 * Sets the filter for this content provider. This filter takes priority over
-	 * anything that was supplied to the <code>TableViewer</code>. The filter
-	 * must be capable of being used in a background thread.
-	 * 
-	 * @param toSet filter to set
-	 */
-	public void setFilter(IFilter toSet) {
-		this.filter = toSet;
-		if (provider != null) {
-			provider.setFilter(toSet);
-		}
-	}
-	
-	/**
-	 * Sets the maximum number of rows in the table. If the model contains more
-	 * than this number of elements, only the top elements will be shown based on
-	 * the current sort order. 
-	 * 
-	 * @param limit maximum number of rows to show or -1 if unbounded
-	 */
-	public void setLimit(int limit) {
-		this.limit = limit;
-		if (provider != null) {
-			provider.setLimit(limit);
-		}
-	}
-	
-	/**
-	 * Returns the current maximum number of rows or -1 if unbounded
-	 * 
-	 * @return the current maximum number of rows or -1 if unbounded
-	 */
-	public int getLimit() {
-		return limit;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ILazyContentProvider#updateElement(int)
-	 */
-	public void updateElement(int element) {
-		if (provider != null) {
-			provider.checkVisibleRange(element);
-		}
-	}
-	
-	private void setProvider(BackgroundContentProvider newProvider) {
-		if (provider != null) {
-			provider.dispose();
-		}
-		
-		provider = newProvider;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/FastProgressReporter.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/FastProgressReporter.java
deleted file mode 100644
index 35a360b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/FastProgressReporter.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * A more efficient alternative to an IProgressMonitor. In particular, the implementation
- * is designed to make isCanceled() run as efficiently as possible. Currently package-visible
- * because the implementation is incomplete.
- * 
- * @since 3.1
- */
-final class FastProgressReporter {
-    private IProgressMonitor monitor;
-    private volatile boolean canceled = false;
-    private int cancelCheck = 0;
-//    private String taskName;
-//    
-//    private int taskDepth = 0;
-//    private int subTaskSize = 1;
-//    private int totalWork = 1;
-//    private int parentWork = 1;
-//    private int monitorUnitsRemaining;
-    
-    private static int CANCEL_CHECK_PERIOD = 40;
-    
-    /**
-     * Constructs a null FastProgressReporter
-     */
-    public FastProgressReporter() {
-    }
-    
-    /**
-     * Constructs a FastProgressReporter that wraps the given progress monitor
-     * 
-     * @param monitor the monitor to wrap
-     * @param totalProgress the total progress to be reported
-     */
-    public FastProgressReporter(IProgressMonitor monitor, int totalProgress) {
-        this.monitor = monitor;
-        //monitorUnitsRemaining = totalProgress;
-        canceled = monitor.isCanceled();
-    }
-    
-//    /**
-//     * Every call to beginTask must have a corresponding call to endTask, with the
-//     * same argument.
-//     * 
-//     * @param totalWork
-//     * @since 3.1
-//     */
-//    public void beginTask(int totalWork) {
-//        
-//        if (monitor == null) {
-//            return;
-//        }
-//        
-//        taskDepth++;
-//
-//        if (totalWork == 0) {
-//            return;
-//        }
-//        
-//        this.totalWork *= totalWork;
-//    }
-//    
-//    public void beginSubTask(int subTaskWork) {
-//        subTaskSize *= subTaskWork;
-//    }
-//    
-//    public void endSubTask(int subTaskWork) {
-//        subTaskSize /= subTaskWork;
-//    }
-//    
-//    public void worked(int amount) {
-//        amount *= subTaskSize;
-//        
-//        if (amount > totalWork) {
-//            amount = totalWork;
-//        }
-//        
-//        int consumed = monitorUnitsRemaining * amount / totalWork;
-//        
-//        if (consumed > 0) {
-//            monitor.worked(consumed);
-//            monitorUnitsRemaining -= consumed;
-//        }
-//        totalWork -= amount;
-//    }
-//    
-//    public void endTask(int totalWork) {        
-//        taskDepth--;
-//        
-//        if (taskDepth == 0) {
-//            if (monitor != null && monitorUnitsRemaining > 0) {
-//                monitor.worked(monitorUnitsRemaining);
-//            }
-//        }
-//        
-//        if (totalWork == 0) {
-//            return;
-//        }
-//        
-//        this.totalWork /= totalWork;
-//
-//    }
-    
-    /**
-     * Return whether the progress monitor has been canceled.
-     * 
-     * @return <code>true</code> if the monitor has been cancelled, <code>false</code> otherwise.
-     */
-    public boolean isCanceled() {
-        if (monitor == null) {
-            return canceled;
-        }
-        
-        cancelCheck++;
-        if (cancelCheck > CANCEL_CHECK_PERIOD) {
-            canceled = monitor.isCanceled();
-            cancelCheck = 0;
-        }
-        return canceled;
-    }
-    
-    /**
-     * Cancel the progress monitor.
-     */
-    public void cancel() {        
-        canceled = true;
-        
-        if (monitor == null) {
-            return;
-        }
-        monitor.setCanceled(true);
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModel.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModel.java
deleted file mode 100644
index 75326f5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModel.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-
-/**
- * Interface for a set of unordered elements that can fire change notifications.
- * IConcurrentModel returns its contents asynchronous. Rather than implementing 
- * "get" methods, listeners can request an update and the model fires back
- * information at its earliest convenience.
- * 
- * <p>
- * The model is allowed to send back notifications to its listeners in any thread,
- * and the listeners must not assume that the notifications will arrive in the UI
- * thread.
- * </p>
- * 
- * <p>
- * Not intended to be implemented by clients. Clients should subclass 
- * <code>AbstractConcurrentModel</code> instead.
- * </p>
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IConcurrentModel {
-
-    /**
-     * Requests that the receiver to call the given listener's setContents(...) 
-     * method at its earliest convenience. The receiver is allowed to compute the 
-     * elements asynchronously. That is, it can compute the result in a background 
-     * thread and call setContents(...) once the result is ready. If the result is
-     * too large to return in one batch, it can call setContents with an empty array
-     * followed by a sequence of adds.
-     * <p>
-     * Has no effect if an update is already queued for an identical listener.
-     * </p>
-     * 
-     * @param listener listener whose setContents method should be called. The
-     * listener must have been previously registered with addListener.
-     */
-    public void requestUpdate(IConcurrentModelListener listener);
-    
-    /**
-     * Adds a listener to this model. The listener should be given the model's
-     * current contents (either through setContents or a sequence of adds) at the
-     * receiver's earliest convenience. The receiver will notify the listener
-     * about any changes in state until the listener is removed.
-     * 
-     * <p>
-     * Has no effect if an identical listener is already registered.
-     * </p>
-     * 
-     * @param listener listener to add
-     */
-    public void addListener(IConcurrentModelListener listener);
-    
-    /**
-     * Removes a listener from this model. The receiver will stop sending
-     * notifications to the given listener as soon as possible (although
-     * some additional notifications may still if arrive if the receiver
-     * was in the process of sending notifications in another thread).
-     * Any pending updates for this listener will be cancelled.
-     * <p>
-     * Has no effect if the given listener is not known to this model.
-     * </p>
-     * 
-     * @param listener listener to remove
-     */
-    public void removeListener(IConcurrentModelListener listener);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModelListener.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModelListener.java
deleted file mode 100644
index be9075a..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IConcurrentModelListener.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-/**
- * Interface for objects that can listen to changes in an IConcurrentModel.
- * Elements in an IConcurrentModel are unordered.
- * 
- * @since 3.1
- */
-public interface IConcurrentModelListener {
-	
-	/**
-	 * Called when elements are added to the model 
-	 * 
-	 * @param added elements added to the model
-	 */
-    public void add(Object[] added);
-    
-    /**
-     * Called when elements are removed from the model
-     * 
-     * @param removed elements removed from the model
-     */
-    public void remove(Object[] removed);
-    
-    /**
-     * Called when elements in the model have changed
-     * 
-     * @param changed elements that have changed
-     */
-    public void update(Object[] changed);
-    
-    /**
-     * Notifies the receiver about the complete set
-     * of elements in the model. Most models will
-     * not call this method unless the listener explicitly
-     * requests it by calling 
-     * <code>IConcurrentModel.requestUpdate</code>
-     *  
-     * @param newContents contents of the model
-     */
-    public void setContents(Object[] newContents);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IntHashMap.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IntHashMap.java
deleted file mode 100644
index 6b6dd86..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/IntHashMap.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import java.util.HashMap;
-
-/**
- * Represents a map of objects onto ints. This is intended for future optimization:
- * using int primitives would allow for an implementation that doesn't require
- * additional object allocations for Integers. However, the current implementation
- * simply delegates to the Java HashMap class. 
- * 
- * @since 3.1
- */
-/* package */ class IntHashMap {
-    private HashMap map; 
-    
-    /**
-     * @param size
-     * @param loadFactor
-     */
-    public IntHashMap(int size, float loadFactor) {
-        map = new HashMap(size, loadFactor);
-    }
-    
-    /**
-     * 
-     */
-    public IntHashMap() {
-        map = new HashMap();
-    }
-    
-    /**
-     * @param key
-     */
-    public void remove(Object key) {
-        map.remove(key);
-    }
-    
-    /**
-     * @param key
-     * @param value
-     */
-    public void put(Object key, int value) {
-        map.put(key, new Integer(value));
-    }
-    
-    /**
-     * @param key
-     * @return the int value at the given key 
-     */
-    public int get(Object key) {
-        return get(key, 0);
-    }
-    
-    /**
-     * @param key
-     * @param defaultValue
-     * @return the int value at the given key, or the default value if this map does not contain the given key
-     */
-    public int get(Object key, int defaultValue) {
-        Integer result = (Integer)map.get(key);
-        
-        if (result != null) {
-            return result.intValue();
-        }
-        
-        return defaultValue;
-    }
-    
-    /**
-     * @param key
-     * @return <code>true</code> if this map contains the given key, <code>false</code> otherwise
-     */
-    public boolean containsKey(Object key) {
-        return map.containsKey(key);
-    }
-    
-    /**
-     * @return the number of key/value pairs
-     */
-    public int size() {
-    	return map.size();
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java
deleted file mode 100644
index 2384f20..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/LazySortedCollection.java
+++ /dev/null
@@ -1,1432 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * This object maintains a collection of elements, sorted by a comparator
- * given in the constructor. The collection is lazily sorted, allowing 
- * more efficient runtimes for most methods. There are several methods on this
- * object that allow objects to be queried by their position in the sorted
- * collection.
- * 
- * <p>
- * This is a modified binary search tree. Each subtree has a value, a left and right subtree, 
- * a count of the number of children, and a set of unsorted children. 
- * Insertion happens lazily. When a new node N is inserted into a subtree T, it is initially 
- * added to the set of unsorted children for T without actually comparing it with the value for T. 
- * </p>
- * <p>
- * The unsorted children will remain in the unsorted set until some subsequent operation requires
- * us to know the exact set of elements in one of the subtrees. At that time, we partition
- * T by comparing all of its unsorted children with T's value and moving them into the left 
- * or right subtrees.
- * </p>
- * 
- * @since 3.1
- */
-public class LazySortedCollection {
-    private final int MIN_CAPACITY = 8;
-    private Object[] contents = new Object[MIN_CAPACITY];
-    private int[] leftSubTree = new int[MIN_CAPACITY];
-    private int[] rightSubTree = new int[MIN_CAPACITY];
-    private int[] nextUnsorted = new int[MIN_CAPACITY];
-    private int[] treeSize = new int[MIN_CAPACITY];
-    private int[] parentTree = new int[MIN_CAPACITY];
-    private int root = -1;
-    private int lastNode = 0;
-    private int firstUnusedNode = -1;
-    
-    private static final float loadFactor = 0.75f;
-    
-    private IntHashMap objectIndices;
-    private Comparator comparator;
-    private static int counter = 0;
-    
-    /**
-     * Disables randomization and enables additional runtime error checking.
-     * Severely degrades performance if set to true. Intended for use in test 
-     * suites only.
-     */
-    public boolean enableDebug = false;
-    
-    // This object is inserted as the value into any node scheduled for lazy removal
-    private Object lazyRemovalFlag = new Object() {
-        public String toString() {
-            return "Lazy removal flag";  //$NON-NLS-1$
-        }
-    };
-    
-    private final static int DIR_LEFT = 0;
-    private final static int DIR_RIGHT = 1;
-    private final static int DIR_UNSORTED = 2;
-    
-    // Direction constants indicating root nodes
-    private final static int DIR_ROOT = 3;
-    private final static int DIR_UNUSED = 4;
-       
-    private final class Edge {
-        private int startNode;
-        private int direction;
-        
-        private Edge() {
-            startNode = -1;
-            direction = -1;
-        }
-        
-        private Edge(int node, int dir) {
-            startNode = node;
-            direction = dir;
-        }
-        
-        private int getStart() {
-            return startNode;
-        }
-        
-        private int getTarget() {
-            if (startNode == -1) {
-                if (direction == DIR_UNSORTED) {
-                    return firstUnusedNode;
-                } else if (direction == DIR_ROOT) {
-                    return root;
-                }
-                return -1;
-            }
-            
-            if (direction == DIR_LEFT) {
-                return leftSubTree[startNode];
-            }
-            if (direction == DIR_RIGHT) {
-                return rightSubTree[startNode];
-            }
-            return nextUnsorted[startNode];
-        }
-        
-        private boolean isNull() {
-            return getTarget() == -1;
-        }
-     
-        /**
-         * Redirects this edge to a new node
-         * @param newNode
-         * @since 3.1
-         */
-        private void setTarget(int newNode) {            
-            if (direction == DIR_LEFT) {
-    	        leftSubTree[startNode] = newNode;
-            } else if (direction == DIR_RIGHT) {
-                rightSubTree[startNode] = newNode;
-            } else if (direction == DIR_UNSORTED) {
-                nextUnsorted[startNode] = newNode;
-            } else if (direction == DIR_ROOT) {
-                root = newNode;
-            } else if (direction == DIR_UNUSED) {
-                firstUnusedNode = newNode;
-            }
-            
-	        if (newNode != -1) {
-	            parentTree[newNode] = startNode;
-	        }
-        }
-        
-        private void advance(int direction) {
-            startNode = getTarget();
-            this.direction = direction;
-        }
-    }
-
-    private void setRootNode(int node) {
-        root = node;
-        if (node != -1) {
-            parentTree[node] = -1;
-        }
-    }
-    
-    /**
-     * Creates a new sorted collection using the given comparator to determine
-     * sort order.
-     * 
-     * @param c comparator that determines the sort order
-     */
-    public LazySortedCollection(Comparator c) {
-        this.comparator = c;
-    }
-    
-    /**
-     * Tests if this object's internal state is valid. Throws a runtime
-     * exception if the state is invalid, indicating a programming error
-     * in this class. This method is intended for use in test
-     * suites and should not be called by clients.
-     */
-    public void testInvariants() {
-        if (!enableDebug) {
-            return;
-        }
-        
-        testInvariants(root);
-    }
-    
-    private void testInvariants(int node) {
-        if (node == -1) {
-            return;
-        }
-        
-        // Get the current tree size (we will later force the tree size
-        // to be recomputed from scratch -- if everything works properly, then
-        // there should be no change.
-        int treeSize = getSubtreeSize(node);
-
-        int left = leftSubTree[node];
-        int right = rightSubTree[node];
-        int unsorted = nextUnsorted[node];
-        
-        if (isUnsorted(node)) {
-            Assert.isTrue(left == -1, "unsorted nodes shouldn't have a left subtree"); //$NON-NLS-1$
-            Assert.isTrue(right == -1, "unsorted nodes shouldn't have a right subtree"); //$NON-NLS-1$
-        }
-        
-        if (left != -1) {
-            testInvariants(left);
-            Assert.isTrue(parentTree[left] == node, "left node has invalid parent pointer"); //$NON-NLS-1$
-        }
-        if (right != -1) {
-            testInvariants(right);
-            Assert.isTrue(parentTree[right] == node, "right node has invalid parent pointer");             //$NON-NLS-1$
-        }
-
-        int previous = node;
-        while (unsorted != -1) {
-            int oldTreeSize = this.treeSize[unsorted];
-            recomputeTreeSize(unsorted);
-            
-            Assert.isTrue(this.treeSize[unsorted] == oldTreeSize, 
-                    "Invalid node size for unsorted node"); //$NON-NLS-1$
-            Assert.isTrue(leftSubTree[unsorted] == -1, "unsorted nodes shouldn't have left subtrees"); //$NON-NLS-1$
-            Assert.isTrue(rightSubTree[unsorted] == -1, "unsorted nodes shouldn't have right subtrees"); //$NON-NLS-1$
-            Assert.isTrue(parentTree[unsorted] == previous, "unsorted node has invalid parent pointer"); //$NON-NLS-1$
-            Assert.isTrue(contents[unsorted] != lazyRemovalFlag, "unsorted nodes should not be lazily removed"); //$NON-NLS-1$
-            previous = unsorted;
-            unsorted = nextUnsorted[unsorted];
-        }
-        
-        // Note that we've already tested that the child sizes are correct... if our size is
-        // correct, then recomputing it now should not cause any change.
-        recomputeTreeSize(node);
-                
-        Assert.isTrue(treeSize == getSubtreeSize(node), "invalid tree size"); //$NON-NLS-1$
-    }
-    
-    private boolean isUnsorted(int node) {
-        int parent = parentTree[node];
-        
-        if (parent != -1) {
-            return nextUnsorted[parent] == node;
-        }
-        
-        return false;
-    }
-    
-    private final boolean isLess(int element1, int element2) {
-        return comparator.compare(contents[element1], contents[element2]) < 0;
-    }
-    
-    /**
-     * Adds the given element to the given subtree. Returns the new
-     * root of the subtree.
-     * 
-     * @param subTree index of the subtree to insert elementToAdd into. If -1, 
-     *                then a new subtree will be created for elementToAdd
-     * @param elementToAdd index of the element to add to the subtree. If -1, this method
-     *                 is a NOP.
-     * @since 3.1
-     */
-    private final int addUnsorted(int subTree, int elementToAdd) {
-        if (elementToAdd == -1) {
-            return subTree;
-        }
-        
-        if (subTree == -1) {
-            nextUnsorted[elementToAdd] = -1;
-            treeSize[elementToAdd] = 1;
-            return elementToAdd;
-        }
-        
-        // If the subTree is empty (ie: it only contains nodes flagged for lazy removal),
-        // chop it off.
-        if (treeSize[subTree] == 0) {
-            removeSubTree(subTree);
-            nextUnsorted[elementToAdd] = -1;
-            treeSize[elementToAdd] = 1;
-            return elementToAdd;
-        }
-        
-        // If neither subtree has any children, add a pseudorandom chance of the
-        // newly added element becoming the new pivot for this node. Note: instead
-        // of a real pseudorandom generator, we simply use a counter here.
-        if (!enableDebug && leftSubTree[subTree] == -1 && rightSubTree[subTree] == -1 
-                && leftSubTree[elementToAdd] == -1 && rightSubTree[elementToAdd] == -1) {
-	        counter--;
-	        
-	        if (counter % treeSize[subTree] == 0) {
-	            // Make the new node into the new pivot 
-	            nextUnsorted[elementToAdd] = subTree;
-	            parentTree[elementToAdd] = parentTree[subTree];
-	            parentTree[subTree] = elementToAdd;
-	            treeSize[elementToAdd] = treeSize[subTree] + 1;
-	            return elementToAdd;
-	        }
-        }
-        
-        int oldNextUnsorted = nextUnsorted[subTree];
-        nextUnsorted[elementToAdd] = oldNextUnsorted;
-        
-        if (oldNextUnsorted == -1) {
-            treeSize[elementToAdd] = 1;
-        } else {
-            treeSize[elementToAdd] = treeSize[oldNextUnsorted] + 1;
-            parentTree[oldNextUnsorted] = elementToAdd;
-        }
-        
-        parentTree[elementToAdd] = subTree;
-        
-        nextUnsorted[subTree] = elementToAdd;
-        treeSize[subTree]++;        
-        return subTree;
-    }
-    
-    /**
-     * Returns the number of elements in the collection
-     * 
-     * @return the number of elements in the collection
-     */
-    public int size() {
-        int result = getSubtreeSize(root);
-        
-        testInvariants();
-        
-        return result;
-    }
-    
-    /**
-     * Given a tree and one of its unsorted children, this sorts the child by moving
-     * it into the left or right subtrees. Returns the next unsorted child or -1 if none
-     * 
-     * @param subTree parent tree
-     * @param toMove child (unsorted) subtree
-     * @since 3.1
-     */
-    private final int partition(int subTree, int toMove) {
-        int result = nextUnsorted[toMove];
-        
-        if (isLess(toMove, subTree)) {
-            int nextLeft = addUnsorted(leftSubTree[subTree], toMove);
-            leftSubTree[subTree] = nextLeft;
-            parentTree[nextLeft] = subTree;
-        } else {
-            int nextRight = addUnsorted(rightSubTree[subTree], toMove);
-            rightSubTree[subTree] = nextRight;
-            parentTree[nextRight] = subTree;
-        }
-        
-        return result;
-    }
-    
-    /**
-     * Partitions the given subtree. Moves all unsorted elements at the given node
-     * to either the left or right subtrees. If the node itself was scheduled for
-     * lazy removal, this will force the node to be removed immediately. Returns
-     * the new subTree.
-     * 
-     * @param subTree
-     * @return the replacement node (this may be different from subTree if the subtree
-     * was replaced during the removal)
-     * @since 3.1
-     */
-    private final int partition(int subTree, FastProgressReporter mon) throws InterruptedException {
-        if (subTree == -1) {
-            return -1;
-        }
-        
-        if (contents[subTree] == lazyRemovalFlag) {
-            subTree = removeNode(subTree);
-            if (subTree == -1) {
-                return -1;
-            }
-        }
-        
-        for (int idx = nextUnsorted[subTree]; idx != -1;) { 
-            idx = partition(subTree, idx);
-            nextUnsorted[subTree] = idx;
-            if (idx != -1) {
-                parentTree[idx] = subTree;
-            }
-            
-            if (mon.isCanceled()) {
-                throw new InterruptedException();
-            }
-        }
-        
-        // At this point, there are no remaining unsorted nodes in this subtree
-        nextUnsorted[subTree] = -1;
-        
-        return subTree;
-    }
-    
-    private final int getSubtreeSize(int subTree) {
-        if (subTree == -1) {
-            return 0;
-        }
-        return treeSize[subTree];
-    }
-    
-    /**
-     * Increases the capacity of this collection, if necessary, so that it can hold the 
-     * given number of elements. This can be used prior to a sequence of additions to
-     * avoid memory reallocation. This cannot be used to reduce the amount 
-     * of memory used by the collection.
-     *
-     * @param newSize capacity for this collection
-     */
-    public final void setCapacity(int newSize) {
-        if (newSize > contents.length) {
-            setArraySize(newSize);
-        }
-    }
-    
-    /**
-     * Adjusts the capacity of the array.
-     * 
-     * @param newCapacity
-     */
-    private final void setArraySize(int newCapacity) {
-        Object[] newContents = new Object[newCapacity];
-        System.arraycopy(contents, 0, newContents, 0, lastNode);
-        contents = newContents;
-        
-        int[] newLeftSubTree = new int[newCapacity];
-        System.arraycopy(leftSubTree, 0, newLeftSubTree, 0, lastNode);
-        leftSubTree = newLeftSubTree;
-        
-        int[] newRightSubTree = new int[newCapacity];
-        System.arraycopy(rightSubTree, 0, newRightSubTree, 0, lastNode);
-        rightSubTree = newRightSubTree;
-        
-        int[] newNextUnsorted = new int[newCapacity];
-        System.arraycopy(nextUnsorted, 0, newNextUnsorted, 0, lastNode);
-        nextUnsorted = newNextUnsorted;
-        
-        int[] newTreeSize = new int[newCapacity];
-        System.arraycopy(treeSize, 0, newTreeSize, 0, lastNode);
-        treeSize = newTreeSize;
-        
-        int[] newParentTree = new int[newCapacity];
-        System.arraycopy(parentTree, 0, newParentTree, 0, lastNode);
-        parentTree = newParentTree;
-    }
-    
-    /**
-     * Creates a new node with the given value. Returns the index of the newly
-     * created node.
-     * 
-     * @param value
-     * @return the index of the newly created node
-     * @since 3.1
-     */
-    private final int createNode(Object value) {
-        int result = -1;
-
-        if (firstUnusedNode == -1) {
-            // If there are no unused nodes from prior removals, then 
-            // we add a node at the end
-            result = lastNode;
-            
-            // If this would cause the array to overflow, reallocate the array 
-            if (contents.length <= lastNode) {
-                setCapacity(lastNode * 2);
-            }
-            
-            lastNode++;
-        } else {
-            // Reuse a node from a prior removal
-            result = firstUnusedNode;
-            firstUnusedNode = nextUnsorted[result];
-        }
-        
-        contents[result] = value;
-        treeSize[result] = 1;
-        
-        // Clear pointers
-        leftSubTree[result] = -1;
-        rightSubTree[result] = -1;
-        nextUnsorted[result] = -1;
-        
-        // As long as we have a hash table of values onto tree indices, incrementally
-        // update the hash table. Note: the table is only constructed as needed, and it
-        // is destroyed whenever the arrays are reallocated instead of reallocating it.
-        if (objectIndices != null) {
-            objectIndices.put(value, result);
-        }
-        
-        return result;
-    }
-    
-    /**
-     * Returns the current tree index for the given object.
-     * 
-     * @param value
-     * @return the current tree index
-     * @since 3.1
-     */
-    private int getObjectIndex(Object value) {
-        // If we don't have a map of values onto tree indices, build the map now.
-        if (objectIndices == null) {
-            int result = -1;
-            
-            objectIndices = new IntHashMap((int)(contents.length / loadFactor) + 1, loadFactor);
-            
-            for (int i = 0; i < lastNode; i++) {
-                Object element = contents[i];
-                
-                if (element != null && element != lazyRemovalFlag) {
-                    objectIndices.put(element, i);
-                    
-                    if (value == element) {
-                        result = i;
-                    }
-                }
-            }
-            
-            return result;
-        }
-        
-        // If we have a map of values onto tree indices, return the result by looking it up in
-        // the map
-        return objectIndices.get(value, -1);
-    }
-    
-    /**
-     * Redirects any pointers from the original to the replacement. If the replacement
-     * causes a change in the number of elements in the parent tree, the changes are
-     * propogated toward the root.
-     * 
-     * @param nodeToReplace
-     * @param replacementNode
-     * @since 3.1
-     */
-    private void replaceNode(int nodeToReplace, int replacementNode) {
-        int parent = parentTree[nodeToReplace];
-        
-        if (parent == -1) {
-            if (root == nodeToReplace) {
-                setRootNode(replacementNode);
-            }
-        } else {
-            if (leftSubTree[parent] == nodeToReplace) {
-                leftSubTree[parent] = replacementNode;
-            } else if (rightSubTree[parent] == nodeToReplace) {
-                rightSubTree[parent] = replacementNode;
-            } else if (nextUnsorted[parent] == nodeToReplace) {
-                nextUnsorted[parent] = replacementNode;
-            }
-            if (replacementNode != -1) {
-                parentTree[replacementNode] = parent;
-            }
-        }
-    }
-    
-    private void recomputeAncestorTreeSizes(int node) {
-        while (node != -1) {
-            int oldSize = treeSize[node];
-            
-            recomputeTreeSize(node);
-            
-            if (treeSize[node] == oldSize) {
-                break;
-            }
-            
-            node = parentTree[node];
-        }        
-    }
-    
-    /**
-     * Recomputes the tree size for the given node.
-     * 
-     * @param node
-     * @since 3.1
-     */
-    private void recomputeTreeSize(int node) {
-        if (node == -1) {
-            return;
-        }
-        treeSize[node] = getSubtreeSize(leftSubTree[node])
-    		+ getSubtreeSize(rightSubTree[node])
-    		+ getSubtreeSize(nextUnsorted[node])
-    		+ (contents[node] == lazyRemovalFlag ? 0 : 1); 
-    }
-    
-    /**
-     * 
-     * @param toRecompute
-     * @param whereToStop
-     * @since 3.1
-     */
-    private void forceRecomputeTreeSize(int toRecompute, int whereToStop) {
-        while (toRecompute != -1 && toRecompute != whereToStop) {
-	        recomputeTreeSize(toRecompute);
-	        
-	        toRecompute = parentTree[toRecompute];
-        }
-    }
-    
-    /**
-     * Destroy the node at the given index in the tree
-     * @param nodeToDestroy
-     * @since 3.1
-     */
-    private void destroyNode(int nodeToDestroy) {
-        // If we're maintaining a map of values onto tree indices, remove this entry from
-        // the map
-        if (objectIndices != null) {
-            Object oldContents = contents[nodeToDestroy];
-            if (oldContents != lazyRemovalFlag) {
-                objectIndices.remove(oldContents);
-            }
-        }
-        
-        contents[nodeToDestroy] = null;
-        leftSubTree[nodeToDestroy] = -1;
-        rightSubTree[nodeToDestroy] = -1;
-        
-        if (firstUnusedNode == -1) {
-            treeSize[nodeToDestroy] = 1;
-        } else {
-            treeSize[nodeToDestroy] = treeSize[firstUnusedNode] + 1;
-            parentTree[firstUnusedNode] = nodeToDestroy;
-        }
-        
-        nextUnsorted[nodeToDestroy] = firstUnusedNode;
-        
-        firstUnusedNode = nodeToDestroy; 
-    }
-    
-    /**
-     * Frees up memory by clearing the list of nodes that have been freed up through removals.
-     * 
-     * @since 3.1
-     */
-    private final void pack() {
-        
-        // If there are no unused nodes, then there is nothing to do
-        if (firstUnusedNode == -1) {
-            return;
-        }
-        
-        int reusableNodes = getSubtreeSize(firstUnusedNode);
-        int nonPackableNodes = lastNode - reusableNodes;
-        
-        // Only pack the array if we're utilizing less than 1/4 of the array (note:
-        // this check is important, or it will change the time bounds for removals)
-        if (contents.length < MIN_CAPACITY || nonPackableNodes > contents.length / 4) {
-            return;
-        }
-        
-        // Rather than update the entire map, just null it out. If it is needed,
-        // it will be recreated lazily later. This will save some memory if the
-        // map isn't needed, and it takes a similar amount of time to recreate the
-        // map as to update all the indices.
-        objectIndices = null;
-        
-        // Maps old index -> new index
-        int[] mapNewIdxOntoOld = new int[contents.length];
-        int[] mapOldIdxOntoNew = new int[contents.length];
-        
-        int nextNewIdx = 0;
-        // Compute the mapping. Determine the new index for each element 
-        for (int oldIdx = 0; oldIdx < lastNode; oldIdx++) {
-            if (contents[oldIdx] != null) {
-                mapOldIdxOntoNew[oldIdx] = nextNewIdx;
-                mapNewIdxOntoOld[nextNewIdx] = oldIdx;
-                nextNewIdx++;
-            } else {
-                mapOldIdxOntoNew[oldIdx] = -1;
-            }
-        }
-        
-        // Make the actual array size double the number of nodes to allow
-        // for expansion.
-        int newNodes = nextNewIdx;
-        int newCapacity = Math.max(newNodes * 2, MIN_CAPACITY);
-        
-        // Allocate new arrays
-        Object[] newContents = new Object[newCapacity];
-        int[] newTreeSize = new int[newCapacity];
-        int[] newNextUnsorted = new int[newCapacity];
-        int[] newLeftSubTree = new int[newCapacity];
-        int[] newRightSubTree = new int[newCapacity];
-        int[] newParentTree = new int[newCapacity];
-        
-        for (int newIdx = 0; newIdx < newNodes; newIdx++) {
-            int oldIdx = mapNewIdxOntoOld[newIdx];
-            newContents[newIdx] = contents[oldIdx];
-            newTreeSize[newIdx] = treeSize[oldIdx];
-            
-            int left = leftSubTree[oldIdx];
-            if (left == -1) {
-                newLeftSubTree[newIdx] = -1;
-            } else {
-                newLeftSubTree[newIdx] = mapOldIdxOntoNew[left];
-            }
-            
-            int right = rightSubTree[oldIdx];
-            if (right == -1) {
-                newRightSubTree[newIdx] = -1;                
-            } else {
-                newRightSubTree[newIdx] = mapOldIdxOntoNew[right];
-            }
-
-            int unsorted = nextUnsorted[oldIdx];
-            if (unsorted == -1) {
-                newNextUnsorted[newIdx] = -1;
-            } else {
-                newNextUnsorted[newIdx] = mapOldIdxOntoNew[unsorted];
-            }
-            
-            int parent = parentTree[oldIdx];
-            if (parent == -1) {
-                newParentTree[newIdx] = -1;
-            } else {
-                newParentTree[newIdx] = mapOldIdxOntoNew[parent];
-            }
-        }
-        
-        contents = newContents;
-        nextUnsorted = newNextUnsorted;
-        treeSize = newTreeSize;
-        leftSubTree = newLeftSubTree;
-        rightSubTree = newRightSubTree;
-        parentTree = newParentTree;
-        
-        if (root != -1) {
-            root = mapOldIdxOntoNew[root];
-        }
-        
-        // All unused nodes have been removed
-        firstUnusedNode = -1;
-        lastNode = newNodes;
-    }
-    
-    /**
-     * Adds the given object to the collection. Runs in O(1) amortized time.
-     * 
-     * @param toAdd object to add
-     */
-    public final void add(Object toAdd) {
-    	Assert.isNotNull(toAdd);
-        // Create the new node
-        int newIdx = createNode(toAdd);
-        
-        // Insert the new node into the root tree
-        setRootNode(addUnsorted(root, newIdx));
-        
-        testInvariants();
-    }
-    
-    /**
-     * Adds all items from the given collection to this collection 
-     * 
-     * @param toAdd objects to add
-     */
-    public final void addAll(Collection toAdd) {
-    	Assert.isNotNull(toAdd);
-        Iterator iter = toAdd.iterator();
-        while (iter.hasNext()) {
-            add(iter.next());
-        }
-        
-        testInvariants();
-    }
-    
-    /**
-     * Adds all items from the given array to the collection
-     * 
-     * @param toAdd objects to add
-     */
-    public final void addAll(Object[] toAdd) {
-    	Assert.isNotNull(toAdd);
-        for (int i = 0; i < toAdd.length; i++) {
-            Object object = toAdd[i];
-            
-            add(object);
-        }
-        
-        testInvariants();
-    }
-    
-    /**
-     * Returns true iff the collection is empty
-     * 
-     * @return true iff the collection contains no elements
-     */
-    public final boolean isEmpty() {
-        boolean result = (root == -1);
-        
-        testInvariants();
-        
-        return result;
-    }
-    
-    /**
-     * Removes the given object from the collection. Has no effect if
-     * the element does not exist in this collection.
-     * 
-     * @param toRemove element to remove
-     */
-    public final void remove(Object toRemove) {
-        internalRemove(toRemove);
-        
-        pack();
-        
-        testInvariants();
-    }
-    
-    /**
-     * Internal implementation of remove. Removes the given element but does not
-     * pack the container after the removal.
-     * 
-     * @param toRemove element to remove
-     */
-    private void internalRemove(Object toRemove) {
-        int objectIndex = getObjectIndex(toRemove);
-        
-        if (objectIndex != -1) {
-            int parent = parentTree[objectIndex];
-            lazyRemoveNode(objectIndex);
-            //Edge parentEdge = getEdgeTo(objectIndex);
-            //parentEdge.setTarget(lazyRemoveNode(objectIndex));
-            recomputeAncestorTreeSizes(parent);
-        }
-        
-        //testInvariants();
-    }
-    
-    /**
-     * Removes all elements in the given array from this collection.
-     * 
-     * @param toRemove elements to remove 
-     */
-    public final void removeAll(Object[] toRemove) {
-    	Assert.isNotNull(toRemove);
-    	
-        for (int i = 0; i < toRemove.length; i++) {
-            Object object = toRemove[i];
-            
-            internalRemove(object);
-        }
-    	pack();
-    }
-    
-    /**
-     * Retains the n smallest items in the collection, removing the rest. When
-     * this method returns, the size of the collection will be n. Note that
-     * this is a no-op if n > the current size of the collection.
-     * 
-     * Temporarily package visibility until the implementation of FastProgressReporter
-     * is finished.
-     * 
-     * @param n number of items to retain
-     * @param mon progress monitor
-     * @throws InterruptedException if the progress monitor is cancelled in another thread
-     */
-    /* package */ final void retainFirst(int n, FastProgressReporter mon) throws InterruptedException {
-        int sz = size();
-        
-        if (n >= sz) {
-            return;
-        }
-        
-        removeRange(n, sz - n, mon);
-        
-        testInvariants();
-    }
-    
-    /**
-     * Retains the n smallest items in the collection, removing the rest. When
-     * this method returns, the size of the collection will be n. Note that
-     * this is a no-op if n > the current size of the collection.
-     * 
-     * @param n number of items to retain
-     */
-    public final void retainFirst(int n) {
-        try {
-            retainFirst(n, new FastProgressReporter());
-        } catch (InterruptedException e) {
-        }
-        
-        testInvariants();
-    }
-    
-    /**
-     * Removes all elements in the given range from this collection.
-     * For example, removeRange(10, 3) would remove the 11th through 13th
-     * smallest items from the collection.
-     * 
-     * @param first 0-based index of the smallest item to remove
-     * @param length number of items to remove
-     */
-    public final void removeRange(int first, int length) {
-        try {
-            removeRange(first, length, new FastProgressReporter());
-        } catch (InterruptedException e) {
-        }
-        
-        testInvariants();
-    }
-    
-    /**
-     * Removes all elements in the given range from this collection.
-     * For example, removeRange(10, 3) would remove the 11th through 13th
-     * smallest items from the collection.
-     * 
-     * Temporarily package visiblity until the implementation of FastProgressReporter is
-     * finished.
-     * 
-     * @param first 0-based index of the smallest item to remove
-     * @param length number of items to remove
-     * @param mon progress monitor
-     * @throws InterruptedException if the progress monitor is cancelled in another thread
-     */
-    /* package */ final void removeRange(int first, int length, FastProgressReporter mon) throws InterruptedException {
-    	removeRange(root, first, length, mon);
-    	
-    	pack();
-    	
-    	testInvariants();
-    }
-    
-    private final void removeRange(int node, int rangeStart, int rangeLength, FastProgressReporter mon) throws InterruptedException {
-    	if (rangeLength == 0) {
-    		return;
-    	}
-    	
-    	int size = getSubtreeSize(node);
-    	
-    	if (size <= rangeStart) {
-    		return;
-    	}
-    	
-    	// If we can chop off this entire subtree without any sorting, do so.
-    	if (rangeStart == 0 && rangeLength >= size) {
-    		removeSubTree(node);
-    		return;
-    	}
-    	try {
-	    	// Partition any unsorted nodes
-    	    node = partition(node, mon);
-	    	
-	    	int left = leftSubTree[node];
-	    	int leftSize = getSubtreeSize(left);
-	    	
-	    	int toRemoveFromLeft = Math.min(leftSize - rangeStart, rangeLength);
-	    	
-	    	// If we're removing anything from the left node
-	    	if (toRemoveFromLeft >= 0) {
-	    		removeRange(leftSubTree[node], rangeStart, toRemoveFromLeft, mon);
-	    		
-	    		// Check if we're removing from both sides
-	    		int toRemoveFromRight = rangeStart + rangeLength - leftSize - 1;
-	    		
-	    		if (toRemoveFromRight >= 0) {
-	    			// Remove from right subtree
-	    			removeRange(rightSubTree[node], 0, toRemoveFromRight, mon);
-	    			
-	    			// ... removing from both sides means we need to remove the node itself too
-	    			removeNode(node);
-	    			return;
-	    		}
-	    	} else {
-	    		// If removing from the right side only
-	    		removeRange(rightSubTree[node], rangeStart - leftSize - 1, rangeLength, mon);
-	    	}
-    	} finally {
-    	    recomputeTreeSize(node);
-    	}
-    }
-    
-    /**
-     * Prunes the given subtree (and all child nodes, sorted or unsorted).
-     * 
-     * @param subTree
-     * @since 3.1
-     */
-    private final void removeSubTree(int subTree) {
-        if (subTree == -1) {
-            return;
-        }
-        
-        // Destroy all unsorted nodes
-        for (int next = nextUnsorted[subTree]; next != -1;) {
-            int current = next;
-            next = nextUnsorted[next];
-            
-            // Destroy this unsorted node
-            destroyNode(current);
-        }
-        
-        // Destroy left subtree
-        removeSubTree(leftSubTree[subTree]);
-        
-        // Destroy right subtree
-        removeSubTree(rightSubTree[subTree]);
-        
-        replaceNode(subTree, -1);
-        // Destroy pivot node
-        destroyNode(subTree);
-    }
-    
-    /**
-     * Schedules the node for removal. If the node can be removed in constant time,
-     * it is removed immediately.
-     * 
-     * @param subTree
-     * @return the replacement node
-     * @since 3.1
-     */
-    private final int lazyRemoveNode(int subTree) {
-        int left = leftSubTree[subTree];
-        int right = rightSubTree[subTree];
-
-        // If this is a leaf node, remove it immediately
-        if (left == -1 && right == -1) {
-            int result = nextUnsorted[subTree];
-            replaceNode(subTree, result);
-            destroyNode(subTree);
-            return result;
-        }
-        
-        // Otherwise, flag it for future removal
-        Object value = contents[subTree];
-        contents[subTree] = lazyRemovalFlag;
-        treeSize[subTree]--;
-        if (objectIndices != null) {
-            objectIndices.remove(value);
-        }
-        
-        return subTree;
-    }
-    
-    /**
-     * Removes the given subtree, replacing it with one of its children.
-     * Returns the new root of the subtree
-     * 
-     * @param subTree
-     * @return the index of the new root
-     * @since 3.1
-     */
-    private final int removeNode(int subTree) {
-        int left = leftSubTree[subTree];
-        int right = rightSubTree[subTree];
-        
-        if (left == -1 || right == -1) {
-            int result = -1;
-            
-            if (left == -1 && right == -1) {
-                // If this is a leaf node, replace it with its first unsorted child
-                result = nextUnsorted[subTree];
-            } else {
-                // Either the left or right child is missing -- replace with the remaining child  
-                if (left == -1) {
-                    result = right;
-                } else {
-                    result = left;
-                }
-
-                try {
-                    result = partition(result, new FastProgressReporter());
-                } catch (InterruptedException e) {
-                    
-                }
-                if (result == -1) {
-                    result = nextUnsorted[subTree];
-                } else {
-	                int unsorted = nextUnsorted[subTree];
-	                nextUnsorted[result] = unsorted;
-	                int additionalNodes = 0;
-	                if (unsorted != -1) {
-	                    parentTree[unsorted] = result;
-	                    additionalNodes = treeSize[unsorted];
-	                }
-	                treeSize[result] += additionalNodes;
-                }
-            }
-            
-            replaceNode(subTree, result);
-            destroyNode(subTree);
-            return result;
-        }
-                
-        // Find the edges that lead to the next-smallest and
-        // next-largest nodes
-        Edge nextSmallest = new Edge(subTree, DIR_LEFT);
-        while (!nextSmallest.isNull()) {
-            nextSmallest.advance(DIR_RIGHT);
-        }
-        
-        Edge nextLargest = new Edge(subTree, DIR_RIGHT);
-        while (!nextLargest.isNull()) {
-            nextLargest.advance(DIR_LEFT);
-        }
-        
-        // Index of the replacement node
-        int replacementNode = -1;
-        
-        // Count of number of nodes moved to the right
-        
-        int leftSize = getSubtreeSize(left);
-        int rightSize = getSubtreeSize(right);
-        
-        // Swap with a child from the larger subtree
-        if (leftSize > rightSize) {
-            replacementNode = nextSmallest.getStart();
-
-            // Move any unsorted nodes that are larger than the replacement node into
-            // the left subtree of the next-largest node
-            Edge unsorted = new Edge(replacementNode, DIR_UNSORTED);
-            while (!unsorted.isNull()) {
-                int target = unsorted.getTarget();
-                
-                if (!isLess(target, replacementNode)) {
-                    unsorted.setTarget(nextUnsorted[target]);
-                    nextLargest.setTarget(addUnsorted(nextLargest.getTarget(), target));
-                } else {
-                    unsorted.advance(DIR_UNSORTED);
-                }
-            }
-            
-            forceRecomputeTreeSize(unsorted.getStart(), replacementNode);
-            forceRecomputeTreeSize(nextLargest.getStart(), subTree);
-        } else {
-            replacementNode = nextLargest.getStart();
-
-            // Move any unsorted nodes that are smaller than the replacement node into
-            // the right subtree of the next-smallest node
-            Edge unsorted = new Edge(replacementNode, DIR_UNSORTED);
-            while (!unsorted.isNull()) {
-                int target = unsorted.getTarget();
-                
-                if (isLess(target, replacementNode)) {
-                    unsorted.setTarget(nextUnsorted[target]);
-                    nextSmallest.setTarget(addUnsorted(nextSmallest.getTarget(), target));
-                } else {
-                    unsorted.advance(DIR_UNSORTED);
-                }
-            }
-            
-            forceRecomputeTreeSize(unsorted.getStart(), replacementNode);
-            forceRecomputeTreeSize(nextSmallest.getStart(), subTree);
-        }
-        
-        // Now all the affected treeSize[...] elements should be updated to reflect the
-        // unsorted nodes that moved. Swap nodes. 
-        Object replacementContent = contents[replacementNode];
-        contents[replacementNode] = contents[subTree];
-        contents[subTree] = replacementContent;
-        
-        if (objectIndices != null) {
-            objectIndices.put(replacementContent, subTree);
-            // Note: currently we don't bother updating the index of the replacement
-            // node since we're going to remove it immediately afterwards and there's
-            // no good reason to search for the index in a method that was given the
-            // index as a parameter...
-            
-            // objectIndices.put(contents[replacementNode], replacementNode)
-        }
-        
-        int replacementParent = parentTree[replacementNode]; 
-        
-        replaceNode(replacementNode, removeNode(replacementNode));
-        //Edge parentEdge = getEdgeTo(replacementNode);
-        //parentEdge.setTarget(removeNode(replacementNode));
-
-        forceRecomputeTreeSize(replacementParent, subTree);
-        recomputeTreeSize(subTree);
-        
-        //testInvariants();
-        
-        return subTree;
-    }
-   
-    /**
-     * Removes all elements from the collection
-     */
-    public final void clear() {
-        lastNode = 0;
-        setArraySize(MIN_CAPACITY);
-        root = -1;
-        firstUnusedNode = -1;
-        objectIndices = null;
-        
-        testInvariants();
-    }
-    
-    /**
-     * Returns the comparator that is determining the sort order for this collection
-     * 
-     * @return comparator for this collection
-     */
-    public Comparator getComparator() {
-        return comparator;
-    }
-    
-    /**
-     * Fills in an array of size n with the n smallest elements from the collection.
-     * Can compute the result in sorted or unsorted order. 
-     * 
-     * Currently package visible until the implementation of FastProgressReporter is finished.
-     * 
-     * @param result array to be filled
-     * @param sorted if true, the result array will be sorted. If false, the result array
-     * may be unsorted. This does not affect which elements appear in the result, only their 
-     * order.
-     * @param mon monitor used to report progress and check for cancellation
-     * @return the number of items inserted into the result array. This will be equal to the minimum
-     * of result.length and container.size()
-     * @throws InterruptedException if the progress monitor is cancelled
-     */
-    /* package */ final int getFirst(Object[] result, boolean sorted, FastProgressReporter mon) throws InterruptedException {
-        int returnValue = getRange(result, 0, sorted, mon);
-        
-        testInvariants();
-        
-        return returnValue;
-    }
-    
-    /**
-     * Fills in an array of size n with the n smallest elements from the collection.
-     * Can compute the result in sorted or unsorted order. 
-     * 
-     * @param result array to be filled
-     * @param sorted if true, the result array will be sorted. If false, the result array
-     * may be unsorted. This does not affect which elements appear in the result. It only
-     * affects their order. Computing an unsorted result is asymptotically faster.
-     * @return the number of items inserted into the result array. This will be equal to the minimum
-     * of result.length and container.size()
-     */
-    public final int getFirst(Object[] result, boolean sorted) {
-        int returnValue = 0;
-        
-        try {
-            returnValue = getFirst(result, sorted, new FastProgressReporter());
-        } catch (InterruptedException e) {
-        }
-        
-        testInvariants();
-        
-        return returnValue;
-    }
-    
-    /**
-     * Given a position defined by k and an array of size n, this fills in the array with
-     * the kth smallest element through to the (k+n)th smallest element. For example, 
-     * getRange(myArray, 10, false) would fill in myArray starting with the 10th smallest item
-     * in the collection. The result can be computed in sorted or unsorted order. Computing the
-     * result in unsorted order is more efficient.
-     * <p>
-     * Temporarily set to package visibility until the implementation of FastProgressReporter
-     * is finished.
-     * </p>
-     * 
-     * @param result array to be filled in
-     * @param rangeStart index of the smallest element to appear in the result
-     * @param sorted true iff the result array should be sorted
-     * @param mon progress monitor used to cancel the operation
-     * @throws InterruptedException if the progress monitor was cancelled in another thread
-     */
-    /* package */ final int getRange(Object[] result, int rangeStart, boolean sorted, FastProgressReporter mon) throws InterruptedException {
-        return getRange(result, 0, rangeStart, root, sorted, mon);
-    }
-    
-    /**
-     * Computes the n through n+k items in this collection.
-     * Computing the result in unsorted order is more efficient. Sorting the result will
-     * not change which elements actually show up in the result. That is, even if the result is
-     * unsorted, it will still contain the same elements as would have been at that range in
-     * a fully sorted collection. 
-     * 
-     * @param result array containing the result
-     * @param rangeStart index of the first element to be inserted into the result array
-     * @param sorted true iff the result will be computed in sorted order
-     * @return the number of items actually inserted into the result array (will be the minimum
-     * of result.length and this.size())
-     */
-    public final int getRange(Object[] result, int rangeStart, boolean sorted) {
-        int returnValue = 0;
-        
-        try {
-            returnValue = getRange(result, rangeStart, sorted, new FastProgressReporter());
-        } catch (InterruptedException e) {
-        }
-        
-        testInvariants();
-        
-        return returnValue;
-    }
-    
-    /**
-     * Returns the item at the given index. Indexes are based on sorted order.
-     * 
-     * @param index index to test
-     * @return the item at the given index
-     */
-    public final Object getItem(int index) {
-        Object[] result = new Object[1];
-        try {
-            getRange(result, index, false, new FastProgressReporter());
-        } catch (InterruptedException e) {
-            // shouldn't happen
-        }
-        Object returnValue = result[0];
-        
-        testInvariants();
-        
-        return returnValue;
-    }
-    
-    /**
-     * Returns the contents of this collection as a sorted or unsorted
-     * array. Computing an unsorted array is more efficient.
-     * 
-     * @param sorted if true, the result will be in sorted order. If false,
-     * the result may be in unsorted order.
-     * @return the contents of this collection as an array.
-     */
-    public final Object[] getItems(boolean sorted) {
-        Object[] result = new Object[size()];
-        
-        getRange(result, 0, sorted);
-        
-        return result;
-    }
-    
-    private final int getRange(Object[] result, int resultIdx, int rangeStart, int node, boolean sorted, FastProgressReporter mon) throws InterruptedException {
-        if (node == -1) {
-            return 0;
-        }
-
-        int availableSpace = result.length - resultIdx;
-        
-        // If we're asking for all children of the current node, simply call getChildren
-        if (rangeStart == 0) {
-            if (treeSize[node] <= availableSpace) {
-                return getChildren(result, resultIdx, node, sorted, mon);
-            }
-        }
-        
-        node = partition(node, mon);
-        if (node == -1) {
-            return 0;
-        }
-        
-        int inserted = 0;
-        
-        int numberLessThanNode = getSubtreeSize(leftSubTree[node]);
-                
-        if (rangeStart < numberLessThanNode) {
-            if (inserted < availableSpace) {
-                inserted += getRange(result, resultIdx, rangeStart, leftSubTree[node], sorted, mon);
-            }
-        }
-        
-        if (rangeStart <= numberLessThanNode) {
-	        if (inserted < availableSpace) {
-	            result[resultIdx + inserted] = contents[node];
-	            inserted++;
-	        }	        
-        } 
-        
-        if (inserted < availableSpace) {
-            inserted += getRange(result, resultIdx + inserted,
-                Math.max(rangeStart - numberLessThanNode - 1, 0), rightSubTree[node], sorted, mon);
-        }
-        
-        return inserted;
-    }
-    
-    /**
-     * Fills in the available space in the given array with all children of the given node.
-     * 
-     * @param result 
-     * @param resultIdx index in the result array where we will begin filling in children
-     * @param node
-     * @return the number of children added to the array
-     * @since 3.1
-     */
-    private final int getChildren(Object[] result, int resultIdx, int node, boolean sorted, FastProgressReporter mon) throws InterruptedException {
-        if (node == -1) {
-            return 0;
-        }
-        
-        int tempIdx = resultIdx;
-        
-        if (sorted) {
-            node = partition(node, mon);
-            if (node == -1) {
-                return 0;
-            }
-        }
-        
-        // Add child nodes smaller than this one
-        if (tempIdx < result.length) {
-            tempIdx += getChildren(result, tempIdx, leftSubTree[node], sorted, mon);
-        }
-        
-        // Add the pivot
-        if (tempIdx < result.length) {
-            Object value = contents[node];
-            if (value != lazyRemovalFlag) {
-                result[tempIdx++] = value;
-            }
-        }
-        
-        // Add child nodes larger than this one
-        if (tempIdx < result.length) {
-            tempIdx += getChildren(result, tempIdx, rightSubTree[node], sorted, mon);
-        }
-        
-        // Add unsorted children (should be empty if the sorted flag was true)
-        for (int unsortedNode = nextUnsorted[node]; unsortedNode != -1 && tempIdx < result.length; 
-        	unsortedNode = nextUnsorted[unsortedNode]) {
-            
-            result[tempIdx++] = contents[unsortedNode];
-        }
-        
-        return tempIdx - resultIdx;
-    }
-
-    /**
-     * Returns true iff this collection contains the given item
-     * 
-     * @param item item to test
-     * @return true iff this collection contains the given item
-     */
-    public boolean contains(Object item) {
-    	Assert.isNotNull(item);
-        boolean returnValue = (getObjectIndex(item) != -1);
-        
-        testInvariants();
-        
-        return returnValue;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/SetModel.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/SetModel.java
deleted file mode 100644
index 26bb3ce..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/SetModel.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.viewers.deferred;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import org.eclipse.core.runtime.Assert;
-
-
-/**
- * Trivial implementation of an <code>IConcurrentModel</code>. Implements 
- * an unordered set of elements that fires off change notifications whenever
- * elements are added or removed from the set. All notifications are sent
- * synchronously.
- * 
- * @since 3.1
- */
-public class SetModel extends AbstractConcurrentModel {
-    
-    private HashSet data = new HashSet();
-    
-    /**
-     * Return the contents of the model.
-     * @return the array of elements
-     * 
-     */
-    public Object[] getElements() {
-        return data.toArray();
-    }
-
-    /**
-     * Sets the contents to the given array of elements
-     * 
-     * @param newContents new contents of this set
-     */
-    public void set(Object[] newContents) {
-    	Assert.isNotNull(newContents);
-    	data.clear();
-        for (int i = 0; i < newContents.length; i++) {
-            Object object = newContents[i];
-            
-            data.add(object);
-        }
-    	
-    	IConcurrentModelListener[] listeners = getListeners();
-    	for (int i = 0; i < listeners.length; i++) {
-			IConcurrentModelListener listener = listeners[i];
-			
-			listener.setContents(newContents);
-		}
-    }
-
-    /**
-     * Empties the set
-     */
-    public void clear() {
-        Object[] removed = data.toArray();
-        data.clear();
-        fireRemove(removed);
-    }
-    
-    /**
-     * Adds the given elements to the set
-     * 
-     * @param toAdd elements to add
-     */
-    public void addAll(Object[] toAdd) {
-    	Assert.isNotNull(toAdd);
-        for (int i = 0; i < toAdd.length; i++) {
-            Object object = toAdd[i];
-            
-            data.add(object);
-        }
-        
-        fireAdd(toAdd);
-    }
-    
-    /**
-     * Adds the given elements to the set. Duplicate elements are ignored.
-     * 
-     * @param toAdd elements to add
-     */
-    public void addAll(Collection toAdd) {
-    	Assert.isNotNull(toAdd);
-        addAll(toAdd.toArray());
-    }
-    
-    /**
-     * Fires a change notification for all elements in the given array
-     * 
-     * @param changed array of elements that have changed
-     */
-    public void changeAll(Object[] changed) {
-    	Assert.isNotNull(changed);
-        fireUpdate(changed);
-    }
-    
-    /**
-     * Removes all of the given elements from the set.
-     * 
-     * @param toRemove elements to remove
-     */
-    public void removeAll(Object[] toRemove) {
-    	Assert.isNotNull(toRemove);
-        for (int i = 0; i < toRemove.length; i++) {
-            Object object = toRemove[i];
-            
-            data.remove(object);
-        }        
-        
-        fireRemove(toRemove);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.deferred.IConcurrentModel#requestUpdate(org.eclipse.jface.viewers.deferred.IConcurrentModelListener)
-     */
-    public void requestUpdate(IConcurrentModelListener listener) {
-    	Assert.isNotNull(listener);
-        listener.setContents(getElements());
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/package.html
deleted file mode 100644
index 10698c4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/deferred/package.html
+++ /dev/null
@@ -1,17 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides a framework for viewers that handle deferred contents. 
-<h2>
-Package Specification</h2>
-<p>The deferred viewers are viewers that can handle concurrent updates from a 
-  variety of Threads.<br>
-  &nbsp; 
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/package.html
deleted file mode 100644
index b2608b4..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/package.html
+++ /dev/null
@@ -1,70 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides a framework for viewers, which are model-based
-content adapters for SWT widgets.
-<h2>
-Package Specification</h2>
-A viewer is a model-based adapter on an SWT widget.&nbsp; Each viewer has
-four parts:
-<blockquote>
-<li>
-an <b>input</b> - the object that serves as the viewer's model</li>
-
-<li>
-a <b>widget</b> - the SWT control through which the viewer's model is displayed</li>
-
-<li>
-a <b>content provider</b> - mediates between the model and viewer</li>
-
-<li>
-a <b>label provider</b> - maps model objects to displayable labels containing
-text and/or an image</li>
-</blockquote>
-This package contains the viewer framework. The viewer framework is an
-independent JFace module. Using it requires a knowledge of SWT, but does
-not require familiarity with any of the other JFace modules. The framework
-consists of abstract base classes for viewers (<tt>Viewer</tt>, <tt>StructuredViewer</tt>,
-<tt>AbstractTreeViewer</tt>) together with concrete viewer classes (<tt>ListViewer</tt>,
-<tt>TreeViewer</tt>,
-<tt>TableViewer</tt>,
-<tt>TableTreeViewer</tt>, <tt>CheckboxTreeViewer</tt>,
-and <tt>CheckboxTableViewer</tt>),
-and various lesser support classes. The concrete structured viewer classes
-are ready-to-use and have built-in support for drag-and-drop, filtering
-(<tt>IViewerFilter</tt> and <tt>ViewerFilter</tt>), and sorting (<tt>IViewerSorter</tt>
-and <tt>ViewerSorter</tt>); these classes may also be subclassed further
-if required.
-<p>In general terms, creating a viewer involves the following steps:
-<ul>
-<li>
-instantiating a viewer on some pre-existing SWT widget,</li>
-
-<li>
-setting the viewer's content provider (an object implementing <tt>IContentProvider</tt>),</li>
-
-<li>
-setting the viewer's label provider (an object implementing
-<tt>ILabelProvider</tt>),</li>
-
-<li>
-and, finally, setting the viewer's input.</li>
-</ul>
-Once a viewer's input is set, the viewer becomes active. As the model changes,
-it is the content provider's responsibility to respond to changes to the
-model by telling the viewer what to change (done by calling add and remove
-methods on the viewer). An existing viewer may be retargeted by giving
-it a different object as input; the viewer is responsible for informing
-the content provider of these kinds of wholesale changes (<tt>IContentProvider.inputChanged</tt>).
-Also, each viewer registers with its label provider for notification of
-changes that would affect what the viewer displays (see <tt>ILabelProviderListener.stateChanged</tt>).
-<p>Note: None of the classes in this package maintain global state.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/ApplicationWindow.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/ApplicationWindow.java
deleted file mode 100644
index 3e0a7b6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/ApplicationWindow.java
+++ /dev/null
@@ -1,856 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Roman Dawydkin - bug 55116
- *******************************************************************************/
-
-package org.eclipse.jface.window;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.CoolBarManager;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.StatusLineManager;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.internal.provisional.action.IToolBarManager2;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.operation.ModalContext;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * An application window is a high-level "main window", with built-in
- * support for an optional menu bar with standard menus, an optional toolbar,
- * and an optional status line.
- * <p>
- * Creating an application window involves the following steps:
- * <ul>
- *   <li>creating an instance of <code>ApplicationWindow</code>
- *   </li>
- *   <li>assigning the window to a window manager (optional)
- *   </li>
- *   <li>opening the window by calling <code>open</code>
- *   </li>
- * </ul>
- * Only on the last step, when the window is told to open, are
- * the window's shell and widget tree created. When the window is
- * closed, the shell and widget tree are disposed of and are no longer
- * referenced, and the window is automatically removed from its window
- * manager. Like all windows, an application window may be reopened.
- * </p>
- * <p>
- * An application window is also a suitable context in which to perform 
- * long-running operations (that is, it implements <code>IRunnableContext</code>).
- * </p>
- */
-public class ApplicationWindow extends Window implements IRunnableContext {
-
-    /**
-     * Menu bar manager, or <code>null</code> if none (default).
-     *
-     * @see #addMenuBar
-     */
-    private MenuManager menuBarManager = null;
-
-    /**
-     * Tool bar manager, or <code>null</code> if none (default).
-     *
-     * @see #addToolBar
-     */
-    private IToolBarManager toolBarManager = null;
-
-    /**
-     * Status line manager, or <code>null</code> if none (default).
-     *
-     * @see #addStatusLine
-     */
-    private StatusLineManager statusLineManager = null;
-
-    /**
-     * Cool bar manager, or <code>null</code> if none (default).
-     * 
-     * @see #addCoolBar
-     * @since 3.0
-     */
-    private ICoolBarManager coolBarManager = null;
-
-    /**
-     * The seperator between the menu bar and the rest of the window.
-     */
-    protected Label seperator1;
-
-    /**
-     * A flag indicating that an operation is running.
-     */
-    private boolean operationInProgress = false;
-
-    /**
-     * Internal application window layout class.
-     * This vertical layout supports a tool bar area (fixed size),
-     * a separator line, the content area (variable size), and a 
-     * status line (fixed size).
-     */
-    /*package*/class ApplicationWindowLayout extends Layout {
-
-        static final int VGAP = 2;
-
-        static final int BAR_SIZE = 23;
-
-        protected Point computeSize(Composite composite, int wHint, int hHint,
-                boolean flushCache) {
-            if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-
-            Point result = new Point(0, 0);
-            Control[] ws = composite.getChildren();
-            for (int i = 0; i < ws.length; i++) {
-                Control w = ws[i];
-
-                boolean hide = false;
-                if (getToolBarControl() == w) {
-                    if (!toolBarChildrenExist()) {
-                        hide = true;
-                        result.y += BAR_SIZE; // REVISIT
-                    }
-                } else if (getCoolBarControl() == w) {
-                    if (!coolBarChildrenExist()) {
-                        hide = true;
-                        result.y += BAR_SIZE;
-                    }
-                } else if (statusLineManager != null
-                        && statusLineManager.getControl() == w) {
-                } else if (i > 0) { /* we assume this window is contents */
-                    hide = false;
-                }
-
-                if (!hide) {
-                    Point e = w.computeSize(wHint, hHint, flushCache);
-                    result.x = Math.max(result.x, e.x);
-                    result.y += e.y + VGAP;
-                }
-            }
-
-            if (wHint != SWT.DEFAULT) {
-				result.x = wHint;
-			}
-            if (hHint != SWT.DEFAULT) {
-				result.y = hHint;
-			}
-            return result;
-        }
-
-        protected void layout(Composite composite, boolean flushCache) {
-            Rectangle clientArea = composite.getClientArea();
-
-            Control[] ws = composite.getChildren();
-            
-            // Lay out the separator, the tool bar control, the cool bar control, the status line, and the page composite.
-            // The following code assumes that the page composite is the last child, and that there are no unexpected other controls.
-
-            for (int i = 0; i < ws.length; i++) {
-                Control w = ws[i];
-
-                if (w == seperator1) { // Separator
-                    Point e = w.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                            flushCache);
-                    w.setBounds(clientArea.x, clientArea.y, clientArea.width,
-                            e.y);
-                    clientArea.y += e.y;
-                    clientArea.height -= e.y;
-                } else if (getToolBarControl() == w) {
-                    if (toolBarChildrenExist()) {
-                        Point e = w.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                                flushCache);
-                        w.setBounds(clientArea.x, clientArea.y,
-                                clientArea.width, e.y);
-                        clientArea.y += e.y + VGAP;
-                        clientArea.height -= e.y + VGAP;
-                    }
-                } else if (getCoolBarControl() == w) {
-                    if (coolBarChildrenExist()) {
-                        Point e = w.computeSize(clientArea.width, SWT.DEFAULT,
-                                flushCache);
-                        w.setBounds(clientArea.x, clientArea.y,
-                                clientArea.width, e.y);
-                        clientArea.y += e.y + VGAP;
-                        clientArea.height -= e.y + VGAP;
-                    }
-                } else if (statusLineManager != null
-                        && statusLineManager.getControl() == w) {
-                    Point e = w.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-                            flushCache);
-                    w.setBounds(clientArea.x, clientArea.y + clientArea.height
-                            - e.y, clientArea.width, e.y);
-                    clientArea.height -= e.y + VGAP;
-                } else {
-                    w.setBounds(clientArea.x, clientArea.y + VGAP,
-                            clientArea.width, clientArea.height - VGAP);
-                }
-            }
-        }
-    }
-
-    /**
-     * Return the top seperator.
-     * @return Label
-     */
-    protected Label getSeperator1() {
-        return seperator1;
-    }
-
-    /**
-     * Create an application window instance, whose shell will be created under the
-     * given parent shell.
-     * Note that the window will have no visual representation (no widgets)
-     * until it is told to open. By default, <code>open</code> does not block.
-     *
-     * @param parentShell the parent shell, or <code>null</code> to create a top-level shell
-     */
-    public ApplicationWindow(Shell parentShell) {
-        super(parentShell);
-    }
-
-    /**
-     * Configures this window to have a menu bar.
-     * Does nothing if it already has one.
-     * This method must be called before this window's shell is created.
-     */
-    protected void addMenuBar() {
-        if ((getShell() == null) && (menuBarManager == null)) {
-            menuBarManager = createMenuManager();
-        }
-    }
-
-    /**
-     * Configures this window to have a status line.
-     * Does nothing if it already has one.
-     * This method must be called before this window's shell is created.
-     */
-    protected void addStatusLine() {
-        if ((getShell() == null) && (statusLineManager == null)) {
-            statusLineManager = createStatusLineManager();
-        }
-    }
-
-    /**
-     * Configures this window to have a tool bar.
-     * Does nothing if it already has one.
-     * This method must be called before this window's shell is created.
-     * @param style swt style bits used to create the Toolbar
-     * @see ToolBarManager#ToolBarManager(int)
-     * @see ToolBar for style bits
-     */
-    protected void addToolBar(int style) {
-        if ((getShell() == null) && (toolBarManager == null)
-                && (coolBarManager == null)) {
-            toolBarManager = createToolBarManager2(style);
-        }
-    }
-
-    /**
-     * Configures this window to have a cool bar.
-     * Does nothing if it already has one.
-     * This method must be called before this window's shell is created.
-     * 
-     * @param style the cool bar style
-     * @since 3.0
-     */
-    protected void addCoolBar(int style) {
-        if ((getShell() == null) && (toolBarManager == null)
-                && (coolBarManager == null)) {
-            coolBarManager = createCoolBarManager2(style);
-        }	
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Window.
-     */
-    protected boolean canHandleShellCloseEvent() {
-        return super.canHandleShellCloseEvent() && !operationInProgress;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Window.
-     */
-    public boolean close() {
-        if (operationInProgress) {
-			return false;
-		}
-
-        if (super.close()) {
-            if (menuBarManager != null) {
-                menuBarManager.dispose();
-                menuBarManager = null;
-            }
-            if (toolBarManager != null) {
-            	if (toolBarManager instanceof IToolBarManager2) {
-					((IToolBarManager2) toolBarManager).dispose();
-				} else if (toolBarManager instanceof ToolBarManager) {
-					((ToolBarManager) toolBarManager).dispose();
-				}
-                toolBarManager = null;
-            }
-            if (statusLineManager != null) {
-                statusLineManager.dispose();
-                statusLineManager = null;
-            }
-            if (coolBarManager != null) {
-            	if (coolBarManager instanceof ICoolBarManager2) {
-					((ICoolBarManager2) coolBarManager).dispose();
-				} else if (coolBarManager instanceof CoolBarManager) {
-					((CoolBarManager) coolBarManager).dispose();
-				}
-                coolBarManager = null;
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Extends the super implementation by creating the trim widgets using <code>createTrimWidgets</code>. 
-     */
-    protected void configureShell(Shell shell) {
-
-        super.configureShell(shell);
-
-        createTrimWidgets(shell);
-    }
-
-    /**
-     * Creates the trim widgets around the content area.
-     * 
-     * @param shell the shell
-     * @since 3.0
-     */
-    protected void createTrimWidgets(Shell shell) {
-        if (menuBarManager != null) {
-            menuBarManager.updateAll(true);
-            shell.setMenuBar(menuBarManager.createMenuBar((Decorations) shell));
-        }
-
-        if (showTopSeperator()) {
-			seperator1 = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
-		}
-
-        // will create either a cool bar or a tool bar
-        createToolBarControl(shell);
-        createCoolBarControl(shell);
-        createStatusLine(shell);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#getLayout()
-     */
-    protected Layout getLayout() {
-        return new ApplicationWindowLayout();
-    }
-
-    /**
-     * Returns whether to show a top separator line between the menu bar
-     * and the rest of the window contents.  On some platforms such as the Mac,
-     * the menu is separated from the main window already, so a separator line
-     * is not desired. 
-     * 
-     * @return <code>true</code> to show the top separator, <code>false</code>
-     *   to not show it
-     * @since 3.0
-     */
-    protected boolean showTopSeperator() {
-        return !"carbon".equals(SWT.getPlatform()); //$NON-NLS-1$
-    }
-
-    /**
-     * Create the status line if required.
-     * @param shell
-     */
-    protected void createStatusLine(Shell shell) {
-        if (statusLineManager != null) {
-            statusLineManager.createControl(shell, SWT.NONE);
-        }
-    }
-
-    /**
-     * Returns a new menu manager for the window.
-     * <p>
-     * Subclasses may override this method to customize the menu manager.
-     * </p>
-     * @return a menu manager
-     */
-    protected MenuManager createMenuManager() {
-        return new MenuManager();
-    }
-
-    /**
-     * Returns a new status line manager for the window.
-     * <p>
-     * Subclasses may override this method to customize the status line manager.
-     * </p>
-     * @return a status line manager
-     */
-    protected StatusLineManager createStatusLineManager() {
-        return new StatusLineManager();
-    }
-
-    /**
-     * Returns a new tool bar manager for the window.
-     * <p>
-     * Subclasses may override this method to customize the tool bar manager.
-     * </p>
-     * @param style swt style bits used to create the Toolbar
-     * 
-     * @return a tool bar manager
-     * @see ToolBarManager#ToolBarManager(int)
-     * @see ToolBar for style bits
-     */
-    protected ToolBarManager createToolBarManager(int style) {
-        return new ToolBarManager(style);
-    }
-    
-    /**
-     * Returns a new tool bar manager for the window. 
-     * <p> 
-     * By default this method calls <code>createToolBarManager</code>.  Subclasses
-     * may override this method to provide an alternative implementation for the
-     * tool bar manager.
-     * </p>
-     * 
-	 * @param style swt style bits used to create the Toolbar
-     *  
-     * @return a tool bar manager
-     * @since 3.2
-     * @see #createToolBarManager(int)
-     */
-    protected IToolBarManager createToolBarManager2(int style) {
-        return createToolBarManager(style);
-    }
-
-    /**
-     * Returns a new cool bar manager for the window.
-     * <p>
-     * Subclasses may override this method to customize the cool bar manager.
-     * </p>
-     * 
-     * @param style swt style bits used to create the Coolbar
-     * 
-     * @return a cool bar manager
-     * @since 3.0
-     * @see CoolBarManager#CoolBarManager(int)
-     * @see CoolBar for style bits
-     */
-    protected CoolBarManager createCoolBarManager(int style) {
-        return new CoolBarManager(style);
-    }
-    
-    /**
-     * Returns a new cool bar manager for the window.
-     * <p>
-     * By default this method calls <code>createCoolBarManager</code>.  Subclasses
-     * may override this method to provide an alternative implementation for the
-     * cool bar manager.
-     * </p>
-     * 
-	 * @param style swt style bits used to create the Coolbar
-     * 
-     * @return a cool bar manager
-     * @since 3.2
-     * @see #createCoolBarManager(int)
-     */
-    protected ICoolBarManager createCoolBarManager2(int style) {
-        return createCoolBarManager(style);
-    }
-
-    /**
-     * Creates the control for the tool bar manager.
-     * <p>
-     * Subclasses may override this method to customize the tool bar manager.
-     * </p>
-     * @param parent the parent used for the control
-     * @return a Control
-     */
-    protected Control createToolBarControl(Composite parent) {
-        if (toolBarManager != null) {
-        	if (toolBarManager instanceof IToolBarManager2) {
-				return ((IToolBarManager2) toolBarManager).createControl2(parent);
-			}
-        	if (toolBarManager instanceof ToolBarManager) {
-				return ((ToolBarManager) toolBarManager).createControl(parent);
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Creates the control for the cool bar manager.
-     * <p>
-     * Subclasses may override this method to customize the cool bar manager.
-     * </p>
-     * @param composite the parent used for the control
-     * 
-     * @return an instance of <code>CoolBar</code>
-     * @since 3.0
-     */
-    protected Control createCoolBarControl(Composite composite) {
-        if (coolBarManager != null) {
-        	if (coolBarManager instanceof ICoolBarManager2) {
-				return ((ICoolBarManager2) coolBarManager).createControl2(composite);
-			}
-        	if (coolBarManager instanceof CoolBarManager) {
-				return ((CoolBarManager) coolBarManager).createControl(composite);
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Returns the default font used for this window.
-     * <p>
-     * The default implementation of this framework method
-     * obtains the symbolic name of the font from the
-     * <code>getSymbolicFontName</code> framework method
-     * and retrieves this font from JFace's font
-     * registry using <code>JFaceResources.getFont</code>.
-     * Subclasses may override to use a different registry,
-     * etc.
-     * </p>
-     *
-     * @return the default font, or <code>null</code> if none
-     */
-    protected Font getFont() {
-        return JFaceResources.getFont(getSymbolicFontName());
-    }
-
-    /**
-     * Returns the menu bar manager for this window (if it has one).
-     *
-     * @return the menu bar manager, or <code>null</code> if
-     *   this window does not have a menu bar
-     * @see #addMenuBar()
-     */
-    public MenuManager getMenuBarManager() {
-        return menuBarManager;
-    }
-
-    /**
-     * Returns the status line manager for this window (if it has one).
-     *
-     * @return the status line manager, or <code>null</code> if
-     *   this window does not have a status line
-     * @see #addStatusLine
-     */
-    protected StatusLineManager getStatusLineManager() {
-        return statusLineManager;
-    }
-
-    /**
-     * Returns the symbolic font name of the font to be
-     * used to display text in this window.
-     * This is not recommended and is included for backwards
-     * compatability.
-     * It is recommended to use the default font provided by
-     * SWT (that is, do not set the font).
-     * 
-     * @return the symbolic font name
-     */
-    public String getSymbolicFontName() {
-        return JFaceResources.TEXT_FONT;
-    }
-
-    /**
-     * Returns the tool bar manager for this window (if it has one).
-     *
-     * @return the tool bar manager, or <code>null</code> if
-     *   this window does not have a tool bar
-     * @see #addToolBar(int)
-     */
-    public ToolBarManager getToolBarManager() {
-    	if (toolBarManager instanceof ToolBarManager) {
-			return (ToolBarManager)toolBarManager;
-		}
-        return null;
-    }
-    
-    /**
-     * Returns the tool bar manager for this window (if it has one).
-     * 
-	 * @return the tool bar manager, or <code>null</code> if
-     *   this window does not have a tool bar
-     * @see #addToolBar(int)
-	 * @since 3.2
-     */
-    public IToolBarManager getToolBarManager2() {
-        return toolBarManager;
-    }
-
-    /**
-     * Returns the cool bar manager for this window.
-     *
-     * @return the cool bar manager, or <code>null</code> if
-     *   this window does not have a cool bar
-     * @see #addCoolBar(int)
-     * @since 3.0
-     */
-    public CoolBarManager getCoolBarManager() {
-    	if (coolBarManager instanceof CoolBarManager) {
-			return (CoolBarManager)coolBarManager;
-		}
-        return null;
-    }
-    
-    /**
-     * Returns the cool bar manager for this window.
-     * 
-	 * @return the cool bar manager, or <code>null</code> if
-     *   this window does not have a cool bar
-     * @see #addCoolBar(int)
-     * @since 3.2
-     */
-    public ICoolBarManager getCoolBarManager2() {
-        return coolBarManager;
-    }
-
-    /**
-     * Returns the control for the window's toolbar.
-     * <p>
-     * Subclasses may override this method to customize the tool bar manager.
-     * </p>
-     * @return a Control
-     */
-    protected Control getToolBarControl() {
-        if (toolBarManager != null) {
-        	if (toolBarManager instanceof IToolBarManager2) {
-				return ((IToolBarManager2) toolBarManager).getControl2();
-			}
-        	if (toolBarManager instanceof ToolBarManager) {
-				return ((ToolBarManager) toolBarManager).getControl();
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Returns the control for the window's cool bar.
-     * <p>
-     * Subclasses may override this method to customize the cool bar manager.
-     * </p>
-     * 
-     * @return an instance of <code>CoolBar</code>
-     * @since 3.0
-     */
-    protected Control getCoolBarControl() {
-        if (coolBarManager != null) {
-        	if (coolBarManager instanceof ICoolBarManager2) {
-				return ((ICoolBarManager2) coolBarManager).getControl2();
-			}
-        	if (coolBarManager instanceof CoolBarManager) {
-				return ((CoolBarManager) coolBarManager).getControl();
-			}
-        }
-        return null;
-    }
-
-    /**
-     * This implementation of IRunnableContext#run(boolean, boolean,
-     * IRunnableWithProgress) blocks until the runnable has been run,
-     * regardless of the value of <code>fork</code>.
-     * It is recommended that <code>fork</code> is set to
-     * true in most cases. If <code>fork</code> is set to <code>false</code>,
-     * the runnable will run in the UI thread and it is the runnable's
-     * responsibility to call <code>Display.readAndDispatch()</code>
-     * to ensure UI responsiveness.
-     */
-    public void run(final boolean fork, boolean cancelable,
-            final IRunnableWithProgress runnable)
-            throws InvocationTargetException, InterruptedException {
-        try {
-            operationInProgress = true;
-            final StatusLineManager mgr = getStatusLineManager();
-            if (mgr == null) {
-                runnable.run(new NullProgressMonitor());
-                return;
-            }
-            boolean cancelWasEnabled = mgr.isCancelEnabled();
-
-            final Control contents = getContents();
-            final Display display = contents.getDisplay();
-            Shell shell = getShell();
-            boolean contentsWasEnabled = contents.getEnabled();
-            MenuManager manager = getMenuBarManager();
-            Menu menuBar = null;
-            if (manager != null) {
-                menuBar = manager.getMenu();
-                manager = null;
-            }
-            boolean menuBarWasEnabled = false;
-            if (menuBar != null) {
-				menuBarWasEnabled = menuBar.getEnabled();
-			}
-
-            Control toolbarControl = getToolBarControl();
-            boolean toolbarWasEnabled = false;
-            if (toolbarControl != null) {
-				toolbarWasEnabled = toolbarControl.getEnabled();
-			}
-
-            Control coolbarControl = getCoolBarControl();
-            boolean coolbarWasEnabled = false;
-            if (coolbarControl != null) {
-				coolbarWasEnabled = coolbarControl.getEnabled();
-			}
-
-            // Disable the rest of the shells on the current display
-            Shell[] shells = display.getShells();
-            boolean[] enabled = new boolean[shells.length];
-            for (int i = 0; i < shells.length; i++) {
-                Shell current = shells[i];
-                if (current == shell) {
-					continue;
-				}
-                if (current != null && !current.isDisposed()) {
-                    enabled[i] = current.getEnabled();
-                    current.setEnabled(false);
-                }
-            }
-
-            Control currentFocus = display.getFocusControl();
-            try {
-                contents.setEnabled(false);
-                if (menuBar != null) {
-					menuBar.setEnabled(false);
-				}
-                if (toolbarControl != null) {
-					toolbarControl.setEnabled(false);
-				}
-                if (coolbarControl != null) {
-					coolbarControl.setEnabled(false);
-				}
-                mgr.setCancelEnabled(cancelable);
-                final Exception[] holder = new Exception[1];
-                BusyIndicator.showWhile(display, new Runnable() {
-                    public void run() {
-                        try {
-                            ModalContext.run(runnable, fork, mgr
-                                    .getProgressMonitor(), display);
-                        } catch (InvocationTargetException ite) {
-                            holder[0] = ite;
-                        } catch (InterruptedException ie) {
-                            holder[0] = ie;
-                        }
-                    }
-                });
-
-                if (holder[0] != null) {
-                    if (holder[0] instanceof InvocationTargetException) {
-                        throw (InvocationTargetException) holder[0];
-                    } else if (holder[0] instanceof InterruptedException) {
-                        throw (InterruptedException) holder[0];
-                    }
-                }
-            } finally {
-                operationInProgress = false;
-                // Enable the rest of the shells on the current display
-                for (int i = 0; i < shells.length; i++) {
-                    Shell current = shells[i];
-                    if (current == shell) {
-						continue;
-					}
-                    if (current != null && !current.isDisposed()) {
-                        current.setEnabled(enabled[i]);
-                    }
-                }
-                if (!contents.isDisposed()) {
-					contents.setEnabled(contentsWasEnabled);
-				}
-                if (menuBar != null && !menuBar.isDisposed()) {
-					menuBar.setEnabled(menuBarWasEnabled);
-				}
-                if (toolbarControl != null && !toolbarControl.isDisposed()) {
-					toolbarControl.setEnabled(toolbarWasEnabled);
-				}
-                if (coolbarControl != null && !coolbarControl.isDisposed()) {
-					coolbarControl.setEnabled(coolbarWasEnabled);
-				}
-                mgr.setCancelEnabled(cancelWasEnabled);
-                if (currentFocus != null && !currentFocus.isDisposed()) {
-                    // It's necessary to restore focus after reenabling the controls
-                    // because disabling them causes focus to jump elsewhere.
-                    // Use forceFocus rather than setFocus to avoid SWT's
-                    // search for children which can take focus, so focus
-                    // ends up back on the actual control that previously had it.
-                    currentFocus.forceFocus();
-                }
-            }
-        } finally {
-            operationInProgress = false;
-        }
-    }
-
-    /**
-     * Sets or clears the message displayed in this window's status
-     * line (if it has one). This method has no effect if the
-     * window does not have a status line.
-     *
-     * @param message the status message, or <code>null</code> to clear it
-     */
-    public void setStatus(String message) {
-        if (statusLineManager != null) {
-            statusLineManager.setMessage(message);
-        }
-    }
-
-    /**
-     * Returns whether or not children exist for the Application Window's
-     * toolbar control.
-     * <p>
-     * @return boolean true if children exist, false otherwise
-     */
-    protected boolean toolBarChildrenExist() {
-        Control toolControl = getToolBarControl();
-        if (toolControl instanceof ToolBar) {
-            return ((ToolBar) toolControl).getItemCount() > 0;
-        }
-        return false;
-    }
-
-    /**
-     * Returns whether or not children exist for this application window's
-     * cool bar control.
-     * 
-     * @return boolean true if children exist, false otherwise
-     * @since 3.0
-     */
-    protected boolean coolBarChildrenExist() {
-        Control coolControl = getCoolBarControl();
-        if (coolControl instanceof CoolBar) {
-            return ((CoolBar) coolControl).getItemCount() > 0;
-        }
-        return false;
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/DefaultToolTip.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/DefaultToolTip.java
deleted file mode 100644
index 226102b..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/DefaultToolTip.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.window;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * Default implementation of ToolTip that provides an iconofied label with font
- * and color controls by subclass.
- * 
- * @since 3.3
- */
-public class DefaultToolTip extends ToolTip {
-	private String text;
-
-	private Color backgroundColor;
-
-	private Font font;
-
-	private Image backgroundImage;
-
-	private Color foregroundColor;
-
-	private Image image;
-
-	private int style = SWT.SHADOW_NONE;
-
-	/**
-	 * Create new instance which add TooltipSupport to the widget
-	 * 
-	 * @param control the control on whose action the tooltip is shown
-	 */
-	public DefaultToolTip(Control control) {
-		super(control);
-	}
-
-	/**
-	 * Create new instance which add TooltipSupport to the widget
-	 * 
-	 * @param control the control to which the tooltip is bound
-	 * @param style style passed to control tooltip behaviour
-	 * @param manualActivation <code>true</code> if the activation is done manually using
-	 *            {@link #show(Point)}
-	 * @see #RECREATE
-	 * @see #NO_RECREATE
-	 */
-	public DefaultToolTip(Control control, int style, boolean manualActivation) {
-		super(control, style, manualActivation);
-	}
-	
-	/**
-	 * Creates the content are of the the tooltip. By default this creates a
-	 * CLabel to display text. To customize the text Subclasses may override the
-	 * following methods
-	 * <ul>
-	 * <li>{@link #getStyle(Event)}</li>
-	 * <li>{@link #getBackgroundColor(Event)}</li>
-	 * <li>{@link #getForegroundColor(Event)}</li>
-	 * <li>{@link #getFont(Event)}</li>
-	 * <li>{@link #getImage(Event)}</li>
-	 * <li>{@link #getText(Event)}</li>
-	 * <li>{@link #getBackgroundImage(Event)}</li>
-	 * </ul>
-	 * 
-	 * @param event
-	 *            the event that triggered the activation of the tooltip
-	 * @param parent
-	 *            the parent of the content area
-	 * @return the content area created
-	 */
-	protected Composite createToolTipContentArea(Event event, Composite parent) {
-		Image image = getImage(event);
-		Image bgImage = getBackgroundImage(event);
-		String text = getText(event);
-		Color fgColor = getForegroundColor(event);
-		Color bgColor = getBackgroundColor(event);
-		Font font = getFont(event);
-
-		CLabel label = new CLabel(parent, getStyle(event));
-		if (text != null) {
-			label.setText(text);
-		}
-
-		if (image != null) {
-			label.setImage(image);
-		}
-
-		if (fgColor != null) {
-			label.setForeground(fgColor);
-		}
-
-		if (bgColor != null) {
-			label.setBackground(bgColor);
-		}
-
-		if (bgImage != null) {
-			label.setBackgroundImage(image);
-		}
-
-		if (font != null) {
-			label.setFont(font);
-		}
-
-		return label;
-	}
-
-	/**
-	 * The style used to create the {@link CLabel} in the default implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the style
-	 */
-	protected int getStyle(Event event) {
-		return style;
-	}
-
-	/**
-	 * The {@link Image} displayed in the {@link CLabel} in the default
-	 * implementation implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the {@link Image} or <code>null</code> if no image should be
-	 *         displayed
-	 */
-	protected Image getImage(Event event) {
-		return image;
-	}
-
-	/**
-	 * The foreground {@link Color} used by {@link CLabel} in the default
-	 * implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the {@link Color} or <code>null</code> if default foreground
-	 *         color should be used
-	 */
-	protected Color getForegroundColor(Event event) {
-		return (foregroundColor == null) ? event.widget.getDisplay()
-				.getSystemColor(SWT.COLOR_INFO_FOREGROUND) : foregroundColor;
-	}
-
-	/**
-	 * The background {@link Color} used by {@link CLabel} in the default
-	 * implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the {@link Color} or <code>null</code> if default background
-	 *         color should be used
-	 */
-	protected Color getBackgroundColor(Event event) {
-		return (backgroundColor == null) ? event.widget.getDisplay()
-				.getSystemColor(SWT.COLOR_INFO_BACKGROUND) : backgroundColor;
-	}
-
-	/**
-	 * The background {@link Image} used by {@link CLabel} in the default
-	 * implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the {@link Image} or <code>null</code> if no image should be
-	 *         displayed in the background
-	 */
-	protected Image getBackgroundImage(Event event) {
-		return backgroundImage;
-	}
-
-	/**
-	 * The {@link Font} used by {@link CLabel} in the default implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the {@link Font} or <code>null</code> if the default font
-	 *         should be used
-	 */
-	protected Font getFont(Event event) {
-		return font;
-	}
-
-	/**
-	 * The text displayed in the {@link CLabel} in the default implementation
-	 * 
-	 * @param event
-	 *            the event triggered the popup of the tooltip
-	 * @return the text or <code>null</code> if no text has to be displayed
-	 */
-	protected String getText(Event event) {
-		return text;
-	}
-
-	/**
-	 * The background {@link Image} used by {@link CLabel} in the default
-	 * implementation
-	 * 
-	 * @param backgroundColor
-	 *            the {@link Color} or <code>null</code> if default background
-	 *            color ({@link SWT#COLOR_INFO_BACKGROUND}) should be used
-	 */
-	public void setBackgroundColor(Color backgroundColor) {
-		this.backgroundColor = backgroundColor;
-	}
-
-	/**
-	 * The background {@link Image} used by {@link CLabel} in the default
-	 * implementation
-	 * 
-	 * @param backgroundImage
-	 *            the {@link Image} or <code>null</code> if no image should be
-	 *            displayed in the background
-	 */
-	public void setBackgroundImage(Image backgroundImage) {
-		this.backgroundImage = backgroundImage;
-	}
-
-	/**
-	 * The {@link Font} used by {@link CLabel} in the default implementation
-	 * 
-	 * @param font
-	 *            the {@link Font} or <code>null</code> if the default font
-	 *            should be used
-	 */
-	public void setFont(Font font) {
-		this.font = font;
-	}
-
-	/**
-	 * The foreground {@link Color} used by {@link CLabel} in the default
-	 * implementation
-	 * 
-	 * @param foregroundColor
-	 *            the {@link Color} or <code>null</code> if default foreground
-	 *            color should be used
-	 */
-	public void setForegroundColor(Color foregroundColor) {
-		this.foregroundColor = foregroundColor;
-	}
-
-	/**
-	 * The {@link Image} displayed in the {@link CLabel} in the default
-	 * implementation implementation
-	 * 
-	 * @param image
-	 *            the {@link Image} or <code>null</code> if no image should be
-	 *            displayed
-	 */
-	public void setImage(Image image) {
-		this.image = image;
-	}
-
-	/**
-	 * The style used to create the {@link CLabel} in the default implementation
-	 * 
-	 * @param style
-	 *            the event triggered the popup of the tooltip
-	 */
-	public void setStyle(int style) {
-		this.style = style;
-	}
-
-	/**
-	 * The text displayed in the {@link CLabel} in the default implementation
-	 * 
-	 * @param text
-	 *            the text or <code>null</code> if no text has to be displayed
-	 */
-	public void setText(String text) {
-		this.text = text;
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/IShellProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/IShellProvider.java
deleted file mode 100644
index 23eb9a8..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/IShellProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.window;
-
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Interface for objects that can return a shell. This is normally used for 
- * opening child windows. An object that wants to open child shells can take 
- * an IShellProvider in its constructor, and the object that implements IShellProvider
- * can dynamically choose where child shells should be opened.  
- * 
- * @since 3.1
- */
-public interface IShellProvider {
-    /**
-     * Returns the current shell (or null if none). This return value may
-     * change over time, and should not be cached.
-     * 
-     * @return the current shell or null if none
-     */
-    Shell getShell();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/SameShellProvider.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/SameShellProvider.java
deleted file mode 100644
index 1ed0e8d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/SameShellProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.window;
-
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Standard shell provider that always returns the shell containing the given
- * control. This will always return the correct shell for the control, even if
- * the control is reparented.
- * 
- * @since 3.1
- */
-public class SameShellProvider implements IShellProvider {
-
-    private Control targetControl;
-    
-    /**
-     * Returns a shell provider that always returns the current
-     * shell for the given control.
-     * 
-     * @param targetControl control whose shell will be tracked, or null if getShell() should always
-     * return null
-     */
-    public SameShellProvider(Control targetControl) {
-        this.targetControl = targetControl;
-    }
-    
-    /* (non-javadoc)
-     * @see IShellProvider#getShell()
-     */
-    public Shell getShell() {
-        if (targetControl instanceof Shell) {
-            return (Shell)targetControl;
-        }
-        
-        return targetControl == null? null :targetControl.getShell();
-    }
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
deleted file mode 100644
index ec3b3ef..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
+++ /dev/null
@@ -1,730 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
- *                                                 bugfix in: 195137, 198089, 225190
- *******************************************************************************/
-
-package org.eclipse.jface.window;
-
-import java.util.HashMap;
-
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.ViewerCell;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FillLayout;
-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.Listener;
-import org.eclipse.swt.widgets.Monitor;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This class gives implementors to provide customized tooltips for any control.
- * 
- * @since 3.3
- */
-public abstract class ToolTip {
-	private Control control;
-
-	private int xShift = 3;
-
-	private int yShift = 0;
-
-	private int popupDelay = 0;
-
-	private int hideDelay = 0;
-
-	private ToolTipOwnerControlListener listener;
-
-	private HashMap data;
-
-	// Ensure that only one tooltip is active in time
-	private static Shell CURRENT_TOOLTIP;
-
-	/**
-	 * Recreate the tooltip on every mouse move
-	 */
-	public static final int RECREATE = 1;
-
-	/**
-	 * Don't recreate the tooltip as long the mouse doesn't leave the area
-	 * triggering the tooltip creation
-	 */
-	public static final int NO_RECREATE = 1 << 1;
-
-	private TooltipHideListener hideListener = new TooltipHideListener();
-
-	private Listener shellListener;
-
-	private boolean hideOnMouseDown = true;
-
-	private boolean respectDisplayBounds = true;
-
-	private boolean respectMonitorBounds = true;
-
-	private int style;
-
-	private Object currentArea;
-
-	private static final boolean IS_OSX = SWT.getPlatform().equals("carbon"); //$NON-NLS-1$
-
-	/**
-	 * Create new instance which add TooltipSupport to the widget
-	 * 
-	 * @param control
-	 *            the control on whose action the tooltip is shown
-	 */
-	public ToolTip(Control control) {
-		this(control, RECREATE, false);
-	}
-
-	/**
-	 * @param control
-	 *            the control to which the tooltip is bound
-	 * @param style
-	 *            style passed to control tooltip behavior
-	 * 
-	 * @param manualActivation
-	 *            <code>true</code> if the activation is done manually using
-	 *            {@link #show(Point)}
-	 * @see #RECREATE
-	 * @see #NO_RECREATE
-	 */
-	public ToolTip(Control control, int style, boolean manualActivation) {
-		this.control = control;
-		this.style = style;
-		this.control.addDisposeListener(new DisposeListener() {
-
-			public void widgetDisposed(DisposeEvent e) {
-				data = null;
-				deactivate();
-			}
-
-		});
-
-		this.listener = new ToolTipOwnerControlListener();
-		this.shellListener = new Listener() {
-			public void handleEvent(final Event event) {
-				if (ToolTip.this.control != null
-						&& !ToolTip.this.control.isDisposed()) {
-					ToolTip.this.control.getDisplay().asyncExec(new Runnable() {
-
-						public void run() {
-							// Check if the new active shell is the tooltip
-							// itself
-							if (ToolTip.this.control.getDisplay()
-									.getActiveShell() != CURRENT_TOOLTIP) {
-								toolTipHide(CURRENT_TOOLTIP, event);
-							}
-						}
-
-					});
-				}
-			}
-		};
-
-		if (!manualActivation) {
-			activate();
-		}
-	}
-
-	/**
-	 * Restore arbitrary data under the given key
-	 * 
-	 * @param key
-	 *            the key
-	 * @param value
-	 *            the value
-	 */
-	public void setData(String key, Object value) {
-		if (data == null) {
-			data = new HashMap();
-		}
-		data.put(key, value);
-	}
-
-	/**
-	 * Get the data restored under the key
-	 * 
-	 * @param key
-	 *            the key
-	 * @return data or <code>null</code> if no entry is restored under the key
-	 */
-	public Object getData(String key) {
-		if (data != null) {
-			return data.get(key);
-		}
-		return null;
-	}
-
-	/**
-	 * Set the shift (from the mouse position triggered the event) used to
-	 * display the tooltip.
-	 * <p>
-	 * By default the tooltip is shifted 3 pixels to the right.
-	 * </p>
-	 * 
-	 * @param p
-	 *            the new shift
-	 */
-	public void setShift(Point p) {
-		xShift = p.x;
-		yShift = p.y;
-	}
-
-	/**
-	 * Activate tooltip support for this control
-	 */
-	public void activate() {
-		deactivate();
-		control.addListener(SWT.Dispose, listener);
-		control.addListener(SWT.MouseHover, listener);
-		control.addListener(SWT.MouseMove, listener);
-		control.addListener(SWT.MouseExit, listener);
-		control.addListener(SWT.MouseDown, listener);
-		control.addListener(SWT.MouseWheel, listener);
-	}
-
-	/**
-	 * Deactivate tooltip support for the underlying control
-	 */
-	public void deactivate() {
-		control.removeListener(SWT.Dispose, listener);
-		control.removeListener(SWT.MouseHover, listener);
-		control.removeListener(SWT.MouseMove, listener);
-		control.removeListener(SWT.MouseExit, listener);
-		control.removeListener(SWT.MouseDown, listener);
-		control.removeListener(SWT.MouseWheel, listener);
-	}
-
-	/**
-	 * Return whether the tooltip respects bounds of the display.
-	 * 
-	 * @return <code>true</code> if the tooltip respects bounds of the display
-	 */
-	public boolean isRespectDisplayBounds() {
-		return respectDisplayBounds;
-	}
-
-	/**
-	 * Set to <code>false</code> if display bounds should not be respected or
-	 * to <code>true</code> if the tooltip is should repositioned to not
-	 * overlap the display bounds.
-	 * <p>
-	 * Default is <code>true</code>
-	 * </p>
-	 * 
-	 * @param respectDisplayBounds
-	 */
-	public void setRespectDisplayBounds(boolean respectDisplayBounds) {
-		this.respectDisplayBounds = respectDisplayBounds;
-	}
-
-	/**
-	 * Return whether the tooltip respects bounds of the monitor.
-	 * 
-	 * @return <code>true</code> if tooltip respects the bounds of the monitor
-	 */
-	public boolean isRespectMonitorBounds() {
-		return respectMonitorBounds;
-	}
-
-	/**
-	 * Set to <code>false</code> if monitor bounds should not be respected or
-	 * to <code>true</code> if the tooltip is should repositioned to not
-	 * overlap the monitors bounds. The monitor the tooltip belongs to is the
-	 * same is control's monitor the tooltip is shown for.
-	 * <p>
-	 * Default is <code>true</code>
-	 * </p>
-	 * 
-	 * @param respectMonitorBounds
-	 */
-	public void setRespectMonitorBounds(boolean respectMonitorBounds) {
-		this.respectMonitorBounds = respectMonitorBounds;
-	}
-
-	/**
-	 * Should the tooltip displayed because of the given event.
-	 * <p>
-	 * <b>Subclasses may overwrite this to get custom behavior</b>
-	 * </p>
-	 * 
-	 * @param event
-	 *            the event
-	 * @return <code>true</code> if tooltip should be displayed
-	 */
-	protected boolean shouldCreateToolTip(Event event) {
-		if ((style & NO_RECREATE) != 0) {
-			Object tmp = getToolTipArea(event);
-
-			// No new area close the current tooltip
-			if (tmp == null) {
-				hide();
-				return false;
-			}
-
-			boolean rv = !tmp.equals(currentArea);
-			return rv;
-		}
-
-		return true;
-	}
-
-	/**
-	 * This method is called before the tooltip is hidden
-	 * 
-	 * @param event
-	 *            the event trying to hide the tooltip
-	 * @return <code>true</code> if the tooltip should be hidden
-	 */
-	private boolean shouldHideToolTip(Event event) {
-		if (event != null && event.type == SWT.MouseMove
-				&& (style & NO_RECREATE) != 0) {
-			Object tmp = getToolTipArea(event);
-
-			// No new area close the current tooltip
-			if (tmp == null) {
-				hide();
-				return false;
-			}
-
-			boolean rv = !tmp.equals(currentArea);
-			return rv;
-		}
-
-		return true;
-	}
-
-	/**
-	 * This method is called to check for which area the tooltip is
-	 * created/hidden for. In case of {@link #NO_RECREATE} this is used to
-	 * decide if the tooltip is hidden recreated.
-	 * 
-	 * <code>By the default it is the widget the tooltip is created for but could be any object. To decide if
-	 * the area changed the {@link Object#equals(Object)} method is used.</code>
-	 * 
-	 * @param event
-	 *            the event
-	 * @return the area responsible for the tooltip creation or
-	 *         <code>null</code> this could be any object describing the area
-	 *         (e.g. the {@link Control} onto which the tooltip is bound to, a
-	 *         part of this area e.g. for {@link ColumnViewer} this could be a
-	 *         {@link ViewerCell})
-	 */
-	protected Object getToolTipArea(Event event) {
-		return control;
-	}
-
-	/**
-	 * Start up the tooltip programmatically
-	 * 
-	 * @param location
-	 *            the location relative to the control the tooltip is shown
-	 */
-	public void show(Point location) {
-		Event event = new Event();
-		event.x = location.x;
-		event.y = location.y;
-		event.widget = control;
-		toolTipCreate(event);
-	}
-
-	private Shell toolTipCreate(final Event event) {
-		if (shouldCreateToolTip(event)) {
-			Shell shell = new Shell(control.getShell(), SWT.ON_TOP | SWT.TOOL
-					| SWT.NO_FOCUS);
-			shell.setLayout(new FillLayout());
-
-			toolTipOpen(shell, event);
-
-			return shell;
-		}
-
-		return null;
-	}
-
-	private void toolTipShow(Shell tip, Event event) {
-		if (!tip.isDisposed()) {
-			currentArea = getToolTipArea(event);
-			createToolTipContentArea(event, tip);
-			if (isHideOnMouseDown()) {
-				toolTipHookBothRecursively(tip);
-			} else {
-				toolTipHookByTypeRecursively(tip, true, SWT.MouseExit);
-			}
-
-			tip.pack();
-			Point size = tip.getSize();
-			Point location = fixupDisplayBounds(size, getLocation(size, event));
-
-			// Need to adjust a bit more if the mouse cursor.y == tip.y and
-			// the cursor.x is inside the tip
-			Point cursorLocation = tip.getDisplay().getCursorLocation();
-
-			if (cursorLocation.y == location.y && location.x < cursorLocation.x
-					&& location.x + size.x > cursorLocation.x) {
-				location.y -= 2;
-			}
-
-			tip.setLocation(location);
-			tip.setVisible(true);
-		}
-	}
-
-	private Point fixupDisplayBounds(Point tipSize, Point location) {
-		if (respectDisplayBounds || respectMonitorBounds) {
-			Rectangle bounds;
-			Point rightBounds = new Point(tipSize.x + location.x, tipSize.y
-					+ location.y);
-
-			Monitor[] ms = control.getDisplay().getMonitors();
-
-			if (respectMonitorBounds && ms.length > 1) {
-				// By default present in the monitor of the control
-				bounds = control.getMonitor().getBounds();
-				Point p = new Point(location.x, location.y);
-
-				// Search on which monitor the event occurred
-				Rectangle tmp;
-				for (int i = 0; i < ms.length; i++) {
-					tmp = ms[i].getBounds();
-					if (tmp.contains(p)) {
-						bounds = tmp;
-						break;
-					}
-				}
-
-			} else {
-				bounds = control.getDisplay().getBounds();
-			}
-
-			if (!(bounds.contains(location) && bounds.contains(rightBounds))) {
-				if (rightBounds.x > bounds.x + bounds.width) {
-					location.x -= rightBounds.x - (bounds.x + bounds.width);
-				}
-
-				if (rightBounds.y > bounds.y + bounds.height) {
-					location.y -= rightBounds.y - (bounds.y + bounds.height);
-				}
-
-				if (location.x < bounds.x) {
-					location.x = bounds.x;
-				}
-
-				if (location.y < bounds.y) {
-					location.y = bounds.y;
-				}
-			}
-		}
-
-		return location;
-	}
-
-	/**
-	 * Get the display relative location where the tooltip is displayed.
-	 * Subclasses may overwrite to implement custom positioning.
-	 * 
-	 * @param tipSize
-	 *            the size of the tooltip to be shown
-	 * @param event
-	 *            the event triggered showing the tooltip
-	 * @return the absolute position on the display
-	 */
-	public Point getLocation(Point tipSize, Event event) {
-		return control.toDisplay(event.x + xShift, event.y + yShift);
-	}
-
-	private void toolTipHide(Shell tip, Event event) {
-		if (tip != null && !tip.isDisposed() && shouldHideToolTip(event)) {
-			control.getShell().removeListener(SWT.Deactivate, shellListener);
-			currentArea = null;
-			passOnEvent(tip, event);
-			tip.dispose();
-			CURRENT_TOOLTIP = null;
-			afterHideToolTip(event);
-		}
-	}
-
-	private void passOnEvent(Shell tip, Event event) {
-		if (control != null && !control.isDisposed() && event != null
-				&& event.widget != control && event.type == SWT.MouseDown) {
-			final Display display = control.getDisplay();
-			Point newPt = display.map(tip, null, new Point(event.x, event.y));
-
-			final Event newEvent = new Event();
-			newEvent.button = event.button;
-			newEvent.character = event.character;
-			newEvent.count = event.count;
-			newEvent.data = event.data;
-			newEvent.detail = event.detail;
-			newEvent.display = event.display;
-			newEvent.doit = event.doit;
-			newEvent.end = event.end;
-			newEvent.gc = event.gc;
-			newEvent.height = event.height;
-			newEvent.index = event.index;
-			newEvent.item = event.item;
-			newEvent.keyCode = event.keyCode;
-			newEvent.start = event.start;
-			newEvent.stateMask = event.stateMask;
-			newEvent.text = event.text;
-			newEvent.time = event.time;
-			newEvent.type = event.type;
-			newEvent.widget = event.widget;
-			newEvent.width = event.width;
-			newEvent.x = newPt.x;
-			newEvent.y = newPt.y;
-
-			tip.close();
-			display.asyncExec(new Runnable() {
-				public void run() {
-					if (IS_OSX) {
-						try {
-							Thread.sleep(300);
-						} catch (InterruptedException e) {
-
-						}
-
-						display.post(newEvent);
-						newEvent.type = SWT.MouseUp;
-						display.post(newEvent);
-					} else {
-						display.post(newEvent);
-					}
-				}
-			});
-		}
-	}
-
-	private void toolTipOpen(final Shell shell, final Event event) {
-		// Ensure that only one Tooltip is shown in time
-		if (CURRENT_TOOLTIP != null) {
-			toolTipHide(CURRENT_TOOLTIP, null);
-		}
-
-		CURRENT_TOOLTIP = shell;
-
-		control.getShell().addListener(SWT.Deactivate, shellListener);
-
-		if (popupDelay > 0) {
-			control.getDisplay().timerExec(popupDelay, new Runnable() {
-				public void run() {
-					toolTipShow(shell, event);
-				}
-			});
-		} else {
-			toolTipShow(CURRENT_TOOLTIP, event);
-		}
-
-		if (hideDelay > 0) {
-			control.getDisplay().timerExec(popupDelay + hideDelay,
-					new Runnable() {
-
-						public void run() {
-							toolTipHide(shell, null);
-						}
-					});
-		}
-	}
-
-	private void toolTipHookByTypeRecursively(Control c, boolean add, int type) {
-		if (add) {
-			c.addListener(type, hideListener);
-		} else {
-			c.removeListener(type, hideListener);
-		}
-
-		if (c instanceof Composite) {
-			Control[] children = ((Composite) c).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				toolTipHookByTypeRecursively(children[i], add, type);
-			}
-		}
-	}
-
-	private void toolTipHookBothRecursively(Control c) {
-		c.addListener(SWT.MouseDown, hideListener);
-		c.addListener(SWT.MouseExit, hideListener);
-
-		if (c instanceof Composite) {
-			Control[] children = ((Composite) c).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				toolTipHookBothRecursively(children[i]);
-			}
-		}
-	}
-
-	/**
-	 * Creates the content area of the the tooltip.
-	 * 
-	 * @param event
-	 *            the event that triggered the activation of the tooltip
-	 * @param parent
-	 *            the parent of the content area
-	 * @return the content area created
-	 */
-	protected abstract Composite createToolTipContentArea(Event event,
-			Composite parent);
-
-	/**
-	 * This method is called after a tooltip is hidden.
-	 * <p>
-	 * <b>Subclasses may override to clean up requested system resources</b>
-	 * </p>
-	 * 
-	 * @param event
-	 *            event triggered the hiding action (may be <code>null</code>
-	 *            if event wasn't triggered by user actions directly)
-	 */
-	protected void afterHideToolTip(Event event) {
-
-	}
-
-	/**
-	 * Set the hide delay.
-	 * 
-	 * @param hideDelay
-	 *            the delay before the tooltip is hidden. If <code>0</code>
-	 *            the tooltip is shown until user moves to other item
-	 */
-	public void setHideDelay(int hideDelay) {
-		this.hideDelay = hideDelay;
-	}
-
-	/**
-	 * Set the popup delay.
-	 * 
-	 * @param popupDelay
-	 *            the delay before the tooltip is shown to the user. If
-	 *            <code>0</code> the tooltip is shown immediately
-	 */
-	public void setPopupDelay(int popupDelay) {
-		this.popupDelay = popupDelay;
-	}
-
-	/**
-	 * Return if hiding on mouse down is set.
-	 * 
-	 * @return <code>true</code> if hiding on mouse down in the tool tip is on
-	 */
-	public boolean isHideOnMouseDown() {
-		return hideOnMouseDown;
-	}
-
-	/**
-	 * If you don't want the tool tip to be hidden when the user clicks inside
-	 * the tool tip set this to <code>false</code>. You maybe also need to
-	 * hide the tool tip yourself depending on what you do after clicking in the
-	 * tooltip (e.g. if you open a new {@link Shell})
-	 * 
-	 * @param hideOnMouseDown
-	 *            flag to indicate of tooltip is hidden automatically on mouse
-	 *            down inside the tool tip
-	 */
-	public void setHideOnMouseDown(final boolean hideOnMouseDown) {
-		// Only needed if there's currently a tooltip active
-		if (CURRENT_TOOLTIP != null && !CURRENT_TOOLTIP.isDisposed()) {
-			// Only change if value really changed
-			if (hideOnMouseDown != this.hideOnMouseDown) {
-				control.getDisplay().syncExec(new Runnable() {
-
-					public void run() {
-						if (CURRENT_TOOLTIP != null
-								&& CURRENT_TOOLTIP.isDisposed()) {
-							toolTipHookByTypeRecursively(CURRENT_TOOLTIP,
-									hideOnMouseDown, SWT.MouseDown);
-						}
-					}
-
-				});
-			}
-		}
-
-		this.hideOnMouseDown = hideOnMouseDown;
-	}
-
-	/**
-	 * Hide the currently active tool tip
-	 */
-	public void hide() {
-		toolTipHide(CURRENT_TOOLTIP, null);
-	}
-
-	private class ToolTipOwnerControlListener implements Listener {
-		public void handleEvent(Event event) {
-			switch (event.type) {
-			case SWT.Dispose:
-			case SWT.KeyDown:
-			case SWT.MouseDown:
-			case SWT.MouseMove:
-			case SWT.MouseWheel:
-				toolTipHide(CURRENT_TOOLTIP, event);
-				break;
-			case SWT.MouseHover:
-				toolTipCreate(event);
-				break;
-			case SWT.MouseExit:
-				/*
-				 * Check if the mouse exit happened because we move over the
-				 * tooltip
-				 */
-				if (CURRENT_TOOLTIP != null && !CURRENT_TOOLTIP.isDisposed()) {
-					if (CURRENT_TOOLTIP.getBounds().contains(
-							control.toDisplay(event.x, event.y))) {
-						break;
-					}
-				}
-
-				toolTipHide(CURRENT_TOOLTIP, event);
-				break;
-			}
-		}
-	}
-
-	private class TooltipHideListener implements Listener {
-		public void handleEvent(Event event) {
-			if (event.widget instanceof Control) {
-
-				Control c = (Control) event.widget;
-				Shell shell = c.getShell();
-
-				switch (event.type) {
-				case SWT.MouseDown:
-					if (isHideOnMouseDown()) {
-						toolTipHide(shell, event);
-					}
-					break;
-				case SWT.MouseExit:
-					/*
-					 * Give some insets to ensure we get exit informations from
-					 * a wider area ;-)
-					 */
-					Rectangle rect = shell.getBounds();
-					rect.x += 5;
-					rect.y += 5;
-					rect.width -= 10;
-					rect.height -= 10;
-
-					if (!rect.contains(c.getDisplay().getCursorLocation())) {
-						toolTipHide(shell, event);
-					}
-
-					break;
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
deleted file mode 100644
index b7fc0f5..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
+++ /dev/null
@@ -1,1081 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.window;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.events.ShellListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridLayout;
-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.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Monitor;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A JFace window is an object that has no visual representation (no widgets)
- * until it is told to open.
- * <p>
- * Creating a window involves the following steps:
- * <ul>
- * <li>creating an instance of a concrete subclass of <code>Window</code>
- * </li>
- * <li>creating the window's shell and widget tree by calling
- * <code>create</code> (optional)</li>
- * <li>assigning the window to a window manager using
- * <code>WindowManager.add</code> (optional)</li>
- * <li>opening the window by calling <code>open</code></li>
- * </ul>
- * Opening the window will create its shell and widget tree if they have not
- * already been created. When the window is closed, the shell and widget tree
- * are disposed of and are no longer referenced, and the window is automatically
- * removed from its window manager. A window may be reopened.
- * </p>
- * <p>
- * The JFace window framework (this package) consists of this class,
- * <code>Window</code>, the abstract base of all windows, and one concrete
- * window classes (<code>ApplicationWindow</code>) which may also be
- * subclassed. Clients may define additional window subclasses as required.
- * </p>
- * <p>
- * The <code>Window</code> class provides methods that subclasses may 
- * override to configure the window, including:
- * <ul>
- * <li><code>close</code>- extend to free other SWT resources</li>
- * <li><code>configureShell</code>- extend or reimplement to set shell
- * properties before window opens</li>
- * <li><code>createContents</code>- extend or reimplement to create controls
- * before window opens</li>
- * <li><code>getInitialSize</code>- reimplement to give the initial size for
- * the shell</li>
- * <li><code>getInitialLocation</code>- reimplement to give the initial
- * location for the shell</li>
- * <li><code>getShellListener</code>- extend or reimplement to receive shell
- * events</li>
- * <li><code>handleFontChange</code>- reimplement to respond to font changes
- * </li>
- * <li><code>handleShellCloseEvent</code>- extend or reimplement to handle
- * shell closings</li>
- * </ul>
- * </p>
- */
-public abstract class Window implements IShellProvider {
-
-	/**
-	 * Standard return code constant (value 0) indicating that the window was
-	 * opened.
-	 * 
-	 * @see #open
-	 */
-	public static final int OK = 0;
-
-	/**
-	 * Standard return code constant (value 1) indicating that the window was
-	 * canceled.
-	 * 
-	 * @see #open
-	 */
-	public static final int CANCEL = 1;
-
-	/**
-	 * An array of images to be used for the window. It is expected that the
-	 * array will contain the same icon rendered at different resolutions.
-	 */
-	private static Image[] defaultImages;
-
-	/**
-	 * This interface defines a Exception Handler which can be set as a global
-	 * handler and will be called if an exception happens in the event loop.
-	 */
-	public static interface IExceptionHandler {
-		/**
-		 * Handle the exception.
-		 * 
-		 * @param t
-		 *            The exception that occured.
-		 */
-		public void handleException(Throwable t);
-	}
-
-	/**
-	 * Defines a default exception handler.
-	 */
-	private static class DefaultExceptionHandler implements IExceptionHandler {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.window.Window.IExceptionHandler#handleException(java.lang.Throwable)
-		 */
-		public void handleException(Throwable t) {
-			if (t instanceof ThreadDeath) {
-				// Don't catch ThreadDeath as this is a normal occurrence when
-				// the thread dies
-				throw (ThreadDeath) t;
-			}
-			// Try to keep running.
-			t.printStackTrace();
-		}
-	}
-
-	/**
-	 * The exception handler for this application.
-	 */
-	private static IExceptionHandler exceptionHandler = new DefaultExceptionHandler();
-	
-	/**
-	 * The default orientation of the window. By default
-	 * it is SWT#NONE but it can also be SWT#LEFT_TO_RIGHT
-	 * or SWT#RIGHT_TO_LEFT
-	 */
-	private static int orientation = SWT.NONE;
-
-    /**
-     * Object used to locate the default parent for modal shells
-     */
-    private static IShellProvider defaultModalParent = new IShellProvider() {
-        public Shell getShell() {
-            Display d = Display.getCurrent();
-            
-            if (d == null) {
-                return null;
-            }
-
-            Shell parent = d.getActiveShell();
-            
-            // Make sure we don't pick a parent that has a modal child (this can lock the app)
-            if (parent == null) {
-                // If this is a top-level window, then there must not be any open modal windows.
-                parent = getModalChild(Display.getCurrent().getShells());
-            } else {
-                // If we picked a parent with a modal child, use the modal child instead
-                Shell modalChild = getModalChild(parent.getShells());
-                if (modalChild != null) {
-                    parent = modalChild;
-                }
-            }
-            
-            return parent;
-        }
-    };
-    
-	/**
-	 * Object that returns the parent shell.
-	 */
-	private IShellProvider parentShell;
-
-	/**
-	 * Shell style bits.
-	 * 
-	 * @see #setShellStyle
-	 */
-	private int shellStyle = SWT.SHELL_TRIM;
-
-	/**
-	 * Window manager, or <code>null</code> if none.
-	 * 
-	 * @see #setWindowManager
-	 */
-	private WindowManager windowManager;
-
-	/**
-	 * Window shell, or <code>null</code> if none.
-	 */
-	private Shell shell;
-
-	/**
-	 * Top level SWT control, or <code>null</code> if none
-	 */
-	private Control contents;
-
-	/**
-	 * Window return code; initially <code>OK</code>.
-	 * 
-	 * @see #setReturnCode
-	 */
-	private int returnCode = OK;
-
-	/**
-	 * <code>true</code> if the <code>open</code> method should not return
-	 * until the window closes, and <code>false</code> if the
-	 * <code>open</code> method should return immediately; initially
-	 * <code>false</code> (non-blocking).
-	 * 
-	 * @see #setBlockOnOpen
-	 */
-	private boolean block = false;
-
-	/**
-	 * Internal class for informing this window when fonts change.
-	 */
-	private class FontChangeListener implements IPropertyChangeListener {
-		public void propertyChange(PropertyChangeEvent event) {
-			handleFontChange(event);
-		}
-	}
-
-	/**
-	 * Internal font change listener.
-	 */
-	private FontChangeListener fontChangeListener;
-
-	/**
-	 * Internal fields to detect if shell size has been set
-	 */
-	private boolean resizeHasOccurred = false;
-
-	private Listener resizeListener;
- 
-	/**
-	 * Creates a window instance, whose shell will be created under the given
-	 * parent shell. Note that the window will have no visual representation
-	 * until it is told to open. By default, <code>open</code> does not block.
-	 * 
-	 * @param parentShell
-	 *            the parent shell, or <code>null</code> to create a top-level
-	 *            shell. Try passing "(Shell)null" to this method instead of "null"
-     *            if your compiler complains about an ambiguity error.
-	 * @see #setBlockOnOpen
-	 * @see #getDefaultOrientation()
-	 */
-	protected Window(Shell parentShell) {
-        this(new SameShellProvider(parentShell));
-        
-        if(parentShell == null) {
-			setShellStyle(getShellStyle() | getDefaultOrientation());
-		}
-	}
-    
-    /**
-     * Creates a new window which will create its shell as a child of whatever
-     * the given shellProvider returns.
-     * 
-     * @param shellProvider object that will return the current parent shell. Not null.
-     * 
-     * @since 3.1
-     */
-    protected Window(IShellProvider shellProvider) {
-        Assert.isNotNull(shellProvider);
-        this.parentShell = shellProvider;   
-    }
-
-	/**
-	 * Determines if the window should handle the close event or do nothing.
-	 * <p>
-	 * The default implementation of this framework method returns
-	 * <code>true</code>, which will allow the
-	 * <code>handleShellCloseEvent</code> method to be called. Subclasses may
-	 * extend or reimplement.
-	 * </p>
-	 * 
-	 * @return whether the window should handle the close event.
-	 */
-	protected boolean canHandleShellCloseEvent() {
-		return true;
-	}
-
-	/**
-	 * Closes this window, disposes its shell, and removes this window from its
-	 * window manager (if it has one).
-	 * <p>
-	 * This framework method may be extended (<code>super.close</code> must
-	 * be called).
-	 * </p>
-	 * <p>
-	 *  Note that in order to prevent recursive calls to this method 
-	 *  it does not call <code>Shell#close()</code>. As a result <code>ShellListener</code>s 
-	 *  will not receive a <code>shellClosed</code> event.
-	 *  </p>
-	 * 
-	 * @return <code>true</code> if the window is (or was already) closed, and
-	 *         <code>false</code> if it is still open
-	 */
-	public boolean close() {
-		
-		// stop listening for font changes
-		if (fontChangeListener != null) {
-			JFaceResources.getFontRegistry().removeListener(fontChangeListener);
-			fontChangeListener = null;
-		}
-		
-		// remove this window from a window manager if it has one
-		if (windowManager != null) {
-			windowManager.remove(this);
-			windowManager = null;
-		}
-
-		if (shell == null || shell.isDisposed()) {
-			return true;
-		}
-
-		// If we "close" the shell recursion will occur.
-		// Instead, we need to "dispose" the shell to remove it from the
-		// display.
-		shell.dispose();
-		shell = null;
-		contents = null;
-
-		return true;
-	}
-
-	/**
-	 * Configures the given shell in preparation for opening this window in it.
-	 * <p>
-	 * The default implementation of this framework method sets the shell's
-	 * image and gives it a grid layout. Subclasses may extend or reimplement.
-	 * </p>
-	 * 
-	 * @param newShell
-	 *            the shell
-	 */
-	protected void configureShell(Shell newShell) {
-
-		// The single image version of this code had a comment related to bug
-		// 46624,
-		// and some code that did nothing if the stored image was already
-		// disposed.
-		// The equivalent in the multi-image version seems to be to remove the
-		// disposed images from the array passed to the shell.
-		if (defaultImages != null && defaultImages.length > 0) {
-			ArrayList nonDisposedImages = new ArrayList(defaultImages.length);
-			for (int i = 0; i < defaultImages.length; ++i) {
-				if (defaultImages[i] != null && !defaultImages[i].isDisposed()) {
-					nonDisposedImages.add(defaultImages[i]);
-				}
-			}
-
-			if (nonDisposedImages.size() <= 0) {
-				System.err.println("Window.configureShell: images disposed"); //$NON-NLS-1$
-			} else {
-				Image[] array = new Image[nonDisposedImages.size()];
-				nonDisposedImages.toArray(array);
-				newShell.setImages(array);
-			}
-		}
-
-		Layout layout = getLayout();
-		if (layout != null) {
-			newShell.setLayout(layout);
-		}
-	}
-
-	/**
-	 * Creates the layout for the shell. The layout created here will be
-	 * attached to the composite passed into createContents. The default
-	 * implementation returns a GridLayout with no margins. Subclasses that
-	 * change the layout type by overriding this method should also override
-	 * createContents.
-	 * 
-	 * <p>
-	 * A return value of null indicates that no layout should be attached to the
-	 * composite. In this case, the layout may be attached within
-	 * createContents.
-	 * </p>
-	 * 
-	 * @return a newly created Layout or null if no layout should be attached.
-	 * @since 3.0
-	 */
-	protected Layout getLayout() {
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		return layout;
-	}
-
-	/**
-	 * Constrain the shell size to be no larger than the display bounds.
-	 * 
-	 * @since 2.0
-	 */
-	protected void constrainShellSize() {
-		// limit the shell size to the display size
-		Rectangle bounds = shell.getBounds();
-		Rectangle constrained = getConstrainedShellBounds(bounds);
-		if (!bounds.equals(constrained)) {
-			shell.setBounds(constrained);
-		}
-	}
-
-	/**
-	 * Creates this window's widgetry in a new top-level shell.
-	 * <p>
-	 * The default implementation of this framework method creates this window's
-	 * shell (by calling <code>createShell</code>), and its controls (by
-	 * calling <code>createContents</code>), then initializes this window's
-	 * shell bounds (by calling <code>initializeBounds</code>).
-	 * </p>
-	 */
-	public void create() {
-		shell = createShell();
-		contents = createContents(shell);
-
-		//initialize the bounds of the shell to that appropriate for the
-		// contents
-		initializeBounds();
-	}
-
-	/**
-	 * Creates and returns this window's contents. Subclasses may attach any
-	 * number of children to the parent. As a convenience, the return value of
-	 * this method will be remembered and returned by subsequent calls to
-	 * getContents(). Subclasses may modify the parent's layout if they overload
-	 * getLayout() to return null.
-	 * 
-	 * <p>
-	 * It is common practise to create and return a single composite that
-	 * contains the entire window contents.
-	 * </p>
-	 * 
-	 * <p>
-	 * The default implementation of this framework method creates an instance
-	 * of <code>Composite</code>. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite for the controls in this window. The type
-	 *            of layout used is determined by getLayout()
-	 * 
-	 * @return the control that will be returned by subsequent calls to
-	 *         getContents()
-	 */
-	protected Control createContents(Composite parent) {
-		// by default, just create a composite
-		return new Composite(parent, SWT.NONE);
-	}
-
-	/**
-	 * Creates and returns this window's shell.
-	 * <p>
-	 * The default implementation of this framework method creates a new shell
-	 * and configures it using <code/>configureShell</code>. Rather than
-	 * override this method, subclasses should instead override
-	 * <code/>configureShell</code>.
-	 * </p>
-	 * 
-	 * @return the shell
-	 */
-	protected final Shell createShell() {
-
-		Shell newParent = getParentShell();
-		if(newParent != null &&  newParent.isDisposed()){
-			parentShell = new SameShellProvider(null);
-			newParent = getParentShell();//Find a better parent
-		}
-		
-		//Create the shell
-		Shell newShell = new Shell(newParent, getShellStyle());
-
-		resizeListener = new Listener() {
-			public void handleEvent(Event e) {
-				resizeHasOccurred = true;
-			}
-		};
-
-		newShell.addListener(SWT.Resize, resizeListener);
-		newShell.setData(this);
-
-		//Add a listener
-		newShell.addShellListener(getShellListener());
-
-		//Set the layout
-		configureShell(newShell);
-
-		//Register for font changes
-		if (fontChangeListener == null) {
-			fontChangeListener = new FontChangeListener();
-		}
-		JFaceResources.getFontRegistry().addListener(fontChangeListener);
-
-		return newShell;
-	}
-
-	/**
-	 * Returns the top level control for this window. The parent of this control
-	 * is the shell.
-	 * 
-	 * @return the top level control, or <code>null</code> if this window's
-	 *         control has not been created yet
-	 */
-	protected Control getContents() {
-		return contents;
-	}
-
-	/**
-	 * Returns the default image. This is the image that will be used for
-	 * windows that have no shell image at the time they are opened. There is no
-	 * default image unless one is installed via <code>setDefaultImage</code>.
-	 * 
-	 * @return the default image, or <code>null</code> if none
-	 * @see #setDefaultImage
-	 */
-	public static Image getDefaultImage() {
-		return (defaultImages == null || defaultImages.length < 1) ? null
-				: defaultImages[0];
-	}
-
-	/**
-	 * Returns the array of default images to use for newly opened windows. It
-	 * is expected that the array will contain the same icon rendered at
-	 * different resolutions.
-	 * 
-	 * @see org.eclipse.swt.widgets.Decorations#setImages(org.eclipse.swt.graphics.Image[])
-	 * 
-	 * @return the array of images to be used when a new window is opened
-	 * @see #setDefaultImages
-	 * @since 3.0
-	 */
-	public static Image[] getDefaultImages() {
-		return (defaultImages == null ? new Image[0] : defaultImages);
-	}
-
-	/**
-	 * Returns the initial location to use for the shell. The default
-	 * implementation centers the shell horizontally (1/2 of the difference to
-	 * the left and 1/2 to the right) and vertically (1/3 above and 2/3 below)
-	 * relative to the parent shell, or display bounds if there is no parent
-	 * shell.
-	 * 
-	 * @param initialSize
-	 *            the initial size of the shell, as returned by
-	 *            <code>getInitialSize</code>.
-	 * @return the initial location of the shell
-	 */
-	protected Point getInitialLocation(Point initialSize) {
-		Composite parent = shell.getParent();
-
-		Monitor monitor = shell.getDisplay().getPrimaryMonitor();
-		if (parent != null) {
-			monitor = parent.getMonitor();
-		}
-
-		Rectangle monitorBounds = monitor.getClientArea();
-		Point centerPoint;
-		if (parent != null) {
-			centerPoint = Geometry.centerPoint(parent.getBounds());
-		} else {
-			centerPoint = Geometry.centerPoint(monitorBounds);
-		}
-
-		return new Point(centerPoint.x - (initialSize.x / 2), Math.max(
-				monitorBounds.y, Math.min(centerPoint.y
-						- (initialSize.y * 2 / 3), monitorBounds.y
-						+ monitorBounds.height - initialSize.y)));
-	}
-
-	/**
-	 * Returns the initial size to use for the shell. The default implementation
-	 * returns the preferred size of the shell, using
-	 * <code>Shell.computeSize(SWT.DEFAULT, SWT.DEFAULT, true)</code>.
-	 * 
-	 * @return the initial size of the shell
-	 */
-	protected Point getInitialSize() {
-		return shell.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-	}
-
-    /**
-     * Returns the most specific modal child from the given list of Shells. 
-     * 
-     * @param toSearch shells to search for modal children
-     * @return the most specific modal child, or null if none
-     * 
-     * @since 3.1
-     */
-    private static Shell getModalChild(Shell[] toSearch) {
-        int modal = SWT.APPLICATION_MODAL | SWT.SYSTEM_MODAL | SWT.PRIMARY_MODAL;
-        
-        for (int i = toSearch.length - 1; i >= 0; i--) {
-            Shell shell = toSearch[i];
-            
-            // Check if this shell has a modal child
-            Shell[] children = shell.getShells();
-            Shell modalChild = getModalChild(children);
-            if (modalChild != null) {
-                return modalChild;
-            }
-            
-            // If not, check if this shell is modal itself
-            if (shell.isVisible() && (shell.getStyle() & modal) != 0) {
-                return shell;
-            }
-        }
-        
-        return null;
-    }
-    
-	/**
-	 * Returns parent shell, under which this window's shell is created.
-	 * 
-	 * @return the parent shell, or <code>null</code> if there is no parent
-	 *         shell
-	 */
-	protected Shell getParentShell() {
-        Shell parent = parentShell.getShell();
-        
-        int modal = SWT.APPLICATION_MODAL | SWT.SYSTEM_MODAL | SWT.PRIMARY_MODAL;
-        
-        if ((getShellStyle() & modal) != 0) {
-            // If this is a modal shell with no parent, pick a shell using defaultModalParent.
-            if (parent == null) {
-                parent = defaultModalParent.getShell();
-            }
-        }
-        
-        return parent;
-	}
-
-	/**
-	 * Returns this window's return code. A window's return codes are
-	 * window-specific, although two standard return codes are predefined:
-	 * <code>OK</code> and <code>CANCEL</code>.
-	 * 
-	 * @return the return code
-	 */
-	public int getReturnCode() {
-		return returnCode;
-	}
-
-	/**
-	 * Returns this window's shell.
-	 * 
-	 * @return this window's shell, or <code>null</code> if this window's
-	 *         shell has not been created yet
-	 */
-	public Shell getShell() {
-		return shell;
-	}
-
-	/**
-	 * Returns a shell listener. This shell listener gets registered with this
-	 * window's shell.
-	 * <p>
-	 * The default implementation of this framework method returns a new
-	 * listener that makes this window the active window for its window manager
-	 * (if it has one) when the shell is activated, and calls the framework
-	 * method <code>handleShellCloseEvent</code> when the shell is closed.
-	 * Subclasses may extend or reimplement.
-	 * </p>
-	 * 
-	 * @return a shell listener
-	 */
-	protected ShellListener getShellListener() {
-		return new ShellAdapter() {
-			public void shellClosed(ShellEvent event) {
-				event.doit = false; // don't close now
-				if (canHandleShellCloseEvent()) {
-					handleShellCloseEvent();
-				}
-			}
-		};
-	}
-
-	/**
-	 * Returns the shell style bits.
-	 * <p>
-	 * The default value is <code>SWT.CLOSE|SWT.MIN|SWT.MAX|SWT.RESIZE</code>.
-	 * Subclassers should call <code>setShellStyle</code> to change this
-	 * value, rather than overriding this method.
-	 * </p>
-	 * 
-	 * @return the shell style bits
-	 */
-	protected int getShellStyle() {
-		return shellStyle;
-	}
-
-	/**
-	 * Returns the window manager of this window.
-	 * 
-	 * @return the WindowManager, or <code>null</code> if none
-	 */
-	public WindowManager getWindowManager() {
-		return windowManager;
-	}
-
-	/**
-	 * Notifies of a font property change.
-	 * <p>
-	 * The default implementation of this framework method does nothing.
-	 * Subclasses may reimplement.
-	 * </p>
-	 * 
-	 * @param event
-	 *            the property change event detailing what changed
-	 */
-	protected void handleFontChange(PropertyChangeEvent event) {
-		// do nothing
-	}
-
-	/**
-	 * Notifies that the window's close button was pressed, the close menu was
-	 * selected, or the ESCAPE key pressed.
-	 * <p>
-	 * The default implementation of this framework method sets the window's
-	 * return code to <code>CANCEL</code> and closes the window using
-	 * <code>close</code>. Subclasses may extend or reimplement.
-	 * </p>
-	 */
-	protected void handleShellCloseEvent() {
-		setReturnCode(CANCEL);
-		close();
-	}
-
-	/**
-	 * Initializes the location and size of this window's SWT shell after it has
-	 * been created.
-	 * <p>
-	 * This framework method is called by the <code>create</code> framework
-	 * method. The default implementation calls <code>getInitialSize</code>
-	 * and <code>getInitialLocation</code> and passes the results to
-	 * <code>Shell.setBounds</code>. This is only done if the bounds of the
-	 * shell have not already been modified. Subclasses may extend or
-	 * reimplement.
-	 * </p>
-	 */
-	protected void initializeBounds() {
-		if (resizeListener != null) {
-			shell.removeListener(SWT.Resize, resizeListener);
-		}
-		if (resizeHasOccurred) { // Check if shell size has been set already.
-			return;
-		}
-
-		Point size = getInitialSize();
-		Point location = getInitialLocation(size);
-		shell.setBounds(getConstrainedShellBounds(new Rectangle(location.x,
-				location.y, size.x, size.y)));
-	}
-
-	/**
-	 * Opens this window, creating it first if it has not yet been created.
-	 * <p>
-	 * If this window has been configured to block on open (
-	 * <code>setBlockOnOpen</code>), this method waits until the window is
-	 * closed by the end user, and then it returns the window's return code;
-	 * otherwise, this method returns immediately. A window's return codes are
-	 * window-specific, although two standard return codes are predefined:
-	 * <code>OK</code> and <code>CANCEL</code>.
-	 * </p>
-	 * 
-	 * @return the return code
-	 * 
-	 * @see #create()
-	 */
-	public int open() {
-        
-		if (shell == null || shell.isDisposed()) {
-            shell = null;
-			// create the window
-			create();
-		}
-
-		// limit the shell size to the display size
-		constrainShellSize();
-
-		// open the window
-		shell.open();
-
-		// run the event loop if specified
-		if (block) {
-			runEventLoop(shell);
-		}
-
-		return returnCode;
-	}
-
-	/**
-	 * Runs the event loop for the given shell.
-	 * 
-	 * @param loopShell
-	 *            the shell
-	 */
-	private void runEventLoop(Shell loopShell) {
-
-		//Use the display provided by the shell if possible
-		Display display;
-		if (shell == null) {
-			display = Display.getCurrent();
-		} else {
-			display = loopShell.getDisplay();
-		}
-
-		while (loopShell != null && !loopShell.isDisposed()) {
-			try {
-				if (!display.readAndDispatch()) {
-					display.sleep();
-				}
-			} catch (Throwable e) {
-				exceptionHandler.handleException(e);
-			}
-		}
-		display.update();
-	}
-
-	/**
-	 * Sets whether the <code>open</code> method should block until the window
-	 * closes.
-	 * 
-	 * @param shouldBlock
-	 *            <code>true</code> if the <code>open</code> method should
-	 *            not return until the window closes, and <code>false</code>
-	 *            if the <code>open</code> method should return immediately
-	 */
-	public void setBlockOnOpen(boolean shouldBlock) {
-		block = shouldBlock;
-	}
-
-	/**
-	 * Sets the default image. This is the image that will be used for windows
-	 * that have no shell image at the time they are opened. There is no default
-	 * image unless one is installed via this method.
-	 * 
-	 * @param image
-	 *            the default image, or <code>null</code> if none
-	 */
-	public static void setDefaultImage(Image image) {
-		defaultImages = image == null ? null : new Image[] { image };
-	}
-
-	/**
-	 * Sets the array of default images to use for newly opened windows. It is
-	 * expected that the array will contain the same icon rendered at different
-	 * resolutions.
-	 * 
-	 * @see org.eclipse.swt.widgets.Decorations#setImages(org.eclipse.swt.graphics.Image[])
-	 * 
-	 * @param images
-	 *            the array of images to be used when this window is opened
-	 * @since 3.0
-	 */
-	public static void setDefaultImages(Image[] images) {
-		Image[] newArray = new Image[images.length];
-		System.arraycopy(images, 0, newArray, 0, newArray.length);
-		defaultImages = newArray;
-	}
-	
-	/**
-     * Changes the parent shell. This is only safe to use when the shell is not
-     * yet realized (i.e., created). Once the shell is created, it must be
-     * disposed (i.e., closed) before this method can be called.
-     * 
-     * @param newParentShell
-     *            The new parent shell; this value may be <code>null</code> if
-     *            there is to be no parent.
-     * @since 3.1
-     */
-    protected void setParentShell(final Shell newParentShell) {
-        Assert.isTrue((shell == null), "There must not be an existing shell."); //$NON-NLS-1$
-        parentShell = new SameShellProvider(newParentShell);
-    }
-
-	/**
-	 * Sets this window's return code. The return code is automatically returned
-	 * by <code>open</code> if block on open is enabled. For non-blocking
-	 * opens, the return code needs to be retrieved manually using
-	 * <code>getReturnCode</code>.
-	 * 
-	 * @param code
-	 *            the return code
-	 */
-	protected void setReturnCode(int code) {
-		returnCode = code;
-	}
-
-	/**
-	 * Returns the monitor whose client area contains the given point. If no
-	 * monitor contains the point, returns the monitor that is closest to the
-	 * point. If this is ever made public, it should be moved into a separate
-	 * utility class.
-	 * 
-	 * @param toSearch
-	 *            point to find (display coordinates)
-	 * @param toFind
-	 *            point to find (display coordinates)
-	 * @return the montor closest to the given point
-	 */
-	private static Monitor getClosestMonitor(Display toSearch, Point toFind) {
-		int closest = Integer.MAX_VALUE;
-
-		Monitor[] monitors = toSearch.getMonitors();
-		Monitor result = monitors[0];
-
-		for (int idx = 0; idx < monitors.length; idx++) {
-			Monitor current = monitors[idx];
-
-			Rectangle clientArea = current.getClientArea();
-
-			if (clientArea.contains(toFind)) {
-				return current;
-			}
-
-			int distance = Geometry.distanceSquared(Geometry
-					.centerPoint(clientArea), toFind);
-			if (distance < closest) {
-				closest = distance;
-				result = current;
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	 * Given the desired position of the window, this method returns an adjusted
-	 * position such that the window is no larger than its monitor, and does not
-	 * extend beyond the edge of the monitor. This is used for computing the
-	 * initial window position, and subclasses can use this as a utility method
-	 * if they want to limit the region in which the window may be moved.
-	 * 
-	 * @param preferredSize
-	 *            the preferred position of the window
-	 * @return a rectangle as close as possible to preferredSize that does not
-	 *         extend outside the monitor
-	 * 
-	 * @since 3.0
-	 */
-	protected Rectangle getConstrainedShellBounds(Rectangle preferredSize) {
-		Rectangle result = new Rectangle(preferredSize.x, preferredSize.y,
-				preferredSize.width, preferredSize.height);
-
-		Monitor mon = getClosestMonitor(getShell().getDisplay(), Geometry
-				.centerPoint(result));
-
-		Rectangle bounds = mon.getClientArea();
-
-		if (result.height > bounds.height) {
-			result.height = bounds.height;
-		}
-
-		if (result.width > bounds.width) {
-			result.width = bounds.width;
-		}
-
-		result.x = Math.max(bounds.x, Math.min(result.x, bounds.x
-				+ bounds.width - result.width));
-		result.y = Math.max(bounds.y, Math.min(result.y, bounds.y
-				+ bounds.height - result.height));
-
-		return result;
-	}
-
-	/**
-	 * Sets the shell style bits. This method has no effect after the shell is
-	 * created.
-	 * <p>
-	 * The shell style bits are used by the framework method
-	 * <code>createShell</code> when creating this window's shell.
-	 * </p>
-	 * 
-	 * @param newShellStyle
-	 *            the new shell style bits
-	 */
-	protected void setShellStyle(int newShellStyle) {
-		shellStyle = newShellStyle;
-	}
-
-	/**
-	 * Sets the window manager of this window.
-	 * <p>
-	 * Note that this method is used by <code>WindowManager</code> to maintain
-	 * a backpointer. Clients must not call the method directly.
-	 * </p>
-	 * 
-	 * @param manager
-	 *            the window manager, or <code>null</code> if none
-	 */
-	public void setWindowManager(WindowManager manager) {
-		windowManager = manager;
-
-		// Code to detect invalid usage
-
-		if (manager != null) {
-			Window[] windows = manager.getWindows();
-			for (int i = 0; i < windows.length; i++) {
-				if (windows[i] == this) {
-					return;
-				}
-			}
-			manager.add(this);
-		}
-	}
-
-	/**
-	 * Sets the exception handler for this application.
-	 * <p>
-	 * Note that the handler may only be set once.  Subsequent calls to this method will be
-	 * ignored.
-	 * <p>
-	 * 
-	 * @param handler
-	 *            the exception handler for the application.
-	 */
-	public static void setExceptionHandler(IExceptionHandler handler) {
-		if (exceptionHandler instanceof DefaultExceptionHandler) {
-			exceptionHandler = handler;
-		}
-	}
-    
-    /**
-     * Sets the default parent for modal Windows. This will be used to locate
-     * the parent for any modal Window constructed with a null parent.
-     * 
-     * @param provider shell provider that will be used to locate the parent shell
-     * whenever a Window is created with a null parent
-     * @since 3.1
-     */
-    public static void setDefaultModalParent(IShellProvider provider) {
-        defaultModalParent = provider;
-    }
-    
-	/**
-	 * Gets the default orientation for windows. If it is not
-	 * set the default value will be unspecified (SWT#NONE).
-	 * 
-	 * 
-	 * @return SWT#NONE, SWT.RIGHT_TO_LEFT or SWT.LEFT_TO_RIGHT
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 * @see SWT#NONE
-	 * @since 3.1
-	 */
-	public static int getDefaultOrientation() {
-		return orientation;
-
-	}
-
-	/**
-	 * Sets the default orientation of windows.
-	 * @param defaultOrientation one of 
-	 * 	SWT#RIGHT_TO_LEFT, SWT#LEFT_TO_RIGHT ,SWT#NONE
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 * @see SWT#NONE
-	 * @since 3.1
-	 */
-	public static void setDefaultOrientation(int defaultOrientation) {
-		orientation = defaultOrientation;
-		
-	}
-
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/WindowManager.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/WindowManager.java
deleted file mode 100644
index 5500d56..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/WindowManager.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.window;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A manager for a group of windows. Window managers are an optional JFace 
- * feature used in applications which create many different windows (dialogs,
- * wizards, etc.) in addition to a main window. A window manager can be used to
- * remember all the windows that an application has created (independent of 
- * whether they are presently open or closed). There can be several window
- * managers, and they can be arranged into a tree. This kind of organization 
- * makes it simple to close whole subgroupings of windows.
- * <p>
- * Creating a window manager is as simple as creating an instance of 
- * <code>WindowManager</code>. Associating a window with a window manager is 
- * done with <code>WindowManager.add(Window)</code>. A window is automatically
- * removed from its window manager as a side effect of closing the window.
- * </p>
- *
- * @see Window
- */
-public class WindowManager {
-
-    /**
-     * List of windows managed by this window manager
-     * (element type: <code>Window</code>).
-     */
-    private ArrayList windows = new ArrayList();
-
-    /**
-     * List of window managers who have this window manager
-     * as their parent (element type: <code>WindowManager</code>).
-     */
-    private List subManagers;
-
-    /**
-     * Creates an empty window manager without a parent window
-     * manager (that is, a root window manager).
-     */
-    public WindowManager() {
-    }
-
-    /**
-     * Creates an empty window manager with the given
-     * window manager as parent.
-     *
-     * @param parent the parent window manager
-     */
-    public WindowManager(WindowManager parent) {
-        Assert.isNotNull(parent);
-        parent.addWindowManager(this);
-    }
-
-    /**
-     * Adds the given window to the set of windows managed by
-     * this window manager. Does nothing is this window is
-     * already managed by this window manager.
-     *
-     * @param window the window
-     */
-    public void add(Window window) {
-        if (!windows.contains(window)) {
-            windows.add(window);
-            window.setWindowManager(this);
-        }
-    }
-
-    /**
-     * Adds the given window manager to the list of
-     * window managers that have this one as a parent.
-     * </p>
-     * @param wm the child window manager
-     */
-    private void addWindowManager(WindowManager wm) {
-        if (subManagers == null) {
-			subManagers = new ArrayList();
-		}
-        if (!subManagers.contains(wm)) {
-            subManagers.add(wm);
-        }
-    }
-
-    /**
-     * Attempts to close all windows managed by this window manager,
-     * as well as windows managed by any descendent window managers.
-     *
-     * @return <code>true</code> if all windows were sucessfully closed, 
-     * and <code>false</code> if any window refused to close
-     */
-    public boolean close() {
-        List t = (List) windows.clone(); // make iteration robust 
-        Iterator e = t.iterator();
-        while (e.hasNext()) {
-            Window window = (Window) e.next();
-            boolean closed = window.close();
-            if (!closed) {
-				return false;
-			}
-        }
-        if (subManagers != null) {
-            e = subManagers.iterator();
-            while (e.hasNext()) {
-                WindowManager wm = (WindowManager) e.next();
-                boolean closed = wm.close();
-                if (!closed) {
-					return false;
-				}
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns this window manager's number of windows
-     * 
-     * @return the number of windows
-     * @since 3.0
-     */
-    public int getWindowCount() {
-        return windows.size();
-    }
-
-    /**
-     * Returns this window manager's set of windows.
-     *
-     * @return a possibly empty list of window
-     */
-    public Window[] getWindows() {
-        Window bs[] = new Window[windows.size()];
-        windows.toArray(bs);
-        return bs;
-    }
-
-    /**
-     * Removes the given window from the set of windows managed by
-     * this window manager. Does nothing is this window is
-     * not managed by this window manager.
-     *
-     * @param window the window
-     */
-    public final void remove(Window window) {
-        if (windows.contains(window)) {
-            windows.remove(window);
-            window.setWindowManager(null);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/window/package.html
deleted file mode 100644
index 88fed90..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/window/package.html
+++ /dev/null
@@ -1,31 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides a general framework for creating and managing
-windows.
-<h2>
-Package Specification</h2>
-A JFace window is an object that has no visual representation (no widgets)
-until it is told to open. All JFace windows, including dialogs, are instances
-of the abstract class <tt>Window</tt> or a subclass. This package contains
-the base window classes:
-<tt>Window</tt> itself, which provides support
-for a basic windows; and <tt>ApplicationWindow</tt>, which provides ready-to-use
-support for a high-level "main window" with standard menus, tool bar, and
-status line. Both of these classes may be subclassed to define additional
-types of window as required.
-<p>This package also contains <tt>WindowManager</tt>, instance of which
-are used for managing a group of windows. Window managers are useful in
-applications which create many different windows (dialogs, wizards, etc.)
-in addition to a main window. Window managers are not required for simple
-applications.
-<p>The only global state maintained by classes in this package is a default
-image for window title bars (<tt>Window.setDefaultImage</tt>).
-</body>
-</html>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizard.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizard.java
deleted file mode 100644
index 22602ac..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizard.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Interface for a wizard.  A wizard maintains a list of wizard pages,
- * stacked on top of each other in card layout fashion.
- * <p>
- * The class <code>Wizard</code> provides an abstract implementation
- * of this interface. However, clients are also free to implement this 
- * interface if <code>Wizard</code> does not suit their needs.
- * </p>
- * @see Wizard
- */
-public interface IWizard {
-    /**
-     * Adds any last-minute pages to this wizard.
-     * <p>
-     * This method is called just before the wizard becomes visible, to give the 
-     * wizard the opportunity to add any lazily created pages.
-     * </p>
-     */
-    public void addPages();
-
-    /**
-     * Returns whether this wizard could be finished without further user
-     * interaction.
-     * <p>
-     * The result of this method is typically used by the wizard container to enable
-     * or disable the Finish button.
-     * </p>
-     *
-     * @return <code>true</code> if the wizard could be finished,
-     *   and <code>false</code> otherwise
-     */
-    public boolean canFinish();
-
-    /**
-     * Creates this wizard's controls in the given parent control.
-     * <p>
-     * The wizard container calls this method to create the controls
-     * for the wizard's pages before the wizard is opened. This allows
-     * the wizard to size correctly; otherwise a resize may occur when
-     * moving to a new page.
-     * </p>
-     *
-     * @param pageContainer the parent control
-     */
-    public void createPageControls(Composite pageContainer);
-
-    /**
-     * Disposes of this wizard and frees all SWT resources.
-     */
-    public void dispose();
-
-    /**
-     * Returns the container of this wizard.
-     *
-     * @return the wizard container, or <code>null</code> if this
-     *   wizard has yet to be added to a container
-     */
-    public IWizardContainer getContainer();
-
-    /**
-     * Returns the default page image for this wizard.
-     * <p>
-     * This image can be used for pages which do not
-     * supply their own image.
-     * </p>
-     *
-     * @return the default page image
-     */
-    public Image getDefaultPageImage();
-
-    /**
-     * Returns the dialog settings for this wizard.
-     * <p>
-     * The dialog store is used to record state between
-     * wizard invocations (for example, radio button selections,
-     * last directory, etc.).
-     * </p>
-     *
-     * @return the dialog settings, or <code>null</code> if none
-     */
-    public IDialogSettings getDialogSettings();
-
-    /**
-     * Returns the successor of the given page.
-     * <p>
-     * This method is typically called by a wizard page
-     * </p>
-     *
-     * @param page the page
-     * @return the next page, or <code>null</code> if none
-     */
-    public IWizardPage getNextPage(IWizardPage page);
-
-    /**
-     * Returns the wizard page with the given name belonging to this wizard.
-     *
-     * @param pageName the name of the wizard page
-     * @return the wizard page with the given name, or <code>null</code> if none
-     */
-    public IWizardPage getPage(String pageName);
-
-    /**
-     * Returns the number of pages in this wizard.
-     *
-     * @return the number of wizard pages
-     */
-    public int getPageCount();
-
-    /**
-     * Returns all the pages in this wizard.
-     *
-     * @return a list of pages
-     */
-    public IWizardPage[] getPages();
-
-    /**
-     * Returns the predecessor of the given page.
-     * <p>
-     * This method is typically called by a wizard page
-     * </p>
-     *
-     * @param page the page
-     * @return the previous page, or <code>null</code> if none
-     */
-    public IWizardPage getPreviousPage(IWizardPage page);
-
-    /**
-     * Returns the first page to be shown in this wizard.
-     *
-     * @return the first wizard page
-     */
-    public IWizardPage getStartingPage();
-
-    /**
-     * Returns the title bar color for this wizard.
-     *
-     * @return the title bar color
-     */
-    public RGB getTitleBarColor();
-
-    /**
-     * Returns the window title string for this wizard.
-     *
-     * @return the window title string, or <code>null</code> for no title
-     */
-    public String getWindowTitle();
-
-    /**
-     * Returns whether help is available for this wizard.
-     * <p>
-     * The result of this method is typically used by the container to
-     * show or hide the Help button.
-     * </p>
-     *
-     * @return <code>true</code> if help is available,
-     *   and <code>false</code> if this wizard is helpless
-     */
-    public boolean isHelpAvailable();
-
-    /**
-     * Returns whether this wizard needs Previous and Next buttons.
-     * <p>
-     * The result of this method is typically used by the container.
-     * </p>
-     *
-     * @return <code>true</code> if Previous and Next buttons are required,
-     *   and <code>false</code> if none are needed
-     */
-    public boolean needsPreviousAndNextButtons();
-
-    /**
-     * Returns whether this wizard needs a progress monitor.
-     * <p>
-     * The result of this method is typically used by the container.
-     * </p>
-     *
-     * @return <code>true</code> if a progress monitor is required,
-     *   and <code>false</code> if none is needed
-     */
-    public boolean needsProgressMonitor();
-
-    /**
-     * Performs any actions appropriate in response to the user 
-     * having pressed the Cancel button, or refuse if canceling
-     * now is not permitted.
-     *
-     * @return <code>true</code> to indicate the cancel request
-     *   was accepted, and <code>false</code> to indicate
-     *   that the cancel request was refused
-     */
-    public boolean performCancel();
-
-    /**
-     * Performs any actions appropriate in response to the user 
-     * having pressed the Finish button, or refuse if finishing
-     * now is not permitted.
-     *
-     * Normally this method is only called on the container's
-     * current wizard. However if the current wizard is a nested wizard
-     * this method will also be called on all wizards in its parent chain.
-     * Such parents may use this notification to save state etc. However,
-     * the value the parents return from this method is ignored.
-     *
-     * @return <code>true</code> to indicate the finish request
-     *   was accepted, and <code>false</code> to indicate
-     *   that the finish request was refused
-     */
-    public boolean performFinish();
-
-    /**
-     * Sets or clears the container of this wizard.
-     *
-     * @param wizardContainer the wizard container, or <code>null</code> 
-     */
-    public void setContainer(IWizardContainer wizardContainer);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer.java
deleted file mode 100644
index 6708f654..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Interface for containers that can host a wizard. It displays
- * wizard pages, at most one of which is considered
- * the current page. <code>getCurrentPage</code> returns the
- * current page; <code>showPage</code> programmatically changes the
- * the current page. Note that the pages need not all belong
- * to the same wizard.
- * <p>
- * The class <code>WizardDialog</code> provides a fully functional 
- * implementation of this interface which will meet the needs of
- * most clients. However, clients are also free to implement this 
- * interface if <code>WizardDialog</code> does not suit their needs.
- * </p>
- * <p>
- * Implementors are responsible for disposing of their wizards.
- * </p>
- * 
- * @see org.eclipse.jface.wizard.IWizardContainer2
- */
-public interface IWizardContainer extends IRunnableContext {
-    /**
-     * Returns the current wizard page for this container.
-     *
-     * @return the current wizard page, or <code>null</code> if the container
-     *   is not yet showing the wizard
-     * @see #showPage
-     */
-    public IWizardPage getCurrentPage();
-
-    /**
-     * Returns the shell for this wizard container.
-     *
-     * @return the shell, or <code>null</code> if this wizard
-     *   container does not have a shell
-     */
-    public Shell getShell();
-
-    /**
-     * Makes the given page visible.
-     * <p>
-     * This method should not be use for normal page
-     * sequencing (back, next) which is handled by the 
-     * container itself. It may, however, be used to
-     * move to another page in response to some custom
-     * action such as double clicking in a list.
-     * </p>
-     *
-     * @param page the page to show
-     * @see #getCurrentPage
-     */
-    public void showPage(IWizardPage page);
-
-    /**
-     * Adjusts the enable state of the Back, Next, and Finish 
-     * buttons to reflect the state of the currently active 
-     * page in this container.
-     * <p>
-     * This method is called by the container itself
-     * when its wizard page changes and may be called
-     * by the page at other times to force a button state
-     * update.
-     * </p>
-     */
-    public void updateButtons();
-
-    /**
-     * Updates the message (or error message) shown in the message line to 
-     * reflect the state of the currently active page in this container.
-     * <p>
-     * This method is called by the container itself
-     * when its wizard page changes and may be called
-     * by the page at other times to force a message 
-     * update.
-     * </p>
-     */
-    public void updateMessage();
-
-    /**
-     * Updates the title bar (title, description, and image) to 
-     * reflect the state of the currently active page in this container.
-     * <p>
-     * This method is called by the container itself
-     * when its wizard page changes and may be called
-     * by the page at other times to force a title bar 
-     * update.
-     * </p>
-     */
-    public void updateTitleBar();
-
-    /**
-     * Updates the window title to reflect the state of the current wizard.
-     * <p>
-     * This method is called by the container itself
-     * when its wizard changes and may be called
-     * by the wizard at other times to force a window 
-     * title change.
-     * </p>
-     */
-    public void updateWindowTitle();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer2.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer2.java
deleted file mode 100644
index 042c73d..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardContainer2.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.wizard;
-
-/**
- * <p><code>IWizardContainer2</code> is a supplement to 
- * <code>IWizardContainer</code> that adds a method for updating the size of 
- * the wizard shell based on the contents of the current page.</p>
- * 
- * <p>The class <code>WizardDialog</code> provides a fully functional 
- * implementation of this interface which will meet the needs of
- * most clients. However, clients are also free to implement this 
- * interface if <code>WizardDialog</code> does not suit their needs.
- * </p>
- * 
- * @see org.eclipse.jface.wizard.IWizardContainer
- * @since 3.0
- */
-public interface IWizardContainer2 extends IWizardContainer {
-
-    /**
-     * Updates the window size to reflect the state of the current wizard.
-     * <p>
-     * This method is called by the container itself
-     * when its wizard changes and may be called
-     * by the wizard at other times to force a window 
-     * size change.
-     * </p>
-     */
-    public void updateSize();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardNode.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardNode.java
deleted file mode 100644
index 5fd15a6..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardNode.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import org.eclipse.swt.graphics.Point;
-
-/**
- * A wizard node acts a placeholder for a real wizard in a wizard 
- * selection page. It is done in such a way that the actual creation
- * of a wizard can be deferred until the wizard is really needed.
- * <p>
- * When a wizard node comes into existence, its wizard may or may
- * not have been created yet; <code>isContentCreated</code> can
- * be used to determine which. A node may be asked for its wizard
- * using <code>getWizard</code>, which will force it to be created
- * if required. Once the client is done with a wizard node, its
- * <code>dispose</code>method must be called to free up the wizard;
- * once disposes, the node should no longer be used.
- * </p>
- * <p>
- * This interface should be implemented by clients wishing to
- * support this kind of wizard placeholder in a wizard selection page.
- * </p>
- *
- * @see WizardSelectionPage
- */
-public interface IWizardNode {
-    /**
-     * Disposes the wizard managed by this node. Does nothing
-     * if the wizard has not been created.
-     * <p>
-     * This is the last message that should ever be sent to this node.
-     * </p>
-     */
-    public void dispose();
-
-    /**
-     * Returns the extent of the wizard for this node.
-     * <p>
-     * If the content has not yet been created, calling this method
-     * does not trigger the creation of the wizard. This allows
-     * this node to suggest an extent in advance of actually creating 
-     * the wizard.
-     * </p>
-     *
-     * @return the extent, or <code>(-1, -1)</code> extent is not known
-     */
-    public Point getExtent();
-
-    /**
-     * Returns the wizard this node stands for.
-     * <p>
-     * If the content has not been created beforehand, calling this
-     * method triggers the creation of the wizard and caches it so that
-     * the identical wizard object is returned on subsequent calls.
-     * </p>
-     *
-     * @return the wizard
-     */
-    public IWizard getWizard();
-
-    /**
-     * Returns whether a wizard has been created for this node.
-     *
-     * @return <code>true</code> if a wizard has been created,
-     *   and <code>false</code> otherwise
-     */
-    public boolean isContentCreated();
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardPage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardPage.java
deleted file mode 100644
index 1f3e9d2..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/IWizardPage.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import org.eclipse.jface.dialogs.IDialogPage;
-
-/**
- * Interface for a wizard page.
- * <p>
- * The class <code>WizardPage</code> provides an abstract implementation
- * of this interface. However, clients are also free to implement this 
- * interface if <code>WizardPage</code> does not suit their needs.
- * </p>
- */
-public interface IWizardPage extends IDialogPage {
-    /**
-     * Returns whether the next page could be displayed.
-     *
-     * @return <code>true</code> if the next page could be displayed,
-     *   and <code>false</code> otherwise
-     */
-    public boolean canFlipToNextPage();
-
-    /**
-     * Returns this page's name.
-     *
-     * @return the name of this page
-     */
-    public String getName();
-
-    /**
-     * Returns the wizard page that would to be shown if the user was to
-     * press the Next button.
-     *
-     * @return the next wizard page, or <code>null</code> if none
-     */
-    public IWizardPage getNextPage();
-
-    /**
-     * Returns the wizard page that would to be shown if the user was to
-     * press the Back button.
-     *
-     * @return the previous wizard page, or <code>null</code> if none
-     */
-    public IWizardPage getPreviousPage();
-
-    /**
-     * Returns the wizard that hosts this wizard page.
-     *
-     * @return the wizard, or <code>null</code> if this page has not been
-     *   added to any wizard
-     * @see #setWizard
-     */
-    public IWizard getWizard();
-
-    /**
-     * Returns whether this page is complete or not.
-     * <p>
-     * This information is typically used by the wizard to decide
-     * when it is okay to finish.
-     * </p>
-     *
-     * @return <code>true</code> if this page is complete, and
-     *  <code>false</code> otherwise
-     */
-    public boolean isPageComplete();
-
-    /**
-     * Sets the wizard page that would typically be shown 
-     * if the user was to press the Back button.
-     * <p>
-     * This method is called by the container.
-     * </p>
-     *
-     * @param page the previous wizard page
-     */
-    public void setPreviousPage(IWizardPage page);
-
-    /**
-     * Sets the wizard that hosts this wizard page.
-     * Once established, a page's wizard cannot be changed
-     * to a different wizard.
-     *
-     * @param newWizard the wizard
-     * @see #getWizard
-     */
-    public void setWizard(IWizard newWizard);
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
deleted file mode 100644
index 9347caf..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/ProgressMonitorPart.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.ProgressIndicator;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-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.Layout;
-import org.eclipse.swt.widgets.Listener;
-
-/**
- * A standard implementation of an IProgressMonitor. It consists
- * of a label displaying the task and subtask name, and a
- * progress indicator to show progress. In contrast to
- * <code>ProgressMonitorDialog</code> this class only implements
- * <code>IProgressMonitor</code>.
- */
-public class ProgressMonitorPart extends Composite implements
-        IProgressMonitorWithBlocking {
-
-	/** the label */
-    protected Label fLabel;
-
-    /** the current task name */
-    protected String fTaskName;
-
-    /** the current sub task name */
-    protected String fSubTaskName;
-
-    /** the progress indicator */
-    protected ProgressIndicator fProgressIndicator;
-
-    /** the cancel component */
-    protected Control fCancelComponent;
-
-    /** true if canceled */
-    protected boolean fIsCanceled;
-
-    /** current blocked status */
-    protected IStatus blockedStatus;
-
-    /** the cancel lister attached to the cancel component */
-    protected Listener fCancelListener = new Listener() {
-        public void handleEvent(Event e) {
-            setCanceled(true);
-            if (fCancelComponent != null) {
-				fCancelComponent.setEnabled(false);
-			}
-        }
-    };
-
-    /**
-     * Creates a ProgressMonitorPart.
-     * @param parent The SWT parent of the part.
-     * @param layout The SWT grid bag layout used by the part. A client
-     * can supply the layout to control how the progress monitor part
-     * is layed out. If null is passed the part uses its default layout.
-     */
-    public ProgressMonitorPart(Composite parent, Layout layout) {
-        this(parent, layout, SWT.DEFAULT);
-    }
-
-    /**
-     * Creates a ProgressMonitorPart.
-     * @param parent The SWT parent of the part.
-     * @param layout The SWT grid bag layout used by the part. A client
-     * can supply the layout to control how the progress monitor part
-     * is layed out. If null is passed the part uses its default layout.
-     * @param progressIndicatorHeight The height of the progress indicator in pixel.
-     */
-    public ProgressMonitorPart(Composite parent, Layout layout,
-            int progressIndicatorHeight) {
-        super(parent, SWT.NONE);
-        initialize(layout, progressIndicatorHeight);
-    }
-
-    /**
-     * Attaches the progress monitor part to the given cancel
-     * component.
-     * @param cancelComponent the control whose selection will
-     * trigger a cancel
-     */
-    public void attachToCancelComponent(Control cancelComponent) {
-        Assert.isNotNull(cancelComponent);
-        fCancelComponent = cancelComponent;
-        fCancelComponent.addListener(SWT.Selection, fCancelListener);
-    }
-
-    /**
-     * Implements <code>IProgressMonitor.beginTask</code>.
-     * @see IProgressMonitor#beginTask(java.lang.String, int)
-     */
-    public void beginTask(String name, int totalWork) {
-        fTaskName = name;
-        updateLabel();
-        if (totalWork == IProgressMonitor.UNKNOWN || totalWork == 0) {
-            fProgressIndicator.beginAnimatedTask();
-        } else {
-            fProgressIndicator.beginTask(totalWork);
-        }
-    }
-
-    /**
-     * Implements <code>IProgressMonitor.done</code>.
-     * @see IProgressMonitor#done()
-     */
-    public void done() {
-        fLabel.setText("");//$NON-NLS-1$
-        fProgressIndicator.sendRemainingWork();
-        fProgressIndicator.done();
-    }
-
-    /**
-     * Escapes any occurrence of '&' in the given String so that
-     * it is not considered as a mnemonic
-     * character in SWT ToolItems, MenuItems, Button and Labels.
-     * @param in the original String
-     * @return The converted String
-     */
-    protected static String escapeMetaCharacters(String in) {
-        if (in == null || in.indexOf('&') < 0) {
-			return in;
-		}
-        int length = in.length();
-        StringBuffer out = new StringBuffer(length + 1);
-        for (int i = 0; i < length; i++) {
-            char c = in.charAt(i);
-            if (c == '&') {
-				out.append("&&");//$NON-NLS-1$
-			} else {
-				out.append(c);
-			}
-        }
-        return out.toString();
-    }
-
-    /**
-     * Creates the progress monitor's UI parts and layouts them
-     * according to the given layout. If the layout is <code>null</code>
-     * the part's default layout is used.
-     * @param layout The layout for the receiver.
-     * @param progressIndicatorHeight The suggested height of the indicator
-     */
-    protected void initialize(Layout layout, int progressIndicatorHeight) {
-        if (layout == null) {
-            GridLayout l = new GridLayout();
-            l.marginWidth = 0;
-            l.marginHeight = 0;
-            l.numColumns = 1;
-            layout = l;
-        }
-        setLayout(layout);
-
-        fLabel = new Label(this, SWT.LEFT);
-        fLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        if (progressIndicatorHeight == SWT.DEFAULT) {
-            GC gc = new GC(fLabel);
-            FontMetrics fm = gc.getFontMetrics();
-            gc.dispose();
-            progressIndicatorHeight = fm.getHeight();
-        }
-
-        fProgressIndicator = new ProgressIndicator(this);
-        GridData gd = new GridData();
-        gd.horizontalAlignment = GridData.FILL;
-        gd.grabExcessHorizontalSpace = true;
-        gd.verticalAlignment = GridData.CENTER;
-        gd.heightHint = progressIndicatorHeight;
-        fProgressIndicator.setLayoutData(gd);
-    }
-
-    /**
-     * Implements <code>IProgressMonitor.internalWorked</code>.
-     * @see IProgressMonitor#internalWorked(double)
-     */
-    public void internalWorked(double work) {
-        fProgressIndicator.worked(work);
-    }
-
-    /**
-     * Implements <code>IProgressMonitor.isCanceled</code>.
-     * @see IProgressMonitor#isCanceled()
-     */
-    public boolean isCanceled() {
-        return fIsCanceled;
-    }
-
-    /**
-     * Detach the progress monitor part from the given cancel
-     * component
-     * @param cc
-     */
-    public void removeFromCancelComponent(Control cc) {
-        Assert.isTrue(fCancelComponent == cc && fCancelComponent != null);
-        fCancelComponent.removeListener(SWT.Selection, fCancelListener);
-        fCancelComponent = null;
-    }
-
-    /**
-     * Implements <code>IProgressMonitor.setCanceled</code>.
-     * @see IProgressMonitor#setCanceled(boolean)
-     */
-    public void setCanceled(boolean b) {
-        fIsCanceled = b;
-    }
-
-    /**
-     * Sets the progress monitor part's font.
-     */
-    public void setFont(Font font) {
-        super.setFont(font);
-        fLabel.setFont(font);
-        fProgressIndicator.setFont(font);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-     */
-    public void setTaskName(String name) {
-        fTaskName = name;
-        updateLabel();
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-     */
-    public void subTask(String name) {
-        fSubTaskName = name;
-        updateLabel();
-    }
-
-    /**
-     * Updates the label with the current task and subtask names.
-     */
-    protected void updateLabel() {
-        if (blockedStatus == null) {
-            String text = taskLabel();
-            fLabel.setText(text);
-        } else {
-			fLabel.setText(blockedStatus.getMessage());
-		}
-
-        //Force an update as we are in the UI Thread
-        fLabel.update();
-    }
-
-    /**
-     * Return the label for showing tasks
-     * @return String
-     */
-    private String taskLabel() {
-    	boolean hasTask= fTaskName != null && fTaskName.length() > 0;
-    	boolean hasSubtask= fSubTaskName != null && fSubTaskName.length() > 0;
-    	
-		if (hasTask) {
-			if (hasSubtask)
-				return escapeMetaCharacters(JFaceResources.format(
-    					"Set_SubTask", new Object[] { fTaskName, fSubTaskName }));//$NON-NLS-1$
-   			return escapeMetaCharacters(fTaskName);
-   			
-    	} else if (hasSubtask) {
-    		return escapeMetaCharacters(fSubTaskName);
-    	
-    	} else {
-    		return ""; //$NON-NLS-1$
-    	}
-    }
-
-    /**
-     * Implements <code>IProgressMonitor.worked</code>.
-     * @see IProgressMonitor#worked(int)
-     */
-    public void worked(int work) {
-        internalWorked(work);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-     */
-    public void clearBlocked() {
-        blockedStatus = null;
-        updateLabel();
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-     */
-    public void setBlocked(IStatus reason) {
-        blockedStatus = reason;
-        updateLabel();
-
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/Wizard.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/Wizard.java
deleted file mode 100644
index 3484781..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/Wizard.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * An abstract base implementation of a wizard. A typical client subclasses
- * <code>Wizard</code> to implement a particular wizard.
- * <p>
- * Subclasses may call the following methods to configure the wizard:
- * <ul>
- * <li><code>addPage</code></li>
- * <li><code>setHelpAvailable</code></li>
- * <li><code>setDefaultPageImageDescriptor</code></li>
- * <li><code>setDialogSettings</code></li>
- * <li><code>setNeedsProgressMonitor</code></li>
- * <li><code>setTitleBarColor</code></li>
- * <li><code>setWindowTitle</code></li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may override these methods if required:
- * <ul>
- * <li>reimplement <code>createPageControls</code></li>
- * <li>reimplement <code>performCancel</code></li>
- * <li>extend <code>addPages</code></li>
- * <li>reimplement <code>performFinish</code></li>
- * <li>extend <code>dispose</code></li>
- * </ul>
- * </p>
- * <p>
- * Note that clients are free to implement <code>IWizard</code> from scratch
- * instead of subclassing <code>Wizard</code>. Correct implementations of
- * <code>IWizard</code> will work with any correct implementation of
- * <code>IWizardPage</code>.
- * </p>
- */
-public abstract class Wizard implements IWizard {
-    /**
-     * Image registry key of the default image for wizard pages (value
-     * <code>"org.eclipse.jface.wizard.Wizard.pageImage"</code>).
-     */
-    public static final String DEFAULT_IMAGE = "org.eclipse.jface.wizard.Wizard.pageImage";//$NON-NLS-1$
-
-    /**
-     * The wizard container this wizard belongs to; <code>null</code> if none.
-     */
-    private IWizardContainer container = null;
-
-    /**
-     * This wizard's list of pages (element type: <code>IWizardPage</code>).
-     */
-    private List pages = new ArrayList();
-
-    /**
-     * Indicates whether this wizard needs a progress monitor.
-     */
-    private boolean needsProgressMonitor = false;
-
-    /**
-     * Indicates whether this wizard needs previous and next buttons even if the
-     * wizard has only one page.
-     */
-    private boolean forcePreviousAndNextButtons = false;
-
-    /**
-     * Indicates whether this wizard supports help.
-     */
-    private boolean isHelpAvailable = false;
-
-    /**
-     * The default page image for pages without one of their one;
-     * <code>null</code> if none.
-     */
-    private Image defaultImage = null;
-
-    /**
-     * The default page image descriptor, used for creating a default page image
-     * if required; <code>null</code> if none.
-     */
-    private ImageDescriptor defaultImageDescriptor = JFaceResources.getImageRegistry().getDescriptor(DEFAULT_IMAGE);
-
-    /**
-     * The color of the wizard title bar; <code>null</code> if none.
-     */
-    private RGB titleBarColor = null;
-
-    /**
-     * The window title string for this wizard; <code>null</code> if none.
-     */
-    private String windowTitle = null;
-
-    /**
-     * The dialog settings for this wizard; <code>null</code> if none.
-     */
-    private IDialogSettings dialogSettings = null;
-
-    /**
-     * Creates a new empty wizard.
-     */
-    protected Wizard() {
-        super();
-    }
-
-    /**
-     * Adds a new page to this wizard. The page is inserted at the end of the
-     * page list.
-     * 
-     * @param page
-     *            the new page
-     */
-    public void addPage(IWizardPage page) {
-        pages.add(page);
-        page.setWizard(this);
-    }
-
-	/**
-     * The <code>Wizard</code> implementation of this <code>IWizard</code>
-     * method does nothing. Subclasses should extend if extra pages need to be
-     * added before the wizard opens. New pages should be added by calling
-     * <code>addPage</code>.
-     */
-    public void addPages() {
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public boolean canFinish() {
-        // Default implementation is to check if all pages are complete.
-        for (int i = 0; i < pages.size(); i++) {
-            if (!((IWizardPage) pages.get(i)).isPageComplete()) {
-				return false;
-			}
-        }
-        return true;
-    }
-
-    /**
-     * The <code>Wizard</code> implementation of this <code>IWizard</code>
-     * method creates all the pages controls using
-     * <code>IDialogPage.createControl</code>. Subclasses should reimplement
-     * this method if they want to delay creating one or more of the pages
-     * lazily. The framework ensures that the contents of a page will be created
-     * before attempting to show it.
-     */
-    public void createPageControls(Composite pageContainer) {
-        // the default behavior is to create all the pages controls
-        for (int i = 0; i < pages.size(); i++) {
-            IWizardPage page = (IWizardPage) pages.get(i);
-            page.createControl(pageContainer);
-            // page is responsible for ensuring the created control is
-            // accessable
-            // via getControl.
-            Assert.isNotNull(page.getControl());
-        }
-    }
-
-    /**
-     * The <code>Wizard</code> implementation of this <code>IWizard</code>
-     * method disposes all the pages controls using
-     * <code>DialogPage.dispose</code>. Subclasses should extend this method
-     * if the wizard instance maintains addition SWT resource that need to be
-     * disposed.
-     */
-    public void dispose() {
-        // notify pages
-        for (int i = 0; i < pages.size(); i++) {
-            ((IWizardPage) pages.get(i)).dispose();
-        }
-        // dispose of image
-        if (defaultImage != null) {
-            JFaceResources.getResources().destroyImage(defaultImageDescriptor);
-            defaultImage = null;
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public IWizardContainer getContainer() {
-        return container;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public Image getDefaultPageImage() {
-        if (defaultImage == null) {
-            defaultImage = JFaceResources.getResources().createImageWithDefault(defaultImageDescriptor);
-        }
-        return defaultImage;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public IDialogSettings getDialogSettings() {
-        return dialogSettings;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard. The default behavior is to
-     * return the page that was added to this wizard after the given page.
-     */
-    public IWizardPage getNextPage(IWizardPage page) {
-        int index = pages.indexOf(page);
-        if (index == pages.size() - 1 || index == -1) {
-			// last page or page not found
-            return null;
-		}
-        return (IWizardPage) pages.get(index + 1);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public IWizardPage getPage(String name) {
-        for (int i = 0; i < pages.size(); i++) {
-            IWizardPage page = (IWizardPage) pages.get(i);
-            String pageName = page.getName();
-            if (pageName.equals(name)) {
-				return page;
-			}
-        }
-        return null;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public int getPageCount() {
-        return pages.size();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public IWizardPage[] getPages() {
-        return (IWizardPage[]) pages.toArray(new IWizardPage[pages.size()]);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard. The default behavior is to
-     * return the page that was added to this wizard before the given page.
-     */
-    public IWizardPage getPreviousPage(IWizardPage page) {
-        int index = pages.indexOf(page);
-        if (index == 0 || index == -1) {
-			// first page or page not found
-            return null;
-		} 
-		return (IWizardPage) pages.get(index - 1);
-    }
-
-    /**
-     * Returns the wizard's shell if the wizard is visible. Otherwise
-     * <code>null</code> is returned.
-     * 
-     * @return Shell
-     */
-    public Shell getShell() {
-        if (container == null) {
-			return null;
-		}
-        return container.getShell();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard. By default this is the first
-     * page inserted into the wizard.
-     */
-    public IWizardPage getStartingPage() {
-        if (pages.size() == 0) {
-			return null;
-		}
-        return (IWizardPage) pages.get(0);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public RGB getTitleBarColor() {
-        return titleBarColor;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public String getWindowTitle() {
-        return windowTitle;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public boolean isHelpAvailable() {
-        return isHelpAvailable;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public boolean needsPreviousAndNextButtons() {
-        return forcePreviousAndNextButtons || pages.size() > 1;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public boolean needsProgressMonitor() {
-        return needsProgressMonitor;
-    }
-
-    /**
-     * The <code>Wizard</code> implementation of this <code>IWizard</code>
-     * method does nothing and returns <code>true</code>. Subclasses should
-     * reimplement this method if they need to perform any special cancel
-     * processing for their wizard.
-     */
-    public boolean performCancel() {
-        return true;
-    }
-
-    /**
-     * Subclasses must implement this <code>IWizard</code> method to perform
-     * any special finish processing for their wizard.
-     */
-    public abstract boolean performFinish();
-
-    /*
-     * (non-Javadoc) Method declared on IWizard.
-     */
-    public void setContainer(IWizardContainer wizardContainer) {
-        container = wizardContainer;
-    }
-
-    /**
-     * Sets the default page image descriptor for this wizard.
-     * <p>
-     * This image descriptor will be used to generate an image for a page with
-     * no image of its own; the image will be computed once and cached.
-     * </p>
-     * 
-     * @param imageDescriptor
-     *            the default page image descriptor
-     */
-    public void setDefaultPageImageDescriptor(ImageDescriptor imageDescriptor) {
-        defaultImageDescriptor = imageDescriptor;
-    }
-
-    /**
-     * Sets the dialog settings for this wizard.
-     * <p>
-     * The dialog settings is used to record state between wizard invocations
-     * (for example, radio button selection, last import directory, etc.)
-     * </p>
-     * 
-     * @param settings
-     *            the dialog settings, or <code>null</code> if none
-     * @see #getDialogSettings
-     *  
-     */
-    public void setDialogSettings(IDialogSettings settings) {
-        dialogSettings = settings;
-    }
-
-    /**
-     * Controls whether the wizard needs Previous and Next buttons even if it
-     * currently contains only one page.
-     * <p>
-     * This flag should be set on wizards where the first wizard page adds
-     * follow-on wizard pages based on user input.
-     * </p>
-     * 
-     * @param b
-     *            <code>true</code> to always show Next and Previous buttons,
-     *            and <code>false</code> to suppress Next and Previous buttons
-     *            for single page wizards
-     */
-    public void setForcePreviousAndNextButtons(boolean b) {
-        forcePreviousAndNextButtons = b;
-    }
-
-    /**
-     * Sets whether help is available for this wizard.
-     * <p>
-     * The result of this method is typically used by the container to show or
-     * hide the Help button.
-     * </p>
-     * 
-     * @param b
-     *            <code>true</code> if help is available, and
-     *            <code>false</code> if this wizard is helpless
-     * @see #isHelpAvailable()
-     */
-    public void setHelpAvailable(boolean b) {
-        isHelpAvailable = b;
-    }
-
-    /**
-     * Sets whether this wizard needs a progress monitor.
-     * 
-     * @param b
-     *            <code>true</code> if a progress monitor is required, and
-     *            <code>false</code> if none is needed
-     * @see #needsProgressMonitor()
-     */
-    public void setNeedsProgressMonitor(boolean b) {
-        needsProgressMonitor = b;
-    }
-
-    /**
-     * Sets the title bar color for this wizard.
-     * 
-     * @param color
-     *            the title bar color
-     */
-    public void setTitleBarColor(RGB color) {
-        titleBarColor = color;
-    }
-
-    /**
-     * Sets the window title for the container that hosts this page to the given
-     * string.
-     * 
-     * @param newTitle
-     *            the window title for the container
-     */
-    public void setWindowTitle(String newTitle) {
-        windowTitle = newTitle;
-        if (container != null) {
-			container.updateWindowTitle();
-		}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardDialog.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardDialog.java
deleted file mode 100644
index c662cf0..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardDialog.java
+++ /dev/null
@@ -1,1512 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross (schtoo@schtoo.com) - patch for bug 16179
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.dialogs.ControlEnableState;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.dialogs.IPageChangeProvider;
-import org.eclipse.jface.dialogs.IPageChangedListener;
-import org.eclipse.jface.dialogs.IPageChangingListener;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.PageChangedEvent;
-import org.eclipse.jface.dialogs.PageChangingEvent;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.operation.ModalContext;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A dialog to show a wizard to the end user.
- * <p>
- * In typical usage, the client instantiates this class with a particular
- * wizard. The dialog serves as the wizard container and orchestrates the
- * presentation of its pages.
- * <p>
- * The standard layout is roughly as follows: it has an area at the top
- * containing both the wizard's title, description, and image; the actual wizard
- * page appears in the middle; below that is a progress indicator (which is made
- * visible if needed); and at the bottom of the page is message line and a
- * button bar containing Help, Next, Back, Finish, and Cancel buttons (or some
- * subset).
- * </p>
- * <p>
- * Clients may subclass <code>WizardDialog</code>, although this is rarely
- * required.
- * </p>
- */
-public class WizardDialog extends TitleAreaDialog implements IWizardContainer2,
-		IPageChangeProvider {
-	/**
-	 * Image registry key for error message image (value
-	 * <code>"dialog_title_error_image"</code>).
-	 */
-	public static final String WIZ_IMG_ERROR = "dialog_title_error_image"; //$NON-NLS-1$
-
-	// The wizard the dialog is currently showing.
-	private IWizard wizard;
-
-	// Wizards to dispose
-	private ArrayList createdWizards = new ArrayList();
-
-	// Current nested wizards
-	private ArrayList nestedWizards = new ArrayList();
-
-	// The currently displayed page.
-	private IWizardPage currentPage = null;
-
-	// The number of long running operation executed from the dialog.
-	private long activeRunningOperations = 0;
-
-	// The current page message and description
-	private String pageMessage;
-
-	private int pageMessageType = IMessageProvider.NONE;
-
-	private String pageDescription;
-
-	// The progress monitor
-	private ProgressMonitorPart progressMonitorPart;
-
-	private Cursor waitCursor;
-
-	private Cursor arrowCursor;
-
-	private MessageDialog windowClosingDialog;
-
-	// Navigation buttons
-	private Button backButton;
-
-	private Button nextButton;
-
-	private Button finishButton;
-
-	private Button cancelButton;
-
-	private Button helpButton;
-
-	private SelectionAdapter cancelListener;
-
-	private boolean isMovingToPreviousPage = false;
-
-	private Composite pageContainer;
-
-	private PageContainerFillLayout pageContainerLayout = new PageContainerFillLayout(
-			5, 5, 300, 225);
-
-	private int pageWidth = SWT.DEFAULT;
-
-	private int pageHeight = SWT.DEFAULT;
-
-	private static final String FOCUS_CONTROL = "focusControl"; //$NON-NLS-1$
-
-	private boolean lockedUI = false;
-
-	private ListenerList pageChangedListeners = new ListenerList();
-
-	private ListenerList pageChangingListeners = new ListenerList();
-
-	/**
-	 * A layout for a container which includes several pages, like a notebook,
-	 * wizard, or preference dialog. The size computed by this layout is the
-	 * maximum width and height of all pages currently inserted into the
-	 * container.
-	 */
-	protected class PageContainerFillLayout extends Layout {
-		/**
-		 * The margin width; <code>5</code> pixels by default.
-		 */
-		public int marginWidth = 5;
-
-		/**
-		 * The margin height; <code>5</code> pixels by default.
-		 */
-		public int marginHeight = 5;
-
-		/**
-		 * The minimum width; <code>0</code> pixels by default.
-		 */
-		public int minimumWidth = 0;
-
-		/**
-		 * The minimum height; <code>0</code> pixels by default.
-		 */
-		public int minimumHeight = 0;
-
-		/**
-		 * Creates new layout object.
-		 * 
-		 * @param mw
-		 *            the margin width
-		 * @param mh
-		 *            the margin height
-		 * @param minW
-		 *            the minimum width
-		 * @param minH
-		 *            the minimum height
-		 */
-		public PageContainerFillLayout(int mw, int mh, int minW, int minH) {
-			marginWidth = mw;
-			marginHeight = mh;
-			minimumWidth = minW;
-			minimumHeight = minH;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on Layout.
-		 */
-		public Point computeSize(Composite composite, int wHint, int hHint,
-				boolean force) {
-			if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-			Point result = null;
-			Control[] children = composite.getChildren();
-			if (children.length > 0) {
-				result = new Point(0, 0);
-				for (int i = 0; i < children.length; i++) {
-					Point cp = children[i].computeSize(wHint, hHint, force);
-					result.x = Math.max(result.x, cp.x);
-					result.y = Math.max(result.y, cp.y);
-				}
-				result.x = result.x + 2 * marginWidth;
-				result.y = result.y + 2 * marginHeight;
-			} else {
-				Rectangle rect = composite.getClientArea();
-				result = new Point(rect.width, rect.height);
-			}
-			result.x = Math.max(result.x, minimumWidth);
-			result.y = Math.max(result.y, minimumHeight);
-			if (wHint != SWT.DEFAULT) {
-				result.x = wHint;
-			}
-			if (hHint != SWT.DEFAULT) {
-				result.y = hHint;
-			}
-			return result;
-		}
-
-		/**
-		 * Returns the client area for the given composite according to this
-		 * layout.
-		 * 
-		 * @param c
-		 *            the composite
-		 * @return the client area rectangle
-		 */
-		public Rectangle getClientArea(Composite c) {
-			Rectangle rect = c.getClientArea();
-			rect.x = rect.x + marginWidth;
-			rect.y = rect.y + marginHeight;
-			rect.width = rect.width - 2 * marginWidth;
-			rect.height = rect.height - 2 * marginHeight;
-			return rect;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on Layout.
-		 */
-		public void layout(Composite composite, boolean force) {
-			Rectangle rect = getClientArea(composite);
-			Control[] children = composite.getChildren();
-			for (int i = 0; i < children.length; i++) {
-				children[i].setBounds(rect);
-			}
-		}
-
-		/**
-		 * Lays outs the page according to this layout.
-		 * 
-		 * @param w
-		 *            the control
-		 */
-		public void layoutPage(Control w) {
-			w.setBounds(getClientArea(w.getParent()));
-		}
-
-		/**
-		 * Sets the location of the page so that its origin is in the upper left
-		 * corner.
-		 * 
-		 * @param w
-		 *            the control
-		 */
-		public void setPageLocation(Control w) {
-			w.setLocation(marginWidth, marginHeight);
-		}
-	}
-
-	/**
-	 * Creates a new wizard dialog for the given wizard.
-	 * 
-	 * @param parentShell
-	 *            the parent shell
-	 * @param newWizard
-	 *            the wizard this dialog is working on
-	 */
-	public WizardDialog(Shell parentShell, IWizard newWizard) {
-		super(parentShell);
-		setShellStyle(SWT.CLOSE | SWT.MAX | SWT.TITLE | SWT.BORDER
-				| SWT.APPLICATION_MODAL | SWT.RESIZE | getDefaultOrientation());
-		setWizard(newWizard);
-		// since VAJava can't initialize an instance var with an anonymous
-		// class outside a constructor we do it here:
-		cancelListener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				cancelPressed();
-			}
-		};
-	}
-
-	/**
-	 * About to start a long running operation triggered through the wizard.
-	 * Shows the progress monitor and disables the wizard's buttons and
-	 * controls.
-	 * 
-	 * @param enableCancelButton
-	 *            <code>true</code> if the Cancel button should be enabled,
-	 *            and <code>false</code> if it should be disabled
-	 * @return the saved UI state
-	 */
-	private Object aboutToStart(boolean enableCancelButton) {
-		Map savedState = null;
-		if (getShell() != null) {
-			// Save focus control
-			Control focusControl = getShell().getDisplay().getFocusControl();
-			if (focusControl != null && focusControl.getShell() != getShell()) {
-				focusControl = null;
-			}
-			boolean needsProgressMonitor = wizard.needsProgressMonitor();
-			cancelButton.removeSelectionListener(cancelListener);
-			// Set the busy cursor to all shells.
-			Display d = getShell().getDisplay();
-			waitCursor = new Cursor(d, SWT.CURSOR_WAIT);
-			setDisplayCursor(waitCursor);
-			// Set the arrow cursor to the cancel component.
-			arrowCursor = new Cursor(d, SWT.CURSOR_ARROW);
-			cancelButton.setCursor(arrowCursor);
-			// Deactivate shell
-			savedState = saveUIState(needsProgressMonitor && enableCancelButton);
-			if (focusControl != null) {
-				savedState.put(FOCUS_CONTROL, focusControl);
-			}
-			// Attach the progress monitor part to the cancel button
-			if (needsProgressMonitor) {
-				progressMonitorPart.attachToCancelComponent(cancelButton);
-				progressMonitorPart.setVisible(true);
-			}
-		}
-		return savedState;
-	}
-
-	/**
-	 * The Back button has been pressed.
-	 */
-	protected void backPressed() {
-		IWizardPage page = currentPage.getPreviousPage();
-		if (page == null) {
-			// should never happen since we have already visited the page
-			return;
-		}
-
-		// set flag to indicate that we are moving back
-		isMovingToPreviousPage = true;
-		// show the page
-		showPage(page);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog.
-	 */
-	protected void buttonPressed(int buttonId) {
-		switch (buttonId) {
-		case IDialogConstants.HELP_ID: {
-			helpPressed();
-			break;
-		}
-		case IDialogConstants.BACK_ID: {
-			backPressed();
-			break;
-		}
-		case IDialogConstants.NEXT_ID: {
-			nextPressed();
-			break;
-		}
-		case IDialogConstants.FINISH_ID: {
-			finishPressed();
-			break;
-		}
-			// The Cancel button has a listener which calls cancelPressed
-			// directly
-		}
-	}
-
-	/**
-	 * Calculates the difference in size between the given page and the page
-	 * container. A larger page results in a positive delta.
-	 * 
-	 * @param page
-	 *            the page
-	 * @return the size difference encoded as a
-	 *         <code>new Point(deltaWidth,deltaHeight)</code>
-	 */
-	private Point calculatePageSizeDelta(IWizardPage page) {
-		Control pageControl = page.getControl();
-		if (pageControl == null) {
-			// control not created yet
-			return new Point(0, 0);
-		}
-		Point contentSize = pageControl.computeSize(SWT.DEFAULT, SWT.DEFAULT,
-				true);
-		Rectangle rect = pageContainerLayout.getClientArea(pageContainer);
-		Point containerSize = new Point(rect.width, rect.height);
-		return new Point(Math.max(0, contentSize.x - containerSize.x), Math
-				.max(0, contentSize.y - containerSize.y));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog.
-	 */
-	protected void cancelPressed() {
-		if (activeRunningOperations <= 0) {
-			// Close the dialog. The check whether the dialog can be
-			// closed or not is done in <code>okToClose</code>.
-			// This ensures that the check is also evaluated when the user
-			// presses the window's close button.
-			setReturnCode(CANCEL);
-			close();
-		} else {
-			cancelButton.setEnabled(false);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		if (okToClose()) {
-			return hardClose();
-		}
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Window.
-	 */
-	protected void configureShell(Shell newShell) {
-		super.configureShell(newShell);
-		// Register help listener on the shell
-		newShell.addHelpListener(new HelpListener() {
-			public void helpRequested(HelpEvent event) {
-				// call perform help on the current page
-				if (currentPage != null) {
-					currentPage.performHelp();
-				}
-			}
-		});
-	}
-
-	/**
-	 * Creates the buttons for this dialog's button bar.
-	 * <p>
-	 * The <code>WizardDialog</code> implementation of this framework method
-	 * prevents the parent composite's columns from being made equal width in
-	 * order to remove the margin between the Back and Next buttons.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite to contain the buttons
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		((GridLayout) parent.getLayout()).makeColumnsEqualWidth = false;
-		if (wizard.isHelpAvailable()) {
-			helpButton = createButton(parent, IDialogConstants.HELP_ID,
-					IDialogConstants.HELP_LABEL, false);
-		}
-		if (wizard.needsPreviousAndNextButtons()) {
-			createPreviousAndNextButtons(parent);
-		}
-		finishButton = createButton(parent, IDialogConstants.FINISH_ID,
-				IDialogConstants.FINISH_LABEL, true);
-		cancelButton = createCancelButton(parent);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#setButtonLayoutData(org.eclipse.swt.widgets.Button)
-	 */
-	protected void setButtonLayoutData(Button button) {
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-		int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-
-		// On large fonts this can make this dialog huge
-		widthHint = Math.min(widthHint,
-				button.getDisplay().getBounds().width / 5);
-		Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-		data.widthHint = Math.max(widthHint, minSize.x);
-
-		button.setLayoutData(data);
-	}
-
-	/**
-	 * Creates the Cancel button for this wizard dialog. Creates a standard (<code>SWT.PUSH</code>)
-	 * button and registers for its selection events. Note that the number of
-	 * columns in the button bar composite is incremented. The Cancel button is
-	 * created specially to give it a removeable listener.
-	 * 
-	 * @param parent
-	 *            the parent button bar
-	 * @return the new Cancel button
-	 */
-	private Button createCancelButton(Composite parent) {
-		// increment the number of columns in the button bar
-		((GridLayout) parent.getLayout()).numColumns++;
-		Button button = new Button(parent, SWT.PUSH);
-		button.setText(IDialogConstants.CANCEL_LABEL);
-		setButtonLayoutData(button);
-		button.setFont(parent.getFont());
-		button.setData(new Integer(IDialogConstants.CANCEL_ID));
-		button.addSelectionListener(cancelListener);
-		return button;
-	}
-
-	/**
-	 * Return the cancel button if the id is a the cancel id.
-	 * 
-	 * @param id
-	 *            the button id
-	 * @return the button corresponding to the button id
-	 */
-	protected Button getButton(int id) {
-		if (id == IDialogConstants.CANCEL_ID) {
-			return cancelButton;
-		}
-		return super.getButton(id);
-	}
-
-	/**
-	 * The <code>WizardDialog</code> implementation of this
-	 * <code>Window</code> method calls call <code>IWizard.addPages</code>
-	 * to allow the current wizard to add extra pages, then
-	 * <code>super.createContents</code> to create the controls. It then calls
-	 * <code>IWizard.createPageControls</code> to allow the wizard to
-	 * pre-create their page controls prior to opening, so that the wizard opens
-	 * to the correct size. And finally it shows the first page.
-	 */
-	protected Control createContents(Composite parent) {
-		// Allow the wizard to add pages to itself
-		// Need to call this now so page count is correct
-		// for determining if next/previous buttons are needed
-		wizard.addPages();
-		Control contents = super.createContents(parent);
-		// Allow the wizard pages to precreate their page controls
-		createPageControls();
-		// Show the first page
-		showStartingPage();
-		return contents;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog.
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite composite = (Composite) super.createDialogArea(parent);
-		// Build the Page container
-		pageContainer = createPageContainer(composite);
-		GridData gd = new GridData(GridData.FILL_BOTH);
-		gd.widthHint = pageWidth;
-		gd.heightHint = pageHeight;
-		pageContainer.setLayoutData(gd);
-		pageContainer.setFont(parent.getFont());
-		// Insert a progress monitor
-		GridLayout pmlayout = new GridLayout();
-		pmlayout.numColumns = 1;
-		progressMonitorPart = createProgressMonitorPart(composite, pmlayout);
-		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
-		progressMonitorPart.setLayoutData(gridData);
-		progressMonitorPart.setVisible(false);
-		// Build the separator line
-		Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
-		separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-		applyDialogFont(progressMonitorPart);
-		return composite;
-	}
-
-	/**
-	 * Create the progress monitor part in the receiver.
-	 * 
-	 * @param composite
-	 * @param pmlayout
-	 * @return ProgressMonitorPart
-	 */
-	protected ProgressMonitorPart createProgressMonitorPart(
-			Composite composite, GridLayout pmlayout) {
-		return new ProgressMonitorPart(composite, pmlayout, SWT.DEFAULT) {
-			String currentTask = null;
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.wizard.ProgressMonitorPart#setBlocked(org.eclipse.core.runtime.IStatus)
-			 */
-			public void setBlocked(IStatus reason) {
-				super.setBlocked(reason);
-				if (!lockedUI) {
-					getBlockedHandler().showBlocked(getShell(), this, reason,
-							currentTask);
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.wizard.ProgressMonitorPart#clearBlocked()
-			 */
-			public void clearBlocked() {
-				super.clearBlocked();
-				if (!lockedUI) {
-					getBlockedHandler().clearBlocked();
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.wizard.ProgressMonitorPart#beginTask(java.lang.String,
-			 *      int)
-			 */
-			public void beginTask(String name, int totalWork) {
-				super.beginTask(name, totalWork);
-				currentTask = name;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.wizard.ProgressMonitorPart#setTaskName(java.lang.String)
-			 */
-			public void setTaskName(String name) {
-				super.setTaskName(name);
-				currentTask = name;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.wizard.ProgressMonitorPart#subTask(java.lang.String)
-			 */
-			public void subTask(String name) {
-				super.subTask(name);
-				// If we haven't got anything yet use this value for more
-				// context
-				if (currentTask == null) {
-					currentTask = name;
-				}
-			}
-		};
-	}
-
-	/**
-	 * Creates the container that holds all pages.
-	 * 
-	 * @param parent
-	 * @return Composite
-	 */
-	private Composite createPageContainer(Composite parent) {
-		Composite result = new Composite(parent, SWT.NULL);
-		result.setLayout(pageContainerLayout);
-		return result;
-	}
-
-	/**
-	 * Allow the wizard's pages to pre-create their page controls. This allows
-	 * the wizard dialog to open to the correct size.
-	 */
-	private void createPageControls() {
-		// Allow the wizard pages to precreate their page controls
-		// This allows the wizard to open to the correct size
-		wizard.createPageControls(pageContainer);
-		// Ensure that all of the created pages are initially not visible
-		IWizardPage[] pages = wizard.getPages();
-		for (int i = 0; i < pages.length; i++) {
-			IWizardPage page = pages[i];
-			if (page.getControl() != null) {
-				page.getControl().setVisible(false);
-			}
-		}
-	}
-
-	/**
-	 * Creates the Previous and Next buttons for this wizard dialog. Creates
-	 * standard (<code>SWT.PUSH</code>) buttons and registers for their
-	 * selection events. Note that the number of columns in the button bar
-	 * composite is incremented. These buttons are created specially to prevent
-	 * any space between them.
-	 * 
-	 * @param parent
-	 *            the parent button bar
-	 * @return a composite containing the new buttons
-	 */
-	private Composite createPreviousAndNextButtons(Composite parent) {
-		// increment the number of columns in the button bar
-		((GridLayout) parent.getLayout()).numColumns++;
-		Composite composite = new Composite(parent, SWT.NONE);
-		// create a layout with spacing and margins appropriate for the font
-		// size.
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 0; // will be incremented by createButton
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		layout.horizontalSpacing = 0;
-		layout.verticalSpacing = 0;
-		composite.setLayout(layout);
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_CENTER
-				| GridData.VERTICAL_ALIGN_CENTER);
-		composite.setLayoutData(data);
-		composite.setFont(parent.getFont());
-		backButton = createButton(composite, IDialogConstants.BACK_ID,
-				IDialogConstants.BACK_LABEL, false);
-		nextButton = createButton(composite, IDialogConstants.NEXT_ID,
-				IDialogConstants.NEXT_LABEL, false);
-		return composite;
-	}
-
-	/**
-	 * Creates and return a new wizard closing dialog without openiong it.
-	 * 
-	 * @return MessageDalog
-	 */
-	private MessageDialog createWizardClosingDialog() {
-		MessageDialog result = new MessageDialog(getShell(),
-				JFaceResources.getString("WizardClosingDialog.title"), //$NON-NLS-1$
-				null,
-				JFaceResources.getString("WizardClosingDialog.message"), //$NON-NLS-1$
-				MessageDialog.QUESTION,
-				new String[] { IDialogConstants.OK_LABEL }, 0);
-		return result;
-	}
-
-	/**
-	 * The Finish button has been pressed.
-	 */
-	protected void finishPressed() {
-		// Wizards are added to the nested wizards list in setWizard.
-		// This means that the current wizard is always the last wizard in the
-		// list.
-		// Note that we first call the current wizard directly (to give it a
-		// chance to
-		// abort, do work, and save state) then call the remaining n-1 wizards
-		// in the
-		// list (to save state).
-		if (wizard.performFinish()) {
-			// Call perform finish on outer wizards in the nested chain
-			// (to allow them to save state for example)
-			for (int i = 0; i < nestedWizards.size() - 1; i++) {
-				((IWizard) nestedWizards.get(i)).performFinish();
-			}
-			// Hard close the dialog.
-			setReturnCode(OK);
-			hardClose();
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWizardContainer.
-	 */
-	public IWizardPage getCurrentPage() {
-		return currentPage;
-	}
-
-	/**
-	 * Returns the progress monitor for this wizard dialog (if it has one).
-	 * 
-	 * @return the progress monitor, or <code>null</code> if this wizard
-	 *         dialog does not have one
-	 */
-	protected IProgressMonitor getProgressMonitor() {
-		return progressMonitorPart;
-	}
-
-	/**
-	 * Returns the wizard this dialog is currently displaying.
-	 * 
-	 * @return the current wizard
-	 */
-	protected IWizard getWizard() {
-		return wizard;
-	}
-
-	/**
-	 * Closes this window.
-	 * 
-	 * @return <code>true</code> if the window is (or was already) closed, and
-	 *         <code>false</code> if it is still open
-	 */
-	private boolean hardClose() {
-		// inform wizards
-		for (int i = 0; i < createdWizards.size(); i++) {
-			IWizard createdWizard = (IWizard) createdWizards.get(i);
-			createdWizard.dispose();
-			// Remove this dialog as a parent from the managed wizard.
-			// Note that we do this after calling dispose as the wizard or
-			// its pages may need access to the container during
-			// dispose code
-			createdWizard.setContainer(null);
-		}
-		return super.close();
-	}
-
-	/**
-	 * The Help button has been pressed.
-	 */
-	protected void helpPressed() {
-		if (currentPage != null) {
-			currentPage.performHelp();
-		}
-	}
-
-	/**
-	 * The Next button has been pressed.
-	 */
-	protected void nextPressed() {
-		IWizardPage page = currentPage.getNextPage();
-		if (page == null) {
-			// something must have happend getting the next page
-			return;
-		}
-
-		// show the next page
-		showPage(page);
-	}
-
-	/**
-	 * Notifies page changing listeners and returns result of page changing
-	 * processing to the sender.
-	 * 
-	 * @param eventType
-	 * @return <code>true</code> if page changing listener completes
-	 *         successfully, <code>false</code> otherwise
-	 */
-	private boolean doPageChanging(IWizardPage targetPage) {
-		PageChangingEvent e = new PageChangingEvent(this, getCurrentPage(),
-				targetPage);
-		firePageChanging(e);
-		// Prevent navigation if necessary
-		return e.doit;
-	}
-
-	/**
-	 * Checks whether it is alright to close this wizard dialog and performed
-	 * standard cancel processing. If there is a long running operation in
-	 * progress, this method posts an alert message saying that the wizard
-	 * cannot be closed.
-	 * 
-	 * @return <code>true</code> if it is alright to close this dialog, and
-	 *         <code>false</code> if it is not
-	 */
-	private boolean okToClose() {
-		if (activeRunningOperations > 0) {
-			synchronized (this) {
-				windowClosingDialog = createWizardClosingDialog();
-			}
-			windowClosingDialog.open();
-			synchronized (this) {
-				windowClosingDialog = null;
-			}
-			return false;
-		}
-		return wizard.performCancel();
-	}
-
-	/**
-	 * Restores the enabled/disabled state of the given control.
-	 * 
-	 * @param w
-	 *            the control
-	 * @param h
-	 *            the map (key type: <code>String</code>, element type:
-	 *            <code>Boolean</code>)
-	 * @param key
-	 *            the key
-	 * @see #saveEnableStateAndSet
-	 */
-	private void restoreEnableState(Control w, Map h, String key) {
-		if (w != null) {
-			Boolean b = (Boolean) h.get(key);
-			if (b != null) {
-				w.setEnabled(b.booleanValue());
-			}
-		}
-	}
-
-	/**
-	 * Restores the enabled/disabled state of the wizard dialog's buttons and
-	 * the tree of controls for the currently showing page.
-	 * 
-	 * @param state
-	 *            a map containing the saved state as returned by
-	 *            <code>saveUIState</code>
-	 * @see #saveUIState
-	 */
-	private void restoreUIState(Map state) {
-		restoreEnableState(backButton, state, "back"); //$NON-NLS-1$
-		restoreEnableState(nextButton, state, "next"); //$NON-NLS-1$
-		restoreEnableState(finishButton, state, "finish"); //$NON-NLS-1$
-		restoreEnableState(cancelButton, state, "cancel"); //$NON-NLS-1$
-		restoreEnableState(helpButton, state, "help"); //$NON-NLS-1$
-		Object pageValue = state.get("page"); //$NON-NLS-1$
-		if (pageValue != null) {
-			((ControlEnableState) pageValue).restore();
-		}
-	}
-
-	/**
-	 * This implementation of IRunnableContext#run(boolean, boolean,
-	 * IRunnableWithProgress) blocks until the runnable has been run, regardless
-	 * of the value of <code>fork</code>. It is recommended that
-	 * <code>fork</code> is set to true in most cases. If <code>fork</code>
-	 * is set to <code>false</code>, the runnable will run in the UI thread
-	 * and it is the runnable's responsibility to call
-	 * <code>Display.readAndDispatch()</code> to ensure UI responsiveness.
-	 * 
-	 * UI state is saved prior to executing the long-running operation and is
-	 * restored after the long-running operation completes executing. Any
-	 * attempt to change the UI state of the wizard in the long-running
-	 * operation will be nullified when original UI state is restored.
-	 * 
-	 */
-	public void run(boolean fork, boolean cancelable,
-			IRunnableWithProgress runnable) throws InvocationTargetException,
-			InterruptedException {
-		// The operation can only be canceled if it is executed in a separate
-		// thread.
-		// Otherwise the UI is blocked anyway.
-		Object state = null;
-		if (activeRunningOperations == 0) {
-			state = aboutToStart(fork && cancelable);
-		}
-		activeRunningOperations++;
-		try {
-			if (!fork) {
-				lockedUI = true;
-			}
-			ModalContext.run(runnable, fork, getProgressMonitor(), getShell()
-					.getDisplay());
-			lockedUI = false;
-		} finally {
-			activeRunningOperations--;
-			// Stop if this is the last one
-			if (state != null) {
-				stopped(state);
-			}
-		}
-	}
-
-	/**
-	 * Saves the enabled/disabled state of the given control in the given map,
-	 * which must be modifiable.
-	 * 
-	 * @param w
-	 *            the control, or <code>null</code> if none
-	 * @param h
-	 *            the map (key type: <code>String</code>, element type:
-	 *            <code>Boolean</code>)
-	 * @param key
-	 *            the key
-	 * @param enabled
-	 *            <code>true</code> to enable the control, and
-	 *            <code>false</code> to disable it
-	 * @see #restoreEnableState(Control, Map, String)
-	 */
-	private void saveEnableStateAndSet(Control w, Map h, String key,
-			boolean enabled) {
-		if (w != null) {
-			h.put(key, w.getEnabled() ? Boolean.TRUE : Boolean.FALSE);
-			w.setEnabled(enabled);
-		}
-	}
-
-	/**
-	 * Captures and returns the enabled/disabled state of the wizard dialog's
-	 * buttons and the tree of controls for the currently showing page. All
-	 * these controls are disabled in the process, with the possible exception
-	 * of the Cancel button.
-	 * 
-	 * @param keepCancelEnabled
-	 *            <code>true</code> if the Cancel button should remain
-	 *            enabled, and <code>false</code> if it should be disabled
-	 * @return a map containing the saved state suitable for restoring later
-	 *         with <code>restoreUIState</code>
-	 * @see #restoreUIState
-	 */
-	private Map saveUIState(boolean keepCancelEnabled) {
-		Map savedState = new HashMap(10);
-		saveEnableStateAndSet(backButton, savedState, "back", false); //$NON-NLS-1$
-		saveEnableStateAndSet(nextButton, savedState, "next", false); //$NON-NLS-1$
-		saveEnableStateAndSet(finishButton, savedState, "finish", false); //$NON-NLS-1$
-		saveEnableStateAndSet(cancelButton, savedState,
-				"cancel", keepCancelEnabled); //$NON-NLS-1$
-		saveEnableStateAndSet(helpButton, savedState, "help", false); //$NON-NLS-1$
-		if (currentPage != null) {
-			savedState
-					.put(
-							"page", ControlEnableState.disable(currentPage.getControl())); //$NON-NLS-1$
-		}
-		return savedState;
-	}
-
-	/**
-	 * Sets the given cursor for all shells currently active for this window's
-	 * display.
-	 * 
-	 * @param c
-	 *            the cursor
-	 */
-	private void setDisplayCursor(Cursor c) {
-		Shell[] shells = getShell().getDisplay().getShells();
-		for (int i = 0; i < shells.length; i++) {
-			shells[i].setCursor(c);
-		}
-	}
-
-	/**
-	 * Sets the minimum page size used for the pages.
-	 * 
-	 * @param minWidth
-	 *            the minimum page width
-	 * @param minHeight
-	 *            the minimum page height
-	 * @see #setMinimumPageSize(Point)
-	 */
-	public void setMinimumPageSize(int minWidth, int minHeight) {
-		Assert.isTrue(minWidth >= 0 && minHeight >= 0);
-		pageContainerLayout.minimumWidth = minWidth;
-		pageContainerLayout.minimumHeight = minHeight;
-	}
-
-	/**
-	 * Sets the minimum page size used for the pages.
-	 * 
-	 * @param size
-	 *            the page size encoded as <code>new Point(width,height)</code>
-	 * @see #setMinimumPageSize(int,int)
-	 */
-	public void setMinimumPageSize(Point size) {
-		setMinimumPageSize(size.x, size.y);
-	}
-
-	/**
-	 * Sets the size of all pages. The given size takes precedence over computed
-	 * sizes.
-	 * 
-	 * @param width
-	 *            the page width
-	 * @param height
-	 *            the page height
-	 * @see #setPageSize(Point)
-	 */
-	public void setPageSize(int width, int height) {
-		pageWidth = width;
-		pageHeight = height;
-	}
-
-	/**
-	 * Sets the size of all pages. The given size takes precedence over computed
-	 * sizes.
-	 * 
-	 * @param size
-	 *            the page size encoded as <code>new Point(width,height)</code>
-	 * @see #setPageSize(int,int)
-	 */
-	public void setPageSize(Point size) {
-		setPageSize(size.x, size.y);
-	}
-
-	/**
-	 * Sets the wizard this dialog is currently displaying.
-	 * 
-	 * @param newWizard
-	 *            the wizard
-	 */
-	protected void setWizard(IWizard newWizard) {
-		wizard = newWizard;
-		wizard.setContainer(this);
-		if (!createdWizards.contains(wizard)) {
-			createdWizards.add(wizard);
-			// New wizard so just add it to the end of our nested list
-			nestedWizards.add(wizard);
-			if (pageContainer != null) {
-				// Dialog is already open
-				// Allow the wizard pages to precreate their page controls
-				// This allows the wizard to open to the correct size
-				createPageControls();
-				// Ensure the dialog is large enough for the wizard
-				updateSizeForWizard(wizard);
-				pageContainer.layout(true);
-			}
-		} else {
-			// We have already seen this wizard, if it is the previous wizard
-			// on the nested list then we assume we have gone back and remove
-			// the last wizard from the list
-			int size = nestedWizards.size();
-			if (size >= 2 && nestedWizards.get(size - 2) == wizard) {
-				nestedWizards.remove(size - 1);
-			} else {
-				// Assume we are going forward to revisit a wizard
-				nestedWizards.add(wizard);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWizardContainer.
-	 */
-	public void showPage(IWizardPage page) {
-		if (page == null || page == currentPage) {
-			return;
-		}
-
-		if (!isMovingToPreviousPage) {
-			// remember my previous page.
-			page.setPreviousPage(currentPage);
-		} else {
-			isMovingToPreviousPage = false;
-		}
-
-		// If page changing evaluation unsuccessful, do not change the page
-		if (!doPageChanging(page))
-			return;
-
-		// Update for the new page in a busy cursor if possible
-		if (getContents() == null) {
-			updateForPage(page);
-		} else {
-			final IWizardPage finalPage = page;
-			BusyIndicator.showWhile(getContents().getDisplay(), new Runnable() {
-				public void run() {
-					updateForPage(finalPage);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Update the receiver for the new page.
-	 * 
-	 * @param page
-	 */
-	private void updateForPage(IWizardPage page) {
-		// ensure this page belongs to the current wizard
-		if (wizard != page.getWizard()) {
-			setWizard(page.getWizard());
-		}
-		// ensure that page control has been created
-		// (this allows lazy page control creation)
-		if (page.getControl() == null) {
-			page.createControl(pageContainer);
-			// the page is responsible for ensuring the created control is
-			// accessable
-			// via getControl.
-			Assert.isNotNull(page.getControl(), JFaceResources.format(
-					JFaceResources.getString("WizardDialog.missingSetControl"), //$NON-NLS-1$
-					new Object[] { page.getName() }));
-			// ensure the dialog is large enough for this page
-			updateSize(page);
-		}
-		// make the new page visible
-		IWizardPage oldPage = currentPage;
-		currentPage = page;
-
-		currentPage.setVisible(true);
-		if (oldPage != null) {
-			oldPage.setVisible(false);
-		}
-		// update the dialog controls
-		update();
-	}
-
-	/**
-	 * Shows the starting page of the wizard.
-	 */
-	private void showStartingPage() {
-		currentPage = wizard.getStartingPage();
-		if (currentPage == null) {
-			// something must have happend getting the page
-			return;
-		}
-		// ensure the page control has been created
-		if (currentPage.getControl() == null) {
-			currentPage.createControl(pageContainer);
-			// the page is responsible for ensuring the created control is
-			// accessable
-			// via getControl.
-			Assert.isNotNull(currentPage.getControl());
-			// we do not need to update the size since the call
-			// to initialize bounds has not been made yet.
-		}
-		// make the new page visible
-		currentPage.setVisible(true);
-		// update the dialog controls
-		update();
-	}
-
-	/**
-	 * A long running operation triggered through the wizard was stopped either
-	 * by user input or by normal end. Hides the progress monitor and restores
-	 * the enable state wizard's buttons and controls.
-	 * 
-	 * @param savedState
-	 *            the saved UI state as returned by <code>aboutToStart</code>
-	 * @see #aboutToStart
-	 */
-	private void stopped(Object savedState) {
-		if (getShell() != null && !getShell().isDisposed()) {
-			if (wizard.needsProgressMonitor()) {
-				progressMonitorPart.setVisible(false);
-				progressMonitorPart.removeFromCancelComponent(cancelButton);
-			}
-			Map state = (Map) savedState;
-			restoreUIState(state);
-			cancelButton.addSelectionListener(cancelListener);
-			setDisplayCursor(null);
-			cancelButton.setCursor(null);
-			waitCursor.dispose();
-			waitCursor = null;
-			arrowCursor.dispose();
-			arrowCursor = null;
-			Control focusControl = (Control) state.get(FOCUS_CONTROL);
-			if (focusControl != null && !focusControl.isDisposed()) {
-				focusControl.setFocus();
-			}
-		}
-	}
-
-	/**
-	 * Updates this dialog's controls to reflect the current page.
-	 */
-	protected void update() {
-		// Update the window title
-		updateWindowTitle();
-		// Update the title bar
-		updateTitleBar();
-		// Update the buttons
-		updateButtons();
-
-		// Fires the page change event
-		firePageChanged(new PageChangedEvent(this, getCurrentPage()));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWizardContainer.
-	 */
-	public void updateButtons() {
-		boolean canFlipToNextPage = false;
-		boolean canFinish = wizard.canFinish();
-		if (backButton != null) {
-			backButton.setEnabled(currentPage.getPreviousPage() != null);
-		}
-		if (nextButton != null) {
-			canFlipToNextPage = currentPage.canFlipToNextPage();
-			nextButton.setEnabled(canFlipToNextPage);
-		}
-		finishButton.setEnabled(canFinish);
-		// finish is default unless it is diabled and next is enabled
-		if (canFlipToNextPage && !canFinish) {
-			getShell().setDefaultButton(nextButton);
-		} else {
-			getShell().setDefaultButton(finishButton);
-		}
-	}
-
-	/**
-	 * Update the message line with the page's description.
-	 * <p>
-	 * A discription is shown only if there is no message or error message.
-	 * </p>
-	 */
-	private void updateDescriptionMessage() {
-		pageDescription = currentPage.getDescription();
-		setMessage(pageDescription);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWizardContainer.
-	 */
-	public void updateMessage() {
-
-		if (currentPage == null) {
-			return;
-		}
-
-		pageMessage = currentPage.getMessage();
-		if (pageMessage != null && currentPage instanceof IMessageProvider) {
-			pageMessageType = ((IMessageProvider) currentPage).getMessageType();
-		} else {
-			pageMessageType = IMessageProvider.NONE;
-		}
-		if (pageMessage == null) {
-			setMessage(pageDescription);
-		} else {
-			setMessage(pageMessage, pageMessageType);
-		}
-		setErrorMessage(currentPage.getErrorMessage());
-	}
-
-	/**
-	 * Changes the shell size to the given size, ensuring that it is no larger
-	 * than the display bounds.
-	 * 
-	 * @param width
-	 *            the shell width
-	 * @param height
-	 *            the shell height
-	 */
-	private void setShellSize(int width, int height) {
-		Rectangle size = getShell().getBounds();
-		size.height = height;
-		size.width = width;
-		getShell().setBounds(getConstrainedShellBounds(size));
-	}
-
-	/**
-	 * Computes the correct dialog size for the current page and resizes its
-	 * shell if nessessary. Also causes the container to refresh its layout.
-	 * 
-	 * @param page
-	 *            the wizard page to use to resize the dialog
-	 * @since 2.0
-	 */
-	protected void updateSize(IWizardPage page) {
-		if (page == null || page.getControl() == null) {
-			return;
-		}
-		updateSizeForPage(page);
-		pageContainerLayout.layoutPage(page.getControl());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.wizard.IWizardContainer2#updateSize()
-	 */
-	public void updateSize() {
-		updateSize(currentPage);
-	}
-
-	/**
-	 * Computes the correct dialog size for the given page and resizes its shell
-	 * if nessessary.
-	 * 
-	 * @param page
-	 *            the wizard page
-	 */
-	private void updateSizeForPage(IWizardPage page) {
-		// ensure the page container is large enough
-		Point delta = calculatePageSizeDelta(page);
-		if (delta.x > 0 || delta.y > 0) {
-			// increase the size of the shell
-			Shell shell = getShell();
-			Point shellSize = shell.getSize();
-			setShellSize(shellSize.x + delta.x, shellSize.y + delta.y);
-			constrainShellSize();
-		}
-	}
-
-	/**
-	 * Computes the correct dialog size for the given wizard and resizes its
-	 * shell if nessessary.
-	 * 
-	 * @param sizingWizard
-	 *            the wizard
-	 */
-	private void updateSizeForWizard(IWizard sizingWizard) {
-		Point delta = new Point(0, 0);
-		IWizardPage[] pages = sizingWizard.getPages();
-		for (int i = 0; i < pages.length; i++) {
-			// ensure the page container is large enough
-			Point pageDelta = calculatePageSizeDelta(pages[i]);
-			delta.x = Math.max(delta.x, pageDelta.x);
-			delta.y = Math.max(delta.y, pageDelta.y);
-		}
-		if (delta.x > 0 || delta.y > 0) {
-			// increase the size of the shell
-			Shell shell = getShell();
-			Point shellSize = shell.getSize();
-			setShellSize(shellSize.x + delta.x, shellSize.y + delta.y);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWizardContainer.
-	 */
-	public void updateTitleBar() {
-		String s = null;
-		if (currentPage != null) {
-			s = currentPage.getTitle();
-		}
-		if (s == null) {
-			s = ""; //$NON-NLS-1$
-		}
-		setTitle(s);
-		if (currentPage != null) {
-			setTitleImage(currentPage.getImage());
-			updateDescriptionMessage();
-		}
-		updateMessage();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWizardContainer.
-	 */
-	public void updateWindowTitle() {
-		if (getShell() == null) {
-			// Not created yet
-			return;
-		}
-		String title = wizard.getWindowTitle();
-		if (title == null) {
-			title = ""; //$NON-NLS-1$
-		}
-		getShell().setText(title);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.IPageChangeProvider#getSelectedPage()
-	 */
-	public Object getSelectedPage() {
-		return getCurrentPage();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialog.IPageChangeProvider#addPageChangedListener()
-	 */
-	public void addPageChangedListener(IPageChangedListener listener) {
-		pageChangedListeners.add(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialog.IPageChangeProvider#removePageChangedListener()
-	 */
-	public void removePageChangedListener(IPageChangedListener listener) {
-		pageChangedListeners.remove(listener);
-	}
-
-	/**
-	 * Notifies any selection changed listeners that the selected page has
-	 * changed. Only listeners registered at the time this method is called are
-	 * notified.
-	 * 
-	 * @param event
-	 *            a selection changed event
-	 * 
-	 * @see IPageChangedListener#pageChanged
-	 * 
-	 * @since 3.1
-	 */
-	protected void firePageChanged(final PageChangedEvent event) {
-		Object[] listeners = pageChangedListeners.getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			final IPageChangedListener l = (IPageChangedListener) listeners[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.pageChanged(event);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Adds a listener for page changes to the list of page changing listeners
-	 * registered for this dialog. Has no effect if an identical listener is
-	 * already registered.
-	 * 
-	 * @param listener
-	 *            a page changing listener
-	 * @since 3.3
-	 */
-	public void addPageChangingListener(IPageChangingListener listener) {
-		pageChangingListeners.add(listener);
-	}
-
-	/**
-	 * Removes the provided page changing listener from the list of page
-	 * changing listeners registered for the dialog.
-	 * 
-	 * @param listener
-	 *            a page changing listener
-	 * @since 3.3
-	 */
-	public void removePageChangingListener(IPageChangingListener listener) {
-		pageChangingListeners.remove(listener);
-	}
-
-	/**
-	 * Notifies any page changing listeners that the currently selected dialog
-	 * page is changing. Only listeners registered at the time this method is
-	 * called are notified.
-	 * 
-	 * @param event
-	 *            a selection changing event
-	 * 
-	 * @see IPageChangingListener#handlePageChanging(PageChangingEvent)
-	 * @since 3.3
-	 */
-	protected void firePageChanging(final PageChangingEvent event) {
-		Object[] listeners = pageChangingListeners.getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			final IPageChangingListener l = (IPageChangingListener) listeners[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.handlePageChanging(event);
-				}
-			});
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardPage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardPage.java
deleted file mode 100644
index 409cbdc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardPage.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import org.eclipse.jface.dialogs.DialogPage;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * An abstract base implementation of a wizard page.
- * <p>
- * Subclasses must implement the <code>createControl</code> method
- * to create the specific controls for the wizard page.
- * </p>
- * <p>
- * Subclasses may call the following methods to configure the wizard page:
- * <ul>
- *  <li><code>setDescription</code></li>
- *  <li><code>setErrorMessage</code></li>
- *  <li><code>setImageDescriptor</code></li>
- *  <li><code>setMessage</code></li>
- *  <li><code>setPageComplete</code></li>
- *  <li><code>setPreviousPage</code></li>
- *  <li><code>setTitle</code></li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may override these methods if required:
- * <ul>
- *  <li><code>performHelp</code> - may be reimplemented to display help for the page</li>  
- * <li><code>canFlipToNextPage</code> - may be extended or reimplemented</li>
- *  <li><code>isPageComplete</code> - may be extended </li>
- *  <li><code>setDescription</code> - may be extended </li>
- *  <li><code>setTitle</code> - may be extended </li>
- *  <li><code>dispose</code> - may be extended to dispose additional allocated SWT resources</li>
- * </ul>
- * </p>
- * <p>
- * Note that clients are free to implement <code>IWizardPage</code> from scratch
- * instead of subclassing <code>WizardPage</code>. Correct implementations of
- * <code>IWizardPage</code> will work with any correct implementation of 
- * <code>IWizard</code>.
- * </p>
- */
-public abstract class WizardPage extends DialogPage implements IWizardPage {
-
-    /**
-     * This page's name.
-     */
-    private String name;
-
-    /**
-     * The wizard to which this page belongs; <code>null</code>
-     * if this page has yet to be added to a wizard.
-     */
-    private IWizard wizard = null;
-
-    /**
-     * Indicates whether this page is complete.
-     */
-    private boolean isPageComplete = true;
-
-    /**
-     * The page that was shown right before this page became visible;
-     * <code>null</code> if none.
-     */
-    private IWizardPage previousPage = null;
-
-    /**
-     * Creates a new wizard page with the given name, and
-     * with no title or image.
-     *
-     * @param pageName the name of the page
-     */
-    protected WizardPage(String pageName) {
-        this(pageName, null, (ImageDescriptor) null);
-    }
-
-    /**
-     * Creates a new wizard page with the given name, title, and image.
-     *
-     * @param pageName the name of the page
-     * @param title the title for this wizard page,
-     *   or <code>null</code> if none
-     * @param titleImage the image descriptor for the title of this wizard page,
-     *   or <code>null</code> if none
-     */
-    protected WizardPage(String pageName, String title,
-            ImageDescriptor titleImage) {
-        super(title, titleImage);
-        Assert.isNotNull(pageName); // page name must not be null
-        name = pageName;
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this <code>IWizardPage</code>
-     * method returns <code>true</code> if this page is complete (<code>isPageComplete</code>)
-     * and there is a next page to flip to. Subclasses may override (extend or reimplement).
-     *
-     * @see #getNextPage
-     * @see #isPageComplete()
-     */
-    public boolean canFlipToNextPage() {
-        return isPageComplete() && getNextPage() != null;
-    }
-
-    /**
-     * Returns the wizard container for this wizard page.
-     *
-     * @return the wizard container, or <code>null</code> if this
-     *   wizard page has yet to be added to a wizard, or the
-     *   wizard has yet to be added to a container
-     */
-    protected IWizardContainer getContainer() {
-        if (wizard == null) {
-			return null;
-		}
-        return wizard.getContainer();
-    }
-
-    /**
-     * Returns the dialog settings for this wizard page.
-     *
-     * @return the dialog settings, or <code>null</code> if none
-     */
-    protected IDialogSettings getDialogSettings() {
-        if (wizard == null) {
-			return null;
-		}
-        return wizard.getDialogSettings();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IDialogPage.
-     */
-    public Image getImage() {
-        Image result = super.getImage();
-
-        if (result == null && wizard != null) {
-			return wizard.getDefaultPageImage();
-		}
-
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizardPage.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizardPage.
-     * The default behavior is to ask the wizard for the next page.
-     */
-    public IWizardPage getNextPage() {
-        if (wizard == null) {
-			return null;
-		}
-        return wizard.getNextPage(this);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizardPage.
-     * The default behavior is return the cached previous back or,
-     * lacking that, to ask the wizard for the previous page.
-     */
-    public IWizardPage getPreviousPage() {
-        if (previousPage != null) {
-			return previousPage;
-		}
-
-        if (wizard == null) {
-			return null;
-		}
-
-        return wizard.getPreviousPage(this);
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this method declared on
-     * <code>DialogPage</code> returns the shell of the container.
-     * The advantage of this implementation is that the shell is accessable
-     * once the container is created even though this page's control may not 
-     * yet be created.
-     */
-    public Shell getShell() {
-
-        IWizardContainer container = getContainer();
-        if (container == null) {
-			return null;
-		}
-
-        // Ask the wizard since our contents may not have been created.
-        return container.getShell();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizardPage.
-     */
-    public IWizard getWizard() {
-        return wizard;
-    }
-
-    /**
-     * Returns whether this page is the current one in the wizard's container.
-     *
-     * @return <code>true</code> if the page is active,
-     *  and <code>false</code> otherwise
-     */
-    protected boolean isCurrentPage() {
-        return (getContainer() != null && this == getContainer()
-                .getCurrentPage());
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this <code>IWizard</code> method 
-     * returns the value of an internal state variable set by
-     * <code>setPageComplete</code>. Subclasses may extend.
-     */
-    public boolean isPageComplete() {
-        return isPageComplete;
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this <code>IDialogPage</code>
-     * method extends the <code>DialogPage</code> implementation to update
-     * the wizard container title bar. Subclasses may extend.
-     */
-    public void setDescription(String description) {
-        super.setDescription(description);
-        if (isCurrentPage()) {
-			getContainer().updateTitleBar();
-		}
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this method 
-     * declared on <code>DialogPage</code> updates the container
-     * if this is the current page.
-     */
-    public void setErrorMessage(String newMessage) {
-        super.setErrorMessage(newMessage);
-        if (isCurrentPage()) {
-            getContainer().updateMessage();
-        }
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this method 
-     * declared on <code>DialogPage</code> updates the container
-     * if this page is the current page.
-     */
-    public void setImageDescriptor(ImageDescriptor image) {
-        super.setImageDescriptor(image);
-        if (isCurrentPage()) {
-			getContainer().updateTitleBar();
-		}
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this method 
-     * declared on <code>DialogPage</code> updates the container
-     * if this is the current page.
-     */
-    public void setMessage(String newMessage, int newType) {
-        super.setMessage(newMessage, newType);
-        if (isCurrentPage()) {
-			getContainer().updateMessage();
-		}
-    }
-
-    /**
-     * Sets whether this page is complete. 
-     * <p>
-     * This information is typically used by the wizard to decide
-     * when it is okay to move on to the next page or finish up.
-     * </p>
-     *
-     * @param complete <code>true</code> if this page is complete, and
-     *   and <code>false</code> otherwise
-     * @see #isPageComplete()
-     */
-    public void setPageComplete(boolean complete) {
-        isPageComplete = complete;
-        if (isCurrentPage()) {
-			getContainer().updateButtons();
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizardPage.
-     */
-    public void setPreviousPage(IWizardPage page) {
-        previousPage = page;
-    }
-
-    /**
-     * The <code>WizardPage</code> implementation of this <code>IDialogPage</code>
-     * method extends the <code>DialogPage</code> implementation to update
-     * the wizard container title bar. Subclasses may extend.
-     */
-    public void setTitle(String title) {
-        super.setTitle(title);
-        if (isCurrentPage()) {
-            getContainer().updateTitleBar();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizardPage.
-     */
-    public void setWizard(IWizard newWizard) {
-        wizard = newWizard;
-    }
-
-    /**
-     * Returns a printable representation of this wizard page suitable
-     * only for debug purposes.
-     */
-    public String toString() {
-        return name;
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardSelectionPage.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardSelectionPage.java
deleted file mode 100644
index 2fdfd9e..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/WizardSelectionPage.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.wizard;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * An abstract implementation of a wizard page that manages a
- * set of embedded wizards.
- * <p>
- * A wizard selection page should present a list of wizard nodes 
- * corresponding to other wizards. When the end user selects one of
- * them from the list, the first page of the selected wizard becomes
- * the next page. The only new methods introduced by this class are 
- * <code>getSelectedNode</code> and <code>setSelectedNode</code>. 
- * Otherwise, the subclass contract is the same as <code>WizardPage</code>.
- * </p>
- */
-public abstract class WizardSelectionPage extends WizardPage {
-
-    /**
-     * The selected node; <code>null</code> if none.
-     */
-    private IWizardNode selectedNode = null;
-
-    /**
-     * List of wizard nodes that have cropped up in the past
-     * (element type: <code>IWizardNode</code>).
-     */
-    private List selectedWizardNodes = new ArrayList();
-
-    /**
-     * Creates a new wizard selection page with the given name, and
-     * with no title or image.
-     *
-     * @param pageName the name of the page
-     */
-    protected WizardSelectionPage(String pageName) {
-        super(pageName);
-        // Cannot finish from this page
-        setPageComplete(false);
-    }
-
-    /**
-     * Adds the given wizard node to the list of selected nodes if
-     * it is not already in the list.
-     *
-     * @param node the wizard node, or <code>null</code>
-     */
-    private void addSelectedNode(IWizardNode node) {
-        if (node == null) {
-			return;
-		}
-
-        if (selectedWizardNodes.contains(node)) {
-			return;
-		}
-
-        selectedWizardNodes.add(node);
-    }
-
-    /**
-     * The <code>WizardSelectionPage</code> implementation of 
-     * this <code>IWizardPage</code> method returns <code>true</code>
-     * if there is a selected node.
-     */
-    public boolean canFlipToNextPage() {
-        return selectedNode != null;
-    }
-
-    /**	
-     * The <code>WizardSelectionPage</code> implementation of an <code>IDialogPage</code>
-     * method disposes of all nested wizards. Subclasses may extend.
-     */
-    public void dispose() {
-        super.dispose();
-        // notify nested wizards
-        for (int i = 0; i < selectedWizardNodes.size(); i++) {
-            ((IWizardNode) selectedWizardNodes.get(i)).dispose();
-        }
-    }
-
-    /**
-     * The <code>WizardSelectionPage</code> implementation of 
-     * this <code>IWizardPage</code> method returns the first page 
-     * of the currently selected wizard if there is one.
-     */
-    public IWizardPage getNextPage() {
-        if (selectedNode == null) {
-			return null;
-		}
-
-        boolean isCreated = selectedNode.isContentCreated();
-
-        IWizard wizard = selectedNode.getWizard();
-
-        if (wizard == null) {
-            setSelectedNode(null);
-            return null;
-        }
-
-        if (!isCreated) {
-			// Allow the wizard to create its pages
-            wizard.addPages();
-		}
-
-        return wizard.getStartingPage();
-    }
-
-    /**
-     * Returns the currently selected wizard node within this page.
-     * 
-     * @return the wizard node, or <code>null</code> if no node is selected
-     */
-    public IWizardNode getSelectedNode() {
-        return selectedNode;
-    }
-
-    /**
-     * Sets or clears the currently selected wizard node within this page. 
-     * 
-     * @param node the wizard node, or <code>null</code> to clear
-     */
-    protected void setSelectedNode(IWizardNode node) {
-        addSelectedNode(node);
-        selectedNode = node;
-        if (isCurrentPage()) {
-			getContainer().updateButtons();
-		}
-    }
-}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/images/page.gif b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/images/page.gif
deleted file mode 100644
index 4ed90dc..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/images/page.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/package.html b/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/package.html
deleted file mode 100644
index a262485..0000000
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/wizard/package.html
+++ /dev/null
@@ -1,47 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides a framework for wizards.
-<h2>
-Package Specification</h2>
-A wizard dialog is a specialized window for walking the end user through
-a sequence of steps; each step is presented on a separate page.
-<p>At the most abstract level, the protocol is given by 3 interfaces:
-<ul>
-<li>
-<tt>IWizard</tt> - a wizard consisting of several wizard pages</li>
-
-<li>
-<tt>IWizardPage</tt> - an individual wizard page</li>
-
-<li>
-<tt>IWizardContainer</tt> - the outside world from the point of view of
-a wizard</li>
-</ul>
-A wizard is any object implementing <tt>IWizard</tt>. The abstract base
-class <tt>Wizard</tt> is provided as a starting point; it is simpler to
-subclass <tt>Wizard</tt> than to implement <tt>IWizard</tt> from scratch.
-The main responsibility of a <tt>Wizard</tt> subclass is doing the real
-work when the wizard finishes.
-<p>Similarly, a wizard page is any object implementing <tt>IWizardPage</tt>.
-The abstract base class <tt>WizardPage</tt> is provided as a starting point.
-The main responsibility of a <tt>WizardPage</tt> subclass is providing
-the SWT controls and the backing logic for a single wizard page.
-<p><tt>WizardDialog</tt> is a ready-to-use JFace dialog that is instantiated
-with a wizard and acts as the wizard's container. This dialog has a standard
-layout: an area at the top containing the wizard's title, description,
-and image; the actual wizard page appears in the middle; below it is a
-progress indicator; and at the bottom is an area with a message line and
-a button bar containing Next, Back, Finish, Cancel, and Help buttons.
-<p><tt>WizardSelectionPage</tt>, a special abstract subclass of <tt>WizardPage</tt>,
-allows whole other wizards to be connected to a root page.
-<p>Note: None of the classes in this package maintain global state.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.views/.classpath b/bundles/org.eclipse.ui.views/.classpath
deleted file mode 100644
index ce73933..0000000
--- a/bundles/org.eclipse.ui.views/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.ui.views/.cvsignore b/bundles/org.eclipse.ui.views/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.ui.views/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.ui.views/.project b/bundles/org.eclipse.ui.views/.project
deleted file mode 100644
index 770eaa2..0000000
--- a/bundles/org.eclipse.ui.views/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ui.views</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 852d566..0000000
--- a/bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,93 +0,0 @@
-#Wed Apr 30 16:16:06 EDT 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=error
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index f27cfb9..0000000
--- a/bundles/org.eclipse.ui.views/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue Sep 12 08:59:34 EDT 2006
-eclipse.preferences.version=1
-internal.default.compliance=user
-org.eclipse.jdt.ui.javadoc=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return Returns the ${bare_field_name}.\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} The ${bare_field_name} to set.\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} IBM Corporation and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *     IBM Corporation - initial API and implementation\n ******************************************************************************/\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @since 3.3\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template></templates>
diff --git a/bundles/org.eclipse.ui.views/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.ui.views/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index 0f029be..0000000
--- a/bundles/org.eclipse.ui.views/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,26 +0,0 @@
-#Wed Apr 30 16:16:06 EDT 2008
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.deprecated=0
-compilers.p.discouraged-class=1
-compilers.p.illegal-att-value=0
-compilers.p.internal=1
-compilers.p.missing-bundle-classpath-entries=1
-compilers.p.missing-packages=2
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=0
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=1
-compilers.p.unknown-element=1
-compilers.p.unknown-identifier=1
-compilers.p.unknown-resource=1
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.p.unused-element-or-attribute=1
-compilers.s.create-docs=false
-compilers.s.doc-folder=doc
-compilers.s.open-tags=1
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
deleted file mode 100644
index 28dfcbe..0000000
--- a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ui.views; singleton:=true
-Bundle-Version: 3.3.0.qualifier
-Bundle-ClassPath: .
-Bundle-Activator: org.eclipse.ui.internal.views.ViewsPlugin
-Bundle-ActivationPolicy: lazy
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.ui.internal.views;x-internal:=true,
- org.eclipse.ui.internal.views.contentoutline;x-internal:=true,
- org.eclipse.ui.internal.views.properties; ui.views="split"; mandatory:="ui.views"; x-internal:=true,
- org.eclipse.ui.views.contentoutline,
- org.eclipse.ui.views.properties; ui.views="split"; mandatory:="ui.views"
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.ui;bundle-version="[3.3.0,4.0.0)"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/bundles/org.eclipse.ui.views/about.html b/bundles/org.eclipse.ui.views/about.html
deleted file mode 100644
index 4602330..0000000
--- a/bundles/org.eclipse.ui.views/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 2, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation 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
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.views/build.properties b/bundles/org.eclipse.ui.views/build.properties
deleted file mode 100644
index bbfa0a5..0000000
--- a/bundles/org.eclipse.ui.views/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = icons/,\
-               plugin.properties,\
-               plugin.xml,\
-               about.html,\
-               .,\
-               META-INF/
-src.includes = about.html
-source.. = src/
diff --git a/bundles/org.eclipse.ui.views/icons/full/dlcl16/defaults_ps.gif b/bundles/org.eclipse.ui.views/icons/full/dlcl16/defaults_ps.gif
deleted file mode 100644
index 641ba72..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/dlcl16/defaults_ps.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/dlcl16/filter_ps.gif b/bundles/org.eclipse.ui.views/icons/full/dlcl16/filter_ps.gif
deleted file mode 100644
index ba6d891..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/dlcl16/filter_ps.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/dlcl16/tree_mode.gif b/bundles/org.eclipse.ui.views/icons/full/dlcl16/tree_mode.gif
deleted file mode 100644
index 62bdbe2..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/dlcl16/tree_mode.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/elcl16/defaults_ps.gif b/bundles/org.eclipse.ui.views/icons/full/elcl16/defaults_ps.gif
deleted file mode 100644
index c064899..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/elcl16/defaults_ps.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/elcl16/filter_ps.gif b/bundles/org.eclipse.ui.views/icons/full/elcl16/filter_ps.gif
deleted file mode 100644
index 6fe6f0e..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/elcl16/filter_ps.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/elcl16/tree_mode.gif b/bundles/org.eclipse.ui.views/icons/full/elcl16/tree_mode.gif
deleted file mode 100644
index dda8bae..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/elcl16/tree_mode.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/eview16/outline_co.gif b/bundles/org.eclipse.ui.views/icons/full/eview16/outline_co.gif
deleted file mode 100644
index 0dc862c..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/eview16/outline_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/icons/full/eview16/prop_ps.gif b/bundles/org.eclipse.ui.views/icons/full/eview16/prop_ps.gif
deleted file mode 100644
index d11c996..0000000
--- a/bundles/org.eclipse.ui.views/icons/full/eview16/prop_ps.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.views/plugin.properties b/bundles/org.eclipse.ui.views/plugin.properties
deleted file mode 100644
index 0fae877..0000000
--- a/bundles/org.eclipse.ui.views/plugin.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName= Views
-providerName= Eclipse.org
-
-Views.PropertySheet = Properties
-Views.ContentOutline = Outline
-
diff --git a/bundles/org.eclipse.ui.views/plugin.xml b/bundles/org.eclipse.ui.views/plugin.xml
deleted file mode 100644
index 86d2559..0000000
--- a/bundles/org.eclipse.ui.views/plugin.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   
-     <extension
-         point="org.eclipse.ui.views">
-      <view
-            name="%Views.PropertySheet"
-            icon="$nl$/icons/full/eview16/prop_ps.gif"
-            category="org.eclipse.ui"
-            class="org.eclipse.ui.views.properties.PropertySheet"
-            id="org.eclipse.ui.views.PropertySheet">
-      </view>
-      <view
-            name="%Views.ContentOutline"
-            icon="$nl$/icons/full/eview16/outline_co.gif"
-            category="org.eclipse.ui"
-            class="org.eclipse.ui.views.contentoutline.ContentOutline"
-            id="org.eclipse.ui.views.ContentOutline">
-      </view>
-   </extension>
-   
-</plugin>
diff --git a/bundles/org.eclipse.ui.views/scripts/exportplugin.xml b/bundles/org.eclipse.ui.views/scripts/exportplugin.xml
deleted file mode 100644
index 5e71e54..0000000
--- a/bundles/org.eclipse.ui.views/scripts/exportplugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<project name="Eclipse Views" default="export" basedir="..">
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.eclipse.ui.views" />
-		<property name="version"  value="_2.1.0" />
-		<property name="dest"  value="${destdir}/${plugin}${version}" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-		<jar 
-			jarfile="${dest}/views.jar"
-			basedir="bin"
-		/>
-		<copy file="plugin.xml" todir="${dest}"/>
-		<copy file="plugin.properties" todir="${dest}"/>
-		<zip zipfile="${dest}/viewssrc.zip">
-		    <fileset dir="src" />
-		    <fileset dir="extensions" />
-  		</zip>				
-	</target>
-</project>
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/ViewsPlugin.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/ViewsPlugin.java
deleted file mode 100644
index e23b672..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/ViewsPlugin.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.views;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * The plug-in runtime class for the views UI plug-in (id <code>"org.eclipse.ui.views"</code>).
- * <p>
- * This class provides static methods and fields only; it is not intended to be
- * instantiated or subclassed by clients.
- * </p>
- * 
- * @since 2.1
- */
-public final class ViewsPlugin extends AbstractUIPlugin {
-    /**
-     * Views UI plug-in id (value <code>"org.eclipse.ui.views"</code>).
-     */
-    public static final String PLUGIN_ID = "org.eclipse.ui.views"; //$NON-NLS-1$
-	
-	private final static String ICONS_PATH = "$nl$/icons/full/";//$NON-NLS-1$
-
-    private static ViewsPlugin instance;
-
-    /**
-     * Returns the singleton instance.
-     * 
-     * @return the singleton instance.
-     */
-    public static ViewsPlugin getDefault() {
-        return instance;
-    }
-
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @see org.eclipse.core.runtime.Plugin#Plugin()
-     */
-    public ViewsPlugin() {
-        super();
-        instance = this;
-    }
-	
-	/**
-	 * Get the workbench image with the given path relative to
-	 * ICON_PATH.
-	 * @param relativePath
-	 * @return ImageDescriptor
-	 */
-	public static ImageDescriptor getViewImageDescriptor(String relativePath){
-		return imageDescriptorFromPlugin(PLUGIN_ID, ICONS_PATH + relativePath);
-	}
-    
-    /**
-     * If it is possible to adapt the given object to the given type, this
-     * returns the adapter. Performs the following checks:
-     * 
-     * <ol>
-     * <li>Returns <code>sourceObject</code> if it is an instance of the
-     * adapter type.</li>
-     * <li>If sourceObject implements IAdaptable, it is queried for adapters.</li>
-     * <li>If sourceObject is not an instance of PlatformObject (which would have
-     * already done so), the adapter manager is queried for adapters</li>
-     * </ol>
-     * 
-     * Otherwise returns null.
-     * 
-     * @param sourceObject
-     *            object to adapt, or null
-     * @param adapter
-     *            type to adapt to
-     * @param activatePlugins 
-     *            true if IAdapterManager.loadAdapter should be used (may trigger plugin activation)
-     * @return a representation of sourceObject that is assignable to the
-     *         adapter type, or null if no such representation exists
-     */
-    public static Object getAdapter(Object sourceObject, Class adapter, boolean activatePlugins) {
-    	Assert.isNotNull(adapter);
-        if (sourceObject == null) {
-            return null;
-        }
-        if (adapter.isInstance(sourceObject)) {
-            return sourceObject;
-        }
-
-        if (sourceObject instanceof IAdaptable) {
-            IAdaptable adaptable = (IAdaptable) sourceObject;
-
-            Object result = adaptable.getAdapter(adapter);
-            if (result != null) {
-                // Sanity-check
-                Assert.isTrue(adapter.isInstance(result));
-                return result;
-            }
-        } 
-        
-        if (!(sourceObject instanceof PlatformObject)) {
-        	Object result;
-        	if (activatePlugins) {
-        		result = Platform.getAdapterManager().loadAdapter(sourceObject, adapter.getName());
-        	} else {
-        		result = Platform.getAdapterManager().getAdapter(sourceObject, adapter);
-        	}
-            if (result != null) {
-                return result;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/ContentOutlineMessages.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/ContentOutlineMessages.java
deleted file mode 100644
index e038dcc..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/ContentOutlineMessages.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.views.contentoutline;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * ContentOutlineMessages is the message class for the messages used in the content outline.
- *
- */
-public class ContentOutlineMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.views.contentoutline.messages";//$NON-NLS-1$
-
-	// ==============================================================================
-	// Outline View
-	// ==============================================================================
-	/** */
-	public static String ContentOutline_noOutline;
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, ContentOutlineMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/messages.properties b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/messages.properties
deleted file mode 100644
index 2e229b9..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/messages.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2005  IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# package: org.eclipse.ui.views.contentoutline
-
-
-# ==============================================================================
-# Outline View
-# ==============================================================================
-ContentOutline_noOutline = An outline is not available.
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/package.html b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/package.html
deleted file mode 100644
index 87324c3..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/contentoutline/package.html
+++ /dev/null
@@ -1,13 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides the internal support for the Content Outline view.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/PropertiesMessages.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/PropertiesMessages.java
deleted file mode 100644
index 76a001c..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/PropertiesMessages.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.views.properties;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- */
-public class PropertiesMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.views.properties.messages";//$NON-NLS-1$
-
-	// package: org.eclipse.ui.views.properties
-
-	// ==============================================================================
-	// Properties View
-	// ==============================================================================
-
-	/** */
-	public static String Categories_text;
-	/** */
-	public static String Categories_toolTip;
-
-	/** */
-	public static String Columns_text;
-	/** */
-	public static String Columns_toolTip;
-	
-	/** */
-	public static String CopyProperty_text;
-
-	/** */
-	public static String Defaults_text;
-	/** */
-	public static String Defaults_toolTip;
-
-	/** */
-	public static String Filter_text;
-	/** */
-	public static String Filter_toolTip;
-
-	/** */
-	public static String PropertyViewer_property;
-	/** */
-	public static String PropertyViewer_value;
-	/** */
-	public static String PropertyViewer_misc;
-
-	/** */
-	public static String CopyToClipboardProblemDialog_title;
-	/** */
-	public static String CopyToClipboardProblemDialog_message;
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, PropertiesMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/messages.properties b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/messages.properties
deleted file mode 100644
index 7e54679..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/internal/views/properties/messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# package: org.eclipse.ui.views.properties
-
-# ==============================================================================
-# Properties View
-# ==============================================================================
-
-Categories_text = Show &Categories
-Categories_toolTip = Show Categories
-
-Columns_text = Co&lumns...
-Columns_toolTip = Configure Columns
-
-CopyProperty_text = &Copy
-
-Defaults_text = &Restore Default Value
-Defaults_toolTip = Restore Default Value
-
-Filter_text = Show &Advanced Properties
-Filter_toolTip = Show Advanced Properties
-
-PropertyViewer_property = Property
-PropertyViewer_value = Value
-PropertyViewer_misc = Misc
-
-CopyToClipboardProblemDialog_title=Problem Copying to Clipboard
-CopyToClipboardProblemDialog_message=There was a problem when accessing the system clipboard. Retry?
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutline.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutline.java
deleted file mode 100644
index ec48552..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutline.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.views.contentoutline;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.views.ViewsPlugin;
-import org.eclipse.ui.internal.views.contentoutline.ContentOutlineMessages;
-import org.eclipse.ui.part.IContributedContentsView;
-import org.eclipse.ui.part.IPage;
-import org.eclipse.ui.part.IPageBookViewPage;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.part.MessagePage;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.PageBookView;
-
-/**
- * Main class for the Content Outline View.
- * <p>
- * This standard view has id <code>"org.eclipse.ui.views.ContentOutline"</code>.
- * </p>
- * When a <b>content outline view</b> notices an editor being activated, it 
- * asks the editor whether it has a <b>content outline page</b> to include
- * in the outline view. This is done using <code>getAdapter</code>:
- * <pre>
- * IEditorPart editor = ...;
- * IContentOutlinePage outlinePage = (IContentOutlinePage) editor.getAdapter(IContentOutlinePage.class);
- * if (outlinePage != null) {
- *    // editor wishes to contribute outlinePage to content outline view
- * }
- * </pre>
- * If the editor supports a content outline page, the editor instantiates
- * and configures the page, and returns it. This page is then added to the 
- * content outline view (a pagebook which presents one page at a time) and 
- * immediately made the current page (the content outline view need not be
- * visible). If the editor does not support a content outline page, the content
- * outline view shows a special default page which makes it clear to the user
- * that the content outline view is disengaged. A content outline page is free
- * to report selection events; the content outline view forwards these events 
- * along to interested parties. When the content outline view notices a
- * different editor being activated, it flips to the editor's corresponding
- * content outline page. When the content outline view notices an editor being
- * closed, it destroys the editor's corresponding content outline page.
- * </p>
- * <p>
- * The workbench will automatically instantiate this class when a Content
- * Outline view is needed for a workbench window. This class was not intended
- * to be instantiated or subclassed by clients.
- * </p>
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ContentOutline extends PageBookView implements ISelectionProvider,
-        ISelectionChangedListener {
-
-
-
-    /**
-     * The plugin prefix.
-     */
-    public static final String PREFIX = PlatformUI.PLUGIN_ID + "."; //$NON-NLS-1$
-
-    /**
-     * Help context id used for the content outline view
-     * (value <code>"org.eclipse.ui.content_outline_context"</code>).
-     */
-    public static final String CONTENT_OUTLINE_VIEW_HELP_CONTEXT_ID = PREFIX
-            + "content_outline_context";//$NON-NLS-1$
-
-    /**
-     * Message to show on the default page.
-     */
-    private String defaultText =ContentOutlineMessages.ContentOutline_noOutline; 
-
-    /**
-     * Creates a content outline view with no content outline pages.
-     */
-    public ContentOutline() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void addSelectionChangedListener(ISelectionChangedListener listener) {
-        getSelectionProvider().addSelectionChangedListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     */
-    protected IPage createDefaultPage(PageBook book) {
-        MessagePage page = new MessagePage();
-        initPage(page);
-        page.createControl(book);
-        page.setMessage(defaultText);
-        return page;
-    }
-
-    /**
-     * The <code>PageBookView</code> implementation of this <code>IWorkbenchPart</code>
-     * method creates a <code>PageBook</code> control with its default page showing.
-     */
-    public void createPartControl(Composite parent) {
-        super.createPartControl(parent);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(getPageBook(),
-                CONTENT_OUTLINE_VIEW_HELP_CONTEXT_ID);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     */
-    protected PageRec doCreatePage(IWorkbenchPart part) {
-        // Try to get an outline page.
-        Object obj = ViewsPlugin.getAdapter(part, IContentOutlinePage.class, false);
-        if (obj instanceof IContentOutlinePage) {
-            IContentOutlinePage page = (IContentOutlinePage) obj;
-            if (page instanceof IPageBookViewPage) {
-				initPage((IPageBookViewPage) page);
-			}
-            page.createControl(getPageBook());
-            return new PageRec(part, page);
-        }
-        // There is no content outline
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     */
-    protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {
-        IContentOutlinePage page = (IContentOutlinePage) rec.page;
-        page.dispose();
-        rec.dispose();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAdaptable.
-     */
-    public Object getAdapter(Class key) {
-        if (key == IContributedContentsView.class) {
-			return new IContributedContentsView() {
-                public IWorkbenchPart getContributingPart() {
-                    return getContributingEditor();
-                }
-            };
-		}
-        return super.getAdapter(key);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     */
-    protected IWorkbenchPart getBootstrapPart() {
-        IWorkbenchPage page = getSite().getPage();
-        if (page != null) {
-			return page.getActiveEditor();
-		}
-
-        return null;
-    }
-
-    /**
-     * Returns the editor which contributed the current 
-     * page to this view.
-     *
-     * @return the editor which contributed the current page
-     * or <code>null</code> if no editor contributed the current page
-     */
-    private IWorkbenchPart getContributingEditor() {
-        return getCurrentContributingPart();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public ISelection getSelection() {
-        // get the selection from the selection provider
-        return getSelectionProvider().getSelection();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     * We only want to track editors.
-     */
-    protected boolean isImportant(IWorkbenchPart part) {
-        //We only care about editors
-        return (part instanceof IEditorPart);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IViewPart.
-     * Treat this the same as part activation.
-     */
-    public void partBroughtToTop(IWorkbenchPart part) {
-        partActivated(part);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void removeSelectionChangedListener(
-            ISelectionChangedListener listener) {
-        getSelectionProvider().removeSelectionChangedListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionChangedListener.
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        getSelectionProvider().selectionChanged(event);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void setSelection(ISelection selection) {
-        getSelectionProvider().setSelection(selection);
-    }
-
-    /**
-     * The <code>ContentOutline</code> implementation of this <code>PageBookView</code> method
-     * extends the behavior of its parent to use the current page as a selection provider.
-     * 
-     * @param pageRec the page record containing the page to show
-     */
-    protected void showPageRec(PageRec pageRec) {
-        IPageSite pageSite = getPageSite(pageRec.page);
-        ISelectionProvider provider = pageSite.getSelectionProvider();
-        if (provider == null && (pageRec.page instanceof IContentOutlinePage)) {
-			// This means that the page did not set a provider during its initialization 
-            // so for backward compatibility we will set the page itself as the provider.
-            pageSite.setSelectionProvider((IContentOutlinePage) pageRec.page);
-		}
-        super.showPageRec(pageRec);
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutlinePage.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutlinePage.java
deleted file mode 100644
index 5bf036c..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/ContentOutlinePage.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.contentoutline;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.part.Page;
-
-/**
- * An abstract base class for content outline pages.
- * <p>
- * Clients who are defining an editor may elect to provide a corresponding
- * content outline page. This content outline page will be presented to the
- * user via the standard Content Outline View (the user decides whether their
- * workbench window contains this view) whenever that editor is active.
- * This class should be subclassed.
- * </p>
- * <p>
- * Internally, each content outline page consists of a standard tree viewer; 
- * selections made in the tree viewer are reported as selection change events 
- * by the page (which is a selection provider). The tree viewer is not created 
- * until <code>createPage</code> is called; consequently, subclasses must extend
- * <code>createControl</code> to configure the tree viewer with a proper content 
- * provider, label provider, and input element.
- * </p>
- * <p>
- * Note that those wanting to use a control other than internally created
- * <code>TreeViewer</code> will need to implement 
- * <code>IContentOutlinePage</code> directly rather than subclassing this class.
- * </p> 
- */
-public abstract class ContentOutlinePage extends Page implements
-        IContentOutlinePage, ISelectionChangedListener {
-    private ListenerList selectionChangedListeners = new ListenerList();
-
-    private TreeViewer treeViewer;
-
-    /**
-     * Create a new content outline page.
-     */
-    protected ContentOutlinePage() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void addSelectionChangedListener(ISelectionChangedListener listener) {
-        selectionChangedListeners.add(listener);
-    }
-
-    /**
-     * The <code>ContentOutlinePage</code> implementation of this 
-     * <code>IContentOutlinePage</code> method creates a tree viewer. Subclasses
-     * must extend this method configure the tree viewer with a proper content 
-     * provider, label provider, and input element.
-     * @param parent
-     */
-    public void createControl(Composite parent) {
-        treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL
-                | SWT.V_SCROLL);
-        treeViewer.addSelectionChangedListener(this);
-    }
-
-    /**
-     * Fires a selection changed event.
-     *
-     * @param selection the new selection
-     */
-    protected void fireSelectionChanged(ISelection selection) {
-        // create an event
-        final SelectionChangedEvent event = new SelectionChangedEvent(this,
-                selection);
-
-        // fire the event
-        Object[] listeners = selectionChangedListeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-            final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-            SafeRunner.run(new SafeRunnable() {
-                public void run() {
-                    l.selectionChanged(event);
-                }
-            });
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPage (and Page).
-     */
-    public Control getControl() {
-        if (treeViewer == null) {
-			return null;
-		}
-        return treeViewer.getControl();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public ISelection getSelection() {
-        if (treeViewer == null) {
-			return StructuredSelection.EMPTY;
-		}
-        return treeViewer.getSelection();
-    }
-
-    /**
-     * Returns this page's tree viewer.
-     *
-     * @return this page's tree viewer, or <code>null</code> if 
-     *   <code>createControl</code> has not been called yet
-     */
-    protected TreeViewer getTreeViewer() {
-        return treeViewer;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.ui.part.IPageBookViewPage#init(org.eclipse.ui.part.IPageSite)
-     */
-    public void init(IPageSite pageSite) {
-        super.init(pageSite);
-        pageSite.setSelectionProvider(this);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void removeSelectionChangedListener(
-            ISelectionChangedListener listener) {
-        selectionChangedListeners.remove(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionChangeListener.
-     * Gives notification that the tree selection has changed.
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        fireSelectionChanged(event.getSelection());
-    }
-
-    /**
-     * Sets focus to a part in the page.
-     */
-    public void setFocus() {
-        treeViewer.getControl().setFocus();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionProvider.
-     */
-    public void setSelection(ISelection selection) {
-        if (treeViewer != null) {
-			treeViewer.setSelection(selection);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/IContentOutlinePage.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/IContentOutlinePage.java
deleted file mode 100644
index 6893210..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/IContentOutlinePage.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.contentoutline;
-
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.part.IPage;
-
-/**
- * Marker-style interface for a content outline page. This interface defines
- * the minimum requirement for pages within the content outline view, namely
- * they must be pages (implement <code>IPage</code>) and provide selections
- * (implement <code>ISelectionProvider</code>).
- * <p>
- * Access to a content outline page begins when an editor is activated. When
- * activation occurs, the content outline view will ask the editor for its
- * content outline page. This is done by invoking 
- * <code>getAdapter(IContentOutlinePage.class)</code> on the editor.  
- * If the editor returns a page, the view then creates the controls for that
- * page (using <code>createControl</code>) and makes the page visible.
- * </p>
- * <p>
- * Clients may implement this interface from scratch, or subclass the
- * abstract base class <code>ContentOutlinePage</code>.
- * </p>
- * <p> 
- * Note that this interface extends <code>ISelectionProvider</code>.
- * This is no longer required in the case of implementors who also 
- * implement <code>IPageBookViewPage</code> (or extend <code>Page</code>)
- * as they are now passed an <code>IPageSite</code> during their initialization 
- * and this site can be configured with a selection provider. 
- * However to avoid a breaking change 
- *  1) this interface will continue to extend ISelectionProvider 
- *  2) if an IContentOutlinePage does not set a selection provider for its 
- * site, the ContentOutline will continue to use the page itself for 
- * this purpose. 
- * </p> 
- *
- * @see ContentOutlinePage
- */
-public interface IContentOutlinePage extends IPage, ISelectionProvider {
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/package.html b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/package.html
deleted file mode 100644
index 70d2165..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/contentoutline/package.html
+++ /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="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides the standard Content Outline view which can
-show the active editor's custom outline for the document being edited.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CategoriesAction.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CategoriesAction.java
deleted file mode 100644
index 6e949e3..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CategoriesAction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This action hides or shows categories in the <code>PropertySheetViewer</code>.
- */
-/*package*/class CategoriesAction extends PropertySheetAction {
-    /**
-     * Creates the Categories action. This action is used to show
-     * or hide categories properties.
-     * @param viewer the viewer
-     * @param name the name
-     */
-    public CategoriesAction(PropertySheetViewer viewer, String name) {
-        super(viewer, name);
-        PlatformUI.getWorkbench().getHelpSystem()
-                .setHelp(this, IPropertiesHelpContextIds.CATEGORIES_ACTION);
-    }
-
-    /**
-     * Toggles the display of categories for the properties.
-     */
-    public void run() {
-        PropertySheetViewer ps = getPropertySheet();
-        ps.deactivateCellEditor();
-        if (isChecked()) {
-            ps.showCategories();
-        } else {
-            ps.hideCategories();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ColorPropertyDescriptor.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ColorPropertyDescriptor.java
deleted file mode 100644
index 4d001c7..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ColorPropertyDescriptor.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColorCellEditor;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Descriptor for a property that has a color value which should be edited
- * with a color cell editor.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Example:
- * <pre>
- * IPropertyDescriptor pd = new ColorPropertyDescriptor("fg", "Foreground Color");
- * </pre>
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ColorPropertyDescriptor extends PropertyDescriptor {
-    /**
-     * Creates an property descriptor with the given id and display name.
-     * 
-     * @param id the id of the property
-     * @param displayName the name to display for the property
-     */
-    public ColorPropertyDescriptor(Object id, String displayName) {
-        super(id, displayName);
-    }
-
-    /**
-     * The <code>ColorPropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method creates and returns a new
-     * <code>ColorCellEditor</code>.
-     * <p>
-     * The editor is configured with the current validator if there is one.
-     * </p>
-     */
-    public CellEditor createPropertyEditor(Composite parent) {
-        CellEditor editor = new ColorCellEditor(parent);
-        if (getValidator() != null) {
-			editor.setValidator(getValidator());
-		}
-        return editor;
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxLabelProvider.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxLabelProvider.java
deleted file mode 100644
index ff41832..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxLabelProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.LabelProvider;
-
-/**
- * An <code>ILabelProvider</code> that assists in rendering labels for 
- * <code>ComboBoxPropertyDescriptors</code>.  The label for a given 
- * <code>Integer</code> value is the <code>String</code> at the value in 
- * the provided values array.  
- * 
- * @since 3.0
- */
-public class ComboBoxLabelProvider extends LabelProvider {
-
-    /**
-     * The array of String labels.
-     */
-    private String[] values;
-
-    /**
-     * @param values the possible label values that this 
-     * <code>ILabelProvider</code> may return.
-     */
-    public ComboBoxLabelProvider(String[] values) {
-        this.values = values;
-    }
-
-    /**
-     * @return the possible label values that this 
-     * <code>ILabelProvider</code> may return.
-     */
-    public String[] getValues() {
-        return values;
-    }
-
-    /**
-     * @param values the possible label values that this 
-     * <code>ILabelProvider</code> may return.
-     */
-    public void setValues(String[] values) {
-        this.values = values;
-    }
-
-    /**
-     * Returns the <code>String</code> that maps to the given 
-     * <code>Integer</code> offset in the values array.
-     * 
-     * @param element an <code>Integer</code> object whose value is a valid 
-     * location within the values array of the receiver
-     * @return a <code>String</code> from the provided values array, or the 
-     * empty <code>String</code> 
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        if (element == null) {
-            return ""; //$NON-NLS-1$
-        }
-
-        if (element instanceof Integer) {
-            int index = ((Integer) element).intValue();
-            if (index >= 0 && index < values.length) {
-                return values[index];
-            }
-			return ""; //$NON-NLS-1$
-        }
-
-        return ""; //$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxPropertyDescriptor.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxPropertyDescriptor.java
deleted file mode 100644
index c431968..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ComboBoxPropertyDescriptor.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Descriptor for a property that has a value which should be edited
- * with a combo box cell editor.  This class provides a default 
- * <code>ILabelProvider</code> that will render the label of the given 
- * descriptor as the <code>String</code> found in the labels array at the 
- * currently selected index.
- * <p>
- * The value of the property is a 0-based <code>Integer</code> index into
- * the labels array. 
- * </p>
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Example:
- * <pre>
- * String[] values = {"Top left", "Top right", "Bottom left", "Bottom right"};
- * IPropertyDescriptor pd = new ComboBoxPropertyDescriptor("origin", "Origin", values);
- * </pre>
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ComboBoxPropertyDescriptor extends PropertyDescriptor {
-
-    /**
-     * The labels to display in the combo box
-     */
-    private String[] labels;
-
-    /**
-     * Creates an property descriptor with the given id, display name, and list
-     * of value labels to display in the combo box cell editor.
-     * 
-     * @param id the id of the property
-     * @param displayName the name to display for the property
-     * @param labelsArray the labels to display in the combo box
-     */
-    public ComboBoxPropertyDescriptor(Object id, String displayName,
-            String[] labelsArray) {
-        super(id, displayName);
-        labels = labelsArray;
-    }
-
-    /**
-     * The <code>ComboBoxPropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method creates and returns a new
-     * <code>ComboBoxCellEditor</code>.
-     * <p>
-     * The editor is configured with the current validator if there is one.
-     * </p>
-     */
-    public CellEditor createPropertyEditor(Composite parent) {
-        CellEditor editor = new ComboBoxCellEditor(parent, labels,
-                SWT.READ_ONLY);
-        if (getValidator() != null) {
-			editor.setValidator(getValidator());
-		}
-        return editor;
-    }
-
-    /**
-     * The <code>ComboBoxPropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value set by
-     * the <code>setProvider</code> method or, if no value has been set
-     * it returns a <code>ComboBoxLabelProvider</code> created from the 
-     * valuesArray of this <code>ComboBoxPropertyDescriptor</code>.
-     *
-     * @see #setLabelProvider(ILabelProvider)
-     */
-    public ILabelProvider getLabelProvider() {
-        if (isLabelProviderSet()) {
-			return super.getLabelProvider();
-		}
-		return new ComboBoxLabelProvider(labels);
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CopyPropertyAction.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CopyPropertyAction.java
deleted file mode 100644
index c851042..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/CopyPropertyAction.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.views.properties.PropertiesMessages;
-
-/**
- * Copies a property to the clipboard.
- */
-/*package*/class CopyPropertyAction extends PropertySheetAction {
-    /**
-     * System clipboard
-     */
-    private Clipboard clipboard;
-
-    /**
-     * Creates the action.
-     * 
-     * @param viewer the viewer
-     * @param name the name
-     * @param clipboard the clipboard
-     */
-    public CopyPropertyAction(PropertySheetViewer viewer, String name,
-            Clipboard clipboard) {
-        super(viewer, name);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-                IPropertiesHelpContextIds.COPY_PROPERTY_ACTION);
-        this.clipboard = clipboard;
-    }
-
-    /**
-     * Performs this action.
-     */
-    public void run() {
-        // Get the selected property
-        IStructuredSelection selection = (IStructuredSelection) getPropertySheet()
-                .getSelection();
-        if (selection.isEmpty()) {
-			return;
-		}
-        // Assume single selection
-        IPropertySheetEntry entry = (IPropertySheetEntry) selection
-                .getFirstElement();
-
-        // Place text on the clipboard
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(entry.getDisplayName());
-        buffer.append("\t"); //$NON-NLS-1$
-        buffer.append(entry.getValueAsString());
-
-        setClipboard(buffer.toString());
-    }
-
-    /** 
-     * Updates enablement based on the current selection.
-     * 
-     * @param sel the selection
-     */
-    public void selectionChanged(IStructuredSelection sel) {
-        setEnabled(!sel.isEmpty());
-    }
-
-    private void setClipboard(String text) {
-        try {
-            Object[] data = new Object[] { text };
-            Transfer[] transferTypes = new Transfer[] { TextTransfer
-                    .getInstance() };
-            clipboard.setContents(data, transferTypes);
-        } catch (SWTError e) {
-            if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
-				throw e;
-			}
-            if (MessageDialog.openQuestion(getPropertySheet().getControl()
-                    .getShell(), PropertiesMessages.CopyToClipboardProblemDialog_title,
-                    PropertiesMessages.CopyToClipboardProblemDialog_message)) {
-				setClipboard(text);
-			}
-        }
-    }
-}
-
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/DefaultsAction.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/DefaultsAction.java
deleted file mode 100644
index f14cc19..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/DefaultsAction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This action resets the <code>PropertySheetViewer</code> values back
- * to the default values.
- *
- * [Issue: should listen for selection changes in the viewer and set enablement]
- */
-/*package*/class DefaultsAction extends PropertySheetAction {
-    /**
-     * Create the Defaults action. This action is used to set
-     * the properties back to their default values.
-     * 
-     * @param viewer the viewer
-     * @param name the name
-     */
-    public DefaultsAction(PropertySheetViewer viewer, String name) {
-        super(viewer, name);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-				IPropertiesHelpContextIds.DEFAULTS_ACTION);
-    }
-
-    /**
-     * Reset the properties to their default values.
-     */
-    public void run() {
-        getPropertySheet().deactivateCellEditor();
-        getPropertySheet().resetProperties();
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/FilterAction.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/FilterAction.java
deleted file mode 100644
index e9c344d..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/FilterAction.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This action hides or shows expert properties in the <code>PropertySheetViewer</code>.
- */
-/*package*/class FilterAction extends PropertySheetAction {
-    /**
-     * Create the Filter action. This action is used to show
-     * or hide expert properties.
-     * 
-     * @param viewer the viewer
-     * @param name the name
-     */
-    public FilterAction(PropertySheetViewer viewer, String name) {
-        super(viewer, name);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-				IPropertiesHelpContextIds.FILTER_ACTION);
-    }
-
-    /**
-     * Toggle the display of expert properties.
-     */
-
-    public void run() {
-        PropertySheetViewer ps = getPropertySheet();
-        ps.deactivateCellEditor();
-        if (isChecked()) {
-            ps.showExpert();
-        } else {
-            ps.hideExpert();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ICellEditorActivationListener.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ICellEditorActivationListener.java
deleted file mode 100644
index fffb571..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/ICellEditorActivationListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-
-/**
- * A listener which is notified when a cell editor is 
- * activated/deactivated
- */
-/*package*/interface ICellEditorActivationListener {
-    /**
-     * Notifies that the cell editor has been activated
-     *
-     * @param cellEditor the cell editor which has been activated
-     */
-    public void cellEditorActivated(CellEditor cellEditor);
-
-    /**
-     * Notifies that the cell editor has been deactivated
-     *
-     * @param cellEditor the cell editor which has been deactivated
-     */
-    public void cellEditorDeactivated(CellEditor cellEditor);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertiesHelpContextIds.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertiesHelpContextIds.java
deleted file mode 100644
index 7d3e4c0..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertiesHelpContextIds.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Help context ids for the properties view.
- * <p>
- * This interface contains constants only; it is not intended to be implemented
- * or extended.
- * </p>
- * 
- */
-/*package*/interface IPropertiesHelpContextIds {
-    public static final String PREFIX = PlatformUI.PLUGIN_ID + "."; //$NON-NLS-1$
-
-    // Actions
-    public static final String CATEGORIES_ACTION = PREFIX
-            + "properties_categories_action_context"; //$NON-NLS-1$
-
-    public static final String DEFAULTS_ACTION = PREFIX
-            + "properties_defaults_action_context"; //$NON-NLS-1$
-
-    public static final String FILTER_ACTION = PREFIX
-            + "properties_filter_action_context"; //$NON-NLS-1$
-
-    public static final String COPY_PROPERTY_ACTION = PREFIX
-            + "properties_copy_action_context"; //$NON-NLS-1$
-
-    // Views
-    public static final String PROPERTY_SHEET_VIEW = PREFIX
-            + "property_sheet_view_context"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertyDescriptor.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertyDescriptor.java
deleted file mode 100644
index 40d7c9b..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertyDescriptor.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * A descriptor for a property to be presented by a standard property sheet page
- * (<code>PropertySheetPage</code>). These descriptors originate with property 
- * sources (<code>IPropertySource</code>).
- * <p>
- * A property descriptor carries the following information:
- * <ul>
- *   <li>property id (required)</li>
- *   <li>display name (required)</li>
- *   <li>brief description of the property (optional)</li>
- *   <li>category for grouping related properties (optional)</li>
- *   <li>label provider used to display the property value (optional)</li>
- *   <li>cell editor for changing the property value (optional)</li>
- *   <li>help context id (optional)</li>
- * </ul>
- * </p>
- * <p>
- * Clients may implement this interface to provide specialized property 
- * descriptors; however, there are standard implementations declared in
- * this package that take care of the most common cases:
- * <ul>
- *   <li><code>PropertyDescriptor - read-only property</li>
- *   <li><code>TextPropertyDescriptor</code> - edits with a 
- *      <code>TextCellEditor</code></li>
- *   <li><code>CheckboxPropertyDescriptor - edits with a 
- *      <code>CheckboxCellEditor</code></code></li>
- *   <li><code>ComboBoxPropertyDescriptor - edits with a
- *      <code>ComboBoxCellEditor</code></code></li>
- *   <li><code>ColorPropertyDescriptor - edits with a 
- *      <code>ColorCellEditor</code></code></li>
- * </ul>
- * </p>
- *
- * @see IPropertySource#getPropertyDescriptors
- */
-public interface IPropertyDescriptor {
-    /**
-     * Creates and returns a new cell editor for editing this property. Returns 
-     * <code>null</code> if the property is not editable.
-     *
-     * @param parent the parent widget for the cell editor
-     * @return the cell editor for this property, or <code>null</code> if this
-     *  property cannot be edited
-     */
-    public CellEditor createPropertyEditor(Composite parent);
-
-    /**
-     * Returns the name of the category to which this property belongs. Properties
-     * belonging to the same category are grouped together visually. This localized 
-     * string is shown to the user
-     * 
-     * @return the category name, or <code>null</code> if the default category is to
-     *   be used
-     */
-    public String getCategory();
-
-    /**
-     * Returns a brief description of this property. This localized string is shown 
-     * to the user when this property is selected.
-     * 
-     * @return a brief description, or <code>null</code> if none
-     */
-    public String getDescription();
-
-    /**
-     * Returns the display name for this property. This localized string is shown to
-     * the user as the name of this property.
-     * 
-     * @return a displayable name
-     */
-    public String getDisplayName();
-
-    /**
-     * Returns a list of filter types to which this property belongs.
-     * The user is able to toggle the filters to show/hide properties belonging to
-     * a filter type.
-     * <p>
-     * Valid values for these flags are declared as constants on 
-     *  <code>IPropertySheetEntry</code>
-     * </p> 
-     * @return a list of filter types to which this property belongs, or
-     *   <code>null</code> if none
-     */
-    public String[] getFilterFlags();
-
-    /**
-     * Returns the help context id for this property or 
-     * <code>null</code> if this property has no help context id.
-     * <p>
-     * NOTE: Help support system API's changed since 2.0 and arrays
-     * of contexts are no longer supported.
-     * </p>
-     * <p>
-     * Thus the only valid non-<code>null</code> return type for this method
-     * is a <code>String</code> representing a context id. The previously
-     * valid return types are deprecated. The plural name for this method
-     * is unfortunate.
-     * </p>
-     * 
-     * @return the help context id for this entry
-     */
-    public Object getHelpContextIds();
-
-    /**
-     * Returns the id for this property. This object is
-     * used internally to distinguish one property descriptor 
-     * from another.
-     *
-     * @return the property id
-     */
-    public Object getId();
-
-    /**
-     * Returns the label provider for this property. The label provider is used
-     * to obtain the text (and possible image) for displaying the <it>value</it>
-     * of this property.
-     *
-     * @return the label provider used to display this property
-     */
-    public ILabelProvider getLabelProvider();
-
-    /**
-     * Returns whether this property descriptor and the given one are compatible.
-     * <p>
-     * The property sheet uses this method during multiple selection to determine
-     * whether two property descriptors with the same id are in fact the same 
-     * property and can be displayed as a single entry in the property sheet.
-     * </p>
-     *
-     * @param anotherProperty the other property descriptor 
-     * @return <code>true</code> if the property descriptors are compatible, and 
-     *   <code>false</code> otherwise
-     */
-    public boolean isCompatibleWith(IPropertyDescriptor anotherProperty);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntry.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntry.java
deleted file mode 100644
index 9d67f17..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntry.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * <code>IPropertySheetEntry</code> describes the model interface for the
- * property sheet.
- * <p>
- * May be implemented when supplying a custom root entry to a property page.
- * </p>
- */
-public interface IPropertySheetEntry {
-
-    /**
-     * The filter id for expert properties
-     */
-    public String FILTER_ID_EXPERT = "org.eclipse.ui.views.properties.expert"; //$NON-NLS-1$
-
-    /**
-     * Adds the given listener to this entry's collection of listeners.
-     * 
-     * @param listener
-     *            the listener to add
-     */
-    public void addPropertySheetEntryListener(
-            IPropertySheetEntryListener listener);
-
-    /**
-     * Apply the current cell editor value.
-     */
-    public void applyEditorValue();
-
-    /**
-     * Called when the entry is no longer needed
-     */
-    public void dispose();
-
-    /**
-     * Returns the entry's category.
-     * 
-     * @return the entry's category
-     */
-    public String getCategory();
-
-    /**
-     * Returns the child entries for this entry.
-     * 
-     * @return the child entries for this entry
-     */
-    public IPropertySheetEntry[] getChildEntries();
-
-    /**
-     * Return a short description of the property sheet entry. Typically this
-     * description is shown in a status line when the entry is selected.
-     * 
-     * @return the entry's description
-     */
-    public String getDescription();
-
-    /**
-     * Returns the name used to display the property.
-     * 
-     * @return the name used to display the property
-     */
-    public String getDisplayName();
-
-    /**
-     * Return the <code>CellEditor</code> used to edit the property.
-     * 
-     * @param parent
-     *            the parent widget for the editor
-     * @return the <code>CellEditor</code> used to edit the property
-     */
-    CellEditor getEditor(Composite parent);
-
-    /**
-     * Returns the error text to display if the value is invalid.
-     * 
-     * @return the error text to display when the value is invalid or
-     *         <code>null</code>
-     */
-    public String getErrorText();
-
-    /**
-     * Return the filter ids used to group entries into levels such as Expert.
-     * Valid values are defined as constants on this interface.
-     * 
-     * @return the filter ids used to group entries into levels such as Expert.
-     */
-    public String[] getFilters();
-
-    /**
-     * Returns the help context id for this entry, or <code>null</code> if
-     * this entry has no help context id.
-     * <p>
-     * NOTE: Help support system API's changed since 2.0 and arrays of contexts
-     * are no longer supported.
-     * </p>
-     * <p>
-     * Thus the only valid non- <code>null</code> return type for this method
-     * is a <code>String</code> representing a context id. The previously
-     * valid return types are deprecated. The plural name for this method is
-     * unfortunate.
-     * </p>
-     * 
-     * @return the help context id for this entry
-     */
-    public Object getHelpContextIds();
-
-    /**
-     * Returns the image for the property value, if there is one. This image is
-     * managed by the entry it came from. Callers of this method must never
-     * dispose the returned image.
-     * 
-     * @return the image for this property value or <code>null</code>
-     */
-    public Image getImage();
-
-    /**
-     * Returns the value of the objects expressed as a String.
-     * 
-     * @return the value of the objects expressed as a String
-     */
-    public String getValueAsString();
-
-    /**
-     * Returns <code>true</code> if the entry has children.
-     * 
-     * @return <code>true</code> if the entry has children
-     */
-    public boolean hasChildEntries();
-
-    /**
-     * Removes the given listener from this entry's collection of listeners.
-     * 
-     * @param listener
-     *            the listener to remove
-     */
-    public void removePropertySheetEntryListener(
-            IPropertySheetEntryListener listener);
-
-    /**
-     * Resets the property value to its default value if it has been changed.
-     * <p>
-     * Does nothing if the notion of a default value is not meaningful for 
-     * the property.
-     * </p>
-     */
-    void resetPropertyValue();
-
-    /**
-     * Sets the objects which represent the property values for this entry. In
-     * the case of the root entry these objects are the input to the viewer.
-     * 
-     * @param values the values for this entry
-     */
-    public void setValues(Object[] values);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntryListener.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntryListener.java
deleted file mode 100644
index 12b79d2..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetEntryListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-/**
- * Listener for changes in objects of type 
- * <code>IPropertySheetEntry</code>.
- * <p>
- * This interface is public since it appears in the api
- * of <code>IPropertySheetEntry</code>.  It is not intended
- * to be implemented outside of this package.
- * <p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPropertySheetEntryListener {
-    /**
-     * A node's children have changed (children added or removed) 
-     *
-     * @param node the node whose's children have changed
-     */
-    void childEntriesChanged(IPropertySheetEntry node);
-
-    /**
-     * A entry's error message has changed
-     *
-     * @param entry the entry whose's error message has changed
-     */
-    void errorMessageChanged(IPropertySheetEntry entry);
-
-    /**
-     * A entry's value has changed 
-     *
-     * @param entry the entry whose's value has changed
-     */
-    void valueChanged(IPropertySheetEntry entry);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetPage.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetPage.java
deleted file mode 100644
index f43126a..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySheetPage.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.part.IPage;
-
-/**
- * Interface for a property sheet page that appears in a property sheet view.
- * This interface defines the minimum requirement for pages within the
- * property sheet view, namely they must be pages (implement <code>IPage</code>)
- * be prepared to contribute actions to the property sheet view's tool bar
- * and status line, and listen for selection changes in the active part.
- * <p>
- * Clients may implement this interface from scratch if the property sheet
- * viewer's default page is unsuitable for displaying a part's properties.
- * </p>
- *
- * @see PropertySheetPage
- */
-public interface IPropertySheetPage extends IPage, ISelectionListener {
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource.java
deleted file mode 100644
index 0bbf203..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Gunnar Wagenknecht - fix for bug 21756 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=21756)
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-/**
- * Interface to an object which is capable of supplying properties for display
- * by the standard property sheet page implementation (<code>PropertySheetPage</code>).
- * <p>
- * This interface should be implemented by clients.
- * <code>PropertySheetPage</code> discovers the properties to display from
- * currently selected elements. Elements that implement
- * <code>IPropertySource</code> directly are included, as are elements that
- * implement <code>IAdaptable</code> and have an <code>IPropertySource</code>
- * adapter. Clients should implement this interface for any newly-defined
- * elements that are to have properties displayable by
- * <code>PropertySheetPage</code>. Note that in the latter case, the client
- * will also need to register a suitable adapter factory with the platform's
- * adapter manager (<code>Platform.getAdapterManager</code>).
- * </p>
- * 
- * @see org.eclipse.core.runtime.IAdaptable
- * @see org.eclipse.core.runtime.Platform#getAdapterManager()
- * @see org.eclipse.ui.views.properties.PropertySheetPage
- * @see org.eclipse.ui.views.properties.IPropertySource2
- */
-public interface IPropertySource {
-
-	/**
-	 * Returns a value for this property source that can be edited in a property
-	 * sheet.
-	 * <p>
-	 * This value is used when this <code>IPropertySource</code> is appearing
-	 * in the property sheet as the value of a property of some other
-	 * <code>IPropertySource</code>
-	 * </p>
-	 * <p>
-	 * This value is passed as the input to a cell editor opening on an
-	 * <code>IPropertySource</code>.
-	 * </p>
-	 * <p>
-	 * This value is also used when an <code>IPropertySource</code> is being
-	 * used as the value in a <code>setPropertyValue</code> message. The
-	 * reciever of the message would then typically use the editable value to
-	 * update the original property source or construct a new instance.
-	 * </p>
-	 * <p>
-	 * For example an email address which is a property source may have an
-	 * editable value which is a string so that it can be edited in a text cell
-	 * editor. The email address would also have a constructor or setter that
-	 * takes the edited string so that an appropriate instance can be created or
-	 * the original instance modified when the edited value is set.
-	 * </p>
-	 * <p>
-	 * This behavior is important for another reason. When the property sheet is
-	 * showing properties for more than one object (multiple selection), a
-	 * property sheet entry will display and edit a single value (typically
-	 * coming from the first selected object). After a property has been edited
-	 * in a cell editor, the same value is set as the property value for all of
-	 * the objects. This is fine for primitive types but otherwise all of the
-	 * objects end up with a reference to the same value. Thus by creating an
-	 * editable value and using it to update the state of the original property
-	 * source object, one is able to edit several property source objects at
-	 * once (multiple selection).
-	 * 
-	 * @return a value that can be edited
-	 */
-	public Object getEditableValue();
-
-	/**
-	 * Returns the list of property descriptors for this property source. The
-	 * <code>getPropertyValue</code> and <code>setPropertyValue</code>
-	 * methods are used to read and write the actual property values by
-	 * specifying the property ids from these property descriptors.
-	 * <p>
-	 * Implementors should cache the descriptors as they will be asked for the
-	 * descriptors with any edit/update. Since descriptors provide cell editors,
-	 * returning the same descriptors if possible allows for efficient updating.
-	 * </p>
-	 * 
-	 * @return the property descriptors
-	 */
-	public IPropertyDescriptor[] getPropertyDescriptors();
-
-	/**
-	 * Returns the value of the property with the given id if it has one.
-	 * Returns <code>null</code> if the property's value is <code>null</code>
-	 * value or if this source does not have the specified property.
-	 * 
-	 * @see #setPropertyValue
-	 * @param id
-	 *            the id of the property being set
-	 * @return the value of the property, or <code>null</code>
-	 */
-	public Object getPropertyValue(Object id);
-
-	/**
-	 * Returns whether the value of the property with the given id has changed
-	 * from its default value. Returns <code>false</code> if this source does
-	 * not have the specified property.
-	 * <p>
-	 * If the notion of default value is not meaningful for the specified
-	 * property then <code>false</code> is returned.
-	 * </p>
-	 * 
-	 * @param id
-	 *            the id of the property
-	 * @return <code>true</code> if the value of the specified property has
-	 *         changed from its original default value, <code>false</code> if
-	 *         the specified property does not have a meaningful default value,
-	 *         and <code>false</code> if this source does not have the
-	 *         specified property
-	 * @see IPropertySource2#isPropertyResettable(Object)
-	 * @see #resetPropertyValue(Object)
-	 */
-	public boolean isPropertySet(Object id);
-
-	/**
-	 * Resets the property with the given id to its default value if possible.
-	 * <p>
-	 * Does nothing if the notion of a default value is not meaningful for the
-	 * specified property, or if the property's value cannot be changed, or if
-	 * this source does not have the specified property.
-	 * </p>
-	 * <p>
-	 * Callers will check if this <code>IPropertySource</code> implements
-	 * <code>IPropertySource2</code> and this method will only be called if
-	 * <code>IPropertySource2#isPropertyResettable(Object)</code> returns
-	 * <code>true</code> for the property with the given id.
-	 * </p>
-	 * 
-	 * @param id
-	 *            the id of the property being reset
-	 * @see #isPropertySet(Object)
-	 * @see IPropertySource2#isPropertyResettable(Object)
-	 */
-	public void resetPropertyValue(Object id);
-
-	/**
-	 * Sets the property with the given id if possible. Does nothing if the
-	 * property's value cannot be changed or if this source does not have the
-	 * specified property.
-	 * <p>
-	 * In general, a property source should not directly reference the value
-	 * parameter unless it is an atomic object that can be shared, such as a
-	 * string.
-	 * </p>
-	 * <p>
-	 * An important reason for this is that several property sources with
-	 * compatible descriptors could be appearing in the property sheet at the
-	 * same time. An editor produces a single edited value which is passed as
-	 * the value parameter of this message to all the property sources. Thus to
-	 * avoid a situation where all of the property sources reference the same
-	 * value they should use the value parameter to create a new instance of the
-	 * real value for the given property.
-	 * </p>
-	 * <p>
-	 * There is another reason why a level of indirection is useful. The real
-	 * value of property may be a type that cannot be edited with a standard
-	 * cell editor. However instead of returning the real value in
-	 * <code>getPropertyValue</code>, the value could be converted to a
-	 * <code>String</code> which could be edited with a standard cell editor.
-	 * The edited value will be passed to this method which can then turn it
-	 * back into the real property value.
-	 * </p>
-	 * <p>
-	 * Another variation on returning a value other than the real property value
-	 * in <code>getPropertyValue</code> is to return a value which is an
-	 * <code>IPropertySource</code> (or for which the property sheet can
-	 * obtain an <code>IPropertySource</code>). In this case the value to
-	 * edit is obtained from the child property source using
-	 * <code>getEditableValue</code>. It is this editable value that will be
-	 * passed back via this method when it has been editted
-	 * </p>
-	 * 
-	 * @see #getPropertyValue
-	 * @see #getEditableValue
-	 * @param id
-	 *            the id of the property being set
-	 * @param value
-	 *            the new value for the property; <code>null</code> is allowed
-	 */
-	public void setPropertyValue(Object id, Object value);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource2.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource2.java
deleted file mode 100644
index ca973ae..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySource2.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Gunnar Wagenknecht - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-/**
- * Extension to the standard <code>IPropertySource</code> interface.
- * <p>
- * This interface provides extended API to <code>IPropertySource</code> to
- * allow an easier indication of properties that have a default value and can be
- * resetted.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.views.properties.IPropertySource
- */
-public interface IPropertySource2 extends IPropertySource {
-
-    /**
-     * Returns whether the value of the property with the specified id is
-     * resettable to a default value.
-     * 
-     * @param id
-     *            the id of the property
-     * @return <code>true</code> if the property with the specified id has a
-     *         meaningful default value to which it can be resetted, and
-     *         <code>false</code> otherwise
-     * @see IPropertySource#resetPropertyValue(Object)
-     * @see IPropertySource#isPropertySet(Object)
-     */
-    boolean isPropertyResettable(Object id);
-
-    /**
-     * <code>IPropertySource2</code> overrides the specification of this <code>IPropertySource</code> 
-     * method to return <code>true</code> instead of <code>false</code> if the specified 
-     * property does not have a meaningful default value.
-     * <code>isPropertyResettable</code> will only be called if <code>isPropertySet</code> returns
-     * <code>true</code>.
-     * <p> 
-     * Returns whether the value of the property with the given id has changed
-     * from its default value. Returns <code>false</code> if this source does
-     * not have the specified property.
-     * </p>
-     * <p>
-     * If the notion of default value is not meaningful for the specified
-     * property then <code>true</code> is returned.
-     * </p>
-     * 
-     * @param id
-     *            the id of the property
-     * @return <code>true</code> if the value of the specified property has
-     *         changed from its original default value, <code>true</code> if
-     *         the specified property does not have a meaningful default value,
-     *         and <code>false</code> if this source does not have the
-     *         specified property
-     * @see IPropertySource2#isPropertyResettable(Object)
-     * @see #resetPropertyValue(Object)
-     * @since 3.1
-     */
-    public boolean isPropertySet(Object id);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySourceProvider.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySourceProvider.java
deleted file mode 100644
index 9b79b13..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/IPropertySourceProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-/**
- * Interface used by {@link org.eclipse.ui.views.properties.PropertySheetEntry}
- * to obtain an {@link org.eclipse.ui.views.properties.IPropertySource} for a
- * given object.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- */
-public interface IPropertySourceProvider {
-	
-	/**
-	 * Returns a property source for the given object.
-	 * 
-	 * @param object
-	 *            the object
-	 * @return the property source for the object passed in (maybe
-	 *         <code>null</code>)
-	 */
-	public IPropertySource getPropertySource(Object object);
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyColumnLabelProvider.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyColumnLabelProvider.java
deleted file mode 100644
index 1db706d..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyColumnLabelProvider.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Ed Merks, IBM - Initial API and implementation (bug 220843)
- *
- */
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A column label provider that returns label text and images based on a
- * {@link IPropertySourceProvider}, forwarding requests for text and image to
- * the label provider returned from the property descriptor for the given
- * property id.
- * 
- * @see IPropertyDescriptor#getLabelProvider()
- * 
- * @since 3.3
- * 
- * @see PropertyEditingSupport
- */
-public class PropertyColumnLabelProvider extends ColumnLabelProvider {
-	protected IPropertySourceProvider propertySourceProvider;
-	protected Object propertyID;
-
-	/**
-	 * Creates a new instance based on the given property source provider and
-	 * property id.
-	 * 
-	 * @param propertySourceProvider
-	 *            the property source provider
-	 * @param propertyID
-	 *            the property id
-	 */
-	public PropertyColumnLabelProvider(
-			IPropertySourceProvider propertySourceProvider, Object propertyID) {
-		this.propertySourceProvider = propertySourceProvider;
-		this.propertyID = propertyID;
-	}
-
-	public String getText(Object object) {
-		IPropertySource propertySource = propertySourceProvider
-				.getPropertySource(object);
-		IPropertyDescriptor[] propertyDescriptors = propertySource
-				.getPropertyDescriptors();
-		for (int i = 0; i < propertyDescriptors.length; i++) {
-			IPropertyDescriptor propertyDescriptor = propertyDescriptors[i];
-			if (propertyID.equals(propertyDescriptor.getId())) {
-				return propertyDescriptor.getLabelProvider().getText(
-						propertySource.getPropertyValue(propertyID));
-			}
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-	public Image getImage(Object object) {
-		IPropertySource propertySource = propertySourceProvider
-				.getPropertySource(object);
-		IPropertyDescriptor[] propertyDescriptors = propertySource
-				.getPropertyDescriptors();
-		for (int i = 0; i < propertyDescriptors.length; i++) {
-			IPropertyDescriptor propertyDescriptor = propertyDescriptors[i];
-			if (propertyID.equals(propertyDescriptor.getId())) {
-				return propertyDescriptor.getLabelProvider().getImage(
-						propertySource.getPropertyValue(propertyID));
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyDescriptor.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyDescriptor.java
deleted file mode 100644
index ab02701..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyDescriptor.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ICellEditorValidator;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Standard implementation for property descriptors.
- * <p>
- * The required attributes of property descriptors (id and display name) are
- * passed to the constructor; the optional attributes can be configured using
- * the various set methods (all have reasonable default values):
- * <ul>
- *   <li><code>setDescription</code></li>
- *   <li><code>setCategory</code></li>
- *   <li><code>setLabelProvider</code></li>
- *   <li><code>setHelpContexts</code></li>
- * </ul>
- * Subclasses should reimplement <code>getPropertyEditor</code> to provide a
- * cell editor for changing the value; otherwise the property will be 
- * effectively read only.
- * </p>
- * <p>
- * There are several concrete subclasses provided in this package that cover
- * the most common cases:
- * <ul>
- *   <li><code>TextPropertyDescriptor</code> - edits with a 
- *      <code>TextCellEditor</code></li>
- *   <li><code>ComboBoxPropertyDescriptor - edits with a
- *      <code>ComboBoxCellEditor</code></code></li>
- *   <li><code>ColorPropertyDescriptor - edits with a 
- *      <code>ColorCellEditor</code></code></li>
- * </ul>
- * </p>
- */
-public class PropertyDescriptor implements IPropertyDescriptor {
-
-    /**
-     * The property id.
-     */
-    private Object id;
-
-    /**
-     * The name to display for the property.
-     */
-    private String display;
-
-    /**
-     * Category name, or <code>null</code> if none (the default).
-     */
-    private String category = null;
-
-    /**
-     * Description of the property, or <code>null</code> if none (the default). 
-     */
-    private String description = null;
-
-    /**
-     * The help context ids, or <code>null</code> if none (the default). 
-     */
-    private Object helpIds;
-
-    /**
-     * The flags used to filter the property.
-     */
-    private String[] filterFlags;
-
-    /**
-     * The object that provides the property value's text and image, or 
-     * <code>null</code> if the default label provider is used (the default).
-     */
-    private ILabelProvider labelProvider = null;
-
-    /**
-     * The object to validate the values in the cell editor, or <code>null</code>
-     * if none (the default).
-     */
-    private ICellEditorValidator validator;
-
-    /**
-     * Indicates if the descriptor is compatible with other descriptors of this
-     * type. <code>false</code> by default.
-     */
-    private boolean incompatible = false;
-
-    /**
-     * Creates a new property descriptor with the given id and display name
-     * @param id 
-     * @param displayName 
-     */
-    public PropertyDescriptor(Object id, String displayName) {
-        Assert.isNotNull(id);
-        Assert.isNotNull(displayName);
-        this.id = id;
-        this.display = displayName;
-    }
-
-    /**
-     * The <code>PropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns <code>null</code>.
-     * <p>
-     * Since no cell editor is returned, the property is read only.
-     * </p>
-     */
-    public CellEditor createPropertyEditor(Composite parent) {
-        return null;
-    }
-
-    /**
-     * Returns <code>true</code> if this property descriptor is to be always 
-     * considered incompatible with any other property descriptor.
-     * This prevents a property from displaying during multiple 
-     * selection.
-     *
-     * @return <code>true</code> to indicate always incompatible
-     */
-    protected boolean getAlwaysIncompatible() {
-        return incompatible;
-    }
-
-    /**
-     * The <code>PropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value set by
-     * the <code>setCategory</code> method. If unset, this method returns
-     * <code>null</code> indicating the default category.
-     *
-     * @see #setCategory
-     */
-    public String getCategory() {
-        return category;
-    }
-
-    /**
-     * The <code>PropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value set by
-     * the <code>setDescription</code> method. If unset, this method returns
-     * <code>null</code> indicating no description.
-     *
-     * @see #setDescription
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * The <code>SimplePropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value supplied
-     * on the constructor.
-     */
-    public String getDisplayName() {
-        return display;
-    }
-
-    /**
-     * The <code>SimplePropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value set by
-     * the <code>setFilterFlags</code> method. If unset, this method returns
-     * <code>null</code>.
-     * <p>
-     * Valid values for these flags are declared as constants on 
-     *  <code>IPropertySheetEntry</code>
-     */
-    public String[] getFilterFlags() {
-        return filterFlags;
-    }
-
-    /**
-     * The <code>SimplePropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value set by
-     * the <code>setHelpContextId</code> method. If unset, this method returns
-     * <code>null</code>.
-     *
-     * @see #setHelpContextIds
-     */
-    public Object getHelpContextIds() {
-        return helpIds;
-    }
-
-    /**
-     * The <code>PropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value supplied
-     * on the constructor.
-     */
-    public Object getId() {
-        return id;
-    }
-
-    /**
-     * The <code>PropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns the value set by
-     * the <code>setProvider</code> method or, if no value has been set
-     * it returns a <code>LabelProvider</code>
-     *
-     * @see #setLabelProvider
-     */
-    public ILabelProvider getLabelProvider() {
-        if (labelProvider != null) {
-			return labelProvider;
-		}
-		return new LabelProvider();
-    }
-
-    /**
-     * Returns the input validator for editing the property.
-     *
-     * @return the validator used to verify correct values for this property,
-     *   or <code>null</code>
-     */
-    protected ICellEditorValidator getValidator() {
-        return validator;
-    }
-
-    /** 
-     * Returns whether a label provider has been set on the receiver.
-     * @return whether a label provider has been set on the receiver.
-     * @see #setLabelProvider
-     * @since 3.0
-     */
-    public boolean isLabelProviderSet() {
-        return labelProvider != null;
-    }
-
-    /**
-     * The <code>SimplePropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method returns true if the other
-     * property has the same id and category and <code>getAlwaysIncompatible()</code>
-     * returns false
-     */
-    public boolean isCompatibleWith(IPropertyDescriptor anotherProperty) {
-        if (getAlwaysIncompatible()) {
-			return false;
-		}
-
-        // Compare id		
-        Object id1 = getId();
-        Object id2 = anotherProperty.getId();
-        if (!id1.equals(id2)) {
-			return false;
-		}
-
-        // Compare Category (may be null)
-        if (getCategory() == null) {
-            if (anotherProperty.getCategory() != null) {
-				return false;
-			}
-        } else {
-            if (!getCategory().equals(anotherProperty.getCategory())) {
-				return false;
-			}
-        }
-
-        return true;
-    }
-
-    /**
-     * Sets a flag indicating whether this property descriptor is to be always 
-     * considered incompatible with any other property descriptor.
-     * Setting this flag prevents a property from displaying during multiple 
-     * selection.
-     *
-     * @param flag <code>true</code> to indicate always incompatible
-     */
-    public void setAlwaysIncompatible(boolean flag) {
-        incompatible = flag;
-    }
-
-    /**
-     * Sets the category for this property descriptor.
-     * 
-     * @param category the category for the descriptor, or <code>null</code> if none
-     * @see #getCategory
-     */
-    public void setCategory(String category) {
-        this.category = category;
-    }
-
-    /**
-     * Sets the description for this property descriptor.
-     * The description should be limited to a single line so that it can be
-     * displayed in the status line.
-     * 
-     * @param description the description, or <code>null</code> if none
-     * @see #getDescription
-     */
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    /**
-     * Sets the the filter flags for this property descriptor.
-     * The description should be limited to a single line so that it can be
-     * displayed in the status line.
-     * <p>
-     * Valid values for these flags are declared as constants on 
-     *  <code>IPropertySheetEntry</code>
-     * </p>
-     * 
-     * @param value the filter flags
-     * @see #getFilterFlags
-     */
-    public void setFilterFlags(String value[]) {
-        filterFlags = value;
-    }
-
-    /**
-     * Sets the help context id for this property descriptor.
-     *
-     * NOTE: Help support system API's changed since 2.0 and arrays
-     * of contexts are no longer supported.
-     * </p>
-     * <p>
-     * Thus the only valid parameter type for this method
-     * is a <code>String</code> representing a context id. 
-     * The previously valid parameter types are deprecated. 
-     * The plural name for this method is unfortunate.
-     * </p>
-     * 
-     * @param contextIds the help context ids, or <code>null</code> if none
-     * @see #getHelpContextIds
-     */
-    public void setHelpContextIds(Object contextIds) {
-        helpIds = contextIds;
-    }
-
-    /**
-     * Sets the label provider for this property descriptor.
-     * <p>
-     * If no label provider is set an instance of <code>LabelProvider</code>
-     * will be created as the default when needed.
-     * </p>
-     * 
-     * @param provider the label provider for the descriptor, or 
-     *   <code>null</code> if the default label provider should be used
-     * @see #getLabelProvider
-     */
-    public void setLabelProvider(ILabelProvider provider) {
-        labelProvider = provider;
-    }
-
-    /**
-     * Sets the input validator for the cell editor for this property descriptor.
-     * <p>
-     * [Issue: This method should be unnecessary is the cell editor's own
-     *  validator is used.
-     * ]
-     * </p>
-     * 
-     * @param validator the cell input validator, or <code>null</code> if none
-     */
-    public void setValidator(ICellEditorValidator validator) {
-        this.validator = validator;
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyEditingSupport.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyEditingSupport.java
deleted file mode 100644
index f43dff7..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertyEditingSupport.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Ed Merks, IBM - Initial API and implementation (bug 220843)
- *
- */
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * A concrete subclass of {@link EditingSupport} that implements cell editing
- * support for column-based viewers (such as e.g. {@link TreeViewer} or
- * {@link TableViewer}) based on an {@link IPropertySourceProvider},
- * forwarding requests to the {@link IPropertySource} or
- * {@link IPropertyDescriptor} for the given property ID.
- * 
- * @since 3.3
- * 
- * @see PropertyColumnLabelProvider
- */
-public class PropertyEditingSupport extends EditingSupport {
-	protected IPropertySourceProvider propertySourceProvider;
-	protected Object propertyID;
-
-	/**
-	 * Creates a new instance to be used with the given viewer, based on the
-	 * given property source provider and property ID.
-	 * 
-	 * @param viewer
-	 *            the column viewer
-	 * @param propertySourceProvider
-	 *            the property source provider
-	 * @param propertyID
-	 *            the property ID
-	 */
-	public PropertyEditingSupport(ColumnViewer viewer,
-			IPropertySourceProvider propertySourceProvider, Object propertyID) {
-		super(viewer);
-		this.propertySourceProvider = propertySourceProvider;
-		this.propertyID = propertyID;
-	}
-
-	protected boolean canEdit(Object object) {
-		IPropertySource propertySource = propertySourceProvider
-				.getPropertySource(object);
-		IPropertyDescriptor[] propertyDescriptors = propertySource
-				.getPropertyDescriptors();
-		for (int i = 0; i < propertyDescriptors.length; i++) {
-			IPropertyDescriptor propertyDescriptor = propertyDescriptors[i];
-			if (propertyID.equals(propertyDescriptor.getId())) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	protected CellEditor getCellEditor(Object object) {
-		IPropertySource propertySource = propertySourceProvider
-				.getPropertySource(object);
-		IPropertyDescriptor[] propertyDescriptors = propertySource
-				.getPropertyDescriptors();
-		for (int i = 0; i < propertyDescriptors.length; i++) {
-			IPropertyDescriptor propertyDescriptor = propertyDescriptors[i];
-			if (propertyID.equals(propertyDescriptor.getId())) {
-				return propertyDescriptor
-						.createPropertyEditor((Composite) getViewer()
-								.getControl());
-			}
-		}
-		return null;
-	}
-
-	protected Object getValue(Object object) {
-		IPropertySource propertySource = propertySourceProvider
-				.getPropertySource(object);
-		Object value = propertySource.getPropertyValue(propertyID);
-		IPropertySource valuePropertySource = propertySourceProvider
-				.getPropertySource(value);
-		if (valuePropertySource != null) {
-			value = valuePropertySource.getEditableValue();
-		}
-		return value;
-	}
-
-	protected void setValue(Object object, Object value) {
-		IPropertySource propertySource = propertySourceProvider
-				.getPropertySource(object);
-		propertySource.setPropertyValue(propertyID, value);
-	}
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheet.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheet.java
deleted file mode 100644
index ae5e28f..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheet.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.views.ViewsPlugin;
-import org.eclipse.ui.part.IContributedContentsView;
-import org.eclipse.ui.part.IPage;
-import org.eclipse.ui.part.IPageBookViewPage;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.PageBookView;
-
-/**
- * Main class for the Property Sheet View.
- * <p>
- * This standard view has id <code>"org.eclipse.ui.views.PropertySheet"</code>.
- * </p>
- * <p>
- * Note that property <it>sheets</it> and property sheet pages are not the
- * same thing as property <it>dialogs</it> and their property pages (the property
- * pages extension point is for contributing property pages to property dialogs).
- * Within the property sheet view, all pages are <code>IPropertySheetPage</code>s.
- * </p>
- * <p>
- * Property sheet pages are discovered by the property sheet view automatically
- * when a part is first activated. The property sheet view asks the active part
- * for its property sheet page; this is done by invoking 
- * <code>getAdapter(IPropertySheetPage.class)</code> on the part. If the part 
- * returns a page, the property sheet view then creates the controls for that
- * property sheet page (using <code>createControl</code>), and adds the page to 
- * the property sheet view. Whenever this part becomes active, its corresponding
- * property sheet page is shown in the property sheet view (which may or may not
- * be visible at the time). A part's property sheet page is discarded when the
- * part closes. The property sheet view has a default page (an instance of 
- * <code>PropertySheetPage</code>) which services all parts without a property
- * sheet page of their own.
- * </p>
- * <p>
- * The workbench will automatically instantiates this class when a Property
- * Sheet view is needed for a workbench window. This class is not intended
- * to be instantiated or subclassed by clients.
- * </p>
- *
- * @see IPropertySheetPage
- * @see PropertySheetPage
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PropertySheet extends PageBookView implements ISelectionListener {
-    /**
-     * No longer used but preserved to avoid api change
-     */
-    public static final String HELP_CONTEXT_PROPERTY_SHEET_VIEW = IPropertiesHelpContextIds.PROPERTY_SHEET_VIEW;
-
-    /**
-     * The initial selection when the property sheet opens
-     */
-    private ISelection bootstrapSelection;
-
-    /**
-     * Creates a property sheet view.
-     */
-    public PropertySheet() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     * Returns the default property sheet page.
-     */
-    protected IPage createDefaultPage(PageBook book) {
-        PropertySheetPage page = new PropertySheetPage();
-        initPage(page);
-        page.createControl(book);
-        return page;
-    }
-
-    /**
-     * The <code>PropertySheet</code> implementation of this <code>IWorkbenchPart</code>
-     * method creates a <code>PageBook</code> control with its default page showing.
-     */
-    public void createPartControl(Composite parent) {
-        super.createPartControl(parent);
-        getSite().getPage().getWorkbenchWindow().getWorkbench().getHelpSystem()
-				.setHelp(getPageBook(),
-						IPropertiesHelpContextIds.PROPERTY_SHEET_VIEW);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchPart.
-     */
-    public void dispose() {
-        // run super.
-        super.dispose();
-
-        // remove ourselves as a selection listener
-        getSite().getPage().removeSelectionListener(this);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     */
-    protected PageRec doCreatePage(IWorkbenchPart part) {
-        // Try to get a custom property sheet page.
-        IPropertySheetPage page = (IPropertySheetPage) ViewsPlugin.getAdapter(part,
-                IPropertySheetPage.class, false);
-        if (page != null) {
-            if (page instanceof IPageBookViewPage) {
-				initPage((IPageBookViewPage) page);
-			}
-            page.createControl(getPageBook());
-            return new PageRec(part, page);
-        }
-
-        // Use the default page		
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     */
-    protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {
-        IPropertySheetPage page = (IPropertySheetPage) rec.page;
-        page.dispose();
-        rec.dispose();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     * Returns the active part on the same workbench page as this property 
-     * sheet view.
-     */
-    protected IWorkbenchPart getBootstrapPart() {
-        IWorkbenchPage page = getSite().getPage();
-        if (page != null) {
-            bootstrapSelection = page.getSelection();
-            return page.getActivePart();
-        } 
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IViewPart.
-     */
-    public void init(IViewSite site) throws PartInitException {
-        site.getPage().addSelectionListener(this);
-        super.init(site);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageBookView.
-     * The property sheet may show properties for any view other than this view.
-     */
-    protected boolean isImportant(IWorkbenchPart part) {
-        return part != this;
-    }
-
-    /**
-     * The <code>PropertySheet</code> implementation of this <code>IPartListener</code>
-     * method first sees if the active part is an <code>IContributedContentsView</code>
-     * adapter and if so, asks it for its contributing part.
-     */
-    public void partActivated(IWorkbenchPart part) {
-    	// Look for a declaratively-contributed adapter - including not yet loaded adapter factories.
-    	// See bug 86362 [PropertiesView] Can not access AdapterFactory, when plugin is not loaded.
-        IContributedContentsView view = (IContributedContentsView) ViewsPlugin.getAdapter(part,
-                IContributedContentsView.class, true);
-        IWorkbenchPart source = null;
-        if (view != null) {
-			source = view.getContributingPart();
-		}
-        if (source != null) {
-			super.partActivated(source);
-		} else {
-			super.partActivated(part);
-		}
-
-        // When the view is first opened, pass the selection to the page		
-        if (bootstrapSelection != null) {
-            IPropertySheetPage page = (IPropertySheetPage) getCurrentPage();
-            if (page != null) {
-				page.selectionChanged(part, bootstrapSelection);
-			}
-            bootstrapSelection = null;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionListener.
-     * Notify the current page that the selection has changed.
-     */
-    public void selectionChanged(IWorkbenchPart part, ISelection sel) {
-        // we ignore our own selection or null selection
-        if (part == this || sel == null) {
-			return;
-		}
-
-        // pass the selection to the page		
-        IPropertySheetPage page = (IPropertySheetPage) getCurrentPage();
-        if (page != null) {
-			page.selectionChanged(part, sel);
-		}
-    }
-    
-    /**
-	 * The <code>PropertySheet</code> implementation of this
-	 * <code>PageBookView</code> method handles the <code>ISaveablePart</code>
-	 * adapter case by calling <code>getSaveablePart()</code>.
-	 * 
-	 * @since 3.2
-	 */
-	protected Object getViewAdapter(Class key) {
-		if (ISaveablePart.class.equals(key)) {
-			return getSaveablePart();
-		}
-		return super.getViewAdapter(key);
-	}
-
-	/**
-	 * Returns an <code>ISaveablePart</code> that delegates to the source part
-	 * for the current page if it implements <code>ISaveablePart</code>, or
-	 * <code>null</code> otherwise.
-	 * 
-	 * @return an <code>ISaveablePart</code> or <code>null</code>
-	 * @since 3.2
-	 */
-	protected ISaveablePart getSaveablePart() {
-		IWorkbenchPart part = getCurrentContributingPart();
-		if (part instanceof ISaveablePart) {
-			return (ISaveablePart) part;
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetAction.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetAction.java
deleted file mode 100644
index 238a95b..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetAction.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.action.Action;
-
-/**
- * This is the base class of all the local actions used
- * in the PropertySheet.
- */
-/*package*/abstract class PropertySheetAction extends Action {
-    protected PropertySheetViewer viewer;
-
-    private String id;
-
-    /**
-     * Create a PropertySheetViewer action.
-     */
-    protected PropertySheetAction(PropertySheetViewer viewer, String name) {
-        super(name);
-        this.id = name;
-        this.viewer = viewer;
-    }
-
-    /**
-     * Return the unique action ID that will be
-     * used in contribution managers.
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Return the PropertySheetViewer
-     * @return the PropertySheetViewer
-     */
-    public PropertySheetViewer getPropertySheet() {
-        return viewer;
-    }
-
-    /**
-     * Set the unique ID that should be used
-     * in the contribution managers.
-     */
-    public void setId(String newId) {
-        id = newId;
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetCategory.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetCategory.java
deleted file mode 100644
index 1ab9876..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetCategory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A category in a PropertySheet used to group <code>IPropertySheetEntry</code>
- * entries so they are displayed together.
- */
-/*package*/class PropertySheetCategory {
-    private String categoryName;
-
-    private List entries = new ArrayList();
-
-    private boolean shouldAutoExpand = true;
-
-    /**
-     * Create a PropertySheet category with name.
-     * @param name 
-     */
-    public PropertySheetCategory(String name) {
-        categoryName = name;
-    }
-
-    /**
-     * Add an <code>IPropertySheetEntry</code> to the list
-     * of entries in this category. 
-     * @param entry 
-     */
-    public void addEntry(IPropertySheetEntry entry) {
-        entries.add(entry);
-    }
-
-    /**
-     * Return the category name.
-     * @return the category name
-     */
-    public String getCategoryName() {
-        return categoryName;
-    }
-
-    /**
-     * Returns <code>true</code> if this category should be automatically 
-     * expanded. The default value is <code>true</code>.
-     * 
-     * @return <code>true</code> if this category should be automatically 
-     * expanded, <code>false</code> otherwise
-     */
-    public boolean getAutoExpand() {
-        return shouldAutoExpand;
-    }
-
-    /**
-     * Sets if this category should be automatically 
-     * expanded.
-     * @param autoExpand 
-     */
-    public void setAutoExpand(boolean autoExpand) {
-        shouldAutoExpand = autoExpand;
-    }
-
-    /**
-     * Returns the entries in this category.
-     *
-     * @return the entries in this category
-     */
-    public IPropertySheetEntry[] getChildEntries() {
-        return (IPropertySheetEntry[]) entries
-                .toArray(new IPropertySheetEntry[entries.size()]);
-    }
-
-    /**
-     * Removes all of the entries in this category.
-     * Doing so allows us to reuse this category entry.
-     */
-    public void removeAllEntries() {
-        entries = new ArrayList();
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java
deleted file mode 100644
index c95bfd5..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetEntry.java
+++ /dev/null
@@ -1,791 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Gunnar Wagenknecht - fix for bug 21756 [PropertiesView] property view sorting
- *******************************************************************************/
-
-package org.eclipse.ui.views.properties;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.internal.views.ViewsPlugin;
-
-/**
- * <code>PropertySheetEntry</code> is an implementation of
- * <code>IPropertySheetEntry</code> which uses <code>IPropertySource</code>
- * and <code>IPropertyDescriptor</code> to interact with domain model objects.
- * <p>
- * Every property sheet entry has a single descriptor (except the root entry
- * which has none). This descriptor determines what property of its objects it
- * will display/edit.
- * </p>
- * <p>
- * Entries do not listen for changes in their objects. Since there is no
- * restriction on properties being independent, a change in one property may
- * affect other properties. The value of a parent's property may also change. As
- * a result we are forced to refresh the entire entry tree when a property
- * changes value.
- * </p>
- * 
- * @since 3.0 (was previously internal)
- */
-public class PropertySheetEntry extends EventManager implements
-		IPropertySheetEntry {
-
-	/**
-	 * The values we are displaying/editing. These objects repesent the value of
-	 * one of the properties of the values of our parent entry. Except for the
-	 * root entry where they represent the input (selected) objects.
-	 */
-	private Object[] values = new Object[0];
-
-	/**
-	 * The property sources for the values we are displaying/editing.
-	 */
-	private Map sources = new HashMap(0);
-
-	/**
-	 * The value of this entry is defined as the the first object in its value
-	 * array or, if that object is an <code>IPropertySource</code>, the value
-	 * it returns when sent <code>getEditableValue</code>
-	 */
-	private Object editValue;
-
-	private PropertySheetEntry parent;
-
-	private IPropertySourceProvider propertySourceProvider;
-
-	private IPropertyDescriptor descriptor;
-
-	private CellEditor editor;
-
-	private String errorText;
-
-	private PropertySheetEntry[] childEntries = null;
-
-	/**
-	 * Create the CellEditorListener for this entry. It listens for value
-	 * changes in the CellEditor, and cancel and finish requests.
-	 */
-	private ICellEditorListener cellEditorListener = new ICellEditorListener() {
-		public void editorValueChanged(boolean oldValidState,
-				boolean newValidState) {
-			if (!newValidState) {
-				// currently not valid so show an error message
-				setErrorText(editor.getErrorMessage());
-			} else {
-				// currently valid
-				setErrorText(null);
-			}
-		}
-
-		public void cancelEditor() {
-			setErrorText(null);
-		}
-
-		public void applyEditorValue() {
-			PropertySheetEntry.this.applyEditorValue();
-		}
-	};
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public void addPropertySheetEntryListener(
-			IPropertySheetEntryListener listener) {
-		addListenerObject(listener);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public void applyEditorValue() {
-		if (editor == null) {
-			return;
-		}
-
-		// Check if editor has a valid value
-		if (!editor.isValueValid()) {
-			setErrorText(editor.getErrorMessage());
-			return;
-		}
-
-		setErrorText(null);
-
-		// See if the value changed and if so update
-		Object newValue = editor.getValue();
-		boolean changed = false;
-		if (values.length > 1) {
-			changed = true;
-		} else if (editValue == null) {
-			if (newValue != null) {
-				changed = true;
-			}
-		} else if (!editValue.equals(newValue)) {
-			changed = true;
-		}
-
-		// Set the editor value
-		if (changed) {
-			setValue(newValue);
-		}
-	}
-
-	/**
-	 * Return the unsorted intersection of all the
-	 * <code>IPropertyDescriptor</code>s for the objects.
-	 * 
-	 * @return List
-	 */
-	private List computeMergedPropertyDescriptors() {
-		if (values.length == 0) {
-			return new ArrayList(0);
-		}
-
-		IPropertySource firstSource = getPropertySource(values[0]);
-		if (firstSource == null) {
-			return new ArrayList(0);
-		}
-
-		if (values.length == 1) {
-			return Arrays.asList(firstSource.getPropertyDescriptors());
-		}
-
-		// get all descriptors from each object
-		Map[] propertyDescriptorMaps = new Map[values.length];
-		for (int i = 0; i < values.length; i++) {
-			Object object = values[i];
-			IPropertySource source = getPropertySource(object);
-			if (source == null) {
-				// if one of the selected items is not a property source
-				// then we show no properties
-				return new ArrayList(0);
-			}
-			// get the property descriptors keyed by id
-			propertyDescriptorMaps[i] = computePropertyDescriptorsFor(source);
-		}
-
-		// intersect
-		Map intersection = propertyDescriptorMaps[0];
-		for (int i = 1; i < propertyDescriptorMaps.length; i++) {
-			// get the current ids
-			Object[] ids = intersection.keySet().toArray();
-			for (int j = 0; j < ids.length; j++) {
-				Object object = propertyDescriptorMaps[i].get(ids[j]);
-				if (object == null ||
-				// see if the descriptors (which have the same id) are
-						// compatible
-						!((IPropertyDescriptor) intersection.get(ids[j]))
-								.isCompatibleWith((IPropertyDescriptor) object)) {
-					intersection.remove(ids[j]);
-				}
-			}
-		}
-
-		// sorting is handled in the PropertySheetViewer, return unsorted (in
-		// the original order)
-		ArrayList result = new ArrayList(intersection.size());
-		IPropertyDescriptor[] firstDescs = firstSource.getPropertyDescriptors();
-		for (int i = 0; i < firstDescs.length; i++) {
-			IPropertyDescriptor desc = firstDescs[i];
-			if (intersection.containsKey(desc.getId())) {
-				result.add(desc);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns an map of property descritptors (keyed on id) for the given
-	 * property source.
-	 * 
-	 * @param source
-	 *            a property source for which to obtain descriptors
-	 * @return a table of decriptors keyed on their id
-	 */
-	private Map computePropertyDescriptorsFor(IPropertySource source) {
-		IPropertyDescriptor[] descriptors = source.getPropertyDescriptors();
-		Map result = new HashMap(descriptors.length * 2 + 1);
-		for (int i = 0; i < descriptors.length; i++) {
-			result.put(descriptors[i].getId(), descriptors[i]);
-		}
-		return result;
-	}
-
-	/**
-	 * Create our child entries.
-	 */
-	private void createChildEntries() {
-		// get the current descriptors
-		List descriptors = computeMergedPropertyDescriptors();
-
-		// rebuild child entries using old when possible
-		PropertySheetEntry[] newEntries = new PropertySheetEntry[descriptors
-				.size()];
-		for (int i = 0; i < descriptors.size(); i++) {
-			IPropertyDescriptor d = (IPropertyDescriptor) descriptors.get(i);
-			// create new entry
-			PropertySheetEntry entry = createChildEntry();
-			entry.setDescriptor(d);
-			entry.setParent(this);
-			entry.setPropertySourceProvider(propertySourceProvider);
-			entry.refreshValues();
-			newEntries[i] = entry;
-		}
-		// only assign if successful
-		childEntries = newEntries;
-	}
-
-	/**
-	 * Factory method to create a new child <code>PropertySheetEntry</code>
-	 * instance.
-	 * <p>
-	 * Subclasses may overwrite to create new instances of their own class.
-	 * </p>
-	 * 
-	 * @return a new <code>PropertySheetEntry</code> instance for the
-	 *         descriptor passed in
-	 * @since 3.1
-	 */
-	protected PropertySheetEntry createChildEntry() {
-		return new PropertySheetEntry();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public void dispose() {
-		if (editor != null) {
-			editor.dispose();
-			editor = null;
-		}
-		// recursive call to dispose children
-		PropertySheetEntry[] entriesToDispose = childEntries;
-		childEntries = null;
-		if (entriesToDispose != null) {
-			for (int i = 0; i < entriesToDispose.length; i++) {
-				// an error in a property source may cause refreshChildEntries
-				// to fail. Since the Workbench handles such errors we
-				// can be left in a state where a child entry is null.
-				if (entriesToDispose[i] != null) {
-					entriesToDispose[i].dispose();
-				}
-			}
-		}
-	}
-
-	/**
-	 * The child entries of this entry have changed (children added or removed).
-	 * Notify all listeners of the change.
-	 */
-	private void fireChildEntriesChanged() {
-		Object[] array = getListeners();
-		for (int i = 0; i < array.length; i++) {
-			IPropertySheetEntryListener listener = (IPropertySheetEntryListener) array[i];
-			listener.childEntriesChanged(this);
-		}
-	}
-
-	/**
-	 * The error message of this entry has changed. Notify all listeners of the
-	 * change.
-	 */
-	private void fireErrorMessageChanged() {
-		Object[] array = getListeners();
-		for (int i = 0; i < array.length; i++) {
-			IPropertySheetEntryListener listener = (IPropertySheetEntryListener) array[i];
-			listener.errorMessageChanged(this);
-		}
-	}
-
-	/**
-	 * The values of this entry have changed. Notify all listeners of the
-	 * change.
-	 */
-	private void fireValueChanged() {
-		Object[] array = getListeners();
-		for (int i = 0; i < array.length; i++) {
-			IPropertySheetEntryListener listener = (IPropertySheetEntryListener) array[i];
-			listener.valueChanged(this);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public String getCategory() {
-		return descriptor.getCategory();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public IPropertySheetEntry[] getChildEntries() {
-		if (childEntries == null) {
-			createChildEntries();
-		}
-		return childEntries;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public String getDescription() {
-		return descriptor.getDescription();
-	}
-
-	/**
-	 * Returns the descriptor for this entry.
-	 * 
-	 * @return the descriptor for this entry
-	 * @since 3.1 (was previously private)
-	 */
-	protected IPropertyDescriptor getDescriptor() {
-		return descriptor;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public String getDisplayName() {
-		return descriptor.getDisplayName();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySheetEntry#getEditor(org.eclipse.swt.widgets.Composite)
-	 */
-	public CellEditor getEditor(Composite parent) {
-
-		if (editor == null) {
-			editor = descriptor.createPropertyEditor(parent);
-			if (editor != null) {
-				editor.addListener(cellEditorListener);
-			}
-		}
-		if (editor != null) {
-			editor.setValue(editValue);
-			setErrorText(editor.getErrorMessage());
-		}
-		return editor;
-	}
-
-	/**
-	 * Returns the edit value for the object at the given index.
-	 * 
-	 * @param index
-	 *            the value object index
-	 * @return the edit value for the object at the given index
-	 */
-	protected Object getEditValue(int index) {
-		Object value = values[index];
-		IPropertySource source = getPropertySource(value);
-		if (source != null) {
-			value = source.getEditableValue();
-		}
-		return value;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public String getErrorText() {
-		return errorText;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public String getFilters()[] {
-		return descriptor.getFilterFlags();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public Object getHelpContextIds() {
-		return descriptor.getHelpContextIds();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public Image getImage() {
-		ILabelProvider provider = descriptor.getLabelProvider();
-		if (provider == null) {
-			return null;
-		}
-		return provider.getImage(editValue);
-	}
-
-	/**
-	 * Returns the parent of this entry.
-	 * 
-	 * @return the parent entry, or <code>null</code> if it has no parent
-	 * @since 3.1
-	 */
-	protected PropertySheetEntry getParent() {
-		return parent;
-	}
-
-	/**
-	 * Returns an property source for the given object.
-	 * 
-	 * @param object
-	 *            an object for which to obtain a property source or
-	 *            <code>null</code> if a property source is not available
-	 * @return an property source for the given object
-	 * @since 3.1 (was previously private)
-	 */
-	protected IPropertySource getPropertySource(Object object) {
-		if (sources.containsKey(object))
-			return (IPropertySource) sources.get(object);
-
-		IPropertySource result = null;
-		IPropertySourceProvider provider = propertySourceProvider;
-
-		if (provider == null && object != null) {
-			provider = (IPropertySourceProvider) ViewsPlugin.getAdapter(object, 
-                    IPropertySourceProvider.class, false);
-        }
-
-		if (provider != null) {
-			result = provider.getPropertySource(object);
-		} else {
-            result = (IPropertySource)ViewsPlugin.getAdapter(object, IPropertySource.class, false);
-        }
-
-		sources.put(object, result);
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public String getValueAsString() {
-		if (editValue == null) {
-			return "";//$NON-NLS-1$
-		}
-		ILabelProvider provider = descriptor.getLabelProvider();
-		if (provider == null) {
-			return editValue.toString();
-		}
-		String text = provider.getText(editValue);
-		if (text == null) {
-			return "";//$NON-NLS-1$
-		}
-		return text;
-	}
-
-	/**
-	 * Returns the value objects of this entry.
-	 * 
-	 * @return the value objects of this entry
-	 * @since 3.1 (was previously private)
-	 */
-	public Object[] getValues() {
-		return values;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public boolean hasChildEntries() {
-		if (childEntries != null && childEntries.length > 0) {
-			return true;
-		}
-		// see if we could have entires if we were asked
-		return computeMergedPropertyDescriptors().size() > 0;
-	}
-
-	/**
-	 * Update our child entries. This implementation tries to reuse child
-	 * entries if possible (if the id of the new descriptor matches the
-	 * descriptor id of the old entry).
-	 */
-	private void refreshChildEntries() {
-		if (childEntries == null) {
-			// no children to refresh
-			return;
-		}
-
-		// get the current descriptors
-		List descriptors = computeMergedPropertyDescriptors();
-
-		// cache old entries by their descriptor id
-		Map entryCache = new HashMap(childEntries.length * 2 + 1);
-		for (int i = 0; i < childEntries.length; i++) {
-			PropertySheetEntry childEntry = childEntries[i];
-			if (childEntry != null) {
-				entryCache.put(childEntry.getDescriptor().getId(), childEntry);
-			}
-		}
-
-		// create a list of entries to dispose
-		List entriesToDispose = new ArrayList(Arrays.asList(childEntries));
-
-		// clear the old entries
-		this.childEntries = null;
-
-		// rebuild child entries using old when possible
-		PropertySheetEntry[] newEntries = new PropertySheetEntry[descriptors
-				.size()];
-		boolean entriesChanged = descriptors.size() != entryCache.size();
-		for (int i = 0; i < descriptors.size(); i++) {
-			IPropertyDescriptor d = (IPropertyDescriptor) descriptors.get(i);
-			// see if we have an entry matching this descriptor
-			PropertySheetEntry entry = (PropertySheetEntry) entryCache.get(d
-					.getId());
-			if (entry != null) {
-				// reuse old entry
-				entry.setDescriptor(d);
-				entriesToDispose.remove(entry);
-			} else {
-				// create new entry
-				entry = createChildEntry();
-				entry.setDescriptor(d);
-				entry.setParent(this);
-				entry.setPropertySourceProvider(propertySourceProvider);
-				entriesChanged = true;
-			}
-			entry.refreshValues();
-			newEntries[i] = entry;
-		}
-
-		// only assign if successful
-		this.childEntries = newEntries;
-
-		if (entriesChanged) {
-			fireChildEntriesChanged();
-		}
-
-		// Dispose of entries which are no longer needed
-		for (int i = 0; i < entriesToDispose.size(); i++) {
-			((IPropertySheetEntry) entriesToDispose.get(i)).dispose();
-		}
-	}
-
-	/**
-	 * Refresh the entry tree from the root down.
-	 * 
-	 * @since 3.1 (was previously private)
-	 */
-	protected void refreshFromRoot() {
-		if (parent == null) {
-			refreshChildEntries();
-		} else {
-			parent.refreshFromRoot();
-		}
-	}
-
-	/**
-	 * Update our value objects. We ask our parent for the property values based
-	 * on our descriptor.
-	 */
-	private void refreshValues() {
-		// get our parent's value objects
-		Object[] currentSources = parent.getValues();
-
-		// loop through the objects getting our property value from each
-		Object[] newValues = new Object[currentSources.length];
-		for (int i = 0; i < currentSources.length; i++) {
-			IPropertySource source = parent
-					.getPropertySource(currentSources[i]);
-			newValues[i] = source.getPropertyValue(descriptor.getId());
-		}
-
-		// set our new values
-		setValues(newValues);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public void removePropertySheetEntryListener(
-			IPropertySheetEntryListener listener) {
-		removeListenerObject(listener);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPropertySheetEntry.
-	 */
-	public void resetPropertyValue() {
-		if (parent == null) {
-			// root does not have a default value
-			return;
-		}
-
-		// Use our parent's values to reset our values.
-		boolean change = false;
-		Object[] objects = parent.getValues();
-		for (int i = 0; i < objects.length; i++) {
-			IPropertySource source = getPropertySource(objects[i]);
-			if (source.isPropertySet(descriptor.getId())) {
-				// fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=21756
-				if (source instanceof IPropertySource2) {
-					IPropertySource2 extendedSource = (IPropertySource2) source;
-					// continue with next if property is not resettable
-					if (!extendedSource
-							.isPropertyResettable(descriptor.getId())) {
-						continue;
-					}
-				}
-				source.resetPropertyValue(descriptor.getId());
-				change = true;
-			}
-		}
-		if (change) {
-			refreshFromRoot();
-		}
-	}
-
-	/**
-	 * Set the descriptor.
-	 * 
-	 * @param newDescriptor
-	 */
-	private void setDescriptor(IPropertyDescriptor newDescriptor) {
-		// if our descriptor is changing, we have to get rid
-		// of our current editor if there is one
-		if (descriptor != newDescriptor && editor != null) {
-			editor.dispose();
-			editor = null;
-		}
-		descriptor = newDescriptor;
-	}
-
-	/**
-	 * Set the error text. This should be set to null when the current value is
-	 * valid, otherwise it should be set to a error string
-	 */
-	private void setErrorText(String newErrorText) {
-		errorText = newErrorText;
-		// inform listeners
-		fireErrorMessageChanged();
-	}
-
-	/**
-	 * Sets the parent of the entry to be propertySheetEntry.
-	 * 
-	 * @param propertySheetEntry
-	 */
-	private void setParent(PropertySheetEntry propertySheetEntry) {
-		parent = propertySheetEntry;
-	}
-
-	/**
-	 * Sets a property source provider for this entry. This provider is used to
-	 * obtain an <code>IPropertySource</code> for each of this entries
-	 * objects. If no provider is set then a default provider is used.
-	 * 
-	 * @param provider
-	 *            IPropertySourceProvider
-	 */
-	public void setPropertySourceProvider(IPropertySourceProvider provider) {
-		propertySourceProvider = provider;
-	}
-
-	/**
-	 * Set the value for this entry.
-	 * <p>
-	 * We set the given value as the value for all our value objects. We then
-	 * call our parent to update the property we represent with the given value.
-	 * We then trigger a model refresh.
-	 * <p>
-	 * 
-	 * @param newValue
-	 *            the new value
-	 */
-	private void setValue(Object newValue) {
-		// Set the value
-		for (int i = 0; i < values.length; i++) {
-			values[i] = newValue;
-		}
-
-		// Inform our parent
-		parent.valueChanged(this);
-
-		// Refresh the model
-		refreshFromRoot();
-	}
-
-	/**
-	 * The <code>PropertySheetEntry</code> implmentation of this method
-	 * declared on<code>IPropertySheetEntry</code> will obtain an editable
-	 * value for the given objects and update the child entries.
-	 * <p>
-	 * Updating the child entries will typically call this method on the child
-	 * entries and thus the entire entry tree is updated
-	 * </p>
-	 * 
-	 * @param objects
-	 *            the new values for this entry
-	 */
-	public void setValues(Object[] objects) {
-		values = objects;
-		sources = new HashMap(values.length * 2 + 1);
-
-		if (values.length == 0) {
-			editValue = null;
-		} else {
-			// set the first value object as the entry's value
-			Object newValue = values[0];
-
-			// see if we should convert the value to an editable value
-			IPropertySource source = getPropertySource(newValue);
-			if (source != null) {
-				newValue = source.getEditableValue();
-			}
-			editValue = newValue;
-		}
-
-		// update our child entries
-		refreshChildEntries();
-
-		// inform listeners that our value changed
-		fireValueChanged();
-	}
-
-	/**
-	 * The value of the given child entry has changed. Therefore we must set
-	 * this change into our value objects.
-	 * <p>
-	 * We must inform our parent so that it can update its value objects
-	 * </p>
-	 * <p>
-	 * Subclasses may override to set the property value in some custom way.
-	 * </p>
-	 * 
-	 * @param child
-	 *            the child entry that changed its value
-	 */
-	protected void valueChanged(PropertySheetEntry child) {
-		for (int i = 0; i < values.length; i++) {
-			IPropertySource source = getPropertySource(values[i]);
-			source.setPropertyValue(child.getDescriptor().getId(), child
-					.getEditValue(i));
-		}
-
-		// inform our parent
-		if (parent != null) {
-			parent.valueChanged(this);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetPage.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetPage.java
deleted file mode 100644
index 4e9931f..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetPage.java
+++ /dev/null
@@ -1,573 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Gunnar Wagenknecht - fix for bug 21756 [PropertiesView] property view sorting
- *******************************************************************************/
-
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.help.IContext;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.internal.ConfigureColumnsDialog;
-import org.eclipse.jface.viewers.CellEditor;
-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.window.SameShellProvider;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DragSourceAdapter;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.help.IContextComputer;
-import org.eclipse.ui.help.IWorkbenchHelpSystem;
-import org.eclipse.ui.internal.views.ViewsPlugin;
-import org.eclipse.ui.internal.views.properties.PropertiesMessages;
-import org.eclipse.ui.part.CellEditorActionHandler;
-import org.eclipse.ui.part.Page;
-
-/**
- * The standard implementation of property sheet page which presents
- * a table of property names and values obtained from the current selection
- * in the active workbench part.
- * <p>
- * This page obtains the information about what properties to display from 
- * the current selection (which it tracks). 
- * </p>
- * <p>
- * The model for this page is a hierarchy of <code>IPropertySheetEntry</code>.
- * The page may be configured with a custom model by setting the root entry.
- * <p>
- * If no root entry is set then a default model is created which uses the
- * <code>IPropertySource</code> interface to obtain the properties of
- * the current selection. This requires that the selected objects provide an
- * <code>IPropertySource</code> adapter (or implement 
- * <code>IPropertySource</code> directly). This restiction can be overcome
- * by providing this page with an <code>IPropertySourceProvider</code>. If
- * supplied, this provider will be used by the default model to obtain a
- * property source for the current selection 
- * </p>
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- *
- * @see IPropertySource
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PropertySheetPage extends Page implements IPropertySheetPage, IAdaptable {
-    /**
-     * Help context id 
-     * (value <code>"org.eclipse.ui.property_sheet_page_help_context"</code>).
-     */
-    public static final String HELP_CONTEXT_PROPERTY_SHEET_PAGE = "org.eclipse.ui.property_sheet_page_help_context"; //$NON-NLS-1$
-
-    private PropertySheetViewer viewer;
-    
-    private PropertySheetSorter sorter;
-
-    private IPropertySheetEntry rootEntry;
-
-    private IPropertySourceProvider provider;
-
-    private DefaultsAction defaultsAction;
-
-    private FilterAction filterAction;
-
-    private CategoriesAction categoriesAction;
-
-    private CopyPropertyAction copyAction;
-
-    private ICellEditorActivationListener cellEditorActivationListener;
-
-    private CellEditorActionHandler cellEditorActionHandler;
-
-    private Clipboard clipboard;
-
-	private IWorkbenchPart sourcePart;
-
-	/**
-	 * Part listener which cleans up this page when the source part is closed.
-	 * This is hooked only when there is a source part.
-	 *  
-	 * @since 3.2
-	 */
-	private class PartListener implements IPartListener {
-		public void partActivated(IWorkbenchPart part) {
-		}
-
-		public void partBroughtToTop(IWorkbenchPart part) {
-		}
-
-		public void partClosed(IWorkbenchPart part) {
-			if (sourcePart == part) {
-				sourcePart = null;
-				if (viewer != null && !viewer.getControl().isDisposed()) {
-					viewer.setInput(new Object[0]);
-				}
-			}
-		}
-
-		public void partDeactivated(IWorkbenchPart part) {
-		}
-
-		public void partOpened(IWorkbenchPart part) {
-		}
-	}
-	
-	private PartListener partListener = new PartListener();
-
-	private Action columnsAction;
-	
-    /**
-     * Creates a new property sheet page.
-     */
-    public PropertySheetPage() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on <code>IPage</code>.
-     */
-    public void createControl(Composite parent) {
-        // create a new viewer
-        viewer = new PropertySheetViewer(parent);
-        viewer.setSorter(sorter);
-        
-        // set the model for the viewer
-        if (rootEntry == null) {
-            // create a new root
-            PropertySheetEntry root = new PropertySheetEntry();
-            if (provider != null) {
-				// set the property source provider
-                root.setPropertySourceProvider(provider);
-			}
-            rootEntry = root;
-        }
-        viewer.setRootEntry(rootEntry);
-        viewer.addActivationListener(getCellEditorActivationListener());
-        // add a listener to track when the entry selection changes
-        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-            public void selectionChanged(SelectionChangedEvent event) {
-                handleEntrySelection(event.getSelection());
-            }
-        });
-        initDragAndDrop();
-        makeActions();
-
-        // Create the popup menu for the page.
-        MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
-        menuMgr.add(copyAction);
-        menuMgr.add(new Separator());
-        menuMgr.add(defaultsAction);
-        Menu menu = menuMgr.createContextMenu(viewer.getControl());
-        viewer.getControl().setMenu(menu);
-
-        // Set help on the viewer 
-        viewer.getControl().addHelpListener(new HelpListener() {
-            /*
-             * @see HelpListener#helpRequested(HelpEvent)
-             */
-            public void helpRequested(HelpEvent e) {
-                // Get the context for the selected item
-                IStructuredSelection selection = (IStructuredSelection) viewer
-                        .getSelection();
-                if (!selection.isEmpty()) {
-                    IPropertySheetEntry entry = (IPropertySheetEntry) selection
-                            .getFirstElement();
-                    Object helpContextId = entry.getHelpContextIds();
-                    if (helpContextId != null) {
-                        if (helpContextId instanceof String) {
-                            PlatformUI.getWorkbench()
-									.getHelpSystem().displayHelp(
-											(String) helpContextId);
-                            return;
-                        }
-
-                        // Since 2.0 the only valid type for helpContextIds
-                        // is a String (a single id).
-                        // However for backward compatibility we have to handle
-                        // and array of contexts (Strings and/or IContexts) 
-                        // or a context computer.
-                        Object[] contexts = null;
-                        if (helpContextId instanceof IContextComputer) {
-                            // get local contexts
-                            contexts = ((IContextComputer) helpContextId)
-                                    .getLocalContexts(e);
-                        } else {
-                            contexts = (Object[]) helpContextId;
-                        }
-                        IWorkbenchHelpSystem help = PlatformUI.getWorkbench().getHelpSystem();
-                        // Ignore all but the first element in the array
-                        if (contexts[0] instanceof IContext) {
-							help.displayHelp((IContext) contexts[0]);
-						} else {
-							help.displayHelp((String) contexts[0]);
-						}
-                        return;
-                    }
-                }
-
-                // No help for the selection so show page help
-                PlatformUI.getWorkbench().getHelpSystem().displayHelp(HELP_CONTEXT_PROPERTY_SHEET_PAGE);
-            }
-        });
-    }
-
-    /**
-     * The <code>PropertySheetPage</code> implementation of this <code>IPage</code> method 
-     * disposes of this page's entries.
-     */
-    public void dispose() {
-        super.dispose();
-        if (sourcePart != null) {
-        	sourcePart.getSite().getPage().removePartListener(partListener);
-        }        
-        if (rootEntry != null) {
-            rootEntry.dispose();
-            rootEntry = null;
-        }
-        if (clipboard != null) {
-            clipboard.dispose();
-            clipboard = null;
-        }
-    }
-
-    /**
-     * The <code>PropertySheetPage</code> implementation of this <code>IAdaptable</code> method
-     * handles the <code>ISaveablePart</code> adapter by delegating to the source part.
-     * 
-     * @since 3.2
-     */
-    public Object getAdapter(Class adapter) {
-		if (ISaveablePart.class.equals(adapter)) {
-			return getSaveablePart();
-		}
-    	return null;
-    }
-    
-	/**
-	 * Returns an <code>ISaveablePart</code> that delegates to the source part
-	 * for the current page if it implements <code>ISaveablePart</code>, or
-	 * <code>null</code> otherwise.
-	 * 
-	 * @return an <code>ISaveablePart</code> or <code>null</code>
-	 * @since 3.2
-	 */
-	protected ISaveablePart getSaveablePart() {
-		if (sourcePart instanceof ISaveablePart) {
-			return (ISaveablePart) sourcePart;
-		}
-		return null;
-	}
-    
-    /**
-     * Returns the cell editor activation listener for this page
-     * @return ICellEditorActivationListener the cell editor activation listener for this page
-     */
-    private ICellEditorActivationListener getCellEditorActivationListener() {
-        if (cellEditorActivationListener == null) {
-            cellEditorActivationListener = new ICellEditorActivationListener() {
-                public void cellEditorActivated(CellEditor cellEditor) {
-                    if (cellEditorActionHandler != null) {
-						cellEditorActionHandler.addCellEditor(cellEditor);
-					}
-                }
-
-                public void cellEditorDeactivated(CellEditor cellEditor) {
-                    if (cellEditorActionHandler != null) {
-						cellEditorActionHandler.removeCellEditor(cellEditor);
-					}
-                }
-            };
-        }
-        return cellEditorActivationListener;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPage (and Page).
-     */
-    public Control getControl() {
-        if (viewer == null) {
-			return null;
-		}
-        return viewer.getControl();
-    }
-
-    /**
-     * Handles a selection change in the entry table.
-     *
-     * @param selection the new selection
-     */
-    public void handleEntrySelection(ISelection selection) {
-        if (defaultsAction != null) {
-            if (selection.isEmpty()) {
-                defaultsAction.setEnabled(false);
-                return;
-            }
-            // see if item is editable
-            boolean editable = viewer.getActiveCellEditor() != null;
-            defaultsAction.setEnabled(editable);
-        }
-    }
-
-    /**
-     * Adds drag and drop support.
-     */
-    protected void initDragAndDrop() {
-        int operations = DND.DROP_COPY;
-        Transfer[] transferTypes = new Transfer[] { TextTransfer.getInstance() };
-        DragSourceListener listener = new DragSourceAdapter() {
-            public void dragSetData(DragSourceEvent event) {
-                performDragSetData(event);
-            }
-
-            public void dragFinished(DragSourceEvent event) {
-                //Nothing to do here
-            }
-        };
-        DragSource dragSource = new DragSource(
-                viewer.getControl(), operations);
-        dragSource.setTransfer(transferTypes);
-        dragSource.addDragListener(listener);
-    }
-
-    /**
-     * The user is attempting to drag.  Add the appropriate
-     * data to the event.
-     * @param event The event sent from the drag and drop support.
-     */
-    void performDragSetData(DragSourceEvent event) {
-        // Get the selected property
-        IStructuredSelection selection = (IStructuredSelection) viewer
-                .getSelection();
-        if (selection.isEmpty()) {
-			return;
-		}
-        // Assume single selection
-        IPropertySheetEntry entry = (IPropertySheetEntry) selection
-                .getFirstElement();
-
-        // Place text as the data
-        StringBuffer buffer = new StringBuffer();
-        buffer.append(entry.getDisplayName());
-        buffer.append("\t"); //$NON-NLS-1$
-        buffer.append(entry.getValueAsString());
-
-        event.data = buffer.toString();
-    }
-
-    /**
-     * Make action objects.
-     */
-    private void makeActions() {
-        ISharedImages sharedImages = PlatformUI.getWorkbench()
-                .getSharedImages();
-
-        // Restore Default Value
-        defaultsAction = new DefaultsAction(viewer, "defaults"); //$NON-NLS-1$
-        defaultsAction.setText(PropertiesMessages.Defaults_text);
-        defaultsAction.setToolTipText(PropertiesMessages.Defaults_toolTip);
-        defaultsAction
-                .setImageDescriptor(ViewsPlugin.getViewImageDescriptor("elcl16/defaults_ps.gif")); //$NON-NLS-1$
-        defaultsAction
-                .setDisabledImageDescriptor(ViewsPlugin.getViewImageDescriptor("dlcl16/defaults_ps.gif")); //$NON-NLS-1$
-        defaultsAction.setEnabled(false);
-
-        // Show Advanced Properties
-        filterAction = new FilterAction(viewer, "filter"); //$NON-NLS-1$
-        filterAction.setText(PropertiesMessages.Filter_text);
-        filterAction.setToolTipText(PropertiesMessages.Filter_toolTip);
-        filterAction
-                .setImageDescriptor(ViewsPlugin.getViewImageDescriptor("elcl16/filter_ps.gif")); //$NON-NLS-1$
-        filterAction.setChecked(false);
-
-        // Show Categories
-        categoriesAction = new CategoriesAction(viewer, "categories"); //$NON-NLS-1$
-        categoriesAction.setText(PropertiesMessages.Categories_text);
-        categoriesAction.setToolTipText(PropertiesMessages.Categories_toolTip);
-        categoriesAction
-                .setImageDescriptor(ViewsPlugin.getViewImageDescriptor("elcl16/tree_mode.gif")); //$NON-NLS-1$
-        categoriesAction.setChecked(true);
-
-        // Columns...
-        columnsAction = new Action(PropertiesMessages.Columns_text){
-        	public void run() {
-        		Tree tree = (Tree) viewer.getControl();
-        		new ConfigureColumnsDialog(new SameShellProvider(tree), tree).open();
-        	}
-		};
-        columnsAction.setToolTipText(PropertiesMessages.Columns_toolTip);
-        
-        // Copy	
-        Shell shell = viewer.getControl().getShell();
-        clipboard = new Clipboard(shell.getDisplay());
-        copyAction = new CopyPropertyAction(viewer, "copy", clipboard); //$NON-NLS-1$
-        copyAction.setText(PropertiesMessages.CopyProperty_text);
-        copyAction.setImageDescriptor(sharedImages
-                .getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPage (and Page).
-     */
-    public void makeContributions(IMenuManager menuManager,
-            IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
-
-        // add actions to the tool bar
-        toolBarManager.add(categoriesAction);
-        toolBarManager.add(filterAction);
-        toolBarManager.add(defaultsAction);
-
-        // add actions to the menu
-        menuManager.add(categoriesAction);
-        menuManager.add(filterAction);
-        menuManager.add(columnsAction);
-
-        // set status line manager into the viewer
-        viewer.setStatusLineManager(statusLineManager);
-    }
-
-    /**
-     * Updates the model for the viewer.
-     * <p>
-     * Note that this means ensuring that the model reflects the state
-     * of the current viewer input. 
-     * </p>
-     */
-    public void refresh() {
-        if (viewer == null) {
-			return;
-		}
-        // calling setInput on the viewer will cause the model to refresh
-        viewer.setInput(viewer.getInput());
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionListener.
-     */
-    public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-        if (viewer == null) {
-			return;
-		}
-
-        if (sourcePart != null) {
-        	sourcePart.getSite().getPage().removePartListener(partListener);
-        	sourcePart = null;
-        }
-        
-        // change the viewer input since the workbench selection has changed.
-        if (selection instanceof IStructuredSelection) {
-        	sourcePart = part;
-            viewer.setInput(((IStructuredSelection) selection).toArray());
-        }
-
-        if (sourcePart != null) {
-        	sourcePart.getSite().getPage().addPartListener(partListener);
-        }
-    }
-
-    /**
-     * The <code>PropertySheetPage</code> implementation of this <code>IPage</code> method
-     * calls <code>makeContributions</code> for backwards compatibility with
-     * previous versions of <code>IPage</code>. 
-     * <p>
-     * Subclasses may reimplement.
-     * </p>
-     */
-    public void setActionBars(IActionBars actionBars) {
-        super.setActionBars(actionBars);
-        cellEditorActionHandler = new CellEditorActionHandler(actionBars);
-        cellEditorActionHandler.setCopyAction(copyAction);
-    }
-
-    /**
-     * Sets focus to a part in the page.
-     */
-    public void setFocus() {
-        viewer.getControl().setFocus();
-    }
-
-    /**
-     * Sets the given property source provider as
-     * the property source provider.
-     * <p>
-     * Calling this method is only valid if you are using
-     * this page's default root entry.
-     * </p>
-     * @param newProvider the property source provider
-     */
-    public void setPropertySourceProvider(IPropertySourceProvider newProvider) {
-        provider = newProvider;
-        if (rootEntry instanceof PropertySheetEntry) {
-            ((PropertySheetEntry) rootEntry)
-                    .setPropertySourceProvider(provider);
-            // the following will trigger an update
-            viewer.setRootEntry(rootEntry);
-        }
-    }
-
-    /**
-     * Sets the given entry as the model for the page.
-     *
-     * @param entry the root entry
-     */
-    public void setRootEntry(IPropertySheetEntry entry) {
-        rootEntry = entry;
-        if (viewer != null) {
-			// the following will trigger an update
-            viewer.setRootEntry(rootEntry);
-		}
-    }
-
-    /**
-	 * Sets the sorter used for sorting categories and entries in the viewer
-	 * of this page.
-	 * <p>
-	 * The default sorter sorts categories and entries alphabetically. 
-	 * </p>
-	 * @param sorter the sorter to set (<code>null</code> will reset to the
-	 * default sorter)
-     * @since 3.1
-	 */
-	protected void setSorter(PropertySheetSorter sorter) {
-		this.sorter = sorter;
-        if (viewer != null) {
-        	viewer.setSorter(sorter);
-        	
-        	// the following will trigger an update
-        	if(null != viewer.getRootEntry()) {
-				viewer.setRootEntry(rootEntry);
-			}
-        }
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetSorter.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetSorter.java
deleted file mode 100644
index 336c9e1..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetSorter.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Gunnar Wagenknecht and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Gunnar Wagenknecht - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import java.text.Collator; // can't use ICU, in public API
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * Class used by {@link org.eclipse.ui.views.properties.PropertySheetPage} to
- * sort properties.
- * <p>
- * The default implementation sorts alphabetically. Subclasses may overwrite to
- * implement custom sorting.
- * </p>
- *
- * @since 3.1
- */
-public class PropertySheetSorter  {
-
-	/**
-	 * The collator used to sort strings.
-	 */
-	private Collator collator;
-
-	/**
-	 * Creates a new sorter, which uses the default collator to sort strings.
-	 */
-	public PropertySheetSorter() {
-		this(Collator.getInstance());
-	}
-
-	/**
-	 * Creates a new sorter, which uses the given collator to sort strings.
-	 * 
-	 * @param collator
-	 *            the collator to use to sort strings
-	 */
-	public PropertySheetSorter(Collator collator) {
-		this.collator = collator;
-	}
-
-	/**
-	 * Returns a negative, zero, or positive number depending on whether the
-	 * first element is less than, equal to, or greater than the second element.
-	 * <p>
-	 * The default implementation of this method uses the collator to
-	 * compare the display names. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param entryA
-	 *            the first element
-	 * @param entryB
-	 *            the second element
-	 * @return a negative number if the first element is less than the second
-	 *         element; the value <code>0</code> if the first element is equal
-	 *         to the second element; and a positive number if the first element
-	 *         is greater than the second element
-	 */
-	public int compare(IPropertySheetEntry entryA, IPropertySheetEntry entryB) {
-		return getCollator().compare(entryA.getDisplayName(),
-				entryB.getDisplayName());
-	}
-
-	/**
-	 * Returns a negative, zero, or positive number depending on whether the
-	 * first element is less than, equal to, or greater than the second element.
-	 * <p>
-	 * The default implementation of this method uses the collator to
-	 * compare the strings. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param categoryA
-	 *            the first element
-	 * @param categoryB
-	 *            the second element
-	 * @return a negative number if the first element is less than the second
-	 *         element; the value <code>0</code> if the first element is equal
-	 *         to the second element; and a positive number if the first element
-	 *         is greater than the second element
-	 */
-	public int compareCategories(String categoryA, String categoryB) {
-		return getCollator().compare(categoryA, categoryB);
-	}
-
-	/**
-	 * Returns the collator used to sort strings.
-	 * 
-	 * @return the collator used to sort strings
-	 */
-	protected Collator getCollator() {
-		return collator;
-	}
-
-	/**
-	 * Sorts the given elements in-place, modifying the given array.
-	 * <p>
-	 * The default implementation of this method uses the java.util.Arrays#sort
-	 * algorithm on the given array, calling <code>compare</code> to compare
-	 * elements.
-	 * </p>
-	 * <p>
-	 * Subclasses may reimplement this method to provide a more optimized
-	 * implementation.
-	 * </p>
-	 * 
-	 * @param entries
-	 *            the elements to sort
-	 */
-	public void sort(IPropertySheetEntry[] entries) {
-		Arrays.sort(entries, new Comparator() {
-			public int compare(Object a, Object b) {
-				return PropertySheetSorter.this.compare(
-						(IPropertySheetEntry) a, (IPropertySheetEntry) b);
-			}
-		});
-	}
-
-	/**
-	 * Sorts the given categories in-place, modifying the given array.
-	 * 
-	 * @param categories
-	 *            the categories to sort
-	 */
-	void sort(PropertySheetCategory[] categories) {
-		Arrays.sort(categories, new Comparator() {
-			public int compare(Object a, Object b) {
-				return PropertySheetSorter.this.compareCategories(
-						((PropertySheetCategory) a).getCategoryName(),
-						((PropertySheetCategory) b).getCategoryName());
-			}
-		});
-	}
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
deleted file mode 100644
index 744e604..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
+++ /dev/null
@@ -1,1390 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Gunnar Wagenknecht - fix for bug 21756 [PropertiesView] property view sorting
- *******************************************************************************/
-
-package org.eclipse.ui.views.properties;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.runtime.ListenerList;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.jface.viewers.ISelection;
-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.swt.SWT;
-import org.eclipse.swt.custom.TreeEditor;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-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.events.TreeEvent;
-import org.eclipse.swt.events.TreeListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.internal.views.properties.PropertiesMessages;
-
-/**
- * The PropertySheetViewer displays the properties of objects. The model for the
- * viewer consists of a hierarchy of <code>IPropertySheetEntry</code>.
- * <p>
- * This viewer also supports the optional catogorization of the first level
- * <code>IPropertySheetEntry</code> s by using instances of
- * <code>PropertySheetCategory</code>.
- *  
- */
-/* package */
-class PropertySheetViewer extends Viewer {
-    // The input objects for the viewer
-    private Object[] input;
-
-    // The root entry of the viewer
-    private IPropertySheetEntry rootEntry;
-
-    // The current categories
-    private PropertySheetCategory[] categories;
-
-    // SWT widgets
-    private Tree tree;
-
-    /**
-     * Maintain a map from the PropertySheet entry to its
-     * corresponding TreeItem. This is used in 'findItem' to
-     * greatly increase the performance.
-     */
-    private HashMap entryToItemMap = new HashMap();
-    
-    private TreeEditor treeEditor;
-
-    private static String[] columnLabels = {
-            PropertiesMessages.PropertyViewer_property, PropertiesMessages.PropertyViewer_value };
-
-    private static String MISCELLANEOUS_CATEGORY_NAME = PropertiesMessages.PropertyViewer_misc;
-
-    // Cell editor support.
-    private int columnToEdit = 1;
-
-    private CellEditor cellEditor;
-
-    private IPropertySheetEntryListener entryListener;
-
-    private ICellEditorListener editorListener;
-
-    // Flag to indicate if categories (if any) should be shown
-    private boolean isShowingCategories = true;
-
-    // Flag to indicate expert properties should be shown
-    private boolean isShowingExpertProperties = false;
-
-    // The status line manager for showing messages
-    private IStatusLineManager statusLineManager;
-
-    // Cell editor activation listeners
-    private ListenerList activationListeners = new ListenerList();
-    
-    // the property sheet sorter
-    private PropertySheetSorter sorter = new PropertySheetSorter();
-
-    /**
-     * Creates a property sheet viewer on a newly-created tree control
-     * under the given parent. The viewer has no input, and no root entry.
-     * 
-     * @param parent
-     *            the parent control
-     */
-    public PropertySheetViewer(Composite parent) {
-        tree = new Tree(parent, SWT.FULL_SELECTION | SWT.SINGLE
-                | SWT.HIDE_SELECTION);
-
-        // configure the widget
-        tree.setLinesVisible(true);
-        tree.setHeaderVisible(true);
-
-        // configure the columns
-        addColumns();
-
-        // add our listeners to the widget
-        hookControl();
-
-        // create a new tree editor
-        treeEditor = new TreeEditor(tree);
-
-        // create the entry and editor listener
-        createEntryListener();
-        createEditorListener();
-    }
-
-    /**
-     * Activate a cell editor for the given selected tree item.
-     * 
-     * @param item
-     *            the selected tree item
-     */
-    private void activateCellEditor(TreeItem item) {
-        // ensure the cell editor is visible
-        tree.showSelection();
-
-        // Get the entry for this item
-        IPropertySheetEntry activeEntry = (IPropertySheetEntry) item.getData();
-
-        // Get the cell editor for the entry.
-        // Note that the editor parent must be the Tree control
-        cellEditor = activeEntry.getEditor(tree);
-
-        if (cellEditor == null) {
-			// unable to create the editor
-            return;
-		}
-
-        // activate the cell editor
-        cellEditor.activate();
-
-        // if the cell editor has no control we can stop now
-        Control control = cellEditor.getControl();
-        if (control == null) {
-            cellEditor.deactivate();
-            cellEditor = null;
-            return;
-        }
-
-        // add our editor listener
-        cellEditor.addListener(editorListener);
-
-        // set the layout of the tree editor to match the cell editor
-        CellEditor.LayoutData layout = cellEditor.getLayoutData();
-        treeEditor.horizontalAlignment = layout.horizontalAlignment;
-        treeEditor.grabHorizontal = layout.grabHorizontal;
-        treeEditor.minimumWidth = layout.minimumWidth;
-        treeEditor.setEditor(control, item, columnToEdit);
-
-        // set the error text from the cel editor
-        setErrorMessage(cellEditor.getErrorMessage());
-
-        // give focus to the cell editor
-        cellEditor.setFocus();
-
-        // notify of activation
-        fireCellEditorActivated(cellEditor);
-    }
-
-    /**
-     * Adds a cell editor activation listener. Has no effect if an identical
-     * activation listener is already registered.
-     * 
-     * @param listener
-     *            a cell editor activation listener
-     */
-    /* package */
-    void addActivationListener(ICellEditorActivationListener listener) {
-        activationListeners.add(listener);
-    }
-
-    /**
-     * Add columns to the tree and set up the layout manager accordingly.
-     */
-    private void addColumns() {
-
-        // create the columns
-        TreeColumn[] columns = tree.getColumns();
-        for (int i = 0; i < columnLabels.length; i++) {
-            String string = columnLabels[i];
-            if (string != null) {
-                TreeColumn column;
-                if (i < columns.length) {
-					column = columns[i];
-				} else {
-					column = new TreeColumn(tree, 0);
-				}
-                column.setText(string);
-            }
-        }
-
-        tree.addControlListener(new ControlAdapter() {
-            public void controlResized(ControlEvent e) {
-                Rectangle area = tree.getClientArea();
-                TreeColumn[] columns = tree.getColumns();
-                if (area.width > 0) {
-                    columns[0].setWidth(area.width * 40 / 100);
-                    columns[1].setWidth(area.width - columns[0].getWidth() - 4);
-                    tree.removeControlListener(this);
-                }
-            }
-        });
-
-    }
-
-    /**
-     * Asks the entry currently being edited to apply its current cell editor
-     * value.
-     */
-    private void applyEditorValue() {
-        TreeItem treeItem = treeEditor.getItem();
-        // treeItem can be null when view is opened
-        if (treeItem == null || treeItem.isDisposed()) {
-			return;
-		}
-        IPropertySheetEntry entry = (IPropertySheetEntry) treeItem.getData();
-        entry.applyEditorValue();
-    }
-
-    /**
-     * Creates the child items for the given widget (item or tree). This
-     * method is called when the item is expanded for the first time or when an
-     * item is assigned as the root of the tree.
-     * @param widget TreeItem or Tree to create the children in.
-     */
-    private void createChildren(Widget widget) {
-        // get the current child items
-        TreeItem[] childItems = getChildItems(widget);
-
-        if (childItems.length > 0) {
-            Object data = childItems[0].getData();
-            if (data != null) {
-				// children already there!
-                return;
-			}
-            // remove the dummy
-            childItems[0].dispose();
-        }
-
-        // get the children and create their tree items
-        Object node = widget.getData();
-        List children = getChildren(node);
-        if (children.isEmpty()) {
-			// this item does't actually have any children
-            return;
-		}
-        for (int i = 0; i < children.size(); i++) {
-            // create a new tree item
-            createItem(children.get(i), widget, i);
-        }
-    }
-
-    /**
-     * Creates a new cell editor listener.
-     */
-    private void createEditorListener() {
-        editorListener = new ICellEditorListener() {
-            public void cancelEditor() {
-                deactivateCellEditor();
-            }
-
-            public void editorValueChanged(boolean oldValidState,
-                    boolean newValidState) {
-                //Do nothing
-            }
-
-            public void applyEditorValue() {
-                //Do nothing
-            }
-        };
-    }
-
-    /**
-     * Creates a new property sheet entry listener.
-     */
-    private void createEntryListener() {
-        entryListener = new IPropertySheetEntryListener() {
-            public void childEntriesChanged(IPropertySheetEntry entry) {
-                // update the children of the given entry
-                if (entry == rootEntry) {
-					updateChildrenOf(entry, tree);
-				} else {
-                    TreeItem item = findItem(entry);
-                    if (item != null) {
-						updateChildrenOf(entry, item);
-					}
-                }
-            }
-
-            public void valueChanged(IPropertySheetEntry entry) {
-                // update the given entry
-                TreeItem item = findItem(entry);
-                if (item != null) {
-					updateEntry(entry, item);
-				}
-            }
-
-            public void errorMessageChanged(IPropertySheetEntry entry) {
-                // update the error message
-                setErrorMessage(entry.getErrorText());
-            }
-        };
-    }
-
-    /**
-     * Creates a new tree item, sets the given entry or category (node)in
-     * its user data field, and adds a listener to the node if it is an entry.
-     * 
-     * @param node
-     *            the entry or category associated with this item
-     * @param parent
-     *            the parent widget
-     * @param index
-     *            indicates the position to insert the item into its parent
-     */
-    private void createItem(Object node, Widget parent, int index) {
-        // create the item
-        TreeItem item;
-        if (parent instanceof TreeItem) {
-			item = new TreeItem((TreeItem) parent, SWT.NONE, index);
-		} else {
-			item = new TreeItem((Tree) parent, SWT.NONE, index);
-		}
-
-        // set the user data field
-        item.setData(node);
-        
-        // Cache the entry <-> tree item relationship 
-        entryToItemMap.put(node, item);
-        
-        // Always ensure that if the tree item goes away that it's
-        // removed from the cache
-        item.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				Object possibleEntry = e.widget.getData();
-				if (possibleEntry != null)
-					entryToItemMap.remove(possibleEntry);
-			}
-        });        
-
-        // add our listener
-        if (node instanceof IPropertySheetEntry) {
-			((IPropertySheetEntry) node)
-                    .addPropertySheetEntryListener(entryListener);
-		}
-
-        // update the visual presentation
-        if (node instanceof IPropertySheetEntry) {
-			updateEntry((IPropertySheetEntry) node, item);
-		} else {
-			updateCategory((PropertySheetCategory) node, item);
-		}
-    }
-
-    /**
-     * Deactivate the currently active cell editor.
-     */
-    /* package */
-    void deactivateCellEditor() {
-        treeEditor.setEditor(null, null, columnToEdit);
-        if (cellEditor != null) {
-            cellEditor.deactivate();
-            fireCellEditorDeactivated(cellEditor);
-            cellEditor.removeListener(editorListener);
-            cellEditor = null;
-        }
-        // clear any error message from the editor
-        setErrorMessage(null);
-    }
-
-    /**
-     * Sends out a selection changed event for the entry tree to all registered
-     * listeners.
-     */
-    private void entrySelectionChanged() {
-        SelectionChangedEvent changeEvent = new SelectionChangedEvent(this,
-                getSelection());
-        fireSelectionChanged(changeEvent);
-    }
-
-    /**
-     * Return a tree item in the property sheet that has the same entry in
-     * its user data field as the supplied entry. Return <code>null</code> if
-     * there is no such item.
-     * 
-     * @param entry
-     *            the entry to serach for
-     * @return the TreeItem for the entry or <code>null</code> if
-     * there isn't one.
-     */
-    private TreeItem findItem(IPropertySheetEntry entry) {
-        // Iterate through treeItems to find item
-        TreeItem[] items = tree.getItems();
-        for (int i = 0; i < items.length; i++) {
-            TreeItem item = items[i];
-            TreeItem findItem = findItem(entry, item);
-            if (findItem != null) {
-				return findItem;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Return a tree item in the property sheet that has the same entry in
-     * its user data field as the supplied entry. Return <code>null</code> if
-     * there is no such item.
-     * 
-     * @param entry
-     *            the entry to search for
-     * @param item
-     *            the item look in
-     * @return the TreeItem for the entry or <code>null</code> if
-     * there isn't one.
-     */
-    private TreeItem findItem(IPropertySheetEntry entry, TreeItem item) {
-    	// If we can find the TreeItem in the cache, just return it
-    	Object mapItem = entryToItemMap.get(entry);
-    	if (mapItem != null && mapItem instanceof TreeItem)
-    		return (TreeItem) mapItem;
-    	
-        // compare with current item
-        if (entry == item.getData()) {
-			return item;
-		}
-
-        // recurse over children
-        TreeItem[] items = item.getItems();
-        for (int i = 0; i < items.length; i++) {
-            TreeItem childItem = items[i];
-            TreeItem findItem = findItem(entry, childItem);
-            if (findItem != null) {
-				return findItem;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Notifies all registered cell editor activation listeners of a cell editor
-     * activation.
-     * 
-     * @param activatedCellEditor
-     *            the activated cell editor
-     */
-    private void fireCellEditorActivated(CellEditor activatedCellEditor) {
-        Object[] listeners = activationListeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-            ((ICellEditorActivationListener) listeners[i])
-                    .cellEditorActivated(activatedCellEditor);
-        }
-    }
-
-    /**
-     * Notifies all registered cell editor activation listeners of a cell editor
-     * deactivation.
-     * 
-     * @param activatedCellEditor
-     *            the deactivated cell editor
-     */
-    private void fireCellEditorDeactivated(CellEditor activatedCellEditor) {
-        Object[] listeners = activationListeners.getListeners();
-        for (int i = 0; i < listeners.length; ++i) {
-            ((ICellEditorActivationListener) listeners[i])
-                    .cellEditorDeactivated(activatedCellEditor);
-        }
-    }
-
-    /**
-     * Returns the active cell editor of this property sheet viewer or
-     * <code>null</code> if no cell editor is active.
-     * 
-     * @return the active cell editor
-     */
-    public CellEditor getActiveCellEditor() {
-        return cellEditor;
-    }
-
-    private TreeItem[] getChildItems(Widget widget) {
-        if (widget instanceof Tree) {
-            return ((Tree) widget).getItems();
-        }
-        else if (widget instanceof TreeItem) {
-            return ((TreeItem) widget).getItems();
-        }
-        // shouldn't happen
-        return new TreeItem[0];
-    }
-    
-    /**
-     * Returns the sorted children of the given category or entry
-     *
-     * @param node a category or entry
-     * @return the children of the given category or entry
-     *  (element type <code>IPropertySheetEntry</code> or 
-     *  <code>PropertySheetCategory</code>)
-     */
-    private List getChildren(Object node) {
-        // cast the entry or category
-        IPropertySheetEntry entry = null;
-        PropertySheetCategory category = null;
-        if (node instanceof IPropertySheetEntry) {
-			entry = (IPropertySheetEntry) node;
-		} else {
-			category = (PropertySheetCategory) node;
-		}
-
-        // get the child entries or categories
-        List children;
-        if (category == null) {
-			children = getChildren(entry);
-		} else {
-			children = getChildren(category);
-		}
-
-        return children;
-    }
-
-    /**
-     * Returns the child entries of the given entry
-     * @param entry The entry to search
-     * 
-     * @return the children of the given entry (element type
-     *         <code>IPropertySheetEntry</code>)
-     */
-    private List getChildren(IPropertySheetEntry entry) {
-        // if the entry is the root and we are showing categories, and we have
-        // more than the
-        // defualt category, return the categories
-        if (entry == rootEntry && isShowingCategories) {
-            if (categories.length > 1
-                    || (categories.length == 1 && !categories[0]
-                            .getCategoryName().equals(
-                                    MISCELLANEOUS_CATEGORY_NAME))) {
-				return Arrays.asList(categories);
-			}
-        }
-
-        // return the sorted & filtered child entries
-        return getSortedEntries(getFilteredEntries(entry.getChildEntries()));
-    }
-
-    /**
-     * Returns the child entries of the given category
-     * 
-     * @param category The category to search
-     * 
-     * @return the children of the given category (element type
-     *         <code>IPropertySheetEntry</code>)
-     */
-    private List getChildren(PropertySheetCategory category) {
-        return getSortedEntries(getFilteredEntries(category.getChildEntries()));
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Viewer.
-     */
-    public Control getControl() {
-        return tree;
-    }
-
-    /**
-     * Returns the entries which match the current filter.
-     *
-     * @param entries the entries to filter
-     * @return the entries which match the current filter
-     *  (element type <code>IPropertySheetEntry</code>)
-     */
-    private List getFilteredEntries(IPropertySheetEntry[] entries) {
-        // if no filter just return all entries
-        if (isShowingExpertProperties) {
-			return Arrays.asList(entries);
-		}
-
-        // check each entry for the filter
-        List filteredEntries = new ArrayList(entries.length);
-        for (int i = 0; i < entries.length; i++) {
-            IPropertySheetEntry entry = entries[i];
-            if (entry != null) {
-                String[] filters = entry.getFilters();
-                boolean expert = false;
-                if (filters != null) {
-                    for (int j = 0; j < filters.length; j++) {
-                        if (filters[j].equals(IPropertySheetEntry.FILTER_ID_EXPERT)) {
-                            expert = true;
-                            break;
-                        }
-                    }
-                }
-                if (!expert) {
-					filteredEntries.add(entry);
-				}
-            }
-        }
-        return filteredEntries;
-    }
-    
-    /**
-	 * Returns a sorted list of <code>IPropertySheetEntry</code> entries.
-	 * 
-	 * @param unsortedEntries
-	 *            unsorted list of <code>IPropertySheetEntry</code>
-	 * @return a sorted list of the specified entries
-	 */
-	private List getSortedEntries(List unsortedEntries) {
-		IPropertySheetEntry[] propertySheetEntries = (IPropertySheetEntry[]) unsortedEntries
-				.toArray(new IPropertySheetEntry[unsortedEntries.size()]);
-		sorter.sort(propertySheetEntries);
-		return Arrays.asList(propertySheetEntries);
-	}
-    
-
-    /**
-	 * The <code>PropertySheetViewer</code> implementation of this method
-	 * declared on <code>IInputProvider</code> returns the objects for which
-	 * the viewer is currently showing properties. It returns an
-	 * <code>Object[]</code> or <code>null</code>.
-	 */
-    public Object getInput() {
-        return input;
-    }
-
-    /**
-     * Returns the root entry for this property sheet viewer. The root entry is
-     * not visible in the viewer.
-     * 
-     * @return the root entry or <code>null</code>.
-     */
-    public IPropertySheetEntry getRootEntry() {
-        return rootEntry;
-    }
-
-    /**
-     * The <code>PropertySheetViewer</code> implementation of this
-     * <code>ISelectionProvider</code> method returns the result as a
-     * <code>StructuredSelection</code>.
-     * <p>
-     * Note that this method only includes <code>IPropertySheetEntry</code> in
-     * the selection (no categories).
-     * </p>
-     */
-    public ISelection getSelection() {
-        if (tree.getSelectionCount() == 0) {
-			return StructuredSelection.EMPTY;
-		}
-        TreeItem[] sel = tree.getSelection();
-        List entries = new ArrayList(sel.length);
-        for (int i = 0; i < sel.length; i++) {
-            TreeItem ti = sel[i];
-            Object data = ti.getData();
-            if (data instanceof IPropertySheetEntry) {
-				entries.add(data);
-			}
-        }
-        return new StructuredSelection(entries);
-    }
-
-    /**
-     * Selection in the viewer occurred. Check if there is an active cell
-     * editor. If yes, deactivate it and check if a new cell editor must be
-     * activated.
-     * 
-     * @param selection
-     *            the TreeItem that is selected
-     */
-    private void handleSelect(TreeItem selection) {
-        // deactivate the current cell editor
-        if (cellEditor != null) {
-            applyEditorValue();
-            deactivateCellEditor();
-        }
-
-        // get the new selection
-        TreeItem[] sel = new TreeItem[] { selection };
-        if (sel.length == 0) {
-            setMessage(null);
-            setErrorMessage(null);
-        } else {
-            Object object = sel[0].getData(); // assume single selection
-            if (object instanceof IPropertySheetEntry) {
-                // get the entry for this item
-                IPropertySheetEntry activeEntry = (IPropertySheetEntry) object;
-
-                // display the description for the item
-                setMessage(activeEntry.getDescription());
-
-                // activate a cell editor on the selection
-                activateCellEditor(sel[0]);
-            }
-        }
-        entrySelectionChanged();
-    }
-
-    /**
-     * The expand icon for a node in this viewer has been selected to collapse a
-     * subtree. Deactivate the cell editor
-     * 
-     * @param event
-     *            the SWT tree event
-     */
-    private void handleTreeCollapse(TreeEvent event) {
-        if (cellEditor != null) {
-            applyEditorValue();
-            deactivateCellEditor();
-        }
-    }
-
-    /**
-     * The expand icon for a node in this viewer has been selected to expand the
-     * subtree. Create the children 1 level deep.
-     * <p>
-     * Note that we use a "dummy" item (no user data) to show a "+" icon beside
-     * an item which has children before the item is expanded now that it is
-     * being expanded we have to create the real child items
-     * </p>
-     * 
-     * @param event
-     *            the SWT tree event
-     */
-    private void handleTreeExpand(TreeEvent event) {
-        createChildren(event.item);
-    }
-
-    /**
-     * Hides the categories.
-     */
-    /* package */
-    void hideCategories() {
-        isShowingCategories = false;
-        categories = null;
-        refresh();
-    }
-
-    /**
-     * Hides the expert properties.
-     */
-    /* package */
-    void hideExpert() {
-        isShowingExpertProperties = false;
-        refresh();
-    }
-
-    /**
-     * Establish this viewer as a listener on the control
-     */
-    private void hookControl() {
-        // Handle selections in the Tree
-        // Part1: Double click only (allow traversal via keyboard without
-        // activation
-        tree.addSelectionListener(new SelectionAdapter() {
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-            	// The viewer only owns the status line when there is
-            	// no 'active' cell editor
-            	if (cellEditor == null || !cellEditor.isActivated()) {
-					updateStatusLine(e.item);
-				}
-			}
-
-			/* (non-Javadoc)
-			 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetDefaultSelected(SelectionEvent e) {
-                handleSelect((TreeItem) e.item);
-            }
-        });
-        // Part2: handle single click activation of cell editor
-        tree.addMouseListener(new MouseAdapter() {
-            public void mouseDown(MouseEvent event) {
-                // only activate if there is a cell editor
-                Point pt = new Point(event.x, event.y);
-                TreeItem item = tree.getItem(pt);
-                if (item != null) {
-                    handleSelect(item);
-                }
-            }
-        });
-
-        // Add a tree listener to expand and collapse which
-        // allows for lazy creation of children
-        tree.addTreeListener(new TreeListener() {
-            public void treeExpanded(final TreeEvent event) {
-                handleTreeExpand(event);
-            }
-
-            public void treeCollapsed(final TreeEvent event) {
-                handleTreeCollapse(event);
-            }
-        });
-
-        // Refresh the tree when F5 pressed
-        tree.addKeyListener(new KeyAdapter() {
-            public void keyReleased(KeyEvent e) {
-                if (e.character == SWT.ESC) {
-					deactivateCellEditor();
-				} else if (e.keyCode == SWT.F5) {
-					// The following will simulate a reselect
-                    setInput(getInput());
-				}
-            }
-        });
-    }
-
-    /**
-     * Update the status line based on the data of item.
-     * @param item
-     */
-    protected void updateStatusLine(Widget item) {
-    	setMessage(null);
-    	setErrorMessage(null);
-    	
-    	// Update the status line
-    	if (item != null) {
-    		if (item.getData() instanceof PropertySheetEntry) {
-    			PropertySheetEntry psEntry = (PropertySheetEntry) item.getData();
-    			
-    			// For entries, show the description if any, else show the label
-    			String desc = psEntry.getDescription();
-    			if (desc != null && desc.length() > 0) {
-					setMessage(psEntry.getDescription());
-				} else {
-					setMessage(psEntry.getDisplayName());
-				}
-    		}
-    			
-    		else if (item.getData() instanceof PropertySheetCategory) {
-    			PropertySheetCategory psCat = (PropertySheetCategory) item.getData();
-    			setMessage(psCat.getCategoryName());
-    		}
-    	}
-	}
-
-    /**
-     * Updates all of the items in the tree.
-     * <p>
-     * Note that this means ensuring that the tree items reflect the state of
-     * the model (entry tree) it does not mean telling the model to update
-     * itself.
-     * </p>
-     */
-    public void refresh() {
-        if (rootEntry != null) {
-            updateChildrenOf(rootEntry, tree);
-        }
-    }
-
-    /**
-     * Removes the given cell editor activation listener from this viewer. Has
-     * no effect if an identical activation listener is not registered.
-     * 
-     * @param listener
-     *            a cell editor activation listener
-     */
-    /* package */
-    void removeActivationListener(ICellEditorActivationListener listener) {
-        activationListeners.remove(listener);
-    }
-
-    /**
-     * Remove the given item from the tree. Remove our listener if the
-     * item's user data is a an entry then set the user data to null
-     * 
-     * @param item
-     *            the item to remove
-     */
-    private void removeItem(TreeItem item) {
-        Object data = item.getData();
-        if (data instanceof IPropertySheetEntry) {
-			((IPropertySheetEntry) data)
-                    .removePropertySheetEntryListener(entryListener);
-		}
-        item.setData(null);
-        
-        // We explicitly remove the entry from the map since it's data has been null'd
-        entryToItemMap.remove(data);
-
-        item.dispose();
-    }
-
-    /**
-     * Reset the selected properties to their default values.
-     */
-    public void resetProperties() {
-        // Determine the selection
-        IStructuredSelection selection = (IStructuredSelection) getSelection();
-
-        // Iterate over entries and reset them
-        Iterator itr = selection.iterator();
-        while (itr.hasNext()) {
-			((IPropertySheetEntry) itr.next()).resetPropertyValue();
-		}
-    }
-
-    /**
-     * Sets the error message to be displayed in the status line.
-     * 
-     * @param errorMessage
-     *            the message to be displayed, or <code>null</code>
-     */
-    private void setErrorMessage(String errorMessage) {
-        // show the error message
-        if (statusLineManager != null) {
-			statusLineManager.setErrorMessage(errorMessage);
-		}
-    }
-
-    /**
-     * The <code>PropertySheetViewer</code> implementation of this method
-     * declared on <code>Viewer</code> method sets the objects for which the
-     * viewer is currently showing properties.
-     * <p>
-     * The input must be an <code>Object[]</code> or <code>null</code>.
-     * </p>
-     * 
-     * @param newInput
-     *            the input of this viewer, or <code>null</code> if none
-     */
-    public void setInput(Object newInput) {
-        // need to save any changed value when user clicks elsewhere
-        applyEditorValue();
-        // deactivate our cell editor
-        deactivateCellEditor();
-
-        // set the new input to the root entry
-        input = (Object[]) newInput;
-        if (input == null) {
-			input = new Object[0];
-		}
-
-        if (rootEntry != null) {
-            rootEntry.setValues(input);
-            // ensure first level children are visible
-            updateChildrenOf(rootEntry, tree);
-        }
-        
-        // Clear any previous StatusLine messages
-    	updateStatusLine(null);
-    }
-
-    /**
-     * Sets the message to be displayed in the status line. This message is
-     * displayed when there is no error message.
-     * 
-     * @param message
-     *            the message to be displayed, or <code>null</code>
-     */
-    private void setMessage(String message) {
-        // show the message
-        if (statusLineManager != null) {
-			statusLineManager.setMessage(message);
-		}
-    }
-
-    /**
-     * Sets the root entry for this property sheet viewer. The root entry is not
-     * visible in the viewer.
-     * 
-     * @param root
-     *            the root entry
-     */
-    public void setRootEntry(IPropertySheetEntry root) {
-        // If we have a root entry, remove our entry listener
-        if (rootEntry != null) {
-			rootEntry.removePropertySheetEntryListener(entryListener);
-		}
-
-        rootEntry = root;
-
-        // Set the root as user data on the tree
-        tree.setData(rootEntry);
-
-        // Add an IPropertySheetEntryListener to listen for entry change
-        // notifications
-        rootEntry.addPropertySheetEntryListener(entryListener);
-
-        // Pass our input to the root, this will trigger entry change
-        // callbacks to update this viewer
-        setInput(input);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.viewers.Viewer#setSelection(org.eclipse.jface.viewers.ISelection, boolean)
-     */
-    public void setSelection(ISelection selection, boolean reveal) {
-        //Do nothing by default
-    }
-
-    /**
-	 * Sets the sorter for this viewer.
-	 * <p>
-	 * The default sorter sorts categories and entries alphabetically. 
-	 * A viewer update needs to be triggered after the sorter has changed.
-	 * </p>
-	 * @param sorter the sorter to set (<code>null</code> will reset to the
-	 * default sorter)
-     * @since 3.1
-	 */
-	public void setSorter(PropertySheetSorter sorter) {
-		if (null == sorter) {
-			sorter = new PropertySheetSorter();
-		}
-		this.sorter = sorter;
-	}
-
-    /**
-     * Sets the status line manager this view will use to show messages.
-     * 
-     * @param manager
-     *            the status line manager
-     */
-    public void setStatusLineManager(IStatusLineManager manager) {
-        statusLineManager = manager;
-    }
-
-    /**
-     * Shows the categories.
-     */
-    /* package */
-    void showCategories() {
-        isShowingCategories = true;
-        refresh();
-    }
-
-    /**
-     * Shows the expert properties.
-     */
-    /* package */
-    void showExpert() {
-        isShowingExpertProperties = true;
-        refresh();
-    }
-
-    /**
-     * Updates the categories. Reuses old categories if possible.
-     */
-    private void updateCategories() {
-        // lazy initialize
-        if (categories == null) {
-			categories = new PropertySheetCategory[0];
-		}
-
-        // get all the filtered child entries of the root
-        List childEntries = getFilteredEntries(rootEntry.getChildEntries());
-
-        // if the list is empty, just set an empty categories array
-        if (childEntries.size() == 0) {
-            categories = new PropertySheetCategory[0];
-            return;
-        }
-
-        // cache old categories by their descriptor name
-        Map categoryCache = new HashMap(categories.length * 2 + 1);
-        for (int i = 0; i < categories.length; i++) {
-            categories[i].removeAllEntries();
-            categoryCache.put(categories[i].getCategoryName(), categories[i]);
-        }
-
-        // create a list of categories to get rid of
-        List categoriesToRemove = new ArrayList(Arrays.asList(categories));
-
-        // Determine the categories
-        PropertySheetCategory misc = (PropertySheetCategory) categoryCache
-                .get(MISCELLANEOUS_CATEGORY_NAME);
-        if (misc == null) {
-			misc = new PropertySheetCategory(MISCELLANEOUS_CATEGORY_NAME);
-		}
-        boolean addMisc = false;
-
-        for (int i = 0; i < childEntries.size(); i++) {
-            IPropertySheetEntry childEntry = (IPropertySheetEntry) childEntries
-                    .get(i);
-            String categoryName = childEntry.getCategory();
-            if (categoryName == null) {
-                misc.addEntry(childEntry);
-                addMisc = true;
-                categoriesToRemove.remove(misc);
-            } else {
-                PropertySheetCategory category = (PropertySheetCategory) categoryCache
-                        .get(categoryName);
-                if (category == null) {
-                    category = new PropertySheetCategory(categoryName);
-                    categoryCache.put(categoryName, category);
-                } else {
-                    categoriesToRemove.remove(category);
-                }
-                category.addEntry(childEntry);
-            }
-        }
-
-        // Add the PSE_MISC category if it has entries
-        if (addMisc) {
-			categoryCache.put(MISCELLANEOUS_CATEGORY_NAME, misc);
-		}
-        
-        // Sort the categories.
-        // Rather than just sorting categoryCache.values(), we'd like the original order to be preserved
-        // (with misc added at the end, if needed) before passing to the sorter.
-        ArrayList categoryList = new ArrayList();
-        Set seen = new HashSet(childEntries.size());
-        for (int i = 0; i < childEntries.size(); i++) {
-            IPropertySheetEntry childEntry = (IPropertySheetEntry) childEntries
-                    .get(i);
-            String categoryName = childEntry.getCategory();
-            if (categoryName != null && !seen.contains(categoryName)) {
-                seen.add(categoryName);
-                PropertySheetCategory category = (PropertySheetCategory) categoryCache
-                        .get(categoryName);
-                if (category != null) { 
-                    categoryList.add(category);
-                }
-            }
-        }
-        if (addMisc && !seen.contains(MISCELLANEOUS_CATEGORY_NAME)) {
-            categoryList.add(misc);
-        }
-        
-        PropertySheetCategory[] categoryArray = (PropertySheetCategory[]) categoryList
-        	.toArray(new PropertySheetCategory[categoryList.size()]);
-        sorter.sort(categoryArray);
-        categories = categoryArray;
-    }
-
-    /**
-     * Update the category (but not its parent or children).
-     * 
-     * @param category
-     *            the category to update
-     * @param item
-     *            the tree item for the given entry
-     */
-    private void updateCategory(PropertySheetCategory category,
-            TreeItem item) {
-        // ensure that backpointer is correct
-        item.setData(category);
-        
-        // Update the map accordingly
-        entryToItemMap.put(category, item);
-
-        // Update the name and value columns
-        item.setText(0, category.getCategoryName());
-        item.setText(1, ""); //$NON-NLS-1$
-
-        // update the "+" icon
-        if (category.getAutoExpand()) {
-            // we auto expand categories when they first appear
-            createChildren(item);
-            item.setExpanded(true);
-            category.setAutoExpand(false);
-        } else {
-            // we do not want to auto expand categories if the user has
-            // collpased them
-            updatePlus(category, item);
-        }
-    }
-
-    /**
-     * Update the child entries or categories of the given entry or category. If
-     * the given node is the root entry and we are showing categories then the
-     * child entries are categories, otherwise they are entries.
-     * 
-     * @param node
-     *            the entry or category whose children we will update
-     * @param widget
-     *            the widget for the given entry, either a
-     *            <code>TableTree</code> if the node is the root node or a
-     *            <code>TreeItem</code> otherwise.
-     */
-    private void updateChildrenOf(Object node, Widget widget) {
-        // cast the entry or category
-        IPropertySheetEntry entry = null;
-        PropertySheetCategory category = null;
-        if (node instanceof IPropertySheetEntry) {
-			entry = (IPropertySheetEntry) node;
-		} else {
-			category = (PropertySheetCategory) node;
-		}
-
-        // get the current child tree items
-        TreeItem[] childItems = getChildItems(widget);
-
-        // optimization! prune collapsed subtrees
-        TreeItem item = null;
-        if (widget instanceof TreeItem) {
-            item = (TreeItem) widget;
-        }
-        if (item != null && !item.getExpanded()) {
-            // remove all children
-            for (int i = 0; i < childItems.length; i++) {
-                if (childItems[i].getData() != null) {
-                    removeItem(childItems[i]);
-                }
-            }
-
-            // append a dummy if necessary
-            if (category != null || entry.hasChildEntries()) {
-                // may already have a dummy
-                // It is either a category (which always has at least one child)
-                // or an entry with chidren.
-                // Note that this test is not perfect, if we have filtering on
-                // then there in fact may be no entires to show when the user
-                // presses the "+" expand icon. But this is an acceptable
-                // compromise.
-                childItems = getChildItems(widget);
-                if (childItems.length == 0) {
-                    new TreeItem(item, SWT.NULL);
-                }
-            }
-            return;
-        }
-
-        // get the child entries or categories
-        if (node == rootEntry && isShowingCategories) {
-			// update the categories
-            updateCategories();
-		}
-        List children = getChildren(node);
-
-        // remove items
-        Set set = new HashSet(childItems.length * 2 + 1);
-
-        for (int i = 0; i < childItems.length; i++) {
-            Object data = childItems[i].getData();
-            if (data != null) {
-                Object e = data;
-                int ix = children.indexOf(e);
-                if (ix < 0) { // not found
-                    removeItem(childItems[i]);
-                } else { // found
-                    set.add(e);
-                }
-            } else if (data == null) { // the dummy
-                childItems[i].dispose();
-            }
-        }
-
-        // WORKAROUND
-        int oldCnt = -1;
-        if (widget == tree) {
-			oldCnt = tree.getItemCount();
-		}
-
-        // add new items
-        int newSize = children.size();
-        for (int i = 0; i < newSize; i++) {
-            Object el = children.get(i);
-            if (!set.contains(el)) {
-				createItem(el, widget, i);
-			}
-        }
-
-        // WORKAROUND
-        if (widget == tree && oldCnt == 0 && tree.getItemCount() == 1) {
-            tree.setRedraw(false);
-            tree.setRedraw(true);
-        }
-
-        // get the child tree items after our changes
-        childItems = getChildItems(widget);
-
-        // update the child items
-        // This ensures that the children are in the correct order
-        // are showing the correct values.
-        for (int i = 0; i < newSize; i++) {
-            Object el = children.get(i);
-            if (el instanceof IPropertySheetEntry) {
-				updateEntry((IPropertySheetEntry) el, childItems[i]);
-			} else {
-                updateCategory((PropertySheetCategory) el, childItems[i]);
-                updateChildrenOf(el, childItems[i]);
-            }
-        }
-        // The tree's original selection may no longer apply after the update,
-        // so fire the selection changed event.
-        entrySelectionChanged();
-    }
-
-    /**
-     * Update the given entry (but not its children or parent)
-     * 
-     * @param entry
-     *            the entry we will update
-     * @param item
-     *            the tree item for the given entry
-     */
-    private void updateEntry(IPropertySheetEntry entry, TreeItem item) {
-        // ensure that backpointer is correct
-        item.setData(entry);
-        
-        // update the map accordingly
-        entryToItemMap.put(entry, item);
-
-        // update the name and value columns
-        item.setText(0, entry.getDisplayName());
-        item.setText(1, entry.getValueAsString());
-        Image image = entry.getImage();
-        if (item.getImage(1) != image) {
-			item.setImage(1, image);
-		}
-
-        // update the "+" icon
-        updatePlus(entry, item);
-    }
-
-    /**
-     * Updates the "+"/"-" icon of the tree item from the given entry
-     * or category.
-     *
-     * @param node the entry or category
-     * @param item the tree item being updated
-     */
-    private void updatePlus(Object node, TreeItem item) {
-        // cast the entry or category
-        IPropertySheetEntry entry = null;
-        PropertySheetCategory category = null;
-        if (node instanceof IPropertySheetEntry) {
-			entry = (IPropertySheetEntry) node;
-		} else {
-			category = (PropertySheetCategory) node;
-		}
-
-        boolean hasPlus = item.getItemCount() > 0;
-        boolean needsPlus = category != null || entry.hasChildEntries();
-        boolean removeAll = false;
-        boolean addDummy = false;
-
-        if (hasPlus != needsPlus) {
-            if (needsPlus) {
-                addDummy = true;
-            } else {
-                removeAll = true;
-            }
-        }
-        if (removeAll) {
-            // remove all children
-            TreeItem[] items = item.getItems();
-            for (int i = 0; i < items.length; i++) {
-                removeItem(items[i]);
-            }
-        }
-
-        if (addDummy) {
-            new TreeItem(item, SWT.NULL); // append a dummy to create the
-            // plus sign
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/TextPropertyDescriptor.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/TextPropertyDescriptor.java
deleted file mode 100644
index c9ff7c4..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/TextPropertyDescriptor.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Descriptor for a property that has a value which should be edited with a 
- * text cell editor.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Example:
- * <pre>
- * IPropertyDescriptor pd = new TextPropertyDescriptor("surname", "Last Name");
- * </pre>
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class TextPropertyDescriptor extends PropertyDescriptor {
-    /**
-     * Creates an property descriptor with the given id and display name.
-     * 
-     * @param id the id of the property
-     * @param displayName the name to display for the property
-     */
-    public TextPropertyDescriptor(Object id, String displayName) {
-        super(id, displayName);
-    }
-
-    /**
-     * The <code>TextPropertyDescriptor</code> implementation of this 
-     * <code>IPropertyDescriptor</code> method creates and returns a new
-     * <code>TextCellEditor</code>.
-     * <p>
-     * The editor is configured with the current validator if there is one.
-     * </p>
-     */
-    public CellEditor createPropertyEditor(Composite parent) {
-        CellEditor editor = new TextCellEditor(parent);
-        if (getValidator() != null) {
-			editor.setValidator(getValidator());
-		}
-        return editor;
-    }
-}
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/package.html b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/package.html
deleted file mode 100644
index 1a6a1b5..0000000
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/package.html
+++ /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="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides the standard Property Sheet view which displays
-custom properties of the active workbench part's current selection.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/.classpath b/bundles/org.eclipse.ui.workbench/.classpath
deleted file mode 100644
index 67b583f..0000000
--- a/bundles/org.eclipse.ui.workbench/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="Eclipse UI"/>
-	<classpathentry kind="src" path="Eclipse UI Editor Support"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.ui.workbench/.cvsignore b/bundles/org.eclipse.ui.workbench/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/bundles/org.eclipse.ui.workbench/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/.options b/bundles/org.eclipse.ui.workbench/.options
deleted file mode 100644
index 472d6d7..0000000
--- a/bundles/org.eclipse.ui.workbench/.options
+++ /dev/null
@@ -1,4 +0,0 @@
-# Debugging options for the org.eclipse.ui.workbench plugin.
-
-# Turn on debugging for the org.eclipse.ui.workbench plugin.
-org.eclipse.ui.workbench/debug=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/.project b/bundles/org.eclipse.ui.workbench/.project
deleted file mode 100644
index 996239d..0000000
--- a/bundles/org.eclipse.ui.workbench/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ui.workbench</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index a1e32c4..0000000
--- a/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,79 +0,0 @@
-#Tue Sep 11 09:39:00 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=error
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index d9761de..0000000
--- a/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Tue Jul 17 14:50:20 EDT 2007
-eclipse.preferences.version=1
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.javadoc=true
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return Returns the ${bare_field_name}.\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} The ${bare_field_name} to set.\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} IBM Corporation and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *     IBM Corporation - initial API and implementation\n ******************************************************************************/\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @since 3.4\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template></templates>
diff --git a/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index d8e8469..0000000
--- a/bundles/org.eclipse.ui.workbench/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-#Tue Nov 16 14:12:29 EST 2004
-compilers.p.unused-element-or-attribute=1
-compilers.p.unresolved-ex-points=0
-compilers.p.deprecated=0
-compilers.p.unknown-element=1
-compilers.p.unknown-resource=1
-compilers.p.unknown-class=1
-compilers.p.unknown-attribute=0
-compilers.p.no-required-att=0
-eclipse.preferences.version=1
-compilers.p.unresolved-import=0
-compilers.p.not-externalized-att=0
-compilers.p.illegal-att-value=0
-compilers.use-project=true
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI Editor Support/org/eclipse/ui/internal/editorsupport/ComponentSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI Editor Support/org/eclipse/ui/internal/editorsupport/ComponentSupport.java
deleted file mode 100644
index d93108b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI Editor Support/org/eclipse/ui/internal/editorsupport/ComponentSupport.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.editorsupport;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.osgi.framework.Bundle;
-
-/**
- * This class provides an OS independent interface to the
- * components available on the platform
- */
-public final class ComponentSupport {
-
-    /**
-     * Returns whether the current platform has support
-     * for system in-place editor.
-     */
-    public static boolean inPlaceEditorSupported() {
-    	// check preference
-    	if (PrefUtil.getAPIPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE)) {
-    		return false;
-    	}
-        // only Win32 is supported
-        return SWT.getPlatform().equals("win32"); //$NON-NLS-1$
-    }
-
-    /**
-     * Return the default system in-place editor part
-     * or <code>null</code> if not support by platform.
-     */
-    public static IEditorPart getSystemInPlaceEditor() {
-        if (inPlaceEditorSupported()) {
-            return getOleEditor();
-        }
-        return null;
-    }
-
-    /**
-     * Returns whether an in-place editor is available to
-     * edit the file.
-     * 
-     * @param filename the file name in the system
-     */
-    public static boolean inPlaceEditorAvailable(String filename) {
-        if (inPlaceEditorSupported()) {
-            return testForOleEditor(filename);
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Get a new OLEEditor
-     * @return IEditorPart
-     */
-    private static IEditorPart getOleEditor() {
-        // @issue currently assumes OLE editor is provided by IDE plug-in
-        // IDE plug-in is not on prereq chain of generic wb plug-in
-        // hence: IContributorResourceAdapter.class won't compile
-        // and Class.forName("org.eclipse.ui.internal.editorsupport.win32.OleEditor") won't find it
-        // need to be trickier...
-        Bundle bundle = Platform.getBundle("org.eclipse.ui.ide"); //$NON-NLS-1$
-
-        // it's not our job to activate the plug-in
-        if (!BundleUtility.isActivated(bundle)) {
-			return null;
-		}
-
-        try {
-            Class c = bundle
-                    .loadClass("org.eclipse.ui.internal.editorsupport.win32.OleEditor"); //$NON-NLS-1$
-            return (IEditorPart) c.newInstance();
-        } catch (ClassNotFoundException exception) {
-            return null;
-        } catch (IllegalAccessException exception) {
-            return null;
-        } catch (InstantiationException exception) {
-            return null;
-        }
-    }
-
-    public static boolean testForOleEditor(String filename) {
-        int nDot = filename.lastIndexOf('.');
-        if (nDot >= 0) {
-            try {
-                String strName = filename.substring(nDot);
-                Class oleClass = Class.forName("org.eclipse.swt.ole.win32.OLE"); //$NON-NLS-1$
-                Method findMethod = oleClass.getDeclaredMethod(
-                        "findProgramID", new Class[] { String.class }); //$NON-NLS-1$
-                strName = (String) findMethod.invoke(null,
-                        new Object[] { strName });
-                if (strName.length() > 0) {
-					return true;
-				}
-            } catch (ClassNotFoundException exception) {
-                //Couldn't ask so return false
-                return false;
-            } catch (NoSuchMethodException exception) {
-                //Couldn't find the method so return false
-                return false;
-            } catch (IllegalAccessException exception) {
-                return false;
-            } catch (InvocationTargetException exception) {
-                return false;
-            }
-
-        }
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/AbstractSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/AbstractSourceProvider.java
deleted file mode 100644
index 89282e4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/AbstractSourceProvider.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * An implementation of <code>ISourceProvider</code> that provides listener
- * support. Subclasses need only call <code>fireSourceChanged</code> whenever
- * appropriate.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class AbstractSourceProvider implements ISourceProvider {
-
-	/**
-	 * Whether source providers should print out debugging information to the
-	 * console when events arrive.
-	 * 
-	 * @since 3.2
-	 */
-	protected static boolean DEBUG = Policy.DEBUG_SOURCES;
-
-	/**
-	 * The listeners to this source provider. This value is never
-	 * <code>null</code>. {@link #listenerCount} should be consulted to get
-	 * the real length.
-	 */
-	private ISourceProviderListener[] listeners = new ISourceProviderListener[7];
-
-	/**
-	 * The number of listeners in the array.
-	 */
-	private int listenerCount = 0;
-
-	public final void addSourceProviderListener(
-			final ISourceProviderListener listener) {
-		if (listener == null) {
-			throw new NullPointerException("The listener cannot be null"); //$NON-NLS-1$
-		}
-
-		if (listenerCount == listeners.length) {
-			final ISourceProviderListener[] growArray = new ISourceProviderListener[listeners.length + 4];
-			System.arraycopy(listeners, 0, growArray, 0, listeners.length);
-			listeners = growArray;
-		}
-		listeners[listenerCount++] = listener;
-	}
-
-	/**
-	 * Notifies all listeners that a single source has changed.
-	 * 
-	 * @param sourcePriority
-	 *            The source priority that has changed.
-	 * @param sourceName
-	 *            The name of the source that has changed; must not be
-	 *            <code>null</code>.
-	 * @param sourceValue
-	 *            The new value for the source; may be <code>null</code>.
-	 */
-	protected final void fireSourceChanged(final int sourcePriority,
-			final String sourceName, final Object sourceValue) {
-		for (int i = 0; i < listenerCount; i++) {
-			final ISourceProviderListener listener = listeners[i];
-			listener.sourceChanged(sourcePriority, sourceName, sourceValue);
-		}
-	}
-
-	/**
-	 * Notifies all listeners that multiple sources have changed.
-	 * 
-	 * @param sourcePriority
-	 *            The source priority that has changed.
-	 * @param sourceValuesByName
-	 *            The map of source names (<code>String</code>) to source
-	 *            values (<code>Object</code>) that have changed; must not
-	 *            be <code>null</code>. The names must not be
-	 *            <code>null</code>, but the values may be <code>null</code>.
-	 */
-	protected final void fireSourceChanged(final int sourcePriority,
-			final Map sourceValuesByName) {
-		for (int i = 0; i < listenerCount; i++) {
-			final ISourceProviderListener listener = listeners[i];
-			listener.sourceChanged(sourcePriority, sourceValuesByName);
-		}
-	}
-
-	/**
-	 * Logs a debugging message in an appropriate manner. If the message is
-	 * <code>null</code> or the <code>DEBUG</code> is <code>false</code>,
-	 * then this method does nothing.
-	 * 
-	 * @param message
-	 *            The debugging message to log; if <code>null</code>, then
-	 *            nothing is logged.
-	 * @since 3.2
-	 */
-	protected final void logDebuggingInfo(final String message) {
-		if (DEBUG && (message != null)) {
-			Tracing.printTrace("SOURCES", message); //$NON-NLS-1$
-		}
-	}
-
-	public final void removeSourceProviderListener(
-			final ISourceProviderListener listener) {
-		if (listener == null) {
-			throw new NullPointerException("The listener cannot be null"); //$NON-NLS-1$
-		}
-
-		int emptyIndex = -1;
-		for (int i = 0; i < listenerCount; i++) {
-			if (listeners[i] == listener) {
-				listeners[i] = null;
-				emptyIndex = i;
-			}
-		}
-
-		if (emptyIndex != -1) {
-			// Compact the array.
-			for (int i = emptyIndex + 1; i < listenerCount; i++) {
-				listeners[i - 1] = listeners[i];
-			}
-			listenerCount--;
-		}
-	}
-
-	/**
-	 * This method is called when the source provider is instantiated by
-	 * <code>org.eclipse.ui.services</code>. Clients may override this method
-	 * to perform initialization.
-	 * 
-	 * @param locator
-	 *            The global service locator. It can be used to retrieve
-	 *            services like the IContextService
-	 * @since 3.4
-	 */
-	public void initialize(final IServiceLocator locator) {
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ActiveShellExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ActiveShellExpression.java
deleted file mode 100644
index 4459e35..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ActiveShellExpression.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * <p>
- * An expression that checks the active shell variable. The variable name is
- * <code>ISources.ACTIVE_SHELL_NAME</code> and falls back to
- * <code>ISources.ACTIVE_WORKBENCH_WINDOW</code>. That is, if the active
- * shell doesn't match, then it will be allowed to match the active workbench
- * window.
- * </p>
- * 
- * @since 3.1
- */
-public final class ActiveShellExpression extends Expression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = ActiveShellExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The sources value to use with this expression.
-	 */
-	public static final int SOURCES = ISources.ACTIVE_SHELL
-			| ISources.ACTIVE_WORKBENCH_WINDOW;
-
-	/**
-	 * The shell that must be active for this expression to evaluate to
-	 * <code>true</code>. If this value is <code>null</code>, then any
-	 * shell may be active.
-	 */
-	private final Shell activeShell;
-
-	/**
-	 * Constructs a new instance of <code>ActiveShellExpression</code>
-	 * 
-	 * @param activeShell
-	 *            The shell to match with the active shell; <code>null</code>
-	 *            if it will match any active shell.
-	 */
-	public ActiveShellExpression(final Shell activeShell) {
-		this.activeShell = activeShell;
-	}
-
-	/**
-	 * Expression information for this expression.  Namely active shell and 
-	 * active workbench window name.
-	 * 
-	 * @since 3.2
-	 */
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		info.addVariableNameAccess(ISources.ACTIVE_SHELL_NAME);
-		info.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-	}
-
-	protected final int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(activeShell);
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof ActiveShellExpression) {
-			final ActiveShellExpression that = (ActiveShellExpression) object;
-			return equals(this.activeShell, that.activeShell);
-		}
-
-		return false;
-	}
-
-	/**
-	 * Evaluates this expression. If the active shell defined by the context
-	 * matches the shell from this expression, then this evaluates to
-	 * <code>EvaluationResult.TRUE</code>. Similarly, if the active workbench
-	 * window shell defined by the context matches the shell from this
-	 * expression, then this evaluates to <code>EvaluationResult.TRUE</code>.
-	 * 
-	 * @param context
-	 *            The context from which the current state is determined; must
-	 *            not be <code>null</code>.
-	 * @return <code>EvaluationResult.TRUE</code> if the shell is active;
-	 *         <code>EvaluationResult.FALSE</code> otherwise.
-	 */
-	public final EvaluationResult evaluate(final IEvaluationContext context) {
-		if (activeShell != null) {
-			Object value = context.getVariable(ISources.ACTIVE_SHELL_NAME);
-			if (!activeShell.equals(value)) {
-				value = context
-						.getVariable(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME);
-				if (!activeShell.equals(value)) {
-					return EvaluationResult.FALSE;
-				}
-			}
-		}
-
-		return EvaluationResult.TRUE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("ActiveShellExpression("); //$NON-NLS-1$
-		buffer.append(activeShell);
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/BasicWorkingSetElementAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/BasicWorkingSetElementAdapter.java
deleted file mode 100644
index 9cbdf64..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/BasicWorkingSetElementAdapter.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Basic IWorkingSetElementAdapter implementation that allows plugins to decribe
- * simple declarative element adapters.
- * <p>
- * The executable extension format for this class is as follows:<br/>
- * <code>&lt;workingSet
- * elementAdapterClass="org.eclipse.ui.BasicWorkingSetElementAdapter:class1.to.adapt.to[;option1=value1][;option2=value2],class2.to.adapt.to[;option1=value1][;option2=value2],..."&gt;
- * ... &lt;/workingSet&gt;</code>
- * </p>
- * <p>
- * The valid options are:<br/>
- * <dl>
- * <dt>adapt</dt>
- * <dd>Values: <code>true</code> or <code>true</code>. Specifies whether
- * or not the platform {@link org.eclipse.core.runtime.IAdapterManager} and the
- * {@link org.eclipse.core.runtime.IAdaptable} interface should be consulted.</dd>
- * </dl>
- * </p>
- * 
- * Please see the {@link #adaptElements(IWorkingSet, IAdaptable[])} method for
- * details on behavior of this implementation.
- * 
- * @since 3.3
- */
-public final class BasicWorkingSetElementAdapter implements
-		IWorkingSetElementAdapter, IExecutableExtension {
-
-	private class Type {
-		private static final int NONE = 0;
-		private static final int ADAPT = 1;
-		String className;
-		int flags;
-	}
-
-	private Type[] preferredTypes = new Type[0];
-
-	private ServiceTracker packageTracker;
-
-	/**
-	 * When invoked this method will iterate over all classes specified as
-	 * IExecutableExtension arguements to this class in order and compare with
-	 * the elements. If the element is directly assignable to the provided class
-	 * then it is added to the result array as is. If the class has specified
-	 * "adapt=true" as an argument and there is an available adapter in the
-	 * platform IAdapterManager then it is returned. Finally, if "adapt=true"
-	 * and the class is already loaded (determined by inspecting exported
-	 * bundles via the platform PackageAdmin) a direct query for the adapter is
-	 * made on the object and if it is not <code>null</code> then it is
-	 * returned.
-	 * <p>
-	 * A consequence of the above is that it is possible for this method to
-	 * return differing results based on the state of bundles loaded within the
-	 * system.
-	 * </p>
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetElementAdapter#adaptElements(org.eclipse.ui.IWorkingSet,
-	 *      org.eclipse.core.runtime.IAdaptable[])
-	 * @see org.eclipse.core.runtime.IAdapterManager#getAdapter(Object, String)
-	 * @see org.osgi.service.packageadmin.PackageAdmin#getExportedPackage(String)
-	 */
-	public IAdaptable[] adaptElements(IWorkingSet ws, IAdaptable[] elements) {
-		List adaptedElements = new ArrayList();
-		for (int i = 0; i < elements.length; i++) {
-			IAdaptable adaptable = adapt(elements[i]);
-			if (adaptable != null)
-				adaptedElements.add(adaptable);
-		}
-
-		return (IAdaptable[]) adaptedElements
-				.toArray(new IAdaptable[adaptedElements.size()]);
-	}
-
-	/**
-	 * Adapt the given adaptable. Compares the given adaptable against the list
-	 * of desired types and returns the first type that generates a match.
-	 * 
-	 * @param adaptable
-	 *            the adaptable to adapt
-	 * @return the resultant adaptable. May be the same adaptable, a new
-	 *         adaptable, or <code>null</code>.
-	 */
-	private IAdaptable adapt(IAdaptable adaptable) {
-		for (int i = 0; i < preferredTypes.length; i++) {
-			IAdaptable adaptedAdaptable = adapt(preferredTypes[i], adaptable);
-			if (adaptedAdaptable != null)
-				return adaptedAdaptable;
-		}
-		return null;
-	}
-
-	/**
-	 * Adapt the given adaptable given the reference type.
-	 * 
-	 * @param type
-	 *            the reference type
-	 * @param adaptable
-	 *            the adaptable to adapt
-	 * @return the resultant adaptable. May be the same adaptable, a new
-	 *         adaptable, or <code>null</code>.
-	 */
-	private IAdaptable adapt(Type type, IAdaptable adaptable) {
-		IAdapterManager adapterManager = Platform.getAdapterManager();
-		Class[] directClasses = adapterManager.computeClassOrder(adaptable
-				.getClass());
-		for (int i = 0; i < directClasses.length; i++) {
-			Class clazz = directClasses[i];
-			if (clazz.getName().equals(type.className))
-				return adaptable;
-		}
-
-		if ((type.flags & Type.ADAPT) != 0) {
-			Object adapted = adapterManager.getAdapter(adaptable,
-					type.className);
-			if (adapted instanceof IAdaptable)
-				return (IAdaptable) adapted;
-
-			PackageAdmin admin = getPackageAdmin();
-			if (admin != null) {
-				int lastDot = type.className.lastIndexOf('.');
-				if (lastDot > 0) { // this lives in a package
-					String packageName = type.className.substring(0, lastDot);
-					ExportedPackage[] packages = admin
-							.getExportedPackages(packageName);
-					if (packages != null && packages.length == 1) {
-						// if there is exactly one exporter of this
-						// package
-						// we can go further
-						if (packages[0].getExportingBundle().getState() == Bundle.ACTIVE) {
-							try {
-								// if the bundle is loaded we can safely get the
-								// class object and check for an adapter on the
-								// object directly
-								adapted = adaptable.getAdapter(packages[0]
-										.getExportingBundle().loadClass(
-												type.className));
-								if (adapted instanceof IAdaptable)
-									return (IAdaptable) adapted;
-
-							} catch (ClassNotFoundException e) {
-								WorkbenchPlugin.log(e);
-							}
-						}
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetElementAdapter#dispose()
-	 */
-	public void dispose() {
-		if (packageTracker != null)
-			packageTracker.close();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) {
-
-		if (data instanceof String) {
-			List preferredTypes = new ArrayList(0);
-			for (StringTokenizer toker = new StringTokenizer((String) data, ","); toker.hasMoreTokens();) {//$NON-NLS-1$
-				String classNameAndOptions = toker.nextToken();
-				Type record = new Type();
-				parseOptions(classNameAndOptions, record);
-				preferredTypes.add(record);
-			}
-			this.preferredTypes = (Type[]) preferredTypes
-					.toArray(new Type[preferredTypes.size()]);
-		}
-	}
-
-	/**
-	 * Parse classname/option strings in the form:<br/>
-	 * <code>some.package.Class[:option1=value1][:option2=value2]...
-	 * 
-	 * @param classNameAndOptions the class name and possibly options to parse
-	 * @param record the record to fill
-	 */
-	private void parseOptions(String classNameAndOptions, Type record) {
-		for (StringTokenizer toker = new StringTokenizer(classNameAndOptions,
-				";"); toker.hasMoreTokens();) { //$NON-NLS-1$
-			String token = toker.nextToken();
-			if (record.className == null)
-				record.className = token;
-			else {
-				for (StringTokenizer pair = new StringTokenizer(token, "="); pair.hasMoreTokens();) {//$NON-NLS-1$
-					if (pair.countTokens() == 2) {
-						String param = pair.nextToken();
-						String value = pair.nextToken();
-						if ("adapt".equals(param)) { //$NON-NLS-1$
-							record.flags ^= "true".equals(value) ? Type.ADAPT : Type.NONE; //$NON-NLS-1$
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Prime the PackageAdmin service tracker and return the service (if
-	 * available).
-	 * 
-	 * @return the PackageAdmin service or null if it is not available
-	 */
-	private PackageAdmin getPackageAdmin() {
-		if (packageTracker == null) {
-			packageTracker = new ServiceTracker(WorkbenchPlugin.getDefault()
-					.getBundleContext(), PackageAdmin.class.getName(), null);
-			packageTracker.open();
-		}
-
-		return (PackageAdmin) packageTracker.getService();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ExtensionFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ExtensionFactory.java
deleted file mode 100644
index 0744e93..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ExtensionFactory.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.IExecutableExtensionFactory;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.internal.ShowInMenu;
-import org.eclipse.ui.internal.dialogs.ContentTypesPreferencePage;
-import org.eclipse.ui.internal.dialogs.DecoratorsPreferencePage;
-import org.eclipse.ui.internal.dialogs.EditorsPreferencePage;
-import org.eclipse.ui.internal.dialogs.FileEditorsPreferencePage;
-import org.eclipse.ui.internal.dialogs.PerspectivesPreferencePage;
-import org.eclipse.ui.internal.dialogs.ViewsPreferencePage;
-import org.eclipse.ui.internal.dialogs.WorkbenchPreferencePage;
-import org.eclipse.ui.internal.keys.KeysPreferencePage;
-import org.eclipse.ui.internal.keys.NewKeysPreferencePage;
-import org.eclipse.ui.internal.progress.ProgressView;
-import org.eclipse.ui.internal.themes.ColorsAndFontsPreferencePage;
-import org.eclipse.ui.internal.wizards.preferences.PreferencesExportWizard;
-import org.eclipse.ui.internal.wizards.preferences.PreferencesImportWizard;
-
-/**
- * Factory for the workbench's public extensions.
- * <p>
- * This allows the extensions to be made available for use by RCP applications
- * without exposing their concrete implementation classes.
- * </p>
- * 
- * @since 3.1
- */
-public class ExtensionFactory implements IExecutableExtensionFactory,
-		IExecutableExtension {
-
-	/**
-	 * Factory ID for the Appearance preference page.
-	 */
-	public static final String APPEARANCE_PREFERENCE_PAGE = "appearancePreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Colors and Fonts preference page.
-	 */
-	public static final String COLORS_AND_FONTS_PREFERENCE_PAGE = "colorsAndFontsPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Decorators preference page.
-	 */
-	public static final String DECORATORS_PREFERENCE_PAGE = "decoratorsPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Editors preference page.
-	 */
-	public static final String EDITORS_PREFERENCE_PAGE = "editorsPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the File Associations preference page.
-	 */
-	public static final String FILE_ASSOCIATIONS_PREFERENCE_PAGE = "fileAssociationsPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Keys preference page.
-	 */
-	public static final String KEYS_PREFERENCE_PAGE = "keysPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the new (and improved) keys preference page.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String NEW_KEYS_PREFERENCE_PAGE = "newKeysPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Perspectives preference page.
-	 */
-	public static final String PERSPECTIVES_PREFERENCE_PAGE = "perspectivesPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Preferences export wizard.
-	 */
-	public static final String PREFERENCES_EXPORT_WIZARD = "preferencesExportWizard"; // $//$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Preferences import wizard.
-	 */
-	public static final String PREFERENCES_IMPORT_WIZARD = "preferencesImportWizard"; // $//$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Progress view.
-	 */
-	public static final String PROGRESS_VIEW = "progressView"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the Workbench preference page.
-	 */
-	public static final String WORKBENCH_PREFERENCE_PAGE = "workbenchPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the ContentTypes preference page.
-	 */
-	public static final String CONTENT_TYPES_PREFERENCE_PAGE = "contentTypesPreferencePage"; //$NON-NLS-1$
-
-	/**
-	 * Factory ID for the show in contribution.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String SHOW_IN_CONTRIBUTION = "showInContribution"; //$NON-NLS-1$
-
-	private IConfigurationElement config;
-
-	private String id;
-
-	private String propertyName;
-
-	/**
-	 * Constructs a new workbench extension factory.
-	 */
-	public ExtensionFactory() {
-		// do nothing
-	}
-
-	private Object configure(Object obj) throws CoreException {
-		if (obj instanceof IExecutableExtension) {
-			((IExecutableExtension) obj).setInitializationData(config,
-					propertyName, null);
-		}
-		return obj;
-	}
-
-	/**
-	 * Creates the object referenced by the factory id obtained from the
-	 * extension data.
-	 */
-	public Object create() throws CoreException {
-		if (APPEARANCE_PREFERENCE_PAGE.equals(id)) {
-			return configure(new ViewsPreferencePage());
-		}
-		if (COLORS_AND_FONTS_PREFERENCE_PAGE.equals(id)) {
-			return configure(new ColorsAndFontsPreferencePage());
-		}
-		if (DECORATORS_PREFERENCE_PAGE.equals(id)) {
-			return configure(new DecoratorsPreferencePage());
-		}
-		if (EDITORS_PREFERENCE_PAGE.equals(id)) {
-			return configure(new EditorsPreferencePage());
-		}
-		if (FILE_ASSOCIATIONS_PREFERENCE_PAGE.equals(id)) {
-			return configure(new FileEditorsPreferencePage());
-		}
-		if (KEYS_PREFERENCE_PAGE.equals(id)) {
-			return configure(new KeysPreferencePage());
-		}
-		if (NEW_KEYS_PREFERENCE_PAGE.equals(id)) {
-			return configure(new NewKeysPreferencePage());
-		}
-		if (PERSPECTIVES_PREFERENCE_PAGE.equals(id)) {
-			return configure(new PerspectivesPreferencePage());
-		}
-		if (PREFERENCES_EXPORT_WIZARD.equals(id)) {
-			return configure(new PreferencesExportWizard());
-		}
-		if (PREFERENCES_IMPORT_WIZARD.equals(id)) {
-			return configure(new PreferencesImportWizard());
-		}
-		if (PROGRESS_VIEW.equals(id)) {
-			return configure(new ProgressView());
-		}
-		if (WORKBENCH_PREFERENCE_PAGE.equals(id)) {
-			return configure(new WorkbenchPreferencePage());
-		}
-		if (CONTENT_TYPES_PREFERENCE_PAGE.equals(id)) {
-			return configure(new ContentTypesPreferencePage());
-		}
-		if (SHOW_IN_CONTRIBUTION.equals(id)) {
-			ShowInMenu showInMenu = new ShowInMenu();
-			return showInMenu;
-		}
-
-		throw new CoreException(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-				0, "Unknown id in data argument for " + getClass(), null)); //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) throws CoreException {
-		if (data instanceof String) {
-			id = (String) data;
-		} else {
-			throw new CoreException(new Status(IStatus.ERROR,
-					PlatformUI.PLUGIN_ID, 0,
-					"Data argument must be a String for " + getClass(), null)); //$NON-NLS-1$
-		}
-		this.config = config;
-		this.propertyName = propertyName;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars.java
deleted file mode 100644
index 71a3f3d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Used by a part to access its menu, toolbar, and status line managers.  
- * <p>
- * Within the workbench each part, editor or view, has a private set of action
- * bars.  This set, which contains a menu, toolbar, and status line, appears
- * in the local toolbar for a view and in the window for an editor.  The view
- * may provide an implementation for pre-existing actions or add new actions to
- * the action bars.
- * </p><p>
- * In a workbench window there are a number of actions which are applicable to
- * all parts.  Some common examples are <code>CUT</code>, <code>COPY</code> and 
- * <code>PASTE</code>. These actions, known as "global actions", are contributed to 
- * the workbench window by the window itself and shared by all parts.  The
- * presentation is owned by the window.  The implementation is delegated to the
- * active part.  
- * </p><p>
- * To participate in the global action design an <code>IWorkbenchPart</code> should 
- * register a handler for each global action which is implemented by the part.  This 
- * can be done by calling <code>setGlobalActionHandler</code>.  For convenience, the 
- * standard global actions are defined in 
- * <code>org.eclipse.ui.IWorkbenchActionConstants</code>. 
- * </p><p>
- * Additional work is required for the <code>Delete</code> global action.  In
- * this case the accelerator is defined in the menu item text but is not hooked 
- * on the window.  This is to support text editors where the <code>Delete</code> 
- * key is functional even when the <code>Delete</code> action is disabled (no text 
- * is selected).  An implementation for this accelerator must be defined locally, 
- * in each part, by listening for <code>Delete</code> key events.
- * </p><p>
- * A part may also contribute new actions to the action bars as required.  To do
- * this, call <code>getMenuManager</code>, <code>getToolBarManager</code>, or
- * <code>getStatusLineManager</code> as appropriate to get the action target.
- * Add the action(s) to the target and call <code>update</code> to commit
- * any changes to the underlying widgets.
- * </p><p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActionBars {
-    /**
-     * Clears the global action handler list.
-     * <p>
-     * Note: Clients who manipulate the global action list are
-     * responsible for calling <code>updateActionBars</code> so that the changes
-     * can be propagated throughout the workbench.
-     * </p>
-     */
-    public void clearGlobalActionHandlers();
-
-    /**
-     * Returns the global action handler for the action with the given id.  
-     *
-     * @param actionId an action id declared in the registry
-     * @return an action handler which implements the action id, or
-     *	 <code>null</code> if none is registered
-     * @see IWorkbenchActionConstants
-     * @see #setGlobalActionHandler(String, IAction)
-     */
-    public IAction getGlobalActionHandler(String actionId);
-
-    /**
-     * Returns the menu manager.
-     * <p>
-     * Note: Clients who add or remove items from the returned menu manager are
-     * responsible for calling <code>updateActionBars</code> so that the changes
-     * can be propagated throughout the workbench.
-     * </p>
-     *
-     * @return the menu manager
-     */
-    public IMenuManager getMenuManager();
-    
-    /**
-	 * Returns the service locator for these action bars. The locator is found
-	 * by looking locally, and then ascending the action bar hierarchy.
-	 * 
-	 * @return The service locator; never <code>null</code>.
-	 * @since 3.2
-	 */
-	public IServiceLocator getServiceLocator();
-
-    /**
-	 * Returns the status line manager.
-	 * <p>
-	 * Note: Clients who add or remove items from the returned status line
-	 * manager are responsible for calling <code>updateActionBars</code> so
-	 * that the changes can be propagated throughout the workbench.
-	 * </p>
-	 * 
-	 * @return the status line manager
-	 */
-    public IStatusLineManager getStatusLineManager();
-
-    /**
-     * Returns the tool bar manager.
-     * <p>
-     * Note: Clients who add or remove items from the returned tool bar manager are
-     * responsible for calling <code>updateActionBars</code> so that the changes
-     * can be propagated throughout the workbench.
-     * </p>
-     *
-     * @return the tool bar manager
-     */
-    public IToolBarManager getToolBarManager();
-
-    /**
-     * Sets the global action handler for the action with the given id.
-     * <p>
-     * Note: Clients who manipulate the global action list are
-     * responsible for calling <code>updateActionBars</code> so that the changes
-     * can be propagated throughout the workbench.
-     * </p>
-     *
-     * @param actionId an action id declared in the registry
-     * @param handler an action which implements the action id, or
-     *	<code>null</code> to clear any existing handler
-     * @see IWorkbenchActionConstants
-     */
-    public void setGlobalActionHandler(String actionId, IAction handler);
-
-    /**
-     * Updates the action bars.
-     * <p>
-     * Clients who add or remove items from the menu, tool bar, or status line
-     * managers should call this method to propagated the changes throughout 
-     * the workbench.
-     * </p>
-     */
-    public void updateActionBars();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars2.java
deleted file mode 100644
index 52d0957..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionBars2.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.ICoolBarManager;
-
-/**
- * Interface extention to <code>IActionBars</code> that provides an additional
- * cool bar manager.
- * 
- * @since 3.0 
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActionBars2 extends IActionBars {
-
-    /**
-     * Returns the cool bar manager.
-     * <p>
-     * Note: Clients who add or remove items from the returned cool bar manager are
-     * responsible for calling <code>updateActionBars</code> so that the changes
-     * can be propagated throughout the workbench.
-     * </p>
-     *
-     * @return the cool bar manager.
-     */
-    public ICoolBarManager getCoolBarManager();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate.java
deleted file mode 100644
index b8a22c1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-
-/**
- * Interface for actions contributed via an extension point.
- * <p>
- * This interface should be implemented by clients who need to contribute actions
- * via an extension point. The workbench will generate a <b>proxy action</b> 
- * object on behalf of the plug-in to avoid having to activate the plug-in until 
- * the user needs it. If the action is performed the workbench will load the class 
- * that implements this interface and create what is called an <b>action 
- * delegate</b> object. Then the request, and all subsequent ones, are
- * forwarded through the proxy action to the action delegate, which does the
- * real work. 
- * </p><p>
- * The proxy action is the one that appears in the UI, so the action delegate 
- * will need to talk to the proxy action in order to keep up an appropriate 
- * appearance. Once the action delegate has been created, it will be
- * notified of all selection changes, allowing it to enable or disable the 
- * proxy action appropriately.
- * </p><p>
- * An action delegate cannot be consulted about selection changes before the
- * action is performed because it does not exist.  For this reason, control of
- * the action's enable state should also be exercised through simple XML rules
- * contained in the extension.  These rules allow enable state control before
- * the action delegate's plug-in is loaded.
- * </p><p>
- * Clients can choose to subclass the provided abstract implementation
- * <code>org.eclipse.ui.actions.ActionDelegate</code> or implement the
- * interface directly.
- * </p>
- * 
- * @see org.eclipse.ui.actions.ActionDelegate
- * @see org.eclipse.ui.IActionDelegate2
- */
-public interface IActionDelegate {
-    /**
-     * Performs this action.
-     * <p>
-     * This method is called by the proxy action when the action has been
-     * triggered. Implement this method to do the actual work.
-     * </p><p>
-     * <b>Note:</b> If the action delegate also implements
-     * <code>IActionDelegate2</code>, then this method is not invoked but
-     * instead the <code>runWithEvent(IAction, Event)</code> method is called.
-     * </p>
-     *
-     * @param action the action proxy that handles the presentation portion of the
-     *   action
-     */
-    public void run(IAction action);
-
-    /**
-     * Notifies this action delegate that the selection in the workbench has changed.
-     * <p>
-     * Implementers can use this opportunity to change the availability of the
-     * action or to modify other presentation properties.
-     * </p><p>
-     * When the selection changes, the action enablement state is updated based on
-     * the criteria specified in the plugin.xml file. Then the delegate is notified
-     * of the selection change regardless of whether the enablement criteria in the
-     * plugin.xml file is met.
-     * </p>
-     *
-     * @param action the action proxy that handles presentation portion of 
-     * 		the action
-     * @param selection the current selection, or <code>null</code> if there
-     * 		is no selection.
-     */
-    public void selectionChanged(IAction action, ISelection selection);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate2.java
deleted file mode 100644
index a6e013e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegate2.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * Interface extension to <code>IActionDelegate</code> adding lifecycle methods.
- * In addition, a <code>runWithEvent</code> method that includes the triggering
- * SWT event.
- * <p>
- * An action delegate that implements this interface will have its
- * <code>runWithEvent(IAction, Event)</code> called instead of its
- * <code>run(IAction)</code> method.
- * </p><p>
- * Clients should implement this interface, in addition to
- * <code>IActionDelegate</code> or sub-interfaces, if interested in the
- * triggering event or in the lifecycle of the delegate object.
- * </p><p>
- * Clients can choose to subclass the provided abstract implementation
- * <code>org. eclipse. ui. actions. ActionDelegate</code> or implement the
- * interface directly.
- * </p>
- *
- * @see org.eclipse.ui.actions.ActionDelegate
- * @see org.eclipse.ui.IActionDelegate
- * @since 2.1
- */
-public interface IActionDelegate2 extends IActionDelegate {
-    /**
-     * Allows the action delegate to initialize itself after being created by
-     * the proxy action. This lifecycle method is called after the
-     * action delegate has been created and before any other method of the
-     * action delegate is called.
-     * 
-     * @param action the proxy action that handles the presentation portion of
-     * the action.
-     */
-    public void init(IAction action);
-
-    /**
-     * Allows the action delegate to clean up. This lifecycle method is called
-     * when the proxy action is done with this action delegate. This is the last
-     * method called.
-     */
-    public void dispose();
-
-    /**
-     * Performs this action, passing the SWT event which triggered it. This
-     * method is called by the proxy action when the action has been triggered.
-     * Implement this method to do the actual work.
-     * <p>
-     * <b>Note:</b> This method is called instead of <code>run(IAction)</code>.
-     * </p>
-     *
-     * @param action the action proxy that handles the presentation portion of
-     * the action
-     * @param event the SWT event which triggered this action being run
-     * @since 2.0
-     */
-    public void runWithEvent(IAction action, Event event);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegateWithEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegateWithEvent.java
deleted file mode 100644
index 7a92776..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionDelegateWithEvent.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * This interface is a mixin interface for action delegates, adding the ability to
- * examine the triggering SWT event when it is run.
- * If an action delegate implements this interface, then <code>runWithEvent(IAction, Event)</code>
- * is called instead of <code>run(IAction)</code>.
- * <p>
- * Clients should implement this interface, in addition to <code>IActionDelegate</code> 
- * (or subinterface), if they need to examine the triggering event.
- * Otherwise, they should simply implement <code>IActionDelegate</code> (or subinterface).
- * <p>
- *
- * @since 2.0
- * @deprecated Use org.eclipse.ui.IActionDelegate2 instead.
- */
-public interface IActionDelegateWithEvent {
-
-    /**
-     * Performs this action, passing the SWT event which triggered it.
-     * <p>
-     * This method is called when the delegating action has been triggered.
-     * Implement this method to do the actual work.
-     * If an action delegate implements this interface, this method
-     * is called instead of <code>run(IAction)</code>.
-     * <p>
-     *
-     * @param action the action proxy that handles the presentation portion of the action
-     * @param event the SWT event which triggered this action being run 
-     * @since  2.0
-     * @deprecated Use org.eclipse.ui.IActionDelegate2 instead.
-     */
-    public void runWithEvent(IAction action, Event event);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionFilter.java
deleted file mode 100644
index 73baf4a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IActionFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * An adapter which performs action filtering.
- * <p>
- * Within the workbench a plugin may extend the actions which appear in the
- * context menu for any object.  The visibility of each action extension is controlled
- * by action filtering.  By default, the workbench will filter each action extension using 
- * the <code>objectClass</code> and optional <code>nameFilter</code> attributes defined
- * in xml.  If the action extension passes this test the action will be added to the 
- * context menu for the object. 
- * </p>
- * <p>
- * In some situations the object class and name are not enough to describe the intended
- * target action.  In those situations an action extension may define one or more 
- * <code>filter</code> sub-elements.  Each one of these elements describes one attribute of 
- * the action target using a <code>name value</code> pair.  The attributes for an object 
- * are type specific and beyond the domain of the workbench itself, so the workbench 
- * will delegate filtering at this level to an <code>IActionFilter</code>.  This is a 
- * filtering strategy which is provided by the selection itself and may perform type 
- * specific filtering.
- * </p>
- * <p>
- * The workbench will retrieve the filter from the selected object by testing to see
- * if it implements <code>IActionFilter</code>.  If that fails, the workbench will ask for
- * a filter through through the <code>IAdaptable</code> mechanism.  If a filter is
- * found the workbench will pass each name value pair to the filter to determine if it 
- * matches the state of the selected object.  If so, or there is no filter, the action 
- * will be added to the context menu for the object. 
- * </p>
- * <p>
- * Clients that implement this filter mechanism are strongly encouraged to extend this
- * interface to provide a list of attribute names and possible values that are
- * considered public for other clients to reference.
- * </p>
- *
- * @see org.eclipse.core.runtime.IAdaptable
- */
-public interface IActionFilter {
-    /**
-     * Returns whether the specific attribute matches the state of the target
-     * object.
-     *
-     * @param target the target object
-     * @param name the attribute name
-     * @param value the attribute value
-     * @return <code>true</code> if the attribute matches; <code>false</code> otherwise
-     */
-    public boolean testAttribute(Object target, String name, String value);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IContainmentAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IContainmentAdapter.java
deleted file mode 100644
index 367951e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IContainmentAdapter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * This adapter interface provides a way to test element containment 
- * in a model-independent way.
- * The workbench uses this interface in certain views
- * to test if a given resource is part of a working set.
- * 
- * @since 2.1
- */
-public interface IContainmentAdapter {
-    /**
-     * Checks whether the given element corresponds to the containment context.
-     */
-    public static final int CHECK_CONTEXT = 1;
-
-    /**
-     * Checks whether the given element corresponds to a direct child of the 
-     * containment context.  Does not include the containment context itself.
-     */
-    public static final int CHECK_IF_CHILD = 2;
-
-    /**
-     * Checks whether the given element corresponds to an ancestor of the
-     * containment context.  Does not include the containment context itself.
-     */
-    public static final int CHECK_IF_ANCESTOR = 4;
-
-    /**
-     * Checks whether the given element corresponds to a descendant of the 
-     * containment context.  Does not include the containment context itself.
-     */
-    public static final int CHECK_IF_DESCENDANT = 8;
-
-    /**
-     * Returns whether the given element is considered contained 
-     * in the specified containment context or if it is the context 
-     * itself.
-     *
-     * @param containmentContext object that provides containment 
-     * 	context for the element. This is typically a container object 
-     * 	(e.g., IFolder) and may be the element object itself. 
-     * @param element object that should be tested for containment
-     * @param flags one or more of <code>CHECK_CONTEXT</code>, 
-     *    <code>CHECK_IF_CHILD</code>, <code>CHECK_IF_ANCESTOR</code>, 
-     *    <code>CHECK_IF_DESCENDENT</code> logically ORed together.
-     */
-    public boolean contains(Object containmentContext, Object element, int flags);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IDecoratorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IDecoratorManager.java
deleted file mode 100644
index 270ce9c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IDecoratorManager.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IDelayedLabelDecorator;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-
-/**
- * Manages the decorators contributed via the decorators extension point.
- * Views which allow decoration of their elements should use the label
- * decorator returned by <code>getLabelDecorator()</code>.
- * <p>
- * This class is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IDecoratorManager extends IDelayedLabelDecorator{
-
-    /**
-     * Returns the label decorator which applies the decorations from all
-     * enabled decorators.
-     * Views which allow decoration of their elements should use this 
-     * label decorator.
-     * This decorator should be disposed when it is no longer referenced
-     * by the caller or the images created within it may be kept until
-     * {@link JFaceResources#getResources()} is disposed.
-     *
-     * @return {@link ILabelDecorator}
-     * @see DecoratingLabelProvider
-     * @see IBaseLabelProvider#dispose()
-     */
-    ILabelDecorator getLabelDecorator();
-
-    /**
-     * Return the IBaseLabelProvider that corresponds to the
-     * decoratorId. This can handle both lightweight and full
-     * decorators.
-     * 
-     * @param decoratorId the decorator id
-     * @return the label provider
-     */
-    IBaseLabelProvider getBaseLabelProvider(String decoratorId);
-
-    /**
-     * Returns the full label decorator instance for the specified decorator id
-     * if it is enabled. Otherwise returns <code>null</code>. Returns
-     * <code>null</code> for lightweight decorators. It is recommended that
-     * getBaseLabelProvider is used instead so that lightweight decorators are
-     * also checked.
-     * 
-     * @param decoratorId the decorator id
-     * @return the label decorator
-     */
-    ILabelDecorator getLabelDecorator(String decoratorId);
-
-    /**
-     * Returns the lightweight label decorator instance for the specified 
-     * decorator id if it is enabled. Otherwise returns <code>null</code>.
-     * Returns <code>null</code> for heavyweight decorators.
-     * Use <code>getLabelDecorator</code> instead for heavyweight 
-     * decorators.
-     * 
-     * @param decoratorId the decorator id
-     * @return the lightweight label decorator
-     * @deprecated use getBaseLabelProvider(String) instead.
-     */
-    ILightweightLabelDecorator getLightweightLabelDecorator(String decoratorId);
-
-    /**
-     * Returns whether the specified decorator is enabled.
-     * 
-     * @param decoratorId the decorator id
-     * @return <code>true</code> if the decorator is enabled, or
-     *   <code>false</code> if not
-     */
-    boolean getEnabled(String decoratorId);
-
-    /**
-     * Sets whether the specified decorator is enabled.
-     * 
-     * @param decoratorId the decorator id
-     * @param enabled <code>true</code> to enable the decorator, or
-     * <code>false</code> to disable it
-     * @throws CoreException if the decorator cannot be instantiated
-     */
-    void setEnabled(String decoratorId, boolean enabled) throws CoreException;
-
-    /**
-     * Fire a LabelProviderChangedEvent for the decorator that corresponds to
-     * decoratorID if it exists and is enabled using the IBaseLabelProvider
-     * as the argument to the event. Otherwise do nothing.
-     * <p> This method must be called from the user interface thread as widget
-     * updates may result. </p>
-     * 
-     * @param decoratorId the decorator id
-     */
-    void update(String decoratorId);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionBarContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionBarContributor.java
deleted file mode 100644
index ff56a3f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionBarContributor.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * A editor action bar contributor defines the actions for
- * one or more editors.  
- * <p>
- * Within the workbench there may be more than one open editor of a particular
- * type.  For instance, there may be 1 or more open Java Editors.  To avoid the 
- * creation of duplicate actions and action images the editor concept has been 
- * split into two.  An action contributor is responsable for the creation of 
- * actions.  The editor is responsible for action implementation.  Furthermore,
- * the contributor is shared by each open editor.  As a result of this design
- * there is only 1 set of actions for 1 or more open editors.
- * </p><p>
- * The relationship between editor and contributor is defined by
- * the <code>org.eclipse.ui.editors</code> extension point in the plugin registry.  
- * For each extension an editor class and a contributor class must be defined. 
- * </p><p>
- * This interface should not be implemented directly. An implementation of this 
- * interface has been created in <code>EditorActionBarContributor</code>.  
- * Implementors should subclass this and specialize as required.
- * </p>
- *
- * @see IEditorActionBarContributor
- */
-public interface IEditorActionBarContributor {
-    /**
-     * Initializes this contributor, which is expected to add contributions as
-     * required to the given action bars and global action handlers.
-     * <p>
-     * The page is passed to support the use of <code>RetargetAction</code> by 
-     * the contributor. In this case the init method implementors should: 
-     * </p>
-     * <p><ul>
-     * <li>1) set retarget actions as global action handlers</li>
-     * <li>2) add the retarget actions as part listeners</li>
-     * <li>3) get the active part and if not <code>null</code> 
-     * call partActivated on the retarget actions</li>
-     * </ul></p>
-     * <p>
-     * And in the dispose method the retarget actions should be removed as part listeners.
-     * </p>
-     * 
-     * @param bars the action bars
-     * @param page the workbench page for this contributor
-     * @since 2.0
-     */
-    public void init(IActionBars bars, IWorkbenchPage page);
-
-    /**
-     * Sets the active editor for the contributor.  
-     * Implementors should disconnect from the old editor, connect to the 
-     * new editor, and update the actions to reflect the new editor.
-     *
-     * @param targetEditor the new editor target
-     */
-    public void setActiveEditor(IEditorPart targetEditor);
-
-    /**
-     * Disposes this contributor. 
-     * 
-     * @since 2.0
-     */
-    public void dispose();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionDelegate.java
deleted file mode 100644
index 6100e07..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorActionDelegate.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-
-/**
- * Interface for an action that is contributed into an editor-activated menu or
- * tool bar. It extends <code>IActionDelegate</code> and adds a method for 
- * connecting the delegate to the editor it should work with. Since there is
- * always only one action delegate per editor type, this method supplies the
- * link to the currently active editor instance.
- */
-public interface IEditorActionDelegate extends IActionDelegate {
-    /**
-     * Sets the active editor for the delegate.  
-     * Implementors should disconnect from the old editor, connect to the 
-     * new editor, and update the action to reflect the new editor.
-     *
-     * @param action the action proxy that handles presentation portion of the action
-     * @param targetEditor the new editor target
-     */
-    public void setActiveEditor(IAction action, IEditorPart targetEditor);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorDescriptor.java
deleted file mode 100644
index 2b31546..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorDescriptor.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * Description of an editor in the workbench editor registry. The
- * editor descriptor contains the information needed to create editor instances.
- * <p>
- * An editor descriptor typically represents one of three types of editors:
- * <ul>
- *   <li>a file editor extension for a specific file extension.</li>
- *   <li>a file editor added by the user (via the workbench preference page)</li>
- *   <li>a general editor extension which works on objects other than files.</li>
- * </ul>
- * </p>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- *
- * @see IEditorRegistry
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IEditorDescriptor extends IWorkbenchPartDescriptor {
-    /**
-     * Returns the editor id.
-     * <p>
-     * For internal editors, this is the extension id as defined in the workbench
-     * registry; for external editors, it is path and file name of the external 
-     * program.
-     * </p>
-     *
-     * @return the id of the editor
-     */
-    public String getId();
-
-    /**
-     * Returns the descriptor of the image for this editor.
-     *
-     * @return the descriptor of the image to display next to this editor
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns the label to show for this editor.
-     *
-     * @return the editor label
-     */
-    public String getLabel();
-
-    /**
-     * Returns whether this editor descriptor will open a regular editor
-     * part inside the editor area.
-     * 
-     * @return <code>true</code> if editor is inside editor area, and
-     * <code>false</code> otherwise
-     * @since 3.0
-     */
-    public boolean isInternal();
-
-    /**
-     * Returns whether this editor descriptor will open an external
-     * editor in-place inside the editor area.
-     * 
-     * @return <code>true</code> if editor is in-place, and <code>false</code>
-     * otherwise
-     * @since 3.0
-     */
-    public boolean isOpenInPlace();
-
-    /**
-     * Returns whether this editor descriptor will open an external editor
-     * in a new window outside the workbench.
-     * 
-     * @return <code>true</code> if editor is external, and <code>false</code>
-     * otherwise
-     * @since 3.0
-     */
-    public boolean isOpenExternal();
-
-    /**
-     * Returns the editor matching strategy object for editors
-     * represented by this editor descriptor, or <code>null</code>
-     * if there is no explicit matching strategy specified.
-     * 
-     * @return the editor matching strategy, or <code>null</code> if none
-     * @since 3.1
-     */
-    public IEditorMatchingStrategy getEditorMatchingStrategy();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorInput.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorInput.java
deleted file mode 100644
index 13f7ad3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorInput.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * <code>IEditorInput</code> is a light weight descriptor of editor input,
- * like a file name but more abstract. It is not a model. It is a description of
- * the model source for an <code>IEditorPart</code>.
- * <p>
- * Clients implementing this editor input interface should override
- * <code>Object.equals(Object)</code> to answer true for two inputs that are
- * the same. The <code>IWorbenchPage.openEditor</code> APIs are dependent on
- * this to find an editor with the same input.
- * </p>
- * <p>
- * Clients should extend this interface to declare new types of editor inputs.
- * </p>
- * <p>
- * An editor input is passed to an editor via the <code>IEditorPart.init</code>
- * method. Due to the wide range of valid editor inputs, it is not possible to
- * define generic methods for getting and setting bytes.
- * </p>
- * <p>
- * Editor input must implement the <code>IAdaptable</code> interface;
- * extensions are managed by the platform's adapter manager.
- * </p>
- * <p>
- * Please note that it is important that the editor input be light weight.
- * Within the workbench, the navigation history tends to hold on to editor
- * inputs as a means of reconstructing the editor at a later time. The
- * navigation history can hold on to quite a few inputs (i.e., the default is
- * fifty). The actual data model should probably not be held in the input.
- * </p>
- * 
- * 
- * @see org.eclipse.ui.IEditorPart
- * @see org.eclipse.ui.IWorkbenchPage#openEditor(IEditorInput, String)
- * @see org.eclipse.ui.IWorkbenchPage#openEditor(IEditorInput, String, boolean)
- */
-public interface IEditorInput extends IAdaptable {
-	/**
-	 * 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();
-
-	/**
-	 * Returns the image descriptor for this input.
-	 * 
-	 * <p>
-	 * Note: although a null return value has never been permitted from this
-	 * method, there are many known buggy implementations that return null.
-	 * Clients that need the image for an editor are advised to use
-	 * IWorkbenchPart.getImage() instead of IEditorInput.getImageDescriptor(),
-	 * or to recover from a null return value in a manner that records the ID of
-	 * the problematic editor input. Implementors that have been returning null
-	 * from this method should pick some other default return value (such as
-	 * ImageDescriptor.getMissingImageDescriptor()).
-	 * </p>
-	 * 
-	 * @return the image descriptor for this input; may be <code>null</code> if
-	 * there is no image.
-	 */
-	public ImageDescriptor getImageDescriptor();
-
-	/**
-	 * Returns the name of this editor input for display purposes.
-	 * <p>
-	 * For instance, when the input is from a file, the return value would
-	 * ordinarily be just the file name.
-	 * 
-	 * @return the name string; never <code>null</code>;
-	 */
-	public String getName();
-
-	/**
-	 * Returns an object that can be used to save the state of this editor
-	 * input.
-	 * 
-	 * @return the persistable element, or <code>null</code> if this editor
-	 *         input cannot be persisted
-	 */
-	public IPersistableElement getPersistable();
-
-	/**
-	 * 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. The format of the
-	 * text varies between input types.
-	 * </p>
-	 * 
-	 * @return the tool tip text; never <code>null</code>.
-	 */
-	public String getToolTipText();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorLauncher.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorLauncher.java
deleted file mode 100644
index d76c4a3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorLauncher.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * An editor launcher is used to launch external editors on a
- * file in the local file system.
- * <p>
- * Clients should implement this interface to define a new type of editor
- * launcher.  Each new launcher must be registered as an editor in the 
- * workbench's editor extension point 
- * (named <code>"org.eclipse.ui.editors"</code>).
- *
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point = "org.eclipse.ui.editors"&GT;
- *   &LT;editor
- *       id="org.eclipse.ui.SwingEditorLauncher"
- *       name="Swing Editor"
- *       extensions="xml"
- *       launcher="org.eclipse.ui.examples.swingeditor.SwingEditorLauncher"
- *       icon="icons/xml.gif"&GT;
- *   &LT;/editor&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p><p>
- * In this example a launcher has been registered for use with <code>xml</code>
- * files.  Once registered, the launcher will appear in the <code>Open With</code>
- * menu for an <code>xml</code> file.  If the item is invoked the workbench will
- * create an instance of the launcher class and call <code>open</code> on it,
- * passing the input file.
- * </p>
- */
-public interface IEditorLauncher {
-
-    /**
-     * Launches this external editor to edit the file at the given 
-     * location in the local file system.
-     *
-     * @param file the local file system path of the file to edit
-     */
-    public void open(IPath file);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorMatchingStrategy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorMatchingStrategy.java
deleted file mode 100644
index 7a47989..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorMatchingStrategy.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * An editor matching strategy allows editor extensions to provide their own
- * algorithm for matching the input of an open editor of that type to a 
- * given editor input.  This is used to find a matching editor during
- * {@link org.eclipse.ui.IWorkbenchPage#openEditor(IEditorInput, String, boolean)} and
- * {@link org.eclipse.ui.IWorkbenchPage#findEditor(IEditorInput)}.
- * 
- * @since 3.1
- */
-public interface IEditorMatchingStrategy {
-    
-    /**
-     * Returns whether the editor represented by the given editor reference 
-     * matches the given editor input.
-     * <p>
-     * Implementations should inspect the given editor input first, 
-     * and try to reject it early before calling <code>IEditorReference.getEditorInput()</code>,
-     * since that method may be expensive. 
-     * </p>
-     * 
-     * @param editorRef the editor reference to match against
-     * @param input the editor input to match
-     * @return <code>true</code> if the editor matches the given editor input,
-     *   <code>false</code> if it does not match
-     */
-    boolean matches(IEditorReference editorRef, IEditorInput input);
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorPart.java
deleted file mode 100644
index 7c26eba..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorPart.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * An editor is a visual component within a workbench page. It is
- * typically used to edit or browse a document or input object. The input 
- * is identified using an <code>IEditorInput</code>.  Modifications made 
- * in an editor part follow an open-save-close lifecycle model (in contrast 
- * to a view part, where modifications are saved to the workbench 
- * immediately).
- * <p>
- * An editor is document or input-centric.  Each editor has an input, and only
- * one editor can exist for each editor input within a page.  This policy has 
- * been designed to simplify part management.  
- * </p><p>
- * An editor should be used in place of a view whenever more than one instance
- * of a document type can exist.
- * </p><p>
- * This interface may be implemented directly.  For convenience, a base
- * implementation is defined in <code>EditorPart</code>.
- * </p>
- * <p>
- * An editor part is added to the workbench in two stages:
- * <ol>
- * 	<li>An editor extension is contributed to the workbench registry. This
- *    extension defines the extension id, extension class, and the file 
- *    extensions which are supported by the editor.</li>
- *  <li>An editor part based upon the extension is created and added to the
- *    workbench when the user opens a file with one of the supported file
- *    extensions (or some other suitable form of editor input).</li>
- * </ol>
- * </p>
- * <p>
- * All editor parts implement the <code>IAdaptable</code> interface; extensions
- * are managed by the platform's adapter manager.
- * </p>
- *
- * @see org.eclipse.ui.IWorkbenchPage#openEditor(IEditorInput, String)
- * @see org.eclipse.ui.part.EditorPart
- */
-public interface IEditorPart extends IWorkbenchPart, ISaveablePart {
-
-    /**
-     * The property id for <code>isDirty</code>.
-     */
-    public static final int PROP_DIRTY = IWorkbenchPartConstants.PROP_DIRTY;
-
-    /**
-     * The property id for <code>getEditorInput</code>.
-     */
-    public static final int PROP_INPUT = IWorkbenchPartConstants.PROP_INPUT;
-
-    /**
-     * Returns the input for this editor.  If this value changes the part must 
-     * fire a property listener event with <code>PROP_INPUT</code>.
-     *
-     * @return the editor input
-     */
-    public IEditorInput getEditorInput();
-
-    /**
-     * Returns the site for this editor. 
-     * This method is equivalent to <code>(IEditorSite) getSite()</code>.
-     * <p>  
-     * The site can be <code>null</code> while the editor is being initialized. 
-     * After the initialization is complete, this value must be non-<code>null</code>
-     * for the remainder of the editor's life cycle.
-     * </p>
-     * 
-     * @return the editor site; this value may be <code>null</code> if the editor
-     *         has not yet been initialized
-     */
-    public IEditorSite getEditorSite();
-
-    /**
-     * Initializes this editor with the given editor site and input.
-     * <p>
-     * This method is automatically called shortly after the part is instantiated.
-     * It marks the start of the part's lifecycle. The 
-     * {@link IWorkbenchPart#dispose IWorkbenchPart.dispose} method will be called 
-     * automically at the end of the lifecycle. Clients must not call this method.
-     * </p><p>
-     * Implementors of this method must examine the editor input object type to
-     * determine if it is understood.  If not, the implementor must throw
-     * a <code>PartInitException</code>
-     * </p>
-     * @param site the editor site
-     * @param input the editor input
-     * @exception PartInitException if this editor was not initialized successfully
-     */
-    public void init(IEditorSite site, IEditorInput input)
-            throws PartInitException;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorReference.java
deleted file mode 100644
index 1bddc17..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorReference.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Implements a reference to a editor.
- * The IEditorPart will not be instanciated until
- * the editor becomes visible or the API getEditor
- * is sent with true;
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IEditorReference extends IWorkbenchPartReference {
-    /**
-     * Returns the factory id of the factory used to 
-     * restore this editor. Returns null if the editor
-     * is not persistable.
-     */
-    public String getFactoryId();
-
-    /**
-     * Returns the editor input name. May return null is the
-     * name is not available or if the editor failed to be 
-     * restored.
-     */
-    public String getName();
-
-    /**
-     * Returns the editor referenced by this object.
-     * Returns <code>null</code> if the editor was not instantiated or
-     * it failed to be restored. Tries to restore the editor
-     * if <code>restore</code> is true.
-     */
-    public IEditorPart getEditor(boolean restore);
-
-    /**
-     * Returns true if the editor is pinned otherwise returns false.
-     */
-    public boolean isPinned();
-
-    /**
-     * Returns the editor input for the editor referenced by this object.
-     * <p>
-     * Unlike most of the other methods on this type, this method
-     * can trigger plug-in activation.
-     * </p>
-     *  
-     * @return the editor input for the editor referenced by this object
-     * @throws PartInitException if there was an error restoring the editor input
-     * @since 3.1
-     */
-    public IEditorInput getEditorInput() throws PartInitException;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorRegistry.java
deleted file mode 100644
index 824c84f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorRegistry.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * Registry of editors known to the workbench.
- * <p>
- * An editor can be created in one of two ways:
- * <ul>
- *   <li>An editor can be defined by an extension to the workbench.</li>
- *   <li>The user manually associates an editor with a given resource extension
- *      type. This will override any default workbench or platform association.
- *      </li>
- * </ul>
- * </p>
- * <p>
- * The registry does not keep track of editors that are "implicitly" determined.
- * For example a bitmap (<code>.bmp</code>) file will typically not have a 
- * registered editor. Instead, when no registered editor is found, the 
- * underlying OS is consulted.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.IWorkbench#getEditorRegistry()
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IEditorRegistry {
-
-    /**
-     * The property identifier for the contents of this registry.
-     */
-    public static final int PROP_CONTENTS = 0x01;
-
-    /**
-     * The identifier for the system external editor descriptor. This descriptor 
-     * is always present in the registry on all platforms.
-     * This editor requires an input which implements
-     * {@link org.eclipse.ui.IPathEditorInput IPathEditorInput}.
-     * Use {@link #findEditor findEditor} to access the editor descriptor for
-     * this identifier.
-     * 
-     * @since 3.0
-     */
-    public static final String SYSTEM_EXTERNAL_EDITOR_ID = "org.eclipse.ui.systemExternalEditor"; //$NON-NLS-1$
-
-    /**
-     * The identifier for the system in-place editor descriptor. This descriptor 
-     * is only present in the registry on platforms that support in-place editing
-     * (for example Win32). This editor requires an input which implements
-     * {@link org.eclipse.ui.IInPlaceEditorInput IInPlaceEditorInput}. Use 
-     * {@link #findEditor findEditor} to access the editor descriptor for this
-     * identifier.
-     * 
-     * @since 3.0
-     */
-    public static final String SYSTEM_INPLACE_EDITOR_ID = "org.eclipse.ui.systemInPlaceEditor"; //$NON-NLS-1$
-
-    /**
-     * Adds a listener for changes to properties of this registry.
-     * Has no effect if an identical listener is already registered.
-     * <p>
-     * The properties ids are as follows:
-     * <ul>
-     *   <li><code>PROP_CONTENTS</code>: Triggered when the file editor mappings in
-     *       the editor registry change.</li>
-     * </ul>
-     * </p>
-     *
-     * @param listener a property listener
-     */
-    public void addPropertyListener(IPropertyListener listener);
-
-    /**
-     * Finds and returns the descriptor of the editor with the given editor id.
-     *
-     * @param editorId the editor id
-     * @return the editor descriptor with the given id, or <code>null</code> if not
-     *   found
-     */
-    public IEditorDescriptor findEditor(String editorId);
-
-    /**
-     * Returns the default editor. The default editor always exist.
-     *
-     * @return the descriptor of the default editor
-     * @deprecated The system external editor is the default editor.
-     * Use <code>findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID)</code>
-     * instead.
-     */
-    public IEditorDescriptor getDefaultEditor();
-
-    /**
-	 * Returns the default editor for a given file name. This method assumes an
-	 * unknown content type for the given file.
-	 * <p>
-	 * The default editor is determined by taking the file extension for the
-	 * file and obtaining the default editor for that extension.
-	 * </p>
-	 * 
-	 * @param fileName
-	 *            the file name in the system
-	 * @return the descriptor of the default editor, or <code>null</code> if
-	 *         not found
-	 */
-    public IEditorDescriptor getDefaultEditor(String fileName);
-    
-    /**
-     * Returns the default editor for a given file name and with the given content type.  
-     * <p>
-     * The default editor is determined by taking the file extension for the
-     * file and obtaining the default editor for that extension.
-     * </p>
-     *
-     * @param fileName the file name in the system
-     * @param contentType the content type or <code>null</code> for the unknown content type
-     * @return the descriptor of the default editor, or <code>null</code> if not
-     *   found
-     * @since 3.1
-     */
-    public IEditorDescriptor getDefaultEditor(String fileName, IContentType contentType);
-
-    /**
-	 * Returns the list of file editors registered to work against the file with
-	 * the given file name. This method assumes an unknown content type for the
-	 * given file.
-	 * <p>
-	 * Note: Use <code>getDefaultEditor(String)</code> if you only the need
-	 * the default editor rather than all candidate editors.
-	 * </p>
-	 * 
-	 * @param fileName
-	 *            the file name in the system
-	 * @return a list of editor descriptors
-	 */
-    public IEditorDescriptor[] getEditors(String fileName);
- 
-    /**
-	 * Returns the list of file editors registered to work against the file with
-	 * the given file name and with the given content type.
-	 * <p>
-	 * Note: Use <code>getDefaultEditor(String)</code> if you only the need
-	 * the default editor rather than all candidate editors.
-	 * </p>
-	 * 
-	 * @param fileName
-	 *            the file name in the system
-	 * @param contentType
-	 *            the content type or <code>null</code> for the unknown
-	 *            content type
-	 * @return a list of editor descriptors
-	 * @since 3.1
-	 */
-    public IEditorDescriptor[] getEditors(String fileName, IContentType contentType);
-
-    /**
-     * Returns a list of mappings from file type to editor.  The resulting list
-     * is sorted in ascending order by file extension.
-     * <p>
-     * Each mapping defines an extension and the set of editors that are 
-     * available for that type. The set of editors includes those registered 
-     * via plug-ins and those explicitly associated with a type by the user 
-     * in the workbench preference pages.
-     * </p>
-     *
-     * @return a list of mappings sorted alphabetically by extension
-     */
-    public IFileEditorMapping[] getFileEditorMappings();
-
-    /**
-	 * Returns the image descriptor associated with a given file. This image is
-	 * usually displayed next to the given file. This method assumes an unknown
-	 * content type for the given file.
-	 * <p>
-	 * The image is determined by taking the file extension of the file and
-	 * obtaining the image for the default editor associated with that
-	 * extension. A default image is returned if no default editor is available.
-	 * </p>
-	 * 
-	 * @param filename
-	 *            the file name in the system
-	 * @return the descriptor of the image to display next to the file
-	 */
-    public ImageDescriptor getImageDescriptor(String filename);
-	
-    /**
-	 * Returns the image descriptor associated with a given file. This image is
-	 * usually displayed next to the given file.
-	 * <p>
-	 * The image is determined by taking the file extension of the file and
-	 * obtaining the image for the default editor associated with that
-	 * extension. A default image is returned if no default editor is available.
-	 * </p>
-	 * 
-	 * @param filename
-	 *            the file name in the system
-	 * @param contentType
-	 *            the content type of the file or <code>null</code> for the
-	 *            unknown content type
-	 * @return the descriptor of the image to display next to the file
-	 * @since 3.1
-	 */
-    public ImageDescriptor getImageDescriptor(String filename, IContentType contentType);
-
-    /**
-     * Removes the given property listener from this registry.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a property listener
-     */
-    public void removePropertyListener(IPropertyListener listener);
-
-    /**
-     * Sets the default editor id for the files that match that
-     * specified file name or extension. The specified editor must be
-     * defined as an editor for that file name or extension.
-     *
-     * @param fileNameOrExtension the file name or extension pattern (e.g. "*.xml");
-     * @param editorId the editor id or <code>null</code> for no default
-     */
-    public void setDefaultEditor(String fileNameOrExtension, String editorId);
-
-    /**
-     * Returns whether there is an in-place editor that could handle a file
-     * with the given name.
-     * 
-     * @param filename the file name
-     * @return <code>true</code> if an in-place editor is available, and
-     * <code>false</code> otherwise
-     * @since 3.0
-     */
-    public boolean isSystemInPlaceEditorAvailable(String filename);
-
-    /**
-     * Returns whether the system has an editor that could handle a file
-     * with the given name.
-     * 
-     * @param filename the file name
-     * @return <code>true</code> if an external editor available, and
-     * <code>false</code> otherwise
-     * @since 3.0
-     */
-    public boolean isSystemExternalEditorAvailable(String filename);
-
-    /**
-     * Returns the image descriptor associated with the system editor that
-     * would be used to edit this file externally.
-     *
-     * @param filename the file name
-     * @return the descriptor of the external editor image, or <code>null</code>
-     * if none
-     * @since 3.0
-     */
-    public ImageDescriptor getSystemExternalEditorImageDescriptor(
-            String filename);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorSite.java
deleted file mode 100644
index fa31629..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IEditorSite.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-
-/**
- * The primary interface between an editor part and the workbench.
- * <p>
- * The workbench exposes its implemention of editor part sites via this 
- * interface, which is not intended to be implemented or extended by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IEditorSite extends IWorkbenchPartSite {
-
-    /**
-     * Returns the action bar contributor for this editor.
-     * <p>
-     * An action contributor is responsable for the creation of actions.
-     * By design, this contributor is used for one or more editors of the same type.
-     * Thus, the contributor returned by this method is not owned completely
-     * by the editor - it is shared.
-     * </p>
-     *
-     * @return the editor action bar contributor, or <code>null</code> if none exists
-     */
-    public IEditorActionBarContributor getActionBarContributor();
-
-    /**
-	 * Returns the action bars for this part site. Editors of the same type (and
-	 * in the same window) share the same action bars. Contributions to the
-	 * action bars are done by the <code>IEditorActionBarContributor</code>.
-	 * 
-	 * @return the action bars
-	 * @since 2.1
-	 */
-    public IActionBars getActionBars();
-
-    /**
-     * <p>
-     * Registers a pop-up menu with the default id for extension. The default id
-     * is defined as the part id.
-     * </p>
-     * <p>
-     * By default, context menus include object contributions based on the
-     * editor input for the current editor. It is possible to override this
-     * behaviour by calling this method with <code>includeEditorInput</code>
-     * as <code>false</code>. This might be desirable for editors that
-     * present a localized view of an editor input (e.g., a node in a model
-     * editor).
-     * </p>
-     * <p>
-     * For a detailed description of context menu registration see
-     * {@link IWorkbenchPartSite#registerContextMenu(MenuManager, ISelectionProvider)}
-     * </p>
-     * 
-     * @param menuManager
-     *            the menu manager; must not be <code>null</code>.
-     * @param selectionProvider
-     *            the selection provider; must not be <code>null</code>.
-     * @param includeEditorInput
-     *            Whether the editor input should be included when adding object
-     *            contributions to this context menu.
-     * @see IWorkbenchPartSite#registerContextMenu(MenuManager,
-     *      ISelectionProvider)
-     * @since 3.1
-     */
-    public void registerContextMenu(MenuManager menuManager,
-            ISelectionProvider selectionProvider, boolean includeEditorInput);
-
-    /**
-     * <p>
-     * Registers a pop-up menu with a particular id for extension. This method
-     * should only be called if the target part has more than one context menu
-     * to register.
-     * </p>
-     * <p>
-     * By default, context menus include object contributions based on the
-     * editor input for the current editor. It is possible to override this
-     * behaviour by calling this method with <code>includeEditorInput</code>
-     * as <code>false</code>. This might be desirable for editors that
-     * present a localized view of an editor input (e.g., a node in a model
-     * editor).
-     * </p>
-     * <p>
-     * For a detailed description of context menu registration see
-     * {@link IWorkbenchPartSite#registerContextMenu(MenuManager, ISelectionProvider)}
-     * </p>
-     * 
-     * @param menuId
-     *            the menu id; must not be <code>null</code>.
-     * @param menuManager
-     *            the menu manager; must not be <code>null</code>.
-     * @param selectionProvider
-     *            the selection provider; must not be <code>null</code>.
-     * @param includeEditorInput
-     *            Whether the editor input should be included when adding object
-     *            contributions to this context menu.
-     * @see IWorkbenchPartSite#registerContextMenu(MenuManager,
-     *      ISelectionProvider)
-     * @since 3.1
-     */
-    public void registerContextMenu(String menuId, MenuManager menuManager,
-            ISelectionProvider selectionProvider, boolean includeEditorInput);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IElementFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IElementFactory.java
deleted file mode 100644
index 18f705e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IElementFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * A factory for re-creating objects from a previously saved memento.
- * <p>
- * Clients should implement this interface and include the name of their class
- * in an extension to the platform extension point named
- * <code>"org.eclipse.ui.elementFactories"</code>.
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.elementFactories"&GT;
- *    &LT;factory id="com.example.myplugin.MyFactory" class="com.example.myplugin.MyFactory" /&GT; 
- * &LT;/extension&GT;
- * </pre>
- * </p>
- *
- * @see IPersistableElement
- * @see IMemento
- * @see org.eclipse.ui.IWorkbench#getElementFactory
- */
-public interface IElementFactory {
-    /**
-	 * Re-creates and returns an object from the state captured within the given
-	 * memento.
-	 * <p>
-	 * If the result is not null, it should be persistable; that is,
-	 * <pre>
-	 * result.getAdapter(org.eclipse.ui.IPersistableElement.class)
-	 * </pre>
-	 * should not return <code>null</code>.
-	 * </p>
-	 * 
-	 * @param memento
-	 *            a memento containing the state for the object
-	 * @return an object, or <code>null</code> if the element could not be
-	 *         created
-	 */
-    public IAdaptable createElement(IMemento memento);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IExportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IExportWizard.java
deleted file mode 100644
index 0670bd2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IExportWizard.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for export wizards.
- * <p>
- * Clients should implement this interface and include the name of their class
- * in a wizard contributed to the workbench's export wizard extension point 
- * (named <code>"org.eclipse.ui.exportWizards"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.exportWizards"&GT;
- *   &LT;wizard
- *       id="com.example.myplugin.blob"
- *       name="Blob File"
- *       class="com.example.myplugin.BlobFileExporter"
- *       icon="icons/export_blob_wiz.gif"&GT;
- *     &LT;description&GT;Export resources to a BLOB file&LT;/description&GT;
- *     &LT;selection class="org.eclipse.core.resources.IResource" /&GT; 
- *   &LT;/wizard&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p>
- *
- * @see org.eclipse.jface.wizard.IWizard
- */
-public interface IExportWizard extends IWorkbenchWizard {
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFileEditorMapping.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFileEditorMapping.java
deleted file mode 100644
index 23eaccf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFileEditorMapping.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * An association between a file name/extension and a list of known editors for 
- * files of that type.
- * <p>
- * The name and extension can never empty or null. The name may contain
- * the single wild card character (*) to indicate the editor applies to
- * all files with the same extension (e.g. *.doc). The name can never
- * embed the wild card character within itself (i.e. rep*)
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- *
- * @see IEditorRegistry#getFileEditorMappings
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IFileEditorMapping {
-    /**
-     * Returns the default editor registered for this type mapping.
-     *
-     * @return the descriptor of the default editor, or <code>null</code> if there
-     *   is no default editor registered. Will also return <code>null</code> if
-     *   the default editor exists but fails the Expressions check.
-     */
-    public IEditorDescriptor getDefaultEditor();
-
-    /**
-     * Returns the list of editors registered for this type mapping.
-     *
-     * @return a possibly empty list of editors.
-     */
-    public IEditorDescriptor[] getEditors();
-
-    /**
-     * Returns the list of editors formerly registered for this type mapping
-     * which have since been deleted.
-     *
-     * @return a possibly empty list of editors
-     */
-    public IEditorDescriptor[] getDeletedEditors();
-
-    /**
-     * Returns the file's extension for this type mapping.
-     *
-     * @return the extension for this mapping
-     */
-    public String getExtension();
-
-    /**
-     * Returns the descriptor of the image to use for a file of this type.
-     * <p>
-     * The image is obtained from the default editor. A default file image is
-     * returned if no default editor is available.
-     * </p>
-     *
-     * @return the descriptor of the image to use for a resource of this type
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns the label to use for this mapping.
-     * Labels have the form "<it>name</it>.<it>extension</it>".
-     *
-     * @return the label to use for this mapping
-     */
-    public String getLabel();
-
-    /**
-     * Returns the file's name for this type mapping.
-     *
-     * @return the name for this mapping
-     */
-    public String getName();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFolderLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFolderLayout.java
deleted file mode 100644
index f87a552..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IFolderLayout.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * An <code>IFolderLayout</code> is used to define the initial views within a folder.
- * The folder itself is contained within an <code>IPageLayout</code>.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- *
- * @see IPageLayout#createFolder
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IFolderLayout extends IPlaceholderFolderLayout {
-    /**
-     * Adds a view with the given compound id to this folder.
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * The primary id must name a view contributed to the workbench's view extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param viewId the view id
-     */
-    public void addView(String viewId);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IImportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IImportWizard.java
deleted file mode 100644
index 7877644..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IImportWizard.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for import wizards.
- * <p>
- * Clients should implement this interface and include the name of their class
- * in a wizard contributed to the workbench's import wizard extension point 
- * (named <code>"org.eclipse.ui.importWizards"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.importWizards"&GT;
- *   &LT;wizard
- *       id="com.example.myplugin.blob"
- *       name="Blob File"
- *       class="com.example.myplugin.BlobFileImporter"
- *       icon="icons/import_blob_wiz.gif"&GT;
- *     &LT;description&GT;Import resources from a BLOB file&LT;/description&GT;
- *     &LT;selection class="org.eclipse.core.resources.IResource" /&GT; 
- *   &LT;/wizard&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p>
- *
- * @see org.eclipse.jface.wizard.IWizard
- */
-public interface IImportWizard extends IWorkbenchWizard {
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditor.java
deleted file mode 100644
index f918cb8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for editor parts that represent an in-place style editor.
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- *
- * @see org.eclipse.ui.IEditorDescriptor#isOpenInPlace()
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IInPlaceEditor extends IEditorPart {
-    /**
-     * Informs the in-place editor that the system file it is
-     * editing was deleted by the application.
-     */
-    public void sourceDeleted();
-
-    /**
-     * Informs the in-place editor that the system file it is
-     * editing was moved or renamed by the application.
-     * 
-     * @param input the new in-place editor input to use
-     */
-    public void sourceChanged(IInPlaceEditorInput input);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditorInput.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditorInput.java
deleted file mode 100644
index e7d2117..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IInPlaceEditorInput.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * This interface defines an editor input for in-place editors.
- * <p>
- * Clients implementing this editor input interface should override
- * <code>Object.equals(Object)</code> to answer true for two inputs
- * that are the same. The <code>IWorkbenchPage.openEditor</code> APIs
- * are dependent on this to find an editor with the same input.
- * </p><p>
- * Path-oriented editors should support this as a valid input type, and
- * can allow full read-write editing of its content.
- * </p><p>
- * All editor inputs must implement the <code>IAdaptable</code> interface;
- * extensions are managed by the platform's adapter manager.
- * </p>
- *
- * @see org.eclipse.ui.IInPlaceEditor
- * @since 3.0
- */
-public interface IInPlaceEditorInput extends IPathEditorInput {
-    /**
-     * Sets the in-place editor this input is associated with.
-     * 
-     * @param editor the in-place editor associated with this input
-     * 		or <code>null</code> to disassociate.
-     */
-    public void setInPlaceEditor(IInPlaceEditor editor);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IKeyBindingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IKeyBindingService.java
deleted file mode 100644
index 96bb8b8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IKeyBindingService.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-
-/**
- * The key binding service allows one to query or set the scope of Eclipse for
- * the purposes of resolving key assignments to commands, and to register
- * actions to handle specific commands. See the <code>org.eclipse.ui.commands</code>
- * extension point for details.
- * <p>
- * A participating workbench part is responsible to register all its actions
- * with this service. The part is also responsible to set the current scope.
- * </p>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @since 2.0
- * @deprecated See IContextService to manage <b>scopes</b> and
- * IHandlerService to manage handlers. IAction can
- * be proxied by org.eclipse.jface.commands.ActionHandler.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IKeyBindingService {
-
-    /**
-     * Returns the active accelerator scope ids.
-     * 
-     * @return the active accelerator scope ids.
-     */
-    String[] getScopes();
-
-    /**
-     * Registers an action with the key binding service.
-     * 
-     * @param action
-     *            the action to be registered with the key binding service.
-     */
-    void registerAction(IAction action);
-
-    /**
-     * Sets the active accelerator scope ids.
-     * 
-     * @param scopes
-     *            the active accelerator scope ids.
-     */
-    void setScopes(String[] scopes);
-
-    /**
-     * Unregisters an action with the key binding service.
-     * 
-     * @param action
-     *            the action to be unregistered with the key binding service.
-     */
-    void unregisterAction(IAction action);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ILocalWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ILocalWorkingSetManager.java
deleted file mode 100644
index dd4f589..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ILocalWorkingSetManager.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * A local working set manager can be used to manage a set of
- * working sets independently from the working sets managed by 
- * the global working set manager.  A local working set manager 
- * can be saved and restored using the methods <code>saveState</code>  
- * and <code>restoreState</code>.  A new local working set manager can be created  
- * using {@link org.eclipse.ui.IWorkbench#createLocalWorkingSetManager()}.
- * Clients of local working set managers are responsible for calling 
- * {@link IWorkingSetManager#dispose()} when the working sets it manages 
- * are no longer needed.
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- *
- * @see org.eclipse.ui.IWorkbench#createLocalWorkingSetManager()
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ILocalWorkingSetManager extends IWorkingSetManager {
-
-	/**
-	 * Saves the state of the working set manager to the given
-	 * memento. 
-	 * 
-	 * @param memento the memento to save the state to
-	 */
-	public void saveState(IMemento memento);
-	
-	/**
-	 * Restores the state of the working set manager from the given
-	 * memento. The method can only be called as long as the working
-	 * set manager is still empty.
-	 * 
-	 * @param memento the memento to restore the state from
-	 */
-	public void restoreState(IMemento memento);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java
deleted file mode 100644
index d73d9cb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IMemento.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface to a memento used for saving the important state of an object
- * in a form that can be persisted in the file system.
- * <p>
- * Mementos were designed with the following requirements in mind:
- * <ol>
- *  <li>Certain objects need to be saved and restored across platform sessions.
- *    </li>
- *  <li>When an object is restored, an appropriate class for an object might not
- *    be available. It must be possible to skip an object in this case.</li>
- *  <li>When an object is restored, the appropriate class for the object may be
- *    different from the one when the object was originally saved. If so, the
- *    new class should still be able to read the old form of the data.</li>
- * </ol>
- * </p>
- * <p>
- * Mementos meet these requirements by providing support for storing a
- * mapping of arbitrary string keys to primitive values, and by allowing
- * mementos to have other mementos as children (arranged into a tree).
- * A robust external storage format based on XML is used.
- * </p><p>
- * The key for an attribute may be any alpha numeric value.  However, the
- * value of <code>TAG_ID</code> is reserved for internal use.
- * </p><p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- *
- * @see IPersistableElement
- * @see IElementFactory
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IMemento {
-    /**
-     * Special reserved key used to store the memento id 
-     * (value <code>"IMemento.internal.id"</code>).
-     *
-     * @see #getID()
-     */
-    public static final String TAG_ID = "IMemento.internal.id"; //$NON-NLS-1$
-
-    /**
-     * Creates a new child of this memento with the given type.
-     * <p>
-     * The <code>getChild</code> and <code>getChildren</code> methods
-     * are used to retrieve children of a given type.
-     * </p>
-     *
-     * @param type the type
-     * @return a new child memento
-     * @see #getChild
-     * @see #getChildren
-     */
-    public IMemento createChild(String type);
-
-    /**
-     * Creates a new child of this memento with the given type and id.
-     * The id is stored in the child memento (using a special reserved
-     * key, <code>TAG_ID</code>) and can be retrieved using <code>getId</code>.
-     * <p>
-     * The <code>getChild</code> and <code>getChildren</code> methods
-     * are used to retrieve children of a given type.
-     * </p>
-     *
-     * @param type the type
-     * @param id the child id
-     * @return a new child memento with the given type and id
-     * @see #getID
-     */
-    public IMemento createChild(String type, String id);
-
-    /**
-     * Returns the first child with the given type id.
-     *
-     * @param type the type id
-     * @return the first child with the given type
-     */
-    public IMemento getChild(String type);
-
-    /**
-     * Returns all children with the given type id.
-     *
-     * @param type the type id
-     * @return an array of children with the given type
-     */
-    public IMemento[] getChildren(String type);
-
-    /**
-     * Returns the floating point value of the given key.
-     *
-     * @param key the key
-     * @return the value, or <code>null</code> if the key was not found or was found
-     *   but was not a floating point number
-     */
-    public Float getFloat(String key);
-
-    /**
-	 * Returns the type for this memento.
-	 * 
-	 * @return the memento type
-	 * @see #createChild(java.lang.String)
-	 * @see #createChild(java.lang.String,java.lang.String)
-	 * @since 3.4
-	 */
-	public String getType();
-
-    /**
-     * Returns the id for this memento.
-     *
-     * @return the memento id, or <code>null</code> if none
-     * @see #createChild(java.lang.String,java.lang.String)
-     */
-    public String getID();
-
-    /**
-     * Returns the integer value of the given key.
-     *
-     * @param key the key
-     * @return the value, or <code>null</code> if the key was not found or was found
-     *   but was not an integer
-     */
-    public Integer getInteger(String key);
-
-    /**
-     * Returns the string value of the given key.
-     *
-     * @param key the key
-     * @return the value, or <code>null</code> if the key was not found
-     */
-    public String getString(String key);
-
-    /**
-	 * Returns the boolean value of the given key.
-	 * 
-	 * @param key the key
-	 * @return the value, or <code>null</code> if the key was not found
-     * @since 3.4
-	 */
-	public Boolean getBoolean(String key);
-
-	/**
-     * Returns the data of the Text node of the memento. Each memento is allowed
-     * only one Text node.
-     * 
-     * @return the data of the Text node of the memento, or <code>null</code>
-     * if the memento has no Text node.
-     * @since 2.0
-     */
-    public String getTextData();
-	
-    /**
-     * Returns an array of all the attribute keys of the memento. This will not
-     * be <code>null</code>. If there are no keys, an array of length zero will
-     * be returned. 
-     * @return an array with all the attribute keys of the memento
-     * @since 3.4
-     */
-	public String[] getAttributeKeys();
-
-    /**
-     * Sets the value of the given key to the given floating point number.
-     *
-     * @param key the key
-     * @param value the value
-     */
-    public void putFloat(String key, float value);
-
-    /**
-     * Sets the value of the given key to the given integer.
-     *
-     * @param key the key
-     * @param value the value
-     */
-    public void putInteger(String key, int value);
-
-    /**
-     * Copy the attributes and children from  <code>memento</code>
-     * to the receiver.
-     *
-     * @param memento the IMemento to be copied.
-     */
-    public void putMemento(IMemento memento);
-
-    /**
-     * Sets the value of the given key to the given string.
-     *
-     * @param key the key
-     * @param value the value
-     */
-    public void putString(String key, String value);
-
-    /**
-	 * Sets the value of the given key to the given boolean value.
-	 * 
-	 * @param key the key
-	 * @param value the value
-     * @since 3.4
-	 */
-	public void putBoolean(String key, boolean value);
-
-    /**
-     * Sets the memento's Text node to contain the given data. Creates the Text node if
-     * none exists. If a Text node does exist, it's current contents are replaced. 
-     * Each memento is allowed only one text node.
-     * 
-     * @param data the data to be placed on the Text node
-     * @since 2.0
-     */
-    public void putTextData(String data);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationHistory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationHistory.java
deleted file mode 100644
index 5b6fc3b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationHistory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Manages a list of entries to keep a history of locations on editors,
- * enabling the user to go back and forward without losing context.
- * 
- * The history is a list of <code>INavigationLocation</code> and a pointer
- * to the current location. Whenever the back or forward action runs the
- * history restores the previous or next location.
- *
- * The back and/or forward actions should not change the content of the history
- * in any way.
- * 
- * If the user steps N times in one direction (back or forward) and then N times to
- * the oposite direction, the editor and location should be exactly the same as before.
- * 
- * Clients must guarantee that the current location is
- * always in the history, which can be done either by marking
- * a new location or by updating the current location.
- * 
- * Not intended to be implemented by clients.
- * 
- * @since 2.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface INavigationHistory {
-    /**
-     * Mark the current location into the history. This message
-     * should be sent by clients whenever significant changes
-     * in location are detected.
-     * 
-     * The location is obtained by calling <code>INavigationLocationProvider.createNavigationLocation</code>
-     * 
-     * @param part the editor part
-     */
-    public void markLocation(IEditorPart part);
-
-    /**
-     * Returns the current location.
-     * 
-     * @return the current location
-     */
-    public INavigationLocation getCurrentLocation();
-
-    /**
-     * Returns all entries in the history.
-     * 
-     * @return all entries in the history
-     */
-    public INavigationLocation[] getLocations();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocation.java
deleted file mode 100644
index 2966f6c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocation.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Represents the context marked for the user in the navigation history.
- * 
- * Not intended to be implemented by clients. Clients should subclass NavigationLocation
- * instead.
- * 
- * @since 2.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface INavigationLocation {
-
-    /**
-     * Disposes of this location and frees any allocated resource.
-     */
-    public void dispose();
-
-    /**
-     * Release any state kept by this location. Any relevant state should be
-     * saved by the previous call of saveState(IMemento). This object will
-     * not be used until restoreState is called again. 
-     */
-    public void releaseState();
-
-    /**
-     * Persists the state of this location into the <code>memento</code>
-     * 
-     * @param memento the storage were the state should be saved into.
-     */
-    public void saveState(IMemento memento);
-
-    /**
-     * Restore the state of this location from the <code>memento</code>
-     * 
-     * @param memento the storage were the state was saved into.
-     */
-    public void restoreState(IMemento memento);
-
-    /**
-     * Restore the context saved by this location.
-     */
-    public void restoreLocation();
-
-    /**
-     * Merge the receiver into <code>currentLocation</code>. Return true if
-     * the two locations could be merged otherwise return false.
-     * <p> 
-     * This message is sent to all locations before being added to the history;
-     * given the change to the new location to merge itself into the current
-     * location minimizing the number of entries in the navigation history.
-     * </p>
-     *  
-     * @param currentLocation where the receiver should be merged into
-     * @return boolean true if the merge was possible
-     */
-    public boolean mergeInto(INavigationLocation currentLocation);
-
-    /**
-     * Returns the input used for this location. Returns <code>null</code> if the
-     * receiver's state has been released.
-     * 
-     * @return the input for this location
-     */
-    public Object getInput();
-
-    /**
-     * Returns the display name for this location.  This name is used in the
-     * navigation history list.
-     * 
-     * @return the display name
-     */
-    public String getText();
-
-    /**
-     * Sets the location's input.
-     * <p>
-     * Should not be called by clients.
-     * </p>
-     * 
-     * @param input the editor input.
-     */
-    public void setInput(Object input);
-
-    /**
-     * The message <code>update</code> is sent to the active location before
-     * another location becomes active.
-     */
-    public void update();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocationProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocationProvider.java
deleted file mode 100644
index edd9274..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INavigationLocationProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Should be implemented by editors that wish to contribute to the
- * navigation history. The message <code>createNavigationLocation</code>
- * will be sent when a new location is marked in the history.
- * 
- * @since 2.1
- */
-public interface INavigationLocationProvider {
-    /**
-     * Creates an empty navigation location. The message <code>restoreState</code>
-     * will be sent to the location to restore its state.
-     * 
-     * @return INavigationLocation
-     */
-    public INavigationLocation createEmptyNavigationLocation();
-
-    /**
-     * Creates a navigation location describing the current state.
-     * 
-     * @return INavigationLocation
-     */
-    public INavigationLocation createNavigationLocation();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INestableKeyBindingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INestableKeyBindingService.java
deleted file mode 100644
index d6e755e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INestableKeyBindingService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * A service that is capable of nesting other services within itself.  This 
- * allows lower level components to query for a service provider in a 
- * hierarchical fashion, and for information to be resolved in a hierarchical
- * manner
- * </p>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @since 2.1.3
- * @deprecated This is now handled by {@link IServiceLocator} which can
- * be nested.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface INestableKeyBindingService extends IKeyBindingService {
-
-    /**
-     * Marks the service associated with <code>nestedSite</code> as active if
-     * one exists.  If there is no service associated, then nothing changes.
-     * Calling this method with <code>null</code> forces deactivation of the
-     * current service.
-     * 
-     * @param nestedSite The site whose service should be activated; 
-     * <code>null</code> if the current service should be deactivated.
-     * @return <code>true</code> if a service is activated (or deactivated, in
-     * the case of a <code>null</code> parameter); <code>false</code> if
-     * nothing changed.
-     */
-    public boolean activateKeyBindingService(IWorkbenchSite nestedSite);
-
-    /**
-     * An accessor for the nested key binding service associated with a
-     * particular site.  If the key binding service does not exist for this
-     * <code>nestedSite</code> already, then a new one should be constructed.
-     * 
-     * @param nestedSite The site for which the service should be found; 
-     * should not be <code>null</code>.
-     * @return The associated service, if any; or a new associated service, if
-     * none existed previously.
-     */
-    public IKeyBindingService getKeyBindingService(IWorkbenchSite nestedSite);
-
-    /**
-     * Removes a nested key binding service from this key binding service.  The
-     * service to remove is determined by the <code>nestedSite</code> with
-     * which it is associated.
-     * 
-     * @param nestedSite The site from which to remove the nested service.
-     * This site must not be <code>null</code>.
-     * @return <code>true</code> if the service existed and could be removed; 
-     * <code>false</code> otherwise.
-     */
-    public boolean removeKeyBindingService(IWorkbenchSite nestedSite);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INewWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INewWizard.java
deleted file mode 100644
index 16ba30d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INewWizard.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for creation wizards.
- * <p>
- * Clients should implement this interface and include the name of their class
- * in a wizard contributed to the workbench's creation wizard extension point 
- * (named <code>"org.eclipse.ui.newWizards"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.newWizards"&GT;
- *   &LT;wizard
- *       id="com.example.myplugin.new.blob"
- *       name="Blob"
- *       class="com.example.myplugin.BlobCreator"
- *       icon="icons/new_blob_wiz.gif"&GT;
- *     &LT;description&GT;Create a new BLOB file&LT;/description&GT;
- *     &LT;selection class="org.eclipse.core.resources.IResource" /&GT; 
- *   &LT;/wizard&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p>
- *
- * @see org.eclipse.jface.wizard.IWizard
- */
-public interface INewWizard extends IWorkbenchWizard {
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INullSelectionListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INullSelectionListener.java
deleted file mode 100644
index 893d4bd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/INullSelectionListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening to <code>null</code> selection changes.
- * <p>
- * This interface should be implemented by selection listeners
- * that want to be notified when the selection becomes <code>null</code>.
- * It has no methods. It simply indicates the desire to receive
- * <code>null</code> selection events through the existing 
- * <code>selectionChanged</code> method. Either the part or the 
- * selection may be <code>null</code>.
- * </p>
- *
- * @see ISelectionListener#selectionChanged
- * @see IActionDelegate#selectionChanged
- * @see org.eclipse.ui.ISelectionListener
- * 
- * @since 2.0
- */
-public interface INullSelectionListener extends ISelectionListener {
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IObjectActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IObjectActionDelegate.java
deleted file mode 100644
index da287d5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IObjectActionDelegate.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.IAction;
-
-/**
- * Interface for an object action that is contributed into a popup menu
- * for a view or editor.  It extends <code>IActionDelegate</code>
- * and adds an initialization method for connecting the delegate to the 
- * part it should work with.
- */
-public interface IObjectActionDelegate extends IActionDelegate {
-    /**
-	 * Sets the active part for the delegate. The active part is commonly used
-	 * to get a working context for the action, such as the shell for any dialog
-	 * which is needed.
-	 * <p>
-	 * This method will be called every time the action appears in a popup menu.
-	 * The targetPart may change with each invocation.
-	 * </p>
-	 * 
-	 * @param action
-	 *            the action proxy that handles presentation portion of the
-	 *            action; must not be <code>null</code>.
-	 * @param targetPart
-	 *            the new part target; must not be <code>null</code>.
-	 */
-    public void setActivePart(IAction action, IWorkbenchPart targetPart);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
deleted file mode 100644
index 0cee7c9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageLayout.java
+++ /dev/null
@@ -1,541 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross <schtoo@schtoo.com> 
- *     - Fix for 99155 - allow standalone view placeholders
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * A page layout defines the initial layout for a perspective within a page 
- * in a workbench window.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * <p>
- * When a perspective is opened, it creates a new page layout with a single editor area. 
- * This layout is then passed to the perspective factory (implementation of
- * {@link org.eclipse.ui.IPerspectiveFactory#createInitialLayout(IPageLayout)}) where 
- * additional views and other content can be added, using the existing editor area as 
- * the initial point of reference.
- * </p>
- * <p>
- * In some cases, multiple instances of a particular view may need to be added
- * to the same layout.  These are disambiguated using a secondary id.  
- * In layout methods taking a view id, the id can have the compound form: 
- * <strong>primaryId [':' secondaryId]</strong>.
- * If a secondary id is given, the view must allow multiple instances by
- * having specified <code>allowMultiple="true"</code> in its extension.
- * View placeholders may also have a secondary id.
- * </p>
- * <p>
- * Wildcards are permitted in placeholder ids (but not regular view ids).  
- * '*' matches any substring, '?' matches any single character. 
- * Wildcards can be specified for the primary id, the secondary id, or both.  
- * For example, the placeholder "someView:*" will match any occurrence of the view 
- * that has primary id "someView" and that also has some non-null secondary id.
- * Note that this placeholder will not match the view if it has no secondary id,
- * since the compound id in this case is simply "someView".
- * </p>
- * <p>
- * Example of populating a layout with standard workbench views:
- * <pre>
- * IPageLayout layout = ...
- * // Get the editor area.
- * String editorArea = layout.getEditorArea();
- *
- * // Top left: Resource Navigator view and Bookmarks view placeholder
- * IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f,
- *    editorArea);
- * topLeft.addView(IPageLayout.ID_RES_NAV);
- * topLeft.addPlaceholder(IPageLayout.ID_BOOKMARKS);
- *
- * // Bottom left: Outline view and Property Sheet view
- * IFolderLayout bottomLeft = layout.createFolder("bottomLeft", IPageLayout.BOTTOM, 0.50f,
- * 	   "topLeft");
- * bottomLeft.addView(IPageLayout.ID_OUTLINE);
- * bottomLeft.addView(IPageLayout.ID_PROP_SHEET);
- *
- * // Bottom right: Task List view
- * layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.66f, editorArea);
- * </pre>
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPageLayout {
-
-    /**
-     * The part id for the workbench's editor area.  This may only be used
-     * as a reference part for view addition.
-     */
-    public static String ID_EDITOR_AREA = "org.eclipse.ui.editorss"; //$NON-NLS-1$
-
-    /**
-     * The view id for the workbench's Resource Navigator standard component.
-     */
-    public static String ID_RES_NAV = "org.eclipse.ui.views.ResourceNavigator"; //$NON-NLS-1$
-
-    /**
-     * The view id for the workbench's Property Sheet standard component.
-     */
-    public static String ID_PROP_SHEET = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$
-
-    /**
-     * The view id for the workbench's Content Outline standard component.
-     */
-    public static String ID_OUTLINE = "org.eclipse.ui.views.ContentOutline"; //$NON-NLS-1$
-
-    /**
-     * The view id for the workbench's Bookmark Navigator standard component.
-     */
-    public static String ID_BOOKMARKS = "org.eclipse.ui.views.BookmarkView"; //$NON-NLS-1$
-
-    /**
-     * The view id for the workbench's Problems View standard component.
-     * @since 3.0
-     */
-    public static String ID_PROBLEM_VIEW = "org.eclipse.ui.views.ProblemView"; //$NON-NLS-1$
-    
-    /**
-     * The view id for the workbench's Progress View standard component.
-     * @since 3.2
-     */
-    public static String ID_PROGRESS_VIEW = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$
-
-    /**
-     * The view id for the workbench's Task List standard component.
-     */
-    public static String ID_TASK_LIST = "org.eclipse.ui.views.TaskList"; //$NON-NLS-1$
-
-    /**
-     * Id of the navigate action set. 
-     * (value <code>"org.eclipse.ui.NavigateActionSet"</code>)
-     * @since 2.1
-     */
-    public static final String ID_NAVIGATE_ACTION_SET = "org.eclipse.ui.NavigateActionSet"; //$NON-NLS-1$
-
-    /**
-     * Relationship constant indicating a part should be placed to the left of
-     * its relative.
-     */
-    public static final int LEFT = 1;
-
-    /**
-     * Relationship constant indicating a part should be placed to the right of
-     * its relative.
-     */
-    public static final int RIGHT = 2;
-
-    /**
-     * Relationship constant indicating a part should be placed above its 
-     * relative.
-     */
-    public static final int TOP = 3;
-
-    /**
-     * Relationship constant indicating a part should be placed below its 
-     * relative.
-     */
-    public static final int BOTTOM = 4;
-
-    /**
-     * Minimum acceptable ratio value when adding a view
-     * @since 2.0
-     */
-    public static final float RATIO_MIN = 0.05f;
-
-    /**
-     * Maximum acceptable ratio value when adding a view
-     * @since 2.0
-     */
-    public static final float RATIO_MAX = 0.95f;
-
-    /**
-     * The default fast view ratio width.
-     * @since 2.0
-     */
-    public static final float DEFAULT_FASTVIEW_RATIO = 0.3f;
-
-    /**
-     * The default view ratio width for regular (non-fast) views.
-     * @since 2.0
-     */
-    public static final float DEFAULT_VIEW_RATIO = 0.5f;
-
-    /**
-     * A variable used to represent invalid  ratios.
-     * @since 2.0
-     */
-    public static final float INVALID_RATIO = -1f;
-
-    /**
-     * A variable used to represent a ratio which has not been specified.
-     * @since 2.0
-     */
-    public static final float NULL_RATIO = -2f;
-
-    /**
-     * Adds an action set with the given id to this page layout.
-     * The id must name an action set contributed to the workbench's extension 
-     * point (named <code>"org.eclipse.ui.actionSet"</code>).
-     *
-     * @param actionSetId the action set id
-     */
-    public void addActionSet(String actionSetId);
-
-    /**
-     * Adds the view with the given compound id to the page layout as a fast view.  
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * The primary id must name a view contributed to the workbench's view extension
-     * point (named <code>"org.eclipse.ui.views"</code>).
-     * 
-     * @param viewId the compound id of the view to be added
-     * @since 2.0
-     */
-    public void addFastView(String viewId);
-
-    /**
-     * Adds the view with the given compound id to the page layout as a fast view
-     * with the given width ratio. 
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * The primary id must name a view contributed to the workbench's view extension 
-     * point (named <code>"org.eclipse.ui.views"</code>).
-     * 
-     * @param viewId the compound id of the view to be added
-     * @param ratio the percentage of the workbench the fast view will cover
-     * @since 2.0
-     */
-    public void addFastView(String viewId, float ratio);
-
-    /**
-     * Adds a new wizard shortcut to the page layout.
-     * These are typically shown in the UI to allow rapid navigation to appropriate new wizards.  
-     * For example, in the Eclipse IDE, these appear as items under the File > New menu.
-     * The id must name a new wizard extension contributed to the 
-     * workbench's new wizards extension point (named <code>"org.eclipse.ui.newWizards"</code>).
-     *
-     * @param id the wizard id
-     */
-    public void addNewWizardShortcut(String id);
-
-    /**
-     * Adds a perspective shortcut to the page layout.
-     * These are typically shown in the UI to allow rapid navigation to appropriate new wizards.  
-     * For example, in the Eclipse IDE, these appear as items under the Window > Open Perspective menu.
-     * The id must name a perspective extension contributed to the 
-     * workbench's perspectives extension point (named <code>"org.eclipse.ui.perspectives"</code>).
-     *
-     * @param id the perspective id
-     */
-    public void addPerspectiveShortcut(String id);
-
-    /**
-     * Adds a view placeholder to this page layout.
-     * A view placeholder is used to define the position of a view before the view
-     * appears.  Initially, it is invisible; however, if the user ever opens a view
-     * whose compound id matches the placeholder, the view will appear at the same
-     * location as the placeholder.  
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * If the placeholder contains wildcards, it remains in the layout, otherwise 
-     * it is replaced by the view.
-     * If the primary id of the placeholder has no wildcards, it must refer to a view 
-     * contributed to the workbench's view extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param viewId the compound view id (wildcards allowed)
-     * @param relationship the position relative to the reference part;
-     *  one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
-     *  or <code>RIGHT</code>
-     * @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
-     *    in the range <code>0.05f</code> to <code>0.95f</code>.
-     *    Values outside this range will be clipped to facilitate direct manipulation.
-     *    For a vertical split, the part on top gets the specified ratio of the current space
-     *    and the part on bottom gets the rest.
-     *    Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
-     *    and the part at right gets the rest.
-     * @param refId the id of the reference part; either a view id, a folder id,
-     *   or the special editor area id returned by <code>getEditorArea</code>
-     */
-    public void addPlaceholder(String viewId, int relationship, float ratio,
-            String refId);
-
-    /**
-     * Adds an item to the Show In prompter.
-     * The id must name a view contributed to the workbench's view extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param id the view id
-     * 
-     * @since 2.1
-     */
-    public void addShowInPart(String id);
-
-    /**
-     * Adds a show view shortcut to the page layout.
-     * These are typically shown in the UI to allow rapid navigation to appropriate views.  
-     * For example, in the Eclipse IDE, these appear as items under the Window > Show View menu.
-     * The id must name a view contributed to the workbench's views extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param id the view id
-     */
-    public void addShowViewShortcut(String id);
-
-    /**
-     * Adds a view with the given compound id to this page layout.
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * The primary id must name a view contributed to the workbench's view extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param viewId the compound view id
-     * @param relationship the position relative to the reference part;
-     *  one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
-     *  or <code>RIGHT</code>
-     * @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
-     *    in the range <code>0.05f</code> to <code>0.95f</code>.
-     *    Values outside this range will be clipped to facilitate direct manipulation.
-     *    For a vertical split, the part on top gets the specified ratio of the current space
-     *    and the part on bottom gets the rest.
-     *    Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
-     *    and the part at right gets the rest.
-     * @param refId the id of the reference part; either a view id, a folder id,
-     *   or the special editor area id returned by <code>getEditorArea</code>
-     */
-    public void addView(String viewId, int relationship, float ratio,
-            String refId);
-
-    /**
-     * Creates and adds a new folder with the given id to this page layout.
-     * The position and relative size of the folder is expressed relative to
-     * a reference part.
-     *
-     * @param folderId the id for the new folder.  This must be unique within
-     *  the layout to avoid collision with other parts.
-     * @param relationship the position relative to the reference part;
-     *  one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
-     *  or <code>RIGHT</code>
-     * @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
-     *    in the range <code>0.05f</code> to <code>0.95f</code>.
-     *    Values outside this range will be clipped to facilitate direct manipulation.
-     *    For a vertical split, the part on top gets the specified ratio of the current space
-     *    and the part on bottom gets the rest.
-     *    Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
-     *    and the part at right gets the rest.
-     * @param refId the id of the reference part; either a view id, a folder id,
-     *   or the special editor area id returned by <code>getEditorArea</code>
-     * @return the new folder
-     */
-    public IFolderLayout createFolder(String folderId, int relationship,
-            float ratio, String refId);
-
-    /**
-     * Creates and adds a placeholder for a new folder with the given id to this page layout.
-     * The position and relative size of the folder is expressed relative to
-     * a reference part.
-     * 
-     * @param folderId the id for the new folder.  This must be unique within
-     *  the layout to avoid collision with other parts.
-     * @param relationship the position relative to the reference part;
-     *  one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
-     *  or <code>RIGHT</code>
-     * @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
-     *    in the range <code>0.05f</code> to <code>0.95f</code>.
-     *    Values outside this range will be clipped to facilitate direct manipulation.
-     *    For a vertical split, the part on top gets the specified ratio of the current space
-     *    and the part on bottom gets the rest.
-     *    Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
-     *    and the part at right gets the rest.
-     * @param refId the id of the reference part; either a view id, a folder id,
-     *   or the special editor area id returned by <code>getEditorArea</code>
-     * @return a placeholder for the new folder
-     * @since 2.0
-     */
-    public IPlaceholderFolderLayout createPlaceholderFolder(String folderId,
-            int relationship, float ratio, String refId);
-
-    /**
-     * Returns the special identifier for the editor area in this page 
-     * layout.  The identifier for the editor area is also stored in
-     * <code>ID_EDITOR_AREA</code>.
-     * <p>
-     * The editor area is automatically added to each layout before anything else.
-     * It should be used as the point of reference when adding views to a layout.
-     * </p>
-     *
-     * @return the special id of the editor area
-     */
-    public String getEditorArea();
-
-    /**
-     * Returns whether the page's layout will show
-     * the editor area.
-     *
-     * @return <code>true</code> when editor area visible, <code>false</code> otherwise
-     */
-    public boolean isEditorAreaVisible();
-
-    /**
-     * Show or hide the editor area for the page's layout.
-     *
-     * @param showEditorArea <code>true</code> to show the editor area, <code>false</code> to hide the editor area
-     */
-    public void setEditorAreaVisible(boolean showEditorArea);
-
-    /**
-     * Returns the number of open editors before reusing editors or -1 if the 
-     * preference settings should be used instead.
-     *
-     * @return the number of open editors before reusing editors or -1 if the 
-     * preference settings should be used instead.
-     * 
-     * @deprecated this always returns -1 as of Eclipse 2.1
-     */
-    public int getEditorReuseThreshold();
-
-    /**
-     * Sets the number of open editors before reusing editors.
-     * If < 0 the user preference settings will be used.
-     * 
-     * @param openEditors the number of open editors
-     * 
-     * @deprecated this method has no effect, as of Eclipse 2.1
-     */
-    public void setEditorReuseThreshold(int openEditors);
-
-    /**
-     * Sets whether this layout is fixed.
-     * In a fixed layout, layout parts cannot be moved or zoomed, and the initial
-     * set of views cannot be closed.
-     *
-     * @param isFixed <code>true</code> if this layout is fixed, <code>false</code> if not
-     * @since 3.0
-     */
-    public void setFixed(boolean isFixed);
-
-    /**
-     * Returns <code>true</code> if this layout is fixed, <code>false</code> if not.
-     * In a fixed layout, layout parts cannot be moved or zoomed, and the initial
-     * set of views cannot be closed.
-     * The default is <code>false</code>.
-     * 
-     * @return <code>true</code> if this layout is fixed, <code>false</code> if not.
-     * @since 3.0
-     */
-    public boolean isFixed();
-
-    /**
-     * Returns the layout for the view or placeholder with the given compound id in
-     * this page layout.
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * Returns <code>null</code> if the specified view or placeholder is unknown to the layout.
-     * 
-     * @param id the compound view id or placeholder
-     * @return the view layout, or <code>null</code>
-     * @since 3.0
-     */
-    public IViewLayout getViewLayout(String id);
-
-    /**
-     * Adds a standalone view with the given compound id to this page layout.
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * A standalone view cannot be docked together with other views.
-     * A standalone view's title can optionally be hidden.  If hidden,
-     * then any controls typically shown with the title (such as the close button) 
-     * are also hidden.  Any contributions or other content from the view itself
-     * are always shown (e.g. toolbar or view menu contributions, content description).
-     * <p>
-     * The id must name a view contributed to the workbench's view extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     * </p>
-     *
-     * @param viewId the compound view id
-     * @param showTitle <code>true</code> to show the title and related controls,
-     *  <code>false</code> to hide them
-     * @param relationship the position relative to the reference part;
-     *  one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
-     *  or <code>RIGHT</code>
-     * @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
-     *    in the range <code>0.05f</code> to <code>0.95f</code>.
-     *    Values outside this range will be clipped to facilitate direct manipulation.
-     *    For a vertical split, the part on top gets the specified ratio of the current space
-     *    and the part on bottom gets the rest.
-     *    Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
-     *    and the part at right gets the rest.
-     * @param refId the id of the reference part; either a view id, a folder id,
-     *   or the special editor area id returned by <code>getEditorArea</code>
-     * 
-     * @since 3.0
-     */
-    public void addStandaloneView(String viewId, boolean showTitle,
-            int relationship, float ratio, String refId);
-    
-    /**
-	 * Adds a standalone view placeholder to this page layout. A view
-	 * placeholder is used to define the position of a view before the view
-	 * appears. Initially, it is invisible; however, if the user ever opens a
-	 * view whose compound id matches the placeholder, the view will appear at
-	 * the same location as the placeholder. See the {@link IPageLayout} type
-	 * documentation for more details about compound ids. If the placeholder
-	 * contains wildcards, it remains in the layout, otherwise it is replaced by
-	 * the view. If the primary id of the placeholder has no wildcards, it must
-	 * refer to a view contributed to the workbench's view extension point
-	 * (named <code>"org.eclipse.ui.views"</code>).
-	 * 
-	 * @param viewId
-	 *            the compound view id (wildcards allowed)
-	 * @param relationship
-	 *            the position relative to the reference part; one of
-	 *            <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
-	 *            or <code>RIGHT</code>
-	 * @param ratio
-	 *            a ratio specifying how to divide the space currently occupied
-	 *            by the reference part, in the range <code>0.05f</code> to
-	 *            <code>0.95f</code>. Values outside this range will be
-	 *            clipped to facilitate direct manipulation. For a vertical
-	 *            split, the part on top gets the specified ratio of the current
-	 *            space and the part on bottom gets the rest. Likewise, for a
-	 *            horizontal split, the part at left gets the specified ratio of
-	 *            the current space and the part at right gets the rest.
-	 * @param refId
-	 *            the id of the reference part; either a view id, a folder id,
-	 *            or the special editor area id returned by
-	 *            <code>getEditorArea</code>
-	 * @param showTitle
-	 *            true to show the view's title, false if not
-	 *            
-	 * @since 3.2
-	 */
-    public void addStandaloneViewPlaceholder(String viewId, int relationship,
-			float ratio, String refId, boolean showTitle);
-
-
-    /**
-	 * Returns the perspective descriptor for the perspective being layed out.
-	 * 
-	 * @return the perspective descriptor for the perspective being layed out
-	 * @since 3.2
-	 */
-    public IPerspectiveDescriptor getDescriptor();
-    
-    /**
-	 * Returns the folder layout for the view or placeholder with the given
-	 * compound id in this page layout. See the {@link IPageLayout} type
-	 * documentation for more details about compound ids. Returns
-	 * <code>null</code> if the specified view or placeholder is unknown to
-	 * the layout, or the placeholder was not in a folder.
-	 * 
-	 * @param id
-	 *            the compound view id or placeholder. Must not be
-	 *            <code>null</code>.
-	 * @return the folder layout, or <code>null</code>
-	 * @since 3.3
-	 */
-    public IPlaceholderFolderLayout getFolderForView(String id);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageListener.java
deleted file mode 100644
index 8455cbc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageListener.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening to page lifecycle events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IPageService#addPageListener
- */
-public interface IPageListener {
-    /**
-     * Notifies this listener that the given page has been activated.
-     *
-     * @param page the page that was activated
-     * @see IWorkbenchWindow#setActivePage
-     */
-    public void pageActivated(IWorkbenchPage page);
-
-    /**
-     * Notifies this listener that the given page has been closed.
-     *
-     * @param page the page that was closed
-     * @see IWorkbenchPage#close
-     */
-    public void pageClosed(IWorkbenchPage page);
-
-    /**
-     * Notifies this listener that the given page has been opened.
-     *
-     * @param page the page that was opened
-     * @see IWorkbenchWindow#openPage
-     */
-    public void pageOpened(IWorkbenchPage page);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageService.java
deleted file mode 100644
index a7488f3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPageService.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * A page service tracks the page and perspective lifecycle events
- * within a workbench window.
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IPageService service = (IPageService) getSite().getService(IPageService.class);
- * </pre>
- * <ul>
- * <li>This service is not available globally, only from the workbench window level down.</li>
- * </ul>
- * </p>
- *
- * @see IWorkbenchWindow
- * @see IPageListener
- * @see IPerspectiveListener
- * @see org.eclipse.ui.services.IServiceLocator#getService(Class)
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPageService {
-    /**
-     * Adds the given listener for page lifecycle events.
-     * Has no effect if an identical listener is already registered.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param listener a page listener
-     * @see #removePageListener(IPageListener)
-     */
-    public void addPageListener(IPageListener listener);
-
-    /**
-     * Adds the given listener for a page's perspective lifecycle events.
-     * Has no effect if an identical listener is already registered.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param listener a perspective listener
-     * @see #removePerspectiveListener(IPerspectiveListener)
-     */
-    public void addPerspectiveListener(IPerspectiveListener listener);
-
-    /**
-     * Returns the active page.
-     *
-     * @return the active page, or <code>null</code> if no page is currently active
-     */
-    public IWorkbenchPage getActivePage();
-
-    /**
-     * Removes the given page listener.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a page listener
-     */
-    public void removePageListener(IPageListener listener);
-
-    /**
-     * Removes the given page's perspective listener.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a perspective listener
-     */
-    public void removePerspectiveListener(IPerspectiveListener listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener.java
deleted file mode 100644
index bca148f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening to part lifecycle events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IPartService#addPartListener(IPartListener)
- */
-public interface IPartListener {
-
-    /**
-     * Notifies this listener that the given part has been activated.
-     *
-     * @param part the part that was activated
-     * @see IWorkbenchPage#activate
-     */
-    public void partActivated(IWorkbenchPart part);
-
-    /**
-     * Notifies this listener that the given part has been brought to the top.
-     * <p>
-     * These events occur when an editor is brought to the top in the editor area,
-     * or when a view is brought to the top in a page book with multiple views.
-     * They are normally only sent when a part is brought to the top 
-     * programmatically (via <code>IPerspective.bringToTop</code>). When a part is
-     * activated by the user clicking on it, only <code>partActivated</code> is sent.
-     * </p>
-     *
-     * @param part the part that was surfaced
-     * @see IWorkbenchPage#bringToTop
-     */
-    public void partBroughtToTop(IWorkbenchPart part);
-
-    /**
-     * Notifies this listener that the given part has been closed.
-     *
-     * @param part the part that was closed
-     * @see IWorkbenchPage#hideView(IViewPart)
-     */
-    public void partClosed(IWorkbenchPart part);
-
-    /**
-     * Notifies this listener that the given part has been deactivated.
-     *
-     * @param part the part that was deactivated
-     * @see IWorkbenchPage#activate(IWorkbenchPart)
-     */
-    public void partDeactivated(IWorkbenchPart part);
-
-    /**
-     * Notifies this listener that the given part has been opened.
-     *
-     * @param part the part that was opened
-     * @see IWorkbenchPage#showView(String)
-     */
-    public void partOpened(IWorkbenchPart part);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener2.java
deleted file mode 100644
index b4da216..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartListener2.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Interface for listening to part lifecycle events.
- * <p>
- * This is a replacement for <code>IPartListener</code>.
- * <p> 
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IPartService#addPartListener(IPartListener2)
- */
-public interface IPartListener2 {
-
-    /**
-     * Notifies this listener that the given part has been activated.
-     *
-     * @param partRef the part that was activated
-     * @see IWorkbenchPage#activate
-     */
-    public void partActivated(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part has been brought to the top.
-     * <p>
-     * These events occur when an editor is brought to the top in the editor area,
-     * or when a view is brought to the top in a page book with multiple views.
-     * They are normally only sent when a part is brought to the top 
-     * programmatically (via <code>IPerspective.bringToTop</code>). When a part is
-     * activated by the user clicking on it, only <code>partActivated</code> is sent.
-     * </p>
-     *
-     * @param partRef the part that was surfaced
-     * @see IWorkbenchPage#bringToTop
-     */
-    public void partBroughtToTop(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part has been closed.
-     * <p>
-     * Note that if other perspectives in the same page share the view,
-     * this notification is not sent.  It is only sent when the view
-     * is being removed from the page entirely (it is being disposed).
-     * </p>
-     *
-     * @param partRef the part that was closed
-     * @see IWorkbenchPage#hideView
-     */
-    public void partClosed(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part has been deactivated.
-     *
-     * @param partRef the part that was deactivated
-     * @see IWorkbenchPage#activate
-     */
-    public void partDeactivated(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part has been opened.
-     * <p>
-     * Note that if other perspectives in the same page share the view,
-     * this notification is not sent.  It is only sent when the view
-     * is being newly opened in the page (it is being created).
-     * </p>
-     *
-     * @param partRef the part that was opened
-     * @see IWorkbenchPage#showView
-     */
-    public void partOpened(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part is hidden or obscured by another part.
-     *
-     * @param partRef the part that is hidden or obscured by another part
-     */
-    public void partHidden(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part is visible.
-     *
-     * @param partRef the part that is visible
-     */
-    public void partVisible(IWorkbenchPartReference partRef);
-
-    /**
-     * Notifies this listener that the given part's input was changed.
-     *
-     * @param partRef the part whose input was changed
-     */
-    public void partInputChanged(IWorkbenchPartReference partRef);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartService.java
deleted file mode 100644
index 551c30b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPartService.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * A part service tracks the creation and activation of parts within a
- * workbench page.
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IPartService service = (IPartService) getSite().getService(IPartService.class);
- * </pre>
- * <ul>
- * <li>This service is not available globally, only from the workbench window level down.</li>
- * </ul>
- * </p>
- *
- * @see IWorkbenchPage
- * @see org.eclipse.ui.services.IServiceLocator#getService(Class)
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPartService {
-
-    /**
-     * Adds the given listener for part lifecycle events.
-     * Has no effect if an identical listener is already registered.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param listener a part listener
-     * @see #removePartListener(IPartListener)
-     */
-    public void addPartListener(IPartListener listener);
-
-    /**
-     * Adds the given listener for part lifecycle events.
-     * Has no effect if an identical listener is already registered.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param listener a part listener
-     * see {@link #removePartListener(IPartListener2)}
-     */
-    public void addPartListener(IPartListener2 listener);
-
-    /**
-     * Returns the active part.
-     *
-     * @return the active part, or <code>null</code> if no part is currently active
-     */
-    public IWorkbenchPart getActivePart();
-
-    /**
-     * Returns the active part reference.
-     *
-     * @return the active part reference, or <code>null</code> if no part
-     * is currently active
-     */
-    public IWorkbenchPartReference getActivePartReference();
-
-    /**
-     * Removes the given part listener.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a part listener
-     */
-    public void removePartListener(IPartListener listener);
-
-    /**
-     * Removes the given part listener.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a part listener
-     */
-    public void removePartListener(IPartListener2 listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPathEditorInput.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPathEditorInput.java
deleted file mode 100644
index 20a0376..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPathEditorInput.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * This interface defines an editor input based on the local file system path
- * of a file.
- * <p>
- * Clients implementing this editor input interface should override
- * <code>Object.equals(Object)</code> to answer true for two inputs
- * that are the same. The <code>IWorkbenchPage.openEditor</code> APIs
- * are dependent on this to find an editor with the same input.
- * </p><p>
- * Path-oriented editors should support this as a valid input type, and
- * can allow full read-write editing of its content.
- * </p><p>
- * All editor inputs must implement the <code>IAdaptable</code> interface;
- * extensions are managed by the platform's adapter manager.
- * </p>
- *
- * @see org.eclipse.core.runtime.IPath
- * @since 3.0
- */
-public interface IPathEditorInput extends IEditorInput {
-    /**
-     * Returns the local file system path of the file underlying this editor input.
-     *
-     * @return a local file system path
-     */
-    public IPath getPath();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistable.java
deleted file mode 100644
index 22b4d6e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-
-/**
- * Objects implementing this interface are capable of saving their
- * state in an {@link IMemento}. 
- * 
- * @since 3.1
- */
-public interface IPersistable {
-    /**
-     * Saves the state of the object in the given memento.
-     *
-     * @param memento the storage area for object's state
-     */
-    public void saveState(IMemento memento);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java
deleted file mode 100755
index 07c8c46..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * An editor can implement this interface and participate in the workbench
- * session save/restore cycle using <code>IMemento</code>, similar to how
- * <code>IViewPart</code> currently works.
- * <p>
- * Refer to IWorkbenchPart for the part lifecycle.
- * </p>
- * <p>
- * If a memento is available, restoreState(*) will be inserted into the editor
- * startup.
- * <ol>
- * <li><code>editor.init(site, input)</code></li>
- * <li><code>editor.restoreState(memento)</code></li>
- * <li><code>editor.createPartControl(parent)</code></li>
- * <li>...</li>
- * </ol>
- * </p>
- * <p>
- * On workbench shutdown, the editor state will be persisted when the editor
- * references are saved.
- * </p>
- * 
- * @since 3.3
- */
-public interface IPersistableEditor extends IPersistable {
-	/**
-	 * Called with a memento for this editor. The editor can parse the data or
-	 * save the memento. This method may not be called.
-	 * 
-	 * @param memento
-	 *            the saved state for this editor. May be <code>null</code>.
-	 */
-	public void restoreState(IMemento memento);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableElement.java
deleted file mode 100644
index 04d1965..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableElement.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-
-/**
- * Interface for asking an object to store its state in a memento.
- * <p>
- * This interface is typically included in interfaces where 
- * persistance is required.
- * </p><p>
- * When the workbench is shutdown objects which implement this interface 
- * will be persisted.  At this time the <code>getFactoryId</code> method 
- * is invoked to discover the id of the element factory that will be used 
- * to re-create the object from a memento.  Then the <code>saveState</code> 
- * method is invoked to store the element data into a newly created memento. 
- * The resulting mementos are collected up and written out to a single file.
- * </p>
- * <p>
- * During workbench startup these mementos are read from the file.  The
- * factory Id for each is retrieved and mapped to an <code>IElementFactory</code> 
- * which has been registered in the element factory extension point.  If a 
- * factory exists for the Id it will be engaged to re-create the original 
- * object.
- * </p>
- *
- * @see org.eclipse.core.runtime.IAdaptable
- * @see org.eclipse.ui.IMemento
- * @see org.eclipse.ui.IElementFactory
- */
-public interface IPersistableElement extends IPersistable {
-    /**
-     * Returns the id of the element factory which should be used to re-create this
-     * object.
-     * <p>
-     * Factory ids are declared in extensions to the standard extension point
-     * <code>"org.eclipse.ui.elementFactories"</code>.
-     * </p>
-     * 
-     * @return the element factory id
-     * @see IElementFactory
-     */
-    public String getFactoryId();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveDescriptor.java
deleted file mode 100644
index 2557f92..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveDescriptor.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * A perspective descriptor describes a perspective in an
- * <code>IPerspectiveRegistry</code>.  
- * <p>
- * A perspective is a template for view visibility, layout, and action visibility
- * within a workbench page. There are two types of perspective: a predefined 
- * perspective and a custom perspective.  
- * <ul>
- *   <li>A predefined perspective is defined by an extension to the workbench's 
- *     perspective extension point (<code>"org.eclipse.ui.perspectives"</code>).
- *     The extension defines a id, label, and <code>IPerspectiveFactory</code>.
- *     A perspective factory is used to define the initial layout for a page.
- *     </li>
- *   <li>A custom perspective is defined by the user.  In this case a predefined
- *     perspective is modified to suit a particular task and saved as a new
- *     perspective.  The attributes for the perspective are stored in a separate file 
- *     in the workbench's metadata directory.
- *     </li>
- * </ul>
- * </p>
- * <p>
- * Within a page the user can open any of the perspectives known
- * to the workbench's perspective registry, typically by selecting one from the
- * workbench's <code>Open Perspective</code> menu. When selected, the views
- * and actions within the active page rearrange to reflect the perspective.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see IPerspectiveRegistry
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPerspectiveDescriptor {
-    /**
-     * Returns the description of this perspective.
-     * This is the value of its <code>"description"</code> attribute.
-     *
-     * @return the description
-     * @since 3.0
-     */
-    public String getDescription();
-
-    /**
-     * Returns this perspective's id. For perspectives declared via an extension,
-     * this is the value of its <code>"id"</code> attribute.
-     *
-     * @return the perspective id
-     */
-    public String getId();
-
-    /**
-     * Returns the descriptor of the image to show for this perspective.
-     * If the extension for this perspective specifies an image, the descriptor
-     * for it is returned.  Otherwise a default image is returned.
-     *
-     * @return the descriptor of the image to show for this perspective
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns this perspective's label. For perspectives declared via an extension,
-     * this is the value of its <code>"label"</code> attribute.
-     *
-     * @return the label
-     */
-    public String getLabel();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveFactory.java
deleted file mode 100644
index a1beabb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * A perspective factory generates the initial page layout and visible
- * action set for a page.
- * <p>
- * When a new page is created in the workbench a perspective is used to define
- * the initial page layout.  If this is a predefined perspective (based on an extension to 
- * the workbench's perspective extension point) an <code>IPerspectiveFactory</code> 
- * is used to define the initial page layout.
- * </p><p>
- * The factory for the perspective is created and passed an <code>IPageLayout</code> 
- * where views can be added.  The default layout consists of the editor area with no 
- * additional views.  Additional views are added to the layout using 
- * the editor area as the initial point of reference.  The factory is used only briefly 
- * while a new page is created; then discarded.
- * </p><p>
- * To define a perspective clients should implement this interface and 
- * include the name of their class in an extension to the workbench's perspective 
- * extension point (named <code>"org.eclipse.ui.perspectives"</code>).  For example, 
- * the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.perspectives"&GT;
- *   &LT;perspective
- *       id="com.example.javaplugin.perspective"
- *       name="Java"
- *       class="com.example.javaplugin.JavaPerspective"&GT;
- *   &LT;/perspective&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p><p>
- * Example of populating a page with standard workbench views:
- * <pre>
- * public void createInitialLayout(IPageLayout layout) {
- *		// Get the editor area.
- *		String editorArea = layout.getEditorArea();
- *
- *		// Top left: Resource Navigator view and Bookmarks view placeholder
- *		IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f,
- *			editorArea);
- *		topLeft.addView(IPageLayout.ID_RES_NAV);
- *		topLeft.addPlaceholder(IPageLayout.ID_BOOKMARKS);
- *
- *		// Bottom left: Outline view and Property Sheet view
- *		IFolderLayout bottomLeft = layout.createFolder("bottomLeft", IPageLayout.BOTTOM, 0.50f,
- *			"topLeft");
- *		bottomLeft.addView(IPageLayout.ID_OUTLINE);
- *		bottomLeft.addView(IPageLayout.ID_PROP_SHEET);
- *
- *		// Bottom right: Task List view
- *		layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.66f, editorArea);
- *	}
- * </pre>
- * </p><p>
- * Within the workbench a user may override the visible views, layout and
- * action sets of a predefined perspective to create a custom perspective.  In such cases 
- * the layout is persisted by the workbench and the factory is not used.
- * </p>
- */
-public interface IPerspectiveFactory {
-    /**
-     * Creates the initial layout for a page.
-     * <p>
-     * Implementors of this method may add additional views to a
-     * perspective.  The perspective already contains an editor folder
-     * identified by the result of <code>IPageLayout.getEditorArea()</code>.  
-     * Additional views should be added to the layout using this value as 
-     * the initial point of reference.  
-     * </p>
-     *
-     * @param layout the page layout
-     */
-    public void createInitialLayout(IPageLayout layout);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener.java
deleted file mode 100644
index 74e2016..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening to perspective lifecycle events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IPageService#addPerspectiveListener(IPerspectiveListener)
- * @see PerspectiveAdapter
- */
-public interface IPerspectiveListener {
-    /**
-     * Notifies this listener that a perspective in the given page
-     * has been activated.
-     *
-     * @param page the page containing the activated perspective
-     * @param perspective the perspective descriptor that was activated
-     * @see IWorkbenchPage#setPerspective
-     */
-    public void perspectiveActivated(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective);
-
-    /**
-     * Notifies this listener that a perspective has changed in some way 
-     * (for example, editor area hidden, perspective reset,
-     * view show/hide, editor open/close, etc).
-     *
-     * @param page the page containing the affected perspective
-     * @param perspective the perspective descriptor
-     * @param changeId one of the <code>CHANGE_*</code> constants on IWorkbenchPage
-     */
-    public void perspectiveChanged(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective, String changeId);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener2.java
deleted file mode 100644
index ee25c89..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener2.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Extension interface to <code>IPerspectiveListener</code> which 
- * adds support for listening to part-specific perspective lifecycle events.
- * For example, this allows a perspective listener to determine which view
- * is being hidden during a <code>CHANGE_VIEW_HIDE</code> event.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IPageService#addPerspectiveListener(IPerspectiveListener)
- * @see PerspectiveAdapter
- * @since 3.0
- */
-public interface IPerspectiveListener2 extends IPerspectiveListener {
-
-    /**
-     * Notifies this listener that a part in the given page's perspective
-     * has changed in some way (for example, view show/hide, editor open/close, etc).
-     *
-     * @param page the workbench page containing the perspective
-     * @param perspective the descriptor for the changed perspective
-     * @param partRef the reference to the affected part
-     * @param changeId one of the <code>CHANGE_*</code> constants on IWorkbenchPage
-     */
-    public void perspectiveChanged(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective,
-            IWorkbenchPartReference partRef, String changeId);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener3.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener3.java
deleted file mode 100644
index 27e51c2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener3.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Extension interface to <code>IPerspectiveListener</code> which 
- * adds support for listening to perspective open and close events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IPageService#addPerspectiveListener(IPerspectiveListener)
- * @see PerspectiveAdapter
- * @since 3.1
- */
-public interface IPerspectiveListener3 extends IPerspectiveListener2 {
-
-    /**
-     * Notifies this listener that a perspective in the given page has been
-     * opened.
-     * 
-     * @param page
-     *            the page containing the opened perspective
-     * @param perspective
-     *            the perspective descriptor that was opened
-     * @see IWorkbenchPage#setPerspective(IPerspectiveDescriptor)
-     */
-    public void perspectiveOpened(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective);
-
-    /**
-     * Notifies this listener that a perspective in the given page has been
-     * closed.
-     * 
-     * @param page
-     *            the page containing the closed perspective
-     * @param perspective
-     *            the perspective descriptor that was closed
-     * @see IWorkbenchPage#closePerspective(IPerspectiveDescriptor, boolean, boolean)
-     * @see IWorkbenchPage#closeAllPerspectives(boolean, boolean)
-     */
-    public void perspectiveClosed(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective);
-
-    /**
-     * Notifies this listener that a perspective in the given page has been
-     * deactivated.
-     * 
-     * @param page
-     *            the page containing the deactivated perspective
-     * @param perspective
-     *            the perspective descriptor that was deactivated
-     * @see IWorkbenchPage#setPerspective(IPerspectiveDescriptor)
-     */
-    public void perspectiveDeactivated(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective);
-
-    /**
-     * Notifies this listener that a perspective in the given page has been
-     * saved as a new perspective with a different perspective descriptor.
-     * 
-     * @param page
-     *            the page containing the saved perspective
-     * @param oldPerspective
-     *            the old perspective descriptor
-     * @param newPerspective
-     *            the new perspective descriptor
-     * @see IWorkbenchPage#savePerspectiveAs(IPerspectiveDescriptor)
-     */
-    public void perspectiveSavedAs(IWorkbenchPage page,
-            IPerspectiveDescriptor oldPerspective,
-            IPerspectiveDescriptor newPerspective);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener4.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener4.java
deleted file mode 100644
index 1607422..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveListener4.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Extension interface to <code>IPerspectiveListener</code> which adds support
- * for listening to perspective pre-deactivate events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @see IPageService#addPerspectiveListener(IPerspectiveListener)
- * @see PerspectiveAdapter
- * @since 3.2
- * 
- */
-public interface IPerspectiveListener4 extends IPerspectiveListener3 {
-	/**
-	 * <p>
-	 * Notifies this listener that a perspective in the given page is about to
-	 * be deactivated.
-	 * </p>
-	 * <p>
-	 * Note: This does not have the ability to veto a perspective deactivation.
-	 * </p>
-	 * 
-	 * @param page
-	 *            the page containing the deactivated perspective
-	 * @param perspective
-	 *            the perspective descriptor that was deactivated
-	 * @see IWorkbenchPage#setPerspective(IPerspectiveDescriptor)
-	 */
-	public void perspectivePreDeactivate(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveRegistry.java
deleted file mode 100644
index e4ffc9b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPerspectiveRegistry.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * The workbench's global registry of perspectives. 
- * <p>
- * This registry contains a descriptor for each perspectives in the workbench.
- * It is initially populated with stock perspectives from the workbench's 
- * perspective extension point (<code>"org.eclipse.ui.perspectives"</code>) and 
- * with custom perspectives defined by the user.
- * </p><p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see IWorkbench#getPerspectiveRegistry
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPerspectiveRegistry {
-    /**
-     * Clones an existing perspective.
-     * 
-     * @param id the id for the cloned perspective, which must not already be used by 
-     *   any registered perspective
-     * @param label the label assigned to the cloned perspective
-     * @param desc the perspective to clone
-     * @return the cloned perspective descriptor
-     * @throws IllegalArgumentException if there is already a perspective with the given id 
-     * 
-     * @since 3.0
-     */
-    public IPerspectiveDescriptor clonePerspective(String id, String label,
-            IPerspectiveDescriptor desc) throws IllegalArgumentException;
-
-	/**
-	 * Deletes a perspective. Has no effect if the perspective is defined in an
-	 * extension.
-	 * 
-	 * @param persp the perspective to delete
-	 * @since 3.2
-	 */
-	public void deletePerspective(IPerspectiveDescriptor persp);
-    
-    /**
-     * Finds and returns the registered perspective with the given perspective id.
-     *
-     * @param perspectiveId the perspective id 
-     * @return the perspective, or <code>null</code> if none
-     * @see IPerspectiveDescriptor#getId
-     */
-    public IPerspectiveDescriptor findPerspectiveWithId(String perspectiveId);
-
-    /**
-     * Finds and returns the registered perspective with the given label.
-     *
-     * @param label the label
-     * @return the perspective, or <code>null</code> if none
-     * @see IPerspectiveDescriptor#getLabel
-     */
-    public IPerspectiveDescriptor findPerspectiveWithLabel(String label);
-
-    /**
-     * Returns the id of the default perspective for the workbench.  This identifies one
-     * perspective extension within the workbench's perspective registry.
-     * <p>
-     * Returns <code>null</code> if there is no default perspective.
-     * </p> 
-     *
-     * @return the default perspective id, or <code>null</code>
-     */
-    public String getDefaultPerspective();
-
-    /**
-     * Returns a list of the perspectives known to the workbench.
-     *
-     * @return a list of perspectives
-     */
-    public IPerspectiveDescriptor[] getPerspectives();
-
-    /**
-     * Sets the default perspective for the workbench to the given perspective id.
-     * If non-<code>null</code>, the id must correspond to a perspective extension 
-     * within the workbench's perspective registry.
-     * <p>
-     * A <code>null</code> id indicates no default perspective.
-     * </p>
-     *
-     * @param id a perspective id, or <code>null</code>
-     */
-    public void setDefaultPerspective(String id);
-
-    /**
-     * Reverts a perspective back to its original definition
-     * as specified in the plug-in manifest.
-     * 
-     * @param perspToRevert the perspective to revert  
-     * 
-     * @since 3.0
-     */
-    public void revertPerspective(IPerspectiveDescriptor perspToRevert);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPlaceholderFolderLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPlaceholderFolderLayout.java
deleted file mode 100644
index 620d931..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPlaceholderFolderLayout.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * An <code>IPlaceholderFolderLayout</code> is used to define the initial
- * view placeholders within a folder. 
- * The folder itself is contained within an <code>IPageLayout</code>.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- *
- * @see IPageLayout#createPlaceholderFolder
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPlaceholderFolderLayout {
-	
-    /**
-     * Adds a view placeholder to this folder.
-     * A view placeholder is used to define the position of a view before the view
-     * appears.  Initially, it is invisible; however, if the user ever opens a view
-     * whose compound id matches the placeholder, the view will appear at the same
-     * location as the placeholder.  
-     * See the {@link IPageLayout} type documentation for more details about compound ids.
-     * If the placeholder contains wildcards, it remains in the layout, otherwise 
-     * it is replaced by the view.
-     * If the primary id of the placeholder has no wildcards, it must refer to a view 
-     * contributed to the workbench's view extension point 
-     * (named <code>"org.eclipse.ui.views"</code>).
-     *
-     * @param viewId the compound view id (wildcards allowed)
-     */
-    public void addPlaceholder(String viewId);
-    
-    /**
-	 * Returns the property with the given id or <code>null</code>. Folder
-	 * properties are an extensible mechanism for perspective authors to
-	 * customize the appearance of view stacks. The list of customizable
-	 * properties is determined by the presentation factory.
-	 * 
-	 * @param id
-	 *            Must not be <code>null</code>.
-	 * @return property value, or <code>null</code> if the property is not
-	 *         set.
-	 * @since 3.3
-	 */
-    public String getProperty(String id);
-    
-    /**
-	 * Sets the given property to the given value. Folder properties are an
-	 * extensible mechanism for perspective authors to customize the appearance
-	 * of view stacks. The list of customizable properties is determined by the
-	 * presentation factory.
-	 * <p>
-	 * These folder properties are intended to be set during
-	 * <code>IPerspectiveFactory#createInitialLayout</code>. Any subsequent
-	 * changes to property values after this method completes will not fire
-	 * change notifications and will not be reflected in the presentation.
-	 * </p>
-	 * 
-	 * @param id
-	 *            property id. Must not be <code>null</code>.
-	 * @param value
-	 *            property value. <code>null</code> will clear the property.
-	 * @since 3.3
-	 */
-    public void setProperty(String id, String value);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPluginContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPluginContribution.java
deleted file mode 100644
index 8825ae5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPluginContribution.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * An interface that descriptor classes may implement in addition to their
- * descriptor interface. This indicates that they may or may not originate from
- * a plugin contribution. This is useful in various activity filtering
- * scenarios.
- * 
- * @since 3.0
- */
-public interface IPluginContribution {
-
-    /**
-     * @return the local id of the contribution. Must not be <code>null</code>.
-     *         This should correspond to the extension-specific identifier for
-     *         a given contribution.
-     */
-    public String getLocalId();
-
-    /**
-     * @return the id of the originating plugin. Can be <code>null</code> if
-     *         this contribution did not originate from a plugin.
-     */
-    public String getPluginId();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPropertyListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPropertyListener.java
deleted file mode 100644
index bd26d68..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPropertyListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening for property changes on an object.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IWorkbenchPart#addPropertyListener
- */
-public interface IPropertyListener {
-    /**
-     * Indicates that a property has changed.
-     *
-     * @param source the object whose property has changed
-     * @param propId the id of the property which has changed; property ids
-     *   are generally defined as constants on the source class
-     */
-    public void propertyChanged(Object source, int propId);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IReusableEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IReusableEditor.java
deleted file mode 100644
index 470fda6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IReusableEditor.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for reusable editors. 
- * 
- * An editors may support changing its input so that 
- * the workbench may change its contents instead of 
- * opening a new editor.
- */
-public interface IReusableEditor extends IEditorPart {
-    /**
-     * Sets the input to this editor.
-     * 
-     * <p><b>Note:</b> Clients must fire the {@link IEditorPart#PROP_INPUT } 
-     * property change within their implementation of 
-     * <code>setInput()</code>.<p>
-     *
-     * @param input the editor input
-     */
-    public void setInput(IEditorInput input);
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveableFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveableFilter.java
deleted file mode 100644
index 6a60135..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveableFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * A filter for selecting Saveables.
- * @see IWorkbench#saveAll(org.eclipse.jface.window.IShellProvider, org.eclipse.jface.operation.IRunnableContext, ISaveableFilter, boolean)
- * @since 3.3
- */
-public interface ISaveableFilter {
-	
-	/**
-	 * Indicate whether the given saveable matches this filter.
-	 * @param saveable the saveable being tested
-	 * @param containingParts the parts that contain the saveable. This list may 
-	 *    contain zero or more parts.
-	 * @return whether the given saveable matches this filter
-	 */
-	public boolean select(Saveable saveable, IWorkbenchPart[] containingParts);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart.java
deleted file mode 100644
index bdd288c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * Workbench parts implement or adapt to this interface to participate
- * in the enablement and execution of the <code>Save</code> and
- * <code>Save As</code> actions.
- * 
- * @since 2.1
- * @see org.eclipse.ui.IEditorPart  
- */
-public interface ISaveablePart {
-
-    /**
-     * The property id for <code>isDirty</code>.
-     */
-    public static final int PROP_DIRTY = IWorkbenchPartConstants.PROP_DIRTY;
-
-    /**
-     * Saves the contents of this part.
-     * <p>
-     * If the save is successful, the part should fire a property changed event 
-     * reflecting the new dirty state (<code>PROP_DIRTY</code> property).
-     * </p>
-     * <p>
-     * If the save is cancelled through user action, or for any other reason, the
-     * part should invoke <code>setCancelled</code> on the <code>IProgressMonitor</code>
-     * to inform the caller.
-     * </p>
-     * <p>
-     * This method is long-running; progress and cancellation are provided
-     * by the given progress monitor. 
-     * </p>
-     *
-     * @param monitor the progress monitor
-     */
-    public void doSave(IProgressMonitor monitor);
-
-    /**
-     * Saves the contents of this part to another object.
-     * <p>
-     * Implementors are expected to open a "Save As" dialog where the user will
-     * be able to select a new name for the contents. After the selection is made,
-     * the contents should be saved to that new name.  During this operation a
-     * <code>IProgressMonitor</code> should be used to indicate progress.
-     * </p>
-     * <p>
-     * If the save is successful, the part fires a property changed event 
-     * reflecting the new dirty state (<code>PROP_DIRTY</code> property).
-     * </p>
-     */
-    public void doSaveAs();
-
-    /**
-     * Returns whether the contents of this part have changed since the last save
-     * operation. If this value changes the part must fire a property listener 
-     * event with <code>PROP_DIRTY</code>.
-     * <p>
-     * <b>Note:</b> this method is called often on a part open or part
-     * activation switch, for example by actions to determine their 
-     * enabled status.
-     * </p>
-     *
-     * @return <code>true</code> if the contents have been modified and need
-     *   saving, and <code>false</code> if they have not changed since the last
-     *   save
-     */
-    public boolean isDirty();
-
-    /**
-     * Returns whether the "Save As" operation is supported by this part.
-     *
-     * @return <code>true</code> if "Save As" is supported, and <code>false</code>
-     *  if not supported
-     */
-    public boolean isSaveAsAllowed();
-
-    /**
-     * Returns whether the contents of this part should be saved when the part
-     * is closed.
-     *
-     * @return <code>true</code> if the contents of the part should be saved on
-     *   close, and <code>false</code> if the contents are expendable
-     */
-    public boolean isSaveOnCloseNeeded();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart2.java
deleted file mode 100644
index d4ee727..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablePart2.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Workbench parts implement or adapt to this interface to participate
- * in actions that require a prompt for the user to provide input on 
- * what to do with unsaved data when the part is closed or the Workbench
- * is shut down.
- * <p>
- * Note that if a part implements this interface, it is excluded from the
- * common "prompt to save" dialog, and instead opens its own dialog.  This may
- * cause multiple prompts to the end user during a single user operation.
- * Implementors should be aware that this may lead to a less than optimal
- * user experience.
- * </p>
- *  
- * @since 3.1
- */
-public interface ISaveablePart2 extends ISaveablePart {
-	
-	/**
-	 * Standard return code constant (value 0) indicating that the part
-	 * needs to be saved.
-	 */
-	public static final int YES = 0;
-	
-	/**
-	 * Standard return code constant (value 1) indicating that the part
-	 * does not need to be saved and the part should be closed.
-	 */
-	public static final int NO = 1;
-	
-	/**
-	 * Standard return code constant (value 2) indicating that the part
-	 * does not need to be saved and the part should not be closed.
-	 */
-	public static final int CANCEL = 2;
-	
-	/**
-	 * Standard return code constant (value 3) indicating that the default
-	 * behavior for prompting the user to save will be use.
-	 */
-	public static final int DEFAULT = 3;
-		
-    /**
-     * Prompts the user for input on what to do with unsaved data.  
-     * This method is only called when the part is closed or when
-     * the Workbench is shutting down.
-     * <p>
-     * Implementors are expected to open a custom dialog where the 
-     * user will be able to determine what to do with the unsaved data.
-     * Implementors may also return a result of <code>DEFAULT</code> 
-     * to get the default prompt handling from the Workbench.
-     * </p>
-     * 
-	 * @return the return code, must be either <code>YES</code>, 
-	 * <code>NO</code>, <code>CANCEL</code> or <code>DEFAULT</code>.
-	 */
-	public int promptToSaveOnClose();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesLifecycleListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesLifecycleListener.java
deleted file mode 100644
index c9ecf92..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesLifecycleListener.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Listener for events fired by implementers of {@link ISaveablesSource}.
- * 
- * <p>
- * This service can be acquired from a part's service locator:
- * 
- * <pre>
- * ISaveablesLifecycleListener listener = (ISaveablesLifecycleListener) getSite()
- * 		.getService(ISaveablesLifecycleListener.class);
- * </pre>
- * 
- * or, in the case of implementers of {@link ISaveablesSource} that are not a
- * part, from the workbench:
- * 
- * <pre>
- * ISaveablesLifecycleListener listener = (ISaveablesLifecycleListener) workbench
- * 		.getService(ISaveablesLifecycleListener.class);
- * </pre>
- * 
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @since 3.2
- */
-public interface ISaveablesLifecycleListener {
-
-	/**
-	 * Handle the given event. This method must be called on the UI thread.
-	 * 
-	 * @param event
-	 */
-	public void handleLifecycleEvent(SaveablesLifecycleEvent event);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesSource.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesSource.java
deleted file mode 100644
index 65014ec..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISaveablesSource.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.ui.part.EditorPart;
-
-/**
- * Represents a source of Saveable objects (units of saveability). Workbench
- * parts that show more than one unit of saveability, or whose units of
- * saveability change over time, should implement this interface in order to
- * provide better integration with workbench facilities like the Save command,
- * prompts to save on part close or shutdown, etc.
- * <p>
- * IMPORTANT: As of 3.2, implementers of <code>ISaveablesSource</code> must
- * satisfy the following conditions:
- * <ul>
- * <li>If ISaveablesSource is implemented by an IWorkbenchPart:
- * <ul>
- * <li>the part must implement <code>ISaveablePart</code></li>
- * <li>if any of its Saveable objects are dirty, the part must return
- * <code>true</code> from {@link ISaveablePart#isDirty()}</li>
- * <li>the part must return <code>true</code> from
- * {@link ISaveablePart#isSaveOnCloseNeeded()} if it is dirty (the default
- * behaviour implemented by {@link EditorPart})</li>
- * <li>the part must not implement {@link ISaveablePart2}</li>
- * </ul>
- * </li>
- * <li>If ISaveablesSource is implemented by a non-part (possible as of 3.2.1 and 3.3):
- * <ul>
- * <li>the Workbench's {@link ISaveablesLifecycleListener} (obtained from the
- * Workbench by calling
- * <code>workbench.getService(ISaveablesLifecycleListener.class)</code>) must
- * be notified of any change to the result of {@link #getSaveables()} </li>
- * <li>getActiveSaveables() should be implemented to return an empty array
- * </li>
- * </ul>
- * </ul>
- * If any of these conditions are not met, it is undefined whether the Workbench
- * will prompt to save dirty Saveables when closing parts or the Workbench.
- * </p>
- * <p>
- * These conditions may be relaxed in future releases.
- * </p>
- * 
- * @since 3.2
- */
-public interface ISaveablesSource {
-
-	/**
-	 * Returns the saveables presented by the workbench part. If the return
-	 * value of this method changes during the lifetime of
-	 * this part (i.e. after initialization and control creation but before disposal)
-	 * the part must notify an implicit listener using
-	 * {@link ISaveablesLifecycleListener#handleLifecycleEvent(SaveablesLifecycleEvent)}.
-	 * <p>
-	 * Additions of saveables to the list of saveables of this part are
-	 * announced using an event of type
-	 * {@link SaveablesLifecycleEvent#POST_OPEN}. Removals are announced in a
-	 * two-stage process, first using an event of type
-	 * {@link SaveablesLifecycleEvent#PRE_CLOSE} followed by an event of type
-	 * {@link SaveablesLifecycleEvent#POST_CLOSE}. Since firing the
-	 * <code>PRE_CLOSE</code> event may trigger prompts to save dirty
-	 * saveables, the cancellation status of the event must be checked by the
-	 * part after the notification. When removing only non-dirty saveables,
-	 * <code>POST_CLOSE</code> notification is sufficient.
-	 * </p>
-	 * <p>
-	 * The listener is obtained from the part site by calling
-	 * <code>partSite.getService(ISaveablesLifecycleListener.class)</code>.
-	 * </p>
-	 * <p>
-	 * The part must not notify from its initialization methods (e.g. <code>init</code>
-	 * or <code>createPartControl</code>), or from its dispose method. Parts that
-	 * implement {@link IReusableEditor} must notify when their input is changed
-	 * through {@link IReusableEditor#setInput(IEditorInput)}.
-	 * </p>
-	 * 
-	 * @return the saveables presented by the workbench part
-	 * 
-	 * @see ISaveablesLifecycleListener
-	 */
-	Saveable[] getSaveables();
-
-	/**
-	 * Returns the saveables currently active in the workbench part.
-	 * <p>
-	 * Certain workbench actions, such as Save, target only the active saveables
-	 * in the active part. For example, the active saveables could be determined
-	 * based on the current selection in the part.
-	 * </p>
-	 * 
-	 * @return the saveables currently active in the workbench part
-	 */
-	Saveable[] getActiveSaveables();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionListener.java
deleted file mode 100644
index a9d07c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import java.util.EventListener;
-
-import org.eclipse.jface.viewers.ISelection;
-
-/**
- * Interface for listening to selection changes.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see ISelectionService#addSelectionListener(ISelectionListener)
- * @see ISelectionService#addSelectionListener(String, ISelectionListener)
- * @see org.eclipse.ui.INullSelectionListener
- */
-public interface ISelectionListener extends EventListener {
-    /**
-     * Notifies this listener that the selection has changed.
-     * <p>
-     * This method is called when the selection changes from one to a 
-     * <code>non-null</code> value, but not when the selection changes to 
-     * <code>null</code>. If there is a requirement to be notified in the latter 
-     * scenario, implement <code>INullSelectionListener</code>. The event will
-     * be posted through this method.
-     * </p>
-     *
-     * @param part the workbench part containing the selection
-     * @param selection the current selection. This may be <code>null</code> 
-     * 		if <code>INullSelectionListener</code> is implemented.
-     */
-    public void selectionChanged(IWorkbenchPart part, ISelection selection);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionService.java
deleted file mode 100644
index e46b382..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISelectionService.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.viewers.ISelection;
-
-/**
- * A selection service tracks the selection within an object.
- * <p>
- * A listener that wants to be notified when the selection becomes
- * <code>null</code> must implement the <code>INullSelectionListener</code>
- * interface.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	ISelectionService service = (ISelectionService) getSite().getService(ISelectionService.class);
- * </pre>
- * <ul>
- * <li>This service is not available globally, only from the workbench window level down.</li>
- * </ul>
- * </p>
- * 
- * @see org.eclipse.ui.ISelectionListener
- * @see org.eclipse.ui.INullSelectionListener
- * @see org.eclipse.ui.services.IServiceLocator#getService(Class)
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ISelectionService {
-    /**
-     * Adds the given selection listener.
-     * Has no effect if an identical listener is already registered.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param listener a selection listener
-     * @see #removeSelectionListener(ISelectionListener)
-     */
-    public void addSelectionListener(ISelectionListener listener);
-
-    /**
-     * Adds a part-specific selection listener which is notified when selection changes
-     * in the part with the given id. This is independent of part activation - the part
-     * need not be active for notification to be sent.
-     * <p>
-     * When the part is created, the listener is passed the part's initial selection.
-     * When the part is disposed, the listener is passed a <code>null</code> selection,
-     * but only if the listener implements <code>INullSelectionListener</code>.
-     * </p>
-     * <p>
-     * Note: This will not correctly track editor parts as each editor does 
-     * not have a unique partId.
-     * </p>
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param partId the id of the part to track
-     * @param listener a selection listener
-     * @since 2.0
-     * @see #removeSelectionListener(String, ISelectionListener)
-     */
-    public void addSelectionListener(String partId, ISelectionListener listener);
-
-    /**
-     * Adds the given post selection listener.It is equivalent to selection 
-     * changed if the selection was triggered by the mouse but it has a 
-     * delay if the selection is triggered by the keyboard arrows.
-     * Has no effect if an identical listener is already registered.
-     * 
-     * Note: Works only for StructuredViewer(s).
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param listener a selection listener
-     * @see #removePostSelectionListener(ISelectionListener)
-     */
-    public void addPostSelectionListener(ISelectionListener listener);
-
-    /**
-     * Adds a part-specific selection listener which is notified when selection changes
-     * in the part with the given id. This is independent of part activation - the part
-     * need not be active for notification to be sent.
-     * <p>
-     * When the part is created, the listener is passed the part's initial selection.
-     * When the part is disposed, the listener is passed a <code>null</code> selection,
-     * but only if the listener implements <code>INullSelectionListener</code>.
-     * </p>
-     * <p>
-     * Note: This will not correctly track editor parts as each editor does 
-     * not have a unique partId.
-     * </p>
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-     *
-     * @param partId the id of the part to track
-     * @param listener a selection listener
-     * @since 2.0
-     * @see #removePostSelectionListener(String, ISelectionListener)
-     */
-    public void addPostSelectionListener(String partId,
-            ISelectionListener listener);
-
-    /**
-     * Returns the current selection in the active part.  If the selection in the
-     * active part is <em>undefined</em> (the active part has no selection provider)
-     * the result will be <code>null</code>.
-     *
-     * @return the current selection, or <code>null</code> if undefined
-     */
-    public ISelection getSelection();
-
-    /**
-     * Returns the current selection in the part with the given id.  If the part is not open,
-     * or if the selection in the active part is <em>undefined</em> (the active part has no selection provider)
-     * the result will be <code>null</code>.
-     *
-     * @param partId the id of the part
-     * @return the current selection, or <code>null</code> if undefined
-     * @since 2.0
-     */
-    public ISelection getSelection(String partId);
-
-    /**
-     * Removes the given selection listener.
-     * Has no effect if an identical listener is not registered.
-     *
-     * @param listener a selection listener
-     */
-    public void removeSelectionListener(ISelectionListener listener);
-
-    /**
-     * Removes the given part-specific selection listener.
-     * Has no effect if an identical listener is not registered for the given part id.
-     *
-     * @param partId the id of the part to track
-     * @param listener a selection listener
-     * @since 2.0
-     */
-    public void removeSelectionListener(String partId,
-            ISelectionListener listener);
-
-    /**
-     * Removes the given post selection listener.
-     * Has no effect if an identical listener is not registered.
-     *
-     * @param listener a selection listener
-     */
-    public void removePostSelectionListener(ISelectionListener listener);
-
-    /**
-     * Removes the given part-specific post selection listener.
-     * Has no effect if an identical listener is not registered for the given part id.
-     *
-     * @param partId the id of the part to track
-     * @param listener a selection listener
-     * @since 2.0
-     */
-    public void removePostSelectionListener(String partId,
-            ISelectionListener listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISharedImages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISharedImages.java
deleted file mode 100644
index 4eae36c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISharedImages.java
+++ /dev/null
@@ -1,488 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A registry for common images used by the workbench which may be useful 
- * to other plug-ins.
- * <p>
- * This class provides <code>Image</code> and <code>ImageDescriptor</code>s
- * for each named image in the interface.  All <code>Image</code> objects provided 
- * by this class are managed by this class and must never be disposed 
- * by other clients.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ISharedImages {
-    /**
-     * Identifies the error overlay image.
-     * @since 3.4
-     */
-    public final static String IMG_DEC_FIELD_ERROR = "IMG_DEC_FIELD_ERROR"; //$NON-NLS-1$
-
-    /**
-     * Identifies the warning overlay image.
-     * @since 3.4
-     */
-    public final static String IMG_DEC_FIELD_WARNING = "IMG_DEC_FIELD_WARNING"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default image used for views.
-     */
-    public final static String IMG_DEF_VIEW = "IMG_DEF_VIEW"; //$NON-NLS-1$
-
-    /**
-     * Identifies the collapse all image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_COLLAPSEALL = "IMG_ELCL_COLLAPSEALL"; //$NON-NLS-1$
-
-    /**
-     * Identifies the collapse all image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_COLLAPSEALL_DISABLED = "IMG_ELCL_COLLAPSEALL_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the remove image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_REMOVE = "IMG_ELCL_REMOVE"; //$NON-NLS-1$
-
-    /**
-     * Identifies the remove image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_REMOVE_DISABLED = "IMG_ELCL_REMOVE_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the remove all image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_REMOVEALL = "IMG_ELCL_REMOVEALL"; //$NON-NLS-1$
-
-    /**
-     * Identifies the remove all image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_REMOVEALL_DISABLED = "IMG_ELCL_REMOVEALL_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the stop image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_STOP = "IMG_ELCL_STOP"; //$NON-NLS-1$
-
-    /**
-     * Identifies the stop image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_STOP_DISABLED = "IMG_ELCL_STOP_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the synchronize image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_SYNCED = "IMG_ELCL_SYNCED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the synchronize image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ELCL_SYNCED_DISABLED = "IMG_ELCL_SYNCED_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the clear image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_CLEAR = "IMG_ETOOL_CLEAR"; //$NON-NLS-1$
-
-    /**
-     * Identifies the clear image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_CLEAR_DISABLED = "IMG_ETOOL_CLEAR_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default perspective image.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_DEF_PERSPECTIVE = "IMG_ETOOL_DEF_PERSPECTIVE"; //$NON-NLS-1$
-
-    /**
-     * Identifies the delete image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_DELETE = "IMG_ETOOL_DELETE"; //$NON-NLS-1$
-
-    /**
-     * Identifies the delete image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_DELETE_DISABLED = "IMG_ETOOL_DELETE_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the home image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_HOME_NAV = "IMG_ETOOL_HOME_NAV"; //$NON-NLS-1$
-
-    /**
-     * Identifies the home image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_HOME_NAV_DISABLED = "IMG_ETOOL_HOME_NAV_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the print image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_PRINT_EDIT = "IMG_ETOOL_PRINT_EDIT"; //$NON-NLS-1$
-
-    /**
-     * Identifies the print image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_PRINT_EDIT_DISABLED = "IMG_ETOOL_PRINT_EDIT_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the save image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_SAVE_EDIT = "IMG_ETOOL_SAVE_EDIT"; //$NON-NLS-1$
-
-    /**
-     * Identifies the save image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_SAVE_EDIT_DISABLED = "IMG_ETOOL_SAVE_EDIT_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the save all image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_SAVEALL_EDIT = "IMG_ETOOL_SAVEALL_EDIT"; //$NON-NLS-1$
-
-    /**
-     * Identifies the save all image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_SAVEALL_EDIT_DISABLED = "IMG_ETOOL_SAVEALL_EDIT_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the save as image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_SAVEAS_EDIT = "IMG_ETOOL_SAVEAS_EDIT"; //$NON-NLS-1$
-
-    /**
-     * Identifies the save as image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_ETOOL_SAVEAS_EDIT_DISABLED = "IMG_ETOOL_SAVEAS_EDIT_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the help image.
-     * @since 3.4
-     */
-    public final static String IMG_LCL_LINKTO_HELP = "IMG_LCL_LINKTO_HELP"; //$NON-NLS-1$
-
-    /**
-     * Identifies the add image.
-     * @since 3.4
-     */
-    public final static String IMG_OBJ_ADD = "IMG_OBJ_ADD"; //$NON-NLS-1$
-
-    /**
-     * Identifies an element image.
-     */
-    public final static String IMG_OBJ_ELEMENT = "IMG_OBJ_ELEMENTS"; //$NON-NLS-1$
-
-    /**
-     * Identifies a file image.
-     */
-    public final static String IMG_OBJ_FILE = "IMG_OBJ_FILE"; //$NON-NLS-1$
-
-    /**
-     * Identifies a folder image.
-     */
-    public final static String IMG_OBJ_FOLDER = "IMG_OBJ_FOLDER"; //$NON-NLS-1$
-
-    /**
-     * Identifies a project image.
-     * 
-     * @deprecated in 3.0. This image is IDE-specific, and is therefore found
-     * only in IDE configurations. IDE-specific tools should use 
-     * <code>org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJ_PROJECT</code> instead.
-     */
-    public final static String IMG_OBJ_PROJECT = "IMG_OBJ_PROJECT"; //$NON-NLS-1$
-
-    /**
-     * Identifies a closed project image.
-     * 
-     * @deprecated in 3.0. This image is IDE-specific, and is therefore found
-     * only in IDE configurations. IDE-specific tools should use 
-     * <code>org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED</code> instead.
-     */
-    public final static String IMG_OBJ_PROJECT_CLOSED = "IMG_OBJ_PROJECT_CLOSED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default image used to indicate a bookmark.
-     * 
-     * @deprecated in 3.0. This image is IDE-specific, and is therefore found
-     * only in IDE configurations. IDE-specific tools should use 
-     * <code>org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJS_BKMRK_TSK</code> instead.
-     */
-    public final static String IMG_OBJS_BKMRK_TSK = "IMG_OBJS_BKMRK_TSK"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default image used to indicate errors.
-     */
-    public final static String IMG_OBJS_ERROR_TSK = "IMG_OBJS_ERROR_TSK"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default image used to indicate information only.
-     */
-    public final static String IMG_OBJS_INFO_TSK = "IMG_OBJS_INFO_TSK"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default image used to indicate a task.
-     * 
-     * @deprecated in 3.0. This image is IDE-specific, and is therefore found
-     * only in IDE configurations. IDE-specific tools should use 
-     * <code>org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJS_TASK_TSK</code> instead.
-     */
-    public final static String IMG_OBJS_TASK_TSK = "IMG_OBJS_TASK_TSK"; //$NON-NLS-1$
-
-    /**
-     * Identifies the default image used to indicate warnings.
-     */
-    public final static String IMG_OBJS_WARN_TSK = "IMG_OBJS_WARN_TSK"; //$NON-NLS-1$
-
-    /**
-     * Identifies the image used for "open marker".
-     * 
-     * @deprecated in 3.0. This image is IDE-specific, and is therefore found
-     * only in IDE configurations. IDE-specific tools should use 
-     * <code>org.eclipse.ui.ide.IDE.SharedImages.IMG_OPEN_MARKER</code> instead.
-     */
-    public final static String IMG_OPEN_MARKER = "IMG_OPEN_MARKER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the back image in the enabled state.
-     */
-    public final static String IMG_TOOL_BACK = "IMG_TOOL_BACK"; //$NON-NLS-1$
-    
-    /**
-     * Identifies the back image in the disabled state.
-     */
-    public final static String IMG_TOOL_BACK_DISABLED = "IMG_TOOL_BACK_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the back image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_BACK</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_BACK_HOVER = "IMG_TOOL_BACK_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the copy image in the enabled state.
-     */
-    public final static String IMG_TOOL_COPY = "IMG_TOOL_COPY"; //$NON-NLS-1$
-
-    /**
-     * Identifies the copy image in the disabled state.
-     */
-    public final static String IMG_TOOL_COPY_DISABLED = "IMG_TOOL_COPY_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the copy image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_COPY</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_COPY_HOVER = "IMG_TOOL_COPY_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the cut image in the enabled state.
-     */
-    public final static String IMG_TOOL_CUT = "IMG_TOOL_CUT"; //$NON-NLS-1$
-
-    /**
-     * Identifies the cut image in the disabled state.
-     */
-    public final static String IMG_TOOL_CUT_DISABLED = "IMG_TOOL_CUT_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the cut image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_CUT</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_CUT_HOVER = "IMG_TOOL_CUT_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the delete image in the enabled state.
-     * @since 3.4
-     */
-    public final static String IMG_TOOL_DELETE = "IMG_TOOL_DELETE"; //$NON-NLS-1$
-
-    /**
-     * Identifies the delete image in the disabled state.
-     * @since 3.4
-     */
-    public final static String IMG_TOOL_DELETE_DISABLED = "IMG_TOOL_DELETE_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the delete image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_DELETE</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_DELETE_HOVER = "IMG_TOOL_DELETE_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the forward image in the enabled state.
-     */
-    public final static String IMG_TOOL_FORWARD = "IMG_TOOL_FORWARD"; //$NON-NLS-1$
-
-    /**
-     * Identifies the forward image in the disabled state.
-     */
-    public final static String IMG_TOOL_FORWARD_DISABLED = "IMG_TOOL_FORWARD_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the forward image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_FORWARD</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_FORWARD_HOVER = "IMG_TOOL_FORWARD_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the new wizard image in the enabled state.
-     */
-    public final static String IMG_TOOL_NEW_WIZARD = "IMG_TOOL_NEW_WIZARD"; //$NON-NLS-1$
-
-    /**
-     * Identifies the new wizard image in the disabled state.
-     */
-    public final static String IMG_TOOL_NEW_WIZARD_DISABLED = "IMG_TOOL_NEW_WIZARD_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the new wizard image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_NEW_WIZARD</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_NEW_WIZARD_HOVER = "IMG_TOOL_NEW_WIZARD_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the paste image in the enabled state.
-     */
-    public final static String IMG_TOOL_PASTE = "IMG_TOOL_PASTE"; //$NON-NLS-1$
-
-    /**
-     * Identifies the paste image in the disabled state.
-     */
-    public final static String IMG_TOOL_PASTE_DISABLED = "IMG_TOOL_PASTE_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the paste image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_PASTE</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_PASTE_HOVER = "IMG_TOOL_PASTE_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the redo image in the enabled state.
-     */
-    public final static String IMG_TOOL_REDO = "IMG_TOOL_REDO"; //$NON-NLS-1$
-
-    /**
-     * Identifies the redo image in the disabled state.
-     */
-    public final static String IMG_TOOL_REDO_DISABLED = "IMG_TOOL_REDO_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the redo image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_REDO</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_REDO_HOVER = "IMG_TOOL_REDO_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the undo image in the enabled state.
-     */
-    public final static String IMG_TOOL_UNDO = "IMG_TOOL_UNDO"; //$NON-NLS-1$
-
-    /**
-     * Identifies the undo image in the disabled state.
-     */
-    public final static String IMG_TOOL_UNDO_DISABLED = "IMG_TOOL_UNDO_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the undo image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_UNDO</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_UNDO_HOVER = "IMG_TOOL_UNDO_HOVER"; //$NON-NLS-1$
-
-    /**
-     * Identifies the up image in the enabled state.
-     */
-    public final static String IMG_TOOL_UP = "IMG_TOOL_UP"; //$NON-NLS-1$
-
-    /**
-     * Identifies the up image in the disabled state.
-     */
-    public final static String IMG_TOOL_UP_DISABLED = "IMG_TOOL_UP_DISABLED"; //$NON-NLS-1$
-
-    /**
-     * Identifies the up image in the hover (colored) state.
-     * 
-     * @deprecated in 3.0. This image is now the same as <code>IMG_TOOL_UP</code>.
-     *   Enabled images are now in color.  The workbench itself no longer uses the hover image variants.
-     */
-    public final static String IMG_TOOL_UP_HOVER = "IMG_TOOL_UP_HOVER"; //$NON-NLS-1$
-    
-    /**
-     * Retrieves the specified image from the workbench plugin's image registry.
-     * Note: The returned <code>Image</code> is managed by the workbench; clients
-     * must <b>not</b> dispose of the returned image.
-     *
-     * @param symbolicName the symbolic name of the image; there are constants
-     * declared in this interface for build-in images that come with the workbench
-     * @return the image, or <code>null</code> if not found
-     */
-    public Image getImage(String symbolicName);
-
-    /**
-     * Retrieves the image descriptor for specified image from the workbench's
-     * image registry. Unlike <code>Image</code>s, image descriptors themselves do
-     * not need to be disposed.
-     *
-     * @param symbolicName the symbolic name of the image; there are constants
-     * declared in this interface for build-in images that come with the workbench
-     * @return the image descriptor, or <code>null</code> if not found
-     */
-    public ImageDescriptor getImageDescriptor(String symbolicName);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IShowEditorInput.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IShowEditorInput.java
deleted file mode 100644
index 4d7699e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IShowEditorInput.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-
-/**
- * Shows the given editor input.  Used when an editor is being opened and an existing 
- * editor's input matches the one being opened.
- * <p>
- * Editors can optionally implement this interface, giving the editor the opportunity
- * to show the given input if it represents a different subset of the editor's content
- * than the one currently being shown.
- * </p> 
- *
- * @since 3.1
- */
-public interface IShowEditorInput {
-    
-    /**
-     * Shows the given input if it represents a different subset of the editor's content
-     * than the one currently being shown.
-     * 
-     * @param editorInput the editor input to show
-     */
-    void showEditorInput(IEditorInput editorInput);
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
deleted file mode 100644
index d16a0f7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISizeProvider.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-
-/**
- * Interface implemented by objects that are capable of computing 
- * a preferred size
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ISizeProvider {
-
-    /**
-     * Constant used to indicate infinite size. This is equal to Integer.MAX_VALUE, ensuring
-     * that it is greater than any other integer.
-     */
-    public static final int INFINITE = Integer.MAX_VALUE;
-    
-    /**
-     * Returns a bitwise combination of flags indicating how and when computePreferredSize should
-     * be used. When called with horizontal=true, this indicates the usage of computePreferredSize(true,...)
-     * for computing widths. When called with horizontal=false, this indicates the usage of computeSize(false,...)
-     * for computing heights. These flags are used for optimization. Each flag gives the part more control
-     * over its preferred size but slows down the layout algorithm. Parts should return the minimum set
-     * of flags necessary to specify their constraints.
-     * <p>
-     * If the return value of this function ever changes, the part must call <code>flushLayout</code> before 
-     * the changes will take effect.
-     * </p>
-     * 
-     * <ul>
-     * <li>SWT.MAX: The part has a maximum size that will be returned by computePreferredSize(horizontal, 
-     * 	   INFINITE, someWidth, INFINITE)</li>
-     * <li>SWT.MIN: The part has a minimum size that will be returned by computePreferredSize(horizontal,
-     * 	   INFINITE, someWidth, 0)</li>
-     * <li>SWT.WRAP: Indicates that computePreferredSize makes use of the availablePerpendicular argument. If this
-     * 	   flag is not specified, then the third argument to computePreferredSize will always be set to
-     *     INFINITE. The perpendicular size is expensive to compute, and it is usually only used 
-     *     for wrapping parts.
-     * <li>SWT.FILL: The part may not return the preferred size verbatim when computePreferredSize is
-     *     is given a value between the minimum and maximum sizes. This is commonly used if the part
-     *     wants to use a set of predetermined sizes instead of using the workbench-provided size. 
-     *     For example, computePreferredSize(horizontal, availableSpace, someWidth,
-     *     preferredSize) may return the nearest predetermined size. Note that this flag should
-     *     be used sparingly. It can prevent layout caching and cause the workbench layout algorithm
-     *     to degrade to exponential worst-case runtime. If this flag is omitted, then
-     *     computePreferredSize may be used to compute the minimum and maximum sizes, but not for
-     *     anything in between.</li>
-     * </ul>
-     * 
-     * @param width a value of true or false determines whether the return value applies when computing
-     * widths or heights respectively. That is, getSizeFlags(true) will be used when calling 
-     * computePreferredSize(true,...)
-     * @return any bitwise combination of SWT.MAX, SWT.MIN, SWT.WRAP, and SWT.FILL
-     */
-    public int getSizeFlags(boolean width);
-    
-    /**
-     * <p>
-     * Returns the best size for this part, given the available width and height and the workbench's
-     * preferred size for the part. Parts can overload this to enforce a minimum size, maximum size,
-     * or a quantized set of preferred sizes. If width == true, this method computes a width in pixels.
-     * If width == false, this method computes a height. availableParallel and availablePerpendicular 
-     * contain the space available, and preferredParallel contains the preferred result.
-     * </p>
-     * 
-     * <p>
-     * This method returns an answer that is less than or equal to availableParallel and as
-     * close to preferredParallel as possible. Return values larger than availableParallel will
-     * be truncated.
-     * </p>
-     * 
-     * <p>
-     * Most presentations will define a minimum size at all times, and a maximum size that only applies
-     * when maximized.
-     * </p>
-     * 
-     * <p>
-     * The getSizeFlags method controls how frequently this method will be called and what information
-     * will be available when it is. Any subclass that specializes this method should also specialize
-     * getSizeFlags. computePreferredSize(width, INFINITE, someSize, 0) returns 
-     * the minimum size of the control (if any). computePreferredSize(width, INFINITE, someSize,
-     * INFINITE) returns the maximum size of the control.   
-     * </p>
-     * 
-     * <p>
-     * Examples: 
-     * <ul>
-     * <li>To maintain a constant size of 100x300 pixels: {return width ? 100 : 300}, getSizeFlags(boolean) must 
-     *     return SWT.MIN | SWT.MAX</li>
-     * <li>To grow without constraints: {return preferredResult;}, getSizeFlags(boolean) must return 0.</li>
-     * <li>To enforce a width that is always a multiple of 100 pixels, to a minimum of 100 pixels:
-     * 		<code>
-     *        {
-     *              if (width && preferredResult != INFINITE) {                       
-     *                  int result = preferredResult - ((preferredResult + 50) % 100) + 50;
-     *                  result = Math.max(100, Math.min(result, availableParallel - (availableParallel % 100)));
-     *        
-     *                  return result; 
-     *              }
-     *              return preferredResult;
-     *         }
-     * 		</code>
-     * 	   In this case, getSizeFlags(boolean width) must return (width ? SWT.FILL | SWT.MIN: 0)
-     * </ul>
-     * <li>To maintain a minimum area of 100000 pixels:
-     * 	   <code>
-     *     {return availablePerpendicular < 100 ? 1000 : 100000 / availablePerpendicular;}
-     *     </code>
-     *     getSizeFlags(boolean width) must return SWT.WRAP | SWT.MIN;
-     * </li>
-     * </p>
-     * 
-     * @param width indicates whether a width (=true) or a height (=false) is being computed
-     * @param availableParallel available space. This is a width (pixels) if width == true, and a height (pixels)
-     *  if width == false. A return value larger than this will be ignored. 
-     * @param availablePerpendicular available space perpendicular to the direction being measured
-     * or INFINITE if unbounded (pixels). This
-     * is a height if width == true, or a height if width == false. Implementations will generally ignore this
-     * argument unless they contain wrapping widgets. Note this argument will only contain meaningful information
-     * if the part returns the SWT.WRAP flag from getSizeFlags(width)
-     * @param preferredResult preferred size of the control (pixels, <= availableParallel). Set to 
-     * INFINITE if unknown or unbounded.
-     * @return returns the preferred size of the control (pixels). This is a width if width == true or a height 
-     * if width == false. Callers are responsible for rounding down the return value if it is larger than
-     * availableParallel. If availableParallel is INFINITE, then a return value of INFINITE
-     * is permitted, indicating that the preferred size of the control is unbounded.  
-     * 
-     * @see ISizeProvider#getSizeFlags(boolean) 
-     */
-    public int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredResult);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProvider.java
deleted file mode 100644
index 83c2a03..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.util.Map;
-
-/**
- * <p>
- * A provider of notifications for when a change has occurred to a particular
- * type of source. These providers can be given to the appropriate service, and
- * this service will then re-evaluate the appropriate pieces of its internal
- * state in response to these changes.
- * </p>
- * <p>
- * It is recommended that clients subclass <code>AbstractSourceProvider</code>
- * instead, as this provides some common support for listeners.
- * </p>
- * 
- * @since 3.1
- * @see org.eclipse.ui.handlers.IHandlerService
- * @see org.eclipse.ui.ISources
- */
-public interface ISourceProvider {
-
-	/**
-	 * Adds a listener to this source provider. This listener will be notified
-	 * whenever the corresponding source changes.
-	 * 
-	 * @param listener
-	 *            The listener to add; must not be <code>null</code>.
-	 */
-	public void addSourceProviderListener(ISourceProviderListener listener);
-
-	/**
-	 * Allows the source provider an opportunity to clean up resources (e.g.,
-	 * listeners) before being released. This method should be called by the
-	 * creator after the source provider has been removed from all the services
-	 * with which it was registered.
-	 */
-	public void dispose();
-
-	/**
-	 * Returns the current state of the sources tracked by this provider. This
-	 * is used to provide a view of the world if the event loop is busy and
-	 * things are some state has already changed.
-	 * <p>
-	 * For use with core expressions, this map should contain 
-	 * IEvaluationContext#UNDEFINED_VARIABLE for properties which
-	 * are only sometimes available.
-	 * </p>
-	 * 
-	 * @return A map of variable names (<code>String</code>) to variable
-	 *         values (<code>Object</code>). This may be empty, and may be
-	 *         <code>null</code>.
-	 */
-	public Map getCurrentState();
-
-	/**
-	 * Returns the names of those sources provided by this class. This is used
-	 * by clients of source providers to determine which source providers they
-	 * actually need.
-	 * 
-	 * @return An array of source names. This value should never be
-	 *         <code>null</code> or empty.
-	 */
-	public String[] getProvidedSourceNames();
-
-	/**
-	 * Removes a listener from this source provider. This listener will be
-	 * notified whenever the corresponding source changes.
-	 * 
-	 * @param listener
-	 *            The listener to remove; must not be <code>null</code>.
-	 */
-	public void removeSourceProviderListener(ISourceProviderListener listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProviderListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProviderListener.java
deleted file mode 100644
index fed64b1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISourceProviderListener.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.util.Map;
-
-/**
- * <p>
- * A listener to changes in a particular source of information. This listener is
- * notified as the source changes. Typically, workbench services will implement
- * this interface, and register themselves as listeners to the
- * <code>ISourceProvider</code> instances that are registered with them.
- * </p>
- * 
- * @since 3.1
- * @see org.eclipse.ui.ISources
- * @see org.eclipse.ui.ISourceProvider
- */
-public interface ISourceProviderListener {
-
-	/**
-	 * Handles a change to multiple sources. The source priority should be a bit
-	 * mask indicating the sources. The map will be used to construct the
-	 * variables on an <code>IEvaluationContext</code>
-	 * 
-	 * @param sourcePriority
-	 *            A bit mask of all the source priorities that have changed.
-	 * @param sourceValuesByName
-	 *            A mapping of the source names (<code>String</code>) to the
-	 *            source values (<code>Object</code>). The names should
-	 *            never be <code>null</code>, but the values may be. The map
-	 *            must not be <code>null</code>, and should contain at least
-	 *            two elements (one for each source).
-	 * @see org.eclipse.core.expressions.IEvaluationContext
-	 * @see ISources
-	 */
-	public void sourceChanged(final int sourcePriority,
-			final Map sourceValuesByName);
-
-	/**
-	 * Handles a change to one source. The source priority should indicate the
-	 * source, and the name-value pair will be used to create an
-	 * <code>IEvaluationContext</code> with a single variable.
-	 * 
-	 * @param sourcePriority
-	 *            A bit mask of all the source priorities that have changed.
-	 * @param sourceName
-	 *            The name of the source that changed; must not be
-	 *            <code>null</code>.
-	 * @param sourceValue
-	 *            The new value for that source; may be <code>null</code>.
-	 * @see org.eclipse.core.expressions.IEvaluationContext
-	 * @see ISources
-	 */
-	public void sourceChanged(final int sourcePriority,
-			final String sourceName, final Object sourceValue);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISources.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISources.java
deleted file mode 100644
index 646b14c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/ISources.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.part.IShowInSource;
-
-/**
- * <p>
- * A source is type of event change that can occur within the workbench. For
- * example, the active workbench window can change, so it is considered a
- * source. Workbench services can track changes to these sources, and thereby
- * try to resolve conflicts between a variety of possible options. This is most
- * commonly used for things like handlers and contexts.
- * </p>
- * <p>
- * This interface defines the source that are known to the workbench at
- * compile-time. These sources can be combined in a bit-wise fashion. So, for
- * example, a <code>ACTIVE_PART | ACTIVE_CONTEXT</code> source includes change
- * to both the active context and the active part.
- * </p>
- * <p>
- * The values assigned to each source indicates its relative priority. The
- * higher the value, the more priority the source is given in resolving
- * conflicts. Another way to look at this is that the higher the value, the more
- * "local" the source is to what the user is currently doing. This is similar
- * to, but distinct from the concept of components. The nesting support provided
- * by components represent only one source (<code>ACTIVE_SITE</code>) that
- * the workbench understands.
- * </p>
- * <p>
- * Note that for backward compatibility, we must reserve the lowest three bits
- * for <code>Priority</code> instances using the old
- * <code>HandlerSubmission</code> mechanism. This mechanism was used in
- * Eclipse 3.0.
- * </p>
- * <p>
- * <b>Note in 3.3:</b>
- * </p>
- * <p>
- * Currently, source variables are not extensible by user plugins, and
- * the number of bits available for resolving conflicts is limited.  When
- * the variable sources become user extensible a new conflict resolution
- * mechanism will be implemented.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @see org.eclipse.ui.ISourceProvider
- * @since 3.1
- */
-public interface ISources {
-
-	/**
-	 * The priority given to default handlers and handlers that are active
-	 * across the entire workbench.
-	 */
-	public static final int WORKBENCH = 0;
-
-	/**
-	 * The priority given when the activation is defined by a handler submission
-	 * with a legacy priority.
-	 */
-	public static final int LEGACY_LEGACY = 1;
-
-	/**
-	 * The priority given when the activation is defined by a handler submission
-	 * with a low priority.
-	 */
-	public static final int LEGACY_LOW = 1 << 1;
-
-	/**
-	 * The priority given when the activation is defined by a handler submission
-	 * with a medium priority.
-	 */
-	public static final int LEGACY_MEDIUM = 1 << 2;
-
-	/**
-	 * The priority given when the source includes a particular context.
-	 */
-	public static final int ACTIVE_CONTEXT = 1 << 6;
-
-	/**
-	 * The variable name for the active contexts. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_CONTEXT_NAME = "activeContexts"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes a particular action set.
-	 * @since 3.2
-	 */
-	public static final int ACTIVE_ACTION_SETS = 1 << 8;
-
-	/**
-	 * The variable name for the active action sets. This is for use with the
-	 * {@link ISourceProvider} and {@link IEvaluationContext}.
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_ACTION_SETS_NAME = "activeActionSets"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the currently active shell.
-	 */
-	public static final int ACTIVE_SHELL = 1 << 10;
-
-	/**
-	 * The variable name for the active shell. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 */
-	public static final String ACTIVE_SHELL_NAME = "activeShell"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the currently active
-	 * workbench window shell.
-	 * @since 3.2
-	 */
-	public static final int ACTIVE_WORKBENCH_WINDOW_SHELL = 1 << 12;
-
-	/**
-	 * The variable name for the active workbench window shell. This is for use
-	 * with the <code>ISourceProvider</code> and
-	 * <code>IEvaluationContext</code>.
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_WORKBENCH_WINDOW_SHELL_NAME = "activeWorkbenchWindowShell"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the currently active
-	 * workbench window.
-	 */
-	public static final int ACTIVE_WORKBENCH_WINDOW = 1 << 14;
-
-	/**
-	 * The variable name for the active workbench window. This is for use with
-	 * the <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 */
-	public static final String ACTIVE_WORKBENCH_WINDOW_NAME = "activeWorkbenchWindow"; //$NON-NLS-1$
-	
-	/**
-	 * The priority given when the source includes subordinate properties of the currently active
-	 * workbench window.
-	 * 
-	 * @since 3.3
-	 */
-	public static final int ACTIVE_WORKBENCH_WINDOW_SUBORDINATE = 1 << 15;
-	
-	/**
-	 * The variable name for the coolbar visibility state of the active
-	 * workbench window. This is for use with the <code>ISourceProvider</code>
-	 * and <code>IEvaluationContext</code>.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME = ACTIVE_WORKBENCH_WINDOW_NAME
-			+ ".isCoolbarVisible"; //$NON-NLS-1$
-	
-	/**
-	 * The variable name for the perspective bar visibility state of the active
-	 * workbench window. This is for use with the <code>ISourceProvider</code>
-	 * and <code>IEvaluationContext</code>.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME = ACTIVE_WORKBENCH_WINDOW_NAME
-			+ ".isPerspectiveBarVisible"; //$NON-NLS-1$
-	
-	/**
-	 * The variable name for the current perspective of the active workbench
-	 * window. This is for use with the <code>ISourceProvider</code> and
-	 * <code>IEvaluationContext</code>.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME = ACTIVE_WORKBENCH_WINDOW_NAME
-	+ ".activePerspective"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the active editor part.
-	 */
-	public static final int ACTIVE_EDITOR = 1 << 16;
-
-	/**
-	 * The variable name for the active editor part. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_EDITOR_NAME = "activeEditor"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the active editor identifier.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int ACTIVE_EDITOR_ID = 1 << 18;
-
-	/**
-	 * The variable name for the active editor identifier. This is for use with
-	 * the <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_EDITOR_ID_NAME = "activeEditorId"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the active part.
-	 */
-	public static final int ACTIVE_PART = 1 << 20;
-
-	/**
-	 * The variable name for the active part. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 */
-	public static final String ACTIVE_PART_NAME = "activePart"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the active part id.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int ACTIVE_PART_ID = 1 << 22;
-
-	/**
-	 * The variable name for the active part id. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_PART_ID_NAME = "activePartId"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the active workbench site. In
-	 * the case of nesting components, one should be careful to only activate
-	 * the most nested component.
-	 */
-	public static final int ACTIVE_SITE = 1 << 26;
-
-	/**
-	 * The variable name for the active workbench site. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 */
-	public static final String ACTIVE_SITE_NAME = "activeSite"; //$NON-NLS-1$
-	
-	/**
-	 * The variable for the showIn selection.  This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * @since 3.4
-	 * @see IShowInSource
-	 */
-	public static final String SHOW_IN_SELECTION = "showInSelection"; //$NON-NLS-1$
-	
-	/**
-	 * The variable for the showIn input.  This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * @since 3.4
-	 * @see IShowInSource
-	 */
-	public static final String SHOW_IN_INPUT = "showInInput"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the current selection.
-	 */
-	public static final int ACTIVE_CURRENT_SELECTION = 1 << 30;
-
-	/**
-	 * The variable name for the active selection. This is for use with the
-	 * <code>ISourceProvider</code> and <code>IEvaluationContext</code>.
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_CURRENT_SELECTION_NAME = "selection"; //$NON-NLS-1$
-
-	/**
-	 * The priority given when the source includes the current menu.
-	 * @since 3.2
-	 */
-	public static final int ACTIVE_MENU = 1 << 31;
-
-	/**
-	 * The variable name for the active menu. This is for use with the
-	 * {@link ISourceProvider} and {@link IEvaluationContext}.
-	 * @since 3.2
-	 */
-	public static final String ACTIVE_MENU_NAME = "activeMenu"; //$NON-NLS-1$
-	
-	/**
-	 * The variable name for the <b>local</b> selection, available while a
-	 * context menu is visible.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ACTIVE_MENU_SELECTION_NAME = "activeMenuSelection";  //$NON-NLS-1$
-	
-	/**
-	 * The variable name for the <b>local</b> editor input which is sometimes
-	 * available while a context menu is visible.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ACTIVE_MENU_EDITOR_INPUT_NAME = "activeMenuEditorInput";  //$NON-NLS-1$
-
-	/**
-	 * The variable name for the active focus Control, when provided by the
-	 * IFocusService.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ACTIVE_FOCUS_CONTROL_NAME = "activeFocusControl"; //$NON-NLS-1$
-
-	/**
-	 * The variable name for the active focus Control id, when provided by the
-	 * IFocusService.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ACTIVE_FOCUS_CONTROL_ID_NAME = "activeFocusControlId"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IStartup.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IStartup.java
deleted file mode 100644
index c3f5cd8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IStartup.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Plug-ins that register a startup extension will be activated after
- * the Workbench initializes and have an opportunity to run 
- * code that can't be implemented using the normal contribution 
- * mechanisms.
- * 
- * @since 2.0
- */
-public interface IStartup {
-    /**
-     * Will be called in a separate thread after the workbench initializes.
-     * <p>
-     * Note that most workbench methods must be called in the UI thread
-     * since they may access SWT.  For example, to obtain the current workbench
-     * window, use:
-     * <code>
-     * <pre>
-     * final IWorkbench workbench = PlatformUI.getWorkbench();
-     * workbench.getDisplay().asyncExec(new Runnable() {
-     *   public void run() {
-     *     IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
-     *     if (window != null) {
-     *       // do something
-     *     }
-     *   }
-     * });
-     * </pre>
-     * </code>
-     * </p>
-     * @see org.eclipse.swt.widgets.Display#asyncExec
-     * @see org.eclipse.swt.widgets.Display#syncExec
-     */
-    public void earlyStartup();
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewActionDelegate.java
deleted file mode 100644
index be1206b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewActionDelegate.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for an action that is contributed into a view's local tool bar,
- * pulldown menu, or popup menu. It extends <code>IActionDelegate</code>
- * and adds an initialization method for connecting the delegate to the view it
- * should work with.
- */
-public interface IViewActionDelegate extends IActionDelegate {
-    /**
-     * Initializes this action delegate with the view it will work in.
-     *
-     * @param view the view that provides the context for this delegate
-     */
-    public void init(IViewPart view);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewLayout.java
deleted file mode 100644
index e5d1def..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewLayout.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Represents the layout info for a view or placeholder in an {@link IPageLayout}.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IViewLayout {
-
-    /**
-     * Returns whether the view is closeable.
-     * The default is <code>true</code>.
-     * 
-     * @return <code>true</code> if the view is closeable, <code>false</code> if not
-     */
-    public boolean isCloseable();
-
-    /**
-     * Sets whether the view is closeable.
-     * 
-     * @param closeable <code>true</code> if the view is closeable, <code>false</code> if not
-     */
-    public void setCloseable(boolean closeable);
-
-    /**
-     * Returns whether the view is moveable.
-     * The default is <code>true</code>.
-     * 
-     * @return <code>true</code> if the view is moveable, <code>false</code> if not
-     */
-    public boolean isMoveable();
-
-    /**
-     * Sets whether the view is moveable.
-     * 
-     * @param moveable <code>true</code> if the view is moveable, <code>false</code> if not
-     */
-    public void setMoveable(boolean moveable);
-
-    /**
-     * Returns whether the view is a standalone view.
-     * 
-     * @see IPageLayout#addStandaloneView
-     */
-    public boolean isStandalone();
-
-    /**
-     * Returns whether the view shows its title.
-     * This is only applicable to standalone views.
-     * 
-     * @see IPageLayout#addStandaloneView
-     */
-    public boolean getShowTitle();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewPart.java
deleted file mode 100644
index 2a2b11f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewPart.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-
-/**
- * A view is a visual component within a workbench page. It is typically used to
- * navigate a hierarchy of information (like the workspace), open an editor, or
- * display properties for the active editor. Modifications made in a view are
- * saved immediately (in contrast to an editor part, which conforms to a more
- * elaborate open-save-close lifecycle).
- * <p>
- * Only one instance of a particular view type may exist within a workbench
- * page. This policy is designed to simplify part management for a user.
- * </p>
- * <p>
- * This interface may be implemented directly. For convenience, a base
- * implementation is defined in <code>ViewPart</code>.
- * </p>
- * <p>
- * A view is added to the workbench in two steps:
- * <ol>
- * <li>A view extension is contributed to the workbench registry. This
- * extension defines the extension id and extension class.</li>
- * <li>The view is included in the default layout for a perspective.
- * Alternatively, the user may open the view from the Perspective menu.</li>
- * </ol>
- * </p>
- * <p>
- * Views implement the <code>IAdaptable</code> interface; extensions are
- * managed by the platform's adapter manager.
- * </p>
- * <p>
- * As of 3.4, views may optionally adapt to {@link ISizeProvider} if they have
- * a preferred size. The default presentation will make a best effort to
- * allocate the preferred size to a view if it is the only part in a stack. If
- * there is more than one part in the stack, the constraints will be disabled
- * for that stack. The size constraints are adjusted for the size of the tab and
- * border trim. Note that this is considered to be a hint to the presentation,
- * and not all presentations may honor size constraints.
- * </p>
- * 
- * @see IWorkbenchPage#showView
- * @see org.eclipse.ui.part.ViewPart
- * @see ISizeProvider
- */
-public interface IViewPart extends IWorkbenchPart, IPersistable {
-    /**
-     * Returns the site for this view. 
-     * This method is equivalent to <code>(IViewSite) getSite()</code>.
-     * <p>  
-     * The site can be <code>null</code> while the view is being initialized. 
-     * After the initialization is complete, this value must be non-<code>null</code>
-     * for the remainder of the view's life cycle.
-     * </p>
-     * 
-     * @return the view site; this value may be <code>null</code> if the view
-     *         has not yet been initialized
-     */
-    public IViewSite getViewSite();
-
-    /**
-     * Initializes this view with the given view site.  
-     * <p>
-     * This method is automatically called by the workbench shortly after the
-     * part is instantiated.  It marks the start of the views's lifecycle. Clients must 
-     * not call this method.
-     * </p>
-     *
-     * @param site the view site
-     * @exception PartInitException if this view was not initialized successfully
-     */
-    public void init(IViewSite site) throws PartInitException;
-
-    /**
-     * Initializes this view with the given view site.  A memento is passed to
-     * the view which contains a snapshot of the views state from a previous
-     * session.  Where possible, the view should try to recreate that state
-     * within the part controls.
-     * <p>
-     * This method is automatically called by the workbench shortly after the part 
-     * is instantiated.  It marks the start of the views's lifecycle. Clients must 
-     * not call this method.
-     * </p>
-     *
-     * @param site the view site
-     * @param memento the IViewPart state or null if there is no previous saved state
-     * @exception PartInitException if this view was not initialized successfully
-     */
-    public void init(IViewSite site, IMemento memento) throws PartInitException;
-
-    /**
-     * Saves the object state within a memento.
-     *
-     * @param memento a memento to receive the object state
-     */
-    public void saveState(IMemento memento);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewReference.java
deleted file mode 100644
index 876c915..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewReference.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Defines a reference to an IViewPart.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IViewReference extends IWorkbenchPartReference {
-
-    /**
-     * Returns the secondary ID for the view.
-     * 
-     * @return the secondary ID, or <code>null</code> if there is no secondary id
-     * @see IWorkbenchPage#showView(String, String, int)
-     * @since 3.0
-     */
-    public String getSecondaryId();
-
-    /**
-     * Returns the <code>IViewPart</code> referenced by this object.
-     * Returns <code>null</code> if the view was not instantiated or
-     * it failed to be restored.  Tries to restore the view
-     * if <code>restore</code> is true.
-     */
-    public IViewPart getView(boolean restore);
-
-    /**
-     * Returns true if the view is a fast view otherwise returns false.
-     */
-    public boolean isFastView();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewSite.java
deleted file mode 100644
index 9c89b50..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IViewSite.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * The primary interface between a view part and the workbench.
- * <p>
- * The workbench exposes its implemention of view part sites via this interface,
- * which is not intended to be implemented or extended by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IViewSite extends IWorkbenchPartSite {
-
-    /**
-     * Returns the action bars for this part site.
-     * Views have exclusive use of their site's action bars.
-     *
-     * @return the action bars
-     */
-    public IActionBars getActionBars();
-
-    /**
-     * Returns the secondary id for this part site's part,
-     * or <code>null</code> if it has none.
-     * 
-     * @see IWorkbenchPage#showView(String, String, int)
-     * @since 3.0
-     */
-    public String getSecondaryId();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWindowListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWindowListener.java
deleted file mode 100644
index 051c5f8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWindowListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening to window lifecycle events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- */
-public interface IWindowListener {
-    /**
-     * Notifies this listener that the given window has been activated.
-     * <p>
-     * <b>Note:</b> This event is not fired if no perspective is
-     * open (the window is empty).
-     * </p>
-     *
-     * @param window the window that was activated
-     */
-    public void windowActivated(IWorkbenchWindow window);
-
-    /**
-     * Notifies this listener that the given window has been deactivated.
-     * <p>
-     * <b>Note:</b> This event is not fired if no perspective is
-     * open (the window is empty).
-     * </p>
-     *
-     * @param window the window that was activated
-     */
-    public void windowDeactivated(IWorkbenchWindow window);
-
-    /**
-     * Notifies this listener that the given window has been closed.
-     *
-     * @param window the window that was closed
-     * @see IWorkbenchWindow#close
-     */
-    public void windowClosed(IWorkbenchWindow window);
-
-    /**
-     * Notifies this listener that the given window has been opened.
-     *
-     * @param window the window that was opened
-     * @see IWorkbench#openWorkbenchWindow
-     */
-    public void windowOpened(IWorkbenchWindow window);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java
deleted file mode 100644
index 66ac85e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbench.java
+++ /dev/null
@@ -1,616 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.commands.IWorkbenchCommandSupport;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.contexts.IWorkbenchContextSupport;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.help.IWorkbenchHelpSystem;
-import org.eclipse.ui.intro.IIntroManager;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.operations.IWorkbenchOperationSupport;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.themes.IThemeManager;
-import org.eclipse.ui.views.IViewRegistry;
-import org.eclipse.ui.wizards.IWizardRegistry;
-
-/**
- * A workbench is the root object for the Eclipse Platform user interface.
- * <p>
- * A <b>workbench</b> has one or more main windows which present to the end
- * user information based on some underlying model, typically on resources in an
- * underlying workspace. A workbench usually starts with a single open window,
- * and automatically closes when its last window closes.
- * </p>
- * <p>
- * Each <b>workbench window</b> has a collection of <b>pages</b>; the active
- * page is the one that is being presented to the end user; at most one page is
- * active in a window at a time.
- * </p>
- * <p>
- * Each workbench page has a collection of <b>workbench parts</b>, of which
- * there are two kinds: views and editors. A page's parts are arranged (tiled or
- * stacked) for presentation on the screen. The arrangement is not fixed; the
- * user can arrange the parts as they see fit. A <b>perspective</b> is a
- * template for a page, capturing a collection of parts and their arrangement.
- * </p>
- * <p>
- * The platform creates a workbench when the workbench plug-in is activated;
- * since this happens at most once during the life of the running platform,
- * there is only one workbench instance. Due to its singular nature, it is
- * commonly referred to as <it>the</it> workbench.
- * </p>
- * <p>
- * The workbench supports a few {@link IServiceLocator services} by default. If
- * these services are used to allocate resources, it is important to remember to
- * clean up those resources after you are done with them. Otherwise, the
- * resources will exist until the workbench shuts down. The supported services
- * are:
- * </p>
- * <ul>
- * <li>{@link IBindingService}</li>
- * <li>{@link ICommandService}</li>
- * <li>{@link IContextService}</li>
- * <li>{@link IHandlerService}</li>
- * </ul>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.PlatformUI#getWorkbench
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbench extends IAdaptable, IServiceLocator {
-	/**
-	 * Returns the display for this workbench.
-	 * <p>
-	 * Code should always ask the workbench for the display rather than rely on
-	 * {@link Display#getDefault Display.getDefault()}.
-	 * </p>
-	 * 
-	 * @return the display to be used for all UI interactions with this
-	 *         workbench
-	 * @since 3.0
-	 */
-	public Display getDisplay();
-
-	/**
-	 * Returns the progress service for the workbench.
-	 * 
-	 * @return the progress service
-	 * @since 3.0
-	 */
-	public IProgressService getProgressService();
-
-	/**
-	 * Adds a workbench listener.
-	 * 
-	 * @param listener
-	 *            the workbench listener to add
-	 * @since 3.2
-	 */
-	public void addWorkbenchListener(IWorkbenchListener listener);
-
-	/**
-	 * Removes a workbench listener.
-	 * 
-	 * @param listener
-	 *            the workbench listener to remove
-	 * @since 3.2
-	 */
-	public void removeWorkbenchListener(IWorkbenchListener listener);
-	
-	/**
-	 * Adds a window listener.
-	 * 
-	 * @param listener
-	 *            the window listener to add
-	 * @since 2.0
-	 */
-	public void addWindowListener(IWindowListener listener);
-
-	/**
-	 * Removes a window listener.
-	 * 
-	 * @param listener
-	 *            the window listener to remove
-	 * @since 2.0
-	 */
-	public void removeWindowListener(IWindowListener listener);
-
-	/**
-	 * Closes this workbench and all its open windows.
-	 * <p>
-	 * If the workbench has an open editor with unsaved content, the user will
-	 * be given the opportunity to save it.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the workbench was successfully closed, and
-	 *         <code>false</code> if it is still open
-	 */
-	public boolean close();
-
-	/**
-	 * Returns the currently active window for this workbench (if any). Returns
-	 * <code>null</code> if there is no active workbench window. Returns
-	 * <code>null</code> if called from a non-UI thread.
-	 * 
-	 * @return the active workbench window, or <code>null</code> if there is
-	 *         no active workbench window or if called from a non-UI thread
-	 */
-	public IWorkbenchWindow getActiveWorkbenchWindow();
-
-	/**
-	 * Returns the editor registry for the workbench.
-	 * 
-	 * @return the workbench editor registry
-	 */
-	public IEditorRegistry getEditorRegistry();
-
-	/**
-	 * <p>
-	 * Returns the undoable operation support for the workbench.
-	 * </p>
-	 * 
-	 * @return the workbench operation support
-	 * 
-	 * @since 3.1
-	 */
-	public IWorkbenchOperationSupport getOperationSupport();
-
-	/**
-	 * Returns the perspective registry for the workbench.
-	 * 
-	 * @return the workbench perspective registry
-	 */
-	public IPerspectiveRegistry getPerspectiveRegistry();
-
-	/**
-	 * Returns the preference manager for the workbench.
-	 * 
-	 * @return the workbench preference manager
-	 */
-	public PreferenceManager getPreferenceManager();
-
-	/**
-	 * Returns the preference store for the workbench.
-	 * 
-	 * @return the workbench preference store
-	 * @since 2.0
-	 * @deprecated this returns the internal preference store for the workbench,
-	 *             which clients should not use. Use
-	 *             {@link PlatformUI#getPreferenceStore()} instead. Note that
-	 *             these preference stores are not the same. If you were
-	 *             previously storing preferences in the store returned by this
-	 *             method you should move them to your own plugin preference
-	 *             store.
-	 */
-	public IPreferenceStore getPreferenceStore();
-
-	/**
-	 * Returns the shared images for the workbench.
-	 * 
-	 * @return the shared image manager
-	 */
-	public ISharedImages getSharedImages();
-
-	/**
-	 * Returns the number of open main windows associated with this workbench.
-	 * Note that wizards and dialogs are not included in this list since they
-	 * are not considered main windows.
-	 * 
-	 * @return the number of open windows
-	 * @since 3.0
-	 */
-	public int getWorkbenchWindowCount();
-
-	/**
-	 * Returns a list of the open main windows associated with this workbench.
-	 * Note that wizards and dialogs are not included in this list since they
-	 * are not considered main windows.
-	 * 
-	 * @return a list of open windows
-	 */
-	public IWorkbenchWindow[] getWorkbenchWindows();
-
-	/**
-	 * Returns the working set manager for the workbench.
-	 * 
-	 * @return the working set manager
-	 * @since 2.0
-	 */
-	public IWorkingSetManager getWorkingSetManager();
-
-	/**
-	 * Creates a new local working set manager. Clients of local working set
-	 * managers are responsible for calling {@link IWorkingSetManager#dispose()}
-	 * when the working sets it manages are no longer needed.
-	 * 
-	 * @return the local working set manager
-	 * @since 3.1
-	 */
-	public ILocalWorkingSetManager createLocalWorkingSetManager();
-
-	/**
-	 * Creates and opens a new workbench window with one page. The perspective
-	 * of the new page is defined by the specified perspective ID. The new
-	 * window and new page become active.
-	 * <p>
-	 * <b>Note:</b> The caller is responsible to ensure the action using this
-	 * method will explicitly inform the user a new window will be opened.
-	 * Otherwise, callers are strongly recommended to use the
-	 * <code>openPerspective</code> APIs to programmatically show a
-	 * perspective to avoid confusing the user.
-	 * </p>
-	 * <p>
-	 * In most cases where this method is used the caller is tightly coupled to
-	 * a particular perspective. They define it in the registry and contribute
-	 * some user interface action to open or activate it. In situations like
-	 * this a static variable is often used to identify the perspective ID.
-	 * </p>
-	 * 
-	 * @param perspectiveId
-	 *            the perspective id for the window's initial page, or
-	 *            <code>null</code> for no initial page
-	 * @param input
-	 *            the page input, or <code>null</code> if there is no current
-	 *            input. This is used to seed the input for the new page's
-	 *            views.
-	 * @return the new workbench window
-	 * @exception WorkbenchException
-	 *                if a new window and page could not be opened
-	 * 
-	 * @see IWorkbench#showPerspective(String, IWorkbenchWindow, IAdaptable)
-	 */
-	public IWorkbenchWindow openWorkbenchWindow(String perspectiveId,
-			IAdaptable input) throws WorkbenchException;
-
-	/**
-	 * Creates and opens a new workbench window with one page. The perspective
-	 * of the new page is defined by the default perspective ID. The new window
-	 * and new page become active.
-	 * <p>
-	 * <b>Note:</b> The caller is responsible to ensure the action using this
-	 * method will explicitly inform the user a new window will be opened.
-	 * Otherwise, callers are strongly recommended to use the
-	 * <code>openPerspective</code> APIs to programmatically show a
-	 * perspective to avoid confusing the user.
-	 * </p>
-	 * 
-	 * @param input
-	 *            the page input, or <code>null</code> if there is no current
-	 *            input. This is used to seed the input for the new page's
-	 *            views.
-	 * @return the new workbench window
-	 * @exception WorkbenchException
-	 *                if a new window and page could not be opened
-	 * 
-	 * @see IWorkbench#showPerspective(String, IWorkbenchWindow, IAdaptable)
-	 */
-	public IWorkbenchWindow openWorkbenchWindow(IAdaptable input)
-			throws WorkbenchException;
-
-	/**
-	 * Closes then restarts this workbench.
-	 * <p>
-	 * If the workbench has an open editor with unsaved content, the user will
-	 * be given the opportunity to save it.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the workbench was successfully closed, and
-	 *         <code>false</code> if it could not be closed
-	 * 
-	 * @since 2.0
-	 */
-	public boolean restart();
-
-	/**
-	 * Shows the specified perspective to the user. The caller should use this
-	 * method when the perspective to be shown is not dependent on the page's
-	 * input. That is, the perspective can open in any page depending on user
-	 * preferences.
-	 * <p>
-	 * The perspective may be shown in the specified window, in another existing
-	 * window, or in a new window depending on user preferences. The exact
-	 * policy is controlled by the workbench to ensure consistency to the user.
-	 * The policy is subject to change. The current policy is as follows:
-	 * <ul>
-	 * <li>If the specified window has the requested perspective open, then the
-	 * window is given focus and the perspective is shown. The page's input is
-	 * ignored.</li>
-	 * <li>If another window that has the workspace root as input and the
-	 * requested perspective open and active, then the window is given focus.
-	 * </li>
-	 * <li>Otherwise the requested perspective is opened and shown in the
-	 * specified window or in a new window depending on the current user
-	 * preference for opening perspectives, and that window is given focus.
-	 * </li>
-	 * </ul>
-	 * </p>
-	 * <p>
-	 * The workbench also defines a number of menu items to activate or open
-	 * each registered perspective. A complete list of these perspectives is
-	 * available from the perspective registry found on <code>IWorkbench</code>.
-	 * </p>
-	 * 
-	 * @param perspectiveId
-	 *            the perspective ID to show
-	 * @param window
-	 *            the workbench window of the action calling this method.
-	 * @return the workbench page that the perspective was shown
-	 * @exception WorkbenchException
-	 *                if the perspective could not be shown
-	 * 
-	 * @since 2.0
-	 */
-	public IWorkbenchPage showPerspective(String perspectiveId,
-			IWorkbenchWindow window) throws WorkbenchException;
-
-	/**
-	 * Shows the specified perspective to the user. The caller should use this
-	 * method when the perspective to be shown is dependent on the page's input.
-	 * That is, the perspective can only open in any page with the specified
-	 * input.
-	 * <p>
-	 * The perspective may be shown in the specified window, in another existing
-	 * window, or in a new window depending on user preferences. The exact
-	 * policy is controlled by the workbench to ensure consistency to the user.
-	 * The policy is subject to change. The current policy is as follows:
-	 * <ul>
-	 * <li>If the specified window has the requested perspective open and the
-	 * same requested input, then the window is given focus and the perspective
-	 * is shown.</li>
-	 * <li>If another window has the requested input and the requested
-	 * perspective open and active, then that window is given focus.</li>
-	 * <li>If the specified window has the same requested input but not the
-	 * requested perspective, then the window is given focus and the perspective
-	 * is opened and shown on condition that the user preference is not to open
-	 * perspectives in a new window.</li>
-	 * <li>Otherwise the requested perspective is opened and shown in a new
-	 * window, and the window is given focus.</li>
-	 * </ul>
-	 * </p>
-	 * <p>
-	 * The workbench also defines a number of menu items to activate or open
-	 * each registered perspective. A complete list of these perspectives is
-	 * available from the perspective registry found on <code>IWorkbench</code>.
-	 * </p>
-	 * 
-	 * @param perspectiveId
-	 *            the perspective ID to show
-	 * @param window
-	 *            the workbench window of the action calling this method.
-	 * @param input
-	 *            the page input, or <code>null</code> if there is no current
-	 *            input. This is used to seed the input for the page's views
-	 * @return the workbench page that the perspective was shown
-	 * @exception WorkbenchException
-	 *                if the perspective could not be shown
-	 * 
-	 * @since 2.0
-	 */
-	public IWorkbenchPage showPerspective(String perspectiveId,
-			IWorkbenchWindow window, IAdaptable input)
-			throws WorkbenchException;
-
-	/**
-	 * Returns the decorator manager.
-	 * <p>
-	 * Any client using the decorator manager should come up with the text and
-	 * image for the element (including any of the part's own decorations)
-	 * before calling the decorator manager. It should also add a listener to be
-	 * notified when decorations change.
-	 * </p>
-	 * <p>
-	 * Note that if the element implements <code>IAdaptable</code>,
-	 * decorators may use this mechanism to obtain an adapter (for example an
-	 * <code>IResource</code>), and derive the decoration from the adapter
-	 * rather than the element. Since the adapter may differ from the original
-	 * element, those using the decorator manager should be prepared to handle
-	 * notification that the decoration for the adapter has changed, in addition
-	 * to handling notification that the decoration for the element has changed.
-	 * That is, it needs to be able to map back from the adapter to the element.
-	 * </p>
-	 * 
-	 * @return the decorator manager
-	 */
-	public IDecoratorManager getDecoratorManager();
-
-	/**
-	 * Save all dirty editors in the workbench. Opens a dialog to prompt the
-	 * user if <code>confirm</code> is true. Return true if successful. Return
-	 * false if the user has canceled the command.
-	 * 
-	 * @param confirm <code>true</code> to ask the user before saving unsaved
-	 *            changes (recommended), and <code>false</code> to save
-	 *            unsaved changes without asking
-	 * @return <code>true</code> if the command succeeded, and
-	 *         <code>false</code> if the operation was canceled by the user or
-	 *         an error occurred while saving
-	 */
-	public boolean saveAllEditors(boolean confirm);
-
-	/**
-	 * Returns the element factory with the given id.
-	 * 
-	 * @param factoryId
-	 *            the id of the element factory
-	 * @return the element factory, or <code>null</code> if none
-	 * @see IElementFactory
-	 * @since 3.0
-	 */
-	public IElementFactory getElementFactory(String factoryId);
-
-	/**
-	 * Returns an interface to manage activities at the workbench level.
-	 * 
-	 * @return an interface to manage activities at the workbench level.
-	 *         Guaranteed not to be <code>null</code>.
-	 * @since 3.0
-	 */
-	IWorkbenchActivitySupport getActivitySupport();
-
-	/**
-	 * Returns an interface to manage commands at the workbench level.
-	 * 
-	 * @return an interface to manage commands at the workbench level.
-	 *         Guaranteed not to be <code>null</code>.
-	 * @since 3.0
-	 * @deprecated Please use {@link IServiceLocator#getService(Class)} instead.
-	 * @see ICommandService
-	 * @see IHandlerService
-	 */
-	IWorkbenchCommandSupport getCommandSupport();
-
-	/**
-	 * Returns an interface to manage contexts at the workbench level.
-	 * 
-	 * @return an interface to manage contexts at the workbench level.
-	 *         Guaranteed not to be <code>null</code>.
-	 * @since 3.0
-	 * @deprecated Please use {@link IServiceLocator#getService(Class)} instead.
-	 * @see IContextService
-	 */
-	IWorkbenchContextSupport getContextSupport();
-
-	/**
-	 * Return the theme manager for this workbench.
-	 * 
-	 * @return the theme manager for this workbench.Guaranteed not to be
-	 *         <code>null</code>.
-	 * @since 3.0
-	 */
-	public IThemeManager getThemeManager();
-
-	/**
-	 * Return the intro manager for this workbench.
-	 * 
-	 * @return the intro manager for this workbench. Guaranteed not to be
-	 *         <code>null</code>.
-	 * @since 3.0
-	 */
-	public IIntroManager getIntroManager();
-
-	/**
-	 * Return the help system for this workbench.
-	 * 
-	 * @return the help system
-	 * @since 3.1
-	 */
-	public IWorkbenchHelpSystem getHelpSystem();
-
-	/**
-	 * Return the browser support for this workbench.
-	 * 
-	 * @return the browser support system
-	 * @since 3.1
-	 */
-	public IWorkbenchBrowserSupport getBrowserSupport();
-
-	/**
-	 * Returns a boolean indicating whether the workbench is in the process of
-	 * closing.
-	 * 
-	 * @return <code>true</code> if the workbench is in the process of
-	 *         closing, <code>false</code> otherwise
-	 * @since 3.1
-	 */
-	public boolean isClosing();
-
-	/**
-	 * <p>
-	 * Return the extension tracker for the workbench. This tracker may be used
-	 * by plug-ins to ensure responsiveness to changes to the plug-in registry.
-	 * </p>
-	 * <p>
-	 * The tracker at this level of the workbench is typically used to track
-	 * elements that persist for the life of the workbench. For example,
-	 * <code>IEditorDescriptor</code> objects fall into this category.
-	 * </p>
-	 * 
-	 * @return the extension tracker
-	 * @see IWorkbenchWindow#getExtensionTracker()
-	 * @see IWorkbenchPage#getExtensionTracker()
-	 * @since 3.1
-	 */
-	public IExtensionTracker getExtensionTracker();
-
-	/**
-	 * Returns the view registry for the workbench.
-	 * 
-	 * @return the workbench view registry
-	 * @since 3.1
-	 */
-	public IViewRegistry getViewRegistry();
-
-	/**
-	 * Return the new wizard registry.
-	 * 
-	 * @return the new wizard registry
-	 * @since 3.1
-	 */
-	public IWizardRegistry getNewWizardRegistry();
-
-	/**
-	 * Return the import wizard registry.
-	 * 
-	 * @return the import wizard registry
-	 * @since 3.1
-	 */
-	public IWizardRegistry getImportWizardRegistry();
-
-	/**
-	 * Return the export wizard registry.
-	 * 
-	 * @return the export wizard registry
-	 * @since 3.1
-	 */
-	public IWizardRegistry getExportWizardRegistry();
-	
-	/**
-	 * Save all dirty saveables in the workbench that match the given filter.
-	 * Opens a dialog to prompt the user if <code>confirm</code> is true.
-	 * Return true if successful. Return false if the user has canceled the
-	 * command.
-	 * 
-	 * @since 3.3
-	 * 
-	 * @param shellProvider the provider used to obtain a shell in prompting is
-	 *            required. Clients can use a workbench window for this.
-	 * @param runnableContext a runnable context that will be used to provide a
-	 *            progress monitor while the save is taking place. Clients can
-	 *            use a workbench window for this.
-	 * @param filter the filter used to determine if a particular dirty saveable
-	 *            needs to be saved or <code>null</code> if all dirty
-	 *            saveables should be saved.
-	 * @param confirm <code>true</code> to ask the user before saving unsaved
-	 *            changes (recommended), and <code>false</code> to save
-	 *            unsaved changes without asking
-	 * @return <code>true</code> if the command succeeded, and
-	 *         <code>false</code> if the operation was canceled by the user or
-	 *         an error occurred while saving
-	 */
-	public boolean saveAll(IShellProvider shellProvider,
-			IRunnableContext runnableContext, ISaveableFilter filter,
-			boolean confirm);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchActionConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchActionConstants.java
deleted file mode 100644
index f25d2fa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchActionConstants.java
+++ /dev/null
@@ -1,853 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Action ids for standard actions, groups in the workbench menu bar, and
- * global actions.
- * <p>
- * This interface contains constants only; it is not intended to be implemented
- * or extended.
- * </p>
- * <h3>Standard menus</h3>
- * <ul>
- *   <li>File menu (<code>M_FILE</code>)</li>
- *   <li>Edit menu (<code>M_EDIT</code>)</li>
- *   <li>Window menu (<code>M_WINDOW</code>)</li>
- *   <li>Help menu (<code>M_HELP</code>)</li>
- * </ul>
- * <h3>Standard group for adding top level menus</h3>
- * <ul>
- *   <li>Extra top level menu group (<code>MB_ADDITIONS</code>)</li>
- * </ul>
- * <h3>Global actions</h3>
- * <ul>
- *   <li>Undo (<code>UNDO</code>)</li>
- *   <li>Redo (<code>REDO</code>)</li>
- *   <li>Cut (<code>CUT</code>)</li>
- *   <li>Copy (<code>COPY</code>)</li>
- *   <li>Paste (<code>PASTE</code>)</li>
- *   <li>Delete (<code>DELETE</code>)</li>
- *   <li>Find (<code>FIND</code>)</li>
- *   <li>Select All (<code>SELECT_ALL</code>)</li>
- *   <li>Add Bookmark (<code>BOOKMARK</code>)</li>
- * </ul>
- * <h3>Standard File menu actions</h3>
- * <ul>
- *   <li>Start group (<code>FILE_START</code>)</li>
- *   <li>End group (<code>FILE_END</code>)</li>
- *   <li>New action (<code>NEW</code>)</li>
- *   <li>Extra New-like action group (<code>NEW_EXT</code>)</li>
- *   <li>Close action (<code>CLOSE</code>)</li>
- *   <li>Close All action (<code>CLOSE_ALL</code>)</li>
- *   <li>Extra Close-like action group (<code>CLOSE_EXT</code>)</li>
- *   <li>Save action (<code>SAVE</code>)</li>
- *   <li>Save As action (<code>SAVE_AS</code>)</li>
- *   <li>Save All action (<code>SAVE_ALL</code>)</li>
- *   <li>Extra Save-like action group (<code>SAVE_EXT</code>)</li>
- *   <li>Import action (<code>IMPORT</code>)</li>
- *   <li>Export action (<code>EXPORT</code>)</li>
- *   <li>Extra Import-like action group (<code>IMPORT_EXT</code>)</li>
- *   <li>Quit action (<code>QUIT</code>)</li>
- * </ul>
- * <h3>Standard Edit menu actions</h3>
- * <ul>
- *   <li>Start group (<code>EDIT_START</code>)</li>
- *   <li>End group (<code>EDIT_END</code>)</li>
- *   <li>Undo global action (<code>UNDO</code>)</li>
- *   <li>Redo global action (<code>REDO</code>)</li>
- *   <li>Extra Undo-like action group (<code>UNDO_EXT</code>)</li>
- *   <li>Cut global action (<code>CUT</code>)</li>
- *   <li>Copy global action (<code>COPY</code>)</li>
- *   <li>Paste global action (<code>PASTE</code>)</li>
- *   <li>Extra Cut-like action group (<code>CUT_EXT</code>)</li>
- *   <li>Delete global action (<code>DELETE</code>)</li>
- *   <li>Find global action (<code>FIND</code>)</li>
- *   <li>Select All global action (<code>SELECT_ALL</code>)</li>
- *   <li>Bookmark global action (<code>BOOKMARK</code>)</li>
- * </ul>
- * <h3>Standard Perspective menu actions</h3>
- * <ul>
- *   <li>Extra Perspective-like action group (<code>VIEW_EXT</code>)</li>
- * </ul>
- * <h3>Standard Workbench menu actions</h3>
- * <ul>
- *   <li>Start group (<code>WB_START</code>)</li>
- *   <li>End group (<code>WB_END</code>)</li>
- *   <li>Extra Build-like action group (<code>BUILD_EXT</code>)</li>
- *   <li>Build action (<code>BUILD</code>)</li>
- *   <li>Rebuild All action (<code>REBUILD_ALL</code>)</li>
- * </ul>
- * <h3>Standard Window menu actions</h3>
- * <ul>
- *   <li>Extra Window-like action group (<code>WINDOW_EXT</code>)</li>
- * </ul>
- * <h3>Standard Help menu actions</h3>
- * <ul>
- *   <li>Start group (<code>HELP_START</code>)</li>
- *   <li>End group (<code>HELP_END</code>)</li>
- *   <li>About action (<code>ABOUT</code>)</li>
- * </ul>
- * <h3>Standard pop-up menu groups</h3>
- * <ul>
- *   <li>Managing group (<code>GROUP_MANAGING</code>)</li>
- *   <li>Reorganize group (<code>GROUP_REORGANIZE</code>)</li>
- *   <li>Add group (<code>GROUP_ADD</code>)</li>
- *   <li>File group (<code>GROUP_FILE</code>)</li>
- * </ul>
- * <p>
- * To hook a global action handler, a view should use the following code:
- * <code>
- *   IAction copyHandler = ...;
- *   view.getSite().getActionBars().setGlobalActionHandler(
- *       IWorkbenchActionConstants.COPY, 
- *       copyHandler);
- * </code>
- * For editors, this should be done in the <code>IEditorActionBarContributor</code>.
- * </p>
- *  
- * @see org.eclipse.ui.IActionBars#setGlobalActionHandler
- * 
- * Note: many of the remaining non-deprecated constants here are IDE-specific
- *   and should be deprecated and moved to a constant pool at the IDE layer
- *   (e.g. IIDEActionConstants).
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchActionConstants {
-
-    // Standard menus:
-    /**
-     * <p>
-     * [Issue: MENU_PREFIX is "". It is used to prefix some of the other
-     * constants. There doesn't seem to be much point for this.
-     * Recommend deleting it.
-     * ]
-     * </p>
-     */
-    public static final String MENU_PREFIX = ""; //$NON-NLS-1$
-
-    /**
-     * <p>
-     * [Issue: SEP is "/". It is not used anywhere. Recommend deleting it.]
-     * </p>
-     */
-    public static final String SEP = "/"; //$NON-NLS-1$
-
-    /**
-     * Name of standard File menu (value <code>"file"</code>).
-     */
-    public static final String M_FILE = MENU_PREFIX + "file"; //$NON-NLS-1$
-
-    /**
-     * Name of standard Edit menu (value <code>"edit"</code>).
-     */
-    public static final String M_EDIT = MENU_PREFIX + "edit"; //$NON-NLS-1$
-
-    /**
-     * Name of standard View menu (value <code>"view"</code>).
-     * @deprecated Since 3.0.  This is no longer used.
-     */
-    public static final String M_VIEW = MENU_PREFIX + "view"; //$NON-NLS-1$
-
-    /**
-     * Name of standard Workbench menu (value <code>"workbench"</code>).
-     * @deprecated Since 3.0.  This is no longer used.
-     */
-    public static final String M_WORKBENCH = MENU_PREFIX + "workbench"; //$NON-NLS-1$
-
-    // menu reorg
-
-    /**
-     * Name of standard Navigate menu (value <code>"navigate"</code>).
-     */
-    public static final String M_NAVIGATE = MENU_PREFIX + "navigate"; //$NON-NLS-1$
-
-    /**
-     * Name of standard Project menu (value <code>"project"</code>).
-     */
-    public static final String M_PROJECT = MENU_PREFIX + "project"; //$NON-NLS-1$
-
-    // end menu reorg
-
-    /**
-     * Name of standard Window menu (value <code>"window"</code>).
-     */
-    public static final String M_WINDOW = MENU_PREFIX + "window"; //$NON-NLS-1$
-
-    /**
-     * Name of Launch window menu (value <code>"launch"</code>).
-     */
-    public static final String M_LAUNCH = MENU_PREFIX + "launch"; //$NON-NLS-1$
-
-    /**
-     * Name of standard Help menu (value <code>"help"</code>).
-     */
-    public static final String M_HELP = MENU_PREFIX + "help"; //$NON-NLS-1$
-
-    // Standard area for adding top level menus:
-    /**
-     * Name of group for adding new top-level menus (value <code>"additions"</code>).
-     */
-    public static final String MB_ADDITIONS = "additions"; // Group. //$NON-NLS-1$
-
-    // Standard file actions:
-    /**
-     * File menu: name of group for start of menu (value <code>"fileStart"</code>).
-     */
-    public static final String FILE_START = "fileStart"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of group for end of menu (value <code>"fileEnd"</code>).
-     */
-    public static final String FILE_END = "fileEnd"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard New action (value <code>"new"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ActionFactory.NEW.getId()</code>
-     * instead.
-     */
-    public static final String NEW = "new"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of group for extra New-like actions (value <code>"new.ext"</code>).
-     */
-    public static final String NEW_EXT = "new.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Close action (value <code>"close"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#CLOSE
-     * ActionFactory.CLOSE.getId()} instead.
-     */
-    public static final String CLOSE = "close"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Close All action (value <code>"closeAll"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#CLOSE_ALL
-     * ActionFactory.CLOSE_ALL.getId()} instead.
-     */
-    public static final String CLOSE_ALL = "closeAll"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of group for extra Close-like actions (value <code>"close.ext"</code>).
-     */
-    public static final String CLOSE_EXT = "close.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Save action (value <code>"save"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#SAVE
-     * ActionFactory.SAVE.getId()} instead.
-     */
-    public static final String SAVE = "save"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Save As action (value <code>"saveAs"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#SAVE_AS
-     * ActionFactory.SAVE_AS.getId()} instead.
-     */
-    public static final String SAVE_AS = "saveAs"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Save All action (value <code>"saveAll"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#SAVE_ALL
-     * ActionFactory.SAVE_ALL.getId()} instead.
-     */
-    public static final String SAVE_ALL = "saveAll"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of group for extra Save-like actions (value <code>"save.ext"</code>).
-     */
-    public static final String SAVE_EXT = "save.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Print global action 
-     * (value <code>"print"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#PRINT
-     * ActionFactory.PRINT.getId()} instead.
-     */
-    public static final String PRINT = "print"; // Global action. //$NON-NLS-1$
-
-    /**
-     * File menu: name of group for extra Print-like actions (value <code>"print.ext"</code>).
-     * @since 3.0
-     */
-    public static final String PRINT_EXT = "print.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Import action (value <code>"import"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ActionFactory.IMPORT.getId()</code>
-     * instead.
-     */
-    public static final String IMPORT = "import"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Export action (value <code>"export"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ActionFactory.EXPORT.getId()</code>
-     * instead.
-     */
-    public static final String EXPORT = "export"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of group for extra Import-like actions (value <code>"import.ext"</code>).
-     */
-    public static final String IMPORT_EXT = "import.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * File menu: name of "Most Recently Used File" group.
-     * (value <code>"mru"</code>).
-     */
-    public static final String MRU = "mru"; //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Quit action (value <code>"quit"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#QUIT
-     * ActionFactory.QUIT.getId()} instead.
-     */
-    public static final String QUIT = "quit"; //$NON-NLS-1$
-
-    // Standard edit actions:
-    /**
-     * Edit menu: name of group for start of menu (value <code>"editStart"</code>).
-     */
-    public static final String EDIT_START = "editStart"; // Group. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of group for end of menu (value <code>"editEnd"</code>).
-     */
-    public static final String EDIT_END = "editEnd"; // Group. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Undo global action 
-     * (value <code>"undo"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#UNDO
-     * ActionFactory.UNDO.getId()} instead.
-     */
-    public static final String UNDO = "undo"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Redo global action 
-     * (value <code>"redo"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#REDO
-     * ActionFactory.REDO.getId()} instead.
-     */
-    public static final String REDO = "redo"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of group for extra Undo-like actions (value <code>"undo.ext"</code>).
-     */
-    public static final String UNDO_EXT = "undo.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Cut global action 
-     * (value <code>"cut"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#CUT
-     * ActionFactory.CUT.getId()} instead.
-     */
-    public static final String CUT = "cut"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Copy global action
-     * (value <code>"copy"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#COPY
-     * ActionFactory.COPY.getId()} instead.
-     */
-    public static final String COPY = "copy"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Paste global action 
-     * (value <code>"paste"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#PASTE
-     * ActionFactory.PASTE.getId()} instead.
-     */
-    public static final String PASTE = "paste"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of group for extra Cut-like actions (value <code>"cut.ext"</code>).
-     */
-    public static final String CUT_EXT = "cut.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Delete global action 
-     * (value <code>"delete"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#DELETE
-     * ActionFactory.DELETE.getId()} instead.
-     */
-    public static final String DELETE = "delete"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Find global action
-     * (value <code>"find"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#FIND
-     * ActionFactory.FIND.getId()} instead.
-     */
-    public static final String FIND = "find"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of group for extra Find-like actions (value <code>"find.ext"</code>).
-     */
-    public static final String FIND_EXT = "find.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Select All global action
-     * (value <code>"selectAll"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#SELECT_ALL
-     * ActionFactory.SELECT_ALL.getId()} instead.
-     */
-    public static final String SELECT_ALL = "selectAll"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Add Bookmark global action
-     * (value <code>"bookmark"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.BOOKMARK.getId()</code>
-     * instead.
-     */
-    public static final String BOOKMARK = "bookmark"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Add Task global action
-     * (value <code>"addTask"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.ADD_TASK.getId()</code>
-     * instead.
-     */
-    public static final String ADD_TASK = "addTask"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of group for extra Add-like actions (value <code>"add.ext"</code>).
-     */
-    public static final String ADD_EXT = "add.ext"; // Group. //$NON-NLS-1$
-
-    // Standard workbench actions:
-    /**
-     * Workbench menu: name of group for start of menu
-     * (value <code>"wbStart"</code>).
-     */
-    public static final String WB_START = "wbStart"; // Group. //$NON-NLS-1$
-
-    /**
-     * Workbench menu: name of group for end of menu
-     * (value <code>"wbEnd"</code>).
-     */
-    public static final String WB_END = "wbEnd"; // Group. //$NON-NLS-1$
-
-    /**
-     * Workbench menu: name of group for extra Build-like actions
-     * (value <code>"build.ext"</code>).
-     */
-    public static final String BUILD_EXT = "build.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * Workbench menu: name of standard Build action 
-     * (value <code>"build"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.BUILD.getId()</code>
-     * instead.
-     */
-    public static final String BUILD = "build"; //$NON-NLS-1$
-
-    /**
-     * Workbench menu: name of standard Rebuild All action 
-     * (value <code>"rebuildAll"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.REBUILD_ALL.getId()</code>
-     * instead.
-     */
-    public static final String REBUILD_ALL = "rebuildAll"; //$NON-NLS-1$
-
-    // Workbench toolbar ids:
-    /**
-     * Workbench toolbar id for file toolbar group.
-     * 
-     * @since 2.1
-     */
-    public static final String TOOLBAR_FILE = "org.eclipse.ui.workbench.file"; //$NON-NLS-1$
-
-    /**
-     * Workbench toolbar id for navigate toolbar group.
-     * 
-     * @since 2.1
-     */
-    public static final String TOOLBAR_NAVIGATE = "org.eclipse.ui.workbench.navigate"; //$NON-NLS-1$
-
-    /**
-     * Workbench toolbar id for help toolbar group.
-     * 
-     * @since 3.1
-     */
-    public static final String TOOLBAR_HELP = "org.eclipse.ui.workbench.help"; //$NON-NLS-1$    
-
-    // Workbench toolbar group ids.  To add an item at the beginning of the group, 
-    // use the GROUP id.  To add an item at the end of the group, use the EXT id.
-   
-    /**
-     * Group id for pin toolbar group.
-     * 
-     * @since 2.1
-     */
-    public static final String PIN_GROUP = "pin.group"; //$NON-NLS-1$
-
-    /**
-     * Group id for history toolbar group.
-     * 
-     * @since 2.1
-     */
-    public static final String HISTORY_GROUP = "history.group"; //$NON-NLS-1$
-
-    /**
-     * Group id for new toolbar group.
-     * 
-     * @since 2.1
-     */
-    public static final String NEW_GROUP = "new.group"; //$NON-NLS-1$
-
-    /**
-     * Group id for save group.
-     * 
-     * @since 2.1
-     */
-    public static final String SAVE_GROUP = "save.group"; //$NON-NLS-1$
-    
-    /**
-     * Group id for build group.
-     * 
-     * @since 2.1
-     */
-    public static final String BUILD_GROUP = "build.group"; //$NON-NLS-1$
-
-    // Pop-up menu groups:
-    /**
-     * Pop-up menu: name of group for Managing actions (value <code>"group.managing"</code>).
-     */
-    public static final String GROUP_MANAGING = "group.managing"; //$NON-NLS-1$
-
-    /**
-     * Pop-up menu: name of group for Reorganize actions (value <code>"group.reorganize"</code>).
-     */
-    public static final String GROUP_REORGANIZE = "group.reorganize"; //$NON-NLS-1$
-
-    /**
-     * Pop-up menu: name of group for Add actions (value <code>"group.add"</code>).
-     */
-    public static final String GROUP_ADD = "group.add"; //$NON-NLS-1$
-
-    /**
-     * Pop-up menu: name of group for File actions (value <code>"group.file"</code>).
-     */
-    public static final String GROUP_FILE = "group.file"; //$NON-NLS-1$
-
-    /**
-     * Pop-up menu: name of group for Show In actions (value <code>"group.showIn"</code>).
-     * 
-     * @since 2.1
-     */
-    public static final String GROUP_SHOW_IN = "group.showIn"; //$NON-NLS-1$
-
-    /**
-     * Coolbar: name of group for application created actions
-     * 
-     * @since 3.0
-     */
-    public static final String GROUP_APP = "group.application"; //$NON-NLS-1$
-
-    /**
-     * Toolbar: name of group for editor action bars.
-     */
-    public static final String GROUP_EDITOR = "group.editor"; //$NON-NLS-1$
-    
-    /**
-     * Coolbar: name of group for help actions and contributions
-     * 
-     * @since 3.1
-     */
-    public static final String GROUP_HELP = "group.help"; //$NON-NLS-1$    
-
-    // Standard view actions:
-    /**
-     * View menu: name of group for additional view-like items.
-     * (value <code>"additions"</code>).
-     */
-    public static final String VIEW_EXT = MB_ADDITIONS; // Group.
-
-    // Standard window actions:
-    /**
-     * Window menu: name of group for additional window-like items.
-     * (value <code>"additions"</code>).
-     */
-    public static final String WINDOW_EXT = MB_ADDITIONS; // Group.
-
-    /**
-     * Launch menu: name of group for launching additional windows.
-     * (value <code>"additions"</code>).
-     */
-    public static final String LAUNCH_EXT = MB_ADDITIONS; // Group.
-
-    // menu reorg
-    /**
-     * File menu: name of standard Revert global action
-     * (value <code>"revert"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#REVERT
-     * ActionFactory.REVERT.getId()} instead.
-     */
-    public static final String REVERT = "revert"; // Global action. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Refresh global action
-     * (value <code>"refresh"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#REFRESH
-     * ActionFactory.REFRESH.getId()} instead.
-     */
-    public static final String REFRESH = "refresh"; // Global action. //$NON-NLS-1$
-
-    /**
-     * File menu: name of standard Properties global action
-     * (value <code>"properties"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#PROPERTIES
-     * ActionFactory.PROPERTIES.getId()} instead.
-     */
-    public static final String PROPERTIES = "properties"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Move global action
-     * (value <code>"move"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#MOVE
-     * ActionFactory.MOVE.getId()} instead.
-     */
-    public static final String MOVE = "move"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Rename global action
-     * (value <code>"rename"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#RENAME
-     * ActionFactory.RENAME.getId()} instead.
-     */
-    public static final String RENAME = "rename"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Edit menu: name of standard Add Task global action
-     * (value <code>"addTask"</code>).
-     */
-    //	public static final String ADD_TASK = "addTask";	// Global action. //$NON-NLS-1$
-    /**
-     * Navigate menu: name of group for start of menu
-     * (value <code>"navStart"</code>).
-     */
-    public static final String NAV_START = "navStart"; // Group. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of group for end of menu
-     * (value <code>"navEnd"</code>).
-     */
-    public static final String NAV_END = "navEnd"; // Group. //$NON-NLS-1$
-
-    /**
-     * File and Navigate menu: name of group for extra Open actions
-     * (value <code>"open.ext"</code>).
-     */
-    public static final String OPEN_EXT = "open.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of group for extra Show actions
-     * (value <code>"show.ext"</code>).
-     */
-    public static final String SHOW_EXT = "show.ext"; // Group. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Go Into global action
-     * (value <code>"goInto"</code>).
-     */
-    public static final String GO_INTO = "goInto"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Go To submenu
-     * (value <code>"goTo"</code>).
-     */
-    public static final String GO_TO = "goTo"; //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Go To Resource global action
-     * (value <code>"goToResource"</code>).
-     */
-    public static final String GO_TO_RESOURCE = "goToResource"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Sync With Editor global action (value
-     * <code>"syncEditor"</code>).
-     * 
-     * @deprecated this action will be removed soon; use SHOW_IN instead 
-     */
-    public static final String SYNC_EDITOR = "syncEditor"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Show In... action 
-     * (value <code>"showIn"</code>).
-     * 
-     * @see org.eclipse.ui.internal.ShowInAction
-     * @since 2.1
-     * 
-     * @deprecated
-     */
-    public static final String SHOW_IN = "showIn"; //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Back global action
-     * (value <code>"back"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#BACK
-     * ActionFactory.BACK.getId()} instead.
-     */
-    public static final String BACK = "back"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Forward global action
-     * (value <code>"forward"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#FORWARD
-     * ActionFactory.FORWARD.getId()} instead.
-     */
-    public static final String FORWARD = "forward"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Up global action
-     * (value <code>"up"</code>).
-     */
-    public static final String UP = "up"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Next global action
-     * (value <code>"next"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#NEXT
-     * ActionFactory.NEXT.getId()} instead.
-     */
-    public static final String NEXT = "next"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Navigate menu: name of standard Up global action
-     * (value <code>"previous"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#PREVIOUS
-     * ActionFactory.PREVIOUS.getId()} instead.
-     */
-    public static final String PREVIOUS = "previous"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Project menu: name of group for start of menu
-     * (value <code>"projStart"</code>).
-     */
-    public static final String PROJ_START = "projStart"; // Group. //$NON-NLS-1$
-
-    /**
-     * Project menu: name of group for start of menu
-     * (value <code>"projEnd"</code>).
-     */
-    public static final String PROJ_END = "projEnd"; // Group. //$NON-NLS-1$
-
-    /**
-     * Project menu: name of standard Build Project global action
-     * (value <code>"buildProject"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.BUILD_PROJECT.getId()</code>
-     * instead.
-     */
-    public static final String BUILD_PROJECT = "buildProject"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Project menu: name of standard Rebuild Project global action
-     * (value <code>"rebuildProject"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.REBUILD_PROJECT.getId()</code>
-     * instead.
-     */
-    public static final String REBUILD_PROJECT = "rebuildProject"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Project menu: name of standard Open Project global action
-     * (value <code>"openProject"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.OPEN_PROJECT.getId()</code>
-     * instead.
-     */
-    public static final String OPEN_PROJECT = "openProject"; // Global action. //$NON-NLS-1$
-
-    /**
-     * Project menu: name of standard Close Project global action
-     * (value <code>"closeProject"</code>).
-     * 
-     * @deprecated in 3.0. Use
-     * <code>org.eclipse.ui.ide.IDEActionFactory.CLOSE_PROJECT.getId()</code>
-     * instead.
-     */
-    public static final String CLOSE_PROJECT = "closeProject"; // Global action. //$NON-NLS-1$
-    // end menu reorg
-
-    // Standard help actions:
-    /**
-     * Help menu: name of group for start of menu
-     * (value <code>"helpStart"</code>).
-     */
-    public static final String HELP_START = "helpStart"; // Group. //$NON-NLS-1$
-
-    /**
-     * Help menu: name of group for end of menu
-     * (value <code>"helpEnd"</code>).
-     */
-    public static final String HELP_END = "helpEnd"; // Group. //$NON-NLS-1$
-
-    /**
-     * Help menu: name of standard About action 
-     * (value <code>"about"</code>).
-     * 
-     * @deprecated in 3.0. Use {@link org.eclipse.ui.actions.ActionFactory#ABOUT
-     * ActionFactory.ABOUT.getId()} instead.
-     */
-    public static final String ABOUT = "about"; //$NON-NLS-1$
-
-    /**
-     * Standard global actions in a workbench window.
-     * 
-     * @deprecated in 3.0
-     */
-    public static final String[] GLOBAL_ACTIONS = { UNDO, REDO, CUT, COPY,
-            PASTE, PRINT, DELETE, FIND, SELECT_ALL, BOOKMARK };
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchListener.java
deleted file mode 100644
index e0a3688..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchListener.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for listening to workbench lifecycle events.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- *
- * @see IWorkbench#addWorkbenchListener
- * @see IWorkbench#removeWorkbenchListener
- * @since 3.2
- */
-public interface IWorkbenchListener {
-	
-    /**
-     * Notifies that the workbench is about to shut down.
-     * <p>
-     * This method is called immediately prior to workbench shutdown before any
-     * windows have been closed.
-     * </p>
-     * <p>
-     * The listener may veto a regular shutdown by returning <code>false</code>, 
-     * although this will be ignored if the workbench is being forced to shut down.
-     * </p>
-     * <p>
-     * Since other workbench listeners may veto the shutdown, the listener should
-     * not dispose resources or do any other work during this notification that would 
-     * leave the workbench in an inconsistent state.
-     * </p>
-     * 
-     * @param workbench the workbench
-     * @param forced <code>true</code> if the workbench is being forced to shutdown,
-     *   <code>false</code> for a regular close
-     * @return <code>true</code> to allow the workbench to proceed with shutdown,
-     *   <code>false</code> to veto a non-forced shutdown
-     */
-    public boolean preShutdown(IWorkbench workbench, boolean forced);
-
-    /**
-     * Performs arbitrary finalization after the workbench stops running.
-     * <p>
-     * This method is called during workbench shutdown after all windows
-     * have been closed.
-     * </p>
-     * 
-     * @param workbench the workbench
-     */
-    public void postShutdown(IWorkbench workbench);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
deleted file mode 100644
index 9411bf6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPage.java
+++ /dev/null
@@ -1,1137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.ui.internal.ICompatibleWorkbenchPage;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * A workbench page consists of an arrangement of views and editors intended to
- * be presented together to the user in a single workbench window.
- * <p>
- * A page can contain 0 or more views and 0 or more editors. These views and
- * editors are contained wholly within the page and are not shared with other
- * pages. The layout and visible action set for the page is defined by a
- * perspective.
- * <p>
- * The number of views and editors within a page is restricted to simplify part
- * management for the user. In particular:
- * <ul>
- * <li>Unless a view explicitly allows for multiple instances in its plugin
- * declaration there will be only one instance in a given workbench page.</li>
- * <li>Only one editor can exist for each editor input within a page.
- * <li>
- * </ul>
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IPerspectiveDescriptor
- * @see IEditorPart
- * @see IViewPart
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchPage extends IPartService, ISelectionService,
-		ICompatibleWorkbenchPage {
-	/**
-	 * An optional attribute within a workspace marker (<code>IMarker</code>)
-	 * which identifies the preferred editor type to be opened when
-	 * <code>openEditor</code> is called.
-	 * 
-	 * @see #openEditor(IEditorInput, String)
-	 * @see #openEditor(IEditorInput, String, boolean)
-	 * @deprecated in 3.0 since the notion of markers this is not generally
-	 *             applicable. Use the IDE-specific constant
-	 *             <code>IDE.EDITOR_ID_ATTR</code>.
-	 */
-	public static final String EDITOR_ID_ATTR = "org.eclipse.ui.editorID"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when the perspective is reset to its original state.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_RESET = "reset"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when the perspective has completed a reset to its
-	 * original state.
-	 * 
-	 * @since 3.0
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_RESET_COMPLETE = "resetComplete"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when one or more views are shown in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_VIEW_SHOW = "viewShow"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when one or more views are hidden in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_VIEW_HIDE = "viewHide"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when one or more editors are opened in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_EDITOR_OPEN = "editorOpen"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when one or more editors are closed in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_EDITOR_CLOSE = "editorClose"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when the editor area is shown in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_EDITOR_AREA_SHOW = "editorAreaShow"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when the editor area is hidden in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_EDITOR_AREA_HIDE = "editorAreaHide"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when an action set is shown in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_ACTION_SET_SHOW = "actionSetShow"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when an action set is hidden in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_ACTION_SET_HIDE = "actionSetHide"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when a fast view is added in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_FAST_VIEW_ADD = "fastViewAdd"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when a fast view is removed in a perspective.
-	 * 
-	 * @see IPerspectiveListener
-	 */
-	public static final String CHANGE_FAST_VIEW_REMOVE = "fastViewRemove"; //$NON-NLS-1$
-
-	/**
-	 * Change event id when the page working set was replaced
-	 * 
-	 * @see IPropertyChangeListener
-	 */
-	public static final String CHANGE_WORKING_SET_REPLACE = "workingSetReplace"; //$NON-NLS-1$	 
-
-	/**
-	 * Change event id when the page working set list was replaced
-	 * 
-	 * @see IPropertyChangeListener
-	 * @since 3.2
-	 */
-	public static final String CHANGE_WORKING_SETS_REPLACE = "workingSetsReplace"; //$NON-NLS-1$	 
-
-	/**
-	 * Show view mode that indicates the view should be made visible and
-	 * activated. Use of this mode has the same effect as calling
-	 * {@link #showView(String)}.
-	 * 
-	 * @since 3.0
-	 */
-	public static final int VIEW_ACTIVATE = 1;
-
-	/**
-	 * Show view mode that indicates the view should be made visible. If the
-	 * view is opened in the container that contains the active view then this
-	 * has the same effect as <code>VIEW_CREATE</code>.
-	 * 
-	 * @since 3.0
-	 */
-	public static final int VIEW_VISIBLE = 2;
-
-	/**
-	 * Show view mode that indicates the view should be made created but not
-	 * necessarily be made visible. It will only be made visible in the event
-	 * that it is opened in its own container. In other words, only if it is not
-	 * stacked with another view.
-	 * 
-	 * @since 3.0
-	 */
-	public static final int VIEW_CREATE = 3;
-
-	/**
-	 * Editor opening match mode specifying that no matching against existing
-	 * editors should be done.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int MATCH_NONE = 0;
-
-	/**
-	 * Editor opening match mode specifying that the editor input should be
-	 * considered when matching against existing editors.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int MATCH_INPUT = 1;
-
-	/**
-	 * Editor opening match mode specifying that the editor id should be
-	 * considered when matching against existing editors.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int MATCH_ID = 2;
-
-	/**
-	 * State of a view in a given page when the view stack is minimized.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int STATE_MINIMIZED = IStackPresentationSite.STATE_MINIMIZED;
-
-	/**
-	 * State of a view in a given page when the page is zoomed in on the view
-	 * stack.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int STATE_MAXIMIZED = IStackPresentationSite.STATE_MAXIMIZED;
-
-	/**
-	 * State of a view in a given page when the view stack is in it's normal
-	 * state.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int STATE_RESTORED = IStackPresentationSite.STATE_RESTORED;
-
-	/**
-	 * Activates the given part. The part will be brought to the front and given
-	 * focus. The part must belong to this page.
-	 * 
-	 * @param part
-	 *            the part to activate
-	 */
-	public void activate(IWorkbenchPart part);
-
-	/**
-	 * Adds a property change listener.
-	 * 
-	 * @param listener
-	 *            the property change listener to add
-	 * @since 2.0
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener);
-
-	/**
-	 * Moves the given part forward in the Z order of this page so as to make it
-	 * visible, without changing which part has focus. The part must belong to
-	 * this page.
-	 * 
-	 * @param part
-	 *            the part to bring forward
-	 */
-	public void bringToTop(IWorkbenchPart part);
-
-	/**
-	 * Closes this workbench page. If this page is the active one, this honor is
-	 * passed along to one of the window's other pages if possible.
-	 * <p>
-	 * If the page has an open editor with unsaved content, the user will be
-	 * given the opportunity to save it.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the page was successfully closed, and
-	 *         <code>false</code> if it is still open
-	 */
-	public boolean close();
-
-	/**
-	 * Closes all of the editors belonging to this workbench page.
-	 * <p>
-	 * If the page has open editors with unsaved content and <code>save</code>
-	 * is <code>true</code>, the user will be given the opportunity to save
-	 * them.
-	 * </p>
-	 * 
-	 * @param save
-	 * 
-	 * @return <code>true</code> if all editors were successfully closed, and
-	 *         <code>false</code> if at least one is still open
-	 */
-	public boolean closeAllEditors(boolean save);
-
-	/**
-	 * Closes the given <code>Array</code> of editor references. The editors
-	 * must belong to this workbench page.
-	 * <p>
-	 * If any of the editors have unsaved content and <code>save</code> is
-	 * <code>true</code>, the user will be given the opportunity to save
-	 * them.
-	 * </p>
-	 * 
-	 * @param editorRefs
-	 *            the editors to close
-	 * @param save
-	 *            <code>true</code> to save the editor contents if required
-	 *            (recommended), and <code>false</code> to discard any unsaved
-	 *            changes
-	 * @return <code>true</code> if the editors were successfully closed, and
-	 *         <code>false</code> if the editors are still open
-	 * @since 3.0
-	 */
-	public boolean closeEditors(IEditorReference[] editorRefs, boolean save);
-
-	/**
-	 * Closes the given editor. The editor must belong to this workbench page.
-	 * <p>
-	 * If the editor has unsaved content and <code>save</code> is
-	 * <code>true</code>, the user will be given the opportunity to save it.
-	 * </p>
-	 * 
-	 * @param editor
-	 *            the editor to close
-	 * @param save
-	 *            <code>true</code> to save the editor contents if required
-	 *            (recommended), and <code>false</code> to discard any unsaved
-	 *            changes
-	 * @return <code>true</code> if the editor was successfully closed, and
-	 *         <code>false</code> if the editor is still open
-	 */
-	public boolean closeEditor(IEditorPart editor, boolean save);
-
-	/**
-	 * Returns the view in this page with the specified id. There is at most one
-	 * view in the page with the specified id.
-	 * 
-	 * @param viewId
-	 *            the id of the view extension to use
-	 * @return the view, or <code>null</code> if none is found
-	 */
-	public IViewPart findView(String viewId);
-
-	/**
-	 * Returns the view reference with the specified id.
-	 * 
-	 * @param viewId
-	 *            the id of the view extension to use
-	 * @return the view reference, or <code>null</code> if none is found
-	 * @since 3.0
-	 */
-	public IViewReference findViewReference(String viewId);
-
-	/**
-	 * Returns the view reference with the specified id and secondary id.
-	 * 
-	 * @param viewId
-	 *            the id of the view extension to use
-	 * @param secondaryId
-	 *            the secondary id to use, or <code>null</code> for no
-	 *            secondary id
-	 * @return the view reference, or <code>null</code> if none is found
-	 * @since 3.0
-	 */
-	public IViewReference findViewReference(String viewId, String secondaryId);
-
-	/**
-	 * Returns the active editor open in this page.
-	 * <p>
-	 * This is the visible editor on the page, or, if there is more than one
-	 * visible editor, this is the one most recently brought to top.
-	 * </p>
-	 * 
-	 * @return the active editor, or <code>null</code> if no editor is active
-	 */
-	public IEditorPart getActiveEditor();
-
-	/**
-	 * Returns the editor with the specified input. Returns null if there is no
-	 * opened editor with that input.
-	 * 
-	 * @param input
-	 *            the editor input
-	 * @return an editor with input equals to <code>input</code>
-	 */
-	public IEditorPart findEditor(IEditorInput input);
-
-	/**
-	 * Returns an array of editor references that match the given input and/or
-	 * editor id, as specified by the given match flags. Returns an empty array
-	 * if there are no matching editors, or if matchFlags is MATCH_NONE.
-	 * 
-	 * @param input
-	 *            the editor input, or <code>null</code> if MATCH_INPUT is not
-	 *            specified in matchFlags
-	 * @param editorId
-	 *            the editor id, or <code>null</code> if MATCH_ID is not
-	 *            specified in matchFlags
-	 * @param matchFlags
-	 *            a bit mask consisting of zero or more of the MATCH_* constants
-	 *            OR-ed together
-	 * @return the references for the matching editors
-	 * 
-	 * @see #MATCH_NONE
-	 * @see #MATCH_INPUT
-	 * @see #MATCH_ID
-	 * @since 3.2
-	 */
-	public IEditorReference[] findEditors(IEditorInput input, String editorId,
-			int matchFlags);
-
-	/**
-	 * Returns a list of the editors open in this page.
-	 * <p>
-	 * Note that each page has its own editors; editors are never shared between
-	 * pages.
-	 * </p>
-	 * 
-	 * @return a list of open editors
-	 * 
-	 * @deprecated use #getEditorReferences() instead
-	 */
-	public IEditorPart[] getEditors();
-
-	/**
-	 * Returns an array of references to open editors in this page.
-	 * <p>
-	 * Note that each page has its own editors; editors are never shared between
-	 * pages.
-	 * </p>
-	 * 
-	 * @return a list of open editors
-	 */
-	public IEditorReference[] getEditorReferences();
-
-	/**
-	 * Returns a list of dirty editors in this page.
-	 * 
-	 * @return a list of dirty editors
-	 */
-	public IEditorPart[] getDirtyEditors();
-
-	/**
-	 * Returns the input for this page.
-	 * 
-	 * @return the input for this page, or <code>null</code> if none
-	 */
-	public IAdaptable getInput();
-
-	/**
-	 * Returns the page label. This will be a unique identifier within the
-	 * containing workbench window.
-	 * 
-	 * @return the page label
-	 */
-	public String getLabel();
-
-	/**
-	 * Returns the current perspective descriptor for this page, or
-	 * <code>null</code> if there is no current perspective.
-	 * 
-	 * @return the current perspective descriptor or <code>null</code>
-	 * @see #setPerspective
-	 * @see #savePerspective
-	 */
-	public IPerspectiveDescriptor getPerspective();
-
-	/**
-	 * Returns a list of the reference to views visible on this page.
-	 * <p>
-	 * Note that each page has its own views; views are never shared between
-	 * pages.
-	 * </p>
-	 * 
-	 * @return a list of references to visible views
-	 */
-	public IViewReference[] getViewReferences();
-
-	/**
-	 * Returns a list of the views visible on this page.
-	 * <p>
-	 * Note that each page has its own views; views are never shared between
-	 * pages.
-	 * </p>
-	 * 
-	 * @return a list of visible views
-	 * 
-	 * @deprecated use #getViewReferences() instead.
-	 */
-	public IViewPart[] getViews();
-
-	/**
-	 * Returns the workbench window of this page.
-	 * 
-	 * @return the workbench window
-	 */
-	public IWorkbenchWindow getWorkbenchWindow();
-
-	/**
-	 * Returns the working set of this page.
-	 * 
-	 * @return the working set of this page.
-	 * @since 2.0
-	 * @deprecated individual views should store a working set if needed
-	 */
-	public IWorkingSet getWorkingSet();
-
-	/**
-	 * Hides an action set in this page.
-	 * <p>
-	 * In most cases where this method is used the caller is tightly coupled to
-	 * a particular action set. They define it in the registry and may make it
-	 * visible in certain scenarios by calling <code>showActionSet</code>. A
-	 * static variable is often used to identify the action set id in caller
-	 * code.
-	 * </p>
-	 * 
-	 * @param actionSetID
-	 *            the action set to hide
-	 */
-	public void hideActionSet(String actionSetID);
-
-	/**
-	 * Hides the given view. The view must belong to this page.
-	 * 
-	 * @param view
-	 *            the view to hide
-	 */
-	public void hideView(IViewPart view);
-
-	/**
-	 * Hides the given view that belongs to the reference, if any.
-	 * 
-	 * @param view
-	 *            the references whos view is to be hidden
-	 * @since 3.0
-	 */
-	public void hideView(IViewReference view);
-
-	/**
-	 * Returns whether the specified part is visible.
-	 * 
-	 * @param part
-	 *            the part to test
-	 * @return boolean <code>true</code> if part is visible
-	 */
-	public boolean isPartVisible(IWorkbenchPart part);
-
-	/**
-	 * Returns whether the page's current perspective is showing the editor
-	 * area.
-	 * 
-	 * @return <code>true</code> when editor area visible, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isEditorAreaVisible();
-
-	/**
-	 * Reuses the specified editor by setting its new input.
-	 * 
-	 * @param editor
-	 *            the editor to be reused
-	 * @param input
-	 *            the new input for the reusable editor
-	 */
-	public void reuseEditor(IReusableEditor editor, IEditorInput input);
-
-	/**
-	 * Opens an editor on the given input.
-	 * <p>
-	 * If this page already has an editor open on the target input that editor
-	 * is activated; otherwise, a new editor is opened. Two editor inputs,
-	 * input1 and input2, are considered the same if
-	 * 
-	 * <pre>
-	 * input1.equals(input2) == true
-	 * </pre>.
-	 * </p>
-	 * <p>
-	 * The editor type is determined by mapping <code>editorId</code> to an
-	 * editor extension registered with the workbench. An editor id is passed
-	 * rather than an editor object to prevent the accidental creation of more
-	 * than one editor for the same input. It also guarantees a consistent
-	 * lifecycle for editors, regardless of whether they are created by the user
-	 * or restored from saved data.
-	 * </p>
-	 * 
-	 * @param input
-	 *            the editor input
-	 * @param editorId
-	 *            the id of the editor extension to use
-	 * @return an open and active editor, or <code>null</code> if an external
-	 *         editor was opened
-	 * @exception PartInitException
-	 *                if the editor could not be created or initialized
-	 */
-	public IEditorPart openEditor(IEditorInput input, String editorId)
-			throws PartInitException;
-
-	/**
-	 * Opens an editor on the given input.
-	 * <p>
-	 * If this page already has an editor open on the target input that editor
-	 * is brought to the front; otherwise, a new editor is opened. Two editor
-	 * inputs are considered the same if they equal. See
-	 * <code>Object.equals(Object)<code>
-	 * and <code>IEditorInput</code>. If <code>activate == true</code> the editor
-	 * will be activated.  
-	 * </p><p>
-	 * The editor type is determined by mapping <code>editorId</code> to an editor
-	 * extension registered with the workbench.  An editor id is passed rather than
-	 * an editor object to prevent the accidental creation of more than one editor
-	 * for the same input. It also guarantees a consistent lifecycle for editors,
-	 * regardless of whether they are created by the user or restored from saved 
-	 * data.
-	 * </p>
-	 * 
-	 * @param input the editor input
-	 * @param editorId the id of the editor extension to use
-	 * @param activate if <code>true</code> the editor will be activated
-	 * @return an open editor, or <code>null</code> if an external editor was opened
-	 * @exception PartInitException if the editor could not be created or initialized
-	 */
-	public IEditorPart openEditor(IEditorInput input, String editorId,
-			boolean activate) throws PartInitException;
-
-	/**
-	 * Opens an editor on the given input.
-	 * <p>
-	 * If this page already has an editor open that matches the given input
-	 * and/or editor id (as specified by the matchFlags argument), that editor
-	 * is brought to the front; otherwise, a new editor is opened. Two editor
-	 * inputs are considered the same if they equal. See
-	 * <code>Object.equals(Object)<code>
-	 * and <code>IEditorInput</code>. If <code>activate == true</code> the editor
-	 * will be activated.  
-	 * </p><p>
-	 * The editor type is determined by mapping <code>editorId</code> to an editor
-	 * extension registered with the workbench.  An editor id is passed rather than
-	 * an editor object to prevent the accidental creation of more than one editor
-	 * for the same input. It also guarantees a consistent lifecycle for editors,
-	 * regardless of whether they are created by the user or restored from saved 
-	 * data.
-	 * </p>
-	 * 
-	 * @param input the editor input
-	 * @param editorId the id of the editor extension to use
-	 * @param activate if <code>true</code> the editor will be activated
-	 * @param matchFlags a bit mask consisting of zero or more of the MATCH_* constants OR-ed together
-	 * @return an open editor, or <code>null</code> if an external editor was opened
-	 * @exception PartInitException if the editor could not be created or initialized
-	 * 
-	 * @see #MATCH_NONE
-	 * @see #MATCH_INPUT
-	 * @see #MATCH_ID
-	 * @since 3.2
-	 */
-	public IEditorPart openEditor(final IEditorInput input,
-			final String editorId, final boolean activate, final int matchFlags)
-			throws PartInitException;
-
-	/**
-	 * Removes the property change listener.
-	 * 
-	 * @param listener
-	 *            the property change listener to remove
-	 * @since 2.0
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener);
-
-	/**
-	 * Changes the visible views, their layout, and the visible action sets
-	 * within the page to match the current perspective descriptor. This is a
-	 * rearrangement of components and not a replacement. The contents of the
-	 * current perspective descriptor are unaffected.
-	 * <p>
-	 * For more information on perspective change see
-	 * <code>setPerspective()</code>.
-	 * </p>
-	 */
-	public void resetPerspective();
-
-	/**
-	 * Saves the contents of all dirty editors belonging to this workbench page.
-	 * If there are no dirty editors this method returns without effect.
-	 * <p>
-	 * If <code>confirm</code> is <code>true</code> the user is prompted to
-	 * confirm the command.
-	 * </p>
-	 * <p>
-	 * Note that as of 3.2, this method also saves views that implement
-	 * ISaveablePart and are dirty.
-	 * </p>
-	 * 
-	 * @param confirm <code>true</code> to ask the user before saving unsaved
-	 *            changes (recommended), and <code>false</code> to save
-	 *            unsaved changes without asking
-	 * @return <code>true</code> if the command succeeded, and
-	 *         <code>false</code> if the operation was canceled by the user or
-	 *         an error occurred while saving
-	 */
-	public boolean saveAllEditors(boolean confirm);
-
-	/**
-	 * Saves the contents of the given editor if dirty. If not, this method
-	 * returns without effect.
-	 * <p>
-	 * If <code>confirm</code> is <code>true</code> the user is prompted to
-	 * confirm the command. Otherwise, the save happens without prompt.
-	 * </p>
-	 * <p>
-	 * The editor must belong to this workbench page.
-	 * </p>
-	 * 
-	 * @param editor
-	 *            the editor to close
-	 * @param confirm
-	 *            <code>true</code> to ask the user before saving unsaved
-	 *            changes (recommended), and <code>false</code> to save
-	 *            unsaved changes without asking
-	 * @return <code>true</code> if the command succeeded, and
-	 *         <code>false</code> if the editor was not saved
-	 */
-	public boolean saveEditor(IEditorPart editor, boolean confirm);
-
-	/**
-	 * Saves the visible views, their layout, and the visible action sets for
-	 * this page to the current perspective descriptor. The contents of the
-	 * current perspective descriptor are overwritten.
-	 */
-	public void savePerspective();
-
-	/**
-	 * Saves the visible views, their layout, and the visible action sets for
-	 * this page to the given perspective descriptor. The contents of the given
-	 * perspective descriptor are overwritten and it is made the current one for
-	 * this page.
-	 * 
-	 * @param perspective
-	 *            the perspective descriptor to save to
-	 */
-	public void savePerspectiveAs(IPerspectiveDescriptor perspective);
-
-	/**
-	 * Show or hide the editor area for the page's active perspective.
-	 * 
-	 * @param showEditorArea
-	 *            <code>true</code> to show the editor area,
-	 *            <code>false</code> to hide the editor area
-	 */
-	public void setEditorAreaVisible(boolean showEditorArea);
-
-	/**
-	 * Changes the visible views, their layout, and the visible action sets
-	 * within the page to match the given perspective descriptor. This is a
-	 * rearrangement of components and not a replacement. The contents of the
-	 * old perspective descriptor are unaffected.
-	 * <p>
-	 * When a perspective change occurs the old perspective is deactivated
-	 * (hidden) and cached for future reference. Then the new perspective is
-	 * activated (shown). The views within the page are shared by all existing
-	 * perspectives to make it easy for the user to switch between one
-	 * perspective and another quickly without loss of context.
-	 * </p>
-	 * <p>
-	 * During activation the action sets are modified. If an action set is
-	 * specified in the new perspective which is not visible in the old one it
-	 * will be created. If an old action set is not specified in the new
-	 * perspective it will be disposed.
-	 * </p>
-	 * <p>
-	 * The visible views and their layout within the page also change. If a view
-	 * is specified in the new perspective which is not visible in the old one a
-	 * new instance of the view will be created. If an old view is not specified
-	 * in the new perspective it will be hidden. This view may reappear if the
-	 * user selects it from the View menu or if they switch to a perspective
-	 * (which may be the old one) where the view is visible.
-	 * </p>
-	 * <p>
-	 * The open editors are not modified by this method.
-	 * </p>
-	 * 
-	 * @param perspective
-	 *            the perspective descriptor
-	 */
-	public void setPerspective(IPerspectiveDescriptor perspective);
-
-	/**
-	 * Shows an action set in this page.
-	 * <p>
-	 * In most cases where this method is used the caller is tightly coupled to
-	 * a particular action set. They define it in the registry and may make it
-	 * visible in certain scenarios by calling <code>showActionSet</code>. A
-	 * static variable is often used to identify the action set id in caller
-	 * code.
-	 * </p>
-	 * 
-	 * @param actionSetID
-	 *            the action set to show
-	 */
-	public void showActionSet(String actionSetID);
-
-	/**
-	 * Shows the view identified by the given view id in this page and gives it
-	 * focus. If there is a view identified by the given view id (and with no
-	 * secondary id) already open in this page, it is given focus.
-	 * 
-	 * @param viewId
-	 *            the id of the view extension to use
-	 * @return the shown view
-	 * @exception PartInitException
-	 *                if the view could not be initialized
-	 */
-	public IViewPart showView(String viewId) throws PartInitException;
-
-	/**
-	 * Shows a view in this page with the given id and secondary id. The
-	 * behaviour of this method varies based on the supplied mode. If
-	 * <code>VIEW_ACTIVATE</code> is supplied, the view is focus. If
-	 * <code>VIEW_VISIBLE</code> is supplied, then it is made visible but not
-	 * given focus. Finally, if <code>VIEW_CREATE</code> is supplied the view
-	 * is created and will only be made visible if it is not created in a folder
-	 * that already contains visible views.
-	 * <p>
-	 * This allows multiple instances of a particular view to be created. They
-	 * are disambiguated using the secondary id. If a secondary id is given, the
-	 * view must allow multiple instances by having specified
-	 * allowMultiple="true" in its extension.
-	 * </p>
-	 * 
-	 * @param viewId
-	 *            the id of the view extension to use
-	 * @param secondaryId
-	 *            the secondary id to use, or <code>null</code> for no
-	 *            secondary id
-	 * @param mode
-	 *            the activation mode. Must be {@link #VIEW_ACTIVATE},
-	 *            {@link #VIEW_VISIBLE} or {@link #VIEW_CREATE}
-	 * @return a view
-	 * @exception PartInitException
-	 *                if the view could not be initialized
-	 * @exception IllegalArgumentException
-	 *                if the supplied mode is not valid
-	 * @since 3.0
-	 */
-	public IViewPart showView(String viewId, String secondaryId, int mode)
-			throws PartInitException;
-
-	/**
-	 * Returns <code>true</code> if the editor is pinned and should not be
-	 * reused.
-	 * 
-	 * @param editor
-	 *            the editor to test
-	 * @return boolean whether the editor is pinned
-	 */
-	public boolean isEditorPinned(IEditorPart editor);
-
-	/**
-	 * Returns the number of open editors before reusing editors.
-	 * 
-	 * @return a int
-	 * 
-	 * @deprecated
-	 */
-	public int getEditorReuseThreshold();
-
-	/**
-	 * Set the number of open editors before reusing editors. If < 0 the user
-	 * preference settings will be used.
-	 * 
-	 * @param openEditors
-	 *            the threshold
-	 * @deprecated use IPageLayout.setEditorReuseThreshold(int openEditors)
-	 *             instead.
-	 */
-	public void setEditorReuseThreshold(int openEditors);
-
-	/**
-	 * Returns the navigation history which manages a list of entries keeping
-	 * the history of places (positions, selection and editors) the user visited
-	 * making it easier to the user to move back and forward without losing
-	 * context.
-	 * 
-	 * @return the navigation history
-	 * @since 2.1
-	 */
-	public INavigationHistory getNavigationHistory();
-
-	/**
-	 * Returns an array of IViewParts that are stacked with the given part.
-	 * 
-	 * @param part
-	 *            the part to test
-	 * @return the parts that are stacked with this part, including the part in
-	 *         question. <code>null</code> is returned if the part does not
-	 *         belong to this page.
-	 * @since 3.0
-	 */
-	IViewPart[] getViewStack(IViewPart part);
-
-	/**
-	 * Returns the new wizard shortcuts associated with the current perspective.
-	 * Returns an empty array if there is no current perspective.
-	 * 
-	 * @see IPageLayout#addNewWizardShortcut(String)
-	 * @return an array of wizard identifiers
-	 * @since 3.1
-	 */
-	public String[] getNewWizardShortcuts();
-
-	/**
-	 * Returns the perspective shortcuts associated with the current
-	 * perspective. Returns an empty array if there is no current perspective.
-	 * 
-	 * @see IPageLayout#addPerspectiveShortcut(String)
-	 * @return an array of perspective identifiers
-	 * @since 3.1
-	 */
-	public String[] getPerspectiveShortcuts();
-
-	/**
-	 * Returns the show view shortcuts associated with the current perspective.
-	 * Returns an empty array if there is no current perspective.
-	 * 
-	 * @see IPageLayout#addShowViewShortcut(String)
-	 * @return an array of view identifiers
-	 * @since 3.1
-	 */
-	public String[] getShowViewShortcuts();
-
-	/**
-	 * Returns the descriptors for the perspectives that are open in this page,
-	 * in the order in which they were opened.
-	 * 
-	 * @return the open perspective descriptors, in order of opening
-	 * @since 3.1
-	 */
-	public IPerspectiveDescriptor[] getOpenPerspectives();
-
-	/**
-	 * Returns the descriptors for the perspectives that are open in this page,
-	 * in the order in which they were activated (oldest first).
-	 * 
-	 * @return the open perspective descriptors, in order of activation
-	 * @since 3.1
-	 */
-	public IPerspectiveDescriptor[] getSortedPerspectives();
-
-	/**
-	 * Closes the specified perspective in this page. If the last perspective in
-	 * this page is closed, then all editors are closed. Views that are not
-	 * shown in other perspectives are closed as well. If <code>saveParts</code>
-	 * is <code>true</code>, the user will be prompted to save any unsaved
-	 * changes for parts that are being closed. The page itself is closed if
-	 * <code>closePage</code> is <code>true</code>.
-	 * 
-	 * @param desc
-	 *            the descriptor of the perspective to be closed
-	 * @param saveParts
-	 *            whether the page's parts should be saved if closed
-	 * @param closePage
-	 *            whether the page itself should be closed if last perspective
-	 * @since 3.1
-	 */
-	public void closePerspective(IPerspectiveDescriptor desc,
-			boolean saveParts, boolean closePage);
-
-	/**
-	 * Closes all perspectives in this page. All editors are closed, prompting
-	 * to save any unsaved changes if <code>saveEditors</code> is
-	 * <code>true</code>. The page itself is closed if <code>closePage</code>
-	 * is <code>true</code>.
-	 * 
-	 * @param saveEditors
-	 *            whether the page's editors should be saved
-	 * @param closePage
-	 *            whether the page itself should be closed
-	 * @since 3.1
-	 */
-	public void closeAllPerspectives(boolean saveEditors, boolean closePage);
-
-	/**
-	 * <p>
-	 * Return the extension tracker for the workbench. This tracker may be used
-	 * by plug-ins to ensure responsiveness to changes to the plug-in registry.
-	 * </p>
-	 * <p>
-	 * The tracker at this level of the workbench is typically used to track
-	 * elements that only exist over the lifespan of a page. For example,
-	 * <code>ViewPart</code> objects fall into this category.
-	 * </p>
-	 * 
-	 * @return the extension tracker
-	 * @see IWorkbench#getExtensionTracker()
-	 * @see IWorkbenchWindow#getExtensionTracker()
-	 * @since 3.1
-	 */
-	public IExtensionTracker getExtensionTracker();
-
-	/**
-	 * Return the visible working sets for this page. Please note that this
-	 * array is not filtered by activities. Clients should attempt to ensure
-	 * that any use of this method is consistant with the currently enabled
-	 * activity set.
-	 * 
-	 * @return the visible working sets for this page
-	 * @see IWorkbench#getActivitySupport()
-	 * @since 3.2
-	 */
-	public IWorkingSet[] getWorkingSets();
-
-	/**
-	 * Set the working sets for this page. Any duplicate entries will be removed
-	 * from the array by this method.
-	 * 
-	 * @param sets
-	 *            the new working sets for this page. The array may be empty,
-	 *            but no element in the array may be <code>null</code>.
-	 * @since 3.2
-	 */
-	public void setWorkingSets(IWorkingSet[] sets);
-
-	/**
-	 * Return a working set that contains all of the elements contained in the
-	 * array of working sets provided by {@link #getWorkingSets()}. Should this
-	 * array or the underlying elements in any of the working sets change this
-	 * set will be updated.
-	 * 
-	 * <p>
-	 * This working set is never <code>null</code>, even if there are no
-	 * working sets assigned to this page via
-	 * {@link #setWorkingSets(IWorkingSet[])}. It is recommended that any
-	 * client that uses this API be aware of this and act accordingly.
-	 * Specifically, it is recommended that any client utilizing this or any
-	 * other IWorkingSet whose {@link IWorkingSet#isAggregateWorkingSet()}
-	 * returns <code>true</code> act as if they are not using any working set
-	 * if the set is empty. These clients should also maintain an awareness of
-	 * the contents of aggregate working sets and toggle this behavior should
-	 * the contents of the aggregate either become empty or non-empty.
-	 * </p>
-	 * <p>
-	 * Example: <br/> Here we have pseudocode showing how some workingset
-	 * utilizing component could react to changes in aggregate working sets.
-	 * <br/> <code>
-	 * private IWorkingSet myWorkingSet;
-	 * 
-	 * IPropertyChangeListener workingSetListener = new IPropertyChangeListener() {
-	 *	public void propertyChange(PropertyChangeEvent event) {
-	 * 		if (isMyCurrentWorkingSet(event)) {
-	 * 			if (isEmptyAggregate(myWorkingSet)) {
-	 * 				showNoSet();
-	 * 			}
-	 * 			else {
-	 * 				showSet();
-	 * 			}
-	 *		}
-	 *	}
-	 * };
-	 * 
-	 * public void setWorkingSet(IWorkingSet newSet) {
-	 * 		myWorkingSet = newSet;
-	 * 		if (myWorkingSet == null || isEmptyAggregate(myWorkingSet)){
-	 * 			showNoSet();
-	 * 		}
-	 * 		else {
-	 * 			showSet();
-	 * 		}
-	 * }
-	 * </code>
-	 * </p>
-	 * 
-	 * @return the aggregate working set for this page
-	 * @since 3.2
-	 */
-	public IWorkingSet getAggregateWorkingSet();
-
-	/**
-	 * Returns the page "zoomed" state.
-	 * 
-	 * @return <code>true</code> if the page is zoomed in the workbench
-	 *         window, <code>false</code> otherwise.
-	 * @since 3.2
-	 */
-	public boolean isPageZoomed();
-
-	/**
-	 * Zooms out the zoomed-in part. If the page does not have a zoomed part, it
-	 * does nothing.
-	 * 
-	 * @since 3.2
-	 */
-	public void zoomOut();
-
-	/**
-	 * Zoom the page in on a part. If the part is already in zoom then zoom out.
-	 * 
-	 * @param ref
-	 *            the workbench part to zoom in on. Must not be
-	 *            <code>null</code>.
-	 * @since 3.2
-	 */
-	public void toggleZoom(IWorkbenchPartReference ref);
-
-	/**
-	 * Returns the maximized/minimized/restored state of the given part
-	 * reference.
-	 * 
-	 * @param ref
-	 *            the workbench part to query. Must not be <code>null</code>.
-	 * @return one of the STATE_* contants.
-	 * @since 3.2
-	 */
-	public int getPartState(IWorkbenchPartReference ref);
-
-	/**
-	 * Set the state of the given part reference. Setting the state of one part
-	 * can effect the state of other parts.
-	 * 
-	 * @param ref
-	 *            the workbench part reference. Must not be <code>null</code>.
-	 * @param state
-	 *            one of the STATE_* constants.
-	 * @since 3.2
-	 */
-	public void setPartState(IWorkbenchPartReference ref, int state);
-
-	/**
-	 * Find the part reference for the given part. A convenience method to
-	 * quickly go from part to part reference.
-	 * 
-	 * @param part
-	 *            The part to search for. It can be <code>null</code>.
-	 * @return The reference for the given part, or <code>null</code> if no
-	 *         reference can be found.
-	 * @since 3.2
-	 */
-	public IWorkbenchPartReference getReference(IWorkbenchPart part);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart.java
deleted file mode 100644
index 9395d9f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * A workbench part is a visual component within a workbench page.  There
- * are two subtypes: view and editor, as defined by <code>IViewPart</code> and
- * <code>IEditorPart</code>.  
- * <p>
- * A view is typically used to navigate a hierarchy of information (like the 
- * workspace), open an editor, or display properties for the active editor.  
- * Modifications made in a view are saved immediately.  
- * </p><p>
- * An editor is typically used to edit or browse a document or input object. 
- * The input is identified using an <code>IEditorInput</code>.  Modifications made 
- * in an editor part follow an open-save-close lifecycle model.
- * </p><p>
- * This interface may be implemented directly.  For convenience, a base
- * implementation is defined in <code>WorkbenchPart</code>.
- * </p><p>
- * The lifecycle of a workbench part is as follows:
- * <ul>
- * 	<li>When a part extension is created:
- *    <ul>
- *		<li>instantiate the part</li>
- *		<li>create a part site</li>
- *		<li>call <code>part.init(site)</code></li>
- * 	  </ul>
- *  <li>When a part becomes visible in the workbench:
- * 	  <ul> 
- *		<li>add part to presentation by calling 
- *        <code>part.createControl(parent)</code> to create actual widgets</li>
- *		<li>fire <code>partOpened</code> event to all listeners</li>
- *	  </ul>
- *   </li>
- *  <li>When a part is activated or gets focus:
- *    <ul>
- *		<li>call <code>part.setFocus()</code></li>
- *		<li>fire <code>partActivated</code> event to all listeners</li>
- *	  </ul>
- *   </li>
- *  <li>When a part is closed:
- *    <ul>
- *		<li>if save is needed, do save; if it fails or is canceled return</li>
- *		<li>if part is active, deactivate part</li>
- *		<li>fire <code>partClosed</code> event to all listeners</li>
- *		<li>remove part from presentation; part controls are disposed as part
- *         of the SWT widget tree
- *		<li>call <code>part.dispose()</code></li>
- *	  </ul>
- *   </li>
- * </ul>
- * </p>
- * <p>
- * After <code>createPartControl</code> has been called, the implementor may 
- * safely reference the controls created.  When the part is closed 
- * these controls will be disposed as part of an SWT composite.  This
- * occurs before the <code>IWorkbenchPart.dispose</code> method is called.
- * If there is a need to free SWT resources the part should define a dispose 
- * listener for its own control and free those resources from the dispose
- * listener.  If the part invokes any method on the disposed SWT controls 
- * after this point an <code>SWTError</code> will be thrown.  
- * </p>
- * <p>
- * The last method called on <code>IWorkbenchPart</code> is <code>dispose</code>.  
- * This signals the end of the part lifecycle.
- * </p>
- * <p>
- * An important point to note about this lifecycle is that following 
- * a call to init, createControl may never be called. Thus in the dispose
- * method, implementors must not assume controls were created.
- * </p>
- * <p>
- * Workbench parts implement the <code>IAdaptable</code> interface; extensions
- * are managed by the platform's adapter manager.
- * </p>
- *
- * @see IViewPart
- * @see IEditorPart
- */
-public interface IWorkbenchPart extends IAdaptable {
-
-    /**
-     * The property id for <code>getTitle</code>, <code>getTitleImage</code>
-     * and <code>getTitleToolTip</code>.
-     */
-    public static final int PROP_TITLE = IWorkbenchPartConstants.PROP_TITLE;
-
-    /**
-     * Adds a listener for changes to properties of this workbench part.
-     * Has no effect if an identical listener is already registered.
-     * <p>
-     * The property ids are defined in {@link IWorkbenchPartConstants}.
-     * </p>
-     *
-     * @param listener a property listener
-     */
-    public void addPropertyListener(IPropertyListener listener);
-
-    /**
-     * Creates the SWT controls for this workbench part.
-     * <p>
-     * Clients should not call this method (the workbench calls this method when
-     * it needs to, which may be never).
-     * </p>
-     * <p>
-     * For implementors this is a multi-step process:
-     * <ol>
-     *   <li>Create one or more controls within the parent.</li>
-     *   <li>Set the parent layout as needed.</li>
-     *   <li>Register any global actions with the site's <code>IActionBars</code>.</li>
-     *   <li>Register any context menus with the site.</li>
-     *   <li>Register a selection provider with the site, to make it available to 
-     *     the workbench's <code>ISelectionService</code> (optional). </li>
-     * </ol>
-     * </p>
-     *
-     * @param parent the parent control
-     */
-    public void createPartControl(Composite parent);
-
-    /**
-     * Disposes of this workbench part.
-     * <p>
-     * This is the last method called on the <code>IWorkbenchPart</code>.  At this
-     * point the part controls (if they were ever created) have been disposed as part 
-     * of an SWT composite.  There is no guarantee that createPartControl() has been 
-     * called, so the part controls may never have been created.
-     * </p>
-     * <p>
-     * Within this method a part may release any resources, fonts, images, etc.&nbsp; 
-     * held by this part.  It is also very important to deregister all listeners
-     * from the workbench.
-     * </p>
-     * <p>
-     * Clients should not call this method (the workbench calls this method at
-     * appropriate times).
-     * </p>
-     */
-    public void dispose();
-
-    /**
-     * Returns the site for this workbench part. The site can be
-     * <code>null</code> while the workbench part is being initialized. After
-     * the initialization is complete, this value must be non-<code>null</code>
-     * for the remainder of the part's life cycle.
-     * 
-     * @return The part site; this value may be <code>null</code> if the part
-     *         has not yet been initialized
-     */
-    public IWorkbenchPartSite getSite();
-
-    /**
-     * Returns the title of this workbench part. If this value changes 
-     * the part must fire a property listener event with 
-     * <code>PROP_TITLE</code>.
-     * <p>
-     * The title is used to populate the title bar of this part's visual
-     * container.  
-     * </p>
-     *
-     * @return the workbench part title (not <code>null</code>)
-     */
-    public String getTitle();
-
-    /**
-     * Returns the title image of this workbench part.  If this value changes 
-     * the part must fire a property listener event with 
-     * <code>PROP_TITLE</code>.
-     * <p>
-     * The title image is usually used to populate the title bar of this part's
-     * visual container. Since this image is managed by the part itself, callers
-     * must <b>not</b> dispose the returned image.
-     * </p>
-     *
-     * @return the title image
-     */
-    public Image getTitleImage();
-
-    /**
-     * Returns the title tool tip text of this workbench part. 
-     * An empty string result indicates no tool tip.
-     * If this value changes the part must fire a property listener event with 
-     * <code>PROP_TITLE</code>.
-     * <p>
-     * The tool tip text is used to populate the title bar of this part's 
-     * visual container.  
-     * </p>
-     *
-     * @return the workbench part title tool tip (not <code>null</code>)
-     */
-    public String getTitleToolTip();
-
-    /**
-     * Removes the given property listener from this workbench part.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a property listener
-     */
-    public void removePropertyListener(IPropertyListener listener);
-
-    /**
-     * Asks this part to take focus within the workbench.
-     * <p>
-     * Clients should not call this method (the workbench calls this method at
-     * appropriate times).  To have the workbench activate a part, use
-     * <code>IWorkbenchPage.activate(IWorkbenchPart) instead</code>.
-     * </p>
-     */
-    public void setFocus();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart2.java
deleted file mode 100644
index 55732da..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart2.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Extends {@link IWorkbenchPart}, adding the name and status text properties.
- * Prior to 3.0, a view's title was often modified to show both the part
- * name and extra status text.  With this interface, the distinction is
- * made more explicit. 
- * 
- * @since 3.0 
- */
-public interface IWorkbenchPart2 extends IWorkbenchPart {
-    /**
-     * Returns the name of this part. If this value changes the part must fire a
-     * property listener event with {@link IWorkbenchPartConstants#PROP_PART_NAME}.
-     * 
-     * @return the name of this view, or the empty string if the name is being managed
-     * by the workbench (not <code>null</code>)
-     */
-    public String getPartName();
-
-    /**
-     * Returns the content description of this part. The content description is an optional
-     * user-readable string that describes what is currently being displayed in the part. 
-     * By default, the workbench will display the content description in a line
-     * near the top of the view or editor.
-     * An empty string indicates no content description
-     * text. If this value changes the part must fire a property listener event
-     * with {@link IWorkbenchPartConstants#PROP_CONTENT_DESCRIPTION}.
-     * 
-     * @return the content description of this part (not <code>null</code>)
-     */
-    public String getContentDescription();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart3.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart3.java
deleted file mode 100644
index 21cc0e9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPart3.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.util.Map;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-
-/**
- * A part can provide arbitrary properties. The properties will be persisted
- * between sessions by the part reference, and will be available from the part
- * reference as well as the part. The properties can only be set on a part, not
- * on the reference. The properties will be available to the IPresentablePart.
- * <p>
- * Setting a property must fire a PropertyChangeEvent.
- * </p>
- * 
- * @since 3.3
- */
-public interface IWorkbenchPart3 extends IWorkbenchPart2 {
-	/**
-	 * Add a listener for changes in the arbitrary properties set.
-	 * <p>
-	 * <b>Note:</b> this is a different set of properties than the ones covered
-	 * by the IWorkbenchPartConstants.PROP_* constants.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            Must not be <code>null</code>.
-	 */
-	public void addPartPropertyListener(IPropertyChangeListener listener);
-
-	/**
-	 * Remove a change listener from the arbitrary properties set.
-	 * <p>
-	 * <b>Note:</b> this is a different set of properties than the ones covered
-	 * by the IWorkbenchPartConstants.PROP_* constants.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            Must not be <code>null</code>.
-	 */
-	public void removePartPropertyListener(IPropertyChangeListener listener);
-
-	/**
-	 * Return the value for the arbitrary property key, or <code>null</code>.
-	 * 
-	 * @param key
-	 *            the arbitrary property. Must not be <code>null</code>.
-	 * @return the property value, or <code>null</code>.
-	 */
-	public String getPartProperty(String key);
-
-	/**
-	 * Set an arbitrary property on the part. It is the implementor's
-	 * responsibility to fire the corresponding PropertyChangeEvent.
-	 * <p>
-	 * A default implementation has been added to WorkbenchPart.
-	 * </p>
-	 * 
-	 * @param key
-	 *            the arbitrary property. Must not be <code>null</code>.
-	 * @param value
-	 *            the property value. A <code>null</code> value will remove
-	 *            that property.
-	 */
-	public void setPartProperty(String key, String value);
-
-	/**
-	 * Return an unmodifiable map of the arbitrary properties. This method can
-	 * be used to save the properties during workbench save/restore.
-	 * 
-	 * @return A Map of the properties. Must not be <code>null</code>.
-	 */
-	public Map getPartProperties();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartConstants.java
deleted file mode 100644
index 4601f35..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartConstants.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * This interface describes the constants used for <link>IWorkbenchPart</link> properties.
- * <p>
- * <b>Note:</b>This interface should not be implemented or extended.
- * </p>
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchPartConstants {
-
-    /**
-     * The property id for <code>getTitle</code>, <code>getTitleImage</code>
-     * and <code>getTitleToolTip</code>.
-     */
-    int PROP_TITLE = 0x001;
-
-    /**
-     * The property id for <code>ISaveablePart.isDirty()</code>.
-     */
-    int PROP_DIRTY = 0x101;
-
-    /**
-     * The property id for <code>IEditorPart.getEditorInput()</code>.
-     */
-    int PROP_INPUT = 0x102;
-
-    /**
-     * The property id for <code>IWorkbenchPart2.getPartName</code>
-     */
-    int PROP_PART_NAME = 0x104;
-
-    /**
-     * The property id for <code>IWorkbenchPart2.getContentDescription()</code>
-     */
-    int PROP_CONTENT_DESCRIPTION = 0x105;
-
-    /**
-     * The property id for any method on the optional <code>ISizeProvider</code> interface
-     * @since 3.4
-     */
-    int PROP_PREFERRED_SIZE = 0x303;
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartDescriptor.java
deleted file mode 100644
index 5a9f25b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartDescriptor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * Description of a workbench part. The part descriptor contains 
- * the information needed to create part instances.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchPartDescriptor {
-    /**
-     * Returns the part id.
-     *
-     * @return the id of the part
-     */
-    public String getId();
-
-    /**
-     * Returns the descriptor of the image for this part.
-     *
-     * @return the descriptor of the image to display next to this part
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns the label to show for this part.
-     *
-     * @return the part label
-     */
-    public String getLabel();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartReference.java
deleted file mode 100644
index 2a78a33..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartReference.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 20078 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Implements a reference to a IWorkbenchPart.
- * The IWorkbenchPart will not be instantiated until the part 
- * becomes visible or the API getPart is sent with true;
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchPartReference {
-    /**
-     * Returns the IWorkbenchPart referenced by this object.
-     * Returns <code>null</code> if the editors was not instantiated or
-     * it failed to be restored. Tries to restore the editor
-     * if <code>restore</code> is true.
-     */
-    public IWorkbenchPart getPart(boolean restore);
-
-    /**
-     * @see IWorkbenchPart#getTitle
-     */
-    public String getTitle();
-
-    /**
-     * @see IWorkbenchPart#getTitleImage
-     */
-    public Image getTitleImage();
-
-    /**
-     * @see IWorkbenchPart#getTitleToolTip
-     */
-    public String getTitleToolTip();
-
-    /**
-     * @see IWorkbenchPartSite#getId
-     */
-    public String getId();
-
-    /**
-     * @see IWorkbenchPart#addPropertyListener
-     */
-    public void addPropertyListener(IPropertyListener listener);
-
-    /**
-     * @see IWorkbenchPart#removePropertyListener
-     */
-    public void removePropertyListener(IPropertyListener listener);
-
-    /**
-     * Returns the workbench page that contains this part
-     */
-    public IWorkbenchPage getPage();
-
-    /**
-     * Returns the name of the part, as it should be shown in tabs.
-     * 
-     * @return the part name
-     * 
-     * @since 3.0
-     */
-    public String getPartName();
-
-    /**
-     * Returns the content description for the part (or the empty string if none)
-     * 
-     * @return the content description for the part
-     * 
-     * @since 3.0  
-     */
-    public String getContentDescription();
-    
-
-    /**
-     * Returns whether the part is dirty (i.e. has unsaved changes).
-     * 
-     * @return <code>true</code> if the part is dirty, <code>false</code> otherwise
-     * 
-     * @since 3.2 (previously existed on IEditorReference)
-     */
-    public boolean isDirty();
-    
-    /**
-	 * Return an arbitrary property from the reference. If the part has been
-	 * instantiated, it just delegates to the part. If not, then it looks in its
-	 * own cache of properties. If the property is not available or the part has
-	 * never been instantiated, it can return <code>null</code>.
-	 * 
-	 * @param key
-	 *            The property to return. Must not be <code>null</code>.
-	 * @return The String property, or <code>null</code>.
-	 * @since 3.3
-	 */
-    public String getPartProperty(String key);
-    
-    /**
-	 * Add a listener for changes in the arbitrary properties set.
-	 * 
-	 * @param listener
-	 *            Must not be <code>null</code>.
-	 * @since 3.3
-	 */
-    public void addPartPropertyListener(IPropertyChangeListener listener);
-    
-    /**
-	 * Remove a listener for changes in the arbitrary properties set.
-	 * 
-	 * @param listener
-	 *            Must not be <code>null</code>.
-	 * @since 3.3
-	 */
-    public void removePartPropertyListener(IPropertyChangeListener listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartSite.java
deleted file mode 100644
index abe4fb9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPartSite.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * The primary interface between a workbench part and the workbench.
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchPartSite extends IWorkbenchSite {
-
-    /**
-     * Returns the part registry extension id for this workbench site's part.
-     * <p>
-     * The name comes from the <code>id</code> attribute in the configuration
-     * element.
-     * </p>
-     *
-     * @return the registry extension id
-     */
-    public String getId();
-
-    /**
-     * Returns the unique identifier of the plug-in that defines this workbench
-     * site's part.
-     *
-     * @return the unique identifier of the declaring plug-in
-     */
-    public String getPluginId();
-
-    /**
-     * Returns the registered name for this workbench site's part.
-     * <p>
-     * The name comes from the <code>name</code> attribute in the configuration
-     * element.
-     * </p>
-     *
-     * @return the part name
-     */
-    public String getRegisteredName();
-
-    /**
-     * Registers a pop-up menu with a particular id for extension.
-     * This method should only be called if the target part has more
-     * than one context menu to register.
-     * <p>
-     * For a detailed description of context menu registration see 
-     * <code>registerContextMenu(MenuManager, ISelectionProvider);
-     * </p>
-     *
-     * @param menuId the menu id
-     * @param menuManager the menu manager
-     * @param selectionProvider the selection provider
-     */
-    public void registerContextMenu(String menuId, MenuManager menuManager,
-            ISelectionProvider selectionProvider);
-
-    /**
-     * Registers a pop-up menu with the default id for extension.  
-     * The default id is defined as the part id.
-     * <p>
-     * Within the workbench one plug-in may extend the pop-up menus for a view
-     * or editor within another plug-in.  In order to be eligible for extension,
-     * the target part must publish each menu by calling <code>registerContextMenu</code>.
-     * Once this has been done the workbench will automatically insert any action 
-     * extensions which exist.
-     * </p>
-     * <p>
-     * A menu id must be provided for each registered menu.  For consistency across
-     * parts the following strategy should be adopted by all part implementors.
-     * </p>
-     * <ol>
-     *		<li>If the target part has only one context menu it should be registered
-     *			with <code>id == part id</code>.  This can be done easily by calling
-     *			<code>registerContextMenu(MenuManager, ISelectionProvider).  
-     *		<li>If the target part has more than one context menu a unique id should be
-     *			defined for each.  Prefix each menu id with the part id and publish these
-     *			ids within the javadoc for the target part.  Register each menu at 
-     *			runtime by calling <code>registerContextMenu(String, MenuManager, 
-     *			ISelectionProvider)</code>.  </li>
-     * </ol>
-     * <p>
-     * Any pop-up menu which is registered with the workbench should also define a  
-     * <code>GroupMarker</code> in the registered menu with id 
-     * <code>IWorkbenchActionConstants.MB_ADDITIONS</code>.  Other plug-ins will use this 
-     * group as a reference point for insertion.  The marker should be defined at an 
-     * appropriate location within the menu for insertion.  
-     * </p>
-     *
-     * @param menuManager the menu manager
-     * @param selectionProvider the selection provider
-     */
-    public void registerContextMenu(MenuManager menuManager,
-            ISelectionProvider selectionProvider);
-
-    /**
-	 * Returns the key binding service in use.
-	 * <p>
-	 * The part will access this service to register all of its actions, to set
-	 * the active scope.
-	 * </p>
-	 * 
-	 * @return the key binding service in use
-	 * @since 2.1
-	 * @deprecated Use {@link IServiceLocator#getService(Class)} instead.
-	 * @see IContextService
-	 * @see IHandlerService
-	 */
-    public IKeyBindingService getKeyBindingService();
-    
-    /**
-     * Returns the part associated with this site 
-     * 
-     * @since 3.1 
-     *
-     * @return the part associated with this site
-     */
-    public IWorkbenchPart getPart(); 
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
deleted file mode 100644
index 1039de1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferenceConstants.java
+++ /dev/null
@@ -1,587 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Kiryl Kazakevich, Intel - bug 88359
- *     Tonny Madsen, RCP Company - bug 201055
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.swt.SWT;
-
-/**
- * Preference ids exposed by the Eclipse Platform User Interface. These
- * preference settings can be obtained from the UI plug-in's preference store.
- * <p>
- * <b>Note:</b>This interface should not be implemented or extended.
- * </p>
- * 
- * @see PlatformUI#PLUGIN_ID
- * @see PlatformUI#getPreferenceStore()
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchPreferenceConstants {
-
-	/**
-	 * A named preference for whether to show an editor when its input file is
-	 * selected in the Navigator (and vice versa).
-	 * <p>
-	 * Value is of type <code>boolean</code>.
-	 * </p>
-	 */
-	public static final String LINK_NAVIGATOR_TO_EDITOR = "LINK_NAVIGATOR_TO_EDITOR"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for how a new perspective is opened.
-	 * <p>
-	 * Value is of type <code>String</code>. The possible values are defined
-	 * by <code>OPEN_PERSPECTIVE_WINDOW, OPEN_PERSPECTIVE_PAGE and 
-	 * OPEN_PERSPECTIVE_REPLACE</code>.
-	 * </p>
-	 * 
-	 * @see #OPEN_PERSPECTIVE_WINDOW
-	 * @see #OPEN_PERSPECTIVE_PAGE
-	 * @see #OPEN_PERSPECTIVE_REPLACE
-	 * @see #NO_NEW_PERSPECTIVE
-	 */
-	public static final String OPEN_NEW_PERSPECTIVE = "OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for how a new perspective is opened when the alternate
-	 * key modifiers are pressed. The alternate key modifiers are platform
-	 * dependent.
-	 * <p>
-	 * Value is of type <code>String</code>. The possible values are defined
-	 * by <code>OPEN_PERSPECTIVE_WINDOW, OPEN_PERSPECTIVE_PAGE and 
-	 * OPEN_PERSPECTIVE_REPLACE</code>.
-	 * </p>
-	 * 
-	 * @deprecated Workbench no longer supports alternate key modifier to open a
-	 *             new perspective. Callers should use
-	 *             IWorkbench.showPerspective methods.
-	 */
-	public static final String ALTERNATE_OPEN_NEW_PERSPECTIVE = "ALTERNATE_OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for how a new perspective is opened when the shift key
-	 * modifier is pressed.
-	 * <p>
-	 * Value is of type <code>String</code>. The possible values are defined
-	 * by <code>OPEN_PERSPECTIVE_WINDOW, OPEN_PERSPECTIVE_PAGE and 
-	 * OPEN_PERSPECTIVE_REPLACE</code>.
-	 * </p>
-	 * 
-	 * @deprecated Workbench no longer supports shift key modifier to open a new
-	 *             perspective. Callers should use IWorkbench.showPerspective
-	 *             methods.
-	 */
-	public static final String SHIFT_OPEN_NEW_PERSPECTIVE = "SHIFT_OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for how a new perspective should be opened when a new
-	 * project is created.
-	 * <p>
-	 * Value is of type <code>String</code>. The possible values are defined
-	 * by the constants <code>OPEN_PERSPECTIVE_WINDOW, OPEN_PERSPECTIVE_PAGE, 
-	 * OPEN_PERSPECTIVE_REPLACE, and NO_NEW_PERSPECTIVE</code>.
-	 * </p>
-	 * 
-	 * @see #OPEN_PERSPECTIVE_WINDOW
-	 * @see #OPEN_PERSPECTIVE_PAGE
-	 * @see #OPEN_PERSPECTIVE_REPLACE
-	 * @see #NO_NEW_PERSPECTIVE
-	 * @deprecated in 3.0. This preference is IDE-specific, and is therefore
-	 *             found only in IDE configurations. IDE-specific tools should
-	 *             use
-	 *             <code>org.eclipse.ui.ide.IDE.Preferences.PROJECT_OPEN_NEW_PERSPECTIVE</code>
-	 *             instead.
-	 */
-	public static final String PROJECT_OPEN_NEW_PERSPECTIVE = "PROJECT_OPEN_NEW_PERSPECTIVE"; //$NON-NLS-1$
-
-	/**
-	 * A preference value indicating that an action should open a new
-	 * perspective in a new window.
-	 * 
-	 * @see #PROJECT_OPEN_NEW_PERSPECTIVE
-	 */
-	public static final String OPEN_PERSPECTIVE_WINDOW = "OPEN_PERSPECTIVE_WINDOW"; //$NON-NLS-1$
-
-	/**
-	 * A preference value indicating that an action should open a new
-	 * perspective in a new page.
-	 * 
-	 * @see #PROJECT_OPEN_NEW_PERSPECTIVE
-	 * @deprecated Opening a Perspective in a new page is no longer supported
-	 *             functionality as of 2.0.
-	 */
-	public static final String OPEN_PERSPECTIVE_PAGE = "OPEN_PERSPECTIVE_PAGE"; //$NON-NLS-1$
-
-	/**
-	 * A preference value indicating that an action should open a new
-	 * perspective by replacing the current perspective.
-	 * 
-	 * @see #PROJECT_OPEN_NEW_PERSPECTIVE
-	 */
-	public static final String OPEN_PERSPECTIVE_REPLACE = "OPEN_PERSPECTIVE_REPLACE"; //$NON-NLS-1$
-
-	/**
-	 * A preference value indicating that an action should not open a new
-	 * perspective.
-	 * 
-	 * @see #PROJECT_OPEN_NEW_PERSPECTIVE
-	 */
-	public static final String NO_NEW_PERSPECTIVE = "NO_NEW_PERSPECTIVE"; //$NON-NLS-1$
-
-	/**
-	 * A named preference indicating the default workbench perspective.
-	 */
-	public static final String DEFAULT_PERSPECTIVE_ID = "defaultPerspectiveId"; //$NON-NLS-1$
-
-	/**
-	 * A named preference indicating the presentation factory to use for the
-	 * workbench look and feel.
-	 * 
-	 * @since 3.0
-	 */
-	public static final String PRESENTATION_FACTORY_ID = "presentationFactoryId"; //$NON-NLS-1$
-
-	/**
-	 * A named preference indicating where the perspective bar should be docked.
-	 * The default value (when this preference is not set) is
-	 * <code>TOP_RIGHT</code>.
-	 * <p>
-	 * This preference may be one of the following values: {@link #TOP_RIGHT},
-	 * {@link #TOP_LEFT}, or {@link #LEFT}.
-	 * </p>
-	 * 
-	 * @since 3.0
-	 */
-	public static String DOCK_PERSPECTIVE_BAR = "DOCK_PERSPECTIVE_BAR"; //$NON-NLS-1$	
-
-	/**
-	 * A named preference indicating where the fast view bar should be docked in
-	 * a fresh workspace. This preference is meaningless after a workspace has
-	 * been setup, since the fast view bar state is then persisted in the
-	 * workbench. This preference is intended for applications that want the
-	 * initial docking location to be somewhere specific. The default value
-	 * (when this preference is not set) is the bottom.
-	 * 
-	 * @see #LEFT
-	 * @see #BOTTOM
-	 * @see #RIGHT
-	 * @since 3.0
-	 */
-	public static final String INITIAL_FAST_VIEW_BAR_LOCATION = "initialFastViewBarLocation"; //$NON-NLS-1$
-
-	/**
-	 * Constant to be used when referring to the top right of the workbench
-	 * window.
-	 * 
-	 * @see #DOCK_PERSPECTIVE_BAR
-	 * @since 3.0
-	 */
-	public static final String TOP_RIGHT = "topRight"; //$NON-NLS-1$
-
-	/**
-	 * Constant to be used when referring to the top left of the workbench
-	 * window.
-	 * 
-	 * @see #DOCK_PERSPECTIVE_BAR
-	 * @since 3.0
-	 */
-	public static final String TOP_LEFT = "topLeft"; //$NON-NLS-1$
-
-	/**
-	 * Constant to be used when referring to the left side of the workbench
-	 * window.
-	 * 
-	 * @see #DOCK_PERSPECTIVE_BAR
-	 * @see #INITIAL_FAST_VIEW_BAR_LOCATION
-	 * @since 3.0
-	 */
-	public static final String LEFT = "left"; //$NON-NLS-1$
-
-	/**
-	 * Constant to be used when referring to the bottom of the workbench window.
-	 * 
-	 * @see #INITIAL_FAST_VIEW_BAR_LOCATION
-	 * @since 3.0
-	 */
-	public static final String BOTTOM = "bottom"; //$NON-NLS-1$
-
-	/**
-	 * Constant to be used when referring to the right side of the workbench
-	 * window.
-	 * 
-	 * @see #INITIAL_FAST_VIEW_BAR_LOCATION
-	 * @since 3.0
-	 */
-	public static final String RIGHT = "right"; //$NON-NLS-1$
-
-	/**
-	 * A named preference indicating whether the workbench should show the
-	 * introduction component (if available) on startup.
-	 * 
-	 * <p>
-	 * The default value for this preference is: <code>true</code> (show
-	 * intro)
-	 * </p>
-	 * 
-	 * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#openIntro()
-	 * @since 3.0
-	 */
-	public static final String SHOW_INTRO = "showIntro"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for whether the workbench should show traditional
-	 * style tabs in editors and views.
-	 * 
-	 * Boolean-valued: <code>true</code> if editors and views should use a
-	 * traditional style of tab and <code>false</code> if editors should show
-	 * new style tab (3.0 style)
-	 * <p>
-	 * The default value for this preference is: <code>true</code>
-	 * </p>
-	 * 
-	 * @since 3.0
-	 */
-	public static String SHOW_TRADITIONAL_STYLE_TABS = "SHOW_TRADITIONAL_STYLE_TABS"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for whether the workbench should show text on the
-	 * perspective bar.
-	 * 
-	 * Boolean-valued: <code>true</code>, if editors should show text on the
-	 * perspective bar, <code>false</code> otherwise.
-	 * <p>
-	 * The default value for this preference is: <code>true</code> (show text
-	 * on the perspective bar)
-	 * </p>
-	 * 
-	 * @since 3.0
-	 */
-	public static String SHOW_TEXT_ON_PERSPECTIVE_BAR = "SHOW_TEXT_ON_PERSPECTIVE_BAR"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for whether the workbench should show the "open
-	 * perspective" button on the perspective bar.
-	 * 
-	 * Boolean-valued: <code>true</code>, if editors should show "open
-	 * perspective" button on the perspective bar, <code>false</code>
-	 * otherwise.
-	 * <p>
-	 * The default value for this preference is: <code>true</code> (show "open
-	 * perspective" button on the perspective bar)
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static String SHOW_OPEN_ON_PERSPECTIVE_BAR = "SHOW_OPEN_ON_PERSPECTIVE_BAR"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for whether the workbench should show the "Other..."
-	 * menu item in the perspective menu.
-	 * 
-	 * Boolean-valued: <code>true</code>, if editors should show text on the
-	 * "Other..." menu item, <code>false</code> otherwise.
-	 * <p>
-	 * The default value for this preference is: <code>true</code> (show the
-	 * "Other..." menu item in the perspective menu)
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static String SHOW_OTHER_IN_PERSPECTIVE_MENU = "SHOW_OTHER_IN_PERSPECTIVE_MENU"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for the text of the Help Contents action.
-	 * 
-	 * String-valued. If not specified, <code>"&Help Contents"</code> is used.
-	 * <p>
-	 * The default value for this preference is: <code>null</code>
-	 * </p>
-	 * 
-	 * @since 3.0
-	 */
-	public static String HELP_CONTENTS_ACTION_TEXT = "helpContentsActionText"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for the text of the Help Search action.
-	 * 
-	 * String-valued. If not specified, <code>"S&earch"</code> is used.
-	 * <p>
-	 * The default value for this preference is: <code>null</code>
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public static String HELP_SEARCH_ACTION_TEXT = "helpSearchActionText"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for the text of the Dynamic Help action.
-	 * 
-	 * String-valued. If not specified, <code>"&Dynamic Help"</code> is used.
-	 * <p>
-	 * The default value for this preference is: <code>null</code>
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public static String DYNAMIC_HELP_ACTION_TEXT = "dynamicHelpActionText"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for enabling animations when a layout transition
-	 * occurs
-	 * <p>
-	 * The default value for this preference is: <code>true</code> (show
-	 * animations when a transition occurs)
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public static final String ENABLE_ANIMATIONS = "ENABLE_ANIMATIONS"; //$NON-NLS-1$
-	
-	/**
-	 * A named preference that view implementors can used to determine whether
-	 * or not they should utilize colored labels.
-	 * 
-	 * <p>
-	 * The default value for this preference is: <code>true</code> (show
-	 * colored labels)
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static final String USE_COLORED_LABELS = "USE_COLORED_LABELS"; //$NON-NLS-1$
-
-	/**
-	 * <p>
-	 * Workbench preference id for the key configuration identifier to be
-	 * treated as the default.
-	 * </p>
-	 * <p>
-	 * The default value for this preference is
-	 * <code>"org.eclipse.ui.defaultAcceleratorConfiguration"</code>.
-	 * <p>
-	 * 
-	 * @since 3.1
-	 */
-	public static final String KEY_CONFIGURATION_ID = "KEY_CONFIGURATION_ID"; //$NON-NLS-1$
-
-	/**
-	 * <p>
-	 * Workbench preference identifier for the minimum width of editor tabs. By
-	 * default, Eclipse does not define this value and allows SWT to determine
-	 * this constant. We use <code>-1</code> internally to signify "use
-	 * default".
-	 * </p>
-	 * <p>
-	 * The default value for this preference is <code>-1</code>.
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public static final String EDITOR_MINIMUM_CHARACTERS = "EDITOR_MINIMUM_CHARACTERS"; //$NON-NLS-1$
-
-	/**
-	 * <p>
-	 * Workbench preference identifier for the minimum width of view tabs.
-	 * </p>
-	 * <p>
-	 * The default value for this preference is <code>1</code>.
-	 * </p>
-	 * 
-	 * @since 3.2
-	 */
-	public static final String VIEW_MINIMUM_CHARACTERS = "VIEW_MINIMUM_CHARACTERS"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not system jobs are being shown.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String SHOW_SYSTEM_JOBS = "SHOW_SYSTEM_JOBS";//$NON-NLS-1$
-
-	/**
-	 * Workbench preference for the current theme.
-	 * 
-	 * @since 3.1
-	 */
-	public static String CURRENT_THEME_ID = "CURRENT_THEME_ID"; //$NON-NLS-1$
-
-	/**
-	 * A preference value indicating whether editors should be closed before
-	 * saving the workbench state when exiting. The default is
-	 * <code>false</code>.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String CLOSE_EDITORS_ON_EXIT = "CLOSE_EDITORS_ON_EXIT"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not to show progress while starting the workbench. The
-	 * default is <code>false</code>.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String SHOW_PROGRESS_ON_STARTUP = "SHOW_PROGRESS_ON_STARTUP"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not to show the memory monitor in the workbench window.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String SHOW_MEMORY_MONITOR = "SHOW_MEMORY_MONITOR"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not to use the window working set as the default
-	 * working set for newly created views (without previously stored state).
-	 * This is a hint that view implementors should honor.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String USE_WINDOW_WORKING_SET_BY_DEFAULT = "USE_WINDOW_WORKING_SET_BY_DEFAULT"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not to show the text widget that allows type-ahead
-	 * search in the case where a FilteredTree is used to display and filter
-	 * tree items.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String SHOW_FILTERED_TEXTS = "SHOW_FILTERED_TEXTS"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not views may be detached. The default is
-	 * <code>true</code>.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String ENABLE_DETACHED_VIEWS = "ENABLE_DETACHED_VIEWS"; //$NON-NLS-1$
-
-	/**
-	 * Stores whether or not the workbench prompts for saving when a dirty
-	 * editor or view is closed, but the Saveable objects are still open in
-	 * other parts. If
-	 * <code>true<code> (default), the user will be prompted. If <code>false</code>, there will be
-	 * no prompt.
-	 * 
-	 * @see Saveable
-	 * @since 3.2
-	 */
-	public static final String PROMPT_WHEN_SAVEABLE_STILL_OPEN = "PROMPT_WHEN_SAVEABLE_STILL_OPEN"; //$NON-NLS-1$
-
-	/**
-	 * Lists the extra perspectives to show in the perspective bar. The value is
-	 * a comma-separated list of perspective ids. The default is the empty
-	 * string.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String PERSPECTIVE_BAR_EXTRAS = "PERSPECTIVE_BAR_EXTRAS"; //$NON-NLS-1$
-
-	/**
-	 * Allows locking the trim to prevent user dragging on startup. The default
-	 * is <code>false</code>.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String LOCK_TRIM = "LOCK_TRIM"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for providing the 3.3 presentation's min/max behaviour
-	 * <p>
-	 * The default value for this preference is: <code>false</code>; use the
-	 * 3.2 behaviour.
-	 * </p>
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ENABLE_NEW_MIN_MAX = "ENABLE_MIN_MAX"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for disabling opening a new fast view from the fast
-	 * view bar controls ("Show View as a fast view" button or "New Fast View"
-	 * submenu).
-	 * <p>
-	 * Value is of type <code>boolean</code>.
-	 * </p>
-	 * <p>
-	 * The default is <code>false</code>.
-	 * </p>
-	 * 
-	 * @since 3.3
-	 */
-	public static final String DISABLE_NEW_FAST_VIEW = "disableNewFastView"; //$NON-NLS-1$
-
-	/**
-	 * A named preference for enabling the 3.2 behavior for closing sticky
-	 * views. When not enabled a sticky view is closed in all perspectives when
-	 * the view is closed.
-	 * <p>
-	 * The default value for this preference is: <code>false</code>; use the
-	 * 3.2 behaviour.
-	 * </p>
-	 * 
-	 * @since 3.3
-	 */
-	public static final String ENABLE_32_STICKY_CLOSE_BEHAVIOR = "ENABLE_32_STICKY_CLOSE_BEHAVIOR"; //$NON-NLS-1$
-
-	/**
-	 * An named preference for whether or not tabs are on the top or bottom
-	 * for views. Values are either {@link SWT#TOP} or {@link SWT#BOTTOM}.
-	 * <p>
-	 * The default value for this preference is: <code>SWT.TOP</code>.
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static final String VIEW_TAB_POSITION = "VIEW_TAB_POSITION"; //$NON-NLS-1$
-
-	/**
-	 * An named preference for whether or not tabs are on the top or bottom
-	 * for editors. Values are either {@link SWT#TOP} or {@link SWT#BOTTOM}.
-	 * <p>
-	 * The default value for this preference is: <code>SWT.TOP</code>.
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static final String EDITOR_TAB_POSITION = "EDITOR_TAB_POSITION"; //$NON-NLS-1$
-
-	/**
-	 * Workbench preference id for whether the workbench should show multiple
-	 * editor tabs.
-	 * 
-	 * Boolean-valued: <code>true</code> if editors should show multiple
-	 * editor tabs, and <code>false</code> if editors should show a single
-	 * editor tab.
-	 * <p>
-	 * The default value for this preference is: <code>true</code>
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static final String SHOW_MULTIPLE_EDITOR_TABS = "SHOW_MULTIPLE_EDITOR_TABS"; //$NON-NLS-1$	
-	
-	/**
-	 * Workbench preference id for whether the workbench may open editors
-	 * in-place. Note that editors will only be opened in-place if this
-	 * preference is <code>false</code> and if the current platform supports
-	 * in-place editing.
-	 * 
-	 * Boolean-valued: <code>false</code> if editors may be opened in-place,
-	 * and <code>true</code> if editors should never be opened in-place.
-	 * <p>
-	 * The default value for this preference is: <code>false</code>
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static final String DISABLE_OPEN_EDITOR_IN_PLACE = "DISABLE_OPEN_EDITOR_IN_PLACE"; //$NON-NLS-1$	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferencePage.java
deleted file mode 100644
index ceb7951..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPreferencePage.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.preference.IPreferencePage;
-
-/**
- * Interface for workbench preference pages.
- * <p>
- * Clients should implement this interface and include the name of their class
- * in an extension contributed to the workbench's preference extension point 
- * (named <code>"org.eclipse.ui.preferencePages"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.preferencePages"&GT;
- *      &LT;page id="com.example.myplugin.prefs"
- *         name="Knobs"
- *         class="com.example.myplugin.MyPreferencePage" /&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p>
- */
-public interface IWorkbenchPreferencePage extends IPreferencePage {
-    /**
-     * Initializes this preference page for the given workbench.
-     * <p>
-     * This method is called automatically as the preference page is being created
-     * and initialized. Clients must not call this method.
-     * </p>
-     *
-     * @param workbench the workbench
-     */
-    void init(IWorkbench workbench);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPage.java
deleted file mode 100644
index 0cdf088..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchPropertyPage.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.preference.IPreferencePage;
-import org.eclipse.ui.dialogs.PropertyDialogAction;
-
-/**
- * Interface for workbench property pages. Property pages generally show up in
- * the workbench's Property Pages dialog.
- * <p>
- * Clients should implement this interface and include the name of their class
- * in an extension contributed to the workbench's property page extension point 
- * (named <code>"org.eclipse.ui.propertyPages"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.propertyPages"&GT;
- *      &LT;page id="com.example.myplugin.props"
- *         name="Knobs"
- *         objectClass="org.eclipse.core.resources.IResource"
- *         class="com.example.myplugin.MyPropertyPage" /&GT;
- * &LT;/extension&GT;
- * </pre>
- * </p>
- */
-public interface IWorkbenchPropertyPage extends IPreferencePage {
-    /**
-     * Returns the object that owns the properties shown in this page.
-     *
-     * @return the object that owns the properties shown in this page
-     */
-    public IAdaptable getElement();
-
-    /**
-     * Sets the object that owns the properties shown in this page.
-     * The page is expected to store this object and provide it if
-     * <code>getElement</code> is called.
-     * <p> As of Eclipse 3.2 the org.eclipse.ui.propertyPages extension
-     * point now supports non IAdaptable inputs. An input
-     * that is not an IAdaptable will be wrapped in an 
-     * IAdaptable by the workbench before it is forwarded 
-     * to this method.
-     * </p>
-     * @see PropertyDialogAction
-     *
-     * @param element the object that owns the properties shown in this page
-     */
-    public void setElement(IAdaptable element);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchSite.java
deleted file mode 100644
index 443b7eb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchSite.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * The common interface between the workbench and its parts, including pages
- * within parts.
- * <p>
- * The workbench site supports a few {@link IServiceLocator services} by
- * default. If these services are used to allocate resources, it is important to
- * remember to clean up those resources after you are done with them. Otherwise,
- * the resources will exist until the workbench site is disposed. The supported
- * services are:
- * </p>
- * <ul>
- * <li>{@link ICommandService}</li>
- * <li>{@link IContextService}</li>
- * <li>{@link IHandlerService}</li>
- * <li>{@link IBindingService}. Resources allocated through this service will
- * not be cleaned up until the workbench shuts down.</li>
- * </ul>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @see org.eclipse.ui.IWorkbenchPartSite
- * @see org.eclipse.ui.part.IPageSite
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchSite extends IAdaptable, IShellProvider,
-		IServiceLocator {
-
-	/**
-	 * Returns the page containing this workbench site.
-	 * 
-	 * @return the page containing this workbench site
-	 */
-	public IWorkbenchPage getPage();
-
-	/**
-	 * Returns the selection provider for this workbench site.
-	 * 
-	 * @return the selection provider, or <code>null</code> if none
-	 */
-	public ISelectionProvider getSelectionProvider();
-
-	/**
-	 * Returns the shell for this workbench site. Not intended to be called from
-	 * outside the UI thread. Clients should call IWorkbench.getDisplay() to
-	 * gain access to the display rather than calling getShell().getDisplay().
-	 * 
-	 * <p>
-	 * For compatibility, this method will not throw an exception if called from
-	 * outside the UI thread, but the returned Shell may be wrong.
-	 * </p>
-	 * 
-	 * @return the shell for this workbench site
-	 */
-	public Shell getShell();
-
-	/**
-	 * Returns the workbench window containing this workbench site.
-	 * 
-	 * @return the workbench window containing this workbench site
-	 */
-	public IWorkbenchWindow getWorkbenchWindow();
-
-	/**
-	 * Sets the selection provider for this workbench site.
-	 * 
-	 * @param provider
-	 *            the selection provider, or <code>null</code> to clear it
-	 */
-	public void setSelectionProvider(ISelectionProvider provider);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindow.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindow.java
deleted file mode 100644
index 5b51843..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindow.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * A workbench window is a top level window in a workbench. Visually, a
- * workbench window has a menubar, a toolbar, a status bar, and a main area for
- * displaying a single page consisting of a collection of views and editors.
- * <p>
- * Each workbench window has a collection of 0 or more pages; the active page is
- * the one that is being presented to the end user; at most one page is active
- * in a window at a time.
- * </p>
- * <p>
- * The workbench window supports a few {@link IServiceLocator services} by
- * default. If these services are used to allocate resources, it is important to
- * remember to clean up those resources after you are done with them. Otherwise,
- * the resources will exist until the workbench window is closed. The supported
- * services are:
- * </p>
- * <ul>
- * <li>{@link ICommandService}</li>
- * <li>{@link IContextService}</li>
- * <li>{@link IHandlerService}</li>
- * <li>{@link IBindingService}. Resources allocated through this service will
- * not be cleaned up until the workbench shuts down.</li>
- * </ul>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IWorkbenchPage
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchWindow extends IPageService, IRunnableContext,
-		IServiceLocator, IShellProvider {
-    /**
-     * Closes this workbench window.
-     * <p>
-     * If the window has an open editor with unsaved content, the user will be
-     * given the opportunity to save it.
-     * </p>
-     * 
-     * @return <code>true</code> if the window was successfully closed, and
-     *         <code>false</code> if it is still open
-     */
-    public boolean close();
-
-    /**
-     * Returns the currently active page for this workbench window.
-     * 
-     * @return the active page, or <code>null</code> if none
-     */
-    public IWorkbenchPage getActivePage();
-
-    /**
-     * Returns a list of the pages in this workbench window.
-     * <p>
-     * Note that each window has its own pages; pages are never shared between
-     * different windows.
-     * </p>
-     * 
-     * @return a list of pages
-     */
-    public IWorkbenchPage[] getPages();
-
-    /**
-     * Returns the part service which tracks part activation within this
-     * workbench window.
-     * 
-     * @return the part service
-     */
-    public IPartService getPartService();
-
-    /**
-     * Returns the selection service which tracks selection within this
-     * workbench window.
-     * 
-     * @return the selection service
-     */
-    public ISelectionService getSelectionService();
-
-    /**
-     * Returns this workbench window's shell.
-     * 
-     * @return the shell containing this window's controls or <code>null</code>
-     *   if the shell has not been created yet or if the window has been closed
-     */
-    public Shell getShell();
-
-    /**
-     * Returns the workbench for this window.
-     * 
-     * @return the workbench
-     */
-    public IWorkbench getWorkbench();
-
-    /**
-     * Returns whether the specified menu is an application menu as opposed to
-     * a part menu. Application menus contain items which affect the workbench
-     * or window. Part menus contain items which affect the active part (view
-     * or editor).
-     * <p>
-     * This is typically used during "in place" editing. Application menus
-     * should be preserved during menu merging. All other menus may be removed
-     * from the window.
-     * </p>
-     * 
-     * @param menuId
-     *            the menu id
-     * @return <code>true</code> if the specified menu is an application
-     *         menu, and <code>false</code> if it is not
-     */
-    public boolean isApplicationMenu(String menuId);
-
-    /**
-     * Creates and opens a new workbench page. The perspective of the new page
-     * is defined by the specified perspective ID. The new page become active.
-     * <p>
-     * <b>Note:</b> Since release 2.0, a window is limited to contain at most
-     * one page. If a page exist in the window when this method is used, then
-     * another window is created for the new page. Callers are strongly
-     * recommended to use the <code>IWorkbench.showPerspective</code> APIs to
-     * programmatically show a perspective.
-     * </p>
-     * 
-     * @param perspectiveId
-     *            the perspective id for the window's initial page
-     * @param input
-     *            the page input, or <code>null</code> if there is no current
-     *            input. This is used to seed the input for the new page's
-     *            views.
-     * @return the new workbench page
-     * @exception WorkbenchException
-     *                if a page could not be opened
-     * 
-     * @see IWorkbench#showPerspective(String, IWorkbenchWindow, IAdaptable)
-     */
-    public IWorkbenchPage openPage(String perspectiveId, IAdaptable input)
-            throws WorkbenchException;
-
-    /**
-     * Creates and opens a new workbench page. The default perspective is used
-     * as a template for creating the page. The page becomes active.
-     * <p>
-     * <b>Note:</b> Since release 2.0, a window is limited to contain at most
-     * one page. If a page exist in the window when this method is used, then
-     * another window is created for the new page. Callers are strongly
-     * recommended to use the <code>IWorkbench.showPerspective</code> APIs to
-     * programmatically show a perspective.
-     * </p>
-     * 
-     * @param input
-     *            the page input, or <code>null</code> if there is no current
-     *            input. This is used to seed the input for the new page's
-     *            views.
-     * @return the new workbench window
-     * @exception WorkbenchException
-     *                if a page could not be opened
-     * 
-     * @see IWorkbench#showPerspective(String, IWorkbenchWindow, IAdaptable)
-     */
-    public IWorkbenchPage openPage(IAdaptable input) throws WorkbenchException;
-
-    /**
-     * This specialization of IRunnableContext#run(boolean, boolean,
-     * IRunnableWithProgress) blocks until the runnable has been run,
-     * regardless of the value of <code>fork</code>.
-     * It is recommended that <code>fork</code> is set to
-     * true in most cases. If <code>fork</code> is set to <code>false</code>,
-     * the runnable will run in the UI thread and it is the runnable's
-     * responsibility to call <code>Display.readAndDispatch()</code>
-     * to ensure UI responsiveness.
-     * 
-     * @since 3.2
-     */
-    public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException;
-
-    /**
-     * Sets or clears the currently active page for this workbench window.
-     * 
-     * @param page
-     *            the new active page
-     */
-    public void setActivePage(IWorkbenchPage page);
-    
-    /**
-	 * <p>
-	 * Return the extension tracker for the workbench. This tracker may be used
-	 * by plug-ins to ensure responsiveness to changes to the plug-in registry.
-	 * </p>
-	 * <p>
-	 * The tracker at this level of the workbench is typically used to track
-	 * elements that persist for the life of the workbench. For example, the
-	 * action objects corresponding to new wizards contributed by plug-ins fall
-	 * into this category.
-	 * </p>
-	 * 
-	 * @return the extension tracker
-	 * @see IWorkbench#getExtensionTracker()
-	 * @see IWorkbenchPage#getExtensionTracker()
-	 * @since 3.1
-	 */
-    public IExtensionTracker getExtensionTracker();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowActionDelegate.java
deleted file mode 100644
index becae29..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowActionDelegate.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * Interface for an action that is contributed into the workbench window menu 
- * or tool bar. It extends <code>IActionDelegate</code> and adds an
- * initialization method for connecting the delegate to the workbench window it
- * should work with.
- */
-public interface IWorkbenchWindowActionDelegate extends IActionDelegate {
-    /**
-     * Disposes this action delegate.  The implementor should unhook any references
-     * to itself so that garbage collection can occur.
-     */
-    public void dispose();
-
-    /**
-     * Initializes this action delegate with the workbench window it will work in.
-     *
-     * @param window the window that provides the context for this delegate
-     */
-    public void init(IWorkbenchWindow window);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java
deleted file mode 100644
index 2d4a386..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * Interface for a pulldown action that is contributed into the workbench window 
- * tool bar.  It extends <code>IWorkbenchWindowActionDelegate</code> and adds an
- * initialization method to define the menu creator for the action.
- */
-public interface IWorkbenchWindowPulldownDelegate extends
-        IWorkbenchWindowActionDelegate {
-    /**
-     * Returns the menu for this pull down action.  This method will only be
-     * called if the user opens the pull down menu for the action.   Note that it
-     * is the responsibility of the implementor to properly dispose of any SWT menus
-     * created by this method.
-     * 
-     * @return the menu
-     */
-    public Menu getMenu(Control parent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java
deleted file mode 100644
index 7e2a2bb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWindowPulldownDelegate2.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * Extension of IWorkbenchWindowPulldownDelegate that allows the delegate dropdown
- * menu to be a child of a Menu item.  Necessary for CoolBar support.  If a coolbar 
- * group of items is not fully displayed, a chevron and a drop down menu will be
- * used to show the group's tool items.  Therefore, a getMenu(Menu) method is necessary, 
- * since the delegate drop down menu will be a child of the chevron menu item (not 
- * the tool control).
- */
-public interface IWorkbenchWindowPulldownDelegate2 extends
-        IWorkbenchWindowPulldownDelegate {
-    /**
-     * Returns the menu for this pull down action.  This method will only be
-     * called if the user opens the pull down menu for the action.  Note that it
-     * is the responsibility of the implementor to properly dispose of any SWT
-     * menus created by this method.
-     * 
-     * @return the menu
-     */
-    public Menu getMenu(Menu parent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWizard.java
deleted file mode 100644
index e06d852..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkbenchWizard.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-
-/**
- * Implementors represent creation wizards that are to be
- * contributed to the workbench's creation wizard extension point.
- *
- * @see org.eclipse.jface.wizard.IWizard
- */
-public interface IWorkbenchWizard 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 selection the current object selection
-     */
-    void init(IWorkbench workbench, IStructuredSelection selection);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSet.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSet.java
deleted file mode 100644
index b4fba3e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSet.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * A working set holds a number of IAdaptable elements. 
- * A working set is intended to group elements for presentation to 
- * the user or for operations on a set of elements.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 2.0 initial version
- * @since 3.0 now extends {@link org.eclipse.ui.IPersistableElement}
- * @since 3.2 now extends {@link org.eclipse.core.runtime.IAdaptable}
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkingSet extends IPersistableElement, IAdaptable {
-    /**
-     * Returns the elements that are contained in this working set.
-     * 
-     * @return	the working set's elements
-     */
-    public IAdaptable[] getElements();
-
-    /**
-     * Returns the working set id. Returns <code>null</code> if no
-     * working set id has been set.
-     * This is one of the ids defined by extensions of the 
-     * org.eclipse.ui.workingSets extension point.
-     * It is used by the workbench to determine the page to use in 
-     * the working set edit wizard. The default resource edit page
-     * is used if this value is <code>null</code>.
-     * 
-     * @return the working set id. May be <code>null</code>
-     * @since 2.1 
-     */
-    public String getId();
-
-    /**
-     * Returns the working set icon.
-     * Currently, this is one of the icons specified in the extensions 
-     * of the org.eclipse.ui.workingSets extension point. 
-     * The extension is identified using the value returned by
-     * <code>getId()</code>. 
-     * Returns <code>null</code> if no icon has been specified in the 
-     * extension or if <code>getId()</code> returns <code>null</code>. 
-     * 
-     * @return the working set icon or <code>null</code>.
-     * @since 2.1 
-     * @deprecated use {@link #getImageDescriptor()} instead
-     */
-    public ImageDescriptor getImage();
-    
-    /**
-     * Returns the working set icon.
-     * Currently, this is one of the icons specified in the extensions 
-     * of the org.eclipse.ui.workingSets extension point. 
-     * The extension is identified using the value returned by
-     * <code>getId()</code>. 
-     * Returns <code>null</code> if no icon has been specified in the 
-     * extension or if <code>getId()</code> returns <code>null</code>. 
-     * 
-     * @return the working set icon or <code>null</code>.
-     * @since 3.3
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns the name of the working set.
-     * 
-     * @return	the name of the working set
-     */
-    public String getName();
-
-    /**
-	 * Sets the elements that are contained in this working set.
-	 * 
-	 * @param elements
-	 *            the elements to set in this working set
-	 * @since 3.3 it is now recommended that all calls to this method pass
-	 *        through the results from calling
-	 *        {@link #adaptElements(IAdaptable[])} with the desired elements.
-	 */
-	public void setElements(IAdaptable[] elements);
-
-    /**
-	 * Sets the working set id. This is one of the ids defined by extensions of
-	 * the org.eclipse.ui.workingSets extension point. It is used by the
-	 * workbench to determine the page to use in the working set edit wizard.
-	 * The default resource edit page is used if this value is <code>null</code>.
-	 * 
-	 * @param id
-	 *            the working set id. May be <code>null</code>
-	 * @since 2.1
-	 */
-    public void setId(String id);
-
-    /**
-     * Sets the name of the working set. 
-     * The working set name should be unique.
-     * The working set name must not have leading or trailing 
-     * whitespace.
-     * 
-     * @param name the name of the working set
-     */
-    public void setName(String name);
-    
-    /**
-     * Returns whether this working set can be edited or not. To make
-     * a working set editable the attribute <code>pageClass</code> of
-     * the extension defining a working set must be provided.
-     * 
-     * @return <code>true</code> if the working set can be edited; otherwise
-     *  <code>false</code>
-     *  
-     * @since 3.1
-     */
-    public boolean isEditable();
- 
-    /**
-	 * Returns whether this working set should be shown in user interface
-	 * components that list working sets by name.
-	 * 
-	 * @return <code>true</code> if the working set should be shown in the
-	 *         user interface; otherwise <code>false</code>
-	 * 
-	 * @since 3.2
-	 */
-	public boolean isVisible();
-    
-    /**
-	 * Return the name of this working set, formated for the end user. Often this value is
-	 * the same as the one returned from {@link #getName()}.
-	 * 
-	 * @return the name of this working set, formated for the end user
-	 * @since 3.2
-	 */
-    public String getLabel();
-    
-    /**
-	 * Set the name of this working set, formated for the end user.
-	 * 
-	 * @param label
-	 *            the label for this working set. If <code>null</code> is
-	 *            supplied then the value of {@link #getName()} will be used.
-	 * @since 3.2
-	 */
-	public void setLabel(String label);
-	
-	/**
-	 * Returns <code>true</code> if this working set is capable of updating
-	 * itself and reacting to changes in the state of its members. For
-	 * non-aggregate working sets this means that the working set has an
-	 * {@link IWorkingSetUpdater} installed while for aggregates it means that
-	 * all component sets have {@link IWorkingSetUpdater}s installed. Otherwise
-	 * returns <code>false</code>.
-	 * 
-	 * @return whether the set is self-updating or not
-	 * @since 3.2
-	 */
-	public boolean isSelfUpdating();
-	
-	/**
-	 * Returns whether this working set is an aggregate working set or not.
-	 * 
-	 * <p>
-	 * It is recommended that clients of aggregate working sets treat them in a
-	 * specific way. Please see the documentation for
-	 * {@link IWorkbenchPage#getAggregateWorkingSet()} for details.
-	 * 
-	 * @return whether this working set is an aggregate working set or not
-	 * @since 3.2
-	 */
-	public boolean isAggregateWorkingSet();	
-	
-	/**
-	 * Returns whether this working set is currently empty (has no elements).
-	 * 
-	 * @return whether this working set is currently empty
-	 * @since 3.2
-	 */
-	public boolean isEmpty();
-	
-	/**
-	 * Transforms the supplied elements into elements that are suitable for
-	 * containment in this working set. This is useful for UI elements which
-	 * wish to filter contributions to working sets based on applicability. This
-	 * is a hint, however, and is not considered when the
-	 * {@link #setElements(IAdaptable[])} method is invoked.
-	 * 
-	 * @param objects
-	 *            the objects to transform
-	 * @return an array of transformed elements that be empty if no elements
-	 *         from the original array are suitable
-	 * @since 3.3
-	 * @see org.eclipse.ui.IWorkingSetElementAdapter
-	 * @see org.eclipse.ui.BasicWorkingSetElementAdapter
-	 */
-	public IAdaptable[] adaptElements(IAdaptable[] objects);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetElementAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetElementAdapter.java
deleted file mode 100644
index 33f36db..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetElementAdapter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * <p>
- * Interface that describes a mechanism that may be provided by working set
- * extensions to help manage the addition of elements to working sets. Instances
- * of this class are capable of transforming possible working set content into
- * the most applicable form.
- * </p>
- * 
- * <p>
- * Usage of this interface is achieved via the <code>elementAdapterClass</code>
- * attribute of the <code>org.eclipse.ui.workingSets</code> extension point.
- * Usage of this interface in <code>org.eclipse.ui.workingSets</code>
- * extensions is optional.
- * </p>
- * 
- * @since 3.3
- */
-public interface IWorkingSetElementAdapter {
-
-	/**
-	 * Converts the given elements for addition to/removal from the working set.
-	 * 
-	 * @param ws
-	 *            the target working set that elements should be adapted for
-	 * @param elements
-	 *            the elements to adapt
-	 * @return the (possibly adapted) elements to add to/remove from the working
-	 *         set
-	 */
-	IAdaptable[] adaptElements(IWorkingSet ws, IAdaptable[] elements);
-
-	/**
-	 * Disposes of this element adaptor.
-	 */
-	void dispose();
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetManager.java
deleted file mode 100644
index b90f614..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetManager.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
-import org.eclipse.ui.dialogs.IWorkingSetNewWizard;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-
-/**
- * A working set manager stores working sets and provides property 
- * change notification when a working set is added or removed.
- * <p>
- * The workbench working set manager can be accessed using 
- * <code>IWorkbench#getWorkingSetManager()</code>
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IWorkingSet
- * @since 2.0 initial version
- * @since 3.0 added createWorkingSet(IMemento)
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkingSetManager {
-
-    /**
-     * Change event id when a working set is added
-     * newValue of the PropertyChangeEvent will be the added working set.
-     * oldValue will be null.
-     *
-     * @see IPropertyChangeListener
-     */
-    public static final String CHANGE_WORKING_SET_ADD = "workingSetAdd"; //$NON-NLS-1$
-
-    /**
-     * Change event id when a working set is removed
-     * newValue of the PropertyChangeEvent will be null.
-     * oldValue will be the removed working set.
-     *
-     * @see IPropertyChangeListener
-     */
-    public static final String CHANGE_WORKING_SET_REMOVE = "workingSetRemove"; //$NON-NLS-1$
-
-    /**
-     * Change event id when the working set contents changed
-     * newValue of the PropertyChangeEvent will be the changed working set.
-     * oldValue will be null.
-     *
-     * @see IPropertyChangeListener
-     */
-    public static final String CHANGE_WORKING_SET_CONTENT_CHANGE = "workingSetContentChange"; //$NON-NLS-1$
-
-    /**
-     * Change event id when the working set name changed.
-     * newValue of the PropertyChangeEvent will be the changed working set.
-     * oldValue will be null.
-     *
-     * @see IPropertyChangeListener
-     */
-    public static final String CHANGE_WORKING_SET_NAME_CHANGE = "workingSetNameChange"; //$NON-NLS-1$	
-    
-    /**
-     * Change event id when the working set label changed.
-     * newValue of the PropertyChangeEvent will be the changed working set.
-     * oldValue will be null.
-     *
-     * @see IPropertyChangeListener
-     * @since 3.2
-     */
-    public static final String CHANGE_WORKING_SET_LABEL_CHANGE = "workingSetLabelChange"; //$NON-NLS-1$	
-    
-    /**
-     * Change event id when a working set updater got installed.
-     * NewValue of the PropertyChangeEvent will be the installed updater.
-     * OldValue will be <code>null</code>
-     * @since 3.1
-     */
-    public static final String CHANGE_WORKING_SET_UPDATER_INSTALLED = "workingSetUpdaterInstalled"; //$NON-NLS-1$
-    
-    /**
-     * Change event id when a working set updater got uninstalled.
-     * NewValue will be <code>null</code>
-     * OldValue of the PropertyChangeEvent will be the uninstalled updater.
-     * @since 3.3
-     */
-    public static final String CHANGE_WORKING_SET_UPDATER_UNINSTALLED = "workingSetUpdaterUninstalled"; //$NON-NLS-1$
-
-    /**
-     * Adds a property change listener.
-     * 
-     * @param listener the property change listener to add
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Adds a working set to the top of the list of most recently used 
-     * working sets, making it the most recently used working set.
-     * The last (oldest) item will be deleted if the list exceeds the 
-     * size limit.
-     * 
-     * @param workingSet the working set to add to the list of most 
-     * 	recently used working sets.
-     */
-    public void addRecentWorkingSet(IWorkingSet workingSet);
-
-    /**
-     * Adds a working set to the receiver. The working set must 
-     * not exist yet.
-     * 
-     * @param workingSet the working set to add
-     */
-    public void addWorkingSet(IWorkingSet workingSet);
-
-    /**
-     * Creates a new working set.
-     * The working set is not added to the working set manager.
-     * 
-     * @param name the name of the new working set. Should not have 
-     * 	leading or trailing whitespace.
-     * @param elements the working set contents
-     * @return a new working set with the specified name and content
-     */
-    public IWorkingSet createWorkingSet(String name, IAdaptable[] elements);
-    
-    /**
-	 * Create a working set that is the union of a collection of other working
-	 * sets. One connected (via
-	 * {@link IWorkingSetManager#addWorkingSet(IWorkingSet)} this working set
-	 * will be automatically updated to reflect the contents of the component
-	 * sets, should they themselves change.
-	 * 
-	 * @param name
-	 *            the name of the new working set. Should not have leading or
-	 *            trailing whitespace.
-	 * @param label
-	 *            the user-friendly label the working set
-	 * @param components
-	 *            the component working sets
-	 * @return a new working set with the specified name and content
-	 * 
-	 * @since 3.2
-	 */
-	public IWorkingSet createAggregateWorkingSet(String name, String label,
-			IWorkingSet[] components);
-
-    /**
-     * Re-creates and returns a working set from the state captured within the 
-     * given memento. 
-     *
-     * @param memento a memento containing the state for the working set
-     * @return the restored working set, or <code>null</code> if it could not be created
-     * 
-     * @since 3.0
-     */
-    public IWorkingSet createWorkingSet(IMemento memento);
-
-    /**
-     * Creates a working set edit wizard for the specified working set.
-     * The working set will already be set in the wizard.
-     * The caller is responsible for creating and opening a wizard dialog.
-     *
-     * Example:
-     * <code>
-     *  IWorkingSetEditWizard wizard = workingSetManager.createWorkingSetEditWizard(workingSet);
-     *  if (wizard != null) {
-     *	  WizardDialog dialog = new WizardDialog(shell, wizard);
-     *
-     *	  dialog.create();		
-     *	  if (dialog.open() == Window.OK) {		
-     *		  workingSet = wizard.getSelection();
-     *    }
-     *	}
-     * </code>
-     * 
-     * @param workingSet working set to create a working set edit wizard 
-     * 	for.
-     * @return a working set edit wizard to edit the specified working set
-     *  or <code>null</code> if no edit wizard has been defined for the
-     *  working set. If the defined edit wizard for the working set could 
-     *  not be loaded a default IResource based wizard will be returned. 
-     * 	If the default edit wizard can not be loaded <code>null</code> is 
-     *  returned.
-     * @since 2.1
-     */
-    public IWorkingSetEditWizard createWorkingSetEditWizard(
-            IWorkingSet workingSet);
-    
-
-    /**
-     * Creates a working set new wizard. The wizard will allow creating new
-     * working sets. Returns <code>null</code> if there aren't any working set
-     * definitions that support creation of working sets.
-     * <p>
-     * Example:
-     * <code>
-     *   IWorkingSetNewWizard wizard= workingSetManager.createWorkingSetNewWizard(null);
-     *   if (wizard != null) {  
-     *	     WizardDialog dialog = new WizardDialog(shell, wizard);
-     *
-     *	     dialog.create();		
-     *	     if (dialog.open() == Window.OK) {		
-     *		    ...
-     *       }
-     *   }
-     * </code>
-     * </p>
-     * 
-     * @param workingSetIds a list of working set ids which are valid workings sets
-     *  to be created or <code>null</code> if all currently available working set types
-     *  are valid
-     * 
-     * @return the working set new wizard or <code>null</code>
-     * 
-     * @since 3.1
-     */
-    public IWorkingSetNewWizard createWorkingSetNewWizard(String[] workingSetIds);
-    
-    /**
-     * @param parent the parent shell
-     * @return the dialog
-     * @deprecated use createWorkingSetSelectionDialog(parent, true) instead
-     */
-    public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(
-            Shell parent);
-
-    /**
-     * Creates a working set selection dialog that lists all working 
-     * sets and allows the user to add, remove and edit working sets.
-     * The caller is responsible for opening the dialog with 
-     * <code>IWorkingSetSelectionDialog#open</code>, and subsequently 
-     * extracting the selected working sets using 
-     * <code>IWorkingSetSelectionDialog#getSelection</code>.
-     * 
-     * @param parentShell the parent shell of the working set selection dialog
-     * @param multi true=more than one working set can be chosen 
-     * 	in the dialog. false=only one working set can be chosen. Multiple
-     * 	working sets can still be selected and removed from the list but
-     * 	the dialog can only be closed when a single working set is selected.
-     * @return a working set selection dialog
-     */
-    public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(
-            Shell parentShell, boolean multi);
-
-    /**
-     * Creates a working set selection dialog that lists all working 
-     * sets with the specified ids and allows the user to add, remove and
-     * edit working sets with the specified ids.
-     * The caller is responsible for opening the dialog with 
-     * <code>IWorkingSetSelectionDialog#open</code>, and subsequently 
-     * extracting the selected working sets using 
-     * <code>IWorkingSetSelectionDialog#getSelection</code>.
-     * 
-     * @param parentShell the parent shell of the working set selection dialog
-     * @param multi true=more than one working set can be chosen 
-     *  in the dialog. false=only one working set can be chosen. Multiple
-     *  working sets can still be selected and removed from the list but
-     *  the dialog can only be closed when a single working set is selected.
-     * @param workingsSetIds a list of working set ids which are valid workings sets
-     *  to be selected, created, removed or edited, or <code>null</code> if all currently
-     *  available working set types are valid 
-     * @return a working set selection dialog
-     * @since 3.1
-     */
-    public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(
-            Shell parentShell, boolean multi, String[] workingsSetIds);
-    
-    /**
-     * Returns the list of most recently used working sets.
-     * The most recently used working set appears first in the list.
-     * 
-     * @return the list of most recently used working sets
-     */
-    public IWorkingSet[] getRecentWorkingSets();
-
-    /**
-     * Returns the working set with the specified name.
-     * Returns null if there is no working set with that name.
-     * 
-     * @param name the name of the working set to return
-     * @return the working set with the specified name.
-     */
-    public IWorkingSet getWorkingSet(String name);
-
-    /**
-	 * Returns an array of all working sets stored in the receiver. Any working
-	 * set whose {@link IWorkingSet#isVisible()} method returns false will not be
-	 * included in this array. For a complete list of working sets please use
-	 * {@link #getAllWorkingSets()}.
-	 * 
-	 * @return the working sets stored in the receiver
-	 */
-    public IWorkingSet[] getWorkingSets();
-    
-    /**
-	 * Returns an array of all working sets stored in the receiver including
-	 * those that are marked as being not visible.
-	 * 
-	 * @see IWorkingSet#isVisible()
-	 * @return the working sets stored in the receiver
-	 * @since 3.2
-	 */
-    public IWorkingSet[] getAllWorkingSets();
-
-    /**
-     * Removes the property change listener.
-     * 
-     * @param listener the property change listener to remove
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Removes the working set
-     * 
-     * @param workingSet the working set to remove
-     */
-    public void removeWorkingSet(IWorkingSet workingSet);
-    
-    /**
-     * Disposes the working set manager.
-     * 
-     * @since 3.1
-     */
-    public void dispose();
-    
-    /**
-	 * Utility method that will add the <code>element</code> to each given
-	 * working set in <code>workingSets</code> if possible. This method will
-	 * invoke {@link IWorkingSet#adaptElements(IAdaptable[])} for the element on
-	 * each working set and the result of this method will be used rather than
-	 * the original element in the addition operation.
-	 * 
-	 * @param element
-	 *            the element to adapt and then add to the working sets
-	 * @param workingSets
-	 *            the working sets to add the element to
-	 * @since 3.4
-	 */
-	public void addToWorkingSets(IAdaptable element, IWorkingSet[] workingSets);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater.java
deleted file mode 100644
index 0ebb1ae..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IWorkingSetUpdater.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * An <code>IWorkingSetUpdater</code> can be used to dynamically update
- * the content of a working set. 
- * <p>
- * A working set updater manages a set of working sets. It is contributed
- * via the attribute <code>updaterClass</code> of the <code>
- * org.eclipse.ui.workingSets</code> extension point. Extensions of this
- * extension point must therefore implement this interface.
- * </p>
- * <p>
- * API under construction and subject to change at any time.
- * </p>
- * @since 3.1
- */
-public interface IWorkingSetUpdater {
-	/**
-	 * Adds a working set to this updater.
-	 * 
-	 * @param workingSet the working set to add to this updater
-	 */
-	public void add(IWorkingSet workingSet);
-	
-	/**
-	 * Removes a working set from this updater.
-	 * 
-	 * @param workingSet the working set to remove
-	 * 
-	 * @return <code>true</code> if the updater changed (e.g.
-	 *  the element got removed)
-	 */
-	public boolean remove(IWorkingSet workingSet);
-	
-	/**
-	 * Returns <code>true</code> if the updater contains the
-	 * given working set; otherwise <code>false</code> is 
-	 * returned.
-	 * 
-	 * @param workingSet the parameter to check
-	 * 
-	 * @return whether the updater contains the given working
-	 *  set
-	 */
-	public boolean contains(IWorkingSet workingSet);
-	
-	/**
-	 * Disposes this working set updater. Implementations of this
-	 * method typically remove listeners from some delta providers. 
-	 */
-	public void dispose();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/LegacyHandlerSubmissionExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/LegacyHandlerSubmissionExpression.java
deleted file mode 100644
index 01b7e25..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/LegacyHandlerSubmissionExpression.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * <p>
- * An expression encapsulating all of the information from legacy handler
- * submissions.
- * </p>
- * 
- * @since 3.1
- */
-public final class LegacyHandlerSubmissionExpression extends Expression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyHandlerSubmissionExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The identifier for the part that must be active for this expression to
-	 * evaluate to <code>true</code>. If this value is <code>null</code>,
-	 * then any part may be active.
-	 */
-	private final String activePartId;
-
-	/**
-	 * The shell that must be active for this expression to evaluate to
-	 * <code>true</code>. If this value is <code>null</code>, then any
-	 * shell may be active.
-	 */
-	private final Shell activeShell;
-
-	/**
-	 * The site that must be active for this expression to evaluate to
-	 * <code>true</code>. If this value is <code>null</code>, then any
-	 * site may be active.
-	 */
-	private final IWorkbenchPartSite activeSite;
-
-	/**
-	 * Constructs a new instance of
-	 * <code>LegacyHandlerSubmissionExpression</code>
-	 * 
-	 * @param activePartId
-	 *            The part identifier to match with the active part;
-	 *            <code>null</code> if it will match any active part.
-	 * @param activeShell
-	 *            The shell to match with the active shell; <code>null</code>
-	 *            if it will match any active shell.
-	 * @param activeSite
-	 *            The site to match with the active site; <code>null</code> if
-	 *            it will match any active site.
-	 */
-	public LegacyHandlerSubmissionExpression(final String activePartId,
-			final Shell activeShell, final IWorkbenchPartSite activeSite) {
-
-		this.activePartId = activePartId;
-		this.activeShell = activeShell;
-		this.activeSite = activeSite;
-	}
-
-	/**
-	 * Collect expression info for a legacy handler submission.  Namely 
-	 * the active part id and name, active shell name, active workbench
-	 * window shell name and the active site name.
-	 * 
-	 * @since 3.2
-	 */
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		if (activePartId != null) {
-			info.addVariableNameAccess(ISources.ACTIVE_PART_ID_NAME);
-		}
-		if (activeShell != null) {
-			info.addVariableNameAccess(ISources.ACTIVE_SHELL_NAME);
-			info
-					.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME);
-		}
-		if (activeSite != null) {
-			info.addVariableNameAccess(ISources.ACTIVE_SITE_NAME);
-		}
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(activePartId);
-		hashCode = hashCode * HASH_FACTOR + hashCode(activeShell);
-		hashCode = hashCode * HASH_FACTOR + hashCode(activeSite);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyHandlerSubmissionExpression) {
-			final LegacyHandlerSubmissionExpression that = (LegacyHandlerSubmissionExpression) object;
-			return equals(this.activePartId, that.activePartId)
-					&& equals(this.activeShell, that.activeShell)
-					&& equals(this.activeSite, that.activeSite);
-		}
-
-		return false;
-	}
-
-	/**
-	 * Evaluates this expression. This tests the three conditions against the
-	 * current state of the application (as defined by <code>context</code>).
-	 * If a condition is <code>null</code>, then it matches any possible
-	 * value (i.e., it is not tested at all).
-	 * 
-	 * @param context
-	 *            The context providing the current workbench state; must not be
-	 *            <code>null</code>.
-	 * @return <code>EvaluationResult.TRUE</code> if the conditions all
-	 *         matches; <code>EvaluationResult.FALSE</code> otherwise.
-	 */
-	public final EvaluationResult evaluate(final IEvaluationContext context) {
-		if (activePartId != null) {
-			final Object value = context
-					.getVariable(ISources.ACTIVE_PART_ID_NAME);
-			if (!activePartId.equals(value)) {
-				return EvaluationResult.FALSE;
-			}
-		}
-
-		if (activeShell != null) {
-			Object value = context.getVariable(ISources.ACTIVE_SHELL_NAME);
-			if (!activeShell.equals(value)) {
-				value = context
-						.getVariable(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME);
-				if (!activeShell.equals(value)) {
-					return EvaluationResult.FALSE;
-				}
-			}
-		}
-
-		if (activeSite != null) {
-			final Object value = context.getVariable(ISources.ACTIVE_SITE_NAME);
-			if (!activeSite.equals(value)) {
-				return EvaluationResult.FALSE;
-			}
-		}
-
-		return EvaluationResult.TRUE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("LegacyHandlerSubmission("); //$NON-NLS-1$
-		buffer.append(activeShell);
-		buffer.append(',');
-		buffer.append(activePartId);
-		buffer.append(',');
-		buffer.append(activeSite);
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/NavigationLocation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/NavigationLocation.java
deleted file mode 100644
index 7c28a03..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/NavigationLocation.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-/**
- * Default implementation of INavigationLocation.
- * 
- * @since 2.1
- */
-public abstract class NavigationLocation implements INavigationLocation {
-
-    private IWorkbenchPage page;
-
-    private IEditorInput input;
-
-    /**
-     * Constructs a NavigationLocation with its editor part.
-     * 
-     * @param editorPart
-     */
-    protected NavigationLocation(IEditorPart editorPart) {
-        this.page = editorPart.getSite().getPage();
-        this.input = editorPart.getEditorInput();
-    }
-
-    /** 
-     * Returns the part that the receiver holds the location for.
-     * 
-     * @return IEditorPart
-     */
-    protected IEditorPart getEditorPart() {
-        if (input == null) {
-			return null;
-		}
-        return page.findEditor(input);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on INavigationLocation.
-     */
-    public Object getInput() {
-        return input;
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on INavigationLocation.
-     */
-    public String getText() {
-        IEditorPart part = getEditorPart();
-        if (part == null) {
-			return new String();
-		}
-        return part.getTitle();
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on INavigationLocation.
-     */
-    public void setInput(Object input) {
-        this.input = (IEditorInput) input;
-    }
-
-    /**
-     * May be extended by clients.
-     *
-     * @see org.eclipse.ui.INavigationLocation#dispose()
-     */
-    public void dispose() {
-        releaseState();
-    }
-
-    /**
-     * May be extended by clients.
-     * 
-     * @see org.eclipse.ui.INavigationLocation#releaseState()
-     */
-    public void releaseState() {
-        input = null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PartInitException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PartInitException.java
deleted file mode 100644
index d07dc10..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PartInitException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * A checked exception indicating a workbench part cannot be initialized 
- * correctly. The message text provides a further description of the problem.
- * <p>
- * This exception class is not intended to be subclassed by clients.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PartInitException extends WorkbenchException {
-    
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3257284721296684850L;
-
-    /**
-     * Creates a new exception with the given message.
-     * 
-     * @param message the message
-     */
-    public PartInitException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new exception with the given message.
-     * 
-     * @param message the message
-     * @param nestedException a exception to be wrapped by this PartInitException
-     */
-    public PartInitException(String message, Throwable nestedException) {
-        super(message, nestedException);
-    }
-
-    /**
-     * Creates a new exception with the given status object.  The message
-     * of the given status is used as the exception message.
-     *
-     * @param status the status object to be associated with this exception
-     */
-    public PartInitException(IStatus status) {
-        super(status);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PerspectiveAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PerspectiveAdapter.java
deleted file mode 100644
index e15a0d6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PerspectiveAdapter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-/**
- * This adapter class provides default implementations for the methods described
- * by the <code>IPerspectiveListener</code> interface and its extension
- * interfaces.
- * <p>
- * Classes that wish to deal with events which occur as perspectives are added,
- * removed, activated and changed, can extend this class and override only the
- * methods which they are interested in.
- * </p>
- * 
- * @see org.eclipse.ui.IPerspectiveListener
- * @see org.eclipse.ui.IPerspectiveListener2
- * @see org.eclipse.ui.IPerspectiveListener3
- * @see org.eclipse.ui.IPerspectiveListener4
- * @since 3.1
- */
-public class PerspectiveAdapter implements IPerspectiveListener4 {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener3#perspectiveOpened(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public void perspectiveOpened(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener3#perspectiveClosed(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public void perspectiveClosed(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener2#perspectiveChanged(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor,
-	 *      org.eclipse.ui.IWorkbenchPartReference, java.lang.String)
-	 */
-	public void perspectiveChanged(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective,
-			IWorkbenchPartReference partRef, String changeId) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener#perspectiveActivated(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public void perspectiveActivated(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener#perspectiveChanged(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor, java.lang.String)
-	 */
-	public void perspectiveChanged(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective, String changeId) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener3#perspectiveDeactivated(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public void perspectiveDeactivated(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveListener3#perspectiveSavedAs(org.eclipse.ui.IWorkbenchPage,
-	 *      org.eclipse.ui.IPerspectiveDescriptor,
-	 *      org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public void perspectiveSavedAs(IWorkbenchPage page,
-			IPerspectiveDescriptor oldPerspective,
-			IPerspectiveDescriptor newPerspective) {
-		// do nothing
-	}
-
-	/**
-	 * {@inheritDoc}
-	 * @since 3.2
-	 */
-	public void perspectivePreDeactivate(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PlatformUI.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PlatformUI.java
deleted file mode 100644
index 67fa4c2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/PlatformUI.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.testing.TestableObject;
-
-/**
- * The central class for access to the Eclipse Platform User Interface. 
- * This class cannot be instantiated; all functionality is provided by 
- * static methods.
- * 
- * Features provided:
- * <ul>
- * <li>creation of the workbench.</li>
- * <li>access to the workbench.</li>
- * </ul>
- * <p>
- *
- * @see IWorkbench
- */
-public final class PlatformUI {
-    /**
-     * Identifies the workbench plug-in.
-     */
-    public static final String PLUGIN_ID = "org.eclipse.ui"; //$NON-NLS-1$
-
-    /**
-     * Return code (value 0) indicating that the workbench terminated normally.
-     * 
-     * @see #createAndRunWorkbench
-     * @since 3.0
-     */
-    public static final int RETURN_OK = 0;
-
-    /**
-     * Return code (value 1) indicating that the workbench was terminated with
-     * a call to <code>IWorkbench.restart</code>.
-     * 
-     * @see #createAndRunWorkbench
-     * @see IWorkbench#restart
-     * @since 3.0
-     */
-    public static final int RETURN_RESTART = 1;
-
-    /**
-     * Return code (value 2) indicating that the workbench failed to start.
-     * 
-     * @see #createAndRunWorkbench
-     * @see IWorkbench#restart
-     * @since 3.0
-     */
-    public static final int RETURN_UNSTARTABLE = 2;
-
-    /**
-     * Return code (value 3) indicating that the workbench was terminated with
-     * a call to IWorkbenchConfigurer#emergencyClose.
-     * 
-     * @see #createAndRunWorkbench
-     * @since 3.0
-     */
-    public static final int RETURN_EMERGENCY_CLOSE = 3;
-
-    /**
-     * Block instantiation.
-     */
-    private PlatformUI() {
-        // do nothing
-    }
-
-    /**
-     * Returns the workbench. Fails if the workbench has not been created yet.
-     * 
-     * @return the workbench
-     */
-    public static IWorkbench getWorkbench() {
-        if (Workbench.getInstance() == null) {
-            // app forgot to call createAndRunWorkbench beforehand
-            throw new IllegalStateException(WorkbenchMessages.PlatformUI_NoWorkbench); 
-        }
-        return Workbench.getInstance();
-    }
-
-    /**
-	 * Returns whether {@link #createAndRunWorkbench createAndRunWorkbench} has
-	 * been called to create the workbench, and the workbench has yet to
-	 * terminate.
-	 * <p>
-	 * Note that this method may return <code>true</code> while the workbench
-	 * is still being initialized, so it may not be safe to call workbench API
-	 * methods even if this method returns true. See bug 49316 for details.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the workbench has been created and is
-	 *         still running, and <code>false</code> if the workbench has not
-	 *         yet been created or has completed
-	 * @since 3.0
-	 */
-    public static boolean isWorkbenchRunning() {
-        return Workbench.getInstance() != null
-                && Workbench.getInstance().isRunning();
-    }
-
-    /**
-     * Creates the workbench and associates it with the given display and workbench
-     * advisor, and runs the workbench UI. This entails processing and dispatching
-     * events until the workbench is closed or restarted.
-     * <p>
-     * This method is intended to be called by the main class (the "application").
-     * Fails if the workbench UI has already been created.
-     * </p>
-     * <p>
-     * Use {@link #createDisplay createDisplay} to create the display to pass in.
-     * </p>
-     * <p>
-     * Note that this method is intended to be called by the application
-     * (<code>org.eclipse.core.boot.IPlatformRunnable</code>). It must be
-     * called exactly once, and early on before anyone else asks
-     * <code>getWorkbench()</code> for the workbench.
-     * </p>
-     * 
-     * @param display the display to be used for all UI interactions with the workbench
-     * @param advisor the application-specific advisor that configures and
-     * specializes the workbench
-     * @return return code {@link #RETURN_OK RETURN_OK} for normal exit; 
-     * {@link #RETURN_RESTART RETURN_RESTART} if the workbench was terminated
-     * with a call to {@link IWorkbench#restart IWorkbench.restart}; 
-     * {@link #RETURN_UNSTARTABLE RETURN_UNSTARTABLE} if the workbench could
-     * not be started; 
-     * {@link #RETURN_EMERGENCY_CLOSE RETURN_EMERGENCY_CLOSE} if the UI quit
-     * because of an emergency; other values reserved for future use
-     * @since 3.0
-     */
-    public static int createAndRunWorkbench(Display display,
-            WorkbenchAdvisor advisor) {
-        return Workbench.createAndRunWorkbench(display, advisor);
-    }
-
-    /**
-     * Creates the <code>Display</code> to be used by the workbench.
-     * It is the caller's responsibility to dispose the resulting <code>Display</code>, 
-     * not the workbench's.
-     * 
-     * @return the display
-     * @since 3.0
-     */
-    public static Display createDisplay() {
-        return Workbench.createDisplay();
-    }
-
-    /**
-     * Returns the testable object facade, for use by the test harness.
-     * <p>
-     * IMPORTANT: This method is only for use by the test harness.
-     * Applications and regular plug-ins should not call this method.
-     * </p> 
-     * 
-     * @return the testable object facade
-     * @since 3.0
-     */
-    public static TestableObject getTestableObject() {
-        return Workbench.getWorkbenchTestable();
-    }
-
-    /**
-     * Returns the preference store used for publicly settable workbench preferences.
-     * Constants for these preferences are defined on 
-     * {@link org.eclipse.ui.IWorkbenchPreferenceConstants}.
-     * 
-     * @return the workbench public preference store
-     * @since 3.0
-     */
-    public static IPreferenceStore getPreferenceStore() {
-        return PrefUtil.getAPIPreferenceStore();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/Saveable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/Saveable.java
deleted file mode 100644
index 878648e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/Saveable.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-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.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.InternalSaveable;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.progress.IJobRunnable;
-
-/**
- * A <code>Saveable</code> represents a unit of saveability, e.g. an editable
- * subset of the underlying domain model that may contain unsaved changes.
- * Different workbench parts (editors and views) may present the same saveables
- * in different ways. This interface allows the workbench to provide more
- * appropriate handling of operations such as saving and closing workbench
- * parts. For example, if two editors sharing the same saveable with unsaved
- * changes are closed simultaneously, the user is only prompted to save the
- * changes once for the shared saveable, rather than once for each editor.
- * <p>
- * Workbench parts that work in terms of saveables should implement
- * {@link ISaveablesSource}.
- * </p>
- * 
- * @see ISaveablesSource
- * @since 3.2
- */
-public abstract class Saveable extends InternalSaveable implements IAdaptable {
-
-	private Cursor waitCursor;
-	private Cursor originalCursor;
-
-	/**
-	 * Attempts to show this saveable in the given page and returns
-	 * <code>true</code> on success. The default implementation does nothing
-	 * and returns <code>false</code>.
-	 * 
-	 * @param page
-	 *            the workbench page in which to show this saveable
-	 * @return <code>true</code> if this saveable is now visible to the user
-	 * @since 3.3
-	 */
-	public boolean show(IWorkbenchPage page) {
-		if (page == null) {
-			// I wish it was easier to avoid warnings about unused parameters
-		}
-		return false;
-	}
-
-	/**
-	 * Returns the name of this saveable for display purposes.
-	 * 
-	 * @return the model's name; never <code>null</code>.
-	 */
-	public abstract String getName();
-
-	/**
-	 * Returns the tool tip text for this saveable. This text is used to
-	 * differentiate between two inputs with the same name. For instance,
-	 * MyClass.java in folder X and MyClass.java in folder Y. The format of the
-	 * text varies between input types.
-	 * 
-	 * @return the tool tip text; never <code>null</code>
-	 */
-	public abstract String getToolTipText();
-
-	/**
-	 * Returns the image descriptor for this saveable.
-	 * 
-	 * @return the image descriptor for this model; may be <code>null</code>
-	 *         if there is no image
-	 */
-	public abstract ImageDescriptor getImageDescriptor();
-
-	/**
-	 * Saves the contents of this saveable.
-	 * <p>
-	 * If the save is cancelled through user action, or for any other reason,
-	 * the part should invoke <code>setCancelled</code> on the
-	 * <code>IProgressMonitor</code> to inform the caller.
-	 * </p>
-	 * <p>
-	 * This method is long-running; progress and cancellation are provided by
-	 * the given progress monitor.
-	 * </p>
-	 * 
-	 * @param monitor
-	 *            the progress monitor
-	 * @throws CoreException
-	 *             if the save fails; it is the caller's responsibility to
-	 *             report the failure to the user
-	 */
-	public abstract void doSave(IProgressMonitor monitor) throws CoreException;
-
-	/**
-	 * Returns whether the contents of this saveable have changed since the last
-	 * save operation.
-	 * <p>
-	 * <b>Note:</b> this method is called frequently, for example by actions to
-	 * determine their enabled status.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the contents have been modified and need
-	 *         saving, and <code>false</code> if they have not changed since
-	 *         the last save
-	 */
-	public abstract boolean isDirty();
-
-	/**
-	 * Clients must implement equals and hashCode as defined in
-	 * {@link Object#equals(Object)} and {@link Object#hashCode()}. Two
-	 * saveables should be equal if their dirty state is shared, and saving one
-	 * will save the other. If two saveables are equal, their names, tooltips,
-	 * and images should be the same because only one of them will be shown when
-	 * prompting the user to save.
-	 * 
-	 * @param object
-	 * @return true if this Saveable is equal to the given object
-	 */
-	public abstract boolean equals(Object object);
-
-	/**
-	 * Clients must implement equals and hashCode as defined in
-	 * {@link Object#equals(Object)} and {@link Object#hashCode()}. Two
-	 * saveables should be equal if their dirty state is shared, and saving one
-	 * will save the other. If two saveables are equal, their hash codes MUST be
-	 * the same, and their names, tooltips, and images should be the same
-	 * because only one of them will be shown when prompting the user to save.
-	 * <p>
-	 * IMPORTANT: Implementers should ensure that the hashCode returned is
-	 * sufficiently unique so as not to collide with hashCodes returned by other
-	 * implementations. It is suggested that the defining plug-in's ID be used
-	 * as part of the returned hashCode, as in the following example:
-	 * </p>
-	 * 
-	 * <pre>
-	 *     int PRIME = 31;
-	 *     int hash = ...; // compute the &quot;normal&quot; hash code, e.g. based on some identifier unique within the defining plug-in
-	 *     return hash * PRIME + MY_PLUGIN_ID.hashCode();
-	 * </pre>
-	 * 
-	 * @return a hash code
-	 */
-	public abstract int hashCode();
-
-	/**
-	 * Saves this saveable, or prepares this saveable for a background save
-	 * operation. Returns null if this saveable has been successfully saved, or
-	 * a job runnable that needs to be run to complete the save in the
-	 * background. This method is called in the UI thread. If this saveable
-	 * supports saving in the background, it should do only minimal work.
-	 * However, since the job runnable returned by this method (if any) will not
-	 * run on the UI thread, this method should copy any state that can only be
-	 * accessed from the UI thread so that the job runnable will be able to
-	 * access it.
-	 * <p>
-	 * The supplied shell provider can be used from within this method and from
-	 * within the job runnable for the purpose of parenting dialogs. Care should
-	 * be taken not to open dialogs gratuitously and only if user input is
-	 * required for cases where the save cannot otherwise proceed - note that in
-	 * any given save operation, many saveable objects may be saved at the same
-	 * time. In particular, errors should be signaled by throwing an exception,
-	 * or if an error occurs while running the job runnable, an error status
-	 * should be returned.
-	 * </p>
-	 * <p>
-	 * If the foreground part of the save is cancelled through user action, or
-	 * for any other reason, the part should invoke <code>setCancelled</code>
-	 * on the <code>IProgressMonitor</code> to inform the caller. If the
-	 * background part of the save is cancelled, the job should return a
-	 * {@link IStatus#CANCEL} status.
-	 * </p>
-	 * <p>
-	 * This method is long-running; progress and cancellation are provided by
-	 * the given progress monitor.
-	 * </p>
-	 * <p>
-	 * The default implementation of this method calls
-	 * {@link #doSave(IProgressMonitor)} and returns <code>null</code>.
-	 * </p>
-	 * 
-	 * @param monitor
-	 *            a progress monitor used for reporting progress and
-	 *            cancellation
-	 * @param shellProvider
-	 *            an object that can provide a shell for parenting dialogs
-	 * @return <code>null</code> if this saveable has been saved successfully,
-	 *         or a job runnable that needs to be run to complete the save in
-	 *         the background.
-	 * 
-	 * @since 3.3
-	 */
-	public IJobRunnable doSave(IProgressMonitor monitor,
-			IShellProvider shellProvider) throws CoreException {
-		doSave(monitor);
-		return null;
-	}
-
-	/**
-	 * Disables the UI of the given parts containing this saveable if necessary.
-	 * This method is not intended to be called by clients. A corresponding call
-	 * to
-	 * <p>
-	 * Saveables that can be saved in the background should ensure that the user
-	 * cannot make changes to their data from the UI, for example by disabling
-	 * controls, unless they are prepared to handle this case. This method is
-	 * called on the UI thread after a job runnable has been returned from
-	 * {@link #doSave(IProgressMonitor, IShellProvider)} and before
-	 * spinning the event loop. The <code>closing</code> flag indicates that
-	 * this saveable is currently being saved in response to closing a workbench
-	 * part, in which case further changes to this saveable through the UI must
-	 * be prevented.
-	 * </p>
-	 * <p>
-	 * The default implementation calls setEnabled(false) on the given parts'
-	 * composites.
-	 * </p>
-	 * 
-	 * @param parts
-	 *            the workbench parts containing this saveable
-	 * @param closing
-	 *            a boolean flag indicating whether the save was triggered by a
-	 *            request to close a workbench part, and all of the given parts
-	 *            will be closed after the save operation finishes successfully.
-	 * 
-	 * @since 3.3
-	 */
-	public void disableUI(IWorkbenchPart[] parts, boolean closing) {
-		for (int i = 0; i < parts.length; i++) {
-			IWorkbenchPart workbenchPart = parts[i];
-			Composite paneComposite = (Composite) ((PartSite) workbenchPart
-					.getSite()).getPane().getControl();
-			Control[] paneChildren = paneComposite.getChildren();
-			Composite toDisable = ((Composite) paneChildren[0]);
-			toDisable.setEnabled(false);
-			if (waitCursor == null) {
-				waitCursor = new Cursor(workbenchPart.getSite().getWorkbenchWindow().getShell().getDisplay(), SWT.CURSOR_WAIT);
-			}
-			originalCursor = paneComposite.getCursor();
-			paneComposite.setCursor(waitCursor);
-		}
-	}
-
-	/**
-	 * Enables the UI of the given parts containing this saveable after a
-	 * background save operation has finished. This method is not intended to be
-	 * called by clients.
-	 * <p>
-	 * The default implementation calls setEnabled(true) on the given parts'
-	 * composites.
-	 * </p>
-	 * 
-	 * @param parts
-	 *            the workbench parts containing this saveable
-	 * 
-	 * @since 3.3
-	 */
-	public void enableUI(IWorkbenchPart[] parts) {
-		for (int i = 0; i < parts.length; i++) {
-			IWorkbenchPart workbenchPart = parts[i];
-			Composite paneComposite = (Composite) ((PartSite) workbenchPart
-					.getSite()).getPane().getControl();
-			Control[] paneChildren = paneComposite.getChildren();
-			Composite toEnable = ((Composite) paneChildren[0]);
-			paneComposite.setCursor(originalCursor);
-			if (waitCursor!=null && !waitCursor.isDisposed()) {
-				waitCursor.dispose();
-				waitCursor = null;
-			}
-			toEnable.setEnabled(true);
-		}
-	}
-
-	/**
-	 * This implementation of {@link IAdaptable#getAdapter(Class)} returns
-	 * <code>null</code>. Subclasses may override. This allows two unrelated
-	 * subclasses of Saveable to implement {@link #equals(Object)} and
-	 * {@link #hashCode()} based on an underlying implementation class that is
-	 * shared by both Saveable subclasses.
-	 * 
-	 * @since 3.3
-	 */
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SaveablesLifecycleEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SaveablesLifecycleEvent.java
deleted file mode 100644
index 3ff51d8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SaveablesLifecycleEvent.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.util.EventObject;
-
-
-/**
- * Event object describing a change to a set of Saveable objects.
- * 
- * @since 3.2
- */
-public class SaveablesLifecycleEvent extends EventObject {
-
-	/**
-	 * Serial version UID for this class.
-	 * <p>
-	 * Note: This class is not intended to be serialized.
-	 * </p>
-	 */
-	private static final long serialVersionUID = -3530773637989046452L;
-
-	/**
-	 * Event type constant specifying that the given saveables have been opened.
-	 */
-	public static final int POST_OPEN = 1;
-
-	/**
-	 * Event type constant specifying that the given saveables are about to be
-	 * closed. Listeners may veto the closing if isForce() is false.
-	 */
-	public static final int PRE_CLOSE = 2;
-
-	/**
-	 * Event type constant specifying that the given saveables have been closed.
-	 */
-	public static final int POST_CLOSE = 3;
-
-	/**
-	 * Event type constant specifying that the dirty state of the given saveables
-	 * has changed.
-	 */
-	public static final int DIRTY_CHANGED = 4;
-
-	private int eventType;
-
-	private Saveable[] saveables;
-
-	private boolean force;
-
-	private boolean veto = false;
-
-	/**
-	 * Creates a new SaveablesLifecycleEvent.
-	 * 
-	 * @param source
-	 *            The source of the event. If an ISaveablesSource notifies
-	 *            about changes to the saveables returned by
-	 *            {@link ISaveablesSource#getSaveables()}, the source must be
-	 *            the ISaveablesSource object.
-	 * @param eventType
-	 *            the event type, currently one of POST_OPEN, PRE_CLOSE,
-	 *            POST_CLOSE, DIRTY_CHANGED
-	 * @param saveables
-	 *            The affected saveables
-	 * @param force
-	 *            true if the event type is PRE_CLOSE and this is a closed force
-	 *            that cannot be canceled.
-	 */
-	public SaveablesLifecycleEvent(Object source, int eventType,
-			Saveable[] saveables, boolean force) {
-		super(source);
-		this.eventType = eventType;
-		this.saveables = saveables;
-		this.force = force;
-	}
-
-	/**
-	 * Returns the eventType, currently one of POST_OPEN, PRE_CLOSE, POST_CLOSE,
-	 * DIRTY_CHANGED. Listeners should silently ignore unknown event types since
-	 * new event types might be added in the future.
-	 * 
-	 * @return the eventType
-	 */
-	public int getEventType() {
-		return eventType;
-	}
-
-	/**
-	 * Returns the affected saveables.
-	 * 
-	 * @return the saveables
-	 */
-	public Saveable[] getSaveables() {
-		return saveables;
-	}
-
-	/**
-	 * Returns the veto. This value is ignored for POST_OPEN,POST_CLOSE, and
-	 * DIRTY_CHANGED.
-	 * 
-	 * @return Returns the veto.
-	 */
-	public boolean isVeto() {
-		return veto;
-	}
-
-	/**
-	 * @param veto
-	 *            The veto to set.
-	 */
-	public void setVeto(boolean veto) {
-		this.veto = veto;
-	}
-
-	/**
-	 * Sets the force flag. This value is ignored for POST_OPEN, POST_CLOSE, and
-	 * DIRTY_CHANGED.
-	 * 
-	 * @return Returns the force.
-	 */
-	public boolean isForce() {
-		return force;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
deleted file mode 100644
index 36e9def..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SelectionEnabler.java
+++ /dev/null
@@ -1,520 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.actions.SimpleWildcardTester;
-import org.eclipse.ui.internal.ActionExpression;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.osgi.framework.Bundle;
-
-/**
- * Determines the enablement status given a selection. This calculation is done
- * based on the definition of the <code>enablesFor</code> attribute,
- * <code>enablement</code> element, and the <code>selection</code> element
- * found in the <code>IConfigurationElement</code> provided.
- * <p>
- * This class can be instantiated by clients. It is not intended to be extended.
- * </p>
- * 
- * @since 3.0
- * 
- * Note: The dependency on org.eclipse.jface.text for ITextSelection must be
- * severed It may be possible to do with IActionFilter generic workbench
- * registers IActionFilter for "size" property against IStructuredSelection
- * workbench text registers IActionFilter for "size" property against
- * ITextSelection code here: sel.getAdapter(IActionFilter.class) As an interim
- * solution, use reflection to access selections implementing ITextSelection
- */
-public final class SelectionEnabler {
-
-	/* package */static class SelectionClass {
-		public String className;
-
-		public String nameFilter;
-
-		public boolean recursive;
-	}
-
-	public static final int ANY_NUMBER = -2;
-
-	/**
-	 * The constant integer hash code value meaning the hash code has not yet
-	 * been computed.
-	 */
-	private static final int HASH_CODE_NOT_COMPUTED = -1;
-
-	/**
-	 * A factor for computing the hash code for all schemes.
-	 */
-	private static final int HASH_FACTOR = 89;
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = SelectionEnabler.class.getName()
-			.hashCode();
-
-	/**
-	 * Cached value of <code>org.eclipse.jface.text.ITextSelection.class</code>;
-	 * <code>null</code> if not initialized or not present.
-	 */
-	private static Class iTextSelectionClass = null;
-
-	/**
-	 * Hard-wired id of the JFace text plug-in (not on pre-req chain).
-	 */
-	private static final String JFACE_TEXT_PLUG_IN = "org.eclipse.jface.text"; //$NON-NLS-1$
-
-	public static final int MULTIPLE = -5;
-
-	public static final int NONE = -4;
-
-	public static final int NONE_OR_ONE = -3;
-
-	public static final int ONE_OR_MORE = -1;
-
-	/**
-	 * Hard-wired fully qualified name of the text selection class (not on
-	 * pre-req chain).
-	 */
-	private static final String TEXT_SELECTION_CLASS = "org.eclipse.jface.text.ITextSelection"; //$NON-NLS-1$
-
-	/**
-	 * Indicates whether the JFace text plug-in is even around. Without the
-	 * JFace text plug-in, text selections are moot.
-	 */
-	private static boolean textSelectionPossible = true;
-
-	public static final int UNKNOWN = 0;
-
-	/**
-	 * Returns <code>ITextSelection.class</code> or <code>null</code> if the
-	 * class is not available.
-	 * 
-	 * @return <code>ITextSelection.class</code> or <code>null</code> if
-	 *         class not available
-	 * @since 3.0
-	 */
-	private static Class getTextSelectionClass() {
-		if (iTextSelectionClass != null) {
-			// tried before and succeeded
-			return iTextSelectionClass;
-		}
-		if (!textSelectionPossible) {
-			// tried before and failed
-			return null;
-		}
-
-		// JFace text plug-in is not on prereq chain of generic wb plug-in
-		// hence: ITextSelection.class won't compile
-		// and Class.forName("org.eclipse.jface.text.ITextSelection") won't find
-		// it need to be trickier...
-		Bundle bundle = Platform.getBundle(JFACE_TEXT_PLUG_IN);
-		if (bundle == null || bundle.getState() == Bundle.UNINSTALLED) {
-			// JFace text plug-in is not around, or has already
-			// been removed, assume that it will never be around
-			textSelectionPossible = false;
-			return null;
-		}
-
-		// plug-in is around
-		// it's not our job to activate the plug-in
-		if (bundle.getState() == Bundle.INSTALLED) {
-			// assume it might come alive later
-			textSelectionPossible = true;
-			return null;
-		}
-
-		try {
-			Class c = bundle.loadClass(TEXT_SELECTION_CLASS);
-			// remember for next time
-			iTextSelectionClass = c;
-			return iTextSelectionClass;
-		} catch (ClassNotFoundException e) {
-			// unable to load ITextSelection - sounds pretty serious
-			// treat as if JFace text plug-in were unavailable
-			textSelectionPossible = false;
-			return null;
-		}
-	}
-
-	/**
-	 * Verifies that the given name matches the given wildcard filter. Returns
-	 * true if it does.
-	 * 
-	 * @param name
-	 * @param filter
-	 * @return <code>true</code> if there is a match
-	 */
-	public static boolean verifyNameMatch(String name, String filter) {
-		return SimpleWildcardTester.testWildcardIgnoreCase(filter, name);
-	}
-
-	private List classes = new ArrayList();
-
-	private ActionExpression enablementExpression;
-
-	/**
-	 * The hash code for this object. This value is computed lazily, and marked
-	 * as invalid when one of the values on which it is based changes.
-	 */
-	private transient int hashCode = HASH_CODE_NOT_COMPUTED;
-
-	private int mode = UNKNOWN;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param configElement
-	 */
-	public SelectionEnabler(IConfigurationElement configElement) {
-		super();
-		if (configElement == null) {
-			throw new IllegalArgumentException();
-		}
-		parseClasses(configElement);
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof SelectionEnabler) {
-			final SelectionEnabler that = (SelectionEnabler) object;
-			return Util.equals(this.classes, that.classes)
-					&& Util.equals(this.enablementExpression,
-							that.enablementExpression)
-					&& Util.equals(this.mode, that.mode);
-		}
-
-		return false;
-	}
-
-	/**
-	 * Computes the hash code for this object based on the id.
-	 * 
-	 * @return The hash code for this object.
-	 */
-	public final int hashCode() {
-		if (hashCode == HASH_CODE_NOT_COMPUTED) {
-			hashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(classes);
-			hashCode = hashCode * HASH_FACTOR
-					+ Util.hashCode(enablementExpression);
-			hashCode = hashCode * HASH_FACTOR + Util.hashCode(mode);
-			if (hashCode == HASH_CODE_NOT_COMPUTED) {
-				hashCode++;
-			}
-		}
-		return hashCode;
-	}
-
-	/**
-	 * Returns true if given structured selection matches the conditions
-	 * specified in the registry for this action.
-	 */
-	private boolean isEnabledFor(ISelection sel) {
-		Object obj = sel;
-		int count = sel.isEmpty() ? 0 : 1;
-
-		if (verifySelectionCount(count) == false) {
-			return false;
-		}
-
-		// Compare selection to enablement expression.
-		if (enablementExpression != null) {
-			return enablementExpression.isEnabledFor(obj);
-		}
-
-		// Compare selection to class requirements.
-		if (classes.isEmpty()) {
-			return true;
-		}
-		if (obj instanceof IAdaptable) {
-			IAdaptable element = (IAdaptable) obj;
-			if (verifyElement(element) == false) {
-				return false;
-			}
-		} else {
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * Returns true if given text selection matches the conditions specified in
-	 * the registry for this action.
-	 */
-	private boolean isEnabledFor(ISelection sel, int count) {
-		if (verifySelectionCount(count) == false) {
-			return false;
-		}
-
-		// Compare selection to enablement expression.
-		if (enablementExpression != null) {
-			return enablementExpression.isEnabledFor(sel);
-		}
-
-		// Compare selection to class requirements.
-		if (classes.isEmpty()) {
-			return true;
-		}
-		for (int i = 0; i < classes.size(); i++) {
-			SelectionClass sc = (SelectionClass) classes.get(i);
-			if (verifyClass(sel, sc.className)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns true if given structured selection matches the conditions
-	 * specified in the registry for this action.
-	 */
-	private boolean isEnabledFor(IStructuredSelection ssel) {
-		int count = ssel.size();
-
-		if (verifySelectionCount(count) == false) {
-			return false;
-		}
-
-		// Compare selection to enablement expression.
-		if (enablementExpression != null) {
-			return enablementExpression.isEnabledFor(ssel);
-		}
-
-		// Compare selection to class requirements.
-		if (classes.isEmpty()) {
-			return true;
-		}
-		for (Iterator elements = ssel.iterator(); elements.hasNext();) {
-			Object obj = elements.next();
-			if (obj instanceof IAdaptable) {
-				IAdaptable element = (IAdaptable) obj;
-				if (verifyElement(element) == false) {
-					return false;
-				}
-			} else {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Check if the receiver is enabled for the given selection.
-	 * 
-	 * @param selection
-	 * @return <code>true</code> if the given selection matches the conditions
-	 *         specified in <code>IConfirgurationElement</code>.
-	 */
-	public boolean isEnabledForSelection(ISelection selection) {
-		// Optimize it.
-		if (mode == UNKNOWN) {
-			return false;
-		}
-
-		// Handle undefined selections.
-		if (selection == null) {
-			selection = StructuredSelection.EMPTY;
-		}
-
-		// According to the dictionary, a selection is "one that
-		// is selected", or "a collection of selected things".
-		// In reflection of this, we deal with one or a collection.
-
-		// special case: structured selections
-		if (selection instanceof IStructuredSelection) {
-			return isEnabledFor((IStructuredSelection) selection);
-		}
-
-		// special case: text selections
-		// Code should read
-		// if (selection instanceof ITextSelection) {
-		// int count = ((ITextSelection) selection).getLength();
-		// return isEnabledFor(selection, count);
-		// }
-		// use Java reflection to avoid dependence of org.eclipse.jface.text
-		// which is in an optional part of the generic workbench
-		Class tselClass = getTextSelectionClass();
-		if (tselClass != null && tselClass.isInstance(selection)) {
-			try {
-				Method m = tselClass.getDeclaredMethod(
-						"getLength", new Class[0]); //$NON-NLS-1$
-				Object r = m.invoke(selection, new Object[0]);
-				if (r instanceof Integer) {
-					return isEnabledFor(selection, ((Integer) r).intValue());
-				}
-				// should not happen - but enable if it does
-				return true;
-			} catch (NoSuchMethodException e) {
-				// should not happen - fall through if it does
-			} catch (IllegalAccessException e) {
-				// should not happen - fall through if it does
-			} catch (InvocationTargetException e) {
-				// should not happen - fall through if it does
-			}
-		}
-
-		// all other cases
-		return isEnabledFor(selection);
-	}
-
-	/**
-	 * Parses registry element to extract mode and selection elements that will
-	 * be used for verification.
-	 */
-	private void parseClasses(IConfigurationElement config) {
-		// Get enables for.
-		String enablesFor = config
-				.getAttribute(IWorkbenchRegistryConstants.ATT_ENABLES_FOR);
-		if (enablesFor == null) {
-			enablesFor = "*"; //$NON-NLS-1$
-		}
-		if (enablesFor.equals("*")) { //$NON-NLS-1$
-			mode = ANY_NUMBER;
-		} else if (enablesFor.equals("?")) { //$NON-NLS-1$
-			mode = NONE_OR_ONE;
-		} else if (enablesFor.equals("!")) { //$NON-NLS-1$
-			mode = NONE;
-		} else if (enablesFor.equals("+")) { //$NON-NLS-1$
-			mode = ONE_OR_MORE;
-		} else if (enablesFor.equals("multiple") //$NON-NLS-1$
-				|| enablesFor.equals("2+")) { //$NON-NLS-1$
-			mode = MULTIPLE;
-		} else {
-			try {
-				mode = Integer.parseInt(enablesFor);
-			} catch (NumberFormatException e) {
-				mode = UNKNOWN;
-			}
-		}
-
-		// Get enablement block.
-		IConfigurationElement[] children = config
-				.getChildren(IWorkbenchRegistryConstants.TAG_ENABLEMENT);
-		if (children.length > 0) {
-			enablementExpression = new ActionExpression(children[0]);
-			return;
-		}
-
-		// Get selection block.
-		children = config
-				.getChildren(IWorkbenchRegistryConstants.TAG_SELECTION);
-		if (children.length > 0) {
-			classes = new ArrayList();
-			for (int i = 0; i < children.length; i++) {
-				IConfigurationElement sel = children[i];
-				String cname = sel
-						.getAttribute(IWorkbenchRegistryConstants.ATT_CLASS);
-				String name = sel
-						.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-				SelectionClass sclass = new SelectionClass();
-				sclass.className = cname;
-				sclass.nameFilter = name;
-				classes.add(sclass);
-			}
-		}
-	}
-
-	/**
-	 * Verifies if the element is an instance of a class with a given class
-	 * name. If direct match fails, implementing interfaces will be tested, then
-	 * recursively all superclasses and their interfaces.
-	 */
-	private boolean verifyClass(Object element, String className) {
-		Class eclass = element.getClass();
-		Class clazz = eclass;
-		boolean match = false;
-		while (clazz != null) {
-			// test the class itself
-			if (clazz.getName().equals(className)) {
-				match = true;
-				break;
-			}
-			// test all the interfaces it implements
-			Class[] interfaces = clazz.getInterfaces();
-			for (int i = 0; i < interfaces.length; i++) {
-				if (interfaces[i].getName().equals(className)) {
-					match = true;
-					break;
-				}
-			}
-			if (match == true) {
-				break;
-			}
-			// get the superclass
-			clazz = clazz.getSuperclass();
-		}
-		return match;
-	}
-
-	/**
-	 * Verifies if the given element matches one of the selection requirements.
-	 * Element must at least pass the type test, and optionally wildcard name
-	 * match.
-	 */
-	private boolean verifyElement(IAdaptable element) {
-		if (classes.isEmpty()) {
-			return true;
-		}
-		for (int i = 0; i < classes.size(); i++) {
-			SelectionClass sc = (SelectionClass) classes.get(i);
-			if (verifyClass(element, sc.className) == false) {
-				continue;
-			}
-			if (sc.nameFilter == null) {
-				return true;
-			}
-			IWorkbenchAdapter de = (IWorkbenchAdapter) Util.getAdapter(element, IWorkbenchAdapter.class);
-			if ((de != null)
-					&& verifyNameMatch(de.getLabel(element), sc.nameFilter)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Compare selection count with requirements.
-	 */
-	private boolean verifySelectionCount(int count) {
-		if (count > 0 && mode == NONE) {
-			return false;
-		}
-		if (count == 0 && mode == ONE_OR_MORE) {
-			return false;
-		}
-		if (count > 1 && mode == NONE_OR_ONE) {
-			return false;
-		}
-		if (count < 2 && mode == MULTIPLE) {
-			return false;
-		}
-		if (mode > 0 && count != mode) {
-			return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars.java
deleted file mode 100644
index f5cc62e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars.java
+++ /dev/null
@@ -1,613 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.SubMenuManager;
-import org.eclipse.jface.action.SubStatusLineManager;
-import org.eclipse.jface.action.SubToolBarManager;
-import org.eclipse.jface.commands.ActionHandler;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.EditorActionBars;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.actions.CommandAction;
-import org.eclipse.ui.internal.handlers.CommandLegacyActionWrapper;
-import org.eclipse.ui.internal.handlers.IActionCommandMappingService;
-import org.eclipse.ui.internal.services.SourcePriorityNameMapping;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Generic implementation of the <code>IActionBars</code> interface.
- */
-public class SubActionBars extends EventManager implements IActionBars {
-
-	/**
-	 * The expression to use when contributing handlers through
-	 * {@link #setGlobalActionHandler(String, IAction)}}. This ensures that
-	 * handlers contributed through {@link SubActionBars} are given priority
-	 * over handlers contributed to the {@link IHandlerService}.
-	 */
-	private static final Expression EXPRESSION = new Expression() {
-		public final EvaluationResult evaluate(final IEvaluationContext context) {
-			return EvaluationResult.TRUE;
-		}
-
-		public final void collectExpressionInfo(final ExpressionInfo info) {
-			info
-					.addVariableNameAccess(SourcePriorityNameMapping.LEGACY_LEGACY_NAME);
-		}
-	};
-
-	/**
-	 * Property constant for changes to action handlers.
-	 */
-	public static final String P_ACTION_HANDLERS = "org.eclipse.ui.internal.actionHandlers"; //$NON-NLS-1$
-
-	private Map actionHandlers;
-
-	private boolean actionHandlersChanged;
-
-	/**
-	 * A map of handler activations ({@link IHandlerActivation} indexed by
-	 * action id ({@link String}) indexed by service locator ({@link IServiceLocator}).
-	 * This value is <code>null</code> if there are no activations.
-	 */
-	private Map activationsByActionIdByServiceLocator;
-
-	private boolean active = false;
-
-	private SubMenuManager menuMgr;
-
-	private IActionBars parent;
-
-	/**
-	 * A service locator appropriate for this action bar. This value is never
-	 * <code>null</code>. It must be capable of providing a
-	 * {@link IHandlerService}.
-	 */
-	private IServiceLocator serviceLocator;
-
-	private SubStatusLineManager statusLineMgr;
-
-	private SubToolBarManager toolBarMgr;
-
-	private Map actionIdByCommandId = new HashMap();
-
-	/**
-	 * Construct a new <code>SubActionBars</code> object. The service locator
-	 * will simply be the service locator of the parent.
-	 * 
-	 * @param parent
-	 *            The parent of this action bar; must not be <code>null</code>.
-	 */
-	public SubActionBars(final IActionBars parent) {
-		this(parent, null);
-	}
-
-	/**
-	 * Constructs a new instance of <code>SubActionBars</code>.
-	 * 
-	 * @param parent
-	 *            The parent of this action bar; must not be <code>null</code>.
-	 * @param serviceLocator
-	 *            The service locator for this action bar; should not be
-	 *            <code>null</code>.
-	 *            
-	 * @since 3.2
-	 */
-	public SubActionBars(final IActionBars parent,
-			final IServiceLocator serviceLocator) {
-		if (parent == null) {
-			throw new NullPointerException("The parent cannot be null"); //$NON-NLS-1$
-		}
-
-		this.parent = parent;
-		this.serviceLocator = serviceLocator;
-	}
-
-	/**
-	 * Activate the contributions.
-	 */
-	public void activate() {
-		activate(true);
-	}
-
-	/**
-	 * Activate the contributions.
-	 * <p>
-	 * Workaround for toolbar layout flashing when editors contribute large
-	 * amounts of items. In this case we want to force the items to be
-	 * visible/hidden only when required, otherwise just change the enablement
-	 * state.
-	 * </p>
-	 */
-	public void activate(boolean forceVisibility) {
-		setActive(true);
-	}
-
-	/**
-	 * Adds a property change listener. Has no effect if an identical listener
-	 * is already registered.
-	 * 
-	 * @param listener
-	 *            a property change listener
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		addListenerObject(listener);
-	}
-
-	/**
-	 * Sets the active flag. Clients should not call this method directly unless
-	 * they are overriding the setActive() method.
-	 */
-	protected final void basicSetActive(boolean active) {
-		this.active = active;
-	}
-
-	/**
-	 * Clear the global action handlers.
-	 */
-	public void clearGlobalActionHandlers() {
-		if (actionHandlers != null) {
-			actionHandlers.clear();
-			actionHandlersChanged = true;
-		}
-
-		if (activationsByActionIdByServiceLocator != null) {
-			// Clean up the activations.
-			final Iterator activationItr = activationsByActionIdByServiceLocator
-					.entrySet().iterator();
-			while (activationItr.hasNext()) {
-				final Map.Entry value = (Map.Entry) activationItr.next();
-				final IServiceLocator locator = (IServiceLocator) value
-						.getKey();
-				final IHandlerService service = (IHandlerService) locator
-						.getService(IHandlerService.class);
-				final Map activationsByActionId = (Map) value.getValue();
-				final Iterator iterator = activationsByActionId.values()
-						.iterator();
-				while (iterator.hasNext()) {
-					final IHandlerActivation activation = (IHandlerActivation) iterator
-							.next();
-					service.deactivateHandler(activation);
-					activation.getHandler().dispose();
-				}
-			}
-			activationsByActionIdByServiceLocator.clear();
-		}
-	}
-
-	/**
-	 * Returns a new sub menu manager.
-	 * 
-	 * @param parent
-	 *            the parent menu manager
-	 * @return the menu manager
-	 */
-	protected SubMenuManager createSubMenuManager(IMenuManager parent) {
-		return new SubMenuManager(parent);
-	}
-
-	/**
-	 * Returns a new sub toolbar manager.
-	 * 
-	 * @param parent
-	 *            the parent toolbar manager
-	 * @return the tool bar manager
-	 */
-	protected SubToolBarManager createSubToolBarManager(IToolBarManager parent) {
-		return new SubToolBarManager(parent);
-	}
-
-	/**
-	 * Deactivate the contributions.
-	 */
-	public void deactivate() {
-		deactivate(true);
-	}
-
-	/**
-	 * Deactivate the contributions.
-	 * <p>
-	 * Workaround for menubar/toolbar layout flashing when editors have many
-	 * contributions. In this case we want to force the contributions to be
-	 * visible/hidden only when required, otherwise just change the enablement
-	 * state.
-	 * </p>
-	 */
-	public void deactivate(boolean forceHide) {
-		setActive(false);
-	}
-
-	/**
-	 * Dispose the contributions.
-	 */
-	public void dispose() {
-		clearGlobalActionHandlers();
-		if (menuMgr != null) {
-			menuMgr.dispose();
-			menuMgr.disposeManager();
-		}
-		if (statusLineMgr != null) {
-			statusLineMgr.disposeManager();
-		}
-		if (toolBarMgr != null) {
-			toolBarMgr.disposeManager();
-		}
-		clearListeners();
-	}
-
-	/**
-	 * Notifies any property change listeners if the global action handlers have
-	 * changed
-	 */
-	protected void fireActionHandlersChanged() {
-		if (actionHandlersChanged) {
-			// Doesn't actually pass the old and new values
-			firePropertyChange(new PropertyChangeEvent(this, P_ACTION_HANDLERS,
-					null, null));
-			actionHandlersChanged = false;
-		}
-	}
-
-	/**
-	 * Notifies any property change listeners that a property has changed. Only
-	 * listeners registered at the time this method is called are notified.
-	 * 
-	 * @param event
-	 *            the property change event
-	 * 
-	 * @see IPropertyChangeListener#propertyChange
-	 */
-	protected void firePropertyChange(PropertyChangeEvent event) {
-		Object[] listeners = getListeners();
-		for (int i = 0; i < listeners.length; ++i) {
-			((IPropertyChangeListener) listeners[i]).propertyChange(event);
-		}
-	}
-
-	/**
-	 * Return whether the manager is currently active or not.
-	 */
-	protected final boolean getActive() {
-		return active;
-	}
-
-	/**
-	 * Get the handler for a window action.
-	 * 
-	 * @param actionID
-	 *            an action ID declared in the registry
-	 * @return an action handler which implements the action ID, or
-	 *         <code>null</code> if none is registered.
-	 */
-	public IAction getGlobalActionHandler(String actionID) {
-		if (actionHandlers == null) {
-			return null;
-		}
-		return (IAction) actionHandlers.get(actionID);
-	}
-
-	/**
-	 * Returns the complete list of active global action handlers. If there are
-	 * no global action handlers registered return null.
-	 */
-	public Map getGlobalActionHandlers() {
-		return actionHandlers;
-	}
-
-	/**
-	 * Returns the abstract menu manager. If items are added or removed from the
-	 * manager be sure to call <code>updateActionBars</code>.
-	 * 
-	 * @return the menu manager
-	 */
-	public IMenuManager getMenuManager() {
-		if (menuMgr == null) {
-			menuMgr = createSubMenuManager(parent.getMenuManager());
-			menuMgr.setVisible(active);
-		}
-		return menuMgr;
-	}
-
-	/**
-	 * Return the parent action bar manager.
-	 */
-	protected final IActionBars getParent() {
-		return parent;
-	}
-
-	/**
-	 * Answer the service locator for this action bar.
-	 * 
-	 * @return an <code>IServiceLocater</code> or the parents if 
-	 *     the receiver does not have one
-	 *     
-	 * @since 3.2
-	 */
-	public final IServiceLocator getServiceLocator() {
-		if (serviceLocator != null) {
-			return serviceLocator;
-		}
-
-		return parent.getServiceLocator();
-	}
-
-	/**
-	 * Returns the status line manager. If items are added or removed from the
-	 * manager be sure to call <code>updateActionBars</code>.
-	 * 
-	 * @return the status line manager
-	 */
-	public IStatusLineManager getStatusLineManager() {
-		if (statusLineMgr == null) {
-			statusLineMgr = new SubStatusLineManager(parent
-					.getStatusLineManager());
-			statusLineMgr.setVisible(active);
-		}
-		return statusLineMgr;
-	}
-
-	/**
-	 * Returns the tool bar manager. If items are added or removed from the
-	 * manager be sure to call <code>updateActionBars</code>.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager getToolBarManager() {
-		if (toolBarMgr == null) {
-			toolBarMgr = createSubToolBarManager(parent.getToolBarManager());
-			toolBarMgr.setVisible(active);
-		}
-		return toolBarMgr;
-	}
-
-	/**
-	 * Return whether the sub menu manager has been created yet.
-	 */
-	protected final boolean isSubMenuManagerCreated() {
-		return menuMgr != null;
-	}
-
-	/**
-	 * Return whether the sub status line manager has been created yet.
-	 */
-	protected final boolean isSubStatusLineManagerCreated() {
-		return statusLineMgr != null;
-	}
-
-	/**
-	 * Return whether the sub toolbar manager has been created yet.
-	 */
-	protected final boolean isSubToolBarManagerCreated() {
-		return toolBarMgr != null;
-	}
-
-	/**
-	 * Notification that the target part for the action bars has changed.
-	 */
-	public void partChanged(IWorkbenchPart part) {
-	}
-
-	/**
-	 * Removes the given property change listener. Has no effect if an identical
-	 * listener is not registered.
-	 * 
-	 * @param listener
-	 *            a property change listener
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		removeListenerObject(listener);
-	}
-
-	/**
-	 * Activate / deactivate the contributions.
-	 */
-	protected void setActive(boolean set) {
-		active = set;
-		if (menuMgr != null) {
-			menuMgr.setVisible(set);
-		}
-
-		if (statusLineMgr != null) {
-			statusLineMgr.setVisible(set);
-		}
-
-		if (toolBarMgr != null) {
-			toolBarMgr.setVisible(set);
-		}
-	}
-
-	/**
-	 * Add a handler for a window action.
-	 * 
-	 * @param actionID
-	 *            an action ID declared in the registry
-	 * @param handler
-	 *            an action which implements the action ID. <code>null</code>
-	 *            may be passed to deregister a handler.
-	 */
-	public void setGlobalActionHandler(String actionID, IAction handler) {
-		if (actionID == null) {
-			/*
-			 * Bug 124061. It used to be invalid to pass null as an action id,
-			 * but some people still did it. Handle this case by trapping the
-			 * exception and logging it.
-			 */
-			WorkbenchPlugin
-					.log("Cannot set the global action handler for a null action id"); //$NON-NLS-1$
-			return;
-		}
-		
-		if (handler instanceof CommandLegacyActionWrapper) {
-        	// this is a registration of a fake action for an already
-			// registered handler
-			WorkbenchPlugin
-					.log("Cannot feed a CommandLegacyActionWrapper back into the system"); //$NON-NLS-1$
-			return;
-		}
-		
-		if (handler instanceof CommandAction) {
-			// we unfortunately had to allow these out into the wild, but they
-			// still must not feed back into the system
-			return;
-		}
-		
-		if (handler != null) {
-			// Update the action handlers.
-			if (actionHandlers == null) {
-				actionHandlers = new HashMap(11);
-			}
-			actionHandlers.put(actionID, handler);
-
-			// Add a mapping from this action id to the command id.
-			if (serviceLocator != null) {
-				String commandId = null;
-				final IActionCommandMappingService mappingService = (IActionCommandMappingService) serviceLocator
-						.getService(IActionCommandMappingService.class);
-				if (mappingService != null) {
-					commandId = mappingService.getCommandId(actionID);
-				}
-				if (commandId == null) {
-					commandId = handler.getActionDefinitionId();
-				}
-
-				// Update the handler activations.
-				final IHandlerService service = (IHandlerService) serviceLocator
-						.getService(IHandlerService.class);
-				Map activationsByActionId = null;
-				if (activationsByActionIdByServiceLocator == null) {
-					activationsByActionIdByServiceLocator = new WeakHashMap();
-					activationsByActionId = new HashMap();
-					activationsByActionIdByServiceLocator.put(serviceLocator,
-							activationsByActionId);
-				} else {
-					activationsByActionId = (Map) activationsByActionIdByServiceLocator
-							.get(serviceLocator);
-					if (activationsByActionId == null) {
-						activationsByActionId = new HashMap();
-						activationsByActionIdByServiceLocator.put(
-								serviceLocator, activationsByActionId);
-					} else if (activationsByActionId.containsKey(actionID)) {
-						final Object value = activationsByActionId
-								.remove(actionID);
-						if (value instanceof IHandlerActivation) {
-							final IHandlerActivation activation = (IHandlerActivation) value;
-							actionIdByCommandId.remove(activation.getCommandId());
-							if (service != null) {
-								service.deactivateHandler(activation);
-							}
-							activation.getHandler().dispose();
-						}
-					} else if (commandId != null
-							&& actionIdByCommandId.containsKey(commandId)) {
-						final Object value = activationsByActionId
-								.remove(actionIdByCommandId.remove(commandId));
-						if (value instanceof IHandlerActivation) {
-							final IHandlerActivation activation = (IHandlerActivation) value;
-							if (service != null) {
-								service.deactivateHandler(activation);
-							}
-							activation.getHandler().dispose();
-						}
-					}
-				}
-
-				if (commandId != null) {
-					actionIdByCommandId.put(commandId, actionID);
-					// Register this as a handler with the given definition id.
-					// the expression gives the setGlobalActionHandler() a
-					// priority.
-					final IHandler actionHandler = new ActionHandler(handler);
-					Expression handlerExpression = EXPRESSION;
-					//XXX add new API in next release to avoid down-casting (bug 137091)
-					if (this instanceof EditorActionBars) {
-						handlerExpression = ((EditorActionBars)this).getHandlerExpression();
-					}
-					if (service != null) {
-						final IHandlerActivation activation = service
-								.activateHandler(commandId, actionHandler,
-										handlerExpression);
-						activationsByActionId.put(actionID, activation);
-					}
-				}
-			}
-
-		} else {
-			if (actionHandlers != null) {
-				actionHandlers.remove(actionID);
-			}
-
-			// Remove the handler activation.
-			if (serviceLocator != null) {
-				final IHandlerService service = (IHandlerService) serviceLocator
-						.getService(IHandlerService.class);
-				if (activationsByActionIdByServiceLocator != null) {
-					final Map activationsByActionId = (Map) activationsByActionIdByServiceLocator
-							.get(serviceLocator);
-					if ((activationsByActionId != null)
-							&& (activationsByActionId.containsKey(actionID))) {
-						final Object value = activationsByActionId
-								.remove(actionID);
-						if (value instanceof IHandlerActivation) {
-							final IHandlerActivation activation = (IHandlerActivation) value;
-							actionIdByCommandId.remove(activation.getCommandId());
-							service.deactivateHandler(activation);
-							activation.getHandler().dispose();
-						}
-					}
-				}
-			}
-		}
-		actionHandlersChanged = true;
-	}
-
-	/**
-	 * Sets the service locator for this action bar.
-	 * 
-	 * @param locator
-	 *            The new locator; must not be <code>null</code>.
-	 *            
-	 * @since 3.2
-	 */
-	protected final void setServiceLocator(final IServiceLocator locator) {
-		if (locator == null) {
-			throw new NullPointerException("The service locator cannot be null"); //$NON-NLS-1$
-		}
-		this.serviceLocator = locator;
-	}
-
-	/**
-	 * Commits all UI changes. This should be called after additions or
-	 * subtractions have been made to a menu, status line, or toolbar.
-	 */
-	public void updateActionBars() {
-		parent.updateActionBars();
-		fireActionHandlersChanged();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars2.java
deleted file mode 100644
index f798869..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/SubActionBars2.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.SubCoolBarManager;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * A implementation of the extended <code>IActionBars2</code> interface. This
- * sub class provides a sub cool bar manager for plugins to contribute multiple
- * cool items.
- * 
- * @since 3.0
- */
-public class SubActionBars2 extends SubActionBars implements IActionBars2 {
-	private SubCoolBarManager coolBarMgr = null;
-
-	/**
-	 * Constucts a sub action bars object using an IActionBars2 parent.
-	 * 
-	 * @param parent
-	 *            the action bars to virtualize; must not be <code>null</code>.
-	 */
-	public SubActionBars2(final IActionBars2 parent) {
-		this(parent, parent.getServiceLocator());
-	}
-
-	/**
-	 * Constucts a sub action bars object using an IActionBars2 parent.
-	 * 
-	 * @param parent
-	 *            the action bars to virtualize; must not be <code>null</code>.
-	 * @param serviceLocator
-	 *            The service locator for this action bar; must not be
-	 *            <code>null</code>.
-	 *            
-	 * @since 3.2
-	 */
-	public SubActionBars2(final IActionBars2 parent,
-			final IServiceLocator serviceLocator) {
-		super(parent, serviceLocator);
-	}
-
-	/**
-	 * Returns the casted parent of the sub action bars. This method can return
-	 * an IActionBars2 since it can only accept IActionBars2 in the constructor.
-	 * 
-	 * @return the casted parent.
-	 */
-	protected IActionBars2 getCastedParent() {
-		return (IActionBars2) getParent();
-	}
-
-	/**
-	 * Returns a new sub coolbar manager.
-	 * 
-	 * @param parent
-	 *            the parent coolbar manager
-	 * @return the cool bar manager
-	 */
-	protected SubCoolBarManager createSubCoolBarManager(ICoolBarManager parent) {
-		return new SubCoolBarManager(parent);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IActionBars2#getCoolBarManager()
-	 */
-	public ICoolBarManager getCoolBarManager() {
-		if (coolBarMgr == null) {
-			coolBarMgr = createSubCoolBarManager(getCastedParent()
-					.getCoolBarManager());
-			coolBarMgr.setVisible(getActive());
-		}
-		return coolBarMgr;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.SubActionBars#setActive(boolean)
-	 */
-	protected void setActive(boolean value) {
-		super.setActive(value);
-		if (coolBarMgr != null) {
-			coolBarMgr.setVisible(value);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.SubActionBars#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		if (coolBarMgr != null) {
-			coolBarMgr.removeAll();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchEncoding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchEncoding.java
deleted file mode 100644
index 6cd8160..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchEncoding.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * WorkbenchEncoding is a utility class for plug-ins that want to use the list
- * of encodings defined by default in the workbench.
- * 
- * @since 3.1
- */
-public class WorkbenchEncoding {
-
-	/**
-	 * The method for java.nio.charset.Charset.isSupported(String), or <code>null</code>
-	 * if not present.  Reflection is used here to allow compilation against JCL Foundation (bug 80053).
-	 */
-	private static Method CharsetIsSupportedMethod = null; 
-	
-	static {
-		try {
-			Class charsetClass = Class.forName("java.nio.charset.Charset"); //$NON-NLS-1$
-			CharsetIsSupportedMethod = charsetClass.getMethod("isSupported", new Class[] { String.class }); //$NON-NLS-1$
-		}
-		catch (Exception e) {
-			// ignore
-		}
-			
-	}
-	
-	private static class EncodingsRegistryReader extends RegistryReader {
-		
-		private List encodings;
-		
-		/**
-		 * Create a new instance of the receiver.
-		 * @param definedEncodings 
-		 */
-		public EncodingsRegistryReader(List definedEncodings) {
-			super();
-			encodings = definedEncodings;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.registry.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-		 */
-		protected boolean readElement(IConfigurationElement element) {
-			String name = element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-			if (name != null) {
-				encodings.add(name);
-			}
-			return true;
-		}
-	}
-
-	/**
-	 * Get the default encoding from the virtual machine.
-	 * 
-	 * @return String
-	 */
-	public static String getWorkbenchDefaultEncoding() {
-		return System.getProperty("file.encoding", "UTF-8");//$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Return the list of encodings defined using the org.eclipse.ui.encodings
-	 * extension point.
-	 * 
-	 * @return List of String
-	 */
-	public static List getDefinedEncodings() {
-		List definedEncodings = Collections.synchronizedList(new ArrayList());
-		EncodingsRegistryReader reader = new EncodingsRegistryReader(definedEncodings);
-
-		reader.readRegistry(Platform.getExtensionRegistry(), PlatformUI.PLUGIN_ID,
-				IWorkbenchRegistryConstants.PL_ENCODINGS);
-
-		//Make it an array in case of concurrency issues with Iterators
-		String[] encodings = new String[definedEncodings.size()];
-		List invalid = new ArrayList();
-		definedEncodings.toArray(encodings);
-		for (int i = 0; i < encodings.length; i++) {
-			if (!isSupported(encodings[i])) {
-				invalid.add(encodings[i]);
-			}
-		}
-
-		Iterator invalidIterator = invalid.iterator();
-		while (invalidIterator.hasNext()) {
-			String next = (String) invalidIterator.next();
-			WorkbenchPlugin.log(NLS.bind(WorkbenchMessages.WorkbenchEncoding_invalidCharset,  next ));
-			definedEncodings.remove(next);
-
-		}
-
-		return definedEncodings;
-	}
-
-	/**
-	 * Returns whether the given encoding is supported in the current runtime.
-	 * 
-	 * @param encoding the encoding to test
-	 * @return <code>true</code> if supported or if its support could not be determined, 
-	 *   <code>false</code> if not supported
-	 */
-	private static boolean isSupported(String encoding) {
-		if (CharsetIsSupportedMethod == null) {
-			return true;
-		}
-		try {
-			Object o = CharsetIsSupportedMethod.invoke(null, new Object[] { encoding });
-			return Boolean.TRUE.equals(o);
-		} catch (IllegalArgumentException e) {
-		    //fall through
-		} catch (IllegalAccessException e) {
-			// fall through
-		} catch (InvocationTargetException e) {
-			// Method.invoke can throw InvocationTargetException if there is 
-			// an exception in the invoked method.
-			// Charset.isSupported() is specified to throw IllegalCharsetNameException only
-			// which we want to return false for.
-			return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchException.java
deleted file mode 100644
index 049db2d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/WorkbenchException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-/**
- * A checked exception indicating a recoverable error occured internal to the
- * workbench. The status provides a further description of the problem.
- * <p>
- * This exception class is not intended to be subclassed by clients.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class WorkbenchException extends CoreException {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3258125864872129078L;
-
-    /**
-     * Creates a new exception with the given message.
-     * 
-     * @param message the message
-     */
-    public WorkbenchException(String message) {
-        this(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, message, null));
-    }
-
-    /**
-     * Creates a new exception with the given message.
-     *
-     * @param message the message
-     * @param nestedException an exception to be wrapped by this WorkbenchException
-     */
-    public WorkbenchException(String message, Throwable nestedException) {
-        this(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, message,
-                nestedException));
-    }
-
-    /**
-     * Creates a new exception with the given status object.  The message
-     * of the given status is used as the exception message.
-     *
-     * @param status the status object to be associated with this exception
-     */
-    public WorkbenchException(IStatus status) {
-        super(status);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java
deleted file mode 100644
index c5d8f0c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java
+++ /dev/null
@@ -1,613 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.ArrayList;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * This class represents the default implementation of the
- * <code>IMemento</code> interface.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- *
- * @see IMemento
- */
-public final class XMLMemento implements IMemento {
-    private Document factory;
-
-    private Element element;
-
-    /**
-     * Creates a <code>Document</code> from the <code>Reader</code>
-     * and returns a memento on the first <code>Element</code> for reading
-     * the document.
-     * <p>
-     * Same as calling createReadRoot(reader, null)
-     * </p>
-     * 
-     * @param reader the <code>Reader</code> used to create the memento's document
-     * @return a memento on the first <code>Element</code> for reading the document
-     * @throws WorkbenchException if IO problems, invalid format, or no element.
-     */
-    public static XMLMemento createReadRoot(Reader reader)
-            throws WorkbenchException {
-        return createReadRoot(reader, null);
-    }
-
-    /**
-     * Creates a <code>Document</code> from the <code>Reader</code>
-     * and returns a memento on the first <code>Element</code> for reading
-     * the document.
-     * 
-     * @param reader the <code>Reader</code> used to create the memento's document
-     * @param baseDir the directory used to resolve relative file names
-     * 		in the XML document. This directory must exist and include the
-     * 		trailing separator. The directory format, including the separators,
-     * 		must be valid for the platform. Can be <code>null</code> if not
-     * 		needed.
-     * @return a memento on the first <code>Element</code> for reading the document
-     * @throws WorkbenchException if IO problems, invalid format, or no element.
-     */
-    public static XMLMemento createReadRoot(Reader reader, String baseDir)
-            throws WorkbenchException {
-        String errorMessage = null;
-        Exception exception = null;
-
-        try {
-            DocumentBuilderFactory factory = DocumentBuilderFactory
-                    .newInstance();
-            DocumentBuilder parser = factory.newDocumentBuilder();
-            InputSource source = new InputSource(reader);
-            if (baseDir != null) {
-				source.setSystemId(baseDir);
-			}
-            Document document = parser.parse(source);
-            NodeList list = document.getChildNodes();
-            for (int i = 0; i < list.getLength(); i++) {
-                Node node = list.item(i);
-                if (node instanceof Element) {
-					return new XMLMemento(document, (Element) node);
-				}
-            }
-        } catch (ParserConfigurationException e) {
-            exception = e;
-            errorMessage = WorkbenchMessages.XMLMemento_parserConfigError;
-        } catch (IOException e) {
-            exception = e;
-            errorMessage = WorkbenchMessages.XMLMemento_ioError; 
-        } catch (SAXException e) {
-            exception = e;
-            errorMessage = WorkbenchMessages.XMLMemento_formatError; 
-        }
-
-        String problemText = null;
-        if (exception != null) {
-			problemText = exception.getMessage();
-		}
-        if (problemText == null || problemText.length() == 0) {
-			problemText = errorMessage != null ? errorMessage
-                    : WorkbenchMessages.XMLMemento_noElement;
-		} 
-        throw new WorkbenchException(problemText, exception);
-    }
-
-    /**
-     * Returns a root memento for writing a document.
-     * 
-     * @param type the element node type to create on the document
-     * @return the root memento for writing a document
-     */
-    public static XMLMemento createWriteRoot(String type) {
-        Document document;
-        try {
-            document = DocumentBuilderFactory.newInstance()
-                    .newDocumentBuilder().newDocument();
-            Element element = document.createElement(type);
-            document.appendChild(element);
-            return new XMLMemento(document, element);
-        } catch (ParserConfigurationException e) {
-//            throw new Error(e);
-            throw new Error(e.getMessage());
-        }
-    }
-
-    /**
-     * Creates a memento for the specified document and element.
-     * <p>
-     * Clients should use <code>createReadRoot</code> and
-     * <code>createWriteRoot</code> to create the initial
-     * memento on a document.
-     * </p>
-     * 
-     * @param document the document for the memento
-     * @param element the element node for the memento
-     */
-    public XMLMemento(Document document, Element element) {
-        super();
-        this.factory = document;
-        this.element = element;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public IMemento createChild(String type) {
-        Element child = factory.createElement(type);
-        element.appendChild(child);
-        return new XMLMemento(factory, child);
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public IMemento createChild(String type, String id) {
-        Element child = factory.createElement(type);
-        child.setAttribute(TAG_ID, id == null ? "" : id); //$NON-NLS-1$
-        element.appendChild(child);
-        return new XMLMemento(factory, child);
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public IMemento copyChild(IMemento child) {
-        Element childElement = ((XMLMemento) child).element;
-        Element newElement = (Element) factory.importNode(childElement, true);
-        element.appendChild(newElement);
-        return new XMLMemento(factory, newElement);
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public IMemento getChild(String type) {
-
-        // Get the nodes.
-        NodeList nodes = element.getChildNodes();
-        int size = nodes.getLength();
-        if (size == 0) {
-			return null;
-		}
-
-        // Find the first node which is a child of this node.
-        for (int nX = 0; nX < size; nX++) {
-            Node node = nodes.item(nX);
-            if (node instanceof Element) {
-                Element element = (Element) node;
-                if (element.getNodeName().equals(type)) {
-					return new XMLMemento(factory, element);
-				}
-            }
-        }
-
-        // A child was not found.
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public IMemento[] getChildren(String type) {
-
-        // Get the nodes.
-        NodeList nodes = element.getChildNodes();
-        int size = nodes.getLength();
-        if (size == 0) {
-			return new IMemento[0];
-		}
-
-        // Extract each node with given type.
-        ArrayList list = new ArrayList(size);
-        for (int nX = 0; nX < size; nX++) {
-            Node node = nodes.item(nX);
-            if (node instanceof Element) {
-                Element element = (Element) node;
-                if (element.getNodeName().equals(type)) {
-					list.add(element);
-				}
-            }
-        }
-
-        // Create a memento for each node.
-        size = list.size();
-        IMemento[] results = new IMemento[size];
-        for (int x = 0; x < size; x++) {
-            results[x] = new XMLMemento(factory, (Element) list.get(x));
-        }
-        return results;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public Float getFloat(String key) {
-        Attr attr = element.getAttributeNode(key);
-        if (attr == null) {
-			return null;
-		}
-        String strValue = attr.getValue();
-        try {
-            return new Float(strValue);
-        } catch (NumberFormatException e) {
-            WorkbenchPlugin.log("Memento problem - Invalid float for key: " //$NON-NLS-1$
-                    + key + " value: " + strValue, e); //$NON-NLS-1$
-            return null;
-        }
-    }
-
-	/**
-	 * @since 3.4
-	 */
-	public String getType() {
-		return element.getNodeName();
-	}
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public String getID() {
-        return element.getAttribute(TAG_ID);
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public Integer getInteger(String key) {
-        Attr attr = element.getAttributeNode(key);
-        if (attr == null) {
-			return null;
-		}
-        String strValue = attr.getValue();
-        try {
-            return new Integer(strValue);
-        } catch (NumberFormatException e) {
-            WorkbenchPlugin
-                    .log("Memento problem - invalid integer for key: " + key //$NON-NLS-1$
-                            + " value: " + strValue, e); //$NON-NLS-1$
-            return null;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public String getString(String key) {
-        Attr attr = element.getAttributeNode(key);
-        if (attr == null) {
-			return null;
-		}
-        return attr.getValue();
-    }
-
-	/**
-	 * @since 3.4
-	 */
-	public Boolean getBoolean(String key) {
-        Attr attr = element.getAttributeNode(key);
-        if (attr == null) {
-			return null;
-		}
-        return Boolean.valueOf(attr.getValue());
-	}
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public String getTextData() {
-        Text textNode = getTextNode();
-        if (textNode != null) {
-            return textNode.getData();
-        }
-        return null;
-    }
-
-	/**
-	 * @since 3.4
-	 */
-	public String[] getAttributeKeys() {
-		NamedNodeMap map = element.getAttributes();
-		int size = map.getLength();
-		String[] attributes = new String[size];
-		for (int i = 0; i < size; i++) {
-			Node node = map.item(i);
-			attributes[i] = node.getNodeName();
-		}
-		return attributes;
-	}
-
-    /**
-     * Returns the Text node of the memento. Each memento is allowed only 
-     * one Text node.
-     * 
-     * @return the Text node of the memento, or <code>null</code> if
-     * the memento has no Text node.
-     */
-    private Text getTextNode() {
-        // Get the nodes.
-        NodeList nodes = element.getChildNodes();
-        int size = nodes.getLength();
-        if (size == 0) {
-			return null;
-		}
-        for (int nX = 0; nX < size; nX++) {
-            Node node = nodes.item(nX);
-            if (node instanceof Text) {
-                return (Text) node;
-            }
-        }
-        // a Text node was not found
-        return null;
-    }
-
-    /**
-     * Places the element's attributes into the document.
-     * @param copyText true if the first text node should be copied
-     */
-    private void putElement(Element element, boolean copyText) {
-        NamedNodeMap nodeMap = element.getAttributes();
-        int size = nodeMap.getLength();
-        for (int i = 0; i < size; i++) {
-            Attr attr = (Attr) nodeMap.item(i);
-            putString(attr.getName(), attr.getValue());
-        }
-
-        NodeList nodes = element.getChildNodes();
-        size = nodes.getLength();
-        // Copy first text node (fixes bug 113659).
-        // Note that text data will be added as the first child (see putTextData)
-        boolean needToCopyText = copyText;
-        for (int i = 0; i < size; i++) {
-            Node node = nodes.item(i);
-            if (node instanceof Element) {
-                XMLMemento child = (XMLMemento) createChild(node.getNodeName());
-                child.putElement((Element) node, true);
-            } else if (node instanceof Text && needToCopyText) {
-                putTextData(((Text) node).getData());
-                needToCopyText = false;
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public void putFloat(String key, float f) {
-        element.setAttribute(key, String.valueOf(f));
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public void putInteger(String key, int n) {
-        element.setAttribute(key, String.valueOf(n));
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public void putMemento(IMemento memento) {
-    	// Do not copy the element's top level text node (this would overwrite the existing text).
-    	// Text nodes of children are copied.
-        putElement(((XMLMemento) memento).element, false);
-    }
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public void putString(String key, String value) {
-        if (value == null) {
-			return;
-		}
-        element.setAttribute(key, value);
-    }
-
-	/**
-	 * @since 3.4
-	 */
-	public void putBoolean(String key, boolean value) {
-		element.setAttribute(key, value ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-    /* (non-Javadoc)
-     * Method declared in IMemento.
-     */
-    public void putTextData(String data) {
-        Text textNode = getTextNode();
-        if (textNode == null) {
-            textNode = factory.createTextNode(data);
-			// Always add the text node as the first child (fixes bug 93718) 
-			element.insertBefore(textNode, element.getFirstChild());
-        } else {
-            textNode.setData(data);
-        }
-    }
-
-    /**
-     * Saves this memento's document current values to the
-     * specified writer. 
-     * 
-     * @param writer the writer used to save the memento's document
-     * @throws IOException if there is a problem serializing the document to the stream.
-     */
-    public void save(Writer writer) throws IOException {
-    	DOMWriter out = new DOMWriter(writer);
-        try {
-        	out.print(element);
-    	} finally {
-    		out.close();
-    	}
-	}
-
-	/**
-     * A simple XML writer.  Using this instead of the javax.xml.transform classes allows
-     * compilation against JCL Foundation (bug 80053). 
-     */
-    private static final class DOMWriter extends PrintWriter {
-    	
-    	private int tab;
-
-    	/* constants */
-    	private static final String XML_VERSION = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; //$NON-NLS-1$
-
-    	/**
-    	 * Creates a new DOM writer on the given output writer.
-    	 * 
-    	 * @param output the output writer
-    	 */
-    	public DOMWriter(Writer output) {
-    		super(output);
-    		tab = 0;
-    		println(XML_VERSION);
-    	}
-
-    	/**
-    	 * Prints the given element.
-    	 * 
-    	 * @param element the element to print
-    	 */
-        public void print(Element element) {
-        	// Ensure extra whitespace is not emitted next to a Text node,
-        	// as that will result in a situation where the restored text data is not the
-        	// same as the saved text data.
-        	boolean hasChildren = element.hasChildNodes();
-        	startTag(element, hasChildren);
-        	if (hasChildren) {
-	        	tab++;
-	        	boolean prevWasText = false;
-	        	NodeList children = element.getChildNodes();
-	    		for (int i = 0; i < children.getLength(); i++) {
-	    			Node node = children.item(i);
-	    			if (node instanceof Element) {
-	    				if (!prevWasText) {
-	    					println();
-	    					printTabulation();
-	    				}
-	    				print((Element) children.item(i));
-	    				prevWasText = false;
-	    			}
-	    			else if (node instanceof Text) {
-	    				print(getEscaped(node.getNodeValue()));
-	    				prevWasText = true;
-	    			}
-	    		}
-	    		tab--;
-	    		if (!prevWasText) {
-	    			println();
-	    			printTabulation();
-	    		}
-	    		endTag(element);
-        	}
-    	}
-
-    	private void printTabulation() {
-        	// Indenting is disabled, as it can affect the result of getTextData().
-        	// In 3.0, elements were separated by a newline but not indented.
-    		// This causes getTextData() to return "\n" even if no text data had explicitly been set.
-        	// The code here emulates that behaviour.
-    		
-//    		for (int i = 0; i < tab; i++)
-//    			super.print("\t"); //$NON-NLS-1$
-    	}
-
-    	private void startTag(Element element, boolean hasChildren) {
-    		StringBuffer sb = new StringBuffer();
-    		sb.append("<"); //$NON-NLS-1$
-    		sb.append(element.getTagName());
-    		NamedNodeMap attributes = element.getAttributes();
-   			for (int i = 0;  i < attributes.getLength(); i++) {
-   				Attr attribute = (Attr)attributes.item(i);
-				sb.append(" "); //$NON-NLS-1$
-				sb.append(attribute.getName());
-				sb.append("=\""); //$NON-NLS-1$
-				sb.append(getEscaped(String.valueOf(attribute.getValue())));
-				sb.append("\""); //$NON-NLS-1$
-   			}
-   			sb.append(hasChildren ? ">" : "/>"); //$NON-NLS-1$ //$NON-NLS-2$
-   			print(sb.toString());
-    	}
-
-    	private void endTag(Element element) {
-    		StringBuffer sb = new StringBuffer();
-    		sb.append("</"); //$NON-NLS-1$
-    		sb.append(element.getNodeName());
-    		sb.append(">"); //$NON-NLS-1$
-   			print(sb.toString());
-    	}
-    	
-    	private static void appendEscapedChar(StringBuffer buffer, char c) {
-    		String replacement = getReplacement(c);
-    		if (replacement != null) {
-    			buffer.append('&');
-    			buffer.append(replacement);
-    			buffer.append(';');
-    		} else {
-    			buffer.append(c);
-    		}
-    	}
-
-    	private static String getEscaped(String s) {
-    		StringBuffer result = new StringBuffer(s.length() + 10);
-    		for (int i = 0; i < s.length(); ++i) {
-				appendEscapedChar(result, s.charAt(i));
-			}
-    		return result.toString();
-    	}
-
-    	private static String getReplacement(char c) {
-    		// Encode special XML characters into the equivalent character references.
-			// The first five are defined by default for all XML documents.
-			// The next three (#xD, #xA, #x9) are encoded to avoid them
-			// being converted to spaces on deserialization
-			// (fixes bug 93720)
-    		switch (c) {
-    			case '<' :
-    				return "lt"; //$NON-NLS-1$
-    			case '>' :
-    				return "gt"; //$NON-NLS-1$
-    			case '"' :
-    				return "quot"; //$NON-NLS-1$
-    			case '\'' :
-    				return "apos"; //$NON-NLS-1$
-    			case '&' :
-    				return "amp"; //$NON-NLS-1$
-				case '\r':
-					return "#x0D"; //$NON-NLS-1$
-				case '\n':
-					return "#x0A"; //$NON-NLS-1$
-				case '\u0009':
-					return "#x09"; //$NON-NLS-1$
-    		}
-    		return null;
-    	}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/ISystemSummarySection.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/ISystemSummarySection.java
deleted file mode 100644
index 22b597b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/ISystemSummarySection.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.about;
-
-import java.io.PrintWriter;
-
-/**
- * Extensions to <code>org.eclipse.ui.systemSummaryExtensions</code> must provide
- * an implementation of this interface.  The class must provide a default
- * constructor.  A new instance of the class will be created each time the system
- * summary is created. 
- * 
- * @since 3.0
- */
-public interface ISystemSummarySection {
-    /**
-     * A method that puts the section's information into the system summary's
-     * configuration details log.
-     * @param writer puts information into the system summary
-     */
-    public void write(PrintWriter writer);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/package.html
deleted file mode 100644
index b5cee3b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/about/package.html
+++ /dev/null
@@ -1,18 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction with
-and extension of the Eclipse Platform About dialog.
-<h2>
-Package Specification
-</h2>
-Provides interfaces for customizing the content of the About
-dialog.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionContext.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionContext.java
deleted file mode 100644
index 8840c0d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionContext.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.viewers.ISelection;
-
-/**
- * An <code>ActionContext</code> represents the context used to determine
- * which actions are added by an <code>ActionGroup</code>, and what their 
- * enabled state should be.
- * <p>
- * This class encapsulates a selection and an input element.
- * Clients may subclass this class to add more information to the context.
- * </p>
- */
-public class ActionContext {
-
-    /**
-     * The selection.
-     */
-    private ISelection selection;
-
-    /**
-     * The input element.
-     */
-    private Object input;
-
-    /**
-     * Creates a new action context with the given selection.
-     */
-    public ActionContext(ISelection selection) {
-        setSelection(selection);
-    }
-
-    /**
-     * Returns the selection.
-     */
-    public ISelection getSelection() {
-        return selection;
-    }
-
-    /**
-     * Sets the selection.
-     */
-    public void setSelection(ISelection selection) {
-        this.selection = selection;
-    }
-
-    /**
-     * Returns the input element.
-     */
-    public Object getInput() {
-        return input;
-    }
-
-    /**
-     * Sets the input element.
-     * 
-     * @param input
-     */
-    public void setInput(Object input) {
-        this.input = input;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionDelegate.java
deleted file mode 100644
index bd3a8a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionDelegate.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IActionDelegate2;
-
-/**
- * Abstract base implementation of <code>IActionDelegate</code> and
- * <code>IActionDelegate2</code> for a client delegate action.
- * <p>
- * Subclasses should reimplement <code>runWithEvent</code> or <code>run</code>
- * methods to do the action's work, and may reimplement
- * <code>selectionChanged</code> to react to selection changes in the workbench.
- * </p>
- */
-public abstract class ActionDelegate implements IActionDelegate2 {
-    /**
-     * The <code>ActionDelegate</code> implementation of this
-     * <code>IActionDelegate</code> method does nothing. Subclasses may
-     * reimplement.
-     * <p>
-     * <b>Note:</b> This method is not called directly by the proxy action. Only
-     * by the default implementation of <code>runWithEvent</code> of this
-     * abstract class.
-     */
-    public void run(IAction action) {
-    }
-
-    /**
-     * The <code>ActionDelegate</code> implementation of this
-     * <code>IActionDelegate</code> method does nothing. Subclasses may
-     * reimplement.
-     */
-    public void selectionChanged(IAction action, ISelection selection) {
-    }
-
-    /**
-     * The <code>ActionDelegate</code> implementation of this
-     * <code>IActionDelegate2</code> method does nothing. Subclasses may
-     * reimplement.
-     */
-    public void init(IAction action) {
-    }
-
-    /**
-     * The <code>ActionDelegate</code> implementation of this
-     * <code>IActionDelegate2</code> method does nothing. Subclasses may
-     * reimplement.
-     */
-    public void dispose() {
-    }
-
-    /**
-     * The <code>ActionDelegate</code> implementation of this
-     * <code>IActionDelegate2</code> method redirects to the <code>run</code>
-     * method. Subclasses may reimplement.
-     */
-    public void runWithEvent(IAction action, Event event) {
-        run(action);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionFactory.java
deleted file mode 100644
index 9f0a405..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionFactory.java
+++ /dev/null
@@ -1,1743 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import java.util.Map;
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.CloseAllSavedAction;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.IntroAction;
-import org.eclipse.ui.internal.LockToolBarAction;
-import org.eclipse.ui.internal.NavigationHistoryAction;
-import org.eclipse.ui.internal.OpenPreferencesAction;
-import org.eclipse.ui.internal.ResetPerspectiveAction;
-import org.eclipse.ui.internal.SaveAction;
-import org.eclipse.ui.internal.SaveAllAction;
-import org.eclipse.ui.internal.SaveAsAction;
-import org.eclipse.ui.internal.SavePerspectiveAction;
-import org.eclipse.ui.internal.ToggleEditorsVisibilityAction;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.actions.CommandAction;
-import org.eclipse.ui.internal.actions.DynamicHelpAction;
-import org.eclipse.ui.internal.actions.HelpContentsAction;
-import org.eclipse.ui.internal.actions.HelpSearchAction;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Access to standard actions provided by the workbench.
- * <p>
- * Most of the functionality of this class is provided by static methods and
- * fields. Example usage:
- * 
- * <pre>
- * MenuManager menu = ...; 
- * ActionFactory.IWorkbenchAction closeEditorAction 
- *    = ActionFactory.CLOSE.create(window); 
- * menu.add(closeEditorAction);
- * </pre>
- * </p>
- * <p>
- * Clients may declare other classes that provide additional application-specific
- * action factories.
- * </p>
- * 
- * @since 3.0
- */
-public abstract class ActionFactory {
-
-    /**
-     * Interface for a workbench action.
-     */
-    public interface IWorkbenchAction extends IAction {
-        /**
-         * Disposes of this action. Once disposed, this action cannot be used.
-         * This operation has no effect if the action has already been
-         * disposed.
-         */
-        public void dispose();
-    }
-    
-    private static class WorkbenchCommandAction extends CommandAction implements
-			IWorkbenchAction {
-		/**
-		 * @param commandIdIn
-		 * @param window
-		 */
-		public WorkbenchCommandAction(String commandIdIn,
-				IWorkbenchWindow window) {
-			super(window, commandIdIn);
-		}
-		
-		public WorkbenchCommandAction(String commandIdIn, Map parameterMap,
-				IServiceLocator serviceLocator) {
-			super(serviceLocator, commandIdIn, parameterMap);
-		}
-	}
-
-    /**
-     * Workbench action: Displays the About dialog. This action maintains its
-     * enablement state.
-     */
-    public static final ActionFactory ABOUT = new ActionFactory("about") { //$NON-NLS-1$
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-		 */
-		public IWorkbenchAction create(IWorkbenchWindow window) {
-			if (window == null) {
-				throw new IllegalArgumentException();
-			}
-
-			WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.help.aboutAction", window); //$NON-NLS-1$
-
-			action.setId(getId());
-			IProduct product = Platform.getProduct();
-			String productName = null;
-			if (product != null) {
-				productName = product.getName();
-			}
-			if (productName == null) {
-				productName = ""; //$NON-NLS-1$
-			}
-
-			action.setText(NLS.bind(WorkbenchMessages.AboutAction_text,
-					productName));
-			action.setToolTipText(NLS.bind(
-					WorkbenchMessages.AboutAction_toolTip, productName));
-			window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.ABOUT_ACTION);
-			return action;
-		}
-	};
-
-    /**
-	 * Workbench action (id "activateEditor"): Activate the most recently used
-	 * editor. This action maintains its enablement state.
-	 */
-    public static final ActionFactory ACTIVATE_EDITOR = new ActionFactory(
-            "activateEditor") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-			if (window == null) {
-				throw new IllegalArgumentException();
-			}
-			WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.window.activateEditor", window); //$NON-NLS-1$
-			action.setId(getId());
-			action.setText(WorkbenchMessages.ActivateEditorAction_text);
-			action
-					.setToolTipText(WorkbenchMessages.ActivateEditorAction_toolTip);
-			return action;
-		}
-    };
-
-    /**
-	 * Workbench action (id "back"): Back. This action is a
-	 * {@link RetargetAction} with id "back". This action maintains its
-	 * enablement state.
-	 */
-    public static final ActionFactory BACK = new ActionFactory("back") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new LabelRetargetAction(getId(), WorkbenchMessages.Workbench_back);
-            action.setToolTipText(WorkbenchMessages.Workbench_backToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.navigate.back"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "backardHistory"): Backward in the navigation
-     * history. This action maintains its enablement state.
-     */
-    public static final ActionFactory BACKWARD_HISTORY = new ActionFactory(
-            "backardHistory") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new NavigationHistoryAction(window, false);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "close"): Close the active editor. This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory CLOSE = new ActionFactory("close") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.file.close",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CloseEditorAction_text);
-            action.setToolTipText(WorkbenchMessages.CloseEditorAction_toolTip);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "closeAll"): Close all open editors. This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory CLOSE_ALL = new ActionFactory("closeAll") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.file.closeAll",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CloseAllAction_text);
-            action.setToolTipText(WorkbenchMessages.CloseAllAction_toolTip);
-            return action;
-        }
-    };
-    
-    /**
-     * Workbench action (id "closeOthers"): Close all editors except the one that 
-	 * is active. This action maintains its enablement state.
-	 * 
-	 * @since 3.2
-     */
-    public static final ActionFactory CLOSE_OTHERS = new ActionFactory("closeOthers") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-			if (window == null) {
-				throw new IllegalArgumentException();
-			}
-			WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.file.closeOthers", window); //$NON-NLS-1$
-			action.setId(getId());
-			action.setText(WorkbenchMessages.CloseOthersAction_text);
-			action.setToolTipText(WorkbenchMessages.CloseOthersAction_toolTip);
-			return action;
-        }
-    };
-
-    /**
-	 * Workbench action (id "closeAllPerspectives"): Closes all perspectives.
-	 * This action maintains its enablement state.
-	 */
-    public static final ActionFactory CLOSE_ALL_PERSPECTIVES = new ActionFactory(
-            "closeAllPerspectives") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction
-            ("org.eclipse.ui.window.closeAllPerspectives", window); //$NON-NLS-1$
-            
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CloseAllPerspectivesAction_text);
-            action.setToolTipText(WorkbenchMessages.CloseAllPerspectivesAction_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action, IWorkbenchHelpContextIds.CLOSE_ALL_PAGES_ACTION);
-            
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "closeAllSaved"): Close all open editors except
-     * those with unsaved changes. This action maintains its enablement state.
-     */
-    public static final ActionFactory CLOSE_ALL_SAVED = new ActionFactory(
-            "closeAllSaved") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new CloseAllSavedAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "closePerspective"): Closes the current
-     * perspective. This action maintains its enablement state.
-     */
-    public static final ActionFactory CLOSE_PERSPECTIVE = new ActionFactory(
-    "closePerspective") {//$NON-NLS-1$
-    	/*
-    	 * (non-Javadoc)
-    	 * 
-    	 * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-    	 */
-    	public IWorkbenchAction create(IWorkbenchWindow window) {
-    		if (window == null) {
-    			throw new IllegalArgumentException();
-    		}
-    		WorkbenchCommandAction action = new WorkbenchCommandAction(
-    				"org.eclipse.ui.window.closePerspective", window); //$NON-NLS-1$
-
-    		action.setId(getId());
-    		action.setText(WorkbenchMessages.
-    				ClosePerspectiveAction_text);
-    		action.setToolTipText(WorkbenchMessages.
-    				ClosePerspectiveAction_toolTip);
-    		window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.CLOSE_PAGE_ACTION);
-    		return action;
-    	}
-    };
-
-    /**
-     * Workbench action (id "intro"): Activate the introduction extension.
-     */
-    public static final ActionFactory INTRO = new ActionFactory("intro") {//$NON-NLS-1$
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new IntroAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "copy"): Copy. This action is a
-     * {@link RetargetAction} with id "copy". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory COPY = new ActionFactory("copy") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_copy);
-            action.setToolTipText(WorkbenchMessages.Workbench_copyToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.copy"); //$NON-NLS-1$
-            ISharedImages sharedImages = window.getWorkbench()
-                    .getSharedImages();
-            action.setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
-            action.setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "cut"): Cut. This action is a
-     * {@link RetargetAction} with id "cut". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory CUT = new ActionFactory("cut") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_cut); 
-            action.setToolTipText(WorkbenchMessages.Workbench_cutToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.cut"); //$NON-NLS-1$
-            ISharedImages sharedImages = window.getWorkbench()
-                    .getSharedImages();
-            action.setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_CUT));
-            action.setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_CUT_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "delete"): Delete. This action is a
-     * {@link RetargetAction} with id "delete". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory DELETE = new ActionFactory("delete") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_delete); 
-            action.setToolTipText(WorkbenchMessages.Workbench_deleteToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.delete"); //$NON-NLS-1$
-            action.enableAccelerator(false);
-            window.getWorkbench().getHelpSystem().setHelp(action,
-                    IWorkbenchHelpContextIds.DELETE_RETARGET_ACTION);
-            ISharedImages sharedImages = window.getWorkbench()
-                    .getSharedImages();
-            action.setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
-            action
-                    .setDisabledImageDescriptor(sharedImages
-                            .getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "editActionSets"): Edit the action sets. This
-     * action maintains its enablement state.
-     */
-    public static final ActionFactory EDIT_ACTION_SETS = new ActionFactory(
-            "editActionSets") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.window.customizePerspective", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.EditActionSetsAction_text);
-            action.setToolTipText(WorkbenchMessages.EditActionSetsAction_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.EDIT_ACTION_SETS_ACTION);
-            
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "export"): Opens the export wizard. This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory EXPORT = new ActionFactory("export") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.file.export", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.ExportResourcesAction_fileMenuText);
-            action.setToolTipText(WorkbenchMessages.ExportResourcesAction_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.EXPORT_ACTION);
-            action.setImageDescriptor(WorkbenchImages
-                    .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_EXPORT_WIZ));
-            return action;
-        }
-        
-    };
-
-    /**
-     * Workbench action (id "find"): Find. This action is a
-     * {@link RetargetAction} with id "find". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory FIND = new ActionFactory("find") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_findReplace); 
-            action.setToolTipText(WorkbenchMessages.Workbench_findReplaceToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.findReplace"); //$NON-NLS-1$
-            // Find's images are commented out due to a conflict with Search.
-            // See bug 16412.
-            //		action.setImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_SEARCH_SRC));
-            //		action.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_SEARCH_SRC_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "forward"): Forward. This action is a
-     * {@link RetargetAction} with id "forward". This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory FORWARD = new ActionFactory("forward") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_forward);
-            action.setToolTipText(WorkbenchMessages.Workbench_forwardToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.navigate.forward"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "forwardHistory"): Forward in the navigation
-     * history. This action maintains its enablement state.
-     */
-    public static final ActionFactory FORWARD_HISTORY = new ActionFactory(
-            "forwardHistory") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new NavigationHistoryAction(window, true);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "goInto"): Go Into. This action is a
-     * {@link RetargetAction} with id "goInto". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory GO_INTO = new ActionFactory("goInto") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_goInto); 
-            action.setToolTipText(WorkbenchMessages.Workbench_goIntoToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.navigate.goInto"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "import"): Opens the import wizard. This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory IMPORT = new ActionFactory("import") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.file.import", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.ImportResourcesAction_text);
-            action.setToolTipText(WorkbenchMessages.ImportResourcesAction_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.IMPORT_ACTION);
-            action.setImageDescriptor(WorkbenchImages
-                    .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_IMPORT_WIZ));            
-            return action;
-
-        }
-    };
-
-    /**
-     * Workbench action (id "lockToolBar"): Lock/unlock the workbench window
-     * tool bar. This action maintains its enablement state.
-     */
-    public static final ActionFactory LOCK_TOOL_BAR = new ActionFactory(
-            "lockToolBar") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new LockToolBarAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "maximize"): Maximize/restore the active part. This
-     * action maintains its enablement state.
-     */
-    public static final ActionFactory MAXIMIZE = new ActionFactory("maximize") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.window.maximizePart", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setToolTipText(WorkbenchMessages.MaximizePartAction_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.MAXIMIZE_PART_ACTION);
-            
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "minimize"): Minimizes the active part. This
-     * action maintains its enablement state.
-     * 
-     * @since 3.1
-     */
-    public static final ActionFactory MINIMIZE = new ActionFactory("minimize") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.window.minimizePart", window); //$NON-NLS-1$
-			action.setId(getId());
-			action.setToolTipText(WorkbenchMessages.MinimizePartAction_toolTip);
-			window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.MINIMIZE_PART_ACTION);
-			return action;
-        }
-    };
-    
-    /**
-	 * Workbench action (id "move"): Move. This action is a
-	 * {@link RetargetAction} with id "move". This action maintains its
-	 * enablement state.
-	 */
-    public static final ActionFactory MOVE = new ActionFactory("move") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_move); 
-            action.setToolTipText(WorkbenchMessages.Workbench_moveToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.move"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "new"): Opens the new wizard dialog. This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory NEW = new ActionFactory("new") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.newWizard", window); //$NON-NLS-1$
-            action.setId(getId());
-            ISharedImages images = window.getWorkbench().getSharedImages();
-            action.setImageDescriptor(images
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD));
-            action.setDisabledImageDescriptor(images
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD_DISABLED));
-            action.setText(WorkbenchMessages.NewWizardAction_text);
-            action.setToolTipText(WorkbenchMessages.NewWizardAction_toolTip); 
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.NEW_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "newWizardDropDown"): Drop-down action which shows shows the new wizard drop down, 
-     * or opens the new wizard dialog when pressed.  For use in the toolbar.
-     * This action maintains its enablement state.
-     * 
-     * @since 3.1
-     */
-    public static final ActionFactory NEW_WIZARD_DROP_DOWN = new ActionFactory(
-            "newWizardDropDown") { //$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new NewWizardDropDownAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "next"): Next. This action is a
-     * {@link RetargetAction} with id "next". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory NEXT = new ActionFactory("next") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_next); 
-            action.setToolTipText(WorkbenchMessages.Workbench_nextToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.navigate.next"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "nextEditor"): Next editor. This action maintains
-     * its enablement state.
-     * <p>
-     * <code>NEXT_EDITOR</code> and <code>PREVIOUS_EDITOR</code> form a
-     * cycle action pair. For a given window, use
-     * {@link ActionFactory#linkCycleActionPair
-     * ActionFactory.linkCycleActionPair</code>} to connect the two.
-     * </p>
-     */
-    public static final ActionFactory NEXT_EDITOR = new ActionFactory(
-            "nextEditor") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-			if (window == null) {
-				throw new IllegalArgumentException();
-			}
-			IWorkbenchAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.window.nextEditor", //$NON-NLS-1$
-					window);
-
-			action.setId(getId());
-			action.setText(WorkbenchMessages.CycleEditorAction_next_text); 
-			action.setToolTipText(WorkbenchMessages.CycleEditorAction_next_toolTip); 
-            // @issue missing action ids
-			window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.CYCLE_EDITOR_FORWARD_ACTION);
-            
-			return action;
-		}
-    };
-
-    /**
-	 * Workbench action (id "nextPart"): Next part. This action maintains its
-	 * enablement state.
-	 * <p>
-	 * <code>NEXT_PART</code> and <code>PREVIOUS_PART</code> form a cycle
-	 * action pair. For a given window, use
-	 * {@link ActionFactory#linkCycleActionPair
-	 * ActionFactory.linkCycleActionPair</code>} to connect the two.
-	 * </p>
-	 */
-    public static final ActionFactory NEXT_PART = new ActionFactory("nextPart") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.window.nextView",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CyclePartAction_next_text);
-			action.setToolTipText(WorkbenchMessages.CyclePartAction_next_toolTip);
-			// @issue missing action ids
-			window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.CYCLE_PART_FORWARD_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "nextPerspective"): Next perspective. This action
-     * maintains its enablement state.
-     * <p>
-     * <code>NEXT_PERSPECTIVE</code> and <code>PREVIOUS_PERSPECTIVE</code>
-     * form a cycle action pair. For a given window, use
-     * {@link ActionFactory#linkCycleActionPair
-     * ActionFactory.linkCycleActionPair</code>} to connect the two.
-     * </p>
-     */
-    public static final ActionFactory NEXT_PERSPECTIVE = new ActionFactory(
-            "nextPerspective") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.window.nextPerspective",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CyclePerspectiveAction_next_text);
-            action.setToolTipText(WorkbenchMessages.CyclePerspectiveAction_next_toolTip);
-            // @issue missing action ids
-            window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.CYCLE_PERSPECTIVE_FORWARD_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "openNewWindow"): Open a new workbench window. This
-     * action maintains its enablement state.
-     */
-    public static final ActionFactory OPEN_NEW_WINDOW = new ActionFactory(
-            "openNewWindow") {//$NON-NLS-1$
-        
-    	
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.window.newWindow", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.OpenInNewWindowAction_text);
-            action.setToolTipText(WorkbenchMessages.OpenInNewWindowAction_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action, 
-            		IWorkbenchHelpContextIds.OPEN_NEW_WINDOW_ACTION);
-            return action;
-        }
-        
-    };
-
-    /**
-     * Workbench action (id "paste"): Paste. This action is a
-     * {@link RetargetAction} with id "paste". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory PASTE = new ActionFactory("paste") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_paste);
-            action.setToolTipText(WorkbenchMessages.Workbench_pasteToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.paste"); //$NON-NLS-1$
-            ISharedImages sharedImages = window.getWorkbench()
-                    .getSharedImages();
-            action.setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
-            action.setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "preferences"): Displays the Preferences dialog.
-     * This action maintains its enablement state.
-     */
-    public static final ActionFactory PREFERENCES = new ActionFactory(
-            "preferences") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new OpenPreferencesAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "previous"): Previous. This action is a
-     * {@link RetargetAction} with id "previous". This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory PREVIOUS = new ActionFactory("previous") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_previous);
-            action.setToolTipText(WorkbenchMessages.Workbench_previousToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.navigate.previous"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "previousEditor"): Previous editor. This action
-     * maintains its enablement state.
-     * <p>
-     * <code>NEXT_EDITOR</code> and <code>PREVIOUS_EDITOR</code> form a
-     * cycle action pair. For a given window, use
-     * {@link ActionFactory#linkCycleActionPair
-     * ActionFactory.linkCycleActionPair</code>} to connect the two.
-     * </p>
-     */
-    public static final ActionFactory PREVIOUS_EDITOR = new ActionFactory(
-            "previousEditor") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.window.previousEditor", //$NON-NLS-1$
-					window);
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CycleEditorAction_prev_text);
-            action.setToolTipText(WorkbenchMessages.CycleEditorAction_prev_toolTip); 
-            // @issue missing action ids
-            window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.CYCLE_EDITOR_BACKWARD_ACTION);
-
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "previousPart"): Previous part. This action
-     * maintains its enablement state.
-     * <p>
-     * <code>NEXT_PART</code> and <code>PREVIOUS_PART</code> form a cycle
-     * action pair. For a given window, use
-     * {@link ActionFactory#linkCycleActionPair
-     * ActionFactory.linkCycleActionPair</code>} to connect the two.
-     * </p>
-     */
-    public static final ActionFactory PREVIOUS_PART = new ActionFactory(
-            "previousPart") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.window.previousView",window); //$NON-NLS-1$
-            action.setId(getId());
-			action.setText(WorkbenchMessages.CyclePartAction_prev_text);
-			action.setToolTipText(WorkbenchMessages.CyclePartAction_prev_toolTip);
-			// @issue missing action ids
-			window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.CYCLE_PART_BACKWARD_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "previousPerspective"): Previous perspective. This
-     * action maintains its enablement state.
-     * <p>
-     * <code>NEXT_PERSPECTIVE</code> and <code>PREVIOUS_PERSPECTIVE</code>
-     * form a cycle action pair. For a given window, use
-     * {@link ActionFactory#linkCycleActionPair
-     * ActionFactory.linkCycleActionPair</code>} to connect the two.
-     * </p>
-     */
-    public static final ActionFactory PREVIOUS_PERSPECTIVE = new ActionFactory(
-            "previousPerspective") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.window.previousPerspective",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.CyclePerspectiveAction_prev_text); 
-            action.setToolTipText(WorkbenchMessages.CyclePerspectiveAction_prev_toolTip); 
-            // @issue missing action ids
-            window.getWorkbench().getHelpSystem().setHelp(action,
-					IWorkbenchHelpContextIds.CYCLE_PERSPECTIVE_BACKWARD_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "print"): Print. This action is a
-     * {@link RetargetAction} with id "print". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory PRINT = new ActionFactory("print") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_print); 
-            action.setToolTipText(WorkbenchMessages.Workbench_printToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.file.print"); //$NON-NLS-1$
-            action
-                    .setImageDescriptor(WorkbenchImages
-                            .getImageDescriptor(ISharedImages.IMG_ETOOL_PRINT_EDIT));
-            action
-                    .setDisabledImageDescriptor(WorkbenchImages
-                            .getImageDescriptor(ISharedImages.IMG_ETOOL_PRINT_EDIT_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "properties"): Properties. This action is a
-     * {@link RetargetAction} with id "properties". This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory PROPERTIES = new ActionFactory(
-            "properties") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_properties); 
-            action.setToolTipText(WorkbenchMessages.Workbench_propertiesToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.file.properties"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "quit"): Quit (close the workbench). This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory QUIT = new ActionFactory("quit") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.file.exit", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.Exit_text); 
-            action.setToolTipText(WorkbenchMessages.Exit_toolTip);
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.QUIT_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "redo"): Redo. This action is a
-     * {@link RetargetAction} with id "redo". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory REDO = new ActionFactory("redo") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            LabelRetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_redo); 
-            action.setToolTipText(WorkbenchMessages.Workbench_redoToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.redo"); //$NON-NLS-1$
-            ISharedImages sharedImages = window.getWorkbench()
-                    .getSharedImages();
-            action.setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_REDO));
-            action.setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "refresh"): Refresh. This action is a
-     * {@link RetargetAction} with id "refresh". This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory REFRESH = new ActionFactory("refresh") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_refresh);
-            action.setToolTipText(WorkbenchMessages.Workbench_refreshToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.file.refresh"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "rename"): Rename. This action is a
-     * {@link RetargetAction} with id "rename". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory RENAME = new ActionFactory("rename") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_rename); 
-            action.setToolTipText(WorkbenchMessages.Workbench_renameToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.rename"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "resetPerspective"): Resets the current
-     * perspective. This action maintains its enablement state.
-     */
-    public static final ActionFactory RESET_PERSPECTIVE = new ActionFactory(
-            "resetPerspective") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new ResetPerspectiveAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "revert"): Revert. This action is a
-     * {@link RetargetAction} with id "revert". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory REVERT = new ActionFactory("revert") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_revert);
-            action.setToolTipText(WorkbenchMessages.Workbench_revertToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.file.revert"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "save"): Save the active editor. This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory SAVE = new ActionFactory("save") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new SaveAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "saveAll"): Save all open editors with unsaved
-     * changes. This action maintains its enablement state.
-     */
-    public static final ActionFactory SAVE_ALL = new ActionFactory("saveAll") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new SaveAllAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "saveAs"): Save As for the active editor. This
-     * action maintains its enablement state.
-     */
-    public static final ActionFactory SAVE_AS = new ActionFactory("saveAs") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new SaveAsAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "savePerspective"): Save the current perspective.
-     * This action maintains its enablement state.
-     */
-    public static final ActionFactory SAVE_PERSPECTIVE = new ActionFactory(
-            "savePerspective") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new SavePerspectiveAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "selectAll"): Select All. This action is a
-     * {@link RetargetAction} with id "selectAll". This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory SELECT_ALL = new ActionFactory(
-            "selectAll") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new RetargetAction(getId(),WorkbenchMessages.Workbench_selectAll);
-            action.setToolTipText(WorkbenchMessages.Workbench_selectAllToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.selectAll"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "showEditor"): Show/hide the editor area. This
-     * action maintains its enablement state.
-     */
-    public static final ActionFactory SHOW_EDITOR = new ActionFactory(
-            "showEditor") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new ToggleEditorsVisibilityAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "showOpenEditors"): Show a list of open (and
-     * recently closed) editors. This action maintains its enablement state.
-     */
-    public static final ActionFactory SHOW_OPEN_EDITORS = new ActionFactory(
-            "showOpenEditors") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.window.switchToEditor", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.WorkbenchEditorsAction_label);
-            // @issue missing action id
-            window.getWorkbench().getHelpSystem().setHelp(action,
-    				IWorkbenchHelpContextIds.WORKBENCH_EDITORS_ACTION);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "showWorkbookEditors"): Shows a list of open editors
-     * in the current or last active workbook.
-     */
-    public static final ActionFactory SHOW_WORKBOOK_EDITORS = new ActionFactory(
-            "showWorkBookEditors") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.window.openEditorDropDown", window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.WorkbookEditorsAction_label);
-            
-            return action;
-        }
-    };
-    
-    /**
-	 * Workbench action (id "showQuickAccess"): Shows a list of UI elements like
-	 * editors, views, perspectives etc.
-	 * 
-	 * @since 3.3
-	 */
-	public static final ActionFactory SHOW_QUICK_ACCESS = new ActionFactory(
-			"showQuickAccess") { //$NON-NLS-1$
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-		 */
-		public IWorkbenchAction create(IWorkbenchWindow window) {
-			WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.window.quickAccess", window); //$NON-NLS-1$
-			action.setId(getId());
-			action.setText(WorkbenchMessages.QuickAccessAction_text);
-			action.setToolTipText(WorkbenchMessages.QuickAccessAction_toolTip);
-			return action;
-		}
-
-	};
-
-    /**
-	 * Workbench action (id "showPartPaneMenu"): Show the part pane menu. This
-	 * action maintains its enablement state.
-	 */
-    public static final ActionFactory SHOW_PART_PANE_MENU = new ActionFactory(
-            "showPartPaneMenu") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.window.showSystemMenu",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.ShowPartPaneMenuAction_text); 
-            action.setToolTipText(WorkbenchMessages.ShowPartPaneMenuAction_toolTip); 
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "showViewMenu"): Show the view menu. This action
-     * maintains its enablement state.
-     */
-    public static final ActionFactory SHOW_VIEW_MENU = new ActionFactory(
-            "showViewMenu") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            WorkbenchCommandAction action=new WorkbenchCommandAction("org.eclipse.ui.window.showViewMenu",window); //$NON-NLS-1$
-            action.setId(getId());
-            action.setText(WorkbenchMessages.ShowViewMenuAction_text);
-            action.setToolTipText(WorkbenchMessages.ShowViewMenuAction_toolTip);
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "undo"): Undo. This action is a
-     * {@link RetargetAction} with id "undo". This action maintains
-     * its enablement state.
-     */
-    public static final ActionFactory UNDO = new ActionFactory("undo") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            LabelRetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_undo);
-            action.setToolTipText(WorkbenchMessages.Workbench_undoToolTip);
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.edit.undo"); //$NON-NLS-1$
-            ISharedImages sharedImages = window.getWorkbench()
-                    .getSharedImages();
-            action.setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));
-            action.setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED));
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "up"): Up. This action is a
-     * {@link RetargetAction} with id "up". This action maintains its
-     * enablement state.
-     */
-    public static final ActionFactory UP = new ActionFactory("up") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            RetargetAction action = new LabelRetargetAction(getId(),WorkbenchMessages.Workbench_up); 
-            action.setToolTipText(WorkbenchMessages.Workbench_upToolTip); 
-            window.getPartService().addPartListener(action);
-            action.setActionDefinitionId("org.eclipse.ui.navigate.up"); //$NON-NLS-1$
-            return action;
-        }
-    };
-
-    /**
-     * Workbench action (id "helpContents"): Open the help contents. This action
-     * is always enabled.
-     */
-    public static final ActionFactory HELP_CONTENTS = new ActionFactory(
-            "helpContents") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new HelpContentsAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-    
-    /**
-     * Workbench action (id "helpSearch"): Open the help search. This action
-     * is always enabled.
-     *  
-     * @since 3.1  
-     */
-    public static final ActionFactory HELP_SEARCH = new ActionFactory(
-            "helpSearch") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new HelpSearchAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-	
-    /**
-     * Workbench action (id "dynamicHelp"): Open the dynamic help. This action
-     * is always enabled.
-     *
-     * @since 3.1
-     */
-    public static final ActionFactory DYNAMIC_HELP = new ActionFactory(
-            "dynamicHelp") {//$NON-NLS-1$
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            IWorkbenchAction action = new DynamicHelpAction(window);
-            action.setId(getId());
-            return action;
-        }
-    };
-    
-    /**
-     * Workbench action (id "openPerspectiveDialog"): Open the Open Perspective dialog. This action
-     * is always enabled.
-     *
-     * @since 3.1
-     */
-    public static final ActionFactory OPEN_PERSPECTIVE_DIALOG = new ActionFactory(
-            "openPerspectiveDialog") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-			if (window == null) {
-				throw new IllegalArgumentException();
-			}
-			
-			WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.perspectives.showPerspective", window); //$NON-NLS-1$
-			action.setId(getId());
-	        action.setText(WorkbenchMessages.OpenPerspectiveDialogAction_text);
-	        action.setToolTipText(WorkbenchMessages.OpenPerspectiveDialogAction_tooltip);
-	        action.setImageDescriptor(WorkbenchImages.getImageDescriptor(
-	              IWorkbenchGraphicConstants.IMG_ETOOL_NEW_PAGE));
-
-			return action;
-        }
-    };
-    
-    /**
-     * Workbench action (id "newEditor"): Open a new editor on the active editor's input. 
-     * This action maintains its enablement state.
-     *
-     * @since 3.1
-     */
-    public static final ActionFactory NEW_EDITOR = new ActionFactory(
-            "newEditor") {//$NON-NLS-1$
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
-         */
-        public IWorkbenchAction create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-
-            WorkbenchCommandAction action = new WorkbenchCommandAction("org.eclipse.ui.window.newEditor", window); //$NON-NLS-1$
-			action.setId(getId());			
-			action.setText(WorkbenchMessages.NewEditorAction_text);
-			action.setToolTipText(WorkbenchMessages.NewEditorAction_tooltip);
-
-			return action;
-        }
-    };
-    
-    /**
-	 * Workbench action (id "toggleCoolbar"): Toggle the visibility of the
-	 * coolbar and perspective switcher. This will only enable visibility of the
-	 * coolbar and perspective bar if the window advisor creating the window
-	 * allowed for their visibility initially.
-	 * 
-	 * @since 3.3
-	 */
-	public static final ActionFactory TOGGLE_COOLBAR = new ActionFactory(
-			"toggleCoolbar") { //$NON-NLS-1$
-
-		public IWorkbenchAction create(IWorkbenchWindow window) {
-			if (window == null) {
-				throw new IllegalArgumentException();
-			}
-			WorkbenchCommandAction action = new WorkbenchCommandAction(
-					"org.eclipse.ui.ToggleCoolbarAction", window); //$NON-NLS-1$
-			action.setId(getId());
-			// set the default text - this will be updated by the handler
-			action.setText(WorkbenchMessages.ToggleCoolbarVisibilityAction_hide_text);
-			action.setToolTipText(WorkbenchMessages.ToggleCoolbarVisibilityAction_toolTip);
-			return action;
-		}
-	};
-    
-    /**
-	 * Establishes bi-direction connections between the forward and backward
-	 * actions of a cycle pair.
-	 * <p>
-	 * Example usage:
-	 * 
-	 * <pre>
-	 * ActionFactory.IWorkbenchAction nextEditorAction = ActionFactory.NEXT_EDITOR
-	 * 		.create(window);
-	 * ActionFactory.IWorkbenchAction previousEditorAction = ActionFactory.PREVIOUS_EDITOR
-	 * 		.create(window);
-	 * ActionFactory.linkCycleActionPair(nextEditorAction, previousEditorAction);
-	 * </pre>
-	 * 
-	 * </p>
-	 * 
-	 * @param next
-	 *            the action that moves forward
-	 * @param previous
-	 *            the action that moves backward
-	 */
-    public static void linkCycleActionPair(IWorkbenchAction next,
-            IWorkbenchAction previous) {
-    }
-
-    /**
-     * Id of actions created by this action factory.
-     */
-    private final String actionId;
-
-    /**
-     * Creates a new workbench action factory with the given id.
-     * 
-     * @param actionId
-     *            the id of actions created by this action factory
-     */
-    protected ActionFactory(String actionId) {
-        this.actionId = actionId;
-    }
-
-    /**
-     * Creates a new standard action for the given workbench window. The action
-     * has an id as specified by the particular factory.
-     * <p>
-     * Actions automatically register listeners against the workbench window so
-     * that they can keep their enablement state up to date. Ordinarily, the
-     * window's references to these listeners will be dropped automatically
-     * when the window closes. However, if the client needs to get rid of an
-     * action while the window is still open, the client must call
-     * {@link IWorkbenchAction#dispose dispose}to give the action an
-     * opportunity to deregister its listeners and to perform any other
-     * cleanup.
-     * </p>
-     * 
-     * @param window
-     *            the workbench window
-     * @return the workbench action
-     */
-    public abstract IWorkbenchAction create(IWorkbenchWindow window);
-
-    /**
-     * Returns the id of this action factory.
-     * 
-     * @return the id of actions created by this action factory
-     */
-    public String getId() {
-        return actionId;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionGroup.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionGroup.java
deleted file mode 100644
index 6c4030a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ActionGroup.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.ui.IActionBars;
-
-/**
- * An <code>ActionGroup</code> represents a group of actions
- * which are added to a context menu, or the action bars of a part, together.
- * The group is given a context which can be used to determine which actions
- * are added, and what their enabled state should be.
- * <p>
- * This class is intended only as a convenience for managing groups of actions.
- * Clients are not required to use this class in order to add actions to context
- * menus or action bars.
- * </p>
- * <p>
- * Clients should subclass this class and extend or override the appropriate fill methods.
- * </p>
- * 
- * @since 2.0
- */
-public abstract class ActionGroup {
-
-    /**
-     * The action context, used to determine which actions are added,
-     * and what their enabled state should be.
-     */
-    private ActionContext context;
-
-    /** 
-     * Returns the context used to determine which actions are added,
-     * and what their enabled state should be.
-     */
-    public ActionContext getContext() {
-        return context;
-    }
-
-    /** 
-     * Sets the context used to determine which actions are added,
-     * and what their enabled state should be.
-     * 
-     * @param context the context to use
-     */
-    public void setContext(ActionContext context) {
-        this.context = context;
-    }
-
-    /** 
-     * Adds the applicable actions to a context menu,
-     * based on the state of the <code>ActionContext</code>.
-     * <p>
-     * The default implementation does nothing.  
-     * Subclasses may override or extend this method.
-     * </p>
-     * 
-     * @param menu the context menu manager
-     */
-    public void fillContextMenu(IMenuManager menu) {
-        // do nothing
-    }
-
-    /** 
-     * Adds the applicable actions to a part's action bars,
-     * including setting any global action handlers.
-     * <p>
-     * The default implementation does nothing.
-     * Subclasses may override or extend this method.
-     * </p>
-     * 
-     * @param actionBars the part's action bars
-     */
-    public void fillActionBars(IActionBars actionBars) {
-        // do nothing
-    }
-
-    /**
-     * Updates the state of the actions added to the action bars,
-     * including any global action handlers,
-     * based on the state of the <code>ActionContext</code>.
-     * <p>
-     * The default implementation does nothing.
-     * Subclasses may override or extend this method.
-     * </p>
-     */
-    public void updateActionBars() {
-        // do nothing
-    }
-
-    /** 
-     * This method is called by the user of an action group to signal that the group is
-     * no longer needed. Subclasses typically implement this method to deregister
-     * any listeners or to free other resources.
-     * <p>
-     * The default implementation calls <code>setContext(null)</code>.
-     * Subclasses may extend this method.
-     * </p>
-     */
-    public void dispose() {
-        setContext(null);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseNewWizardMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseNewWizardMenu.java
deleted file mode 100644
index e83cc63..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseNewWizardMenu.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Andreas Buchen <andreas.buchen@sap.com> - Bug 206584
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.actions.NewWizardShortcutAction;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * A <code>BaseNewWizardMenu</code> is used to populate a menu manager with
- * New Wizard actions for the current perspective's new wizard shortcuts,
- * including an Other... action to open the new wizard dialog.
- * 
- * @since 3.1
- */
-public class BaseNewWizardMenu extends CompoundContributionItem {
-    /*
-     * @issue Should be possible to implement this class entirely using public
-     * API. Cases to be fixed: WorkbenchWindow, NewWizardShortcutAction
-     *  Suggestions:
-     * - add the ability to update the submenus of a window
-     */
-
-    private final Map actions = new HashMap(21);
-
-    private final IExtensionChangeHandler configListener = new IExtensionChangeHandler() {
-
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-         */
-        public void removeExtension(IExtension source, Object[] objects) {
-            for (int i = 0; i < objects.length; i++) {
-                if (objects[i] instanceof NewWizardShortcutAction) {
-                    actions.values().remove(objects[i]);
-                }
-            }
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-         */
-        public void addExtension(IExtensionTracker tracker, IExtension extension) {
-            // Do nothing
-        }
-    };
-
-    /**
-     * TODO: should this be done with an addition listener?
-     */
-    private final IRegistryChangeListener registryListener = new IRegistryChangeListener() {
-
-        public void registryChanged(IRegistryChangeEvent event) {
-            // reset the reader.
-            // TODO This is expensive.  Can we be more selective?
-            if (getParent() != null) {
-                getParent().markDirty();
-            }
-        }
-
-    };
-
-    private ActionFactory.IWorkbenchAction showDlgAction;
-
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Creates a new wizard shortcut menu for the IDE.
-     * 
-     * @param window
-     *            the window containing the menu
-     * @param id
-     *            the contribution item identifier, or <code>null</code>
-     */
-    public BaseNewWizardMenu(IWorkbenchWindow window, String id) {
-        super(id);
-        Assert.isNotNull(window);
-        this.workbenchWindow = window;
-        showDlgAction = ActionFactory.NEW.create(window);
-        registerListeners();
-        // indicate that a new wizards submenu has been created
-        ((WorkbenchWindow) window)
-                .addSubmenu(WorkbenchWindow.NEW_WIZARD_SUBMENU);
-    }
-
-    /**
-     * Adds the items to show to the given list.
-     * 
-     * @param list the list to add items to
-     */
-    protected void addItems(List list) {
-        if (addShortcuts(list)) {
-            list.add(new Separator());
-        }
-        list.add(new ActionContributionItem(getShowDialogAction()));
-    }
-
-    /**
-     * Adds the new wizard shortcuts for the current perspective to the given list.
-     * 
-     * @param list the list to add items to
-     * @return <code>true</code> if any items were added, <code>false</code> if none were added
-     */
-    protected boolean addShortcuts(List list) {
-        boolean added = false;
-        IWorkbenchPage page = workbenchWindow.getActivePage();
-        if (page != null) {
-            String[] wizardIds = page.getNewWizardShortcuts();
-            for (int i = 0; i < wizardIds.length; i++) {
-                IAction action = getAction(wizardIds[i]);
-                if (action != null) {
-                    if (!WorkbenchActivityHelper.filterItem(action)) {
-                        list.add(new ActionContributionItem(action));
-                        added = true;
-                    }
-                }
-            }
-        }
-        return added;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#dispose()
-     */
-    public void dispose() {
-        if (workbenchWindow != null) {
-            super.dispose();
-            unregisterListeners();
-            showDlgAction.dispose();
-            showDlgAction = null;
-            workbenchWindow = null;
-        }
-    }
-
-    /*
-     * (non-Javadoc) Returns the action for the given wizard id, or null if not
-     * found.
-     */
-    private IAction getAction(String id) {
-        // Keep a cache, rather than creating a new action each time,
-        // so that image caching in ActionContributionItem works.
-        IAction action = (IAction) actions.get(id);
-        if (action == null) {
-            IWizardDescriptor wizardDesc = WorkbenchPlugin.getDefault()
-					.getNewWizardRegistry().findWizard(id);
-            if (wizardDesc != null) {
-                action = new NewWizardShortcutAction(workbenchWindow,
-						wizardDesc);
-				actions.put(id, action);
-				IConfigurationElement element = (IConfigurationElement) Util
-						.getAdapter(wizardDesc, IConfigurationElement.class);
-				if (element != null) {
-					workbenchWindow.getExtensionTracker().registerObject(
-							element.getDeclaringExtension(), action,
-							IExtensionTracker.REF_WEAK);
-				}
-            }
-        }
-        return action;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
-     */
-    protected IContributionItem[] getContributionItems() {
-        ArrayList list = new ArrayList();
-        if (workbenchWindow != null && workbenchWindow.getActivePage() != null
-                && workbenchWindow.getActivePage().getPerspective() != null) {
-            addItems(list);
-        } else {
-            String text = WorkbenchMessages.Workbench_noApplicableItems;
-            Action dummyAction = new Action(text) {
-                // dummy inner class; no methods
-            };
-            dummyAction.setEnabled(false);
-            list.add(new ActionContributionItem(dummyAction));
-        }
-        return (IContributionItem[]) list.toArray(new IContributionItem[list.size()]);
-    }
-
-    /**
-     * Returns the "Other..." action, used to show the new wizards dialog.
-     * 
-     * @return the action used to show the new wizards dialog
-     */
-    protected IAction getShowDialogAction() {
-        return showDlgAction;
-    }
-
-    /**
-     * Returns the window in which this menu appears.
-     * 
-     * @return the window in which this menu appears
-     */
-    protected IWorkbenchWindow getWindow() {
-        return workbenchWindow;
-    }
-
-    /**
-     * Registers listeners.
-     * 
-     * @since 3.1
-     */
-    private void registerListeners() {
-        Platform.getExtensionRegistry().addRegistryChangeListener(
-                registryListener);
-        workbenchWindow.getExtensionTracker().registerHandler(
-				configListener,  null);
-    }
-
-    /**
-     * Returns whether the new wizards registry has a non-empty category with
-     * the given identifier.
-     * 
-     * @param categoryId
-     *            the identifier for the category
-     * @return <code>true</code> if there is a non-empty category with the
-     *         given identifier, <code>false</code> otherwise
-     */
-    protected boolean registryHasCategory(String categoryId) {
-    	return WorkbenchPlugin.getDefault().getNewWizardRegistry()
-				.findCategory(categoryId) != null;
-    }
-
-    /**
-     * Unregisters listeners.
-     * 
-     * @since 3.1
-     */
-    private void unregisterListeners() {
-        Platform.getExtensionRegistry().removeRegistryChangeListener(
-                registryListener);
-        workbenchWindow.getExtensionTracker().unregisterHandler(configListener);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseSelectionListenerAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseSelectionListenerAction.java
deleted file mode 100644
index aa4a718..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/BaseSelectionListenerAction.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.Action;
-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.swt.widgets.Event;
-
-/**
- * The abstract superclass for actions that listen to selection change events.
- * This implementation tracks the current selection (see 
- * <code>getStructuredSelection</code>) and provides a convenient place to 
- * monitor selection changes that could affect the availability of the action.
- * <p>
- * Subclasses must implement the following <code>IAction</code> method:
- * <ul>
- *   <li><code>run</code> - to do the action's work</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend the <code>updateSelection</code> method to update
- * the action determine its availability based on the current selection.
- * </p>
- * <p>
- * The object instantiating the subclass is responsible for registering
- * the instance with a selection provider. Alternatively, the object can
- * notify the subclass instance directly of a selection change using the
- * methods:
- * <ul>
- *   <li><code>selectionChanged(IStructuredSelection)</code> - passing the selection</li>
- *   <li><code>selectionChanged(ISelectionChangedEvent)</code> - passing the selection change event</li>
- * </ul>
- * </p>
- * @since 3.0
- */
-public abstract class BaseSelectionListenerAction extends Action implements
-        ISelectionChangedListener {
-    /**
-     * The current selection.
-     */
-    private IStructuredSelection selection = new StructuredSelection();
-
-    /**
-     * Running flag:  <code>true</code> iff the action is running.  
-     */
-    private boolean running = false;
-
-    /**
-     * The deferred selection.  Any selection change that occurs
-     * while the action is running is held here until the run is complete.
-     */
-    private IStructuredSelection deferredSelection = null;
-
-    /**
-     * Creates a new action with the given text.
-     *
-     * @param text the string used as the text for the action, 
-     *   or <code>null</code> if there is no text
-     */
-    protected BaseSelectionListenerAction(String text) {
-        super(text);
-    }
-
-    /**
-     * Clears any cached state associated with the selection.
-     * Called when the selection changes.
-     * <p>
-     * The <code>BaseSelectionListenerAction</code> implementation of this method
-     * does nothing. Subclasses may override.
-     * </p>
-     */
-    protected void clearCache() {
-        // do nothing
-    }
-
-    /**
-     * Returns the current structured selection in the workbench, or an empty
-     * selection if nothing is selected or if selection does not include
-     * objects (for example, raw text).
-     *
-     * @return the current structured selection in the workbench
-     */
-    public IStructuredSelection getStructuredSelection() {
-        return selection;
-    }
-
-    /**
-     * Notifies this action that the given structured selection has changed.
-     * <p>
-     * The <code>BaseSelectionListenerAction</code> implementation of this method
-     * records the given selection for future reference and calls
-     * <code>updateSelection</code>, updating the enable state of this action
-     * based on the outcome. Subclasses should override <code>updateSelection</code>
-     * to react to selection changes.
-     * </p>
-     *
-     * @param selection the new selection
-     */
-    public final void selectionChanged(IStructuredSelection selection) {
-        // Ignore any incoming selection change while the action is running,
-        // otherwise the action can have unpredictable results, including lost
-        // data, if it operates on a different selection than what it initially
-        // validated.
-        // See Bug 60606 [Navigator] (data loss) Navigator deletes/moves the wrong file
-        if (running) {
-            deferredSelection = selection;
-            return;
-        }
-        this.selection = selection;
-        clearCache();
-        setEnabled(updateSelection(selection));
-    }
-
-    /**
-     * The <code>BaseSelectionListenerAction</code> implementation of this 
-     * <code>ISelectionChangedListener</code> method calls 
-     * <code>selectionChanged(IStructuredSelection)</code> assuming the selection is
-     * a structured one. Subclasses should override the <code>updateSelection</code>
-     * method to react to selection changes.
-     */
-    public final void selectionChanged(SelectionChangedEvent event) {
-        ISelection selection = event.getSelection();
-        if (selection instanceof IStructuredSelection) {
-			selectionChanged((IStructuredSelection) selection);
-		} else {
-			selectionChanged(StructuredSelection.EMPTY);
-		}
-    }
-
-    /**
-     * Updates this action in response to the given selection.
-     * <p>
-     * The <code>BaseSelectionListenerAction</code> implementation of this method
-     * returns <code>true</code>. Subclasses may extend to react to selection
-     * changes; however, if the super method returns <code>false</code>, the
-     * overriding method must also return <code>false</code>.
-     * </p>
-     *
-     * @param selection the new selection
-     * @return <code>true</code> if the action should be enabled for this selection,
-     *   and <code>false</code> otherwise
-     */
-    protected boolean updateSelection(IStructuredSelection selection) {
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.Action#runWithEvent(org.eclipse.swt.widgets.Event)
-     */
-    public void runWithEvent(Event event) {
-        // Set the running flag during the run so that selection changes are deferred.
-        // See selectionChanged(IStructuredSelection) for more details.
-        running = true;
-        try {
-            run();
-        } finally {
-            running = false;
-            IStructuredSelection s = deferredSelection;
-            deferredSelection = null;
-            if (s != null) {
-                selectionChanged(s);
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CommandNotMappedException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CommandNotMappedException.java
deleted file mode 100644
index 6bdf306..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CommandNotMappedException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import org.eclipse.core.commands.common.CommandException;
-
-/**
- * Indicates that an action has no command mapping. The declaration can be
- * updated to include a definitionId.
- * 
- * @since 3.3
- */
-public class CommandNotMappedException extends CommandException {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * @param message
-	 */
-	public CommandNotMappedException(String message) {
-		super(message);
-	}
-
-	/**
-	 * @param message
-	 * @param cause
-	 */
-	public CommandNotMappedException(String message, Throwable cause) {
-		super(message, cause);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CompoundContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CompoundContributionItem.java
deleted file mode 100644
index 61299d1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/CompoundContributionItem.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-
-/**
- * A compound contribution is a contribution item consisting of a
- * dynamic list of contribution items.
- * 
- * @since 3.1
- */
-public abstract class CompoundContributionItem extends ContributionItem {
-
-    private boolean dirty = true;
-
-    private IMenuListener menuListener = new IMenuListener() {
-        public void menuAboutToShow(IMenuManager manager) {
-            manager.markDirty();
-            dirty = true;
-        }
-    };
-    
-    private IContributionItem[] oldItems;
-    
-    /**
-     * Creates a compound contribution item with a <code>null</code> id.
-     */
-    protected CompoundContributionItem() {
-        super();
-    }
-
-    /**
-     * Creates a compound contribution item with the given (optional) id.
-     *
-     * @param id the contribution item identifier, or <code>null</code>
-     */
-    protected CompoundContributionItem(String id) {
-        super(id);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Menu, int)
-     */
-    public void fill(Menu menu, int index) {
-        if (index == -1) {
-			index = menu.getItemCount();
-		}
-        if (!dirty && menu.getParentItem() != null) {
-            // insert a dummy item so that the parent item is not disabled
-            new MenuItem(menu, SWT.NONE, index);
-            return;
-        }
-        
-        IContributionItem[] items = getContributionItemsToFill();
-        for (int i = 0; i < items.length; i++) {
-            IContributionItem item = items[i];
-            int oldItemCount = menu.getItemCount();
-            if (item.isVisible()) {
-                item.fill(menu, index);
-            }
-            int newItemCount = menu.getItemCount();
-            int numAdded = newItemCount - oldItemCount;
-            index += numAdded;
-        }
-        dirty = false;
-    }
-    
-    /**
-	 * Return a list of contributions items that will replace this item in the
-	 * parent manager. The list must contain new contribution items every call
-	 * since the old ones will be disposed.
-	 * 
-	 * @return an array list of items to display. Must not be <code>null</code>.
-	 */
-    protected abstract IContributionItem[] getContributionItems();
-    
-    private IContributionItem[] getContributionItemsToFill() {
-        if (oldItems != null) {
-            for (int i = 0; i < oldItems.length; i++) {
-                IContributionItem oldItem = oldItems[i];
-                oldItem.dispose();
-            }
-            oldItems = null;
-        }
-        oldItems = getContributionItems();
-        return oldItems;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionItem#isDirty()
-     */
-    public boolean isDirty() {
-        return dirty;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionItem#isDynamic()
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionItem#setParent(org.eclipse.jface.action.IContributionManager)
-     */
-    public void setParent(IContributionManager parent) {
-        if (getParent() instanceof IMenuManager) {
-            IMenuManager menuMgr = (IMenuManager) getParent();
-            menuMgr.removeMenuListener(menuListener);
-        }
-        if (parent instanceof IMenuManager) {
-            IMenuManager menuMgr = (IMenuManager) parent;
-            menuMgr.addMenuListener(menuListener);
-        }
-        super.setParent(parent);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributedAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributedAction.java
deleted file mode 100644
index 54c060d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributedAction.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import java.util.Collections;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IHandler2;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.actions.CommandAction;
-import org.eclipse.ui.internal.handlers.ActionDelegateHandlerProxy;
-import org.eclipse.ui.internal.handlers.HandlerService;
-import org.eclipse.ui.internal.handlers.IActionCommandMappingService;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.part.MultiPageEditorSite;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * For a declarative editor action, see if we can link it to a command.
- * <p>
- * This is a legacy bridge class, and should not be used outside of the Eclipse
- * SDK. Please use menu contributions to display a command in a menu or toolbar.
- * </p>
- * <p>
- * <b>Note:</b> Clients may instantiate.
- * </p>
- * 
- * @since 3.3
- */
-public final class ContributedAction extends CommandAction {
-	private IEvaluationContext appContext;
-
-	private IHandler partHandler;
-
-	private boolean localHandler = false;
-
-	private IPartListener partListener;
-
-	/**
-	 * Create an action that can call a command.
-	 * 
-	 * @param locator
-	 *            The appropriate service locator to use. If you use a part site
-	 *            as your locator, this action will be tied to your part.
-	 * @param element
-	 *            the contributed action element
-	 */
-	public ContributedAction(IServiceLocator locator,
-			IConfigurationElement element) throws CommandNotMappedException {
-
-		String actionId = element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-		String commandId = element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_DEFINITION_ID);
-
-		// TODO throw some more exceptions here :-)
-
-		String contributionId = null;
-		if (commandId == null) {
-
-			Object obj = element.getParent();
-			if (obj instanceof IConfigurationElement) {
-				contributionId = ((IConfigurationElement) obj)
-						.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-				if (contributionId == null) {
-					throw new CommandNotMappedException("Action " //$NON-NLS-1$
-							+ actionId + " configuration element invalid"); //$NON-NLS-1$
-				}
-			}
-			// legacy bridge part
-			IActionCommandMappingService mapping = (IActionCommandMappingService) locator
-					.getService(IActionCommandMappingService.class);
-			if (mapping == null) {
-				throw new CommandNotMappedException(
-						"No action mapping service available"); //$NON-NLS-1$
-			}
-
-			commandId = mapping.getCommandId(mapping.getGeneratedCommandId(
-					contributionId, actionId));
-		}
-		// what, still no command?
-		if (commandId == null) {
-			throw new CommandNotMappedException("Action " + actionId //$NON-NLS-1$
-					+ " in contribution " + contributionId //$NON-NLS-1$
-					+ " not mapped to a command"); //$NON-NLS-1$
-		}
-
-		init(locator, commandId, null);
-
-		if (locator instanceof IWorkbenchPartSite) {
-			updateSiteAssociations((IWorkbenchPartSite) locator, commandId,
-					actionId, element);
-		}
-
-		setId(actionId);
-	}
-
-	private void updateSiteAssociations(IWorkbenchPartSite site,
-			String commandId, String actionId, IConfigurationElement element) {
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) site
-				.getService(IWorkbenchLocationService.class);
-		IWorkbench workbench = wls.getWorkbench();
-		IWorkbenchWindow window = wls.getWorkbenchWindow();
-		IHandlerService serv = (IHandlerService) workbench
-				.getService(IHandlerService.class);
-		appContext = new EvaluationContext(serv.getCurrentState(),
-				Collections.EMPTY_LIST);
-
-		// set up the appContext as we would want it.
-		appContext.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME,
-				StructuredSelection.EMPTY);
-		appContext.addVariable(ISources.ACTIVE_PART_NAME, site.getPart());
-		appContext.addVariable(ISources.ACTIVE_PART_ID_NAME, site.getId());
-		appContext.addVariable(ISources.ACTIVE_SITE_NAME, site);
-		if (site instanceof IEditorSite) {
-			appContext.addVariable(ISources.ACTIVE_EDITOR_NAME, site.getPart());
-			appContext
-					.addVariable(ISources.ACTIVE_EDITOR_ID_NAME, site.getId());
-		}
-		appContext.addVariable(ISources.ACTIVE_WORKBENCH_WINDOW_NAME, window);
-		appContext.addVariable(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME,
-				window.getShell());
-
-		HandlerService realService = (HandlerService) serv;
-		partHandler = realService.findHandler(commandId, appContext);
-		if (partHandler == null) {
-			localHandler = true;
-			// if we can't find the handler, then at least we can
-			// call the action delegate run method
-			partHandler = new ActionDelegateHandlerProxy(element,
-					IWorkbenchRegistryConstants.ATT_CLASS, actionId,
-					getParameterizedCommand(), site.getWorkbenchWindow(), null,
-					null, null);
-		}
-		if (site instanceof MultiPageEditorSite) {
-			IHandlerService siteServ = (IHandlerService) site
-					.getService(IHandlerService.class);
-			siteServ.activateHandler(commandId, partHandler);
-		}
-
-		if (getParameterizedCommand() != null) {
-			getParameterizedCommand().getCommand().removeCommandListener(
-					getCommandListener());
-		}
-		site.getPage().addPartListener(getPartListener());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.actions.CommandAction#runWithEvent(org.eclipse.swt.widgets.Event)
-	 */
-	public void runWithEvent(Event event) {
-		if (partHandler != null && getParameterizedCommand() != null) {
-			IHandler oldHandler = getParameterizedCommand().getCommand()
-					.getHandler();
-			try {
-				getParameterizedCommand().getCommand().setHandler(partHandler);
-				getParameterizedCommand().executeWithChecks(event, appContext);
-			} catch (ExecutionException e) {
-				// TODO some logging, perhaps?
-			} catch (NotDefinedException e) {
-				// TODO some logging, perhaps?
-			} catch (NotEnabledException e) {
-				// TODO some logging, perhaps?
-			} catch (NotHandledException e) {
-				// TODO some logging, perhaps?
-			} finally {
-				getParameterizedCommand().getCommand().setHandler(oldHandler);
-			}
-		} else {
-			super.runWithEvent(event);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.Action#isEnabled()
-	 */
-	public boolean isEnabled() {
-		if (partHandler != null) {
-			if (partHandler instanceof IHandler2) {
-				((IHandler2) partHandler).setEnabled(appContext);
-			}
-			return partHandler.isEnabled();
-		}
-		return false;
-	}
-
-	private IPartListener getPartListener() {
-		if (partListener == null) {
-			final IWorkbenchPartSite site = (IWorkbenchPartSite) appContext
-					.getVariable(ISources.ACTIVE_SITE_NAME);
-
-			final IWorkbenchPart currentPart;
-			if (site instanceof MultiPageEditorSite) {
-				currentPart = ((MultiPageEditorSite) site).getMultiPageEditor();
-			} else {
-				currentPart = site.getPart();
-			}
-
-			partListener = new IPartListener() {
-				public void partActivated(IWorkbenchPart part) {
-				}
-
-				public void partBroughtToTop(IWorkbenchPart part) {
-				}
-
-				public void partClosed(IWorkbenchPart part) {
-					if (part == currentPart) {
-						ContributedAction.this.disposeAction();
-					}
-				}
-
-				public void partDeactivated(IWorkbenchPart part) {
-				}
-
-				public void partOpened(IWorkbenchPart part) {
-				}
-			};
-		}
-		return partListener;
-	}
-
-	// TODO make public in 3.4
-	private void disposeAction() {
-		if (appContext != null) {
-			if (localHandler) {
-				partHandler.dispose();
-			}
-			if (partListener != null) {
-				IWorkbenchPartSite site = (IWorkbenchPartSite) appContext
-						.getVariable(ISources.ACTIVE_SITE_NAME);
-				site.getPage().removePartListener(partListener);
-				partListener = null;
-			}
-			appContext = null;
-			partHandler = null;
-		}
-		dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributionItemFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributionItemFactory.java
deleted file mode 100644
index 989e8dd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ContributionItemFactory.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.ChangeToPerspectiveMenu;
-import org.eclipse.ui.internal.PinEditorAction;
-import org.eclipse.ui.internal.ReopenEditorMenu;
-import org.eclipse.ui.internal.ShowInMenu;
-import org.eclipse.ui.internal.ShowViewMenu;
-import org.eclipse.ui.internal.SwitchToWindowMenu;
-import org.eclipse.ui.internal.actions.HelpSearchContributionItem;
-import org.eclipse.ui.internal.actions.PinEditorContributionItem;
-
-/**
- * Access to standard contribution items provided by the workbench.
- * <p>
- * Most of the functionality of this class is provided by
- * static methods and fields.
- * Example usage:
- * <pre>
- * MenuManager menu = ...;
- * IContributionItem reEdit
- * 	  = ContributionItemFactory.REOPEN_EDITORS.create(window);
- * menu.add(reEdit);
- * </pre>
- * </p>
- * <p>
- * Clients may declare subclasses that provide additional application-specific
- * contribution item factories.
- * </p>
- * 
- * @since 3.0
- */
-public abstract class ContributionItemFactory {
-
-    /**
-     * Id of contribution items created by this factory.
-     */
-    private final String contributionItemId;
-
-    /**
-     * Creates a new workbench contribution item factory with the given id.
-     * 
-     * @param contributionItemId the id of contribution items created by this factory
-     */
-    protected ContributionItemFactory(String contributionItemId) {
-        this.contributionItemId = contributionItemId;
-    }
-
-    /**
-     * Creates a new standard contribution item for the given workbench window.
-     * <p>
-     * A typical contribution item automatically registers listeners against the
-     * workbench window so that it can keep its enablement state up to date.
-     * Ordinarily, the window's references to these listeners will be dropped
-     * automatically when the window closes. However, if the client needs to get
-     * rid of a contribution item while the window is still open, the client must
-     * call IContributionItem#dispose to give the item an
-     * opportunity to deregister its listeners and to perform any other cleanup.
-     * </p>
-     * 
-     * @param window the workbench window
-     * @return the workbench contribution item
-     */
-    public abstract IContributionItem create(IWorkbenchWindow window);
-
-    /**
-     * Returns the id of this contribution item factory.
-     * 
-     * @return the id of contribution items created by this factory
-     */
-    public String getId() {
-        return contributionItemId;
-    }
-
-    /**
-     * Workbench action (id "pinEditor"): Toggle whether the editor is pinned.
-     * This action maintains its enablement state.
-     */
-    public static final ContributionItemFactory PIN_EDITOR = new ContributionItemFactory(
-            "pinEditor") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            PinEditorAction action = new PinEditorAction(window);
-            action.setId(getId());
-            return new PinEditorContributionItem(action, window);
-        }
-    };
-
-    /**
-     * Workbench contribution item (id "openWindows"): A list of windows
-     * currently open in the workbench. Selecting one of the items makes the
-     * corresponding window the active window.
-     * This action dynamically maintains the list of windows.
-     */
-    public static final ContributionItemFactory OPEN_WINDOWS = new ContributionItemFactory(
-            "openWindows") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            return new SwitchToWindowMenu(window, getId(), true);
-        }
-    };
-
-    /**
-     * Workbench contribution item (id "viewsShortlist"): A list of views
-     * available to be opened in the window, arranged as a shortlist of 
-     * promising views and an "Other" subitem. Selecting
-     * one of the items opens the corresponding view in the active window.
-     * This action dynamically maintains the view shortlist.
-     */
-    public static final ContributionItemFactory VIEWS_SHORTLIST = new ContributionItemFactory(
-            "viewsShortlist") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            return new ShowViewMenu(window, getId());
-        }
-    };
-
-    /**
-     * Workbench contribution item (id "viewsShowIn"): A list of views
-     * available to be opened in the window, arranged as a list of 
-     * alternate views to show the same item currently selected. Selecting
-     * one of the items opens the corresponding view in the active window.
-     * This action dynamically maintains the view list.
-     */
-    public static final ContributionItemFactory VIEWS_SHOW_IN = new ContributionItemFactory(
-            "viewsShowIn") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            
-            ShowInMenu showInMenu = new ShowInMenu();
-            showInMenu.setId(getId());
-            showInMenu.initialize(window);
-			return showInMenu;
-        }
-    };
-
-    /**
-     * Workbench contribution item (id "reopenEditors"): A list of recent
-     * editors (with inputs) available to be reopened in the window. Selecting
-     * one of the items reopens the corresponding editor on its input in the
-     * active window. This action dynamically maintains the list of editors.
-     */
-    public static final ContributionItemFactory REOPEN_EDITORS = new ContributionItemFactory(
-            "reopenEditors") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            return new ReopenEditorMenu(window, getId(), true);
-        }
-    };
-
-    /**
-     * Workbench contribution item (id "perspectivesShortlist"): A list of
-     * perspectives available to be opened, arranged as a shortlist of 
-     * promising perspectives and an "Other" subitem. Selecting
-     * one of the items makes the corresponding perspective active. Should a 
-     * new perspective need to be opened, a workbench user preference controls
-     * whether the prespective is opened in the active window or a new window.
-     * This action dynamically maintains the perspectives shortlist.
-     */
-    public static final ContributionItemFactory PERSPECTIVES_SHORTLIST = new ContributionItemFactory(
-            "perspectivesShortlist") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            return new ChangeToPerspectiveMenu(window, getId());
-        }
-    };
-    
-    /**
-     * Workbench contribution item (id "newWizardShortlist"): A list of
-     * new item wizards available to be opened, arranged as a shortlist of 
-     * promising new item wizards and an "Other" subitem. Selecting
-     * one of the items invokes the corresponding new item wizard. 
-     * This action dynamically maintains the new item wizard shortlist.
-     * @since 3.1
-     */
-    public static final ContributionItemFactory NEW_WIZARD_SHORTLIST = new ContributionItemFactory(
-            "newWizardShortlist") { //$NON-NLS-1$
-        /* (non-javadoc) method declared on ContributionItemFactory */
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            return new BaseNewWizardMenu(window, getId());
-        }
-    };
-    
-    /**
-     * Workbench contribution item (id "helpSearch"): An editable field
-     * for entering help search queries.
-     * @since 3.1
-     */
-    public static final ContributionItemFactory HELP_SEARCH = new ContributionItemFactory(
-            "helpSearch") {//$NON-NLS-1$
-        public IContributionItem create(IWorkbenchWindow window) {
-            if (window == null) {
-                throw new IllegalArgumentException();
-            }
-            return new HelpSearchContributionItem(window, getId());
-        }
-    };
-
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ExportResourcesAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ExportResourcesAction.java
deleted file mode 100644
index 3884282..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ExportResourcesAction.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Action representing a generic export operation.
- * <p>
- * This class may be instantiated. It is not intended to be subclassed.
- * </p>
- * <p>
- * This method automatically registers listeners so that it can keep its
- * enablement state up to date. Ordinarily, the window's references to these
- * listeners will be dropped automatically when the window closes. However,
- * if the client needs to get rid of an action while the window is still open,
- * the client must call IWorkbenchAction#dispose to give the
- * action an opportunity to deregister its listeners and to perform any other
- * cleanup.
- * </p>
- * <p>
- * Note: Despite the name, an export operation can deal with things other than
- * resources; the current name was retained for historical reasons.
- * </p>
- * 
- * @since 2.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ExportResourcesAction extends BaseSelectionListenerAction
-        implements ActionFactory.IWorkbenchAction {
-    /**
-     * Reference to the WorkbenchCommandAction that executes the Export Wizard.
-     */
-    private ActionFactory.IWorkbenchAction action;
-
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param window the window
-     */
-    public ExportResourcesAction(IWorkbenchWindow window) {
-        this(window, WorkbenchMessages.ExportResourcesAction_text);
-    }
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param window the window
-     * @param label the label 
-     */
-    public ExportResourcesAction(IWorkbenchWindow window, String label) {
-        super(label);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        
-        this.workbenchWindow = window;
-        action = ActionFactory.EXPORT.create(window);
-        
-        setText(action.getText()); 
-        setToolTipText(action.getToolTipText());
-        setId(action.getId());
-        setActionDefinitionId(action.getActionDefinitionId());
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.EXPORT_ACTION);
-        setImageDescriptor(action.getImageDescriptor());
-    }
-
-    /**
-     * Create a new instance of this class
-     * 
-     * @param workbench the workbench
-     * @deprecated use the constructor <code>ExportResourcesAction(IWorkbenchWindow)</code>
-     */
-    public ExportResourcesAction(IWorkbench workbench) {
-        this(workbench.getActiveWorkbenchWindow());
-    }
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param workbench the workbench 
-     * @param label the label
-     * @deprecated use the constructor <code>ExportResourcesAction(IWorkbenchWindow, String)</code>
-     */
-    public ExportResourcesAction(IWorkbench workbench, String label) {
-        this(workbench.getActiveWorkbenchWindow(), label);
-    }
-
-    /**
-     * Invoke the Export wizards selection Wizard.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        action.run();
-    }
-
-    /**
-     * Sets the current selection. 
-     * In for backwards compatability. Use selectionChanged() instead.
-     * @param selection the new selection
-     * @deprecated
-     */
-    public void setSelection(IStructuredSelection selection) {
-        selectionChanged(selection);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction#dispose()
-	 */
-	public void dispose() {
-		workbenchWindow = null;
-		if (action!=null) {
-			action.dispose();
-		}
-		action = null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ImportResourcesAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ImportResourcesAction.java
deleted file mode 100644
index 5439c7e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/ImportResourcesAction.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Action representing a generic import operation.
- * <p>
- * This class may be instantiated. It is not intended to be subclassed.
- * </p>
- * <p>
- * This method automatically registers listeners so that it can keep its
- * enablement state up to date. Ordinarily, the window's references to these
- * listeners will be dropped automatically when the window closes. However,
- * if the client needs to get rid of an action while the window is still open,
- * the client must call IWorkbenchAction#dispose to give the
- * action an opportunity to deregister its listeners and to perform any other
- * cleanup.
- * 
- * </p>
- * <p>
- * Note: Despite the name, an import operation can deal with things other than
- * resources; the current name was retained for historical reasons.
- * </p>
- * 
- * @since 2.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ImportResourcesAction extends BaseSelectionListenerAction
-        implements ActionFactory.IWorkbenchAction {
-    /**
-     * Reference to the WorkbenchCommandAction that executes the Import Wizard.
-     */
-    private ActionFactory.IWorkbenchAction action;
-    
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param window the window
-     */
-    public ImportResourcesAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.ImportResourcesAction_text);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        
-        this.workbenchWindow = window;
-        action = ActionFactory.IMPORT.create(window);
-        
-        setText(action.getText()); 
-        setToolTipText(action.getToolTipText());
-        setId(action.getId());
-        setActionDefinitionId(action.getActionDefinitionId());
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.IMPORT_ACTION);
-        setImageDescriptor(action.getImageDescriptor());
-    }
-
-    /**
-     * Create a new instance of this class
-     * 
-     * @param workbench the workbench
-     * @deprecated use the constructor <code>ImportResourcesAction(IWorkbenchWindow)</code>
-     */
-    public ImportResourcesAction(IWorkbench workbench) {
-        this(workbench.getActiveWorkbenchWindow());
-    }
-
-    /**
-     * Invoke the Import wizards selection Wizard.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        
-        action.run();
-    }
-
-    /**
-     * Sets the current selection. 
-     * In for backwards compatability. Use selectionChanged() instead.
-     * @param selection the new selection
-     * @deprecated
-     */
-    public void setSelection(IStructuredSelection selection) {
-        selectionChanged(selection);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     * @since 3.0
-     */
-    public void dispose() {
-    	workbenchWindow = null;
-    	if (action!=null) {
-    	action.dispose();
-    	}
-    	action = null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/LabelRetargetAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/LabelRetargetAction.java
deleted file mode 100644
index f2827c4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/LabelRetargetAction.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.LegacyActionTools;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * A <code>LabelRetargetAction</code> extends the behavior of
- * RetargetAction.  It will track the enable state, label, and 
- * tool tip text of the target action..
- * <p>
- * This class may be instantiated. It is not intented to be subclassed.
- * </p>
- *
- * @since 2.0 
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class LabelRetargetAction extends RetargetAction {
-    private String defaultText;
-
-    private String defaultToolTipText;
-
-    private ImageDescriptor defaultHoverImage;
-
-    private ImageDescriptor defaultImage;
-
-    private ImageDescriptor defaultDisabledImage;
-
-    private String acceleratorText;
-
-    /**
-     * Constructs a LabelRetargetAction with the given action id and text.
-     * 
-     * @param actionID the retargetable action id
-     * @param text the action's text, or <code>null</code> if there is no text
-     */
-    public LabelRetargetAction(String actionID, String text) {
-        this(actionID, text, IAction.AS_UNSPECIFIED);
-    }
-
-    /**
-     * Constructs a RetargetAction with the given action id, text and style.
-     * 
-     * @param actionID the retargetable action id
-     * @param text the action's text, or <code>null</code> if there is no text
-     * @param style one of <code>AS_PUSH_BUTTON</code>, <code>AS_CHECK_BOX</code>,
-     * 		<code>AS_DROP_DOWN_MENU</code>, <code>AS_RADIO_BUTTON</code>, and
-     * 		<code>AS_UNSPECIFIED</code>.
-     * @since 3.0
-     */
-    public LabelRetargetAction(String actionID, String text, int style) {
-        super(actionID, text, style);
-        this.defaultText = text;
-        this.defaultToolTipText = text;
-        acceleratorText = LegacyActionTools.extractAcceleratorText(text);
-    }
-
-    /**
-     * The action handler has changed.  Update self.
-     */
-    protected void propagateChange(PropertyChangeEvent event) {
-        super.propagateChange(event);
-        String prop = event.getProperty();
-        if (prop.equals(IAction.TEXT)) {
-            String str = (String) event.getNewValue();
-            super.setText(appendAccelerator(str));
-        } else if (prop.equals(IAction.TOOL_TIP_TEXT)) {
-            String str = (String) event.getNewValue();
-            super.setToolTipText(str);
-        } else if (prop.equals(IAction.IMAGE)) {
-            updateImages(getActionHandler());
-        }
-    }
-
-    /**
-     * Sets the action handler.  Update self.
-     */
-    protected void setActionHandler(IAction handler) {
-        // Run the default behavior.
-        super.setActionHandler(handler);
-
-        // Now update the label, tooltip and images.
-        if (handler == null) {
-            super.setText(defaultText);
-            super.setToolTipText(defaultToolTipText);
-        } else {
-            // If no text is specified by the handler, use the default text.  Fixes 22529.
-            String handlerText = handler.getText();
-            if (handlerText == null || handlerText.length() == 0) {
-                handlerText = defaultText;
-            }
-            super.setText(appendAccelerator(handlerText));
-            super.setToolTipText(handler.getToolTipText());
-        }
-        updateImages(handler);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void setDisabledImageDescriptor(ImageDescriptor image) {
-        super.setDisabledImageDescriptor(image);
-        defaultDisabledImage = image;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void setHoverImageDescriptor(ImageDescriptor image) {
-        super.setHoverImageDescriptor(image);
-        defaultHoverImage = image;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void setImageDescriptor(ImageDescriptor image) {
-        super.setImageDescriptor(image);
-        defaultImage = image;
-    }
-
-    /**
-     * Sets the action's label text to the given value.
-     */
-    public void setText(String text) {
-        super.setText(text);
-        acceleratorText = LegacyActionTools.extractAcceleratorText(text);
-        defaultText = text;
-    }
-
-    /**
-     * Sets the tooltip text to the given text.
-     * The value <code>null</code> clears the tooltip text.
-     */
-    public void setToolTipText(String text) {
-        super.setToolTipText(text);
-        defaultToolTipText = text;
-    }
-
-    /**
-     * Ensures the accelerator is correct in the text (handlers are not
-     * allowed to change the accelerator).
-     */
-    private String appendAccelerator(String newText) {
-        if (newText == null) {
-			return null;
-		}
-
-        // Remove any accelerator
-        String str = removeAcceleratorText(newText);
-        // Append our accelerator
-        if (acceleratorText != null) {
-			str = str + acceleratorText;
-		}
-        return str;
-    }
-
-    /**
-     * Updates the images for this action based on the given handler.
-     */
-    private void updateImages(IAction handler) {
-        if (handler == null) {
-            super.setHoverImageDescriptor(defaultHoverImage);
-            super.setImageDescriptor(defaultImage);
-            super.setDisabledImageDescriptor(defaultDisabledImage);
-        } else {
-            // use the default images if the handler has no images set
-            ImageDescriptor hoverImage = handler.getHoverImageDescriptor();
-            ImageDescriptor image = handler.getImageDescriptor();
-            ImageDescriptor disabledImage = handler
-                    .getDisabledImageDescriptor();
-            if (hoverImage != null || image != null || disabledImage != null) {
-                super.setHoverImageDescriptor(hoverImage);
-                super.setImageDescriptor(image);
-                super.setDisabledImageDescriptor(disabledImage);
-            } else {
-                super.setHoverImageDescriptor(defaultHoverImage);
-                super.setImageDescriptor(defaultImage);
-                super.setDisabledImageDescriptor(defaultDisabledImage);
-            }
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardAction.java
deleted file mode 100644
index 37eb59b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardAction.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.IDialogSettings;
-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.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.LegacyResourceSupport;
-import org.eclipse.ui.internal.PerspectiveTracker;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.dialogs.NewWizard;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Invoke the resource creation wizard selection Wizard.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * This method automatically registers listeners so that it can keep its
- * enablement state up to date. Ordinarily, the window's references to these
- * listeners will be dropped automatically when the window closes. However,
- * if the client needs to get rid of an action while the window is still open,
- * the client must call #dispose() to give the
- * action an opportunity to deregister its listeners and to perform any other
- * cleanup.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class NewWizardAction extends Action implements
-        ActionFactory.IWorkbenchAction {
-
-    /**
-     * The wizard dialog width
-     */
-    private static final int SIZING_WIZARD_WIDTH = 500;
-
-    /**
-     * The wizard dialog height
-     */
-    private static final int SIZING_WIZARD_HEIGHT = 500;
-
-    /**
-     * The id of the category to show or <code>null</code> to
-     * show all the categories.
-     */
-    private String categoryId = null;
-
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Tracks perspective activation, to update this action's
-     * enabled state.
-     */
-    private PerspectiveTracker tracker;
-    
-    /**
-     * Create a new instance of this class.
-     * @param window
-     */
-    public NewWizardAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.NewWizardAction_text);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        tracker = new PerspectiveTracker(window, this);
-        // @issues should be IDE-specific images
-        ISharedImages images = PlatformUI.getWorkbench().getSharedImages();
-        setImageDescriptor(images
-                .getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD));
-        setDisabledImageDescriptor(images
-                .getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD_DISABLED));
-        setToolTipText(WorkbenchMessages.NewWizardAction_toolTip); 
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.NEW_ACTION);
-    }
-
-    /**
-     * Create a new instance of this class
-     * 
-     * @deprecated use the constructor <code>NewWizardAction(IWorkbenchWindow)</code>
-     */
-    public NewWizardAction() {
-        this(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-    }
-
-    /**
-     * Returns the id of the category of wizards to show
-     * or <code>null</code> to show all categories.
-     * @return String
-     */
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    /**
-     * Sets the id of the category of wizards to show
-     * or <code>null</code> to show all categories.
-     * @param id
-     */
-    public void setCategoryId(String id) {
-        categoryId = id;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        NewWizard wizard = new NewWizard();
-        wizard.setCategoryId(categoryId);
-
-        ISelection selection = workbenchWindow.getSelectionService()
-                .getSelection();
-        IStructuredSelection selectionToPass = StructuredSelection.EMPTY;
-        if (selection instanceof IStructuredSelection) {
-            selectionToPass = (IStructuredSelection) selection;
-        } else {
-            // @issue the following is resource-specific legacy code
-            // Build the selection from the IFile of the editor
-            Class resourceClass = LegacyResourceSupport.getResourceClass();
-            if (resourceClass != null) {
-                IWorkbenchPart part = workbenchWindow.getPartService()
-                        .getActivePart();
-                if (part instanceof IEditorPart) {
-                    IEditorInput input = ((IEditorPart) part).getEditorInput();
-                    Object resource = Util.getAdapter(input, resourceClass);
-                    if (resource != null) {
-                        selectionToPass = new StructuredSelection(resource);
-                    }
-                }
-            }
-        }
-
-        wizard.init(workbenchWindow.getWorkbench(), selectionToPass);
-        IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-                .getDialogSettings();
-        IDialogSettings wizardSettings = workbenchSettings
-                .getSection("NewWizardAction"); //$NON-NLS-1$
-        if (wizardSettings == null) {
-			wizardSettings = workbenchSettings.addNewSection("NewWizardAction"); //$NON-NLS-1$
-		}
-        wizard.setDialogSettings(wizardSettings);
-        wizard.setForcePreviousAndNextButtons(true);
-
-        Shell parent = workbenchWindow.getShell();
-        WizardDialog dialog = new WizardDialog(parent, wizard);
-        dialog.create();
-        dialog.getShell().setSize(
-                Math.max(SIZING_WIZARD_WIDTH, dialog.getShell().getSize().x),
-                SIZING_WIZARD_HEIGHT);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(),
-				IWorkbenchHelpContextIds.NEW_WIZARD);
-        dialog.open();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     * @since 3.0
-     */
-    public void dispose() {
-        if (workbenchWindow == null) {
-            // action has already been disposed
-            return;
-        }
-        tracker.dispose();
-        workbenchWindow = null;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java
deleted file mode 100644
index 86a6533..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/NewWizardDropDownAction.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.PerspectiveTracker;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Action which, when run, will open the new wizard dialog.
- * In addition, it has a drop-down showing the new wizard shortcuts
- * associated with the current perspective.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- *
- * @since 3.1
- */
-public class NewWizardDropDownAction extends Action implements
-        ActionFactory.IWorkbenchAction {
-
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-    
-    /**
-     * Tracks perspective activation, to update this action's
-     * enabled state.
-     */
-    private PerspectiveTracker tracker;
-
-    private ActionFactory.IWorkbenchAction showDlgAction;
-
-    private IContributionItem newWizardMenu;
-    
-    private IMenuCreator menuCreator = new IMenuCreator() {
-
-        private MenuManager dropDownMenuMgr;
-
-        /**
-         * Creates the menu manager for the drop-down.
-         */
-        private void createDropDownMenuMgr() {
-            if (dropDownMenuMgr == null) {
-                dropDownMenuMgr = new MenuManager();
-                dropDownMenuMgr.add(newWizardMenu);
-            }
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.action.IMenuCreator#getMenu(org.eclipse.swt.widgets.Control)
-         */
-        public Menu getMenu(Control parent) {
-            createDropDownMenuMgr();
-            return dropDownMenuMgr.createContextMenu(parent);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.action.IMenuCreator#getMenu(org.eclipse.swt.widgets.Menu)
-         */
-        public Menu getMenu(Menu parent) {
-            createDropDownMenuMgr();
-            Menu menu = new Menu(parent);
-            IContributionItem[] items = dropDownMenuMgr.getItems();
-            for (int i = 0; i < items.length; i++) {
-                IContributionItem item = items[i];
-                IContributionItem newItem = item;
-                if (item instanceof ActionContributionItem) {
-                    newItem = new ActionContributionItem(
-                            ((ActionContributionItem) item).getAction());
-                }
-                newItem.fill(menu, -1);
-            }
-            return menu;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.action.IMenuCreator#dispose()
-         */
-        public void dispose() {
-            if (dropDownMenuMgr != null) {
-                dropDownMenuMgr.dispose();
-                dropDownMenuMgr = null;
-            }
-        }
-    };
-
-    /**
-     * Create a new <code>NewWizardDropDownAction</code>, with the default
-     * action for opening the new wizard dialog, and the default contribution item
-     * for populating the drop-down menu.
-     * 
-     * @param window the window in which this action appears
-     */
-    public NewWizardDropDownAction(IWorkbenchWindow window) {
-        this(window, ActionFactory.NEW.create(window), ContributionItemFactory.NEW_WIZARD_SHORTLIST.create(window));
-    }
-    
-    /**
-     * Create a new <code>NewWizardDropDownAction</code>.
-     * 
-     * @param window the window in which this action appears
-     * @param showDlgAction the action to delegate to when this action is run directly, 
-     *   rather than being dropped down
-     * @param newWizardMenu the contribution item that adds the contents to the drop-down menu
-     */
-    public NewWizardDropDownAction(IWorkbenchWindow window,
-            ActionFactory.IWorkbenchAction showDlgAction, 
-            IContributionItem newWizardMenu) {
-        super(WorkbenchMessages.NewWizardDropDown_text);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        this.showDlgAction = showDlgAction;
-        this.newWizardMenu = newWizardMenu;
-        tracker = new PerspectiveTracker(window, this);
-        
-        setToolTipText(showDlgAction.getToolTipText());
-
-        ISharedImages sharedImages = window.getWorkbench()
-                .getSharedImages();
-        setImageDescriptor(sharedImages
-                .getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD));
-        setDisabledImageDescriptor(sharedImages
-                .getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD_DISABLED));
-
-        setMenuCreator(menuCreator);
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction#dispose()
-     */
-    public void dispose() {
-        if (workbenchWindow == null) {
-            // action has already been disposed
-            return;
-        }
-        tracker.dispose();
-        showDlgAction.dispose();
-        newWizardMenu.dispose();
-        menuCreator.dispose();
-        workbenchWindow = null;
-    }
-
-    /**
-     * Runs the action, which opens the New wizard dialog.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        showDlgAction.run();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenInNewWindowAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenInNewWindowAction.java
deleted file mode 100644
index 29f59be..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenInNewWindowAction.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Opens a new window. The initial perspective
- * for the new window will be the same type as
- * the active perspective in the window which this
- * action is running in. The default input for the 
- * new window's page is application-specific.
- */
-public class OpenInNewWindowAction extends Action implements
-        ActionFactory.IWorkbenchAction {
-
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    private IAdaptable pageInput;
-
-    /**
-     * Creates a new <code>OpenInNewWindowAction</code>. Sets
-     * the new window page's input to be an application-specific
-     * default.
-     * 
-     * @param window the workbench window containing this action
-     */
-    public OpenInNewWindowAction(IWorkbenchWindow window) {
-        this(window, ((Workbench) window.getWorkbench()).getDefaultPageInput());
-        setActionDefinitionId("org.eclipse.ui.window.newWindow"); //$NON-NLS-1$
-    }
-
-    /**
-     * Creates a new <code>OpenInNewWindowAction</code>.
-     * 
-     * @param window the workbench window containing this action
-     * @param input the input for the new window's page
-     */
-    public OpenInNewWindowAction(IWorkbenchWindow window, IAdaptable input) {
-        super(WorkbenchMessages.OpenInNewWindowAction_text);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        // @issue missing action id
-        setToolTipText(WorkbenchMessages.OpenInNewWindowAction_toolTip); 
-        pageInput = input;
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.OPEN_NEW_WINDOW_ACTION);
-    }
-
-    /**
-     * Set the input to use for the new window's page.
-     * 
-     * @param input the input
-     */
-    public void setPageInput(IAdaptable input) {
-        pageInput = input;
-    }
-
-    /**
-     * The implementation of this <code>IAction</code> method
-     * opens a new window. The initial perspective
-     * for the new window will be the same type as
-     * the active perspective in the window which this
-     * action is running in.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        try {
-            String perspId;
-
-            IWorkbenchPage page = workbenchWindow.getActivePage();
-            if (page != null && page.getPerspective() != null) {
-				perspId = page.getPerspective().getId();
-			} else {
-				perspId = workbenchWindow.getWorkbench()
-                        .getPerspectiveRegistry().getDefaultPerspective();
-			}
-
-            workbenchWindow.getWorkbench().openWorkbenchWindow(perspId,
-                    pageInput);
-        } catch (WorkbenchException e) {			
-			StatusUtil.handleStatus(e.getStatus(),
-					WorkbenchMessages.OpenInNewWindowAction_errorTitle
-							+ ": " + e.getMessage(), //$NON-NLS-1$
-					StatusManager.SHOW);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     * @since 3.0
-     */
-    public void dispose() {
-        workbenchWindow = null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewPageMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewPageMenu.java
deleted file mode 100644
index 9247b44..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewPageMenu.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * A menu for page creation in the workbench.  
- * <p>
- * An <code>OpenNewPageMenu</code> is used to populate a menu with
- * "Open Page" actions.  One item is added for each shortcut perspective,
- * as defined by the product ini.  If the user selects one of these items a new page is 
- * created in the workbench with the given perspective.  
- * </p><p>
- * The visible perspectives within the menu may also be updated dynamically to
- * reflect user preference.
- * </p><p>
- * The input for the page is determined by the value of <code>pageInput</code>.
- * The input should be passed into the constructor of this class or set using
- * the <code>setPageInput</code> method.
- * </p><p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @deprecated Workbench no longer exposes the concept of "pages" in the
- * 		user ui model. See IWorkbench.showPerspective methods.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class OpenNewPageMenu extends PerspectiveMenu {
-    private IAdaptable pageInput;
-
-    /**
-     * Constructs a new instance of <code>OpenNewPageMenu</code>. 
-     * <p>
-     * If this method is used be sure to set the page input by invoking
-     * <code>setPageInput</code>.  The page input is required when the user
-     * selects an item in the menu.  At that point the menu will attempt to
-     * open a new page with the selected perspective and page input.  If there
-     * is no page input an error dialog will be opened.
-     * </p>
-     *
-     * @param window the window where a new page is created if an item within
-     *		the menu is selected
-     */
-    public OpenNewPageMenu(IWorkbenchWindow window) {
-        this(window, null);
-    }
-
-    /**
-     * Constructs a new instance of <code>OpenNewPageMenu</code>.  
-     *
-     * @param window the window where a new page is created if an item within
-     *		the menu is selected
-     * @param input the page input
-     */
-    public OpenNewPageMenu(IWorkbenchWindow window, IAdaptable input) {
-        super(window, "Open New Page Menu");//$NON-NLS-1$
-        this.pageInput = input;
-    }
-
-    /* (non-Javadoc)
-     * Opens a new page with a particular perspective and input.
-     */
-    protected void run(IPerspectiveDescriptor desc) {
-        // Verify page input.
-        if (pageInput == null) {	
-			StatusUtil.handleStatus(
-					WorkbenchMessages.OpenNewPageMenu_dialogTitle + ": " + //$NON-NLS-1$
-							WorkbenchMessages.OpenNewPageMenu_unknownPageInput,
-					StatusManager.SHOW);
-			return;
-        }
-
-        // Open the page.
-        try {
-            getWindow().openPage(desc.getId(), pageInput);
-        } catch (WorkbenchException e) {
-        	StatusUtil.handleStatus(
-					WorkbenchMessages.OpenNewPageMenu_dialogTitle + ": " + //$NON-NLS-1$
-							e.getMessage(), e, StatusManager.SHOW);
-        }
-    }
-
-    /**
-     * Sets the page input.  
-     *
-     * @param input the page input
-     */
-    public void setPageInput(IAdaptable input) {
-        pageInput = input;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewWindowMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewWindowMenu.java
deleted file mode 100644
index 423be00..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenNewWindowMenu.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * A menu for window creation in the workbench.  
- * <p>
- * An <code>OpenNewWindowMenu</code> is used to populate a menu with
- * "Open Window" actions.  One item is added for each shortcut perspective,
- * as defined by the product ini.  If the user selects one of these items a new window is 
- * created in the workbench with the given perspective.  
- * </p><p>
- * The visible perspectives within the menu may also be updated dynamically to
- * reflect user preference.
- * </p><p>
- * The input for the page is determined by the value of <code>pageInput</code>.
- * The input should be passed into the constructor of this class or set using
- * the <code>setPageInput</code> method.
- * </p><p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @deprecated See IWorkbench.showPerspective methods.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class OpenNewWindowMenu extends PerspectiveMenu {
-    private IAdaptable pageInput;
-
-    /**
-     * Constructs a new instance of <code>OpenNewPageMenu</code>. 
-     * <p>
-     * If this method is used be sure to set the page input by invoking
-     * <code>setPageInput</code>.  The page input is required when the user
-     * selects an item in the menu.  At that point the menu will attempt to
-     * open a new page with the selected perspective and page input.  If there
-     * is no page input an error dialog will be opened.
-     * </p>
-     *
-     * @param window the window where a new page is created if an item within
-     *		the menu is selected
-     */
-    public OpenNewWindowMenu(IWorkbenchWindow window) {
-        this(window, null);
-    }
-
-    /**
-     * Constructs a new instance of <code>OpenNewPageMenu</code>.  
-     *
-     * @param window the window where a new page is created if an item within
-     *		the menu is selected
-     * @param input the page input
-     */
-    public OpenNewWindowMenu(IWorkbenchWindow window, IAdaptable input) {
-        super(window, "Open New Page Menu");//$NON-NLS-1$
-        this.pageInput = input;
-    }
-
-    /* (non-Javadoc)
-     * Opens a new window with a particular perspective and input.
-     */
-    protected void run(IPerspectiveDescriptor desc) {
-        // Verify page input.
-        if (pageInput == null) {
-        	StatusUtil.handleStatus(
-					WorkbenchMessages.OpenNewWindowMenu_dialogTitle + ": " + //$NON-NLS-1$
-							WorkbenchMessages.OpenNewWindowMenu_unknownInput,
-					StatusManager.SHOW);
-			return;
-        }
-
-        // Open the page.
-        try {
-            getWindow().getWorkbench().openWorkbenchWindow(desc.getId(),
-                    pageInput);
-        } catch (WorkbenchException e) {
-			StatusUtil.handleStatus(
-					WorkbenchMessages.OpenNewWindowMenu_dialogTitle + ": " + //$NON-NLS-1$
-							e.getMessage(), e, StatusManager.SHOW);
-		}
-    }
-
-    /**
-     * Sets the page input.  
-     *
-     * @param input the page input
-     */
-    public void setPageInput(IAdaptable input) {
-        pageInput = input;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveAction.java
deleted file mode 100644
index 5d3c37f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveAction.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Opens a perspective.
- * 
- * @since 3.1
- */
-public final class OpenPerspectiveAction extends Action implements
-        IPluginContribution {
-
-    /**
-     * The perspective menu that will handle the execution of this action. This
-     * allows subclasses of <code>PerspectiveMenu</code> to define custom
-     * behaviour for these actions. This value should not be <code>null</code>.
-     */
-    private final PerspectiveMenu callback;
-
-    /**
-     * The descriptor for the perspective that this action should open. This
-     * value is never <code>null</code>.
-     */
-    private final IPerspectiveDescriptor descriptor;
-
-    /**
-     * Constructs a new instance of <code>OpenPerspectiveAction</code>
-     * 
-     * @param window
-     *            The workbench window in which this action is created; should
-     *            not be <code>null</code>.
-     * @param descriptor
-     *            The descriptor for the perspective that this action should
-     *            open; must not be <code>null</code>.
-     * @param callback
-     *            The perspective menu who will handle the actual execution of
-     *            this action; should not be <code>null</code>.
-     */
-    public OpenPerspectiveAction(final IWorkbenchWindow window,
-            final IPerspectiveDescriptor descriptor,
-            final PerspectiveMenu callback) {
-        super(Util.ZERO_LENGTH_STRING);
-
-        this.descriptor = descriptor;
-        this.callback = callback;
-
-        final String label = descriptor.getLabel();
-        setText(label);
-        setToolTipText(label);
-        setImageDescriptor(descriptor.getImageDescriptor());
-
-        window.getWorkbench().getHelpSystem().setHelp(this,
-                IWorkbenchHelpContextIds.OPEN_PERSPECTIVE_ACTION);
-    }
-
-  
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IAction#runWithEvent(org.eclipse.swt.widgets.Event)
-     */
-    public final void runWithEvent(final Event event) {
-        callback.run(descriptor, new SelectionEvent(event));
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return descriptor.getId();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return descriptor instanceof IPluginContribution ? ((IPluginContribution) descriptor)
-                .getPluginId()
-                : null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveMenu.java
deleted file mode 100644
index 00e9214..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/OpenPerspectiveMenu.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * A menu for window creation in the workbench.  
- * <p>
- * An <code>OpenPerspectiveMenu</code> is used to populate a menu with
- * actions that will open a new perspective. If the user selects one of 
- * these items either a new page is added to the workbench, a new 
- * workbench window is created with the chosen perspective or the current
- * perspective will be replaced with the new onw.
- * </p><p>
- * The visible perspectives within the menu may also be updated dynamically to
- * reflect user preference.
- * </p><p>
- * The input for the page is determined by the value of <code>pageInput</code>.
- * The input should be passed into the constructor of this class or set using
- * the <code>setPageInput</code> method.
- * </p><p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @deprecated  See IWorkbench.showPerspective methods.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class OpenPerspectiveMenu extends PerspectiveMenu {
-    private IAdaptable pageInput;
-
-    private IMenuManager parentMenuManager;
-
-    private boolean replaceEnabled = true;
-
-    private static String PAGE_PROBLEMS_TITLE = WorkbenchMessages.OpenPerspectiveMenu_pageProblemsTitle; 
-
-    private static String PAGE_PROBLEMS_MESSAGE = WorkbenchMessages.OpenPerspectiveMenu_errorUnknownInput;
-
-    /**
-     * Constructs a new menu.
-     */
-    public OpenPerspectiveMenu(IMenuManager menuManager, IWorkbenchWindow window) {
-        this(window);
-        this.parentMenuManager = menuManager;
-    }
-
-    /**
-     * Constructs a new instance of <code>OpenNewPageMenu</code>. 
-     * <p>
-     * If this method is used be sure to set the page input by invoking
-     * <code>setPageInput</code>.  The page input is required when the user
-     * selects an item in the menu.  At that point the menu will attempt to
-     * open a new page with the selected perspective and page input.  If there
-     * is no page input an error dialog will be opened.
-     * </p>
-     *
-     * @param window the window where a new page is created if an item within
-     *		the menu is selected
-     */
-    public OpenPerspectiveMenu(IWorkbenchWindow window) {
-        this(window, null);
-        showActive(true);
-    }
-
-    /**
-     * Constructs a new instance of <code>OpenNewPageMenu</code>.  
-     *
-     * @param window the window where a new page is created if an item within
-     *		the menu is selected
-     * @param input the page input
-     */
-    public OpenPerspectiveMenu(IWorkbenchWindow window, IAdaptable input) {
-        super(window, "Open New Page Menu");//$NON-NLS-1$
-        this.pageInput = input;
-    }
-
-    /**
-     * Return whether or not the menu can be run. Answer true unless the current mode
-     * is replace and the replaceEnabled flag is false.
-     */
-    private boolean canRun() {
-        if (openPerspectiveSetting().equals(
-                IWorkbenchPreferenceConstants.OPEN_PERSPECTIVE_REPLACE)) {
-			return replaceEnabled;
-		}
-        return true;
-    }
-
-    /**
-     * Return the current perspective setting.
-     */
-    private String openPerspectiveSetting() {
-        return PrefUtil.getAPIPreferenceStore().getString(
-                IWorkbenchPreferenceConstants.OPEN_NEW_PERSPECTIVE);
-    }
-
-    /**
-     * Runs an action for a particular perspective. Opens the perspective supplied
-     * in a new window or a new page depending on the workbench preference.
-     *
-     * @param desc the selected perspective
-     */
-    protected void run(IPerspectiveDescriptor desc) {
-        openPage(desc, 0);
-    }
-
-    /**
-     * Runs an action for a particular perspective. Check for shift or control events
-     * to decide which event to run.
-     *
-     * @param desc the selected perspective
-     * @param event the event sent along with the selection callback
-     */
-    protected void run(IPerspectiveDescriptor desc, SelectionEvent event) {
-        openPage(desc, event.stateMask);
-    }
-
-    /* (non-Javadoc)
-     * Opens a new page with a particular perspective and input.
-     */
-    private void openPage(IPerspectiveDescriptor desc, int keyStateMask) {
-        // Verify page input.
-        if (pageInput == null) {			
-			StatusUtil.handleStatus(PAGE_PROBLEMS_TITLE
-					+ ": " + PAGE_PROBLEMS_MESSAGE, StatusManager.SHOW); //$NON-NLS-1$
-			return;
-        }
-
-        // Open the page.
-        try {
-            getWindow().getWorkbench().showPerspective(desc.getId(),
-                    getWindow(), pageInput);
-        } catch (WorkbenchException e) {
-			StatusUtil.handleStatus(
-					PAGE_PROBLEMS_TITLE + ": " + e.getMessage(), e,  //$NON-NLS-1$
-					StatusManager.SHOW);
-		}
-    }
-
-    /**
-     * Sets the page input.  
-     *
-     * @param input the page input
-     */
-    public void setPageInput(IAdaptable input) {
-        pageInput = input;
-    }
-
-    /**
-     * Set whether replace menu item is enabled within its parent menu.
-     */
-    public void setReplaceEnabled(boolean isEnabled) {
-        if (replaceEnabled != isEnabled) {
-            replaceEnabled = isEnabled;
-            if (canRun() && parentMenuManager != null) {
-				parentMenuManager.update(true);
-			}
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PartEventAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PartEventAction.java
deleted file mode 100644
index 69a542a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PartEventAction.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * The abstract superclass for actions that listen to part activation and
- * open/close events. This implementation tracks the active part (see 
- * <code>getActivePart</code>) and provides a convenient place to monitor
- * part lifecycle events that could affect the availability of the action.
- * <p>
- * Subclasses must implement the following <code>IAction</code> method:
- * <ul>
- *   <li><code>run</code> - to do the action's work</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend any of the <code>IPartListener</code> methods if the
- * action availablity needs to be recalculated:
- * <ul>
- *   <li><code>partActivated</code></li> 
- *   <li><code>partDeactivated</code></li>
- *   <li><code>partOpened</code></li>
- *   <li><code>partClosed</code></li>
- *   <li><code>partBroughtToTop</code></li>
- * </ul>
- * </p>
- * <p>
- * Although this method implements the <code>IPartListener</code> interface,
- * it does NOT register itself. 
- * </p>
- */
-public abstract class PartEventAction extends Action implements IPartListener {
-
-    /**
-     * The active part, or <code>null</code> if none.
-     */
-    private IWorkbenchPart activePart;
-
-    /**
-     * Creates a new action with the given text.
-     *
-     * @param text the action's text, or <code>null</code> if there is no text
-     */
-    protected PartEventAction(String text) {
-        super(text);
-    }
-
-    /**
-     * Creates a new action with the given text and style.
-     *
-     * @param text the action's text, or <code>null</code> if there is no text
-     * @param style one of <code>AS_PUSH_BUTTON</code>, <code>AS_CHECK_BOX</code>,
-     * 		<code>AS_DROP_DOWN_MENU</code>, <code>AS_RADIO_BUTTON</code>, and
-     * 		<code>AS_UNSPECIFIED</code>
-     * @since 3.0
-     */
-    protected PartEventAction(String text, int style) {
-        super(text, style);
-    }
-
-    /**
-     * Returns the currently active part in the workbench.
-     *
-     * @return currently active part in the workbench, or <code>null</code> if none
-     */
-    public IWorkbenchPart getActivePart() {
-        return activePart;
-    }
-
-    /**
-     * The <code>PartEventAction</code> implementation of this 
-     * <code>IPartListener</code> method records that the given part is active.
-     * Subclasses may extend this method if action availability has to be
-     * recalculated.
-     */
-    public void partActivated(IWorkbenchPart part) {
-        activePart = part;
-    }
-
-    /**
-     * The <code>PartEventAction</code> implementation of this 
-     * <code>IPartListener</code> method does nothing. Subclasses should extend
-     * this method if action availability has to be recalculated.
-     */
-    public void partBroughtToTop(IWorkbenchPart part) {
-        // do nothing
-    }
-
-    /**
-     * The <code>PartEventAction</code> implementation of this 
-     * <code>IPartListener</code> method clears the active part if it just closed.
-     * Subclasses may extend this method if action availability has to be
-     * recalculated.
-     */
-    public void partClosed(IWorkbenchPart part) {
-        if (part == activePart) {
-			activePart = null;
-		}
-    }
-
-    /**
-     * The <code>PartEventAction</code> implementation of this 
-     * <code>IPartListener</code> method records that there is no active part.
-     * Subclasses may extend this method if action availability has to be
-     * recalculated.
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-        activePart = null;
-    }
-
-    /**
-     * The <code>PartEventAction</code> implementation of this 
-     * <code>IPartListener</code> method does nothing. Subclasses should extend
-     * this method if action availability has to be recalculated.
-     */
-    public void partOpened(IWorkbenchPart part) {
-        // do nothing
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java
deleted file mode 100644
index aab6399..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Tonny Madsen, RCP Company - bug 201055
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * A menu for perspective selection.  
- * <p>
- * A <code>PerspectiveMenu</code> is used to populate a menu with
- * perspective shortcut items.  If the user selects one of these items 
- * an action is performed for the selected perspective.
- * </p><p>
- * The visible perspective items within the menu are dynamic and reflect the
- * available set generated by each subclass. The default available set consists
- * of the perspective shortcut list of the current perspective.
- * </p><p>
- * This class is abstract.  Subclasses must implement the <code>run</code> method,
- * which performs a specialized action for the selected perspective.
- * </p>
- */
-public abstract class PerspectiveMenu extends ContributionItem {
-    /**
-     * @since 3.4
-	 * 
-	 */
-	protected static final String SHOW_PERSP_ID = "org.eclipse.ui.perspectives.showPerspective"; //$NON-NLS-1$
-
-	private IPerspectiveRegistry reg;
-
-    private IWorkbenchWindow window;
-
-    private boolean showActive = false;
-
-    private boolean dirty = true;
-
-    private IMenuListener menuListener = new IMenuListener() {
-        public void menuAboutToShow(IMenuManager manager) {
-            manager.markDirty();
-            dirty = true;
-        }
-    };
-
-    private Comparator comparator = new Comparator() {
-        private Collator collator = Collator.getInstance();
-
-        public int compare(Object ob1, Object ob2) {
-            IPerspectiveDescriptor d1 = (IPerspectiveDescriptor) ob1;
-            IPerspectiveDescriptor d2 = (IPerspectiveDescriptor) ob2;
-            return collator.compare(d1.getLabel(), d2.getLabel());
-        }
-    };
-
-    /**
-     * The translatable message to show when there are no perspectives.
-     * 
-     * @since 3.1
-     */
-    private static final String NO_TARGETS_MSG = WorkbenchMessages.Workbench_showInNoPerspectives;
-
-    /**
-     * The map of perspective identifiers (String) to actions
-     * (OpenPerspectiveAction). This map may be empty, but it is never
-     * <code>null</code>.
-     * 
-     * @since 3.1
-     */
-    private Map actions = new HashMap();
-
-    /**
-     * The action for that allows the user to choose any perspective to open.
-     * 
-     * @since 3.1
-     */
-    private Action openOtherAction = new Action(WorkbenchMessages.PerspectiveMenu_otherItem) {
-        public final void runWithEvent(final Event event) {
-            runOther(new SelectionEvent(event));
-        }
-    };
-
-
-    /**
-     * Constructs a new instance of <code>PerspectiveMenu</code>.  
-     *
-     * @param window the window containing this menu
-     * @param id the menu id
-     */
-    public PerspectiveMenu(IWorkbenchWindow window, String id) {
-        super(id);
-        this.window = window;
-        reg = window.getWorkbench().getPerspectiveRegistry();
-		openOtherAction
-				.setActionDefinitionId(SHOW_PERSP_ID);
-    }
-
-    /*
-     * (non-Javadoc) Fills the menu with perspective items.
-     */
-    public void fill(Menu menu, int index) {
-        if (getParent() instanceof MenuManager) {
-			((MenuManager) getParent()).addMenuListener(menuListener);
-		}
-
-        if (!dirty) {
-			return;
-		}
-
-        final MenuManager manager = new MenuManager();
-        fillMenu(manager);
-        final IContributionItem items[] = manager.getItems();
-        if (items.length == 0) {
-            MenuItem item = new MenuItem(menu, SWT.NONE, index++);
-            item.setText(NO_TARGETS_MSG);
-            item.setEnabled(false);
-        } else {
-            for (int i = 0; i < items.length; i++) {
-                items[i].fill(menu, index++);
-            }
-        }
-        dirty = false;
-    }
-
-    /**
-     * Fills the given menu manager with all the open perspective actions
-     * appropriate for the currently active perspective. Filtering is applied to
-     * the actions based on the activities and capabilities mechanism.
-     * 
-     * @param manager
-     *            The menu manager that should receive the menu items; must not
-     *            be <code>null</code>.
-     * @since 3.1
-     */
-    private final void fillMenu(final MenuManager manager) {
-        // Clear out the manager so that we have a blank slate.
-        manager.removeAll();
-
-        // Collect and sort perspective descriptors.
-        final List persps = getPerspectiveItems();
-        Collections.sort(persps, comparator);
-
-        /*
-         * Convert the perspective descriptors to actions, and filter out
-         * actions using the activity/capability mechanism.
-         */
-        final List actions = new ArrayList(persps.size());
-        for (Iterator i = persps.iterator(); i.hasNext();) {
-            final IPerspectiveDescriptor descriptor = (IPerspectiveDescriptor) i
-                    .next();
-            final IAction action = getAction(descriptor.getId());
-            if (action != null) {
-                if (WorkbenchActivityHelper.filterItem(action)) {
-					continue;
-				}
-                actions.add(action);
-            }
-        }
-
-        // Go through and add each of the actions to the menu manager.
-        for (Iterator i = actions.iterator(); i.hasNext();) {
-            manager.add((IAction) i.next());
-        }
-
-        if (PrefUtil
-                .getAPIPreferenceStore()
-                .getBoolean(
-                        IWorkbenchPreferenceConstants.SHOW_OTHER_IN_PERSPECTIVE_MENU)) {
-        	// Add a separator and then "Other..."
-        	if (actions.size() > 0) {
-				manager.add(new Separator());
-			}
-			manager.add(openOtherAction);
-        }
-    }
-
-    /**
-     * Returns the action for the given perspective id. This is a lazy cache. If
-     * the action does not already exist, then it is created. If there is no
-     * perspective with the given identifier, then the action is not created.
-     * 
-     * @param id
-     *            The identifier of the perspective for which the action should
-     *            be retrieved.
-     * @return The action for the given identifier; or <code>null</code> if
-     *         there is no perspective with the given identifier.
-     * @since 3.1
-     */
-    private final IAction getAction(final String id) {
-        IAction action = (IAction) actions.get(id);
-        if (action == null) {
-            IPerspectiveDescriptor descriptor = reg.findPerspectiveWithId(id);
-            if (descriptor != null) {
-                action = new OpenPerspectiveAction(window, descriptor, this);
-                action.setActionDefinitionId(id);
-                actions.put(id, action);
-            }
-        }
-        return action;
-    }
-
-    /* (non-Javadoc)
-     * Returns the perspective shortcut items for the active perspective.
-     * 
-     * @return a list of <code>IPerspectiveDescriptor</code> items
-     */
-    private ArrayList getPerspectiveShortcuts() {
-        ArrayList list = new ArrayList();
-
-        IWorkbenchPage page = window.getActivePage();
-        if (page == null) {
-			return list;
-		}
-
-        String[] ids = page.getPerspectiveShortcuts();
-
-        for (int i = 0; i < ids.length; i++) {
-            IPerspectiveDescriptor desc = reg.findPerspectiveWithId(ids[i]);
-            if (desc != null && !list.contains(desc)) {
-                if (WorkbenchActivityHelper.filterItem(desc)) {
-					continue;
-				}
-                list.add(desc);
-            }
-        }
-
-        return list;
-    }
-
-    /**
-     * Returns the available list of perspectives to display in the menu.
-     * <p>
-     * By default, the list contains the perspective shortcuts
-     * for the current perspective.
-     * </p><p>
-     * Subclasses can override this method to return a different list.
-     * </p>
-     * 
-     * @return an <code>ArrayList<code> of perspective items <code>IPerspectiveDescriptor</code>
-     */
-    protected ArrayList getPerspectiveItems() {
-        /* Allow the user to see all the perspectives they have 
-         * selected via Customize Perspective. Bugzilla bug #23445 */
-        ArrayList shortcuts = getPerspectiveShortcuts();
-        ArrayList list = new ArrayList(shortcuts.size());
-
-        // Add perspective shortcuts from the active perspective
-        int size = shortcuts.size();
-        for (int i = 0; i < size; i++) {
-            if (!list.contains(shortcuts.get(i))) {
-                list.add(shortcuts.get(i));
-            }
-        }
-
-        return list;
-    }
-
-    /**
-     * Returns whether the menu item representing the active perspective
-     * will have a check mark.
-     *
-     * @return <code>true</code> if a check mark is shown, <code>false</code> otherwise
-     */
-    protected boolean getShowActive() {
-        return showActive;
-    }
-
-    /**
-     * Returns the window for this menu.
-     *
-     * @return the window 
-     */
-    protected IWorkbenchWindow getWindow() {
-        return window;
-    }
-
-    /* (non-Javadoc)
-     * Returns whether this menu is dynamic.
-     */
-    public boolean isDirty() {
-        return dirty;
-    }
-
-    /* (non-Javadoc)
-     * Returns whether this menu is dynamic.
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-
-    /**
-     * Runs an action for a particular perspective.  The behavior of the
-     * action is defined by the subclass.
-     *
-     * @param desc the selected perspective
-     */
-    protected abstract void run(IPerspectiveDescriptor desc);
-
-    /**
-     * Runs an action for a particular perspective. The behavior of the action
-     * is defined by the subclass. By default, this just calls
-     * <code>run(IPerspectiveDescriptor)</code>.
-     * 
-     * @param desc
-     *            the selected perspective
-     * @param event
-     *            SelectionEvent - the event send along with the selection
-     *            callback
-     */
-    protected void run(IPerspectiveDescriptor desc, SelectionEvent event) {
-        //Do a run without the event by default
-        run(desc);
-    }
-
-    /* (non-Javadoc)
-     * Show the "other" dialog, select a perspective, and run it. Pass on the selection
-     * event should the meny need it.
-     */
-    void runOther(SelectionEvent event) {
-		IHandlerService handlerService = (IHandlerService) window
-				.getService(IHandlerService.class);
-		try {
-			handlerService.executeCommand(SHOW_PERSP_ID, null);
-		} catch (ExecutionException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		} catch (NotDefinedException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		} catch (NotEnabledException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		} catch (NotHandledException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		}
-	}
-
-    /**
-     * Sets the showActive flag.  If <code>showActive == true</code> then the
-     * active perspective is hilighted with a check mark.
-     *
-     * @param b the new showActive flag
-     */
-    protected void showActive(boolean b) {
-        showActive = b;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/QuickMenuCreator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/QuickMenuCreator.java
deleted file mode 100644
index 99fd0c4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/QuickMenuCreator.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-
-/**
- * Abstract class that is capable of creating a context menu under the mouse
- * pointer.
- * 
- * @since 3.3
- */
-public abstract class QuickMenuCreator {
-
-	private static final int CHAR_INDENT = 3;
-
-	private Menu quickMenu;
-
-	/**
-	 * Create the context menu.
-	 */
-	public void createMenu() {
-		Display display = Display.getCurrent();
-		if (display == null) {
-			return;
-		}
-		Control focus = display.getFocusControl();
-		if (focus == null || focus.isDisposed()) {
-			return;
-		}
-
-		MenuManager menu = new MenuManager();
-		fillMenu(menu);
-		if (quickMenu != null) {
-			quickMenu.dispose();
-			quickMenu = null;
-		}
-		quickMenu = menu.createContextMenu(focus.getShell());
-		Point location = computeMenuLocation(focus);
-		if (location == null) {
-			return;
-		}
-		quickMenu.setLocation(location);
-		quickMenu.setVisible(true);
-	}
-
-	/**
-	 * Create the contents of the context menu.
-	 * 
-	 * @param menu
-	 *            the menu to fill
-	 */
-	protected abstract void fillMenu(IMenuManager menu);
-
-	/**
-	 * Determine the optimal point for this menu to appear.
-	 * 
-	 * @param focus
-	 *            the focus control
-	 * @return the optimal placement
-	 */
-	private Point computeMenuLocation(Control focus) {
-		Point cursorLocation = focus.getDisplay().getCursorLocation();
-		Rectangle clientArea = null;
-		Point result = null;
-		if (focus instanceof StyledText) {
-			StyledText styledText = (StyledText) focus;
-			clientArea = styledText.getClientArea();
-			result = computeMenuLocation(styledText);
-		} else if (focus instanceof Tree) {
-			Tree tree = (Tree) focus;
-			clientArea = tree.getClientArea();
-			result = computeMenuLocation(tree);
-		} else if (focus instanceof Table) {
-			Table table = (Table) focus;
-			clientArea = table.getClientArea();
-			result = computeMenuLocation(table);
-		}
-		if (result == null) {
-			result = focus.toControl(cursorLocation);
-		}
-		if (clientArea != null && !clientArea.contains(result)) {
-			result = new Point(clientArea.x + clientArea.width / 2,
-					clientArea.y + clientArea.height / 2);
-		}
-		Rectangle shellArea = focus.getShell().getClientArea();
-		if (!shellArea.contains(focus.getShell().toControl(
-				focus.toDisplay(result)))) {
-			result = new Point(shellArea.x + shellArea.width / 2, shellArea.y
-					+ shellArea.height / 2);
-		}
-		return focus.toDisplay(result);
-	}
-
-	/**
-	 * Hook to compute the menu location if the focus widget is a styled text
-	 * widget.
-	 * 
-	 * @param text
-	 *            the styled text widget that has the focus
-	 * 
-	 * @return a widget relative position of the menu to pop up or
-	 *         <code>null</code> if now position inside the widget can be
-	 *         computed
-	 */
-	private Point computeMenuLocation(StyledText text) {
-		Point result = text.getLocationAtOffset(text.getCaretOffset());
-		result.y += text.getLineHeight();
-		if (!text.getClientArea().contains(result)) {
-			return null;
-		}
-		return result;
-	}
-
-	/**
-	 * Hook to compute the menu location if the focus widget is a tree widget.
-	 * 
-	 * @param tree
-	 *            the tree widget that has the focus
-	 * 
-	 * @return a widget relative position of the menu to pop up or
-	 *         <code>null</code> if now position inside the widget can be
-	 *         computed
-	 */
-	private Point computeMenuLocation(Tree tree) {
-		TreeItem[] items = tree.getSelection();
-		Rectangle clientArea = tree.getClientArea();
-		switch (items.length) {
-		case 0:
-			return null;
-		case 1:
-			Rectangle bounds = items[0].getBounds();
-			Rectangle intersect = clientArea.intersection(bounds);
-			if (intersect != null && intersect.height == bounds.height) {
-				return new Point(Math.max(0, bounds.x
-						+ getAvarageCharWith(tree) * CHAR_INDENT), bounds.y
-						+ bounds.height);
-			}
-			return null;
-
-		default:
-			Rectangle[] rectangles = new Rectangle[items.length];
-			for (int i = 0; i < rectangles.length; i++) {
-				rectangles[i] = items[i].getBounds();
-			}
-			Point cursorLocation = tree.getDisplay().getCursorLocation();
-			Point result = findBestLocation(getIncludedPositions(rectangles,
-					clientArea), tree.toControl(cursorLocation));
-			if (result != null) {
-				result.x = result.x + getAvarageCharWith(tree) * CHAR_INDENT;
-			}
-			return result;
-		}
-	}
-
-	/**
-	 * Hook to compute the menu location if the focus widget is a table widget.
-	 * 
-	 * @param table
-	 *            the table widget that has the focus
-	 * 
-	 * @return a widget relative position of the menu to pop up or
-	 *         <code>null</code> if now position inside the widget can be
-	 *         computed
-	 */
-	private Point computeMenuLocation(Table table) {
-		TableItem[] items = table.getSelection();
-		Rectangle clientArea = table.getClientArea();
-		switch (items.length) {
-		case 0: {
-			return null;
-		}
-		case 1: {
-			Rectangle bounds = items[0].getBounds(0);
-			Rectangle iBounds = items[0].getImageBounds(0);
-			Rectangle intersect = clientArea.intersection(bounds);
-			if (intersect != null && intersect.height == bounds.height) {
-				return new Point(Math.max(0, bounds.x + iBounds.width
-						+ getAvarageCharWith(table) * CHAR_INDENT), bounds.y
-						+ bounds.height);
-			}
-			return null;
-
-		}
-		default: {
-			Rectangle[] rectangles = new Rectangle[items.length];
-			for (int i = 0; i < rectangles.length; i++) {
-				rectangles[i] = items[i].getBounds(0);
-			}
-			Rectangle iBounds = items[0].getImageBounds(0);
-			Point cursorLocation = table.getDisplay().getCursorLocation();
-			Point result = findBestLocation(getIncludedPositions(rectangles,
-					clientArea), table.toControl(cursorLocation));
-			if (result != null) {
-				result.x = result.x + iBounds.width + getAvarageCharWith(table)
-						* CHAR_INDENT;
-			}
-			return result;
-		}
-		}
-	}
-
-	private Point[] getIncludedPositions(Rectangle[] rectangles,
-			Rectangle widgetBounds) {
-		List result = new ArrayList();
-		for (int i = 0; i < rectangles.length; i++) {
-			Rectangle rectangle = rectangles[i];
-			Rectangle intersect = widgetBounds.intersection(rectangle);
-			if (intersect != null && intersect.height == rectangle.height) {
-				result.add(new Point(intersect.x, intersect.y
-						+ intersect.height));
-			}
-		}
-		return (Point[]) result.toArray(new Point[result.size()]);
-	}
-
-	private Point findBestLocation(Point[] points, Point relativeCursor) {
-		Point result = null;
-		double bestDist = Double.MAX_VALUE;
-		for (int i = 0; i < points.length; i++) {
-			Point point = points[i];
-			int a = 0;
-			int b = 0;
-			if (point.x > relativeCursor.x) {
-				a = point.x - relativeCursor.x;
-			} else {
-				a = relativeCursor.x - point.x;
-			}
-			if (point.y > relativeCursor.y) {
-				b = point.y - relativeCursor.y;
-			} else {
-				b = relativeCursor.y - point.y;
-			}
-			double dist = Math.sqrt(a * a + b * b);
-			if (dist < bestDist) {
-				result = point;
-				bestDist = dist;
-			}
-		}
-		return result;
-	}
-
-	private int getAvarageCharWith(Control control) {
-		GC gc = null;
-		try {
-			gc = new GC(control);
-			return gc.getFontMetrics().getAverageCharWidth();
-		} finally {
-			if (gc != null) {
-				gc.dispose();
-			}
-		}
-	}
-
-	/**
-	 * Dispose of this quick menu creator. Subclasses should ensure that they
-	 * call this method.
-	 */
-	public void dispose() {
-		if (quickMenu != null) {
-			quickMenu.dispose();
-			quickMenu = null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/RetargetAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/RetargetAction.java
deleted file mode 100644
index a13563d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/RetargetAction.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.core.commands.IHandlerAttributes;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.internal.PartSite;
-
-/**
- * A <code>RetargetAction</code> tracks the active part in the workbench.  
- * Each RetargetAction has an ID.  If the active part provides an action 
- * handler for the ID the enable and check state of the RetargetAction
- * is determined from the enable and check state of the handler.  If the 
- * active part does not provide an action handler then this action is 
- * disabled.
- * </p>
- * <p>
- * <b>Note:</b> instances of this class add themselves as listeners to their
- * action handler. It is important for the creator of a retarget action to call
- * dispose when the action is no longer needed. This will ensure that the 
- * listener is removed.
- * </p>
- * <p>
- * This class may be instantiated. It is not intented to be subclassed.
- * </p>
- *
- * @since 2.0 
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class RetargetAction extends PartEventAction implements
-        ActionFactory.IWorkbenchAction {
-
-    /**
-     * The help listener assigned to this action, or <code>null</code> if none.
-     */
-    private HelpListener localHelpListener;
-
-    private boolean enableAccelerator = true;
-
-    private IAction handler;
-
-    private IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            RetargetAction.this.propagateChange(event);
-        }
-    };
-
-    /**
-     * Constructs a RetargetAction with the given action id and text.
-     * 
-     * @param actionID the retargetable action id
-     * @param text the action's text, or <code>null</code> if there is no text
-     */
-    public RetargetAction(String actionID, String text) {
-        this(actionID, text, IAction.AS_UNSPECIFIED);
-    }
-
-    /**
-     * Constructs a RetargetAction with the given action id, text and style.
-     * 
-     * @param actionID the retargetable action id
-     * @param text the action's text, or <code>null</code> if there is no text
-     * @param style one of <code>AS_PUSH_BUTTON</code>, <code>AS_CHECK_BOX</code>,
-     * 		<code>AS_DROP_DOWN_MENU</code>, <code>AS_RADIO_BUTTON</code>, and
-     * 		<code>AS_UNSPECIFIED</code>
-     * @since 3.0
-     */
-    public RetargetAction(String actionID, String text, int style) {
-        super(text, style);
-        setId(actionID);
-        setEnabled(false);
-        super.setHelpListener(new HelpListener() {
-            public void helpRequested(HelpEvent e) {
-                HelpListener listener = null;
-                if (handler != null) {
-                    // if we have a handler, see if it has a help listener
-                    listener = handler.getHelpListener();
-                    if (listener == null) {
-						// use our own help listener
-                        listener = localHelpListener;
-					}
-                }
-                if (listener != null) {
-					// pass on the event
-                    listener.helpRequested(e);
-				}
-            }
-        });
-    }
-
-    /**
-     * Disposes of the action and any resources held.
-     */
-    public void dispose() {
-        if (handler != null) {
-            handler.removePropertyChangeListener(propertyChangeListener);
-            handler = null;
-        }
-        IWorkbenchPart part = getActivePart();
-        if (part != null) {
-            IWorkbenchPartSite site = part.getSite();
-            SubActionBars bars = (SubActionBars) ((PartSite) site).getActionBars();
-            bars.removePropertyChangeListener(propertyChangeListener);
-        }
-    }
-
-    /**
-     * Enables the accelerator for this action. 
-     *
-     * @param b the new enable state
-     */
-    public void enableAccelerator(boolean b) {
-        enableAccelerator = b;
-    }
-
-    /* (non-Javadoc)
-     * Retaget actions do not have accelerators.  It is up to the
-     * part to hook the accelerator.
-     */
-    public int getAccelerator() {
-        if (enableAccelerator) {
-			return super.getAccelerator();
-		}
-        return 0;
-    }
-
-    /**
-     * A workbench part has been activated. Try to connect
-     * to it.
-     *
-     * @param part the workbench part that has been activated
-     */
-    public void partActivated(IWorkbenchPart part) {
-        super.partActivated(part);
-        IWorkbenchPartSite site = part.getSite();
-        SubActionBars bars = (SubActionBars) ((PartSite) site).getActionBars();
-        bars.addPropertyChangeListener(propertyChangeListener);
-        setActionHandler(bars.getGlobalActionHandler(getId()));
-    }
-
-    /**
-     * A workbench part has been closed. 
-     *
-     * @param part the workbench part that has been closed
-     */
-    public void partClosed(IWorkbenchPart part) {
-        IWorkbenchPart activePart = part.getSite().getPage().getActivePart();
-        if (activePart != null) {
-			// We are going to get a part activated message so don't bother setting the 
-            // action handler to null. This prevents enablement flash in the toolbar
-            return;
-		}
-        if (part == getActivePart()) {
-			setActionHandler(null);
-		}
-        super.partClosed(part);
-    }
-
-    /**
-     * A workbench part has been deactivated. Disconnect from it.
-     *
-     * @param part the workbench part that has been deactivated
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-        super.partDeactivated(part);
-        IWorkbenchPartSite site = part.getSite();
-        SubActionBars bars = (SubActionBars) ((PartSite) site).getActionBars();
-        bars.removePropertyChangeListener(propertyChangeListener);
-
-        IWorkbenchPart activePart = part.getSite().getPage().getActivePart();
-        if (activePart != null) {
-			// We are going to get a part activated message so don't bother setting the 
-            // action handler to null. This prevents enablement flash in the toolbar
-            return;
-		}
-
-        setActionHandler(null);
-    }
-
-    /**
-     * Either the action handler itself has changed, or the configured action
-     * handlers on the action bars have changed. Update self.
-     */
-    protected void propagateChange(PropertyChangeEvent event) {
-        if (event.getProperty().equals(IAction.ENABLED)) {
-            Boolean bool = (Boolean) event.getNewValue();
-            setEnabled(bool.booleanValue());
-        } else if (event.getProperty().equals(IAction.CHECKED)) {
-            Boolean bool = (Boolean) event.getNewValue();
-            setChecked(bool.booleanValue());
-        } else if (event.getProperty().equals(SubActionBars.P_ACTION_HANDLERS)) {
-            if (event.getSource() instanceof IActionBars) {
-                IActionBars bars = (IActionBars) event.getSource();
-                setActionHandler(bars.getGlobalActionHandler(getId()));
-            }
-        }
-    }
-
-    /**
-     * Invoked when an action occurs. 
-     */
-    public void run() {
-        if (handler != null) {
-			handler.run();
-		}
-    }
-
-    /**
-     * Invoked when an action occurs. 
-     */
-    public void runWithEvent(Event event) {
-        if (handler != null) {
-			handler.runWithEvent(event);
-		}
-    }
-
-    /**
-     * Returns the action handler. This method was made public in 3.0.
-     * 
-     * @return The current action handling this retargettable action. This
-     *         handler will be <code>null</code> if there is no current
-     *         handler.
-     */
-    public IAction getActionHandler() {
-        return handler;
-    }
-    
-    public final boolean isHandled() {
-        return (handler != null);
-    }
-
-    /**
-     * Sets the action handler.
-     */
-    protected void setActionHandler(IAction newHandler) {
-        // Optimize.
-        if (newHandler == handler) {
-			return;
-		}
-
-        // Clear old action.
-        if (handler != null) {
-            handler.removePropertyChangeListener(propertyChangeListener);
-            handler = null;
-        }
-
-        // Set new action.
-		IAction oldHandler = handler;
-        handler = newHandler;
-        if (handler == null) {
-            setEnabled(false);
-            if (getStyle() == AS_CHECK_BOX || getStyle() == AS_RADIO_BUTTON) {
-                setChecked(false);
-            }
-        } else {
-            setEnabled(handler.isEnabled());
-            if (getStyle() == AS_CHECK_BOX || getStyle() == AS_RADIO_BUTTON) {
-                setChecked(handler.isChecked());
-            }
-            handler.addPropertyChangeListener(propertyChangeListener);
-        }
-		
-		// Notify listeners that the handler has changed.
-        firePropertyChange(IHandlerAttributes.ATTRIBUTE_HANDLED, oldHandler,
-                newHandler);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void setChecked(boolean checked) {
-        super.setChecked(checked);
-        // This call may come from the SWT control event handler
-        // itself, so notify the handler action to keep things
-        // in sync.
-        if (handler != null) {
-			handler.setChecked(checked);
-		}
-    }
-
-    /** 
-     * The <code>RetargetAction</code> implementation of this method declared on
-     * <code>IAction</code> stores the help listener in a local field. The
-     * supplied listener is only used if there is no hanlder.
-     */
-    public void setHelpListener(HelpListener listener) {
-        localHelpListener = listener;
-    }
-
-	/**
-	 * Returns a string representation of this action.
-	 * 
-	 * @return A string representation of this action.
-	 * 
-	 * @since 3.2 
-	 */
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("RetargetAction("); //$NON-NLS-1$
-		buffer.append(getId());
-		buffer.append(')');
-
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SelectionProviderAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SelectionProviderAction.java
deleted file mode 100644
index 5180cea..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SelectionProviderAction.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-
-/**
- * The abstract superclass for actions that listen to selection changes
- * from a particular selection provider. This implementation splits the current
- * selection along structured/unstructured lines, providing a convenient place
- * to monitor selection changes that require adjusting action state.
- * <p>
- * Subclasses must implement the following <code>IAction</code> method:
- * <ul>
- *   <li><code>run</code> - to do the action's work</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may reimplement either of the following methods:
- * <ul>
- *   <li><code>selectionChanged(IStructuredSelection)</code></li> 
- *   <li><code>selectionChanged(ISelection)</code></li> 
- * </ul>
- * </p>
- */
-public abstract class SelectionProviderAction extends Action implements
-        ISelectionChangedListener {
-
-    /**
-     * The selection provider that is the target of this action.
-     */
-    private ISelectionProvider provider;
-
-    /**
-     * Creates a new action with the given text that monitors selection changes
-     * within the given selection provider.
-     * The resulting action is added as a listener on the selection provider.
-     *
-     * @param provider the selection provider that will provide selection notification
-     * @param text the string used as the text for the action, 
-     *   or <code>null</code> if there is no text
-     */
-    protected SelectionProviderAction(ISelectionProvider provider, String text) {
-        super(text);
-        this.provider = provider;
-        provider.addSelectionChangedListener(this);
-    }
-
-    /**
-     * Disposes this action by removing it as a listener from the selection provider.
-     * This must be called by the creator of the action when the action is no longer needed.
-     */
-    public void dispose() {
-        provider.removeSelectionChangedListener(this);
-    }
-
-    /**
-     * Returns the current selection in the selection provider.
-     *
-     * @return the current selection in the selection provider
-     */
-    public ISelection getSelection() {
-        return provider.getSelection();
-    }
-
-    /**
-     * Returns the selection provider that is the target of this action.
-     *
-     * @return the target selection provider of this action
-     */
-    public ISelectionProvider getSelectionProvider() {
-        return provider;
-    }
-
-    /**
-     * Returns the current structured selection in the selection provider, or an
-     * empty selection if nothing is selected or if selection does not include
-     * objects (for example, raw text).
-     *
-     * @return the current structured selection in the selection provider
-     */
-    public IStructuredSelection getStructuredSelection() {
-        ISelection selection = provider.getSelection();
-        if (selection instanceof IStructuredSelection) {
-			return (IStructuredSelection) selection;
-		} else {
-			return new StructuredSelection();
-		}
-    }
-
-    /**
-     * Notifies this action that the given (non-structured) selection has changed
-     * in the selection provider.
-     * <p>
-     * The <code>SelectionProviderAction</code> implementation of this method
-     * does nothing. Subclasses may reimplement to react to this selection change.
-     * </p>
-     *
-     * @param selection the new selection
-     */
-    public void selectionChanged(ISelection selection) {
-    }
-
-    /**
-     * Notifies this action that the given structured selection has changed
-     * in the selection provider.
-     * <p>
-     * The <code>SelectionProviderAction</code> implementation of this method
-     * does nothing. Subclasses may reimplement to react to this selection change.
-     * </p>
-     *
-     * @param selection the new selection
-     */
-    public void selectionChanged(IStructuredSelection selection) {
-        // Hook in subclass.
-    }
-
-    /**
-     * The <code>SelectionProviderAction</code> implementation of this 
-     * <code>ISelectionChangedListener</code> method calls 
-     * <code>selectionChanged(IStructuredSelection)</code> if the selection is
-     * a structured selection but <code>selectionChanged(ISelection)</code> if it is
-     * not. Subclasses should override either of those methods method to react to
-     * selection changes.
-     */
-    public final void selectionChanged(SelectionChangedEvent event) {
-        ISelection selection = event.getSelection();
-        if (selection instanceof IStructuredSelection) {
-			selectionChanged((IStructuredSelection) selection);
-		} else {
-			selectionChanged(selection);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SimpleWildcardTester.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SimpleWildcardTester.java
deleted file mode 100644
index ad08a49..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/SimpleWildcardTester.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.actions;
-
-/**
- * Implements an algorithm for very simple pattern matching in a string.
- * There is only one feature: "*" may be used at the start or the end of the
- * pattern to represent "one or more characters".
- */
-public final class SimpleWildcardTester {
-    /**
-     * Returns whether a string matches a particular pattern.
-     *
-     * @param pattern the input pattern
-     * @param str the string to test
-     * @return <code>true</code> if a match occurs; <code>false</code>otherwise.
-     */
-    public static boolean testWildcard(String pattern, String str) {
-        if (pattern.equals("*")) {//$NON-NLS-1$
-            return true;
-        } else if (pattern.startsWith("*")) {//$NON-NLS-1$
-            if (pattern.endsWith("*")) {//$NON-NLS-1$
-                if (pattern.length() == 2) {
-					return true;
-				}
-                return str.indexOf(pattern.substring(1, pattern.length() - 1)) >= 0;
-            }
-            return str.endsWith(pattern.substring(1));
-        } else if (pattern.endsWith("*")) {//$NON-NLS-1$
-            return str.startsWith(pattern.substring(0, pattern.length() - 1));
-        } else {
-            return str.equals(pattern);
-        }
-    }
-
-    /**
-     * Returns whether a string matches a particular pattern.  Both string and
-     * pattern are converted to lower case before pattern matching occurs.
-     *
-     * @param pattern the input pattern
-     * @param str the string to test
-     * @return <code>true</code> if a match occurs; <code>false</code>otherwise.
-     */
-    public static boolean testWildcardIgnoreCase(String pattern, String str) {
-
-        //If str is null there was no extension to test
-        if (str == null) {
-			return false;
-		}
-        pattern = pattern.toLowerCase();
-        str = str.toLowerCase();
-        return testWildcard(pattern, str);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java
deleted file mode 100644
index 4d9278c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/WorkingSetFilterActionGroup.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.actions;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkingSetComparator;
-import org.eclipse.ui.internal.WorkingSetMenuContributionItem;
-import org.eclipse.ui.internal.actions.ClearWorkingSetAction;
-import org.eclipse.ui.internal.actions.EditWorkingSetAction;
-import org.eclipse.ui.internal.actions.SelectWorkingSetAction;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Adds working set filter actions (set / clear / edit)
- * 
- * @since 2.1 
- */
-public class WorkingSetFilterActionGroup extends ActionGroup {
-    private static final String TAG_WORKING_SET_NAME = "workingSetName"; //$NON-NLS-1$
-
-	private static final String TAG_IS_WINDOW_WORKING_SET = "isWindowWorkingSet"; //$NON-NLS-1$
-	
-    /**
-     * Indicates if working set was changed
-     */
-    public static final String CHANGE_WORKING_SET = "changeWorkingSet"; //$NON-NLS-1$
-    
-    private static final String START_SEPARATOR_ID = "workingSetGroupStartSeparator"; //$NON-NLS-1$
-
-    private static final String SEPARATOR_ID = "workingSetGroupSeparator"; //$NON-NLS-1$
-
-	private static final String WORKING_SET_ACTION_GROUP = "workingSetActionGroup"; //$NON-NLS-1$
-
-    private IWorkingSet workingSet = null;
-
-    private ClearWorkingSetAction clearWorkingSetAction;
-
-    private SelectWorkingSetAction selectWorkingSetAction;
-
-    private EditWorkingSetAction editWorkingSetAction;
-
-    private IPropertyChangeListener workingSetUpdater;
-
-    private int mruMenuCount;
-
-    private IMenuManager menuManager;
-
-    private IMenuListener menuListener;
-
-	private IWorkbenchWindow workbenchWindow;
-
-	private IWorkbenchPage page;
-
-	private boolean allowWindowWorkingSetByDefault;
-
-    /**
-	 * Creates a new instance of the receiver.
-	 * 
-	 * @param shell
-	 *            shell to open dialogs and wizards on
-	 * @param workingSetUpdater
-	 *            property change listener notified when a working set is set
-	 * @since 3.2 Please note that it is expected that clients treat any
-	 *        selected working sets whose
-	 *        {@link IWorkingSet#isAggregateWorkingSet()} method returns
-	 *        <code>true</code> somewhat differently from traditional working
-	 *        sets. Please see the documentation for
-	 *        {@link IWorkbenchPage#getAggregateWorkingSet()} for details.
-	 */
-    public WorkingSetFilterActionGroup(Shell shell,
-            IPropertyChangeListener workingSetUpdater) {
-        Assert.isNotNull(shell);
-
-        this.workingSetUpdater = workingSetUpdater;
-        clearWorkingSetAction = new ClearWorkingSetAction(this);
-        selectWorkingSetAction = new SelectWorkingSetAction(this, shell);
-        editWorkingSetAction = new EditWorkingSetAction(this, shell);
-        
-        workbenchWindow = Util.getWorkbenchWindowForShell(shell);
-        allowWindowWorkingSetByDefault = false;
-		// set the default working set to be that of the window.
-		page = workbenchWindow.getActivePage();
-		if (page == null) {
-			IWorkbenchPage[] pages = workbenchWindow.getPages();
-			if (pages.length > 0) {
-				page = pages[0];
-			}
-		}
-    }
-
-    /**
-	 * Adds actions for the most recently used working sets to the specified
-	 * menu manager.
-	 * 
-	 * @param menuManager
-	 *            menu manager to add actions to
-	 */
-    private void addMruWorkingSetActions(IMenuManager menuManager) {
-        IWorkingSet[] workingSets = PlatformUI.getWorkbench()
-                .getWorkingSetManager().getRecentWorkingSets();
-        List sortedWorkingSets = Arrays.asList(workingSets);
-        Collections.sort(sortedWorkingSets, new WorkingSetComparator());
-
-        Iterator iter = sortedWorkingSets.iterator();
-        mruMenuCount = 0;
-        while (iter.hasNext()) {
-            IWorkingSet workingSet = (IWorkingSet) iter.next();
-            if (workingSet != null) {
-                IContributionItem item = new WorkingSetMenuContributionItem(
-                        ++mruMenuCount, this, workingSet);
-                menuManager.insertBefore(SEPARATOR_ID, item);
-            }
-        }
-    }
-
- 
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.actions.ActionGroup#dispose()
-     */
-    public void dispose() {
-        if (menuManager != null) {
-			menuManager.removeMenuListener(menuListener);
-		}
-        super.dispose();
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
-     */
-    public void fillActionBars(IActionBars actionBars) {
-        menuManager = actionBars.getMenuManager();
-        
-        if(menuManager.find(IWorkbenchActionConstants.MB_ADDITIONS) != null) 
-        	menuManager.insertAfter(IWorkbenchActionConstants.MB_ADDITIONS, new Separator(WORKING_SET_ACTION_GROUP));
-        else
-        	menuManager.add(new Separator(WORKING_SET_ACTION_GROUP));
-        
-        menuManager.appendToGroup(WORKING_SET_ACTION_GROUP, selectWorkingSetAction);
-        menuManager.appendToGroup(WORKING_SET_ACTION_GROUP, clearWorkingSetAction);
-        menuManager.appendToGroup(WORKING_SET_ACTION_GROUP, editWorkingSetAction);
-        menuManager.appendToGroup(WORKING_SET_ACTION_GROUP, new Separator(START_SEPARATOR_ID));
-        menuManager.appendToGroup(WORKING_SET_ACTION_GROUP, new Separator(SEPARATOR_ID));
-
-        menuListener = new IMenuListener() {
-            public void menuAboutToShow(IMenuManager manager) {
-                removePreviousMruWorkingSetActions(manager);
-                addMruWorkingSetActions(manager);
-            }
-        };
-        menuManager.addMenuListener(menuListener);
-    }
-    
-    
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
-	 */
-	public void fillContextMenu(IMenuManager menuManager) {
-		menuManager.add(selectWorkingSetAction);
-		menuManager.add(clearWorkingSetAction);
-		menuManager.add(editWorkingSetAction);
-		menuManager.add(new Separator());
-		menuManager.add(new Separator(SEPARATOR_ID));
-
-		menuListener = new IMenuListener() {
-			public void menuAboutToShow(IMenuManager manager) {
-				removePreviousMruWorkingSetActions(manager);
-				addMruWorkingSetActions(manager);
-			}
-		};
-		menuManager.addMenuListener(menuListener);
-	}
-
-    /**
-     * Returns the working set which is currently selected.
-     * 
-     * @return the working set which is currently selected.
-     */
-    public IWorkingSet getWorkingSet() {
-        return workingSet;
-    }
-
-    /**
-     * Removes the most recently used working set actions that were
-     * added to the specified menu.
-     * 
-     * @param menuManager menu manager to remove actions from
-     */
-    private void removePreviousMruWorkingSetActions(IMenuManager menuManager) {
-        for (int i = 1; i <= mruMenuCount; i++) {
-			menuManager.remove(WorkingSetMenuContributionItem.getId(i));
-		}
-    }
-
-    /**
-     * Sets the current working set.
-     * 
-     * @param newWorkingSet the new working set
-     */
-    public void setWorkingSet(IWorkingSet newWorkingSet) {
-        IWorkingSet oldWorkingSet = workingSet;
-
-        workingSet = newWorkingSet;
-        // Update action
-        clearWorkingSetAction.setEnabled(newWorkingSet != null);
-        editWorkingSetAction.setEnabled(newWorkingSet != null && newWorkingSet.isEditable());
-
-        firePropertyChange(newWorkingSet, oldWorkingSet);
-    }
-
-    /**
-     * Fire the property change to the updater if there is one available.
-     * 
-     * @param newWorkingSet the new working set
-     * @param oldWorkingSet the previous working set
-     * @since 3.2
-     */
-	private void firePropertyChange(IWorkingSet newWorkingSet, IWorkingSet oldWorkingSet) {
-		// Update viewer
-        if (workingSetUpdater != null) {
-            workingSetUpdater.propertyChange(new PropertyChangeEvent(this,
-                    WorkingSetFilterActionGroup.CHANGE_WORKING_SET,
-                    oldWorkingSet, newWorkingSet));
-        }
-	}
-
-	/**
-	 * Saves the state of the filter actions in a memento.
-	 * 
-	 * @param memento
-	 *            the memento
-	 * @since 3.3
-	 */
-	public void saveState(IMemento memento) {
-		String workingSetName = ""; //$NON-NLS-1$
-		boolean isWindowWorkingSet = false;
-		if (workingSet != null) {
-			if (workingSet.isAggregateWorkingSet()) {
-				isWindowWorkingSet = true;
-			} else {
-				workingSetName = workingSet.getName();
-			}
-		}
-		memento.putString(TAG_IS_WINDOW_WORKING_SET,
-				isWindowWorkingSet ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
-		memento.putString(TAG_WORKING_SET_NAME, workingSetName);
-	}
-
-	/**
-	 * Restores the state of the filter actions from a memento.
-	 * <p>
-	 * Note: This method does not refresh the viewer.
-	 * </p>
-	 * 
-	 * @param memento
-	 * @since 3.3
-	 */
-	public void restoreState(IMemento memento) {
-		boolean isWindowWorkingSet;
-		if (memento.getString(TAG_IS_WINDOW_WORKING_SET) != null) {
-			isWindowWorkingSet = Boolean.valueOf(
-					memento.getString(TAG_IS_WINDOW_WORKING_SET))
-					.booleanValue();
-		} else {
-			isWindowWorkingSet = useWindowWorkingSetByDefault();
-		}
-		String workingSetName = memento.getString(TAG_WORKING_SET_NAME);
-		boolean hasWorkingSetName = workingSetName != null
-				&& workingSetName.length() > 0;
-
-		IWorkingSet ws = null;
-		// First handle name if present.
-		if (hasWorkingSetName) {
-			ws = PlatformUI.getWorkbench().getWorkingSetManager()
-					.getWorkingSet(workingSetName);
-		} else if (isWindowWorkingSet && page != null) {
-			ws = page.getAggregateWorkingSet();
-		}
-
-		setWorkingSet(ws);
-	}
-
-	private boolean useWindowWorkingSetByDefault() {
-		return allowWindowWorkingSetByDefault
-				&& PlatformUI
-						.getPreferenceStore()
-						.getBoolean(
-								IWorkbenchPreferenceConstants.USE_WINDOW_WORKING_SET_BY_DEFAULT);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/package.html
deleted file mode 100644
index 05c521c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/package.html
+++ /dev/null
@@ -1,28 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes for actions and operations used in a workbench
-window, page, or part in the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-Actions for resource management, project build and workbench page management
-are provided to encourage a standard look and feel across views and editors
-contributed by independent system vendors. Base classes are also provided
-for selection oriented actions which enable or disable based upon selection
-in a part or viewer. These should be used by ISV's to define actions for
-menus, toolbars, and context menus.
-<p>Action which leads to resource modification should take advantage of
-the <tt>WorkspaceModifyOperation</tt> classes.&nbsp; These classes are
-used to defer events which typically occur as a result of workspace changes
-(such as the firing of resource deltas, performance of autobuilds, etc.)
-until the outermost operation has successfully completed.&nbsp; This deferral
-leads to an optimized, faster execution of resource modification because
-fewer deltas and autobuilds are performed.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
deleted file mode 100644
index a84b7ff..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivitiesPreferencePage.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.util.Hashtable;
-import java.util.Properties;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.PreferencePage;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.ws.ActivityEnabler;
-import org.eclipse.ui.internal.activities.ws.ActivityMessages;
-
-/**
- * Preference page that allows configuration of the activity set. This page may
- * be used by product developers to provide basic ability to tweak the enabled
- * activity set. You may provide the certain strings to this class via method #2
- * of {@link org.eclipse.core.runtime.IExecutableExtension}.
- * 
- * @see #ACTIVITY_NAME
- * @see #ACTIVITY_PROMPT_BUTTON
- * @see #ACTIVITY_PROMPT_BUTTON_TOOLTIP
- * @since 3.1
- */
-public final class ActivitiesPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage, IExecutableExtension {
-
-	/**
-	 * The name to use for the activities.  Ie: "Capabilities".
-	 */
-    public static final String ACTIVITY_NAME = "activityName"; //$NON-NLS-1$
-    
-	/**
-	 * The label to be used for the prompt button. Ie: "&Prompt when enabling capabilities".
-	 */    
-    public static final String ACTIVITY_PROMPT_BUTTON = "activityPromptButton"; //$NON-NLS-1$
-    
-	/**
-	 * The tooltip to be used for the prompt button. Ie: "Prompt when a feature is first used that requires enablement of capabilities".
-	 */    
-    public static final String ACTIVITY_PROMPT_BUTTON_TOOLTIP = "activityPromptButtonTooltip"; //$NON-NLS-1$
-    
-	private Button activityPromptButton;
-
-    private IWorkbench workbench;
-
-    private ActivityEnabler enabler;
-    
-    private Properties strings = new Properties();
-
-    private IMutableActivityManager workingCopy;
-    
-    /**
-     * Create the prompt for activity enablement.
-     * 
-     * @param composite the parent
-     */
-    protected void createActivityPromptPref(Composite composite) {
-        activityPromptButton = new Button(composite, SWT.CHECK);
-        activityPromptButton.setText(strings.getProperty(ACTIVITY_PROMPT_BUTTON, ActivityMessages.activityPromptButton)); 
-        activityPromptButton.setToolTipText(strings.getProperty(ACTIVITY_PROMPT_BUTTON_TOOLTIP, ActivityMessages.activityPromptToolTip));
-
-        setActivityButtonState();
-    }
-
-    /**
-     * Sets the state of the activity prompt button from preferences.
-     */
-    private void setActivityButtonState() {
-        activityPromptButton.setSelection(getPreferenceStore().getBoolean(
-                IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createContents(Composite parent) {
-    	initializeDialogUnits(parent);
-    	
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-        composite.setLayout(layout);
-
-        createActivityPromptPref(composite);
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        activityPromptButton.setLayoutData(data);
-
-        data = new GridData(GridData.FILL_BOTH);
-        workingCopy = workbench.getActivitySupport().createWorkingCopy();
-        enabler = new ActivityEnabler(workingCopy, strings);
-        enabler.createControl(composite).setLayoutData(data);
-        
-        Dialog.applyDialogFont(composite);
-
-        return composite;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-     */
-    public void init(IWorkbench aWorkbench) {
-        this.workbench = aWorkbench;
-        setPreferenceStore(WorkbenchPlugin.getDefault().getPreferenceStore());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.IPreferencePage#performOk()
-     */
-    public boolean performOk() {
-        enabler.updateActivityStates();
-        workbench.getActivitySupport().setEnabledActivityIds(workingCopy.getEnabledActivityIds());
-        
-        getPreferenceStore().setValue(
-                IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT,
-                activityPromptButton.getSelection());
-
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
-     */
-    protected void performDefaults() {
-        enabler.restoreDefaults();
-        activityPromptButton.setSelection(getPreferenceStore()
-                .getDefaultBoolean(
-                        IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT));
-        super.performDefaults();
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) {
-		if (data instanceof Hashtable) {
-			strings.putAll((Hashtable)data);
-		}		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
deleted file mode 100644
index 4fd75be..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityCategoryPreferencePage.java
+++ /dev/null
@@ -1,722 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-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.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.OverlayIcon;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.InternalActivityHelper;
-import org.eclipse.ui.internal.activities.ws.ActivityEnabler;
-import org.eclipse.ui.internal.activities.ws.ActivityMessages;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Activities preference page that primarily shows categories and can optionally
- * show an advanced dialog that allows fine-tune adjustmenet of activities. This
- * page may be used by product developers to provide basic ability to tweak the
- * enabled activity set. You may provide certain strings to this class via
- * method #2 of {@link org.eclipse.core.runtime.IExecutableExtension}.
- * 
- * @see #ACTIVITY_NAME
- * @see #ALLOW_ADVANCED
- * @see #CAPTION_MESSAGE
- * @see #CATEGORY_NAME
- * @see #ACTIVITY_PROMPT_BUTTON
- * @see #ACTIVITY_PROMPT_BUTTON_TOOLTIP
- * 
- * @since 3.1
- */
-public final class ActivityCategoryPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage, IExecutableExtension {
-
-    /**
-     * The name to use for the activities.  Ie: "Capabilities".
-     */
-    public static final String ACTIVITY_NAME = "activityName"; //$NON-NLS-1$
-
-    /**
-     * The parameter to use if you want the page to show the allow button. Must
-     * be true or false.
-     */
-    public static final String ALLOW_ADVANCED = "allowAdvanced"; //$NON-NLS-1$
-    
-    /**
-     * The string to use for the message at the top of the preference page.
-     */
-    public static final String CAPTION_MESSAGE = "captionMessage"; //$NON-NLS-1$
-    
-    /**
-     * The name to use for the activity categories.  Ie: "Roles".
-     */
-    public static final String CATEGORY_NAME = "categoryName"; //$NON-NLS-1$
-    
-    /**
-     * The label to be used for the prompt button. Ie: "&Prompt when enabling capabilities".
-     */    
-    public static final String ACTIVITY_PROMPT_BUTTON = "activityPromptButton"; //$NON-NLS-1$
-
-    /**
-     * The tooltip to be used for the prompt button. Ie: "Prompt when a feature is first used that requires enablement of capabilities".
-     */    
-    public static final String ACTIVITY_PROMPT_BUTTON_TOOLTIP = "activityPromptButtonTooltip"; //$NON-NLS-1$
-    
-    private class AdvancedDialog extends TrayDialog {
-
-    	private static final String DIALOG_SETTINGS_SECTION = "ActivityCategoryPreferencePageAdvancedDialogSettings"; //$NON-NLS-1$
-
-    	
-        ActivityEnabler enabler;
-        /**
-         * @param parentShell
-         */
-        protected AdvancedDialog(Shell parentShell) {
-            super(parentShell);
-         }
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-         */
-        protected void configureShell(Shell newShell) {
-            super.configureShell(newShell);
-            String activityName = strings.getProperty(ACTIVITY_NAME, ActivityMessages.ActivityEnabler_activities);
-            activityName = activityName.replaceAll("&", ""); //strips possible mnemonic //$NON-NLS-1$ //$NON-NLS-2$
-			newShell.setText(NLS.bind(           		
-            		ActivityMessages.ActivitiesPreferencePage_advancedDialogTitle,
-            		activityName		
-            ));
-        }
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-         */
-        protected Control createDialogArea(Composite parent) {
-            Composite composite = (Composite) super.createDialogArea(parent);
-            enabler = new ActivityEnabler(workingCopy, strings);
-            Control enablerControl = enabler.createControl(composite);
-            enablerControl.setLayoutData(new GridData(GridData.FILL_BOTH));
-            return composite;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-         */
-        protected void okPressed() {
-            enabler.updateActivityStates();            
-            super.okPressed();
-        }
-        
-    	/* (non-Javadoc)
-         * @see org.eclipse.jface.window.Dialog#getDialogBoundsSettings()
-         * 
-         * @since 3.2
-         */
-    	protected IDialogSettings getDialogBoundsSettings() {
-            IDialogSettings settings = WorkbenchPlugin.getDefault().getDialogSettings();
-            IDialogSettings section = settings.getSection(DIALOG_SETTINGS_SECTION);
-            if (section == null) {
-                section = settings.addNewSection(DIALOG_SETTINGS_SECTION);
-            } 
-            return section;
-    	}
-    	
-        /*
-         * (non-Javadoc)
-         * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-         */
-        protected boolean isResizable() {
-        	return true;
-        }
-    }
-    private class CategoryLabelProvider extends LabelProvider implements
-            ITableLabelProvider, IActivityManagerListener {
-
-        private LocalResourceManager manager = new LocalResourceManager(
-                JFaceResources.getResources());
-
-        private ImageDescriptor lockDescriptor;
-
-        private boolean decorate;
-
-        /**
-         * @param decorate
-         */
-        public CategoryLabelProvider(boolean decorate) {
-            this.decorate = decorate;
-            lockDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-                    PlatformUI.PLUGIN_ID, "icons/full/ovr16/lock_ovr.gif"); //$NON-NLS-1$
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
-         *      int)
-         */
-        public Image getColumnImage(Object element, int columnIndex) {
-            ICategory category = (ICategory) element;
-            ImageDescriptor descriptor = PlatformUI.getWorkbench()
-                    .getActivitySupport().getImageDescriptor(category);
-            if (descriptor != null) {
-                try {
-                    if (decorate) {
-                        if (isLocked(category)) {
-                            ImageData originalImageData = descriptor
-                                    .getImageData();
-                            OverlayIcon overlay = new OverlayIcon(
-                                    descriptor, lockDescriptor, new Point(
-                                            originalImageData.width,
-                                            originalImageData.height));
-                            return manager.createImage(overlay);
-                        }
-                    }
-
-                    return manager.createImage(descriptor);
-                } catch (DeviceResourceException e) {
-                    WorkbenchPlugin.log(e);
-                }
-            }  
-            return null;
-        }
-      
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-         */
-        public String getText(Object element) {
-            String name = null;
-            ICategory category = (ICategory) element;
-            try {
-                name = category.getName();
-            } catch (NotDefinedException e) {
-                name = category.getId();
-            }
-            if (decorate && isLocked(category)) {
-                name = NLS.bind(ActivityMessages.ActivitiesPreferencePage_lockedMessage, name);
-            }
-            return name;
-        }   
-       
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
-         */
-        public String getColumnText(Object element, int columnIndex) {
-        	return getText(element);
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-         */
-        public void dispose() {
-            super.dispose();
-            manager.dispose();
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.ui.activities.IActivityManagerListener#activityManagerChanged(org.eclipse.ui.activities.ActivityManagerEvent)
-         */
-        public void activityManagerChanged(
-                ActivityManagerEvent activityManagerEvent) {
-            if (activityManagerEvent.haveEnabledActivityIdsChanged()) {
-                updateCategoryCheckState();
-                fireLabelProviderChanged(new LabelProviderChangedEvent(this));
-            }
-        }
-    }
-
-    private class CategoryContentProvider implements IStructuredContentProvider {
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-         */
-        public Object[] getElements(Object inputElement) {
-            // convert to category objects
-            return WorkbenchActivityHelper.resolveCategories(workingCopy,
-                    (Set) inputElement);
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-         */
-        public void dispose() {
-
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-         *      java.lang.Object, java.lang.Object)
-         */
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-
-        }
-    }
-
-    private class EmptyCategoryFilter extends ViewerFilter {
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
-         *      java.lang.Object, java.lang.Object)
-         */
-        public boolean select(Viewer viewer, Object parentElement,
-				Object element) {
-			ICategory category = (ICategory) element;
-			if (InternalActivityHelper.getActivityIdsForCategory(workingCopy,
-					category).isEmpty()) {
-				return false;
-			}
-			return true;
-		}
-    }
-
-    protected IWorkbench workbench;
-
-    private CheckboxTableViewer categoryViewer;
-
-    private TableViewer dependantViewer;
-
-    private Text descriptionText;
-
-    private IMutableActivityManager workingCopy;
-
-    private Button activityPromptButton;
-
-    private boolean allowAdvanced = false;
-
-    private Button advancedButton;
-    
-    private Properties strings = new Properties();
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createContents(Composite parent) {
-    	initializeDialogUnits(parent);
-    	
-        Composite composite = new Composite(parent, SWT.NONE);  
-        GridLayout layout = new GridLayout(2, false);
-        layout.marginHeight = layout.marginWidth = 0;
-        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-        composite.setLayout(layout);
-        Label label = new Label(composite, SWT.WRAP);
-        label
-                .setText(strings.getProperty(CAPTION_MESSAGE, ActivityMessages.ActivitiesPreferencePage_captionMessage));
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        data.widthHint = 400;
-        data.horizontalSpan = 2;        
-        label.setLayoutData(data);
-        label = new Label(composite, SWT.NONE); //spacer
-        data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-        data.horizontalSpan = 2;
-        label.setLayoutData(data);
-        createPromptButton(composite);
-        createCategoryArea(composite);
-        createDetailsArea(composite);
-        createButtons(composite);
-        
-        workbench.getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.CAPABILITY_PREFERENCE_PAGE);
-        
-        Dialog.applyDialogFont(composite);
-        
-        return composite;
-    }
-
-    /**
-     * @param composite
-     */
-    private void createPromptButton(Composite composite) {
-        activityPromptButton = new Button(composite, SWT.CHECK);
-        activityPromptButton.setText(strings.getProperty(ACTIVITY_PROMPT_BUTTON, ActivityMessages.activityPromptButton));
-        activityPromptButton.setToolTipText(strings.getProperty(ACTIVITY_PROMPT_BUTTON_TOOLTIP, ActivityMessages.activityPromptToolTip));
-        GridData data = new GridData();
-        data.horizontalSpan = 2;
-        activityPromptButton.setLayoutData(data);
-        activityPromptButton.setSelection(getPreferenceStore()
-                .getBoolean(
-                        IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT));
-    }
-
-    private void createButtons(final Composite parent) {
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout(4, false);
-        layout.marginHeight = layout.marginWidth = 0;
-        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-        composite.setLayout(layout);
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        data.horizontalSpan = 2;
-        composite.setLayoutData(data);
-
-        Button enableAll = new Button(composite, SWT.PUSH);
-        enableAll.addSelectionListener(new SelectionAdapter() {
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-                workingCopy.setEnabledActivityIds(workingCopy
-                        .getDefinedActivityIds());
-            }
-        });
-        enableAll.setText(ActivityMessages.ActivityEnabler_selectAll); 
-        setButtonLayoutData(enableAll);
-
-        Button disableAll = new Button(composite, SWT.PUSH);
-        disableAll.addSelectionListener(new SelectionAdapter() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-                workingCopy.setEnabledActivityIds(Collections.EMPTY_SET);
-            }
-        });
-        disableAll.setText(ActivityMessages.ActivityEnabler_deselectAll); 
-        setButtonLayoutData(disableAll);
-        
-        if (allowAdvanced) {
-        		Label spacer = new Label(composite, SWT.NONE);
-        		data = new GridData(GridData.GRAB_HORIZONTAL);
-        		spacer.setLayoutData(data);
-            advancedButton = new Button(composite, SWT.PUSH);
-            advancedButton.addSelectionListener(new SelectionAdapter() {
-
-                /*
-                 * (non-Javadoc)
-                 * 
-                 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                 */
-                public void widgetSelected(SelectionEvent e) {
-                    AdvancedDialog dialog = new AdvancedDialog(parent.getShell());
-                    dialog.open(); // logic for updating the working copy is in the dialog class.                    
-                }
-            });
-            advancedButton.setText(ActivityMessages.ActivitiesPreferencePage_advancedButton);
-            setButtonLayoutData(advancedButton);
-        }
-    }
-
-    /**
-     * @param parent
-     */
-    private void createDetailsArea(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = layout.marginWidth = 0;
-        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-        composite.setLayout(layout);
-        composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-        new Label(composite, SWT.NONE).setText(ActivityMessages.ActivityEnabler_description);
-        descriptionText = new Text(composite, SWT.WRAP | SWT.READ_ONLY | SWT.BORDER);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = 100;
-        data.widthHint = 200;
-        descriptionText.setLayoutData(data);
-
-        new Label(composite, SWT.NONE).setText(ActivityMessages.ActivitiesPreferencePage_requirements);            
-        dependantViewer = new TableViewer(composite, SWT.BORDER);
-        dependantViewer.getControl().setLayoutData(
-                new GridData(GridData.FILL_BOTH));
-        dependantViewer.setContentProvider(new CategoryContentProvider());
-        dependantViewer.addFilter(new EmptyCategoryFilter());
-        dependantViewer.setLabelProvider(new CategoryLabelProvider(false));
-        dependantViewer.setInput(Collections.EMPTY_SET);
-    }
-
-    /**
-     * @param parent
-     */
-    private void createCategoryArea(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = layout.marginWidth = 0;
-        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);        
-        composite.setLayout(layout);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.widthHint = 200;
-        composite.setLayoutData(data);
-        Label label = new Label(composite, SWT.NONE);
-        label.setText(strings.getProperty(CATEGORY_NAME, ActivityMessages.ActivityEnabler_categories) + ':');
-        Table table = new Table(composite, SWT.CHECK | SWT.BORDER | SWT.SINGLE);
-        table.addSelectionListener(new SelectionAdapter() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				if (e.detail == SWT.CHECK) {
-					TableItem tableItem = (TableItem) e.item;
-
-					ICategory category = (ICategory) tableItem.getData();
-					if (isLocked(category)) {
-						tableItem.setChecked(true);
-						e.doit = false; // veto the check
-						return;
-					}
-					Set activitySet = WorkbenchActivityHelper
-							.getActivityIdsForCategory(category);
-					if (tableItem.getChecked()) {
-						activitySet.addAll(workingCopy.getEnabledActivityIds());
-					} else {
-						HashSet newSet = new HashSet(workingCopy
-								.getEnabledActivityIds());
-						newSet.removeAll(activitySet);
-						activitySet = newSet;
-					}
-
-					workingCopy.setEnabledActivityIds(activitySet);
-					updateCategoryCheckState(); // even though we're reacting to
-					// a check change we may need to
-					// refresh a greying change.
-					// Just process the whole thing.
-				}
-			}
-		});
-        categoryViewer = new CheckboxTableViewer(table);
-        categoryViewer.getControl().setLayoutData(
-                new GridData(GridData.FILL_BOTH));
-        categoryViewer.setContentProvider(new CategoryContentProvider());
-        CategoryLabelProvider categoryLabelProvider = new CategoryLabelProvider(
-                true);
-        workingCopy.addActivityManagerListener(categoryLabelProvider);
-        categoryViewer.setLabelProvider(categoryLabelProvider);
-        categoryViewer.setComparator(new ViewerComparator());
-        categoryViewer.addFilter(new EmptyCategoryFilter());
-
-        categoryViewer
-                .addSelectionChangedListener(new ISelectionChangedListener() {
-
-                    /*
-                     * (non-Javadoc)
-                     * 
-                     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-                     */
-                    public void selectionChanged(SelectionChangedEvent event) {
-                        ICategory element = (ICategory) ((IStructuredSelection) event
-                                .getSelection()).getFirstElement();
-                        setDetails(element);
-                    }
-                });
-        categoryViewer.setInput(workingCopy.getDefinedCategoryIds());
-
-		updateCategoryCheckState(); 
-    }
-
-	/**
-	 * Updates the check and grey state of the categories in the category viewer.
-	 * 
-	 * @since 3.2
-	 */
-	private void updateCategoryCheckState() {
-		ICategory[] enabledCategories = getEnabledCategories();
-		ICategory[] partiallyEnabledCategories = getPartialCategories();
-		Object[] allChecked = new Object[enabledCategories.length
-				+ partiallyEnabledCategories.length];
-		System.arraycopy(enabledCategories, 0, allChecked, 0, enabledCategories.length);
-		System.arraycopy(partiallyEnabledCategories, 0, allChecked, enabledCategories.length, partiallyEnabledCategories.length);
-		categoryViewer.setCheckedElements(allChecked);
-		categoryViewer.setGrayedElements(partiallyEnabledCategories);
-	}
-
-    private ICategory[] getPartialCategories() {
-		return WorkbenchActivityHelper.resolveCategories(workingCopy,
-				InternalActivityHelper
-						.getPartiallyEnabledCategories(workingCopy));
-	}
-
-	private ICategory[] getEnabledCategories() {
-		return WorkbenchActivityHelper.resolveCategories(workingCopy,
-				InternalActivityHelper.getEnabledCategories(workingCopy));
-	}
-
-    protected void setDetails(ICategory category) {
-        if (category == null) {
-            clearDetails();
-            return;
-        }
-        Set categories = null;
-        if (WorkbenchActivityHelper.isEnabled(workingCopy, category.getId())) {
-            categories = WorkbenchActivityHelper.getDisabledCategories(
-                    workingCopy, category.getId());
-
-        } else {
-            categories = WorkbenchActivityHelper.getEnabledCategories(
-                    workingCopy, category.getId());
-        }
-
-        categories = WorkbenchActivityHelper.getContainedCategories(
-                workingCopy, category.getId());
-        dependantViewer.setInput(categories);
-        try {
-            descriptionText.setText(category.getDescription());
-        } catch (NotDefinedException e) {
-            descriptionText.setText(""); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Clear the details area.
-     */
-    protected void clearDetails() {
-        dependantViewer.setInput(Collections.EMPTY_SET);
-        descriptionText.setText(""); //$NON-NLS-1$
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-     */
-    public void init(IWorkbench workbench) {
-        this.workbench = workbench;
-        workingCopy = workbench.getActivitySupport().createWorkingCopy();
-        setPreferenceStore(WorkbenchPlugin.getDefault().getPreferenceStore());
-    }
-
-    /**
-     * Return whether the category is locked.
-     * 
-     * @param category
-     *            the category to test
-     * @return whether the category is locked
-     */
-    protected boolean isLocked(ICategory category) {
-        return !WorkbenchActivityHelper.getDisabledCategories(workingCopy,
-                category.getId()).isEmpty();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.PreferencePage#performOk()
-     */
-    public boolean performOk() {
-        workbench.getActivitySupport().setEnabledActivityIds(
-                workingCopy.getEnabledActivityIds());
-        getPreferenceStore().setValue(
-                IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT,
-                activityPromptButton.getSelection());
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
-     */
-    protected void performDefaults() {
-        super.performDefaults();
-        activityPromptButton.setSelection(getPreferenceStore()
-                .getDefaultBoolean(
-                        IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT));
-        
-        Set defaultEnabled = new HashSet();
-        Set activityIds = workingCopy.getDefinedActivityIds();
-        for (Iterator i = activityIds.iterator(); i.hasNext();) {
-            String activityId = (String) i.next();
-            IActivity activity = workingCopy.getActivity(activityId);
-            try {
-                if (activity.isDefaultEnabled()) {
-                    defaultEnabled.add(activityId);
-                }
-            } catch (NotDefinedException e) {
-                // this can't happen - we're iterating over defined activities.
-            }
-        }
-        
-        workingCopy.setEnabledActivityIds(defaultEnabled);
-    }
-    
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-     *      java.lang.String, java.lang.Object)
-     */
-    public void setInitializationData(IConfigurationElement config,
-            String propertyName, Object data) {
-        if (data instanceof Hashtable) {
-            Hashtable table = (Hashtable)data;
-            allowAdvanced = Boolean.valueOf((String) table.remove(ALLOW_ADVANCED)).booleanValue();
-            strings.putAll(table);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityEvent.java
deleted file mode 100644
index e556b9c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityEvent.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this class describes changes to an instance of 
- * <code>IActivity</code>.  This class does not give details as to the 
- * specifics of a change, only that the given property on the source object has 
- * changed.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivityListener#activityChanged(ActivityEvent)
- */
-public final class ActivityEvent {
-    private IActivity activity;
-
-    private boolean activityRequirementBindingsChanged;
-
-    private boolean activityPatternBindingsChanged;
-
-    private boolean definedChanged;
-
-    private boolean enabledChanged;
-    
-    private boolean defaultEnabledChanged;
-
-    private boolean nameChanged;
-
-    private boolean descriptionChanged;
-
-    /**
-     * Creates a new instance of this class. Since 3.1 this method will assume
-     * that the default enabled state has not changed.
-     * 
-     * @param activity
-     *            the instance of the interface that changed.
-     * @param activityRequirementBindingsChanged
-     *            <code>true</code>, iff the activityRequirementBindings
-     *            property changed.
-     * @param activityPatternBindingsChanged
-     *            <code>true</code>, iff the activityPatternBindings property
-     *            changed.
-     * @param definedChanged
-     *            <code>true</code>, iff the defined property changed.
-     * @param descriptionChanged
-     *            <code>true</code>, iff the description property changed.
-     * @param enabledChanged
-     *            <code>true</code>, iff the enabled property changed.
-     * @param nameChanged
-     *            <code>true</code>, iff the name property changed.
-     */
-    public ActivityEvent(IActivity activity,
-            boolean activityRequirementBindingsChanged,
-            boolean activityPatternBindingsChanged, boolean definedChanged,
-            boolean descriptionChanged, boolean enabledChanged,
-            boolean nameChanged) {
-        
-        this(activity, 
-                activityRequirementBindingsChanged,
-                activityPatternBindingsChanged,
-                definedChanged,
-                descriptionChanged,
-                enabledChanged,
-                nameChanged, 
-                false);
-    }
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param activity
-     *        the instance of the interface that changed.
-     * @param activityRequirementBindingsChanged
-     *        <code>true</code>, iff the activityRequirementBindings property changed.
-     * @param activityPatternBindingsChanged
-     *        <code>true</code>, iff the activityPatternBindings property changed.
-     * @param definedChanged
-     *        <code>true</code>, iff the defined property changed.
-     * @param descriptionChanged
-     * 		  <code>true</code>, iff the description property changed.
-     * @param enabledChanged
-     *      <code>true</code>, iff the enabled property changed.
-     * @param nameChanged
-     *        <code>true</code>, iff the name property changed.
-     * @param defaultEnabledChanged 
-     * 		  <code>true</code>, iff the default enabled property changed.
-     * @since 3.1
-     */
-    public ActivityEvent(IActivity activity,
-            boolean activityRequirementBindingsChanged,
-            boolean activityPatternBindingsChanged, boolean definedChanged,
-            boolean descriptionChanged, boolean enabledChanged,
-            boolean nameChanged,
-            boolean defaultEnabledChanged) {
-        if (activity == null) {
-			throw new NullPointerException();
-		}
-
-        this.activity = activity;
-        this.activityRequirementBindingsChanged = activityRequirementBindingsChanged;
-        this.activityPatternBindingsChanged = activityPatternBindingsChanged;
-        this.definedChanged = definedChanged;
-        this.enabledChanged = enabledChanged;
-        this.nameChanged = nameChanged;
-        this.descriptionChanged = descriptionChanged;
-        this.defaultEnabledChanged = defaultEnabledChanged;
-    }
-
-    
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IActivity getActivity() {
-        return activity;
-    }
-
-    /**
-     * Returns whether or not the defined property changed.
-     * 
-     * @return <code>true</code>, iff the defined property changed.
-     */
-    public boolean hasDefinedChanged() {
-        return definedChanged;
-    }
-
-    /**
-     * Returns whether or not the enabled property changed.
-     * 
-     * @return <code>true</code>, iff the enabled property changed.
-     */
-    public boolean hasEnabledChanged() {
-        return enabledChanged;
-    }
-    
-    /**
-     * Returns whether or not the default enabled property changed.
-     * 
-     * @return <code>true</code>, iff the default enabled property changed.
-     * @since 3.1
-     */
-    public boolean hasDefaultEnabledChanged() {
-        return defaultEnabledChanged;
-    }
-
-    /**
-     * Returns whether or not the name property changed.
-     * 
-     * @return <code>true</code>, iff the name property changed.
-     */
-    public boolean hasNameChanged() {
-        return nameChanged;
-    }
-
-    /**
-     * Returns whether or not the description property changed.
-     * 
-     * @return <code>true</code>, iff the description property changed.
-     */
-    public boolean hasDescriptionChanged() {
-        return descriptionChanged;
-    }
-
-    /**
-     * Returns whether or not the activityRequirementBindings property changed.
-     * 
-     * @return <code>true</code>, iff the activityRequirementBindings property changed.
-     */
-    public boolean haveActivityRequirementBindingsChanged() {
-        return activityRequirementBindingsChanged;
-    }
-
-    /**
-     * Returns whether or not the activityPatternBindings property changed.
-     * 
-     * @return <code>true</code>, iff the activityPatternBindings property changed.
-     */
-    public boolean haveActivityPatternBindingsChanged() {
-        return activityPatternBindingsChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityManagerEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityManagerEvent.java
deleted file mode 100644
index f20a371..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ActivityManagerEvent.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * An instance of this class describes changes to an instance of 
- * <code>IActivityManager</code>.  This class does not give details as to the 
- * specifics of a change, only that the given property on the source object has 
- * changed.
- * 
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivityManagerListener#activityManagerChanged(ActivityManagerEvent)
- */
-public final class ActivityManagerEvent {
-    private IActivityManager activityManager;
-
-    private boolean definedActivityIdsChanged;
-
-    private boolean definedCategoryIdsChanged;
-
-    private boolean enabledActivityIdsChanged;
-
-    /**
-     * The set of activity identifiers (strings) that were defined before the
-     * change occurred. If the defined activities did not changed, then this
-     * value is <code>null</code>.
-     */
-    private final Set previouslyDefinedActivityIds;
-
-    /**
-     * The set of category identifiers (strings) that were defined before the
-     * change occurred. If the defined category did not changed, then this value
-     * is <code>null</code>.
-     */
-    private final Set previouslyDefinedCategoryIds;
-
-    /**
-     * The set of activity identifiers (strings) that were enabled before the
-     * change occurred. If the enabled activities did not changed, then this
-     * value is <code>null</code>.
-     */
-    private final Set previouslyEnabledActivityIds;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param activityManager
-     *            the instance of the interface that changed.
-     * @param definedActivityIdsChanged
-     *            <code>true</code>, iff the definedActivityIds property
-     *            changed.
-     * @param definedCategoryIdsChanged
-     *            <code>true</code>, iff the definedCategoryIds property
-     *            changed.
-     * @param enabledActivityIdsChanged
-     *            <code>true</code>, iff the enabledActivityIds property
-     *            changed.
-     * @param previouslyDefinedActivityIds
-     *            the set of identifiers to previously defined activities. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if definedActivityIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            definedActivityIdsChanged is <code>true</code>.
-     * @param previouslyDefinedCategoryIds
-     *            the set of identifiers to previously defined category. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if definedCategoryIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            definedCategoryIdsChanged is <code>true</code>.
-     * @param previouslyEnabledActivityIds
-     *            the set of identifiers to previously enabled activities. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if enabledActivityIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            enabledActivityIdsChanged is <code>true</code>.
-     */
-    public ActivityManagerEvent(IActivityManager activityManager,
-            boolean definedActivityIdsChanged,
-            boolean definedCategoryIdsChanged,
-            boolean enabledActivityIdsChanged,
-            final Set previouslyDefinedActivityIds,
-            final Set previouslyDefinedCategoryIds,
-            final Set previouslyEnabledActivityIds) {
-        if (activityManager == null) {
-			throw new NullPointerException();
-		}
-
-        if (!definedActivityIdsChanged && previouslyDefinedActivityIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (!definedCategoryIdsChanged && previouslyDefinedCategoryIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (!enabledActivityIdsChanged && previouslyEnabledActivityIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (definedActivityIdsChanged) {
-            this.previouslyDefinedActivityIds = Util.safeCopy(
-                    previouslyDefinedActivityIds, String.class);
-        } else {
-            this.previouslyDefinedActivityIds = null;
-        }
-
-        if (definedCategoryIdsChanged) {
-            this.previouslyDefinedCategoryIds = Util.safeCopy(
-                    previouslyDefinedCategoryIds, String.class);
-        } else {
-            this.previouslyDefinedCategoryIds = null;
-        }
-
-        if (enabledActivityIdsChanged) {
-            this.previouslyEnabledActivityIds = Util.safeCopy(
-                    previouslyEnabledActivityIds, String.class);
-        } else {
-            this.previouslyEnabledActivityIds = null;
-        }
-
-        this.activityManager = activityManager;
-        this.definedActivityIdsChanged = definedActivityIdsChanged;
-        this.definedCategoryIdsChanged = definedCategoryIdsChanged;
-        this.enabledActivityIdsChanged = enabledActivityIdsChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IActivityManager getActivityManager() {
-        return activityManager;
-    }
-
-    /**
-     * Returns the activity identifiers that were previously defined.
-     * 
-     * @return The set of defined activity identifiers before the changed; may
-     *         be empty, but never <code>null</code>. This set will only
-     *         contain strings.
-     */
-    public final Set getPreviouslyDefinedActivityIds() {
-        return previouslyDefinedActivityIds;
-    }
-
-    /**
-     * Returns the category identifiers that were previously defined.
-     * 
-     * @return The set of defined category identifiers before the changed; may
-     *         be empty, but never <code>null</code>. This set will only
-     *         contain strings.
-     */
-    public final Set getPreviouslyDefinedCategoryIds() {
-        return previouslyDefinedCategoryIds;
-    }
-
-    /**
-     * Returns the activity identifiers that were previously enabled.
-     * 
-     * @return The set of enabled activity identifiers before the changed; may
-     *         be empty, but never <code>null</code>. This set will only
-     *         contain strings.
-     */
-    public final Set getPreviouslyEnabledActivityIds() {
-        return previouslyEnabledActivityIds;
-    }
-
-    /**
-     * Returns whether or not the definedActivityIds property changed.
-     * 
-     * @return <code>true</code>, iff the definedActivityIds property changed.
-     */
-    public boolean haveDefinedActivityIdsChanged() {
-        return definedActivityIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the definedCategoryIds property changed.
-     * 
-     * @return <code>true</code>, iff the definedCategoryIds property changed.
-     */
-    public boolean haveDefinedCategoryIdsChanged() {
-        return definedCategoryIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the enabledActivityIds property changed.
-     * 
-     * @return <code>true</code>, iff the enabledActivityIds property changed.
-     */
-    public boolean haveEnabledActivityIdsChanged() {
-        return enabledActivityIdsChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/CategoryEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/CategoryEvent.java
deleted file mode 100644
index 3caa90d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/CategoryEvent.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this class describes changes to an instance of 
- * <code>ICategory</code>.  This class does not give details as to the 
- * specifics of a change, only that the given property on the source object has 
- * changed.
- * 
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICategoryListener#categoryChanged(CategoryEvent)
- */
-public final class CategoryEvent {
-    private ICategory category;
-
-    private boolean categoryActivityBindingsChanged;
-
-    private boolean definedChanged;
-
-    private boolean nameChanged;
-
-    private boolean descriptionChanged;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param category
-     *        the instance of the interface that changed.
-     * @param categoryActivityBindingsChanged
-     *        <code>true</code>, iff the categoryActivityBindings property changed.
-     * @param definedChanged
-     *        <code>true</code>, iff the defined property changed.
-     * @param descriptionChanged
-     *        <code>true</code>, iff the description property changed. 
-     * @param nameChanged
-     *        <code>true</code>, iff the name property changed.
-     */
-    public CategoryEvent(ICategory category,
-            boolean categoryActivityBindingsChanged, boolean definedChanged,
-            boolean descriptionChanged, boolean nameChanged) {
-        if (category == null) {
-			throw new NullPointerException();
-		}
-
-        this.category = category;
-        this.categoryActivityBindingsChanged = categoryActivityBindingsChanged;
-        this.definedChanged = definedChanged;
-        this.nameChanged = nameChanged;
-        this.descriptionChanged = descriptionChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public ICategory getCategory() {
-        return category;
-    }
-
-    /**
-     * Returns whether or not the defined property changed.
-     * 
-     * @return <code>true</code>, iff the defined property changed.
-     */
-    public boolean hasDefinedChanged() {
-        return definedChanged;
-    }
-
-    /**
-     * Returns whether or not the name property changed.
-     * 
-     * @return <code>true</code>, iff the name property changed.
-     */
-    public boolean hasNameChanged() {
-        return nameChanged;
-    }
-
-    /**
-     * Returns whether or not the description property changed.
-     * 
-     * @return <code>true</code>, iff the description property changed.
-     */
-    public boolean hasDescriptionChanged() {
-        return descriptionChanged;
-    }
-
-    /**
-     * Returns whether or not the categoryActivityBindings property changed.
-     * 
-     * @return <code>true</code>, iff the categoryActivityBindings property changed.
-     */
-    public boolean haveCategoryActivityBindingsChanged() {
-        return categoryActivityBindingsChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivity.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivity.java
deleted file mode 100644
index d303e1e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivity.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-
-/**
- * An instance of this interface is an activity as defined by the extension
- * point <code>org.eclipse.ui.activities</code>.
- * 
- * <p>
- * An instance of this interface can be obtained from an instance of 
- * <code>IActivityManager</code> for any identifier, whether or not an activity 
- * with that identifier is defined in the extension registry.
- * </p>
- * 
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation, which can cause dynamic changes to the
- * extension registry.  A client may get an <code>IActivity</code> handle that 
- * is currently undefined ({@link #isDefined()} equals <code>false</code>) and 
- * listen for it to become defined.
- * </p>
- * 
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivityManager
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActivity extends Comparable {
-
-    /**
-     * Registers an instance of <code>IActivityListener</code> to listen for
-     * changes to properties of this instance.
-     * 
-     * @param activityListener
-     *            the instance to register. Must not be <code>null</code>.
-     *            If an attempt is made to register an instance which is
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void addActivityListener(IActivityListener activityListener);
-
-    /**
-     * Returns the set of activity requirement bindings for this instance.
-     * <p>
-     * This method will return all activity requirement bindings for this
-     * instance, whether or not this instance is defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of activity requirement bindings. This set may be empty,
-     *         but is guaranteed not to be <code>null</code>. If this set is
-     *         not empty, it is guaranteed to only contain instances of 
-     * 		   <code>IActivityRequirementBinding</code>.
-     * @see IActivityRequirementBinding
-     */
-    Set getActivityRequirementBindings();
-
-    /**
-     * Returns the set of activity pattern bindings for this instance.
-     * <p>
-     * This method will return all activity pattern bindings for this instance,
-     * whether or not this instance is defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of activity pattern bindings. This set may be empty, but
-     *         is guaranteed not to be <code>null</code>. If this set is not
-     *        empty, it is guaranteed to only contain instances of <code>IActivityPatternBinding</code>.
-     * @see IActivityPatternBinding
-     */
-    Set getActivityPatternBindings();
-
-    /**
-     * Returns the identifier of this instance.
-     * 
-     * @return the identifier of this instance. Guaranteed not to be <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * Returns the name of this instance suitable for display to the user.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the name of this instance. Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if this instance is not defined.
-     */
-    String getName() throws NotDefinedException;
-
-    /**
-     * Returns the description of this instance suitable for display to the user.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the description of this instance. Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if this instance is not defined.
-     */
-    String getDescription() throws NotDefinedException;
-
-    /**
-     * Returns whether or not this instance is defined.  A defined activity
-     * may have a name, description and bindings (both pattern and relational).
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff this instance is defined.
-     */
-    boolean isDefined();
-
-    /**
-     * Returns whether or not this instance is enabled.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff this instance is enabled.
-     */
-    boolean isEnabled();
-    
-    /**
-     * Returns whether or not this instance should be enabled by default.
-     * 
-     * @return <code>true</code>, iff this instance should be enabled by default.
-     * @throws NotDefinedException
-     *             if this instance is not defined. 
-     * @since 3.1 
-     */
-    boolean isDefaultEnabled() throws NotDefinedException;
-
-    /**
-     * Removes an instance of <code>IActivityListener</code> listening
-     * for changes to properties of this instance.
-     * 
-     * @param activityListener
-     *            the instance to remove. Must not be <code>null</code>.
-     *            If an attempt is made to remove an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeActivityListener(IActivityListener activityListener);
-    
-    /**
-	 * Return an expression used to enable and disable this activity. If the
-	 * expression is not <code>null</code>, this activity will be entirely
-	 * controlled by the expression state.
-	 * 
-	 * @return The core expression, or <code>null</code>
-	 * @since 3.4
-	 */
-    Expression getExpression();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityListener.java
deleted file mode 100644
index 9e17134..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>IActivity</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivity#addActivityListener(IActivityListener)
- * @see IActivity#removeActivityListener(IActivityListener)
- */
-public interface IActivityListener {
-
-    /**
-     * Notifies that one or more properties of an instance of <code>IActivity</code>
-     * have changed. Specific details are described in the <code>ActivityEvent</code>.
-     * 
-     * @param activityEvent
-     *            the activity event. Guaranteed not to be <code>null</code>.
-     */
-    void activityChanged(ActivityEvent activityEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManager.java
deleted file mode 100644
index 83f04ff..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManager.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-/**
- * An instance of this interface allows clients to manage activities, as
- * defined by the extension point <code>org.eclipse.ui.activities</code>.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActivityManager {
-
-    /**
-     * Registers an instance of <code>IActivityManagerListener</code> to
-     * listen for changes to properties of this instance.
-     * 
-     * @param activityManagerListener
-     *            the instance to register. Must not be <code>null</code>.
-     *            If an attempt is made to register an instance which is
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void addActivityManagerListener(
-            IActivityManagerListener activityManagerListener);
-
-    /**
-     * Returns an instance of <code>IActivity</code> given an identifier.
-     * 
-     * @param activityId
-     *            an identifier. Must not be <code>null</code>
-     * @return an instance of <code>IActivity</code>.
-     */
-    IActivity getActivity(String activityId);
-
-    /**
-     * Returns an instance of <code>ICategory</code> given an identifier.
-     * 
-     * @param categoryId
-     *            an identifier. Must not be <code>null</code>
-     * @return an instance of <code>ICategory</code>.
-     */
-    ICategory getCategory(String categoryId);
-
-    /**
-     * Returns the set of identifiers to defined activities.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to defined activities. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    Set getDefinedActivityIds();
-
-    /**
-     * Returns the set of identifiers to defined categories.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to defined categories. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    Set getDefinedCategoryIds();
-
-    /**
-     * Returns the set of identifiers to enabled activities.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to enabled activities. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    Set getEnabledActivityIds();
-
-    /**
-     * Returns an instance of <code>IIdentifier</code> given an identifier.
-     * 
-     * @param identifierId
-     *            an identifier. Must not be <code>null</code>
-     * @return an instance of <code>IIdentifier</code>.
-     */
-    IIdentifier getIdentifier(String identifierId);
-
-    /**
-     * Removes an instance of <code>IActivityManagerListener</code>
-     * listening for changes to properties of this instance.
-     * 
-     * @param activityManagerListener
-     *            the instance to remove. Must not be <code>null</code>.
-     *            If an attempt is made to remove an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeActivityManagerListener(
-            IActivityManagerListener activityManagerListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManagerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManagerListener.java
deleted file mode 100644
index 2026c28..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityManagerListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>IActivityManager</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivityManager#addActivityManagerListener(IActivityManagerListener)
- * @see IActivityManager#removeActivityManagerListener(IActivityManagerListener)
- */
-public interface IActivityManagerListener {
-
-    /**
-     * Notifies that one or more properties of an instance of <code>IActivityManager</code>
-     * have changed. Specific details are described in the <code>ActivityManagerEvent</code>.
-     * 
-     * @param activityManagerEvent
-     *            the activity manager event. Guaranteed not to be <code>null</code>.
-     */
-    void activityManagerChanged(ActivityManagerEvent activityManagerEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityPatternBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityPatternBinding.java
deleted file mode 100644
index 53f40fe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityPatternBinding.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.regex.Pattern;
-
-/**
- * An instance of this interface represents a binding between an activity and a
- * regular expression pattern.  It's typically unnecessary to use this interface 
- * directly.  Rather, clients wishing to test strings against activity patterns
- * should use instances of <code>IIdentifier</code>.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivity
- * @see IIdentifier
- * @see IActivityManager#getIdentifier(String)
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActivityPatternBinding extends Comparable {
-
-    /**
-     * Returns the identifier of the activity represented in this binding.
-     * 
-     * @return the identifier of the activity represented in this binding.
-     *         Guaranteed not to be <code>null</code>.
-     */
-    String getActivityId();
-
-    /**
-	 * Returns the pattern represented in this binding. This pattern should
-	 * conform to the regular expression syntax described by the
-	 * <code>java.util.regex.Pattern</code> class. If
-	 * {@link #isEqualityPattern()} is <code>true</code> a Pattern will be
-	 * generated based on the escaped version of the String returned by
-	 * {@link #getString()}.
-	 * 
-	 * @return the pattern. Guaranteed not to be <code>null</code>.
-	 */
-	Pattern getPattern();
-    
-    /**
-	 * If {@link #isEqualityPattern()} is <code>true</code> this will return
-	 * the raw <em>pattern</em> string. Otherwise it will return the string
-	 * version of the compiled pattern.
-	 * 
-	 * @return The raw <em>pattern</em> string, or the string version of the
-	 *         compiled pattern, depending on {@link #isEqualityPattern()}.
-	 * @since 3.4
-	 */
-	String getString();
-
-	/**
-	 * Answers whether or not the pattern should be treated as a regular string
-	 * or a regular expression. If <code>true</code>, this pattern binding
-	 * will represent an equality match between the pattern and a target ID
-	 * rather than a regular expression match.
-	 * 
-	 * @return whether the pattern should be treated as regular string
-	 * @since 3.4
-	 */
-	boolean isEqualityPattern();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityRequirementBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityRequirementBinding.java
deleted file mode 100644
index ab819bc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IActivityRequirementBinding.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this interface represents a binding between two activities.
- * The relationship can be interpreted as 'activity needs requiredActivity to 
- * be enabled'.
- * Enablement of the activity requires enablement of the required activity. 
- * 
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivity
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActivityRequirementBinding extends Comparable {
-
-    /**
-     * Returns the identifier of the activity represented in this
-     * binding. 
-     * 
-     * @return the identifier of the activity represented in this
-     *         binding. Guaranteed not to be <code>null</code>.
-     */
-    String getActivityId();
-
-    /**
-     * Returns the identifier of the required activity represented in this
-     * binding.  The enablement of the activity described by {@link #getActivityId()}
-     * requires the enablement of this activity.
-     * 
-     * @return the identifier of the required activity represented in this
-     *         binding. Guaranteed not to be <code>null</code>.
-     */
-    String getRequiredActivityId();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategory.java
deleted file mode 100644
index b107632..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategory.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-/**
- * An instance of this interface is a category as defined by the extension
- * point <code>org.eclipse.ui.activities</code>.
- * <p>
- * An instance of this interface can be obtained from an instance of 
- * <code>IActivityManager</code> for any identifier, whether or not a category 
- * with that identifier is defined in the extension registry.
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation, which can cause dynamic changes to the
- * extension registry.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivityManager
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ICategory extends Comparable {
-
-    /**
-     * Registers an instance of <code>ICategoryListener</code> to listen for
-     * changes to properties of this instance.
-     * 
-     * @param categoryListener
-     *            the instance to register. Must not be <code>null</code>.
-     *            If an attempt is made to register an instance which is
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void addCategoryListener(ICategoryListener categoryListener);
-
-    /**
-     * Returns the set of category activity bindings for this instance.
-     * <p>
-     * This method will return all category activity bindings for this
-     * instance, whether or not this instance is defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of category activity bindings. This set may be empty,
-     *         but is guaranteed not to be <code>null</code>. If this set is
-     *         not empty, it is guaranteed to only contain instances of <code>ICategoryActivityBinding</code>.
-     * @see ICategoryActivityBinding
-     */
-    Set getCategoryActivityBindings();
-
-    /**
-     * Returns the identifier of this instance.
-     * 
-     * @return the identifier of this instance. Guaranteed not to be <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * Returns the name of this instance suitable for display to the user.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the name of this instance. Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if this instance is not defined.
-     */
-    String getName() throws NotDefinedException;
-
-    /**
-     * Returns the description of this instance suitable for display to the user.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the description of this instance. Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if this instance is not defined.
-     */
-    String getDescription() throws NotDefinedException;
-
-    /**
-     * Returns whether or not this instance is defined.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff this instance is defined.
-     */
-    boolean isDefined();
-
-    /**
-     * Removes an instance of <code>ICategoryListener</code> listening
-     * for changes to properties of this instance.
-     * 
-     * @param categoryListener
-     *            the instance to remove. Must not be <code>null</code>.
-     *            If an attempt is made to remove an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeCategoryListener(ICategoryListener categoryListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryActivityBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryActivityBinding.java
deleted file mode 100644
index 3533c6d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryActivityBinding.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this interface represents a binding between a category and an
- * activity.
- * 
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivity
- * @see ICategory
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ICategoryActivityBinding extends Comparable {
-
-    /**
-     * Returns the identifier of the activity represented in this binding.
-     * 
-     * @return the identifier of the activity represented in this binding.
-     *         Guaranteed not to be <code>null</code>.
-     */
-    String getActivityId();
-
-    /**
-     * Returns the identifier of the category represented in this binding.
-     * 
-     * @return the identifier of the category represented in this binding.
-     *         Guaranteed not to be <code>null</code>.
-     */
-    String getCategoryId();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryListener.java
deleted file mode 100644
index e41208e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ICategoryListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>ICategory</code>.
- * 
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICategory#addCategoryListener(ICategoryListener)
- * @see ICategory#removeCategoryListener(ICategoryListener)
- */
-public interface ICategoryListener {
-
-    /**
-     * Notifies that one or more properties of an instance of <code>ICategory</code>
-     * have changed. Specific details are described in the <code>CategoryEvent</code>.
-     * 
-     * @param categoryEvent
-     *            the category event. Guaranteed not to be <code>null</code>.
-     */
-    void categoryChanged(CategoryEvent categoryEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifier.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifier.java
deleted file mode 100644
index f0b4d86..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifier.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-/**
- * An instance of this interface can be obtained from an instance of 
- * <code>IActivityManager</code>for any identifier.
- * <p>
- * An <code>IIdentifier</code> is an object that offers an easy means to 
- * determine if a given string matches the pattern bindings of any IActivity 
- * objects.  Additionaly, one may query if an identifier is enabled.  An 
- * identifier is always considered enabled unless it matches only disabled activities. 
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation, which can cause dynamic changes to the
- * extension registry.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IActivityManager#getIdentifier(String)
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IIdentifier extends Comparable {
-
-    /**
-     * Registers an instance of <code>IIdentifierListener</code> to listen
-     * for changes to properties of this instance.
-     * 
-     * @param identifierListener
-     *            the instance to register. Must not be <code>null</code>.
-     *            If an attempt is made to register an instance which is
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void addIdentifierListener(IIdentifierListener identifierListener);
-
-    /**
-     * Returns the set of activity ids that this instance matches.  Each 
-     * activity in this set will have at least one pattern binding that matches
-     * the string returned by {@link #getId()}.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of activity ids that this instance matches. This set may
-     *         be empty, but is guaranteed not to be <code>null</code>. If
-     *         this set is not empty, it is guaranteed to only contain
-     *         instances of <code>String</code>.
-     */
-    Set getActivityIds();
-
-    /**
-     * Returns the identifier of this instance.
-     * 
-     * @return the identifier of this instance. Guaranteed not to be <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * Returns whether or not this instance is enabled.  An identifier is always
-     * considered enabled unless it matches only disabled activities.
-     * 
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff this instance is enabled.
-     */
-    boolean isEnabled();
-
-    /**
-     * Removes an instance of <code>IIdentifierListener</code> listening
-     * for changes to properties of this instance.
-     * 
-     * @param identifierListener
-     *            the instance to remove. Must not be <code>null</code>.
-     *            If an attempt is made to remove an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeIdentifierListener(IIdentifierListener identifierListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifierListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifierListener.java
deleted file mode 100644
index 557cc5a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IIdentifierListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>IIdentifier</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IIdentifier#addIdentifierListener(IIdentifierListener)
- * @see IIdentifier#removeIdentifierListener(IIdentifierListener)
- */
-public interface IIdentifierListener {
-
-    /**
-     * Notifies that one or more properties of an instance of <code>IIdentifier</code>
-     * have changed. Specific details are described in the <code>IdentifierEvent</code>.
-     * 
-     * @param identifierEvent
-     *            the identifier event. Guaranteed not to be <code>null</code>.
-     */
-    void identifierChanged(IdentifierEvent identifierEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IMutableActivityManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IMutableActivityManager.java
deleted file mode 100644
index 9760559..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IMutableActivityManager.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-/**
- * An instance of this interface allows clients to manage activities, as
- * defined by the extension point <code>org.eclipse.ui.activities</code>.
- * <p>
- * This interface extends <code>IActivityManager</code> by granting the ability 
- * to alter the set of currently enabled activities.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IMutableActivityManager extends IActivityManager {
-
-    /**
-     * Sets the set of identifiers to enabled activities.
-     * 
-     * @param enabledActivityIds
-     *            the set of identifiers to enabled activities. This set may be
-     *            empty, but it must not be <code>null</code>. If this set
-     *            is not empty, it must only contain instances of <code>String</code>.
-     */
-    void setEnabledActivityIds(Set enabledActivityIds);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPoint.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPoint.java
deleted file mode 100644
index ebb2c6c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPoint.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-/**
- * A trigger point represents a place within the Workbench that has the
- * potential to enable activities. Instances of this class may be obtained from
- * {@link org.eclipse.ui.activities.ITriggerPointManager#getTriggerPoint(String)}.
- * Instances of this interface are passed as a parameter to
- * {@link org.eclipse.ui.activities.ITriggerPointAdvisor#allow(ITriggerPoint, IIdentifier)}
- * and may be used by the advisor to determine policy.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.activities.ITriggerPointAdvisor
- * @see org.eclipse.ui.activities.ITriggerPointManager
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ITriggerPoint {
-
-	/**
-	 * The interactive hint key.  Value <code>"interactive"</code>.
-	 */
-	public static final String HINT_INTERACTIVE = "interactive"; //$NON-NLS-1$
-	
-	/**
-	 * A hint key for activities that are enabled based on core expressions.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String HINT_PRE_UI = "pre_UI"; //$NON-NLS-1$
-	
-	/**
-	 * Return the id of this trigger point.
-	 * 
-	 * @return the id
-	 */
-	String getId();
-
-	/**
-	 * Return the hint with the given key defined on this trigger point.
-	 * 
-	 * @param key the hint key
-	 * @return the hint
-	 */
-	String getStringHint(String key);
-	
-	
-	/**
-     * Return the hint with the given key defined on this trigger point as
-     * interpreted as a <code>boolean</code>.
-     * 
-     * @param key the hint key
-     * @return the hint
-     * @see Boolean#valueOf(java.lang.String)
-     */	
-	boolean getBooleanHint(String key);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointAdvisor.java
deleted file mode 100644
index 38da2b0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointAdvisor.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-/**
- * The trigger point advisor is a mechanism provided by the workbench that is
- * consulted whenever code that is considered a trigger point is hit. It is the
- * role of the advisor to determine what, if any, activities should be enabled
- * as a consequence of this action. The advisor also has the option of vetoing
- * the operation.
- * 
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- * 
- * @since 3.1
- * @see org.eclipse.ui.activities.ITriggerPoint
- */
-public interface ITriggerPointAdvisor {
-
-	/**
-	 * Answer whether the activities bound to the identifier should be enabled
-	 * when triggered by the provided trigger point.
-	 * 
-	 * @param triggerPoint
-	 *            the trigger point to test
-	 * @param identifier
-	 *            the identifier to test against the trigger point
-	 * @return the set of activities that should be enabled if this the
-	 *         contribution represented by this identifier is to be used. If
-	 *         this is not <code>null</code>, the caller can proceed with
-	 *         usage of the contribution provided that the collection of
-	 *         activities is enabled. If this is <code>null</code>, the
-	 *         caller should assume that the operation involving the
-	 *         contribution should be aborted. If this method returns the empty
-	 *         set then the operation can proceed without any changes to
-	 *         activity enablement state. Please note that it is the callers
-	 *         responsibility to ensure that the Set returned by this method is
-	 *         actually enabled - after setting the enabled state of the
-	 *         required activities the change should be verified by consulting
-	 *         {@link IActivityManager#getEnabledActivityIds()}.
-	 */
-	Set allow(ITriggerPoint triggerPoint, IIdentifier identifier);
-
-	/**
-	 * Calculate the identifier's enabled state for a combination of activities
-	 * with and without enabled when core expressions.
-	 * 
-	 * @param activityManager
-	 *            the activity manager
-	 * @param identifier
-	 *            the identifier to update
-	 * 
-	 * @return <code>true</code> if this identifier should be enabled,
-	 *         <code>false</code> otherwise
-	 * @since 3.4
-	 */
-	boolean computeEnablement(IActivityManager activityManager, IIdentifier identifier);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointManager.java
deleted file mode 100644
index 7529de0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/ITriggerPointManager.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-/**
- * Contains a collection of known trigger points. An instance of this class may
- * be obtained from
- * {@link org.eclipse.ui.activities.IWorkbenchActivitySupport#getTriggerPointManager()}.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.activities.ITriggerPoint
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ITriggerPointManager {
-	
-	/**
-     * Constant representing the id of an unknown trigger point. Used by clients
-     * of {@link WorkbenchActivityHelper#allowUseOf(Object)} for trigger point
-     * determination logic.
-     */
-	public static final String UNKNOWN_TRIGGER_POINT_ID = "org.eclipse.ui.internal.UnknownTriggerPoint"; //$NON-NLS-1$
-	
-	/**
-	 * Return the trigger point with the given id.
-	 * 
-	 * @param id the trigger point id
-	 * @return the trigger point or <code>null</code>
-	 */
-	ITriggerPoint getTriggerPoint(String id);
-	
-	/**
-	 * Return the set of defined trigger point ids.
-	 * 
-	 * @return the defined ids.  Never <code>null</code> but may be empty.
-	 */
-	Set getDefinedTriggerPointIds();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IWorkbenchActivitySupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IWorkbenchActivitySupport.java
deleted file mode 100644
index b32a772..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IWorkbenchActivitySupport.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.util.Set;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * An instance of this interface provides support for managing 
- * <code>IWorkbench</code> activities.  An instance of this interface may be
- * obtained via {@link org.eclipse.ui.IWorkbench#getActivitySupport()}. 
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- *  
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchActivitySupport {
-
-    /**
-     * Returns the activity manager for the workbench.
-     * 
-     * @return the activity manager for the workbench. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    IActivityManager getActivityManager();
-
-    /**
-     * Sets the set of identifiers to enabled activities.
-     * 
-     * @param enabledActivityIds
-     *            the set of identifiers to enabled activities. This set may be
-     *            empty, but it must not be <code>null</code>. If this set
-     *            is not empty, it must only contain instances of <code>String</code>.
-     */
-    void setEnabledActivityIds(Set enabledActivityIds);
-    
-    /**
-     * Return the image associated with this activity.
-     * 
-     * @param activity the activity
-     * @return the image associated with this activity.  Never <code>null</code>.
-     * @since 3.1
-     */
-    ImageDescriptor getImageDescriptor(IActivity activity);
-
-    /**
-     * Return the image associated with this category.
-     * 
-     * @param category the category
-     * @return the image associated with this category.  Never <code>null</code>.
-     * @since 3.1
-     */
-    ImageDescriptor getImageDescriptor(ICategory category);
-	
-	/**
-	 * Return the trigger point manager for this instance.
-	 * 
-	 * @return the trigger point manager.  Never <code>null</code>.
-	 * @since 3.1
-	 */
-	ITriggerPointManager getTriggerPointManager();
-    
-    /**
-     * Return a copy of the current activity set. This copy will contain all
-     * activity and category definitions that the workbench activity manager
-     * contains, and will have the same enabled state. It will not have the same
-     * listeners. This is useful for user interfaces that wish to modify the
-     * activity enablement state (such as preference pages).
-     * 
-     * @return a copy of the current activity set
-     * @since 3.1
-     */
-    IMutableActivityManager createWorkingCopy();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IdentifierEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IdentifierEvent.java
deleted file mode 100644
index 87b0b95..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/IdentifierEvent.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * An instance of this class describes changes to an instance of 
- * <code>IIdentifier</code>.  This class does not give details as to the 
- * specifics of a change, only that the given property on the source object has 
- * changed.
- * 
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IIdentifierListener#identifierChanged(IdentifierEvent)
- */
-public final class IdentifierEvent {
-    private boolean activityIdsChanged;
-
-    private boolean enabledChanged;
-
-    private IIdentifier identifier;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param identifier
-     *            the instance of the interface that changed.
-     * @param activityIdsChanged
-     *            <code>true</code>, iff the activityIds property changed.
-     * @param enabledChanged
-     *            <code>true</code>, iff the enabled property changed.
-     */
-    public IdentifierEvent(IIdentifier identifier, boolean activityIdsChanged,
-            boolean enabledChanged) {
-        if (identifier == null) {
-			throw new NullPointerException();
-		}
-
-        this.identifier = identifier;
-        this.activityIdsChanged = activityIdsChanged;
-        this.enabledChanged = enabledChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IIdentifier getIdentifier() {
-        return identifier;
-    }
-
-    /**
-     * Returns whether or not the activityIds property changed.
-     * 
-     * @return <code>true</code>, iff the activityIds property changed.
-     */
-    public boolean hasActivityIdsChanged() {
-        return activityIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the enabled property changed.
-     * 
-     * @return <code>true</code>, iff the enabled property changed.
-     */
-    public boolean hasEnabledChanged() {
-        return enabledChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/NotDefinedException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/NotDefinedException.java
deleted file mode 100644
index a9de2f4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/NotDefinedException.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.activities;
-
-/**
- * Signals that an attempt was made to access the properties of an undefined
- * object.
- * 
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @see IActivity
- * @see ICategory
- * @since 3.0
- */
-public final class NotDefinedException extends Exception {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 4050201929596811061L;
-
-    /**
-     * Creates a new instance of this class with no specified detail message.
-     */
-    public NotDefinedException() {
-        //no-op
-    }
-
-    /**
-     * Creates a new instance of this class with the specified detail message.
-     * 
-     * @param s
-     *            the detail message.
-     */
-    public NotDefinedException(String s) {
-        super(s);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchActivityHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchActivityHelper.java
deleted file mode 100644
index 3dbbe36..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchActivityHelper.java
+++ /dev/null
@@ -1,678 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.activities.ws.WorkbenchActivitySupport;
-
-/**
- * A utility class that contains helpful methods for interacting with the
- * activities API.
- * 
- * @since 3.0
- */
-public final class WorkbenchActivityHelper {
-	/**
-	 * The ID of the trigger point that only returns activities with core
-	 * expressions.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String TRIGGER_PRE_UI_POINT = "org.eclipse.ui.workbenchModel"; //$NON-NLS-1$
-	
-	private static ITriggerPoint getTriggerPoint(String id) {
-		return PlatformUI.getWorkbench().getActivitySupport()
-				.getTriggerPointManager().getTriggerPoint(id);
-	}
-
-	/**
-	 * Return the identifier that maps to the given contribution.
-	 * 
-	 * @param contribution
-	 *            the contribution
-	 * @return the identifier
-	 * @since 3.1
-	 */
-	public static IIdentifier getIdentifier(IPluginContribution contribution) {
-		IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI
-				.getWorkbench().getActivitySupport();
-		IIdentifier identifier = workbenchActivitySupport.getActivityManager()
-				.getIdentifier(createUnifiedId(contribution));
-		return identifier;
-	}
-
-	/**
-	 * Answers whether a given contribution is allowed to be used based on
-	 * activity enablement. If it is currently disabled, then a dialog is opened
-	 * and the user is prompted to activate the requried activities. If the user
-	 * declines their activation then false is returned. In all other cases
-	 * <code>true</code> is returned.
-	 * 
-	 * @param object
-	 *            the contribution to test.
-	 * @return whether the contribution is allowed to be used based on activity
-	 *         enablement.
-	 * @deprecated
-	 * @see #allowUseOf(ITriggerPoint, Object)
-	 */
-	public static boolean allowUseOf(Object object) {
-		return allowUseOf(PlatformUI.getWorkbench().getActivitySupport()
-				.getTriggerPointManager().getTriggerPoint(
-						ITriggerPointManager.UNKNOWN_TRIGGER_POINT_ID), object);
-	}
-
-	/**
-	 * Answers whether a given contribution is allowed to be used based on
-	 * activity enablement. If it is currently disabled, then a dialog is opened
-	 * and the user is prompted to activate the requried activities. If the user
-	 * declines their activation then false is returned. In all other cases
-	 * <code>true</code> is returned.
-	 * 
-	 * @param triggerPoint
-	 *            the trigger point being hit
-	 * @param object
-	 *            the contribution to test.
-	 * @return whether the contribution is allowed to be used based on activity
-	 *         enablement.
-	 */
-	public static boolean allowUseOf(ITriggerPoint triggerPoint, Object object) {
-		if (!isFiltering()) {
-			return true;
-		}
-		if (triggerPoint == null) {
-			return true;
-		}
-		if (object instanceof IPluginContribution) {
-			IPluginContribution contribution = (IPluginContribution) object;
-			IIdentifier identifier = getIdentifier(contribution);
-			return allow(triggerPoint, identifier);
-		}
-		return true;
-	}
-	
-	/**
-	 * Restrict the use of the object only if it is matched by an activity with
-	 * a core expression. A normal disabled activity will not restrict the use
-	 * of this object.
-	 * 
-	 * @param object
-	 *            the object to restrict
-	 * @return <code>true</code> if this object is matched by a disabled
-	 *         activity with an expression.
-	 * @since 3.4
-	 */
-	public static boolean restrictUseOf(Object object) {
-		return !allowUseOf(getTriggerPoint(TRIGGER_PRE_UI_POINT), object);
-	}
-
-	/**
-	 * Answers whether a given identifier is enabled. If it is not enabled, then
-	 * a dialog is opened and the user is prompted to enable the associated
-	 * activities.
-	 * 
-	 * @param triggerPoint
-	 *            the trigger point to test
-	 * @param identifier
-	 *            the identifier to test.
-	 * @return whether the identifier is enabled.
-	 */
-	private static boolean allow(ITriggerPoint triggerPoint,
-			IIdentifier identifier) {
-		if (identifier.isEnabled()) {
-			return true;
-		}
-
-		ITriggerPointAdvisor advisor = ((WorkbenchActivitySupport) PlatformUI
-				.getWorkbench().getActivitySupport()).getTriggerPointAdvisor();
-		Set activitiesToEnable = advisor.allow(triggerPoint, identifier);
-		
-		if (activitiesToEnable == null) {
-			return false;
-		}
-		
-		if (activitiesToEnable.isEmpty()) {
-			// no activities required to be enabled for this trigger point -
-			// allow use unconditionally.
-			return true;
-		}
-
-		enableActivities(activitiesToEnable);
-		// only allow the operation if all the activities we needed to enabled
-		// are now enabled. this means if something has an expression bound
-		// activity that is not currently enabled this call will always return
-		// false - trying to manually set such an activity will always fail.
-		Set newEnabled = PlatformUI.getWorkbench().getActivitySupport()
-				.getActivityManager().getEnabledActivityIds();
-		return newEnabled.containsAll(activitiesToEnable);
-	}
-
-	/**
-	 * Utility method to create a <code>String</code> containing the plugin
-	 * and extension ids of a contribution. This will have the form
-	 * 
-	 * <pre>
-	 * pluginId / extensionId
-	 * </pre>. If the IPluginContribution does not define a plugin id then the
-	 * extension id alone is returned.
-	 * 
-	 * @param contribution
-	 *            the contribution to use
-	 * @return the unified id
-	 */
-	public static final String createUnifiedId(IPluginContribution contribution) {
-		if (contribution.getPluginId() != null) {
-			return contribution.getPluginId() + '/' + contribution.getLocalId();
-		}
-		return contribution.getLocalId();
-	}
-
-	/**
-	 * Enables the set of activities.
-	 * 
-	 * @param activities
-	 *            the activities to enable
-	 */
-	private static void enableActivities(Collection activities) {
-		IWorkbenchActivitySupport activitySupport = PlatformUI.getWorkbench()
-				.getActivitySupport();
-		Set newSet = new HashSet(activitySupport.getActivityManager()
-				.getEnabledActivityIds());
-		newSet.addAll(activities);
-		activitySupport.setEnabledActivityIds(newSet);
-	}
-
-	/**
-	 * Answers whether the provided object should be filtered from the UI based
-	 * on activity state. Returns <code>false</code> except when the object is
-	 * an instance of <code>IPluginContribution</code> whos unified id matches
-	 * an <code>IIdentifier</code> that is currently disabled.
-	 * 
-	 * @param object
-	 *            the object to test
-	 * @return whether the object should be filtered
-	 * @see #createUnifiedId(IPluginContribution)
-	 */
-	public static final boolean filterItem(Object object) {
-		if (object instanceof IPluginContribution) {
-			IPluginContribution contribution = (IPluginContribution) object;
-			IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI
-					.getWorkbench().getActivitySupport();
-			IIdentifier identifier = workbenchActivitySupport
-					.getActivityManager().getIdentifier(
-							createUnifiedId(contribution));
-			if (!identifier.isEnabled()) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns whether the UI is set up to filter contributions. This is the
-	 * case if there are defined activities.
-	 * 
-	 * @return whether the UI is set up to filter contributions
-	 */
-	public static final boolean isFiltering() {
-		return !PlatformUI.getWorkbench().getActivitySupport()
-				.getActivityManager().getDefinedActivityIds().isEmpty();
-	}
-
-	/**
-	 * Return a list of category ids that will become implicity enabled if the
-	 * given category becomes enabled Note that the set returned by this set
-	 * represents the delta of categories that would be enabled - if the
-	 * category is already enabled then it is omitted.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @param categoryId
-	 *            the category to be enabled
-	 * @return a list of category ids that will become implicity enabled if the
-	 *         given category becomes enabled
-	 * @since 3.1
-	 */
-	public static Set getEnabledCategories(IActivityManager activityManager,
-			String categoryId) {
-		ICategory category = activityManager.getCategory(categoryId);
-		if (!category.isDefined()) {
-			return Collections.EMPTY_SET;
-		}
-
-		Set activities = expandActivityDependencies(getActivityIdsForCategory(category));
-		Set otherEnabledCategories = new HashSet();
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String otherCategoryId = (String) i.next();
-			if (otherCategoryId.equals(categoryId)) {
-				continue;
-			}
-			ICategory otherCategory = activityManager
-					.getCategory(otherCategoryId);
-			Set otherCategoryActivityIds = expandActivityDependencies(getActivityIdsForCategory(otherCategory));
-			if (activityManager.getEnabledActivityIds().containsAll(
-					otherCategoryActivityIds)) {
-				continue;
-			}
-			if (activities.containsAll(otherCategoryActivityIds)) {
-				otherEnabledCategories.add(otherCategoryId);
-			}
-
-		}
-		return otherEnabledCategories;
-	}
-
-	/**
-	 * Return the expanded activities for the given activity set. This will
-	 * resolve all activity requirement bindings.
-	 * 
-	 * @param baseActivities
-	 *            the set of activities to expand
-	 * @return the expanded activities
-	 * @since 3.1
-	 */
-	public static Set expandActivityDependencies(Set baseActivities) {
-		Set extendedActivities = new HashSet();
-		for (Iterator i = baseActivities.iterator(); i.hasNext();) {
-			String activityId = (String) i.next();
-			Set requiredActivities = getRequiredActivityIds(activityId);
-			extendedActivities.addAll(requiredActivities);
-		}
-		extendedActivities.addAll(baseActivities);
-		return extendedActivities;
-	}
-
-	/**
-	 * Return the activities required for this activity.
-	 * 
-	 * @param activityId
-	 *            the activity id
-	 * @return the activities required for this activity
-	 * @since 3.1
-	 */
-	public static Set getRequiredActivityIds(String activityId) {
-		IActivityManager manager = PlatformUI.getWorkbench()
-				.getActivitySupport().getActivityManager();
-		IActivity activity = manager.getActivity(activityId);
-		if (!activity.isDefined()) {
-			return Collections.EMPTY_SET;
-		}
-		Set requirementBindings = activity.getActivityRequirementBindings();
-		if (requirementBindings.isEmpty()) {
-			return Collections.EMPTY_SET;
-		}
-
-		Set requiredActivities = new HashSet(3);
-		for (Iterator i = requirementBindings.iterator(); i.hasNext();) {
-			IActivityRequirementBinding binding = (IActivityRequirementBinding) i
-					.next();
-			requiredActivities.add(binding.getRequiredActivityId());
-			requiredActivities.addAll(getRequiredActivityIds(binding
-					.getRequiredActivityId()));
-		}
-		return requiredActivities;
-	}
-
-	/**
-	 * Return the activities directly required by a given category.
-	 * 
-	 * @param category
-	 *            the category
-	 * @return the activities directly required by a given category
-	 * @since 3.1
-	 */
-	public static Set getActivityIdsForCategory(ICategory category) {
-		Set bindings = category.getCategoryActivityBindings();
-		Set activityIds = new HashSet();
-		for (Iterator i = bindings.iterator(); i.hasNext();) {
-			ICategoryActivityBinding binding = (ICategoryActivityBinding) i
-					.next();
-			activityIds.add(binding.getActivityId());
-		}
-		return activityIds;
-	}
-
-	/**
-	 * Return a list of category ids that will become implicity disabled if the
-	 * given category becomes disabled Note that the set returned by this set
-	 * represents the delta of categories that would be enabled - if the
-	 * category is already enabled then it is omitted.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @param categoryId
-	 *            the category to be enabled
-	 * @return a list of category ids that will become implicity enabled if the
-	 *         given category becomes enabled
-	 * @since 3.1
-	 */
-	public static Set getDisabledCategories(IActivityManager activityManager,
-			String categoryId) {
-		ICategory category = activityManager.getCategory(categoryId);
-		if (!category.isDefined()) {
-			return Collections.EMPTY_SET;
-		}
-
-		Set activities = expandActivityDependencies(getActivityIdsForCategory(category));
-		Set otherDisabledCategories = new HashSet();
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String otherCategoryId = (String) i.next();
-			if (otherCategoryId.equals(categoryId)) {
-				continue;
-			}
-			ICategory otherCategory = activityManager
-					.getCategory(otherCategoryId);
-			Set otherCategoryActivityIds = expandActivityDependencies(getActivityIdsForCategory(otherCategory));
-
-			if (otherCategoryActivityIds.isEmpty()) {
-				continue;
-			}
-
-			if (!activities.containsAll(otherCategoryActivityIds)) {
-				continue;
-			}
-
-			if (activityManager.getEnabledActivityIds().containsAll(
-					otherCategoryActivityIds)) {
-				otherDisabledCategories.add(otherCategoryId);
-			}
-
-		}
-		return otherDisabledCategories;
-	}
-
-	/**
-	 * Return a list of category ids that are implicitly contained within the
-	 * given category.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test agaisnt
-	 * @param categoryId
-	 *            the category to be enabled
-	 * @return a list of category ids that will become implicity enabled if the
-	 *         given category becomes enabled
-	 * @since 3.1
-	 */
-	public static final Set getContainedCategories(
-			IActivityManager activityManager, String categoryId) {
-		ICategory category = activityManager.getCategory(categoryId);
-		if (!category.isDefined()) {
-			return Collections.EMPTY_SET;
-		}
-
-		Set activities = expandActivityDependencies(getActivityIdsForCategory(category));
-		Set containedCategories = new HashSet();
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String otherCategoryId = (String) i.next();
-			if (otherCategoryId.equals(categoryId)) {
-				continue;
-			}
-			ICategory otherCategory = activityManager
-					.getCategory(otherCategoryId);
-			Set otherCategoryActivityIds = expandActivityDependencies(getActivityIdsForCategory(otherCategory));
-
-			if (otherCategoryActivityIds.isEmpty()) {
-				continue;
-			}
-
-			if (activities.containsAll(otherCategoryActivityIds)) {
-				containedCategories.add(otherCategoryId);
-			}
-
-		}
-		return containedCategories;
-
-	}
-
-	/**
-	 * Return the set of enabled categories. An enabled category is one in which
-	 * all contained activities are enabled.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @return the set of enabled categories.
-	 * @since 3.1
-	 */
-	public static Set getEnabledCategories(IActivityManager activityManager) {
-
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		Set enabledCategories = new HashSet();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String categoryId = (String) i.next();
-			if (isEnabled(activityManager, categoryId)) {
-				enabledCategories.add(categoryId);
-			}
-		}
-		return enabledCategories;
-	}
-	
-	/**
-	 * Return the set of partially enabled categories.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @return the set of partially enabled categories
-	 * @since 3.2
-	 */
-	public static Set getPartiallyEnabledCategories(
-			IActivityManager activityManager) {
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		Set partialCategories = new HashSet();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String categoryId = (String) i.next();
-			if (isPartiallyEnabled(activityManager, categoryId)) {
-				partialCategories.add(categoryId);
-			}
-		}
-
-		return partialCategories;
-	}
-
-	/**
-	 * Returns whether the given category is partially enabled. A partially
-	 * enabled category is one in which the number of enabled activites is both
-	 * non-zero and less than the total number of activities in the category.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @param categoryId
-	 *            the category id
-	 * @return whether the category is enabled
-	 * @since 3.2
-	 */
-	public static boolean isPartiallyEnabled(IActivityManager activityManager,
-			String categoryId) {
-		Set activityIds = getActivityIdsForCategory(activityManager
-				.getCategory(categoryId));
-		int foundCount = 0;
-		for (Iterator i = activityIds.iterator(); i.hasNext();) {
-			String activityId = (String) i.next();
-			if (activityManager.getEnabledActivityIds().contains(activityId)) {
-				foundCount++;
-			}
-		}
-
-		return foundCount > 0 && foundCount != activityIds.size();
-	}
-
-	/**
-	 * Return the number of enabled categories that this activity belongs to.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against *
-	 * @param activityId
-	 *            the activity id to query on
-	 * @return the set of enabled category ids that this activity belongs to
-	 * @since 3.1
-	 */
-	public static Set getEnabledCategoriesForActivity(
-			IActivityManager activityManager, String activityId) {
-		Set enabledCategoriesForActivity = new HashSet();
-		Set enabledCategories = getEnabledCategories(activityManager);
-		for (Iterator i = enabledCategories.iterator(); i.hasNext();) {
-			String categoryId = (String) i.next();
-			if (getActivityIdsForCategory(
-					activityManager.getCategory(categoryId)).contains(
-					activityId)) {
-				enabledCategoriesForActivity.add(categoryId);
-			}
-		}
-		return enabledCategoriesForActivity;
-	}
-
-	/**
-	 * Returns whether the given category is enabled. A category is enabled if
-	 * all of its activities are enabled.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @param categoryId
-	 *            the category id
-	 * @return whether the category is enabled
-	 * @since 3.1
-	 */
-	public static boolean isEnabled(IActivityManager activityManager,
-			String categoryId) {
-
-		ICategory category = activityManager.getCategory(categoryId);
-		if (category.isDefined()) {
-			Set activityIds = getActivityIdsForCategory(category);
-			if (activityManager.getEnabledActivityIds().containsAll(activityIds)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Resolve the collection of category ids to an array of
-	 * <code>ICategory</code> objects.
-	 * 
-	 * @param activityManager
-	 *            the activity manager to test against
-	 * @param categoryIds
-	 *            the category ids
-	 * @return the array of category ids resolved to <code>ICategory</code>
-	 *         objects
-	 * @since 3.1
-	 */
-	public static ICategory[] resolveCategories(
-			IMutableActivityManager activityManager, Set categoryIds) {
-		ICategory[] categories = new ICategory[categoryIds.size()];
-		String[] categoryIdArray = (String[]) categoryIds
-				.toArray(new String[categoryIds.size()]);
-		for (int i = 0; i < categoryIdArray.length; i++) {
-			categories[i] = activityManager.getCategory(categoryIdArray[i]);
-		}
-		return categories;
-	}
-	
-	/**
-	 * Fills and returns the second argument with those objects of the first
-	 * argument that pass the {@link #restrictUseOf(Object)} test.
-	 * 
-	 * @param toBeFiltered the input collection
-	 * @param result the collection to which objects passing the test should be added
-	 * @return the <code>result</code> collection for convenience
-	 * 
-	 * @since 3.4
-	 */
-	public static Collection restrictCollection(Collection toBeFiltered, Collection result) {
-		for (Iterator iterator = toBeFiltered.iterator(); iterator.hasNext();) {
-			Object item = iterator.next();
-			if (!restrictUseOf(item)) {
-				result.add(item);
-			}
-		}
-		return result;
-	}
-	
-	/**
-	 * Returns an array with those objects of the argument array that pass the
-	 * {@link #restrictUseOf(Object)} test.
-	 * 
-	 * @param array
-	 *            the input array
-	 * @return a new array of the same type as the argument array, containing
-	 *         objects that pass the test
-	 *         
-	 * @since 3.4
-	 */
-	public static Object[] restrictArray(Object[] array) {
-		ArrayList list = new ArrayList(array.length);
-		for (int i = 0; i < array.length; i++) {
-			if (!restrictUseOf(array[i])) {
-				list.add(array[i]);
-			}
-		}
-		return list.toArray((Object[]) Array.newInstance(array.getClass().getComponentType(), array.length));
-	}
-	
-	/**
-	 * Fills and returns the second argument with those objects of the first
-	 * argument that pass the {@link #filterItem(Object)} test.
-	 * 
-	 * @param toBeFiltered the input collection
-	 * @param result the collection to which objects passing the test should be added
-	 * @return the <code>result</code> collection for convenience
-	 * 
-	 * @since 3.4
-	 */
-	public static Collection filterCollection(Collection toBeFiltered, Collection result) {
-		for (Iterator iterator = toBeFiltered.iterator(); iterator.hasNext();) {
-			Object item = iterator.next();
-			if (!filterItem(item)) {
-				result.add(item);
-			}
-		}
-		return result;
-	}
-	
-	/**
-	 * Returns an array with those objects of the argument array that pass the
-	 * {@link #filterItem(Object)} test.
-	 * 
-	 * @param array
-	 *            the input array
-	 * @return a new array of the same type as the argument array, containing
-	 *         objects that pass the test
-	 *         
-	 * @since 3.4
-	 */
-	public static Object[] filterArray(Object[] array) {
-		ArrayList list = new ArrayList(array.length);
-		for (int i = 0; i < array.length; i++) {
-			if (!filterItem(array[i])) {
-				list.add(array[i]);
-			}
-		}
-		return list.toArray((Object[]) Array.newInstance(array.getClass().getComponentType(), array.length));
-	}
-
-	/**
-	 * Not intended to be instantiated.
-	 */
-	private WorkbenchActivityHelper() {
-		// no-op
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
deleted file mode 100644
index 95b346c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/WorkbenchTriggerPointAdvisor.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.activities;
-
-import java.util.Collections;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jface.window.Window;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.ws.EnablementDialog;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * 
- * Workbench implementation prompts the user with a dialog unless they've said
- * that they don't want to be prompted. You may provide the certain strings to
- * this class via method #2 of
- * {@link org.eclipse.core.runtime.IExecutableExtension}. This is provided as
- * API so that non-SDK Eclipse applications can reuse and augment the default
- * SDK trigger point behaviour.
- * 
- * @see #PROCEED_MULTI
- * @see #PROCEED_SINGLE
- * @see #DONT_ASK
- * @see #NO_DETAILS
- * @since 3.1
- */
-public class WorkbenchTriggerPointAdvisor implements ITriggerPointAdvisor,
-        IExecutableExtension {
-
-	/**
-	 * The string to be used when prompting to proceed with multiple activities.
-	 * Ie: "Enable the selected activities?"
-	 */
-	public static String PROCEED_MULTI = "proceedMulti"; //$NON-NLS-1$
-	
-	/**
-	 * The string to be used when prompting to proceed with a single activity.
-	 * Ie: "Enable the required activity?"
-	 */
-	public static String PROCEED_SINGLE = "proceedSingle"; //$NON-NLS-1$
-	
-	/**
-	 * The string to be used to label the "don't ask" button.
-	 * Ie: "&Always enable activities and don't ask me again"
-	 */
-	public static String DONT_ASK = "dontAsk"; //$NON-NLS-1$
-	
-	/**
-	 * The string to be used when no activities are selected and Details are shown.
-	 * Ie: "Select an activity to view its description."
-	 */
-	public static String NO_DETAILS = "noDetails"; //$NON-NLS-1$
-
-	
-	private Properties strings = new Properties();
-	
-	/**
-	 * Create a new instance of this advisor.
-	 */
-	public WorkbenchTriggerPointAdvisor() {
-		super();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.ITriggerPointAdvisor#allow(org.eclipse.ui.activities.ITriggerPoint, org.eclipse.ui.activities.IIdentifier)
-	 */
-	public Set allow(ITriggerPoint triggerPoint, IIdentifier identifier) {
-		
-		if (triggerPoint.getBooleanHint(ITriggerPoint.HINT_PRE_UI)) {
-			IActivityManager activityManager = PlatformUI.getWorkbench()
-					.getActivitySupport().getActivityManager();
-			Iterator iterator = identifier.getActivityIds().iterator();
-			while (iterator.hasNext()) {
-				String id = (String) iterator.next();
-				IActivity activity = activityManager.getActivity(id);
-				if (activity.getExpression() != null) {
-					if (!activity.isEnabled())
-						// if we have any disabled expression activities we
-						// should disallow immediately
-						return null; 
-				}
-			}
-			// if we have no disabled expression activities just return the
-			// empty set. This will allow the use of the given object but will
-			// not result in any activity activation.
-			return Collections.EMPTY_SET;  
-		}
-		
-        if (!PrefUtil.getInternalPreferenceStore().getBoolean(
-                IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT)) {
-            return identifier.getActivityIds();
-        }		
-		
-		//If it's a non-interactive point activate all activities
-		if (!triggerPoint.getBooleanHint(ITriggerPoint.HINT_INTERACTIVE)) {
-			return identifier.getActivityIds();
-		}
-		
-        EnablementDialog dialog = new EnablementDialog(Util.getShellToParentOn(), identifier
-                .getActivityIds(), strings);
-        if (dialog.open() == Window.OK) {
-            Set activities = dialog.getActivitiesToEnable();
-            if (dialog.getDontAsk()) {
-				PrefUtil.getInternalPreferenceStore().setValue(
-						IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT,
-						false);
-				WorkbenchPlugin.getDefault().savePluginPreferences();
-			}
-
-            return activities;
-        }
-		
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) {
-		if (data instanceof Hashtable) {
-			strings.putAll((Hashtable)data);
-		}		
-	}
-
-	/**
-	 * This implementation of
-	 * {@link ITriggerPointAdvisor#computeEnablement(IActivityManager, IIdentifier)}
-	 * calls
-	 * {@link #doComputeEnablement(IActivityManager, IIdentifier, boolean)} with
-	 * a boolean argument of <code>false</code>. Subclasses that wish to
-	 * disable identifiers if there is at least one disabled expression-based
-	 * activity should override this method and call
-	 * {@link #doComputeEnablement(IActivityManager, IIdentifier, boolean)} with
-	 * a boolean argument of <code>true</code>.
-	 * 
-	 * Subclasses may override.
-	 * 
-	 * @param activityManager
-	 *            the activity manager
-	 * @param identifier
-	 *            the identifier to update
-	 * 
-	 * @return <code>true</code> if this identifier should be enabled,
-	 *         <code>false</code> otherwise
-	 * @since 3.4
-	 * 
-	 * @see WorkbenchTriggerPointAdvisor#doComputeEnablement(IActivityManager,
-	 *      IIdentifier, boolean)
-	 */
-	public boolean computeEnablement(IActivityManager activityManager, IIdentifier identifier) {
-		return doComputeEnablement(activityManager, identifier, false);
-	}
-
-	/**
-	 * Helper method for determining whether an identifier should be enabled.
-	 * Returns <code>true</code> if there is no applicable activity for the
-	 * given identifier. Otherwise, if the boolean argument <code>
-	 * disabledExpressionActivitiesTakePrecedence</code> is
-	 * <code>false</code>, returns true if any of the applicable activities
-	 * is enabled. If the boolean argument is <code>true</code>, this method
-	 * returns <code>false</code> if there is at least one disabled
-	 * expression-based activity; and it returns <code>true</code> if there
-	 * are no disabled expression-based activities and there is at least one
-	 * applicable activity that is enabled.
-	 * @param activityManager the activity manager
-	 * @param identifier
-	 *            the identifier to update
-	 * @param disabledExpressionActivitiesTakePrecedence
-	 * 
-	 * @return <code>true</code> if this identifier should be enabled,
-	 *         <code>false</code> otherwise
-	 * @since 3.4
-	 */
-	protected boolean doComputeEnablement(IActivityManager activityManager,
-			IIdentifier identifier, boolean disabledExpressionActivitiesTakePrecedence) {
-		final Set activityIds = identifier.getActivityIds();
-		if (activityIds.size() == 0) {
-			return true;
-		}
-
-		boolean matchesAtLeastOneEnabled = false;
-		boolean matchesDisabledExpressionActivitiesWithPrecedence = false;
-		for (Iterator iterator = activityIds.iterator(); iterator.hasNext();) {
-			String activityId = (String) iterator.next();
-			IActivity activity = activityManager.getActivity(activityId);
-			
-			if (activity.isEnabled()) {
-				if (!disabledExpressionActivitiesTakePrecedence) {
-					return true;
-				}
-				matchesAtLeastOneEnabled = true;
-			} else {
-				if (disabledExpressionActivitiesTakePrecedence && activity.getExpression() != null) {
-					matchesDisabledExpressionActivitiesWithPrecedence = true;
-				}
-			}
-
-		}
-
-		return !matchesDisabledExpressionActivitiesWithPrecedence && matchesAtLeastOneEnabled;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/package.html
deleted file mode 100644
index 218021b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/activities/package.html
+++ /dev/null
@@ -1,18 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>Package Specification</h2>
-This package provides application programming interfaces for interaction
-with activities.  Activities are objects that may be enabled or disabled and 
-contain bindings to various regular expressions.  Activities are used by the 
-workbench to filter selected contributions from the users view untill such a 
-time that they express interest in using them.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/ActionBarAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/ActionBarAdvisor.java
deleted file mode 100644
index db23912..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/ActionBarAdvisor.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.application;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-
-/**
- * Public base class for configuring the action bars of a workbench window.
- * <p>
- * An application should declare a subclass of <code>ActionBarAdvisor</code>
- * and override methods to configure a window's action bars to suit the needs of the
- * particular application.
- * </p>
- * <p>
- * The following advisor methods are called at strategic points in the
- * workbench's lifecycle (all occur within the dynamic scope of the call
- * to {@link PlatformUI#createAndRunWorkbench PlatformUI.createAndRunWorkbench}):
- * <ul>
- * <li><code>fillActionBars</code> - called after <code>WorkbenchWindowAdvisor.preWindowOpen</code>
- * to configure a window's action bars</li>
- * </ul>
- * </p>
- * 
- * @see WorkbenchWindowAdvisor#createActionBarAdvisor(IActionBarConfigurer)
- * 
- * @since 3.1
- */
-public class ActionBarAdvisor {
-
-    /**
-     * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-     * operation is not filling the action bars of an actual workbench window,
-     * but rather a proxy (used for perspective customization).
-     */
-    public static final int FILL_PROXY = 0x01;
-
-    /**
-     * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-     * operation is supposed to fill (or describe) the workbench window's menu
-     * bar.
-     */
-    public static final int FILL_MENU_BAR = 0x02;
-
-    /**
-     * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-     * operation is supposed to fill (or describe) the workbench window's cool
-     * bar.
-     */
-    public static final int FILL_COOL_BAR = 0x04;
-
-    /**
-     * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-     * operation is supposed to fill (or describe) the workbench window's status
-     * line.
-     */
-    public static final int FILL_STATUS_LINE = 0x08;
-
-    
-    private IActionBarConfigurer actionBarConfigurer;
-    
-    private Map actions = new HashMap();
-    
-    /**
-     * Creates a new action bar advisor to configure a workbench
-     * window's action bars via the given action bar configurer.
-     * 
-     * @param configurer the action bar configurer
-     */
-    public ActionBarAdvisor(IActionBarConfigurer configurer) {
-        Assert.isNotNull(configurer);
-        actionBarConfigurer = configurer;
-    }
-    
-    /**
-     * Returns the action bar configurer.
-     * 
-     * @return the action bar configurer
-     */
-    protected IActionBarConfigurer getActionBarConfigurer() {
-        return actionBarConfigurer;
-    }
-
-    /**
-     * Configures the action bars using the given action bar configurer.
-     * Under normal circumstances, <code>flags</code> does not include
-     * <code>FILL_PROXY</code>, meaning this is a request to fill the action
-     * bars of the corresponding workbench window; the
-     * remaining flags indicate which combination of
-     * the menu bar (<code>FILL_MENU_BAR</code>),
-     * the tool bar (<code>FILL_COOL_BAR</code>),
-     * and the status line (<code>FILL_STATUS_LINE</code>) are to be filled.
-     * <p>
-     * If <code>flags</code> does include <code>FILL_PROXY</code>, then this
-     * is a request to describe the actions bars of the given workbench window
-     * (which will already have been filled);
-     * again, the remaining flags indicate which combination of the menu bar,
-     * the tool bar, and the status line are to be described.
-     * The actions included in the proxy action bars can be the same instances
-     * as in the actual window's action bars. Calling <code>ActionFactory</code>
-     * to create new action instances is not recommended, because these
-     * actions internally register listeners with the window and there is no
-     * opportunity to dispose of these actions.
-     * </p>
-     * <p>
-     * This method is called just after {@link WorkbenchWindowAdvisor#preWindowOpen()}.
-     * Clients must not call this method directly (although super calls are okay).
-     * The default implementation calls <code>makeActions</code> if
-     * <code>FILL_PROXY</code> is specified, then calls <code>fillMenuBar</code>, 
-     * <code>fillCoolBar</code>, and <code>fillStatusLine</code>
-     * if the corresponding flags are specified.
-     * </p>
-     * <p> 
-     * Subclasses may override, but it is recommended that they override the
-     * methods mentioned above instead.
-     * </p>
-     * 
-     * @param flags bit mask composed from the constants
-     * {@link #FILL_MENU_BAR FILL_MENU_BAR},
-     * {@link #FILL_COOL_BAR FILL_COOL_BAR},
-     * {@link #FILL_STATUS_LINE FILL_STATUS_LINE},
-     * and {@link #FILL_PROXY FILL_PROXY}
-     */
-    public void fillActionBars(int flags) {
-        if ((flags & FILL_PROXY) == 0) {
-            makeActions(actionBarConfigurer.getWindowConfigurer().getWindow());
-        }
-        if ((flags & FILL_MENU_BAR) != 0) {
-            fillMenuBar(actionBarConfigurer.getMenuManager());
-        }
-        if ((flags & FILL_COOL_BAR) != 0) {
-            fillCoolBar(actionBarConfigurer.getCoolBarManager());
-        }
-        if ((flags & FILL_STATUS_LINE) != 0) {
-            fillStatusLine(actionBarConfigurer.getStatusLineManager());
-        }
-    }
-        
-    /**
-     * Instantiates the actions used in the fill methods.
-     * Use {@link #register(IAction)} to register the action with the key binding service
-     * and add it to the list of actions to be disposed when the window is closed.
-     * 
-     * @param window the window containing the action bars
-     */
-    protected void makeActions(IWorkbenchWindow window) {
-        // do nothing
-    }
-
-    /**
-     * Registers the given action with the key binding service 
-     * (by calling {@link IActionBarConfigurer#registerGlobalAction(IAction)}),
-     * and adds it to the list of actions to be disposed when the window is closed.
-     * <p>
-     * In order to participate in key bindings, the action must have an action
-     * definition id (aka command id), and a corresponding command extension.
-     * See the <code>org.eclipse.ui.commands</code> extension point documentation
-     * for more details. 
-     * </p>
-     * 
-     * @param action the action to register, this cannot be <code>null</code>
-     * 
-     * @see IAction#setActionDefinitionId(String)
-     * @see #disposeAction(IAction)
-     */
-    protected void register(IAction action) {
-    	Assert.isNotNull(action, "Action must not be null"); //$NON-NLS-1$
-        String id = action.getId();
-        Assert.isNotNull(id, "Action must not have null id"); //$NON-NLS-1$
-        getActionBarConfigurer().registerGlobalAction(action);
-        actions.put(id, action);
-    }
-    
-    /**
-     * Returns the action with the given id, or <code>null</code> if not found.
-     * 
-     * @param id the action id
-     * @return the action with the given id, or <code>null</code> if not found
-     * @see IAction#getId()
-     */
-    protected IAction getAction(String id) {
-        return (IAction) actions.get(id);
-    }
-    
-    /**
-     * Fills the menu bar with the main menus for the window.
-     * <p>
-     * The default implementation does nothing.
-     * Subclasses may override.
-     * </p>
-     * 
-     * @param menuBar the menu manager for the menu bar
-     */
-    protected void fillMenuBar(IMenuManager menuBar) {
-        // do nothing
-    }
-    
-    /**
-     * Fills the cool bar with the main toolbars for the window.
-     * <p>
-     * The default implementation does nothing.
-     * Subclasses may override.
-     * </p>
-     * 
-     * @param coolBar the cool bar manager
-     */
-    protected void fillCoolBar(ICoolBarManager coolBar) {
-        // do nothing
-    }
-    
-    /**
-     * Fills the status line with the main status line contributions 
-     * for the window.
-     * <p>
-     * The default implementation does nothing.
-     * Subclasses may override.
-     * </p>
-     * 
-     * @param statusLine the status line manager
-     */
-    protected void fillStatusLine(IStatusLineManager statusLine) {
-        // do nothing
-    }    
-
-    /**
-     * Returns whether the menu with the given id is an application menu of the
-     * given window. This is used during OLE "in place" editing.  Application
-     * menus should be preserved during menu merging. All other menus may be
-     * removed from the window.
-     * <p>
-     * The default implementation returns false. Subclasses may override.
-     * </p>
-     * 
-     * @param menuId the menu id
-     * @return <code>true</code> for application menus, and <code>false</code>
-     * for part-specific menus
-     */
-    public boolean isApplicationMenu(String menuId) {
-        // default: not an application menu
-        return false;
-    }
-
-    /**
-     * Disposes this action bar advisor.
-     * Called when the window is being closed.
-     * This should dispose any allocated resources and remove any added listeners.
-     * <p>
-     * The default implementation calls <code>disposeActions()</code>.
-     * Subclasses may extend.
-     * </p>
-     */
-    public void dispose() {
-        disposeActions();
-    }
-    
-    /**
-     * Disposes all actions added via <code>register(IAction)</code>
-     * using <code>disposeAction(IAction)</code>.
-     */
-    protected void disposeActions() {
-        for (Iterator i = actions.values().iterator(); i.hasNext();) {
-            IAction action = (IAction) i.next();
-            disposeAction(action);
-        }
-        actions.clear();
-    }
-    
-    /**
-     * Disposes the given action.
-     * <p>
-     * The default implementation checks whether the action is an instance
-     * of <code>ActionFactory.IWorkbenchAction</code> and calls its 
-     * <code>dispose()</code> method if so.
-     * Subclasses may extend.
-     * </p>
-     * 
-     * @param action the action to dispose
-     */
-    protected void disposeAction(IAction action) {
-        if (action instanceof ActionFactory.IWorkbenchAction) {
-            ((ActionFactory.IWorkbenchAction) action).dispose();
-        }
-    }
-	
-	/**
-	 * Saves arbitrary application-specific state information
-     * for this action bar advisor.
-     * <p>
-     * The default implementation simply returns an OK status.
-     * Subclasses may extend or override.
-     * </p>
-	 * 
-	 * @param memento the memento in which to save the advisor's state
-	 * @return a status object indicating whether the save was successful
-	 * @since 3.1
-	 */
-	public IStatus saveState(IMemento memento) {
-		return Status.OK_STATUS;
-	}
-	
-	/**
-	 * Restores arbitrary application-specific state information
-     * for this action bar advisor.
-     * <p>
-     * The default implementation simply returns an OK status.
-     * Subclasses may extend or override.
-     * </p>
-	 * 
-     * @param memento the memento from which to restore the advisor's state
-	 * @return a status object indicating whether the restore was successful
-	 * @since 3.1
-	 */
-	public IStatus restoreState(IMemento memento) {
-		return Status.OK_STATUS;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/DisplayAccess.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/DisplayAccess.java
deleted file mode 100644
index 6d4c4e6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/DisplayAccess.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.application;
-
-import org.eclipse.ui.internal.UISynchronizer;
-
-/**
- * This class provides static methods that help RCP applications interact with
- * the Display.
- * 
- * @since 3.4
- */
-public final class DisplayAccess {
-
-	/**
-	 * <p>
-	 * This method allows threads spawned early in the workbench startup process
-	 * to access the Display via the
-	 * {@link org.eclipse.swt.widgets.Display#asyncExec(Runnable)} and
-	 * {@link org.eclipse.swt.widgets.Display#syncExec(Runnable)} methods.
-	 * Without invoking this method from a given thread subsequent calls to the
-	 * above Display methods will behave as follows:
-	 * </p>
-	 * 
-	 * <ul>
-	 * <li>runnables posted to
-	 * {@link org.eclipse.swt.widgets.Display#asyncExec(Runnable)} will not be
-	 * invoked until after the Workbench is fully restored.</li>
-	 * <li>calls made to
-	 * {@link org.eclipse.swt.widgets.Display#syncExec(Runnable)} will block
-	 * until the Workbench is fully restored.</li>
-	 * </ul>
-	 * 
-	 * <p>
-	 * This method MUST NOT be called from threads created by the workbench. If
-	 * invoked from any thread owned by the Workbench this method will throw an
-	 * {@link IllegalStateException}.
-	 * </p>
-	 * 
-	 * <p>
-	 * It is recommended that this method be used from ALL threads that touch
-	 * the display during the startup process, even those that may have been
-	 * created in the main application class.
-	 * </p>
-	 * 
-	 * <p>
-	 * This method has no effect after the workbench has been restored.
-	 * </p>
-	 * 
-	 * @throws IllegalStateException
-	 *             thrown if invoked from a thread created by the workbench.
-	 */
-	public static void accessDisplayDuringStartup() {
-		UISynchronizer.overrideThread.set(Boolean.TRUE);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IActionBarConfigurer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IActionBarConfigurer.java
deleted file mode 100644
index 53fdcbb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IActionBarConfigurer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.application;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-
-/**
- * Interface providing special access for configuring the action bars
- * of a workbench window.
- * <p>
- * Note that these objects are only available to the main application
- * (the plug-in that creates and owns the workbench).
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.application.WorkbenchAdvisor#fillActionBars
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IActionBarConfigurer {
-    
-    /**
-     * Returns the workbench window configurer for the window
-     * containing this configurer's action bars. 
-     * 
-     * @return the workbench window configurer
-     * @since 3.1
-     */
-    public IWorkbenchWindowConfigurer getWindowConfigurer();
-    
-    
-    /**
-     * Returns the menu manager for the main menu bar of a workbench window.
-     * 
-     * @return the menu manager
-     */
-    public IMenuManager getMenuManager();
-
-    /**
-     * Returns the status line manager of a workbench window.
-     * 
-     * @return the status line manager
-     */
-    public IStatusLineManager getStatusLineManager();
-
-    /**
-     * Returns the cool bar manager of the workbench window.
-     * 
-     * @return the cool bar manager
-     */
-    public ICoolBarManager getCoolBarManager();
-    
-    /**
-     * Register the action as a global action with a workbench
-     * window.
-     * <p>
-     * For a workbench retarget action 
-     * ({@link org.eclipse.ui.actions.RetargetAction RetargetAction})
-     * to work, it must be registered.
-     * You should also register actions that will participate
-     * in custom key bindings.
-     * </p>
-     *  
-     * @param action the global action
-     * @see org.eclipse.ui.actions.RetargetAction
-     */
-    public void registerGlobalAction(IAction action);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchConfigurer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchConfigurer.java
deleted file mode 100644
index 6d4b2b3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchConfigurer.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.application;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.WindowManager;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.WorkbenchException;
-
-/**
- * Interface providing special access for configuring the workbench.
- * <p>
- * Note that these objects are only available to the main application
- * (the plug-in that creates and owns the workbench).
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see WorkbenchAdvisor#initialize
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchConfigurer {
-
-    /**
-     * Restore status code indicating that the saved state
-     * could not be restored, but that startup should continue
-     * with a reset state.
-     * 
-     * @see #restoreState
-     */
-    public static final int RESTORE_CODE_RESET = 1;
-
-    /**
-     * Restore status code indicating that the saved state
-     * could not be restored, and that the application
-     * must exit immediately without modifying any previously
-     * saved workbench state.
-     */
-    public static final int RESTORE_CODE_EXIT = 2;
-
-    /**
-     * Returns the underlying workbench.
-     * 
-     * @return the workbench
-     */
-    public IWorkbench getWorkbench();
-
-    /**
-     * Returns whether the workbench state should be saved on close and 
-     * restored on subsequent open.  
-     * <p>
-     * The initial value is <code>false</code>.
-     * </p>
-     * 
-     * @return <code>true</code> to save and restore workbench state, or
-     * 	<code>false</code> to forget current workbench state on close.
-     */
-    public boolean getSaveAndRestore();
-
-    /**
-     * Sets whether the workbench state should be saved on close and 
-     * restored on subsequent open.
-     * 
-     * @param enabled <code>true</code> to save and restore workbench state, or
-     * 	<code>false</code> to forget current workbench state on close.
-     */
-    public void setSaveAndRestore(boolean enabled);
-	
-	/**
-	 * Restores a workbench window from the given memento.
-	 * 
-	 * @param memento the memento from which to restore the window's state
-	 * @return the configurer for the restored window
-	 * @throws WorkbenchException if an error occurred during the restore
-     * @see IWorkbenchWindowConfigurer#saveState(IMemento)
-	 * @since 3.1
-	 */
-	public IWorkbenchWindowConfigurer restoreWorkbenchWindow(IMemento memento)
-			throws WorkbenchException;
-
-    /**
-     * Returns the workbench window manager.
-     *
-     * @return the workbench window manager
-     * 
-     * Note:IWorkbenchWindow is implemented using JFace's Window (and therefore uses WindowManager), 
-     *   but this is an implementation detail
-     */
-    public WindowManager getWorkbenchWindowManager();
-
-    /**
-     * Declares a workbench image.
-     * <p>
-     * The workbench remembers the given image descriptor under the given name,
-     * and makes the image available to plug-ins via
-     * {@link IWorkbench#getSharedImages() IWorkbench.getSharedImages()}.
-     * For "shared" images, the workbench remembers the image descriptor and
-     * will manages the image object create from it; clients retrieve "shared"
-     * images via
-     * {@link org.eclipse.ui.ISharedImages#getImage ISharedImages.getImage()}.
-     * For the other, "non-shared" images, the workbench remembers only the
-     * image descriptor; clients retrieve the image descriptor via
-     * {@link org.eclipse.ui.ISharedImages#getImageDescriptor
-     * ISharedImages.getImageDescriptor()} and are entirely
-     * responsible for managing the image objects they create from it.
-     * (This is made confusing by the historical fact that the API interface
-     *  is called "ISharedImages".)
-     * </p>
-     * 
-     * @param symbolicName the symbolic name of the image
-     * @param descriptor the image descriptor
-     * @param shared <code>true</code> if this is a shared image, and
-     * <code>false</code> if this is not a shared image
-     * @see org.eclipse.ui.ISharedImages#getImage
-     * @see org.eclipse.ui.ISharedImages#getImageDescriptor
-     */
-    public void declareImage(String symbolicName, ImageDescriptor descriptor,
-            boolean shared);
-
-    /**
-     * Forces the workbench to close due to an emergency. This method should
-     * only be called when the workbench is in dire straights and cannot
-     * continue, and cannot even risk a normal workbench close (think "out of
-     * memory" or "unable to create shell"). When this method is called, an
-     * abbreviated workbench shutdown sequence is performed (less critical
-     * steps may be skipped). The workbench advisor is still called; however,
-     * it must not attempt to communicate with the user. While an emergency
-     * close is in progress, <code>emergencyClosing</code> returns
-     * <code>true</code>. Workbench advisor methods should always check this
-     * flag before communicating with the user.
-     * 
-     * @see #emergencyClosing
-     */
-    public void emergencyClose();
-
-    /**
-     * Returns whether the workbench is being closed due to an emergency.
-     * When this method returns <code>true</code>, the workbench is in dire
-     * straights and cannot continue. Indeed, things are so bad that we cannot
-     * even risk a normal workbench close. Workbench advisor methods should
-     * always check this flag before attempting to communicate with the user.
-     * 
-     * @return <code>true</code> if the workbench is in the process of being
-     * closed under emergency conditions, and <code>false</code> otherwise
-     */
-    public boolean emergencyClosing();
-
-    /**
-     * Returns an object that can be used to configure the given window.
-     * 
-     * @param window a workbench window
-     * @return a workbench window configurer
-     */
-    public IWorkbenchWindowConfigurer getWindowConfigurer(
-            IWorkbenchWindow window);
-
-    /**
-     * Returns the data associated with the workbench at the given key.
-     * 
-     * @param key the key
-     * @return the data, or <code>null</code> if there is no data at the given
-     * key
-     */
-    public Object getData(String key);
-
-    /**
-     * Sets the data associated with the workbench at the given key.
-     * 
-     * @param key the key
-     * @param data the data, or <code>null</code> to delete existing data
-     */
-    public void setData(String key, Object data);
-
-    /**
-     * Restores the workbench state saved from the previous session, if any.
-     * This includes any open windows and their open perspectives, open views
-     * and editors, layout information, and any customizations to the open 
-     * perspectives. 
-     * <p>
-     * This is typically called from the advisor's <code>openWindows()</code>
-     * method.
-     * </p>
-     * 
-     * @return a status object indicating whether the restore was successful
-     * @see #RESTORE_CODE_RESET
-     * @see #RESTORE_CODE_EXIT
-     * @see WorkbenchAdvisor#openWindows
-     */
-    public IStatus restoreState();
-
-    /**
-     * Opens the first time window, using the default perspective and
-     * default page input.
-     * <p>
-     * This is typically called from the advisor's <code>openWindows()</code>
-     * method.
-     * </p>
-     * 
-     * @see WorkbenchAdvisor#openWindows
-     */
-    public void openFirstTimeWindow();
-    
-    /**
-	 * Returns <code>true</code> if the workbench should exit when the last
-	 * window is closed, <code>false</code> if the window should just be
-	 * closed, leaving the workbench (and its event loop) running.
-	 * <p>
-	 * If <code>true</code>, the last window's state is saved before closing,
-	 * so that it will be restored in the next session. This applies only if
-	 * {@link #getSaveAndRestore() returns <code>true</code>}).
-	 * </p>
-	 * <p>
-	 * If <code>false</code>, the window is simply closed, losing its state.
-	 * </p>
-	 * <p>
-	 * If the workbench is left running, it can be closed using
-	 * {@link IWorkbench#close()}, or a new window can be opened using
-	 * {@link IWorkbench#openWorkbenchWindow(String, IAdaptable)}.
-	 * </p>
-	 * <p>
-	 * The initial value is <code>true</code>.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the workbench will exit when the last
-	 *         window is closed, <code>false</code> if the window should just
-	 *         be closed
-	 * @since 3.1
-	 */
-    public boolean getExitOnLastWindowClose();
-    
-    /**
-	 * Sets whether the workbench should exit when the last window is closed, or
-	 * whether the window should just be closed, leaving the workbench (and its
-	 * event loop) running.
-	 * <p>
-	 * For more details, see {@link #getExitOnLastWindowClose()}.
-	 * </p>
-	 * 
-	 * @param enabled
-	 *            <code>true</code> if the workbench should exit when the last
-	 *            window is closed, <code>false</code> if the window should
-	 *            just be closed
-	 * @since 3.1
-	 */
-    public void setExitOnLastWindowClose(boolean enabled);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java
deleted file mode 100644
index c1cff67..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/IWorkbenchWindowConfigurer.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.application;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-
-/**
- * Interface providing special access for configuring workbench windows.
- * <p>
- * Window configurer objects are in 1-1 correspondence with the workbench
- * windows they configure. Clients may use <code>get/setData</code> to
- * associate arbitrary state with the window configurer object.
- * </p>
- * <p>
- * Note that these objects are only available to the main application
- * (the plug-in that creates and owns the workbench).
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IWorkbenchConfigurer#getWindowConfigurer
- * @see WorkbenchAdvisor#preWindowOpen
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchWindowConfigurer {
-    /**
-     * Returns the underlying workbench window.
-     * 
-     * @return the workbench window
-     */
-    public IWorkbenchWindow getWindow();
-
-    /**
-     * Returns the workbench configurer.
-     * 
-     * @return the workbench configurer
-     */
-    public IWorkbenchConfigurer getWorkbenchConfigurer();
-
-    /**
-     * Returns the action bar configurer for this workbench
-     * window.
-     * 
-     * @return the action bar configurer
-     */
-    public IActionBarConfigurer getActionBarConfigurer();
-
-    /**
-     * Returns the title of the underlying workbench window.
-     * 
-     * @return the window title
-     */
-    public String getTitle();
-
-    /**
-     * Sets the title of the underlying workbench window.
-     * 
-     * @param title the window title
-     */
-    public void setTitle(String title);
-
-    /**
-     * Returns whether the underlying workbench window has a menu bar.
-     * <p>
-     * The initial value is <code>true</code>.
-     * </p>
-     * 
-     * @return <code>true</code> for a menu bar, and <code>false</code>
-     * for no menu bar
-     */
-    public boolean getShowMenuBar();
-
-    /**
-     * Sets whether the underlying workbench window has a menu bar.
-     * 
-     * @param show <code>true</code> for a menu bar, and <code>false</code>
-     * for no menu bar
-     */
-    public void setShowMenuBar(boolean show);
-
-    /**
-     * Returns whether the underlying workbench window has a cool bar.
-     * <p>
-     * The initial value is <code>true</code>.
-     * </p>
-     * 
-     * @return <code>true</code> for a cool bar, and <code>false</code>
-     * for no cool bar
-     */
-    public boolean getShowCoolBar();
-
-    /**
-     * Sets whether the underlying workbench window has a cool bar.
-     * 
-     * @param show <code>true</code> for a cool bar, and <code>false</code>
-     * for no cool bar
-     */
-    public void setShowCoolBar(boolean show);
-
-    /**
-     * Returns whether the underlying workbench window has a status line.
-     * <p>
-     * The initial value is <code>true</code>.
-     * </p>
-     * 
-     * @return <code>true</code> for a status line, and <code>false</code>
-     * for no status line
-     */
-    public boolean getShowStatusLine();
-
-    /**
-     * Sets whether the underlying workbench window has a status line.
-     * 
-     * @param show <code>true</code> for a status line, and <code>false</code>
-     * for no status line
-     */
-    public void setShowStatusLine(boolean show);
-
-    /**
-     * Returns whether the underlying workbench window has a perspective bar (the
-     * perspective bar provides buttons to quickly switch between perspectives).
-     * <p>
-     * The initial value is <code>false</code>.
-     * </p>
-     * 
-     * @return <code>true</code> for a perspective bar, and <code>false</code>
-     * for no perspective bar
-     */
-    public boolean getShowPerspectiveBar();
-
-    /**
-     * Sets whether the underlying workbench window has a perspective bar (the 
-     * perspective bar provides buttons to quickly switch between perspectives).
-     * 
-     * @param show <code>true</code> for a perspective bar, and
-     * <code>false</code> for no perspective bar
-     */
-    public void setShowPerspectiveBar(boolean show);
-
-    /**
-     * Returns whether the underlying workbench window has fast view bars.
-     * <p>
-     * The initial value is <code>false</code>.
-     * </p>
-     * 
-     * @return <code>true</code> for fast view bars, and 
-     * <code>false</code> for no fast view bars
-     */
-    public boolean getShowFastViewBars();
-
-    /**
-     * Sets whether the underlying workbench window has fast view bars. 
-     * 
-     * @param enable <code>true</code> for fast view bars, and 
-     * <code>false</code> for no fast view bars
-     */
-    public void setShowFastViewBars(boolean enable);
-
-    /**
-     * Returns whether the underlying workbench window has a progress indicator.
-     * <p>
-     * The initial value is <code>false</code>.
-     * </p>
-     * 
-     * @return <code>true</code> for a progress indicator, and <code>false</code>
-     * for no progress indicator
-     */
-    public boolean getShowProgressIndicator();
-
-    /**
-     * Sets whether the underlying workbench window has a progress indicator.
-     * 
-     * @param show <code>true</code> for a progress indicator, and <code>false</code>
-     * for no progress indicator
-     */
-    public void setShowProgressIndicator(boolean show);
-
-    /**
-     * Returns the style bits to use for the window's shell when it is created.
-     * The default is <code>SWT.SHELL_TRIM</code>.
-     *
-     * @return the shell style bits
-     */
-    public int getShellStyle();
-
-    /**
-     * Sets the style bits to use for the window's shell when it is created.
-     * This method has no effect after the shell is created.
-     * That is, it must be called within the <code>preWindowOpen</code>
-     * callback on <code>WorkbenchAdvisor</code>.
-     * <p>
-     * For more details on the applicable shell style bits, see the
-     * documentation for {@link org.eclipse.swt.widgets.Shell}.
-     * </p>
-     *
-     * @param shellStyle the shell style bits
-     */
-    public void setShellStyle(int shellStyle);
-
-    /**
-     * Returns the size to use for the window's shell when it is created.
-     *
-     * @return the initial size to use for the shell
-     */
-    public Point getInitialSize();
-
-    /**
-     * Sets the size to use for the window's shell when it is created.
-     * This method has no effect after the shell is created.
-     * That is, it must be called within the <code>preWindowOpen</code>
-     * callback on <code>WorkbenchAdvisor</code>.
-     *
-     * @param initialSize the initial size to use for the shell
-     */
-    public void setInitialSize(Point initialSize);
-
-    /**
-     * Returns the data associated with this workbench window at the given key.
-     * 
-     * @param key the key
-     * @return the data, or <code>null</code> if there is no data at the given
-     * key
-     */
-    public Object getData(String key);
-
-    /**
-     * Sets the data associated with this workbench window at the given key.
-     * 
-     * @param key the key
-     * @param data the data, or <code>null</code> to delete existing data
-     */
-    public void setData(String key, Object data);
-
-    /**
-     * Adds the given drag and drop <code>Transfer</code> type to the ones
-     * supported for drag and drop on the editor area of this workbench window.
-     * <p>
-     * The workbench advisor would ordinarily call this method from the
-     * <code>preWindowOpen</code> callback.
-     * A newly-created workbench window supports no drag and drop transfer
-     * types. Adding <code>EditorInputTransfer.getInstance()</code>
-     * enables <code>IEditorInput</code>s to be transferred. 
-     * </p>
-     * <p>
-     * Note that drag and drop to the editor area requires adding one or more
-     * transfer types (using <code>addEditorAreaTransfer</code>) and 
-     * configuring a drop target listener
-     * (with <code>configureEditorAreaDropListener</code>)
-     * capable of handling any of those transfer types.
-     * </p>
-     * 
-     * @param transfer a drag and drop transfer object
-     * @see #configureEditorAreaDropListener
-     * @see org.eclipse.ui.part.EditorInputTransfer
-     */
-    public void addEditorAreaTransfer(Transfer transfer);
-
-    /**
-     * Configures the drop target listener for the editor area of this workbench window.
-     * <p>
-     * The workbench advisor ordinarily calls this method from the
-     * <code>preWindowOpen</code> callback.
-     * A newly-created workbench window has no configured drop target listener for its
-     * editor area.
-     * </p>
-     * <p>
-     * Note that drag and drop to the editor area requires adding one or more
-     * transfer types (using <code>addEditorAreaTransfer</code>) and 
-     * configuring a drop target listener
-     * (with <code>configureEditorAreaDropListener</code>)
-     * capable of handling any of those transfer types.
-     * </p>
-     * 
-     * @param dropTargetListener the drop target listener that will handle
-     * requests to drop an object on to the editor area of this window
-     * 
-     * @see #addEditorAreaTransfer
-     */
-    public void configureEditorAreaDropListener(
-            DropTargetListener dropTargetListener);
-
-    /**
-     * Returns the presentation factory for this window.  The window consults its presentation
-     * factory for the presentation aspects of views, editors, status lines, and other components
-     * of the window.
-     * <p>
-     * If no presentation factory has been set, a default one is returned.
-     * </p>
-     * 
-     * @return the presentation factory used for this window
-     * 
-     * @deprecated the presentation factory is now obtained via extension point
-     *   and a preference on org.eclipse.ui specifying which one to use;
-     *   see IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID
-     */
-    public AbstractPresentationFactory getPresentationFactory();
-
-    /**
-     * Sets the presentation factory.  The window consults its presentation
-     * factory for the presentation aspects of views, editors, status lines, and other components
-     * of the window.  
-     * <p>
-     * This must be called before the window's controls are created, for example
-     * in <code>preWindowOpen</code>.
-     * </p>
-     * 
-     * @param factory the presentation factory to use for this window
-     * 
-     * @deprecated the presentation factory is now obtained via extension point
-     *   and a preference on org.eclipse.ui specifying which one to use;
-     *   see IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID
-     */
-    public void setPresentationFactory(AbstractPresentationFactory factory);
-
-    /**
-     * Creates the menu bar for the window's shell.
-     * <p>
-     * This should only be called if the advisor is defining custom window contents
-     * in <code>createWindowContents</code>, and may only be called once.
-     * The caller must set it in the shell using <code>Shell.setMenuBar(Menu)</code>
-     * but must not make add, remove or change items in the result.
-     * The menu bar is populated by the window's menu manager.  
-     * The application can add to the menu manager in the advisor's 
-     * <code>fillActionBars</code> method instead.
-     * </p>
-     * 
-     * @return the menu bar, suitable for setting in the shell
-     */
-    public Menu createMenuBar();
-
-    /**
-     * Creates the cool bar control. 
-     * <p>
-     * This should only be called if the advisor is defining custom window contents
-     * in <code>createWindowContents</code>, and may only be called once.
-     * The caller must lay out the cool bar appropriately within the parent,
-     * but must not add, remove or change items in the result (hence the
-     * return type of <code>Control</code>).
-     * The cool bar is populated by the window's cool bar manager.  
-     * The application can add to the cool bar manager in the advisor's 
-     * <code>fillActionBars</code> method instead.
-     * </p>
-     * 
-     * @param parent the parent composite
-     * @return the cool bar control, suitable for laying out in the parent 
-     */
-    public Control createCoolBarControl(Composite parent);
-
-    /**
-     * Creates the status line control. 
-     * <p>
-     * This should only be called if the advisor is defining custom window contents
-     * in <code>createWindowContents</code>, and may only be called once.
-     * The caller must lay out the status line appropriately within the parent,
-     * but must not add, remove or change items in the result (hence the
-     * return type of <code>Control</code>).
-     * The status line is populated by the window's status line manager.  
-     * The application can add to the status line manager in the advisor's 
-     * <code>fillActionBars</code> method instead.
-     * </p>
-     * 
-     * @param parent the parent composite
-     * @return the status line control, suitable for laying out in the parent 
-     */
-    public Control createStatusLineControl(Composite parent);
-
-    /**
-     * Creates the page composite, in which the window's pages, and their
-     * views and editors, appear.
-     * <p>
-     * This should only be called if the advisor is defining custom window contents
-     * in <code>createWindowContents</code>, and may only be called once.
-     * The caller must lay out the page composite appropriately within the parent,
-     * but must not add, remove or change items in the result (hence the
-     * return type of <code>Control</code>).
-     * The page composite is populated by the workbench.  
-     * </p>
-     * 
-     * @param parent the parent composite
-     * @return the page composite, suitable for laying out in the parent 
-     */
-    public Control createPageComposite(Composite parent);
-	
-	/**
-	 * Saves the current state of the window using the specified memento.
-	 * 
-	 * @param memento the memento in which to save the window's state
-	 * @return a status object indicating whether the save was successful
-     * @see IWorkbenchConfigurer#restoreWorkbenchWindow(IMemento)
-	 * @since 3.1
-	 */
-	public IStatus saveState(IMemento memento);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java
deleted file mode 100644
index 54eb859..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchAdvisor.java
+++ /dev/null
@@ -1,871 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.application;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.StartupThreading;
-import org.eclipse.ui.internal.UISynchronizer;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindowConfigurer;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.application.CompatibilityWorkbenchWindowAdvisor;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.model.ContributionComparator;
-import org.eclipse.ui.model.IContributionService;
-import org.eclipse.ui.statushandlers.AbstractStatusHandler;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.statushandlers.WorkbenchErrorHandler;
-
-/**
- * Public base class for configuring the workbench.
- * <p>
- * Note that the workbench advisor object is created in advance of creating the
- * workbench. However, by the time the workbench starts calling methods on this
- * class, <code>PlatformUI.getWorkbench</code> is guaranteed to have been
- * properly initialized.
- * </p>
- * <p>
- * Example of creating and running a workbench (in an
- * <code>IPlatformRunnable</code>):
- * 
- * <pre>
- * <code>
- *           public class MyApplication implements IPlatformRunnable {
- *             public Object run(Object args) {
- *               WorkbenchAdvisor workbenchAdvisor = new MyWorkbenchAdvisor();
- *               Display display = PlatformUI.createDisplay();
- *               int returnCode = PlatformUI.createAndRunWorkbench(display, workbenchAdvisor);
- *               if (returnCode == PlatformUI.RETURN_RESTART) {
- *                  return IPlatformRunnable.EXIT_RESTART;
- *               } else {
- *                  return IPlatformRunnable.EXIT_OK;
- *             }
- *           }
- * </code>
- * </pre>
- * 
- * </p>
- * <p>
- * An application should declare a subclass of <code>WorkbenchAdvisor</code>
- * and override methods to configure the workbench to suit the needs of the
- * particular application.
- * </p>
- * <p>
- * The following advisor methods are called at strategic points in the
- * workbench's lifecycle (all occur within the dynamic scope of the call to
- * {@link PlatformUI#createAndRunWorkbench PlatformUI.createAndRunWorkbench}):
- * <ul>
- * <li><code>initialize</code> - called first; before any windows; use to
- * register things</li>
- * <li><code>preStartup</code> - called second; after initialize but before
- * first window is opened; use to temporarily disable things during startup or
- * restore</li>
- * <li><code>postStartup</code> - called third; after first window is opened;
- * use to reenable things temporarily disabled in previous step</li>
- * <li><code>postRestore</code> - called after the workbench and its windows
- * has been recreated from a previously saved state; use to adjust the restored
- * workbench</li>
- * <li><code>preWindowOpen</code> - called as each window is being opened;
- * use to configure aspects of the window other than actions bars </li>
- * <li><code>fillActionBars</code> - called after <code>preWindowOpen</code>
- * to configure a window's action bars</li>
- * <li><code>postWindowRestore</code> - called after a window has been
- * recreated from a previously saved state; use to adjust the restored window</li>
- * <li><code>postWindowCreate</code> - called after a window has been
- * created, either from an initial state or from a restored state; used to
- * adjust the window</li>
- * <li><code>openIntro</code> - called immediately before a window is opened
- * in order to create the introduction component, if any.</li>
- * <li><code>postWindowOpen</code> - called after a window has been opened;
- * use to hook window listeners, etc.</li>
- * <li><code>preWindowShellClose</code> - called when a window's shell is
- * closed by the user; use to pre-screen window closings</li>
- * <li><code>eventLoopException</code> - called to handle the case where the
- * event loop has crashed; use to inform the user that things are not well</li>
- * <li><code>eventLoopIdle</code> - called when there are currently no more
- * events to be processed; use to perform other work or to yield until new
- * events enter the queue</li>
- * <li><code>preShutdown</code> - called immediately prior to workbench
- * shutdown before any windows have been closed; allows the advisor to veto the
- * shutdown</li>
- * <li><code>postShutdown</code> - called last; after event loop has
- * terminated and all windows have been closed; use to deregister things
- * registered during initialize</li>
- * </ul>
- * </p>
- * 
- * @since 3.0
- */
-public abstract class WorkbenchAdvisor {
-
-	/**
-	 * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-	 * operation is not filling the action bars of an actual workbench window,
-	 * but rather a proxy (used for perspective customization).
-	 * 
-	 * @deprecated use {@link ActionBarAdvisor#FILL_PROXY instead}
-	 */
-	public static final int FILL_PROXY = ActionBarAdvisor.FILL_PROXY;
-
-	/**
-	 * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-	 * operation is supposed to fill (or describe) the workbench window's menu
-	 * bar.
-	 * 
-	 * @deprecated use {@link ActionBarAdvisor#FILL_MENU_BAR instead}
-	 */
-	public static final int FILL_MENU_BAR = ActionBarAdvisor.FILL_MENU_BAR;
-
-	/**
-	 * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-	 * operation is supposed to fill (or describe) the workbench window's cool
-	 * bar.
-	 * 
-	 * @deprecated use {@link ActionBarAdvisor#FILL_COOL_BAR instead}
-	 */
-	public static final int FILL_COOL_BAR = ActionBarAdvisor.FILL_COOL_BAR;
-
-	/**
-	 * Bit flag for {@link #fillActionBars fillActionBars} indicating that the
-	 * operation is supposed to fill (or describe) the workbench window's status
-	 * line.
-	 * 
-	 * @deprecated use {@link ActionBarAdvisor#FILL_STATUS_LINE instead}
-	 */
-	public static final int FILL_STATUS_LINE = ActionBarAdvisor.FILL_STATUS_LINE;
-
-	/**
-	 * The workbench configurer.
-	 */
-	private IWorkbenchConfigurer workbenchConfigurer;
-
-	/**
-	 * The workbench error handler.
-	 */
-	private AbstractStatusHandler workbenchErrorHandler;
-
-	private boolean introOpened;
-
-	/**
-	 * Creates and initializes a new workbench advisor instance.
-	 */
-	protected WorkbenchAdvisor() {
-		// do nothing
-	}
-
-	/**
-	 * Remembers the configurer and calls <code>initialize</code>.
-	 * <p>
-	 * For internal use by the workbench only.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the workbench
-	 */
-	public final void internalBasicInitialize(IWorkbenchConfigurer configurer) {
-		if (workbenchConfigurer != null) {
-			throw new IllegalStateException();
-		}
-		this.workbenchConfigurer = configurer;
-		initialize(configurer);
-	}
-
-	/**
-	 * Performs arbitrary initialization before the workbench starts running.
-	 * <p>
-	 * This method is called during workbench initialization prior to any
-	 * windows being opened. Clients must not call this method directly
-	 * (although super calls are okay). The default implementation does nothing.
-	 * Subclasses may override. Typical clients will use the configurer passed
-	 * in to tweak the workbench. If further tweaking is required in the future,
-	 * the configurer may be obtained using <code>getWorkbenchConfigurer</code>.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the workbench
-	 */
-	public void initialize(IWorkbenchConfigurer configurer) {
-		// do nothing
-	}
-
-	/**
-	 * Returns the workbench configurer for the advisor. Can be
-	 * <code>null</code> if the advisor is not initialized yet.
-	 * 
-	 * @return the workbench configurer, or <code>null</code> if the advisor
-	 *         is not initialized yet
-	 */
-	protected IWorkbenchConfigurer getWorkbenchConfigurer() {
-		return workbenchConfigurer;
-	}
-
-	/**
-	 * Returns the workbench error handler for the advisor.
-	 * 
-	 * @return the workbench error handler
-	 * @since 3.3
-	 */
-	public synchronized AbstractStatusHandler getWorkbenchErrorHandler() {
-		if (workbenchErrorHandler == null) {
-			workbenchErrorHandler = new WorkbenchErrorHandler();
-		}
-		return workbenchErrorHandler;
-	}
-
-	/**
-	 * Performs arbitrary actions just before the first workbench window is
-	 * opened (or restored).
-	 * <p>
-	 * This method is called after the workbench has been initialized and just
-	 * before the first window is about to be opened. Clients must not call this
-	 * method directly (although super calls are okay). The default
-	 * implementation does nothing. Subclasses may override.
-	 * </p>
-	 */
-	public void preStartup() {
-		// do nothing
-	}
-
-	/**
-	 * Performs arbitrary actions after the workbench windows have been opened
-	 * (or restored), but before the main event loop is run.
-	 * <p>
-	 * This method is called just after the windows have been opened. Clients
-	 * must not call this method directly (although super calls are okay). The
-	 * default implementation does nothing. Subclasses may override. It is okay
-	 * to call <code>IWorkbench.close()</code> from this method.
-	 * </p>
-	 */
-	public void postStartup() {
-		// do nothing
-	}
-
-	/**
-	 * Performs arbitrary finalization before the workbench is about to shut
-	 * down.
-	 * <p>
-	 * This method is called immediately prior to workbench shutdown before any
-	 * windows have been closed. Clients must not call this method directly
-	 * (although super calls are okay). The default implementation returns
-	 * <code>true</code>. Subclasses may override.
-	 * </p>
-	 * <p>
-	 * The advisor may veto a regular shutdown by returning <code>false</code>,
-	 * although this will be ignored if the workbench is being forced to shut
-	 * down.
-	 * </p>
-	 * 
-	 * @return <code>true</code> to allow the workbench to proceed with
-	 *         shutdown, <code>false</code> to veto a non-forced shutdown
-	 */
-	public boolean preShutdown() {
-		return true;
-	}
-
-	/**
-	 * Performs arbitrary finalization after the workbench stops running.
-	 * <p>
-	 * This method is called during workbench shutdown after all windows have
-	 * been closed. Clients must not call this method directly (although super
-	 * calls are okay). The default implementation does nothing. Subclasses may
-	 * override.
-	 * </p>
-	 */
-	public void postShutdown() {
-		// do nothing
-	}
-
-	/**
-	 * Performs arbitrary actions when the event loop crashes (the code that
-	 * handles a UI event throws an exception that is not caught).
-	 * <p>
-	 * This method is called when the code handling a UI event throws an
-	 * exception. In a perfectly functioning application, this method would
-	 * never be called. In practice, it comes into play when there are bugs in
-	 * the code that trigger unchecked runtime exceptions. It is also activated
-	 * when the system runs short of memory, etc. Fatal errors (ThreadDeath) are
-	 * not passed on to this method, as there is nothing that could be done.
-	 * </p>
-	 * <p>
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation logs the problem so that it does not go
-	 * unnoticed. Subclasses may override or extend this method. It is generally
-	 * a bad idea to override with an empty method, and you should be especially
-	 * careful when handling Errors.
-	 * </p>
-	 * 
-	 * @param exception
-	 *            the uncaught exception that was thrown inside the UI event
-	 *            loop
-	 */
-	public void eventLoopException(Throwable exception) {
-		// Protection from client doing super(null) call
-		if (exception == null) {
-			return;
-		}
-
-		try {
-			StatusManager.getManager().handle(
-					new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
-							"Unhandled event loop exception", exception)); //$NON-NLS-1$
-
-			if (WorkbenchPlugin.DEBUG) {
-				exception.printStackTrace();
-			}
-		} catch (Throwable e) {
-			// One of the log listeners probably failed. Core should have logged
-			// the
-			// exception since its the first listener.
-			System.err.println("Error while logging event loop exception:"); //$NON-NLS-1$
-			exception.printStackTrace();
-			System.err.println("Logging exception:"); //$NON-NLS-1$
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Performs arbitrary work or yields when there are no events to be
-	 * processed.
-	 * <p>
-	 * This method is called when there are currently no more events on the
-	 * queue to be processed at the moment.
-	 * </p>
-	 * <p>
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation yields until new events enter the
-	 * queue. Subclasses may override or extend this method. It is generally a
-	 * bad idea to override with an empty method. It is okay to call
-	 * <code>IWorkbench.close()</code> from this method.
-	 * </p>
-	 * 
-	 * @param display
-	 *            the main display of the workbench UI
-	 */
-	public void eventLoopIdle(Display display) {
-		// default: yield cpu until new events enter the queue
-		display.sleep();
-	}
-
-	/**
-	 * Creates a new workbench window advisor for configuring a new workbench
-	 * window via the given workbench window configurer. Clients should override
-	 * to provide their own window configurer. This method replaces all the
-	 * other window and action bar lifecycle methods on the workbench advisor.
-	 * <p>
-	 * The default implementation creates a window advisor that calls back to
-	 * the legacy window and action bar lifecycle methods on the workbench
-	 * advisor, for backwards compatibility with 3.0.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            the workbench window configurer
-	 * @return a new workbench window advisor
-	 * @since 3.1
-	 */
-	public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
-			IWorkbenchWindowConfigurer configurer) {
-		return new CompatibilityWorkbenchWindowAdvisor(this, configurer);
-	}
-
-	/**
-	 * Performs arbitrary actions before the given workbench window is opened.
-	 * <p>
-	 * This method is called before the window's controls have been created.
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation does nothing. Subclasses may override.
-	 * Typical clients will use the configurer passed in to tweak the workbench
-	 * window in an application-specific way; however, filling the window's menu
-	 * bar, tool bar, and status line must be done in
-	 * {@link #fillActionBars fillActionBars}, which is called immediately
-	 * after this method is called.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the particular workbench window
-	 *            being opened
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#preWindowOpen()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void preWindowOpen(IWorkbenchWindowConfigurer configurer) {
-		// do nothing
-	}
-
-	/**
-	 * Configures the action bars using the given action bar configurer. Under
-	 * normal circumstances, <code>flags</code> does not include
-	 * <code>FILL_PROXY</code>, meaning this is a request to fill the
-	 * actions\ bars of the given workbench window; the remaining flags indicate
-	 * which combination of the menu bar (<code>FILL_MENU_BAR</code>), the
-	 * tool bar (<code>FILL_COOL_BAR</code>), and the status line (<code>FILL_STATUS_LINE</code>)
-	 * are to be filled.
-	 * <p>
-	 * If <code>flags</code> does include <code>FILL_PROXY</code>, then
-	 * this is a request to describe the actions bars of the given workbench
-	 * window (which will already have been filled); again, the remaining flags
-	 * indicate which combination of the menu bar, the tool bar, and the status
-	 * line are to be described. The actions included in the proxy action bars
-	 * can be the same instances as in the actual window's action bars. Calling
-	 * <code>ActionFactory</code> to create new action instances is not
-	 * recommended, because these actions internally register listeners with the
-	 * window and there is no opportunity to dispose of these actions.
-	 * </p>
-	 * <p>
-	 * This method is called just after {@link #preWindowOpen preWindowOpen}.
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation does nothing. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param window
-	 *            the workbench window
-	 * @param configurer
-	 *            the action bar configurer object
-	 * @param flags
-	 *            bit mask composed from the constants
-	 *            {@link #FILL_MENU_BAR FILL_MENU_BAR},
-	 *            {@link #FILL_COOL_BAR FILL_COOL_BAR},
-	 *            {@link #FILL_STATUS_LINE FILL_STATUS_LINE}, and
-	 *            {@link #FILL_PROXY FILL_PROXY} Note: should 1st param be
-	 *            IWorkbenchWindowConfigurer to be more consistent with other
-	 *            methods? Note: suggest adding ActionBuilder as API, to
-	 *            encapsulate the action building outside of the advisor, and to
-	 *            handle the common pattern of hanging onto the action builder
-	 *            in order to properly handle FILL_PROXY
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link ActionBarAdvisor#fillActionBars(int)} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 * @see WorkbenchWindowAdvisor#createActionBarAdvisor(IActionBarConfigurer)
-	 */
-	public void fillActionBars(IWorkbenchWindow window,
-			IActionBarConfigurer configurer, int flags) {
-		// do nothing by default
-	}
-
-	/**
-	 * Performs arbitrary actions after the given workbench window has been
-	 * restored, but before it is opened.
-	 * <p>
-	 * This method is called after a previously-saved window have been
-	 * recreated. This method is not called when a new window is created from
-	 * scratch. This method is never called when a workbench is started for the
-	 * very first time, or when workbench state is not saved or restored.
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation does nothing. Subclasses may override.
-	 * It is okay to call <code>IWorkbench.close()</code> from this method.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the particular workbench window just
-	 *            restored
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#postWindowRestore()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void postWindowRestore(IWorkbenchWindowConfigurer configurer)
-			throws WorkbenchException {
-		// do nothing
-	}
-
-	/**
-	 * Opens the introduction componenet.
-	 * <p>
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation opens the intro in the first window
-	 * provided the preference IWorkbenchPreferences.SHOW_INTRO is
-	 * <code>true</code>. If an intro is shown then this preference will be
-	 * set to <code>false</code>. Subsequently, and intro will be shown only
-	 * if <code>WorkbenchConfigurer.getSaveAndRestore()</code> returns
-	 * <code>true</code> and the introduction was visible on last shutdown.
-	 * Subclasses may override.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            configurer an object for configuring the particular workbench
-	 *            window just created
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#openIntro()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void openIntro(IWorkbenchWindowConfigurer configurer) {
-		if (introOpened) {
-			return;
-		}
-
-		introOpened = true;
-
-		boolean showIntro = PrefUtil.getAPIPreferenceStore().getBoolean(
-				IWorkbenchPreferenceConstants.SHOW_INTRO);
-
-		if (!showIntro) {
-			return;
-		}
-
-		if (getWorkbenchConfigurer().getWorkbench().getIntroManager()
-				.hasIntro()) {
-			getWorkbenchConfigurer().getWorkbench().getIntroManager()
-					.showIntro(configurer.getWindow(), false);
-
-			PrefUtil.getAPIPreferenceStore().setValue(
-					IWorkbenchPreferenceConstants.SHOW_INTRO, false);
-			PrefUtil.saveAPIPrefs();
-		}
-	}
-
-	/**
-	 * Performs arbitrary actions after the given workbench window has been
-	 * created (possibly after being restored), but has not yet been opened.
-	 * <p>
-	 * This method is called after a new window has been created from scratch,
-	 * or when a previously-saved window has been restored. In the latter case,
-	 * this method is called after <code>postWindowRestore</code>. Clients
-	 * must not call this method directly (although super calls are okay). The
-	 * default implementation does nothing. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the particular workbench window just
-	 *            created
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#postWindowCreate()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void postWindowCreate(IWorkbenchWindowConfigurer configurer) {
-		// do nothing
-	}
-
-	/**
-	 * Performs arbitrary actions after the given workbench window has been
-	 * opened (possibly after being restored).
-	 * <p>
-	 * This method is called after a window has been opened. This method is
-	 * called after a new window has been created from scratch, or when a
-	 * previously-saved window has been restored. Clients must not call this
-	 * method directly (although super calls are okay). The default
-	 * implementation does nothing. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the particular workbench window just
-	 *            opened
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#postWindowOpen()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void postWindowOpen(IWorkbenchWindowConfigurer configurer) {
-		// do nothing
-	}
-
-	/**
-	 * Performs arbitrary actions as the given workbench window's shell is being
-	 * closed directly, and possibly veto the close.
-	 * <p>
-	 * This method is called from a ShellListener associated with the workbench
-	 * window. It is not called when the window is being closed for other
-	 * reasons. Clients must not call this method directly (although super calls
-	 * are okay). The default implementation does nothing. Subclasses may
-	 * override. Typical clients may use the configurer passed in to access the
-	 * workbench window being closed. If this method returns <code>false</code>,
-	 * then the user's request to close the shell is ignored. This gives the
-	 * workbench advisor an opportunity to query the user and/or veto the
-	 * closing of a window under some circumstances.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the particular workbench window
-	 *            whose shell is being closed
-	 * @return <code>true</code> to allow the window to close, and
-	 *         <code>false</code> to prevent the window from closing
-	 * @see org.eclipse.ui.IWorkbenchWindow#close
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#preWindowShellClose()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public boolean preWindowShellClose(IWorkbenchWindowConfigurer configurer) {
-		// do nothing, but allow the close() to proceed
-		return true;
-	}
-
-	/**
-	 * Performs arbitrary actions after the given workbench window is closed.
-	 * <p>
-	 * This method is called after the window's controls have been disposed.
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation does nothing. Subclasses may override.
-	 * Typical clients will use the configurer passed in to tweak the workbench
-	 * window in an application-specific way.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the particular workbench window
-	 *            being closed
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#postWindowClose()} instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void postWindowClose(IWorkbenchWindowConfigurer configurer) {
-		// do nothing
-	}
-
-	/**
-	 * Returns whether the menu with the given id is an application menu of the
-	 * given window. This is used during OLE "in place" editing. Application
-	 * menus should be preserved during menu merging. All other menus may be
-	 * removed from the window.
-	 * <p>
-	 * The default implementation returns false. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            an object for configuring the workbench window
-	 * @param menuId
-	 *            the menu id
-	 * @return <code>true</code> for application menus, and <code>false</code>
-	 *         for part-specific menus
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link ActionBarAdvisor#isApplicationMenu(String)} instead
-	 * @see WorkbenchWindowAdvisor#createActionBarAdvisor(IActionBarConfigurer)
-	 */
-	public boolean isApplicationMenu(IWorkbenchWindowConfigurer configurer,
-			String menuId) {
-		// default: not an application menu
-		return false;
-	}
-
-	/**
-	 * Returns the default input for newly created workbench pages when the
-	 * input is not explicitly specified.
-	 * <p>
-	 * The default implementation returns <code>null</code>. Subclasses may
-	 * override.
-	 * </p>
-	 * 
-	 * @return the default input for a new workbench window page, or
-	 *         <code>null</code> if none
-	 * 
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public IAdaptable getDefaultPageInput() {
-		// default: no input
-		return null;
-	}
-
-	/**
-	 * Returns the id of the perspective to use for the initial workbench
-	 * window, or <code>null</code> if no initial perspective should be shown
-	 * in the initial workbench window.
-	 * <p>
-	 * This method is called during startup when the workbench is creating the
-	 * first new window. Subclasses must implement.
-	 * </p>
-	 * <p>
-	 * If the {@link IWorkbenchPreferenceConstants#DEFAULT_PERSPECTIVE_ID}
-	 * preference is specified, it supercedes the perspective specified here.
-	 * </p>
-	 * 
-	 * @return the id of the perspective for the initial window, or
-	 *         <code>null</code> if no initial perspective should be shown
-	 */
-	public abstract String getInitialWindowPerspectiveId();
-
-	/**
-	 * Returns the id of the preference page that should be presented most
-	 * prominently.
-	 * <p>
-	 * The default implementation returns <code>null</code>. Subclasses may
-	 * override.
-	 * </p>
-	 * 
-	 * @return the id of the preference page, or <code>null</code> if none
-	 */
-	public String getMainPreferencePageId() {
-		// default: no opinion
-		return null;
-	}
-
-	/**
-	 * Creates the contents of the window.
-	 * <p>
-	 * The default implementation adds a menu bar, a cool bar, a status line, a
-	 * perspective bar, and a fast view bar. The visibility of these controls
-	 * can be configured using the <code>setShow*</code> methods on
-	 * <code>IWorkbenchWindowConfigurer</code>.
-	 * </p>
-	 * <p>
-	 * Subclasses may override to define custom window contents and layout, but
-	 * must call <code>IWorkbenchWindowConfigurer.createPageComposite</code>.
-	 * </p>
-	 * 
-	 * @param configurer
-	 *            the window configurer
-	 * @param shell
-	 *            the window's shell
-	 * @see IWorkbenchWindowConfigurer#createMenuBar
-	 * @see IWorkbenchWindowConfigurer#createCoolBarControl
-	 * @see IWorkbenchWindowConfigurer#createStatusLineControl
-	 * @see IWorkbenchWindowConfigurer#createPageComposite
-	 * 
-	 * @deprecated since 3.1, override
-	 *             {@link WorkbenchWindowAdvisor#createWindowContents(Shell)}
-	 *             instead
-	 * @see #createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
-	 */
-	public void createWindowContents(IWorkbenchWindowConfigurer configurer,
-			Shell shell) {
-		((WorkbenchWindowConfigurer) configurer).createDefaultContents(shell);
-	}
-
-	/**
-	 * Opens the workbench windows on startup. The default implementation tries
-	 * to restore the previously saved workbench state using
-	 * <code>IWorkbenchConfigurer.restoreWorkbenchState()</code>. If there
-	 * was no previously saved state, or if the restore failed, then a
-	 * first-time window is opened using
-	 * <code>IWorkbenchConfigurer.openFirstTimeWindow</code>.
-	 * 
-	 * @return <code>true</code> to proceed with workbench startup, or
-	 *         <code>false</code> to exit
-	 */
-	public boolean openWindows() {
-		final Display display = PlatformUI.getWorkbench().getDisplay();
-		final boolean result [] = new boolean[1];
-		
-		// spawn another init thread.  For API compatibility We guarantee this method is called from 
-		// the UI thread but it could take enough time to disrupt progress reporting.
-		// spawn a new thread to do the grunt work of this initialization and spin the event loop 
-		// ourselves just like it's done in Workbench.
-		final boolean[] initDone = new boolean[]{false};
-		final Throwable [] error = new Throwable[1];
-		Thread initThread = new Thread() {
-			/* (non-Javadoc)
-			 * @see java.lang.Thread#run()
-			 */
-			public void run() {
-				try {
-					//declare us to be a startup thread so that our syncs will be executed 
-					UISynchronizer.startupThread.set(Boolean.TRUE);
-					final IWorkbenchConfigurer [] myConfigurer = new IWorkbenchConfigurer[1];
-					StartupThreading.runWithoutExceptions(new StartupRunnable() {
-	
-						public void runWithException() throws Throwable {
-							myConfigurer[0] = getWorkbenchConfigurer();
-							
-						}});
-					
-					IStatus status = myConfigurer[0].restoreState();
-					if (!status.isOK()) {
-						if (status.getCode() == IWorkbenchConfigurer.RESTORE_CODE_EXIT) {
-							result[0] = false;
-							return;
-						}
-						if (status.getCode() == IWorkbenchConfigurer.RESTORE_CODE_RESET) {
-							myConfigurer[0].openFirstTimeWindow();
-						}
-					}
-					result[0] = true;
-				} catch (Throwable e) {
-					error[0] = e;
-				}
-				finally {
-					initDone[0] = true;
-					display.wake();
-				}
-			}};
-			initThread.start();
-
-			while (true) {
-				if (!display.readAndDispatch()) {
-					if (initDone[0])
-						break;
-					display.sleep();
-				}
-				
-			}
-			
-			// can only be a runtime or error
-			if (error[0] instanceof Error)
-				throw (Error)error[0];
-			else if (error[0] instanceof RuntimeException)
-				throw (RuntimeException)error[0];
-		
-			return result[0];
-	}
-
-	/**
-	 * Saves arbitrary application-specific state information for this workbench
-	 * advisor.
-	 * <p>
-	 * The default implementation simply returns an OK status. Subclasses may
-	 * extend or override.
-	 * </p>
-	 * 
-	 * @param memento
-	 *            the memento in which to save the advisor's state
-	 * @return a status object indicating whether the save was successful
-	 * @since 3.1
-	 */
-	public IStatus saveState(IMemento memento) {
-		return Status.OK_STATUS;
-	}
-
-	/**
-	 * Restores arbitrary application-specific state information for this
-	 * workbench advisor.
-	 * <p>
-	 * The default implementation simply returns an OK status. Subclasses may
-	 * extend or override.
-	 * </p>
-	 * 
-	 * @param memento
-	 *            the memento from which to restore the advisor's state
-	 * @return a status object indicating whether the restore was successful
-	 * @since 3.1
-	 */
-	public IStatus restoreState(IMemento memento) {
-		return Status.OK_STATUS;
-	}
-
-	/**
-	 * Return the contribution comparator for the particular type of
-	 * contribution. The default implementation of this class returns a
-	 * comparator that sorts the items by label.
-	 * 
-	 * The contributionType may be one of the constants in
-	 * {@link IContributionService} or it can be a value defined by the user.
-	 * 
-	 * @param contributionType
-	 *            the contribution type
-	 * @return the comparator, must not return <code>null</code>
-	 * @see IContributionService#getComparatorFor(String)
-	 * @since 3.4
-	 */
-	public ContributionComparator getComparatorFor(String contributionType) {
-		return new ContributionComparator();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
deleted file mode 100644
index 7454c85..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/WorkbenchWindowAdvisor.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.application;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.WorkbenchWindowConfigurer;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.intro.IIntroManager;
-
-/**
- * Public base class for configuring a workbench window.
- * <p>
- * The workbench window advisor object is created in response to a workbench
- * window being created (one per window), and is used to configure the window.
- * </p>
- * <p>
- * An application should declare a subclass of <code>WorkbenchWindowAdvisor</code>
- * and override methods to configure workbench windows to suit the needs of the
- * particular application.
- * </p>
- * <p>
- * The following advisor methods are called at strategic points in the
- * workbench window's lifecycle (as with the workbench advisor, all occur 
- * within the dynamic scope of the call to 
- * {@link PlatformUI#createAndRunWorkbench PlatformUI.createAndRunWorkbench}):
- * <ul>
- * <li><code>preWindowOpen</code> - called as the window is being opened; 
- *  use to configure aspects of the window other than actions bars</li>
- * <li><code>postWindowRestore</code> - called after the window has been
- * recreated from a previously saved state; use to adjust the restored
- * window</li>
- * <li><code>postWindowCreate</code> -  called after the window has been created,
- * either from an initial state or from a restored state;  used to adjust the
- * window</li>
- * <li><code>openIntro</code> - called immediately before the window is opened in
- * order to create the introduction component, if any.</li>
- * <li><code>postWindowOpen</code> - called after the window has been
- * opened; use to hook window listeners, etc.</li>
- * <li><code>preWindowShellClose</code> - called when the window's shell
- * is closed by the user; use to pre-screen window closings</li>
- * </ul>
- * </p>
- * 
- * @since 3.1
- */
-public class WorkbenchWindowAdvisor {
-
-    private IWorkbenchWindowConfigurer windowConfigurer;
-
-    /**
-     * Creates a new workbench window advisor for configuring a workbench
-     * window via the given workbench window configurer.
-     * 
-     * @param configurer an object for configuring the workbench window
-     */
-    public WorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
-        Assert.isNotNull(configurer);
-        this.windowConfigurer = configurer;
-    }
-
-    /**
-     * Returns the workbench window configurer.
-     * 
-     * @return the workbench window configurer
-     */
-    protected IWorkbenchWindowConfigurer getWindowConfigurer() {
-        return windowConfigurer;
-    }
-    
-    /**
-     * Performs arbitrary actions before the window is opened.
-     * <p>
-     * This method is called before the window's controls have been created.
-     * Clients must not call this method directly (although super calls are okay).
-     * The default implementation does nothing. Subclasses may override.
-     * Typical clients will use the window configurer to tweak the
-     * workbench window in an application-specific way; however, filling the
-     * window's menu bar, tool bar, and status line must be done in 
-     * {@link ActionBarAdvisor#fillActionBars}, which is called immediately
-     * after this method is called.
-     * </p>
-     */
-    public void preWindowOpen() {
-        // do nothing
-    }
-
-    /**
-     * Creates a new action bar advisor to configure the action bars of the window
-     * via the given action bar configurer.
-     * The default implementation returns a new instance of {@link ActionBarAdvisor}.
-     * 
-     * @param configurer the action bar configurer for the window
-     * @return the action bar advisor for the window
-     */
-    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
-        return new ActionBarAdvisor(configurer);
-    }
-    
-    /**
-     * Performs arbitrary actions after the window has been restored, 
-     * but before it is opened.
-     * <p>
-     * This method is called after a previously-saved window has been
-     * recreated. This method is not called when a new window is created from
-     * scratch. This method is never called when a workbench is started for the
-     * very first time, or when workbench state is not saved or restored.
-     * Clients must not call this method directly (although super calls are okay).
-     * The default implementation does nothing. Subclasses may override.
-     * It is okay to call <code>IWorkbench.close()</code> from this method.
-     * </p>
-     * 
-     * @exception WorkbenchException thrown if there are any errors to report
-     *   from post-restoration of the window
-     */
-    public void postWindowRestore() throws WorkbenchException {
-        // do nothing
-    }
-
-    /**
-     * Opens the introduction componenet.  
-     * <p>
-     * Clients must not call this method directly (although super calls are okay).
-     * The default implementation opens the intro in the first window provided
-     * if the preference IWorkbenchPreferences.SHOW_INTRO is <code>true</code>.  If 
-     * an intro is shown then this preference will be set to <code>false</code>.  
-     * Subsequently, and intro will be shown only if 
-     * <code>WorkbenchConfigurer.getSaveAndRestore()</code> returns 
-     * <code>true</code> and the introduction was visible on last shutdown.  
-     * Subclasses may override.
-     * </p>
-     */
-    public void openIntro() {
-        // TODO: Refactor this into an IIntroManager.openIntro(IWorkbenchWindow) call
-        
-        // introOpened flag needs to be global
-        IWorkbenchConfigurer wbConfig = getWindowConfigurer().getWorkbenchConfigurer();
-        final String key = "introOpened"; //$NON-NLS-1$
-        Boolean introOpened = (Boolean) wbConfig.getData(key);
-        if (introOpened != null && introOpened.booleanValue()) {
-			return;
-		}
-
-        wbConfig.setData(key, Boolean.TRUE);
-
-        boolean showIntro = PrefUtil.getAPIPreferenceStore().getBoolean(
-                IWorkbenchPreferenceConstants.SHOW_INTRO);
-        
-        IIntroManager introManager = wbConfig.getWorkbench().getIntroManager();
-        
-        boolean hasIntro = introManager.hasIntro();
-        boolean isNewIntroContentAvailable = introManager.isNewContentAvailable();
-        
-		if (hasIntro && (showIntro || isNewIntroContentAvailable)) {
-            introManager
-                    .showIntro(getWindowConfigurer().getWindow(), false);
-
-            PrefUtil.getAPIPreferenceStore().setValue(
-                    IWorkbenchPreferenceConstants.SHOW_INTRO, false);
-            PrefUtil.saveAPIPrefs();
-        }
-    }
-
-    /**
-     * Performs arbitrary actions after the window has been created (possibly 
-     * after being restored), but has not yet been opened.
-     * <p>
-     * This method is called after the window has been created from scratch, 
-     * or when it has been restored from a previously-saved window.  In the latter case,
-     * this method is called after <code>postWindowRestore</code>.
-     * Clients must not call this method directly (although super calls are okay).
-     * The default implementation does nothing. Subclasses may override.
-     * </p>
-     */
-    public void postWindowCreate() {
-        // do nothing
-    }
-
-    /**
-     * Performs arbitrary actions after the window has been opened (possibly 
-     * after being restored).
-     * <p>
-     * This method is called after the window has been opened. This method is 
-     * called after the window has been created from scratch, or when
-     * it has been restored from a previously-saved window.
-     * Clients must not call this method directly (although super calls are okay).
-     * The default implementation does nothing. Subclasses may override.
-     * </p>
-     */
-    public void postWindowOpen() {
-        // do nothing
-    }
-
-    /**
-	 * Performs arbitrary actions as the window's shell is being closed
-	 * directly, and possibly veto the close.
-	 * <p>
-	 * This method is called from a ShellListener associated with the window,
-	 * for example when the user clicks the window's close button. It is not
-	 * called when the window is being closed for other reasons, such as if the
-	 * user exits the workbench via the {@link ActionFactory#QUIT} action.
-	 * Clients must not call this method directly (although super calls are
-	 * okay). If this method returns <code>false</code>, then the user's
-	 * request to close the shell is ignored. This gives the workbench advisor
-	 * an opportunity to query the user and/or veto the closing of a window
-	 * under some circumstances.
-	 * </p>
-	 * 
-	 * @return <code>true</code> to allow the window to close, and
-	 *         <code>false</code> to prevent the window from closing
-	 * @see org.eclipse.ui.IWorkbenchWindow#close
-	 * @see WorkbenchAdvisor#preShutdown()
-	 */
-	public boolean preWindowShellClose() {
-		// do nothing, but allow the close() to proceed
-		return true;
-	}
-
-    /**
-	 * Performs arbitrary actions after the window is closed.
-	 * <p>
-	 * This method is called after the window's controls have been disposed.
-	 * Clients must not call this method directly (although super calls are
-	 * okay). The default implementation does nothing. Subclasses may override.
-	 * </p>
-	 */
-    public void postWindowClose() {
-        // do nothing
-    }
-
-    /**
-     * Creates the contents of the window.
-     * <p>
-     * The default implementation adds a menu bar, a cool bar, a status line, 
-     * a perspective bar, and a fast view bar.  The visibility of these controls
-     * can be configured using the <code>setShow*</code> methods on
-     * <code>IWorkbenchWindowConfigurer</code>.
-     * </p>
-     * <p>
-     * Subclasses may override to define custom window contents and layout,
-     * but must call <code>IWorkbenchWindowConfigurer.createPageComposite</code>.
-     * </p> 
-     * 
-     * @param shell the window's shell
-     * @see IWorkbenchWindowConfigurer#createMenuBar
-     * @see IWorkbenchWindowConfigurer#createCoolBarControl
-     * @see IWorkbenchWindowConfigurer#createStatusLineControl
-     * @see IWorkbenchWindowConfigurer#createPageComposite
-     */
-    public void createWindowContents(Shell shell) {
-        ((WorkbenchWindowConfigurer) getWindowConfigurer()).createDefaultContents(shell);
-    }
-
-    /**
-     * Creates and returns the control to be shown when the window has no open pages.
-     * If <code>null</code> is returned, the default window background is shown.
-     * <p>
-     * The default implementation returns <code>null</code>.
-     * Subclasses may override.
-     * </p>
-     * 
-     * @param parent the parent composite
-     * @return the control or <code>null</code>
-     */
-    public Control createEmptyWindowContents(Composite parent) {
-        return null;
-    }
-
-    /**
-     * Disposes any resources allocated by this window advisor.
-     * This is the last method called on this window advisor by the workbench.
-     * The default implementation does nothing.
-     * Subclasses may extend.
-     */
-    public void dispose() {
-        // do nothing.
-    }
-	
-	/**
-	 * Saves arbitrary application specific state information.
-	 * 
-	 * @param memento the storage area for object's state
-	 * @return a status object indicating whether the save was successful
-	 * @since 3.1
-	 */
-	public IStatus saveState(IMemento memento) {
-		// do nothing
-		return Status.OK_STATUS;
-	}
-	
-	/**
-	 * Restores arbitrary application specific state information.
-	 * 
-	 * @param memento the storage area for object's state
-	 * @return a status object indicating whether the restore was successful
-	 * @since 3.1
-	 */
-	public IStatus restoreState(IMemento memento) {
-		// do nothing
-		return Status.OK_STATUS;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/package.html
deleted file mode 100644
index 30e0242..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/application/package.html
+++ /dev/null
@@ -1,24 +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="Microsoft FrontPage 4.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Package-level Javadoc</title>
-</head>
-
-<body>
-
-Application-level APIs for configuring and controling the Eclipse Platform User
-Interface.
-<h2>Package Specification</h2>
-This package provides APIs that allow the main plug-in (the
-&quot;application&quot;) to configure and control the Eclipse Platform User
-Interface, most notably the workbench. These APIs are not of interest to normal
-Eclipse plug-ins.
-
-</body>
-
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IBundleGroupConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IBundleGroupConstants.java
deleted file mode 100644
index a4411ce..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IBundleGroupConstants.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.branding;
-
-/**
- * These constants define the set of properties that the UI expects to
- * be available via <code>IBundleGroup.getProperty(String)</code>.
- * 
- * @since 3.0
- * @see org.eclipse.core.runtime.IBundleGroup#getProperty(String)
- */
-public interface IBundleGroupConstants {
-
-    /**
-     * The text to show in an "about features" dialog.
-     */
-    public static final String ABOUT_TEXT = "aboutText"; //$NON-NLS-1$
-
-    /**
-     * An image which can be shown in an "about features" dialog (32x32).
-     * <p>
-     * The value is a fully qualified valid URL.
-     * </p> 
-     */
-    public static final String FEATURE_IMAGE = "featureImage"; //$NON-NLS-1$
-
-    /**
-     * A help reference for the feature's tips and tricks page (optional).
-     */
-    public static final String TIPS_AND_TRICKS_HREF = "tipsAndTricksHref"; //$NON-NLS-1$
-
-    /**
-     * The feature's welcome page (special XML-based format).
-     * <p>
-     * The value is a fully qualified valid URL.
-     * </p> 
-     * Products designed to run "headless" typically would not have such a page.
-     */
-    public static final String WELCOME_PAGE = "welcomePage"; //$NON-NLS-1$
-
-    /**
-     * The id of a perspective in which to show the welcome page
-     * (optional).
-     */
-    public static final String WELCOME_PERSPECTIVE = "welcomePerspective"; //$NON-NLS-1$
-
-    /**
-     * The URL of the license page for the feature (optional).
-     * <p>
-     * The value is a fully qualified valid URL.
-     * </p> 
-     */
-    public static final String LICENSE_HREF = "licenseHref"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IProductConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IProductConstants.java
deleted file mode 100644
index b8ca915..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/IProductConstants.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.branding;
-
-/**
- * These constants define the set of properties that the UI expects to
- * be available via <code>IProduct.getProperty(String)</code>.
- * 
- * @since 3.0
- * @see org.eclipse.core.runtime.IProduct#getProperty(String)
- */
-public interface IProductConstants {
-    /**
-     * The SWT application name, used to initialize the SWT Display.
-     * <p>  
-     * This value is used to refer to the application in .XDefaults
-     * files on X server based window systems such as Motif.
-     * </p>
-     * <p>
-     * To obtain a human-readable name for the product, use
-     * <code>IProduct.getName()</code>.
-     * </p>
-     * @see org.eclipse.swt.widgets.Display#setAppName
-     */
-    public static final String APP_NAME = "appName"; //$NON-NLS-1$
-
-    /**
-     * The text to show in an "about" dialog for this product.
-     * Products designed to run "headless" typically would not
-     * have such text.
-     */
-    public static final String ABOUT_TEXT = "aboutText"; //$NON-NLS-1$
-
-    /**
-     * An image which can be shown in an "about" dialog for this
-     * product. Products designed to run "headless" typically would not 
-     * have such an image.
-     * <p>
-     * The value is either a fully qualified valid URL or a path relative 
-     * to the product's defining bundle.
-     * </p> 
-     * <p>
-     * A full-sized product image (no larger than 500x330 pixels) is
-     * shown without the "aboutText" blurb.  A half-sized product image
-     * (no larger than 250x330 pixels) is shown with the "aboutText"
-     * blurb beside it.
-     * </p>
-     */
-    public static final String ABOUT_IMAGE = "aboutImage"; //$NON-NLS-1$
-
-    /**
-     * A file for customizing default preference
-     * values for a product. The value is interpreted as either a 
-     * URL or a bundle-relative path by the runtime. This is not referenced
-     * from the workbench.
-     * <p>
-     * The contents must be the same format as a 
-     * {@link java.util.Properties} file with the key/value pairs being:
-     * <pre>
-     * qualifier/key=value
-     * </pre>
-     * Where <code>qualifier</code> is typically the bundle id.
-     * </p>
-     */
-    public static final String PREFERENCE_CUSTOMIZATION = "preferenceCustomization"; //$NON-NLS-1$
-
-    /**
-     * An image to be used as the window icon for this product (16x16).  
-     * Products designed to run "headless" typically would not have such an image.
-     * <p>
-     * The value is either a fully qualified valid URL or a path relative 
-     * to the product's defining bundle.
-     * </p> 
-     * <p>
-     * If the <code>WINDOW_IMAGES</code> property is given, then it supercedes
-     * this one.
-     * </p>
-     * @deprecated use WINDOW_IMAGES instead (see recommendations there)
-     */
-    public static final String WINDOW_IMAGE = "windowImage"; //$NON-NLS-1$
-
-    /**
-     * An array of one or more images to be used for this product.  The
-     * expectation is that the array will contain the same image rendered
-     * at different sizes (16x16 and 32x32).  
-     * Products designed to run "headless" typically would not have such images.
-     * <p>
-     * The value is a comma-separated list of paths, where each path is either 
-     * a fully qualified valid URL or a path relative to the product's defining bundle.
-     * </p> 
-     * <p>
-     * If this property is given, then it supercedes <code>WINDOW_IMAGE</code>.
-     * </p>
-     * <p>
-     * It is recommended that products use <code>WINDOW_IMAGES</code> rather than
-     * <code>WINDOW_IMAGE</code>, and specify both a 16x16 image and a 32x32 image,
-     * to ensure that different sizes of the image are available for different uses
-     * in the OS.  For example, on Windows, the 16x16 image is used in the corner of
-     * the window and in the task tray, but the 32x32 image is used in the Alt+Tab
-     * application switcher.
-     * </p>
-     */
-    public static final String WINDOW_IMAGES = "windowImages"; //$NON-NLS-1$
-
-    /**
-     * The product's welcome page (special XML-based format).
-     * <p>
-     * The value is either a fully qualified valid URL or a path relative 
-     * to the product's defining bundle.
-     * </p> 
-     * <p>
-     * Products designed to run "headless" typically would not have such
-     * a page. Use of this property is discouraged in 3.0, the new
-     * <code>org.eclipse.ui.intro</code> extension point should be used instead.
-     * </p>
-     */
-    public static final String WELCOME_PAGE = "welcomePage"; //$NON-NLS-1$
-
-    /**
-     * The rectangle relative to the splash image's top left corner where
-     * the progress bar for reporting progress at startup should be shown.  
-     * Products designed to run "headless" typically would not define this
-     * property.
-     * <p>
-     * The value is a comma-separated list of four integer values, specifying
-     * x, y, width, and height of the rectangle in pixel coordinates.
-     * </p>
-     * @since 3.2
-     * @see org.eclipse.ui.IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
-     */
-    public static final String STARTUP_PROGRESS_RECT = "startupProgressRect"; //$NON-NLS-1$
-
-    /**
-     * The rectangle relative to the splash image's top left corner where
-     * messages for reporting progress at startup should be shown.  
-     * Products designed to run "headless" typically would not define this
-     * property.
-     * <p>
-     * The value is a comma-separated list of four integer values, specifying
-     * x, y, width, and height of the rectangle in pixel coordinates.
-     * </p> 
-     * @since 3.2
-     * @see org.eclipse.ui.IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
-     */
-    public static final String STARTUP_MESSAGE_RECT = "startupMessageRect"; //$NON-NLS-1$
-
-    /**
-     * The foreground color to be used when reporting progress at startup.  
-     * Products designed to run "headless" typically would not define this
-     * property.
-     * <p>
-     * The value is a six-digit hexadecimal number. The first two digits
-     * specify the red component of the color, the next two digits the
-     * green component, and the last two digits the blue component.
-     * </p> 
-     * @since 3.2
-     * @see org.eclipse.ui.IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
-     */
-    public static final String STARTUP_FOREGROUND_COLOR = "startupForegroundColor"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html
deleted file mode 100755
index b755b52..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html
+++ /dev/null
@@ -1,19 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Classes for branding support.</p>
-<h2>
-Package Specification</h2>
-<p>
-This package has API to public branding and product constants.  These
-constants are used when branding RCP applications.
-</p>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWebBrowser.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWebBrowser.java
deleted file mode 100644
index 6904926..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWebBrowser.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.browser;
-
-/**
- * Clients that supply implementation of the workbench browser support should
- * extend this class for web browser instances they manage. Clients should not
- * implement the <code>IWebBrowser</code> interface.
- * 
- * @since 3.1
- */
-public abstract class AbstractWebBrowser implements IWebBrowser {
-	private String id;
-
-	/**
-	 * The constructor that accepts the unique browser identifier.
-	 * 
-	 * @param id
-	 *            the unique browser identifier
-	 */
-	public AbstractWebBrowser(String id) {
-		this.id = id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWebBrowser#getId()
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWebBrowser#close()
-	 */
-	public boolean close() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java
deleted file mode 100644
index eba58c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/AbstractWorkbenchBrowserSupport.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.browser;
-
-import org.eclipse.ui.PartInitException;
-
-/**
- * Implements <code>IWorkbenchBrowserSupport</code> while leaving some methods
- * to the implementors. Classes that extend this abstract class are meant to be
- * contributed via 'org.eclipse.ui.browserSupport' extension point.
- * 
- * @since 3.1
- */
-public abstract class AbstractWorkbenchBrowserSupport implements
-		IWorkbenchBrowserSupport {
-		
-	private static final String SHARED_EXTERNAL_BROWSER_ID = "org.eclipse.ui.externalBrowser"; //$NON-NLS-1$
-
-	/**
-	 * The default constructor.
-	 */
-	public AbstractWorkbenchBrowserSupport() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#getExternalBrowser()
-	 */
-	public IWebBrowser getExternalBrowser() throws PartInitException {
-		return createBrowser(AS_EXTERNAL, SHARED_EXTERNAL_BROWSER_ID, null,
-				null);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#isInternalWebBrowserAvailable()
-	 */
-	public boolean isInternalWebBrowserAvailable() {
-		return false;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWebBrowser.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWebBrowser.java
deleted file mode 100644
index 9c61dfa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWebBrowser.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.browser;
-
-import java.net.URL;
-
-import org.eclipse.ui.PartInitException;
-
-/**
- * An opened Web browser instance (either internal or external).
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @see IWorkbenchBrowserSupport
- * @noimplement This interface is not intended to be implemented by clients.
- */
-
-public interface IWebBrowser {
-	/**
-	 * Returns the unique identifier of this browser. If an id has been supplied
-	 * to the browser support when the instance was created, it will be used.
-	 * Otherwise, a generated id will be provided to the browser that is
-	 * guaranteed to be unique.
-	 * 
-	 * @return a unique identifier of this browser instance
-	 */
-	String getId();
-
-	/**
-	 * Opens a URL on this Web browser instance.
-	 * 
-	 * @param url
-	 *            the URL to display
-	 * @exception PartInitException
-	 *                if the browser fails to navigate to the provided url for
-	 *                any reason
-	 */
-	void openURL(URL url) throws PartInitException;
-
-	/**
-	 * Closes this browser instance.
-	 * 
-	 * @return <code>true</code> if the browser was closed or
-	 *         <code>false</code> if the operation failed or is not supported.
-	 */
-	boolean close();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java
deleted file mode 100644
index b6b0041..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/IWorkbenchBrowserSupport.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.browser;
-
-import org.eclipse.ui.PartInitException;
-
-/**
- * Web browser support. This class allows you to open URLs using internal or
- * external Web browsers. Implementers may provide varying levels of support.
- * The most rudimentary support that must be provided is to open URLs in an
- * external web browser window. Everything else is a hint that browser support
- * implementation may choose to honor but is not required (although a good
- * implementation should aspire to support all the styles if possible on the
- * given platform).
- * <p>
- * The support has a two-phase approach to opening URLs. A browser instance is
- * created first, then <code>openURL</code> is called on it. This provides for
- * browser instance reuse for as long as needed. The step of creating the
- * browser instance encourages reuse itself by not creating new instances of
- * browsers if one with the same id is already open. It also makes it possible
- * to reuse browser instances restored after workbench is restarted.
- * <p>
- * The simplest way to open a URL is:
- * 
- * <pre>
- * IWorkbenchSupport.createBrowser(&quot;myId&quot;).openURL(url);
- * </pre>
- * 
- * <p>
- * The call above will show the provided URL by reusing the browser instance
- * with the matching id, or creating a new one if one does not exist already.
- * <p>
- * When more advanced control over the behavior of a browser instance is
- * required, it is recommended to create the instance first, then reuse it as
- * needed.
- * <p>
- * This interface is not intended to be implemented by clients.
- * 
- * @see IWebBrowser
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-
-public interface IWorkbenchBrowserSupport {
-	/**
-	 * Style parameter (value 1&lt;&lt;1) indicating that the address combo and
-	 * 'Go' button will created for the browser. This style is ignored if the
-	 * support is forced to open the browser as external.
-	 */
-	int LOCATION_BAR = 1 << 1;
-
-	/**
-	 * Style parameter (value 1&lt;&lt;2) indicating that the navigation bar for
-	 * navigating web pages will be created for the web browser. This style is
-	 * ignored if the support is forced to open the browser as external.
-	 */
-	int NAVIGATION_BAR = 1 << 2;
-
-	/**
-	 * Style constant (value 1&lt;&lt;3) indicating that status will be tracked
-	 * and shown for the browser (page loading progress, text messages etc.).
-	 */
-	int STATUS = 1 << 3;
-
-	/**
-	 * Style constant (value 1&lt;&lt;4) indicating that the internal web
-	 * browser will reopen after restarting the workbench (if used). In
-	 * addition, the URLs will appear in the MRU list.
-	 */
-	int PERSISTENT = 1 << 4;
-
-	/**
-	 * Style constant (value 1&lt;&lt;5) indicating that the internal web
-	 * browser will be hosted in a workbench editor area. This is just a hint -
-	 * implementers of the browser support may not honor it.
-	 */
-	int AS_EDITOR = 1 << 5;
-
-	/**
-	 * Style constant (value 1&lt;&lt;6) indicating that the internal web
-	 * browser will be hosted in a workbench view. This is just a hint -
-	 * implementers of the browser support may not honor it.
-	 */
-	int AS_VIEW = 1 << 6;
-
-	/**
-	 * Style constant (value 1&lt;&lt;7) indicating that the external web
-	 * browser must be used even if the implementation supports internal
-	 * browsers and the user didn't set the preference to external browsers.
-	 */
-	int AS_EXTERNAL = 1 << 7;
-
-	/**
-	 * Creates the new web browser instance. If the user has chosen to use the
-	 * internal Web browser, the given style bits (see class header for values)
-	 * will be used to open the browser.
-	 * <p>
-	 * The method will reuse an existing browser instance if the same
-	 * <code>browserId</code> value is passed to it. A persisted browser
-	 * instance restored upon startup can be accessed this way. If
-	 * <code>null</code> is passed as a browserId, a unique id will be
-	 * generated each time method is called.
-	 * <p>
-	 * If the user has chosen not to use the internal browser or it is not
-	 * available on the current platform, an external browser will be used and
-	 * all style parameters will be ignored.
-	 * </p>
-	 * 
-	 * @param style
-	 *            the style display constants. Style constants should be
-	 *            bitwise-ORed together.
-	 * @param browserId
-	 *            if an instance of a browser with the same id is already
-	 *            opened, it will be returned instead of creating a new one.
-	 *            Passing <code>null</code> will create a new instance with a
-	 *            generated id every time.
-	 * @param name
-	 *            a name used for the presentation of the internal browser
-	 * @param tooltip
-	 *            a tooltip used for the presentation of the internal browser
-	 * @return the browser instance that can be used to open the URL. Clients
-	 *         intending to reuse the instance for all the URLs should cache the
-	 *         instance and call IWebBrowser#openURL() on it. Clients are
-	 *         responsible for closing the browser instance when not needed.
-	 * @exception PartInitException
-	 *                if the operation failed for some reason
-	 */
-	IWebBrowser createBrowser(int style, String browserId, String name,
-			String tooltip) throws PartInitException;
-
-	/**
-	 * Creates the new web browser instance. This is a simplified method that
-	 * creates the instance using default values for style, name and tooltip
-	 * parameters. The method can be used to quickly open the URL by calling
-	 * <code>createBrowser(id).openURL(url)</code>.
-	 * <p>
-	 * 
-	 * @param browserId
-	 *            if an instance of a browser with the same id is already
-	 *            opened, it will be returned instead of creating a new one.
-	 *            Passing <code>null</code> will create a new instance with a
-	 *            generated id every time.
-	 * @return the browser instance that can be used to open the URL. Clients
-	 *         intending to reuse the instance for all the URLs should cache the
-	 *         instance and call IWebBrowser#openURL() on it. Clients are
-	 *         responsible for closing the browser instance when not needed.
-	 * @exception PartInitException
-	 *                if the operation failed for some reason
-	 */
-	IWebBrowser createBrowser(String browserId) throws PartInitException;
-
-	/**
-	 * Returns a shared instance of the external web browser. Clients can use it
-	 * to share one external browser. The external browser that will be used is
-	 * subject to browser support implementation. A suggested implementation is
-	 * to use the operating system's default browser. Implementations that offer
-	 * users a choice of the web browser should honour the users choice of
-	 * external browser, with the initial selection being the system default
-	 * browser.
-	 * 
-	 * @return the shared instance of the external browser
-	 * @exception PartInitException
-	 *                if the operation failed for some reason
-	 */
-	IWebBrowser getExternalBrowser() throws PartInitException;
-
-	/**
-	 * Tests whether web browser as an SWT widget can be created in this
-	 * workbench instance. If this method returns <code>false</code>,
-	 * <code>createBrowser</code> would ignore browser styles
-	 * <code>AS_EDITOR</code> and <code>AS_VIEW</code> and always create an
-	 * external browser.
-	 * 
-	 * @return <code>true</code> if internal web browser can be created on
-	 *         this platform, <code>false</code> otherwise.
-	 */
-	boolean isInternalWebBrowserAvailable();
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/package.html
deleted file mode 100644
index cb20fd5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/browser/package.html
+++ /dev/null
@@ -1,24 +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="Microsoft FrontPage 4.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Package-level Javadoc</title>
-</head>
-
-<body>
-
-Web browser support APIs for opening URLs from Eclipse
-applications
-<h2>Package Specification</h2>
-This package provides APIs that allow Eclipse plug-ins
-to create instances of Web browsers and open URLs in them.
-Browser support is pluggable and the APIs in this package
-provide a common interface for using the currently active
-support.
-</body>
-
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/AbstractHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/AbstractHandler.java
deleted file mode 100644
index 0ddc8d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/AbstractHandler.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.HandlerEvent;
-import org.eclipse.core.commands.IHandlerAttributes;
-import org.eclipse.core.commands.IHandlerListener;
-
-/**
- * This class is a partial implementation of <code>IHandler</code>. This
- * abstract implementation provides support for handler listeners. You should
- * subclass from this method unless you want to implement your own listener
- * support. Subclasses should call
- * {@link AbstractHandler#fireHandlerChanged(HandlerEvent)}when the handler
- * changes. Subclasses should also override
- * {@link AbstractHandler#getAttributeValuesByName()}if they have any
- * attributes.
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.AbstractHandler
- */
-public abstract class AbstractHandler extends
-        org.eclipse.core.commands.AbstractHandler implements IHandler {
-
-    /**
-     * Those interested in hearing about changes to this instance of
-     * <code>IHandler</code>. This member is null iff there are
-     * no listeners attached to this handler. (Most handlers don't
-     * have any listeners, and this optimization saves some memory.)
-     */
-    private List handlerListeners;
-
-    /**
-     * @see IHandler#addHandlerListener(IHandlerListener)
-     */
-    public void addHandlerListener(
-            org.eclipse.ui.commands.IHandlerListener handlerListener) {
-        if (handlerListener == null) {
-			throw new NullPointerException();
-		}
-        if (handlerListeners == null) {
-			handlerListeners = new ArrayList();
-		}
-        if (!handlerListeners.contains(handlerListener)) {
-			handlerListeners.add(handlerListener);
-		}
-    }
-
-    /**
-     * The default implementation does nothing. Subclasses who attach listeners
-     * to other objects are encouraged to detach them in this method.
-     * 
-     * @see org.eclipse.ui.commands.IHandler#dispose()
-     */
-    public void dispose() {
-        // Do nothing.
-    }
-
-    public Object execute(final ExecutionEvent event) throws ExecutionException {
-        try {
-            return execute(event.getParameters());
-        } catch (final org.eclipse.ui.commands.ExecutionException e) {
-            throw new ExecutionException(e.getMessage(), e.getCause());
-        }
-    }
-
-    /**
-     * Fires an event to all registered listeners describing changes to this
-     * instance.
-     * 
-     * @param handlerEvent
-     *            the event describing changes to this instance. Must not be
-     *            <code>null</code>.
-     */
-    protected void fireHandlerChanged(HandlerEvent handlerEvent) {
-        super.fireHandlerChanged(handlerEvent);
-        
-        if (handlerListeners != null) {
-            final boolean attributesChanged = handlerEvent.isEnabledChanged()
-                    || handlerEvent.isHandledChanged();
-            final Map previousAttributes;
-            if (attributesChanged) {
-                previousAttributes = new HashMap();
-                previousAttributes.putAll(getAttributeValuesByName());
-                if (handlerEvent.isEnabledChanged()) {
-                	Boolean disabled = !isEnabled() ? Boolean.TRUE: Boolean.FALSE;
-                    previousAttributes
-                            .put("enabled", disabled); //$NON-NLS-1$
-                }
-                if (handlerEvent.isHandledChanged()) {
-                	Boolean notHandled = !isHandled() ? Boolean.TRUE: Boolean.FALSE;
-                    previousAttributes.put(
-                            IHandlerAttributes.ATTRIBUTE_HANDLED, notHandled);
-                }
-            } else {
-                previousAttributes = null;
-            }
-            final org.eclipse.ui.commands.HandlerEvent legacyEvent = new org.eclipse.ui.commands.HandlerEvent(
-                    this, attributesChanged, previousAttributes);
-
-            for (int i = 0; i < handlerListeners.size(); i++) {
-                ((org.eclipse.ui.commands.IHandlerListener) handlerListeners
-                        .get(i)).handlerChanged(legacyEvent);
-            }
-        }
-    }
-    
-    protected void fireHandlerChanged(
-            final org.eclipse.ui.commands.HandlerEvent handlerEvent) {
-        if (handlerEvent == null) {
-			throw new NullPointerException();
-		}
-
-        if (handlerListeners != null) {
-            for (int i = 0; i < handlerListeners.size(); i++) {
-				((org.eclipse.ui.commands.IHandlerListener) handlerListeners
-                        .get(i)).handlerChanged(handlerEvent);
-			}
-        }
-
-        if (super.hasListeners()) {
-            final boolean enabledChanged;
-            final boolean handledChanged;
-            if (handlerEvent.haveAttributeValuesByNameChanged()) {
-                Map previousAttributes = handlerEvent
-                        .getPreviousAttributeValuesByName();
-
-                Object attribute = previousAttributes.get("enabled"); //$NON-NLS-1$
-                if (attribute instanceof Boolean) {
-                    enabledChanged = ((Boolean) attribute).booleanValue();
-                } else {
-                    enabledChanged = false;
-                }
-
-                attribute = previousAttributes
-                        .get(IHandlerAttributes.ATTRIBUTE_HANDLED);
-                if (attribute instanceof Boolean) {
-                    handledChanged = ((Boolean) attribute).booleanValue();
-                } else {
-                    handledChanged = false;
-                }
-            } else {
-                enabledChanged = false;
-                handledChanged = true;
-            }
-            final HandlerEvent newEvent = new HandlerEvent(this,
-                    enabledChanged, handledChanged);
-            super.fireHandlerChanged(newEvent);
-        }
-    }
-
-    /**
-     * This simply return an empty map. The default implementation has no
-     * attributes.
-     * 
-     * @see IHandler#getAttributeValuesByName()
-     */
-    public Map getAttributeValuesByName() {
-        return Collections.EMPTY_MAP;
-    }
-    
-    /**
-     * Returns true iff there is one or more IHandlerListeners attached to this
-     * AbstractHandler.
-     * 
-     * @return true iff there is one or more IHandlerListeners attached to this
-     *         AbstractHandler
-     * @since 3.1
-     */
-    protected final boolean hasListeners() {
-        return super.hasListeners() || handlerListeners != null;
-    }
-    
-    public boolean isEnabled() {
-        final Object handled = getAttributeValuesByName().get("enabled"); //$NON-NLS-1$
-        if (handled instanceof Boolean) {
-            return ((Boolean) handled).booleanValue();
-        }
-
-        return false;
-    }
-    
-    public boolean isHandled() {
-        final Object handled = getAttributeValuesByName().get(
-                IHandlerAttributes.ATTRIBUTE_HANDLED);
-        if (handled instanceof Boolean) {
-            return ((Boolean) handled).booleanValue();
-        }
-
-        return false;
-    }
-
-    /**
-     * @see IHandler#removeHandlerListener(IHandlerListener)
-     */
-    public void removeHandlerListener(
-            org.eclipse.ui.commands.IHandlerListener handlerListener) {
-        if (handlerListener == null) {
-			throw new NullPointerException();
-		}
-        if (handlerListeners == null) {
-            return;
-        }
-        
-        if (handlerListeners != null) {
-			handlerListeners.remove(handlerListener);
-		}
-        if (handlerListeners.isEmpty()) {
-            handlerListeners = null;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ActionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ActionHandler.java
deleted file mode 100644
index be70490..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ActionHandler.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.IHandlerAttributes;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.actions.RetargetAction;
-
-/**
- * This class adapts instances of <code>IAction</code> to
- * <code>IHandler</code>.
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.jface.commands.ActionHandler
- */
-public final class ActionHandler extends AbstractHandler {
-
-    /**
-     * The attribute name for the checked property of the wrapped action. This
-     * indicates whether the action should be displayed with as a checked check
-     * box.
-     */
-    private final static String ATTRIBUTE_CHECKED = "checked"; //$NON-NLS-1$
-
-    /**
-     * The attribute name for the enabled property of the wrapped action.
-     */
-    private final static String ATTRIBUTE_ENABLED = "enabled"; //$NON-NLS-1$
-
-    /**
-     * <p>
-     * The name of the attribute indicating whether the wrapped instance of
-     * <code>RetargetAction</code> has a handler.
-     * </p>
-     */
-    private final static String ATTRIBUTE_HANDLED = IHandlerAttributes.ATTRIBUTE_HANDLED;
-
-    /**
-     * The attribute name for the identifier of the wrapped action. This is the
-     * action identifier, and not the command identifier.
-     */
-    private final static String ATTRIBUTE_ID = "id"; //$NON-NLS-1$
-
-    /**
-     * The attribute name for the visual style of the wrapped action. The style
-     * can be things like a pull-down menu, a check box, a radio button or a
-     * push button.
-     */
-    private final static String ATTRIBUTE_STYLE = "style"; //$NON-NLS-1$
-
-    /**
-     * The wrapped action. This value is never <code>null</code>.
-     */
-    private final IAction action;
-
-    /**
-     * The map of attributes values. The keys are <code>String</code> values
-     * of the attribute names (given above). The values can be any type of
-     * <code>Object</code>.
-     * 
-     * This map is always null if there are no IHandlerListeners registered.
-     *  
-     */
-    private Map attributeValuesByName;
-
-    /**
-     * The property change listener hooked on to the action. This is initialized
-     * when the first listener is attached to this handler, and is removed when
-     * the handler is disposed or the last listener is removed.
-     */
-    private IPropertyChangeListener propertyChangeListener;
-
-    /**
-     * Creates a new instance of this class given an instance of
-     * <code>IAction</code>.
-     * 
-     * @param action
-     *            the action. Must not be <code>null</code>.
-     */
-    public ActionHandler(IAction action) {
-        if (action == null) {
-			throw new NullPointerException();
-		}
-
-        this.action = action;
-    }
-
-    /**
-     * @see org.eclipse.ui.commands.IHandler#addHandlerListener(org.eclipse.ui.commands.IHandlerListener)
-     * @since 3.1
-     */
-    public void addHandlerListener(IHandlerListener handlerListener) {
-        if (!hasListeners()) {
-            attachListener();
-        }
-
-        super.addHandlerListener(handlerListener);
-    }
-
-    /**
-     * When a listener is attached to this handler, then this registers a
-     * listener with the underlying action.
-     * 
-     * @since 3.1
-     */
-    private final void attachListener() {
-        if (propertyChangeListener == null) {
-            attributeValuesByName = getAttributeValuesByNameFromAction();
-
-            propertyChangeListener = new IPropertyChangeListener() {
-                public void propertyChange(
-                        PropertyChangeEvent propertyChangeEvent) {
-                    String property = propertyChangeEvent.getProperty();
-                    if (IAction.ENABLED.equals(property)
-                            || IAction.CHECKED.equals(property)
-                            || IHandlerAttributes.ATTRIBUTE_HANDLED
-                                    .equals(property)) {
-
-                        Map previousAttributeValuesByName = attributeValuesByName;
-                        attributeValuesByName = getAttributeValuesByNameFromAction();
-                        if (!attributeValuesByName
-                                .equals(previousAttributeValuesByName)) {
-							fireHandlerChanged(new HandlerEvent(
-                                    ActionHandler.this, true,
-                                    previousAttributeValuesByName));
-						}
-                    }
-                }
-            };
-        }
-
-        this.action.addPropertyChangeListener(propertyChangeListener);
-    }
-
-    /**
-     * When no more listeners are registered, then this is used to removed the
-     * property change listener from the underlying action.
-     * 
-     * @since 3.1
-     *  
-     */
-    private final void detachListener() {
-        this.action.removePropertyChangeListener(propertyChangeListener);
-        propertyChangeListener = null;
-        attributeValuesByName = null;
-    }
-
-    /**
-     * Removes the property change listener from the action.
-     * 
-     * @see org.eclipse.ui.commands.IHandler#dispose()
-     */
-    public void dispose() {
-        if (hasListeners()) {
-            action.removePropertyChangeListener(propertyChangeListener);
-        }
-    }
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.commands.IHandler#execute(java.util.Map)
-     */
-    public Object execute(Map parameterValuesByName) throws ExecutionException {
-        if ((action.getStyle() == IAction.AS_CHECK_BOX)
-                || (action.getStyle() == IAction.AS_RADIO_BUTTON)) {
-			action.setChecked(!action.isChecked());
-		}
-        try {
-            action.runWithEvent(new Event());
-        } catch (Exception e) {
-            throw new ExecutionException(
-                    "While executing the action, an exception occurred", e); //$NON-NLS-1$
-        }
-        return null;
-    }
-
-    /**
-     * Returns the action associated with this handler
-     * 
-     * @return the action associated with this handler (not null)
-     * @since 3.1
-     */
-    public IAction getAction() {
-        return action;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.commands.IHandler#getAttributeValuesByName()
-     */
-    public Map getAttributeValuesByName() {
-        if (attributeValuesByName == null) {
-            return getAttributeValuesByNameFromAction();
-        }
-
-        return attributeValuesByName;
-    }
-
-    /**
-     * An accessor for the attribute names from the action. This reads out all
-     * of the attributes from an action into a local map.
-     * 
-     * @return A map of the attribute values indexed by the attribute name. The
-     *         attributes names are strings, but the values can by any object.
-     *  
-     */
-    private Map getAttributeValuesByNameFromAction() {
-        Map map = new HashMap();
-        map.put(ATTRIBUTE_CHECKED, action.isChecked() ? Boolean.TRUE
-                : Boolean.FALSE);
-        map.put(ATTRIBUTE_ENABLED, action.isEnabled() ? Boolean.TRUE
-                : Boolean.FALSE);
-        boolean handled = true;
-        if (action instanceof RetargetAction) {
-            RetargetAction retargetAction = (RetargetAction) action;
-            handled = retargetAction.getActionHandler() != null;
-        }
-        map.put(ATTRIBUTE_HANDLED, handled ? Boolean.TRUE : Boolean.FALSE);
-        map.put(ATTRIBUTE_ID, action.getId());
-        map.put(ATTRIBUTE_STYLE, new Integer(action.getStyle()));
-        return Collections.unmodifiableMap(map);
-    }
-
-    /**
-     * @see org.eclipse.ui.commands.IHandler#removeHandlerListener(org.eclipse.ui.commands.IHandlerListener)
-     * @since 3.1
-     */
-    public void removeHandlerListener(IHandlerListener handlerListener) {
-        super.removeHandlerListener(handlerListener);
-
-        if (!hasListeners()) {
-            detachListener();
-        }
-    }
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("ActionHandler(action="); //$NON-NLS-1$
-		buffer.append(action);
-		buffer.append(')');
-
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CategoryEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CategoryEvent.java
deleted file mode 100644
index d80c430..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CategoryEvent.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>ICategory</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.commands.ICategoryListener#categoryChanged(CategoryEvent)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.CategoryEvent
- */
-public final class CategoryEvent {
-
-    /**
-     * The category that has changed; this value is never <code>null</code>.
-     */
-    private final ICategory category;
-
-    /**
-     * Whether the defined state of the category has changed.
-     */
-    private final boolean definedChanged;
-
-    /**
-     * Whether the name of the category has changed.
-     */
-    private final boolean nameChanged;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param category
-     *            the instance of the interface that changed.
-     * @param definedChanged
-     *            true, iff the defined property changed.
-     * @param nameChanged
-     *            true, iff the name property changed.
-     */
-    public CategoryEvent(ICategory category, boolean definedChanged,
-            boolean nameChanged) {
-        if (category == null) {
-			throw new NullPointerException();
-		}
-
-        this.category = category;
-        this.definedChanged = definedChanged;
-        this.nameChanged = nameChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public ICategory getCategory() {
-        return category;
-    }
-
-    /**
-     * Returns whether or not the defined property changed.
-     * 
-     * @return true, iff the defined property changed.
-     */
-    public boolean hasDefinedChanged() {
-        return definedChanged;
-    }
-
-    /**
-     * Returns whether or not the name property changed.
-     * 
-     * @return true, iff the name property changed.
-     */
-    public boolean hasNameChanged() {
-        return nameChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandEvent.java
deleted file mode 100644
index 17e9e22..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandEvent.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>ICommand</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICommandListener#commandChanged(CommandEvent)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.CommandEvent
- */
-public final class CommandEvent {
-
-    /**
-     * Whether the attributes of the command have changed.  These are name and
-     * value pairs representing properties of the command.
-     */
-    private final boolean attributeValuesByNameChanged;
-
-    /**
-     * Whether the category identifier has changed.
-     */
-    private final boolean categoryIdChanged;
-
-    /**
-     * The command that has changed; this value is never <code>null</code>.
-     */
-    private final ICommand command;
-
-    /**
-     * Whether the defined state of the command has changed.
-     */
-    private final boolean definedChanged;
-
-    /**
-     * Whether the description of the command has changed.
-     */
-    private final boolean descriptionChanged;
-
-    /**
-     * Whether the command has either gained or lost a handler.
-     */
-    private final boolean handledChanged;
-
-    /**
-     * Whether the key bindings for the command have changed.
-     */
-    private final boolean keySequenceBindingsChanged;
-
-    /**
-     * Whether the name of the command has changed.
-     */
-    private final boolean nameChanged;
-
-    /**
-     * The map of attributes before the change.  This is a map of attribute name
-     * (strings) to values (any object).
-     */
-    private Map previousAttributeValuesByName;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param command
-     *            the instance of the interface that changed.
-     * @param attributeValuesByNameChanged
-     *            true, iff the attributeValuesByName property changed.
-     * @param categoryIdChanged
-     *            true, iff the categoryId property changed.
-     * @param definedChanged
-     *            true, iff the defined property changed.
-     * @param descriptionChanged
-     *            true, iff the description property changed.
-     * @param handledChanged
-     *            true, iff the handled property changed.
-     * @param keySequenceBindingsChanged
-     *            true, iff the keySequenceBindings property changed.
-     * @param nameChanged
-     *            true, iff the name property changed.
-     * @param previousAttributeValuesByName
-     *            the map of previous attribute values by name. This map may be
-     *            empty. If this map is not empty, it's collection of keys must
-     *            only contain instances of <code>String</code>. This map
-     *            must be <code>null</code> if attributeValuesByNameChanged is
-     *            <code>false</code> and must not be null if
-     *            attributeValuesByNameChanged is <code>true</code>.
-     */
-    public CommandEvent(ICommand command, boolean attributeValuesByNameChanged,
-            boolean categoryIdChanged, boolean definedChanged,
-            boolean descriptionChanged, boolean handledChanged,
-            boolean keySequenceBindingsChanged, boolean nameChanged,
-            Map previousAttributeValuesByName) {
-        if (command == null) {
-			throw new NullPointerException();
-		}
-
-        if (!attributeValuesByNameChanged
-                && previousAttributeValuesByName != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (attributeValuesByNameChanged) {
-        	if (previousAttributeValuesByName == null) {
-				this.previousAttributeValuesByName = Collections.EMPTY_MAP;
-			} else {
-				this.previousAttributeValuesByName = Util.safeCopy(
-						previousAttributeValuesByName, String.class,
-						Object.class, false, true);
-			}
-        }
-
-        this.command = command;
-        this.attributeValuesByNameChanged = attributeValuesByNameChanged;
-        this.categoryIdChanged = categoryIdChanged;
-        this.definedChanged = definedChanged;
-        this.descriptionChanged = descriptionChanged;
-        this.handledChanged = handledChanged;
-        this.keySequenceBindingsChanged = keySequenceBindingsChanged;
-        this.nameChanged = nameChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public ICommand getCommand() {
-        return command;
-    }
-
-    /**
-     * Returns the map of previous attribute values by name.
-     * 
-     * @return the map of previous attribute values by name. This map may be
-     *         empty. If this map is not empty, it's collection of keys is
-     *         guaranteed to only contain instances of <code>String</code>.
-     *         This map is guaranteed to be <code>null</code> if
-     *         haveAttributeValuesByNameChanged() is <code>false</code> and is
-     *         guaranteed to not be null if haveAttributeValuesByNameChanged()
-     *         is <code>true</code>.
-     */
-    public Map getPreviousAttributeValuesByName() {
-        return previousAttributeValuesByName;
-    }
-
-    /**
-     * Returns whether or not the categoryId property changed.
-     * 
-     * @return true, iff the categoryId property changed.
-     */
-    public boolean hasCategoryIdChanged() {
-        return categoryIdChanged;
-    }
-
-    /**
-     * Returns whether or not the defined property changed.
-     * 
-     * @return true, iff the defined property changed.
-     */
-    public boolean hasDefinedChanged() {
-        return definedChanged;
-    }
-
-    /**
-     * Returns whether or not the description property changed.
-     * 
-     * @return true, iff the description property changed.
-     */
-    public boolean hasDescriptionChanged() {
-        return descriptionChanged;
-    }
-
-    /**
-     * Returns whether or not the handled property changed.
-     * 
-     * @return true, iff the handled property changed.
-     */
-    public boolean hasHandledChanged() {
-        return handledChanged;
-    }
-
-    /**
-     * Returns whether or not the name property changed.
-     * 
-     * @return true, iff the name property changed.
-     */
-    public boolean hasNameChanged() {
-        return nameChanged;
-    }
-
-    /**
-     * Returns whether or not the attributeValuesByName property changed.
-     * 
-     * @return true, iff the attributeValuesByName property changed.
-     */
-    public boolean haveAttributeValuesByNameChanged() {
-        return attributeValuesByNameChanged;
-    }
-
-    /**
-     * Returns whether or not the keySequenceBindings property changed.
-     * 
-     * @return true, iff the keySequenceBindings property changed.
-     */
-    public boolean haveKeySequenceBindingsChanged() {
-        return keySequenceBindingsChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandException.java
deleted file mode 100644
index b581c6a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * Signals that an exception occurred within the command architecture.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.common.CommandException
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class CommandException extends Exception {
-
-	/**
-	 * Generated serial version UID for this class.
-	 * 
-	 * @since 3.4
-	 */
-	private static final long serialVersionUID= 1776879459633730964L;
-	
-	
-	private Throwable cause;
-
-    /**
-     * Creates a new instance of this class with the specified detail message.
-     * 
-     * @param message
-     *            the detail message.
-     */
-    public CommandException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new instance of this class with the specified detail message
-     * and cause.
-     * 
-     * @param message
-     *            the detail message.
-     * @param cause
-     *            the cause.
-     */
-    public CommandException(String message, Throwable cause) {
-        super(message);
-        // don't pass the cause to super, to allow compilation against JCL Foundation
-        this.cause = cause;
-    }
-
-    /**
-     * Returns the cause of this throwable or <code>null</code> if the
-     * cause is nonexistent or unknown. 
-     *
-     * @return the cause or <code>null</code>
-     * @since 3.1
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandManagerEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandManagerEvent.java
deleted file mode 100644
index 2e792a2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/CommandManagerEvent.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.Set;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>ICommandManager</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICommandManagerListener#commandManagerChanged(CommandManagerEvent)
- * @see org.eclipse.core.commands.CommandManagerEvent
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- */
-public final class CommandManagerEvent {
-
-    /**
-     * Whether the set of active contexts has changed.
-     */
-    private final boolean activeContextIdsChanged;
-
-    /**
-     * Whether the active key configuration has changed.
-     */
-    private final boolean activeKeyConfigurationIdChanged;
-
-    /**
-     * Whether the locale has changed.
-     */
-    private final boolean activeLocaleChanged;
-
-    /**
-     * Whether the platform has changed.
-     */
-    private final boolean activePlatformChanged;
-
-    /**
-     * Whether the command manager has changed.
-     */
-    private final ICommandManager commandManager;
-
-    /**
-     * Whether the list of defined categories has changed.
-     */
-    private final boolean definedCategoryIdsChanged;
-
-    /** 
-     * Whether the list of defined commands has changed.
-     */
-    private final boolean definedCommandIdsChanged;
-
-    /**
-     * Whether the list of defined key configurations has changed.
-     */
-    private final boolean definedKeyConfigurationIdsChanged;
-
-    /**
-     * The set of the defined categories before the change occurred.  This is a
-     * set of strings (category identifiers).
-     */
-    private final Set previouslyDefinedCategoryIds;
-
-    /**
-     * The set of the defined commands before the change occurred.  This is a
-     * set of strings (command identifiers).
-     */
-    private final Set previouslyDefinedCommandIds;
-
-    /**
-     * The set of the defined key configurations before the change occurred.
-     * This is a set of strings (key configuration identifiers).
-     */
-    private final Set previouslyDefinedKeyConfigurationIds;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param commandManager
-     *            the instance of the interface that changed.
-     * @param activeContextIdsChanged
-     *            true, iff the activeContextIdsChanged property changed.
-     * @param activeKeyConfigurationIdChanged
-     *            true, iff the activeKeyConfigurationIdChanged property
-     *            changed.
-     * @param activeLocaleChanged
-     *            true, iff the activeLocaleChanged property changed.
-     * @param activePlatformChanged
-     *            true, iff the activePlatformChanged property changed.
-     * @param definedCategoryIdsChanged
-     *            true, iff the definedCategoryIdsChanged property changed.
-     * @param definedCommandIdsChanged
-     *            true, iff the definedCommandIdsChanged property changed.
-     * @param definedKeyConfigurationIdsChanged
-     *            true, iff the definedKeyConfigurationIdsChanged property
-     *            changed.
-     * @param previouslyDefinedCategoryIds
-     *            the set of identifiers to previously defined categories. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if definedCategoryIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            definedCategoryIdsChanged is <code>true</code>.
-     * @param previouslyDefinedCommandIds
-     *            the set of identifiers to previously defined commands. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if definedCommandIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            definedContextIdsChanged is <code>true</code>.
-     * @param previouslyDefinedKeyConfigurationIds
-     *            the set of identifiers to previously defined key
-     *            configurations. This set may be empty. If this set is not
-     *            empty, it must only contain instances of <code>String</code>.
-     *            This set must be <code>null</code> if
-     *            definedKeyConfigurationIdsChanged is <code>false</code> and
-     *            must not be null if definedKeyConfigurationIdsChanged is
-     *            <code>true</code>.
-     */
-    public CommandManagerEvent(ICommandManager commandManager,
-            boolean activeContextIdsChanged,
-            boolean activeKeyConfigurationIdChanged,
-            boolean activeLocaleChanged, boolean activePlatformChanged,
-            boolean definedCategoryIdsChanged,
-            boolean definedCommandIdsChanged,
-            boolean definedKeyConfigurationIdsChanged,
-            Set previouslyDefinedCategoryIds, Set previouslyDefinedCommandIds,
-            Set previouslyDefinedKeyConfigurationIds) {
-        if (commandManager == null) {
-			throw new NullPointerException();
-		}
-
-        if (!definedCategoryIdsChanged && previouslyDefinedCategoryIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (!definedCommandIdsChanged && previouslyDefinedCommandIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (!definedKeyConfigurationIdsChanged
-                && previouslyDefinedKeyConfigurationIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (definedCategoryIdsChanged) {
-            this.previouslyDefinedCategoryIds = Util.safeCopy(
-                    previouslyDefinedCategoryIds, String.class);
-        } else {
-            this.previouslyDefinedCategoryIds = null;
-        }
-
-        if (definedCommandIdsChanged) {
-            this.previouslyDefinedCommandIds = Util.safeCopy(
-                    previouslyDefinedCommandIds, String.class);
-        } else {
-            this.previouslyDefinedCommandIds = null;
-        }
-
-        if (definedKeyConfigurationIdsChanged) {
-            this.previouslyDefinedKeyConfigurationIds = Util.safeCopy(
-                    previouslyDefinedKeyConfigurationIds, String.class);
-        } else {
-            this.previouslyDefinedKeyConfigurationIds = null;
-        }
-
-        this.commandManager = commandManager;
-        this.activeContextIdsChanged = activeContextIdsChanged;
-        this.activeKeyConfigurationIdChanged = activeKeyConfigurationIdChanged;
-        this.activeLocaleChanged = activeLocaleChanged;
-        this.activePlatformChanged = activePlatformChanged;
-        this.definedCategoryIdsChanged = definedCategoryIdsChanged;
-        this.definedCommandIdsChanged = definedCommandIdsChanged;
-        this.definedKeyConfigurationIdsChanged = definedKeyConfigurationIdsChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public ICommandManager getCommandManager() {
-        return commandManager;
-    }
-
-    /**
-     * Returns the set of identifiers to previously defined categories.
-     * 
-     * @return the set of identifiers to previously defined categories. This set
-     *         may be empty. If this set is not empty, it is guaranteed to only
-     *         contain instances of <code>String</code>. This set is
-     *         guaranteed to be <code>null</code> if
-     *         haveDefinedCategoryIdsChanged() is <code>false</code> and is
-     *         guaranteed to not be null if haveDefinedCategoryIdsChanged() is
-     *         <code>true</code>.
-     */
-    public Set getPreviouslyDefinedCategoryIds() {
-        return previouslyDefinedCategoryIds;
-    }
-
-    /**
-     * Returns the set of identifiers to previously defined commands.
-     * 
-     * @return the set of identifiers to previously defined commands. This set
-     *         may be empty. If this set is not empty, it is guaranteed to only
-     *         contain instances of <code>String</code>. This set is
-     *         guaranteed to be <code>null</code> if
-     *         haveDefinedCommandIdsChanged() is <code>false</code> and is
-     *         guaranteed to not be null if haveDefinedCommandIdsChanged() is
-     *         <code>true</code>.
-     */
-    public Set getPreviouslyDefinedCommandIds() {
-        return previouslyDefinedCommandIds;
-    }
-
-    /**
-     * Returns the set of identifiers to previously defined key conigurations.
-     * 
-     * @return the set of identifiers to previously defined key configurations.
-     *         This set may be empty. If this set is not empty, it is guaranteed
-     *         to only contain instances of <code>String</code>. This set is
-     *         guaranteed to be <code>null</code> if
-     *         haveDefinedKeyConfigurationIdsChanged() is <code>false</code>
-     *         and is guaranteed to not be null if
-     *         haveDefinedKeyConfigurationIdsChanged() is <code>true</code>.
-     */
-    public Set getPreviouslyDefinedKeyConfigurationIds() {
-        return previouslyDefinedKeyConfigurationIds;
-    }
-
-    /**
-     * Returns whether or not the activeKeyConfigurationId property changed.
-     * 
-     * @return true, iff the activeKeyConfigurationId property changed.
-     */
-    public boolean hasActiveKeyConfigurationIdChanged() {
-        return activeKeyConfigurationIdChanged;
-    }
-
-    /**
-     * Returns whether or not the activeLocale property changed.
-     * 
-     * @return true, iff the activeLocale property changed.
-     */
-    public boolean hasActiveLocaleChanged() {
-        return activeLocaleChanged;
-    }
-
-    /**
-     * Returns whether or not the activePlatform property changed.
-     * 
-     * @return true, iff the activePlatform property changed.
-     */
-    public boolean hasActivePlatformChanged() {
-        return activePlatformChanged;
-    }
-
-    /**
-     * Returns whether or not the activeContextIds property changed.
-     * 
-     * @return true, iff the activeContextIds property changed.
-     */
-    public boolean haveActiveContextIdsChanged() {
-        return activeContextIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the definedCategoryIds property changed.
-     * 
-     * @return true, iff the definedCategoryIds property changed.
-     */
-    public boolean haveDefinedCategoryIdsChanged() {
-        return definedCategoryIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the definedCommandIds property changed.
-     * 
-     * @return true, iff the definedCommandIds property changed.
-     */
-    public boolean haveDefinedCommandIdsChanged() {
-        return definedCommandIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the definedKeyConfigurationIds property changed.
-     * 
-     * @return true, iff the definedKeyConfigurationIds property changed.
-     */
-    public boolean haveDefinedKeyConfigurationIdsChanged() {
-        return definedKeyConfigurationIdsChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExecutionException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExecutionException.java
deleted file mode 100644
index 61fa0f9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExecutionException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * Signals that an exception occured during the execution of a command.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.ExecutionException
- */
-public final class ExecutionException extends CommandException {
-
-    /**
-     * Generated serial version UID for this class.
-     * 
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3258130262767448120L;
-
-    /**
-     * Creates a new instance of this class with the specified detail message
-     * and cause.
-     * 
-     * @param message
-     *            the detail message.
-     * @param cause
-     *            the cause.
-     */
-    public ExecutionException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructs a new instance of <code>ExecutionException</code> using an
-     * instance of the new <code>ExecutionException</code>.
-     * 
-     * @param e
-     *            The exception from which this exception should be created;
-     *            must not be <code>null</code>.
-     * @since 3.1
-     */
-    public ExecutionException(final org.eclipse.core.commands.ExecutionException e) {
-        super(e.getMessage(), e);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExtensionParameterValues.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExtensionParameterValues.java
deleted file mode 100644
index d70b101..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ExtensionParameterValues.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-
-/**
- * <p>
- * A generic implementation of <code>IParameterValues</code> that takes advantage
- * of the <code>IExecutableExtension</code> mechanism.  The parameter values and names can be
- * specified purely in XML.  This can be done as follows:
- * </p>
- * <p><pre><code>
- *     &lt;command
- *    		name="%name"
- *     		description="%description"
- *     		categoryId="categoryId"
- *     		id="commandId"&gt;
- *     		&lt;parameter
- *     			id="parameterId"
- *     			name="%parameterName"&gt;
- *     				&lt;values class="org.eclipse.ui.commands.ExtensionParameterValues"&gt;
- *     					&lt;parameter name="%parameterName1" value="parameterValue1" /&gt;
- *     					&lt;parameter name="%parameterName2" value="parameterValue2" /&gt;
- *     					&lt;parameter name="%parameterName3" value="parameterValue3" /&gt;
- *     				&lt;/values&gt;
- *          &lt;/parameter&gt;
- *     &lt;/command&gt; 
- * </code></pre></p>
- * 
- * @since 3.1
- */
-public final class ExtensionParameterValues implements IParameterValues,
-		IExecutableExtension {
-
-	/**
-	 * The delimiter between elements if the name-value pairs are specified in a
-	 * single string.
-	 */
-	public static final String DELIMITER = ","; //$NON-NLS-1$
-
-	/**
-	 * The parameter values for this instance. This is initialization when the
-	 * executable extension is created. For example,
-	 */
-	private Map parameterValues = null;
-
-	public Map getParameterValues() {
-		return parameterValues;
-	}
-
-	public final void setInitializationData(final IConfigurationElement config,
-			final String propertyName, final Object data) {
-		if (data == null) {
-			parameterValues = Collections.EMPTY_MAP;
-
-		} else if (data instanceof String) {
-			parameterValues = new HashMap();
-			final StringTokenizer tokenizer = new StringTokenizer(
-					(String) data, DELIMITER);
-			while (tokenizer.hasMoreTokens()) {
-				final String name = tokenizer.nextToken();
-				if (tokenizer.hasMoreTokens()) {
-					final String value = tokenizer.nextToken();
-					parameterValues.put(name, value);
-				}
-			}
-			parameterValues = Collections.unmodifiableMap(parameterValues);
-
-		} else if (data instanceof Hashtable) {
-			parameterValues = Collections.unmodifiableMap((Hashtable) data);
-
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerEvent.java
deleted file mode 100644
index fa054ec..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerEvent.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.Map;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>IHandler</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IHandlerListener#handlerChanged(HandlerEvent)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- */
-public final class HandlerEvent {
-
-    /**
-     * Whether the attributes of the handler changed.
-     */
-    private final boolean attributeValuesByNameChanged;
-
-    /**
-     * The handler that changed; this value is never <code>null</code>.
-     */
-    private final IHandler handler;
-
-    /**
-     * This is the cached result of getPreviousAttributeValuesByName. It is
-     * computed the first time getPreviousAttributeValuesByName is called.
-     */
-    private Map previousAttributeValuesByName;
-
-    /**
-     * The map of previous attributes, if they changed.  If they did not change,
-     * then this value is <code>null</code>.  The map's keys are the attribute
-     * names (strings), and its value are any object.
-     * 
-     * This is the original map passed into the constructor. This object always
-     * returns a copy of this map, not the original. However the constructor of
-     * this object is called very frequently and the map is rarely requested,
-     * so we only copy the map the first time it is requested. 
-     * 
-     * @since 3.1
-     */
-    private final Map originalPreviousAttributeValuesByName;
-    
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param handler
-     *            the instance of the interface that changed.
-     * @param attributeValuesByNameChanged
-     *            true, iff the attributeValuesByName property changed.
-     * @param previousAttributeValuesByName
-     *            the map of previous attribute values by name. This map may be
-     *            empty. If this map is not empty, it's collection of keys must
-     *            only contain instances of <code>String</code>. This map
-     *            must be <code>null</code> if attributeValuesByNameChanged is
-     *            <code>false</code> and must not be null if
-     *            attributeValuesByNameChanged is <code>true</code>.
-     */
-    public HandlerEvent(IHandler handler, boolean attributeValuesByNameChanged,
-            Map previousAttributeValuesByName) {
-        if (handler == null) {
-			throw new NullPointerException();
-		}
-
-        if (!attributeValuesByNameChanged
-                && previousAttributeValuesByName != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (attributeValuesByNameChanged) {
-            this.originalPreviousAttributeValuesByName = previousAttributeValuesByName;
-        } else {
-            this.originalPreviousAttributeValuesByName = null;
-        }
-
-        this.handler = handler;
-        this.attributeValuesByNameChanged = attributeValuesByNameChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IHandler getHandler() {
-        return handler;
-    }
-
-    /**
-     * Returns the map of previous attribute values by name.
-     * 
-     * @return the map of previous attribute values by name. This map may be
-     *         empty. If this map is not empty, it's collection of keys is
-     *         guaranteed to only contain instances of <code>String</code>.
-     *         This map is guaranteed to be <code>null</code> if
-     *         haveAttributeValuesByNameChanged() is <code>false</code> and is
-     *         guaranteed to not be null if haveAttributeValuesByNameChanged()
-     *         is <code>true</code>.
-     */
-    public Map getPreviousAttributeValuesByName() {
-        if (originalPreviousAttributeValuesByName == null) {
-            return null;
-        }
-        
-        if (previousAttributeValuesByName == null) {
-            previousAttributeValuesByName = Util.safeCopy(
-                    originalPreviousAttributeValuesByName, String.class, Object.class,
-                    false, true);
-        }
-        
-        return previousAttributeValuesByName;
-    }
-
-    /**
-     * Returns whether or not the attributeValuesByName property changed.
-     * 
-     * @return true, iff the attributeValuesByName property changed.
-     */
-    public boolean haveAttributeValuesByNameChanged() {
-        return attributeValuesByNameChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerSubmission.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerSubmission.java
deleted file mode 100644
index 1f6020b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/HandlerSubmission.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * </p>
- * An instance of this class represents a request to handle a command. A handler
- * submission specifies a list of conditions under which it would be appropriate
- * for a particular command to have a particular handler. These conditions
- * include things like the active part or the active shell. So, it is possible
- * to say things like: "when my part is active, please consider calling these
- * classes when you want to perform a cut, copy or paste".
- * </p>
- * <p>
- * The workbench considers all of the submissions it has received and choses the
- * ones it views as the best possible match.
- * </p>
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * <p>
- * Note: this class has a natural ordering that is inconsistent with equals.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.commands.IWorkbenchCommandSupport
- * @deprecated Please use <code>IHandlerService.activateHandler</code>
- *             instead.
- * @see org.eclipse.ui.handlers.IHandlerService
- */
-public final class HandlerSubmission implements Comparable {
-
-    /**
-     * The part identifier for the part that should be active before this
-     * submission can be considered.  This value can be <code>null</code>, which
-     * indicates that it should match any part.
-     */
-    private final String activePartId;
-
-    /**
-     * The shell that must be active before this submission can be considered.
-     * This value can be <code>null</code>, which indicates that it should match
-     * any shell.
-     */
-    private final Shell activeShell;
-
-    /**
-     * The workbench site that must be active before this submission can be
-     * considered.  This value can be <code>null</code>, which indicates that it
-     * should match an workbench part site.
-     */
-    private final IWorkbenchPartSite activeWorkbenchPartSite;
-
-    /**
-     * The identifier for the command which the submitted handler handles.  This
-     * value cannot be <code>null</code>.
-     */
-    private final String commandId;
-
-    /**
-     * The handler being submitted.  This value cannot be <code>null</code>.  
-     */
-    private final IHandler handler;
-
-    /**
-     * The priority for this submission.  In the event of all other factors
-     * being equal, the priority will be considered in an attempt to resolve
-     * conflicts.  This value cannot be <code>null</code>.
-     */
-    private final Priority priority;
-
-    /**
-     * A lazily computed cache of the string representation of this submission.
-     * This value is computed once; before it is computed, it is
-     * <code>null</code>.
-     */
-    private transient String string;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param activePartId
-     *            the identifier of the part that must be active for this
-     *            request to be considered. May be <code>null</code>.
-     * @param activeShell
-     *            the shell that must be active for this request to be
-     *            considered. May be <code>null</code>.
-     * @param activeWorkbenchPartSite
-     *            the workbench part site of the part that must be active for
-     *            this request to be considered. May be <code>null</code>.
-     * @param commandId
-     *            the identifier of the command to be handled. Must not be
-     *            <code>null</code>.
-     * @param handler
-     *            the handler. Must not be <code>null</code>.
-     * @param priority
-     *            the priority. Must not be <code>null</code>.
-     */
-    public HandlerSubmission(String activePartId, Shell activeShell,
-            IWorkbenchPartSite activeWorkbenchPartSite, String commandId,
-            IHandler handler, Priority priority) {
-        if (commandId == null || handler == null || priority == null) {
-			throw new NullPointerException();
-		}
-
-        this.activePartId = activePartId;
-        this.activeShell = activeShell;
-        this.activeWorkbenchPartSite = activeWorkbenchPartSite;
-        this.commandId = commandId;
-        this.handler = handler;
-        this.priority = priority;
-    }
-
-    /**
-     * @see Comparable#compareTo(java.lang.Object)
-     */
-    public int compareTo(Object object) {
-        HandlerSubmission castedObject = (HandlerSubmission) object;
-        int compareTo = Util.compare(activeWorkbenchPartSite,
-                castedObject.activeWorkbenchPartSite);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(activePartId, castedObject.activePartId);
-
-            if (compareTo == 0) {
-                compareTo = Util.compare(activeShell, castedObject.activeShell);
-
-                if (compareTo == 0) {
-                    compareTo = Util.compare(priority, castedObject.priority);
-
-                    if (compareTo == 0) {
-                        compareTo = Util.compare(commandId,
-                                castedObject.commandId);
-
-                        if (compareTo == 0) {
-							compareTo = Util.compare(handler,
-                                    castedObject.handler);
-						}
-                    }
-                }
-            }
-        }
-
-        return compareTo;
-    }
-
-    /**
-     * Returns the identifier of the part that must be active for this request
-     * to be considered.
-     * 
-     * @return the identifier of the part that must be active for this request
-     *         to be considered. May be <code>null</code>.
-     */
-    public String getActivePartId() {
-        return activePartId;
-    }
-
-    /**
-     * Returns the shell that must be active for this request to be considered.
-     * 
-     * @return the shell that must be active for this request to be considered.
-     *         May be <code>null</code>.
-     */
-    public Shell getActiveShell() {
-        return activeShell;
-    }
-
-    /**
-     * Returns the workbench part site of the part that must be active for this
-     * request to be considered.
-     * 
-     * @return the workbench part site of the part that must be active for this
-     *         request to be considered. May be <code>null</code>.
-     */
-    public IWorkbenchPartSite getActiveWorkbenchPartSite() {
-        return activeWorkbenchPartSite;
-    }
-
-    /**
-     * Returns the identifier of the command to be handled.
-     * 
-     * @return the identifier of the command to be handled. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public String getCommandId() {
-        return commandId;
-    }
-
-    /**
-     * Returns the handler.
-     * 
-     * @return the handler. Guaranteed not to be <code>null</code>.
-     */
-    public IHandler getHandler() {
-        return handler;
-    }
-
-    /**
-     * Returns the priority.
-     * 
-     * @return the priority. Guaranteed not to be <code>null</code>.
-     */
-    public Priority getPriority() {
-        return priority;
-    }
-
-    /**
-     * @see Object#toString()
-     */
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append("[activePartId="); //$NON-NLS-1$
-            stringBuffer.append(activePartId);
-            stringBuffer.append(",activeShell="); //$NON-NLS-1$
-            stringBuffer.append(activeShell);
-            stringBuffer.append(",activeWorkbenchSite="); //$NON-NLS-1$
-            stringBuffer.append(activeWorkbenchPartSite);
-            stringBuffer.append(",commandId="); //$NON-NLS-1$
-            stringBuffer.append(commandId);
-            stringBuffer.append(",handler="); //$NON-NLS-1$
-            stringBuffer.append(handler);
-            stringBuffer.append(",priority="); //$NON-NLS-1$
-            stringBuffer.append(priority);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategory.java
deleted file mode 100644
index 6482d2a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategory.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-/**
- * <p>
- * A category is a grouping of commands by functional area. For example, in the
- * Eclipse workbench, "Text Editing" is a category containing various commands
- * related to text editing. A category's primary functionality is to control the
- * display of commands to the user. When appropriate, commands displayed to the
- * user (e.g., keys preference page) will be grouped by category.
- * </p>
- * <p>
- * An instance of <code>ICategory</code> is a handle representing a category
- * as defined by the extension point <code>org.eclipse.ui.commands</code>.
- * The identifier of the handle is identifier of the category being represented.
- * </p>
- * <p>
- * An instance of <code>ICategory</code> can be obtained from an instance of
- * <code>ICommandManager</code> for any identifier, whether or not a category
- * with that identifier defined in the plugin registry.
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation, which causes dynamic changes to the
- * plugin registry, and therefore, potentially, dynamic changes to the set of
- * category definitions.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICategoryListener
- * @see ICommandManager
- * @see org.eclipse.core.commands.Category
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ICategory extends Comparable {
-
-    /**
-     * Registers an instance of <code>ICategoryListener</code> to listen for
-     * changes to attributes of this instance.
-     * 
-     * @param categoryListener
-     *            the instance of <code>ICategoryListener</code> to register.
-     *            Must not be <code>null</code>. If an attempt is made to
-     *            register an instance of <code>ICategoryListener</code>
-     *            which is already registered with this instance, no operation
-     *            is performed.
-     */
-    void addCategoryListener(ICategoryListener categoryListener);
-
-    /**
-     * <p>
-     * Returns the description of the category represented by this handle,
-     * suitable for display to the user.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the description of the category represented by this handle.
-     *         Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the category represented by this handle is not defined.
-     */
-    String getDescription() throws NotDefinedException;
-
-    /**
-     * Returns the identifier of this handle.
-     * 
-     * @return the identifier of this handle. Guaranteed not to be <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * <p>
-     * Returns the name of the category represented by this handle, suitable
-     * for display to the user.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the name of the category represented by this handle. Guaranteed
-     *         not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the category represented by this handle is not defined.
-     */
-    String getName() throws NotDefinedException;
-
-    /**
-     * <p>
-     * Returns whether or not the category represented by this handle is
-     * defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff the category represented by this
-     *         handle is defined.
-     */
-    boolean isDefined();
-
-    /**
-     * Unregisters an instance of <code>ICategoryListener</code> listening
-     * for changes to attributes of this instance.
-     * 
-     * @param categoryListener
-     *            the instance of <code>ICategoryListener</code> to
-     *            unregister. Must not be <code>null</code>. If an attempt
-     *            is made to unregister an instance of <code>ICategoryListener</code>
-     *            which is not already registered with this instance, no
-     *            operation is performed.
-     */
-    void removeCategoryListener(ICategoryListener categoryListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategoryListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategoryListener.java
deleted file mode 100644
index 7850833..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICategoryListener.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-/**
- * <p>
- * An instance of <code>ICategoryListener</code> can be used by clients to
- * receive notification of changes to one or more instances of
- * <code>ICategory</code>.
- * </p>
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see CategoryEvent
- * @see org.eclipse.ui.commands.ICategory#addCategoryListener(ICategoryListener)
- * @see org.eclipse.ui.commands.ICategory#removeCategoryListener(ICategoryListener)
- * @see org.eclipse.core.commands.ICategoryListener
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- */
-public interface ICategoryListener {
-
-    /**
-     * Notifies that one or more attributes of an instance of
-     * <code>ICategory</code> have changed. Specific details are described in
-     * the <code>CategoryEvent</code>.
-     * 
-     * @param categoryEvent
-     *            the category event. Guaranteed not to be <code>null</code>.
-     */
-    void categoryChanged(CategoryEvent categoryEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommand.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommand.java
deleted file mode 100644
index af6b5d6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommand.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * <p>
- * An instance of <code>ICommand</code> is a handle representing a command as
- * defined by the extension point <code>org.eclipse.ui.commands</code>. The
- * identifier of the handle is identifier of the command being represented.
- * </p>
- * <p>
- * An instance of <code>ICommand</code> can be obtained from an instance of
- * <code>ICommandManager</code> for any identifier, whether or not a command
- * with that identifier defined in the plugin registry.
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation. If a command is defined, that means that
- * its corresponding plug-in is active. If the plug-in is then deactivated, the
- * command will still exist but it will be undefined. An attempts to use an
- * undefined command will result in a <code>NotDefinedException</code> being
- * thrown.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICommandListener
- * @see ICommandManager
- * @see org.eclipse.core.commands.Command
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ICommand extends Comparable {
-
-    /**
-     * Registers an instance of <code>ICommandListener</code> to listen for
-     * changes to attributes of this instance.
-     * 
-     * @param commandListener
-     *            the instance of <code>ICommandListener</code> to register.
-     *            Must not be <code>null</code>. If an attempt is made to
-     *            register an instance of <code>ICommandListener</code> which
-     *            is already registered with this instance, no operation is
-     *            performed.
-     */
-    void addCommandListener(ICommandListener commandListener);
-
-    /**
-     * Executes with the map of parameter values by name.
-     * 
-     * @param parameterValuesByName
-     *            the map of parameter values by name. Reserved for future use,
-     *            must be <code>null</code>.
-     * @return the result of the execution. Reserved for future use, must be
-     *         <code>null</code>.
-     * @throws ExecutionException
-     *             if an exception occurred during execution.
-     * @throws NotHandledException
-     *             if this is not handled.
-     */
-    Object execute(Map parameterValuesByName) throws ExecutionException,
-            NotHandledException;
-
-    /**
-     * Returns the map of attribute values by name.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the map of attribute values by name. This map may be empty, but
-     *         is guaranteed not to be <code>null</code>. If this map is not
-     *         empty, its collection of keys is guaranteed to only contain
-     *         instances of <code>String</code>.
-     * @throws NotHandledException
-     *             if this is not handled.
-     */
-    Map getAttributeValuesByName() throws NotHandledException;
-
-    /**
-     * <p>
-     * Returns the identifier of the category of the command represented by this
-     * handle.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the identifier of the category of the command represented by this
-     *         handle. May be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the command represented by this handle is not defined.
-     */
-    String getCategoryId() throws NotDefinedException;
-
-    /**
-     * <p>
-     * Returns the description of the command represented by this handle,
-     * suitable for display to the user.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the description of the command represented by this handle.
-     *         Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the command represented by this handle is not defined.
-     */
-    String getDescription() throws NotDefinedException;
-
-    /**
-     * Returns the identifier of this handle.
-     * 
-     * @return the identifier of this handle. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * <p>
-     * Returns the list of key sequence bindings for this handle. This method
-     * will return all key sequence bindings for this handle's identifier,
-     * whether or not the command represented by this handle is defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the list of key sequence bindings. This list may be empty, but is
-     *         guaranteed not to be <code>null</code>. If this list is not
-     *         empty, it is guaranteed to only contain instances of
-     *         <code>IKeySequenceBinding</code>.
-     */
-    List getKeySequenceBindings();
-
-    /**
-     * <p>
-     * Returns the name of the command represented by this handle, suitable for
-     * display to the user.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the name of the command represented by this handle. Guaranteed
-     *         not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the command represented by this handle is not defined.
-     */
-    String getName() throws NotDefinedException;
-
-    /**
-     * <p>
-     * Returns whether or not the command represented by this handle is defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff the command represented by this handle
-     *         is defined.
-     */
-    boolean isDefined();
-
-    /**
-     * <p>
-     * Returns whether or not this command is handled. A command is handled if
-     * it currently has an <code>IHandler</code> instance associated with it.
-     * A command needs a handler to carry out the {@link ICommand#execute(Map)}
-     * method.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff this command is enabled.
-     */
-    boolean isHandled();
-
-    /**
-     * Unregisters an instance of <code>ICommandListener</code> listening for
-     * changes to attributes of this instance.
-     * 
-     * @param commandListener
-     *            the instance of <code>ICommandListener</code> to unregister.
-     *            Must not be <code>null</code>. If an attempt is made to
-     *            unregister an instance of <code>ICommandListener</code>
-     *            which is not already registered with this instance, no
-     *            operation is performed.
-     */
-    void removeCommandListener(ICommandListener commandListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandImageService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandImageService.java
deleted file mode 100644
index 80b21c9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandImageService.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.internal.commands.CommandImageManager;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * <p>
- * Provides a look-up facility for images associated with commands.
- * </p>
- * <p>
- * The <em>type</em> of an image indicates the state of the associated command
- * within the user interface. The supported types are: <code>TYPE_DEFAULT</code>
- * (to be used for an enabled command), <code>TYPE_DISABLED</code> (to be used
- * for a disabled command) and <code>TYPE_HOVER</code> (to be used for an
- * enabled command over which the mouse is hovering).
- * </p>
- * <p>
- * The <em>style</em> of an image is an arbitrary string used to distinguish
- * between sets of images associated with a command. For example, a command may
- * appear in the menus as the default style. However, in the toolbar, the
- * command is simply the default action for a toolbar drop down item. As such,
- * perhaps a different image style is appropriate. The classic case is the "Run
- * Last Launched" command, which appears in the menu and the toolbar, but with
- * different icons in each location.
- * </p>
- * <p>
- * We currently support a default image style (none) and an image style of
- * IMAGE_STYLE_TOOLBAR.
- * </p>
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @since 3.4
- */
-public interface ICommandImageService extends IDisposable {
-
-	/**
-	 * The type of image to display in the default case.
-	 */
-	public static final int TYPE_DEFAULT = CommandImageManager.TYPE_DEFAULT;
-
-	/**
-	 * The type of image to display if the corresponding command is disabled.
-	 */
-	public static final int TYPE_DISABLED = CommandImageManager.TYPE_DISABLED;
-
-	/**
-	 * The type of image to display if the mouse is hovering over the command
-	 * and the command is enabled.
-	 */
-	public static final int TYPE_HOVER = CommandImageManager.TYPE_HOVER;
-
-	/**
-	 * The default image style. This is provided when no style is requested or
-	 * when the requested style is unavailable. (Value is <b>null</b>)
-	 */
-	public static final String IMAGE_STYLE_DEFAULT = null;
-
-	/**
-	 * The image style used for commands in a toolbar. This is useful if you
-	 * want the icon for the command in the toolbar to be different than the one
-	 * that is displayed with menu items. (Value is <b>toolbar</b>)
-	 */
-	public static final String IMAGE_STYLE_TOOLBAR = "toolbar"; //$NON-NLS-1$
-
-	/**
-	 * Retrieves the default image associated with the given command in the
-	 * default style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @return An image appropriate for the given command; may be
-	 *         <code>null</code>.
-	 */
-	public ImageDescriptor getImageDescriptor(String commandId);
-
-	/**
-	 * Retrieves the image of the given type associated with the given command
-	 * in the default style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * 
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this interface.
-	 * @return An image appropriate for the given command; <code>null</code>
-	 *         if the given image type cannot be found.
-	 */
-	public ImageDescriptor getImageDescriptor(String commandId, int type);
-
-	/**
-	 * Retrieves the image of the given type associated with the given command
-	 * in the given style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this interface.
-	 * @param style
-	 *            The style of the image to retrieve; may be <code>null</code>.
-	 * @return An image appropriate for the given command; <code>null</code>
-	 *         if the given image style and type cannot be found.
-	 */
-	public ImageDescriptor getImageDescriptor(String commandId, int type,
-			String style);
-
-	/**
-	 * Retrieves the default image associated with the given command in the
-	 * given style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @param style
-	 *            The style of the image to retrieve; may be <code>null</code>.
-	 * @return An image appropriate for the given command; <code>null</code>
-	 *         if the given image style cannot be found.
-	 */
-	public ImageDescriptor getImageDescriptor(String commandId, String style);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandListener.java
deleted file mode 100644
index 0031acf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>ICommand</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICommand#addCommandListener(ICommandListener)
- * @see ICommand#removeCommandListener(ICommandListener)
- * @see org.eclipse.core.commands.ICommandListener
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- */
-public interface ICommandListener {
-
-    /**
-     * Notifies that one or more properties of an instance of <code>ICommand</code>
-     * have changed. Specific details are described in the <code>CommandEvent</code>.
-     * 
-     * @param commandEvent
-     *            the command event. Guaranteed not to be <code>null</code>.
-     */
-    void commandChanged(CommandEvent commandEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManager.java
deleted file mode 100644
index 89c6011..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManager.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.ui.keys.KeySequence;
-
-/**
- * <p>
- * An instance of <code>ICommandManager</code> can be used to obtain instances
- * of <code>ICommand</code>, as well as manage whether or not those instances
- * are active or inactive, enabled or disabled.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.commands.ICommand
- * @see org.eclipse.ui.commands.ICommandManagerListener
- * @see org.eclipse.core.commands.CommandManager
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ICommandManager {
-
-    /**
-     * Registers an instance of <code>ICommandManagerListener</code> to listen
-     * for changes to attributes of this instance.
-     * 
-     * @param commandManagerListener
-     *            the instance of <code>ICommandManagerListener</code> to
-     *            register. Must not be <code>null</code>. If an attempt is
-     *            made to register an instance of
-     *            <code>ICommandManagerListener</code> which is already
-     *            registered with this instance, no operation is performed.
-     */
-    void addCommandManagerListener(
-            ICommandManagerListener commandManagerListener);
-
-    /**
-     * Returns the set of identifiers to active contexts.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to active contexts. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    Set getActiveContextIds();
-
-    /**
-     * Returns the active key configuration.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the active key configuration identifier. This set may be empty,
-     *         but it is guaranteed to not be <code>null</code>. If this set
-     *         is not empty, it is guaranteed to only contains instances of
-     *         <code>String</code>.
-     */
-    String getActiveKeyConfigurationId();
-
-    /**
-     * Returns the active locale. While this property tends to be simply the
-     * result of {@link java.util.Locale#getDefault()}, it may also be changed
-     * at runtime by different implementations of command manager.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the active locale. May be <code>null</code>.
-     */
-    String getActiveLocale();
-
-    /**
-     * Returns the active platform. While this property tends to be simply the
-     * result of {@link org.eclipse.swt.SWT#getPlatform()}, it may also be
-     * changed at runtime by different implementations of command manager.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the active platform. May be <code>null</code>.
-     */
-    String getActivePlatform();
-
-    /**
-     * Returns a handle to a category given an identifier.
-     * 
-     * @param categoryId
-     *            an identifier. Must not be <code>null</code>
-     * @return a handle to a category.
-     */
-    ICategory getCategory(String categoryId);
-
-    /**
-     * Returns a handle to a command given an identifier.
-     * 
-     * @param commandId
-     *            an identifier. Must not be <code>null</code>
-     * @return a handle to a command; never <code>null</code>.
-     */
-    ICommand getCommand(String commandId);
-
-    /**
-     * <p>
-     * Returns the set of identifiers to defined categories.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to defined categories. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    Set getDefinedCategoryIds();
-
-    /**
-     * <p>
-     * Returns the set of identifiers to defined commands.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to defined commands. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    Set getDefinedCommandIds();
-
-    /**
-     * <p>
-     * Returns the set of identifiers to defined key configurations.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to defined key configurations. This set
-     *         may be empty, but is guaranteed not to be <code>null</code>.
-     *         If this set is not empty, it is guaranteed to only contain
-     *         instances of <code>String</code>.
-     */
-    Set getDefinedKeyConfigurationIds();
-
-    /**
-     * Returns a handle to a key configuration given an identifier.
-     * 
-     * @param keyConfigurationId
-     *            an identifier. Must not be <code>null</code>
-     * @return a handle to a key configuration.
-     */
-    IKeyConfiguration getKeyConfiguration(String keyConfigurationId);
-
-    /**
-     * Finds all of the commands which have key bindings that start with the
-     * given key sequence.
-     * 
-     * @param keySequence
-     *            The prefix to look for; must not be <code>null</code>.
-     * @return A map of all of the matching key sequences (
-     *         <code>KeySequence</code>) to command identifiers (
-     *         <code>String</code>). This map may be empty, but it is never
-     *         <code>null</code>.
-     */
-    Map getPartialMatches(KeySequence keySequence);
-
-    /**
-     * Finds the command which has the given key sequence as one of its key
-     * bindings.
-     * 
-     * @param keySequence
-     *            The key binding to look for; must not be <code>null</code>.
-     * @return The command id for the matching command, if any;
-     *         <code>null</code> if none.
-     */
-    String getPerfectMatch(KeySequence keySequence);
-
-    /**
-     * Checks to see whether there are any commands which have key bindings that
-     * start with the given key sequence.
-     * 
-     * @param keySequence
-     *            The prefix to look for; must not be <code>null</code>.
-     * @return <code>true</code> if at least one command has a key binding
-     *         that starts with <code>keySequence</code>;<code>false</code>
-     *         otherwise.
-     */
-    boolean isPartialMatch(KeySequence keySequence);
-
-    /**
-     * Checks to see if there is a command with the given key sequence as one of
-     * its key bindings.
-     * 
-     * @param keySequence
-     *            The key binding to look for; must not be <code>null</code>.
-     * @return <code>true</code> if a command has a matching key binding;
-     *         <code>false</code> otherwise.
-     */
-    boolean isPerfectMatch(KeySequence keySequence);
-
-    /**
-     * Unregisters an instance of <code>ICommandManagerListener</code>
-     * listening for changes to attributes of this instance.
-     * 
-     * @param commandManagerListener
-     *            the instance of <code>ICommandManagerListener</code> to
-     *            unregister. Must not be <code>null</code>. If an attempt is
-     *            made to unregister an instance of
-     *            <code>ICommandManagerListener</code> which is not already
-     *            registered with this instance, no operation is performed.
-     */
-    void removeCommandManagerListener(
-            ICommandManagerListener commandManagerListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManagerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManagerListener.java
deleted file mode 100644
index 2ee3f22..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandManagerListener.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>ICommandManager</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see ICommandManager#addCommandManagerListener(ICommandManagerListener)
- * @see ICommandManager#removeCommandManagerListener(ICommandManagerListener)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.ICommandManagerListener
- */
-public interface ICommandManagerListener {
-
-    /**
-     * Notifies that one or more properties of an instance of
-     * <code>ICommandManager</code> have changed. Specific details are
-     * described in the <code>CommandManagerEvent</code>.
-     * 
-     * @param commandManagerEvent
-     *            the commandManager event. Guaranteed not to be
-     *            <code>null</code>.
-     */
-    void commandManagerChanged(CommandManagerEvent commandManagerEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandService.java
deleted file mode 100644
index a2ecf62..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/ICommandService.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.IExecutionListener;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.SerializationException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.ui.menus.UIElement;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * <p>
- * Provides services related to the command architecture within the workbench.
- * This service can be used to access the set of commands and command
- * categories.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	ICommandService service = (ICommandService) getSite().getService(ICommandService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @since 3.1
- */
-public interface ICommandService extends IDisposable {
-
-	/**
-	 * The identifier of the category in which all auto-generated commands will
-	 * appear. This value must never be <code>null</code>.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String AUTOGENERATED_CATEGORY_ID = CommandManager.AUTOGENERATED_CATEGORY_ID;
-
-	/**
-	 * Adds an execution listener to the command service. This listener will be
-	 * notified as commands are executed.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            The listener to add; must not be <code>null</code>.
-	 * @see #removeExecutionListener(IExecutionListener)
-	 */
-	public void addExecutionListener(IExecutionListener listener);
-
-	/**
-	 * Sets the name and description of the category for uncategorized commands.
-	 * This is the category that will be returned if
-	 * {@link #getCategory(String)} is called with <code>null</code>.
-	 * 
-	 * @param name
-	 *            The name of the category for uncategorized commands; must not
-	 *            be <code>null</code>.
-	 * @param description
-	 *            The description of the category for uncategorized commands;
-	 *            may be <code>null</code>.
-	 * @since 3.2
-	 */
-	public void defineUncategorizedCategory(String name, String description);
-
-	/**
-	 * <p>
-	 * Returns a {@link ParameterizedCommand} with a command and
-	 * parameterizations as specified in the provided
-	 * <code>serializedParameterizedCommand</code> string. The
-	 * <code>serializedParameterizedCommand</code> must use the format
-	 * returned by {@link ParameterizedCommand#serialize()} and described in the
-	 * Javadoc for that method.
-	 * </p>
-	 * <p>
-	 * If a parameter id encoded in the
-	 * <code>serializedParameterizedCommand</code> does not exist in the
-	 * encoded command, that parameter id and value are ignored. A given
-	 * parameter id should not be used more than once in
-	 * <code>serializedParameterizedCommand</code>. This will not result in
-	 * an exception, but the value of the parameter when the command is executed
-	 * cannot be specified here.
-	 * </p>
-	 * <p>
-	 * This method will never return <code>null</code>, however it may throw
-	 * an exception if there is a problem processing the serialization string or
-	 * the encoded command is undefined.
-	 * </p>
-	 * 
-	 * @param serializedParameterizedCommand
-	 *            a <code>String</code> representing a command id and
-	 *            parameter ids and values
-	 * @return a <code>ParameterizedCommand</code> with the command and
-	 *         parameterizations encoded in the
-	 *         <code>serializedParameterizedCommand</code>
-	 * @throws NotDefinedException
-	 *             if the command indicated in
-	 *             <code>serializedParameterizedCommand</code> is not defined
-	 * @throws SerializationException
-	 *             if there is an error deserializing
-	 *             <code>serializedParameterizedCommand</code>
-	 * @see ParameterizedCommand#serialize()
-	 * @see CommandManager#deserialize(String)
-	 * @since 3.2
-	 */
-	public ParameterizedCommand deserialize(
-			String serializedParameterizedCommand) throws NotDefinedException,
-			SerializationException;
-
-	/**
-	 * Retrieves the category with the given identifier. If no such category
-	 * exists, then an undefined category with the given id is created.
-	 * 
-	 * @param categoryId
-	 *            The identifier to find. If the category is <code>null</code>,
-	 *            then a category suitable for uncategorized items is defined
-	 *            and returned.
-	 * @return A category with the given identifier, either defined or
-	 *         undefined.
-	 */
-	public Category getCategory(String categoryId);
-
-	/**
-	 * Retrieves the command with the given identifier. If no such command
-	 * exists, then an undefined command with the given id is created.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @return A command with the given identifier, either defined or undefined.
-	 */
-	public Command getCommand(String commandId);
-
-	/**
-	 * Returns the collection of all of the defined categories in the workbench.
-	 * 
-	 * @return The collection of categories (<code>Category</code>) that are
-	 *         defined; never <code>null</code>, but may be empty.
-	 * @since 3.2
-	 */
-	public Category[] getDefinedCategories();
-
-	/**
-	 * Returns the collection of the identifiers for all of the defined
-	 * categories in the workbench.
-	 * 
-	 * @return The collection of category identifiers (<code>String</code>)
-	 *         that are defined; never <code>null</code>, but may be empty.
-	 */
-	public Collection getDefinedCategoryIds();
-
-	/**
-	 * Returns the collection of the identifiers for all of the defined commands
-	 * in the workbench.
-	 * 
-	 * @return The collection of command identifiers (<code>String</code>)
-	 *         that are defined; never <code>null</code>, but may be empty.
-	 */
-	public Collection getDefinedCommandIds();
-
-	/**
-	 * Returns the collection of all of the defined commands in the workbench.
-	 * 
-	 * @return The collection of commands (<code>Command</code>) that are
-	 *         defined; never <code>null</code>, but may be empty.
-	 * @since 3.2
-	 */
-	public Command[] getDefinedCommands();
-
-	/**
-	 * Returns the collection of the identifiers for all of the defined command
-	 * parameter types in the workbench.
-	 * 
-	 * @return The collection of command parameter type identifiers (<code>String</code>)
-	 *         that are defined; never <code>null</code>, but may be empty.
-	 * @since 3.2
-	 */
-	public Collection getDefinedParameterTypeIds();
-
-	/**
-	 * Returns the collection of all of the defined command parameter types in
-	 * the workbench.
-	 * 
-	 * @return The collection of command parameter types (<code>ParameterType</code>)
-	 *         that are defined; never <code>null</code>, but may be empty.
-	 * @since 3.2
-	 */
-	public ParameterType[] getDefinedParameterTypes();
-
-	/**
-	 * Gets the help context identifier for a particular command. The command's
-	 * handler is first checked for a help context identifier. If the handler
-	 * does not have a help context identifier, then the help context identifier
-	 * for the command is returned. If neither has a help context identifier,
-	 * then <code>null</code> is returned.
-	 * 
-	 * @param command
-	 *            The command for which the help context should be retrieved;
-	 *            must not be <code>null</code>.
-	 * @return The help context identifier to use for the given command; may be
-	 *         <code>null</code>.
-	 * @throws NotDefinedException
-	 *             If the given command is not defined.
-	 * @since 3.2
-	 */
-	public String getHelpContextId(Command command) throws NotDefinedException;
-
-	/**
-	 * Gets the help context identifier for a particular command. The command's
-	 * handler is first checked for a help context identifier. If the handler
-	 * does not have a help context identifier, then the help context identifier
-	 * for the command is returned. If neither has a help context identifier,
-	 * then <code>null</code> is returned.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the help context
-	 *            should be retrieved; must not be <code>null</code>.
-	 * @return The help context identifier to use for the given command; may be
-	 *         <code>null</code>.
-	 * @throws NotDefinedException
-	 *             If the command with the given identifier is not defined.
-	 * @since 3.2
-	 */
-	public String getHelpContextId(String commandId) throws NotDefinedException;
-
-	/**
-	 * Retrieves the command parameter type with the given identifier. If no
-	 * such parameter type exists, then an undefined parameter type with the
-	 * given id is created.
-	 * 
-	 * @param parameterTypeId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @return A command parameter type with the given identifier, either
-	 *         defined or undefined.
-	 * @since 3.2
-	 */
-	public ParameterType getParameterType(String parameterTypeId);
-
-	/**
-	 * <p>
-	 * Reads the command information from the registry and the preferences. This
-	 * will overwrite any of the existing information in the command service.
-	 * This method is intended to be called during start-up. When this method
-	 * completes, this command service will reflect the current state of the
-	 * registry and preference store.
-	 * </p>
-	 */
-	public void readRegistry();
-
-	/**
-	 * Removes an execution listener from the command service.
-	 * 
-	 * @param listener
-	 *            The listener to remove; must not be <code>null</code>.
-	 */
-	public void removeExecutionListener(IExecutionListener listener);
-
-	/**
-	 * Sets the help context identifier to associate with a particular handler.
-	 * 
-	 * @param handler
-	 *            The handler with which to register a help context identifier;
-	 *            must not be <code>null</code>.
-	 * @param helpContextId
-	 *            The help context identifier to register; may be
-	 *            <code>null</code> if the help context identifier should be
-	 *            removed.
-	 * @since 3.2
-	 */
-	public void setHelpContextId(IHandler handler, String helpContextId);
-
-	/**
-	 * Register that this element accepts callbacks for this parameterized
-	 * command.
-	 * <p>
-	 * <b>Note:</b> elements should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param command
-	 *            The parameterized command that is already specialized. Must
-	 *            not be <code>null</code>.
-	 * @param element
-	 *            The callback to register for this specialized command
-	 *            instance. Must not be <code>null</code>.
-	 * @return A reference for the registered element that can be used to
-	 *         unregister it.
-	 * @throws NotDefinedException
-	 *             If the command included in the ParameterizedCommand is not
-	 *             defined, or the element is <code>null</code>.
-	 * @since 3.3
-	 * @see #unregisterElement(IElementReference)
-	 */
-	public IElementReference registerElementForCommand(
-			ParameterizedCommand command, UIElement element)
-			throws NotDefinedException;
-
-	/**
-	 * Re-register a callback element provided by the ICommandService. This
-	 * element reference must not currently be held by the ICommandService. i.e.
-	 * it must have been removed using
-	 * {@link #unregisterElement(IElementReference)}.
-	 * <p>
-	 * <b>Note:</b> elements should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param elementReference
-	 *            The reference to re-register. Must not be <code>null</code>.
-	 * @since 3.3
-	 * @see #unregisterElement(IElementReference)
-	 */
-	public void registerElement(IElementReference elementReference);
-
-	/**
-	 * Unregister an element callback. It will be removed from the
-	 * ICommandService. The same service that is used to register an element for
-	 * a command <b>must</b> be used to unregister the element.
-	 * 
-	 * @param elementReference
-	 *            The callback reference that was provided by the command
-	 *            service on registration. Must not be <code>null</code>.
-	 * @since 3.3
-	 */
-	public void unregisterElement(IElementReference elementReference);
-
-	/**
-	 * Refresh any elements registered against the command with the given id.
-	 * It allows the active handler the opportunity to provide user feedback. If
-	 * the command is parameterized, some of the parameters can be specified to
-	 * help narrow down which elements to refresh.
-	 * <p>
-	 * The service locator used in registering the element can also be used to
-	 * scope the search. For example: if you wanted all elements for your
-	 * command but only within the part's workbench window, you could use:
-	 * 
-	 * <pre>
-	 * Map filter = new HashMap();
-	 * filter.put(IServiceScopes.WINDOW_SCOPE, getSite().getPage()
-	 * 		.getWorkbenchWindow());
-	 * commandService.refreshElements(commandId, filter);
-	 * </pre>
-	 * 
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            The command id to refresh if it has registered eleemnts.
-	 * @param filter
-	 *            key-value pairs that can narrow down the callbacks to return.
-	 *            The parameters are <b>AND</b>ed together. This may be
-	 *            <code>null</code>.
-	 * @since 3.3
-	 */
-	public void refreshElements(String commandId, Map filter);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementReference.java
deleted file mode 100644
index 83795d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementReference.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-import java.util.Map;
-
-import org.eclipse.ui.menus.UIElement;
-
-/**
- * the ICommandService will return a reference for all callbacks that are
- * registered. This reference can be used to unregister the specific callback.
- * <p>
- * Similar in functionality to an IHandlerActivation.  This interface should
- * not be implemented or extended by clients.
- * </p>
- * 
- * @since 3.3
- */
-public interface IElementReference {
-	/**
-	 * The command id that this callback was registered against.
-	 * 
-	 * @return The command id. Will not be <code>null</code>.
-	 */
-	public String getCommandId();
-
-	/**
-	 * The callback that was registered.
-	 * 
-	 * @return Adapts to provide appropriate user feedback. Will not be
-	 *         <code>null</code>.
-	 */
-	public UIElement getElement();
-
-	/**
-	 * Parameters that help scope this callback registration. For example, it
-	 * can include parameters from the ParameterizedCommand. Callers should not
-	 * change the map that is returned.
-	 * 
-	 * @return scoping parameters. Will not be <code>null</code>.
-	 */
-	public Map getParameters();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementUpdater.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementUpdater.java
deleted file mode 100644
index ac3b5ff..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IElementUpdater.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-import java.util.Map;
-
-import org.eclipse.ui.menus.UIElement;
-
-/**
- * An IHandler for a command that expects to provide feedback through the
- * registered element mechanism must implement this interface.
- * 
- * @since 3.3
- * 
- */
-public interface IElementUpdater {
-	/**
-	 * Whenever the elements for a command are refreshed, this method is called
-	 * on the active handler for that command.
-	 * <p>
-	 * <b>Note:</b> Handlers must never cache the element, which can disappear
-	 * or be replaced at any time. Everybody should go through the
-	 * ICommandService refreshElements(*) method.
-	 * </p>
-	 * 
-	 * @param element
-	 *            An element for a specific UI element. Will not be
-	 *            <code>null</code>.
-	 * @param parameters
-	 *            Any parameters registered with the callback. Will not be
-	 *            <code>null</code>, but it may be empty.
-	 */
-	public void updateElement(UIElement element, Map parameters);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandler.java
deleted file mode 100644
index 833f31c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandler.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import java.util.Map;
-
-/**
- * A handler is the pluggable piece of a command that handles execution. Each
- * command can have zero or more handlers associated with it (in general), of
- * which only one will be active at any given moment in time. When the command
- * is asked to execute, it will simply pass that request on to its active
- * handler, if any.
- * <p>
- * This interface is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.IHandler
- */
-public interface IHandler {
-
-    /**
-     * Registers an instance of <code>IHandlerListener</code> to listen for
-     * changes to properties of this instance.
-     * 
-     * @param handlerListener
-     *            the instance to register. Must not be <code>null</code>. If
-     *            an attempt is made to register an instance which is already
-     *            registered with this instance, no operation is performed.
-     */
-    void addHandlerListener(IHandlerListener handlerListener);
-
-    /**
-     * Disposes of this handler. This method is run once when the object is no
-     * longer referenced. This can be used as an opportunity to unhook listeners
-     * from other objects.
-     */
-    public void dispose();
-
-    /**
-     * Executes with the map of parameter values by name.
-     * 
-     * @param parameterValuesByName
-     *            the map of parameter values by name. Reserved for future use,
-     *            must be <code>null</code>.
-     * @return the result of the execution. Reserved for future use, must be
-     *         <code>null</code>.
-     * @throws ExecutionException
-     *             if an exception occurred during execution.
-     */
-    Object execute(Map parameterValuesByName) throws ExecutionException;
-
-    /**
-     * Returns the map of attribute values by name.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the map of attribute values by name. This map may be empty, but
-     *         is guaranteed not to be <code>null</code>. If this map is not
-     *         empty, its collection of keys is guaranteed to only contain
-     *         instances of <code>String</code>.
-     */
-    Map getAttributeValuesByName();
-
-    /**
-     * Unregisters an instance of <code>IPropertyListener</code> listening for
-     * changes to properties of this instance.
-     * 
-     * @param handlerListener
-     *            the instance to unregister. Must not be <code>null</code>.
-     *            If an attempt is made to unregister an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeHandlerListener(IHandlerListener handlerListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandlerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandlerListener.java
deleted file mode 100644
index 6813e08..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IHandlerListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>IHandler</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IHandler#addHandlerListener(IHandlerListener)
- * @see IHandler#removeHandlerListener(IHandlerListener)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.IHandlerListener
- */
-public interface IHandlerListener {
-
-    /**
-     * Notifies that one or more properties of an instance of
-     * <code>IHandler</code> have changed. Specific details are described in
-     * the <code>HandlerEvent</code>.
-     * 
-     * @param handlerEvent
-     *            the handler event. Guaranteed not to be <code>null</code>.
-     */
-    void handlerChanged(HandlerEvent handlerEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfiguration.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfiguration.java
deleted file mode 100644
index 05279ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfiguration.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-/**
- * <p>
- * An instance of <code>IKeyConfiguration</code> is a handle representing a
- * key configuration as defined by the extension point
- * <code>org.eclipse.ui.commands</code>. The identifier of the handle is
- * identifier of the key configuration being represented.
- * </p>
- * <p>
- * An instance of <code>IKeyConfiguration</code> can be obtained from an
- * instance of <code>ICommandManager</code> for any identifier, whether or not
- * a key configuration with that identifier defined in the plugin registry.
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation. If a key configuration is defined, that
- * means that its corresponding plug-in is active. If the plug-in is then
- * deactivated, the configuration will still exist but it will be undefined.
- * An attempt to use an undefined key configuration will result in a
- * <code>NotDefinedException</code> being thrown.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IKeyConfigurationListener
- * @see ICommandManager
- * @see org.eclipse.jface.bindings.Scheme
- * @deprecated Please use the bindings support in the "org.eclipse.jface"
- * plug-in instead.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IKeyConfiguration extends Comparable {
-
-    /**
-     * Registers an instance of <code>IKeyConfigurationListener</code> to
-     * listen for changes to attributes of this instance.
-     * 
-     * @param keyConfigurationListener
-     *            the instance of <code>IKeyConfigurationListener</code> to
-     *            register. Must not be <code>null</code>. If an attempt is
-     *            made to register an instance of <code>IKeyConfigurationListener</code>
-     *            which is already registered with this instance, no operation
-     *            is performed.
-     */
-    void addKeyConfigurationListener(
-            IKeyConfigurationListener keyConfigurationListener);
-
-    /**
-     * <p>
-     * Returns the description of the key configuration represented by this
-     * handle, suitable for display to the user.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the description of the key configuration represented by this
-     *         handle. Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the key configuration represented by this handle is not
-     *             defined.
-     */
-    String getDescription() throws NotDefinedException;
-
-    /**
-     * Returns the identifier of this handle.
-     * 
-     * @return the identifier of this handle. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * <p>
-     * Returns the name of the key configuration represented by this handle,
-     * suitable for display to the user.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the name of the key configuration represented by this handle.
-     *         Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the key configuration represented by this handle is not
-     *             defined.
-     */
-    String getName() throws NotDefinedException;
-
-    /**
-     * <p>
-     * Returns the identifier of the parent of the key configuration
-     * represented by this handle.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return the identifier of the parent of the key configuration
-     *         represented by this handle. May be <code>null</code>.
-     * @throws NotDefinedException
-     *             if the key configuration represented by this handle is not
-     *             defined.
-     */
-    String getParentId() throws NotDefinedException;
-
-    /**
-     * <p>
-     * Returns whether or not this command is active. Instances of
-     * <code>ICommand</code> are activated and deactivated by the instance of
-     * <code>ICommandManager</code> from whence they were brokered.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff this command is active.
-     */
-    boolean isActive();
-
-    /**
-     * <p>
-     * Returns whether or not the key configuration represented by this handle
-     * is defined.
-     * </p>
-     * <p>
-     * Notification is sent to all registered listeners if this attribute
-     * changes.
-     * </p>
-     * 
-     * @return <code>true</code>, iff the key configuration represented by
-     *         this handle is defined.
-     */
-    boolean isDefined();
-
-    /**
-     * Unregisters an instance of <code>IKeyConfigurationListener</code>
-     * listening for changes to attributes of this instance.
-     * 
-     * @param keyConfigurationListener
-     *            the instance of <code>IKeyConfigurationListener</code> to
-     *            unregister. Must not be <code>null</code>. If an attempt is
-     *            made to unregister an instance of
-     *            <code>IKeyConfigurationListener</code> which is not already
-     *            registered with this instance, no operation is performed.
-     */
-    void removeKeyConfigurationListener(
-            IKeyConfigurationListener keyConfigurationListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfigurationListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfigurationListener.java
deleted file mode 100644
index 8228bc7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeyConfigurationListener.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-/**
- * <p>
- * An instance of <code>IKeyConfigurationListener</code> can be used by
- * clients to receive notification of changes to one or more instances of
- * <code>IKeyConfiguration</code>.
- * </p>
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IKeyConfiguration#addKeyConfigurationListener(IKeyConfigurationListener)
- * @see IKeyConfiguration#removeKeyConfigurationListener(IKeyConfigurationListener)
- * @see org.eclipse.ui.commands.KeyConfigurationEvent
- * @deprecated Please use the bindings support in the "org.eclipse.jface"
- * plug-in instead.
- * @see org.eclipse.jface.bindings.ISchemeListener
- */
-public interface IKeyConfigurationListener {
-
-    /**
-     * Notifies that one or more attributes of an instance of <code>IKeyConfiguration</code>
-     * have changed. Specific details are described in the <code>KeyConfigurationEvent</code>.
-     * 
-     * @param keyConfigurationEvent
-     *            the keyConfiguration event. Guaranteed not to be <code>null</code>.
-     */
-    void keyConfigurationChanged(KeyConfigurationEvent keyConfigurationEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeySequenceBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeySequenceBinding.java
deleted file mode 100644
index dc4ab4e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IKeySequenceBinding.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-import org.eclipse.ui.keys.KeySequence;
-
-/**
- * <p>
- * An instance of <code>IKeySequenceBinding</code> represents a binding
- * between a command and a key sequence. This is a wrapper for the a key
- * sequence.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.commands.ICommand
- * @deprecated Please use the bindings support in the "org.eclipse.jface"
- * plug-in instead.
- * @see org.eclipse.jface.bindings.keys.KeyBinding
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IKeySequenceBinding extends Comparable {
-
-    /**
-     * Returns the key sequence represented in this binding.
-     * 
-     * @return the key sequence. Guaranteed not to be <code>null</code>.
-     */
-    KeySequence getKeySequence();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IWorkbenchCommandSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IWorkbenchCommandSupport.java
deleted file mode 100644
index 0f0c342..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/IWorkbenchCommandSupport.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-import java.util.Collection;
-
-/**
- * An instance of this interface provides support for managing commands at the
- * <code>IWorkbench</code> level.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use <code>ICommandService</code> and
- *             <code>IHandlerService</code> instead.
- * @see org.eclipse.ui.commands.ICommandService
- * @see org.eclipse.ui.handlers.IHandlerService
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchCommandSupport {
-
-	/**
-	 * Adds a single handler submissions for consideration by the workbench. The
-	 * submission indicates to the workbench a set of conditions under which the
-	 * handler should become active. The workbench, however, ultimately decides
-	 * which handler becomes active (in the event of conflicts or changes in
-	 * state). This could cause the handlers for one or more commands to change.
-	 * 
-	 * @param handlerSubmission
-	 *            The submission to be added; must not be <code>null</code>.
-	 */
-	void addHandlerSubmission(HandlerSubmission handlerSubmission);
-
-	/**
-	 * Adds a collection of handler submissions for consideration by the
-	 * workbench. The submission indicates to the workbench a set of conditions
-	 * under which the handler should become active. The workbench, however,
-	 * ultimately decides which handler becomes active (in the event of
-	 * conflicts or changes in state). This could cause the handlers for one or
-	 * more commands to change.
-	 * 
-	 * @param handlerSubmissions
-	 *            The submissions to be added; must not be <code>null</code>,
-	 *            and must contain zero or more instances of
-	 *            <code>HandlerSubmission</code>.
-	 */
-	void addHandlerSubmissions(Collection handlerSubmissions);
-
-	/**
-	 * Returns the command manager for the workbench.
-	 * 
-	 * @return the command manager for the workbench. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	ICommandManager getCommandManager();
-
-	/**
-	 * Removes a single handler submission from consideration by the workbench.
-	 * The handler submission must be the same as the one added (not just
-	 * equivalent). This could cause the handlers for one or more commands to
-	 * change.
-	 * 
-	 * @param handlerSubmission
-	 *            The submission to be removed; must not be <code>null</code>.
-	 */
-	void removeHandlerSubmission(HandlerSubmission handlerSubmission);
-
-	/**
-	 * Removes a single handler submission from consideration by the workbench.
-	 * The handler submission must be the same as the one added (not just
-	 * equivalent). This could cause the handlers for one or more commands to
-	 * change.
-	 * 
-	 * @param handlerSubmissions
-	 *            The submissions to be removed; must not be <code>null</code>,
-	 *            and must contain instances of <code>HandlerSubmission</code>
-	 *            only.
-	 */
-	void removeHandlerSubmissions(Collection handlerSubmissions);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/KeyConfigurationEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/KeyConfigurationEvent.java
deleted file mode 100644
index 86cb577..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/KeyConfigurationEvent.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.commands;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>IKeyConfiguration</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IKeyConfigurationListener#keyConfigurationChanged(KeyConfigurationEvent)
- * @deprecated Please use the bindings support in the "org.eclipse.jface"
- * plug-in instead.
- * @see org.eclipse.jface.bindings.SchemeEvent
- */
-public final class KeyConfigurationEvent {
-
-    /**
-     * whether the key configuration has become or active or inactive.
-     */
-    private final boolean activeChanged;
-
-    /**
-     * Whether the key configuration has become defined or undefined.
-     */
-    private final boolean definedChanged;
-
-    /**
-     * The key configuration that has changed; this value is never
-     * <code>null</code>.
-     */
-    private final IKeyConfiguration keyConfiguration;
-
-    /**
-     * Whether the name of the key configuration has changed.
-     */
-    private final boolean nameChanged;
-
-    /**
-     * Whether the parent identifier has changed.
-     */
-    private final boolean parentIdChanged;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param keyConfiguration
-     *            the instance of the interface that changed.
-     * @param activeChanged
-     *            true, iff the active property changed.
-     * @param definedChanged
-     *            true, iff the defined property changed.
-     * @param nameChanged
-     *            true, iff the name property changed.
-     * @param parentIdChanged
-     *            true, iff the parentId property changed.
-     */
-    public KeyConfigurationEvent(IKeyConfiguration keyConfiguration,
-            boolean activeChanged, boolean definedChanged, boolean nameChanged,
-            boolean parentIdChanged) {
-        if (keyConfiguration == null) {
-			throw new NullPointerException();
-		}
-
-        this.keyConfiguration = keyConfiguration;
-        this.activeChanged = activeChanged;
-        this.definedChanged = definedChanged;
-        this.nameChanged = nameChanged;
-        this.parentIdChanged = parentIdChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IKeyConfiguration getKeyConfiguration() {
-        return keyConfiguration;
-    }
-
-    /**
-     * Returns whether or not the active property changed.
-     * 
-     * @return true, iff the active property changed.
-     */
-    public boolean hasActiveChanged() {
-        return activeChanged;
-    }
-
-    /**
-     * Returns whether or not the defined property changed.
-     * 
-     * @return true, iff the defined property changed.
-     */
-    public boolean hasDefinedChanged() {
-        return definedChanged;
-    }
-
-    /**
-     * Returns whether or not the name property changed.
-     * 
-     * @return true, iff the name property changed.
-     */
-    public boolean hasNameChanged() {
-        return nameChanged;
-    }
-
-    /**
-     * Returns whether or not the parentId property changed.
-     * 
-     * @return true, iff the parentId property changed.
-     */
-    public boolean hasParentIdChanged() {
-        return parentIdChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotDefinedException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotDefinedException.java
deleted file mode 100644
index d0e9ee3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotDefinedException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * Signals that an attempt was made to access the properties of an undefined
- * object.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.common.NotDefinedException
- */
-public final class NotDefinedException extends CommandException {
-
-    /**
-     * Generated serial version UID for this class.
-     * 
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3257572788998124596L;
-
-    /**
-     * Creates a new instance of this class with the specified detail message.
-     * 
-     * @param s
-     *            the detail message.
-     */
-    public NotDefinedException(String s) {
-        super(s);
-    }
-
-    /**
-     * Constructs a legacy <code>NotDefinedException</code> based on the new
-     * <code>NotDefinedException</code>.
-     * 
-     * @param e
-     *            The exception from which this exception should be created;
-     *            must not be <code>null</code>.
-     * @since 3.1
-     */
-    public NotDefinedException(
-            final org.eclipse.core.commands.common.NotDefinedException e) {
-        super(e.getMessage(), e);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotHandledException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotHandledException.java
deleted file mode 100644
index 67cf85b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/NotHandledException.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-/**
- * Signals that an attempt was made to access the properties of an unhandled
- * object.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.NotHandledException
- */
-public final class NotHandledException extends CommandException {
-
-    /**
-     * Generated serial version UID for this class.
-     * 
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3256446914827726904L;
-
-    /**
-     * Creates a new instance of this class with the specified detail message.
-     * 
-     * @param s
-     *            the detail message.
-     */
-    public NotHandledException(String s) {
-        super(s);
-    }
-
-    /**
-     * Constructs a legacy <code>NotHandledException</code> based on the new
-     * <code>NotHandledException</code>
-     * 
-     * @param e
-     *            The exception from which this exception should be created;
-     *            must not be <code>null</code>.
-     * @since 3.1
-     */
-    public NotHandledException(final org.eclipse.core.commands.NotHandledException e) {
-        super(e.getMessage(), e);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/Priority.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/Priority.java
deleted file mode 100644
index 7445b70..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/Priority.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.commands;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * An instance of this interface represents a priority for use with instances of
- * <code>HandlerSubmission</code>.
- * </p>
- * <p>
- * The order of precedence (from highest to lowest) is as follows. Submissions
- * with higher priority will be preferred over those with lower priority.
- * </p>
- * <ol>
- * <li>MEDIUM</li>
- * <li>LOW</li>
- * <li>LEGACY</li>
- * </ol>
- * </p>
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see HandlerSubmission
- * @see org.eclipse.ui.ISources
- * @see org.eclipse.ui.handlers.IHandlerService#activateHandler(String,
- *      IHandler, Expression)
- * @deprecated This concept is now captured in the <code>ISources</code>
- *             integer constants.
- * 
- */
-public final class Priority implements Comparable {
-
-	/**
-	 * An instance representing 'legacy' priority.
-	 */
-	public final static Priority LEGACY = new Priority(ISources.LEGACY_LEGACY);
-
-	/**
-	 * An instance representing 'low' priority.
-	 */
-	public final static Priority LOW = new Priority(ISources.LEGACY_LOW);
-
-	/**
-	 * An instance representing 'medium' priority.
-	 */
-	public final static Priority MEDIUM = new Priority(ISources.LEGACY_MEDIUM);
-
-	/**
-	 * The string representation of this priority. This is computed once
-	 * (lazily). Before it is computed, this value is <code>null</code>.
-	 */
-	private transient String string = null;
-
-	/**
-	 * The priority value for this instance. A lesser integer is considered to
-	 * have a higher priority.
-	 */
-	private int value;
-
-	/**
-	 * Constructs a new instance of <code>Priority</code> using a value. This
-	 * constructor should only be used internally. Priority instances should be
-	 * retrieved from the static members defined above.
-	 * 
-	 * @param value
-	 *            The priority value; a lesser integer is consider to have a
-	 *            higher priority value.
-	 */
-	private Priority(int value) {
-		this.value = value;
-	}
-
-	/**
-	 * @see Comparable#compareTo(java.lang.Object)
-	 */
-	public int compareTo(Object object) {
-		Priority castedObject = (Priority) object;
-		int compareTo = Util.compare(value, castedObject.value);
-		return compareTo;
-	}
-
-	/**
-	 * The value for this priority. The lesser the value, the higher priority
-	 * this represents.
-	 * 
-	 * @return The integer priority value.
-	 */
-	int getValue() {
-		return value;
-	}
-
-	/**
-	 * @see Object#toString()
-	 */
-	public String toString() {
-		if (string == null) {
-			final StringBuffer stringBuffer = new StringBuffer();
-			stringBuffer.append("[value="); //$NON-NLS-1$
-			stringBuffer.append(value);
-			stringBuffer.append(']');
-			string = stringBuffer.toString();
-		}
-
-		return string;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html
deleted file mode 100755
index 4108dee..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html
+++ /dev/null
@@ -1,21 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides support for retrieving information on Commands from the workbench.</p>
-
-<h2>Package Specification</h2>
-<p>
-Most of org.eclipse.ui.commands.* is depracated in favour of org.eclipse.core.commands,
-but the ICommandService and associated classes are used to access the workbench
-view of org.eclipse.core.commands.  <code>getService(ICommandService.class)</code>
-can be used to get the ICommandService from the workbench, workbench window,
-or part site.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextEvent.java
deleted file mode 100644
index b4e1c63..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextEvent.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>IContext</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IContextListener#contextChanged(ContextEvent)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.contexts.ContextEvent
- */
-public final class ContextEvent {
-
-    /**
-     * The context that has changed. This value is never <code>null</code>.
-     */
-    private final IContext context;
-
-    /**
-     * Whether the context has become defined or undefined.
-     */
-    private final boolean definedChanged;
-
-    /**
-     * Whether the context has become enabled or disabled.
-     */
-    private final boolean enabledChanged;
-
-    /**
-     * Whether the name of the context has changed.
-     */
-    private final boolean nameChanged;
-
-    /**
-     * Whether the parent identifier has changed.
-     */
-    private final boolean parentIdChanged;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param context
-     *            the instance of the interface that changed.
-     * @param definedChanged
-     *            true, iff the defined property changed.
-     * @param enabledChanged
-     *            true, iff the enabled property changed.
-     * @param nameChanged
-     *            true, iff the name property changed.
-     * @param parentIdChanged
-     *            true, iff the parentId property changed.
-     */
-    public ContextEvent(IContext context, boolean definedChanged,
-            boolean enabledChanged, boolean nameChanged, boolean parentIdChanged) {
-        if (context == null) {
-			throw new NullPointerException();
-		}
-
-        this.context = context;
-        this.definedChanged = definedChanged;
-        this.enabledChanged = enabledChanged;
-        this.nameChanged = nameChanged;
-        this.parentIdChanged = parentIdChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IContext getContext() {
-        return context;
-    }
-
-    /**
-     * Returns whether or not the defined property changed.
-     * 
-     * @return true, iff the defined property changed.
-     */
-    public boolean hasDefinedChanged() {
-        return definedChanged;
-    }
-
-    /**
-     * Returns whether or not the enabled property changed.
-     * 
-     * @return true, iff the enabled property changed.
-     */
-    public boolean hasEnabledChanged() {
-        return enabledChanged;
-    }
-
-    /**
-     * Returns whether or not the name property changed.
-     * 
-     * @return true, iff the name property changed.
-     */
-    public boolean hasNameChanged() {
-        return nameChanged;
-    }
-
-    /**
-     * Returns whether or not the parentId property changed.
-     * 
-     * @return true, iff the parentId property changed.
-     */
-    public boolean hasParentIdChanged() {
-        return parentIdChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextException.java
deleted file mode 100644
index d96dd23..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.contexts;
-
-/**
- * Signals that an exception occurred within the context architecture.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.common.CommandException
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class ContextException extends Exception {
-	
-	/**
-	 * Generated serial version UID for this class.
-	 * 
-	 * @since 3.4
-	 */
-	private static final long serialVersionUID= -5143404124388080211L;
-	
-	
-	private Throwable cause;
-
-    /**
-     * Creates a new instance of this class with the specified detail message.
-     * 
-     * @param message
-     *            the detail message.
-     */
-    public ContextException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new instance of this class with the specified detail message
-     * and cause.
-     * 
-     * @param message
-     *            the detail message.
-     * @param cause
-     *            the cause.
-     */
-    public ContextException(String message, Throwable cause) {
-        super(message);
-        // don't pass the cause to super, to allow compilation against JCL Foundation
-        this.cause = cause;
-    }
-    
-    /**
-     * Returns the cause of this throwable or <code>null</code> if the
-     * cause is nonexistent or unknown. 
-     *
-     * @return the cause or <code>null</code>
-     * @since 3.1
-     */
-    public Throwable getCause() {
-        return cause;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextManagerEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextManagerEvent.java
deleted file mode 100644
index 55f31bf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/ContextManagerEvent.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-import java.util.Set;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * An instance of this class describes changes to an instance of
- * <code>IContextManager</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @see IContextManagerListener#contextManagerChanged(ContextManagerEvent)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.contexts.ContextManagerEvent
- */
-public final class ContextManagerEvent {
-
-    /**
-     * The context manager which has changed. This value is never
-     * <code>null</code>.
-     */
-    private final IContextManager contextManager;
-
-    /**
-     * Whether the set of defined contexts has changed.
-     */
-    private final boolean definedContextIdsChanged;
-
-    /**
-     * Whether the set of enabled contexts has changed.
-     */
-    private final boolean enabledContextIdsChanged;
-
-    /**
-     * The set of context identifiers (strings) that were defined before the
-     * change occurred. If the defined contexts did not changed, then this value
-     * is <code>null</code>.
-     */
-    private final Set previouslyDefinedContextIds;
-
-    /**
-     * The set of context identifiers (strings) that were enabled before the
-     * change occurred. If the enabled contexts did not changed, then this value
-     * is <code>null</code>.
-     */
-    private final Set previouslyEnabledContextIds;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param contextManager
-     *            the instance of the interface that changed.
-     * @param definedContextIdsChanged
-     *            true, iff the definedContextIds property changed.
-     * @param enabledContextIdsChanged
-     *            true, iff the enabledContextIds property changed.
-     * @param previouslyDefinedContextIds
-     *            the set of identifiers to previously defined contexts. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if definedContextIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            definedContextIdsChanged is <code>true</code>.
-     * @param previouslyEnabledContextIds
-     *            the set of identifiers to previously enabled contexts. This
-     *            set may be empty. If this set is not empty, it must only
-     *            contain instances of <code>String</code>. This set must be
-     *            <code>null</code> if enabledContextIdsChanged is
-     *            <code>false</code> and must not be null if
-     *            enabledContextIdsChanged is <code>true</code>.
-     */
-    public ContextManagerEvent(IContextManager contextManager,
-            boolean definedContextIdsChanged, boolean enabledContextIdsChanged,
-            Set previouslyDefinedContextIds, Set previouslyEnabledContextIds) {
-        if (contextManager == null) {
-			throw new NullPointerException();
-		}
-
-        if (!definedContextIdsChanged && previouslyDefinedContextIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (!enabledContextIdsChanged && previouslyEnabledContextIds != null) {
-			throw new IllegalArgumentException();
-		}
-
-        if (definedContextIdsChanged) {
-            this.previouslyDefinedContextIds = Util.safeCopy(
-                    previouslyDefinedContextIds, String.class);
-        } else {
-            this.previouslyDefinedContextIds = null;
-        }
-
-        if (enabledContextIdsChanged) {
-            this.previouslyEnabledContextIds = Util.safeCopy(
-                    previouslyEnabledContextIds, String.class);
-        } else {
-            this.previouslyEnabledContextIds = null;
-        }
-
-        this.contextManager = contextManager;
-        this.definedContextIdsChanged = definedContextIdsChanged;
-        this.enabledContextIdsChanged = enabledContextIdsChanged;
-    }
-
-    /**
-     * Returns the instance of the interface that changed.
-     * 
-     * @return the instance of the interface that changed. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public IContextManager getContextManager() {
-        return contextManager;
-    }
-
-    /**
-     * Returns the set of identifiers to previously defined contexts.
-     * 
-     * @return the set of identifiers to previously defined contexts. This set
-     *         may be empty. If this set is not empty, it is guaranteed to only
-     *         contain instances of <code>String</code>. This set is
-     *         guaranteed to be <code>null</code> if
-     *         haveDefinedContextIdsChanged() is <code>false</code> and is
-     *         guaranteed to not be null if haveDefinedContextIdsChanged() is
-     *         <code>true</code>.
-     */
-    public Set getPreviouslyDefinedContextIds() {
-        return previouslyDefinedContextIds;
-    }
-
-    /**
-     * Returns the set of identifiers to previously enabled contexts.
-     * 
-     * @return the set of identifiers to previously enabled contexts. This set
-     *         may be empty. If this set is not empty, it is guaranteed to only
-     *         contain instances of <code>String</code>. This set is
-     *         guaranteed to be <code>null</code> if
-     *         haveEnabledContextIdsChanged() is <code>false</code> and is
-     *         guaranteed to not be null if haveEnabledContextIdsChanged() is
-     *         <code>true</code>.
-     */
-    public Set getPreviouslyEnabledContextIds() {
-        return previouslyEnabledContextIds;
-    }
-
-    /**
-     * Returns whether or not the definedContextIds property changed.
-     * 
-     * @return true, iff the definedContextIds property changed.
-     */
-    public boolean haveDefinedContextIdsChanged() {
-        return definedContextIdsChanged;
-    }
-
-    /**
-     * Returns whether or not the enabledContextIds property changed.
-     * 
-     * @return true, iff the enabledContextIds property changed.
-     */
-    public boolean haveEnabledContextIdsChanged() {
-        return enabledContextIdsChanged;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/EnabledSubmission.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/EnabledSubmission.java
deleted file mode 100644
index fa6bf84..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/EnabledSubmission.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.contexts;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * </p>
- * An instance of this class represents a request to enabled a context. An
- * enabled submission specifies a list of conditions under which it would be
- * appropriate for a particular context to be enabled. These conditions include
- * things like the active part or the active shell. So, it is possible to say
- * things like: "when the java editor is active, please consider enabling the
- * 'editing java' context".
- * </p>
- * <p>
- * The workbench considers all of the submissions it has received and choses the
- * ones it views as the best possible match.
- * </p>
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * <p>
- * Note: this class has a natural ordering that is inconsistent with equals.
- * </p>
- * 
- * @since 3.0
- * @see IWorkbenchContextSupport
- * @deprecated Please use <code>IContextService.activateContext</code>
- *             instead.
- * @see org.eclipse.ui.contexts.IContextService
- */
-public final class EnabledSubmission implements Comparable {
-
-    /**
-     * The identifier of the part in which this context should be enabled. If
-     * this value is <code>null</code>, this means it should be active in any
-     * part.
-     */
-    private final String activePartId;
-
-    /**
-     * The shell in which this context should be enabled. If this value is
-     * <code>null</code>, this means it should be active in any shell.
-     */
-    private final Shell activeShell;
-
-    /**
-     * The part site in which this context should be enabled. If this value is
-     * <code>null</code>, this means it should be active in any part site.
-     */
-    private final IWorkbenchPartSite activeWorkbenchPartSite;
-
-    /**
-     * The identifier for the context that should be enabled by this
-     * submissions. This value should never be <code>null</code>.
-     */
-    private final String contextId;
-
-    /**
-     * The cached string representation of this instance. This value is computed
-     * lazily on the first call to retrieve the string representation, and the
-     * cache is used for all future calls. If this value is <code>null</code>,
-     * then the value has not yet been computed.
-     */
-    private transient String string = null;
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param activePartId
-     *            the identifier of the part that must be active for this
-     *            request to be considered. May be <code>null</code>.
-     * @param activeShell
-     *            the shell that must be active for this request to be
-     *            considered. May be <code>null</code>.
-     * @param activeWorkbenchPartSite
-     *            the workbench part site of the part that must be active for
-     *            this request to be considered. May be <code>null</code>.
-     * @param contextId
-     *            the identifier of the context to be enabled. Must not be
-     *            <code>null</code>.
-     */
-    public EnabledSubmission(String activePartId, Shell activeShell,
-            IWorkbenchPartSite activeWorkbenchPartSite, String contextId) {
-        if (contextId == null) {
-			throw new NullPointerException();
-		}
-
-        this.activePartId = activePartId;
-        this.activeShell = activeShell;
-        this.activeWorkbenchPartSite = activeWorkbenchPartSite;
-        this.contextId = contextId;
-    }
-
-    /**
-     * @see Comparable#compareTo(java.lang.Object)
-     */
-    public int compareTo(Object object) {
-        EnabledSubmission castedObject = (EnabledSubmission) object;
-        int compareTo = Util.compare(activeWorkbenchPartSite,
-                castedObject.activeWorkbenchPartSite);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(activePartId, castedObject.activePartId);
-
-            if (compareTo == 0) {
-                compareTo = Util.compare(activeShell, castedObject.activeShell);
-
-                if (compareTo == 0) {
-					compareTo = Util.compare(contextId, castedObject.contextId);
-				}
-            }
-        }
-
-        return compareTo;
-    }
-
-    /**
-     * Returns the identifier of the part that must be active for this request
-     * to be considered.
-     * 
-     * @return the identifier of the part that must be active for this request
-     *         to be considered. May be <code>null</code>.
-     */
-    public String getActivePartId() {
-        return activePartId;
-    }
-
-    /**
-     * Returns the shell that must be active for this request to be considered.
-     * 
-     * @return the shell that must be active for this request to be considered.
-     *         May be <code>null</code>.
-     */
-    public Shell getActiveShell() {
-        return activeShell;
-    }
-
-    /**
-     * Returns the workbench part site of the part that must be active for this
-     * request to be considered.
-     * 
-     * @return the workbench part site of the part that must be active for this
-     *         request to be considered. May be <code>null</code>.
-     */
-    public IWorkbenchPartSite getActiveWorkbenchPartSite() {
-        return activeWorkbenchPartSite;
-    }
-
-    /**
-     * Returns the identifier of the context to be enabled.
-     * 
-     * @return the identifier of the context to be enabled. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public String getContextId() {
-        return contextId;
-    }
-
-    /**
-     * @see Object#toString()
-     */
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append("[activePartId="); //$NON-NLS-1$
-            stringBuffer.append(activePartId);
-            stringBuffer.append(",activeShell="); //$NON-NLS-1$
-            stringBuffer.append(activeShell);
-            stringBuffer.append(",activeWorkbenchSite="); //$NON-NLS-1$
-            stringBuffer.append(activeWorkbenchPartSite);
-            stringBuffer.append(",contextId="); //$NON-NLS-1$
-            stringBuffer.append(contextId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContext.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContext.java
deleted file mode 100644
index 114334a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContext.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-/**
- * An instance of this interface is an context as defined by the extension point
- * <code>org.eclipse.ui.contexts</code>.
- * <p>
- * An instance of this interface can be obtained from an instance of
- * <code>IContextManager</code> for any identifier, whether or not an context
- * with that identifier is defined in the extension registry.
- * </p>
- * <p>
- * The handle-based nature of this API allows it to work well with runtime
- * plugin activation and deactivation. If a context is defined, that means that
- * its corresponding plug-in is active. If the plug-in is then deactivated, the
- * context will still exist but it will be undefined. An attempts to use an
- * undefined context will result in a <code>NotDefinedException</code> being
- * thrown.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.contexts.IContextManager
- * @see org.eclipse.core.commands.contexts.Context
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IContext extends Comparable {
-
-    /**
-     * Registers an instance of <code>IContextListener</code> to listen for
-     * changes to properties of this instance.
-     * 
-     * @param contextListener
-     *            the instance to register. Must not be <code>null</code>. If
-     *            an attempt is made to register an instance which is already
-     *            registered with this instance, no operation is performed.
-     */
-    void addContextListener(IContextListener contextListener);
-
-    /**
-     * Returns the identifier of this instance.
-     * 
-     * @return the identifier of this instance. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * Returns the name of this instance suitable for display to the user.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the name of this instance. Guaranteed not to be <code>null</code>.
-     * @throws NotDefinedException
-     *             if this instance is not defined.
-     */
-    String getName() throws NotDefinedException;
-
-    /**
-     * Returns the identifier of the parent of this instance.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the identifier of the parent of this instance. May be
-     *         <code>null</code>.
-     * @throws NotDefinedException
-     *             if this instance is not defined.
-     */
-    String getParentId() throws NotDefinedException;
-
-    /**
-     * Returns whether or not this instance is defined.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return true, iff this instance is defined.
-     */
-    boolean isDefined();
-
-    /**
-     * Returns whether or not this instance is enabled.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return true, iff this instance is enabled.
-     */
-    boolean isEnabled();
-
-    /**
-     * Unregisters an instance of <code>IContextListener</code> listening for
-     * changes to properties of this instance.
-     * 
-     * @param contextListener
-     *            the instance to unregister. Must not be <code>null</code>.
-     *            If an attempt is made to unregister an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeContextListener(IContextListener contextListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextActivation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextActivation.java
deleted file mode 100644
index d6f43d5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextActivation.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.internal.services.IEvaluationResultCache;
-
-/**
- * <p>
- * A token representing the activation of a context. This token can later be
- * used to cancel that activation. Without this token, then context will only
- * become inactive if the component in which the context was activated is
- * destroyed.
- * </p>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @since 3.1
- * @see org.eclipse.ui.ISources
- * @see org.eclipse.ui.ISourceProvider
- */
-public interface IContextActivation extends IEvaluationResultCache {
-
-	/**
-	 * Clears the cached computation of the <code>isActive</code> method, if
-	 * any. This method is only intended for internal use. It provides a
-	 * mechanism by which <code>ISourceProvider</code> events can invalidate
-	 * state on a <code>IContextActivation</code> instance.
-	 * 
-	 * @deprecated Use {@link IEvaluationResultCache#clearResult()} instead.
-	 */
-	public void clearActive();
-
-	/**
-	 * Returns the identifier of the context that is being activated.
-	 * 
-	 * @return The context identifier; never <code>null</code>.
-	 */
-	public String getContextId();
-
-	/**
-	 * Returns the context service from which this activation was requested.
-	 * This is used to ensure that an activation can only be retracted from the
-	 * same service which issued it.
-	 * 
-	 * @return The context service; never <code>null</code>.
-	 */
-	public IContextService getContextService();
-
-	/**
-	 * Returns whether this context activation is currently active -- given the
-	 * current state of the workbench. This method should cache its computation.
-	 * The cache will be cleared by a call to <code>clearActive</code>.
-	 * 
-	 * @param context
-	 *            The context in which this state should be evaluated; must not
-	 *            be <code>null</code>.
-	 * @return <code>true</code> if the activation is currently active;
-	 *         <code>false</code> otherwise.
-	 * @deprecated Use
-	 *             {@link IEvaluationResultCache#evaluate(IEvaluationContext)}
-	 *             instead.
-	 */
-	public boolean isActive(IEvaluationContext context);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextListener.java
deleted file mode 100644
index 8ae7db8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextListener.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>IContext</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.contexts.IContext#addContextListener(IContextListener)
- * @see org.eclipse.ui.contexts.IContext#removeContextListener(IContextListener)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.contexts.IContextListener
- */
-public interface IContextListener {
-
-    /**
-     * Notifies that one or more properties of an instance of
-     * <code>IContext</code> have changed. Specific details are described in
-     * the <code>ContextEvent</code>.
-     * 
-     * @param contextEvent
-     *            the context event. Guaranteed not to be <code>null</code>.
-     */
-    void contextChanged(ContextEvent contextEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManager.java
deleted file mode 100644
index 5f15705..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManager.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-import java.util.SortedSet;
-
-/**
- * <p>
- * A context manager tracks the sets of defined and enabled contexts within the
- * application. The manager sends notification events to listeners when these
- * sets change. It is also possible to retrieve any given context with its
- * identifier.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.contexts.ContextManager
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IContextManager {
-
-    /**
-     * Registers an instance of <code>IContextManagerListener</code> to listen
-     * for changes to properties of this instance.
-     * 
-     * @param contextManagerListener
-     *            the instance to register. Must not be <code>null</code>. If
-     *            an attempt is made to register an instance which is already
-     *            registered with this instance, no operation is performed.
-     */
-    void addContextManagerListener(
-            IContextManagerListener contextManagerListener);
-
-    /**
-     * Returns an instance of <code>IContext</code> given an identifier.
-     * 
-     * @param contextId
-     *            an identifier. Must not be <code>null</code>
-     * @return an instance of <code>IContext</code>.
-     */
-    IContext getContext(String contextId);
-
-    /**
-     * Returns the set of identifiers to defined contexts.  The set is sorted by
-     * the depth of the context within the tree of contexts.  So, for example,
-     * a child context will always appear before its parent.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to defined contexts. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    SortedSet getDefinedContextIds();
-
-    /**
-     * Returns the set of identifiers to enabled contexts.  The set is sorted by
-     * the depth of the context within the tree of contexts.  So, for example,
-     * a child context will always appear before its parent.
-     * <p>
-     * Notification is sent to all registered listeners if this property
-     * changes.
-     * </p>
-     * 
-     * @return the set of identifiers to enabled contexts. This set may be
-     *         empty, but is guaranteed not to be <code>null</code>. If this
-     *         set is not empty, it is guaranteed to only contain instances of
-     *         <code>String</code>.
-     */
-    SortedSet getEnabledContextIds();
-
-    /**
-     * Unregisters an instance of <code>IContextManagerListener</code>
-     * listening for changes to properties of this instance.
-     * 
-     * @param contextManagerListener
-     *            the instance to unregister. Must not be <code>null</code>.
-     *            If an attempt is made to unregister an instance which is not
-     *            already registered with this instance, no operation is
-     *            performed.
-     */
-    void removeContextManagerListener(
-            IContextManagerListener contextManagerListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManagerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManagerListener.java
deleted file mode 100644
index 543b808..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextManagerListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.contexts;
-
-/**
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>IContextManager</code>.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @see IContextManager#addContextManagerListener(IContextManagerListener)
- * @see IContextManager#removeContextManagerListener(IContextManagerListener)
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.contexts.IContextManagerListener
- */
-public interface IContextManagerListener {
-
-    /**
-     * Notifies that one or more properties of an instance of
-     * <code>IContextManager</code> have changed. Specific details are
-     * described in the <code>ContextManagerEvent</code>.
-     * 
-     * @param contextManagerEvent
-     *            the context manager event. Guaranteed not to be
-     *            <code>null</code>.
-     */
-    void contextManagerChanged(ContextManagerEvent contextManagerEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextService.java
deleted file mode 100644
index 9c2a6f6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IContextService.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.contexts;
-
-import java.util.Collection;
-
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.services.IServiceWithSources;
-
-/**
- * <p>
- * Provides services related to contexts in the Eclipse workbench. This provides
- * access to contexts.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IContextService service = (IContextService) getSite().getService(IContextService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @since 3.1
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IContextService extends IServiceWithSources {
-
-	/**
-	 * The identifier for the context that is active when a shell registered as
-	 * a dialog.
-	 */
-	public static final String CONTEXT_ID_DIALOG = "org.eclipse.ui.contexts.dialog"; //$NON-NLS-1$
-
-	/**
-	 * The identifier for the context that is active when a shell is registered
-	 * as either a window or a dialog.
-	 */
-	public static final String CONTEXT_ID_DIALOG_AND_WINDOW = "org.eclipse.ui.contexts.dialogAndWindow"; //$NON-NLS-1$
-
-	/**
-	 * The identifier for the context that is active when a shell is registered
-	 * as a window.
-	 */
-	public static final String CONTEXT_ID_WINDOW = "org.eclipse.ui.contexts.window"; //$NON-NLS-1$
-
-	/**
-	 * The type used for registration indicating that the shell should be
-	 * treated as a dialog. When the given shell is active, the "In Dialogs"
-	 * context should also be active.
-	 */
-	public static final int TYPE_DIALOG = 0;
-
-	/**
-	 * The type used for registration indicating that the shell should not
-	 * receive any key bindings be default. When the given shell is active, we
-	 * should not provide any <code>EnabledSubmission</code> instances for the
-	 * "In Dialogs" or "In Windows" contexts.
-	 * 
-	 */
-	public static final int TYPE_NONE = 1;
-
-	/**
-	 * The type used for registration indicating that the shell should be
-	 * treated as a window. When the given shell is active, the "In Windows"
-	 * context should also be active.
-	 */
-	public static final int TYPE_WINDOW = 2;
-
-	/**
-	 * <p>
-	 * Activates the given context within the context of this service. If this
-	 * service was retrieved from the workbench, then this context will be
-	 * active globally. If the service was retrieved from a nested component,
-	 * then the context will only be active within that component.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the contexts submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its contexts when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param contextId
-	 *            The identifier for the context which should be activated; must
-	 *            not be <code>null</code>.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 */
-	public IContextActivation activateContext(String contextId);
-
-	/**
-	 * <p>
-	 * Activates the given context within the context of this service. The
-	 * context becomes active when <code>expression</code> evaluates to
-	 * <code>true</code>. This is the same as calling
-	 * {@link #activateContext(String, Expression, boolean)} with global==<code>false</code>.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the context submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param contextId
-	 *            The identifier for the context which should be activated; must
-	 *            not be <code>null</code>.
-	 * @param expression
-	 *            This expression must evaluate to <code>true</code> before
-	 *            this context will really become active. The expression may be
-	 *            <code>null</code> if the context should always be active.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @since 3.2
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression);
-
-	/**
-	 * <p>
-	 * Activates the given context within the context of this service. The
-	 * context becomes active when <code>expression</code> evaluates to
-	 * <code>true</code>. If global==<code>false</code> then this service
-	 * must also be the active service to activate the context.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the context submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param contextId
-	 *            The identifier for the context which should be activated; must
-	 *            not be <code>null</code>.
-	 * @param expression
-	 *            This expression must evaluate to <code>true</code> before
-	 *            this context will really become active. The expression may be
-	 *            <code>null</code> if the context should always be active.
-	 * @param global
-	 *            Indicates that the handler should be activated irrespectively
-	 *            of whether the corresponding workbench component (e.g.,
-	 *            window, part, etc.) is active.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @since 3.2
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression, boolean global);
-
-	/**
-	 * <p>
-	 * Activates the given context within the context of this service. The
-	 * context becomes active when <code>expression</code> evaluates to
-	 * <code>true</code>.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the context submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param contextId
-	 *            The identifier for the context which should be activated; must
-	 *            not be <code>null</code>.
-	 * @param expression
-	 *            This expression must evaluate to <code>true</code> before
-	 *            this context will really become active. The expression may be
-	 *            <code>null</code> if the context should always be active.
-	 * @param sourcePriorities
-	 *            The source priorities for the expression.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @deprecated Use
-	 *             {@link IContextService#activateContext(String, Expression)}
-	 *             instead.
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression, int sourcePriorities);
-
-	/**
-	 * Adds a listener to this context service. The listener will be notified
-	 * when the set of defined contexts changes. This can be used to track the
-	 * global appearance and disappearance of contexts.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            The listener to attach; must not be <code>null</code>.
-	 * @since 3.2
-	 * @see #removeContextManagerListener(IContextManagerListener)
-	 */
-	public void addContextManagerListener(IContextManagerListener listener);
-
-	/**
-	 * Deactivates the given context within the context of this service. If the
-	 * handler was context with a different service, then it must be deactivated
-	 * from that service instead. It is only possible to retract a context
-	 * activation with this method. That is, you must have the same
-	 * <code>IContextActivation</code> used to activate the context.
-	 * 
-	 * @param activation
-	 *            The token that was returned from a call to
-	 *            <code>activateContext</code>; must not be <code>null</code>.
-	 */
-	public void deactivateContext(IContextActivation activation);
-
-	/**
-	 * Deactivates the given contexts within the context of this service. If the
-	 * contexts were activated with a different service, then they must be
-	 * deactivated from that service instead. It is only possible to retract
-	 * context activations with this method. That is, you must have the same
-	 * <code>IContextActivation</code> instances used to activate the
-	 * contexts.
-	 * 
-	 * @param activations
-	 *            The tokens that were returned from a call to
-	 *            <code>activateContext</code>. This collection must only
-	 *            contain instances of <code>IContextActivation</code>. The
-	 *            collection must not be <code>null</code>.
-	 */
-	public void deactivateContexts(Collection activations);
-
-	/**
-	 * Returns the set of active context identifiers.
-	 * 
-	 * @return The set of active context identifiers; this value may be
-	 *         <code>null</code> if no active contexts have been set yet. If
-	 *         the set is not <code>null</code>, then it contains only
-	 *         instances of <code>String</code>.
-	 * @since 3.2
-	 */
-	public Collection getActiveContextIds();
-
-	/**
-	 * Retrieves the context with the given identifier. If no such context
-	 * exists, then an undefined context with the given id is created.
-	 * 
-	 * @param contextId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @return A context with the given identifier, either defined or undefined.
-	 */
-	public Context getContext(String contextId);
-
-	/**
-	 * Returns the collection of all of the defined contexts in the workbench.
-	 * 
-	 * @return The collection of contexts (<code>Context</code>) that are
-	 *         defined; never <code>null</code>, but may be empty.
-	 * @since 3.2
-	 */
-	public Context[] getDefinedContexts();
-
-	/**
-	 * Returns the collection of the identifiers for all of the defined contexts
-	 * in the workbench.
-	 * 
-	 * @return The collection of context identifiers (<code>String</code>)
-	 *         that are defined; never <code>null</code>, but may be empty.
-	 */
-	public Collection getDefinedContextIds();
-
-	/**
-	 * Returns the shell type for the given shell.
-	 * 
-	 * @param shell
-	 *            The shell for which the type should be determined. If this
-	 *            value is <code>null</code>, then
-	 *            <code>IContextService.TYPE_NONE</code> is returned.
-	 * @return <code>IContextService.TYPE_WINDOW</code>,
-	 *         <code>IContextService.TYPE_DIALOG</code>, or
-	 *         <code>IContextService.TYPE_NONE</code>.
-	 */
-	public int getShellType(Shell shell);
-
-	/**
-	 * <p>
-	 * Reads the context information from the registry and the preferences. This
-	 * will overwrite any of the existing information in the context service.
-	 * This method is intended to be called during start-up. When this method
-	 * completes, this context service will reflect the current state of the
-	 * registry and preference store.
-	 * </p>
-	 */
-	public void readRegistry();
-
-	/**
-	 * <p>
-	 * Registers a shell to automatically promote or demote some basic types of
-	 * contexts. The "In Dialogs" and "In Windows" contexts are provided by the
-	 * system. This a convenience method to ensure that these contexts are
-	 * promoted when the given is shell is active.
-	 * </p>
-	 * <p>
-	 * If a shell is registered as a window, then the "In Windows" context is
-	 * enabled when that shell is active. If a shell is registered as a dialog --
-	 * or is not registered, but has a parent shell -- then the "In Dialogs"
-	 * context is enabled when that shell is active. If the shell is registered
-	 * as none -- or is not registered, but has no parent shell -- then the
-	 * neither of the contexts will be enabled (by us -- someone else can always
-	 * enabled them).
-	 * </p>
-	 * <p>
-	 * If the provided shell has already been registered, then this method will
-	 * change the registration.
-	 * </p>
-	 * 
-	 * @param shell
-	 *            The shell to register for key bindings; must not be
-	 *            <code>null</code>.
-	 * @param type
-	 *            The type of shell being registered. This value must be one of
-	 *            the constants given in this interface.
-	 * 
-	 * @return <code>true</code> if the shell had already been registered
-	 *         (i.e., the registration has changed); <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean registerShell(Shell shell, int type);
-
-	/**
-	 * Removes a listener from this context service.
-	 * 
-	 * @param listener
-	 *            The listener to be removed; must not be <code>null</code>.
-	 * @since 3.2
-	 */
-	public void removeContextManagerListener(IContextManagerListener listener);
-
-	/**
-	 * <p>
-	 * Unregisters a shell that was previously registered. After this method
-	 * completes, the shell will be treated as if it had never been registered
-	 * at all. If you have registered a shell, you should ensure that this
-	 * method is called when the shell is disposed. Otherwise, a potential
-	 * memory leak will exist.
-	 * </p>
-	 * <p>
-	 * If the shell was never registered, or if the shell is <code>null</code>,
-	 * then this method returns <code>false</code> and does nothing.
-	 * 
-	 * @param shell
-	 *            The shell to be unregistered; does nothing if this value is
-	 *            <code>null</code>.
-	 * 
-	 * @return <code>true</code> if the shell had been registered;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean unregisterShell(Shell shell);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IWorkbenchContextSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IWorkbenchContextSupport.java
deleted file mode 100644
index c393fa6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/IWorkbenchContextSupport.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.contexts;
-
-import java.util.Collection;
-
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * <p>
- * An instance of this interface provides support for managing contexts at the
- * <code>IWorkbench</code> level. This provides the functionality necessary to
- * enabled contexts, disable or enabled the key binding service, as well as
- * register shells as particular types of windows.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use <code>IBindingService</code> and
- *             <code>IContextService</code> instead.
- * @see org.eclipse.ui.contexts.IContextService
- * @see org.eclipse.ui.keys.IBindingService
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchContextSupport {
-
-	/**
-	 * The identifier for the context that is active when a shell registered as
-	 * a dialog.
-	 */
-	public static final String CONTEXT_ID_DIALOG = IContextService.CONTEXT_ID_DIALOG;
-
-	/**
-	 * The identifier for the context that is active when a shell is registered
-	 * as either a window or a dialog.
-	 */
-	public static final String CONTEXT_ID_DIALOG_AND_WINDOW = IContextService.CONTEXT_ID_DIALOG_AND_WINDOW;
-
-	/**
-	 * The identifier for the context that is active when a shell is registered
-	 * as a window.
-	 */
-	public static final String CONTEXT_ID_WINDOW = IContextService.CONTEXT_ID_WINDOW;
-
-	/**
-	 * The type used for registration indicating that the shell should be
-	 * treated as a dialog. When the given shell is active, the "In Dialogs"
-	 * context should also be active.
-	 */
-	public static final int TYPE_DIALOG = IContextService.TYPE_DIALOG;
-
-	/**
-	 * The type used for registration indicating that the shell should not
-	 * receive any key bindings be default. When the given shell is active, we
-	 * should not provide any <code>EnabledSubmission</code> instances for the
-	 * "In Dialogs" or "In Windows" contexts.
-	 * 
-	 */
-	public static final int TYPE_NONE = IContextService.TYPE_NONE;
-
-	/**
-	 * The type used for registration indicating that the shell should be
-	 * treated as a window. When the given shell is active, the "In Windows"
-	 * context should also be active.
-	 */
-	public static final int TYPE_WINDOW = IContextService.TYPE_WINDOW;
-
-	/**
-	 * <p>
-	 * Add a single enabled submission for consideration. An enabled submission
-	 * is a description of certain criteria under which a particular context
-	 * should become active. All added submissions will be check when the
-	 * conditions in the workbench change, and zero or more contexts will be
-	 * selected as active.
-	 * </p>
-	 * <p>
-	 * Just because an enabled submission is added, it does not mean that the
-	 * corresponding context will become active. The workbench will consider the
-	 * request, but other factors (such as conflicts) may prevent the context
-	 * from becoming active.
-	 * </p>
-	 * 
-	 * @param enabledSubmission
-	 *            The enabled submission to be considered; must not be
-	 *            <code>null</code>.
-	 */
-	void addEnabledSubmission(EnabledSubmission enabledSubmission);
-
-	/**
-	 * <p>
-	 * Adds zero or more enabled submissions for consideration. An enabled
-	 * submission is a description of certain criteria under which a particular
-	 * context should become active. All added submissions will be check when
-	 * the conditions in the workbench change, and zero or more contexts will be
-	 * selected as active.
-	 * </p>
-	 * <p>
-	 * Just because an enabled submission is added, it does not mean that the
-	 * corresponding context will become active. The workbench will consider the
-	 * request, but other factors (such as conflicts) may prevent the context
-	 * from becoming active.
-	 * </p>
-	 * 
-	 * @param enabledSubmissions
-	 *            The enabled submissions to be considered; must not be
-	 *            <code>null</code>, but may be empty. Every element in the
-	 *            collection must be an instance of
-	 *            <code>EnabledSubmission</code>.
-	 */
-	void addEnabledSubmissions(Collection enabledSubmissions);
-
-	/**
-	 * Returns the context manager for the workbench.
-	 * 
-	 * @return the context manager for the workbench. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	IContextManager getContextManager();
-
-	/**
-	 * Returns the shell type for the given shell.
-	 * 
-	 * @param shell
-	 *            The shell for which the type should be determined. If this
-	 *            value is <code>null</code>, then
-	 *            <code>IWorkbenchContextSupport.TYPE_NONE</code> is returned.
-	 * @return <code>IWorkbenchContextSupport.TYPE_WINDOW</code>,
-	 *         <code>IWorkbenchContextSupport.TYPE_DIALOG</code>, or
-	 *         <code>IWorkbenchContextSupport.TYPE_NONE</code>.
-	 * @since 3.1
-	 */
-	public int getShellType(final Shell shell);
-
-	/**
-	 * Tests whether the global key binding architecture is currently active.
-	 * 
-	 * @return <code>true</code> if the key bindings are active;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean isKeyFilterEnabled();
-
-	/**
-	 * Opens the key assistant dialog positioned near the key binding entry in
-	 * the status bar.
-	 * 
-	 * @since 3.1
-	 */
-	public void openKeyAssistDialog();
-
-	/**
-	 * <p>
-	 * Registers a shell to automatically promote or demote some basic types of
-	 * contexts. The "In Dialogs" and "In Windows" contexts are provided by the
-	 * system. This a convenience method to ensure that these contexts are
-	 * promoted when the given is shell is active.
-	 * </p>
-	 * <p>
-	 * If a shell is registered as a window, then the "In Windows" context is
-	 * enabled when that shell is active. If a shell is registered as a dialog --
-	 * or is not registered, but has a parent shell -- then the "In Dialogs"
-	 * context is enabled when that shell is active. If the shell is registered
-	 * as none -- or is not registered, but has no parent shell -- then the
-	 * neither of the contexts will be enabled (by us -- someone else can always
-	 * enabled them).
-	 * </p>
-	 * <p>
-	 * If the provided shell has already been registered, then this method will
-	 * change the registration.
-	 * </p>
-	 * 
-	 * @param shell
-	 *            The shell to register for key bindings; must not be
-	 *            <code>null</code>.
-	 * @param type
-	 *            The type of shell being registered. This value must be one of
-	 *            the constants given in this interface.
-	 * 
-	 * @return <code>true</code> if the shell had already been registered
-	 *         (i.e., the registration has changed); <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean registerShell(final Shell shell, final int type);
-
-	/**
-	 * <p>
-	 * Removes a single enabled submission from consideration. Only the same
-	 * enabled submission will be removed; equivalent submissions will not be
-	 * removed. Removing an enabled submission does not necessarily mean that
-	 * the corresponding context will become inactive. It is possible that other
-	 * parts of the application have requested that the context be enabled.
-	 * </p>
-	 * <p>
-	 * There is no way to disable a context. It is only possible to not enable
-	 * it.
-	 * </p>
-	 * 
-	 * @param enabledSubmission
-	 *            The enabled submission to be removed; must not be
-	 *            <code>null</code>.
-	 */
-	void removeEnabledSubmission(EnabledSubmission enabledSubmission);
-
-	/**
-	 * <p>
-	 * Removes a collection of enabled submissions from consideration. Only the
-	 * same enabled submissions will be removed; equivalent submissions will not
-	 * be removed. Removing an enabled submission does not necessarily mean that
-	 * the corresponding context will become inactive. It is possible that other
-	 * parts of the application have requested that the context be enabled.
-	 * </p>
-	 * <p>
-	 * There is no way to disable a context. It is only possible to not enable
-	 * it.
-	 * </p>
-	 * 
-	 * @param enabledSubmissions
-	 *            The enabled submissions to be removed; must not be
-	 *            <code>null</code>, but may be empty. The collection must
-	 *            only contain instances of <code>EnabledSubmission</code>.
-	 */
-	void removeEnabledSubmissions(Collection enabledSubmissions);
-
-	/**
-	 * Enables or disables the global key binding architecture. The architecture
-	 * should be enabled by default.
-	 * 
-	 * When enabled, keyboard shortcuts are active, and that key events can
-	 * trigger commands. This also means that widgets may not see all key events
-	 * (as they might be trapped as a keyboard shortcut).
-	 * 
-	 * When disabled, no key events will trapped as keyboard shortcuts, and that
-	 * no commands can be triggered by keyboard events. (Exception: it is
-	 * possible that someone listening for key events on a widget could trigger
-	 * a command.)
-	 * 
-	 * @param enabled
-	 *            Whether the key filter should be enabled.
-	 */
-	public void setKeyFilterEnabled(final boolean enabled);
-
-	/**
-	 * <p>
-	 * Unregisters a shell that was previously registered. After this method
-	 * completes, the shell will be treated as if it had never been registered
-	 * at all. If you have registered a shell, you should ensure that this
-	 * method is called when the shell is disposed. Otherwise, a potential
-	 * memory leak will exist.
-	 * </p>
-	 * <p>
-	 * If the shell was never registered, or if the shell is <code>null</code>,
-	 * then this method returns <code>false</code> and does nothing.
-	 * 
-	 * @param shell
-	 *            The shell to be unregistered; does nothing if this value is
-	 *            <code>null</code>.
-	 * 
-	 * @return <code>true</code> if the shell had been registered;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean unregisterShell(final Shell shell);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/NotDefinedException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/NotDefinedException.java
deleted file mode 100644
index 8fafbce..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/NotDefinedException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.contexts;
-
-/**
- * Signals that an attempt was made to access the properties of an undefined
- * object.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- * @deprecated Please use the "org.eclipse.core.commands" plug-in instead.
- * @see org.eclipse.core.commands.common.NotDefinedException
- */
-public final class NotDefinedException extends ContextException {
-
-	/**
-	 * Generated serial version UID for this class.
-	 * 
-	 * @since 3.1
-	 */
-	private static final long serialVersionUID = 3833750983926167092L;
-
-	/**
-	 * Creates a new instance of this class with the specified detail message.
-	 * 
-	 * @param message
-	 *            the detail message.
-	 */
-	public NotDefinedException(String message) {
-		super(message);
-	}
-
-	/**
-	 * Constructs a new instance of <code>NotDefinedException</code>.
-	 * 
-	 * @param e
-	 *            The exception being thrown; must not be <code>null</code>.
-	 * @since 3.1
-	 */
-	public NotDefinedException(
-			org.eclipse.core.commands.common.NotDefinedException e) {
-		super(e.getMessage(), e);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/package.html
deleted file mode 100644
index d23fd94..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/contexts/package.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=iso-8859-1">
-   <meta name="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Provides support for integrating contexts into the Eclipse workbench.</p>
-
-<h2>Package Specification</h2>
-<p>
-This package provides the classes required to integrate contexts into the
-Eclipse workbench.
-</p>
-<p>
-To use the context integration, the method <code>getAdapter</code> is called on
-the Eclipse workbench, with the argument <code>IContextService.class</code>.
-This will return an instance of <code>IContextService</code>.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java
deleted file mode 100644
index 2914b34..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/AbstractElementListSelectionDialog.java
+++ /dev/null
@@ -1,476 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog
- *     font should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-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.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * An abstract class to select elements out of a list of elements.
- * 
- * @since 2.0
- */
-public abstract class AbstractElementListSelectionDialog extends
-        SelectionStatusDialog {
-
-    private ILabelProvider fRenderer;
-
-    private boolean fIgnoreCase = true;
-
-    private boolean fIsMultipleSelection = false;
-
-    private boolean fMatchEmptyString = true;
-
-    private boolean fAllowDuplicates = true;
-
-    private Label fMessage;
-
-    protected FilteredList fFilteredList;
-
-    private Text fFilterText;
-
-    private ISelectionStatusValidator fValidator;
-
-    private String fFilter = null;
-
-    private String fEmptyListMessage = ""; //$NON-NLS-1$
-
-    private String fEmptySelectionMessage = ""; //$NON-NLS-1$
-
-    private int fWidth = 60;
-
-    private int fHeight = 18;
-
-    private Object[] fSelection = new Object[0];
-
-    /**
-     * Constructs a list selection dialog.
-     * @param parent The parent for the list.
-     * @param renderer ILabelProvider for the list
-     */
-    protected AbstractElementListSelectionDialog(Shell parent,
-            ILabelProvider renderer) {
-        super(parent);
-        fRenderer = renderer;
-    }
-
-    /**
-     * Handles default selection (double click).
-     * By default, the OK button is pressed.
-     */
-    protected void handleDefaultSelected() {
-        if (validateCurrentSelection()) {
-			buttonPressed(IDialogConstants.OK_ID);
-		}
-    }
-
-    /**
-     * Specifies if sorting, filtering and folding is case sensitive.
-     * @param ignoreCase
-     */
-    public void setIgnoreCase(boolean ignoreCase) {
-        fIgnoreCase = ignoreCase;
-    }
-
-    /**
-     * Returns if sorting, filtering and folding is case sensitive.
-     * @return boolean
-     */
-    public boolean isCaseIgnored() {
-        return fIgnoreCase;
-    }
-
-    /**
-     * Specifies whether everything or nothing should be filtered on
-     * empty filter string.
-     * @param matchEmptyString boolean
-     */
-    public void setMatchEmptyString(boolean matchEmptyString) {
-        fMatchEmptyString = matchEmptyString;
-    }
-
-    /**
-     * Specifies if multiple selection is allowed.
-     * @param multipleSelection
-     */
-    public void setMultipleSelection(boolean multipleSelection) {
-        fIsMultipleSelection = multipleSelection;
-    }
-
-    /**
-     * Specifies whether duplicate entries are displayed or not.
-     * @param allowDuplicates
-     */
-    public void setAllowDuplicates(boolean allowDuplicates) {
-        fAllowDuplicates = allowDuplicates;
-    }
-
-    /**
-     * Sets the list size in unit of characters.
-     * @param width  the width of the list.
-     * @param height the height of the list.
-     */
-    public void setSize(int width, int height) {
-        fWidth = width;
-        fHeight = height;
-    }
-
-    /**
-     * Sets the message to be displayed if the list is empty.
-     * @param message the message to be displayed.
-     */
-    public void setEmptyListMessage(String message) {
-        fEmptyListMessage = message;
-    }
-
-    /**
-     * Sets the message to be displayed if the selection is empty.
-     * @param message the message to be displayed.
-     */
-    public void setEmptySelectionMessage(String message) {
-        fEmptySelectionMessage = message;
-    }
-
-    /**
-     * Sets an optional validator to check if the selection is valid.
-     * The validator is invoked whenever the selection changes.
-     * @param validator the validator to validate the selection.
-     */
-    public void setValidator(ISelectionStatusValidator validator) {
-        fValidator = validator;
-    }
-
-    /**
-     * Sets the elements of the list (widget).
-     * To be called within open().
-     * @param elements the elements of the list.
-     */
-    protected void setListElements(Object[] elements) {
-        Assert.isNotNull(fFilteredList);
-        fFilteredList.setElements(elements);
-    }
-
-    /**
-     * Sets the filter pattern.
-     * @param filter the filter pattern.
-     */
-    public void setFilter(String filter) {
-        if (fFilterText == null) {
-			fFilter = filter;
-		} else {
-			fFilterText.setText(filter);
-		}
-    }
-
-    /**
-     * Returns the current filter pattern.
-     * @return returns the current filter pattern or <code>null<code> if filter was not set.
-     */
-    public String getFilter() {
-        if (fFilteredList == null) {
-			return fFilter;
-		} else {
-			return fFilteredList.getFilter();
-		}
-    }
-
-    /**
-     * Returns the indices referring the current selection.
-     * To be called within open().
-     * @return returns the indices of the current selection.
-     */
-    protected int[] getSelectionIndices() {
-        Assert.isNotNull(fFilteredList);
-        return fFilteredList.getSelectionIndices();
-    }
-
-    /**
-     * Returns an index referring the first current selection.
-     * To be called within open().
-     * @return returns the indices of the current selection.
-     */
-    protected int getSelectionIndex() {
-        Assert.isNotNull(fFilteredList);
-        return fFilteredList.getSelectionIndex();
-    }
-
-    /**
-     * Sets the selection referenced by an array of elements.
-     * Empty or null array removes selection.
-     * To be called within open().
-     * @param selection the indices of the selection.
-     */
-    protected void setSelection(Object[] selection) {
-        Assert.isNotNull(fFilteredList);
-        fFilteredList.setSelection(selection);
-    }
-
-    /**
-     * Returns an array of the currently selected elements.
-     * To be called within or after open().
-     * @return returns an array of the currently selected elements.
-     */
-    protected Object[] getSelectedElements() {
-        Assert.isNotNull(fFilteredList);
-        return fFilteredList.getSelection();
-    }
-
-    /**
-     * Returns all elements which are folded together to one entry in the list.
-     * @param  index the index selecting the entry in the list.
-     * @return returns an array of elements folded together.
-     */
-    public Object[] getFoldedElements(int index) {
-        Assert.isNotNull(fFilteredList);
-        return fFilteredList.getFoldedElements(index);
-    }
-
-    /**
-     * Creates the message text widget and sets layout data.
-     * @param composite the parent composite of the message area.
-     */
-    protected Label createMessageArea(Composite composite) {
-        Label label = super.createMessageArea(composite);
-
-        GridData data = new GridData();
-        data.grabExcessVerticalSpace = false;
-        data.grabExcessHorizontalSpace = true;
-        data.horizontalAlignment = GridData.FILL;
-        data.verticalAlignment = GridData.BEGINNING;
-        label.setLayoutData(data);
-
-        fMessage = label;
-
-        return label;
-    }
-
-    /**
-     * Handles a selection changed event.
-     * By default, the current selection is validated.
-     */
-    protected void handleSelectionChanged() {
-        validateCurrentSelection();
-    }
-
-    /**
-     * Validates the current selection and updates the status line
-     * accordingly.
-     * @return boolean <code>true</code> if the current selection is
-     * valid.
-     */
-    protected boolean validateCurrentSelection() {
-        Assert.isNotNull(fFilteredList);
-
-        IStatus status;
-        Object[] elements = getSelectedElements();
-
-        if (elements.length > 0) {
-            if (fValidator != null) {
-                status = fValidator.validate(elements);
-            } else {
-                status = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-                        IStatus.OK, "", //$NON-NLS-1$
-                        null);
-            }
-        } else {
-            if (fFilteredList.isEmpty()) {
-                status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-                        IStatus.ERROR, fEmptyListMessage, null);
-            } else {
-                status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-                        IStatus.ERROR, fEmptySelectionMessage, null);
-            }
-        }
-
-        updateStatus(status);
-
-        return status.isOK();
-    }
-
-    /*
-     * @see Dialog#cancelPressed
-     */
-    protected void cancelPressed() {
-        setResult(null);
-        super.cancelPressed();
-    }
-
-    /**
-     * Creates a filtered list.
-     * @param parent the parent composite.
-     * @return returns the filtered list widget.
-     */
-    protected FilteredList createFilteredList(Composite parent) {
-        int flags = SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL
-                | (fIsMultipleSelection ? SWT.MULTI : SWT.SINGLE);
-
-        FilteredList list = new FilteredList(parent, flags, fRenderer,
-                fIgnoreCase, fAllowDuplicates, fMatchEmptyString);
-
-        GridData data = new GridData();
-        data.widthHint = convertWidthInCharsToPixels(fWidth);
-        data.heightHint = convertHeightInCharsToPixels(fHeight);
-        data.grabExcessVerticalSpace = true;
-        data.grabExcessHorizontalSpace = true;
-        data.horizontalAlignment = GridData.FILL;
-        data.verticalAlignment = GridData.FILL;
-        list.setLayoutData(data);
-        list.setFont(parent.getFont());
-        list.setFilter((fFilter == null ? "" : fFilter)); //$NON-NLS-1$		
-
-        list.addSelectionListener(new SelectionListener() {
-            public void widgetDefaultSelected(SelectionEvent e) {
-                handleDefaultSelected();
-            }
-
-            public void widgetSelected(SelectionEvent e) {
-                handleWidgetSelected();
-            }
-        });
-
-        fFilteredList = list;
-
-        return list;
-    }
-
-    // 3515	
-    private void handleWidgetSelected() {
-        Object[] newSelection = fFilteredList.getSelection();
-
-        if (newSelection.length != fSelection.length) {
-            fSelection = newSelection;
-            handleSelectionChanged();
-        } else {
-            for (int i = 0; i != newSelection.length; i++) {
-                if (!newSelection[i].equals(fSelection[i])) {
-                    fSelection = newSelection;
-                    handleSelectionChanged();
-                    break;
-                }
-            }
-        }
-    }
-
-    protected Text createFilterText(Composite parent) {
-        Text text = new Text(parent, SWT.BORDER);
-
-        GridData data = new GridData();
-        data.grabExcessVerticalSpace = false;
-        data.grabExcessHorizontalSpace = true;
-        data.horizontalAlignment = GridData.FILL;
-        data.verticalAlignment = GridData.BEGINNING;
-        text.setLayoutData(data);
-        text.setFont(parent.getFont());
-
-        text.setText((fFilter == null ? "" : fFilter)); //$NON-NLS-1$
-
-        Listener listener = new Listener() {
-            public void handleEvent(Event e) {
-                fFilteredList.setFilter(fFilterText.getText());
-            }
-        };
-        text.addListener(SWT.Modify, listener);
-
-        text.addKeyListener(new KeyListener() {
-            public void keyPressed(KeyEvent e) {
-                if (e.keyCode == SWT.ARROW_DOWN) {
-					fFilteredList.setFocus();
-				}
-            }
-
-            public void keyReleased(KeyEvent e) {
-            }
-        });
-
-        fFilterText = text;
-
-        return text;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#open()
-     */
-    public int open() {
-        super.open();
-        return getReturnCode();
-    }
-
-    private void access$superCreate() {
-        super.create();
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#create()
-     */
-    public void create() {
-
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-                access$superCreate();
-
-                Assert.isNotNull(fFilteredList);
-
-                if (fFilteredList.isEmpty()) {
-                    handleEmptyList();
-                } else {
-                    validateCurrentSelection();
-                    fFilterText.selectAll();
-                    fFilterText.setFocus();
-                }
-            }
-        });
-
-    }
-
-    /**
-     * Handles empty list by disabling widgets.
-     */
-    protected void handleEmptyList() {
-        fMessage.setEnabled(false);
-        fFilterText.setEnabled(false);
-        fFilteredList.setEnabled(false);
-        updateOkState();
-    }
-
-    /**
-     * Update the enablement of the OK button based on whether or not there
-     * is a selection.
-     *
-     */
-    protected void updateOkState() {
-        Button okButton = getOkButton();
-        if (okButton != null) {
-			okButton.setEnabled(getSelectedElements().length != 0);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java
deleted file mode 100644
index 9cca57b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/CheckedTreeSelectionDialog.java
+++ /dev/null
@@ -1,401 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *      IBM Corporation - initial API and implementation    
- * 		Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should be
- * 			activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A class to select elements out of a tree structure.
- * 
- * @since 2.0
- */
-public class CheckedTreeSelectionDialog extends SelectionStatusDialog {
-    private CheckboxTreeViewer fViewer;
-
-    private ILabelProvider fLabelProvider;
-
-    private ITreeContentProvider fContentProvider;
-
-    private ISelectionStatusValidator fValidator = null;
-
-    private ViewerComparator fComparator;
-
-    private String fEmptyListMessage = WorkbenchMessages.CheckedTreeSelectionDialog_nothing_available; 
-
-    private IStatus fCurrStatus = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-            0, "", null); //$NON-NLS-1$
-
-    private List fFilters;
-
-    private Object fInput;
-
-    private boolean fIsEmpty;
-
-    private int fWidth = 60;
-
-    private int fHeight = 18;
-
-    private boolean fContainerMode;
-
-    private Object[] fExpandedElements;
-
-    /**
-     * Constructs an instance of <code>ElementTreeSelectionDialog</code>.
-     * 
-     * @param parent
-     *            The shell to parent from.
-     * @param labelProvider
-     *            the label provider to render the entries
-     * @param contentProvider
-     *            the content provider to evaluate the tree structure
-     */
-    public CheckedTreeSelectionDialog(Shell parent,
-            ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
-        super(parent);
-        fLabelProvider = labelProvider;
-        fContentProvider = contentProvider;
-        setResult(new ArrayList(0));
-        setStatusLineAboveButtons(true);
-        fContainerMode = false;
-        fExpandedElements = null;
-    }
-
-    /**
-     * If set, the checked /gray state of containers (inner nodes) is derived
-     * from the checked state of its leaf nodes.
-     * 
-     * @param containerMode
-     *            The containerMode to set
-     */
-    public void setContainerMode(boolean containerMode) {
-        fContainerMode = containerMode;
-    }
-
-    /**
-     * Sets the initial selection. Convenience method.
-     * 
-     * @param selection
-     *            the initial selection.
-     */
-    public void setInitialSelection(Object selection) {
-        setInitialSelections(new Object[] { selection });
-    }
-
-    /**
-     * Sets the message to be displayed if the list is empty.
-     * 
-     * @param message
-     *            the message to be displayed.
-     */
-    public void setEmptyListMessage(String message) {
-        fEmptyListMessage = message;
-    }
-
-    /**
-	 * Sets the sorter used by the tree viewer.
-	 * 
-	 * @param sorter
-	 * @deprecated since 3.3, use
-	 *             {@link CheckedTreeSelectionDialog#setComparator(ViewerComparator)}
-	 *             instead
-	 */
-    public void setSorter(ViewerSorter sorter) {
-        fComparator = sorter;
-    }
-    
-    /**
-     * Sets the comparator used by the tree viewer.
-     * 
-     * @param comparator
-     * @since 3.3
-     */
-    public void setComparator(ViewerComparator comparator){
-    	fComparator = comparator;
-    }
-
-    /**
-     * Adds a filter to the tree viewer.
-     * 
-     * @param filter
-     *            a filter.
-     */
-    public void addFilter(ViewerFilter filter) {
-        if (fFilters == null) {
-			fFilters = new ArrayList(4);
-		}
-        fFilters.add(filter);
-    }
-
-    /**
-     * Sets an optional validator to check if the selection is valid. The
-     * validator is invoked whenever the selection changes.
-     * 
-     * @param validator
-     *            the validator to validate the selection.
-     */
-    public void setValidator(ISelectionStatusValidator validator) {
-        fValidator = validator;
-    }
-
-    /**
-     * Sets the tree input.
-     * 
-     * @param input
-     *            the tree input.
-     */
-    public void setInput(Object input) {
-        fInput = input;
-    }
-
-    /**
-     * Expands elements in the tree.
-     * 
-     * @param elements
-     *            The elements that will be expanded.
-     */
-    public void setExpandedElements(Object[] elements) {
-        fExpandedElements = elements;
-    }
-
-    /**
-     * Sets the size of the tree in unit of characters.
-     * 
-     * @param width
-     *            the width of the tree.
-     * @param height
-     *            the height of the tree.
-     */
-    public void setSize(int width, int height) {
-        fWidth = width;
-        fHeight = height;
-    }
-
-    /**
-     * Validate the receiver and update the status with the result.
-     *
-     */
-    protected void updateOKStatus() {
-        if (!fIsEmpty) {
-            if (fValidator != null) {
-                fCurrStatus = fValidator.validate(fViewer.getCheckedElements());
-                updateStatus(fCurrStatus);
-            } else if (!fCurrStatus.isOK()) {
-                fCurrStatus = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-                        IStatus.OK, "", //$NON-NLS-1$
-                        null);
-            }
-        } else {
-            fCurrStatus = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-                    IStatus.OK, fEmptyListMessage, null);
-        }
-        updateStatus(fCurrStatus);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#open()
-     */
-    public int open() {
-        fIsEmpty = evaluateIfTreeEmpty(fInput);
-        super.open();
-        return getReturnCode();
-    }
-
-    private void access$superCreate() {
-        super.create();
-    }
-
-    /**
-     * Handles cancel button pressed event.
-     */
-    protected void cancelPressed() {
-        setResult(null);
-        super.cancelPressed();
-    }
-
-    /*
-     * @see SelectionStatusDialog#computeResult()
-     */
-    protected void computeResult() {
-        setResult(Arrays.asList(fViewer.getCheckedElements()));
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#create()
-     */
-    public void create() {
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-                access$superCreate();
-                fViewer.setCheckedElements(getInitialElementSelections()
-                        .toArray());
-                if (fExpandedElements != null) {
-                    fViewer.setExpandedElements(fExpandedElements);
-                }
-                updateOKStatus();
-            }
-        });
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite composite = (Composite) super.createDialogArea(parent);
-        Label messageLabel = createMessageArea(composite);
-        CheckboxTreeViewer treeViewer = createTreeViewer(composite);
-        Control buttonComposite = createSelectionButtons(composite);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.widthHint = convertWidthInCharsToPixels(fWidth);
-        data.heightHint = convertHeightInCharsToPixels(fHeight);
-        Tree treeWidget = treeViewer.getTree();
-        treeWidget.setLayoutData(data);
-        treeWidget.setFont(parent.getFont());
-        if (fIsEmpty) {
-            messageLabel.setEnabled(false);
-            treeWidget.setEnabled(false);
-            buttonComposite.setEnabled(false);
-        }
-        return composite;
-    }
-
-    /**
-     * Creates the tree viewer.
-     * 
-     * @param parent
-     *            the parent composite
-     * @return the tree viewer
-     */
-    protected CheckboxTreeViewer createTreeViewer(Composite parent) {
-        if (fContainerMode) {
-            fViewer = new ContainerCheckedTreeViewer(parent, SWT.BORDER);
-        } else {
-            fViewer = new CheckboxTreeViewer(parent, SWT.BORDER);
-        }
-        fViewer.setContentProvider(fContentProvider);
-        fViewer.setLabelProvider(fLabelProvider);
-        fViewer.addCheckStateListener(new ICheckStateListener() {
-            public void checkStateChanged(CheckStateChangedEvent event) {
-                updateOKStatus();
-            }
-        });
-        fViewer.setComparator(fComparator);
-        if (fFilters != null) {
-            for (int i = 0; i != fFilters.size(); i++) {
-				fViewer.addFilter((ViewerFilter) fFilters.get(i));
-			}
-        }
-        fViewer.setInput(fInput);
-        return fViewer;
-    }
-
-    /**
-     * Returns the tree viewer.
-     * 
-     * @return the tree viewer
-     */
-    protected CheckboxTreeViewer getTreeViewer() {
-        return fViewer;
-    }
-
-    /**
-     * Adds the selection and deselection buttons to the dialog.
-     * 
-     * @param composite
-     *            the parent composite
-     * @return Composite the composite the buttons were created in.
-     */
-    protected Composite createSelectionButtons(Composite composite) {
-        Composite buttonComposite = new Composite(composite, SWT.RIGHT);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        buttonComposite.setLayout(layout);
-        buttonComposite.setFont(composite.getFont());
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_END
-                | GridData.GRAB_HORIZONTAL);
-        data.grabExcessHorizontalSpace = true;
-        composite.setData(data);
-        Button selectButton = createButton(buttonComposite,
-                IDialogConstants.SELECT_ALL_ID, WorkbenchMessages.CheckedTreeSelectionDialog_select_all,
-                false);
-        SelectionListener listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                Object[] viewerElements = fContentProvider.getElements(fInput);
-                if (fContainerMode) {
-					fViewer.setCheckedElements(viewerElements);
-				} else {
-                    for (int i = 0; i < viewerElements.length; i++) {
-						fViewer.setSubtreeChecked(viewerElements[i], true);
-					}
-                }
-                updateOKStatus();
-            }
-        };
-        selectButton.addSelectionListener(listener);
-        Button deselectButton = createButton(buttonComposite,
-                IDialogConstants.DESELECT_ALL_ID, WorkbenchMessages.CheckedTreeSelectionDialog_deselect_all,
-                false);
-        listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                fViewer.setCheckedElements(new Object[0]);
-                updateOKStatus();
-            }
-        };
-        deselectButton.addSelectionListener(listener);
-        return buttonComposite;
-    }
-
-    private boolean evaluateIfTreeEmpty(Object input) {
-        Object[] elements = fContentProvider.getElements(input);
-        if (elements.length > 0) {
-            if (fFilters != null) {
-                for (int i = 0; i < fFilters.size(); i++) {
-                    ViewerFilter curr = (ViewerFilter) fFilters.get(i);
-                    elements = curr.filter(fViewer, input, elements);
-                }
-            }
-        }
-        return elements.length == 0;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java
deleted file mode 100644
index be647a0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ContainerCheckedTreeViewer.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ITreeViewerListener;
-import org.eclipse.jface.viewers.TreeExpansionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * CheckboxTreeViewer with special behaviour of the checked / gray state on 
- * container (non-leaf) nodes:
- * The grayed state is used to visualize the checked state of its children.
- * Containers are checked and non-gray if all contained leafs are checked. The
- * container is grayed if some but not all leafs are checked.
- * @since 3.1
- */
-public class ContainerCheckedTreeViewer extends CheckboxTreeViewer {
-
-    /**
-     * Constructor for ContainerCheckedTreeViewer.
-     * @see CheckboxTreeViewer#CheckboxTreeViewer(Composite)
-     */
-    public ContainerCheckedTreeViewer(Composite parent) {
-        super(parent);
-        initViewer();
-    }
-
-    /**
-     * Constructor for ContainerCheckedTreeViewer.
-     * @see CheckboxTreeViewer#CheckboxTreeViewer(Composite,int)
-     */
-    public ContainerCheckedTreeViewer(Composite parent, int style) {
-        super(parent, style);
-        initViewer();
-    }
-
-    /**
-     * Constructor for ContainerCheckedTreeViewer.
-     * @see CheckboxTreeViewer#CheckboxTreeViewer(Tree)
-     */
-    public ContainerCheckedTreeViewer(Tree tree) {
-        super(tree);
-        initViewer();
-    }
-
-    private void initViewer() {
-        setUseHashlookup(true);
-        addCheckStateListener(new ICheckStateListener() {
-            public void checkStateChanged(CheckStateChangedEvent event) {
-                doCheckStateChanged(event.getElement());
-            }
-        });
-        addTreeListener(new ITreeViewerListener() {
-            public void treeCollapsed(TreeExpansionEvent event) {
-            }
-
-            public void treeExpanded(TreeExpansionEvent event) {
-                Widget item = findItem(event.getElement());
-                if (item instanceof TreeItem) {
-                    initializeItem((TreeItem) item);
-                }
-            }
-        });
-    }
-
-	/**
-	 * Update element after a checkstate change.
-	 * @param element
-	 */
-    protected void doCheckStateChanged(Object element) {
-        Widget item = findItem(element);
-        if (item instanceof TreeItem) {
-            TreeItem treeItem = (TreeItem) item;
-            treeItem.setGrayed(false);
-            updateChildrenItems(treeItem);
-            updateParentItems(treeItem.getParentItem());
-        }
-    }
-
-    /**
-     * The item has expanded. Updates the checked state of its children. 
-     */
-    private void initializeItem(TreeItem item) {
-        if (item.getChecked() && !item.getGrayed()) {
-            updateChildrenItems(item);
-        }
-    }
-
-    /**
-     * Updates the check state of all created children
-     */
-    private void updateChildrenItems(TreeItem parent) {
-        Item[] children = getChildren(parent);
-        boolean state = parent.getChecked();
-        for (int i = 0; i < children.length; i++) {
-            TreeItem curr = (TreeItem) children[i];
-            if (curr.getData() != null
-                    && ((curr.getChecked() != state) || curr.getGrayed())) {
-                curr.setChecked(state);
-                curr.setGrayed(false);
-                updateChildrenItems(curr);
-            }
-        }
-    }
-
-    /**
-     * Updates the check / gray state of all parent items
-     */
-    private void updateParentItems(TreeItem item) {
-        if (item != null) {
-            Item[] children = getChildren(item);
-            boolean containsChecked = false;
-            boolean containsUnchecked = false;
-            for (int i = 0; i < children.length; i++) {
-                TreeItem curr = (TreeItem) children[i];
-                containsChecked |= curr.getChecked();
-                containsUnchecked |= (!curr.getChecked() || curr.getGrayed());
-            }
-            item.setChecked(containsChecked);
-            item.setGrayed(containsChecked && containsUnchecked);
-            updateParentItems(item.getParentItem());
-        }
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ICheckable#setChecked(java.lang.Object, boolean)
-     */
-    public boolean setChecked(Object element, boolean state) {
-        if (super.setChecked(element, state)) {
-            doCheckStateChanged(element);
-            return true;
-        }
-        return false;
-    }
-
- 
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.CheckboxTreeViewer#setCheckedElements(java.lang.Object[])
-     */
-    public void setCheckedElements(Object[] elements) {
-        super.setCheckedElements(elements);
-        for (int i = 0; i < elements.length; i++) {
-            doCheckStateChanged(elements[i]);
-        }
-    }
-
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.AbstractTreeViewer#setExpanded(org.eclipse.swt.widgets.Item, boolean)
-     */
-    protected void setExpanded(Item item, boolean expand) {
-        super.setExpanded(item, expand);
-        if (expand && item instanceof TreeItem) {
-            initializeItem((TreeItem) item);
-        }
-    }
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.CheckboxTreeViewer#getCheckedElements()
-     */
-    public Object[] getCheckedElements() {
-        Object[] checked = super.getCheckedElements();
-        // add all items that are children of a checked node but not created yet
-        ArrayList result = new ArrayList();
-        for (int i = 0; i < checked.length; i++) {
-            Object curr = checked[i];
-            result.add(curr);
-            Widget item = findItem(curr);
-            if (item != null) {
-                Item[] children = getChildren(item);
-                // check if contains the dummy node
-                if (children.length == 1 && children[0].getData() == null) {
-                    // not yet created
-                    collectChildren(curr, result);
-                }
-            }
-        }
-        return result.toArray();
-    }
-
-	/**
-	 * Recursively add the filtered children of element to the result.
-	 * @param element
-	 * @param result
-	 */
-    private void collectChildren(Object element, ArrayList result) {
-        Object[] filteredChildren = getFilteredChildren(element);
-        for (int i = 0; i < filteredChildren.length; i++) {
-            Object curr = filteredChildren[i];
-            result.add(curr);
-            collectChildren(curr, result);
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/EditorSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/EditorSelectionDialog.java
deleted file mode 100644
index 4218b41..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/EditorSelectionDialog.java
+++ /dev/null
@@ -1,507 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Benjamin Muskalla -	Bug 29633 [EditorMgmt] "Open" menu should
- *     						have Open With-->Other
- *******************************************************************************/
-
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Font;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.FileDialog;
-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.TableItem;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-
-/**
- * This class is used to allow the user to select a dialog from the set of
- * internal and external editors.
- * @since 3.3
- * 
- */
-
-public final class EditorSelectionDialog extends Dialog {
-	private EditorDescriptor selectedEditor;
-
-	private Button externalButton;
-
-	private Table editorTable;
-
-	private Button browseExternalEditorsButton;
-
-	private Button internalButton;
-
-	private Button okButton;
-
-	private static final String STORE_ID_INTERNAL_EXTERNAL = "EditorSelectionDialog.STORE_ID_INTERNAL_EXTERNAL";//$NON-NLS-1$
-
-	private String message = WorkbenchMessages.EditorSelection_chooseAnEditor;
-
-	// collection of IEditorDescriptor
-	private IEditorDescriptor[] externalEditors;
-
-	private IEditorDescriptor[] internalEditors;
-
-	private Image[] externalEditorImages;
-
-	private Image[] internalEditorImages;
-
-	private IEditorDescriptor[] editorsToFilter;
-
-	private DialogListener listener = new DialogListener();
-
-	private static final String[] Executable_Filters;
-
-	private static final int TABLE_WIDTH = 200;
-	static {
-		if (SWT.getPlatform().equals("win32")) {//$NON-NLS-1$
-			Executable_Filters = new String[] { "*.exe", "*.bat", "*.*" };//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		} else {
-			Executable_Filters = new String[] { "*" }; //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Create an instance of this class.
-	 * 
-	 * @param parentShell
-	 *            the parent shell
-	 */
-	public EditorSelectionDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/**
-	 * This method is called if a button has been pressed.
-	 */
-	protected void buttonPressed(int buttonId) {
-		if (buttonId == IDialogConstants.OK_ID) {
-			saveWidgetValues();
-		}
-		super.buttonPressed(buttonId);
-	}
-
-	/**
-	 * Close the window.
-	 */
-	public boolean close() {
-		if (internalEditorImages != null) {
-			for (int i = 0; i < internalEditorImages.length; i++) {
-				internalEditorImages[i].dispose();
-			}
-			internalEditorImages = null;
-		}
-		if (externalEditorImages != null) {
-			for (int i = 0; i < externalEditorImages.length; i++) {
-				externalEditorImages[i].dispose();
-			}
-			externalEditorImages = null;
-		}
-		return super.close();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in Window.
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-		shell.setText(WorkbenchMessages.EditorSelection_title);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.EDITOR_SELECTION_DIALOG);
-	}
-
-	/**
-	 * Creates and returns the contents of the upper part of the dialog (above
-	 * the button bar).
-	 * 
-	 * Subclasses should overide.
-	 * 
-	 * @param parent
-	 *            the parent composite to contain the dialog area
-	 * @return the dialog area control
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Font font = parent.getFont();
-		// create main group
-		Composite contents = (Composite) super.createDialogArea(parent);
-		((GridLayout) contents.getLayout()).numColumns = 2;
-
-		// begin the layout
-		Label textLabel = new Label(contents, SWT.NONE);
-		textLabel.setText(message);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		textLabel.setLayoutData(data);
-		textLabel.setFont(font);
-
-		internalButton = new Button(contents, SWT.RADIO | SWT.LEFT);
-		internalButton.setText(WorkbenchMessages.EditorSelection_internal);
-		internalButton.addListener(SWT.Selection, listener);
-		data = new GridData();
-		data.horizontalSpan = 1;
-		internalButton.setLayoutData(data);
-		internalButton.setFont(font);
-
-		externalButton = new Button(contents, SWT.RADIO | SWT.LEFT);
-		externalButton.setText(WorkbenchMessages.EditorSelection_external);
-		externalButton.addListener(SWT.Selection, listener);
-		data = new GridData();
-		data.horizontalSpan = 1;
-		externalButton.setLayoutData(data);
-		externalButton.setFont(font);
-
-		editorTable = new Table(contents, SWT.SINGLE | SWT.BORDER);
-		editorTable.addListener(SWT.Selection, listener);
-		editorTable.addListener(SWT.DefaultSelection, listener);
-		editorTable.addListener(SWT.MouseDoubleClick, listener);
-		data = new GridData();
-		data.widthHint = convertHorizontalDLUsToPixels(TABLE_WIDTH);
-		data.horizontalAlignment = GridData.FILL;
-		data.grabExcessHorizontalSpace = true;
-		data.verticalAlignment = GridData.FILL;
-		data.grabExcessVerticalSpace = true;
-		data.horizontalSpan = 2;
-		editorTable.setLayoutData(data);
-		editorTable.setFont(font);
-		data.heightHint = editorTable.getItemHeight() * 12;
-
-		browseExternalEditorsButton = new Button(contents, SWT.PUSH);
-		browseExternalEditorsButton
-				.setText(WorkbenchMessages.EditorSelection_browse);
-		browseExternalEditorsButton.addListener(SWT.Selection, listener);
-		data = new GridData();
-		int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		data.widthHint = Math.max(widthHint, browseExternalEditorsButton
-				.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
-		browseExternalEditorsButton.setLayoutData(data);
-		browseExternalEditorsButton.setFont(font);
-
-		restoreWidgetValues(); // Place buttons to the appropriate state
-
-		fillEditorTable();
-
-		updateEnableState();
-
-		return contents;
-	}
-
-	protected void fillEditorTable() {
-		editorTable.removeAll();
-		editorTable.update();
-		IEditorDescriptor[] editors;
-		Image[] images;
-		if (internalButton.getSelection()) {
-			editors = getInternalEditors();
-			images = internalEditorImages;
-		} else {
-			editors = getExternalEditors();
-			images = externalEditorImages;
-		}
-
-		// 1FWHIEX: ITPUI:WINNT - Need to call setRedraw
-		editorTable.setRedraw(false);
-		for (int i = 0; i < editors.length; i++) {
-			TableItem item = new TableItem(editorTable, SWT.NULL);
-			item.setData(editors[i]);
-			item.setText(editors[i].getLabel());
-			item.setImage(images[i]);
-		}
-		editorTable.setRedraw(true);
-	}
-
-	/**
-	 * Return the dialog store to cache values into
-	 */
-
-	protected IDialogSettings getDialogSettings() {
-		IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-				.getDialogSettings();
-		IDialogSettings section = workbenchSettings
-				.getSection("EditorSelectionDialog");//$NON-NLS-1$
-		if (section == null) {
-			section = workbenchSettings.addNewSection("EditorSelectionDialog");//$NON-NLS-1$
-		}
-		return section;
-	}
-
-	/**
-	 * Get a list of registered programs from the OS
-	 */
-	protected IEditorDescriptor[] getExternalEditors() {
-		if (externalEditors == null) {
-			// Since this can take a while, show the busy
-			// cursor. If the dialog is not yet visible,
-			// then use the parent shell.
-			Control shell = getShell();
-			if (!shell.isVisible()) {
-				Control topShell = shell.getParent();
-				if (topShell != null) {
-					shell = topShell;
-				}
-			}
-			Cursor busy = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
-			shell.setCursor(busy);
-			// Get the external editors available
-			EditorRegistry reg = (EditorRegistry) WorkbenchPlugin.getDefault()
-					.getEditorRegistry();
-			externalEditors = reg.getSortedEditorsFromOS();
-			externalEditors = filterEditors(externalEditors);
-			externalEditorImages = getImages(externalEditors);
-			// Clean up
-			shell.setCursor(null);
-			busy.dispose();
-		}
-		return externalEditors;
-	}
-
-	/**
-	 * Returns an array of editors which have been filtered according to the
-	 * array of editors in the editorsToFilter instance variable.
-	 * 
-	 * @param editors
-	 *            an array of editors to filter
-	 * @return a filtered array of editors
-	 */
-	protected IEditorDescriptor[] filterEditors(IEditorDescriptor[] editors) {
-		if ((editors == null) || (editors.length < 1)) {
-			return editors;
-		}
-
-		if ((editorsToFilter == null) || (editorsToFilter.length < 1)) {
-			return editors;
-		}
-
-		ArrayList filteredList = new ArrayList();
-		for (int i = 0; i < editors.length; i++) {
-			boolean add = true;
-			for (int j = 0; j < editorsToFilter.length; j++) {
-				if (editors[i].getId().equals(editorsToFilter[j].getId())) {
-					add = false;
-				}
-			}
-			if (add) {
-				filteredList.add(editors[i]);
-			}
-		}
-
-		return (IEditorDescriptor[]) filteredList
-				.toArray(new IEditorDescriptor[filteredList.size()]);
-	}
-
-	/**
-	 * Returns an array of images for the given array of editors
-	 */
-	protected Image[] getImages(IEditorDescriptor[] editors) {
-		Image[] images = new Image[editors.length];
-		for (int i = 0; i < editors.length; i++) {
-			images[i] = editors[i].getImageDescriptor().createImage();
-		}
-		return images;
-	}
-
-	/**
-	 * Returns the internal editors
-	 */
-	protected IEditorDescriptor[] getInternalEditors() {
-		if (internalEditors == null) {
-			EditorRegistry reg = (EditorRegistry) WorkbenchPlugin.getDefault()
-					.getEditorRegistry();
-			internalEditors = reg.getSortedEditorsFromPlugins();
-			internalEditors = filterEditors(internalEditors);
-			internalEditorImages = getImages(internalEditors);
-		}
-		return internalEditors;
-	}
-
-	/**
-	 * Return the editor the user selected
-	 * 
-	 * @return the selected editor
-	 */
-	public IEditorDescriptor getSelectedEditor() {
-		return selectedEditor;
-	}
-
-	protected void promptForExternalEditor() {
-		FileDialog dialog = new FileDialog(getShell(), SWT.OPEN
-				| SWT.PRIMARY_MODAL);
-		dialog.setFilterExtensions(Executable_Filters);
-		String result = dialog.open();
-		if (result != null) {
-			EditorDescriptor editor = EditorDescriptor.createForProgram(result);
-			// pretend we had obtained it from the list of os registered editors
-			TableItem ti = new TableItem(editorTable, SWT.NULL);
-			ti.setData(editor);
-			ti.setText(editor.getLabel());
-			Image image = editor.getImageDescriptor().createImage();
-			ti.setImage(image);
-
-			// need to pass an array to setSelection -- 1FSKYVO: SWT:ALL -
-			// inconsistent setSelection api on Table
-			editorTable.setSelection(new TableItem[] { ti });
-			editorTable.showSelection();
-			editorTable.setFocus();
-			selectedEditor = editor;
-
-			/*
-			 * add to our collection of cached external editors in case the user
-			 * flips back and forth between internal/external
-			 */
-			IEditorDescriptor[] newEditors = new IEditorDescriptor[externalEditors.length + 1];
-			System.arraycopy(externalEditors, 0, newEditors, 0,
-					externalEditors.length);
-			newEditors[newEditors.length - 1] = editor;
-			externalEditors = newEditors;
-
-			Image[] newImages = new Image[externalEditorImages.length + 1];
-			System.arraycopy(externalEditorImages, 0, newImages, 0,
-					externalEditorImages.length);
-			newImages[newImages.length - 1] = image;
-			externalEditorImages = newImages;
-		}
-	}
-
-	/**
-	 * Handle a double click event on the list
-	 */
-	protected void handleDoubleClickEvent() {
-		buttonPressed(IDialogConstants.OK_ID);
-	}
-
-	/**
-	 * Use the dialog store to restore widget values to the values that they
-	 * held last time this wizard was used to completion
-	 */
-	protected void restoreWidgetValues() {
-		IDialogSettings settings = getDialogSettings();
-		boolean wasExternal = settings.getBoolean(STORE_ID_INTERNAL_EXTERNAL);
-		internalButton.setSelection(!wasExternal);
-		externalButton.setSelection(wasExternal);
-	}
-
-	/**
-	 * Since Finish was pressed, write widget values to the dialog store so that
-	 * they will persist into the next invocation of this wizard page
-	 */
-	protected void saveWidgetValues() {
-		IDialogSettings settings = getDialogSettings();
-		// record whether use was viewing internal or external editors
-		settings
-				.put(STORE_ID_INTERNAL_EXTERNAL, !internalButton.getSelection());
-	}
-
-	/**
-	 * Set the message displayed by this message dialog
-	 * 
-	 * @param aMessage
-	 *            the message
-	 */
-	public void setMessage(String aMessage) {
-		message = aMessage;
-	}
-
-	/**
-	 * Set the editors which will not appear in the dialog.
-	 * 
-	 * @param editors
-	 *            an array of editors
-	 */
-	public void setEditorsToFilter(IEditorDescriptor[] editors) {
-		editorsToFilter = editors;
-	}
-
-	/**
-	 * Update enabled state.
-	 */
-	protected void updateEnableState() {
-		boolean enableExternal = externalButton.getSelection();
-		browseExternalEditorsButton.setEnabled(enableExternal);
-		updateOkButton();
-	}
-
-	protected void createButtonsForButtonBar(Composite parent) {
-		okButton = createButton(parent, IDialogConstants.OK_ID,
-				IDialogConstants.OK_LABEL, true);
-		createButton(parent, IDialogConstants.CANCEL_ID,
-				IDialogConstants.CANCEL_LABEL, false);
-		// initially there is no selection so OK button should not be enabled
-		okButton.setEnabled(false);
-
-	}
-
-	/**
-	 * Update the button enablement state.
-	 */
-	protected void updateOkButton() {
-		// Buttons are null during dialog creation
-		if (okButton == null) {
-			return;
-		}
-		// If there is no selection, do not enable OK button
-		if (editorTable.getSelectionCount() == 0) {
-			okButton.setEnabled(false);
-			return;
-		}
-		// At this point, there is a selection
-		okButton.setEnabled(selectedEditor != null);
-	}
-
-	private class DialogListener implements Listener {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-		 */
-		public void handleEvent(Event event) {
-			if (event.type == SWT.MouseDoubleClick) {
-				handleDoubleClickEvent();
-				return;
-			}
-			if (event.widget == externalButton) {
-				fillEditorTable();
-			} else if (event.widget == browseExternalEditorsButton) {
-				promptForExternalEditor();
-			} else if (event.widget == editorTable) {
-				if (editorTable.getSelectionIndex() != -1) {
-					selectedEditor = (EditorDescriptor) editorTable
-							.getSelection()[0].getData();
-				} else {
-					selectedEditor = null;
-					okButton.setEnabled(false);
-				}
-			}
-			updateEnableState();
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementListSelectionDialog.java
deleted file mode 100644
index b22221e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementListSelectionDialog.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.Arrays;
-
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * A class to select elements out of a list of elements.
- * 
- * @since 2.0
- */
-public class ElementListSelectionDialog extends
-        AbstractElementListSelectionDialog {
-
-    private Object[] fElements;
-
-    /**
-     * Creates a list selection dialog.
-     * @param parent   the parent widget.
-     * @param renderer the label renderer.
-     */
-    public ElementListSelectionDialog(Shell parent, ILabelProvider renderer) {
-        super(parent, renderer);
-    }
-
-    /**
-     * Sets the elements of the list.
-     * @param elements the elements of the list.
-     */
-    public void setElements(Object[] elements) {
-        fElements = elements;
-    }
-
-    /*
-     * @see SelectionStatusDialog#computeResult()
-     */
-    protected void computeResult() {
-        setResult(Arrays.asList(getSelectedElements()));
-    }
-
-    /*
-     * @see Dialog#createDialogArea(Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite contents = (Composite) super.createDialogArea(parent);
-
-        createMessageArea(contents);
-        createFilterText(contents);
-        createFilteredList(contents);
-
-        setListElements(fElements);
-
-        setSelection(getInitialElementSelections().toArray());
-
-        return contents;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java
deleted file mode 100644
index b4d9115..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ElementTreeSelectionDialog.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   IBM Corporation - initial API and implementation 
- *   Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog
- *     font should be activated and used by other components.
- *   Carsten Pfeiffer <carsten.pfeiffer@gebit.de> - Fix for bug 182354 - 
- *     [Dialogs] API - make ElementTreeSelectionDialog usable with a 
- *     FilteredTree
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-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.Tree;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A class to select elements out of a tree structure.
- * 
- * @since 2.0
- */
-public class ElementTreeSelectionDialog extends SelectionStatusDialog {
-
-    private TreeViewer fViewer;
-
-    private ILabelProvider fLabelProvider;
-
-    private ITreeContentProvider fContentProvider;
-
-    private ISelectionStatusValidator fValidator = null;
-
-    private ViewerComparator fComparator;
-
-    private boolean fAllowMultiple = true;
-
-    private boolean fDoubleClickSelects = true;
-
-    private String fEmptyListMessage = WorkbenchMessages.ElementTreeSelectionDialog_nothing_available;
-
-    private IStatus fCurrStatus = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-            IStatus.OK, "", null); //$NON-NLS-1$
-
-    private List fFilters;
-
-    private Object fInput;
-
-    private boolean fIsEmpty;
-
-    private int fWidth = 60;
-
-    private int fHeight = 18;
-
-    /**
-     * Constructs an instance of <code>ElementTreeSelectionDialog</code>.
-     * @param parent The parent shell for the dialog
-     * @param labelProvider   the label provider to render the entries
-     * @param contentProvider the content provider to evaluate the tree structure
-     */
-    public ElementTreeSelectionDialog(Shell parent,
-            ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
-        super(parent);
-
-        fLabelProvider = labelProvider;
-        fContentProvider = contentProvider;
-
-        setResult(new ArrayList(0));
-        setStatusLineAboveButtons(true);
-    }
-
-    /**
-     * Sets the initial selection.
-     * Convenience method.
-     * @param selection the initial selection.
-     */
-    public void setInitialSelection(Object selection) {
-        setInitialSelections(new Object[] { selection });
-    }
-
-    /**
-     * Sets the message to be displayed if the list is empty.
-     * @param message the message to be displayed.
-     */
-    public void setEmptyListMessage(String message) {
-        fEmptyListMessage = message;
-    }
-
-    /**
-     * Specifies if multiple selection is allowed.
-     * @param allowMultiple
-     */
-    public void setAllowMultiple(boolean allowMultiple) {
-        fAllowMultiple = allowMultiple;
-    }
-
-    /**
-     * Specifies if default selected events (double click) are created.
-     * @param doubleClickSelects
-     */
-    public void setDoubleClickSelects(boolean doubleClickSelects) {
-        fDoubleClickSelects = doubleClickSelects;
-    }
-
-    /**
-     * Sets the sorter used by the tree viewer.
-     * @param sorter
-     * @deprecated as of 3.3, use {@link ElementTreeSelectionDialog#setComparator(ViewerComparator)} instead
-     */
-    public void setSorter(ViewerSorter sorter) {
-        fComparator = sorter;
-    }
-    
-    /**
-     * Sets the comparator used by the tree viewer.
-     * @param comparator
-     * @since 3.3
-     */
-    public void setComparator(ViewerComparator comparator){
-    	fComparator = comparator;
-    }
-
-    /**
-     * Adds a filter to the tree viewer.
-     * @param filter a filter.
-     */
-    public void addFilter(ViewerFilter filter) {
-        if (fFilters == null) {
-			fFilters = new ArrayList(4);
-		}
-
-        fFilters.add(filter);
-    }
-
-    /**
-     * Sets an optional validator to check if the selection is valid.
-     * The validator is invoked whenever the selection changes.
-     * @param validator the validator to validate the selection.
-     */
-    public void setValidator(ISelectionStatusValidator validator) {
-        fValidator = validator;
-    }
-
-    /**
-     * Sets the tree input.
-     * @param input the tree input.
-     */
-    public void setInput(Object input) {
-        fInput = input;
-    }
-
-    /**
-     * Sets the size of the tree in unit of characters.
-     * @param width  the width of the tree.
-     * @param height the height of the tree.
-     */
-    public void setSize(int width, int height) {
-        fWidth = width;
-        fHeight = height;
-    }
-
-    /**
-     * Validate the receiver and update the ok status.
-     *
-     */
-    protected void updateOKStatus() {
-        if (!fIsEmpty) {
-            if (fValidator != null) {
-                fCurrStatus = fValidator.validate(getResult());
-                updateStatus(fCurrStatus);
-            } else {
-                fCurrStatus = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-                        IStatus.OK, "", //$NON-NLS-1$
-                        null);
-            }
-        } else {
-            fCurrStatus = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-                    IStatus.ERROR, fEmptyListMessage, null);
-        }
-        updateStatus(fCurrStatus);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#open()
-     */
-    public int open() {
-        fIsEmpty = evaluateIfTreeEmpty(fInput);
-        super.open();
-        return getReturnCode();
-    }
-
-    private void access$superCreate() {
-        super.create();
-    }
-
-    /**
-     * Handles cancel button pressed event.
-     */
-    protected void cancelPressed() {
-        setResult(null);
-        super.cancelPressed();
-    }
-
-    /*
-     * @see SelectionStatusDialog#computeResult()
-     */
-    protected void computeResult() {
-        setResult(((IStructuredSelection) fViewer.getSelection()).toList());
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#create()
-     */
-    public void create() {
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-                access$superCreate();
-                fViewer.setSelection(new StructuredSelection(
-                        getInitialElementSelections()), true);
-                updateOKStatus();
-            }
-        });
-    }
-
-    /*
-     * @see Dialog#createDialogArea(Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite composite = (Composite) super.createDialogArea(parent);
-
-        Label messageLabel = createMessageArea(composite);
-        TreeViewer treeViewer = createTreeViewer(composite);
-
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.widthHint = convertWidthInCharsToPixels(fWidth);
-        data.heightHint = convertHeightInCharsToPixels(fHeight);
-
-        Tree treeWidget = treeViewer.getTree();
-        treeWidget.setLayoutData(data);
-        treeWidget.setFont(parent.getFont());
-
-        if (fIsEmpty) {
-            messageLabel.setEnabled(false);
-            treeWidget.setEnabled(false);
-        }
-
-        return composite;
-    }
-
-    /**
-     * Creates and initializes the tree viewer.
-     *
-     * @param parent the parent composite
-     * @return the tree viewer
-     * @see #doCreateTreeViewer(Composite, int)
-     */
-    protected TreeViewer createTreeViewer(Composite parent) {
-        int style = SWT.BORDER | (fAllowMultiple ? SWT.MULTI : SWT.SINGLE);
-
-        fViewer = doCreateTreeViewer(parent, style);
-        fViewer.setContentProvider(fContentProvider);
-        fViewer.setLabelProvider(fLabelProvider);
-        fViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-            public void selectionChanged(SelectionChangedEvent event) {
-                access$setResult(((IStructuredSelection) event.getSelection())
-                        .toList());
-                updateOKStatus();
-            }
-        });
-
-        fViewer.setComparator(fComparator);
-        if (fFilters != null) {
-            for (int i = 0; i != fFilters.size(); i++) {
-				fViewer.addFilter((ViewerFilter) fFilters.get(i));
-			}
-        }
-
-        if (fDoubleClickSelects) {
-            Tree tree = fViewer.getTree();
-            tree.addSelectionListener(new SelectionAdapter() {
-                public void widgetDefaultSelected(SelectionEvent e) {
-                    updateOKStatus();
-                    if (fCurrStatus.isOK()) {
-						access$superButtonPressed(IDialogConstants.OK_ID);
-					}
-                }
-            });
-        }
-        fViewer.addDoubleClickListener(new IDoubleClickListener() {
-            public void doubleClick(DoubleClickEvent event) {
-                updateOKStatus();
-
-                //If it is not OK or if double click does not
-                //select then expand
-                if (!(fDoubleClickSelects && fCurrStatus.isOK())) {
-                    ISelection selection = event.getSelection();
-                    if (selection instanceof IStructuredSelection) {
-                        Object item = ((IStructuredSelection) selection)
-                                .getFirstElement();
-                        if (fViewer.getExpandedState(item)) {
-							fViewer.collapseToLevel(item, 1);
-						} else {
-							fViewer.expandToLevel(item, 1);
-						}
-                    }
-                }
-            }
-        });
-
-        fViewer.setInput(fInput);
-
-        return fViewer;
-    }
-
-    /**
-     * Creates the tree viewer.
-     *
-     * @param parent the parent composite
-     * @param style the {@link SWT} style bits
-     * @return the tree viewer
-     * @since 3.4
-	 */
-	protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
-		return new TreeViewer(new Tree(parent, style));
-	}
-
-	/**
-     * Returns the tree viewer.
-     *
-     * @return the tree viewer
-     */
-    protected TreeViewer getTreeViewer() {
-        return fViewer;
-    }
-
-    private boolean evaluateIfTreeEmpty(Object input) {
-        Object[] elements = fContentProvider.getElements(input);
-        if (elements.length > 0) {
-            if (fFilters != null) {
-                for (int i = 0; i < fFilters.size(); i++) {
-                    ViewerFilter curr = (ViewerFilter) fFilters.get(i);
-                    elements = curr.filter(fViewer, input, elements);
-                }
-            }
-        }
-        return elements.length == 0;
-    }
-
-    /**
-     * Set the result using the super class implementation of
-     * buttonPressed.
-     * @param id
-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-     */
-    protected void access$superButtonPressed(int id) {
-        super.buttonPressed(id);
-    }
-
-    /**
-     * Set the result using the super class implementation of
-     * setResult.
-     * @param result
-     * @see SelectionStatusDialog#setResult(int, Object)
-     */
-    protected void access$setResult(List result) {
-        super.setResult(result);
-    }
-
-    /**
-     * @see org.eclipse.jface.window.Window#handleShellCloseEvent()
-     */
-    protected void handleShellCloseEvent() {
-        super.handleShellCloseEvent();
-
-        //Handle the closing of the shell by selecting the close icon
-        if (getReturnCode() == CANCEL) {
-			setResult(null);
-		}
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java
deleted file mode 100644
index 0b7eee5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingContentProvider.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IFileEditorMapping;
-
-/**
- * A content provider for displaying of <code>IFileEditorMapping</code>
- * objects in viewers.
- * <p>
- * This class has a singleton instance, 
- * <code>FileEditorMappingContentProvider.INSTANCE</code>,
- * which can be used any place this kind of content provider is needed.
- * </p>
- *
- * @see org.eclipse.jface.viewers.IContentProvider
- */
-public class FileEditorMappingContentProvider implements
-        IStructuredContentProvider {
-
-    /**
-     * Singleton instance accessor.
-     */
-    public final static FileEditorMappingContentProvider INSTANCE = new FileEditorMappingContentProvider();
-
-    /**
-     * Creates an instance of this class.  The private visibility of this
-     * constructor ensures that this class is only usable as a singleton.
-     */
-    private FileEditorMappingContentProvider() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContentProvider.
-     */
-    public void dispose() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStructuredContentProvider.
-     */
-    public Object[] getElements(Object element) {
-        IFileEditorMapping[] array = (IFileEditorMapping[]) element;
-        return array == null ? new Object[0] : array;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContentProvider.
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java
deleted file mode 100644
index c92b0d9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileEditorMappingLabelProvider.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.osgi.util.TextProcessor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IFileEditorMapping;
-
-/**
- * A label provider for displaying of <code>IFileEditorMapping</code>
- * objects in viewers.
- * <p>
- * This class has a singleton instance, 
- * <code>FileEditorMappingLabelProvider.INSTANCE</code>,
- * which can be used any place this kind of label provider is needed.
- * </p>
- * <p>
- * The singleton instance hangs on to images, which get freed up when 
- * <code>dispose</code> is called.
- * </p>
- *
- * @see org.eclipse.jface.viewers.ILabelProvider
- */
-public class FileEditorMappingLabelProvider extends LabelProvider implements
-        ITableLabelProvider {
-
-    /**
-     * Singleton instance accessor.
-     */
-    public final static FileEditorMappingLabelProvider INSTANCE = new FileEditorMappingLabelProvider();
-
-    /**
-     * Images that will require disposal.
-     */
-    private List imagesToDispose = new ArrayList();
-
-    /**
-     * Creates an instance of this class.  The private visibility of this
-     * constructor ensures that this class is only usable as a singleton.
-     */
-    private FileEditorMappingLabelProvider() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ILabelProvider.
-     */
-    public void dispose() {
-        super.dispose();
-        for (Iterator e = imagesToDispose.iterator(); e.hasNext();) {
-            ((Image) e.next()).dispose();
-        }
-        imagesToDispose.clear();
-    }
-
-    /**
-     * The <code>ResourceTypeEditorMappingLabelProvider</code> implementation of this
-     * <code>ITableLabelProvider</code> method creates and returns an new image. The 
-     * image is remembered internally and will be deallocated by
-     * <code>dispose</code>.
-     */
-    public Image getColumnImage(Object element, int row) {
-        return getImage(element);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ITableLabelProvider.
-     */
-    public String getColumnText(Object element, int row) {
-        return getText(element);
-    }
-
-    /**
-     * The <code>ResourceTypeEditorMappingLabelProvider</code> implementation of this
-     * <code>ILabelProvider</code> method creates and returns an new image. The image
-     * is remembered internally and will be deallocated by <code>dispose</code>.
-     */
-    public Image getImage(Object element) {
-        if (element instanceof IFileEditorMapping) {
-            Image image = ((IFileEditorMapping) element).getImageDescriptor()
-                    .createImage();
-            imagesToDispose.add(image);
-            return image;
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ILabelProvider.
-     */
-    public String getText(Object element) {
-        if (element instanceof IFileEditorMapping) {
-			return TextProcessor.process(((IFileEditorMapping) element)
-					.getLabel(), "*."); //$NON-NLS-1$
-		}
-
-		return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileSystemElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileSystemElement.java
deleted file mode 100644
index bb3e78c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FileSystemElement.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * Instances of this class represent files or file-like entities (eg.- zip file
- * entries) on the local file system. They do not represent resources within the
- * workbench. This distinction is made because the representation of a file
- * system resource is significantly different from that of a workbench resource.
- * 
- * If self represents a collection (eg.- file system directory, zip directory)
- * then its icon will be the folderIcon static field. Otherwise (ie.- self
- * represents a file system file) self's icon is stored in field "icon", and is
- * determined by the extension of the file that self represents.
- * 
- * This class is adaptable, and implements one adapter itself, namely the
- * IWorkbenchAdapter adapter used for navigation and display in the workbench.
- */
-public class FileSystemElement implements IAdaptable {
-    private String name;
-
-    private Object fileSystemObject;
-
-    /*
-     * Wait until a child is added to initialize the receiver's lists. Doing so
-     * minimizes the amount of memory that is allocated when a large directory
-     * structure is being processed.
-     */
-    private AdaptableList folders = null;
-
-    private AdaptableList files = null;
-
-    private boolean isDirectory = false;
-
-    private FileSystemElement parent;
-
-    private IWorkbenchAdapter workbenchAdapter = new IWorkbenchAdapter() {
-        /**
-         * Answer the children property of this element
-         */
-        public Object[] getChildren(Object o) {
-            return getFolders().getChildren(o);
-        }
-
-        /**
-         * Returns the parent of this element
-         */
-        public Object getParent(Object o) {
-            return parent;
-        }
-
-        /**
-         * Returns an appropriate label for this file system element.
-         */
-        public String getLabel(Object o) {
-            return name;
-        }
-
-        /**
-         * Returns an image descriptor for this file system element
-         */
-        public ImageDescriptor getImageDescriptor(Object object) {
-            if (isDirectory()) {
-                return WorkbenchImages
-                        .getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
-            } else {
-                return WorkbenchPlugin.getDefault().getEditorRegistry()
-                        .getImageDescriptor(name);
-				//TODO: what are the implications for content types?  Should I guess?
-            }
-        }
-    };
-
-    /**
-     * Creates a new <code>FileSystemElement</code> and initializes it and its
-     * parent if applicable.
-     * 
-     * @param name
-     *            The name of the element
-     * @param parent
-     *            The parent element. May be <code>null</code>
-     * @param isDirectory
-     *            if <code>true</code> this is representing a directory,
-     *            otherwise it is a file.
-     */
-    public FileSystemElement(String name, FileSystemElement parent,
-            boolean isDirectory) {
-        this.name = name;
-        this.parent = parent;
-        this.isDirectory = isDirectory;
-        if (parent != null) {
-			parent.addChild(this);
-		}
-    }
-
-    /**
-     * Adds the passed child to this object's collection of children.
-     * 
-     * @param child
-     *            FileSystemElement
-     */
-    public void addChild(FileSystemElement child) {
-        if (child.isDirectory()) {
-            if (folders == null) {
-				folders = new AdaptableList(1);
-			}
-            folders.add(child);
-        } else {
-            if (files == null) {
-				files = new AdaptableList(1);
-			}
-            files.add(child);
-        }
-    }
-
-    /**
-     * Returns the adapter
-     */
-    public Object getAdapter(Class adapter) {
-        if (adapter == IWorkbenchAdapter.class) {
-            return workbenchAdapter;
-        }
-        //defer to the platform
-        return Platform.getAdapterManager().getAdapter(this, adapter);
-    }
-
-    /**
-     * Returns the extension of this element's filename.
-     * 
-     * @return The extension or an empty string if there is no extension.
-     */
-    public String getFileNameExtension() {
-        int lastDot = name.lastIndexOf('.');
-        return lastDot < 0 ? "" : name.substring(lastDot + 1); //$NON-NLS-1$
-    }
-
-    /**
-     * Answer the files property of this element. Answer an empty list if the
-     * files property is null. This method should not be used to add children to
-     * the receiver. Use addChild(FileSystemElement) instead.
-     * 
-     * @return AdaptableList The list of files parented by the receiver.
-     */
-    public AdaptableList getFiles() {
-        if (files == null) {
-            // lazily initialize (can't share result since it's modifiable)
-            files = new AdaptableList(0);
-        }
-        return files;
-    }
-
-    /**
-     * Returns the file system object property of this element
-     * 
-     * @return the file system object
-     */
-    public Object getFileSystemObject() {
-        return fileSystemObject;
-    }
-
-    /**
-     * Returns a list of the folders that are immediate children of this folder.
-     * Answer an empty list if the folders property is null. This method should
-     * not be used to add children to the receiver. Use
-     * addChild(FileSystemElement) instead.
-     * 
-     * @return AdapatableList The list of folders parented by the receiver.
-     */
-    public AdaptableList getFolders() {
-        if (folders == null) {
-            // lazily initialize (can't share result since it's modifiable)
-            folders = new AdaptableList(0);
-        }
-        return folders;
-    }
-
-    /**
-     * Return the parent of this element.
-     * 
-     * @return the parent file system element, or <code>null</code> if this is
-     *         the root
-     */
-    public FileSystemElement getParent() {
-        return this.parent;
-    }
-
-    /**
-     * @return boolean <code>true</code> if this element represents a
-     *         directory, and <code>false</code> otherwise.
-     */
-    public boolean isDirectory() {
-        return isDirectory;
-    }
-
-    /**
-     * Removes a sub-folder from this file system element.
-     * @param child The child to remove.
-     */
-    public void removeFolder(FileSystemElement child) {
-        if (folders == null) {
-			return;
-		}
-        folders.remove(child);
-        child.setParent(null);
-    }
-
-    /**
-     * Set the file system object property of this element
-     * 
-     * @param value
-     *            the file system object
-     */
-    public void setFileSystemObject(Object value) {
-        fileSystemObject = value;
-    }
-
-    /**
-     * Sets the parent of this file system element.
-     * @param element The new parent.
-     */
-    public void setParent(FileSystemElement element) {
-        parent = element;
-    }
-
-    /**
-     * For debugging purposes only.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        if (isDirectory()) {
-            buf.append("Folder(");//$NON-NLS-1$
-        } else {
-            buf.append("File(");//$NON-NLS-1$
-        }
-        buf.append(name).append(")");//$NON-NLS-1$
-        if (!isDirectory()) {
-            return buf.toString();
-        }
-        buf.append(" folders: ");//$NON-NLS-1$
-        buf.append(folders);
-        buf.append(" files: ");//$NON-NLS-1$
-        buf.append(files);
-        return buf.toString();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java
deleted file mode 100644
index f1a9b79..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.java
+++ /dev/null
@@ -1,3350 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *  IBM Corporation - initial API and implementation 
- *  Willian Mitsuda <wmitsuda@gmail.com> 
- *     - Fix for bug 196553 - [Dialogs] Support IColorProvider/IFontProvider in FilteredItemsSelectionDialog
- *  Peter Friese <peter.friese@gentleware.com>
- *     - Fix for bug 208602 - [Dialogs] Open Type dialog needs accessible labels 
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.ProgressMonitorWrapper;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.LegacyActionTools;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.ContentViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ILazyContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.StyledCellLabelProvider;
-import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerCell;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-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.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.ActiveShellExpression;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.progress.UIJob;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Shows a list of items to the user with a text entry field for a string
- * pattern used to filter the list of items.
- * 
- * @since 3.3
- */
-public abstract class FilteredItemsSelectionDialog extends
-		SelectionStatusDialog {
-
-	private static final String DIALOG_BOUNDS_SETTINGS = "DialogBoundsSettings"; //$NON-NLS-1$
-
-	private static final String SHOW_STATUS_LINE = "ShowStatusLine"; //$NON-NLS-1$
-
-	private static final String HISTORY_SETTINGS = "History"; //$NON-NLS-1$
-
-	private static final String DIALOG_HEIGHT = "DIALOG_HEIGHT"; //$NON-NLS-1$
-
-	private static final String DIALOG_WIDTH = "DIALOG_WIDTH"; //$NON-NLS-1$
-
-	/**
-	 * Represents an empty selection in the pattern input field (used only for
-	 * initial pattern).
-	 */
-	public static final int NONE = 0;
-
-	/**
-	 * Pattern input field selection where caret is at the beginning (used only
-	 * for initial pattern).
-	 */
-	public static final int CARET_BEGINNING = 1;
-
-	/**
-	 * Represents a full selection in the pattern input field (used only for
-	 * initial pattern).
-	 */
-	public static final int FULL_SELECTION = 2;
-
-	private Text pattern;
-
-	private TableViewer list;
-
-	private DetailsContentViewer details;
-
-	/**
-	 * It is a duplicate of a field in the CLabel class in DetailsContentViewer.
-	 * It is maintained, because the <code>setDetailsLabelProvider()</code>
-	 * could be called before content area is created.
-	 */
-	private ILabelProvider detailsLabelProvider;
-
-	private ItemsListLabelProvider itemsListLabelProvider;
-
-	private MenuManager menuManager;
-
-	private boolean multi;
-
-	private ToolBar toolBar;
-
-	private ToolItem toolItem;
-
-	private Label progressLabel;
-
-	private ToggleStatusLineAction toggleStatusLineAction;
-
-	private RemoveHistoryItemAction removeHistoryItemAction;
-
-	private ActionContributionItem removeHistoryActionContributionItem;
-
-	private IStatus status;
-
-	private RefreshCacheJob refreshCacheJob;
-
-	private RefreshProgressMessageJob refreshProgressMessageJob = new RefreshProgressMessageJob();
-
-	private Object[] currentSelection;
-
-	private ContentProvider contentProvider;
-
-	private FilterHistoryJob filterHistoryJob;
-
-	private FilterJob filterJob;
-
-	private ItemsFilter filter;
-
-	private List lastCompletedResult;
-
-	private ItemsFilter lastCompletedFilter;
-
-	private String initialPatternText;
-
-	private int selectionMode;
-
-	private ItemsListSeparator itemsListSeparator;
-
-	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
-	private boolean refreshWithLastSelection = false;
-
-	private IHandlerActivation showViewHandler;
-
-	/**
-	 * Creates a new instance of the class.
-	 * 
-	 * @param shell
-	 *            shell to parent the dialog on
-	 * @param multi
-	 *            indicates whether dialog allows to select more than one
-	 *            position in its list of items
-	 */
-	public FilteredItemsSelectionDialog(Shell shell, boolean multi) {
-		super(shell);
-		this.multi = multi;
-		filterHistoryJob = new FilterHistoryJob();
-		filterJob = new FilterJob();
-		contentProvider = new ContentProvider();
-		refreshCacheJob = new RefreshCacheJob();
-		itemsListSeparator = new ItemsListSeparator(
-				WorkbenchMessages.FilteredItemsSelectionDialog_separatorLabel);
-		selectionMode = NONE;
-	}
-
-	/**
-	 * Creates a new instance of the class. Created dialog won't allow to select
-	 * more than one item.
-	 * 
-	 * @param shell
-	 *            shell to parent the dialog on
-	 */
-	public FilteredItemsSelectionDialog(Shell shell) {
-		this(shell, false);
-	}
-
-	/**
-	 * Adds viewer filter to the dialog items list.
-	 * 
-	 * @param filter
-	 *            the new filter
-	 */
-	protected void addListFilter(ViewerFilter filter) {
-		contentProvider.addFilter(filter);
-	}
-
-	/**
-	 * Sets a new label provider for items in the list. If the label provider
-	 * also implements {@link
-	 * org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider
-	 * .IStyledLabelProvider}, the style text labels provided by it will be used
-	 * provided that the corresponding preference is set.
-	 * 
-	 * @see IWorkbenchPreferenceConstants#USE_COLORED_LABELS
-	 * 
-	 * @param listLabelProvider
-	 * 		the label provider for items in the list
-	 */
-	public void setListLabelProvider(ILabelProvider listLabelProvider) {
-		getItemsListLabelProvider().setProvider(listLabelProvider);
-	}
-
-	/**
-	 * Returns the label decorator for selected items in the list.
-	 * 
-	 * @return the label decorator for selected items in the list
-	 */
-	private ILabelDecorator getListSelectionLabelDecorator() {
-		return getItemsListLabelProvider().getSelectionDecorator();
-	}
-
-	/**
-	 * Sets the label decorator for selected items in the list.
-	 * 
-	 * @param listSelectionLabelDecorator
-	 *            the label decorator for selected items in the list
-	 */
-	public void setListSelectionLabelDecorator(
-			ILabelDecorator listSelectionLabelDecorator) {
-		getItemsListLabelProvider().setSelectionDecorator(
-				listSelectionLabelDecorator);
-	}
-
-	/**
-	 * Returns the item list label provider.
-	 * 
-	 * @return the item list label provider
-	 */
-	private ItemsListLabelProvider getItemsListLabelProvider() {
-		if (itemsListLabelProvider == null) {
-			itemsListLabelProvider = new ItemsListLabelProvider(
-					new LabelProvider(), null);
-		}
-		return itemsListLabelProvider;
-	}
-
-	/**
-	 * Sets label provider for the details field.
-	 * 
-	 * For a single selection, the element sent to
-	 * {@link ILabelProvider#getImage(Object)} and
-	 * {@link ILabelProvider#getText(Object)} is the selected object, for
-	 * multiple selection a {@link String} with amount of selected items is the
-	 * element.
-	 * 
-	 * @see #getSelectedItems() getSelectedItems() can be used to retrieve
-	 *      selected items and get the items count.
-	 * 
-	 * @param detailsLabelProvider
-	 *            the label provider for the details field
-	 */
-	public void setDetailsLabelProvider(ILabelProvider detailsLabelProvider) {
-		this.detailsLabelProvider = detailsLabelProvider;
-		if (details != null) {
-			details.setLabelProvider(detailsLabelProvider);
-		}
-	}
-
-	private ILabelProvider getDetailsLabelProvider() {
-		if (detailsLabelProvider == null) {
-			detailsLabelProvider = new LabelProvider();
-		}
-		return detailsLabelProvider;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#create()
-	 */
-	public void create() {
-		super.create();
-		pattern.setFocus();
-	}
-
-	/**
-	 * Restores dialog using persisted settings. The default implementation
-	 * restores the status of the details line and the selection history.
-	 * 
-	 * @param settings
-	 *            settings used to restore dialog
-	 */
-	protected void restoreDialog(IDialogSettings settings) {
-		boolean toggleStatusLine = true;
-
-		if (settings.get(SHOW_STATUS_LINE) != null) {
-			toggleStatusLine = settings.getBoolean(SHOW_STATUS_LINE);
-		}
-
-		toggleStatusLineAction.setChecked(toggleStatusLine);
-
-		details.setVisible(toggleStatusLine);
-
-		String setting = settings.get(HISTORY_SETTINGS);
-		if (setting != null) {
-			try {
-				IMemento memento = XMLMemento.createReadRoot(new StringReader(
-						setting));
-				this.contentProvider.loadHistory(memento);
-			} catch (WorkbenchException e) {
-				// Simply don't restore the settings
-				StatusManager
-						.getManager()
-						.handle(
-								new Status(
-										IStatus.ERROR,
-										PlatformUI.PLUGIN_ID,
-										IStatus.ERROR,
-										WorkbenchMessages.FilteredItemsSelectionDialog_restoreError,
-										e));
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		this.filterJob.cancel();
-		this.refreshCacheJob.cancel();
-		this.refreshProgressMessageJob.cancel();
-		if (showViewHandler != null) {
-			IHandlerService service = (IHandlerService) PlatformUI
-					.getWorkbench().getService(IHandlerService.class);
-			service.deactivateHandler(showViewHandler);
-			showViewHandler.getHandler().dispose();
-			showViewHandler = null;
-		}
-		storeDialog(getDialogSettings());
-		return super.close();
-	}
-
-	/**
-	 * Stores dialog settings.
-	 * 
-	 * @param settings
-	 *            settings used to store dialog
-	 */
-	protected void storeDialog(IDialogSettings settings) {
-		settings.put(SHOW_STATUS_LINE, toggleStatusLineAction.isChecked());
-
-		XMLMemento memento = XMLMemento.createWriteRoot(HISTORY_SETTINGS);
-		this.contentProvider.saveHistory(memento);
-		StringWriter writer = new StringWriter();
-		try {
-			memento.save(writer);
-			settings.put(HISTORY_SETTINGS, writer.getBuffer().toString());
-		} catch (IOException e) {
-			// Simply don't store the settings
-			StatusManager
-					.getManager()
-					.handle(
-							new Status(
-									IStatus.ERROR,
-									PlatformUI.PLUGIN_ID,
-									IStatus.ERROR,
-									WorkbenchMessages.FilteredItemsSelectionDialog_storeError,
-									e));
-		}
-	}
-
-	/**
-	 * Create a new header which is labelled by headerLabel.
-	 * 
-	 * @param parent
-	 * @return Label the label of the header
-	 */
-	private Label createHeader(Composite parent) {
-		Composite header = new Composite(parent, SWT.NONE);
-
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		header.setLayout(layout);
-
-		Label headerLabel = new Label(header, SWT.NONE);
-		headerLabel.setText((getMessage() != null && getMessage().trim()
-				.length() > 0) ? getMessage()
-				: WorkbenchMessages.FilteredItemsSelectionDialog_patternLabel);
-		headerLabel.addTraverseListener(new TraverseListener() {
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_MNEMONIC && e.doit) {
-					e.detail = SWT.TRAVERSE_NONE;
-					pattern.setFocus();
-				}
-			}
-		});
-
-		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-		headerLabel.setLayoutData(gd);
-
-		createViewMenu(header);
-		header.setLayoutData(gd);
-		return headerLabel;
-	}
-
-	/**
-	 * Create the labels for the list and the progress. Return the list label.
-	 * 
-	 * @param parent
-	 * @return Label
-	 */
-	private Label createLabels(Composite parent) {
-		Composite labels = new Composite(parent, SWT.NONE);
-
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		labels.setLayout(layout);
-
-		Label listLabel = new Label(labels, SWT.NONE);
-		listLabel
-				.setText(WorkbenchMessages.FilteredItemsSelectionDialog_listLabel);
-
-		listLabel.addTraverseListener(new TraverseListener() {
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_MNEMONIC && e.doit) {
-					e.detail = SWT.TRAVERSE_NONE;
-					list.getTable().setFocus();
-				}
-			}
-		});
-
-		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-		listLabel.setLayoutData(gd);
-
-		progressLabel = new Label(labels, SWT.RIGHT);
-		progressLabel.setLayoutData(gd);
-
-		labels.setLayoutData(gd);
-		return listLabel;
-	}
-
-	private void createViewMenu(Composite parent) {
-		toolBar = new ToolBar(parent, SWT.FLAT);
-		toolItem = new ToolItem(toolBar, SWT.PUSH, 0);
-
-		GridData data = new GridData();
-		data.horizontalAlignment = GridData.END;
-		toolBar.setLayoutData(data);
-
-		toolBar.addMouseListener(new MouseAdapter() {
-			public void mouseDown(MouseEvent e) {
-				showViewMenu();
-			}
-		});
-
-		toolItem.setImage(WorkbenchImages
-				.getImage(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU));
-		toolItem
-				.setToolTipText(WorkbenchMessages.FilteredItemsSelectionDialog_menu);
-		toolItem.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				showViewMenu();
-			}
-		});
-
-		menuManager = new MenuManager();
-
-		fillViewMenu(menuManager);
-
-		IHandlerService service = (IHandlerService) PlatformUI.getWorkbench()
-				.getService(IHandlerService.class);
-		IHandler handler = new AbstractHandler() {
-			public Object execute(ExecutionEvent event) {
-				showViewMenu();
-				return null;
-			}
-		};
-		showViewHandler = service.activateHandler(
-				"org.eclipse.ui.window.showViewMenu", handler, //$NON-NLS-1$
-				new ActiveShellExpression(getShell()));
-	}
-
-	/**
-	 * Fills the menu of the dialog.
-	 * 
-	 * @param menuManager
-	 *            the menu manager
-	 */
-	protected void fillViewMenu(IMenuManager menuManager) {
-		toggleStatusLineAction = new ToggleStatusLineAction();
-		menuManager.add(toggleStatusLineAction);
-	}
-
-	private void showViewMenu() {
-		Menu menu = menuManager.createContextMenu(getShell());
-		Rectangle bounds = toolItem.getBounds();
-		Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
-		topLeft = toolBar.toDisplay(topLeft);
-		menu.setLocation(topLeft.x, topLeft.y);
-		menu.setVisible(true);
-	}
-
-	private void createPopupMenu() {
-		removeHistoryItemAction = new RemoveHistoryItemAction();
-		removeHistoryActionContributionItem = new ActionContributionItem(
-				removeHistoryItemAction);
-
-		MenuManager manager = new MenuManager();
-		manager.add(removeHistoryActionContributionItem);
-		manager.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager manager) {
-				List selectedElements = ((StructuredSelection) list
-						.getSelection()).toList();
-
-				Object item = null;
-
-				manager.remove(removeHistoryActionContributionItem);
-
-				for (Iterator it = selectedElements.iterator(); it.hasNext();) {
-					item = it.next();
-					if (item instanceof ItemsListSeparator
-							|| !isHistoryElement(item)) {
-						return;
-					}
-				}
-
-				if (selectedElements.size() > 0) {
-					removeHistoryItemAction
-							.setText(WorkbenchMessages.FilteredItemsSelectionDialog_removeItemsFromHistoryAction);
-
-					manager.add(removeHistoryActionContributionItem);
-
-				}
-			}
-		});
-
-		Menu menu = manager.createContextMenu(getShell());
-		list.getTable().setMenu(menu);
-	}
-
-	/**
-	 * Creates an extra content area, which will be located above the details.
-	 * 
-	 * @param parent
-	 *            parent to create the dialog widgets in
-	 * @return an extra content area
-	 */
-	protected abstract Control createExtendedContentArea(Composite parent);
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite dialogArea = (Composite) super.createDialogArea(parent);
-
-		Composite content = new Composite(dialogArea, SWT.NONE);
-		GridData gd = new GridData(GridData.FILL_BOTH);
-		content.setLayoutData(gd);
-
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 1;
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		content.setLayout(layout);
-
-		final Label headerLabel = createHeader(content);
-
-		pattern = new Text(content, SWT.SINGLE | SWT.BORDER);
-		pattern.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-			public void getName(AccessibleEvent e) {
-				e.result = LegacyActionTools.removeMnemonics(headerLabel
-						.getText());
-			}
-		});
-		gd = new GridData(GridData.FILL_HORIZONTAL);
-		pattern.setLayoutData(gd);
-
-		final Label listLabel = createLabels(content);
-
-		list = new TableViewer(content, (multi ? SWT.MULTI : SWT.SINGLE)
-				| SWT.BORDER | SWT.V_SCROLL | SWT.VIRTUAL);
-		list.getTable().getAccessible().addAccessibleListener(
-				new AccessibleAdapter() {
-					public void getName(AccessibleEvent e) {
-						e.result = LegacyActionTools.removeMnemonics(listLabel
-								.getText());
-					}
-				});
-		list.setContentProvider(contentProvider);
-		list.setLabelProvider(getItemsListLabelProvider());
-		list.setInput(new Object[0]);
-		list.setItemCount(contentProvider.getNumberOfElements());
-		gd = new GridData(GridData.FILL_BOTH);
-		list.getTable().setLayoutData(gd);
-
-		createPopupMenu();
-
-		pattern.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				applyFilter();
-			}
-		});
-
-		pattern.addKeyListener(new KeyAdapter() {
-			public void keyPressed(KeyEvent e) {
-				if (e.keyCode == SWT.ARROW_DOWN) {
-					if (list.getTable().getItemCount() > 0) {
-						list.getTable().setFocus();
-					}
-				}
-			}
-		});
-
-		list.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				StructuredSelection selection = (StructuredSelection) event
-						.getSelection();
-				handleSelected(selection);
-			}
-		});
-
-		list.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				handleDoubleClick();
-			}
-		});
-
-		list.getTable().addKeyListener(new KeyAdapter() {
-			public void keyPressed(KeyEvent e) {
-
-				if (e.keyCode == SWT.DEL) {
-
-					List selectedElements = ((StructuredSelection) list
-							.getSelection()).toList();
-
-					Object item = null;
-					boolean isSelectedHistory = true;
-
-					for (Iterator it = selectedElements.iterator(); it
-							.hasNext();) {
-						item = it.next();
-						if (item instanceof ItemsListSeparator
-								|| !isHistoryElement(item)) {
-							isSelectedHistory = false;
-							break;
-						}
-					}
-					if (isSelectedHistory)
-						removeSelectedItems(selectedElements);
-
-				}
-
-				if (e.keyCode == SWT.ARROW_UP && (e.stateMask & SWT.SHIFT) != 0
-						&& (e.stateMask & SWT.CTRL) != 0) {
-					StructuredSelection selection = (StructuredSelection) list
-							.getSelection();
-
-					if (selection.size() == 1) {
-						Object element = selection.getFirstElement();
-						if (element.equals(list.getElementAt(0))) {
-							pattern.setFocus();
-						}
-						if (list.getElementAt(list.getTable()
-								.getSelectionIndex() - 1) instanceof ItemsListSeparator)
-							list.getTable().setSelection(
-									list.getTable().getSelectionIndex() - 1);
-						list.getTable().notifyListeners(SWT.Selection,
-								new Event());
-
-					}
-				}
-
-				if (e.keyCode == SWT.ARROW_DOWN
-						&& (e.stateMask & SWT.SHIFT) != 0
-						&& (e.stateMask & SWT.CTRL) != 0) {
-
-					if (list
-							.getElementAt(list.getTable().getSelectionIndex() + 1) instanceof ItemsListSeparator)
-						list.getTable().setSelection(
-								list.getTable().getSelectionIndex() + 1);
-					list.getTable().notifyListeners(SWT.Selection, new Event());
-				}
-
-			}
-		});
-
-		createExtendedContentArea(content);
-
-		details = new DetailsContentViewer(content, SWT.BORDER | SWT.FLAT);
-		details.setVisible(toggleStatusLineAction.isChecked());
-		details.setContentProvider(new NullContentProvider());
-		details.setLabelProvider(getDetailsLabelProvider());
-
-		applyDialogFont(content);
-
-		restoreDialog(getDialogSettings());
-
-		if (initialPatternText != null) {
-			pattern.setText(initialPatternText);
-		}
-
-		switch (selectionMode) {
-		case CARET_BEGINNING:
-			pattern.setSelection(0, 0);
-			break;
-		case FULL_SELECTION:
-			pattern.setSelection(0, initialPatternText.length());
-			break;
-		}
-
-		// apply filter even if pattern is empty (display history)
-		applyFilter();
-
-		return dialogArea;
-	}
-
-	/**
-	 * This method is a hook for subclasses to override default dialog behavior.
-	 * The <code>handleDoubleClick()</code> method handles double clicks on
-	 * the list of filtered elements.
-	 * <p>
-	 * Current implementation makes double-clicking on the list do the same as
-	 * pressing <code>OK</code> button on the dialog.
-	 */
-	protected void handleDoubleClick() {
-		okPressed();
-	}
-
-	/**
-	 * Refreshes the details field according to the current selection in the
-	 * items list.
-	 */
-	private void refreshDetails() {
-		StructuredSelection selection = getSelectedItems();
-
-		switch (selection.size()) {
-		case 0:
-			details.setInput(null);
-			break;
-		case 1:
-			details.setInput(selection.getFirstElement());
-			break;
-		default:
-			details
-					.setInput(NLS
-							.bind(
-									WorkbenchMessages.FilteredItemsSelectionDialog_nItemsSelected,
-									new Integer(selection.size())));
-			break;
-		}
-
-	}
-
-	/**
-	 * Handle selection in the items list by updating labels of selected and
-	 * unselected items and refresh the details field using the selection.
-	 * 
-	 * @param selection
-	 *            the new selection
-	 */
-	protected void handleSelected(StructuredSelection selection) {
-		IStatus status = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-				IStatus.OK, EMPTY_STRING, null);
-
-		Object[] lastSelection = currentSelection;
-
-		currentSelection = selection.toArray();
-
-		if (selection.size() == 0) {
-			status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-					IStatus.ERROR, EMPTY_STRING, null);
-
-			if (lastSelection != null
-					&& getListSelectionLabelDecorator() != null) {
-				list.update(lastSelection, null);
-			}
-
-			currentSelection = null;
-
-		} else {
-			status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
-					IStatus.ERROR, EMPTY_STRING, null);
-
-			List items = selection.toList();
-
-			Object item = null;
-			IStatus tempStatus = null;
-
-			for (Iterator it = items.iterator(); it.hasNext();) {
-				Object o = it.next();
-
-				if (o instanceof ItemsListSeparator) {
-					continue;
-				}
-
-				item = o;
-				tempStatus = validateItem(item);
-
-				if (tempStatus.isOK()) {
-					status = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
-							IStatus.OK, EMPTY_STRING, null);
-				} else {
-					status = tempStatus;
-					// if any selected element is not valid status is set to
-					// ERROR
-					break;
-				}
-			}
-
-			if (lastSelection != null
-					&& getListSelectionLabelDecorator() != null) {
-				list.update(lastSelection, null);
-			}
-
-			if (getListSelectionLabelDecorator() != null) {
-				list.update(currentSelection, null);
-			}
-		}
-
-		refreshDetails();
-		updateStatus(status);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Dialog#getDialogBoundsSettings()
-	 */
-	protected IDialogSettings getDialogBoundsSettings() {
-		IDialogSettings settings = getDialogSettings();
-		IDialogSettings section = settings.getSection(DIALOG_BOUNDS_SETTINGS);
-		if (section == null) {
-			section = settings.addNewSection(DIALOG_BOUNDS_SETTINGS);
-			section.put(DIALOG_HEIGHT, 500);
-			section.put(DIALOG_WIDTH, 600);
-		}
-		return section;
-	}
-
-	/**
-	 * Returns the dialog settings. Returned object can't be null.
-	 * 
-	 * @return return dialog settings for this dialog
-	 */
-	protected abstract IDialogSettings getDialogSettings();
-
-	/**
-	 * Refreshes the dialog - has to be called in UI thread.
-	 */
-	public void refresh() {
-		if (list != null && !list.getTable().isDisposed()) {
-
-			List lastRefreshSelection = ((StructuredSelection) list
-					.getSelection()).toList();
-			list.getTable().deselectAll();
-
-			list.setItemCount(contentProvider.getNumberOfElements());
-			list.refresh();
-
-			if (list.getTable().getItemCount() > 0) {
-				// preserve previous selection
-				if (refreshWithLastSelection && lastRefreshSelection != null
-						&& lastRefreshSelection.size() > 0) {
-					list.setSelection(new StructuredSelection(
-							lastRefreshSelection));
-				} else {
-					refreshWithLastSelection = true;
-					list.getTable().setSelection(0);
-					list.getTable().notifyListeners(SWT.Selection, new Event());
-				}
-			} else {
-				list.setSelection(StructuredSelection.EMPTY);
-			}
-
-		}
-
-		scheduleProgressMessageRefresh();
-	}
-
-	/**
-	 * Updates the progress label.
-	 * 
-	 * @deprecated
-	 */
-	public void updateProgressLabel() {
-		scheduleProgressMessageRefresh();
-	}
-
-	/**
-	 * Notifies the content provider - fires filtering of content provider
-	 * elements. During the filtering, a separator between history and workspace
-	 * matches is added.
-	 * <p>
-	 * This is a long running operation and should be called in a job.
-	 * 
-	 * @param checkDuplicates
-	 *            <code>true</code> if data concerning elements duplication
-	 *            should be computed - it takes much more time than the standard
-	 *            filtering
-	 * @param monitor
-	 *            a progress monitor or <code>null</code> if no monitor is
-	 *            available
-	 */
-	public void reloadCache(boolean checkDuplicates, IProgressMonitor monitor) {
-		if (list != null && !list.getTable().isDisposed()
-				&& contentProvider != null) {
-			contentProvider.reloadCache(checkDuplicates, monitor);
-		}
-	}
-
-	/**
-	 * Schedule refresh job.
-	 */
-	public void scheduleRefresh() {
-		refreshCacheJob.cancelAll();
-		refreshCacheJob.schedule();
-	}
-
-	/**
-	 * Schedules progress message refresh.
-	 */
-	public void scheduleProgressMessageRefresh() {
-		if (filterJob.getState() != Job.RUNNING
-				&& refreshProgressMessageJob.getState() != Job.RUNNING)
-			refreshProgressMessageJob.scheduleProgressRefresh(null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.dialogs.SelectionStatusDialog#computeResult()
-	 */
-	protected void computeResult() {
-
-		List selectedElements = ((StructuredSelection) list.getSelection())
-				.toList();
-
-		List objectsToReturn = new ArrayList();
-
-		Object item = null;
-
-		for (Iterator it = selectedElements.iterator(); it.hasNext();) {
-			item = it.next();
-
-			if (!(item instanceof ItemsListSeparator)) {
-				accessedHistoryItem(item);
-				objectsToReturn.add(item);
-			}
-		}
-
-		setResult(objectsToReturn);
-	}
-
-	/*
-	 * @see org.eclipse.ui.dialogs.SelectionStatusDialog#updateStatus(org.eclipse.core.runtime.IStatus)
-	 */
-	protected void updateStatus(IStatus status) {
-		this.status = status;
-		super.updateStatus(status);
-	}
-
-	/*
-	 * @see Dialog#okPressed()
-	 */
-	protected void okPressed() {
-		if (status != null
-				&& (status.isOK() || status.getCode() == IStatus.INFO)) {
-			super.okPressed();
-		}
-	}
-
-	/**
-	 * Sets the initial pattern used by the filter. This text is copied into the
-	 * selection input on the dialog. A full selection is used in the pattern
-	 * input field.
-	 * 
-	 * @param text
-	 *            initial pattern for the filter
-	 * @see FilteredItemsSelectionDialog#FULL_SELECTION
-	 */
-	public void setInitialPattern(String text) {
-		setInitialPattern(text, FULL_SELECTION);
-	}
-
-	/**
-	 * Sets the initial pattern used by the filter. This text is copied into the
-	 * selection input on the dialog. The <code>selectionMode</code> is used
-	 * to choose selection type for the input field.
-	 * 
-	 * @param text
-	 *            initial pattern for the filter
-	 * @param selectionMode
-	 *            one of: {@link FilteredItemsSelectionDialog#NONE},
-	 *            {@link FilteredItemsSelectionDialog#CARET_BEGINNING},
-	 *            {@link FilteredItemsSelectionDialog#FULL_SELECTION}
-	 */
-	public void setInitialPattern(String text, int selectionMode) {
-		this.initialPatternText = text;
-		this.selectionMode = selectionMode;
-	}
-
-	/**
-	 * Gets initial pattern.
-	 * 
-	 * @return initial pattern, or <code>null</code> if initial pattern is not
-	 *         set
-	 */
-	protected String getInitialPattern() {
-		return this.initialPatternText;
-	}
-
-	/**
-	 * Returns the current selection.
-	 * 
-	 * @return the current selection
-	 */
-	protected StructuredSelection getSelectedItems() {
-
-		StructuredSelection selection = (StructuredSelection) list
-				.getSelection();
-
-		List selectedItems = selection.toList();
-		Object itemToRemove = null;
-
-		for (Iterator it = selection.iterator(); it.hasNext();) {
-			Object item = it.next();
-			if (item instanceof ItemsListSeparator) {
-				itemToRemove = item;
-				break;
-			}
-		}
-
-		if (itemToRemove == null)
-			return new StructuredSelection(selectedItems);
-		// Create a new selection without the collision
-		List newItems = new ArrayList(selectedItems);
-		newItems.remove(itemToRemove);
-		return new StructuredSelection(newItems);
-
-	}
-
-	/**
-	 * Validates the item. When items on the items list are selected or
-	 * deselected, it validates each item in the selection and the dialog status
-	 * depends on all validations.
-	 * 
-	 * @param item
-	 *            an item to be checked
-	 * @return status of the dialog to be set
-	 */
-	protected abstract IStatus validateItem(Object item);
-
-	/**
-	 * Creates an instance of a filter.
-	 * 
-	 * @return a filter for items on the items list. Can be <code>null</code>,
-	 *         no filtering will be applied then, causing no item to be shown in
-	 *         the list.
-	 */
-	protected abstract ItemsFilter createFilter();
-
-	/**
-	 * Applies the filter created by <code>createFilter()</code> method to the
-	 * items list. When new filter is different than previous one it will cause
-	 * refiltering.
-	 */
-	protected void applyFilter() {
-
-		ItemsFilter newFilter = createFilter();
-
-		// don't apply filtering for patterns which mean the same, for example:
-		// *a**b and ***a*b
-		if (filter != null && filter.equalsFilter(newFilter)) {
-			return;
-		}
-
-		filterHistoryJob.cancel();
-		filterJob.cancel();
-
-		this.filter = newFilter;
-
-		if (this.filter != null) {
-			filterHistoryJob.schedule();
-		}
-	}
-
-	/**
-	 * Returns comparator to sort items inside content provider. Returned object
-	 * will be probably created as an anonymous class. Parameters passed to the
-	 * <code>compare(java.lang.Object, java.lang.Object)</code> are going to
-	 * be the same type as the one used in the content provider.
-	 * 
-	 * @return comparator to sort items content provider
-	 */
-	protected abstract Comparator getItemsComparator();
-
-	/**
-	 * Fills the content provider with matching items.
-	 * 
-	 * @param contentProvider
-	 *            collector to add items to.
-	 *            {@link FilteredItemsSelectionDialog.AbstractContentProvider#add(Object, FilteredItemsSelectionDialog.ItemsFilter)}
-	 *            only adds items that pass the given <code>itemsFilter</code>.
-	 * @param itemsFilter
-	 *            the items filter
-	 * @param progressMonitor
-	 *            must be used to report search progress. The state of this
-	 *            progress monitor reflects the state of the filtering process.
-	 * @throws CoreException
-	 */
-	protected abstract void fillContentProvider(
-			AbstractContentProvider contentProvider, ItemsFilter itemsFilter,
-			IProgressMonitor progressMonitor) throws CoreException;
-
-	/**
-	 * Removes selected items from history.
-	 * 
-	 * @param items
-	 *            items to be removed
-	 */
-	private void removeSelectedItems(List items) {
-		for (Iterator iter = items.iterator(); iter.hasNext();) {
-			Object item = iter.next();
-			removeHistoryItem(item);
-		}
-		refreshWithLastSelection = false;
-		contentProvider.refresh();
-	}
-
-	/**
-	 * Removes an item from history.
-	 * 
-	 * @param item
-	 *            an item to remove
-	 * @return removed item
-	 */
-	protected Object removeHistoryItem(Object item) {
-		return contentProvider.removeHistoryElement(item);
-	}
-
-	/**
-	 * Adds item to history.
-	 * 
-	 * @param item
-	 *            the item to be added
-	 */
-	protected void accessedHistoryItem(Object item) {
-		contentProvider.addHistoryElement(item);
-	}
-
-	/**
-	 * Returns a history comparator.
-	 * 
-	 * @return decorated comparator
-	 */
-	private Comparator getHistoryComparator() {
-		return new HistoryComparator();
-	}
-
-	/**
-	 * Returns the history of selected elements.
-	 * 
-	 * @return history of selected elements, or <code>null</code> if it is not
-	 *         set
-	 */
-	protected SelectionHistory getSelectionHistory() {
-		return this.contentProvider.getSelectionHistory();
-	}
-
-	/**
-	 * Sets new history.
-	 * 
-	 * @param selectionHistory
-	 *            the history
-	 */
-	protected void setSelectionHistory(SelectionHistory selectionHistory) {
-		if (this.contentProvider != null)
-			this.contentProvider.setSelectionHistory(selectionHistory);
-	}
-
-	/**
-	 * Indicates whether the given item is a history item.
-	 * 
-	 * @param item
-	 *            the item to be investigated
-	 * @return <code>true</code> if the given item exists in history,
-	 *         <code>false</code> otherwise
-	 */
-	public boolean isHistoryElement(Object item) {
-		return this.contentProvider.isHistoryElement(item);
-	}
-
-	/**
-	 * Indicates whether the given item is a duplicate.
-	 * 
-	 * @param item
-	 *            the item to be investigated
-	 * @return <code>true</code> if the item is duplicate, <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isDuplicateElement(Object item) {
-		return this.contentProvider.isDuplicateElement(item);
-	}
-
-	/**
-	 * Sets separator label
-	 * 
-	 * @param separatorLabel
-	 *            the label showed on separator
-	 */
-	public void setSeparatorLabel(String separatorLabel) {
-		this.itemsListSeparator = new ItemsListSeparator(separatorLabel);
-	}
-
-	/**
-	 * Returns name for then given object.
-	 * 
-	 * @param item
-	 *            an object from the content provider. Subclasses should pay
-	 *            attention to the passed argument. They should either only pass
-	 *            objects of a known type (one used in content provider) or make
-	 *            sure that passed parameter is the expected one (by type
-	 *            checking like <code>instanceof</code> inside the method).
-	 * @return name of the given item
-	 */
-	public abstract String getElementName(Object item);
-
-	private class ToggleStatusLineAction extends Action {
-
-		/**
-		 * Creates a new instance of the class.
-		 */
-		public ToggleStatusLineAction() {
-			super(
-					WorkbenchMessages.FilteredItemsSelectionDialog_toggleStatusAction,
-					IAction.AS_CHECK_BOX);
-		}
-
-		public void run() {
-			details.setVisible(isChecked());
-		}
-	}
-
-	/**
-	 * Only refreshes UI on the basis of an already sorted and filtered set of
-	 * items.
-	 * <p>
-	 * Standard invocation scenario:
-	 * <ol>
-	 * <li>filtering job (<code>FilterJob</code> class extending
-	 * <code>Job</code> class)</li>
-	 * <li>cache refresh without checking for duplicates (<code>RefreshCacheJob</code>
-	 * class extending <code>Job</code> class)</li>
-	 * <li>UI refresh (<code>RefreshJob</code> class extending
-	 * <code>UIJob</code> class)</li>
-	 * <li>cache refresh with checking for duplicates (<cod>CacheRefreshJob</code>
-	 * class extending <code>Job</code> class)</li>
-	 * <li>UI refresh (<code>RefreshJob</code> class extending <code>UIJob</code>
-	 * class)</li>
-	 * </ol>
-	 * The scenario is rather complicated, but it had to be applied, because:
-	 * <ul>
-	 * <li> refreshing cache is rather a long action and cannot be run in the UI -
-	 * cannot be run in a UIJob</li>
-	 * <li> refreshing cache checking for duplicates is twice as long as
-	 * refreshing cache without checking for duplicates; results of the search
-	 * could be displayed earlier</li>
-	 * <li> refreshing the UI have to be run in a UIJob</li>
-	 * </ul>
-	 * 
-	 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.FilterJob
-	 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.RefreshJob
-	 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.RefreshCacheJob
-	 */
-	private class RefreshJob extends UIJob {
-
-		/**
-		 * Creates a new instance of the class.
-		 */
-		public RefreshJob() {
-			super(FilteredItemsSelectionDialog.this.getParentShell()
-					.getDisplay(),
-					WorkbenchMessages.FilteredItemsSelectionDialog_refreshJob);
-			setSystem(true);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-		 */
-		public IStatus runInUIThread(IProgressMonitor monitor) {
-			if (monitor.isCanceled())
-				return new Status(IStatus.OK, WorkbenchPlugin.PI_WORKBENCH,
-						IStatus.OK, EMPTY_STRING, null);
-
-			if (FilteredItemsSelectionDialog.this != null) {
-				FilteredItemsSelectionDialog.this.refresh();
-			}
-
-			return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, IStatus.OK,
-					EMPTY_STRING, null);
-		}
-
-	}
-
-	/**
-	 * Refreshes the progress message cyclically with 500 milliseconds delay.
-	 * <code>RefreshProgressMessageJob</code> is strictly connected with
-	 * <code>GranualProgressMonitor</code> and use it to to get progress
-	 * message and to decide about break of cyclical refresh.
-	 */
-	private class RefreshProgressMessageJob extends UIJob {
-
-		private GranualProgressMonitor progressMonitor;
-
-		/**
-		 * Creates a new instance of the class.
-		 */
-		public RefreshProgressMessageJob() {
-			super(
-					FilteredItemsSelectionDialog.this.getParentShell()
-							.getDisplay(),
-					WorkbenchMessages.FilteredItemsSelectionDialog_progressRefreshJob);
-			setSystem(true);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-		 */
-		public IStatus runInUIThread(IProgressMonitor monitor) {
-
-			if (!progressLabel.isDisposed())
-				progressLabel.setText(progressMonitor != null ? progressMonitor
-						.getMessage() : EMPTY_STRING);
-
-			if (progressMonitor == null || progressMonitor.isDone()) {
-				return new Status(IStatus.CANCEL, PlatformUI.PLUGIN_ID,
-						IStatus.CANCEL, EMPTY_STRING, null);
-			}
-
-			// Schedule cyclical with 500 milliseconds delay
-			schedule(500);
-
-			return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, IStatus.OK,
-					EMPTY_STRING, null);
-		}
-
-		/**
-		 * Schedule progress refresh job.
-		 * 
-		 * @param progressMonitor
-		 *            used during refresh progress label
-		 */
-		public void scheduleProgressRefresh(
-				GranualProgressMonitor progressMonitor) {
-			this.progressMonitor = progressMonitor;
-			// Schedule with initial delay to avoid flickering when the user
-			// types quickly
-			schedule(200);
-		}
-
-	}
-
-	/**
-	 * A job responsible for computing filtered items list presented using
-	 * <code>RefreshJob</code>.
-	 * 
-	 * @see FilteredItemsSelectionDialog.RefreshJob
-	 * 
-	 */
-	private class RefreshCacheJob extends Job {
-
-		private RefreshJob refreshJob = new RefreshJob();
-
-		/**
-		 * Creates a new instance of the class.
-		 */
-		public RefreshCacheJob() {
-			super(
-					WorkbenchMessages.FilteredItemsSelectionDialog_cacheRefreshJob);
-			setSystem(true);
-		}
-
-		/**
-		 * Stops the job and all sub-jobs.
-		 */
-		public void cancelAll() {
-			cancel();
-			refreshJob.cancel();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-		 */
-		protected IStatus run(IProgressMonitor monitor) {
-			if (monitor.isCanceled()) {
-				return new Status(IStatus.CANCEL, WorkbenchPlugin.PI_WORKBENCH,
-						IStatus.CANCEL, EMPTY_STRING, null);
-			}
-
-			if (FilteredItemsSelectionDialog.this != null) {
-				GranualProgressMonitor wrappedMonitor = new GranualProgressMonitor(
-						monitor);
-				FilteredItemsSelectionDialog.this.reloadCache(true,
-						wrappedMonitor);
-			}
-
-			if (!monitor.isCanceled()) {
-				refreshJob.schedule();
-			}
-
-			return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, IStatus.OK,
-					EMPTY_STRING, null);
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#canceling()
-		 */
-		protected void canceling() {
-			super.canceling();
-			contentProvider.stopReloadingCache();
-		}
-
-	}
-
-	private class RemoveHistoryItemAction extends Action {
-
-		/**
-		 * Creates a new instance of the class.
-		 */
-		public RemoveHistoryItemAction() {
-			super(
-					WorkbenchMessages.FilteredItemsSelectionDialog_removeItemsFromHistoryAction);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.action.Action#run()
-		 */
-		public void run() {
-			List selectedElements = ((StructuredSelection) list.getSelection())
-					.toList();
-			removeSelectedItems(selectedElements);
-		}
-	}
-
-	private static boolean showColoredLabels() {
-		return PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS);
-	}
-
-	private class ItemsListLabelProvider extends StyledCellLabelProvider
-			implements ILabelProviderListener {
-		private ILabelProvider provider;
-
-		private ILabelDecorator selectionDecorator;
-
-		// Need to keep our own list of listeners
-		private ListenerList listeners = new ListenerList();
-
-		/**
-		 * Creates a new instance of the class.
-		 * 
-		 * @param provider
-		 *            the label provider for all items, not <code>null</code>
-		 * @param selectionDecorator
-		 *            the decorator for selected items, can be <code>null</code>
-		 */
-		public ItemsListLabelProvider(ILabelProvider provider,
-				ILabelDecorator selectionDecorator) {
-			Assert.isNotNull(provider);
-			this.provider = provider;
-			this.selectionDecorator = selectionDecorator;
-
-			setOwnerDrawEnabled(showColoredLabels() && provider instanceof IStyledLabelProvider);
-
-			provider.addListener(this);
-
-			if (selectionDecorator != null) {
-				selectionDecorator.addListener(this);
-			}
-		}
-
-		/**
-		 * Sets new selection decorator.
-		 * 
-		 * @param newSelectionDecorator
-		 *            new label decorator for selected items in the list
-		 */
-		public void setSelectionDecorator(ILabelDecorator newSelectionDecorator) {
-			if (selectionDecorator != null) {
-				selectionDecorator.removeListener(this);
-				selectionDecorator.dispose();
-			}
-
-			selectionDecorator = newSelectionDecorator;
-
-			if (selectionDecorator != null) {
-				selectionDecorator.addListener(this);
-			}
-		}
-
-		/**
-		 * Gets selection decorator.
-		 * 
-		 * @return the label decorator for selected items in the list
-		 */
-		public ILabelDecorator getSelectionDecorator() {
-			return selectionDecorator;
-		}
-
-		/**
-		 * Sets new label provider.
-		 * 
-		 * @param newProvider
-		 *            new label provider for items in the list, not
-		 *            <code>null</code>
-		 */
-		public void setProvider(ILabelProvider newProvider) {
-			Assert.isNotNull(newProvider);
-			provider.removeListener(this);
-			provider.dispose();
-
-			provider = newProvider;
-
-			if (provider != null) {
-				provider.addListener(this);
-			}
-
-			setOwnerDrawEnabled(showColoredLabels() && provider instanceof IStyledLabelProvider);
-		}
-
-		/**
-		 * Gets the label provider.
-		 * 
-		 * @return the label provider for items in the list
-		 */
-		public ILabelProvider getProvider() {
-			return provider;
-		}
-
-		private Image getImage(Object element) {
-			if (element instanceof ItemsListSeparator) {
-				return WorkbenchImages
-						.getImage(IWorkbenchGraphicConstants.IMG_OBJ_SEPARATOR);
-			}
-
-			return provider.getImage(element);
-		}
-
-		private boolean isSelected(Object element) {
-			if (element != null && currentSelection != null) {
-				for (int i = 0; i < currentSelection.length; i++) {
-					if (element.equals(currentSelection[i]))
-						return true;
-				}
-			}
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-		 */
-		private String getText(Object element) {
-			if (element instanceof ItemsListSeparator) {
-				return getSeparatorLabel(((ItemsListSeparator) element)
-						.getName());
-			}
-
-			String str = provider.getText(element);
-			if (selectionDecorator != null && isSelected(element)) {
-				return selectionDecorator.decorateText(str.toString(), element);
-			}
-
-			return str;
-		}
-
-		private StyledString getStyledText(Object element,
-				IStyledLabelProvider provider) {
-			StyledString string = provider.getStyledText(element);
-
-			if (selectionDecorator != null && isSelected(element)) {
-				String decorated = selectionDecorator.decorateText(string
-						.getString(), element);
-				return new StyledString(decorated);
-				// no need to add colors when element is selected
-			}
-			return string;
-		}
-
-		public void update(ViewerCell cell) {
-			Object element = cell.getElement();
-
-			if (!(element instanceof ItemsListSeparator)
-					&& provider instanceof IStyledLabelProvider) {
-				IStyledLabelProvider styledLabelProvider = (IStyledLabelProvider) provider;
-				StyledString styledString = getStyledText(element,
-						styledLabelProvider);
-
-				cell.setText(styledString.getString());
-				cell.setStyleRanges(styledString.getStyleRanges());
-				cell.setImage(styledLabelProvider.getImage(element));
-			} else {
-				cell.setText(getText(element));
-				cell.setImage(getImage(element));
-			}
-			cell.setFont(getFont(element));
-			cell.setForeground(getForeground(element));
-			cell.setBackground(getBackground(element));
-
-			super.update(cell);
-		}
-
-		private String getSeparatorLabel(String separatorLabel) {
-			Rectangle rect = list.getTable().getBounds();
-
-			int borderWidth = list.getTable().computeTrim(0, 0, 0, 0).width;
-
-			int imageWidth = WorkbenchImages.getImage(
-					IWorkbenchGraphicConstants.IMG_OBJ_SEPARATOR).getBounds().width;
-
-			int width = rect.width - borderWidth - imageWidth;
-
-			GC gc = new GC(list.getTable());
-			gc.setFont(list.getTable().getFont());
-
-			int fSeparatorWidth = gc.getAdvanceWidth('-');
-			int fMessageLength = gc.textExtent(separatorLabel).x;
-
-			gc.dispose();
-
-			StringBuffer dashes = new StringBuffer();
-			int chars = (((width - fMessageLength) / fSeparatorWidth) / 2) - 2;
-			for (int i = 0; i < chars; i++) {
-				dashes.append('-');
-			}
-
-			StringBuffer result = new StringBuffer();
-			result.append(dashes);
-			result.append(" " + separatorLabel + " "); //$NON-NLS-1$//$NON-NLS-2$
-			result.append(dashes);
-			return result.toString().trim();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void addListener(ILabelProviderListener listener) {
-			listeners.add(listener);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-		 */
-		public void dispose() {
-			provider.removeListener(this);
-			provider.dispose();
-
-			if (selectionDecorator != null) {
-				selectionDecorator.removeListener(this);
-				selectionDecorator.dispose();
-			}
-
-			super.dispose();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
-		 *      java.lang.String)
-		 */
-		public boolean isLabelProperty(Object element, String property) {
-			if (provider.isLabelProperty(element, property)) {
-				return true;
-			}
-			if (selectionDecorator != null
-					&& selectionDecorator.isLabelProperty(element, property)) {
-				return true;
-			}
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void removeListener(ILabelProviderListener listener) {
-			listeners.remove(listener);
-		}
-
-		private Color getBackground(Object element) {
-			if (element instanceof ItemsListSeparator) {
-				return null;
-			}
-			if (provider instanceof IColorProvider) {
-				return ((IColorProvider) provider).getBackground(element);
-			}
-			return null;
-		}
-
-		private Color getForeground(Object element) {
-			if (element instanceof ItemsListSeparator) {
-				return Display.getCurrent().getSystemColor(
-						SWT.COLOR_WIDGET_NORMAL_SHADOW);
-			}
-			if (provider instanceof IColorProvider) {
-				return ((IColorProvider) provider).getForeground(element);
-			}
-			return null;
-		}
-
-		private Font getFont(Object element) {
-			if (element instanceof ItemsListSeparator) {
-				return null;
-			}
-			if (provider instanceof IFontProvider) {
-				return ((IFontProvider) provider).getFont(element);
-			}
-			return null;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ILabelProviderListener#labelProviderChanged(org.eclipse.jface.viewers.LabelProviderChangedEvent)
-		 */
-		public void labelProviderChanged(LabelProviderChangedEvent event) {
-			Object[] l = listeners.getListeners();
-			for (int i = 0; i < listeners.size(); i++) {
-				((ILabelProviderListener) l[i]).labelProviderChanged(event);
-			}
-		}
-	}
-
-	/**
-	 * Used in ItemsListContentProvider, separates history and non-history
-	 * items.
-	 */
-	private class ItemsListSeparator {
-
-		private String name;
-
-		/**
-		 * Creates a new instance of the class.
-		 * 
-		 * @param name
-		 *            the name of the separator
-		 */
-		public ItemsListSeparator(String name) {
-			this.name = name;
-		}
-
-		/**
-		 * Returns the name of this separator.
-		 * 
-		 * @return the name of the separator
-		 */
-		public String getName() {
-			return name;
-		}
-	}
-
-	/**
-	 * GranualProgressMonitor is used for monitoring progress of filtering
-	 * process. It is used by <code>RefreshProgressMessageJob</code> to
-	 * refresh progress message. State of this monitor illustrates state of
-	 * filtering or cache refreshing process.
-	 * 
-	 */
-	private class GranualProgressMonitor extends ProgressMonitorWrapper {
-
-		private String name;
-
-		private String subName;
-
-		private int totalWork;
-
-		private double worked;
-
-		private boolean done;
-
-		/**
-		 * Creates instance of <code>GranualProgressMonitor</code>.
-		 * 
-		 * @param monitor
-		 *            progress to be wrapped
-		 */
-		public GranualProgressMonitor(IProgressMonitor monitor) {
-			super(monitor);
-		}
-
-		/**
-		 * Checks if filtering has been done
-		 * 
-		 * @return true if filtering work has been done false in other way
-		 */
-		public boolean isDone() {
-			return done;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#setTaskName(java.lang.String)
-		 */
-		public void setTaskName(String name) {
-			super.setTaskName(name);
-			this.name = name;
-			this.subName = null;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#subTask(java.lang.String)
-		 */
-		public void subTask(String name) {
-			super.subTask(name);
-			this.subName = name;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#beginTask(java.lang.String,
-		 *      int)
-		 */
-		public void beginTask(String name, int totalWork) {
-			super.beginTask(name, totalWork);
-			if (this.name == null)
-				this.name = name;
-			this.totalWork = totalWork;
-			refreshProgressMessageJob.scheduleProgressRefresh(this);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#worked(int)
-		 */
-		public void worked(int work) {
-			super.worked(work);
-			internalWorked(work);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#done()
-		 */
-		public void done() {
-			done = true;
-			super.done();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#setCanceled(boolean)
-		 */
-		public void setCanceled(boolean b) {
-			done = b;
-			super.setCanceled(b);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ProgressMonitorWrapper#internalWorked(double)
-		 */
-		public void internalWorked(double work) {
-			worked = worked + work;
-		}
-
-		private String getMessage() {
-			if (done)
-				return ""; //$NON-NLS-1$
-
-			String message;
-
-			if (name == null) {
-				message = subName == null ? "" : subName; //$NON-NLS-1$
-			} else {
-				message = subName == null ? name
-						: NLS
-								.bind(
-										WorkbenchMessages.FilteredItemsSelectionDialog_subtaskProgressMessage,
-										new Object[] { name, subName });
-			}
-			if (totalWork == 0)
-				return message;
-
-			return NLS
-					.bind(
-							WorkbenchMessages.FilteredItemsSelectionDialog_taskProgressMessage,
-							new Object[] {
-									message,
-									new Integer(
-											(int) ((worked * 100) / totalWork)) });
-
-		}
-
-	}
-
-	/**
-	 * Filters items history and schedule filter job.
-	 */
-	private class FilterHistoryJob extends Job {
-
-		/**
-		 * Filter used during the filtering process.
-		 */
-		private ItemsFilter itemsFilter;
-
-		/**
-		 * Creates new instance of receiver.
-		 */
-		public FilterHistoryJob() {
-			super(WorkbenchMessages.FilteredItemsSelectionDialog_jobLabel);
-			setSystem(true);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-		 */
-		protected IStatus run(IProgressMonitor monitor) {
-
-			this.itemsFilter = filter;
-
-			contentProvider.reset();
-
-			refreshWithLastSelection = false;
-
-			contentProvider.addHistoryItems(itemsFilter);
-
-			if (!(lastCompletedFilter != null && lastCompletedFilter
-					.isSubFilter(this.itemsFilter)))
-				contentProvider.refresh();
-
-			filterJob.schedule();
-
-			return Status.OK_STATUS;
-		}
-
-	}
-
-	/**
-	 * Filters items in indicated set and history. During filtering, it
-	 * refreshes the dialog (progress monitor and elements list).
-	 * 
-	 * Depending on the filter, <code>FilterJob</code> decides which kind of
-	 * search will be run inside <code>filterContent</code>. If the last
-	 * filtering is done (last completed filter), is not null, and the new
-	 * filter is a sub-filter ({@link FilteredItemsSelectionDialog.ItemsFilter#isSubFilter(FilteredItemsSelectionDialog.ItemsFilter)})
-	 * of the last, then <code>FilterJob</code> only filters in the cache. If
-	 * it is the first filtering or the new filter isn't a sub-filter of the
-	 * last one, a full search is run.
-	 */
-	private class FilterJob extends Job {
-
-		/**
-		 * Filter used during the filtering process.
-		 */
-		protected ItemsFilter itemsFilter;
-
-		/**
-		 * Creates new instance of FilterJob
-		 */
-		public FilterJob() {
-			super(WorkbenchMessages.FilteredItemsSelectionDialog_jobLabel);
-			setSystem(true);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-		 */
-		protected final IStatus run(IProgressMonitor parent) {
-			GranualProgressMonitor monitor = new GranualProgressMonitor(parent);
-			return doRun(monitor);
-		}
-
-		/**
-		 * Executes job using the given filtering progress monitor. A hook for
-		 * subclasses.
-		 * 
-		 * @param monitor
-		 *            progress monitor
-		 * @return result of the execution
-		 */
-		protected IStatus doRun(GranualProgressMonitor monitor) {
-			try {
-				internalRun(monitor);
-			} catch (CoreException e) {
-				cancel();
-				return new Status(
-						IStatus.ERROR,
-						PlatformUI.PLUGIN_ID,
-						IStatus.ERROR,
-						WorkbenchMessages.FilteredItemsSelectionDialog_jobError,
-						e);
-			}
-			return Status.OK_STATUS;
-		}
-
-		/**
-		 * Main method for the job.
-		 * 
-		 * @param monitor
-		 * @throws CoreException
-		 */
-		private void internalRun(GranualProgressMonitor monitor)
-				throws CoreException {
-			try {
-				if (monitor.isCanceled())
-					return;
-
-				this.itemsFilter = filter;
-
-				if (filter.getPattern().length() != 0) {
-					filterContent(monitor);
-				}
-
-				if (monitor.isCanceled())
-					return;
-
-				contentProvider.refresh();
-			} finally {
-				monitor.done();
-			}
-		}
-
-		/**
-		 * Filters items.
-		 * 
-		 * @param monitor
-		 *            for monitoring progress
-		 * @throws CoreException
-		 */
-		protected void filterContent(GranualProgressMonitor monitor)
-				throws CoreException {
-
-			if (lastCompletedFilter != null
-					&& lastCompletedFilter.isSubFilter(this.itemsFilter)) {
-
-				int length = lastCompletedResult.size() / 500;
-				monitor
-						.beginTask(
-								WorkbenchMessages.FilteredItemsSelectionDialog_cacheSearchJob_taskName,
-								length);
-
-				for (int pos = 0; pos < lastCompletedResult.size(); pos++) {
-
-					Object item = lastCompletedResult.get(pos);
-					if (monitor.isCanceled())
-						break;
-					contentProvider.add(item, itemsFilter);
-
-					if ((pos % 500) == 0) {
-						monitor.worked(1);
-					}
-				}
-
-			} else {
-
-				lastCompletedFilter = null;
-				lastCompletedResult = null;
-
-				SubProgressMonitor subMonitor = null;
-				if (monitor != null) {
-					monitor
-							.beginTask(
-									WorkbenchMessages.FilteredItemsSelectionDialog_searchJob_taskName,
-									100);
-					subMonitor = new SubProgressMonitor(monitor, 95);
-
-				}
-
-				fillContentProvider(contentProvider, itemsFilter, subMonitor);
-
-				if (monitor != null && !monitor.isCanceled()) {
-					monitor.worked(2);
-					contentProvider.rememberResult(itemsFilter);
-					monitor.worked(3);
-				}
-			}
-
-		}
-
-	}
-
-	/**
-	 * History stores a list of key, object pairs. The list is bounded at a
-	 * certain size. If the list exceeds this size the oldest element is removed
-	 * from the list. An element can be added/renewed with a call to
-	 * <code>accessed(Object)</code>.
-	 * <p>
-	 * The history can be stored to/loaded from an XML file.
-	 */
-	protected static abstract class SelectionHistory {
-
-		private static final String DEFAULT_ROOT_NODE_NAME = "historyRootNode"; //$NON-NLS-1$
-
-		private static final String DEFAULT_INFO_NODE_NAME = "infoNode"; //$NON-NLS-1$
-
-		private static final int MAX_HISTORY_SIZE = 60;
-
-		private final List historyList;
-
-		private final String rootNodeName;
-
-		private final String infoNodeName;
-
-		private SelectionHistory(String rootNodeName, String infoNodeName) {
-
-			historyList = Collections.synchronizedList(new LinkedList() {
-
-				private static final long serialVersionUID = 0L;
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see java.util.LinkedList#add(java.lang.Object)
-				 */
-				public boolean add(Object arg0) {
-					if (this.size() >= MAX_HISTORY_SIZE)
-						this.removeFirst();
-					if (!this.contains(arg0))
-						return super.add(arg0);
-					return false;
-				}
-
-			});
-
-			this.rootNodeName = rootNodeName;
-			this.infoNodeName = infoNodeName;
-		}
-
-		/**
-		 * Creates new instance of <code>SelectionHistory</code>.
-		 */
-		public SelectionHistory() {
-			this(DEFAULT_ROOT_NODE_NAME, DEFAULT_INFO_NODE_NAME);
-		}
-
-		/**
-		 * Adds object to history.
-		 * 
-		 * @param object
-		 *            the item to be added to the history
-		 */
-		public synchronized void accessed(Object object) {
-			historyList.add(object);
-		}
-
-		/**
-		 * Returns <code>true</code> if history contains object.
-		 * 
-		 * @param object
-		 *            the item for which check will be executed
-		 * @return <code>true</code> if history contains object
-		 *         <code>false</code> in other way
-		 */
-		public synchronized boolean contains(Object object) {
-			return historyList.contains(object);
-		}
-
-		/**
-		 * Returns <code>true</code> if history is empty.
-		 * 
-		 * @return <code>true</code> if history is empty
-		 */
-		public synchronized boolean isEmpty() {
-			return historyList.isEmpty();
-		}
-
-		/**
-		 * Remove element from history.
-		 * 
-		 * @param element
-		 *            to remove form the history
-		 * @return <code>true</code> if this list contained the specified
-		 *         element
-		 */
-		public synchronized boolean remove(Object element) {
-			return historyList.remove(element);
-		}
-
-		/**
-		 * Load history elements from memento.
-		 * 
-		 * @param memento
-		 *            memento from which the history will be retrieved
-		 */
-		public void load(IMemento memento) {
-
-			XMLMemento historyMemento = (XMLMemento) memento
-					.getChild(rootNodeName);
-
-			if (historyMemento == null) {
-				return;
-			}
-
-			IMemento[] mementoElements = historyMemento
-					.getChildren(infoNodeName);
-			for (int i = 0; i < mementoElements.length; ++i) {
-				IMemento mementoElement = mementoElements[i];
-				Object object = restoreItemFromMemento(mementoElement);
-				if (object != null) {
-					historyList.add(object);
-				}
-			}
-		}
-
-		/**
-		 * Save history elements to memento.
-		 * 
-		 * @param memento
-		 *            memento to which the history will be added
-		 */
-		public void save(IMemento memento) {
-
-			IMemento historyMemento = memento.createChild(rootNodeName);
-
-			Object[] items = getHistoryItems();
-			for (int i = 0; i < items.length; i++) {
-				Object item = items[i];
-				IMemento elementMemento = historyMemento
-						.createChild(infoNodeName);
-				storeItemToMemento(item, elementMemento);
-			}
-
-		}
-
-		/**
-		 * Gets array of history items.
-		 * 
-		 * @return array of history elements
-		 */
-		public synchronized Object[] getHistoryItems() {
-			return historyList.toArray();
-		}
-
-		/**
-		 * Creates an object using given memento.
-		 * 
-		 * @param memento
-		 *            memento used for creating new object
-		 * 
-		 * @return the restored object
-		 */
-		protected abstract Object restoreItemFromMemento(IMemento memento);
-
-		/**
-		 * Store object in <code>IMemento</code>.
-		 * 
-		 * @param item
-		 *            the item to store
-		 * @param memento
-		 *            the memento to store to
-		 */
-		protected abstract void storeItemToMemento(Object item, IMemento memento);
-
-	}
-
-	/**
-	 * Filters elements using SearchPattern by comparing the names of items with
-	 * the filter pattern.
-	 */
-	protected abstract class ItemsFilter {
-
-		protected SearchPattern patternMatcher;
-
-		/**
-		 * Creates new instance of ItemsFilter.
-		 */
-		public ItemsFilter() {
-			this(new SearchPattern());
-		}
-
-		/**
-		 * Creates new instance of ItemsFilter.
-		 * 
-		 * @param searchPattern
-		 *            the pattern to be used when filtering
-		 */
-		public ItemsFilter(SearchPattern searchPattern) {
-			patternMatcher = searchPattern;
-			String stringPattern = ""; //$NON-NLS-1$
-			if (pattern != null && !pattern.getText().equals("*")) { //$NON-NLS-1$
-				stringPattern = pattern.getText();
-			}
-			patternMatcher.setPattern(stringPattern);
-		}
-
-		/**
-		 * Check if the given filter is a sub-filter of this filter. The default
-		 * implementation checks if the <code>SearchPattern</code> from the
-		 * given filter is a sub-pattern of the one from this filter.
-		 * <p>
-		 * <i>WARNING: This method is <b>not</b> defined in reading order, i.e.
-		 * <code>a.isSubFilter(b)</code> is <code>true</code> iff
-		 * <code>b</code> is a sub-filter of <code>a</code>, and not
-		 * vice-versa. </i>
-		 * </p>
-		 * 
-		 * @param filter
-		 *            the filter to be checked, or <code>null</code>
-		 * @return <code>true</code> if the given filter is sub-filter of this
-		 *         filter, <code>false</code> if the given filter isn't a
-		 *         sub-filter or is <code>null</code>
-		 * 
-		 * @see org.eclipse.ui.dialogs.SearchPattern#isSubPattern(org.eclipse.ui.dialogs.SearchPattern)
-		 */
-		public boolean isSubFilter(ItemsFilter filter) {
-			if (filter != null) {
-				return this.patternMatcher.isSubPattern(filter.patternMatcher);
-			}
-			return false;
-		}
-
-		/**
-		 * Checks whether the provided filter is equal to the current filter.
-		 * The default implementation checks if <code>SearchPattern</code>
-		 * from current filter is equal to the one from provided filter.
-		 * 
-		 * @param filter
-		 *            filter to be checked, or <code>null</code>
-		 * @return <code>true</code> if the given filter is equal to current
-		 *         filter, <code>false</code> if given filter isn't equal to
-		 *         current one or if it is <code>null</code>
-		 * 
-		 * @see org.eclipse.ui.dialogs.SearchPattern#equalsPattern(org.eclipse.ui.dialogs.SearchPattern)
-		 */
-		public boolean equalsFilter(ItemsFilter filter) {
-			if (filter != null
-					&& filter.patternMatcher.equalsPattern(this.patternMatcher)) {
-				return true;
-			}
-			return false;
-		}
-
-		/**
-		 * Checks whether the pattern's match rule is camel case.
-		 * 
-		 * @return <code>true</code> if pattern's match rule is camel case,
-		 *         <code>false</code> otherwise
-		 */
-		public boolean isCamelCasePattern() {
-			return patternMatcher.getMatchRule() == SearchPattern.RULE_CAMELCASE_MATCH;
-		}
-
-		/**
-		 * Returns the pattern string.
-		 * 
-		 * @return pattern for this filter
-		 * 
-		 * @see SearchPattern#getPattern()
-		 */
-		public String getPattern() {
-			return patternMatcher.getPattern();
-		}
-
-		/**
-		 * Returns the rule to apply for matching keys.
-		 * 
-		 * @return an implementation-specific match rule
-		 * 
-		 * @see SearchPattern#getMatchRule() for match rules returned by the
-		 *      default implementation
-		 */
-		public int getMatchRule() {
-			return patternMatcher.getMatchRule();
-		}
-
-		/**
-		 * Matches text with filter.
-		 * 
-		 * @param text
-		 * @return <code>true</code> if text matches with filter pattern,
-		 *         <code>false</code> otherwise
-		 */
-		protected boolean matches(String text) {
-			return patternMatcher.matches(text);
-		}
-
-		/**
-		 * General method for matching raw name pattern. Checks whether current
-		 * pattern is prefix of name provided item.
-		 * 
-		 * @param item
-		 *            item to check
-		 * @return <code>true</code> if current pattern is a prefix of name
-		 *         provided item, <code>false</code> if item's name is shorter
-		 *         than prefix or sequences of characters don't match.
-		 */
-		public boolean matchesRawNamePattern(Object item) {
-			String prefix = patternMatcher.getPattern();
-			String text = getElementName(item);
-
-			if (text == null)
-				return false;
-
-			int textLength = text.length();
-			int prefixLength = prefix.length();
-			if (textLength < prefixLength) {
-				return false;
-			}
-			for (int i = prefixLength - 1; i >= 0; i--) {
-				if (Character.toLowerCase(prefix.charAt(i)) != Character
-						.toLowerCase(text.charAt(i)))
-					return false;
-			}
-			return true;
-		}
-
-		/**
-		 * Matches an item against filter conditions.
-		 * 
-		 * @param item
-		 * @return <code>true<code> if item matches against filter conditions, <code>false</code>
-		 *         otherwise
-		 */
-		public abstract boolean matchItem(Object item);
-
-		/**
-		 * Checks consistency of an item. Item is inconsistent if was changed or
-		 * removed.
-		 * 
-		 * @param item
-		 * @return <code>true</code> if item is consistent, <code>false</code>
-		 *         if item is inconsistent
-		 */
-		public abstract boolean isConsistentItem(Object item);
-
-	}
-
-	/**
-	 * An interface to content providers for
-	 * <code>FilterItemsSelectionDialog</code>.
-	 */
-	protected abstract class AbstractContentProvider {
-		/**
-		 * Adds the item to the content provider iff the filter matches the
-		 * item. Otherwise does nothing.
-		 * 
-		 * @param item
-		 *            the item to add
-		 * @param itemsFilter
-		 *            the filter
-		 * 
-		 * @see FilteredItemsSelectionDialog.ItemsFilter#matchItem(Object)
-		 */
-		public abstract void add(Object item, ItemsFilter itemsFilter);
-	}
-
-	/**
-	 * Collects filtered elements. Contains one synchronized, sorted set for
-	 * collecting filtered elements. All collected elements are sorted using
-	 * comparator. Comparator is returned by getElementComparator() method.
-	 * Implementation of <code>ItemsFilter</code> is used to filter elements.
-	 * The key function of filter used in to filtering is
-	 * <code>matchElement(Object item)</code>.
-	 * <p>
-	 * The <code>ContentProvider</code> class also provides item filtering
-	 * methods. The filtering has been moved from the standard TableView
-	 * <code>getFilteredItems()</code> method to content provider, because
-	 * <code>ILazyContentProvider</code> and virtual tables are used. This
-	 * class is responsible for adding a separator below history items and
-	 * marking each items as duplicate if its name repeats more than once on the
-	 * filtered list.
-	 */
-	private class ContentProvider extends AbstractContentProvider implements
-			IStructuredContentProvider, ILazyContentProvider {
-
-		private SelectionHistory selectionHistory;
-
-		/**
-		 * Raw result of the searching (unsorted, unfiltered).
-		 * <p>
-		 * Standard object flow:
-		 * <code>items -> lastSortedItems -> lastFilteredItems</code>
-		 */
-		private Set items;
-
-		/**
-		 * Items that are duplicates.
-		 */
-		private Set duplicates;
-
-		/**
-		 * List of <code>ViewerFilter</code>s to be used during filtering
-		 */
-		private List filters;
-
-		/**
-		 * Result of the last filtering.
-		 * <p>
-		 * Standard object flow:
-		 * <code>items -> lastSortedItems -> lastFilteredItems</code>
-		 */
-		private List lastFilteredItems;
-
-		/**
-		 * Result of the last sorting.
-		 * <p>
-		 * Standard object flow:
-		 * <code>items -> lastSortedItems -> lastFilteredItems</code>
-		 */
-		private List lastSortedItems;
-
-		/**
-		 * Used for <code>getFilteredItems()</code> method canceling (when the
-		 * job that invoked the method was canceled).
-		 * <p>
-		 * Method canceling could be based (only) on monitor canceling
-		 * unfortunately sometimes the method <code>getFilteredElements()</code>
-		 * could be run with a null monitor, the <code>reset</code> flag have
-		 * to be left intact.
-		 */
-		private boolean reset;
-
-		/**
-		 * Creates new instance of <code>ContentProvider</code>.
-		 * 
-		 * @param selectionHistory
-		 */
-		public ContentProvider(SelectionHistory selectionHistory) {
-			this();
-			this.selectionHistory = selectionHistory;
-		}
-
-		/**
-		 * Creates new instance of <code>ContentProvider</code>.
-		 */
-		public ContentProvider() {
-			this.items = Collections.synchronizedSet(new HashSet(2048));
-			this.duplicates = Collections.synchronizedSet(new HashSet(256));
-			this.lastFilteredItems = new ArrayList();
-			this.lastSortedItems = Collections.synchronizedList(new ArrayList(
-					2048));
-		}
-
-		/**
-		 * Sets selection history.
-		 * 
-		 * @param selectionHistory
-		 *            The selectionHistory to set.
-		 */
-		public void setSelectionHistory(SelectionHistory selectionHistory) {
-			this.selectionHistory = selectionHistory;
-		}
-
-		/**
-		 * @return Returns the selectionHistory.
-		 */
-		public SelectionHistory getSelectionHistory() {
-			return selectionHistory;
-		}
-
-		/**
-		 * Removes all content items and resets progress message.
-		 */
-		public void reset() {
-			reset = true;
-			this.items.clear();
-			this.duplicates.clear();
-			this.lastSortedItems.clear();
-		}
-
-		/**
-		 * Stops reloading cache - <code>getFilteredItems()</code> method.
-		 */
-		public void stopReloadingCache() {
-			reset = true;
-		}
-
-		/**
-		 * Adds filtered item.
-		 * 
-		 * @param item
-		 * @param itemsFilter
-		 */
-		public void add(Object item, ItemsFilter itemsFilter) {
-			if (itemsFilter == filter) {
-				if (itemsFilter != null) {
-					if (itemsFilter.matchItem(item)) {
-						this.items.add(item);
-					}
-				} else {
-					this.items.add(item);
-				}
-			}
-		}
-
-		/**
-		 * Add all history items to <code>contentProvider</code>.
-		 * 
-		 * @param itemsFilter
-		 */
-		public void addHistoryItems(ItemsFilter itemsFilter) {
-			if (this.selectionHistory != null) {
-				Object[] items = this.selectionHistory.getHistoryItems();
-				for (int i = 0; i < items.length; i++) {
-					Object item = items[i];
-					if (itemsFilter == filter) {
-						if (itemsFilter != null) {
-							if (itemsFilter.matchItem(item)) {
-								if (itemsFilter.isConsistentItem(item)) {
-									this.items.add(item);
-								} else {
-									this.selectionHistory.remove(item);
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-
-		/**
-		 * Refresh dialog.
-		 */
-		public void refresh() {
-			scheduleRefresh();
-		}
-
-		/**
-		 * Removes items from history and refreshes the view.
-		 * 
-		 * @param item
-		 *            to remove
-		 * 
-		 * @return removed item
-		 */
-		public Object removeHistoryElement(Object item) {
-			if (this.selectionHistory != null)
-				this.selectionHistory.remove(item);
-			if (filter == null || filter.getPattern().length() == 0) {
-				items.remove(item);
-				duplicates.remove(item);
-				this.lastSortedItems.remove(item);
-			}
-
-			synchronized (lastSortedItems) {
-				Collections.sort(lastSortedItems, getHistoryComparator());
-			}
-			return item;
-		}
-
-		/**
-		 * Adds item to history and refresh view.
-		 * 
-		 * @param item
-		 *            to add
-		 */
-		public void addHistoryElement(Object item) {
-			if (this.selectionHistory != null)
-				this.selectionHistory.accessed(item);
-			if (filter == null || !filter.matchItem(item)) {
-				this.items.remove(item);
-				this.duplicates.remove(item);
-				this.lastSortedItems.remove(item);
-			}
-			synchronized (lastSortedItems) {
-				Collections.sort(lastSortedItems, getHistoryComparator());
-			}
-			this.refresh();
-		}
-
-		/**
-		 * @param item
-		 * @return <code>true</code> if given item is part of the history
-		 */
-		public boolean isHistoryElement(Object item) {
-			if (this.selectionHistory != null) {
-				return this.selectionHistory.contains(item);
-			}
-			return false;
-		}
-
-		/**
-		 * Sets/unsets given item as duplicate.
-		 * 
-		 * @param item
-		 *            item to change
-		 * 
-		 * @param isDuplicate
-		 *            duplicate flag
-		 */
-		public void setDuplicateElement(Object item, boolean isDuplicate) {
-			if (this.items.contains(item)) {
-				if (isDuplicate)
-					this.duplicates.add(item);
-				else
-					this.duplicates.remove(item);
-			}
-		}
-
-		/**
-		 * Indicates whether given item is a duplicate.
-		 * 
-		 * @param item
-		 *            item to check
-		 * @return <code>true</code> if item is duplicate
-		 */
-		public boolean isDuplicateElement(Object item) {
-			return duplicates.contains(item);
-		}
-
-		/**
-		 * Load history from memento.
-		 * 
-		 * @param memento
-		 *            memento from which the history will be retrieved
-		 */
-		public void loadHistory(IMemento memento) {
-			if (this.selectionHistory != null)
-				this.selectionHistory.load(memento);
-		}
-
-		/**
-		 * Save history to memento.
-		 * 
-		 * @param memento
-		 *            memento to which the history will be added
-		 */
-		public void saveHistory(IMemento memento) {
-			if (this.selectionHistory != null)
-				this.selectionHistory.save(memento);
-		}
-
-		/**
-		 * Gets sorted items.
-		 * 
-		 * @return sorted items
-		 */
-		private Object[] getSortedItems() {
-			if (lastSortedItems.size() != items.size()) {
-				synchronized (lastSortedItems) {
-					lastSortedItems.clear();
-					lastSortedItems.addAll(items);
-					Collections.sort(lastSortedItems, getHistoryComparator());
-				}
-			}
-			return lastSortedItems.toArray();
-		}
-
-		/**
-		 * Remember result of filtering.
-		 * 
-		 * @param itemsFilter
-		 */
-		public void rememberResult(ItemsFilter itemsFilter) {
-			List itemsList = Collections.synchronizedList(Arrays
-					.asList(getSortedItems()));
-			// synchronization
-			if (itemsFilter == filter) {
-				lastCompletedFilter = itemsFilter;
-				lastCompletedResult = itemsList;
-			}
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-		 */
-		public Object[] getElements(Object inputElement) {
-			return lastFilteredItems.toArray();
-		}
-
-		public int getNumberOfElements() {
-			return lastFilteredItems.size();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-		 */
-		public void dispose() {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-		 *      java.lang.Object, java.lang.Object)
-		 */
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ILazyContentProvider#updateElement(int)
-		 */
-		public void updateElement(int index) {
-
-			FilteredItemsSelectionDialog.this.list.replace((lastFilteredItems
-					.size() > index) ? lastFilteredItems.get(index) : null,
-					index);
-
-		}
-
-		/**
-		 * Main method responsible for getting the filtered items and checking
-		 * for duplicates. It is based on the
-		 * {@link FilteredItemsSelectionDialog.ContentProvider#getFilteredItems(Object, IProgressMonitor)}.
-		 * 
-		 * @param checkDuplicates
-		 *            <code>true</code> if data concerning elements
-		 *            duplication should be computed - it takes much more time
-		 *            than standard filtering
-		 * 
-		 * @param monitor
-		 *            progress monitor
-		 */
-		public void reloadCache(boolean checkDuplicates,
-				IProgressMonitor monitor) {
-
-			reset = false;
-
-			if (monitor != null) {
-				// the work is divided into two actions of the same length
-				int totalWork = checkDuplicates ? 200 : 100;
-
-				monitor
-						.beginTask(
-								WorkbenchMessages.FilteredItemsSelectionDialog_cacheRefreshJob,
-								totalWork);
-			}
-
-			// the TableViewer's root (the input) is treated as parent
-
-			lastFilteredItems = Arrays.asList(getFilteredItems(list.getInput(),
-					monitor != null ? new SubProgressMonitor(monitor, 100)
-							: null));
-
-			if (reset || (monitor != null && monitor.isCanceled())) {
-				if (monitor != null)
-					monitor.done();
-				return;
-			}
-
-			if (checkDuplicates) {
-				checkDuplicates(monitor);
-			}
-			if (monitor != null)
-				monitor.done();
-		}
-
-		private void checkDuplicates(IProgressMonitor monitor) {
-			synchronized (lastFilteredItems) {
-				IProgressMonitor subMonitor = null;
-				int reportEvery = lastFilteredItems.size() / 20;
-				if (monitor != null) {
-					subMonitor = new SubProgressMonitor(monitor, 100);
-					subMonitor
-							.beginTask(
-									WorkbenchMessages.FilteredItemsSelectionDialog_cacheRefreshJob_checkDuplicates,
-									5);
-				}
-				HashMap helperMap = new HashMap();
-				for (int i = 0; i < lastFilteredItems.size(); i++) {
-					if (reset
-							|| (subMonitor != null && subMonitor.isCanceled()))
-						return;
-					Object item = lastFilteredItems.get(i);
-
-					if (!(item instanceof ItemsListSeparator)) {
-						Object previousItem = helperMap.put(
-								getElementName(item), item);
-						if (previousItem != null) {
-							setDuplicateElement(previousItem, true);
-							setDuplicateElement(item, true);
-						} else {
-							setDuplicateElement(item, false);
-						}
-					}
-
-					if (subMonitor != null && reportEvery != 0
-							&& (i + 1) % reportEvery == 0)
-						subMonitor.worked(1);
-				}
-				helperMap.clear();
-			}
-		}
-
-		/**
-		 * Returns an array of items filtered using the provided
-		 * <code>ViewerFilter</code>s with a separator added.
-		 * 
-		 * @param parent
-		 *            the parent
-		 * @param monitor
-		 *            progress monitor, can be <code>null</code>
-		 * @return an array of filtered items
-		 */
-		protected Object[] getFilteredItems(Object parent,
-				IProgressMonitor monitor) {
-			int ticks = 100;
-
-			if (monitor != null) {
-				monitor
-						.beginTask(
-								WorkbenchMessages.FilteredItemsSelectionDialog_cacheRefreshJob_getFilteredElements,
-								ticks);
-				if (filters != null) {
-					ticks /= (filters.size() + 2);
-				} else {
-					ticks /= 2;
-				}
-			}
-
-			// get already sorted array
-			Object[] filteredElements = getSortedItems();
-
-			if (monitor != null) {
-				monitor.worked(ticks);
-			}
-
-			// filter the elements using provided ViewerFilters
-			if (filters != null && filteredElements != null) {
-				for (Iterator iter = filters.iterator(); iter.hasNext();) {
-					ViewerFilter f = (ViewerFilter) iter.next();
-					filteredElements = f.filter(list, parent, filteredElements);
-					if (monitor != null)
-						monitor.worked(ticks);
-				}
-			}
-
-			if (filteredElements == null || monitor.isCanceled()) {
-				if (monitor != null)
-					monitor.done();
-				return new Object[0];
-			}
-
-			ArrayList preparedElements = new ArrayList();
-			boolean hasHistory = false;
-
-			if (filteredElements.length > 0) {
-				if (isHistoryElement(filteredElements[0])) {
-					hasHistory = true;
-				}
-			}
-
-			int reportEvery = filteredElements.length / ticks;
-
-			// add separator
-			for (int i = 0; i < filteredElements.length; i++) {
-				Object item = filteredElements[i];
-
-				if (hasHistory && !isHistoryElement(item)) {
-					preparedElements.add(itemsListSeparator);
-					hasHistory = false;
-				}
-
-				preparedElements.add(item);
-
-				if (monitor != null && reportEvery != 0
-						&& ((i + 1) % reportEvery == 0))
-					monitor.worked(1);
-			}
-
-			if (monitor != null)
-				monitor.done();
-
-			return preparedElements.toArray();
-		}
-
-		/**
-		 * Adds a filter to this content provider. For an example usage of such
-		 * filters look at the project <code>org.eclipse.ui.ide</code>, class
-		 * <code>org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog.CustomWorkingSetFilter</code>.
-		 * 
-		 * 
-		 * @param filter
-		 *            the filter to be added
-		 */
-		public void addFilter(ViewerFilter filter) {
-			if (filters == null) {
-				filters = new ArrayList();
-			}
-			filters.add(filter);
-			// currently filters are only added when dialog is restored
-			// if it is changed, refreshing the whole TableViewer should be
-			// added
-		}
-
-	}
-
-	/**
-	 * A content provider that does nothing.
-	 */
-	private class NullContentProvider implements IContentProvider {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-		 */
-		public void dispose() {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-		 *      java.lang.Object, java.lang.Object)
-		 */
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		}
-
-	}
-
-	/**
-	 * DetailsContentViewer objects are wrappers for labels.
-	 * DetailsContentViewer provides means to change label's image and text when
-	 * the attached LabelProvider is updated.
-	 */
-	private class DetailsContentViewer extends ContentViewer {
-
-		private CLabel label;
-
-		/**
-		 * Unfortunately, it was impossible to delegate displaying border to
-		 * label. The <code>ViewForm</code> is used because
-		 * <code>CLabel</code> displays shadow when border is present.
-		 */
-		private ViewForm viewForm;
-
-		/**
-		 * Constructs a new instance of this class given its parent and a style
-		 * value describing its behavior and appearance.
-		 * 
-		 * @param parent
-		 *            the parent component
-		 * @param style
-		 *            SWT style bits
-		 */
-		public DetailsContentViewer(Composite parent, int style) {
-			viewForm = new ViewForm(parent, style);
-			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-			gd.horizontalSpan = 2;
-			viewForm.setLayoutData(gd);
-			label = new CLabel(viewForm, SWT.FLAT);
-			label.setFont(parent.getFont());
-			viewForm.setContent(label);
-			hookControl(label);
-		}
-
-		/**
-		 * Shows/hides the content viewer.
-		 * 
-		 * @param visible
-		 *            if the content viewer should be visible.
-		 */
-		public void setVisible(boolean visible) {
-			GridData gd = (GridData) viewForm.getLayoutData();
-			gd.exclude = !visible;
-			viewForm.getParent().layout();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.Viewer#inputChanged(java.lang.Object,
-		 *      java.lang.Object)
-		 */
-		protected void inputChanged(Object input, Object oldInput) {
-			if (oldInput == null) {
-				if (input == null) {
-					return;
-				}
-				refresh();
-				return;
-			}
-
-			refresh();
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ContentViewer#handleLabelProviderChanged(org.eclipse.jface.viewers.LabelProviderChangedEvent)
-		 */
-		protected void handleLabelProviderChanged(
-				LabelProviderChangedEvent event) {
-			if (event != null) {
-				refresh(event.getElements());
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.Viewer#getControl()
-		 */
-		public Control getControl() {
-			return label;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.Viewer#getSelection()
-		 */
-		public ISelection getSelection() {
-			// not supported
-			return null;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.Viewer#refresh()
-		 */
-		public void refresh() {
-			Object input = this.getInput();
-			if (input != null) {
-				ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
-				doRefresh(labelProvider.getText(input), labelProvider
-						.getImage(input));
-			} else {
-				doRefresh(null, null);
-			}
-		}
-
-		/**
-		 * Sets the given text and image to the label.
-		 * 
-		 * @param text
-		 *            the new text or null
-		 * @param image
-		 *            the new image
-		 */
-		private void doRefresh(String text, Image image) {
-			label.setText(text);
-			label.setImage(image);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.Viewer#setSelection(org.eclipse.jface.viewers.ISelection,
-		 *      boolean)
-		 */
-		public void setSelection(ISelection selection, boolean reveal) {
-			// not supported
-		}
-
-		/**
-		 * Refreshes the label if currently chosen element is on the list.
-		 * 
-		 * @param objs
-		 *            list of changed object
-		 */
-		private void refresh(Object[] objs) {
-			if (objs == null || getInput() == null) {
-				return;
-			}
-			Object input = getInput();
-			for (int i = 0; i < objs.length; i++) {
-				if (objs[i].equals(input)) {
-					refresh();
-					break;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Compares items using camel case method.
-	 */
-	private class CamelCaseComparator implements Comparator {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-		 */
-		public int compare(Object o1, Object o2) {
-
-			int leftCategory = getCamelCaseCategory(o1);
-			int rightCategory = getCamelCaseCategory(o2);
-			if (leftCategory < rightCategory)
-				return -1;
-			if (leftCategory > rightCategory)
-				return +1;
-
-			return getItemsComparator().compare(o1, o2);
-		}
-
-		private int getCamelCaseCategory(Object item) {
-			if (filter == null)
-				return 0;
-			if (!filter.isCamelCasePattern())
-				return 0;
-			return filter.matchesRawNamePattern(item) ? 0 : 1;
-		}
-	}
-
-	/**
-	 * Compares items according to the history.
-	 */
-	private class HistoryComparator implements Comparator {
-
-		private CamelCaseComparator camelCaseComparator;
-
-		/**
-		 * 
-		 */
-		public HistoryComparator() {
-			this.camelCaseComparator = new CamelCaseComparator();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-		 */
-		public int compare(Object o1, Object o2) {
-			if ((isHistoryElement(o1) && isHistoryElement(o2))
-					|| (!isHistoryElement(o1) && !isHistoryElement(o2)))
-				return this.camelCaseComparator.compare(o1, o2);
-
-			if (isHistoryElement(o1))
-				return -2;
-			if (isHistoryElement(o2))
-				return +2;
-
-			return 0;
-		}
-
-	}
-
-	/**
-	 * Get the control where the search pattern is entered. Any filtering should
-	 * be done using an {@link ItemsFilter}. This control should only be
-	 * accessed for listeners that wish to handle events that do not affect
-	 * filtering such as custom traversal.
-	 * 
-	 * @return Control or <code>null</code> if the pattern control has not
-	 *         been created.
-	 */
-	public Control getPatternControl() {
-		return pattern;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java
deleted file mode 100644
index 39c3b25..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredList.java
+++ /dev/null
@@ -1,779 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   IBM Corporation - initial API and implementation 
- *   Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.accessibility.Accessible;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StringMatcher;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * A composite widget which holds a list of elements for user selection. The
- * elements are sorted alphabetically. Optionally, the elements can be filtered
- * and duplicate entries can be hidden (folding).
- * 
- * @since 2.0
- */
-public class FilteredList extends Composite {
-	/**
-	 * The FilterMatcher is the interface used to check filtering criterea.
-	 */
-	public interface FilterMatcher {
-		/**
-		 * Sets the filter.
-		 * 
-		 * @param pattern
-		 *            the filter pattern.
-		 * @param ignoreCase
-		 *            a flag indicating whether pattern matching is case
-		 *            insensitive or not.
-		 * @param ignoreWildCards
-		 *            a flag indicating whether wildcard characters are
-		 *            interpreted or not.
-		 */
-		void setFilter(String pattern, boolean ignoreCase,
-				boolean ignoreWildCards);
-
-		/**
-		 * @param element
-		 *            The element to test against.
-		 * @return <code>true</code> if the object matches the pattern,
-		 *         <code>false</code> otherwise. <code>setFilter()</code>
-		 *         must have been called at least once prior to a call to this
-		 *         method.
-		 */
-		boolean match(Object element);
-	}
-
-	private class DefaultFilterMatcher implements FilterMatcher {
-		private StringMatcher fMatcher;
-
-		public void setFilter(String pattern, boolean ignoreCase,
-				boolean ignoreWildCards) {
-			fMatcher = new StringMatcher(pattern + '*', ignoreCase,
-					ignoreWildCards);
-		}
-
-		public boolean match(Object element) {
-			return fMatcher.match(fLabelProvider.getText(element));
-		}
-	}
-
-	private Table fList;
-
-	ILabelProvider fLabelProvider;
-
-	private boolean fMatchEmptyString = true;
-
-	private boolean fIgnoreCase;
-
-	private boolean fAllowDuplicates;
-
-	private String fFilter = ""; //$NON-NLS-1$
-
-	private TwoArrayQuickSorter fSorter;
-
-	Object[] fElements = new Object[0];
-
-	Label[] fLabels;
-
-	Vector fImages = new Vector();
-
-	int[] fFoldedIndices;
-
-	int fFoldedCount;
-
-	int[] fFilteredIndices;
-
-	int fFilteredCount;
-
-	private FilterMatcher fFilterMatcher = new DefaultFilterMatcher();
-
-	Comparator fComparator;
-
-	TableUpdateJob fUpdateJob;
-
-	/**
-	 * Label is a private class used for comparing list objects
-	 */
-	private static class Label {
-		/**
-		 * The string portion of the label.
-		 */
-		public final String string;
-
-		/**
-		 * The image portion of the label.
-		 */
-		public final Image image;
-
-		/**
-		 * Create a new instance of label.
-		 * 
-		 * @param newString
-		 * @param image
-		 */
-		public Label(String newString, Image image) {
-			if (newString == null) {
-				this.string = Util.ZERO_LENGTH_STRING;
-			} else {
-				this.string = newString;
-			}
-			this.image = image;
-		}
-
-		/**
-		 * Return whether or not the receiver is the same as label.
-		 * 
-		 * @param label
-		 * @return boolean
-		 */
-		public boolean equals(Label label) {
-			if (label == null) {
-				return false;
-			}
-			// If the string portions match (whether null or not), fall
-			// through and check the image portion.
-			if (string == null && label.string != null) {
-				return false;
-			}
-			if ((string != null) && (!string.equals(label.string))) {
-				return false;
-			}
-			if (image == null) {
-				return label.image == null;
-			}
-			return image.equals(label.image);
-		}
-	}
-
-	private final class LabelComparator implements Comparator {
-		private boolean labelIgnoreCase;
-
-		LabelComparator(boolean ignoreCase) {
-			labelIgnoreCase = ignoreCase;
-		}
-
-		public int compare(Object left, Object right) {
-			Label leftLabel = (Label) left;
-			Label rightLabel = (Label) right;
-			int value;
-			if (fComparator == null) {
-				value = labelIgnoreCase ? leftLabel.string
-						.compareToIgnoreCase(rightLabel.string)
-						: leftLabel.string.compareTo(rightLabel.string);
-			} else {
-				value = fComparator
-						.compare(leftLabel.string, rightLabel.string);
-			}
-			if (value != 0) {
-				return value;
-			}
-			// images are allowed to be null
-			if (leftLabel.image == null) {
-				return (rightLabel.image == null) ? 0 : -1;
-			} else if (rightLabel.image == null) {
-				return +1;
-			} else {
-				return fImages.indexOf(leftLabel.image)
-						- fImages.indexOf(rightLabel.image);
-			}
-		}
-	}
-
-	/**
-	 * Constructs a new filtered list.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @param style
-	 *            the widget style
-	 * @param labelProvider
-	 *            the label renderer
-	 * @param ignoreCase
-	 *            specifies whether sorting and folding is case sensitive
-	 * @param allowDuplicates
-	 *            specifies whether folding of duplicates is desired
-	 * @param matchEmptyString
-	 *            specifies whether empty filter strings should filter
-	 *            everything or nothing
-	 */
-	public FilteredList(Composite parent, int style,
-			ILabelProvider labelProvider, boolean ignoreCase,
-			boolean allowDuplicates, boolean matchEmptyString) {
-		super(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		setLayout(layout);
-		fList = new Table(this, style);
-		fList.setLayoutData(new GridData(GridData.FILL_BOTH));
-		fList.setFont(parent.getFont());
-		fList.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				fLabelProvider.dispose();
-				if (fUpdateJob != null) {
-					fUpdateJob.cancel();
-				}
-			}
-		});
-		fLabelProvider = labelProvider;
-		fIgnoreCase = ignoreCase;
-		fSorter = new TwoArrayQuickSorter(new LabelComparator(ignoreCase));
-		fAllowDuplicates = allowDuplicates;
-		fMatchEmptyString = matchEmptyString;
-	}
-
-	/**
-	 * Sets the list of elements.
-	 * 
-	 * @param elements
-	 *            the elements to be shown in the list.
-	 */
-	public void setElements(Object[] elements) {
-		if (elements == null) {
-			fElements = new Object[0];
-		} else {
-			// copy list for sorting
-			fElements = new Object[elements.length];
-			System.arraycopy(elements, 0, fElements, 0, elements.length);
-		}
-		int length = fElements.length;
-		// fill labels
-		fLabels = new Label[length];
-		Set imageSet = new HashSet();
-		for (int i = 0; i != length; i++) {
-			String text = fLabelProvider.getText(fElements[i]);
-			Image image = fLabelProvider.getImage(fElements[i]);
-			fLabels[i] = new Label(text, image);
-			imageSet.add(image);
-		}
-		fImages.clear();
-		fImages.addAll(imageSet);
-		fSorter.sort(fLabels, fElements);
-		fFilteredIndices = new int[length];
-		fFoldedIndices = new int[length];
-		updateList();
-	}
-
-	/**
-	 * Tests if the list (before folding and filtering) is empty.
-	 * 
-	 * @return returns <code>true</code> if the list is empty,
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean isEmpty() {
-		return (fElements == null) || (fElements.length == 0);
-	}
-
-	/**
-	 * Sets the filter matcher.
-	 * 
-	 * @param filterMatcher
-	 */
-	public void setFilterMatcher(FilterMatcher filterMatcher) {
-		Assert.isNotNull(filterMatcher);
-		fFilterMatcher = filterMatcher;
-	}
-
-	/**
-	 * Sets a custom comparator for sorting the list.
-	 * 
-	 * @param comparator
-	 */
-	public void setComparator(Comparator comparator) {
-		Assert.isNotNull(comparator);
-		fComparator = comparator;
-	}
-
-	/**
-	 * Adds a selection listener to the list.
-	 * 
-	 * @param listener
-	 *            the selection listener to be added.
-	 */
-	public void addSelectionListener(SelectionListener listener) {
-		fList.addSelectionListener(listener);
-	}
-
-	/**
-	 * Removes a selection listener from the list.
-	 * 
-	 * @param listener
-	 *            the selection listener to be removed.
-	 */
-	public void removeSelectionListener(SelectionListener listener) {
-		fList.removeSelectionListener(listener);
-	}
-
-	/**
-	 * Sets the selection of the list. Empty or null array removes selection.
-	 * 
-	 * @param selection
-	 *            an array of indices specifying the selection.
-	 */
-	public void setSelection(int[] selection) {
-		if (selection == null || selection.length == 0) {
-			fList.deselectAll();
-		} else {
-			// If there is no working update job, or the update job is ready to
-			// accept selections, set the selection immediately.
-			if (fUpdateJob == null) {
-				fList.setSelection(selection);
-				fList.notifyListeners(SWT.Selection, new Event());
-			} else {
-				// There is an update job doing the population of the list, so
-				// it should update the selection.
-				fUpdateJob.updateSelection(selection);
-			}
-		}
-	}
-
-	/**
-	 * Returns the selection of the list.
-	 * 
-	 * @return returns an array of indices specifying the current selection.
-	 */
-	public int[] getSelectionIndices() {
-		return fList.getSelectionIndices();
-	}
-
-	/**
-	 * Returns the selection of the list. This is a convenience function for
-	 * <code>getSelectionIndices()</code>.
-	 * 
-	 * @return returns the index of the selection, -1 for no selection.
-	 */
-	public int getSelectionIndex() {
-		return fList.getSelectionIndex();
-	}
-
-	/**
-	 * Sets the selection of the list. Empty or null array removes selection.
-	 * 
-	 * @param elements
-	 *            the array of elements to be selected.
-	 */
-	public void setSelection(Object[] elements) {
-		if (elements == null || elements.length == 0) {
-			fList.deselectAll();
-			return;
-		}
-		if (fElements == null) {
-			return;
-		}
-		// fill indices
-		int[] indices = new int[elements.length];
-		for (int i = 0; i != elements.length; i++) {
-			int j;
-			for (j = 0; j != fFoldedCount; j++) {
-				int max = (j == fFoldedCount - 1) ? fFilteredCount
-						: fFoldedIndices[j + 1];
-				int l;
-				for (l = fFoldedIndices[j]; l != max; l++) {
-					// found matching element?
-					if (fElements[fFilteredIndices[l]].equals(elements[i])) {
-						indices[i] = j;
-						break;
-					}
-				}
-				if (l != max) {
-					break;
-				}
-			}
-			// not found
-			if (j == fFoldedCount) {
-				indices[i] = 0;
-			}
-		}
-		setSelection(indices);
-	}
-
-	/**
-	 * Returns an array of the selected elements. The type of the elements
-	 * returned in the list are the same as the ones passed with
-	 * <code>setElements</code>. The array does not contain the rendered
-	 * strings.
-	 * 
-	 * @return returns the array of selected elements.
-	 */
-	public Object[] getSelection() {
-		if (fList.isDisposed() || (fList.getSelectionCount() == 0)) {
-			return new Object[0];
-		}
-		int[] indices = fList.getSelectionIndices();
-		Object[] elements = new Object[indices.length];
-		for (int i = 0; i != indices.length; i++) {
-			elements[i] = fElements[fFilteredIndices[fFoldedIndices[indices[i]]]];
-		}
-		return elements;
-	}
-
-	/**
-	 * Sets the filter pattern. Current only prefix filter patterns are
-	 * supported.
-	 * 
-	 * @param filter
-	 *            the filter pattern.
-	 */
-	public void setFilter(String filter) {
-		fFilter = (filter == null) ? "" : filter; //$NON-NLS-1$
-		updateList();
-	}
-
-	private void updateList() {
-		fFilteredCount = filter();
-		fFoldedCount = fold();
-		if (fUpdateJob != null) {
-			fUpdateJob.cancel();
-		}
-		fUpdateJob = new TableUpdateJob(fList, fFoldedCount);
-		fUpdateJob.schedule();
-	}
-
-	/**
-	 * Returns the filter pattern.
-	 * 
-	 * @return returns the filter pattern.
-	 */
-	public String getFilter() {
-		return fFilter;
-	}
-
-	/**
-	 * Returns all elements which are folded together to one entry in the list.
-	 * 
-	 * @param index
-	 *            the index selecting the entry in the list.
-	 * @return returns an array of elements folded together, <code>null</code>
-	 *         if index is out of range.
-	 */
-	public Object[] getFoldedElements(int index) {
-		if ((index < 0) || (index >= fFoldedCount)) {
-			return null;
-		}
-		int start = fFoldedIndices[index];
-		int count = (index == fFoldedCount - 1) ? fFilteredCount - start
-				: fFoldedIndices[index + 1] - start;
-		Object[] elements = new Object[count];
-		for (int i = 0; i != count; i++) {
-			elements[i] = fElements[fFilteredIndices[start + i]];
-		}
-		return elements;
-	}
-
-	/*
-	 * Folds duplicate entries. Two elements are considered as a pair of
-	 * duplicates if they coiincide in the rendered string and image. @return
-	 * returns the number of elements after folding.
-	 */
-	private int fold() {
-		if (fAllowDuplicates) {
-			for (int i = 0; i != fFilteredCount; i++) {
-				fFoldedIndices[i] = i; // identity mapping
-			}
-			return fFilteredCount;
-		}
-		int k = 0;
-		Label last = null;
-		for (int i = 0; i != fFilteredCount; i++) {
-			int j = fFilteredIndices[i];
-			Label current = fLabels[j];
-			if (!current.equals(last)) {
-				fFoldedIndices[k] = i;
-				k++;
-				last = current;
-			}
-		}
-		return k;
-	}
-
-	/*
-	 * Filters the list with the filter pattern. @return returns the number of
-	 * elements after filtering.
-	 */
-	private int filter() {
-		if (((fFilter == null) || (fFilter.length() == 0))
-				&& !fMatchEmptyString) {
-			return 0;
-		}
-		fFilterMatcher.setFilter(fFilter.trim(), fIgnoreCase, false);
-		int k = 0;
-		for (int i = 0; i != fElements.length; i++) {
-			if (fFilterMatcher.match(fElements[i])) {
-				fFilteredIndices[k++] = i;
-			}
-		}
-		return k;
-	}
-
-	private class TableUpdateJob extends WorkbenchJob {
-		final Table fTable;
-
-		final int fCount;
-
-		private int currentIndex = 0;
-
-		/*
-		 * Programmatic selections requested while this job was running.
-		 */
-		int[] indicesToSelect;
-		
-		private boolean readyForSelection = false;
-
-		/**
-		 * Create a new instance of a job used to update the table.
-		 * 
-		 * @param table
-		 * @param count
-		 *            The number of items to update per running.
-		 */
-		public TableUpdateJob(Table table, int count) {
-			super(WorkbenchMessages.FilteredList_UpdateJobName);
-			setSystem(true);
-			fTable = table;
-			fCount = count;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-		 */
-public IStatus runInUIThread(IProgressMonitor monitor) {
-            if (fTable.isDisposed()) {
-				return Status.CANCEL_STATUS;
-			}
-            int itemCount = fTable.getItemCount();
-                        
-            // Remove excess items
-            if (fCount < itemCount) {
-                fTable.setRedraw(false);
-                fTable.remove(fCount, itemCount - 1);
-                fTable.setRedraw(true);
-                itemCount = fTable.getItemCount();
-            }
-            // table empty -> no selection
-            if (fCount == 0) {
-                fTable.notifyListeners(SWT.Selection, new Event());
-                return Status.OK_STATUS;
-            }
-            // How many we are going to do this time.
-            int iterations = Math.min(10, fCount - currentIndex);
-            for (int i = 0; i < iterations; i++) {
-                if (monitor.isCanceled()) {
-					return Status.CANCEL_STATUS;
-				}
-                final TableItem item = (currentIndex < itemCount) ? fTable
-                        .getItem(currentIndex)
-                        : new TableItem(fTable, SWT.NONE);
-                final Label label = fLabels[fFilteredIndices[fFoldedIndices[currentIndex]]];
-                item.setText(label.string);
-                item.setImage(label.image);
-                currentIndex++;
-            }
-            if (monitor.isCanceled()) {
-				return Status.CANCEL_STATUS;
-			}
-            if (currentIndex < fCount) {
-				schedule(100);
-			} else {
-                if (indicesToSelect == null) {
-                 	// Make a default selection in the table if there is none.
-                	// If a selection has already been made, honor it.
-                	// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=112146
-                    if (fCount > 0) {
-                    	if (fTable.getSelectionIndices().length == 0) {
-                    		defaultSelect();
-                    	} else {
-                    		// There is a selection, but it likely hasn't changed since the
-                    		// job started.  Force a selection notification, since the
-                    		// items represented by the selection have changed.
-							// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=119456
-                    		fTable.notifyListeners(SWT.Selection, new Event());
-                    	}
-                    }
-                } else {
-                	// Set the selection as indicated.
-                    selectAndNotify(indicesToSelect);
-                }
-                // This flag signifies that the selection can now be directly
-                // updated in the widget.
-                readyForSelection = true;
-            }
-            return Status.OK_STATUS;
-        }
-		/**
-		 * Update the selection for the supplied indices.
-		 * 
-		 * @param indices
-		 */
-		void updateSelection(final int[] indices) {
-			indicesToSelect = indices;
-			if (readyForSelection) {
-				selectAndNotify(indices);
-			}
-		}
-
-		/**
-		 * Select the first element if there is no selection
-		 */
-		private void defaultSelect() {
-			/**
-			 * Reset to the first selection if no index has been queued.
-			 */
-			selectAndNotify(new int[] { 0 });
-		}
-
-		/**
-		 * Select the supplied indices and notify any listeners
-		 * 
-		 * @param indices
-		 */
-		private void selectAndNotify(final int[] indices) {
-			// It is possible that the table was disposed
-			// before the update finished. If so then leave
-			if (fTable.isDisposed()) {
-				return;
-			}
-			fTable.setSelection(indices);
-			fTable.notifyListeners(SWT.Selection, new Event());
-		}
-	}
-
-	/**
-	 * Returns whether or not duplicates are allowed.
-	 * 
-	 * @return <code>true</code> indicates duplicates are allowed
-	 */
-	public boolean getAllowDuplicates() {
-		return fAllowDuplicates;
-	}
-
-	/**
-	 * Sets whether or not duplicates are allowed. If this value is set the
-	 * items should be set again for this value to take effect.
-	 * 
-	 * @param allowDuplicates
-	 *            <code>true</code> indicates duplicates are allowed
-	 */
-	public void setAllowDuplicates(boolean allowDuplicates) {
-		this.fAllowDuplicates = allowDuplicates;
-	}
-
-	/**
-	 * Returns whether or not case should be ignored.
-	 * 
-	 * @return <code>true</code> if case should be ignored
-	 */
-	public boolean getIgnoreCase() {
-		return fIgnoreCase;
-	}
-
-	/**
-	 * Sets whether or not case should be ignored If this value is set the items
-	 * should be set again for this value to take effect.
-	 * 
-	 * @param ignoreCase
-	 *            <code>true</code> if case should be ignored
-	 */
-	public void setIgnoreCase(boolean ignoreCase) {
-		this.fIgnoreCase = ignoreCase;
-	}
-
-	/**
-	 * Returns whether empty filter strings should filter everything or nothing.
-	 * 
-	 * @return <code>true</code> for the empty string to match all items,
-	 *         <code>false</code> to match none
-	 */
-	public boolean getMatchEmptyString() {
-		return fMatchEmptyString;
-	}
-
-	/**
-	 * Sets whether empty filter strings should filter everything or nothing. If
-	 * this value is set the items should be set again for this value to take
-	 * effect.
-	 * 
-	 * @param matchEmptyString
-	 *            <code>true</code> for the empty string to match all items,
-	 *            <code>false</code> to match none
-	 */
-	public void setMatchEmptyString(boolean matchEmptyString) {
-		this.fMatchEmptyString = matchEmptyString;
-	}
-
-	/**
-	 * Returns the label provider for the items.
-	 * 
-	 * @return the label provider
-	 */
-	public ILabelProvider getLabelProvider() {
-		return fLabelProvider;
-	}
-
-	/**
-	 * Sets the label provider. If this value is set the items should be set
-	 * again for this value to take effect.
-	 * 
-	 * @param labelProvider
-	 *            the label provider
-	 */
-	public void setLabelProvider(ILabelProvider labelProvider) {
-		this.fLabelProvider = labelProvider;
-	}
-	
-	/**
-	 * Returns the accessible object for the receiver.
-	 * If this is the first time this object is requested,
-	 * then the object is created and returned.
-	 *
-	 * @return the accessible object
-	 *
-	 * @exception SWTException <ul>
-	 *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
-	 *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
-	 * </ul>
-	 * 
-	 * @see Accessible#addAccessibleListener
-	 * @see Accessible#addAccessibleControlListener
-	 * 
-	 * @since 3.3
-	 */
-	public Accessible getAccessible() {
-		return fList.getAccessible();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java
deleted file mode 100644
index e5daf20..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/FilteredTree.java
+++ /dev/null
@@ -1,972 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jacek Pospychala - bug 187762
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-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.Display;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * A simple control that provides a text widget and a tree viewer. The contents
- * of the text widget are used to drive a PatternFilter that is on the viewer.
- * 
- * @see org.eclipse.ui.dialogs.PatternFilter
- * @since 3.2
- */
-public class FilteredTree extends Composite {
-
-	/**
-	 * The filter text widget to be used by this tree. This value may be
-	 * <code>null</code> if there is no filter widget, or if the controls have
-	 * not yet been created.
-	 */
-	protected Text filterText;
-
-	/**
-	 * The control representing the clear button for the filter text entry. This
-	 * value may be <code>null</code> if no such button exists, or if the
-	 * controls have not yet been created.
-	 */
-	protected ToolBarManager filterToolBar;
-
-	/**
-	 * The viewer for the filtered tree. This value should never be
-	 * <code>null</code> after the widget creation methods are complete.
-	 */
-	protected TreeViewer treeViewer;
-
-	/**
-	 * The Composite on which the filter controls are created. This is used to
-	 * set the background color of the filter controls to match the surrounding
-	 * controls.
-	 */
-	protected Composite filterComposite;
-
-	/**
-	 * The pattern filter for the tree. This value must not be <code>null</code>.
-	 */
-	private PatternFilter patternFilter;
-
-	/**
-	 * The text to initially show in the filter text control.
-	 */
-	protected String initialText = ""; //$NON-NLS-1$
-
-	/**
-	 * The job used to refresh the tree.
-	 */
-	private Job refreshJob;
-
-	/**
-	 * The parent composite of the filtered tree.
-	 * 
-	 * @since 3.3
-	 */
-	protected Composite parent;
-
-	/**
-	 * Whether or not to show the filter controls (text and clear button). The
-	 * default is to show these controls. This can be overridden by providing a
-	 * setting in the product configuration file. The setting to add to not show
-	 * these controls is:
-	 * 
-	 * org.eclipse.ui/SHOW_FILTERED_TEXTS=false
-	 */
-	protected boolean showFilterControls;
-
-	/**
-	 * @since 3.3
-	 */
-	protected Composite treeComposite;
-
-	/**
-	 * Image descriptor for enabled clear button.
-	 */
-	private static final String CLEAR_ICON = "org.eclipse.ui.internal.dialogs.CLEAR_ICON"; //$NON-NLS-1$
-
-	/**
-	 * Image descriptor for disabled clear button.
-	 */
-	private static final String DCLEAR_ICON = "org.eclipse.ui.internal.dialogs.DCLEAR_ICON"; //$NON-NLS-1$
-
-	/**
-	 * Maximum time spent expanding the tree after the filter text has been
-	 * updated (this is only used if we were able to at least expand the visible
-	 * nodes)
-	 */
-	private static final long SOFT_MAX_EXPAND_TIME = 200;
-
-	/**
-	 * Get image descriptors for the clear button.
-	 */
-	static {
-		ImageDescriptor descriptor = AbstractUIPlugin
-				.imageDescriptorFromPlugin(PlatformUI.PLUGIN_ID,
-						"$nl$/icons/full/etool16/clear_co.gif"); //$NON-NLS-1$
-		if (descriptor != null) {
-			JFaceResources.getImageRegistry().put(CLEAR_ICON, descriptor);
-		}
-		descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-				PlatformUI.PLUGIN_ID, "$nl$/icons/full/dtool16/clear_co.gif"); //$NON-NLS-1$
-		if (descriptor != null) {
-			JFaceResources.getImageRegistry().put(DCLEAR_ICON, descriptor);
-		}
-	}
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param parent
-	 *            the parent <code>Composite</code>
-	 * @param treeStyle
-	 *            the style bits for the <code>Tree</code>
-	 * @param filter
-	 *            the filter to be used
-	 */
-	public FilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
-		super(parent, SWT.NONE);
-		this.parent = parent;
-		init(treeStyle, filter);
-	}
-
-	/**
-	 * Create a new instance of the receiver. Subclasses that wish to override
-	 * the default creation behavior may use this constructor, but must ensure
-	 * that the <code>init(composite, int, PatternFilter)</code> method is
-	 * called in the overriding constructor.
-	 * 
-	 * @param parent
-	 *            the parent <code>Composite</code>
-	 * @see #init(int, PatternFilter)
-	 * 
-	 * @since 3.3
-	 */
-	protected FilteredTree(Composite parent) {
-		super(parent, SWT.NONE);
-		this.parent = parent;
-	}
-
-	/**
-	 * Create the filtered tree.
-	 * 
-	 * @param treeStyle
-	 *            the style bits for the <code>Tree</code>
-	 * @param filter
-	 *            the filter to be used
-	 * 
-	 * @since 3.3
-	 */
-	protected void init(int treeStyle, PatternFilter filter) {
-		patternFilter = filter;
-		showFilterControls = PlatformUI.getPreferenceStore().getBoolean(
-				IWorkbenchPreferenceConstants.SHOW_FILTERED_TEXTS);
-		createControl(parent, treeStyle);
-		createRefreshJob();
-		setInitialText(WorkbenchMessages.FilteredTree_FilterMessage);
-		setFont(parent.getFont());
-	}
-
-	/**
-	 * Create the filtered tree's controls. Subclasses should override.
-	 * 
-	 * @param parent
-	 * @param treeStyle
-	 */
-	protected void createControl(Composite parent, int treeStyle) {
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		setLayout(layout);
-		setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-		if (showFilterControls) {
-			filterComposite = new Composite(this, SWT.NONE);
-			GridLayout filterLayout = new GridLayout(2, false);
-			filterLayout.marginHeight = 0;
-			filterLayout.marginWidth = 0;
-			filterComposite.setLayout(filterLayout);
-			filterComposite.setFont(parent.getFont());
-
-			createFilterControls(filterComposite);
-			filterComposite.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING,
-					true, false));
-		}
-
-		treeComposite = new Composite(this, SWT.NONE);
-		GridLayout treeCompositeLayout = new GridLayout();
-		treeCompositeLayout.marginHeight = 0;
-		treeCompositeLayout.marginWidth = 0;
-		treeComposite.setLayout(treeCompositeLayout);
-		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
-		treeComposite.setLayoutData(data);
-		createTreeControl(treeComposite, treeStyle);
-	}
-
-	/**
-	 * Create the filter controls. By default, a text and corresponding tool bar
-	 * button that clears the contents of the text is created. Subclasses may
-	 * override.
-	 * 
-	 * @param parent
-	 *            parent <code>Composite</code> of the filter controls
-	 * @return the <code>Composite</code> that contains the filter controls
-	 */
-	protected Composite createFilterControls(Composite parent) {
-		createFilterText(parent);
-		createClearText(parent);
-		if (filterToolBar != null) {
-			filterToolBar.update(false);
-			// initially there is no text to clear
-			filterToolBar.getControl().setVisible(false);
-		}
-		return parent;
-	}
-
-	/**
-	 * Creates and set up the tree and tree viewer. This method calls
-	 * {@link #doCreateTreeViewer(Composite, int)} to create the tree viewer.
-	 * Subclasses should override {@link #doCreateTreeViewer(Composite, int)}
-	 * instead of overriding this method.
-	 * 
-	 * @param parent
-	 *            parent <code>Composite</code>
-	 * @param style
-	 *            SWT style bits used to create the tree
-	 * @return the tree
-	 */
-	protected Control createTreeControl(Composite parent, int style) {
-		treeViewer = doCreateTreeViewer(parent, style);
-		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
-		treeViewer.getControl().setLayoutData(data);
-		treeViewer.getControl().addDisposeListener(new DisposeListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-			 */
-			public void widgetDisposed(DisposeEvent e) {
-				refreshJob.cancel();
-			}
-		});
-		if (treeViewer instanceof NotifyingTreeViewer) {
-			patternFilter.setUseCache(true);
-		}
-		treeViewer.addFilter(patternFilter);
-		return treeViewer.getControl();
-	}
-
-	/**
-	 * Creates the tree viewer. Subclasses may override.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @param style
-	 *            SWT style bits used to create the tree viewer
-	 * @return the tree viewer
-	 * 
-	 * @since 3.3
-	 */
-	protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
-		return new NotifyingTreeViewer(parent, style);
-	}
-
-	/**
-	 * Return the first item in the tree that matches the filter pattern.
-	 * 
-	 * @param items
-	 * @return the first matching TreeItem
-	 */
-	private TreeItem getFirstMatchingItem(TreeItem[] items) {
-		for (int i = 0; i < items.length; i++) {
-			if (patternFilter.isLeafMatch(treeViewer, items[i].getData())
-					&& patternFilter.isElementSelectable(items[i].getData())) {
-				return items[i];
-			}
-			return getFirstMatchingItem(items[i].getItems());
-		}
-		return null;
-	}
-
-	/**
-	 * Create the refresh job for the receiver.
-	 * 
-	 */
-	private void createRefreshJob() {
-		refreshJob = doCreateRefreshJob();
-		refreshJob.setSystem(true);
-	}
-
-	/**
-	 * Creates a workbench job that will refresh the tree based on the current filter text.
-	 * Subclasses may override.
-	 * 
-	 * @return a workbench job that can be scheduled to refresh the tree
-	 * 
-	 * @since 3.4
-	 */
-	protected WorkbenchJob doCreateRefreshJob() {
-		return new WorkbenchJob("Refresh Filter") {//$NON-NLS-1$
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-				if (treeViewer.getControl().isDisposed()) {
-					return Status.CANCEL_STATUS;
-				}
-
-				String text = getFilterString();
-				if (text == null) {
-					return Status.OK_STATUS;
-				}
-
-				boolean initial = initialText != null
-						&& initialText.equals(text);
-				if (initial) {
-					patternFilter.setPattern(null);
-				} else if (text != null) {
-					patternFilter.setPattern(text);
-				}
-
-				Control redrawFalseControl = treeComposite != null ? treeComposite
-						: treeViewer.getControl();
-				try {
-					// don't want the user to see updates that will be made to
-					// the tree
-					// we are setting redraw(false) on the composite to avoid
-					// dancing scrollbar
-					redrawFalseControl.setRedraw(false);
-					if (!narrowingDown) {
-						// collapse all
-						TreeItem[] is = treeViewer.getTree().getItems();
-						for (int i = 0; i < is.length; i++) {
-							TreeItem item = is[i];
-							if (item.getExpanded()) {
-								treeViewer.setExpandedState(item.getData(),
-										false);
-							}
-						}
-					}
-					treeViewer.refresh(true);
-
-					if (text.length() > 0 && !initial) {
-						/*
-						 * Expand elements one at a time. After each is
-						 * expanded, check to see if the filter text has been
-						 * modified. If it has, then cancel the refresh job so
-						 * the user doesn't have to endure expansion of all the
-						 * nodes.
-						 */
-						TreeItem[] items = getViewer().getTree().getItems();
-						int treeHeight = getViewer().getTree().getBounds().height;
-						int numVisibleItems = treeHeight
-								/ getViewer().getTree().getItemHeight();
-						long stopTime = SOFT_MAX_EXPAND_TIME
-								+ System.currentTimeMillis();
-						boolean cancel = false;
-						if (items.length > 0
-								&& recursiveExpand(items, monitor, stopTime,
-										new int[] { numVisibleItems })) {
-							cancel = true;
-						}
-
-						// enabled toolbar - there is text to clear
-						// and the list is currently being filtered
-						updateToolbar(true);
-						
-						if (cancel) {
-							return Status.CANCEL_STATUS;
-						}
-					} else {
-						// disabled toolbar - there is no text to clear
-						// and the list is currently not filtered
-						updateToolbar(false);
-					}
-				} finally {
-					// done updating the tree - set redraw back to true
-					TreeItem[] items = getViewer().getTree().getItems();
-					if (items.length > 0
-							&& getViewer().getTree().getSelectionCount() == 0) {
-						treeViewer.getTree().setTopItem(items[0]);
-					}
-					redrawFalseControl.setRedraw(true);
-				}
-				return Status.OK_STATUS;
-			}
-
-			/**
-			 * Returns true if the job should be canceled (because of timeout or
-			 * actual cancellation).
-			 * 
-			 * @param items
-			 * @param monitor
-			 * @param cancelTime
-			 * @param numItemsLeft
-			 * @return true if canceled
-			 */
-			private boolean recursiveExpand(TreeItem[] items,
-					IProgressMonitor monitor, long cancelTime,
-					int[] numItemsLeft) {
-				boolean canceled = false;
-				for (int i = 0; !canceled && i < items.length; i++) {
-					TreeItem item = items[i];
-					boolean visible = numItemsLeft[0]-- >= 0;
-					if (monitor.isCanceled()
-							|| (!visible && System.currentTimeMillis() > cancelTime)) {
-						canceled = true;
-					} else {
-						Object itemData = item.getData();
-						if (itemData != null) {
-							if (!item.getExpanded()) {
-								// do the expansion through the viewer so that
-								// it can refresh children appropriately.
-								treeViewer.setExpandedState(itemData, true);
-							}
-							TreeItem[] children = item.getItems();
-							if (items.length > 0) {
-								canceled = recursiveExpand(children, monitor,
-										cancelTime, numItemsLeft);
-							}
-						}
-					}
-				}
-				return canceled;
-			}
-
-		};
-	}
-
-	protected void updateToolbar(boolean visible) {
-		if (filterToolBar != null) {
-			filterToolBar.getControl().setVisible(visible);
-		}
-	}
-
-	/**
-	 * Creates the filter text and adds listeners. This method calls
-	 * {@link #doCreateFilterText(Composite)} to create the text control.
-	 * Subclasses should override {@link #doCreateFilterText(Composite)} instead
-	 * of overriding this method.
-	 * 
-	 * @param parent
-	 *            <code>Composite</code> of the filter text
-	 */
-	protected void createFilterText(Composite parent) {
-		filterText = doCreateFilterText(parent);
-		filterText.getAccessible().addAccessibleListener(
-				new AccessibleAdapter() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.swt.accessibility.AccessibleListener#getName(org.eclipse.swt.accessibility.AccessibleEvent)
-					 */
-					public void getName(AccessibleEvent e) {
-						String filterTextString = filterText.getText();
-						if (filterTextString.length() == 0
-								|| filterTextString.equals(initialText)) {
-							e.result = initialText;
-						} else {
-							e.result = NLS
-									.bind(
-											WorkbenchMessages.FilteredTree_AccessibleListenerFiltered,
-											new String[] {
-													filterTextString,
-													String
-															.valueOf(getFilteredItemsCount()) });
-						}
-					}
-
-					/**
-					 * Return the number of filtered items
-					 * @return int
-					 */
-					private int getFilteredItemsCount() {
-						int total = 0;
-						TreeItem[] items = getViewer().getTree().getItems();
-						for (int i = 0; i < items.length; i++) {
-							total += itemCount(items[i]);
-							
-						}
-						return total;
-					}
-
-					/**
-					 * Return the count of treeItem and it's children to infinite depth.
-					 * @param treeItem
-					 * @return int
-					 */
-					private int itemCount(TreeItem treeItem) {
-						int count = 1;
-						TreeItem[] children = treeItem.getItems();
-						for (int i = 0; i < children.length; i++) {
-							count += itemCount(children[i]);
-							
-						}
-						return count;
-					}
-				});
-
-		filterText.addFocusListener(new FocusAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt.events.FocusEvent)
-			 */
-			public void focusGained(FocusEvent e) {
-				/*
-				 * Running in an asyncExec because the selectAll() does not
-				 * appear to work when using mouse to give focus to text.
-				 */
-				Display display = filterText.getDisplay();
-				display.asyncExec(new Runnable() {
-					public void run() {
-						if (!filterText.isDisposed()) {
-							if (getInitialText().equals(
-									filterText.getText().trim())) {
-								filterText.selectAll();
-							}
-						}
-					}
-				});
-			}
-		});
-
-		filterText.addKeyListener(new KeyAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
-			 */
-			public void keyPressed(KeyEvent e) {
-				// on a CR we want to transfer focus to the list
-				boolean hasItems = getViewer().getTree().getItemCount() > 0;
-				if (hasItems && e.keyCode == SWT.ARROW_DOWN) {
-					treeViewer.getTree().setFocus();
-				} else if (e.character == SWT.CR) {
-					return;
-				}
-			}
-		});
-
-		// enter key set focus to tree
-		filterText.addTraverseListener(new TraverseListener() {
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_RETURN) {
-					e.doit = false;
-					if (getViewer().getTree().getItemCount() == 0) {
-						Display.getCurrent().beep();
-					} else {
-						// if the initial filter text hasn't changed, do not try
-						// to match
-						boolean hasFocus = getViewer().getTree().setFocus();
-						boolean textChanged = !getInitialText().equals(
-								filterText.getText().trim());
-						if (hasFocus && textChanged
-								&& filterText.getText().trim().length() > 0) {
-							TreeItem item = getFirstMatchingItem(getViewer()
-									.getTree().getItems());
-							if (item != null) {
-								getViewer().getTree().setSelection(
-										new TreeItem[] { item });
-								ISelection sel = getViewer().getSelection();
-								getViewer().setSelection(sel, true);
-							}
-						}
-					}
-				}
-			}
-		});
-
-		filterText.addModifyListener(new ModifyListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
-			 */
-			public void modifyText(ModifyEvent e) {
-				textChanged();
-			}
-		});
-
-		// if we're using a field with built in cancel we need to listen for
-		// default selection changes (which tell us the cancel button has been
-		// pressed)
-		if ((filterText.getStyle() & SWT.CANCEL) != 0) {
-			filterText.addSelectionListener(new SelectionAdapter() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.swt.events.SelectionAdapter#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
-				 */
-				public void widgetDefaultSelected(SelectionEvent e) {
-					if (e.detail == SWT.CANCEL)
-						clearText();
-				}
-			});
-		}
-
-		GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
-		// if the text widget supported cancel then it will have it's own
-		// integrated button. We can take all of the space.
-		if ((filterText.getStyle() & SWT.CANCEL) != 0)
-			gridData.horizontalSpan = 2;
-		filterText.setLayoutData(gridData);
-	}
-
-	/**
-	 * Creates the text control for entering the filter text. Subclasses may
-	 * override.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @return the text widget
-	 * 
-	 * @since 3.3
-	 */
-	protected Text doCreateFilterText(Composite parent) {
-		return new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.SEARCH
-				| SWT.CANCEL);
-	}
-
-	private String previousFilterText;
-
-	private boolean narrowingDown;
-
-	/**
-	 * Update the receiver after the text has changed.
-	 */
-	protected void textChanged() {
-		narrowingDown = previousFilterText == null
-				|| getFilterString().startsWith(previousFilterText);
-		previousFilterText = getFilterString();
-		// cancel currently running job first, to prevent unnecessary redraw
-		refreshJob.cancel();
-		refreshJob.schedule(200);
-	}
-
-	/**
-	 * Set the background for the widgets that support the filter text area.
-	 * 
-	 * @param background
-	 *            background <code>Color</code> to set
-	 */
-	public void setBackground(Color background) {
-		super.setBackground(background);
-		if (filterComposite != null) {
-			filterComposite.setBackground(background);
-		}
-		if (filterToolBar != null && filterToolBar.getControl() != null) {
-			filterToolBar.getControl().setBackground(background);
-		}
-	}
-
-	/**
-	 * Create the button that clears the text.
-	 * 
-	 * @param parent
-	 *            parent <code>Composite</code> of toolbar button
-	 */
-	private void createClearText(Composite parent) {
-		// only create the button if the text widget doesn't support one
-		// natively
-		if ((filterText.getStyle() & SWT.CANCEL) == 0) {
-			filterToolBar = new ToolBarManager(SWT.FLAT | SWT.HORIZONTAL);
-			filterToolBar.createControl(parent);
-
-			IAction clearTextAction = new Action("", IAction.AS_PUSH_BUTTON) {//$NON-NLS-1$
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.jface.action.Action#run()
-				 */
-				public void run() {
-					clearText();
-				}
-			};
-
-			clearTextAction
-					.setToolTipText(WorkbenchMessages.FilteredTree_ClearToolTip);
-			clearTextAction.setImageDescriptor(JFaceResources
-					.getImageRegistry().getDescriptor(CLEAR_ICON));
-			clearTextAction.setDisabledImageDescriptor(JFaceResources
-					.getImageRegistry().getDescriptor(DCLEAR_ICON));
-
-			filterToolBar.add(clearTextAction);
-		}
-	}
-
-	/**
-	 * Clears the text in the filter text widget. Also removes the optional
-	 * additional filter that is provided via addFilter(ViewerFilter).
-	 */
-	protected void clearText() {
-		setFilterText(""); //$NON-NLS-1$
-		textChanged();
-	}
-
-	/**
-	 * Set the text in the filter control.
-	 * 
-	 * @param string
-	 */
-	protected void setFilterText(String string) {
-		if (filterText != null) {
-			filterText.setText(string);
-			selectAll();
-		}
-	}
-
-	/**
-	 * Returns the pattern filter used by this tree.
-	 * 
-	 * @return The pattern filter; never <code>null</code>.
-	 */
-	public final PatternFilter getPatternFilter() {
-		return patternFilter;
-	}
-
-	/**
-	 * Get the tree viewer of the receiver.
-	 * 
-	 * @return the tree viewer
-	 */
-	public TreeViewer getViewer() {
-		return treeViewer;
-	}
-
-	/**
-	 * Get the filter text for the receiver, if it was created. Otherwise return
-	 * <code>null</code>.
-	 * 
-	 * @return the filter Text, or null if it was not created
-	 */
-	public Text getFilterControl() {
-		return filterText;
-	}
-
-	/**
-	 * Convenience method to return the text of the filter control. If the text
-	 * widget is not created, then null is returned.
-	 * 
-	 * @return String in the text, or null if the text does not exist
-	 */
-	protected String getFilterString() {
-		return filterText != null ? filterText.getText() : null;
-	}
-
-	/**
-	 * Set the text that will be shown until the first focus. A default value is
-	 * provided, so this method only need be called if overriding the default
-	 * initial text is desired.
-	 * 
-	 * @param text
-	 *            initial text to appear in text field
-	 */
-	public void setInitialText(String text) {
-		initialText = text;
-		setFilterText(initialText);
-		textChanged();
-	}
-
-	/**
-	 * Select all text in the filter text field.
-	 * 
-	 */
-	protected void selectAll() {
-		if (filterText != null) {
-			filterText.selectAll();
-		}
-	}
-
-	/**
-	 * Get the initial text for the receiver.
-	 * 
-	 * @return String
-	 */
-	protected String getInitialText() {
-		return initialText;
-	}
-
-	/**
-	 * Return a bold font if the given element matches the given pattern.
-	 * Clients can opt to call this method from a Viewer's label provider to get
-	 * a bold font for which to highlight the given element in the tree.
-	 * 
-	 * @param element
-	 *            element for which a match should be determined
-	 * @param tree
-	 *            FilteredTree in which the element resides
-	 * @param filter
-	 *            PatternFilter which determines a match
-	 * 
-	 * @return bold font
-	 */
-	public static Font getBoldFont(Object element, FilteredTree tree,
-			PatternFilter filter) {
-		String filterText = tree.getFilterString();
-
-		if (filterText == null) {
-			return null;
-		}
-
-		// Do nothing if it's empty string
-		String initialText = tree.getInitialText();
-		if (!("".equals(filterText) || initialText.equals(filterText))) {//$NON-NLS-1$
-			boolean initial = initialText != null
-					&& initialText.equals(filterText);
-			if (initial) {
-				filter.setPattern(null);
-			} else if (filterText != null) {
-				filter.setPattern(filterText);
-			}
-
-			if (filter.isElementVisible(tree.getViewer(), element)
-					&& filter.isLeafMatch(tree.getViewer(), element)) {
-				return JFaceResources.getFontRegistry().getBold(
-						JFaceResources.DIALOG_FONT);
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Custom tree viewer subclass that clears the caches in patternFilter on
-	 * any change to the tree. See bug 187200.
-	 * 
-	 * @since 3.3
-	 * 
-	 */
-	class NotifyingTreeViewer extends TreeViewer {
-
-		/**
-		 * @param parent
-		 * @param style
-		 */
-		public NotifyingTreeViewer(Composite parent, int style) {
-			super(parent, style);
-		}
-
-		public void add(Object parentElementOrTreePath, Object childElement) {
-			getPatternFilter().clearCaches();
-			super.add(parentElementOrTreePath, childElement);
-		}
-
-		public void add(Object parentElementOrTreePath, Object[] childElements) {
-			getPatternFilter().clearCaches();
-			super.add(parentElementOrTreePath, childElements);
-		}
-
-		protected void inputChanged(Object input, Object oldInput) {
-			getPatternFilter().clearCaches();
-			super.inputChanged(input, oldInput);
-		}
-
-		public void insert(Object parentElementOrTreePath, Object element,
-				int position) {
-			getPatternFilter().clearCaches();
-			super.insert(parentElementOrTreePath, element, position);
-		}
-
-		public void refresh() {
-			getPatternFilter().clearCaches();
-			super.refresh();
-		}
-
-		public void refresh(boolean updateLabels) {
-			getPatternFilter().clearCaches();
-			super.refresh(updateLabels);
-		}
-
-		public void refresh(Object element) {
-			getPatternFilter().clearCaches();
-			super.refresh(element);
-		}
-
-		public void refresh(Object element, boolean updateLabels) {
-			getPatternFilter().clearCaches();
-			super.refresh(element, updateLabels);
-		}
-
-		public void remove(Object elementsOrTreePaths) {
-			getPatternFilter().clearCaches();
-			super.remove(elementsOrTreePaths);
-		}
-
-		public void remove(Object parent, Object[] elements) {
-			getPatternFilter().clearCaches();
-			super.remove(parent, elements);
-		}
-
-		public void remove(Object[] elementsOrTreePaths) {
-			getPatternFilter().clearCaches();
-			super.remove(elementsOrTreePaths);
-		}
-
-		public void replace(Object parentElementOrTreePath, int index,
-				Object element) {
-			getPatternFilter().clearCaches();
-			super.replace(parentElementOrTreePath, index, element);
-		}
-
-		public void setChildCount(Object elementOrTreePath, int count) {
-			getPatternFilter().clearCaches();
-			super.setChildCount(elementOrTreePath, count);
-		}
-
-		public void setContentProvider(IContentProvider provider) {
-			getPatternFilter().clearCaches();
-			super.setContentProvider(provider);
-		}
-
-		public void setHasChildren(Object elementOrTreePath, boolean hasChildren) {
-			getPatternFilter().clearCaches();
-			super.setHasChildren(elementOrTreePath, hasChildren);
-		}
-
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IOverwriteQuery.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IOverwriteQuery.java
deleted file mode 100644
index b5ded45..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IOverwriteQuery.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-/**
- *	Implementors of this interface answer one of the prescribed return codes
- *	when asked whether to overwrite a certain path string (which could
- *	represent a resource path, a file system path, etc).
- */
-public interface IOverwriteQuery {
-    /**
-     * Return code indicating the operation should be canceled.
-     */
-    public static final String CANCEL = "CANCEL"; //$NON-NLS-1$
-
-    /**
-     * Return code indicating the entity should not be overwritten, 
-     * but operation should not be canceled.
-     */
-    public static final String NO = "NO"; //$NON-NLS-1$
-
-    /**
-     * Return code indicating the entity should be overwritten.
-     */
-    public static final String YES = "YES"; //$NON-NLS-1$
-
-    /**
-     * Return code indicating the entity should be overwritten, 
-     * and all subsequent entities should be overwritten without prompting.
-     */
-    public static final String ALL = "ALL"; //$NON-NLS-1$
-
-    /**
-     * Return code indicating the entity should not be overwritten, 
-     * and all subsequent entities should not be overwritten without prompting.
-     */
-    public static final String NO_ALL = "NOALL"; //$NON-NLS-1$
-
-    /**
-     * Returns one of the return code constants declared on this interface,
-     * indicating whether the entity represented by the passed String should be overwritten.
-     * <p>
-     * This method may be called from a non-UI thread, in which case this method must run the query
-     * in a sync exec in the UI thread, if it needs to query the user.
-     * </p>
-     * @param pathString the path representing the entity to be overwritten
-     * @return one of the return code constants declared on this interface
-     */
-    String queryOverwrite(String pathString);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionStatusValidator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionStatusValidator.java
deleted file mode 100644
index ea80bb4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionStatusValidator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * Used in selection dialogs to validate selections
- * 
- * @since 2.0
- */
-public interface ISelectionStatusValidator {
-
-    /**
-     * Validates an array of elements and returns the resulting status.
-     * @param selection The elements to validate
-     * @return The resulting status
-     */
-    IStatus validate(Object[] selection);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionValidator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionValidator.java
deleted file mode 100644
index 96c389b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ISelectionValidator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-/**
- * For validating selections in some selection dialogs.
- * <p>
- * Clients should implement this interface to define specialized selection
- * validators. 
- * </p>
- */
-public interface ISelectionValidator {
-    /**
-     * Returns a string indicating whether the given selection is valid. If the
-     * result is <code>null</code>, the selection is considered to be valid; if the result is
-     * non-empty, it contains the error message to be displayed to the user.
-     *
-     * @param selection the selection to be validated
-     * @return the error message, or <code>null</code> indicating
-     *	that the value is valid
-     */
-    public String isValid(Object selection);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java
deleted file mode 100644
index 983263d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetEditWizard.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.ui.IWorkingSet;
-
-/**
- * A working set edit wizard allows editing a working set using
- * the IWorkingSetPage associated with the working set.
- * See the org.eclipse.ui.workingSets extension point for details.
- * <p>
- * Use org.eclipse.ui.IWorkingSetManager#createWorkingSetEditWizard(IWorkingSet)
- * to create an instance of this wizard.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see org.eclipse.ui.IWorkingSetManager
- * @since 2.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkingSetEditWizard extends IWizard {
-    /**
-     * Returns the working set edited in the wizard.
-     * 
-     * @return the working set edited in the wizard.
-     */
-    public IWorkingSet getSelection();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java
deleted file mode 100644
index 05e2616..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetNewWizard.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.ui.IWorkingSet;
-
-/**
- * A working set new wizard allows creating new working sets using
- * a plug-in specific working set page.
- * <p>
- * Use org.eclipse.ui.IWorkingSetManager#createWorkingSetNewWizard(String[] workingSetIds)
- * to create an instance of this wizard.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see org.eclipse.ui.IWorkingSetManager
- * @see org.eclipse.ui.dialogs.IWorkingSetPage
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkingSetNewWizard extends IWizard {
-	
-    /**
-     * Returns the new working set. Returns <code>null</code> if the wizard has 
-     * been cancelled.
-     * 
-     * @return the new working set or <code>null</code> if the wizard has been 
-     * 	cancelled.
-     */
-    public IWorkingSet getSelection();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetPage.java
deleted file mode 100644
index 06f756a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetPage.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.ui.IWorkingSet;
-
-/**
- * A working set page allows the user to edit an existing 
- * working set and create a new working set.
- * <p>
- * Clients should implement this interface and include the 
- * name of their class in an extension contributed to the 
- * workbench's working set extension point 
- * (named <code>"org.eclipse.ui.workingSets"</code>) if they 
- * want to provide a special wizard page for a particular 
- * working set element type.
- * </p>
- * <p>
- * Clients implementing this interface may subclass from 
- * org.eclipse.jface.wizard.WizardPage.
- * </p>
- *
- * @since 2.0
- */
-public interface IWorkingSetPage extends IWizardPage {
-    /**
-     * Called when the working set wizard is closed by selecting 
-     * the finish button.
-     * Implementers may store the page result (new/changed working 
-     * set returned in getSelection) here.
-     */
-    public void finish();
-
-    /**
-     * Returns the working set edited or created on the page 
-     * after the wizard has closed.
-     * Returns the working set that was initially set using 
-     * <code>setSelection</code>if the wizard has not been 
-     * closed yet.
-     * Implementors should return the object set in setSelection
-     * instead of making a copy and returning the changed copy.
-     * 
-     * @return the working set edited or created on the page.
-     */
-    public IWorkingSet getSelection();
-
-    /**
-     * Sets the working set edited on the page.
-     * Implementors should not make a copy of this working set.
-     * The passed object can be edited as is and should be 
-     * returned in getSelection().
-     * 
-     * @param workingSet the working set edited on the page.
-     */
-    public void setSelection(IWorkingSet workingSet);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java
deleted file mode 100644
index d5140f3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/IWorkingSetSelectionDialog.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.ui.IWorkingSet;
-
-/**
- * A working set selection dialog displays the list of working
- * sets available in the workbench.
- * <p>
- * Use org.eclipse.ui.IWorkingSetManager#createWorkingSetSelectionDialog(Shell)
- * to create an instance of this dialog.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see org.eclipse.ui.IWorkingSetManager
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkingSetSelectionDialog {
-    /**
-     * Returns the working sets selected in the dialog or 
-     * <code>null</code> if the dialog was canceled.
-     * 
-     * @return the working sets selected in the dialog.
-     */
-    public IWorkingSet[] getSelection();
-
-    /**
-     * Displays the working set selection dialog.
-     * 
-     * @return Window.OK if the dialog closes with the working 
-     * 	set selection confirmed.
-     * 	Window.CANCEL if the dialog closes with the working set 
-     * 	selection dismissed.
-     * @see org.eclipse.jface.window.Window
-     */
-    public int open();
-
-    /**
-     * Sets the working sets that are initially selected in the dialog.
-     * 
-     * @param workingSets the working sets to select in the dialog.
-     */
-    public void setSelection(IWorkingSet[] workingSets);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListDialog.java
deleted file mode 100644
index c8ba1f3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListDialog.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.List;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-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.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-
-/**
- * A dialog that prompts for one element out of a list of elements. Uses
- * <code>IStructuredContentProvider</code> to provide the elements and
- * <code>ILabelProvider</code> to provide their labels.
- * 
- * @since 2.1
- */
-public class ListDialog extends SelectionDialog {
-    private IStructuredContentProvider fContentProvider;
-
-    private ILabelProvider fLabelProvider;
-
-    private Object fInput;
-
-    private TableViewer fTableViewer;
-
-    private boolean fAddCancelButton = true;
-
-    private int widthInChars = 55;
-
-    private int heightInChars = 15;
-
-    /**
-     * Create a new instance of the receiver with parent shell of parent.
-     * @param parent
-     */
-    public ListDialog(Shell parent) {
-        super(parent);
-    }
-
-    /**
-     * @param input The input for the list.
-     */
-    public void setInput(Object input) {
-        fInput = input;
-    }
-
-    /**
-     * @param sp The content provider for the list.
-     */
-    public void setContentProvider(IStructuredContentProvider sp) {
-        fContentProvider = sp;
-    }
-
-    /**
-     * @param lp The labelProvider for the list.
-     */
-    public void setLabelProvider(ILabelProvider lp) {
-        fLabelProvider = lp;
-    }
-
-    /**
-     *@param addCancelButton if <code>true</code> there will be a cancel
-     * button.
-     */
-    public void setAddCancelButton(boolean addCancelButton) {
-        fAddCancelButton = addCancelButton;
-    }
-
-    /**
-     * @return the TableViewer for the receiver.
-     */
-    public TableViewer getTableViewer() {
-        return fTableViewer;
-    }
-
-    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);
-        fTableViewer.setLabelProvider(fLabelProvider);
-        fTableViewer.setInput(fInput);
-        fTableViewer.addDoubleClickListener(new IDoubleClickListener() {
-            public void doubleClick(DoubleClickEvent event) {
-                if (fAddCancelButton) {
-					okPressed();
-				}
-            }
-        });
-        List initialSelection = getInitialElementSelections();
-        if (initialSelection != null) {
-			fTableViewer
-                    .setSelection(new StructuredSelection(initialSelection));
-		}
-        GridData gd = new GridData(GridData.FILL_BOTH);
-        gd.heightHint = convertHeightInCharsToPixels(heightInChars);
-        gd.widthHint = convertWidthInCharsToPixels(widthInChars);
-        Table table = fTableViewer.getTable();
-        table.setLayoutData(gd);
-        table.setFont(container.getFont());
-        return parent;
-    }
-
-    /**
-     * Return the style flags for the table viewer.
-     * @return int
-     */
-    protected int getTableStyle() {
-        return SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
-    }
-
-    /*
-     * Overrides method from Dialog
-     */
-    protected void okPressed() {
-        // Build a list of selected children.
-        IStructuredSelection selection = (IStructuredSelection) fTableViewer
-                .getSelection();
-        setResult(selection.toList());
-        super.okPressed();
-    }
-
-    /**
-     * Returns the initial height of the dialog in number of characters.
-     * 
-     * @return the initial height of the dialog in number of characters
-     */
-    public int getHeightInChars() {
-        return heightInChars;
-    }
-
-    /**
-     * Returns the initial width of the dialog in number of characters.
-     * 
-     * @return the initial width of the dialog in number of characters
-     */
-    public int getWidthInChars() {
-        return widthInChars;
-    }
-
-    /**
-     * Sets the initial height of the dialog in number of characters.
-     * 
-     * @param heightInChars
-     *            the initialheight of the dialog in number of characters
-     */
-    public void setHeightInChars(int heightInChars) {
-        this.heightInChars = heightInChars;
-    }
-
-    /**
-     * Sets the initial width of the dialog in number of characters.
-     * 
-     * @param widthInChars
-     *            the initial width of the dialog in number of characters
-     */
-    public void setWidthInChars(int widthInChars) {
-        this.widthInChars = widthInChars;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListSelectionDialog.java
deleted file mode 100644
index 8765686..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/ListSelectionDialog.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * 	   Sebastian Davids <sdavids@gmx.de> - Fix for bug 90273 - [Dialogs] 
- * 			ListSelectionDialog dialog alignment
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-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.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.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A standard dialog which solicits a list of selections from the user.
- * This class is configured with an arbitrary data model represented by content
- * and label provider objects. The <code>getResult</code> method returns the
- * selected elements.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Example:
- * <pre>
- * ListSelectionDialog dlg =
- *   new ListSelectionDialog(
- *       getShell(),
- *       input,
- *       new BaseWorkbenchContentProvider(),
- *		 new WorkbenchLabelProvider(),
- *		 "Select the resources to save:");
- *	dlg.setInitialSelections(dirtyEditors);
- *	dlg.setTitle("Save Resources");
- *	dlg.open();
- * </pre>
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ListSelectionDialog extends SelectionDialog {
-    // the root element to populate the viewer with
-    private Object inputElement;
-
-    // providers for populating this dialog
-    private ILabelProvider labelProvider;
-
-    private IStructuredContentProvider contentProvider;
-
-    // the visual selection widget group
-    CheckboxTableViewer listViewer;
-
-    // sizing constants
-    private final static int SIZING_SELECTION_WIDGET_HEIGHT = 250;
-
-    private final static int SIZING_SELECTION_WIDGET_WIDTH = 300;
-
-    /**
-     * Creates a list selection dialog.
-     *
-     * @param parentShell the parent shell
-     * @param input	the root element to populate this dialog with
-     * @param contentProvider the content provider for navigating the model
-     * @param labelProvider the label provider for displaying model elements
-     * @param message the message to be displayed at the top of this dialog, or
-     *    <code>null</code> to display a default message
-     */
-    public ListSelectionDialog(Shell parentShell, Object input,
-            IStructuredContentProvider contentProvider,
-            ILabelProvider labelProvider, String message) {
-        super(parentShell);
-        setTitle(WorkbenchMessages.ListSelection_title);
-        inputElement = input;
-        this.contentProvider = contentProvider;
-        this.labelProvider = labelProvider;
-        if (message != null) {
-			setMessage(message);
-		} else {
-			setMessage(WorkbenchMessages.ListSelection_message);
-		} 
-    }
-
-    /**
-     * Add the selection and deselection buttons to the dialog.
-     * @param composite org.eclipse.swt.widgets.Composite
-     */
-    private void addSelectionButtons(Composite composite) {
-        Composite buttonComposite = new Composite(composite, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 0;
-		layout.marginWidth = 0;
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-        buttonComposite.setLayout(layout);
-        buttonComposite.setLayoutData(new GridData(SWT.END, SWT.TOP, true, false));
-
-        Button selectButton = createButton(buttonComposite,
-                IDialogConstants.SELECT_ALL_ID, SELECT_ALL_TITLE, false);
-
-        SelectionListener listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                listViewer.setAllChecked(true);
-            }
-        };
-        selectButton.addSelectionListener(listener);
-
-        Button deselectButton = createButton(buttonComposite,
-                IDialogConstants.DESELECT_ALL_ID, DESELECT_ALL_TITLE, false);
-
-        listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                listViewer.setAllChecked(false);
-            }
-        };
-        deselectButton.addSelectionListener(listener);
-    }
-
-    /**
-     * Visually checks the previously-specified elements in this dialog's list 
-     * viewer.
-     */
-    private void checkInitialSelections() {
-        Iterator itemsToCheck = getInitialElementSelections().iterator();
-
-        while (itemsToCheck.hasNext()) {
-			listViewer.setChecked(itemsToCheck.next(), true);
-		}
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.LIST_SELECTION_DIALOG);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Dialog.
-     */
-    protected Control createDialogArea(Composite parent) {
-        // page group
-        Composite composite = (Composite) super.createDialogArea(parent);
-        
-        initializeDialogUnits(composite);
-        
-        createMessageArea(composite);
-
-        listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-        data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
-        listViewer.getTable().setLayoutData(data);
-
-        listViewer.setLabelProvider(labelProvider);
-        listViewer.setContentProvider(contentProvider);
-
-        addSelectionButtons(composite);
-
-        initializeViewer();
-
-        // initialize page
-        if (!getInitialElementSelections().isEmpty()) {
-			checkInitialSelections();
-		}
-
-        Dialog.applyDialogFont(composite);
-        
-        return composite;
-    }
-
-    /**
-     * Returns the viewer used to show the list.
-     * 
-     * @return the viewer, or <code>null</code> if not yet created
-     */
-    protected CheckboxTableViewer getViewer() {
-        return listViewer;
-    }
-
-    /**
-     * Initializes this dialog's viewer after it has been laid out.
-     */
-    private void initializeViewer() {
-        listViewer.setInput(inputElement);
-    }
-
-    /**
-     * The <code>ListSelectionDialog</code> implementation of this 
-     * <code>Dialog</code> method builds a list of the selected elements for later
-     * retrieval by the client and closes this dialog.
-     */
-    protected void okPressed() {
-
-        // Get the input children.
-        Object[] children = contentProvider.getElements(inputElement);
-
-        // Build a list of selected children.
-        if (children != null) {
-            ArrayList list = new ArrayList();
-            for (int i = 0; i < children.length; ++i) {
-                Object element = children[i];
-                if (listViewer.getChecked(element)) {
-					list.add(element);
-				}
-            }
-            setResult(list);
-        }
-
-        super.okPressed();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java
deleted file mode 100644
index 8a45e98..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PatternFilter.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.internal.misc.StringMatcher;
-
-import com.ibm.icu.text.BreakIterator;
-
-/**
- * A filter used in conjunction with <code>FilteredTree</code>.  In order to 
- * determine if a node should be filtered it uses the content provider of the 
- * tree to do pattern matching on its children.  This causes the entire tree
- * structure to be realized.
- *  
- * @see org.eclipse.ui.dialogs.FilteredTree  
- * @since 3.2
- */
-public class PatternFilter extends ViewerFilter {
-	/*
-	 * Cache of filtered elements in the tree
-	 */
-    private Map cache = new HashMap();
-    
-    /*
-     * Maps parent elements to TRUE or FALSE
-     */
-    private Map foundAnyCache = new HashMap();
-    
-    private boolean useCache = false;
-    
-	/**
-	 * Whether to include a leading wildcard for all provided patterns.  A
-	 * trailing wildcard is always included.
-	 */
-	private boolean includeLeadingWildcard = false;
-
-	/**
-	 * The string pattern matcher used for this pattern filter.  
-	 */
-    private StringMatcher matcher;
-    
-    private boolean useEarlyReturnIfMatcherIsNull = true;
-    
-    private static Object[] EMPTY = new Object[0];
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ViewerFilter#filter(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object[])
-     */
-    public final Object[] filter(Viewer viewer, Object parent, Object[] elements) {
-    	// we don't want to optimize if we've extended the filter ... this
-    	// needs to be addressed in 3.4
-    	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=186404
-        if (matcher == null && useEarlyReturnIfMatcherIsNull) {
-			return elements;
-		}
-
-        if (!useCache) {
-        	return super.filter(viewer, parent, elements);
-        }
-        
-        Object[] filtered = (Object[]) cache.get(parent);
-        if (filtered == null) {
-        	Boolean foundAny = (Boolean) foundAnyCache.get(parent);
-        	if (foundAny != null && !foundAny.booleanValue()) {
-        		filtered = EMPTY;
-        	} else {
-        		filtered = super.filter(viewer, parent, elements);
-        	}
-            cache.put(parent, filtered);
-        }
-        return filtered;
-    }
-
-    /**
-     * Returns true if any of the elements makes it through the filter.
-     * This method uses caching if enabled; the computation is done in
-     * computeAnyVisible.
-     *  
-     * @param viewer
-     * @param parent
-     * @param elements the elements (must not be an empty array)
-     * @return true if any of the elements makes it through the filter.
-     */
-    private boolean isAnyVisible(Viewer viewer, Object parent, Object[] elements) {
-    	if (matcher == null) {
-    		return true;
-    	}
-    	
-    	if (!useCache) {
-    		return computeAnyVisible(viewer, elements);
-    	}
-    	
-    	Object[] filtered = (Object[]) cache.get(parent);
-    	if (filtered != null) {
-    		return filtered.length > 0;
-    	}
-    	Boolean foundAny = (Boolean) foundAnyCache.get(parent);
-    	if (foundAny == null) {
-    		foundAny = computeAnyVisible(viewer, elements) ? Boolean.TRUE : Boolean.FALSE;
-    		foundAnyCache.put(parent, foundAny);
-    	}
-    	return foundAny.booleanValue();
-    }
-
-	/**
-	 * Returns true if any of the elements makes it through the filter.
-	 * @param viewer
-	 * @param elements
-	 * @return
-	 */
-	private boolean computeAnyVisible(Viewer viewer, Object[] elements) {
-		boolean elementFound = false;
-		for (int i = 0; i < elements.length && !elementFound; i++) {
-			Object element = elements[i];
-			elementFound = isElementVisible(viewer, element);
-		}
-		return elementFound;
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-     */
-    public final boolean select(Viewer viewer, Object parentElement,
-			Object element) {
-        return isElementVisible(viewer, element);
-    }
-    
-    /**
-	 * Sets whether a leading wildcard should be attached to each pattern
-	 * string.
-	 * 
-	 * @param includeLeadingWildcard
-	 *            Whether a leading wildcard should be added.
-	 */
-	public final void setIncludeLeadingWildcard(
-			final boolean includeLeadingWildcard) {
-		this.includeLeadingWildcard = includeLeadingWildcard;
-	}
-
-    /**
-     * The pattern string for which this filter should select 
-     * elements in the viewer.
-     * 
-     * @param patternString
-     */
-    public void setPattern(String patternString) {
-    	// these 2 strings allow the PatternFilter to be extended in
-    	// 3.3 - https://bugs.eclipse.org/bugs/show_bug.cgi?id=186404
-    	if ("org.eclipse.ui.keys.optimization.true".equals(patternString)) { //$NON-NLS-1$
-    		useEarlyReturnIfMatcherIsNull = true;
-    		return;
-    	} else if ("org.eclipse.ui.keys.optimization.false".equals(patternString)) { //$NON-NLS-1$
-    		useEarlyReturnIfMatcherIsNull = false;
-    		return;
-    	}
-        clearCaches();
-        if (patternString == null || patternString.equals("")) { //$NON-NLS-1$
-			matcher = null;
-		} else {
-			String pattern = patternString + "*"; //$NON-NLS-1$
-			if (includeLeadingWildcard) {
-				pattern = "*" + pattern; //$NON-NLS-1$
-			}
-			matcher = new StringMatcher(pattern, true, false);
-		}
-    }
-
-	/**
-	 * Clears the caches used for optimizing this filter. Needs to be called whenever
-	 * the tree content changes.
-	 */
-	/* package */ void clearCaches() {
-		cache.clear();
-        foundAnyCache.clear();
-	}
-
-    /**
-     * Answers whether the given String matches the pattern.
-     * 
-     * @param string the String to test
-     * 
-     * @return whether the string matches the pattern
-     */
-    private boolean match(String string) {
-    	if (matcher == null) {
-			return true;
-		}
-        return matcher.match(string);
-    }
-    
-    /**
-     * Answers whether the given element is a valid selection in 
-     * the filtered tree.  For example, if a tree has items that 
-     * are categorized, the category itself may  not be a valid 
-     * selection since it is used merely to organize the elements.
-     * 
-     * @param element
-     * @return true if this element is eligible for automatic selection
-     */
-    public boolean isElementSelectable(Object element){
-    	return element != null;
-    }
-    
-    /**
-     * Answers whether the given element in the given viewer matches
-     * the filter pattern.  This is a default implementation that will 
-     * show a leaf element in the tree based on whether the provided  
-     * filter text matches the text of the given element's text, or that 
-     * of it's children (if the element has any).  
-     * 
-     * Subclasses may override this method.
-     * 
-     * @param viewer the tree viewer in which the element resides
-     * @param element the element in the tree to check for a match
-     * 
-     * @return true if the element matches the filter pattern
-     */
-    public boolean isElementVisible(Viewer viewer, Object element){
-    	return isParentMatch(viewer, element) || isLeafMatch(viewer, element);
-    }
-    
-    /**
-     * Check if the parent (category) is a match to the filter text.  The default 
-     * behavior returns true if the element has at least one child element that is 
-     * a match with the filter text.
-     * 
-     * Subclasses may override this method.
-     * 
-     * @param viewer the viewer that contains the element
-     * @param element the tree element to check
-     * @return true if the given element has children that matches the filter text
-     */
-    protected boolean isParentMatch(Viewer viewer, Object element){
-        Object[] children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer)
-                .getContentProvider()).getChildren(element);
-
-        if ((children != null) && (children.length > 0)) {
-			return isAnyVisible(viewer, element, children);
-		}	
-        return false;
-    }
-    
-    /**
-     * Check if the current (leaf) element is a match with the filter text.  
-     * The default behavior checks that the label of the element is a match. 
-     * 
-     * Subclasses should override this method.
-     * 
-     * @param viewer the viewer that contains the element
-     * @param element the tree element to check
-     * @return true if the given element's label matches the filter text
-     */
-    protected boolean isLeafMatch(Viewer viewer, Object element){
-        String labelText = ((ILabelProvider) ((StructuredViewer) viewer)
-                .getLabelProvider()).getText(element);
-        
-        if(labelText == null) {
-			return false;
-		}
-        return wordMatches(labelText);  
-    }
-    
-    /**
-     * Take the given filter text and break it down into words using a 
-     * BreakIterator.  
-     * 
-     * @param text
-     * @return an array of words
-     */
-    private String[] getWords(String text){
-    	List words = new ArrayList();
-		// Break the text up into words, separating based on whitespace and
-		// common punctuation.
-		// Previously used String.split(..., "\\W"), where "\W" is a regular
-		// expression (see the Javadoc for class Pattern).
-		// Need to avoid both String.split and regular expressions, in order to
-		// compile against JCL Foundation (bug 80053).
-		// Also need to do this in an NL-sensitive way. The use of BreakIterator
-		// was suggested in bug 90579.
-		BreakIterator iter = BreakIterator.getWordInstance();
-		iter.setText(text);
-		int i = iter.first();
-		while (i != java.text.BreakIterator.DONE && i < text.length()) {
-			int j = iter.following(i);
-			if (j == java.text.BreakIterator.DONE) {
-				j = text.length();
-			}
-			// match the word
-			if (Character.isLetterOrDigit(text.charAt(i))) {
-				String word = text.substring(i, j);
-				words.add(word);
-			}
-			i = j;
-		}
-		return (String[]) words.toArray(new String[words.size()]);
-    }
-    
-	/**
-	 * Return whether or not if any of the words in text satisfy the
-	 * match critera.
-	 * 
-	 * @param text the text to match
-	 * @return boolean <code>true</code> if one of the words in text 
-	 * 					satisifes the match criteria.
-	 */
-	protected boolean wordMatches(String text) {
-		if (text == null) {
-			return false;
-		}
-		
-		//If the whole text matches we are all set
-		if(match(text)) {
-			return true;
-		}
-		
-		// Otherwise check if any of the words of the text matches
-		String[] words = getWords(text);
-		for (int i = 0; i < words.length; i++) {
-			String word = words[i];
-			if (match(word)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Can be called by the filtered tree to turn on caching.
-	 * 
-	 * @param useCache The useCache to set.
-	 */
-	void setUseCache(boolean useCache) {
-		this.useCache = useCache;
-	}    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferenceLinkArea.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferenceLinkArea.java
deleted file mode 100644
index 0642029..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferenceLinkArea.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import com.ibm.icu.text.MessageFormat;
-import java.util.Iterator;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-/**
- * The PreferenceLinkArea is the link area used to open a specific preference
- * page.
- * 
- * @since 3.1
- */
-public class PreferenceLinkArea extends Object {
-
-    private Link pageLink;
-
-    /**
-     * Create a new instance of the receiver
-     * 
-     * @param parent
-     *            the parent Composite
-     * @param style
-     *            the SWT style
-     * @param pageId
-     *            the page id
-     * @param message
-     *            the message to use as text. If this message has {0} in 
-     *            its value it will be bound with the displayed name of 
-     *            the preference page. This message must be well formed
-     *            html if you wish to link to another page.
-     * @param pageContainer -
-     *            The container another page will be opened in.
-     * @param pageData -
-     *            The data to apply to the page.
-     */
-    public PreferenceLinkArea(Composite parent, int style, final String pageId,
-            String message, final IWorkbenchPreferenceContainer pageContainer,
-            final Object pageData) {
-        pageLink = new Link(parent, style);
-
-        IPreferenceNode node = getPreferenceNode(pageId);
-        String result;
-        if (node == null) {
-			result = NLS.bind(
-                    WorkbenchMessages.PreferenceNode_NotFound, pageId);
-		} else {
-            result = MessageFormat.format(message, new String[] { node
-                    .getLabelText() });
-            
-            //Only add the selection listener if the node is found
-            pageLink.addSelectionListener(new SelectionAdapter() {
-                /*
-                 * (non-Javadoc)
-                 * 
-                 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                 */
-                public void widgetSelected(SelectionEvent e) {
-                    pageContainer.openPage(pageId, pageData);
-                }
-            });
-        }
-        pageLink.setText(result);
-
-    }
-
-    /**
-     * Get the preference node with pageId.
-     * 
-     * @param pageId
-     * @return IPreferenceNode
-     */
-    private IPreferenceNode getPreferenceNode(String pageId) {
-        Iterator iterator = PlatformUI.getWorkbench().getPreferenceManager()
-                .getElements(PreferenceManager.PRE_ORDER).iterator();
-        while (iterator.hasNext()) {
-            IPreferenceNode next = (IPreferenceNode) iterator.next();
-            if (next.getId().equals(pageId)) {
-				return next;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Return the control for the receiver.
-     * 
-     * @return Control
-     */
-    public Control getControl() {
-        return pageLink;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferencesUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferencesUtil.java
deleted file mode 100644
index fbab012..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PreferencesUtil.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.IPreferencePage;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog;
-import org.eclipse.ui.internal.dialogs.PropertyDialog;
-import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
-import org.eclipse.ui.internal.dialogs.PropertyPageManager;
-import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog;
-
-/**
- * The PreferencesUtil class is the class that opens a properties or preference
- * dialog on a set of ids.
- * 
- * @since 3.1
- */
-public final class PreferencesUtil {
-
-	
-	/**
-	 * Apply the data to the first page if there is any.
-	 * 
-	 * @param data
-	 *            The data to be applied
-	 * @param displayedIds
-	 *            The ids to filter to.
-	 * @param dialog
-	 *            The dialog to apply to.
-	 */
-	private static void applyOptions(Object data, String[] displayedIds,
-			FilteredPreferenceDialog dialog) {
-		if (data != null) {
-			dialog.setPageData(data);
-			IPreferencePage page = dialog.getCurrentPage();
-			if (page instanceof PreferencePage) {
-				((PreferencePage) page).applyData(data);
-			}
-		}
-
-		if (displayedIds != null) {
-			dialog.showOnly(displayedIds);
-		}
-	}
-
-	/**
-	 * Creates a workbench preference dialog and selects particular preference
-	 * page. If there is already a preference dialog open this dialog is used
-	 * and its selection is set to the page with id preferencePageId. Show the
-	 * other pages as filtered results using whatever filtering criteria the
-	 * search uses. It is the responsibility of the caller to then call
-	 * <code>open()</code>. The call to <code>open()</code> will not return
-	 * until the dialog closes, so this is the last chance to manipulate the
-	 * dialog.
-	 * 
-	 * @param shell
-	 *            The Shell to parent the dialog off of if it is not already
-	 *            created. May be <code>null</code> in which case the active
-	 *            workbench window will be used if available.
-	 * @param preferencePageId
-	 *            The identifier of the preference page to open; may be
-	 *            <code>null</code>. If it is <code>null</code>, then the
-	 *            preference page is not selected or modified in any way.
-	 * @param displayedIds
-	 *            The ids of the other pages to be displayed using the same
-	 *            filtering criterea as search. If this is <code>null</code>,
-	 *            then the all preference pages are shown.
-	 * @param data
-	 *            Data that will be passed to all of the preference pages to be
-	 *            applied as specified within the page as they are created. If
-	 *            the data is <code>null</code> nothing will be called.
-	 * 
-	 * @return a preference dialog.
-	 * @since 3.1
-	 * @see PreferenceDialog#PreferenceDialog(Shell, PreferenceManager)
-	 */
-	public static final PreferenceDialog createPreferenceDialogOn(Shell shell,
-			String preferencePageId, String[] displayedIds, Object data) {
-		FilteredPreferenceDialog dialog = WorkbenchPreferenceDialog
-				.createDialogOn(shell, preferencePageId);
-
-		applyOptions(data, displayedIds, dialog);
-
-		return dialog;
-	}
-
-	/**
-	 * Creates a workbench preference dialog to a particular preference page.
-	 * Show the other pages as filtered results using whatever filtering
-	 * criteria the search uses. It is the responsibility of the caller to then
-	 * call <code>open()</code>. The call to <code>open()</code> will not
-	 * return until the dialog closes, so this is the last chance to manipulate
-	 * the dialog.
-	 * 
-	 * @param shell
-	 *            The shell to use to parent the dialog if required.
-	 * @param propertyPageId
-	 *            The identifier of the preference page to open; may be
-	 *            <code>null</code>. If it is <code>null</code>, then the
-	 *            dialog is opened with no selected page.
-	 * @param element
-	 *            IAdaptable An adaptable element to open the dialog on.
-	 * @param displayedIds
-	 *            The ids of the other pages to be displayed using the same
-	 *            filtering criterea as search. If this is <code>null</code>,
-	 *            then the all preference pages are shown.
-	 * @param data
-	 *            Data that will be passed to all of the preference pages to be
-	 *            applied as specified within the page as they are created. If
-	 *            the data is <code>null</code> nothing will be called.
-	 * 
-	 * @return A preference dialog showing properties for the selection or
-	 *         <code>null</code> if it could not be created.
-	 * @since 3.1
-	 */
-	public static final PreferenceDialog createPropertyDialogOn(Shell shell,
-			final IAdaptable element, String propertyPageId,
-			String[] displayedIds, Object data) {
-
-		FilteredPreferenceDialog dialog = PropertyDialog.createDialogOn(shell,
-				propertyPageId, element);
-
-		if (dialog == null) {
-			return null;
-		}
-
-		applyOptions(data, displayedIds, dialog);
-
-		return dialog;
-
-	}
-
-	/**
-	 * Indicates whether the specified element has at least one property page
-	 * contributor.
-	 * 
-	 * @param element
-	 *            an adapter element of a property page
-	 * @return true for having at least one contributor; false otherwise
-	 * @since 3.4
-	 */
-	public static boolean hasPropertiesContributors(Object element) {
-		if (element == null || !(element instanceof IAdaptable))
-			return false;
-		Collection contributors = PropertyPageContributorManager.getManager()
-				.getApplicableContributors(element);
-		return contributors != null && contributors.size() > 0;
-	}
-
-	/**
-	 * Return all of the properties page contributors for an element.
-	 * @param element
-	 * @return {@link IPreferenceNode}[]
-	 * @since 3.4
-	 */
-	public static IPreferenceNode[] propertiesContributorsFor(Object element) {
-		PropertyPageManager pageManager = new PropertyPageManager();
-			if (element == null) {
-			return null;
-		}
-		// load pages for the selection
-		// fill the manager with contributions from the matching contributors
-		PropertyPageContributorManager.getManager().contribute(pageManager,
-				element);
-		// testing if there are pages in the manager
-		List pages =  pageManager.getElements(PreferenceManager.PRE_ORDER);
-		IPreferenceNode[] nodes = new IPreferenceNode[pages.size()];
-		pages.toArray(nodes);
-		return nodes;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyDialogAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyDialogAction.java
deleted file mode 100644
index 3374289..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyDialogAction.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.jface.window.SameShellProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.SelectionProviderAction;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.dialogs.PropertyDialog;
-import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
-
-/**
- * Standard action for opening a Property Pages Dialog on the currently selected
- * element.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Generally speaking, this action is useful in pop-up menus because it allows
- * the user to browse and change properties of selected elements. When
- * performed, the action will bring up a Property Pages Dialog containing
- * property pages registered with the workbench for elements of the selected
- * type.
- * </p>
- * <p>
- * Although the action is capable of calculating if there are any applicable
- * pages for the current selection, this calculation is costly because it
- * require searching the workbench registry. Where performance is critical, the
- * action can simply be added to the pop-up menu. In the event of no applicable
- * pages, the action will just open an appropriate message dialog.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PropertyDialogAction extends SelectionProviderAction {
-    /**
-     * Provides the shell in which to open the property dialog.
-     */
-    private IShellProvider shellProvider;
-    
-	/**
-	 * The id of the page to open up on.
-	 */
-	private String initialPageId;
-
-
-	/**
-	 * Creates a new action for opening a property dialog on the elements from
-	 * the given selection provider.
-     * 
-	 * @param shell
-	 *            the shell in which the dialog will open
-	 * @param provider
-	 *            the selection provider whose elements the property dialog will
-	 *            describe
-     * @deprecated use PropertyDialogAction(IShellProvider, ISelectionProvider)
-	 */
-	public PropertyDialogAction(Shell shell, ISelectionProvider provider) {
-        this(new SameShellProvider(shell), provider);
-	}
-    
-    /**
-     * Creates a new action for opening a property dialog on the elements from
-     * the given selection provider.
-     * 
-     * @param shell
-     *            provides the shell in which the dialog will open
-     * @param provider
-     *            the selection provider whose elements the property dialog will
-     *            describe
-     * @since 3.1
-     */
-    public PropertyDialogAction(IShellProvider shell, ISelectionProvider provider) {
-        super(provider, WorkbenchMessages.PropertyDialog_text); 
-        Assert.isNotNull(shell);
-        this.shellProvider = shell;
-        setToolTipText(WorkbenchMessages.PropertyDialog_toolTip); 
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-                IWorkbenchHelpContextIds.PROPERTY_DIALOG_ACTION);
-    }
-
-	/**
-	 * Returns whether the provided object has pages registered in the property
-	 * page manager.
-	 * 
-	 * @param object
-	 * @return boolean
-	 */
-	private boolean hasPropertyPagesFor(Object object) {
-		return PropertyPageContributorManager.getManager().getApplicableContributors(object).size() != 0;
-	}
-
-	/**
-	 * Returns whether this action is actually applicable to the current
-	 * selection. If this action is disabled, it will return <code>false</code>
-	 * without further calculation. If it is enabled, it will check with the
-	 * workbench's property page manager to see if there are any property pages
-	 * registered for the selected element's type.
-	 * <p>
-	 * This method is generally too expensive to use when updating the enabled
-	 * state of the action on each selection change.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the selection is of size 1 and there are
-	 *         property pages for the selected element, and <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isApplicableForSelection() {
-		if (!isEnabled()) {
-			return false;
-		}
-		return isApplicableForSelection(getStructuredSelection());
-	}
-
-	/**
-	 * Returns whether this action is applicable to the current selection. This
-	 * checks that the selection is of size 1, and checks with the workbench's
-	 * property page manager to see if there are any property pages registered
-	 * for the selected element's type.
-	 * <p>
-	 * This method is generally too expensive to use when updating the enabled
-	 * state of the action on each selection change.
-	 * </p>
-	 * 
-	 * @param selection
-	 *            The selection to test
-	 * @return <code>true</code> if the selection is of size 1 and there are
-	 *         property pages for the selected element, and <code>false</code>
-	 *         otherwise
-	 */
-	public boolean isApplicableForSelection(IStructuredSelection selection) {
-		return selection.size() == 1 && hasPropertyPagesFor(selection.getFirstElement());
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IAction#run()
-	 */
-	public void run() {
-
-		PreferenceDialog dialog = createDialog();
-		if (dialog != null) {
-			dialog.open();
-		}
-	}
-
-	/**
-	 * Create the dialog for the receiver. If no pages are found, an informative
-	 * message dialog is presented instead.
-	 * 
-	 * @return PreferenceDialog or <code>null</code> if no applicable pages
-	 *         are found.
-	 * @since 3.1
-	 */
-	public PreferenceDialog createDialog() {
-
-		Object element = getStructuredSelection().getFirstElement();
-		if (element == null) {
-			return null;
-		}
-		return PropertyDialog
-				.createDialogOn(shellProvider.getShell(), initialPageId, element);
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.actions.SelectionProviderAction#selectionChanged(org.eclipse.jface.viewers.IStructuredSelection)
-	 */
-	public void selectionChanged(IStructuredSelection selection) {
-		setEnabled(selection.size() == 1 && selection.getFirstElement() != null);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyPage.java
deleted file mode 100644
index 7d1328b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/PropertyPage.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-
-/**
- * Abstract base implementation of a workbench property page (
- * <code>IWorkbenchPropertyPage</code>). The implementation is a JFace
- * preference page with an adapatable element.
- * <p>
- * Subclasses must implement the <code>createContents</code> framework method
- * to supply the property page's main control.
- * </p>
- * <p>
- * Subclasses should extend the <code>doComputeSize</code> framework method to
- * compute the size of the page's control.
- * </p>
- * <p>
- * Subclasses may override the <code>performOk</code>,
- * <code>performApply</code>,<code>performDefaults</code>,
- * <code>performCancel</code>, and <code>performHelp</code> framework
- * methods to react to the standard button events.
- * </p>
- * <p>
- * Subclasses may call the <code>noDefaultAndApplyButton</code> framework
- * method before the page's control has been created to suppress the standard
- * Apply and Defaults buttons.
- * </p>
- * 
- * @see IWorkbenchPropertyPage
- */
-public abstract class PropertyPage extends PreferencePage implements
-        IWorkbenchPropertyPage {
-    /**
-     * The element.
-     */
-    private IAdaptable element;
-
-    /**
-     * Creates a new property page.
-     */
-    public PropertyPage() {
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPropertyPage#getElement()
-     */
-    public IAdaptable getElement() {
-        return element;
-    }
-
-    /**
-     * Sets the element that owns properties shown on this page.
-     * 
-     * @param element
-     *            the element
-     */
-    public void setElement(IAdaptable element) {
-        this.element = element;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java
deleted file mode 100644
index 40c8d0b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SearchPattern.java
+++ /dev/null
@@ -1,687 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.ui.internal.misc.StringMatcher;
-
-/**
- * A search pattern defines how search results are found.
- * 
- * <p>
- * This class is intended to be subclassed by clients. A default behavior is
- * provided for each of the methods above, that clients can override if they
- * wish.
- * </p>
- * 
- * @since 3.3
- */
-public class SearchPattern {
-
-	// Rules for pattern matching: (exact, prefix, pattern) [ | case sensitive]
-	/**
-	 * Match rule: The search pattern matches exactly the search result, that
-	 * is, the source of the search result equals the search pattern. Search pattern
-	 * should start from lowerCase char.
-	 */
-	public static final int RULE_EXACT_MATCH = 0;
-
-	/**
-	 * Match rule: The search pattern is a prefix of the search result.
-	 */
-	public static final int RULE_PREFIX_MATCH = 0x0001;
-
-	/**
-	 * Match rule: The search pattern contains one or more wild cards ('*' or
-	 * '?'). A '*' wild-card can replace 0 or more characters in the search
-	 * result. A '?' wild-card replaces exactly 1 character in the search
-	 * result.
-	 */
-	public static final int RULE_PATTERN_MATCH = 0x0002;
-
-	/**
-	 * Match rule: The search pattern matches the search result only if cases
-	 * are the same. Can be combined to previous rules, e.g.
-	 * {@link #RULE_EXACT_MATCH} | {@link #RULE_CASE_SENSITIVE}
-	 */
-	public static final int RULE_CASE_SENSITIVE = 0x0008;
-
-	/**
-	 * Match rule: The search pattern is blank.
-	 */
-	public static final int RULE_BLANK_MATCH = 0x0020;
-
-	/**
-	 * Match rule: The search pattern contains a Camel Case expression. <br>
-	 * Examples:
-	 * <ul>
-	 * <li><code>NPE</code> type string pattern will match
-	 * <code>NullPointerException</code> and
-	 * <code>NpPermissionException</code> types,</li>
-	 * <li><code>NuPoEx</code> type string pattern will only match
-	 * <code>NullPointerException</code> type.</li>
-	 * </ul>
-	 * 
-	 * 
-	 * <br>
-	 * Can be combined to {@link #RULE_PREFIX_MATCH} match rule. For example,
-	 * when prefix match rule is combined with Camel Case match rule,
-	 * <code>"nPE"</code> pattern will match <code>nPException</code>. <br>
-	 * Match rule {@link #RULE_PATTERN_MATCH} may also be combined but both
-	 * rules will not be used simultaneously as they are mutually exclusive.
-	 * Used match rule depends on whether string pattern contains specific
-	 * pattern characters (e.g. '*' or '?') or not. If it does, then only
-	 * Pattern match rule will be used, otherwise only Camel Case match will be
-	 * used. For example, with <code>"NPE"</code> string pattern, search will
-	 * only use Camel Case match rule, but with <code>N*P*E*</code> string
-	 * pattern, it will use only Pattern match rule.
-	 * 
-	 */
-	public static final int RULE_CAMELCASE_MATCH = 0x0080;
-
-	private int matchRule;
-
-	private String stringPattern;
-
-	private String initialPattern;
-
-	private StringMatcher stringMatcher;
-
-	private static final char END_SYMBOL = '<';
-
-	private static final char ANY_STRING = '*';
-
-	private static final char BLANK = ' ';
-
-	private int allowedRules;
-
-	/**
-	 * Creates new instance of SearchPattern Default allowedRules for it is
-	 * result of belong logic operation: ( RULE_EXACT_MATCH | RULE_PREFIX_MATCH |
-	 * RULE_PATTERN_MATCH | RULE_CAMELCASE_MATCH )
-	 * 
-	 */
-	public SearchPattern() {
-		this(RULE_EXACT_MATCH | RULE_PREFIX_MATCH | RULE_PATTERN_MATCH
-				| RULE_CAMELCASE_MATCH | RULE_BLANK_MATCH);
-	}
-
-	/**
-	 * Creates a search pattern with the rule to apply for matching index keys.
-	 * It can be exact match, prefix match, pattern match or camelCase match.
-	 * Rule can also be combined with a case sensitivity flag.
-	 * 
-	 * @param allowedRules
-	 *            one of {@link #RULE_EXACT_MATCH}, {@link #RULE_PREFIX_MATCH},
-	 *            {@link #RULE_PATTERN_MATCH}, {@link #RULE_CASE_SENSITIVE},
-	 *            {@link #RULE_CAMELCASE_MATCH} combined with one of following
-	 *            values: {@link #RULE_EXACT_MATCH}, {@link #RULE_PREFIX_MATCH},
-	 *            {@link #RULE_PATTERN_MATCH} or {@link #RULE_CAMELCASE_MATCH}.
-	 *            e.g. {@link #RULE_EXACT_MATCH} | {@link #RULE_CASE_SENSITIVE}
-	 *            if an exact and case sensitive match is requested,
-	 *            {@link #RULE_PREFIX_MATCH} if a prefix non case sensitive
-	 *            match is requested or {@link #RULE_EXACT_MATCH} if a non case
-	 *            sensitive and erasure match is requested.<br>
-	 *            Note also that default behavior for generic types/methods
-	 *            search is to find exact matches.
-	 */
-	public SearchPattern(int allowedRules) {
-		this.allowedRules = allowedRules;
-	}
-
-	/**
-	 * Gets string pattern used by matcher
-	 * 
-	 * @return pattern
-	 */
-	public String getPattern() {
-		return this.stringPattern;
-	}
-
-	/**
-	 * @param stringPattern
-	 *            The stringPattern to set.
-	 */
-	public void setPattern(String stringPattern) {
-		this.initialPattern = stringPattern;
-		this.stringPattern = stringPattern;
-		initializePatternAndMatchRule(stringPattern);
-		matchRule = matchRule & this.allowedRules;
-		if (matchRule == RULE_PATTERN_MATCH) {
-			stringMatcher = new StringMatcher(this.stringPattern, true, false);
-		}
-	}
-
-	/**
-	 * Matches text with pattern. matching is determine by matchKind.
-	 * 
-	 * @param text
-	 * @return true if search pattern was matched with text false in other way
-	 */
-	public boolean matches(String text) {
-		switch (matchRule) {
-		case RULE_BLANK_MATCH:
-			return true;
-		case RULE_PATTERN_MATCH:
-			return stringMatcher.match(text);
-		case RULE_EXACT_MATCH:
-			return stringPattern.equalsIgnoreCase(text);
-		case RULE_CAMELCASE_MATCH:
-			if (camelCaseMatch(stringPattern, text)) {
-				return true;
-			}
-		default:
-			return startsWithIgnoreCase(text, stringPattern);
-		}
-	}
-
-	private void initializePatternAndMatchRule(String pattern) {
-		int length = pattern.length();
-		if (length == 0) {
-			matchRule = RULE_BLANK_MATCH;
-			stringPattern = pattern;
-			return;
-		}
-		char last = pattern.charAt(length - 1);
-
-		if (pattern.indexOf('*') != -1 || pattern.indexOf('?') != -1) {
-			matchRule = RULE_PATTERN_MATCH;
-			switch (last) {
-			case END_SYMBOL:
-			case BLANK:
-				stringPattern = pattern.substring(0, length - 1);
-				break;
-			case ANY_STRING:
-				stringPattern = pattern;
-				break;
-			default:
-				stringPattern = pattern + ANY_STRING;
-			}
-			return;
-		}
-
-		if (validateMatchRule(pattern, RULE_CAMELCASE_MATCH) == RULE_CAMELCASE_MATCH) {
-			matchRule = RULE_CAMELCASE_MATCH;
-			stringPattern = pattern;
-			return;
-		}
-		
-		if (last == END_SYMBOL || last == BLANK) {
-			matchRule = RULE_EXACT_MATCH;
-			stringPattern = pattern.substring(0, length - 1);
-			return;
-		}
-
-		matchRule = RULE_PREFIX_MATCH;
-		stringPattern = pattern;
-
-	}
-
-	/**
-	 * @param text
-	 * @param prefix
-	 * @return true if text starts with given prefix, ignoring case false in
-	 *         other way
-	 */
-	private boolean startsWithIgnoreCase(String text, String prefix) {
-		int textLength = text.length();
-		int prefixLength = prefix.length();
-		if (textLength < prefixLength)
-			return false;
-		for (int i = prefixLength - 1; i >= 0; i--) {
-			if (Character.toLowerCase(prefix.charAt(i)) != Character
-					.toLowerCase(text.charAt(i)))
-				return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Answers true if the pattern matches the given name using CamelCase rules,
-	 * or false otherwise. CamelCase matching does NOT accept explicit
-	 * wild-cards '*' and '?' and is inherently case sensitive. <br>
-	 * CamelCase denotes the convention of writing compound names without
-	 * spaces, and capitalizing every term. This function recognizes both upper
-	 * and lower CamelCase, depending whether the leading character is
-	 * capitalized or not. The leading part of an upper CamelCase pattern is
-	 * assumed to contain a sequence of capitals which are appearing in the
-	 * matching name; e.g. 'NPE' will match 'NullPointerException', but not
-	 * 'NewPerfData'. A lower CamelCase pattern uses a lowercase first
-	 * character. In Java, type names follow the upper CamelCase convention,
-	 * whereas method or field names follow the lower CamelCase convention. <br>
-	 * The pattern may contain lowercase characters, which will be match in a
-	 * case sensitive way. These characters must appear in sequence in the name.
-	 * For instance, 'NPExcep' will match 'NullPointerException', but not
-	 * 'NullPointerExCEPTION' or 'NuPoEx' will match 'NullPointerException', but
-	 * not 'NoPointerException'. <br>
-	 * <br>
-	 * Examples:
-	 * <ol>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;NPE&quot;
-	 *                 name = NullPointerException / NoPermissionException
-	 *                 result =&gt; true
-	 * </pre>
-	 * 
-	 * </li>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;NuPoEx&quot;
-	 *                 name = NullPointerException
-	 *                 result =&gt; true
-	 * </pre>
-	 * 
-	 * </li>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;npe&quot;
-	 *                 name = NullPointerException
-	 *                 result =&gt; false
-	 * </pre>
-	 * 
-	 * </li>
-	 * </ol>
-	 * 
-	 * @param pattern
-	 *            the given pattern
-	 * @param name
-	 *            the given name
-	 * @return true if the pattern matches the given name, false otherwise
-	 * 
-	 */
-	private boolean camelCaseMatch(String pattern, String name) {
-		if (pattern == null)
-			return true; // null pattern is equivalent to '*'
-		if (name == null)
-			return false; // null name cannot match
-
-		return camelCaseMatch(pattern, 0, pattern.length(), name, 0, name
-				.length());
-	}
-
-	/**
-	 * Answers true if a sub-pattern matches the subpart of the given name using
-	 * CamelCase rules, or false otherwise. CamelCase matching does NOT accept
-	 * explicit wild-cards '*' and '?' and is inherently case sensitive. Can
-	 * match only subset of name/pattern, considering end positions as
-	 * non-inclusive. The subpattern is defined by the patternStart and
-	 * patternEnd positions. <br>
-	 * CamelCase denotes the convention of writing compound names without
-	 * spaces, and capitalizing every term. This function recognizes both upper
-	 * and lower CamelCase, depending whether the leading character is
-	 * capitalized or not. The leading part of an upper CamelCase pattern is
-	 * assumed to contain a sequence of capitals which are appearing in the
-	 * matching name; e.g. 'NPE' will match 'NullPointerException', but not
-	 * 'NewPerfData'. A lower CamelCase pattern uses a lowercase first
-	 * character. In Java, type names follow the upper CamelCase convention,
-	 * whereas method or field names follow the lower CamelCase convention. <br>
-	 * The pattern may contain lowercase characters, which will be match in a
-	 * case sensitive way. These characters must appear in sequence in the name.
-	 * For instance, 'NPExcep' will match 'NullPointerException', but not
-	 * 'NullPointerExCEPTION' or 'NuPoEx' will match 'NullPointerException', but
-	 * not 'NoPointerException'. <br>
-	 * <br>
-	 * Examples:
-	 * <ol>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;NPE&quot;
-	 *                 patternStart = 0
-	 *                 patternEnd = 3
-	 *                 name = NullPointerException
-	 *                 nameStart = 0
-	 *                 nameEnd = 20
-	 *                 result =&gt; true
-	 * </pre>
-	 * 
-	 * </li>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;NPE&quot;
-	 *                 patternStart = 0
-	 *                 patternEnd = 3
-	 *                 name = NoPermissionException
-	 *                 nameStart = 0
-	 *                 nameEnd = 21
-	 *                 result =&gt; true
-	 * </pre>
-	 * 
-	 * </li>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;NuPoEx&quot;
-	 *                 patternStart = 0
-	 *                 patternEnd = 6
-	 *                 name = NullPointerException
-	 *                 nameStart = 0
-	 *                 nameEnd = 20
-	 *                 result =&gt; true
-	 * </pre>
-	 * 
-	 * </li>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;NuPoEx&quot;
-	 *                 patternStart = 0
-	 *                 patternEnd = 6
-	 *                 name = NoPermissionException
-	 *                 nameStart = 0
-	 *                 nameEnd = 21
-	 *                 result =&gt; false
-	 * </pre>
-	 * 
-	 * </li>
-	 * <li>
-	 * 
-	 * <pre>
-	 *                 pattern = &quot;npe&quot;
-	 *                 patternStart = 0
-	 *                 patternEnd = 3
-	 *                 name = NullPointerException
-	 *                 nameStart = 0
-	 *                 nameEnd = 20
-	 *                 result =&gt; false
-	 * </pre>
-	 * 
-	 * </li>
-	 * </ol>
-	 * 
-	 * @param pattern
-	 *            the given pattern
-	 * @param patternStart
-	 *            the start index of the pattern, inclusive
-	 * @param patternEnd
-	 *            the end index of the pattern, exclusive
-	 * @param name
-	 *            the given name
-	 * @param nameStart
-	 *            the start index of the name, inclusive
-	 * @param nameEnd
-	 *            the end index of the name, exclusive
-	 * @return true if a sub-pattern matches the subpart of the given name,
-	 *         false otherwise
-	 */
-	private boolean camelCaseMatch(String pattern, int patternStart,
-			int patternEnd, String name, int nameStart, int nameEnd) {
-		if (name == null)
-			return false; // null name cannot match
-		if (pattern == null)
-			return true; // null pattern is equivalent to '*'
-		if (patternEnd < 0)
-			patternEnd = pattern.length();
-		if (nameEnd < 0)
-			nameEnd = name.length();
-
-		if (patternEnd <= patternStart)
-			return nameEnd <= nameStart;
-		if (nameEnd <= nameStart)
-			return false;
-		// check first pattern char
-		if (name.charAt(nameStart) != pattern.charAt(patternStart)) {
-			// first char must strictly match (upper/lower)
-			return false;
-		}
-
-		int patternLength = patternEnd;
-		
-		if (pattern.charAt(patternEnd - 1) == END_SYMBOL || pattern.charAt(patternEnd - 1) == BLANK )
-			patternLength = patternEnd - 1;
-
-
-		char patternChar, nameChar;
-		int iPattern = patternStart;
-		int iName = nameStart;
-
-		// Main loop is on pattern characters
-		while (true) {
-
-			iPattern++;
-			iName++;
-
-			if (iPattern == patternEnd) {
-				// We have exhausted pattern, so it's a match
-				return true;
-			}
-
-			if (iName == nameEnd) {
-				if (iPattern == patternLength) 
-					return true;
-				// We have exhausted name (and not pattern), so it's not a match
-				return false;
-			}
-
-			// For as long as we're exactly matching, bring it on (even if it's
-			// a lower case character)
-			if ((patternChar = pattern.charAt(iPattern)) == name.charAt(iName)) {
-				continue;
-			}
-
-			// If characters are not equals, then it's not a match if
-			// patternChar is lowercase
-			if (!isPatternCharAllowed(patternChar))
-				return false;
-
-			// patternChar is uppercase, so let's find the next uppercase in
-			// name
-			while (true) {
-				if (iName == nameEnd) {
-					if ((iPattern == patternLength) && (patternChar == END_SYMBOL || patternChar == BLANK))
-						return true;
-					return false;
-				}
-
-				nameChar = name.charAt(iName);
-
-				if ((iPattern == patternLength) && (patternChar == END_SYMBOL || patternChar == BLANK)) {
-					if (isNameCharAllowed(nameChar)) {
-						return false;
-					}
-					iName++;
-					continue;
-				}
-
-				if (!isNameCharAllowed(nameChar)) {
-					// nameChar is lowercase
-					iName++;
-					// nameChar is uppercase...
-				} else if (patternChar != nameChar) {
-					// .. and it does not match patternChar, so it's not a match
-					return false;
-				} else {
-					// .. and it matched patternChar. Back to the big loop
-					break;
-				}
-			}
-			// At this point, either name has been exhausted, or it is at an
-			// uppercase letter.
-			// Since pattern is also at an uppercase letter
-		}
-	}
-
-	/**
-	 * Checks pattern's character is allowed for specified set. It could be
-	 * override if you want change logic of camelCaseMatch methods.
-	 * 
-	 * @param patternChar
-	 * @return true if patternChar is in set of allowed characters for pattern
-	 */
-	protected boolean isPatternCharAllowed(char patternChar) {
-		return Character.isUpperCase(patternChar) || patternChar == END_SYMBOL
-				|| patternChar == BLANK;
-	}
-
-	/**
-	 * Checks character of element's name is allowed for specified set. It could
-	 * be override if you want change logic of camelCaseMatch methods.
-	 * 
-	 * @param nameChar -
-	 *            name of searched element
-	 * @return if nameChar is in set of allowed characters for name of element
-	 */
-	protected boolean isNameCharAllowed(char nameChar) {
-		return Character.isUpperCase(nameChar);
-	}
-
-	/**
-	 * Returns the rule to apply for matching keys. Can be exact match, prefix
-	 * match, pattern match or camelcase match. Rule can also be combined with a
-	 * case sensitivity flag.
-	 * 
-	 * @return one of RULE_EXACT_MATCH, RULE_PREFIX_MATCH, RULE_PATTERN_MATCH,
-	 *         RULE_CAMELCASE_MATCH, combined with RULE_CASE_SENSITIVE, e.g.
-	 *         RULE_EXACT_MATCH | RULE_CASE_SENSITIVE if an exact and case
-	 *         sensitive match is requested, or RULE_PREFIX_MATCH if a prefix
-	 *         non case sensitive match is requested.
-	 */
-	public final int getMatchRule() {
-		return this.matchRule;
-	}
-
-	/**
-	 * Validate compatibility between given string pattern and match rule. <br>
-	 * Optimized (ie. returned match rule is modified) combinations are:
-	 * <ul>
-	 * <li>{@link #RULE_PATTERN_MATCH} without any '*' or '?' in string
-	 * pattern: pattern match bit is unset, </li>
-	 * <li>{@link #RULE_PATTERN_MATCH} and {@link #RULE_PREFIX_MATCH} bits
-	 * simultaneously set: prefix match bit is unset, </li>
-	 * <li>{@link #RULE_PATTERN_MATCH} and {@link #RULE_CAMELCASE_MATCH} bits
-	 * simultaneously set: camel case match bit is unset, </li>
-	 * <li>{@link #RULE_CAMELCASE_MATCH} with invalid combination of uppercase
-	 * and lowercase characters: camel case match bit is unset and replaced with
-	 * prefix match pattern, </li>
-	 * <li>{@link #RULE_CAMELCASE_MATCH} combined with
-	 * {@link #RULE_PREFIX_MATCH} and {@link #RULE_CASE_SENSITIVE} bits is
-	 * reduced to only {@link #RULE_CAMELCASE_MATCH} as Camel Case search is
-	 * already prefix and case sensitive, </li>
-	 * </ul>
-	 * <br>
-	 * Rejected (ie. returned match rule -1) combinations are:
-	 * <ul>
-	 * <li>{@link #RULE_REGEXP_MATCH} with any other match mode bit set, </li>
-	 * </ul>
-	 * 
-	 * @param stringPattern
-	 *            The string pattern
-	 * @param matchRule
-	 *            The match rule
-	 * @return Optimized valid match rule or -1 if an incompatibility was
-	 *         detected.
-	 */
-	private int validateMatchRule(String stringPattern, int matchRule) {
-
-		// Verify Pattern match rule
-		int starIndex = stringPattern.indexOf('*');
-		int questionIndex = stringPattern.indexOf('?');
-		if (starIndex < 0 && questionIndex < 0) {
-			// reset pattern match bit if any
-			matchRule &= ~RULE_PATTERN_MATCH;
-		} else {
-			// force Pattern rule
-			matchRule |= RULE_PATTERN_MATCH;
-		}
-		if ((matchRule & RULE_PATTERN_MATCH) != 0) {
-			// remove Camel Case and Prefix match bits if any
-			matchRule &= ~RULE_CAMELCASE_MATCH;
-			matchRule &= ~RULE_PREFIX_MATCH;
-		}
-
-		// Verify Camel Case match rule
-		if ((matchRule & RULE_CAMELCASE_MATCH) != 0) {
-			// Verify sting pattern validity
-			int length = stringPattern.length();
-			boolean validCamelCase = true;
-			for (int i = 0; i < length && validCamelCase; i++) {
-				char ch = stringPattern.charAt(i);
-				validCamelCase = isValidCamelCaseChar(ch);
-			}
-			validCamelCase = validCamelCase && Character.isUpperCase(stringPattern.charAt(0));
-			// Verify bits compatibility
-			if (validCamelCase) {
-				if ((matchRule & RULE_PREFIX_MATCH) != 0) {
-					if ((matchRule & RULE_CASE_SENSITIVE) != 0) {
-						// This is equivalent to Camel Case match rule
-						matchRule &= ~RULE_PREFIX_MATCH;
-						matchRule &= ~RULE_CASE_SENSITIVE;
-					}
-				}
-			} else {
-				matchRule &= ~RULE_CAMELCASE_MATCH;
-				if ((matchRule & RULE_PREFIX_MATCH) == 0) {
-					matchRule |= RULE_PREFIX_MATCH;
-					matchRule |= RULE_CASE_SENSITIVE;
-				}
-			}
-		}
-		return matchRule;
-	}
-
-	/**
-	 * Check if character is valid camelCase character
-	 * 
-	 * @param ch
-	 *            character to be validated
-	 * @return true if character is valid
-	 */
-	protected boolean isValidCamelCaseChar(char ch) {
-		return true;
-	}
-
-	/**
-	 * Tells whether the given <code>SearchPattern</code> equals this pattern.
-	 * 
-	 * @param pattern
-	 *            pattern to be checked
-	 * @return true if the given pattern equals this search pattern
-	 */
-	public boolean equalsPattern(SearchPattern pattern) {
-		return trimWildcardCharacters(pattern.initialPattern).equals(
-				trimWildcardCharacters(this.initialPattern));
-	}
-
-	/**
-	 * Tells whether the given <code>SearchPattern</code> is a sub-pattern of
-	 * this pattern.
-	 * <p>
-	 * <i>WARNING: This method is <b>not</b> defined in reading order, i.e.
-	 * <code>a.isSubPattern(b)</code> is <code>true</code> iff
-	 * <code>b</code> is a sub-pattern of <code>a</code>, and not vice-versa.
-	 * </i>
-	 * </p>
-	 * 
-	 * @param pattern
-	 *            pattern to be checked
-	 * @return true if the given pattern is a sub pattern of this search pattern
-	 */
-	public boolean isSubPattern(SearchPattern pattern) {
-		return trimWildcardCharacters(pattern.initialPattern).startsWith(
-				trimWildcardCharacters(this.initialPattern));
-	}
-
-	/**
-	 * Trims sequences of '*' characters
-	 * 
-	 * @param pattern
-	 *            string to be trimmed
-	 * @return trimmed pattern
-	 */
-	private String trimWildcardCharacters(String pattern) {
-		return pattern.replaceAll("\\*+", "\\*"); //$NON-NLS-1$ //$NON-NLS-2$		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionDialog.java
deleted file mode 100644
index 47c00dc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionDialog.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * The abstract implementation of a selection dialog. It can be primed with
- * initial selections (<code>setInitialSelections</code>), and returns the
- * final selection (via <code>getResult</code>) after completion.
- * <p>
- * Clients may subclass this dialog to inherit its selection facilities.
- * </p>
- */
-public abstract class SelectionDialog extends TrayDialog {
-	// the final collection of selected elements, or null if this dialog was
-	// canceled
-	private Object[] result;
-
-	// a collection of the initially-selected elements
-	private List initialSelections = new ArrayList();
-
-	// title of dialog
-	private String title;
-
-	// message to show user
-	private String message = ""; //$NON-NLS-1$
-
-	// dialog bounds strategy (since 3.2)
-	private int dialogBoundsStrategy = Dialog.DIALOG_PERSISTLOCATION | Dialog.DIALOG_PERSISTSIZE;
-
-	// dialog settings for storing bounds (since 3.2)
-	private IDialogSettings dialogBoundsSettings = null;
-
-	static String SELECT_ALL_TITLE = WorkbenchMessages.SelectionDialog_selectLabel;
-
-	static String DESELECT_ALL_TITLE = WorkbenchMessages.SelectionDialog_deselectLabel;
-
-	/**
-	 * Creates a dialog instance. Note that the dialog will have no visual
-	 * representation (no widgets) until it is told to open.
-	 * 
-	 * @param parentShell
-	 *            the parent shell
-	 */
-	protected SelectionDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared in Window.
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-		if (title != null) {
-			shell.setText(title);
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Dialog.
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
-				true);
-		createButton(parent, IDialogConstants.CANCEL_ID,
-				IDialogConstants.CANCEL_LABEL, false);
-	}
-
-	/**
-	 * Creates the message area for this dialog.
-	 * <p>
-	 * This method is provided to allow subclasses to decide where the message
-	 * will appear on the screen.
-	 * </p>
-	 * 
-	 * @param composite
-	 *            the parent composite
-	 * @return the message label
-	 */
-	protected Label createMessageArea(Composite composite) {
-		Label label = new Label(composite, SWT.NONE);
-		if (message != null) {
-			label.setText(message);
-		}
-		label.setFont(composite.getFont());
-		return label;
-	}
-
-	/**
-	 * Returns the initial selection in this selection dialog.
-	 * 
-	 * @deprecated use getInitialElementSelections() instead
-	 * @return the list of initial selected elements or null
-	 */
-	protected List getInitialSelections() {
-		if (initialSelections.isEmpty()) {
-			return null;
-		}
-		return getInitialElementSelections();
-	}
-
-	/**
-	 * Returns the list of initial element selections.
-	 * 
-	 * @return List
-	 */
-	protected List getInitialElementSelections() {
-		return initialSelections;
-	}
-
-	/**
-	 * Returns the message for this dialog.
-	 * 
-	 * @return the message for this dialog
-	 */
-	protected String getMessage() {
-		return message;
-	}
-
-	/**
-	 * Returns the ok button.
-	 * 
-	 * @return the ok button or <code>null</code> if the button is not created
-	 *         yet.
-	 */
-	public Button getOkButton() {
-		return getButton(IDialogConstants.OK_ID);
-	}
-
-	/**
-	 * Returns the list of selections made by the user, or <code>null</code>
-	 * if the selection was canceled.
-	 * 
-	 * @return the array of selected elements, or <code>null</code> if Cancel
-	 *         was pressed
-	 */
-	public Object[] getResult() {
-		return result;
-	}
-
-	/**
-	 * Sets the initial selection in this selection dialog to the given
-	 * elements.
-	 * 
-	 * @param selectedElements
-	 *            the array of elements to select
-	 */
-	public void setInitialSelections(Object[] selectedElements) {
-		initialSelections = new ArrayList(selectedElements.length);
-		for (int i = 0; i < selectedElements.length; i++) {
-			initialSelections.add(selectedElements[i]);
-		}
-	}
-
-	/**
-	 * Sets the initial selection in this selection dialog to the given
-	 * elements.
-	 * 
-	 * @param selectedElements
-	 *            the List of elements to select
-	 */
-	public void setInitialElementSelections(List selectedElements) {
-		initialSelections = selectedElements;
-	}
-
-	/**
-	 * Sets the message for this dialog.
-	 * 
-	 * @param message
-	 *            the message
-	 */
-	public void setMessage(String message) {
-		this.message = message;
-	}
-
-	/**
-	 * Set the selections made by the user, or <code>null</code> if the
-	 * selection was canceled.
-	 * 
-	 * @param newResult
-	 *            list of selected elements, or <code>null</code> if Cancel
-	 *            was pressed
-	 */
-	protected void setResult(List newResult) {
-		if (newResult == null) {
-			result = null;
-		} else {
-			result = new Object[newResult.size()];
-			newResult.toArray(result);
-		}
-	}
-
-	/**
-	 * Set the selections made by the user, or <code>null</code> if the
-	 * selection was canceled.
-	 * <p>
-	 * The selections may accessed using <code>getResult</code>.
-	 * </p>
-	 * 
-	 * @param newResult -
-	 *            the new values
-	 * @since 2.0
-	 */
-	protected void setSelectionResult(Object[] newResult) {
-		result = newResult;
-	}
-
-	/**
-	 * Sets the title for this dialog.
-	 * 
-	 * @param title
-	 *            the title
-	 */
-	public void setTitle(String title) {
-		this.title = title;
-	}
-
-	/**
-	 * Set the dialog settings that should be used to save the bounds of this
-	 * dialog. This method is provided so that clients that directly use
-	 * SelectionDialogs without subclassing them may specify how the bounds of
-	 * the dialog are to be saved.
-	 * 
-	 * @param settings
-	 *            the {@link IDialogSettings} that should be used to store the
-	 *            bounds of the dialog
-	 * 
-	 * @param strategy
-	 *            the integer constant specifying how the bounds are saved.
-	 *            Specified using {@link Dialog#DIALOG_PERSISTLOCATION}
-	 *            and {@link Dialog#DIALOG_PERSISTSIZE}.
-	 * 
-	 * @since 3.2
-	 * 
-	 * @see Dialog#getDialogBoundsStrategy()
-	 * @see Dialog#getDialogBoundsSettings()
-	 */
-	public void setDialogBoundsSettings(IDialogSettings settings, int strategy) {
-		dialogBoundsStrategy = strategy;
-		dialogBoundsSettings = settings;
-	}
-
-	/**
-	 * Gets the dialog settings that should be used for remembering the bounds
-	 * of the dialog, according to the dialog bounds strategy. Overridden to
-	 * provide the dialog settings that were set using
-	 * {@link #setDialogBoundsSettings(IDialogSettings, int)}.
-	 * 
-	 * @return the dialog settings used to store the dialog's location and/or
-	 *         size, or <code>null</code> if the dialog's bounds should not be
-	 *         stored.
-	 * 
-	 * @since 3.2
-	 * 
-	 * @see Dialog#getDialogBoundsStrategy()
-	 * @see #setDialogBoundsSettings(IDialogSettings, int)
-	 */
-	protected IDialogSettings getDialogBoundsSettings() {
-		return dialogBoundsSettings;
-	}
-
-	/**
-	 * Get the integer constant that describes the strategy for persisting the
-	 * dialog bounds. Overridden to provide the dialog bounds strategy that was
-	 * set using {@link #setDialogBoundsSettings(IDialogSettings, int)}.
-	 * 
-	 * @return the constant describing the strategy for persisting the dialog
-	 *         bounds.
-	 * 
-	 * @since 3.2
-	 * @see Dialog#DIALOG_PERSISTLOCATION
-	 * @see Dialog#DIALOG_PERSISTSIZE
-	 * @see Dialog#getDialogBoundsSettings()
-	 * @see #setDialogBoundsSettings(IDialogSettings, int)
-	 */
-	protected int getDialogBoundsStrategy() {
-		return dialogBoundsStrategy;
-	}
-	
-    /**
-	 * @since 3.4
-	 */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionStatusDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionStatusDialog.java
deleted file mode 100644
index fd9b5e6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/SelectionStatusDialog.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog
- *     font should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.MessageLine;
-
-/**
- * An abstract base class for dialogs with a status bar and ok/cancel buttons.
- * The status message must be passed over as StatusInfo object and can be
- * an error, warning or ok. The OK button is enabled or disabled depending
- * on the status.
- * 
- * @since 2.0
- */
-public abstract class SelectionStatusDialog extends SelectionDialog {
-
-    private MessageLine fStatusLine;
-
-    private IStatus fLastStatus;
-
-    private Image fImage;
-
-    private boolean fStatusLineAboveButtons = false;
-
-    /**
-     * Creates an instance of a <code>SelectionStatusDialog</code>.
-     * @param parent
-     */
-    public SelectionStatusDialog(Shell parent) {
-        super(parent);
-    }
-
-    /**
-     * Controls whether status line appears to the left of the buttons (default)
-     * or above them.
-     *
-     * @param aboveButtons if <code>true</code> status line is placed above buttons; if
-     * 	<code>false</code> to the right
-     */
-    public void setStatusLineAboveButtons(boolean aboveButtons) {
-        fStatusLineAboveButtons = aboveButtons;
-    }
-
-    /**
-     * Sets the image for this dialog.
-     * @param image the image.
-     */
-    public void setImage(Image image) {
-        fImage = image;
-    }
-
-    /**
-     * Returns the first element from the list of results. Returns <code>null</code>
-     * if no element has been selected.
-     *
-     * @return the first result element if one exists. Otherwise <code>null</code> is
-     *  returned.
-     */
-    public Object getFirstResult() {
-        Object[] result = getResult();
-        if (result == null || result.length == 0) {
-			return null;
-		}
-        return result[0];
-    }
-
-    /**
-     * Sets a result element at the given position.
-     * @param position
-     * @param element
-     */
-    protected void setResult(int position, Object element) {
-        Object[] result = getResult();
-        result[position] = element;
-        setResult(Arrays.asList(result));
-    }
-
-    /**
-     * Compute the result and return it.
-     */
-    protected abstract void computeResult();
-
-    /*
-     * @see Window#configureShell(shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        if (fImage != null) {
-			shell.setImage(fImage);
-		}
-    }
-
-    /**
-     * Update the dialog's status line to reflect the given status. It is safe to call
-     * this method before the dialog has been opened.
-     * @param status
-     */
-    protected void updateStatus(IStatus status) {
-        fLastStatus = status;
-        if (fStatusLine != null && !fStatusLine.isDisposed()) {
-            updateButtonsEnableState(status);
-            fStatusLine.setErrorStatus(status);
-        }
-    }
-
-    /**
-     * Update the status of the ok button to reflect the given status. Subclasses
-     * may override this method to update additional buttons.
-     * @param status
-     */
-    protected void updateButtonsEnableState(IStatus status) {
-        Button okButton = getOkButton();
-        if (okButton != null && !okButton.isDisposed()) {
-			okButton.setEnabled(!status.matches(IStatus.ERROR));
-		}
-    }
-
-    /*
-     * @see Dialog#okPressed()
-     */
-    protected void okPressed() {
-        computeResult();
-        super.okPressed();
-    }
-
-    /*
-     * @see Window#create()
-     */
-    public void create() {
-        super.create();
-        if (fLastStatus != null) {
-			updateStatus(fLastStatus);
-		}
-    }
-
-    /*
-     * @see Dialog#createButtonBar(Composite)
-     */
-    protected Control createButtonBar(Composite parent) {
-        Font font = parent.getFont();
-        Composite composite = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        if (!fStatusLineAboveButtons) {
-            layout.numColumns = 2;
-        }
-        layout.marginHeight = 0;
-        layout.marginLeft = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-        layout.marginWidth = 0;
-        composite.setLayout(layout);
-        composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        composite.setFont(font);
-
-        if (!fStatusLineAboveButtons && isHelpAvailable()) {
-        	createHelpControl(composite);
-        }
-        fStatusLine = new MessageLine(composite);
-        fStatusLine.setAlignment(SWT.LEFT);
-        GridData statusData = new GridData(GridData.FILL_HORIZONTAL);
-        fStatusLine.setErrorStatus(null);
-        fStatusLine.setFont(font);
-        if (fStatusLineAboveButtons && isHelpAvailable()) {
-        	statusData.horizontalSpan = 2;
-        	createHelpControl(composite);
-        }
-        fStatusLine.setLayoutData(statusData);
-
-		/*
-		 * Create the rest of the button bar, but tell it not to
-		 * create a help button (we've already created it).
-		 */
-		boolean helpAvailable = isHelpAvailable();
-		setHelpAvailable(false);
-		super.createButtonBar(composite);
-		setHelpAvailable(helpAvailable);
-        return composite;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java
deleted file mode 100644
index c9507b9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoArrayQuickSorter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * Quick sort to sort key-value pairs. The keys and arrays are specified
- * in separate arrays.
- * 
- * @since 2.0
- */
-/* package */class TwoArrayQuickSorter {
-
-    private Comparator fComparator;
-
-    /**
-     * Default comparator.
-     */
-    public static final class StringComparator implements Comparator {
-        private boolean fIgnoreCase;
-
-        StringComparator(boolean ignoreCase) {
-            fIgnoreCase = ignoreCase;
-        }
-
-        public int compare(Object left, Object right) {
-            return fIgnoreCase ? ((String) left)
-                    .compareToIgnoreCase((String) right) : ((String) left)
-                    .compareTo((String) right);
-        }
-    }
-
-    /**
-     * Creates a sorter with default string comparator.
-     * The keys are assumed to be strings.
-     * @param ignoreCase specifies whether sorting is case sensitive or not.
-     */
-    public TwoArrayQuickSorter(boolean ignoreCase) {
-        fComparator = new StringComparator(ignoreCase);
-    }
-
-    /**
-     * Creates a sorter with a comparator.
-     * @param comparator the comparator to order the elements. The comparator must not be <code>null</code>.
-     */
-    public TwoArrayQuickSorter(Comparator comparator) {
-        fComparator = comparator;
-    }
-
-    /**
-     * Sorts keys and values in parallel.
-     * @param keys   the keys to use for sorting.
-     * @param values the values associated with the keys.
-     */
-    public void sort(Object[] keys, Object[] values) {
-        if ((keys == null) || (values == null)) {
-            Assert.isTrue(false, "Either keys or values in null"); //$NON-NLS-1$
-            return;
-        }
-
-        if (keys.length <= 1) {
-			return;
-		}
-
-        internalSort(keys, values, 0, keys.length - 1);
-    }
-
-    private void internalSort(Object[] keys, Object[] values, int left,
-            int right) {
-        int original_left = left;
-        int original_right = right;
-
-        Object mid = keys[(left + right) / 2];
-        do {
-            while (fComparator.compare(keys[left], mid) < 0) {
-				left++;
-			}
-
-            while (fComparator.compare(mid, keys[right]) < 0) {
-				right--;
-			}
-
-            if (left <= right) {
-                swap(keys, left, right);
-                swap(values, left, right);
-                left++;
-                right--;
-            }
-        } while (left <= right);
-
-        if (original_left < right) {
-			internalSort(keys, values, original_left, right);
-		}
-
-        if (left < original_right) {
-			internalSort(keys, values, left, original_right);
-		}
-    }
-
-    /*
-     * Swaps x[a] with x[b].
-     */
-    private static final void swap(Object x[], int a, int b) {
-        Object t = x[a];
-        x[a] = x[b];
-        x[b] = t;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoPaneElementSelector.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoPaneElementSelector.java
deleted file mode 100644
index f704ad3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TwoPaneElementSelector.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   IBM Corporation - initial API and implementation 
- * 	 Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog
- *    font should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.layout.GridData;
-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.TableItem;
-
-/**
- * A list selection dialog with two panes. Duplicated entries will be folded
- * together and are displayed in the lower pane (qualifier).
- * 
- * @since 2.0
- */
-public class TwoPaneElementSelector extends AbstractElementListSelectionDialog {
-    private String fUpperListLabel;
-
-    private String fLowerListLabel;
-
-    private ILabelProvider fQualifierRenderer;
-
-    private Object[] fElements = new Object[0];
-
-    private Table fLowerList;
-
-    private Object[] fQualifierElements;
-
-    /**
-     * Creates the two pane element selector.
-     * 
-     * @param parent
-     *            the parent shell.
-     * @param elementRenderer
-     *            the element renderer.
-     * @param qualifierRenderer
-     *            the qualifier renderer.
-     */
-    public TwoPaneElementSelector(Shell parent, ILabelProvider elementRenderer,
-            ILabelProvider qualifierRenderer) {
-        super(parent, elementRenderer);
-        setSize(50, 15);
-        setAllowDuplicates(false);
-        fQualifierRenderer = qualifierRenderer;
-    }
-
-    /**
-     * Sets the upper list label. If the label is <code>null</code> (default),
-     * no label is created.
-     * 
-     * @param label
-     */
-    public void setUpperListLabel(String label) {
-        fUpperListLabel = label;
-    }
-
-    /**
-     * Sets the lower list label.
-     * 
-     * @param label
-     *            String or <code>null</code>. If the label is
-     *            <code>null</code> (default), no label is created.
-     */
-    public void setLowerListLabel(String label) {
-        fLowerListLabel = label;
-    }
-
-    /**
-     * Sets the elements to be displayed.
-     * 
-     * @param elements
-     *            the elements to be displayed.
-     */
-    public void setElements(Object[] elements) {
-        fElements = elements;
-    }
-
-    /*
-     * @see Dialog#createDialogArea(Composite)
-     */
-    public Control createDialogArea(Composite parent) {
-        Composite contents = (Composite) super.createDialogArea(parent);
-        createMessageArea(contents);
-        createFilterText(contents);
-        createLabel(contents, fUpperListLabel);
-        createFilteredList(contents);
-        createLabel(contents, fLowerListLabel);
-        createLowerList(contents);
-        setListElements(fElements);
-        List initialSelections = getInitialElementSelections();
-        if (!initialSelections.isEmpty()) {
-            Object element = initialSelections.get(0);
-            setSelection(new Object[] { element });
-            setLowerSelectedElement(element);
-        }
-        return contents;
-    }
-
-    /**
-     * Creates a label if name was not <code>null</code>.
-     * 
-     * @param parent
-     *            the parent composite.
-     * @param name
-     *            the name of the label.
-     * @return returns a label if a name was given, <code>null</code>
-     *         otherwise.
-     */
-    protected Label createLabel(Composite parent, String name) {
-        if (name == null) {
-			return null;
-		}
-        Label label = new Label(parent, SWT.NONE);
-        label.setText(name);
-        label.setFont(parent.getFont());
-        return label;
-    }
-
-    /**
-     * Creates the list widget and sets layout data.
-     * 
-     * @param parent
-     *            the parent composite.
-     * @return returns the list table widget.
-     */
-    protected Table createLowerList(Composite parent) {
-        Table list = new Table(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
-        list.addListener(SWT.Selection, new Listener() {
-            public void handleEvent(Event evt) {
-                handleLowerSelectionChanged();
-            }
-        });
-        list.addListener(SWT.MouseDoubleClick, new Listener() {
-            public void handleEvent(Event evt) {
-                handleDefaultSelected();
-            }
-        });
-        list.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                fQualifierRenderer.dispose();
-            }
-        });
-        GridData data = new GridData();
-        data.widthHint = convertWidthInCharsToPixels(50);
-        data.heightHint = convertHeightInCharsToPixels(5);
-        data.grabExcessVerticalSpace = true;
-        data.grabExcessHorizontalSpace = true;
-        data.horizontalAlignment = GridData.FILL;
-        data.verticalAlignment = GridData.FILL;
-        list.setLayoutData(data);
-        list.setFont(parent.getFont());
-        fLowerList = list;
-        return list;
-    }
-
-    /**
-     * @see SelectionStatusDialog#computeResult()
-     */
-    protected void computeResult() {
-        Object[] results = new Object[] { getLowerSelectedElement() };
-        setResult(Arrays.asList(results));
-    }
-
-    /**
-     * @see AbstractElementListSelectionDialog#handleDefaultSelected()
-     */
-    protected void handleDefaultSelected() {
-        if (validateCurrentSelection() && (getLowerSelectedElement() != null)) {
-			buttonPressed(IDialogConstants.OK_ID);
-		}
-    }
-
-    /**
-     * @see AbstractElementListSelectionDialog#handleSelectionChanged()
-     */
-    protected void handleSelectionChanged() {
-        handleUpperSelectionChanged();
-    }
-
-    private void handleUpperSelectionChanged() {
-        int index = getSelectionIndex();
-        fLowerList.removeAll();
-        if (index >= 0) {
-	        fQualifierElements = getFoldedElements(index);
-	        if (fQualifierElements == null) {
-				updateLowerListWidget(new Object[] {});
-			} else {
-				updateLowerListWidget(fQualifierElements);
-			}
-        }
-        validateCurrentSelection();
-    }
-
-    private void handleLowerSelectionChanged() {
-        validateCurrentSelection();
-    }
-
-    /**
-     * Selects an element in the lower pane.
-     * @param element
-     */
-    protected void setLowerSelectedElement(Object element) {
-        if (fQualifierElements == null) {
-			return;
-		}
-        // find matching index
-        int i;
-        for (i = 0; i != fQualifierElements.length; i++) {
-			if (fQualifierElements[i].equals(element)) {
-				break;
-			}
-		}
-        // set selection
-        if (i != fQualifierElements.length) {
-			fLowerList.setSelection(i);
-		}
-    }
-
-    /**
-     * Returns the selected element from the lower pane.
-     * @return Object
-     */
-    protected Object getLowerSelectedElement() {
-        int index = fLowerList.getSelectionIndex();
-        if (index >= 0) {
-			return fQualifierElements[index];
-		}
-        return null;
-    }
-
-    private void updateLowerListWidget(Object[] elements) {
-        int length = elements.length;
-        String[] qualifiers = new String[length];
-        for (int i = 0; i != length; i++){
-        	String text = fQualifierRenderer.getText(elements[i]);
-        	if(text == null) {
-				text = ""; //$NON-NLS-1$
-			}
-            qualifiers[i] = text;
-        }
-        TwoArrayQuickSorter sorter = new TwoArrayQuickSorter(isCaseIgnored());
-        sorter.sort(qualifiers, elements);
-        for (int i = 0; i != length; i++) {
-            TableItem item = new TableItem(fLowerList, SWT.NONE);
-            item.setText(qualifiers[i]);
-            item.setImage(fQualifierRenderer.getImage(elements[i]));
-        }
-        if (fLowerList.getItemCount() > 0) {
-			fLowerList.setSelection(0);
-		}
-    }
-
-    /*
-     * @see AbstractElementListSelectionDialog#handleEmptyList()
-     */
-    protected void handleEmptyList() {
-        super.handleEmptyList();
-        fLowerList.setEnabled(false);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TypeFilteringDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TypeFilteringDialog.java
deleted file mode 100644
index 3f757da..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/TypeFilteringDialog.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation 
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should be
- *       activated and used by other components.
- *     Markus Schorn <markus.schorn@windriver.com> - Fix for bug 136591 - 
- *       [Dialogs] TypeFilteringDialog appends unnecessary comma
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-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.Font;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorMapping;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-
-/**
- * The TypeFilteringDialog is a SelectionDialog that allows the user to select a
- * file editor.
- */
-public class TypeFilteringDialog extends SelectionDialog {
-    Button addTypesButton;
-
-    Collection initialSelections;
-
-    // the visual selection widget group
-    CheckboxTableViewer listViewer;
-
-    // sizing constants
-    private final static int SIZING_SELECTION_WIDGET_HEIGHT = 250;
-
-    private final static int SIZING_SELECTION_WIDGET_WIDTH = 300;
-
-    private final static String TYPE_DELIMITER = WorkbenchMessages.TypesFiltering_typeDelimiter; 
-
-    //Define a title for the filter entry field.
-    private String filterTitle = WorkbenchMessages.TypesFiltering_otherExtensions; 
-
-    Text userDefinedText;
-
-    IFileEditorMapping[] currentInput;
-
-    /**
-     *  Creates a type filtering dialog using the supplied entries. Set the
-     * initial selections to those whose extensions match the preselections.
-     * @param parentShell The shell to parent the dialog from.
-     * @param preselections
-     *            of String - a Collection of String to define the preselected
-     *            types
-     */
-    public TypeFilteringDialog(Shell parentShell, Collection preselections) {
-        super(parentShell);
-        setTitle(WorkbenchMessages.TypesFiltering_title); 
-        this.initialSelections = preselections;
-        setMessage(WorkbenchMessages.TypesFiltering_message); 
-    }
-
-    /**
-     * Creates a type filtering dialog using the supplied entries. Set the
-     * initial selections to those whose extensions match the preselections.
-     * 
-     * @param parentShell The shell to parent the dialog from.
-     * @param preselections
-     *            of String - a Collection of String to define the preselected
-     *            types
-     * @param filterText -
-     *            the title of the text entry field for other extensions.
-     */
-    public TypeFilteringDialog(Shell parentShell, Collection preselections,
-            String filterText) {
-        this(parentShell, preselections);
-        this.filterTitle = filterText;
-    }
-
-    /**
-     * Add the selection and deselection buttons to the dialog.
-     * 
-     * @param composite
-     *            org.eclipse.swt.widgets.Composite
-     */
-    private void addSelectionButtons(Composite composite) {
-        Composite buttonComposite = new Composite(composite, SWT.RIGHT);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        buttonComposite.setLayout(layout);
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_END
-                | GridData.GRAB_HORIZONTAL);
-        data.grabExcessHorizontalSpace = true;
-        composite.setData(data);
-        Button selectButton = createButton(buttonComposite,
-                IDialogConstants.SELECT_ALL_ID, WorkbenchMessages.WizardTransferPage_selectAll, false);
-        SelectionListener listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                listViewer.setAllChecked(true);
-            }
-        };
-        selectButton.addSelectionListener(listener);
-        Button deselectButton = createButton(buttonComposite,
-                IDialogConstants.DESELECT_ALL_ID, WorkbenchMessages.WizardTransferPage_deselectAll, false); 
-        listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                listViewer.setAllChecked(false);
-            }
-        };
-        deselectButton.addSelectionListener(listener);
-    }
-
-    /**
-     * Add the currently-specified extensions to result.
-     * @param result
-     */
-    private void addUserDefinedEntries(List result) {
-        StringTokenizer tokenizer = new StringTokenizer(userDefinedText
-                .getText(), TYPE_DELIMITER);
-        //Allow the *. and . prefix and strip out the extension
-        while (tokenizer.hasMoreTokens()) {
-            String currentExtension = tokenizer.nextToken().trim();
-            if (!currentExtension.equals("")) { //$NON-NLS-1$
-                if (currentExtension.startsWith("*.")) { //$NON-NLS-1$
-					result.add(currentExtension.substring(2));
-				} else {
-                    if (currentExtension.startsWith(".")) { //$NON-NLS-1$
-						result.add(currentExtension.substring(1));
-					} else {
-						result.add(currentExtension);
-					}
-                }
-            }
-        }
-    }
-
-    /**
-     * Visually checks the previously-specified elements in this dialog's list
-     * viewer.
-     */
-    private void checkInitialSelections() {
-        IFileEditorMapping editorMappings[] = ((EditorRegistry) PlatformUI
-				.getWorkbench().getEditorRegistry()).getUnifiedMappings();
-        ArrayList selectedMappings = new ArrayList();
-        for (int i = 0; i < editorMappings.length; i++) {
-            IFileEditorMapping mapping = editorMappings[i];
-            //Check for both extension and label matches
-            if (this.initialSelections.contains(mapping.getExtension())) {
-                listViewer.setChecked(mapping, true);
-                selectedMappings.add(mapping.getExtension());
-            } else {
-                if (this.initialSelections.contains(mapping.getLabel())) {
-                    listViewer.setChecked(mapping, true);
-                    selectedMappings.add(mapping.getLabel());
-                }
-            }
-        }
-        //Now add in the ones not selected to the user defined list
-        Iterator initialIterator = this.initialSelections.iterator();
-        StringBuffer entries = new StringBuffer();
-        while (initialIterator.hasNext()) {
-            String nextExtension = (String) initialIterator.next();
-            if (!selectedMappings.contains(nextExtension)) {
-            	if (entries.length() != 0) {
-					entries.append(',');
-            	}            		
-                entries.append(nextExtension);
-            }
-        }
-        this.userDefinedText.setText(entries.toString());
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.TYPE_FILTERING_DIALOG);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        // page group
-        Composite composite = (Composite) super.createDialogArea(parent);
-        createMessageArea(composite);
-        listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-        data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
-        listViewer.getTable().setLayoutData(data);
-        listViewer.getTable().setFont(parent.getFont());
-        listViewer.setLabelProvider(FileEditorMappingLabelProvider.INSTANCE);
-        listViewer
-                .setContentProvider(FileEditorMappingContentProvider.INSTANCE);
-        listViewer.setComparator(new ViewerComparator());
-        addSelectionButtons(composite);
-        createUserEntryGroup(composite);
-        initializeViewer();
-        // initialize page
-        if (this.initialSelections != null && !this.initialSelections.isEmpty()) {
-			checkInitialSelections();
-		}
-        return composite;
-    }
-
-    /**
-     * Create the group that shows the user defined entries for the dialog.
-     * 
-     * @param parent
-     *            the parent this is being created in.
-     */
-    private void createUserEntryGroup(Composite parent) {
-        Font font = parent.getFont();
-        // destination specification group
-        Composite userDefinedGroup = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        userDefinedGroup.setLayout(layout);
-        userDefinedGroup.setLayoutData(new GridData(
-                GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-        Label fTitle = new Label(userDefinedGroup, SWT.NONE);
-        fTitle.setFont(font);
-        fTitle.setText(filterTitle);
-        // user defined entry field
-        userDefinedText = new Text(userDefinedGroup, SWT.SINGLE | SWT.BORDER);
-        userDefinedText.setFont(font);
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-                | GridData.GRAB_HORIZONTAL);
-        userDefinedText.setLayoutData(data);
-    }
-
-    /**
-     * Return the input to the dialog.
-     * @return IFileEditorMapping[]
-     */
-    private IFileEditorMapping[] getInput() {
-        //Filter the mappings to be just those with a wildcard extension
-        if (currentInput == null) {
-            List wildcardEditors = new ArrayList();
-            IFileEditorMapping[] allMappings = ((EditorRegistry)PlatformUI.getWorkbench()
-                    .getEditorRegistry()).getUnifiedMappings();
-            for (int i = 0; i < allMappings.length; i++) {
-                if (allMappings[i].getName().equals("*")) { //$NON-NLS-1$
-					wildcardEditors.add(allMappings[i]);
-				}
-            }
-            currentInput = new IFileEditorMapping[wildcardEditors.size()];
-            wildcardEditors.toArray(currentInput);
-        }
-        return currentInput;
-    }
-
-    /**
-     * Initializes this dialog's viewer after it has been laid out.
-     */
-    private void initializeViewer() {
-        listViewer.setInput(getInput());
-    }
-
-    /**
-     * The <code>TypeFilteringDialog</code> implementation of this
-     * <code>Dialog</code> method builds a list of the selected elements for
-     * later retrieval by the client and closes this dialog.
-     */
-    protected void okPressed() {
-        // Get the input children.
-        IFileEditorMapping[] children = getInput();
-        List list = new ArrayList();
-        // Build a list of selected children.
-        for (int i = 0; i < children.length; ++i) {
-            IFileEditorMapping element = children[i];
-            if (listViewer.getChecked(element)) {
-				list.add(element.getExtension());
-			}
-        }
-        addUserDefinedEntries(list);
-        setResult(list);
-        super.okPressed();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
deleted file mode 100755
index 349eb4b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - bug 201661
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.dialogs.SimpleWorkingSetSelectionDialog;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * Instances of this class provide a reusable composite with controls that allow
- * the selection of working sets. This class is most useful in
- * {@link IWizardPage} instances that wish to create resources and pre-install
- * them into particular working sets.
- *
- * @since 3.4
- * 
- */
-public class WorkingSetConfigurationBlock {
-
-	/**
-	 * Filters the given working sets such that the following is true: for each
-	 * IWorkingSet s in result: s.getId() is element of workingSetIds
-	 * 
-	 * @param workingSets
-	 *            the array to filter
-	 * @param workingSetIds
-	 *            the acceptable working set ids
-	 * @return the filtered elements
-	 */
-	public static IWorkingSet[] filter(IWorkingSet[] workingSets,
-			String[] workingSetIds) {
-		
-		// create a copy so we can sort the array without mucking it up for clients.
-		String[] workingSetIdsCopy = new String[workingSetIds.length];
-		System.arraycopy(workingSetIds, 0, workingSetIdsCopy, 0,
-				workingSetIds.length);
-		Arrays.sort(workingSetIdsCopy);
-
-		ArrayList result = new ArrayList();
-
-		for (int i = 0; i < workingSets.length; i++) {
-			if (Arrays.binarySearch(workingSetIdsCopy, workingSets[i].getId()) >= 0)
-				result.add(workingSets[i]);
-		}
-
-		return (IWorkingSet[]) result.toArray(new IWorkingSet[result.size()]);
-	}
-
-	/**
-	 * Empty working set array constant.
-	 */
-	private static final IWorkingSet[] EMPTY_WORKING_SET_ARRAY = new IWorkingSet[0];
-
-	private static final String WORKINGSET_SELECTION_HISTORY = "workingset_selection_history"; //$NON-NLS-1$
-	private static final int MAX_HISTORY_SIZE = 5;
-
-	private Label workingSetLabel;
-	private Combo workingSetCombo;
-	private Button selectButton;
-	private Button enableButton;
-	
-	private IWorkingSet[] selectedWorkingSets;
-	private ArrayList selectionHistory;
-	private final IDialogSettings dialogSettings;
-	private final String[] workingSetTypeIds;
-
-	private final String selectLabel;
-
-	private final String comboLabel;
-
-	private final String addButtonLabel;
-
-	/**
-	 * Create a new instance of this working set block using default labels.
-	 * 
-	 * @param workingSetIds
-	 *            working set ids from which the user can choose
-	 * @param settings
-	 *            to store/load the selection history
-	 */
-	public WorkingSetConfigurationBlock(String[] workingSetIds,
-			IDialogSettings settings) {
-		this(workingSetIds, settings, null, null, null);
-	}
-	
-	/**
-	 * Create a new instance of this working set block using custom labels.
-	 * 
-	 * @param workingSetIds
-	 *            working set ids from which the user can choose
-	 * @param settings
-	 *            to store/load the selection history
-	 * @param addButtonLabel
-	 *            the label to use for the checkable enablement button. May be
-	 *            <code>null</code> to use the default value.
-	 * @param comboLabel
-	 *            the label to use for the recent working set combo. May be
-	 *            <code>null</code> to use the default value.
-	 * @param selectLabel
-	 *            the label to use for the select button. May be
-	 *            <code>null</code> to use the default value.
-	 */
-	public WorkingSetConfigurationBlock(String[] workingSetIds,
-			IDialogSettings settings, String addButtonLabel, String comboLabel, String selectLabel) {
-		Assert.isNotNull(workingSetIds);
-		Assert.isNotNull(settings);
-
-		workingSetTypeIds = workingSetIds;
-		Arrays.sort(workingSetIds); // we'll be performing some searches with these later - presort them
-		selectedWorkingSets = EMPTY_WORKING_SET_ARRAY;
-		dialogSettings = settings;
-		selectionHistory = loadSelectionHistory(settings, workingSetIds);
-		
-		this.addButtonLabel = addButtonLabel == null ? WorkbenchMessages.WorkingSetGroup_EnableWorkingSet_button
-				: addButtonLabel;
-		this.comboLabel = comboLabel == null ? WorkbenchMessages.WorkingSetConfigurationBlock_WorkingSetText_name
-				: comboLabel;
-		this.selectLabel = selectLabel == null ? WorkbenchMessages.WorkingSetConfigurationBlock_SelectWorkingSet_button
-				: selectLabel;
-	}
-	
-
-	/**
-	 * Set the current selection in the workbench.
-	 * 
-	 * @param selection
-	 *            the selection to present in the UI or <b>null</b>
-	 * @deprecated use
-	 *             {@link #setWorkingSets(IWorkingSet[])} and {@link #findApplicableWorkingSets(IStructuredSelection)}
-	 *             instead. This method will be removed before 3.4 ships.
-	 */
-	public void setSelection(IStructuredSelection selection) {
-		selectedWorkingSets = findApplicableWorkingSets(selection);
-		
-		if (workingSetCombo != null)
-			updateSelectedWorkingSets();
-	}
-	
-	/**
-	 * Set the current selection of working sets. This array will be filtered to
-	 * contain only working sets that are applicable to this instance.
-	 * 
-	 * @param workingSets
-	 *            the working sets
-	 */
-	public void setWorkingSets(IWorkingSet[] workingSets) {
-		selectedWorkingSets = filterWorkingSets(Arrays.asList(workingSets));
-		if (workingSetCombo != null)
-			updateSelectedWorkingSets();
-	}
-
-	/**
-	 * Retrieves a working set from the given <code>selection</code> or an
-	 * empty array if no working set could be retrieved. This selection is
-	 * filtered based on the criteria used to construct this instance.
-	 * 
-	 * @param selection
-	 *            the selection to retrieve the working set from
-	 * @return the selected working set or an empty array
-	 */
-	public IWorkingSet[] findApplicableWorkingSets(
-			IStructuredSelection selection) {
-		if (selection == null)
-			return EMPTY_WORKING_SET_ARRAY;
-		
-		return filterWorkingSets(selection.toList());
-	}
-
-	/**
-	 * Prune a list of working sets such that they all match the criteria set
-	 * out by this block.
-	 * 
-	 * @param elements
-	 *            the elements to filter
-	 * @return the filtered elements
-	 */
-	private IWorkingSet[] filterWorkingSets(Collection elements) {
-		ArrayList result = new ArrayList();
-		for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
-			Object element = iterator.next();
-			if (element instanceof IWorkingSet
-					&& verifyWorkingSet((IWorkingSet) element)) {
-				result.add(element);
-			}
-		}
-		return (IWorkingSet[]) result.toArray(new IWorkingSet[result.size()]);
-	}
-
-	/**
-	 * Verifies that the given working set is suitable for selection in this
-	 * block.
-	 * 
-	 * @param workingSetCandidate
-	 *            the candidate to test
-	 * @return whether it is suitable
-	 */
-	private boolean verifyWorkingSet(IWorkingSet workingSetCandidate) {
-		return !workingSetCandidate.isAggregateWorkingSet()
-				&& Arrays.binarySearch(workingSetTypeIds, workingSetCandidate
-						.getId()) >= 0 ;
-	}
-	
-	/**
-	 * Return the currently selected working sets. If the controls representing
-	 * this block are disabled this array will be empty regardless of the
-	 * currently selected values.
-	 * 
-	 * @return the selected working sets
-	 */
-	public IWorkingSet[] getSelectedWorkingSets() {
-		if (enableButton.getSelection()) {
-			return selectedWorkingSets;
-		}
-		return EMPTY_WORKING_SET_ARRAY;
-	}
-
-	/**
-	 * Add this block to the <code>parent</parent>
-	 * 
-	 * @param parent the parent to add the block to
-	 */
-	public void createContent(final Composite parent) {
-		int numColumn = 3;
-
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-		composite.setLayout(new GridLayout(numColumn, false));
-
-		enableButton = new Button(composite, SWT.CHECK);
-		enableButton
-				.setText(addButtonLabel);
-		GridData enableData = new GridData(SWT.FILL, SWT.CENTER, true, false);
-		enableData.horizontalSpan = numColumn;
-		enableButton.setLayoutData(enableData);
-		enableButton.setSelection(selectedWorkingSets.length > 0);
-
-		workingSetLabel = new Label(composite, SWT.NONE);
-		workingSetLabel
-				.setText(comboLabel);
-
-		workingSetCombo = new Combo(composite, SWT.READ_ONLY | SWT.BORDER);
-		GridData textData = new GridData(SWT.FILL, SWT.CENTER, true, false);
-		textData.horizontalSpan = numColumn - 2;
-		textData.horizontalIndent = 0;
-		workingSetCombo.setLayoutData(textData);
-
-		selectButton = new Button(composite, SWT.PUSH);
-		selectButton
-				.setText(selectLabel);
-		setButtonLayoutData(selectButton);
-		selectButton.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent e) {
-				SimpleWorkingSetSelectionDialog dialog = new SimpleWorkingSetSelectionDialog(
-						parent.getShell(), workingSetTypeIds,
-						selectedWorkingSets, false);
-				dialog
-						.setMessage(WorkbenchMessages.WorkingSetGroup_WorkingSetSelection_message);
-
-				if (dialog.open() == Window.OK) {
-					IWorkingSet[] result = dialog.getSelection();
-					if (result != null && result.length > 0) {
-						selectedWorkingSets = result;
-						PlatformUI.getWorkbench().getWorkingSetManager()
-								.addRecentWorkingSet(result[0]);
-					} else {
-						selectedWorkingSets = EMPTY_WORKING_SET_ARRAY;
-					}
-					updateWorkingSetSelection();
-				}
-			}
-		});
-
-		enableButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				updateEnableState(enableButton.getSelection());
-			}
-		});
-		updateEnableState(enableButton.getSelection());
-
-		workingSetCombo.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				updateSelectedWorkingSets();
-			}
-		});
-
-		workingSetCombo.setItems(getHistoryEntries());
-		if (selectedWorkingSets.length == 0 && selectionHistory.size() > 0) {
-			workingSetCombo.select(historyIndex((String) selectionHistory
-					.get(0)));
-			updateSelectedWorkingSets();
-		} else {
-			updateWorkingSetSelection();
-		}
-	}
-
-	private void updateEnableState(boolean enabled) {
-		workingSetLabel.setEnabled(enabled);
-		workingSetCombo
-				.setEnabled(enabled
-						&& (selectedWorkingSets.length > 0 || getHistoryEntries().length > 0));
-		selectButton.setEnabled(enabled);
-	}
-
-	private void updateWorkingSetSelection() {
-		if (selectedWorkingSets.length > 0) {
-			workingSetCombo.setEnabled(true);
-			StringBuffer buf = new StringBuffer();
-
-			buf.append(selectedWorkingSets[0].getLabel());
-			for (int i = 1; i < selectedWorkingSets.length; i++) {
-				IWorkingSet ws = selectedWorkingSets[i];
-				buf.append(',').append(' ');
-				buf.append(ws.getLabel());
-			}
-
-			String currentSelection = buf.toString();
-			int index = historyIndex(currentSelection);
-			historyInsert(currentSelection);
-			if (index >= 0) {
-				workingSetCombo.select(index);
-			} else {
-				workingSetCombo.setItems(getHistoryEntries());
-				workingSetCombo.select(historyIndex(currentSelection));
-			}
-		} else {
-			enableButton.setSelection(false);
-			updateEnableState(false);
-		}
-	}
-
-	private String[] getHistoryEntries() {
-		String[] history = (String[]) selectionHistory
-				.toArray(new String[selectionHistory.size()]);
-		Arrays.sort(history, new Comparator() {
-			public int compare(Object o1, Object o2) {
-				return Collator.getInstance().compare(o1, o2);
-			}
-		});
-		return history;
-	}
-
-	private void historyInsert(String entry) {
-		selectionHistory.remove(entry);
-		selectionHistory.add(0, entry);
-		storeSelectionHistory(dialogSettings);
-	}
-
-	private int historyIndex(String entry) {
-		for (int i = 0; i < workingSetCombo.getItemCount(); i++) {
-			if (workingSetCombo.getItem(i).equals(entry))
-				return i;
-		}
-
-		return -1;
-	}
-
-	private void updateSelectedWorkingSets() {
-		String item = workingSetCombo.getItem(workingSetCombo
-				.getSelectionIndex());
-		String[] workingSetNames = item.split(", "); //$NON-NLS-1$
-
-		IWorkingSetManager workingSetManager = PlatformUI.getWorkbench()
-				.getWorkingSetManager();
-		selectedWorkingSets = new IWorkingSet[workingSetNames.length];
-		for (int i = 0; i < workingSetNames.length; i++) {
-			IWorkingSet set = workingSetManager
-					.getWorkingSet(workingSetNames[i]);
-			Assert.isNotNull(set);
-			selectedWorkingSets[i] = set;
-		}
-	}
-
-	private void storeSelectionHistory(IDialogSettings settings) {
-		String[] history;
-		if (selectionHistory.size() > MAX_HISTORY_SIZE) {
-			List subList = selectionHistory.subList(0, MAX_HISTORY_SIZE);
-			history = (String[]) subList.toArray(new String[subList.size()]);
-		} else {
-			history = (String[]) selectionHistory
-					.toArray(new String[selectionHistory.size()]);
-		}
-		settings.put(WORKINGSET_SELECTION_HISTORY, history);
-	}
-
-	private ArrayList loadSelectionHistory(IDialogSettings settings,
-			String[] workingSetIds) {
-		String[] strings = settings.getArray(WORKINGSET_SELECTION_HISTORY);
-		if (strings == null || strings.length == 0)
-			return new ArrayList();
-
-		ArrayList result = new ArrayList();
-
-		HashSet workingSetIdsSet = new HashSet(Arrays.asList(workingSetIds));
-
-		IWorkingSetManager workingSetManager = PlatformUI.getWorkbench()
-				.getWorkingSetManager();
-		for (int i = 0; i < strings.length; i++) {
-			String[] workingSetNames = strings[i].split(", "); //$NON-NLS-1$
-			boolean valid = true;
-			for (int j = 0; j < workingSetNames.length && valid; j++) {
-				IWorkingSet workingSet = workingSetManager
-						.getWorkingSet(workingSetNames[j]);
-				if (workingSet == null) {
-					valid = false;
-				} else {
-					if (!workingSetIdsSet.contains(workingSet.getId()))
-						valid = false;
-				}
-			}
-			if (valid) {
-				result.add(strings[i]);
-			}
-		}
-
-		return result;
-	}
-	
-	/*
-	 * Copy from DialogPage with changes to accomodate the lack of a Dialog context.
-	 */
-	private GridData setButtonLayoutData(Button button) {
-		button.setFont(JFaceResources.getDialogFont());
-
-		GC gc = new GC(button);
-		gc.setFont(button.getFont());
-		FontMetrics fontMetrics = gc.getFontMetrics();
-		gc.dispose();
-		
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        int widthHint = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH);
-        Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-        data.widthHint = Math.max(widthHint, minSize.x);
-        button.setLayoutData(data);
-        return data;
-    }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetGroup.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetGroup.java
deleted file mode 100644
index 0422429..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetGroup.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-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.Group;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * Instances of this class provide a {@link WorkingSetConfigurationBlock}
- * wrapped with an SWT Group container.
- * 
- * @since 3.4
- */
-public final class WorkingSetGroup {
-
-	private WorkingSetConfigurationBlock workingSetBlock;
-
-	/**
-	 * Create a new instance of this class.
-	 * 
-	 * @param composite
-	 *            parent composite
-	 * @param currentSelection
-	 *            the initial working set selection to pass to the
-	 *            {@link WorkingSetConfigurationBlock}
-	 * @param workingSetTypes
-	 *            the types of working sets that can be selected by the
-	 *            {@link WorkingSetConfigurationBlock}
-	 */
-	public WorkingSetGroup(Composite composite,
-			IStructuredSelection currentSelection, String[] workingSetTypes) {
-		Group workingSetGroup = new Group(composite, SWT.NONE);
-		workingSetGroup.setFont(composite.getFont());
-		workingSetGroup
-				.setText(WorkbenchMessages.WorkingSetGroup_WorkingSets_group);
-		workingSetGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
-				false));
-		workingSetGroup.setLayout(new GridLayout(1, false));
-
-		workingSetBlock = new WorkingSetConfigurationBlock(workingSetTypes,
-				WorkbenchPlugin.getDefault().getDialogSettings());
-		workingSetBlock.setWorkingSets(workingSetBlock
-				.findApplicableWorkingSets(currentSelection));
-		workingSetBlock.createContent(workingSetGroup);
-	}
-
-	/**
-	 * Return the working sets selected by the contained
-	 * {@link WorkingSetConfigurationBlock}.
-	 * 
-	 * @return the selected working sets
-	 */
-	public IWorkingSet[] getSelectedWorkingSets() {
-		return workingSetBlock.getSelectedWorkingSets();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java
deleted file mode 100644
index 26eae61..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/YesNoCancelListSelectionDialog.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.dialogs;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-
-/**
- * YesNoCancelListSelectionDialog is a list selection dialog that also allows
- * the user to select no as a result.
- * 
- * @deprecated Providing Cancel in addition to Yes/No is confusing. It is better
- *             to subclass the regular ListSelectionDialog, which uses
- *             OK/Cancel, and provide a separate checkbox if necessary.
- */
-public class YesNoCancelListSelectionDialog extends ListSelectionDialog {
-    /**
-     * 
-     * Create a list selection dialog with a possible Yes/No or Cancel result. 
-     * 
-     * @param parentShell
-     * @param input
-     * @param contentProvider
-     * @param labelProvider
-     * @param message
-     * @deprecated see class comment
-     */
-    public YesNoCancelListSelectionDialog(
-            org.eclipse.swt.widgets.Shell parentShell,
-            Object input,
-            org.eclipse.jface.viewers.IStructuredContentProvider contentProvider,
-            org.eclipse.jface.viewers.ILabelProvider labelProvider,
-            String message) {
-        super(parentShell, input, contentProvider, labelProvider, message);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void buttonPressed(int buttonId) {
-        switch (buttonId) {
-        case IDialogConstants.YES_ID: {
-            yesPressed();
-            return;
-        }
-        case IDialogConstants.NO_ID: {
-            noPressed();
-            return;
-        }
-        case IDialogConstants.CANCEL_ID: {
-            cancelPressed();
-            return;
-        }
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared in Window.
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-                IWorkbenchHelpContextIds.YES_NO_CANCEL_LIST_SELECTION_DIALOG);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        createButton(parent, IDialogConstants.YES_ID,
-                IDialogConstants.YES_LABEL, true);
-        createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL,
-                false);
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-    }
-
-    /**
-     * Notifies that the no button of this dialog has been pressed.
-     * <p>
-     * The <code>Dialog</code> implementation of this framework method sets
-     * this dialog's return code to <code>IDialogConstants.NO_ID</code> and
-     * closes the dialog. Subclasses may override if desired.
-     * </p>
-     */
-    protected void noPressed() {
-        setReturnCode(IDialogConstants.NO_ID);
-        close();
-    }
-
-    /**
-     * Notifies that the yes button of this dialog has been pressed. Do the same
-     * as an OK but set the return code to YES_ID instead.
-     */
-    protected void yesPressed() {
-        okPressed();
-        setReturnCode(IDialogConstants.YES_ID);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/package.html
deleted file mode 100644
index bb802d7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/package.html
+++ /dev/null
@@ -1,18 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes for standard dialogs, wizards, and preference
-pages in the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-This package provides useful classes for the definition of wizards, property
-pages and preference pages.&nbsp; It also provides standard dialogs such
-as the Save As dialog.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/IDragAndDropService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/IDragAndDropService.java
deleted file mode 100644
index beb04f8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/IDragAndDropService.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.dnd;
-
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * This interface specifies the API for a service to be used by part authors to
- * access methods which provide support for Drag and Drop operations within the
- * workbench.
- * <p>
- * Authors should access this service using the PartSite's
- * <code>getService</code> method, passing this interface as the argument.
- * </p>
- * <p>
- * <b>NOTE:</b> This interface it not expected to be implemented by clients; it
- * is provided only to allow access to the service's methods.
- * </p>
- * <p>
- * 
- * @since 3.3
- * 
- */
-public interface IDragAndDropService {
-	/**
-	 * Causes a drop target to be added to the given control that respects the
-	 * existing site's drop behaviour in addition to the behaviour being
-	 * specified for the given control.
-	 * <p>
-	 * If a transfer type specified for the control matches one used by the site
-	 * then the control's listener is called (the client is overriding the
-	 * existing site behaviour which will no longer work).
-	 * </p>
-	 * <p>
-	 * NOTE: Site authors <b>must</b> use this method to add drop behaviour;
-	 * directly adding drop targets using SWT onto a site will cause the
-	 * standard site behaviour (i.e. dragging files / markers into the
-	 * EditorSite...) to not work when that editor is active.
-	 * </p>
-	 * <p>
-	 * Note that this method may be used more than once should the part author
-	 * wish to register different drop targets for internal controls (i.e. to
-	 * support internal DnD).
-	 * </p>
-	 * <p>
-	 * 
-	 * @param control
-	 *            The control to add the drop behaviour to
-	 * @param ops
-	 *            The Drop operations used by this target
-	 * @param transfers
-	 *            The TransferTypes used by this target
-	 * @param listener
-	 *            The listener controlling the target's behaviour
-	 */
-	public void addMergedDropTarget(Control control, int ops, Transfer[] transfers, DropTargetListener listener);
-	
-	/**
-	 * Remove any previously 'merged' drop target for this Control
-	 * 
-	 * @param control The control to remove the drop target for
-	 */
-	public void removeMergedDropTarget(Control control);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/package.html
deleted file mode 100644
index 605c979..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dnd/package.html
+++ /dev/null
@@ -1,16 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes and Interface specifications for Drag and Drop in the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-This package provides useful classes and interfaces for the definition of Drag and Drop
-behaviour in the Eclipse workbench. 
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
deleted file mode 100644
index 7aec812..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistCommandAdapter.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.fieldassist;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.jface.fieldassist.ContentProposalAdapter;
-import org.eclipse.jface.fieldassist.ControlDecoration;
-import org.eclipse.jface.fieldassist.FieldDecoration;
-import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
-import org.eclipse.jface.fieldassist.IContentProposalProvider;
-import org.eclipse.jface.fieldassist.IControlContentAdapter;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * ContentAssistCommandAdapter extends {@link ContentProposalAdapter} to invoke
- * content proposals using a specified {@link org.eclipse.ui.commands.ICommand}.
- * The ability to specify a {@link org.eclipse.jface.bindings.keys.KeyStroke}
- * that explicitly invokes content proposals is hidden by this class, and
- * instead the String id of a command is used. If no command id is specified by
- * the client, then the default workbench content assist command is used.
- * <p>
- * As of 3.3, ContentAssistCommandAdapter can be optionally configured to
- * install the content assist decoration on its control.
- * <p>
- * This class is not intended to be subclassed.
- * 
- * @since 3.2
- */
-public class ContentAssistCommandAdapter extends ContentProposalAdapter {
-
-	private static final String CONTENT_ASSIST_DECORATION_ID = "org.eclipse.ui.fieldAssist.ContentAssistField"; //$NON-NLS-1$
-	private String commandId;
-
-	/**
-	 * The command id used for content assist. (value
-	 * <code>"org.eclipse.ui.edit.text.contentAssist.proposals"</code>)
-	 */
-	public static final String CONTENT_PROPOSAL_COMMAND = "org.eclipse.ui.edit.text.contentAssist.proposals"; //$NON-NLS-1$
-
-	// Default autoactivation delay in milliseconds
-	// TODO: This should eventually be controlled by
-	// a platform UI preference.
-	private static final int DEFAULT_AUTO_ACTIVATION_DELAY = 500;
-
-	private IHandlerService handlerService;
-
-	private IHandlerActivation activeHandler;
-
-	private IHandler proposalHandler = new AbstractHandler() {
-		public Object execute(ExecutionEvent event) {
-			openProposalPopup();
-			return null;
-		}
-
-	};
-	private ControlDecoration decoration;
-
-	/**
-	 * Construct a content proposal adapter that can assist the user with
-	 * choosing content for the field. No visual indicator of content assist is
-	 * shown.
-	 * 
-	 * @param control
-	 *            the control for which the adapter is providing content assist.
-	 *            May not be <code>null</code>.
-	 * @param controlContentAdapter
-	 *            the <code>IControlContentAdapter</code> used to obtain and
-	 *            update the control's contents as proposals are accepted. May
-	 *            not be <code>null</code>.
-	 * @param proposalProvider
-	 *            the <code>IContentProposalProvider</code> used to obtain
-	 *            content proposals for this control, or <code>null</code> if
-	 *            no content proposal is available.
-	 * @param commandId
-	 *            the String id of the command that will invoke the content
-	 *            assistant. If not supplied, the default value will be
-	 *            "org.eclipse.ui.edit.text.contentAssist.proposals".
-	 * @param autoActivationCharacters
-	 *            An array of characters that trigger auto-activation of content
-	 *            proposal. If specified, these characters will trigger
-	 *            auto-activation of the proposal popup, regardless of the
-	 *            specified command id.
-	 */
-	public ContentAssistCommandAdapter(Control control,
-			IControlContentAdapter controlContentAdapter,
-			IContentProposalProvider proposalProvider, String commandId,
-			char[] autoActivationCharacters) {
-		this(control, controlContentAdapter, proposalProvider, commandId,
-				autoActivationCharacters, false);
-	}
-
-	/**
-	 * Construct a content proposal adapter that can assist the user with
-	 * choosing content for the field.
-	 * 
-	 * @param control
-	 *            the control for which the adapter is providing content assist.
-	 *            May not be <code>null</code>.
-	 * @param controlContentAdapter
-	 *            the <code>IControlContentAdapter</code> used to obtain and
-	 *            update the control's contents as proposals are accepted. May
-	 *            not be <code>null</code>.
-	 * @param proposalProvider
-	 *            the <code>IContentProposalProvider</code> used to obtain
-	 *            content proposals for this control, or <code>null</code> if
-	 *            no content proposal is available.
-	 * @param commandId
-	 *            the String id of the command that will invoke the content
-	 *            assistant. If not supplied, the default value will be
-	 *            "org.eclipse.ui.edit.text.contentAssist.proposals".
-	 * @param autoActivationCharacters
-	 *            An array of characters that trigger auto-activation of content
-	 *            proposal. If specified, these characters will trigger
-	 *            auto-activation of the proposal popup, regardless of the
-	 *            specified command id.
-	 * @param installDecoration
-	 *            A boolean that specifies whether a content assist control
-	 *            decoration should be installed. The client is responsible for
-	 *            ensuring that adequate space is reserved for the decoration.
-	 *            Clients that want more fine-grained control of the
-	 *            decoration's location or appearance should use
-	 *            <code>false</code> for this parameter, creating their own
-	 *            {@link ControlDecoration} and managing it directly.
-	 * @since 3.3
-	 */
-	public ContentAssistCommandAdapter(Control control,
-			IControlContentAdapter controlContentAdapter,
-			IContentProposalProvider proposalProvider, String commandId,
-			char[] autoActivationCharacters, boolean installDecoration) {
-		super(control, controlContentAdapter, proposalProvider, null,
-				autoActivationCharacters);
-		this.commandId = commandId;
-		if (commandId == null) {
-			this.commandId = CONTENT_PROPOSAL_COMMAND;
-		}
-
-		// If no autoactivation characters were specified, set them to the empty
-		// array so that we don't get the alphanumeric auto-trigger of our
-		// superclass.
-		if (autoActivationCharacters == null) {
-			this.setAutoActivationCharacters(new char[] {});
-		}
-		// Set a default autoactivation delay.
-		setAutoActivationDelay(DEFAULT_AUTO_ACTIVATION_DELAY);
-
-		// Add listeners to the control to manage activation of the handler
-		addListeners(control);
-
-		// Cache the handler service so we don't have to retrieve it each time
-		this.handlerService = (IHandlerService) PlatformUI.getWorkbench()
-				.getService(IHandlerService.class);
-		if (installDecoration) {
-			// Note top left is used for compatibility with 3.2, although
-			// this may change to center alignment in the future.
-			decoration = new ControlDecoration(control, SWT.TOP | SWT.LEFT);
-			decoration.setShowOnlyOnFocus(true);
-			FieldDecoration dec = getContentAssistFieldDecoration();
-			decoration.setImage(dec.getImage());
-			decoration.setDescriptionText(dec.getDescription());
-		}
-
-	}
-
-	/*
-	 * Add the listeners needed in order to activate the content assist command
-	 * on the control.
-	 */
-	private void addListeners(Control control) {
-		control.addFocusListener(new FocusListener() {
-			public void focusLost(FocusEvent e) {
-				if (activeHandler != null) {
-					handlerService.deactivateHandler(activeHandler);
-					activeHandler = null;
-				}
-			}
-
-			public void focusGained(FocusEvent e) {
-				if (isEnabled()) {
-					if (activeHandler == null) {
-						activeHandler = handlerService.activateHandler(
-								commandId, proposalHandler);
-					}
-				} else {
-					if (activeHandler != null) {
-						handlerService.deactivateHandler(activeHandler);
-					}
-					activeHandler = null;
-				}
-			}
-		});
-		control.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				if (activeHandler != null) {
-					handlerService.deactivateHandler(activeHandler);
-					activeHandler = null;
-				}
-
-			}
-		});
-	}
-
-	/**
-	 * Return the string command ID of the command used to invoke content
-	 * assist.
-	 * 
-	 * @return the command ID of the command that invokes content assist.
-	 */
-	public String getCommandId() {
-		return commandId;
-	}
-
-	/*
-	 * Return the field decoration that should be used to indicate that content
-	 * assist is available for a field. Ensure that the decoration text includes
-	 * the correct key binding.
-	 * 
-	 * @return the {@link FieldDecoration} that should be used to show content
-	 * assist.
-	 * 
-	 * @since 3.3
-	 */
-	private FieldDecoration getContentAssistFieldDecoration() {
-		FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault();
-		// Look for a decoration installed for this particular command id.
-		String decId = CONTENT_ASSIST_DECORATION_ID + getCommandId();
-		FieldDecoration dec = registry.getFieldDecoration(decId);
-
-		// If there is not one, base ours on the standard JFace one.
-		if (dec == null) {
-			FieldDecoration originalDec = registry
-					.getFieldDecoration(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
-
-			registry.registerFieldDecoration(decId, null, originalDec
-					.getImage());
-			dec = registry.getFieldDecoration(decId);
-		}
-		// Always update the decoration text since the key binding may
-		// have changed since it was last retrieved.
-		IBindingService bindingService = (IBindingService) PlatformUI
-				.getWorkbench().getService(IBindingService.class);
-		dec
-				.setDescription(NLS
-						.bind(
-								WorkbenchMessages.ContentAssist_Cue_Description_Key,
-								bindingService
-										.getBestActiveBindingFormattedFor(getCommandId())));
-
-		// Now return the field decoration
-		return dec;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * Overridden to hide and show the content assist decoration
-	 * 
-	 * @see org.eclipse.jface.fieldassist.ContentProposalAdapter#setEnabled(boolean)
-	 * @since 3.3
-	 */
-	public void setEnabled(boolean enabled) {
-		super.setEnabled(enabled);
-		if (decoration == null) {
-			return;
-		}
-		if (enabled) {
-			decoration.show();
-		} else {
-			decoration.hide();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistField.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistField.java
deleted file mode 100644
index 9ea4c4e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/ContentAssistField.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.fieldassist;
-
-import org.eclipse.jface.fieldassist.DecoratedField;
-import org.eclipse.jface.fieldassist.FieldDecoration;
-import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
-import org.eclipse.jface.fieldassist.IContentProposalProvider;
-import org.eclipse.jface.fieldassist.IControlContentAdapter;
-import org.eclipse.jface.fieldassist.IControlCreator;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * ContentAssistField utilizes the concepts of a {@link DecoratedField} and the
- * {@link ContentAssistCommandAdapter} to provide a decorated field that shows a
- * content assist cue when it gets focus and invokes content assist for a
- * specified command.
- * <p>
- * This class is not intended to be subclassed.
- * 
- * @since 3.2
- * @deprecated As of 3.3, clients should use
- *             {@link org.eclipse.jface.fieldassist.ControlDecoration} and
- *             {@link ContentAssistCommandAdapter} instead of this class.
- */
-public class ContentAssistField extends DecoratedField {
-
-	private ContentAssistCommandAdapter adapter;
-
-	private static final String CONTENT_ASSIST_DECORATION_ID = "org.eclipse.ui.fieldAssist.ContentAssistField"; //$NON-NLS-1$
-
-	/**
-	 * Construct a content assist field that shows a content assist cue and can
-	 * assist the user with choosing content for the field.
-	 * 
-	 * @param parent
-	 *            the parent of the decorated field.
-	 * @param style
-	 *            the desired style bits for the field.
-	 * @param controlCreator
-	 *            the IControlCreator used to specify the specific kind of
-	 *            control that is to be decorated.
-	 * @param controlContentAdapter
-	 *            the <code>IControlContentAdapter</code> used to obtain and
-	 *            update the control's contents as proposals are accepted. May
-	 *            not be <code>null</code>.
-	 * @param proposalProvider
-	 *            the <code>IContentProposalProvider</code> used to obtain
-	 *            content proposals for this control, or <code>null</code> if
-	 *            no content proposal is available.
-	 * @param commandId
-	 *            the String id of the command that will invoke the content
-	 *            assistant. If not supplied, the default value will be
-	 *            "org.eclipse.ui.edit.text.contentAssist.proposals".
-	 * @param autoActivationCharacters
-	 *            An array of characters that trigger auto-activation of content
-	 *            proposal. If specified, these characters will trigger
-	 *            auto-activation of the proposal popup, regardless of the
-	 *            specified command id.
-	 */
-	public ContentAssistField(Composite parent, int style,
-			IControlCreator controlCreator,
-			IControlContentAdapter controlContentAdapter,
-			IContentProposalProvider proposalProvider, String commandId,
-			char[] autoActivationCharacters) {
-
-		super(parent, style, controlCreator);
-		adapter = new ContentAssistCommandAdapter(getControl(),
-				controlContentAdapter, proposalProvider, commandId,
-				autoActivationCharacters);
-
-		addFieldDecoration(getFieldDecoration(), SWT.LEFT | SWT.TOP, true);
-
-	}
-
-	/**
-	 * Set the boolean flag that determines whether the content assist is
-	 * enabled.
-	 * 
-	 * @param enabled
-	 *            <code>true</code> if content assist is enabled and
-	 *            responding to user input, <code>false</code> if it is
-	 *            ignoring user input.
-	 * 
-	 */
-	public void setEnabled(boolean enabled) {
-		adapter.setEnabled(enabled);
-		if (enabled) {
-			showDecoration(getFieldDecoration());
-		} else {
-			hideDecoration(getFieldDecoration());
-		}
-	}
-
-	/*
-	 * Get a field decoration appropriate for cueing the user, including a
-	 * description of the active key binding.
-	 * 
-	 */
-	private FieldDecoration getFieldDecoration() {
-		FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault();
-		// Look for a decoration installed for this particular command id.
-		String decId = CONTENT_ASSIST_DECORATION_ID + adapter.getCommandId();
-		FieldDecoration dec = registry.getFieldDecoration(decId);
-
-		// If there is not one, base ours on the standard JFace one.
-		if (dec == null) {
-			FieldDecoration originalDec = registry
-					.getFieldDecoration(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
-
-			registry.registerFieldDecoration(decId, null, originalDec
-					.getImage());
-			dec = registry.getFieldDecoration(decId);
-		}
-		// Always update the decoration text since the key binding may
-		// have changed since it was last retrieved.
-		IBindingService bindingService = (IBindingService) PlatformUI
-				.getWorkbench().getService(IBindingService.class);
-		dec.setDescription(NLS.bind(
-				WorkbenchMessages.ContentAssist_Cue_Description_Key,
-				bindingService.getBestActiveBindingFormattedFor(adapter
-						.getCommandId())));
-
-		// Now return the field decoration
-		return dec;
-	}
-
-	/**
-	 * Return the ContentAssistCommandAdapter installed on the receiver. This
-	 * adapter is provided so that clients can configure the adapter if the
-	 * default values are not appropriate.
-	 * 
-	 * @return the ContentAssistCommandAdapter installed on the field.
-	 */
-	public ContentAssistCommandAdapter getContentAssistCommandAdapter() {
-		return adapter;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/package.html
deleted file mode 100644
index caa4bf8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/fieldassist/package.html
+++ /dev/null
@@ -1,19 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes that provide workbench-level UI support for content assistance 
-and common workbench field decorations.
-<h2>
-Package Specification</h2>
-This package provides workbench-level utilities that use the JFace-level
-field assist support.  It includes the WorkbenchContentAssistAdapter, which
-can invoke content assistance using a command and key binding rather than
-specifying the invocation explicitly with a KeyStroke.  
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/CollapseAllHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/CollapseAllHandler.java
deleted file mode 100644
index 29b3257..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/CollapseAllHandler.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-
-/**
- * Collapse a tree viewer.
- * <p>
- * It can be used in a part's createPartControl(Composite) method:
- * 
- * <pre>
- * IHandlerService handlerService = (IHandlerService) getSite().getService(
- * 		IHandlerService.class);
- * collapseHandler = new CollapseAllHandler(myViewer);
- * handlerService.activateHandle(CollapseAllHandler.COMMAND_ID, collapseHandler);
- * </pre>
- * 
- * The part should dispose the handler in its own dispose() method. The part
- * can provide its own collapse all handler if desired, or if it needs to
- * delegate to multiple tree viewers.
- * </p>
- * <p>
- * <b>Note</b>: This class can be instantiated. It should not be subclasses.
- * </p>
- * 
- * @since 3.4
- */
-public class CollapseAllHandler extends AbstractHandler {
-	/**
-	 * The command id for collapse all.
-	 */
-	public static final String COMMAND_ID = "org.eclipse.ui.navigate.collapseAll"; //$NON-NLS-1$
-
-	private AbstractTreeViewer treeViewer;
-
-	/**
-	 * Create the handler for this tree viewer.
-	 * 
-	 * @param viewer
-	 *            The viewer to collapse. Must not be <code>null</code>.
-	 */
-	public CollapseAllHandler(AbstractTreeViewer viewer) {
-		Assert.isNotNull(viewer);
-		treeViewer = viewer;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) {
-		treeViewer.collapseAll();
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.AbstractHandler#dispose()
-	 */
-	public void dispose() {
-		treeViewer = null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/HandlerUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/HandlerUtil.java
deleted file mode 100644
index 1174df5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/HandlerUtil.java
+++ /dev/null
@@ -1,598 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.handlers;
-
-import java.util.Collection;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Some common utilities for working with handlers in Platform UI.
- * <p>
- * <b>Note</b>: this class should not be instantiated or extended by clients.
- * </p>
- * 
- * @since 3.3
- */
-public class HandlerUtil {
-	private static void noVariableFound(ExecutionEvent event, String name)
-			throws ExecutionException {
-		throw new ExecutionException("No " + name //$NON-NLS-1$
-				+ " found while executing " + event.getCommand().getId()); //$NON-NLS-1$
-	}
-
-	private static void incorrectTypeFound(ExecutionEvent event, String name,
-			Class expectedType, Class wrongType) throws ExecutionException {
-		throw new ExecutionException("Incorrect type for " //$NON-NLS-1$
-				+ name
-				+ " found while executing " //$NON-NLS-1$
-				+ event.getCommand().getId()
-				+ ", expected " + expectedType.getName() //$NON-NLS-1$
-				+ " found " + wrongType.getName()); //$NON-NLS-1$
-	}
-
-	/**
-	 * Extract the variable.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @param name
-	 *            The variable name to extract.
-	 * @return The object from the application context, or <code>null</code>
-	 *         if it could not be found.
-	 */
-	public static Object getVariable(ExecutionEvent event, String name) {
-		if (event.getApplicationContext() instanceof IEvaluationContext) {
-			Object var = ((IEvaluationContext) event.getApplicationContext())
-					.getVariable(name);
-			return var == IEvaluationContext.UNDEFINED_VARIABLE ? null : var;
-		}
-		return null;
-	}
-
-	/**
-	 * Extract the variable.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @param name
-	 *            The variable name to extract.
-	 * @return The object from the application context. Will not return
-	 *         <code>null</code>.
-	 * @throws ExecutionException
-	 *             if the variable is not found.
-	 */
-	public static Object getVariableChecked(ExecutionEvent event, String name)
-			throws ExecutionException {
-		Object o = getVariable(event, name);
-		if (o == null) {
-			noVariableFound(event, name);
-		}
-		return o;
-	}
-
-	/**
-	 * Extract the variable.
-	 * 
-	 * @param context
-	 *            The IEvaluationContext or <code>null</code>
-	 * @param name
-	 *            The variable name to extract.
-	 * @return The object from the application context, or <code>null</code>
-	 *         if it could not be found.
-	 * @since 3.4
-	 */
-	public static Object getVariable(Object context, String name) {
-		if (context instanceof IEvaluationContext) {
-			Object var = ((IEvaluationContext) context).getVariable(name);
-			return var == IEvaluationContext.UNDEFINED_VARIABLE ? null : var;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active contexts.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return a collection of String contextIds, or <code>null</code>.
-	 */
-	public static Collection getActiveContexts(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_CONTEXT_NAME);
-		if (o instanceof Collection) {
-			return (Collection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active contexts.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return a collection of String contextIds. Will not return
-	 *         <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the context variable is not found.
-	 */
-	public static Collection getActiveContextsChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_CONTEXT_NAME);
-		if (!(o instanceof Collection)) {
-			incorrectTypeFound(event, ISources.ACTIVE_CONTEXT_NAME,
-					Collection.class, o.getClass());
-		}
-		return (Collection) o;
-	}
-
-	/**
-	 * Return the active shell. Is not necessarily the active workbench window
-	 * shell.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active shell, or <code>null</code>.
-	 */
-	public static Shell getActiveShell(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_SHELL_NAME);
-		if (o instanceof Shell) {
-			return (Shell) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active shell. Is not necessarily the active workbench window
-	 * shell.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active shell. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active shell variable is not found.
-	 */
-	public static Shell getActiveShellChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_SHELL_NAME);
-		if (!(o instanceof Shell)) {
-			incorrectTypeFound(event, ISources.ACTIVE_SHELL_NAME, Shell.class,
-					o.getClass());
-		}
-		return (Shell) o;
-	}
-
-	/**
-	 * Return the active workbench window.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active workbench window, or <code>null</code>.
-	 */
-	public static IWorkbenchWindow getActiveWorkbenchWindow(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-		if (o instanceof IWorkbenchWindow) {
-			return (IWorkbenchWindow) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active workbench window.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active workbench window. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active workbench window variable is not found.
-	 */
-	public static IWorkbenchWindow getActiveWorkbenchWindowChecked(
-			ExecutionEvent event) throws ExecutionException {
-		Object o = getVariableChecked(event,
-				ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-		if (!(o instanceof IWorkbenchWindow)) {
-			incorrectTypeFound(event, ISources.ACTIVE_WORKBENCH_WINDOW_NAME,
-					IWorkbenchWindow.class, o.getClass());
-		}
-		return (IWorkbenchWindow) o;
-	}
-
-	/**
-	 * Return the active editor.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active editor, or <code>null</code>.
-	 */
-	public static IEditorPart getActiveEditor(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_EDITOR_NAME);
-		if (o instanceof IEditorPart) {
-			return (IEditorPart) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active editor.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active editor. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active editor variable is not found.
-	 */
-	public static IEditorPart getActiveEditorChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_EDITOR_NAME);
-		if (!(o instanceof IEditorPart)) {
-			incorrectTypeFound(event, ISources.ACTIVE_EDITOR_NAME,
-					IEditorPart.class, o.getClass());
-		}
-		return (IEditorPart) o;
-	}
-
-	/**
-	 * Return the part id of the active editor.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the part id of the active editor, or <code>null</code>.
-	 */
-	public static String getActiveEditorId(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_EDITOR_ID_NAME);
-		if (o instanceof String) {
-			return (String) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the part id of the active editor.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the part id of the active editor. Will not return
-	 *         <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active editor id variable is not found.
-	 */
-	public static String getActiveEditorIdChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_EDITOR_ID_NAME);
-		if (!(o instanceof String)) {
-			incorrectTypeFound(event, ISources.ACTIVE_EDITOR_ID_NAME,
-					String.class, o.getClass());
-		}
-		return (String) o;
-	}
-
-	/**
-	 * Return the active part.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active part, or <code>null</code>.
-	 */
-	public static IWorkbenchPart getActivePart(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_PART_NAME);
-		if (o instanceof IWorkbenchPart) {
-			return (IWorkbenchPart) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active part.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active part. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active part variable is not found.
-	 */
-	public static IWorkbenchPart getActivePartChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_PART_NAME);
-		if (!(o instanceof IWorkbenchPart)) {
-			incorrectTypeFound(event, ISources.ACTIVE_PART_NAME,
-					IWorkbenchPart.class, o.getClass());
-		}
-		return (IWorkbenchPart) o;
-	}
-
-	/**
-	 * Return the part id of the active part.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the part id of the active part, or <code>null</code>.
-	 */
-	public static String getActivePartId(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_PART_ID_NAME);
-		if (o instanceof String) {
-			return (String) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the part id of the active part.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the part id of the active part. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active part id variable is not found.
-	 */
-	public static String getActivePartIdChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_PART_ID_NAME);
-		if (!(o instanceof String)) {
-			incorrectTypeFound(event, ISources.ACTIVE_PART_ID_NAME,
-					String.class, o.getClass());
-		}
-		return (String) o;
-	}
-
-	/**
-	 * Return the active part site.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active part site, or <code>null</code>.
-	 */
-	public static IWorkbenchSite getActiveSite(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_SITE_NAME);
-		if (o instanceof IWorkbenchSite) {
-			return (IWorkbenchSite) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active part site.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active part site. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active part site variable is not found.
-	 */
-	public static IWorkbenchSite getActiveSiteChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_SITE_NAME);
-		if (!(o instanceof IWorkbenchSite)) {
-			incorrectTypeFound(event, ISources.ACTIVE_SITE_NAME,
-					IWorkbenchSite.class, o.getClass());
-		}
-		return (IWorkbenchSite) o;
-	}
-
-	/**
-	 * Return the current selection.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the current selection, or <code>null</code>.
-	 */
-	public static ISelection getCurrentSelection(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		if (o instanceof ISelection) {
-			return (ISelection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the current selection.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the current selection. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the current selection variable is not found.
-	 */
-	public static ISelection getCurrentSelectionChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event,
-				ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		if (!(o instanceof ISelection)) {
-			incorrectTypeFound(event, ISources.ACTIVE_CURRENT_SELECTION_NAME,
-					ISelection.class, o.getClass());
-		}
-		return (ISelection) o;
-	}
-
-	/**
-	 * Return the menu IDs that were applied to the registered context menu. For
-	 * example, #CompilationUnitEditorContext.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the menu IDs, or <code>null</code>.
-	 */
-	public static Collection getActiveMenus(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_MENU_NAME);
-		if (o instanceof Collection) {
-			return (Collection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the menu IDs that were applied to the registered context menu. For
-	 * example, #CompilationUnitEditorContext.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the menu IDs. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active menus variable is not found.
-	 */
-	public static Collection getActiveMenusChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.ACTIVE_MENU_NAME);
-		if (!(o instanceof Collection)) {
-			incorrectTypeFound(event, ISources.ACTIVE_MENU_NAME,
-					Collection.class, o.getClass());
-		}
-		return (Collection) o;
-	}
-
-	/**
-	 * Return the active menu selection. The active menu is a registered context
-	 * menu.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active menu selection, or <code>null</code>.
-	 */
-	public static ISelection getActiveMenuSelection(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_MENU_SELECTION_NAME);
-		if (o instanceof ISelection) {
-			return (ISelection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active menu selection. The active menu is a registered context
-	 * menu.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active menu selection. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active menu selection variable is not found.
-	 */
-	public static ISelection getActiveMenuSelectionChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event,
-				ISources.ACTIVE_MENU_SELECTION_NAME);
-		if (!(o instanceof ISelection)) {
-			incorrectTypeFound(event, ISources.ACTIVE_MENU_SELECTION_NAME,
-					ISelection.class, o.getClass());
-		}
-		return (ISelection) o;
-	}
-
-	/**
-	 * Return the active menu editor input, if available. The active menu is a
-	 * registered context menu.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active menu editor, or <code>null</code>.
-	 */
-	public static ISelection getActiveMenuEditorInput(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.ACTIVE_MENU_EDITOR_INPUT_NAME);
-		if (o instanceof ISelection) {
-			return (ISelection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active menu editor input. The active menu is a registered
-	 * context menu. Some context menus do not include the editor input which
-	 * will throw an exception.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the active menu editor input. Will not return <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the active menu editor input variable is not found.
-	 */
-	public static ISelection getActiveMenuEditorInputChecked(
-			ExecutionEvent event) throws ExecutionException {
-		Object o = getVariableChecked(event,
-				ISources.ACTIVE_MENU_EDITOR_INPUT_NAME);
-		if (!(o instanceof ISelection)) {
-			incorrectTypeFound(event, ISources.ACTIVE_MENU_EDITOR_INPUT_NAME,
-					ISelection.class, o.getClass());
-		}
-		return (ISelection) o;
-	}
-
-	/**
-	 * Return the ShowInContext selection.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the show in selection, or <code>null</code>.
-	 * @since 3.4
-	 */
-	public static ISelection getShowInSelection(ExecutionEvent event) {
-		Object o = getVariable(event, ISources.SHOW_IN_SELECTION);
-		if (o instanceof ISelection) {
-			return (ISelection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the ShowInContext selection. Will not return <code>null</code>.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the show in selection, or <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the show in selection variable is not found.
-	 * @since 3.4
-	 */
-	public static ISelection getShowInSelectionChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object o = getVariableChecked(event, ISources.SHOW_IN_SELECTION);
-		if (!(o instanceof ISelection)) {
-			incorrectTypeFound(event, ISources.SHOW_IN_SELECTION,
-					ISelection.class, o.getClass());
-		}
-		return (ISelection) o;
-	}
-
-	/**
-	 * Return the ShowInContext input.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the show in input, or <code>null</code>.
-	 * @since 3.4
-	 */
-	public static Object getShowInInput(ExecutionEvent event) {
-		Object var = getVariable(event, ISources.SHOW_IN_INPUT);
-		return var;
-	}
-
-	/**
-	 * Return the ShowInContext input. Will not return <code>null</code>.
-	 * 
-	 * @param event
-	 *            The execution event that contains the application context
-	 * @return the show in input, or <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the show in input variable is not found.
-	 * @since 3.4
-	 */
-	public static Object getShowInInputChecked(ExecutionEvent event)
-			throws ExecutionException {
-		Object var = getVariableChecked(event, ISources.SHOW_IN_INPUT);
-		return var;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerActivation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerActivation.java
deleted file mode 100644
index 4f34642..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerActivation.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.handlers;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.internal.services.IEvaluationResultCache;
-
-/**
- * <p>
- * A token representing the activation of a handler. This token can later be
- * used to cancel that activation. Without this token, then handler will only
- * become inactive if the component in which the handler was activated is
- * destroyed.
- * </p>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @since 3.1
- * @see org.eclipse.ui.ISources
- * @see org.eclipse.ui.ISourceProvider
- */
-public interface IHandlerActivation extends IEvaluationResultCache, Comparable {
-
-	/**
-	 * The depth at which the root exists.
-	 * 
-	 * @since 3.2
-	 */
-	public static final int ROOT_DEPTH = 1;
-
-	/**
-	 * Clears the cached computation of the <code>isActive</code> method, if
-	 * any. This method is only intended for internal use. It provides a
-	 * mechanism by which <code>ISourceProvider</code> events can invalidate
-	 * state on a <code>IHandlerActivation</code> instance.
-	 * 
-	 * @deprecated Use {@link IEvaluationResultCache#clearResult()} instead.
-	 */
-	public void clearActive();
-
-	/**
-	 * Returns the identifier of the command whose handler is being activated.
-	 * 
-	 * @return The command identifier; never <code>null</code>.
-	 */
-	public String getCommandId();
-
-	/**
-	 * Returns the depth at which this activation was created within the
-	 * services hierarchy. The root of the hierarchy is at a depth of
-	 * <code>1</code>. This is used as the final tie-breaker in the event
-	 * that no other method can be used to determine a winner.
-	 * 
-	 * @return The depth at which the handler was inserted into the services
-	 *         hierarchy; should be a positive integer.
-	 * @since 3.2
-	 */
-	public int getDepth();
-
-	/**
-	 * Returns the handler that should be activated.
-	 * 
-	 * @return The handler; may be <code>null</code>.
-	 */
-	public IHandler getHandler();
-
-	/**
-	 * Returns the handler service from which this activation was requested.
-	 * This is used to ensure that an activation can only be retracted from the
-	 * same service which issued it.
-	 * 
-	 * @return The handler service; never <code>null</code>.
-	 */
-	public IHandlerService getHandlerService();
-
-	/**
-	 * Returns whether this handler activation is currently active -- given the
-	 * current state of the workbench. This method should cache its computation.
-	 * The cache will be cleared by a call to <code>clearActive</code>.
-	 * 
-	 * @param context
-	 *            The context in which this state should be evaluated; must not
-	 *            be <code>null</code>.
-	 * @return <code>true</code> if the activation is currently active;
-	 *         <code>false</code> otherwise.
-	 * @deprecated Use
-	 *             {@link IEvaluationResultCache#evaluate(IEvaluationContext)}
-	 *             instead.
-	 */
-	public boolean isActive(IEvaluationContext context);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerService.java
deleted file mode 100644
index 7628fe0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/IHandlerService.java
+++ /dev/null
@@ -1,407 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.handlers;
-
-import java.util.Collection;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IHandler2;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.services.IServiceWithSources;
-
-/**
- * <p>
- * Provides services related to activating and deactivating handlers within the
- * workbench.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IHandlerService service = (IHandlerService) getSite().getService(IHandlerService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
-
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @since 3.1
- */
-public interface IHandlerService extends IServiceWithSources {
-
-	/**
-	 * <p>
-	 * Activates the given handler from a child service. This is used by slave
-	 * and nested services to promote handler activations up to the root. By
-	 * using this method, it is possible for handlers coming from a more nested
-	 * component to override the nested component.
-	 * </p>
-	 * 
-	 * @param activation
-	 *            The activation that is local to the child service; must not be
-	 *            <code>null</code>.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the service locator
-	 *         context from which this service was retrieved is destroyed. This
-	 *         activation is local to this service (i.e., it is not the
-	 *         activation that is passed as a parameter).
-	 * @since 3.2
-	 */
-	public IHandlerActivation activateHandler(IHandlerActivation activation);
-
-	/**
-	 * <p>
-	 * Activates the given handler within the context of this service. If this
-	 * service was retrieved from the workbench, then this handler will be
-	 * active globally. If the service was retrieved from a nested component,
-	 * then the handler will only be active within that component.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the handlers submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            The identifier for the command which this handler handles;
-	 *            must not be <code>null</code>.
-	 * @param handler
-	 *            The handler to activate; must not be <code>null</code>.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 */
-	public IHandlerActivation activateHandler(String commandId, IHandler handler);
-
-	/**
-	 * <p>
-	 * Activates the given handler within the context of this service. The
-	 * handler becomes active when <code>expression</code> evaluates to
-	 * <code>true</code>. This is the same as calling
-	 * {@link #activateHandler(String, IHandler, Expression, boolean)} with
-	 * global==false.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the handlers submitted through a particular
-	 * service will be cleaned up when that service is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            The identifier for the command which this handler handles;
-	 *            must not be <code>null</code>.
-	 * @param handler
-	 *            The handler to activate; must not be <code>null</code>.
-	 * @param expression
-	 *            This expression must evaluate to <code>true</code> before
-	 *            this handler will really become active. The expression may be
-	 *            <code>null</code> if the handler should always be active.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @since 3.2
-	 */
-	public IHandlerActivation activateHandler(String commandId,
-			IHandler handler, Expression expression);
-
-	/**
-	 * <p>
-	 * Activates the given handler within the context of this service. The
-	 * handler becomes active when <code>expression</code> evaluates to
-	 * <code>true</code>. if global==<code>false</code>, then this
-	 * handler service must also be the active service to active the handler.
-	 * For example, the handler service on a part is active when that part is
-	 * active.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the handlers submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            The identifier for the command which this handler handles;
-	 *            must not be <code>null</code>.
-	 * @param handler
-	 *            The handler to activate; must not be <code>null</code>.
-	 * @param expression
-	 *            This expression must evaluate to <code>true</code> before
-	 *            this handler will really become active. The expression may be
-	 *            <code>null</code> if the handler should always be active.
-	 * @param global
-	 *            Indicates that the handler should be activated irrespectively
-	 *            of whether the corresponding workbench component (e.g.,
-	 *            window, part, etc.) is active.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @since 3.2
-	 */
-	public IHandlerActivation activateHandler(String commandId,
-			IHandler handler, Expression expression, boolean global);
-
-	/**
-	 * <p>
-	 * Activates the given handler within the context of this service. The
-	 * handler becomes active when <code>expression</code> evaluates to
-	 * <code>true</code>.
-	 * </p>
-	 * <p>
-	 * Also, it is guaranteed that the handlers submitted through a particular
-	 * service will be cleaned up when that services is destroyed. So, for
-	 * example, a service retrieved from a <code>IWorkbenchPartSite</code>
-	 * would deactivate all of its handlers when the site is destroyed.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            The identifier for the command which this handler handles;
-	 *            must not be <code>null</code>.
-	 * @param handler
-	 *            The handler to activate; must not be <code>null</code>.
-	 * @param expression
-	 *            This expression must evaluate to <code>true</code> before
-	 *            this handler will really become active. The expression may be
-	 *            <code>null</code> if the handler should always be active.
-	 * @param sourcePriorities
-	 *            The source priorities for the expression.
-	 * @return A token which can be used to later cancel the activation. Only
-	 *         someone with access to this token can cancel the activation. The
-	 *         activation will automatically be cancelled if the context from
-	 *         which this service was retrieved is destroyed.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @deprecated Use
-	 *             {@link IHandlerService#activateHandler(String, IHandler, Expression)}
-	 *             instead.
-	 */
-	public IHandlerActivation activateHandler(String commandId,
-			IHandler handler, Expression expression, int sourcePriorities);
-
-	/**
-	 * Creates an execution event based on an SWT event. This execution event
-	 * can then be passed to a command for execution.
-	 * 
-	 * @param command
-	 *            The command for which an execution event should be created;
-	 *            must not be <code>null</code>.
-	 * @param event
-	 *            The SWT event triggering the command execution; may be
-	 *            <code>null</code>.
-	 * @return An execution event suitable for calling
-	 *         {@link Command#executeWithChecks(ExecutionEvent)}.
-	 * @since 3.2
-	 * @see Command#executeWithChecks(ExecutionEvent)
-	 */
-	public ExecutionEvent createExecutionEvent(Command command, Event event);
-
-	/**
-	 * Creates a parameterized execution event based on an SWT event and a
-	 * parameterized command. This execution event can then be passed to a
-	 * command for execution.
-	 * 
-	 * @param command
-	 *            The parameterized command for which an execution event should
-	 *            be created; must not be <code>null</code>.
-	 * @param event
-	 *            The SWT event triggering the command execution; may be
-	 *            <code>null</code>.
-	 * @return An execution event suitable for calling
-	 *         {@link Command#executeWithChecks(ExecutionEvent)}.
-	 * @since 3.2
-	 * @see ParameterizedCommand#getCommand()
-	 * @see Command#executeWithChecks(ExecutionEvent)
-	 */
-	public ExecutionEvent createExecutionEvent(ParameterizedCommand command,
-			Event event);
-
-	/**
-	 * Deactivates the given handler within the context of this service. If the
-	 * handler was activated with a different service, then it must be
-	 * deactivated from that service instead. It is only possible to retract a
-	 * handler activation with this method. That is, you must have the same
-	 * <code>IHandlerActivation</code> used to activate the handler.
-	 * 
-	 * @param activation
-	 *            The token that was returned from a call to
-	 *            <code>activateHandler</code>; must not be <code>null</code>.
-	 */
-	public void deactivateHandler(IHandlerActivation activation);
-
-	/**
-	 * Deactivates the given handlers within the context of this service. If the
-	 * handler was activated with a different service, then it must be
-	 * deactivated from that service instead. It is only possible to retract a
-	 * handler activation with this method. That is, you must have the same
-	 * <code>IHandlerActivation</code> used to activate the handler.
-	 * 
-	 * @param activations
-	 *            The tokens that were returned from a call to
-	 *            <code>activateHandler</code>. This collection must only
-	 *            contain instances of <code>IHandlerActivation</code>. The
-	 *            collection must not be <code>null</code>.
-	 */
-	public void deactivateHandlers(Collection activations);
-
-	/**
-	 * Executes the command with the given identifier and no parameters.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to execute; must not be
-	 *            <code>null</code>.
-	 * @param event
-	 *            The SWT event triggering the command execution; may be
-	 *            <code>null</code>.
-	 * @return The return value from the execution; may be <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the handler has problems executing this command.
-	 * @throws NotDefinedException
-	 *             If the command you are trying to execute is not defined.
-	 * @throws NotEnabledException
-	 *             If the command you are trying to execute is not enabled.
-	 * @throws NotHandledException
-	 *             If there is no handler.
-	 * @since 3.2
-	 * @see Command#executeWithChecks(ExecutionEvent)
-	 */
-	public Object executeCommand(String commandId, Event event)
-			throws ExecutionException, NotDefinedException,
-			NotEnabledException, NotHandledException;
-
-	/**
-	 * Executes the given parameterized command.
-	 * 
-	 * @param command
-	 *            The parameterized command to be executed; must not be
-	 *            <code>null</code>.
-	 * @param event
-	 *            The SWT event triggering the command execution; may be
-	 *            <code>null</code>.
-	 * @return The return value from the execution; may be <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the handler has problems executing this command.
-	 * @throws NotDefinedException
-	 *             If the command you are trying to execute is not defined.
-	 * @throws NotEnabledException
-	 *             If the command you are trying to execute is not enabled.
-	 * @throws NotHandledException
-	 *             If there is no handler.
-	 * @since 3.2
-	 * @see Command#executeWithChecks(ExecutionEvent)
-	 */
-	public Object executeCommand(ParameterizedCommand command, Event event)
-			throws ExecutionException, NotDefinedException,
-			NotEnabledException, NotHandledException;
-
-	/**
-	 * Executes the given parameterized command in the provided context. It
-	 * takes care of finding the correct active handler given the context, calls
-	 * {@link IHandler2#setEnabled(Object)} to update the enabled state if
-	 * supported, and executes with that handler.
-	 * 
-	 * @param command
-	 *            The parameterized command to be executed; must not be
-	 *            <code>null</code>.
-	 * @param event
-	 *            The SWT event triggering the command execution; may be
-	 *            <code>null</code>.
-	 * @param context
-	 *            the evaluation context to run against. Must not be
-	 *            <code>null</code>
-	 * @return The return value from the execution; may be <code>null</code>.
-	 * @throws ExecutionException
-	 *             If the handler has problems executing this command.
-	 * @throws NotDefinedException
-	 *             If the command you are trying to execute is not defined.
-	 * @throws NotEnabledException
-	 *             If the command you are trying to execute is not enabled.
-	 * @throws NotHandledException
-	 *             If there is no handler.
-	 * @since 3.4
-	 * @see Command#executeWithChecks(ExecutionEvent)
-	 * @see #createContextSnapshot(boolean)
-	 */
-	public Object executeCommandInContext(ParameterizedCommand command,
-			Event event, IEvaluationContext context) throws ExecutionException,
-			NotDefinedException, NotEnabledException, NotHandledException;
-
-	/**
-	 * This method creates a copy of the application context returned by
-	 * {@link #getCurrentState()}.
-	 * 
-	 * @param includeSelection
-	 *            if <code>true</code>, include the default variable and
-	 *            selection variables
-	 * @return an context filled with the current set of variables. If selection
-	 *         is not included, the default variable is an empty collection
-	 * @since 3.4
-	 */
-	public IEvaluationContext createContextSnapshot(boolean includeSelection);
-
-	/**
-	 * Returns an evaluation context representing the current state of the
-	 * world. This is equivalent to the application context required by
-	 * {@link ExecutionEvent}.
-	 * 
-	 * @return the current state of the application; never <code>null</code>.
-	 * @see ParameterizedCommand#executeWithChecks(Object, Object)
-	 * @see ExecutionEvent#ExecutionEvent(Command, java.util.Map, Object,
-	 *      Object)
-	 * @see org.eclipse.ui.services.IEvaluationService
-	 */
-	public IEvaluationContext getCurrentState();
-
-	/**
-	 * <p>
-	 * Reads the handler information from the registry. This will overwrite any
-	 * of the existing information in the handler service. This method is
-	 * intended to be called during start-up. When this method completes, this
-	 * handler service will reflect the current state of the registry.
-	 * </p>
-	 */
-	public void readRegistry();
-
-	/**
-	 * Sets the help context identifier to associate with a particular handler.
-	 * 
-	 * @param handler
-	 *            The handler with which to register a help context identifier;
-	 *            must not be <code>null</code>.
-	 * @param helpContextId
-	 *            The help context identifier to register; may be
-	 *            <code>null</code> if the help context identifier should be
-	 *            removed.
-	 * @since 3.2
-	 */
-	public void setHelpContextId(IHandler handler, String helpContextId);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryRadioState.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryRadioState.java
deleted file mode 100644
index 3d81b9a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryRadioState.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.handlers;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jface.commands.RadioState;
-
-/**
- * <p>
- * A radio state that can be read from the registry. This stores a piece of
- * boolean state information that is grouped with other boolean state to form a
- * radio group. In a single radio group, there can be at most one state who
- * value is {@link Boolean#TRUE} all the others must be {@link Boolean#FALSE}.
- * </p>
- * <p>
- * When parsing from the registry, this state understands three parameters:
- * <code>default</code>, which is the default value for this item;
- * <code>persisted</code>, which is whether the state should be persisted
- * between sessions; <code>id</code>, which is the identifier of the group to
- * which this radio handler belongs. The <code>default</code> parameter
- * defaults to <code>false</code>, and the <code>persisted</code> parameter
- * defaults to <code>true</code>. If only one parameter is passed (i.e.,
- * using the class name followed by a colon), then it is assumed to be the
- * <code>id</code> parameter. The <code>id</code> is required for this class
- * to function properly.
- * </p>
- * <p>
- * Clients may instantiate this class, but must not extend.
- * </p>
- * 
- * @since 3.2
- */
-public final class RegistryRadioState extends RadioState implements
-		IExecutableExtension {
-
-	/**
-	 * Reads the <code>default</code> parameter from the given string. This
-	 * converts the string to a boolean, using <code>true</code> as the
-	 * default.
-	 * 
-	 * @param defaultString
-	 *            The string to parse; may be <code>null</code>.
-	 */
-	private final void readDefault(final String defaultString) {
-		if ("true".equalsIgnoreCase(defaultString)) { //$NON-NLS-1$
-			setValue(Boolean.TRUE);
-		}
-	}
-
-	/**
-	 * Reads the <code>persisted</code> parameter from the given string. This
-	 * converts the string to a boolean, using <code>true</code> as the
-	 * default.
-	 * 
-	 * @param persistedString
-	 *            The string to parse; may be <code>null</code>.
-	 */
-	private final void readPersisted(final String persistedString) {
-		if ("false".equalsIgnoreCase(persistedString)) { //$NON-NLS-1$
-			setShouldPersist(false);
-		}
-
-		setShouldPersist(true);
-	}
-
-	public final void setInitializationData(
-			final IConfigurationElement configurationElement,
-			final String propertyName, final Object data) {
-		if (data instanceof String) {
-			// This is the default value.
-			setRadioGroupIdentifier((String) data);
-			setValue(Boolean.FALSE);
-			setShouldPersist(true);
-
-		} else if (data instanceof Hashtable) {
-			final Hashtable parameters = (Hashtable) data;
-
-			final Object defaultObject = parameters.get("default"); //$NON-NLS-1$
-			if (defaultObject instanceof String) {
-				readDefault((String) defaultObject);
-			}
-
-			final Object persistedObject = parameters.get("persisted"); //$NON-NLS-1$
-			if (persistedObject instanceof String) {
-				readPersisted((String) persistedObject);
-			}
-
-			final Object idObject = parameters.get("id"); //$NON-NLS-1$
-			if (idObject instanceof String) {
-				setRadioGroupIdentifier((String) idObject);
-			}
-
-		} else {
-			setShouldPersist(true);
-			
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryToggleState.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryToggleState.java
deleted file mode 100644
index b64e0d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/RegistryToggleState.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.handlers;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jface.commands.ToggleState;
-
-/**
- * <p>
- * A toggle state that can be read from the registry. This stores a piece of
- * boolean state information.
- * </p>
- * <p>
- * When parsing from the registry, this state understands two parameters:
- * <code>default</code>, which is the default value for this item; and
- * <code>persisted</code>, which is whether the state should be persisted
- * between sessions. The <code>default</code> parameter defaults to
- * <code>false</code>, and the <code>persisted</code> parameter defaults to
- * <code>true</code>. If only one parameter is passed (i.e., using the class
- * name followed by a colon), then it is assumed to be the <code>default</code>
- * parameter.
- * </p>
- * <p>
- * Clients may instantiate this class, but must not extend.
- * </p>
- * 
- * @since 3.2
- */
-public final class RegistryToggleState extends ToggleState implements
-		IExecutableExtension {
-
-	/**
-	 * Reads the <code>default</code> parameter from the given string. This
-	 * converts the string to a boolean, using <code>true</code> as the
-	 * default.
-	 * 
-	 * @param defaultString
-	 *            The string to parse; may be <code>null</code>.
-	 */
-	private final void readDefault(final String defaultString) {
-		if ("true".equalsIgnoreCase(defaultString)) { //$NON-NLS-1$
-			setValue(Boolean.TRUE);
-		}
-	}
-
-	/**
-	 * Reads the <code>persisted</code> parameter from the given string. This
-	 * converts the string to a boolean, using <code>true</code> as the
-	 * default.
-	 * 
-	 * @param persistedString
-	 *            The string to parse; may be <code>null</code>.
-	 */
-	private final void readPersisted(final String persistedString) {
-		if ("false".equalsIgnoreCase(persistedString)) { //$NON-NLS-1$
-			setShouldPersist(false);
-		}
-
-		setShouldPersist(true);
-	}
-
-	public final void setInitializationData(
-			final IConfigurationElement configurationElement,
-			final String propertyName, final Object data) {
-		if (data instanceof String) {
-			// This is the default value.
-			readDefault((String) data);
-			setShouldPersist(true);
-
-		} else if (data instanceof Hashtable) {
-			final Hashtable parameters = (Hashtable) data;
-			final Object defaultObject = parameters.get("default"); //$NON-NLS-1$
-			if (defaultObject instanceof String) {
-				readDefault((String) defaultObject);
-			}
-
-			final Object persistedObject = parameters.get("persisted"); //$NON-NLS-1$
-			if (persistedObject instanceof String) {
-				readPersisted((String) persistedObject);
-			}
-
-		} else {
-			setShouldPersist(true);
-			
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
deleted file mode 100644
index c78c051..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowPerspectiveHandler.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 218540 [Perspectives] Perspectives always open in same window, regardless of preference
- *******************************************************************************/
-package org.eclipse.ui.handlers;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.dialogs.SelectPerspectiveDialog;
-
-/**
- * Shows the given perspective. If no perspective is specified in the
- * parameters, then this opens the perspective selection dialog.
- * 
- * @since 3.1
- */
-public final class ShowPerspectiveHandler extends AbstractHandler {
-
-	/**
-	 * The name of the parameter providing the perspective identifier.
-	 */
-	private static final String PARAMETER_NAME_VIEW_ID = "org.eclipse.ui.perspectives.showPerspective.perspectiveId"; //$NON-NLS-1$
-
-	/**
-	 * True/false value to open the perspective in a new window.
-	 */
-	private static final String PARAMETER_NEW_WINDOW = "org.eclipse.ui.perspectives.showPerspective.newWindow"; //$NON-NLS-1$
-
-	public final Object execute(final ExecutionEvent event)
-			throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-
-		// Get the view identifier, if any.
-		final Map parameters = event.getParameters();
-		final Object value = parameters.get(PARAMETER_NAME_VIEW_ID);
-		final String newWindow = (String) parameters.get(PARAMETER_NEW_WINDOW);
-
-		if (value == null) {
-			openOther(window);
-		} else {
-
-			if (newWindow == null || newWindow.equalsIgnoreCase("false")) { //$NON-NLS-1$
-				openPerspective((String) value, window);
-			} else {
-				openNewWindowPerspective((String) value, window);
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Opens the specified perspective in a new window.
-	 * 
-	 * @param perspectiveId
-	 *            The perspective to open; must not be <code>null</code>
-	 * @throws ExecutionException
-	 *             If the perspective could not be opened.
-	 */
-	private void openNewWindowPerspective(String perspectiveId,
-			IWorkbenchWindow activeWorkbenchWindow) throws ExecutionException {
-		final IWorkbench workbench = PlatformUI.getWorkbench();
-		try {
-			IAdaptable input = ((Workbench) workbench).getDefaultPageInput();
-			workbench.openWorkbenchWindow(perspectiveId, input);
-		} catch (WorkbenchException e) {
-			ErrorDialog.openError(activeWorkbenchWindow.getShell(),
-					WorkbenchMessages.ChangeToPerspectiveMenu_errorTitle, e
-							.getMessage(), e.getStatus());
-		}
-	}
-
-	/**
-	 * Opens a view selection dialog, allowing the user to chose a view.
-	 * 
-	 * @throws ExecutionException
-	 *             If the perspective could not be opened.
-	 */
-	private final void openOther(final IWorkbenchWindow activeWorkbenchWindow)
-			throws ExecutionException {
-		final SelectPerspectiveDialog dialog = new SelectPerspectiveDialog(
-				activeWorkbenchWindow.getShell(), WorkbenchPlugin.getDefault()
-						.getPerspectiveRegistry());
-		dialog.open();
-		if (dialog.getReturnCode() == Window.CANCEL) {
-			return;
-		}
-
-		final IPerspectiveDescriptor descriptor = dialog.getSelection();
-		if (descriptor != null) {
-			int openPerspMode = WorkbenchPlugin.getDefault().getPreferenceStore()
-					.getInt(IPreferenceConstants.OPEN_PERSP_MODE);
-			IWorkbenchPage page = activeWorkbenchWindow.getActivePage();
-			IPerspectiveDescriptor persp = page == null ? null : page.getPerspective();
-			String perspectiveId = descriptor.getId();
-			// only open it in a new window if the preference is set and the
-			// current workbench page doesn't have an active perspective
-			if (IPreferenceConstants.OPM_NEW_WINDOW == openPerspMode && persp != null) {
-				openNewWindowPerspective(perspectiveId, activeWorkbenchWindow);
-			} else {
-				openPerspective(perspectiveId, activeWorkbenchWindow);
-			}
-		}
-	}
-
-	/**
-	 * Opens the perspective with the given identifier.
-	 * 
-	 * @param perspectiveId
-	 *            The perspective to open; must not be <code>null</code>
-	 * @throws ExecutionException
-	 *             If the perspective could not be opened.
-	 */
-	private final void openPerspective(final String perspectiveId,
-			final IWorkbenchWindow activeWorkbenchWindow)
-			throws ExecutionException {
-		final IWorkbench workbench = PlatformUI.getWorkbench();
-
-		final IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
-		IPerspectiveDescriptor desc = activeWorkbenchWindow.getWorkbench()
-				.getPerspectiveRegistry().findPerspectiveWithId(perspectiveId);
-		if (desc == null) {
-			throw new ExecutionException("Perspective " + perspectiveId //$NON-NLS-1$
-					+ " cannot be found."); //$NON-NLS-1$
-		}
-
-		try {
-			if (activePage != null) {
-				activePage.setPerspective(desc);
-			} else {
-				IAdaptable input = ((Workbench) workbench)
-						.getDefaultPageInput();
-				activeWorkbenchWindow.openPage(perspectiveId, input);
-			}
-		} catch (WorkbenchException e) {
-			throw new ExecutionException("Perspective could not be opened.", e); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java
deleted file mode 100644
index 62558e7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/ShowViewHandler.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.handlers;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.FastViewBar;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.dialogs.ShowViewDialog;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Shows the given view. If no view is specified in the parameters, then this
- * opens the view selection dialog.
- * 
- * @since 3.1
- */
-public final class ShowViewHandler extends AbstractHandler {
-
-	/**
-	 * The name of the parameter providing the view identifier.
-	 */
-	private static final String PARAMETER_NAME_VIEW_ID = "org.eclipse.ui.views.showView.viewId"; //$NON-NLS-1$
-    private boolean makeFast = false;
-	private static final String PARAMETER_MAKE_FAST = "org.eclipse.ui.views.showView.makeFast"; //$NON-NLS-1$
-  
-    /**
-     * Creates a new ShowViewHandler that will open the view in its default location.
-     */
-    public ShowViewHandler() {
-    }
-    
-    /**
-     * Creates a new ShowViewHandler that will optionally force the view to become
-     * a fast view.
-     * 
-     * @param makeFast if true, the view will be moved to the fast view bar (even if it already
-     * exists elsewhere). If false, the view will be shown in its default location. Calling with
-     * false is equivalent to using the default constructor.
-     */    
-    public ShowViewHandler(boolean makeFast) {
-        this.makeFast = makeFast;
-    }
-    
-	public final Object execute(final ExecutionEvent event)
-			throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-		// Get the view identifier, if any.
-		final Map parameters = event.getParameters();
-		final Object value = parameters.get(PARAMETER_NAME_VIEW_ID);
-		makeFast = "true".equals(parameters.get(PARAMETER_MAKE_FAST)); //$NON-NLS-1$
-		
-		if (value == null) {
-			openOther(window);
-		} else {
-            try {
-                openView((String) value, window);
-            } catch (PartInitException e) {
-                throw new ExecutionException("Part could not be initialized", e); //$NON-NLS-1$
-            }
-		}
-
-		return null;
-	}
-
-	/**
-	 * Opens a view selection dialog, allowing the user to chose a view.
-	 */
-	private final void openOther(final IWorkbenchWindow window) {
-		final IWorkbenchPage page = window.getActivePage();
-		if (page == null) {
-			return;
-		}
-		
-		final ShowViewDialog dialog = new ShowViewDialog(window,
-				WorkbenchPlugin.getDefault().getViewRegistry());
-		dialog.open();
-		
-		if (dialog.getReturnCode() == Window.CANCEL) {
-			return;
-		}
-		
-		final IViewDescriptor[] descriptors = dialog.getSelection();
-		for (int i = 0; i < descriptors.length; ++i) {
-			try {
-                openView(descriptors[i].getId(), window);
-			} catch (PartInitException e) {
-				StatusUtil.handleStatus(e.getStatus(),
-						WorkbenchMessages.ShowView_errorTitle
-								+ ": " + e.getMessage(), //$NON-NLS-1$
-						StatusManager.SHOW);
-			}
-		}
-	}
-
-	/**
-	 * Opens the view with the given identifier.
-	 * 
-	 * @param viewId
-	 *            The view to open; must not be <code>null</code>
-	 * @throws PartInitException
-	 *             If the part could not be initialized.
-	 */
-	private final void openView(final String viewId,
-			final IWorkbenchWindow activeWorkbenchWindow)
-			throws PartInitException {
-
-		final IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
-		if (activePage == null) {
-			return;
-		}
-
-        if (makeFast) {
-            WorkbenchPage wp = (WorkbenchPage) activePage;
-        	Perspective persp = wp.getActivePerspective();
-
-            // If we're making a fast view then use the new mechanism directly
-            boolean useNewMinMax = Perspective.useNewMinMax(persp);
-            if (useNewMinMax) {
-            	IViewReference ref = persp.getViewReference(viewId, null);
-            	if (ref == null)
-            		return;
-
-            	persp.getFastViewManager().addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, ref, true);
-        		wp.activate(ref.getPart(true));
-        		
-        		return;
-            }
-            
-            IViewReference ref = wp.findViewReference(viewId);
-            
-            if (ref == null) {
-                IViewPart part = wp.showView(viewId, null, IWorkbenchPage.VIEW_CREATE);
-                ref = (IViewReference)wp.getReference(part); 
-            }
-            
-            if (!wp.isFastView(ref)) {
-                wp.addFastView(ref);
-            }
-            wp.activate(ref.getPart(true));
-        } else {
-            activePage.showView(viewId);
-        }
-		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/package.html
deleted file mode 100644
index 8fc4d4b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/handlers/package.html
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/AbstractHelpUI.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/AbstractHelpUI.java
deleted file mode 100644
index c1a18f8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/AbstractHelpUI.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.help;
-
-import java.net.URL;
-
-import org.eclipse.help.IContext;
-
-/**
- * Abstract base class for the help system UI.
- * <p>
- * The Eclipse platform provides an extension point (<code>"org.eclipse.ui.helpSupport"</code>)
- * for plugging in a help system UI. The help system UI is an optional
- * component; applications may provide a UI for presenting help to the user by
- * implementing a subclass and including the name of their class in the
- * <code>&lt;config&gt;</code> element in an extension to the
- * <code>"org.eclipse.ui.helpSupport"</code> extension point.
- * </p>
- * <p>
- * Note that the standard implementation of the help system UI is provided by
- * the <code>"org.eclipse.help.ui"</code> plug-in. Since the platform can only
- * make use of a single help system UI implementation, make sure that the
- * platform is not configured with more than one plug-in trying to extend this
- * extension point.
- * </p>
- * 
- * @since 3.0
- */
-public abstract class AbstractHelpUI {
-
-	/**
-	 * Displays the entire help bookshelf.
-	 */
-	public abstract void displayHelp();
-
-	/**
-	 * Displays the help search facility. For backward compatibility, the
-	 * default implementation does nothing.
-	 * 
-	 * @since 3.1
-	 */
-	public void displaySearch() {
-		// do nothing
-	}
-
-	/**
-	 * Displays the dynamic help for the active context. For backward
-	 * compatibility, the default implementation does nothing.
-	 * 
-	 * @since 3.1
-	 */
-	public void displayDynamicHelp() {
-		// do nothing
-	}
-
-	/**
-	 * Starts the help search using the help search facility. For backward
-	 * compatibility, the default implementation does nothing.
-	 * 
-	 * @param expression
-	 *            the search expression
-	 * @since 3.1
-	 */
-	public void search(String expression) {
-		// do nothing
-	}
-
-	/**
-	 * Resolves the help resource href according to the help system
-	 * implementation.
-	 * 
-	 * @param href
-	 *            the help resource
-	 * @param documentOnly
-	 *            if <code>true</code>, the resulting URL must point at the
-	 *            document referenced by href. Otherwise, it can be a URL that
-	 *            contains additional elements like navigation that the help
-	 *            system adds to the document.
-	 * @return the fully resolved URL of the help resource or <code>null</code>
-	 *         if not supported. Help systems that use application servers
-	 *         typically return URLs with http: protocol. Simple help system
-	 *         implementations can return URLs with file: protocol.
-	 * 
-	 * @since 3.1
-	 */
-	public URL resolve(String href, boolean documentOnly) {
-		return null;
-	}
-
-	/**
-	 * Displays context-sensitive help for the given context.
-	 * <p>
-	 * (x,y) coordinates specify the location where the context sensitive help
-	 * UI will be presented. These coordinates are screen-relative (ie: (0,0) is
-	 * the top left-most screen corner). The platform is responsible for calling
-	 * this method and supplying the appropriate location.
-	 * </p>
-	 * 
-	 * @param context
-	 *            the context to display
-	 * @param x
-	 *            horizontal position
-	 * @param y
-	 *            verifical position
-	 */
-	public abstract void displayContext(IContext context, int x, int y);
-
-	/**
-	 * Displays help content for the help resource with the given URL.
-	 * <p>
-	 * This method is called by the platform to launch the help system UI,
-	 * displaying the documentation identified by the <code>href</code>
-	 * parameter.
-	 * </p>
-	 * <p>
-	 * The help system makes no guarantee that all the help resources can be
-	 * displayed or how they are displayed.
-	 * </p>
-	 * 
-	 * @param href
-	 *            the URL of the help resource.
-	 *            <p>
-	 *            Valid href are as described in
-	 *            {@link  org.eclipse.help.IHelpResource#getHref() IHelpResource.getHref()}
-	 *            </p>
-	 */
-	public abstract void displayHelpResource(String href);
-
-	/**
-	 * Returns whether the context-sensitive help window is currently being
-	 * displayed.
-	 * 
-	 * @return <code>true</code> if the context-sensitive help window is
-	 *         currently being displayed, <code>false</code> if not
-	 */
-	public abstract boolean isContextHelpDisplayed();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/DialogPageContextComputer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/DialogPageContextComputer.java
deleted file mode 100644
index e59fdfe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/DialogPageContextComputer.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.help;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.help.IContext;
-import org.eclipse.jface.dialogs.IDialogPage;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * For determining the help context for controls in a dialog page.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @deprecated nested contexts are no longer supported by the help support system
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class DialogPageContextComputer implements IContextComputer {
-    private IDialogPage page;
-
-    private ArrayList contextList;
-
-    private Object context;
-
-    /**
-     * Creates a new context computer for the given dialog page and help context.
-     *
-     * @param page the dialog page
-     * @param helpContext a single help context id (type <code>String</code>) or
-     *  help context object (type <code>IContext</code>)
-     */
-    public DialogPageContextComputer(IDialogPage page, Object helpContext) {
-        Assert.isTrue(helpContext instanceof String
-                || helpContext instanceof IContext);
-        this.page = page;
-        context = helpContext;
-    }
-
-    /**
-     * Add the contexts to the context list.
-     *
-     * @param object the contexts (<code>Object[]</code> or <code>IContextComputer</code>)
-     * @param event the help event 
-     */
-    private void addContexts(Object object, HelpEvent event) {
-        Assert.isTrue(object instanceof Object[]
-                || object instanceof IContextComputer
-                || object instanceof String);
-
-        if (object instanceof String) {
-            contextList.add(object);
-            return;
-        }
-
-        Object[] contexts;
-        if (object instanceof IContextComputer) {
-			// get local contexts
-            contexts = ((IContextComputer) object).getLocalContexts(event);
-		} else {
-			contexts = (Object[]) object;
-		}
-
-        // copy the contexts into our list	
-        for (int i = 0; i < contexts.length; i++) {
-			contextList.add(contexts[i]);
-		}
-    }
-
-    /**
-     * Add the contexts for the given control to the context list.
-     *
-     * @param control the control from which to obtain the contexts
-     * @param event the help event 
-     */
-    private void addContextsForControl(Control control, HelpEvent event) {
-        // See if there is are help contexts on the control
-        Object object = WorkbenchHelp.getHelp(control);
-
-        if (object == null || object == this) {
-			// We need to check for this in order to avoid recursion
-            return;
-		}
-
-        addContexts(object, event);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContextComputer.
-     */
-    public Object[] computeContexts(HelpEvent event) {
-        contextList = new ArrayList();
-
-        // Add the local context
-        contextList.add(context);
-
-        // Add the contexts for the page
-        addContextsForControl(page.getControl(), event);
-
-        // Add the contexts for the container shell	
-        addContextsForControl(page.getControl().getShell(), event);
-
-        // Return the contexts
-        return contextList.toArray();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContextComputer.
-     */
-    public Object[] getLocalContexts(HelpEvent event) {
-        return new Object[] { context };
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IContextComputer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IContextComputer.java
deleted file mode 100644
index 49c7938..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IContextComputer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.help;
-
-import org.eclipse.swt.events.HelpEvent;
-
-/**
- * A content computer is used to dynamically calculate help support contexts at the
- * time the user requests help.
- * <p>
- * This interface may be implemented by clients.
- * </p>
- * @deprecated nested contexts are no longer supported by the help support system
- * 
- */
-public interface IContextComputer {
-    /**
-     * Computes contexts for the help system.
-     *
-     * @param event the help event which triggered this request for help
-     * @return a mixed-type array of context ids (type <code>String</code>)
-     *   and/or help contexts (type <code>IContext</code>)
-     * @see org.eclipse.help.IContext
-     */
-    public Object[] computeContexts(HelpEvent event);
-
-    /**
-     * Returns the local contexts for this context computer.
-     * <p>
-     * Typically this method is called by other instances of
-     * <code>IContextComputer</code> in their <code>computeContexts</code>
-     * method.
-     * </p>
-     * <p>
-     * The important concept here is that the value returned by 
-     * <code>computeContexts</code> represents the complete help
-     * contexts and is passed directly to the help support system.
-     * </p>
-     * <p>
-     * However the value returned by this method represents the
-     * only the contexts for the particular control with which this
-     * <code>IContextComputer</code> is associated.
-     * </p> 
-     * @param event the help event which triggered this request for help
-     * @return a mixed-type array of context ids (type <code>String</code>)
-     *   and/or help contexts (type <code>IContext</code>)
-     * @see org.eclipse.help.IContext
-     */
-    public Object[] getLocalContexts(HelpEvent event);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IWorkbenchHelpSystem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IWorkbenchHelpSystem.java
deleted file mode 100644
index 400f224..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/IWorkbenchHelpSystem.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.help;
-
-import java.net.URL;
-
-import org.eclipse.help.IContext;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-
-/**
- * <p>
- * The interface that is used to access the workbench help system. Replaces
- * static methods on <code>WorkbenchHelp</code>.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchHelpSystem {
-
-	/**
-	 * Returns whether there is a UI help system installed.
-	 * 
-	 * @return whether there is a UI help system installed
-	 */
-	boolean hasHelpUI();
-
-	/**
-	 * Displays the entire help bookshelf.
-	 * <p>
-	 * Ignored if no help UI is available.
-	 * </p>
-	 */
-	void displayHelp();
-
-	/**
-	 * Displays the help search system.
-	 * <p>
-	 * Ignored if no help UI is available.
-	 * </p>
-	 */
-	void displaySearch();
-
-	/**
-	 * Displays the dynamic help for the current UI context.
-	 * <p>
-	 * Ignored if no help UI is available.
-	 * </p>
-	 */
-	void displayDynamicHelp();
-
-	/**
-	 * Starts the search using the help search system.
-	 * <p>
-	 * Ignored if no help UI is available.
-	 * </p>
-	 * 
-	 * @param expression
-	 *            the search expression. The actual syntax rules of the
-	 *            expression are dependent on the active
-	 *            help system. Refer to the help system
-	 *            documentation for more details.
-	 */
-	void search(String expression);
-
-	/**
-	 * Displays context-sensitive help for the given context.
-	 * <p>
-	 * (x,y) coordinates specify the location where the context sensitive help
-	 * UI will be presented. These coordinates are screen-relative (ie: (0,0) is
-	 * the top left-most screen corner). The platform is responsible for calling
-	 * this method and supplying the appropriate location.
-	 * </p>
-	 * <p>
-	 * Ignored if no help UI is available.
-	 * </p>
-	 * 
-	 * @param context
-	 *            the context to display
-	 * @param x
-	 *            horizontal position
-	 * @param y
-	 *            verifical position
-	 */
-	void displayContext(IContext context, int x, int y);
-
-	/**
-	 * Displays help content for the help resource with the given URL.
-	 * <p>
-	 * This method is called by the platform to launch the help system UI,
-	 * displaying the documentation identified by the <code>href</code>
-	 * parameter.
-	 * </p>
-	 * <p>
-	 * The help system makes no guarantee that all the help resources can be
-	 * displayed or how they are displayed.
-	 * </p>
-	 * <p>
-	 * Ignored if no help UI is available.
-	 * </p>
-	 * 
-	 * @param href
-	 *            the URL of the help resource.
-	 *            <p>
-	 *            Valid href are as described in
-	 *            {@link  org.eclipse.help.IHelpResource#getHref() IHelpResource.getHref()}
-	 *            </p>
-	 */
-	void displayHelpResource(String href);
-
-	/**
-	 * Calls the help support system to display the given help context id.
-	 * <p>
-	 * May only be called from a UI thread.
-	 * <p>
-	 * 
-	 * @param contextId
-	 *            the id of the context to display
-	 */
-	void displayHelp(String contextId);
-
-	/**
-	 * Displays context-sensitive help for the given context.
-	 * <p>
-	 * May only be called from a UI thread.
-	 * <p>
-	 * 
-	 * @param context
-	 *            the context to display
-	 */
-	void displayHelp(IContext context);
-
-	/**
-	 * Returns whether the context-sensitive help window is currently being
-	 * displayed. Returns <code>false</code> if the help UI has not been
-	 * activated yet.
-	 * 
-	 * @return <code>true</code> if the context-sensitive help window is
-	 *         currently being displayed, <code>false</code> otherwise
-	 */
-	boolean isContextHelpDisplayed();
-
-	/**
-	 * Sets the given help context id on the given action.
-	 * 
-	 * @param action
-	 *            the action on which to register the context id
-	 * @param contextId
-	 *            the context id to use when F1 help is invoked
-	 */
-	void setHelp(IAction action, String contextId);
-
-	/**
-	 * Sets the given help context id on the given control.
-	 * 
-	 * @param control
-	 *            the control on which to register the context id
-	 * @param contextId
-	 *            the context id to use when F1 help is invoked
-	 */
-	void setHelp(Control control, String contextId);
-
-	/**
-	 * Sets the given help context id on the given menu.
-	 * 
-	 * @param menu
-	 *            the menu on which to register the context id
-	 * @param contextId
-	 *            the context id to use when F1 help is invoked
-	 */
-	void setHelp(Menu menu, String contextId);
-
-	/**
-	 * Sets the given help context id on the given menu item.
-	 * 
-	 * @param item
-	 *            the menu item on which to register the context id
-	 * @param contextId
-	 *            the context id to use when F1 help is invoked
-	 */
-	void setHelp(MenuItem item, String contextId);
-
-	/**
-	 * Resolves the help resource href by converting it into a legitimate URL
-	 * according to the implementation of the help system. Help resources that
-	 * already have a protocol will be unchanged.
-	 * 
-	 * @param href
-	 * @param documentOnly if <code>true</code>, the resulting URL must point
-	 * at the document referenced by href. Otherwise, it can be a URL that
-	 * contains additional elements like navigation that the help system
-	 * adds to the document.
-	 * @return the resolved URL or <code>null</code> if no help UI is
-	 *         available.
-	 */
-	URL resolve(String href, boolean documentOnly);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/ViewContextComputer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/ViewContextComputer.java
deleted file mode 100644
index c22e7dc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/ViewContextComputer.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.help;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.help.IContext;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IViewPart;
-
-/**
- * For determining the help context for controls in a view.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @deprecated nested contexts are no longer supported by the help support system
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ViewContextComputer implements IContextComputer {
-    private IViewPart view;
-
-    private ArrayList contextList;
-
-    private Object context;
-
-    /**
-     * Creates a new context computer for the given view and help context.
-     *
-     * @param viewPart the view
-     * @param helpContext a single help context id (type <code>String</code>) or
-     *  help context object (type <code>IContext</code>)
-     */
-    public ViewContextComputer(IViewPart viewPart, Object helpContext) {
-        Assert.isTrue(helpContext instanceof String
-                || helpContext instanceof IContext);
-        view = viewPart;
-        context = helpContext;
-    }
-
-    /**
-     * Add the contexts to the context list.
-     *
-     * @param object the contexts (<code>Object[]</code> or <code>IContextComputer</code>)
-     * @param event the help event 
-     */
-    private void addContexts(Object object, HelpEvent event) {
-        Assert.isTrue(object instanceof Object[]
-                || object instanceof IContextComputer
-                || object instanceof String);
-
-        if (object instanceof String) {
-            contextList.add(object);
-            return;
-        }
-
-        Object[] contexts;
-        if (object instanceof IContextComputer) {
-			// get local contexts
-            contexts = ((IContextComputer) object).getLocalContexts(event);
-		} else {
-			contexts = (Object[]) object;
-		}
-
-        // copy the contexts into our list	
-        for (int i = 0; i < contexts.length; i++) {
-			contextList.add(contexts[i]);
-		}
-    }
-
-    /**
-     * Add the contexts for the given control to the context list.
-     *
-     * @param control the control from which to obtain the contexts
-     * @param event the help event 
-     */
-    private void addContextsForControl(Control control, HelpEvent event) {
-        // See if there is are help contexts on the control
-        Object object = WorkbenchHelp.getHelp(control);
-
-        if (object == null || object == this) {
-			// We need to check for this in order to avoid recursion
-            return;
-		}
-
-        addContexts(object, event);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContextComputer.
-     */
-    public Object[] computeContexts(HelpEvent event) {
-        contextList = new ArrayList();
-
-        // Add the local context
-        contextList.add(context);
-
-        // Add the contexts for the window shell	
-        addContextsForControl(view.getSite().getShell(), event);
-
-        // Return the contexts
-        return contextList.toArray();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContextComputer.
-     */
-    public Object[] getLocalContexts(HelpEvent event) {
-        return new Object[] { context };
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/WorkbenchHelp.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/WorkbenchHelp.java
deleted file mode 100644
index 0f1d4d4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/WorkbenchHelp.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.help;
-
-import org.eclipse.help.IContext;
-import org.eclipse.help.IHelp;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommand;
-import org.eclipse.ui.internal.help.WorkbenchHelpSystem;
-
-/**
- * Provides methods for accessing the help UI.
- * <p>
- * The help UI is optional, to allow applications to be configured
- * without one.
- * </p>
- * <p>
- * The various <code>setHelp</code> methods allow context help to be hooked in
- * to SWT menus, menu items, and controls, and into JFace actions. This involves 
- * furnishing a help context id. When the user requests help for one of the 
- * established widgets (for instance, by hitting F1), the context id is
- * retrieved and passed to the help UI using 
- * <code>WorkbenchHelp.displayContext(helpContext, xposition, yposition)</code>.
- * </p>
- * <p>
- * In cases more dynamic situations, clients may hook their own help listener
- * and call <code>WorkbenchHelp.displayContext</code> with an 
- * <code>IContext</code>.
- * </p>
- * <p>
- * This class provides static methods only; it is not intended to be instantiated
- * or subclassed.
- * </p>
- *
- * @deprecated clients should use <code>IWorkbenchHelpSystem</code> instead
- * 
- * @see org.eclipse.help.HelpSystem
- * @see org.eclipse.ui.help.IWorkbenchHelpSystem
- * @see org.eclipse.ui.IWorkbench#getHelpSystem()
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class WorkbenchHelp {
-
-    /**
-     * This class is not intented to be instantiated
-     */
-    private WorkbenchHelp() {
-    }
-
-    /**
-     * Displays the entire help bookshelf.
-     * <p>
-     * Ignored if no help UI is available.
-     * </p>
-     * 
-     * @since 3.0
-     */
-    public static void displayHelp() {
-    	PlatformUI.getWorkbench().getHelpSystem().displayHelp();
-    }
-
-    /**
-     * Displays context-sensitive help for the given context.
-     * <p>
-     * (x,y) coordinates specify the location where the context sensitive 
-     * help UI will be presented. These coordinates are screen-relative 
-     * (ie: (0,0) is the top left-most screen corner).
-     * The platform is responsible for calling this method and supplying the 
-     * appropriate location.
-     * </p>
-     * <p>
-     * Ignored if no help UI is available.
-     * </p>
-     * 
-     * @param context the context to display
-     * @param x horizontal position
-     * @param y verifical position
-     * @since 3.0
-     */
-    public static void displayContext(IContext context, int x, int y) {
-    	PlatformUI.getWorkbench().getHelpSystem().displayContext(context, x, y);
-    }
-
-    /**
-     * Displays help content for the help resource with the given URL.
-     * <p>
-     * This method is called by the platform to launch the help system UI, displaying
-     * the documentation identified by the <code>href</code> parameter.
-     * </p> 
-     * <p>
-     * The help system makes no guarantee that all the help resources can be displayed or how they are displayed.
-     * </p>
-     * <p>
-     * Ignored if no help UI is available.
-     * </p>
-     * 
-     * @param href the URL of the help resource.
-     * <p>Valid href are as described in 
-     * 	{@link  org.eclipse.help.IHelpResource#getHref() IHelpResource.getHref()}
-     * </p>
-     * @since 3.0
-     */
-    public static void displayHelpResource(String href) {
-    	PlatformUI.getWorkbench().getHelpSystem().displayHelpResource(href);
-    }
-
-    /**
-     * Creates a new help listener for the given command. This retrieves the
-     * help context ID from the command, and creates an appropriate listener
-     * based on this.
-     * 
-     * @param command
-     *            The command for which the listener should be created; must
-     *            not be <code>null</code>.
-     * @return A help listener; never <code>null</code>.
-     */
-    public static HelpListener createHelpListener(ICommand command) {
-    	return WorkbenchHelpSystem.getInstance().createHelpListener(command);
-    }
-
-    /**
-     * Calls the help support system to display the given help context id.
-     * <p>
-     * May only be called from a UI thread.
-     * <p>
-     *
-     * @param contextId the id of the context to display
-     * @since 2.0
-     */
-    public static void displayHelp(String contextId) {
-    	PlatformUI.getWorkbench().getHelpSystem().displayHelp(contextId);    	
-    }
-
-    /**
-     * Displays context-sensitive help for the given context.
-     * <p>
-     * May only be called from a UI thread.
-     * <p>
-     *
-     * @param context the context to display
-     * @since 2.0
-     */
-    public static void displayHelp(IContext context) {
-    	PlatformUI.getWorkbench().getHelpSystem().displayHelp(context);
-    }
-
-    /**
-     * Returns the help contexts on the given control.
-     * <p>
-     * Instances of <code>IContextComputer</code> may use this method
-     * to obtain the previously registered help contexts of a control.
-     * </p>
-     *
-     * @param control the control on which the contexts are registered
-     * @return contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>) or an <code>IContextComputer</code> or
-     *   <code>null</code> if no contexts have been set.
-     * @deprecated as context computers are no longer supported
-     */
-    public static Object getHelp(Control control) {
-        return control.getData(WorkbenchHelpSystem.HELP_KEY);
-    }
-
-    /**
-     * Returns the help contexts on the given menu.
-     * <p>
-     * Instances of <code>IContextComputer</code> may use this method
-     * to obtain the previously registered help contexts of a menu.
-     * </p>
-     *
-     * @param menu the menu on which the contexts are registered
-     * @return contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>) or an <code>IContextComputer</code> or
-     *   <code>null</code> if no contexts have been set.
-     * @deprecated as context computers are no longer supported
-     */
-    public static Object getHelp(Menu menu) {
-        return menu.getData(WorkbenchHelpSystem.HELP_KEY);
-    }
-
-    /**
-     * Returns the help contexts on the given menu item.
-     * <p>
-     * Instances of <code>IContextComputer</code> may use this method
-     * to obtain the previously registered help contexts of a menu.
-     * </p>
-     *
-     * @param menuItem the menu item on which the contexts are registered
-     * @return contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>) or an <code>IContextComputer</code> or
-     *   <code>null</code> if no contexts have been set.
-     * @deprecated as context computers are no longer supported
-     */
-    public static Object getHelp(MenuItem menuItem) {
-        return menuItem.getData(WorkbenchHelpSystem.HELP_KEY);
-    }
-
-    /**
-     * Returns the help support system for the platform, if available.
-     *
-     * @return the help support system, or <code>null</code> if none
-     * @deprecated Use the static methods on this class and on
-     * {@link org.eclipse.help.HelpSystem HelpSystem} instead of the IHelp methods
-     * on the object returned by this method.
-     */
-    public static IHelp getHelpSupport() {
-    	return WorkbenchHelpSystem.getInstance().getHelpSupport();
-    }
-
-    
-    /**
-     * Returns whether the context-sensitive help window is currently being
-     * displayed. Returns <code>false</code> if the help UI has not been
-     * activated yet.
-     * 
-     * @return <code>true</code> if the context-sensitive help
-     * window is currently being displayed, <code>false</code> otherwise
-     */
-    public static boolean isContextHelpDisplayed() {
-    	return PlatformUI.getWorkbench().getHelpSystem().isContextHelpDisplayed();
-    }
-
-    /**
-     * Sets the given help contexts on the given action.
-     * <p>
-     * Use this method when the list of help contexts is known in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param action the action on which to register the computer
-     * @param contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>)
-     * @deprecated use setHelp with a single context id parameter
-     */
-    public static void setHelp(IAction action, final Object[] contexts) {
-    	WorkbenchHelpSystem.getInstance().setHelp(action, contexts);
-    }
-
-    /**
-     * Sets the given help context computer on the given action.
-     * <p>
-     * Use this method when the help contexts cannot be computed in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param action the action on which to register the computer
-     * @param computer the computer to determine the help contexts for the control
-     *    when F1 help is invoked
-     * @deprecated context computers are no longer supported, clients should implement
-     *  their own help listener
-     */
-    public static void setHelp(IAction action, final IContextComputer computer) {
-    	WorkbenchHelpSystem.getInstance().setHelp(action, computer);
-    }
-
-    /**
-     * Sets the given help contexts on the given control.
-     * <p>
-     * Use this method when the list of help contexts is known in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param control the control on which to register the contexts
-     * @param contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>)
-     * @deprecated use setHelp with single context id parameter
-     */
-    public static void setHelp(Control control, Object[] contexts) {
-    	WorkbenchHelpSystem.getInstance().setHelp(control, contexts);
-    }
-
-    /**
-     * Sets the given help context computer on the given control.
-     * <p>
-     * Use this method when the help contexts cannot be computed in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param control the control on which to register the computer
-     * @param computer the computer to determine the help contexts for the control
-     *    when F1 help is invoked
-     * @deprecated context computers are no longer supported, clients should implement
-     *  their own help listener
-     */
-    public static void setHelp(Control control, IContextComputer computer) {
-    	WorkbenchHelpSystem.getInstance().setHelp(control, computer);
-    }
-
-    /**
-     * Sets the given help contexts on the given menu.
-     * <p>
-     * Use this method when the list of help contexts is known in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param menu the menu on which to register the context
-     * @param contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>)
-     * @deprecated use setHelp with single context id parameter
-     */
-    public static void setHelp(Menu menu, Object[] contexts) {
-    	WorkbenchHelpSystem.getInstance().setHelp(menu, contexts);
-    }
-
-    /**
-     * Sets the given help context computer on the given menu.
-     * <p>
-     * Use this method when the help contexts cannot be computed in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param menu the menu on which to register the computer
-     * @param computer the computer to determine the help contexts for the control
-     *    when F1 help is invoked
-     * @deprecated context computers are no longer supported, clients should implement
-     *  their own help listener
-     */
-    public static void setHelp(Menu menu, IContextComputer computer) {
-    	WorkbenchHelpSystem.getInstance().setHelp(menu, computer);
-    }
-
-    /**
-     * Sets the given help contexts on the given menu item.
-     * <p>
-     * Use this method when the list of help contexts is known in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param item the menu item on which to register the context
-     * @param contexts the contexts to use when F1 help is invoked; a mixed-type
-     *   array of context ids (type <code>String</code>) and/or help contexts (type
-     *   <code>IContext</code>)
-     * @deprecated use setHelp with single context id parameter
-     */
-    public static void setHelp(MenuItem item, Object[] contexts) {
-    	WorkbenchHelpSystem.getInstance().setHelp(item, contexts);
-    }
-
-    /**
-     * Sets the given help context computer on the given menu item.
-     * <p>
-     * Use this method when the help contexts cannot be computed in advance.
-     * Help contexts can either supplied as a static list, or calculated with a
-     * context computer (but not both).
-     * </p>
-     *
-     * @param item the menu item on which to register the computer
-     * @param computer the computer to determine the help contexts for the control
-     *    when F1 help is invoked
-     * @deprecated context computers are no longer supported, clients should implement
-     *  their own help listener
-     */
-    public static void setHelp(MenuItem item, IContextComputer computer) {
-    	WorkbenchHelpSystem.getInstance().setHelp(item, computer);
-    }
-
-    /**
-     * Sets the given help context id on the given action.
-     *
-     * @param action the action on which to register the context id
-     * @param contextId the context id to use when F1 help is invoked
-     * @since 2.0
-     */
-    public static void setHelp(IAction action, final String contextId) {
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(action, contextId);
-    }
-
-    /**
-     * Sets the given help context id on the given control.
-     *
-     * @param control the control on which to register the context id
-     * @param contextId the context id to use when F1 help is invoked
-     * @since 2.0
-     */
-    public static void setHelp(Control control, String contextId) {
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(control, contextId);    	
-    }
-
-    /**
-     * Sets the given help context id on the given menu.
-     *
-     * @param menu the menu on which to register the context id
-     * @param contextId the context id to use when F1 help is invoked
-     * @since 2.0
-     */
-    public static void setHelp(Menu menu, String contextId) {
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(menu, contextId);
-    }
-
-    /**
-     * Sets the given help context id on the given menu item.
-     *
-     * @param item the menu item on which to register the context id
-     * @param contextId the context id to use when F1 help is invoked
-     * @since 2.0
-     */
-    public static void setHelp(MenuItem item, String contextId) {
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(item, contextId);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/package.html
deleted file mode 100644
index e18c5bc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/help/package.html
+++ /dev/null
@@ -1,21 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes for integration with the help support system
-in the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-Within the Eclipse Platform UI each user interface component should integrate
-with the help support system.&nbsp; The simplest form of help integration
-is accomplished using <b>WorkbenchHelp</b>.&nbsp; This class provides the
-client with methods to define a help context for SWT Controls.&nbsp; Once
-defined, the help support system will automatically launch help with the
-appropriate context if a user request for help occurs.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEnabledHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEnabledHandler.java
deleted file mode 100644
index 3597734..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEnabledHandler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.HandlerEvent;
-
-/**
- * Abstract base class that provides the enabled state, where changing the state
- * fires the HandlerEvent.
- * 
- * @since 3.3
- */
-public abstract class AbstractEnabledHandler extends AbstractHandler {
-
-	private boolean enabled = true;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
-	 */
-	public boolean isEnabled() {
-		return enabled;
-	}
-
-	protected void setEnabled(boolean isEnabled) {
-		if (enabled != isEnabled) {
-			enabled = isEnabled;
-			fireHandlerChanged(new HandlerEvent(this, true, false));
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEvaluationHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEvaluationHandler.java
deleted file mode 100644
index 4b6fcbe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractEvaluationHandler.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * This internal class serves as a foundation for any handler that would like
- * its enabled state controlled by core expressions and the IEvaluationService.
- * 
- * @since 3.3
- */
-public abstract class AbstractEvaluationHandler extends AbstractEnabledHandler {
-	private final static String PROP_ENABLED = "enabled"; //$NON-NLS-1$
-	private IEvaluationService evaluationService;
-	private IPropertyChangeListener enablementListener;
-	private IEvaluationReference enablementRef;
-
-	protected IEvaluationService getEvaluationService() {
-		if (evaluationService == null) {
-			evaluationService = (IEvaluationService) PlatformUI.getWorkbench()
-					.getService(IEvaluationService.class);
-		}
-		return evaluationService;
-	}
-
-	protected void registerEnablement() {
-		enablementRef = getEvaluationService().addEvaluationListener(
-				getEnabledWhenExpression(), getEnablementListener(),
-				PROP_ENABLED);
-	}
-
-	protected abstract Expression getEnabledWhenExpression();
-
-	/**
-	 * @return
-	 */
-	private IPropertyChangeListener getEnablementListener() {
-		if (enablementListener == null) {
-			enablementListener = new IPropertyChangeListener() {
-				public void propertyChange(PropertyChangeEvent event) {
-					if (event.getProperty() == PROP_ENABLED) {
-						if (event.getNewValue() instanceof Boolean) {
-							setEnabled(((Boolean) event.getNewValue())
-									.booleanValue());
-						} else {
-							setEnabled(false);
-						}
-					}
-				}
-			};
-		}
-		return enablementListener;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.AbstractHandler#dispose()
-	 */
-	public void dispose() {
-		if (enablementRef != null) {
-			evaluationService.removeEvaluationListener(enablementRef);
-			enablementRef = null;
-			enablementListener = null;
-			evaluationService = null;
-		}
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java
deleted file mode 100644
index f0dd61f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Provides per-part selection tracking for the selection service.
- */
-public abstract class AbstractPartSelectionTracker {
-    /**
-     * List of selection listeners for this tracker
-     */
-    private ListenerList fListeners = new ListenerList();
-
-    /**
-     * List of post selection listeners for this tracker
-     */
-    private ListenerList postListeners = new ListenerList();
-
-    /**
-     * The id of the part this tracls
-     */
-    private String fPartId;
-
-    /**
-     * Constructs a part selection tracker for the part with the given id.
-     * 
-     * @param id part identifier
-     */
-    public AbstractPartSelectionTracker(String partId) {
-        setPartId(partId);
-    }
-
-    /**
-     * Adds a selection listener to this tracker
-     * 
-     * @param listener the listener to add
-     */
-    public void addSelectionListener(ISelectionListener listener) {
-        fListeners.add(listener);
-    }
-
-    /**
-     * Adds a post selection listener to this tracker
-     * 
-     * @param listener the listener to add
-     */
-    public void addPostSelectionListener(ISelectionListener listener) {
-        postListeners.add(listener);
-    }
-
-    /**
-     * Returns the selection from the part being tracked, 
-     * or <code>null</code> if the part is closed or has no selection.
-     */
-    public abstract ISelection getSelection();
-
-    /**
-     * Removes a selection listener from this tracker.
-     * 
-     * @param listener the listener to remove
-     */
-    public void removeSelectionListener(ISelectionListener listener) {
-        fListeners.remove(listener);
-    }
-
-    /**
-     * Removes a post selection listener from this tracker.
-     * 
-     * @param listener the listener to remove
-     */
-    public void removePostSelectionListener(ISelectionListener listener) {
-        postListeners.remove(listener);
-    }
-
-    /**
-     * Disposes this selection tracker.  This removes all listeners currently registered.
-     */
-    public void dispose() {
-        synchronized (fListeners) {
-            Object[] listeners = fListeners.getListeners();
-            for (int i = 0; i < listeners.length; i++) {
-                fListeners.remove(listeners[i]);
-                postListeners.remove(listeners[i]);
-            }
-        }
-    }
-
-    /**
-     * Fires a selection event to the listeners.
-     * 
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     * @param listeners the list of listeners to notify
-     */
-    protected void fireSelection(final IWorkbenchPart part, final ISelection sel) {
-        Object[] array = fListeners.getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final ISelectionListener l = (ISelectionListener) array[i];
-            if ((part != null && sel != null)
-                    || l instanceof INullSelectionListener) {
-                Platform.run(new SafeRunnable() {
-                    public void run() {
-                        l.selectionChanged(part, sel);
-                    }
-                });
-            }
-        }
-    }
-
-    /**
-     * Fires a post selection event to the listeners.
-     * 
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     * @param listeners the list of listeners to notify
-     */
-    protected void firePostSelection(final IWorkbenchPart part,
-            final ISelection sel) {
-        Object[] array = postListeners.getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final ISelectionListener l = (ISelectionListener) array[i];
-            if ((part != null && sel != null)
-                    || l instanceof INullSelectionListener) {
-                Platform.run(new SafeRunnable() {
-                    public void run() {
-                        l.selectionChanged(part, sel);
-                    }
-                });
-            }
-        }
-    }
-
-    /**
-     * Sets the id of the part that this tracks.
-     * 
-     * @param id view identifier
-     */
-    private void setPartId(String partId) {
-        fPartId = partId;
-    }
-
-    /**
-     * Returns the id of the part that this tracks.
-     * 
-     * @return part identifier
-     */
-    protected String getPartId() {
-        return fPartId;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java
deleted file mode 100644
index 5906144..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Abstract selection service.
- */
-public abstract class AbstractSelectionService implements ISelectionService {
-
-    /** 
-     * The list of selection listeners (not per-part).
-     */
-    private ListenerList listeners = new ListenerList();
-
-    /** 
-     * The list of post selection listeners (not per-part).
-     */
-    private ListenerList postListeners = new ListenerList();
-
-    /**
-     * The currently active part.
-     */
-    private IWorkbenchPart activePart;
-
-    /**
-     * The active part's selection provider, remembered in case the part 
-     * replaces its selection provider after we hooked a listener.
-     */
-    private ISelectionProvider activeProvider;
-
-    /**
-     * Map from part id (String) to per-part tracker (AbstractPartSelectionTracker).
-     */
-    private Hashtable perPartTrackers;
-
-    /**
-     * The JFace selection listener to hook on the active part's selection provider.
-     */
-    private ISelectionChangedListener selListener = new ISelectionChangedListener() {
-        public void selectionChanged(SelectionChangedEvent event) {
-            fireSelection(activePart, event.getSelection());
-        }
-    };
-
-    /**
-     * The JFace post selection listener to hook on the active part's selection provider.
-     */
-    private ISelectionChangedListener postSelListener = new ISelectionChangedListener() {
-        public void selectionChanged(SelectionChangedEvent event) {
-            firePostSelection(activePart, event.getSelection());
-        }
-    };
-
-    /**
-     * Creates a new SelectionService.
-     */
-    protected AbstractSelectionService() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionService.
-     */
-    public void addSelectionListener(ISelectionListener l) {
-        listeners.add(l);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionService.
-     */
-    public void addSelectionListener(String partId, ISelectionListener listener) {
-        getPerPartTracker(partId).addSelectionListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionService.
-     */
-    public void addPostSelectionListener(ISelectionListener l) {
-        postListeners.add(l);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionService.
-     */
-    public void addPostSelectionListener(String partId,
-            ISelectionListener listener) {
-        getPerPartTracker(partId).addPostSelectionListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionService.
-     */
-    public void removeSelectionListener(ISelectionListener l) {
-        listeners.remove(l);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on ISelectionListener.
-     */
-    public void removePostSelectionListener(String partId,
-            ISelectionListener listener) {
-        getPerPartTracker(partId).removePostSelectionListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ISelectionService.
-     */
-    public void removePostSelectionListener(ISelectionListener l) {
-        postListeners.remove(l);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on ISelectionListener.
-     */
-    public void removeSelectionListener(String partId,
-            ISelectionListener listener) {
-        getPerPartTracker(partId).removeSelectionListener(listener);
-    }
-
-    /**
-     * Fires a selection event to the given listeners.
-     * 
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     */
-    protected void fireSelection(final IWorkbenchPart part, final ISelection sel) {
-        Object[] array = listeners.getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final ISelectionListener l = (ISelectionListener) array[i];
-            if ((part != null && sel != null)
-                    || l instanceof INullSelectionListener) {
-                
-                try {
-                    l.selectionChanged(part, sel);
-                } catch (Exception e) {
-                    WorkbenchPlugin.log(e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Fires a selection event to the given listeners.
-     * 
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     */
-    protected void firePostSelection(final IWorkbenchPart part,
-            final ISelection sel) {
-        Object[] array = postListeners.getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final ISelectionListener l = (ISelectionListener) array[i];
-            if ((part != null && sel != null)
-                    || l instanceof INullSelectionListener) {
-                
-                try {
-                    l.selectionChanged(part, sel);
-                } catch (Exception e) {
-                    WorkbenchPlugin.log(e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns the per-part selection tracker for the given part id.
-     * 
-     * @param partId part identifier
-     * @return per-part selection tracker
-     */
-    protected AbstractPartSelectionTracker getPerPartTracker(String partId) {
-        if (perPartTrackers == null) {
-            perPartTrackers = new Hashtable(4);
-        }
-        AbstractPartSelectionTracker tracker = (AbstractPartSelectionTracker) perPartTrackers
-                .get(partId);
-        if (tracker == null) {
-            tracker = createPartTracker(partId);
-            perPartTrackers.put(partId, tracker);
-        }
-        return tracker;
-    }
-
-    /**
-     * Creates a new per-part selection tracker for the given part id.
-     * 
-     * @param partId part identifier
-     * @return per-part selection tracker
-     */
-    protected abstract AbstractPartSelectionTracker createPartTracker(
-            String partId);
-
-    /**
-     * Returns the selection.
-     */
-    public ISelection getSelection() {
-        if (activeProvider != null) {
-			return activeProvider.getSelection();
-		} else {
-			return null;
-		}
-    }
-
-    /*
-     * @see ISelectionService#getSelection(String)
-     */
-    public ISelection getSelection(String partId) {
-        return getPerPartTracker(partId).getSelection();
-    }
-
-    /**
-     * Sets the current-active part (or null if none)
-     * 
-     * @since 3.1 
-     *
-     * @param newPart the new active part (or null if none)
-     */
-    public void setActivePart(IWorkbenchPart newPart) {
-        // Optimize.
-        if (newPart == activePart) {
-			return;
-		}
-        
-        ISelectionProvider selectionProvider = null;
-        
-        if (newPart != null) {
-            selectionProvider = newPart.getSite().getSelectionProvider();
-            
-            if (selectionProvider == null) {
-                newPart = null;
-            }
-        }
-        
-        if (newPart == activePart) {
-			return;
-		}
-        
-        if (activePart != null) {
-            if (activeProvider != null) {
-                activeProvider.removeSelectionChangedListener(selListener);
-                if (activeProvider instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) activeProvider)
-                            .removePostSelectionChangedListener(postSelListener);
-				} else {
-					activeProvider
-                            .removeSelectionChangedListener(postSelListener);
-				}
-                activeProvider = null;
-            }
-            activePart = null;
-        }
-
-        activePart = newPart;
-        
-        if (newPart != null) {
-            activeProvider = selectionProvider;
-            // Fire an event if there's an active provider
-            activeProvider.addSelectionChangedListener(selListener);
-            ISelection sel = activeProvider.getSelection();
-            fireSelection(newPart, sel);
-            if (activeProvider instanceof IPostSelectionProvider) {
-				((IPostSelectionProvider) activeProvider)
-                        .addPostSelectionChangedListener(postSelListener);
-			} else {
-				activeProvider.addSelectionChangedListener(postSelListener);
-			}
-            firePostSelection(newPart, sel);
-        } else {
-            fireSelection(null, null);
-            firePostSelection(null, null);
-        }
-    }
-    
-//    /**
-//     * Notifies the listener that a part has been activated.
-//     */
-//    public void partActivated(IWorkbenchPart newPart) {
-//        // Optimize.
-//        if (newPart == activePart)
-//            return;
-//
-//        // Unhook selection from the old part.
-//        reset();
-//
-//        // Update active part.
-//        activePart = newPart;
-//
-//        // Hook selection on the new part.
-//        if (activePart != null) {
-//            activeProvider = activePart.getSite().getSelectionProvider();
-//            if (activeProvider != null) {
-//                // Fire an event if there's an active provider
-//                activeProvider.addSelectionChangedListener(selListener);
-//                ISelection sel = activeProvider.getSelection();
-//                fireSelection(newPart, sel);
-//                if (activeProvider instanceof IPostSelectionProvider)
-//                    ((IPostSelectionProvider) activeProvider)
-//                            .addPostSelectionChangedListener(postSelListener);
-//                else
-//                    activeProvider.addSelectionChangedListener(postSelListener);
-//                firePostSelection(newPart, sel);
-//            } else {
-//                //Reset active part. activeProvider may not be null next time this method is called.
-//                activePart = null;
-//            }
-//        }
-//        // No need to fire an event if no active provider, since this was done in reset()
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been brought to the front.
-//     */
-//    public void partBroughtToTop(IWorkbenchPart newPart) {
-//        // do nothing, the active part has not changed,
-//        // so the selection is unaffected
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been closed
-//     */
-//    public void partClosed(IWorkbenchPart part) {
-//        // Unhook selection from the part.
-//        if (part == activePart) {
-//            reset();
-//        }
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been deactivated.
-//     */
-//    public void partDeactivated(IWorkbenchPart part) {
-//        // Unhook selection from the part.
-//        if (part == activePart) {
-//            reset();
-//        }
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been opened.
-//     */
-//    public void partOpened(IWorkbenchPart part) {
-//        // Wait for activation.
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been opened.
-//     */
-//    public void partInputChanged(IWorkbenchPart part) {
-//        // 36501 - only process if part is active
-//        if (activePart == part) {
-//            reset();
-//            partActivated(part);
-//        }
-//    }
-//
-//    /**
-//     * Resets the service.  The active part and selection provider are
-//     * dereferenced.
-//     */
-//    public void reset() {
-//        if (activePart != null) {
-//            fireSelection(null, null);
-//            firePostSelection(null, null);
-//            if (activeProvider != null) {
-//                activeProvider.removeSelectionChangedListener(selListener);
-//                if (activeProvider instanceof IPostSelectionProvider)
-//                    ((IPostSelectionProvider) activeProvider)
-//                            .removePostSelectionChangedListener(postSelListener);
-//                else
-//                    activeProvider
-//                            .removeSelectionChangedListener(postSelListener);
-//                activeProvider = null;
-//            }
-//            activePart = null;
-//        }
-//    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSet.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSet.java
deleted file mode 100644
index 5e09d42..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSet.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Abstract baseclass for IWorkingSet implementations.
- * 
- * @since 3.2
- */
-public abstract class AbstractWorkingSet implements IAdaptable, IWorkingSet {
-
-	protected static final String FACTORY_ID = "org.eclipse.ui.internal.WorkingSetFactory"; //$NON-NLS-1$
-
-	static final String TAG_AGGREGATE = "aggregate"; //$NON-NLS-1$
-
-	private String name;
-
-	protected ArrayList elements;
-
-	private IWorkingSetManager manager;
-
-	protected IMemento workingSetMemento;
-
-	private String label;
-
-	/**
-	 * Whether or not the label value should follow the name value. It should do
-	 * this until a call to setLabel() differentiates it from the name.
-	 */
-	private boolean labelBoundToName;
-
-	/**
-	 * Create a new instance of this class
-	 * 
-	 * @param name the unique name for this working set
-	 * @param label the user-friendly name for this working set
-	 */
-	public AbstractWorkingSet(String name, String label) {
-		Assert.isNotNull(name, "name must not be null"); //$NON-NLS-1$
-		this.name = name;
-		this.label = label;
-		labelBoundToName = Util.equals(name, label);
-	}
-	
-	/**
-	 * Returns the receiver if the requested type is either IWorkingSet 
-	 * or IPersistableElement.
-	 * 
-	 * @param adapter the requested type
-	 * @return the receiver if the requested type is either IWorkingSet 
-	 * 	or IPersistableElement.
-	 */
-	public Object getAdapter(Class adapter) {
-	    if (adapter == IWorkingSet.class
-	            || adapter == IPersistableElement.class) {
-	        return this;
-	    }
-	    return Platform.getAdapterManager().getAdapter(this, adapter);
-	}
-
-	public String getName() {
-	    return name;
-	}
-
-	public void setName(String newName) {
-	    Assert.isNotNull(newName, "Working set name must not be null"); //$NON-NLS-1$
-	    
-	    name = newName;
-	    fireWorkingSetChanged(IWorkingSetManager.CHANGE_WORKING_SET_NAME_CHANGE, null);
-	    
-	    if (labelBoundToName) {
-	    		label = newName;
-	    		fireWorkingSetChanged(IWorkingSetManager.CHANGE_WORKING_SET_LABEL_CHANGE, null);
-	    }
-	}
-
-	/**
-	 * Connect this working set to a manger. 
-	 * 
-	 * @param manager the manager to connect to
-	 */
-	public void connect(IWorkingSetManager manager) {
-		Assert.isTrue(this.manager == null, "A working set can only be connected to one manager"); //$NON-NLS-1$
-		this.manager= manager;
-	}
-
-	/**
-	 * Disconnet this working set from its manager, if any.
-	 */
-	public void disconnect() {
-		this.manager= null;
-	}
-
-	protected void fireWorkingSetChanged(String property, Object oldValue) {
-		AbstractWorkingSetManager receiver= manager != null
-			? (AbstractWorkingSetManager)manager
-			: (AbstractWorkingSetManager)WorkbenchPlugin.getDefault().getWorkingSetManager();
-		receiver.workingSetChanged(this, property, oldValue);
-	}
-
-	/**
-	 * Create a copy of the elements to store in the receiver.
-	 * 
-	 * @param elements the elements to store a copy of in the 
-	 * 	receiver.
-	 */
-	protected void internalSetElements(IAdaptable[] newElements) {
-	    Assert.isNotNull(newElements,
-	            "Working set elements array must not be null"); //$NON-NLS-1$
-	
-	    elements = new ArrayList(newElements.length);
-	    for (int i = 0; i < newElements.length; i++) {
-	        elements.add(newElements[i]);
-	    }
-	}
-
-	public IAdaptable[] getElements() {
-	    ArrayList list = getElementsArray();
-	    return (IAdaptable[]) list.toArray(new IAdaptable[list.size()]);
-	}
-
-	/**
-	 * Returns the elements array list. Lazily restores the elements from
-	 * persistence memento. 
-	 * 
-	 * @return the elements array list
-	 */
-	protected ArrayList getElementsArray() {
-	    if (elements == null) {
-	        restoreWorkingSet();
-	        workingSetMemento = null;
-	    }
-	    return elements;
-	}
-	
-	abstract void restoreWorkingSet();
-	
-	protected IWorkingSetManager getManager() {
-		return manager;
-	}
-
-	public String getFactoryId() {
-	    return FACTORY_ID;
-	}
-
-	public String getLabel() {
-		return label;
-	}
-
-	public void setLabel(String label) {
-		this.label = label == null ? getName() : label;
-		labelBoundToName = Util.equals(label, name);  // rebind the label to the name
-		
-		fireWorkingSetChanged(
-				IWorkingSetManager.CHANGE_WORKING_SET_LABEL_CHANGE, null);
-	}
-	
-	public boolean isEmpty() {
-		return getElementsArray().isEmpty();
-	}
-	
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSet#getImage()
-     */
-    public final ImageDescriptor getImage() {
-        return getImageDescriptor();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java
deleted file mode 100644
index 2d0cfe2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractWorkingSetManager.java
+++ /dev/null
@@ -1,852 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-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.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetElementAdapter;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.IWorkingSetUpdater;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
-import org.eclipse.ui.dialogs.IWorkingSetNewWizard;
-import org.eclipse.ui.dialogs.IWorkingSetPage;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-import org.eclipse.ui.internal.dialogs.WorkingSetEditWizard;
-import org.eclipse.ui.internal.dialogs.WorkingSetNewWizard;
-import org.eclipse.ui.internal.dialogs.WorkingSetSelectionDialog;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.WorkingSetDescriptor;
-import org.eclipse.ui.internal.registry.WorkingSetRegistry;
-import org.eclipse.ui.progress.WorkbenchJob;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleListener;
-
-
-/**
- * Abstract implementation of <code>IWorkingSetManager</code>.
- */
-public abstract class AbstractWorkingSetManager extends EventManager implements
-		IWorkingSetManager, BundleListener, IExtensionChangeHandler {
-	
-    private SortedSet workingSets = new TreeSet(WorkingSetComparator.INSTANCE);
-    
-    /**
-     * Size of the list of most recently used working sets.
-     */
-    private static final int MRU_SIZE = 5;
-    private List recentWorkingSets = new ArrayList();
-
-    private BundleContext bundleContext;
-    private Map/*<String, IWorkingSetUpdater>*/ updaters= new HashMap();
-
-	private Map/*<String, IWorkingSetElementAdapter>*/ elementAdapters = new HashMap();
-    
-    private static final IWorkingSetUpdater NULL_UPDATER= new IWorkingSetUpdater() {
-		public void add(IWorkingSet workingSet) {
-		}
-		public boolean remove(IWorkingSet workingSet) {
-			return true;
-		}
-		public boolean contains(IWorkingSet workingSet) {
-			return true;
-		}
-		public void dispose() {
-		}
-	};
-	
-	private static final IWorkingSetElementAdapter IDENTITY_ADAPTER = new IWorkingSetElementAdapter() {
-
-		public IAdaptable[] adaptElements(IWorkingSet ws, IAdaptable[] elements) {
-			return elements;
-		}
-
-		public void dispose() {
-		}
-	};
-		
-    /**
-     * Returns the descriptors for the given editable working set ids. If an id
-     * refers to a missing descriptor, or one that is non-editable, it is
-     * skipped. If <code>null</code> is passed, all editable descriptors are
-     * returned.
-     * 
-     * @param supportedWorkingSetIds
-     *            the ids for the working set descriptors, or <code>null</code>
-     *            for all editable descriptors
-     * @return the descriptors corresponding to the given editable working set
-     *         ids
-     */
-    private static WorkingSetDescriptor[] getSupportedEditableDescriptors(
-            String[] supportedWorkingSetIds) {
-        WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
-                .getWorkingSetRegistry();
-        if (supportedWorkingSetIds == null) {
-            return registry.getNewPageWorkingSetDescriptors();
-        }
-        List result = new ArrayList(supportedWorkingSetIds.length);
-        for (int i = 0; i < supportedWorkingSetIds.length; i++) {
-            WorkingSetDescriptor desc = registry
-                    .getWorkingSetDescriptor(supportedWorkingSetIds[i]);
-            if (desc != null && desc.isEditable()) {
-                result.add(desc);
-            }
-        }
-        return (WorkingSetDescriptor[]) result
-                .toArray(new WorkingSetDescriptor[result.size()]);
-    }
-    
-    protected AbstractWorkingSetManager(BundleContext context) {
-    	bundleContext= context;
-    	bundleContext.addBundleListener(this);
-    	PlatformUI.getWorkbench().getExtensionTracker().registerHandler(this, ExtensionTracker
-				.createExtensionPointFilter(getExtensionPointFilter()));
-	}
-    
-    /**
-	 * 
-	 * @return
-	 * @since 3.3
-	 */
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				PlatformUI.PLUGIN_ID,
-				IWorkbenchRegistryConstants.PL_WORKINGSETS);
-	}
-    
-    public void dispose() {
-    	bundleContext.removeBundleListener(this);
-    	for (Iterator iter= updaters.values().iterator(); iter.hasNext();) {
-			((IWorkingSetUpdater)iter.next()).dispose();
-		}
-    	
-    	for (Iterator iter= elementAdapters.values().iterator(); iter.hasNext();) {
-			((IWorkingSetElementAdapter)iter.next()).dispose();
-		}
-    }
-    
-    //---- working set creation -----------------------------------------------------
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public IWorkingSet createWorkingSet(String name, IAdaptable[] elements) {
-        return new WorkingSet(name, name, elements);
-    }
-    
-    public IWorkingSet createAggregateWorkingSet(String name, String label,
-			IWorkingSet[] components) {
-		return new AggregateWorkingSet(name, label, components);
-	}
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetManager
-	 */
-    public IWorkingSet createWorkingSet(IMemento memento) {
-        return restoreWorkingSet(memento);
-    }
-
-    //---- working set management ---------------------------------------------------
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public void addWorkingSet(IWorkingSet workingSet) {
-        Assert.isTrue(!workingSets.contains(workingSet),
-                "working set already registered"); //$NON-NLS-1$
-        internalAddWorkingSet(workingSet);
-    }
-
-    private void internalAddWorkingSet(IWorkingSet workingSet) {
-		workingSets.add(workingSet);
-        ((AbstractWorkingSet)workingSet).connect(this);
-        addToUpdater(workingSet);
-        firePropertyChange(CHANGE_WORKING_SET_ADD, null, workingSet);
-	}
-
-	/* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    protected boolean internalRemoveWorkingSet(IWorkingSet workingSet) {
-        boolean workingSetRemoved = workingSets.remove(workingSet);
-        boolean recentWorkingSetRemoved = recentWorkingSets.remove(workingSet);
-        
-        if (workingSetRemoved) {
-        	((AbstractWorkingSet)workingSet).disconnect();
-        	removeFromUpdater(workingSet);
-            firePropertyChange(CHANGE_WORKING_SET_REMOVE, workingSet, null);
-        }
-        return workingSetRemoved || recentWorkingSetRemoved;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public IWorkingSet[] getWorkingSets() {
-    		SortedSet visibleSubset = new TreeSet(WorkingSetComparator.INSTANCE);
-    		for (Iterator i = workingSets.iterator(); i.hasNext();) {
-				IWorkingSet workingSet = (IWorkingSet) i.next();
-				if (workingSet.isVisible()) {
-					visibleSubset.add(workingSet);
-				}
-			}
-        return (IWorkingSet[]) visibleSubset.toArray(new IWorkingSet[visibleSubset.size()]);
-    }
-    
-    public IWorkingSet[] getAllWorkingSets() {
-    		return (IWorkingSet[]) workingSets.toArray(new IWorkingSet[workingSets.size()]);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public IWorkingSet getWorkingSet(String name) {
-        if (name == null || workingSets == null) {
-			return null;
-		}
-
-        Iterator iter = workingSets.iterator();
-        while (iter.hasNext()) {
-            IWorkingSet workingSet = (IWorkingSet) iter.next();
-            if (name.equals(workingSet.getName())) {
-				return workingSet;
-			}
-        }
-        return null;
-    }
-    
-    // ---- recent working set management --------------------------------------
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public IWorkingSet[] getRecentWorkingSets() {
-        return (IWorkingSet[]) recentWorkingSets.toArray(new IWorkingSet[recentWorkingSets.size()]);
-    }
-
-    /**
-     * Adds the specified working set to the list of recently used
-     * working sets.
-     * 
-     * @param workingSet working set to added to the list of recently 
-     * 	used working sets.
-     */
-    protected void internalAddRecentWorkingSet(IWorkingSet workingSet) {
-    		if (!workingSet.isVisible()) {
-				return;
-			}
-        recentWorkingSets.remove(workingSet);
-        recentWorkingSets.add(0, workingSet);
-        if (recentWorkingSets.size() > MRU_SIZE) {
-            recentWorkingSets.remove(MRU_SIZE);
-        }
-    }
-
-    //---- equals and hash code -----------------------------------------------
-    
-    /**
-     * Tests the receiver and the object for equality
-     * 
-     * @param object object to compare the receiver to
-     * @return true=the object equals the receiver, it has the same 
-     * 	working sets. false otherwise
-     */
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (!getClass().getName().equals(object.getClass().getName())) {
-			return false;
-		}
-        AbstractWorkingSetManager other= (AbstractWorkingSetManager)object;
-        return other.workingSets.equals(workingSets);
-    }
-
-    /**
-     * Returns the hash code.
-     * 
-     * @return the hash code.
-     */
-    public int hashCode() {
-        return workingSets.hashCode();
-    }
-
-    //---- property listeners -------------------------------------------------
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener) {
-        addListenerObject(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener) {
-        removeListenerObject(listener);
-    }
-
-    /**
-     * Notify property change listeners about a change to the list of 
-     * working sets.
-     * 
-     * @param changeId one of 
-     * 	IWorkingSetManager#CHANGE_WORKING_SET_ADD 
-     * 	IWorkingSetManager#CHANGE_WORKING_SET_REMOVE
-     * 	IWorkingSetManager#CHANGE_WORKING_SET_CONTENT_CHANGE 
-     * 	IWorkingSetManager#CHANGE_WORKING_SET_NAME_CHANGE
-     * @param oldValue the removed working set or null if a working set 
-     * 	was added or changed.
-     * @param newValue the new or changed working set or null if a working 
-     * 	set was removed.
-     */
-    protected void firePropertyChange(String changeId, Object oldValue,
-            Object newValue) {
-        final Object[] listeners = getListeners();
-		
-        if (listeners.length == 0) {
-			return;
-		}
-		
-        final PropertyChangeEvent event = new PropertyChangeEvent(this,
-                changeId, oldValue, newValue);
-		Runnable notifier = new Runnable() {
-			public void run() {
-				for (int i = 0; i < listeners.length; i++) {
-					final IPropertyChangeListener listener = (IPropertyChangeListener) listeners[i];
-					ISafeRunnable safetyWrapper = new ISafeRunnable() {
-
-						public void run() throws Exception {
-							listener.propertyChange(event);
-						}
-
-						public void handleException(Throwable exception) {
-							// logged by the runner
-						}
-					};
-					SafeRunner.run(safetyWrapper);
-				}
-			}
-		};
-		// Notifications are sent on the UI thread.
-		if (Display.getCurrent() != null) {
-			notifier.run();
-		} else {
-			// Use an asyncExec to avoid deadlocks.
-			Display.getDefault().asyncExec(notifier);
-		}
-    }
-    
-    /**
-	 * Fires a property change event for the changed working set. Should only be
-	 * called by org.eclipse.ui.internal.WorkingSet.
-	 * 
-	 * @param changedWorkingSet
-	 *            the working set that has changed
-	 * @param propertyChangeId
-	 *            the changed property. one of
-	 *            CHANGE_WORKING_SET_CONTENT_CHANGE,
-	 *            CHANGE_WORKING_SET_LABEL_CHANGE, and
-	 *            CHANGE_WORKING_SET_NAME_CHANGE
-	 * @param oldValue
-	 *            the old value
-	 */
-	public void workingSetChanged(IWorkingSet changedWorkingSet,
-			String propertyChangeId, Object oldValue) {
-		firePropertyChange(propertyChangeId, oldValue, changedWorkingSet);
-	}
-    
-    // ---- Persistence
-	// ----------------------------------------------------------------
-    
-    /**
-     * Saves all persistable working sets in the persistence store.
-     * 
-     * @param memento the persistence store
-     * @see IPersistableElement
-     */
-    public void saveWorkingSetState(IMemento memento) {
-        Iterator iterator = workingSets.iterator();
-        
-        // break the sets into aggregates and non aggregates.  The aggregates should be saved after the non-aggregates
-        // so that on restoration all necessary aggregate components can be found.
-        
-        ArrayList standardSets = new ArrayList();
-        ArrayList aggregateSets = new ArrayList();
-        while (iterator.hasNext()) {
-        		IWorkingSet set = (IWorkingSet) iterator.next();
-        		if (set instanceof AggregateWorkingSet) {
-					aggregateSets.add(set);
-				} else {
-					standardSets.add(set);
-				}
-        }
-
-        saveWorkingSetState(memento, standardSets);
-        saveWorkingSetState(memento, aggregateSets);
-    }
-
-	/**
-	 * @param memento the memento to save to
-	 * @param list the working sets to save
-	 * @since 3.2
-	 */
-	private void saveWorkingSetState(IMemento memento, List list) {
-		for (Iterator i = list.iterator(); i.hasNext();) {
-            IPersistableElement persistable = (IWorkingSet) i.next();
-            IMemento workingSetMemento = memento
-                    .createChild(IWorkbenchConstants.TAG_WORKING_SET);
-            workingSetMemento.putString(IWorkbenchConstants.TAG_FACTORY_ID,
-                    persistable.getFactoryId());
-            persistable.saveState(workingSetMemento);
-        }
-	}
-    
-    /**
-     * Recreates all working sets from the persistence store
-     * and adds them to the receiver.
-     * 
-     * @param memento the persistence store
-     */
-    protected void restoreWorkingSetState(IMemento memento) {
-        IMemento[] children = memento
-                .getChildren(IWorkbenchConstants.TAG_WORKING_SET);
-        for (int i = 0; i < children.length; i++) {
-            IWorkingSet workingSet = restoreWorkingSet(children[i]);
-            if (workingSet != null) {
-            	internalAddWorkingSet(workingSet);
-            }
-        }
-    }
-    
-    /**
-     * Recreates a working set from the persistence store.
-     * 
-     * @param memento the persistence store
-     * @return the working set created from the memento or null if
-     * 	creation failed.
-     */
-    protected IWorkingSet restoreWorkingSet(IMemento memento) {
-        String factoryID = memento
-                .getString(IWorkbenchConstants.TAG_FACTORY_ID);
-
-        if (factoryID == null) {
-            // if the factory id was not set in the memento
-            // then assume that the memento was created using
-            // IMemento.saveState, and should be restored using WorkingSetFactory
-            factoryID = AbstractWorkingSet.FACTORY_ID;
-        }
-        IElementFactory factory = PlatformUI.getWorkbench().getElementFactory(
-                factoryID);
-        if (factory == null) {
-            WorkbenchPlugin
-                    .log("Unable to restore working set - cannot instantiate factory: " + factoryID); //$NON-NLS-1$
-            return null;
-        }
-        IAdaptable adaptable = factory.createElement(memento);
-        if (adaptable == null) {
-            WorkbenchPlugin
-                    .log("Unable to restore working set - cannot instantiate working set: " + factoryID); //$NON-NLS-1$
-            return null;
-        }
-        if ((adaptable instanceof IWorkingSet) == false) {
-            WorkbenchPlugin
-                    .log("Unable to restore working set - element is not an IWorkingSet: " + factoryID); //$NON-NLS-1$
-            return null;
-        }
-        return (IWorkingSet) adaptable;
-    }
-
-    /**
-     * Saves the list of most recently used working sets in the persistence 
-     * store.
-     * 
-     * @param memento the persistence store
-     */
-    protected void saveMruList(IMemento memento) {
-        Iterator iterator = recentWorkingSets.iterator();
-
-        while (iterator.hasNext()) {
-            IWorkingSet workingSet = (IWorkingSet) iterator.next();
-            IMemento mruMemento = memento
-                    .createChild(IWorkbenchConstants.TAG_MRU_LIST);
-
-            mruMemento.putString(IWorkbenchConstants.TAG_NAME, workingSet
-                    .getName());
-        }
-    }
-
-   /**
-     * Restores the list of most recently used working sets from the 
-     * persistence store.
-     * 
-     * @param memento the persistence store
-     */
-    protected void restoreMruList(IMemento memento) {
-        IMemento[] mruWorkingSets = memento
-                .getChildren(IWorkbenchConstants.TAG_MRU_LIST);
-
-        for (int i = mruWorkingSets.length - 1; i >= 0; i--) {
-            String workingSetName = mruWorkingSets[i]
-                    .getString(IWorkbenchConstants.TAG_NAME);
-            if (workingSetName != null) {
-                IWorkingSet workingSet = getWorkingSet(workingSetName);
-                if (workingSet != null) {
-                    internalAddRecentWorkingSet(workingSet);
-                }
-            }
-        }
-    }
-
-    //---- user interface support -----------------------------------------------------
-    
-    /**
-     * @see org.eclipse.ui.IWorkingSetManager#createWorkingSetEditWizard(org.eclipse.ui.IWorkingSet)
-     * @since 2.1
-     */
-    public IWorkingSetEditWizard createWorkingSetEditWizard(
-            IWorkingSet workingSet) {
-        String editPageId = workingSet.getId();
-        WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
-                .getWorkingSetRegistry();
-        IWorkingSetPage editPage = null;
-
-        if (editPageId != null) {
-            editPage = registry.getWorkingSetPage(editPageId);
-        }
- 
-        // the following block kind of defeats IWorkingSet.isEditable() and it
-		// doesn't make sense for there to be a default page in such a case.
-		
-	     if (editPage == null) {
-			editPage = registry.getDefaultWorkingSetPage();
-			if (editPage == null) {
-				return null;
-			}
-		}
-		 
-        WorkingSetEditWizard editWizard = new WorkingSetEditWizard(editPage);
-        editWizard.setSelection(workingSet);
-        return editWizard;
-    }
-
-    /**
-     * @deprecated use createWorkingSetSelectionDialog(parent, true) instead
-     */
-    public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(
-            Shell parent) {
-        return createWorkingSetSelectionDialog(parent, true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager
-     */
-    public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(
-            Shell parent, boolean multi) {
-        return createWorkingSetSelectionDialog(parent, multi, null);
-    }
-    
-    /**
-	 * {@inheritDoc}
-	 */
-    public IWorkingSetNewWizard createWorkingSetNewWizard(String[] workingSetIds) {
-         WorkingSetDescriptor[] descriptors= getSupportedEditableDescriptors(workingSetIds);
-         if (descriptors.length == 0) {
-			return null;
-		}
-         return new WorkingSetNewWizard(descriptors);
-}
-
-    //---- working set delta handling -------------------------------------------------
-    
-	public void bundleChanged(BundleEvent event) {
-		String symbolicName = event.getBundle().getSymbolicName();
-		if (symbolicName == null)
-			return;
-		// If the workbench isn't running anymore simply return.
-		if (!Workbench.getInstance().isRunning()) {
-			return;
-		}
-		
-		if (event.getBundle().getState() == Bundle.ACTIVE) {
-			final WorkingSetDescriptor[] descriptors = WorkbenchPlugin.getDefault()
-					.getWorkingSetRegistry().getUpdaterDescriptorsForNamespace(
-							symbolicName);
-			
-			Job job = new WorkbenchJob(
-					NLS
-							.bind(
-									WorkbenchMessages.AbstractWorkingSetManager_updatersActivating,
-									symbolicName)) {
-
-				public IStatus runInUIThread(IProgressMonitor monitor) {
-					synchronized (updaters) {
-						for (int i = 0; i < descriptors.length; i++) {
-							WorkingSetDescriptor descriptor = descriptors[i];
-							List workingSets = getWorkingSetsForId(descriptor
-									.getId());
-							if (workingSets.size() == 0) {
-								continue;
-							}
-							final IWorkingSetUpdater updater = getUpdater(descriptor);
-							for (Iterator iter = workingSets.iterator(); iter
-									.hasNext();) {
-								final IWorkingSet workingSet = (IWorkingSet) iter
-										.next();
-								if (!updater.contains(workingSet)) {
-									updater.add(workingSet);
-								}
-							}
-						}
-					}
-					return Status.OK_STATUS;
-				}
-			};
-			job.setSystem(true);
-			job.schedule();
-		}
-	}
-
-	private List getWorkingSetsForId(String id) {
-		List result= new ArrayList();
-    	for (Iterator iter= workingSets.iterator(); iter.hasNext();) {
-    		IWorkingSet ws= (IWorkingSet)iter.next();
-    		if (id.equals(ws.getId())) {
-				result.add(ws);
-			}
-		}
-    	return result;
-	}
-	
-    private void addToUpdater(IWorkingSet workingSet) {
-    	WorkingSetDescriptor descriptor= WorkbenchPlugin.getDefault()
-			.getWorkingSetRegistry().getWorkingSetDescriptor(workingSet.getId());
-    	if (descriptor == null || !descriptor.isUpdaterClassLoaded()) {
-			return;
-		}
-		synchronized(updaters) {
-	    	IWorkingSetUpdater updater= getUpdater(descriptor);
-	    	if (!updater.contains(workingSet)) {
-				updater.add(workingSet);
-			}
-		}
-    }
-    
-    private IWorkingSetUpdater getUpdater(WorkingSetDescriptor descriptor) {
-		IWorkingSetUpdater updater= (IWorkingSetUpdater)updaters.get(descriptor.getId());
-    	if (updater == null) {
-    		updater= descriptor.createWorkingSetUpdater();
-    		if (updater == null) {
-    			updater= NULL_UPDATER;
-    		} else {
-    			firePropertyChange(CHANGE_WORKING_SET_UPDATER_INSTALLED, null, updater);
-    			PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-						descriptor.getConfigurationElement()
-								.getDeclaringExtension(), updater,
-						IExtensionTracker.REF_WEAK);
-    			
-    		}
-        	updaters.put(descriptor.getId(), updater);
-    	}
-		return updater;
-	}
-    
-    IWorkingSetElementAdapter getElementAdapter(WorkingSetDescriptor descriptor) {
-		IWorkingSetElementAdapter elementAdapter = (IWorkingSetElementAdapter) elementAdapters
-				.get(descriptor.getId());
-		if (elementAdapter == null) {
-			elementAdapter = descriptor.createWorkingSetElementAdapter();
-			if (elementAdapter == null) {
-				elementAdapter = IDENTITY_ADAPTER;
-			} else {
-				elementAdapters.put(descriptor.getId(), elementAdapter);
-			}
-		}
-		return elementAdapter;
-	}
-
-	private void removeFromUpdater(IWorkingSet workingSet) {
-		synchronized (updaters) {
-			IWorkingSetUpdater updater = (IWorkingSetUpdater) updaters
-					.get(workingSet.getId());
-			if (updater != null) {
-				updater.remove(workingSet);
-			}
-		}
-    }	
-    
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkingSetManager#createWorkingSetSelectionDialog(org.eclipse.swt.widgets.Shell, boolean, java.lang.String[])
-     */
-    public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(Shell parent, boolean multi, String[] workingsSetIds) {
-        return new WorkingSetSelectionDialog(parent, multi, workingsSetIds);
-    }
-
-	/**
-	 * Save the state to the state file.
-	 * 
-	 * @param stateFile
-	 * @throws IOException
-	 */
-	public void saveState(File stateFile) throws IOException {
-		XMLMemento memento = XMLMemento
-				.createWriteRoot(IWorkbenchConstants.TAG_WORKING_SET_MANAGER);
-		saveWorkingSetState(memento);
-		saveMruList(memento);
-	
-		FileOutputStream stream = new FileOutputStream(stateFile);
-		OutputStreamWriter writer = new OutputStreamWriter(stream, "utf-8"); //$NON-NLS-1$
-		memento.save(writer);
-		writer.close();
-	
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		// nothing - this is handled lazily.  These items are only created as needed by the getUpdater() and getElementAdapter() methods
-		
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			Object object = objects[i];
-			if (object instanceof IWorkingSetUpdater) {
-				removeUpdater((IWorkingSetUpdater)object);
-				
-			}
-			if (object instanceof IWorkingSetElementAdapter) {
-				removeElementAdapter((IWorkingSetElementAdapter) object);
-			}
-		} 
-	}
-
-	/**
-	 * Remove the element adapter from the manager and dispose of it.
-	 * 
-	 * @param elementAdapter
-	 * @since 3.3
-	 */
-	private void removeElementAdapter(
-			final IWorkingSetElementAdapter elementAdapter) {
-		SafeRunner.run(new ISafeRunnable() {
-
-			public void handleException(Throwable exception) {
-				StatusManager.getManager().handle(
-						StatusUtil.newStatus(PlatformUI.PLUGIN_ID, exception));
-			}
-
-			public void run() throws Exception {
-				elementAdapter.dispose();
-
-			}
-		});
-		synchronized (elementAdapters) {
-			elementAdapters.values().remove(elementAdapter);
-		}
-	}
-
-	/**
-	 * Remove the updater from the manager and dispose of it.
-	 * 
-	 * @param updater
-	 * @since 3.3
-	 */
-	private void removeUpdater(final IWorkingSetUpdater updater) {
-		SafeRunner.run(new ISafeRunnable() {
-
-			public void handleException(Throwable exception) {
-				StatusManager.getManager().handle(
-						StatusUtil.newStatus(PlatformUI.PLUGIN_ID, exception));
-			}
-
-			public void run() throws Exception {
-				updater.dispose();
-
-			}
-		});
-		synchronized (updaters) {
-			updaters.values().remove(updater);			
-		}
-		firePropertyChange(IWorkingSetManager.CHANGE_WORKING_SET_UPDATER_UNINSTALLED, updater, null);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetManager#addToWorkingSets(org.eclipse.core.runtime.IAdaptable,
-	 *      org.eclipse.ui.IWorkingSet[])
-	 */
-	public void addToWorkingSets(IAdaptable element, IWorkingSet[] workingSets) {
-		// ideally this method would be in a static util class of some kind but
-		// we dont have any such beast for working sets and making one for one
-		// method is overkill.
-		for (int i = 0; i < workingSets.length; i++) {
-			IWorkingSet workingSet = workingSets[i];
-			IAdaptable[] adaptedNewElements = workingSet
-					.adaptElements(new IAdaptable[] { element });
-			if (adaptedNewElements.length == 1) {
-				IAdaptable[] elements = workingSet.getElements();
-				IAdaptable[] newElements = new IAdaptable[elements.length + 1];
-				System.arraycopy(elements, 0, newElements, 0, elements.length);
-				newElements[newElements.length - 1] = adaptedNewElements[0];
-				workingSet.setElements(newElements);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
deleted file mode 100644
index 4911904..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * When 'action' tag is found in the registry, an object of this
- * class is created. It creates the appropriate action object
- * and captures information that is later used to add this action
- * object into menu/tool bar. This class is reused for
- * global (workbench) menu/tool bar, popup menu actions,
- * as well as view's pulldown and local tool bar.
- */
-public class ActionDescriptor implements IPluginContribution {
-    private PluginAction action;
-
-    private String toolbarId;
-
-    private String menuPath;
-
-    private String id;
-
-    private String pluginId;
-
-    private String menuGroup;
-
-    private String toolbarGroupId;
-
-	private int mode = 0;
-
-    /**
-     * Popup constant.  Value <code>0x1</code>.
-     */
-    public static final int T_POPUP = 0x1;
-
-    /**
-     * View constant.  Value <code>0x2</code>.
-     */
-    public static final int T_VIEW = 0x2;
-
-    /**
-     * Workbench constant.  Value <code>0x3</code>.
-     */
-    public static final int T_WORKBENCH = 0x3;
-
-    /**
-     * Editor constant.  Value <code>0x4</code>.
-     */
-    public static final int T_EDITOR = 0x4;
-
-    /**
-     * Workbench pulldown constant.  Value <code>0x5</code>.
-     */
-    public static final int T_WORKBENCH_PULLDOWN = 0x5;
-
-    /**
-     * Push style constant.  Value <code>push</code>.
-     */
-    public static final String STYLE_PUSH = "push"; //$NON-NLS-1$
-
-    /**
-     * Radio style constant.  Value <code>radio</code>.
-     */
-    public static final String STYLE_RADIO = "radio"; //$NON-NLS-1$
-
-    /***
-     * Toggle style constant.  Value <code>toggle</code>.
-     */
-    public static final String STYLE_TOGGLE = "toggle"; //$NON-NLS-1$
-
-    /**
-     * Pulldown style constant.  Value <code>pulldown</code>.
-     */
-    public static final String STYLE_PULLDOWN = "pulldown"; //$NON-NLS-1$
-
-    /**
-     * Creates a new descriptor with the specified target.
-     * 
-     * @param actionElement the configuration element
-     * @param targetType the type of action
-     */
-    public ActionDescriptor(IConfigurationElement actionElement, int targetType) {
-        this(actionElement, targetType, null);
-    }
-
-    /**
-     * Creates a new descriptor with the target and destination workbench part
-     * it will go into.
-     * 
-     * @param actionElement the configuration element
-     * @param targetType the type of action
-     * @param target the target object
-     */
-    public ActionDescriptor(IConfigurationElement actionElement,
-            int targetType, Object target) {
-        // Load attributes.
-        id = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        pluginId = actionElement.getNamespace();
-        String label = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-        String tooltip = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLTIP);
-        String helpContextId = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_HELP_CONTEXT_ID);
-        String mpath = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_MENUBAR_PATH);
-        String tpath = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLBAR_PATH);
-        String style = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STYLE);
-        String icon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-        String hoverIcon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_HOVERICON);
-        String disabledIcon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_DISABLEDICON);
-        String description = actionElement.getAttribute(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-        String accelerator = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ACCELERATOR);
-        if ("FORCE_TEXT".equals(actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_MODE))) { //$NON-NLS-1$
-        	mode  = ActionContributionItem.MODE_FORCE_TEXT;
-        }
-
-        // Verify input.
-        if (label == null) {
-            WorkbenchPlugin
-                    .log("Invalid action declaration (label == null): " + id); //$NON-NLS-1$
-            label = WorkbenchMessages.ActionDescriptor_invalidLabel; 
-        }
-
-        // Calculate menu and toolbar paths.
-        String mgroup = null;
-        String tgroup = null;
-        if (mpath != null) {
-            int loc = mpath.lastIndexOf('/');
-            if (loc != -1) {
-                mgroup = mpath.substring(loc + 1);
-                mpath = mpath.substring(0, loc);
-            } else {
-                mgroup = mpath;
-                mpath = null;
-            }
-        }
-        if (targetType == T_POPUP && mgroup == null) {
-			mgroup = IWorkbenchActionConstants.MB_ADDITIONS;
-		}
-        if (tpath != null) {
-            int loc = tpath.lastIndexOf('/');
-            if (loc != -1) {
-                tgroup = tpath.substring(loc + 1);
-                tpath = tpath.substring(0, loc);
-            } else {
-                tgroup = tpath;
-                tpath = null;
-            }
-        }
-        menuPath = mpath;
-        menuGroup = mgroup;
-        if ((tpath != null) && tpath.equals("Normal")) { //$NON-NLS-1$
-			tpath = ""; //$NON-NLS-1$
-		}
-        toolbarId = tpath;
-        toolbarGroupId = tgroup;
-
-        // Create action.
-        action = createAction(targetType, actionElement, target, style);
-        if (action.getText() == null) {
-			action.setText(label);
-		}
-        if (action.getToolTipText() == null && tooltip != null) {
-			action.setToolTipText(tooltip);
-		}
-        if (helpContextId != null) {
-            String fullID = helpContextId;
-            if (helpContextId.indexOf(".") == -1) { //$NON-NLS-1$
-				// For backward compatibility we auto qualify the id if it is not
-                // qualified)
-                fullID = actionElement.getNamespace()
-                        + "." + helpContextId;//$NON-NLS-1$
-			}
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(action, fullID);
-        }
-        if (description != null) {
-			action.setDescription(description);
-		}
-
-        if (style != null) {
-            // Since 2.1, the "state" and "pulldown" attributes means something different
-            // when the new "style" attribute has been set. See doc for more info.
-            String state = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STATE);
-            if (state != null) {
-                if (style.equals(STYLE_RADIO) || style.equals(STYLE_TOGGLE)) {
-					action.setChecked(state.equals("true"));//$NON-NLS-1$
-				}
-            }
-        } else {
-            // Keep for backward compatibility for actions not using the
-            // new style attribute.
-            String state = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STATE);
-            if (state != null) {
-                action.setChecked(state.equals("true"));//$NON-NLS-1$
-            }
-        }
-
-        String extendingPluginId = actionElement.getDeclaringExtension()
-                .getNamespace();
-
-        if (icon != null) {
-            action.setImageDescriptor(AbstractUIPlugin
-                    .imageDescriptorFromPlugin(extendingPluginId, icon));
-        }
-        if (hoverIcon != null) {
-            action.setHoverImageDescriptor(AbstractUIPlugin
-                    .imageDescriptorFromPlugin(extendingPluginId, hoverIcon));
-        }
-        if (disabledIcon != null) {
-            action
-                    .setDisabledImageDescriptor(AbstractUIPlugin
-                            .imageDescriptorFromPlugin(extendingPluginId,
-                                    disabledIcon));
-        }
-
-        if (accelerator != null) {
-			processAccelerator(action, accelerator);
-		}
-    }
-
-    /**
-     * Creates an instance of PluginAction. Depending on the target part,
-     * subclasses of this class may be created.
-     */
-    private PluginAction createAction(int targetType,
-            IConfigurationElement actionElement, Object target, String style) {
-        int actionStyle = IAction.AS_UNSPECIFIED;
-        if (style != null) {
-            if (style.equals(STYLE_RADIO)) {
-                actionStyle = IAction.AS_RADIO_BUTTON;
-            } else if (style.equals(STYLE_TOGGLE)) {
-                actionStyle = IAction.AS_CHECK_BOX;
-            } else if (style.equals(STYLE_PULLDOWN)) {
-                actionStyle = IAction.AS_DROP_DOWN_MENU;
-            } else if (style.equals(STYLE_PUSH)) {
-                actionStyle = IAction.AS_PUSH_BUTTON;
-            }
-        }
-
-        switch (targetType) {
-        case T_VIEW:
-            return new ViewPluginAction(actionElement, (IViewPart) target, id,
-                    actionStyle);
-        case T_EDITOR:
-            return new EditorPluginAction(actionElement, (IEditorPart) target,
-                    id, actionStyle);
-        case T_WORKBENCH:
-            return new WWinPluginAction(actionElement,
-                    (IWorkbenchWindow) target, id, actionStyle);
-        case T_WORKBENCH_PULLDOWN:
-            actionStyle = IAction.AS_DROP_DOWN_MENU;
-            return new WWinPluginPulldown(actionElement,
-                    (IWorkbenchWindow) target, id, actionStyle);
-        case T_POPUP:
-            return new ObjectPluginAction(actionElement, id, actionStyle);
-        default:
-            WorkbenchPlugin.log("Unknown Action Type: " + targetType);//$NON-NLS-1$
-            return null;
-        }
-    }
-
-    /**
-     * Returns the action object held in this descriptor.
-     * 
-     * @return the action
-     */
-    public PluginAction getAction() {
-        return action;
-    }
-
-    /**
-     * Returns action's id as defined in the registry.
-     * 
-     * @return the id
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns named slot (group) in the menu where this action
-     * should be added.
-     * 
-     * @return the menu group
-     */
-    public String getMenuGroup() {
-        return menuGroup;
-    }
-
-    /**
-     * Returns menu path where this action should be added. If null,
-     * the action will not be added into the menu.
-     * 
-     * @return the menubar path
-     */
-    public String getMenuPath() {
-        return menuPath;
-    }
-
-    /**
-     * Returns the named slot (group) in the tool bar where this
-     * action should be added.
-     * 
-     * @return the toolbar group id
-     */
-    public String getToolbarGroupId() {
-        return toolbarGroupId;
-    }
-
-    /**
-     * Returns id of the tool bar where this action should be added.
-     * If null, action will not be added to the tool bar.
-     * 
-     * @return the toolbar id
-     */
-    public String getToolbarId() {
-        return toolbarId;
-    }
-
-    /**
-     * For debugging only.
-     */
-    public String toString() {
-        return "ActionDescriptor(" + id + ")";//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Process the accelerator definition. If it is a number
-     * then process the code directly - if not then parse it
-     * and create the code
-     */
-    private void processAccelerator(IAction action, String acceleratorText) {
-
-        if (acceleratorText.length() == 0) {
-			return;
-		}
-
-        //Is it a numeric definition?
-        if (Character.isDigit(acceleratorText.charAt(0))) {
-            try {
-                action.setAccelerator(Integer.valueOf(acceleratorText)
-                        .intValue());
-            } catch (NumberFormatException e) {
-                WorkbenchPlugin.log("Invalid accelerator declaration for action: " + id, e); //$NON-NLS-1$
-            }
-        } else {
-			action.setAccelerator(Action.convertAccelerator(acceleratorText));
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return pluginId;
-    }
-    
-    public int getMode() {
-    	return mode;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
deleted file mode 100644
index ac2e59f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionExpression.java
+++ /dev/null
@@ -1,1089 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IActionFilter;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.internal.util.Util;
-import org.osgi.framework.Bundle;
-
-/**
- * An ActionExpression is used to evaluate the enablement / visibility criteria
- * for an action.
- */
-public class ActionExpression {
-
-	private static abstract class AbstractExpression {
-
-		/**
-		 * The hash code for this object. This value is computed lazily, and
-		 * marked as invalid when one of the values on which it is based
-		 * changes.
-		 */
-		protected transient int expressionHashCode = HASH_CODE_NOT_COMPUTED;
-
-		/**
-		 * Extract the object class tests from the expression. This allows
-		 * clients (e.g. the decorator manager) to handle object class testing
-		 * in a more optimized way. This method extracts the objectClass test
-		 * from the expression and returns the object classes. The expression is
-		 * not changed and a <code>null</code> is returned if no object class
-		 * is found.
-		 * 
-		 * @return String[] the object class names or <code>null</code> if
-		 *         none was found.
-		 */
-		public String[] extractObjectClasses() {
-			return null;
-		}
-
-		/**
-		 * Returns whether the expression is valid for the given object.
-		 * 
-		 * @param object
-		 *            the object to validate against (can be <code>null</code>)
-		 * @return boolean whether the expression is valid for the object.
-		 */
-		public abstract boolean isEnabledFor(Object object);
-
-		/**
-		 * Returns whether or not the receiver is potentially valid for the
-		 * object via just the extension type. Currently the only supported
-		 * expression type is <code>EXP_TYPE_OBJECT_CLASS</code>.
-		 * 
-		 * @param object
-		 *            the object to validate against (can be <code>null</code>)
-		 * @param expressionType
-		 *            the expression type to consider
-		 * @return boolean whether the expression is potentially valid for the
-		 *         object.
-		 */
-		public boolean isEnabledForExpression(Object object,
-				String expressionType) {
-			return false;
-		}
-
-		/**
-		 * Return the value of the expression type that the receiver is enabled
-		 * for. If the receiver is not enabled for the expressionType then
-		 * return <code>null</code>.
-		 * 
-		 * @param expressionType
-		 *            the expression type to consider
-		 * @return Collection of String if there are values for this expression
-		 *         or <code>null</code> if this is not possible in the
-		 *         receiver or any of it's children
-		 */
-		public Collection valuesForExpression(String expressionType) {
-			return null;
-		}
-	}
-
-	private static class AndExpression extends CompositeExpression {
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to determine the expressions
-		 *            for And.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public AndExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super(element);
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof AndExpression) {
-				final AndExpression that = (AndExpression) object;
-				return Util.equals(this.list, that.list);
-			}
-
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			Iterator iter = list.iterator();
-			while (iter.hasNext()) {
-				AbstractExpression expr = (AbstractExpression) iter.next();
-				if (!expr.isEnabledFor(object)) {
-					return false;
-				}
-			}
-			return true;
-		}
-	}
-
-	private static abstract class CompositeExpression extends
-			AbstractExpression {
-		/**
-		 * 
-		 */
-		protected ArrayList list;
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The composite element we will create the expression from.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public CompositeExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super();
-
-			IConfigurationElement[] children = element.getChildren();
-			if (children.length == 0) {
-				throw new IllegalStateException(
-						"Composite expression cannot be empty"); //$NON-NLS-1$
-			}
-
-			list = new ArrayList(children.length);
-			for (int i = 0; i < children.length; i++) {
-				String tag = children[i].getName();
-				AbstractExpression expr = createExpression(children[i]);
-				if (EXP_TYPE_OBJECT_CLASS.equals(tag)) {
-					list.add(0, expr);
-				} else {
-					list.add(expr);
-				}
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.ActionExpression.AbstractExpression#extractObjectClasses()
-		 */
-		public String[] extractObjectClasses() {
-			Iterator iterator = list.iterator();
-			List classNames = null;
-			while (iterator.hasNext()) {
-				AbstractExpression next = (AbstractExpression) iterator.next();
-				String[] objectClasses = next.extractObjectClasses();
-				if (objectClasses != null) {
-					if (classNames == null) {
-						classNames = new ArrayList();
-					}
-					for (int i = 0; i < objectClasses.length; i++) {
-						classNames.add(objectClasses[i]);
-					}
-				}
-			}
-			if (classNames == null) {
-				return null;
-			}
-
-			String[] returnValue = new String[classNames.size()];
-			classNames.toArray(returnValue);
-			return returnValue;
-		}
-
-		/**
-		 * Computes the hash code for this object based on the id.
-		 * 
-		 * @return The hash code for this object.
-		 */
-		public final int hashCode() {
-			if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-				expressionHashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(list);
-				if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-					expressionHashCode++;
-				}
-			}
-			return expressionHashCode;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledForExpression(Object object,
-				String expressionType) {
-			Iterator iterator = list.iterator();
-			while (iterator.hasNext()) {
-				AbstractExpression next = (AbstractExpression) iterator.next();
-				if (next.isEnabledForExpression(object, expressionType)) {
-					return true;
-				}
-			}
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.ActionExpression.AbstractExpression#valuesForExpression(java.lang.String)
-		 */
-		public Collection valuesForExpression(String expressionType) {
-			Iterator iterator = list.iterator();
-			Collection allValues = null;
-			while (iterator.hasNext()) {
-				AbstractExpression next = (AbstractExpression) iterator.next();
-				Collection values = next.valuesForExpression(expressionType);
-				if (values != null) {
-					if (allValues == null) {
-						allValues = values;
-					} else {
-						allValues.addAll(values);
-					}
-				}
-
-			}
-			return allValues;
-		}
-	}
-
-	private static class NotExpression extends SingleExpression {
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to create the definition for
-		 *            the receiver.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public NotExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super(element);
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			return !super.isEnabledFor(object);
-		}
-	}
-
-	private static class ObjectClassExpression extends AbstractExpression {
-		private String className;
-
-		private boolean extracted;
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to determine the expressions
-		 *            for objectClass.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public ObjectClassExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super();
-
-			className = element.getAttribute(ATT_NAME);
-			if (className == null) {
-				throw new IllegalStateException(
-						"Object class expression missing name attribute"); //$NON-NLS-1$
-			}
-		}
-
-		/**
-		 * Create an ObjectClass expression based on the className. Added for
-		 * backwards compatibility.
-		 * 
-		 * @param className
-		 */
-		public ObjectClassExpression(String className) {
-			super();
-
-			if (className != null) {
-				this.className = className;
-			} else {
-				throw new IllegalStateException(
-						"Object class expression must have class name"); //$NON-NLS-1$
-			}
-		}
-
-		/**
-		 * Check the interfaces the whole way up. If one of them matches
-		 * className return <code>true</code>.
-		 * 
-		 * @param interfaceToCheck
-		 *            The interface whose name we are testing against.
-		 * @return <code>true</code> if one of the interfaces in the hierarchy
-		 *         matches className, <code>false</code> otherwise.
-		 */
-		private boolean checkInterfaceHierarchy(Class interfaceToCheck) {
-			if (interfaceToCheck.getName().equals(className)) {
-				return true;
-			}
-			Class[] superInterfaces = interfaceToCheck.getInterfaces();
-			for (int i = 0; i < superInterfaces.length; i++) {
-				if (checkInterfaceHierarchy(superInterfaces[i])) {
-					return true;
-				}
-			}
-			return false;
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof ObjectClassExpression) {
-				final ObjectClassExpression that = (ObjectClassExpression) object;
-				return Util.equals(this.className, that.className)
-						&& Util.equals(this.extracted, that.extracted);
-			}
-
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.ActionExpression.AbstractExpression#extractObjectClasses()
-		 */
-		public String[] extractObjectClasses() {
-			extracted = true;
-			return new String[] { className };
-		}
-
-		/**
-		 * Computes the hash code for this object based on the id.
-		 * 
-		 * @return The hash code for this object.
-		 */
-		public final int hashCode() {
-			if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-				expressionHashCode = HASH_INITIAL * HASH_FACTOR
-						+ Util.hashCode(className);
-				expressionHashCode = expressionHashCode * HASH_FACTOR + Util.hashCode(extracted);
-				if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-					expressionHashCode++;
-				}
-			}
-			return expressionHashCode;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			if (object == null) {
-				return false;
-			}
-			if (extracted) {
-				return true;
-			}
-
-			Class clazz = object.getClass();
-			while (clazz != null) {
-				// test the class itself
-				if (clazz.getName().equals(className)) {
-					return true;
-				}
-
-				// test all the interfaces the class implements
-				Class[] interfaces = clazz.getInterfaces();
-				for (int i = 0; i < interfaces.length; i++) {
-					if (checkInterfaceHierarchy(interfaces[i])) {
-						return true;
-					}
-				}
-
-				// get the superclass
-				clazz = clazz.getSuperclass();
-			}
-
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledForExpression(Object object,
-				String expressionType) {
-			if (expressionType.equals(EXP_TYPE_OBJECT_CLASS)) {
-				return isEnabledFor(object);
-			}
-			return false;
-		}
-	}
-
-	private static class ObjectStateExpression extends AbstractExpression {
-		private String name;
-
-		private String value;
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to determine the expressions
-		 *            for objectState.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public ObjectStateExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super();
-
-			name = element.getAttribute(ATT_NAME);
-			value = element.getAttribute(ATT_VALUE);
-			if (name == null || value == null) {
-				throw new IllegalStateException(
-						"Object state expression missing attribute"); //$NON-NLS-1$
-			}
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof ObjectStateExpression) {
-				final ObjectStateExpression that = (ObjectStateExpression) object;
-				return Util.equals(this.name, that.name)
-						&& Util.equals(this.value, that.value);
-			}
-
-			return false;
-		}
-
-		private IActionFilter getActionFilter(Object object) {
-			return (IActionFilter)Util.getAdapter(object, IActionFilter.class);
-		}
-
-		/**
-		 * Computes the hash code for this object based on the id.
-		 * 
-		 * @return The hash code for this object.
-		 */
-		public final int hashCode() {
-			if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-				expressionHashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(name);
-				expressionHashCode = expressionHashCode * HASH_FACTOR + Util.hashCode(value);
-				if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-					expressionHashCode++;
-				}
-			}
-			return expressionHashCode;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			if (object == null) {
-				return false;
-			}
-
-			// Try out the object first.
-			if (preciselyMatches(object)) {
-				return true;
-			}
-
-			// Try out the underlying resource.
-			Class resourceClass = LegacyResourceSupport.getResourceClass();
-			if (resourceClass == null) {
-				return false;
-			}
-
-			if (resourceClass.isInstance(object)) {
-				return false;
-			}
-
-			Object res = Util.getAdapter(object, resourceClass);
-			if (res == null) {
-				return false;
-			}
-
-			return preciselyMatches(res);
-
-		}
-
-		private boolean preciselyMatches(Object object) {
-			// Get the action filter.
-			IActionFilter filter = getActionFilter(object);
-			if (filter == null) {
-				return false;
-			}
-
-			// Run the action filter.
-			return filter.testAttribute(object, name, value);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.ActionExpression.AbstractExpression#valuesForExpression(java.lang.String)
-		 */
-		public Collection valuesForExpression(String expressionType) {
-			if (expressionType.equals(name)) {
-				Collection returnValue = new HashSet();
-				returnValue.add(value);
-				return returnValue;
-			}
-			return null;
-		}
-
-	}
-
-	private static class OrExpression extends CompositeExpression {
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to determine the expressions
-		 *            for Or.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public OrExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super(element);
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof OrExpression) {
-				final OrExpression that = (OrExpression) object;
-				return Util.equals(this.list, that.list);
-			}
-
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			Iterator iter = list.iterator();
-			while (iter.hasNext()) {
-				AbstractExpression expr = (AbstractExpression) iter.next();
-				if (expr.isEnabledFor(object)) {
-					return true;
-				}
-			}
-			return false;
-		}
-	}
-
-	private static class PluginStateExpression extends AbstractExpression {
-		private String id;
-
-		private String value;
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to determine the expressions
-		 *            for pluginState.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public PluginStateExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super();
-
-			id = element.getAttribute(ATT_ID);
-			value = element.getAttribute(ATT_VALUE);
-			if (id == null || value == null) {
-				throw new IllegalStateException(
-						"Plugin state expression missing attribute"); //$NON-NLS-1$
-			}
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof PluginStateExpression) {
-				final PluginStateExpression that = (PluginStateExpression) object;
-				return Util.equals(this.id, that.id)
-						&& Util.equals(this.value, that.value);
-			}
-
-			return false;
-		}
-
-		/**
-		 * Computes the hash code for this object based on the id.
-		 * 
-		 * @return The hash code for this object.
-		 */
-		public final int hashCode() {
-			if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-				expressionHashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(id);
-				expressionHashCode = expressionHashCode * HASH_FACTOR + Util.hashCode(value);
-				if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-					expressionHashCode++;
-				}
-			}
-			return expressionHashCode;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			Bundle bundle = Platform.getBundle(id);
-			if (!BundleUtility.isReady(bundle)) {
-				return false;
-			}
-			if (value.equals(PLUGIN_INSTALLED)) {
-				return true;
-			}
-			if (value.equals(PLUGIN_ACTIVATED)) {
-				return BundleUtility.isActivated(bundle);
-			}
-			return false;
-		}
-	}
-
-	private static class SingleExpression extends AbstractExpression {
-		private AbstractExpression child;
-
-		/**
-		 * Create a single expression from the abstract definition.
-		 * 
-		 * @param expression
-		 *            The expression that will be the child of the new single
-		 *            expression.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public SingleExpression(AbstractExpression expression)
-				throws IllegalStateException {
-			super();
-
-			if (expression != null) {
-				child = expression;
-			} else {
-				throw new IllegalStateException(
-						"Single expression must contain 1 expression"); //$NON-NLS-1$
-			}
-		}
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element to create the expression from.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public SingleExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super();
-
-			IConfigurationElement[] children = element.getChildren();
-			if (children.length != 1) {
-				throw new IllegalStateException(
-						"Single expression does not contain only 1 expression"); //$NON-NLS-1$
-			}
-			child = createExpression(children[0]);
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof SingleExpression) {
-				final SingleExpression that = (SingleExpression) object;
-				return Util.equals(this.child, that.child);
-			}
-
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.ActionExpression.AbstractExpression#extractObjectClasses()
-		 */
-		public String[] extractObjectClasses() {
-			return child.extractObjectClasses();
-		}
-
-		/**
-		 * Computes the hash code for this object based on the id.
-		 * 
-		 * @return The hash code for this object.
-		 */
-		public final int hashCode() {
-			if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-				expressionHashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(child);
-				if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-					expressionHashCode++;
-				}
-			}
-			return expressionHashCode;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			return child.isEnabledFor(object);
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledForExpression(Object object,
-				String expressionType) {
-			return child.isEnabledForExpression(object, expressionType);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.ActionExpression.AbstractExpression#valuesForExpression(java.lang.String)
-		 */
-		public Collection valuesForExpression(String expressionType) {
-			return child.valuesForExpression(expressionType);
-		}
-
-	}
-
-	private static class SystemPropertyExpression extends AbstractExpression {
-		private String name;
-
-		private String value;
-
-		/**
-		 * Creates and populates the expression from the attributes and sub-
-		 * elements of the configuration element.
-		 * 
-		 * @param element
-		 *            The element that will be used to determine the expressions
-		 *            for systemProperty.
-		 * @throws IllegalStateException
-		 *             if the expression tag is not defined in the schema.
-		 */
-		public SystemPropertyExpression(IConfigurationElement element)
-				throws IllegalStateException {
-			super();
-
-			name = element.getAttribute(ATT_NAME);
-			value = element.getAttribute(ATT_VALUE);
-			if (name == null || value == null) {
-				throw new IllegalStateException(
-						"System property expression missing attribute"); //$NON-NLS-1$
-			}
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on AbstractExpression.
-		 */
-		public boolean isEnabledFor(Object object) {
-			String str = System.getProperty(name);
-			if (str == null) {
-				return false;
-			}
-			return value.equals(str);
-		}
-
-		public final boolean equals(final Object object) {
-			if (object instanceof SystemPropertyExpression) {
-				final SystemPropertyExpression that = (SystemPropertyExpression) object;
-				return Util.equals(this.name, that.name)
-						&& Util.equals(this.value, that.value);
-			}
-
-			return false;
-		}
-
-		/**
-		 * Computes the hash code for this object based on the id.
-		 * 
-		 * @return The hash code for this object.
-		 */
-		public final int hashCode() {
-			if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-				expressionHashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(name);
-				expressionHashCode = expressionHashCode * HASH_FACTOR + Util.hashCode(value);
-				if (expressionHashCode == HASH_CODE_NOT_COMPUTED) {
-					expressionHashCode++;
-				}
-			}
-			return expressionHashCode;
-		}
-	}
-
-	private static final String ATT_ID = "id"; //$NON-NLS-1$
-
-	private static final String ATT_NAME = "name"; //$NON-NLS-1$
-
-	private static final String ATT_VALUE = "value"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for AND.
-	 * 
-	 */
-	public static final String EXP_TYPE_AND = "and"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for NOT.
-	 * 
-	 */
-	public static final String EXP_TYPE_NOT = "not"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for objectClass.
-	 * 
-	 */
-	public static final String EXP_TYPE_OBJECT_CLASS = "objectClass"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for objectState.
-	 * 
-	 */
-	public static final String EXP_TYPE_OBJECT_STATE = "objectState"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for OR.
-	 * 
-	 */
-	public static final String EXP_TYPE_OR = "or"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for pluginState.
-	 * 
-	 */
-	public static final String EXP_TYPE_PLUG_IN_STATE = "pluginState"; //$NON-NLS-1$
-
-	/**
-	 * Constant definition for systemProperty.
-	 * 
-	 */
-	public static final String EXP_TYPE_SYSTEM_PROPERTY = "systemProperty"; //$NON-NLS-1$	
-
-	/**
-	 * The constant integer hash code value meaning the hash code has not yet
-	 * been computed.
-	 */
-	private static final int HASH_CODE_NOT_COMPUTED = -1;
-
-	/**
-	 * A factor for computing the hash code for all schemes.
-	 */
-	private static final int HASH_FACTOR = 89;
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = ActionExpression.class.getName()
-			.hashCode();
-
-	private static final String PLUGIN_ACTIVATED = "activated"; //$NON-NLS-1$
-
-	private static final String PLUGIN_INSTALLED = "installed"; //$NON-NLS-1$
-
-	/**
-	 * Create an expression from the attributes and sub-elements of the
-	 * configuration element.
-	 * 
-	 * @param element
-	 *            The IConfigurationElement with a tag defined in the public
-	 *            constants.
-	 * @return AbstractExpression based on the definition
-	 * @throws IllegalStateException
-	 *             if the expression tag is not defined in the schema.
-	 */
-	private static AbstractExpression createExpression(
-			IConfigurationElement element) throws IllegalStateException {
-		String tag = element.getName();
-		if (tag.equals(EXP_TYPE_OR)) {
-			return new OrExpression(element);
-		}
-		if (tag.equals(EXP_TYPE_AND)) {
-			return new AndExpression(element);
-		}
-		if (tag.equals(EXP_TYPE_NOT)) {
-			return new NotExpression(element);
-		}
-		if (tag.equals(EXP_TYPE_OBJECT_STATE)) {
-			return new ObjectStateExpression(element);
-		}
-		if (tag.equals(EXP_TYPE_OBJECT_CLASS)) {
-			return new ObjectClassExpression(element);
-		}
-		if (tag.equals(EXP_TYPE_PLUG_IN_STATE)) {
-			return new PluginStateExpression(element);
-		}
-		if (tag.equals(EXP_TYPE_SYSTEM_PROPERTY)) {
-			return new SystemPropertyExpression(element);
-		}
-
-		throw new IllegalStateException(
-				"Action expression unrecognized element: " + tag); //$NON-NLS-1$
-	}
-
-	/**
-	 * The hash code for this object. This value is computed lazily, and marked
-	 * as invalid when one of the values on which it is based changes.
-	 */
-	private transient int hashCode = HASH_CODE_NOT_COMPUTED;
-
-	private SingleExpression root;
-
-	/**
-	 * Creates an action expression for the given configuration element.
-	 * 
-	 * @param element
-	 *            The element to build the expression from.
-	 */
-	public ActionExpression(IConfigurationElement element) {
-		try {
-			root = new SingleExpression(element);
-		} catch (IllegalStateException e) {
-			e.printStackTrace();
-			root = null;
-		}
-	}
-
-	/**
-	 * Create an instance of the receiver with the given expression type and
-	 * value. Currently the only supported expression type is
-	 * <code>EXP_TYPE_OBJECT_CLASS</code>.
-	 * 
-	 * @param expressionType
-	 *            The expression constant we are creating an instance of.
-	 * @param expressionValue
-	 *            The name of the class we are creating an expression for.
-	 */
-	public ActionExpression(String expressionType, String expressionValue) {
-		if (expressionType.equals(EXP_TYPE_OBJECT_CLASS)) {
-			root = new SingleExpression(new ObjectClassExpression(
-					expressionValue));
-		}
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof ActionExpression) {
-			final ActionExpression that = (ActionExpression) object;
-			return Util.equals(this.root, that.root);
-		}
-
-		return false;
-	}
-
-	/**
-	 * Extract the object class test from the expression. This allows clients
-	 * (e.g. the decorator manager) to handle object class testing in a more
-	 * optimized way. This method removes the objectClass test from the
-	 * expression and returns the object class. The expression is not changed
-	 * and a <code>null</code> is returned if no object class is found.
-	 * 
-	 * @return the object class or <code>null</code> if none was found.
-	 */
-	public String[] extractObjectClasses() {
-		return root.extractObjectClasses();
-	}
-
-	/**
-	 * Computes the hash code for this object based on the id.
-	 * 
-	 * @return The hash code for this object.
-	 */
-	public final int hashCode() {
-		if (hashCode == HASH_CODE_NOT_COMPUTED) {
-			hashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(root);
-			if (hashCode == HASH_CODE_NOT_COMPUTED) {
-				hashCode++;
-			}
-		}
-		return hashCode;
-	}
-
-	/**
-	 * Returns whether the expression is valid for all elements of the given
-	 * selection.
-	 * 
-	 * @param selection
-	 *            the structured selection to use
-	 * @return boolean whether the expression is valid for the selection.
-	 */
-	public boolean isEnabledFor(IStructuredSelection selection) {
-		if (root == null) {
-			return false;
-		}
-
-		if (selection == null || selection.isEmpty()) {
-			return root.isEnabledFor(null);
-		}
-
-		Iterator elements = selection.iterator();
-		while (elements.hasNext()) {
-			if (!isEnabledFor(elements.next())) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Returns whether the expression is valid for the given object.
-	 * 
-	 * @param object
-	 *            the object to validate against (can be <code>null</code>)
-	 * @return boolean whether the expression is valid for the object.
-	 */
-	public boolean isEnabledFor(Object object) {
-		if (root == null) {
-			return false;
-		}
-		return root.isEnabledFor(object);
-	}
-
-	/**
-	 * Returns whether or not the receiver is potentially valid for the object
-	 * via just the extension type. Currently the only supported expression type
-	 * is <code>EXP_TYPE_OBJECT_CLASS</code>.
-	 * 
-	 * @param object
-	 *            the object to validate against (can be <code>null</code>)
-	 * @param expressionType
-	 *            the expression type to consider
-	 * @return boolean whether the expression is potentially valid for the
-	 *         object.
-	 */
-	public boolean isEnabledForExpression(Object object, String expressionType) {
-		if (root == null) {
-			return false;
-		}
-		return root.isEnabledForExpression(object, expressionType);
-	}
-
-	/**
-	 * Return the values of the expression type that the receiver is enabled
-	 * for. If the receiver is not enabled for the expressionType then return
-	 * <code>null</code>.
-	 * 
-	 * @param expressionType
-	 *            the expression type to consider
-	 * @return Collection if there are values for this expression or
-	 *         <code>null</code> if this is not possible in the receiver or
-	 *         any of it's children
-	 */
-	public Collection valuesForExpression(String expressionType) {
-		return root.valuesForExpression(expressionType);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionPresentation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionPresentation.java
deleted file mode 100644
index d788b7e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionPresentation.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.internal.provisional.application.IActionBarConfigurer2;
-import org.eclipse.ui.internal.registry.IActionSet;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-
-/**
- * Manage the configurable actions for one window.
- */
-public class ActionPresentation {
-    private WorkbenchWindow window;
-
-    private HashMap mapDescToRec = new HashMap(3);
-
-    private HashMap invisibleBars = new HashMap(3);
-
-    private class SetRec {
-        public SetRec(IActionSetDescriptor desc, IActionSet set,
-                SubActionBars bars) {
-            this.desc = desc;
-            this.set = set;
-            this.bars = bars;
-        }
-
-        public IActionSetDescriptor desc;
-
-        public IActionSet set;
-
-        public SubActionBars bars;
-    }
-
-    /**
-     * ActionPresentation constructor comment.
-     */
-    public ActionPresentation(WorkbenchWindow window) {
-        super();
-        this.window = window;
-    }
-
-    /**
-     * Remove all action sets.
-     */
-    public void clearActionSets() {
-        // Get all of the action sets -- both visible and invisible.
-        final List oldList = new ArrayList();
-        oldList.addAll(mapDescToRec.keySet());
-        oldList.addAll(invisibleBars.keySet());
-
-        Iterator iter = oldList.iterator();
-        while (iter.hasNext()) {
-            IActionSetDescriptor desc = (IActionSetDescriptor) iter.next();
-            removeActionSet(desc);
-        }
-    }
-
-    /**
-     * Destroy an action set.
-     */
-    public void removeActionSet(IActionSetDescriptor desc) {
-        SetRec rec = (SetRec) mapDescToRec.remove(desc);
-        if (rec == null) {
-            rec = (SetRec) invisibleBars.remove(desc);
-        }
-        if (rec != null) {
-            IActionSet set = rec.set;
-            SubActionBars bars = rec.bars;
-            if (bars != null) {
-                bars.dispose();
-            }
-            if (set != null) {
-                set.dispose();
-            }
-        }
-    }
-
-    /**
-     * Sets the list of visible action set.
-     */
-    public void setActionSets(IActionSetDescriptor[] newArray) {
-        // Convert array to list.
-        HashSet newList = new HashSet();
-        
-        for (int i = 0; i < newArray.length; i++) {
-            IActionSetDescriptor descriptor = newArray[i];
-            
-            newList.add(descriptor);
-        }
-        List oldList = new ArrayList(mapDescToRec.keySet());
-
-        // Remove obsolete actions.
-        Iterator iter = oldList.iterator();
-        while (iter.hasNext()) {
-            IActionSetDescriptor desc = (IActionSetDescriptor) iter.next();
-            if (!newList.contains(desc)) {
-                SetRec rec = (SetRec) mapDescToRec.get(desc);
-                if (rec != null) {
-                    mapDescToRec.remove(desc);
-                    IActionSet set = rec.set;
-                    SubActionBars bars = rec.bars;
-                    if (bars != null) {
-                        SetRec invisibleRec = new SetRec(desc, set, bars);
-                        invisibleBars.put(desc, invisibleRec);
-                        bars.deactivate();
-                    }
-                }
-            }
-        }
-
-        // Add new actions.
-        ArrayList sets = new ArrayList();
-        
-        for (int i = 0; i < newArray.length; i++) {
-            IActionSetDescriptor desc = newArray[i];
-
-            if (!mapDescToRec.containsKey(desc)) {
-                try {
-                    SetRec rec;
-                    // If the action bars and sets have already been created
-                    // then
-                    // reuse those action sets
-                    if (invisibleBars.containsKey(desc)) {
-                        rec = (SetRec) invisibleBars.get(desc);
-                        if (rec.bars != null) {
-                            rec.bars.activate();
-                        }
-                        invisibleBars.remove(desc);
-                    } else {
-                        IActionSet set = desc.createActionSet();
-                        SubActionBars bars = new ActionSetActionBars(window
-								.getActionBars(), window,
-								(IActionBarConfigurer2) window.getWindowConfigurer()
-										.getActionBarConfigurer(), desc.getId());
-                        rec = new SetRec(desc, set, bars);
-                        set.init(window, bars);
-                        sets.add(set);
-
-                        // only register against the tracker once - check for
-                        // other registrations against the provided extension
-                        Object[] existingRegistrations = window
-                                .getExtensionTracker().getObjects(
-                                        desc.getConfigurationElement()
-                                                .getDeclaringExtension());
-                        if (existingRegistrations.length == 0
-                                || !containsRegistration(existingRegistrations,
-                                        desc)) {
-                            //register the set with the page tracker
-                            //this will be cleaned up by WorkbenchWindow listener
-                            window.getExtensionTracker().registerObject(
-                                    desc.getConfigurationElement().getDeclaringExtension(),
-                                    desc, IExtensionTracker.REF_WEAK);
-                        }
-                    }
-                    mapDescToRec.put(desc, rec);
-                } catch (CoreException e) {
-                    WorkbenchPlugin
-                            .log("Unable to create ActionSet: " + desc.getId(), e);//$NON-NLS-1$
-                }
-            }
-        }
-        // We process action sets in two passes for coolbar purposes. First we
-        // process base contributions
-        // (i.e., actions that the action set contributes to its toolbar), then
-        // we process adjunct contributions
-        // (i.e., actions that the action set contributes to other toolbars).
-        // This type of processing is
-        // necessary in order to maintain group order within a coolitem.
-        PluginActionSetBuilder.processActionSets(sets, window);
-
-        iter = sets.iterator();
-        while (iter.hasNext()) {
-            PluginActionSet set = (PluginActionSet) iter.next();
-            set.getBars().activate();
-        }
-    }
-
-    /**
-     * Return whether the array contains the given action set.
-     * 
-     * @param existingRegistrations the array to check
-     * @param set the set to look for
-     * @return whether the set is in the array
-     * @since 3.1
-     */
-    private boolean containsRegistration(Object[] existingRegistrations, IActionSetDescriptor set) {
-        for (int i = 0; i < existingRegistrations.length; i++) {
-            if (existingRegistrations[i] == set) {
-				return true;
-			}
-        }
-        return false;
-    }
-
-    /**
-     */
-    public IActionSet[] getActionSets() {
-        Collection setRecCollection = mapDescToRec.values();
-        IActionSet result[] = new IActionSet[setRecCollection.size()];
-        int i = 0;
-        for (Iterator iterator = setRecCollection.iterator(); iterator
-                .hasNext(); i++) {
-			result[i] = ((SetRec) iterator.next()).set;
-		}
-        return result;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetActionBars.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetActionBars.java
deleted file mode 100644
index b580713..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetActionBars.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.SubMenuManager;
-import org.eclipse.jface.action.SubToolBarManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.ui.IActionBars2;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.SubActionBars2;
-import org.eclipse.ui.internal.provisional.application.IActionBarConfigurer2;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * This class represents the action bars for an action set.
- */
-public class ActionSetActionBars extends SubActionBars2 {
-	
-	private IActionBarConfigurer2 actionBarConfigurer = null;
-
-	private String actionSetId;
-
-	private ArrayList adjunctContributions = new ArrayList();
-
-	private IToolBarManager coolItemToolBarMgr = null;
-
-	private IToolBarContributionItem toolBarContributionItem = null;
-
-	/**
-     * Constructs a new action bars object
-     */
-    public ActionSetActionBars(IActionBars2 parent, IServiceLocator serviceLocator, IActionBarConfigurer2 actionBarConfigurer, String actionSetId) {
-    	super(parent, serviceLocator);
-		this.actionSetId = actionSetId;		
-        this.actionBarConfigurer = actionBarConfigurer;
-    }
-
-	/**
-	 * Adds to the list all the actions that are part of this action set but
-	 * belong to different cool bar items.
-	 * 
-	 * @param item
-	 *            the item defined in this actionset but in a different tool Bar
-	 *            contribution item
-	 */
-	/* package */void addAdjunctContribution(IContributionItem item) {
-		adjunctContributions.add(item);
-	}
-
-	/*
-	 * (non-Javadoc) Inherited from SubActionBars.
-	 */
-	protected SubMenuManager createSubMenuManager(IMenuManager parent) {
-		return new ActionSetMenuManager(parent, actionSetId);
-	}
-
-	/*
-	 * (non-Javadoc) Inherited from SubActionBars.
-	 */
-	protected SubToolBarManager createSubToolBarManager(IToolBarManager parent) {
-		// return null, action sets are managed by CoolItemToolBarManagers
-		return null;
-	}
-
-	/**
-	 * Dispose the contributions.
-	 */
-	public void dispose() {
-		super.dispose();
-		if (coolItemToolBarMgr == null) {
-			return;
-		}
-		IContributionItem[] items = coolItemToolBarMgr.getItems();
-		// remove the action set's items from its action bar, don't use
-		// removeAll since other items from other actions sets may be in
-		// the action bar's cool item
-		for (int i = 0; i < items.length; i++) {
-			IContributionItem item = items[i];
-			if (item instanceof PluginActionCoolBarContributionItem) {
-				PluginActionCoolBarContributionItem actionSetItem = (PluginActionCoolBarContributionItem) item;
-				if (actionSetItem.getActionSetId().equals(actionSetId)) {
-					coolItemToolBarMgr.remove(item);
-					item.dispose();
-				}
-			} else {
-				// leave separators and group markers intact, doing
-				// so allows ordering to be maintained when action sets
-				// are removed then added back
-			}
-		}
-
-		// remove items from this action set that are in other action bars
-		for (int i = 0; i < adjunctContributions.size(); i++) {
-			ContributionItem item = (ContributionItem) adjunctContributions
-					.get(i);
-			IContributionManager parent = item.getParent();
-			if (parent != null) {
-				parent.remove(item);
-				item.dispose();
-			}
-		}
-		toolBarContributionItem = null;
-		coolItemToolBarMgr = null;
-		adjunctContributions = new ArrayList();
-	}
-
-	/**
-	 * Returns the contribution item that the given contribution item should be
-	 * inserted after.
-	 * 
-	 * @param startId
-	 *            the location to start looking alphabetically.
-	 * @param itemId
-	 *            the target item id.
-	 * @param mgr
-	 *            the contribution manager.
-	 * @return the contribution item that the given items should be returned
-	 *         after.
-	 * 
-	 * @since 3.0
-	 */
-	private IContributionItem findAlphabeticalOrder(String startId,
-			String itemId, IContributionManager mgr) {
-		IContributionItem[] items = mgr.getItems();
-		int insertIndex = 0;
-
-		// look for starting point
-		while (insertIndex < items.length) {
-			IContributionItem item = items[insertIndex];
-			if (item.getId() != null && item.getId().equals(startId)) {
-				break;
-			}
-			++insertIndex;
-		}
-
-		// Find the index that this item should be inserted in
-		for (int i = insertIndex + 1; i < items.length; i++) {
-			IContributionItem item = items[i];
-			String testId = item.getId();
-
-			if (item.isGroupMarker()) {
-				break;
-			}
-
-			if (itemId != null && testId != null) {
-				if (itemId.compareTo(testId) < 1) {
-					break;
-				}
-			}
-			insertIndex = i;
-		}
-		// Should be inserted at the end
-		if (insertIndex >= items.length) {
-			return null;
-		}
-		return items[insertIndex];
-	}
-
-	/* package */String getActionSetId() {
-		return actionSetId;
-	}
-
-	/**
-	 * Returns a tool bar manager for this Item.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager getToolBarManager() {
-		ICoolBarManager coolBarManager = getCastedParent().getCoolBarManager();
-		if (coolBarManager == null) {
-			return null;
-		}
-        return actionBarConfigurer.createToolBarManager();
-	}
-
-	/**
-	 * Returns the correct tool bar for the given action id. If this action is
-	 * an adjunct type the it returns the toolbar manager from the cool bar
-	 * manager.
-	 * 
-	 * @param id
-	 *            the id of the action
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager getToolBarManager(String actionId) {
-		// Check if a tool bar manager for an adjunct type is being requested
-		String toolBarId = actionSetId;
-		boolean isAdjunctType = false;
-		if (!actionId.equals(actionSetId)) {
-			// Adjunct type
-			toolBarId = actionId;
-			isAdjunctType = true;
-		}
-
-		// Rereive the cool bar manager
-		ICoolBarManager coolBarManager = getCastedParent().getCoolBarManager();
-		if (coolBarManager == null) {
-			return null;
-		}
-
-		// Check to see that there isn't already a tool bar created
-		// and the tool bar being requested is not for an adjunct action
-		if ((coolItemToolBarMgr != null) && (!isAdjunctType)) {
-			return coolItemToolBarMgr;
-		}
-
-		// Search for toolBarId in the cool Bar manager
-		IContributionItem cbItem = coolBarManager.find(toolBarId);
-		// If there hasn't been a tool bar contribution item created for this
-		// tool bar
-		// id then create one. Otherwise retrieve the tool bar contribution
-		// item
-		if (cbItem instanceof IToolBarContributionItem) {
-
-			IToolBarContributionItem tbcbItem = (IToolBarContributionItem) cbItem;
-			coolItemToolBarMgr = tbcbItem.getToolBarManager();
-			// If this not an adjuct type then we can cashe the tool bar
-			// contribution type
-			if (!isAdjunctType) {
-				toolBarContributionItem = tbcbItem;
-			}
-		} else {
-			
-			coolItemToolBarMgr = actionBarConfigurer.createToolBarManager();
-           
-			// If this is not an adjunct type then create a tool bar
-			// contribution item
-			// we don't create one for an adjunct type because another action
-			// set action bars contains one
-            
-            IContributionItem toolBarContributionItem = actionBarConfigurer
-					.createToolBarContributionItem(coolItemToolBarMgr,
-							toolBarId);
-
-			toolBarContributionItem.setParent(coolItemToolBarMgr);
-			toolBarContributionItem.setVisible(getActive());
-			coolItemToolBarMgr.markDirty();
-
-			// Now add the tool bar contribution Item to the cool bar manager
-			IContributionItem refItem = findAlphabeticalOrder(
-					IWorkbenchActionConstants.MB_ADDITIONS, toolBarId,
-					coolBarManager);
-			if (refItem != null) {
-				coolBarManager.insertAfter(refItem.getId(),
-						toolBarContributionItem);
-			} else {
-				coolBarManager.add(toolBarContributionItem);
-			}
-		}
-		return coolItemToolBarMgr;
-	}
-
-	// for dynamic UI
-	/* package */void removeAdjunctContribution(ContributionItem item) {
-		adjunctContributions.remove(item);
-	}
-
-	/**
-	 * Activate / Deactivate the contributions.
-	 */
-	protected void setActive(boolean set) {
-		super.setActive(set);
-
-		ICoolBarManager coolBarManager = getCastedParent().getCoolBarManager();
-		if (coolBarManager == null) {
-			return;
-		}
-
-		// 1. Need to set visibility for all non-adjunct actions
-		if (coolItemToolBarMgr != null) {
-			IContributionItem[] items = coolItemToolBarMgr.getItems();
-			for (int i = 0; i < items.length; i++) {
-				IContributionItem item = items[i];
-				if (item instanceof PluginActionCoolBarContributionItem) {
-					PluginActionCoolBarContributionItem actionSetItem = (PluginActionCoolBarContributionItem) item;
-					// Only if the action set id for this contribution item is
-					// the same
-					// as this object
-					if (actionSetItem.getActionSetId().equals(actionSetId)) {
-						item.setVisible(set);
-						coolItemToolBarMgr.markDirty();
-						if (!coolBarManager.isDirty()) {
-							coolBarManager.markDirty();
-						}
-					}
-				}
-			}
-			// Update the manager
-			coolItemToolBarMgr.update(false);
-			if (toolBarContributionItem != null) {
-				toolBarContributionItem.update(ICoolBarManager.SIZE);
-			}
-		}
-
-		// 2. Need to set visibility for all adjunct actions
-		if (adjunctContributions.size() > 0) {
-			for (Iterator i = adjunctContributions.iterator(); i.hasNext();) {
-				IContributionItem item = (IContributionItem) i.next();
-				if (item instanceof ContributionItem) {
-					item.setVisible(set);
-					IContributionManager manager = ((ContributionItem) item)
-							.getParent();
-					manager.markDirty();
-					manager.update(false);
-					if (!coolBarManager.isDirty()) {
-						coolBarManager.markDirty();
-					}
-					item.update(ICoolBarManager.SIZE);
-				}
-
-			}
-
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetContributionItem.java
deleted file mode 100644
index d53c5cf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetContributionItem.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.SubContributionItem;
-
-/**
- * This class marks a sub contribution item as belonging to
- * an action set.
- */
-public class ActionSetContributionItem extends SubContributionItem implements
-        IActionSetContributionItem {
-
-    /**
-     * The action set id.
-     */
-    private String actionSetId;
-
-    /**
-     * Constructs a new item
-     */
-    public ActionSetContributionItem(IContributionItem item, String actionSetId) {
-        super(item);
-        this.actionSetId = actionSetId;
-    }
-
-    /**
-     * Returns the action set id.
-     */
-    public String getActionSetId() {
-        return actionSetId;
-    }
-
-    /**
-     * Sets the action set id.
-     */
-    public void setActionSetId(String newActionSetId) {
-        actionSetId = newActionSetId;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetManager.java
deleted file mode 100644
index 614bf9d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetManager.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Maintains a reference counted set of action sets, with a visibility mask.
- * This is used to determine the visibility of actions in a workbench page. In a
- * workbench page, there may be may be many conditions that can cause an action
- * set to become visible (such as the active part, the active editor, the
- * default visibility of the action, the properties of the perspective, etc.)
- * The user can also explicitly mask off particular action sets in each
- * perspective.
- * <p>
- * The reference count indicates how many conditions have requested that the
- * actions be active and the mask indicates whether or not the set was disabled
- * by the user.
- * </p>
- * 
- * @since 3.1
- */
-public class ActionSetManager {
-
-    private static class ActionSetRec {
-        int showCount;
-
-        int maskCount;
-        
-        public boolean isVisible() {
-            return maskCount == 0 && showCount > 0;
-        }
-        
-        public boolean isEmpty() {
-            return maskCount == 0 && showCount == 0;
-        }
-    }
-
-    private HashMap actionSets = new HashMap();
-    private HashSet visibleItems = new HashSet();
-    
-    public static final int PROP_VISIBLE = 0;
-    public static final int PROP_HIDDEN = 1;
-    public static final int CHANGE_MASK = 0;
-    public static final int CHANGE_UNMASK = 1;
-    public static final int CHANGE_SHOW = 2;
-    public static final int CHANGE_HIDE = 3;
-    
-    private ListenerList listeners = new ListenerList();
-	private IPropertyListener contextListener;
-	private Map activationsById = new HashMap();
-	private IContextService contextService;
-    
-    public ActionSetManager(IServiceLocator locator) {
-    	contextService = (IContextService) locator.getService(IContextService.class);
-		addListener(getContextListener());
-    }
-    
-    /**
-	 * @return
-	 */
-	private IPropertyListener getContextListener() {
-		if (contextListener == null) {
-			contextListener = new IPropertyListener() {
-				public void propertyChanged(Object source, int propId) {
-					if (source instanceof IActionSetDescriptor) {
-						IActionSetDescriptor desc = (IActionSetDescriptor) source;
-						String id = desc.getId();
-						if (propId == PROP_VISIBLE) {
-							activationsById.put(id, contextService
-									.activateContext(id));
-						} else if (propId == PROP_HIDDEN) {
-							IContextActivation act = (IContextActivation) activationsById
-									.remove(id);
-							if (act != null) {
-								contextService.deactivateContext(act);
-							}
-						}
-					}
-				}
-			};
-		}
-		return contextListener;
-	}
-
-	public void addListener(IPropertyListener l) {
-        listeners.add(l);
-    }
-
-    public void removeListener(IPropertyListener l) {
-        listeners.remove(l);
-    }
-    
-    private void firePropertyChange(IActionSetDescriptor descriptor, int id) {
-    	Object[] l = listeners.getListeners();
-        for (int i=0; i<l.length; i++) {
-            IPropertyListener listener = (IPropertyListener) l[i];
-            listener.propertyChanged(descriptor, id);
-        }
-    }        
-    
-    private ActionSetRec getRec(IActionSetDescriptor descriptor) {
-        ActionSetRec rec = (ActionSetRec)actionSets.get(descriptor);
-        
-        if (rec == null) {
-            rec = new ActionSetRec();
-            actionSets.put(descriptor, rec);
-        }
-        
-        return rec;
-    }
-    
-    public void showAction(IActionSetDescriptor descriptor) {
-        ActionSetRec rec = getRec(descriptor);
-        
-        boolean wasVisible = rec.isVisible();
-        rec.showCount++;
-        if (!wasVisible && rec.isVisible()) {
-            visibleItems.add(descriptor);
-            firePropertyChange(descriptor, PROP_VISIBLE);
-            if (rec.isEmpty()) {
-                actionSets.remove(descriptor);
-            }
-        }
-    }
-    
-    public void hideAction(IActionSetDescriptor descriptor) {
-        ActionSetRec rec = getRec(descriptor);
-        
-        boolean wasVisible = rec.isVisible();
-        rec.showCount--;
-        if (wasVisible && !rec.isVisible()) {
-            visibleItems.remove(descriptor);
-            firePropertyChange(descriptor, PROP_HIDDEN);
-            if (rec.isEmpty()) {
-                actionSets.remove(descriptor);
-            }
-        }
-    }
-    
-    public void maskAction(IActionSetDescriptor descriptor) {
-        ActionSetRec rec = getRec(descriptor);
-        
-        boolean wasVisible = rec.isVisible();
-        rec.maskCount++;
-        if (wasVisible && !rec.isVisible()) {
-            visibleItems.remove(descriptor);
-            firePropertyChange(descriptor, PROP_HIDDEN);
-            if (rec.isEmpty()) {
-                actionSets.remove(descriptor);
-            }
-        }
-    }
-    
-    public void unmaskAction(IActionSetDescriptor descriptor) {
-        ActionSetRec rec = getRec(descriptor);
-        
-        boolean wasVisible = rec.isVisible();
-        rec.maskCount--;
-        if (!wasVisible && rec.isVisible()) {
-            visibleItems.add(descriptor);
-            firePropertyChange(descriptor, PROP_VISIBLE);
-            if (rec.isEmpty()) {
-                actionSets.remove(descriptor);
-            }
-        }
-    }
-    
-    public Collection getVisibleItems() {
-        return visibleItems;
-    }
-    
-    public void change(IActionSetDescriptor descriptor, int changeType) {
-        switch(changeType) {
-        case CHANGE_SHOW:
-            showAction(descriptor); break;
-        case CHANGE_HIDE:
-            hideAction(descriptor); break;
-        case CHANGE_MASK:
-            maskAction(descriptor); break;
-        case CHANGE_UNMASK:
-            unmaskAction(descriptor); break;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetMenuManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetMenuManager.java
deleted file mode 100644
index fdc8e72..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetMenuManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.SubContributionItem;
-import org.eclipse.jface.action.SubMenuManager;
-
-/**
- * An <code>EditorMenuManager</code> is used to sort the contributions
- * made by an editor so that they always appear after the action sets.  
- */
-public class ActionSetMenuManager extends SubMenuManager {
-    private String actionSetId;
-
-    /**
-     * Constructs a new editor manager.
-     */
-    public ActionSetMenuManager(IMenuManager mgr, String actionSetId) {
-        super(mgr);
-        this.actionSetId = actionSetId;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     *
-     * Returns the item passed to us, not the wrapper.
-     * In the case of menu's not added by this manager,
-     * ensure that we return a wrapper for the menu.
-     */
-    public IContributionItem find(String id) {
-        IContributionItem item = getParentMenuManager().find(id);
-        if (item instanceof SubContributionItem) {
-			// Return the item passed to us, not the wrapper.
-            item = unwrap(item);
-		}
-
-        if (item instanceof IMenuManager) {
-            // if it is a menu manager wrap it before returning
-            IMenuManager menu = (IMenuManager) item;
-            if (menu instanceof SubMenuManager) {
-				// it it is already wrapped then remover the wrapper and 
-                // rewrap. We have a table of wrappers so we reuse wrappers
-                // we create.
-                menu = (IMenuManager) ((SubMenuManager) menu).getParent();
-			}
-            item = getWrapper(menu);
-        }
-
-        return item;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public IContributionItem[] getItems() {
-        return getParentMenuManager().getItems();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on SubContributionManager.
-     */
-    protected SubContributionItem wrap(IContributionItem item) {
-        return new ActionSetContributionItem(item, actionSetId);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on SubMenuManager.
-     */
-    protected SubMenuManager wrapMenu(IMenuManager menu) {
-        return new ActionSetMenuManager(menu, actionSetId);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetSeparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetSeparator.java
deleted file mode 100644
index 18ab9fa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetSeparator.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * This class represents a pseudo-group defined by an action set.
- * It is not a real group ( aka GroupMarker ) because that would interfere with
- * the pre-existing groups in a menu or toolbar.
- */
-public class ActionSetSeparator extends ContributionItem implements
-        IActionSetContributionItem {
-    private String actionSetId;
-
-    /**
-     * Constructs a new group marker.
-     */
-    public ActionSetSeparator(String groupName, String newActionSetId) {
-        super(groupName);
-        actionSetId = newActionSetId;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     * Fills the given menu with a SWT separator MenuItem.
-     */
-    public void fill(Menu menu, int index) {
-        if (index >= 0) {
-			new MenuItem(menu, SWT.SEPARATOR, index);
-		} else {
-			new MenuItem(menu, SWT.SEPARATOR);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionItem.
-     * Fills the given tool bar with a SWT separator ToolItem.
-     */
-    public void fill(ToolBar toolbar, int index) {
-        if (index >= 0) {
-			new ToolItem(toolbar, SWT.SEPARATOR, index);
-		} else {
-			new ToolItem(toolbar, SWT.SEPARATOR);
-		}
-    }
-
-    /**
-     * Returns the action set id.
-     */
-    public String getActionSetId() {
-        return actionSetId;
-    }
-
-    /** 
-     * The <code>Separator</code> implementation of this <code>IContributionItem</code> 
-     * method returns <code>true</code>
-     */
-    public boolean isSeparator() {
-        return true;
-    }
-
-    /**
-     * Sets the action set id.
-     */
-    public void setActionSetId(String newActionSetId) {
-        actionSetId = newActionSetId;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetsEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetsEvent.java
deleted file mode 100644
index 1419cce..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionSetsEvent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-
-/**
- * <p>
- * An event indicating changes to the action sets in a particular workbench
- * window.
- * </p>
- * <p>
- * This class is only intended for internal use within
- * <code>org.eclipse.ui.workbench</code>.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * <p>
- * This class is eventually intended to exist in
- * <code>org.eclipse.jface.menus</code>.
- * </p>
- * 
- * @since 3.2
- */
-public final class ActionSetsEvent {
-
-	/**
-	 * The array of action sets that are now active. This value may be
-	 * <code>null</code>.
-	 */
-	private final IActionSetDescriptor[] newActionSets;
-
-	/**
-	 * Constructs a new instance of {@link ActionSetsEvent}.
-	 * 
-	 * @param newActionSets
-	 *            The action sets that are now active; may be <code>null</code>.
-	 */
-	ActionSetsEvent(final IActionSetDescriptor[] newActionSets) {
-		this.newActionSets = newActionSets;
-	}
-
-	/**
-	 * Returns the currently active action sets.
-	 * 
-	 * @return The action sets that are now active; may be <code>null</code>.
-	 */
-	public final IActionSetDescriptor[] getNewActionSets() {
-		return newActionSets;
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java
deleted file mode 100644
index b6d4eb7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivateEditorHandler.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Activates the most recently used editor in the current window.
- * <p>
- * Replacement for: ActivateEditorAction
- * </p>
- * 
- * @since 3.3
- */
-public class ActivateEditorHandler extends AbstractEvaluationHandler {
-
-	private Expression enabledWhen;
-
-	public ActivateEditorHandler() {
-		registerEnablement();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-		IWorkbenchPage page = window.getActivePage();
-		if (page != null) {
-			IEditorPart part = HandlerUtil.getActiveEditor(event);
-			if (part != null) {
-				page.activate(part);
-				part.setFocus();
-			} else {
-				IWorkbenchPartReference ref = page.getActivePartReference();
-				if (ref instanceof IViewReference) {
-					if (((WorkbenchPage) page).isFastView((IViewReference) ref)) {
-						((WorkbenchPage) page)
-								.toggleFastView((IViewReference) ref);
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.AbstractEvaluationHandler#getEnabledWhenExpression()
-	 */
-	protected Expression getEnabledWhenExpression() {
-		if (enabledWhen == null) {
-			enabledWhen = new Expression() {
-				public EvaluationResult evaluate(IEvaluationContext context)
-						throws CoreException {
-					IWorkbenchWindow window = InternalHandlerUtil
-							.getActiveWorkbenchWindow(context);
-					if (window != null) {
-						if (window.getActivePage() != null) {
-							return EvaluationResult.TRUE;
-						}
-					}
-					return EvaluationResult.FALSE;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.expressions.Expression#collectExpressionInfo(org.eclipse.core.expressions.ExpressionInfo)
-				 */
-				public void collectExpressionInfo(ExpressionInfo info) {
-					info
-							.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-				}
-			};
-		}
-		return enabledWhen;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActiveEditorAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActiveEditorAction.java
deleted file mode 100644
index 64e138e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActiveEditorAction.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
-
-/**
- * The abstract superclass for actions that depend on the active editor.
- * This implementation tracks the active editor (see <code>getActiveEditor</code>)
- * and updates the availability of the action when an editor becomes
- * active.
- * <p>
- * Subclasses must implement the following <code>IAction</code> method:
- * <ul>
- *   <li><code>run</code> - to do the action's work</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend any of the <code>IPartListener</code> methods if the
- * action availablity needs to be recalculated:
- * <ul>
- *   <li><code>partActivated</code></li> 
- *   <li><code>partDeactivated</code></li>
- *   <li><code>partOpened</code></li>
- *   <li><code>partClosed</code></li>
- *   <li><code>partBroughtToTop</code></li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend any of the <code>IPageListener</code> methods if the
- * action availablity needs to be recalculated:
- * <ul>
- *   <li><code>pageActivated</code></li> 
- *   <li><code>pageClosed</code></li>
- *   <li><code>pageOpened</code></li>
- * </ul>
- * </p>
- * <p>
- * This method implements the <code>IPartListener</code> and
- * <code>IPageListener</code>interfaces, and automatically registers listeners
- * so that it can keep its enablement state up to date. Ordinarily, the
- * window's references to these listeners will be dropped automatically when
- * the window closes. However, if the client needs to get rid of an action
- * while the window is still open, the client must call 
- * {@link IWorkbenchAction#dispose dispose} to give the action an
- * opportunity to deregister its listeners and to perform any other cleanup.
- * </p>
- */
-public abstract class ActiveEditorAction extends PageEventAction {
-
-    private IEditorPart activeEditor;
-
-    /**
-     * Creates a new action with the given text.
-     *
-     * @param text the string used as the text for the action, 
-     *   or <code>null</code> if there is no text
-     * @param window the workbench window this action is
-     *   registered with.
-     */
-    protected ActiveEditorAction(String text, IWorkbenchWindow window) {
-        super(text, window);
-        updateState();
-    }
-
-    /**
-     * Notification that the active editor tracked
-     * by the action is being activated.
-     *
-     * Subclasses may override.
-     */
-    protected void editorActivated(IEditorPart part) {
-    }
-
-    /**
-     * Notification that the active editor tracked
-     * by the action is being deactivated.
-     *
-     * Subclasses may override.
-     */
-    protected void editorDeactivated(IEditorPart part) {
-    }
-
-    /**
-     * Return the active editor
-     *
-     * @return the page's active editor, and <code>null</code>
-     *		if no active editor or no active page.
-     */
-    public final IEditorPart getActiveEditor() {
-        return activeEditor;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageActivated(IWorkbenchPage page) {
-        super.pageActivated(page);
-        updateActiveEditor();
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        super.pageClosed(page);
-        updateActiveEditor();
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partActivated(IWorkbenchPart part) {
-        super.partActivated(part);
-        if (part instanceof IEditorPart) {
-            updateActiveEditor();
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partBroughtToTop(IWorkbenchPart part) {
-        super.partBroughtToTop(part);
-        if (part instanceof IEditorPart) {
-            updateActiveEditor();
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partClosed(IWorkbenchPart part) {
-        super.partClosed(part);
-        if (part instanceof IEditorPart) {
-            updateActiveEditor();
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-        super.partDeactivated(part);
-        if (part instanceof IEditorPart) {
-            updateActiveEditor();
-            updateState();
-        }
-    }
-
-    /**
-     * Set the active editor
-     */
-    private void setActiveEditor(IEditorPart part) {
-        if (activeEditor == part) {
-            return;
-        }
-        if (activeEditor != null) {
-            editorDeactivated(activeEditor);
-        }
-        activeEditor = part;
-        if (activeEditor != null) {
-            editorActivated(activeEditor);
-        }
-    }
-
-    /**
-     * Update the active editor based on the current
-     * active page.
-     */
-    private void updateActiveEditor() {
-        if (getActivePage() == null) {
-            setActiveEditor(null);
-        } else {
-            setActiveEditor(getActivePage().getActiveEditor());
-        }
-    }
-
-    /**
-     * Update the state of the action. By default, the action
-     * is enabled if there is an active editor.
-     *
-     * Subclasses may override or extend this method.
-     */
-    protected void updateState() {
-        setEnabled(getActiveEditor() != null);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivityPersistanceHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivityPersistanceHelper.java
deleted file mode 100644
index d98f06f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActivityPersistanceHelper.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.IActivityManagerListener;
-import org.eclipse.ui.activities.IActivityRequirementBinding;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.activities.NotDefinedException;
-
-/**
- * Utility class that manages the persistance of enabled activities.
- * 
- * @since 3.0
- */
-final class ActivityPersistanceHelper {
-
-    /**
-     * Prefix for all activity preferences
-     */
-    protected final static String PREFIX = "UIActivities."; //$NON-NLS-1$    
-
-    /**
-     * Singleton instance.
-     */
-    private static ActivityPersistanceHelper singleton;
-
-    /**
-     * The listener that responds to changes in the <code>IActivityManager</code>
-     */
-    private final IActivityManagerListener activityManagerListener = new IActivityManagerListener() {
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.ui.activities.IActivityManagerListener#activityManagerChanged(org.eclipse.ui.activities.ActivityManagerEvent)
-         */
-        public void activityManagerChanged(
-                ActivityManagerEvent activityManagerEvent) {
-            //process newly defined activities.
-            if (activityManagerEvent.haveDefinedActivityIdsChanged()) {
-                Set delta = new HashSet(activityManagerEvent
-                        .getActivityManager().getDefinedActivityIds());
-                delta.removeAll(activityManagerEvent
-                        .getPreviouslyDefinedActivityIds());
-                // whatever is still in delta are new activities - restore their
-                // state
-                loadEnabledStates(activityManagerEvent
-                        .getActivityManager().getEnabledActivityIds(), delta);
-            }
-            if (activityManagerEvent.haveEnabledActivityIdsChanged()) {
-				saveEnabledStates();
-			}
-        }
-    };
-    
-    /**
-     * The listener that responds to preference changes
-     */
-    private final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() {
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-         */
-        public void propertyChange(PropertyChangeEvent event) {
-            // dont process property events if we're in the process of
-            // serializing state.
-            if (!saving && event.getProperty().startsWith(PREFIX)) {
-                String activityId = event.getProperty().substring(PREFIX.length());
-                IWorkbenchActivitySupport support = PlatformUI.getWorkbench().getActivitySupport();
-                IActivityManager activityManager = support.getActivityManager();
-                
-                boolean enabled = Boolean.valueOf(event.getNewValue().toString()).booleanValue();
-                // if we're turning an activity off we'll need to create its dependency tree to ensuure that all dependencies are also disabled.
-                Set set = new HashSet(activityManager.getEnabledActivityIds());
-                if (enabled == false) {
-                    Set dependencies = buildDependencies(activityManager, activityId);
-                    set.removeAll(dependencies);
-                }
-                else {
-                    set.add(activityId);
-                }
-                support.setEnabledActivityIds(set);
-            }
-        }
-    };
-
-    /**
-     * Whether we are currently saving the state of activities to the preference
-     * store.
-     */
-    protected boolean saving = false;
-
-    /**
-     * Get the singleton instance of this class.
-     * 
-     * @return the singleton instance of this class.
-     */
-    public static ActivityPersistanceHelper getInstance() {
-        if (singleton == null) {
-            singleton = new ActivityPersistanceHelper();
-        }
-        return singleton;
-    }
-
-    /**
-     * Returns a set of activity IDs that depend on the provided ID in order to be enabled.
-     * 
-     * @param activityManager the activity manager to query
-     * @param activityId the activity whos dependencies should be added
-     * @return a set of activity IDs
-     */
-    protected Set buildDependencies(IActivityManager activityManager, String activityId) {
-        Set set = new HashSet();
-        for (Iterator i = activityManager.getDefinedActivityIds().iterator(); i.hasNext(); ) {
-            IActivity activity = activityManager.getActivity((String) i.next());
-            for (Iterator j = activity.getActivityRequirementBindings().iterator(); j.hasNext(); ) {
-                IActivityRequirementBinding binding = (IActivityRequirementBinding) j.next();
-                if (activityId.equals(binding.getRequiredActivityId())) {
-                    set.addAll(buildDependencies(activityManager, activity.getId()));
-                }
-            }
-        }
-        set.add(activityId);
-        return set;
-    }
-
-    /**
-     * Create a new <code>ActivityPersistanceHelper</code> which will restore
-     * previously enabled activity states.
-     */
-    private ActivityPersistanceHelper() {
-        loadEnabledStates();
-        hookListeners();
-    }
-
-    /**
-     * Hook the listener that will respond to any activity state changes.
-     */
-    private void hookListeners() {
-        IWorkbenchActivitySupport support = PlatformUI.getWorkbench()
-                .getActivitySupport();
-
-        IActivityManager activityManager = support.getActivityManager();
-
-        activityManager.addActivityManagerListener(activityManagerListener);
-
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        
-        store.addPropertyChangeListener(propertyChangeListener);        
-    }
-
-    /**
-     * Hook the listener that will respond to any activity state changes.
-     */
-    private void unhookListeners() {
-        IWorkbenchActivitySupport support = PlatformUI.getWorkbench()
-                .getActivitySupport();
-
-        IActivityManager activityManager = support.getActivityManager();
-
-        activityManager.removeActivityManagerListener(activityManagerListener); 
-        
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        
-        store.removePropertyChangeListener(propertyChangeListener);                
-    }
-    
-    /**
-     * Create the preference key for the activity.
-     * 
-     * @param activityId the activity id.
-     * @return String a preference key representing the activity.
-     */
-    private String createPreferenceKey(String activityId) {
-        return PREFIX + activityId;
-    }
-
-    /**
-     * Loads the enabled states from the preference store.
-     */
-    void loadEnabledStates() {
-        loadEnabledStates(Collections.EMPTY_SET, PlatformUI.getWorkbench()
-                .getActivitySupport().getActivityManager()
-                .getDefinedActivityIds());
-    }
-
-    /**
-     * Load the enabled states for the given activity IDs.
-     * 
-     * @param previouslyEnabledActivities the activity states to maintain.  This set must be writabe.
-     * @param activityIdsToProcess the activity ids to process
-     */
-    protected void loadEnabledStates(Set previouslyEnabledActivities, Set activityIdsToProcess) {
-        if (activityIdsToProcess.isEmpty()) {
-			return;
-		}
-        
-        Set enabledActivities = new HashSet(previouslyEnabledActivities);
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-
-        IWorkbenchActivitySupport support = PlatformUI.getWorkbench()
-                .getActivitySupport();
-
-        IActivityManager activityManager = support.getActivityManager();
-
-        for (Iterator i = activityIdsToProcess.iterator(); i
-                .hasNext();) {
-            String activityId = (String) i.next();
-            String preferenceKey = createPreferenceKey(activityId);
-			try {
-				IActivity activity = activityManager.getActivity(activityId);
-				if (activity.getExpression() != null) {
-					continue;
-				}
-                if ("".equals(store.getDefaultString(preferenceKey))) { //$NON-NLS-1$ // no override has been provided in the customization file
-                	store // the default should be whatever the XML specifies
-					.setDefault(preferenceKey, activity
-							.isDefaultEnabled());
-                	
-                }				
-
-            } catch (NotDefinedException e) {
-                // can't happen - we're iterating over defined activities
-            }
-
-            if (store.getBoolean(preferenceKey)) {
-				enabledActivities.add(activityId);
-			} else {
-				enabledActivities.remove(activityId);
-			}
-        }
-
-        support.setEnabledActivityIds(enabledActivities);
-    }
-
-    /**
-     * Save the enabled states in the preference store.
-     */
-    protected void saveEnabledStates() {
-        try {
-            saving = true;
-	        
-	        IPreferenceStore store = WorkbenchPlugin.getDefault()
-	                .getPreferenceStore();
-	
-	        IWorkbenchActivitySupport support = PlatformUI.getWorkbench()
-	                .getActivitySupport();
-	        IActivityManager activityManager = support.getActivityManager();
-	        Iterator values = activityManager.getDefinedActivityIds().iterator();
-	        while (values.hasNext()) {
-	            IActivity activity = activityManager.getActivity((String) values
-	                    .next());
-	            if (activity.getExpression() != null) {
-	            	continue;
-	            }
-	
-	            store.setValue(createPreferenceKey(activity.getId()), activity
-	                    .isEnabled());
-	        }
-	        WorkbenchPlugin.getDefault().savePluginPreferences();
-        }
-        finally {
-            saving = false;
-        }
-    }
-
-    /**
-     * Save the enabled state of all activities.
-     */
-    public void shutdown() {
-        unhookListeners();
-        saveEnabledStates();        
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AggregateWorkingSet.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AggregateWorkingSet.java
deleted file mode 100644
index 53b59db..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AggregateWorkingSet.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * 
- * @since 3.2
- */
-public class AggregateWorkingSet extends AbstractWorkingSet implements
-		IPropertyChangeListener {
-
-	private IWorkingSet[] components;
-
-	/**
-	 * 
-	 * @param name
-	 * @param label
-	 * @param components
-	 */
-	public AggregateWorkingSet(String name, String label,
-			IWorkingSet[] components) {
-		super(name, label);
-
-		IWorkingSet[] componentCopy = new IWorkingSet[components.length];
-		System.arraycopy(components, 0, componentCopy, 0, components.length);
-		internalSetComponents(componentCopy);
-		constructElements(false);
-	}
-
-	/**
-	 * 
-	 * @param name
-	 * @param label
-	 * @param memento
-	 */
-	public AggregateWorkingSet(String name, String label, IMemento memento) {
-		super(name, label);
-		workingSetMemento = memento;
-	}
-
-	void setComponents(IWorkingSet[] components) {
-		internalSetComponents(components);
-		constructElements(true);
-	}
-
-	private void internalSetComponents(IWorkingSet[] components) {
-		this.components = components;
-	}
-
-	/**
-	 * Takes the elements from all component working sets and sets them to be
-	 * the elements of this working set. Any duplicates are trimmed.
-	 * 
-	 * @param fireEvent whether a working set change event should be fired
-	 */
-	private void constructElements(boolean fireEvent) {
-		Set elements = new HashSet();
-		for (int i = 0; i < components.length; i++) {
-			IWorkingSet workingSet = components[i];
-			elements.addAll(Arrays.asList(workingSet.getElements()));
-		}
-		internalSetElements((IAdaptable[]) elements
-				.toArray(new IAdaptable[elements.size()]));
-		if (fireEvent) {
-			fireWorkingSetChanged(
-				IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE, null);
-		}
-	}
-
-	public String getId() {
-		return null;
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_WORKING_SETS);
-	}
-
-	/**
-	 * A no-op for aggregates - their contents should be derived.
-	 */
-	public void setElements(IAdaptable[] elements) {
-	}
-
-	public void setId(String id) {
-
-	}
-
-	/**
-	 * Aggregates are not editable.
-	 */
-	public boolean isEditable() {
-		return false;
-	}
-
-	/**
-	 * Aggregates should not generally be visible in the UI.
-	 */
-	public boolean isVisible() {
-		return false;
-	}
-
-	public void saveState(IMemento memento) {
-		if (workingSetMemento != null) {
-			// just re-save the previous memento if the working set has
-			// not been restored
-			memento.putMemento(workingSetMemento);
-		} else {
-			memento.putString(IWorkbenchConstants.TAG_NAME, getName());
-			memento.putString(IWorkbenchConstants.TAG_LABEL, getLabel());
-			memento.putString(AbstractWorkingSet.TAG_AGGREGATE, Boolean.TRUE
-					.toString());
-
-			for (int i = 0; i < components.length; i++) {
-				IWorkingSet componentSet = components[i];
-				memento.createChild(IWorkbenchConstants.TAG_WORKING_SET,
-						componentSet.getName());
-			}
-		}
-	}
-
-	public void connect(IWorkingSetManager manager) {
-		manager.addPropertyChangeListener(this);
-		super.connect(manager);
-	}
-
-	public void disconnect() {
-		getManager().removePropertyChangeListener(this);
-		super.disconnect();
-	}
-
-	/**
-	 * Return the component working sets.
-	 * 
-	 * @return the component working sets
-	 */
-	public IWorkingSet[] getComponents() {
-		if (components == null) {
-			restoreWorkingSet();
-			workingSetMemento = null;
-		}
-		return components;
-	}
-
-	public void propertyChange(PropertyChangeEvent event) {
-		String property = event.getProperty();
-		if (property.equals(IWorkingSetManager.CHANGE_WORKING_SET_REMOVE)) {
-			for (int i = 0; i < getComponents().length; i++) {
-				IWorkingSet set = getComponents()[i];
-				if (set.equals(event.getOldValue())) {
-					IWorkingSet[] newComponents = new IWorkingSet[components.length - 1];
-					Util
-							.arrayCopyWithRemoval(getComponents(),
-									newComponents, i);
-					setComponents(newComponents);
-				}
-			}
-		} else if (property
-				.equals(IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE)) {
-			for (int i = 0; i < getComponents().length; i++) {
-				IWorkingSet set = getComponents()[i];
-				if (set.equals(event.getNewValue())) {
-					constructElements(true);
-					break;
-				}
-			}
-		}
-	}
-
-	void restoreWorkingSet() {
-		IWorkingSetManager manager = getManager();
-		if (manager == null) {
-			throw new IllegalStateException();
-		}
-		IMemento[] workingSetReferences = workingSetMemento
-				.getChildren(IWorkbenchConstants.TAG_WORKING_SET);
-		ArrayList list = new ArrayList(workingSetReferences.length);
-
-		for (int i = 0; i < workingSetReferences.length; i++) {
-			IMemento setReference = workingSetReferences[i];
-			String setId = setReference.getID();
-			IWorkingSet set = manager.getWorkingSet(setId);
-			if (set != null) {
-				list.add(set);
-			}
-		}
-		internalSetComponents((IWorkingSet[]) list
-				.toArray(new IWorkingSet[list.size()]));
-		constructElements(false);
-	}
-
-	public boolean equals(Object object) {
-		if (this == object) {
-			return true;
-		}
-		if (object instanceof AggregateWorkingSet) {
-			AggregateWorkingSet workingSet = (AggregateWorkingSet) object;
-
-			return Util.equals(workingSet.getName(), getName())
-					&& Util.equals(workingSet.getComponents(), getComponents());
-		}
-		return false;
-	}
-
-	public int hashCode() {
-		int hashCode = getName().hashCode() & getComponents().hashCode();
-		return hashCode;
-	}
-	
-	public boolean isSelfUpdating() {
-		if (components == null || components.length == 0) {
-			return false;
-		}
-		for (int i= 0; i < components.length; i++) {
-			if (!components[i].isSelfUpdating()) {
-				return false;
-			}
-		}
-		return true;
-	}
-	
-	public boolean isAggregateWorkingSet() {
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkingSet#adaptElements(org.eclipse.core.runtime.IAdaptable[])
-	 */
-	public IAdaptable[] adaptElements(IAdaptable[] objects) {
-		return new IAdaptable[0];
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimatedTabFeedback.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimatedTabFeedback.java
deleted file mode 100644
index ed3deaf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimatedTabFeedback.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @since 3.3
- * 
- */
-public class AnimatedTabFeedback extends ImageCycleFeedbackBase {
-
-	private CTabItem tabItem;
-
-	/**
-	 * @param parentShell
-	 */
-	public AnimatedTabFeedback(Shell parentShell) {
-		super(parentShell);
-		// TODO Auto-generated constructor stub
-	}
-
-	public AnimatedTabFeedback(Shell parentShell, CTabItem item,
-			Image[] images) {
-		super(parentShell, images);
-		tabItem = item;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.AnimationFeedbackBase#initialize(org.eclipse.ui.internal.AnimationEngine)
-	 */
-	public void initialize(AnimationEngine engine) {
-		// TODO Auto-generated method stub
-		background = tabItem.getParent().getBackground();
-		display = tabItem.getParent().getDisplay();
-	}
-
-	public void saveStoppedImage() {
-		stoppedImage = tabItem.getImage();
-	}
-
-	public void setStoppedImage(Image image) {
-		tabItem.setImage(image);
-	}
-
-	public void showImage(Image image) {
-		if (tabItem.isDisposed())
-			return;
-		tabItem.setImage(image);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationEngine.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationEngine.java
deleted file mode 100644
index 4cdf2f0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationEngine.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * This job creates an Animation Engine that uses an Animation Feedback to render
- * the animation. To begin the animation, instantiate this
- * object then call schedule().
- * @since 3.3
- *
- */
-public class AnimationEngine extends Job {
-	public static final int TICK_TIMER = 1;
-	public static final int unlimitedDuration = -1;
-	private boolean enableAnimations;
-	private Display display;
-	private AnimationFeedbackBase feedbackRenderer;
-	private long startTime;
-	private long curTime;
-	private long prevTime;
-	private int timingStyle = TICK_TIMER;
-	private long frameCount;
-	private int duration;
-	private long stepCount;
-	public static final int FRAME_COUNT = 2;
-	private boolean stopAnimating = false;
-	private long sleepAmount;
-
-	public AnimationEngine(AnimationFeedbackBase animationFeedback,
-			int durationIn) {
-		this(animationFeedback, durationIn, 0);
-	}
-
-	/**
-	 * Creates an Animation that will run for the given number of milliseconds.
-	 * 
-	 * @param animationFeedback provides renderStep(), initialize() and jobInit() methods
-	 * @param durationIn number of milliseconds over which the animation will run
-	 * @param sleepAmountIn number of milliseconds to slow/delay the animation
-	 */
-	public AnimationEngine(AnimationFeedbackBase animationFeedback,
-			int durationIn, long sleepAmountIn) {
-		super(WorkbenchMessages.RectangleAnimation_Animating_Rectangle);
-		sleepAmount = sleepAmountIn;
-		feedbackRenderer = animationFeedback;
-		duration = durationIn;
-		
-		// if animations aren't on this is a NO-OP
-		IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-		enableAnimations = preferenceStore
-				.getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS);
-		if (!enableAnimations) {
-			return;
-		}
-
-		stopAnimating = false;
-
-		// Capture parameters
-		display = feedbackRenderer.getAnimationShell().getDisplay();
-		// Don't show the job in monitors
-		setSystem(true);
-
-		// Set it up
-		feedbackRenderer.initialize(this);
-
-		// Set the animation's initial state
-		stepCount = 0;
-		curTime = startTime = System.currentTimeMillis();
-
-	}
-
-	/**
-	 * @return The current renderer
-	 */
-	public AnimationFeedbackBase getFeedback() {
-		return feedbackRenderer;
-	}
-	
-	private Runnable animationStep = new Runnable() {
-
-		public void run() {
-			// Capture time
-			prevTime = curTime;
-			curTime = System.currentTimeMillis();
-
-			if (isUpdateStep()) {
-				updateDisplay();
-				frameCount++;
-			}
-			stepCount++;
-		}
-
-	};
-
-	protected void updateDisplay() {
-		feedbackRenderer.renderStep(this);
-	}
-
-	protected boolean isUpdateStep() {
-		if (duration == unlimitedDuration) {
-			return true;
-		}
-		
-		switch (timingStyle) {
-			case TICK_TIMER:
-				return prevTime != curTime;
-				//for testing purposes
-			case FRAME_COUNT:
-				return true;
-		}
-
-		return false;
-	}
-
-	private boolean done() {
-		return amount() >= 1.0;
-	}
-
-	public double amount() {
-		if (duration == unlimitedDuration) {
-			return 0;
-		}
-		double amount = 0.0;
-		switch (timingStyle) {
-			case TICK_TIMER:
-				amount = (double) (curTime - startTime) / (double) duration;
-				break;
-	
-			// For testing purposes
-			case FRAME_COUNT:
-				amount = (double) frameCount / (double) duration;
-		}
-
-		if (amount > 1.0)
-			amount = 1.0;
-
-		return amount;
-	}
-
-	protected IStatus run(IProgressMonitor monitor) {
-		// TODO Auto-generated method stub
-
-		// We use preferece value to indicate that the animation should be skipped on this platform.
-		if (!enableAnimations) {
-			return Status.OK_STATUS;
-		}
-
-		// We're starting, initialize
-		display.syncExec(new Runnable() {
-			public void run() {
-				// 'jobInit' returns 'false' if it doesn't want to run...
-				stopAnimating = !feedbackRenderer.jobInit(AnimationEngine.this);
-			}
-		});
-
-		// Only start the animation timer -after- we've initialized
-		curTime = startTime = System.currentTimeMillis();
-
-		while (!done() && !stopAnimating) {
-			display.syncExec(animationStep);
-			// Don't pin the CPU
-			try {
-				Thread.sleep(sleepAmount);
-			} catch (InterruptedException e) {
-				// TODO Auto-generated catch block
-				//e.printStackTrace();
-			}
-		}
-
-		// We're done, clean up
-		display.syncExec(new Runnable() {
-			public void run() {
-				feedbackRenderer.dispose();
-			}
-		});
-
-		return Status.OK_STATUS;
-	}
-
-	public void cancelAnimation() {
-		stopAnimating = true;
-	}
-
-	public long getFrameCount() {
-		return frameCount;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationFeedbackBase.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationFeedbackBase.java
deleted file mode 100644
index 96e9f7c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AnimationFeedbackBase.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * AnimationFeedBackBase is an abstract class which provides renderStep(), jobInit() and 
- * initialize() methods for AnimationEngine. 
- * Its the base class for all the
- * animationFeedbacks
- * 
- * @since 3.3
- * 
- */
-public abstract class AnimationFeedbackBase {
-
-	private Shell animationShell;
-
-	/**
-	 * Creates an AnimationFeedback
-	 * 
-	 * @param parentShell specifies the composite where the animation will be drawn
-	 */
-	public AnimationFeedbackBase(Shell parentShell) {
-		animationShell = parentShell;
-	}
-
-	/**
-	 * Perform any initialization you want to do -prior- to the Job actually
-	 * gets scheduled.
-	 * 
-	 * @param animationEngine The engine we're hosted in.
-	 */
-	public abstract void initialize(AnimationEngine animationEngine);
-
-	/**
-	 * Its a draw method. All the code to render an animation goes in this
-	 * method.
-	 * 
-	 * @param engine
-	 */
-	public abstract void renderStep(AnimationEngine engine);
-
-	/**
-	 * Perform any initialization you want to have happen -before- the animation
-	 * starts. Subclasses may subclass but not override (i.e. you have to call super).
-	 * 
-	 * @param engine The AnimationEngine hosting the feedback
-	 * @return 'true' iff the animation is capable of running
-	 */
-	public boolean jobInit(AnimationEngine engine) { return engine != null; }
-
-	/**
-	 * Dispose any locally created resources
-	 */
-	public abstract void dispose();
-
-	public Shell getAnimationShell() {
-		return animationShell;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BaseSaveAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BaseSaveAction.java
deleted file mode 100644
index a6968f3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BaseSaveAction.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * The abstract superclass for save actions that depend on the active editor.
- */
-public abstract class BaseSaveAction extends ActiveEditorAction {
-    /*
-     * The view-related code below was added to track the view with focus
-     * in order to support save actions from a view (see bug 10234). 
-     */
-	
-    /**
-     * List of parts (element type: <code>IWorkbenchPart</code>)
-     * against which this class has outstanding property listeners registered.
-     */
-    private List partsWithListeners = new ArrayList(1);
-
-    private final IPropertyListener propListener = new IPropertyListener() {
-        public void propertyChanged(Object source, int propId) {
-            if (source == getActiveEditor()) {
-                if (propId == IEditorPart.PROP_DIRTY) {
-					updateState();
-				}
-            }
-        }
-    };
-
-    /**
-     * Creates a new action with the given text.
-     *
-     * @param text the string used as the text for the action, 
-     *   or <code>null</code> if there is no text
-     * @param window the workbench window this action is
-     *   registered with.
-     */
-    protected BaseSaveAction(String text, IWorkbenchWindow window) {
-        super(text, window);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActiveEditorAction.
-     */
-    protected void editorActivated(IEditorPart part) {
-        if (part != null) {
-            part.addPropertyListener(propListener);
-            partsWithListeners.add(part);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActiveEditorAction.
-     */
-    protected void editorDeactivated(IEditorPart part) {
-        if (part != null) {
-            part.removePropertyListener(propListener);
-            partsWithListeners.remove(part);
-        }
-    }
-
-    private IViewPart activeView;
-
-    private final IPropertyListener propListener2 = new IPropertyListener() {
-        public void propertyChanged(Object source, int propId) {
-            if (source == activeView) {
-                if (propId == IEditorPart.PROP_DIRTY) {
-					updateState();
-				}
-            }
-        }
-    };
-
-    /** the active saveable part is tracked in order to listen to its dirty events */ 
-    private ISaveablePart activeSaveablePart;
-    
-    private final IPropertyListener propListener3 = new IPropertyListener() {
-    	public void propertyChanged(Object source, int propId) {
-    		if (source == activeSaveablePart) {
-    			if (propId == IEditorPart.PROP_DIRTY) {
-    				updateState();
-    			}
-    		}
-    	}
-    };
-    
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageActivated(IWorkbenchPage page) {
-        super.pageActivated(page);
-        updateActiveView();
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        super.pageClosed(page);
-        updateActiveView();
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partActivated(IWorkbenchPart part) {
-        super.partActivated(part);
-        if (part instanceof IViewPart) {
-            updateActiveView();
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partClosed(IWorkbenchPart part) {
-        super.partClosed(part);
-        if (part instanceof IViewPart) {
-            updateActiveView();
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-        super.partDeactivated(part);
-        if (part instanceof IViewPart) {
-            updateActiveView();
-            updateState();
-        }
-    }
-
-    /**
-     * Update the active view based on the current
-     * active page.
-     */
-    private void updateActiveView() {
-        if (getActivePage() == null) {
-			setActiveView(null);
-		} else {
-			setActiveView(getActivePage().getActivePart());
-		}
-    }
-
-    /**
-	 * 
-	 */
-	private void updateActiveSaveablePart() {
-		if (activeSaveablePart instanceof IWorkbenchPart) {
-			((IWorkbenchPart)activeSaveablePart).removePropertyListener(propListener3);
-			partsWithListeners.remove(activeSaveablePart);
-		}
-		activeSaveablePart = getSaveableView();
-		if (activeSaveablePart == activeView) {
-			// no need to listen to the same part twice
-			activeSaveablePart = null;
-		}
-		if (activeSaveablePart instanceof IWorkbenchPart) {
-			((IWorkbenchPart)activeSaveablePart).addPropertyListener(propListener3);
-			partsWithListeners.add(activeSaveablePart);
-		}
-	}
-
-	/**
-     * Set the active editor
-     */
-    private void setActiveView(IWorkbenchPart part) {
-        if (activeView == part) {
-            return;
-        }
-        if (activeView != null) {
-            activeView.removePropertyListener(propListener2);
-            partsWithListeners.remove(activeView);
-        }
-        if (part instanceof IViewPart) {
-            activeView = (IViewPart) part;
-        } else {
-            activeView = null;
-        }
-        if (activeView != null) {
-            activeView.addPropertyListener(propListener2);
-            partsWithListeners.add(activeView);
-        }
-        updateActiveSaveablePart();
-    }
-
-    protected final ISaveablePart getSaveableView() {
-        if (activeView == null) {
-            return null;
-        }
-
-        return (ISaveablePart) Util.getAdapter(activeView, ISaveablePart.class);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void dispose() {
-        super.dispose();
-        for (Iterator it = partsWithListeners.iterator(); it.hasNext();) {
-            IWorkbenchPart part = (IWorkbenchPart) it.next();
-            part.removePropertyListener(propListener);
-            part.removePropertyListener(propListener2);
-            part.removePropertyListener(propListener3);
-        }
-        partsWithListeners.clear();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BrandingProperties.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BrandingProperties.java
deleted file mode 100644
index b681ebb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BrandingProperties.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.osgi.framework.Bundle;
-
-/**
- * The branding properties are retrieved as strings, but often used as other
- * types (e.g., <code>java.net.URL</code>s. This class provides some utility
- * functions for converting the string values to these well known classes. This
- * may be subclassed by clients that use more than just these few types.
- */
-public abstract class BrandingProperties {
-
-    /**
-     * Create an url from the argument absolute or relative path. The bundle
-     * parameter is used as the base for relative paths and is allowed to be
-     * null.
-     * 
-     * @param value
-     *            the absolute or relative path
-     * @param definingBundle
-     *            bundle to be used for relative paths (may be null)
-     * @return
-     */
-    public static URL getUrl(String value, Bundle definingBundle) {
-        try {
-            if (value != null) {
-				return new URL(value);
-			}
-        } catch (MalformedURLException e) {
-            if (definingBundle != null) {
-				return Platform.find(definingBundle, new Path(value));
-			}
-        }
-
-        return null;
-    }
-
-    /**
-     * Create a descriptor from the argument absolute or relative path to an
-     * image file. bundle parameter is used as the base for relative paths and
-     * is allowed to be null.
-     * 
-     * @param value
-     *            the absolute or relative path
-     * @param definingBundle
-     *            bundle to be used for relative paths (may be null)
-     * @return
-     */
-    public static ImageDescriptor getImage(String value, Bundle definingBundle) {
-        URL url = getUrl(value, definingBundle);
-        return url == null ? null : ImageDescriptor.createFromURL(url);
-    }
-
-    /**
-     * Returns a array of URL for the given property or <code>null</code>.
-     * The property value should be a comma separated list of urls (either
-     * absolute or relative to the argument bundle). Tokens that do not
-     * represent a valid url will be represented with a null entry in the
-     * returned array.
-     * 
-     * @param value
-     *            value of a property that contains a comma-separated list of
-     *            product relative urls
-     * @param definingBundle
-     *            bundle to be used as base for relative paths (may be null)
-     * @return a URL for the given property, or <code>null</code>
-     */
-    public static URL[] getURLs(String value, Bundle definingBundle) {
-        if (value == null) {
-			return null;
-		}
-
-        StringTokenizer tokens = new StringTokenizer(value, ","); //$NON-NLS-1$
-        ArrayList array = new ArrayList(10);
-        while (tokens.hasMoreTokens()) {
-			array.add(getUrl(tokens.nextToken().trim(), definingBundle));
-		}
-
-        return (URL[]) array.toArray(new URL[array.size()]);
-    }
-
-    /**
-     * Returns an array of image descriptors for the given property, or
-     * <code>null</code>. The property value should be a comma separated list
-     * of image paths. Each path should either be absolute or relative to the
-     * optional bundle parameter.
-     * 
-     * @param value
-     *            value of a property that contains a comma-separated list of
-     *            product relative urls describing images
-     * @param definingBundle
-     *            bundle to be used for relative paths (may be null)
-     * @return an array of image descriptors for the given property, or
-     *         <code>null</code>
-     */
-    public static ImageDescriptor[] getImages(String value,
-            Bundle definingBundle) {
-        URL[] urls = getURLs(value, definingBundle);
-        if (urls == null || urls.length <= 0) {
-			return null;
-		}
-
-        ImageDescriptor[] images = new ImageDescriptor[urls.length];
-        for (int i = 0; i < images.length; ++i) {
-			images[i] = ImageDescriptor.createFromURL(urls[i]);
-		}
-
-        return images;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BundleGroupProperties.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BundleGroupProperties.java
deleted file mode 100644
index 534d5c1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/BundleGroupProperties.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.IBundleGroup;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.branding.IBundleGroupConstants;
-
-/**
- * A class that converts the strings returned by
- * <code>org.eclipse.core.runtime.IBundleGroup.getProperty</code> to the
- * appropriate class. This implementation is tightly bound to the properties
- * provided in IBundleGroupConstants. Clients adding their own properties could
- * choose to subclass this.
- * 
- * @see org.eclipse.ui.branding.IBundleGroupConstants
- * @since 3.0
- */
-public class BundleGroupProperties extends BrandingProperties implements
-        IBundleGroupConstants {
-
-    private final IBundleGroup bundleGroup;
-
-    private ImageDescriptor featureImageDescriptor;
-
-    private URL featureImageUrl;
-
-    private String tipsAndTricksHref;
-
-    private URL welcomePageUrl;
-
-    private String welcomePerspective;
-
-    private URL licenseUrl;
-
-    private String featureLabel;
-
-    private String featureId;
-
-    private String providerName;
-
-    private String versionId;
-
-    /**
-     * This instance will return properties from the given bundle group.  The properties are
-     * retrieved in a lazy fashion and cached for later retrieval.
-     * @param bundleGroup must not be null
-     */
-    public BundleGroupProperties(IBundleGroup bundleGroup) {
-        if (bundleGroup == null) {
-			throw new IllegalArgumentException();
-		}
-        this.bundleGroup = bundleGroup;
-    }
-
-    /**
-     * An image which can be shown in an "about features" dialog (32x32).
-     */
-    public ImageDescriptor getFeatureImage() {
-        if (featureImageDescriptor == null) {
-			featureImageDescriptor = getFeatureImage(bundleGroup);
-		}
-        return featureImageDescriptor;
-    }
-
-    /**
-     * The URL to an image which can be shown in an "about features" dialog (32x32).
-     */
-    public URL getFeatureImageUrl() {
-        if (featureImageUrl == null) {
-			featureImageUrl = getFeatureImageUrl(bundleGroup);
-		}
-        return featureImageUrl;
-    }
-
-    /**
-     * A help reference for the feature's tips and tricks page (optional).
-     */
-    public String getTipsAndTricksHref() {
-        if (tipsAndTricksHref == null) {
-			tipsAndTricksHref = getTipsAndTricksHref(bundleGroup);
-		}
-        return tipsAndTricksHref;
-    }
-
-    /**
-     * A URL for the feature's welcome page (special XML-based format) ($nl$/
-     * prefix to permit locale-specific translations of entire file). Products
-     * designed to run "headless" typically would not have such a page.
-     */
-    public URL getWelcomePageUrl() {
-        if (welcomePageUrl == null) {
-			welcomePageUrl = getWelcomePageUrl(bundleGroup);
-		}
-        return welcomePageUrl;
-    }
-
-    /**
-     * The id of a perspective in which to show the welcome page (optional).
-     */
-    public String getWelcomePerspective() {
-        if (welcomePerspective == null) {
-			welcomePerspective = getWelcomePerspective(bundleGroup);
-		}
-        return welcomePerspective;
-    }
-
-    /**
-     * A URL for the feature's license page.
-     */
-    public URL getLicenseUrl() {
-        if (licenseUrl == null) {
-			licenseUrl = getLicenseUrl(bundleGroup);
-		}
-        return licenseUrl;
-    }
-
-    /**
-     * Returns a label for the feature plugn, or <code>null</code>.
-     */
-    public String getFeatureLabel() {
-        if (featureLabel == null) {
-			featureLabel = getFeatureLabel(bundleGroup);
-		}
-        return featureLabel;
-    }
-
-    /**
-     * Returns the id for this bundleGroup.
-     */
-    public String getFeatureId() {
-        if (featureId == null) {
-			featureId = getFeatureId(bundleGroup);
-		}
-        return featureId;
-    }
-
-    /**
-     * Returns the provider name.
-     */
-    public String getProviderName() {
-        if (providerName == null) {
-			providerName = getProviderName(bundleGroup);
-		}
-        return providerName;
-    }
-
-    /**
-     * Returns the feature version id.
-     */
-    public String getFeatureVersion() {
-        if (versionId == null) {
-			versionId = getFeatureVersion(bundleGroup);
-		}
-        return versionId;
-    }
-
-    /**
-     * An image which can be shown in an "about features" dialog (32x32).
-     */
-    public static ImageDescriptor getFeatureImage(IBundleGroup bundleGroup) {
-        return getImage(bundleGroup.getProperty(FEATURE_IMAGE), null);
-    }
-
-    /**
-     * The URL to an image which can be shown in an "about features" dialog (32x32).
-     */
-    public static URL getFeatureImageUrl(IBundleGroup bundleGroup) {
-        return getUrl(bundleGroup.getProperty(FEATURE_IMAGE), null);
-    }
-
-    /**
-     * A help reference for the feature's tips and tricks page (optional).
-     */
-    public static String getTipsAndTricksHref(IBundleGroup bundleGroup) {
-        return bundleGroup.getProperty(TIPS_AND_TRICKS_HREF);
-    }
-
-    /**
-     * A URL for the feature's welcome page (special XML-based format) ($nl$/
-     * prefix to permit locale-specific translations of entire file). Products
-     * designed to run "headless" typically would not have such a page.
-     */
-    public static URL getWelcomePageUrl(IBundleGroup bundleGroup) {
-        return getUrl(bundleGroup.getProperty(WELCOME_PAGE), null);
-    }
-
-    /**
-     * The id of a perspective in which to show the welcome page (optional).
-     */
-    public static String getWelcomePerspective(IBundleGroup bundleGroup) {
-        String property = bundleGroup.getProperty(WELCOME_PERSPECTIVE);
-        return property == null ? null : property;
-    }
-
-    /**
-     * A URL for the feature's license page.
-     */
-    public static URL getLicenseUrl(IBundleGroup bundleGroup) {
-        return getUrl(bundleGroup.getProperty(LICENSE_HREF), null);
-    }
-
-    /**
-     * Returns a label for the feature plugn, or <code>null</code>.
-     */
-    public static String getFeatureLabel(IBundleGroup bundleGroup) {
-        return bundleGroup.getName();
-    }
-
-    /**
-     * Returns the id for this bundleGroup.
-     */
-    public static String getFeatureId(IBundleGroup bundleGroup) {
-        return bundleGroup.getIdentifier();
-    }
-
-    /**
-     * Returns the provider name.
-     */
-    public static String getProviderName(IBundleGroup bundleGroup) {
-        return bundleGroup.getProviderName();
-    }
-
-    /**
-     * Returns the feature version id.
-     */
-    public static String getFeatureVersion(IBundleGroup bundleGroup) {
-        return bundleGroup.getVersion();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
deleted file mode 100644
index 3fdc34c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ChangeToPerspectiveMenu.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.PerspectiveMenu;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Change the perspective of the active page in the window
- * to the selected one.
- */
-public class ChangeToPerspectiveMenu extends PerspectiveMenu {
-
-    /**
-     * Constructor for ChangeToPerspectiveMenu.
-     * 
-     * @param window the workbench window this action applies to.
-     */
-    public ChangeToPerspectiveMenu(IWorkbenchWindow window, String id) {
-        super(window, id);
-        // indicate that a open perspectives submenu has been created
-        ((WorkbenchWindow) window)
-                .addSubmenu(WorkbenchWindow.OPEN_PERSPECTIVE_SUBMENU);
-        showActive(true);
-    }
-
-    /* (non-Javadoc)
-     * @see PerspectiveMenu#run(IPerspectiveDescriptor)
-     */
-    protected void run(IPerspectiveDescriptor desc) {
-		IPreferenceStore store = PrefUtil.getInternalPreferenceStore();
-		int mode = store.getInt(IPreferenceConstants.OPEN_PERSP_MODE);
-		IWorkbenchPage page = getWindow().getActivePage();
-		IPerspectiveDescriptor persp = null;
-		if (page != null) {
-			persp = page.getPerspective();
-		}
-
-		IHandlerService handlerService = (IHandlerService) getWindow()
-				.getService(IHandlerService.class);
-		ICommandService commandService = (ICommandService) getWindow()
-				.getService(ICommandService.class);
-
-		Command command = commandService
-				.getCommand(SHOW_PERSP_ID);
-		Map parameters = new HashMap();
-		parameters
-				.put(
-						"org.eclipse.ui.perspectives.showPerspective.perspectiveId", desc.getId()); //$NON-NLS-1$
-
-		// Only open a new window if user preference is set and the window
-		// has an active perspective.
-		if (IPreferenceConstants.OPM_NEW_WINDOW == mode && persp != null) {
-
-			//Call the handler!
-			//Set up the param for newWindow!
-			parameters
-					.put(
-							"org.eclipse.ui.perspectives.showPerspective.newWindow", "true"); //$NON-NLS-1$//$NON-NLS-2$
-		}
-		
-		ParameterizedCommand pCommand = ParameterizedCommand.generateCommand(
-				command, parameters);
-		try {
-			handlerService.executeCommand(pCommand, null);
-		} catch (ExecutionException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		} catch (NotDefinedException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		} catch (NotEnabledException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		} catch (NotHandledException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Failed to execute " + SHOW_PERSP_ID, e)); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java
deleted file mode 100644
index b83436b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllHandler.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Closes all active editors
- * <p>
- * Replacement for CloseAllAction
- * </p>
- * 
- * @since 3.3
- * 
- */
-public class CloseAllHandler extends AbstractEvaluationHandler {
-	private Expression enabledWhen;
-
-	public CloseAllHandler() {
-		registerEnablement();
-	}
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-		IWorkbenchPage page = window.getActivePage();
-		if (page != null) {
-			page.closeAllEditors(true);
-		}
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.AbstractEvaluationHandler#getEnabledWhenExpression()
-	 */
-	protected Expression getEnabledWhenExpression() {
-		if (enabledWhen == null) {
-			enabledWhen = new Expression() {
-				public EvaluationResult evaluate(IEvaluationContext context)
-						throws CoreException {
-					IEditorPart part = InternalHandlerUtil
-							.getActiveEditor(context);
-					if (part != null) {
-						return EvaluationResult.TRUE;
-
-					}
-					return EvaluationResult.FALSE;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.expressions.Expression#collectExpressionInfo(org.eclipse.core.expressions.ExpressionInfo)
-				 */
-				public void collectExpressionInfo(ExpressionInfo info) {
-					info.addVariableNameAccess(ISources.ACTIVE_EDITOR_NAME);
-				}
-			};
-		}
-		return enabledWhen;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllSavedAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllSavedAction.java
deleted file mode 100644
index a6c3fbc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseAllSavedAction.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- *	Closes all editors except ones with unsaved changes.
- */
-public class CloseAllSavedAction extends PageEventAction implements
-        IPropertyListener {
-
-    /**
-     * List of parts (element type: <code>IWorkbenchPart</code>)
-     * against which this class has outstanding property listeners registered.
-     */
-    private List partsWithListeners = new ArrayList(1);
-
-    /**
-     * Create an instance of this class.
-     * @param window the window
-     */
-    public CloseAllSavedAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.CloseAllSavedAction_text, window);
-        setToolTipText(WorkbenchMessages.CloseAllSavedAction_toolTip);
-        // @issue Should create a ID in IWorkbenchActionConstants when it becames API?
-        setId("closeAllSaved"); //$NON-NLS-1$
-        updateState();
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.CLOSE_ALL_SAVED_ACTION);
-        setActionDefinitionId("org.eclipse.ui.file.closeAllSaved"); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageActivated(IWorkbenchPage page) {
-        super.pageActivated(page);
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        super.pageClosed(page);
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partClosed(IWorkbenchPart part) {
-        super.partClosed(part);
-        if (part instanceof IEditorPart) {
-            part.removePropertyListener(this);
-            partsWithListeners.remove(part);
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partOpened(IWorkbenchPart part) {
-        super.partOpened(part);
-        if (part instanceof IEditorPart) {
-            part.addPropertyListener(this);
-            partsWithListeners.add(part);
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPropertyListener.
-     */
-    public void propertyChanged(Object source, int propID) {
-        if (source instanceof IEditorPart) {
-            if (propID == IEditorPart.PROP_DIRTY) {
-                updateState();
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Action.
-     */
-    public void run() {
-        if (getWorkbenchWindow() == null) {
-            // action has been dispose
-            return;
-        }
-        IWorkbenchPage page = getActivePage();
-        if (page != null) {
-            ((WorkbenchPage) page).closeAllSavedEditors();
-        }
-    }
-
-    /**
-     * Enable the action if there at least one editor open.
-     */
-    private void updateState() {
-        IWorkbenchPage page = getActivePage();
-        if (page == null) {
-            setEnabled(false);
-            return;
-        }
-        IEditorReference editors[] = page.getEditorReferences();
-        for (int i = 0; i < editors.length; i++) {
-            if (!editors[i].isDirty()) {
-                setEnabled(true);
-                return;
-            }
-        }
-        setEnabled(false);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void dispose() {
-        super.dispose();
-        for (Iterator it = partsWithListeners.iterator(); it.hasNext();) {
-            IWorkbenchPart part = (IWorkbenchPart) it.next();
-            part.removePropertyListener(this);
-        }
-        partsWithListeners.clear();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java
deleted file mode 100644
index 34f1ca6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseEditorHandler.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Closes the active editor.
- * <p>
- * Replacement for CloseEditorAction
- * </p>
- * 
- * @since 3.3
- * 
- */
-public class CloseEditorHandler extends AbstractEvaluationHandler {
-
-	private Expression enabledWhen;
-
-	public CloseEditorHandler() {
-		registerEnablement();
-	}
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-		IEditorPart part = HandlerUtil.getActiveEditorChecked(event);
-		window.getActivePage().closeEditor(part, true);
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.AbstractEvaluationHandler#getEnabledWhenExpression()
-	 */
-	protected Expression getEnabledWhenExpression() {
-		if (enabledWhen == null) {
-			enabledWhen = new Expression() {
-				public EvaluationResult evaluate(IEvaluationContext context)
-						throws CoreException {
-					IEditorPart part = InternalHandlerUtil
-							.getActiveEditor(context);
-					if (part != null) {
-						return EvaluationResult.TRUE;
-
-					}
-					return EvaluationResult.FALSE;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.expressions.Expression#collectExpressionInfo(org.eclipse.core.expressions.ExpressionInfo)
-				 */
-				public void collectExpressionInfo(ExpressionInfo info) {
-					info.addVariableNameAccess(ISources.ACTIVE_EDITOR_NAME);
-				}
-			};
-		}
-		return enabledWhen;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseOthersHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseOthersHandler.java
deleted file mode 100644
index b43095d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CloseOthersHandler.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Closes all editors except the one that is active.
- * <p>
- * Replacement for CloseOthersHandler
- * </p>
- * 
- * @since 3.3
- * 
- */
-public class CloseOthersHandler extends AbstractEvaluationHandler {
-	private Expression enabledWhen;
-
-	public CloseOthersHandler() {
-		registerEnablement();
-	}
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-		IWorkbenchPage page = window.getActivePage();
-		if (page != null) {
-			IEditorReference[] refArray = page.getEditorReferences();
-			if (refArray != null && refArray.length > 1) {
-				IEditorReference[] otherEditors = new IEditorReference[refArray.length - 1];
-				IEditorReference activeEditor = (IEditorReference) page
-						.getReference(page.getActiveEditor());
-				for (int i = 0; i < refArray.length; i++) {
-					if (refArray[i] != activeEditor)
-						continue;
-					System.arraycopy(refArray, 0, otherEditors, 0, i);
-					System.arraycopy(refArray, i + 1, otherEditors, i,
-							refArray.length - 1 - i);
-					break;
-				}
-				page.closeEditors(otherEditors, true);
-			}
-		}
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.AbstractEvaluationHandler#getEnabledWhenExpression()
-	 */
-	protected Expression getEnabledWhenExpression() {
-		if (enabledWhen == null) {
-			enabledWhen = new Expression() {
-				public EvaluationResult evaluate(IEvaluationContext context)
-						throws CoreException {
-					IWorkbenchWindow window = InternalHandlerUtil
-							.getActiveWorkbenchWindow(context);
-					if (window != null) {
-						IWorkbenchPage page = window.getActivePage();
-						if (page != null) {
-							IEditorReference[] refArray = page
-									.getEditorReferences();
-							if (refArray != null && refArray.length > 1) {
-								return EvaluationResult.TRUE;
-
-							}
-						}
-					}
-					return EvaluationResult.FALSE;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.expressions.Expression#collectExpressionInfo(org.eclipse.core.expressions.ExpressionInfo)
-				 */
-				public void collectExpressionInfo(ExpressionInfo info) {
-					info
-							.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-				}
-			};
-		}
-		return enabledWhen;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CompatibleWorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CompatibleWorkbenchPage.java
deleted file mode 100644
index 1c85207..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CompatibleWorkbenchPage.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * Internal class used in providing increased binary compatibility for
- * pre-3.0 plug-ins. There is an alternate implementation of this class
- * elsewhere that declares some methods that existed on IWorkbenchPage
- * in 2.1 that were removed in 3.0 (because they referenced resource API).
- * 
- * @since 3.0 
- */
-public class CompatibleWorkbenchPage implements ICompatibleWorkbenchPage {
-    // dummy version that declares no methods
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ConfigurationInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ConfigurationInfo.java
deleted file mode 100644
index 80f04a1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ConfigurationInfo.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Locale;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.about.ISystemSummarySection;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-import com.ibm.icu.text.Collator;
-import com.ibm.icu.text.DateFormat;
-
-/**
- * This class contains utility methods that clients may use to obtain
- * information about the system configuration.
- * 
- * @since 3.4
- * 
- */
-public final class ConfigurationInfo {
-
-	/**
-	 * Return the build id for this instance. This may be <code>null</code> in
-	 * the event that this property is undefined.
-	 * 
-	 * @return the build id or <code>null</code>
-	 */
-	public static String getBuildId() {
-		return System.getProperty("eclipse.buildId", null); //$NON-NLS-1$
-	}
-
-	/**
-	 * Return a multi-line String that describes the current configuration. This
-	 * may include but is not limited to system properties, installed bundles,
-	 * and installed features. The specific format of this message is undefined
-	 * and may change at any time.
-	 * 
-	 * <p>
-	 * The contents of this String are in part constructed via
-	 * {@link ISystemSummarySection} that are registered with this running
-	 * instance of the workbench.
-	 * </p>
-	 * 
-	 * @return the configuration info
-	 */
-	public static String getSystemSummary() {
-		StringWriter out = new StringWriter();
-		PrintWriter writer = new PrintWriter(out);
-		writer.println(NLS.bind(WorkbenchMessages.SystemSummary_timeStamp,
-				DateFormat
-						.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL)
-						.format(new Date())));
-
-		ConfigurationInfo.appendExtensions(writer);
-		writer.close();
-		return out.toString();
-	}
-
-	/*
-	 * Appends the contents of all extensions to the configurationLogSections
-	 * extension point.
-	 */
-	private static void appendExtensions(PrintWriter writer) {
-		IConfigurationElement[] configElements = getSortedExtensions();
-		for (int i = 0; i < configElements.length; ++i) {
-			IConfigurationElement element = configElements[i];
-
-			Object obj = null;
-			try {
-				obj = WorkbenchPlugin.createExtension(element,
-						IWorkbenchConstants.TAG_CLASS);
-			} catch (CoreException e) {
-				WorkbenchPlugin.log(
-						"could not create class attribute for extension", //$NON-NLS-1$
-						e.getStatus());
-			}
-
-			writer.println();
-			writer.println(NLS.bind(
-					WorkbenchMessages.SystemSummary_sectionTitle, element
-							.getAttribute("sectionTitle"))); //$NON-NLS-1$
-
-			if (obj instanceof ISystemSummarySection) {
-				ISystemSummarySection logSection = (ISystemSummarySection) obj;
-				logSection.write(writer);
-			} else {
-				writer.println(WorkbenchMessages.SystemSummary_sectionError);
-			}
-		}
-	}
-
-	private static IConfigurationElement[] getSortedExtensions() {
-		IConfigurationElement[] configElements = Platform
-				.getExtensionRegistry().getConfigurationElementsFor(
-						PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_SYSTEM_SUMMARY_SECTIONS);
-
-		Arrays.sort(configElements, new Comparator() {
-			Collator collator = Collator.getInstance(Locale.getDefault());
-
-			public int compare(Object a, Object b) {
-				IConfigurationElement element1 = (IConfigurationElement) a;
-				IConfigurationElement element2 = (IConfigurationElement) b;
-
-				String id1 = element1.getAttribute("id"); //$NON-NLS-1$
-				String id2 = element2.getAttribute("id"); //$NON-NLS-1$
-
-				if (id1 != null && id2 != null && !id1.equals(id2)) {
-					return collator.compare(id1, id2);
-				}
-
-				String title1 = element1.getAttribute("sectionTitle"); //$NON-NLS-1$ 
-				String title2 = element2.getAttribute("sectionTitle"); //$NON-NLS-1$
-
-				if (title1 == null) {
-					title1 = ""; //$NON-NLS-1$
-				}
-				if (title2 == null) {
-					title2 = ""; //$NON-NLS-1$
-				}
-
-				return collator.compare(title1, title2);
-			}
-		});
-
-		return configElements;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContainerPlaceholder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContainerPlaceholder.java
deleted file mode 100644
index 921c3a3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ContainerPlaceholder.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-public class ContainerPlaceholder extends PartPlaceholder implements
-        ILayoutContainer {
-    private static int nextId = 0;
-
-    private ILayoutContainer realContainer;
-
-    /**
-     * ContainerPlaceholder constructor comment.
-     * @param id java.lang.String
-     * @param label java.lang.String
-     */
-    public ContainerPlaceholder(String id) {
-        super(((id == null) ? "Container Placeholder " + nextId++ : id)); //$NON-NLS-1$
-    }
-
-    /**
-     * add method comment.
-     */
-    public void add(LayoutPart child) {
-        if (!(child instanceof PartPlaceholder)) {
-			return;
-		}
-        realContainer.add(child);
-    }
-
-    /**
-     * See ILayoutContainer::allowBorder
-     */
-    public boolean allowsBorder() {
-        return true;
-    }
-
-    /**
-     * getChildren method comment.
-     */
-    public LayoutPart[] getChildren() {
-        return realContainer.getChildren();
-    }
-
-    /**
-     * getFocus method comment.
-     */
-    public LayoutPart getFocus() {
-        return null;
-    }
-
-    /**
-     * getFocus method comment.
-     */
-    public LayoutPart getRealContainer() {
-        return (LayoutPart) realContainer;
-    }
-
-    /**
-     * isChildVisible method comment.
-     */
-    public boolean isChildVisible(LayoutPart child) {
-        return false;
-    }
-
-    /**
-     * remove method comment.
-     */
-    public void remove(LayoutPart child) {
-        if (!(child instanceof PartPlaceholder)) {
-			return;
-		}
-        realContainer.remove(child);
-    }
-
-    /**
-     * replace method comment.
-     */
-    public void replace(LayoutPart oldChild, LayoutPart newChild) {
-        if (!(oldChild instanceof PartPlaceholder)
-                && !(newChild instanceof PartPlaceholder)) {
-			return;
-		}
-        realContainer.replace(oldChild, newChild);
-    }
-
-    /**
-     * setChildVisible method comment.
-     */
-    public void setChildVisible(LayoutPart child, boolean visible) {
-    }
-
-    /**
-     * setFocus method comment.
-     */
-    public void setFocus(LayoutPart child) {
-    }
-
-    public void setRealContainer(ILayoutContainer container) {
-
-        if (container == null) {
-            // set the parent container of the children back to the real container
-            if (realContainer != null) {
-                LayoutPart[] children = realContainer.getChildren();
-                if (children != null) {
-                    for (int i = 0, length = children.length; i < length; i++) {
-                        children[i].setContainer(realContainer);
-                    }
-                }
-            }
-        } else {
-            // replace the real container with this place holder
-            LayoutPart[] children = container.getChildren();
-            if (children != null) {
-                for (int i = 0, length = children.length; i < length; i++) {
-                    children[i].setContainer(this);
-                }
-            }
-        }
-
-        this.realContainer = container;
-    }
-
-    public void findSashes(LayoutPart part, PartPane.Sashes sashes) {
-        ILayoutContainer container = getContainer();
-
-        if (container != null) {
-            container.findSashes(this, sashes);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#allowsAutoFocus()
-     */
-    public boolean allowsAutoFocus() {
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#isZoomed(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean childIsZoomed(LayoutPart toTest) {
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleBaseHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleBaseHandler.java
deleted file mode 100644
index 560539f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleBaseHandler.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.ParameterizedCommand;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-import org.eclipse.jface.bindings.Trigger;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.bindings.keys.SWTKeySupport;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * Its a base class for switching between views/editors/perspectives.
- * 
- * @since 3.3
- * 
- */
-
-public abstract class CycleBaseHandler extends AbstractHandler implements
-		IExecutableExtension {
-	private Object selection;
-	protected IWorkbenchWindow window;
-	// true to go to next and false to go to previous part
-	protected boolean gotoDirection;
-	/**
-	 * The list of key bindings for the backward command when it is open. This
-	 * value is <code>null</code> if the dialog is not open.
-	 */
-	private TriggerSequence[] backwardTriggerSequences = null;
-
-	protected ParameterizedCommand commandBackward = null;
-
-	protected ParameterizedCommand commandForward = null;
-	/**
-	 * The list of key bindings for the forward command when it is open. This
-	 * value is <code>null</code> if the dialog is not open.
-	 */
-	private TriggerSequence[] forwardTriggerSequences = null;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-
-	/**
-	 * Add all items to the dialog in the activation order
-	 */
-	protected abstract void addItems(Table table, WorkbenchPage page);
-
-	/**
-	 * Get the index of the current item (not valid if there are no items).
-	 */
-	protected int getCurrentItemIndex() {
-		return 0;
-	}
-	
-	/**
-	 * Get the backward command.
-	 */
-	protected abstract ParameterizedCommand getBackwardCommand();
-
-	/**
-	 * Get the forward command.
-	 */
-	protected abstract ParameterizedCommand getForwardCommand();
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
-
-		IWorkbenchPage page = window.getActivePage();
-		IWorkbenchPart activePart= page.getActivePart();
-		getTriggers();
-		openDialog((WorkbenchPage) page, activePart);
-		clearTriggers();
-		activate(page, selection);
-
-		return null;
-	}
-
-	/*
-	 * Open a dialog showing all views in the activation order
-	 */
-	protected void openDialog(WorkbenchPage page, IWorkbenchPart activePart) {
-		final int MAX_ITEMS = 22;
-
-		selection = null;
-		final Shell dialog = new Shell(window.getShell(), SWT.MODELESS);
-		Display display = dialog.getDisplay();
-		dialog.setLayout(new FillLayout());
-
-		final Table table = new Table(dialog, SWT.SINGLE | SWT.FULL_SELECTION);
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		TableColumn tc = new TableColumn(table, SWT.NONE);
-		tc.setResizable(false);
-		tc.setText(getTableHeader(activePart));
-		addItems(table, page);
-		int tableItemCount = table.getItemCount();
-
-		switch (tableItemCount) {
-		case 0:
-			cancel(dialog);
-			return;
-		case 1:
-			table.setSelection(0);
-			break;
-		default:
-			int i;
-			if (gotoDirection) {
-				i= getCurrentItemIndex() + 1;
-				if (i >= tableItemCount)
-					i= 0;
-			} else {
-				i= getCurrentItemIndex() - 1;
-				if (i < 0)
-					i= tableItemCount - 1;
-			}
-			table.setSelection(i);
-		}
-
-		tc.pack();
-		table.pack();
-		dialog.pack();
-
-		Rectangle tableBounds = table.getBounds();
-		tableBounds.height = Math.min(tableBounds.height, table.getItemHeight()
-				* MAX_ITEMS);
-		table.setBounds(tableBounds);
-
-		dialog.setBounds(dialog.computeTrim(tableBounds.x, tableBounds.y,
-				tableBounds.width, tableBounds.height));
-
-		tc.setWidth(table.getClientArea().width);
-		table.setFocus();
-		table.addFocusListener(new FocusListener() {
-			public void focusGained(FocusEvent e) {
-				// Do nothing
-			}
-
-			public void focusLost(FocusEvent e) {
-				cancel(dialog);
-			}
-		});
-
-		setDialogLocation(dialog, activePart);
-
-		final IContextService contextService = (IContextService) window
-				.getWorkbench().getService(IContextService.class);
-		try {
-			dialog.open();
-			addMouseListener(table, dialog);
-			contextService.registerShell(dialog, IContextService.TYPE_NONE);
-			addKeyListener(table, dialog);
-			addTraverseListener(table);
-
-			while (!dialog.isDisposed()) {
-				if (!display.readAndDispatch()) {
-					display.sleep();
-				}
-			}
-		} finally {
-			if (!dialog.isDisposed()) {
-				cancel(dialog);
-			}
-			contextService.unregisterShell(dialog);
-		}
-	}
-
-	/**
-	 * Sets the dialog's location on the screen.
-	 * 
-	 * @param dialog
-	 */
-	protected void setDialogLocation(final Shell dialog, IWorkbenchPart activePart) {
-		Display display = dialog.getDisplay();
-		Rectangle dialogBounds = dialog.getBounds();
-		Rectangle parentBounds = dialog.getParent().getBounds();
-
-		// the bounds of the monitor that contains the currently active part.
-		Rectangle monitorBounds = activePart == null ? display
-				.getPrimaryMonitor().getBounds() : ((PartSite) activePart
-				.getSite()).getPane().getControl().getMonitor().getBounds();
-
-		// Place it in the center of its parent;
-		dialogBounds.x = parentBounds.x
-				+ ((parentBounds.width - dialogBounds.width) / 2);
-		dialogBounds.y = parentBounds.y
-				+ ((parentBounds.height - dialogBounds.height) / 2);
-		if (!monitorBounds.contains(dialogBounds.x, dialogBounds.y)
-				|| !monitorBounds.contains(dialogBounds.x + dialogBounds.width,
-						dialogBounds.y + dialogBounds.height)) {
-			// Place it in the center of the monitor if it is not visible
-			// when placed in the center of its parent;
-			dialogBounds.x = monitorBounds.x
-					+ (monitorBounds.width - dialogBounds.width) / 2;
-			dialogBounds.y = monitorBounds.y
-					+ (monitorBounds.height - dialogBounds.height) / 2;
-		}
-
-		dialog.setLocation(dialogBounds.x, dialogBounds.y);
-	}
-
-	/**
-	 * Clears the forward and backward trigger sequences.
-	 */
-	protected void clearTriggers() {
-		forwardTriggerSequences = null;
-		backwardTriggerSequences = null;
-	}
-
-	/**
-	 * Fetch the key bindings for the forward and backward commands. They will
-	 * not change while the dialog is open, but the context will. Bug 55581.
-	 */
-	protected void getTriggers() {
-		commandForward = getForwardCommand();
-		commandBackward = getBackwardCommand();
-
-		final IBindingService bindingService = (IBindingService) window
-				.getWorkbench().getService(IBindingService.class);
-		forwardTriggerSequences = bindingService
-				.getActiveBindingsFor(commandForward);
-		backwardTriggerSequences = bindingService
-				.getActiveBindingsFor(commandBackward);
-	}
-
-	protected void addKeyListener(final Table table, final Shell dialog) {
-		table.addKeyListener(new KeyListener() {
-			private boolean firstKey = true;
-
-			private boolean quickReleaseMode = false;
-
-			public void keyPressed(KeyEvent e) {
-				int keyCode = e.keyCode;
-				char character = e.character;
-				int accelerator = SWTKeySupport
-						.convertEventToUnmodifiedAccelerator(e);
-				KeyStroke keyStroke = SWTKeySupport
-						.convertAcceleratorToKeyStroke(accelerator);
-
-				boolean acceleratorForward = false;
-				boolean acceleratorBackward = false;
-
-				if (commandForward != null) {
-					if (forwardTriggerSequences != null) {
-						final int forwardCount = forwardTriggerSequences.length;
-						for (int i = 0; i < forwardCount; i++) {
-							final TriggerSequence triggerSequence = forwardTriggerSequences[i];
-
-							// Compare the last key stroke of the binding.
-							final Trigger[] triggers = triggerSequence
-									.getTriggers();
-							final int triggersLength = triggers.length;
-							if ((triggersLength > 0)
-									&& (triggers[triggersLength - 1]
-											.equals(keyStroke))) {
-								acceleratorForward = true;
-								break;
-							}
-						}
-					}
-				}
-
-				if (commandBackward != null) {
-					if (backwardTriggerSequences != null) {
-						final int backwardCount = backwardTriggerSequences.length;
-						for (int i = 0; i < backwardCount; i++) {
-							final TriggerSequence triggerSequence = backwardTriggerSequences[i];
-
-							// Compare the last key stroke of the binding.
-							final Trigger[] triggers = triggerSequence
-									.getTriggers();
-							final int triggersLength = triggers.length;
-							if ((triggersLength > 0)
-									&& (triggers[triggersLength - 1]
-											.equals(keyStroke))) {
-								acceleratorBackward = true;
-								break;
-							}
-						}
-					}
-				}
-
-				if (character == SWT.CR || character == SWT.LF) {
-					ok(dialog, table);
-				} else if (acceleratorForward) {
-					if (firstKey && e.stateMask != 0) {
-						quickReleaseMode = true;
-					}
-
-					int index = table.getSelectionIndex();
-					table.setSelection((index + 1) % table.getItemCount());
-				} else if (acceleratorBackward) {
-					if (firstKey && e.stateMask != 0) {
-						quickReleaseMode = true;
-					}
-
-					int index = table.getSelectionIndex();
-					table.setSelection(index >= 1 ? index - 1 : table
-							.getItemCount() - 1);
-				} else if (keyCode != SWT.ALT && keyCode != SWT.COMMAND
-						&& keyCode != SWT.CTRL && keyCode != SWT.SHIFT
-						&& keyCode != SWT.ARROW_DOWN && keyCode != SWT.ARROW_UP
-						&& keyCode != SWT.ARROW_LEFT
-						&& keyCode != SWT.ARROW_RIGHT) {
-					cancel(dialog);
-				}
-
-				firstKey = false;
-			}
-
-			public void keyReleased(KeyEvent e) {
-				int keyCode = e.keyCode;
-				int stateMask = e.stateMask;
-
-				final IPreferenceStore store = WorkbenchPlugin.getDefault()
-						.getPreferenceStore();
-				final boolean stickyCycle = store
-						.getBoolean(IPreferenceConstants.STICKY_CYCLE);
-				if ((!stickyCycle && (firstKey || quickReleaseMode))
-						&& keyCode == stateMask) {
-					ok(dialog, table);
-				}
-			}
-		});
-	}
-
-	/**
-	 * Adds a listener to the given table that blocks all traversal operations.
-	 * 
-	 * @param table
-	 *            The table to which the traversal suppression should be added;
-	 *            must not be <code>null</code>.
-	 */
-	protected final void addTraverseListener(final Table table) {
-		table.addTraverseListener(new TraverseListener() {
-			/**
-			 * Blocks all key traversal events.
-			 * 
-			 * @param event
-			 *            The trigger event; must not be <code>null</code>.
-			 */
-			public final void keyTraversed(final TraverseEvent event) {
-				event.doit = false;
-			}
-		});
-	}
-
-	/**
-	 * Activate the selected item.
-	 * 
-	 * @param page
-	 *            the page
-	 * @param selectedItem
-	 *            the selected item
-	 */
-	protected void activate(IWorkbenchPage page, Object selectedItem) {
-		if (selectedItem != null) {
-			if (selectedItem instanceof IEditorReference) {
-				page.setEditorAreaVisible(true);
-			}
-			if (selectedItem instanceof IWorkbenchPartReference) {
-				IWorkbenchPart part = ((IWorkbenchPartReference) selectedItem)
-						.getPart(true);
-				if (part != null) {
-					page.activate(part);
-				}
-			}
-			
-			if (selectedItem instanceof IPerspectiveDescriptor){
-	            IPerspectiveDescriptor persp = (IPerspectiveDescriptor) selectedItem;
-	            page.setPerspective(persp);
-			}
-		}
-	}
-
-	/*
-	 * Close the dialog and set selection to null.
-	 */
-	protected void cancel(Shell dialog) {
-		selection = null;
-		dialog.close();
-	}
-
-	/*
-	 * Close the dialog saving the selection
-	 */
-	protected void ok(Shell dialog, final Table table) {
-		TableItem[] items = table.getSelection();
-
-		if (items != null && items.length == 1) {
-			selection = items[0].getData();
-		}
-
-		dialog.close();
-	}
-
-	/*
-	 * Add mouse listener to the table closing it when the mouse is pressed.
-	 */
-	protected void addMouseListener(final Table table, final Shell dialog) {
-		table.addMouseListener(new MouseListener() {
-			public void mouseDoubleClick(MouseEvent e) {
-				ok(dialog, table);
-			}
-
-			public void mouseDown(MouseEvent e) {
-				ok(dialog, table);
-			}
-
-			public void mouseUp(MouseEvent e) {
-				ok(dialog, table);
-			}
-		});
-	}
-
-	protected abstract String getTableHeader(IWorkbenchPart activePart);
-
-	// return WorkbenchMessages.CyclePartAction_header;
-
-	public Object getSelection() {
-		return selection;
-	}
-
-	public IWorkbenchWindow getWindow() {
-		return window;
-	}
-
-	public TriggerSequence[] getBackwardTriggerSequences() {
-		return backwardTriggerSequences;
-	}
-
-	public TriggerSequence[] getForwardTriggerSequences() {
-		return forwardTriggerSequences;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) throws CoreException {
-		gotoDirection = "true".equals(data); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleEditorHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleEditorHandler.java
deleted file mode 100644
index 613c146..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleEditorHandler.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.commands.ICommandService;
-
-/**
- * This is the handler for NextEditor and PrevEditor commands.
- * <p>
- * Replacement for CycleEditorAction
- * </p>
- * 
- * @since 3.3
- */
-public class CycleEditorHandler extends CycleBaseHandler {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#addItems(org.eclipse.swt.widgets.Table, org.eclipse.ui.internal.WorkbenchPage)
-	 */
-	protected void addItems(Table table, WorkbenchPage page) {
-		// TODO Auto-generated method stub
-        IEditorReference refs[] = page.getSortedEditors();
-        for (int i = refs.length - 1; i >= 0; i--) {
-            TableItem item = null;
-            item = new TableItem(table, SWT.NONE);
-            if (refs[i].isDirty()) {
-				item.setText("*" + refs[i].getTitle()); //$NON-NLS-1$
-			} else {
-				item.setText(refs[i].getTitle());
-			}
-            item.setImage(refs[i].getTitleImage());
-            item.setData(refs[i]);
-        }
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getBackwardCommand()
-	 */
-	protected ParameterizedCommand getBackwardCommand() {
-		final ICommandService commandService = (ICommandService) window.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand("org.eclipse.ui.window.previousEditor"); //$NON-NLS-1$
-		ParameterizedCommand commandBack = new ParameterizedCommand(command, null);
-		return commandBack;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getForwardCommand()
-	 */
-	protected ParameterizedCommand getForwardCommand() {
-		final ICommandService commandService = (ICommandService) window.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand("org.eclipse.ui.window.nextEditor"); //$NON-NLS-1$
-		ParameterizedCommand commandF = new ParameterizedCommand(command, null);
-		return commandF;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getTableHeader()
-	 */
-	protected String getTableHeader(IWorkbenchPart activePart) {
-		// TODO Auto-generated method stub
-		return WorkbenchMessages.CycleEditorAction_header;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CyclePerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CyclePerspectiveHandler.java
deleted file mode 100644
index e274a6f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CyclePerspectiveHandler.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.model.PerspectiveLabelProvider;
-
-/**
- * This handler is used to switch between perspectives using the keyboard.
- * <p>
- * Replacement for CyclePerspectiveAction
- * </p>
- * 
- * @since 3.3
- */
-public class CyclePerspectiveHandler extends CycleBaseHandler {
-	private PerspectiveLabelProvider labelProvider = new PerspectiveLabelProvider(
-            false);
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#addItems(org.eclipse.swt.widgets.Table, org.eclipse.ui.internal.WorkbenchPage)
-	 */
-	protected void addItems(Table table, WorkbenchPage page) {
-		IPerspectiveDescriptor perspectives[] = page.getSortedPerspectives();
-        for (int i = perspectives.length - 1; i >= 0; i--) {
-            TableItem item = new TableItem(table, SWT.NONE);
-            IPerspectiveDescriptor desc = perspectives[i];
-            String text = labelProvider.getText(desc);
-            if(text == null) {
-				text = "";//$NON-NLS-1$
-			}
-            item.setText(text);
-            item.setImage(labelProvider.getImage(desc));
-            item.setData(desc);
-        }
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getBackwardCommand()
-	 */
-	protected ParameterizedCommand getBackwardCommand() {
-		final ICommandService commandService = (ICommandService) window.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand("org.eclipse.ui.window.previousPerspective"); //$NON-NLS-1$
-		ParameterizedCommand commandBack = new ParameterizedCommand(command, null);
-		return commandBack;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getForwardCommand()
-	 */
-	protected ParameterizedCommand getForwardCommand() {
-		final ICommandService commandService = (ICommandService) window.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand("org.eclipse.ui.window.nextPerspective"); //$NON-NLS-1$
-		ParameterizedCommand commandF = new ParameterizedCommand(command, null);
-		return commandF;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getTableHeader()
-	 */
-	protected String getTableHeader(IWorkbenchPart activePart) {
-		return WorkbenchMessages.CyclePerspectiveAction_header;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.commands.AbstractHandler#dispose()
-	 */
-	public void dispose() {
-		if (labelProvider!=null) {
-			labelProvider.dispose();
-			labelProvider = null;
-		}
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
deleted file mode 100644
index e4361c5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.commands.ICommandService;
-
-/**
- * This handler is used to switch between parts using the keyboard.
- * <p>
- * Replacement for CyclePartAction
- * </p>
- * 
- * @since 3.3
- *
- */
-public class CycleViewHandler extends CycleBaseHandler {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#addItems(org.eclipse.swt.widgets.Table, org.eclipse.ui.internal.WorkbenchPage)
-	 */
-	protected void addItems(Table table, WorkbenchPage page) {
-		// TODO Auto-generated method stub
-		IWorkbenchPartReference refs[] = page.getSortedParts();
-		boolean includeEditor = true;
-
-		for (int i = refs.length - 1; i >= 0; i--) {
-			if (refs[i] instanceof IEditorReference) {
-				if (includeEditor) {
-					IEditorReference activeEditor = (IEditorReference) refs[i];
-					TableItem item = new TableItem(table, SWT.NONE);
-					item.setText(WorkbenchMessages.CyclePartAction_editor);
-					item.setImage(activeEditor.getTitleImage());
-					item.setData(activeEditor);
-					includeEditor = false;
-				}
-			} else {
-				TableItem item = new TableItem(table, SWT.NONE);
-				item.setText(refs[i].getTitle());
-				item.setImage(refs[i].getTitleImage());
-				item.setData(refs[i]);
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getBackwardCommand()
-	 */
-	protected ParameterizedCommand getBackwardCommand() {
-		// TODO Auto-generated method stub
-		final ICommandService commandService = (ICommandService) window.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand("org.eclipse.ui.window.previousView"); //$NON-NLS-1$
-		ParameterizedCommand commandBack = new ParameterizedCommand(command, null);
-		return commandBack;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getForwardCommand()
-	 */
-	protected ParameterizedCommand getForwardCommand() {
-		// TODO Auto-generated method stub
-		final ICommandService commandService = (ICommandService) window.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand("org.eclipse.ui.window.nextView"); //$NON-NLS-1$
-		ParameterizedCommand commandF = new ParameterizedCommand(command, null);
-		return commandF;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.CycleBaseHandler#getTableHeader()
-	 */
-	protected String getTableHeader(IWorkbenchPart activePart) {
-		// TODO Auto-generated method stub
-		return WorkbenchMessages.CyclePartAction_header;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java
deleted file mode 100644
index 55f4c50..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultAnimationFeedback.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.Region;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @since 3.3
- *
- */
-public class DefaultAnimationFeedback {
-	private static final int LINE_WIDTH = 1;
-	
-	private Display display;
-	private Shell theShell;
-	private Region shellRegion;
-	
-	private List startRects = new ArrayList();
-	private List endRects = new ArrayList();
-	
-	public DefaultAnimationFeedback() {}
-
-    /**
-	 * @param parentShell
-	 */
-	public void initialize(Shell parentShell, Rectangle startRect, Rectangle endRect) {
-		addStartRect(startRect);
-		addEndRect(endRect);
-
-		theShell = new Shell(parentShell, SWT.NO_TRIM | SWT.ON_TOP);
-		display = theShell.getDisplay();
-        Color color = display.getSystemColor(SWT.COLOR_WIDGET_FOREGROUND);
-        theShell.setBackground(color);
-
-        // Ensure that the background won't show on the initial display
-        shellRegion = new Region(display);
-        theShell.setRegion(shellRegion);
-	}
-	
-	public void addStartRect(Rectangle rect) {
-		if (rect != null) {
-			startRects.add(rect);
-		}
-	}
-	
-	public void addEndRect(Rectangle rect) {
-		if (rect != null) {
-			endRects.add(rect);
-		}
-	}
-	
-	public List getStartRects() {
-		return startRects;
-	}
-	
-	public List getEndRects() {
-		return endRects;
-	}
-	
-	public void renderStep(double amount) {
-		if (shellRegion != null) {
-        	shellRegion.dispose();
-        	shellRegion = new Region(display);
-        }
-
-		// Iterate across the set of start/end rects
-        Iterator startIter = startRects.iterator();
-        Iterator endIter = endRects.iterator();
-        while (startIter.hasNext()) {
-            Rectangle start = (Rectangle) startIter.next();
-            Rectangle end = (Rectangle) endIter.next();
-            
-			// Get the bounds of the interpolated rect
-			Rectangle curRect = RectangleAnimation.interpolate(start, end, amount);
-			
-	        Rectangle rect = Geometry.toControl(theShell, curRect);
-	        shellRegion.add(rect);
-	        rect.x += LINE_WIDTH;
-	        rect.y += LINE_WIDTH;
-	        rect.width = Math.max(0, rect.width - 2 * LINE_WIDTH);
-	        rect.height = Math.max(0, rect.height - 2 * LINE_WIDTH);
-	
-	        shellRegion.subtract(rect);
-        }
-
-        theShell.setRegion(shellRegion);
-        
-        display.update();
-	}
-
-	/**
-	 * 
-	 */
-	public void dispose() {
-		theShell.setVisible(false);
-		theShell.dispose();
-		shellRegion.dispose();
-	}
-
-	/**
-	 * Perform any initialization you want to have happen -before- the
-	 * amination starts
-	 */
-	public void jobInit() {
-    	// Compute the shell's bounds
-        Rectangle shellBounds = Geometry.copy((Rectangle) startRects.get(0));
-        Iterator startIter = startRects.iterator();
-        Iterator endIter = endRects.iterator();
-        while (startIter.hasNext()) {
-            shellBounds.add((Rectangle) startIter.next());
-            shellBounds.add((Rectangle) endIter.next());
-        }
-        theShell.setBounds(shellBounds);
-        
-    	// Making the shell visible will be slow on old video cards, so only start
-    	// the timer once it is visible.
-    	theShell.setVisible(true);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultSaveable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultSaveable.java
deleted file mode 100644
index ed85b6d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultSaveable.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart2;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.Saveable;
-
-/**
- * A default {@link Saveable} implementation that wrappers a regular
- * workbench part (one that does not itself adapt to Saveable).
- * 
- * @since 3.2
- */
-public class DefaultSaveable extends Saveable {
-
-	private IWorkbenchPart part;
-
-	/**
-	 * Creates a new DefaultSaveable.
-	 * 
-	 * @param part
-	 *            the part represented by this model
-	 */
-	public DefaultSaveable(IWorkbenchPart part) {
-		this.part = part;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.Saveable#doSave(org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public void doSave(IProgressMonitor monitor) {
-		if (part instanceof ISaveablePart) {
-			ISaveablePart saveable = (ISaveablePart) part;
-			saveable.doSave(monitor);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.Saveable#getName()
-	 */
-	public String getName() {
-		if (part instanceof IWorkbenchPart2) {
-			return ((IWorkbenchPart2) part).getPartName();
-		}
-		return part.getTitle();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.Saveable#getImageDescriptor()
-	 */
-	public ImageDescriptor getImageDescriptor() {
-		Image image = part.getTitleImage();
-		if (image == null) {
-			return null;
-		}
-		return ImageDescriptor.createFromImage(image);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.Saveable#getToolTipText()
-	 */
-	public String getToolTipText() {
-		return part.getTitleToolTip();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.Saveable#isDirty()
-	 */
-	public boolean isDirty() {
-		if (part instanceof ISaveablePart) {
-			return ((ISaveablePart) part).isDirty();
-		}
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		return part.hashCode();
-	}
-
-	/* (non-Javadoc)
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final DefaultSaveable other = (DefaultSaveable) obj;
-		if (part == null) {
-			if (other.part != null)
-				return false;
-		} else if (!part.equals(other.part))
-			return false;
-		return true;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.Saveable#show(org.eclipse.ui.IWorkbenchPage)
-	 */
-	public boolean show(IWorkbenchPage page) {
-		IWorkbenchPartReference reference = page.getReference(part);
-		if (reference != null) {
-			page.activate(part);
-			return true;
-		}
-		if (part instanceof IViewPart) {
-			IViewPart viewPart = (IViewPart) part;
-			try {
-				page.showView(viewPart.getViewSite().getId(), viewPart
-						.getViewSite().getSecondaryId(),
-						IWorkbenchPage.VIEW_ACTIVATE);
-			} catch (PartInitException e) {
-				return false;
-			}
-			return true;
-		}
-		return false;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultStackPresentationSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultStackPresentationSite.java
deleted file mode 100644
index 9fb2670..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DefaultStackPresentationSite.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * @since 3.0
- */
-public abstract class DefaultStackPresentationSite implements
-        IStackPresentationSite {
-
-    private StackPresentation presentation;
-
-    private int state = IStackPresentationSite.STATE_RESTORED;
-
-    private int activeState = StackPresentation.AS_INACTIVE;
-
-    public DefaultStackPresentationSite() {
-
-    }
-
-    public void setPresentation(StackPresentation newPresentation) {
-        presentation = newPresentation;
-        if (presentation != null) {
-            presentation.setState(state);
-            presentation.setActive(activeState);
-        }
-    }
-
-    public StackPresentation getPresentation() {
-        return presentation;
-    }
-
-    public int getState() {
-        return state;
-    }
-
-    public void setActive(int activeState) {
-        if (activeState != this.activeState) {
-            this.activeState = activeState;
-            if (presentation != null) {
-                presentation.setActive(activeState);
-            }
-        }
-    }
-
-    public int getActive() {
-        return activeState;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.IStackPresentationSite#selectPart(org.eclipse.ui.internal.skins.IPresentablePart)
-     */
-    public void selectPart(IPresentablePart toSelect) {
-
-        if (presentation != null) {
-            presentation.selectPart(toSelect);
-        }
-    }
-
-    public void dispose() {
-        if (presentation != null) {
-            presentation.dispose();
-        }
-        setPresentation(null);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.IPresentationSite#setState(int)
-     */
-    public void setState(int newState) {
-        setPresentationState(newState);
-    }
-
-    public void setPresentationState(int newState) {
-        state = newState;
-        if (presentation != null) {
-            presentation.setState(newState);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.IPresentablePart#isClosable()
-     */
-    public boolean isCloseable(IPresentablePart part) {
-        return part.isCloseable();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.IPresentationSite#dragStart(org.eclipse.ui.internal.skins.IPresentablePart, boolean)
-     */
-    public void dragStart(IPresentablePart beingDragged, Point initialPosition,
-            boolean keyboard) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.IPresentationSite#close(org.eclipse.ui.internal.skins.IPresentablePart)
-     */
-    public void close(IPresentablePart toClose) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.IPresentationSite#dragStart(boolean)
-     */
-    public void dragStart(Point initialPosition, boolean keyboard) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IStackPresentationSite#supportsState(int)
-     */
-    public boolean supportsState(int state) {
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IStackPresentationSite#getSelectedPart()
-     */
-    public abstract IPresentablePart getSelectedPart();
-
-    public void addSystemActions(IMenuManager menuManager) {
-
-    }
-
-    public abstract boolean isPartMoveable(IPresentablePart toMove);
-
-    public abstract boolean isStackMoveable();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedPlaceHolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedPlaceHolder.java
deleted file mode 100644
index 29042b6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedPlaceHolder.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.ui.IMemento;
-
-/**
- * DetachedPlaceHolder is the placeholder for detached views.
- *
- */
-public class DetachedPlaceHolder extends PartPlaceholder implements
-        ILayoutContainer {
-    ArrayList children = new ArrayList();
-
-    Rectangle bounds;
-
-    /**
-     * DetachedPlaceHolder constructor comment.
-     * @param id java.lang.String
-     * @param bounds the size of the placeholder
-     */
-    public DetachedPlaceHolder(String id, Rectangle bounds) {
-        super(id);
-        this.bounds = bounds;
-    }
-
-    /**
-     * Add a child to the container.
-     */
-    public void add(LayoutPart newPart) {
-        if (!(newPart instanceof PartPlaceholder)) {
-			return;
-		}
-        children.add(newPart);
-    }
-
-    /**
-     * Return true if the container allows its
-     * parts to show a border if they choose to,
-     * else false if the container does not want
-     * its parts to show a border.
-     * @return boolean
-     */
-    public boolean allowsBorder() {
-        return false;
-    }
-
-    public Rectangle getBounds() {
-        return bounds;
-    }
-
-    /**
-     * Returns a list of layout children.
-     */
-    public LayoutPart[] getChildren() {
-        LayoutPart result[] = new LayoutPart[children.size()];
-        children.toArray(result);
-        return result;
-    }
-
-    /**
-     * Remove a child from the container.
-     */
-    public void remove(LayoutPart part) {
-        children.remove(part);
-    }
-
-    /**
-     * Replace one child with another
-     */
-    public void replace(LayoutPart oldPart, LayoutPart newPart) {
-        remove(oldPart);
-        add(newPart);
-    }
-
-   
-    /**
-     * Restore the state from the memento.
-     * @param memento
-     */
-    public void restoreState(IMemento memento) {
-        // Read the bounds.
-        Integer bigInt;
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_X);
-        int x = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_Y);
-        int y = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_WIDTH);
-        int width = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_HEIGHT);
-        int height = bigInt.intValue();
-
-        bounds = new Rectangle(x, y, width, height);
-
-        // Restore the placeholders.
-        IMemento childrenMem[] = memento
-                .getChildren(IWorkbenchConstants.TAG_VIEW);
-        for (int i = 0; i < childrenMem.length; i++) {
-            PartPlaceholder holder = new PartPlaceholder(childrenMem[i]
-                    .getString(IWorkbenchConstants.TAG_ID));
-            holder.setContainer(this);
-            children.add(holder);
-        }
-    }
-
-    /**
-     * Save state to the memento.
-     * @param memento
-     */
-    public void saveState(IMemento memento) {
-        // Save the bounds.
-        memento.putInteger(IWorkbenchConstants.TAG_X, bounds.x);
-        memento.putInteger(IWorkbenchConstants.TAG_Y, bounds.y);
-        memento.putInteger(IWorkbenchConstants.TAG_WIDTH, bounds.width);
-        memento.putInteger(IWorkbenchConstants.TAG_HEIGHT, bounds.height);
-
-        // Save the views.
-        for (int i = 0; i < children.size(); i++) {
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_VIEW);
-            LayoutPart child = (LayoutPart) children.get(i);
-            childMem.putString(IWorkbenchConstants.TAG_ID, child.getID());
-        }
-    }
-
-    public void findSashes(LayoutPart part, PartPane.Sashes sashes) {
-        ILayoutContainer container = getContainer();
-
-        if (container != null) {
-            container.findSashes(this, sashes);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#allowsAutoFocus()
-     */
-    public boolean allowsAutoFocus() {
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedWindow.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedWindow.java
deleted file mode 100644
index a42e578..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DetachedWindow.java
+++ /dev/null
@@ -1,534 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.events.ShellListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
-import org.eclipse.ui.internal.presentations.util.AbstractTabFolder;
-import org.eclipse.ui.internal.presentations.util.TabFolderEvent;
-import org.eclipse.ui.internal.presentations.util.TabFolderListener;
-import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
-import org.eclipse.ui.presentations.StackDropResult;
-
-
-/**
- * TODO: Drag from detached to fast view bar back to detached causes NPE
- * 
- * @since 3.1
- */
-public class DetachedWindow implements IDragOverListener {
-
-    public static final int INFINITE = Integer.MAX_VALUE;
-
-    private PartStack folder;
-
-    private WorkbenchPage page;
-    
-    private Rectangle bounds = new Rectangle(0,0,0,0);
-
-    private Shell windowShell;
-    
-    private boolean hideViewsOnClose = true;
-    
-    private ShellListener shellListener = new ShellAdapter() {
-        public void shellClosed(ShellEvent e) {
-        	// only continue to close if the handleClose
-        	// wasn't canceled
-            e.doit = handleClose();
-        }
-    };
-    
-    private Listener resizeListener = new Listener() {
-        public void handleEvent(Event event) {
-            Shell shell = (Shell) event.widget;
-            folder.setBounds(shell.getClientArea());
-        }
-    };
-    
-    private Listener activationListener = new Listener() {
-        public void handleEvent(Event event) {
-        	switch (event.type) {
-        	case SWT.Activate:
-        		page.window.liftRestrictions();
-        		break;
-        	case SWT.Deactivate:
-        		page.window.imposeRestrictions();
-        		break;
-        	}
-        }
-    };
-
-    private IPropertyListener propertyListener = new IPropertyListener() {
-        public void propertyChanged(Object source, int propId) {
-            if (propId == PartStack.PROP_SELECTION) {
-                activePartChanged(getPartReference(folder.getSelection()));
-            }
-        }
-    };
-
-    private IWorkbenchPartReference activePart;
-
-    private IPropertyListener partPropertyListener = new IPropertyListener() {
-        public void propertyChanged(Object source, int propId) {
-            if (propId == IWorkbenchPartConstants.PROP_TITLE) {
-                updateTitle();
-            }
-        }
-    };
-    
-    /**
-     * Create a new FloatingWindow.
-     */
-    public DetachedWindow(WorkbenchPage workbenchPage) {
-        this.page = workbenchPage;
-        
-        folder = new ViewStack(page, false, PresentationFactoryUtil.ROLE_VIEW, null);
-        folder.addListener(propertyListener);
-    }
-
-    protected void activePartChanged(IWorkbenchPartReference partReference) {
-        if (activePart == partReference) {
-            return;
-        }
-         
-        if (activePart != null) {
-            activePart.removePropertyListener(partPropertyListener);
-        }
-        activePart = partReference;
-        if (partReference != null) {
-            partReference.addPropertyListener(partPropertyListener);   
-        }
-        updateTitle();
-    }
-
-    private void updateTitle() {
-        if (activePart != null) {
-            // Uncomment to set the shell title to match the title of the active part
-//            String text = activePart.getTitle();
-//            
-//            if (!text.equals(s.getText())) {
-//                s.setText(text);
-//            }
-        }
-    }
-
-    /**
-     * Ensure that the shell's minimum size is equal to the minimum size
-     * of the first part added to the shell.
-     */
-    private void updateMinimumSize() {
-        // We can only do this for 'Tabbed' stacked presentations.
-        if (folder.getPresentation() instanceof TabbedStackPresentation) {
-            TabbedStackPresentation stack = (TabbedStackPresentation) folder.getPresentation();
-
-            if (stack.getPartList().length == 1) {
-                // Get the minimum space required for the part
-                int width = stack.computePreferredSize(true, INFINITE, INFINITE, 0);
-                int height = stack.computePreferredSize(false, INFINITE, INFINITE, 0);
-
-                // Take the current shell 'trim' into account
-                int shellHeight = windowShell.getBounds().height - windowShell.getClientArea().height;
-                int shellWidth = windowShell.getBounds().width - windowShell.getClientArea().width;
-
-                windowShell.setMinimumSize(width + shellWidth, height + shellHeight);
-            }
-        }
-    }
-
-    private static IWorkbenchPartReference getPartReference(PartPane pane) {
-        
-        if (pane == null) {
-            return null;
-        }
-        
-        return pane.getPartReference();
-    }
-
-    public Shell getShell() {
-        return windowShell;
-    }
-    
-    public void create() {
-        windowShell = ((WorkbenchWindow)page.getWorkbenchWindow()).getDetachedWindowPool().allocateShell(shellListener);
-        windowShell.setData(this);
-        windowShell.setText(""); //$NON-NLS-1$
-        DragUtil.addDragTarget(windowShell, this);
-        hideViewsOnClose = true;
-        if (bounds.isEmpty()) {
-            Point center = Geometry.centerPoint(page.getWorkbenchWindow().getShell().getBounds());
-            Point size = new Point(300, 200);
-            Point upperLeft = Geometry.subtract(center, Geometry.divide(size, 2));
-            
-            bounds = Geometry.createRectangle(upperLeft, size); 
-        }
-        
-        // Force the rect into the current display
-        Rectangle dispBounds = getShell().getDisplay().getBounds();
-        if (bounds.width > dispBounds.width)
-        	bounds.width = dispBounds.width;
-        if (bounds.height > dispBounds.height)
-        	bounds.height = dispBounds.height;
-        if (bounds.x+bounds.width > dispBounds.width)
-        	bounds.x = dispBounds.width - bounds.width;
-        if (bounds.y+bounds.height > dispBounds.height)
-        	bounds.y = dispBounds.height - bounds.height;
-        
-        getShell().setBounds(bounds);
-
-        configureShell(windowShell);
-        
-        createContents(windowShell);
-        windowShell.layout(true);
-        folder.setBounds(windowShell.getClientArea());
-    }
-    
-    
-    /**
-     * Adds a visual part to this window.
-     * Supports reparenting.
-     */
-    public void add(ViewPane part) {
-
-        Shell shell = getShell();
-        if (shell != null) {
-			part.reparent(shell);
-		}
-        folder.add(part);
-        updateMinimumSize();
-    }
-
-    public boolean belongsToWorkbenchPage(IWorkbenchPage workbenchPage) {
-        return (this.page == workbenchPage);
-    }
-
-    public boolean close() {
-        hideViewsOnClose = false;
-        Shell shell = getShell();
-        if (shell != null) {
-            shell.close();
-        }
-        return true;
-    }
-    
-    /**
-     * Closes this window and disposes its shell.
-     */
-    private boolean handleClose() {
-        
-        if (hideViewsOnClose) {
-            List views = new ArrayList();
-            collectViewPanes(views, getChildren());
-            
-            // Surgical fix: -explicitly- close and remove
-            // this DW if it's already empty. See bug 234484.
-            if (views.size() == 0) {
-            	page.getActivePerspective().getPresentation().closeDetachedWindow(this);
-            }
-            
-            // Save any drty views
-            if (!handleSaves(views)) {
-            	return false;  // User canceled the save
-            }
-            
-            // OK, go on with the closing
-            Iterator itr = views.iterator();
-            while (itr.hasNext()) {
-				ViewPane child = (ViewPane) itr.next();
-
-				// Only close if closable...
-				if (child.isCloseable()) {
-					page.hideView(child.getViewReference());
-					
-					// Was the close cancelled?
-					if (child.container != null)
-						return false;
-				} else {
-					page.attachView(child.getViewReference());
-				}
-			}
-        }
-
-        if (folder != null) {
-			folder.dispose();
-		}
-        
-        if (windowShell != null) {
-            windowShell.removeListener(SWT.Resize, resizeListener);
-            windowShell.removeListener(SWT.Activate, activationListener);
-            windowShell.removeListener(SWT.Deactivate, activationListener);
-            DragUtil.removeDragTarget(windowShell, this);
-            bounds = windowShell.getBounds();
-
-            // Unregister this detached view as a window (for key bindings).
-			final IContextService contextService = (IContextService) getWorkbenchPage().getWorkbenchWindow().getWorkbench().getService(IContextService.class);
-			contextService.unregisterShell(windowShell);
-
-            windowShell.setData(null);
-            windowShell = null;
-        }
-
-        return true;
-    }
-
-    /**
-     * Prompts for and handles the saving of dirty, saveable views
-	 * @param views The list of ViewPanes
-	 * @return <code>true</code> unless the user cancels the save(s)
-	 */
-	private boolean handleSaves(List views) {
-        List dirtyViews = new ArrayList();
-        for (Iterator iterator = views.iterator(); iterator.hasNext();) {
-			ViewPane pane = (ViewPane) iterator.next();
-			IViewReference ref = pane.getViewReference();
-			IViewPart part = ref.getView(false);
-    		if (part instanceof ISaveablePart) {
-    			ISaveablePart saveable = (ISaveablePart)part;
-    			if (saveable.isDirty() && saveable.isSaveOnCloseNeeded()) {
-    				dirtyViews.add(part);
-    			}
-    		}
-		}
-        
-        // If there are any prompt to save -before- any closing happens
-        // FIXME: This code will result in a double prompt if the user
-        // decides not to save a particular view at this stage they'll
-        // get a second one from the 'hideView' call...
-        if (dirtyViews.size() > 0) {
-			IWorkbenchWindow window = page.getWorkbenchWindow();
-			boolean success = EditorManager.saveAll(dirtyViews, true, true, false, window);
-			if (!success) {
-				return false; // the user canceled.
-			}
-        }
-        
-        return true;
-	}
-
-	/* (non-Javadoc)
-     * @see org.eclipse.ui.internal.dnd.IDragOverListener#drag(org.eclipse.swt.widgets.Control, java.lang.Object, org.eclipse.swt.graphics.Point, org.eclipse.swt.graphics.Rectangle)
-     */
-    public IDropTarget drag(Control currentControl, Object draggedObject,
-            Point position, Rectangle dragRectangle) {
-
-        if (!(draggedObject instanceof PartPane)) {
-            return null;
-        }
-
-        final PartPane sourcePart = (PartPane) draggedObject;
-
-        if (sourcePart.getWorkbenchWindow() != page.getWorkbenchWindow()) {
-            return null;
-        }
-    
-        // Only handle the event if the source part is acceptable to the particular PartStack
-        IDropTarget target = null;
-        if (folder.allowsDrop(sourcePart)) {
-	        target = folder.getDropTarget(draggedObject, position);
-	        
-	        if (target == null) {
-		        Rectangle displayBounds = DragUtil.getDisplayBounds(folder.getControl());
-		        if (displayBounds.contains(position)) {
-		            target = folder.createDropTarget(sourcePart, new StackDropResult(displayBounds, null));
-		        } else {
-		            return null;
-		        }
-	        }
-        }
-        
-        return target;
-    }
-    
-    /**
-     * Answer a list of the view panes.
-     */
-    private void collectViewPanes(List result, LayoutPart[] parts) {
-        for (int i = 0, length = parts.length; i < length; i++) {
-            LayoutPart part = parts[i];
-            if (part instanceof ViewPane) {
-                result.add(part);
-            }
-        }
-    }
-
-    /**
-     * This method will be called to initialize the given Shell's layout
-     */
-    protected void configureShell(Shell shell) {
-        updateTitle();
-        shell.addListener(SWT.Resize, resizeListener);
-        shell.addListener(SWT.Activate, activationListener);
-        shell.addListener(SWT.Deactivate, activationListener);
-
-        // Register this detached view as a window (for key bindings).
-		final IContextService contextService = (IContextService) getWorkbenchPage()
-				.getWorkbenchWindow().getWorkbench().getService(IContextService.class);
-        contextService.registerShell(shell,
-                IContextService.TYPE_WINDOW);
-
-        page.getWorkbenchWindow().getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.DETACHED_WINDOW);
-    }
-
-    /**
-     * Override this method to create the widget tree that is used as the window's contents.
-     */
-    protected Control createContents(Composite parent) {
-        // Create the tab folder.
-        folder.createControl(parent);
-
-        // Reparent each view in the tab folder.
-        Vector detachedChildren = new Vector();
-        collectViewPanes(detachedChildren, getChildren());
-        Enumeration itr = detachedChildren.elements();
-        while (itr.hasMoreElements()) {
-            LayoutPart part = (LayoutPart) itr.nextElement();
-            part.reparent(parent);
-        }
-        
-        if (folder.getPresentation() instanceof TabbedStackPresentation) {
-            TabbedStackPresentation stack = (TabbedStackPresentation) folder.getPresentation();
-            AbstractTabFolder tabFolder = stack.getTabFolder();
-            tabFolder.addListener(new TabFolderListener() {
-                public void handleEvent(TabFolderEvent e) {
-                    switch (e.type) {
-                    case TabFolderEvent.EVENT_CLOSE: {
-                        updateMinimumSize();
-                        break;
-                    }
-                    case TabFolderEvent.EVENT_PREFERRED_SIZE: {
-                        updateMinimumSize();
-                        break;
-                    }
-                    }
-                }
-            });
-        }
-
-        // Return tab folder control.
-        return folder.getControl();
-    }
-
-    public LayoutPart[] getChildren() {
-        return folder.getChildren();
-    }
-
-    public WorkbenchPage getWorkbenchPage() {
-        return this.page;
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public void restoreState(IMemento memento) {
-        // Read the bounds.
-        Integer bigInt;
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_X);
-        int x = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_Y);
-        int y = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_WIDTH);
-        int width = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_HEIGHT);
-        int height = bigInt.intValue();
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_FLOAT);
-
-        // Set the bounds.
-        bounds = new Rectangle(x, y, width, height);
-        if (getShell() != null) {
-            getShell().setBounds(bounds);
-        }
-        
-        // Create the folder.
-        IMemento childMem = memento.getChild(IWorkbenchConstants.TAG_FOLDER);
-        if (childMem != null) {
-			folder.restoreState(childMem);
-		}
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public void saveState(IMemento memento) {
-        if (getShell() != null) {
-            bounds = getShell().getBounds();
-        }
-
-        // Save the bounds.
-        memento.putInteger(IWorkbenchConstants.TAG_X, bounds.x);
-        memento.putInteger(IWorkbenchConstants.TAG_Y, bounds.y);
-        memento.putInteger(IWorkbenchConstants.TAG_WIDTH, bounds.width);
-        memento.putInteger(IWorkbenchConstants.TAG_HEIGHT, bounds.height);
-
-        // Save the views.	
-        IMemento childMem = memento.createChild(IWorkbenchConstants.TAG_FOLDER);
-        folder.saveState(childMem);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.IWorkbenchDragDropPart#getControl()
-     */
-    public Control getControl() {
-        return folder.getControl();
-    }
-    
-    /**
-     * Opens the detached window.
-     */
-	public int open() { 
-		 
-		if (getShell() == null) {
-			create();
-		} 
-
-		Rectangle bounds = getShell().getBounds(); 
-        getShell().setVisible(true);
-		 
-		if (!bounds.equals(getShell().getBounds())) { 
-			getShell().setBounds(bounds); 
-		} 
-		 
-		return Window.OK; 
-	} 
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DirtyPerspectiveMarker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DirtyPerspectiveMarker.java
deleted file mode 100644
index d8881b9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DirtyPerspectiveMarker.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * @since 3.1
- */
-public class DirtyPerspectiveMarker {
-	/**
-	 * @param id
-	 */
-	public DirtyPerspectiveMarker(String id) {
-		perspectiveId = id;
-	}
-
-	public String perspectiveId;
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		return perspectiveId.hashCode();
-	}
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object o) {
-		if (o instanceof DirtyPerspectiveMarker) {
-			return perspectiveId
-					.equals(((DirtyPerspectiveMarker) o).perspectiveId);
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragCursors.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragCursors.java
deleted file mode 100644
index ce7061f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragCursors.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Provides the set of cursors used for drag-and-drop.
- */
-public class DragCursors {
-    public static final int INVALID = 0;
-
-    public static final int LEFT = 1;
-
-    public static final int RIGHT = 2;
-
-    public static final int TOP = 3;
-
-    public static final int BOTTOM = 4;
-
-    public static final int CENTER = 5;
-
-    public static final int OFFSCREEN = 6;
-
-    public static final int FASTVIEW = 7;
-
-    private final static Cursor cursors[] = new Cursor[8];
-
-    public static int positionToDragCursor(int swtPositionConstant) {
-        switch (swtPositionConstant) {
-        case SWT.LEFT:
-            return LEFT;
-        case SWT.RIGHT:
-            return RIGHT;
-        case SWT.TOP:
-            return TOP;
-        case SWT.BOTTOM:
-            return BOTTOM;
-        case SWT.CENTER:
-            return CENTER;
-        }
-
-        return INVALID;
-    }
-
-    /**
-     * Converts a drag cursor (LEFT, RIGHT, TOP, BOTTOM, CENTER) into an SWT constant
-     * (SWT.LEFT, SWT.RIGHT, SWT.TOP, SWT.BOTTOM, SWT.CENTER)
-     * 
-     * @param dragCursorId
-     * @return an SWT.* constant
-     */
-    public static int dragCursorToSwtConstant(int dragCursorId) {
-        switch (dragCursorId) {
-        case LEFT:
-            return SWT.LEFT;
-        case RIGHT:
-            return SWT.RIGHT;
-        case TOP:
-            return SWT.TOP;
-        case BOTTOM:
-            return SWT.BOTTOM;
-        case CENTER:
-            return SWT.CENTER;
-        }
-
-        return SWT.DEFAULT;
-    }
-
-    /**
-     * Return the cursor for a drop scenario, as identified by code.
-     * Code must be one of INVALID, LEFT, RIGHT, TOP, etc.
-     * If the code is not found default to INVALID.
-     */
-    public static Cursor getCursor(int code) {
-        Display display = Display.getCurrent();
-        if (cursors[code] == null) {
-            ImageDescriptor source = null;
-            ImageDescriptor mask = null;
-            switch (code) {
-            case LEFT:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_LEFT_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_LEFT_MASK);
-                cursors[LEFT] = new Cursor(display, source.getImageData(), mask
-                        .getImageData(), 16, 16);
-                break;
-            case RIGHT:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_RIGHT_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_RIGHT_MASK);
-                cursors[RIGHT] = new Cursor(display, source.getImageData(),
-                        mask.getImageData(), 16, 16);
-                break;
-            case TOP:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOP_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOP_MASK);
-                cursors[TOP] = new Cursor(display, source.getImageData(), mask
-                        .getImageData(), 16, 16);
-                break;
-            case BOTTOM:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_BOTTOM_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_BOTTOM_MASK);
-                cursors[BOTTOM] = new Cursor(display, source.getImageData(),
-                        mask.getImageData(), 16, 16);
-                break;
-            case CENTER:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_STACK_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_STACK_MASK);
-                cursors[CENTER] = new Cursor(display, source.getImageData(),
-                        mask.getImageData(), 16, 16);
-                break;
-            case OFFSCREEN:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_OFFSCREEN_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_OFFSCREEN_MASK);
-                cursors[OFFSCREEN] = new Cursor(display, source.getImageData(),
-                        mask.getImageData(), 16, 16);
-                break;
-            case FASTVIEW:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOFASTVIEW_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOFASTVIEW_MASK);
-                cursors[FASTVIEW] = new Cursor(Display.getCurrent(), source
-                        .getImageData(), mask.getImageData(), 16, 16);
-            default:
-            case INVALID:
-                source = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_INVALID_SOURCE);
-                mask = WorkbenchImages
-                        .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJS_DND_INVALID_MASK);
-                cursors[INVALID] = new Cursor(display, source.getImageData(),
-                        mask.getImageData(), 16, 16);
-                break;
-            }
-        }
-        return cursors[code];
-    }
-
-    /**
-     * Disposes all drag-and-drop cursors.
-     */
-    public static void dispose() {
-        for (int idx = 0; idx < cursors.length; idx++) {
-            cursors[idx].dispose();
-            cursors[idx] = null;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragHandle.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragHandle.java
deleted file mode 100644
index 64ebf3a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/DragHandle.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-public class DragHandle extends Composite implements PaintListener {
-    
-    Cursor dragCursor;
-    Image handleImage;
-    ImageDescriptor descriptor;
-    private boolean isHorizontal;
-
-    private static int margin = 2;
-    
-public DragHandle(Composite parent) {
-    super(parent, SWT.NONE);
-    
-    dragCursor = new Cursor(parent.getDisplay(),
-            SWT.CURSOR_SIZEALL);
-    
-    addPaintListener(this);
-    
-    descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(WorkbenchPlugin.PI_WORKBENCH, "icons/misc/handle.gif");  //$NON-NLS-1$
-    
-    handleImage = new Image(parent.getDisplay(), 4, 4);
-    GC context = new GC(handleImage);
-    context.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
-    context.drawPoint(0,0);
-    context.drawPoint(2,0);
-    context.drawPoint(3,0);
-    context.drawPoint(3,1);
-    context.drawPoint(0,2);
-    context.drawPoint(3,2);
-    context.drawPoint(0,3);
-    context.drawPoint(1,3);
-    context.drawPoint(2,3);
-    context.drawPoint(3,3);
-    
-    context.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));
-    context.drawPoint(1,0);
-    context.drawPoint(0,1);
-    
-    context.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
-    context.drawPoint(1,1);
-    
-    context.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW));
-    context.drawPoint(1,2);
-    context.drawPoint(2,1);
-    context.drawPoint(2,2);
-    
-    context.dispose();
-    
-    setCursor(dragCursor);
-}
-
-public void paintControl(PaintEvent e) {
-    Point size = getSize();
-    
-    if (handleImage != null) {
-        Rectangle ibounds = handleImage.getBounds();
-        
-        
-        int x = ((size.x - 2 * margin) % ibounds.width) / 2 + margin;
-        int y = ((size.y - 2 * margin) % ibounds.height) / 2 + margin;
-
-        for (;;) {
-            e.gc.drawImage(handleImage, x, y);
-            if (isHorizontal) {
-                x += ibounds.width;
-                if (x + ibounds.width > size.x - margin) {
-					break;
-				}
-            } else {
-                y += ibounds.height;
-                if (y + ibounds.height > size.y - margin) {
-					break;
-				}
-            }
-        }
-    }
-}
-public Point computeSize(int wHint, int hHint, boolean changed) {
-    Point result = new Point(wHint, hHint);
-    
-    Rectangle ibounds = handleImage.getBounds();
-    
-    if (wHint == SWT.DEFAULT) {
-        result.x = ibounds.width + 2 * margin;
-    }
-    
-    if (hHint == SWT.DEFAULT) {
-        result.y = ibounds.height + 2 * margin;
-    }
-    
-    return result;
-}
-
-public void setHorizontal(boolean isHorizontal) {
-    this.isHorizontal = isHorizontal;
-}
-
-public void dispose() {
-    if (isDisposed()) {
-        return;
-    }
-    super.dispose();
-    dragCursor.dispose();
-    handleImage.dispose();
-    JFaceResources.getResources().destroyImage(descriptor);
-}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EarlyStartupRunnable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EarlyStartupRunnable.java
deleted file mode 100644
index 6d4afc2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EarlyStartupRunnable.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.IStartup;
-import org.osgi.framework.Bundle;
-
-/**
- * A utility class used to call #earlyStartup on the proper instance for a given
- * configuration element. There are a few steps to the process in order to
- * ensure compatibility with pre-3.0 plugins.
- * 
- * @since 3.0
- */
-public class EarlyStartupRunnable extends SafeRunnable {
-
-    private static final String EXTENSION_CLASS = "org.eclipse.core.runtime.IExtension"; //$NON-NLS-1$
-
-//    private static final String PLUGIN_DESC_CLASS = "org.eclipse.core.runtime.IPluginDescriptor"; //$NON-NLS-1$
-
-    private static final String GET_PLUGIN_METHOD = "getPlugin"; //$NON-NLS-1$
-
-    private static final String GET_DESC_METHOD = "getDeclaringPluginDescriptor"; //$NON-NLS-1$
-
-    private static final String PI_RUNTIME_COMPATIBILITY = "org.eclipse.core.runtime.compatibility"; //$NON-NLS-1$ 
-
-    private IExtension extension;
-
-    /**
-     * @param extension
-     *            must not be null
-     */
-    public EarlyStartupRunnable(IExtension extension) {
-        this.extension = extension;
-    }
-
-    public void run() throws Exception {
-        IConfigurationElement[] configElements = extension
-                .getConfigurationElements();
-
-        // look for the startup tag in each element and run the extension
-        boolean foundAtLeastOne = false;
-        for (int i = 0; i < configElements.length; ++i) {
-            IConfigurationElement element = configElements[i];
-            if (element != null
-                    && element.getName()
-                            .equals(IWorkbenchConstants.TAG_STARTUP)) {
-                runEarlyStartup(getExecutableExtension(element));
-                foundAtLeastOne = true;
-            }
-        }
-
-        // if no startup tags were found, then try the plugin object
-        if (!foundAtLeastOne) {
-			runEarlyStartup(getPluginForCompatibility());
-		}
-    }
-
-    public void handleException(Throwable exception) {
-        IStatus status = new Status(IStatus.ERROR, extension.getNamespace(), 0,
-                "Unable to execute early startup code for an extension", //$NON-NLS-1$
-                exception);
-        WorkbenchPlugin.log("Unhandled Exception", status); //$NON-NLS-1$
-    }
-
-    private void runEarlyStartup(Object executableExtension) {
-        if (executableExtension != null
-                && executableExtension instanceof IStartup) {
-			((IStartup) executableExtension).earlyStartup();
-		} else {
-            IStatus status = new Status(IStatus.ERROR,
-                    extension.getNamespace(), 0,
-                    "startup class must implement org.eclipse.ui.IStartup", //$NON-NLS-1$
-                    null);
-            WorkbenchPlugin.log("Bad extension specification", status); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * In 3.0 the class attribute is a mandatory element of the startup element.
-     * However, 2.1 plugins should still be able to run if the compatibility
-     * bundle is loaded.
-     * 
-     * @return an executable extension for this startup element or null if an
-     *         extension (or plugin) could not be found
-     */
-    private Object getExecutableExtension(IConfigurationElement element)
-            throws CoreException {
-
-        String classname = element.getAttribute(IWorkbenchConstants.TAG_CLASS);
-
-        // if class attribute is absent then try to use the compatibility
-        // bundle to return the plugin object
-        if (classname == null || classname.length() <= 0) {
-			return getPluginForCompatibility();
-		}
-
-        // otherwise the 3.0 runtime should be able to do it
-        return WorkbenchPlugin.createExtension(element,
-                IWorkbenchConstants.TAG_CLASS);
-    }
-
-    /**
-     * If the compatiblity bundle is loaded, then return the plugin object for
-     * the extension on this runnable. Return null if the compatibility bundle
-     * is not loaded or the plugin object cannot be created.
-     */
-    private Object getPluginForCompatibility() {
-        // make sure the compatibility bundle is available
-        Bundle compatBundle = Platform.getBundle(PI_RUNTIME_COMPATIBILITY);
-        if (compatBundle == null) {
-			return null;
-		}
-
-        // use reflection to try to access the plugin object
-        try {
-            // IPluginDescriptor pluginDesc =
-            // 		extension.getDeclaringPluginDescriptor();
-            Class extensionClass = compatBundle.loadClass(EXTENSION_CLASS);
-            Method getDescMethod = extensionClass.getDeclaredMethod(
-                    GET_DESC_METHOD, new Class[0]);
-            Object pluginDesc = getDescMethod.invoke(extension, new Object[0]);
-            if (pluginDesc == null) {
-				return null;
-			}
-
-            // Plugin plugin = pluginDesc.getPlugin();
-            Class pluginDescClass = pluginDesc.getClass();
-            Method getPluginMethod = pluginDescClass.getDeclaredMethod(
-                    GET_PLUGIN_METHOD, new Class[0]);
-            return getPluginMethod.invoke(pluginDesc, new Object[0]);
-        } catch (ClassNotFoundException e) {
-            handleException(e);
-        } catch (IllegalAccessException e) {
-            handleException(e);
-        } catch (InvocationTargetException e) {
-            handleException(e);
-        } catch (NoSuchMethodException e) {
-            handleException(e);
-        }
-
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java
deleted file mode 100644
index c60f1dc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBars.java
+++ /dev/null
@@ -1,489 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.IContributionManagerOverrides;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.SubContributionManager;
-import org.eclipse.jface.action.SubMenuManager;
-import org.eclipse.jface.action.SubStatusLineManager;
-import org.eclipse.jface.action.SubToolBarManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.ui.IActionBars2;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.SubActionBars2;
-import org.eclipse.ui.actions.RetargetAction;
-import org.eclipse.ui.internal.expressions.LegacyEditorActionBarExpression;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.provisional.presentations.IActionBarPresentationFactory;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * The action bars for an editor.
- */
-public class EditorActionBars extends SubActionBars2 {
-
-	private class Overrides implements IContributionManagerOverrides {
-
-		public Integer getAccelerator(IContributionItem item) {
-			return null;
-		}
-
-		public String getAcceleratorText(IContributionItem item) {
-			return null;
-		}
-
-		public Boolean getEnabled(IContributionItem item) {
-			if (((item instanceof ActionContributionItem) && (((ActionContributionItem) item)
-					.getAction() instanceof RetargetAction))
-					|| enabledAllowed) {
-				return null;
-			} else {
-				return Boolean.FALSE;
-			}
-		}
-
-		public String getText(IContributionItem item) {
-			return null;
-		}
-	}
-
-	/**
-	 * A switch controlling verbose debugging options surrounding the disposal
-	 * of tool bar contribution items. There have been problems in the past with
-	 * reusing disposed items, and leaking memory by failing to drop references
-	 * to disposed items.
-	 */
-	private static final boolean DEBUG_TOOLBAR_DISPOSAL = Policy.DEBUG_TOOLBAR_DISPOSAL;
-
-	private IToolBarManager coolItemToolBarMgr = null;
-
-	private IEditorActionBarContributor editorContributor;
-
-	private boolean enabledAllowed = false;
-
-	private IEditorActionBarContributor extensionContributor;
-
-	private int refCount;
-
-	private IToolBarContributionItem toolBarContributionItem = null;
-
-	private String type;
-	
-	private IActionBarPresentationFactory actionBarPresentation;
-
-
-	/**
-	 * Constructs the EditorActionBars for an editor.
-	 */
-	public EditorActionBars(WorkbenchPage page,
-			final IServiceLocator serviceLocator, String type) {
-		super((IActionBars2)page.getActionBars(), serviceLocator);
-		this.type = type;
-		this.actionBarPresentation = ((WorkbenchWindow) page
-				.getWorkbenchWindow()).getActionBarPresentationFactory();
-	}
-
-	/**
-	 * Activate the contributions.
-	 */
-	public void activate(boolean forceVisibility) {
-		setActive(true, forceVisibility);
-	}
-
-	/**
-	 * Add one ref to the bars.
-	 */
-	public void addRef() {
-		++refCount;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on SubActionBars.
-	 */
-	protected SubMenuManager createSubMenuManager(IMenuManager parent) {
-		return new EditorMenuManager(parent);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on SubActionBars.
-	 */
-	protected SubToolBarManager createSubToolBarManager(IToolBarManager parent) {
-		// return null, editor actions are managed by CoolItemToolBarManagers
-		return null;
-	}
-
-	/**
-	 * Deactivate the contributions.
-	 */
-	public void deactivate(boolean forceVisibility) {
-		setActive(false, forceVisibility);
-	}
-
-	/**
-	 * Dispose the contributions.
-	 */
-	public void dispose() {
-		super.dispose();
-		if (editorContributor != null) {
-			editorContributor.dispose();
-		}
-		if (extensionContributor != null) {
-			extensionContributor.dispose();
-		}
-
-		/*
-		 * Dispose of the contribution item, but also make sure that no one else
-		 * is holding on to it. In this case, go through the SubCoolBarManager
-		 * to its parent (the real CoolBarManager), and replace the reference
-		 * with a placeholder.
-		 */
-		if (toolBarContributionItem != null) {
-			// Create a placeholder and place it in the cool bar manager.
-			ICoolBarManager coolBarManager = getCoolBarManager();
-			if (coolBarManager instanceof SubContributionManager) {
-				SubContributionManager subManager = (SubContributionManager) coolBarManager;
-				IContributionManager manager = subManager.getParent();
-				if (manager instanceof ContributionManager) {
-					final IContributionItem replacementItem = new PlaceholderContributionItem(
-							toolBarContributionItem);
-					boolean succeeded = ((ContributionManager) manager)
-							.replaceItem(replacementItem.getId(),
-									replacementItem);
-					if (!succeeded && DEBUG_TOOLBAR_DISPOSAL) {
-						System.out
-								.println("FAILURE WHILE DISPOSING EditorActionBars"); //$NON-NLS-1$
-						System.out
-								.println("Could not replace " + replacementItem.getId() + " in the contribution manager."); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-				} else if (DEBUG_TOOLBAR_DISPOSAL) {
-					System.out
-							.println("FAILURE WHILE DISPOSING EditorActionBars"); //$NON-NLS-1$
-					System.out
-							.println("The manager was not a ContributionManager."); //$NON-NLS-1$
-					System.out
-							.println("It was a " + manager.getClass().getName()); //$NON-NLS-1$
-				}
-			} else if (DEBUG_TOOLBAR_DISPOSAL) {
-				System.out.println("FAILURE WHILE DISPOSING EditorActionBars"); //$NON-NLS-1$
-				System.out
-						.println("The coolBarManager was not a SubContributionManager"); //$NON-NLS-1$
-				System.out
-						.println("It was a " + coolBarManager.getClass().getName()); //$NON-NLS-1$
-			}
-
-			// Dispose of the replaced item.
-			toolBarContributionItem.dispose();
-		}
-		toolBarContributionItem = null;
-		// Remove actions
-		if (coolItemToolBarMgr != null) {
-			coolItemToolBarMgr.removeAll();
-		}
-		coolItemToolBarMgr = null;
-		editorHandlerExpression = null;
-	}
-
-	/**
-	 * Gets the editor contributor
-	 */
-	public IEditorActionBarContributor getEditorContributor() {
-		return editorContributor;
-	}
-
-	/**
-	 * Returns the editor type.
-	 */
-	public String getEditorType() {
-		return type;
-	}
-
-	/**
-	 * Gets the extension contributor
-	 */
-	public IEditorActionBarContributor getExtensionContributor() {
-		return extensionContributor;
-	}
-
-	/**
-	 * Returns the reference count.
-	 */
-	public int getRef() {
-		return refCount;
-	}
-
-	/**
-	 * Returns the tool bar manager. If items are added or removed from the
-	 * manager be sure to call <code>updateActionBars</code>. Overridden to
-	 * support CoolBars.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager getToolBarManager() {
-
-		// by pass the sub coolBar and use the real cool bar.
-		ICoolBarManager coolBarManager = getCastedParent().getCoolBarManager();
-		if (coolBarManager == null) {
-			return null;
-		}
-
-		// add the editor group if the app did not add it already,
-		// otherwise the references to it below will fail
-		if (coolBarManager.find(IWorkbenchActionConstants.GROUP_EDITOR) == null) {
-			coolBarManager.add(new GroupMarker(
-					IWorkbenchActionConstants.GROUP_EDITOR));
-		}
-		if (toolBarContributionItem == null) {
-			IContributionItem foundItem = coolBarManager.find(type);
-			if ((foundItem instanceof IToolBarContributionItem)) {
-				toolBarContributionItem = (IToolBarContributionItem) foundItem;
-				coolItemToolBarMgr = toolBarContributionItem.getToolBarManager();
-				if (coolItemToolBarMgr == null) {
-					coolItemToolBarMgr = actionBarPresentation.createToolBarManager();
-					toolBarContributionItem = actionBarPresentation.createToolBarContributionItem(
-							coolItemToolBarMgr, type);
-					// Add editor item to group
-					coolBarManager.prependToGroup(
-							IWorkbenchActionConstants.GROUP_EDITOR,
-							toolBarContributionItem);
-				}
-			} else {
-				coolItemToolBarMgr = actionBarPresentation.createToolBarManager();
-				if ((coolBarManager instanceof ContributionManager)
-						&& (foundItem instanceof PlaceholderContributionItem)) {
-					PlaceholderContributionItem placeholder = (PlaceholderContributionItem) foundItem;
-					toolBarContributionItem = createToolBarContributionItem(coolItemToolBarMgr, placeholder);
-					// Restore from a placeholder
-					((ContributionManager) coolBarManager).replaceItem(type,
-							toolBarContributionItem);
-				} else {
-					toolBarContributionItem = actionBarPresentation.createToolBarContributionItem(
-							coolItemToolBarMgr, type);
-					// Add editor item to group
-					coolBarManager.prependToGroup(
-							IWorkbenchActionConstants.GROUP_EDITOR,
-							toolBarContributionItem);
-				}
-			}
-			((ContributionManager)coolItemToolBarMgr).setOverrides(new Overrides());
-			toolBarContributionItem.setVisible(getActive());
-			coolItemToolBarMgr.markDirty();
-		}
-
-		return coolItemToolBarMgr;
-	}
-	
-    /*
-     * Creates a new tool bar contribution item on the given manager -- using
-     * the stored data to initialize some of its properties.
-     */
-    IToolBarContributionItem createToolBarContributionItem(
-			final IToolBarManager manager, PlaceholderContributionItem item) {
-		IToolBarContributionItem toolBarContributionItem = actionBarPresentation
-				.createToolBarContributionItem(manager, item.getId());
-		toolBarContributionItem.setCurrentHeight(item.getHeight());
-		toolBarContributionItem.setCurrentWidth(item.getWidth());
-		toolBarContributionItem.setMinimumItemsToShow(item.getMinimumItemsToShow());
-		toolBarContributionItem.setUseChevron(item.getUseChevron());
-		return toolBarContributionItem;
-	}
-
-	/**
-	 * Returns whether the contribution list is visible. If the visibility is
-	 * <code>true</code> then each item within the manager appears within the
-	 * parent manager. Otherwise, the items are not visible.
-	 * 
-	 * @return <code>true</code> if the manager is visible
-	 */
-	private boolean isVisible() {
-		if (toolBarContributionItem != null) {
-			return toolBarContributionItem.isVisible();
-		}
-		return false;
-	}
-
-	/**
-	 * Sets the target part for the action bars. For views this is ignored
-	 * because each view has its own action vector. For editors this is
-	 * important because the action vector is shared by editors of the same
-	 * type.
-	 */
-	public void partChanged(IWorkbenchPart part) {
-		super.partChanged(part);
-		if (part instanceof IEditorPart) {
-			IEditorPart editor = (IEditorPart) part;
-			if (editorContributor != null) {
-				editorContributor.setActiveEditor(editor);
-			}
-			if (extensionContributor != null) {
-				extensionContributor.setActiveEditor(editor);
-			}
-		}
-	}
-
-	/**
-	 * Remove one ref to the bars.
-	 */
-	public void removeRef() {
-		--refCount;
-	}
-
-	/**
-	 * Activate / Deactivate the contributions.
-	 * 
-	 * Workaround for flashing when editor contributes many menu/tool
-	 * contributions. In this case, the force visibility flag determines if the
-	 * contributions should be actually made visible/hidden or just change the
-	 * enablement state.
-	 */
-	private void setActive(boolean set, boolean forceVisibility) {
-		basicSetActive(set);
-		if (isSubMenuManagerCreated()) {
-			((EditorMenuManager) getMenuManager()).setVisible(set,
-					forceVisibility);
-		}
-
-		if (isSubStatusLineManagerCreated()) {
-			((SubStatusLineManager) getStatusLineManager()).setVisible(set);
-		}
-
-		setVisible(set, forceVisibility);
-	}
-
-	/**
-	 * Sets the editor contributor
-	 */
-	public void setEditorContributor(IEditorActionBarContributor c) {
-		editorContributor = c;
-	}
-
-	/**
-	 * Sets the enablement ability of all the items contributed by the editor.
-	 * 
-	 * @param enabledAllowed
-	 *            <code>true</code> if the items may enable
-	 * @since 2.0
-	 */
-	private void setEnabledAllowed(boolean enabledAllowed) {
-		if (this.enabledAllowed == enabledAllowed) {
-			return;
-		}
-		this.enabledAllowed = enabledAllowed;
-		if (coolItemToolBarMgr != null) {
-			IContributionItem[] items = coolItemToolBarMgr.getItems();
-			for (int i = 0; i < items.length; i++) {
-				IContributionItem item = items[i];
-				item.update(IContributionManagerOverrides.P_ENABLED);
-			}
-		}
-	}
-
-	/**
-	 * Sets the extension contributor
-	 */
-	public void setExtensionContributor(IEditorActionBarContributor c) {
-		extensionContributor = c;
-	}
-
-	/**
-	 * Sets the visibility of the manager. If the visibility is
-	 * <code>true</code> then each item within the manager appears within the
-	 * parent manager. Otherwise, the items are not visible.
-	 * 
-	 * @param visible
-	 *            the new visibility
-	 */
-	private void setVisible(boolean visible) {
-		if (toolBarContributionItem != null) {
-			toolBarContributionItem.setVisible(visible);
-			if (toolBarContributionItem.getParent() != null) {
-				toolBarContributionItem.getParent().markDirty();
-			}
-		}
-	}
-
-	/**
-	 * Sets the visibility of the manager. If the visibility is
-	 * <code>true</code> then each item within the manager appears within the
-	 * parent manager. Otherwise, the items are not visible if force visibility
-	 * is <code>true</code>, or grayed out if force visibility is
-	 * <code>false</code>
-	 * <p>
-	 * This is a workaround for the layout flashing when editors contribute
-	 * large amounts of items.
-	 * </p>
-	 * 
-	 * @param visible
-	 *            the new visibility
-	 * @param forceVisibility
-	 *            <code>true</code> to change the visibility or
-	 *            <code>false</code> to change just the enablement state. This
-	 *            parameter is ignored if visible is <code>true</code>.
-	 */
-	private void setVisible(boolean visible, boolean forceVisibility) {
-		if (visible) {
-			setEnabledAllowed(true);
-			if (!isVisible()) {
-				setVisible(true);
-			}
-		} else {
-			if (forceVisibility) {
-				// Remove the editor tool bar items
-				setVisible(false);
-			} else {
-				// Disabled the tool bar items.
-				setEnabledAllowed(false);
-			}
-		}
-
-		ICoolBarManager coolBarManager = getCastedParent().getCoolBarManager();
-		if ((coolItemToolBarMgr != null) && (coolBarManager != null)) {
-			IContributionItem[] items = coolItemToolBarMgr.getItems();
-			for (int i = 0; i < items.length; i++) {
-				IContributionItem item = items[i];
-				item.setVisible(visible || !forceVisibility);
-				coolItemToolBarMgr.markDirty();
-				if (!coolBarManager.isDirty()) {
-					coolBarManager.markDirty();
-				}
-			}
-			// Update the manager
-			coolItemToolBarMgr.update(false);
-			if (toolBarContributionItem != null) {
-				toolBarContributionItem.setVisible(visible || !forceVisibility);
-			}
-		}
-	}
-
-	private LegacyEditorActionBarExpression editorHandlerExpression = null;
-	
-	/**
-	 * Returns the expression used for action handler activation.
-	 * @return the expression used for action handler activation.
-	 */
-	public Expression getHandlerExpression() {
-		if (editorHandlerExpression == null) {
-			editorHandlerExpression = new LegacyEditorActionBarExpression(type);
-		}
-		return editorHandlerExpression;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBuilder.java
deleted file mode 100644
index 42130b1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorActionBuilder.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This class reads the registry for extensions that plug into
- * 'editorActions' extension point.
- */
-public class EditorActionBuilder extends PluginActionBuilder {
-    private static final String TAG_CONTRIBUTION_TYPE = "editorContribution"; //$NON-NLS-1$
-
-    /**
-     * The constructor.
-     */
-    public EditorActionBuilder() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected ActionDescriptor createActionDescriptor(
-            IConfigurationElement element) {
-        return new ActionDescriptor(element, ActionDescriptor.T_EDITOR);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected BasicContribution createContribution() {
-        return new EditorContribution();
-    }
-
-    /**
-     * Reads and apply all external contributions for this editor's ID
-     * registered in 'editorActions' extension point.
-     */
-    public IEditorActionBarContributor readActionExtensions(
-            IEditorDescriptor desc) {
-        ExternalContributor ext = null;
-        readContributions(desc.getId(), TAG_CONTRIBUTION_TYPE,
-                IWorkbenchRegistryConstants.PL_EDITOR_ACTIONS);
-        if (cache != null) {
-            ext = new ExternalContributor(cache);
-            cache = null;
-        }
-        return ext;
-    }
-
-    /**
-     * Helper class to collect the menus and actions defined within a
-     * contribution element.
-     */
-    private static class EditorContribution extends BasicContribution {
-        public void dispose() {
-			disposeActions();
-			super.dispose();
-        }
-
-        public void editorChanged(IEditorPart editor) {
-            if (actions != null) {
-                for (int i = 0; i < actions.size(); i++) {
-                    ActionDescriptor ad = (ActionDescriptor) actions.get(i);
-                    EditorPluginAction action = (EditorPluginAction) ad
-                            .getAction();
-                    action.editorChanged(editor);
-                }
-            }
-        }
-    }
-
-    /**
-     * Helper class that will populate the menu and toobar with the external
-     * editor contributions.
-     */
-    public static class ExternalContributor implements
-            IEditorActionBarContributor {
-        private ArrayList cache;
-
-        public ExternalContributor(ArrayList cache) {
-            this.cache = cache;
-        }
-
-        public void dispose() {
-            for (int i = 0; i < cache.size(); i++) {
-                ((EditorContribution) cache.get(i)).dispose();
-            }
-        }
-
-        public ActionDescriptor[] getExtendedActions() {
-            ArrayList results = new ArrayList();
-            for (int i = 0; i < cache.size(); i++) {
-                EditorContribution ec = (EditorContribution) cache.get(i);
-                if (ec.actions != null) {
-					results.addAll(ec.actions);
-				}
-            }
-            return (ActionDescriptor[]) results
-                    .toArray(new ActionDescriptor[results.size()]);
-        }
-
-        public void init(IActionBars bars, IWorkbenchPage page) {
-            for (int i = 0; i < cache.size(); i++) {
-                ((EditorContribution) cache.get(i)).contribute(bars
-                        .getMenuManager(), false, bars.getToolBarManager(),
-                        true);
-            }
-        }
-
-        public void setActiveEditor(IEditorPart editor) {
-            for (int i = 0; i < cache.size(); i++) {
-                ((EditorContribution) cache.get(i)).editorChanged(editor);
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaHelper.java
deleted file mode 100644
index cf38445..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaHelper.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.part.MultiEditor;
-
-/**
- * EditorAreaHelper is a wrapper for PartTabworkbook.
- */
-public class EditorAreaHelper {
-
-    //private ArrayList editorTable = new ArrayList(4);
-
-    private EditorSashContainer editorArea;
-
-    /**
-     * Creates a new EditorAreaHelper.
-     */
-    public EditorAreaHelper(WorkbenchPage page) {
-        this.editorArea = new EditorSashContainer(IPageLayout.ID_EDITOR_AREA,
-                page, page.getClientComposite());
-
-        this.editorArea.createControl(page.getClientComposite());
-        this.editorArea.setActive(true);
-    }
-
-    /**
-	 * Displays a list of open editors
-	 */
-    public void displayEditorList() {
-        EditorStack activeWorkbook = editorArea.getActiveWorkbook();
-        if (activeWorkbook != null) {
-            activeWorkbook.showPartList();
-        }
-    }
-
-    /**
-     * Closes an editor.   
-     *
-     * @param part the editor to close
-     */
-    public void closeEditor(IEditorReference ref) {
-        EditorPane pane = (EditorPane) ((WorkbenchPartReference) ref).getPane();
-        closeEditor(pane);
-    }
-
-    /**
-     * Closes an editor.   
-     *
-     * @param part the editor to close
-     */
-    public void closeEditor(IEditorPart part) {
-        EditorPane pane = (EditorPane) ((PartSite) part.getEditorSite())
-                .getPane();
-        closeEditor(pane);
-    }
-
-    /**
-     * Closes an editor.   
-     *
-     * @param part the editor to close
-     */
-    private void closeEditor(EditorPane pane) {
-        if (pane != null) {
-            if (!(pane instanceof MultiEditorInnerPane)) {
-				editorArea.removeEditor(pane);
-			}
-        }
-    }
-
-    /**
-     * Deref a given part.  Deconstruct its container as required.
-     * Do not remove drag listeners.
-     */
-    public static void derefPart(LayoutPart part) {
-
-        // Get vital part stats before reparenting.
-        ILayoutContainer oldContainer = part.getContainer();
-
-        // Reparent the part back to the main window
-        //part.reparent(editorArea.getParent());
-        // Update container.
-        if (oldContainer == null) {
-			return;
-		}
-        oldContainer.remove(part);
-        LayoutPart[] children = oldContainer.getChildren();
-        if (children == null || children.length == 0) {
-            // There are no more children in this container, so get rid of it
-            if (oldContainer instanceof LayoutPart) {
-                LayoutPart parent = (LayoutPart) oldContainer;
-                ILayoutContainer parentContainer = parent.getContainer();
-                if (parentContainer != null) {
-                    parentContainer.remove(parent);
-                    parent.dispose();
-                }
-            }
-        }
-    }
-
-    /**
-     * Dispose of the editor presentation. 
-     */
-    public void dispose() {
-        if (editorArea != null) {
-            editorArea.setActive(false);
-            editorArea.dispose();
-        }
-    }
-
-    /**
-     * @see IEditorPresentation
-     */
-    public String getActiveEditorWorkbookID() {
-        return editorArea.getActiveWorkbookID();
-    }
-
-    public EditorStack getActiveWorkbook() {
-        return editorArea.getActiveWorkbook();
-    }
-
-    /**
-     * Returns the editor area.
-     */
-    public LayoutPart getLayoutPart() {
-        return editorArea;
-    }
-
-    /**
-     * Returns the active editor in this perspective.  If the editors appear
-     * in a workbook this will be the visible editor.  If the editors are
-     * scattered around the workbench this will be the most recent editor
-     * to hold focus.
-     *
-     * @return the active editor, or <code>null</code> if no editor is active
-     */
-    public IEditorReference getVisibleEditor() {
-        EditorStack activeWorkbook = editorArea.getActiveWorkbook();
-        EditorPane pane = (EditorPane)activeWorkbook.getSelection();
-        if (pane != null) {
-            IEditorReference result = pane.getEditorReference();
-            IEditorPart editorPart = (IEditorPart) result.getPart(false);
-            if ((editorPart != null) && (editorPart instanceof MultiEditor)) {
-                editorPart = ((MultiEditor) editorPart).getActiveEditor();
-                EditorSite site = (EditorSite) editorPart.getSite();
-                result = (IEditorReference) site.getPartReference();
-            }
-            return result;
-        }
-        return null;
-    }
-
-    public void moveEditor(IEditorPart part, int position) {
-        /*EditorPane pane = (EditorPane)*/ ((EditorSite) part.getSite()).getPane();
-        //TODO commented this out during presentations works
-        //pane.getWorkbook().reorderTab(pane, position);
-    }
-
-
-
-    /**
-     * Main entry point for adding an editor. Adds the editor to the layout in the given
-     * stack, and notifies the workbench page when done.
-     * 
-     * @param ref editor to add
-     * @param workbookId workbook that will contain the editor (or null if the editor
-     * should be added to the default workbook)
-     */
-    public void addEditor(EditorReference ref, String workbookId) {
-        IEditorReference refs[] = editorArea.getPage().getEditorReferences();
-        for (int i = 0; i < refs.length; i++) {
-            if (ref == refs[i]) {
-				return;
-			}
-        }
-        
-        if (!(ref.getPane() instanceof MultiEditorInnerPane)) {
-            
-            EditorStack stack = null;
-            
-            if (workbookId != null) {
-                stack = getWorkbookFromID(workbookId);
-            }
-            
-            if (stack == null) {
-                stack = getActiveWorkbook();
-            }
-            
-            addToLayout((EditorPane)ref.getPane(), stack);
-        }
-        
-        editorArea.getPage().partAdded(ref);
-    }
-    
-    private void addToLayout(EditorPane pane, EditorStack stack) {
-        //EditorStack stack = editorArea.getActiveWorkbook();
-        pane.setWorkbook(stack);
-        
-        editorArea.addEditor(pane, stack);
-    }
-
-
-    /**
-     * @see IPersistablePart
-     */
-    public IStatus restoreState(IMemento memento) {
-        // Restore the editor area workbooks layout/relationship
-        return editorArea.restoreState(memento);
-    }
-
-    /**
-     * Restore the presentation
-     * @param areaMem
-     * @return
-     */
-    public IStatus restorePresentationState(IMemento areaMem) {
-        return editorArea.restorePresentationState(areaMem);
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public IStatus saveState(IMemento memento) {
-        // Save the editor area workbooks layout/relationship
-        return editorArea.saveState(memento);
-    }
-
-    /**
-     * @see IEditorPresentation
-     */
-    public void setActiveEditorWorkbookFromID(String id) {
-        editorArea.setActiveWorkbookFromID(id);
-    }
-
-    /**
-     * Brings an editor to the front and optionally gives it focus.
-     *
-     * @param part the editor to make visible
-     * @param setFocus whether to give the editor focus
-     * @return true if the visible editor was changed, false if not.
-     */
-    public boolean setVisibleEditor(IEditorReference ref, boolean setFocus) {
-        IEditorReference visibleEditor = getVisibleEditor();
-        if (ref != visibleEditor) {
-            IEditorPart part = (IEditorPart) ref.getPart(true);
-            EditorPane pane = null;
-            if (part != null) {
-				pane = (EditorPane) ((PartSite) part.getEditorSite()).getPane();
-			}
-            if (pane != null) {
-                if (pane instanceof MultiEditorInnerPane) {
-                    EditorPane parentPane = ((MultiEditorInnerPane) pane)
-                            .getParentPane();
-                    EditorStack activeWorkbook = parentPane.getWorkbook();
-                    PartPane activePane = activeWorkbook.getSelection();
-                    if (activePane != parentPane) {
-						parentPane.getWorkbook().setSelection(parentPane);
-					} else {
-						return false;
-					}
-                } else {
-                    pane.getWorkbook().setSelection(pane);
-                }
-                if (setFocus) {
-					part.setFocus();
-				}
-                return true;
-            }
-        }
-        return false;
-    }
-
-    
-    
-    /**
-     * Method getWorkbooks.
-     * @return ArrayList
-     */
-    public ArrayList getWorkbooks() {
-        return editorArea.getEditorWorkbooks();
-    }
-    
-    public IEditorReference[] getEditors() {
-        List result = new ArrayList();
-        List workbooks = editorArea.getEditorWorkbooks();
-        
-        for (Iterator iter = workbooks.iterator(); iter.hasNext();) {
-            PartStack stack = (PartStack) iter.next();
-            
-            LayoutPart[] children = stack.getChildren();
-            
-            for (int i = 0; i < children.length; i++) {
-                LayoutPart part = children[i];
-                
-                result.add(((PartPane)part).getPartReference());
-            }
-        }
-        
-        return (IEditorReference[]) result.toArray(new IEditorReference[result.size()]);
-    }
-
-    public EditorStack getWorkbookFromID(String workbookId) {
-        return editorArea.getWorkbookFromID(workbookId);
-    }
-
-    public void updateStackButtons() {
-    	editorArea.updateStackButtons();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java
deleted file mode 100644
index 20fb933..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorAreaTrimToolBar.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.internal.layout.TrimToolBarBase;
-
-public class EditorAreaTrimToolBar extends TrimToolBarBase {
-	private LayoutPart editorArea;
-	private boolean restoreOnUnzoom = false;
-	
-	// The orientation of the fast view pane when showing a view
-	private int paneOrientation;
-
-	public EditorAreaTrimToolBar(WorkbenchWindow wbw, LayoutPart editorArea) {
-		super(IPageLayout.ID_EDITOR_AREA, SWT.TOP, wbw);
-		
-		this.editorArea = editorArea;		
-		dock(SWT.TOP);
-	}
-	
-	/**
-	 * Put the stack back into the presentation
-	 */
-	protected void restoreToPresentation() {
-		EditorSashContainer esc = (EditorSashContainer)editorArea;
-		EditorStack curStack = esc.getUpperRightEditorStack(esc.getChildren());
-		curStack.setMinimized(false);
-	}
-
-	public void initToolBarManager(final ToolBarManager mgr) {
-		// Set up the ToolBar with a restore button
-		IContributionItem restoreContrib = new ContributionItem() {
-			public void fill(ToolBar parent, int index) {
-		        ToolItem restoreItem = new  ToolItem(mgr.getControl(), SWT.PUSH, index);        
-		        Image tbImage = WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_ETOOL_RESTORE_TRIMPART);
-		        restoreItem.setImage(tbImage);       
-		        String menuTip = WorkbenchMessages.StandardSystemToolbar_Restore;
-		        restoreItem.setToolTipText(menuTip);
-		        restoreItem.addSelectionListener(new SelectionListener() {
-					public void widgetDefaultSelected(SelectionEvent e) {
-						restoreToPresentation();
-					}
-					public void widgetSelected(SelectionEvent e) {
-						restoreToPresentation();
-					}
-		        });
-			}
-		};
-		mgr.add(restoreContrib);
-
-		// Set up the ToolBar with a button represing the Editor Area
-		IContributionItem eaContrib = new ContributionItem() {
-			public void fill(ToolBar parent, int index) {
-		        ToolItem editorAreaItem = new  ToolItem(mgr.getControl(), SWT.PUSH, index);        
-		        Image tbImage = WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_ETOOL_EDITOR_TRIMPART);
-		        editorAreaItem.setImage(tbImage);       
-		        String menuTip = WorkbenchMessages.EditorArea_Tooltip;
-		        editorAreaItem.setToolTipText(menuTip);
-		        editorAreaItem.addSelectionListener(new SelectionListener() {
-					public void widgetDefaultSelected(SelectionEvent e) {
-						restoreToPresentation();
-					}
-					public void widgetSelected(SelectionEvent e) {
-						restoreToPresentation();
-					}
-		        });
-			}
-		};
-		mgr.add(eaContrib);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.TrimToolBarBase#hookControl(org.eclipse.swt.widgets.ToolBar)
-	 */
-	public void hookControl(ToolBarManager mgr) {
-		// Hook a drop Listener to the control
-		// NOTE: the drop target is self-managing...it
-		// both hooks the new target and removes it on dispose
-		new FastViewDnDHandler(id, mgr, wbw);
-	}
-	
-	/**
-	 * Sets whether or not the stack gets restored on an unzoom
-	 * operation.
-	 * 
-	 * @param restoreOnUnzoom
-	 */
-	public void setRestoreOnUnzoom(boolean restoreOnUnzoom) {
-		this.restoreOnUnzoom = restoreOnUnzoom;
-	}
-	
-	public boolean restoreOnUnzoom() {
-		return restoreOnUnzoom;
-	}
-
-	/**
-	 * @param ref
-	 * @param selected
-	 */
-	public void setIconSelection(IViewReference ref, boolean selected) {
-		ToolItem item = ShowFastViewContribution.getItem(tbMgr.getControl(), ref);
-		if (item != null)
-			item.setSelection(selected);
-	}
-
-	/**
-	 * @return Returns the paneOrientation.
-	 */
-	public int getPaneOrientation() {
-		return paneOrientation;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java
deleted file mode 100644
index 5588a71..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistory.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This class is used to record "open editor" actions as they
- * happen.  The input and type of each editor are recorded so that
- * the user can reopen an item from the recently used files list.
- */
-public class EditorHistory {
-    /**
-     * The maximum of entries in the history.
-     */
-    public static final int MAX_SIZE = 15;
-
-    /**
-     * The list of editor entries, in FIFO order.
-     */
-    private ArrayList fifoList = new ArrayList(MAX_SIZE);
-
-    /**
-     * Constructs a new history.
-     */
-    public EditorHistory() {
-        super();
-    }
-
-    /**
-     * Adds an item to the history.  Added in fifo fashion.
-     */
-    public void add(IEditorInput input, IEditorDescriptor desc) {
-        add(new EditorHistoryItem(input, desc), 0);
-    }
-
-    /**
-     * Adds an item to the history.
-     */
-    private void add(EditorHistoryItem newItem, int index) {
-        // Remove the item if it already exists so that it will be put 
-        // at the top of the list.
-        if (newItem.isRestored()) {
-            remove(newItem.getInput());
-        }
-
-        // Remove the oldest one
-        if (fifoList.size() == MAX_SIZE) {
-            fifoList.remove(MAX_SIZE - 1);
-        }
-
-        // Add the new item.
-        fifoList.add(index < MAX_SIZE ? index : MAX_SIZE - 1, newItem);
-    }
-
-    /**
-     * Returns an array of editor history items.  The items are returned in order
-     * of most recent first.
-     */
-    public EditorHistoryItem[] getItems() {
-        refresh();
-        EditorHistoryItem[] array = new EditorHistoryItem[fifoList.size()];
-        fifoList.toArray(array);
-        return array;
-    }
-
-    /**
-     * Refresh the editor list.  Any stale items are removed.
-     * Only restored items are considered.
-     */
-    public void refresh() {
-        Iterator iter = fifoList.iterator();
-        while (iter.hasNext()) {
-            EditorHistoryItem item = (EditorHistoryItem) iter.next();
-            if (item.isRestored()) {
-                IEditorInput input = item.getInput();
-                if (input != null && !input.exists()) {
-					iter.remove();
-				}
-            }
-        }
-    }
-
-    /**
-     * Removes the given history item.
-     */
-    public void remove(EditorHistoryItem item) {
-        fifoList.remove(item);
-    }
-
-    /**
-     * Removes all traces of an editor input from the history.
-     */
-    public void remove(IEditorInput input) {
-        if (input == null) {
-            return;
-        }
-        Iterator iter = fifoList.iterator();
-        while (iter.hasNext()) {
-            EditorHistoryItem item = (EditorHistoryItem) iter.next();
-            if (item.matches(input)) {
-                iter.remove();
-            }
-        }
-    }
-
-    /**
-     * Restore the most-recently-used history from the given memento.
-     * 
-     * @param memento the memento to restore the mru history from
-     */
-    public IStatus restoreState(IMemento memento) {
-        IMemento[] mementos = memento.getChildren(IWorkbenchConstants.TAG_FILE);
-        for (int i = 0; i < mementos.length; i++) {
-            EditorHistoryItem item = new EditorHistoryItem(mementos[i]);
-            if (!"".equals(item.getName()) || !"".equals(item.getToolTipText())) { //$NON-NLS-1$ //$NON-NLS-2$
-                add(item, fifoList.size());
-            }
-        }
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-    /**
-     * Save the most-recently-used history in the given memento.
-     * 
-     * @param memento the memento to save the mru history in
-     */
-    public IStatus saveState(IMemento memento) {
-        Iterator iterator = fifoList.iterator();
-        while (iterator.hasNext()) {
-            EditorHistoryItem item = (EditorHistoryItem) iterator.next();
-            if (item.canSave()) {
-                IMemento itemMemento = memento
-                        .createChild(IWorkbenchConstants.TAG_FILE);
-                item.saveState(itemMemento);
-            }
-        }
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java
deleted file mode 100644
index 94f7c61..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorHistoryItem.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * An item in the editor history.
- */
-public class EditorHistoryItem {
-
-    private IEditorInput input;
-
-    private IEditorDescriptor descriptor;
-
-    private IMemento memento;
-
-    /**
-     * Constructs a new item.
-     */
-    public EditorHistoryItem(IEditorInput input, IEditorDescriptor descriptor) {
-        this.input = input;
-        this.descriptor = descriptor;
-    }
-
-    /**
-     * Constructs a new item from a memento.
-     */
-    public EditorHistoryItem(IMemento memento) {
-        this.memento = memento;
-    }
-
-    /**
-     * Returns the editor descriptor.
-     * 
-     * @return the editor descriptor.
-     */
-    public IEditorDescriptor getDescriptor() {
-        return descriptor;
-    }
-
-    /**
-     * Returns the editor input.
-     * 
-     * @return the editor input.
-     */
-    public IEditorInput getInput() {
-        return input;
-    }
-
-    /**
-     * Returns whether this item has been restored from the memento.
-     */
-    public boolean isRestored() {
-        return memento == null;
-    }
-
-    /**
-     * Returns the name of this item, either from the input if restored,
-     * otherwise from the memento.
-     */
-    public String getName() {
-        if (isRestored() && getInput() != null) {
-            return getInput().getName();
-        } else if (memento != null) {
-            String name = memento.getString(IWorkbenchConstants.TAG_NAME);
-            if (name != null) {
-                return name;
-            }
-        }
-        return ""; //$NON-NLS-1$
-    }
-
-    /**
-     * Returns the tooltip text of this item, either from the input if restored,
-     * otherwise from the memento.
-     */
-    public String getToolTipText() {
-        if (isRestored() && getInput() != null) {
-            return getInput().getToolTipText();
-        } else if (memento != null) {
-            String name = memento.getString(IWorkbenchConstants.TAG_TOOLTIP);
-            if (name != null) {
-                return name;
-            }
-        }
-        return ""; //$NON-NLS-1$
-    }
-
-    /**
-     * Returns whether this item matches the given editor input.
-     */
-    public boolean matches(IEditorInput input) {
-        if (isRestored()) {
-			return input.equals(getInput());
-		}
-        // if not restored, compare name, tool tip text and factory id,
-        // avoiding as much work as possible
-        if (!getName().equals(input.getName())) {
-			return false;
-		}
-        if (!getToolTipText().equals(input.getToolTipText())) {
-			return false;
-		}
-        IPersistableElement persistable = input.getPersistable();
-        String inputId = persistable == null ? null : persistable
-                .getFactoryId();
-        String myId = getFactoryId();
-        return myId == null ? inputId == null : myId.equals(inputId);
-    }
-
-    /**
-     * Returns the factory id of this item, either from the input if restored,
-     * otherwise from the memento.
-     * Returns <code>null</code> if there is no factory id.
-     */
-    public String getFactoryId() {
-        if (isRestored()) {
-            if (input != null) {
-                IPersistableElement persistable = input.getPersistable();
-                if (persistable != null) {
-                    return persistable.getFactoryId();
-                }
-            }
-        } else if (memento != null) {
-            return memento.getString(IWorkbenchConstants.TAG_FACTORY_ID);
-        }
-        return null;
-    }
-
-    /**
-     * Restores the object state from the memento. 
-     */
-    public IStatus restoreState() {
-        Assert.isTrue(!isRestored());
-
-        Status result = new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0,
-                "", null); //$NON-NLS-1$
-        IMemento memento = this.memento;
-        this.memento = null;
-
-        String factoryId = memento
-                .getString(IWorkbenchConstants.TAG_FACTORY_ID);
-        if (factoryId == null) {
-            WorkbenchPlugin
-                    .log("Unable to restore mru list - no input factory ID.");//$NON-NLS-1$
-            return result;
-        }
-        IElementFactory factory = PlatformUI.getWorkbench().getElementFactory(
-                factoryId);
-        if (factory == null) {
-            return result;
-        }
-        IMemento persistableMemento = memento
-                .getChild(IWorkbenchConstants.TAG_PERSISTABLE);
-        if (persistableMemento == null) {
-            WorkbenchPlugin
-                    .log("Unable to restore mru list - no input element state: " + factoryId);//$NON-NLS-1$
-            return result;
-        }
-        IAdaptable adaptable = factory.createElement(persistableMemento);
-        if (adaptable == null || (adaptable instanceof IEditorInput) == false) {
-            return result;
-        }
-        input = (IEditorInput) adaptable;
-        // Get the editor descriptor.
-        String editorId = memento.getString(IWorkbenchConstants.TAG_ID);
-        if (editorId != null) {
-            IEditorRegistry registry = WorkbenchPlugin.getDefault()
-                    .getEditorRegistry();
-            descriptor = registry.findEditor(editorId);
-        }
-        return result;
-    }
-
-    /**
-     * Returns whether this history item can be saved.
-     */
-    public boolean canSave() {
-        return !isRestored()
-                || (getInput() != null && getInput().getPersistable() != null);
-    }
-
-    /**
-     * Saves the object state in the given memento. 
-     * 
-     * @param memento the memento to save the object state in
-     */
-    public IStatus saveState(IMemento memento) {
-        if (!isRestored()) {
-            memento.putMemento(this.memento);
-        } else if (input != null) {
-
-            IPersistableElement persistable = input.getPersistable();
-            if (persistable != null) {
-                /*
-                 * Store IPersistable of the IEditorInput in a separate section
-                 * since it could potentially use a tag already used in the parent 
-                 * memento and thus overwrite data.
-                 */
-                IMemento persistableMemento = memento
-                        .createChild(IWorkbenchConstants.TAG_PERSISTABLE);
-                persistable.saveState(persistableMemento);
-                memento.putString(IWorkbenchConstants.TAG_FACTORY_ID,
-                        persistable.getFactoryId());
-                if (descriptor != null && descriptor.getId() != null) {
-                    memento.putString(IWorkbenchConstants.TAG_ID, descriptor
-                            .getId());
-                }
-                // save the name and tooltip separately so they can be restored
-                // without having to instantiate the input, which can activate plugins
-                memento
-                        .putString(IWorkbenchConstants.TAG_NAME, input
-                                .getName());
-                memento.putString(IWorkbenchConstants.TAG_TOOLTIP, input
-                        .getToolTipText());
-            }
-        }
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorManager.java
deleted file mode 100644
index 7eb9d93..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorManager.java
+++ /dev/null
@@ -1,1655 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
-import org.eclipse.osgi.util.NLS;
-
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.program.Program;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.IHandler;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.window.IShellProvider;
-
-import org.eclipse.ui.ActiveShellExpression;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorLauncher;
-import org.eclipse.ui.IEditorMatchingStrategy;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPathEditorInput;
-import org.eclipse.ui.IPersistableEditor;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablePart2;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISaveablesSource;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart3;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.Saveable;
-import org.eclipse.ui.dialogs.ListSelectionDialog;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor;
-import org.eclipse.ui.internal.editorsupport.ComponentSupport;
-import org.eclipse.ui.internal.misc.ExternalEditor;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.part.NullEditorInput;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.WorkbenchPartLabelProvider;
-import org.eclipse.ui.part.MultiEditor;
-import org.eclipse.ui.part.MultiEditorInput;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Manage a group of element editors. Prevent the creation of two editors on the
- * same element.
- * 
- * 06/12/00 - DS - Given the ambiguous editor input type, the manager delegates
- * a number of responsibilities to the editor itself.
- * 
- * <ol>
- * <li>The editor should determine its own title.</li>
- * <li>The editor should listen to resource deltas and close itself if the
- * input is deleted. It may also choose to stay open if the editor has dirty
- * state.</li>
- * <li>The editor should persist its own state plus editor input.</li>
- * </ol>
- */
-public class EditorManager implements IExtensionChangeHandler {
-	EditorAreaHelper editorPresentation;
-
-	WorkbenchWindow window;
-
-	WorkbenchPage page;
-
-	private Map actionCache = new HashMap();
-
-	private static final String PIN_EDITOR_KEY = "PIN_EDITOR"; //$NON-NLS-1$
-
-	private static final String PIN_EDITOR = "ovr16/pinned_ovr.gif"; //$NON-NLS-1$
-
-	// When the user removes or adds the close editors automatically preference
-	// the icon should be removed or added accordingly
-	private IPropertyChangeListener editorPropChangeListnener = null;
-
-	// Handler for the pin editor keyboard shortcut
-	private IHandlerActivation pinEditorHandlerActivation = null;
-
-	static final String RESOURCES_TO_SAVE_MESSAGE = WorkbenchMessages.EditorManager_saveResourcesMessage;
-
-	static final String SAVE_RESOURCES_TITLE = WorkbenchMessages.EditorManager_saveResourcesTitle;
-
-	/**
-	 * EditorManager constructor comment.
-	 */
-	public EditorManager(WorkbenchWindow window, WorkbenchPage workbenchPage,
-			EditorAreaHelper pres) {
-		Assert.isNotNull(window);
-		Assert.isNotNull(workbenchPage);
-		Assert.isNotNull(pres);
-		this.window = window;
-		this.page = workbenchPage;
-		this.editorPresentation = pres;
-
-		page.getExtensionTracker().registerHandler(this, null);
-	}
-
-	/**
-	 * Check to determine if the editor resources are no longer needed removes
-	 * property change listener for editors removes pin editor keyboard shortcut
-	 * handler disposes cached images and clears the cached images hash table
-	 */
-	void checkDeleteEditorResources() {
-		// get the current number of editors
-		IEditorReference[] editors = page.getEditorReferences();
-		// If there are no editors
-		if (editors.length == 0) {
-			if (editorPropChangeListnener != null) {
-				// remove property change listener for editors
-				IPreferenceStore prefStore = WorkbenchPlugin.getDefault()
-						.getPreferenceStore();
-				prefStore
-						.removePropertyChangeListener(editorPropChangeListnener);
-				editorPropChangeListnener = null;
-			}
-			if (pinEditorHandlerActivation != null) {
-				// remove pin editor keyboard shortcut handler
-				final IHandlerService handlerService = (IHandlerService) window.getWorkbench().getService(IHandlerService.class);
-				handlerService.deactivateHandler(pinEditorHandlerActivation);
-				pinEditorHandlerActivation = null;
-			}
-		}
-	}
-
-	/**
-	 * Check to determine if the property change listener for editors should be
-	 * created
-	 */
-	void checkCreateEditorPropListener() {
-		if (editorPropChangeListnener == null) {
-			// Add a property change listener for closing editors automatically
-			// preference
-			// Add or remove the pin icon accordingly
-			editorPropChangeListnener = new IPropertyChangeListener() {
-				public void propertyChange(PropertyChangeEvent event) {
-					if (event.getProperty().equals(
-							IPreferenceConstants.REUSE_EDITORS_BOOLEAN)) {
-						IEditorReference[] editors = getEditors();
-						for (int i = 0; i < editors.length; i++) {
-							((EditorReference) editors[i]).pinStatusUpdated();
-						}
-					}
-				}
-			};
-			WorkbenchPlugin.getDefault().getPreferenceStore()
-					.addPropertyChangeListener(editorPropChangeListnener);
-		}
-	}
-
-	/**
-	 * Check to determine if the handler for the pin editor keyboard shortcut
-	 * should be created.
-	 */
-	void checkCreatePinEditorShortcutKeyHandler() {
-		if (pinEditorHandlerActivation == null) {
-			final Shell shell = window.getShell();
-			final IHandler pinEditorHandler = new AbstractHandler() {
-				public final Object execute(final ExecutionEvent event) {
-					// check if the "Close editors automatically" preference is
-					// set
-					IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
-					if (store
-							.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)
-							|| ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).alwaysShowPinAction()) {
-
-						IWorkbenchPartReference ref = editorPresentation
-								.getVisibleEditor();
-						if (ref instanceof WorkbenchPartReference) {
-							WorkbenchPartReference concreteRef = (WorkbenchPartReference) ref;
-
-							concreteRef.setPinned(concreteRef.isPinned());
-						}
-					}
-					return null;
-				}
-			};
-
-			// Assign the handler for the pin editor keyboard shortcut.
-			final IHandlerService handlerService = (IHandlerService) window.getWorkbench().getService(IHandlerService.class);
-			pinEditorHandlerActivation = handlerService.activateHandler(
-					"org.eclipse.ui.window.pinEditor", pinEditorHandler, //$NON-NLS-1$
-					new ActiveShellExpression(shell));
-		}
-	}
-
-	/**
-	 * Method to create the editor's pin ImageDescriptor
-	 * 
-	 * @return the single image descriptor for the editor's pin icon
-	 */
-	ImageDescriptor getEditorPinImageDesc() {
-		ImageRegistry registry = JFaceResources.getImageRegistry();
-		ImageDescriptor pinDesc = registry.getDescriptor(PIN_EDITOR_KEY);
-		// Avoid registering twice
-		if (pinDesc == null) {
-			pinDesc = WorkbenchImages.getWorkbenchImageDescriptor(PIN_EDITOR);
-			registry.put(PIN_EDITOR_KEY, pinDesc);
-
-		}
-		return pinDesc;
-	}
-
-	/**
-	 * Answer a list of dirty editors.
-	 */
-	private List collectDirtyEditors() {
-		List result = new ArrayList(3);
-		IEditorReference[] editors = page.getEditorReferences();
-		for (int i = 0; i < editors.length; i++) {
-			IEditorPart part = (IEditorPart) editors[i].getPart(false);
-			if (part != null && part.isDirty()) {
-				result.add(part);
-			}
-
-		}
-		return result;
-	}
-
-	/**
-	 * Returns whether the manager contains an editor.
-	 */
-	public boolean containsEditor(IEditorReference ref) {
-		IEditorReference[] editors = page.getEditorReferences();
-		for (int i = 0; i < editors.length; i++) {
-			if (ref == editors[i]) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/*
-	 * Creates the action bars for an editor. Editors of the same type should
-	 * share a single editor action bar, so this implementation may return an
-	 * existing action bar vector.
-	 */
-	private EditorActionBars createEditorActionBars(EditorDescriptor desc,
-			final IEditorSite site) {
-		// Get the editor type.
-		String type = desc.getId();
-
-		// If an action bar already exists for this editor type return it.
-		EditorActionBars actionBars = (EditorActionBars) actionCache.get(type);
-		if (actionBars != null) {
-			actionBars.addRef();
-			return actionBars;
-		}
-
-		// Create a new action bar set.
-		actionBars = new EditorActionBars(page, site.getWorkbenchWindow(), type);
-		actionBars.addRef();
-		actionCache.put(type, actionBars);
-
-		// Read base contributor.
-		IEditorActionBarContributor contr = desc.createActionBarContributor();
-		if (contr != null) {
-			actionBars.setEditorContributor(contr);
-			contr.init(actionBars, page);
-		}
-
-		// Read action extensions.
-		EditorActionBuilder builder = new EditorActionBuilder();
-		contr = builder.readActionExtensions(desc);
-		if (contr != null) {
-			actionBars.setExtensionContributor(contr);
-			contr.init(actionBars, page);
-		}
-
-		// Return action bars.
-		return actionBars;
-	}
-
-	/*
-	 * Creates the action bars for an editor.
-	 */
-	private EditorActionBars createEmptyEditorActionBars(final IEditorSite site) {
-		// Get the editor type.
-		String type = String.valueOf(System.currentTimeMillis());
-
-		// Create a new action bar set.
-		// Note: It is an empty set.
-		EditorActionBars actionBars = new EditorActionBars(page, site.getWorkbenchWindow(), type);
-		actionBars.addRef();
-		actionCache.put(type, actionBars);
-
-		// Return action bars.
-		return actionBars;
-	}
-
-	/*
-	 * Dispose
-	 */
-	void disposeEditorActionBars(EditorActionBars actionBars) {
-		actionBars.removeRef();
-		if (actionBars.getRef() <= 0) {
-			String type = actionBars.getEditorType();
-			actionCache.remove(type);
-			// refresh the cool bar manager before disposing of a cool item
-			ICoolBarManager2 coolBar = (ICoolBarManager2) window.getCoolBarManager2();
-            if (coolBar != null) {
-            	coolBar.refresh();
-			}
-			actionBars.dispose();
-		}
-	}
-
-	/**
-	 * Returns an open editor matching the given editor input. If none match,
-	 * returns <code>null</code>.
-	 * 
-	 * @param input
-	 *            the editor input
-	 * @return the matching editor, or <code>null</code> if no match fond
-	 */
-	public IEditorPart findEditor(IEditorInput input) {
-		return findEditor(null, input, IWorkbenchPage.MATCH_INPUT);
-	}
-
-	/**
-	 * Returns an open editor matching the given editor input and/or editor id,
-	 * as specified by matchFlags. If none match, returns <code>null</code>.
-	 * 
-	 * @param editorId
-	 *            the editor id
-	 * @param input
-	 *            the editor input
-	 * @param matchFlags
-	 *            flags specifying which aspects to match
-	 * @return the matching editor, or <code>null</code> if no match fond
-	 * @since 3.1
-	 */
-	public IEditorPart findEditor(String editorId, IEditorInput input,
-			int matchFlags) {
-		IEditorReference[] refs = findEditors(input, editorId, matchFlags);
-		if (refs.length == 0) {
-			return null;
-		}
-		return refs[0].getEditor(true);
-	}
-
-	/**
-	 * Returns the open editor references matching the given editor input and/or
-	 * editor id, as specified by matchFlags. If none match, returns an empty
-	 * array.
-	 * 
-	 * @param editorId
-	 *            the editor id
-	 * @param input
-	 *            the editor input
-	 * @param matchFlags
-	 *            flags specifying which aspects to match
-	 * @return the matching editor, or <code>null</code> if no match fond
-	 * @since 3.1
-	 */
-	public IEditorReference[] findEditors(IEditorInput input, String editorId,
-			int matchFlags) {
-		if (matchFlags == IWorkbenchPage.MATCH_NONE) {
-			return new IEditorReference[0];
-		}
-		List result = new ArrayList();
-		ArrayList othersList = new ArrayList(Arrays.asList(page
-				.getEditorReferences()));
-		if (!othersList.isEmpty()) {
-			IEditorReference active = page.getActiveEditorReference();
-			if (active != null) {
-				othersList.remove(active);
-				ArrayList activeList = new ArrayList(1);
-				activeList.add(active);
-				findEditors(activeList, input, editorId, matchFlags, result);
-			}
-			findEditors(othersList, input, editorId, matchFlags, result);
-		}
-		return (IEditorReference[]) result.toArray(new IEditorReference[result
-				.size()]);
-	}
-
-	/**
-	 * Returns an open editor matching the given editor id and/or editor input.
-	 * Returns <code>null</code> if none match.
-	 * 
-	 * @param editorId
-	 *            the editor id
-	 * @param input
-	 *            the editor input
-	 * @param editorList
-	 *            a mutable list containing the references for the editors to
-	 *            check (warning: items may be removed)
-	 * @param result
-	 *            the list to which matching editor references should be added
-	 * @since 3.1
-	 */
-	private void findEditors(List editorList, IEditorInput input,
-			String editorId, int matchFlags, List result) {
-		if (matchFlags == IWorkbenchPage.MATCH_NONE) {
-			return;
-		}
-
-		// Phase 0: Remove editors whose ids don't match (if matching by id)
-		if (((matchFlags & IWorkbenchPage.MATCH_ID) != 0) && editorId != null) {
-			for (Iterator i = editorList.iterator(); i.hasNext();) {
-				EditorReference editor = (EditorReference) i.next();
-				if (!editorId.equals(editor.getId())) {
-					i.remove();
-				}
-			}
-		}
-
-		// If not matching on editor input, just return the remaining editors.
-		// In practice, this case is never used.
-		if ((matchFlags & IWorkbenchPage.MATCH_INPUT) == 0) {
-			result.addAll(editorList);
-			return;
-		}
-
-		// Phase 1: check editors that have their own matching strategy
-		for (Iterator i = editorList.iterator(); i.hasNext();) {
-			EditorReference editor = (EditorReference) i.next();
-			IEditorDescriptor desc = editor.getDescriptor();
-			if (desc != null) {
-				IEditorMatchingStrategy matchingStrategy = desc
-						.getEditorMatchingStrategy();
-				if (matchingStrategy != null) {
-					i.remove(); // We're handling this one here, so remove it
-					// from the list.
-					if (matchingStrategy.matches(editor, input)) {
-						result.add(editor);
-					}
-				}
-			}
-		}
-
-		// Phase 2: check materialized editors (without their own matching
-		// strategy)
-		for (Iterator i = editorList.iterator(); i.hasNext();) {
-			IEditorReference editor = (IEditorReference) i.next();
-			IEditorPart part = (IEditorPart) editor.getPart(false);
-			if (part != null) {
-				i.remove(); // We're handling this one here, so remove it from
-				// the list.
-				if (part.getEditorInput() != null
-						&& part.getEditorInput().equals(input)) {
-					result.add(editor);
-				}
-			}
-		}
-
-		// Phase 3: check unmaterialized editors for input equality,
-		// delaying plug-in activation further by only restoring the editor
-		// input
-		// if the editor reference's factory id and name match.
-		String name = input.getName();
-		IPersistableElement persistable = input.getPersistable();
-		if (name == null || persistable == null) {
-			return;
-		}
-		String id = persistable.getFactoryId();
-		if (id == null) {
-			return;
-		}
-		for (Iterator i = editorList.iterator(); i.hasNext();) {
-			EditorReference editor = (EditorReference) i.next();
-			if (name.equals(editor.getName())
-					&& id.equals(editor.getFactoryId())) {
-				IEditorInput restoredInput;
-				try {
-					restoredInput = editor.getEditorInput();
-					if (Util.equals(restoredInput, input)) {
-						result.add(editor);
-					}
-				} catch (PartInitException e1) {
-					WorkbenchPlugin.log(e1);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns the SWT Display.
-	 */
-	private Display getDisplay() {
-		return window.getShell().getDisplay();
-	}
-
-	/**
-	 * Answer the number of editors.
-	 */
-	public int getEditorCount() {
-		return page.getEditorReferences().length;
-	}
-
-	/*
-	 * Answer the editor registry.
-	 */
-	private IEditorRegistry getEditorRegistry() {
-		return WorkbenchPlugin.getDefault().getEditorRegistry();
-	}
-
-	/*
-	 * See IWorkbenchPage.
-	 */
-	public IEditorPart[] getDirtyEditors() {
-		List dirtyEditors = collectDirtyEditors();
-		return (IEditorPart[]) dirtyEditors
-				.toArray(new IEditorPart[dirtyEditors.size()]);
-	}
-
-	/*
-	 * See IWorkbenchPage.
-	 */
-	public IEditorReference[] getEditors() {
-		return page.getEditorReferences();
-	}
-
-	/*
-	 * See IWorkbenchPage#getFocusEditor
-	 */
-	public IEditorPart getVisibleEditor() {
-		IEditorReference ref = editorPresentation.getVisibleEditor();
-		if (ref == null) {
-			return null;
-		}
-		return (IEditorPart) ref.getPart(true);
-	}
-
-	/**
-	 * Answer true if save is needed in any one of the editors.
-	 */
-	public boolean isSaveAllNeeded() {
-		IEditorReference[] editors = page.getEditorReferences();
-		for (int i = 0; i < editors.length; i++) {
-			IEditorReference ed = editors[i];
-			if (ed.isDirty()) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/*
-	 * Prompt the user to save the reusable editor. Return false if a new editor
-	 * should be opened.
-	 */
-	private IEditorReference findReusableEditor(EditorDescriptor desc) {
-		return ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).findReusableEditor(page);
-	}
-
-	/**
-	 * @param editorId
-	 *            the editor part id
-	 * @param input
-	 *            the input
-	 * @param setVisible
-	 *            if this is to be created visible ... not used
-	 * @param editorState
-	 *            an {@link IMemento} &lt;editorState&gt; for persistable
-	 *            editors. Can be <code>null</code>.
-	 * @return a created editor reference
-	 * @throws PartInitException
-	 */
-	public IEditorReference openEditor(String editorId, IEditorInput input,
-			boolean setVisible, IMemento editorState) throws PartInitException {
-		if (editorId == null || input == null) {
-			throw new IllegalArgumentException();
-		}
-
-		IEditorRegistry reg = getEditorRegistry();
-		EditorDescriptor desc = (EditorDescriptor) reg.findEditor(editorId);
-		if (desc == null) {
-			throw new PartInitException(NLS.bind(
-					WorkbenchMessages.EditorManager_unknownEditorIDMessage,
-					editorId));
-		}
-
-		IEditorReference result = openEditorFromDescriptor(desc, input, editorState);
-		return result;
-	}
-
-	/*
-	 * Open a new editor
-	 */
-	public IEditorReference openEditorFromDescriptor(EditorDescriptor desc,
-			IEditorInput input, IMemento editorState) throws PartInitException {
-		IEditorReference result = null;
-		if (desc.isInternal()) {
-			result = reuseInternalEditor(desc, input);
-			if (result == null) {
-				result = new EditorReference(this, input, desc, editorState);
-			}
-		} else if (desc.getId()
-				.equals(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID)) {
-			if (ComponentSupport.inPlaceEditorSupported()) {
-				result = new EditorReference(this, input, desc);
-			}
-		} else if (desc.getId().equals(
-				IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID)) {
-			IPathEditorInput pathInput = getPathEditorInput(input);
-			if (pathInput != null) {
-				result = openSystemExternalEditor(pathInput.getPath());
-			} else {
-				throw new PartInitException(
-						WorkbenchMessages.EditorManager_systemEditorError);
-			}
-		} else if (desc.isOpenExternal()) {
-			result = openExternalEditor(desc, input);
-		} else {
-			// this should never happen
-			throw new PartInitException(NLS.bind(
-					WorkbenchMessages.EditorManager_invalidDescriptor, desc
-							.getId()));
-		}
-
-		if (result != null) {
-			createEditorTab((EditorReference) result, ""); //$NON-NLS-1$
-		}
-
-		Workbench wb = (Workbench) window.getWorkbench();
-		wb.getEditorHistory().add(input, desc);
-		return result;
-	}
-
-	/**
-	 * Open a specific external editor on an file based on the descriptor.
-	 */
-	private IEditorReference openExternalEditor(final EditorDescriptor desc,
-			IEditorInput input) throws PartInitException {
-		final CoreException ex[] = new CoreException[1];
-
-		final IPathEditorInput pathInput = getPathEditorInput(input);
-		if (pathInput != null && pathInput.getPath() != null) {
-			BusyIndicator.showWhile(getDisplay(), new Runnable() {
-				public void run() {
-					try {
-						if (desc.getLauncher() != null) {
-							// open using launcher
-							Object launcher = WorkbenchPlugin.createExtension(
-									desc.getConfigurationElement(), "launcher"); //$NON-NLS-1$
-							((IEditorLauncher) launcher).open(pathInput
-									.getPath());
-						} else {
-							// open using command
-							ExternalEditor oEditor = new ExternalEditor(
-									pathInput.getPath(), desc);
-							oEditor.open();
-						}
-					} catch (CoreException e) {
-						ex[0] = e;
-					}
-				}
-			});
-		} else {
-			throw new PartInitException(NLS.bind(
-					WorkbenchMessages.EditorManager_errorOpeningExternalEditor,
-					desc.getFileName(), desc.getId()));
-		}
-
-		if (ex[0] != null) {
-			throw new PartInitException(NLS.bind(
-					WorkbenchMessages.EditorManager_errorOpeningExternalEditor,
-					desc.getFileName(), desc.getId()), ex[0]);
-		}
-
-		// we do not have an editor part for external editors
-		return null;
-	}
-
-	/**
-	 * Create the part and reference for each inner editor.
-	 * 
-	 * @param ref
-	 *            the MultiEditor reference
-	 * @param part
-	 *            the part
-	 * @param input
-	 *            the MultiEditor input
-	 * @return the array of inner references to store in the MultiEditor reference
-	 */
-	IEditorReference[] openMultiEditor(final IEditorReference ref,
-			final MultiEditor part, final MultiEditorInput input)
-			throws PartInitException {
-
-		String[] editorArray = input.getEditors();
-		IEditorInput[] inputArray = input.getInput();
-
-		// find all descriptors
-		EditorDescriptor[] descArray = new EditorDescriptor[editorArray.length];
-		IEditorReference refArray[] = new IEditorReference[editorArray.length];
-		IEditorPart partArray[] = new IEditorPart[editorArray.length];
-
-		IEditorRegistry reg = getEditorRegistry();
-		for (int i = 0; i < editorArray.length; i++) {
-			EditorDescriptor innerDesc = (EditorDescriptor) reg
-					.findEditor(editorArray[i]);
-			if (innerDesc == null) {
-				throw new PartInitException(NLS.bind(
-						WorkbenchMessages.EditorManager_unknownEditorIDMessage,
-						editorArray[i]));
-			}
-			descArray[i] = innerDesc;
-			InnerEditor innerRef = new InnerEditor(ref, inputArray[i],
-					descArray[i]);
-			refArray[i] = innerRef;
-			partArray[i] = innerRef.getEditor(true);
-		}
-		part.setChildren(partArray);
-		return refArray;
-	}
-
-	/*
-	 * Opens an editor part.
-	 */
-	private void createEditorTab(final EditorReference ref,
-			final String workbookId) throws PartInitException {
-
-		editorPresentation.addEditor(ref, workbookId);
-
-	}
-
-	/*
-	 * Create the site and initialize it with its action bars.
-	 */
-	EditorSite createSite(final IEditorReference ref, final IEditorPart part,
-			final EditorDescriptor desc, final IEditorInput input)
-			throws PartInitException {
-		EditorSite site = new EditorSite(ref, part, page, desc);
-		if (desc != null) {
-			site.setActionBars(createEditorActionBars(desc, site));
-		} else {
-			site.setActionBars(createEmptyEditorActionBars(site));
-		}
-		final String label = part.getTitle(); // debugging only
-		try {
-			try {
-				UIStats.start(UIStats.INIT_PART, label);
-				part.init(site, input);
-			} finally {
-				UIStats.end(UIStats.INIT_PART, part, label);
-			}
-
-			// Sanity-check the site
-			if (part.getSite() != site || part.getEditorSite() != site) {
-				throw new PartInitException(NLS.bind(
-						WorkbenchMessages.EditorManager_siteIncorrect, desc
-								.getId()));
-			}
-
-		} catch (Exception e) {
-			disposeEditorActionBars((EditorActionBars) site.getActionBars());
-			site.dispose();
-			if (e instanceof PartInitException) {
-				throw (PartInitException) e;
-			}
-
-			throw new PartInitException(
-					WorkbenchMessages.EditorManager_errorInInit, e);
-		}
-
-		return site;
-	}
-
-	/*
-	 * See IWorkbenchPage.
-	 */
-	private IEditorReference reuseInternalEditor(EditorDescriptor desc,
-			IEditorInput input) throws PartInitException {
-
-		Assert.isNotNull(desc, "descriptor must not be null"); //$NON-NLS-1$
-		Assert.isNotNull(input, "input must not be null"); //$NON-NLS-1$
-
-		IEditorReference reusableEditorRef = findReusableEditor(desc);
-		if (reusableEditorRef != null) {
-			return ((TabBehaviour) Tweaklets.get(TabBehaviour.KEY))
-					.reuseInternalEditor(page, this, editorPresentation, desc,
-							input, reusableEditorRef);
-		}
-		return null;
-	}
-
-	IEditorPart createPart(final EditorDescriptor desc)
-			throws PartInitException {
-		try {
-			IEditorPart result = desc.createEditor();
-			IConfigurationElement element = desc.getConfigurationElement();
-			if (element != null) {
-				page.getExtensionTracker().registerObject(
-						element.getDeclaringExtension(), result,
-						IExtensionTracker.REF_WEAK);
-			}
-			return result;
-		} catch (CoreException e) {
-			throw new PartInitException(StatusUtil.newStatus(
-					desc.getPluginID(),
-					WorkbenchMessages.EditorManager_instantiationError, e));
-		}
-	}
-
-	/**
-	 * Open a system external editor on the input path.
-	 */
-	private IEditorReference openSystemExternalEditor(final IPath location)
-			throws PartInitException {
-		if (location == null) {
-			throw new IllegalArgumentException();
-		}
-
-		final boolean result[] = { false };
-		BusyIndicator.showWhile(getDisplay(), new Runnable() {
-			public void run() {
-				if (location != null) {
-					result[0] = Program.launch(location.toOSString());
-				}
-			}
-		});
-
-		if (!result[0]) {
-			throw new PartInitException(NLS.bind(
-					WorkbenchMessages.EditorManager_unableToOpenExternalEditor,
-					location));
-		}
-
-		// We do not have an editor part for external editors
-		return null;
-	}
-
-	ImageDescriptor findImage(EditorDescriptor desc, IPath path) {
-		if (desc == null) {
-			// @issue what should be the default image?
-			return ImageDescriptor.getMissingImageDescriptor();
-		}
-
-		if (desc.isOpenExternal() && path != null) {
-			return PlatformUI.getWorkbench().getEditorRegistry()
-					.getImageDescriptor(path.toOSString());
-		}
-
-		return desc.getImageDescriptor();
-	}
-
-	/**
-	 * @see org.eclipse.ui.IPersistable
-	 */
-	public IStatus restoreState(IMemento memento) {
-		// Restore the editor area workbooks layout/relationship
-		final MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID,
-				IStatus.OK,
-				WorkbenchMessages.EditorManager_problemsRestoringEditors, null);
-		final String activeWorkbookID[] = new String[1];
-		final ArrayList visibleEditors = new ArrayList(5);
-		final IEditorReference activeEditor[] = new IEditorReference[1];
-
-		IMemento areaMem = memento.getChild(IWorkbenchConstants.TAG_AREA);
-		if (areaMem != null) {
-			result.add(editorPresentation.restoreState(areaMem));
-			activeWorkbookID[0] = areaMem
-					.getString(IWorkbenchConstants.TAG_ACTIVE_WORKBOOK);
-		}
-
-		// Loop through the editors.
-
-		IMemento[] editorMems = memento
-				.getChildren(IWorkbenchConstants.TAG_EDITOR);
-		for (int x = 0; x < editorMems.length; x++) {
-			// for dynamic UI - call restoreEditorState to replace code which is
-			// commented out
-			restoreEditorState(editorMems[x], visibleEditors, activeEditor,
-					result);
-		}
-
-		// restore the presentation
-		if (areaMem != null) {
-			result.add(editorPresentation.restorePresentationState(areaMem));
-		}
-		try {
-			StartupThreading.runWithThrowable(new StartupRunnable(){
-
-				public void runWithException() throws Throwable {
-					// Update each workbook with its visible editor.
-					for (int i = 0; i < visibleEditors.size(); i++) {
-						setVisibleEditor((IEditorReference) visibleEditors.get(i),
-								false);
-					}
-
-					// Update the active workbook
-					if (activeWorkbookID[0] != null) {
-						editorPresentation
-								.setActiveEditorWorkbookFromID(activeWorkbookID[0]);
-					}
-
-					if (activeEditor[0] != null) {
-						IWorkbenchPart editor = activeEditor[0].getPart(true);
-
-						if (editor != null) {
-							page.activate(editor);
-						}
-					}
-				}});
-		}
-		catch (Throwable t) {
-			// The exception is already logged.
-			result
-					.add(new Status(
-							IStatus.ERROR,
-							PlatformUI.PLUGIN_ID,
-							0,
-							WorkbenchMessages.EditorManager_exceptionRestoringEditor,
-							t));
-		}
-		
-		return result;
-	}
-
-	/**
-	 * Save all of the editors in the workbench. Return true if successful.
-	 * Return false if the user has canceled the command.
-	 * @param confirm true if the user should be prompted before the save
-	 * @param closing true if the page is being closed
-	 * @param addNonPartSources true if saveables from non-part sources should be saved too.
-	 * @return false if the user canceled or an error occurred while saving
-	 */
-	public boolean saveAll(boolean confirm, boolean closing, boolean addNonPartSources) {
-		// Get the list of dirty editors and views. If it is
-		// empty just return.
-		ISaveablePart[] parts = page.getDirtyParts();
-		if (parts.length == 0) {
-			return true;
-		}
-		// saveAll below expects a mutable list
-		List dirtyParts = new ArrayList(parts.length);
-		for (int i = 0; i < parts.length; i++) {
-			dirtyParts.add(parts[i]);
-		}
-
-		// If confirmation is required ..
-		return saveAll(dirtyParts, confirm, closing, addNonPartSources, window);
-	}
-
-	/**
-	 * Saves the given dirty editors and views, optionally prompting the user.
-	 * 
-	 * @param dirtyParts
-	 *            the dirty views and editors
-	 * @param confirm
-	 *            <code>true</code> to prompt whether to save, <code>false</code>
-	 *            to save without prompting
-	 * @param closing
-	 *            <code>true</code> if the parts are being closed,
-	 *            <code>false</code> if just being saved without closing
-	 * @param addNonPartSources true if non-part sources should be saved too
-	 * @param window
-	 *            the window to use as the parent for the dialog that prompts to
-	 *            save multiple dirty editors and views
-	 * @return <code>true</code> on success, <code>false</code> if the user
-	 *         canceled the save or an error occurred while saving
-	 */
-	public static boolean saveAll(List dirtyParts, boolean confirm, boolean closing,
-			boolean addNonPartSources, final IWorkbenchWindow window) {
-		return saveAll(dirtyParts, confirm, closing, addNonPartSources, window, window);
-	}
-	
-	/**
-	 * Saves the given dirty editors and views, optionally prompting the user.
-	 * 
-	 * @param dirtyParts
-	 *            the dirty views and editors
-	 * @param confirm
-	 *            <code>true</code> to prompt whether to save,
-	 *            <code>false</code> to save without prompting
-	 * @param closing
-	 *            <code>true</code> if the parts are being closed,
-	 *            <code>false</code> if just being saved without closing
-	 * @param addNonPartSources
-	 *            true if non-part sources should be saved too
-	 * @param runnableContext
-	 *            the context in which to run long-running operations
-	 * @param shellProvider
-	 *            providing the shell to use as the parent for the dialog that
-	 *            prompts to save multiple dirty editors and views
-	 * @return <code>true</code> on success, <code>false</code> if the user
-	 *         canceled the save
-	 */
-	public static boolean saveAll(List dirtyParts, final boolean confirm, final boolean closing,
-				boolean addNonPartSources, final IRunnableContext runnableContext, final IShellProvider shellProvider) {
-		// clone the input list
-		dirtyParts = new ArrayList(dirtyParts);
-    	List modelsToSave;
-		if (confirm) {
-			boolean saveable2Processed = false;
-			// Process all parts that implement ISaveablePart2.
-			// These parts are removed from the list after saving
-			// them. We then need to restore the workbench to
-			// its previous state, for now this is just last
-			// active perspective.
-			// Note that the given parts may come from multiple
-			// windows, pages and perspectives.
-			ListIterator listIterator = dirtyParts.listIterator();
-
-			WorkbenchPage currentPage = null;
-			Perspective currentPageOriginalPerspective = null;
-			while (listIterator.hasNext()) {
-				IWorkbenchPart part = (IWorkbenchPart) listIterator.next();
-				if (part instanceof ISaveablePart2) {
-					WorkbenchPage page = (WorkbenchPage) part.getSite()
-							.getPage();
-					if (!Util.equals(currentPage, page)) {
-						if (currentPage != null
-								&& currentPageOriginalPerspective != null) {
-							if (!currentPageOriginalPerspective
-									.equals(currentPage.getActivePerspective())) {
-								currentPage
-										.setPerspective(currentPageOriginalPerspective
-												.getDesc());
-							}
-						}
-						currentPage = page;
-						currentPageOriginalPerspective = page
-								.getActivePerspective();
-					}
-					if (confirm) {
-						if (part instanceof IViewPart) {
-							Perspective perspective = page
-									.getFirstPerspectiveWithView((IViewPart) part);
-							if (perspective != null) {
-								page.setPerspective(perspective.getDesc());
-							}
-						}
-						// show the window containing the page?
-						IWorkbenchWindow partsWindow = page
-								.getWorkbenchWindow();
-						if (partsWindow != partsWindow.getWorkbench()
-								.getActiveWorkbenchWindow()) {
-							Shell shell = partsWindow.getShell();
-							if (shell.getMinimized()) {
-								shell.setMinimized(false);
-							}
-							shell.setActive();
-						}
-						page.bringToTop(part);
-					}
-					// try to save the part
-					int choice = SaveableHelper.savePart((ISaveablePart2) part,
-							page.getWorkbenchWindow(), confirm);
-					if (choice == ISaveablePart2.CANCEL) {
-						// If the user cancels, don't restore the previous
-						// workbench state, as that will
-						// be an unexpected switch from the current state.
-						return false;
-					} else if (choice != ISaveablePart2.DEFAULT) {
-						saveable2Processed = true;
-						listIterator.remove();
-					}
-				}
-			}
-
-			// try to restore the workbench to its previous state
-			if (currentPage != null && currentPageOriginalPerspective != null) {
-				if (!currentPageOriginalPerspective.equals(currentPage
-						.getActivePerspective())) {
-					currentPage.setPerspective(currentPageOriginalPerspective
-							.getDesc());
-				}
-			}
-
-			// if processing a ISaveablePart2 caused other parts to be
-			// saved, remove them from the list presented to the user.
-			if (saveable2Processed) {
-				listIterator = dirtyParts.listIterator();
-				while (listIterator.hasNext()) {
-					ISaveablePart part = (ISaveablePart) listIterator.next();
-					if (!part.isDirty()) {
-						listIterator.remove();
-					}
-				}
-			}
-
-            modelsToSave = convertToSaveables(dirtyParts, closing, addNonPartSources);
-            
-            // If nothing to save, return.
-            if (modelsToSave.isEmpty()) {
-				return true;
-			}
-			boolean canceled = SaveableHelper.waitForBackgroundSaveJobs(modelsToSave);
-			if (canceled) {
-				return false;
-			}
-            // Use a simpler dialog if there's only one
-            if (modelsToSave.size() == 1) {
-            	Saveable model = (Saveable) modelsToSave.get(0);
-				String message = NLS.bind(WorkbenchMessages.EditorManager_saveChangesQuestion, model.getName());
-				// Show a dialog.
-				String[] buttons = new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL };
-				MessageDialog d = new MessageDialog(
-					shellProvider.getShell(), WorkbenchMessages.Save_Resource,
-					null, message, MessageDialog.QUESTION, buttons, 0);
-				
-				int choice = SaveableHelper.testGetAutomatedResponse();
-				if (SaveableHelper.testGetAutomatedResponse() == SaveableHelper.USER_RESPONSE) {
-					choice = d.open();
-				}
-
-				// Branch on the user choice.
-				// The choice id is based on the order of button labels
-				// above.
-				switch (choice) {
-				case ISaveablePart2.YES: // yes
-					break;
-				case ISaveablePart2.NO: // no
-					return true;
-				default:
-				case ISaveablePart2.CANCEL: // cancel
-					return false;
-				}
-            }
-            else {
-	            ListSelectionDialog dlg = new ListSelectionDialog(
-	                    shellProvider.getShell(), modelsToSave,
-	                    new ArrayContentProvider(),
-	                    new WorkbenchPartLabelProvider(), RESOURCES_TO_SAVE_MESSAGE);
-	            dlg.setInitialSelections(modelsToSave.toArray());
-	            dlg.setTitle(SAVE_RESOURCES_TITLE);
-	
-	            // this "if" statement aids in testing.
-	            if (SaveableHelper.testGetAutomatedResponse()==SaveableHelper.USER_RESPONSE) {
-	            	int result = dlg.open();
-	                //Just return false to prevent the operation continuing
-	                if (result == IDialogConstants.CANCEL_ID) {
-						return false;
-					}
-	
-	                modelsToSave = Arrays.asList(dlg.getResult());
-	            }
-            }
-        }
-        else {
-        	modelsToSave = convertToSaveables(dirtyParts, closing, addNonPartSources);
-		}
-
-        // If the editor list is empty return.
-        if (modelsToSave.isEmpty()) {
-			return true;
-		}
-		
-		// Create save block.
-        final List finalModels = modelsToSave;
-		IRunnableWithProgress progressOp = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) {
-				IProgressMonitor monitorWrap = new EventLoopProgressMonitor(
-						monitor);
-				monitorWrap.beginTask("", finalModels.size()); //$NON-NLS-1$
-				for (Iterator i = finalModels.iterator(); i.hasNext();) {
-					Saveable model = (Saveable) i.next();
-					// handle case where this model got saved as a result of saving another
-					if (!model.isDirty()) {
-						monitor.worked(1);
-						continue;
-					}
-					SaveableHelper.doSaveModel(model, new SubProgressMonitor(monitorWrap, 1), shellProvider, closing || confirm);
-					if (monitorWrap.isCanceled()) {
-						break;
-					}
-				}
-				monitorWrap.done();
-			}
-		};
-
-		// Do the save.
-		return SaveableHelper.runProgressMonitorOperation(
-				WorkbenchMessages.Save_All, progressOp, runnableContext, shellProvider);
-	}
-
-	/**
-	 * For each part (view or editor) in the given list, attempts to convert it
-	 * to one or more saveable models. Duplicate models are removed. If closing
-	 * is true, then models that will remain open in parts other than the given
-	 * parts are removed.
-	 * 
-	 * @param parts
-	 *            the parts (list of IViewPart or IEditorPart)
-	 * @param closing
-	 *            whether the parts are being closed
-	 * @param addNonPartSources
-	 *            whether non-part sources should be added (true for the Save
-	 *            All action, see bug 139004)
-	 * @return the dirty models
-	 */
-	private static List convertToSaveables(List parts, boolean closing, boolean addNonPartSources) {
-		ArrayList result = new ArrayList();
-		HashSet seen = new HashSet();
-		for (Iterator i = parts.iterator(); i.hasNext();) {
-			IWorkbenchPart part = (IWorkbenchPart) i.next();
-			Saveable[] saveables = getSaveables(part);
-			for (int j = 0; j < saveables.length; j++) {
-				Saveable saveable = saveables[j];
-				if (saveable.isDirty() && !seen.contains(saveable)) {
-					seen.add(saveable);
-					if (!closing
-							|| closingLastPartShowingModel(saveable, parts, part
-									.getSite().getPage())) {
-						result.add(saveable);
-					}
-				}
-			}
-		}
-		if (addNonPartSources) {
-			SaveablesList saveablesList = (SaveablesList) PlatformUI
-					.getWorkbench().getService(
-							ISaveablesLifecycleListener.class);
-			ISaveablesSource[] nonPartSources = saveablesList
-					.getNonPartSources();
-			for (int i = 0; i < nonPartSources.length; i++) {
-				Saveable[] saveables = nonPartSources[i].getSaveables();
-				for (int j = 0; j < saveables.length; j++) {
-					Saveable saveable = saveables[j];
-					if (saveable.isDirty() && !seen.contains(saveable)) {
-						seen.add(saveable);
-						result.add(saveable);
-					}
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the saveable models provided by the given part.
-	 * If the part does not provide any models, a default model
-	 * is returned representing the part.
-	 * 
-	 * @param part the workbench part
-	 * @return the saveable models
-	 */
-	private static Saveable[] getSaveables(IWorkbenchPart part) {
-		if (part instanceof ISaveablesSource) {
-			ISaveablesSource source = (ISaveablesSource) part;
-			return source.getSaveables();
-		}
-		return new Saveable[] { new DefaultSaveable(part) };
-	}
-
-	/**
-	 * Returns true if, in the given page, no more parts will reference the
-	 * given model if the given parts are closed.
-	 * 
-	 * @param model
-	 *            the model
-	 * @param closingParts
-	 *            the parts being closed (list of IViewPart or IEditorPart)
-	 * @param page
-	 *            the page
-	 * @return <code>true</code> if no more parts in the page will reference
-	 *         the given model, <code>false</code> otherwise
-	 */
-	private static boolean closingLastPartShowingModel(Saveable model,
-			List closingParts, IWorkbenchPage page) {
-		HashSet closingPartsWithSameModel = new HashSet();
-		for (Iterator i = closingParts.iterator(); i.hasNext();) {
-			IWorkbenchPart part = (IWorkbenchPart) i.next();
-			Saveable[] models = getSaveables(part);
-			if (Arrays.asList(models).contains(model)) {
-				closingPartsWithSameModel.add(part);
-			}
-		}
-		IWorkbenchPartReference[] pagePartRefs = ((WorkbenchPage) page).getAllParts();
-		HashSet pagePartsWithSameModels = new HashSet();
-		for (int i = 0; i < pagePartRefs.length; i++) {
-			IWorkbenchPartReference partRef = pagePartRefs[i];
-			IWorkbenchPart part = partRef.getPart(false);
-			if (part != null) {
-				Saveable[] models = getSaveables(part);
-				if (Arrays.asList(models).contains(model)) {
-					pagePartsWithSameModels.add(part);
-				}
-			}
-		}
-		for (Iterator i = closingPartsWithSameModel.iterator(); i.hasNext();) {
-			IWorkbenchPart part = (IWorkbenchPart) i.next();
-			pagePartsWithSameModels.remove(part);
-		}
-		return pagePartsWithSameModels.isEmpty();
-	}
-	
-	/*
-	 * Saves the workbench part.
-	 */
-	public boolean savePart(final ISaveablePart saveable, IWorkbenchPart part,
-			boolean confirm) {
-		return SaveableHelper.savePart(saveable, part, window, confirm);
-	}
-
-	/**
-	 * @see IPersistablePart
-	 */
-	public IStatus saveState(final IMemento memento) {
-
-		final MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID,
-				IStatus.OK,
-				WorkbenchMessages.EditorManager_problemsSavingEditors, null);
-
-		// Save the editor area workbooks layout/relationship
-		IMemento editorAreaMem = memento
-				.createChild(IWorkbenchConstants.TAG_AREA);
-		result.add(editorPresentation.saveState(editorAreaMem));
-
-		// Save the active workbook id
-		editorAreaMem.putString(IWorkbenchConstants.TAG_ACTIVE_WORKBOOK,
-				editorPresentation.getActiveEditorWorkbookID());
-
-		// Get each workbook
-		ArrayList workbooks = editorPresentation.getWorkbooks();
-
-		for (Iterator iter = workbooks.iterator(); iter.hasNext();) {
-			EditorStack workbook = (EditorStack) iter.next();
-
-			// Use the list of editors found in EditorStack; fix for 24091
-			EditorPane editorPanes[] = workbook.getEditors();
-
-			for (int i = 0; i < editorPanes.length; i++) {
-				// Save each open editor.
-				IEditorReference editorReference = editorPanes[i]
-						.getEditorReference();
-				EditorReference e = (EditorReference) editorReference;
-				final IEditorPart editor = editorReference.getEditor(false);
-				if (editor == null) {
-					if (e.getMemento() != null) {
-						IMemento editorMem = memento
-								.createChild(IWorkbenchConstants.TAG_EDITOR);
-						editorMem.putMemento(e.getMemento());
-					}
-					continue;
-				}
-
-				// for dynamic UI - add the next line to replace the subsequent
-				// code which is commented out
-				saveEditorState(memento, e, result);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Shows an editor. If <code>setFocus == true</code> then give it focus,
-	 * too.
-	 * 
-	 * @return true if the active editor was changed, false if not.
-	 */
-	public boolean setVisibleEditor(IEditorReference newEd, boolean setFocus) {
-		return editorPresentation.setVisibleEditor(newEd, setFocus);
-	}
-
-	private IPathEditorInput getPathEditorInput(IEditorInput input) {
-		if (input instanceof IPathEditorInput) {
-			return (IPathEditorInput) input;
-		}
-
-		return (IPathEditorInput) Util.getAdapter(input, IPathEditorInput.class);
-	}
-
-	private class InnerEditor extends EditorReference {
-
-		private IEditorReference outerEditor;
-
-		public InnerEditor(IEditorReference outerEditor, IEditorInput input,
-				EditorDescriptor desc) {
-			super(EditorManager.this, input, desc);
-			this.outerEditor = outerEditor;
-		}
-
-		protected PartPane createPane() {
-			return new MultiEditorInnerPane(
-					(EditorPane) ((EditorReference) outerEditor).getPane(),
-					this, page, editorPresentation.getActiveWorkbook());
-		}
-
-	}
-
-	/*
-	 * Made public for Mylar in 3.3 - see bug 138666. Can be made private once
-	 * we have real API for this.
-	 */
-	public void restoreEditorState(IMemento editorMem,
-			ArrayList visibleEditors, IEditorReference[] activeEditor,
-			MultiStatus result) {
-		// String strFocus = editorMem.getString(IWorkbenchConstants.TAG_FOCUS);
-		// boolean visibleEditor = "true".equals(strFocus); //$NON-NLS-1$
-		final EditorReference e = new EditorReference(this, editorMem);
-
-		// if the editor is not visible, ensure it is put in the correct
-		// workbook. PR 24091
-
-		final String workbookID = editorMem
-				.getString(IWorkbenchConstants.TAG_WORKBOOK);
-
-		try {
-			StartupThreading.runWithPartInitExceptions(new StartupRunnable () {
-
-				public void runWithException() throws Throwable {
-					createEditorTab(e, workbookID);
-				}});
-			
-		} catch (PartInitException ex) {
-			result.add(ex.getStatus());
-		}
-
-		String strActivePart = editorMem
-				.getString(IWorkbenchConstants.TAG_ACTIVE_PART);
-		if ("true".equals(strActivePart)) { //$NON-NLS-1$
-			activeEditor[0] = e;
-		}
-
-		String strFocus = editorMem.getString(IWorkbenchConstants.TAG_FOCUS);
-		boolean visibleEditor = "true".equals(strFocus); //$NON-NLS-1$
-		if (visibleEditor) {
-			visibleEditors.add(e);
-		}
-	}
-
-	// for dynamic UI
-	protected void saveEditorState(IMemento mem, IEditorReference ed,
-			MultiStatus res) {
-		final EditorReference editorRef = (EditorReference) ed;
-		final IEditorPart editor = ed.getEditor(false);
-		final IMemento memento = mem;
-		final MultiStatus result = res;
-		if (!(editor.getEditorSite() instanceof EditorSite)) {
-			return;
-		}
-		final EditorSite site = (EditorSite) editor.getEditorSite();
-		if (site.getPane() instanceof MultiEditorInnerPane) {
-			return;
-		}
-
-		SafeRunner.run(new SafeRunnable() {
-			public void run() {
-				// Get the input.
-				IEditorInput input = editor.getEditorInput();
-				if (!input.exists()) {
-					return;
-				}
-				IPersistableElement persistable = input.getPersistable();
-				if (persistable == null) {
-					return;
-				}
-
-				// Save editor.
-				IMemento editorMem = memento
-						.createChild(IWorkbenchConstants.TAG_EDITOR);
-				editorMem.putString(IWorkbenchConstants.TAG_TITLE, editorRef
-						.getTitle());
-				editorMem.putString(IWorkbenchConstants.TAG_NAME, editorRef
-						.getName());
-				editorMem.putString(IWorkbenchConstants.TAG_ID, editorRef
-						.getId());
-				editorMem.putString(IWorkbenchConstants.TAG_TOOLTIP, editorRef
-						.getTitleToolTip());
-
-				editorMem.putString(IWorkbenchConstants.TAG_PART_NAME,
-						editorRef.getPartName());
-				
-				if (editor instanceof IWorkbenchPart3) {
-					Map properties = ((IWorkbenchPart3) editor)
-							.getPartProperties();
-					if (!properties.isEmpty()) {
-						IMemento propBag = editorMem
-								.createChild(IWorkbenchConstants.TAG_PROPERTIES);
-						Iterator i = properties.entrySet().iterator();
-						while (i.hasNext()) {
-							Map.Entry entry = (Map.Entry) i.next();
-							IMemento p = propBag.createChild(
-									IWorkbenchConstants.TAG_PROPERTY,
-									(String) entry.getKey());
-							p.putTextData((String) entry.getValue());
-						}
-					}
-				}
-
-				if (editorRef.isPinned()) {
-					editorMem.putString(IWorkbenchConstants.TAG_PINNED, "true"); //$NON-NLS-1$
-				}
-
-				EditorPane editorPane = (EditorPane) ((EditorSite) editor
-						.getEditorSite()).getPane();
-				editorMem.putString(IWorkbenchConstants.TAG_WORKBOOK,
-						editorPane.getWorkbook().getID());
-
-				if (editor == page.getActivePart()) {
-					editorMem.putString(IWorkbenchConstants.TAG_ACTIVE_PART,
-							"true"); //$NON-NLS-1$
-				}
-
-				if (editorPane == editorPane.getWorkbook().getSelection()) {
-					editorMem.putString(IWorkbenchConstants.TAG_FOCUS, "true"); //$NON-NLS-1$
-				}
-
-				if (input instanceof IPathEditorInput) {
-					IPath path = ((IPathEditorInput) input).getPath();
-					if (path != null) {
-						editorMem.putString(IWorkbenchConstants.TAG_PATH, path
-								.toString());
-					}
-				}
-
-				// Save input.
-				IMemento inputMem = editorMem
-						.createChild(IWorkbenchConstants.TAG_INPUT);
-				inputMem.putString(IWorkbenchConstants.TAG_FACTORY_ID,
-						persistable.getFactoryId());
-				persistable.saveState(inputMem);
-				
-				// any editors that want to persist state
-				if (editor instanceof IPersistableEditor) {
-					IMemento editorState = editorMem
-							.createChild(IWorkbenchConstants.TAG_EDITOR_STATE);
-					((IPersistableEditor) editor).saveState(editorState);
-				}
-			}
-
-			public void handleException(Throwable e) {
-				result
-						.add(new Status(
-								IStatus.ERROR,
-								PlatformUI.PLUGIN_ID,
-								0,
-								NLS
-										.bind(
-												WorkbenchMessages.EditorManager_unableToSaveEditor,
-												editorRef.getTitle()), e));
-			}
-		});
-	}
-
-	// for dynamic UI
-	public IMemento getMemento(IEditorReference e) {
-		if (e instanceof EditorReference) {
-			return ((EditorReference) e).getMemento();
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension,
-	 *      java.lang.Object[])
-	 */
-	public void removeExtension(IExtension source, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof IEditorPart) {
-				// close the editor and clean up the editor history
-
-				IEditorPart editor = (IEditorPart) objects[i];
-				IEditorInput input = editor.getEditorInput();
-				page.closeEditor(editor, true);
-				((Workbench) window.getWorkbench()).getEditorHistory().remove(
-						input);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker,
-	 *      org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		// Nothing to do
-	}
-
-	/**
-	 * @return
-	 */
-	/*package*/ IEditorReference openEmptyTab() {
-		IEditorInput input = new NullEditorInput();
-		EditorDescriptor desc = (EditorDescriptor) ((EditorRegistry) getEditorRegistry())
-				.findEditor(EditorRegistry.EMPTY_EDITOR_ID);
-		EditorReference result = new EditorReference(this, input, desc);
-		try {
-			createEditorTab(result, ""); //$NON-NLS-1$
-			return result;
-		} catch (PartInitException e) {
-			StatusManager.getManager().handle(
-					StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH, e));
-		}
-		return null;
-	}
-	
-	public static boolean useIPersistableEditor() {
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		return store.getBoolean(IPreferenceConstants.USE_IPERSISTABLE_EDITORS);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorMenuManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorMenuManager.java
deleted file mode 100644
index a940653..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorMenuManager.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManagerOverrides;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.SubMenuManager;
-import org.eclipse.ui.actions.RetargetAction;
-
-/**
- * An <code>EditorMenuManager</code> is used to sort the contributions
- * made by an editor so that they always appear after the action sets.  
- */
-public class EditorMenuManager extends SubMenuManager {
-    private ArrayList wrappers;
-
-    private boolean enabledAllowed = true;
-
-    private class Overrides implements IContributionManagerOverrides {
-        /**
-         * Indicates that the items of this manager are allowed to enable;
-         * <code>true</code> by default.
-         */
-        public void updateEnabledAllowed() {
-            // update the items in the map
-            IContributionItem[] items = EditorMenuManager.super.getItems();
-            for (int i = 0; i < items.length; i++) {
-                IContributionItem item = items[i];
-                item.update(IContributionManagerOverrides.P_ENABLED);
-            }
-            // update the wrapped menus
-            if (wrappers != null) {
-                for (int i = 0; i < wrappers.size(); i++) {
-                    EditorMenuManager manager = (EditorMenuManager) wrappers
-                            .get(i);
-                    manager.setEnabledAllowed(enabledAllowed);
-                }
-            }
-        }
-
-        public Boolean getEnabled(IContributionItem item) {
-            if (((item instanceof ActionContributionItem) && (((ActionContributionItem) item)
-                    .getAction() instanceof RetargetAction))
-                    || enabledAllowed) {
-				return null;
-			} else {
-				return Boolean.FALSE;
-			}
-        }
-
-        public Integer getAccelerator(IContributionItem item) {
-            if (getEnabled(item) == null) {
-				return getParentMenuManager().getOverrides().getAccelerator(
-                        item);
-			} else {
-				// no acclerator if the item is disabled
-                return new Integer(0);
-			}
-        }
-
-        public String getAcceleratorText(IContributionItem item) {
-            return getParentMenuManager().getOverrides().getAcceleratorText(
-                    item);
-        }
-
-        public String getText(IContributionItem item) {
-            return getParentMenuManager().getOverrides().getText(item);
-        }
-    }
-
-    private Overrides overrides = new Overrides();
-
-    /**
-     * Constructs a new editor manager.
-     */
-    public EditorMenuManager(IMenuManager mgr) {
-        super(mgr);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public IContributionItem[] getItems() {
-        return getParentMenuManager().getItems();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     */
-    public IContributionManagerOverrides getOverrides() {
-        return overrides;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     * Inserts the new item after any action set contributions which may
-     * exist within the toolbar to ensure a consistent order for actions.
-     */
-    public void insertAfter(String id, IContributionItem item) {
-        IContributionItem refItem = PluginActionSetBuilder.findInsertionPoint(
-                id, null, getParentMenuManager(), false);
-        if (refItem != null) {
-            super.insertAfter(refItem.getId(), item);
-        } else {
-            WorkbenchPlugin
-                    .log("Reference item " + id + " not found for action " + item.getId()); //$NON-NLS-1$ //$NON-NLS-2$
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContributionManager.
-     * Inserts the new item after any action set contributions which may
-     * exist within the toolbar to ensure a consistent order for actions.
-     */
-    public void prependToGroup(String groupName, IContributionItem item) {
-        insertAfter(groupName, item);
-    }
-
-    /**
-     * Sets the visibility of the manager. If the visibility is <code>true</code>
-     * then each item within the manager appears within the parent manager.
-     * Otherwise, the items are not visible.
-     * <p>
-     * If force visibility is <code>true</code>, or grayed out if force visibility is <code>false</code>
-     * <p>
-     * This is a workaround for the layout flashing when editors contribute
-     * large amounts of items.</p>
-     *
-     * @param visible the new visibility
-     * @param forceVisibility whether to change the visibility or just the
-     * 		enablement state.
-     */
-    public void setVisible(boolean visible, boolean forceVisibility) {
-        if (visible) {
-            if (forceVisibility) {
-                // Make the items visible 
-                if (!enabledAllowed) {
-					setEnabledAllowed(true);
-				}
-            } else {
-                if (enabledAllowed) {
-					setEnabledAllowed(false);
-				}
-            }
-            if (!isVisible()) {
-				setVisible(true);
-			}
-        } else {
-            if (forceVisibility) {
-				// Remove the editor menu items
-                setVisible(false);
-			} else {
-				// Disable the editor menu items.
-                setEnabledAllowed(false);
-			}
-        }
-    }
-
-    /**
-     * Sets the enablement ability of all the items contributed by the editor.
-     *
-     * @param enabledAllowed <code>true</code> if the items may enable
-     * @since 2.0
-     */
-    public void setEnabledAllowed(boolean enabledAllowed) {
-        if (this.enabledAllowed == enabledAllowed) {
-			return;
-		}
-        this.enabledAllowed = enabledAllowed;
-        overrides.updateEnabledAllowed();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on SubMenuManager.
-     */
-    protected SubMenuManager wrapMenu(IMenuManager menu) {
-        if (wrappers == null) {
-			wrappers = new ArrayList();
-		}
-        EditorMenuManager manager = new EditorMenuManager(menu);
-        wrappers.add(manager);
-        return manager;
-    }
-
-    protected IAction[] getAllContributedActions() {
-        HashSet set = new HashSet();
-        getAllContributedActions(set);
-        return (IAction[]) set.toArray(new IAction[set.size()]);
-    }
-
-    protected void getAllContributedActions(HashSet set) {
-        IContributionItem[] items = super.getItems();
-        for (int i = 0; i < items.length; i++) {
-			getAllContributedActions(set, items[i]);
-		}
-        if (wrappers == null) {
-			return;
-		}
-        for (Iterator iter = wrappers.iterator(); iter.hasNext();) {
-            EditorMenuManager element = (EditorMenuManager) iter.next();
-            element.getAllContributedActions(set);
-        }
-    }
-
-    protected void getAllContributedActions(HashSet set, IContributionItem item) {
-        if (item instanceof MenuManager) {
-            IContributionItem subItems[] = ((MenuManager) item).getItems();
-            for (int j = 0; j < subItems.length; j++) {
-				getAllContributedActions(set, subItems[j]);
-			}
-        } else if (item instanceof ActionContributionItem) {
-            set.add(((ActionContributionItem) item).getAction());
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPane.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPane.java
deleted file mode 100644
index 5535ea9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPane.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * An EditorPane is a subclass of PartPane offering extended
- * behavior for workbench editors.
- */
-public class EditorPane extends PartPane {
-    private EditorStack workbook;
-
-   
-    /**
-     * Constructs an editor pane for an editor part.
-     * @param ref
-     * @param page
-     * @param workbook
-     */
-    public EditorPane(IEditorReference ref, WorkbenchPage page,
-            EditorStack workbook) {
-        super(ref, page);
-        this.workbook = workbook;
-    }
-
-    /**
-     * Editor panes do not need a title bar. The editor
-     * title and close icon are part of the tab containing
-     * the editor. Tools and menus are added directly into
-     * the workbench toolbar and menu bar.
-     */
-    protected void createTitleBar() {
-        // do nothing
-    }
-
-    /**
-     * @see PartPane#doHide()
-     */
-    public void doHide() {
-        getPage().closeEditor(getEditorReference(), true);
-    }
-
-    /**
-     * Answer the editor part child.
-     * @return {@link IEditorReference}
-     */
-    public IEditorReference getEditorReference() {
-        return (IEditorReference) getPartReference();
-    }
-
-    /**
-     * Answer the SWT widget style.
-     */
-    int getStyle() {
-        return SWT.NONE;
-    }
-
-    /**
-     * Answer the editor workbook container
-     * @return {@link EditorStack}
-     */
-    public EditorStack getWorkbook() {
-        return workbook;
-    }
-
-    /**
-     * Notify the workbook page that the part pane has
-     * been activated by the user.
-     */
-    public void requestActivation() {
-        // By clearing the active workbook if its not the one
-        // associated with the editor, we reduce draw flicker
-        if (!workbook.isActiveWorkbook()) {
-			workbook.getEditorArea().setActiveWorkbook(null, false);
-		}
-
-        super.requestActivation();
-    }
-
-    /**
-     * Set the editor workbook container
-     * @param editorWorkbook
-     */
-    public void setWorkbook(EditorStack editorWorkbook) {
-        workbook = editorWorkbook;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartPane.
-     */
-    /* package */void shellActivated() {
-        //this.workbook.drawGradient();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartPane.
-     */
-    /* package */void shellDeactivated() {
-        //this.workbook.drawGradient();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#setFocus()
-     */
-    public void setFocus() {
-        super.setFocus();
-
-        workbook.becomeActiveWorkbook(true);
-    }
-
-    /**
-     * Indicate focus in part.
-     */
-    public void showFocus(boolean inFocus) {
-        if (inFocus) {
-			this.workbook.becomeActiveWorkbook(true);
-		} else {
-			this.workbook
-                    .setActive(this.workbook.isActiveWorkbook() ? StackPresentation.AS_ACTIVE_NOFOCUS
-                            : StackPresentation.AS_INACTIVE);
-		}
-    }
-
-    /**
-     * Add the pin menu item on the editor system menu.
-     * @param parent
-     */
-    protected void addPinEditorItem(Menu parent) {
-        IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
-		boolean reuseEditor = store
-				.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)
-				|| ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).alwaysShowPinAction();
-        if (!reuseEditor) {
-            return;
-        }
-
-        final WorkbenchPartReference ref = (WorkbenchPartReference)getPartReference();
-
-        final MenuItem item = new MenuItem(parent, SWT.CHECK);
-        item.setText(WorkbenchMessages.EditorPane_pinEditor);
-        item.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                IWorkbenchPart part = getPartReference().getPart(true);
-                if (part == null) {
-                    // this should never happen
-                    item.setSelection(false);
-                    item.setEnabled(false);
-                } else {
-                    ref.setPinned(item.getSelection());
-                }
-            }
-        });
-        item.setEnabled(true);
-        item.setSelection(ref.isPinned());
-    }
-
-    /**
-     * Update the title attributes for the pane.
-     */
-    public void updateTitles() {
-        //	  TODO commented during presentation refactor 	workbook.updateEditorTab(getEditorReference());
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#testInvariants()
-     */
-    public void testInvariants() {
-        super.testInvariants();
-
-        if (getContainer() != null) {
-            Assert.isTrue(getContainer() == workbook);
-        }
-    }
-
-   
-    /**
-     * Get the name of editor.
-     * @return String
-     */
-    public String getName() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#getToolBar()
-     */
-    public Control getToolBar() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#isCloseable()
-     */
-    public boolean isCloseable() {
-        return true;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPluginAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPluginAction.java
deleted file mode 100644
index aa6e647..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorPluginAction.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IEditorActionDelegate;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.WorkbenchException;
-
-/**
- * Extends PartPluginAction for usage in editor parts. Objects
- * of this class are created by reading the registry (extension point "editorActions").
- */
-public final class EditorPluginAction extends PartPluginAction {
-    private IEditorPart currentEditor;
-
-    /**
-     * This class adds the requirement that action delegates
-     * loaded on demand implement IViewActionDelegate
-     */
-    public EditorPluginAction(IConfigurationElement actionElement,
-            IEditorPart part, String id, int style) {
-        super(actionElement, id, style);
-        if (part != null) {
-			editorChanged(part);
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected IActionDelegate validateDelegate(Object obj)
-            throws WorkbenchException {
-        if (obj instanceof IEditorActionDelegate) {
-			return (IEditorActionDelegate) obj;
-		} else {
-			throw new WorkbenchException(
-                    "Action must implement IEditorActionDelegate"); //$NON-NLS-1$
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected void initDelegate() {
-        super.initDelegate();
-        ((IEditorActionDelegate) getDelegate()).setActiveEditor(this,
-                currentEditor);
-    }
-
-    /**
-     * Handles editor change by re-registering for selection
-     * changes and updating IEditorActionDelegate.
-     */
-    public void editorChanged(IEditorPart part) {
-        if (currentEditor != null) {
-			unregisterSelectionListener(currentEditor);
-		}
-
-        currentEditor = part;
-
-        if (getDelegate() == null && isOkToCreateDelegate()) {
-			createDelegate();
-		}
-        if (getDelegate() != null) {
-			((IEditorActionDelegate) getDelegate()).setActiveEditor(this, part);
-		}
-
-        if (part != null) {
-			registerSelectionListener(part);
-		}
-    }
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.PluginAction#dispose()
-	 */
-	public void dispose() {
-        if (currentEditor != null) {
-            unregisterSelectionListener(currentEditor);
-			currentEditor = null;
-        }
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java
deleted file mode 100644
index 8ef5e10..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorReference.java
+++ /dev/null
@@ -1,788 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableEditor;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IReusableEditor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart2;
-import org.eclipse.ui.IWorkbenchPart3;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.editorsupport.ComponentSupport;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.part.NullEditorInput;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.part.IWorkbenchPartOrientation;
-import org.eclipse.ui.part.MultiEditor;
-import org.eclipse.ui.part.MultiEditorInput;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-public class EditorReference extends WorkbenchPartReference implements
-        IEditorReference {
-
-    /**
-     * 
-     */
-    private final EditorManager manager;
-
-    private IMemento editorMemento;
-
-	private IMemento editorState = null;
-
-    /**
-     * Flag that lets us detect malfunctioning editors that don't fire PROP_INPUT events.
-     * It is never needed for a correctly-functioning
-     */
-    private boolean expectingInputChange = false;
-    
-    /**
-     * Flag that determines whether we've already reported that this editor is malfunctioning.
-     * This prevents us from spamming the event log if we repeatedly detect the same error in
-     * a particular editor. If we ever detect an editor is violating its public contract in
-     * a way we can recover from (such as a missing property change event), we report the error
-     * once and then silently ignore errors from the same editor.
-     */
-    private boolean reportedMalfunctioningEditor = false;
-    
-    /**
-     * User-readable name of the editor's input
-     */
-    String name;
-
-    String factoryId;
-
-    IEditorInput restoredInput;
-    
-	/**
-	 * If the reference is instantiated as a MultiEditor, we need to dispose the
-	 * inner references correctly.
-	 */
-	private IEditorReference[] multiEditorChildren = null;
-
-    
-    /**
-	 * @param manager
-	 *            The editor manager for this reference
-	 * @param input
-	 *            our input
-	 * @param desc
-	 *            the descriptor from the declaration
-	 */
-	public EditorReference(EditorManager manager, IEditorInput input,
-			EditorDescriptor desc) {
-		this(manager, input, desc, null);
-	}
-    
-    /**
-	 * @param manager
-	 *            The editor manager for this reference
-	 * @param input
-	 *            our input
-	 * @param desc
-	 *            the descriptor from the declaration
-	 * @param editorState
-	 *            propogate state from another editor. Can be <code>null</code>.
-	 */
-	public EditorReference(EditorManager manager, IEditorInput input,
-			EditorDescriptor desc, IMemento editorState) {
-		this.manager = manager;
-		initListenersAndHandlers();
-		restoredInput = input;
-		this.editorState = editorState;
-		init(desc.getId(), desc.getLabel(),
-				"", desc.getImageDescriptor(), desc.getLabel(), ""); //$NON-NLS-1$//$NON-NLS-2$
-	}
-    
-    /**
-	 * Constructs a new editor reference for use by editors being restored from
-	 * a memento.
-	 */
-    EditorReference(EditorManager manager, IMemento memento) {
-        this.manager = manager;
-        initListenersAndHandlers();
-        this.editorMemento = memento;
-        if (EditorManager.useIPersistableEditor()) {
-        	editorState = editorMemento.getChild(IWorkbenchConstants.TAG_EDITOR_STATE);
-        } else {
-        	editorState = null;
-        }
-        String id = memento.getString(IWorkbenchConstants.TAG_ID);
-        String title = memento.getString(IWorkbenchConstants.TAG_TITLE);
-        String tooltip = Util.safeString(memento
-                .getString(IWorkbenchConstants.TAG_TOOLTIP));
-        String partName = memento
-                .getString(IWorkbenchConstants.TAG_PART_NAME);
-
-        IMemento propBag = memento.getChild(IWorkbenchConstants.TAG_PROPERTIES);
-		if (propBag != null) {
-			IMemento[] props = propBag
-					.getChildren(IWorkbenchConstants.TAG_PROPERTY);
-			for (int i = 0; i < props.length; i++) {
-				propertyCache.put(props[i].getID(), props[i].getTextData());
-			}
-		}
-
-		// For compatibility set the part name to the title if not found
-        if (partName == null) {
-            partName = title;
-        }
-
-        // Get the editor descriptor.
-        EditorDescriptor desc = null;
-        if (id != null) {
-            desc = getDescriptor(id);
-        }
-        // desc may be null if id is null or desc is not found, but findImage below handles this
-        String location = memento.getString(IWorkbenchConstants.TAG_PATH);
-        IPath path = location == null ? null : new Path(location);
-        ImageDescriptor iDesc = this.manager.findImage(desc, path);
-
-        this.name = memento.getString(IWorkbenchConstants.TAG_NAME);
-        if (this.name == null) {
-            this.name = title;
-        }
-        setPinned("true".equals(memento.getString(IWorkbenchConstants.TAG_PINNED))); //$NON-NLS-1$
-
-        IMemento inputMem = memento.getChild(IWorkbenchConstants.TAG_INPUT);
-        if (inputMem != null) {
-            this.factoryId = inputMem
-                    .getString(IWorkbenchConstants.TAG_FACTORY_ID);
-        }
-
-        init(id, title, tooltip, iDesc, partName, ""); //$NON-NLS-1$
-    }
-
-    public EditorDescriptor getDescriptor() {
-        return getDescriptor(getId());
-    }
-    
-    /**
-     * @since 3.1
-     *
-     * @param id the id
-     * @return the editor descriptor
-     */
-    private EditorDescriptor getDescriptor(String id) {
-        EditorDescriptor desc;
-        IEditorRegistry reg = WorkbenchPlugin.getDefault()
-                .getEditorRegistry();
-        desc = (EditorDescriptor) reg.findEditor(id);
-        return desc;
-    }
-    
-    /**
-     * Initializes the necessary editor listeners and handlers
-     */
-    private void initListenersAndHandlers() {
-        // Create a property change listener to track the "close editors automatically"
-        // preference and show/remove the pin icon on editors
-        // Only 1 listener will be created in the EditorManager when necessary
-        this.manager.checkCreateEditorPropListener();
-        // Create a keyboard shortcut handler for pinning editors
-        // Only 1 handler will be created in the EditorManager when necessary
-        this.manager.checkCreatePinEditorShortcutKeyHandler();
-    }
-
-    protected PartPane createPane() {
-        return new EditorPane(this, this.manager.page, this.manager.editorPresentation.getActiveWorkbook());
-    }
-    
-    /**
-     * This method is called when there should be a change in the editor pin
-     * status (added or removed) so that it will ask its presentable part
-     * to fire a PROP_TITLE event in order for the presentation to request
-     * the new icon for this editor
-     */
-    public void pinStatusUpdated() {
-        firePropertyChange(IWorkbenchPart.PROP_TITLE);
-    }
-    
-    public String getFactoryId() {
-        IEditorPart editor = getEditor(false);
-        if (editor != null) {
-            IPersistableElement persistable = editor.getEditorInput()
-                    .getPersistable();
-            if (persistable != null) {
-				return persistable.getFactoryId();
-			}
-            return null;
-        }
-        return factoryId;
-    }
-
-    protected String computePartName() {
-        if (part instanceof IWorkbenchPart2) {
-            return super.computePartName();
-        }
-		return getRawTitle();
-    }
-
-    public String getName() {
-        if (part != null) {
-			return getEditor(false).getEditorInput().getName();
-		}
-        return name;
-    }
-
-    public IEditorPart getEditor(boolean restore) {
-        return (IEditorPart)getPart(restore);
-    }
-
-    protected void releaseReferences() {
-        super.releaseReferences();
-        editorMemento = null;
-        editorState = null;
-        name = null;
-        factoryId = null;
-        restoredInput = null;
-    }
-
-    void setName(String name) {
-        this.name = name;
-    }
-
-    public IMemento getMemento() {
-        return editorMemento;
-    }
-
-    public IWorkbenchPage getPage() {
-        return this.manager.page;
-    }
-
-    protected void doDisposePart() {
-    	if (multiEditorChildren!=null) {
-    		for (int i=0; i<multiEditorChildren.length; ++i) {
-    			EditorReference ref = (EditorReference)multiEditorChildren[i];
-    			if (ref!=null) {
-    				ref.dispose();
-    			}
-    		}
-    		multiEditorChildren = null;
-    	}
-
-    	IEditorPart editor = (IEditorPart) part;
-        super.doDisposePart();
-    	if (editor != null) {
-            EditorSite site = (EditorSite) editor.getEditorSite();
-            manager.disposeEditorActionBars((EditorActionBars) site.getActionBars());
-            site.dispose();
-        }
-        
-        this.manager.checkDeleteEditorResources();
-
-        editorMemento = null;
-        editorState = null;
-        restoredInput = new NullEditorInput();
-    }
-
-    public IEditorInput getEditorInput() throws PartInitException {
-        if (isDisposed()) {
-            if (!(restoredInput instanceof NullEditorInput)) {
-                restoredInput = new NullEditorInput();
-            }
-            return restoredInput;
-        }
-        
-        IEditorPart part = getEditor(false);
-        if (part != null) {
-            return part.getEditorInput();
-        }
-        return getRestoredInput();
-    }
-    
-    private IEditorInput getRestoredInput() throws PartInitException {
-        if (restoredInput != null) {
-            return restoredInput;
-        }
-        
-        // Get the input factory.
-        IMemento editorMem = getMemento();
-        if (editorMem == null) {
-            throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_no_persisted_state, getId(), getName()));
-        }
-        IMemento inputMem = editorMem
-                .getChild(IWorkbenchConstants.TAG_INPUT);
-        String factoryID = null;
-        if (inputMem != null) {
-            factoryID = inputMem
-                    .getString(IWorkbenchConstants.TAG_FACTORY_ID);
-        }
-        if (factoryID == null) {
-            throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_no_input_factory_ID, getId(), getName()));
-        }
-        IAdaptable input = null;
-        String label = null; // debugging only
-        if (UIStats.isDebugging(UIStats.CREATE_PART_INPUT)) {
-            label = getName() != null ? getName() : factoryID;
-        }
-        try {
-            UIStats.start(UIStats.CREATE_PART_INPUT, label);
-            IElementFactory factory = PlatformUI.getWorkbench()
-                    .getElementFactory(factoryID);
-            if (factory == null) {
-                throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_bad_element_factory, new Object[] { factoryID, getId(), getName() }));
-            }
-
-            // Get the input element.
-            input = factory.createElement(inputMem);
-            if (input == null) {
-                throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_create_element_returned_null, new Object[] { factoryID, getId(), getName() }));
-            }
-        } finally {
-            UIStats.end(UIStats.CREATE_PART_INPUT, input, label);
-        }
-        if (!(input instanceof IEditorInput)) {
-            throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_wrong_createElement_result, new Object[] { factoryID, getId(), getName() }));
-        }
-        restoredInput = (IEditorInput) input;
-        return restoredInput;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartReference#getTitleImage()
-     * This method will append a pin to the icon of the editor
-     * if the "automatically close editors" option in the
-     * preferences is enabled and the editor has been pinned.
-     */
-    public ImageDescriptor computeImageDescriptor() {
-        ImageDescriptor descriptor = super.computeImageDescriptor();
-        if (!isPinned()) {
-			return descriptor;
-		}
-
-        // Check if the pinned preference is set
-        IPreferenceStore prefStore = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        boolean bUsePin = prefStore
-				.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)
-				|| ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).alwaysShowPinAction();
-
-        if (!bUsePin) {
-			return descriptor;
-		}
-
-        ImageDescriptor pinDesc = this.manager.getEditorPinImageDesc();
-        if (pinDesc == null) {
-			return descriptor;
-		}
-
-        return new OverlayIcon(descriptor, pinDesc, new Point(16, 16));
-    }
-
-    /**
-     * Wrapper for restoring the editor. First, this delegates to busyRestoreEditorHelper
-     * to do the real work of restoring the view. If unable to restore the editor, this
-     * method tries to substitute an error part and return success.
-     *
-     * @return the created part
-     */
-    protected IWorkbenchPart createPart() {
-        if (EditorRegistry.EMPTY_EDITOR_ID.equals(getId())) {
-        	return getEmptyEditor(getDescriptor());
-        }
-        PartInitException exception = null;
-        
-        IWorkbenchPart result = null;
-        
-        // Try to restore the editor -- this does the real work of restoring the editor
-        //
-        try {
-            result = createPartHelper();
-        } catch (PartInitException e) {
-            exception = e;
-        }
-
-        
-        // If unable to create the part, create an error part instead
-        // and pass the error to the status handling facility
-        if (exception != null) {
-            
-            IStatus originalStatus = exception.getStatus();
-            IStatus logStatus = StatusUtil.newStatus(originalStatus,
-                    NLS.bind("Unable to create editor ID {0}: {1}",  //$NON-NLS-1$
-                            getId(), originalStatus.getMessage()));
-            IStatus displayStatus = StatusUtil.newStatus(originalStatus,
-            		NLS.bind(WorkbenchMessages.EditorManager_unableToCreateEditor,
-            				originalStatus.getMessage()));
-
-			// Pass the error to the status handling facility
-            StatusManager.getManager().handle(logStatus);
-            
-            ErrorEditorPart part = new ErrorEditorPart(displayStatus);
-            
-            IEditorInput input;
-            try {
-                input = getEditorInput();
-            } catch (PartInitException e1) {
-				input = new NullEditorInput(this);
-            }
-            
-            EditorPane pane = (EditorPane)getPane();
-            
-            pane.createControl((Composite) manager.page.getEditorPresentation().getLayoutPart().getControl());
-            
-            EditorDescriptor descr = getDescriptor();
-            
-            EditorSite site = new EditorSite(this, part, manager.page, descr);
-            
-            site.setActionBars(new EditorActionBars(manager.page, site.getWorkbenchWindow(), getId()));
-            
-			part.init(site, input);
-
-            Composite parent = (Composite)pane.getControl();
-            Composite content = new Composite(parent, SWT.NONE);
-            content.setLayout(new FillLayout());
-            
-            try {
-				part.createPartControl(content);
-			} catch (Exception e) {
-				content.dispose();
-				StatusUtil.handleStatus(e, StatusManager.SHOW
-						| StatusManager.LOG);
-				return null;
-			}
-
-            result = part;
-        }
-        
-        return result;
-    }
-    
-    protected void partPropertyChanged(Object source, int propId) {
-        
-        // Detect badly behaved editors that don't fire PROP_INPUT events
-        // when they're supposed to. This branch is only needed to handle
-        // malfunctioning editors.
-        if (propId == IWorkbenchPartConstants.PROP_INPUT) {
-            expectingInputChange = false;
-        }
-        
-        super.partPropertyChanged(source, propId);
-    }
-    
-    /**
-     * Attempts to set the input of the editor to the given input. Note that the input
-     * can't always be changed for an editor. Editors that don't implement IReusableEditor
-     * can't have their input changed once they've been materialized.
-     * 
-     * @since 3.1
-     *
-     * @param input new input
-     * @return true iff the input was actually changed
-     */
-    public boolean setInput(IEditorInput input) {
-
-        if (part != null) {
-            if (part instanceof IReusableEditor) {
-                IReusableEditor editor = (IReusableEditor) part;
-       
-                expectingInputChange = true;
-                
-                editor.setInput(input);
-                
-                // If the editor never fired a PROP_INPUT event, log the fact that we've discovered
-                // a buggy editor and fire the event for free. Firing the event for free isn't required
-                // and cannot be relied on (it only works if the input change was triggered by this
-                // method, and there are definitely other cases where events will still be lost),
-                // but older versions of the workbench did this so we fire it here in the spirit
-                // of playing nice.
-                if (expectingInputChange) {
-
-                    // Log the fact that this editor is broken
-                    reportMalfunction("Editor is not firing a PROP_INPUT event in response to IReusableEditor.setInput(...)"); //$NON-NLS-1$
-                    
-                    // Fire the property for free (can't be relied on since there are other ways the input
-                    // can change, but we do it here to be consistent with older versions of the workbench)
-                    firePropertyChange(IWorkbenchPartConstants.PROP_INPUT);
-                }
-                
-                return editor.getEditorInput() == input;
-
-            }
-            // Can't change the input if the editor already exists and isn't an IReusableEditor
-            return false;
-        }
-        
-        // Changing the input is trivial and always succeeds if the editor doesn't exist yet
-        if (input != restoredInput) {
-        	restoredInput = input;
-
-        	firePropertyChange(IWorkbenchPartConstants.PROP_INPUT);
-        }
-        
-        return true;
-    }
-
-    /**
-     * Reports a recoverable malfunction in the system log. A recoverable malfunction would be
-     * something like failure to fire an expected property change. Only the first malfunction is
-     * recorded to avoid spamming the system log with repeated failures in the same editor.
-     * 
-     * @since 3.1
-     *
-     * @param string
-     */
-    private void reportMalfunction(String string) {
-		if (!reportedMalfunctioningEditor) {
-			reportedMalfunctioningEditor = true;
-
-			String errorMessage = "Problem detected with part " + getId(); //$NON-NLS-1$
-			if (part != null) {
-				errorMessage += " (class = " + part.getClass().getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			errorMessage += ": " + string; //$NON-NLS-1$
-
-			StatusManager.getManager().handle(
-					StatusUtil.newStatus(getDescriptor().getPluginId(),
-							errorMessage, null));
-		}
-	}
-
-    private IEditorPart createPartHelper() throws PartInitException {
-        
-        // Things that will need to be disposed if an exception occurs (listed
-		// in the order they
-        // need to be disposed, and set to null if they haven't been created yet)
-        Composite content = null;
-        IEditorPart part = null;
-        EditorActionBars actionBars = null;
-        EditorSite site = null;
-        
-        try {
-            IEditorInput editorInput = getEditorInput();
-            
-            // Get the editor descriptor.
-            String editorID = getId();
-            EditorDescriptor desc = getDescriptor();
-            
-            if (desc == null) {
-                throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_missing_editor_descriptor, editorID));
-            }
-            
-            
-            if (desc.isInternal()) {
-                // Create an editor instance.
-                try {
-                    UIStats.start(UIStats.CREATE_PART, editorID);
-                    part = manager.createPart(desc);
-                    
-                    if (part != null && part instanceof MultiEditor) {
-    					multiEditorChildren = manager.openMultiEditor(this,
-    						(MultiEditor) part, (MultiEditorInput) editorInput);
-    				}
-                    if (part instanceof IWorkbenchPart3) {
-                    	createPartProperties((IWorkbenchPart3)part);
-                    }
-                } finally {
-                    UIStats.end(UIStats.CREATE_PART, this, editorID);
-                }
-                
-            } else if (desc.getId().equals(
-                    IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID)) {
-                
-                part = ComponentSupport.getSystemInPlaceEditor();
-                
-                if (part == null) {
-                    throw new PartInitException(WorkbenchMessages.EditorManager_no_in_place_support);
-                }
-            } else {
-                throw new PartInitException(NLS.bind(WorkbenchMessages.EditorManager_invalid_editor_descriptor, editorID));
-            }
-            // Create a pane for this part
-            PartPane pane = getPane();
-    
-            pane.createControl((Composite) manager.page.getEditorPresentation().getLayoutPart().getControl());
-            
-            // Create controls
-            int style = SWT.NONE;
-            if(part instanceof IWorkbenchPartOrientation){
-                style = ((IWorkbenchPartOrientation) part).getOrientation();
-            }
-    
-            // Link everything up to the part reference (the part reference itself should not have
-            // been modified until this point)
-            site = manager.createSite(this, part, desc, editorInput);
-            
-            // if there is saved state that's appropriate, pass it on
-            if (part instanceof IPersistableEditor && editorState != null) {
-				((IPersistableEditor) part).restoreState(editorState);
-			}
-            
-            // Remember the site and the action bars (now that we've created them, we'll need to dispose
-            // them if an exception occurs)
-            actionBars = (EditorActionBars) site.getActionBars();
-            
-            Composite parent = (Composite)pane.getControl();
-            content = new Composite(parent, style);
-    
-            content.setLayout(new FillLayout());
-    
-            try {
-                UIStats.start(UIStats.CREATE_PART_CONTROL, editorID);
-                part.createPartControl(content);
-            
-                parent.layout(true);
-            } finally {
-                UIStats.end(UIStats.CREATE_PART_CONTROL, part, editorID);
-            }
-    
-            // The editor should now be fully created. Exercise its public interface, and sanity-check
-            // it wherever possible. If it's going to throw exceptions or behave badly, it's much better
-            // that it does so now while we can still cancel creation of the part.
-            PartTester.testEditor(part);
-            
-            return part;
-            
-        } catch (Exception e) {
-            // Dispose anything which we allocated in the try block
-            if (content != null) {
-                try {
-					content.dispose();
-				} catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-            }
-    
-            if (part != null) {
-                try {
-                    part.dispose();
-                } catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-            }
-            
-            if (actionBars != null) {
-                try {
-                    manager.disposeEditorActionBars(actionBars);
-                } catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-            }
-            
-            if (site != null) {
-                try {
-                    site.dispose();
-                } catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-            }
-            
-            throw new PartInitException(StatusUtil.getLocalizedMessage(e), StatusUtil.getCause(e));
-        }
-    
-    }
-    
-    /**
-     * A quick way of finding out if this reference points to a MultiEditor.
-     * It depends on the fact that a MultiEditor does not lazily
-     * instantiate it's child editors.
-     * 
-     * @return true if it has inner editor reference or the input is
-     * MultiEditorInput.
-     */
-    public boolean isMultiReference() {
-    	return multiEditorChildren!=null || restoredInput instanceof MultiEditorInput;
-    }
-
-	/**
-	 * Creates and returns an empty editor (<code>ErrorEditorPart</code>).
-	 * 
-	 * @param descr the editor descriptor
-	 * @return the empty editor part or <code>null</code> in case of an exception
-	 */
-	public IEditorPart getEmptyEditor(EditorDescriptor descr) {
-        ErrorEditorPart part = new ErrorEditorPart();
-        
-        IEditorInput input;
-        try {
-            input = getEditorInput();
-        } catch (PartInitException e1) {
-			input = new NullEditorInput(this);
-        }
-        
-        EditorPane pane = (EditorPane)getPane();
-        
-        pane.createControl((Composite) manager.page.getEditorPresentation().getLayoutPart().getControl());
-        
-        EditorSite site = new EditorSite(this, part, manager.page, descr);
-        
-        site.setActionBars(new EditorActionBars(manager.page, site.getWorkbenchWindow(), getId()));
-
-		part.init(site, input);
-
-        Composite parent = (Composite)pane.getControl();
-        Composite content = new Composite(parent, SWT.NONE);
-        content.setLayout(new FillLayout());
-        
-        try {
-			part.createPartControl(content);
-		} catch (Exception e) {
-			content.dispose();
-			StatusManager.getManager().handle(
-					StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH, e));
-			return null;
-		}
-
-        this.part = part;
-        // Add a dispose listener to the part. This dispose listener does nothing but log an exception
-        // if the part's widgets get disposed unexpectedly. The workbench part reference is the only
-        // object that should dispose this control, and it will remove the listener before it does so.
-
-        part.setPartName("(Empty)"); //$NON-NLS-1$
-        refreshFromPart();
-        releaseReferences();
-        
-        if (((WorkbenchPage)getPage()).getActiveEditorReference()!=this) {
-        	fireInternalPropertyChange(INTERNAL_PROPERTY_OPENED);
-        }
-        
-        return part;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSashContainer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSashContainer.java
deleted file mode 100644
index 23c6e83..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSashContainer.java
+++ /dev/null
@@ -1,637 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.presentations.PresentationSerializer;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * Represents the area set aside for editor workbooks.
- * This container only accepts EditorStack and PartSash
- * as layout parts.
- *
- * Note no views are allowed within this container.
- */
-public class EditorSashContainer extends PartSashContainer {
-
-    static final String DEFAULT_WORKBOOK_ID = "DefaultEditorWorkbook";//$NON-NLS-1$
-
-    private ArrayList editorWorkbooks = new ArrayList(3);
-
-    private EditorStack activeEditorWorkbook;
-
-    private DropTarget dropTarget;
-
-    public EditorSashContainer(String editorId, WorkbenchPage page, Composite parent) {
-        super(editorId, page, parent);
-
-        createDefaultWorkbook();
-    }
-
-    
-    /**
-     * Add an editor to the active workbook.
-     */
-    public void addEditor(EditorPane pane, EditorStack stack) {
-        //EditorStack workbook = getActiveWorkbook();
-        stack.add(pane);
-    }
-
-    /* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.PartSashContainer#addChild(org.eclipse.ui.internal.PartSashContainer.RelationshipInfo)
-	 */
-	protected void addChild(RelationshipInfo info) {
-		super.addChild(info);
-		
-		updateStackButtons();
-	}
-	
-    /**
-	 * Hides the min/max buttons for all editor stacks
-	 * -except- for the upper/left one.
-	 */
-	public void updateStackButtons() {
-		 // This is applicable only when the new
-		 // min/max behaviour is being used
-		Perspective persp = getPage().getActivePerspective();
-        if (!Perspective.useNewMinMax(persp))
-        	return;
-		
-		// Find the upper Right editor stack
-		LayoutPart[] stacks = getChildren();
-		EditorStack winner = getUpperRightEditorStack(stacks);
-		
-		// Now hide the buttons for all but the upper right stack
-		for (int i = 0; i < stacks.length; i++) {
-			if (!(stacks[i] instanceof EditorStack))
-				continue;
-			((EditorStack)stacks[i]).showMinMax(stacks[i] == winner);
-		}
-		
-		// Force the stack's presentation state to match its perspective
-		persp.refreshEditorAreaVisibility();
-	}
-
-	/**
-	 * @param stacks 
-	 * @return the EditorStack in the upper right position
-	 */
-	public EditorStack getUpperRightEditorStack(LayoutPart[] stacks) {
-		if (stacks == null)
-			stacks = getChildren();
-		
-		// Find the upper Right editor stack
-		EditorStack winner = null;
-		Rectangle winnerRect = null;
-
-		for (int i = 0; i < stacks.length; i++) {
-			if (!(stacks[i] instanceof EditorStack))
-				continue;
-			
-			EditorStack stack = (EditorStack) stacks[i];
-			Rectangle bb = stack.getBounds();
-			if (winnerRect == null ||
-				bb.y < winnerRect.y ||
-				(bb.y == winnerRect.y && bb.x > winnerRect.x)) {
-				winner = stack;
-				winnerRect = bb;
-			}
-		}
-		
-		return winner;
-	}
-
-	/**
-     * Notification that a child layout part has been
-     * added to the container. Subclasses may override
-     * this method to perform any container specific
-     * work.
-     */
-    protected void childAdded(LayoutPart child) {
-    	super.childAdded(child);
-    	
-        if (child instanceof EditorStack) {
-			editorWorkbooks.add(child);
-		}
-    }
-
-    /**
-     * Notification that a child layout part has been
-     * removed from the container. Subclasses may override
-     * this method to perform any container specific
-     * work.
-     */
-    protected void childRemoved(LayoutPart child) {
-    	super.childRemoved(child);
-    	
-        if (child instanceof EditorStack) {
-            editorWorkbooks.remove(child);
-            if (activeEditorWorkbook == child) {
-				setActiveWorkbook(null, false);
-			}
-            
-            updateStackButtons();
-        }
-    }
-
-    protected EditorStack createDefaultWorkbook() {
-        EditorStack newWorkbook = EditorStack.newEditorWorkbook(this, page);
-        newWorkbook.setID(DEFAULT_WORKBOOK_ID);
-        add(newWorkbook);
-        return newWorkbook;
-    }
-
-    /**
-     * Subclasses override this method to specify
-     * the composite to use to parent all children
-     * layout parts it contains.
-     */
-    protected Composite createParent(Composite parentWidget) {
-        return new Composite(parentWidget, SWT.NONE);
-    }
-
-    /**
-     * Dispose of the editor area.
-     */
-    public void dispose() {
-        // Free editor workbooks.
-        editorWorkbooks.clear();
-
-        // Free rest.
-        super.dispose();
-    }
-
-    /**
-     * Subclasses override this method to dispose
-     * of any swt resources created during createParent.
-     */
-    protected void disposeParent() {
-        this.parent.dispose();
-    }
-
-    /**
-     * Return the editor workbook which is active.
-     */
-    public EditorStack getActiveWorkbook() {
-        if (activeEditorWorkbook == null) {
-            if (editorWorkbooks.size() < 1) {
-				setActiveWorkbook(createDefaultWorkbook(), false);
-			} else {
-				setActiveWorkbook((EditorStack) editorWorkbooks.get(0), false);
-			}
-        }
-
-        return activeEditorWorkbook;
-    }
-
-    /**
-     * Return the editor workbook id which is active.
-     */
-    public String getActiveWorkbookID() {
-        return getActiveWorkbook().getID();
-    }
-
-    /**
-     * Return the all the editor workbooks.
-     */
-    public ArrayList getEditorWorkbooks() {
-        return (ArrayList) editorWorkbooks.clone();
-    }
-
-    /**
-     * Return the all the editor workbooks.
-     */
-    public int getEditorWorkbookCount() {
-        return editorWorkbooks.size();
-    }
-
-    /**
-     * Return true is the workbook specified
-     * is the active one.
-     */
-    protected boolean isActiveWorkbook(EditorStack workbook) {
-        return activeEditorWorkbook == workbook;
-    }
-
-    /**
-     * Find the sashs around the specified part.
-     */
-    public void findSashes(LayoutPart pane, PartPane.Sashes sashes) {
-        //Find the sashes around the current editor and
-        //then the sashes around the editor area.
-        super.findSashes(pane, sashes);
-
-        ILayoutContainer container = getContainer();
-        if (container != null) {
-            container.findSashes(this, sashes);
-        }
-    }
-
-    /**
-     * Remove all the editors
-     */
-    public void removeAllEditors() {
-        EditorStack currentWorkbook = getActiveWorkbook();
-
-        // Iterate over a copy so the original can be modified.	
-        Iterator workbooks = ((ArrayList) editorWorkbooks.clone()).iterator();
-        while (workbooks.hasNext()) {
-            EditorStack workbook = (EditorStack) workbooks.next();
-            workbook.removeAll();
-            if (workbook != currentWorkbook) {
-                remove(workbook);
-                workbook.dispose();
-            }
-        }
-    }
-
-    /**
-     * Remove an editor from its' workbook.
-     */
-    public void removeEditor(EditorPane pane) {
-        EditorStack workbook = pane.getWorkbook();
-        if (workbook == null) {
-			return;
-		}
-        workbook.remove(pane);
-
-        // remove the editor workbook if empty
-        if (workbook.getItemCount() < 1 /* && editorWorkbooks.size() > 1*/) {
-        	// If the user closes the last editor and the editor area
-        	// is maximized, restore it
-    		Perspective persp = getPage().getActivePerspective();
-            if (Perspective.useNewMinMax(persp)) {
-            	if (persp.getPresentation().getMaximizedStack() instanceof EditorStack)
-            		persp.getPresentation().getMaximizedStack().
-            			setState(IStackPresentationSite.STATE_RESTORED);
-            }
-
-            remove(workbook);
-            workbook.dispose();
-        }
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public IStatus restoreState(IMemento memento) {
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.RootLayoutContainer_problemsRestoringPerspective, null);
-
-        // Remove the default editor workbook that is
-        // initialy created with the editor area.
-        if (children != null) {
-        	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					EditorStack defaultWorkbook = null;
-		            for (int i = 0; i < children.size(); i++) {
-		                LayoutPart child = (LayoutPart) children.get(i);
-		                if (child.getID() == DEFAULT_WORKBOOK_ID) {
-		                    defaultWorkbook = (EditorStack) child;
-		                    if (defaultWorkbook.getItemCount() > 0) {
-								defaultWorkbook = null;
-							}
-		                }
-		            }
-		            if (defaultWorkbook != null) {
-						remove(defaultWorkbook);
-					}
-				}});
-            
-        }
-
-        // Restore the relationship/layout
-        IMemento[] infos = memento.getChildren(IWorkbenchConstants.TAG_INFO);
-        final Map mapIDtoPart = new HashMap(infos.length);
-
-        for (int i = 0; i < infos.length; i++) {
-            // Get the info details.
-            IMemento childMem = infos[i];
-            final String partID = childMem.getString(IWorkbenchConstants.TAG_PART);
-            final String relativeID = childMem
-                    .getString(IWorkbenchConstants.TAG_RELATIVE);
-            int relationship = 0;
-            int left = 0, right = 0;
-            float ratio = 0.5f;
-            if (relativeID != null) {
-                relationship = childMem.getInteger(
-                        IWorkbenchConstants.TAG_RELATIONSHIP).intValue();
-                Float ratioFloat = childMem
-                        .getFloat(IWorkbenchConstants.TAG_RATIO);
-                Integer leftInt = childMem
-                        .getInteger(IWorkbenchConstants.TAG_RATIO_LEFT);
-                Integer rightInt = childMem
-                        .getInteger(IWorkbenchConstants.TAG_RATIO_RIGHT);
-                if (leftInt != null && rightInt != null) {
-                    left = leftInt.intValue();
-                    right = rightInt.intValue();
-                } else if (ratioFloat != null) {
-                    ratio = ratioFloat.floatValue();
-                }
-            }
-
-            final EditorStack workbook [] = new EditorStack[1];
-            StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					// Create the part.
-		            workbook[0] = EditorStack.newEditorWorkbook(EditorSashContainer.this, page);
-		            workbook[0].setID(partID);
-		            // 1FUN70C: ITPUI:WIN - Shouldn't set Container when not active
-		            workbook[0].setContainer(EditorSashContainer.this);
-				}});
-            
-
-            IMemento workbookMemento = childMem
-                    .getChild(IWorkbenchConstants.TAG_FOLDER);
-            if (workbookMemento != null) {
-                result.add(workbook[0].restoreState(workbookMemento));
-            }
-
-            final int myLeft = left, myRight = right, myRelationship = relationship;
-            final float myRatio = ratio;
-            StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					// Add the part to the layout
-		            if (relativeID == null) {
-		                add(workbook[0]);
-		            } else {
-		                LayoutPart refPart = (LayoutPart) mapIDtoPart.get(relativeID);
-		                if (refPart != null) {
-		                    //$TODO pass in left and right
-		                    if (myLeft == 0 || myRight == 0) {
-								add(workbook[0], myRelationship, myRatio, refPart);
-							} else {
-								add(workbook[0], myRelationship, myLeft, myRight, refPart);
-							}
-		                } else {
-		                    WorkbenchPlugin
-		                            .log("Unable to find part for ID: " + relativeID);//$NON-NLS-1$
-		                }
-		            }
-				}});
-            
-            mapIDtoPart.put(partID, workbook[0]);
-        }
-
-    	return result;
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public IStatus saveState(IMemento memento) {
-        RelationshipInfo[] relationships = computeRelation();
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.RootLayoutContainer_problemsSavingPerspective, null); 
-
-        for (int i = 0; i < relationships.length; i++) {
-            // Save the relationship info ..
-            //		private LayoutPart part;
-            // 		private int relationship;
-            // 		private float ratio;
-            // 		private LayoutPart relative;
-            RelationshipInfo info = relationships[i];
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_INFO);
-            childMem.putString(IWorkbenchConstants.TAG_PART, info.part.getID());
-
-            EditorStack stack = (EditorStack) info.part;
-            if (stack != null) {
-                IMemento folderMem = childMem
-                        .createChild(IWorkbenchConstants.TAG_FOLDER);
-                result.add(stack.saveState(folderMem));
-            }
-
-            if (info.relative != null) {
-                childMem.putString(IWorkbenchConstants.TAG_RELATIVE,
-                        info.relative.getID());
-                childMem.putInteger(IWorkbenchConstants.TAG_RELATIONSHIP,
-                        info.relationship);
-                childMem.putInteger(IWorkbenchConstants.TAG_RATIO_LEFT,
-                        info.left);
-                childMem.putInteger(IWorkbenchConstants.TAG_RATIO_RIGHT,
-                        info.right);
-                // Note: "ratio" is not used in newer versions of Eclipse, which use "left" 
-                // and "right" (above) instead
-                childMem.putFloat(IWorkbenchConstants.TAG_RATIO, info
-                        .getRatio());
-            }
-        }
-        
-        return result;
-    }
-
-    /**
-     * Set the editor workbook which is active.
-     */
-    public void setActiveWorkbook(EditorStack newWorkbook, boolean hasFocus) {
-        if (newWorkbook != null) {
-            if (newWorkbook.isDisposed()) {
-				return;
-			}
-            if (!editorWorkbooks.contains(newWorkbook)) {
-				return;
-			}
-        }
-        EditorStack oldWorkbook = activeEditorWorkbook;
-        activeEditorWorkbook = newWorkbook;
-
-        if (oldWorkbook != null && oldWorkbook != newWorkbook) {
-            oldWorkbook.setActive(StackPresentation.AS_INACTIVE);
-        }
-
-        if (newWorkbook != null) {
-            if (hasFocus) {
-                newWorkbook.setActive(StackPresentation.AS_ACTIVE_FOCUS);
-            } else {
-                newWorkbook.setActive(StackPresentation.AS_ACTIVE_NOFOCUS);
-            }
-        }
-
-        updateTabList();
-    }
-
-    /**
-     * Set the editor workbook which is active.
-     */
-    public void setActiveWorkbookFromID(String id) {
-        for (int i = 0; i < editorWorkbooks.size(); i++) {
-            EditorStack workbook = (EditorStack) editorWorkbooks.get(i);
-            if (workbook.getID().equals(id)) {
-				setActiveWorkbook(workbook, false);
-			}
-        }
-    }
-    
-    public EditorStack getWorkbookFromID(String id) {
-        for (int i = 0; i < editorWorkbooks.size(); i++) {
-            EditorStack workbook = (EditorStack) editorWorkbooks.get(i);
-            if (workbook.getID().equals(id)) {
-                return workbook;
-            }
-        }
-        
-        return null;
-    }
-
-    /**
-     * Updates the editor area's tab list to include the active
-     * editor and its tab.
-     */
-    public void updateTabList() {
-        Composite parent = getParent();
-        if (parent != null) { // parent may be null on startup
-            EditorStack wb = getActiveWorkbook();
-            if (wb == null) {
-                parent.setTabList(new Control[0]);
-            } else {
-                parent.setTabList(wb.getTabList());
-            }
-        }
-    }
-
-    /**
-     * @see org.eclipse.ui.internal.LayoutPart#createControl(org.eclipse.swt.widgets.Composite)
-     */
-    public void createControl(Composite parent) {
-        super.createControl(parent);
-
-        //let the user drop files/editor input on the editor area
-        addDropSupport();
-    }
-
-    private void addDropSupport() {
-        if (dropTarget == null) {
-            WorkbenchWindowConfigurer winConfigurer = ((WorkbenchWindow) page
-                    .getWorkbenchWindow()).getWindowConfigurer();
-
-            dropTarget = new DropTarget(getControl(), DND.DROP_DEFAULT
-                    | DND.DROP_COPY | DND.DROP_LINK);
-            dropTarget.setTransfer(winConfigurer.getTransfers());
-            if (winConfigurer.getDropTargetListener() != null) {
-                dropTarget.addDropListener(winConfigurer
-                        .getDropTargetListener());
-            }
-        }
-    }
-
-    /* package */DropTarget getDropTarget() {
-        return dropTarget;
-    }
-
-    /**
-     * @see org.eclipse.ui.internal.LayoutPart#getImportance()
-     */
-    public boolean isCompressible() {
-        //Added for bug 19524
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#isStackType(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean isStackType(LayoutPart toTest) {
-        return (toTest instanceof EditorStack);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#isPaneType(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean isPaneType(LayoutPart toTest) {
-        return (toTest instanceof EditorPane);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#createStack(org.eclipse.ui.internal.LayoutPart)
-     */
-    protected PartStack createStack() {
-        EditorStack newWorkbook = EditorStack.newEditorWorkbook(this, page);
-
-        return newWorkbook;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#setVisiblePart(org.eclipse.ui.internal.ILayoutContainer, org.eclipse.ui.internal.LayoutPart)
-     */
-    protected void setVisiblePart(ILayoutContainer container,
-            LayoutPart visiblePart) {
-        EditorStack refPart = (EditorStack) container;
-
-        refPart.becomeActiveWorkbook(true);
-        refPart.setSelection(visiblePart);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#getVisiblePart(org.eclipse.ui.internal.ILayoutContainer)
-     */
-    protected LayoutPart getVisiblePart(ILayoutContainer container) {
-        EditorStack refPart = (EditorStack) container;
-
-        return refPart.getSelection();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#pickPartToZoom()
-     */
-    public LayoutPart pickPartToZoom() {
-        return getActiveWorkbook();
-    }
-    
-    /**
-     * Restore the presentation state.  Loop over the workbooks, create the appropriate serializer and pass to the presentation.
-     *
-     * @param areaMem the memento containing presentation 
-     * @return the restoration status
-     */
-    public IStatus restorePresentationState(IMemento areaMem) {
-        for (Iterator i = getEditorWorkbooks().iterator(); i.hasNext();) {
-            final EditorStack workbook = (EditorStack) i.next();
-            final IMemento memento = workbook.getSavedPresentationState();
-            if (memento == null) {
-				continue;
-			}
-            final PresentationSerializer serializer = new PresentationSerializer(
-                    workbook.getPresentableParts());
-            StartupThreading.runWithoutExceptions(new StartupRunnable(){
-
-				public void runWithException() throws Throwable {
-					 workbook.getPresentation().restoreState(serializer, memento);
-				}});
-           
-        }
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSite.java
deleted file mode 100644
index 20bed3b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSite.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.IActionBars2;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.SubActionBars2;
-import org.eclipse.ui.dnd.IDragAndDropService;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-
-/**
- * An editor container manages the services for an editor.
- */
-public class EditorSite extends PartSite implements IEditorSite {
-    /* package */ //static final int PROP_REUSE_EDITOR = -0x101;
-
-    private EditorDescriptor desc;
-
-    //private ListenerList propChangeListeners = new ListenerList(1);
-
-    private SubActionBars ab = null;
-    
-    /**
-     * Constructs an EditorSite for an editor.
-     */
-    public EditorSite(IEditorReference ref, IEditorPart editor,
-            WorkbenchPage page, EditorDescriptor desc) {
-        super(ref, editor, page);
-        Assert.isNotNull(desc);
-        this.desc = desc;
-        
-        if (desc.getConfigurationElement() != null) {
-            setConfigurationElement(desc.getConfigurationElement());
-        } else {
-            // system external and in-place editors do not have a corresponding configuration element
-            setId(desc.getId());
-            setRegisteredName(desc.getLabel());
-        }
-
-		// Initialize the services specific to this editor site.
-        initializeDefaultServices();
-    }
-
-	/**
-	 * Initialize the local services.
-	 */
-	private void initializeDefaultServices() {
-		// Register an implementation of the service appropriate for the 
-		// EditorSite.
-		final IDragAndDropService editorDTService = new EditorSiteDragAndDropServiceImpl();
-		serviceLocator.registerService(IDragAndDropService.class, editorDTService);
-	}
-	
-    public void setActionBars(SubActionBars bars) {
-        super.setActionBars(bars);
-        
-        if (bars instanceof IActionBars2) {
-            ab = new SubActionBars2((IActionBars2)bars, this);
-        } else {
-            ab = new SubActionBars(bars, this);
-        }
-    }
-    
-    public void activateActionBars(boolean forceVisibility) {
-        if (ab != null) {
-            ab.activate(forceVisibility);
-        }
-        super.activateActionBars(forceVisibility);
-    }
-
-    public void deactivateActionBars(boolean forceHide) {
-        if (ab != null) {
-            ab.deactivate(forceHide);
-        }
-        super.deactivateActionBars(forceHide);
-    }
-    
-    /**
-     * Returns the editor action bar contributor for this editor.
-     * <p>
-     * An action contributor is responsable for the creation of actions.
-     * By design, this contributor is used for one or more editors of the same type.
-     * Thus, the contributor returned by this method is not owned completely
-     * by the editor.  It is shared.
-     * </p>
-     *
-     * @return the editor action bar contributor
-     */
-    public IEditorActionBarContributor getActionBarContributor() {
-        EditorActionBars bars = (EditorActionBars) getActionBars();
-        if (bars != null) {
-			return bars.getEditorContributor();
-		}
-        
-        return null;
-    }
-
-    /**
-     * Returns the extension editor action bar contributor for this editor.
-     */
-    public IEditorActionBarContributor getExtensionActionBarContributor() {
-        EditorActionBars bars = (EditorActionBars) getActionBars();
-        if (bars != null) {
-			return bars.getExtensionContributor();
-		}
-        
-        return null;
-    }
-
-    /**
-     * Returns the editor
-     */
-    public IEditorPart getEditorPart() {
-        return (IEditorPart) getPart();
-    }
-
-    public EditorDescriptor getEditorDescriptor() {
-        return desc;
-    }
-
-    protected String getInitialScopeId() {
-        return "org.eclipse.ui.textEditorScope"; //$NON-NLS-1$
-    }
-    
-    public void dispose() {
-        super.dispose();
-        
-        if (ab != null) {
-            ab.dispose();
-        }
-    }
-    
-    public final void registerContextMenu(final MenuManager menuManager,
-            final ISelectionProvider selectionProvider,
-            final boolean includeEditorInput) {
-        registerContextMenu(getId(), menuManager, selectionProvider,
-                includeEditorInput);
-    }
-    
-    public final void registerContextMenu(final String menuId,
-            final MenuManager menuManager,
-            final ISelectionProvider selectionProvider,
-            final boolean includeEditorInput) {
-        if (menuExtenders == null) {
-            menuExtenders = new ArrayList(1);
-        }
-        
-        PartSite.registerContextMenu(menuId, menuManager, selectionProvider,
-                includeEditorInput, getPart(), menuExtenders);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
deleted file mode 100644
index 4dd9b4a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorSiteDragAndDropServiceImpl.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stephan Wahlbrink <stephan.wahlbrink@walware.de> - Wrong operations mode/feedback for text drag over/drop in text editors - https://bugs.eclipse.org/bugs/show_bug.cgi?id=206043
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.widgets.Control;
-
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dnd.IDragAndDropService;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * Implementation for the <code>IDragAndDropService</code> to be used from
- * <code>EditorSite</code>'s.
- * </p><p>
- * Adds a drop target to the given control that merges the site's
- * drop behaviour with that specified by the <code>addMergedDropTarget</code> call.
- * </p><p>
- * The current implementation is only defined for EditorSite's and merges the
- * given drop handling with the existing EditorSashContainer's behaviour.
- * </p><p>
- * NOTE: There is no cleanup (i.e. 'dispose') handling necessary for merged
- * Drop Targets but the hooks are put into place to maintain the consistency
- * of the implementation pattern.
- * </p>
- * @since 3.3
- *
- */
-public class EditorSiteDragAndDropServiceImpl implements IDragAndDropService, IDisposable {
-	/**
-	 * Implementation of a DropTarget wrapper that will either delegate to the
-	 * <code>primaryListener</code> if the event's <code>currentDataType</code>
-	 * can be handled by it; otherwise the event is forwarded on to the
-	 * listener specified by <code>secondaryListener</code>.
-	 * </p><p>
-	 * NOTE: we should perhaps refactor this out into an external class
-	 * </p>
-	 * @since 3.3
-	 *
-	 */
-	private static class MergedDropTarget {
-		private DropTarget realDropTarget;
-		
-		private Transfer[] secondaryTransfers;
-		private DropTargetListener secondaryListener;
-		private int secondaryOps;
-		
-		private Transfer[] primaryTransfers;
-		private DropTargetListener primaryListener;
-		private int primaryOps;
-		
-		public MergedDropTarget(Control control,
-				int priOps, Transfer[] priTransfers, DropTargetListener priListener,
-				int secOps, Transfer[] secTransfers, DropTargetListener secListener) {
-			realDropTarget = new DropTarget(control, priOps | secOps);
-			
-			// Cache the editor's transfers and listener
-			primaryTransfers = priTransfers;
-			primaryListener = priListener;
-			primaryOps = priOps;
-			
-			// Cache the editor area's current transfers & listener
-	        secondaryTransfers = secTransfers;
-	        secondaryListener = secListener;
-	        secondaryOps = secOps;
-			
-			// Combine the two sets of transfers into one array
-			Transfer[] allTransfers = new Transfer[secondaryTransfers.length+primaryTransfers.length];
-			int curTransfer = 0;
-			for (int i = 0; i < primaryTransfers.length; i++) {
-				allTransfers[curTransfer++] = primaryTransfers[i];
-			}
-			for (int i = 0; i < secondaryTransfers.length; i++) {
-				allTransfers[curTransfer++] = secondaryTransfers[i];
-			}
-			realDropTarget.setTransfer(allTransfers);
-			
-			// Create a listener that will delegate to the appropriate listener
-			// NOTE: the -editor- wins (i.e. it can over-ride WB behaviour if it wants
-			realDropTarget.addDropListener(new DropTargetListener() {
-				public void dragEnter(DropTargetEvent event) {
-					getAppropriateListener(event, true).dragEnter(event);
-				}
-				public void dragLeave(DropTargetEvent event) {
-					getAppropriateListener(event, false).dragLeave(event);
-				}
-				public void dragOperationChanged(DropTargetEvent event) {
-					getAppropriateListener(event, true).dragOperationChanged(event);
-				}
-				public void dragOver(DropTargetEvent event) {
-					getAppropriateListener(event, true).dragOver(event);
-				}
-				public void drop(DropTargetEvent event) {
-					getAppropriateListener(event, true).drop(event);
-				}
-				public void dropAccept(DropTargetEvent event) {
-					getAppropriateListener(event, true).dropAccept(event);
-				}
-			});
-		}
-
-		private DropTargetListener getAppropriateListener(DropTargetEvent event, boolean checkOperation) {
-			if (isSupportedType(primaryTransfers, event.currentDataType)) {
-				if (checkOperation && !isSupportedOperation(primaryOps, event.detail)) {
-					event.detail = DND.DROP_NONE;
-				}
-				return primaryListener;
-			}
-			if (checkOperation && !isSupportedOperation(secondaryOps, event.detail)) {
-				event.detail = DND.DROP_NONE;
-			}
-			return secondaryListener;
-		}
-		
-		private boolean isSupportedType(Transfer[] transfers, TransferData transferType) {
-			for (int i = 0; i < transfers.length; i++) {
-				if (transfers[i].isSupportedType(transferType))
-					return true;
-			}
-			return false;
-		}
-		
-		private boolean isSupportedOperation(int dropOps, int eventDetail) {
-				return ((dropOps | DND.DROP_DEFAULT) & eventDetail) != 0;
-		}
-
-		/**
-		 * Clean up...
-		 */
-		public void dispose() {
-		}
-	}
-	
-	// Cache any listeners for cleanup
-	List addedListeners = new ArrayList();
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dnd.IEditorDropTargetService#addDropTarget(org.eclipse.swt.widgets.Control, int, org.eclipse.swt.dnd.Transfer[], org.eclipse.swt.dnd.DropTargetListener)
-	 */
-	public void addMergedDropTarget(Control control, int ops, Transfer[] transfers,
-			DropTargetListener listener) {
-		 // First we have to remove any existing drop target from the control
-		removeMergedDropTarget(control);
-		
-		// Capture the editor area's current ops, transfers & listener
-		int editorSiteOps = DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_LINK;
-
-		WorkbenchWindow ww = (WorkbenchWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        WorkbenchWindowConfigurer winConfigurer = ww.getWindowConfigurer();
-        Transfer[] editorSiteTransfers = winConfigurer.getTransfers();
-        DropTargetListener editorSiteListener = winConfigurer.getDropTargetListener();
-        
-        // Create a new 'merged' drop Listener using combination of the desired
-        // transfers and the ones used by the EditorArea
-		MergedDropTarget newTarget = new MergedDropTarget(control, ops, transfers, listener,
-				editorSiteOps, editorSiteTransfers, editorSiteListener);
-		addedListeners.add(newTarget);
-	}
-
-	/**
-	 * This method will return the current drop target for the control
-	 * (whether or not it was created using this service.
-	 *
-	 * @param control The control to get the drop target for
-	 * @return The DropTarget for that control (could be null
-	 */
-	private DropTarget getCurrentDropTarget(Control control) {
-		if (control == null)
-			return null;
-		
-		Object curDT = control.getData(DND.DROP_TARGET_KEY);
-		return (DropTarget)curDT;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dnd.IDragAndDropService#removeMergedDropTarget(org.eclipse.swt.widgets.Control)
-	 */
-	public void removeMergedDropTarget(Control control) {
-		DropTarget targetForControl = getCurrentDropTarget(control);
-		if (targetForControl != null) {
-			targetForControl.dispose();
-			addedListeners.remove(targetForControl);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		// Clean up the listeners
-		for (Iterator iterator = addedListeners.iterator(); iterator.hasNext();) {
-			MergedDropTarget target = (MergedDropTarget) iterator.next();
-			target.dispose();
-		}
-		addedListeners.clear();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorStack.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorStack.java
deleted file mode 100644
index 94d510f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorStack.java
+++ /dev/null
@@ -1,367 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Cagatay Kavukcuoglu <cagatayk@acm.org> - Fix for bug 10025 - Resizing views
- *     should not use height ratios
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.presentations.PresentablePart;
-import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
-import org.eclipse.ui.internal.presentations.SystemMenuPinEditor;
-import org.eclipse.ui.internal.presentations.SystemMenuSize;
-import org.eclipse.ui.internal.presentations.UpdatingActionContributionItem;
-import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * Represents a tab folder of editors. This layout part container only accepts
- * EditorPane parts.
- * 
- * TODO: Make PartStack non-abstract and delete this class. The differences between
- * editors and views should be handled by the presentation or the editors/views themselves.
- */
-public class EditorStack extends PartStack {
-
-    private EditorSashContainer editorArea;
-
-    private WorkbenchPage page;
-
-    private SystemMenuSize sizeItem = new SystemMenuSize(null);
-
-    private SystemMenuPinEditor pinEditorItem = new SystemMenuPinEditor(null);
-
-    public EditorStack(EditorSashContainer editorArea, WorkbenchPage page) {
-        super(PresentationFactoryUtil.ROLE_EDITOR);
-        this.editorArea = editorArea;
-        setID(this.toString());
-        // Each folder has a unique ID so relative positioning is unambiguous.
-        // save off a ref to the page
-        //@issue is it okay to do this??
-        //I think so since a ViewStack is
-        //not used on more than one page.
-        this.page = page;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#getPage()
-     */
-    protected WorkbenchPage getPage() {
-        return page;
-    }
-
-    public void addSystemActions(IMenuManager menuManager) {
-        pinEditorItem = new SystemMenuPinEditor((EditorPane) getSelection());
-        appendToGroupIfPossible(menuManager,
-                "misc", new UpdatingActionContributionItem(pinEditorItem)); //$NON-NLS-1$
-        sizeItem = new SystemMenuSize(getSelection());
-        appendToGroupIfPossible(menuManager, "size", sizeItem); //$NON-NLS-1$
-    }
-
-    public boolean isMoveable(IPresentablePart part) {
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IStackPresentationSite#supportsState(int)
-     */
-    public boolean supportsState(int state) {
-        if (page.isFixedLayout()) {
-			return false;
-		}
-
-        return true;
-    }
-
-    /**
-     * Factory method for editor workbooks.
-     */
-    public static EditorStack newEditorWorkbook(EditorSashContainer editorArea,
-            WorkbenchPage page) {
-        return new EditorStack(editorArea, page);
-    }
-
-    protected void add(LayoutPart newChild, Object cookie) {
-        super.add(newChild, cookie);
-
-        ((EditorPane) newChild).setWorkbook(this);
-    }
-
-    /**
-     * See IVisualContainer#add
-     */
-    public void add(LayoutPart child) {
-        super.add(child);
-
-        if (child instanceof EditorPane) {
-            ((EditorPane) child).setWorkbook(this);
-        }
-    }
-
-    protected void updateActions(PresentablePart current) {
-        EditorPane pane = null;
-        if (current != null && current.getPane() instanceof EditorPane) {
-            pane = (EditorPane) current.getPane();
-        }
-
-        sizeItem.setPane(pane);
-        pinEditorItem.setPane(pane);
-    }
-
-    public Control[] getTabList() {
-        return getTabList(getSelection());
-    }
-
-    public void removeAll() {
-        LayoutPart[] children = getChildren();
-
-        for (int i = 0; i < children.length; i++) {
-			remove(children[i]);
-		}
-    }
-
-    public boolean isActiveWorkbook() {
-        EditorSashContainer area = getEditorArea();
-
-        if (area != null) {
-			return area.isActiveWorkbook(this);
-		} else {
-			return false;
-		}
-    }
-
-    public void becomeActiveWorkbook(boolean hasFocus) {
-        EditorSashContainer area = getEditorArea();
-
-        if (area != null) {
-			area.setActiveWorkbook(this, hasFocus);
-		}
-    }
-
-    public EditorPane[] getEditors() {
-        LayoutPart[] children = getChildren();
-
-        EditorPane[] panes = new EditorPane[children.length];
-        for (int idx = 0; idx < children.length; idx++) {
-            panes[idx] = (EditorPane) children[idx];
-        }
-
-        return panes;
-    }
-
-    public EditorSashContainer getEditorArea() {
-        return editorArea;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#canMoveFolder()
-     */
-    protected boolean canMoveFolder() {
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#derefPart(org.eclipse.ui.internal.LayoutPart)
-     */
-    protected void derefPart(LayoutPart toDeref) {
-        EditorAreaHelper.derefPart(toDeref);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#allowsDrop(org.eclipse.ui.internal.PartPane)
-     */
-    protected boolean allowsDrop(PartPane part) {
-        return part instanceof EditorPane;
-    }
-
-    public void setFocus() {
-        super.setFocus();
-        becomeActiveWorkbook(true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#close(org.eclipse.ui.presentations.IPresentablePart[])
-     */
-    protected void close(IPresentablePart[] parts) {
-
-        if (parts.length == 1) {
-            close(parts[0]);
-            return;
-        }
-
-        IEditorReference[] toClose = new IEditorReference[parts.length];
-        for (int idx = 0; idx < parts.length; idx++) {
-            EditorPane part = (EditorPane) getPaneFor(parts[idx]);
-            toClose[idx] = part.getEditorReference();
-        }
-
-        WorkbenchPage page = getPage();
-
-        if (page != null) {
-            page.closeEditors(toClose, true);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#testInvariants()
-     */
-    public void testInvariants() {
-        super.testInvariants();
-
-        int active = getActive();
-
-        if (active == StackPresentation.AS_ACTIVE_FOCUS) {
-            Assert.isTrue(isActiveWorkbook());
-        } else if (active == StackPresentation.AS_ACTIVE_NOFOCUS) {
-            Assert.isTrue(isActiveWorkbook());
-        } else if (active == StackPresentation.AS_INACTIVE) {
-            Assert.isTrue(!isActiveWorkbook());
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#restoreState(org.eclipse.ui.IMemento)
-     */
-    public IStatus restoreState(IMemento memento) {
-        Integer expanded = memento.getInteger(IWorkbenchConstants.TAG_EXPANDED);
-        setState((expanded == null || expanded.intValue() != IStackPresentationSite.STATE_MINIMIZED) ? IStackPresentationSite.STATE_RESTORED
-                : IStackPresentationSite.STATE_MINIMIZED);
-
-        Integer appearance = memento
-                .getInteger(IWorkbenchConstants.TAG_APPEARANCE);
-        if (appearance != null) {
-            this.appearance = appearance.intValue();
-        }
-
-        // Determine if the presentation has saved any info here
-        savedPresentationState = null;
-        IMemento[] presentationMementos = memento
-                .getChildren(IWorkbenchConstants.TAG_PRESENTATION);
-
-        for (int idx = 0; idx < presentationMementos.length; idx++) {
-            IMemento child = presentationMementos[idx];
-
-            String id = child.getString(IWorkbenchConstants.TAG_ID);
-
-            if (Util.equals(id, getFactory().getId())) {
-                savedPresentationState = child;
-                break;
-            }
-        }
-
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#saveState(org.eclipse.ui.IMemento)
-     */
-    public IStatus saveState(IMemento memento) {
-        memento
-                .putInteger(
-                        IWorkbenchConstants.TAG_EXPANDED,
-                        (getPresentationSite().getState() == IStackPresentationSite.STATE_MINIMIZED) ? IStackPresentationSite.STATE_MINIMIZED
-                                : IStackPresentationSite.STATE_RESTORED);
-
-        memento.putInteger(IWorkbenchConstants.TAG_APPEARANCE, appearance);
-
-        savePresentationState();
-
-        if (savedPresentationState != null) {
-            IMemento presentationState = memento
-                    .createChild(IWorkbenchConstants.TAG_PRESENTATION);
-            presentationState.putMemento(savedPresentationState);
-        }
-
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.PartStack#setMinimized(boolean)
-	 */
-	public void setMinimized(boolean minimized) {
-    	// 'Smart' minimize; move the editor area to the trim
-    	Perspective persp = getPage().getActivePerspective();
-    	if (Perspective.useNewMinMax(persp)) {
-    		if (minimized) {
-    			persp.setEditorAreaState(IStackPresentationSite.STATE_MINIMIZED);
-    		}
-    		else {
-				// First, if we're maximized then revert
-				if (persp.getPresentation().getMaximizedStack() != null) {
-					PartStack maxStack = persp.getPresentation().getMaximizedStack();
-					if (maxStack instanceof ViewStack) {
-						maxStack.setState(IStackPresentationSite.STATE_RESTORED);
-					}
-					else if (maxStack instanceof EditorStack) {
-						// We handle editor max through the perspective since it's
-						// shared between pages...
-						persp.setEditorAreaState(IStackPresentationSite.STATE_RESTORED);
-					}
-				}
-				
-    			int curState = persp.getEditorAreaState();
-    			if (curState == IStackPresentationSite.STATE_MINIMIZED)
-    				curState = IStackPresentationSite.STATE_RESTORED;
-    			
-    			persp.setEditorAreaState(curState);
-    		}
-    		
-    		refreshPresentationState();
-    		//return;
-    	}
-    	
-		super.setMinimized(minimized);
-	}
-
-	/**
-	 * Changes the editor stack's state to the given one -without-
-	 * side-effects. This is used when switching perspectives because
-	 * the Editor Area is perspective based but is shared between all
-	 * perspectives...
-	 * 
-	 * @param newState The new state to set the editor stack to
-	 */
-	public void setStateLocal(int newState) {
-		if (newState == getState())
-			return;
-		
-		//isMinimized = getState() == IStackPresentationSite.STATE_MINIMIZED;
-		super.setMinimized(newState == IStackPresentationSite.STATE_MINIMIZED);
-		presentationSite.setPresentationState(newState);
-	}
-	
-	/**
-	 * Cause the folder to hide or show its
-	 * Minimize and Maximize affordances.
-	 * 
-	 * @param show
-	 *            <code>true</code> - the min/max buttons are visible.
-	 * @since 3.3
-	 */
-	public void showMinMax(boolean show) {
-		StackPresentation pres = getPresentation();
-		if (pres == null)
-			return;
-		
-		if (pres instanceof TabbedStackPresentation)
-			((TabbedStackPresentation)pres).showMinMax(show);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorEditorPart.java
deleted file mode 100644
index 7b601af..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorEditorPart.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.widgets.Composite;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.internal.part.StatusPart;
-import org.eclipse.ui.part.EditorPart;
-
-/**
- * This part is shown instead the editors with errors.
- * 
- * @since 3.3
- */
-public class ErrorEditorPart extends EditorPart {
-
-	private IStatus error;
-
-	/**
-	 * Creates instance of the class
-	 */
-	public ErrorEditorPart() {
-	}
-
-	/**
-	 * Creates instance of the class
-	 * 
-	 * @param error the status
-	 */
-	public ErrorEditorPart(IStatus error) {
-		this.error = error;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public void doSave(IProgressMonitor monitor) {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.EditorPart#doSaveAs()
-	 */
-	public void doSaveAs() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(Composite parent) {
-		if (error != null) {
-			new StatusPart(parent, error);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite,
-	 *      org.eclipse.ui.IEditorInput)
-	 */
-	public void init(IEditorSite site, IEditorInput input) {
-		setSite(site);
-		setInput(input);
-		setPartName(input.getName());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.EditorPart#isDirty()
-	 */
-	public boolean isDirty() {
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
-	 */
-	public boolean isSaveAsAllowed() {
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
-	 */
-	public void setFocus() {
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.EditorPart#setPartName(java.lang.String)
-	 */
-	public void setPartName(String newName) {
-		super.setPartName(newName);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorViewPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorViewPart.java
deleted file mode 100644
index e07c3e5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ErrorViewPart.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.widgets.Composite;
-
-import org.eclipse.core.runtime.IStatus;
-
-import org.eclipse.ui.internal.part.StatusPart;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * This part is shown instead the views with errors.
- * 
- * @since 3.3
- */
-public class ErrorViewPart extends ViewPart {
-
-	private IStatus error;
-
-	/**
-	 * Creates instance of the class
-	 */
-	public ErrorViewPart() {
-	}
-
-	/**
-	 * Creates instance of the class
-	 * 
-	 * @param error the status
-	 */
-	public ErrorViewPart(IStatus error) {
-		this.error = error;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(Composite parent) {
-		if (error != null) {
-			new StatusPart(parent, error);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.ViewPart#setPartName(java.lang.String)
-	 */
-	public void setPartName(String newName) {
-		super.setPartName(newName);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
-	 */
-	public void setFocus() {
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExceptionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExceptionHandler.java
deleted file mode 100644
index a5a4974..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExceptionHandler.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.window.Window;
-
-/**
- * This handler will pass along to the workbench advisor exceptions
- * and errors thrown while running the event loop. However, the
- * <code>ThreadDeath</code> error is simply thrown again, and is not 
- * passed along.
- */
-public final class ExceptionHandler implements Window.IExceptionHandler {
-
-    private static final ExceptionHandler instance = new ExceptionHandler();
-
-    /**
-     * Returns the singleton exception handler.
-     * 
-     * @return the singleton exception handler
-     */
-    public static ExceptionHandler getInstance() {
-        return instance;
-    }
-
-    private int exceptionCount = 0; // To avoid recursive errors
-
-    private ExceptionHandler() {
-        // prevents instantiation
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.jface.window.Window.IExceptionHandler#handleException
-     */
-    public void handleException(Throwable t) {
-        try {
-            // Ignore ThreadDeath error as its normal to get this when thread dies
-            if (t instanceof ThreadDeath) {
-                throw (ThreadDeath) t;
-            }
-
-            // Check to avoid recursive errors
-            exceptionCount++;
-            if (exceptionCount > 2) {
-                if (t instanceof RuntimeException) {
-					throw (RuntimeException) t;
-				} else if (t instanceof Error) {
-					throw (Error) t;
-				} else {
-					throw new RuntimeException(t);
-				}
-            }
-
-            // Let the advisor handle this now
-            Workbench wb = Workbench.getInstance();
-            if (wb != null) {
-                wb.getAdvisor().eventLoopException(t);
-            }
-        } finally {
-            exceptionCount--;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.java
deleted file mode 100644
index c316b20..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.themes.ColorDefinition;
-import org.eclipse.ui.internal.themes.FontDefinition;
-import org.eclipse.ui.internal.themes.ThemeElementHelper;
-import org.eclipse.ui.internal.themes.ThemeRegistry;
-import org.eclipse.ui.internal.themes.ThemeRegistryReader;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemeManager;
-
-class ExtensionEventHandler implements IRegistryChangeListener {
-    
-    private Workbench workbench;
-
-    private List changeList = new ArrayList(10);
-
-    public ExtensionEventHandler(Workbench workbench) {
-        this.workbench = workbench;
-    }
-
-    public void registryChanged(IRegistryChangeEvent event) {
-        try {
-            IExtensionDelta delta[] = event
-                    .getExtensionDeltas(WorkbenchPlugin.PI_WORKBENCH);
-            IExtension ext;
-            IExtensionPoint extPt;
-            IWorkbenchWindow[] win = PlatformUI.getWorkbench()
-                    .getWorkbenchWindows();
-            if (win.length == 0) {
-				return;
-			}
-            Display display = win[0].getShell().getDisplay();
-            if (display == null) {
-				return;
-			}
-            ArrayList appearList = new ArrayList(5);
-            ArrayList revokeList = new ArrayList(5);
-            String id = null;
-            int numPerspectives = 0;
-            int numActionSetPartAssoc = 0;
-
-            // push action sets and perspectives to the top because incoming 
-            // actionSetPartAssociations and perspectiveExtensions may depend upon 
-            // them for their bindings.		
-            for (int i = 0; i < delta.length; i++) {
-                id = delta[i].getExtensionPoint().getSimpleIdentifier();
-                if (delta[i].getKind() == IExtensionDelta.ADDED) {
-                    if (id.equals(IWorkbenchRegistryConstants.PL_ACTION_SETS)) {
-						appearList.add(0, delta[i]);
-					} else if (!id.equals(IWorkbenchRegistryConstants.PL_PERSPECTIVES)
-                            && !id.equals(IWorkbenchRegistryConstants.PL_VIEWS)
-                            && !id.equals(IWorkbenchRegistryConstants.PL_ACTION_SETS)) {
-						appearList.add(appearList.size() - numPerspectives,
-                                delta[i]);
-					}
-                } else {
-                    if (delta[i].getKind() == IExtensionDelta.REMOVED) {
-                        if (id
-                                .equals(IWorkbenchRegistryConstants.PL_ACTION_SET_PART_ASSOCIATIONS)) {
-                            revokeList.add(0, delta[i]);
-                            numActionSetPartAssoc++;
-                        } else if (id
-                                .equals(IWorkbenchRegistryConstants.PL_PERSPECTIVES)) {
-							revokeList.add(numActionSetPartAssoc, delta[i]);
-						} else {
-							revokeList.add(delta[i]);
-						}
-                    }
-                }
-            }
-            Iterator iter = appearList.iterator();
-            IExtensionDelta extDelta = null;
-            while (iter.hasNext()) {
-                extDelta = (IExtensionDelta) iter.next();
-                extPt = extDelta.getExtensionPoint();
-                ext = extDelta.getExtension();
-                asyncAppear(display, extPt, ext);
-            }
-            // Suspend support for removing a plug-in until this is more stable
-            //		iter = revokeList.iterator();
-            //		while(iter.hasNext()) {
-            //			extDelta = (IExtensionDelta) iter.next();
-            //			extPt = extDelta.getExtensionPoint();
-            //			ext = extDelta.getExtension();
-            //			asyncRevoke(display, extPt, ext);
-            //		}
-
-            resetCurrentPerspective(display);
-        } finally {
-            //ensure the list is cleared for the next pass through
-            changeList.clear();
-        }
-
-    }
-
-    private void asyncAppear(Display display, final IExtensionPoint extpt,
-            final IExtension ext) {
-        Runnable run = new Runnable() {
-            public void run() {
-                appear(extpt, ext);
-            }
-        };
-        display.syncExec(run);
-    }
-    
-    private void appear(IExtensionPoint extPt, IExtension ext) {
-        String name = extPt.getSimpleIdentifier();
-        if (name.equalsIgnoreCase(IWorkbenchRegistryConstants.PL_FONT_DEFINITIONS)) {
-            loadFontDefinitions(ext);
-            return;
-        }
-        if (name.equalsIgnoreCase(IWorkbenchRegistryConstants.PL_THEMES)) {
-            loadThemes(ext);
-            return;
-        }
-    }
-
-    /**
-     * @param ext
-     */
-    private void loadFontDefinitions(IExtension ext) {
-        ThemeRegistryReader reader = new ThemeRegistryReader();
-        reader.setRegistry((ThemeRegistry) WorkbenchPlugin.getDefault()
-                .getThemeRegistry());
-        IConfigurationElement[] elements = ext.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-			reader.readElement(elements[i]);
-		}
-
-        Collection fonts = reader.getFontDefinitions();
-        FontDefinition[] fontDefs = (FontDefinition[]) fonts
-                .toArray(new FontDefinition[fonts.size()]);
-        ThemeElementHelper.populateRegistry(workbench.getThemeManager()
-				.getTheme(IThemeManager.DEFAULT_THEME), fontDefs, PrefUtil
-				.getInternalPreferenceStore());
-    }
-
-    //TODO: confirm
-    private void loadThemes(IExtension ext) {
-        ThemeRegistryReader reader = new ThemeRegistryReader();
-        ThemeRegistry registry = (ThemeRegistry) WorkbenchPlugin.getDefault()
-                .getThemeRegistry();
-        reader.setRegistry(registry);
-        IConfigurationElement[] elements = ext.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-			reader.readElement(elements[i]);
-		}
-
-        Collection colors = reader.getColorDefinitions();
-        ColorDefinition[] colorDefs = (ColorDefinition[]) colors
-                .toArray(new ColorDefinition[colors.size()]);
-
-        ITheme theme = workbench.getThemeManager().getTheme(
-                IThemeManager.DEFAULT_THEME);
-        ThemeElementHelper.populateRegistry(theme, colorDefs, PrefUtil
-				.getInternalPreferenceStore());
-
-        Collection fonts = reader.getFontDefinitions();
-        FontDefinition[] fontDefs = (FontDefinition[]) fonts
-                .toArray(new FontDefinition[fonts.size()]);
-        ThemeElementHelper.populateRegistry(theme, fontDefs, PrefUtil
-				.getInternalPreferenceStore());
-
-        Map data = reader.getData();
-        registry.addData(data);
-    }
-
-    private void resetCurrentPerspective(Display display) {
-        if (changeList.isEmpty()) {
-			return;
-		}
-
-        final StringBuffer message = new StringBuffer(
-                ExtensionEventHandlerMessages.ExtensionEventHandler_following_changes);
-
-        for (Iterator i = changeList.iterator(); i.hasNext();) {
-            message.append(i.next());
-        }
-
-        message.append(ExtensionEventHandlerMessages.ExtensionEventHandler_need_to_reset);
-
-        display.asyncExec(new Runnable() {
-            public void run() {
-                Shell parentShell = null;
-                IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
-                if (window == null) {
-                    if (workbench.getWorkbenchWindowCount() == 0) {
-						return;
-					}
-                    window = workbench.getWorkbenchWindows()[0];
-                }
-
-                parentShell = window.getShell();
-
-                if (MessageDialog
-                        .openQuestion(
-                                parentShell,
-                                ExtensionEventHandlerMessages.ExtensionEventHandler_reset_perspective, message.toString())) {
-                    IWorkbenchPage page = window.getActivePage();
-                    if (page == null) {
-						return;
-					}
-                    page.resetPerspective();
-                }
-            }
-        });
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.properties
deleted file mode 100644
index 7906cec..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandler.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-ExtensionEventHandler_new_action_set=action set(s).
-ExtensionEventHandler_following_changes=The following changes have been detected:\n\n
-ExtensionEventHandler_change_format=  * {0} has contributed {1}\n
-ExtensionEventHandler_need_to_reset=\nYou will need to reset your perspectives in order for these changes to be recognized.  Would you like to reset your current perspective?
-ExtensionEventHandler_reset_perspective=Reset Perspective?
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java
deleted file mode 100644
index b40f4cd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ExtensionEventHandlerMessages.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-public class ExtensionEventHandlerMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.ExtensionEventHandler";//$NON-NLS-1$
-	//
-	// Copyright (c) 2003, 2004 IBM Corporation and others.
-	// All rights reserved. This program and the accompanying materials
-	// are made available under the terms of the Eclipse Public License v1.0
-	// which accompanies this distribution, and is available at
-	// http://www.eclipse.org/legal/epl-v10.html
-	//
-	// Contributors:
-	//     IBM Corporation - initial API and implementation
-	//
-	public static String ExtensionEventHandler_new_action_set;
-	public static String ExtensionEventHandler_following_changes;
-	public static String ExtensionEventHandler_change_format;
-	public static String ExtensionEventHandler_need_to_reset;
-	public static String ExtensionEventHandler_reset_perspective;
-
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, ExtensionEventHandlerMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FaderAnimationFeedback.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FaderAnimationFeedback.java
deleted file mode 100644
index 8637db2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FaderAnimationFeedback.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Creates an animation effect where the Shell's image is captured and
- * over-lain (in its own shell) on top of the real one. This image
- * masks the changes to the 'real' shell and then the covering image
- * fades to transparent, revealing the new state.
- * 
- * This provides a nice cross-fade effect for operations like a
- * perspective change (where the overall effect on the shell is large.
- * 
- * @since 3.3
- *
- */
-public class FaderAnimationFeedback extends	AnimationFeedbackBase {
-	private Image backingStore;
-	private Shell theShell;
-	private Display display;
-	static boolean useCopy = true;
-
-	public FaderAnimationFeedback(Shell parentShell) {
-		super(parentShell);
-	}
-
-	public void dispose() {
-		backingStore.dispose();
-		theShell.setVisible(false);
-		theShell.dispose();
-	}
-
-//	private static Image printImage(Control control) {
-//		Rectangle r = control.getBounds();
-//		final Image image = new Image(control.getDisplay(), r.width, r.height);
-//		GC gc = new GC(image);
-//		int hDC = gc.handle;
-//		int hwnd = control.handle;
-//		int bits = OS.GetWindowLong (hwnd, OS.GWL_STYLE);
-//		if ((bits & OS.WS_VISIBLE) == 0) {
-//			OS.DefWindowProc(hwnd, OS.WM_SETREDRAW, 1, 0);
-//		} 
-//		OS.RedrawWindow (hwnd, null, 0, OS.RDW_UPDATENOW | OS.RDW_ALLCHILDREN);
-//		final long t0 = System.currentTimeMillis();
-//		OS.PrintWindow (hwnd, hDC, 0);
-//		final long t1 = System.currentTimeMillis();
-//		System.out.println("Time: " + (t1 - t0) + " ms"); //$NON-NLS-1$ //$NON-NLS-2$
-//		if ((bits & OS.WS_VISIBLE) == 0) {
-//			OS.DefWindowProc(hwnd, OS.WM_SETREDRAW, 0, 0);
-//		}
-//		gc.dispose();
-//		
-//		return image;
-//	}
-
-	public void initialize(AnimationEngine engine) {
-		display = getAnimationShell().getDisplay();
-
-		Rectangle psRect = getAnimationShell().getBounds();
-		theShell = new Shell(getAnimationShell(), SWT.NO_TRIM | SWT.ON_TOP);
-		theShell.setBounds(getAnimationShell().getBounds());
-
-		// Capture the background image
-		System.out.println("Start time = " + System.currentTimeMillis()); //$NON-NLS-1$
-		if (useCopy) {
-			backingStore = new Image(theShell.getDisplay(), psRect);
-			GC gc = new GC(display);
-			gc.copyArea(backingStore, psRect.x, psRect.y);
-			gc.dispose();
-		}
-		else {
-			System.out.println("use printImage"); //$NON-NLS-1$
-			//backingStore = printImage(getAnimationShell());
-		}
-		
-		theShell.setAlpha(254);
-		theShell.setBackgroundImage(backingStore);
-		theShell.setVisible(true);
-		System.out.println("End time = " + System.currentTimeMillis()); //$NON-NLS-1$
-		//display.update();
-
-	}
-		
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.RectangleAnimationFeedbackBase#jobInit(org.eclipse.ui.internal.AnimationEngine)
-	 */
-	public boolean jobInit(AnimationEngine engine) {
-		return super.jobInit(engine);
-	}
-
-	public void renderStep(AnimationEngine engine) {
-		//System.out.println("render: " + System.currentTimeMillis() + " amount" + engine.amount()); //$NON-NLS-1$ //$NON-NLS-2$
-		theShell.setAlpha((int) (255 - (engine.amount()*255)));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBar.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBar.java
deleted file mode 100644
index e6e4ff8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBar.java
+++ /dev/null
@@ -1,984 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Kiryl Kazakevich, Intel - bug 88359
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dnd.AbstractDropTarget;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.layout.CellData;
-import org.eclipse.ui.internal.layout.CellLayout;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.layout.Row;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.presentations.PresentationUtil;
-import org.osgi.framework.Bundle;
-
-/**
- * Represents the fast view bar.
- * 
- * <p>The set of fastviews are obtained from the WorkbenchWindow that 
- * is passed into the constructor. The set of fastviews may be refreshed to 
- * match the state of the perspective by calling the update(...) method.</p>
- * 
- * @see org.eclipse.ui.internal.FastViewPane
- */
-public class FastViewBar implements IWindowTrim {
-	public static String FASTVIEWBAR_ID = "org.eclise.ui.internal.FastViewBar"; //$NON-NLS-1$
-	
-    private ToolBarManager fastViewBar;
-    private MenuManager fastViewBarMenuManager;
-    private MenuManager showViewMenuMgr;
-    private FastViewBarContextMenuContribution contextContributionItem;
-
-    private WorkbenchWindow window;
-    private IViewReference selection;
-    
-    // "New Fast View" 'Button' fields
-    private MenuManager newFastViewMenuMgr;
-    private Composite fvbComposite;
-    private ToolBar menuTB;
-    private ToolItem menuItem;
-    private CellData toolBarData;
-
-    private static final int HIDDEN_WIDTH = 5;
-
-
-    private int oldLength = 0;
-    
-    private ViewDropTarget dropTarget;
-
-    private Listener dragListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point position = DragUtil.getEventLoc(event);
-
-            IViewReference ref = getViewAt(position);
-
-            if (ref == null) {
-                startDraggingFastViewBar(position, false);
-            } else {
-                startDraggingFastView(ref, position, false);
-            }
-        }
-    };
-
-    // Map of string view IDs onto Booleans (true iff horizontally aligned)
-    private Map viewOrientation = new HashMap();
-
-    private Listener addMenuListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point loc = new Point(event.x, event.y);
-            if (event.type == SWT.MenuDetect) {
-                showAddFastViewPopup(loc);
-            }
-        }
-    };
-
-    private Listener menuListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point loc = new Point(event.x, event.y);
-            if (event.type == SWT.MenuDetect) {
-                showFastViewBarPopup(loc);
-            }
-        }
-    };
-	private int fCurrentSide = SWT.DEFAULT;
-
-	private boolean hasNewFastViewDisabled = false;
-
-    class ViewDropTarget extends AbstractDropTarget {
-        List panes;
-
-        ToolItem position;
-
-        /**
-         * @param panesToDrop the list of ViewPanes to drop at the given position
-         */
-        public ViewDropTarget(List panesToDrop, ToolItem position) {
-            setTarget(panesToDrop, position);
-        }
-        
-        public void setTarget(List panesToDrop, ToolItem position) {
-            panes = panesToDrop;
-            this.position = position;            
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.dnd.IDropTarget#drop()
-         */
-        public void drop() {
-            IViewReference view = getViewFor(position);
-
-            Iterator iter = panes.iterator();
-            while (iter.hasNext()) {
-                ViewPane pane = (ViewPane) iter.next();
-                IViewReference ref = pane.getViewReference();
-                getPerspective().getFastViewManager().addViewReference(FASTVIEWBAR_ID, getIndex(view), ref, true);
-//                getPage().addFastView(pane.getViewReference());
-//                getPage().getActivePerspective().moveFastView(
-//                        pane.getViewReference(), view);
-            }
-            update(true);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.dnd.IDropTarget#getCursor()
-         */
-        public Cursor getCursor() {
-            return DragCursors.getCursor(DragCursors.FASTVIEW);
-        }
-
-        public Rectangle getSnapRectangle() {
-            if (position == null) {
-                // As long as the toolbar is not empty, highlight the place
-                // where this view will appear (we
-                // may have compressed it to save space when empty, so the actual
-                // icon location may not be over the toolbar when it is empty)
-                if (getToolBar().getItemCount() > 0) {
-                    return getLocationOfNextIcon();
-                }
-                // If the toolbar is empty, highlight the entire toolbar 
-                return DragUtil.getDisplayBounds(getControl());
-			}
-
-			return Geometry.toDisplay(getToolBar(), position.getBounds());
-        }
-    }
-    
-    /**
-     * Constructs a new fast view bar for the given workbench window.
-     * 
-     * @param theWindow
-     */
-    public FastViewBar(WorkbenchWindow theWindow) {
-        window = theWindow;
-
-        hasNewFastViewDisabled = PrefUtil.getAPIPreferenceStore().getBoolean(
-        		IWorkbenchPreferenceConstants.DISABLE_NEW_FAST_VIEW);
-
-        // Construct the context menu for the fast view bar area
-        fastViewBarMenuManager = new MenuManager();
-        contextContributionItem = new FastViewBarContextMenuContribution(this);
-        fastViewBarMenuManager.add(contextContributionItem);
-
-        if (!hasNewFastViewDisabled) {
-        	// Add "New Fast View" submenu
-        	showViewMenuMgr = new MenuManager(WorkbenchMessages.FastViewBar_show_view, "showView"); //$NON-NLS-1$
-        	IContributionItem showViewMenu = new ShowViewMenu(window, ShowViewMenu.class.getName(), true);
-        	showViewMenuMgr.add(showViewMenu);
-        	fastViewBarMenuManager.add(showViewMenuMgr);
-
-        	// Construct the context menu for the "New Fast View" 'button'
-        	newFastViewMenuMgr = new MenuManager(WorkbenchMessages.FastViewBar_show_view, "showView"); //$NON-NLS-1$
-        	showViewMenu = new ShowViewMenu(window, ShowViewMenu.class.getName(), true);
-        	newFastViewMenuMgr.add(showViewMenu);
-        }
-    }
-
-    /**
-     * Returns the platform's idea of where the fast view bar should be docked in a fresh
-     * workspace.  This value is meaningless after a workspace has been setup, since the
-     * fast view bar state is then persisted in the workbench.  This preference is just
-     * used for applications that want the initial docking location to be somewhere other
-     * than bottom. 
-     * @return the initial side to dock on
-     */
-    public static int getInitialSide() {
-        String loc = PrefUtil.getAPIPreferenceStore().getString(
-                IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION);
-
-        if (IWorkbenchPreferenceConstants.BOTTOM.equals(loc)) {
-			return SWT.BOTTOM;
-		}
-        if (IWorkbenchPreferenceConstants.LEFT.equals(loc)) {
-			return SWT.LEFT;
-		}
-        if (IWorkbenchPreferenceConstants.RIGHT.equals(loc)) {
-			return SWT.RIGHT;
-		}
-
-        Bundle bundle = Platform.getBundle(PlatformUI.PLUGIN_ID);
-        if (bundle != null) {
-            IStatus status = new Status(
-                    IStatus.WARNING,
-                    PlatformUI.PLUGIN_ID,
-                    IStatus.WARNING,
-                    "Invalid value for " //$NON-NLS-1$
-                            + PlatformUI.PLUGIN_ID
-                            + "/" //$NON-NLS-1$
-                            + IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION
-                            + " preference.  Value \"" + loc //$NON-NLS-1$
-                            + "\" should be one of \"" //$NON-NLS-1$
-                            + IWorkbenchPreferenceConstants.LEFT + "\", \"" //$NON-NLS-1$
-                            + IWorkbenchPreferenceConstants.BOTTOM
-                            + "\", or \"" //$NON-NLS-1$
-                            + IWorkbenchPreferenceConstants.RIGHT + "\".", null); //$NON-NLS-1$
-            Platform.getLog(bundle).log(status);
-        }
-
-        // use bottom as the default-default
-        return SWT.BOTTOM;
-    }
-
-    public void setOrientation(IViewReference refToSet, int newState) {
-        if (newState == getOrientation(refToSet)) {
-            return;
-        }
-
-        viewOrientation.put(refToSet.getId(), new Integer(newState));
-        Perspective persp = getPerspective();
-
-        if (persp != null) {
-            IViewReference ref = persp.getActiveFastView();
-            if (ref != null) {
-                persp.setActiveFastView(null);
-            }
-            persp.setActiveFastView(refToSet);
-        }
-    }
-
-    /**
-     * Returns the active workbench page or null if none
-     */
-    private WorkbenchPage getPage() {
-        if (window == null) {
-            return null;
-        }
-
-        return window.getActiveWorkbenchPage();
-    }
-
-    /**
-     * Returns the current perspective or null if none
-     */
-    private Perspective getPerspective() {
-
-        WorkbenchPage page = getPage();
-
-        if (page == null) {
-            return null;
-        }
-
-        return page.getActivePerspective();
-    }
-
-    /**
-     * Creates the underlying SWT fvbComposite for the fast view bar. Will add exactly
-     * one new fvbComposite to the given composite. Makes no assumptions about the layout
-     * being used in the parent composite.
-     * 
-     * @param parent enclosing SWT composite
-     */
-    public void createControl(Composite parent) {
-        fvbComposite = new Composite(parent, SWT.NONE) {
-        	public Point computeSize(int wHint, int hHint, boolean changed) {
-				Point size = super.computeSize(wHint, hHint, changed);
-				if (Geometry.isHorizontal(getSide())) {
-					if (size.y < TrimUtil.TRIM_DEFAULT_HEIGHT) {
-						size.y = TrimUtil.TRIM_DEFAULT_HEIGHT;
-					}
-				} else {
-					if (size.x < TrimUtil.TRIM_DEFAULT_HEIGHT) {
-						size.x = TrimUtil.TRIM_DEFAULT_HEIGHT;
-					}
-				}
-				return size;
-			}};
-        String tip = WorkbenchMessages.FastViewBar_0; 
-        fvbComposite.setToolTipText(tip);
-
-        fvbComposite.addListener(SWT.MenuDetect, menuListener);
-        PresentationUtil.addDragListener(fvbComposite, dragListener);
-
-        createChildControls();
-    }
-
-    /**
-     * Create the contents of the fast view bar. The top-level fvbComposite (created by createControl) is a 
-     * composite that is created once over the lifetime of the fast view bar. This method creates the 
-     * rest of the widgetry inside that composite. The controls created by this method will be 
-     * destroyed and recreated if the fast view bar is docked to a different side of the window.
-     */
-    protected void createChildControls() {
-        int newSide = getSide();
-        int orientation = Geometry.isHorizontal(newSide) ? SWT.HORIZONTAL
-                : SWT.VERTICAL;
-        
-        // Create a ControlLayout apropriate for the new orientation
-        CellLayout controlLayout;        
-        if (Geometry.isHorizontal(newSide)) {
-        	controlLayout = new CellLayout(0)
-        		.setMargins(0, 0)
-        		.setDefaultRow(Row.growing())
-        		.setDefaultColumn(Row.fixed())
-        		.setColumn(1, Row.growing());
-        } else {
-        	controlLayout = new CellLayout(1)
-        		.setMargins(0, 3)
-        		.setDefaultColumn(Row.growing())
-        		.setDefaultRow(Row.fixed())
-        		.setRow(1, Row.growing());
-        }
-        
-        // Set up the composite for the new orientation
-        fvbComposite.setLayout(controlLayout);
-
-        if (!hasNewFastViewDisabled) {
-        	// Create a toolbar to show an 'Add FastView' menu 'button'
-        	menuTB = new ToolBar(fvbComposite, SWT.FLAT | orientation);
-
-        	// Construct an item to act as a 'menu button' (a la the PerspectiveSwitcher)
-        	menuItem = new  ToolItem(menuTB, SWT.PUSH, 0);
-
-        	Image tbImage = WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_ETOOL_NEW_FASTVIEW);
-        	menuItem.setImage(tbImage);
-
-        	final String menuTip = WorkbenchMessages.FastViewBar_0;
-        	menuItem.setToolTipText(menuTip);
-        	//new ToolItem(menuTB, SWT.SEPARATOR, 1);
-        	
-        	menuTB.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-            	public void getName(AccessibleEvent e) {
-            		e.result = menuTip;
-            	}
-            });
-
-        	// Now that the ToolBar is populated calculate its size...
-        	Point size = menuTB.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-        	menuTB.setBounds(0, 0, size.x, size.y);
-
-        	// Bring up the 'Add Fast View' menu on a left -or- right button click
-        	// Right click (context menu)
-        	menuItem.addListener(SWT.MenuDetect, addMenuListener);        
-        	menuTB.addListener(SWT.MenuDetect, addMenuListener);
-
-        	// Left Click...
-        	menuItem.addSelectionListener(new SelectionListener() {
-        		public void widgetSelected(SelectionEvent e) {
-        			Rectangle bb = DragUtil.getDisplayBounds(menuTB);
-        			showAddFastViewPopup(new Point(bb.x,bb.y+bb.height));
-        		}
-
-        		public void widgetDefaultSelected(SelectionEvent e) {
-        		}
-
-        	});
-
-        	// try to get the layout correct...
-        	toolBarData = new CellData();
-        	toolBarData.align(SWT.FILL, SWT.FILL);
-        	menuTB.setLayoutData(toolBarData);
-        }
-
-        // Construct the ToolBar containing the 'Fast' views
-        fastViewBar = new ToolBarManager(SWT.FLAT | SWT.WRAP | orientation);
-        fastViewBar.add(new ShowFastViewContribution(window));
-
-        fastViewBar.createControl(fvbComposite);
-
-        getToolBar().addListener(SWT.MenuDetect, menuListener);
-
-        IDragOverListener fastViewDragTarget = new IDragOverListener() {
-
-            public IDropTarget drag(Control currentControl,
-                    Object draggedObject, Point position,
-                    Rectangle dragRectangle) {
-                ToolItem targetItem = getToolItem(position);
-                if (draggedObject instanceof ViewPane) {
-                    ViewPane pane = (ViewPane) draggedObject;
-
-                    // Can't drag views between windows
-                    if (pane.getWorkbenchWindow() != window) {
-                        return null;
-                    }
-
-                    List newList = new ArrayList(1);
-                    newList.add(draggedObject);
-
-                    return createDropTarget(newList, targetItem);
-                }
-                if (draggedObject instanceof ViewStack) {
-                    ViewStack folder = (ViewStack) draggedObject;
-
-                    if (folder.getWorkbenchWindow() != window) {
-                        return null;
-                    }
-
-                    List viewList = new ArrayList(folder.getItemCount());
-                    LayoutPart[] children = folder.getChildren();
-
-                    for (int idx = 0; idx < children.length; idx++) {
-                        if (!(children[idx] instanceof PartPlaceholder)) {
-                            viewList.add(children[idx]);
-                        }
-                    }
-
-                    return createDropTarget(viewList, targetItem);
-                }
-
-                return null;
-            }
-
-        };
-
-        toolBarData = new CellData();
-        toolBarData.align(SWT.FILL, SWT.FILL);
-
-        getToolBar().setLayoutData(toolBarData);
-        PresentationUtil.addDragListener(getToolBar(), dragListener);
-        DragUtil.addDragTarget(getControl(), fastViewDragTarget);
-
-        update(true);
-    }
-
-    /**
-     * Creates and returns a drop target with the given properties. To save object allocation,
-     * the same instance is saved and reused wherever possible.
-     * 
-     * @param targetItem
-     * @param viewList
-     * @since 3.1
-     */
-    private IDropTarget createDropTarget(List viewList, ToolItem targetItem) {
-        if (dropTarget == null) {
-            dropTarget = new ViewDropTarget(viewList, targetItem);
-        } else {
-            dropTarget.setTarget(viewList, targetItem);
-        }
-        return dropTarget;
-    }
-    
-    /**
-     * Begins dragging a particular fast view
-     * 
-     * @param ref
-     * @param position
-     */
-    protected void startDraggingFastView(IViewReference ref, Point position,
-            boolean usingKeyboard) {
-        ViewPane pane = (ViewPane) ((WorkbenchPartReference) ref).getPane();
-
-        ToolItem item = itemFor(pane.getViewReference());
-
-        Rectangle dragRect = Geometry.toDisplay(getToolBar(), item.getBounds());
-
-        startDrag(((WorkbenchPartReference) ref).getPane(), dragRect, position,
-				usingKeyboard);
-    }
-
-    private void startDrag(Object toDrag, Rectangle dragRect, Point position,
-            boolean usingKeyboard) {
-
-        Perspective persp = getPerspective();
-
-        WorkbenchPage page = getPage();
-
-        IViewReference oldFastView = null;
-        if (persp != null) {
-            oldFastView = persp.getActiveFastView();
-
-            if (page != null) {
-                page.hideFastView();
-            }
-        }
-
-        if (page.isZoomed()) {
-            page.zoomOut();
-        }
-
-        boolean success = DragUtil.performDrag(toDrag, dragRect, position,
-                !usingKeyboard);
-
-        // If the drag was cancelled, reopen the old fast view
-        if (!success && oldFastView != null && page != null) {
-            page.toggleFastView(oldFastView);
-        }
-    }
-
-    /**
-     * Begins dragging the fast view bar
-     * 
-     * @param position initial mouse position
-     * @param usingKeyboard true iff the bar is being dragged using the keyboard
-     */
-    protected void startDraggingFastViewBar(Point position,
-            boolean usingKeyboard) {
-        Rectangle dragRect = DragUtil.getDisplayBounds(fvbComposite);
-
-        startDrag(this, dragRect, position, usingKeyboard);
-    }
-
-    /**
-     * Returns the toolbar for the fastview bar.
-     */
-    private ToolBar getToolBar() {
-        return fastViewBar.getControl();
-    }
-
-    private IViewReference getViewFor(ToolItem item) {
-        if (item == null) {
-            return null;
-        }
-
-        return (IViewReference) item
-                .getData(ShowFastViewContribution.FAST_VIEW);
-    }
-
-    /**
-     * Returns the view at the given position, or null if none
-     * 
-     * @param position to test, in display coordinates 
-     * @return the view at the given position or null if none
-     */
-    private IViewReference getViewAt(Point position) {
-        return getViewFor(getToolItem(position));
-    }
-
-    /**
-     * Returns the toolbar item at the given position, in display coordinates
-     * @param position
-     */
-    private ToolItem getToolItem(Point position) {
-        ToolBar toolbar = getToolBar();
-        Point local = toolbar.toControl(position);
-        return toolbar.getItem(local);
-    }
-
-    /**
-     * Shows the popup menu for an item in the fast view bar.
-     */
-    private void showFastViewBarPopup(Point pt) {
-        // Get the tool item under the mouse.
-
-        ToolBar toolBar = getToolBar();
-
-        Menu menu = fastViewBarMenuManager.createContextMenu(toolBar);
-
-        IViewReference selectedView = getViewAt(pt);
-        contextContributionItem.setTarget(selectedView);
-
-        menu.setLocation(pt.x, pt.y);
-        menu.setVisible(true);
-    }
-
-    /**
-     * Shows the popup menu for an item in the fast view bar.
-     */
-    private void showAddFastViewPopup(Point pt) {
-        Menu menu = newFastViewMenuMgr.createContextMenu(menuTB);
-        menu.setLocation(pt.x, pt.y);
-        menu.setVisible(true);
-    }
-
-    public int getOrientation(IViewReference ref) {
-        return isHorizontal(ref) ? SWT.HORIZONTAL : SWT.VERTICAL;
-    }
-
-    /**
-     * Returns the underlying SWT fvbComposite for the fast view bar, or null if
-     * createControl has not yet been invoked. The caller must not make any
-     * assumptions about the type of Control that is returned.
-     * 
-     * @return the underlying SWT fvbComposite for the fast view bar
-     */
-    public Control getControl() {
-        return fvbComposite;
-    }
-
-    public void dispose() {
-        fastViewBarMenuManager.dispose();
-
-        disposeChildControls();
-    }
-
-    protected void disposeChildControls() {
-        fastViewBar.dispose();
-        fastViewBar = null;
-
-        if (menuItem != null) {
-        	menuItem.dispose();
-        	menuTB.dispose();
-        }
-        
-        oldLength = 0;
-    }
-
-    
-    /**
-     * Refreshes the contents to match the fast views in the window's
-     * current perspective. 
-     * 
-     * @param force
-     */
-    public void update(boolean force) {
-        fastViewBar.update(force);
-        ToolItem[] items = fastViewBar.getControl().getItems();
-
-        updateLayoutData();
-
-        for (int idx = 0; idx < items.length; idx++) {
-            IViewReference view = getViewFor(items[idx]);
-
-            viewOrientation.put(view.getId(), new Integer(
-                    isHorizontal(view) ? SWT.HORIZONTAL : SWT.VERTICAL));
-        }
-        
-        // Resize the FVB to its new size
-        fvbComposite.setSize(fvbComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
-    }
-    
-	private void updateLayoutData() {
-		ToolItem[] items = fastViewBar.getControl().getItems();
-		boolean isHorizontal = Geometry.isHorizontal(getSide());
-		boolean shouldExpand = items.length > 0;
-
-        Point hint = new Point(32, shouldExpand ? SWT.DEFAULT : HIDDEN_WIDTH);
-        
-        if (!isHorizontal) {
-            Geometry.flipXY(hint);
-        }
-        
-        if (shouldExpand) {
-            toolBarData.setHint(CellData.MINIMUM, hint);
-        } else {
-            toolBarData.setHint(CellData.OVERRIDE, hint);
-        }
-   
-        if (items.length != oldLength) {
-            LayoutUtil.resize(fvbComposite);
-            oldLength = items.length;
-        }
-	}
-
-    /**
-     * Returns the currently selected fastview
-     * 
-     * @return the currently selected fastview or null if none
-     */
-    public IViewReference getSelection() {
-        return selection;
-    }
-
-    /**
-     * Sets the currently selected fastview.
-     * 
-     * @param selected the currently selected fastview, or null if none
-     */
-    public void setSelection(IViewReference selected) {
-
-        ToolItem[] items = fastViewBar.getControl().getItems();
-        for (int i = 0; i < items.length; i++) {
-            ToolItem item = items[i];
-            item.setSelection(getView(item) == selected);
-        }
-
-        selection = selected;
-    }
-
-    /**
-     * Returns the view associated with the given toolbar item
-     * 
-     * @param item
-     */
-    private IViewReference getView(ToolItem item) {
-        return (IViewReference) item
-                .getData(ShowFastViewContribution.FAST_VIEW);
-    }
-
-    private int getIndex(IViewReference toFind) {
-        ToolItem[] items = fastViewBar.getControl().getItems();
-        for (int i = 0; i < items.length; i++) {
-            if (items[i].getData(ShowFastViewContribution.FAST_VIEW) == toFind) {
-                return i;
-            }
-        }
-
-        return items.length;
-    }
-
-    private ToolItem getItem(int idx) {
-        ToolItem[] items = fastViewBar.getControl().getItems();
-        if (idx >= items.length) {
-            return null;
-        }
-
-        return items[idx];
-    }
-
-    /**
-     * Returns the toolbar item associated with the given view
-     * 
-     * @param toFind
-     */
-    private ToolItem itemFor(IViewReference toFind) {
-        return getItem(getIndex(toFind));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.IWindowTrim#getValidSides()
-     */
-    public int getValidSides() {
-        return SWT.TOP | SWT.LEFT | SWT.RIGHT | SWT.BOTTOM;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.IWindowTrim#docked(int)
-     */
-    public void dock(int side) {
-    	fCurrentSide = side;
-		disposeChildControls();
-		createChildControls();
-	}
-
-    /**
-     * Get the current side.
-     * @return SWT.BOTTOM or SWT.RIGHT or SWT.LEFT
-     */
-    public int getSide() {
-    	if (fCurrentSide==SWT.DEFAULT) {
-    		fCurrentSide = getInitialSide();
-    	}
-        return fCurrentSide;
-    }
-
-
-    private boolean isHorizontal(IViewReference ref) {
-        Integer orientation = (Integer) viewOrientation.get(ref.getId());
-        boolean horizontalBar = Geometry.isHorizontal(getSide());
-        boolean horizontal = horizontalBar;
-        if (orientation != null) {
-            horizontal = orientation.intValue() == SWT.HORIZONTAL;
-        } else {
-            horizontal = false;
-        }
-
-        return horizontal;
-    }
-
-    /**
-     * @param ref
-     */
-    public int getViewSide(IViewReference ref) {
-        boolean horizontal = isHorizontal(ref);
-
-        if (horizontal) {
-            return (getSide() == SWT.BOTTOM) ? SWT.BOTTOM : SWT.TOP;
-        }
-        
-        return (getSide() == SWT.RIGHT) ? SWT.RIGHT : SWT.LEFT;
-    }
-
-    public void saveState(IMemento memento) {
-        memento.putInteger(IWorkbenchConstants.TAG_FAST_VIEW_SIDE, getSide());
-
-        Iterator iter = viewOrientation.keySet().iterator();
-        while (iter.hasNext()) {
-            String next = (String) iter.next();
-            IMemento orientation = memento
-                    .createChild(IWorkbenchConstants.TAG_FAST_VIEW_ORIENTATION);
-
-            orientation.putString(IWorkbenchConstants.TAG_VIEW, next);
-            orientation.putInteger(IWorkbenchConstants.TAG_POSITION,
-                    ((Integer) viewOrientation.get(next)).intValue());
-        }
-
-    }
-
-    /**
-     * Returns the approximate location where the next fastview icon
-     * will be drawn (display coordinates)
-     */
-    public Rectangle getLocationOfNextIcon() {
-        ToolBar control = getToolBar();
-
-        Rectangle result = control.getBounds();
-        Point size = control.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
-        result.height = size.y;
-        result.width = size.x;
-        
-        boolean horizontal = Geometry.isHorizontal(getSide());
-        if (control.getItemCount() == 0) {
-        	Geometry.setDimension(result, horizontal, 0);
-        }
-        
-        int hoverSide = horizontal ? SWT.RIGHT : SWT.BOTTOM;
-
-        result = Geometry.getExtrudedEdge(result, -Geometry.getDimension(
-                result, !horizontal), hoverSide);
-
-        return Geometry.toDisplay(control.getParent(), result);
-    }
-
-    public void restoreState(IMemento memento) {
-        Integer bigInt;
-        bigInt = memento.getInteger(IWorkbenchConstants.TAG_FAST_VIEW_SIDE);
-        if (bigInt != null) {
-            dock(bigInt.intValue());
-        }
-
-        IMemento[] orientations = memento
-                .getChildren(IWorkbenchConstants.TAG_FAST_VIEW_ORIENTATION);
-        for (int i = 0; i < orientations.length; i++) {
-            IMemento next = orientations[i];
-
-            viewOrientation.put(next.getString(IWorkbenchConstants.TAG_VIEW),
-                    next.getInteger(IWorkbenchConstants.TAG_POSITION));
-        }
-    }
-    
-    public WorkbenchWindow getWindow() {
-        return window;
-    }
-    
-    public void restoreView(IViewReference selectedView) {
-        if (selectedView != null) {
-            WorkbenchPage page = window.getActiveWorkbenchPage();
-            if (page != null) {
-                int idx = getIndex(selectedView);
-                ToolItem item = getItem(idx);
-                Rectangle bounds = item.getBounds();
-                Rectangle startBounds = Geometry.toDisplay(item
-                        .getParent(), bounds);
-
-                Perspective persp = getPerspective();
-                if (persp != null) {
-                	persp.getFastViewManager().removeViewReference(selectedView, true, true);
-                }
-
-                IWorkbenchPart toActivate = selectedView
-                        .getPart(true);
-                if (toActivate != null) {
-                    page.activate(toActivate);
-                }
-
-                ViewPane pane = (ViewPane) ((WorkbenchPartReference) selectedView)
-                        .getPane();
-
-                RectangleAnimation animation = new RectangleAnimation(
-                        window.getShell(), startBounds, pane
-                                .getParentBounds());
-
-                animation.schedule();
-            }
-        }
-    }
-
-	/**
-	 * @return The list of all view references in the stack
-	 */
-	public List getViewRefs() {
-		List refs = new ArrayList(fastViewBar.getControl().getItemCount());
-		ToolItem[] items = fastViewBar.getControl().getItems();
-		for (int i = 0; i < items.length; i++) {
-			Object data = items[i].getData(ShowFastViewContribution.FAST_VIEW);
-			if (data != null) 
-				refs.add(data);
-		}
-		
-		return refs;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#isCloseable()
-	 */
-	public boolean isCloseable() {
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#handleClose()
-	 */
-	public void handleClose() {
-		// nothing to do...
-	}
-    
-    /* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getId()
-	 */
-	public String getId() {
-		return "org.eclise.ui.internal.FastViewBar"; //$NON-NLS-1$
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getDisplayName()
-	 */
-	public String getDisplayName() {
-		return WorkbenchMessages.TrimCommon_FastView_TrimName;
-	}
-
-	/**
-     * Returns the context menu contribution item.  This is for
-     * internal UI testing only.
-     * 
-     * @return the context menu contribution item
-     * @since 3.1.1
-     */
-    public FastViewBarContextMenuContribution testContextMenu() {
-    	return contextContributionItem;
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#getWidthHint()
-	 */
-	public int getWidthHint() {
-		return SWT.DEFAULT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#getHeightHint()
-	 */
-	public int getHeightHint() {
-		return SWT.DEFAULT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#isResizeable()
-	 */
-	public boolean isResizeable() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBarContextMenuContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBarContextMenuContribution.java
deleted file mode 100644
index 077d392..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewBarContextMenuContribution.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IViewReference;
-
-public class FastViewBarContextMenuContribution extends ContributionItem {
-    private MenuItem orientationItem;
-    private MenuItem restoreItem;
-    private MenuItem closeItem;
-    private FastViewBar bar;
-    private RadioMenu radioButtons;
-    private IViewReference selectedView;
-    private IntModel currentOrientation = new IntModel(SWT.VERTICAL);
-    
-    private IChangeListener orientationChangeListener = new IChangeListener() {
-        public void update(boolean changed) {
-            if (changed && selectedView != null) {
-                bar.setOrientation(selectedView, currentOrientation.get());
-            }
-        }
-    };
-    
-    public FastViewBarContextMenuContribution(FastViewBar bar) {
-        this.bar = bar;
-        currentOrientation.addChangeListener(orientationChangeListener);
-    }
-
-    public void fill(Menu menu, int index) {
-        // TODO Auto-generated method stub
-        super.fill(menu, index);
-        
-
-        orientationItem = new MenuItem(menu, SWT.CASCADE, index++);
-        {
-            orientationItem.setText(WorkbenchMessages.FastViewBar_view_orientation);
-
-            Menu orientationSwtMenu = new Menu(orientationItem);
-            RadioMenu orientationMenu = new RadioMenu(orientationSwtMenu,
-                    currentOrientation);
-            orientationMenu
-                    .addMenuItem(
-                            WorkbenchMessages.FastViewBar_horizontal, new Integer(SWT.HORIZONTAL)); 
-            orientationMenu
-                    .addMenuItem(
-                            WorkbenchMessages.FastViewBar_vertical, new Integer(SWT.VERTICAL)); 
-
-            orientationItem.setMenu(orientationSwtMenu);
-        }
-
-        restoreItem = new MenuItem(menu, SWT.CHECK, index++);
-        restoreItem.setText(WorkbenchMessages.ViewPane_fastView);
-        restoreItem.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                bar.restoreView(selectedView);
-            }
-        });
-
-        closeItem = new MenuItem(menu, SWT.NONE, index++);
-        closeItem.setText(WorkbenchMessages.WorkbenchWindow_close); 
-        closeItem.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                if (selectedView != null) {
-                    WorkbenchPage page = bar.getWindow().getActiveWorkbenchPage();
-                    if (page != null) {
-                        page.hideView(selectedView);
-                    }
-                }
-            }
-        });
-
-       
-        // Set menu item enablement etc based on whether a view is selected
-        WorkbenchPage page = bar.getWindow().getActiveWorkbenchPage();
-        
-        if (selectedView != null) {
-        	restoreItem.setEnabled(page!=null && page.isMoveable(selectedView));
-        } else {
-        	restoreItem.setEnabled(false);
-        }
-        restoreItem.setSelection(true);
-        
-        if (selectedView != null) {
-			closeItem
-					.setEnabled(page != null && page.isCloseable(selectedView));
-		} else {
-			closeItem.setEnabled(false);
-		}
-        
-        orientationItem.setEnabled(selectedView != null);
-        if (selectedView != null) {
-            // Set the new orientation, but avoid re-sending the event to our own
-            // listener
-            currentOrientation.set(bar.getOrientation(selectedView),
-                    orientationChangeListener);
-        }
-    }
-    
-    public void setTarget(IViewReference selectedView) {
-        this.selectedView = selectedView;
-    }
-
-    public boolean isDynamic() {
-        return true;
-    }
-    
-    public void dispose() {
-        if (radioButtons != null) {
-            radioButtons.dispose();
-        }
-        super.dispose();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewDnDHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewDnDHandler.java
deleted file mode 100644
index 6ec9f7d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewDnDHandler.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.internal.dnd.AbstractDropTarget;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.presentations.PresentationUtil;
-
-/**
- * @since 3.3
- *
- */
-public class FastViewDnDHandler implements IDragOverListener {
-	private String id;
-	private ToolBarManager tbm;
-	private WorkbenchWindow wbw;
-    private ViewDropTarget dropTarget = null;
-
-    private Listener dragListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point position = DragUtil.getEventLoc(event);
-            
-            ToolBar toolbar = tbm.getControl();
-            Point local = toolbar.toControl(position);
-            ToolItem item = toolbar.getItem(local);
-            IViewReference ref = (IViewReference) item
-            .getData(ShowFastViewContribution.FAST_VIEW);
-
-            if (ref != null) {
-                startDraggingFastView(ref, position, false);
-            }
-        }
-    };
-
-    class ViewDropTarget extends AbstractDropTarget {
-        List panes;
-        ToolItem curItem;
-
-        /**
-         * @param panesToDrop the list of ViewPanes to drop at the given position
-         */
-        public ViewDropTarget(List panesToDrop, ToolItem position) {
-            setTarget(panesToDrop, position);
-        }
-        
-        public void setTarget(List panesToDrop, ToolItem position) {
-            panes = panesToDrop;
-            this.curItem = position;            
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.dnd.IDropTarget#drop()
-         */
-        public void drop() {
-            Perspective persp = wbw.getActiveWorkbenchPage().getActivePerspective();
-            FastViewManager fvm = persp.getFastViewManager();
-
-            int insertIndex = tbm.getControl().indexOf(curItem);
-            Iterator iter = panes.iterator();
-            while (iter.hasNext()) {
-                ViewPane pane = (ViewPane) iter.next();
-                IViewReference ref = pane.getViewReference();
-        		adoptRef(ref);
-                fvm.addViewReference(id, insertIndex++, ref, !iter.hasNext());
-            }
-        }
-
-        private void adoptRef(IViewReference ref) {
-			Perspective persp = wbw.getActiveWorkbenchPage()
-					.getActivePerspective();
-			PerspectiveHelper helper = persp.getPresentation();
-			ContainerPlaceholder ourContainerPlaceholder = (ContainerPlaceholder) helper
-					.findPart(id, null);
-			LayoutPart refPart = helper.findPart(ref.getId(), ref
-					.getSecondaryId());
-			ILayoutContainer refContainer = refPart.container;
-			if (refContainer != ourContainerPlaceholder) {
-				// remove the old part... if it's represented by a
-				// placeholder then just remove it...
-				if (refPart instanceof PartPlaceholder) {
-					if (refContainer instanceof ContainerPlaceholder) {
-						// just remove the placeholder
-						ViewStack realContainer = (ViewStack) ((ContainerPlaceholder) refContainer)
-								.getRealContainer();
-						realContainer.remove(refPart);
-					}
-					else if (refContainer instanceof ViewStack) {
-						refContainer.remove(refPart);
-					}
-				}
-				else {
-					// If its a real view ref then defref it...
-					helper.derefPart(refPart);
-				}
-				PartPlaceholder newPlaceholder = new PartPlaceholder(ref
-						.getId());
-				ourContainerPlaceholder.add(newPlaceholder);
-			}
-		}
-        
-        /*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.dnd.IDropTarget#getCursor()
-		 */
-        public Cursor getCursor() {
-            return DragCursors.getCursor(DragCursors.FASTVIEW);
-        }
-
-        public Rectangle getSnapRectangle() {
-            if (curItem == null) {
-                // As long as the toolbar is not empty, highlight the place
-                // where this view will appear (we
-                // may have compressed it to save space when empty, so the actual
-                // icon location may not be over the toolbar when it is empty)
-                if (tbm.getControl().getItemCount() > 0) {
-                    return getLocationOfNextIcon();
-                }
-                // If the toolbar is empty, highlight the entire toolbar 
-                return DragUtil.getDisplayBounds(tbm.getControl());
-			}
-
-			return Geometry.toDisplay(tbm.getControl(), curItem.getBounds());
-        }
-    }
-    
-	/**
-	 * 
-	 */
-	public FastViewDnDHandler(String id, final ToolBarManager tbm, WorkbenchWindow wbw) {
-		this.id = id;
-		this.tbm = tbm;
-		this.wbw = wbw;
-		
-		// Hook the 'drop' listener to the control
-		DragUtil.addDragTarget(tbm.getControl(), this);
-        PresentationUtil.addDragListener(tbm.getControl(), dragListener);
-		
-		// Clean up on dispose
-		tbm.getControl().addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				DragUtil.removeDragTarget((Control)(e.widget), FastViewDnDHandler.this);
-		        PresentationUtil.removeDragListener(tbm.getControl(), dragListener);
-			}
-		});
-	}
-
-    /**
-     * Returns the toolbar item at the given position, in display coordinates
-     * @param position
-     */
-    private ToolItem getToolItem(Point position) {
-        ToolBar toolbar = tbm.getControl();
-        Point local = toolbar.toControl(position);
-        return toolbar.getItem(local);
-    }
-    
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.dnd.IDragOverListener#drag(org.eclipse.swt.widgets.Control, java.lang.Object, org.eclipse.swt.graphics.Point, org.eclipse.swt.graphics.Rectangle)
-	 */
-	public IDropTarget drag(Control currentControl, Object draggedObject,
-			Point position, Rectangle dragRectangle) {
-		// If we're trying to drop onto a 'standalone' stack, don't...
-		if (isStandaloneStack())
-			return null;
-		
-        ToolItem targetItem = getToolItem(position);
-        if (draggedObject instanceof ViewPane) {
-            ViewPane pane = (ViewPane) draggedObject;
-
-            // Can't drag views between windows
-            if (pane.getWorkbenchWindow() != wbw) {
-                return null;
-            }
-
-            List newList = new ArrayList(1);
-            newList.add(draggedObject);
-
-            return createDropTarget(newList, targetItem);
-        }
-        if (draggedObject instanceof ViewStack) {
-            ViewStack folder = (ViewStack) draggedObject;
-
-            if (folder.getWorkbenchWindow() != wbw) {
-                return null;
-            }
-
-            List viewList = new ArrayList(folder.getItemCount());
-            LayoutPart[] children = folder.getChildren();
-
-            for (int idx = 0; idx < children.length; idx++) {
-                if (!(children[idx] instanceof PartPlaceholder)) {
-                    viewList.add(children[idx]);
-                }
-            }
-
-            return createDropTarget(viewList, targetItem);
-        }
-
-        return null;
-	}
-    /**
-     * Tests the view references associated with the stack and
-     * returns <code>true</code> if any view is a stand-alone view
-     * 
-	 * @return <code>true</code> is any view is stand-alone
-	 */
-	private boolean isStandaloneStack() {
-		Perspective persp = wbw.getActiveWorkbenchPage().getActivePerspective();
-		List fvs = persp.getFastViewManager().getFastViews(id);
-		for (Iterator iterator = fvs.iterator(); iterator.hasNext();) {
-			IViewReference ref = (IViewReference) iterator.next();
-			if (persp.isStandaloneView(ref))
-				return true;
-		}
-		
-		return false;
-	}
-
-	private IDropTarget createDropTarget(List viewList, ToolItem targetItem) {
-        if (dropTarget == null) {
-            dropTarget = new ViewDropTarget(viewList, targetItem);
-        } else {
-            dropTarget.setTarget(viewList, targetItem);
-        }
-        return dropTarget;
-    }
-
-    /**
-     * Returns the approximate location where the next fastview icon
-     * will be drawn (display coordinates)
-     */
-    public Rectangle getLocationOfNextIcon() {
-        ToolBar control = tbm.getControl();
-
-        Rectangle result = control.getBounds();
-        Point size = control.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
-        result.height = size.y;
-        result.width = size.x;
-        
-        boolean horizontal = (control.getStyle() & SWT.VERTICAL) == 0;
-        if (control.getItemCount() == 0) {
-        	Geometry.setDimension(result, horizontal, 0);
-        }
-        
-        int hoverSide = horizontal ? SWT.RIGHT : SWT.BOTTOM;
-
-        result = Geometry.getExtrudedEdge(result, -Geometry.getDimension(
-                result, !horizontal), hoverSide);
-
-        return Geometry.toDisplay(control.getParent(), result);
-    }
-
-    /**
-     * Returns the index of the ToolItem fronting the view ref
-     * @param toFind the view reference to find the index of
-     * @return the index or -1 if not found
-     */
-    private int getIndex(IViewReference toFind) {
-        ToolItem[] items = tbm.getControl().getItems();
-        for (int i = 0; i < items.length; i++) {
-            if (items[i].getData(ShowFastViewContribution.FAST_VIEW) == toFind) {
-                return i;
-            }
-        }
-
-        return -1;
-    }
-    
-    /**
-     * Begins dragging a particular fast view
-     * 
-     * @param ref
-     * @param position
-     */
-    protected void startDraggingFastView(IViewReference ref, Point position,
-            boolean usingKeyboard) {
-        int index = getIndex(ref);
-        if (index == -1)
-        	return;
-        
-        ToolItem item = tbm.getControl().getItem(index);
-        Rectangle dragRect = Geometry.toDisplay(tbm.getControl(), item.getBounds());
-        startDrag(((WorkbenchPartReference) ref).getPane(), dragRect, position,
-				usingKeyboard);
-    }
-
-    private void startDrag(Object toDrag, Rectangle dragRect, Point position,
-            boolean usingKeyboard) {
-        WorkbenchPage page = wbw.getActiveWorkbenchPage();
-        Perspective persp = page.getActivePerspective();
-
-        // Prevent dragging non-movable refs out of a minimized stack  
-        if (toDrag instanceof ViewPane) {
-        	ViewPane pane = (ViewPane) toDrag;
-        	if (!persp.isMoveable(pane.getViewReference()))
-        		return;
-        }
-        
-        IViewReference oldFastView = null;
-        if (persp != null) {
-            oldFastView = persp.getActiveFastView();
-
-            if (page != null) {
-                page.hideFastView();
-            }
-        }
-
-        if (page.isPageZoomed()) {
-            page.zoomOut();
-        }
-
-        boolean success = DragUtil.performDrag(toDrag, dragRect, position,
-                !usingKeyboard);
-
-        // If the drag was cancelled, reopen the old fast view
-        if (!success && oldFastView != null && page != null) {
-            page.toggleFastView(oldFastView);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java
deleted file mode 100644
index 514f436..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewManager.java
+++ /dev/null
@@ -1,1026 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Markus Alexander Kuppe, Versant Corporation - bug #215797
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener2;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.layout.TrimLayout;
-import org.eclipse.ui.internal.presentations.PresentablePart;
-import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
-import org.eclipse.ui.internal.tweaklets.Animations;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * Manage all Fast views for a particular perspective. As of 3.3 fast views
- * appear in more than one manner (legacy FVB and Trim Stacks). The manager is
- * responsible for providing a single implementation for the methods relating to
- * fast views regardless of their UI presentation.
- * 
- * @since 3.3
- * 
- */
-public class FastViewManager {
-	private Perspective perspective;
-	private WorkbenchPage page;
-	private WorkbenchWindow wbw;
-	private TrimLayout tbm;
-
-	/**
-	 * Maps a String to a list of IViewReferences. The string represents the
-	 * 'id' of either the legacy FBV or the ViewStack id of some stack which may
-	 * have elements in the trim.
-	 * <p>
-	 * NOTE: For TrimStacks, the order of the view ref's in the contained list
-	 * is the order in which they will appear in the tab folder when the stack
-	 * un-minimizes.
-	 * </p>
-	 */
-	private Map idToFastViewsMap = new HashMap();
-
-	/**
-	 * Batch update management
-	 */
-	private boolean deferringUpdates = false;
-
-	/**
-	 * animation whose life-cycle spans a
-	 * 'deferUpdates' cycle.
-	 */
-	private AnimationEngine batchAnimation = null;
-	
-	/**
-	 * Used for non-deferred animations
-	 */
-	private AnimationEngine oneShotAnimation = null;
-	//private RectangleAnimation oneShotAnimation = null;
-	
-	private IPerspectiveListener2 perspListener = new IPerspectiveListener2() {
-		public void perspectiveActivated(IWorkbenchPage page,
-				IPerspectiveDescriptor perspective) {
-			// Only listen for changes in -this- perspective
-			if (FastViewManager.this.perspective.getDesc() == perspective)
-				handlePerspectiveActivation(page, perspective);
-		}
-
-		public void perspectiveChanged(IWorkbenchPage changedPage,
-				IPerspectiveDescriptor perspective,
-				IWorkbenchPartReference partRef, String changeId) {
-			// Only listen for changes in -this- perspective
-			if (FastViewManager.this.perspective.getDesc() == perspective)
-				handlePerspectiveChange(changedPage, perspective, partRef,
-					changeId);
-		}
-
-		public void perspectiveChanged(IWorkbenchPage changedPage,
-				IPerspectiveDescriptor perspective, String changeId) {
-			// Only listen for changes in -this- perspective
-			if (FastViewManager.this.perspective.getDesc() == perspective)
-				handlePerspectiveChange(changedPage, perspective, changeId);
-		}
-	};
-	
-	/**
-	 * Creates a new manager for a particular perspective
-	 * 
-	 * @param perspective
-	 * @param page
-	 */
-	public FastViewManager(Perspective perspective, WorkbenchPage page) {
-		this.perspective = perspective;
-		this.page = page;
-
-		// Access the trim manager for this window
-		wbw = (WorkbenchWindow) page.getWorkbenchWindow();
-		tbm = (TrimLayout) wbw.getTrimManager();
-	}
-
-	protected void handlePerspectiveActivation(IWorkbenchPage activatingPage,
-			IPerspectiveDescriptor activatingPerspective) {
-		// If this perspective is activating then update the
-		// legacy FVB to show this perspective's refs
-		if (activatingPage == page
-				&& perspective.getDesc() == activatingPerspective)
-			updateTrim(FastViewBar.FASTVIEWBAR_ID);
-	}
-
-	protected void handlePerspectiveChange(IWorkbenchPage changedPage,
-			IPerspectiveDescriptor changedPerspective,
-			IWorkbenchPartReference partRef, String changeId) {
-		// Only handle changes for our perspective
-		if (changedPage != page && perspective.getDesc() != changedPerspective)
-			return;
-
-		if (changeId.equals(IWorkbenchPage.CHANGE_VIEW_HIDE)) {
-			if (partRef instanceof IViewReference) {
-				ViewReference ref = (ViewReference) partRef;
-				if (ref.getPane().getContainer() instanceof ViewStack) {
-					int viewCount = 0;
-					LayoutPart[] children = ref.getPane().getContainer().getChildren();
-					for (int i = 0; i < children.length; i++) {
-						if (children[i] instanceof ViewPane && children[i] != ref.getPane())
-							viewCount++;
-					}
-					
-					if (viewCount == 0)
-						ref.getPane().getStack().setState(IStackPresentationSite.STATE_RESTORED);
-				}
-			}
-			// Remove the view from any FV list that it may be in
-			// Do this here since the view's controls may be about
-			// to be disposed...
-			removeViewReference((IViewReference) partRef, false, true);
-		}
-
-		if (changeId.equals(IWorkbenchPage.CHANGE_FAST_VIEW_REMOVE)) {
-			// Remove the view from any FV list that it may be in
-			// Do this here since the view's controls may be about
-			// to be disposed...
-			removeViewReference((IViewReference) partRef, false, true);
-		}
-	}
-
-	protected void handlePerspectiveChange(IWorkbenchPage changedPage,
-			IPerspectiveDescriptor changedPerspective, String changeId) {
-	}
-
-	/**
-	 * @return The list of current fast views associated with the given id or
-	 *         the complete list of fastviews if the id == null.
-	 */
-	public List getFastViews(String forId) {
-		List fvs = new ArrayList();
-
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			if (forId == null || forId.equals(id)) {
-				List fvList = (List) idToFastViewsMap.get(id);
-				for (Iterator fvIter = fvList.iterator(); fvIter.hasNext();) {
-					fvs.add(fvIter.next());
-				}
-			}
-		}
-
-		return fvs;
-	}
-
-	/**
-	 * Casues the given {@link IViewReference} to be added to the list
-	 * identified by the 'id' parameter. The reference is added at the specified
-	 * index or at the end if the index is -1. If there was a previous entry for
-	 * this ref it will be removed so that only the ref will only ever be in one
-	 * list at a time.
-	 * <p>
-	 * NOTE: The trim life-cycle is managed at the stack level so there -must-
-	 * be an entry in the map and a corresponding trim element before calling
-	 * this method,
-	 * </p>
-	 * <p>
-	 * The page/perspective are updated to make the view a fastview if
-	 * necessary.
-	 * </p>
-	 * 
-	 * @param id
-	 *            The id of the {@link IWindowTrim} that is to show the ref
-	 * @param index
-	 *            The index to insert the ref at
-	 * @param ref
-	 *            The {@link IViewReference} to add
-	 * @param update
-	 *            cause the trim to update if <code>true</code>
-	 */
-	public void addViewReference(String id, int index, IViewReference ref,
-			boolean update) {
-		if (id == null || ref == null)
-			return;
-
-		List fvList = (List) idToFastViewsMap.get(id);
-		if (fvList == null) {
-			// Not in the model yet, add it
-			fvList = new ArrayList();
-			idToFastViewsMap.put(id, fvList);
-		}
-
-		// bounds checking
-		if (index < 0 || index > fvList.size())
-			index = fvList.size();
-
-		// Is it already in a list?
-		String curLocation = getIdForRef(ref);
-		if (curLocation != null) {
-			// is it the same list that it's being added to?
-			if (id.equals(curLocation)) {
-				int curIndex = fvList.indexOf(ref);
-				if (index == curIndex)
-					return; // No-Op
-
-				// If we're inserting after where we
-				// were then decrement the index to
-				// account for the removal of the old ref
-				if (index > curIndex)
-					index--;
-			}
-
-			// Remove it...
-			removeViewReference(ref, false, true);
-		} else {
-			// It's not a fastview, make it one
-			makeFast(ref, true, false);
-		}
-
-		fvList.add(index, ref);
-
-		// Note that the update call will create and show the ViewStackTrimToolbar
-		// if necessary
-		if (update)
-			updateTrim(id);
-	}
-
-	/**
-	 * Create the Trim element for the stack containing the given reference
-	 * 
-	 * @param suggestedSide
-	 * @param paneOrientation
-	 * @param ref
-	 *            The {@link IViewReference} whose stack needs trim creation.
-	 */
-	private ViewStackTrimToolBar getTrimForViewStack(String id,
-			int suggestedSide, int paneOrientation) {
-		// Do we already have one??
-		ViewStackTrimToolBar trim = (ViewStackTrimToolBar) tbm.getTrim(id);
-		if (trim == null) {
-			int cachedSide = tbm.getPreferredArea(id);
-			if (cachedSide != -1)
-				suggestedSide = cachedSide;
-			
-			IWindowTrim beforeMe = tbm.getPreferredLocation(id);
-			
-			trim = new ViewStackTrimToolBar(id, suggestedSide,
-					paneOrientation, wbw);
-			tbm.addTrim(suggestedSide, trim, beforeMe);
-			updateTrim(trim.getId());
-		}
-
-		return trim;
-	}
-
-	/**
-	 * Causes the trim element associated with the id to synch itself with the
-	 * current list of views. This method will create a new ViewStackTrimToolbar
-	 * if necessary (i.e. on the first call after views have been added to the map)
-	 * and will also hide the trim element when the number of views in the mapped
-	 * list goes to zero.
-	 * 
-	 * @param id
-	 *            The id of the {@link IWindowTrim} to update
-	 */
-	private void updateTrim(String id) {
-		// Get the trim part from the trim manager
-		IWindowTrim trim = tbm.getTrim(id);
-
-		// If it's not there there's not much we can do
-		if (trim == null)
-			return;
-
-		// If there are no fast views for the bar then hide it
-		List fvs = (List) idToFastViewsMap.get(id);
-		if (fvs != null && fvs.size() == 0
-				&& !FastViewBar.FASTVIEWBAR_ID.equals(id)) {
-			if (trim.getControl().getVisible()) {
-				tbm.setTrimVisible(trim, false);
-				tbm.forceLayout();
-			}
-			return;
-		}
-
-		// Ensure that the trim is displayed
-		if (!trim.getControl().getVisible()) {
-			tbm.setTrimVisible(trim, true);
-		}
-
-		if (trim instanceof FastViewBar) {
-			FastViewBar fvb = (FastViewBar) trim;
-			fvb.update(true);
-		} else if (trim instanceof ViewStackTrimToolBar) {
-			ViewStackTrimToolBar vstb = (ViewStackTrimToolBar) trim;
-			vstb.update(true);
-			vstb.getControl().pack();
-			LayoutUtil.resize(trim.getControl());
-		}
-
-		tbm.forceLayout();
-	}
-
-	/**
-	 * Remove the view reference from its existing location
-	 * 
-	 * @param ref
-	 *            The {@link IViewReference} to remove
-	 */
-	public void removeViewReference(IViewReference ref, boolean makeUnfast, boolean update) {
-		String id = getIdForRef(ref);
-
-		if (id != null) {
-			// Remove the ref
-			List fvList = (List) idToFastViewsMap.get(id);
-			fvList.remove(ref);
-
-			if (makeUnfast)
-				makeFast(ref, false, false);
-			
-			if (update)
-				updateTrim(id);
-		}
-	}
-
-	/**
-	 * 
-	 * @param ref
-	 * @param makeFast
-	 * @param activate
-	 */
-	private void makeFast(IViewReference ref, boolean makeFast, boolean activate) {
-		if (ref == null || page == null)
-			return;
-
-		if (makeFast) {
-			page.makeFastView(ref);
-		} else {
-			page.removeFastView(ref);
-
-			if (activate) {
-				IWorkbenchPart toActivate = ref.getPart(true);
-				if (toActivate != null) {
-					page.activate(toActivate);
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param ref
-	 *            The IViewRference to check
-	 * @return true iff the ref is in -any- list
-	 */
-	boolean isFastView(IViewReference ref) {
-		return getIdForRef(ref) != null;
-	}
-
-	/**
-	 * @param ref
-	 *            The IViewRference to check
-	 * @return The id of the trim bar currently showing the reference or
-	 *         <code>null</code> if it's not in any list
-	 */
-	public String getIdForRef(IViewReference ref) {
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			List fvList = (List) idToFastViewsMap.get(id);
-			if (fvList.contains(ref))
-				return id;
-		}
-
-		return null;
-	}
-
-	/**
-	 * @return The side that the fast view pane should be attached to based on
-	 *         the position of the trim element containing the ref.
-	 */
-	public int getViewSide(IViewReference ref) {
-		IWindowTrim trim = getTrimForRef(ref);
-		if (trim == null)
-			return SWT.BOTTOM;
-
-		int curSide = SWT.BOTTOM;
-		int paneOrientation = SWT.BOTTOM;
-
-		if (trim instanceof ViewStackTrimToolBar) {
-			curSide = ((ViewStackTrimToolBar) trim).getCurrentSide();
-			paneOrientation = ((ViewStackTrimToolBar) trim)
-					.getPaneOrientation();
-		} else if (trim instanceof FastViewBar) {
-			curSide = ((FastViewBar) trim).getSide();
-			paneOrientation = ((FastViewBar) trim).getOrientation(ref);
-		}
-
-		// Get trim layout info
-		Point trimCenter = Geometry.centerPoint(trim.getControl().getBounds());
-		Point shellCenter = Geometry.centerPoint(trim.getControl().getShell()
-				.getClientArea());
-
-		// Horizontal has to snap to either TOP or BOTTOM...
-		if (paneOrientation == SWT.HORIZONTAL) {
-			if (curSide == SWT.TOP || curSide == SWT.BOTTOM)
-				return curSide;
-
-			// Are we on the top or bottom 'end' of the trim area?
-			return (trimCenter.y < shellCenter.y) ? SWT.TOP : SWT.BOTTOM;
-		}
-
-		if (paneOrientation == SWT.VERTICAL) {
-			if (curSide == SWT.LEFT || curSide == SWT.RIGHT)
-				return curSide;
-
-			// Are we on the left or right 'end' of the trim area?
-			return (trimCenter.x < shellCenter.x) ? SWT.LEFT : SWT.RIGHT;
-		}
-
-		return SWT.BOTTOM;
-	}
-
-	/**
-	 * Return the trim element showing the given reference
-	 * 
-	 * @param ref
-	 *            The reference to find
-	 * @return the IWindowTrim showing the ref
-	 */
-	private IWindowTrim getTrimForRef(IViewReference ref) {
-		String id = getIdForRef(ref);
-		if (id == null)
-			return null; // Not in trim
-
-		return tbm.getTrim(id);
-	}
-
-	/**
-	 * @return a List of <code>IViewReference</code> sorted into the order in
-	 *         which they appear in the visual stack.
-	 */
-	private List getTrueViewOrder(ViewStack stack) {
-		List orderedViews = new ArrayList();
-		IPresentablePart[] parts = null;
-		if (stack.getPresentation() instanceof TabbedStackPresentation) {
-			TabbedStackPresentation tsp = (TabbedStackPresentation) stack
-					.getPresentation();
-			// KLUDGE!! uses a 'testing only' API to get the parts in their 'visible' order
-			parts = tsp.getPartList();
-		}
-
-		// If we didn't get the parts from the tab list then try the presentable part API
-		// ViewStack's declared 'no title' fail the call above, returning an empty array
-		if (parts == null || parts.length == 0){
-			// We'll have to process the parts in the order given...
-			// This is certain to fail on drag re-ordering of the
-			// icons in the trim since we have no API to inform the
-			// custom presentation
-			List partList = stack.getPresentableParts();
-			parts = (IPresentablePart[]) partList.toArray(new IPresentablePart[partList.size()]);
-		}			
-
-		// Now, process the parts...
-		for (int i = 0; i < parts.length; i++) {
-			if (parts[i] instanceof PresentablePart) {
-				PresentablePart part = (PresentablePart) parts[i];
-				IWorkbenchPartReference ref = part.getPane()
-						.getPartReference();
-				if (ref instanceof IViewReference)
-					orderedViews.add(ref);
-			}
-		}
-
-		return orderedViews;
-	}
-
-	public void moveToTrim(ViewStack vs, boolean restoreOnUnzoom) {
-		// Don't do anything when initializing...
-		if (vs.getBounds().width == 0)
-			return; // indicates that we're startin up
-			
-		// If we're part of a 'maximize' operation then use the cached
-		// bounds...
-		Rectangle stackBounds = perspective.getPresentation().getCachedBoundsFor(vs.getID());
-
-		// OK, no cache means that we use the current stack position
-		if (stackBounds == null)
-			stackBounds = vs.getBounds();
-		
-		int paneOrientation = (stackBounds.width > stackBounds.height) ? SWT.HORIZONTAL
-				: SWT.VERTICAL;
-
-		// Remember the tab that was selected when we minimized
-		String selId = ""; //$NON-NLS-1$
-		PartPane selectedTab = vs.getSelection();
-		if (selectedTab != null)
-			selId  = selectedTab.getCompoundId();
-		
-		vs.deferUpdates(true);
-		
-		// animate the minimize
-		RectangleAnimationFeedbackBase animation = (RectangleAnimationFeedbackBase) getDeferrableAnimation().getFeedback();
-		animation.addStartRect(vs.getControl());
-
-		//long startTick = System.currentTimeMillis();
-		// Update the model first
-		List toMove = getTrueViewOrder(vs);
-		for (Iterator viewIter = toMove.iterator(); viewIter.hasNext();) {
-			IViewReference ref = (IViewReference) viewIter.next();
-			addViewReference(vs.getID(), -1, ref, false);
-		}
-
-		vs.deferUpdates(false);
-		
-		// Find (or create) the trim stack to move to
-		ViewStackTrimToolBar vstb = getTrimForViewStack(vs.getID(), perspective
-				.calcStackSide(stackBounds), paneOrientation);
-		vstb.setRestoreOnUnzoom(restoreOnUnzoom);
-		vstb.setSelectedTabId(selId);
-		updateTrim(vstb.getId());
-		
-		//System.out.println("minimize time: " + (System.currentTimeMillis()-startTick)); //$NON-NLS-1$
-		if (vstb != null) {
-			animation.addEndRect(vstb.getControl());
-			scheduleDeferrableAnimation();
-		}
-	}
-
-	/**
-	 * Restore the trim element representing a ViewStack back into the
-	 * presentation.
-	 * 
-	 * @param viewStackTrimToolBar
-	 *            The trim version to restore
-	 */
-	public void restoreToPresentation(String id) {
-		ViewStackTrimToolBar vstb = getViewStackTrimToolbar(id);
-		
-		// The IntroPart uses the old min/max behavior; ensure that
-		// we were really a minimized trim stack
-		if (vstb == null)
-			return;
-		
-		// remove any showing fast view
-		page.hideFastView();
-
-		// The stored id may be 'compound' if it's a multi-instance
-		// view; split out the secondary id (if any)
-		String selectedTabId = vstb.getSelectedTabId();
-		String[] idParts = Util.split(selectedTabId, ':');
-		if (idParts[0].length() == selectedTabId.length())
-			idParts[1] = null;
-		
-		List fvs = getFastViews(id);
-		for (Iterator fvIter = fvs.iterator(); fvIter.hasNext();) {
-			IViewReference ref = (IViewReference) fvIter.next();
-			removeViewReference(ref, true, !fvIter.hasNext());
-		}
-
-		// Restore the correct tab to the 'top'
-		LayoutPart stack = perspective.getPresentation().findPart(id, null);
-		if (stack instanceof PartStack) {
-			LayoutPart selTab = perspective.getPresentation().findPart(idParts[0], idParts[1]);
-			if (selTab instanceof PartPane && selTab instanceof ViewPane) {
-				((PartStack)stack).setSelection(selTab);
-				
-				// activate the view if we're not doing a compound operation
-				if (!deferringUpdates)
-					((ViewPane)selTab).requestActivation();
-			}
-		}
-		
-		// Hide the Trim
-		updateTrim(id);
-	}
-
-	/**
-	 * Restore all fact view stacks created as part of a zoom
-	 */
-	public void restoreZoomedViewStacks() {
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			IWindowTrim trim = tbm.getTrim(id);
-			if (trim != null && trim instanceof ViewStackTrimToolBar) {
-				ViewStackTrimToolBar vstb = (ViewStackTrimToolBar) trim;
-				if (vstb.restoreOnUnzoom())
-					restoreToPresentation(vstb.getId());
-			}
-		}
-	}
-
-	/**
-	 * @param ref
-	 *            Sets the ref of the icon
-	 * @param selected
-	 *            the selection state of the icon
-	 */
-	public void setFastViewIconSelection(IViewReference ref, boolean selected) {
-		String id = getIdForRef(ref);
-		IWindowTrim trim = tbm.getTrim(id);
-		if (trim instanceof ViewStackTrimToolBar) {
-			ViewStackTrimToolBar vstb = (ViewStackTrimToolBar) trim;
-			vstb.setIconSelection(ref, selected);
-		} else if (trim instanceof FastViewBar) {
-			FastViewBar fvb = (FastViewBar) trim;
-			if (selected) {
-				fvb.setSelection(ref);
-			} else {
-				if (ref == fvb.getSelection()) {
-					fvb.setSelection(null);
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * Activate the manager. Called from the Perspecive's 'onActivate'
-	 */
-	public void activate() {
-		wbw.addPerspectiveListener(perspListener);
-		setTrimStackVisibility(true);
-	}
-
-	/**
-	 * Activate the manager. Called from the Perspecive's 'onActivate'
-	 */
-	public void deActivate() {
-		wbw.removePerspectiveListener(perspListener);
-		setTrimStackVisibility(false);
-	}
-
-	/**
-	 * Restore any trim stacks. This method is used when the presentation
-	 * is switched back to 3.0; if we aren't using the new min/max story
-	 * then we shouldn't -have- any trim stacks.
-	 */
-	public boolean restoreAllTrimStacks() {
-		boolean stacksWereRestored = false;
-		
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			
-			// Skip the legacy FstViewBar
-			if (id.equals(FastViewBar.FASTVIEWBAR_ID))
-				continue;
-			
-			// Restore the views
-			List fvs = getFastViews(id);
-			for (Iterator fvIter = fvs.iterator(); fvIter.hasNext();) {
-				IViewReference ref = (IViewReference) fvIter.next();
-				removeViewReference(ref, true, !fvIter.hasNext());
-			}
-
-			// Blow the trim away
-			IWindowTrim trim = tbm.getTrim(id);
-			if (trim != null && trim instanceof ViewStackTrimToolBar) {
-				tbm.removeTrim(trim);
-				trim.getControl().dispose();
-				
-				stacksWereRestored = true;
-			}
-		}
-		
-		tbm.forceLayout();
-		
-		return stacksWereRestored;
-	}
-
-	/**
-	 * Show all non-empty trim stacks. Create the stack if necessary
-	 */
-	private void setTrimStackVisibility(boolean visible) {
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			List fvs = getFastViews(id);
-			
-			// Never show 'empty' stacks
-			if (visible && fvs.size() == 0)
-				continue;
-
-			IWindowTrim trim = tbm.getTrim(id);
-			if (trim != null && trim instanceof ViewStackTrimToolBar) {
-				((ViewStackTrimToolBar)trim).update(true);
-				tbm.setTrimVisible(trim, visible);
-			}
-		}
-	}
-
-	public void saveState(IMemento memento) {
-		// Output legacy fastviews
-		FastViewBar fvb = wbw.getFastViewBar();
-		if (fvb != null) {
-			List fvRefs = getFastViews(FastViewBar.FASTVIEWBAR_ID);
-			if (fvRefs.size() > 0) {
-				IMemento childMem = memento
-						.createChild(IWorkbenchConstants.TAG_FAST_VIEWS);
-				Iterator itr = fvRefs.iterator();
-				while (itr.hasNext()) {
-					IViewReference ref = (IViewReference) itr.next();
-					boolean restorable = page.getViewFactory()
-							.getViewRegistry().find(ref.getId()).isRestorable();
-					if(restorable) {
-						IMemento viewMemento = childMem
-						.createChild(IWorkbenchConstants.TAG_VIEW);
-						String id = ViewFactory.getKey(ref);
-						viewMemento.putString(IWorkbenchConstants.TAG_ID, id);
-						float ratio = perspective.getFastViewWidthRatio(ref);
-						viewMemento.putFloat(IWorkbenchConstants.TAG_RATIO, ratio);
-					}
-				}
-			}
-		}
-
-		// Write all the current (non-empty) bars
-		IMemento barsMemento = memento
-				.createChild(IWorkbenchConstants.TAG_FAST_VIEW_BARS);
-
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-
-			// Legacy FV's are stored above...
-			if (FastViewBar.FASTVIEWBAR_ID.equals(id))
-				continue;
-
-			List fvs = getFastViews(id);
-			if (fvs.size() > 0) {
-				IMemento barMemento = barsMemento
-						.createChild(IWorkbenchConstants.TAG_FAST_VIEW_BAR);
-				barMemento.putString(IWorkbenchConstants.TAG_ID, id);
-
-				// Orientation / restore
-				ViewStackTrimToolBar vstb = (ViewStackTrimToolBar) tbm
-						.getTrim(id);
-				if (vstb != null) {
-					barMemento.putInteger(
-							IWorkbenchConstants.TAG_FAST_VIEW_SIDE,
-							vstb.getCurrentSide());
-					
-					barMemento.putInteger(
-							IWorkbenchConstants.TAG_FAST_VIEW_ORIENTATION,
-							vstb.getPaneOrientation());
-					
-					int boolVal = vstb.restoreOnUnzoom() ? 1 : 0;
-					barMemento.putInteger(IWorkbenchConstants.TAG_FAST_VIEW_STYLE, boolVal);
-					
-					barMemento.putString(IWorkbenchConstants.TAG_FAST_VIEW_SEL_ID, vstb.getSelectedTabId());
-				}
-
-				IMemento viewsMem = barMemento
-						.createChild(IWorkbenchConstants.TAG_FAST_VIEWS);
-				Iterator itr = fvs.iterator();
-				while (itr.hasNext()) {
-					IMemento refMem = viewsMem
-							.createChild(IWorkbenchConstants.TAG_VIEW);
-					IViewReference ref = (IViewReference) itr.next();
-
-					// id
-					String viewId = ViewFactory.getKey(ref);
-					refMem.putString(IWorkbenchConstants.TAG_ID, viewId);
-					
-					// width ratio
-					float ratio = perspective.getFastViewWidthRatio(ref);
-					refMem.putFloat(IWorkbenchConstants.TAG_RATIO, ratio);
-				}
-			}
-		}
-	}
-
-	public void restoreState(IMemento memento, MultiStatus result) {
-		// Load the fast views
-		IMemento fastViewsMem = memento
-				.getChild(IWorkbenchConstants.TAG_FAST_VIEWS);
-
-		// -Replace- the current list with the one from the store
-		List refsList = new ArrayList();
-		idToFastViewsMap.put(FastViewBar.FASTVIEWBAR_ID, refsList);
-
-		if (fastViewsMem != null) {
-			IMemento[] views = fastViewsMem
-					.getChildren(IWorkbenchConstants.TAG_VIEW);
-			for (int x = 0; x < views.length; x++) {
-				// Get the view details.
-				IMemento childMem = views[x];
-				IViewReference ref = perspective.restoreFastView(childMem,
-						result);
-				if (ref != null)
-					refsList.add(ref);
-			}
-		}
-
-		// Load the Trim Stack info
-		IMemento barsMem = memento
-				.getChild(IWorkbenchConstants.TAG_FAST_VIEW_BARS);
-		
-		// It's not there for old workspaces
-		if (barsMem == null)
-			return;
-		
-		IMemento[] bars = barsMem
-				.getChildren(IWorkbenchConstants.TAG_FAST_VIEW_BAR);
-		for (int i = 0; i < bars.length; i++) {
-			final String id = bars[i].getString(IWorkbenchConstants.TAG_ID);
-			fastViewsMem = bars[i].getChild(IWorkbenchConstants.TAG_FAST_VIEWS);
-
-			// -Replace- the current list with the one from the store
-			refsList = new ArrayList();
-			idToFastViewsMap.put(id, refsList);
-
-			if (fastViewsMem != null) {
-				IMemento[] views = fastViewsMem
-						.getChildren(IWorkbenchConstants.TAG_VIEW);
-	            result.merge(perspective.createReferences(views));
-				
-				// Create the trim area for the trim stack
-				// Only create the TB if there are views in it
-				if (views.length > 0) {
-					final int side = bars[i].getInteger(
-							IWorkbenchConstants.TAG_FAST_VIEW_SIDE)
-							.intValue();
-					final int orientation = bars[i].getInteger(
-							IWorkbenchConstants.TAG_FAST_VIEW_ORIENTATION)
-							.intValue();
-					int boolVal = bars[i].getInteger(
-							IWorkbenchConstants.TAG_FAST_VIEW_STYLE).intValue();
-					final boolean restoreOnUnzoom = (boolVal > 0);
-					
-					final String selId = bars[i].getString(IWorkbenchConstants.TAG_FAST_VIEW_SEL_ID);
-					
-					// Create the stack
-		        	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-						public void runWithException() throws Throwable {
-							ViewStackTrimToolBar vstb = getTrimForViewStack(id, side, orientation);
-							vstb.setRestoreOnUnzoom(restoreOnUnzoom);
-							if (selId != null)
-								vstb.setSelectedTabId(selId);
-						}
-					});
-				}
-				
-				for (int x = 0; x < views.length; x++) {
-					// Get the view details.
-					IMemento childMem = views[x];
-					IViewReference ref = perspective.restoreFastView(childMem,
-							result);
-					if (ref != null)
-						refsList.add(ref);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns the trim element for the given id if it exists. This
-	 * will not be <code>null</code> if there are entries in the
-	 * 'idToFastViewsMap' for this id.
-	 * 
-	 * @param id The id of the view stack to get the trim toolbar for.
-	 */
-	public ViewStackTrimToolBar getViewStackTrimToolbar(String id) {
-		return (ViewStackTrimToolBar) tbm.getTrim(id);
-	}
-	
-	public void printFVModel() {
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			List fvList = (List) idToFastViewsMap.get(id);
-			System.out.println("FastView: " + id + " count = " + fvList.size());  //$NON-NLS-1$//$NON-NLS-2$
-			for (Iterator fvIter = fvList.iterator(); fvIter.hasNext();) {
-				IViewReference ref = (IViewReference) fvIter.next(); 
-				System.out.println("  Ref: " + ref.getId()); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Informs the manager that a batch operation has started
-	 * (say 'maximize', where many stacks will change state).
-	 * 
-	 * @param defer
-	 *  true when starting a batch operation
-	 *  false when ending the operation
-	 */
-	public void deferUpdates(boolean defer) {
-		if (defer && !deferringUpdates) {
-			deferringUpdates = defer;
-			
-			deferAnimations(true);
-			
-			return;
-		}
-		
-		// 'false': reset and run any necessary updates
-		deferringUpdates = false;
-		deferAnimations(false);
-	}
-
-	/**
-	 * When 'defer' is true we create a RectangleAnimation object
-	 * to be used for any desired feedback. When ending it 
-	 * schedules the animation and resets.
-	 * 
-	 * @param defer
-	 *  true when starting a batch operation
-	 *  false when ending the operation
-	 */
-	private void deferAnimations(boolean defer) {
-		if (defer) {
-			RectangleAnimationFeedbackBase feedback = ((Animations) Tweaklets
-					.get(Animations.KEY)).createFeedback(wbw.getShell());
-			batchAnimation = new AnimationEngine(feedback, 400);
-			return;
-		}
-
-		if (batchAnimation != null)
-			batchAnimation.schedule();
-		batchAnimation = null;
-	}
-
-	/**
-	 * Returns the animation object appropriate for the deferred state
-	 * @return Either a 'one-shot' or a 'batch' animation object
-	 */
-	private AnimationEngine getDeferrableAnimation() {
-		if (deferringUpdates)
-			return batchAnimation;
-		
-		// Create a 'one-shot' animation
-		RectangleAnimationFeedbackBase feedback = ((Animations) Tweaklets
-				.get(Animations.KEY)).createFeedback(wbw.getShell());
-		oneShotAnimation = new AnimationEngine(feedback, 400);
-		return oneShotAnimation;
-	}
-	
-	private void scheduleDeferrableAnimation() {
-		if (deferringUpdates)
-			return;
-		
-		// We can only schedule the 'one-shot' animations
-		// the batch ones are sheduled at batch end
-		if (oneShotAnimation != null)
-			oneShotAnimation.schedule();
-		oneShotAnimation = null;
-	}
-
-	/**
-	 * Returns the 'bottom/right' trim stack. This is used to
-	 * match the old behavior when opening a new view that has no placeholder
-	 * in the case where there WB is maximized.
-	 * 
-	 * @return The 'bottom/right' trim stack or null if there are no
-	 * defined trim stacks
-	 */
-	public ViewStackTrimToolBar getBottomRightTrimStack() {
-		ViewStackTrimToolBar blTrimStack = null;
-		Point blPt = new Point(0,0);
-		
-		Iterator mapIter = idToFastViewsMap.keySet().iterator();
-		while (mapIter.hasNext()) {
-			String id = (String) mapIter.next();
-			
-			// Skip the legacy FstViewBar
-			if (id.equals(FastViewBar.FASTVIEWBAR_ID))
-				continue;
-
-			if (getFastViews(id).size() > 0) {
-				// if we have views in the model then 'vstt' will not be null
-				ViewStackTrimToolBar vstt = getViewStackTrimToolbar(id);
-				Point loc = vstt.getControl().getLocation();
-				if (loc.y > blPt.y || (loc.y == blPt.y && loc.x > blPt.x)) {
-					blPt = loc;
-					blTrimStack = vstt;
-				}
-			}
-		}
-
-		return blTrimStack;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewPane.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewPane.java
deleted file mode 100644
index 8610f76..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FastViewPane.java
+++ /dev/null
@@ -1,641 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *     Matthew Hatem Matthew_Hatem@notesdev.ibm.com Bug 189953
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Listener;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.ISizeProvider;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.presentations.PresentablePart;
-import org.eclipse.ui.internal.presentations.SystemMenuFastView;
-import org.eclipse.ui.internal.presentations.SystemMenuFastViewOrientation;
-import org.eclipse.ui.internal.presentations.SystemMenuSizeFastView;
-import org.eclipse.ui.internal.presentations.UpdatingActionContributionItem;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * Handles the presentation of an active fastview. A fast view pane docks to one side of a
- * parent composite, and is capable of displaying a single view. The view may be resized.
- * Displaying a new view will hide any view currently being displayed in the pane. 
- * 
- * Currently, the fast view pane does not own or contain the view. It only controls the view's 
- * position and visibility.  
- * 
- * @see org.eclipse.ui.internal.FastViewBar
- */
-public class FastViewPane {
-    private int side = SWT.LEFT;
-
-    private PresentablePart currentPane;
-
-    private Composite clientComposite;
-    
-    private int minSize = 10;
-
-    private int size;
-
-    private Sash sash;
-    
-    private AbstractPresentationFactory presFactory;
-
-    // Traverse listener -- listens to ESC and closes the active fastview 
-    private Listener escapeListener = new Listener() {
-        public void handleEvent(Event event) {
-            if (event.character == SWT.ESC) {
-                if (currentPane != null) {
-                    currentPane.getPane().getPage().hideFastView();
-                }
-            }
-        }
-    };
-
-    private DefaultStackPresentationSite site = new DefaultStackPresentationSite() {
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.skins.IPresentationSite#setState(int)
-         */
-        public void setState(int newState) {
-            super.setState(newState);
-            PartPane pane = currentPane.getPane();
-            switch (newState) {
-            case IStackPresentationSite.STATE_MINIMIZED:
-                
-                pane.getPage().hideFastView();
-                break;
-            case IStackPresentationSite.STATE_MAXIMIZED:
-                pane.setZoomed(true);
-                sash.setVisible(false);
-                this.getPresentation().setBounds(getBounds());
-                break;
-            case IStackPresentationSite.STATE_RESTORED:
-                pane.setZoomed(false);
-                sash.setVisible(true);
-                this.getPresentation().setBounds(getBounds());
-                break;
-            default:
-            }
-        }
-
-        public void flushLayout() {
-        	
-        }
-        
-        public void close(IPresentablePart part) {
-            if (!isCloseable(part)) {
-                return;
-            }
-            IWorkbenchPartReference ref = currentPane.getPane().getPartReference();
-            if (ref instanceof IViewReference) {
-                currentPane.getPane().getPage().hideView((IViewReference)ref);
-            }
-        }
-
-        public void close(IPresentablePart[] parts) {
-            for (int idx = 0; idx < parts.length; idx++) {
-                close(parts[idx]);
-            }
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.skins.IPresentationSite#dragStart(org.eclipse.ui.internal.skins.IPresentablePart, boolean)
-         */
-        public void dragStart(IPresentablePart beingDragged,
-                Point initialPosition, boolean keyboard) {
-            dragStart(initialPosition, keyboard);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.skins.IPresentationSite#dragStart(boolean)
-         */
-        public void dragStart(Point initialPosition, boolean keyboard) {
-            if (!isPartMoveable()) {
-				return;
-			}
-
-            PartPane pane = currentPane.getPane();
-
-            Control control = this.getPresentation().getControl();
-
-            Rectangle bounds = Geometry.toDisplay(clientComposite, control
-                    .getBounds());
-
-            WorkbenchPage page = pane.getPage();
-
-            page.hideFastView();
-            if (page.isZoomed()) {
-                page.zoomOut();
-            }
-
-            DragUtil.performDrag(pane, bounds, initialPosition, !keyboard);
-        }
-
-        public IPresentablePart getSelectedPart() {
-            return currentPane;
-        }
-
-        public void addSystemActions(IMenuManager menuManager) {
-        	ViewStackTrimToolBar vstt = getTrim();
-        	
-            appendToGroupIfPossible(menuManager,
-                    "misc", new SystemMenuFastViewOrientation(currentPane.getPane(), vstt)); //$NON-NLS-1$
-
-            // Only add the 'Fast View' menu entry if the
-        	// pane is showing a 'legacy' fast view
-        	if (vstt == null) {
-	            appendToGroupIfPossible(menuManager,
-	                    "misc", new UpdatingActionContributionItem(fastViewAction)); //$NON-NLS-1$
-        	}
-        	
-            appendToGroupIfPossible(menuManager,
-                    "size", new SystemMenuSizeFastView(FastViewPane.this)); //$NON-NLS-1$
-        }
-
-        /**
-         * Returns the ViewStackTrimToolBar which has caused the FV to be shown. If
-         * <code>null</code> then we can assume it was the legacy FastViewBar.
-         */
-        private ViewStackTrimToolBar getTrim() {
-        	if (currentPane == null || currentPane.getPane() == null)
-        		return null;
-
-            ViewStackTrimToolBar trim = null;
-
-        	PartPane pane = currentPane.getPane();
-        	if (pane instanceof ViewPane) {
-        		ViewPane vp = (ViewPane) pane;
-                Perspective persp = vp.getPage().getActivePerspective();
-                IViewReference viewRef = vp.getViewReference();
-                FastViewManager fvm = persp.getFastViewManager();
-                
-                String trimId = null;
-                if (fvm != null)
-                	trimId = fvm.getIdForRef(viewRef);
-
-                if (trimId != null && !trimId.equals(FastViewBar.FASTVIEWBAR_ID))
-                	trim = fvm.getViewStackTrimToolbar(trimId);
-        	}
-        	
-        	return trim;
-        }
-        
-        public boolean isPartMoveable(IPresentablePart toMove) {
-            return isPartMoveable();
-        }
-
-        public boolean isStackMoveable() {
-            // a fast view stack is moveable iff its part is moveable
-            return isPartMoveable();
-        }
-
-        private boolean isPartMoveable() {
-            if (currentPane == null) {
-				return false;
-			}
-            Perspective perspective = currentPane.getPane().getPage()
-                    .getActivePerspective();
-            if (perspective == null) {
-                // Shouldn't happen -- can't have a FastViewPane without a perspective
-                return false;
-            }
-            
-            IWorkbenchPartReference ref = currentPane.getPane().getPartReference();
-            
-            if (ref instanceof IViewReference) {
-                return perspective.isMoveable((IViewReference)ref);
-            }
-            return true;
-        }
-
-        public boolean supportsState(int newState) {
-            if (currentPane == null) {
-				return false;
-			}
-            if (currentPane.getPane().getPage().isFixedLayout()) {
-				return false;
-			}
-            return true;
-        }
-
-        public IPresentablePart[] getPartList() {
-            return new IPresentablePart[] {getSelectedPart()};
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.presentations.IStackPresentationSite#getProperty(java.lang.String)
-         */
-        public String getProperty(String id) {
-            // fast views stacks do not get arbitrary user properties.
-            return null;
-        }
-    };
-
-    private SystemMenuFastView fastViewAction = new SystemMenuFastView(site);
-
-    private static void appendToGroupIfPossible(IMenuManager m, String groupId,
-            ContributionItem item) {
-        try {
-            m.appendToGroup(groupId, item);
-        } catch (IllegalArgumentException e) {
-            m.add(item);
-        }
-    }
-
-    private Listener mouseDownListener = new Listener() {
-        public void handleEvent(Event event) {
-            if (event.widget instanceof Control) {
-                Control control = (Control) event.widget;
-
-                if (control.getShell() != clientComposite.getShell()) {
-                    return;
-                }
-
-                if (event.widget instanceof ToolBar) {
-                    // Ignore mouse down on actual tool bar buttons
-                    Point pt = new Point(event.x, event.y);
-                    ToolBar toolBar = (ToolBar) event.widget;
-                    if (toolBar.getItem(pt) != null) {
-						return;
-					}
-                }
-
-                Point loc = DragUtil.getEventLoc(event);
-
-            	// 'Extrude' the rect -before- converting to Display coords
-            	// to avoid Right-to-Left issues
-                Rectangle bounds = clientComposite.getBounds();
-                if (site.getState() != IStackPresentationSite.STATE_MAXIMIZED) {
-                    bounds = Geometry.getExtrudedEdge(bounds, size + getSashSize(), side);
-                }
-                
-                // Now map the bounds to display coords
-                bounds = clientComposite.getDisplay().map(clientComposite, null, bounds);
-
-                if (!bounds.contains(loc)) {
-                    site.setState(IStackPresentationSite.STATE_MINIMIZED);
-                }
-            }
-        }
-    };
-
-    public void moveSash() {
-        final KeyListener listener = new KeyAdapter() {
-            public void keyPressed(KeyEvent e) {
-                if (e.character == SWT.ESC || e.character == '\r') {
-                    currentPane.setFocus();
-                }
-            }
-        };
-        sash.addFocusListener(new FocusAdapter() {
-            public void focusGained(FocusEvent e) {
-                sash.setBackground(sash.getDisplay().getSystemColor(
-                        SWT.COLOR_LIST_SELECTION));
-                sash.addKeyListener(listener);
-            }
-
-            public void focusLost(FocusEvent e) {
-                sash.setBackground(null);
-                sash.removeKeyListener(listener);
-            }
-        });
-        sash.setFocus();
-    }
-
-    private Listener resizeListener = new Listener() {
-        public void handleEvent(Event event) {
-            if (event.type == SWT.Resize && currentPane != null) {
-                setSize(size);
-            }
-        }
-    };
-
-    private SelectionAdapter selectionListener = new SelectionAdapter() {
-        public void widgetSelected(SelectionEvent e) {
-
-            if (currentPane != null) {
-                Rectangle bounds = clientComposite.getClientArea();
-                Point location = new Point(e.x, e.y);
-                int distanceFromEdge = Geometry.getDistanceFromEdge(bounds,
-                        location, side);
-
-                if (!(side == SWT.TOP || side == SWT.LEFT)) {
-                    distanceFromEdge -= getSashSize();
-                }
-
-                setSize(distanceFromEdge);
-
-                if (e.detail != SWT.DRAG) {
-                    updateFastViewSashBounds();
-                    //					getPresentation().getControl().moveAbove(null);
-                    //					currentPane.moveAbove(null); 
-                    //					sash.moveAbove(null);
-                    //currentPane.getControl().redraw();
-                    sash.redraw();
-                }
-            }
-        }
-    };
-
-    private void setSize(int size) {
-
-        if (size < minSize) {
-            size = minSize;
-        }
-        this.size = size;
-
-        StackPresentation presentation = getPresentation();
-        if (presentation == null || presentation.getControl().isDisposed()) {
-            return;
-        }
-        getPresentation().setBounds(getBounds());
-        updateFastViewSashBounds();
-    }
-
-    /**
-     * Returns the current fastview size ratio. Returns 0.0 if there is no fastview visible.
-     */
-    public float getCurrentRatio() {
-        if (currentPane == null) {
-            return 0.0f;
-        }
-
-        boolean isVertical = !Geometry.isHorizontal(side);
-        Rectangle clientArea = clientComposite.getClientArea();
-
-        int clientSize = Geometry.getDimension(clientArea, isVertical);
-
-        return (float) size / (float) clientSize;
-    }
-
-    private Rectangle getClientArea() {
-        return clientComposite.getClientArea();
-    }
-
-    private Rectangle getBounds() {
-        Rectangle bounds = getClientArea();
-
-        if (site.getState() == IStackPresentationSite.STATE_MAXIMIZED) {
-            return bounds;
-        }
-
-        boolean horizontal = Geometry.isHorizontal(side);
-
-        int available = Geometry.getDimension(bounds, !horizontal);
-
-        return Geometry.getExtrudedEdge(bounds, Math.min(
-                FastViewPane.this.size, available), side);
-    }
-
-    /**
-     * Displays the given view as a fastview. The view will be docked to the edge of the
-     * given composite until it is subsequently hidden by a call to hideFastView. 
-     * 
-     * @param newClientComposite
-     * @param pane
-     * @param newSide
-     */
-    public void showView(Composite newClientComposite, ViewPane pane,
-            int newSide, float sizeRatio) {
-        side = newSide;
-
-        if (currentPane != null) {
-            hideView();
-        }
-
-        currentPane = new PresentablePart(pane, newClientComposite);
-        
-        fastViewAction.setPane(currentPane);
-        clientComposite = newClientComposite;
-
-        clientComposite.addListener(SWT.Resize, resizeListener);
-
-        // Create the control first
-        Control ctrl = pane.getControl();
-        if (ctrl == null) {
-            pane.createControl(clientComposite);
-            ctrl = pane.getControl();
-        }
-
-        ctrl.addListener(SWT.Traverse, escapeListener);
-
-        // Temporarily use the same appearance as docked views .. eventually, fastviews will
-        // be independently pluggable.
-        AbstractPresentationFactory factory = getPresentationFactory();
-        StackPresentation presentation = factory.createViewPresentation(
-                newClientComposite, site);
-
-        site.setPresentation(presentation);
-        site.setPresentationState(IStackPresentationSite.STATE_RESTORED);
-        presentation.addPart(currentPane, null);
-        presentation.selectPart(currentPane);
-        presentation.setActive(StackPresentation.AS_ACTIVE_FOCUS);
-        presentation.setVisible(true);
-
-        boolean horizontalResize = Geometry.isHorizontal(side); 
-
-        minSize = presentation.computePreferredSize(horizontalResize,
-        		ISizeProvider.INFINITE,
-        		Geometry.getDimension(getClientArea(), horizontalResize),
-				0);
-        
-        // Show pane fast.
-        ctrl.setEnabled(true); // Add focus support.
-        Composite parent = ctrl.getParent();
-
-        boolean horizontal = Geometry.isHorizontal(side);
-
-        // Create a sash of the correct style using the factory
-        int style = AbstractPresentationFactory.SASHTYPE_FLOATING;
-    	if (horizontal)
-    		style |= AbstractPresentationFactory.SASHORIENTATION_HORIZONTAL;
-    	else
-    		style |= AbstractPresentationFactory.SASHORIENTATION_VERTICAL;
-        sash = factory.createSash(parent, style);
-        
-        sash.addSelectionListener(selectionListener);
-
-        Rectangle clientArea = newClientComposite.getClientArea();
-
-        getPresentation().getControl().moveAbove(null);
-        currentPane.getPane().moveAbove(null);
-        sash.moveAbove(null);
-
-        setSize((int) (Geometry.getDimension(clientArea, !horizontal) * sizeRatio));
-
-        Display display = sash.getDisplay();
-
-        display.addFilter(SWT.MouseDown, mouseDownListener);
-
-        pane.setFocus();
-    }
-
-    /**
-     * Updates the position of the resize sash.
-     */
-    private void updateFastViewSashBounds() {
-        Rectangle bounds = getBounds();
-
-        int oppositeSide = Geometry.getOppositeSide(side);
-        Rectangle newBounds = Geometry.getExtrudedEdge(bounds, -getSashSize(),
-                oppositeSide);
-
-        Rectangle oldBounds = sash.getBounds();
-
-        if (!newBounds.equals(oldBounds)) {
-            sash.setBounds(newBounds);
-        }
-    }
-
-    /**
-     * Disposes of any active widgetry being used for the fast view pane. Does not dispose
-     * of the view itself.
-     */
-    public void dispose() {
-        hideView();
-    }
-    
-    private StackPresentation getPresentation() {
-        return site.getPresentation();
-    }
-
-    /**
-     * Hides the sash for the fastview if it is currently visible. This method may not be
-     * required anymore, and might be removed from the public interface.
-     */
-    public void hideFastViewSash() {
-        if (sash != null) {
-            sash.setVisible(false);
-        }
-    }
-
-    /**
-     * Hides the currently visible fastview.
-     */
-    public void hideView() {
-
-        if (clientComposite != null) {
-            Display display = clientComposite.getDisplay();
-
-            display.removeFilter(SWT.MouseDown, mouseDownListener);
-        }
-
-        if (currentPane == null) {
-            return;
-        }
-
-        fastViewAction.setPane(null);
-        
-        //unzoom before hiding
-        currentPane.getPane().setZoomed(false);
-
-        if (sash != null) {
-            sash.dispose();
-            sash = null;
-        }
-
-        clientComposite.removeListener(SWT.Resize, resizeListener);
-
-        // Get pane.
-        // Hide the right side sash first
-        //hideFastViewSash();
-        Control ctrl = currentPane.getControl();
-
-        ctrl.removeListener(SWT.Traverse, escapeListener);
-
-        // Hide it completely.
-        getPresentation().setVisible(false);
-        site.dispose();
-        //currentPane.setFastViewSash(null);
-        ctrl.setEnabled(false); // Remove focus support.
-
-        currentPane.dispose();
-        currentPane = null;
-    }
-
-    /**
-     * @return Returns the currently visible fastview or null if none
-     */
-    public ViewPane getCurrentPane() { 
-        if (currentPane != null && currentPane.getPane() instanceof ViewPane) {
-            return (ViewPane)currentPane.getPane();
-        }
-        
-        return null;
-    }
-
-    public void setState(int newState) {
-    	site.setState(newState);
-    }
-    
-    public int getState() {
-    	return site.getState();
-    }
-    
-    /**
-     * 
-     */
-    public void showSystemMenu() {
-        getPresentation().showSystemMenu();
-    }
-    
-    /**
-     * 
-     */
-    public void showPaneMenu() {
-        getPresentation().showPaneMenu();
-    }
-    
-    private int getSashSize() {
-    	AbstractPresentationFactory factory = getPresentationFactory();
-    	
-    	// Set up the correct 'style' bits
-    	int style = AbstractPresentationFactory.SASHTYPE_FLOATING;
-    	if (Geometry.isHorizontal(side))
-    		style |= AbstractPresentationFactory.SASHORIENTATION_HORIZONTAL;
-    	else
-    		style |= AbstractPresentationFactory.SASHORIENTATION_VERTICAL;
-    		
-    	int size = factory.getSashSize(style);
-    	
-    	return size;
-    }
-    
-    private AbstractPresentationFactory getPresentationFactory() {
-    	if (presFactory == null) {
-	    	presFactory = ((WorkbenchWindow) currentPane.getPane().getWorkbenchWindow())
-					.getWindowConfigurer().getPresentationFactory();
-    	}
-        return presFactory;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FolderLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FolderLayout.java
deleted file mode 100644
index c0859de..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/FolderLayout.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IFolderLayout;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * This layout is used to define the initial set of views and placeholders
- * in a folder.
- * <p>
- * Views are added to the folder by ID. This id is used to identify 
- * a view descriptor in the view registry, and this descriptor is used to 
- * instantiate the <code>IViewPart</code>.
- * </p>
- */
-public class FolderLayout implements IFolderLayout {
-    private ViewStack folder;
-
-    private PageLayout pageLayout;
-
-    private ViewFactory viewFactory;
-
-    /**
-     * Create an instance of a <code>FolderLayout</code> belonging to a 
-     * <code>PageLayout</code>.
-     */
-    public FolderLayout(PageLayout pageLayout, ViewStack folder,
-            ViewFactory viewFactory) {
-        super();
-        this.folder = folder;
-        this.viewFactory = viewFactory;
-        this.pageLayout = pageLayout;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPlaceholderFolderLayout#addPlaceholder(java.lang.String)
-     */
-    public void addPlaceholder(String viewId) {
-        if (!pageLayout.checkValidPlaceholderId(viewId)) {
-            return;
-        }
-
-        // Create the placeholder.
-        PartPlaceholder newPart = new PartPlaceholder(viewId);
-        linkPartToPageLayout(viewId, newPart);
-
-        // Add it to the folder layout.
-        folder.add(newPart);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IFolderLayout#addView(java.lang.String)
-     */
-    public void addView(String viewId) {
-        if (pageLayout.checkPartInLayout(viewId)) {
-			return;
-		}
-
-        try {
-            IViewDescriptor descriptor = viewFactory.getViewRegistry().find(
-                    ViewFactory.extractPrimaryId(viewId));
-            if (descriptor == null) {
-                throw new PartInitException("View descriptor not found: " + viewId); //$NON-NLS-1$
-            }
-            if (WorkbenchActivityHelper.filterItem(descriptor)) {
-                //create a placeholder instead.
-                addPlaceholder(viewId);
-                LayoutHelper.addViewActivator(pageLayout, viewId);
-            } else {
-
-                ViewPane newPart = LayoutHelper.createView(pageLayout
-                        .getViewFactory(), viewId);
-                linkPartToPageLayout(viewId, newPart);
-                folder.add(newPart);
-            }
-        } catch (PartInitException e) {
-            // cannot safely open the dialog so log the problem
-            WorkbenchPlugin.log(getClass(), "addView(String)", e); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Inform the page layout of the new part created
-     * and the folder the part belongs to.
-     */
-    private void linkPartToPageLayout(String viewId, LayoutPart newPart) {
-        pageLayout.setRefPart(viewId, newPart);
-        pageLayout.setFolderPart(viewId, folder);
-        // force creation of the view layout rec
-        pageLayout.getViewLayoutRec(viewId, true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPlaceholderFolderLayout#getProperty(java.lang.String)
-     */
-    public String getProperty(String id) {
-        return folder.getProperty(id);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPlaceholderFolderLayout#setProperty(java.lang.String, java.lang.String)
-     */
-    public void setProperty(String id, String value) {
-        folder.setProperty(id,value);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java
deleted file mode 100644
index f5ef8f0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Brock Janicyak - brockj@tpg.com.au 
- *     		- Fix for Bug 11142 [HeapStatus] Heap status is updated too frequently
- *          - Fix for Bug 192996 [Workbench] Reduce amount of garbage created by HeapStatus
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.lang.reflect.Method;
-
-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.MenuManager;
-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.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * The Heap Status control, which shows the heap usage statistics in the window trim.
- * 
- * @since 3.1
- */
-public class HeapStatus extends Composite {
-
-	private boolean armed;
-	private Image gcImage;
-	private Color bgCol, usedMemCol, lowMemCol, freeMemCol, topLeftCol, bottomRightCol, sepCol, textCol, markCol, armCol;  
-    private Canvas button;
-	private IPreferenceStore prefStore;
-	private int updateInterval;
-	private boolean showMax;
-    private long totalMem;
-    private long prevTotalMem = -1L;
-    private long prevUsedMem = -1L;
-    private boolean hasChanged;
-    private long usedMem;
-    private long mark = -1;
-    // start with 12x12
-	private Rectangle imgBounds = new Rectangle(0,0,12,12);
-	private long maxMem = Long.MAX_VALUE;
-	private boolean maxMemKnown;
-	private float lowMemThreshold = 0.05f;
-	private boolean showLowMemThreshold = true;
-	private boolean updateTooltip = false;
-	
-    private final Runnable timer = new Runnable() {
-        public void run() {
-            if (!isDisposed()) {
-                updateStats();
-                if (hasChanged) {
-                	if (updateTooltip) {
-                		updateToolTip();
-                	}
-                    redraw();
-                    hasChanged = false;
-                }
-                getDisplay().timerExec(updateInterval, this);
-            }
-        }
-    };
-    
-    private final IPropertyChangeListener prefListener = new IPropertyChangeListener() {
-		public void propertyChange(PropertyChangeEvent event) {
-			if (IHeapStatusConstants.PREF_UPDATE_INTERVAL.equals(event.getProperty())) {
-				setUpdateIntervalInMS(prefStore.getInt(IHeapStatusConstants.PREF_UPDATE_INTERVAL));
-			}
-			else if (IHeapStatusConstants.PREF_SHOW_MAX.equals(event.getProperty())) {
-				showMax = prefStore.getBoolean(IHeapStatusConstants.PREF_SHOW_MAX);
-			}
-		}
-	};
-
-    /**
-     * Creates a new heap status control with the given parent, and using
-     * the given preference store to obtain settings such as the refresh
-     * interval.
-     * 
-     * @param parent the parent composite
-     * @param prefStore the preference store
-     */
-	public HeapStatus(Composite parent, IPreferenceStore prefStore) {
-		super(parent, SWT.NONE);
-
-		maxMem = getMaxMem();
-		maxMemKnown = maxMem != Long.MAX_VALUE;
-
-        this.prefStore = prefStore;
-        prefStore.addPropertyChangeListener(prefListener);
-        
-        setUpdateIntervalInMS(prefStore.getInt(IHeapStatusConstants.PREF_UPDATE_INTERVAL));
-        showMax = prefStore.getBoolean(IHeapStatusConstants.PREF_SHOW_MAX);
-		
-        button = new Canvas(this, SWT.NONE);
-        button.setToolTipText(WorkbenchMessages.HeapStatus_buttonToolTip);
-        
-		ImageDescriptor imageDesc = WorkbenchImages.getWorkbenchImageDescriptor("elcl16/trash.gif"); //$NON-NLS-1$
-		gcImage = imageDesc.createImage();
-		if (gcImage != null) {
-			imgBounds = gcImage.getBounds();
-		}
-		Display display = getDisplay();
-		usedMemCol = display.getSystemColor(SWT.COLOR_INFO_BACKGROUND);
-		lowMemCol = new Color(display, 255, 70, 70);  // medium red 
-		freeMemCol = new Color(display, 255, 190, 125);  // light orange
-		bgCol = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
-		sepCol = topLeftCol = armCol = display.getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
-		bottomRightCol = display.getSystemColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW);
-		markCol = textCol = display.getSystemColor(SWT.COLOR_INFO_FOREGROUND);
-		
-		createContextMenu();
-		
-        Listener listener = new Listener() {
-
-            public void handleEvent(Event event) {
-                switch (event.type) {
-                case SWT.Dispose:
-                	doDispose();
-                    break;
-                case SWT.Resize:
-                    Rectangle rect = getClientArea();
-                    button.setBounds(rect.width - imgBounds.width - 1, 1, imgBounds.width, rect.height - 2);
-                    break;
-                case SWT.Paint:
-                    if (event.widget == HeapStatus.this) {
-                    	paintComposite(event.gc);
-                    }
-                    else if (event.widget == button) {
-                        paintButton(event.gc);
-                    }
-                    break;
-                case SWT.MouseUp:
-                    if (event.button == 1) {
-                        gc();
-                        arm(false);
-                    }
-                    break;
-                case SWT.MouseDown:
-                    if (event.button == 1) {
-	                    if (event.widget == HeapStatus.this) {
-							setMark();
-						} else if (event.widget == button) {
-							arm(true);
-						}
-                    }
-                    break;
-                case SWT.MouseEnter:
-                	HeapStatus.this.updateTooltip = true;
-                	updateToolTip();
-                	break;
-                case SWT.MouseExit:
-                    if (event.widget == HeapStatus.this) {
-                    	HeapStatus.this.updateTooltip = false;
-					} else if (event.widget == button) {
-						arm(false);
-					}
-                    break;
-                }
-            }
-
-        };
-        addListener(SWT.Dispose, listener);
-        addListener(SWT.MouseDown, listener);
-        addListener(SWT.Paint, listener);
-        addListener(SWT.Resize, listener);
-        addListener(SWT.MouseEnter, listener);
-        addListener(SWT.MouseExit, listener);
-        button.addListener(SWT.MouseDown, listener);
-        button.addListener(SWT.MouseExit, listener);
-        button.addListener(SWT.MouseUp, listener);
-        button.addListener(SWT.Paint, listener);
-
-		// make sure stats are updated before first paint
-		updateStats();
-
-        getDisplay().asyncExec(new Runnable() {
-			public void run() {
-				if (!isDisposed()) {
-					getDisplay().timerExec(updateInterval, timer);
-				}
-			}
-		});
-   	}
-
-	/**
-	 * Returns the maximum memory limit, or Long.MAX_VALUE if the max is not known.
-	 */
-	private long getMaxMem() {
-		long max = Long.MAX_VALUE;
-		try {
-			// Must use reflect to allow compilation against JCL/Foundation
-			Method maxMemMethod = Runtime.class.getMethod("maxMemory", new Class[0]); //$NON-NLS-1$
-			Object o = maxMemMethod.invoke(Runtime.getRuntime(), new Object[0]);
-			if (o instanceof Long) {
-				max = ((Long) o).longValue();
-			}
-		}
-		catch (Exception e) {
-			// ignore if method missing or if there are other failures trying to determine the max
-		}
-		return max;
-	}
-	
-	private void setUpdateIntervalInMS(int interval) {
-		updateInterval = Math.max(100, interval);
-	}
-
-	private void doDispose() {
-        prefStore.removePropertyChangeListener(prefListener);
-    	if (gcImage != null) {
-			gcImage.dispose();
-		}
-       
-        if (lowMemCol != null) {
-			lowMemCol.dispose();
-		}
-        if (freeMemCol != null) {
-			freeMemCol.dispose();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.swt.widgets.Composite#computeSize(int, int, boolean)
-	 */
-	public Point computeSize(int wHint, int hHint, boolean changed) {
-        GC gc = new GC(this);
-        Point p = gc.textExtent(WorkbenchMessages.HeapStatus_widthStr);
-        int height = imgBounds.height;
-        // choose the largest of 
-        // 	- Text height + margins
-        //	- Image height + margins
-        //	- Default Trim heightin 
-        height = Math.max(height, p.y) + 4;
-        height = Math.max(TrimUtil.TRIM_DEFAULT_HEIGHT, height);
-        gc.dispose();
-		return new Point(p.x + 15, height);
-	}
-	
-    private void arm(boolean armed) {
-        if (this.armed == armed) {
-			return;
-		}
-        this.armed = armed;
-        button.redraw();
-        button.update();
-    }
-
-    /**
-     * Creates the context menu
-     */
-    private void createContextMenu() {
-        MenuManager menuMgr = new MenuManager();
-        menuMgr.setRemoveAllWhenShown(true);
-        menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager menuMgr) {
-				fillMenu(menuMgr);
-			}
-		});
-        Menu menu = menuMgr.createContextMenu(this);
-        setMenu(menu);
-    }
-    
-    private void fillMenu(IMenuManager menuMgr) {
-        menuMgr.add(new SetMarkAction());
-        menuMgr.add(new ClearMarkAction());
-        menuMgr.add(new ShowMaxAction());
-        menuMgr.add(new CloseHeapStatusAction());
-//        if (isKyrsoftViewAvailable()) {
-//        	menuMgr.add(new ShowKyrsoftViewAction());
-//        }
-    }
-
-    /**
-     * Sets the mark to the current usedMem level. 
-     */
-    private void setMark() {
-    	updateStats();  // get up-to-date stats before taking the mark
-        mark = usedMem;
-        hasChanged = true;
-        redraw();
-    }
-
-    /**
-     * Clears the mark. 
-     */
-    private void clearMark() {
-        mark = -1;
-        hasChanged = true;
-        redraw();
-    }
-    
-    private void gc() {
-    	BusyIndicator.showWhile(getDisplay(), new Runnable() {
-			public void run() {
-				Thread t = new Thread() {
-					public void run() {
-						busyGC();
-					}};
-				t.start();
-				while(t.isAlive()) {
-					try {
-						Display d = getDisplay();
-						while(d != null && !d.isDisposed() && d.readAndDispatch()) {
-							// loop
-						}
-						t.join(10);
-					} catch (InterruptedException e) {
-						Thread.currentThread().interrupt();
-					}
-				}
-			}
-		});
-    }
-
-    private void busyGC() {
-        for (int i = 0; i < 2; ++i) {
-	        System.gc();
-	        System.runFinalization();
-        }
-    }
-    
-    private void paintButton(GC gc) {
-        Rectangle rect = button.getClientArea();
-        
-        if (armed) {
-            gc.setBackground(armCol);
-            gc.fillRectangle(rect.x, rect.y, rect.width, rect.height);
-        }
-        if (gcImage != null) {
-			int by = (rect.height - imgBounds.height) / 2 + rect.y; // button y
-			gc.drawImage(gcImage, rect.x, by);
-        }
-    }
-
-    private void paintComposite(GC gc) {
-		if (showMax && maxMemKnown) {
-			paintCompositeMaxKnown(gc);
-		} else {
-			paintCompositeMaxUnknown(gc);
-		}
-    }
-    
-    private void paintCompositeMaxUnknown(GC gc) {
-        Rectangle rect = getClientArea();
-        int x = rect.x;
-        int y = rect.y;
-        int w = rect.width;
-        int h = rect.height;
-        int bw = imgBounds.width; // button width
-        int dx = x + w - bw - 2; // divider x
-        int sw = w - bw - 3; // status width 
-        int uw = (int) (sw * usedMem / totalMem); // used mem width
-        int ux = x + 1 + uw; // used mem right edge
-        
-        gc.setBackground(bgCol);
-        gc.fillRectangle(rect);
-        gc.setForeground(sepCol);
-		gc.drawLine(dx, y, dx, y + h);
-		gc.drawLine(ux, y, ux, y + h);
-        gc.setForeground(topLeftCol);
-        gc.drawLine(x, y, x+w, y);
-		gc.drawLine(x, y, x, y+h);
-		gc.setForeground(bottomRightCol);
-        gc.drawLine(x+w-1, y, x+w-1, y+h);
-		gc.drawLine(x, y+h-1, x+w, y+h-1);
-		
-		gc.setBackground(usedMemCol);
-        gc.fillRectangle(x + 1, y + 1, uw, h - 2);
-        
-        String s = NLS.bind(WorkbenchMessages.HeapStatus_status, convertToMegString(usedMem), convertToMegString(totalMem));
-        Point p = gc.textExtent(s);
-        int sx = (rect.width - 15 - p.x) / 2 + rect.x + 1;
-        int sy = (rect.height - 2 - p.y) / 2 + rect.y + 1;
-        gc.setForeground(textCol);
-        gc.drawString(s, sx, sy, true);
-        
-        // draw an I-shaped bar in the foreground colour for the mark (if present)
-        if (mark != -1) {
-            int ssx = (int) (sw * mark / totalMem) + x + 1;
-            paintMark(gc, ssx, y, h);
-        }
-    }
-
-    private void paintCompositeMaxKnown(GC gc) {
-        Rectangle rect = getClientArea();
-        int x = rect.x;
-        int y = rect.y;
-        int w = rect.width;
-        int h = rect.height;
-        int bw = imgBounds.width; // button width
-        int dx = x + w - bw - 2; // divider x
-        int sw = w - bw - 3; // status width 
-        int uw = (int) (sw * usedMem / maxMem); // used mem width
-        int ux = x + 1 + uw; // used mem right edge
-        int tw = (int) (sw * totalMem / maxMem); // current total mem width
-        int tx = x + 1 + tw; // current total mem right edge
-        
-        gc.setBackground(bgCol);
-        gc.fillRectangle(rect);
-        gc.setForeground(sepCol);
-		gc.drawLine(dx, y, dx, y + h);
-		gc.drawLine(ux, y, ux, y + h);
-		gc.drawLine(tx, y, tx, y + h);
-        gc.setForeground(topLeftCol);
-        gc.drawLine(x, y, x+w, y);
-		gc.drawLine(x, y, x, y+h);
-		gc.setForeground(bottomRightCol);
-        gc.drawLine(x+w-1, y, x+w-1, y+h);
-		gc.drawLine(x, y+h-1, x+w, y+h-1);
-		
-        if (lowMemThreshold != 0 && ((double)(maxMem - usedMem) / (double)maxMem < lowMemThreshold)) {
-            gc.setBackground(lowMemCol);
-        } else {
-            gc.setBackground(usedMemCol);
-        }
-        gc.fillRectangle(x + 1, y + 1, uw, h - 2);
-        
-        gc.setBackground(freeMemCol);
-        gc.fillRectangle(ux + 1, y + 1, tx - (ux + 1), h - 2);
-
-        // paint line for low memory threshold
-        if (showLowMemThreshold && lowMemThreshold != 0) {
-            gc.setForeground(lowMemCol);
-            int thresholdX = x + 1 + (int) (sw * (1.0 - lowMemThreshold));
-            gc.drawLine(thresholdX, y + 1, thresholdX, y + h - 2);
-        }
-
-        String s = NLS.bind(WorkbenchMessages.HeapStatus_status, 
-				convertToMegString(usedMem), convertToMegString(totalMem));
-        Point p = gc.textExtent(s);
-        int sx = (rect.width - 15 - p.x) / 2 + rect.x + 1;
-        int sy = (rect.height - 2 - p.y) / 2 + rect.y + 1;
-        gc.setForeground(textCol);
-        gc.drawString(s, sx, sy, true);
-        
-        // draw an I-shaped bar in the foreground colour for the mark (if present)
-        if (mark != -1) {
-            int ssx = (int) (sw * mark / maxMem) + x + 1;
-            paintMark(gc, ssx, y, h);
-        }
-    }
-
-	private void paintMark(GC gc, int x, int y, int h) {
-        gc.setForeground(markCol);
-		gc.drawLine(x, y+1, x, y+h-2);
-		gc.drawLine(x-1, y+1, x+1, y+1);
-		gc.drawLine(x-1, y+h-2, x+1, y+h-2);
-	}
-
-    private void updateStats() {
-        Runtime runtime = Runtime.getRuntime();
-        totalMem = runtime.totalMemory();
-        long freeMem = runtime.freeMemory();
-        usedMem = totalMem - freeMem;
-
-        if (convertToMeg(prevUsedMem) != convertToMeg(usedMem)) {
-            prevUsedMem = usedMem;
-            this.hasChanged = true;
-        }
-        
-        if (prevTotalMem != totalMem) {
-            prevTotalMem = totalMem;
-            this.hasChanged = true;
-        }
-    }
-
-    private void updateToolTip() {
-    	String usedStr = convertToMegString(usedMem);
-    	String totalStr = convertToMegString(totalMem);
-    	String maxStr = maxMemKnown ? convertToMegString(maxMem) : WorkbenchMessages.HeapStatus_maxUnknown;
-    	String markStr = mark == -1 ? WorkbenchMessages.HeapStatus_noMark : convertToMegString(mark);
-        String toolTip = NLS.bind(WorkbenchMessages.HeapStatus_memoryToolTip, new Object[] { usedStr, totalStr, maxStr, markStr });
-        if (!toolTip.equals(getToolTipText())) {
-            setToolTipText(toolTip);
-        }
-    }
-	
-    /**
-     * Converts the given number of bytes to a printable number of megabytes (rounded up).
-     */
-    private String convertToMegString(long numBytes) {
-        return NLS.bind(WorkbenchMessages.HeapStatus_meg, new Long(convertToMeg(numBytes)));
-    }
-
-    /**
-     * Converts the given number of bytes to the corresponding number of megabytes (rounded up).
-     */
-	private long convertToMeg(long numBytes) {
-		return (numBytes + (512 * 1024)) / (1024 * 1024);
-	}
-
-
-    class SetMarkAction extends Action {
-        SetMarkAction() {
-            super(WorkbenchMessages.SetMarkAction_text);
-        }
-        
-        public void run() {
-            setMark();
-        }
-    }
-    
-    class ClearMarkAction extends Action {
-        ClearMarkAction() {
-            super(WorkbenchMessages.ClearMarkAction_text);
-        }
-        
-        public void run() {
-            clearMark();
-        }
-    }
-
-    class ShowMaxAction extends Action {
-    	ShowMaxAction() {
-            super(WorkbenchMessages.ShowMaxAction_text, IAction.AS_CHECK_BOX);
-            setEnabled(maxMemKnown);
-            setChecked(showMax);
-        }
-        
-        public void run() {
-            prefStore.setValue(IHeapStatusConstants.PREF_SHOW_MAX, isChecked());
-            redraw();
-        }
-    }
-
-    class CloseHeapStatusAction extends Action{
-    	
-    	CloseHeapStatusAction(){
-    		super(WorkbenchMessages.WorkbenchWindow_close );
-    	}
-    	
-    	/* (non-Javadoc)
-    	 * @see org.eclipse.jface.action.IAction#run()
-    	 */
-    	public void run(){
-    		dispose();
-    	}
-    }
-
-//    /**
-//     * Returns whether the Kyrsoft memory monitor view is available.
-//     * 
-//     * @return <code>true</code> if available, <code>false</code> otherwise
-//     */
-//    private boolean isKyrsoftViewAvailable() {
-//        return (Platform.getBundle(IHeapStatusConstants.KYRSOFT_PLUGIN_ID) != null) && PlatformUI.getWorkbench().getViewRegistry().find(IHeapStatusConstants.KYRSOFT_VIEW_ID) != null; 
-//    }
-//    
-//    class ShowKyrsoftViewAction extends Action {
-//        ShowKyrsoftViewAction() {
-//            super(WorkbenchMessages.ShowKyrsoftViewAction_text);
-//        }
-//        public void run() {
-//            if (!isKyrsoftViewAvailable()) { 
-//                MessageDialog.openError(getShell(), WorkbenchMessages.HeapStatus_Error, WorkbenchMessages.ShowKyrsoftViewAction_KyrsoftNotInstalled);
-//                return;
-//            }
-//			IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-//            IWorkbenchPage page = window == null ? null : window.getActivePage();
-//            if (page == null) {
-//                MessageDialog.openError(getShell(), WorkbenchMessages.HeapStatus_Error, WorkbenchMessages.ShowKyrsoftViewAction_OpenPerspectiveFirst);
-//                return;
-//            }
-//            try {
-//                page.showView(IHeapStatusConstants.KYRSOFT_VIEW_ID);
-//            }
-//            catch (PartInitException e) {
-//                String msg = WorkbenchMessages.ShowKyrsoftViewAction_ErrorShowingKyrsoftView;
-//                IStatus status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, msg, e);
-//                ErrorDialog.openError(getShell(), WorkbenchMessages.HeapStatus_Error, msg, status);
-//            }
-//            
-//        }
-//    }
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IActionSetContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IActionSetContributionItem.java
deleted file mode 100644
index f57e363..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IActionSetContributionItem.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * This interface should be implemented by all contribution items
- * defined by an action set.
- */
-public interface IActionSetContributionItem {
-
-    /**
-     * Returns the action set id.
-     */
-    public String getActionSetId();
-
-    /**
-     * Sets the action set id.
-     */
-    public void setActionSetId(String newActionSetId);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IBackgroundSaveListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IBackgroundSaveListener.java
deleted file mode 100644
index 956f654..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IBackgroundSaveListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-/**
- * @since 3.3
- *
- */
-interface IBackgroundSaveListener {
-
-	public void handleBackgroundSaveStarted();
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IChangeListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IChangeListener.java
deleted file mode 100644
index bb0283f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IChangeListener.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * Interface that can receive change notifiecations
- * from a Model object
- */
-public interface IChangeListener {
-    /**
-     * Called with false when the listener is first
-     * attached to the model, and called with true
-     * every time the model's state changes.
-     */
-    void update(boolean changed);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ICompatibleWorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ICompatibleWorkbenchPage.java
deleted file mode 100644
index 6285f64..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ICompatibleWorkbenchPage.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * Internal interface used in providing increased binary compatibility for
- * pre-3.0 plug-ins. There is an alternate declaration of this interface
- * elsewhere that declares some methods that existed on IWorkbenchPage
- * in 2.1 that were removed in 3.0 (because they referenced resource API).
- * 
- * @since 3.0
- */
-public interface ICompatibleWorkbenchPage {
-    // dummy version that declares no methods
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IHeapStatusConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IHeapStatusConstants.java
deleted file mode 100644
index cfe0e5f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IHeapStatusConstants.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-/**
- * Preference constants for the heap status.
- * 
- * @since 3.1
- */
-public interface IHeapStatusConstants {
-
-	/**
-	 * Preference key for the update interval (value in milliseconds).
-	 */
-    String PREF_UPDATE_INTERVAL = "HeapStatus.updateInterval"; //$NON-NLS-1$
-
-    /**
-     * Preference key for whether to show max heap, if available (value is boolean).
-     */
-    String PREF_SHOW_MAX = "HeapStatus.showMax";   //$NON-NLS-1$
-    	
-//    /**
-//     * ID for the Kyrsoft Memory Monitor plug-in.
-//     */
-//    String KYRSOFT_PLUGIN_ID = "de.kyrsoft.memmonitor"; //$NON-NLS-1$
-//
-//    /**
-//     * ID for the Kyrsoft Memory Monitor view.
-//     */
-//    String KYRSOFT_VIEW_ID = "de.kyrsoft.memmonitor.views.MemoryView"; //$NON-NLS-1$
-//
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ILayoutContainer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ILayoutContainer.java
deleted file mode 100644
index 6e14102..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ILayoutContainer.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-public interface ILayoutContainer {
-    public boolean allowsAdd(LayoutPart toAdd);
-    
-    /**
-     * Add a child to the container.
-     */
-    public void add(LayoutPart newPart);
-
-    /**
-     * Returns a list of layout children.
-     */
-    public LayoutPart[] getChildren();
-
-    /**
-     * Remove a child from the container.
-     */
-    public void remove(LayoutPart part);
-
-    /**
-     * Replace one child with another
-     */
-    public void replace(LayoutPart oldPart, LayoutPart newPart);
-    
-    public void findSashes(LayoutPart toFind, PartPane.Sashes result);
-
-    /**
-     * When a layout part closes, focus will return to the previously active part.
-     * This method determines whether the parts in this container should participate
-     * in this behavior. If this method returns true, its parts may automatically be
-     * given focus when another part is closed. 
-     * 
-     * @return true iff the parts in this container may be given focus when the active
-     * part is closed
-     */
-    public boolean allowsAutoFocus();
-
-    /**
-     * Called by child parts to request a zoom in, given an immediate child 
-     * 
-     * @param toZoom
-     * @since 3.1
-     */
-    public void childRequestZoomIn(LayoutPart toZoom);
-    
-    /**
-     * Called by child parts to request a zoom out
-     * 
-     * @since 3.1
-     */
-    public void childRequestZoomOut();
-    
-    /**
-     * Returns true iff the given child is obscured due to the fact that the container is zoomed into
-     * another part. 
-     * 
-     * @param toTest
-     * @return
-     * @since 3.1
-     */
-    public boolean childObscuredByZoom(LayoutPart toTest);
-    
-    /**
-     * Returns true iff we are zoomed into the given part, given an immediate child of this container.
-     * 
-     * @param toTest
-     * @return
-     * @since 3.1
-     */
-    public boolean childIsZoomed(LayoutPart toTest);
-
-    /**
-     * Called when the preferred size of the given child has changed, requiring a
-     * layout to be triggered.
-     * 
-     * @param childThatChanged the child that triggered the new layout
-     */
-    public void resizeChild(LayoutPart childThatChanged);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectActionContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectActionContributor.java
deleted file mode 100644
index fad5ff9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectActionContributor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.List;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * This interface must be implemented in order to contribute
- * to context (pop-up) menu for an object. Classes
- * that implement this interface must register
- * with the popup menu manager.
- */
-public interface IObjectActionContributor extends IObjectContributor {
-    /**
-     * Implement this method to add actions that deal with the currently
-     * selected object or objects. Actions should be added to the
-     * provided menu object. Current selection can be obtained from
-     * the given selection provider.
-     * 
-     * @return <code>true</code> if any contributions were made, and <code>false</code> otherwise.
-     */
-    public boolean contributeObjectActions(IWorkbenchPart part,
-            IMenuManager menu, ISelectionProvider selProv,
-            List actionIdOverrides);
-
-    /**
-     * Implement this method to add menus that deal with the currently
-     * selected object or objects. Menus should be added to the
-     * provided menu object. Current selection can be obtained from
-     * the given selection provider.
-     * 
-     * @return <code>true</code> if any contributions were made, and <code>false</code> otherwise.
-     */
-    public boolean contributeObjectMenus(IMenuManager menu,
-            ISelectionProvider selProv);
-
-    /**
-     * Contribute to the list the action identifiers from other contributions that 
-     * this contribution wants to override. Actions of these identifiers will
-     * not be contributed.
-     */
-    public void contributeObjectActionIdOverrides(List actionIdOverrides);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectContributor.java
deleted file mode 100644
index d882e09..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IObjectContributor.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * Objects of classes that implement this interface
- * can be registered for certain object type
- * in the IObjectContributorManager. Unlike with extenders,
- * all the matching contributors will be processed
- * in a sequence.
- * <p>By implementing 'isApplicableTo' method,
- * a contributor can tell the manager to skip it
- * if the object is of the desired type, but its
- * other properties do not match additional
- * requirements imposed by the contributor.
- *
- */
-
-public interface IObjectContributor {
-    /**
-     * Returns true if this contributor should be considered
-     * for the given object.
-     * @param object the object to text
-     * @return boolean
-     */
-    public boolean isApplicableTo(Object object);
-
-    /**
-     * Return whether or not the receiver can adapt to IResource.
-     * @return boolean
-     */
-    public boolean canAdapt();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
deleted file mode 100644
index 1e468eb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IPreferenceConstants.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-/**
- * The IPreferenceConstants are the internal constants used by the Workbench.
- */
-public interface IPreferenceConstants {
-
-    //Boolean: true = single click opens editor; false = double click opens
-    // it.
-    public static final String OPEN_ON_SINGLE_CLICK = "OPEN_ON_SINGLE_CLICK"; //$NON-NLS-1$
-
-    //Boolean: true = select on hover;
-    public static final String SELECT_ON_HOVER = "SELECT_ON_HOVER"; //$NON-NLS-1$
-
-    //Boolean: true = open after delay
-    public static final String OPEN_AFTER_DELAY = "OPEN_AFTER_DELAY"; //$NON-NLS-1$
-
-    //Do we show color icons in toolbars?
-    public static final String COLOR_ICONS = "COLOR_ICONS"; //$NON-NLS-1$
-
-    //mappings for type/extension to an editor
-    public final static String EDITORS = "editors"; //$NON-NLS-1$
-
-    public final static String RESOURCES = "resourcetypes"; //$NON-NLS-1$
-
-    //saving perspective layouts
-    public final static String PERSPECTIVES = "perspectives"; //$NON-NLS-1$
-
-    // (int) If > 0, an editor will be reused once 'N' editors are opened.
-    public static final String REUSE_EDITORS = "REUSE_OPEN_EDITORS"; //$NON-NLS-1$
-
-    //Boolean: true = replace dirty editor if no other editors to reuse
-    // (prompt for save);
-    //			false = open a new editor if no other editors to resuse
-    public static final String REUSE_DIRTY_EDITORS = "REUSE_DIRTY_EDITORS"; //$NON-NLS-1$
-
-    //On/Off option for the two preceding options.
-    public static final String REUSE_EDITORS_BOOLEAN = "REUSE_OPEN_EDITORS_BOOLEAN"; //$NON-NLS-1$
-
-    // (int) N recently viewed files will be listed in the File->Open Recent
-    // menu.
-    public static final String RECENT_FILES = "RECENT_FILES"; //$NON-NLS-1$
-
-    // (integer) Mode for opening a view.
-    public static final String OPEN_VIEW_MODE = "OPEN_VIEW_MODE"; //$NON-NLS-1$
-
-    public static final int OVM_EMBED = 0;
-
-    public static final int OVM_FAST = 1;
-
-    public static final int OVM_FLOAT = 2;
-
-    // (int) Mode for opening a new perspective
-    public static final String OPEN_PERSP_MODE = "OPEN_PERSPECTIVE_MODE"; //$NON-NLS-1$
-
-    public static final int OPM_ACTIVE_PAGE = 0;
-
-    //public static final int OPM_NEW_PAGE = 1;
-    public static final int OPM_NEW_WINDOW = 2;
-
-    //Identifier for enabled decorators
-    public static final String ENABLED_DECORATORS = "ENABLED_DECORATORS"; //$NON-NLS-1$
-
-    //Boolean: true = keep cycle part dialog open when keys released
-    public static final String STICKY_CYCLE = "STICKY_CYCLE"; //$NON-NLS-1$
-
-    //List of plugins but that extends "startup" extension point but are
-    // overriden by the user.
-    //String of plugin unique ids separated by ";"
-    public static final String PLUGINS_NOT_ACTIVATED_ON_STARTUP = "PLUGINS_NOT_ACTIVATED_ON_STARTUP"; //$NON-NLS-1$
-
-    //Separator for PLUGINS_NOT_ACTIVATED_ON_STARTUP
-    public static char SEPARATOR = ';';
-
-    //Preference key for default editors
-    public final static String DEFAULT_EDITORS = "defaultEditors"; //$NON-NLS-1$
-
-    //Preference key for default editors
-    public final static String DEFAULT_EDITORS_CACHE = "defaultEditorsCache"; //$NON-NLS-1$
-
-    //Tab width = tab height * scalar value
-    public final static String EDITOR_TAB_WIDTH = "EDITOR_TAB_WIDTH"; //$NON-NLS-1$
-
-    //Boolean: true = show Editors drop down button on CTabFolder
-    public static final String EDITORLIST_PULLDOWN_ACTIVE = "EDITORLIST_PULLDOWN_ACTIVE"; //$NON-NLS-1$
-
-    // Selection scope for EditorList
-    public static final String EDITORLIST_SELECTION_SCOPE = "EDITORLIST_SELECTION_SCOPE"; //$NON-NLS-1$
-
-    public static final int EDITORLIST_SET_WINDOW_SCOPE = 0;
-
-    public static final int EDITORLIST_SET_PAGE_SCOPE = 1;
-
-    public static final int EDITORLIST_SET_TAB_GROUP_SCOPE = 2;
-
-    // Sort criteria for EditorList
-    public static final String EDITORLIST_SORT_CRITERIA = "EDITORLIST_SORT_CRITERIA"; //$NON-NLS-1$
-
-    public static final int EDITORLIST_NAME_SORT = 0;
-
-    public static final int EDITORLIST_MRU_SORT = 1;
-
-    /**
-     * Boolean; true = EditorList displays full path
-     */
-    public static final String EDITORLIST_DISPLAY_FULL_NAME = "EDITORLIST_DISPLAY_FULL_NAME"; //$NON-NLS-1$
-
-    
-    /**
-     * Workbench preference id for determining whether the user has chosen to 
-     * override some of the settings in the current presentation.
-     * <p>
-     * The default value for this preference is: <code>false</code> (prompt)
-     * </p>
-     * 
-     * @since 3.2
-     */
-    public static final String OVERRIDE_PRESENTATION = "overridepresentation"; //$//$NON-NLS-1$
-    
-    /**
-     * <p>
-     * The key for the preference indicating which tab is selected in the keys
-     * preference page when last okay was pressed. This value should never
-     * really be directly edited by a user.
-     * </p>
-     * <p>
-     * This preference is an <code>int</code> value. The default value is
-     * <code>0</code>.
-     * </p>
-     * 
-     * @since 3.1
-     */
-    public static final String KEYS_PREFERENCE_SELECTED_TAB = "KEYS_PREFERENCE_SELECTED_TAB"; //$NON-NLS-1$
-
-    /**
-     * <p>
-     * The key for the preference indicating whether multi-stroke key sequences
-     * should provide assistance to the user. This means that if the user pauses
-     * after pressing the first key, a window will open showing the possible
-     * completions.
-     * </p>
-     * <p>
-     * This preference is a <code>boolean</code> value. The default value is
-     * <code>false</code>.
-     * </p>
-     * 
-     * @since 3.0
-     */
-    public static final String MULTI_KEY_ASSIST = "MULTI_KEY_ASSIST"; //$NON-NLS-1$
-
-    /**
-     * <p>
-     * The key for the preference indicating how long the assist window should
-     * wait before opening. This is a value in milliseconds -- from the time the
-     * first key in a multi-key is received by the system, to the time the
-     * assist window should appear.
-     * </p>
-     * <p>
-     * This preference is an <code>int</code> value. The default value is
-     * <code>1000</code>.
-     * </p>
-     * 
-     * @since 3.0
-     */
-    public static final String MULTI_KEY_ASSIST_TIME = "MULTI_KEY_ASSIST_TIME"; //$NON-NLS-1$
-
-    /**
-     * Workbench preference to use the new IPersistableEditor interface
-     * throughout the workbench new editor/open editor calls.
-     * 
-     * @since 3.3
-     */
-    public static String USE_IPERSISTABLE_EDITORS = "USE_IPERSISTABLE_EDITORS"; //$NON-NLS-1$
-    
-    /**
-     * Preference to show user jobs in a dialog.
-     */
-    public static String RUN_IN_BACKGROUND = "RUN_IN_BACKGROUND"; //$NON-NLS-1$
-
-    /**
-     * Workbench preference id for determining whether the user will be prompted
-     * for activity enablement. If this is false then activities are enabled
-     * automatically. If it is true, then the user is only prompted for
-     * activities that they have not already declared a disinterest in via the
-     * prompt dialog.
-     * <p>
-     * The default value for this preference is: <code>true</code> (prompt)
-     * </p>
-     * 
-     * @since 3.0
-     */
-    public static final String SHOULD_PROMPT_FOR_ENABLEMENT = "shouldPromptForEnablement"; //$NON-NLS-1$
-
-    /**
-	 * Preference that restores the 3.2 startup threading behavior. This
-	 * essentially means that there will be no restrictions on what runnables
-	 * will be processed via the UI synchronizer.  
-	 * 
-	 * <p>
-	 * This preference will likely disappear in 3.5 in favor of a proper
-	 * solution to bug 219913.
-	 * </p>
-	 * 
-	 * @since 3.4
-	 */
-	public static final String USE_32_THREADING = "use32Threading"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IReorderListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IReorderListener.java
deleted file mode 100644
index c1eb5d6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IReorderListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-
-/**
- * Simple interface for informing clients of reordering of an object in an ordered list. 
- *
- */
-interface IReorderListener {
-	
-	/**
-	 * An object has been moved, clients might need to react.
-	 * 
-	 * @param obj
-	 * @param newIndex 
-	 * 
-	 */
-	public void reorder(Object obj, int newIndex);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ISelectionConversionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ISelectionConversionService.java
deleted file mode 100644
index 62d0d82..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ISelectionConversionService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-
-/**
- * <p>
- * A service that is capable of converting a selection into resources.
- * </p>
- * <p>
- * This interface is only intended for use within the
- * <code>org.eclipse.ui.workbench</code> and <code>org.eclipse.ui.ide</code>
- * plug-ins.
- * </p>
- * 
- * @since 3.2
- */
-public interface ISelectionConversionService {
-
-	/**
-	 * Attempt to convert the elements in the passed selection into resources by
-	 * asking each for its IResource property (iff it isn't already a resource).
-	 * If all elements in the initial selection can be converted to resources
-	 * then answer a new selection containing these resources; otherwise answer
-	 * an empty selection.
-	 * 
-	 * @param originalSelection
-	 *            the original selection; must not be <code>null</code>.
-	 * @return the converted selection or an empty selection; never
-	 *         <code>null</code>.
-	 */
-	public IStructuredSelection convertToResources(
-			IStructuredSelection originalSelection);
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IStickyViewManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IStickyViewManager.java
deleted file mode 100644
index 59d75ee..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IStickyViewManager.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.Set;
-
-import org.eclipse.ui.IMemento;
-
-/**
- * @since 3.3
- *
- */
-interface IStickyViewManager {
-	
-	void remove(String perspectiveId);
-	
-	void add(String perspectiveId, Set stickyViewSet);
-	
-	void clear();
-	
-	void update(Perspective oldPersp, Perspective newPersp);
-	
-	void save(IMemento memento);
-	 
-	void restore(IMemento memento);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ITrimAreaChangeListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ITrimAreaChangeListener.java
deleted file mode 100644
index c68f431..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ITrimAreaChangeListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * This iterface is used to identify and call back to trim elements that can be
- * repositioned to edges other than the one that they're defined as being in by
- * default.
- * <p>
- * NOTE: This class is a part of a 'work in progress' and should not be used
- * without consulting the Platform UI group. No guarantees are made as to the
- * stability of the API (except that the javadoc will get better...;-).
- * </p>
- * 
- * @since 3.2
- * 
- */
-public interface ITrimAreaChangeListener {
-	/**
-	 * If a control's TrimLayoutData has a listener defined then this method
-	 * will be called whenever the trim changes the orientation (i.e. side) that
-	 * it's on.
-	 * <p>
-	 * The implementation should perform any adjustments to its control
-	 * necessary to support it in its 'newOrientation' (i.e. changing a ToolBar
-	 * from horizontal to vertical if it's been redocked to an area on the left
-	 * or right side)
-	 * </p>
-	 * 
-	 * @param oldOrientation
-	 *            The SWT side that the trim was previously on.
-	 * @param newOrientation
-	 *            The SWT side that the trim has been repositioned to
-	 */
-	public void areaChanged(int oldOrientation, int newOrientation);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchConstants.java
deleted file mode 100644
index 7dca4da..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchConstants.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * General constants used by the workbench.
- */
-public interface IWorkbenchConstants {
-
-    /**
-     * @deprecated
-     */
-    public static final String ACCELERATOR_CONFIGURATION_ID = "acceleratorConfigurationId"; //$NON-NLS-1$
-
-    public static final String DEFAULT_PRESENTATION_ID = "org.eclipse.ui.presentations.default"; //$NON-NLS-1$
-    
-    /**
-     * @deprecated 
-     */
-    public static final String DEFAULT_ACCELERATOR_CONFIGURATION_ID = "org.eclipse.ui.defaultAcceleratorConfiguration"; //$NON-NLS-1$
-
-    /**
-     * @deprecated 
-     */
-    public static final String DEFAULT_ACCELERATOR_SCOPE_ID = "org.eclipse.ui.globalScope"; //$NON-NLS-1$
-
-    //mappings for type/extension to an editor - backward compatibility only.
-    public final static String EDITOR_FILE_NAME = "editors.xml"; //$NON-NLS-1$
-
-    public final static String RESOURCE_TYPE_FILE_NAME = "resourcetypes.xml"; //$NON-NLS-1$
-
-    // Filename containing the workbench's preferences 
-    public static final String PREFERENCE_BUNDLE_FILE_NAME = "workbench.ini"; //$NON-NLS-1$
-
-    // Identifier for visible view parts. 
-    public static final String WORKBENCH_VISIBLE_VIEW_ID = "Workbench.visibleViewID"; //$NON-NLS-1$
-
-    // Identifier of workbench info properties page
-    public static final String WORKBENCH_PROPERTIES_PAGE_INFO = PlatformUI.PLUGIN_ID
-            + ".propertypages.info.file"; //$NON-NLS-1$
-
-    // Various editor.
-    public static final String OLE_EDITOR_ID = PlatformUI.PLUGIN_ID
-            + ".OleEditor"; //$NON-NLS-1$
-
-    // Default view category.
-    public static final String DEFAULT_CATEGORY_ID = PlatformUI.PLUGIN_ID;
-
-    // Persistance tags.
-    public static final String TRUE = "true"; //$NON-NLS-1$
-
-    public static final String FALSE = "false"; //$NON-NLS-1$
-	
-	public static final String TAG_WORKBENCH_ADVISOR = "workbenchAdvisor"; //$NON-NLS-1$
-	
-	public static final String TAG_WORKBENCH_WINDOW_ADVISOR = "workbenchWindowAdvisor"; //$NON-NLS-1$
-	
-	public static final String TAG_ACTION_BAR_ADVISOR = "actionBarAdvisor"; //$NON-NLS-1$
-
-    public static final String TAG_ID = "id"; //$NON-NLS-1$
-
-    public static final String TAG_FOCUS = "focus"; //$NON-NLS-1$
-
-    public static final String TAG_EDITOR = "editor"; //$NON-NLS-1$
-    
-    public static final String TAG_DEFAULT_EDITOR = "defaultEditor"; //$NON-NLS-1$
-
-    public static final String TAG_DELETED_EDITOR = "deletedEditor"; //$NON-NLS-1$
-
-    public static final String TAG_EDITORS = "editors"; //$NON-NLS-1$
-
-    public static final String TAG_WORKBOOK = "workbook"; //$NON-NLS-1$
-
-    public static final String TAG_ACTIVE_WORKBOOK = "activeWorkbook"; //$NON-NLS-1$
-
-    public static final String TAG_AREA = "editorArea"; //$NON-NLS-1$
-
-    public static final String TAG_AREA_VISIBLE = "editorAreaVisible"; //$NON-NLS-1$
-
-    public static final String TAG_AREA_HIDDEN = "editorAreaHidden"; //$NON-NLS-1$
-
-    public static final String TAG_AREA_TRIM_STATE = "editorAreaTrimState"; //$NON-NLS-1$
-
-    public static final String TAG_INPUT = "input"; //$NON-NLS-1$
-
-    public static final String TAG_FACTORY_ID = "factoryID"; //$NON-NLS-1$
-
-    public static final String TAG_EDITOR_STATE = "editorState"; //$NON-NLS-1$
-
-    public static final String TAG_TITLE = "title"; //$NON-NLS-1$
-
-    public static final String TAG_X = "x"; //$NON-NLS-1$
-
-    public static final String TAG_Y = "y"; //$NON-NLS-1$
-    
-    public static final String TAG_FLOAT = "float"; //$NON-NLS-1$
-
-    public static final String TAG_ITEM_WRAP_INDEX = "wrapIndex"; //$NON-NLS-1$
-
-    public static final String TAG_TOOLBAR_LAYOUT = "toolbarLayout"; //$NON-NLS-1$
-
-    public static final String TAG_WIDTH = "width"; //$NON-NLS-1$
-
-    public static final String TAG_HEIGHT = "height"; //$NON-NLS-1$
-
-    public static final String TAG_MINIMIZED = "minimized"; //$NON-NLS-1$
-
-    public static final String TAG_MAXIMIZED = "maximized"; //$NON-NLS-1$
-
-    public static final String TAG_FOLDER = "folder"; //$NON-NLS-1$
-
-    public static final String TAG_INFO = "info"; //$NON-NLS-1$
-
-    public static final String TAG_PART = "part"; //$NON-NLS-1$
-
-    public static final String TAG_PART_NAME = "partName"; //$NON-NLS-1$
-
-	public static final String TAG_PROPERTIES = "properties"; //$NON-NLS-1$
-	
-    public static final String TAG_PROPERTY = "property"; //$NON-NLS-1$
-
-    public static final String TAG_RELATIVE = "relative"; //$NON-NLS-1$
-
-    public static final String TAG_RELATIONSHIP = "relationship"; //$NON-NLS-1$
-
-    public static final String TAG_RATIO = "ratio"; //$NON-NLS-1$
-
-    public static final String TAG_RATIO_LEFT = "ratioLeft"; //$NON-NLS-1$
-
-    public static final String TAG_RATIO_RIGHT = "ratioRight"; //$NON-NLS-1$
-
-    public static final String TAG_ACTIVE_PAGE_ID = "activePageID"; //$NON-NLS-1$
-
-    public static final String TAG_EXPANDED = "expanded"; //$NON-NLS-1$
-
-    public static final String TAG_PAGE = "page"; //$NON-NLS-1$
-
-    public static final String TAG_INTRO = "intro"; //$NON-NLS-1$
-
-    public static final String TAG_STANDBY = "standby"; //$NON-NLS-1$
-
-    public static final String TAG_LABEL = "label"; //$NON-NLS-1$
-
-    public static final String TAG_CONTENT = "content"; //$NON-NLS-1$
-
-    public static final String TAG_CLASS = "class"; //$NON-NLS-1$
-
-    public static final String TAG_FILE = "file"; //$NON-NLS-1$
-
-    public static final String TAG_DESCRIPTOR = "descriptor"; //$NON-NLS-1$
-
-    public static final String TAG_MAIN_WINDOW = "mainWindow"; //$NON-NLS-1$
-
-    public static final String TAG_DETACHED_WINDOW = "detachedWindow"; //$NON-NLS-1$
-
-    public static final String TAG_HIDDEN_WINDOW = "hiddenWindow"; //$NON-NLS-1$
-
-    public static final String TAG_WORKBENCH = "workbench"; //$NON-NLS-1$
-
-    public static final String TAG_WINDOW = "window"; //$NON-NLS-1$
-
-    public static final String TAG_VERSION = "version"; //$NON-NLS-1$
-    
-    public static final String TAG_PROGRESS_COUNT = "progressCount";  //$NON-NLS-1$
-
-    public static final String TAG_PERSPECTIVES = "perspectives"; //$NON-NLS-1$
-
-    public static final String TAG_PERSPECTIVE = "perspective"; //$NON-NLS-1$
-
-    public static final String TAG_ACTIVE_PERSPECTIVE = "activePerspective"; //$NON-NLS-1$
-
-    public static final String TAG_ACTIVE_PART = "activePart"; //$NON-NLS-1$
-
-    public static final String TAG_ACTION_SET = "actionSet"; //$NON-NLS-1$
-
-    public static final String TAG_ALWAYS_ON_ACTION_SET = "alwaysOnActionSet"; //$NON-NLS-1$
-
-    public static final String TAG_ALWAYS_OFF_ACTION_SET = "alwaysOffActionSet"; //$NON-NLS-1$
-
-    public static final String TAG_SHOW_VIEW_ACTION = "show_view_action"; //$NON-NLS-1$
-
-    public static final String TAG_SHOW_IN_TIME = "show_in_time"; //$NON-NLS-1$
-
-    public static final String TAG_TIME = "time"; //$NON-NLS-1$
-
-    public static final String TAG_NEW_WIZARD_ACTION = "new_wizard_action"; //$NON-NLS-1$
-
-    public static final String TAG_PERSPECTIVE_ACTION = "perspective_action"; //$NON-NLS-1$
-
-    public static final String TAG_VIEW = "view"; //$NON-NLS-1$
-
-    public static final String TAG_LAYOUT = "layout"; //$NON-NLS-1$
-
-    public static final String TAG_EXTENSION = "extension"; //$NON-NLS-1$
-
-    public static final String TAG_NAME = "name"; //$NON-NLS-1$
-
-    public static final String TAG_IMAGE = "image"; //$NON-NLS-1$
-
-    public static final String TAG_LAUNCHER = "launcher"; //$NON-NLS-1$
-
-    public static final String TAG_PLUGIN = "plugin"; //$NON-NLS-1$
-
-    /** deprecated - use TAG_OPEN_MODE */
-    public static final String TAG_INTERNAL = "internal"; //$NON-NLS-1$
-
-    /** deprecated - use TAG_OPEN_MODE */
-    public static final String TAG_OPEN_IN_PLACE = "open_in_place"; //$NON-NLS-1$
-
-    public static final String TAG_PROGRAM_NAME = "program_name"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEWS = "fastViews"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_BAR = "fastViewBar"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_BARS = "fastViewBars"; //$NON-NLS-1$
-
-    public static final String TAG_GLOBAL_FAST_VIEWS = "globalFastViews"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_GROUPS = "fastGroups"; //$NON-NLS-1$
-
-    public static final String TAG_FIXED = "fixed";//$NON-NLS-1$
-
-    public static final String TAG_CLOSEABLE = "closeable";//$NON-NLS-1$
-
-    public static final String TAG_MOVEABLE = "moveable";//$NON-NLS-1$
-
-    public static final String TAG_APPEARANCE = "appearance"; //$NON-NLS-1$
-
-    public static final String TAG_PRESENTATION = "presentation"; //$NON-NLS-1$
-
-    public static final String TAG_STANDALONE = "standalone";//$NON-NLS-1$
-
-    public static final String TAG_SHOW_TITLE = "showTitle";//$NON-NLS-1$
-
-    public static final String TAG_VIEW_STATE = "viewState"; //$NON-NLS-1$
-
-    public static final String TAG_SINGLETON = "singleton"; //$NON-NLS-1$
-
-    public static final String TAG_EDITOR_REUSE_THRESHOLD = "editorReuseThreshold"; //$NON-NLS-1$
-
-    public static final String TAG_PERSISTABLE = "persistable"; //$NON-NLS-1$
-
-    public static final String TAG_MRU_LIST = "mruList"; //$NON-NLS-1$
-
-    public static final String TAG_PERSPECTIVE_HISTORY = "perspHistory"; //$NON-NLS-1$	
-
-    public static final String TAG_WORKING_SET_MANAGER = "workingSetManager"; //$NON-NLS-1$		
-
-    public static final String TAG_WORKING_SETS = "workingSets"; //$NON-NLS-1$	
-
-    public static final String TAG_WORKING_SET = "workingSet"; //$NON-NLS-1$		
-
-    public static final String TAG_ITEM = "item"; //$NON-NLS-1$			
-
-    public static final String TAG_EDIT_PAGE_ID = "editPageId"; //$NON-NLS-1$
-
-    public static final String TAG_COOLBAR_LAYOUT = "coolbarLayout"; //$NON-NLS-1$
-
-    public static final String TAG_ITEM_SIZE = "itemSize"; //$NON-NLS-1$
-
-    public static final String TAG_ITEM_X = "x"; //$NON-NLS-1$
-
-    public static final String TAG_ITEM_Y = "y"; //$NON-NLS-1$
-
-    public static final String TAG_ITEM_TYPE = "itemType"; //$NON-NLS-1$
-
-    public static final String TAG_TYPE_SEPARATOR = "typeSeparator"; //$NON-NLS-1$
-
-    public static final String TAG_TYPE_GROUPMARKER = "typeGroupMarker"; //$NON-NLS-1$
-
-    public static final String TAG_TYPE_TOOLBARCONTRIBUTION = "typeToolBarContribution"; //$NON-NLS-1$
-
-    public static final String TAG_TYPE_PLACEHOLDER = "typePlaceholder"; //$NON-NLS-1$
-
-    public static final String TAG_COOLITEM = "coolItem"; //$NON-NLS-1$
-
-    public static final String TAG_INDEX = "index"; //$NON-NLS-1$
-
-    public static final String TAG_PINNED = "pinned"; //$NON-NLS-1$
-
-    public static final String TAG_PATH = "path";//$NON-NLS-1$
-
-    public static final String TAG_TOOLTIP = "tooltip";//$NON-NLS-1$
-
-    public static final String TAG_VIEWS = "views";//$NON-NLS-1$
-
-    public static final String TAG_POSITION = "position";//$NON-NLS-1$
-
-    public static final String TAG_NAVIGATION_HISTORY = "navigationHistory";//$NON-NLS-1$
-    
-    public static final String TAG_STICKY_STATE = "stickyState"; //$NON-NLS-1$
-
-    public static final String TAG_ACTIVE = "active";//$NON-NLS-1$
-
-    public static final String TAG_REMOVED = "removed";//$NON-NLS-1$
-
-    public static final String TAG_HISTORY_LABEL = "historyLabel";//$NON-NLS-1$
-
-    public static final String TAG_LOCKED = "locked";//$NON-NLS-1$
-
-    public static final String TAG_OPEN_MODE = "openMode"; //$NON-NLS-1$
-
-    public static final String TAG_STARTUP = "startup"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_SIDE = "fastViewLocation"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_DATA = "fastViewData"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_ORIENTATION = "orientation"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_SEL_ID = "selectedTabId"; //$NON-NLS-1$
-
-    public static final String TAG_FAST_VIEW_STYLE = "style"; //$NON-NLS-1$
-
-    public static final String TAG_THEME = "theme";//$NON-NLS-1$	
-
-    public static final String TAG_VIEW_LAYOUT_REC = "viewLayoutRec"; //$NON-NLS-1$
-
-    public static final String TAG_PERSPECTIVE_BAR = "perspectiveBar"; //$NON-NLS-1$
-
-    public static final String TAG_TRIM = "trimLayout"; //$NON-NLS-1$
-    
-    public static final String TAG_TRIM_AREA = "trimArea"; //$NON-NLS-1$
-        
-    public static final String TAG_TRIM_ITEM = "trimItem"; //$NON-NLS-1$
-
-    //Fonts
-    public static final String SMALL_FONT = "org.eclipse.ui.smallFont"; //$NON-NLS-1$
-
-    //Colors
-    public static final String COLOR_HIGHLIGHT = "org.eclipse.ui.highlight"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java
deleted file mode 100644
index 62ba3f3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchGraphicConstants.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * This class defines constants for looking up resources that are available
- * only within the Eclipse UI and Eclipse UI Standard Components projects.
- */
-public interface IWorkbenchGraphicConstants {
-	
-	public final static String IMG_DTOOL_SHOW_SUPPORT = "IMG_DTOOL_SHOW_SUPPORT";  //$NON-NLS-1$
-
-    public final static String IMG_ETOOL_IMPORT_WIZ = "IMG_ETOOL_IMPORT_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_ETOOL_EXPORT_WIZ = "IMG_ETOOL_EXPORT_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_ETOOL_NEW_PAGE = "IMG_ETOOL_NEW_PAGE"; //$NON-NLS-1$
-
-    public final static String IMG_ETOOL_PIN_EDITOR = "IMG_ETOOL_PIN_EDITOR"; //$NON-NLS-1$
-
-    public final static String IMG_ETOOL_PIN_EDITOR_DISABLED = "IMG_ETOOL_PIN_EDITOR_DISABLED"; //$NON-NLS-1$
-
-    public final static String IMG_ETOOL_HELP_CONTENTS = "IMG_ETOOL_HELP_CONTENTS"; //$NON-NLS-1$
-    
-    public final static String IMG_ETOOL_HELP_SEARCH = "IMG_ETOOL_HELP_SEARCH"; //$NON-NLS-1$
-    
-    
-    //Fast view enabled and disabled icons
-    public final static String IMG_ETOOL_NEW_FASTVIEW = "IMG_ETOOL_NEW_FASTVIEW"; //$NON-NLS-1$
-    public final static String IMG_DTOOL_NEW_FASTVIEW = "IMG_DTOOL_NEW_FASTVIEW"; //$NON-NLS-1$
-
-    // TrimStack buttons
-    public final static String IMG_ETOOL_RESTORE_TRIMPART = "IMG_ETOOL_RESTORE_TRIMPART"; //$NON-NLS-1$
-    public final static String IMG_ETOOL_EDITOR_TRIMPART = "IMG_ETOOL_EDITOR_TRIMPART"; //$NON-NLS-1$
-    
-    // local toolbars
-    
-    public final static String IMG_LCL_CLOSE_VIEW = "IMG_LCL_CLOSE_VIEW"; //$NON-NLS-1$
-
-    public final static String IMG_LCL_PIN_VIEW = "IMG_LCL_PIN_VIEW"; //$NON-NLS-1$
-
-    public final static String IMG_LCL_MIN_VIEW = "IMG_LCL_MIN_VIEW"; //$NON-NLS-1$
-
-    public final static String IMG_LCL_RENDERED_VIEW_MENU = "IMG_LCL_RENDERED_VIEW_MENU"; //$NON-NLS-1$
-    
-    public final static String IMG_LCL_VIEW_MENU = "IMG_LCL_VIEW_MENU"; //$NON-NLS-1$
-
-    public final static String IMG_LCL_SELECTED_MODE = "IMG_LCL_SELECTED_MODE"; //$NON-NLS-1$
-
-    public final static String IMG_LCL_SHOWCHILD_MODE = "IMG_LCL_SHOWCHILD_MODE"; //$NON-NLS-1$
-
-    public final static String IMG_LCL_SHOWSYNC_RN = "IMG_LCL_SHOWSYNC_RN"; //$NON-NLS-1$
-
-    public static final String IMG_LCL_CLOSE_VIEW_THIN = "IMG_LCL_CLOSE_VIEW_THIN"; //$NON-NLS-1$
-
-    public static final String IMG_LCL_MIN_VIEW_THIN = "IMG_LCL_MIN_VIEW_THIN"; //$NON-NLS-1$
-    
-    public static final String IMG_LCL_MAX_VIEW_THIN = "IMG_LCL_MAX_VIEW_THIN"; //$NON-NLS-1$
-    
-    public static final String IMG_LCL_RESTORE_VIEW_THIN = "IMG_LCL_RESTORE_VIEW_THIN"; //$NON-NLS-1$
-    
-    public static final String IMG_LCL_SHOW_TOOLBAR_THIN = "IMG_LCL_SHOW_TOOLBAR_THIN"; //$NON-NLS-1$
-    
-    public static final String IMG_LCL_HIDE_TOOLBAR_THIN = "IMG_LCL_HIDE_TOOLBAR_THIN"; //$NON-NLS-1$
-    
-    public static final String IMG_LCL_VIEW_MENU_THIN = "IMG_LCL_VIEW_MENU_THIN"; //$NON-NLS-1$
-    
-    //wizard images
-    public final static String IMG_WIZBAN_NEW_WIZ = "IMG_WIZBAN_NEW_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_WIZBAN_EXPORT_WIZ = "IMG_WIZBAN_EXPORT_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_WIZBAN_IMPORT_WIZ = "IMG_WIZBAN_IMPORT_WIZ"; //$NON-NLS-1$
-    
-    public final static String IMG_WIZBAN_EXPORT_PREF_WIZ = "IMG_WIZBAN_EXPORT_PREF_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_WIZBAN_IMPORT_PREF_WIZ = "IMG_WIZBAN_IMPORT_PREF_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_WIZBAN_WORKINGSET_WIZ = "IMG_WIZBAN_WORKINGSET_WIZ"; //$NON-NLS-1$
-
-    public final static String IMG_VIEW_DEFAULTVIEW_MISC = "IMG_VIEW_DEFAULTVIEW_MISC"; //$NON-NLS-1$
-
-    // part direct manipulation objects
-    public final static String IMG_OBJS_DND_LEFT_SOURCE = "IMG_OBJS_DND_LEFT_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_LEFT_MASK = "IMG_OBJS_DND_LEFT_MASK"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_RIGHT_SOURCE = "IMG_OBJS_DND_RIGHT_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_RIGHT_MASK = "IMG_OBJS_DND_RIGHT_MASK"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_TOP_SOURCE = "IMG_OBJS_DND_TOP_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_TOP_MASK = "IMG_OBJS_DND_TOP_MASK"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_BOTTOM_SOURCE = "IMG_OBJS_DND_BOTTOM_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_BOTTOM_MASK = "IMG_OBJS_DND_BOTTOM_MASK"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_INVALID_SOURCE = "IMG_OBJS_DND_INVALID_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_INVALID_MASK = "IMG_OBJS_DND_INVALID_MASK"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_STACK_SOURCE = "IMG_OBJS_DND_STACK_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_STACK_MASK = "IMG_OBJS_DND_STACK_MASK"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_OFFSCREEN_SOURCE = "IMG_OBJS_DND_OFFSCREEN_SOURCE"; //$NON-NLS-1$
-
-    public final static String IMG_OBJS_DND_OFFSCREEN_MASK = "IMG_OBJS_DND_OFFSCREEN_MASK"; //$NON-NLS-1$
-
-    public static final String IMG_OBJS_DND_TOFASTVIEW_SOURCE = "IMG_OBJS_DND_TOFASTVIEW_SOURCE"; //$NON-NLS-1$
-
-    public static final String IMG_OBJS_DND_TOFASTVIEW_MASK = "IMG_OBJS_DND_TOFASTVIEW_MASK"; //$NON-NLS-1$    
-    
-    /**
-     * Identifies an activity category.
-     * 
-     * @since 3.0
-     */
-    public static final String IMG_OBJ_ACTIVITY_CATEGORY = "IMG_OBJ_ACTIVITY_CATEGORY"; //$NON-NLS-1$
-
-    /**
-     * Identifies an activity.
-     * 
-     * @since 3.0
-     */
-    public static final String IMG_OBJ_ACTIVITY = "IMG_OBJ_ACTIVITY"; //$NON-NLS-1$
-
-    /**
-     * Identifies a font.
-     * 
-     * @since 3.0
-     */
-    public static final String IMG_OBJ_FONT = "IMG_OBJ_FONT"; //$NON-NLS-1$
-
-    /**
-     * Identifies a theme category.
-     * 
-     * @since 3.0
-     */
-    public static final String IMG_OBJ_THEME_CATEGORY = "IMG_OBJ_THEME_CATEGORY"; //$NON-NLS-1$
-    
-    /**
-     * Generic working set icon.
-     * 
-     * @since 3.2
-     */
-    public static final String IMG_OBJ_WORKING_SETS = "IMG_OBJ_WORKING_SETS"; //$NON-NLS-1$
-    
-    /**
-     * Separator icon for selection dialogs.
-     */
-    public static final String IMG_OBJ_SEPARATOR = "IMG_OBJ_SEPARATOR"; //$NON-NLS-1$
-    
-    /** 
-     * Default icon for Quick Access nodes.
-     */
-    public static final String IMG_OBJ_NODE = "IMG_OBJ_NODE"; //$NON-NLS-1$
-    
-    /** 
-     * Default icon for Quick Access elements.
-     */
-    public static final String IMG_OBJ_ELEMENT = "IMG_OBJ_ELEMENT"; //$NON-NLS-1$
-
-    /**
-     * Icon for signed objects (such as bundles).
-     * 
-     * @since 3.3
-     */
-	public static final String IMG_OBJ_SIGNED_YES = "IMG_OBJ_SIGNED_YES"; //$NON-NLS-1$
-
-	/**
-     * Icon for unsigned objects (such as bundles).
-     * 
-     * @since 3.3
-     */
-	public static final String IMG_OBJ_SIGNED_NO = "IMG_OBJ_SIGNED_NO"; //$NON-NLS-1$
-
-	/**
-     * Icon for objects whos signing state is not known (such as bundles).
-     * 
-     * @since 3.3
-     */
-	public static final String IMG_OBJ_SIGNED_UNKNOWN = "IMG_OBJ_SIGNED_UNKNOWN"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
deleted file mode 100644
index bdfd288..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchHelpContextIds.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 95292 - [Intro] 
- *     		Help > Welcome missing F1 context
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Help context ids for the workbench.
- * <p>
- * This interface contains constants only; it is not intended to be implemented
- * or extended.
- * </p>
- * 
- * @issue this class has been xcloned to org.eclipse.ui.internal.ide package;
- *        remove all IDE-specific constants from here
- */
-public interface IWorkbenchHelpContextIds {
-	public static final String PREFIX = PlatformUI.PLUGIN_ID + "."; //$NON-NLS-1$
-
-	// Missing context help
-	public static final String MISSING = PREFIX + "missing"; //$NON-NLS-1$
-
-	// Actions
-
-	public static final String DOCK_ON_PERSPECTIVE_ACTION = PREFIX
-			+ "dock_on_perspective_action_context"; //$NON-NLS-1$
-
-	public static final String SHOW_TEXT_PERSPECTIVE_ACTION = PREFIX
-			+ "show_text_perspective_action_context"; //$NON-NLS-1$
-
-	public static final String PROPERTY_DIALOG_ACTION = PREFIX
-			+ "property_dialog_action_context"; //$NON-NLS-1$
-
-	public static final String NEW_ACTION = PREFIX + "new_action_context"; //$NON-NLS-1$
-
-	public static final String IMPORT_ACTION = PREFIX + "import_action_context"; //$NON-NLS-1$
-
-	public static final String EXPORT_ACTION = PREFIX + "export_action_context"; //$NON-NLS-1$
-
-	public static final String SAVE_PERSPECTIVE_ACTION = PREFIX
-			+ "save_perspective_action_context"; //$NON-NLS-1$
-
-	public static final String SAVE_AS_ACTION = PREFIX
-			+ "save_as_action_context"; //$NON-NLS-1$
-
-	public static final String SAVE_ALL_ACTION = PREFIX
-			+ "save_all_action_context"; //$NON-NLS-1$
-
-	public static final String SAVE_ACTION = PREFIX + "save_action_context"; //$NON-NLS-1$
-
-	public static final String ABOUT_ACTION = PREFIX + "about_action_context"; //$NON-NLS-1$
-
-	public static final String CLOSE_ALL_ACTION = PREFIX
-			+ "close_all_action_context"; //$NON-NLS-1$
-
-	public static final String CLOSE_OTHERS_ACTION = PREFIX
-			+ "close_others_action_context"; //$NON-NLS-1$
-
-	public static final String LOCK_TOOLBAR_ACTION = PREFIX
-			+ "lock_toolbar_action_context"; //$NON-NLS-1$
-
-	public static final String CLOSE_PAGE_ACTION = PREFIX
-			+ "close_page_action_context"; //$NON-NLS-1$
-
-	public static final String CLOSE_PART_ACTION = PREFIX
-			+ "close_part_action_context"; //$NON-NLS-1$
-
-	public static final String EDIT_ACTION_SETS_ACTION = PREFIX
-			+ "edit_action_sets_action_context"; //$NON-NLS-1$
-
-	public static final String DELETE_RETARGET_ACTION = PREFIX
-			+ "delete_retarget_action_context"; //$NON-NLS-1$
-
-	public static final String CLOSE_ALL_PAGES_ACTION = PREFIX
-			+ "close_all_pages_action_context"; //$NON-NLS-1$
-
-	public static final String OPEN_NEW_WINDOW_ACTION = PREFIX
-			+ "open_new_window_action_context"; //$NON-NLS-1$
-
-	public static final String OPEN_PREFERENCES_ACTION = PREFIX
-			+ "open_preferences_action_context"; //$NON-NLS-1$
-
-	public static final String QUIT_ACTION = PREFIX + "quit_action_context"; //$NON-NLS-1$
-
-	public static final String RESET_PERSPECTIVE_ACTION = PREFIX
-			+ "reset_perspective_action_context"; //$NON-NLS-1$
-
-	public static final String TOGGLE_EDITORS_VISIBILITY_ACTION = PREFIX
-			+ "target_editors_visibility_action_context"; //$NON-NLS-1$
-
-	public static final String SHOW_VIEW_ACTION = PREFIX
-			+ "show_view_action_context"; //$NON-NLS-1$
-
-	public static final String SHOW_VIEW_OTHER_ACTION = PREFIX
-			+ "show_view_other_action_context"; //$NON-NLS-1$
-
-	public static final String OPEN_PERSPECTIVE_ACTION = PREFIX
-			+ "open_perspective_action_context"; //$NON-NLS-1$
-
-	public static final String CLOSE_ALL_SAVED_ACTION = PREFIX
-			+ "close_all_saved_action_context"; //$NON-NLS-1$
-
-	public static final String SHOW_VIEW_MENU_ACTION = PREFIX
-			+ "show_view_menu_action_context"; //$NON-NLS-1$
-
-	public static final String WORKBENCH_EDITORS_ACTION = PREFIX
-			+ "workbench_editors_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_CUT_ACTION = PREFIX
-			+ "cell_cut_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_COPY_ACTION = PREFIX
-			+ "cell_copy_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_PASTE_ACTION = PREFIX
-			+ "cell_paste_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_DELETE_ACTION = PREFIX
-			+ "cell_delete_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_FIND_ACTION = PREFIX
-			+ "cell_find_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_SELECT_ALL_ACTION = PREFIX
-			+ "cell_select_all_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_UNDO_ACTION = PREFIX
-			+ "cell_undo_action_context"; //$NON-NLS-1$
-
-	public static final String CELL_REDO_ACTION = PREFIX
-			+ "cell_redo_action_context"; //$NON-NLS-1$
-
-	public static final String SHOW_PART_PANE_MENU_ACTION = PREFIX
-			+ "show_part_pane_menu_action_context"; //$NON-NLS-1$
-
-	public static final String CYCLE_PART_FORWARD_ACTION = PREFIX
-			+ "cycle_part_forward_action_context"; //$NON-NLS-1$
-
-	public static final String CYCLE_PART_BACKWARD_ACTION = PREFIX
-			+ "cycle_part_backward_action_context"; //$NON-NLS-1$
-
-	public static final String CYCLE_EDITOR_FORWARD_ACTION = PREFIX
-			+ "cycle_editor_forward_action_context"; //$NON-NLS-1$
-
-	public static final String CYCLE_EDITOR_BACKWARD_ACTION = PREFIX
-			+ "cycle_editor_backward_action_context"; //$NON-NLS-1$
-
-	public static final String CYCLE_PERSPECTIVE_FORWARD_ACTION = PREFIX
-			+ "cycle_perspective_forward_action_context"; //$NON-NLS-1$
-
-	public static final String CYCLE_PERSPECTIVE_BACKWARD_ACTION = PREFIX
-			+ "cycle_perspective_backward_action_context"; //$NON-NLS-1$
-
-	public static final String ACTIVATE_EDITOR_ACTION = PREFIX
-			+ "activate_editor_action_context"; //$NON-NLS-1$
-
-	public static final String MAXIMIZE_PART_ACTION = PREFIX
-			+ "maximize_part_action_context"; //$NON-NLS-1$
-
-	public static final String MINIMIZE_PART_ACTION = PREFIX
-			+ "minimize_part_action_context"; //$NON-NLS-1$
-
-	public static final String SELECT_WORKING_SET_ACTION = PREFIX
-			+ "select_working_set_action_context"; //$NON-NLS-1$
-
-	public static final String CLEAR_WORKING_SET_ACTION = PREFIX
-			+ "clear_working_set_action_context"; //$NON-NLS-1$
-
-	public static final String EDIT_WORKING_SET_ACTION = PREFIX
-			+ "edit_working_set_action_context"; //$NON-NLS-1$
-
-	public static final String SHOW_IN_ACTION = PREFIX
-			+ "show_in_action_context"; //$NON-NLS-1$
-
-	public static final String NAVIGATION_HISTORY_FORWARD = PREFIX
-			+ "navigation_history_forward"; //$NON-NLS-1$
-
-	public static final String NAVIGATION_HISTORY_BACKWARD = PREFIX
-			+ "navigation_history_backward"; //$NON-NLS-1$
-
-	public static final String HELP_CONTENTS_ACTION = PREFIX
-			+ "help_contents_action_context"; //$NON-NLS-1$
-
-	public static final String HELP_SEARCH_ACTION = PREFIX
-			+ "help_search_action_context"; //$NON-NLS-1$
-
-	public static final String DYNAMIC_HELP_ACTION = PREFIX
-			+ "dynamic_help_action_context"; //$NON-NLS-1$
-
-	public static final String INTRO_ACTION = PREFIX + "intro_action_context"; //$NON-NLS-1$
-
-	// // Dialogs
-	public static final String ABOUT_DIALOG = PREFIX + "about_dialog_context"; //$NON-NLS-1$
-
-	public static final String ABOUT_PLUGINS_DIALOG = PREFIX
-			+ "about_plugins_dialog_context"; //$NON-NLS-1$
-
-	public static final String ABOUT_FEATURES_PLUGINS_DIALOG = PREFIX
-			+ "about_features_plugins_dialog_context"; //$NON-NLS-1$
-
-	public static final String ABOUT_FEATURES_DIALOG = PREFIX
-			+ "about_features_dialog_context"; //$NON-NLS-1$
-
-	public static final String SYSTEM_SUMMARY_DIALOG = PREFIX
-			+ "system_summary_dialog_context"; //$NON-NLS-1$
-
-	public static final String ACTION_SET_SELECTION_DIALOG = PREFIX
-			+ "action_set_selection_dialog_context"; //$NON-NLS-1$
-
-	public static final String EDITOR_SELECTION_DIALOG = PREFIX
-			+ "editor_selection_dialog_context"; //$NON-NLS-1$
-
-	public static final String FILE_EXTENSION_DIALOG = PREFIX
-			+ "file_extension_dialog_context"; //$NON-NLS-1$
-
-	public static final String PREFERENCE_DIALOG = PREFIX
-			+ "preference_dialog_context"; //$NON-NLS-1$
-
-	public static final String PROBLEMS_VIEW = PREFIX
-			+ "problem_view_context";//$NON-NLS-1$
-
-	public static final String PROPERTY_DIALOG = PREFIX
-			+ "property_dialog_context"; //$NON-NLS-1$
-
-	public static final String SAVE_PERSPECTIVE_DIALOG = PREFIX
-			+ "save_perspective_dialog_context"; //$NON-NLS-1$
-
-	public static final String SELECT_PERSPECTIVE_DIALOG = PREFIX
-			+ "select_perspective_dialog_context"; //$NON-NLS-1$
-
-	public static final String SHOW_VIEW_DIALOG = PREFIX
-			+ "show_view_dialog_context"; //$NON-NLS-1$
-
-	public static final String TYPE_FILTERING_DIALOG = PREFIX
-			+ "type_filtering_dialog_context"; //$NON-NLS-1$
-
-	public static final String LIST_SELECTION_DIALOG = PREFIX
-			+ "list_selection_dialog_context"; //$NON-NLS-1$
-
-	public static final String YES_NO_CANCEL_LIST_SELECTION_DIALOG = PREFIX
-			+ "yes_no_cancel_list_selection_dialog_context"; //$NON-NLS-1$
-
-	public static final String WORKING_SET_SELECTION_DIALOG = PREFIX
-			+ "working_set_selection_dialog_context"; //$NON-NLS-1$
-
-	public static final String WORKBENCH_EDITORS_DIALOG = PREFIX
-			+ "workbench_editors_dialog"; //$NON-NLS-1$
-
-	// // Editors
-	public static final String FILE_EDITORS_PREFERENCE_PAGE = PREFIX
-			+ "file_editors_preference_page_context"; //$NON-NLS-1$
-
-	public static final String PERSPECTIVES_PREFERENCE_PAGE = PREFIX
-			+ "perspectives_preference_page_context"; //$NON-NLS-1$
-
-	public static final String VIEWS_PREFERENCE_PAGE = PREFIX
-			+ "views_preference_page_context"; //$NON-NLS-1$
-
-	public static final String FONTS_PREFERENCE_PAGE = PREFIX
-			+ "font_preference_page_context"; //$NON-NLS-1$
-
-	public static final String KEYS_PREFERENCE_PAGE = PREFIX
-			+ "keys_preference_page_context"; //$NON-NLS-1$
-
-	public static final String WORKBENCH_EDITOR_PREFERENCE_PAGE = PREFIX
-			+ "workbench_editor_preference_page_context"; //$NON-NLS-1$
-
-	public static final String CONTENT_TYPES_PREFERENCE_PAGE = PREFIX
-			+ "content_types_preference_page_context"; //$NON-NLS-1$
-
-	public static final String WORKBENCH_PREFERENCE_PAGE = PREFIX
-			+ "workbench_preference_page_context"; //$NON-NLS-1$
-
-	public static final String DECORATORS_PREFERENCE_PAGE = PREFIX
-			+ "decorators_preference_page_context"; //$NON-NLS-1$
-
-	public static final String STARTUP_PREFERENCE_PAGE = PREFIX
-			+ "startup_preference_page_context"; //$NON-NLS-1$
-
-	public static final String RESPONSIVE_UI = PREFIX + "responsive_ui_context"; //$NON-NLS-1$
-
-	// // Windows
-	public static final String DETACHED_WINDOW = PREFIX
-			+ "detached_window_context"; //$NON-NLS-1$
-
-	public static final String WORKBENCH_WINDOW = PREFIX
-			+ "workbench_window_context"; //$NON-NLS-1$
-
-	// // Wizard pages
-
-	public static final String NEW_WIZARD_SELECTION_WIZARD_PAGE = PREFIX
-			+ "new_wizard_selection_wizard_page_context"; //$NON-NLS-1$
-
-	public static final String EXPORT_WIZARD_SELECTION_WIZARD_PAGE = PREFIX
-			+ "export_wizard_selection_wizard_page_context"; //$NON-NLS-1$
-
-	public static final String IMPORT_WIZARD_SELECTION_WIZARD_PAGE = PREFIX
-			+ "import_wizard_selection_wizard_page_context"; //$NON-NLS-1$
-
-	public static final String WORKING_SET_TYPE_PAGE = PREFIX
-			+ "working_set_type_page"; //$NON-NLS-1$	
-
-	// Wizards
-	public static final String NEW_WIZARD = PREFIX + "new_wizard_context"; //$NON-NLS-1$
-
-	public static final String NEW_WIZARD_SHORTCUT = PREFIX
-			+ "new_wizard_shortcut_context"; //$NON-NLS-1$
-
-	public static final String IMPORT_WIZARD = PREFIX + "import_wizard_context"; //$NON-NLS-1$
-
-	public static final String EXPORT_WIZARD = PREFIX + "export_wizard_context"; //$NON-NLS-1$
-
-	public static final String WORKING_SET_NEW_WIZARD = PREFIX
-			+ "working_set_new_wizard_context"; //$NON-NLS-1$	
-
-	public static final String WORKING_SET_EDIT_WIZARD = PREFIX
-			+ "working_set_edit_wizard_context"; //$NON-NLS-1$	
-
-	public static final String CAPABILITY_PREFERENCE_PAGE = PREFIX
-			+ "capabilities_preference_page_context"; //$NON-NLS-1$
-	public static final String TOGGLE_COOLBAR_ACTION = PREFIX
-			+ "toggle_coolbar_action"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchThemeConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchThemeConstants.java
deleted file mode 100644
index 463211a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IWorkbenchThemeConstants.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * A source of color/font/theme data constants used throughout the workbench.
- * 
- * @since 3.0
- */
-public interface IWorkbenchThemeConstants {
-    public static final String TAB_TEXT_FONT = "org.eclipse.ui.workbench.TAB_TEXT_FONT"; //$NON-NLS-1$    
-
-    public static final String VIEW_MESSAGE_TEXT_FONT = "org.eclipse.ui.workbench.VIEW_MESSAGE_TEXT_FONT"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_TEXT_COLOR = "org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR"; //$NON-NLS-1$
-
-    public static final String ACTIVE_NOFOCUS_TAB_TEXT_COLOR = "org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR"; //$NON-NLS-1$
-
-    public static final String INACTIVE_TAB_TEXT_COLOR = "org.eclipse.ui.workbench.INACTIVE_TAB_TEXT_COLOR"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_BG_START = "org.eclipse.ui.workbench.ACTIVE_TAB_BG_START"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_BG_END = "org.eclipse.ui.workbench.ACTIVE_TAB_BG_END"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_HIGHLIGHT = "org.eclipse.ui.workbench.ACTIVE_TAB_HIGHLIGHT"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_HIGHLIGHT_START = "org.eclipse.ui.workbench.ACTIVE_TAB_HIGHLIGHT_START"; //$NON-NLS-1$
-
-    public static final String ACTIVE_NOFOCUS_TAB_BG_START = "org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START"; //$NON-NLS-1$
-
-    public static final String ACTIVE_NOFOCUS_TAB_BG_END = "org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END"; //$NON-NLS-1$    
-
-    public static final String INACTIVE_TAB_BG_START = "org.eclipse.ui.workbench.INACTIVE_TAB_BG_START"; //$NON-NLS-1$
-
-    public static final String INACTIVE_TAB_BG_END = "org.eclipse.ui.workbench.INACTIVE_TAB_BG_END"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_PERCENT = "org.eclipse.ui.workbench.ACTIVE_TAB_PERCENT"; //$NON-NLS-1$
-
-    public static final String ACTIVE_NOFOCUS_TAB_PERCENT = "org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_PERCENT"; //$NON-NLS-1$
-
-    public static final String INACTIVE_TAB_PERCENT = "org.eclipse.ui.workbench.INACTIVE_TAB_PERCENT"; //$NON-NLS-1$
-
-    public static final String ACTIVE_TAB_VERTICAL = "org.eclipse.ui.workbench.ACTIVE_TAB_VERTICAL"; //$NON-NLS-1$
-
-    public static final String ACTIVE_NOFOCUS_TAB_VERTICAL = "org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_VERTICAL"; //$NON-NLS-1$
-
-    public static final String INACTIVE_TAB_VERTICAL = "org.eclipse.ui.workbench.INACTIVE_TAB_VERTICAL"; //$NON-NLS-1$    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageAnimationFeedback.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageAnimationFeedback.java
deleted file mode 100644
index fee629d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageAnimationFeedback.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @since 3.3
- *
- */
-public class ImageAnimationFeedback extends DefaultAnimationFeedback {
-	private class ImageCanvas extends Canvas {
-		private Image image;
-		/**
-		 * @param parent
-		 * @param style
-		 */
-		public ImageCanvas(Composite parent, int style, Image image) {
-			super(parent, style);
-			this.image = image;
-			
-			addPaintListener(new PaintListener() {
-				public void paintControl(PaintEvent e) {
-					paintImage(e.gc);
-				}
-			});
-		}
-		/**
-		 * @param gc
-		 */
-		protected void paintImage(GC gc) {
-			gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, getBounds().width, getBounds().height);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.swt.widgets.Widget#dispose()
-		 */
-		public void dispose() {
-			super.dispose();
-			image.dispose();
-		}
-	}
-	
-	private Display display;
-	private Shell theShell;
-	
-	private List startRects = new ArrayList();
-	private List endRects = new ArrayList();
-	private List controls = new ArrayList();
-	
-	private Image backingStore;
-	
-	/**
-	 * Creates an animation effect where the interpolated rectangles are displayed using Canvas
-	 * controls that show an image of the bits that were originally occupied by the various
-	 * 'start' rectangles. 
-	 */
-	public ImageAnimationFeedback() {}
-
-    /**
-	 * @param parentShell
-	 */
-	public void initialize(Shell parentShell, Rectangle startRect, Rectangle endRect) {
-		display = parentShell.getDisplay();
-
-		Rectangle psRect = parentShell.getBounds();
-		theShell = new Shell(parentShell, SWT.NO_TRIM | SWT.ON_TOP);
-		theShell.setBounds(parentShell.getBounds());
-
-		addStartRect(startRect);
-		addEndRect(endRect);
-		
-		// Capture the background image		
-		backingStore = new Image(theShell.getDisplay(), psRect);
-		GC gc = new GC(display);
-    	gc.copyArea(backingStore, psRect.x, psRect.y);
-		gc.dispose();
-		
-		theShell.setBackgroundImage(backingStore);
-		theShell.setVisible(true);
-		display.update();
-	}
-	
-	public void addStartRect(Rectangle rect) {
-		if (rect != null) {
-			Rectangle start = Geometry.toControl(theShell, rect);
-			startRects.add(start);
-			
-			Image image = new Image(display, rect.width, rect.height);
-			GC gc = new GC(display);
-			gc.copyArea(image, rect.x, rect.y);
-			gc.dispose();
-			
-			ImageCanvas canvas = new ImageCanvas(theShell, SWT.BORDER | SWT.NO_BACKGROUND, image); 
-			controls.add(canvas);
-		}
-	}
-	
-	public void addEndRect(Rectangle rect) {
-		if (rect != null) {
-			Rectangle end = Geometry.toControl(theShell, rect);
-			endRects.add(end);
-		}
-	}
-	
-	public void renderStep(double amount) {
-		// Move the controls to the new interpolation position
-		Iterator startIter = startRects.iterator();
-		Iterator endIter = endRects.iterator();
-		Iterator ctrlIter = controls.iterator();
-		while (startIter.hasNext()) {
-			Rectangle start = (Rectangle) startIter.next();
-			Rectangle end = (Rectangle) endIter.next();
-			ImageCanvas canvas = (ImageCanvas) ctrlIter.next();
-
-			// Get the bounds of the interpolated rect
-			Rectangle curRect = RectangleAnimation.interpolate(start, end, amount);
-			canvas.setBounds(curRect);
-		}
-        
-        display.update();
-	}
-
-	public void jobInit() {
-	}
-
-	/**
-	 * 
-	 */
-	public void dispose() {
-		backingStore.dispose();
-		for (Iterator ctrlIter = controls.iterator(); ctrlIter.hasNext();) {
-			ImageCanvas canvas = (ImageCanvas) ctrlIter.next();
-			canvas.dispose();
-		}
-		
-		theShell.setVisible(false);
-		theShell.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageCycleFeedbackBase.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageCycleFeedbackBase.java
deleted file mode 100644
index 4a337dd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ImageCycleFeedbackBase.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Base class for Cyclic animations.
- * 
- * @since 3.3
- * 
- */
-public abstract class ImageCycleFeedbackBase extends AnimationFeedbackBase {
-	protected Image[] images;
-	protected Image stoppedImage;
-	private Image offScreenImage;
-	private GC offScreenImageGC;
-	private int imageDataIndex;
-	private Image image;
-	private ImageData imageData;
-	protected Display display;
-	protected Color background;
-
-	/**
-	 * @param parentShell
-	 */
-	public ImageCycleFeedbackBase(Shell parentShell) {
-		super(parentShell);
-		// TODO Auto-generated constructor stub
-	}
-
-	/**
-	 * 
-	 * @param parentShell
-	 * @param images :
-	 *            an array of images
-	 */
-	public ImageCycleFeedbackBase(Shell parentShell, Image[] images) {
-		super(parentShell);
-		this.images = images;
-	}
-
-	/**
-	 * Set the image during progress without caching.
-	 * 
-	 * @param image
-	 */
-	public abstract void showImage(Image image);
-
-	/**
-	 * Save initial Image which would be stoppedImage
-	 * 
-	 */
-	public abstract void saveStoppedImage();
-
-	/**
-	 * Set the stopped Image upon animation completion
-	 * 
-	 * @param image
-	 */
-	public abstract void setStoppedImage(Image image);
-
-	public void dispose() {
-		// TODO Auto-generated method stub
-		if (stoppedImage == null || stoppedImage.isDisposed())
-			return;
-		setStoppedImage(stoppedImage);
-
-		if (offScreenImageGC != null && !offScreenImageGC.isDisposed())
-			offScreenImageGC.dispose();
-
-		if (offScreenImage != null && !offScreenImage.isDisposed())
-			offScreenImage.dispose();
-	}
-
-	public boolean jobInit(AnimationEngine engine) {
-		return super.jobInit(engine);
-	}
-
-	public void renderStep(AnimationEngine engine) {
-		// TODO Auto-generated method stub
-		if (offScreenImage == null) {
-			offScreenImage = getOffscreenImage();
-		}
-
-		try {
-			imageDataIndex = (imageDataIndex + 1) % images.length;
-			image = images[imageDataIndex];
-			imageData = image.getImageData();
-
-			offScreenImageGC.drawImage(image, 0, 0, imageData.width,
-					imageData.height, imageData.x, imageData.y,
-					imageData.width, imageData.height);
-
-			final Image finalImage = image;
-
-			display.syncExec(new Runnable() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see java.lang.Runnable#run()
-				 */
-				public void run() {
-					showImage(finalImage);
-
-				}
-			});
-
-			/*
-			 * Sleep for the specified delay time (adding commonly-used
-			 * slow-down fudge factors).
-			 */
-			// try {
-			// Thread.sleep(30);
-			// } catch (InterruptedException e) {
-			// }
-			if (images == null)
-				return;
-		} catch (SWTException ex) {
-			IStatus status = StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-					ex);
-			StatusManager.getManager().handle(status);
-		}
-	}
-
-	private Image getOffscreenImage() {
-		saveStoppedImage();
-		imageDataIndex = 0;
-		image = images[imageDataIndex];
-		imageData = image.getImageData();
-		/*
-		 * Create an off-screen image to draw on, and fill it with the shell
-		 * background.
-		 */
-		offScreenImage = new Image(display, imageData.width, imageData.height);
-
-		offScreenImageGC = new GC(offScreenImage);
-		offScreenImageGC.setBackground(background);
-		offScreenImageGC.fillRectangle(0, 0, imageData.width, imageData.height);
-
-		/*
-		 * Create the first image and draw it on the off-screen image.
-		 */
-
-		offScreenImageGC.drawImage(image, 0, 0, imageData.width,
-				imageData.height, imageData.x, imageData.y, imageData.width,
-				imageData.height);
-
-		return offScreenImage;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntModel.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntModel.java
deleted file mode 100644
index 86990d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntModel.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * Represents a single integer that can send notifications when it changes.
- * IChangeListeners can be attached which will receive notifications whenever
- * the integer changes.
- */
-public class IntModel extends Model {
-    public IntModel(int initialValue) {
-        super(new Integer(initialValue));
-    }
-
-    /**
-     * Sets the value of the integer and notifies all
-     * change listeners except for the one that caused the change.
-     * 
-     * @param newValue the new value of the integer
-     */
-    public void set(int newValue, IChangeListener source) {
-        setState(new Integer(newValue), source);
-    }
-
-    /**
-     * Sets the value of the integer and notifies all change listeners
-     * of the change.
-     * 
-     * @param newValue the new value of the integer
-     */
-    public void set(int newValue) {
-        setState(new Integer(newValue), null);
-    }
-
-    /**
-     * Returns the value of the integer.
-     * 
-     * @return the value of the integer
-     */
-    public int get() {
-        return ((Integer) getState()).intValue();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalHandlerUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalHandlerUtil.java
deleted file mode 100644
index 0fd7dc6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalHandlerUtil.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.Collection;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Some common utilities for working with handlers and IEvaluationContexts in
- * Platform UI.
- * <p>
- * <b>Note</b>: this class should not be instantiated or extended by clients.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.3
- */
-public class InternalHandlerUtil {
-	/**
-	 * Extract the variable.
-	 * 
-	 * @param appContext
-	 *            The application context
-	 * @param name
-	 *            The variable name to extract.
-	 * @return The object from the application context, or <code>null</code>
-	 *         if it could not be found.
-	 */
-	public static Object getVariable(Object appContext, String name) {
-		if (appContext instanceof IEvaluationContext) {
-			return ((IEvaluationContext) appContext).getVariable(name);
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active contexts.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return a collection of String contextIds, or <code>null</code>.
-	 */
-	public static Collection getActiveContexts(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_CONTEXT_NAME);
-		if (o instanceof Collection) {
-			return (Collection) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active shell. Is not necessarily the active workbench window
-	 * shell.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the active shell, or <code>null</code>.
-	 */
-	public static Shell getActiveShell(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_SHELL_NAME);
-		if (o instanceof Shell) {
-			return (Shell) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active workbench window.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the active workbench window, or <code>null</code>.
-	 */
-	public static IWorkbenchWindow getActiveWorkbenchWindow(Object appContext) {
-		Object o = getVariable(appContext,
-				ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-		if (o instanceof IWorkbenchWindow) {
-			return (IWorkbenchWindow) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active editor.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the active editor, or <code>null</code>.
-	 */
-	public static IEditorPart getActiveEditor(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_EDITOR_NAME);
-		if (o instanceof IEditorPart) {
-			return (IEditorPart) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the part id of the active editor.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the part id of the active editor, or <code>null</code>.
-	 */
-	public static String getActiveEditorId(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_EDITOR_ID_NAME);
-		if (o instanceof String) {
-			return (String) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active part.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the active part, or <code>null</code>.
-	 */
-	public static IWorkbenchPart getActivePart(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_PART_NAME);
-		if (o instanceof IWorkbenchPart) {
-			return (IWorkbenchPart) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the part id of the active part.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the part id of the active part, or <code>null</code>.
-	 */
-	public static String getActivePartId(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_PART_ID_NAME);
-		if (o instanceof String) {
-			return (String) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the active part site.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the active part site, or <code>null</code>.
-	 */
-	public static IWorkbenchSite getActiveSite(Object appContext) {
-		Object o = getVariable(appContext, ISources.ACTIVE_SITE_NAME);
-		if (o instanceof IWorkbenchSite) {
-			return (IWorkbenchSite) o;
-		}
-		return null;
-	}
-
-	/**
-	 * Return the current selection.
-	 * 
-	 * @param appContext
-	 *            The execution appContext that contains the application context
-	 * @return the current selection, or <code>null</code>.
-	 */
-	public static ISelection getCurrentSelection(Object appContext) {
-		Object o = getVariable(appContext,
-				ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		if (o instanceof ISelection) {
-			return (ISelection) o;
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalSaveable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalSaveable.java
deleted file mode 100644
index 124ef0c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/InternalSaveable.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * @since 3.3
- * 
- */
-public class InternalSaveable {
-
-	private Job backgroundSaveJob;
-
-	/**
-	 * @return
-	 */
-	/* package */Job getBackgroundSaveJob() {
-		return backgroundSaveJob;
-	}
-
-	/**
-	 * @param savingInBackground
-	 *            The savingInBackground to set.
-	 */
-	/* package */void setBackgroundSaveJob(Job backgroundSaveJob) {
-		this.backgroundSaveJob = backgroundSaveJob;
-	}
-
-	/**
-	 * @return
-	 */
-	/* package */ boolean isSavingInBackground() {
-		Job saveJob = backgroundSaveJob;
-		if (saveJob == null) {
-			return false;
-		}
-		return (backgroundSaveJob.getState() & (Job.WAITING | Job.RUNNING)) != 0;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntroAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntroAction.java
deleted file mode 100644
index a0c15b2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/IntroAction.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 95292 - [Intro] 
- *     		Help > Welcome missing F1 context
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.intro.IntroDescriptor;
-import org.eclipse.ui.internal.intro.IntroMessages;
-
-/**
- * Action that will launch the intro in the given window.
- * 
- * @since 3.0
- */
-public class IntroAction extends Action implements
-        ActionFactory.IWorkbenchAction {
-
-    private IWorkbenchWindow workbenchWindow;
-
-    private IPageListener pageListener = new IPageListener() {
-
-        public void pageActivated(IWorkbenchPage page) {
-            //no-op
-        }
-
-        public void pageClosed(IWorkbenchPage page) {
-            setEnabled(workbenchWindow.getPages().length > 0);
-        }
-
-        public void pageOpened(IWorkbenchPage page) {
-            setEnabled(true);
-        }
-    };
-
-    /**
-     * @param window the window to bind the action to. 
-     */
-    public IntroAction(IWorkbenchWindow window) {
-        super(IntroMessages.Intro_action_text); 
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.INTRO_ACTION);
-        
-        IntroDescriptor introDescriptor = ((Workbench) workbenchWindow
-                .getWorkbench()).getIntroDescriptor();
-        String labelOverride = introDescriptor.getLabelOverride();
-        if (labelOverride != null)
-        	setText(labelOverride);
-        
-        setActionDefinitionId("org.eclipse.ui.help.quickStartAction"); //$NON-NLS-1$
-        
-        window.addPageListener(pageListener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction#dispose()
-     */
-    public void dispose() {
-        workbenchWindow.removePageListener(pageListener);
-        workbenchWindow = null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.Action#runWithEvent(org.eclipse.swt.widgets.Event)
-     */
-    public void runWithEvent(Event event) {        
-        IntroDescriptor introDescriptor = ((Workbench) workbenchWindow
-                .getWorkbench()).getIntroDescriptor();
-        if (introDescriptor == null) {
-            MessageDialog.openWarning(workbenchWindow.getShell(),
-                    IntroMessages.Intro_missing_product_title,
-                    IntroMessages.Intro_missing_product_message);
-        } else {
-			workbenchWindow.getWorkbench().getIntroManager().showIntro(
-                    workbenchWindow, false);
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IAction#getImageDescriptor()
-     */
-    public ImageDescriptor getImageDescriptor() {
-        IntroDescriptor introDescriptor = ((Workbench) workbenchWindow
-                .getWorkbench()).getIntroDescriptor();
-        if (introDescriptor == null) {
-			return null;
-		}
-        return introDescriptor.getImageDescriptor();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java
deleted file mode 100644
index dcf93cd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/JFaceUtil.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent;
-import org.eclipse.jface.internal.InternalPolicy;
-import org.eclipse.jface.preference.JFacePreferences;
-import org.eclipse.jface.util.StatusHandler;
-import org.eclipse.jface.util.ILogger;
-import org.eclipse.jface.util.ISafeRunnableRunner;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Utility class for setting up JFace for use by Eclipse.
- * 
- * @since 3.1
- */
-final class JFaceUtil {
-
-	private JFaceUtil() {
-		// prevents intantiation
-	}
-
-	/**
-	 * Initializes JFace for use by Eclipse.
-	 */
-	public static void initializeJFace() {
-		// Set the Platform to run all SafeRunnables
-		SafeRunnable.setRunner(new ISafeRunnableRunner() {
-			public void run(ISafeRunnable code) {
-				Platform.run(code);
-			}
-		});
-
-		// Pass all errors and warnings to the status handling facility
-		// and the rest to the main runtime log
-		Policy.setLog(new ILogger() {
-			public void log(IStatus status) {
-				if (status.getSeverity() == IStatus.WARNING
-						|| status.getSeverity() == IStatus.ERROR) {
-					StatusManager.getManager().handle(status);
-				} else {
-					WorkbenchPlugin.log(status);
-				}
-			}
-		});
-		
-		Policy.setStatusHandler(new StatusHandler() {
-			public void show(IStatus status, String title) {
-				StatusAdapter statusAdapter = new StatusAdapter(status);
-				statusAdapter.setProperty(StatusAdapter.TITLE_PROPERTY, title);
-				StatusManager.getManager().handle(statusAdapter, StatusManager.SHOW);
-			}
-		});
-
-		// Get all debug options from Platform
-		if ("true".equalsIgnoreCase(Platform.getDebugOption("/debug"))) { //$NON-NLS-1$ //$NON-NLS-2$
-			Policy.DEBUG_DIALOG_NO_PARENT = "true".equalsIgnoreCase(Platform.getDebugOption(Policy.JFACE + "/debug/dialog/noparent")); //$NON-NLS-1$ //$NON-NLS-2$
-			Policy.TRACE_ACTIONS = "true".equalsIgnoreCase(Platform.getDebugOption(Policy.JFACE + "/trace/actions")); //$NON-NLS-1$ //$NON-NLS-2$
-			Policy.TRACE_TOOLBAR = "true".equalsIgnoreCase(Platform.getDebugOption(Policy.JFACE + "/trace/toolbarDisposal")); //$NON-NLS-1$ //$NON-NLS-2$
-			InternalPolicy.DEBUG_LOG_REENTRANT_VIEWER_CALLS = "true".equalsIgnoreCase(Platform.getDebugOption(Policy.JFACE + "/debug/viewers/reentrantViewerCalls")); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * Adds a preference listener so that the JFace preference store is initialized
-	 * as soon as the workbench preference store becomes available.
-	 */
-	public static void initializeJFacePreferences() {
-		IEclipsePreferences rootNode = (IEclipsePreferences) Platform.getPreferencesService().getRootNode().node(InstanceScope.SCOPE);
-		final String workbenchName = WorkbenchPlugin.getDefault().getBundle().getSymbolicName();
-		
-		rootNode.addNodeChangeListener(new IEclipsePreferences.INodeChangeListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener#added(org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent)
-			 */
-			public void added(NodeChangeEvent event) {
-				if (!event.getChild().name().equals(workbenchName)) {
-					return;
-				}
-				((IEclipsePreferences) event.getChild()).addPreferenceChangeListener(PlatformUIPreferenceListener.getSingleton());
-
-			}
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener#removed(org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent)
-			 */
-			public void removed(NodeChangeEvent event) {
-				// Nothing to do here
-
-			}
-		});
-		
-		JFacePreferences.setPreferenceStore(WorkbenchPlugin.getDefault().getPreferenceStore());
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/KeyBindingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/KeyBindingService.java
deleted file mode 100644
index 92107c3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/KeyBindingService.java
+++ /dev/null
@@ -1,636 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.jface.action.IAction;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.INestableKeyBindingService;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.commands.ActionHandler;
-import org.eclipse.ui.commands.HandlerSubmission;
-import org.eclipse.ui.commands.IHandler;
-import org.eclipse.ui.commands.Priority;
-import org.eclipse.ui.contexts.EnabledSubmission;
-import org.eclipse.ui.internal.actions.CommandAction;
-import org.eclipse.ui.internal.handlers.CommandLegacyActionWrapper;
-
-/**
- * This service provides a nestable implementation of a key binding service.
- * This class is provided for backwards compatibility only, and might be removed
- * in the future. All of the functionality is the class can be duplicated by
- * using the commands and contexts API.
- * 
- * @since 2.0
- */
-public final class KeyBindingService implements INestableKeyBindingService {
-
-    /**
-     * The currently active nested service, if any. If there are no nested
-     * services or none of them are active, then this value is <code>null</code>.
-     */
-    private IKeyBindingService activeService = null;
-
-    /**
-     * Whether this key binding service has been disposed.  A disposed key
-     * binding service should not be used again.
-     */
-    private boolean disposed;
-
-    /**
-     * The set of context identifiers enabled in this key binding service (not
-     * counting any nested services). This set may be empty, but it is never
-     * <code>null</code>.
-     */
-    private Set enabledContextIds = Collections.EMPTY_SET;
-
-    /**
-     * The list of context submissions indicating the enabled state of the
-     * context. This does not include those from nested services. This list may
-     * be empty, but it is never <code>null</code>.
-     */
-    private List enabledSubmissions = new ArrayList();
-
-    /**
-     * The map of handler submissions, sorted by command identifiers. This does
-     * not include those from nested services. This map may be empty, but it is
-     * never <code>null</code>.
-     */
-    private Map handlerSubmissionsByCommandId = new HashMap();
-
-    /**
-     * The context submissions from the currently active nested service. This
-     * value is <code>null</code> if there is no currently active nested
-     * service.
-     */
-    private List nestedEnabledSubmissions = null;
-
-    /**
-     * The handler submissions from the currently active nested service. This
-     * value is <code>null</code> if there is no currently active handler
-     * service.
-     */
-    private List nestedHandlerSubmissions = null;
-
-    /**
-     * The map of workbench part sites to nested key binding services. This map
-     * may be empty, but is never <code>null</code>.
-     */
-    private final Map nestedServices = new HashMap();
-
-    /**
-     * The parent for this key binding service; <code>null</code> if there is
-     * no parent. If there is a parent, then this means that it should not do a
-     * "live" update of its contexts or handlers, but should make a call to the
-     * parent instead.
-     */
-    private final KeyBindingService parent;
-
-    /**
-     * The site within the workbench at which this service is provided. This
-     * value should not be <code>null</code>.
-     */
-    private IWorkbenchPartSite workbenchPartSite;
-
-    /**
-     * Constructs a new instance of <code>KeyBindingService</code> on a given
-     * workbench site. This instance is not nested.
-     * 
-     * @param workbenchPartSite
-     *            The site for which this service will be responsible; should
-     *            not be <code>null</code>.
-     */
-    public KeyBindingService(IWorkbenchPartSite workbenchPartSite) {
-        this(workbenchPartSite, null);
-    }
-
-    /**
-     * Constructs a new instance of <code>KeyBindingService</code> on a given
-     * workbench site.
-     * 
-     * @param workbenchPartSite
-     *            The site for which this service will be responsible; should
-     *            not be <code>null</code>.
-     * @param parent
-     *            The parent key binding service, if any; <code>null</code> if
-     *            none.
-     */
-    KeyBindingService(IWorkbenchPartSite workbenchPartSite,
-            KeyBindingService parent) {
-        this.workbenchPartSite = workbenchPartSite;
-        this.parent = parent;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.INestableKeyBindingService#activateKeyBindingService(org.eclipse.ui.IWorkbenchSite)
-     */
-    public boolean activateKeyBindingService(IWorkbenchSite nestedSite) {
-        if (disposed) {
-			return false;
-		}
-
-        // Check if we should do a deactivation.
-        if (nestedSite == null) {
-            // We should do a deactivation, if there is one active.
-            if (activeService == null) {
-                // There is no active service. Do no work.
-                return false;
-            }
-            // Deactivate the currently active nested service.
-            deactivateNestedService();
-            return true;
-        }
-
-        // Attempt to activate a service.
-        final IKeyBindingService service = (IKeyBindingService) nestedServices
-                .get(nestedSite);
-        
-        if (service == activeService) {
-            // The service is already active, or already null
-            return false;
-        }
-
-        deactivateNestedService();
-        if (service!=null) {
-        	activateNestedService(service);
-        }
-        return true;
-    }
-
-    /**
-     * Activates the given service without worrying about the currently active
-     * service. This goes through the work of adding all of the nested context
-     * ids as enabled submissions.
-     * 
-     * @param service
-     *            The service to become active; if <code>null</code>, then
-     *            the reference to the active service is set to
-     *            <code>null</code> but nothing else happens.
-     */
-    private final void activateNestedService(final IKeyBindingService service) {
-        if (disposed) {
-			return;
-		}
-
-        /*
-         * If I have a parent, and I'm the active service, then deactivate so
-         * that I can make changes.
-         */
-        boolean active = false;
-        boolean haveParent = (parent != null);
-        if (haveParent) {
-            active = (parent.activeService == this);
-            if (active) {
-                parent.deactivateNestedService();
-            }
-        }
-
-        // Update the active service.
-        activeService = service;
-
-        // Check to see that the service isn't null.
-        if (service == null) {
-            return;
-        }
-
-        if (haveParent) {
-            if (active) {
-                parent.activateNestedService(this);
-            }
-
-        } else if (activeService instanceof KeyBindingService) {
-            // I have no parent, so I can make the changes myself.
-            final KeyBindingService nestedService = (KeyBindingService) activeService;
-
-            // Update the contexts.
-            nestedEnabledSubmissions = nestedService.getEnabledSubmissions();
-            normalizeSites(nestedEnabledSubmissions);
-            Workbench.getInstance().getContextSupport().addEnabledSubmissions(
-                    nestedEnabledSubmissions);
-
-            // Update the handlers.
-            nestedHandlerSubmissions = nestedService.getHandlerSubmissions();
-            normalizeSites(nestedHandlerSubmissions);
-            Workbench.getInstance().getCommandSupport().addHandlerSubmissions(
-                    nestedHandlerSubmissions);
-        }
-    }
-
-    /**
-     * Deactives the currently active service. This nulls out the reference, and
-     * removes all the enabled submissions for the nested service.
-     */
-    private final void deactivateNestedService() {
-        if (disposed) {
-			return;
-		}
-
-        // Don't do anything if there is no active service.
-        if (activeService == null) {
-            return;
-        }
-
-        // Check to see if there is a parent.
-        boolean active = false;
-        if (parent != null) {
-            // Check if I'm the active service.
-            if (parent.activeService == this) {
-                active = true;
-                // Deactivate myself so I can make changes.
-                parent.deactivateNestedService();
-            }
-
-        } else if (activeService instanceof KeyBindingService) {
-            // Remove all the nested context ids.
-            Workbench.getInstance().getContextSupport()
-                    .removeEnabledSubmissions(nestedEnabledSubmissions);
-
-            /*
-             * Remove all of the nested handler submissions. The handlers here
-             * weren't created by this instance (but by the nest instance), and
-             * hence can't be disposed here.
-             */
-            Workbench.getInstance().getCommandSupport()
-                    .removeHandlerSubmissions(nestedHandlerSubmissions);
-
-        }
-
-        // Clear our reference to the active service.
-        activeService = null;
-
-        // If necessary, let my parent know that changes have occurred.
-        if (active) {
-            parent.activateNestedService(this);
-        }
-    }
-
-    /**
-     * Disposes this key binding service. This clears out all of the submissions
-     * held by this service, and its nested services.
-     */
-    public void dispose() {
-        if (!disposed) {
-            deactivateNestedService();
-            disposed = true;
-
-            Workbench
-                    .getInstance()
-                    .getContextSupport()
-                    .removeEnabledSubmissions(new ArrayList(enabledSubmissions));
-            enabledSubmissions.clear();
-
-            /*
-             * Each removed handler submission, must dispose its corresponding
-             * handler -- as these handlers only exist inside of this class.
-             */
-            final List submissions = new ArrayList(
-                    handlerSubmissionsByCommandId.values());
-            final Iterator submissionItr = submissions.iterator();
-            while (submissionItr.hasNext()) {
-                ((HandlerSubmission) submissionItr.next()).getHandler()
-                        .dispose();
-            }
-            Workbench.getInstance().getCommandSupport()
-                    .removeHandlerSubmissions(submissions);
-            handlerSubmissionsByCommandId.clear();
-
-            for (Iterator iterator = nestedServices.values().iterator(); iterator
-                    .hasNext();) {
-                KeyBindingService keyBindingService = (KeyBindingService) iterator
-                        .next();
-                keyBindingService.dispose();
-            }
-
-            nestedEnabledSubmissions = null;
-            nestedHandlerSubmissions = null;
-            nestedServices.clear();
-        }
-    }
-
-    /**
-     * Gets a copy of all the enabled submissions in the nesting chain.
-     * 
-     * @return All of the nested enabled submissions -- including the ones from
-     *         this service. This list may be empty, but is never
-     *         <code>null</code>.
-     */
-    private final List getEnabledSubmissions() {
-        if (disposed) {
-			return null;
-		}
-
-        final List submissions = new ArrayList(enabledSubmissions);
-        if (activeService instanceof KeyBindingService) {
-            final KeyBindingService nestedService = (KeyBindingService) activeService;
-            submissions.addAll(nestedService.getEnabledSubmissions());
-        }
-        return submissions;
-    }
-
-    /**
-     * Gets a copy of all the handler submissions in the nesting chain.
-     * 
-     * @return All of the nested handler submissions -- including the ones from
-     *         this service. This list may be empty, but is never
-     *         <code>null</code>.
-     */
-    private final List getHandlerSubmissions() {
-        if (disposed) {
-			return null;
-		}
-
-        final List submissions = new ArrayList(handlerSubmissionsByCommandId
-                .values());
-        if (activeService instanceof KeyBindingService) {
-            final KeyBindingService nestedService = (KeyBindingService) activeService;
-            submissions.addAll(nestedService.getHandlerSubmissions());
-        }
-        return submissions;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.INestableKeyBindingService#getKeyBindingService(org.eclipse.ui.IWorkbenchSite)
-     */
-    public IKeyBindingService getKeyBindingService(IWorkbenchSite nestedSite) {
-        if (disposed) {
-			return null;
-		}
-
-        if (nestedSite == null) {
-            return null;
-        }
-
-        IKeyBindingService service = (IKeyBindingService) nestedServices
-                .get(nestedSite);
-        if (service == null) {
-            // TODO the INestedKeyBindingService API should be based on
-            // IWorkbenchPartSite..
-            if (nestedSite instanceof IWorkbenchPartSite) {
-				service = new KeyBindingService(
-                        (IWorkbenchPartSite) nestedSite, this);
-			} else {
-				service = new KeyBindingService(null, this);
-			}
-
-            nestedServices.put(nestedSite, service);
-        }
-
-        return service;
-    }
-
-    public String[] getScopes() {
-        if (disposed) {
-			return null;
-		}
-
-        // Get the nested scopes, if any.
-        final String[] nestedScopes;
-        if (activeService == null) {
-            nestedScopes = null;
-        } else {
-            nestedScopes = activeService.getScopes();
-        }
-
-        // Build the list of active scopes
-        final Set activeScopes = new HashSet();
-        activeScopes.addAll(enabledContextIds);
-        if (nestedScopes != null) {
-            for (int i = 0; i < nestedScopes.length; i++) {
-                activeScopes.add(nestedScopes[i]);
-            }
-        }
-
-        return (String[]) activeScopes.toArray(new String[activeScopes.size()]);
-    }
-
-    /**
-     * Replaces the active workbench site with this service's active workbench
-     * site. This ensures that the context manager will recognize the context as
-     * active. Note: this method modifies the list in place; it is
-     * <em>destructive</em>.
-     * 
-     * @param submissionsToModify
-     *            The submissions list to modify; must not be <code>null</code>,
-     *            but may be empty.
-     */
-    private final void normalizeSites(final List submissionsToModify) {
-        if (disposed) {
-			return;
-		}
-
-        final int size = submissionsToModify.size();
-        for (int i = 0; i < size; i++) {
-            final Object submission = submissionsToModify.get(i);
-            final Object replacementSubmission;
-
-            if (submission instanceof EnabledSubmission) {
-                final EnabledSubmission enabledSubmission = (EnabledSubmission) submission;
-                if (!workbenchPartSite.equals(enabledSubmission
-                        .getActiveWorkbenchPartSite())) {
-                    replacementSubmission = new EnabledSubmission(null,
-                            enabledSubmission.getActiveShell(),
-                            workbenchPartSite, enabledSubmission.getContextId());
-                } else {
-                    replacementSubmission = enabledSubmission;
-                }
-
-            } else if (submission instanceof HandlerSubmission) {
-                final HandlerSubmission handlerSubmission = (HandlerSubmission) submission;
-                if (!workbenchPartSite.equals(handlerSubmission
-                        .getActiveWorkbenchPartSite())) {
-                    replacementSubmission = new HandlerSubmission(null,
-                            handlerSubmission.getActiveShell(),
-                            workbenchPartSite,
-                            handlerSubmission.getCommandId(), handlerSubmission
-                                    .getHandler(), handlerSubmission
-                                    .getPriority());
-                } else {
-                    replacementSubmission = handlerSubmission;
-                }
-
-            } else {
-                replacementSubmission = submission;
-            }
-
-            submissionsToModify.set(i, replacementSubmission);
-        }
-
-    }
-
-    public void registerAction(IAction action) {
-        if (disposed) {
-			return;
-		}
-        
-        if (action instanceof CommandLegacyActionWrapper) {
-        	// this is a registration of a fake action for an already
-			// registered handler
-			WorkbenchPlugin
-					.log("Cannot register a CommandLegacyActionWrapper back into the system"); //$NON-NLS-1$
-			return;
-        }
-        
-        if (action instanceof CommandAction) {
-			// we unfortunately had to allow these out into the wild, but they
-			// still must not feed back into the system
-			return;
-        }
-
-        unregisterAction(action);
-        String commandId = action.getActionDefinitionId();
-        if (commandId != null) {
-            /*
-             * If I have a parent and I'm active, de-activate myself while
-             * making changes.
-             */
-            boolean active = false;
-            if ((parent != null) && (parent.activeService == this)) {
-                active = true;
-                parent.deactivateNestedService();
-            }
-
-            // Create the new submission
-            IHandler handler = new ActionHandler(action);
-            HandlerSubmission handlerSubmission = new HandlerSubmission(null,
-                    workbenchPartSite.getShell(), workbenchPartSite, commandId,
-                    handler, Priority.MEDIUM);
-            handlerSubmissionsByCommandId.put(commandId, handlerSubmission);
-
-            // Either submit the new handler myself, or simply re-activate.
-            if (parent != null) {
-                if (active) {
-                    parent.activateNestedService(this);
-                }
-            } else {
-                Workbench.getInstance().getCommandSupport()
-                        .addHandlerSubmission(handlerSubmission);
-            }
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.INestableKeyBindingService#removeKeyBindingService(org.eclipse.ui.IWorkbenchSite)
-     */
-    public boolean removeKeyBindingService(IWorkbenchSite nestedSite) {
-        if (disposed) {
-			return false;
-		}
-
-        final IKeyBindingService service = (IKeyBindingService) nestedServices
-                .remove(nestedSite);
-        if (service == null) {
-            return false;
-        }
-
-        if (service.equals(activeService)) {
-            deactivateNestedService();
-        }
-
-        return true;
-    }
-
-    public void setScopes(String[] scopes) {
-        if (disposed) {
-			return;
-		}
-
-        // Either deactivate myself, or remove the previous submissions myself.
-        boolean active = false;
-        if ((parent != null) && (parent.activeService == this)) {
-            active = true;
-            parent.deactivateNestedService();
-        } else {
-            Workbench.getInstance().getContextSupport()
-                    .removeEnabledSubmissions(enabledSubmissions);
-        }
-        enabledSubmissions.clear();
-
-        // Determine the new list of submissions.
-        enabledContextIds = new HashSet(Arrays.asList(scopes));
-        for (Iterator iterator = enabledContextIds.iterator(); iterator
-                .hasNext();) {
-            String contextId = (String) iterator.next();
-            enabledSubmissions.add(new EnabledSubmission(null, null,
-                    workbenchPartSite, contextId));
-        }
-
-        // Submit the new contexts myself, or simply re-active myself.
-        if (parent != null) {
-            if (active) {
-                parent.activateNestedService(this);
-            }
-        } else {
-            Workbench.getInstance().getContextSupport().addEnabledSubmissions(
-                    enabledSubmissions);
-        }
-    }
-
-    public void unregisterAction(IAction action) {
-        if (disposed) {
-			return;
-		}
-        
-        if (action instanceof CommandLegacyActionWrapper) {
-        	// this is a registration of a fake action for an already
-			// registered handler
-			WorkbenchPlugin
-					.log("Cannot unregister a CommandLegacyActionWrapper out of the system"); //$NON-NLS-1$
-			return;
-        }
-
-        String commandId = action.getActionDefinitionId();
-
-        if (commandId != null) {
-            // Deactivate this service while making changes.
-            boolean active = false;
-            if ((parent != null) && (parent.activeService == this)) {
-                active = true;
-                parent.deactivateNestedService();
-            }
-
-            // Remove the current submission, if any.
-            HandlerSubmission handlerSubmission = (HandlerSubmission) handlerSubmissionsByCommandId
-                    .remove(commandId);
-
-            /*
-             * Either activate this service again, or remove the submission
-             * myself.
-             */
-            if (parent != null) {
-                if (active) {
-                    parent.activateNestedService(this);
-                }
-            } else {
-            	if (handlerSubmission != null) {
-                    Workbench.getInstance().getCommandSupport()
-                            .removeHandlerSubmission(handlerSubmission);
-                    handlerSubmission.getHandler().dispose();
-                }
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutHelper.java
deleted file mode 100644
index ae34c17..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutHelper.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.IIdentifier;
-import org.eclipse.ui.activities.IIdentifierListener;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.activities.IdentifierEvent;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Helper methods that the internal layout classes (<code>PageLayout</code> and 
- * <code>FolderLayout</code>) utilize for activities support and view creation.
- * 
- * @since 3.0
- */
-class LayoutHelper {
-
-    /**
-     * Not intended to be instantiated.
-     */
-    private LayoutHelper() {
-        //no-op
-    }
-
-    /**
-     * Creates a series of listeners that will activate the provided view on the
-     * provided page layout when <code>IIdenfier</code> enablement changes. The 
-     * rules for this activation are as follows: <p>
-     * <ul>
-     * <li> if the identifier becomes enabled and the perspective of the page 
-     * layout is the currently active perspective in its window, then activate 
-     * the views immediately.
-     * <li> if the identifier becomes enabled and the perspective of the page 
-     * layout is not the currently active perspecitve in its window, then add an
-     * <code>IPerspectiveListener</code> to the window and activate the views 
-     * when the perspective becomes active. 
-     * 
-     * @param pageLayout <code>PageLayout</code>.
-     * @param viewId the view id to activate upon <code>IIdentifier</code> enablement.
-     */
-    public static final void addViewActivator(PageLayout pageLayout,
-            final String viewId) {
-        if (viewId == null) {
-			return;
-		}
-
-        ViewFactory viewFactory = pageLayout.getViewFactory();
-
-        final IWorkbenchPage partPage = viewFactory.getWorkbenchPage();
-        if (partPage == null) {
-			return;
-		}
-
-        final IPerspectiveDescriptor partPerspective = pageLayout
-                .getDescriptor();
-
-        IWorkbenchActivitySupport support = PlatformUI.getWorkbench()
-                .getActivitySupport();
-
-        IViewDescriptor descriptor = viewFactory.getViewRegistry().find(viewId);
-        if (!(descriptor instanceof IPluginContribution)) {
-			return;
-		}
-
-        IIdentifier identifier = support.getActivityManager().getIdentifier(
-                WorkbenchActivityHelper
-                        .createUnifiedId((IPluginContribution) descriptor));
-
-        identifier.addIdentifierListener(new IIdentifierListener() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.ui.activities.IIdentifierListener#identifierChanged(org.eclipse.ui.activities.IdentifierEvent)
-             */
-            public void identifierChanged(IdentifierEvent identifierEvent) {
-                if (identifierEvent.hasEnabledChanged()) {
-                    IIdentifier thisIdentifier = identifierEvent
-                            .getIdentifier();
-                    if (thisIdentifier.isEnabled()) {
-                        // show view
-                        thisIdentifier.removeIdentifierListener(this);
-                        IWorkbenchPage activePage = partPage
-                                .getWorkbenchWindow().getActivePage();
-                        if (partPage == activePage
-                                && partPerspective == activePage
-                                        .getPerspective()) {
-                            // show immediately.
-                            try {
-                                partPage.showView(viewId);
-                            } catch (PartInitException e) {
-                                WorkbenchPlugin.log(getClass(), "identifierChanged", e); //$NON-NLS-1$
-                            }
-                        } else { // show when the perspective becomes active							
-                            partPage.getWorkbenchWindow()
-                                    .addPerspectiveListener(
-                                            new IPerspectiveListener() {
-
-                                                /* (non-Javadoc)
-                                                 * @see org.eclipse.ui.IPerspectiveListener#perspectiveActivated(org.eclipse.ui.IWorkbenchPage, org.eclipse.ui.IPerspectiveDescriptor)
-                                                 */
-                                                public void perspectiveActivated(
-                                                        IWorkbenchPage page,
-                                                        IPerspectiveDescriptor newPerspective) {
-                                                    if (partPerspective == newPerspective) {
-                                                        partPage
-                                                                .getWorkbenchWindow()
-                                                                .removePerspectiveListener(
-                                                                        this);
-                                                        try {
-                                                            page
-                                                                    .showView(viewId);
-                                                        } catch (PartInitException e) {
-                                                            WorkbenchPlugin.log(getClass(), "perspectiveActivated", e); //$NON-NLS-1$
-                                                        }
-                                                    }
-                                                }
-
-                                                /* (non-Javadoc)
-                                                 * @see org.eclipse.ui.IPerspectiveListener#perspectiveChanged(org.eclipse.ui.IWorkbenchPage, org.eclipse.ui.IPerspectiveDescriptor, java.lang.String)
-                                                 */
-                                                public void perspectiveChanged(
-                                                        IWorkbenchPage page,
-                                                        IPerspectiveDescriptor perspective,
-                                                        String changeId) {
-                                                    // no-op
-                                                }
-                                            });
-                        }
-                    }
-                }
-            }
-        });
-    }
-
-    /**
-     * Create the view.  If it's already been been created in the provided 
-     * factory, return the shared instance.
-     * 
-     * @param factory the <code>ViewFactory</code> to use.
-     * @param viewID the view id to use.
-     * @return the new <code>ViewPane</code>.
-     * @throws PartInitException thrown if there is a problem creating the view.
-     */
-    public static final ViewPane createView(ViewFactory factory, String viewId)
-            throws PartInitException {
-        WorkbenchPartReference ref = (WorkbenchPartReference) factory
-				.createView(ViewFactory.extractPrimaryId(viewId), ViewFactory
-						.extractSecondaryId(viewId));
-        ViewPane newPart = (ViewPane) ref.getPane();
-        return newPart;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPart.java
deleted file mode 100644
index bf05797..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPart.java
+++ /dev/null
@@ -1,488 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Cagatay Kavukcuoglu <cagatayk@acm.org>
- *     - Fix for bug 10025 - Resizing views should not use height ratios
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISizeProvider;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-
-/**
- * A presentation part is used to build the presentation for the
- * workbench.  Common subclasses are pane and folder.
- */
-abstract public class LayoutPart implements ISizeProvider {
-    protected ILayoutContainer container;
-
-    protected String id;
-
-    public static final String PROP_VISIBILITY = "PROP_VISIBILITY"; //$NON-NLS-1$
-    
-    /**
-     * Number of times deferUpdates(true) has been called without a corresponding
-     * deferUpdates(false)
-     */
-	private int deferCount = 0;
-
-    /**
-     * PresentationPart constructor comment.
-     */
-    public LayoutPart(String id) {
-        super();
-        this.id = id;
-    }
-    
-    /**
-     * When a layout part closes, focus will return to a previously active part.
-     * This method determines whether this part should be considered for activation
-     * when another part closes. If a group of parts are all closing at the same time,
-     * they will all return false from this method while closing to ensure that the
-     * parent does not activate a part that is in the process of closing. Parts will
-     * also return false from this method if they are minimized, closed fast views,
-     * obscured by zoom, etc.
-     * 
-     * @return true iff the parts in this container may be given focus when the active
-     * part is closed
-     */
-    public boolean allowsAutoFocus() {
-        if (container != null) {
-            return container.allowsAutoFocus();
-        }
-        return true;
-    }
-
-
-    /**
-     * Creates the SWT control
-     */
-    abstract public void createControl(Composite parent);
-
-    /** 
-     * Disposes the SWT control
-     */
-    public void dispose() {
-    }
-
-    /**
-     * Gets the presentation bounds.
-     */
-    public Rectangle getBounds() {
-        return new Rectangle(0, 0, 0, 0);
-    }
-
-    /**
-     * Gets the parent for this part.
-     * <p>
-     * In general, this is non-null if the object has been added to a container and the
-     * container's widgetry exists. The exception to this rule is PartPlaceholders
-     * created when restoring a ViewStack using restoreState, which point to the 
-     * ViewStack even if its widgetry doesn't exist yet. Returns null in the remaining
-     * cases.
-     * </p> 
-     * <p>
-     * TODO: change the semantics of this method to always point to the parent container,
-     * regardless of whether its widgetry exists. Locate and refactor code that is currently 
-     * depending on the special cases.
-     * </p>
-     */
-    public ILayoutContainer getContainer() {
-        return container;
-    }
-
-    /**
-     * Get the part control.  This method may return null.
-     */
-    abstract public Control getControl();
-
-    /**
-     * Gets the ID for this part.
-     */
-    public String getID() {
-        return id;
-    }
-
-    /**
-     * Returns the compound ID for this part.
-     * The compound ID is of the form: primaryId [':' + secondaryId]
-     * 
-     * @return the compound ID for this part.
-     */
-    public String getCompoundId() {
-        return getID();
-    }
-
-    public boolean isCompressible() {
-        return false;
-    }
-
-    /**
-     * Gets the presentation size.
-     */
-    public Point getSize() {
-        Rectangle r = getBounds();
-        Point ptSize = new Point(r.width, r.height);
-        return ptSize;
-    }
-
-    /**
-     * @see org.eclipse.ui.presentations.StackPresentation#getSizeFlags(boolean)
-     * 
-     * @since 3.1
-     */
-    public int getSizeFlags(boolean horizontal) {
-        return SWT.MIN;
-    }
-    
-    /**
-     * @see org.eclipse.ui.presentations.StackPresentation#computePreferredSize(boolean, int, int, int)
-     * 
-     * @since 3.1 
-     */
-    public int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredParallel) {
-    	
-    	return preferredParallel;    	
-    }
-    
-    public IDropTarget getDropTarget(Object draggedObject, Point displayCoordinates) {
-        return null;
-    }
-    
-    public boolean isDocked() {
-        Shell s = getShell();
-        if (s == null) {
-            return false;
-        }
-        
-        return s.getData() instanceof IWorkbenchWindow;
-    }
-    
-    public Shell getShell() {
-        Control ctrl = getControl();
-        if (!SwtUtil.isDisposed(ctrl)) {
-            return ctrl.getShell();
-        }
-        return null;        
-    }
-
-    /**
-	 * Returns the workbench window window for a part.
-	 * 
-	 * @return the workbench window, or <code>null</code> if there's no window
-	 *         associated with this part.
-	 */
-    public IWorkbenchWindow getWorkbenchWindow() {
-        Shell s = getShell();
-        if (s==null) {
-        	return null;
-        }
-        Object data = s.getData();
-        if (data instanceof IWorkbenchWindow) {
-            return (IWorkbenchWindow)data;
-        } else if (data instanceof DetachedWindow) {
-            return ((DetachedWindow) data).getWorkbenchPage()
-                .getWorkbenchWindow();
-        }
-        
-        return null;
-        
-    }
-
-    /**
-     * Move the control over another one.
-     */
-    public void moveAbove(Control refControl) {
-    }
-
-    /**
-     * Reparent a part.
-     */
-    public void reparent(Composite newParent) {
-        Control control = getControl();
-        if ((control == null) || (control.getParent() == newParent)) {
-            return;
-        }
-
-        if (control.isReparentable()) {
-            // make control small in case it is not resized with other controls
-            //control.setBounds(0, 0, 0, 0);
-            // By setting the control to disabled before moving it,
-            // we ensure that the focus goes away from the control and its children
-            // and moves somewhere else
-            boolean enabled = control.getEnabled();
-            control.setEnabled(false);
-            control.setParent(newParent);
-            control.setEnabled(enabled);
-            control.moveAbove(null);
-        }
-    }
-
-    /**
-     * Returns true if this part was set visible. This returns whatever was last passed into
-     * setVisible, but does not necessarily indicate that the part can be seen (ie: one of its
-     * ancestors may be invisible) 
-     */
-    public boolean getVisible() {
-        Control ctrl = getControl();
-        if (!SwtUtil.isDisposed(ctrl)) {
-			return ctrl.getVisible();
-		}
-        return false;    
-    }
-    
-    /**
-     * Returns true if this part can be seen. Returns false if the part or any of its ancestors
-     * are invisible.
-     */
-    public boolean isVisible() {
-        Control ctrl = getControl();
-        if (ctrl != null && !ctrl.isDisposed()) {
-			return ctrl.isVisible();
-		}
-        return false;
-    }
-
-    /**
-     * Shows the receiver if <code>visible</code> is true otherwise hide it.
-     */
-    public void setVisible(boolean makeVisible) {
-        Control ctrl = getControl();
-        if (!SwtUtil.isDisposed(ctrl)) {
-            if (makeVisible == ctrl.getVisible()) {
-				return;
-			}
-
-            if (!makeVisible && isFocusAncestor(ctrl)) {
-                // Workaround for Bug 60970 [EditorMgmt] setActive() called on an editor when it does not have focus.
-                // Force focus on the shell so that when ctrl is hidden,
-                // SWT does not try to send focus elsewhere, which may cause
-                // some other part to be activated, which affects the part
-                // activation order and can cause flicker.
-                ctrl.getShell().forceFocus();
-            }
-
-            ctrl.setVisible(makeVisible);
-        }
-    }
-
-    /**
-     * Returns <code>true</code> if the given control or any of its descendents has focus.
-     */
-    private boolean isFocusAncestor(Control ctrl) {
-        Control f = ctrl.getDisplay().getFocusControl();
-        while (f != null && f != ctrl) {
-            f = f.getParent();
-        }
-        return f == ctrl;
-    }
-
-    /**
-     * Sets the presentation bounds.
-     */
-    public void setBounds(Rectangle r) {
-        Control ctrl = getControl();
-        if (!SwtUtil.isDisposed(ctrl)) {
-			ctrl.setBounds(r);
-		}
-    }
-
-    /**
-     * Sets the parent for this part.
-     */
-    public void setContainer(ILayoutContainer container) {
-        
-        this.container = container;
-        
-        if (container != null) {
-            setZoomed(container.childIsZoomed(this));
-        }
-    }
-
-    /**
-     * Sets focus to this part.
-     */
-    public void setFocus() {
-    }
-
-    /** 
-     * Sets the part ID.
-     */
-    public void setID(String str) {
-        id = str;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.IWorkbenchDragDropPart#getPart()
-     */
-    public LayoutPart getPart() {
-        return this;
-    }
-
-    public void childRequestZoomIn(LayoutPart toZoom) {
-        
-    }
-    
-    public void childRequestZoomOut() {
-        
-    }
-    
-    public final void requestZoomOut() {
-        ILayoutContainer container = getContainer();
-        if (container != null) {
-            container.childRequestZoomOut();
-        }
-    }
-    
-    public final void requestZoomIn() {
-        ILayoutContainer container = getContainer();
-        if (container != null) {
-            container.childRequestZoomIn(this);
-        }
-    }
-    
-    public final boolean isObscuredByZoom() {
-        ILayoutContainer container = getContainer();
-        
-        if (container != null) {
-            return container.childObscuredByZoom(this);
-        }
-        
-        return false;
-    }
-    
-    public boolean childObscuredByZoom(LayoutPart toTest) {
-        return false;
-    }
-    
-    public boolean childIsZoomed(LayoutPart childToTest) {
-        return false;
-    }
-    
-    public void setZoomed(boolean isZoomed) {
-
-    }
-    
-    /**
-     * deferUpdates(true) disables widget updates until a corresponding call to
-     * deferUpdates(false). Exactly what gets deferred is the decision
-     * of each LayoutPart, however the part may only defer operations in a manner
-     * that does not affect the final result. 
-     * That is, the state of the receiver after the final call to deferUpdates(false)
-     * must be exactly the same as it would have been if nothing had been deferred. 
-     * 
-     * @param shouldDefer true iff events should be deferred 
-     */
-    public final void deferUpdates(boolean shouldDefer) {
-    	if (shouldDefer) {
-    		if (deferCount == 0) {
-    			startDeferringEvents();
-    		}
-    		deferCount++;
-    	} else {
-    		if (deferCount > 0) {
-    			deferCount--;
-    			if (deferCount == 0) {
-    				handleDeferredEvents();
-    			}
-    		}
-    	}
-    }
-    
-    /**
-     * This is called when deferUpdates(true) causes UI events for this
-     * part to be deferred. Subclasses can overload to initialize any data
-     * structures that they will use to collect deferred events.
-     */
-    protected void startDeferringEvents() {
-    	
-    }
-    
-    /**
-     * Immediately processes all UI events which were deferred due to a call to
-     * deferUpdates(true). This is called when the last call is made to 
-     * deferUpdates(false). Subclasses should overload this method if they
-     * defer some or all UI processing during deferUpdates.
-     */
-    protected void handleDeferredEvents() {
-    	
-    }
-    
-    /**
-     * Subclasses can call this method to determine whether UI updates should
-     * be deferred. Returns true iff there have been any calls to deferUpdates(true)
-     * without a corresponding call to deferUpdates(false). Any operation which is
-     * deferred based on the result of this method should be performed later within
-     * handleDeferredEvents(). 
-     * 
-     * @return true iff updates should be deferred.
-     */
-    protected final boolean isDeferred() {
-    	return deferCount > 0;
-    }
-
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they do not need to be translated.
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-
-    }
-
-    /**
-     * Returns an id representing this part, suitable for use in a placeholder.
-     * 
-     * @since 3.0
-     */
-    public String getPlaceHolderId() {
-        return getID();
-    }
-
-    public void resizeChild(LayoutPart childThatChanged) {
-
-    }
-
-    public void flushLayout() {
-        ILayoutContainer container = getContainer();
-        if (getContainer() != null) {
-            container.resizeChild(this);
-        }
-    }
-
-    /**
-     * Returns true iff the given part can be added to this ILayoutContainer
-     * @param toAdd
-     * @return
-     * @since 3.1
-     */
-    public boolean allowsAdd(LayoutPart toAdd) {
-        return false;
-    }
-    
-    /**
-     * Tests the integrity of this object. Throws an exception if the object's state
-     * is not internally consistent. For use in test suites.
-     */
-    public void testInvariants() {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPartSash.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPartSash.java
deleted file mode 100644
index 0a3c855..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutPartSash.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Randy Hudson <hudsonr@us.ibm.com>
- *     - Fix for bug 19524 - Resizing WorkbenchWindow resizes views
- *     Cagatay Kavukcuoglu <cagatayk@acm.org>
- *     - Fix for bug 10025 - Resizing views should not use height ratios
- *     Matthew Hatem Matthew_Hatem@notesdev.ibm.com Bug 189953
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.util.Geometry;
-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.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-
-class LayoutPartSash extends LayoutPart {
-
-    private Sash sash;
-    private boolean enabled = false;
-
-    private PartSashContainer rootContainer;
-
-    private int style;
-
-    private LayoutPartSash preLimit;
-
-    private LayoutPartSash postLimit;
-
-    SelectionListener selectionListener;
-
-    private int left = 300, right = 300;
-
-    private Rectangle bounds = new Rectangle(0,0,0,0);
-    
-    private AbstractPresentationFactory presFactory;
-    
-    /**
-     * Stores whether or not the sash is visible. (This is expected to have a meaningful
-     * value even if the underlying control doesn't exist).
-     */
-    private boolean isVisible;
-    
-    LayoutPartSash(PartSashContainer rootContainer, int style) {
-        super(null);
-        this.style = style;
-        this.rootContainer = rootContainer;
-
-        selectionListener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) { 
-                checkDragLimit(e);
-                
-                if (e.detail != SWT.DRAG) {    
-                    LayoutPartSash.this.widgetSelected(e.x, e.y, e.width,
-                            e.height);
-                }
-            }
-        };
-    }
-
-    // checkDragLimit contains changes by cagatayk@acm.org
-    private void checkDragLimit(SelectionEvent event) {
-        LayoutTree root = rootContainer.getLayoutTree();
-        LayoutTreeNode node = root.findSash(this);
-        Rectangle nodeBounds = node.getBounds();
-    	Rectangle eventRect = new Rectangle(event.x, event.y, event.width, event.height);
-		
-        boolean vertical = (style == SWT.VERTICAL);
-        
-        // If a horizontal sash, flip the coordinate system so that we
-        // can handle horizontal and vertical sashes without special cases
-        if (!vertical) {
-        	Geometry.flipXY(nodeBounds);
-        	Geometry.flipXY(eventRect);
-        }
-
-    	int eventX = eventRect.x;
-    	int left = Math.max(0, eventX - nodeBounds.x);
-    	left = Math.min(left, nodeBounds.width - getSashSize()); 
-    	int right = nodeBounds.width - left - getSashSize();
-    	
-    	LayoutTreeNode.ChildSizes sizes = node.computeChildSizes(nodeBounds.width, nodeBounds.height, left, right, nodeBounds.width);
-
-        eventRect.x = nodeBounds.x + sizes.left;
-        
-        // If it's a horizontal sash, restore eventRect to its original coordinate system
-        if (!vertical) {
-        	Geometry.flipXY(eventRect);
-        }
-        
-        event.x = eventRect.x;
-        event.y = eventRect.y;        
-    }
-
-    /**
-     * Creates the control. As an optimization, creation of the control is deferred if
-     * the control is invisible.
-     */
-    public void createControl(Composite parent) {
-        // Defer creation of the control until it becomes visible
-        if (isVisible) {
-            doCreateControl();
-        }
-    }
-    
-    /**
-     * Creates the underlying SWT control.
-     * 
-     * @since 3.1
-     */
-    private void doCreateControl() {         
-        if (sash == null) {        	
-        	// ask the presentation factory to create the sash
-        	AbstractPresentationFactory factory = getPresentationFactory();
-        	
-        	int sashStyle = AbstractPresentationFactory.SASHTYPE_NORMAL | style;
-            sash = factory.createSash(this.rootContainer.getParent(), sashStyle);
-            
-            sash.addSelectionListener(selectionListener);
-            sash.setEnabled(enabled);
-            sash.setBounds(bounds);
-        }
-    }
-    
-    public void setBounds(Rectangle r) {
-        super.setBounds(r);
-        
-        bounds = r;
-    }
-
-    /**
-     * Makes the sash visible or invisible. Note: as an optimization, the actual widget is destroyed when the
-     * sash is invisible.
-     */
-    public void setVisible(boolean visible) {
-        if (visible == isVisible) {
-            return;
-        }
-        
-        if (visible) {
-            doCreateControl();
-        } else {
-            dispose();
-        }
-        
-        super.setVisible(visible);
-        
-        isVisible = visible;
-    }
-    
-    public boolean isVisible() {
-        return isVisible;
-    }
-    
-    /**
-     * See LayoutPart#dispose
-     */
-    public void dispose() {
-
-        if (sash != null) {
-            bounds = sash.getBounds();
-            sash.dispose();
-        }
-        sash = null;
-    }
-
-    /**
-     * Gets the presentation bounds.
-     */
-    public Rectangle getBounds() {
-        if (sash == null) {
-            return bounds;
-        }
-
-        return sash.getBounds();
-    }
-
-    /**
-     * Returns the part control.
-     */
-    public Control getControl() {
-        return sash;
-    }
-
-    /**
-     *  
-     */
-    public String getID() {
-        return null;
-    }
-
-    LayoutPartSash getPostLimit() {
-        return postLimit;
-    }
-
-    LayoutPartSash getPreLimit() {
-        return preLimit;
-    }
-
-    int getLeft() {
-        return left;
-    }
-
-    int getRight() {
-        return right;
-    }
-
-    boolean isHorizontal() {
-        return ((style & SWT.HORIZONTAL) == SWT.HORIZONTAL);
-    }
-
-    boolean isVertical() {
-        return ((style & SWT.VERTICAL) == SWT.VERTICAL);
-    }
-
-    void setPostLimit(LayoutPartSash newPostLimit) {
-        postLimit = newPostLimit;
-    }
-
-    void setPreLimit(LayoutPartSash newPreLimit) {
-        preLimit = newPreLimit;
-    }
-
-    void setRatio(float newRatio) {
-        int total = left + right;
-        int newLeft = (int) (total * newRatio);
-        setSizes(newLeft, total - newLeft);
-    }
-
-    void setSizes(int left, int right) {
-        if (left < 0 || right < 0) {
-            return;
-        }
-        
-        if (left == this.left && right == this.right) {
-            return;
-        }
-        
-        this.left = left;
-        this.right = right;
-        
-        flushCache();
-    }
-    
-    private void flushCache() {
-        LayoutTree root = rootContainer.getLayoutTree();
-
-        if (root != null) {
-	        LayoutTreeNode node = root.findSash(this);
-	        if (node != null) {
-	            node.flushCache();
-	        }
-        }
-    }
-
-    private void widgetSelected(int x, int y, int width, int height) {
-        if (!enabled) {
-            return;
-        }
-        
-        LayoutTree root = rootContainer.getLayoutTree();
-        LayoutTreeNode node = root.findSash(this);
-        Rectangle nodeBounds = node.getBounds();
-        //Recompute ratio
-        x -= nodeBounds.x;
-        y -= nodeBounds.y;
-        if (style == SWT.VERTICAL) {
-            setSizes(x, nodeBounds.width - x - getSashSize());
-        } else {
-            setSizes(y, nodeBounds.height - y - getSashSize());
-        }
-
-        node.setBounds(nodeBounds);        
-    }
-
-    /**
-     * @param resizable
-     * @since 3.1
-     */
-    public void setEnabled(boolean resizable) {
-        this.enabled = resizable;
-        if (sash != null) {
-            sash.setEnabled(enabled);
-        }
-    }
-    
-    /* package */ int getSashSize() {
-    	AbstractPresentationFactory factory = getPresentationFactory();
-    	int sashStyle = AbstractPresentationFactory.SASHTYPE_NORMAL | style;
-    	int size = factory.getSashSize(sashStyle);
-    	return size;
-    }
-    
-    private AbstractPresentationFactory getPresentationFactory() {
-    	if (presFactory == null) {
-	    	WorkbenchWindow wbw = (WorkbenchWindow)rootContainer.getPage().getWorkbenchWindow();
-	    	WorkbenchWindowConfigurer configurer = wbw.getWindowConfigurer();
-	        presFactory = configurer.getPresentationFactory();
-    	}
-        return presFactory;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTree.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTree.java
deleted file mode 100644
index ec33074..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTree.java
+++ /dev/null
@@ -1,614 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Randy Hudson <hudsonr@us.ibm.com>
- *     - Fix for bug 19524 - Resizing WorkbenchWindow resizes Views
- *     Cagatay Kavukcuoglu <cagatayk@acm.org>
- *     - Fix for bug 10025 - Resizing views should not use height ratios
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.ISizeProvider;
-
-/**
- * Implementation of a tree where the node is allways a sash
- * and it allways has two chidren. If a children is removed
- * the sash, ie the node, is removed as well and its other children
- * placed on its parent.
- */
-public class LayoutTree implements ISizeProvider {
-    /* The parent of this tree or null if it is the root */
-    LayoutTreeNode parent;
-
-    /* Any LayoutPart if this is a leaf or a LayoutSashPart if it is a node */
-    LayoutPart part;
-    
-    // Cached information
-    private int cachedMinimumWidthHint = SWT.DEFAULT;
-    private int cachedMinimumWidth = SWT.DEFAULT;
-    private int cachedMinimumHeightHint = SWT.DEFAULT;
-    private int cachedMinimumHeight = SWT.DEFAULT;
-    private int cachedMaximumWidthHint = SWT.DEFAULT;
-    private int cachedMaximumWidth = SWT.DEFAULT;
-    private int cachedMaximumHeightHint = SWT.DEFAULT;
-    private int cachedMaximumHeight = SWT.DEFAULT;
-    
-    // Cached size flags
-    private boolean sizeFlagsDirty = true;
-    private int widthSizeFlags = 0;
-    private int heightSizeFlags = 0;
-    
-    // Cache statistics. For use in benchmarks and test suites only!
-    public static int minCacheHits;
-    public static int minCacheMisses;
-    public static int maxCacheHits;
-    public static int maxCacheMisses;
-    
-    private boolean forceLayout = true;
-    private Rectangle currentBounds = new Rectangle(0,0,0,0);
-    
-    /**
-     * Initialize this tree with its part.
-     */
-    public LayoutTree(LayoutPart part) {
-        this.part = part;
-    }
-
-    /**
-     * Add the relation ship between the children in the list
-     * and returns the left children.
-     */
-    public LayoutPart computeRelation(ArrayList relations) {
-        return part;
-    }
-
-    /**
-     * Locates the part that intersects the given point
-     * 
-     * @param toFind
-     * @return
-     */
-    public LayoutPart findPart(Point toFind) {
-        return part;
-    }
-    
-    /**
-     * Dispose all Sashs in this tree
-     */
-    public void disposeSashes() {
-    }
-    
-    /**
-     * Find a LayoutPart in the tree and return its sub-tree. Returns
-     * null if the child is not found.
-     */
-    public LayoutTree find(LayoutPart child) {
-        if (part != child) {
-			return null;
-		}
-        return this;
-    }
-
-    /**
-     * Find the Left,Right,Top and Botton 
-     * sashes around this tree and set them
-     * in <code>sashes</code>
-     */
-    public void findSashes(PartPane.Sashes sashes) {
-        if (getParent() == null) {
-			return;
-		}
-        getParent().findSashes(this, sashes);
-    }
-
-    /**
-     * Find the part that is in the bottom rigth possition.
-     */
-    public LayoutPart findBottomRight() {
-        return part;
-    }
-    
-    /**
-     * Find a sash in the tree and return its sub-tree. Returns
-     * null if the sash is not found.
-     */
-    public LayoutTreeNode findSash(LayoutPartSash sash) {
-        return null;
-    }
-
-    /**
-     * Return the bounds of this tree which is the rectangle that
-     * contains all Controls in this tree.
-     */
-    public final Rectangle getBounds() {
-        return Geometry.copy(currentBounds);
-    }
-    
-    /**
-     * Subtracts two integers. If a is INFINITE, this is treated as
-     * positive infinity. 
-     * 
-     * @param a a positive integer or INFINITE indicating positive infinity
-     * @param b a positive integer (may not be INFINITE)
-     * @return a - b, or INFINITE if a == INFINITE
-     * @since 3.1
-     */
-    public static int subtract(int a, int b) {
-        Assert.isTrue(b >= 0 && b < INFINITE);
-        
-    	return add(a, -b);
-    }
-    
-    /**
-     * Adds two positive integers. Treates INFINITE as positive infinity.
-     * 
-     * @param a a positive integer
-     * @param b a positive integer
-     * @return a + b, or INFINITE if a or b are positive infinity
-     * @since 3.1
-     */
-    public static int add(int a, int b) {
-    	if (a == INFINITE || b == INFINITE) {
-    		return INFINITE;
-    	}
-    	
-    	return a + b;
-    }
-    
-    /**
-     * Asserts that toCheck is a positive integer less than INFINITE / 2 or equal
-     * to INFINITE. Many of the methods of this class use positive integers as sizes,
-     * with INFINITE indicating positive infinity. This picks up accidental addition or
-     * subtraction from infinity. 
-     * 
-     * @param toCheck integer to validate
-     * @since 3.1
-     */
-    public static void assertValidSize(int toCheck) {
-    	Assert.isTrue(toCheck >= 0 && (toCheck == INFINITE || toCheck < INFINITE / 2));
-    }
-    
-    /**
-     * Computes the preferred size for this object. The interpretation of the result depends on the flags returned
-     * by getSizeFlags(). If the caller is looking for a maximum or minimum size, this delegates to computeMinimumSize
-     * or computeMaximumSize in order to benefit from caching optimizations. Otherwise, it delegates to 
-     * doComputePreferredSize. Subclasses should overload one of doComputeMinimumSize, doComputeMaximumSize, or
-     * doComputePreferredSize to specialize the return value. 
-     * 
-     * @see LayoutPart#computePreferredSize(boolean, int, int, int)
-     */
-    public final int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredParallel) {
-    	assertValidSize(availableParallel);
-    	assertValidSize(availablePerpendicular);
-    	assertValidSize(preferredParallel);
-    	
-    	if (!isVisible()) {
-    		return 0;
-    	}
-
-    	if (availableParallel == 0) {
-    		return 0;
-    	}
-
-    	if (preferredParallel == 0) {
-    		return Math.min(availableParallel, computeMinimumSize(width, availablePerpendicular));
-    	} else if (preferredParallel == INFINITE && availableParallel == INFINITE) {
-    		return computeMaximumSize(width, availablePerpendicular);
-    	}
-    	
-    	// Optimization: if this subtree doesn't have any size preferences beyond its minimum and maximum
-    	// size, simply return the preferred size
-    	if (!hasSizeFlag(width, SWT.FILL)) {
-    	    return preferredParallel;
-    	}
-    	
-    	int result = doComputePreferredSize(width, availableParallel, availablePerpendicular, preferredParallel);
-
-    	return result;
-    }
-    
-    /**
-     * Returns the size flags for this tree. 
-     * 
-     * @see org.eclipse.ui.presentations.StackPresentation#getSizeFlags(boolean)
-     * 
-	 * @param b indicates whether the caller wants the flags for computing widths (=true) or heights (=false)
-	 * @return a bitwise combiniation of flags with the same meaning as StackPresentation.getSizeFlags(boolean)
-	 */
-	protected int doGetSizeFlags(boolean width) {
-		return part.getSizeFlags(width);
-	}
-
-	/**
-	 * Subclasses should overload this method instead of computePreferredSize(boolean, int, int, int)
-	 * 
-	 * @see org.eclipse.ui.presentations.StackPresentation#computePreferredSize(boolean, int, int, int)
-	 * 
-	 * @since 3.1
-	 */
-	protected int doComputePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredParallel) {
-    	int result = Math.min(availableParallel, 
-    			part.computePreferredSize(width, availableParallel, availablePerpendicular, preferredParallel));
-
-    	assertValidSize(result);
-    	return result;    	
-    }
-    
-	/**
-	 * Returns the minimum size for this subtree. Equivalent to calling 
-	 * computePreferredSize(width, INFINITE, availablePerpendicular, 0).
-	 * Returns a cached value if possible or defers to doComputeMinimumSize otherwise.
-	 * Subclasses should overload doComputeMinimumSize if they want to specialize the
-	 * return value.
-	 * 
-	 * @param width true iff computing the minimum width, false iff computing the minimum height
-	 * @param availablePerpendicular available space (pixels) perpendicular to the dimension 
-	 * being computed. This is a height when computing a width, or a width when computing a height.
-	 * 
-	 * @see LayoutPart#computePreferredSize(boolean, int, int, int)
-	 */
-    public final int computeMinimumSize(boolean width, int availablePerpendicular) {
-    	assertValidSize(availablePerpendicular);
-    	
-    	// Optimization: if this subtree has no minimum size, then always return 0 as its
-    	// minimum size.
-        if (!hasSizeFlag(width, SWT.MIN)) {
-            return 0;
-        }
-    	
-    	// If this subtree doesn't contain any wrapping controls (ie: they don't care
-    	// about their perpendicular size) then force the perpendicular
-    	// size to be INFINITE. This ensures that we will get a cache hit
-    	// every time for non-wrapping controls.
-    	if (!hasSizeFlag(width, SWT.WRAP)) {
-    		availablePerpendicular = INFINITE;
-    	}
-    	
-    	if (width) {
-    	    // Check if we have a cached width measurement (we can only return a cached
-    	    // value if we computed it for the same height)
-    		if (cachedMinimumWidthHint == availablePerpendicular) {
-    			minCacheHits++;
-    			return cachedMinimumWidth;
-    		}
-    		
-    		// Recompute the minimum width and store it in the cache
-    		
-    		minCacheMisses++;
-    		 
-    		int result = doComputeMinimumSize(width, availablePerpendicular);
-    		cachedMinimumWidth = result;
-    		cachedMinimumWidthHint = availablePerpendicular;
-    		return result;
-    		
-    	} else {
-    	    // Check if we have a cached height measurement (we can only return a cached
-    	    // value if we computed it for the same width)
-    		if (cachedMinimumHeightHint == availablePerpendicular) {
-    			minCacheHits++;
-    			return cachedMinimumHeight;
-    		}
-    		
-    		// Recompute the minimum width and store it in the cache
-    		minCacheMisses++;
-    		
-    		int result = doComputeMinimumSize(width, availablePerpendicular);
-    		cachedMinimumHeight = result;
-    		cachedMinimumHeightHint = availablePerpendicular;
-    		return result;
-    	}
-    }
-    
-    /**
-     * For use in benchmarks and test suites only. Displays cache utilization statistics for all
-     * LayoutTree instances.
-     * 
-     * @since 3.1
-     */
-    public static void printCacheStatistics() {
-    	System.out.println("minimize cache " + minCacheHits + " / " + (minCacheHits + minCacheMisses) + " hits " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    			minCacheHits * 100 / (minCacheHits + minCacheMisses) + "%"); //$NON-NLS-1$
-    	System.out.println("maximize cache " + maxCacheHits + " / " + (maxCacheHits + maxCacheMisses) + " hits" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    			maxCacheHits * 100 / (maxCacheHits + maxCacheMisses) + "%"); //$NON-NLS-1$
-    }
-    
-	public int doComputeMinimumSize(boolean width, int availablePerpendicular) {
-		int result = doComputePreferredSize(width, INFINITE, availablePerpendicular, 0);
-		assertValidSize(result);
-		return result;
-	}
-
-    public final int computeMaximumSize(boolean width, int availablePerpendicular) {
-    	assertValidSize(availablePerpendicular);
-    	
-    	// Optimization: if this subtree has no maximum size, then always return INFINITE as its
-    	// maximum size.
-        if (!hasSizeFlag(width, SWT.MAX)) {
-            return INFINITE;
-        }
-    	
-    	// If this subtree doesn't contain any wrapping controls (ie: they don't care
-    	// about their perpendicular size) then force the perpendicular
-    	// size to be INFINITE. This ensures that we will get a cache hit
-    	// every time.
-    	if (!hasSizeFlag(width, SWT.WRAP)) {
-    		availablePerpendicular = INFINITE;
-    	}
-    	
-    	if (width) {    	    
-    	    // Check if we have a cached width measurement (we can only return a cached
-    	    // value if we computed it for the same height)
-    		if (cachedMaximumWidthHint == availablePerpendicular) {
-    			maxCacheHits++;
-    			return cachedMaximumWidth;
-    		}
-    		
-    		maxCacheMisses++;
-    		
-    		// Recompute the maximum width and store it in the cache
-    		int result = doComputeMaximumSize(width, availablePerpendicular);
-    		cachedMaximumWidth = result;
-    		cachedMaximumWidthHint = availablePerpendicular;
-    		return result;
-    		
-    	} else {
-    	    // Check if we have a cached height measurement
-    		if (cachedMaximumHeightHint == availablePerpendicular) {
-    			maxCacheHits++;
-    			return cachedMaximumHeight;
-    		}
-    		
-    		maxCacheMisses++;
-    		
-    		// Recompute the maximum height and store it in the cache
-    		int result = doComputeMaximumSize(width, availablePerpendicular);
-    		cachedMaximumHeight = result;
-    		cachedMaximumHeightHint = availablePerpendicular;
-    		return result;
-    	}
-    }
-    
-    protected int doComputeMaximumSize(boolean width, int availablePerpendicular) {        
-    	return doComputePreferredSize(width, INFINITE, availablePerpendicular, INFINITE);
-    }
-    
-    /**
-     * Called to flush any cached information in this tree and its parents.
-     */
-    public void flushNode() {
-        
-        // Clear cached sizes
-        cachedMinimumWidthHint = SWT.DEFAULT;
-        cachedMinimumWidth = SWT.DEFAULT;
-        cachedMinimumHeightHint = SWT.DEFAULT;
-        cachedMinimumHeight = SWT.DEFAULT;
-        cachedMaximumWidthHint = SWT.DEFAULT;
-        cachedMaximumWidth = SWT.DEFAULT;
-        cachedMaximumHeightHint = SWT.DEFAULT;
-        cachedMaximumHeight = SWT.DEFAULT;
-        
-        // Flags may have changed. Ensure that they are recomputed the next time around
-        sizeFlagsDirty = true;
-        
-        // The next setBounds call should trigger a layout even if set to the same bounds since
-        // one of the children has changed.
-        forceLayout = true;
-    }
-    
-    /**
-     * Flushes all cached information about this node and all of its children.
-     * This should be called if something may have caused all children to become
-     * out of synch with their cached information (for example, if a lot of changes
-     * may have happened without calling flushCache after each change)
-     * 
-     * @since 3.1
-     */
-    public void flushChildren() {
-        flushNode();
-    }
-    
-    /**
-     * Flushes all cached information about this node and all of its ancestors.
-     * This should be called when a single child changes.
-     * 
-     * @since 3.1
-     */
-    public final void flushCache() {
-        flushNode();
-        
-    	if (parent != null) {
-    		parent.flushCache();
-    	}        
-    }
-    
-    public final int getSizeFlags(boolean width) {
-        if (sizeFlagsDirty) {
-            widthSizeFlags = doGetSizeFlags(true);
-            heightSizeFlags = doGetSizeFlags(false);
-            sizeFlagsDirty = false;
-        }
-        
-        return width ? widthSizeFlags : heightSizeFlags;
-    }
-        
-    /**
-     * Returns the parent of this tree or null if it is the root.
-     */
-    public LayoutTreeNode getParent() {
-        return parent;
-    }
-
-    /**
-     * Inserts a new child on the tree. The child will be placed beside 
-     * the <code>relative</code> child. Returns the new root of the tree.
-     */
-    public LayoutTree insert(LayoutPart child, boolean left,
-            LayoutPartSash sash, LayoutPart relative) {
-        LayoutTree relativeChild = find(relative);
-        LayoutTreeNode node = new LayoutTreeNode(sash);
-        if (relativeChild == null) {
-            //Did not find the relative part. Insert beside the root.
-            node.setChild(left, child);
-            node.setChild(!left, this);
-            return node;
-        } else {
-            LayoutTreeNode oldParent = relativeChild.getParent();
-            node.setChild(left, child);
-            node.setChild(!left, relativeChild);
-            if (oldParent == null) {
-                //It was the root. Return a new root.
-                return node;
-            }
-            oldParent.replaceChild(relativeChild, node);
-            return this;
-        }
-    }
-
-    /**
-     * Returns true if this tree can be compressed and expanded.
-     * @return true if springy
-     */
-    public boolean isCompressible() {
-        //Added for bug 19524
-        return part.isCompressible();
-    }
-
-    /**
-     * Returns true if this tree has visible parts otherwise returns false.
-     */
-    public boolean isVisible() {
-        return !(part instanceof PartPlaceholder);
-    }
-
-    /**
-     * Recompute the ratios in this tree.
-     */
-    public void recomputeRatio() {
-    }
-
-    /**
-     * Find a child in the tree and remove it and its parent.
-     * The other child of its parent is placed on the parent's parent.
-     * Returns the new root of the tree.
-     */
-    public LayoutTree remove(LayoutPart child) {
-        LayoutTree tree = find(child);
-        if (tree == null) {
-			return this;
-		}
-        LayoutTreeNode oldParent = tree.getParent();
-        if (oldParent == null) {
-            //It was the root and the only child of this tree
-            return null;
-        }
-        if (oldParent.getParent() == null) {
-			return oldParent.remove(tree);
-		}
-
-        oldParent.remove(tree);
-        return this;
-    }
-
-    /**
-     * Sets the bounds of this node. If the bounds have changed or any children have
-     * changed then the children will be recursively layed out. This implementation
-     * filters out redundant calls and delegates to doSetBounds to layout the children. 
-     * Subclasses should overload doSetBounds to lay out their children.  
-     * 
-     * @param bounds new bounds of the tree
-     */
-    public final void setBounds(Rectangle bounds) {
-        if (!bounds.equals(currentBounds) || forceLayout) {
-            currentBounds = Geometry.copy(bounds);
-            
-            doSetBounds(currentBounds);
-            forceLayout = false;
-        } 
-    }
-    
-    /**
-     * Resize the parts on this tree to fit in <code>bounds</code>.
-     */
-    protected void doSetBounds(Rectangle bounds) {
-        part.setBounds(bounds);
-    }
-
-    /**
-     * Set the parent of this tree.
-     */
-    void setParent(LayoutTreeNode parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * Set the part of this leaf
-     */
-    void setPart(LayoutPart part) {
-        this.part = part;
-        flushCache();
-    }
-
-    /**
-     * Returns a string representation of this object.
-     */
-    public String toString() {
-        return "(" + part.toString() + ")";//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Creates SWT controls owned by the LayoutTree (ie: the sashes). Does not affect the 
-     * LayoutParts that are being arranged by the LayoutTree. 
-     * 
-     * @param parent
-     * @since 3.1
-     */
-    public void createControl(Composite parent) {        
-    }
-        
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they should not be translated or equality tests will fail.
-     * <p>
-     * This is only intended for use by test suites.
-     * </p>
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-        part.describeLayout(buf);
-    }
-
-    /**
-     * This is a shorthand method that checks if the tree contains the
-     * given size flag. For example, hasSizeFlag(false, SWT.MIN) returns
-     * true iff the receiver enforces a minimum height, or 
-     * hasSizeFlag(true, SWT.WRAP) returns true iff the receiver needs to
-     * know its height when computing its preferred width.
-     * 
-     * @param vertical 
-     * @return
-     * @since 3.1
-     */
-    public final boolean hasSizeFlag(boolean width, int flag) {        
-        return (getSizeFlags(width) & flag) != 0;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTreeNode.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTreeNode.java
deleted file mode 100644
index 182197c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LayoutTreeNode.java
+++ /dev/null
@@ -1,675 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Randy Hudson <hudsonr@us.ibm.com>
- *     - Fix for bug 19524 - Resizing WorkbenchWindow resizes Views
- *     Cagatay Kavukcuoglu <cagatayk@acm.org>
- *     - Fix for bug 10025 - Resizing views should not use height ratios
- *     Matthew Hatem Matthew_Hatem@notesdev.ibm.com Bug 189953
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.ui.IPageLayout;
-
-/**
- * Implementation of a tree node. The node represents a
- * sash and it allways has two children.
- */
-public class LayoutTreeNode extends LayoutTree {
-	
-	static class ChildSizes {
-		int left;
-		int right;
-		boolean resizable = true;
-		
-		public ChildSizes (int l, int r, boolean resize) {
-			left = l;
-			right = r;
-			resizable = resize;
-		}
-	}
-	
-    /* The node children witch may be another node or a leaf */
-    private LayoutTree children[] = new LayoutTree[2];
-
-    /**
-     * Initialize this tree with its sash.
-     */
-    public LayoutTreeNode(LayoutPartSash sash) {
-        super(sash);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutTree#flushChildren()
-     */
-    public void flushChildren() {
-        super.flushChildren();
-        
-        children[0].flushChildren();
-        children[1].flushChildren();
-    }
-    
-    /**
-     * Traverses the tree to find the part that intersects the given point
-     * 
-     * @param toFind
-     * @return the part that intersects the given point
-     */
-    public LayoutPart findPart(Point toFind) {
-        if (!children[0].isVisible()) {
-            if (!children[1].isVisible()) {
-                return null;
-            }
-
-            return children[1].findPart(toFind);
-        } else {
-            if (!children[1].isVisible()) {
-                return children[0].findPart(toFind);
-            }
-        }
-
-        LayoutPartSash sash = getSash();
-
-        Rectangle bounds = sash.getBounds();
-
-        if (sash.isVertical()) {
-            if (toFind.x < bounds.x + (bounds.width / 2)) {
-                return children[0].findPart(toFind);
-            }
-            return children[1].findPart(toFind);
-        } else {
-            if (toFind.y < bounds.y + (bounds.height / 2)) {
-                return children[0].findPart(toFind);
-            }
-            return children[1].findPart(toFind);
-        }
-    }
-
-    /**
-     * Add the relation ship between the children in the list
-     * and returns the left children.
-     */
-    public LayoutPart computeRelation(ArrayList relations) {
-        PartSashContainer.RelationshipInfo r = new PartSashContainer.RelationshipInfo();
-        r.relative = children[0].computeRelation(relations);
-        r.part = children[1].computeRelation(relations);
-        r.left = getSash().getLeft();
-        r.right = getSash().getRight();
-        r.relationship = getSash().isVertical() ? IPageLayout.RIGHT
-                : IPageLayout.BOTTOM;
-        relations.add(0, r);
-        return r.relative;
-    }
-
-    /**
-     * Dispose all Sashs in this tree
-     */
-    public void disposeSashes() {
-        children[0].disposeSashes();
-        children[1].disposeSashes();
-        getSash().dispose();
-    }
-
-    /**
-     * Find a LayoutPart in the tree and return its sub-tree. Returns
-     * null if the child is not found.
-     */
-    public LayoutTree find(LayoutPart child) {
-        LayoutTree node = children[0].find(child);
-        if (node != null) {
-			return node;
-		}
-        node = children[1].find(child);
-        return node;
-    }
-
-    /**
-     * Find the part that is in the bottom right position.
-     */
-    public LayoutPart findBottomRight() {
-        if (children[1].isVisible()) {
-			return children[1].findBottomRight();
-		}
-        return children[0].findBottomRight();
-    }
-
-    /**
-     * Go up in the tree finding a parent that is common of both children.
-     * Return the subtree.
-     */
-    public LayoutTreeNode findCommonParent(LayoutPart child1, LayoutPart child2) {
-        return findCommonParent(child1, child2, false, false);
-    }
-
-    /**
-     * Go up in the tree finding a parent that is common of both children.
-     * Return the subtree.
-     */
-    LayoutTreeNode findCommonParent(LayoutPart child1, LayoutPart child2,
-            boolean foundChild1, boolean foundChild2) {
-        if (!foundChild1) {
-			foundChild1 = find(child1) != null;
-		}
-        if (!foundChild2) {
-			foundChild2 = find(child2) != null;
-		}
-        if (foundChild1 && foundChild2) {
-			return this;
-		}
-        if (parent == null) {
-			return null;
-		}
-        return parent
-                .findCommonParent(child1, child2, foundChild1, foundChild2);
-    }
-
-    /**
-     * Find a sash in the tree and return its sub-tree. Returns
-     * null if the sash is not found.
-     */
-    public LayoutTreeNode findSash(LayoutPartSash sash) {
-        if (this.getSash() == sash) {
-			return this;
-		}
-        LayoutTreeNode node = children[0].findSash(sash);
-        if (node != null) {
-			return node;
-		}
-        node = children[1].findSash(sash);
-        if (node != null) {
-			return node;
-		}
-        return null;
-    }
-
-    /**
-     * Sets the elements in the array of sashes with the
-     * Left,Rigth,Top and Botton sashes. The elements
-     * may be null depending whether there is a shash
-     * beside the <code>part</code>
-     */
-    void findSashes(LayoutTree child, PartPane.Sashes sashes) {
-        Sash sash = (Sash) getSash().getControl();
-        boolean leftOrTop = children[0] == child;
-        if (sash != null) {
-            LayoutPartSash partSash = getSash();
-            //If the child is in the left, the sash 
-            //is in the rigth and so on.
-            if (leftOrTop) {
-                if (partSash.isVertical()) {
-                    if (sashes.right == null) {
-						sashes.right = sash;
-					}
-                } else {
-                    if (sashes.bottom == null) {
-						sashes.bottom = sash;
-					}
-                }
-            } else {
-                if (partSash.isVertical()) {
-                    if (sashes.left == null) {
-						sashes.left = sash;
-					}
-                } else {
-                    if (sashes.top == null) {
-						sashes.top = sash;
-					}
-                }
-            }
-        }
-        if (getParent() != null) {
-			getParent().findSashes(this, sashes);
-		}
-    }
-
-    /**
-     * Returns the sash of this node.
-     */
-    public LayoutPartSash getSash() {
-        return (LayoutPartSash) part;
-    }
-    
-    private int getSashSize() {
-    	return getSash().getSashSize();
-    }
-
-    /**
-     * Returns true if this tree has visible parts otherwise returns false.
-     */
-    public boolean isVisible() {
-        return children[0].isVisible() || children[1].isVisible();
-    }
-
-    /**
-     * Remove the child and this node from the tree
-     */
-    LayoutTree remove(LayoutTree child) {
-        getSash().dispose();
-        if (parent == null) {
-            //This is the root. Return the other child to be the new root.
-            if (children[0] == child) {
-                children[1].setParent(null);
-                return children[1];
-            }
-            children[0].setParent(null);
-            return children[0];
-        }
-
-        LayoutTreeNode oldParent = parent;
-        if (children[0] == child) {
-			oldParent.replaceChild(this, children[1]);
-		} else {
-			oldParent.replaceChild(this, children[0]);
-		}
-        return oldParent;
-    }
-
-    /**
-     * Replace a child with a new child and sets the new child's parent.
-     */
-    void replaceChild(LayoutTree oldChild, LayoutTree newChild) {
-        if (children[0] == oldChild) {
-			children[0] = newChild;
-		} else if (children[1] == oldChild) {
-			children[1] = newChild;
-		}
-        newChild.setParent(this);
-        if (!children[0].isVisible() || !children[0].isVisible()) {
-			getSash().dispose();
-		}
-
-        flushCache();
-    }
-
-    /**
-     * Go up from the subtree and return true if all the sash are 
-     * in the direction specified by <code>isVertical</code>
-     */
-    public boolean sameDirection(boolean isVertical, LayoutTreeNode subTree) {
-        boolean treeVertical = getSash().isVertical();
-        if (treeVertical != isVertical) {
-			return false;
-		}
-        while (subTree != null) {
-            if (this == subTree) {
-				return true;
-			}
-            if (subTree.children[0].isVisible()
-                    && subTree.children[1].isVisible()) {
-				if (subTree.getSash().isVertical() != isVertical) {
-					return false;
-				}
-			}
-            subTree = subTree.getParent();
-        }
-        return true;
-    }
-    
-    public int doComputePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredParallel) {
-    	assertValidSize(availablePerpendicular);
-    	assertValidSize(availableParallel);
-    	assertValidSize(preferredParallel);
-    	
-    	// If one child is invisible, defer to the other child
-    	if (!children[0].isVisible()) {
-    		return children[1].computePreferredSize(width, availableParallel, availablePerpendicular, preferredParallel);
-    	}
-    	
-    	if (!children[1].isVisible()) {
-    		return children[0].computePreferredSize(width, availableParallel, availablePerpendicular, preferredParallel);
-    	}
-    	
-    	if (availableParallel == 0) {
-    		return 0;
-    	}
-    	
-    	// If computing the dimension perpendicular to our sash
-    	if (width == getSash().isVertical()) {
-    		// Compute the child sizes
-    		ChildSizes sizes = computeChildSizes(availableParallel, availablePerpendicular,
-    				getSash().getLeft(), getSash().getRight(), preferredParallel);
-    		
-    		// Return the sum of the child sizes plus the sash size
-    		return add(sizes.left, add(sizes.right, getSashSize()));
-    	} else {
-    		// Computing the dimension parallel to the sash. We will compute and return the preferred size
-    		// of whichever child is closest to the ideal size.
-    		
-    		ChildSizes sizes;
-    		// First compute the dimension of the child sizes perpendicular to the sash
-			sizes = computeChildSizes(availablePerpendicular, availableParallel,
-				getSash().getLeft(), getSash().getRight(), availablePerpendicular);
-    		
-    		// Use this information to compute the dimension of the child sizes parallel to the sash.
-    		// Return the preferred size of whichever child is largest
-    		int leftSize = children[0].computePreferredSize(width, availableParallel, sizes.left, preferredParallel);
-    		
-    		// Compute the preferred size of the right child
-    		int rightSize = children[1].computePreferredSize(width, availableParallel, sizes.right, preferredParallel); 
-    		
-    		// Return leftSize or rightSize: whichever one is largest
-    		int result = rightSize;
-    		if (leftSize > rightSize) {
-    			result = leftSize;
-    		}
-
-    		assertValidSize(result);
-    		
-    		return result;
-    	}
-    }
-	
-    /**
-     * Computes the pixel sizes of this node's children, given the available
-     * space for this node. Note that "width" and "height" actually refer
-     * to the distance perpendicular and parallel to the sash respectively.
-     * That is, their meaning is reversed when computing a horizontal sash. 
-     * 
-     * @param width the pixel width of a vertical node, or the pixel height
-     * of a horizontal node (INFINITE if unbounded)
-     * @param height the pixel height of a vertical node, or the pixel width
-     * of a horizontal node (INFINITE if unbounded)
-     * @return a struct describing the pixel sizes of the left and right children
-     * (this is a width for horizontal nodes and a height for vertical nodes)
-     */
-    ChildSizes computeChildSizes(int width, int height, int left, int right, int preferredWidth) {
-    	Assert.isTrue(children[0].isVisible());
-    	Assert.isTrue(children[1].isVisible());
-    	assertValidSize(width);
-    	assertValidSize(height);
-    	assertValidSize(preferredWidth);
-    	Assert.isTrue(left >= 0);
-    	Assert.isTrue(right >= 0);
-    	Assert.isTrue(preferredWidth >= 0);
-    	Assert.isTrue(preferredWidth <= width);
-    	boolean vertical = getSash().isVertical();
-    	
-        if (width <= getSashSize()) {
-        	return new ChildSizes(0,0, false);
-        }
-        
-        if (width == INFINITE) {
-        	if (preferredWidth == INFINITE) {
-        		return new ChildSizes(children[0].computeMaximumSize(vertical, height),
-        				children[1].computeMaximumSize(vertical, height), false);
-        	}
-        	
-        	if (preferredWidth == 0) {
-        		return new ChildSizes(children[0].computeMinimumSize(vertical, height),
-        				children[1].computeMinimumSize(vertical, height), false);
-        	}
-        }
-        
-        int total = left + right;
-
-        // Use all-or-none weighting
-        double wLeft = left, wRight = right;
-        switch (getCompressionBias()) {
-        case -1:
-            wLeft = 0.0;
-            break;
-        case 1:
-            wRight = 0.0;
-            break;
-        default:
-            break;
-        }
-        double wTotal = wLeft + wRight;
-        
-        // Subtract the SASH_WIDTH from preferredWidth and width. From here on, we'll deal with the
-        // width available to the controls and neglect the space used by the sash.
-        preferredWidth = Math.max(0, subtract(preferredWidth, getSashSize()));
-        width = Math.max(0, subtract(width, getSashSize()));
-        
-        int redistribute = subtract(preferredWidth, total);
-        
-        // Compute the minimum and maximum sizes for each child
-    	int leftMinimum = children[0].computeMinimumSize(vertical, height);
-    	int rightMinimum = children[1].computeMinimumSize(vertical, height);
-    	int leftMaximum = children[0].computeMaximumSize(vertical, height);
-    	int rightMaximum = children[1].computeMaximumSize(vertical, height);
-    	
-    	// Keep track of the available space for each child, given the minimum size of the other child
-    	int leftAvailable = Math.min(leftMaximum, Math.max(0, subtract(width, rightMinimum)));
-    	int rightAvailable = Math.min(rightMaximum, Math.max(0, subtract(width, leftMinimum)));
-    	
-        // Figure out the ideal size of the left child
-    	int idealLeft = Math.max(leftMinimum, Math.min(preferredWidth,  
-    			left + (int) Math.round(redistribute * wLeft / wTotal)));
-    	
-    	// If the right child can't use all its available space, let the left child fill it in
-    	idealLeft = Math.max(idealLeft, preferredWidth - rightAvailable);
-    	// Ensure the left child doesn't get larger than its available space
-    	idealLeft = Math.min(idealLeft, leftAvailable);
-    	
-    	// Check if the left child would prefer to be a different size 
-    	idealLeft = children[0].computePreferredSize(vertical, leftAvailable, height, idealLeft);
-    	
-    	// Ensure that the left child is larger than its minimum size
-    	idealLeft = Math.max(idealLeft, leftMinimum);
-        idealLeft = Math.min(idealLeft, leftAvailable);
-    	
-    	// Compute the right child width
-    	int idealRight = Math.max(rightMinimum, preferredWidth - idealLeft);
-    	
-		rightAvailable = Math.max(0, Math.min(rightAvailable, subtract(width, idealLeft)));
-    	idealRight = Math.min(idealRight, rightAvailable);
-    	idealRight = children[1].computePreferredSize(vertical, rightAvailable, height, idealRight);
-    	idealRight = Math.max(idealRight, rightMinimum);
-    	
-    	return new ChildSizes(idealLeft, idealRight, leftMaximum > leftMinimum 
-    	        && rightMaximum > rightMinimum 
-    	        && leftMinimum + rightMinimum < width);    	    	
-    }
-    
-    protected int doGetSizeFlags(boolean width) {
-        if (!children[0].isVisible()) {
-            return children[1].getSizeFlags(width);
-        }
-        
-        if (!children[1].isVisible()) {
-            return children[0].getSizeFlags(width);
-        }
-        
-        int leftFlags = children[0].getSizeFlags(width);
-        int rightFlags = children[1].getSizeFlags(width);
-        
-        return ((leftFlags | rightFlags) & ~SWT.MAX) | (leftFlags & rightFlags & SWT.MAX);
-    }
-	
-    /**
-     * Resize the parts on this tree to fit in <code>bounds</code>.
-     */
-    public void doSetBounds(Rectangle bounds) {
-        if (!children[0].isVisible()) {
-            children[1].setBounds(bounds);
-            getSash().setVisible(false);
-            return;
-        }
-        if (!children[1].isVisible()) {
-            children[0].setBounds(bounds);
-            getSash().setVisible(false);
-            return;
-        }
-        
-        bounds = Geometry.copy(bounds);
-        
-        boolean vertical = getSash().isVertical();
-
-        // If this is a horizontal sash, flip coordinate systems so 
-        // that we can eliminate special cases
-        if (!vertical) {
-        	Geometry.flipXY(bounds);
-        }
-
-        ChildSizes childSizes = computeChildSizes(bounds.width, bounds.height, getSash().getLeft(), getSash().getRight(), bounds.width);
-        
-        getSash().setVisible(true);
-        getSash().setEnabled(childSizes.resizable);
-        
-        Rectangle leftBounds = new Rectangle(bounds.x, bounds.y, childSizes.left, bounds.height);
-        Rectangle sashBounds = new Rectangle(leftBounds.x + leftBounds.width, bounds.y, this.getSashSize(), bounds.height);
-        Rectangle rightBounds = new Rectangle(sashBounds.x + sashBounds.width, bounds.y, childSizes.right, bounds.height);
-        
-        if (!vertical) {
-        	Geometry.flipXY(leftBounds);
-        	Geometry.flipXY(sashBounds);
-        	Geometry.flipXY(rightBounds);
-        }
-        
-        getSash().setBounds(sashBounds);
-        children[0].setBounds(leftBounds);
-        children[1].setBounds(rightBounds);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutTree#createControl(org.eclipse.swt.widgets.Composite)
-     */
-    public void createControl(Composite parent) {
-        children[0].createControl(parent);
-        children[1].createControl(parent);
-        getSash().createControl(parent);
-        
-        super.createControl(parent);
-    }
-    
-    //Added by hudsonr@us.ibm.com - bug 19524
-
-    public boolean isCompressible() {
-        return children[0].isCompressible() || children[1].isCompressible();
-    }
-
-    /**
-     * Returns 0 if there is no bias. Returns -1 if the first child should be of
-     * fixed size, and the second child should be compressed. Returns 1 if the
-     * second child should be of fixed size.
-     * @return the bias
-     */
-    public int getCompressionBias() {
-        boolean left = children[0].isCompressible();
-        boolean right = children[1].isCompressible();
-        if (left == right) {
-			return 0;
-		}
-        if (right) {
-			return -1;
-		}
-        return 1;
-    }
-	
-    boolean isLeftChild(LayoutTree toTest) {
-        return children[0] == toTest;
-    }
-
-    LayoutTree getChild(boolean left) {
-        int index = left ? 0 : 1;
-        return (children[index]);
-    }
-
-    /**
-     * Sets a child in this node
-     */
-    void setChild(boolean left, LayoutPart part) {
-        LayoutTree child = new LayoutTree(part);
-        setChild(left, child);
-        flushCache();
-    }
-
-    /**
-     * Sets a child in this node
-     */
-    void setChild(boolean left, LayoutTree child) {
-        int index = left ? 0 : 1;
-        children[index] = child;
-        child.setParent(this);
-        flushCache();
-    }
-
-    /**
-     * Returns a string representation of this object.
-     */
-    public String toString() {
-        String s = "<null>\n";//$NON-NLS-1$
-        if (part.getControl() != null) {
-			s = "<@" + part.getControl().hashCode() + ">\n";//$NON-NLS-2$//$NON-NLS-1$
-		}
-        String result = "["; //$NON-NLS-1$
-        if (children[0].getParent() != this) {
-			result = result + "{" + children[0] + "}" + s;//$NON-NLS-2$//$NON-NLS-1$
-		} else {
-			result = result + children[0] + s;
-		}
-
-        if (children[1].getParent() != this) {
-			result = result + "{" + children[1] + "}]";//$NON-NLS-2$//$NON-NLS-1$
-		} else {
-			result = result + children[1] + "]";//$NON-NLS-1$
-		}
-        return result;
-    }
-    
-    /**
-     * Create the sashes if the children are visible
-     * and dispose it if they are not.
-     */
-//    public void updateSashes(Composite parent) {
-//        if (parent == null)
-//            return;
-//        children[0].updateSashes(parent);
-//        children[1].updateSashes(parent);
-//        if (children[0].isVisible() && children[1].isVisible())
-//            getSash().createControl(parent);
-//        else
-//            getSash().dispose();
-//    }
-
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they should not be translated or equality tests will fail.
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-        if (!(children[0].isVisible())) {
-            if (!children[1].isVisible()) {
-                return;
-            }
-
-            children[1].describeLayout(buf);
-            return;
-        }
-
-        if (!children[1].isVisible()) {
-            children[0].describeLayout(buf);
-            return;
-        }
-
-        buf.append("("); //$NON-NLS-1$
-        children[0].describeLayout(buf);
-
-        buf.append(getSash().isVertical() ? "|" : "-"); //$NON-NLS-1$ //$NON-NLS-2$
-
-        children[1].describeLayout(buf);
-        buf.append(")"); //$NON-NLS-1$
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyAnimationFeedback.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyAnimationFeedback.java
deleted file mode 100644
index 919af43..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyAnimationFeedback.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Iterator;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.Region;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Creates an animation feedback that will morph the start rectangle to the end rectangle
- * for AnimationEngine.
- * 
- * @since 3.3
- *
- */
-public class LegacyAnimationFeedback extends RectangleAnimationFeedbackBase {
-	private static final int LINE_WIDTH = 1;
-
-	private Display display;
-	private Region shellRegion;
-
-	private Shell theShell;
-
-	public LegacyAnimationFeedback(Shell parentShell, Rectangle start,
-			Rectangle end) {
-		super(parentShell, start, end);
-	}
-
-	public void renderStep(AnimationEngine engine) {
-		if (shellRegion != null) {
-			shellRegion.dispose();
-			shellRegion = new Region(display);
-		}
-
-		// Iterate across the set of start/end rects
-		Iterator currentRects = getCurrentRects(engine.amount()).iterator();
-		while (currentRects.hasNext()) {
-			Rectangle curRect = (Rectangle) currentRects.next();
-			Rectangle rect = Geometry.toControl(theShell, curRect);
-			shellRegion.add(rect);
-			rect.x += LINE_WIDTH;
-			rect.y += LINE_WIDTH;
-			rect.width = Math.max(0, rect.width - 2 * LINE_WIDTH);
-			rect.height = Math.max(0, rect.height - 2 * LINE_WIDTH);
-
-			shellRegion.subtract(rect);
-		}
-
-		theShell.setRegion(shellRegion);
-
-		display.update();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.AnimationFeedbackBase#initialize(org.eclipse.ui.internal.AnimationEngine)
-	 */
-	public void initialize(AnimationEngine engine) {
-
-		theShell = new Shell(getAnimationShell(), SWT.NO_TRIM | SWT.ON_TOP);
-		display = theShell.getDisplay();
-		Color color = display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW);
-		theShell.setBackground(color);
-
-		// Ensure that the background won't show on the initial display
-		shellRegion = new Region(display);
-		theShell.setRegion(shellRegion);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.AnimationFeedbackBase#dispose()
-	 */
-	public void dispose() {
-		theShell.setVisible(false);
-		theShell.dispose();
-		shellRegion.dispose();
-	}
-
-	/**
-	 * Perform any initialization you want to have happen -before- the
-	 * amination starts
-	 */
-	public boolean jobInit(AnimationEngine engine) {
-		if (!super.jobInit(engine))
-			return false;
-		
-		// Compute the shell's bounds
-		Rectangle shellBounds = Geometry.copy((Rectangle) getStartRects()
-				.get(0));
-		Iterator startIter = getStartRects().iterator();
-		Iterator endIter = getEndRects().iterator();
-		while (startIter.hasNext()) {
-			shellBounds.add((Rectangle) startIter.next());
-			shellBounds.add((Rectangle) endIter.next());
-		}
-		theShell.setBounds(shellBounds);
-		// Making the shell visible will be slow on old video cards, so only start
-		// the timer once it is visible.
-		theShell.setVisible(true);
-		
-		return true;  // OK to go...
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
deleted file mode 100644
index da54214..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LegacyResourceSupport.java
+++ /dev/null
@@ -1,687 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.osgi.framework.Bundle;
-
-/**
- * Provides access to resource-specific classes, needed to provide
- * backwards compatibility for resource-specific functions which
- * could not be moved up from the generic workbench layer to the
- * IDE layer.
- */
-public final class LegacyResourceSupport {
-
-	private static String[] resourceClassNames = {
-        "org.eclipse.core.resources.IResource", //$NON-NLS-1$
-        "org.eclipse.core.resources.IContainer", //$NON-NLS-1$
-        "org.eclipse.core.resources.IFolder", //$NON-NLS-1$
-        "org.eclipse.core.resources.IProject", //$NON-NLS-1$
-        "org.eclipse.core.resources.IFile", //$NON-NLS-1$
-	};
-	
-    /**
-     * Cached value of
-     * <code>Class.forName("org.eclipse.core.resources.IResource")</code>;
-     * <code>null</code> if not initialized or not present.
-     * @since 3.0
-     */
-    private static Class iresourceClass = null;
-
-    /**
-     * Cached value of
-     * <code>Class.forName("org.eclipse.core.resources.IFile")</code>;
-     * <code>null</code> if not initialized or not present.
-     * @since 3.1
-     */
-    private static Class ifileClass;
-    
-    /**
-     * Cached value of
-     * <code>Class.forName("org.eclipse.ui.IContributorResourceAdapter")</code>;
-     * <code>null</code> if not initialized or not present.
-     * @since 3.0
-     */
-    private static Class icontributorResourceAdapterClass = null;
-
-    /**
-     * Cached value of </code> org.eclipse.ui.IContributorResourceAdapter.getAdaptedResource(IAdaptable) </code>
-     * <code>null</code> if not initialized or not present.
-     * 
-     * @since 3.3
-     */
-    private static Method getAdaptedResourceMethod = null;
-    
-    /**
-     * Cached value of </code> org.eclipse.ui.IContributorResourceAdapter2.getAdaptedResourceMapping(IAdaptable) </code>
-     * <code>null</code> if not initialized or not present.
-     * 
-     * @since 3.3
-     */
-    private static Method getAdaptedResourceMappingMethod = null;
-    
-    /**
-     * Cached value of
-     * <code>Class.forName("org.eclipse.ui.ide.IContributorResourceAdapter2")</code>;
-     * <code>null</code> if not initialized or not present.
-     * @since 3.1
-     */
-    private static Class icontributorResourceAdapter2Class = null;
-    
-    /**
-     * Cached value of
-     * <code>Class.forName("org.eclipse.ui.internal.ide.DefaultContributorResourceAdapter")</code>;
-     * <code>null</code> if not initialized or not present.
-     * @since 3.0
-     */
-    private static Class defaultContributorResourceAdapterClass = null;
-
-    /**
-     * Cached value for reflective result of <code>DefaultContributorRessourceAdapter.getDefault()</code>.
-     * <code>null</code> if not initialized or not present.
-     * 
-     * @since 3.3
-     */
-    private static Object defaultContributorResourceAdapter = null;
-    
-    /**
-     * Cached value of
-     * <code>Class.forName("org.eclipse.core.resources.mapping.ResourceMappingr")</code>;
-     * <code>null</code> if not initialized or not present.
-     * @since 3.0
-     */
-    private static Class resourceMappingClass = null;
-
-    /**
-     * Indicates whether the IDE plug-in (which supplies the
-     * resource contribution adapters) is even around.
-     */
-    private static boolean resourceAdapterPossible = true;
-
-
-    /**
-     * Returns <code>IFile.class</code> or <code>null</code> if the
-     * class is not available.
-     * <p>
-     * This method exists to avoid explicit references from the generic
-     * workbench to the resources plug-in.
-     * </p>
-     * 
-     * @return <code>IFile.class</code> or <code>null</code> if class
-     * not available
-     * @since 3.1
-     */
-    public static Class getFileClass() {
-        if (ifileClass != null) {
-            // tried before and succeeded
-            return ifileClass;
-        }
-        Class c = loadClass("org.eclipse.core.resources", "org.eclipse.core.resources.IFile"); //$NON-NLS-1$ //$NON-NLS-2$
-        if (c != null) {
-            // The class was found so record it
-            ifileClass = c;
-        }
-        return c;
-    }
-
-    /**
-     * Returns <code>IResource.class</code> or <code>null</code> if the
-     * class is not available.
-     * <p>
-     * This method exists to avoid explicit references from the generic
-     * workbench to the resources plug-in.
-     * </p>
-     * 
-     * @return <code>IResource.class</code> or <code>null</code> if class
-     * not available
-     * @since 3.0
-     */
-    public static Class getResourceClass() {
-        if (iresourceClass != null) {
-            // tried before and succeeded
-            return iresourceClass;
-        }
-        Class c = loadClass("org.eclipse.core.resources", "org.eclipse.core.resources.IResource"); //$NON-NLS-1$ //$NON-NLS-2$
-        if (c != null) {
-            // The class was found so record it
-            iresourceClass = c;
-        }
-        return c;
-    }
-
-    /**
-     * Returns <code>ResourceMapping.class</code> or <code>null</code> if the
-     * class is not available.
-     * <p>
-     * This method exists to avoid explicit references from the generic
-     * workbench to the resources plug-in.
-     * </p>
-     * 
-     * @return <code>ResourceMapping.class</code> or <code>null</code> if class
-     * not available
-     * @since 3.1
-     */
-    public static Class getResourceMappingClass() {
-        if (resourceMappingClass != null) {
-            // tried before and succeeded
-            return resourceMappingClass;
-        }
-        Class c = loadClass("org.eclipse.core.resources", "org.eclipse.core.resources.mapping.ResourceMapping"); //$NON-NLS-1$ //$NON-NLS-2$
-        if (c != null) {
-            // The class was found so record it
-            resourceMappingClass = c;
-        }
-        return c;
-    }
-    
-    /**
-     * Returns <code>IContributorResourceAdapter.class</code> or
-     * <code>null</code> if the class is not available.
-     * <p>
-     * This method exists to avoid explicit references from the generic
-     * workbench to the IDE plug-in.
-     * </p>
-     * 
-     * @return <code>IContributorResourceAdapter.class</code> or
-     * <code>null</code> if class not available
-     * @since 3.0
-     */
-    public static Class getIContributorResourceAdapterClass() {
-        if (icontributorResourceAdapterClass != null) {
-            // tried before and succeeded
-            return icontributorResourceAdapterClass;
-        }
-        Class c = loadClass("org.eclipse.ui.ide", "org.eclipse.ui.IContributorResourceAdapter"); //$NON-NLS-1$ //$NON-NLS-2$
-        if (c != null) {
-            // The class was found so record it
-            icontributorResourceAdapterClass = c;
-        }
-        return c;
-    }
-
-    /**
-     * Returns <code>IContributorResourceAdapter2.class</code> or
-     * <code>null</code> if the class is not available.
-     * <p>
-     * This method exists to avoid explicit references from the generic
-     * workbench to the IDE plug-in.
-     * </p>
-     * 
-     * @return <code>IContributorResourceAdapter.class</code> or
-     * <code>null</code> if class not available
-     * @since 3.1
-     */
-    public static Class getIContributorResourceAdapter2Class() {
-        if (icontributorResourceAdapter2Class != null) {
-            // tried before and succeeded
-            return icontributorResourceAdapter2Class;
-        }
-        Class c = loadClass("org.eclipse.ui.ide", "org.eclipse.ui.ide.IContributorResourceAdapter2"); //$NON-NLS-1$ //$NON-NLS-2$
-        if (c != null) {
-            // The class was found so record it
-            icontributorResourceAdapter2Class = c;
-        }
-        return c;
-    }
-    
-    private static Class loadClass(String bundleName, String className) {
-        if (!resourceAdapterPossible) {
-            // tried before and failed
-            return null;
-        }
-        Bundle bundle = Platform.getBundle(bundleName);
-        if (bundle == null) {
-            // Required plug-in is not around
-            // assume that it will never be around
-            resourceAdapterPossible = false;
-            return null;
-        }
-        // Required plug-in is around
-        // it's not our job to activate the plug-in
-        if (!BundleUtility.isActivated(bundle)) {
-            // assume it might come alive later
-            resourceAdapterPossible = true;
-            return null;
-        }
-        try {
-            return bundle.loadClass(className);
-        } catch (ClassNotFoundException e) {
-            // unable to load the class - sounds pretty serious
-            // treat as if the plug-in were unavailable
-            resourceAdapterPossible = false;
-            return null;
-        }
-    }
-    
-    /**
-     * Returns <code>DefaultContributorResourceAdapter.class</code> or
-     * <code>null</code> if the class is not available.
-     * <p>
-     * This method exists to avoid explicit references from the generic
-     * workbench to the IDE plug-in.
-     * </p>
-     * 
-     * @return <code>DefaultContributorResourceAdapter.class</code> or
-     * <code>null</code> if class not available
-     * @since 3.0
-     */
-    public static Class getDefaultContributorResourceAdapterClass() {
-        if (defaultContributorResourceAdapterClass != null) {
-            // tried before and succeeded
-            return defaultContributorResourceAdapterClass;
-        }
-        Class c = loadClass("org.eclipse.ui.ide", "org.eclipse.ui.internal.ide.DefaultContributorResourceAdapter"); //$NON-NLS-1$ //$NON-NLS-2$
-        if (c != null) {
-            // The class was found so record it
-            defaultContributorResourceAdapterClass = c;
-        }
-        return c;
-    }
-    
-    private static Object getDefaultContributorResourceAdapter() {
-        if (defaultContributorResourceAdapter != null) {
-            return defaultContributorResourceAdapter;
-        }
-        
-		// reflective equivalent of
-		//    resourceAdapter = DefaultContributorResourceAdapter.getDefault();
-		
-			Class c = LegacyResourceSupport.getDefaultContributorResourceAdapterClass();
-			if (c != null) {    			
-				try {
-					Method m  = c.getDeclaredMethod("getDefault", new Class[0]);//$NON-NLS-1$
-					defaultContributorResourceAdapter = m.invoke(null, new Object[0]);
-					return defaultContributorResourceAdapter;
-				} catch (SecurityException e) {
-					// shouldn't happen - but play it safe
-				} catch (NoSuchMethodException e) {
-					// shouldn't happen - but play it safe
-				} catch (IllegalArgumentException e) {
-					// shouldn't happen - but play it safe
-				} catch (IllegalAccessException e) {
-					// shouldn't happen - but play it safe
-				} catch (InvocationTargetException e) {
-					// shouldn't happen - but play it safe
-				} 
-    			
-    			
-			}
-		
-		return null;
-
-    }
-    
-    /**
-     * Returns <code>true</code> if the provided type name is an
-     * <code>IResource</code>, and <code>false</code> otherwise.
-     * @param objectClassName
-     * @return <code>true</code> if the provided type name is an
-     * <code>IResource</code>, and <code>false</code> otherwise.
-     * 
-     * @since 3.1
-     */
-    public static boolean isResourceType(String objectClassName) {
-        for (int i = 0; i < resourceClassNames.length; i++) {
-            if (resourceClassNames[i].equals(objectClassName)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Returns <code>true</code> if the provided type name is an
-     * <code>"org.eclipse.core.resources.mapping.ResourceMapping"</code>, and <code>false</code> otherwise.
-     * @param objectClassName
-     * @return <code>true</code> if the provided type name is an
-     * <code>"org.eclipse.core.resources.mapping.ResourceMapping"</code>, and <code>false</code> otherwise.
-     * 
-     * @since 3.1
-     */
-    public static boolean isResourceMappingType(String objectClassName) {
-        return objectClassName.equals("org.eclipse.core.resources.mapping.ResourceMapping"); //$NON-NLS-1$
-    }
-    
-    /**
-     * Returns the class search order starting with <code>extensibleClass</code>.
-     * The search order is defined in this class' comment.
-     * 
-     * @since 3.1
-     */
-    private static boolean isInstanceOf(Class clazz, String type) {
-		if (clazz.getName().equals(type)) {
-			return true;
-		}
-		Class superClass= clazz.getSuperclass();
-		if (superClass != null && isInstanceOf(superClass, type)) {
-			return true;
-		}
-		Class[] interfaces= clazz.getInterfaces();
-		for (int i= 0; i < interfaces.length; i++) {
-			if (isInstanceOf(interfaces[i], type)) {
-				return true;
-			}
-		} 
-		return false;
-	}
-    
-    /**
-     * Returns the adapted resource using the <code>IContributorResourceAdapter</code>
-     * registered for the given object. If the Resources plug-in is not loaded
-     * the object can not be adapted.
-     * 
-     * @param object the object to adapt to <code>IResource</code>.
-     * @return returns the adapted resource using the <code>IContributorResourceAdapter</code>
-     * or <code>null</code> if the Resources plug-in is not loaded.
-     * 
-     * @since 3.1
-     */
-    public static Object getAdaptedContributorResource(Object object) {
-		Class resourceClass = LegacyResourceSupport.getResourceClass();
-		if (resourceClass == null) {
-			return null;
-		}
-		if (resourceClass.isInstance(object)) {
-			return null;
-		}
-		if (object instanceof IAdaptable) {
-			IAdaptable adaptable = (IAdaptable) object;
-			Class contributorResourceAdapterClass = LegacyResourceSupport.getIContributorResourceAdapterClass();
-			if (contributorResourceAdapterClass == null) {
-				return adaptable.getAdapter(resourceClass);
-			}
-			Object resourceAdapter = adaptable.getAdapter(contributorResourceAdapterClass);
-			if (resourceAdapter == null) {
-			    resourceAdapter = LegacyResourceSupport.getDefaultContributorResourceAdapter();
-			    if (resourceAdapter == null) {
-					return null;
-				}
-			}
-			// reflective equivalent of
-			//    result = ((IContributorResourceAdapter) resourceAdapter).getAdaptedResource(adaptable);
-			
-				Method m = getContributorResourceAdapterGetAdaptedResourceMethod();
-				if (m != null) {
-					try {
-						return m.invoke(resourceAdapter, new Object[]{adaptable});
-					} catch (IllegalArgumentException e) {
-						// shouldn't happen - but play it safe
-					} catch (IllegalAccessException e) {
-						// shouldn't happen - but play it safe
-					} catch (InvocationTargetException e) {
-						// shouldn't happen - but play it safe
-					}
-				}
-			
-		}
-		return null;
-	}
-    
-    private static Method getContributorResourceAdapterGetAdaptedResourceMethod() {
-        if (getAdaptedResourceMethod != null) {
-            return getAdaptedResourceMethod;
-        }
-      
-        Class c = getIContributorResourceAdapterClass();
-        if (c != null) {
-            try {
-				getAdaptedResourceMethod = c.getDeclaredMethod("getAdaptedResource", new Class[]{IAdaptable.class}); //$NON-NLS-1$
-				return getAdaptedResourceMethod;
-			} catch (SecurityException e) {
-				// shouldn't happen - but play it safe
-			} catch (NoSuchMethodException e) {
-				// shouldn't happen - but play it safe
-			} 
-            	
-        }
-    	
-    	return null;
-	}
-
-
-    private static Method getContributorResourceAdapter2GetAdaptedResourceMappingMethod() {
-        if (getAdaptedResourceMappingMethod != null) {
-            return getAdaptedResourceMappingMethod;
-        }
-       
-        Class c = getIContributorResourceAdapter2Class();
-        if (c != null) {
-            try {
-				getAdaptedResourceMappingMethod = c.getDeclaredMethod("getAdaptedResourceMapping", new Class[]{IAdaptable.class}); //$NON-NLS-1$
-				return getAdaptedResourceMappingMethod;
-			} catch (SecurityException e) {
-				// do nothing - play it safe
-			} catch (NoSuchMethodException e) {
-				// do nothing - play it safe
-			} 
-            	
-        }
-    	
-    	return null;
-	}
-
-	/**
-     * Returns the adapted resource mapping using the <code>IContributorResourceAdapter2</code>
-     * registered for the given object. If the Resources plug-in is not loaded
-     * the object can not be adapted.
-     * 
-     * @param object the object to adapt to <code>ResourceMapping</code>.
-     * @return returns the adapted resource using the <code>IContributorResourceAdapter2</code>
-     * or <code>null</code> if the Resources plug-in is not loaded.
-     * 
-     * @since 3.1
-     */
-    public static Object getAdaptedContributorResourceMapping(Object object) {
-        Class resourceMappingClass = LegacyResourceSupport.getResourceMappingClass();
-        if (resourceMappingClass == null) {
-            return null;
-        }
-        if (resourceMappingClass.isInstance(object)) {
-            return null;
-        }
-        if (object instanceof IAdaptable) {
-            IAdaptable adaptable = (IAdaptable) object;
-            Class contributorResourceAdapterClass = LegacyResourceSupport.getIContributorResourceAdapterClass();
-            if (contributorResourceAdapterClass == null) {
-                return adaptable.getAdapter(resourceMappingClass);
-            }
-            Class contributorResourceAdapter2Class = LegacyResourceSupport.getIContributorResourceAdapter2Class();
-            if (contributorResourceAdapter2Class == null) {
-                return adaptable.getAdapter(resourceMappingClass);
-            }
-            Object resourceAdapter = adaptable.getAdapter(contributorResourceAdapterClass);
-            Object resourceMappingAdapter;
-			if (resourceAdapter != null && contributorResourceAdapter2Class.isInstance(resourceAdapter)) {
-            	// The registered adapter also handles resource mappings
-            	resourceMappingAdapter = resourceAdapter;
-            } else {
-            	// Either there is no registered adapter or it doesn't handle resource mappings.
-            	// In this case, we will use the default contribution adapter
-                resourceMappingAdapter = getDefaultContributorResourceAdapter();
-                if (resourceMappingAdapter == null) {
-                    return null;
-                }
-            }
-            
-           
-	            // reflective equivalent of
-	            //    result = ((IContributorResourceAdapter2) resourceAdapter).getAdaptedResource(adaptable);
-
-	         Method m = getContributorResourceAdapter2GetAdaptedResourceMappingMethod();
-	         if (m != null) {
-	            	
-				try {
-					Object result  = m.invoke(resourceMappingAdapter, new Object[]{adaptable});
-					if (result != null) {
-		           		return result;
-		           	}
-				} catch (IllegalArgumentException e) {
-					 // shouldn't happen - but play it safe
-				} catch (IllegalAccessException e) {
-					 // shouldn't happen - but play it safe
-				} catch (InvocationTargetException e) {
-					 // shouldn't happen - but play it safe
-				}
-	            	
-	         }
-            
-            
-            // If we get here, that means that the object in question doesn't adapt to resource mapping
-            // and it's contributed adapter doesn't do the adaptation either.
-            // Before we fail, we will attempt to adapt the object to IResource and then to ResourceMapping
-            Object r = getAdaptedContributorResource(object);
-            if (r != null) {
-            	return Platform.getAdapterManager().getAdapter(r, resourceMappingClass);
-            }
-            
-            // we've exhausted every avenue so just return null
-            return null;
-        }
-        // Fallback to querying the adapter manager directly when the object isn't an IAdaptable
-        return Platform.getAdapterManager().getAdapter(object, resourceMappingClass);
-    }
-    
-    /**
-     * Adapts a selection to the given objectClass considering the Legacy resource 
-     * support. Non resource objectClasses are adapted using the <code>IAdapterManager</code>
-     * and this may load the plug-in that contributes the adapter factory.
-     * <p>
-     * The returned selection will only contain elements successfully adapted.
-     * </p>
-     * @param selection the selection to adapt
-     * @param objectClass the class name to adapt the selection to
-     * @return an adapted selection
-     * 
-     * @since 3.1
-     */
-    public static IStructuredSelection adaptSelection(IStructuredSelection selection, String objectClass) {
-		List newSelection = new ArrayList(10);
-		for (Iterator it = selection.iterator(); it.hasNext();) {
-			Object element = it.next();
-			Object adaptedElement = getAdapter(element, objectClass);		
-			if (adaptedElement != null) {
-				newSelection.add(adaptedElement);
-			}
-		}
-		return new StructuredSelection(newSelection);
-	}
-    
-    /**
-     * Adapts an object to a specified objectClass considering the Legacy resource 
-     * support. Non resource objectClasses are adapted using the <code>IAdapterManager</code>
-     * and this may load the plug-in that contributes the adapter factory.
-     * <p>
-     * The returned selection will be of the same size as the original, and elements that could
-     * not be adapted are added to the returned selection as is.
-     * </p>
-     * @param element the element to adapt
-     * @param objectClass the class name to adapt the selection to
-     * @return an adapted element or <code>null</code> if the 
-     * element could not be adapted.
-     * 
-     * @since 3.1
-     */    
-    public static Object getAdapter(Object element, String objectClass) {
-		Object adaptedElement = null;
-		if (isInstanceOf(element.getClass(), objectClass)) {
-			adaptedElement = element;
-		} else {		
-			// Handle IResource
-			if (LegacyResourceSupport.isResourceType(objectClass)) {
-				adaptedElement = getAdaptedResource(element);
-            } else if (LegacyResourceSupport.isResourceMappingType(objectClass)) {
-                adaptedElement = getAdaptedResourceMapping(element);
-                if (adaptedElement == null) {
-                    // The object doesn't adapt directly so check if it adapts transitively
-                    Object resource = getAdaptedResource(element);
-                    if (resource != null) {
-                        adaptedElement =( (IAdaptable)resource).getAdapter(LegacyResourceSupport.getResourceMappingClass());
-                    }
-                }
-			} else {
-				// Handle all other types by using the adapter factory.
-				adaptedElement = Platform.getAdapterManager().loadAdapter(element, objectClass);
-			}
-		}
-		return adaptedElement;
-	}
-
-	/**
-     * Adapt the given element to an <code>IResource</code> using the following 
-     * search order:
-     * <ol>
-     * <li> using the IContributorResourceAdapter registered for the given element, or
-     * <li> directly asking the element if it adapts.
-     * </ol>
-     * 
-     * @param element the element to adapt
-     * @return an <code>IResource</code> instance if the element could be adapted or <code>null</code>
-     * otherwise.
-     * @since 3.1
-     */
-    public static Object getAdaptedResource(Object element) {
-		Class resourceClass = LegacyResourceSupport.getResourceClass();
-		Object adaptedValue = null;
-		if (resourceClass != null) {
-			if (resourceClass.isInstance(element)) {
-				adaptedValue = element;
-			} else {
-				adaptedValue = LegacyResourceSupport.getAdaptedContributorResource(element);
-			}
-		}
-		return adaptedValue;
-	}
-
-    /**
-     * Adapt the given element to an <code>ResourceMapping</code> using the following 
-     * search order:
-     * <ol>
-     * <li> using the IContributorResourceAdapter2 registered for the given element, or
-     * <li> directly asking the element if it adapts.
-     * </ol>
-     * 
-     * @param element the element to adapt
-     * @return an <code>ResourceMapping</code> instance if the element could be adapted or <code>null</code>
-     * otherwise.
-     * @since 3.1
-     */
-    public static Object getAdaptedResourceMapping(Object element) {
-        Class resourceMappingClass = LegacyResourceSupport.getResourceMappingClass();
-        Object adaptedValue = null;
-        if (resourceMappingClass != null) {
-            if (resourceMappingClass.isInstance(element)) {
-                adaptedValue = element;
-            } else {
-                adaptedValue = LegacyResourceSupport.getAdaptedContributorResourceMapping(element);
-            }
-        }
-        return adaptedValue;
-    }
-    
-    /**
-     * Prevents construction
-     */
-    private LegacyResourceSupport() {
-        // do nothing
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LocalWorkingSetManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LocalWorkingSetManager.java
deleted file mode 100644
index bd729c8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LocalWorkingSetManager.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ui.ILocalWorkingSetManager;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkingSet;
-import org.osgi.framework.BundleContext;
-
-
-public class LocalWorkingSetManager extends AbstractWorkingSetManager implements ILocalWorkingSetManager {
-
-	public LocalWorkingSetManager(BundleContext context) {
-		super(context);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public void removeWorkingSet(IWorkingSet workingSet) {
-		internalRemoveWorkingSet(workingSet);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public void addRecentWorkingSet(IWorkingSet workingSet) {
-		internalAddRecentWorkingSet(workingSet);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public void saveState(IMemento memento) {
-        saveWorkingSetState(memento);
-        saveMruList(memento);
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public void restoreState(IMemento memento) {
-		Assert.isNotNull(memento);
-		Assert.isTrue(getWorkingSets().length == 0);
-        restoreWorkingSetState(memento);
-        restoreMruList(memento);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LockToolBarAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LockToolBarAction.java
deleted file mode 100644
index b95e516..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/LockToolBarAction.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-
-/**
- * The <code>LockToolBarAction</code> is used to lock the toolbars for the
- * workbench.  The toolbar for all perspectives is locked.
- */
-public class LockToolBarAction extends Action implements
-        ActionFactory.IWorkbenchAction {
-
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Create a new instance of <code>LockToolBarAction</code>
-     * 
-     * @param window the workbench window this action applies to
-     */
-    public LockToolBarAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.LockToolBarAction_text);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        setActionDefinitionId("org.eclipse.ui.window.lockToolBar"); //$NON-NLS-1$
-        // @issue missing action id
-        setToolTipText(WorkbenchMessages.LockToolBarAction_toolTip);
-        setEnabled(true);
-        // queue the update for the checked state since this action is created 
-        // before the coolbar
-        window.getWorkbench().getDisplay().asyncExec(new Runnable() {
-            public void run() {
-                if (workbenchWindow != null) {
-                    setChecked(((WorkbenchWindow) workbenchWindow)
-                            .isCoolBarLocked());
-                }
-            }
-        });
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.LOCK_TOOLBAR_ACTION);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        boolean locked = isChecked();
-        ((WorkbenchWindow) workbenchWindow).lockCoolBar(locked);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     */
-    public void dispose() {
-        workbenchWindow = null;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MessageLine.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MessageLine.java
deleted file mode 100644
index 28dd6a0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MessageLine.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * A message line displaying a status.
- */
-public class MessageLine extends CLabel {
-
-    private Color fNormalMsgAreaBackground;
-
-    /**
-     * Creates a new message line as a child of the given parent.
-     */
-    public MessageLine(Composite parent) {
-        this(parent, SWT.LEFT);
-    }
-
-    /**
-     * Creates a new message line as a child of the parent and with the given SWT stylebits.
-     */
-    public MessageLine(Composite parent, int style) {
-        super(parent, style);
-        fNormalMsgAreaBackground = null;
-    }
-
-    private Image findImage(IStatus status) {
-        if (status.isOK()) {
-            return null;
-        } else if (status.matches(IStatus.ERROR)) {
-            return PlatformUI.getWorkbench().getSharedImages().getImage(
-                    ISharedImages.IMG_OBJS_ERROR_TSK);
-        } else if (status.matches(IStatus.WARNING)) {
-            return PlatformUI.getWorkbench().getSharedImages().getImage(
-                    ISharedImages.IMG_OBJS_WARN_TSK);
-        } else if (status.matches(IStatus.INFO)) {
-            return PlatformUI.getWorkbench().getSharedImages().getImage(
-                    ISharedImages.IMG_OBJS_INFO_TSK);
-        }
-        return null;
-    }
-
-    /**
-     * Sets the message and image to the given status.
-     * <code>null</code> is a valid argument and will set the empty text and no image
-     */
-    public void setErrorStatus(IStatus status) {
-        if (status != null) {
-            String message = status.getMessage();
-            if (message != null && message.length() > 0) {
-                setText(message);
-                setImage(findImage(status));
-                setBackground(JFaceColors.getErrorBackground(getDisplay()));
-                return;
-            }
-        }
-        setText(""); //$NON-NLS-1$	
-        setImage(null);
-        setBackground(fNormalMsgAreaBackground);
-    }
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Model.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Model.java
deleted file mode 100644
index 023a914..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Model.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Represents an object with state that will notifies a set of listeners
- * whenever its state changes 
- */
-public class Model {
-
-    /**
-     * Current state of the model
-     */
-    private Object state;
-
-    /**
-     * Set of objects that will be notified about state changes
-     */
-    private List views = new ArrayList(1);
-
-    /**
-     * Creates a new model with the given initial state.
-     * 
-     * @param initialState
-     */
-    public Model(Object initialState) {
-        state = initialState;
-    }
-
-    /**
-     * Returns the current state of the model.
-     * 
-     * @return the current model state
-     */
-    public Object getState() {
-        return state;
-    }
-
-    /**
-     * Sets the current state of the model.
-     * 
-     * @param newState the new state of the model
-     * @param toOmit change listener that should be omitted from change notifications (or null if all
-     * listeners should be notified). 
-     */
-    public void setState(Object newState, IChangeListener toOmit) {
-        if (areEqual(newState, state)) {
-            return;
-        }
-
-        state = newState;
-
-        Iterator iter = views.iterator();
-        while (iter.hasNext()) {
-            IChangeListener next = (IChangeListener) iter.next();
-
-            if (next != toOmit) {
-                next.update(true);
-            }
-        }
-    }
-
-    private boolean areEqual(Object o1, Object o2) {
-        if (o1 == null) {
-            return o2 == null;
-        }
-        if (o2 == null) {
-            return false;
-        }
-
-        return o1.equals(o2);
-    }
-
-    /**
-     * Adds the given listener to the set of listeners that will be
-     * notified when the state changes. 
-     * 
-     * @param toAdd
-     */
-    public void addChangeListener(IChangeListener changeListener) {
-        changeListener.update(false);
-        views.add(changeListener);
-    }
-
-    /**
-     * Stops this model from sending change events from the given listener.
-     * 
-     * @param toRemove
-     */
-    public void removeChangeListener(IChangeListener changeListener) {
-        views.remove(changeListener);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MultiEditorInnerPane.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MultiEditorInnerPane.java
deleted file mode 100644
index 4622afb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/MultiEditorInnerPane.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.part.MultiEditor;
-
-/**
- * Implements a pane of each editor inside a MultiEditor.
- */
-public class MultiEditorInnerPane extends EditorPane {
-
-    EditorPane parentPane;
-
-    /**
-     * Constructor for MultiEditorInnerPane.
-     */
-    public MultiEditorInnerPane(EditorPane pane, IEditorReference ref,
-            WorkbenchPage page, EditorStack workbook) {
-        super(ref, page, workbook);
-        parentPane = pane;
-    }
-
-    /**
-     * Returns the outer editor.
-     */
-    public EditorPane getParentPane() {
-        return parentPane;
-    }
-
-    /**
-     * Update the gradient on the inner editor title bar
-     */
-    private void updateGradient() {
-        MultiEditor multiEditor = (MultiEditor) parentPane.getPartReference()
-                .getPart(true);
-        if (multiEditor != null) {
-            IEditorPart part = (IEditorPart) this.getEditorReference().getPart(
-                    true);
-            if (part != null) {
-				multiEditor.updateGradient(part);
-			}
-        }
-    }
-
-    /**
-     * Indicate focus in part.
-     */
-    public void showFocus(boolean inFocus) {
-        super.showFocus(inFocus);
-        updateGradient();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartPane.
-     */
-    /* package */void shellDeactivated() {
-        super.shellDeactivated();
-        updateGradient();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartPane.
-     */
-    /* package */void shellActivated() {
-        super.shellActivated();
-        updateGradient();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistory.java
deleted file mode 100644
index 5fb2f23..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistory.java
+++ /dev/null
@@ -1,929 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.INavigationHistory;
-import org.eclipse.ui.INavigationLocation;
-import org.eclipse.ui.INavigationLocationProvider;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-
-/**
- * Implementation of the back and forward actions.
- */
-public class NavigationHistory implements INavigationHistory {
-
-    private static final int CAPACITY = 50;
-
-    private NavigationHistoryAction backwardAction;
-
-    private NavigationHistoryAction forwardAction;
-
-    private int ignoreEntries;
-
-    private ArrayList history = new ArrayList(CAPACITY);
-    
-    Map perTabHistoryMap = new HashMap();
-
-    private ArrayList editors = new ArrayList(CAPACITY);
-
-    private WorkbenchPage page;
-
-    private int activeEntry = 0;
-
-    /**
-     * Creates a new NavigationHistory to keep the NavigationLocation
-     * entries of the specified page.
-     */
-    public NavigationHistory(final WorkbenchPage page) {
-        this.page = page;
-        page.addPartListener(new IPartListener2() {
-            public void partActivated(IWorkbenchPartReference partRef) {
-            }
-
-            public void partBroughtToTop(IWorkbenchPartReference partRef) {
-            }
-
-            public void partDeactivated(IWorkbenchPartReference partRef) {
-            }
-
-            public void partOpened(IWorkbenchPartReference partRef) {
-            }
-			
-            public void partHidden(IWorkbenchPartReference partRef) {
-            }
-			
-            public void partVisible(IWorkbenchPartReference partRef) {
-            }
-
-            public void partClosed(IWorkbenchPartReference partRef) {
-            	if (isPerTabHistoryEnabled() && partRef instanceof EditorReference) {
-            		if (!((EditorReference)partRef).isDisposed()) {
-	            		Object editorTabCookie = ((EditorReference)partRef).getPane();
-	            		disposeHistoryForTab(editorTabCookie);
-	            		updateActions();
-            		}
-            	}
-				updateNavigationHistory(partRef, true);
-            }
-			
-			public void partInputChanged(IWorkbenchPartReference partRef) {
-				updateNavigationHistory(partRef, false);
-			}
-			
-			private void updateNavigationHistory(IWorkbenchPartReference partRef, boolean partClosed) {
-                if (partRef != null && partRef.getPart(false) instanceof IEditorPart) {
-                    IEditorPart editor = (IEditorPart) partRef.getPart(false);
-                    IEditorInput input = editor.getEditorInput();
-                    String id = editor.getSite().getId();
-                    Iterator e = editors.iterator();
-                    NavigationHistoryEditorInfo info = null;
-                    NavigationHistoryEditorInfo currentInfo = null;
-                    NavigationHistoryEntry current = getEntry(activeEntry);
-                    if (current != null) {
-						currentInfo = current.editorInfo;
-					}
-                    while (e.hasNext()) {
-                        info = (NavigationHistoryEditorInfo) e.next();
-                        if (id.equals(info.editorID)
-                                && input.equals(info.editorInput)) {
-                            if (partClosed && info != currentInfo) {
-								info.handlePartClosed();
-							}
-                            break;
-                        }
-						info = null;
-                    }
-                    if (info == null) {
-						return;
-					}
-                    boolean isEntryDisposed = false;
-                    e = history.iterator();
-                    int i = 0;
-                    while (e.hasNext()) {
-                        NavigationHistoryEntry entry = (NavigationHistoryEntry) e
-                                .next();
-                        if (entry.editorInfo == info) {
-							if (!entry.handlePartClosed()) {
-                                // update the active entry since we are removing an item
-                                if (i < activeEntry) {
-                                    activeEntry--;
-                                } else if (i == activeEntry) {
-                                    if (i != 0) {
-										activeEntry--;
-									}
-                                } else {
-                                    // activeEntry is before item we deleted
-                                    i++;
-                                }
-                                isEntryDisposed = true;
-                                e.remove();
-                                disposeEntry(entry);
-                            } else {
-                                i++;
-                            }
-						}
-                    }
-                    
-                    /*
-                     * Promote the entry of the last closed editor to be the active
-                     * one, see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=154431 
-                     */ 
-                    if (!isEntryDisposed && page.getActiveEditor() == null && activeEntry < history.size())
-                    	activeEntry++;
-                    
-                    updateActions();
-                }
-            }
-        });
-    }
-
-    private Display getDisplay() {
-        return page.getWorkbenchWindow().getShell().getDisplay();
-    }
-    
-    private boolean isPerTabHistoryEnabled() {
-    	return ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).isPerTabHistoryEnabled();
-    }
-
-    /*
-     * Adds an editor to the editor history without getting its location.
-     */
-    public void markEditor(final IEditorPart part) {
-        if (ignoreEntries > 0 || part == null) {
-			return;
-		}
-        /* Ignore all entries until the async exec runs. Workaround to avoid 
-         * extra entry when using Open Declaration (F3) that opens another editor. */
-        ignoreEntries++;
-        getDisplay().asyncExec(new Runnable() {
-            public void run() {
-                if (--ignoreEntries == 0) {
-	                if (part.getEditorSite() instanceof EditorSite) {
-						EditorSite site = (EditorSite) part.getEditorSite();
-		                Control c = site.getPane().getControl();
-		                if (c == null || c.isDisposed()) {
-							return;
-						}
-		                NavigationHistoryEntry e = getEntry(activeEntry);
-		                if (e != null
-		                        && part.getEditorInput() != e.editorInfo.editorInput) {
-							updateEntry(e);
-						}
-		                addEntry(part);
-	                }
-                }
-            }
-        });
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on INavigationHistory.
-     */
-    public void markLocation(IEditorPart part) {
-        addEntry(part);
-    }
-
-    /*
-     * Return the backward history entries.  Return in restore order (i.e., the
-     * first entry is the entry that would become active if the "Backward" action 
-     * was executed).
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    NavigationHistoryEntry[] getBackwardEntries() {
-    	if (isPerTabHistoryEnabled()) {
-    		return getEntriesForTab(false);
-    	}
-        int length = activeEntry;
-        NavigationHistoryEntry[] entries = new NavigationHistoryEntry[length];
-        for (int i = 0; i < activeEntry; i++) {
-            entries[activeEntry - 1 - i] = getEntry(i);
-        }
-        return entries;
-    }
-
-    /*
-     * Return the forward history entries.  Return in restore order (i.e., the first
-     * entry is the entry that would become active if the "Forward" action was
-     * executed).
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    NavigationHistoryEntry[] getForwardEntries() {
-    	if (isPerTabHistoryEnabled()) {
-    		return getEntriesForTab(true);
-    	}
-        int length = history.size() - activeEntry - 1;
-        length = Math.max(0, length);
-        NavigationHistoryEntry[] entries = new NavigationHistoryEntry[length];
-        for (int i = activeEntry + 1; i < history.size(); i++) {
-            entries[i - activeEntry - 1] = getEntry(i);
-        }
-        return entries;
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on INavigationHistory.
-     */
-    public INavigationLocation[] getLocations() {
-        INavigationLocation result[] = new INavigationLocation[history.size()];
-        for (int i = 0; i < result.length; i++) {
-            NavigationHistoryEntry e = (NavigationHistoryEntry) history.get(i);
-            result[i] = e.location;
-        }
-        return result;
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on INavigationHistory.
-     */
-    public INavigationLocation getCurrentLocation() {
-        NavigationHistoryEntry entry = getEntry(activeEntry);
-        return entry == null ? null : entry.location;
-    }
-
-    /**
-     * Disposes this NavigationHistory and all entries.
-     */
-    public void dispose() {
-    	disposeHistoryForTabs();
-        Iterator e = history.iterator();
-        while (e.hasNext()) {
-            NavigationHistoryEntry entry = (NavigationHistoryEntry) e.next();
-            disposeEntry(entry);
-        }
-    }
-
-    /**
-     * Keeps a reference to the forward action to update its state
-     * whenever needed.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    void setForwardAction(NavigationHistoryAction action) {
-        forwardAction = action;
-        updateActions();
-    }
-
-    /**
-     * Keeps a reference to the backward action to update its state
-     * whenever needed.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    void setBackwardAction(NavigationHistoryAction action) {
-        backwardAction = action;
-        updateActions();
-    }
-
-    /*
-     * Returns the history entry indexed by <code>index</code>
-     */
-    private NavigationHistoryEntry getEntry(int index) {
-        if (0 <= index && index < history.size()) {
-			return (NavigationHistoryEntry) history.get(index);
-		}
-        return null;
-    }
-
-    /*
-     * Adds the specified entry to the history.
-     */
-    private void add(NavigationHistoryEntry entry) {
-        removeForwardEntries();
-        if (history.size() == CAPACITY) {
-            NavigationHistoryEntry e = (NavigationHistoryEntry) history
-                    .remove(0);
-            disposeEntry(e);
-        }
-        history.add(entry);
-        activeEntry = history.size() - 1;
-    }
-
-    /*
-     * Remove all entries after the active entry.
-     */
-    private void removeForwardEntries() {
-        int length = history.size();
-        for (int i = activeEntry + 1; i < length; i++) {
-            NavigationHistoryEntry e = (NavigationHistoryEntry) history
-                    .remove(activeEntry + 1);
-            disposeEntry(e);
-        }
-    }
-
-    /*
-     * Adds a location to the history.
-     */
-    private void addEntry(IEditorPart part) {
-        if (ignoreEntries > 0 || part == null) {
-			return;
-		}
-
-        if (isPerTabHistoryEnabled()) {
-        	markLocationForTab(part);
-        }
-        INavigationLocation location = null;
-        if (part instanceof INavigationLocationProvider) {
-			location = ((INavigationLocationProvider) part)
-                    .createNavigationLocation();
-		}
-
-        NavigationHistoryEntry current = getEntry(activeEntry);
-        if (current != null && current.editorInfo.memento != null) {
-            current.editorInfo.restoreEditor();
-            checkDuplicates(current.editorInfo);
-        }
-        NavigationHistoryEntry e = createEntry(page, part, location);
-        if (current == null) {
-            add(e);
-        } else {
-            if (e.mergeInto(current)) {
-                disposeEntry(e);
-                removeForwardEntries();
-            } else {
-                add(e);
-            }
-        }
-        printEntries("added entry"); //$NON-NLS-1$
-        updateActions();
-    }
-
-    /*
-     * Prints all the entries in the console. For debug only.
-     */
-    private void printEntries(String label) {
-        if (false) {
-            System.out.println("+++++ " + label + "+++++ "); //$NON-NLS-1$ //$NON-NLS-2$
-            int size = history.size();
-            for (int i = 0; i < size; i++) {
-                String append = activeEntry == i ? ">>" : ""; //$NON-NLS-1$ //$NON-NLS-2$
-                System.out.println(append
-                        + "Index: " + i + " " + history.get(i)); //$NON-NLS-1$ //$NON-NLS-2$
-            }
-        }
-    }
-
-    /*
-     * Returns true if the forward action can be performed otherwise returns false.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    /* package */boolean canForward() {
-    	if (isPerTabHistoryEnabled()) {
-    		return hasEntriesForTab(true);
-    	}
-        return (0 <= activeEntry + 1) && (activeEntry + 1 < history.size());
-    }
-
-    /*
-     * Returns true if the backward action can be performed otherwise returns false.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    /* package */boolean canBackward() {
-    	if (isPerTabHistoryEnabled()) {
-    		return hasEntriesForTab(false);
-    	}
-        return (0 <= activeEntry - 1) && (activeEntry - 1 < history.size());
-    }
-
-    /*
-     * Update the actions enable/disable and tooltip state.
-     */
-    private void updateActions() {
-        if (backwardAction != null) {
-			backwardAction.update();
-		}
-        if (forwardAction != null) {
-			forwardAction.update();
-		}
-    }
-
-    /*
-     * Restore the specified entry
-     */
-    private void gotoEntry(NavigationHistoryEntry entry) {
-        if (entry == null) {
-			return;
-		}
-        try {
-            ignoreEntries++;
-            if (entry.editorInfo.memento != null) {
-                entry.editorInfo.restoreEditor();
-                checkDuplicates(entry.editorInfo);
-            }
-            entry.restoreLocation();
-            updateActions();
-            printEntries("goto entry"); //$NON-NLS-1$
-        } finally {
-            ignoreEntries--;
-        }
-    }
-
-    /*
-     * update the active entry
-     */
-    private void updateEntry(NavigationHistoryEntry activeEntry) {
-        if (activeEntry == null || activeEntry.location == null) {
-			return;
-		}
-        activeEntry.location.update();
-        printEntries("updateEntry"); //$NON-NLS-1$
-    }
-
-    /*
-     * Perform the forward action by getting the next location and restoring
-     * its context.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    void forward() {
-    	if (isPerTabHistoryEnabled()) {
-    		forwardForTab();
-    		return;
-    	}
-        if (canForward()) {
-			shiftEntry(true);
-		}
-    }
-
-    /*
-     * Perform the backward action by getting the previous location and restoring
-     * its context.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    void backward() {
-    	if (isPerTabHistoryEnabled()) {
-    		backwardForTab();
-    		return;
-    	}
-        if (canBackward()) {
-			shiftEntry(false);
-		}
-    }
-
-    /*
-     * Shift the history back or forward
-     */
-    private void shiftEntry(boolean forward) {
-        updateEntry(getEntry(activeEntry));
-        if (forward) {
-			activeEntry++;
-		} else {
-			activeEntry--;
-		}
-        NavigationHistoryEntry entry = getEntry(activeEntry);
-        if (entry != null) {
-			gotoEntry(entry);
-		}
-    }
-
-    /*
-     * Shift the history to the given entry.
-     * <p>
-     * (Called by NavigationHistoryAction)
-     * </p>
-     */
-    void shiftCurrentEntry(NavigationHistoryEntry entry, boolean forward) {
-    	if (isPerTabHistoryEnabled()) {
-    		gotoEntryForTab(entry, forward);
-    		return;
-    	}
-        updateEntry(getEntry(activeEntry));
-        activeEntry = history.indexOf(entry);
-        gotoEntry(entry);
-    }
-
-    /**
-     * Save the state of this history into the memento.
-     */
-    void saveState(IMemento memento) {
-        NavigationHistoryEntry cEntry = getEntry(activeEntry);
-        if (cEntry == null || !cEntry.editorInfo.isPersistable()) {
-			return;
-		}
-
-        ArrayList editors = (ArrayList) this.editors.clone();
-        for (Iterator iter = editors.iterator(); iter.hasNext();) {
-            NavigationHistoryEditorInfo info = (NavigationHistoryEditorInfo) iter
-                    .next();
-            if (!info.isPersistable()) {
-				iter.remove();
-			}
-        }
-        IMemento editorsMem = memento
-                .createChild(IWorkbenchConstants.TAG_EDITORS);
-        for (Iterator iter = editors.iterator(); iter.hasNext();) {
-            NavigationHistoryEditorInfo info = (NavigationHistoryEditorInfo) iter
-                    .next();
-            info.saveState(editorsMem
-                    .createChild(IWorkbenchConstants.TAG_EDITOR));
-        }
-
-        ArrayList list = new ArrayList(history.size());
-        int size = history.size();
-        for (int i = 0; i < size; i++) {
-            NavigationHistoryEntry entry = (NavigationHistoryEntry) history
-                    .get(i);
-            if (entry.editorInfo.isPersistable()) {
-				list.add(entry);
-			}
-        }
-        size = list.size();
-        for (int i = 0; i < size; i++) {
-            NavigationHistoryEntry entry = (NavigationHistoryEntry) list.get(i);
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_ITEM);
-            if (entry == cEntry) {
-				childMem.putString(IWorkbenchConstants.TAG_ACTIVE, "true"); //$NON-NLS-1$
-			}
-            entry.saveState(childMem, list);
-            childMem.putInteger(IWorkbenchConstants.TAG_INDEX, editors
-                    .indexOf(entry.editorInfo));
-        }
-    }
-
-    /**
-     * Restore the state of this history from the memento.
-     */
-    void restoreState(IMemento memento) {
-        IMemento editorsMem = memento.getChild(IWorkbenchConstants.TAG_EDITORS);
-        IMemento items[] = memento.getChildren(IWorkbenchConstants.TAG_ITEM);
-        if (items.length == 0 || editorsMem == null) {
-            if (page.getActiveEditor() != null) {
-				markLocation(page.getActiveEditor());
-			}
-            return;
-        }
-
-        IMemento children[] = editorsMem
-                .getChildren(IWorkbenchConstants.TAG_EDITOR);
-        NavigationHistoryEditorInfo editorsInfo[] = new NavigationHistoryEditorInfo[children.length];
-        for (int i = 0; i < editorsInfo.length; i++) {
-            editorsInfo[i] = new NavigationHistoryEditorInfo(children[i]);
-            editors.add(editorsInfo[i]);
-        }
-
-        for (int i = 0; i < items.length; i++) {
-            IMemento item = items[i];
-            int index = item.getInteger(IWorkbenchConstants.TAG_INDEX)
-                    .intValue();
-            NavigationHistoryEditorInfo info = editorsInfo[index];
-            info.refCount++;
-            NavigationHistoryEntry entry = new NavigationHistoryEntry(info,
-                    page, null, null);
-            history.add(entry);
-            entry.restoreState(item);
-            if (item.getString(IWorkbenchConstants.TAG_ACTIVE) != null) {
-				activeEntry = i;
-			}
-        }
-
-        final NavigationHistoryEntry entry = getEntry(activeEntry);
-        if (entry != null && entry.editorInfo.editorInput != null) {
-            if (page.getActiveEditor() == page
-                    .findEditor(entry.editorInfo.editorInput)) {
-            	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() throws Throwable {
-						gotoEntry(entry);
-					}});		
-			}
-        }
-    }
-
-    public NavigationHistoryEntry createEntry(IWorkbenchPage page,
-            IEditorPart part, INavigationLocation location) {
-        String editorID = part.getSite().getId();
-        IEditorInput editorInput = part.getEditorInput();
-        NavigationHistoryEditorInfo info = null;
-        for (Iterator iter = editors.iterator(); iter.hasNext();) {
-            info = (NavigationHistoryEditorInfo) iter.next();
-            if (editorID.equals(info.editorID)
-                    && editorInput.equals(info.editorInput)) {
-                info.refCount++;
-                break;
-            } else {
-                info = null;
-            }
-        }
-        if (info == null) {
-            info = new NavigationHistoryEditorInfo(part);
-            info.refCount++;
-            editors.add(info);
-        }
-        return new NavigationHistoryEntry(info, page, part, location);
-    }
-
-    public void disposeEntry(NavigationHistoryEntry entry) {
-        if (entry.editorInfo == null) {
-			return;
-		}
-        entry.editorInfo.refCount--;
-        if (entry.editorInfo.refCount == 0) {
-			editors.remove(entry.editorInfo);
-		}
-        entry.dispose();
-    }
-
-    void checkDuplicates(NavigationHistoryEditorInfo info) {
-        NavigationHistoryEditorInfo dup = null;
-        if (info.editorInput == null) {
-			return;
-		}
-        for (Iterator iter = editors.iterator(); iter.hasNext();) {
-            dup = (NavigationHistoryEditorInfo) iter.next();
-            if (info != dup && info.editorID.equals(dup.editorID)
-                    && info.editorInput.equals(dup.editorInput)) {
-				break;
-			} else {
-				dup = null;
-			}
-        }
-        if (dup == null) {
-			return;
-		}
-        for (Iterator iter = history.iterator(); iter.hasNext();) {
-            NavigationHistoryEntry entry = (NavigationHistoryEntry) iter.next();
-            if (entry.editorInfo == dup) {
-                entry.editorInfo = info;
-                info.refCount++;
-            }
-        }
-        editors.remove(dup);
-    }
-    
-    /*********************************************************/
-    /*** new per-tab history code                          ***/
-    /*********************************************************/
-    
-    
-    private static class PerTabHistory {
-    	LinkedList backwardEntries = new LinkedList();
-    	NavigationHistoryEntry currentEntry = null;
-    	LinkedList forwardEntries = new LinkedList();
-    }
-    
-    private void setNewCurrentEntryForTab(PerTabHistory perTabHistory, NavigationHistoryEntry entry) {
-    	if (perTabHistory.currentEntry != null) {
-    		perTabHistory.backwardEntries.addFirst(perTabHistory.currentEntry);
-    	}
-    	perTabHistory.currentEntry = entry;
-    	removeEntriesForTab(perTabHistory.forwardEntries);
-    }
-    
-    private Object getCookieForTab(IEditorPart part) {
-    	if (part != null) {
-	        IWorkbenchPartSite site = part.getSite();
-	        if (site instanceof PartSite) {
-	        	PartSite partSite = (PartSite) site;
-	        	WorkbenchPartReference ref = (WorkbenchPartReference) partSite.getPartReference();
-	        	if (!ref.isDisposed()) {
-	        		return partSite.getPane();
-	        	}
-	        }
-    	}
-    	return null;
-    }
-    
-    private void markLocationForTab(IEditorPart part) {
-    	if (part instanceof ErrorEditorPart) {
-    		updateActions();
-    		return;
-    	}
-		Object tabCookie = getCookieForTab(part);
-		if (tabCookie != null) {
-			INavigationLocation location = null;
-			if (part instanceof INavigationLocationProvider) {
-				location = ((INavigationLocationProvider) part)
-						.createNavigationLocation();
-			}
-			PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap
-					.get(tabCookie);
-			if (perTabHistory == null) {
-				perTabHistory = new PerTabHistory();
-				perTabHistoryMap.put(tabCookie, perTabHistory);
-			}
-			NavigationHistoryEntry current = perTabHistory.currentEntry;
-			if (current != null && current.editorInfo.memento != null) {
-				current.editorInfo.restoreEditor();
-				checkDuplicates(current.editorInfo);
-			}
-			NavigationHistoryEntry entry = createEntry(page, part, location);
-			if (current != null && entry.mergeInto(current)) {
-				disposeEntry(entry);
-				removeEntriesForTab(perTabHistory.forwardEntries);
-			} else {
-				setNewCurrentEntryForTab(perTabHistory, entry);
-			}
-		}
-		updateActions();
-	}
-    
-    public void updateCookieForTab(Object oldCookie, Object newCookie) {
-    	if (newCookie.equals(oldCookie)) {
-    		return;
-    	}
-    	PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap.remove(oldCookie);
-    	if (perTabHistory != null) {
-    		perTabHistoryMap.put(newCookie, perTabHistory);
-    	}
-    }
-    
-    private void gotoEntryForTab(NavigationHistoryEntry target, boolean forward) {
-    	Object editorTabCookie = getCookieForTab(page.getActiveEditor());
-    	if (editorTabCookie!=null) {
-	    	PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap.get(editorTabCookie);
-	    	if (perTabHistory != null) {
-	    		LinkedList source = forward ? perTabHistory.forwardEntries : perTabHistory.backwardEntries;
-	    		LinkedList destination = forward ? perTabHistory.backwardEntries : perTabHistory.forwardEntries;
-				if (perTabHistory.currentEntry != null) {
-					if (perTabHistory.currentEntry.location != null) {
-						perTabHistory.currentEntry.location.update();
-					}
-					destination.addFirst(perTabHistory.currentEntry);
-				}
-				NavigationHistoryEntry newCurrent = null;
-	    		while (!source.isEmpty() && newCurrent==null) {
-		    		NavigationHistoryEntry entry = (NavigationHistoryEntry) source
-							.removeFirst();
-		    		if (entry.equals(target)) {
-		    			newCurrent = entry;
-		    		} else {
-		    			destination.addFirst(entry);
-		    		}
-	    		}
-	    		Assert.isTrue(newCurrent != null);
-	    		perTabHistory.currentEntry = newCurrent;
-	            try {
-	                ignoreEntries++;
-	                if (newCurrent.editorInfo.memento != null) {
-	                	newCurrent.editorInfo.restoreEditor();
-	                	checkDuplicates(newCurrent.editorInfo);
-	                }
-	                newCurrent.restoreLocation();
-	                updateActions();
-	            } finally {
-	            	ignoreEntries--;
-	            }
-	    	}
-    	}
-    }
-    
-	private void forwardForTab() {
-    	Object editorTabCookie = getCookieForTab(page.getActiveEditor());
-    	if (editorTabCookie!=null) {
-	    	PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap.get(editorTabCookie);
-	    	if (perTabHistory != null && !perTabHistory.forwardEntries.isEmpty()) {
-	    		NavigationHistoryEntry newCurrent = (NavigationHistoryEntry) perTabHistory.forwardEntries
-						.removeFirst();
-	    		if (perTabHistory.currentEntry != null) {
-	    			final INavigationLocation location = perTabHistory.currentEntry.location;
-	    			if (location!=null) {
-	    				location.update();
-	    			}
-	    			perTabHistory.backwardEntries.addFirst(perTabHistory.currentEntry);
-	    		}
-	    		perTabHistory.currentEntry = newCurrent;
-	            try {
-	                ignoreEntries++;
-	                if (newCurrent.editorInfo.memento != null) {
-	                	newCurrent.editorInfo.restoreEditor();
-	                	checkDuplicates(newCurrent.editorInfo);
-	                }
-	                newCurrent.restoreLocation();
-	                updateActions();
-	            } finally {
-	            	ignoreEntries--;
-	            }
-	    	}
-    	}
-    }
-    
-    private void backwardForTab() {
-    	Object editorTabCookie = getCookieForTab(page.getActiveEditor());
-    	if (editorTabCookie!=null) {
-	    	PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap.get(editorTabCookie);
-	    	if (perTabHistory != null && !perTabHistory.backwardEntries.isEmpty()) {
-	    		NavigationHistoryEntry newCurrent = (NavigationHistoryEntry) perTabHistory.backwardEntries
-	    				.removeFirst();
-	    		if (perTabHistory.currentEntry != null) {
-	    			perTabHistory.currentEntry.location.update();
-	    			perTabHistory.forwardEntries.addFirst(perTabHistory.currentEntry);
-	    		}
-	    		perTabHistory.currentEntry = newCurrent;
-	            try {
-	                ignoreEntries++;
-	                if (newCurrent.editorInfo.memento != null) {
-	                	newCurrent.editorInfo.restoreEditor();
-	                	checkDuplicates(newCurrent.editorInfo);
-	                }
-	                newCurrent.restoreLocation();
-	                updateActions();
-	            } finally {
-	            	ignoreEntries--;
-	            }
-	    	}
-    	}
-    }
-    
-    private boolean hasEntriesForTab(boolean forward) {
-    	Object editorTabCookie = getCookieForTab(page.getActiveEditor());
-    	if (editorTabCookie!=null) {
-	    	PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap.get(editorTabCookie);
-	    	if (perTabHistory != null) {
-		    	LinkedList entries = forward ? perTabHistory.forwardEntries : perTabHistory.backwardEntries;
-		    	return !entries.isEmpty();
-	    	}
-    	}
-    	return false;
-    }
-
-    /**
-     * Returns entries in restore order.
-     * @param editorTabCookie
-     * @param forward
-     * @return
-     */
-    private NavigationHistoryEntry[] getEntriesForTab(boolean forward) {
-		Object editorTabCookie = getCookieForTab(page.getActiveEditor());
-		if (editorTabCookie != null) {
-			PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap
-					.get(editorTabCookie);
-			if (perTabHistory != null) {
-				LinkedList entries = forward ? perTabHistory.forwardEntries
-						: perTabHistory.backwardEntries;
-				return (NavigationHistoryEntry[]) entries
-				.toArray(new NavigationHistoryEntry[entries.size()]);
-			}
-		}
-		return new NavigationHistoryEntry[0];
-	}
-    
-    private void disposeHistoryForTabs() {
-    	Object[] keys = perTabHistoryMap.keySet().toArray();
-    	for (int i = 0; i < keys.length; i++) {
-			disposeHistoryForTab(keys[i]);
-		}
-    }
-
-    void disposeHistoryForTab(Object editorTabCookie) {
-    	PerTabHistory perTabHistory = (PerTabHistory) perTabHistoryMap.remove(editorTabCookie);
-    	if (perTabHistory != null) {
-    		if (perTabHistory.currentEntry != null) {
-    			disposeEntry(perTabHistory.currentEntry);
-    			perTabHistory.currentEntry = null;
-    		}
-    		removeEntriesForTab(perTabHistory.backwardEntries);
-    		removeEntriesForTab(perTabHistory.forwardEntries);
-    	}
-    }
-
-	private void removeEntriesForTab(LinkedList entries) {
-		for (Iterator it = entries.iterator(); it.hasNext();) {
-			NavigationHistoryEntry entry = (NavigationHistoryEntry) it.next();
-			disposeEntry(entry);
-			it.remove();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryAction.java
deleted file mode 100644
index 2f12669..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryAction.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MenuAdapter;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * The <code>NavigationHistoryAction</code> moves navigation history 
- * back and forward.
- */
-public class NavigationHistoryAction extends PageEventAction {
-
-	private boolean recreateMenu;
-	
-	private boolean forward;
-    
-    private Menu historyMenu;
-
-    private int MAX_HISTORY_LENGTH = 9;
-
-    private class MenuCreator implements IMenuCreator {
-        public void dispose() {
-        }
-
-        public Menu getMenu(Menu parent) {
-        	setMenu(new Menu(parent));
-        	fillMenu(historyMenu);
-            initMenu();
-            return historyMenu;
-        }
-
-        public Menu getMenu(Control parent) {
-        	setMenu(new Menu(parent));
-        	fillMenu(historyMenu);
-            initMenu();
-            return historyMenu;
-        }
-        
-    }
-
-    private void setMenu(Menu menu) {
-    	historyMenu = menu;
-    }
-    
-    private void initMenu() {
-    	historyMenu.addMenuListener(new MenuAdapter() {
-    		public void menuShown(MenuEvent e) {
-    			if (recreateMenu) {
-					Menu m = (Menu) e.widget;
-					MenuItem[] items = m.getItems();
-					for (int i = 0; i < items.length; i++) {
-						items[i].dispose();
-					}
-					fillMenu(m);
-				}
-			}
-    	});
-    }
-    
-    private void fillMenu(Menu menu) {
-    	IWorkbenchPage page = getWorkbenchWindow().getActivePage();
-    	if (page == null) {
-    		return;
-    	}
-    	
-    	final NavigationHistory history = (NavigationHistory) getWorkbenchWindow()
-    	.getActivePage().getNavigationHistory();
-    	NavigationHistoryEntry[] entries;
-    	if (forward) {
-    		entries = history.getForwardEntries();
-    	} else {
-    		entries = history.getBackwardEntries();
-    	}
-    	int entriesCount[] = new int[entries.length];
-    	for (int i = 0; i < entriesCount.length; i++) {
-    		entriesCount[i] = 1;
-    	}
-    	entries = collapseEntries(entries, entriesCount);
-    	for (int i = 0; i < entries.length; i++) {
-    		if (i > MAX_HISTORY_LENGTH) {
-    			break;
-    		}
-    		String text = entries[i].getHistoryText();
-    		if (text != null) {
-    			MenuItem item = new MenuItem(menu, SWT.NONE);
-    			item.setData(entries[i]);
-    			if (entriesCount[i] > 1) {
-    				text = NLS.bind(WorkbenchMessages.NavigationHistoryAction_locations,text, new Integer(entriesCount[i]));
-    			}
-    			item.setText(text);
-    			item.addSelectionListener(new SelectionAdapter() {
-    				public void widgetSelected(SelectionEvent e) {
-    					history
-    					.shiftCurrentEntry(
-    							(NavigationHistoryEntry) e.widget
-    							.getData(), forward);
-    				}
-    			});
-    		}
-    	}
-    	recreateMenu = false;
-    }
-    
-    public void dispose() {
-    	super.dispose();
-    	if (historyMenu != null) {
-    		for (int i = 0; i < historyMenu.getItemCount(); i++) {
-    			MenuItem menuItem = historyMenu.getItem(i);
-    			menuItem.dispose();
-    		}
-    		historyMenu.dispose();
-    		historyMenu = null;
-    	}
-    }
-
-    /**
-	 * Create a new instance of <code>NavigationHistoryAction</code>
-	 * 
-	 * @param window
-	 *            the workbench window this action applies to
-	 * @param forward
-	 *            if this action should move history forward of backward
-	 */
-    public NavigationHistoryAction(IWorkbenchWindow window, boolean forward) {
-        super("", window); //$NON-NLS-1$
-        ISharedImages sharedImages = window.getWorkbench().getSharedImages();
-        if (forward) {
-            setText(WorkbenchMessages.NavigationHistoryAction_forward_text);
-            setToolTipText(WorkbenchMessages.NavigationHistoryAction_forward_toolTip);
-            // @issue missing action id
-            window.getWorkbench().getHelpSystem().setHelp(this,
-					IWorkbenchHelpContextIds.NAVIGATION_HISTORY_FORWARD);
-            setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_FORWARD));
-            setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_FORWARD_DISABLED));
-            setActionDefinitionId("org.eclipse.ui.navigate.forwardHistory"); //$NON-NLS-1$
-        } else {
-            setText(WorkbenchMessages.NavigationHistoryAction_backward_text); 
-            setToolTipText(WorkbenchMessages.NavigationHistoryAction_backward_toolTip);
-            // @issue missing action id
-            window.getWorkbench().getHelpSystem().setHelp(this,
-					IWorkbenchHelpContextIds.NAVIGATION_HISTORY_BACKWARD);
-            setImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
-            setDisabledImageDescriptor(sharedImages
-                    .getImageDescriptor(ISharedImages.IMG_TOOL_BACK_DISABLED));
-            setActionDefinitionId("org.eclipse.ui.navigate.backwardHistory"); //$NON-NLS-1$
-        }
-        // WorkbenchHelp.setHelp(this, IHelpContextIds.CLOSE_ALL_PAGES_ACTION);
-        setEnabled(false);
-        this.forward = forward;
-        setMenuCreator(new MenuCreator());
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        super.pageClosed(page);
-        setEnabled(false);
-    }
-
-    private NavigationHistoryEntry[] collapseEntries(
-            NavigationHistoryEntry[] entries, int entriesCount[]) {
-        ArrayList allEntries = new ArrayList(Arrays.asList(entries));
-        NavigationHistoryEntry previousEntry = null;
-        int i = -1;
-        for (Iterator iter = allEntries.iterator(); iter.hasNext();) {
-            NavigationHistoryEntry entry = (NavigationHistoryEntry) iter.next();
-            if (previousEntry != null) {
-                String text = previousEntry.getHistoryText();
-                if (text != null) {
-                    if (text.equals(entry.getHistoryText())
-                            && previousEntry.editorInfo == entry.editorInfo) {
-                        iter.remove();
-                        entriesCount[i]++;
-                        continue;
-                    }
-                }
-            }
-            previousEntry = entry;
-            i++;
-        }
-        entries = new NavigationHistoryEntry[allEntries.size()];
-        return (NavigationHistoryEntry[]) allEntries.toArray(entries);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageActivated(IWorkbenchPage page) {
-        super.pageActivated(page);
-        NavigationHistory nh = (NavigationHistory) page.getNavigationHistory();
-        if (forward) {
-            nh.setForwardAction(this);
-        } else {
-            nh.setBackwardAction(this);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (getWorkbenchWindow() == null) {
-            // action has been disposed
-            return;
-        }
-        IWorkbenchPage page = getActivePage();
-        if (page != null) {
-            NavigationHistory nh = (NavigationHistory) page
-                    .getNavigationHistory();
-            if (forward) {
-                nh.forward();
-            } else {
-                nh.backward();
-            }
-            recreateMenu = true;
-        }
-    }
-
-    public void update() {
-        // Set the enabled state of the action and set the tool tip text.  The tool tip
-        // text is set to reflect the item that one will move back/forward to.
-        WorkbenchPage page = (WorkbenchPage) getActivePage();
-        if (page == null) {
-			return;
-		}
-        NavigationHistory history = (NavigationHistory) page
-                .getNavigationHistory();
-        NavigationHistoryEntry[] entries;
-        if (forward) {
-            setEnabled(history.canForward());
-            entries = history.getForwardEntries();
-            if (entries.length > 0) {
-                NavigationHistoryEntry entry = entries[0];
-                String text = NLS.bind(WorkbenchMessages.NavigationHistoryAction_forward_toolTipName, entry.getHistoryText() ); 
-                setToolTipText(text);
-            } else {
-                setToolTipText(WorkbenchMessages.NavigationHistoryAction_forward_toolTip);
-            }
-        } else {
-            setEnabled(history.canBackward());
-            entries = history.getBackwardEntries();
-            if (entries.length > 0) {
-                NavigationHistoryEntry entry = entries[0];
-                String text = NLS.bind(WorkbenchMessages.NavigationHistoryAction_backward_toolTipName, entry.getHistoryText() ); 
-                setToolTipText(text);
-            } else {
-                setToolTipText(WorkbenchMessages.NavigationHistoryAction_backward_toolTip); 
-            }
-        }
-        recreateMenu = true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java
deleted file mode 100644
index ea2f0a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEditorInfo.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.XMLMemento;
-
-/**
- * Keeps the info to save, restore or identify and editor.
- * Instances of this class are shared between history entries and there should be
- * only one instance making reference to the same editor. 
- */
-public class NavigationHistoryEditorInfo {
-    String editorID;
-
-    IEditorInput editorInput;
-
-    int refCount = 0;
-
-    IMemento memento;
-
-    NavigationHistoryEditorInfo(IEditorPart part) {
-        editorID = part.getSite().getId();
-        editorInput = part.getEditorInput();
-    }
-
-    NavigationHistoryEditorInfo(IMemento memento) {
-        this.memento = memento;
-    }
-
-    boolean isPersistable() {
-        if (editorInput != null) {
-            IPersistableElement persistable = editorInput.getPersistable();
-            return persistable != null;
-        }
-        return memento != null;
-    }
-
-    void handlePartClosed() {
-        if (!isPersistable()) {
-			return;
-		}
-        if (memento == null) {
-            IPersistableElement persistable = editorInput.getPersistable();
-            memento = XMLMemento
-                    .createWriteRoot(IWorkbenchConstants.TAG_EDITOR);
-            memento.putString(IWorkbenchConstants.TAG_ID, editorID);
-            memento.putString(IWorkbenchConstants.TAG_FACTORY_ID, persistable
-                    .getFactoryId());
-            persistable.saveState(memento);
-        }
-        editorID = null;
-        editorInput = null;
-    }
-
-    void restoreEditor() {
-        if (memento == null) {
-			return;
-		}
-        String factoryID = memento
-                .getString(IWorkbenchConstants.TAG_FACTORY_ID);
-        IElementFactory factory = PlatformUI.getWorkbench().getElementFactory(
-                factoryID);
-        if (factory != null) {
-            IAdaptable element = factory.createElement(memento);
-            if (element instanceof IEditorInput) {
-                editorInput = (IEditorInput) element;
-                editorID = memento.getString(IWorkbenchConstants.TAG_ID);
-            }
-        }
-        memento = null;
-    }
-
-    void saveState(IMemento mem) {
-        if (editorInput != null) {
-            IPersistableElement persistable = editorInput.getPersistable();
-            mem.putString(IWorkbenchConstants.TAG_ID, editorID);
-            mem.putString(IWorkbenchConstants.TAG_FACTORY_ID, persistable
-                    .getFactoryId());
-            persistable.saveState(mem);
-        } else if (memento != null) {
-            mem.putMemento(memento);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEntry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEntry.java
deleted file mode 100644
index 86480bf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/NavigationHistoryEntry.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.INavigationLocation;
-import org.eclipse.ui.INavigationLocationProvider;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.XMLMemento;
-
-/*
- * Wraps the INavigationLocation and keeps editor info.
- */
-public class NavigationHistoryEntry {
-
-    private IWorkbenchPage page;
-
-    NavigationHistoryEditorInfo editorInfo;
-
-    String historyText;
-
-    /* Both may be set at the same time. */
-    INavigationLocation location;
-
-    private IMemento locationMemento;
-
-    /**
-     * Constructs a new HistoryEntry and intializes its editor input and editor id.
-     */
-    public NavigationHistoryEntry(NavigationHistoryEditorInfo editorInfo,
-            IWorkbenchPage page, IEditorPart part, INavigationLocation location) {
-        this.editorInfo = editorInfo;
-        this.page = page;
-        this.location = location;
-        if (location != null) {
-            historyText = location.getText();
-        }
-        // ensure that the historyText is initialized to something
-        if (historyText == null || historyText.length() == 0) {
-            if (part != null) {
-				historyText = part.getTitle();
-			}
-        }
-    }
-
-    /**
-     * Restores the state of the entry and the location if needed and then
-     * restores the location.
-     */
-    void restoreLocation() {
-        if (editorInfo.editorInput != null && editorInfo.editorID != null) {
-            try {
-                IEditorPart editor = page.openEditor(editorInfo.editorInput,
-                        editorInfo.editorID, true);
-                if (location == null) {
-                    if (editor instanceof INavigationLocationProvider) {
-						location = ((INavigationLocationProvider) editor)
-                                .createEmptyNavigationLocation();
-					}
-                }
-
-                if (location != null) {
-                    if (locationMemento != null) {
-                        location.setInput(editorInfo.editorInput);
-                        location.restoreState(locationMemento);
-                        locationMemento = null;
-                    }
-                    location.restoreLocation();
-                }
-            } catch (PartInitException e) {
-                // ignore for now
-            }
-        }
-    }
-
-    /**
-     * Return the label to display in the history drop down list.  Use the
-     * history entry text if the location has not been restored yet.
-     */
-    String getHistoryText() {
-        if (location != null) {
-            // location exists or has been restored, use its text.
-            // Also update the historyText so that this value will
-            // be saved.  Doing so handles cases where getText() value 
-            // may be dynamic. 
-            String text = location.getText();
-            if ((text == null) || text.equals("")) { //$NON-NLS-1$
-                text = historyText;
-            } else {
-                historyText = text;
-            }
-            return text;
-        } else {
-            return historyText;
-        }
-    }
-
-    /** 
-     * Saves the state of this entry and its location.
-     * Returns true if possible otherwise returns false.
-     */
-    boolean handlePartClosed() {
-        if (!editorInfo.isPersistable()) {
-			return false;
-		}
-        if (location != null) {
-            locationMemento = XMLMemento
-                    .createWriteRoot(IWorkbenchConstants.TAG_POSITION);
-            location.saveState(locationMemento);
-            location.releaseState();
-        }
-        return true;
-    }
-
-    /**
-     * Saves the state of this entry and its location.
-     */
-    void saveState(IMemento mem, ArrayList entries) {
-        mem.putString(IWorkbenchConstants.TAG_HISTORY_LABEL, getHistoryText());
-        if (locationMemento != null) {
-            IMemento childMem = mem
-                    .createChild(IWorkbenchConstants.TAG_POSITION);
-            childMem.putMemento(locationMemento);
-        } else if (location != null) {
-            IMemento childMem = mem
-                    .createChild(IWorkbenchConstants.TAG_POSITION);
-            location.saveState(childMem);
-        }
-    }
-
-    /**
-     * Restore the state of this entry.
-     */
-    void restoreState(IMemento mem) {
-        historyText = mem.getString(IWorkbenchConstants.TAG_HISTORY_LABEL);
-        locationMemento = mem.getChild(IWorkbenchConstants.TAG_POSITION);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on Object.
-     */
-    public String toString() {
-        return "Input<" + editorInfo.editorInput + "> Details<" + location + ">"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    }
-
-    /**
-     * Disposes this entry and its location.
-     */
-    void dispose() {
-        if (location != null) {
-			location.dispose();
-		}
-        editorInfo = null;
-    }
-
-    /**
-     * Merges this entry into the current entry. Returns true
-     * if the merge was possible otherwise returns false.
-     */
-    boolean mergeInto(NavigationHistoryEntry currentEntry) {
-        if (editorInfo.editorInput != null
-                && editorInfo.editorInput
-                        .equals(currentEntry.editorInfo.editorInput)) {
-            if (location != null) {
-                if (currentEntry.location == null) {
-                    currentEntry.location = location;
-                    location = null;
-                    return true;
-                } else {
-                    return location.mergeInto(currentEntry.location);
-                }
-            } else if (currentEntry.location == null) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributor.java
deleted file mode 100644
index a87fad5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributor.java
+++ /dev/null
@@ -1,415 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.List;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.SelectionEnabler;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This class describes the object contribution element within the popup menu
- * action registry.
- */
-public class ObjectActionContributor extends PluginActionBuilder implements
-        IObjectActionContributor, IAdaptable {    
-
-    private static final String P_TRUE = "true"; //$NON-NLS-1$
-
-    private IConfigurationElement config;
-
-    private boolean configRead = false;
-
-    private boolean adaptable = false;
-    
-    private String objectClass;
-
-    /**
-     * The constructor.
-     * 
-     * @param config the element
-     */
-    public ObjectActionContributor(IConfigurationElement config) {
-        this.config = config;
-        this.adaptable = P_TRUE.equalsIgnoreCase(config
-                .getAttribute(IWorkbenchRegistryConstants.ATT_ADAPTABLE));
-        this.objectClass = config.getAttribute(IWorkbenchRegistryConstants.ATT_OBJECTCLASS);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IObjectContributor.
-     */
-    public boolean canAdapt() {
-        return adaptable;
-    }
-    
-    /**
-     * Return the object class for this contributor.
-     * 
-     * @return the object class
-     */
-	public String getObjectClass() {
-		return objectClass;
-	}
-
-    /* (non-Javadoc)
-     * Method declared on IObjectActionContributor.
-     */
-    public void contributeObjectActionIdOverrides(List actionIdOverrides) {
-        if (!configRead) {
-			readConfigElement();
-		}
-
-        // Easy case out if no actions
-        if (currentContribution.actions != null) {
-            for (int i = 0; i < currentContribution.actions.size(); i++) {
-                ActionDescriptor ad = (ActionDescriptor) currentContribution.actions
-                        .get(i);
-                String id = ad.getAction().getOverrideActionId();
-                if (id != null) {
-					actionIdOverrides.add(id);
-				}
-            }
-        }
-    }
-
-    /**
-     * Contributes actions applicable for the current selection.
-     */
-    public boolean contributeObjectActions(final IWorkbenchPart part,
-            IMenuManager menu, ISelectionProvider selProv,
-            List actionIdOverrides) {
-        if (!configRead) {
-			readConfigElement();
-		}
-
-        // Easy case out if no actions
-        if (currentContribution.actions == null) {
-			return false;
-		}
-
-        // Get a structured selection.	
-        ISelection sel = selProv.getSelection();
-        if ((sel == null) || !(sel instanceof IStructuredSelection)) {
-			return false;
-		}
-        IStructuredSelection ssel = (IStructuredSelection) sel;
-        
-        if(canAdapt()) {        	
-           IStructuredSelection newSelection = LegacyResourceSupport.adaptSelection(ssel, getObjectClass());     
-           if(newSelection.size() != ssel.size()) {
-        	   if (Policy.DEBUG_CONTRIBUTIONS) {
-				WorkbenchPlugin.log("Error adapting selection to " + getObjectClass() +  //$NON-NLS-1$
-            			". Contribution " + getID(config) + " is being ignored"); //$NON-NLS-1$ //$NON-NLS-2$            	
-			}
-            	return false;
-           }
-           ssel = newSelection;
-        }
-        
-        final IStructuredSelection selection = ssel;
-        	
-        // Generate menu.
-        for (int i = 0; i < currentContribution.actions.size(); i++) {
-            ActionDescriptor ad = (ActionDescriptor) currentContribution.actions
-                    .get(i);
-            if (!actionIdOverrides.contains(ad.getId())) {
-                currentContribution.contributeMenuAction(ad, menu, true);
-                // Update action for the current selection and part.
-                if (ad.getAction() instanceof ObjectPluginAction) {
-                    final ObjectPluginAction action = (ObjectPluginAction) ad
-                            .getAction();
-                    ISafeRunnable runnable = new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							WorkbenchPlugin.log("Failed to update action "  //$NON-NLS-1$
-									+ action.getId(), exception);
-						}
-
-						public void run() throws Exception {
-		                    action.setActivePart(part);
-		                    action.selectionChanged(selection);
-						}
-                    };
-                    SafeRunner.run(runnable);
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-	 * Contributes menus applicable for the current selection.
-	 */
-    public boolean contributeObjectMenus(IMenuManager menu,
-            ISelectionProvider selProv) {
-        if (!configRead) {
-			readConfigElement();
-		}
-
-        // Easy case out if no menus
-        if (currentContribution.menus == null) {
-			return false;
-		}
-
-        // Get a structured selection.	
-        ISelection sel = selProv.getSelection();
-        if ((sel == null) || !(sel instanceof IStructuredSelection)) {
-			return false;
-		}
-
-        // Generate menu.
-        for (int i = 0; i < currentContribution.menus.size(); i++) {
-            IConfigurationElement menuElement = (IConfigurationElement) currentContribution.menus
-                    .get(i);
-            currentContribution.contributeMenu(menuElement, menu, true);
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected ActionDescriptor createActionDescriptor(
-            IConfigurationElement element) {
-        return new ActionDescriptor(element, ActionDescriptor.T_POPUP);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected BasicContribution createContribution() {
-        return new ObjectContribution();
-    }
-
-    /**
-     * Returns true if name filter is not specified for the contribution
-     * or the current selection matches the filter.
-     */
-    public boolean isApplicableTo(Object object) {
-        if (!configRead) {
-			readConfigElement();
-		}
-
-        // Perform all tests with an instance of the objectClass and not
-        // the actual selected object.
-        if (canAdapt()) {
-			Object adapted = LegacyResourceSupport.getAdapter(object, getObjectClass());
-			if (adapted == null) {
-				if (Policy.DEBUG_CONTRIBUTIONS) {
-					WorkbenchPlugin
-							.log("Error adapting " + object.getClass().getName() + //$NON-NLS-1$
-									" to " //$NON-NLS-1$
-									+ getObjectClass()
-									+ ". Contribution " + getID(config) + " is being ignored"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			} else {
-				object = adapted;
-			}
-		}
-			
-        if (!testName(object)) {
-			return false;
-		}
-
-        return ((ObjectContribution) currentContribution)
-                .isApplicableTo(object);
-    }
-
-    /**
-     * Reads the configuration element and all the children.
-     * This creates an action descriptor for every action in the extension.
-     */
-    private void readConfigElement() {
-        currentContribution = createContribution();
-        readElementChildren(config);
-        configRead = true;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        String tag = element.getName();
-
-        // Found visibility sub-element
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_VISIBILITY)) {
-            ((ObjectContribution) currentContribution)
-                    .setVisibilityTest(element);
-            return true;
-        }
-
-        // Found filter sub-element				
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_FILTER)) {
-            ((ObjectContribution) currentContribution).addFilterTest(element);
-            return true;
-        }
-
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_ENABLEMENT)) {
-            ((ObjectContribution) currentContribution)
-                    .setEnablementTest(element);
-            return true;
-        }
-
-        return super.readElement(element);
-    }
-
-    /**
-     * Returns whether the current selection matches the contribution name filter.
-     */
-    private boolean testName(Object object) {
-        String nameFilter = config.getAttribute(IWorkbenchRegistryConstants.ATT_NAME_FILTER);
-        if (nameFilter == null) {
-			return true;
-		}
-        String objectName = null;
-        IWorkbenchAdapter de = (IWorkbenchAdapter)Util.getAdapter(object, IWorkbenchAdapter.class);
-        if (de != null) {
-			objectName = de.getLabel(object);
-		}
-        if (objectName == null) {
-            objectName = object.toString();
-        }
-        return SelectionEnabler.verifyNameMatch(objectName, nameFilter);
-    }
-
-    /**
-     * Helper class to collect the menus and actions defined within a
-     * contribution element.
-     */
-    private static class ObjectContribution extends BasicContribution {
-        private ObjectFilterTest filterTest;
-
-        private ActionExpression visibilityTest;
-
-        private Expression enablement;
-
-        /**
-         * Add a filter test.
-         * 
-         * @param element the element
-         */
-        public void addFilterTest(IConfigurationElement element) {
-            if (filterTest == null) {
-				filterTest = new ObjectFilterTest();
-			}
-            filterTest.addFilterElement(element);
-        }
-
-        /**
-         * Set the visibility test.
-         * 
-         * @param element the element
-         */
-        public void setVisibilityTest(IConfigurationElement element) {
-            visibilityTest = new ActionExpression(element);
-        }
-
-        /**
-         * Set the enablement test.
-         * 
-         * @param element the element
-         */
-        public void setEnablementTest(IConfigurationElement element) {
-            try {
-                enablement = ExpressionConverter.getDefault().perform(element);
-            } catch (CoreException e) {
-                WorkbenchPlugin.log(e);
-            }
-        }
-
-        /**
-         * Returns true if name filter is not specified for the contribution
-         * or the current selection matches the filter.
-         * 
-         * @param object the object to test
-         * @return whether we're applicable
-         */
-        public boolean isApplicableTo(Object object) {
-            boolean result = true;
-            if (visibilityTest != null) {
-                result = result && visibilityTest.isEnabledFor(object);
-                if (!result) {
-					return result;
-				}
-            } else if (filterTest != null) {
-                result = result && filterTest.matches(object, true);
-                if (!result) {
-					return result;
-				}
-            }
-            if (enablement != null) {
-                try {
-                    IEvaluationContext context = new EvaluationContext(null,
-                            object);
-                    context.setAllowPluginActivation(true);
-                    context.addVariable("selection", object); //$NON-NLS-1$
-                    context.addVariable("org.eclipse.core.runtime.Platform", Platform.class); //$NON-NLS-1$
-                    EvaluationResult evalResult = enablement.evaluate(context);
-                    if (evalResult == EvaluationResult.FALSE) {
-						return false;
-					}
-                } catch (CoreException e) {
-                    enablement = null;
-                    WorkbenchPlugin.log(e);
-                    result = false;
-                }
-            }
-            return result;
-        }
-    }    
-    
-    /**
-     * Debugging helper that will print out the contribution names for this
-     * contributor.
-     */
-    public String toString() {
-    	StringBuffer buffer = new StringBuffer();
-    	IConfigurationElement[] children = config.getChildren();
-    	for (int i = 0; i < children.length; i++) {
-			IConfigurationElement element = children[i];
-			String label = element.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-			if(label != null) {
-				buffer.append(label);
-				buffer.append('\n'); 
-			}
-		}
-    	return buffer.toString();
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter.equals(IConfigurationElement.class)) {
-			return config;
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorManager.java
deleted file mode 100644
index d19ef86..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorManager.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This manager is used to populate a popup menu manager with actions
- * for a given type.
- */
-public class ObjectActionContributorManager extends ObjectContributorManager {
-    private static ObjectActionContributorManager sharedInstance;
-
-    /**
-     * PopupMenuManager constructor.
-     */
-    public ObjectActionContributorManager() {
-    	super();
-        loadContributors();
-    }
-
-    /**
-     * Contributes submenus and/or actions applicable to the selection in the
-     * provided viewer into the provided popup menu.
-     * 
-     * @param part the part being contributed to
-     * @param popupMenu the menu being contributed to
-     * @param selProv the selection provider
-     * @return whether anything was contributed
-     */
-    public boolean contributeObjectActions(IWorkbenchPart part,
-            IMenuManager popupMenu, ISelectionProvider selProv) {
-        // Get a selection.	
-        ISelection selection = selProv.getSelection();
-        if (selection == null) {
-			return false;
-		}
-
-        // Convert the selection into an element vector.
-        // According to the dictionary, a selection is "one that
-        // is selected", or "a collection of selected things".  
-        // In reflection of this, we deal with one or a collection.
-        List elements = null;
-        if (selection instanceof IStructuredSelection) {
-            elements = ((IStructuredSelection) selection).toList();
-        } else {
-            elements = new ArrayList(1);
-            elements.add(selection);
-        }
-
-        List contributors = getContributors(elements);
-       
-        if (contributors.isEmpty()) {
-			return false;
-		}
-
-        // First pass, add the menus and collect the overrides. Prune from the
-        // list any non-applicable contributions.
-        boolean actualContributions = false;
-        ArrayList overrides = new ArrayList(4);
-        for (Iterator it = contributors.iterator(); it.hasNext();) {
-			IObjectActionContributor contributor = (IObjectActionContributor) it.next();
-            if (!isApplicableTo(elements, contributor)) {
-            	it.remove();            
-                continue;
-            }
-            if (contributor.contributeObjectMenus(popupMenu, selProv)) {
-				actualContributions = true;
-			}
-            contributor.contributeObjectActionIdOverrides(overrides);
-        }
-        
-        // Second pass, add the contributions that are applicable to
-        // the selection.
-        for (Iterator it = contributors.iterator(); it.hasNext();) {
-			IObjectActionContributor contributor = (IObjectActionContributor) it.next();        
-            if (contributor.contributeObjectActions(part, popupMenu, selProv,
-                    overrides)) {
-				actualContributions = true;
-			}
-        }
-        return actualContributions;
-    }
-
-    /**
-     * Returns the shared instance of this manager.
-     * @return the shared instance of this manager
-     */
-    public static ObjectActionContributorManager getManager() {
-        if (sharedInstance == null) {
-            sharedInstance = new ObjectActionContributorManager();
-        }
-        return sharedInstance;
-    }
-
-    /**
-     * Loads the contributors from the workbench's registry.
-     */
-    private void loadContributors() {
-        ObjectActionContributorReader reader = new ObjectActionContributorReader();
-        reader.readPopupContributors(this);
-    }
-    
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension addedExtension) {
-        IConfigurationElement[] addedElements = addedExtension.getConfigurationElements();
-        for (int i = 0; i < addedElements.length; i++) {
-            ObjectActionContributorReader reader = new ObjectActionContributorReader();
-            reader.setManager(this);
-            reader.readElement(addedElements[i]);
-        }
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.ObjectContributorManager#getExtensionPointFilter()
-	 */
-	protected String getExtensionPointFilter() {
-		return IWorkbenchRegistryConstants.PL_POPUP_MENU;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorReader.java
deleted file mode 100644
index e278da2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectActionContributorReader.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * This reader loads the popup menu manager with all the
- * popup menu contributors found in the workbench registry.
- */
-public class ObjectActionContributorReader extends RegistryReader {
-
-    private ObjectActionContributorManager manager;
-
-    /**
-     * Creates popup menu contributor from this element.
-     */
-    protected void processObjectContribution(IConfigurationElement element) {
-        String objectClassName = element.getAttribute(IWorkbenchRegistryConstants.ATT_OBJECTCLASS);
-        if (objectClassName == null) {
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_OBJECTCLASS);
-            return;
-        }
-
-        IObjectContributor contributor = new ObjectActionContributor(element);
-        manager.registerContributor(contributor, objectClassName);
-    }
-
-    /**
-     * Implements abstract method to handle configuration elements. 
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        String tagName = element.getName();
-        if (tagName.equals(IWorkbenchRegistryConstants.TAG_OBJECT_CONTRIBUTION)) {
-            processObjectContribution(element);
-            return true;
-        }
-        if (tagName.equals(IWorkbenchRegistryConstants.TAG_VIEWER_CONTRIBUTION)) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Reads the registry and registers popup menu contributors
-     * found there.
-     * 
-     * @param mng the manager to read into
-     */
-    public void readPopupContributors(ObjectActionContributorManager mng) {
-        setManager(mng);
-        IExtensionRegistry registry = Platform.getExtensionRegistry();
-        readRegistry(registry, PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_POPUP_MENU);
-    }
-
-    /**
-     * Set the manager to read into. 
-     * 
-     * @param mng the manager
-     */
-    public void setManager(ObjectActionContributorManager mng) {
-        manager = mng;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
deleted file mode 100644
index 7aa6027..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectContributorManager.java
+++ /dev/null
@@ -1,1007 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * This class is a default implementation of <code>IObjectContributorManager</code>.
- * It provides fast merging of contributions with the following semantics:
- * <ul>
- * <li> All of the matching contributors will be invoked per property lookup
- * <li> The search order from a class with the definition<br>
- *			<code>class X extends Y implements A, B</code><br>
- *		is as follows:
- * 		<il>
- *			<li>the target's class: X
- *			<li>X's superclasses in order to <code>Object</code>
- *			<li>a depth-first traversal of the target class's interaces in the order 
- *				returned by <code>getInterfaces()</code> (in the example, A and 
- *				its superinterfaces then B and its superinterfaces)
- *		</il>
- * </ul>
- *
- * @see IObjectContributor
- */
-public abstract class ObjectContributorManager implements IExtensionChangeHandler {
-	
-	/** 
-	 * @since 3.1
-	 */
-	private class ContributorRecord {
-		/**
-		 * @param contributor
-		 * @param targetType
-		 */
-		public ContributorRecord(IObjectContributor contributor, String targetType) {
-			this.contributor = contributor;
-			this.objectClassName = targetType;
-		}
-		
-		String objectClassName;
-		IObjectContributor contributor;
-	}
-
-    /** Table of contributors. */
-    protected Map contributors;
-
-    /** Cache of object class contributor search paths; <code>null</code> if none. */
-    protected Map objectLookup;
-
-    /** Cache of resource adapter class contributor search paths; <code>null</code> if none. */
-    protected Map resourceAdapterLookup;
-    
-    /** Cache of adaptable class contributor search paths; <code>null</code> if none. */
-    protected Map adaptableLookup;
-    
-    protected Set contributorRecordSet;
-
-    /** 
-     * Constructs a new contributor manager.
-     */
-    public ObjectContributorManager() {
-    	contributors = new Hashtable(5);
-        contributorRecordSet = new HashSet(5);
-        objectLookup = null;
-        resourceAdapterLookup = null;
-        adaptableLookup = null;
-        String extensionPointId = getExtensionPointFilter();
-        if (extensionPointId != null) {
-        	IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(
-    				PlatformUI.PLUGIN_ID, extensionPointId);
-			IExtensionTracker tracker = PlatformUI.getWorkbench()
-					.getExtensionTracker();
-			tracker.registerHandler(this, ExtensionTracker
-					.createExtensionPointFilter(extensionPoint));
-		}
-    }
-
-    /**
-	 * Return the extension point id (local to org.eclipse.ui) that this manager
-	 * is associated with. Default implementation returns null, which implies no
-	 * relationship with a particular extension.
-	 * 
-	 * @return the extension point id
-	 * @since 3.4
-	 */
-	protected String getExtensionPointFilter() {
-		return null;
-	}
-
-	/**
-     * Adds contributors for the given types to the result list.
-     */
-    private void addContributorsFor(List types, List result) {
-        for (Iterator classes = types.iterator(); classes.hasNext();) {
-            Class clazz = (Class) classes.next();
-            List contributorList = (List) contributors.get(clazz.getName());
-            if (contributorList != null) {
-				result.addAll(contributorList);
-			}
-        }
-    }
-
-    /**
-     * Returns the class search order starting with <code>extensibleClass</code>.
-     * The search order is defined in this class' comment.
-     */
-    protected final List computeClassOrder(Class extensibleClass) {
-        ArrayList result = new ArrayList(4);
-        Class clazz = extensibleClass;
-        while (clazz != null) {
-            result.add(clazz);
-            clazz = clazz.getSuperclass();
-        }
-        return result;
-    }
-
-    /**
-     * Returns the interface search order for the class hierarchy described
-     * by <code>classList</code>.
-     * The search order is defined in this class' comment.
-     */
-    protected final List computeInterfaceOrder(List classList) {
-        ArrayList result = new ArrayList(4);
-        Map seen = new HashMap(4);
-        for (Iterator list = classList.iterator(); list.hasNext();) {
-            Class[] interfaces = ((Class) list.next()).getInterfaces();
-            internalComputeInterfaceOrder(interfaces, result, seen);
-        }
-        return result;
-    }
-
-    /**
-     * Flushes the cache of contributor search paths.  This is generally required
-     * whenever a contributor is added or removed.  
-     * <p>
-     * It is likely easier to just toss the whole cache rather than trying to be
-     * smart and remove only those entries affected.
-     */
-    public void flushLookup() {
-        objectLookup = null;
-        resourceAdapterLookup = null;
-        adaptableLookup = null;
-    }
-
-    /**
-     * Cache the real adapter class contributor search path.
-     */
-    private void cacheResourceAdapterLookup(Class adapterClass, List results) {
-        if (resourceAdapterLookup == null) {
-			resourceAdapterLookup = new HashMap();
-		}
-        resourceAdapterLookup.put(adapterClass, results);
-    }
-    
-    /**
-     * Cache the real adapter class contributor search path.
-     */
-    private void cacheAdaptableLookup(String adapterClass, List results) {
-        if (adaptableLookup == null) {
-			adaptableLookup = new HashMap();
-		}
-        adaptableLookup.put(adapterClass, results);
-    }
-
-    /**
-     * Cache the object class contributor search path.
-     */
-    private void cacheObjectLookup(Class objectClass, List results) {
-        if (objectLookup == null) {
-			objectLookup = new HashMap();
-		}
-        objectLookup.put(objectClass, results);
-    }
-
-    /**
-     * Get the contributions registered to this manager.
-     * 
-     * @return an unmodifiable <code>Collection</code> containing all registered
-     * contributions.  The objects in this <code>Collection</code> will be 
-     * <code>List</code>s containing the actual contributions.
-     * @since 3.0
-     */
-    public Collection getContributors() {
-        return Collections.unmodifiableCollection(contributors.values());
-    }
-
-    /**
-     * Return the list of contributors for the supplied class.
-     */
-    protected List addContributorsFor(Class objectClass) {
-
-        List classList = computeClassOrder(objectClass);
-        List result = new ArrayList();
-        addContributorsFor(classList, result);
-        classList = computeInterfaceOrder(classList); // interfaces
-        addContributorsFor(classList, result);
-        return result;
-    }
-
-    /**
-     * Returns true if contributors exist in the manager for
-     * this object and any of it's super classes, interfaces, or
-     * adapters.
-     * 
-     * @param object the object to test
-     * @return whether the object has contributors
-     */
-    public boolean hasContributorsFor(Object object) {
-
-        List contributors = getContributors(object);
-        return contributors.size() > 0;
-    }
-
-    /**
-     * Add interface Class objects to the result list based
-     * on the class hierarchy. Interfaces will be searched
-     * based on their position in the result list.
-     */
-    private void internalComputeInterfaceOrder(Class[] interfaces, List result,
-            Map seen) {
-        List newInterfaces = new ArrayList(seen.size());
-        for (int i = 0; i < interfaces.length; i++) {
-            Class interfac = interfaces[i];
-            if (seen.get(interfac) == null) {
-                result.add(interfac);
-                seen.put(interfac, interfac);
-                newInterfaces.add(interfac);
-            }
-        }
-        for (Iterator newList = newInterfaces.iterator(); newList.hasNext();) {
-			internalComputeInterfaceOrder(((Class) newList.next())
-                    .getInterfaces(), result, seen);
-		}
-    }
-
-    /**
-	 * Return whether the given contributor is applicable to all elements in the
-	 * selection.
-	 * 
-	 * @param selection
-	 *            the selection
-	 * @param contributor
-	 *            the contributor
-	 * @return whether it is applicable
-	 */
-    public boolean isApplicableTo(IStructuredSelection selection,
-            IObjectContributor contributor) {
-        Iterator elements = selection.iterator();
-        while (elements.hasNext()) {
-            if (contributor.isApplicableTo(elements.next()) == false) {
-				return false;
-			}
-        }
-        return true;
-    }
-
-    /**
-	 * Return whether the given contributor is applicable to all elements in the
-	 * list.
-	 * 
-	 * @param list
-	 *            the selection
-	 * @param contributor
-	 *            the contributor
-	 * @return whether it is applicable
-	 */
-
-    public boolean isApplicableTo(List list, IObjectContributor contributor) {
-        Iterator elements = list.iterator();
-        while (elements.hasNext()) {
-            if (contributor.isApplicableTo(elements.next()) == false) {
-				return false;
-			}
-        }
-        return true;
-    }
-
-    /**
-     * Register a contributor.
-     * 
-     * @param contributor the contributor
-     * @param targetType the target type
-     */
-    public void registerContributor(IObjectContributor contributor,
-            String targetType) {
-        List contributorList = (List) contributors.get(targetType);
-        if (contributorList == null) {
-            contributorList = new ArrayList(5);
-            contributors.put(targetType, contributorList);
-        }
-        contributorList.add(contributor);
-        flushLookup();
-
-        IConfigurationElement element = (IConfigurationElement) Util.getAdapter(contributor,
-        	IConfigurationElement.class);
-        
-        //hook the object listener
-        if (element != null) {
-			ContributorRecord contributorRecord = new ContributorRecord(
-					contributor, targetType);
-			contributorRecordSet.add(contributorRecord);
-			PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-					element.getDeclaringExtension(), contributorRecord,
-					IExtensionTracker.REF_WEAK);
-        }
-    }
-
-    /**
-     * Unregister all contributors.
-     */
-    public void unregisterAllContributors() {
-        contributors = new Hashtable(5);
-        flushLookup();
-    }
-
-    /**
-     * Unregister a contributor from the target type.
-     * 
-     * @param contributor the contributor
-     * @param targetType the target type
-     */
-    public void unregisterContributor(IObjectContributor contributor,
-            String targetType) {    	
-        List contributorList = (List) contributors.get(targetType);
-        if (contributorList == null) {
-			return;
-		}
-        contributorList.remove(contributor);
-        if (contributorList.isEmpty()) {
-			contributors.remove(targetType);
-		}
-        flushLookup();
-    }
-
-
-    /**
-     * Unregister all contributors for the target type.
-     * 
-     * @param targetType the target type
-     */
-    public void unregisterContributors(String targetType) {
-        contributors.remove(targetType);
-        flushLookup();
-    }
-    
-    protected List getContributors(Object object) {
-    	// Determine is the object is a resource
-    	Object resource  = LegacyResourceSupport.getAdaptedContributorResource(object);	
-    	
-    	// Fetch the unique adapters
-    	List adapters = new ArrayList(Arrays.asList(Platform.getAdapterManager().computeAdapterTypes(object.getClass())));
-    	removeCommonAdapters(adapters, Arrays.asList(new Class[] {object.getClass()}));
-
-    	List contributors = new ArrayList();
-        
-        // Calculate the contributors for this object class
-        addAll(contributors, getObjectContributors(object.getClass()));
-        // Calculate the contributors for resource classes
-        if(resource != null) {
-			addAll(contributors, getResourceContributors(resource.getClass()));
-		}
-        // Calculate the contributors for each adapter type
-    	if(adapters != null) {
-    		for (Iterator it = adapters.iterator(); it.hasNext();) {
-				String adapter = (String) it.next();				
-				addAll(contributors, getAdaptableContributors(adapter));
-			}
-    	}
-    	
-        // Remove duplicates.  Note: this -must- maintain the element order to preserve menu order.
-        contributors = removeDups(contributors);
-
-    	return contributors.isEmpty() ? Collections.EMPTY_LIST : new ArrayList(contributors);
-    }
-    
-    /**
-     * Returns the contributions for the given class. This considers
-     * contributors on any super classes and interfaces.
-     * 
-     * @param objectClass the class to search for contributions.
-     * @return the contributions for the given class. This considers
-     * contributors on any super classes and interfaces.
-     * 
-     * @since 3.1
-     */
-    protected List getObjectContributors(Class objectClass) {
-		List objectList = null;
-		// Lookup the results in the cache first.
-		if (objectLookup != null) {
-			objectList = (List) objectLookup.get(objectClass);
-		}
-		if (objectList == null) {
-			objectList = addContributorsFor(objectClass);
-			if (objectList.size() == 0) {
-				objectList = Collections.EMPTY_LIST;
-			}
-			else {
-				objectList = Collections.unmodifiableList(objectList);
-			}
-			cacheObjectLookup(objectClass, objectList);
-		}
-		return objectList;
-	}
-
-    /**
-     * Returns the contributions for the given <code>IResource</code>class. 
-     * This considers contributors on any super classes and interfaces. This
-     * will only return contributions that are adaptable.
-     * 
-     * @param resourceClass the class to search for contributions.
-     * @return the contributions for the given class. This considers
-     * adaptable contributors on any super classes and interfaces.
-     * 
-     * @since 3.1
-     */
-	protected List getResourceContributors(Class resourceClass) {
-		List resourceList = null;
-		if (resourceAdapterLookup != null) {
-			resourceList = (List) resourceAdapterLookup.get(resourceClass);
-		}
-		if (resourceList == null) {
-			resourceList = addContributorsFor(resourceClass);
-			if (resourceList.size() == 0) {
-				resourceList = Collections.EMPTY_LIST;
-			} else {
-				resourceList = Collections.unmodifiableList(filterOnlyAdaptableContributors(resourceList));
-			}
-			cacheResourceAdapterLookup(resourceClass, resourceList);
-		}
-		return resourceList;
-	}
-
-    /**
-     * Returns the contributions for the given type name. 
-     * 
-     * @param adapterType the class to search for contributions.
-     * @return the contributions for the given class. This considers
-     * contributors to this specific type.
-     * 
-     * @since 3.1
-     */
-	protected List getAdaptableContributors(String adapterType) {
-		List adaptableList = null;
-		// Lookup the results in the cache first, there are two caches
-		// one that stores non-adapter contributions and the other
-		// contains adapter contributions.
-		if (adaptableLookup != null) {
-			adaptableList = (List) adaptableLookup.get(adapterType);
-		}
-		if (adaptableList == null) {
-			// ignore resource adapters because these must be adapted via the
-			// IContributorResourceAdapter.
-			if (LegacyResourceSupport.isResourceType(adapterType) || LegacyResourceSupport.isResourceMappingType(adapterType)) {
-				adaptableList = Collections.EMPTY_LIST;
-			}
-			else {
-				adaptableList = (List) contributors.get(adapterType);
-				if (adaptableList == null || adaptableList.size() == 0) {
-					adaptableList = Collections.EMPTY_LIST;
-				} else {
-					adaptableList = Collections.unmodifiableList(filterOnlyAdaptableContributors(adaptableList));
-				}
-			}
-			cacheAdaptableLookup(adapterType, adaptableList);
-		}
-		return adaptableList;
-	}
-	
-	/**
-	 * Prunes from the list of adapters type names that are in the class
-	 * search order of every class in <code>results</code>.  
-	 * @param adapters
-	 * @param results
-	 * @since 3.1
-	 */
-	protected void removeCommonAdapters(List adapters, List results) {
-    	for (Iterator it = results.iterator(); it.hasNext();) {
-			Class clazz = ((Class) it.next());
-			List commonTypes = computeCombinedOrder(clazz);
-			for (Iterator it2 = commonTypes.iterator(); it2.hasNext();) {
-				Class type = (Class) it2.next();
-				adapters.remove(type.getName());	
-			}				
-		}
-    }
-	
-	/**
-     * Returns the class search order starting with <code>extensibleClass</code>.
-     * The search order is defined in this class' comment.
-     */
-    protected List computeCombinedOrder(Class inputClass) {
-        List result = new ArrayList(4);
-        Class clazz = inputClass;
-        while (clazz != null) {
-            // add the class
-            result.add(clazz);
-            // add all the interfaces it implements
-            Class[] interfaces = clazz.getInterfaces();
-            for (int i = 0; i < interfaces.length; i++) {
-                result.add(interfaces[i]);
-            }
-            // get the superclass
-            clazz = clazz.getSuperclass();
-        }
-        return result;
-    }
-
-	private List filterOnlyAdaptableContributors(List contributors) {
-		List adaptableContributors = null;
-		for (Iterator it = contributors.iterator(); it.hasNext();) {
-			IObjectContributor c = (IObjectContributor) it.next();
-			if(c.canAdapt()) {
-				if(adaptableContributors == null) {
-					adaptableContributors = new ArrayList();
-				}
-				adaptableContributors.add(c);
-			}
-		}
-		return adaptableContributors == null ? Collections.EMPTY_LIST : adaptableContributors;
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-     */
-    public void removeExtension(IExtension source, Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            if (objects[i] instanceof ContributorRecord) {
-                ContributorRecord contributorRecord = (ContributorRecord) objects[i];
-                unregisterContributor((contributorRecord).contributor, (contributorRecord).objectClassName);
-                contributorRecordSet.remove(contributorRecord);
-            }
-        }
-    }
-
-    /**
-     * Remove listeners and dispose of this manager.
-     * 
-     * @since 3.1
-     */
-    public void dispose() {
-    	if(getExtensionPointFilter() != null) {
-			PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(this);
-		}
-    }
-    
-    /**
-     * Returns the list of contributors that are interested in the 
-     * given list of model elements.
-     * @param elements a list of model elements (<code>Object</code>)
-     * @return the list of interested contributors (<code>IObjectContributor</code>)
-     */
-    protected List getContributors(List elements) {
-        // Calculate the common class, interfaces, and adapters registered
-        // via the IAdapterManager.
-        List commonAdapters = new ArrayList();
-        List commonClasses = getCommonClasses(elements, commonAdapters);
-        
-        // Get the resource class. It will be null if any of the
-        // elements are resources themselves or do not adapt to
-        // IResource.
-        Class resourceClass = getCommonResourceClass(elements);
-        Class resourceMappingClass = getResourceMappingClass(elements);
-
-        // Get the contributors.   
-        
-        List contributors = new ArrayList();
-        
-        // Add the resource contributions to avoid duplication
-        if (resourceClass != null) {
-            addAll(contributors, getResourceContributors(resourceClass));
-        }
-        if (commonClasses != null && !commonClasses.isEmpty()) {
-            for (int i = 0; i < commonClasses.size(); i++) {
-                List results = getObjectContributors((Class) commonClasses
-                        .get(i));
-                addAll(contributors, results);
-            }
-        }
-        // Add the resource mappings explicitly to avoid possible duplication
-        if (resourceMappingClass == null) {
-            // Still show the menus if the object is not adaptable but the adapter manager
-            // has an entry for it
-            resourceMappingClass = LegacyResourceSupport
-                    .getResourceMappingClass();
-            if (resourceMappingClass != null
-                    && commonAdapters.contains(resourceMappingClass.getName())) {
-            	addAll(contributors, getResourceContributors(resourceMappingClass));
-            }
-        } else {
-            contributors.addAll(getResourceContributors(resourceMappingClass));
-        }
-        if (!commonAdapters.isEmpty()) {
-            for (Iterator it = commonAdapters.iterator(); it.hasNext();) {
-                String adapter = (String) it.next();
-                addAll(contributors, getAdaptableContributors(adapter));
-            }
-        }
-    	
-        // Remove duplicates.  Note: this -must- maintain the element order to preserve menu order.
-        contributors = removeDups(contributors);
-        
-        return contributors.isEmpty() ? Collections.EMPTY_LIST : new ArrayList(contributors);
-    }
-
-    /**
-	 * Adds all items in toAdd to the given collection.  Optimized to avoid creating an iterator.
-	 * This assumes that toAdd is efficient to index (i.e. it's an ArrayList or some other RandomAccessList),
-	 * which is the case for all uses in this class.
-	 */
-	private static void addAll(Collection collection, List toAdd) {
-		for (int i = 0, size = toAdd.size(); i < size; ++i) {
-			collection.add(toAdd.get(i));
-		}
-	}
-
-    /**
-     * Removes duplicates from the given list, preserving order.
-     */
-    private static List removeDups(List list) {
-    	if (list.size() <= 1) {
-    		return list;
-    	}
-    	HashSet set = new HashSet(list);
-    	if (set.size() == list.size()) {
-    		return list;
-    	}
-    	ArrayList result = new ArrayList(set.size());
-    	for (Iterator i = list.iterator(); i.hasNext();) {
-    		Object o = i.next();
-    		if (set.remove(o)) {
-    			result.add(o);
-    		}
-		}
-    	return result;
-    }
-    
-	/**
-     * Returns the common denominator class, interfaces, and adapters 
-     * for the given collection of objects.
-     */
-    private List getCommonClasses(List objects, List commonAdapters) {
-        if (objects == null || objects.size() == 0) {
-			return null;
-		}
-
-        // Optimization: if n==1 (or if all objects are of the same class), then the common class is the object's class,
-        // and the common adapters are the adapters cached for that class in the adapter manager
-        // See bug 177592 for more details.
-        if (allSameClass(objects)) {
-        	
-        	Class clazz = objects.get(0).getClass();
-        	commonAdapters.addAll(Arrays.asList(Platform.getAdapterManager().computeAdapterTypes(clazz)));
-        	List result = new ArrayList(1);
-        	result.add(clazz);
-        	return result;
-        }
-        
-        // Compute all the super classes, interfaces, and adapters 
-        // for the first element.
-        List classes = computeClassOrder(objects.get(0).getClass());
-        List adapters = computeAdapterOrder(classes);
-        List interfaces = computeInterfaceOrder(classes);
-
-        // Cache of all types found in the selection - this is needed
-        // to compute common adapters.
-        List lastCommonTypes = new ArrayList();
-
-        boolean classesEmpty = classes.isEmpty();
-        boolean interfacesEmpty = interfaces.isEmpty();
-
-        // Traverse the selection if there is more than one element selected.
-        for (int i = 1; i < objects.size(); i++) {
-            // Compute all the super classes for the current element
-            List otherClasses = computeClassOrder(objects.get(i).getClass());
-            if (!classesEmpty) {
-                classesEmpty = extractCommonClasses(classes, otherClasses);
-            }
-
-            // Compute all the interfaces for the current element
-            // and all of its super classes.
-            List otherInterfaces = computeInterfaceOrder(otherClasses);
-            if (!interfacesEmpty) {
-                interfacesEmpty = extractCommonClasses(interfaces,
-                        otherInterfaces);
-            }
-
-            // Compute all the adapters provided for the calculated
-            // classes and interfaces for this element.
-            List classesAndInterfaces = new ArrayList(otherClasses);
-            if (otherInterfaces != null) {
-				classesAndInterfaces.addAll(otherInterfaces);
-			}
-            List otherAdapters = computeAdapterOrder(classesAndInterfaces);
-
-            // Compute common adapters
-            // Note here that an adapter can match a class or interface, that is
-            // that an element in the selection may not adapt to a type but instead
-            // be of that type.
-            // If the selected classes doesn't have adapters, keep
-            // adapters that match the given classes types (classes and interfaces).
-            if (otherAdapters.isEmpty() && !adapters.isEmpty()) {
-                removeNonCommonAdapters(adapters, classesAndInterfaces);
-            } else {
-                if (adapters.isEmpty()) {
-                    removeNonCommonAdapters(otherAdapters, lastCommonTypes);
-                    if (!otherAdapters.isEmpty()) {
-						adapters.addAll(otherAdapters);
-					}
-                } else {
-                    // Remove any adapters of the first element that
-                    // are not in the current element's adapter list.
-                    for (Iterator it = adapters.iterator(); it.hasNext();) {
-                        String adapter = (String) it.next();
-                        if (!otherAdapters.contains(adapter)) {
-                            it.remove();
-                        }
-                    }
-                }
-            }
-
-            // Remember the common search order up to now, this is
-            // used to match adapters against common classes or interfaces.
-            lastCommonTypes.clear();
-            lastCommonTypes.addAll(classes);
-            lastCommonTypes.addAll(interfaces);
-
-            if (interfacesEmpty && classesEmpty && adapters.isEmpty()) {
-                // As soon as we detect nothing in common, just exit.
-                return null;
-            }
-        }
-
-        // Once the common classes, interfaces, and adapters are
-        // calculated, let's prune the lists to remove duplicates.       
-        ArrayList results = new ArrayList(4);
-        ArrayList superClasses = new ArrayList(4);
-        if (!classesEmpty) {
-            for (int j = 0; j < classes.size(); j++) {
-                if (classes.get(j) != null) {
-                    superClasses.add(classes.get(j));
-                }
-            }
-            // Just keep the first super class
-            if (!superClasses.isEmpty()) {
-                results.add(superClasses.get(0));
-            }
-        }
-
-        if (!interfacesEmpty) {
-            removeCommonInterfaces(superClasses, interfaces, results);
-        }
-
-        // Remove adapters already included as common classes
-        if (!adapters.isEmpty()) {
-            removeCommonAdapters(adapters, results);
-            commonAdapters.addAll(adapters);
-        }
-        return results;
-    }
-
-    /**
-     * Returns <code>true</code> if all objects in the given list are of the same class,
-     * <code>false</code> otherwise.
-	 */
-	private boolean allSameClass(List objects) {
-		int size = objects.size();
-		if (size <= 1) return true;
-		Class clazz = objects.get(0).getClass();
-		for (int i = 1; i < size; ++i) {
-			if (!objects.get(i).getClass().equals(clazz)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	private boolean extractCommonClasses(List classes, List otherClasses) {
-        boolean classesEmpty = true;
-        if (otherClasses.isEmpty()) {
-            // When no super classes, then it is obvious there
-            // are no common super classes with the first element
-            // so clear its list.
-            classes.clear();
-        } else {
-            // Remove any super classes of the first element that 
-            // are not in the current element's super classes list.
-            for (int j = 0; j < classes.size(); j++) {
-                if (classes.get(j) != null) {
-                    classesEmpty = false; // TODO: should this only be set if item not nulled out?
-                    if (!otherClasses.contains(classes.get(j))) {
-                        classes.set(j, null);
-                    }
-                }
-            }
-        }
-        return classesEmpty;
-    }
-
-    private void removeNonCommonAdapters(List adapters, List classes) {
-        for (int i = 0; i < classes.size(); i++) {
-            Object o = classes.get(i);
-            if (o != null) {
-                Class clazz = (Class) o;
-                String name = clazz.getName();
-                if (adapters.contains(name)) {
-					return;
-				}
-            }
-        }
-        adapters.clear();
-    }
-
-    private void removeCommonInterfaces(List superClasses, List types,
-            List results) {
-        List dropInterfaces = null;
-        if (!superClasses.isEmpty()) {
-            dropInterfaces = computeInterfaceOrder(superClasses);
-        }
-        for (int j = 0; j < types.size(); j++) {
-            if (types.get(j) != null) {
-                if (dropInterfaces != null
-                        && !dropInterfaces.contains(types.get(j))) {
-                    results.add(types.get(j));
-                }
-            }
-        }
-    }
-
-    private List computeAdapterOrder(List classList) {
-        Set result = new HashSet(4);
-        IAdapterManager adapterMgr = Platform.getAdapterManager();
-        for (Iterator list = classList.iterator(); list.hasNext();) {
-            Class clazz = ((Class) list.next());
-            String[] adapters = adapterMgr.computeAdapterTypes(clazz);
-            for (int i = 0; i < adapters.length; i++) {
-                String adapter = adapters[i];
-                if (!result.contains(adapter)) {
-                    result.add(adapter);
-                }
-            }
-        }
-        return new ArrayList(result);
-    }
-
-    /**
-     * Returns the common denominator resource class for the given
-     * collection of objects.
-     * Do not return a resource class if the objects are resources
-     * themselves so as to prevent double registration of actions.
-     */
-    private Class getCommonResourceClass(List objects) {
-        if (objects == null || objects.size() == 0) {
-            return null;
-        }
-        Class resourceClass = LegacyResourceSupport.getResourceClass();
-        if (resourceClass == null) {
-            // resources plug-in not loaded - no resources. period.
-            return null;
-        }
-
-        List testList = new ArrayList(objects.size());
-
-        for (int i = 0; i < objects.size(); i++) {
-            Object object = objects.get(i);
-
-            if (object instanceof IAdaptable) {
-                if (resourceClass.isInstance(object)) {
-                    continue;
-                }
-
-                Object resource = LegacyResourceSupport
-                        .getAdaptedContributorResource(object);
-
-                if (resource == null) {
-                    //Not a resource and does not adapt. No common resource class
-                    return null;
-                }
-                testList.add(resource);
-            } else {
-                return null;
-            }
-        }
-
-        return getCommonClass(testList);
-    }
-
-    /**
-     * Return the ResourceMapping class if the elements all adapt to it.
-     */
-    private Class getResourceMappingClass(List objects) {
-        if (objects == null || objects.size() == 0) {
-            return null;
-        }
-        Class resourceMappingClass = LegacyResourceSupport
-                .getResourceMappingClass();
-        if (resourceMappingClass == null) {
-            // resources plug-in not loaded - no resources. period.
-            return null;
-        }
-
-        for (int i = 0; i < objects.size(); i++) {
-            Object object = objects.get(i);
-
-            if (object instanceof IAdaptable) {
-                if (resourceMappingClass.isInstance(object)) {
-                    continue;
-                }
-
-                Object resourceMapping = LegacyResourceSupport
-                        .getAdaptedContributorResourceMapping(object);
-
-                if (resourceMapping == null) {
-                    //Not a resource and does not adapt. No common resource class
-                    return null;
-                }
-            } else {
-                return null;
-            }
-        }
-        // If we get here then all objects adapt to ResourceMapping
-        return resourceMappingClass;
-    }
-
-    /**
-     * Returns the common denominator class for the given
-     * collection of objects.
-     */
-    private Class getCommonClass(List objects) {
-        if (objects == null || objects.size() == 0) {
-			return null;
-		}
-        Class commonClass = objects.get(0).getClass();
-        // try easy
-        if (objects.size() == 1) {
-			return commonClass;
-        // try harder
-		}
-
-        for (int i = 1; i < objects.size(); i++) {
-            Object object = objects.get(i);
-            Class newClass = object.getClass();
-            // try the short cut
-            if (newClass.equals(commonClass)) {
-				continue;
-			}
-            // compute common class
-            commonClass = getCommonClass(commonClass, newClass);
-            // give up
-            if (commonClass == null) {
-				return null;
-			}
-        }
-        return commonClass;
-    }
-
-    /**
-     * Returns the common denominator class for
-     * two input classes.
-     */
-    private Class getCommonClass(Class class1, Class class2) {
-        List list1 = computeCombinedOrder(class1);
-        List list2 = computeCombinedOrder(class2);
-        for (int i = 0; i < list1.size(); i++) {
-            for (int j = 0; j < list2.size(); j++) {
-                Class candidate1 = (Class) list1.get(i);
-                Class candidate2 = (Class) list2.get(j);
-                if (candidate1.equals(candidate2)) {
-					return candidate1;
-				}
-            }
-        }
-        // no common class
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectFilterTest.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectFilterTest.java
deleted file mode 100644
index f788429..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectFilterTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IActionFilter;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * An ObjectFilterTest is used to read an object filter from XML,
- * and evaluate the results for a given object.
- */
-public class ObjectFilterTest {
-    private HashMap filterElements;
-
-    /**
-     * Create a new object filter. 
-     */
-    public ObjectFilterTest() {
-        // do nothing
-    }
-
-    /**
-     * Add a filter element to the test.  This element must contain
-     * a name value filter pair, as defined by the 
-     * <code>org.eclipse.ui.actionFilters</code> extension point.
-     */
-    public boolean addFilterElement(IConfigurationElement element) {
-        String name = element.getAttribute("name");//$NON-NLS-1$
-        if (name == null) {
-			return false;
-		}
-
-        // Get positive property.
-        String value = element.getAttribute("value");//$NON-NLS-1$
-        if (value == null) {
-			return false;
-		}
-        if (filterElements == null) {
-			filterElements = new HashMap();
-		}
-        filterElements.put(name, value);
-        return true;
-    }
-
-    /**
-     * Returns whether the object filter correctly matches a
-     * given object.  The results will be <code>true</code> if there is
-     * a filter match.  
-     * <p>
-     * If <code>adaptable is true</code>, the result will also be
-     * <code>rue</code> if the object is a wrapper for a resource, and
-     * the resource produces a filter match.
-     * </p>
-     * 
-     * @param object the object to examine
-     * @returns <code>true</code> if there is a filter match.  
-     */
-    public boolean matches(Object object, boolean adaptable) {
-        // Optimize it.
-        if (filterElements == null) {
-			return true;
-		}
-
-        // Try out the object.
-        if (this.preciselyMatches(object)) {
-			return true;
-		}
-        return false;
-    }
-
-    /**
-     * Returns whether the object filter correctly matches a given object.
-     */
-    private boolean preciselyMatches(Object object) {
-        // Get the action filter.
-        IActionFilter filter = (IActionFilter)Util.getAdapter(object, IActionFilter.class);
-        if (filter == null) {
-			return false;
-		}
-
-        // Run the action filter.
-        Iterator iter = filterElements.keySet().iterator();
-        while (iter.hasNext()) {
-            String name = (String) iter.next();
-            String value = (String) filterElements.get(name);
-            if (!filter.testAttribute(object, name, value)) {
-				return false;
-			}
-        }
-        return true;
-    }
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectPluginAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectPluginAction.java
deleted file mode 100644
index 04d0ea8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ObjectPluginAction.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-
-/**
- * An object action extension in a popup menu.
- * <p>
- * For backward compatibility, the delegate object can implement either
- * <code>IActionDelegate</code> or <code>IObjectActionDelegate</code>.
- * </p>
- */
-public class ObjectPluginAction extends PluginAction implements IPartListener2 {
-	/**
-	 * The configuration element attribute for the identifier of the action
-	 * which this action is intended to override (i.e., replace).
-	 */
-	public static final String ATT_OVERRIDE_ACTION_ID = "overrideActionId";//$NON-NLS-1$
-
-    private String overrideActionId;
-
-    private IWorkbenchPart activePart;
-    
-	public void partActivated(IWorkbenchPartReference partRef) {
-	}
-
-	public void partBroughtToTop(IWorkbenchPartReference partRef) {
-	}
-
-	public void partClosed(IWorkbenchPartReference partRef) {
-		if (activePart != null && partRef.getPart(false) == activePart) {
-			selectionChanged(StructuredSelection.EMPTY);
-			disposeDelegate();
-			activePart = null;
-		}
-	}
-
-	public void partDeactivated(IWorkbenchPartReference partRef) {
-	}
-
-	public void partHidden(IWorkbenchPartReference partRef) {
-	}
-
-	public void partInputChanged(IWorkbenchPartReference partRef) {
-	}
-
-	public void partOpened(IWorkbenchPartReference partRef) {
-	}
-
-	public void partVisible(IWorkbenchPartReference partRef) {
-	}
-
-    /**
-	 * Constructs a new ObjectPluginAction.
-	 * 
-	 * @param actionElement
-	 *            The configuration element used to construct this action; must
-	 *            not be <code>null</code>.
-	 * @param id
-	 *            The identifier for this action; must not be <code>null</code>.
-	 * @param style
-	 *            The style bits
-	 */
-    public ObjectPluginAction(IConfigurationElement actionElement, String id,
-            int style) {
-        super(actionElement, id, style);
-        overrideActionId = actionElement.getAttribute(ATT_OVERRIDE_ACTION_ID);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected void initDelegate() {
-        super.initDelegate();
-		final IActionDelegate actionDelegate = getDelegate();
-		if (actionDelegate instanceof IObjectActionDelegate
-				&& activePart != null) {
-			final IObjectActionDelegate objectActionDelegate = (IObjectActionDelegate) actionDelegate;
-			final ISafeRunnable runnable = new ISafeRunnable() {
-				public void run() throws Exception {
-					objectActionDelegate.setActivePart(ObjectPluginAction.this,
-							activePart);
-				}
-
-				public void handleException(Throwable exception) {
-					// Do nothing.
-				}
-			};
-			Platform.run(runnable);
-		}
-	}
-
-    /**
-	 * Sets the active part for the delegate.
-	 * <p>
-	 * This method will be called every time the action appears in a popup menu.
-	 * The targetPart may change with each invocation.
-	 * </p>
-	 * 
-	 * @param targetPart
-	 *            the new part target
-	 */
-    public void setActivePart(IWorkbenchPart targetPart) {
-    	if (activePart != targetPart) {
-			if (activePart != null) {
-				activePart.getSite().getPage().removePartListener(this);
-			}
-			if (targetPart != null) {
-				targetPart.getSite().getPage().addPartListener(this);
-			}
-		}
-        activePart = targetPart;
-        IActionDelegate delegate = getDelegate();
-        if (delegate instanceof IObjectActionDelegate && activePart != null) {
-			final IObjectActionDelegate objectActionDelegate = (IObjectActionDelegate) delegate;
-			final ISafeRunnable runnable = new ISafeRunnable() {
-				public void run() throws Exception {
-					objectActionDelegate.setActivePart(ObjectPluginAction.this,
-							activePart);
-				}
-
-				public void handleException(Throwable exception) {
-					// Do nothing.
-				}
-			};
-			Platform.run(runnable);
-		}
-	}
-
-    /**
-     * Returns the action identifier this action overrides.
-     * 
-     * @return the action identifier to override or <code>null</code>
-     */
-    public String getOverrideActionId() {
-        return overrideActionId;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PluginAction#dispose()
-     */
-    public void dispose() {
-    	if (activePart!=null) {
-    		activePart.getSite().getPage().removePartListener(this);
-    		activePart = null;
-    	}
-    	super.dispose();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java
deleted file mode 100644
index d3686bf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPerspectivePropertyTester.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-
-/**
- * Tests if any Perspective is open or not.
- * 
- * @since 3.3
- * 
- */
-public class OpenPerspectivePropertyTester extends PropertyTester {
-	private static final String PROPERTY_IS_PERSPECTIVE_OPEN = "isPerspectiveOpen"; //$NON-NLS-1$
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object,
-	 *      java.lang.String, java.lang.Object[], java.lang.Object)
-	 */
-	public boolean test(Object receiver, String property, Object[] args,
-			Object expectedValue) {
-		if (args.length == 0 && receiver instanceof WorkbenchWindow) {
-			final WorkbenchWindow window = (WorkbenchWindow) receiver;
-			if (PROPERTY_IS_PERSPECTIVE_OPEN.equals(property)) {
-				IWorkbenchPage page = window.getActivePage();
-				if (page != null) {
-					IPerspectiveDescriptor persp = page.getPerspective();
-					if (persp != null) {
-						return true;
-					}
-				}
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPreferencesAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPreferencesAction.java
deleted file mode 100644
index d976a6c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OpenPreferencesAction.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.dialogs.PreferencesUtil;
-
-/**
- * Open the preferences dialog
- */
-public class OpenPreferencesAction extends Action implements ActionFactory.IWorkbenchAction {
-
-	/**
-	 * The workbench window; or <code>null</code> if this
-	 * action has been <code>dispose</code>d.
-	 */
-	private IWorkbenchWindow workbenchWindow;
-
-	/**
-	 * Create a new <code>OpenPreferenceAction</code>
-	 * This default constructor allows the the action to be called from the welcome page.
-	 */
-	public OpenPreferencesAction() {
-		this(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-	}
-
-	/**
-	 * Create a new <code>OpenPreferenceAction</code> and initialize it 
-	 * from the given resource bundle.
-	 * @param window
-	 */
-	public OpenPreferencesAction(IWorkbenchWindow window) {
-		super(WorkbenchMessages.OpenPreferences_text); 
-		if (window == null) {
-			throw new IllegalArgumentException();
-		}
-		this.workbenchWindow = window;
-		// @issue action id not set
-		setToolTipText(WorkbenchMessages.OpenPreferences_toolTip); 
-		window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.OPEN_PREFERENCES_ACTION);
-	}
-
-	/* (non-Javadoc)
-	 * Method declared on Action.
-	 */
-	public void run() {
-		if (workbenchWindow == null) {
-			// action has been dispose
-			return;
-		}
-		PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, null, null, null);
-		dialog.open();
-	}
-
-	/* (non-Javadoc)
-	 * Method declared on ActionFactory.IWorkbenchAction.
-	 */
-	public void dispose() {
-		workbenchWindow = null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OverlayIcon.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OverlayIcon.java
deleted file mode 100644
index 5743fe5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/OverlayIcon.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-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.ui.internal.util.Util;
-
-/**
- * An OverlayIcon consists of a main icon and an overlay icon
- */
-public class OverlayIcon extends CompositeImageDescriptor {
-
-    // the size of the OverlayIcon
-    private Point fSize = null;
-
-    // the main image
-    private ImageDescriptor fBase = null;
-
-    // the additional image (a pin for example)
-    private ImageDescriptor fOverlay = null;
-
-    /**
-     * @param base the main image
-     * @param overlay the additional image (a pin for example)
-     * @param size the size of the OverlayIcon
-     */
-    public OverlayIcon(ImageDescriptor base, ImageDescriptor overlay, Point size) {
-        fBase = base;
-        fOverlay = overlay;
-        fSize = size;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int)
-     */
-    protected void drawCompositeImage(int width, int height) {
-        ImageData bg;
-        if (fBase == null || (bg = fBase.getImageData()) == null) {
-			bg = DEFAULT_IMAGE_DATA;
-		}
-        drawImage(bg, 0, 0);
-
-        if (fOverlay != null) {
-			drawTopRight(fOverlay);
-		}
-    }
-
-    /**
-     * @param overlay the additional image (a pin for example)
-     * to be drawn on top of the main image
-     */
-    protected void drawTopRight(ImageDescriptor overlay) {
-        if (overlay == null) {
-			return;
-		}
-        int x = getSize().x;
-        ImageData id = overlay.getImageData();
-        x -= id.width;
-        drawImage(id, x, 0);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize()
-     */
-    protected Point getSize() {
-        return fSize;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return Util.hashCode(fBase) * 17 + Util.hashCode(fOverlay);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (!(obj instanceof OverlayIcon)) {
-			return false;
-		}
-        OverlayIcon overlayIcon = (OverlayIcon) obj;
-        return Util.equals(this.fBase, overlayIcon.fBase)
-                && Util.equals(this.fOverlay, overlayIcon.fOverlay)
-                && Util.equals(this.fSize, overlayIcon.fSize);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java
deleted file mode 100644
index 085a296..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.PartEventAction;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
-
-/**
- * The abstract superclass for actions that listen to page activation and
- * open/close events. This implementation tracks the active page (see 
- * <code>getActivePage</code>) and provides a convenient place to monitor
- * page lifecycle events that could affect the availability of the action.
- * <p>
- * Subclasses must implement the following <code>IAction</code> method:
- * <ul>
- *   <li><code>run</code> - to do the action's work</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend any of the <code>IPartListener</code> methods if the
- * action availablity needs to be recalculated:
- * <ul>
- *   <li><code>partActivated</code></li> 
- *   <li><code>partDeactivated</code></li>
- *   <li><code>partOpened</code></li>
- *   <li><code>partClosed</code></li>
- *   <li><code>partBroughtToTop</code></li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend any of the <code>IPageListener</code> methods if the
- * action availablity needs to be recalculated:
- * <ul>
- *   <li><code>pageActivated</code></li> 
- *   <li><code>pageClosed</code></li>
- *   <li><code>pageOpened</code></li>
- * </ul>
- * </p>
- * <p>
- * This method implements the <code>IPartListener</code> and
- * <code>IPageListener</code>interfaces, and automatically registers listeners
- * so that it can keep its enablement state up to date. Ordinarily, the
- * window's references to these listeners will be dropped automatically when
- * the window closes. However, if the client needs to get rid of an action
- * while the window is still open, the client must call 
- * {@link IWorkbenchAction#dispose dispose} to give the action an
- * opportunity to deregister its listeners and to perform any other cleanup.
- * </p>
- */
-public abstract class PageEventAction extends PartEventAction implements
-        IPageListener, ActionFactory.IWorkbenchAction {
-    /**
-     * The active page, or <code>null</code> if none.
-     */
-    private IWorkbenchPage activePage;
-
-    /**
-     * The workbench window this action is registered with.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Creates a new action with the given text. Register this
-     * action with the workbench window for page lifecycle
-     * events.
-     *
-     * @param text the string used as the text for the action, 
-     *   or <code>null</code> if there is no text
-     * @param window the workbench window this action is
-     *   registered with
-     */
-    protected PageEventAction(String text, IWorkbenchWindow window) {
-        super(text);
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        this.activePage = window.getActivePage();
-        this.workbenchWindow.addPageListener(this);
-        this.workbenchWindow.getPartService().addPartListener(this);
-    }
-
-    /**
-     * Returns the currently active page in the workbench window.
-     *
-     * @return currently active page in the workbench window,
-     * or <code>null</code> in none
-     */
-    public final IWorkbenchPage getActivePage() {
-        return activePage;
-    }
-
-    /**
-     * Returns the workbench window this action applies to.
-     *
-     * @return the workbench window, or <code>null</code> if this action has been
-     * disposed
-     */
-    public final IWorkbenchWindow getWorkbenchWindow() {
-        return workbenchWindow;
-    }
-
-    /**
-     * The <code>PageEventAction</code> implementation of this 
-     * <code>IPageListener</code> method records that the given page is active.
-     * Subclasses may extend this method if action availability has to be
-     * recalculated.
-     */
-    public void pageActivated(IWorkbenchPage page) {
-        this.activePage = page;
-    }
-
-    /**
-     * The <code>PageEventAction</code> implementation of this 
-     * <code>IPageListener</code> method clears the active page if it just closed.
-     * Subclasses may extend this method if action availability has to be
-     * recalculated.
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        if (page == activePage) {
-            activePage = null;
-        }
-    }
-
-    /**
-     * The <code>PageEventAction</code> implementation of this 
-     * <code>IPageListener</code> method does nothing. Subclasses should extend
-     * this method if action availability has to be recalculated.
-     */
-    public void pageOpened(IWorkbenchPage page) {
-        // do nothing
-    }
-
-    /**
-     * The <code>PageEventAction</code> implementation of this 
-     * <code>ActionFactory.IWorkbenchAction</code> method
-     * deregisters the part and page listener adding by the constructor.
-     * Subclasses should extend this method to do additional
-     * cleanup.
-     * 
-     * @since 3.0
-     */
-    public void dispose() {
-        if (workbenchWindow == null) {
-            // action has already been disposed
-            return;
-        }
-        workbenchWindow.removePageListener(this);
-        workbenchWindow.getPartService().removePartListener(this);
-        workbenchWindow = null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageLayout.java
deleted file mode 100644
index 5770e9d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageLayout.java
+++ /dev/null
@@ -1,949 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Dan Rubel <dan_rubel@instantiations.com>
- *     - Fix for bug 11490 - define hidden view (placeholder for view) in plugin.xml
- *     Ted Stockwell <emorning@yahoo.com>
- *     - Fix for bug 63595 - IPageLayout.addFastView regression (3.0M8 to 3.0M9)
- *     Chris Gross <schtoo@schtoo.com> 
- *     - Fix for 99155 - allow standalone view placeholders
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.IFolderLayout;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPlaceholderFolderLayout;
-import org.eclipse.ui.IViewLayout;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * This factory is used to define the initial layout of a part sash container.
- * <p>
- * Design notes: The design of <code>IPageLayout</code> is a reflection of 
- * three requirements:
- * <ol>
- *   <li>A mechanism is required to define the initial layout for a page. </li>
- *   <li>The views and editors within a page will be persisted between 
- *     sessions.</li>
- *   <li>The view and editor lifecycle for (1) and (2) should be identical.</li>
- * </ol>
- * </p>
- * <p>
- * In reflection of these requirements, the following strategy has been 
- * implemented for layout definition.
- * <ol>
- *   <li>A view extension is added to the workbench registry for the view. 
- *     This extension defines the extension id and extension class.  </li>
- *   <li>A view is added to a page by invoking one of the add methods
- *     in <code>IPageLayout</code>. The type of view is passed as an 
- *     extension id, rather than a handle. The page layout will map 
- *     the extension id to a view class, create an instance of the class, 
- *     and then add the view to the page.</li>
- * </ol>
- * </p>
- */
-public class PageLayout implements IPageLayout {
-    private ArrayList actionSets = new ArrayList(3);
-
-    private IPerspectiveDescriptor descriptor;
-
-    private LayoutPart editorFolder;
-
-    private boolean editorVisible = true;
-
-    private boolean fixed;
-
-    private ArrayList fastViews = new ArrayList(3);
-
-    private Map mapIDtoFolder = new HashMap(10);
-
-    private Map mapIDtoPart = new HashMap(10);
-
-    private Map mapIDtoViewLayoutRec = new HashMap(10);
-    
-    private Map mapFolderToFolderLayout = new HashMap(10);
-
-    private ArrayList newWizardShortcuts = new ArrayList(3);
-
-    private ArrayList perspectiveShortcuts = new ArrayList(3);
-
-    private ViewSashContainer rootLayoutContainer;
-
-    private ArrayList showInPartIds = new ArrayList(3);
-
-    private ArrayList showViewShortcuts = new ArrayList(3);
-
-    private ViewFactory viewFactory;
-
-	private List minimizedStacks = new ArrayList();
-
-    /**
-     * Constructs a new PageLayout for other purposes.
-     */
-    public PageLayout() {
-        //no-op
-    }
-
-    /**
-     * Constructs a new PageLayout for the normal case of creating a new
-     * perspective.
-     */
-    public PageLayout(ViewSashContainer container, ViewFactory viewFactory,
-            LayoutPart editorFolder, IPerspectiveDescriptor descriptor) {
-        super();
-        this.viewFactory = viewFactory;
-        this.rootLayoutContainer = container;
-        this.editorFolder = editorFolder;
-        this.descriptor = descriptor;
-        prefill();
-    }
-
-    /**
-     * Adds the editor to a layout.
-     */
-    private void addEditorArea() {
-        try {
-            // Create the part.
-            LayoutPart newPart = createView(ID_EDITOR_AREA);
-            if (newPart == null) {
-				// this should never happen as long as newID is the editor ID.
-                return;
-			}
-
-            setRefPart(ID_EDITOR_AREA, newPart);
-
-            // Add it to the layout.
-            rootLayoutContainer.add(newPart);
-        } catch (PartInitException e) {
-            WorkbenchPlugin.log(getClass(), "addEditorArea()", e); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Adds an action set to the page.
-     * 
-     * @param actionSetID Identifies the action set extension to use. It must
-     *            exist within the workbench registry.
-     */
-    public void addActionSet(String actionSetID) {
-        if (!actionSets.contains(actionSetID)) {
-            actionSets.add(actionSetID);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addFastView(java.lang.String)
-     */
-    public void addFastView(String id) {
-        addFastView(id, INVALID_RATIO);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addFastView(java.lang.String, float)
-     */
-    public void addFastView(String id, float ratio) {
-        if (checkPartInLayout(id)) {
-			return;
-		}
-        if (id != null) {
-            try {
-				IViewDescriptor viewDescriptor = viewFactory.getViewRegistry()
-						.find(ViewFactory.extractPrimaryId(id));
-				if (!WorkbenchActivityHelper.filterItem(viewDescriptor)) {
-					IViewReference ref = viewFactory.createView(ViewFactory
-							.extractPrimaryId(id), ViewFactory
-							.extractSecondaryId(id));
-					fastViews.add(ref);
-
-					// force creation of the view layout rec
-					ViewLayoutRec rec = getViewLayoutRec(id, true);
-
-					// remember the ratio, if valid
-					if (ratio >= IPageLayout.RATIO_MIN
-							&& ratio <= IPageLayout.RATIO_MAX) {
-						rec.fastViewWidthRatio = ratio;
-					}
-				}
-			} catch (PartInitException e) {
-				WorkbenchPlugin.log(getClass(), "addFastView", e); //$NON-NLS-1$
-			}
-        }
-    }
-
-    /**
-	 * Check to see if the partId represents a fast view's id.
-	 * 
-	 * @param partId
-	 *            The part's id.
-	 * @return true if the partId is a fast view id.
-	 */
-    private boolean isFastViewId(String partId) {
-        for (int i = 0; i < fastViews.size(); i++) {
-			IViewReference ref = (IViewReference) fastViews.get(i);
-			String secondaryId = ref.getSecondaryId();
-			String refId = (secondaryId == null ? ref.getId() : ref.getId()
-					+ ":" + secondaryId); //$NON-NLS-1$
-			if (refId.equals(partId)) {
-				return true;
-			}
-        }
-        return false;
-    }
-
-    /**
-	 * Returns the view layout record for the given view id, or null if not
-	 * found. If create is true, the record is created if it doesn't already
-	 * exist.
-	 * 
-	 * @since 3.0
-	 */
-    ViewLayoutRec getViewLayoutRec(String id, boolean create) {
-        ViewLayoutRec rec = (ViewLayoutRec) mapIDtoViewLayoutRec.get(id);
-        if (rec == null && create) {
-            rec = new ViewLayoutRec();
-            // set up the view layout appropriately if the page layout is fixed
-            if (isFixed()) {
-                rec.isCloseable = false;
-                rec.isMoveable = false;
-            }
-            mapIDtoViewLayoutRec.put(id, rec);
-        }
-        return rec;
-    }
-
-    /**
-     * Adds a creation wizard to the File New menu.
-     * The id must name a new wizard extension contributed to the 
-     * workbench's extension point (named <code>"org.eclipse.ui.newWizards"</code>).
-     *
-     * @param id the wizard id
-     */
-    public void addNewWizardShortcut(String id) {
-        if (!newWizardShortcuts.contains(id)) {
-            newWizardShortcuts.add(id);
-        }
-    }
-
-    /**
-     * Add the layout part to the page's layout
-     */
-    private void addPart(LayoutPart newPart, String partId, int relationship,
-            float ratio, String refId) {
-
-        setRefPart(partId, newPart);
-
-        // If the referenced part is inside a folder,
-        // then use the folder as the reference part.
-        LayoutPart refPart = getFolderPart(refId);
-        if (refPart == null) {
-			refPart = getRefPart(refId);
-		}
-
-        // Add it to the layout.
-        if (refPart != null) {
-            ratio = normalizeRatio(ratio);
-            rootLayoutContainer.add(newPart, getPartSashConst(relationship),
-                    ratio, refPart);
-        } else {
-            WorkbenchPlugin.log(NLS.bind(WorkbenchMessages.PageLayout_missingRefPart,  refId )); 
-            rootLayoutContainer.add(newPart);
-        }
-    }
-
-    /**
-     * Adds a perspective shortcut to the Perspective menu.
-     * The id must name a perspective extension contributed to the 
-     * workbench's extension point (named <code>"org.eclipse.ui.perspectives"</code>).
-     *
-     * @param id the perspective id
-     */
-    public void addPerspectiveShortcut(String id) {
-        if (!perspectiveShortcuts.contains(id)) {
-            perspectiveShortcuts.add(id);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addPlaceholder(java.lang.String, int, float, java.lang.String)
-     */
-    public void addPlaceholder(String viewId, int relationship, float ratio,
-            String refId) {
-        if (!checkValidPlaceholderId(viewId)) {
-            return;
-        }
-
-        // Create the placeholder.
-        PartPlaceholder newPart = new PartPlaceholder(viewId);
-        addPart(newPart, viewId, relationship, ratio, refId);
-        // force creation of the view layout rec
-        getViewLayoutRec(viewId, true);
-    }
-
-    /**
-     * Checks whether the given id is a valid placeholder id.
-     * A placeholder id may be simple or compound, and can optionally contain a wildcard.
-     * 
-     * @param id the placeholder id
-     * @return <code>true</code> if the given id is a valid placeholder id, <code>false</code> otherwise
-     */
-    boolean checkValidPlaceholderId(String id) {
-        // Check that view is not already in layout.
-        // This check is done even if the id has a wildcard, since it's incorrect to create
-        // multiple placeholders with the same id, wildcard or not.
-        if (checkPartInLayout(id)) {
-            return false;
-        }
-
-        // check that primary view id is valid, but only if it has no wildcard
-        String primaryId = ViewFactory.extractPrimaryId(id);
-        if (!ViewFactory.hasWildcard(primaryId)) {
-	        IViewRegistry reg = WorkbenchPlugin.getDefault().getViewRegistry();
-	        IViewDescriptor desc = reg.find(primaryId);
-	        if (desc == null) {
-	            // cannot safely open the dialog so log the problem
-	            WorkbenchPlugin.log("Unable to find view with id: " + primaryId + ", when creating perspective " + getDescriptor().getId()); //$NON-NLS-1$ //$NON-NLS-2$
-	            return false;
-	        }
-        }
-
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addShowInPart(java.lang.String)
-     */
-    public void addShowInPart(String id) {
-        if (!showInPartIds.contains(id)) {
-            showInPartIds.add(id);
-        }
-    }
-
-    /**
-     * Adds a view to the Show View menu. The id must name a view extension
-     * contributed to the workbench's extension point (named <code>"org.eclipse.ui.views"</code>).
-     * 
-     * @param id the view id
-     */
-    public void addShowViewShortcut(String id) {
-        if (!showViewShortcuts.contains(id)) {
-            showViewShortcuts.add(id);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addView(java.lang.String, int, float, java.lang.String)
-     */
-    public void addView(String viewId, int relationship, float ratio,
-            String refId) {
-        addView(viewId, relationship, ratio, refId, false, false, true);
-    }
-
-    /**
-     * Convenience method to allow setting the initial minimized
-     * state if a new stack is created. Used by the 'perspectiveExtension'
-     * reader.
-     * 
-     *  @since 3.3
-     */
-    public void addView(String viewId, int relationship, float ratio,
-            String refId, boolean minimized) {
-        addView(viewId, relationship, ratio, refId, minimized, false, true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addView(java.lang.String, int, float, java.lang.String)
-     */
-    private void addView(String viewId, int relationship, float ratio,
-            String refId, boolean minimized, boolean standalone, boolean showTitle) {
-        if (checkPartInLayout(viewId)) {
-			return;
-		}
-
-        try {
-            // Create the part.
-            LayoutPart newPart = createView(viewId);
-            if (newPart == null) {
-                addPlaceholder(viewId, relationship, ratio, refId);
-                LayoutHelper.addViewActivator(this, viewId);
-            } else {
-                int appearance = PresentationFactoryUtil.ROLE_VIEW;
-                if (standalone) {
-                    if (showTitle) {
-                        appearance = PresentationFactoryUtil.ROLE_STANDALONE;
-                    } else {
-                        appearance = PresentationFactoryUtil.ROLE_STANDALONE_NOTITLE;
-                    }
-                }
-
-                ViewStack newFolder = new ViewStack(rootLayoutContainer.page,
-                        true, appearance, null);
-                newFolder.add(newPart);
-                setFolderPart(viewId, newFolder);
-                addPart(newFolder, viewId, relationship, ratio, refId);
-                // force creation of the view layout rec
-                getViewLayoutRec(viewId, true);
-                
-                // Capture any minimized stacks
-                if (minimized) {
-                	// Remember the minimized stacks so we can
-                	// move them to the trim when the Perspective
-                	// activates...
-                	minimizedStacks.add(newFolder);
-                }
-            }
-        } catch (PartInitException e) {
-            WorkbenchPlugin.log(getClass(), "addView", e); //$NON-NLS-1$
-        }
-    }
-
-    public List getMinimizedStacks() {
-    	return minimizedStacks;
-    }
-    
-    /**
-     * Verify that the part is already present in the layout
-     * and cannot be added again. Log a warning message.
-     */
-    /*package*/
-    boolean checkPartInLayout(String partId) {
-        if (getRefPart(partId) != null || isFastViewId(partId)) {
-            WorkbenchPlugin.log(NLS.bind(WorkbenchMessages.PageLayout_duplicateRefPart,partId )); 
-            return true;
-        }
-
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#createFolder(java.lang.String, int, float, java.lang.String)
-     */
-    public IFolderLayout createFolder(String folderId, int relationship,
-            float ratio, String refId) {
-        if (checkPartInLayout(folderId)) {
-            ViewStack folder = (ViewStack) getRefPart(folderId);
-            
-            return (IFolderLayout) mapFolderToFolderLayout.get(folder);
-		}
-
-        // Create the folder.
-        ViewStack folder = new ViewStack(rootLayoutContainer.page);
-        folder.setID(folderId);
-        addPart(folder, folderId, relationship, ratio, refId);
-
-        // Create a wrapper.
-        FolderLayout layout = new FolderLayout(this, folder, viewFactory);
-        
-        mapFolderToFolderLayout.put(folder,layout);
-        
-        return layout;        
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#createPlaceholderFolder(java.lang.String, int, float, java.lang.String)
-     */
-    public IPlaceholderFolderLayout createPlaceholderFolder(String folderId,
-            int relationship, float ratio, String refId) {
-        if (checkPartInLayout(folderId)) {
-            ContainerPlaceholder folder = (ContainerPlaceholder) getRefPart(folderId);
-            
-            return (IPlaceholderFolderLayout) mapFolderToFolderLayout.get(folder);
-		}
-
-        // Create the folder.
-        ContainerPlaceholder folder = new ContainerPlaceholder(null);
-        folder.setContainer(rootLayoutContainer);
-        folder.setRealContainer(new ViewStack(rootLayoutContainer.page));
-        folder.setID(folderId);
-        addPart(folder, folderId, relationship, ratio, refId);
-
-        // Create a wrapper.
-        IPlaceholderFolderLayout layout = new PlaceholderFolderLayout(this, folder);
-        
-        mapFolderToFolderLayout.put(folder,layout);
-        
-        return layout;
-    }
-
-    /**
-     * Create a new <code>LayoutPart</code>.
-     * 
-     * @param partID the id of the part to create.
-     * @return the <code>LayoutPart</code>, or <code>null</code> if it should not be
-     * created because of activity filtering.
-     * @throws PartInitException thrown if there is a problem creating the part.
-     */
-    private LayoutPart createView(String partID) throws PartInitException {
-        if (partID.equals(ID_EDITOR_AREA)) {
-            return editorFolder;
-        }
-		IViewDescriptor viewDescriptor = viewFactory.getViewRegistry()
-		        .find(ViewFactory.extractPrimaryId(partID));
-		if (WorkbenchActivityHelper.filterItem(viewDescriptor)) {
-			return null;
-		}
-		return LayoutHelper.createView(getViewFactory(), partID);
-    }
-
-    /**
-     * @return the action set list for the page. This is <code>List</code> of 
-     * <code>String</code>s.
-     */
-    public ArrayList getActionSets() {
-        return actionSets;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#getDescriptor()
-     */
-    public IPerspectiveDescriptor getDescriptor() {
-        return descriptor;
-    }
-
-    /**
-     * @return an identifier for the editor area. The editor area is
-     * automatically added to each layout before any other part. It should be
-     * used as a reference part for other views.
-     */
-    public String getEditorArea() {
-        return ID_EDITOR_AREA;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#getEditorReuseThreshold()
-     */
-    public int getEditorReuseThreshold() {
-        return -1;
-    }
-
-    /**
-     * @return <code>ArrayList</code>
-     */
-    public ArrayList getFastViews() {
-        return fastViews;
-    }
-
-    /**
-     * @return the folder part containing the given view ID or <code>null</code>
-     * if none (i.e. part of the page layout instead of a folder layout).
-     */
-    private ViewStack getFolderPart(String viewId) {
-        return (ViewStack) mapIDtoFolder.get(viewId);
-    }
-
-    /**
-     * @return the new wizard shortcuts associated with the page. This is a <code>List</code> of 
-     * <code>String</code>s.
-     */
-    public ArrayList getNewWizardShortcuts() {
-        return newWizardShortcuts;
-    }
-
-    /**
-     * @return the part sash container const for a layout value.
-     */
-    private int getPartSashConst(int nRelationship) {
-        return nRelationship;
-    }
-
-    /**
-     * @return the perspective shortcuts associated with the page. This is a <code>List</code> of 
-     * <code>String</code>s.
-     */
-    public ArrayList getPerspectiveShortcuts() {
-        return perspectiveShortcuts;
-    }
-
-    /**
-     * @return the part for a given ID.
-     */
-    /*package*/
-    LayoutPart getRefPart(String partID) {
-        return (LayoutPart) mapIDtoPart.get(partID);
-    }
-
-    /**
-     * @return the top level layout container.
-     */
-    public ViewSashContainer getRootLayoutContainer() {
-        return rootLayoutContainer;
-    }
-
-    /**
-     * @return the ids of the parts to list in the Show In... prompter. This is
-     * a <code>List</code> of <code>String</code>s.
-     */
-    public ArrayList getShowInPartIds() {
-        return showInPartIds;
-    }
-
-    /**
-     * @return the show view shortcuts associated with the page. This is a <code>List</code> of 
-     * <code>String</code>s.
-     */
-    public ArrayList getShowViewShortcuts() {
-        return showViewShortcuts;
-    }
-
-    /**
-     * @return the <code>ViewFactory</code> for this <code>PageLayout</code>.
-     * @since 3.0
-     */
-    /* package */
-    ViewFactory getViewFactory() {
-        return viewFactory;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#isEditorAreaVisible()
-     */
-    public boolean isEditorAreaVisible() {
-        return editorVisible;
-    }
-
-    /**
-     * Trim the ratio so that direct manipulation of parts is easy.
-     * 
-     * @param in the initial ratio.
-     * @return the normalized ratio.
-     */
-    private float normalizeRatio(float in) {
-        if (in < RATIO_MIN) {
-			in = RATIO_MIN;
-		}
-        if (in > RATIO_MAX) {
-			in = RATIO_MAX;
-		}
-        return in;
-    }
-
-    /**
-     * Prefill the layout with required parts.
-     */
-    private void prefill() {
-        addEditorArea();
-
-        // Add default action sets.
-        ActionSetRegistry reg = WorkbenchPlugin.getDefault()
-                .getActionSetRegistry();
-        IActionSetDescriptor[] array = reg.getActionSets();
-        int count = array.length;
-        for (int nX = 0; nX < count; nX++) {
-            IActionSetDescriptor desc = array[nX];
-            if (desc.isInitiallyVisible()) {
-				addActionSet(desc.getId());
-			}
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#setEditorAreaVisible(boolean)
-     */
-    public void setEditorAreaVisible(boolean showEditorArea) {
-        editorVisible = showEditorArea;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#setEditorReuseThreshold(int)
-     */
-    public void setEditorReuseThreshold(int openEditors) {
-        //no-op
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#setFixed(boolean)
-     */
-    public void setFixed(boolean fixed) {
-        this.fixed = fixed;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#getFixed()
-     */
-    public boolean isFixed() {
-        return fixed;
-    }
-
-    /**
-     * Map the folder part containing the given view ID.
-     * 
-     * @param viewId the part ID.
-     * @param container the <code>ContainerPlaceholder</code>.
-     */
-    /*package*/
-    void setFolderPart(String viewId, ContainerPlaceholder container) {
-        LayoutPart tabFolder = container.getRealContainer();
-        mapIDtoFolder.put(viewId, tabFolder);
-    }
-
-    /**
-     * Map the folder part containing the given view ID.
-     * 
-     * @param viewId the part ID.
-     * @param folder the <code>ViewStack</code>.
-     */
-    /*package*/
-    void setFolderPart(String viewId, ViewStack folder) {
-        mapIDtoFolder.put(viewId, folder);
-    }
-
-    /**
-     * Map an ID to a part.
-     * 
-     * @param partId the part ID.
-     * @param part the <code>LayoutPart</code>.
-     */
-    /*package*/
-    void setRefPart(String partID, LayoutPart part) {
-        mapIDtoPart.put(partID, part);
-    }
-
-    // stackPart(Layoutpart, String, String) added by dan_rubel@instantiations.com
-    /**
-     * Stack a part on top of another.
-     * 
-     * @param newPart the new part.
-     * @param viewId the view ID.
-     * @param refId the reference ID.
-     */
-    private void stackPart(LayoutPart newPart, String viewId, String refId) {
-        setRefPart(viewId, newPart);
-        // force creation of the view layout rec
-        getViewLayoutRec(viewId, true);
-
-        // If ref part is in a folder than just add the
-        // new view to that folder.
-        ViewStack folder = getFolderPart(refId);
-        if (folder != null) {
-            folder.add(newPart);
-            setFolderPart(viewId, folder);
-            return;
-        }
-
-        // If the ref part is in the page layout then create
-        // a new folder and add the new view.
-        LayoutPart refPart = getRefPart(refId);
-        if (refPart != null && (refPart instanceof PartPane || refPart instanceof PartPlaceholder)) {
-            ViewStack newFolder = new ViewStack(rootLayoutContainer.page);
-            rootLayoutContainer.replace(refPart, newFolder);
-            newFolder.add(refPart);
-            newFolder.add(newPart);
-            setFolderPart(refId, newFolder);
-            setFolderPart(viewId, newFolder);
-            return;
-        }
-
-        // If ref part is not found then just do add.
-        WorkbenchPlugin.log(NLS.bind(WorkbenchMessages.PageLayout_missingRefPart, refId )); 
-        rootLayoutContainer.add(newPart);
-    }
-
-    // stackPlaceholder(String, String) added by dan_rubel@instantiations.com
-    /**
-     * Stack a placeholder on top of another.
-     * 
-     * @param viewId the view ID.
-     * @param refId the reference ID.
-     */
-    public void stackPlaceholder(String viewId, String refId) {
-        if (checkPartInLayout(viewId)) {
-			return;
-		}
-
-        // Create the placeholder.
-        PartPlaceholder newPart = new PartPlaceholder(viewId);
-
-        LayoutPart refPart = getRefPart(refId);
-        if (refPart != null) {
-            newPart.setContainer(refPart.getContainer());
-        }
-
-        stackPart(newPart, viewId, refId);
-    }
-
-    // stackView(String, String) modified by dan_rubel@instantiations.com
-    /**
-     * Stack one view on top of another.
-     * 
-     * @param viewId the view ID.
-     * @param refId the reference ID.
-     */
-    public void stackView(String viewId, String refId) {
-        if (checkPartInLayout(viewId)) {
-			return;
-		}
-
-        // Create the new part.
-        try {
-            LayoutPart newPart = createView(viewId);
-            if (newPart == null) {
-                stackPlaceholder(viewId, refId);
-                LayoutHelper.addViewActivator(this, viewId);
-            } else {
-				stackPart(newPart, viewId, refId);
-			}
-        } catch (PartInitException e) {
-            WorkbenchPlugin.log(getClass(), "stackView", e); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Converts SWT position constants into layout position constants.
-     * 
-     * @param swtConstant one of SWT.TOP, SWT.BOTTOM, SWT.LEFT, or SWT.RIGHT
-     * @return one of IPageLayout.TOP, IPageLayout.BOTTOM, IPageLayout.LEFT, IPageLayout.RIGHT, or -1 indicating an
-     * invalid input
-     * 
-     * @since 3.0
-     */
-    public static int swtConstantToLayoutPosition(int swtConstant) {
-        switch (swtConstant) {
-        case SWT.TOP:
-            return IPageLayout.TOP;
-        case SWT.BOTTOM:
-            return IPageLayout.BOTTOM;
-        case SWT.RIGHT:
-            return IPageLayout.RIGHT;
-        case SWT.LEFT:
-            return IPageLayout.LEFT;
-        }
-
-        return -1;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addStandaloneView(java.lang.String, boolean, int, float, java.lang.String)
-     * @since 3.0
-     */
-    public void addStandaloneView(String viewId, boolean showTitle,
-            int relationship, float ratio, String refId) {
-        addView(viewId, relationship, ratio, refId, false, true, showTitle);
-        ViewLayoutRec rec = getViewLayoutRec(viewId, true);
-        rec.isStandalone = true;
-        rec.showTitle = showTitle;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#addStandaloneViewPlaceholder(java.lang.String, int, float, java.lang.String, boolean)
-     */
-    public void addStandaloneViewPlaceholder(String viewId, int relationship,
-			float ratio, String refId, boolean showTitle) {
-
-		String stackId = viewId + ".standalonefolder"; //$NON-NLS-1$
-
-		// Check to see if the view is already in the layout
-		if (!checkValidPlaceholderId(viewId)) {
-			return;
-		}
-
-		// Create the folder.
-		ContainerPlaceholder folder = new ContainerPlaceholder(null);
-		folder.setContainer(rootLayoutContainer);
-		int appearance = PresentationFactoryUtil.ROLE_STANDALONE;
-		if (!showTitle) {
-			appearance = PresentationFactoryUtil.ROLE_STANDALONE_NOTITLE;
-		}
-		folder.setRealContainer(new ViewStack(rootLayoutContainer.page, true,
-				appearance, null));
-		folder.setID(stackId);
-		addPart(folder, stackId, relationship, ratio, refId);
-
-		// Create a wrapper.
-		PlaceholderFolderLayout placeHolder = new PlaceholderFolderLayout(this,
-				folder);
-
-		// Add the standalone view immediately
-		placeHolder.addPlaceholder(viewId);
-
-		ViewLayoutRec rec = getViewLayoutRec(viewId, true);
-		rec.isStandalone = true;
-		rec.showTitle = showTitle;
-	}
-
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPageLayout#getViewLayout(java.lang.String)
-	 * @since 3.0
-	 */
-    public IViewLayout getViewLayout(String viewId) {
-        ViewLayoutRec rec = getViewLayoutRec(viewId, true);
-        if (rec == null) {
-            return null;
-        }
-        return new ViewLayout(this, rec);
-    }
-
-    /**
-     * @since 3.0
-     */
-    public Map getIDtoViewLayoutRecMap() {
-        return mapIDtoViewLayoutRec;
-    }
-
-    /**
-     * Removes any existing placeholder with the given id.
-     * 
-     * @param id the id for the placeholder
-     * @since 3.1
-     */
-	public void removePlaceholder(String id) {
-		LayoutPart part = getRefPart(id);
-		if (part instanceof PartPlaceholder) {
-			ViewStack stack = getFolderPart(id);
-			if (stack != null) {
-				stack.remove(part);
-			}
-			else {
-				rootLayoutContainer.remove(part);
-			}
-			mapIDtoPart.remove(id);
-			mapIDtoFolder.remove(id);
-			mapIDtoViewLayoutRec.remove(id);
-		}
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPageLayout#getFolderForView(java.lang.String)
-     */
-    public IPlaceholderFolderLayout getFolderForView(String viewId)
-    {
-        if (!mapIDtoFolder.containsKey(viewId))
-            return null;
-                
-        ViewStack folder = (ViewStack) mapIDtoFolder.get(viewId);
-        IPlaceholderFolderLayout layout = null;
-        if (!mapFolderToFolderLayout.containsKey(folder))
-        {
-            layout = new FolderLayout(this, folder, viewFactory);
-            mapFolderToFolderLayout.put(folder, layout);
-        }
-        else
-        {
-            layout = (IPlaceholderFolderLayout)mapFolderToFolderLayout.get(folder);
-        }
-        return layout;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageListenerList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageListenerList.java
deleted file mode 100644
index bf99dbb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageListenerList.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.internal.misc.UIStats;
-
-/**
- * Part listener list.
- */
-public class PageListenerList extends EventManager {
-
-    /**
-     * PartNotifier constructor comment.
-     */
-    public PageListenerList() {
-        super();
-    }
-
-    /**
-     * Adds an IPartListener to the part service.
-     */
-    public void addPageListener(IPageListener l) {
-    	addListenerObject(l);
-    }
-
-    /**
-     * Calls a page listener with associated performance event instrumentation
-     * 
-     * @param runnable
-     * @param listener
-     * @param page
-     * @param description
-     */
-    private void fireEvent(SafeRunnable runnable, IPageListener listener, IWorkbenchPage page, String description) {
-    	String label = null;//for debugging
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PAGE_LISTENERS)) {
-    		label = description + page.getLabel();
-    		UIStats.start(UIStats.NOTIFY_PAGE_LISTENERS, label);
-    	}
-    	Platform.run(runnable);
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PAGE_LISTENERS)) {
-			UIStats.end(UIStats.NOTIFY_PAGE_LISTENERS, listener, label);
-		}
-	}
-
-    /**
-     * Notifies the listener that a part has been activated.
-     */
-    public void firePageActivated(final IWorkbenchPage page) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPageListener l = (IPageListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.pageActivated(page);
-                }
-            }, l, page, "activated::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been closed
-     */
-    public void firePageClosed(final IWorkbenchPage page) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPageListener l = (IPageListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.pageClosed(page);
-                }
-            }, l, page, "closed::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been opened.
-     */
-    public void firePageOpened(final IWorkbenchPage page) {
-        Object[] listeners = getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            final IPageListener l = (IPageListener) listeners[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.pageOpened(page);
-                }
-            }, l, page, "opened::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Removes an IPartListener from the part service.
-     */
-    public void removePageListener(IPageListener l) {
-        removeListenerObject(l);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
deleted file mode 100644
index 5764259..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Provides debug view selection management/notification for
- * a debug view in a specific workbench page. This selection
- * provider sheilds clients from a debug view openning and closing,
- * and still provides selection notification/information even
- * when the debug view is not the active part.
- */
-public class PagePartSelectionTracker extends AbstractPartSelectionTracker
-        implements IPartListener, ISelectionChangedListener {
-
-    /**
-     * The workbench page for which this is tracking selection.
-     */
-    private IWorkbenchPage fPage;
-
-    /**
-     * The part in this tracker's page, or <code>null</code> if one is not open.
-     */
-    private IWorkbenchPart fPart;
-
-    private ISelectionChangedListener selectionListener = new ISelectionChangedListener() {
-        public void selectionChanged(SelectionChangedEvent event) {
-            fireSelection(getPart(), event.getSelection());
-        }
-    };
-
-    private ISelectionChangedListener postSelectionListener = new ISelectionChangedListener() {
-        public void selectionChanged(SelectionChangedEvent event) {
-            firePostSelection(getPart(), event.getSelection());
-        }
-    };
-
-    public PagePartSelectionTracker(IWorkbenchPage page, String partId) {
-        super(partId);
-        setPage(page);
-        page.addPartListener(this);
-        String secondaryId = null;
-        int indexOfColon;
-        if ((indexOfColon = partId.indexOf(':')) != -1) {
-        	secondaryId = partId.substring(indexOfColon + 1);
-        	partId = partId.substring(0, indexOfColon);
-        }
-		IViewReference part = page.findViewReference(partId, secondaryId);
-        if (part != null && part.getView(false) != null) {
-            setPart(part.getView(false), false);
-        }
-    }
-
-    /**
-     * Disposes this selection provider - removes all listeners
-     * currently registered.
-     */
-    public void dispose() {
-        setPart(null, false);
-        setPage(null);
-        super.dispose();
-    }
-
-    /*
-     * @see IPartListener#partActivated(IWorkbenchPart)
-     */
-    public void partActivated(IWorkbenchPart part) {
-    }
-
-    /*
-     * @see IPartListener#partBroughtToTop(IWorkbenchPart)
-     */
-    public void partBroughtToTop(IWorkbenchPart part) {
-    }
-
-    /**
-     * @see IPartListener#partClosed(IWorkbenchPart)
-     */
-    public void partClosed(IWorkbenchPart part) {
-        if (getPartId(part).equals(getPartId())) {
-            setPart(null, true);
-        }
-    }
-
-    /*
-     * @see IPartListener#partDeactivated(IWorkbenchPart)
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-    }
-
-    /**
-     * @see IPartListener#partOpened(IWorkbenchPart)
-     */
-    public void partOpened(IWorkbenchPart part) {
-        if (getPartId(part).equals(getPartId())) {
-            setPart(part, true);
-        }
-    }
-
-    /**
-     * Returns the id for the given part, taking into account
-     * multi-view instances which may have a secondary id.
-     * 
-     * @since 3.0
-     */
-    private Object getPartId(IWorkbenchPart part) {
-        String id = part.getSite().getId();
-        if (part instanceof IViewPart) {
-            String secondaryId = ((IViewPart) part).getViewSite()
-                    .getSecondaryId();
-            if (secondaryId != null) {
-                id = id + ':' + secondaryId;
-            }
-        }
-        return id;
-    }
-
-    /**
-     * The selection has changed in the part being tracked.
-     * Forward it to the listeners.
-     * 
-     * @see ISelectionChangedListener#selectionChanged
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        fireSelection(getPart(), event.getSelection());
-    }
-
-    /**
-     * Sets the page this selection provider works for
-     * 
-     * @param page workbench page
-     */
-    private void setPage(IWorkbenchPage page) {
-        fPage = page;
-    }
-
-    /**
-     * Returns the page this selection provider works for
-     * 
-     * @return workbench page
-     */
-    protected IWorkbenchPage getPage() {
-        return fPage;
-    }
-
-    /**
-     * Returns the part this is tracking, 
-     * or <code>null</code> if it is not open
-     * 
-     * @return part., or <code>null</code>
-     */
-    protected IWorkbenchPart getPart() {
-        return fPart;
-    }
-
-    /*
-     * @see AbstractPartSelectionTracker#getSelection()
-     */
-    public ISelection getSelection() {
-        IWorkbenchPart part = getPart();
-        if (part != null) {
-            ISelectionProvider sp = part.getSite().getSelectionProvider();
-            if (sp != null) {
-                return sp.getSelection();
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @see AbstractDebugSelectionProvider#getSelectionProvider()
-     */
-    protected ISelectionProvider getSelectionProvider() {
-        IWorkbenchPart part = getPart();
-        if (part != null) {
-            return part.getSite().getSelectionProvider();
-        }
-        return null;
-    }
-
-    /**
-     * Sets the part for this selection tracker.
-     * 
-     * @param part the part
-     * @param notify whether to send notification that the selection has changed.
-     */
-    private void setPart(IWorkbenchPart part, boolean notify) {
-        if (fPart != null) {
-            // remove myself as a listener from the existing part
-            ISelectionProvider sp = fPart.getSite().getSelectionProvider();
-            if (sp != null) {
-                sp.removeSelectionChangedListener(selectionListener);
-                if (sp instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) sp)
-                            .removePostSelectionChangedListener(postSelectionListener);
-				} else {
-					sp.removeSelectionChangedListener(postSelectionListener);
-				}
-            }
-        }
-        fPart = part;
-        ISelection sel = null;
-        if (part != null) {
-            ISelectionProvider sp = part.getSite().getSelectionProvider();
-            if (sp != null) {
-                sp.addSelectionChangedListener(selectionListener);
-                if (sp instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) sp)
-                            .addPostSelectionChangedListener(postSelectionListener);
-				} else {
-					sp.addSelectionChangedListener(postSelectionListener);
-				}
-                if (notify) {
-                    // get the selection to send below
-                    sel = sp.getSelection();
-                }
-            }
-        }
-        if (notify) {
-            fireSelection(part, sel);
-            firePostSelection(part, sel);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java
deleted file mode 100644
index 6550ee1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IWorkbenchPage;
-
-/**
- * The selection service for a page.
- */
-/* package */
-class PageSelectionService extends AbstractSelectionService {
-
-    private IWorkbenchPage page;
-
-    /**
-     * Creates a new selection service for a specific workbench page.
-     */
-    public PageSelectionService(IWorkbenchPage page) {
-        setPage(page);
-    }
-
-    /**
-     * Sets the page.
-     */
-    private void setPage(IWorkbenchPage page) {
-        this.page = page;
-    }
-
-    /**
-     * Returns the page.
-     */
-    protected IWorkbenchPage getPage() {
-        return page;
-    }
-
-    /*
-     * @see AbstractSelectionService#createPartTracker(String)
-     */
-    protected AbstractPartSelectionTracker createPartTracker(String partId) {
-        return new PagePartSelectionTracker(getPage(), partId);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartList.java
deleted file mode 100644
index d4a5172..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartList.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.part.MultiEditor;
-
-public abstract class PartList {
-	private IWorkbenchPartReference activePartReference;
-
-	private IEditorReference activeEditorReference;
-
-	// private List parts = new ArrayList();
-
-	private IPropertyListener listener = new IPropertyListener() {
-		public void propertyChanged(Object source, int propId) {
-			WorkbenchPartReference ref = (WorkbenchPartReference) source;
-
-			switch (propId) {
-			case WorkbenchPartReference.INTERNAL_PROPERTY_OPENED:
-				partOpened(ref);
-				break;
-			case WorkbenchPartReference.INTERNAL_PROPERTY_CLOSED:
-				partClosed(ref);
-				break;
-			case WorkbenchPartReference.INTERNAL_PROPERTY_VISIBLE: {
-				if (ref.getVisible()) {
-					partVisible(ref);
-				} else {
-					partHidden(ref);
-				}
-				break;
-			}
-			case IWorkbenchPartConstants.PROP_INPUT: {
-				partInputChanged(ref);
-				break;
-			}
-			}
-		}
-	};
-
-	public IWorkbenchPartReference getActivePartReference() {
-		return activePartReference;
-	}
-
-	public IEditorReference getActiveEditorReference() {
-		return activeEditorReference;
-	}
-
-	public IEditorPart getActiveEditor() {
-		return activeEditorReference == null ? null : activeEditorReference
-				.getEditor(false);
-	}
-
-	public IWorkbenchPart getActivePart() {
-		return activePartReference == null ? null : activePartReference
-				.getPart(false);
-	}
-
-	public void addPart(WorkbenchPartReference ref) {
-		Assert.isNotNull(ref);
-
-		ref.addInternalPropertyListener(listener);
-
-		// parts.add(ref);
-		firePartAdded(ref);
-
-		// If this part is already open, fire the "part opened" event
-		// immediately
-		if (ref.getPart(false) != null) {
-			partOpened(ref);
-		}
-
-		// If this part is already visible, fire the visibility event
-		// immediately
-		if (ref.getVisible()) {
-			partVisible(ref);
-		}
-	}
-
-	/**
-	 * Sets the active part.
-	 * 
-	 * @param ref
-	 */
-	public void setActivePart(IWorkbenchPartReference ref) {
-		if (ref == activePartReference) {
-			return;
-		}
-
-		IWorkbenchPartReference oldPart = activePartReference;
-
-		// A part can't be activated until it is added
-		// Assert.isTrue(ref == null || parts.contains(ref));
-
-		if (ref != null) {
-			IWorkbenchPart part = ref.getPart(true);
-			Assert.isNotNull(part);
-			if (part instanceof MultiEditor) {
-				IWorkbenchPartSite site = ((MultiEditor) part)
-						.getActiveEditor().getSite();
-				if (site instanceof PartSite) {
-					ref = ((PartSite) site).getPane().getPartReference();
-				}
-			}
-		}
-
-		activePartReference = ref;
-
-		fireActivePartChanged(oldPart, ref);
-	}
-
-	public void setActiveEditor(IEditorReference ref) {
-		if (ref == activeEditorReference) {
-			return;
-		}
-
-		// A part can't be activated until it is added
-		// Assert.isTrue(ref == null || parts.contains(ref));
-
-		if (ref != null) {
-			IWorkbenchPart part = ref.getPart(true);
-			Assert.isNotNull(part);
-			if (part instanceof MultiEditor) {
-				IWorkbenchPartSite site = ((MultiEditor) part)
-						.getActiveEditor().getSite();
-				if (site instanceof PartSite) {
-					ref = (IEditorReference) ((PartSite) site).getPane()
-							.getPartReference();
-				}
-			}
-		}
-
-		activeEditorReference = ref;
-
-		fireActiveEditorChanged(ref);
-	}
-
-	/**
-	 * In order to remove a part, it must first be deactivated.
-	 */
-	public void removePart(WorkbenchPartReference ref) {
-		Assert.isNotNull(ref);
-		// It is an error to remove a part that isn't in the list
-		// Assert.isTrue(parts.contains(ref));
-		// We're not allowed to remove the active part. We must deactivate it
-		// first.
-		Assert.isTrue(ref != activePartReference);
-		// We're not allowed to remove the active editor. We must deactivate it
-		// first.
-		Assert.isTrue(ref != activeEditorReference);
-
-		if (ref.getVisible()) {
-			ref.setVisible(false);
-		}
-
-		// If this part is currently open, fire the "part closed" event before
-		// removal
-		if (ref.getPart(false) != null) {
-			partClosed(ref);
-		}
-
-		ref.removeInternalPropertyListener(listener);
-
-		firePartRemoved(ref);
-	}
-
-	private void partInputChanged(WorkbenchPartReference ref) {
-		firePartInputChanged(ref);
-	}
-
-	private void partHidden(WorkbenchPartReference ref) {
-		// Part should not be null
-		Assert.isNotNull(ref);
-		// This event should only be fired if the part is actually visible
-		Assert.isTrue(!ref.getVisible());
-		// We shouldn't be receiving events from parts until they are in the
-		// list
-		// Assert.isTrue(parts.contains(ref));
-
-		firePartHidden(ref);
-	}
-
-	private void partOpened(WorkbenchPartReference ref) {
-		Assert.isNotNull(ref);
-
-		IWorkbenchPart actualPart = ref.getPart(false);
-		// We're firing the event that says "the part was just created"... so
-		// there better be a part there.
-		Assert.isNotNull(actualPart);
-		// Must be called after the part is inserted into the part list
-		// Assert.isTrue(parts.contains(ref));
-		// The active part must be opened before it is activated, so we should
-		// never get an
-		// open event for a part that is already active. (This either indicates
-		// that a redundant
-		// open event was fired or that a closed part was somehow activated)
-		Assert.isTrue(activePartReference != ref);
-		// The active editor must be opened before it is activated, so we should
-		// never get an
-		// open event for an editor that is already active. (This either
-		// indicates that a redundant
-		// open event was fired or that a closed editor was somehow activated)
-		Assert.isTrue(activeEditorReference != ref);
-
-		SaveablesList modelManager = (SaveablesList) actualPart
-				.getSite().getService(ISaveablesLifecycleListener.class);
-		modelManager.postOpen(actualPart);
-
-		// Fire the "part opened" event
-		firePartOpened(ref);
-	}
-
-	/**
-	 * Called when a concrete part is about to be destroyed. This is called
-	 * BEFORE disposal happens, so the part should still be accessable from the
-	 * part reference.
-	 * 
-	 * @param ref
-	 */
-	private void partClosed(WorkbenchPartReference ref) {
-		Assert.isNotNull(ref);
-
-		IWorkbenchPart actualPart = ref.getPart(false);
-		// Called before the part is disposed, so the part should still be
-		// there.
-		Assert.isNotNull(actualPart);
-		// Must be called before the part is actually removed from the part list
-		// Assert.isTrue(parts.contains(ref));
-		// Not allowed to close the active part. The part must be deactivated
-		// before it may
-		// be closed.
-		Assert.isTrue(activePartReference != ref);
-		// Not allowed to close the active editor. The editor must be
-		// deactivated before it may
-		// be closed.
-		Assert.isTrue(activeEditorReference != ref);
-
-		firePartClosed(ref);
-	}
-
-	private void partVisible(WorkbenchPartReference ref) {
-		// Part should not be null
-		Assert.isNotNull(ref);
-		// This event should only be fired if the part is actually visible
-		Assert.isTrue(ref.getVisible());
-		// We shouldn't be receiving events from parts until they are in the
-		// list
-		// Assert.isTrue(parts.contains(ref));
-		// Part must be open before it can be made visible
-		Assert.isNotNull(ref.getPart(false));
-
-		firePartVisible(ref);
-	}
-
-	/**
-	 * Fire the event indicating that a part reference was just realized. That
-	 * is, the concrete IWorkbenchPart has been attached to the part reference.
-	 * 
-	 * @param part
-	 *            the reference that was create
-	 */
-	protected abstract void firePartOpened(IWorkbenchPartReference part);
-
-	/**
-	 * Fire the event indicating that a part reference was just realized. That
-	 * is, the concrete IWorkbenchPart has been attached to the part reference.
-	 * 
-	 * @param part
-	 *            the reference that was create
-	 */
-	protected abstract void firePartClosed(IWorkbenchPartReference part);
-
-	/**
-	 * Indicates that a new part reference was added to the list.
-	 * 
-	 * @param part
-	 */
-	protected abstract void firePartAdded(IWorkbenchPartReference part);
-
-	/**
-	 * Indicates that a part reference was removed from the list
-	 * 
-	 * @param part
-	 */
-	protected abstract void firePartRemoved(IWorkbenchPartReference part);
-
-	/**
-	 * Indicates that the active editor changed
-	 * 
-	 * @param part
-	 *            active part reference or null if none
-	 */
-	protected abstract void fireActiveEditorChanged(IWorkbenchPartReference ref);
-
-	/**
-	 * Indicates that the active part has changed
-	 * 
-	 * @param part
-	 *            active part reference or null if none
-	 */
-	protected abstract void fireActivePartChanged(
-			IWorkbenchPartReference oldPart, IWorkbenchPartReference newPart);
-
-	/**
-	 * Indicates that the part has been made visible
-	 * 
-	 * @param ref
-	 */
-	protected abstract void firePartVisible(IWorkbenchPartReference ref);
-
-	/**
-	 * Indicates that the part has been hidden
-	 * 
-	 * @param ref
-	 */
-	protected abstract void firePartHidden(IWorkbenchPartReference ref);
-
-	/**
-	 * Indicates that the part input has changed
-	 * 
-	 * @param ref
-	 */
-	protected abstract void firePartInputChanged(IWorkbenchPartReference ref);
-
-	protected abstract void firePartBroughtToTop(IWorkbenchPartReference ref);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList.java
deleted file mode 100644
index 1253069..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.misc.UIStats;
-
-/**
- * Part listener list.
- */
-/*
- * This class should be deleted when IPartListener and IPartListener2 
- * renamed to IPartListener.
- */
-public class PartListenerList extends EventManager {
-
-    /**
-     * PartNotifier constructor comment.
-     */
-    public PartListenerList() {
-        super();
-    }
-
-    /**
-     * Adds an IPartListener to the part service.
-     */
-    public void addPartListener(IPartListener l) {
-        addListenerObject(l);
-    }
-
-    /**
-     * Calls a part listener with associated performance event instrumentation
-     * 
-     * @param runnable
-     * @param listener
-     * @param part
-     * @param description
-     */
-    private void fireEvent(SafeRunnable runnable, IPartListener listener, IWorkbenchPart part, String description) {
-    	String label = null;//for debugging
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PART_LISTENERS)) {
-    		label = description + part.getTitle();
-    		UIStats.start(UIStats.NOTIFY_PART_LISTENERS, label);
-    	}
-    	Platform.run(runnable);
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PART_LISTENERS)) {
-			UIStats.end(UIStats.NOTIFY_PART_LISTENERS, listener, label);
-		}
-	}
-
-    /**
-     * Notifies the listener that a part has been activated.
-     */
-    public void firePartActivated(final IWorkbenchPart part) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener l = (IPartListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partActivated(part);
-                }
-            }, l, part, "activated::"); //$NON-NLS-1$
-        }
-    }
-
-	/**
-     * Notifies the listener that a part has been brought to top.
-     */
-    public void firePartBroughtToTop(final IWorkbenchPart part) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener l = (IPartListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partBroughtToTop(part);
-                }
-            }, l, part, "broughtToTop::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been closed
-     */
-    public void firePartClosed(final IWorkbenchPart part) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener l = (IPartListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partClosed(part);
-                }
-            }, l, part, "closed::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been deactivated.
-     */
-    public void firePartDeactivated(final IWorkbenchPart part) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener l = (IPartListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partDeactivated(part);
-                }
-            }, l, part, "deactivated::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been opened.
-     */
-    public void firePartOpened(final IWorkbenchPart part) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener l = (IPartListener) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partOpened(part);
-                }
-            }, l, part, "opened::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Removes an IPartListener from the part service.
-     */
-    public void removePartListener(IPartListener l) {
-        removeListenerObject(l);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList2.java
deleted file mode 100644
index e790075..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartListenerList2.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.misc.UIStats;
-
-/**
- * Part listener list.
- */
-public class PartListenerList2 extends EventManager {
-
-    /**
-     * PartListenerList2 constructor comment.
-     */
-    public PartListenerList2() {
-        super();
-    }
-
-    /**
-     * Adds an PartListener to the part service.
-     */
-    public void addPartListener(IPartListener2 l) {
-        addListenerObject(l);
-    }
-
-    /**
-     * Calls a part listener with associated performance event instrumentation
-     * 
-     * @param runnable
-     * @param listener
-     * @param ref
-     * @param string
-     */
-    private void fireEvent(SafeRunnable runnable, IPartListener2 listener, IWorkbenchPartReference ref, String string) {
-    	String label = null;//for debugging
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PART_LISTENERS)) {
-    		label = string + ref.getTitle();
-    		UIStats.start(UIStats.NOTIFY_PART_LISTENERS, label);
-    	}
-    	Platform.run(runnable);
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PART_LISTENERS)) {
-			UIStats.end(UIStats.NOTIFY_PART_LISTENERS, listener, label);
-		}
-	}
-
-    /**
-     * Notifies the listener that a part has been activated.
-     */
-    public void firePartActivated(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l = (IPartListener2) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partActivated(ref);
-                }
-            }, l, ref, "activated::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been brought to top.
-     */
-    public void firePartBroughtToTop(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l = (IPartListener2) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partBroughtToTop(ref);
-                }
-            }, l, ref, "broughtToTop::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been closed
-     */
-    public void firePartClosed(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l = (IPartListener2) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partClosed(ref);
-                }
-            }, l, ref, "closed::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been deactivated.
-     */
-    public void firePartDeactivated(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l = (IPartListener2) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partDeactivated(ref);
-                }
-            }, l, ref, "deactivated::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been opened.
-     */
-    public void firePartOpened(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l = (IPartListener2) array[i];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partOpened(ref);
-                }
-            }, l, ref, "opened::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been opened.
-     */
-    public void firePartHidden(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l;
-            if (array[i] instanceof IPartListener2) {
-				l = (IPartListener2) array[i];
-			} else {
-				continue;
-			}
-
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partHidden(ref);
-                }
-            }, l, ref, "hidden::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been opened.
-     */
-    public void firePartVisible(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l;
-            if (array[i] instanceof IPartListener2) {
-				l = (IPartListener2) array[i];
-			} else {
-				continue;
-			}
-
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partVisible(ref);
-                }
-            }, l, ref, "visible::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been opened.
-     */
-    public void firePartInputChanged(final IWorkbenchPartReference ref) {
-        Object[] array = getListeners();
-        for (int i = 0; i < array.length; i++) {
-            final IPartListener2 l;
-            if (array[i] instanceof IPartListener2) {
-				l = (IPartListener2) array[i];
-			} else {
-				continue;
-			}
-
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.partInputChanged(ref);
-                }
-            }, l, ref, "inputChanged::"); //$NON-NLS-1$
-        }
-    }
-    
-    /**
-     * Removes an IPartListener from the part service.
-     */
-    public void removePartListener(IPartListener2 l) {
-        removeListenerObject(l);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java
deleted file mode 100644
index ceea06c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java
+++ /dev/null
@@ -1,660 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FillLayout;
-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.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.part.MultiEditor;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Provides the common behavior for both views
- * and editor panes.
- * 
- * TODO: Delete ViewPane and EditorPane, and make this class non-abstract.
- * 
- * TODO: Stop subclassing LayoutPart. This class cannot be interchanged with other LayoutParts.
- * Pointers that refer to PartPane instances should do so directly rather than referring to
- * LayoutPart and downcasting. The getPresentablePart() method only applies to PartPanes, and
- * should be removed from LayoutPart.
- */
-public abstract class PartPane extends LayoutPart implements IPropertyListener,
-		Listener, IPropertyChangeListener {
-
-    public static final String PROP_ZOOMED = "zoomed"; //$NON-NLS-1$
-
-    private boolean isZoomed = false;
-
-    private MenuManager paneMenuManager;
-    private ListenerList listeners = new ListenerList();
-    private ListenerList partListeners = new ListenerList();
-
-    protected IWorkbenchPartReference partReference;
-
-    protected WorkbenchPage page;
-
-    protected Composite control;
-
-    private boolean inLayout = true;
-    
-    private TraverseListener traverseListener = new TraverseListener() {
-        /* (non-Javadoc)
-         * @see org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse.swt.events.TraverseEvent)
-         */
-        public void keyTraversed(TraverseEvent e) {
-            // Hack: Currently, SWT sets focus whenever we call Control.traverse. This doesn't
-            // cause too much of a problem for ctrl-pgup and ctrl-pgdn, but it is seriously unexpected
-            // for other traversal events. When (and if) it becomes possible to call traverse() without
-            // forcing a focus change, this if statement should be removed and ALL events should be
-            // forwarded to the container.
-            if (e.detail == SWT.TRAVERSE_PAGE_NEXT
-                    || e.detail == SWT.TRAVERSE_PAGE_PREVIOUS) {
-                ILayoutContainer container = getContainer();
-                if (container != null && container instanceof LayoutPart) {
-                    LayoutPart parent = (LayoutPart) container;
-                    Control parentControl = parent.getControl();
-                    if (parentControl != null && !parentControl.isDisposed()) {
-                        e.doit = parentControl.traverse(e.detail);
-                        if (e.doit) {
-							e.detail = SWT.TRAVERSE_NONE;
-						}
-                    }
-                }
-            }
-        }
-
-    };
-
-	private boolean busy;
-
-    public static class Sashes {
-        public Sash left;
-
-        public Sash right;
-
-        public Sash top;
-
-        public Sash bottom;
-    }
-
-    /**
-     * Construct a pane for a part.
-     */
-    public PartPane(IWorkbenchPartReference partReference,
-            WorkbenchPage workbenchPage) {
-        super(partReference.getId());
-        this.partReference = partReference;
-        this.page = workbenchPage;
-    }
-
-    public void addSizeMenuItem(Menu menu, int index) {
-        //Add size menu
-        MenuItem item = new MenuItem(menu, SWT.CASCADE, index);
-        item.setText(WorkbenchMessages.PartPane_size);
-        Menu sizeMenu = new Menu(menu);
-        item.setMenu(sizeMenu);
-        addSizeItems(sizeMenu);
-    }
-
-    /**
-     * 
-     */
-    public void createControl(Composite parent) {
-        if (getControl() != null) {
-			return;
-		}
-
-        partReference.addPropertyListener(this);
-        partReference.addPartPropertyListener(this);
-        // Create view form.	
-        control = new Composite(parent, SWT.NONE);
-        control.setLayout(new FillLayout());
-        // the part should never be visible by default.  It will be made visible 
-        // by activation.  This allows us to have views appear in tabs without 
-        // becoming active by default.
-        control.setVisible(false);
-        control.moveAbove(null);
-        // Create a title bar.
-        createTitleBar();
-
-        
-        // When the pane or any child gains focus, notify the workbench.
-        control.addListener(SWT.Activate, this);
-
-        control.addTraverseListener(traverseListener);
-    }
-
-    /**
-     * Create a title bar for the pane if required.
-     */
-    protected abstract void createTitleBar();
-
-    /**
-     * @private
-     */
-    public void dispose() {
-        super.dispose();
-
-        if ((control != null) && (!control.isDisposed())) {
-            control.removeListener(SWT.Activate, this);
-            control.removeTraverseListener(traverseListener);
-            try {
-            	control.dispose();
-            } catch (RuntimeException ex) {
-            	StatusUtil.handleStatus(ex, StatusManager.LOG);
-            }
-            control = null;
-        }
-        if ((paneMenuManager != null)) {
-            paneMenuManager.dispose();
-            paneMenuManager = null;
-        }
-        
-        partReference.removePropertyListener(this);
-        partReference.removePartPropertyListener(this);
-    }
-
-    /**
-     * User has requested to close the pane.
-     * Take appropriate action depending on type.
-     */
-    abstract public void doHide();
-
-    /**
-     * Zooms in on the part contained in this pane.
-     */
-    protected void doZoom() {
-        if (isDocked()) {
-			page.toggleZoom(partReference);
-		}
-    }
-
-    /**
-     * Gets the presentation bounds.
-     */
-    public Rectangle getBounds() {
-        return getControl().getBounds();
-    }
-
-    /**
-     * Get the control.
-     */
-    public Control getControl() {
-        return control;
-    }
-
-    /**
-     * Answer the part child.
-     */
-    public IWorkbenchPartReference getPartReference() {
-        return partReference;
-    }
-
-    /**
-     * @see Listener
-     */
-    public void handleEvent(Event event) {
-        if (event.type == SWT.Activate) {
-            if (inLayout) {
-                requestActivation();
-            }
-        }
-    }
-
-    /**
-     * Return whether the pane is zoomed or not
-     */
-    public boolean isZoomed() {
-        return isZoomed;
-    }
-
-    /**
-     * Move the control over another one.
-     */
-    public void moveAbove(Control refControl) {
-        if (getControl() != null) {
-			getControl().moveAbove(refControl);
-		}
-    }
-
-    /**
-     * Notify the workbook page that the part pane has
-     * been activated by the user.
-     */
-    public void requestActivation() {
-        IWorkbenchPart part = partReference.getPart(true);
-        // Cannot activate the outer bit of a MultiEditor. In previous versions of the 
-        // workbench, MultiEditors had their own implementation of EditorPane for the purpose
-        // of overriding requestActivation with a NOP... however, keeping the old pattern would
-        // mean it is necessary to eagerly activate an editor's plugin in order to determine
-        // what type of pane to create.
-        if (part instanceof MultiEditor) {
-            return;
-        }
-        
-        this.page.requestActivation(part);
-    }
-
-    /**
-     * Sets the parent for this part.
-     */
-    public void setContainer(ILayoutContainer container) {
-        
-        if (container instanceof LayoutPart) {
-            LayoutPart part = (LayoutPart) container;
-            
-            Control containerControl = part.getControl();
-            
-            if (containerControl != null) {
-                Control control = getControl();
-                Composite newParent = containerControl.getParent();
-                if (control != null && newParent != control.getParent()) {
-                    reparent(newParent);
-                }
-            }
-        }
-        super.setContainer(container);
-    }
-
-    /**
-     * Shows the receiver if <code>visible</code> is true otherwise hide it.
-     */
-    public void setVisible(boolean makeVisible) {
-        // Avoid redundant visibility changes
-        if (makeVisible == getVisible()) {
-            return;
-        }
-        
-    	if (makeVisible) {
-    	    partReference.getPart(true);
-    	}
-    	
-        super.setVisible(makeVisible);
-        
-        ((WorkbenchPartReference) partReference).fireVisibilityChange();
-    }
-    
-    /**
-     * Sets focus to this part.
-     */
-    public void setFocus() {
-        requestActivation();
-
-        IWorkbenchPart part = partReference.getPart(true);
-        if (part != null) {
-            Control control = getControl();
-            if (!SwtUtil.isFocusAncestor(control)) {
-                // First try to call part.setFocus
-                part.setFocus();
-            }
-        }
-    }
-
-    /**
-     * Sets the workbench page of the view. 
-     */
-    public void setWorkbenchPage(WorkbenchPage workbenchPage) {
-        this.page = workbenchPage;
-    }
-
-    /**
-     * Set whether the pane is zoomed or not
-     */
-    public void setZoomed(boolean isZoomed) {
-        if (this.isZoomed == isZoomed) {
-			return; // do nothing if we're already in the right state.
-		}
-
-        super.setZoomed(isZoomed);
-
-        this.isZoomed = isZoomed;
-
-        ((WorkbenchPartReference) partReference).fireZoomChange();        
-    }
-    
-    /**
-     * Informs the pane that it's window shell has
-     * been activated.
-     */
-    /* package */abstract void shellActivated();
-
-    /**
-     * Informs the pane that it's window shell has
-     * been deactivated.
-     */
-    /* package */abstract void shellDeactivated();
-
-    /**
-     * Indicate focus in part.
-     */
-    public abstract void showFocus(boolean inFocus);
-
-    /**
-     * @see IPartDropTarget::targetPartFor
-     */
-    public LayoutPart targetPartFor(LayoutPart dragSource) {
-        return this;
-    }
-
-    /**
-     * Returns the PartStack that contains this PartPane, or null if none.
-     * 
-     * @return
-     */
-    public PartStack getStack() {
-        ILayoutContainer container = getContainer();
-        if (container instanceof PartStack) {
-            return (PartStack) container;
-        }
-
-        return null;
-    }
-
-    /**
-     * Show a title label menu for this pane.
-     */
-    public void showPaneMenu() {
-        PartStack folder = getStack();
-
-        if (folder != null) {
-            folder.showPaneMenu();
-        }
-    }
-
-    /**
-     * Show the context menu for this part.
-     */
-    public void showSystemMenu() {
-        PartStack folder = getStack();
-
-        if (folder != null) {
-            folder.showSystemMenu();
-        }
-    }
-
-    /**
-     * Finds and return the sashes around this part.
-     */
-    protected Sashes findSashes() {
-        Sashes result = new Sashes();
-
-        ILayoutContainer container = getContainer();
-
-        if (container == null) {
-            return result;
-        }
-
-        container.findSashes(this, result);
-        return result;
-    }
-
-    /**
-     * Enable the user to resize this part using
-     * the keyboard to move the specified sash
-     */
-    protected void moveSash(final Sash sash) {
-        moveSash(sash, this);
-    }
-
-    public static void moveSash(final Sash sash,
-            final LayoutPart toGetFocusWhenDone) {
-        final KeyListener listener = new KeyAdapter() {
-            public void keyPressed(KeyEvent e) {
-                if (e.character == SWT.ESC || e.character == '\r') {
-                    if (toGetFocusWhenDone != null) {
-						toGetFocusWhenDone.setFocus();
-					}
-                }
-            }
-        };
-        sash.addFocusListener(new FocusAdapter() {
-            public void focusGained(FocusEvent e) {
-                sash.setBackground(sash.getDisplay().getSystemColor(
-                        SWT.COLOR_LIST_SELECTION));
-                sash.addKeyListener(listener);
-            }
-
-            public void focusLost(FocusEvent e) {
-                sash.setBackground(null);
-                sash.removeKeyListener(listener);
-            }
-        });
-        sash.setFocus();
-
-    }
-
-    /**
-     * Add a menu item to the Size Menu
-     */
-    protected void addSizeItem(Menu sizeMenu, String labelMessage,
-            final Sash sash) {
-        MenuItem item = new MenuItem(sizeMenu, SWT.NONE);
-        item.setText(labelMessage);
-        item.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                moveSash(sash);
-            }
-        });
-        item.setEnabled(!isZoomed() && sash != null);
-    }
-
-    /**
-     * Returns the workbench page of this pane.
-     */
-    public WorkbenchPage getPage() {
-        return page;
-    }
-
-    /**
-     * Add the Left,Right,Up,Botton menu items to the Size menu.
-     */
-    protected void addSizeItems(Menu sizeMenu) {
-        Sashes sashes = findSashes();
-        addSizeItem(sizeMenu,
-                WorkbenchMessages.PartPane_sizeLeft, sashes.left);
-        addSizeItem(sizeMenu,
-                WorkbenchMessages.PartPane_sizeRight, sashes.right); 
-        addSizeItem(sizeMenu,
-                WorkbenchMessages.PartPane_sizeTop, sashes.top); 
-        addSizeItem(sizeMenu, WorkbenchMessages.PartPane_sizeBottom, sashes.bottom);
-    }
-
-    /**
-     * Pin this part.
-     */
-    protected void doDock() {
-        // do nothing
-    }
-
-    /**
-     * Set the busy state of the pane.
-     */
-    public void setBusy(boolean isBusy) {
-        if (isBusy != busy) {
-            busy = isBusy;
-            firePropertyChange(IPresentablePart.PROP_BUSY);
-        }
-    }
-
-    /**
-     * Show a highlight for the receiver if it is 
-     * not currently the part in the front of its
-     * presentation.
-     *
-     */
-    public void showHighlight() {
-        //No nothing by default
-    }
-
-    /**
-     * @return
-     */
-    public abstract Control getToolBar();
-
-    /**
-     * @return
-     */
-    public boolean hasViewMenu() {
-        return false;
-    }
-
-    /**
-     * @param location
-     */
-    public void showViewMenu(Point location) {
-
-    }
-    
-    public boolean isBusy() {
-        return busy;
-    }
-
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they do not need to be translated.
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-
-        IWorkbenchPartReference part = getPartReference();
-
-        if (part != null) {
-            buf.append(part.getPartName());
-            return;
-        }
-    }
-    
-    /**
-     * @return
-     * @since 3.1
-     */
-    public abstract boolean isCloseable();
-    
-    public void setInLayout(boolean inLayout) {
-        this.inLayout = inLayout;
-    }
-    
-    public boolean getInLayout() {
-        return inLayout;
-    }
-        
-    public boolean allowsAutoFocus() {
-        if (!inLayout) {
-            return false;
-        }
-        
-        return super.allowsAutoFocus();
-    }
-
-    /**
-     * Clears all contribution items from the contribution managers (this is done separately
-     * from dispose() since it is done after the part is disposed). This is a bit of a hack.
-     * Really, the contribution managers should be part of the site, not the PartPane. If these
-     * were moved elsewhere, then disposal of the PartPane would be atomic and this method could
-     * be removed.
-     */
-	public void removeContributions() {
-
-	}
-
-    public void addPropertyListener(IPropertyListener listener) {
-        listeners.add(listener);
-    }
-
-    public void removePropertyListener(IPropertyListener listener) {
-        listeners.remove(listener);
-    }
- 
-    public void firePropertyChange(int propertyId) {
-        Object listeners[] = this.listeners.getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyListener) listeners[i]).propertyChanged(this, propertyId);
-        }
-    }
-    
-    public void propertyChanged(Object source, int propId) {
-        firePropertyChange(propId);
-    }
-    
-    public void addPartPropertyListener(IPropertyChangeListener listener) {
-    	partListeners.add(listener);
-    }
-    
-    public void removePartPropertyListener(IPropertyChangeListener listener) {
-    	partListeners.remove(listener);
-    }
-    
-    public void firePartPropertyChange(PropertyChangeEvent event) {
-    	Object[] l = partListeners.getListeners();
-    	for (int i = 0; i < l.length; i++) {
-			((IPropertyChangeListener)l[i]).propertyChange(event);
-		}
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-     */
-    public void propertyChange(PropertyChangeEvent event) {
-    	firePartPropertyChange(event);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#computePreferredSize(boolean, int, int, int)
-     */
-    public int computePreferredSize(boolean width, int availableParallel,
-            int availablePerpendicular, int preferredParallel) {
-
-        return ((WorkbenchPartReference)partReference).computePreferredSize(width,
-                availableParallel, availablePerpendicular, preferredParallel);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#getSizeFlags(boolean)
-     */
-    public int getSizeFlags(boolean horizontal) {
-        return ((WorkbenchPartReference)partReference).getSizeFlags(horizontal);
-    }
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPlaceholder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPlaceholder.java
deleted file mode 100644
index dbf1a1c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPlaceholder.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A PlaceHolder is a non-visible stand-in for a layout part.
- */
-public class PartPlaceholder extends LayoutPart {
-
-    /**
-     * Placeholder ids may contain wildcards.  This is the wildcard string.
-     * 
-     * @since 3.0
-     */
-    public static String WILD_CARD = "*"; //$NON-NLS-1$
-
-    public PartPlaceholder(String id) {
-        super(id);
-    }
-
-    /**
-     * Creates the SWT control
-     */
-    public void createControl(Composite parent) {
-        // do nothing
-    }
-
-    /**
-     * Get the part control.  This method may return null.
-     */
-    public Control getControl() {
-        return null;
-    }
-
-    /**
-     * Returns whether this placeholder has a wildcard.
-     * 
-     * @since 3.0
-     */
-    public boolean hasWildCard() {
-        return getID().indexOf(WILD_CARD) != -1;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPluginAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPluginAction.java
deleted file mode 100644
index b863627..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPluginAction.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * This class adds to the PluginAction support by
- * setting itself up for work within a WorkbenchPart.
- * The main difference is that it is capable of
- * processing local selection changes within a part.
- */
-public class PartPluginAction extends PluginAction {
-    /**
-     * PartPluginAction constructor.
-     */
-    public PartPluginAction(IConfigurationElement actionElement, String id,
-            int style) {
-        super(actionElement, id, style);
-    }
-
-    /**
-     * Registers this action as a listener of the workbench part.
-     */
-    protected void registerSelectionListener(IWorkbenchPart aPart) {
-        ISelectionProvider selectionProvider = aPart.getSite()
-                .getSelectionProvider();
-        if (selectionProvider != null) {
-            selectionProvider.addSelectionChangedListener(this);
-            selectionChanged(selectionProvider.getSelection());
-        }
-    }
-
-    /**
-     * Unregisters this action as a listener of the workbench part.
-     */
-    protected void unregisterSelectionListener(IWorkbenchPart aPart) {
-        ISelectionProvider selectionProvider = aPart.getSite()
-                .getSelectionProvider();
-        if (selectionProvider != null) {
-            selectionProvider.removeSelectionChangedListener(this);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSashContainer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSashContainer.java
deleted file mode 100644
index f8e1218..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSashContainer.java
+++ /dev/null
@@ -1,1428 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Cagatay Kavukcuoglu <cagatayk@acm.org>
- *     - Fix for bug 10025 - Resizing views should not use height ratios
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.internal.dnd.AbstractDropTarget;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-
-/**
- * Abstract container that groups various layout
- * parts (possibly other containers) together as
- * a unit. Manages the placement and size of these
- * layout part based on the location of sashes within
- * the container.
- */
-public abstract class PartSashContainer extends LayoutPart implements
-        ILayoutContainer, IDragOverListener {
-
-    protected Composite parent;
-
-    protected ControlListener resizeListener;
-
-    protected LayoutTree root;
-    
-    private Composite parentWidget;
-
-    private LayoutPart zoomedPart;
-
-    protected WorkbenchPage page;
-
-    boolean active = false;
-    boolean layoutDirty = false;
-
-    /* Array of LayoutPart */
-    protected ArrayList children = new ArrayList();
-    
-    private SashContainerDropTarget dropTarget;
-
-    protected static class RelationshipInfo {
-        protected LayoutPart part;
-
-        protected LayoutPart relative;
-
-        protected int relationship;
-
-        /**
-         * Preferred size for the left child (this would be the size, in pixels of the child
-         * at the time the sash was last moved)
-         */
-        protected int left;
-
-        /**
-         * Preferred size for the right child (this would be the size, in pixels of the child
-         * at the time the sash was last moved)
-         */
-        protected int right;
-
-        /**
-         * Computes the "ratio" for this container. That is, the ratio of the left side over
-         * the sum of left + right. This is only used for serializing PartSashContainers in 
-         * a form that can be read by old versions of Eclipse. This can be removed if this
-         * is no longer required. 
-         * 
-         * @return the pre-Eclipse 3.0 sash ratio
-         */
-        public float getRatio() {
-            int total = left + right;
-            if (total > 0) {
-                return (float) left / (float) total;
-            }
-            
-            return 0.5f;
-        }
-    }
-
-    private class SashContainerDropTarget extends AbstractDropTarget {
-        private int side;
-
-        private int cursor;
-
-        private LayoutPart targetPart;
-
-        private LayoutPart sourcePart;
-
-        public SashContainerDropTarget(LayoutPart sourcePart, int side, int cursor, LayoutPart targetPart) {
-            this.setTarget(sourcePart, side, cursor, targetPart);
-        }
-        
-        public void setTarget(LayoutPart sourcePart, int side, int cursor, LayoutPart targetPart) {
-            this.side = side;
-            this.targetPart = targetPart;
-            this.sourcePart = sourcePart;
-            this.cursor = cursor;
-        }
-
-        public void drop() {
-            if (side != SWT.NONE) {
-                LayoutPart visiblePart = sourcePart;
-
-                if (sourcePart instanceof PartStack) {
-                    visiblePart = getVisiblePart((PartStack) sourcePart);
-                }
-
-                dropObject(getVisibleParts(sourcePart), visiblePart,
-                        targetPart, side);
-            }
-        }
-
-        public Cursor getCursor() {
-            return DragCursors.getCursor(DragCursors
-                    .positionToDragCursor(cursor));
-        }
-
-        public Rectangle getSnapRectangle() {
-            Rectangle targetBounds;
-
-            if (targetPart != null) {
-                targetBounds = DragUtil.getDisplayBounds(targetPart
-                        .getControl());
-            } else {
-                targetBounds = DragUtil.getDisplayBounds(getParent());
-            }
-
-            if (side == SWT.CENTER || side == SWT.NONE) {
-                return targetBounds;
-            }
-
-            int distance = Geometry.getDimension(targetBounds, !Geometry
-                    .isHorizontal(side));
-
-            return Geometry.getExtrudedEdge(targetBounds,
-                    (int) (distance * getDockingRatio(sourcePart, targetPart)),
-                    side);
-        }
-    }
-
-    public PartSashContainer(String id, final WorkbenchPage page, Composite parentWidget) {
-        super(id);
-        this.page = page;
-        this.parentWidget = parentWidget;
-        resizeListener = new ControlAdapter() {
-            public void controlResized(ControlEvent e) {
-                resizeSashes();
-            }
-        };
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#obscuredByZoom(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean childObscuredByZoom(LayoutPart toTest) {
-        LayoutPart zoomPart = getZoomedPart();
-        
-        if (zoomPart != null && toTest != zoomPart) {
-            return true;
-        }
-        return isObscuredByZoom();
-    }
-    
-    /**
-     * Given an object associated with a drag (a PartPane or PartStack), this returns
-     * the actual PartPanes being dragged.
-     * 
-     * @param pane
-     * @return
-     */
-    private PartPane[] getVisibleParts(LayoutPart pane) {
-        if (pane instanceof PartPane) {
-            return new PartPane[] { (PartPane) pane };
-        } else if (pane instanceof PartStack) {
-            PartStack stack = (PartStack) pane;
-
-            LayoutPart[] children = stack.getChildren();
-            ArrayList result = new ArrayList(children.length);
-            for (int idx = 0; idx < children.length; idx++) {
-                LayoutPart next = children[idx];
-                if (next instanceof PartPane) {
-                    result.add(next);
-                }
-            }
-
-            return (PartPane[]) result.toArray(new PartPane[result.size()]);
-        }
-
-        return new PartPane[0];
-    }
-
-    /**
-     * Find the sashs around the specified part.
-     */
-    public void findSashes(LayoutPart pane, PartPane.Sashes sashes) {
-        if (root == null) {
-            return;
-        }
-        LayoutTree part = root.find(pane);
-        if (part == null) {
-			return;
-		}
-        part.findSashes(sashes);
-    }
-
-    /**
-     * Add a part.
-     */
-    public void add(LayoutPart child) {
-        if (child == null) {
-			return;
-		}
-
-        addEnhanced(child, SWT.RIGHT, 0.5f, findBottomRight());
-    }
-
-    /**
-     * Add a new part relative to another. This should be used in place of <code>add</code>. 
-     * It differs as follows:
-     * <ul>
-     * <li>relationships are specified using SWT direction constants</li>
-     * <li>the ratio applies to the newly added child -- not the upper-left child</li>
-     * </ul>
-     * 
-     * @param child new part to add to the layout
-     * @param swtDirectionConstant one of SWT.TOP, SWT.BOTTOM, SWT.LEFT, or SWT.RIGHT
-     * @param ratioForNewPart a value between 0.0 and 1.0 specifying how much space will be allocated for the newly added part
-     * @param relative existing part indicating where the new child should be attached
-     * @since 3.0
-     */
-    void addEnhanced(LayoutPart child, int swtDirectionConstant,
-            float ratioForNewPart, LayoutPart relative) {
-        int relativePosition = PageLayout
-                .swtConstantToLayoutPosition(swtDirectionConstant);
-
-        float ratioForUpperLeftPart;
-
-        if (relativePosition == IPageLayout.RIGHT
-                || relativePosition == IPageLayout.BOTTOM) {
-            ratioForUpperLeftPart = 1.0f - ratioForNewPart;
-        } else {
-            ratioForUpperLeftPart = ratioForNewPart;
-        }
-
-        add(child, relativePosition, ratioForUpperLeftPart, relative);
-    }
-
-    /**
-     * Add a part relative to another. For compatibility only. New code should use
-     * addEnhanced, above.
-     * 
-     * @param child the new part to add
-     * @param relationship one of PageLayout.TOP, PageLayout.BOTTOM, PageLayout.LEFT, or PageLayout.RIGHT
-     * @param ratio a value between 0.0 and 1.0, indicating how much space will be allocated to the UPPER-LEFT pane
-     * @param relative part where the new part will be attached
-     */
-    public void add(LayoutPart child, int relationship, float ratio,
-            LayoutPart relative) {
-        boolean isHorizontal = (relationship == IPageLayout.LEFT || relationship == IPageLayout.RIGHT);
-
-        LayoutTree node = null;
-        if (root != null && relative != null) {
-            node = root.find(relative);
-        }
-
-        Rectangle bounds;
-        if (getParent() == null) {
-            Control control = getPage().getClientComposite();
-            if (control != null && !control.isDisposed()) {
-                bounds = control.getBounds();
-            } else {
-                bounds = new Rectangle(0, 0, 800, 600);
-            }
-            bounds.x = 0;
-            bounds.y = 0;
-        } else {
-            bounds = getBounds();
-        }
-
-        int totalSize = measureTree(bounds, node, isHorizontal);
-
-        int left = (int) (totalSize * ratio);
-        int right = totalSize - left;
-
-        add(child, relationship, left, right, relative);
-    }
-
-    static int measureTree(Rectangle outerBounds, LayoutTree toMeasure,
-            boolean horizontal) {
-        if (toMeasure == null) {
-            return Geometry.getDimension(outerBounds, horizontal);
-        }
-
-        LayoutTreeNode parent = toMeasure.getParent();
-        if (parent == null) {
-            return Geometry.getDimension(outerBounds, horizontal);
-        }
-
-        if (parent.getSash().isHorizontal() == horizontal) {
-            return measureTree(outerBounds, parent, horizontal);
-        }
-
-        boolean isLeft = parent.isLeftChild(toMeasure);
-
-        LayoutTree otherChild = parent.getChild(!isLeft);
-        if (otherChild.isVisible()) {
-            int left = parent.getSash().getLeft();
-            int right = parent.getSash().getRight();
-            int childSize = isLeft ? left : right;
-
-            int bias = parent.getCompressionBias();
-
-            // Normalize bias: 1 = we're fixed, -1 = other child is fixed
-            if (isLeft) {
-                bias = -bias;
-            }
-
-            if (bias == 1) {
-                // If we're fixed, return the fixed size
-                return childSize;
-            } else if (bias == -1) {
-
-                // If the other child is fixed, return the size of the parent minus the fixed size of the
-                // other child
-                return measureTree(outerBounds, parent, horizontal)
-                        - (left + right - childSize);
-            }
-            
-            // Ensure we don't get a 'divide by zero'
-            if ((left+right) == 0)
-            	return 0;
-
-            // Else return the size of the parent, scaled appropriately
-            return measureTree(outerBounds, parent, horizontal) * childSize
-                    / (left + right);
-        }
-
-        return measureTree(outerBounds, parent, horizontal);
-    }
-
-    protected void addChild(RelationshipInfo info) {
-        LayoutPart child = info.part;
-
-        children.add(child);
-
-        if (root == null) {
-            root = new LayoutTree(child);
-        } else {
-            //Add the part to the tree.
-            int vertical = (info.relationship == IPageLayout.LEFT || info.relationship == IPageLayout.RIGHT) ? SWT.VERTICAL
-                    : SWT.HORIZONTAL;
-            boolean left = info.relationship == IPageLayout.LEFT
-                    || info.relationship == IPageLayout.TOP;
-            LayoutPartSash sash = new LayoutPartSash(this, vertical);
-            sash.setSizes(info.left, info.right);
-            if ((parent != null) && !(child instanceof PartPlaceholder)) {
-				sash.createControl(parent);
-			}
-            root = root.insert(child, left, sash, info.relative);
-        }
-
-        childAdded(child);
-
-        if (active) {
-            child.createControl(parent);
-            child.setVisible(true);
-            child.setContainer(this);
-            resizeChild(child);
-        }
-
-    }
-
-    /**
-     * Adds the child using ratio and position attributes
-     * from the specified placeholder without replacing
-     * the placeholder
-     * 
-     * FIXME: I believe there is a bug in computeRelation()
-     * when a part is positioned relative to the editorarea.
-     * We end up with a null relative and 0.0 for a ratio.
-     */
-    void addChildForPlaceholder(LayoutPart child, LayoutPart placeholder) {
-        RelationshipInfo newRelationshipInfo = new RelationshipInfo();
-        newRelationshipInfo.part = child;
-        if (root != null) {
-            newRelationshipInfo.relationship = IPageLayout.RIGHT;
-            newRelationshipInfo.relative = root.findBottomRight();
-            newRelationshipInfo.left = 200;
-            newRelationshipInfo.right = 200;
-        }
-
-        // find the relationship info for the placeholder
-        RelationshipInfo[] relationships = computeRelation();
-        for (int i = 0; i < relationships.length; i++) {
-            RelationshipInfo info = relationships[i];
-            if (info.part == placeholder) {
-                newRelationshipInfo.left = info.left;
-                newRelationshipInfo.right = info.right;
-                newRelationshipInfo.relationship = info.relationship;
-                newRelationshipInfo.relative = info.relative;
-            }
-        }
-
-        addChild(newRelationshipInfo);
-        flushLayout();
-    }
-
-    /**
-     * See ILayoutContainer#allowBorder
-     */
-    public boolean allowsBorder() {
-        return true;
-    }
-
-    /**
-     * Notification that a child layout part has been
-     * added to the container. Subclasses may override
-     * this method to perform any container specific
-     * work.
-     */
-    protected void childAdded(LayoutPart child) {
-    	if (isDeferred()) {
-    		child.deferUpdates(true);
-    	}
-    }
-
-    /**
-     * Notification that a child layout part has been
-     * removed from the container. Subclasses may override
-     * this method to perform any container specific
-     * work.
-     */
-    protected void childRemoved(LayoutPart child) {
-    	if (isDeferred()) {
-    		child.deferUpdates(false);
-    	}
-    }
-
-    /**
-     * Returns an array with all the relation ship between the
-     * parts.
-     */
-    public RelationshipInfo[] computeRelation() {
-        LayoutTree treeRoot = root;
-        ArrayList list = new ArrayList();
-        if (treeRoot == null) {
-			return new RelationshipInfo[0];
-		}
-        RelationshipInfo r = new RelationshipInfo();
-        r.part = treeRoot.computeRelation(list);
-        list.add(0, r);
-        RelationshipInfo[] result = new RelationshipInfo[list.size()];
-        list.toArray(result);
-        return result;
-    }
-
-    public void setActive(boolean isActive) {
-        if (isActive == active) {
-            return;
-        }
-        
-        active = isActive;
-        
-        ArrayList children = (ArrayList) this.children.clone();
-        for (int i = 0, length = children.size(); i < length; i++) {
-            LayoutPart child = (LayoutPart) children.get(i);
-            
-            if (child instanceof PartStack) {
-                PartStack stack = (PartStack) child;
-                stack.setActive(isActive);
-            }
-        }
-        
-        if (isActive) {
-            
-            createControl(parentWidget);
-            
-            parent.addControlListener(resizeListener);
-
-            DragUtil.addDragTarget(parent, this);
-            DragUtil.addDragTarget(parent.getShell(), this);
-            
-            //ArrayList children = (ArrayList) this.children.clone();
-            for (int i = 0, length = children.size(); i < length; i++) {
-                LayoutPart child = (LayoutPart) children.get(i);
-                child.setContainer(this);
-                child.setVisible(zoomedPart == null || child == zoomedPart);
-                if (!(child instanceof PartStack)) {
-                    if (root != null) {
-                        LayoutTree node = root.find(child);
-                        if (node != null) {
-                            node.flushCache();
-                        }
-                    }
-                }
-            }
-            
-            if (root != null) {
-                //root.flushChildren();
-                if (!isZoomed()) {
-                    root.createControl(parent);
-                }
-            }
-            
-            resizeSashes();
-        } else {
-            DragUtil.removeDragTarget(parent, this);
-            DragUtil.removeDragTarget(parent.getShell(), this);
-
-            // remove all Listeners
-            if (resizeListener != null && parent != null) {
-                parent.removeControlListener(resizeListener);
-            }
-
-            if (children != null) {
-                for (int i = 0, length = children.size(); i < length; i++) {
-                    LayoutPart child = (LayoutPart) children.get(i);
-                    child.setContainer(null);
-                    if (child instanceof PartStack) {
-                        child.setVisible(false);
-                    }
-                }
-            }
-            
-            disposeSashes();
-            
-            //dispose();
-        }
-    }
-    
-    /**
-     * @see LayoutPart#getControl
-     */
-    public void createControl(Composite parentWidget) {
-        if (this.parent != null) {
-			return;
-		}
-
-        parent = createParent(parentWidget);
-
-        ArrayList children = (ArrayList) this.children.clone();
-        for (int i = 0, length = children.size(); i < length; i++) {
-            LayoutPart child = (LayoutPart) children.get(i);
-            child.createControl(parent);
-        }
-
-    }
-
-    /**
-     * Subclasses override this method to specify
-     * the composite to use to parent all children
-     * layout parts it contains.
-     */
-    protected abstract Composite createParent(Composite parentWidget);
-
-    /**
-     * @see LayoutPart#dispose
-     */
-    public void dispose() {
-        if (parent == null) {
-			return;
-		}
-
-        if (children != null) {
-            for (int i = 0, length = children.size(); i < length; i++) {
-                LayoutPart child = (LayoutPart) children.get(i);
-
-                // In PartSashContainer dispose really means deactivate, so we
-                // only dispose PartTabFolders.
-                if (child instanceof PartStack) {
-					child.dispose();
-				}
-            }
-        }
-        disposeParent();
-        this.parent = null;
-    }
-
-    /**
-     * Subclasses override this method to dispose
-     * of any swt resources created during createParent.
-     */
-    protected abstract void disposeParent();
-
-    /**
-     * Dispose all sashs used in this perspective.
-     */
-    public void disposeSashes() {
-        if (root != null) {
-            root.disposeSashes();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#setVisible(boolean)
-     */
-    public void setVisible(boolean makeVisible) {
-        
-        if (makeVisible == getVisible()) {
-            return;
-        }
-        
-        if (!SwtUtil.isDisposed(this.parent)) {
-            this.parent.setEnabled(makeVisible);
-        }
-        super.setVisible(makeVisible);
-        
-        ArrayList children = (ArrayList) this.children.clone();
-        for (int i = 0, length = children.size(); i < length; i++) {
-            LayoutPart child = (LayoutPart) children.get(i);
-            child.setVisible(makeVisible && (zoomedPart == null || child == zoomedPart));
-        }
-    }
-    
-    /**
-     * Return the most bottom right part or null if none.
-     */
-    public LayoutPart findBottomRight() {
-        if (root == null) {
-			return null;
-		}
-        return root.findBottomRight();
-    }
-
-    /**
-     * @see LayoutPart#getBounds
-     */
-    public Rectangle getBounds() {
-        return this.parent.getBounds();
-    }
-
-    /**
-     * @see ILayoutContainer#getChildren
-     */
-    public LayoutPart[] getChildren() {
-        LayoutPart[] result = new LayoutPart[children.size()];
-        children.toArray(result);
-        return result;
-    }
-
-    /**
-     * @see LayoutPart#getControl
-     */
-    public Control getControl() {
-        return this.parent;
-    }
-
-    public LayoutTree getLayoutTree() {
-        return root;
-    }
-
-    /**
-     * For themes.
-     * 
-     * @return the current WorkbenchPage.
-     */
-    public WorkbenchPage getPage() {
-        return page;
-    }
-
-    /**
-     * Returns the composite used to parent all the
-     * layout parts contained within.
-     */
-    public Composite getParent() {
-        return parent;
-    }
-
-    protected boolean isChild(LayoutPart part) {
-        return children.indexOf(part) >= 0;
-    }
-
-    /**
-     * Returns whether this container is zoomed.
-     */
-    public boolean isZoomed() {
-        return (zoomedPart != null);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#forceLayout(org.eclipse.ui.internal.LayoutPart)
-     */
-    public void resizeChild(LayoutPart childThatChanged) {
-    	if (root != null) {
-    		LayoutTree tree = root.find(childThatChanged);
-    		
-    		if (tree != null) {
-    			tree.flushCache();
-    		}
-    	}
-    	
-        flushLayout();
-
-    }
-
-    /**
-     * Remove a part.
-     */
-    public void remove(LayoutPart child) {
-        if (child == getZoomedPart()) {
-			childRequestZoomOut();
-		}
-
-        if (!isChild(child)) {
-			return;
-		}
-
-        children.remove(child);
-        if (root != null) {
-            root = root.remove(child);
-        }
-        childRemoved(child);
-
-        if (active) {
-            child.setVisible(false);
-            child.setContainer(null);
-            flushLayout();
-        }
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.LayoutPart#forceLayout()
-	 */
-	public void flushLayout() {
-		layoutDirty = true;
-		super.flushLayout();
-		
-		if (layoutDirty) {
-			resizeSashes();
-		}
-	}
-	
-    /**
-     * Replace one part with another.
-     */
-    public void replace(LayoutPart oldChild, LayoutPart newChild) {
-
-        if (!isChild(oldChild)) {
-            return;
-        }
-        
-        if (oldChild == getZoomedPart()) {
-            if (newChild instanceof PartPlaceholder) {
-                childRequestZoomOut();
-            } else {
-                zoomedPart.setZoomed(false);
-                zoomedPart = newChild;
-                zoomedPart.setZoomed(true);
-            }
-        }
-
-        children.remove(oldChild);
-        children.add(newChild);
-
-        childAdded(newChild);
-
-        if (root != null) {
-            LayoutTree leaf = null;
-
-            leaf = root.find(oldChild);
-            if (leaf != null) {
-                leaf.setPart(newChild);
-            }
-        }
-
-        childRemoved(oldChild);
-        if (active) {
-            oldChild.setVisible(false);
-            oldChild.setContainer(null);
-            newChild.createControl(parent);
-            newChild.setContainer(this);
-            newChild.setVisible(zoomedPart == null || zoomedPart == newChild);
-            resizeChild(newChild);
-        }
-    }
-
-    private void resizeSashes() {
-    	layoutDirty = false;
-        if (!active) {
-			return;
-		}
-        
-        if (isZoomed()) {
-            getZoomedPart().setBounds(parent.getClientArea());
-        } else {
-	        if (root != null) {
-	            root.setBounds(parent.getClientArea());
-	        }
-        }
-    }
-
-    /**
-     * Returns the maximum size that can be utilized by this part if the given width and
-     * height are available. Parts can overload this if they have a quantized set of preferred 
-     * sizes.
-     * 
-     * @param width available horizontal space (pixels)
-     * @return returns a new point where point.x is <= availableWidth and point.y is <= availableHeight
-     */
-    public int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredParallel) {
-        if (isZoomed()) {
-            return getZoomedPart().computePreferredSize(width, availableParallel, availablePerpendicular, preferredParallel);
-        }
-        
-    	if (root != null) {
-    		return root.computePreferredSize(width, availableParallel, availablePerpendicular, preferredParallel);
-    	}
-    	    	
-    	return preferredParallel;
-    }
-	
-    public int getSizeFlags(boolean width) {
-        if (isZoomed()) {
-            return getZoomedPart().getSizeFlags(width);
-        }
-        
-        if (root != null) {
-            return root.getSizeFlags(width);
-        }
-        
-        return 0;
-    }
-    
-    /**
-     * @see LayoutPart#setBounds
-     */
-    public void setBounds(Rectangle r) {
-        this.parent.setBounds(r);
-    }
-    
-    /**
-     * Zoom in on a particular layout part.
-     *
-     * The implementation of zoom is quite simple.  When zoom occurs we create
-     * a zoom root which only contains the zoom part.  We store the old
-     * root in unzoomRoot and then active the zoom root.  When unzoom occurs
-     * we restore the unzoomRoot and dispose the zoom root.
-     *
-     * Note: Method assumes we are active.
-     */
-    private void zoomIn(LayoutPart part) {
-        // Sanity check.
-        if (isZoomed()) {
-			return;
-		}
-
-        // Hide the sashes
-   		root.disposeSashes();
-        
-        // Make all parts invisible except for the zoomed part
-        LayoutPart[] children = getChildren();
-        for (int i = 0; i < children.length; i++) {
-            LayoutPart child = children[i];
-            child.setVisible(child == part);
-        }
-        
-        zoomedPart = part;
-                
-        // Notify the part that it has been zoomed
-    	part.setZoomed(true);
-        
-        // Remember that we need to trigger a layout
-        layoutDirty = true;
-    }
-
-    /**
-     * Returns the currently zoomed part or null if none
-     * 
-     * @return the currently zoomed part or null if none
-     * @since 3.1
-     */
-    public LayoutPart getZoomedPart() {
-        return zoomedPart;
-    }
-    
-    public void childRequestZoomIn(LayoutPart toZoom) {
-        if (!SwtUtil.isDisposed(this.parent)) {
-            this.parent.setRedraw(false);
-        }
-        try {
-	        zoomIn(toZoom);
-	        
-	        requestZoomIn();
-	        
-	        if (layoutDirty) {
-	            resizeSashes();
-	        }
-        } finally {
-            if (!SwtUtil.isDisposed(this.parent)) {
-                this.parent.setRedraw(true);
-            }
-        }
-    }
-    
-    public void childRequestZoomOut() { 
-        if (!SwtUtil.isDisposed(this.parent)) {
-            this.parent.setRedraw(false);
-        }
-        try {
-	        zoomOut();
-	        
-	        requestZoomOut();
-	        
-	        if (layoutDirty) {
-	            resizeSashes();
-	        }
-        } finally {
-            if (!SwtUtil.isDisposed(this.parent)) {
-                this.parent.setRedraw(true);
-            }
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#setZoomed(boolean)
-     */
-    public void setZoomed(boolean isZoomed) {
-        if (!isZoomed) {
-            zoomOut();
-        } else {
-            if (!isZoomed()) {
-                LayoutPart toZoom = pickPartToZoom();
-                
-                if (toZoom != null) {
-                    zoomIn(toZoom);
-                }
-            }
-        }
-        super.setZoomed(isZoomed);
-    }
-    
-    public LayoutPart pickPartToZoom() {
-        return findBottomRight();
-    }
-    
-    /**
-     * Zoom out.
-     *
-     * See zoomIn for implementation details.
-     * 
-     * Note: Method assumes we are active.
-     */
-    private void zoomOut() {    	
-        // Sanity check.
-        if (!isZoomed()) {
-			return;
-		}
-               
-        LayoutPart zoomedPart = this.zoomedPart;
-        this.zoomedPart = null;
-        // Inform the part that it is no longer zoomed
-        zoomedPart.setZoomed(false);
-        
-        // Make all children visible
-        LayoutPart[] children = getChildren();
-        for (int i = 0; i < children.length; i++) {
-            LayoutPart child = children[i];
-            
-            child.setVisible(true);
-        }
-        
-        // Recreate the sashes
-        root.createControl(getParent());
-        
-        // Ensure that the part being un-zoomed will have its size refreshed.
-        LayoutTree node = root.find(zoomedPart);
-        node.flushCache();
-
-        layoutDirty = true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.dnd.IDragOverListener#drag(org.eclipse.swt.widgets.Control, java.lang.Object, org.eclipse.swt.graphics.Point, org.eclipse.swt.graphics.Rectangle)
-     */
-    public IDropTarget drag(Control currentControl, Object draggedObject,
-            Point position, Rectangle dragRectangle) {
-        if (!(draggedObject instanceof LayoutPart)) {
-            return null;
-        }
-
-        final LayoutPart sourcePart = (LayoutPart) draggedObject;
-
-        if (!isStackType(sourcePart) && !isPaneType(sourcePart)) {
-            return null;
-        }
-
-        boolean differentWindows = sourcePart.getWorkbenchWindow() != getWorkbenchWindow();
-        boolean editorDropOK = ((sourcePart instanceof EditorPane) && 
-        							sourcePart.getWorkbenchWindow().getWorkbench() == 
-        							getWorkbenchWindow().getWorkbench());
-        if (differentWindows && !editorDropOK) {
-            return null;
-        }
-
-        Rectangle containerBounds = DragUtil.getDisplayBounds(parent);
-        LayoutPart targetPart = null;
-        ILayoutContainer sourceContainer = isStackType(sourcePart) ? (ILayoutContainer) sourcePart
-                : sourcePart.getContainer();
-
-        // If this container has no visible children
-        if (getVisibleChildrenCount(this) == 0) {
-            return createDropTarget(sourcePart, SWT.CENTER, SWT.CENTER, null);            
-        }
-        
-        if (containerBounds.contains(position)) {
-
-            if (root != null) {
-                targetPart = root.findPart(parent.toControl(position));
-            }
-
-            if (targetPart != null) {
-                final Control targetControl = targetPart.getControl();
-
-                final Rectangle targetBounds = DragUtil
-                        .getDisplayBounds(targetControl);
-
-                int side = Geometry.getClosestSide(targetBounds, position);
-                int distance = Geometry.getDistanceFromEdge(targetBounds, position, side);
-               
-                // is the source coming from a standalone part
-                boolean standalone = (isStackType(sourcePart) 
-                		&& ((PartStack) sourcePart).isStandalone()) 
-                	|| (isPaneType(sourcePart) 
-                			&& ((PartPane) sourcePart).getStack()!=null
-                			&& ((PartPane) sourcePart).getStack().isStandalone());
-                
-                // Only allow dropping onto an existing stack from different windows
-                if (differentWindows && targetPart instanceof EditorStack) {
-                    IDropTarget target = targetPart.getDropTarget(draggedObject, position);
-                   	return target;
-                }
-                
-                // Reserve the 5 pixels around the edge of the part for the drop-on-edge cursor
-                if (distance >= 5 && !standalone) {
-                    // Otherwise, ask the part if it has any special meaning for this drop location
-                    IDropTarget target = targetPart.getDropTarget(draggedObject, position);
-                    if (target != null) {
-                        return target;
-                    }
-                }
-                
-                if (distance > 30 && isStackType(targetPart) && !standalone) {
-                    if (targetPart instanceof ILayoutContainer) {
-                        ILayoutContainer targetContainer = (ILayoutContainer)targetPart;
-                        if (targetContainer.allowsAdd(sourcePart)) {
-                            side = SWT.CENTER;
-                        }
-                    }
-                }
-                
-                // If the part doesn't want to override this drop location then drop on the edge
-                
-                // A "pointless drop" would be one that will put the dragged object back where it started.
-                // Note that it should be perfectly valid to drag an object back to where it came from -- however,
-                // the drop should be ignored.
-
-                boolean pointlessDrop = isZoomed();
-
-                if (sourcePart == targetPart) {
-                    pointlessDrop = true;
-                }
-
-                if ((sourceContainer != null)
-                        && (sourceContainer == targetPart)
-                        && getVisibleChildrenCount(sourceContainer) <= 1) {
-                    pointlessDrop = true;
-                }
-
-                if (side == SWT.CENTER
-                        && sourcePart.getContainer() == targetPart) {
-                    pointlessDrop = true;
-                }
-
-                int cursor = side;
-
-                if (pointlessDrop) {
-                    side = SWT.NONE;
-                    cursor = SWT.CENTER;
-                }
-
-                return createDropTarget(sourcePart, side, cursor, targetPart);
-            }
-        } else {
-        	// We only allow dropping into a stack, not creating one
-        	if (differentWindows)
-        		return null;
-        	
-            int side = Geometry.getClosestSide(containerBounds, position);
-
-            boolean pointlessDrop = isZoomed();
-
-            if ((isStackType(sourcePart) && sourcePart.getContainer() == this)
-                    || (sourcePart.getContainer() != null
-                       && isPaneType(sourcePart) 
-                       && getVisibleChildrenCount(sourcePart.getContainer()) <= 1) 
-                       && ((LayoutPart)sourcePart.getContainer()).getContainer() == this) {
-                if (root == null || getVisibleChildrenCount(this) <= 1) {
-                    pointlessDrop = true;
-                }
-            }
-
-            int cursor = Geometry.getOppositeSide(side);
-
-            if (pointlessDrop) {
-                side = SWT.NONE;
-            }
-
-            return createDropTarget(sourcePart, side, cursor, null);
-        }
-
-        return null;
-    }
-
-    /**
-     * @param sourcePart
-     * @param targetPart
-     * @param side
-     * @param cursor
-     * @return
-     * @since 3.1
-     */
-    private SashContainerDropTarget createDropTarget(final LayoutPart sourcePart, int side, int cursor, LayoutPart targetPart) {
-        if (dropTarget == null) {
-            dropTarget = new SashContainerDropTarget(sourcePart, side, cursor,
-                targetPart);
-        } else {
-            dropTarget.setTarget(sourcePart, side, cursor, targetPart);
-        }
-        return dropTarget;
-    }
-
-    /**
-     * Returns true iff this PartSashContainer allows its parts to be stacked onto the given
-     * container.
-     * 
-     * @param container
-     * @return
-     */
-    public abstract boolean isStackType(LayoutPart toTest);
-
-    public abstract boolean isPaneType(LayoutPart toTest);
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#dropObject(org.eclipse.ui.internal.LayoutPart, org.eclipse.ui.internal.LayoutPart, int)
-     */
-    protected void dropObject(PartPane[] toDrop, LayoutPart visiblePart,
-            LayoutPart targetPart, int side) {
-        getControl().setRedraw(false);
-
-        // Targetpart is null if there isn't a part under the cursor (all the parts are
-        // hidden or the container is empty). In this case, the actual side doesn't really
-        // since we'll be the only visible container and will fill the entire space. However,
-        // we can't leave it as SWT.CENTER since we can't stack if we don't have something
-        // to stack on. In this case, we pick SWT.BOTTOM -- this will insert the new pane
-        // below any currently-hidden parts.
-        if (targetPart == null && side == SWT.CENTER) {
-            side = SWT.BOTTOM;
-        }
-        
-        if (side == SWT.CENTER) {
-            if (isStackType(targetPart)) {
-                PartStack stack = (PartStack) targetPart;
-                for (int idx = 0; idx < toDrop.length; idx++) {
-                    PartPane next = toDrop[idx];
-                    stack(next, stack);
-                }
-            }
-        } else {
-            PartStack newPart = createStack();
-
-            // if the toDrop array has 1 item propogate the stack
-            // appearance
-            if (toDrop.length == 1 && toDrop[0].getStack()!=null) {
-                toDrop[0].getStack().copyAppearanceProperties(newPart);                
-            }
-            
-            for (int idx = 0; idx < toDrop.length; idx++) {
-                PartPane next = toDrop[idx];
-                stack(next, newPart);
-            }
-
-            addEnhanced(newPart, side, getDockingRatio(newPart, targetPart),
-                    targetPart);
-        }
-
-        if (visiblePart != null) {
-            setVisiblePart(visiblePart.getContainer(), visiblePart);
-        }
-
-        getControl().setRedraw(true);
-        
-        if (visiblePart != null) {
-            visiblePart.setFocus();
-        }
-    }
-
-    protected abstract PartStack createStack();
-
-    public void stack(LayoutPart newPart, ILayoutContainer container) {
-        getControl().setRedraw(false);
-
-		// Only deref the part if it is being referenced in -this- perspective
-        Perspective persp = page.getActivePerspective();
-        PerspectiveHelper pres = (persp != null) ? persp.getPresentation() : null;
-    	if (pres != null && newPart instanceof ViewPane) {
-    		ViewPane vp = (ViewPane) newPart;
-    		IViewReference vRef = vp.getViewReference();
-    		LayoutPart fpp = pres.findPart(vRef.getId(), vRef.getSecondaryId());
-    		
-    		if (fpp != null) {
-    	        // Remove the part from old container.
-    	        derefPart(newPart);
-    		}
-    	}
-    	else {
-	        // Remove the part from old container.
-	        derefPart(newPart);
-    	}
-    	
-        // Reparent part and add it to the workbook
-        newPart.reparent(getParent());
-        container.add(newPart);
-        getControl().setRedraw(true);
-
-    }
-
-    /**
-     * @param container
-     * @param visiblePart
-     */
-    protected abstract void setVisiblePart(ILayoutContainer container,
-            LayoutPart visiblePart);
-
-    /**
-     * @param container
-     * @return
-     */
-    protected abstract LayoutPart getVisiblePart(ILayoutContainer container);
-
-    /**
-     * @param sourcePart
-     */
-    protected void derefPart(LayoutPart sourcePart) {
-        ILayoutContainer container = sourcePart.getContainer();
-        if (container != null) {
-            container.remove(sourcePart);
-        }
-
-        if (container instanceof LayoutPart) {
-            if (isStackType((LayoutPart) container)) {
-                PartStack stack = (PartStack) container;
-                if (stack.getChildren().length == 0) {
-                    remove(stack);
-                    stack.dispose();
-                }
-            }
-        }
-    }
-
-    protected int getVisibleChildrenCount(ILayoutContainer container) {
-        // Treat null as an empty container
-        if (container == null) {
-            return 0;
-        }
-
-        LayoutPart[] children = container.getChildren();
-
-        int count = 0;
-        for (int idx = 0; idx < children.length; idx++) {
-            if (!(children[idx] instanceof PartPlaceholder)) {
-                count++;
-            }
-        }
-
-        return count;
-    }
-
-    protected float getDockingRatio(LayoutPart dragged, LayoutPart target) {
-        return 0.5f;
-    }
-
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they should not be translated or equality tests will fail.
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-        if (root == null) {
-            return;
-        }
-
-        if (isZoomed()) {
-            buf.append("zoomed "); //$NON-NLS-1$
-            root.describeLayout(buf);
-        } else {
-            buf.append("layout "); //$NON-NLS-1$
-            root.describeLayout(buf);
-        }
-    }
-
-    /**
-     * Adds a new child to the container relative to some part
-     * 
-     * @param child
-     * @param relationship
-     * @param left preferred pixel size of the left/top child
-     * @param right preferred pixel size of the right/bottom child
-     * @param relative relative part
-     */
-    void add(LayoutPart child, int relationship, int left, int right,
-            LayoutPart relative) {
-
-        if (child == null) {
-			return;
-		}
-        if (relative != null && !isChild(relative)) {
-			return;
-		}
-        if (relationship < IPageLayout.LEFT
-                || relationship > IPageLayout.BOTTOM) {
-			relationship = IPageLayout.LEFT;
-		}
-
-        // store info about relative positions
-        RelationshipInfo info = new RelationshipInfo();
-        info.part = child;
-        info.relationship = relationship;
-        info.left = left;
-        info.right = right;
-        info.relative = relative;
-        addChild(info);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#isZoomed(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean childIsZoomed(LayoutPart toTest) {
-        return toTest == getZoomedPart();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#allowsAutoFocus()
-     */
-    public boolean allowsAutoFocus() {
-        return true;
-    }
-    
-    /* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.LayoutPart#startDeferringEvents()
-	 */
-	protected void startDeferringEvents() {
-		super.startDeferringEvents();
-		
-		LayoutPart[] deferredChildren = (LayoutPart[]) children.toArray(new LayoutPart[children.size()]);
-		for (int i = 0; i < deferredChildren.length; i++) {
-			LayoutPart child = deferredChildren[i];
-			
-			child.deferUpdates(true);
-		}
-	}
-    
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.LayoutPart#handleDeferredEvents()
-	 */
-	protected void handleDeferredEvents() {
-		super.handleDeferredEvents();
-		
-		LayoutPart[] deferredChildren = (LayoutPart[]) children.toArray(new LayoutPart[children.size()]);
-		for (int i = 0; i < deferredChildren.length; i++) {
-			LayoutPart child = deferredChildren[i];
-		
-			child.deferUpdates(false);
-		}			
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#testInvariants()
-     */
-    public void testInvariants() {
-        super.testInvariants();
-
-        // If we have a parent container, ensure that we are displaying the zoomed appearance iff 
-        // our parent is zoomed in on us
-        if (getContainer() != null) {
-            Assert.isTrue((getZoomedPart() != null) == (getContainer().childIsZoomed(this)));
-        }
-        
-        LayoutPart[] childArray = getChildren();
-
-        for (int idx = 0; idx < childArray.length; idx++) {
-            childArray[idx].testInvariants();
-        }
-        
-        // If we're zoomed, ensure that we're actually zoomed into one of our children
-        if (isZoomed()) {
-            Assert.isTrue(children.contains(zoomedPart));
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartService.java
deleted file mode 100644
index 0eecb8f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartService.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.misc.UIListenerLogging;
-
-public class PartService implements IPartService {
-	private static Point ZERO = new Point(0, 0);
-
-	private PartListenerList listeners = new PartListenerList();
-
-	private PartListenerList2 listeners2 = new PartListenerList2();
-	private IWorkbenchPartReference activePart = null;
-
-	private String debugListenersKey;
-	private String debugListeners2Key;
-
-	private ArrayList activeControlJobs = new ArrayList();
-
-	public PartService(String debugListenersKey, String debugListeners2Key) {
-		this.debugListeners2Key = debugListeners2Key;
-		this.debugListenersKey = debugListenersKey;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPartService
-	 */
-	public void addPartListener(IPartListener l) {
-		listeners.addPartListener(l);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPartService
-	 */
-	public void addPartListener(IPartListener2 l) {
-		listeners2.addPartListener(l);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPartService
-	 */
-	public void removePartListener(IPartListener l) {
-		listeners.removePartListener(l);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPartService
-	 */
-	public void removePartListener(IPartListener2 l) {
-		listeners2.removePartListener(l);
-	}
-
-	private abstract class PartJob {
-		IWorkbenchPartReference ref;
-		Control control;
-
-		public PartJob(IWorkbenchPartReference ref, Control c) {
-			this.ref = ref;
-			this.control = c;
-		}
-
-		abstract void fire();
-	}
-
-	private class PartListener implements Listener {
-		public void handleEvent(Event event) {
-			processPartJobs();
-		}
-	}
-
-	private PartListener partListener = new PartListener();
-
-	private class PartActivated extends PartJob {
-		public PartActivated(IWorkbenchPartReference ref, Control c) {
-			super(ref, c);
-		}
-
-		void fire() {
-			firePartActivated(ref);
-		}
-	}
-
-	private class PartVisible extends PartJob {
-		public PartVisible(IWorkbenchPartReference ref, Control c) {
-			super(ref, c);
-		}
-
-		void fire() {
-			firePartVisible(ref);
-		}
-	}
-
-	private class PartTop extends PartJob {
-		public PartTop(IWorkbenchPartReference ref, Control c) {
-			super(ref, c);
-		}
-
-		void fire() {
-			firePartBroughtToTop(ref);
-		}
-	}
-
-	private Control deferControl(IWorkbenchPartReference ref) {
-		IWorkbenchPart part = ref.getPart(false);
-		if (part != null) {
-			Control control = ((PartSite) part.getSite()).getPane()
-					.getControl();
-			if (control != null && !control.isDisposed()
-					&& (!control.isVisible() || control.getSize().equals(ZERO))) {
-				return control;
-			}
-		}
-		return null;
-	}
-
-	private void addControlListener(Control control, PartJob listener) {
-		control.addListener(SWT.Resize, partListener);
-		control.addListener(SWT.Activate, partListener);
-		control.addListener(SWT.Dispose, partListener);
-		activeControlJobs.add(listener);
-	}
-
-	void processPartJobs() {
-		if (activeControlJobs.isEmpty()) {
-			return;
-		}
-
-		ArrayList toRemove = new ArrayList();
-		PartJob[] jobs = (PartJob[]) activeControlJobs
-				.toArray(new PartJob[activeControlJobs.size()]);
-		for (int i = 0; i < jobs.length; i++) {
-			PartJob job = jobs[i];
-			Control control = job.control;
-			if (!control.isDisposed() && !control.getSize().equals(ZERO)
-					&& control.isVisible()) {
-				toRemove.add(job);
-				control.removeListener(SWT.Resize, partListener);
-				control.removeListener(SWT.Activate, partListener);
-				control.removeListener(SWT.Dispose, partListener);
-				job.fire();
-			} else if (control.isDisposed()) {
-				toRemove.add(job);
-			}
-		}
-
-		if (toRemove.isEmpty()) {
-			return;
-		}
-
-		activeControlJobs.removeAll(toRemove);
-	}
-
-	/**
-	 * @param ref
-	 */
-	private void firePartActivated(IWorkbenchPartReference ref) {
-		IWorkbenchPart part = ref.getPart(false);
-		if (part != null) {
-			Control control = deferControl(ref);
-			if (control != null) {
-				addControlListener(control, new PartActivated(ref, control));
-				return;
-			}
-			UIListenerLogging.logPartListenerEvent(debugListenersKey, this,
-					part, UIListenerLogging.PE_ACTIVATED);
-			listeners.firePartActivated(part);
-		}
-
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_ACTIVATED);
-		listeners2.firePartActivated(ref);
-	}
-
-	/**
-	 * @param ref
-	 */
-	public void firePartBroughtToTop(IWorkbenchPartReference ref) {
-		IWorkbenchPart part = ref.getPart(false);
-		if (part != null) {
-			Control control = deferControl(ref);
-			if (control != null) {
-				addControlListener(control, new PartTop(ref, control));
-				return;
-			}
-			UIListenerLogging.logPartListenerEvent(debugListenersKey, this,
-					part, UIListenerLogging.PE_PART_BROUGHT_TO_TOP);
-			listeners.firePartBroughtToTop(part);
-		}
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_BROUGHT_TO_TOP);
-		listeners2.firePartBroughtToTop(ref);
-	}
-
-	/**
-	 * @param ref
-	 */
-	public void firePartClosed(IWorkbenchPartReference ref) {
-		IWorkbenchPart part = ref.getPart(false);
-		if (part != null) {
-			UIListenerLogging.logPartListenerEvent(debugListenersKey, this,
-					part, UIListenerLogging.PE_PART_CLOSED);
-			listeners.firePartClosed(part);
-		}
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_CLOSED);
-		listeners2.firePartClosed(ref);
-	}
-
-	/**
-	 * @param ref
-	 */
-	private void firePartDeactivated(IWorkbenchPartReference ref) {
-		IWorkbenchPart part = ref.getPart(false);
-		if (part != null) {
-			UIListenerLogging.logPartListenerEvent(debugListenersKey, this,
-					part, UIListenerLogging.PE_PART_DEACTIVATED);
-			listeners.firePartDeactivated(part);
-		}
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_DEACTIVATED);
-		listeners2.firePartDeactivated(ref);
-	}
-
-	public void firePartVisible(IWorkbenchPartReference ref) {
-		Control control = deferControl(ref);
-		if (control != null) {
-			addControlListener(control, new PartVisible(ref, control));
-			return;
-		}
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_VISIBLE);
-		listeners2.firePartVisible(ref);
-	}
-
-	public void firePartHidden(IWorkbenchPartReference ref) {
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_HIDDEN);
-		listeners2.firePartHidden(ref);
-	}
-
-	public void firePartInputChanged(IWorkbenchPartReference ref) {
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_INPUT_CHANGED);
-		listeners2.firePartInputChanged(ref);
-	}
-
-	/**
-	 * @param ref
-	 */
-	public void firePartOpened(IWorkbenchPartReference ref) {
-		IWorkbenchPart part = ref.getPart(false);
-		if (part != null) {
-			UIListenerLogging.logPartListenerEvent(debugListenersKey, this,
-					part, UIListenerLogging.PE_PART_OPENED);
-			listeners.firePartOpened(part);
-		}
-		UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref,
-				UIListenerLogging.PE2_PART_OPENED);
-		listeners2.firePartOpened(ref);
-	}
-
-	public IWorkbenchPart getActivePart() {
-		return activePart == null ? null : activePart.getPart(false);
-	}
-
-	public IWorkbenchPartReference getActivePartReference() {
-		return activePart;
-	}
-
-	public void setActivePart(IWorkbenchPartReference ref) {
-		IWorkbenchPartReference oldRef = activePart;
-
-		// Filter out redundant activation events
-		if (oldRef == ref) {
-			return;
-		}
-
-		if (oldRef != null) {
-			firePartDeactivated(oldRef);
-		}
-
-		activePart = ref;
-
-		if (ref != null) {
-			firePartActivated(ref);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSite.java
deleted file mode 100644
index 70c61de..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartSite.java
+++ /dev/null
@@ -1,557 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Dan Rubel (dan_rubel@instantiations.com) - accessor to get context menu ids
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.internal.progress.WorkbenchSiteProgressService;
-import org.eclipse.ui.internal.services.IServiceLocatorCreator;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.services.ServiceLocator;
-import org.eclipse.ui.internal.services.WorkbenchLocationService;
-import org.eclipse.ui.internal.testing.WorkbenchPartTestable;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceScopes;
-import org.eclipse.ui.testing.IWorkbenchPartTestable;
-
-/**
- * <code>PartSite</code> is the general implementation for an
- * <code>IWorkbenchPartSite</code>. A site maintains the context for a part,
- * including the part, its pane, active contributions, selection provider, etc.
- * Together, these components make up the complete behavior for a part as if it
- * was implemented by one person.
- * 
- * The <code>PartSite</code> lifecycle is as follows ..
- * 
- * <ol>
- * <li>a site is constructed </li>
- * <li>a part is constructed and stored in the part </li>
- * <li>the site calls part.init() </li>
- * <li>a pane is constructed and stored in the site </li>
- * <li>the action bars for a part are constructed and stored in the site </li>
- * <li>the pane is added to a presentation </li>
- * <li>the SWT widgets for the pane and part are created </li>
- * <li>the site is activated, causing the actions to become visible </li>
- * </ol>
- */
-public abstract class PartSite implements IWorkbenchPartSite {
-
-	/**
-	 * This is a helper method for the register context menu functionality. It
-	 * is provided so that different implementations of the
-	 * <code>IWorkbenchPartSite</code> interface don't have to worry about how
-	 * context menus should work.
-	 * 
-	 * @param menuId
-	 *            the menu id
-	 * @param menuManager
-	 *            the menu manager
-	 * @param selectionProvider
-	 *            the selection provider
-	 * @param includeEditorInput
-	 *            whether editor inputs should be included in the structured
-	 *            selection when calculating contributions
-	 * @param part
-	 *            the part for this site
-	 * @param menuExtenders
-	 *            the collection of menu extenders for this site
-	 * @see IWorkbenchPartSite#registerContextMenu(MenuManager,
-	 *      ISelectionProvider)
-	 */
-	public static final void registerContextMenu(final String menuId,
-			final MenuManager menuManager,
-			final ISelectionProvider selectionProvider,
-			final boolean includeEditorInput, final IWorkbenchPart part,
-			final Collection menuExtenders) {
-		/*
-		 * Check to see if the same menu manager and selection provider have
-		 * already been used. If they have, then we can just add another menu
-		 * identifier to the existing PopupMenuExtender.
-		 */
-		final Iterator extenderItr = menuExtenders.iterator();
-		boolean foundMatch = false;
-		while (extenderItr.hasNext()) {
-			final PopupMenuExtender existingExtender = (PopupMenuExtender) extenderItr
-					.next();
-			if (existingExtender.matches(menuManager, selectionProvider, part)) {
-				existingExtender.addMenuId(menuId);
-				foundMatch = true;
-				break;
-			}
-		}
-
-		if (!foundMatch) {
-			menuExtenders.add(new PopupMenuExtender(menuId, menuManager,
-					selectionProvider, part, includeEditorInput));
-		}
-	}
-
-	private IWorkbenchPartReference partReference;
-
-	private IWorkbenchPart part;
-
-	private IWorkbenchPage page;
-
-	private String extensionID;
-
-	private String pluginID;
-
-	private String extensionName;
-
-	private ISelectionProvider selectionProvider;
-
-	private SubActionBars actionBars;
-
-	private KeyBindingService keyBindingService;
-
-	protected ArrayList menuExtenders;
-
-	private WorkbenchSiteProgressService progressService;
-
-	protected final ServiceLocator serviceLocator;
-
-	/**
-	 * Build the part site.
-	 * 
-	 * @param ref
-	 *            the part reference
-	 * @param part
-	 *            the part
-	 * @param page
-	 *            the page it belongs to
-	 */
-	public PartSite(IWorkbenchPartReference ref, IWorkbenchPart part,
-			IWorkbenchPage page) {
-		this.partReference = ref;
-		this.part = part;
-		this.page = page;
-		extensionID = "org.eclipse.ui.UnknownID"; //$NON-NLS-1$
-		extensionName = "Unknown Name"; //$NON-NLS-1$
-
-		// Initialize the service locator.
-		final WorkbenchWindow workbenchWindow = (WorkbenchWindow) page.getWorkbenchWindow();
-		IServiceLocatorCreator slc = (IServiceLocatorCreator) workbenchWindow
-				.getService(IServiceLocatorCreator.class);
-		this.serviceLocator = (ServiceLocator) slc.createServiceLocator(
-				workbenchWindow, null, new IDisposable(){
-					public void dispose() {
-						final Control control = getPane().getControl();
-						if (control != null && !control.isDisposed()) {
-							getPane().doHide();
-						}
-					}
-				});
-
-		initializeDefaultServices();
-	}
-
-	/**
-	 * Initialize the local services.
-	 */
-	private void initializeDefaultServices() {
-		serviceLocator.registerService(IWorkbenchLocationService.class,
-				new WorkbenchLocationService(IServiceScopes.PARTSITE_SCOPE,
-						getWorkbenchWindow().getWorkbench(),
-						getWorkbenchWindow(), this, null, null, 2));
-	}
-
-	/**
-	 * Dispose the contributions.
-	 */
-	public void dispose() {
-		if (menuExtenders != null) {
-			HashSet managers = new HashSet(menuExtenders.size());
-			for (int i = 0; i < menuExtenders.size(); i++) {
-				PopupMenuExtender ext = (PopupMenuExtender) menuExtenders.get(i);
-				managers.add(ext.getManager());
-				ext.dispose();
-			}
-			if (managers.size()>0) {
-				for (Iterator iterator = managers.iterator(); iterator
-						.hasNext();) {
-					MenuManager mgr = (MenuManager) iterator.next();
-					mgr.dispose();
-				}
-			}
-			menuExtenders = null;
-		}
-
-		 if (keyBindingService != null) {
-			keyBindingService.dispose();
-			keyBindingService = null;
-		 }
-
-		if (progressService != null) {
-			progressService.dispose();
-			progressService = null;
-		}
-
-		if (serviceLocator != null) {
-			serviceLocator.dispose();
-		}
-		part = null;
-	}
-
-	/**
-	 * Returns the action bars for the part. If this part is a view then it has
-	 * exclusive use of the action bars. If this part is an editor then the
-	 * action bars are shared among this editor and other editors of the same
-	 * type.
-	 */
-	public IActionBars getActionBars() {
-		return actionBars;
-	}
-
-	/**
-	 * Returns the part registry extension ID.
-	 * 
-	 * @return the registry extension ID
-	 */
-	public String getId() {
-		return extensionID;
-	}
-
-	/**
-	 * Returns the page containing this workbench site's part.
-	 * 
-	 * @return the page containing this part
-	 */
-	public IWorkbenchPage getPage() {
-		return page;
-	}
-
-	/**
-	 * Gets the part pane.
-	 */
-	public PartPane getPane() {
-		return ((WorkbenchPartReference) partReference).getPane();
-	}
-
-	/**
-	 * Returns the part.
-	 */
-	public IWorkbenchPart getPart() {
-		return part;
-	}
-
-	/**
-	 * Returns the part reference.
-	 */
-	public IWorkbenchPartReference getPartReference() {
-		return partReference;
-	}
-
-	/**
-	 * Returns the part registry plugin ID. It cannot be <code>null</code>.
-	 * 
-	 * @return the registry plugin ID
-	 */
-	public String getPluginId() {
-		return pluginID;
-	}
-
-	/**
-	 * Returns the registered name for this part.
-	 */
-	public String getRegisteredName() {
-		return extensionName;
-	}
-
-	/**
-	 * Returns the selection provider for a part.
-	 */
-	public ISelectionProvider getSelectionProvider() {
-		return selectionProvider;
-	}
-
-	/**
-	 * Returns the shell containing this part.
-	 * 
-	 * @return the shell containing this part
-	 */
-	public Shell getShell() {
-		PartPane pane = getPane();
-
-		// Compatibility: This method should not be used outside the UI
-		// thread... but since this condition
-		// was not always in the JavaDoc, we still try to return our best guess
-		// about the shell if it is
-		// called from the wrong thread.
-		Display currentDisplay = Display.getCurrent();
-		if (currentDisplay == null
-				|| currentDisplay != getWorkbenchWindow().getWorkbench()
-						.getDisplay()) {
-			// Uncomment this to locate places that try to access the shell from
-			// a background thread
-			// WorkbenchPlugin.log(new Exception("Error:
-			// IWorkbenchSite.getShell() was called outside the UI thread. Fix
-			// this code.")); //$NON-NLS-1$
-
-			return getWorkbenchWindow().getShell();
-		}
-
-		if (pane == null) {
-			return getWorkbenchWindow().getShell();
-		}
-
-		Shell s = pane.getShell();
-
-		if (s == null) {
-			return getWorkbenchWindow().getShell();
-		}
-
-		return s;
-	}
-
-	/**
-	 * Returns the workbench window containing this part.
-	 * 
-	 * @return the workbench window containing this part
-	 */
-	public IWorkbenchWindow getWorkbenchWindow() {
-		return page.getWorkbenchWindow();
-	}
-
-	/**
-	 * Register a popup menu for extension.
-	 */
-	public void registerContextMenu(String menuID, MenuManager menuMgr,
-			ISelectionProvider selProvider) {
-		if (menuExtenders == null) {
-			menuExtenders = new ArrayList(1);
-		}
-
-		registerContextMenu(menuID, menuMgr, selProvider, true, getPart(),
-				menuExtenders);
-	}
-
-	/**
-	 * Register a popup menu with the default id for extension.
-	 */
-	public void registerContextMenu(MenuManager menuMgr,
-			ISelectionProvider selProvider) {
-		registerContextMenu(getId(), menuMgr, selProvider);
-	}
-
-	// getContextMenuIds() added by Dan Rubel (dan_rubel@instantiations.com)
-	/**
-	 * Get the registered popup menu identifiers
-	 */
-	public String[] getContextMenuIds() {
-		if (menuExtenders == null) {
-			return new String[0];
-		}
-		ArrayList menuIds = new ArrayList(menuExtenders.size());
-		for (Iterator iter = menuExtenders.iterator(); iter.hasNext();) {
-			final PopupMenuExtender extender = (PopupMenuExtender) iter.next();
-			menuIds.addAll(extender.getMenuIds());
-		}
-		return (String[]) menuIds.toArray(new String[menuIds.size()]);
-	}
-
-	/**
-	 * Sets the action bars for the part.
-	 */
-	public void setActionBars(SubActionBars bars) {
-		actionBars = bars;
-	}
-
-	/**
-	 * Sets the configuration element for a part.
-	 */
-	public void setConfigurationElement(IConfigurationElement configElement) {
-
-		// Get extension ID.
-		extensionID = configElement.getAttribute("id"); //$NON-NLS-1$
-
-		// Get plugin ID.
-		pluginID = configElement.getNamespace();
-
-		// Get extension name.
-		String name = configElement.getAttribute("name"); //$NON-NLS-1$
-		if (name != null) {
-			extensionName = name;
-		}
-	}
-
-	protected void setPluginId(String pluginId) {
-		this.pluginID = pluginId;
-	}
-
-	/**
-	 * Sets the part registry extension ID.
-	 * 
-	 * @param id
-	 *            the registry extension ID
-	 */
-	protected void setId(String id) {
-		extensionID = id;
-	}
-
-	/**
-	 * Sets the part.
-	 */
-	public void setPart(IWorkbenchPart newPart) {
-		part = newPart;
-	}
-
-	/**
-	 * Sets the registered name for this part.
-	 * 
-	 * @param name
-	 *            the registered name
-	 */
-	protected void setRegisteredName(String name) {
-		extensionName = name;
-	}
-
-	/**
-	 * Set the selection provider for a part.
-	 */
-	public void setSelectionProvider(ISelectionProvider provider) {
-		selectionProvider = provider;
-	}
-
-	/*
-	 * @see IWorkbenchPartSite#getKeyBindingService()
-	 */
-	public IKeyBindingService getKeyBindingService() {
-		if (keyBindingService == null) {
-			keyBindingService = new KeyBindingService(this);
-
-			// TODO why is this here? and it should be using HandlerSubmissions
-			// directly..
-			if (this instanceof EditorSite) {
-				EditorActionBuilder.ExternalContributor contributor = (EditorActionBuilder.ExternalContributor) ((EditorSite) this)
-						.getExtensionActionBarContributor();
-
-				if (contributor != null) {
-					ActionDescriptor[] actionDescriptors = contributor
-							.getExtendedActions();
-
-					if (actionDescriptors != null) {
-						for (int i = 0; i < actionDescriptors.length; i++) {
-							ActionDescriptor actionDescriptor = actionDescriptors[i];
-
-							if (actionDescriptor != null) {
-								IAction action = actionDescriptors[i]
-										.getAction();
-
-								if (action != null
-										&& action.getActionDefinitionId() != null) {
-									keyBindingService.registerAction(action);
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return keyBindingService;
-	}
-
-	protected String getInitialScopeId() {
-		return null;
-	}
-
-	/**
-	 * Get an adapter for this type.
-	 * 
-	 * @param adapter
-	 * @return
-	 */
-	public final Object getAdapter(Class adapter) {
-
-		if (IWorkbenchSiteProgressService.class == adapter) {
-			return getSiteProgressService();
-		}
-		
-		if (IWorkbenchPartTestable.class == adapter) {
-			return new WorkbenchPartTestable(this);
-		}
-
-		return Platform.getAdapterManager().getAdapter(this, adapter);
-	}
-
-	public void activateActionBars(boolean forceVisibility) {
-		if (actionBars != null) {
-			actionBars.activate(forceVisibility);
-		}
-	}
-
-	public void deactivateActionBars(boolean forceHide) {
-		if (actionBars != null) {
-			actionBars.deactivate(forceHide);
-		}
-	}
-
-	/**
-	 * Get a progress service for the receiver.
-	 * 
-	 * @return WorkbenchSiteProgressService
-	 */
-	WorkbenchSiteProgressService getSiteProgressService() {
-		if (progressService == null) {
-			progressService = new WorkbenchSiteProgressService(this);
-		}
-		return progressService;
-	}
-
-	public final Object getService(final Class key) {
-		return serviceLocator.getService(key);
-	}
-
-	public final boolean hasService(final Class key) {
-		return serviceLocator.hasService(key);
-	}
-
-	/**
-	 * Prints out the identifier, the plug-in identifier and the registered
-	 * name. This is for debugging purposes only.
-	 * 
-	 * @since 3.2
-	 */
-	public String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("PartSite(id="); //$NON-NLS-1$
-		buffer.append(getId());
-		buffer.append(",pluginId="); //$NON-NLS-1$
-		buffer.append(getPluginId());
-		buffer.append(",registeredName="); //$NON-NLS-1$
-		buffer.append(getRegisteredName());
-		buffer.append(",hashCode="); //$NON-NLS-1$
-		buffer.append(hashCode());
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java
deleted file mode 100644
index 593a18b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartStack.java
+++ /dev/null
@@ -1,1815 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistable;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.dnd.AbstractDropTarget;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.layout.ITrimManager;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.presentations.PresentablePart;
-import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
-import org.eclipse.ui.internal.presentations.PresentationSerializer;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackDropResult;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * Implements the common behavior for stacks of Panes (ie: EditorStack and ViewStack)
- * This layout container has PartPanes as children and belongs to a PartSashContainer.
- * 
- * @since 3.0
- */
-public abstract class PartStack extends LayoutPart implements ILayoutContainer {
-
-    public static final int PROP_SELECTION = 0x42;
-    
-    private List children = new ArrayList(3);
-    private boolean isActive = true;
-    private ArrayList presentableParts = new ArrayList();
-    
-    private Map properties = new HashMap();
-    
-    protected int appearance = PresentationFactoryUtil.ROLE_VIEW;
-    
-    /**
-     * Stores the last value passed to setSelection. If UI updates are being deferred,
-     * this may be significantly different from the other current pointers. Once UI updates
-     * are re-enabled, the stack will update the presentation selection to match the requested
-     * current pointer.
-     */ 
-    private LayoutPart requestedCurrent;
-    
-    /**
-     * Stores the current part for the stack. Whenever the outside world asks a PartStack
-     * for the current part, this is what gets returned. This pointer is only updated after
-     * the presentation selection has been restored and the stack has finished updating its
-     * internal state. If the stack is still in the process of updating the presentation,
-     * it will still point to the previous part until the presentation is up-to-date.
-     */
-    private LayoutPart current;
-    
-    /**
-     * Stores the presentable part sent to the presentation. Whenever the presentation
-     * asks for the current part, this is what gets returned. This is updated before sending
-     * the part to the presentation, and it is not updated while UI updates are disabled.
-     * When UI updates are enabled, the stack first makes presentationCurrent match 
-     * requestedCurrent. Once the presentation is displaying the correct part, the "current"
-     * pointer on PartStack is updated.
-     */
-    private PresentablePart presentationCurrent;
-
-    private boolean ignoreSelectionChanges = false;
-
-    protected IMemento savedPresentationState = null;
-
-    protected DefaultStackPresentationSite presentationSite = new DefaultStackPresentationSite() {
-
-        public void close(IPresentablePart part) {
-            PartStack.this.close(part);
-        }
-
-        public void close(IPresentablePart[] parts) {
-            PartStack.this.close(parts);
-        }
-
-        public void dragStart(IPresentablePart beingDragged,
-                Point initialLocation, boolean keyboard) {
-            PartStack.this.dragStart(beingDragged, initialLocation, keyboard);
-        }
-
-        public void dragStart(Point initialLocation, boolean keyboard) {
-            PartStack.this.dragStart(null, initialLocation, keyboard);
-        }
-
-        public boolean isPartMoveable(IPresentablePart part) {
-            return PartStack.this.isMoveable(part);
-        }
-
-        public void selectPart(IPresentablePart toSelect) {
-            PartStack.this.presentationSelectionChanged(toSelect);
-        }
-
-        public boolean supportsState(int state) {
-            return PartStack.this.supportsState(state);
-        }
-
-        public void setState(int newState) {
-            PartStack.this.setState(newState);
-        }
-
-        public IPresentablePart getSelectedPart() {
-            return PartStack.this.getSelectedPart();
-        }
-
-        public void addSystemActions(IMenuManager menuManager) {
-            PartStack.this.addSystemActions(menuManager);
-        }
-
-        public boolean isStackMoveable() {
-            return canMoveFolder();
-        }
-        
-        public void flushLayout() {
-        	PartStack.this.flushLayout();
-        }
-
-        public IPresentablePart[] getPartList() {
-            List parts = getPresentableParts();
-            
-            return (IPresentablePart[]) parts.toArray(new IPresentablePart[parts.size()]);
-        }
-
-        public String getProperty(String id) {            
-            return PartStack.this.getProperty(id);
-        }
-    };
-
-    private static final class PartStackDropResult extends AbstractDropTarget {
-        private PartPane pane;
-        
-        // Result of the presentation's dragOver method or null if we are stacking over the
-        // client area of the pane.
-        private StackDropResult dropResult;
-        private PartStack stack;
-        
-        /**
-         * Resets the target of this drop result (allows the same drop result object to be
-         * reused)
-         * 
-         * @param stack
-         * @param pane
-         * @param result result of the presentation's dragOver method, or null if we are
-         * simply stacking anywhere.
-         * @since 3.1
-         */
-        public void setTarget(PartStack stack, PartPane pane, StackDropResult result) {
-            this.pane = pane;
-            this.dropResult = result;
-            this.stack = stack;
-        }
-        
-        public void drop() {
-            // If we're dragging a pane over itself do nothing
-            //if (dropResult.getInsertionPoint() == pane.getPresentablePart()) { return; };
-
-            Object cookie = null;
-            if (dropResult != null) {
-                cookie = dropResult.getCookie();
-            }
-
-            // Handle cross window drops by opening a new editor
-            if (pane instanceof EditorPane) {
-            	if (pane.getWorkbenchWindow() != stack.getWorkbenchWindow()) {
-            		EditorPane editor = (EditorPane) pane;
-            		try {
-						IEditorInput input = editor.getEditorReference().getEditorInput();
-						
-						// Close the old editor and capture the actual closed state incase of a 'cancel'
-						boolean editorClosed = editor.getPage().closeEditor(editor.getEditorReference(), true);
-						
-						// Only open open the new editor if the old one closed
-						if (editorClosed)
-							stack.getPage().openEditor(input, editor.getEditorReference().getId());
-						return;
-					} catch (PartInitException e) {
-						e.printStackTrace();
-					}
-            		
-            	}
-            }
-            
-            if (pane.getContainer() != stack) {
-                // Moving from another stack
-                stack.derefPart(pane);
-                pane.reparent(stack.getParent());
-                stack.add(pane, cookie);
-                stack.setSelection(pane);
-                pane.setFocus();
-            } else if (cookie != null) {
-                // Rearranging within this stack
-                stack.getPresentation().movePart(stack.getPresentablePart(pane), cookie);
-            }
-        }
-
-        public Cursor getCursor() {
-            return DragCursors.getCursor(DragCursors.CENTER);
-        }
-
-        public Rectangle getSnapRectangle() {
-            if (dropResult == null) {
-                return DragUtil.getDisplayBounds(stack.getControl());
-            }
-            return dropResult.getSnapRectangle();
-        }
-    }
-
-    private static final PartStackDropResult dropResult = new PartStackDropResult();
-
-    protected boolean isMinimized;
-
-    private ListenerList listeners = new ListenerList();
-
-    /**
-     * Custom presentation factory to use for this stack, or null to
-     * use the default
-     */
-    private AbstractPresentationFactory factory;
-
-	private boolean smartZoomed = false;
-	private boolean doingUnzoom = false;
-            
-    protected abstract boolean isMoveable(IPresentablePart part);
-
-    protected abstract void addSystemActions(IMenuManager menuManager);
-
-    protected abstract boolean supportsState(int newState);
-
-    protected abstract boolean canMoveFolder();
-
-    protected abstract void derefPart(LayoutPart toDeref);
-
-    protected abstract boolean allowsDrop(PartPane part);
-
-    protected static void appendToGroupIfPossible(IMenuManager m,
-            String groupId, ContributionItem item) {
-        try {
-            m.appendToGroup(groupId, item);
-        } catch (IllegalArgumentException e) {
-            m.add(item);
-        }
-    }
-    
-    /**
-     * Creates a new PartStack, given a constant determining which presentation to use
-     * 
-     * @param appearance one of the PresentationFactoryUtil.ROLE_* constants
-     */
-    public PartStack(int appearance) {
-        this(appearance, null);
-    }
-    
-    /**
-     * Creates a new part stack that uses the given custom presentation factory
-     * @param appearance
-     * @param factory custom factory to use (or null to use the default)
-     */
-    public PartStack(int appearance, AbstractPresentationFactory factory) {
-        super("PartStack"); //$NON-NLS-1$
-
-        this.appearance = appearance;
-        this.factory = factory;
-    }
-
-    /**
-     * Adds a property listener to this stack. The listener will receive a PROP_SELECTION
-     * event whenever the result of getSelection changes
-     * 
-     * @param listener
-     */
-    public void addListener(IPropertyListener listener) {
-        listeners.add(listener);
-    }
-    
-    public void removeListener(IPropertyListener listener) {
-        listeners.remove(listener);
-    }
-    
-    protected final boolean isStandalone() {
-        return (appearance == PresentationFactoryUtil.ROLE_STANDALONE 
-             || appearance == PresentationFactoryUtil.ROLE_STANDALONE_NOTITLE);
-    }
-    
-    /**
-     * Returns the currently selected IPresentablePart, or null if none
-     * 
-     * @return
-     */
-    protected IPresentablePart getSelectedPart() {
-        return presentationCurrent;
-    }
-
-    protected IStackPresentationSite getPresentationSite() {
-        return presentationSite;
-    }
-
-    /**
-     * Tests the integrity of this object. Throws an exception if the object's state
-     * is invalid. For use in test suites.
-     */
-    public void testInvariants() {
-        Control focusControl = Display.getCurrent().getFocusControl();
-
-        boolean currentFound = false;
-
-        LayoutPart[] children = getChildren();
-
-        for (int idx = 0; idx < children.length; idx++) {
-            LayoutPart child = children[idx];
-
-            // No null children allowed
-            Assert.isNotNull(child,
-                    "null children are not allowed in PartStack"); //$NON-NLS-1$
-
-            // This object can only contain placeholders or PartPanes
-            Assert.isTrue(child instanceof PartPlaceholder
-                    || child instanceof PartPane,
-                    "PartStack can only contain PartPlaceholders or PartPanes"); //$NON-NLS-1$
-
-            // Ensure that all the PartPanes have an associated presentable part 
-            IPresentablePart part = getPresentablePart(child);
-            if (child instanceof PartPane) {
-                Assert.isNotNull(part,
-                        "All PartPanes must have a non-null IPresentablePart"); //$NON-NLS-1$
-            }
-
-            // Ensure that the child's backpointer points to this stack
-            ILayoutContainer childContainer = child.getContainer();
-
-            // Disable tests for placeholders -- PartPlaceholder backpointers don't
-            // obey the usual rules -- they sometimes point to a container placeholder
-            // for this stack instead of the real stack.
-            if (!(child instanceof PartPlaceholder)) {
-
-                if (isDisposed()) {
-
-                    // Currently, we allow null backpointers if the widgetry is disposed.
-                    // However, it is never valid for the child to have a parent other than
-                    // this object
-                    if (childContainer != null) {
-                        Assert
-                                .isTrue(childContainer == this,
-                                        "PartStack has a child that thinks it has a different parent"); //$NON-NLS-1$
-                    }
-                } else {
-                    // If the widgetry exists, the child's backpointer must point to us
-                    Assert
-                            .isTrue(childContainer == this,
-                                    "PartStack has a child that thinks it has a different parent"); //$NON-NLS-1$
-
-                    // If this child has focus, then ensure that it is selected and that we have
-                    // the active appearance.
-
-                    if (SwtUtil.isChild(child.getControl(), focusControl)) {
-                        Assert.isTrue(child == current,
-                                "The part with focus is not the selected part"); //$NON-NLS-1$
-                        //  focus check commented out since it fails when focus workaround in LayoutPart.setVisible is not present       			
-                        //        			Assert.isTrue(getActive() == StackPresentation.AS_ACTIVE_FOCUS);
-                    }
-                }
-            }
-
-            // Ensure that "current" points to a valid child
-            if (child == current) {
-                currentFound = true;
-            }
-
-            // Test the child's internal state
-            child.testInvariants();
-        }
-
-        // If we have at least one child, ensure that the "current" pointer points to one of them
-        if (!isDisposed() && getPresentableParts().size() > 0) {
-            Assert.isTrue(currentFound);
-
-            if (!isDisposed()) {
-                StackPresentation presentation = getPresentation();
-
-                // If the presentation controls have focus, ensure that we have the active appearance
-                if (SwtUtil.isChild(presentation.getControl(), focusControl)) {
-                    Assert
-                            .isTrue(
-                                    getActive() == StackPresentation.AS_ACTIVE_FOCUS,
-                                    "The presentation has focus but does not have the active appearance"); //$NON-NLS-1$
-                }
-            }
-        }
-        
-        // Check to that we're displaying the zoomed icon iff we're actually maximized
-        Assert.isTrue((getState() == IStackPresentationSite.STATE_MAXIMIZED) 
-                == (getContainer() != null && getContainer().childIsZoomed(this)));
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#describeLayout(java.lang.StringBuffer)
-     */
-    public void describeLayout(StringBuffer buf) {
-        int activeState = getActive();
-        if (activeState == StackPresentation.AS_ACTIVE_FOCUS) {
-            buf.append("active "); //$NON-NLS-1$
-        } else if (activeState == StackPresentation.AS_ACTIVE_NOFOCUS) {
-            buf.append("active_nofocus "); //$NON-NLS-1$
-        }
-
-        buf.append("("); //$NON-NLS-1$
-
-        LayoutPart[] children = ((ILayoutContainer) this).getChildren();
-
-        int visibleChildren = 0;
-
-        for (int idx = 0; idx < children.length; idx++) {
-
-            LayoutPart next = children[idx];
-            if (!(next instanceof PartPlaceholder)) {
-                if (idx > 0) {
-                    buf.append(", "); //$NON-NLS-1$
-                }
-
-                if (next == requestedCurrent) {
-                    buf.append("*"); //$NON-NLS-1$
-                }
-
-                next.describeLayout(buf);
-
-                visibleChildren++;
-            }
-        }
-
-        buf.append(")"); //$NON-NLS-1$
-    }
-
-    /**
-     * See IVisualContainer#add
-     */
-    public void add(LayoutPart child) {
-        add(child, null);
-    }
-
-    /**
-     * Add a part at a particular position
-     */
-    protected void add(LayoutPart newChild, Object cookie) {
-        children.add(newChild);
-        
-        // Fix for bug 78470:
-        if(!(newChild.getContainer() instanceof ContainerPlaceholder)) {
-			newChild.setContainer(this);
-		}
-        
-        showPart(newChild, cookie);
-    }
-
-    public boolean allowsAdd(LayoutPart toAdd) {
-        return !isStandalone();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.ILayoutContainer#allowsAutoFocus()
-     */
-    public boolean allowsAutoFocus() {
-        if (presentationSite.getState() == IStackPresentationSite.STATE_MINIMIZED) {
-            return false;
-        }
-
-        return super.allowsAutoFocus();
-    }
-
-    /**
-     * @param parts
-     */
-    protected void close(IPresentablePart[] parts) {
-        for (int idx = 0; idx < parts.length; idx++) {
-            IPresentablePart part = parts[idx];
-
-            close(part);
-        }
-    }
-
-    /**
-     * @param part
-     */
-    protected void close(IPresentablePart part) {
-        if (!presentationSite.isCloseable(part)) {
-            return;
-        }
-
-        LayoutPart layoutPart = getPaneFor(part);
-
-        if (layoutPart != null && layoutPart instanceof PartPane) {
-            PartPane viewPane = (PartPane) layoutPart;
-
-            viewPane.doHide();
-        }
-    }
-
-    public boolean isDisposed() {
-        return getPresentation() == null;
-    }
-
-    protected AbstractPresentationFactory getFactory() {
-        
-        if (factory != null) {
-            return factory;
-        }
-        
-        return ((WorkbenchWindow) getPage()
-                .getWorkbenchWindow()).getWindowConfigurer()
-                .getPresentationFactory();
-    }
-    
-    public void createControl(Composite parent) {
-        if (!isDisposed()) {
-            return;
-        }
-
-        AbstractPresentationFactory factory = getFactory();
-
-        PresentationSerializer serializer = new PresentationSerializer(
-                getPresentableParts());
-
-        StackPresentation presentation = PresentationFactoryUtil
-                .createPresentation(factory, appearance, parent,
-                        presentationSite, serializer, savedPresentationState);
-
-        createControl(parent, presentation);
-        getControl().moveBelow(null);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#getDropTarget(java.lang.Object, org.eclipse.swt.graphics.Point)
-     */
-    public IDropTarget getDropTarget(Object draggedObject, Point position) {
-
-        if (!(draggedObject instanceof PartPane)) {
-            return null;
-        }
-
-        final PartPane pane = (PartPane) draggedObject;
-        if (isStandalone() 
-                || !allowsDrop(pane)) {
-            return null;
-        }
-
-        // Don't allow views to be dragged between windows
-        boolean differentWindows = pane.getWorkbenchWindow() != getWorkbenchWindow();
-        boolean editorDropOK = ((pane instanceof EditorPane) && 
-        		pane.getWorkbenchWindow().getWorkbench() == 
-        			getWorkbenchWindow().getWorkbench());
-        if (differentWindows && !editorDropOK) {
-            return null;
-        }
-
-        StackDropResult dropResult = getPresentation().dragOver(
-                getControl(), position);
-        
-        if (dropResult == null) {
-        	return null;
-        }
-        
-        return createDropTarget(pane, dropResult); 
-    }
-    
-    public void setActive(boolean isActive) {
- 
-        this.isActive = isActive;
-        // Add all visible children to the presentation
-        Iterator iter = children.iterator();
-        while (iter.hasNext()) {
-            LayoutPart part = (LayoutPart) iter.next();
-            
-            part.setContainer(isActive ? this : null);
-        }
-        
-        for (Iterator iterator = presentableParts.iterator(); iterator.hasNext();) {
-            PresentablePart next = (PresentablePart) iterator.next();
-            
-            next.enableInputs(isActive);
-            next.enableOutputs(isActive);
-        }
-    }
-    
-    public void createControl(Composite parent, StackPresentation presentation) {
-
-        Assert.isTrue(isDisposed());
-
-        if (presentationSite.getPresentation() != null) {
-			return;
-		}
-
-        presentationSite.setPresentation(presentation);
-
-        // Add all visible children to the presentation
-        // Use a copy of the current set of children to avoid a ConcurrentModificationException
-        // if a part is added to the same stack while iterating over the children (bug 78470)
-        LayoutPart[] childParts = (LayoutPart[]) children.toArray(new LayoutPart[children.size()]);
-        for (int i = 0; i < childParts.length; i++) {
-			LayoutPart part = childParts[i];
-            showPart(part, null);
-        }
-        
-        if (savedPresentationState!=null) {
-			PresentationSerializer serializer = new PresentationSerializer(
-					getPresentableParts());
-			presentation.restoreState(serializer, savedPresentationState);
-		}
-
-        Control ctrl = getPresentation().getControl();
-
-        ctrl.setData(this);
-
-        // We should not have a placeholder selected once we've created the widgetry
-        if (requestedCurrent instanceof PartPlaceholder) {
-            requestedCurrent = null;
-            updateContainerVisibleTab();
-        }
-
-        refreshPresentationSelection();
-    }
-
-    public IDropTarget createDropTarget(PartPane pane, StackDropResult result) {
-        dropResult.setTarget(this, pane, result);
-        return dropResult;
-    }
-    
-    /**
-     * Saves the current state of the presentation to savedPresentationState, if the
-     * presentation exists.
-     */
-    protected void savePresentationState() {
-        if (isDisposed()) {
-            return;
-        }
-
-        {// Save the presentation's state before disposing it
-            XMLMemento memento = XMLMemento
-                    .createWriteRoot(IWorkbenchConstants.TAG_PRESENTATION);
-            memento.putString(IWorkbenchConstants.TAG_ID, getFactory().getId());
-
-            PresentationSerializer serializer = new PresentationSerializer(
-                    getPresentableParts());
-
-            getPresentation().saveState(serializer, memento);
-
-            // Store the memento in savedPresentationState
-            savedPresentationState = memento;
-        }
-    }
-
-    /**
-     * See LayoutPart#dispose
-     */
-    public void dispose() {
-
-        if (isDisposed()) {
-			return;
-		}
-
-        savePresentationState();
-
-        presentationSite.dispose();
-        
-        for (Iterator iter = presentableParts.iterator(); iter.hasNext();) {
-            PresentablePart part = (PresentablePart) iter.next();
-            
-            part.dispose();
-        }
-        presentableParts.clear();
-        
-        presentationCurrent = null;
-        current = null;
-        fireInternalPropertyChange(PROP_SELECTION);
-    }
-
-    public void findSashes(LayoutPart part, PartPane.Sashes sashes) {
-        ILayoutContainer container = getContainer();
-
-        if (container != null) {
-            container.findSashes(this, sashes);
-        }
-    }
-
-    /**
-     * Gets the presentation bounds.
-     */
-    public Rectangle getBounds() {
-        if (getPresentation() == null) {
-            return new Rectangle(0, 0, 0, 0);
-        }
-
-        return getPresentation().getControl().getBounds();
-    }
-
-    /**
-     * See IVisualContainer#getChildren
-     */
-    public LayoutPart[] getChildren() {
-        return (LayoutPart[]) children.toArray(new LayoutPart[children.size()]);
-    }
-
-    public Control getControl() {
-        StackPresentation presentation = getPresentation();
-
-        if (presentation == null) {
-            return null;
-        }
-
-        return presentation.getControl();
-    }
-
-    /**
-     * Answer the number of children.
-     */
-    public int getItemCount() {
-        if (isDisposed()) {
-            return children.size();
-        }
-        return getPresentableParts().size();
-    }
-    
-    /**
-     * Returns the LayoutPart for the given IPresentablePart, or null if the given
-     * IPresentablePart is not in this stack. Returns null if given a null argument.
-     * 
-     * @param part to locate or null
-     * @return
-     */
-    protected LayoutPart getPaneFor(IPresentablePart part) {
-        if (part == null || !(part instanceof PresentablePart)) {
-            return null;
-        }
-
-        return ((PresentablePart)part).getPane();
-    }
-
-    /**
-     * Get the parent control.
-     */
-    public Composite getParent() {
-        return getControl().getParent();
-    }
-
-    /**
-     * Returns a list of IPresentablePart
-     * 
-     * @return
-     */
-    public List getPresentableParts() {
-        return presentableParts;
-    }
-
-    private PresentablePart getPresentablePart(LayoutPart pane) {
-        for (Iterator iter = presentableParts.iterator(); iter.hasNext();) {
-            PresentablePart part = (PresentablePart) iter.next();
-            
-            if (part.getPane() == pane) {
-                return part;
-            }
-        }
-        
-        return null;
-    }
-    
-    protected StackPresentation getPresentation() {
-        return presentationSite.getPresentation();
-    }
-
-    /**
-     * Returns the visible child.
-     * @return the currently visible part, or null if none
-     */
-    public PartPane getSelection() {
-        if (current instanceof PartPane) {
-            return (PartPane) current;
-        }
-        return null;
-    }
-
-    private void presentationSelectionChanged(IPresentablePart newSelection) {
-        // Ignore selection changes that occur as a result of removing a part
-        if (ignoreSelectionChanges) {
-            return;
-        }
-        LayoutPart newPart = getPaneFor(newSelection);
-
-        // This method should only be called on objects that are already in the layout
-        Assert.isNotNull(newPart);
-
-        if (newPart == requestedCurrent) {
-            return;
-        }
-
-        setSelection(newPart);
-
-        if (newPart != null) {
-            newPart.setFocus();
-        }
-
-    }
-
-    /**
-     * See IVisualContainer#remove
-     */
-    public void remove(LayoutPart child) {
-        PresentablePart presentablePart = getPresentablePart(child);
-
-        // Need to remove it from the list of children before notifying the presentation
-        // since it may setVisible(false) on the part, leading to a partHidden notification,
-        // during which findView must not find the view being removed.  See bug 60039. 
-        children.remove(child);
-
-        StackPresentation presentation = getPresentation();
-
-        if (presentablePart != null && presentation != null) {
-            ignoreSelectionChanges = true;
-            presentableParts .remove(presentablePart);
-            presentation.removePart(presentablePart);
-            presentablePart.dispose();
-            ignoreSelectionChanges = false;
-        }
-
-        if (!isDisposed()) {
-            child.setContainer(null);
-        }
-
-        if (child == requestedCurrent) {
-            updateContainerVisibleTab();
-        }
-    }
-
-    /**
-     * Reparent a part. Also reparent visible children...
-     */
-    public void reparent(Composite newParent) {
-
-        Control control = getControl();
-        if ((control == null) || (control.getParent() == newParent) || !control.isReparentable()) {
-			return;
-		}
-
-        super.reparent(newParent);
-
-        Iterator iter = children.iterator();
-        while (iter.hasNext()) {
-            LayoutPart next = (LayoutPart) iter.next();
-            next.reparent(newParent);
-        }
-    }
-
-    /**
-     * See IVisualContainer#replace
-     */
-    public void replace(LayoutPart oldChild, LayoutPart newChild) {
-        int idx = children.indexOf(oldChild);
-        int numPlaceholders = 0;
-        //subtract the number of placeholders still existing in the list 
-        //before this one - they wont have parts.
-        for (int i = 0; i < idx; i++) {
-            if (children.get(i) instanceof PartPlaceholder) {
-				numPlaceholders++;
-			}
-        }
-        Integer cookie = new Integer(idx - numPlaceholders);
-        children.add(idx, newChild);
-
-        showPart(newChild, cookie);
-
-        if (oldChild == requestedCurrent && !(newChild instanceof PartPlaceholder)) {
-            setSelection(newChild);
-        }
-
-        remove(oldChild);
-    }
-    
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.LayoutPart#computePreferredSize(boolean, int, int, int)
-	 */
-	public int computePreferredSize(boolean width, int availableParallel,
-			int availablePerpendicular, int preferredParallel) {
-		
-		return getPresentation().computePreferredSize(width, availableParallel, 
-				availablePerpendicular, preferredParallel);
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#getSizeFlags(boolean)
-     */
-    public int getSizeFlags(boolean horizontal) {
-        StackPresentation presentation = getPresentation();
-        
-        if (presentation != null) {
-            return presentation.getSizeFlags(horizontal);
-        } 
-        
-        return 0;
-    }
-    
-    /**
-     * @see IPersistable
-     */
-    public IStatus restoreState(IMemento memento) {
-        // Read the active tab.
-        String activeTabID = memento
-                .getString(IWorkbenchConstants.TAG_ACTIVE_PAGE_ID);
-
-        // Read the page elements.
-        IMemento[] children = memento.getChildren(IWorkbenchConstants.TAG_PAGE);
-        if (children != null) {
-            // Loop through the page elements.
-            for (int i = 0; i < children.length; i++) {
-                // Get the info details.
-                IMemento childMem = children[i];
-                String partID = childMem
-                        .getString(IWorkbenchConstants.TAG_CONTENT);
-
-                // Create the part.
-                LayoutPart part = new PartPlaceholder(partID);
-                part.setContainer(this);
-                add(part);
-                //1FUN70C: ITPUI:WIN - Shouldn't set Container when not active
-                //part.setContainer(this);
-                if (partID.equals(activeTabID)) {
-                    setSelection(part);
-                    // Mark this as the active part.
-                    //current = part;
-                }
-            }
-        }
-
-        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-        boolean useNewMinMax = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
-        final Integer expanded = memento.getInteger(IWorkbenchConstants.TAG_EXPANDED);
-        if (useNewMinMax && expanded != null) {
-            StartupThreading.runWithoutExceptions(new StartupRunnable() {
-    			public void runWithException() throws Throwable {    		        
-    		        setState((expanded == null || expanded.intValue() != IStackPresentationSite.STATE_MINIMIZED) ? IStackPresentationSite.STATE_RESTORED
-    		                : IStackPresentationSite.STATE_MINIMIZED);
-    			}
-            });
-        }
-        else {
-	        setState((expanded == null || expanded.intValue() != IStackPresentationSite.STATE_MINIMIZED) ? IStackPresentationSite.STATE_RESTORED
-	                : IStackPresentationSite.STATE_MINIMIZED);
-        }
-
-        Integer appearance = memento
-                .getInteger(IWorkbenchConstants.TAG_APPEARANCE);
-        if (appearance != null) {
-            this.appearance = appearance.intValue();
-        }
-
-        // Determine if the presentation has saved any info here
-        savedPresentationState = null;
-        IMemento[] presentationMementos = memento
-                .getChildren(IWorkbenchConstants.TAG_PRESENTATION);
-
-        for (int idx = 0; idx < presentationMementos.length; idx++) {
-            IMemento child = presentationMementos[idx];
-
-            String id = child.getString(IWorkbenchConstants.TAG_ID);
-
-            if (Util.equals(id, getFactory().getId())) {
-                savedPresentationState = child;
-                break;
-            }
-        }
-
-        IMemento propertiesState = memento.getChild(IWorkbenchConstants.TAG_PROPERTIES);
-        if (propertiesState != null) {
-            IMemento[] props = propertiesState.getChildren(IWorkbenchConstants.TAG_PROPERTY);
-            for (int i = 0; i < props.length; i++) {
-                properties.put(props[i].getID(), props[i].getTextData());
-            }
-        }
-                
-        
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#setVisible(boolean)
-     */
-    public void setVisible(boolean makeVisible) {
-        Control ctrl = getControl();
-        
-        boolean useShortcut = makeVisible || !isActive;
-        
-        if (!SwtUtil.isDisposed(ctrl) && useShortcut) {
-            if (makeVisible == ctrl.getVisible()) {
-				return;
-			}
-        }        
-        
-        if (makeVisible) {
-            for (Iterator iterator = presentableParts.iterator(); iterator.hasNext();) {
-                PresentablePart next = (PresentablePart) iterator.next();
-                
-                next.enableInputs(isActive);
-                next.enableOutputs(isActive);
-            }
-        }
-        
-        super.setVisible(makeVisible);
-        
-        StackPresentation presentation = getPresentation();
-        
-        if (presentation != null) {
-            presentation.setVisible(makeVisible);
-        }
-        
-        if (!makeVisible) {
-            for (Iterator iterator = presentableParts.iterator(); iterator.hasNext();) {
-                PresentablePart next = (PresentablePart) iterator.next();
-                
-                next.enableInputs(false);
-            }
-        }
-    }
-    
-    /**
-     * @see IPersistable
-     */
-    public IStatus saveState(IMemento memento) {
-
-        // Save the active tab.
-        if (requestedCurrent != null) {
-			memento.putString(IWorkbenchConstants.TAG_ACTIVE_PAGE_ID, requestedCurrent
-                    .getCompoundId());
-		}
-
-        // Write out the presentable parts (in order)
-        Set cachedIds = new HashSet();
-        Iterator ppIter = getPresentableParts().iterator();
-        while (ppIter.hasNext()) {
-            PresentablePart presPart = (PresentablePart) ppIter.next();
-
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_PAGE);
-            PartPane part = presPart.getPane();
-            String tabText = part.getPartReference().getPartName();
-
-            childMem.putString(IWorkbenchConstants.TAG_LABEL, tabText);
-            childMem.putString(IWorkbenchConstants.TAG_CONTENT, presPart.getPane().getPlaceHolderId());
-            
-            // Cache the id so we don't write it out later
-            cachedIds.add(presPart.getPane().getPlaceHolderId());
-        }
-
-        Iterator iter = children.iterator();
-        while (iter.hasNext()) {
-            LayoutPart next = (LayoutPart) iter.next();
-
-            PartPane part = null;
-            if (next instanceof PartPane) {
-            	// Have we already written it out?
-            	if (cachedIds.contains(((PartPane)next).getPlaceHolderId()))
-            		continue;
-            	
-                part = (PartPane)next;
-            }
-
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_PAGE);
-
-            String tabText = "LabelNotFound"; //$NON-NLS-1$ 
-            if (part != null) {
-                tabText = part.getPartReference().getPartName();
-            }
-            childMem.putString(IWorkbenchConstants.TAG_LABEL, tabText);
-            childMem.putString(IWorkbenchConstants.TAG_CONTENT, next
-                    .getCompoundId());
-        }
-
-        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-        boolean useNewMinMax = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
-        if (useNewMinMax) {
-            memento.putInteger(IWorkbenchConstants.TAG_EXPANDED, presentationSite.getState());
-        }
-        else {
-            memento
-            .putInteger(
-                    IWorkbenchConstants.TAG_EXPANDED,
-                    (presentationSite.getState() == IStackPresentationSite.STATE_MINIMIZED) ? IStackPresentationSite.STATE_MINIMIZED
-                            : IStackPresentationSite.STATE_RESTORED);
-        }
-
-        memento.putInteger(IWorkbenchConstants.TAG_APPEARANCE, appearance);
-
-        savePresentationState();
-
-        if (savedPresentationState != null) {
-            IMemento presentationState = memento
-                    .createChild(IWorkbenchConstants.TAG_PRESENTATION);
-            presentationState.putMemento(savedPresentationState);
-        }
-        
-        if (!properties.isEmpty()) {
-            IMemento propertiesState = memento.createChild(IWorkbenchConstants.TAG_PROPERTIES);
-            Set ids = properties.keySet();
-            for (Iterator iterator = ids.iterator(); iterator.hasNext();) {   
-                String id = (String)iterator.next();
-                
-                if (properties.get(id) == null) continue;
-                
-                IMemento prop = propertiesState.createChild(IWorkbenchConstants.TAG_PROPERTY, id);
-                prop.putTextData((String)properties.get(id));
-            }
-        }
-        
-
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-    protected WorkbenchPage getPage() {
-        WorkbenchWindow window = (WorkbenchWindow) getWorkbenchWindow();
-
-        if (window == null) {
-            return null;
-        }
-
-        return (WorkbenchPage) window.getActivePage();
-    }
-
-    /**
-     * Set the active appearence on the tab folder.
-     * 
-     * @param active
-     */
-    public void setActive(int activeState) {
-
-        if (activeState == StackPresentation.AS_ACTIVE_FOCUS && isMinimized) {
-            setMinimized(false);
-        }
-
-        presentationSite.setActive(activeState);
-    }
-
-    public int getActive() {
-        return presentationSite.getActive();
-    }
-
-    /**
-     * Sets the presentation bounds.
-     */
-    public void setBounds(Rectangle r) {
-    	
-        if (getPresentation() != null) {
-            getPresentation().setBounds(r);
-        }
-    }
-
-    public void setSelection(LayoutPart part) {
-        if (part == requestedCurrent) {
-            return;
-        }
-
-        requestedCurrent = part;
-        
-        refreshPresentationSelection();
-    }
-
-    /**
-     * Subclasses should override this method to update the enablement state of their
-     * actions
-     */
-    protected abstract void updateActions(PresentablePart current);
-
-    /* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.LayoutPart#handleDeferredEvents()
-	 */
-	protected void handleDeferredEvents() {
-		super.handleDeferredEvents();
-		
-		refreshPresentationSelection();
-	}
-    
-    private void refreshPresentationSelection() {        
-        // If deferring UI updates, exit.
-    	if (isDeferred()) {
-    		return;
-    	}
-        
-        // If the presentation is already displaying the desired part, then there's nothing
-        // to do.
-        if (current == requestedCurrent) {
-            return;
-        }
-
-        StackPresentation presentation = getPresentation();
-        if (presentation != null) {
-        
-            presentationCurrent = getPresentablePart(requestedCurrent);
-            
-            if (!isDisposed()) {
-                updateActions(presentationCurrent);
-            }
-            
-            if (presentationCurrent != null && presentation != null) {
-                requestedCurrent.createControl(getParent());
-                if (requestedCurrent.getControl().getParent() != getControl()
-                        .getParent()) {
-                    requestedCurrent.reparent(getControl().getParent());
-                }
-
-               
-                presentation.selectPart(presentationCurrent);
-                
-             }
-        
-            // Update the return value of getVisiblePart
-            current = requestedCurrent;
-            fireInternalPropertyChange(PROP_SELECTION);
-        }
-    }
-
-    public int getState() {
-    	return presentationSite.getState();
-    }
-
-	/**
-	 * Sets the minimized state for this stack. The part may call this method to
-	 * minimize or restore itself. The minimized state only affects the view
-	 * when unzoomed in the 3.0 presentation (in 3.3 it's handled by the
-	 * ViewStack directly and works as expected).
-	 */
-	public void setMinimized(boolean minimized) {
-		if (minimized != isMinimized) {
-			isMinimized = minimized;
-
-			refreshPresentationState();
-		}
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#obscuredByZoom(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean childObscuredByZoom(LayoutPart toTest) {
-        return isObscuredByZoom();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#requestZoom(org.eclipse.ui.internal.LayoutPart)
-     */
-    public void childRequestZoomIn(LayoutPart toZoom) {
-        super.childRequestZoomIn(toZoom);
-        
-        requestZoomIn();
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#requestZoomOut()
-     */
-    public void childRequestZoomOut() {
-        super.childRequestZoomOut();
-        
-        requestZoomOut();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#isZoomed(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean childIsZoomed(LayoutPart toTest) {
-        return isZoomed();
-    }
-    
-    /**
-     * This is a hack that allows us to preserve the old
-     * min/max behavior for the stack containing the IntroPart.
-     * This is required to have the initial Intro (Welcome)
-     * pane to show correctly but will induce strange
-     * effects should a user re-locate the part to
-     * stacks other that its initial one...
-     *  
-     * @return true if the stack contains the intro
-     * as a ViewPane (not if it's only a placeholder)
-     */
-    private boolean isIntroInStack() {
-    	LayoutPart[] kids = getChildren();
-    	for (int i = 0; i < kids.length; i++) {
-    		if (kids[i] instanceof ViewPane) {
-    			ViewPane vp = (ViewPane) kids[i];
-    			if (vp.getID().equals(IIntroConstants.INTRO_VIEW_ID))
-    				return true;
-    		}
-		}
-    	return false;
-    }
-
-    private void smartZoom() {
-		WorkbenchWindow wbw = (WorkbenchWindow) getPage().getWorkbenchWindow();
-		if (wbw == null || wbw.getShell() == null)
-			return;
-
-		Perspective perspective = getPage().getActivePerspective();
-		FastViewManager fvm = perspective.getFastViewManager();
-
-		fvm.deferUpdates(true);
-
-		// Cache the layout bounds
-		perspective.getPresentation().updateBoundsMap();
-		
-		LayoutPart[] children = perspective.getPresentation().getLayout().getChildren();
-		for (int i = 0; i < children.length; i++) {
-			if (children[i] != this) {
-				if (children[i] instanceof ViewStack) {
-					((ViewStack) children[i]).setMinimized(true);
-					ViewStackTrimToolBar vstb = fvm
-							.getViewStackTrimToolbar(children[i]
-									.getID());
-					vstb.setRestoreOnUnzoom(true);
-				}
-				else if (children[i] instanceof EditorSashContainer && !(this instanceof EditorStack)) {
-					perspective.setEditorAreaState(IStackPresentationSite.STATE_MINIMIZED);
-					perspective.setEditorAreaRestoreOnUnzoom(true);
-				}
-			}
-		}
-
-		// If the editor area has changed state tell the perspective
-		if (this instanceof EditorStack)
-			perspective.setEditorAreaState(IStackPresentationSite.STATE_MAXIMIZED);
-
-		// Clear the boundsMap
-		perspective.getPresentation().resetBoundsMap();
-		
-		// We're done batching...
-		fvm.deferUpdates(false);
-		
-		perspective.getPresentation().setMaximizedStack(this);
-		smartZoomed = true;
-    }
-
-    protected void smartUnzoom() {
-    	// Prevent recursion through 'setMinimized'
-    	if (doingUnzoom)
-    		return;
-    	doingUnzoom = true;
-    	
-		WorkbenchWindow wbw = (WorkbenchWindow) getPage().getWorkbenchWindow();
-		if (wbw == null || wbw.getShell() == null)
-			return;
-
-		ITrimManager tbm = wbw.getTrimManager();
-		Perspective perspective = getPage().getActivePerspective();
-		FastViewManager fvm = perspective.getFastViewManager();
-
-		ILayoutContainer root = getContainer();
-
-		// We go up one more level when maximizing an editor stack
-		// so that we 'zoom' the editor area
-		boolean restoringEditorArea = false;
-		if (root instanceof EditorSashContainer) {
-			root = ((EditorSashContainer) root).getContainer();
-			restoringEditorArea = true;
-		}
-
-		// This is a compound operation
-		fvm.deferUpdates(true);
-		
-		LayoutPart[] children = root.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			if (children[i] != this) {
-				IWindowTrim trim = tbm.getTrim(children[i].getID());
-				if (trim == null)
-					continue;
-
-				if (trim instanceof ViewStackTrimToolBar) {
-					ViewStackTrimToolBar vstb = (ViewStackTrimToolBar) trim;
-					if (vstb.restoreOnUnzoom()
-							&& children[i] instanceof ContainerPlaceholder) {
-						// In the current presentation its a
-						// container placeholder
-						ViewStack realStack = (ViewStack) ((ContainerPlaceholder) children[i])
-								.getRealContainer();
-						realStack.setMinimized(false);
-
-						vstb.setRestoreOnUnzoom(false);
-					}
-				} else if (trim instanceof EditorAreaTrimToolBar) {
-					if (perspective.getEditorAreaRestoreOnUnzoom())
-					perspective.setEditorAreaState(IStackPresentationSite.STATE_RESTORED);
-				}
-			}
-		}
-
-		// If the editor area has changed state tell the perspective
-		if (restoringEditorArea)
-			perspective.setEditorAreaState(IStackPresentationSite.STATE_RESTORED);
-
-		perspective.getPresentation().setMaximizedStack(null);
-		
-		fvm.deferUpdates(false);
-		smartZoomed = false;
-		
-		doingUnzoom = false;
-    }
-    
-	protected void setState(final int newState) {
-		final int oldState = presentationSite.getState();
-		if (!supportsState(newState) || newState == oldState) {
-			return;
-		}
-
-		final WorkbenchWindow wbw = (WorkbenchWindow) getPage().getWorkbenchWindow();
-		if (wbw == null || wbw.getShell() == null || wbw.getActiveWorkbenchPage() == null)
-			return;
-
-		WorkbenchPage page = wbw.getActiveWorkbenchPage();
-		if (page == null)
-			return;
-		
-		boolean useNewMinMax = Perspective.useNewMinMax(page.getActivePerspective());
-
-		// we have to fiddle with the zoom behavior to satisfy Intro req's
-		// by usning the old zoom behavior for its stack
-		if (newState == IStackPresentationSite.STATE_MAXIMIZED)
-			useNewMinMax = useNewMinMax && !isIntroInStack();
-		else if (newState == IStackPresentationSite.STATE_RESTORED) {
-			PartStack maxStack = page.getActivePerspective().getPresentation().getMaximizedStack();
-			useNewMinMax = useNewMinMax && maxStack == this;
-		}
-
-		if (useNewMinMax) {
-        	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-				public void runWithException() throws Throwable {
-					wbw.getPageComposite().setRedraw(false);
-					try {
-						if (newState == IStackPresentationSite.STATE_MAXIMIZED) {
-							smartZoom();
-						} else if (oldState == IStackPresentationSite.STATE_MAXIMIZED) {
-							smartUnzoom();
-						}
-						
-						if (newState == IStackPresentationSite.STATE_MINIMIZED) {
-							setMinimized(true);
-						}
-					} finally {
-						wbw.getPageComposite().setRedraw(true);
-
-						// Force a redraw (fixes Mac refresh)
-						wbw.getShell().redraw();
-					}
-
-					setPresentationState(newState);
-				}
-			});
-		} else {
-			boolean minimized = (newState == IStackPresentationSite.STATE_MINIMIZED);
-			setMinimized(minimized);
-
-			if (newState == IStackPresentationSite.STATE_MAXIMIZED) {
-				requestZoomIn();
-			} else if (oldState == IStackPresentationSite.STATE_MAXIMIZED) {
-				requestZoomOut();
-				
-				if (newState == IStackPresentationSite.STATE_MINIMIZED)
-					setMinimized(true);
-			}
-		}
-	}
-    
-
-    /**
-     * Called by the workbench page to notify this part that it has been zoomed or unzoomed.
-     * The PartStack should not call this method itself -- it must request zoom changes by 
-     * talking to the WorkbenchPage.
-     */
-    public void setZoomed(boolean isZoomed) {
-        
-        super.setZoomed(isZoomed);
-        
-        LayoutPart[] children = getChildren();
-        
-        for (int i = 0; i < children.length; i++) {
-            LayoutPart next = children[i];
-            
-            next.setZoomed(isZoomed);
-        }
-        
-        refreshPresentationState();
-    }
-    
-    public boolean isZoomed() {
-        ILayoutContainer container = getContainer();
-        
-        if (container != null) {
-            return container.childIsZoomed(this);
-        }
-        
-        return false;
-    }
-    
-    protected void refreshPresentationState() {
-        if (isZoomed() || smartZoomed) {
-            presentationSite.setPresentationState(IStackPresentationSite.STATE_MAXIMIZED);
-        } else {
-            
-            boolean wasMinimized = (presentationSite.getState() == IStackPresentationSite.STATE_MINIMIZED);
-            
-            if (isMinimized) {
-                presentationSite.setPresentationState(IStackPresentationSite.STATE_MINIMIZED);
-            } else {
-                presentationSite.setPresentationState(IStackPresentationSite.STATE_RESTORED);
-            }
-            
-            if (isMinimized != wasMinimized) {
-                flushLayout();
-                
-                if (isMinimized) {
-	                WorkbenchPage page = getPage();
-	
-	                if (page != null) {
-	                    page.refreshActiveView();
-	                }
-                }
-            }
-        }
-    }
-
-    /**
-     * Makes the given part visible in the presentation.
-     * @param part the part to add to the stack
-     * @param cookie other information
-     */
-    private void showPart(LayoutPart part, Object cookie) {
-
-        if (isDisposed()) {
-            return;
-        }
-        
-        if ((part instanceof PartPlaceholder)) {
-        	part.setContainer(this);
-        	return;
-        }
-
-        if (!(part instanceof PartPane)) {
-			WorkbenchPlugin.log(NLS.bind(
-					WorkbenchMessages.PartStack_incorrectPartInFolder, part
-							.getID()));
-			return;
-		}
-        
-        PartPane pane = (PartPane)part;
-        
-        PresentablePart presentablePart = new PresentablePart(pane, getControl().getParent());
-        presentableParts.add(presentablePart);
-        
-        if (isActive) {
-            part.setContainer(this);
-            
-            // The active part should always be enabled
-            if (part.getControl() != null)
-            	part.getControl().setEnabled(true);
-        }
-        
-        presentationSite.getPresentation().addPart(presentablePart, cookie);
-
-        if (requestedCurrent == null) {
-            setSelection(part);
-        }
-        
-        if (childObscuredByZoom(part)) {
-			presentablePart.enableInputs(false);
-		}
-    }
-
-    /**
-	 * Update the container to show the correct visible tab based on the
-	 * activation list.
-	 */
-    private void updateContainerVisibleTab() {
-        LayoutPart[] parts = getChildren();
-
-        if (parts.length < 1) {
-            setSelection(null);
-            return;
-        }
-
-        PartPane selPart = null;
-        int topIndex = 0;
-        WorkbenchPage page = getPage();
-
-        if (page != null) {
-            IWorkbenchPartReference sortedPartsArray[] = page.getSortedParts();
-            List sortedParts = Arrays.asList(sortedPartsArray);
-            for (int i = 0; i < parts.length; i++) {
-                if (parts[i] instanceof PartPane) {
-                    IWorkbenchPartReference part = ((PartPane) parts[i])
-                            .getPartReference();
-                    int index = sortedParts.indexOf(part);
-                    if (index >= topIndex) {
-                        topIndex = index;
-                        selPart = (PartPane) parts[i];
-                    }
-                }
-            }
-
-        }
-
-        if (selPart == null) {
-            List presentableParts = getPresentableParts();
-            if (presentableParts.size() != 0) {
-                IPresentablePart part = (IPresentablePart) getPresentableParts()
-                        .get(0);
-
-                selPart = (PartPane) getPaneFor(part);
-            }
-        }
-
-        setSelection(selPart);
-    }
-
-    /**
-     * 
-     */
-    public void showSystemMenu() {
-        getPresentation().showSystemMenu();
-    }
-
-    public void showPaneMenu() {
-        getPresentation().showPaneMenu();
-    }
-
-    public void showPartList() {
-        getPresentation().showPartList();
-    }
-    
-    public Control[] getTabList(LayoutPart part) {
-        if (part != null) {
-            IPresentablePart presentablePart = getPresentablePart(part);
-            StackPresentation presentation = getPresentation();
-
-            if (presentablePart != null && presentation != null) {
-                return presentation.getTabList(presentablePart);
-            }
-        }
-
-        return new Control[0];
-    }
-
-    /**
-     * 
-     * @param beingDragged
-     * @param initialLocation
-     * @param keyboard
-     */
-    private void dragStart(IPresentablePart beingDragged, Point initialLocation,
-            boolean keyboard) {
-        if (beingDragged == null) {
-            paneDragStart((LayoutPart)null, initialLocation, keyboard);
-        } else {
-            if (presentationSite.isPartMoveable(beingDragged)) {
-                LayoutPart pane = getPaneFor(beingDragged);
-
-                if (pane != null) {
-                    paneDragStart(pane, initialLocation, keyboard);
-                }
-            }
-        }
-    }
-    
-    public void paneDragStart(LayoutPart pane, Point initialLocation,
-            boolean keyboard) {
-        if (pane == null) {
-            if (canMoveFolder()) {            	
-                if (presentationSite.getState() == IStackPresentationSite.STATE_MAXIMIZED) {
-                	// Calculate where the initial location was BEFORE the 'restore'...as a percentage
-                	Rectangle bounds = Geometry.toDisplay(getParent(), getPresentation().getControl().getBounds());
-                	float xpct = (initialLocation.x - bounds.x) / (float)(bounds.width);
-                	float ypct = (initialLocation.y - bounds.y) / (float)(bounds.height);
-
-                	// Only restore if we're dragging views/view stacks
-                	if (this instanceof ViewStack)
-                		setState(IStackPresentationSite.STATE_RESTORED);
-
-                	// Now, adjust the initial location to be within the bounds of the restored rect
-                	bounds = Geometry.toDisplay(getParent(), getPresentation().getControl().getBounds());
-                	initialLocation.x = (int) (bounds.x + (xpct * bounds.width));
-                	initialLocation.y = (int) (bounds.y + (ypct * bounds.height));
-                }
-    
-                DragUtil.performDrag(PartStack.this, Geometry
-                        .toDisplay(getParent(), getPresentation().getControl()
-                                .getBounds()), initialLocation, !keyboard);
-            }
-        } else {
-            if (presentationSite.getState() == IStackPresentationSite.STATE_MAXIMIZED) {
-            	// Calculate where the initial location was BEFORE the 'restore'...as a percentage
-            	Rectangle bounds = Geometry.toDisplay(getParent(), getPresentation().getControl().getBounds());
-            	float xpct = (initialLocation.x - bounds.x) / (float)(bounds.width);
-            	float ypct = (initialLocation.y - bounds.y) / (float)(bounds.height);
-            	
-            	// Only restore if we're dragging views/view stacks
-            	if (this instanceof ViewStack)
-            		setState(IStackPresentationSite.STATE_RESTORED);
-
-            	// Now, adjust the initial location to be within the bounds of the restored rect
-            	// See bug 100908
-            	bounds = Geometry.toDisplay(getParent(), getPresentation().getControl().getBounds());
-            	initialLocation.x = (int) (bounds.x + (xpct * bounds.width));
-            	initialLocation.y = (int) (bounds.y + (ypct * bounds.height));
-            }
-    
-            DragUtil.performDrag(pane, Geometry.toDisplay(getParent(),
-                    getPresentation().getControl().getBounds()),
-                    initialLocation, !keyboard);
-        }
-    }
-
-    /**
-     * @return Returns the savedPresentationState.
-     */
-    public IMemento getSavedPresentationState() {
-        return savedPresentationState;
-    }
-    
-    private void fireInternalPropertyChange(int id) {
-        Object listeners[] = this.listeners.getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyListener) listeners[i]).propertyChanged(this, id);
-        }
-    }
-    
-    // TrimStack Support
-    
-    /**
-     * Explicitly sets the presentation state. This is used by the
-     * new min/max code to force the CTabFolder to show the proper
-     * state without going through the 'setState' code (which causes
-     * nasty side-effects.
-     * @param newState The state to set the presentation to
-     */
-    public void setPresentationState(int newState) {
-    	presentationSite.setPresentationState(newState);
-    }
-
-    //
-    // Support for passing perspective layout properties to the presentation
-
-    
-    public String getProperty(String id)  {
-        return (String)properties.get(id);
-    }
-    
-    public void setProperty(String id, String value) {
-    	if (value==null) {
-    		properties.remove(id);
-    	} else {
-    		properties.put(id, value);
-    	}
-    }
-    
-    /**
-     * Copies all appearance related data from this stack to the given stack.
-     */
-    public void copyAppearanceProperties(PartStack copyTo) {
-        copyTo.appearance = this.appearance;
-        if (!properties.isEmpty()) {
-            Set ids = properties.keySet();
-            for (Iterator iterator = ids.iterator(); iterator.hasNext();) {
-                String id = (String)iterator.next();
-                copyTo.setProperty(id, (String)properties.get(id));
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTester.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTester.java
deleted file mode 100644
index e93bdca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartTester.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart2;
-
-public class PartTester {
-    private PartTester() {
-    }
-    
-    /**
-     * Sanity-check the public interface of the editor. This is called on every editor after it
-     * is fully initiallized, but before it is actually connected to the editor reference or the
-     * layout. Calls as much of the editor's public interface as possible to test for exceptions,
-     * and tests the return values for glaring faults. This does not need to be an exhaustive conformance
-     * test, as it is called every time an editor is opened and it needs to be efficient.
-     * The part should be unmodified when the method exits. 
-     *
-     * @param part
-     */
-    public static void testEditor(IEditorPart part) throws Exception {
-        testWorkbenchPart(part);
-        
-        Assert.isTrue(part.getEditorSite() == part.getSite(),
-				"The part's editor site must be the same as the part's site"); //$NON-NLS-1$
-		IEditorInput input = part.getEditorInput();
-		Assert.isNotNull(input, "The editor input must be non-null"); //$NON-NLS-1$
-		testEditorInput(input);
-        
-        part.isDirty();
-        part.isSaveAsAllowed();
-        part.isSaveOnCloseNeeded();
-    }
-    
-    public static void testEditorInput(IEditorInput input) throws Exception {
-        input.getAdapter(Object.class);
-        
-        // Don't test input.getImageDescriptor() -- the workbench never uses that
-        // method and most editor inputs would fail the test. It should really be
-        // deprecated.
-        
-        Assert.isNotNull(input.getName(),
-				"The editor input must have a non-null name"); //$NON-NLS-1$
-		Assert.isNotNull(input.getToolTipText(),
-				"The editor input must have a non-null tool tip"); //$NON-NLS-1$
-
-		// Persistable element may be null
-		IPersistableElement persistableElement = input.getPersistable();
-		if (persistableElement != null) {
-			Assert
-					.isNotNull(persistableElement.getFactoryId(),
-							"The persistable element for the editor input must have a non-null factory id"); //$NON-NLS-1$
-        }
-    }
-    
-    /**
-     * Sanity-checks a workbench part. Excercises the public interface and tests for any
-     * obviously bogus return values. The part should be unmodified when the method exits.
-     *
-     * @param part
-     * @throws Exception
-     */
-    private static void testWorkbenchPart(IWorkbenchPart part) throws Exception {
-        IPropertyListener testListener = new IPropertyListener() {
-            public void propertyChanged(Object source, int propId) {
-                
-            }
-        };
-        
-        // Test addPropertyListener
-        part.addPropertyListener(testListener);
-        
-        // Test removePropertyListener
-        part.removePropertyListener(testListener);
-        
-        // Test equals
-		Assert.isTrue(part.equals(part), "A part must be equal to itself"); //$NON-NLS-1$
-		Assert.isTrue(!part.equals(new Integer(32)),
-				"A part must have a meaningful equals method"); //$NON-NLS-1$
-        
-        // Test getAdapter   
-        Object partAdapter = part.getAdapter(part.getClass());
-        Assert.isTrue(partAdapter == null || partAdapter == part,
-				"A part must adapter to itself or return null"); //$NON-NLS-1$
-        
-        // Test getTitle
-		Assert.isNotNull(part.getTitle(), "A part's title must be non-null"); //$NON-NLS-1$
-
-		// Test getTitleImage
-		Assert.isNotNull(part.getTitleImage(),
-				"A part's title image must be non-null"); //$NON-NLS-1$
-
-		// Test getTitleToolTip
-		Assert.isNotNull(part.getTitleToolTip(),
-				"A part's title tool tip must be non-null"); //$NON-NLS-1$
-
-		// Test toString
-		Assert.isNotNull(part.toString(),
-				"A part's toString method must return a non-null value"); //$NON-NLS-1$
-        
-        // Compute hashCode
-        part.hashCode();
-        
-        if (part instanceof IWorkbenchPart2) {
-            testWorkbenchPart2((IWorkbenchPart2)part);
-        }
-    }
-
-    private static void testWorkbenchPart2(IWorkbenchPart2 part)
-			throws Exception {
-		Assert.isNotNull(part.getContentDescription(),
-				"A part must return a non-null content description"); //$NON-NLS-1$
-		Assert.isNotNull(part.getPartName(),
-				"A part must return a non-null part name"); //$NON-NLS-1$
-    }
-    
-    /**
-     * Sanity-check the public interface of a view. This is called on every view after it
-     * is fully initiallized, but before it is actually connected to the part reference or the
-     * layout. Calls as much of the part's public interface as possible without modifying the part 
-     * to test for exceptions and check the return values for glaring faults. This does not need 
-     * to be an exhaustive conformance test, as it is called every time an editor is opened and 
-     * it needs to be efficient. 
-     *
-     * @param part
-     */    
-    public static void testView(IViewPart part) throws Exception {
-       Assert.isTrue(part.getSite() == part.getViewSite(),
-				"A part's site must be the same as a part's view site"); //$NON-NLS-1$
-       testWorkbenchPart(part);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java
deleted file mode 100644
index 0b3f892..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Perspective.java
+++ /dev/null
@@ -1,2537 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Markus Alexander Kuppe, Versant GmbH - bug 215797
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.io.IOException;
-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 org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveFactory;
-import org.eclipse.ui.IPlaceholderFolderLayout;
-import org.eclipse.ui.IViewLayout;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.contexts.ContextAuthority;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.layout.ITrimManager;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.TrimLayout;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
-import org.eclipse.ui.internal.registry.PerspectiveExtensionReader;
-import org.eclipse.ui.internal.registry.PerspectiveRegistry;
-import org.eclipse.ui.internal.registry.StickyViewDescriptor;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.views.IStickyViewDescriptor;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * The ViewManager is a factory for workbench views.  
- */
-public class Perspective {
-    protected PerspectiveDescriptor descriptor;
-
-    protected WorkbenchPage page;
-
-    // Editor Area management
-    protected LayoutPart editorArea;
-    protected PartPlaceholder editorHolder;
-    protected boolean editorHidden = false;
-    protected boolean editorAreaRestoreOnUnzoom = false;
-    protected int editorAreaState = IStackPresentationSite.STATE_RESTORED;
-
-    private ViewFactory viewFactory;
-    
-    protected ArrayList alwaysOnActionSets;
-
-    protected ArrayList alwaysOffActionSets;
-
-    protected ArrayList newWizardShortcuts;
-
-    protected ArrayList showViewShortcuts;
-
-    protected ArrayList perspectiveShortcuts;
-
-    //private List fastViews;
-    protected FastViewManager fastViewManager = null;
-
-    private Map mapIDtoViewLayoutRec;
-
-    protected boolean fixed;
-
-    protected ArrayList showInPartIds;
-
-    protected HashMap showInTimes = new HashMap();
-
-    private IViewReference activeFastView;
-
-    protected IMemento memento;
-
-    protected PerspectiveHelper presentation;
-
-    final static private String VERSION_STRING = "0.016";//$NON-NLS-1$
-
-    private FastViewPane fastViewPane = new FastViewPane();
-
-    // fields used by fast view resizing via a sash
-    private static final int FASTVIEW_HIDE_STEPS = 5;
-
-    /**
-     * Reference to the part that was previously active
-     * when this perspective was deactivated.
-     */
-    private IWorkbenchPartReference oldPartRef = null;
-
-    protected boolean shouldHideEditorsOnActivate = false;
-
-	protected PageLayout layout;
-
-    /**
-     * ViewManager constructor comment.
-     */
-    public Perspective(PerspectiveDescriptor desc, WorkbenchPage page)
-            throws WorkbenchException {
-        this(page);
-        descriptor = desc;
-        if (desc != null) {
-			createPresentation(desc);
-		}
-    }
-
-    /**
-     * ViewManager constructor comment.
-     */
-    protected Perspective(WorkbenchPage page) throws WorkbenchException {
-        this.page = page;
-        this.editorArea = page.getEditorPresentation().getLayoutPart();
-        this.viewFactory = page.getViewFactory();
-        alwaysOnActionSets = new ArrayList(2);
-        alwaysOffActionSets = new ArrayList(2);
-        
-        // We'll only make a FastView Manager if there's a
-        // Trim manager in the WorkbenchWindow
-        IWorkbenchWindow wbw = page.getWorkbenchWindow();
-        if (wbw instanceof WorkbenchWindow) {
-        	if (((WorkbenchWindow)wbw).getTrimManager() != null)
-        		fastViewManager = new FastViewManager(this, page);        	
-        }
-        
-        mapIDtoViewLayoutRec = new HashMap();
-    }
-
-	/**
-	 * Sets the fast view attribute. Note: The page is expected to update action
-	 * bars.
-	 */
-	public void makeFastView(IViewReference ref) {
-		addFastView(ref, true);
-	}
-	
-	/**
-	 * Sets the fast view attribute. Note: The page is expected to update action
-	 * bars.
-	 */
-	public void addFastView(IViewReference ref, boolean handleLayout) {
-		ViewPane pane = (ViewPane) ((WorkbenchPartReference) ref).getPane();
-		if (!isFastView(ref)) {
-			if (handleLayout) {
-				// Only remove the part from the presentation if it
-				// is actually in the presentation.
-				if (presentation.hasPlaceholder(ref.getId(), ref.getSecondaryId())
-						|| pane.getContainer() != null) {
-					presentation.removePart(pane);
-				}
-			}
-			
-			// We are drag-enabling the pane because it has been disabled
-			// when it was removed from the perspective presentation.
-			pane.setFast(true);
-			Control ctrl = pane.getControl();
-			if (ctrl != null) {
-				ctrl.setEnabled(false); // Remove focus support.
-			}
-		}
-	}
-
-    /**
-     * Moves a part forward in the Z order of a perspective so it is visible.
-     *
-     * @param part the part to bring to move forward
-     * @return true if the part was brought to top, false if not.
-     */
-    public boolean bringToTop(IViewReference ref) {
-        if (isFastView(ref)) {
-            setActiveFastView(ref);
-            return true;
-        } else {
-            return presentation.bringPartToTop(getPane(ref));
-        }
-    }
-
-    /**
-     * Returns whether a view exists within the perspective.
-     */
-    public boolean containsView(IViewPart view) {
-        IViewSite site = view.getViewSite();
-        IViewReference ref = findView(site.getId(), site.getSecondaryId());
-        if (ref == null) {
-			return false;
-		}
-        return (view == ref.getPart(false));
-    }
-
-    /**
-     * Create the initial list of action sets.
-     */
-    protected void createInitialActionSets(List outputList, List stringList) {
-        ActionSetRegistry reg = WorkbenchPlugin.getDefault()
-                .getActionSetRegistry();
-        Iterator iter = stringList.iterator();
-        while (iter.hasNext()) {
-            String id = (String) iter.next();
-            IActionSetDescriptor desc = reg.findActionSet(id);
-            if (desc != null) {
-				outputList.add(desc);
-			} else {
-				WorkbenchPlugin.log("Unable to find Action Set: " + id);//$NON-NLS-1$
-			}
-        }
-    }
-
-    /**
-     * Create a presentation for a perspective.
-     */
-    private void createPresentation(PerspectiveDescriptor persp)
-            throws WorkbenchException {
-        if (persp.hasCustomDefinition()) {
-            loadCustomPersp(persp);
-        } else {
-            loadPredefinedPersp(persp);
-        }
-    }
-
-    /**
-     * Dispose the perspective and all views contained within.
-     */
-    public void dispose() {
-        // Get rid of presentation.
-        if (presentation == null) {
-        	disposeViewRefs();
-			return;
-		}
-
-        presentation.deactivate();
-        presentation.dispose();
-
-        fastViewPane.dispose();
-        
-        // Release each view.
-        IViewReference refs[] = getViewReferences();
-        for (int i = 0, length = refs.length; i < length; i++) {
-            getViewFactory().releaseView(refs[i]);
-        }
-
-        mapIDtoViewLayoutRec.clear();
-    }
-    
-    private void disposeViewRefs() {
-		if (memento == null) {
-			return;
-		}
-		IMemento views[] = memento.getChildren(IWorkbenchConstants.TAG_VIEW);
-		for (int x = 0; x < views.length; x++) {
-			// Get the view details.
-			IMemento childMem = views[x];
-			String id = childMem.getString(IWorkbenchConstants.TAG_ID);
-			// skip creation of the intro reference - it's handled elsewhere.
-			if (id.equals(IIntroConstants.INTRO_VIEW_ID)) {
-				continue;
-			}
-
-			String secondaryId = ViewFactory.extractSecondaryId(id);
-			if (secondaryId != null) {
-				id = ViewFactory.extractPrimaryId(id);
-			}
-			// Create and open the view.
-
-			if (!"true".equals(childMem.getString(IWorkbenchConstants.TAG_REMOVED))) { //$NON-NLS-1$
-				IViewReference ref = viewFactory.getView(id, secondaryId);
-				if (ref != null) {
-					viewFactory.releaseView(ref);
-				}
-			}
-
-		}
-	}
-
-    /**
-	 * Finds the view with the given ID that is open in this page, or
-	 * <code>null</code> if not found.
-	 * 
-	 * @param viewId
-	 *            the view ID
-	 */
-    public IViewReference findView(String viewId) {
-        return findView(viewId, null);
-    }
-
-    /**
-     * Finds the view with the given id and secondary id that is open in this page, 
-     * or <code>null</code> if not found.
-     * 
-     * @param viewId the view ID
-     * @param secondaryId the secondary ID
-     */
-    public IViewReference findView(String id, String secondaryId) {
-        IViewReference refs[] = getViewReferences();
-        for (int i = 0; i < refs.length; i++) {
-            IViewReference ref = refs[i];
-            if (id.equals(ref.getId())
-                    && (secondaryId == null ? ref.getSecondaryId() == null
-                            : secondaryId.equals(ref.getSecondaryId()))) {
-				return ref;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Returns the window's client composite widget
-     * which views and editor area will be parented.
-     */
-    public Composite getClientComposite() {
-        return page.getClientComposite();
-    }
-
-    /**
-     * Returns the perspective.
-     */
-    public IPerspectiveDescriptor getDesc() {
-        return descriptor;
-    }
-
-    /**
-     * Returns the bounds of the given fast view.
-     */
-    /*package*/Rectangle getFastViewBounds(IViewReference ref) {
-        // Copy the bounds of the page composite
-        Rectangle bounds = page.getClientComposite().getBounds();
-        // get the width ratio of the fast view
-        float ratio = getFastViewWidthRatio(ref);
-        // Compute the actual width of the fast view.
-        bounds.width = (int) (ratio * getClientComposite().getSize().x);
-        return bounds;
-    }
-
-    /**
-     * Returns the docked views.
-     */
-    public IViewReference[] getFastViews() {
-    	if (fastViewManager == null)
-    		return new IViewReference[0];
-    	
-    	List trueFVBRefs = fastViewManager.getFastViews(FastViewBar.FASTVIEWBAR_ID);
-        IViewReference array[] = new IViewReference[trueFVBRefs.size()];
-        trueFVBRefs.toArray(array);
-        return array;
-    }
-
-    /**
-     * Returns the new wizard shortcuts associated with this perspective.
-     * 
-     * @return an array of new wizard identifiers
-     */
-    public String[] getNewWizardShortcuts() {
-        return (String[]) newWizardShortcuts.toArray(new String[newWizardShortcuts.size()]);
-    }
-
-    /**
-     * Returns the pane for a view reference.
-     */
-    protected ViewPane getPane(IViewReference ref) {
-        return (ViewPane) ((WorkbenchPartReference) ref).getPane();
-    }
-
-    /**
-     * Returns the perspective shortcuts associated with this perspective.
-     * 
-     * @return an array of perspective identifiers
-     */
-    public String[] getPerspectiveShortcuts() {
-        return (String[]) perspectiveShortcuts.toArray(new String[perspectiveShortcuts.size()]);
-    }
-
-    /**
-     * Returns the presentation.
-     */
-    public PerspectiveHelper getPresentation() {
-        return presentation;
-    }
-
-    /**
-     * Retrieves the fast view width ratio for the given view. 
-     * If the ratio is not known, the default ratio for the view is assigned and returned.
-     */
-    public float getFastViewWidthRatio(IViewReference ref) {
-        ViewLayoutRec rec = getViewLayoutRec(ref, true);
-        if (rec.fastViewWidthRatio == IPageLayout.INVALID_RATIO) {
-            IViewRegistry reg = WorkbenchPlugin.getDefault().getViewRegistry();
-            IViewDescriptor desc = reg.find(ref.getId());
-            rec.fastViewWidthRatio = 
-                (desc != null 
-                    ? desc.getFastViewWidthRatio()
-                    : IPageLayout.DEFAULT_FASTVIEW_RATIO);
-        }
-        return rec.fastViewWidthRatio;
-    }
-
-    /**
-     * Returns the ids of the parts to list in the Show In... dialog.
-     * This is a List of Strings.
-     */
-    public ArrayList getShowInPartIds() {
-        return showInPartIds;
-    }
-
-    /**
-     * Returns the time at which the last Show In was performed
-     * for the given target part, or 0 if unknown.
-     */
-    public long getShowInTime(String partId) {
-        Long t = (Long) showInTimes.get(partId);
-        return t == null ? 0L : t.longValue();
-    }
-
-    /**
-     * Returns the show view shortcuts associated with this perspective.
-     * 
-     * @return an array of view identifiers
-     */
-    public String[] getShowViewShortcuts() {
-        return (String[]) showViewShortcuts.toArray(new String[showViewShortcuts.size()]);
-    }
-
-    /**
-     * Returns the view factory.
-     */
-    public ViewFactory getViewFactory() {
-        return viewFactory;
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IViewReference[] getViewReferences() {
-        // Get normal views.
-        if (presentation == null) {
-			return new IViewReference[0];
-		}
-
-        List panes = new ArrayList(5);
-        presentation.collectViewPanes(panes);
-
-        List fastViews = (fastViewManager != null) ? 
-        					fastViewManager.getFastViews(null)
-        					: new ArrayList();
-        IViewReference[] resultArray = new IViewReference[panes.size()
-                + fastViews.size()];
-
-        // Copy fast views.
-        int nView = 0;
-        for (int i = 0; i < fastViews.size(); i++) {
-            resultArray[nView] = (IViewReference) fastViews.get(i);
-            ++nView;
-        }
-
-        // Copy normal views.
-        for (int i = 0; i < panes.size(); i++) {
-            ViewPane pane = (ViewPane) panes.get(i);
-            resultArray[nView] = pane.getViewReference();
-            ++nView;
-        }
-
-        return resultArray;
-    }
-
-
-    /**
-     * Hide the editor area if visible
-     */
-    protected void hideEditorArea() {
-        if (!isEditorAreaVisible()) {
-			return;
-		}
-        
-        // Show the editor in the appropriate location
-        if (useNewMinMax(this)) {
-        	// If it's the currently maximized part we have to restore first
-        	if (getPresentation().getMaximizedStack() instanceof EditorStack) {
-        		getPresentation().getMaximizedStack().setState(IStackPresentationSite.STATE_RESTORED);
-        	}
-        	
-        	boolean isMinimized = editorAreaState == IStackPresentationSite.STATE_MINIMIZED;
-        	if (!isMinimized)
-        		hideEditorAreaLocal();
-        	else
-        		setEditorAreaTrimVisibility(false);
-        }
-        else {
-        	hideEditorAreaLocal();
-        }
-        
-        editorHidden = true;
-    }
-
-    /**
-     * Hide the editor area if visible
-     */
-    protected void hideEditorAreaLocal() {
-        if (editorHolder != null) {
-			return;
-		}
-
-        // Replace the editor area with a placeholder so we
-        // know where to put it back on show editor area request.
-        editorHolder = new PartPlaceholder(editorArea.getID());
-        presentation.getLayout().replace(editorArea, editorHolder);
-    }
-
-    /**
-     * Hides a fast view. The view shrinks equally <code>steps</code> times
-     * before disappearing completely.
-     */
-    private void hideFastView(IViewReference ref, int steps) {
-        setFastViewIconSelection(ref, false);
-
-        // Note: We always do at least one step of the animation.
-        // Note: This doesn't take into account the overhead of doing
-        if (ref == activeFastView) {
-            saveFastViewWidthRatio();
-            fastViewPane.hideView();
-        }
-    }
-
-    /**
-     * Hides the fast view sash for zooming in a fast view.
-     */
-    void hideFastViewSash() {
-        fastViewPane.hideFastViewSash();
-    }
-
-    public boolean hideView(IViewReference ref) {
-        // If the view is locked just return.
-        ViewPane pane = getPane(ref);
-
-        // Remove the view from the current presentation.
-        if (isFastView(ref)) {
-            if (pane != null) {
-				pane.setFast(false); //force an update of the toolbar
-			}
-            if (activeFastView == ref) {
-				setActiveFastView(null);
-			}
-            if (pane != null) {
-				pane.getControl().setEnabled(true);
-			}
-        } else {
-            presentation.removePart(pane);
-        }
-
-        // Dispose view if ref count == 0.
-        getViewFactory().releaseView(ref);
-        return true;
-    }
-
-    /*
-     * Return whether the editor area is visible or not.
-     */
-    protected boolean isEditorAreaVisible() {
-        return !editorHidden;
-    }
-
-    /**
-     * Returns true if a view is fast.
-     */
-    public boolean isFastView(IViewReference ref) {
-    	if (fastViewManager == null)
-    		return false;
-    	
-        return fastViewManager.isFastView(ref);
-    }
-
-    /**
-     * Returns the view layout rec for the given view reference,
-     * or null if not found.  If create is true, it creates the record
-     * if not already created.
-     */
-    public ViewLayoutRec getViewLayoutRec(IViewReference ref, boolean create) {
-        ViewLayoutRec result = getViewLayoutRec(ViewFactory.getKey(ref), create);
-        if (result == null && create==false) {
-        	result = getViewLayoutRec(ref.getId(), false);
-        }
-        return result;
-    }
-
-    /**
-     * Returns the view layout record for the given view id
-     * or null if not found.  If create is true, it creates the record
-     * if not already created.
-     */
-    private ViewLayoutRec getViewLayoutRec(String viewId, boolean create) {
-        ViewLayoutRec rec = (ViewLayoutRec) mapIDtoViewLayoutRec.get(viewId);
-        if (rec == null && create) {
-            rec = new ViewLayoutRec();
-            mapIDtoViewLayoutRec.put(viewId, rec);
-        }
-        return rec;
-    }
-
-    /**
-     * Returns true if a layout or perspective is fixed.
-     */
-    public boolean isFixedLayout() {
-        //@issue is there a difference between a fixed
-        //layout and a fixed perspective?? If not the API
-        //may need some polish, WorkbenchPage, PageLayout
-        //and Perspective all have isFixed methods.  
-        //PageLayout and Perspective have their own fixed
-        //attribute, we are assuming they are always in sync.
-        //WorkbenchPage delegates to the perspective.
-        return fixed;
-    }
-
-    /**
-     * Returns true if a view is standalone.
-     * 
-     * @since 3.0
-     */
-    public boolean isStandaloneView(IViewReference ref) {
-        ViewLayoutRec rec = getViewLayoutRec(ref, false);
-        return rec != null && rec.isStandalone;
-    }
-
-    /**
-     * Returns whether the title for a view should
-     * be shown.  This applies only to standalone views.
-     * 
-     * @since 3.0
-     */
-    public boolean getShowTitleView(IViewReference ref) {
-        ViewLayoutRec rec = getViewLayoutRec(ref, false);
-        return rec != null && rec.showTitle;
-    }
-
-    /**
-     * Creates a new presentation from a persistence file.
-     * Note: This method should not modify the current state of the perspective.
-     */
-    private void loadCustomPersp(PerspectiveDescriptor persp) {
-        //get the layout from the registry	
-        PerspectiveRegistry perspRegistry = (PerspectiveRegistry) WorkbenchPlugin
-                .getDefault().getPerspectiveRegistry();
-        try {
-            IMemento memento = perspRegistry.getCustomPersp(persp.getId());
-            // Restore the layout state.
-            MultiStatus status = new MultiStatus(
-                    PlatformUI.PLUGIN_ID,
-                    IStatus.OK,
-                    NLS.bind(WorkbenchMessages.Perspective_unableToRestorePerspective, persp.getLabel()),
-                    null);
-            status.merge(restoreState(memento));
-            status.merge(restoreState());
-            if (status.getSeverity() != IStatus.OK) {
-                unableToOpenPerspective(persp, status);
-            }
-        } catch (IOException e) {
-            unableToOpenPerspective(persp, null);
-        } catch (WorkbenchException e) {
-            unableToOpenPerspective(persp, e.getStatus());
-        }
-    }
-
-    private void unableToOpenPerspective(PerspectiveDescriptor persp,
-            IStatus status) {
-        PerspectiveRegistry perspRegistry = (PerspectiveRegistry) WorkbenchPlugin
-                .getDefault().getPerspectiveRegistry();
-        perspRegistry.deletePerspective(persp);
-        // If this is a predefined perspective, we will not be able to delete
-        // the perspective (we wouldn't want to).  But make sure to delete the
-        // customized portion.
-        persp.deleteCustomDefinition();
-        String title = WorkbenchMessages.Perspective_problemRestoringTitle;
-        String msg = WorkbenchMessages.Perspective_errorReadingState;
-        if (status == null) {
-            MessageDialog.openError((Shell) null, title, msg);
-        } else {
-            ErrorDialog.openError((Shell) null, title, msg, status);
-        }
-    }
-
-    /**
-     * Create a presentation for a perspective.
-     * Note: This method should not modify the current state of the perspective.
-     */
-    protected void loadPredefinedPersp(PerspectiveDescriptor persp)
-            throws WorkbenchException {
-        // Create layout engine.
-        IPerspectiveFactory factory = null;
-        try {
-            factory = persp.createFactory();
-        } catch (CoreException e) {
-            throw new WorkbenchException(NLS.bind(WorkbenchMessages.Perspective_unableToLoad, persp.getId() ));
-        }
-		
-		/*
-		 * IPerspectiveFactory#createFactory() can return null
-		 */
-		if (factory == null) {
-			throw new WorkbenchException(NLS.bind(WorkbenchMessages.Perspective_unableToLoad, persp.getId() ));
-		}		
-		
-		
-        // Create layout factory.
-        ViewSashContainer container = new ViewSashContainer(page, getClientComposite());
-        layout = new PageLayout(container, getViewFactory(),
-                editorArea, descriptor);
-        layout.setFixed(descriptor.getFixed());
-
-        // add the placeholders for the sticky folders and their contents	
-        IPlaceholderFolderLayout stickyFolderRight = null, stickyFolderLeft = null, stickyFolderTop = null, stickyFolderBottom = null;
-
-        IStickyViewDescriptor[] descs = WorkbenchPlugin.getDefault()
-                .getViewRegistry().getStickyViews();
-        for (int i = 0; i < descs.length; i++) {
-            IStickyViewDescriptor stickyViewDescriptor = descs[i];
-            String id = stickyViewDescriptor.getId();
-            switch (stickyViewDescriptor.getLocation()) {
-            case IPageLayout.RIGHT:
-                if (stickyFolderRight == null) {
-					stickyFolderRight = layout
-                            .createPlaceholderFolder(
-                                    StickyViewDescriptor.STICKY_FOLDER_RIGHT,
-                                    IPageLayout.RIGHT, .75f,
-                                    IPageLayout.ID_EDITOR_AREA);
-				}
-                stickyFolderRight.addPlaceholder(id);
-                break;
-            case IPageLayout.LEFT:
-                if (stickyFolderLeft == null) {
-					stickyFolderLeft = layout.createPlaceholderFolder(
-                            StickyViewDescriptor.STICKY_FOLDER_LEFT,
-                            IPageLayout.LEFT, .25f, IPageLayout.ID_EDITOR_AREA);
-				}
-                stickyFolderLeft.addPlaceholder(id);
-                break;
-            case IPageLayout.TOP:
-                if (stickyFolderTop == null) {
-					stickyFolderTop = layout.createPlaceholderFolder(
-                            StickyViewDescriptor.STICKY_FOLDER_TOP,
-                            IPageLayout.TOP, .25f, IPageLayout.ID_EDITOR_AREA);
-				}
-                stickyFolderTop.addPlaceholder(id);
-                break;
-            case IPageLayout.BOTTOM:
-                if (stickyFolderBottom == null) {
-					stickyFolderBottom = layout.createPlaceholderFolder(
-                            StickyViewDescriptor.STICKY_FOLDER_BOTTOM,
-                            IPageLayout.BOTTOM, .75f,
-                            IPageLayout.ID_EDITOR_AREA);
-				}
-                stickyFolderBottom.addPlaceholder(id);
-                break;
-            }
-
-            //should never be null as we've just added the view above
-            IViewLayout viewLayout = layout.getViewLayout(id);
-            viewLayout.setCloseable(stickyViewDescriptor.isCloseable());
-            viewLayout.setMoveable(stickyViewDescriptor.isMoveable());
-        }
-
-        // Run layout engine.
-        factory.createInitialLayout(layout);
-        PerspectiveExtensionReader extender = new PerspectiveExtensionReader();
-        extender.extendLayout(page.getExtensionTracker(), descriptor.getId(), layout);
-
-        // Retrieve view layout info stored in the page layout.
-        mapIDtoViewLayoutRec.putAll(layout.getIDtoViewLayoutRecMap());
-
-        // Create action sets.
-        List temp = new ArrayList();
-        createInitialActionSets(temp, layout.getActionSets());
-
-        IContextService service = null;
-        if (page != null) {
-			service = (IContextService) page.getWorkbenchWindow().getService(
-					IContextService.class);
-		}
-        try {
-        	if (service!=null) {
-        		service.activateContext(ContextAuthority.DEFER_EVENTS);
-        	}
-			for (Iterator iter = temp.iterator(); iter.hasNext();) {
-				IActionSetDescriptor descriptor = (IActionSetDescriptor) iter
-						.next();
-				addAlwaysOn(descriptor);
-			}
-		} finally {
-			if (service!=null) {
-				service.activateContext(ContextAuthority.SEND_EVENTS);
-			}
-        }
-        newWizardShortcuts = layout.getNewWizardShortcuts();
-        showViewShortcuts = layout.getShowViewShortcuts();
-        perspectiveShortcuts = layout.getPerspectiveShortcuts();
-        showInPartIds = layout.getShowInPartIds();
-
-        // Retrieve fast views
-        if (fastViewManager != null) {
-	        ArrayList fastViews = layout.getFastViews();
-	        for (Iterator fvIter = fastViews.iterator(); fvIter.hasNext();) {
-				IViewReference ref = (IViewReference) fvIter.next();
-				fastViewManager.addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, ref, 
-						!fvIter.hasNext());
-			}
-        }
-
-        // Is the layout fixed
-        fixed = layout.isFixed();
-
-        // Create presentation.	
-        presentation = new PerspectiveHelper(page, container, this);
-
-        // Hide editor area if requested by factory
-        if (!layout.isEditorAreaVisible()) {
-			hideEditorArea();
-		}
-
-    }
-
-    private void removeAlwaysOn(IActionSetDescriptor descriptor) {
-        if (descriptor == null) {
-            return;
-        }
-        if (!alwaysOnActionSets.contains(descriptor)) {
-            return;
-        }
-        
-        alwaysOnActionSets.remove(descriptor);
-        if (page != null) {
-            page.perspectiveActionSetChanged(this, descriptor, ActionSetManager.CHANGE_HIDE);
-        }
-    }
-    
-    protected void addAlwaysOff(IActionSetDescriptor descriptor) {
-        if (descriptor == null) {
-            return;
-        }
-        if (alwaysOffActionSets.contains(descriptor)) {
-            return;
-        }
-        alwaysOffActionSets.add(descriptor);
-        if (page != null) {
-            page.perspectiveActionSetChanged(this, descriptor, ActionSetManager.CHANGE_MASK);
-        }
-        removeAlwaysOn(descriptor);
-    }
-    
-    protected void addAlwaysOn(IActionSetDescriptor descriptor) {
-        if (descriptor == null) {
-            return;
-        }
-        if (alwaysOnActionSets.contains(descriptor)) {
-            return;
-        }
-        alwaysOnActionSets.add(descriptor);
-        if (page != null) {
-            page.perspectiveActionSetChanged(this, descriptor, ActionSetManager.CHANGE_SHOW);
-        }
-        removeAlwaysOff(descriptor);
-    }
-    
-    private void removeAlwaysOff(IActionSetDescriptor descriptor) {
-        if (descriptor == null) {
-            return;
-        }
-        if (!alwaysOffActionSets.contains(descriptor)) {
-            return;
-        }
-        alwaysOffActionSets.remove(descriptor);
-        if (page != null) {
-            page.perspectiveActionSetChanged(this, descriptor, ActionSetManager.CHANGE_UNMASK);
-        }
-    }
-    
-    /**
-     * activate.
-     */
-	protected void onActivate() {
-		// Update editor area state.
-		if (editorArea.getControl() != null) {
-			boolean visible = isEditorAreaVisible();
-			boolean inTrim = editorAreaState == IStackPresentationSite.STATE_MINIMIZED;
-			
-			// Funky check: Intro uses the old zoom behaviour when maximized. Make sure we don't show the
-			// editor if it's supposed to be hidden because the intro is maximized. Note that
-			// 'childObscuredByZoom' will only respond 'true' when using the old behaviour.
-			boolean introMaxed = getPresentation().getLayout().childObscuredByZoom(editorArea);
-			
-			editorArea.setVisible(visible && !inTrim && !introMaxed);
-		}
-
-		// Update fast views.
-		// Make sure the control for the fastviews are created so they can
-		// be activated.
-		if (fastViewManager != null) {
-			List fastViews = fastViewManager.getFastViews(null);		
-			for (int i = 0; i < fastViews.size(); i++) {
-				ViewPane pane = getPane((IViewReference) fastViews.get(i));
-				if (pane != null) {
-					Control ctrl = pane.getControl();
-					if (ctrl == null) {
-						pane.createControl(getClientComposite());
-						ctrl = pane.getControl();
-					}
-					ctrl.setEnabled(false); // Remove focus support.
-				}
-			}
-		}
-
-		// Set the visibility of all fast view pins
-		setAllPinsVisible(true);
-
-		// Trim Stack Support
-        boolean useNewMinMax = Perspective.useNewMinMax(this);
-		boolean hideEditorArea = shouldHideEditorsOnActivate || (editorHidden && editorHolder == null);
-		
-        // We have to set the editor area's stack state -before-
-        // activating the presentation since it's used there to determine
-        // size of the resulting stack
-        if (useNewMinMax && !hideEditorArea) {
-			refreshEditorAreaVisibility();
-        }
-
-		// Show the layout
-		presentation.activate(getClientComposite());
-
-    	if (useNewMinMax) {
-    		fastViewManager.activate();
-
-			// Move any minimized extension stacks to the trim			
-			if (layout != null) {
-				// Turn aimations off
-		        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-				boolean useAnimations = preferenceStore
-						.getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS);
-				preferenceStore.setValue(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, false);
-				
-				List minStacks = layout.getMinimizedStacks();
-				for (Iterator msIter = minStacks.iterator(); msIter.hasNext();) {
-					ViewStack vs = (ViewStack) msIter.next();
-					vs.setMinimized(true);
-				}
-
-				// Restore the animation pref
-				preferenceStore.setValue(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, useAnimations);
-
-				// this is a one-off deal...set during the extension reading
-				minStacks.clear();
-				layout = null;
-			}
-    	}
-    	else {
-    		// Update the FVB only if not using the new min/max
-    		WorkbenchWindow wbw = (WorkbenchWindow) page.getWorkbenchWindow();
-    		if (wbw != null) {
-    			ITrimManager tbm = wbw.getTrimManager();
-    			if (tbm != null) {
-    				IWindowTrim fvb = tbm.getTrim(FastViewBar.FASTVIEWBAR_ID);
-    				if (fvb instanceof FastViewBar) {
-    					((FastViewBar)fvb).update(true);
-    				}
-    			}
-    		}
-    	}
-		
-    	// If we are -not- using the new min/max then ensure that there
-    	// are no stacks in the trim. This can happen when a user switches
-    	// back to the 3.0 presentation... 
-		if (!Perspective.useNewMinMax(this) && fastViewManager != null) {
-			boolean stacksWereRestored = fastViewManager.restoreAllTrimStacks();
-			setEditorAreaTrimVisibility(false);
-			
-			// Restore any 'maximized' view stack since we've restored
-			// the minimized stacks
-			if (stacksWereRestored && presentation.getMaximizedStack() instanceof ViewStack) {
-				ViewStack vs = (ViewStack) presentation.getMaximizedStack();
-				vs.setPresentationState(IStackPresentationSite.STATE_RESTORED);
-				presentation.setMaximizedStack(null);
-			}
-		}
-
-		// We hide the editor area -after- the presentation activates
-		if (hideEditorArea) {
-			// We do this here to ensure that createPartControl is called on the
-			// top editor
-			// before it is hidden. See bug 20166.
-			hideEditorArea();
-			shouldHideEditorsOnActivate = false;
-			
-			// this is an override so it should handle both states
-			if (useNewMinMax)
-				setEditorAreaTrimVisibility(editorAreaState == IStackPresentationSite.STATE_MINIMIZED);
-		}
-		
-		// Ensure that the new perspective's layout is correct
-		if (page.window != null && page.window.getTrimManager() != null)
-			page.window.getTrimManager().forceLayout();
-	}
-
-	/**
-     * deactivate.
-     */
-	protected void onDeactivate() {
-		presentation.deactivate();
-		setActiveFastView(null);
-		setAllPinsVisible(false);
-
-		// Update fast views.
-		if (fastViewManager != null) {
-			List fastViews = fastViewManager.getFastViews(null);		
-			for (int i = 0; i < fastViews.size(); i++) {
-				ViewPane pane = getPane((IViewReference) fastViews.get(i));
-				if (pane != null) {
-					Control ctrl = pane.getControl();
-					if (ctrl != null) {
-						ctrl.setEnabled(true); // Add focus support.
-					}
-				}
-			}
-			
-			fastViewManager.deActivate();
-		}
-		
-		// Ensure that the editor area trim is hidden as well
-		setEditorAreaTrimVisibility(false);
-	}
-
-    /**
-     * Notifies that a part has been activated.
-     */
-    public void partActivated(IWorkbenchPart activePart) {
-        // If a fastview is open close it.
-        if (activeFastView != null
-                && activeFastView.getPart(false) != activePart) {
-			setActiveFastView(null);
-		}
-    }
-
-    /**
-     * The user successfully performed a Show In... action on the specified part.
-     * Update the history.
-     */
-    public void performedShowIn(String partId) {
-        showInTimes.put(partId, new Long(System.currentTimeMillis()));
-    }
-
-	/**
-	 * Sets the fast view attribute. Note: The page is expected to update action
-	 * bars.
-	 */
-	public void removeFastView(IViewReference ref) {
-		removeFastView(ref, true);
-	}
-	
-	/**
-	 * Sets the fast view attribute. Note: The page is expected to update action
-	 * bars.
-	 */
-	public void removeFastView(IViewReference ref, boolean handleLayout) {
-		ViewPane pane = getPane(ref);
-
-		if (activeFastView == ref) {
-			setActiveFastView(null);
-		}
-		
-		pane.setFast(false);
-		Control ctrl = pane.getControl();
-		if (ctrl != null) {
-			ctrl.setEnabled(true); // Modify focus support.
-		}
-		
-		if (handleLayout) {
-			// We are disabling the pane because it will be enabled when it
-			// is added to the presentation. When a pane is enabled a drop
-			// listener is added to it, and we do not want to have multiple
-			// listeners for a pane
-			presentation.addPart(pane);
-		}
-	}
-
-    /**
-     * Fills a presentation with layout data.
-     * Note: This method should not modify the current state of the perspective.
-     */
-    public IStatus restoreState(IMemento memento) {
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.Perspective_problemsRestoringPerspective, null);
-
-        // Create persp descriptor.
-        descriptor = new PerspectiveDescriptor(null, null, null);
-        result.add(descriptor.restoreState(memento));
-        PerspectiveDescriptor desc = (PerspectiveDescriptor) WorkbenchPlugin
-                .getDefault().getPerspectiveRegistry().findPerspectiveWithId(
-                        descriptor.getId());
-        if (desc != null) {
-			descriptor = desc;
-		}
-
-        this.memento = memento;
-        // Add the visible views.
-        IMemento views[] = memento.getChildren(IWorkbenchConstants.TAG_VIEW);
-        result.merge(createReferences(views));
-
-        memento = memento.getChild(IWorkbenchConstants.TAG_FAST_VIEWS);
-        if (memento != null) {
-            views = memento.getChildren(IWorkbenchConstants.TAG_VIEW);
-            result.merge(createReferences(views));
-        }
-        return result;
-    }
-
-    IStatus createReferences(IMemento views[]) {
-        MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
-                WorkbenchMessages.Perspective_problemsRestoringViews, null); 
-
-        for (int x = 0; x < views.length; x++) {
-            // Get the view details.
-            IMemento childMem = views[x];
-            String id = childMem.getString(IWorkbenchConstants.TAG_ID);
-            // skip creation of the intro reference -  it's handled elsewhere.
-            if (id.equals(IIntroConstants.INTRO_VIEW_ID)) {
-				continue;
-			}
-
-            String secondaryId = ViewFactory.extractSecondaryId(id);
-            if (secondaryId != null) {
-                id = ViewFactory.extractPrimaryId(id);
-            }
-            // Create and open the view.
-            try {
-                if (!"true".equals(childMem.getString(IWorkbenchConstants.TAG_REMOVED))) { //$NON-NLS-1$
-                    viewFactory.createView(id, secondaryId);
-                }
-            } catch (PartInitException e) {
-                childMem.putString(IWorkbenchConstants.TAG_REMOVED, "true"); //$NON-NLS-1$
-                result.add(StatusUtil.newStatus(IStatus.ERROR,
-                        e.getMessage() == null ? "" : e.getMessage(), //$NON-NLS-1$
-                        e));
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Fills a presentation with layout data.
-     * Note: This method should not modify the current state of the perspective.
-     */
-    public IStatus restoreState() {
-        if (this.memento == null) {
-			return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-		}
-
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.Perspective_problemsRestoringPerspective, null);
-
-        IMemento memento = this.memento;
-        this.memento = null;
-
-        final IMemento boundsMem = memento.getChild(IWorkbenchConstants.TAG_WINDOW);
-        if (boundsMem != null) {
-        	final Rectangle r = new Rectangle(0, 0, 0, 0);
-            r.x = boundsMem.getInteger(IWorkbenchConstants.TAG_X).intValue();
-            r.y = boundsMem.getInteger(IWorkbenchConstants.TAG_Y).intValue();
-            r.height = boundsMem.getInteger(IWorkbenchConstants.TAG_HEIGHT)
-                    .intValue();
-            r.width = boundsMem.getInteger(IWorkbenchConstants.TAG_WIDTH)
-                    .intValue();
-        	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					if (page.getWorkbenchWindow().getPages().length == 0) {
-		                page.getWorkbenchWindow().getShell().setBounds(r);
-		            }
-				}
-			});
-
-        }
-
-        // Create an empty presentation..
-        final PerspectiveHelper [] presArray = new PerspectiveHelper[1];
-        StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() throws Throwable {
-				ViewSashContainer mainLayout = new ViewSashContainer(page, getClientComposite());
-				presArray[0] = new PerspectiveHelper(page, mainLayout, Perspective.this);
-			}});
-        final PerspectiveHelper pres = presArray[0];
-
-        // Read the layout.
-        result.merge(pres.restoreState(memento
-                .getChild(IWorkbenchConstants.TAG_LAYOUT)));
-
-        StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() throws Throwable {
-				// Add the editor workbook. Do not hide it now.
-		        pres.replacePlaceholderWithPart(editorArea);
-			}});
-
-        // Add the visible views.
-        IMemento[] views = memento.getChildren(IWorkbenchConstants.TAG_VIEW);
-
-        for (int x = 0; x < views.length; x++) {
-            // Get the view details.
-            IMemento childMem = views[x];
-            String id = childMem.getString(IWorkbenchConstants.TAG_ID);
-            String secondaryId = ViewFactory.extractSecondaryId(id);
-            if (secondaryId != null) {
-                id = ViewFactory.extractPrimaryId(id);
-            }
-
-            // skip the intro as it is restored higher up in workbench.
-            if (id.equals(IIntroConstants.INTRO_VIEW_ID)) {
-				continue;
-			}
-            
-            // Create and open the view.
-            IViewReference viewRef = viewFactory.getView(id, secondaryId);
-            WorkbenchPartReference ref = (WorkbenchPartReference) viewRef;
-
-            // report error
-            if (ref == null) {
-                String key = ViewFactory.getKey(id, secondaryId);
-                result.add(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0,
-                        NLS.bind(WorkbenchMessages.Perspective_couldNotFind,  key ), null));
-                continue;
-            }
-            boolean willPartBeVisible = pres.willPartBeVisible(ref.getId(),
-                    secondaryId);
-            if (willPartBeVisible) {
-                IViewPart view = (IViewPart) ref.getPart(true);
-                if (view != null) {
-                    ViewSite site = (ViewSite) view.getSite();
-                    ViewPane pane = (ViewPane) site.getPane();
-                    pres.replacePlaceholderWithPart(pane);
-                }
-            } else {
-                pres.replacePlaceholderWithPart(ref.getPane());
-            }
-        }
-
-        // Load the fast views
-        if (fastViewManager != null)
-        	fastViewManager.restoreState(memento, result);
-
-        // Load the view layout recs
-        IMemento[] recMementos = memento
-                .getChildren(IWorkbenchConstants.TAG_VIEW_LAYOUT_REC);
-        for (int i = 0; i < recMementos.length; i++) {
-            IMemento recMemento = recMementos[i];
-            String compoundId = recMemento
-                    .getString(IWorkbenchConstants.TAG_ID);
-            if (compoundId != null) {
-                ViewLayoutRec rec = getViewLayoutRec(compoundId, true);
-                if (IWorkbenchConstants.FALSE.equals(recMemento
-                        .getString(IWorkbenchConstants.TAG_CLOSEABLE))) {
-                    rec.isCloseable = false;
-                }
-                if (IWorkbenchConstants.FALSE.equals(recMemento
-                        .getString(IWorkbenchConstants.TAG_MOVEABLE))) {
-                    rec.isMoveable = false;
-                }
-                if (IWorkbenchConstants.TRUE.equals(recMemento
-                        .getString(IWorkbenchConstants.TAG_STANDALONE))) {
-                    rec.isStandalone = true;
-                    rec.showTitle = !IWorkbenchConstants.FALSE
-                            .equals(recMemento
-                                    .getString(IWorkbenchConstants.TAG_SHOW_TITLE));
-                }
-            }
-        }
-
-        final IContextService service = (IContextService)page.getWorkbenchWindow().getService(IContextService.class);
-        try { // one big try block, don't kill me here
-			// defer context events
-			if (service != null) {
-				service.activateContext(ContextAuthority.DEFER_EVENTS);
-			}
-
-			HashSet knownActionSetIds = new HashSet();
-
-			// Load the always on action sets.
-			IMemento[] actions = memento
-					.getChildren(IWorkbenchConstants.TAG_ALWAYS_ON_ACTION_SET);
-			for (int x = 0; x < actions.length; x++) {
-				String actionSetID = actions[x]
-						.getString(IWorkbenchConstants.TAG_ID);
-				final IActionSetDescriptor d = WorkbenchPlugin.getDefault()
-						.getActionSetRegistry().findActionSet(actionSetID);
-				if (d != null) {
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-								public void runWithException() throws Throwable {
-									addAlwaysOn(d);
-								}
-							});
-
-					knownActionSetIds.add(actionSetID);
-				}
-			}
-
-			// Load the always off action sets.
-			actions = memento
-					.getChildren(IWorkbenchConstants.TAG_ALWAYS_OFF_ACTION_SET);
-			for (int x = 0; x < actions.length; x++) {
-				String actionSetID = actions[x]
-						.getString(IWorkbenchConstants.TAG_ID);
-				final IActionSetDescriptor d = WorkbenchPlugin.getDefault()
-						.getActionSetRegistry().findActionSet(actionSetID);
-				if (d != null) {
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-								public void runWithException() throws Throwable {
-									addAlwaysOff(d);
-								}
-							});
-					knownActionSetIds.add(actionSetID);
-				}
-			}
-
-			// Load "show view actions".
-			actions = memento
-					.getChildren(IWorkbenchConstants.TAG_SHOW_VIEW_ACTION);
-			showViewShortcuts = new ArrayList(actions.length);
-			for (int x = 0; x < actions.length; x++) {
-				String id = actions[x].getString(IWorkbenchConstants.TAG_ID);
-				showViewShortcuts.add(id);
-			}
-
-			// Load "show in times".
-			actions = memento.getChildren(IWorkbenchConstants.TAG_SHOW_IN_TIME);
-			for (int x = 0; x < actions.length; x++) {
-				String id = actions[x].getString(IWorkbenchConstants.TAG_ID);
-				String timeStr = actions[x]
-						.getString(IWorkbenchConstants.TAG_TIME);
-				if (id != null && timeStr != null) {
-					try {
-						long time = Long.parseLong(timeStr);
-						showInTimes.put(id, new Long(time));
-					} catch (NumberFormatException e) {
-						// skip this one
-					}
-				}
-			}
-
-			// Load "show in parts" from registry, not memento
-			showInPartIds = getShowInIdsFromRegistry();
-
-			// Load "new wizard actions".
-			actions = memento
-					.getChildren(IWorkbenchConstants.TAG_NEW_WIZARD_ACTION);
-			newWizardShortcuts = new ArrayList(actions.length);
-			for (int x = 0; x < actions.length; x++) {
-				String id = actions[x].getString(IWorkbenchConstants.TAG_ID);
-				newWizardShortcuts.add(id);
-			}
-
-			// Load "perspective actions".
-			actions = memento
-					.getChildren(IWorkbenchConstants.TAG_PERSPECTIVE_ACTION);
-			perspectiveShortcuts = new ArrayList(actions.length);
-			for (int x = 0; x < actions.length; x++) {
-				String id = actions[x].getString(IWorkbenchConstants.TAG_ID);
-				perspectiveShortcuts.add(id);
-			}
-
-			ArrayList extActionSets = getPerspectiveExtensionActionSets();
-			for (int i = 0; i < extActionSets.size(); i++) {
-				String actionSetID = (String) extActionSets.get(i);
-				if (knownActionSetIds.contains(actionSetID)) {
-					continue;
-				}
-				final IActionSetDescriptor d = WorkbenchPlugin.getDefault()
-						.getActionSetRegistry().findActionSet(actionSetID);
-				if (d != null) {
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-								public void runWithException() throws Throwable {
-									addAlwaysOn(d);
-								}
-							});
-					knownActionSetIds.add(d.getId());
-				}
-			}
-
-			// Add the visible set of action sets to our knownActionSetIds
-			// Now go through the registry to ensure we pick up any new action
-			// sets
-			// that have been added but not yet considered by this perspective.
-			ActionSetRegistry reg = WorkbenchPlugin.getDefault()
-					.getActionSetRegistry();
-			IActionSetDescriptor[] array = reg.getActionSets();
-			int count = array.length;
-			for (int i = 0; i < count; i++) {
-				IActionSetDescriptor desc = array[i];
-				if ((!knownActionSetIds.contains(desc.getId()))
-						&& (desc.isInitiallyVisible())) {
-					addActionSet(desc);
-				}
-			}
-		} finally {
-        	// restart context changes
-        	if (service != null) {
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-					public void runWithException() throws Throwable {
-						service.activateContext(ContextAuthority.SEND_EVENTS);
-					}
-				});
-			}
-        }
-
-        // Save presentation.
-        presentation = pres;
-
-        // Hide the editor area if needed. Need to wait for the
-        // presentation to be fully setup first.
-        Integer areaVisible = memento
-                .getInteger(IWorkbenchConstants.TAG_AREA_VISIBLE);
-        // Rather than hiding the editors now we must wait until after their
-		// controls
-        // are created. This ensures that if an editor is instantiated,
-		// createPartControl
-        // is also called. See bug 20166.
-        shouldHideEditorsOnActivate = (areaVisible != null && areaVisible
-                .intValue() == 0);
-
-        // Restore the trim state of the editor area
-        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-        boolean useNewMinMax = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
-        if (useNewMinMax) {
-		    Integer trimStateInt = memento.getInteger(IWorkbenchConstants.TAG_AREA_TRIM_STATE);
-		    if (trimStateInt != null) {
-		    	editorAreaState = trimStateInt.intValue() & 0x3; // low order two bits contain the state
-		    	editorAreaRestoreOnUnzoom = (trimStateInt.intValue() & 4) != 0;
-		    }
-        }
-        
-        // restore the fixed state
-        Integer isFixed = memento.getInteger(IWorkbenchConstants.TAG_FIXED);
-        fixed = (isFixed != null && isFixed.intValue() == 1);
-
-        return result;
-    }
-
-    /**
-     * Restores a fast view to its corrent presentation structure.
-     * This method is pubilc because the FastViewManager uses it to
-     * reconstruct it minimized stacks on startup.
-     * 
-     * @param fvMemento The mement containing the fast view info
-     * @param result The result status
-     * @return The reference to the restored view
-     */
-    public IViewReference restoreFastView(IMemento fvMemento, MultiStatus result) {
-        String viewID = fvMemento.getString(IWorkbenchConstants.TAG_ID);
-        String secondaryId = ViewFactory.extractSecondaryId(viewID);
-        if (secondaryId != null) {
-            viewID = ViewFactory.extractPrimaryId(viewID);
-        }
-
-        IViewReference viewRef = getViewFactory().getView(viewID, secondaryId);
-        if (viewRef == null) {
-            String key = ViewFactory.getKey(viewID, secondaryId);
-            WorkbenchPlugin
-                    .log("Could not create view: '" + key + "'."); //$NON-NLS-1$ //$NON-NLS-2$
-            result
-                    .add(new Status(
-                            IStatus.ERROR,
-                            PlatformUI.PLUGIN_ID,
-                            0,
-                            NLS.bind(WorkbenchMessages.Perspective_couldNotFind, key ),
-                            null));
-            return null;
-        }
-
-        // Restore fast view width ratio
-        Float ratio = fvMemento.getFloat(IWorkbenchConstants.TAG_RATIO);
-        if (ratio == null) {
-            Integer viewWidth = fvMemento
-                    .getInteger(IWorkbenchConstants.TAG_WIDTH);
-            if (viewWidth == null) {
-				ratio = new Float(IPageLayout.DEFAULT_FASTVIEW_RATIO);
-			} else {
-				ratio = new Float((float) viewWidth.intValue()
-                        / (float) getClientComposite().getSize().x);
-			}
-        }
-        ViewLayoutRec rec = getViewLayoutRec(viewRef, true);
-        rec.fastViewWidthRatio = ratio.floatValue();
-        
-        return viewRef;
-    }
-    
-    /**
-     * Returns the ActionSets read from perspectiveExtensions in the registry.  
-     */
-    protected ArrayList getPerspectiveExtensionActionSets() {
-        PerspectiveExtensionReader reader = new PerspectiveExtensionReader();
-        reader
-                .setIncludeOnlyTags(new String[] { IWorkbenchRegistryConstants.TAG_ACTION_SET });
-        PageLayout layout = new PageLayout();
-        reader.extendLayout(null, descriptor.getOriginalId(), layout);
-        return layout.getActionSets();
-    }
-
-    /**
-     * Returns the Show In... part ids read from the registry.  
-     */
-    protected ArrayList getShowInIdsFromRegistry() {
-        PerspectiveExtensionReader reader = new PerspectiveExtensionReader();
-        reader
-                .setIncludeOnlyTags(new String[] { IWorkbenchRegistryConstants.TAG_SHOW_IN_PART });
-        PageLayout layout = new PageLayout();
-        reader.extendLayout(null, descriptor.getOriginalId(), layout);
-        return layout.getShowInPartIds();
-    }
-
-    /**
-     * Save the layout.
-     */
-    public void saveDesc() {
-        saveDescAs(descriptor);
-    }
-
-    /**
-     * Save the layout.
-     */
-    public void saveDescAs(IPerspectiveDescriptor desc) {
-        PerspectiveDescriptor realDesc = (PerspectiveDescriptor) desc;
-        //get the layout from the registry	
-        PerspectiveRegistry perspRegistry = (PerspectiveRegistry) WorkbenchPlugin
-                .getDefault().getPerspectiveRegistry();
-        // Capture the layout state.	
-        XMLMemento memento = XMLMemento.createWriteRoot("perspective");//$NON-NLS-1$
-        IStatus status = saveState(memento, realDesc, false);
-        if (status.getSeverity() == IStatus.ERROR) {
-            ErrorDialog.openError((Shell) null, WorkbenchMessages.Perspective_problemSavingTitle, 
-                    WorkbenchMessages.Perspective_problemSavingMessage,
-                    status);
-            return;
-        }
-        //save it to the preference store
-        try {
-            perspRegistry.saveCustomPersp(realDesc, memento);
-            descriptor = realDesc;
-        } catch (IOException e) {
-            perspRegistry.deletePerspective(realDesc);
-            MessageDialog.openError((Shell) null, WorkbenchMessages.Perspective_problemSavingTitle, 
-                    WorkbenchMessages.Perspective_problemSavingMessage);
-        }
-    }
-
-    /**
-     * Save the layout.
-     */
-    public IStatus saveState(IMemento memento) {
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.Perspective_problemsSavingPerspective, null);
-
-        result.merge(saveState(memento, descriptor, true));
-
-        return result;
-    }
-
-    /**
-     * Save the layout.
-     */
-    private IStatus saveState(IMemento memento, PerspectiveDescriptor p,
-            boolean saveInnerViewState) {
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.Perspective_problemsSavingPerspective, null); 
-
-        if (this.memento != null) {
-            memento.putMemento(this.memento);
-            return result;
-        }
-
-        // Save the version number.
-        memento.putString(IWorkbenchConstants.TAG_VERSION, VERSION_STRING);
-        result.add(p.saveState(memento));
-        if (!saveInnerViewState) {
-            Rectangle bounds = page.getWorkbenchWindow().getShell().getBounds();
-            IMemento boundsMem = memento
-                    .createChild(IWorkbenchConstants.TAG_WINDOW);
-            boundsMem.putInteger(IWorkbenchConstants.TAG_X, bounds.x);
-            boundsMem.putInteger(IWorkbenchConstants.TAG_Y, bounds.y);
-            boundsMem.putInteger(IWorkbenchConstants.TAG_HEIGHT, bounds.height);
-            boundsMem.putInteger(IWorkbenchConstants.TAG_WIDTH, bounds.width);
-        }
-
-
-        // Save the "always on" action sets.
-        Iterator itr = alwaysOnActionSets.iterator();
-        while (itr.hasNext()) {
-            IActionSetDescriptor desc = (IActionSetDescriptor) itr.next();
-            IMemento child = memento
-                    .createChild(IWorkbenchConstants.TAG_ALWAYS_ON_ACTION_SET);
-            child.putString(IWorkbenchConstants.TAG_ID, desc.getId());
-        }
-
-        // Save the "always off" action sets.
-        itr = alwaysOffActionSets.iterator();
-        while (itr.hasNext()) {
-            IActionSetDescriptor desc = (IActionSetDescriptor) itr.next();
-            IMemento child = memento
-                    .createChild(IWorkbenchConstants.TAG_ALWAYS_OFF_ACTION_SET);
-            child.putString(IWorkbenchConstants.TAG_ID, desc.getId());
-        }
-
-        // Save "show view actions"
-        itr = showViewShortcuts.iterator();
-        while (itr.hasNext()) {
-            String str = (String) itr.next();
-            IMemento child = memento
-                    .createChild(IWorkbenchConstants.TAG_SHOW_VIEW_ACTION);
-            child.putString(IWorkbenchConstants.TAG_ID, str);
-        }
-
-        // Save "show in times"
-        itr = showInTimes.keySet().iterator();
-        while (itr.hasNext()) {
-            String id = (String) itr.next();
-            Long time = (Long) showInTimes.get(id);
-            IMemento child = memento
-                    .createChild(IWorkbenchConstants.TAG_SHOW_IN_TIME);
-            child.putString(IWorkbenchConstants.TAG_ID, id);
-            child.putString(IWorkbenchConstants.TAG_TIME, time.toString());
-        }
-
-        // Save "new wizard actions".
-        itr = newWizardShortcuts.iterator();
-        while (itr.hasNext()) {
-            String str = (String) itr.next();
-            IMemento child = memento
-                    .createChild(IWorkbenchConstants.TAG_NEW_WIZARD_ACTION);
-            child.putString(IWorkbenchConstants.TAG_ID, str);
-        }
-
-        // Save "perspective actions".
-        itr = perspectiveShortcuts.iterator();
-        while (itr.hasNext()) {
-            String str = (String) itr.next();
-            IMemento child = memento
-                    .createChild(IWorkbenchConstants.TAG_PERSPECTIVE_ACTION);
-            child.putString(IWorkbenchConstants.TAG_ID, str);
-        }
-
-        // Get visible views.
-        List viewPanes = new ArrayList(5);
-        presentation.collectViewPanes(viewPanes);
-
-        // Save the views.
-        itr = viewPanes.iterator();
-        int errors = 0;
-        while (itr.hasNext()) {
-            ViewPane pane = (ViewPane) itr.next();
-            IViewReference ref = pane.getViewReference();
-            boolean restorable = page.getViewFactory().getViewRegistry().find(
-					ref.getId()).isRestorable();
-			if(restorable) {
-	            IMemento viewMemento = memento
-	                    .createChild(IWorkbenchConstants.TAG_VIEW);
-	            viewMemento.putString(IWorkbenchConstants.TAG_ID, ViewFactory
-	                    .getKey(ref));
-			}
-        }
-
-        // save all fastview state
-        if (fastViewManager != null)
-        	fastViewManager.saveState(memento);
-    	
-        // Save the view layout recs.
-        for (Iterator i = mapIDtoViewLayoutRec.keySet().iterator(); i.hasNext();) {
-            String compoundId = (String) i.next();
-            ViewLayoutRec rec = (ViewLayoutRec) mapIDtoViewLayoutRec
-                    .get(compoundId);
-            if (rec != null
-                    && (!rec.isCloseable || !rec.isMoveable || rec.isStandalone)) {
-                IMemento layoutMemento = memento
-                        .createChild(IWorkbenchConstants.TAG_VIEW_LAYOUT_REC);
-                layoutMemento.putString(IWorkbenchConstants.TAG_ID, compoundId);
-                if (!rec.isCloseable) {
-                    layoutMemento.putString(IWorkbenchConstants.TAG_CLOSEABLE,
-                            IWorkbenchConstants.FALSE);
-                }
-                if (!rec.isMoveable) {
-                    layoutMemento.putString(IWorkbenchConstants.TAG_MOVEABLE,
-                            IWorkbenchConstants.FALSE);
-                }
-                if (rec.isStandalone) {
-                    layoutMemento.putString(IWorkbenchConstants.TAG_STANDALONE,
-                            IWorkbenchConstants.TRUE);
-                    layoutMemento.putString(IWorkbenchConstants.TAG_SHOW_TITLE,
-                            String.valueOf(rec.showTitle));
-                }
-            }
-        }
-
-        if (errors > 0) {
-            String message = WorkbenchMessages.Perspective_multipleErrors;
-            if (errors == 1) {
-				message = WorkbenchMessages.Perspective_oneError;
-			}
-            MessageDialog.openError(null,
-                    WorkbenchMessages.Error, message); 
-        }
-
-        // Save the layout.
-        IMemento childMem = memento.createChild(IWorkbenchConstants.TAG_LAYOUT);
-        result.add(presentation.saveState(childMem));
-
-        // Save the editor visibility state
-        if (isEditorAreaVisible()) {
-			memento.putInteger(IWorkbenchConstants.TAG_AREA_VISIBLE, 1);
-		} else {
-			memento.putInteger(IWorkbenchConstants.TAG_AREA_VISIBLE, 0);
-		}
-
-        // Save the trim state of the editor area if using the new min/max
-        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-        boolean useNewMinMax = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
-        if (useNewMinMax) {
-	        int trimState = editorAreaState;
-	        trimState |= editorAreaRestoreOnUnzoom ? 4 : 0;
-	        memento.putInteger(IWorkbenchConstants.TAG_AREA_TRIM_STATE, trimState);
-        }
-        
-        // Save the fixed state
-        if (fixed) {
-			memento.putInteger(IWorkbenchConstants.TAG_FIXED, 1);
-		} else {
-			memento.putInteger(IWorkbenchConstants.TAG_FIXED, 0);
-		}
-
-        return result;
-    }
-    
-    public void turnOnActionSets(IActionSetDescriptor[] newArray) {
-        for (int i = 0; i < newArray.length; i++) {
-            IActionSetDescriptor descriptor = newArray[i];
-            
-            addAlwaysOn(descriptor);
-        }
-    }
-    
-    public void turnOffActionSets(IActionSetDescriptor[] toDisable) {
-        for (int i = 0; i < toDisable.length; i++) {
-            IActionSetDescriptor descriptor = toDisable[i];
-            
-            turnOffActionSet(descriptor);
-        }
-    }
-
-    public void turnOffActionSet(IActionSetDescriptor toDisable) {
-        addAlwaysOff(toDisable);
-    }
-    
-    /**
-     * Return the active fast view or null if there are no
-     * fast views or if there are all minimized.
-     */
-    public IViewReference getActiveFastView() {
-        return activeFastView;
-    }
-
-    /**
-     * Sets the active fast view. If a different fast view is already open,
-     * it shrinks equally <code>steps</code> times before disappearing
-     * completely. Then, <code>view</code> becomes active and is shown.
-     */
-    /*package*/void setActiveFastView(IViewReference ref, int steps) {
-        if (activeFastView == ref) {
-			return;
-		}
-
-        if (activeFastView != null) {
-            ViewPane pane = getPane(activeFastView);
-            if (pane != null) {
-                if (pane.isZoomed()) {
-                    presentation.zoomOut();
-                }
-                hideFastView(activeFastView, steps);
-            }
-        }
-        activeFastView = ref;
-        try {
-            if (activeFastView != null) {
-                if (!showFastView(activeFastView)) {
-                    activeFastView = null;
-                }
-            }
-        } catch (RuntimeException e) {
-            activeFastView = null;
-        }
-    }
-
-    /**
-     * Sets the active fast view.
-     */
-    /*package*/void setActiveFastView(IViewReference ref) {
-        setActiveFastView(ref, FASTVIEW_HIDE_STEPS);
-    }
-
-    /**
-     * Sets the visibility of all fast view pins.
-     */
-    protected void setAllPinsVisible(boolean visible) {
-    	if (fastViewManager == null)
-    		return;
-    	
-        Iterator iter = fastViewManager.getFastViews(null).iterator();
-        while (iter.hasNext()) {
-            ViewPane pane = getPane((IViewReference) iter.next());
-            if (pane != null) {
-				pane.setFast(visible);
-			}
-        }
-    }
-
-    /**
-     * Sets the selection for the shortcut bar icon representing the givevn fast view.
-     */
-    private void setFastViewIconSelection(IViewReference ref, boolean selected) {
-    	if (fastViewManager == null)
-    		return;
-    	
-		fastViewManager.setFastViewIconSelection(ref, selected);
-    }
-
-    /**
-     * Sets the new wizard actions for the page.
-     * This is List of Strings.
-     */
-    public void setNewWizardActionIds(ArrayList newList) {
-        newWizardShortcuts = newList;
-    }
-
-    /**
-     * Sets the perspective actions for this page.
-     * This is List of Strings.
-     */
-    public void setPerspectiveActionIds(ArrayList list) {
-        perspectiveShortcuts = list;
-    }
-
-    /**
-     * Sets the ids of the parts to list in the Show In... prompter.
-     * This is a List of Strings.
-     */
-    public void setShowInPartIds(ArrayList list) {
-        showInPartIds = list;
-    }
-
-    /**
-     * Sets the ids of the views to list in the Show View shortcuts.
-     * This is a List of Strings.
-     */
-    public void setShowViewActionIds(ArrayList list) {
-        showViewShortcuts = list;
-    }
-
-
-    /**
-     * Show the editor area if not visible
-     */
-    protected void showEditorArea() {
-        if (isEditorAreaVisible()) {
-			return;
-		}
-
-        editorHidden = false;
-        
-        // Show the editor in the appropriate location
-        if (useNewMinMax(this)) {
-        	boolean isMinimized = editorAreaState == IStackPresentationSite.STATE_MINIMIZED;
-        	if (!isMinimized) {
-        		// If the editor area is going to show then we have to restore
-            	if (getPresentation().getMaximizedStack() != null)
-            		getPresentation().getMaximizedStack().setState(IStackPresentationSite.STATE_RESTORED);
-            	
-        		showEditorAreaLocal();
-        	}
-        	else
-        		setEditorAreaTrimVisibility(true);
-        }
-        else {
-        	showEditorAreaLocal();
-        }
-    }
-
-    /**
-     * Show the editor area if not visible
-     */
-    protected void showEditorAreaLocal() {
-        if (editorHolder == null || editorHidden) {
-			return;
-		}
-
-        // Replace the part holder with the editor area.
-        presentation.getLayout().replace(editorHolder, editorArea);
-        editorHolder = null;
-    }
-
-    private EditorAreaTrimToolBar getEditorAreaTrim(boolean createIfNecessary) {
-		WorkbenchWindow wbw = (WorkbenchWindow) page.getWorkbenchWindow();
-		ITrimManager tbm = wbw.getTrimManager();
-		if (tbm == null)
-			return null;
-
-		// Create if necesary
-		EditorAreaTrimToolBar editorAreaTrim = (EditorAreaTrimToolBar) tbm.getTrim(IPageLayout.ID_EDITOR_AREA);
-    	if (editorAreaTrim  == null && createIfNecessary) {
-    		int suggestedSide = SWT.RIGHT;
-			int cachedSide = ((TrimLayout)tbm).getPreferredArea(IPageLayout.ID_EDITOR_AREA);
-			if (cachedSide != -1)
-				suggestedSide = cachedSide;
-			
-			IWindowTrim beforeMe = ((TrimLayout)tbm).getPreferredLocation(IPageLayout.ID_EDITOR_AREA);
-			
-    		// Gain access to the trim manager
-			editorAreaTrim = new EditorAreaTrimToolBar(wbw, editorArea);
-			editorAreaTrim.dock(suggestedSide);
-			tbm.addTrim(suggestedSide, editorAreaTrim, beforeMe);
-    	}
-		
-		return editorAreaTrim;
-    }
-    
-    public void setEditorAreaState(int newState) {
-    	if (newState == editorAreaState)
-    		return;
-    	
-    	editorAreaState = newState;
-    	
-    	// reset the restore flag if we're not minimized
-    	if (newState != IStackPresentationSite.STATE_MINIMIZED)
-    		editorAreaRestoreOnUnzoom = false;
-    	
-    	refreshEditorAreaVisibility();
-    }
-    
-    public int getEditorAreaState() {
-    	return editorAreaState;
-    }
-    
-    /**
-	 * 
-	 */
-	public void refreshEditorAreaVisibility() {
-		// Nothing shows up if the editor area isn't visible at all
-		if (editorHidden) {
-			hideEditorAreaLocal();
-			setEditorAreaTrimVisibility(false);
-			return;
-		}
-		
-		EditorStack editorStack = ((EditorSashContainer) editorArea).getUpperRightEditorStack(null);
-		if (editorStack == null)
-			return;
-		
-		// Whatever we're doing, make the current editor stack match it
-		editorStack.setStateLocal(editorAreaState);
-		
-		// If it's minimized then it's in the trim
-		if (editorAreaState == IStackPresentationSite.STATE_MINIMIZED) {
-			// Hide the editor area and show its trim 
-			hideEditorAreaLocal();
-			setEditorAreaTrimVisibility(true);
-		}
-		else {
-			// Show the editor area and hide its trim 
-			setEditorAreaTrimVisibility(false);
-			showEditorAreaLocal();
-			
-			if (editorAreaState == IStackPresentationSite.STATE_MAXIMIZED)
-				getPresentation().setMaximizedStack(editorStack);
-		}
-	}
-
-	protected EditorAreaTrimToolBar setEditorAreaTrimVisibility(boolean visible) {
-		WorkbenchWindow wbw = (WorkbenchWindow) page.getWorkbenchWindow();
-		ITrimManager tbm = wbw.getTrimManager();
-		if (tbm == null)
-			return null;
-		
-		// Only create the trim element if it's going to be visible
-		EditorAreaTrimToolBar editorAreaTrim = getEditorAreaTrim(visible);
-		if (editorAreaTrim == null)
-			return null;
-		
-    	tbm.setTrimVisible(editorAreaTrim, visible);
-    	tbm.forceLayout();
-    	
-    	return editorAreaTrim;
-    }
-    
-    /**
-     * Shows a fast view.
-     * @return whether the view was successfully shown
-     */
-    boolean showFastView(IViewReference ref) {
-    	if (fastViewManager == null)
-    		return false;
-    	
-        // Make sure the part is restored.
-    	IWorkbenchPart refPart = ref.getPart(true);
-        if (refPart == null) {
-			return false;
-		}
-
-        ViewPane pane = getPane(ref);
-        if (pane == null) {
-			return false;
-		}
-
-        saveFastViewWidthRatio();
-
-        // Special check to ensure that a 'minimized' intro view shows
-        // as 'standby'
-        if (ref.getId().equals("org.eclipse.ui.internal.introview")) { //$NON-NLS-1$
-        	if (refPart instanceof ViewIntroAdapterPart) {
-	        	((ViewIntroAdapterPart)refPart).setStandby(true);
-        	}
-        }
-        
-		// Determine the display orientation
-		int side = fastViewManager.getViewSide(ref);
-        fastViewPane.showView(getClientComposite(), pane, side,
-                getFastViewWidthRatio(ref)); 
-
-        setFastViewIconSelection(ref, true);
-
-        return true;
-    }
-
-    private void saveFastViewWidthRatio() {
-        ViewPane pane = fastViewPane.getCurrentPane();
-        if (pane != null) {
-            ViewLayoutRec rec = getViewLayoutRec(pane.getViewReference(), true);
-            rec.fastViewWidthRatio = fastViewPane.getCurrentRatio();
-        }
-    }
-
-    /**
-     * Resolves a view's id into its reference, creating the
-     * view if necessary.
-     * 
-     * @param viewId The primary id of the view (must not be
-     * <code>null</code>
-     * @param secondaryId The secondary id of a multiple-instance view
-     * (may be <code>null</code>).
-     * 
-     * @return The reference to the specified view. This may be null if the
-     * view fails to create (i.e. thrown a PartInitException)
-     */
-    public IViewReference getViewReference(String viewId, String secondaryId) {
-    	IViewReference ref = page.findViewReference(viewId, secondaryId);
-    	if (ref == null) {
-            ViewFactory factory = getViewFactory();
-            try {
-				ref = factory.createView(viewId, secondaryId);
-			} catch (PartInitException e) {
-				IStatus status = StatusUtil.newStatus(IStatus.ERROR,
-                        e.getMessage() == null ? "" : e.getMessage(), //$NON-NLS-1$
-                        e);
-	            StatusUtil.handleStatus(status, "Failed to create view: id=" + viewId, //$NON-NLS-1$
-	            		StatusManager.LOG);
-			}
-    	}
-    	return ref;
-    }
-    
-    /**
-     * Shows the view with the given id and secondary id.
-     */
-    public IViewPart showView(String viewId, String secondaryId)
-            throws PartInitException {
-        ViewFactory factory = getViewFactory();
-        IViewReference ref = factory.createView(viewId, secondaryId);
-        IViewPart part = (IViewPart) ref.getPart(true);
-        if (part == null) {
-            throw new PartInitException(NLS.bind(WorkbenchMessages.ViewFactory_couldNotCreate, ref.getId()));
-        }
-        ViewSite site = (ViewSite) part.getSite();
-        ViewPane pane = (ViewPane) site.getPane();
-
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        int openViewMode = store.getInt(IPreferenceConstants.OPEN_VIEW_MODE);
-
-        if (openViewMode == IPreferenceConstants.OVM_FAST &&
-        	fastViewManager != null) {
-        	fastViewManager.addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, ref, true);
-            setActiveFastView(ref);
-        } else if (openViewMode == IPreferenceConstants.OVM_FLOAT
-                && presentation.canDetach()) {
-            presentation.addDetachedPart(pane);
-        } else {
-        	if (useNewMinMax(this)) {
-            	// Is this view going to show in the trim?
-            	LayoutPart vPart = presentation.findPart(viewId, secondaryId);
-
-            	// Determine if there is a trim stack that should get the view
-            	String trimId = null;
-            	
-            	// If we can locate the correct trim stack then do so
-            	if (vPart != null) {
-            		String id = null;
-            		ILayoutContainer container = vPart.getContainer();
-            		if (container instanceof ContainerPlaceholder)
-            			id = ((ContainerPlaceholder)container).getID();
-            		else if (container instanceof ViewStack)
-            			id = ((ViewStack)container).getID();
-            		
-            		// Is this place-holder in the trim?
-                    if (id != null && fastViewManager.getFastViews(id).size() > 0) {
-                    	trimId = id;
-                    }
-            	}
-            	
-            	// No explicit trim found; If we're maximized then we either have to find an
-            	// arbitrary stack...
-            	if (trimId == null && presentation.getMaximizedStack() != null) {
-            		if (vPart == null) {
-            			ViewStackTrimToolBar blTrimStack = fastViewManager.getBottomRightTrimStack();
-            			if (blTrimStack != null) {
-            				// OK, we've found a trim stack to add it to...
-            				trimId = blTrimStack.getId();
-            				
-            				// Since there was no placeholder we have to add one
-            				LayoutPart blPart = presentation.findPart(trimId, null);
-            				if (blPart instanceof ContainerPlaceholder) {
-            					ContainerPlaceholder cph = (ContainerPlaceholder) blPart;
-            					if (cph.getRealContainer() instanceof ViewStack) {
-            						ViewStack vs = (ViewStack) cph.getRealContainer();
-            						
-            						// Create a 'compound' id if this is a multi-instance part
-            						String compoundId = ref.getId();
-            						if (ref.getSecondaryId() != null)
-            							compoundId = compoundId + ':' + ref.getSecondaryId();
-
-            						// Add the new placeholder
-            						vs.add(new PartPlaceholder(compoundId));
-            					}
-            				}
-            			}
-            		}
-            	}
-            	
-            	// If we have a trim stack located then add the view to it
-            	if (trimId != null) {
-                	fastViewManager.addViewReference(trimId, -1, ref, true);
-            	}
-            	else {
-            		boolean inMaximizedStack = vPart != null && vPart.getContainer() == presentation.getMaximizedStack();
-
-            		// Do the default behavior
-            		presentation.addPart(pane);
-            		
-            		// Now, if we're maximized then we have to minimize the new stack
-            		if (presentation.getMaximizedStack() != null && !inMaximizedStack) {
-            			vPart = presentation.findPart(viewId, secondaryId);
-            			if (vPart != null && vPart.getContainer() instanceof ViewStack) {
-            				ViewStack vs = (ViewStack)vPart.getContainer();
-            				vs.setState(IStackPresentationSite.STATE_MINIMIZED);
-            				
-            				// setting the state to minimized will create the trim toolbar
-            				// so we don't need a null pointer check here...
-            				fastViewManager.getViewStackTrimToolbar(vs.getID()).setRestoreOnUnzoom(true);
-            			}
-            		}
-            	}
-        	}
-        	else {
-        		presentation.addPart(pane);
-        	}
-        }
-        
-        // Ensure that the newly showing part is enabled
-        if (pane != null && pane.getControl() != null)
-        	pane.getControl().setEnabled(true);
-        
-        return part;
-    }
-
-    /**
-     * Toggles the visibility of a fast view.  If the view is active it
-     * is deactivated.  Otherwise, it is activated.
-     */
-    public void toggleFastView(IViewReference ref) {
-        if (ref == activeFastView) {
-            setActiveFastView(null);
-        } else {
-            setActiveFastView(ref);
-        }
-    }
-
-    /**
-     * Returns the old part reference.
-     * Returns null if there was no previously active part.
-     * 
-     * @return the old part reference or <code>null</code>
-     */
-    public IWorkbenchPartReference getOldPartRef() {
-        return oldPartRef;
-    }
-
-    /**
-     * Sets the old part reference.
-     * 
-     * @param oldPartRef The old part reference to set, or <code>null</code>
-     */
-    public void setOldPartRef(IWorkbenchPartReference oldPartRef) {
-        this.oldPartRef = oldPartRef;
-    }
-
-    //for dynamic UI
-    protected void addActionSet(IActionSetDescriptor newDesc) {
-    	IContextService service = (IContextService)page.getWorkbenchWindow().getService(IContextService.class);
-    	try {
-			service.activateContext(ContextAuthority.DEFER_EVENTS);
-			for (int i = 0; i < alwaysOnActionSets.size(); i++) {
-				IActionSetDescriptor desc = (IActionSetDescriptor) alwaysOnActionSets
-						.get(i);
-				if (desc.getId().equals(newDesc.getId())) {
-					removeAlwaysOn(desc);
-					removeAlwaysOff(desc);
-					break;
-				}
-			}
-			addAlwaysOn(newDesc);
-		} finally {
-    		service.activateContext(ContextAuthority.SEND_EVENTS);
-    	}
-    }
-
-    // for dynamic UI
-    /* package */void removeActionSet(String id) {
-    	IContextService service = (IContextService)page.getWorkbenchWindow().getService(IContextService.class);
-    	try {
-			service.activateContext(ContextAuthority.DEFER_EVENTS);
-			for (int i = 0; i < alwaysOnActionSets.size(); i++) {
-				IActionSetDescriptor desc = (IActionSetDescriptor) alwaysOnActionSets
-						.get(i);
-				if (desc.getId().equals(id)) {
-					removeAlwaysOn(desc);
-					break;
-				}
-			}
-
-			for (int i = 0; i < alwaysOffActionSets.size(); i++) {
-				IActionSetDescriptor desc = (IActionSetDescriptor) alwaysOffActionSets
-						.get(i);
-				if (desc.getId().equals(id)) {
-					removeAlwaysOff(desc);
-					break;
-				}
-			}
-		} finally {
-    		service.activateContext(ContextAuthority.SEND_EVENTS);
-    	}
-    }
-    
-    void removeActionSet(IActionSetDescriptor toRemove) {
-        removeAlwaysOn(toRemove);
-        removeAlwaysOff(toRemove);
-    }
-
-    public void setFastViewState(int newState) {
-        fastViewPane.setState(newState);
-    }
-    
-    public int getFastViewState() {
-    	return fastViewPane.getState();
-    }
-
-    /**
-     * Returns whether the given view is closeable in this perspective.
-     * 
-     * @since 3.0
-     */
-    public boolean isCloseable(IViewReference reference) {
-        ViewLayoutRec rec = getViewLayoutRec(reference, false);
-        if (rec != null) {
-			return rec.isCloseable;
-		}
-        return true;
-    }
-
-    /**
-     * Returns whether the given view is moveable in this perspective.
-     * 
-     * @since 3.0
-     */
-    public boolean isMoveable(IViewReference reference) {
-        ViewLayoutRec rec = getViewLayoutRec(reference, false);
-        if (rec != null) {
-			return rec.isMoveable;
-		}
-        return true;
-    }
-
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they should not be translated or equality tests will fail.
-     * <p>
-     * This is only intended for use by test suites.
-     * </p>
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-        IViewReference[] fastViews = getFastViews();
-
-        if (fastViews.length != 0) {
-            buf.append("fastviews ("); //$NON-NLS-1$
-            for (int idx = 0; idx < fastViews.length; idx++) {
-                IViewReference ref = fastViews[idx];
-
-                if (idx > 0) {
-                    buf.append(", "); //$NON-NLS-1$
-                }
-
-                buf.append(ref.getPartName());
-            }
-            buf.append("), "); //$NON-NLS-1$
-        }
-
-        getPresentation().describeLayout(buf);
-    }
-
-    /**
-     * Sanity-checks the LayoutParts in this perspective. Throws an Assertation exception
-     * if an object's internal state is invalid.
-     */
-    public void testInvariants() {        
-        getPresentation().getLayout().testInvariants();
-    }
-
-    public IActionSetDescriptor[] getAlwaysOnActionSets() {
-        return (IActionSetDescriptor[]) alwaysOnActionSets.toArray(new IActionSetDescriptor[alwaysOnActionSets.size()]);
-    }
-    
-    public IActionSetDescriptor[] getAlwaysOffActionSets() {
-        return (IActionSetDescriptor[]) alwaysOffActionSets.toArray(new IActionSetDescriptor[alwaysOffActionSets.size()]);
-    }
-
-	/* package */ FastViewPane getFastViewPane() {
-		return fastViewPane;
-	}
-
-
-	/**
-	 * Restores a part in the trim to the actual layout
-	 * @param part The part to restore
-	 */
-	public void restoreTrimPart(LayoutPart part) {
-		if (fastViewManager == null)
-			return;
-		
-		// Remove any current fastview
-		setActiveFastView(null);
-
-		// Set the part's state to place it back in the layout
-		if (part instanceof ViewStack) {
-			ViewStack vs = (ViewStack) part;
-			fastViewManager.restoreToPresentation(vs.getID());
-		}
-
-		if (part == editorArea) {
-			setEditorAreaState(IStackPresentationSite.STATE_RESTORED);
-			editorAreaRestoreOnUnzoom = false;
-		}
-	}
-
-	/**
-	 * Determine the correct side to initially dock a new
-	 * trim part on. We do this by checking its rect against
-	 * the editor area.
-	 * 
-	 * @param stackBounds The bounds of the stack we want to create trim for
-	 * @return the SWT side to dock the trim element on
-	 */
-	public int calcStackSide(Rectangle stackBounds) {
-		// Where is the stack in relation to the EditorArea?
-		Rectangle editorAreaBounds = editorArea.getBounds();
-		
-		// Is this the Editor Area
-		if (editorAreaBounds.equals(stackBounds))
-			return SWT.TOP;
-		
-		Point stackCenter = Geometry.centerPoint(stackBounds);
-		Point editorAreaCenter = Geometry.centerPoint(editorAreaBounds);
-
-		int dx = editorAreaCenter.x - stackCenter.x;
-		int dy = editorAreaCenter.y - stackCenter.y;
-
-		if (Math.abs(dx) > Math.abs(dy)) {
-			return (dx > 0) ? SWT.LEFT : SWT.RIGHT;
-		}
-
-		if (dy > 0) {
-			return (dx > 0) ? SWT.LEFT : SWT.RIGHT;
-		}
-		
-		return SWT.BOTTOM;
-	}
-
-	/**
-	 * Restore any parts that are showing in the trim as
-	 * a result of a 'zoom' operation
-	 */
-	public void restoreZoomedParts() {
-		if (fastViewManager == null)
-			return;
-		
-		// Remove any current fastview
-		setActiveFastView(null);
-			
-		// have the layout restore the parts
-		fastViewManager.restoreZoomedViewStacks();
-		
-		if (editorAreaRestoreOnUnzoom) {
-			restoreTrimPart(editorArea);
-		}
-	}
-
-	/**
-	 * @return Returns the fastViewManager.
-	 */
-	public FastViewManager getFastViewManager() {
-		return fastViewManager;
-	}
-
-	/**
-	 * Sets the restore on unzoom state for the editor area
-	 * @param restore the new state
-	 */
-	public void setEditorAreaRestoreOnUnzoom(boolean restore) {
-		editorAreaRestoreOnUnzoom = restore;
-	}
-
-	/**
-	 * @return the restore on unzoom state
-	 */
-	public boolean getEditorAreaRestoreOnUnzoom() {
-		return editorAreaRestoreOnUnzoom;
-	}
-
-	/**
-	 * Used to restrict the use of the new min/max behavior to envoronments
-	 * in which it has a chance of working...
-	 * 
-	 * @param activePerspective We pass this in as an arg so others won't have
-	 * to check it for 'null' (which is one of the failure cases)
-	 * 
-	 */
-	public static boolean useNewMinMax(Perspective activePerspective) {
-		// We need to have an active perspective
-		if (activePerspective == null)
-			return false;
-		
-		// We need to have a trim manager (if we don't then we
-		// don't create a FastViewManager because it'd be useless)
-		if (activePerspective.getFastViewManager() == null)
-			return false;
-		
-		// Make sure we don't NPE anyplace
-        WorkbenchWindow wbw = (WorkbenchWindow) activePerspective.page.getWorkbenchWindow();
-        if (wbw == null)
-        	return false;
-        
-        WorkbenchWindowConfigurer configurer = wbw.getWindowConfigurer();
-        if (configurer == null)
-        	return false;
-        
-        AbstractPresentationFactory factory = configurer.getPresentationFactory();
-        if (factory == null)
-        	return false;
-        
-		// Ok, we should be good to go, return the pref
-	    IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-        boolean useNewMinMax = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
-        return useNewMinMax;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveAction.java
deleted file mode 100644
index 007d33a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveAction.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-
-/**
- * Abstract superclass of actions which are enabled iff there is an active perspective 
- * in the window.
- * 
- * @since 3.1
- */
-public abstract class PerspectiveAction extends Action implements ActionFactory.IWorkbenchAction {
-    
-    /**
-     * The workbench window containing this action.
-     */
-    private IWorkbenchWindow workbenchWindow;
-    
-    /**
-     * Tracks perspective activation, to update this action's
-     * enabled state.
-     */
-    private PerspectiveTracker tracker;
-
-    /**
-     * Constructs a new perspective action for the given window.
-     * 
-     * @param window the window
-     */
-    protected PerspectiveAction(IWorkbenchWindow window) {
-        Assert.isNotNull(window);
-        this.workbenchWindow = window;
-        tracker = new PerspectiveTracker(window, this);
-    }
-    
-    /**
-     * Returns the window, or <code>null</code> if the action has been disposed.
-     *  
-     * @return the window or <code>null</code>
-     */
-    protected IWorkbenchWindow getWindow() {
-        return workbenchWindow;
-    }
-    
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        IWorkbenchPage page = workbenchWindow.getActivePage();
-        if (page != null && page.getPerspective() != null) {
-            run(page, page.getPerspective());
-        }
-    }
-    
-    /**
-     * Runs the action, passing the active page and perspective.
-     * 
-     * @param page the active page
-     * @param persp the active perspective
-     */
-    protected abstract void run(IWorkbenchPage page, IPerspectiveDescriptor persp);
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     */
-    public void dispose() {
-        if (workbenchWindow == null) {
-            // already disposed
-            return;
-        }
-        tracker.dispose();
-        workbenchWindow = null;
-    }
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarContributionItem.java
deleted file mode 100644
index 951c55f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarContributionItem.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * A  {@link ContributionItem} specifically for contributions to the perspective switcher.
- *
- */
-public class PerspectiveBarContributionItem extends ContributionItem {
-
-    private IPerspectiveDescriptor perspective;
-
-    private IPreferenceStore apiPreferenceStore = PrefUtil
-            .getAPIPreferenceStore();
-
-    private ToolItem toolItem = null;
-
-    private Image image;
-
-    private IWorkbenchPage workbenchPage;
-
-    /**
-     * Create a new perspective contribution item
-     * 
-     * @param perspective the descriptor for the perspective
-     * @param workbenchPage the page that this perspective is in
-     */
-    public PerspectiveBarContributionItem(IPerspectiveDescriptor perspective,
-            IWorkbenchPage workbenchPage) {
-        super(perspective.getId());
-        this.perspective = perspective;
-        this.workbenchPage = workbenchPage;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionItem#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        if (image != null && !image.isDisposed()) {
-            image.dispose();
-            image = null;
-        }
-        apiPreferenceStore = null;
-        workbenchPage = null;
-        perspective = null;
-
-    }
-
-    public void fill(ToolBar parent, int index) {
-        if (toolItem == null && parent != null && !parent.isDisposed()) {
-
-            if (index >= 0) {
-				toolItem = new ToolItem(parent, SWT.CHECK, index);
-			} else {
-				toolItem = new ToolItem(parent, SWT.CHECK);
-			}
-
-            if (image == null || image.isDisposed()) {
-                createImage();
-            }
-            toolItem.setImage(image);
-
-            toolItem.setToolTipText(NLS.bind(WorkbenchMessages.PerspectiveBarContributionItem_toolTip, perspective.getLabel()));
-            toolItem.addSelectionListener(new SelectionAdapter() {
-
-                public void widgetSelected(SelectionEvent event) {
-                    select();
-                }
-            });
-            toolItem.setData(this); //TODO review need for this
-            update();
-        }
-    }
-
-    private void createImage() {
-        ImageDescriptor imageDescriptor = perspective.getImageDescriptor();
-        if (imageDescriptor != null) {
-            image = imageDescriptor.createImage();
-        } else {
-            image = WorkbenchImages.getImageDescriptor(
-                    ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE)
-                    .createImage();
-        }
-    }
-
-    Image getImage() {
-        if (image == null) {
-            createImage();
-        }
-        return image;
-    }
-
-    /**
-     * Select this perspective
-     */
-    public void select() {
-        if (workbenchPage.getPerspective() != perspective) {
-            workbenchPage.setPerspective(perspective);
-        } else {
-			toolItem.setSelection(true);
-		}
-    }
-
-    public void update() {
-        if (toolItem != null && !toolItem.isDisposed()) {
-            toolItem
-                    .setSelection(workbenchPage.getPerspective() == perspective);
-            if (apiPreferenceStore
-                    .getBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR)) {
-                if (apiPreferenceStore.getString(
-                        IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR)
-                        .equals(IWorkbenchPreferenceConstants.TOP_LEFT)) {
-					toolItem.setText(perspective.getLabel());
-				} else {
-					toolItem.setText(shortenText(perspective.getLabel(),
-                            toolItem));
-				}
-            } else {
-                toolItem.setText(""); //$NON-NLS-1$
-            }
-        }
-    }
-
-    /**
-     * Update this item with a new perspective descriptor
-     * @param newDesc
-     */
-    public void update(IPerspectiveDescriptor newDesc) {
-        perspective = newDesc;
-        if (toolItem != null && !toolItem.isDisposed()) {
-            ImageDescriptor imageDescriptor = perspective.getImageDescriptor();
-            if (imageDescriptor != null) {
-                toolItem.setImage(imageDescriptor.createImage());
-            } else {
-                toolItem.setImage(WorkbenchImages.getImageDescriptor(
-                        ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE)
-                        .createImage());
-            }
-            toolItem.setToolTipText(NLS.bind(WorkbenchMessages.PerspectiveBarContributionItem_toolTip, perspective.getLabel() ));
-        }
-        update();
-    }
-
-    IWorkbenchPage getPage() {
-        return workbenchPage;
-    }
-
-    IPerspectiveDescriptor getPerspective() {
-        return perspective;
-    }
-
-    ToolItem getToolItem() {
-        return toolItem;
-    }
-
-    /**
-     * Answer whether the receiver is a match for the provided 
-     * perspective descriptor
-     * 
-     * @param perspective the perspective descriptor
-     * @param workbenchPage the page
-     * @return <code>true</code> if it is a match
-     */
-    public boolean handles(IPerspectiveDescriptor perspective,
-            IWorkbenchPage workbenchPage) {
-        return this.perspective == perspective
-                && this.workbenchPage == workbenchPage;
-    }
-
-    /**
-     * Set the current perspective
-     * @param newPerspective
-     */
-    public void setPerspective(IPerspectiveDescriptor newPerspective) {
-        this.perspective = newPerspective;
-    }
-
-    // TODO review need for this method
-    void setSelection(boolean b) {
-        if (toolItem != null && !toolItem.isDisposed()) {
-			toolItem.setSelection(b);
-		}
-    }
-
-    static int getMaxWidth(Image image) {
-        return image.getBounds().width * 5;
-    }
-
-    private static final String ellipsis = "..."; //$NON-NLS-1$
-
-    protected String shortenText(String textValue, ToolItem item) {
-        if (textValue == null || toolItem == null || toolItem.isDisposed()) {
-			return null;
-		}
-        String returnText = textValue;
-        GC gc = new GC(item.getParent());
-        int maxWidth = getMaxWidth(item.getImage());
-        if (gc.textExtent(textValue).x >= maxWidth) {
-            for (int i = textValue.length(); i > 0; i--) {
-                String test = textValue.substring(0, i);
-                test = test + ellipsis;
-                if (gc.textExtent(test).x < maxWidth) {
-                    returnText = test;
-                    break;
-                }
-            }
-        }
-        gc.dispose();
-        return returnText;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java
deleted file mode 100644
index 4401f6d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-public class PerspectiveBarManager extends ToolBarManager {
-
-    public PerspectiveBarManager(int style) {
-        super(style);
-    }
-
-    public ToolBar createControl(Composite parent) {
-        ToolBar control = super.createControl(parent);
-
-        return control;
-    }
-
-    // TODO begin refactor this out? it is not good that we know we are inside a
-    // CoolBar
-    private CoolBar coolBar;
-    private Menu chevronMenu = null;
-    
-    public void handleChevron(SelectionEvent event) {
-        CoolItem item = (CoolItem) event.widget;
-        //ToolBar toolbar = (ToolBar)getControl();
-        Control control = getControl();
-        if (!(control instanceof ToolBar)) {
-			return; // currently we only deal with toolbar items
-		}
-        /* Retrieve the current bounding rectangle for the selected cool item. */
-        Rectangle itemBounds = item.getBounds();
-        /* Convert to display coordinates (i.e. was relative to CoolBar). */
-        Point pt = coolBar.toDisplay(new Point(itemBounds.x, itemBounds.y));
-        itemBounds.x = pt.x;
-        itemBounds.y = pt.y;
-        /* Retrieve the total number of buttons in the toolbar. */
-        ToolBar toolBar = (ToolBar) control;
-        ToolItem[] tools = toolBar.getItems();
-        int toolCount = tools.length;
-        int i = 0;
-        while (i < toolCount) {
-            /*
-             * Starting from the leftmost tool, retrieve the tool's bounding
-             * rectangle.
-             */
-            Rectangle toolBounds = tools[i].getBounds();
-            /* Convert to display coordinates (i.e. was relative to ToolBar). */
-            pt = toolBar.toDisplay(new Point(toolBounds.x, toolBounds.y));
-            toolBounds.x = pt.x;
-            toolBounds.y = pt.y;
-            /*
-             * Figure out the visible portion of the tool by looking at the
-             * intersection of the tool bounds with the cool item bounds.
-             */
-            Rectangle intersection = itemBounds.intersection(toolBounds);
-            /*
-             * If the tool is not completely within the cool item bounds, then
-             * the tool is at least partially hidden, and all remaining tools
-             * are completely hidden.
-             */
-            if (!intersection.equals(toolBounds)) {
-				break;
-			}
-            i++;
-        }
-        
-        /* Create a pop-up menu with items for each of the hidden buttons. */
-        // Out with the old...
-        if (chevronMenu != null && !chevronMenu.isDisposed())
-        	chevronMenu.dispose();
-        
-        // ...In with the new
-        chevronMenu = new Menu(coolBar);
-
-        for (int j = i; j < toolCount; j++) {
-            ToolItem tool = tools[j];
-            MenuItem menuItem = new MenuItem(chevronMenu, SWT.NONE);
-            if (tool.getSelection()) {
-				menuItem.setEnabled(false);
-			}
-            
-            // Show the full text of the perspective name in the chevron menu.
-			if (tool.getData() instanceof PerspectiveBarContributionItem) {
-				menuItem.setText(((PerspectiveBarContributionItem) tool
-						.getData()).getPerspective().getLabel());
-			} else {
-				menuItem.setText(tool.getText());
-			}
-            menuItem.setImage(tool.getImage());
-
-            menuItem.setData("IContributionItem", tool.getData()); //$NON-NLS-1$
-
-            menuItem.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent e) {
-                    //rotate the selected item in and the other items right
-                    // don't touch the "Open" item
-                    MenuItem menuItem = (MenuItem) e.widget;
-                    Object item = menuItem.getData("IContributionItem"); //$NON-NLS-1$
-                    if (item instanceof PerspectiveBarContributionItem) {
-                        PerspectiveBarContributionItem contribItem = (PerspectiveBarContributionItem) item;
-                        update(false);
-                        contribItem.select();
-                    }
-                }
-            });
-        }
-        /*
-         * Display the pop-up menu immediately below the chevron, with the left
-         * edges aligned. Need to convert the given point to display
-         * coordinates in order to pass them to Menu.setLocation (i.e. was
-         * relative to CoolBar).
-         */
-        pt = coolBar.toDisplay(new Point(event.x, event.y));
-        chevronMenu.setLocation(pt.x, pt.y);
-        chevronMenu.setVisible(true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ToolBarManager#relayout(org.eclipse.swt.widgets.ToolBar, int, int)
-     */
-    protected void relayout(ToolBar toolBar, int oldCount, int newCount) {
-        super.relayout(toolBar, oldCount, newCount);
-
-        if (getControl() != null) {
-			LayoutUtil.resize(getControl());
-		}
-    }
-
-    void setParent(CoolBar cool) {
-        this.coolBar = cool;
-    }
-
-    /**
-     * Method to select a PerspectiveBarContributionItem and ensure
-     * that it is visible. It updates the MRU list.
-     * @param contribItem the PerspectiveBarContributionItem to select
-     */
-    void select(PerspectiveBarContributionItem contribItem) {
-        if (contribItem.getToolItem() == null) {
-			return;
-		}
-        // check if not visible and ensure visible
-        if (getControl().isVisible()
-                && !isItemVisible(contribItem.getToolItem())) {
-            ensureVisible(contribItem);
-        }
-    }
-
-    /**
-     * Method that adds a PerspectiveBarContributionItem and 
-     * ensures it is visible
-     * @param item the PerspectiveBarContributionItem to be added
-     */
-    public void addItem(PerspectiveBarContributionItem item) {
-    	// Put it after the 'open' button (if any)
-    	IPreferenceStore apiPreferenceStore = PrefUtil.getAPIPreferenceStore();
-    	if (apiPreferenceStore.getBoolean(IWorkbenchPreferenceConstants.SHOW_OPEN_ON_PERSPECTIVE_BAR))
-    		insert(1, item);
-    	else
-    		insert(0, item);
-
-    	update(false);
-    }
-
-    /**
-     * Method to remove a PerspectiveBarContributionItem from the toolbar
-     * and from the MRU and sequence lists when necessary
-     * @param item the PerspectiveBarContributionItem to be removed
-     */
-    public void removeItem(PerspectiveBarContributionItem item) {
-        remove(item);
-    }
-
-    /**
-     * Re-insert the item at the beginning of the perspective bar,
-     * ensuring that it is visible to the user.
-     * 
-     * @param contribItem
-     */
-    private void ensureVisible(PerspectiveBarContributionItem contribItem) {
-    	relocate(contribItem, 1);
-    }
-    
-    void relocate(PerspectiveBarContributionItem contribItem, int index) {
-        PerspectiveBarContributionItem newItem = new PerspectiveBarContributionItem(
-                contribItem.getPerspective(), contribItem.getPage());
-
-        removeItem(contribItem);
-        contribItem.dispose();
-        contribItem = null;
-
-        insert(index, newItem);
-        update(false);
-    }
-
-    /**
-     * @return true if the toolItem is visible on the screen, false otherwise.
-     */
-    private boolean isItemVisible(ToolItem toolItem) {
-        Rectangle barBounds = getControl().getBounds();
-        Rectangle itemBounds = toolItem.getBounds();
-        return (barBounds.intersection(itemBounds).equals(itemBounds));
-    }
-
-    /**
-     * This method ensures that the selected item in the toolbar is visible.
-     */
-    public void arrangeToolbar() {
-        // check if the tool bar is visible
-        if (!getControl().isVisible()) {
-			return;
-		}
-
-        // the tool bar should contain at least the new perspective button 
-        // and 2 other buttons
-        if (getControl().getItemCount() < 3) {
-			return;
-		}
-
-        // Find the selected item and make sure it is visible.
-        IContributionItem[] items = getItems();
-        for (int i = 2; i < items.length; i++) {
-            PerspectiveBarContributionItem contribItem = (PerspectiveBarContributionItem) items[i];
-            if (contribItem.getToolItem().getSelection()) {
-                if (!isItemVisible(contribItem.getToolItem())) {
-                    ensureVisible(contribItem);
-                    break;
-                }
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java
deleted file mode 100644
index 43afbbe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ContributionItemFactory;
-
-public class PerspectiveBarNewContributionItem extends ContributionItem {
-
-    private MenuManager menuManager = null;
-
-    private Image image;
-
-    private ToolItem toolItem = null;
-
-    public PerspectiveBarNewContributionItem(IWorkbenchWindow workbenchWindow) {
-        super(PerspectiveBarNewContributionItem.class.getName());
-        menuManager = new MenuManager();
-        menuManager.add(ContributionItemFactory.PERSPECTIVES_SHORTLIST
-                .create(workbenchWindow));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.ContributionItem#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        if (image != null && !image.isDisposed()) {
-            image.dispose();
-            image = null;
-        }
-    }
-
-    public void fill(final ToolBar parent, int index) {
-        if (toolItem == null && parent != null) {
-            parent.addDisposeListener(new DisposeListener() {
-                public void widgetDisposed(DisposeEvent e) {
-                    //toolItem.getImage().dispose();
-                    toolItem.dispose();
-                    toolItem = null;
-                }
-            });
-
-            toolItem = new ToolItem(parent, SWT.PUSH);
-            if (image == null || image.isDisposed()) {
-                image = WorkbenchImages.getImageDescriptor(
-                        IWorkbenchGraphicConstants.IMG_ETOOL_NEW_PAGE)
-                        .createImage();
-            }
-            toolItem.setImage(image);
-
-            toolItem.setText(""); //$NON-NLS-1$
-            toolItem.setToolTipText(WorkbenchMessages.PerspectiveBarNewContributionItem_toolTip); 
-            toolItem.addSelectionListener(new SelectionAdapter() {
-
-                public void widgetSelected(SelectionEvent event) {
-                    menuManager.update(true);
-                    Point point = new Point(event.x, event.y);
-                    if (event.widget instanceof ToolItem) {
-                        ToolItem toolItem = (ToolItem) event.widget;
-                        Rectangle rectangle = toolItem.getBounds();
-                        point = new Point(rectangle.x, rectangle.y
-                                + rectangle.height);
-                    }
-                    Menu menu = menuManager.createContextMenu(parent);
-                    point = parent.toDisplay(point);
-                    menu.setLocation(point.x, point.y);
-                    menu.setVisible(true);
-                }
-            });
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveHelper.java
deleted file mode 100644
index d22c419..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveHelper.java
+++ /dev/null
@@ -1,1507 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Marco Maccaferri, maccasoft.com - patch for defect 222750
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dnd.AbstractDropTarget;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.misc.StringMatcher;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * A perspective presentation is a collection of parts with a layout. Each part
- * is parented to a main window, so you can create more than one presentation
- * on a set of parts and change the layout just by activating / deactivating a
- * presentation.
- * 
- * In addition, the user can change the position of any part by mouse
- * manipulation (drag & drop). If a part is removed, we leave a placeholder
- * behind to indicate where it goes should the part be added back.
- */
-public class PerspectiveHelper {
-    private WorkbenchPage page;
-    
-    protected Perspective perspective;
-
-    protected Composite parentWidget;
-
-    private ViewSashContainer mainLayout;
-    
-	private PartStack maximizedStack;
-
-	/**
-	 * If there is a ViewStack maximized on shutdown the id is
-	 * cached and restored into this field on 'restoreState'.
-	 * This is then used to bash the ViewStack's presentation state
-	 * into the correct value on activation (the startup life-cycle
-	 * is such that we have to use this 'latch' because the window
-	 * state isn't valid until the activate happens.
-	 */
-	private String maximizedStackId;
-
-    private ArrayList detachedWindowList = new ArrayList(1);
-
-    private ArrayList detachedPlaceHolderList = new ArrayList(1);
-
-	/**
-	 * Maps a stack's id to its current bounds
-	 * this is used to capture the current bounds of all
-	 * stacks -before- starting a maximize (since the
-	 * iterative 'minimize' calls cause the intial stack's
-	 * bounds to change.
-	 */
-	private Map boundsMap = new HashMap();
-
-    private boolean detachable = false;
-
-    protected boolean active = false;
-
-    // key is the LayoutPart object, value is the PartDragDrop object
-    //private IPartDropListener partDropListener;
-
-    private static final int MIN_DETACH_WIDTH = 150;
-
-    private static final int MIN_DETACH_HEIGHT = 250;
-
-    protected ActualDropTarget dropTarget;
-    
-    private IDragOverListener dragTarget = new IDragOverListener() {
-
-        public IDropTarget drag(Control currentControl, Object draggedObject,
-                Point position, final Rectangle dragRectangle) {
-            
-            if (!(draggedObject instanceof ViewPane || draggedObject instanceof ViewStack)) {
-                return null;
-            }
-            final LayoutPart part = (LayoutPart) draggedObject;
-
-            if (part.getWorkbenchWindow() != page.getWorkbenchWindow()) {
-                return null;
-            }
-
-            if (dropTarget == null) {
-                dropTarget = new ActualDropTarget(part, dragRectangle); 
-            } else {
-                dropTarget.setTarget(part, dragRectangle);
-            }
-            
-            return dropTarget;
-        }
-
-    };
-
-    private final class ActualDropTarget extends AbstractDropTarget {
-        private LayoutPart part;
-
-        private Rectangle dragRectangle;
-
-        private ActualDropTarget(LayoutPart part, Rectangle dragRectangle) {
-            super();
-            setTarget(part, dragRectangle);
-        }
-
-        /**
-         * @param part
-         * @param dragRectangle
-         * @since 3.1
-         */
-        private void setTarget(LayoutPart part, Rectangle dragRectangle) {
-            this.part = part;
-            this.dragRectangle = dragRectangle;
-        }
-
-        public void drop() {
-
-            Shell shell = part.getShell();
-            if (shell.getData() instanceof DetachedWindow) {
-                // only one tab folder in a detach window, so do window
-                // move
-                if (part instanceof ViewStack) {
-                    shell.setLocation(dragRectangle.x,
-                            dragRectangle.y);
-                    return;
-                }
-                // if only one view in tab folder then do a window move
-                ILayoutContainer container = part.getContainer();
-                if (container instanceof ViewStack) {
-                    if (((ViewStack) container).getItemCount() == 1) {
-                        shell.setLocation(dragRectangle.x,
-                                dragRectangle.y);
-                        return;
-                    }
-                }
-            }
-
-            // If layout is modified always zoom out.
-            if (isZoomed()) {
-				zoomOut();
-			}
-            // do a normal part detach
-            detach(part, dragRectangle.x, dragRectangle.y);
-        }
-
-        public Cursor getCursor() {
-            return DragCursors.getCursor(DragCursors.OFFSCREEN);
-        }
-    }
-
-    private class MatchingPart implements Comparable {
-        String pid;
-
-        String sid;
-
-        LayoutPart part;
-
-        boolean hasWildcard;
-
-        int len;
-
-        MatchingPart(String pid, String sid, LayoutPart part) {
-            this.pid = pid;
-            this.sid = sid;
-            this.part = part;
-            this.len = (pid == null ? 0 : pid.length())
-                    + (sid == null ? 0 : sid.length());
-            this.hasWildcard = (pid != null && pid
-                    .indexOf(PartPlaceholder.WILD_CARD) != -1)
-                    || (sid != null && sid.indexOf(PartPlaceholder.WILD_CARD) != -1);
-        }
-
-        public int compareTo(Object a) {
-            // specific ids always outweigh ids with wildcards
-            MatchingPart ma = (MatchingPart) a;
-            if (this.hasWildcard && !ma.hasWildcard) {
-                return -1;
-            }
-            if (!this.hasWildcard && ma.hasWildcard) {
-                return 1;
-            }
-            // if both are specific or both have wildcards, simply compare based on length
-            return ma.len - this.len;
-        }
-    }
-
-    
-    /**
-     * Constructs a new object.
-     */
-    public PerspectiveHelper(WorkbenchPage workbenchPage,
-            ViewSashContainer mainLayout, Perspective perspective) {
-        this.page = workbenchPage;
-        this.mainLayout = mainLayout;
-        this.perspective = perspective;
-        
-		// Views can be detached if the feature is enabled (true by default,
-		// use the plug-in customization file to disable), and if the platform
-		// supports detaching.
-         
-        final IPreferenceStore store = PlatformUI.getPreferenceStore();
-        this.detachable = store.getBoolean(IWorkbenchPreferenceConstants.ENABLE_DETACHED_VIEWS);
-
-        if (this.detachable) {
-			// Check if some arbitrary Composite supports reparenting. If it
-			// doesn't, views cannot be detached.
-
-			Composite client = workbenchPage.getClientComposite();
-			if (client == null) {
-				// The workbench page is not initialized. I don't think this can happen,
-				// but if it does, silently set detachable to false.
-				this.detachable = false;
-			} else {
-				Composite testChild = new Composite(client, SWT.NONE);
-				this.detachable = testChild.isReparentable();
-				testChild.dispose();
-			}
-		}
-    }
-
-    /**
-	 * Show the presentation.
-	 */
-    public void activate(Composite parent) {
-
-        if (active) {
-			return;
-		}
-
-        parentWidget = parent;
-
-        // Activate main layout
-        // make sure all the views have been properly parented
-        Vector children = new Vector();
-        collectViewPanes(children, mainLayout.getChildren());
-        Enumeration itr = children.elements();
-        while (itr.hasMoreElements()) {
-            LayoutPart part = (LayoutPart) itr.nextElement();
-            part.reparent(parent);
-        }
-        mainLayout.createControl(parent);
-        mainLayout.setActive(true);
-
-        // Open the detached windows.
-        for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-            DetachedWindow dwindow = (DetachedWindow) detachedWindowList.get(i);
-            dwindow.open();
-        }
-
-        enableAllDrag();
-
-        // Ensure that the maximized stack's presentation state is correct
-        if (maximizedStackId != null) {
-        	LayoutPart part = findPart(maximizedStackId);
-        	if (part instanceof PartStack) {
-        		maximizedStack = (PartStack) part;
-            	maximizedStackId = null;
-        	}
-        }
-        
-        // NOTE: we only handle ViewStacks here; Editor Stacks are handled by the
-        // perspective
-        if (maximizedStack instanceof ViewStack) {
-        	maximizedStack.setPresentationState(IStackPresentationSite.STATE_MAXIMIZED);            	
-        }
-        
-        active = true;
-    }
-
-	/**
-     * Adds a part to the presentation. If a placeholder exists for the part
-     * then swap the part in. Otherwise, add the part in the bottom right
-     * corner of the presentation.
-     */
-    public void addPart(LayoutPart part) {
-        
-    	// Look for a placeholder.
-        PartPlaceholder placeholder = null;
-        LayoutPart testPart = null;
-        String primaryId = part.getID();
-        String secondaryId = null;
-
-        IViewReference ref = null;
-        if (part instanceof ViewPane) {
-            ViewPane pane = (ViewPane) part;
-            ref = (IViewReference) pane.getPartReference();
-            secondaryId = ref.getSecondaryId();
-        }
-        if (secondaryId != null) {
-			testPart = findPart(primaryId, secondaryId);
-		} else {
-			testPart = findPart(primaryId);
-		}
-
-        // validate the testPart
-        if (testPart != null && testPart instanceof PartPlaceholder) {
-			placeholder = (PartPlaceholder) testPart;
-		}
-
-        // If there is no placeholder do a simple add. Otherwise, replace the
-        // placeholder if its not a pattern matching placholder
-        if (placeholder == null) {
-            part.reparent(mainLayout.getParent());
-            LayoutPart relative = mainLayout.findBottomRight();
-            if (relative != null && relative instanceof ILayoutContainer) {
-                ILayoutContainer stack = (ILayoutContainer)relative;
-                if (stack.allowsAdd(part)) {
-                    mainLayout.stack(part, stack);
-                } else {
-                    mainLayout.add(part);
-                }
-            } else {
-                mainLayout.add(part);
-            }
-        } else {
-            ILayoutContainer container = placeholder.getContainer();
-            if (container != null) {
-                if (container instanceof DetachedPlaceHolder) {
-                    //Create a detached window add the part on it.
-                    DetachedPlaceHolder holder = (DetachedPlaceHolder) container;
-                    detachedPlaceHolderList.remove(holder);
-                    container.remove(testPart);
-                    DetachedWindow window = new DetachedWindow(page);
-                    detachedWindowList.add(window);
-                    window.create();
-                    part.createControl(window.getShell());
-                    // Open window.
-                    window.getShell().setBounds(holder.getBounds());
-                    window.open();
-                    // add part to detached window.
-                    ViewPane pane = (ViewPane) part;
-                    window.add(pane);
-                    LayoutPart otherChildren[] = holder.getChildren();
-                    for (int i = 0; i < otherChildren.length; i++) {
-						part.getContainer().add(otherChildren[i]);
-					}
-                } else {
-                    // show parent if necessary
-                    if (container instanceof ContainerPlaceholder) {
-                        ContainerPlaceholder containerPlaceholder = (ContainerPlaceholder) container;                        
-                        ILayoutContainer parentContainer = containerPlaceholder
-                                .getContainer();
-                        container = (ILayoutContainer) containerPlaceholder
-                                .getRealContainer();
-                        if (container instanceof LayoutPart) {
-                            parentContainer.replace(containerPlaceholder,
-                                    (LayoutPart) container);
-                        }
-                        containerPlaceholder.setRealContainer(null);
-                    }
-
-                    // reparent part.
-                    if (!(container instanceof ViewStack)) {
-                        // We don't need to reparent children of PartTabFolders since they will automatically
-                        // reparent their children when they become visible. This if statement used to be 
-                        // part of an else branch. Investigate if it is still necessary.
-                        part.reparent(mainLayout.getParent());
-                    }
-
-                    // see if we should replace the placeholder
-                    if (placeholder.hasWildCard()) {
-                        if (container instanceof PartSashContainer) {
-							((PartSashContainer) container)
-                                    .addChildForPlaceholder(part, placeholder);
-						} else {
-							container.add(part);
-						}
-                    } else {
-						container.replace(placeholder, part);
-					}
-                }
-            }
-        }
-    }
-    
-    /**
-     * Attaches a part that was previously detached to the mainLayout. 
-     * 
-     * @param ref
-     */
-    public void attachPart(IViewReference ref) {
-		ViewPane pane = (ViewPane)((WorkbenchPartReference)ref).getPane();	
-		
-		// Restore any maximized part before re-attaching.
-		// Note that 'getMaximizedStack != null' implies 'useNewMinMax'
-		if (getMaximizedStack() != null) {
-			getMaximizedStack().setState(IStackPresentationSite.STATE_RESTORED);
-		}
-		
-		derefPart(pane);
-		addPart(pane);
-		bringPartToTop(pane);
-		pane.setFocus();
-    }
-
-    /**
-     * Return whether detachable parts can be supported.
-     */
-    public boolean canDetach() {
-        return detachable;
-    }
-
-    /**
-     * Bring a part forward so it is visible.
-     * 
-     * @return true if the part was brought to top, false if not.
-     */
-    public boolean bringPartToTop(LayoutPart part) {
-        ILayoutContainer container = part.getContainer();
-        if (container != null && container instanceof PartStack) {
-            PartStack folder = (PartStack) container;
-            if (folder.getSelection() != part) {
-                folder.setSelection(part);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns true if the given part is visible.
-     * A part is visible if it's top-level (not in a tab folder) or if it is the top one 
-     * in a tab folder.
-     */
-    public boolean isPartVisible(IWorkbenchPartReference partRef) {
-        LayoutPart foundPart;
-        if (partRef instanceof IViewReference) {
-			foundPart = findPart(partRef.getId(), ((IViewReference) partRef).getSecondaryId());
-		} else {
-			foundPart = findPart(partRef.getId());
-		}
-        if (foundPart == null) {
-			return false;
-		}
-        if (foundPart instanceof PartPlaceholder) {
-			return false;
-		}
-
-        ILayoutContainer container = foundPart.getContainer();
-        
-        if (container instanceof ContainerPlaceholder) {
-			return false;
-		}
-
-        if (container instanceof ViewStack) {
-            ViewStack folder = (ViewStack) container;
-            PartPane visiblePart = folder.getSelection();
-            if (visiblePart == null) {
-				return false;
-			}
-            return partRef.equals(visiblePart.getPartReference());
-        }
-        return true;
-    }
-
-    /**
-     * Returns true is not in a tab folder or if it is the top one in a tab
-     * folder.
-     */
-    public boolean willPartBeVisible(String partId) {
-        return willPartBeVisible(partId, null);
-    }
-
-    public boolean willPartBeVisible(String partId, String secondaryId) {
-        LayoutPart part = findPart(partId, secondaryId);
-        if (part == null) {
-			return false;
-		}
-        ILayoutContainer container = part.getContainer();
-        if (container != null && container instanceof ContainerPlaceholder) {
-			container = (ILayoutContainer) ((ContainerPlaceholder) container)
-                    .getRealContainer();
-		}
-
-        if (container != null && container instanceof ViewStack) {
-            ViewStack folder = (ViewStack) container;
-            if (folder.getSelection() == null) {
-				return false;
-			}
-            return part.getCompoundId().equals(
-                    folder.getSelection().getCompoundId());
-        }
-        return true;
-    }
-
-    /**
-     * Answer a list of the PartPlaceholder objects.
-     */
-    private PartPlaceholder[] collectPlaceholders() {
-        // Scan the main window.
-        PartPlaceholder[] results = collectPlaceholders(mainLayout
-                .getChildren());
-
-        // Scan each detached window.
-        if (detachable) {
-            for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-                DetachedWindow win = (DetachedWindow) detachedWindowList.get(i);
-                PartPlaceholder[] moreResults = collectPlaceholders(win
-                        .getChildren());
-                if (moreResults.length > 0) {
-                    int newLength = results.length + moreResults.length;
-                    PartPlaceholder[] newResults = new PartPlaceholder[newLength];
-                    System.arraycopy(results, 0, newResults, 0, results.length);
-                    System.arraycopy(moreResults, 0, newResults,
-                            results.length, moreResults.length);
-                    results = newResults;
-                }
-            }
-        }
-        return results;
-    }
-
-    /**
-     * Answer a list of the PartPlaceholder objects.
-     */
-    private PartPlaceholder[] collectPlaceholders(LayoutPart[] parts) {
-        PartPlaceholder[] result = new PartPlaceholder[0];
-
-        for (int i = 0, length = parts.length; i < length; i++) {
-            LayoutPart part = parts[i];
-            if (part instanceof ILayoutContainer) {
-                // iterate through sub containers to find sub-parts
-                PartPlaceholder[] newParts = collectPlaceholders(((ILayoutContainer) part)
-                        .getChildren());
-                PartPlaceholder[] newResult = new PartPlaceholder[result.length
-                        + newParts.length];
-                System.arraycopy(result, 0, newResult, 0, result.length);
-                System.arraycopy(newParts, 0, newResult, result.length,
-                        newParts.length);
-                result = newResult;
-            } else if (part instanceof PartPlaceholder) {
-                PartPlaceholder[] newResult = new PartPlaceholder[result.length + 1];
-                System.arraycopy(result, 0, newResult, 0, result.length);
-                newResult[result.length] = (PartPlaceholder) part;
-                result = newResult;
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * Answer a list of the view panes.
-     */
-    public void collectViewPanes(List result) {
-        // Scan the main window.
-        collectViewPanes(result, mainLayout.getChildren());
-
-        // Scan each detached window.
-        if (detachable) {
-            for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-                DetachedWindow win = (DetachedWindow) detachedWindowList.get(i);
-                collectViewPanes(result, win.getChildren());
-            }
-        }
-    }
-
-    /**
-     * Answer a list of the view panes.
-     */
-    private void collectViewPanes(List result, LayoutPart[] parts) {
-        for (int i = 0, length = parts.length; i < length; i++) {
-            LayoutPart part = parts[i];
-            if (part instanceof ViewPane) {
-                result.add(part);
-            } else if (part instanceof ILayoutContainer) {
-                collectViewPanes(result, ((ILayoutContainer) part)
-                        .getChildren());
-            }
-        }
-    }
-
-    /**
-     * Hide the presentation.
-     */
-    public void deactivate() {
-        if (!active) {
-			return;
-		}
-
-        disableAllDrag();
-
-        // Reparent all views to the main window
-        Composite parent = mainLayout.getParent();
-        Vector children = new Vector();
-        collectViewPanes(children, mainLayout.getChildren());
-
-        for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-            DetachedWindow window = (DetachedWindow) detachedWindowList.get(i);
-            collectViewPanes(children, window.getChildren());
-        }
-
-        // *** Do we even need to do this if detached windows not supported?
-        Enumeration itr = children.elements();
-        while (itr.hasMoreElements()) {
-            LayoutPart part = (LayoutPart) itr.nextElement();
-            part.reparent(parent);
-        }
-        
-        // Dispose main layout.
-
-        mainLayout.setActive(false);
-        
-        // Dispose the detached windows
-        for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-            DetachedWindow window = (DetachedWindow) detachedWindowList.get(i);
-            window.close();
-        }
-        
-        active = false;
-    }
-    
-    public void dispose() {
-        mainLayout.dispose();
-        mainLayout.disposeSashes();
-    }
-    
-    /**
-     * Writes a description of the layout to the given string buffer.
-     * This is used for drag-drop test suites to determine if two layouts are the
-     * same. Like a hash code, the description should compare as equal iff the
-     * layouts are the same. However, it should be user-readable in order to
-     * help debug failed tests. Although these are english readable strings,
-     * they should not be translated or equality tests will fail.
-     * <p>
-     * This is only intended for use by test suites.
-     * </p>
-     * 
-     * @param buf
-     */
-    public void describeLayout(StringBuffer buf) {
-
-        if (detachable) {
-            if(detachedWindowList.size() != 0){
-                buf.append("detachedWindows ("); //$NON-NLS-1$
-          
-	            for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-	                DetachedWindow window = (DetachedWindow) detachedWindowList.get(i);
-	                LayoutPart[] children = window.getChildren();
-	                if(children.length != 0){
-	                    buf.append("dWindow ("); //$NON-NLS-1$
-	                    for(int j = 0; j < children.length; j++){
-	                        buf.append(((ViewPane)children[j]).getViewReference().getPartName());
-	                        if(j < (children.length - 1)) {
-								buf.append(", "); //$NON-NLS-1$
-							}
-	                    }
-	                    buf.append(")"); //$NON-NLS-1$
-	                }
-	                
-	            }
-	            buf.append("), "); //$NON-NLS-1$
-            }
-        }
-            
-        getLayout().describeLayout(buf);
-    }
-
-    /**
-     * Deref a given part. Deconstruct its container as required. Do not remove
-     * drag listeners.
-     */
-    /* package */void derefPart(LayoutPart part) {
-        if (part instanceof ViewPane) {
-        	IViewReference ref = ((ViewPane) part).getViewReference();
-        	if (perspective.isFastView(ref)) {
-        		// Special check: if it's a fast view then it's actual ViewStack
-        		// may only contain placeholders and the stack is represented in
-        		// the presentation by a container placeholder...make sure the
-        		// PartPlaceHolder for 'ref' is removed from the ViewStack
-        		String id = perspective.getFastViewManager().getIdForRef(ref);
-        		LayoutPart parentPart = findPart(id, null);
-        		if (parentPart instanceof ContainerPlaceholder) {
-        			ViewStack vs = (ViewStack) ((ContainerPlaceholder)parentPart).getRealContainer();
-        			LayoutPart[] kids = vs.getChildren();
-        			for (int i = 0; i < kids.length; i++) {
-						if (kids[i] instanceof PartPlaceholder) {
-							if (ref.getId().equals(kids[i].id))
-								vs.remove(kids[i]);
-						}
-					}
-        		}
-        		perspective.getFastViewManager().removeViewReference(ref, true, true);
-        	}
-        }
-
-        // Get vital part stats before reparenting.
-        ILayoutContainer oldContainer = part.getContainer();
-        boolean wasDocked = part.isDocked();
-        Shell oldShell = part.getShell();
-
-        // Reparent the part back to the main window
-        part.reparent(mainLayout.getParent());
-
-        // Update container.
-        if (oldContainer == null) {
-			return;
-		}
-
-        oldContainer.remove(part);
-
-        LayoutPart[] children = oldContainer.getChildren();
-        if (wasDocked) {
-            boolean hasChildren = (children != null) && (children.length > 0);
-            if (hasChildren) {
-                // make sure one is at least visible
-                int childVisible = 0;
-                for (int i = 0; i < children.length; i++) {
-					if (children[i].getControl() != null) {
-						childVisible++;
-					}
-				}
-
-                // none visible, then reprarent and remove container
-                if (oldContainer instanceof ViewStack) {
-                    ViewStack folder = (ViewStack) oldContainer;
-                    
-                    // Is the part in the trim?
-                    boolean inTrim = false;
-                    // Safety check...there may be no FastViewManager
-                    if (perspective.getFastViewManager() != null)
-                    	inTrim = perspective.getFastViewManager().getFastViews(folder.getID()).size() > 0;
-                    	
-                    if (childVisible == 0 && !inTrim) {
-                        ILayoutContainer parentContainer = folder.getContainer();
-                        hasChildren = folder.getChildren().length > 0;
-                        
-                        // We maintain the stack as a place-holder if it has children
-                        // (which at this point would represent view place-holders)
-                        if (hasChildren) {
-                        	folder.dispose();
-                        	
-							// replace the real container with a ContainerPlaceholder
-							ContainerPlaceholder placeholder = new ContainerPlaceholder(folder.getID());
-							placeholder.setRealContainer(folder);
-							parentContainer.replace(folder, placeholder);
-                        }
-                    } else if (childVisible == 1) {
-                        LayoutTree layout = mainLayout.getLayoutTree();
-                        layout = layout.find(folder);
-                        layout.setBounds(layout.getBounds());
-                    }
-                }
-            }
-
-            if (!hasChildren) {
-                // There are no more children in this container, so get rid of
-                // it
-                if (oldContainer instanceof LayoutPart) {
-                    LayoutPart parent = (LayoutPart) oldContainer;
-                    ILayoutContainer parentContainer = parent.getContainer();
-                    if (parentContainer != null) {
-                        parentContainer.remove(parent);
-                        parent.dispose();
-                    }
-                }
-            }
-        } else if (!wasDocked) {
-            if (children == null || children.length == 0) {
-                // There are no more children in this container, so get rid of
-                // it
-                // Turn on redraw again just in case it was off.
-                //oldShell.setRedraw(true);
-                DetachedWindow w = (DetachedWindow)oldShell.getData();
-                oldShell.close();
-                detachedWindowList.remove(w);
-            } else {
-                // There are children. If none are visible hide detached
-                // window.
-                boolean allInvisible = true;
-                for (int i = 0, length = children.length; i < length; i++) {
-                    if (!(children[i] instanceof PartPlaceholder)) {
-                        allInvisible = false;
-                        break;
-                    }
-                }
-                if (allInvisible) {
-                    DetachedPlaceHolder placeholder = new DetachedPlaceHolder(
-                            "", //$NON-NLS-1$
-                            oldShell.getBounds());
-                    for (int i = 0, length = children.length; i < length; i++) {
-                        oldContainer.remove(children[i]);
-                        children[i].setContainer(placeholder);
-                        placeholder.add(children[i]);
-                    }
-                    detachedPlaceHolderList.add(placeholder);
-                    DetachedWindow w = (DetachedWindow)oldShell.getData();
-                    oldShell.close();
-                    detachedWindowList.remove(w);
-                }
-            }
-        }
-
-    }
-
-    /**
-     * Create a detached window containing a part.
-     */
-    private void detach(LayoutPart source, int x, int y) {
-
-        // Detaching is disabled on some platforms ..
-        if (!detachable) {
-			return;
-		}
-
-        LayoutPart part = source.getPart();
-        // Calculate detached window size.
-        Point size = part.getSize();
-        if (size.x == 0 || size.y == 0) {
-            ILayoutContainer container = part.getContainer();
-            if (container instanceof LayoutPart) {
-                size = ((LayoutPart) container).getSize();
-            }
-        }
-        int width = Math.max(size.x, MIN_DETACH_WIDTH);
-        int height = Math.max(size.y, MIN_DETACH_HEIGHT);
-
-        // Create detached window.
-        DetachedWindow window = new DetachedWindow(page);
-        detachedWindowList.add(window);
-
-        // Open window.
-        window.create();
-        window.getShell().setBounds(x, y, width, height);
-        window.open();
-
-        if (part instanceof ViewStack) {
-            window.getShell().setRedraw(false);
-            parentWidget.setRedraw(false);
-            LayoutPart visiblePart = ((ViewStack) part).getSelection();
-            LayoutPart children[] = ((ViewStack) part).getChildren();
-            for (int i = 0; i < children.length; i++) {
-                if (children[i] instanceof ViewPane) {
-                    // remove the part from its current container
-                    derefPart(children[i]);
-                    // add part to detached window.
-                    ViewPane pane = (ViewPane) children[i];
-                    window.add(pane);
-                }
-            }
-            if (visiblePart != null) {
-                bringPartToTop(visiblePart);
-                visiblePart.setFocus();
-            }
-            window.getShell().setRedraw(true);
-            parentWidget.setRedraw(true);
-        } else {
-            // remove the part from its current container
-            derefPart(part);
-            // add part to detached window.
-            ViewPane pane = (ViewPane) part;
-            window.add(pane);
-            part.setFocus();
-        }
-
-    }
-    
-    /**
-     * Detached a part from the mainLayout. Presently this does not use placeholders
-     * since the current implementation is not robust enough to remember a view's position
-     * in more than one root container. For now the view is simply derefed and will dock
-     * in the default position when attachPart is called. 
-     * 
-     * By default parts detached this way are set to float on top of the workbench
-     * without docking. It is assumed that people that want to drag a part back onto
-     * the WorkbenchWindow will detach it via drag and drop. 
-     * 
-     * @param ref
-     */
-    public void detachPart(IViewReference ref) {
-		ViewPane pane = (ViewPane)((WorkbenchPartReference)ref).getPane();
-    	if (canDetach() && pane != null) {
-    		if (getMaximizedStack() != null)
-    			getMaximizedStack().setState(IStackPresentationSite.STATE_RESTORED);
-    		
-    		Rectangle bounds = pane.getParentBounds();
-    	    detach(pane, bounds.x ,bounds.y);
-    	}
-    }
-
-    /**
-     * Create a detached window containing a part.
-     */
-    public void addDetachedPart(LayoutPart part) {
-        // Calculate detached window size.
-        Rectangle bounds = parentWidget.getShell().getBounds();
-        bounds.x = bounds.x + (bounds.width - 300) / 2;
-        bounds.y = bounds.y + (bounds.height - 300) / 2;
-        
-        addDetachedPart(part, bounds);
-    }
-    
-    public void addDetachedPart(LayoutPart part, Rectangle bounds) {
-        // Detaching is disabled on some platforms ..
-        if (!detachable) {
-            addPart(part);
-            return;
-        }
-        
-        // Create detached window.
-        DetachedWindow window = new DetachedWindow(page);
-        detachedWindowList.add(window);
-        window.create();
-
-        // add part to detached window.
-        part.createControl(window.getShell());
-        ViewPane pane = (ViewPane) part;
-        window.add(pane);
-
-        // Open window.
-        window.getShell().setBounds(bounds.x, bounds.y, bounds.width, bounds.height);
-        window.open();
-
-        part.setFocus();
-        
-    }
-
-    /**
-     * disableDragging.
-     */
-    private void disableAllDrag() {
-        DragUtil.removeDragTarget(null, dragTarget);
-    }
-
-    /**
-     * enableDragging.
-     */
-    private void enableAllDrag() {
-        DragUtil.addDragTarget(null, dragTarget);
-    }
-
-    /**
-     * Find the first part with a given ID in the presentation.
-     * Wild cards now supported.
-     */
-    private LayoutPart findPart(String id) {
-        return findPart(id, null);
-    }
-
-    /**
-     * Find the first part that matches the specified 
-     * primary and secondary id pair.  Wild cards
-     * are supported.
-     */
-    public LayoutPart findPart(String primaryId, String secondaryId) {
-        // check main window.
-        ArrayList matchingParts = new ArrayList();
-        LayoutPart part = (secondaryId != null) ? findPart(primaryId,
-                secondaryId, mainLayout.getChildren(), matchingParts)
-                : findPart(primaryId, mainLayout.getChildren(), matchingParts);
-        if (part != null) {
-			return part;
-		}
-
-        // check each detached windows.
-        for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-            DetachedWindow window = (DetachedWindow) detachedWindowList.get(i);
-            part = (secondaryId != null) ? findPart(primaryId, secondaryId,
-                    window.getChildren(), matchingParts) : findPart(primaryId,
-                    window.getChildren(), matchingParts);
-            if (part != null) {
-				return part;
-			}
-        }
-        for (int i = 0; i < detachedPlaceHolderList.size(); i++) {
-            DetachedPlaceHolder holder = (DetachedPlaceHolder) detachedPlaceHolderList
-                    .get(i);
-            part = (secondaryId != null) ? findPart(primaryId, secondaryId,
-                    holder.getChildren(), matchingParts) : findPart(primaryId,
-                    holder.getChildren(), matchingParts);
-            if (part != null) {
-				return part;
-			}
-        }
-
-        // sort the matching parts
-        if (matchingParts.size() > 0) {
-            Collections.sort(matchingParts);
-            MatchingPart mostSignificantPart = (MatchingPart) matchingParts
-                    .get(0);
-            if (mostSignificantPart != null) {
-				return mostSignificantPart.part;
-			}
-        }
-
-        // Not found.
-        return null;
-    }
-
-    /**
-     * Find the first part with a given ID in the presentation.
-     */
-    private LayoutPart findPart(String id, LayoutPart[] parts,
-            ArrayList matchingParts) {
-        for (int i = 0, length = parts.length; i < length; i++) {
-            LayoutPart part = parts[i];
-            // check for part equality, parts with secondary ids fail
-            if (part.getID().equals(id)) {
-                if (part instanceof ViewPane) {
-                    ViewPane pane = (ViewPane) part;
-                    IViewReference ref = (IViewReference) pane
-                            .getPartReference();
-                    if (ref.getSecondaryId() != null) {
-						continue;
-					}
-                }
-                return part;
-            }
-            // check pattern matching placeholders
-            else if (part instanceof PartPlaceholder
-                    && ((PartPlaceholder) part).hasWildCard()) {
-                StringMatcher sm = new StringMatcher(part.getID(), true, false);
-                if (sm.match(id)) {
-					matchingParts
-                            .add(new MatchingPart(part.getID(), null, part));
-				}
-            } else if (part instanceof EditorSashContainer) {
-                // Skip.
-            } else if (part instanceof ILayoutContainer) {
-                part = findPart(id, ((ILayoutContainer) part).getChildren(),
-                        matchingParts);
-                if (part != null) {
-					return part;
-				}
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Find the first part that matches the specified 
-     * primary and secondary id pair.  Wild cards
-     * are supported.
-     */
-    private LayoutPart findPart(String primaryId, String secondaryId,
-            LayoutPart[] parts, ArrayList matchingParts) {
-        for (int i = 0, length = parts.length; i < length; i++) {
-            LayoutPart part = parts[i];
-            // check containers first
-            if (part instanceof ILayoutContainer) {
-                LayoutPart testPart = findPart(primaryId, secondaryId,
-                        ((ILayoutContainer) part).getChildren(), matchingParts);
-                if (testPart != null) {
-					return testPart;
-				}
-            }
-            // check for view part equality
-            if (part instanceof ViewPane) {
-                ViewPane pane = (ViewPane) part;
-                IViewReference ref = (IViewReference) pane.getPartReference();
-                if (ref.getId().equals(primaryId)
-                        && ref.getSecondaryId() != null
-                        && ref.getSecondaryId().equals(secondaryId)) {
-					return part;
-				}
-            }
-            // check placeholders
-            else if ((parts[i] instanceof PartPlaceholder)) {
-                String id = part.getID();
-
-                // optimization: don't bother parsing id if it has no separator -- it can't match
-                String phSecondaryId = ViewFactory.extractSecondaryId(id);
-                if (phSecondaryId == null) {
-                    // but still need to check for wildcard case
-                    if (id.equals(PartPlaceholder.WILD_CARD)) {
-						matchingParts.add(new MatchingPart(id, null, part));
-					}
-                    continue;
-                }
-
-                String phPrimaryId = ViewFactory.extractPrimaryId(id);
-                // perfect matching pair
-                if (phPrimaryId.equals(primaryId)
-                        && phSecondaryId.equals(secondaryId)) {
-                    return part;
-                }
-                // check for partial matching pair
-                StringMatcher sm = new StringMatcher(phPrimaryId, true, false);
-                if (sm.match(primaryId)) {
-                    sm = new StringMatcher(phSecondaryId, true, false);
-                    if (sm.match(secondaryId)) {
-                        matchingParts.add(new MatchingPart(phPrimaryId,
-                                phSecondaryId, part));
-                    }
-                }
-            } else if (part instanceof EditorSashContainer) {
-                // Skip.
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns true if a placeholder exists for a given ID.
-     */
-    public boolean hasPlaceholder(String id) {
-        return hasPlaceholder(id, null);
-    }
-
-    /**
-     * Returns true if a placeholder exists for a given ID.
-     * @since 3.0
-     */
-    public boolean hasPlaceholder(String primaryId, String secondaryId) {
-        LayoutPart testPart;
-        if (secondaryId == null) {
-			testPart = findPart(primaryId);
-		} else {
-			testPart = findPart(primaryId, secondaryId);
-		}
-        return (testPart != null && testPart instanceof PartPlaceholder);
-    }
-
-    /**
-     * Returns the layout container.
-     */
-    public ViewSashContainer getLayout() {
-        return mainLayout;
-    }
-
-    /**
-     * Gets the active state.
-     */
-    public boolean isActive() {
-        return active;
-    }
-
-    /**
-     * Returns whether the presentation is zoomed.
-     * 
-     * <strong>NOTE:</strong> As of 3.3 this method should always return 'false'
-     * when using the new min/max behavior. It is only used for
-     * legacy 'zoom' handling.
-     */
-    public boolean isZoomed() {
-        return mainLayout.getZoomedPart() != null;
-    }
-
-    /**
-	 * @return The currently maxmized stack (if any)
-	 */
-	public PartStack getMaximizedStack() {
-		return maximizedStack;
-	}
-
-	/**
-	 * Sets the currently maximized stack. Used for query
-	 * and 'unZoom' purposes in the 3.3 presentation.
-	 * 
-	 * @param stack The newly maximized stack
-	 */
-	public void setMaximizedStack(PartStack stack) {
-		if (stack == maximizedStack)
-			return;
-		
-		maximizedStack = stack;
-	}
-	
-	/**
-     * Returns the ratio that should be used when docking the given source
-     * part onto the given target
-     * 
-     * @param source newly added part
-     * @param target existing part being dragged over
-     * @return the final size of the source part (wrt the current size of target)
-     * after it is docked
-     */
-    public static float getDockingRatio(LayoutPart source, LayoutPart target) {
-        if ((source instanceof ViewPane || source instanceof ViewStack)
-                && target instanceof EditorSashContainer) {
-            return 0.25f;
-        }
-        return 0.5f;
-    }
-
-    /**
-     * Returns whether changes to a part will affect zoom. There are a few
-     * conditions for this .. - we are zoomed. - the part is contained in the
-     * main window. - the part is not the zoom part - the part is not a fast
-     * view - the part and the zoom part are not in the same editor workbook
-	 * - the part and the zoom part are not in the same view stack.
-     */
-    public boolean partChangeAffectsZoom(LayoutPart pane) {
-        return pane.isObscuredByZoom();
-    }
-    
-    /**
-     * Remove all references to a part.
-     */
-    public void removePart(LayoutPart part) {
-
-        // Reparent the part back to the main window
-        Composite parent = mainLayout.getParent();
-        part.reparent(parent);
-
-        // Replace part with a placeholder
-        ILayoutContainer container = part.getContainer();
-        if (container != null) {
-            String placeHolderId = part.getPlaceHolderId();
-            container.replace(part, new PartPlaceholder(placeHolderId));
-
-            // If the parent is root we're done. Do not try to replace
-            // it with placeholder.
-            if (container == mainLayout) {
-				return;
-			}
-
-            // If the parent is empty replace it with a placeholder.
-            LayoutPart[] children = container.getChildren();
-            if (children != null) {
-                boolean allInvisible = true;
-                for (int i = 0, length = children.length; i < length; i++) {
-                    if (!(children[i] instanceof PartPlaceholder)) {
-                        allInvisible = false;
-                        break;
-                    }
-                }
-                if (allInvisible && (container instanceof LayoutPart)) {
-                    // what type of window are we in?
-                    LayoutPart cPart = (LayoutPart) container;
-                    //Window oldWindow = cPart.getWindow();
-                    boolean wasDocked = cPart.isDocked();
-                    Shell oldShell = cPart.getShell();
-                    if (wasDocked) {
-                        
-                        // PR 1GDFVBY: ViewStack not disposed when page
-                        // closed.
-                        if (container instanceof ViewStack) {
-							((ViewStack) container).dispose();
-						}
-                        
-                        // replace the real container with a
-                        // ContainerPlaceholder
-                        ILayoutContainer parentContainer = cPart.getContainer();
-                        ContainerPlaceholder placeholder = new ContainerPlaceholder(
-                                cPart.getID());
-                        placeholder.setRealContainer(container);
-                        parentContainer.replace(cPart, placeholder);
-                        
-                    } else {
-                        DetachedPlaceHolder placeholder = new DetachedPlaceHolder(
-                                "", oldShell.getBounds()); //$NON-NLS-1$
-                        for (int i = 0, length = children.length; i < length; i++) {
-                            children[i].getContainer().remove(children[i]);
-                            children[i].setContainer(placeholder);
-                            placeholder.add(children[i]);
-                        }
-                        detachedPlaceHolderList.add(placeholder);
-                        DetachedWindow w = (DetachedWindow)oldShell.getData();
-                        oldShell.close();
-                        detachedWindowList.remove(w);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Used to explicitly close and remove a DW that's being closed
-     * but that has no visible views. See bug 234484.
-     * 
-     * @param dw The DW to close
-     */
-    public void closeDetachedWindow(DetachedWindow dw) {
-    	dw.getShell().close();
-        detachedWindowList.remove(dw);
-    }
-    
-    /**
-     * Add a part to the presentation.
-     * 
-     * Note: unlike all other LayoutParts, PartPlaceholders will still point to
-     * their parent container even when it is inactive. This method relies on this
-     * fact to locate the parent.
-     */
-    public void replacePlaceholderWithPart(LayoutPart part) {
-        
-        // Look for a PartPlaceholder that will tell us how to position this
-        // object
-        PartPlaceholder[] placeholders = collectPlaceholders();
-        for (int i = 0, length = placeholders.length; i < length; i++) {
-            if (placeholders[i].getCompoundId().equals(part.getCompoundId())) {
-                // found a matching placeholder which we can replace with the
-                // new View
-                ILayoutContainer container = placeholders[i].getContainer();
-                if (container != null) {
-                    if (container instanceof ContainerPlaceholder) {
-                        // One of the children is now visible so replace the
-                        // ContainerPlaceholder with the real container
-                        ContainerPlaceholder containerPlaceholder = (ContainerPlaceholder) container;
-                        ILayoutContainer parentContainer = containerPlaceholder
-                                .getContainer();
-                        container = (ILayoutContainer) containerPlaceholder
-                                .getRealContainer();
-                        if (container instanceof LayoutPart) {
-                            parentContainer.replace(containerPlaceholder,
-                                    (LayoutPart) container);
-                        }
-                        containerPlaceholder.setRealContainer(null);
-                    }
-                    container.replace(placeholders[i], part);
-                    return;
-                }
-            }
-        }
-
-    }
-
-    /**
-     * @see org.eclipse.ui.IPersistable
-     */
-    public IStatus restoreState(IMemento memento) {
-        // Restore main window.
-        IMemento childMem = memento
-                .getChild(IWorkbenchConstants.TAG_MAIN_WINDOW);
-        IStatus r = mainLayout.restoreState(childMem);
-
-        // Restore each floating window.
-        if (detachable) {
-            IMemento detachedWindows[] = memento
-                    .getChildren(IWorkbenchConstants.TAG_DETACHED_WINDOW);
-            for (int nX = 0; nX < detachedWindows.length; nX++) {
-                DetachedWindow win = new DetachedWindow(page);
-                detachedWindowList.add(win);
-                win.restoreState(detachedWindows[nX]);
-            }
-            IMemento childrenMem[] = memento
-                    .getChildren(IWorkbenchConstants.TAG_HIDDEN_WINDOW);
-            for (int i = 0, length = childrenMem.length; i < length; i++) {
-                DetachedPlaceHolder holder = new DetachedPlaceHolder(
-                        "", new Rectangle(0, 0, 0, 0)); //$NON-NLS-1$
-                holder.restoreState(childrenMem[i]);
-                detachedPlaceHolderList.add(holder);
-            }
-        }
-        
-        // Get the cached id of the currently maximized stack
-        maximizedStackId = childMem.getString(IWorkbenchConstants.TAG_MAXIMIZED);
-        
-        return r;
-    }
-
-    /**
-     * @see org.eclipse.ui.IPersistable
-     */
-    public IStatus saveState(IMemento memento) {
-        // Persist main window.
-        IMemento childMem = memento
-                .createChild(IWorkbenchConstants.TAG_MAIN_WINDOW);
-        IStatus r = mainLayout.saveState(childMem);
-
-        if (detachable) {
-            // Persist each detached window.
-            for (int i = 0, length = detachedWindowList.size(); i < length; i++) {
-                DetachedWindow window = (DetachedWindow) detachedWindowList
-                        .get(i);
-                childMem = memento
-                        .createChild(IWorkbenchConstants.TAG_DETACHED_WINDOW);
-                window.saveState(childMem);
-            }
-            for (int i = 0, length = detachedPlaceHolderList.size(); i < length; i++) {
-                DetachedPlaceHolder holder = (DetachedPlaceHolder) detachedPlaceHolderList
-                        .get(i);
-                childMem = memento
-                        .createChild(IWorkbenchConstants.TAG_HIDDEN_WINDOW);
-                holder.saveState(childMem);
-            }
-        }
-        
-        // Write out the id of the maximized (View) stack (if any)
-        // NOTE: we only write this out if it's a ViewStack since the
-        // Editor Area is handled by the perspective
-        if (maximizedStack instanceof ViewStack) {
-        	childMem.putString(IWorkbenchConstants.TAG_MAXIMIZED, maximizedStack.getID());
-        }
-        else if (maximizedStackId != null) {
-        	// Maintain the cache if the perspective has never been activated
-        	childMem.putString(IWorkbenchConstants.TAG_MAXIMIZED, maximizedStackId);        	
-        }
-        
-        return r;
-    }
-
-    /**
-     * Zoom in on a particular layout part.
-     */
-    public void zoomIn(IWorkbenchPartReference ref) {
-        PartPane pane = ((WorkbenchPartReference) ref).getPane();
-
-
-        parentWidget.setRedraw(false);
-        try {
-            pane.requestZoomIn();
-        } finally {
-            parentWidget.setRedraw(true);
-        }
-    }
-
-    /**
-     * Zoom out.
-     */
-    public void zoomOut() {
-    	// New 3.3 behavior
-		if (Perspective.useNewMinMax(perspective)) {
-			 if (maximizedStack != null)
-				 maximizedStack.setState(IStackPresentationSite.STATE_RESTORED);
-			 return;
-		}
-		
-        LayoutPart zoomPart = mainLayout.getZoomedPart();
-        if (zoomPart != null) {
-            zoomPart.requestZoomOut();
-        }
-    }
-
-    /**
-     * Forces the perspective to have no zoomed or minimized parts.
-     * This is used when switching to the 3.3 presentation...
-     */
-    public void forceNoZoom() {
-    	// Ensure that nobody's zoomed
-    	zoomOut();
-    	
-    	// Now, walk the layout ensuring that nothing is minimized
-    	LayoutPart[] kids = mainLayout.getChildren();
-    	for (int i = 0; i < kids.length; i++) {
-			if (kids[i] instanceof ViewStack) {
-				((ViewStack)kids[i]).setMinimized(false);
-			}
-			else if (kids[i] instanceof EditorSashContainer) {
-				LayoutPart[] editorStacks = ((EditorSashContainer)kids[i]).getChildren();
-				for (int j = 0; j < editorStacks.length; j++) {
-					if (editorStacks[j] instanceof EditorStack) {
-						((EditorStack)editorStacks[j]).setMinimized(false);
-					}
-				}
-			}
-		}
-    }
-
-    /**
-     * Captures the current bounds of all ViewStacks and the editor
-     * area and puts them into an ID -> Rectangle map. This info is
-     * used to cache the bounds so that we can correctly place minimized
-     * stacks during a 'maximized' operation (where the iterative min's
-     * affect the current layout while being performed.
-     */
-    public void updateBoundsMap() {
-    	boundsMap.clear();
-    	
-    	// Walk the layout gathering the current bounds of each stack
-    	// and the editor area
-    	LayoutPart[] kids = mainLayout.getChildren();
-    	for (int i = 0; i < kids.length; i++) {
-			if (kids[i] instanceof ViewStack) {
-				ViewStack vs = (ViewStack)kids[i];
-				boundsMap.put(vs.getID(), vs.getBounds());
-			}
-			else if (kids[i] instanceof EditorSashContainer) {
-				EditorSashContainer esc = (EditorSashContainer)kids[i];
-				boundsMap.put(esc.getID(), esc.getBounds());
-			}
-		}
-    }
-
-	/**
-	 * Resets the bounds map so that it won't interfere with normal minimize
-	 * operayions
-	 */
-	public void resetBoundsMap() {
-		boundsMap.clear();
-	}
-	
-	public Rectangle getCachedBoundsFor(String id) {
-		return (Rectangle) boundsMap.get(id);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveListenerList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveListenerList.java
deleted file mode 100644
index aefd4d2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveListenerList.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener;
-import org.eclipse.ui.IPerspectiveListener2;
-import org.eclipse.ui.IPerspectiveListener3;
-import org.eclipse.ui.IPerspectiveListener4;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.misc.UIStats;
-
-/**
- * Perspective listener list.
- */
-public class PerspectiveListenerList extends EventManager {
-
-    /**
-     * PerspectiveListenerList constructor comment.
-     */
-    public PerspectiveListenerList() {
-        super();
-    }
-
-    /**
-     * Adds an IPerspectiveListener to the perspective service.
-     */
-    public void addPerspectiveListener(IPerspectiveListener l) {
-        addListenerObject(l);
-    }
-
-    /**
-     * Calls a perspective listener with associated performance event instrumentation
-     * 
-     * @param runnable
-     * @param listener
-     * @param perspective
-     * @param description
-     */
-    private void fireEvent(SafeRunnable runnable, IPerspectiveListener listener, IPerspectiveDescriptor perspective, String description) {
-    	String label = null;//for debugging
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PERSPECTIVE_LISTENERS)) {
-    		label = description + perspective.getId();
-    		UIStats.start(UIStats.NOTIFY_PERSPECTIVE_LISTENERS, label);
-    	}
-    	Platform.run(runnable);
-    	if (UIStats.isDebugging(UIStats.NOTIFY_PERSPECTIVE_LISTENERS)) {
-			UIStats.end(UIStats.NOTIFY_PERSPECTIVE_LISTENERS, listener, label);
-		}
-	}
-
-    /**
-     * Notifies the listener that a perspective has been activated.
-     */
-    public void firePerspectiveActivated(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            final IPerspectiveListener l = (IPerspectiveListener) array[nX];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.perspectiveActivated(page, perspective);
-                }
-            }, l, perspective, "activated::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a perspective has been deactivated.
-     * 
-     * @since 3.2
-     */
-    public void firePerspectivePreDeactivate(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            if (array[nX] instanceof IPerspectiveListener4) {
-                final IPerspectiveListener4 l4 = (IPerspectiveListener4) array[nX];
-                fireEvent(new SafeRunnable() {
-                    public void run() {
-                        l4.perspectivePreDeactivate(page, perspective);
-                    }
-                }, l4, perspective, "pre-deactivate::"); //$NON-NLS-1$
-            }
-        }
-    }
-
-    /**
-     * Notifies the listener that a perspective has been deactivated.
-     * 
-     * @since 3.1
-     */
-    public void firePerspectiveDeactivated(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            if (array[nX] instanceof IPerspectiveListener3) {
-                final IPerspectiveListener3 l3 = (IPerspectiveListener3) array[nX];
-                fireEvent(new SafeRunnable() {
-                    public void run() {
-                        l3.perspectiveDeactivated(page, perspective);
-                    }
-                }, l3, perspective, "deactivated::"); //$NON-NLS-1$
-            }
-        }
-    }
-
-    /**
-     * Notifies the listener that a perspective has been changed.
-     */
-    public void firePerspectiveChanged(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective, final String changeId) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            final IPerspectiveListener l = (IPerspectiveListener) array[nX];
-            fireEvent(new SafeRunnable() {
-                public void run() {
-                    l.perspectiveChanged(page, perspective, changeId);
-                }
-            }, l, perspective, "changed::"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Notifies the listener that a part has been affected
-     * in the given perspective.
-     * 
-     * @since 3.0
-     */
-    public void firePerspectiveChanged(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective,
-            final IWorkbenchPartReference partRef, final String changeId) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            if (array[nX] instanceof IPerspectiveListener2) {
-                final IPerspectiveListener2 l2 = (IPerspectiveListener2) array[nX];
-                fireEvent(new SafeRunnable() {
-                    public void run() {
-                        l2.perspectiveChanged(page, perspective, partRef,
-                                changeId);
-                    }
-                }, l2, perspective, "changed::"); //$NON-NLS-1$
-            }
-        }
-    }
-
-    /**
-     * Notifies the listener that a perspective has been closed.
-     * 
-     * @since 3.1
-     */
-    public void firePerspectiveClosed(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            if (array[nX] instanceof IPerspectiveListener3) {
-                final IPerspectiveListener3 l3 = (IPerspectiveListener3) array[nX];
-                fireEvent(new SafeRunnable() {
-                    public void run() {
-                        l3.perspectiveClosed(page, perspective);
-                    }
-                }, l3, perspective, "closed::"); //$NON-NLS-1$
-            }
-        }
-    }
-
-    /**
-     * Notifies the listener that a perspective has been opened.
-     * 
-     * @since 3.1
-     */
-    public void firePerspectiveOpened(final IWorkbenchPage page,
-            final IPerspectiveDescriptor perspective) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            if (array[nX] instanceof IPerspectiveListener3) {
-                final IPerspectiveListener3 l3 = (IPerspectiveListener3) array[nX];
-                fireEvent(new SafeRunnable() {
-                    public void run() {
-                        l3.perspectiveOpened(page, perspective);
-                    }
-                }, l3, perspective, "opened::"); //$NON-NLS-1$
-            }
-        }
-    }
-    
-    /**
-     * Notifies the listener that a perspective has been deactivated.
-     * 
-     * @since 3.1
-     */
-    public void firePerspectiveSavedAs(final IWorkbenchPage page,
-            final IPerspectiveDescriptor oldPerspective,
-            final IPerspectiveDescriptor newPerspective) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            if (array[nX] instanceof IPerspectiveListener3) {
-                final IPerspectiveListener3 l3 = (IPerspectiveListener3) array[nX];
-                fireEvent(new SafeRunnable() {
-                    public void run() {
-                        l3.perspectiveSavedAs(page, oldPerspective, newPerspective);
-                    }
-                }, l3, newPerspective, "saveAs::"); //$NON-NLS-1$
-            }
-        }
-    }
-
-    /**
-     * Removes an IPerspectiveListener from the perspective service.
-     */
-    public void removePerspectiveListener(IPerspectiveListener l) {
-        removeListenerObject(l);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java
deleted file mode 100644
index b6a70d7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java
+++ /dev/null
@@ -1,1338 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Grindstaff <chris@gstaff.org> - Fix for bug 158016     
- *     Tonny Madsen, RCP Company - bug 201055
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Arrays;
-import java.util.StringTokenizer;
-import java.util.HashMap;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CBanner;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PerspectiveAdapter;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.dnd.AbstractDropTarget;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.layout.CacheWrapper;
-import org.eclipse.ui.internal.layout.CellLayout;
-import org.eclipse.ui.internal.layout.ITrimManager;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.layout.Row;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.presentations.PresentationUtil;
-
-/**
- * A utility class to manage the perspective switcher.  At some point, it might be nice to
- * move all this into PerspectiveViewBar.
- * 
- * @since 3.0
- */
-public class PerspectiveSwitcher implements IWindowTrim {
-
-	/**
-	 * The minimal width for the switcher (i.e. for the open button and chevron).
-	 */
-	private static final int MIN_WIDTH = 45;
-	
-	/**
-	 * The average width for each perspective button.
-	 */
-	private static final int ITEM_WIDTH = 80;
-	
-	/**
-	 * The minimum default width.
-	 */
-	private static final int MIN_DEFAULT_WIDTH = 160;
-	
-	private IWorkbenchWindow window;
-
-    private CBanner topBar;
-
-    private int style;
-
-    private Composite parent;
-
-    private Composite trimControl;
-
-    private Label trimSeparator;
-
-    private GridData trimLayoutData;
-
-    private boolean trimVisible = false;
-
-    private int trimOldLength = 0;
-
-    private PerspectiveBarManager perspectiveBar;
-
-    private CoolBar perspectiveCoolBar;
-
-    private CacheWrapper perspectiveCoolBarWrapper;
-
-    private CoolItem coolItem;
-
-    private CacheWrapper toolbarWrapper;
-
-    // The menus are cached, so the radio buttons should not be disposed until
-    // the switcher is disposed.
-    private Menu popupMenu;
-
-    private Menu genericMenu;
-
-    private static final int INITIAL = -1;
-
-    private static final int TOP_RIGHT = 1;
-
-    private static final int TOP_LEFT = 2;
-
-    private static final int LEFT = 3;
-
-    private int currentLocation = INITIAL;
-
-    private IPreferenceStore apiPreferenceStore = PrefUtil
-            .getAPIPreferenceStore();
-
-    private IPropertyChangeListener propertyChangeListener;
-
-    private Listener popupListener = new Listener() {
-        public void handleEvent(Event event) {
-            if (event.type == SWT.MenuDetect) {
-                showPerspectiveBarPopup(new Point(event.x, event.y));
-            }
-        }
-    };
-
-    class ChangeListener extends PerspectiveAdapter implements IPageListener {
-        public void perspectiveOpened(IWorkbenchPage page,
-                IPerspectiveDescriptor perspective) {
-        	if (findPerspectiveShortcut(perspective, page) == null) {
-				addPerspectiveShortcut(perspective, page);
-			}
-        }
-        public void perspectiveClosed(IWorkbenchPage page,
-                IPerspectiveDescriptor perspective) {
-        	// Don't remove the shortcut if the workbench is
-        	// closing. This causes a spurious 'layout' on the
-        	// shell during close, leading to possible life-cycle issues
-        	if (page != null && !page.getWorkbenchWindow().getWorkbench().isClosing()) {
-        		removePerspectiveShortcut(perspective, page);
-        	}
-        }
-        public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
-            selectPerspectiveShortcut(perspective, page, true);
-        }
-        public void perspectiveDeactivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
-            selectPerspectiveShortcut(perspective, page, false);
-        }
-        public void perspectiveSavedAs(IWorkbenchPage page,
-                IPerspectiveDescriptor oldPerspective,
-                IPerspectiveDescriptor newPerspective) {
-            updatePerspectiveShortcut(oldPerspective, newPerspective, page);
-        }
-		public void pageActivated(IWorkbenchPage page) {
-		}
-
-		public void pageClosed(IWorkbenchPage page) {
-		}
-
-		public void pageOpened(IWorkbenchPage page) {
-		}
-    }
-    
-    private ChangeListener changeListener = new ChangeListener();
-    
-	private Listener dragListener;
-
-	private IDragOverListener dragTarget;
-
-	private DisposeListener toolBarListener;
-
-	private IReorderListener reorderListener;
-
-	/**
-     * Creates an instance of the perspective switcher.
-	 * @param window  it's window
-	 * @param topBar  the CBanner to place this widget in
-	 * @param style   the widget style to use
-	 */
-	public PerspectiveSwitcher(IWorkbenchWindow window, CBanner topBar, int style) {
-		this.window = window;
-		this.topBar = topBar;
-		this.style = style;
-		setPropertyChangeListener();
-		// this listener will only be run when the Shell is being disposed
-		// and each WorkbenchWindow has its own PerspectiveSwitcher
-		toolBarListener = new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				dispose();
-			}
-		};
-        window.addPerspectiveListener(changeListener);
-        window.addPageListener(changeListener);
-	}
-
-	private static int convertLocation(String preference) {
-		if (IWorkbenchPreferenceConstants.TOP_RIGHT.equals(preference)) {
-			return TOP_RIGHT;
-		}
-		if (IWorkbenchPreferenceConstants.TOP_LEFT.equals(preference)) {
-			return TOP_LEFT;
-		}
-		if (IWorkbenchPreferenceConstants.LEFT.equals(preference)) {
-			return LEFT;
-		}
-
-		return TOP_RIGHT;
-	}
-
-	/**
-     * Create the contents of the receiver
-	 * @param parent
-	 */
-	public void createControl(Composite parent) {
-		Assert.isTrue(this.parent == null);
-		this.parent = parent;
-		// set the initial location read from the preference
-		setPerspectiveBarLocation(PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR));
-	}
-
-	private void addPerspectiveShortcut(IPerspectiveDescriptor perspective,
-			IWorkbenchPage workbenchPage) {
-		if (perspectiveBar == null) {
-			return;
-		}
-
-		PerspectiveBarContributionItem item = new PerspectiveBarContributionItem(
-				perspective, workbenchPage);
-		perspectiveBar.addItem(item);
-		setCoolItemSize(coolItem);
-		// This is need to update the vertical size of the tool bar on GTK+ when
-		// using large fonts.
-		if (perspectiveBar != null) {
-			perspectiveBar.update(true);
-		}
-		
-		if (currentLocation == LEFT) {
-			updatePerspectiveBar();
-		}
-	}
-
-	/**
-     * Find a contribution item that matches the perspective provided.
-     * 
-	 * @param perspective
-	 * @param page
-	 * @return the <code>IContributionItem</code> or null if no matches were found
-	 */
-	public IContributionItem findPerspectiveShortcut(
-			IPerspectiveDescriptor perspective, IWorkbenchPage page) {
-		if (perspectiveBar == null) {
-			return null;
-		}
-
-		IContributionItem[] items = perspectiveBar.getItems();
-		int length = items.length;
-		for (int i = 0; i < length; i++) {
-			IContributionItem item = items[i];
-			if (item instanceof PerspectiveBarContributionItem
-					&& ((PerspectiveBarContributionItem) item).handles(
-							perspective, page)) {
-				return item;
-			}
-		}
-		return null;
-	}
-
-	private void removePerspectiveShortcut(IPerspectiveDescriptor perspective,
-			IWorkbenchPage page) {
-		if (perspectiveBar == null) {
-			return;
-		}
-
-		IContributionItem item = findPerspectiveShortcut(perspective, page);
-		if (item != null) {
-			if (item instanceof PerspectiveBarContributionItem) {
-				perspectiveBar
-						.removeItem((PerspectiveBarContributionItem) item);
-			}
-			item.dispose();
-			perspectiveBar.update(false);
-			setCoolItemSize(coolItem);
-			
-			if (currentLocation == LEFT) {
-				updatePerspectiveBar();
-				LayoutUtil.resize(perspectiveBar.getControl());
-			}
-		}
-	}
-
-	/**
-     * Locate the perspective bar according to the provided location
-	 * @param preference the location to put the perspective bar at
-	 */
-	public void setPerspectiveBarLocation(String preference) {
-		// return if the control has not been created. createControl(...) will
-		// handle updating the state in that case
-		if (parent == null) {
-			return;
-		}
-		int newLocation = convertLocation(preference);
-		if (newLocation == currentLocation) {
-			return;
-		}
-		createControlForLocation(newLocation);
-		currentLocation = newLocation;
-		showPerspectiveBar();
-		if (newLocation == TOP_LEFT || newLocation == TOP_RIGHT) {
-			updatePerspectiveBar();
-			updateBarParent();
-		}
-	}
-
-	/**
-	 * Make the perspective bar visible in its current location. This method
-	 * should not be used unless the control has been successfully created.
-	 */
-	private void showPerspectiveBar() {
-		switch (currentLocation) {
-		case TOP_LEFT:
-			topBar.setRight(null);
-			topBar.setBottom(perspectiveCoolBarWrapper.getControl());
-			break;
-		case TOP_RIGHT:
-			topBar.setBottom(null);
-			topBar.setRight(perspectiveCoolBarWrapper.getControl());
-			topBar.setRightWidth(getDefaultWidth());
-			break;
-		case LEFT:
-			topBar.setBottom(null);
-			topBar.setRight(null);
-			LayoutUtil.resize(topBar);
-			getTrimManager().addTrim(SWT.LEFT, this);
-			break;
-		default:
-			return;
-		}
-
-		LayoutUtil.resize(perspectiveBar.getControl());
-	}
-
-	/**
-	 * Returns the default width for the switcher.
-	 */
-	private int getDefaultWidth() {
-        String extras = PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.PERSPECTIVE_BAR_EXTRAS);
-        StringTokenizer tok = new StringTokenizer(extras, ", "); //$NON-NLS-1$
-        int numExtras = tok.countTokens();
-        int numPersps = Math.max(numExtras, 1); // assume initial perspective is also listed in extras
-		return Math.max(MIN_DEFAULT_WIDTH, MIN_WIDTH + (numPersps*ITEM_WIDTH));
-	}
-
-	/**
-	 * Get the trim manager from the default workbench window. If the current
-	 * workbench window is -not- the <code>WorkbenchWindow</code> then return null.
-	 *  
-	 * @return The trim manager for the current workbench window
-	 */
-	private ITrimManager getTrimManager() {
-		if (window instanceof WorkbenchWindow)
-			return ((WorkbenchWindow)window).getTrimManager();
-		
-		return null; // not using the default workbench window
-	}
-
-	/**
-     * Update the receiver
-	 * @param force
-	 */
-	public void update(boolean force) {
-		if (perspectiveBar == null) {
-			return;
-		}
-
-		perspectiveBar.update(force);
-
-		if (currentLocation == LEFT) {
-			ToolItem[] items = perspectiveBar.getControl().getItems();
-			boolean shouldExpand = items.length > 0;
-			if (shouldExpand != trimVisible) {
-				perspectiveBar.getControl().setVisible(true);
-				trimVisible = shouldExpand;
-			}
-
-			if (items.length != trimOldLength) {
-				LayoutUtil.resize(trimControl);
-				trimOldLength = items.length;
-			}
-		}
-	}
-
-	private void selectPerspectiveShortcut(IPerspectiveDescriptor perspective,
-			IWorkbenchPage page, boolean selected) {
-		IContributionItem item = findPerspectiveShortcut(perspective, page);
-		if (item != null && (item instanceof PerspectiveBarContributionItem)) {
-			if (selected) {
-				// check if not visible and ensure visible
-				PerspectiveBarContributionItem contribItem = (PerspectiveBarContributionItem) item;
-				perspectiveBar.select(contribItem);
-			}
-			// select or de-select
-			((PerspectiveBarContributionItem) item).setSelection(selected);
-		}
-	}
-
-	private void updatePerspectiveShortcut(IPerspectiveDescriptor oldDesc,
-			IPerspectiveDescriptor newDesc, IWorkbenchPage page) {
-		IContributionItem item = findPerspectiveShortcut(oldDesc, page);
-		if (item != null && (item instanceof PerspectiveBarContributionItem)) {
-			((PerspectiveBarContributionItem) item).update(newDesc);
-		}
-	}
-
-	/**
-     * Answer the perspective bar manager
-	 * @return the manager
-	 */
-	public PerspectiveBarManager getPerspectiveBar() {
-		return perspectiveBar;
-	}
-
-	/**
-	 * Dispose resources being held by the receiver
-	 */
-	public void dispose() {
-        window.removePerspectiveListener(changeListener);
-        window.removePageListener(changeListener);
-		if (propertyChangeListener != null) {
-			apiPreferenceStore
-					.removePropertyChangeListener(propertyChangeListener);
-			propertyChangeListener = null;
-		}
-		unhookDragSupport();
-		disposeChildControls();
-		toolBarListener = null;
-	}
-
-	private void disposeChildControls() {
-
-		if (trimControl != null) {
-			trimControl.dispose();
-			trimControl = null;
-		}
-
-		if (trimSeparator != null) {
-			trimSeparator.dispose();
-			trimSeparator = null;
-		}
-
-		if (perspectiveCoolBar != null) {
-			perspectiveCoolBar.dispose();
-			perspectiveCoolBar = null;
-		}
-
-		if (toolbarWrapper != null) {
-			toolbarWrapper.dispose();
-			toolbarWrapper = null;
-		}
-
-		if (perspectiveBar != null) {
-			perspectiveBar.dispose();
-			perspectiveBar = null;
-		}
-
-		perspectiveCoolBarWrapper = null;
-	}
-
-	/**
-	 * Ensures the control has been set for the argument location. If the
-	 * control already exists and can be used the argument location, nothing
-	 * happens. Updates the location attribute.
-	 * 
-	 * @param newLocation
-	 */
-	private void createControlForLocation(int newLocation) {
-		// if there is a control, then perhaps it can be reused
-		if (perspectiveBar != null && perspectiveBar.getControl() != null
-				&& !perspectiveBar.getControl().isDisposed()) {
-			if (newLocation == LEFT && currentLocation == LEFT) {
-				return;
-			}
-			if ((newLocation == TOP_LEFT || newLocation == TOP_RIGHT)
-					&& (currentLocation == TOP_LEFT || currentLocation == TOP_RIGHT)) {
-				return;
-			}
-		}
-
-		if (perspectiveBar != null) {
-			perspectiveBar.getControl().removeDisposeListener(toolBarListener);
-			unhookDragSupport();
-		}
-		// otherwise dispose the current controls and make new ones
-		
-		// First, make sure that the existing verion is removed from the trim layout
-		getTrimManager().removeTrim(this);
-
-		disposeChildControls();
-		if (newLocation == LEFT) {
-			createControlForLeft();
-		} else {
-			createControlForTop();
-		}
-		hookDragSupport();
-
-		perspectiveBar.getControl().addDisposeListener(toolBarListener);
-	}
-
-	/**
-	 * Remove any drag and drop support and associated listeners hooked for the
-	 * perspective switcher.
-	 */
-	private void unhookDragSupport() {
-		ToolBar bar = perspectiveBar.getControl();
-
-		if (bar == null || bar.isDisposed() || dragListener == null) {
-			return;
-		}
-		PresentationUtil.removeDragListener(bar, dragListener);
-		DragUtil.removeDragTarget(perspectiveBar.getControl(), dragTarget);
-		dragListener = null;
-		dragTarget = null;
-	}
-
-    /**
-	 * Attach drag and drop support and associated listeners hooked for 
-	 * the perspective switcher.
-	 */
-	 private void hookDragSupport() {
-        dragListener = new Listener() {
-        	/* (non-Javadoc)
-			 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-			 */
-			public void handleEvent(Event event) {
-				ToolBar toolbar = perspectiveBar.getControl();
-                ToolItem item = toolbar.getItem(new Point(event.x, event.y));
-                
-                if (item != null) {
-                	//ignore the first item, which remains in position Zero
-                    if (item.getData() instanceof PerspectiveBarNewContributionItem) {
-						return;
-					}
-                    
-                	Rectangle bounds = item.getBounds();
-                	Rectangle parentBounds = toolbar.getBounds();
-                	bounds.x += parentBounds.x;
-                	bounds.y += parentBounds.y;
-                	startDragging(item.getData(), toolbar.getDisplay().map(toolbar, null, bounds));
-                } else { 
-                    //startDragging(toolbar, toolbar.getDisplay().map(toolbar, null, toolbar.getBounds()));
-                }
-            }
-			
-			private void startDragging(Object widget, Rectangle bounds) {
-				if(!DragUtil.performDrag(widget, bounds, new Point(bounds.x, bounds.y), true)) {
-				       //currently do nothing on a failed drag 
-                }
-		    }
-        };
-
-		dragTarget = new IDragOverListener() {
-			protected PerspectiveDropTarget perspectiveDropTarget;
-
-			class PerspectiveDropTarget extends AbstractDropTarget {
-
-				private PerspectiveBarContributionItem perspective;
-
-				private Point location;
-
-                /**
-				 * @param location
-				 * @param draggedObject
-				 */
-				public PerspectiveDropTarget(Object draggedObject,
-						Point location) {
-					update(draggedObject, location);
-				}
-
-				/**
-				 * 
-				 * @param draggedObject
-				 * @param location
-				 */
-				private void update(Object draggedObject, Point location) {
-					this.location = location;
-					this.perspective = (PerspectiveBarContributionItem) draggedObject;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.ui.internal.dnd.IDropTarget#drop()
-				 */
-				public void drop() {
-					ToolBar toolBar = perspectiveBar.getControl();
-					ToolItem item = toolBar.getItem(toolBar.getDisplay().map(
-							null, toolBar, location));
-					if (toolBar.getItem(0) == item) {
-						return;
-					}
-					ToolItem[] items = toolBar.getItems();
-					ToolItem droppedItem = null;
-					int dropIndex = -1;
-					for (int i = 0; i < items.length; i++) {
-						if (item == items[i]) {
-							dropIndex = i;
-						}
-						if (items[i].getData() == perspective) {
-							droppedItem = items[i];
-						}
-					}
-					if (dropIndex != -1 && droppedItem != null && (droppedItem != item)) {
-						PerspectiveBarContributionItem barItem = (PerspectiveBarContributionItem) droppedItem.getData();
-						// policy is to insert at the beginning so mirror the value when indicating a 
-						// new position for the perspective
-						if (reorderListener != null) {
-							reorderListener.reorder(barItem.getPerspective(), Math.abs(dropIndex - (items.length - 1)));
-						}
-
-						perspectiveBar.relocate(barItem, dropIndex);
-					}
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.ui.internal.dnd.IDropTarget#getCursor()
-				 */
-				public Cursor getCursor() {
-					return DragCursors.getCursor(DragCursors.CENTER);
-				}
-
-				boolean sameShell() {
-					return perspective.getToolItem().getParent().getShell().equals(perspectiveBar.getControl().getShell());
-				}
-				
-				public Rectangle getSnapRectangle() {
-					ToolBar toolBar = perspectiveBar.getControl();
-					ToolItem item = toolBar.getItem(toolBar.getDisplay().map(
-							null, toolBar, location));
-					Rectangle bounds;
-					if (item != null && item != toolBar.getItem(0)) {
-						bounds = item.getBounds();
-					} else {
-						// it should not be possible to start a drag with item 0
-						return null;
-					}
-					return toolBar.getDisplay().map(toolBar, null, bounds);
-				}
-			}
-
-			public IDropTarget drag(Control currentControl,
-					Object draggedObject, Point position,
-					Rectangle dragRectangle) {
-				if (draggedObject instanceof PerspectiveBarContributionItem) {
-					if (perspectiveDropTarget == null) {
-						perspectiveDropTarget = new PerspectiveDropTarget(
-								draggedObject, position);
-					} else {
-						perspectiveDropTarget.update(draggedObject, position);
-					}
-					// do not support drag to perspective bars between shells.
-					if (!perspectiveDropTarget.sameShell()) {
-						return null;
-					}
-					
-					return perspectiveDropTarget;
-				}// else if (draggedObject instanceof IPerspectiveBar) {
-				//	return new PerspectiveBarDropTarget();
-				//}
-
-				return null;
-			}
-
-		};
-
-		PresentationUtil.addDragListener(perspectiveBar.getControl(),
-				dragListener);
-		DragUtil.addDragTarget(perspectiveBar.getControl(), dragTarget);
-	}
-
-	private void setPropertyChangeListener() {
-        propertyChangeListener = new IPropertyChangeListener() {
-
-            public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
-                if (IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR
-                        .equals(propertyChangeEvent.getProperty())) {
-                    if (perspectiveBar == null) {
-						return;
-					}
-                    updatePerspectiveBar();
-                    updateBarParent();
-                }
-            }
-        };
-        apiPreferenceStore.addPropertyChangeListener(propertyChangeListener);
-    }
-
-    private void createControlForLeft() {
-        trimControl = new Composite(parent, SWT.NONE);
-
-        trimControl.setLayout(new CellLayout(1).setMargins(0, 0).setSpacing(3,
-                3).setDefaultRow(Row.fixed()).setDefaultColumn(Row.growing()));
-
-        perspectiveBar = createBarManager(SWT.VERTICAL);
-
-        perspectiveBar.createControl(trimControl);
-        perspectiveBar.getControl().addListener(SWT.MenuDetect, popupListener);
-
-//        trimSeparator = new Label(trimControl, SWT.SEPARATOR | SWT.HORIZONTAL);
-//        GridData sepData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
-//                | GridData.HORIZONTAL_ALIGN_CENTER);
-//        sepData.widthHint = SEPARATOR_LENGTH;
-//        trimSeparator.setLayoutData(sepData);
-//        trimSeparator.setVisible(false);
-
-        trimLayoutData = new GridData(GridData.FILL_BOTH);
-        trimVisible = false;
-        perspectiveBar.getControl().setLayoutData(trimLayoutData);
-    }
-
-    private void createControlForTop() {
-        perspectiveBar = createBarManager(SWT.HORIZONTAL);
-
-        perspectiveCoolBarWrapper = new CacheWrapper(topBar);
-        perspectiveCoolBar = new CoolBar(
-                perspectiveCoolBarWrapper.getControl(), SWT.FLAT);
-        coolItem = new CoolItem(perspectiveCoolBar, SWT.DROP_DOWN);
-        toolbarWrapper = new CacheWrapper(perspectiveCoolBar);
-        perspectiveBar.createControl(toolbarWrapper.getControl());
-        coolItem.setControl(toolbarWrapper.getControl());
-        perspectiveCoolBar.setLocked(true);
-        perspectiveBar.setParent(perspectiveCoolBar);
-        perspectiveBar.update(true);
-
-        // adjust the toolbar size to display as many items as possible
-        perspectiveCoolBar.addControlListener(new ControlAdapter() {
-            public void controlResized(ControlEvent e) {
-                setCoolItemSize(coolItem);
-            }
-        });
-
-        coolItem.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                if (e.detail == SWT.ARROW) {
-                    if (perspectiveBar != null) {
-                        perspectiveBar.handleChevron(e);
-                    }
-                }
-            }
-        });
-        coolItem.setMinimumSize(0, 0);
-        perspectiveBar.getControl().addListener(SWT.MenuDetect, popupListener);
-    }
-
-    /**
-     * @param coolItem
-     */
-    private void setCoolItemSize(final CoolItem coolItem) {
-        // there is no coolItem when the bar is on the left
-        if (currentLocation == LEFT) {
-			return;
-		}
-
-        ToolBar toolbar = perspectiveBar.getControl();
-        if (toolbar == null) {
-			return;
-		}
-
-        int rowHeight = 0;
-        ToolItem[] toolItems = toolbar.getItems();
-        for (int i = 0; i < toolItems.length; i++) {
-            rowHeight = Math.max(rowHeight, toolItems[i].getBounds().height);
-        }
-
-        Rectangle area = perspectiveCoolBar.getClientArea();
-        int rows = rowHeight <= 0 ? 1 : (int) Math.max(1, Math
-                .floor(area.height / rowHeight));
-        if (rows == 1 || (toolbar.getStyle() & SWT.WRAP) == 0
-                || currentLocation == TOP_LEFT) {
-            Point p = toolbar.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-            coolItem.setSize(coolItem.computeSize(p.x, p.y));
-            return;
-        }
-        Point offset = coolItem.computeSize(0, 0);
-        Point wrappedSize = toolbar.computeSize(area.width - offset.x,
-                SWT.DEFAULT);
-        int h = rows * rowHeight;
-        int w = wrappedSize.y <= h ? wrappedSize.x : wrappedSize.x + 1;
-        coolItem.setSize(coolItem.computeSize(w, h));
-    }
-
-    private void showPerspectiveBarPopup(Point pt) {
-        if (perspectiveBar == null) {
-			return;
-		}
-
-        // Get the tool item under the mouse.
-        ToolBar toolBar = perspectiveBar.getControl();
-        ToolItem toolItem = toolBar.getItem(toolBar.toControl(pt));
-        
-        // Get the action for the tool item.
-        Object data = null;
-        if (toolItem != null){
-            data = toolItem.getData();
-        }
-        if (toolItem == null
-                || !(data instanceof PerspectiveBarContributionItem)) {
-            if (genericMenu == null) {
-                Menu menu = new Menu(toolBar);
-                addDockOnSubMenu(menu);
-                addShowTextItem(menu);
-                genericMenu = menu;
-            }
-
-            // set the state of the menu items to match the preferences
-            genericMenu
-                    .getItem(1)
-                    .setSelection(
-                            PrefUtil
-                                    .getAPIPreferenceStore()
-                                    .getBoolean(
-                                            IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
-            updateLocationItems(genericMenu.getItem(0).getMenu(),
-                    currentLocation);
-
-            // Show popup menu.
-            genericMenu.setLocation(pt.x, pt.y);
-            genericMenu.setVisible(true);
-            return;
-        }
-
-        if (data == null || !(data instanceof PerspectiveBarContributionItem)) {
-			return;
-		}
-
-        PerspectiveBarContributionItem pbci = (PerspectiveBarContributionItem) data;
-        IPerspectiveDescriptor selectedPerspective = pbci.getPerspective();
-
-        // The perspective bar menu is created lazily here.
-        // Its data is set (each time) to the tool item, which refers to the SetPagePerspectiveAction
-        // which in turn refers to the page and perspective.
-        // It is important not to refer to the action, the page or the perspective directly
-        // since otherwise the menu hangs on to them after they are closed.
-        // By hanging onto the tool item instead, these references are cleared when the
-        // corresponding page or perspective is closed.
-        // See bug 11282 for more details on why it is done this way.
-        if (popupMenu != null) {
-        	popupMenu.dispose();
-        	popupMenu = null;
-        }
-        popupMenu = createPopup(toolBar, selectedPerspective);
-        popupMenu.setData(toolItem);
-        
-        // Show popup menu.
-        popupMenu.setLocation(pt.x, pt.y);
-        popupMenu.setVisible(true);
-    }
-
-    /**
-     * @param persp the perspective
-     * @return <code>true</code> if the perspective is active in the active page 
-     */
-    private boolean perspectiveIsActive(IPerspectiveDescriptor persp) {
-    	IWorkbenchPage page = window.getActivePage();
-        return page != null && persp.equals(page.getPerspective());
-    }
-
-    /**
-     * @param persp the perspective
-     * @return <code>true</code> if the perspective is open in the active page 
-     */
-    private boolean perspectiveIsOpen(IPerspectiveDescriptor persp) {
-    	IWorkbenchPage page = window.getActivePage();
-    	return page != null && Arrays.asList(page.getOpenPerspectives()).contains(persp);
-    }
-
-	private Menu createPopup(ToolBar toolBar, IPerspectiveDescriptor persp){
-		Menu menu = new Menu(toolBar);
-		if (perspectiveIsActive(persp)) {
-			addCustomizeItem(menu);
-			addSaveAsItem(menu);
-			addResetItem(menu);
-		}
-		if (perspectiveIsOpen(persp)) {
-			addCloseItem(menu);
-		}
-
-		new MenuItem(menu, SWT.SEPARATOR);
-		addDockOnSubMenu(menu);
-		addShowTextItem(menu);
-		return menu;
-	}
-
-    private void addCloseItem(Menu menu) {
-        MenuItem menuItem = new MenuItem(menu, SWT.NONE);
-        menuItem.setText(WorkbenchMessages.WorkbenchWindow_close); 
-        window.getWorkbench().getHelpSystem().setHelp(menuItem,
-        		IWorkbenchHelpContextIds.CLOSE_PAGE_ACTION);
-        menuItem.addSelectionListener(new SelectionAdapter() {
-			private static final String COMMAND_CLOSE_PERSP = "org.eclipse.ui.window.closePerspective"; //$NON-NLS-1$
-			private static final String PARAMETER_CLOSE_PERSP_ID = "org.eclipse.ui.window.closePerspective.perspectiveId"; //$NON-NLS-1$
-
-			public void widgetSelected(SelectionEvent e) {
-                ToolItem perspectiveToolItem = (ToolItem) popupMenu
-                        .getData();
-
-                if (perspectiveToolItem != null
-						&& !perspectiveToolItem.isDisposed()) {
-					PerspectiveBarContributionItem item = (PerspectiveBarContributionItem) perspectiveToolItem
-							.getData();
-					IPerspectiveDescriptor persp = item.getPerspective();
-					
-					ICommandService commandService = (ICommandService) window.getService(ICommandService.class);
-					Command command = commandService.getCommand(COMMAND_CLOSE_PERSP);
-					
-					HashMap parameters = new HashMap();
-					parameters.put(PARAMETER_CLOSE_PERSP_ID, persp.getId());
-					
-					ParameterizedCommand pCommand = ParameterizedCommand.generateCommand(command, parameters);
-					
-					IHandlerService handlerService = (IHandlerService) window
-							.getService(IHandlerService.class);
-					try {
-						handlerService.executeCommand(pCommand, new Event());
-					} catch (ExecutionException e1) {
-					} catch (NotDefinedException e1) {
-					} catch (NotEnabledException e1) {
-					} catch (NotHandledException e1) {
-					}
-                }
-            }
-        });
-    }
-
-    /**
-     * @param direction one of <code>SWT.HORIZONTAL</code> or <code>SWT.VERTICAL</code>
-     */
-    private PerspectiveBarManager createBarManager(int direction) {
-        PerspectiveBarManager barManager = new PerspectiveBarManager(style
-                | direction);
-        if (apiPreferenceStore.getBoolean(IWorkbenchPreferenceConstants.SHOW_OPEN_ON_PERSPECTIVE_BAR)) {
-			barManager.add(new PerspectiveBarNewContributionItem(window));
-		}
-
-        // add an item for all open perspectives
-        IWorkbenchPage page = window.getActivePage();
-        if (page != null) {
-            // these are returned with the most recently opened one first
-            IPerspectiveDescriptor[] perspectives = page
-                    .getOpenPerspectives();
-            for (int i = 0; i < perspectives.length; i++) {
-                barManager.insert(1, new PerspectiveBarContributionItem(
-                        perspectives[i], page));
-            }
-        }
-
-        return barManager;
-    }
-
-
-    private void updateLocationItems(Menu parent, int newLocation) {
-        MenuItem left;
-        MenuItem topLeft;
-        MenuItem topRight;
-
-        topRight = parent.getItem(0);
-        topLeft = parent.getItem(1);
-        left = parent.getItem(2);
-
-        if (newLocation == LEFT) {
-            left.setSelection(true);
-            topRight.setSelection(false);
-            topLeft.setSelection(false);
-        } else if (newLocation == TOP_LEFT) {
-            topLeft.setSelection(true);
-            left.setSelection(false);
-            topRight.setSelection(false);
-        } else {
-            topRight.setSelection(true);
-            left.setSelection(false);
-            topLeft.setSelection(false);
-        }
-    }
-
-    private void addDockOnSubMenu(Menu menu) {
-        MenuItem item = new MenuItem(menu, SWT.CASCADE);
-        item.setText(WorkbenchMessages.PerspectiveSwitcher_dockOn);
-
-        final Menu subMenu = new Menu(item);
-
-        final MenuItem menuItemTopRight = new MenuItem(subMenu, SWT.RADIO);
-        menuItemTopRight.setText(WorkbenchMessages.PerspectiveSwitcher_topRight); 
-        
-        window.getWorkbench().getHelpSystem().setHelp(menuItemTopRight,
-        		IWorkbenchHelpContextIds.DOCK_ON_PERSPECTIVE_ACTION);
-
-        final MenuItem menuItemTopLeft = new MenuItem(subMenu, SWT.RADIO);
-        menuItemTopLeft.setText(WorkbenchMessages.PerspectiveSwitcher_topLeft); 
-        
-        window.getWorkbench().getHelpSystem().setHelp(menuItemTopLeft,
-        		IWorkbenchHelpContextIds.DOCK_ON_PERSPECTIVE_ACTION);
-
-        final MenuItem menuItemLeft = new MenuItem(subMenu, SWT.RADIO);
-        menuItemLeft.setText(WorkbenchMessages.PerspectiveSwitcher_left); 
-        
-        window.getWorkbench().getHelpSystem().setHelp(menuItemLeft,
-        		IWorkbenchHelpContextIds.DOCK_ON_PERSPECTIVE_ACTION);
-
-        SelectionListener listener = new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                MenuItem item = (MenuItem) e.widget;
-                String pref = null;
-                if (item.equals(menuItemLeft)) {
-                    updateLocationItems(subMenu, LEFT);
-                    pref = IWorkbenchPreferenceConstants.LEFT;
-                } else if (item.equals(menuItemTopLeft)) {
-                    updateLocationItems(subMenu, TOP_LEFT);
-                    pref = IWorkbenchPreferenceConstants.TOP_LEFT;
-                } else {
-                    updateLocationItems(subMenu, TOP_RIGHT);
-                    pref = IWorkbenchPreferenceConstants.TOP_RIGHT;
-                }
-                IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-                if (!pref
-						.equals(apiStore
-								.getDefaultString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR))) {
-					PrefUtil.getInternalPreferenceStore().setValue(
-							IPreferenceConstants.OVERRIDE_PRESENTATION, true);
-				}
-                apiStore.setValue(
-                        IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
-                        pref);
-            }
-        };
-
-        menuItemTopRight.addSelectionListener(listener);
-        menuItemTopLeft.addSelectionListener(listener);
-        menuItemLeft.addSelectionListener(listener);
-        item.setMenu(subMenu);
-        updateLocationItems(subMenu, currentLocation);
-    }
-
-    private void addShowTextItem(Menu menu) {
-        final MenuItem showtextMenuItem = new MenuItem(menu, SWT.CHECK);
-        showtextMenuItem.setText(WorkbenchMessages.PerspectiveBar_showText);
-        window.getWorkbench().getHelpSystem().setHelp(showtextMenuItem,
-        		IWorkbenchHelpContextIds.SHOW_TEXT_PERSPECTIVE_ACTION);
-
-        showtextMenuItem.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                if (perspectiveBar == null) {
-					return;
-				}
-
-                boolean preference = showtextMenuItem.getSelection();
-                if (preference != PrefUtil
-						.getAPIPreferenceStore()
-						.getDefaultBoolean(
-								IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR)) {
-                	PrefUtil.getInternalPreferenceStore().setValue(
-							IPreferenceConstants.OVERRIDE_PRESENTATION, true);
-				}
-                PrefUtil
-                        .getAPIPreferenceStore()
-                        .setValue(
-                                IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR,
-                                preference);
-            }
-        });
-        showtextMenuItem.setSelection(
-                PrefUtil
-                        .getAPIPreferenceStore()
-                        .getBoolean(
-                                IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));        
-    }
-
-    private void addCustomizeItem(Menu menu) {
-        final MenuItem customizeMenuItem = new MenuItem(menu, SWT.Activate);
-		customizeMenuItem.setText(WorkbenchMessages.PerspectiveBar_customize);
-		window.getWorkbench().getHelpSystem().setHelp(customizeMenuItem,
-				IWorkbenchHelpContextIds.EDIT_ACTION_SETS_ACTION);
-		customizeMenuItem.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (perspectiveBar == null) {
-					return;
-				}
-				IHandlerService handlerService = (IHandlerService) window
-						.getService(IHandlerService.class);
-				try {
-					handlerService.executeCommand(
-							"org.eclipse.ui.window.customizePerspective", null); //$NON-NLS-1$
-				} catch (ExecutionException e1) {
-				} catch (NotDefinedException e1) {
-				} catch (NotEnabledException e1) {
-				} catch (NotHandledException e1) {
-				}
-			}
-		});
-    }
-    
-    private void addSaveAsItem(Menu menu) {
-        final MenuItem saveasMenuItem = new MenuItem(menu, SWT.Activate);
-        saveasMenuItem.setText(WorkbenchMessages.PerspectiveBar_saveAs); 
-        window.getWorkbench().getHelpSystem().setHelp(saveasMenuItem,
-        		IWorkbenchHelpContextIds.SAVE_PERSPECTIVE_ACTION);
-        saveasMenuItem.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                if (perspectiveBar == null) {
-					return;
-				}
-                SavePerspectiveAction saveAction=new SavePerspectiveAction(window);
-                saveAction.setEnabled(true);
-                saveAction.run();
-            }
-        });
-    }
-    
-    private void addResetItem(Menu menu) {
-        final MenuItem resetMenuItem = new MenuItem(menu, SWT.Activate);
-        resetMenuItem.setText(WorkbenchMessages.PerspectiveBar_reset);
-        window.getWorkbench().getHelpSystem().setHelp(resetMenuItem,
-        		IWorkbenchHelpContextIds.RESET_PERSPECTIVE_ACTION);
-        resetMenuItem.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                if (perspectiveBar == null) {
-					return;
-				}
-                ResetPerspectiveAction resetAction=new ResetPerspectiveAction(window);
-                resetAction.setEnabled(true);
-                resetAction.run(); 
-             }
-        });
-    }
-    
-    /**
-     * Method to save the width of the perspective bar in the 
-     * @param persBarMem 
-     */
-    public void saveState(IMemento persBarMem) {
-        // save the width of the perspective bar
-        IMemento childMem = persBarMem
-                .createChild(IWorkbenchConstants.TAG_ITEM_SIZE);
-
-        int x;
-        if (currentLocation == TOP_RIGHT && topBar != null) {
-			x = topBar.getRightWidth();
-		} else {
-			x = getDefaultWidth();
-		}
-
-        childMem.putString(IWorkbenchConstants.TAG_X, Integer.toString(x));
-    }
-
-    /**
-     * Method to restore the width of the perspective bar
-     * @param memento 
-     */
-    public void restoreState(IMemento memento) {
-        if (memento == null) {
-			return;
-		}
-        // restore the width of the perspective bar
-        IMemento attributes = memento
-                .getChild(IWorkbenchConstants.TAG_PERSPECTIVE_BAR);
-        IMemento size = null;
-        if (attributes != null) {
-			size = attributes.getChild(IWorkbenchConstants.TAG_ITEM_SIZE);
-		}
-        if (size != null && currentLocation == TOP_RIGHT && topBar != null) {
-            final Integer x = size.getInteger(IWorkbenchConstants.TAG_X);
-            StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() {
-					if (x != null) {
-						topBar.setRightWidth(x.intValue());
-					} else {
-						topBar.setRightWidth(getDefaultWidth());
-					}
-				}});
-        }
-    }
-
-    /**
-     * Method to rebuild and update the toolbar when necessary
-     */
-    void updatePerspectiveBar() {
-        // Update each item as the text may have to be shortened.
-        IContributionItem[] items = perspectiveBar.getItems();
-        for (int i = 0; i < items.length; i++) {
-			items[i].update();
-		}
-        // make sure the selected item is visible
-        perspectiveBar.arrangeToolbar();
-        setCoolItemSize(coolItem);
-        perspectiveBar.getControl().redraw();
-        
-        if (getControl() != null)
-        	getControl().pack(true);
-    }
-
-    /**
-     * Updates the height of the CBanner if the perspective bar
-     * is docked on the top right
-     */
-    public void updateBarParent() {
-        if (perspectiveBar == null || perspectiveBar.getControl() == null) {
-			return;
-		}
-
-        // TOP_LEFT and LEFT need only relayout in this case, however TOP_RIGHT
-        // will need to set the minimum height of the CBanner as it might have changed.
-        if (currentLocation == TOP_RIGHT && topBar != null) {
-            // This gets the height of the tallest tool item.
-            int maxRowHeight = 0;
-            ToolItem[] toolItems = perspectiveBar.getControl().getItems();
-            for (int i = 0; i < toolItems.length; i++) {
-                maxRowHeight = Math.max(maxRowHeight,
-                        toolItems[i].getBounds().height);
-            }
-            // This sets the CBanner's minimum height to support large fonts
-            // TODO: Actually calculate the correct 'min' size for the right side
-            topBar.setRightMinimumSize(new Point(MIN_WIDTH, maxRowHeight));
-        }
-
-        LayoutUtil.resize(perspectiveBar.getControl());
-    }
-
-	/**
-	 * Add a listener for reordering of perspectives (usually done through drag
-	 * and drop).
-	 * 
-	 * @param listener
-	 */
-	public void addReorderListener(IReorderListener listener) {
-		reorderListener = listener;	
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#dock(int)
-	 */
-	public void dock(int dropSide) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getControl()
-	 */
-	public Control getControl() {
-		return trimControl;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getId()
-	 */
-	public String getId() {
-		return "org.eclipse.ui.internal.PerspectiveSwitcher"; //$NON-NLS-1$
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getDisplayName()
-	 */
-	public String getDisplayName() {
-		return WorkbenchMessages.TrimCommon_PerspectiveSwitcher_TrimName;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getValidSides()
-	 */
-	public int getValidSides() {
-		return SWT.NONE;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#isCloseable()
-	 */
-	public boolean isCloseable() {
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#handleClose()
-	 */
-	public void handleClose() {
-		// nothing to do...		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#getWidthHint()
-	 */
-	public int getWidthHint() {
-		return SWT.DEFAULT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#getHeightHint()
-	 */
-	public int getHeightHint() {
-		return SWT.DEFAULT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#isResizeable()
-	 */
-	public boolean isResizeable() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java
deleted file mode 100644
index 481f7ab..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PerspectiveAdapter;
-
-/**
- * Utility class for tracking the active perspective in a window.
- *
- * @since 3.1
- */
-public class PerspectiveTracker extends PerspectiveAdapter implements
-        IPageListener {
-
-    private IWorkbenchWindow window;
-
-    private IAction action;
-
-    /**
-     * Creates a perspective tracker for the given window.
-     * Subclasses should override <code>update(IPerspectiveDescriptor)</code>
-     * to get notified of perspective changes.
-     * 
-     * @param window the window to track
-     */
-    protected PerspectiveTracker(IWorkbenchWindow window) {
-        Assert.isNotNull(window);
-        this.window = window;
-        window.addPageListener(this);
-        window.addPerspectiveListener(this);
-    }
-
-    /**
-     * Creates a perspective tracker for the given window which will 
-     * enable the given action only when there is an active perspective.
-     * 
-     * @param window the window to track
-     * @param action the action to enable or disable
-     */
-    public PerspectiveTracker(IWorkbenchWindow window, IAction action) {
-        this(window);
-        this.action = action;
-        update();
-    }
-
-    /**
-     * Disposes the tracker.
-     */
-    public void dispose() {
-        if (window != null) {
-            window.removePageListener(this);
-            window.removePerspectiveListener(this);
-        }
-    }
-
-    public void pageActivated(IWorkbenchPage page) {
-        update();
-    }
-
-    public void pageClosed(IWorkbenchPage page) {
-        update();
-    }
-
-    public void pageOpened(IWorkbenchPage page) {
-        // ignore
-    }
-
-    public void perspectiveActivated(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective) {
-        update();
-    }
-
-    /**
-     * Determines the active perspective in the window 
-     * and calls <code>update(IPerspectiveDescriptor)</code>.
-     */
-    private void update() {
-        if (window != null) {
-            IPerspectiveDescriptor persp = null;
-            IWorkbenchPage page = window.getActivePage();
-            if (page != null) {
-                persp = page.getPerspective();
-            }
-            update(persp);
-        }
-    }
-
-    /**
-     * Performs some function based on the active perspective in the window.
-     * <p>
-     * The default implementation enables the action (if given) if there
-     * is an active perspective, otherwise it disables it.
-     * </p>
-     * <p> 
-     * Subclasses may override or extend.
-     * </p>
-     * 
-     * @param persp the active perspective in the window, or <code>null</code> if none
-     */
-    protected void update(IPerspectiveDescriptor persp) {
-        if (action != null) {
-            action.setEnabled(persp != null);
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PinEditorAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PinEditorAction.java
deleted file mode 100644
index 3870db0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PinEditorAction.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-
-/**
- * Action to toggle the pin state of an editor. If an editor is
- * pinned, then it is not reused.
- */
-public class PinEditorAction extends ActiveEditorAction {
-    private IPropertyListener propListener = new IPropertyListener() {
-        public void propertyChanged(Object source, int propId) {
-            if (propId == WorkbenchPartReference.INTERNAL_PROPERTY_PINNED) {
-                WorkbenchPartReference ref = (WorkbenchPartReference)source;
-                setChecked(ref.isPinned());
-            } else if (propId == IWorkbenchPartConstants.PROP_DIRTY) {
-        		if (((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).autoPinOnDirty()) {
-					WorkbenchPartReference ref = (WorkbenchPartReference) source;
-					if (ref.isDirty()) {
-						ref.setPinned(true);
-					}
-				}
-            }
-        }
-    };
-
-    /**
-     * Creates a PinEditorAction.
-     */
-    public PinEditorAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.PinEditorAction_text, window); 
-        setActionDefinitionId("org.eclipse.ui.window.pinEditor"); //$NON-NLS-1$
-        setToolTipText(WorkbenchMessages.PinEditorAction_toolTip); 
-        setId("org.eclipse.ui.internal.PinEditorAction"); //$NON-NLS-1$
-        // @issue need help constant for this?
-        //	WorkbenchHelp.setHelp(this, new Object[] {IHelpContextIds.SAVE_ACTION});
-        setImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_PIN_EDITOR));
-        setDisabledImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_PIN_EDITOR_DISABLED));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (getWorkbenchWindow() == null) {
-            // action has been dispose
-            return;
-        }
-        IEditorPart editor = getActiveEditor();
-        if (editor != null) {
-            WorkbenchPartReference ref = getReference(editor);
-            ref.setPinned(isChecked());
-        }
-    }
-
-    private WorkbenchPartReference getReference(IEditorPart editor) {
-        return (WorkbenchPartReference)((EditorSite)editor.getSite()).getPartReference();
-    }
-    
-    /* (non-Javadoc)
-     * Method declared on ActiveEditorAction.
-     */
-    protected void updateState() {
-        if (getWorkbenchWindow() == null || getActivePage() == null) {
-            setChecked(false);
-            setEnabled(false);
-            return;
-        }
-
-        IEditorPart editor = getActiveEditor();
-        boolean enabled = (editor != null);
-        setEnabled(enabled);
-        if (enabled) {
-            setChecked(getReference(editor).isPinned());
-        } else {
-            setChecked(false);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ActiveEditorAction#editorActivated(org.eclipse.ui.IEditorPart)
-     */
-    protected void editorActivated(IEditorPart part) {
-        super.editorActivated(part);
-        if (part != null) {
-            getReference(part).addInternalPropertyListener(propListener);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ActiveEditorAction#editorDeactivated(org.eclipse.ui.IEditorPart)
-     */
-    protected void editorDeactivated(IEditorPart part) {
-        super.editorDeactivated(part);
-        if (part != null) {
-            getReference(part).removeInternalPropertyListener(propListener);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction#dispose()
-     */
-    public void dispose() {
-        // deactivate current editor now before super dispose because active editor will be null after call
-        editorDeactivated(getActiveEditor());
-        super.dispose();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderContributionItem.java
deleted file mode 100644
index 0cbb5c0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderContributionItem.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-
-/**
- * A contribution item that is intended to hold the place of a tool bar
- * contribution item that has been disposed. This is to ensure that tool bar
- * contribution items are disposed (freeing their resources), but that layout
- * information about the item is not lost.
- * 
- * @since 3.0
- */
-final class PlaceholderContributionItem implements IContributionItem {
-
-    /**
-     * The identifier for the replaced contribution item.
-     */
-    private final String id;
-
-    /**
-     * The height of the SWT widget corresponding to the replaced contribution
-     * item.
-     */
-    private final int storedHeight;
-
-    /**
-     * The minimum number of items to display on the replaced contribution
-     * item.
-     */
-    private final int storedMinimumItems;
-
-    /**
-     * Whether the replaced contribution item would display chevrons.
-     */
-    private final boolean storedUseChevron;
-
-    /**
-     * The width of the SWT widget corresponding to the replaced contribution
-     * item.
-     */
-    private final int storedWidth;
-
-    /**
-     * Constructs a new instance of <code>PlaceholderContributionItem</code>
-     * from the item it is intended to replace.
-     * 
-     * @param item
-     *            The item to be replaced; must not be <code>null</code>.
-     */
-    PlaceholderContributionItem(final IToolBarContributionItem item) {
-        item.saveWidgetState();
-        id = item.getId();
-        storedHeight = item.getCurrentHeight();
-        storedWidth = item.getCurrentWidth();
-        storedMinimumItems = item.getMinimumItemsToShow();
-        storedUseChevron = item.getUseChevron();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#dispose()
-     */
-    public void dispose() {
-        // Do nothing
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.Composite)
-     */
-    public void fill(Composite parent) {
-        throw new UnsupportedOperationException();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.CoolBar,
-     *      int)
-     */
-    public void fill(CoolBar parent, int index) {
-        throw new UnsupportedOperationException();
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.Menu,
-     *      int)
-     */
-    public void fill(Menu parent, int index) {
-        throw new UnsupportedOperationException();
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#fill(org.eclipse.swt.widgets.ToolBar,
-     *      int)
-     */
-    public void fill(ToolBar parent, int index) {
-        throw new UnsupportedOperationException();
-
-    }
-
-    /**
-     * The height of the replaced contribution item.
-     * 
-     * @return The height.
-     */
-    int getHeight() {
-        return storedHeight;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#getId()
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * The width of the replaced contribution item.
-     * 
-     * @return The width.
-     */
-    int getWidth() {
-        return storedWidth;
-    }
-    
-    /**
-     * Returns the minimum number of tool items to show in the cool item.
-     * 
-     * @return the minimum number of tool items to show, or <code>SHOW_ALL_ITEMS</code>
-     *         if a value was not set
-     * @see #setMinimumItemsToShow(int)
-	 * @since 3.2
-     */
-    int getMinimumItemsToShow() {
-    	return storedMinimumItems;
-    }
-    
-    /**
-     * Returns whether chevron support is enabled.
-     * 
-     * @return <code>true</code> if chevron support is enabled, <code>false</code>
-     *         otherwise
-	 * @since 3.2
-     */
-    boolean getUseChevron() {
-        return storedUseChevron;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#isDirty()
-     */
-    public boolean isDirty() {
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#isDynamic()
-     */
-    public boolean isDynamic() {
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#isEnabled()
-     */
-    public boolean isEnabled() {
-        // XXX Auto-generated method stub
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#isGroupMarker()
-     */
-    public boolean isGroupMarker() {
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#isSeparator()
-     */
-    public boolean isSeparator() {
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#isVisible()
-     */
-    public boolean isVisible() {
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#saveWidgetState()
-     */
-    public void saveWidgetState() {
-        // Do nothing.
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#setParent(org.eclipse.jface.action.IContributionManager)
-     */
-    public void setParent(IContributionManager parent) {
-        // Do nothing
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#setVisible(boolean)
-     */
-    public void setVisible(boolean visible) {
-        // Do nothing.
-    }
-
-    /**
-     * Displays a string representation of this contribution item, which is
-     * really just a function of its identifier.
-     */
-    public String toString() {
-        return "PlaceholderContributionItem(" + id + ")"; //$NON-NLS-1$//$NON-NLS-2$
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#update()
-     */
-    public void update() {
-        update(null);
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
-     */
-    public void update(String identifier) {
-        // Do nothing
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderFolderLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderFolderLayout.java
deleted file mode 100644
index d374ee6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlaceholderFolderLayout.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPlaceholderFolderLayout;
-
-/**
- * This layout is used to define the initial set of placeholders
- * in a placeholder.
- * <p>
- * Views are added to the placeholder by ID. This id is used to identify 
- * a view descriptor in the view registry, and this descriptor is used to 
- * instantiate the IViewPart.
- * </p>
- */
-public class PlaceholderFolderLayout implements IPlaceholderFolderLayout {
-    private PageLayout pageLayout;
-
-    private ContainerPlaceholder placeholder;
-
-    public PlaceholderFolderLayout(PageLayout pageLayout,
-            ContainerPlaceholder folder) {
-        super();
-        this.placeholder = folder;
-        this.pageLayout = pageLayout;
-    }
-
-    /**
-     * @see IPlaceholderFolderLayout
-     */
-    public void addPlaceholder(String viewId) {
-        if (!pageLayout.checkValidPlaceholderId(viewId)) {
-            return;
-        }
-
-        // Create the placeholder.
-        LayoutPart newPart = new PartPlaceholder(viewId);
-
-        linkPartToPageLayout(viewId, newPart);
-
-        // Add it to the placeholder layout.
-        placeholder.add(newPart);
-    }
-
-    /**
-     * Inform the page layout of the new part created
-     * and the placeholder the part belongs to.
-     */
-    private void linkPartToPageLayout(String viewId, LayoutPart newPart) {
-        pageLayout.setRefPart(viewId, newPart);
-        // force creation of the view layout rec
-        pageLayout.getViewLayoutRec(viewId, true);
-
-        pageLayout.setFolderPart(viewId, placeholder);
-        newPart.setContainer(placeholder);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPlaceholderFolderLayout#getProperty(java.lang.String)
-     */
-    public String getProperty(String id) {
-        LayoutPart folder = placeholder.getRealContainer();
-        if (folder instanceof PartStack) {
-            PartStack stack = (PartStack)folder;
-            return stack.getProperty(id);
-        }       
-        //throw not supported?
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPlaceholderFolderLayout#setProperty(java.lang.String, java.lang.String)
-     */
-    public void setProperty(String id, String value) {
-        LayoutPart folder = placeholder.getRealContainer();
-        if (folder instanceof PartStack) {
-            PartStack stack = (PartStack)folder;
-            stack.setProperty(id,value);
-        }       
-        //throw not supported?
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlatformUIPreferenceListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlatformUIPreferenceListener.java
deleted file mode 100644
index e318107..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PlatformUIPreferenceListener.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.HashMap;
-
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.decorators.DecoratorManager;
-import org.eclipse.ui.internal.progress.ProgressManager;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * The PlatformUIPreferenceListener is a class that listens to changes in the
- * preference store and propogates the change for any special cases that require
- * updating of other values within the workbench.
- */
-public class PlatformUIPreferenceListener implements
-		IEclipsePreferences.IPreferenceChangeListener {
-	
-	private static PlatformUIPreferenceListener singleton;
-	
-	public static IEclipsePreferences.IPreferenceChangeListener getSingleton(){
-		if(singleton == null) {
-			singleton = new PlatformUIPreferenceListener();
-		}
-	    return singleton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent)
-	 */
-	public void preferenceChange(PreferenceChangeEvent event) {
-
-		String propertyName = event.getKey();
-		if (IPreferenceConstants.ENABLED_DECORATORS.equals(propertyName)) {
-			DecoratorManager manager = WorkbenchPlugin.getDefault()
-					.getDecoratorManager();
-			manager.applyDecoratorsPreference();
-			manager.clearCaches();
-			manager.updateForEnablementChange();
-			return;
-		}
-
-		if (IWorkbenchPreferenceConstants.SHOW_SYSTEM_JOBS.equals(propertyName)) {
-			boolean setting = PrefUtil.getAPIPreferenceStore().getBoolean(
-					IWorkbenchPreferenceConstants.SHOW_SYSTEM_JOBS);
-
-			ProgressManager.getInstance().setShowSystemJobs(setting);
-		}
-		
-		if (IWorkbenchPreferenceConstants.DEFAULT_PERSPECTIVE_ID.equals(propertyName)) {
-			IWorkbench workbench = PlatformUI.getWorkbench();
-
-			workbench.getPerspectiveRegistry().setDefaultPerspective(
-					PrefUtil.getAPIPreferenceStore().getString(
-							IWorkbenchPreferenceConstants.DEFAULT_PERSPECTIVE_ID));
-			return;
-		}
-
-		if (IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR
-				.equals(propertyName)) {
-			IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-			IWorkbench workbench = PlatformUI.getWorkbench();
-			IWorkbenchWindow[] workbenchWindows = workbench
-					.getWorkbenchWindows();
-			for (int i = 0; i < workbenchWindows.length; i++) {
-				IWorkbenchWindow window = workbenchWindows[i];
-				if (window instanceof WorkbenchWindow) {
-					((WorkbenchWindow) window)
-							.setPerspectiveBarLocation(apiStore
-									.getString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR));
-				}
-			}
-			return;
-		}
-
-		// TODO the banner apperance should have its own preference
-		if (IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS
-				.equals(propertyName)) {
-			boolean newValue = PrefUtil.getAPIPreferenceStore().getBoolean(
-					IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS);
-
-			IWorkbench workbench = PlatformUI.getWorkbench();
-			IWorkbenchWindow[] workbenchWindows = workbench
-					.getWorkbenchWindows();
-			for (int i = 0; i < workbenchWindows.length; i++) {
-				IWorkbenchWindow window = workbenchWindows[i];
-				if (window instanceof WorkbenchWindow) {
-					((WorkbenchWindow) window).setBannerCurve(newValue);
-				}
-			}
-			return;
-		}
-
-		// Update the file associations if they have changed due to an import
-		if (IPreferenceConstants.RESOURCES.equals(propertyName)) {
-			IEditorRegistry registry = WorkbenchPlugin.getDefault()
-					.getEditorRegistry();
-			if (registry instanceof EditorRegistry) {
-				EditorRegistry editorRegistry = (EditorRegistry) registry;
-				IPreferenceStore store = WorkbenchPlugin.getDefault()
-						.getPreferenceStore();
-				Reader reader = null;
-				try {
-					String xmlString = store
-							.getString(IPreferenceConstants.RESOURCES);
-					if (xmlString != null && xmlString.length() > 0) {
-						reader = new StringReader(xmlString);
-						// Build the editor map.
-						HashMap editorMap = new HashMap();
-						int i = 0;
-						IEditorDescriptor[] descriptors = editorRegistry
-								.getSortedEditorsFromPlugins();
-						// Get the internal editors
-						for (i = 0; i < descriptors.length; i++) {
-							IEditorDescriptor descriptor = descriptors[i];
-							editorMap.put(descriptor.getId(), descriptor);
-						}
-						// Get the external (OS) editors
-						descriptors = editorRegistry.getSortedEditorsFromOS();
-						for (i = 0; i < descriptors.length; i++) {
-							IEditorDescriptor descriptor = descriptors[i];
-							editorMap.put(descriptor.getId(), descriptor);
-						}
-						// Update the file to editor(s) mappings
-						editorRegistry.readResources(editorMap, reader);
-					}
-				} catch (WorkbenchException e) {
-					e.printStackTrace();
-				} finally {
-					if (reader != null) {
-						try {
-							reader.close();
-						} catch (IOException e) {
-							e.printStackTrace();
-						}
-					}
-				}
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java
deleted file mode 100644
index e40be34..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginAction.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IActionDelegate2;
-import org.eclipse.ui.IActionDelegateWithEvent;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.SelectionEnabler;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * A PluginAction is a proxy for an action extension.
- *
- * At startup we read the registry and create a PluginAction for each action extension.
- * This plugin action looks like the real action ( label, icon, etc ) and acts as
- * a proxy for the action until invoked.  At that point the proxy will instantiate 
- * the real action and delegate the run method to the real action.
- * This makes it possible to load the action extension lazily.
- *
- * Occasionally the class will ask if it is OK to 
- * load the delegate (on selection changes).  If the plugin containing
- * the action extension has been loaded then the action extension itself
- * will be instantiated.
- */
-
-public abstract class PluginAction extends Action implements
-        ISelectionListener, ISelectionChangedListener, INullSelectionListener,
-        IPluginContribution {
-    private IActionDelegate delegate;
-
-    private SelectionEnabler enabler;
-
-    private ISelection selection;
-
-    private IConfigurationElement configElement;
-
-    private String pluginId;
-
-    private String runAttribute = IWorkbenchRegistryConstants.ATT_CLASS;
-
-    private static int actionCount = 0;
-
-    /**
-     * PluginAction constructor.
-     * 
-     * @param actionElement the element
-     * @param id the identifier
-     * @param style the style bits
-     */
-    public PluginAction(IConfigurationElement actionElement, String id,
-            int style) {
-        super(null, style);
-
-        this.configElement = actionElement;
-
-        if (id != null) {
-            setId(id);
-        } else {
-            // Create unique action id.
-            setId("PluginAction." + Integer.toString(actionCount)); //$NON-NLS-1$
-            ++actionCount;
-        }
-
-        String defId = actionElement
-                .getAttribute(IWorkbenchRegistryConstants.ATT_DEFINITION_ID);
-        setActionDefinitionId(defId);
-
-        pluginId = configElement.getNamespace();
-
-        // Read enablement declaration.
-        if (configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ENABLES_FOR) != null) {
-            enabler = new SelectionEnabler(configElement);
-        } else {
-			IConfigurationElement[] kids = configElement
-					.getChildren(IWorkbenchRegistryConstants.TAG_ENABLEMENT);
-			IConfigurationElement[] kids2 = configElement
-					.getChildren(IWorkbenchRegistryConstants.TAG_SELECTION);
-			if (kids.length > 0 || kids2.length>0) {
-				enabler = new SelectionEnabler(configElement);
-			}
-		}
-
-        // Give enabler or delegate a chance to adjust enable state
-        selectionChanged(StructuredSelection.EMPTY);
-    }
-
-    /**
-     * Creates the delegate and refreshes its enablement.
-     */
-    protected final void createDelegate() {
-        // The runAttribute is null if delegate creation failed previously...
-        if (delegate == null && runAttribute != null) {
-            try {
-                Object obj = WorkbenchPlugin.createExtension(configElement,
-                        runAttribute);
-                delegate = validateDelegate(obj);
-                initDelegate();
-                refreshEnablement();
-            } catch (Throwable e) {
-                runAttribute = null;
-                IStatus status = null;
-                if (e instanceof CoreException) {
-                    status = ((CoreException) e).getStatus();
-                } else {
-                    status = StatusUtil
-                            .newStatus(
-                                    IStatus.ERROR,
-                                    "Internal plug-in action delegate error on creation.", e); //$NON-NLS-1$
-                }
-                String id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-                WorkbenchPlugin
-                        .log(
-                                "Could not create action delegate for id: " + id, status); //$NON-NLS-1$
-                return;
-            }
-        }
-    }
-
-    /**
-     * Validates the object is a delegate of the expected type. Subclasses can
-     * override to check for specific delegate types.
-     * <p>
-     * <b>Note:</b> Calls to the object are not allowed during this method.
-     * </p>
-     *
-     * @param obj a possible action delegate implementation
-     * @return the <code>IActionDelegate</code> implementation for the object
-     * @throws WorkbenchException if not of the expected delegate type
-     */
-    protected IActionDelegate validateDelegate(Object obj)
-            throws WorkbenchException {
-        if (obj instanceof IActionDelegate) {
-			return (IActionDelegate) obj;
-		}
-        
-        throw new WorkbenchException(
-                "Action must implement IActionDelegate"); //$NON-NLS-1$
-    }
-
-    /** 
-     * Initialize the action delegate by calling its lifecycle method.
-     * Subclasses may override but must call this implementation first.
-     */
-    protected void initDelegate() {
-        if (delegate instanceof IActionDelegate2) {
-			((IActionDelegate2) delegate).init(this);
-		}
-    }
-
-    /**
-     * Returns the action delegate if created. Can be <code>null</code>
-     * if the delegate is not created yet or if previous delegate
-     * creation failed.
-     */
-    protected IActionDelegate getDelegate() {
-        return delegate;
-    }
-
-    /**
-     * Returns true if the declaring plugin has been loaded
-     * and there is no need to delay creating the delegate
-     * any more.
-     */
-    protected boolean isOkToCreateDelegate() {
-        // test if the plugin has loaded
-        String bundleId = configElement.getContributor().getName();
-        return BundleUtility.isActive(bundleId);
-    }
-
-    /**
-     * Refresh the action enablement.
-     */
-    protected void refreshEnablement() {
-        if (enabler != null) {
-            setEnabled(enabler.isEnabledForSelection(selection));
-        }
-        if (delegate != null) {
-            delegate.selectionChanged(this, selection);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        runWithEvent(null);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void runWithEvent(Event event) {
-        // this message dialog is problematic.
-        if (delegate == null) {
-            createDelegate();
-            if (delegate == null) {
-                MessageDialog
-                        .openInformation(
-                                Util.getShellToParentOn(),
-                                WorkbenchMessages.Information, 
-                                WorkbenchMessages.PluginAction_operationNotAvailableMessage); 
-                return;
-            }
-            if (!isEnabled()) {
-                MessageDialog.openInformation(Util.getShellToParentOn(), WorkbenchMessages.Information, 
-                        WorkbenchMessages.PluginAction_disabledMessage); 
-                return;
-            }
-        }
-
-        if (event != null) {
-            if (delegate instanceof IActionDelegate2) {
-                ((IActionDelegate2) delegate).runWithEvent(this, event);
-                return;
-            }
-            // Keep for backward compatibility with R2.0
-            if (delegate instanceof IActionDelegateWithEvent) {
-                ((IActionDelegateWithEvent) delegate).runWithEvent(this, event);
-                return;
-            }
-        }
-
-        delegate.run(this);
-    }
-
-    /**
-     * Handles selection change. If rule-based enabled is
-     * defined, it will be first to call it. If the delegate
-     * is loaded, it will also be given a chance.
-     * 
-     * @param newSelection the new selection
-     */
-    public void selectionChanged(ISelection newSelection) {
-        // Update selection.
-        selection = newSelection;
-        if (selection == null) {
-			selection = StructuredSelection.EMPTY;
-		}
-
-        // The selection is passed to the delegate as-is without
-        // modification. If the selection needs to be modified
-        // the action contributors should do so.
-        
-        // If the delegate can be loaded, do so.
-        // Otherwise, just update the enablement.
-        if (delegate == null && isOkToCreateDelegate()) {
-			createDelegate();
-		} else {
-			refreshEnablement();
-		}
-    }
-
-    /**
-     * The <code>SelectionChangedEventAction</code> implementation of this 
-     * <code>ISelectionChangedListener</code> method calls 
-     * <code>selectionChanged(IStructuredSelection)</code> when the selection is
-     * a structured one.
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        ISelection sel = event.getSelection();
-        selectionChanged(sel);
-    }
-
-    /**
-     * The <code>SelectionChangedEventAction</code> implementation of this 
-     * <code>ISelectionListener</code> method calls 
-     * <code>selectionChanged(IStructuredSelection)</code> when the selection is
-     * a structured one. Subclasses may extend this method to react to the change.
-     */
-    public void selectionChanged(IWorkbenchPart part, ISelection sel) {
-        selectionChanged(sel);
-    }
-
-    /**
-     * For testing purposes only.
-     * 
-     * @return the selection 
-     * @since 3.1
-     */
-    public ISelection getSelection() {
-    	return selection;
-    }
-
-    /**
-     * Returns the action identifier this action overrides.
-     * Default implementation returns <code>null</code>.
-     * 
-     * @return the action identifier to override or <code>null</code>
-     */
-    public String getOverrideActionId() {
-        return null;
-    }
-
-    /**
-     * @return the IConfigurationElement used to create this PluginAction.
-     * 
-     * @since 3.0
-     */
-    protected IConfigurationElement getConfigElement() {
-        return configElement;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return pluginId;
-    }
-
-    /**
-     * Disposes the delegate, if created.
-     * 
-     * @since 3.1
-     */
-    public void disposeDelegate() {
-        // avoid calling dispose() twice if the delegate implements
-        // both IActionDelegate2 and IWorkbenchWindowActionDelegate
-        if (getDelegate() instanceof IActionDelegate2) {
-            ((IActionDelegate2) getDelegate()).dispose();
-        }
-        else if (getDelegate() instanceof IWorkbenchWindowActionDelegate) {
-            ((IWorkbenchWindowActionDelegate) getDelegate()).dispose();
-        }
-        delegate = null;
-    }
-
-    /**
-     * Disposes this plugin action.
-     * 
-     * @since 3.1
-     */
-    public void dispose() {
-        disposeDelegate();
-        selection = null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.Action#getMenuCreator()
-     */
-    public IMenuCreator getMenuCreator() {
-    	// now that action contribution item defers asking for the menu
-    	// creator until its ready o show the menu, asking for the menu
-    	// creator is time to instantiate the delegate
-    	if (getDelegate()==null) {
-    		createDelegate();
-    	}
-    	return super.getMenuCreator();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java
deleted file mode 100644
index 8994df5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java
+++ /dev/null
@@ -1,541 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.AbstractGroupMarker;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-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.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * This class contains shared functionality for reading action contributions
- * from plugins into workbench parts (both editors and views).
- */
-public abstract class PluginActionBuilder extends RegistryReader {
-    protected String targetID;
-
-    protected String targetContributionTag;
-
-    protected BasicContribution currentContribution;
-
-    protected ArrayList cache;
-
-    /**
-     * The default constructor.
-     */
-    public PluginActionBuilder() {
-    }
-
-    /**
-     * Contributes submenus and/or actions into the provided menu and tool bar
-     * managers.
-     * 
-     * @param menu the menu to contribute to
-     * @param toolbar the toolbar to contribute to 
-     * @param appendIfMissing append containers if missing
-     */
-    public final void contribute(IMenuManager menu, IToolBarManager toolbar,
-            boolean appendIfMissing) {
-        if (cache == null) {
-			return;
-		}
-
-        for (int i = 0; i < cache.size(); i++) {
-            BasicContribution contribution = (BasicContribution) cache.get(i);
-            contribution.contribute(menu, appendIfMissing, toolbar,
-                    appendIfMissing);
-        }
-    }
-
-    /**
-     * This factory method returns a new ActionDescriptor for the
-     * configuration element.  It should be implemented by subclasses.
-     */
-    protected abstract ActionDescriptor createActionDescriptor(
-            IConfigurationElement element);
-
-    /**
-     * Factory method to create the helper contribution class that will hold
-     * onto the menus and actions contributed.
-     */
-    protected BasicContribution createContribution() {
-        return new BasicContribution();
-    }
-
-    /**
-     * Returns the name of the part ID attribute that is expected
-     * in the target extension.
-     */
-    protected String getTargetID(IConfigurationElement element) {
-        String value = element.getAttribute(IWorkbenchRegistryConstants.ATT_TARGET_ID);
-        return value != null ? value : "???"; //$NON-NLS-1$
-    }
-    
-    /**
-     * Returns the id of this contributions.
-     */
-    protected String getID(IConfigurationElement element) {
-        String value = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        return value != null ? value : "???"; //$NON-NLS-1$
-    }
-
-    /**
-     * Reads the contributions from the registry for the provided workbench
-     * part and the provided extension point ID.
-     */
-    protected void readContributions(String id, String tag,
-            String extensionPoint) {
-        cache = null;
-        currentContribution = null;
-        targetID = id;
-        targetContributionTag = tag;
-        readRegistry(Platform.getExtensionRegistry(), PlatformUI.PLUGIN_ID,
-                extensionPoint);
-    }
-
-    /**
-     * Implements abstract method to handle the provided XML element
-     * in the registry.
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        String tag = element.getName();
-
-        // Ignore all object contributions element as these
-        // are handled by the ObjectActionContributorReader.
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_OBJECT_CONTRIBUTION)) {
-            return true;
-        }
-
-        // Found top level contribution element		
-        if (tag.equals(targetContributionTag)) {
-            if (targetID != null) {
-                // Ignore contributions not matching target id
-                String id = getTargetID(element);
-                if (id == null || !id.equals(targetID)) {
-					return true;
-				}
-            }
-
-            // Read its sub-elements
-            currentContribution = createContribution();
-            readElementChildren(element);
-            if (cache == null) {
-				cache = new ArrayList(4);
-			}
-            cache.add(currentContribution);
-            currentContribution = null;
-            return true;
-        }
-
-        // Found menu contribution sub-element		
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_MENU)) {
-            currentContribution.addMenu(element);
-            return true;
-        }
-
-        // Found action contribution sub-element
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_ACTION)) {
-            currentContribution.addAction(createActionDescriptor(element));
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Helper class to collect the menus and actions defined within a
-     * contribution element.
-     */
-    protected static class BasicContribution {
-        protected ArrayList menus;
-
-        protected ArrayList actions;
-
-        /**
-         * Add a menu. 
-         * 
-         * @param element the element to base the menu on
-         */
-        public void addMenu(IConfigurationElement element) {
-            if (menus == null) {
-				menus = new ArrayList(1);
-			}
-            menus.add(element);
-        }
-
-        /**
-         * Add an action.
-         * 
-         * @param desc the descriptor
-         */
-        public void addAction(ActionDescriptor desc) {
-            if (actions == null) {
-				actions = new ArrayList(3);
-			}
-            actions.add(desc);
-        }
-
-        /**
-         * Contributes submenus and/or actions into the provided menu and tool bar
-         * managers.
-         * 
-         * The elements added are filtered based on activity enablement.
-         * @param menu the menu to contribute to
-         * @param menuAppendIfMissing whether to append missing groups to menus
-         * @param toolbar the toolbar to contribute to
-         * @param toolAppendIfMissing whether to append missing groups to toolbars
-         */
-        public void contribute(IMenuManager menu, boolean menuAppendIfMissing,
-                IToolBarManager toolbar, boolean toolAppendIfMissing) {
-            if (menus != null && menu != null) {
-                for (int i = 0; i < menus.size(); i++) {
-                    IConfigurationElement menuElement = (IConfigurationElement) menus
-                            .get(i);
-                    contributeMenu(menuElement, menu, menuAppendIfMissing);
-                }
-            }
-
-            if (actions != null) {
-                for (int i = 0; i < actions.size(); i++) {
-                    ActionDescriptor ad = (ActionDescriptor) actions.get(i);
-                    if (menu != null) {
-						contributeMenuAction(ad, menu, menuAppendIfMissing);
-					}
-                    if (toolbar != null) {
-						contributeToolbarAction(ad, toolbar,
-                                toolAppendIfMissing);
-					}
-                }
-            }
-        }
-
-        /**
-         * Creates a menu from the information in the menu configuration element and
-         * adds it into the provided menu manager. If 'appendIfMissing' is true, and
-         * menu path slot is not found, it will be created and menu will be added
-         * into it. Otherwise, add operation will fail.
-         */
-        protected void contributeMenu(IConfigurationElement menuElement,
-                IMenuManager mng, boolean appendIfMissing) {
-            // Get config data.
-            String id = menuElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-            String label = menuElement.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-            String path = menuElement.getAttribute(IWorkbenchRegistryConstants.ATT_PATH);
-            if (label == null) {
-				WorkbenchPlugin.log("Plugin \'" //$NON-NLS-1$
-						+ menuElement.getContributor().getName()
-						+ "\' invalid Menu Extension (label == null): " + id); //$NON-NLS-1$
-				return;
-			}
-
-            // Calculate menu path and group.
-            String group = null;
-            if (path != null) {
-                int loc = path.lastIndexOf('/');
-                if (loc != -1) {
-                    group = path.substring(loc + 1);
-                    path = path.substring(0, loc);
-                } else {
-                    // assume that path represents a slot
-                    // so actual path portion should be null
-                    group = path;
-                    path = null;
-                }
-            }
-
-            // Find parent menu.
-            IMenuManager parent = mng;
-            if (path != null) {
-                parent = mng.findMenuUsingPath(path);
-                if (parent == null) {
-					ideLog("Plugin \'" //$NON-NLS-1$
-									+ menuElement.getContributor().getName()
-									+ "\' invalid Menu Extension (Path \'"  //$NON-NLS-1$
-									+ path + "\' is invalid): " + id); //$NON-NLS-1$
-					return;
-				}
-            }
-
-            // Find reference group.
-            if (group == null) {
-				group = IWorkbenchActionConstants.MB_ADDITIONS;
-			}
-            IContributionItem sep = parent.find(group);
-            if (sep == null) {
-                if (appendIfMissing) {
-					addGroup(parent, group);
-				} else {
-                    WorkbenchPlugin
-                            .log("Plugin \'" //$NON-NLS-1$
-									+ menuElement.getContributor().getName()
-									+ "\' invalid Menu Extension (Group \'"  //$NON-NLS-1$
-									+ group + "\' is invalid): " + id); //$NON-NLS-1$
-                    return;
-                }
-            }
-
-            // If the menu does not exist create it.
-            IMenuManager newMenu = parent.findMenuUsingPath(id);
-            if (newMenu == null) {
-				newMenu = new MenuManager(label, id);
-			}
-
-            // Add the menu
-            try {
-                insertAfter(parent, group, newMenu);
-            } catch (IllegalArgumentException e) {
-                WorkbenchPlugin
-                        .log("Plugin \'" //$NON-NLS-1$
-								+ menuElement.getContributor().getName()
-								+ "\' invalid Menu Extension (Group \'"  //$NON-NLS-1$
-								+ group + "\' is missing): " + id); //$NON-NLS-1$
-            }
-
-            // Get the menu again as it may be wrapped, otherwise adding
-            // the separators and group markers below will not be wrapped
-            // properly if the menu was just created.
-            newMenu = parent.findMenuUsingPath(id);
-            if (newMenu == null) {
-				WorkbenchPlugin.log("Could not find new menu: " + id); //$NON-NLS-1$
-			}
-
-            // Create separators.
-            IConfigurationElement[] children = menuElement.getChildren();
-            for (int i = 0; i < children.length; i++) {
-                String childName = children[i].getName();
-                if (childName.equals(IWorkbenchRegistryConstants.TAG_SEPARATOR)) {
-                    contributeSeparator(newMenu, children[i]);
-                } else if (childName.equals(IWorkbenchRegistryConstants.TAG_GROUP_MARKER)) {
-                    contributeGroupMarker(newMenu, children[i]);
-                }
-            }
-        }
-
-        /**
-         * Contributes action from action descriptor into the provided menu manager.
-         */
-        protected void contributeMenuAction(ActionDescriptor ad,
-                IMenuManager menu, boolean appendIfMissing) {
-            // Get config data.
-            String mpath = ad.getMenuPath();
-            String mgroup = ad.getMenuGroup();
-            if (mpath == null && mgroup == null) {
-				return;
-			}
-            // Find parent menu.
-            IMenuManager parent = menu;
-            if (mpath != null) {
-                parent = parent.findMenuUsingPath(mpath);
-                if (parent == null) {
-                    ideLog("Plug-in '" + ad.getPluginId() + "' contributed an invalid Menu Extension (Path: '" + mpath + "' is invalid): " + ad.getId()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-                    return;
-                }
-            }
-
-            // Find reference group.
-            if (mgroup == null) {
-				mgroup = IWorkbenchActionConstants.MB_ADDITIONS;
-			}
-            IContributionItem sep = parent.find(mgroup);
-            if (sep == null) {
-                if (appendIfMissing) {
-					addGroup(parent, mgroup);
-				} else {
-                    WorkbenchPlugin
-                            .log("Plug-in '" + ad.getPluginId() + "' contributed an invalid Menu Extension (Group: '" + mgroup + "' is invalid): " + ad.getId()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-                    return;
-                }
-            }
-
-            // Add action.
-            try {
-                insertAfter(parent, mgroup, ad);
-            } catch (IllegalArgumentException e) {
-                WorkbenchPlugin
-                        .log("Plug-in '" + ad.getPluginId() + "' contributed an invalid Menu Extension (Group: '" + mgroup + "' is missing): " + ad.getId()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            }
-        }
-
-        /**
-         * Creates a named menu separator from the information in the configuration element.
-         * If the separator already exists do not create a second.
-         */
-        protected void contributeSeparator(IMenuManager menu,
-                IConfigurationElement element) {
-            String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-            if (id == null || id.length() <= 0) {
-				return;
-			}
-            IContributionItem sep = menu.find(id);
-            if (sep != null) {
-				return;
-			}
-            insertMenuGroup(menu, new Separator(id));
-        }
-
-        /**
-         * Creates a named menu group marker from the information in the configuration element.
-         * If the marker already exists do not create a second.
-         */
-        protected void contributeGroupMarker(IMenuManager menu,
-                IConfigurationElement element) {
-            String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-            if (id == null || id.length() <= 0) {
-				return;
-			}
-            IContributionItem marker = menu.find(id);
-            if (marker != null) {
-				return;
-			}
-            insertMenuGroup(menu, new GroupMarker(id));
-        }
-
-        /**
-         * Contributes action from the action descriptor into the provided tool bar manager.
-         */
-        protected void contributeToolbarAction(ActionDescriptor ad,
-                IToolBarManager toolbar, boolean appendIfMissing) {
-            // Get config data.
-            String tId = ad.getToolbarId();
-            String tgroup = ad.getToolbarGroupId();
-            if (tId == null && tgroup == null) {
-				return;
-			}
-
-            // Find reference group.
-            if (tgroup == null) {
-				tgroup = IWorkbenchActionConstants.MB_ADDITIONS;
-			}
-            IContributionItem sep = null;
-            sep = toolbar.find(tgroup);
-            if (sep == null) {
-                if (appendIfMissing) {
-                    addGroup(toolbar, tgroup);
-                } else {
-                    WorkbenchPlugin
-                            .log("Plug-in '" + ad.getPluginId()  //$NON-NLS-1$
-                            		+ "' invalid Toolbar Extension (Group \'" //$NON-NLS-1$
-                            		+ tgroup + "\' is invalid): " + ad.getId()); //$NON-NLS-1$
-                    return;
-                }
-            }
-            // Add action to tool bar.
-            try {
-                insertAfter(toolbar, tgroup, ad);
-            } catch (IllegalArgumentException e) {
-                WorkbenchPlugin
-                        .log("Plug-in '" + ad.getPluginId()  //$NON-NLS-1$
-                        		+ "' invalid Toolbar Extension (Group \'" //$NON-NLS-1$
-                        		+ tgroup + "\' is missing): " + ad.getId()); //$NON-NLS-1$
-            }
-        }
-
-        /**
-         * Inserts the separator or group marker into the menu. Subclasses may override.
-         */
-        protected void insertMenuGroup(IMenuManager menu,
-                AbstractGroupMarker marker) {
-            menu.add(marker);
-        }
-
-        /**
-         * Inserts an action after another named contribution item.
-         * Subclasses may override.
-         */
-        protected void insertAfter(IContributionManager mgr, String refId,
-                ActionDescriptor desc) {
-            final PluginActionContributionItem item = new PluginActionContributionItem(desc.getAction());
-            item.setMode(desc.getMode());
-			insertAfter(mgr, refId, item);
-        }
-
-        /**
-         * Inserts a contribution item after another named contribution item.
-         * Subclasses may override.
-         */
-        protected void insertAfter(IContributionManager mgr, String refId,
-                IContributionItem item) {
-            mgr.insertAfter(refId, item);
-        }
-
-        /**
-         * Adds a group to a contribution manager.
-         * Subclasses may override.
-         */
-        protected void addGroup(IContributionManager mgr, String name) {
-            mgr.add(new Separator(name));
-        }
-
-		/**
-		 * Disposes this contribution. 
-		 * 
-		 * @since 3.1
-		 */
-		public void dispose() {
-			// do nothing
-		}
-		
-		/**
-		 * Disposes the actions.
-		 *
-		 * @since 3.1
-		 */
-		protected void disposeActions() {
-            if (actions != null) {
-                for (int i = 0; i < actions.size(); i++) {
-                    PluginAction proxy = ((ActionDescriptor) actions.get(i))
-                            .getAction();
-					proxy.dispose();
-                }
-				actions = null;
-            }
-		}
-    }
-    
-    private static boolean allowIdeLogging = false;
-    
-    /**
-	 * If set to <code>false</code>, some of the logs that can be caused by
-	 * use IDE plugins from an RCP app will be ignored.
-	 * 
-	 * @param b
-	 *            Log the errors or not.
-	 * @since 3.3
-	 */
-    public static void setAllowIdeLogging(boolean b) {
-    	allowIdeLogging = b;
-    }
-    
-    /**
-	 * These are log messages that should be ignored by RCP apps when using the
-	 * IDE plugins.
-	 * 
-	 * @param msg
-	 * @since 3.3
-	 */
-    private static void ideLog(String msg) {
-    	if (allowIdeLogging) {
-    		WorkbenchPlugin.log(msg);
-    	}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java
deleted file mode 100644
index a7ed938..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionContributionItem.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.IActivityManagerListener;
-import org.eclipse.ui.activities.IIdentifier;
-import org.eclipse.ui.activities.IIdentifierListener;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.activities.IdentifierEvent;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-
-/**
- * Contribution item for actions provided by plugins via workbench action
- * extension points.
- */
-public class PluginActionContributionItem extends ActionContributionItem
-        implements IIdentifierListener, IActivityManagerListener {
-
-    private IIdentifier identifier = null;
-
-    /**
-     * Creates a new contribution item from the given action. The id of the
-     * action is used as the id of the item.
-     * 
-     * @param action
-     *            the action
-     */
-    public PluginActionContributionItem(PluginAction action) {
-        // dynamic UI (DDW) - this constructor has changed since 1113
-        super(action);
-    }
-
-    /**
-     * Hook the activity and identifier listener (if necessary);
-     * 
-     * @since 3.1
-     */
-    private void hookListeners() {
-        PlatformUI.getWorkbench().getActivitySupport().getActivityManager()
-                .addActivityManagerListener(this);
-        // set up the identifier if necessary
-        IIdentifier id = getIdentifier();
-        if (id != null) {
-			id.addIdentifierListener(this);
-		}
-    }
-    
-    /**
-     * Unhook the activity and identifier listener (if necessary);
-     * 
-     * @since 3.1
-     */
-    private void unhookListeners() {
-        PlatformUI.getWorkbench().getActivitySupport().getActivityManager()
-                .removeActivityManagerListener(this);
-
-        IIdentifier id = getIdentifier();
-        if (id != null) {
-			id.removeIdentifierListener(this);
-		}
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#setParent(org.eclipse.jface.action.IContributionManager)
-     */
-    public void setParent(IContributionManager parent) {
-        IContributionManager oldParent = getParent();
-        super.setParent(parent);
-        if (oldParent == parent) {
-			return;
-		}
-        
-        if (parent == null) {
-			unhookListeners();
-		} else {
-			hookListeners();
-		}
-    }
-    
-    /**
-     * Create the IIdentifier reference for this item.
-     *
-     * @since 3.0
-     */
-    private IIdentifier getIdentifier() {
-        if (!WorkbenchActivityHelper.isFiltering()) {
-			return null;
-		}
-        
-        if (identifier == null) {
-            IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI
-                    .getWorkbench().getActivitySupport();
-            IPluginContribution contribution = (IPluginContribution) getAction();
-            // no need to check if contribution.getPluginId() == null - plugin
-            // actions are always from plugins.
-            identifier = workbenchActivitySupport.getActivityManager()
-                    .getIdentifier(
-                            WorkbenchActivityHelper
-                                    .createUnifiedId(contribution));
-        }
-        return identifier;
-    }
-
-    /**
-     * Dispose of the IIdentifier if necessary.
-     * 
-     * @since 3.0
-     */
-    private void disposeIdentifier() {
-        identifier = null;
-    }
-
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method notifies the delegate if loaded and implements the <code>IActionDelegate2</code>
-     * interface.
-     */
-    public void dispose() {
-        unhookListeners();
-        disposeIdentifier();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.action.ActionContributionItem#isVisible()
-     */
-    public boolean isVisible() {
-        if (identifier != null && !identifier.isEnabled()) {
-			return false;
-		}
-        return super.isVisible();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IIdentifierListener#identifierChanged(org.eclipse.ui.activities.IdentifierEvent)
-     */
-    public void identifierChanged(IdentifierEvent identifierEvent) {
-        invalidateParent();
-    }
-
-    /**
-     * Mark the parent dirty if we have a parent.
-     * 
-     * @since 3.1
-     */
-    private void invalidateParent() {
-        IContributionManager parent = getParent();
-        if (parent != null) {
-			parent.markDirty();
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivityManagerListener#activityManagerChanged(org.eclipse.ui.activities.ActivityManagerEvent)
-     */
-    public void activityManagerChanged(ActivityManagerEvent activityManagerEvent) {
-        // ensure that if we're going from a non-filtering state that we get an identifier
-        // and vice versa.
-        if (WorkbenchActivityHelper.isFiltering() && identifier == null) {
-            hookListeners();
-            invalidateParent();
-        } else if (!WorkbenchActivityHelper.isFiltering() && identifier != null) {
-            unhookListeners();
-            disposeIdentifier();
-            invalidateParent();
-        }
-    }
-    
-    /*
-     * For testing purposes only
-     */
-    public ISelection getSelection() {
-    	return ((PluginAction)getAction()).getSelection();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java
deleted file mode 100644
index 4679c58..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionCoolBarContributionItem.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-/**
- * Contribution item for actions provided by plugins via workbench
- * action extension points.
- */
-public class PluginActionCoolBarContributionItem extends
-        PluginActionContributionItem implements IActionSetContributionItem {
-    private String actionSetId;
-
-    /**
-     * Creates a new contribution item from the given action.
-     * The id of the action is used as the id of the item.
-     *
-     * @param action the action
-     */
-    public PluginActionCoolBarContributionItem(PluginAction action) {
-        super(action);
-        setActionSetId(((WWinPluginAction) action).getActionSetId());
-    }
-
-    public String getActionSetId() {
-        return actionSetId;
-    }
-
-    public void setActionSetId(String id) {
-        this.actionSetId = id;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java
deleted file mode 100644
index e886dc9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSet.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.registry.ActionSetDescriptor;
-import org.eclipse.ui.internal.registry.IActionSet;
-
-/**
- * A PluginActionSet is a proxy for an action set defined in XML.
- * It creates a PluginAction for each action and does the required
- * cleanup on dispose.
- */
-public class PluginActionSet implements IActionSet {
-    private ActionSetDescriptor desc;
-
-    private ArrayList pluginActions = new ArrayList(4);
-
-    private ActionSetActionBars bars;
-
-    /**
-     * PluginActionSet constructor comment.
-     * 
-     * @param desc the descriptor
-     */
-    public PluginActionSet(ActionSetDescriptor desc) {
-        super();
-        this.desc = desc;
-    }
-
-    /**
-     * Adds one plugin action ref to the list.
-     * 
-     * @param action the action
-     */
-    public void addPluginAction(WWinPluginAction action) {
-        pluginActions.add(action);
-    }
-
-    /**
-     * Returns the list of plugin actions for the set.
-     * 
-     * @return the actions for the set
-     */
-    public IAction[] getPluginActions() {
-        IAction result[] = new IAction[pluginActions.size()];
-        pluginActions.toArray(result);
-        return result;
-    }
-
-    /**
-     * Disposes of this action set.
-     */
-    public void dispose() {
-        Iterator iter = pluginActions.iterator();
-        while (iter.hasNext()) {
-            WWinPluginAction action = (WWinPluginAction) iter.next();
-            action.dispose();
-        }
-        pluginActions.clear();
-        bars = null;
-    }
-
-    /**
-     */
-    /* package */ActionSetActionBars getBars() {
-        return bars;
-    }
-
-    /**
-     * Returns the configuration element.
-     * 
-     * @return the configuration element
-     */
-    public IConfigurationElement getConfigElement() {
-        return desc.getConfigurationElement();
-    }
-
-    /**
-     * Returns the underlying descriptor.
-     * 
-     * @return the descriptor
-     */
-    public ActionSetDescriptor getDesc() {
-        return desc;
-    }
-
-    /**
-     * Initializes this action set, which is expected to add it actions as required
-     * to the given workbench window and action bars.
-     *
-     * @param window the workbench window
-     * @param bars the action bars
-     */
-    public void init(IWorkbenchWindow window, IActionBars bars) {
-        this.bars = (ActionSetActionBars) bars;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java
deleted file mode 100644
index 5d7255f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java
+++ /dev/null
@@ -1,760 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.action.AbstractGroupMarker;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This builder reads the actions for an action set from the registry.
- */
-public class PluginActionSetBuilder extends PluginActionBuilder {
-
-    private PluginActionSet actionSet;
-
-    private IWorkbenchWindow window;
-
-    private ArrayList adjunctContributions = new ArrayList(0);
-    
-    /**
-     * Used by the workbench window extension handler to unhook action sets from
-     * their associated window.
-     * 
-     * @since 3.1
-     */
-    public static class Binding {
-        PluginActionSetBuilder builder;
-        PluginActionSet set;
-        IWorkbenchWindow window;
-    }
-
-    /**
-     * Constructs a new builder.
-     */
-    public PluginActionSetBuilder() {
-    }
-
-    /**
-     * Read the actions within a config element. Called by customize perspective
-     * 
-     * @param set the action set
-     * @param window the window to contribute to
-     */
-    public void buildMenuAndToolBarStructure(PluginActionSet set,
-            IWorkbenchWindow window) {
-        this.actionSet = set;
-        this.window = window;
-        cache = null;
-        currentContribution = null;
-        targetID = null;
-        targetContributionTag = IWorkbenchRegistryConstants.TAG_ACTION_SET;
-
-        readElements(new IConfigurationElement[] { set.getConfigElement() });
-
-        if (cache != null) {
-            for (int i = 0; i < cache.size(); i++) {
-                ActionSetContribution contribution = (ActionSetContribution) cache
-                        .get(i);
-                contribution.contribute(actionSet.getBars(), true, true);
-                if (contribution.isAdjunctContributor()) {
-                    adjunctContributions.add(contribution);
-                }
-            }
-        }
-        for (int i = 0; i < adjunctContributions.size(); i++) {
-            ActionSetContribution contribution = (ActionSetContribution) adjunctContributions
-                    .get(i);
-            ActionSetActionBars bars = actionSet.getBars();
-            for (int j = 0; j < contribution.adjunctActions.size(); j++) {
-                ActionDescriptor adjunctAction = (ActionDescriptor) contribution.adjunctActions
-                        .get(j);
-                contribution
-                        .contributeAdjunctCoolbarAction(adjunctAction, bars);
-            }
-        }
-        
-        Binding binding = new Binding();
-        binding.builder = this;
-        binding.set = set;
-        binding.window = window;
-        window.getExtensionTracker().registerObject(
-                set.getConfigElement().getDeclaringExtension(), binding,
-                IExtensionTracker.REF_STRONG);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected ActionDescriptor createActionDescriptor(
-            IConfigurationElement element) {
-        // As of 2.1, the "pulldown" attribute was deprecated and replaced by
-        // the attribute "style". See doc for more details.
-        boolean pullDownStyle = false;
-        String style = element.getAttribute(IWorkbenchRegistryConstants.ATT_STYLE);
-        if (style != null) {
-            pullDownStyle = style.equals(ActionDescriptor.STYLE_PULLDOWN);
-        } else {
-            String pulldown = element.getAttribute(ActionDescriptor.STYLE_PULLDOWN);
-            pullDownStyle = pulldown != null && pulldown.equals("true"); //$NON-NLS-1$
-        }
-
-        ActionDescriptor desc = null;
-        if (pullDownStyle) {
-			desc = new ActionDescriptor(element,
-                    ActionDescriptor.T_WORKBENCH_PULLDOWN, window);
-		} else {
-			desc = new ActionDescriptor(element, ActionDescriptor.T_WORKBENCH,
-                    window);
-		}
-        WWinPluginAction action = (WWinPluginAction) desc.getAction();
-        action.setActionSetId(actionSet.getDesc().getId());
-        actionSet.addPluginAction(action);
-        return desc;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected BasicContribution createContribution() {
-        return new ActionSetContribution(actionSet.getDesc().getId(), window);
-    }
-
-    /**
-     * Returns the insertion point for a new contribution item.  Clients should
-     * use this item as a reference point for insertAfter.
-     *
-     * @param startId the reference id for insertion
-     * @param sortId the sorting id for the insertion.  If null then the item
-     *		will be inserted at the end of all action sets.
-     * @param mgr the target menu manager.
-     * @param startVsEnd if <code>true</code> the items are added at the start of
-     *		action with the same id; else they are added to the end
-     * @return the insertion point, or null if not found.
-     */
-    public static IContributionItem findInsertionPoint(String startId,
-            String sortId, IContributionManager mgr, boolean startVsEnd) {
-        // Get items.
-        IContributionItem[] items = mgr.getItems();
-
-        // Find the reference item.
-        int insertIndex = 0;
-        while (insertIndex < items.length) {
-            if (startId.equals(items[insertIndex].getId())) {
-				break;
-			}
-            ++insertIndex;
-        }
-        if (insertIndex >= items.length) {
-			return null;
-		}
-
-        // Calculate startVsEnd comparison value.
-        int compareMetric = 0;
-        if (startVsEnd) {
-			compareMetric = 1;
-		}
-
-        // Find the insertion point for the new item.
-        // We do this by iterating through all of the previous
-        // action set contributions define within the current group.
-        for (int nX = insertIndex + 1; nX < items.length; nX++) {
-            IContributionItem item = items[nX];
-            if (item.isSeparator() || item.isGroupMarker()) {
-                // Fix for bug report 18357
-                break;
-            }
-            if (item instanceof IActionSetContributionItem) {
-                if (sortId != null) {
-                    String testId = ((IActionSetContributionItem) item)
-                            .getActionSetId();
-                    if (sortId.compareTo(testId) < compareMetric) {
-						break;
-					}
-                }
-                insertIndex = nX;
-            } else {
-                break;
-            }
-        }
-        // Return item.
-        return items[insertIndex];
-    }
-
-    /**
-     */
-    /* package */static void processActionSets(ArrayList pluginActionSets,
-            WorkbenchWindow window) {
-        // Process the action sets in two passes.  On the first pass the pluginActionSetBuilder
-        // will process base contributions and cache adjunct contributions.  On the second
-        // pass the adjunct contributions will be processed.
-        PluginActionSetBuilder[] builders = new PluginActionSetBuilder[pluginActionSets
-                .size()];
-        for (int i = 0; i < pluginActionSets.size(); i++) {
-            PluginActionSet set = (PluginActionSet) pluginActionSets.get(i);
-            PluginActionSetBuilder builder = new PluginActionSetBuilder();
-            builder.readActionExtensions(set, window);
-            builders[i] = builder;
-        }
-        for (int i = 0; i < builders.length; i++) {
-            PluginActionSetBuilder builder = builders[i];
-            builder.processAdjunctContributions();
-        }
-    }
-
-    /**
-     */
-    protected void processAdjunctContributions() {
-        // Contribute the adjunct contributions.
-        for (int i = 0; i < adjunctContributions.size(); i++) {
-            ActionSetContribution contribution = (ActionSetContribution) adjunctContributions
-                    .get(i);
-            ActionSetActionBars bars = actionSet.getBars();
-            for (int j = 0; j < contribution.adjunctActions.size(); j++) {
-                ActionDescriptor adjunctAction = (ActionDescriptor) contribution.adjunctActions
-                        .get(j);
-                contribution
-                        .contributeAdjunctCoolbarAction(adjunctAction, bars);
-            }
-        }
-    }
-
-    /**
-     * Read the actions within a config element.
-     */
-    protected void readActionExtensions(PluginActionSet set,
-            IWorkbenchWindow window) {
-        this.actionSet = set;
-        this.window = window;
-        cache = null;
-        currentContribution = null;
-        targetID = null;
-        targetContributionTag = IWorkbenchRegistryConstants.TAG_ACTION_SET;
-
-        readElements(new IConfigurationElement[] { set.getConfigElement() });
-
-        if (cache != null) {
-            // for dynamic UI - save cache for future removal lf actionset extensions
-            //        Don't call addCache -- it's broken, and is only used for dynamic plugin removal,
-            //        which the workbench doesn't currently support.
-            //        See bug 66374 for more details.
-            //			WorkbenchPlugin.getDefault().getActionSetRegistry().addCache(set.getDesc().getId(), cache);
-            for (int i = 0; i < cache.size(); i++) {
-                ActionSetContribution contribution = (ActionSetContribution) cache
-                        .get(i);
-                contribution.contribute(actionSet.getBars(), true, true);
-                if (contribution.isAdjunctContributor()) {
-                    adjunctContributions.add(contribution);
-                }
-            }
-            
-            Binding binding = new Binding();
-            binding.builder = this;
-            binding.set = set;
-            binding.window = window;
-            window.getExtensionTracker().registerObject(
-                    set.getConfigElement().getDeclaringExtension(), binding,
-                    IExtensionTracker.REF_STRONG);
-        } else {
-            WorkbenchPlugin
-                    .log("Action Set is empty: " + set.getDesc().getId()); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Helper class to collect the menus and actions defined within a
-     * contribution element.
-     */
-    private static class ActionSetContribution extends BasicContribution {
-        private String actionSetId;
-
-        private WorkbenchWindow window;
-
-        protected ArrayList adjunctActions = new ArrayList(0);
-
-        /**
-         * Create a new instance of <code>ActionSetContribution</code>.
-         * 
-         * @param id the id
-         * @param window the window to contribute to
-         */
-        public ActionSetContribution(String id, IWorkbenchWindow window) {
-            super();
-            actionSetId = id;
-            this.window = (WorkbenchWindow) window;
-        }
-
-        /**
-         * This implementation inserts the group into the action set additions group.  
-         */
-        protected void addGroup(IContributionManager mgr, String name) {
-            IContributionItem refItem = findInsertionPoint(
-                    IWorkbenchActionConstants.MB_ADDITIONS, actionSetId, mgr,
-                    true);
-            // Insert the new group marker.
-            ActionSetSeparator group = new ActionSetSeparator(name, actionSetId);
-            if (refItem == null) {
-                mgr.add(group);
-            } else {
-                mgr.insertAfter(refItem.getId(), group);
-            }
-        }
-
-        /**
-         * Contributes submenus and/or actions into the provided menu and tool bar
-         * managers.
-         * 
-         * @param bars the action bars to contribute to
-         * @param menuAppendIfMissing append to the menubar if missing
-         * @param toolAppendIfMissing append to the toolbar if missing
-         */
-        public void contribute(IActionBars bars, boolean menuAppendIfMissing,
-                boolean toolAppendIfMissing) {
-
-            IMenuManager menuMgr = bars.getMenuManager();
-            IToolBarManager toolBarMgr = bars.getToolBarManager();
-            if (menus != null && menuMgr != null) {
-                for (int i = 0; i < menus.size(); i++) {
-                    IConfigurationElement menuElement = (IConfigurationElement) menus
-                            .get(i);
-                    contributeMenu(menuElement, menuMgr, menuAppendIfMissing);
-                }
-            }
-
-            if (actions != null) {
-                for (int i = 0; i < actions.size(); i++) {
-                    ActionDescriptor ad = (ActionDescriptor) actions.get(i);
-                    if (menuMgr != null) {
-						contributeMenuAction(ad, menuMgr, menuAppendIfMissing);
-					}
-                    if (toolBarMgr != null) {
-                        if (bars instanceof ActionSetActionBars) {
-                            contributeCoolbarAction(ad,
-                                    (ActionSetActionBars) bars);
-                        } else {
-                            contributeToolbarAction(ad, toolBarMgr,
-                                    toolAppendIfMissing);
-                        }
-                    }
-                }
-            }
-        }
-
-        /**
-         * Contributes action from the action descriptor into the cool bar manager.
-         */
-        protected void contributeAdjunctCoolbarAction(ActionDescriptor ad,
-                ActionSetActionBars bars) {
-            String toolBarId = ad.getToolbarId();
-            String toolGroupId = ad.getToolbarGroupId();
-
-            String contributingId = bars.getActionSetId();
-            ICoolBarManager coolBarMgr = bars.getCoolBarManager();
-            if (coolBarMgr == null) {
-                return;
-            }
-
-            PluginAction action = ad.getAction();
-            ActionContributionItem actionContribution = new PluginActionCoolBarContributionItem(
-                    action);
-            actionContribution.setMode(ad.getMode());
-
-            bars.addAdjunctContribution(actionContribution);
-
-            // create a coolitem for the toolbar id if it does not yet exist				
-            IToolBarManager toolBarManager = bars.getToolBarManager(toolBarId);
-
-            // Check to see if the group already exists
-            IContributionItem groupMarker = toolBarManager.find(toolGroupId);
-            // Add a group marker if one does not exist
-            if (groupMarker == null) {
-                toolBarManager.add(new Separator(toolGroupId));
-            }
-            IContributionItem refItem = findAlphabeticalOrder(toolGroupId,
-                    contributingId, toolBarManager);
-            if (refItem != null && refItem.getId() != null) {
-                toolBarManager.insertAfter(refItem.getId(), actionContribution);
-            } else {
-                toolBarManager.add(actionContribution);
-            }
-            toolBarManager.update(false);
-
-        }
-
-        /**
-         * Contributes action from the action descriptor into the cool bar manager.
-         */
-        protected void contributeCoolbarAction(ActionDescriptor ad,
-                ActionSetActionBars bars) {
-            String toolBarId = ad.getToolbarId();
-            String toolGroupId = ad.getToolbarGroupId();
-            if (toolBarId == null && toolGroupId == null) {
-				return;
-			}
-
-            String contributingId = bars.getActionSetId();
-
-            if (toolBarId == null || toolBarId.equals("")) { //$NON-NLS-1$ 
-                // the item is being added to the coolitem for its action set
-                toolBarId = contributingId;
-            }
-
-            if (!toolBarId.equals(contributingId)) {
-                // adding to another action set, validate the id
-                if (!isValidCoolItemId(toolBarId, window)) {
-                    // toolbarid not valid, add the item to the coolitem for its action set
-                    toolBarId = contributingId;
-                } else {
-                    adjunctActions.add(ad);
-                    return;
-                }
-            }
-
-            // Create the action
-            PluginAction action = ad.getAction();
-            ActionContributionItem actionContribution = new PluginActionCoolBarContributionItem(
-                    action);
-            actionContribution.setMode(ad.getMode());
-
-            // retreive the toolbar from the action bars.
-            IToolBarManager toolBar = bars.getToolBarManager(toolBarId);
-
-            // Check to see if the group already exists
-            IContributionItem groupMarker = toolBar.find(toolGroupId);
-            // Add a group marker if one does not exist
-            if (groupMarker == null) {
-                // @issue should this be a GroupMarker?
-                toolBar.add(new Separator(toolGroupId));
-            }
-            toolBar.prependToGroup(toolGroupId, actionContribution);
-            toolBar.update(false);
-
-        }
-
-        /**
-         * Checks to see if the cool item id is in the given window.
-         */
-        private boolean isValidCoolItemId(String id, WorkbenchWindow window) {
-            ActionSetRegistry registry = WorkbenchPlugin.getDefault()
-                    .getActionSetRegistry();
-            if (registry.findActionSet(id) != null) {
-				return true;
-			}
-            if (window != null) {
-                return window.isWorkbenchCoolItemId(id);
-            }
-            return false;
-        }
-
-        /* (non-Javadoc)
-         * Method declared on Basic Contribution.
-         */
-        protected void insertMenuGroup(IMenuManager menu,
-                AbstractGroupMarker marker) {
-            if (actionSetId != null) {
-                IContributionItem[] items = menu.getItems();
-                // Loop thru all the current groups looking for the first
-                // group whose id > than the current action set id. Insert
-                // current marker just before this item then.
-                for (int i = 0; i < items.length; i++) {
-                    IContributionItem item = items[i];
-                    if (item.isSeparator() || item.isGroupMarker()) {
-                        if (item instanceof IActionSetContributionItem) {
-                            String testId = ((IActionSetContributionItem) item)
-                                    .getActionSetId();
-                            if (actionSetId.compareTo(testId) < 0) {
-                                menu.insertBefore(items[i].getId(), marker);
-                                return;
-                            }
-                        }
-                    }
-                }
-            }
-
-            menu.add(marker);
-        }
-
-        private IContributionItem findAlphabeticalOrder(String startId,
-                String itemId, IContributionManager mgr) {
-            IContributionItem[] items = mgr.getItems();
-            int insertIndex = 0;
-
-            // look for starting point
-            while (insertIndex < items.length) {
-                IContributionItem item = items[insertIndex];
-                if (startId != null && startId.equals(item.getId())) {
-					break;
-				}
-                ++insertIndex;
-            }
-
-            // Find the index that this item should be inserted in
-            for (int i = insertIndex + 1; i < items.length; i++) {
-                IContributionItem item = items[i];
-                if (item.isGroupMarker()) {
-					break;
-				}
-
-                String testId = null;
-                if (item instanceof PluginActionCoolBarContributionItem) {
-                    testId = ((PluginActionCoolBarContributionItem) item)
-                            .getActionSetId();
-                }
-                if (testId == null) {
-                    break;
-                }
-
-                if (itemId != null && testId != null) {
-                    if (itemId.compareTo(testId) < 1) {
-						break;
-					}
-                }
-                insertIndex = i;
-            }
-            if (insertIndex >= items.length) {
-                return null;
-            }
-            return items[insertIndex];
-        }
-
-        /**
-         * Returns whether the contributor is an adjunct contributor.
-         * 
-         * @return whether the contributor is an adjunct contributor
-         */
-        public boolean isAdjunctContributor() {
-            return adjunctActions.size() > 0;
-        }
-
-        /* (non-Javadoc)
-         * Method declared on Basic Contribution.
-         */
-        protected void insertAfter(IContributionManager mgr, String refId,
-                IContributionItem item) {
-            IContributionItem refItem = findInsertionPoint(refId, actionSetId,
-                    mgr, true);
-            if (refItem != null) {
-                mgr.insertAfter(refItem.getId(), item);
-            } else {
-                WorkbenchPlugin
-                        .log("Reference item " + refId + " not found for action " + item.getId()); //$NON-NLS-1$ //$NON-NLS-2$
-            }
-        }
-
-        //for dynamic UI
-        protected void revokeContribution(WorkbenchWindow window,
-                IActionBars bars, String id) {
-            revokeActionSetFromMenu(window.getMenuManager(), id);
-            //			IMenuManager menuMgr = bars.getMenuManager();
-            //			if (menuMgr != null) 
-            //				revokeActionSetFromMenu(menuMgr, id);
-
-            revokeActionSetFromCoolbar(window.getCoolBarManager2(), id);
-            //			IToolBarManager toolBarMgr = bars.getToolBarManager();
-            //			if (toolBarMgr != null && toolBarMgr instanceof CoolItemToolBarManager) 
-            //				revokeActionSetFromToolbar(toolBarMgr, id);
-        }
-
-        //for dynamic UI
-        protected void revokeAdjunctCoolbarAction(ActionDescriptor ad,
-                ActionSetActionBars bars) {
-            String toolBarId = ad.getToolbarId();
-//            String toolGroupId = ad.getToolbarGroupId();
-//
-//            String contributingId = bars.getActionSetId();
-            ICoolBarManager coolBarMgr = bars.getCoolBarManager();
-            //				((CoolItemToolBarManager)bars.getToolBarManager()).getParentManager();
-            PluginAction action = ad.getAction();
-            PluginActionCoolBarContributionItem actionContribution = new PluginActionCoolBarContributionItem(
-                    action);
-            actionContribution.setMode(ad.getMode());
-
-            bars.removeAdjunctContribution(actionContribution);
-
-            // remove a coolitem for the toolbar id if it exists 			
-            IContributionItem cbItem = coolBarMgr.find(toolBarId);
-            if (cbItem != null) {
-				coolBarMgr.remove(cbItem);
-			}
-
-            //			activeManager = cbItem.getToolBarManager();	
-            //			activeManager.remove(contributingId);	
-            //			IContributionItem groupMarker = activeManager.find(toolGroupId);
-            //			if (groupMarker != null) {
-            //				int idx = activeManager.indexOf(toolGroupId);
-            //				IContributionItem[] items = activeManager.getItems();
-            //				if (items.length == idx+1 || 
-            //						((items.length > idx && items[idx+1] instanceof Separator)))
-            //					if (activeManager.find(toolGroupId) != null)
-            //						activeManager.remove(toolGroupId);
-            //			} 			
-            //			activeManager.addAdjunctItemToGroup(toolGroupId, contributingId, actionContribution);		 
-        }
-
-        //for dynamic UI
-        private void revokeActionSetFromMenu(IMenuManager menuMgr,
-                String actionsetId) {
-            IContributionItem[] items = menuMgr.getItems();
-            ArrayList itemsToRemove = new ArrayList();
-            String id;
-            for (int i = 0; i < items.length; i++) {
-				if (items[i] instanceof IMenuManager) {
-                    revokeActionSetFromMenu((IMenuManager) items[i],
-                            actionsetId);
-                } else if (items[i] instanceof ActionSetContributionItem) {
-                    id = ((ActionSetContributionItem) items[i])
-                            .getActionSetId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                } else if (items[i] instanceof Separator) {
-                    id = ((Separator) items[i]).getId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                } else if (items[i] instanceof GroupMarker) {
-                    id = ((GroupMarker) items[i]).getId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                }
-			}
-            Iterator iter = itemsToRemove.iterator();
-            while (iter.hasNext()) {
-                IContributionItem item = (IContributionItem) iter.next();
-                menuMgr.remove(item);
-            }
-            menuMgr.update(true);
-        }
-
-        // for dynamic UI
-        private void revokeActionSetFromCoolbar(ICoolBarManager coolbarMgr,
-                String actionsetId) {
-            IContributionItem[] items = coolbarMgr.getItems();
-            ArrayList itemsToRemove = new ArrayList();
-            String id;
-            for (int i = 0; i < items.length; i++) {
-                id = items[i].getId();
-                if (actionsetId.equals(id)) {
-                    itemsToRemove.add(items[i]);
-                    continue;
-                }
-                if (items[i] instanceof IToolBarManager) {
-                    revokeActionSetFromToolbar((IToolBarManager) items[i],
-                            actionsetId);
-                } else if (items[i] instanceof IToolBarContributionItem) {
-                    id = ((IToolBarContributionItem) items[i]).getId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                } else if (items[i] instanceof GroupMarker) {
-                    id = ((GroupMarker) items[i]).getId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                }
-            }
-            Iterator iter = itemsToRemove.iterator();
-            while (iter.hasNext()) {
-				coolbarMgr.remove((IContributionItem) iter.next());
-			}
-            coolbarMgr.update(true);
-        }
-
-        // for dynamic UI
-        private void revokeActionSetFromToolbar(IToolBarManager toolbarMgr,
-                String actionsetId) {
-            IContributionItem[] items = toolbarMgr.getItems();
-            ArrayList itemsToRemove = new ArrayList();
-            String id;
-            for (int i = 0; i < items.length; i++) {
-                id = items[i].getId();
-                if (id.equals(actionsetId)) {
-                    itemsToRemove.add(items[i]);
-                    continue;
-                }
-                if (items[i] instanceof PluginActionCoolBarContributionItem) {
-                    id = ((PluginActionCoolBarContributionItem) items[i])
-                            .getActionSetId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                } else if (items[i] instanceof ActionContributionItem) {
-                    id = ((ActionContributionItem) items[i]).getId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                } else if (items[i] instanceof GroupMarker) {
-                    id = ((GroupMarker) items[i]).getId();
-                    if (actionsetId.equals(id)) {
-						itemsToRemove.add(items[i]);
-					}
-                }
-            }
-            Iterator iter = itemsToRemove.iterator();
-            while (iter.hasNext()) {
-				toolbarMgr.remove((IContributionItem) iter.next());
-			}
-            toolbarMgr.update(true);
-        }
-    }
-
-
-    /**
-     * Remove the given action set from the window.
-     * 
-     * @param set the set to remove
-     * @param window the window to remove from
-     */
-    protected void removeActionExtensions(PluginActionSet set,
-            IWorkbenchWindow window) {
-        this.actionSet = set;
-        this.window = window;
-        currentContribution = null;
-        targetID = null;
-        targetContributionTag = IWorkbenchRegistryConstants.TAG_ACTION_SET;
-        String id = set.getDesc().getId();
-        
-        if (cache != null) {
-            for (int i = 0; i < cache.size(); i++) {
-                ActionSetContribution contribution = (ActionSetContribution) cache
-                        .get(i);
-                contribution.revokeContribution((WorkbenchWindow) window,
-                        actionSet.getBars(), id);
-                if (contribution.isAdjunctContributor()) {
-                    for (int j = 0; j < contribution.adjunctActions.size(); j++) {
-                        ActionDescriptor adjunctAction = (ActionDescriptor) contribution.adjunctActions
-                                .get(j);
-                        contribution.revokeAdjunctCoolbarAction(adjunctAction,
-                                actionSet.getBars());
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetReader.java
deleted file mode 100644
index af11ec7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetReader.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.internal.decorators.LightweightActionDescriptor;
-import org.eclipse.ui.internal.registry.ActionSetDescriptor;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * Read the actions for an plugin action set.
- *
- * [Issue: There is some overlap with the class
- *		PluginActionSetBuilder which should be reviewed
- *		at a later time and maybe merged together]
- */
-public class PluginActionSetReader extends RegistryReader {
-    private List cache = new ArrayList();
-
-    /**
-     * PluginActionSetReader constructor comment.
-     */
-    public PluginActionSetReader() {
-        super();
-    }
-
-    /**
-     * This factory method returns a new ActionDescriptor for the
-     * configuration element.  
-     */
-    protected LightweightActionDescriptor createActionDescriptor(
-            IConfigurationElement element) {
-        return new LightweightActionDescriptor(element);
-    }
-
-    /**
-     * Return all the action descriptor within the set.
-     * 
-     * @param actionSet the set
-     * @return the descriptors
-     */
-    public LightweightActionDescriptor[] readActionDescriptors(
-            ActionSetDescriptor actionSet) {
-        readElements(new IConfigurationElement[] { actionSet.getConfigurationElement() });
-        LightweightActionDescriptor[] actions = new LightweightActionDescriptor[cache
-                .size()];
-        cache.toArray(actions);
-        return actions;
-    }
-
-    /**
-     * @see RegistryReader
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        String tag = element.getName();
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_ACTION_SET)) {
-            readElementChildren(element);
-            return true;
-        }
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_OBJECT_CONTRIBUTION)) {
-            // This builder is sometimes used to read the popup menu
-            // extension point.  Ignore all object contributions.
-            return true;
-        }
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_MENU)) {
-            return true; // just cache the element - don't go into it
-        }
-        if (tag.equals(IWorkbenchRegistryConstants.TAG_ACTION)) {
-            cache.add(createActionDescriptor(element));
-            return true; // just cache the action - don't go into
-        }
-
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PopupMenuExtender.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PopupMenuExtender.java
deleted file mode 100644
index c1145ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PopupMenuExtender.java
+++ /dev/null
@@ -1,534 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Dan Rubel (dan_rubel@instantiations.com) - accessor to get menu id
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener2;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.SubMenuManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.internal.menus.InternalMenuService;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.MenuUtil;
-
-/**
- * This class extends a single popup menu
- */
-public class PopupMenuExtender implements IMenuListener2,
-		IRegistryChangeListener {
-    
-    /**
-     * The bit in <code>bitSet</code> that stores whether the static actions
-     * have been read from the registry.
-     */
-    private static final int STATIC_ACTION_READ = 1;
-
-    /**
-     * The bit in <code>bitSet</code> that stores whether the editor input
-     * should be included for the sake of object contributions.
-     */
-    private static final int INCLUDE_EDITOR_INPUT = 1 << 1;
-
-    private final MenuManager menu;
-
-    private SubMenuManager menuWrapper;
-
-    private final ISelectionProvider selProvider;
-
-    private final IWorkbenchPart part;
-
-    private Map staticActionBuilders = null;
-
-    /**
-     * The boolean properties maintained by this extender. A bit set is used to
-     * save memory.
-     */
-	private int bitSet = 0;
-	
-	private ArrayList actionContributionCache = new ArrayList();
-	private ArrayList managerContributionCache = new ArrayList();
-
-    /**
-     * Construct a new menu extender.
-     * 
-     * @param id
-     *            the menu id
-     * @param menu
-     *            the menu to extend
-     * @param prov
-     *            the selection provider
-     * @param part
-     *            the part to extend
-     */
-    public PopupMenuExtender(String id, MenuManager menu,
-            ISelectionProvider prov, IWorkbenchPart part) {
-        this(id, menu, prov, part, true);
-    }
-
-    /**
-     * Construct a new menu extender.
-     * 
-     * @param id
-     *            the menu id
-     * @param menu
-     *            the menu to extend
-     * @param prov
-     *            the selection provider
-     * @param part
-     *            the part to extend
-     * @param includeEditorInput
-     *            Whether the editor input should be included when adding object
-     *            contributions to this context menu.
-     */
-    public PopupMenuExtender(final String id, final MenuManager menu,
-            final ISelectionProvider prov, final IWorkbenchPart part,
-            final boolean includeEditorInput) {
-		super();
-		this.menu = menu;
-		this.selProvider = prov;
-		this.part = part;
-		if (includeEditorInput) {
-			bitSet |= INCLUDE_EDITOR_INPUT;
-		}
-		menu.addMenuListener(this);
-		if (!menu.getRemoveAllWhenShown()) {
-			menuWrapper = new SubMenuManager(menu);
-			menuWrapper.setVisible(true);
-		}
-		readStaticActionsFor(id);
-				
-		Platform.getExtensionRegistry().addRegistryChangeListener(this);
-	}
-
-	// getMenuId() added by Dan Rubel (dan_rubel@instantiations.com)
-    /**
-     * Return the menu identifiers for this extender.
-     * 
-     * @return The set of all identifiers that represent this extender.
-     */
-    public Set getMenuIds() {
-    	if (staticActionBuilders == null) {
-    		return Collections.EMPTY_SET;
-    	}
-    	
-        return staticActionBuilders.keySet();
-    }
-
-    /**
-     * <p>
-     * Adds another menu identifier to this extender. An extender can represent
-     * many menu identifiers. These identifiers should represent the same menu
-     * manager, selection provider and part. Duplicate identifiers are
-     * automatically ignored.
-     * </p>
-     * <p>
-     * For example, it is necessary to filter out duplicate identifiers for
-     * <code>CompilationUnitEditor</code> instances, as these define both
-     * <code>"#CompilationUnitEditorContext"</code> and
-     * <code>"org.eclipse.jdt.ui.CompilationUnitEditor.EditorContext"</code>
-     * as menu identifier for the same pop-up menu. We don't want to contribute
-     * duplicate items in this case.
-     * </p>
-     * 
-     * @param menuId
-     *            The menu identifier to add to this extender; should not be
-     *            <code>null</code>.
-     */
-    public final void addMenuId(final String menuId) {
-		bitSet &= ~STATIC_ACTION_READ;
-		readStaticActionsFor(menuId);
-	}
-
-    /**
-     * Determines whether this extender would be the same as another extender
-     * created with the given values. Two extenders are equivalent if they have
-     * the same menu manager, selection provider and part (i.e., if the menu
-     * they represent is about to show, they would populate it with duplicate
-     * values).
-     * 
-     * @param menuManager
-     *            The menu manager with which to compare; may be
-     *            <code>null</code>.
-     * @param selectionProvider
-     *            The selection provider with which to compare; may be
-     *            <code>null</code>.
-     * @param part
-     *            The part with which to compare; may be <code>null</code>.
-     * @return <code>true</code> if the menu manager, selection provider and
-     *         part are all the same.
-     */
-    public final boolean matches(final MenuManager menuManager,
-            final ISelectionProvider selectionProvider,
-            final IWorkbenchPart part) {
-        return (this.menu == menuManager)
-                && (this.selProvider == selectionProvider)
-                && (this.part == part);
-    }
-
-    /**
-     * Contributes items registered for the currently active editor.
-     */
-    private void addEditorActions(IMenuManager mgr) {
-        ISelectionProvider activeEditor = new ISelectionProvider() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-             */
-            public void addSelectionChangedListener(
-                    ISelectionChangedListener listener) {
-                throw new UnsupportedOperationException(
-                "This ISelectionProvider is static, and cannot be modified."); //$NON-NLS-1$
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()
-             */
-            public ISelection getSelection() {
-                if (part instanceof IEditorPart) {
-                    final IEditorPart editorPart = (IEditorPart) part;
-                    return new StructuredSelection(new Object[] { editorPart
-                            .getEditorInput() });
-                }
-
-                return new StructuredSelection(new Object[0]);
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-             */
-            public void removeSelectionChangedListener(
-                    ISelectionChangedListener listener) {
-                throw new UnsupportedOperationException(
-                "This ISelectionProvider is static, and cannot be modified."); //$NON-NLS-1$
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)
-             */
-            public void setSelection(ISelection selection) {
-                throw new UnsupportedOperationException(
-                        "This ISelectionProvider is static, and cannot be modified."); //$NON-NLS-1$
-            }
-        };
-        
-        if (ObjectActionContributorManager.getManager()
-                .contributeObjectActions(part, mgr, activeEditor)) {
-            mgr.add(new Separator());
-        }
-    }
-
-    /**
-     * Contributes items registered for the object type(s) in
-     * the current selection.
-     */
-    private void addObjectActions(IMenuManager mgr) {
-        if (selProvider != null) {
-            if (ObjectActionContributorManager.getManager()
-                    .contributeObjectActions(part, mgr, selProvider)) {
-                mgr.add(new Separator());
-            }
-        }
-    }
-    
-    /**
-     * Disposes all of the static actions.
-     */
-    private final void clearStaticActions() {
-		bitSet &= ~STATIC_ACTION_READ;
-		if (staticActionBuilders != null) {
-			final Iterator staticActionBuilderItr = staticActionBuilders
-					.values().iterator();
-			while (staticActionBuilderItr.hasNext()) {
-				final Object staticActionBuilder = staticActionBuilderItr
-						.next();
-				if (staticActionBuilder instanceof ViewerActionBuilder) {
-					((ViewerActionBuilder) staticActionBuilder).dispose();
-				}
-			}
-		}
-	}
-
-    /**
-     * Adds static items to the context menu.
-     */
-    private void addStaticActions(IMenuManager mgr) {
-		if (staticActionBuilders != null) {
-			final Iterator staticActionBuilderItr = staticActionBuilders
-					.values().iterator();
-			while (staticActionBuilderItr.hasNext()) {
-				final ViewerActionBuilder staticActionBuilder = (ViewerActionBuilder) staticActionBuilderItr
-						.next();
-				staticActionBuilder.contribute(mgr, null, true);
-			}
-		}
-	}
-
-    /**
-     * Notifies the listener that the menu is about to be shown.
-     */
-    public void menuAboutToShow(IMenuManager mgr) {
-    	IMenuManager originalManager = mgr;
-    	
-    	// Add this menu as a visible menu.
-    	final IWorkbenchPartSite site = part.getSite();
-    	if (site != null) {
-			final IWorkbench workbench = site.getWorkbenchWindow()
-					.getWorkbench();
-			if (workbench instanceof Workbench) {
-				final Workbench realWorkbench = (Workbench) workbench;
-				ISelection input = null;
-				if ((bitSet & INCLUDE_EDITOR_INPUT) != 0) {
-					if (part instanceof IEditorPart) {
-						final IEditorPart editorPart = (IEditorPart) part;
-						input = new StructuredSelection(
-								new Object[] { editorPart.getEditorInput() });
-					}
-				}
-				ISelection s = (selProvider == null ? null : selProvider
-						.getSelection());
-				realWorkbench.addShowingMenus(getMenuIds(), s, input);
-			}
-		}
-    	
-    	readStaticActions();
-        // test for additions removed to comply with menu contributions
-        if (menuWrapper != null) {
-            mgr = menuWrapper;
-            menuWrapper.removeAll();
-        }
-        addMenuContributions(originalManager);
-        if ((bitSet & INCLUDE_EDITOR_INPUT) != 0) {
-            addEditorActions(mgr);
-        }
-        addObjectActions(mgr);
-        addStaticActions(mgr);
-        cleanUpContributionCache();
-    }
-    
-    private boolean contributionsPopulated = false;
-    
-    private void addMenuContributions(IMenuManager mgr) {
-		final IMenuService menuService = (IMenuService) part.getSite()
-				.getService(IMenuService.class);
-		if (menuService == null) {
-			return;
-		}
-		if ((mgr.getRemoveAllWhenShown() || !contributionsPopulated)
-				&& mgr instanceof ContributionManager) {
-			ContributionManager manager = (ContributionManager) mgr;
-			contributionsPopulated = true;
-			menuService
-					.populateContributionManager(manager, MenuUtil.ANY_POPUP);
-			Iterator i = getMenuIds().iterator();
-			InternalMenuService realService = (InternalMenuService) menuService;
-			while (i.hasNext()) {
-				String id = "popup:" + i.next(); //$NON-NLS-1$
-				realService.populateContributionManager(manager, id, false);
-			}
-		}
-	}
-
-    /**
-	 * Notifies the listener that the menu is about to be hidden.
-	 */
-    public final void menuAboutToHide(final IMenuManager mgr) {
-    	gatherContributions(mgr);
-    	// Remove this menu as a visible menu.
-    	final IWorkbenchPartSite site = part.getSite();
-    	if (site != null) {
-    		final IWorkbench workbench = site.getWorkbenchWindow().getWorkbench();
-    		if (workbench instanceof Workbench) {
-    			// try delaying this until after the selection event
-    			// has been fired.
-    			// This is less threatening if the popup: menu
-    			// contributions aren't tied to the evaluation service
-				workbench.getDisplay().asyncExec(new Runnable() {
-					public void run() {
-						final Workbench realWorkbench = (Workbench) workbench;
-						realWorkbench.removeShowingMenus(getMenuIds(), null, null);
-				    	cleanUpContributionCache();
-					}
-				});
-			}
-    	}
-    }
-
-	private void gatherContributions(final IMenuManager mgr) {
-		final IContributionItem[] items = mgr.getItems();
-		for (int i = 0; i < items.length; i++) {
-			if (items[i] instanceof PluginActionContributionItem) {
-				actionContributionCache.add(items[i]);
-			} else if (items[i] instanceof IMenuManager) {
-				if (items[i] instanceof ContributionManager) {
-					managerContributionCache.add(items[i]);
-				}
-				gatherContributions(((IMenuManager)items[i]));
-			}
-		}
-	}
-	
-	private void cleanUpContributionCache() {
-		if (!actionContributionCache.isEmpty()) {
-			PluginActionContributionItem[] items = (PluginActionContributionItem[]) actionContributionCache
-					.toArray(new PluginActionContributionItem[actionContributionCache
-							.size()]);
-			actionContributionCache.clear();
-			for (int i = 0; i < items.length; i++) {
-				items[i].dispose();
-			}
-		}
-		if (!managerContributionCache.isEmpty() && menu.getRemoveAllWhenShown()) {
-			ContributionManager[] items = (ContributionManager[]) managerContributionCache
-					.toArray(new ContributionManager[managerContributionCache
-							.size()]);
-			managerContributionCache.clear();
-			final IMenuService menuService = (IMenuService) part.getSite()
-					.getService(IMenuService.class);
-			if (menuService instanceof InternalMenuService) {
-				InternalMenuService realService = (InternalMenuService) menuService;
-				for (int i = 0; i < items.length; i++) {
-					realService.releaseContributions(items[i]);
-					items[i].removeAll();
-				}
-			}
-		} else {
-			managerContributionCache.clear();
-		}
-	}
-
-	/**
-     * Read all of the static items for the content menu.
-     */
-    private final void readStaticActions() {
-    	if (staticActionBuilders != null) {
-			final Iterator menuIdItr = staticActionBuilders.keySet().iterator();
-			while (menuIdItr.hasNext()) {
-				final String menuId = (String) menuIdItr.next();
-				readStaticActionsFor(menuId);
-			}
-		}
-    }
-
-    /**
-	 * Read static items for a particular menu id, into the context menu.
-	 */
-    private void readStaticActionsFor(final String menuId) {
-		if ((bitSet & STATIC_ACTION_READ) != 0) {
-			return;
-		}
-
-		bitSet |= STATIC_ACTION_READ;
-
-		// If no menu id provided, then there is no contributions
-		// to add. Fix for bug #33140.
-		if ((menuId == null) || (menuId.length() < 1)) {
-			return;
-		}
-
-		if (staticActionBuilders == null) {
-			staticActionBuilders = new HashMap();
-		}
-
-		Object object = staticActionBuilders.get(menuId);
-		if (!(object instanceof ViewerActionBuilder)) {
-			object = new ViewerActionBuilder();
-			staticActionBuilders.put(menuId, object);
-		}
-		final ViewerActionBuilder staticActionBuilder = (ViewerActionBuilder) object;
-		staticActionBuilder.readViewerContributions(menuId, selProvider, part);
-	}
-
-    /**
-     * Dispose of the menu extender. Should only be called when the part
-     * is disposed.
-     */
-    public void dispose() {
-		clearStaticActions();
-		final IMenuService menuService = (IMenuService) part.getSite()
-				.getService(IMenuService.class);
-		if (menuService != null) {
-			menuService.releaseContributions(menu);
-		}
-		Platform.getExtensionRegistry().removeRegistryChangeListener(this);
-		menu.removeMenuListener(this);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IRegistryChangeListener#registryChanged(org.eclipse.core.runtime.IRegistryChangeEvent)
-	 */
-	public void registryChanged(final IRegistryChangeEvent event) {
-		Display display = Display.getDefault();
-		if (part != null) {
-			display = part.getSite().getPage().getWorkbenchWindow().getWorkbench().getDisplay();
-		}
-		//check the delta to see if there are any viewer contribution changes.  if so, null our builder to cause reparsing on the next menu show
-		IExtensionDelta [] deltas = event.getExtensionDeltas();
-		for (int i = 0; i < deltas.length; i++) {
-			IExtensionDelta delta = deltas[i];
-			IExtensionPoint extensionPoint = delta.getExtensionPoint();
-			if (extensionPoint.getNamespace().equals(
-					WorkbenchPlugin.PI_WORKBENCH)
-					&& extensionPoint.getSimpleIdentifier().equals(
-							IWorkbenchRegistryConstants.PL_POPUP_MENU)) {
-
-				boolean clearPopups = false;
-				IConfigurationElement [] elements = delta.getExtension().getConfigurationElements();
-				for (int j = 0; j < elements.length; j++) {
-					IConfigurationElement element = elements[j];
-					if (element.getName().equals(IWorkbenchRegistryConstants.TAG_VIEWER_CONTRIBUTION)) {
-						clearPopups = true;
-						break;
-					}					
-				}
-										
-				if (clearPopups) {
-					display.syncExec(new Runnable() {
-						public void run() {
-							clearStaticActions();
-						}
-					});
-				}
-			}
-		}
-	}
-	
-	public MenuManager getManager() {
-		return menu;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java
deleted file mode 100644
index 00a00e2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductInfo.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * Stores information about the product.  This class replaces the old AboutInfo.
- * The product information is available as strings, but is needed as URLs, etc.
- * This class manages that translation.
- * @since 3.0
- */
-public class ProductInfo {
-    private IProduct product;
-
-    private String productName;
-
-    private String appName;
-
-    private ImageDescriptor[] windowImages;
-
-    private ImageDescriptor aboutImage;
-
-    private String aboutText;
-
-    public ProductInfo(IProduct product) {
-        this.product = product;
-    }
-
-    /**
-     * Returns the product name or <code>null</code>.
-     * This is shown in the window title and the About action.
-     *
-     * @return the product name, or <code>null</code>
-     */
-    public String getProductName() {
-        if (productName == null && product != null) {
-			productName = product.getName();
-		}
-        return productName;
-    }
-
-    /**
-     * Returns the application name or <code>null</code>. Note this is never
-     * shown to the user.  It is used to initialize the SWT Display.
-     * <p>
-     * On Motif, for example, this can be used to set the name used
-     * for resource lookup.
-     * </p>
-     *
-     * @return the application name, or <code>null</code>
-     * 
-     * @see org.eclipse.swt.widgets.Display#setAppName
-     */
-    public String getAppName() {
-        if (appName == null && product != null) {
-			appName = ProductProperties.getAppName(product);
-		}
-        return appName;
-    }
-
-    /**
-     * Returns the descriptor for an image which can be shown in an "about" dialog 
-     * for this product. Products designed to run "headless" typically would not 
-     * have such an image.
-     * 
-     * @return the descriptor for an about image, or <code>null</code> if none
-     */
-    public ImageDescriptor getAboutImage() {
-        if (aboutImage == null && product != null) {
-			aboutImage = ProductProperties.getAboutImage(product);
-		}
-        return aboutImage;
-    }
-
-    /**
-     * Return an array of image descriptors for the window images to use for
-     * this product. The expectations is that the elements will be the same
-     * image rendered at different sizes. Products designed to run "headless"
-     * typically would not have such images.
-     * 
-     * @return an array of the image descriptors for the window images, or
-     *         <code>null</code> if none
-     */
-    public ImageDescriptor[] getWindowImages() {
-        if (windowImages == null && product != null) {
-			windowImages = ProductProperties.getWindowImages(product);
-		}
-        return windowImages;
-    }
-
-    /**
-     * Returns the text to show in an "about" dialog for this product.
-     * Products designed to run "headless" typically would not have such text.
-     * 
-     * @return the about text, or <code>null</code> if none
-     */
-    public String getAboutText() {
-        if (aboutText == null && product != null) {
-			aboutText = ProductProperties.getAboutText(product);
-		}
-        return aboutText;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductProperties.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductProperties.java
deleted file mode 100644
index 884571a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ProductProperties.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import com.ibm.icu.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.MissingResourceException;
-import java.util.PropertyResourceBundle;
-
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.branding.IProductConstants;
-
-/**
- * A class that converts the strings returned by
- * <code>org.eclipse.core.runtime.IProduct.getProperty</code> to the
- * appropriate class. This implementation is tightly bound to the properties
- * provided in IProductConstants. Clients adding their own properties could
- * choose to subclass this.
- * 
- * @see org.eclipse.ui.branding.IProductConstants
- * @since 3.0
- */
-public class ProductProperties extends BrandingProperties implements
-        IProductConstants {
-
-    private final IProduct product;
-
-    private String appName;
-
-    private String aboutText;
-
-    private ImageDescriptor aboutImageDescriptor;
-
-    private ImageDescriptor[] windowImageDescriptors;
-
-    private URL welcomePageUrl;
-
-    private String productName;
-
-    private String productId;
-
-    private static final String ABOUT_MAPPINGS = "$nl$/about.mappings"; //$NON-NLS-1$
-
-    private static String[] systemPropertiesKeys = new String[0];
-    private static String[] mappings = loadMappings();
-
-    private static String[] loadMappings() {
-        IProduct product = Platform.getProduct();
-        if (product == null) {
-			return new String[0];
-		}
-        URL location = Platform.find(product.getDefiningBundle(), new Path(
-                ABOUT_MAPPINGS));
-        PropertyResourceBundle bundle = null;
-        InputStream is;
-        if (location != null) {
-            is = null;
-            try {
-                is = location.openStream();
-                bundle = new PropertyResourceBundle(is);
-            } catch (IOException e) {
-                bundle = null;
-            } finally {
-                try {
-                    if (is != null) {
-						is.close();
-					}
-                } catch (IOException e) {
-                    // do nothing if we fail to close
-                }
-            }
-        }
-
-        ArrayList mappingsList = new ArrayList();
-        if (bundle != null) {
-            boolean found = true;
-            int i = 0;
-            ArrayList systemPropertiesKeysList = new ArrayList();
-            while (found) {
-                try {
-                	String nextString = bundle.getString(Integer.toString(i));
-                	int length = nextString.length();
-                	/*
-                	 * Check if the mapping value is a system property, specified
-                	 * by '$' at the beginning and end of the string.  If so, add 
-                	 * the key to the systemPropertiesKeys array and insert array
-                	 * indices "{i}" to allow the string to be formatted again with 
-                	 * the new system property values.
-                	 */
-                	if (length > 2 && nextString.indexOf('$') == 0 && nextString.lastIndexOf('$') == length - 1) {
-                		int newIndex = systemPropertiesKeysList.size();
-                		systemPropertiesKeysList.add(nextString.substring(1, length-1));
-                		nextString = "{" + newIndex + "}"; //$NON-NLS-1$ //$NON-NLS-2$
-                	}
-                    mappingsList.add(nextString);
-                } catch (MissingResourceException e) {
-                    found = false;
-                }
-                i++;
-            }
-            systemPropertiesKeys = (String[]) systemPropertiesKeysList.toArray(new String[systemPropertiesKeysList.size()]) ;
-        }
-        return (String[]) mappingsList.toArray(new String[mappingsList.size()]);
-    }
-
-    /**
-     * This instance will return properties from the given product.  The properties are
-     * retrieved in a lazy fashion and cached for later retrieval.
-     * @param product must not be null
-     */
-    public ProductProperties(IProduct product) {
-        if (product == null) {
-			throw new IllegalArgumentException();
-		}
-        this.product = product;
-    }
-
-    /**
-     * The application name, used to initialize the SWT Display.  This
-     * value is distinct from the string displayed in the application
-     * title bar.
-     * <p>
-     * E.g., On motif, this can be used to set the name used for
-     * resource lookup.
-     * </p>
-     * @see org.eclipse.swt.widgets.Display#setAppName
-     */
-    public String getAppName() {
-        if (appName == null) {
-			appName = getAppName(product);
-		}
-        return appName;
-    }
-
-    /**
-     * The text to show in an "about" dialog for this product.
-     * Products designed to run "headless" typically would not
-     * have such text.
-     */
-    public String getAboutText() {
-        if (aboutText == null) {
-			aboutText = getAboutText(product);
-		}
-        return aboutText;
-    }
-
-    /**
-     * An image which can be shown in an "about" dialog for this
-     * product. Products designed to run "headless" typically would not 
-     * have such an image.
-     * <p>
-     * A full-sized product image (no larger than 500x330 pixels) is
-     * shown without the "aboutText" blurb.  A half-sized product image
-     * (no larger than 250x330 pixels) is shown with the "aboutText"
-     * blurb beside it.
-     */
-    public ImageDescriptor getAboutImage() {
-        if (aboutImageDescriptor == null) {
-			aboutImageDescriptor = getAboutImage(product);
-		}
-        return aboutImageDescriptor;
-    }
-
-    /**
-     * An array of one or more images to be used for this product.  The
-     * expectation is that the array will contain the same image rendered
-     * at different sizes (16x16 and 32x32).  
-     * Products designed to run "headless" typically would not have such images.
-     * <p>
-     * If this property is given, then it supercedes <code>WINDOW_IMAGE</code>.
-     * </p>
-     */
-    public ImageDescriptor[] getWindowImages() {
-        if (windowImageDescriptors == null) {
-			windowImageDescriptors = getWindowImages(product);
-		}
-        return windowImageDescriptors;
-    }
-
-    /**
-     * Location of the product's welcome page (special XML-based format), either
-     * a fully qualified valid URL or a path relative to the product's defining
-     * bundle. Products designed to run "headless" typically would not have such
-     * a page. Use of this property is discouraged in 3.0, the new
-     * org.eclipse.ui.intro extension point should be used instead.
-     */
-    public URL getWelcomePageUrl() {
-        if (welcomePageUrl == null) {
-			welcomePageUrl = getWelcomePageUrl(product);
-		}
-        return welcomePageUrl;
-    }
-
-    /**
-     * Returns the product name or <code>null</code>.
-     * This is shown in the window title and the About action.
-     */
-    public String getProductName() {
-        if (productName == null) {
-			productName = getProductName(product);
-		}
-        return productName;
-    }
-
-    /**
-     * Returns the id for the product or <code>null</code> if none.
-     */
-    public String getProductId() {
-        if (productId == null) {
-			productId = getProductId(product);
-		}
-        return productId;
-    }
-
-    /**
-     * The application name, used to initialize the SWT Display.  This
-     * value is distinct from the string displayed in the application
-     * title bar.
-     * <p>
-     * E.g., On motif, this can be used to set the name used for
-     * resource lookup.
-     * </p>
-     * <p>
-     * The returned value will have {n} values substituted based on the
-     * current product's mappings regardless of the given product argument.
-     * </p>
-     * @see org.eclipse.swt.widgets.Display#setAppName
-     */
-    public static String getAppName(IProduct product) {
-        String property = product.getProperty(APP_NAME);
-        if (property == null) {
-			return ""; //$NON-NLS-1$
-		}
-        if (property.indexOf('{') == -1) {
-			return property;
-		}
-        return MessageFormat.format(property, mappings);
-    }
-
-    /**
-     * The text to show in an "about" dialog for this product.
-     * Products designed to run "headless" typically would not
-     * have such text.
-     * <p>
-     * The returned value will have {n} values substituted based on the
-     * current product's mappings regardless of the given product argument.
-     * </p>
-     */
-    public static String getAboutText(IProduct product) {
-        String property = product.getProperty(ABOUT_TEXT);
-        if (property == null) {
-			return ""; //$NON-NLS-1$
-		}
-        if (property.indexOf('{') == -1) {
-			return property;
-		}
-        property = MessageFormat.format(property, mappings);
-        
-        /*
-         * If there is still a "{" character, check if there are
-         * System properties in the systemPropertiesKeys array that 
-         * need to be loaded. 
-         */
-        if (property.indexOf('{') == -1) {
-        	return property;
-        }
-        
-        if (systemPropertiesKeys.length == 0) 
-			return property;
-        
-        /*
-         * Create a String array of the actual values to be mapped
-         * to the system properties keys.
-         */
-        String[] systemPropertiesMappings = new String[systemPropertiesKeys.length];
-        for (int i=0; i < systemPropertiesKeys.length; i++){
-        	String systemProperty = systemPropertiesKeys[i];
-        	// If system property is not set, insert an empty String
-        	systemPropertiesMappings[i] = System.getProperty(systemProperty, ""); //$NON-NLS-1$
-        }
-        /*
-         * Format string with the system properties values.
-         */
-	    return MessageFormat.format(property, systemPropertiesMappings);
-    }
-
-    /**
-     * An image which can be shown in an "about" dialog for this
-     * product. Products designed to run "headless" typically would not 
-     * have such an image.
-     * <p>
-     * A full-sized product image (no larger than 500x330 pixels) is
-     * shown without the "aboutText" blurb.  A half-sized product image
-     * (no larger than 250x330 pixels) is shown with the "aboutText"
-     * blurb beside it.
-     */
-    public static ImageDescriptor getAboutImage(IProduct product) {
-        return getImage(product.getProperty(ABOUT_IMAGE), product
-                .getDefiningBundle());
-    }
-
-    /**
-     * An array of one or more images to be used for this product.  The
-     * expectation is that the array will contain the same image rendered
-     * at different sizes (16x16 and 32x32).  
-     * Products designed to run "headless" typically would not have such images.
-     * <p>
-     * If this property is given, then it supercedes <code>WINDOW_IMAGE</code>.
-     * </p>
-     */
-    public static ImageDescriptor[] getWindowImages(IProduct product) {
-        String property = product.getProperty(WINDOW_IMAGES);
-
-        // for compatibility with pre-3.0 plugins that may still use WINDOW_IMAGE
-        if (property == null) {
-			property = product.getProperty(WINDOW_IMAGE);
-		}
-
-        return getImages(property, product.getDefiningBundle());
-    }
-
-    /**
-     * Location of the product's welcome page (special XML-based format), either
-     * a fully qualified valid URL or a path relative to the product's defining
-     * bundle. Products designed to run "headless" typically would not have such
-     * a page. Use of this property is discouraged in 3.0, the new
-     * org.eclipse.ui.intro extension point should be used instead.
-     */
-    public static URL getWelcomePageUrl(IProduct product) {
-        return getUrl(product.getProperty(WELCOME_PAGE), product
-                .getDefiningBundle());
-    }
-
-    /**
-     * Returns the product name or <code>null</code>.
-     * This is shown in the window title and the About action.
-     */
-    public static String getProductName(IProduct product) {
-        return product.getName();
-    }
-
-    /**
-     * Returns the id for the product.
-     */
-    public static String getProductId(IProduct product) {
-        return product.getId();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RadioMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RadioMenu.java
deleted file mode 100644
index 4a04a8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RadioMenu.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-
-/**
- * Represents a group of radio buttons in a menu. Each menu item
- * is mapped onto a particular value. The RadioMenu reports its state
- * using the attached Model object. That is, Model.getState() will
- * return the value of the currently selected radio button and Model.setState(value)
- * will select the radio button associated with the given value.
- */
-public class RadioMenu implements IChangeListener {
-
-    private Model data;
-
-    private Menu parent;
-
-    private List items = new ArrayList();
-
-    SelectionAdapter selectionAdapter = new SelectionAdapter() {
-        public void widgetSelected(SelectionEvent e) {
-            Object newState = e.widget.getData();
-
-            data.setState(newState, RadioMenu.this);
-        }
-    };
-
-    /**
-     * Creates a set of radio menu items on the given menu. 
-     * 
-     * @param parent menu that will contain the menu items
-     * @param newData the model that will store the value of the currently selected item
-     */
-    public RadioMenu(Menu parent, Model newData) {
-        this.parent = parent;
-        this.data = newData;
-
-        newData.addChangeListener(this);
-    }
-
-    /**
-     * Returns true iff the given values are considered equal.
-     * 
-     * @param value1
-     * @param value2
-     * @return
-     */
-    private static boolean isEqual(Object value1, Object value2) {
-        if (value1 == null) {
-            return value2 == null;
-        } else if (value2 == null) {
-            return false;
-        }
-
-        return value1.equals(value2);
-    }
-
-    /**
-     * Creates a new menu item with the given text and value. When 
-     * the item is selected, the state of the model will change to
-     * match the given value.
-     * 
-     * @param text
-     * @param value
-     */
-    public void addMenuItem(String text, Object value) {
-        MenuItem newItem = new MenuItem(parent, SWT.RADIO);
-
-        newItem.setSelection(isEqual(data.getState(), value));
-        newItem.setText(text);
-        newItem.setData(value);
-        items.add(newItem);
-
-        newItem.addSelectionListener(selectionAdapter);
-    }
-
-    /**
-     * Disposes all menu items
-     */
-    public void dispose() {
-        Iterator iter = items.iterator();
-        while (iter.hasNext()) {
-            MenuItem next = (MenuItem) iter.next();
-
-            if (!next.isDisposed()) {
-                next.removeSelectionListener(selectionAdapter);
-                next.dispose();
-            }
-        }
-
-        items.clear();
-    }
-
-    /**
-     * Refreshes the selected menu items to match the current state of the model.
-     */
-    private void refreshSelection() {
-        Iterator iter = items.iterator();
-        while (iter.hasNext()) {
-            MenuItem next = (MenuItem) iter.next();
-
-            if (!next.isDisposed()) {
-                next.setSelection(isEqual(data.getState(), next.getData()));
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.controls.IView#changed()
-     */
-    public void update(boolean changed) {
-        refreshSelection();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
deleted file mode 100644
index bce7db2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * This job creates an animated rectangle that moves from a source rectangle to
- * a target in a fixed amount of time. To begin the animation, instantiate this
- * object then call schedule().
- *  
- * @since 3.0
- */
-public class RectangleAnimation extends Job {
-	private static class AnimationFeedbackFactory {
-		/**
-		 * Determines whether or not the system being used is
-		 * sufficiently fast to support image animations.
-		 * 
-		 * Assumes that a pixel is ~3 bytes
-		 * 
-		 * For now we use a base limitation of 50MB/sec as a
-		 * 'reverse blt' rate so that a 2MB size shell can be
-		 * captured in under 1/25th of a sec. 
-		 */
-		private static final int IMAGE_ANIMATION_THRESHOLD = 25; // Frame captures / Sec
-		private static final int IMAGE_ANIMATION_TEST_LOOP_COUNT = 20; // test the copy 'n' times
-	    
-		//private static double framesPerSec = 0.0;
-		
-	    public static double getCaptureSpeed(Shell wb) {
-	    	// OK, capture
-	    	Rectangle bb = wb.getBounds();
-			Image backingStore = new Image(wb.getDisplay(), bb);
-			GC gc = new GC(wb);
-			
-			// Loop 'n' times to average the result
-	    	long startTime = System.currentTimeMillis();
-			for (int i = 0; i < IMAGE_ANIMATION_TEST_LOOP_COUNT; i++)
-				gc.copyArea(backingStore, bb.x, bb.y);			
-			gc.dispose();
-			long endTime = System.currentTimeMillis();
-			
-			// get Frames / Sec
-			double fps = IMAGE_ANIMATION_TEST_LOOP_COUNT / ((endTime-startTime) / 1000.0);
-			double pps = fps * (bb.width*bb.height*4); // 4 bytes/pixel
-			System.out.println("FPS: " + fps + " Bytes/sec: " + (long)pps); //$NON-NLS-1$ //$NON-NLS-2$
-	    	return fps;
-	    }
-		
-	    public boolean useImageAnimations(Shell wb) {
-	    	return getCaptureSpeed(wb) >= IMAGE_ANIMATION_THRESHOLD;
-	    }
-	    
-		public static DefaultAnimationFeedback createAnimationRenderer(Shell parentShell) {
-			// on the first call test the animation threshold to determine
-			// whether to use image animations or not...
-//			if (framesPerSec == 0.0)
-//				framesPerSec = getCaptureSpeed(parentShell);
-//			
-//	        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-//	        boolean useNewMinMax = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
-//
-//			if (useNewMinMax && framesPerSec >= IMAGE_ANIMATION_THRESHOLD) {
-//				return new ImageAnimationFeedback();
-//			}
-//			
-			return new DefaultAnimationFeedback();
-		}
-	}
-	
-	// Constants
-	public static final int TICK_TIMER = 1;
-	public static final int FRAME_COUNT = 2;
-
-	// Animation Parameters
-	private Display display;
-	
-	private boolean enableAnimations;
-    private int timingStyle = TICK_TIMER;
-    private int duration;
-    
-    // Control State
-    private DefaultAnimationFeedback feedbackRenderer;
-    private long stepCount;
-    private long frameCount;
-    private long startTime;
-    private long curTime;
-    private long prevTime;
-    
-    // Macros
-    private boolean done() { return amount() >= 1.0; }
-
-    public static Rectangle interpolate(Rectangle start, Rectangle end,
-            double amount) {
-        double initialWeight = 1.0 - amount;
-
-        Rectangle result = new Rectangle((int) (start.x * initialWeight + end.x
-                * amount), (int) (start.y * initialWeight + end.y * amount),
-                (int) (start.width * initialWeight + end.width * amount),
-                (int) (start.height * initialWeight + end.height * amount));
-
-        return result;
-    }
-    
-    // Animation Step
-    private Runnable animationStep = new Runnable() {
-
-		public void run() {
-            // Capture time
-            prevTime = curTime;
-            curTime = System.currentTimeMillis();
-
-            // Has the system timer 'ticked'?
-            if (curTime != prevTime) {
-            	clockTick();
-            }
-            
-            if (isUpdateStep()) {
-	            updateDisplay();
-	            frameCount++;
-            }
-            
-            stepCount++;
-        }
-
-    };
-    
-	/**
-     * Creates an animation that will morph the start rectangle to the end rectangle in the
-     * given number of milliseconds. The animation will take the given number of milliseconds to
-     * complete.
-     * 
-     * Note that this is a Job, so you must invoke schedule() before the animation will begin 
-     * 
-     * @param whereToDraw specifies the composite where the animation will be drawn. Note that
-     * although the start and end rectangles can accept any value in display coordinates, the
-     * actual animation will be clipped to the boundaries of this composite. For this reason,
-     * it is good to select a composite that encloses both the start and end rectangles.
-     * @param start initial rectangle (display coordinates)
-     * @param end final rectangle (display coordinates)
-     * @param duration number of milliseconds over which the animation will run 
-     */
-    public RectangleAnimation(Shell parentShell, Rectangle start,
-            Rectangle end, int duration) {
-        super(WorkbenchMessages.RectangleAnimation_Animating_Rectangle);
-
-        // if animations aren't on this is a NO-OP
-        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-        enableAnimations = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS);
-        
-        if (!enableAnimations) {
-        	return;
-        }
-
-        // Capture paraeters
-        display = parentShell.getDisplay();
-        this.duration = duration;
-
-        // Don't show the job in monitors
-        setSystem(true);
-        
-        // Pick the renderer (could be a preference...)
-        feedbackRenderer = AnimationFeedbackFactory.createAnimationRenderer(parentShell);
-        
-        // Set it up
-        feedbackRenderer.initialize(parentShell, start, end);
-        
-        // Set the animation's initial state
-        stepCount = 0;
-        //long totalFrames = (long) ((duration / 1000.0) * framesPerSec);       
-        curTime = startTime = System.currentTimeMillis();
-    }
-
-    public RectangleAnimation(Shell parentShell, Rectangle start, Rectangle end) {
-        this(parentShell, start, end, 400);
-    }
-    
-    public void addStartRect(Rectangle rect) {
-    	if (feedbackRenderer != null)
-    		feedbackRenderer.addStartRect(rect);
-    }
-    
-    public void addEndRect(Rectangle rect) {
-    	if (feedbackRenderer != null)
-    	    feedbackRenderer.addEndRect(rect);
-    }
-
-    public void addStartRect(Control ctrl) {
-    	Rectangle ctrlBounds = ctrl.getBounds();
-    	Rectangle startRect = Geometry.toDisplay(ctrl.getParent(), ctrlBounds);
-    	addStartRect(startRect);
-    }
-
-    public void addEndRect(Control ctrl) {
-    	Rectangle ctrlBounds = ctrl.getBounds();
-    	Rectangle endRect = Geometry.toDisplay(ctrl.getParent(), ctrlBounds);
-    	addEndRect(endRect);
-    }
-
-    /**
-	 * 
-	 */
-	protected void clockTick() {
-	}
-    
-    /**
-	 * @return
-	 */
-	protected boolean isUpdateStep() {
-		switch (timingStyle) {
-			case TICK_TIMER:
-				return prevTime != curTime;
-	
-			case FRAME_COUNT:
-				return true;
-		}
-		
-		return false;
-	}
-
-	private double amount() {
-		double amount = 0.0;
-		
-		switch (timingStyle) {
-			case TICK_TIMER:
-				amount = (double) (curTime - startTime) / (double) duration;
-				break;
-	
-			case FRAME_COUNT:
-				amount = (double)frameCount / (double)duration;
-		}
-		
-		if (amount > 1.0)
-			amount = 1.0;
-		
-		return amount;
-    }
-
-    /**
-	 * 
-	 */
-	protected void updateDisplay() {
-		feedbackRenderer.renderStep(amount());
-	}
-
-	/* (non-Javadoc)
-     * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-     */
-    protected IStatus run(IProgressMonitor monitor) {
-    	
-        // We use preference value to indicate that the animation should be skipped on this platform.
-        if (!enableAnimations || feedbackRenderer == null) {
-            return Status.OK_STATUS;
-        }
-
-        // Do we have anything to animate ?
-    	boolean isEmpty = feedbackRenderer.getStartRects().size() == 0;
-        if (isEmpty) {
-            return Status.OK_STATUS;
-        }
-    	
-        // We're starting, initialize
-        display.syncExec(new Runnable() {
-            public void run() {
-                feedbackRenderer.jobInit();
-            }
-        });
-        
-        // Only start the animation timer -after- we've initialized
-        curTime = startTime = System.currentTimeMillis();
-        
-        while (!done()) {
-            display.syncExec(animationStep);
-            // Don't pin the CPU
-            Thread.yield();
-        }
-
-        //System.out.println("Done: " + (curTime-startTime) + " steps: " + stepCount + " frames:" + frameCount);   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-        // We're done, clean up
-        display.syncExec(new Runnable() {
-            public void run() {
-                feedbackRenderer.dispose();
-            }
-        });
-    
-        return Status.OK_STATUS;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationFeedbackBase.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationFeedbackBase.java
deleted file mode 100644
index 2140611..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationFeedbackBase.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.AnimationEngine;
-import org.eclipse.ui.internal.AnimationFeedbackBase;
-
-/**
- * RectangleAnimationFeedbackBase is an abstract base class for all the 
- * rectangle animations. 
- * @since 3.3
- *
- */
-public abstract class RectangleAnimationFeedbackBase extends AnimationFeedbackBase {
-
-	private List startRects = new ArrayList();
-	private List endRects = new ArrayList();
-
-	/**
-	 * Creates a Rectangle Animation Feedback
-	 * 
-	 * @param parentShell specifies the composite where the animation will be drawn
-	 * @param start initial rectangle (display coordinates)
-	 * @param end final rectangle (display coordinates)
-	 */
-	public RectangleAnimationFeedbackBase(Shell parentShell, Rectangle start,
-			Rectangle end) {
-		super(parentShell);
-		addStartRect(start);
-		addEndRect(end);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.AnimationFeedbackBase#jobInit(org.eclipse.ui.internal.AnimationEngine)
-	 * 
-	 * Prevent execution if there are no rects to draw or there's a mismatch in the count
-	 */
-	public boolean jobInit(AnimationEngine engine) {
-		if (!super.jobInit(engine))
-			return false;
-		
-		return startRects.size() > 0 && startRects.size() == endRects.size();
-	}
-
-	public void addStartRect(Rectangle rect) {
-		if (rect != null) {
-			startRects.add(rect);
-		}
-	}
-
-	public void addEndRect(Rectangle rect) {
-		if (rect != null) {
-			endRects.add(rect);
-		}
-	}
-
-    public void addStartRect(Control ctrl) {
-    	Rectangle ctrlBounds = ctrl.getBounds();
-    	Rectangle startRect = Geometry.toDisplay(ctrl.getParent(), ctrlBounds);
-    	addStartRect(startRect);
-    }
-
-    public void addEndRect(Control ctrl) {
-    	Rectangle ctrlBounds = ctrl.getBounds();
-    	Rectangle endRect = Geometry.toDisplay(ctrl.getParent(), ctrlBounds);
-    	addEndRect(endRect);
-    }
-
-	public static Rectangle interpolate(Rectangle start, Rectangle end,
-			double amount) {
-		double initialWeight = 1.0 - amount;
-
-		Rectangle result = new Rectangle((int) (start.x * initialWeight + end.x
-				* amount), (int) (start.y * initialWeight + end.y * amount),
-				(int) (start.width * initialWeight + end.width * amount),
-				(int) (start.height * initialWeight + end.height * amount));
-
-		return result;
-	}
-
-	public List getStartRects() {
-		return startRects;
-	}
-
-	public List getEndRects() {
-		return endRects;
-	}
-
-	public List getCurrentRects(double amount) {
-		List currentRects = new ArrayList();
-		Iterator startIter = getStartRects().iterator();
-		Iterator endIter = getEndRects().iterator();
-		while (startIter.hasNext()) {
-			Rectangle start = (Rectangle) startIter.next();
-			Rectangle end = (Rectangle) endIter.next();
-
-			// Get the bounds of the interpolated rect
-			Rectangle curRect = interpolate(start, end, amount);
-			currentRects.add(curRect);
-		}
-		return currentRects;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationImageFeedback.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationImageFeedback.java
deleted file mode 100644
index 27beed9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimationImageFeedback.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.AnimationEngine;
-
-/**
- * Creates an animation effect where the interpolated rectangles are displayed using Canvas
- * controls that show an image of the bits that were originally occupied by the various
- * 'start' rectangles.
- * 
- * @since 3.3
- *
- */
-public class RectangleAnimationImageFeedback extends
-		RectangleAnimationFeedbackBase {
-	private class ImageCanvas extends Canvas {
-		private Image image;
-
-		/**
-		 * @param parent
-		 * @param style
-		 */
-		public ImageCanvas(Composite parent, int style, Image image) {
-			super(parent, style);
-			this.image = image;
-
-			addPaintListener(new PaintListener() {
-				public void paintControl(PaintEvent e) {
-					paintImage(e.gc);
-				}
-			});
-		}
-
-		/**
-		 * @param gc
-		 */
-		protected void paintImage(GC gc) {
-			gc.drawImage(image, 0, 0, image.getBounds().width, image
-					.getBounds().height, 0, 0, getBounds().width,
-					getBounds().height);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.swt.widgets.Widget#dispose()
-		 */
-		public void dispose() {
-			super.dispose();
-			image.dispose();
-		}
-	}
-
-	private Image backingStore;
-	private Shell theShell;
-	private Display display;
-	private List controls = new ArrayList();
-
-
-	public RectangleAnimationImageFeedback(Shell parentShell, Rectangle start,
-			Rectangle end) {
-		super(parentShell, start, end);
-	}
-
-	public void dispose() {
-		backingStore.dispose();
-		for (Iterator ctrlIter = controls.iterator(); ctrlIter.hasNext();) {
-			ImageCanvas canvas = (ImageCanvas) ctrlIter.next();
-			canvas.dispose();
-		}
-
-		theShell.setVisible(false);
-		theShell.dispose();
-	}
-
-	public void initialize(AnimationEngine engine) {
-		display = getAnimationShell().getDisplay();
-
-		Rectangle psRect = getAnimationShell().getBounds();
-		theShell = new Shell(getAnimationShell(), SWT.NO_TRIM | SWT.ON_TOP);
-		theShell.setBounds(getAnimationShell().getBounds());
-
-		// Capture the background image		
-		backingStore = new Image(theShell.getDisplay(), psRect);
-		GC gc = new GC(display);
-		gc.copyArea(backingStore, psRect.x, psRect.y);
-		gc.dispose();
-//		changeCoordinates();
-//		captureImages();
-		theShell.setBackgroundImage(backingStore);
-		theShell.setVisible(true);
-		display.update();
-
-	}
-		
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.RectangleAnimationFeedbackBase#jobInit(org.eclipse.ui.internal.AnimationEngine)
-	 */
-	public boolean jobInit(AnimationEngine engine) {
-		changeCoordinates();
-		captureImages();
-		return super.jobInit(engine);
-	}
-	
-	public void addStartRect(Rectangle rect) {
-		if (rect == null)
-			return;
-
-		//	Rectangle start = Geometry.toControl(getAnimationShell(), rect);
-		super.addStartRect(rect);
-
-	}
-
-	public void addEndRect(Rectangle rect) {
-		if (rect != null) {
-			//	Rectangle end = Geometry.toControl(getAnimationShell(), rect);
-			super.addEndRect(rect);
-		}
-	}
-
-	public void renderStep(AnimationEngine engine) {
-		Iterator ctrlIter = controls.iterator();
-		Iterator currentRects = getCurrentRects(engine.amount()).iterator();
-		while (currentRects.hasNext()) {
-			ImageCanvas canvas = (ImageCanvas) ctrlIter.next();
-			canvas.setBounds((Rectangle) currentRects.next());
-		}
-		display.update();
-
-	}
-
-	public void changeCoordinates() {
-		Iterator startRectIter = getStartRects().iterator();
-		Iterator endRectIter = getEndRects().iterator();
-		while (startRectIter.hasNext()) {
-			Rectangle startRect = (Rectangle) startRectIter.next();
-			Rectangle mapStartRect = Geometry.toControl(theShell, startRect);
-			startRect.x = mapStartRect.x;
-			startRect.y = mapStartRect.y;
-			Rectangle endRect = (Rectangle) endRectIter.next();
-			Rectangle mapEndRect = Geometry.toControl(theShell, endRect);
-			endRect.x = mapEndRect.x;
-			endRect.y = mapEndRect.y;
-		}
-	}
-
-	private void captureImages() {
-
-		for (Iterator iterator = getStartRects().iterator(); iterator.hasNext();) {
-			Rectangle rect = (Rectangle) iterator.next();
-			Image image = new Image(display, rect.width, rect.height);
-			GC gc = new GC(backingStore);
-			gc.copyArea(image, rect.x, rect.y);
-			gc.dispose();
-			ImageCanvas canvas = new ImageCanvas(theShell, SWT.BORDER
-					| SWT.NO_BACKGROUND, image);
-			controls.add(canvas);
-
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReferenceCounter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReferenceCounter.java
deleted file mode 100644
index 2864223..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReferenceCounter.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A ReferenceCounter is used to reference counting objects.
- * Each object is identified by a unique ID.  Together they form
- * an ID - value pair. An object is added to the counter by calling
- * #put(id, object).  From this point on additional refs can be made
- * by calling #addRef(id) or #removeRef(id).
- */
-public class ReferenceCounter {
-    private Map mapIdToRec = new HashMap(11);
-
-    /**
-     * Capture the information about an object.
-     */
-    public class RefRec {
-        public RefRec(Object id, Object value) {
-            this.id = id;
-            this.value = value;
-            addRef();
-        }
-
-        public Object getId() {
-            return id;
-        }
-
-        public Object getValue() {
-            return value;
-        }
-
-        public int addRef() {
-            ++refCount;
-            return refCount;
-        }
-
-        public int removeRef() {
-            --refCount;
-            return refCount;
-        }
-
-        public int getRef() {
-            return refCount;
-        }
-
-        public boolean isNotReferenced() {
-            return (refCount <= 0);
-        }
-
-        public Object id;
-
-        public Object value;
-
-        private int refCount;
-    }
-
-    /**
-     * Creates a new counter.
-     */
-    public ReferenceCounter() {
-        super();
-    }
-
-    /**
-     * Adds one reference to an object in the counter.
-     *
-     * @param id is a unique ID for the object.
-     * @return the new ref count
-     */
-    public int addRef(Object id) {
-        RefRec rec = (RefRec) mapIdToRec.get(id);
-        if (rec == null) {
-			return 0;
-		}
-        return rec.addRef();
-    }
-
-    /**
-     * Returns the object defined by an ID.  If the ID is not
-     * found <code>null</code> is returned.
-     *
-     * @return the object or <code>null</code>
-     */
-    public Object get(Object id) {
-        RefRec rec = (RefRec) mapIdToRec.get(id);
-        if (rec == null) {
-			return null;
-		}
-        return rec.getValue();
-    }
-
-    /**
-     * Returns a complete list of the keys in the counter.
-     *
-     * @return a Set containing the ID for each.
-     */
-    public Set keySet() {
-        return mapIdToRec.keySet();
-    }
-
-    /**
-     * Adds an object to the counter for counting and gives
-     * it an initial ref count of 1.
-     *
-     * @param id is a unique ID for the object.
-     * @param value is the object itself.
-     */
-    public void put(Object id, Object value) {
-        RefRec rec = new RefRec(id, value);
-        mapIdToRec.put(id, rec);
-    }
-
-    /**
-     * @param id is a unique ID for the object.
-     * @return the current ref count
-     */
-    public int getRef(Object id) {
-        RefRec rec = (RefRec) mapIdToRec.get(id);
-        if (rec == null) {
-			return 0;
-		}
-        return rec.refCount;
-    }
-
-    /**
-     * Removes one reference from an object in the counter.
-     * If the ref count drops to 0 the object is removed from
-     * the counter completely.
-     *
-     * @param id is a unique ID for the object.
-     * @return the new ref count
-     */
-    public int removeRef(Object id) {
-    	RefRec rec = (RefRec) mapIdToRec.get(id);
-    	if (rec == null) {
-    		return 0;
-    	}
-    	int newCount = rec.removeRef();
-    	if (newCount <= 0) {
-    		mapIdToRec.remove(id);
-    	}
-    	return newCount;
-    }
-    
-    /**
-     * Returns a complete list of the values in the counter.
-     *
-     * @return a Collection containing the values.
-     */
-    public List values() {
-        int size = mapIdToRec.size();
-        ArrayList list = new ArrayList(size);
-        Iterator iter = mapIdToRec.values().iterator();
-        while (iter.hasNext()) {
-            RefRec rec = (RefRec) iter.next();
-            list.add(rec.getValue());
-        }
-        return list;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
deleted file mode 100644
index 958ee64..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.osgi.util.TextProcessor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-
-/**
- * A dynamic menu item which supports to switch to other Windows.
- */
-public class ReopenEditorMenu extends ContributionItem {
-    private IWorkbenchWindow window;
-
-    private EditorHistory history;
-
-    private boolean showSeparator;
-
-    private boolean dirty = true;
-
-    private IMenuListener menuListener = new IMenuListener() {
-        public void menuAboutToShow(IMenuManager manager) {
-            manager.markDirty();
-            dirty = true;
-        }
-    };
-
-    // the maximum length for a file name; must be >= 4
-    private static final int MAX_TEXT_LENGTH = 40;
-
-    // only assign mnemonic to the first nine items 
-    private static final int MAX_MNEMONIC_SIZE = 9;
-
-    /**
-     * Create a new instance.
-     * @param window the window on which the menu is to be created
-     * @param id menu's id
-     * @param showSeparator whether or not to show a separator
-     */
-    public ReopenEditorMenu(IWorkbenchWindow window, String id,
-            boolean showSeparator) {
-        super(id);
-        this.window = window;
-        this.showSeparator = showSeparator;
-        history = ((Workbench) window.getWorkbench()).getEditorHistory();
-    }
-
-    /**
-     * Returns the text for a history item.  This may be truncated to fit
-     * within the MAX_TEXT_LENGTH.
-     */
-    private String calcText(int index, EditorHistoryItem item) {
-		// IMPORTANT: avoid accessing the item's input since
-		// this can require activating plugins.
-		// Instead, ask the item for the info, which can
-		// consult its memento if it is not restored yet.
-		return calcText(index, item.getName(), item.getToolTipText(), Window
-				.getDefaultOrientation() == SWT.RIGHT_TO_LEFT);
-	}
-    
-    /**
-     * Return a string suitable for a file MRU list.  This should not be called
-     * outside the framework.
-     * 
-     * @param index the index in the MRU list
-     * @param name the file name
-     * @param toolTip potentially the path
-     * @param rtl should it be right-to-left
-     * @return a string suitable for an MRU file menu
-     */
-    public static String calcText(int index, String name, String toolTip, boolean rtl) {
-        StringBuffer sb = new StringBuffer();
-
-        int mnemonic = index + 1;
-        StringBuffer nm = new StringBuffer();
-        nm.append(mnemonic);
-        if (mnemonic <= MAX_MNEMONIC_SIZE) {
-        	nm.insert(nm.length() - (mnemonic + "").length(), '&'); //$NON-NLS-1$
-        }
-//        sb.append(" "); //$NON-NLS-1$
-
-        String fileName = name;
-        String pathName = toolTip;
-        if (pathName.equals(fileName)) {
-            // tool tip text isn't necessarily a path;
-            // sometimes it's the same as name, so it shouldn't be treated as a path then
-            pathName = ""; //$NON-NLS-1$
-        }
-        IPath path = new Path(pathName);
-        // if last segment in path is the fileName, remove it 
-        if (path.segmentCount() > 1
-                && path.segment(path.segmentCount() - 1).equals(fileName)) {
-            path = path.removeLastSegments(1);
-            pathName = path.toString();
-        }
-
-        if ((fileName.length() + pathName.length()) <= (MAX_TEXT_LENGTH - 4)) {
-            // entire item name fits within maximum length
-            sb.append(fileName);
-            if (pathName.length() > 0) {
-                sb.append("  ["); //$NON-NLS-1$
-                sb.append(pathName);
-                sb.append("]"); //$NON-NLS-1$
-            }
-        } else {
-            // need to shorten the item name
-            int length = fileName.length();
-            if (length > MAX_TEXT_LENGTH) {
-                // file name does not fit within length, truncate it
-                sb.append(fileName.substring(0, MAX_TEXT_LENGTH - 3));
-                sb.append("..."); //$NON-NLS-1$
-            } else if (length > MAX_TEXT_LENGTH - 7) {
-                sb.append(fileName);
-            } else {
-                sb.append(fileName);
-                int segmentCount = path.segmentCount();
-                if (segmentCount > 0) {
-                    length += 7; // 7 chars are taken for "  [...]"
-
-                    sb.append("  ["); //$NON-NLS-1$
-
-                    // Add first n segments that fit
-                    int i = 0;
-                    while (i < segmentCount && length < MAX_TEXT_LENGTH) {
-                        String segment = path.segment(i);
-                        if (length + segment.length() < MAX_TEXT_LENGTH) {
-                            sb.append(segment);
-                            sb.append(IPath.SEPARATOR);
-                            length += segment.length() + 1;
-                            i++;
-                        } else if (i == 0) {
-                            // append at least part of the first segment
-                            sb.append(segment.substring(0, MAX_TEXT_LENGTH
-                                    - length));
-                            length = MAX_TEXT_LENGTH;
-                            break;
-                        } else {
-                            break;
-                        }
-                    }
-
-                    sb.append("..."); //$NON-NLS-1$
-
-                    i = segmentCount - 1;
-                    // Add last n segments that fit
-                    while (i > 0 && length < MAX_TEXT_LENGTH) {
-                        String segment = path.segment(i);
-                        if (length + segment.length() < MAX_TEXT_LENGTH) {
-                            sb.append(IPath.SEPARATOR);
-                            sb.append(segment);
-                            length += segment.length() + 1;
-                            i--;
-                        } else {
-                            break;
-                        }
-                    }
-
-                    sb.append("]"); //$NON-NLS-1$
-                }
-            }
-        }
-        final String process;
-        if (rtl) {
-        	process = sb + " " + nm; //$NON-NLS-1$
-        } else {
-        	process = nm + " " + sb; //$NON-NLS-1$
-        }
-        return TextProcessor.process(process, TextProcessor.getDefaultDelimiters() + "[]");//$NON-NLS-1$
-    }
-
-    /**
-     * Fills the given menu with
-     * menu items for all windows.
-     */
-    public void fill(final Menu menu, int index) {
-        if (window.getActivePage() == null
-                || window.getActivePage().getPerspective() == null) {
-            return;
-        }
-
-        if (getParent() instanceof MenuManager) {
-            ((MenuManager) getParent()).addMenuListener(menuListener);
-        }
-
-        int itemsToShow = WorkbenchPlugin.getDefault().getPreferenceStore()
-                .getInt(IPreferenceConstants.RECENT_FILES);
-        if (itemsToShow == 0) {
-            return;
-        }
-
-        // Get items.
-        EditorHistoryItem[] historyItems = history.getItems();
-
-        int n = Math.min(itemsToShow, historyItems.length);
-        if (n <= 0) {
-            return;
-        }
-
-        if (showSeparator) {
-            new MenuItem(menu, SWT.SEPARATOR, index);
-            ++index;
-        }
-
-        final int menuIndex[] = new int[] { index };
-
-        for (int i = 0; i < n; i++) {
-            final EditorHistoryItem item = historyItems[i];
-            final int historyIndex = i;
-            SafeRunner.run(new SafeRunnable() {
-                public void run() throws Exception {
-                    String text = calcText(historyIndex, item);
-                    MenuItem mi = new MenuItem(menu, SWT.PUSH, menuIndex[0]);
-                    ++menuIndex[0];
-                    mi.setText(text);
-                    mi.addSelectionListener(new SelectionAdapter() {
-                        public void widgetSelected(SelectionEvent e) {
-                            open(item);
-                        }
-                    });
-                }
-
-                public void handleException(Throwable e) {
-                    // just skip the item if there's an error,
-                    // e.g. in the calculation of the shortened name
-                    WorkbenchPlugin.log(getClass(), "fill", e); //$NON-NLS-1$
-                }
-            });
-        }
-        dirty = false;
-    }
-
-    /**
-     * Overridden to always return true and force dynamic menu building.
-     */
-    public boolean isDirty() {
-        return dirty;
-    }
-
-    /**
-     * Overridden to always return true and force dynamic menu building.
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-
-    /**
-     * Reopens the editor for the given history item.
-     */
-    private void open(EditorHistoryItem item) {
-        IWorkbenchPage page = window.getActivePage();
-        if (page != null) {
-            try {
-                String itemName = item.getName();
-                if (!item.isRestored()) {
-                    item.restoreState();
-                }
-                IEditorInput input = item.getInput();
-                IEditorDescriptor desc = item.getDescriptor();
-                if (input == null || desc == null) {
-                    String title = WorkbenchMessages.OpenRecent_errorTitle;
-                    String msg = NLS.bind(WorkbenchMessages.OpenRecent_unableToOpen,  itemName ); 
-                    MessageDialog.openWarning(window.getShell(), title, msg);
-                    history.remove(item);
-                } else {
-                    page.openEditor(input, desc.getId());
-                }
-            } catch (PartInitException e2) {
-                String title = WorkbenchMessages.OpenRecent_errorTitle;
-                MessageDialog.openWarning(window.getShell(), title, e2
-                        .getMessage());
-                history.remove(item);
-            }
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ResetPerspectiveAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ResetPerspectiveAction.java
deleted file mode 100644
index 5d2ab6f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ResetPerspectiveAction.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Reset the layout within the active perspective.
- */
-public class ResetPerspectiveAction extends PerspectiveAction {
-
-    /**
-     * This default constructor allows the the action to be called from the welcome page.
-     */
-    public ResetPerspectiveAction() {
-        this(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-    }
-
-    /**
-     * Create an instance of this class
-     * @param window the window
-     */
-    public ResetPerspectiveAction(IWorkbenchWindow window) {
-        super(window);
-        setText(WorkbenchMessages.ResetPerspective_text);
-        setActionDefinitionId("org.eclipse.ui.window.resetPerspective"); //$NON-NLS-1$
-        // @issue missing action id
-        setToolTipText(WorkbenchMessages.ResetPerspective_toolTip); 
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.RESET_PERSPECTIVE_ACTION);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PerspectiveAction.
-     */
-    protected void run(IWorkbenchPage page, IPerspectiveDescriptor persp) {
-        String message = NLS.bind(WorkbenchMessages.ResetPerspective_message, persp.getLabel() );
-        String[] buttons = new String[] { IDialogConstants.OK_LABEL,
-                IDialogConstants.CANCEL_LABEL };
-        MessageDialog d = new MessageDialog(getWindow().getShell(),
-                WorkbenchMessages.ResetPerspective_title,
-                null, message, MessageDialog.QUESTION, buttons, 0);
-        if (d.open() == 0) {
-			page.resetPerspective();
-		}
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAction.java
deleted file mode 100644
index 443c2a3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAction.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablesSource;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Workbench common <code>Save</code> action.
- */
-public class SaveAction extends BaseSaveAction implements IBackgroundSaveListener {
-
-    /**
-     * Create an instance of this class
-     * 
-     * @param window the window
-     */
-    public SaveAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.SaveAction_text, window); 
-        setText(WorkbenchMessages.SaveAction_text); 
-        setToolTipText(WorkbenchMessages.SaveAction_toolTip);
-        setId("save"); //$NON-NLS-1$
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SAVE_ACTION);
-        setImageDescriptor(WorkbenchImages
-                .getImageDescriptor(ISharedImages.IMG_ETOOL_SAVE_EDIT));
-        setDisabledImageDescriptor(WorkbenchImages
-                .getImageDescriptor(ISharedImages.IMG_ETOOL_SAVE_EDIT_DISABLED));
-        setActionDefinitionId("org.eclipse.ui.file.save"); //$NON-NLS-1$
-        ((WorkbenchWindow)window).addBackgroundSaveListener(this);
-    }
-    
-    public void dispose() {
-    	((WorkbenchWindow)getWorkbenchWindow()).removeBackgroundSaveListener(this);
-    	super.dispose();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     * Performs the <code>Save</code> action by calling the
-     * <code>IEditorPart.doSave</code> method on the active editor.
-     */
-    public void run() {
-        if (getWorkbenchWindow() == null) {
-            // action has been disposed
-            return;
-        }
-        /* **********************************************************************************
-         * The code below was added to track the view with focus
-         * in order to support save actions from a view (see bug 10234). 
-         */
-        ISaveablePart saveView = getSaveableView();
-        if (saveView != null) {
-            ((WorkbenchPage) getActivePart().getSite().getPage()).savePart(
-                    saveView, getActivePart(), false);
-            return;
-        }
-
-        IEditorPart part = getActiveEditor();
-        if (part != null) {
-            IWorkbenchPage page = part.getSite().getPage();
-            page.saveEditor(part, false);
-        }
-    }
-
-	/* (non-Javadoc)
-     * Method declared on ActiveEditorAction.
-     */
-    protected void updateState() {
-        /* **********************************************************************************
-         * The code below was added to track the view with focus
-         * in order to support save actions from a view (see bug 10234). 
-         */
-        ISaveablePart saveable = getSaveableView();
-        if (saveable == null) {
-        	saveable = getActiveEditor();
-        }
-        /* **********************************************************************************/
-        if (saveable instanceof ISaveablesSource) {
-			ISaveablesSource modelSource = (ISaveablesSource) saveable;
-			setEnabled(SaveableHelper.needsSave(modelSource));
-			return;
-        }
-        setEnabled(saveable != null && saveable.isDirty());
-    }
-
-	public void handleBackgroundSaveStarted() {
-		updateState();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAllAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAllAction.java
deleted file mode 100644
index aca90f8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAllAction.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISaveablesSource;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.Saveable;
-
-/**
- * Global action that saves all targets in the
- * workbench that implement ISaveTarget interface.
- * The action keeps track of opened save targets
- * and their 'save' state. If none of the currently
- * opened targets needs saving, it will disable.
- * This action is somewhat different from all
- * other global actions in that it works on
- * multiple targets at the same time i.e. it
- * does not disconnect from the target when it
- * becomes deactivated.
- */
-public class SaveAllAction extends PageEventAction implements IPropertyListener {
-    /**
-     * List of parts (element type: <code>IWorkbenchPart</code>)
-     * against which this class has outstanding property listeners registered.
-     */
-    private List partsWithListeners = new ArrayList(1);
-	private IWorkbenchPart openPart;
-
-    /**
-     * The default constructor.
-     * 
-     * @param window the window
-     */
-    public SaveAllAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.SaveAll_text, window);
-        setToolTipText(WorkbenchMessages.SaveAll_toolTip);
-        setId("saveAll"); //$NON-NLS-1$
-        setEnabled(false);
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SAVE_ALL_ACTION);
-        setImageDescriptor(WorkbenchImages
-                .getImageDescriptor(ISharedImages.IMG_ETOOL_SAVEALL_EDIT));
-        setDisabledImageDescriptor(WorkbenchImages
-                .getImageDescriptor(ISharedImages.IMG_ETOOL_SAVEALL_EDIT_DISABLED));
-        setActionDefinitionId("org.eclipse.ui.file.saveAll"); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageActivated(IWorkbenchPage page) {
-        super.pageActivated(page);
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        super.pageClosed(page);
-        updateState();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partClosed(IWorkbenchPart part) {
-        super.partClosed(part);
-        if (part instanceof ISaveablePart) {
-            part.removePropertyListener(this);
-            partsWithListeners.remove(part);
-            updateState();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartEventAction.
-     */
-    public void partOpened(IWorkbenchPart part) {
-        super.partOpened(part);
-        if (part instanceof ISaveablePart) {
-            part.addPropertyListener(this);
-            partsWithListeners.add(part);
-			// We need to temporarily cache the opened part 
-			// because saveable views are not registered 
-			// with a perspective until after this method 
-			// is called.  We can't pass it through to
-			// update because it's protected. An async
-			// call to update may be a better approach.
-            // See bug 93784 [WorkbenchParts] View not yet added to perspective when partOpened sent
-			openPart = part;
-            updateState();
-			openPart = null;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPropertyListener.
-     */
-    public void propertyChanged(Object source, int propID) {
-        if (source instanceof ISaveablePart) {
-            if (propID == ISaveablePart.PROP_DIRTY) {
-                updateState();
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Action.
-     */
-    public void run() {
-        if (getWorkbenchWindow() == null) {
-            // action has been disposed
-            return;
-        }
-        WorkbenchPage page = (WorkbenchPage) getActivePage();
-        if (page != null) {
-        	// The second parameter is true to also save saveables from non-part
-			// sources, see bug 139004.
-            page.saveAllEditors(false, true);
-            updateState();
-        }
-    }
-
-    /**
-     * Updates availability depending on number of
-     * targets that need saving.
-     */
-    protected void updateState() {
-        // Workaround for bug 93784 [WorkbenchParts] View not yet added to perspective when partOpened sent
-		if (openPart != null && openPart.getSite().getPage().equals(getActivePage()) && ((ISaveablePart) openPart).isDirty()) {
-			setEnabled(true);
-		}
-		else {
-			WorkbenchPage page = (WorkbenchPage) getActivePage();
-			if (page == null) {
-				setEnabled(false);
-			} else {
-				if (page.getDirtyParts().length > 0) {
-					setEnabled(true);
-				} else {
-					// Since Save All also saves saveables from non-part sources,
-					// look if any such saveables exist and are dirty.
-					SaveablesList saveablesList = (SaveablesList) page
-							.getWorkbenchWindow().getWorkbench().getService(
-									ISaveablesLifecycleListener.class);
-					ISaveablesSource[] nonPartSources = saveablesList.getNonPartSources();
-					for (int i = 0; i < nonPartSources.length; i++) {
-						Saveable[] saveables = nonPartSources[i].getSaveables();
-						for (int j = 0; j < saveables.length; j++) {
-							if (saveables[j].isDirty()) {
-								setEnabled(true);
-								return;
-							}
-						}
-					}
-					setEnabled(false);
-				}
-			}
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PageEventAction.
-     */
-    public void dispose() {
-        super.dispose();
-        for (Iterator it = partsWithListeners.iterator(); it.hasNext();) {
-            IWorkbenchPart part = (IWorkbenchPart) it.next();
-            part.removePropertyListener(this);
-        }
-        partsWithListeners.clear();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAsAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAsAction.java
deleted file mode 100644
index 08c1c4a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveAsAction.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Workbench common <code>Save As</code> action.
- */
-public class SaveAsAction extends BaseSaveAction {
-
-    /**
-     * Create an instance of this class
-     * 
-     * @param window the window
-     */
-    public SaveAsAction(IWorkbenchWindow window) {
-        super(WorkbenchMessages.SaveAs_text, window); 
-        setActionDefinitionId("org.eclipse.ui.file.saveAs"); //$NON-NLS-1$
-        setText(WorkbenchMessages.SaveAs_text); 
-        setToolTipText(WorkbenchMessages.SaveAs_toolTip); 
-        setId("saveAs"); //$NON-NLS-1$
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SAVE_AS_ACTION);
-        setImageDescriptor(WorkbenchImages
-                .getImageDescriptor(ISharedImages.IMG_ETOOL_SAVEAS_EDIT));
-        setDisabledImageDescriptor(WorkbenchImages
-                .getImageDescriptor(ISharedImages.IMG_ETOOL_SAVEAS_EDIT_DISABLED));
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Action.
-     */
-    public void run() {
-        if (getWorkbenchWindow() == null) {
-            // action has been disposed
-            return;
-        }
-        /* **********************************************************************************
-         * The code below was added to track the view with focus
-         * in order to support save actions from a view (see bug 10234). 
-         */
-        ISaveablePart saveView = getSaveableView();
-        if (saveView != null) {
-            saveView.doSaveAs();
-            return;
-        }
-        /* **********************************************************************************/
-
-        IEditorPart editor = getActiveEditor();
-        if (editor != null) {
-            editor.doSaveAs();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActiveEditorAction.
-     */
-    protected void updateState() {
-        /* **********************************************************************************
-         * The code below was added to track the view with focus
-         * in order to support save actions from a view (see bug 10234). 
-         */
-        ISaveablePart saveView = getSaveableView();
-        if (saveView != null) {
-            setEnabled(saveView.isSaveAsAllowed());
-            return;
-        }
-        /* **********************************************************************************/
-
-        IEditorPart editor = getActiveEditor();
-        setEnabled(editor != null && editor.isSaveAsAllowed());
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SavePerspectiveAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SavePerspectiveAction.java
deleted file mode 100644
index 384f7ea..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SavePerspectiveAction.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.dialogs.SavePerspectiveDialog;
-import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
-import org.eclipse.ui.internal.registry.PerspectiveRegistry;
-
-/**
- * Action to save the layout of the active perspective.
- */
-public class SavePerspectiveAction extends PerspectiveAction {
-
-    /**
-     * Creates an instance of this class.
-     *
-     * @param window the workbench window in which this action appears
-     */
-    public SavePerspectiveAction(IWorkbenchWindow window) {
-        super(window);
-        setText(WorkbenchMessages.SavePerspective_text);
-        setActionDefinitionId("org.eclipse.ui.window.savePerspective"); //$NON-NLS-1$
-        // @issue missing action id
-        setToolTipText(WorkbenchMessages.SavePerspective_toolTip); 
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SAVE_PERSPECTIVE_ACTION);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PerspectiveAction.
-     */
-    protected void run(IWorkbenchPage page, IPerspectiveDescriptor persp) {
-        PerspectiveDescriptor desc = (PerspectiveDescriptor) persp;
-        if (desc != null) {
-            if (desc.isSingleton()) {
-                saveSingleton(page);
-            } else {
-                saveNonSingleton(page, desc);
-            }
-        }
-    }
-
-    /** 
-     * Save a singleton over itself.
-     */
-    private void saveSingleton(IWorkbenchPage page) {
-        String[] buttons = new String[] { IDialogConstants.OK_LABEL,
-                IDialogConstants.CANCEL_LABEL };
-        MessageDialog d = new MessageDialog(page.getWorkbenchWindow().getShell(),
-                WorkbenchMessages.SavePerspective_overwriteTitle,
-                null, WorkbenchMessages.SavePerspective_singletonQuestion,
-                MessageDialog.QUESTION, buttons, 0);
-        if (d.open() == 0) {
-            page.savePerspective();
-        }
-    }
-
-    /**
-     * Save a singleton over the user selection.
-     */
-    private void saveNonSingleton(IWorkbenchPage page, PerspectiveDescriptor oldDesc) {
-        // Get reg.
-        PerspectiveRegistry reg = (PerspectiveRegistry) WorkbenchPlugin
-                .getDefault().getPerspectiveRegistry();
-
-        // Get persp name.
-        SavePerspectiveDialog dlg = new SavePerspectiveDialog(page.getWorkbenchWindow()
-                .getShell(), reg);
-        // Look up the descriptor by id again to ensure it is still valid.
-        IPerspectiveDescriptor description = reg.findPerspectiveWithId(oldDesc.getId());
-        dlg.setInitialSelection(description);
-        if (dlg.open() != IDialogConstants.OK_ID) {
-            return;
-        }
-
-        // Create descriptor.
-        PerspectiveDescriptor newDesc = (PerspectiveDescriptor) dlg.getPersp();
-        if (newDesc == null) {
-            String name = dlg.getPerspName();
-            newDesc = reg.createPerspective(name,
-                    (PerspectiveDescriptor) description);
-            if (newDesc == null) {
-                MessageDialog.openError(dlg.getShell(), WorkbenchMessages.SavePerspective_errorTitle,
-                        WorkbenchMessages.SavePerspective_errorMessage); 
-                return;
-            }
-        }
-
-        // Save state.
-        page.savePerspectiveAs(newDesc);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveableHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveableHelper.java
deleted file mode 100644
index cb4d56e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveableHelper.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-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.SubMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablePart2;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISaveablesSource;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.Saveable;
-import org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.progress.IJobRunnable;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Helper class for prompting to save dirty views or editors.
- * 
- * @since 3.0.1
- */
-public class SaveableHelper {
-	
-	/**
-	 * The helper must prompt.
-	 */
-	public static final int USER_RESPONSE = -1;
-	
-	private static int AutomatedResponse = USER_RESPONSE; 
-	
-	/**
-	 * FOR USE BY THE AUTOMATED TEST HARNESS ONLY.
-	 * 
-	 * Sets the response to use when <code>savePart</code> is called with <code>confirm=true</code>. 
-	 * 
-	 * @param response 0 for yes, 1 for no, 2 for cancel, -1 for default (prompt)
-	 */
-	public static void testSetAutomatedResponse(int response) {
-		AutomatedResponse = response;
-	}
-	
-	/**
-	 * FOR USE BY THE AUTOMATED TEST HARNESS ONLY.
-	 * 
-	 * Sets the response to use when <code>savePart</code> is called with <code>confirm=true</code>. 
-	 * 
-	 * @return 0 for yes, 1 for no, 2 for cancel, -1 for default (prompt)
-	 */
-	public static int testGetAutomatedResponse() {
-		return AutomatedResponse;
-	}
-	
-	/**
-	 * Saves the workbench part.
-	 * 
-	 * @param saveable the part
-	 * @param part the same part
-	 * @param window the workbench window
-	 * @param confirm request confirmation
-	 * @return <code>true</code> for continue, <code>false</code> if the operation
-	 * was canceled.
-	 */
-	static boolean savePart(final ISaveablePart saveable, IWorkbenchPart part, 
-			IWorkbenchWindow window, boolean confirm) {
-		// Short circuit.
-		if (!saveable.isDirty()) {
-			return true;
-		}
-
-		// If confirmation is required ..
-		if (confirm) {
-			int choice = AutomatedResponse;
-			if (choice == USER_RESPONSE) {				
-				if (saveable instanceof ISaveablePart2) {
-					choice = ((ISaveablePart2)saveable).promptToSaveOnClose();
-				}
-				if (choice == USER_RESPONSE || choice == ISaveablePart2.DEFAULT) {
-					String message = NLS.bind(WorkbenchMessages.EditorManager_saveChangesQuestion, part.getTitle()); 
-					// Show a dialog.
-					String[] buttons = new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL };
-						MessageDialog d = new MessageDialog(
-							window.getShell(), WorkbenchMessages.Save_Resource,
-							null, message, MessageDialog.QUESTION, buttons, 0);
-					choice = d.open();
-				}
-			}
-
-			// Branch on the user choice.
-			// The choice id is based on the order of button labels above.
-			switch (choice) {
-				case ISaveablePart2.YES : //yes
-					break;
-				case ISaveablePart2.NO : //no
-					return true;
-				default :
-				case ISaveablePart2.CANCEL : //cancel
-					return false;
-			}
-		}
-
-		if (saveable instanceof ISaveablesSource) {
-			return saveModels((ISaveablesSource) saveable, window, confirm);
-		}
-
-		// Create save block.
-		IRunnableWithProgress progressOp = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) {
-				IProgressMonitor monitorWrap = new EventLoopProgressMonitor(monitor);
-				saveable.doSave(monitorWrap);
-			}
-		};
-
-		// Do the save.
-		return runProgressMonitorOperation(WorkbenchMessages.Save, progressOp, window); 
-	}
-	
-	/**
-	 * Saves the selected dirty models from the given model source.
-	 * 
-	 * @param modelSource the model source
-	 * @param window the workbench window
-	 * @param confirm 
-	 * @return <code>true</code> for continue, <code>false</code> if the operation
-	 *   was canceled or an error occurred while saving.
-	 */
-	private static boolean saveModels(ISaveablesSource modelSource, final IWorkbenchWindow window, final boolean confirm) {
-		Saveable[] selectedModels = modelSource.getActiveSaveables();
-		final ArrayList dirtyModels = new ArrayList();
-		for (int i = 0; i < selectedModels.length; i++) {
-			Saveable model = selectedModels[i];
-			if (model.isDirty()) {
-				dirtyModels.add(model);
-			}
-		}
-		if (dirtyModels.isEmpty()) {
-			return true;
-		}
-		
-		// Create save block.
-		IRunnableWithProgress progressOp = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) {
-				IProgressMonitor monitorWrap = new EventLoopProgressMonitor(monitor);
-				monitorWrap.beginTask(WorkbenchMessages.Save, dirtyModels.size());
-				for (Iterator i = dirtyModels.iterator(); i.hasNext();) {
-					Saveable model = (Saveable) i.next();
-					// handle case where this model got saved as a result of saving another
-					if (!model.isDirty()) {
-						monitor.worked(1);
-						continue;
-					}
-					doSaveModel(model, new SubProgressMonitor(monitorWrap, 1),
-							window, confirm);
-					if (monitor.isCanceled()) {
-						break;
-					}
-				}
-				monitorWrap.done();
-			}
-		};
-
-		// Do the save.
-		return runProgressMonitorOperation(WorkbenchMessages.Save, progressOp, window); 
-	}
-
-	/**
-	 * Saves the workbench part ... this is similar to 
-	 * {@link SaveableHelper#savePart(ISaveablePart, IWorkbenchPart, IWorkbenchWindow, boolean) }
-	 * except that the {@link ISaveablePart2#DEFAULT } case must cause the
-	 * calling function to allow this part to participate in the default saving
-	 * mechanism.
-	 * 
-	 * @param saveable the part
-	 * @param window the workbench window
-	 * @param confirm request confirmation
-	 * @return the ISaveablePart2 constant
-	 */
-	static int savePart(final ISaveablePart2 saveable, 
-			IWorkbenchWindow window, boolean confirm) {
-		// Short circuit.
-		if (!saveable.isDirty()) {
-			return ISaveablePart2.YES;
-		}
-
-		// If confirmation is required ..
-		if (confirm) {
-			int choice = AutomatedResponse;
-			if (choice == USER_RESPONSE) {
-				choice = saveable.promptToSaveOnClose();
-			}
-
-			// Branch on the user choice.
-			// The choice id is based on the order of button labels above.
-			if (choice!=ISaveablePart2.YES) {
-				return (choice==USER_RESPONSE?ISaveablePart2.DEFAULT:choice);
-			}
-		}
-
-		// Create save block.
-		IRunnableWithProgress progressOp = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) {
-				IProgressMonitor monitorWrap = new EventLoopProgressMonitor(monitor);
-				saveable.doSave(monitorWrap);
-			}
-		};
-
-		// Do the save.
-		if (!runProgressMonitorOperation(WorkbenchMessages.Save, progressOp,window)) {
-			return ISaveablePart2.CANCEL;
-		}
-		return ISaveablePart2.YES;
-	}
-	
-	/**
-	 * Runs a progress monitor operation. Returns true if success, false if
-	 * canceled.
-	 */
-	static boolean runProgressMonitorOperation(String opName,
-			IRunnableWithProgress progressOp, IWorkbenchWindow window) {
-		return runProgressMonitorOperation(opName, progressOp, window, window);
-	}
-	
-	/**
-	 * Runs a progress monitor operation.
-	 * Returns true if success, false if canceled or an error occurred.
-	 */
-	static boolean runProgressMonitorOperation(String opName,
-			final IRunnableWithProgress progressOp,
-			final IRunnableContext runnableContext, final IShellProvider shellProvider) {
-		final boolean[] success = new boolean[] { false };
-		IRunnableWithProgress runnable = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-				progressOp.run(monitor);
-				// Only indicate success if the monitor wasn't canceled
-				if (!monitor.isCanceled())
-					success[0] = true;
-			}
-		};
-
-		try {
-			runnableContext.run(false, true, runnable);
-		} catch (InvocationTargetException e) {
-			String title = NLS.bind(WorkbenchMessages.EditorManager_operationFailed, opName ); 
-			Throwable targetExc = e.getTargetException();
-			WorkbenchPlugin.log(title, new Status(IStatus.WARNING,
-					PlatformUI.PLUGIN_ID, 0, title, targetExc));			
-			StatusUtil.handleStatus(title, targetExc, StatusManager.SHOW,
-					shellProvider.getShell());
-			// Fall through to return failure
-		} catch (InterruptedException e) {
-			// The user pressed cancel. Fall through to return failure
-		} catch (OperationCanceledException e) {
-			// The user pressed cancel. Fall through to return failure
-		}
-		return success[0];
-	}
-
-	/**
-	 * Returns whether the model source needs saving. This is true if any of
-	 * the active models are dirty. This logic must correspond with 
-	 * {@link #saveModels} above.
-	 * 
-	 * @param modelSource
-	 *            the model source
-	 * @return <code>true</code> if save is required, <code>false</code>
-	 *         otherwise
-	 * @since 3.2
-	 */
-	public static boolean needsSave(ISaveablesSource modelSource) {
-		Saveable[] selectedModels = modelSource.getActiveSaveables();
-		for (int i = 0; i < selectedModels.length; i++) {
-			Saveable model = selectedModels[i];
-			if (model.isDirty() && !((InternalSaveable)model).isSavingInBackground()) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * @param model
-	 * @param progressMonitor
-	 * @param shellProvider
-	 * @param blockUntilSaved
-	 */
-	public static void doSaveModel(final Saveable model,
-			IProgressMonitor progressMonitor,
-			final IShellProvider shellProvider, boolean blockUntilSaved) {
-		try {
-			Job backgroundSaveJob = ((InternalSaveable)model).getBackgroundSaveJob();
-			if (backgroundSaveJob != null) {
-				boolean canceled = waitForBackgroundSaveJob(model);
-				if (canceled) {
-					progressMonitor.setCanceled(true);
-					return;
-				}
-				// return early if the saveable is no longer dirty
-				if (!model.isDirty()) {
-					return;
-				}
-			}
-			final IJobRunnable[] backgroundSaveRunnable = new IJobRunnable[1];
-			try {
-				SubMonitor subMonitor = SubMonitor.convert(progressMonitor, 3);
-				backgroundSaveRunnable[0] = model.doSave(
-						subMonitor.newChild(2), shellProvider);
-				if (backgroundSaveRunnable[0] == null) {
-					// no further work needs to be done
-					return;
-				}
-				if (blockUntilSaved) {
-					// for now, block on close by running the runnable in the UI
-					// thread
-					IStatus result = backgroundSaveRunnable[0].run(subMonitor
-							.newChild(1));
-					if (!result.isOK()) {
-						StatusUtil.handleStatus(result, StatusManager.SHOW,
-								shellProvider.getShell());
-						progressMonitor.setCanceled(true);
-					}
-					return;
-				}
-				// for the job family, we use the model object because based on
-				// the family we can display the busy state with an animated tab
-				// (see the calls to showBusyForFamily() below).
-				Job saveJob = new Job(NLS.bind(
-						WorkbenchMessages.EditorManager_backgroundSaveJobName,
-						model.getName())) {
-					public boolean belongsTo(Object family) {
-						if (family instanceof DynamicFamily) {
-							return ((DynamicFamily)family).contains(model);
-						}
-						return family.equals(model);
-					}
-
-					protected IStatus run(IProgressMonitor monitor) {
-						return backgroundSaveRunnable[0].run(monitor);
-					}
-				};
-				// we will need the associated parts (for disabling their UI)
-				((InternalSaveable) model).setBackgroundSaveJob(saveJob);
-				SaveablesList saveablesList = (SaveablesList) PlatformUI
-						.getWorkbench().getService(
-								ISaveablesLifecycleListener.class);
-				final IWorkbenchPart[] parts = saveablesList
-						.getPartsForSaveable(model);
-
-				// this will cause the parts tabs to show the ongoing background operation
-				for (int i = 0; i < parts.length; i++) {
-					IWorkbenchPart workbenchPart = parts[i];
-					IWorkbenchSiteProgressService progressService = (IWorkbenchSiteProgressService) workbenchPart
-							.getSite().getAdapter(
-									IWorkbenchSiteProgressService.class);
-					progressService.showBusyForFamily(model);
-				}
-				model.disableUI(parts, blockUntilSaved);
-				// Add a listener for enabling the UI after the save job has
-				// finished, and for displaying an error dialog if
-				// necessary.
-				saveJob.addJobChangeListener(new JobChangeAdapter() {
-					public void done(final IJobChangeEvent event) {
-						((InternalSaveable) model).setBackgroundSaveJob(null);
-						shellProvider.getShell().getDisplay().asyncExec(
-								new Runnable() {
-									public void run() {
-										notifySaveAction(parts);
-										model.enableUI(parts);
-									}
-								});
-					}
-				});
-				// Finally, we are ready to schedule the job.
-				saveJob.schedule();
-				// the job was started - notify the save actions,
-				// this is done through the workbench windows, which
-				// we can get from the parts...
-				notifySaveAction(parts);
-			} catch (CoreException e) {
-				StatusUtil.handleStatus(e.getStatus(), StatusManager.SHOW,
-						shellProvider.getShell());
-				progressMonitor.setCanceled(true);
-			}
-		} finally {
-			progressMonitor.done();
-		}
-	}
-
-	private static void notifySaveAction(final IWorkbenchPart[] parts) {
-		Set wwindows = new HashSet();
-		for (int i = 0; i < parts.length; i++) {
-			wwindows.add(parts[i].getSite().getWorkbenchWindow());
-		}
-		for (Iterator it = wwindows.iterator(); it.hasNext();) {
-			WorkbenchWindow wwin = (WorkbenchWindow) it.next();
-			wwin.fireBackgroundSaveStarted();
-		}
-	}
-
-	/**
-	 * Waits for the background save job (if any) of the given saveable to complete.
-	 * This may open a progress dialog with the option to cancel.
-	 * 
-	 * @param modelToSave
-	 * @return true if the user canceled.
-	 */
-	private static boolean waitForBackgroundSaveJob(final Saveable model) {
-		List models = new ArrayList();
-		models.add(model);
-		return waitForBackgroundSaveJobs(models);
-	}
-	
-	/**
-	 * Waits for the background save jobs (if any) of the given saveables to complete.
-	 * This may open a progress dialog with the option to cancel.
-	 * 
-	 * @param modelsToSave
-	 * @return true if the user canceled.
-	 */
-	public static boolean waitForBackgroundSaveJobs(final List modelsToSave) {
-		// block if any of the saveables is still saving in the background
-		try {
-			PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) throws InterruptedException {
-					Job.getJobManager().join(new DynamicFamily(modelsToSave), monitor);
-				}
-			});
-		} catch (InvocationTargetException e) {
-			StatusUtil.handleStatus(e, StatusManager.SHOW | StatusManager.LOG);
-		} catch (InterruptedException e) {
-			return true;
-		}
-		// remove saveables that are no longer dirty from the list
-		for (Iterator it = modelsToSave.iterator(); it.hasNext();) {
-			Saveable model = (Saveable) it.next();
-			if (!model.isDirty()) {
-				it.remove();
-			}
-		}
-		return false;
-	}
-	
-	private static class DynamicFamily extends HashSet {
-		private static final long serialVersionUID = 1L;
-		public DynamicFamily(Collection collection) {
-			super(collection);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveablesList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveablesList.java
deleted file mode 100644
index 64a8639..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SaveablesList.java
+++ /dev/null
@@ -1,804 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.runtime.Assert;
-import org.eclipse.core.runtime.AssertionFailedException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablePart2;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISaveablesSource;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.Saveable;
-import org.eclipse.ui.SaveablesLifecycleEvent;
-import org.eclipse.ui.dialogs.ListSelectionDialog;
-import org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.model.WorkbenchPartLabelProvider;
-
-/**
- * The model manager maintains a list of open saveable models.
- * 
- * @see Saveable
- * @see ISaveablesSource
- * 
- * @since 3.2
- */
-public class SaveablesList implements ISaveablesLifecycleListener {
-
-	private ListenerList listeners = new ListenerList();
-
-	// event source (mostly ISaveablesSource) -> Set of Saveable
-	private Map modelMap = new HashMap();
-
-	// reference counting map, Saveable -> Integer
-	private Map modelRefCounts = new HashMap();
-
-	private Set nonPartSources = new HashSet();
-
-	/**
-	 * Returns the list of open models managed by this model manager.
-	 * 
-	 * @return a list of models
-	 */
-	public Saveable[] getOpenModels() {
-		Set allDistinctModels = new HashSet();
-		Iterator saveables = modelMap.values().iterator();
-		while (saveables.hasNext())
-			allDistinctModels.addAll((Set)saveables.next());
-		
-		return (Saveable[]) allDistinctModels.toArray(
-				new Saveable[allDistinctModels.size()]);
-	}
-
-	// returns true if this model has not yet been in getModels()
-	private boolean addModel(Object source, Saveable model) {
-		if (model == null) {
-			logWarning(
-					"Ignored attempt to add invalid saveable", source, model); //$NON-NLS-1$
-			return false;
-		}
-		boolean result = false;
-		Set modelsForSource = (Set) modelMap.get(source);
-		if (modelsForSource == null) {
-			modelsForSource = new HashSet();
-			modelMap.put(source, modelsForSource);
-		}
-		if (modelsForSource.add(model)) {
-			result = incrementRefCount(modelRefCounts, model);
-		} else {
-			logWarning(
-					"Ignored attempt to add saveable that was already registered", source, model); //$NON-NLS-1$
-		}
-		return result;
-	}
-
-	/**
-	 * returns true if the given key was added for the first time
-	 * 
-	 * @param referenceMap
-	 * @param key
-	 * @return true if the ref count of the given key is now 1
-	 */
-	private boolean incrementRefCount(Map referenceMap, Object key) {
-		boolean result = false;
-		Integer refCount = (Integer) referenceMap.get(key);
-		if (refCount == null) {
-			result = true;
-			refCount = new Integer(0);
-		}
-		referenceMap.put(key, new Integer(refCount.intValue() + 1));
-		return result;
-	}
-
-	/**
-	 * returns true if the given key has been removed
-	 * 
-	 * @param referenceMap
-	 * @param key
-	 * @return true if the ref count of the given key was 1
-	 */
-	private boolean decrementRefCount(Map referenceMap, Object key) {
-		boolean result = false;
-		Integer refCount = (Integer) referenceMap.get(key);
-		Assert.isTrue(refCount != null);
-		if (refCount.intValue() == 1) {
-			referenceMap.remove(key);
-			result = true;
-		} else {
-			referenceMap.put(key, new Integer(refCount.intValue() - 1));
-		}
-		return result;
-	}
-
-	// returns true if this model was removed from getModels();
-	private boolean removeModel(Object source, Saveable model) {
-		boolean result = false;
-		Set modelsForSource = (Set) modelMap.get(source);
-		if (modelsForSource == null) {
-			logWarning(
-					"Ignored attempt to remove a saveable when no saveables were known", source, model); //$NON-NLS-1$
-		} else {
-			if (modelsForSource.remove(model)) {
-				result = decrementRefCount(modelRefCounts, model);
-				if (modelsForSource.isEmpty()) {
-					modelMap.remove(source);
-				}
-			} else {
-				logWarning(
-						"Ignored attempt to remove a saveable that was not registered", source, model); //$NON-NLS-1$
-			}
-		}
-		return result;
-	}
-
-	private void logWarning(String message, Object source, Saveable model) {
-		// create a new exception 
-		AssertionFailedException assertionFailedException = new AssertionFailedException("unknown saveable: " + model //$NON-NLS-1$
-				+ " from part: " + source); //$NON-NLS-1$
-		// record the current stack trace to help with debugging
-		assertionFailedException.fillInStackTrace();
-		WorkbenchPlugin.log(StatusUtil.newStatus(IStatus.WARNING, message,
-				assertionFailedException));
-	}
-
-	/**
-	 * This implementation of handleModelLifecycleEvent must be called by
-	 * implementers of ISaveablesSource whenever the list of models of the model
-	 * source changes, or when the dirty state of models changes. The
-	 * ISaveablesSource instance must be passed as the source of the event
-	 * object.
-	 * <p>
-	 * This method may also be called by objects that hold on to models but are
-	 * not workbench parts. In this case, the event source must be set to an
-	 * object that is not an instanceof IWorkbenchPart.
-	 * </p>
-	 * <p>
-	 * Corresponding open and close events must originate from the same
-	 * (identical) event source.
-	 * </p>
-	 * <p>
-	 * This method must be called on the UI thread.
-	 * </p>
-	 */
-	public void handleLifecycleEvent(SaveablesLifecycleEvent event) {
-		if (!(event.getSource() instanceof IWorkbenchPart)) {
-			// just update the set of non-part sources. No prompting necessary.
-			// See bug 139004.
-			updateNonPartSource((ISaveablesSource) event.getSource());
-			return;
-		}
-		Saveable[] modelArray = event.getSaveables();
-		switch (event.getEventType()) {
-		case SaveablesLifecycleEvent.POST_OPEN:
-			addModels(event.getSource(), modelArray);
-			break;
-		case SaveablesLifecycleEvent.PRE_CLOSE:
-			Saveable[] models = event.getSaveables();
-			Map modelsDecrementing = new HashMap();
-			Set modelsClosing = new HashSet();
-			for (int i = 0; i < models.length; i++) {
-				incrementRefCount(modelsDecrementing, models[i]);
-			}
-
-			fillModelsClosing(modelsClosing, modelsDecrementing);
-			boolean canceled = promptForSavingIfNecessary(PlatformUI
-					.getWorkbench().getActiveWorkbenchWindow(), modelsClosing, modelsDecrementing,
-					!event.isForce());
-			if (canceled) {
-				event.setVeto(true);
-			}
-			break;
-		case SaveablesLifecycleEvent.POST_CLOSE:
-			removeModels(event.getSource(), modelArray);
-			break;
-		case SaveablesLifecycleEvent.DIRTY_CHANGED:
-			fireModelLifecycleEvent(new SaveablesLifecycleEvent(this, event
-					.getEventType(), event.getSaveables(), false));
-			break;
-		}
-	}
-
-	/**
-	 * Updates the set of non-part saveables sources.
-	 * @param source
-	 */
-	private void updateNonPartSource(ISaveablesSource source) {
-		Saveable[] saveables = source.getSaveables();
-		if (saveables.length == 0) {
-			nonPartSources.remove(source);
-		} else {
-			nonPartSources.add(source);
-		}
-	}
-
-	/**
-	 * @param source
-	 * @param modelArray
-	 */
-	private void removeModels(Object source, Saveable[] modelArray) {
-		List removed = new ArrayList();
-		for (int i = 0; i < modelArray.length; i++) {
-			Saveable model = modelArray[i];
-			if (removeModel(source, model)) {
-				removed.add(model);
-			}
-		}
-		if (removed.size() > 0) {
-			fireModelLifecycleEvent(new SaveablesLifecycleEvent(this,
-					SaveablesLifecycleEvent.POST_OPEN, (Saveable[]) removed
-							.toArray(new Saveable[removed.size()]), false));
-		}
-	}
-
-	/**
-	 * @param source
-	 * @param modelArray
-	 */
-	private void addModels(Object source, Saveable[] modelArray) {
-		List added = new ArrayList();
-		for (int i = 0; i < modelArray.length; i++) {
-			Saveable model = modelArray[i];
-			if (addModel(source, model)) {
-				added.add(model);
-			}
-		}
-		if (added.size() > 0) {
-			fireModelLifecycleEvent(new SaveablesLifecycleEvent(this,
-					SaveablesLifecycleEvent.POST_OPEN, (Saveable[]) added
-							.toArray(new Saveable[added.size()]), false));
-		}
-	}
-
-	/**
-	 * @param event
-	 */
-	private void fireModelLifecycleEvent(SaveablesLifecycleEvent event) {
-		Object[] listenerArray = listeners.getListeners();
-		for (int i = 0; i < listenerArray.length; i++) {
-			((ISaveablesLifecycleListener) listenerArray[i])
-					.handleLifecycleEvent(event);
-		}
-	}
-
-	/**
-	 * Adds the given listener to the list of listeners. Has no effect if the
-	 * same (identical) listener has already been added. The listener will be
-	 * notified about changes to the models managed by this model manager. Event
-	 * types include: <br>
-	 * POST_OPEN when models were added to the list of models <br>
-	 * POST_CLOSE when models were removed from the list of models <br>
-	 * DIRTY_CHANGED when the dirty state of models changed
-	 * <p>
-	 * Listeners should ignore all other event types, including PRE_CLOSE. There
-	 * is no guarantee that listeners are notified before models are closed.
-	 * 
-	 * @param listener
-	 */
-	public void addModelLifecycleListener(ISaveablesLifecycleListener listener) {
-		listeners.add(listener);
-	}
-
-	/**
-	 * Removes the given listener from the list of listeners. Has no effect if
-	 * the given listener is not contained in the list.
-	 * 
-	 * @param listener
-	 */
-	public void removeModelLifecycleListener(ISaveablesLifecycleListener listener) {
-		listeners.remove(listener);
-	}
-
-	/**
-	 * @param partsToClose
-	 * @param save
-	 * @param window
-	 * @return the post close info to be passed to postClose
-	 */
-	public Object preCloseParts(List partsToClose, boolean save,
-			final IWorkbenchWindow window) {
-		// reference count (how many occurrences of a model will go away?)
-		PostCloseInfo postCloseInfo = new PostCloseInfo();
-		for (Iterator it = partsToClose.iterator(); it.hasNext();) {
-			IWorkbenchPart part = (IWorkbenchPart) it.next();
-			postCloseInfo.partsClosing.add(part);
-			if (part instanceof ISaveablePart) {
-				ISaveablePart saveablePart = (ISaveablePart) part;
-				if (save && !saveablePart.isSaveOnCloseNeeded()) {
-					// pretend for now that this part is not closing
-					continue;
-				}
-			}
-			if (save && part instanceof ISaveablePart2) {
-				ISaveablePart2 saveablePart2 = (ISaveablePart2) part;
-				// TODO show saveablePart2 before prompting, see
-				// EditorManager.saveAll
-				int response = SaveableHelper.savePart(saveablePart2, window,
-						true);
-				if (response == ISaveablePart2.CANCEL) {
-					// user canceled
-					return null;
-				} else if (response != ISaveablePart2.DEFAULT) {
-					// only include this part in the following logic if it returned
-					// DEFAULT
-					continue;
-				}
-			}
-			Saveable[] modelsFromSource = getSaveables(part);
-			for (int i = 0; i < modelsFromSource.length; i++) {
-				incrementRefCount(postCloseInfo.modelsDecrementing,
-						modelsFromSource[i]);
-			}
-		}
-		fillModelsClosing(postCloseInfo.modelsClosing,
-				postCloseInfo.modelsDecrementing);
-		if (save) {
-			boolean canceled = promptForSavingIfNecessary(window,
-					postCloseInfo.modelsClosing, postCloseInfo.modelsDecrementing, true);
-			if (canceled) {
-				return null;
-			}
-		}
-		return postCloseInfo;
-	}
-
-	/**
-	 * @param window
-	 * @param modelsClosing
-	 * @param canCancel
-	 * @return true if the user canceled
-	 */
-	private boolean promptForSavingIfNecessary(final IWorkbenchWindow window,
-			Set modelsClosing, Map modelsDecrementing, boolean canCancel) {
-		List modelsToOptionallySave = new ArrayList();
-		for (Iterator it = modelsDecrementing.keySet().iterator(); it.hasNext();) {
-			Saveable modelDecrementing = (Saveable) it.next();
-			if (modelDecrementing.isDirty() && !modelsClosing.contains(modelDecrementing)) {
-				modelsToOptionallySave.add(modelDecrementing);
-			}
-		}
-		
-		boolean shouldCancel = modelsToOptionallySave.isEmpty() ? false : promptForSaving(modelsToOptionallySave,
-				window, window, canCancel, true);
-		
-		if (shouldCancel) {
-			return true;
-		}
-
-		List modelsToSave = new ArrayList();
-		for (Iterator it = modelsClosing.iterator(); it.hasNext();) {
-			Saveable modelClosing = (Saveable) it.next();
-			if (modelClosing.isDirty()) {
-				modelsToSave.add(modelClosing);
-			}
-		}
-		return modelsToSave.isEmpty() ? false : promptForSaving(modelsToSave,
-				window, window, canCancel, false);
-	}
-
-	/**
-	 * @param modelsClosing
-	 * @param modelsDecrementing
-	 */
-	private void fillModelsClosing(Set modelsClosing, Map modelsDecrementing) {
-		for (Iterator it = modelsDecrementing.keySet().iterator(); it.hasNext();) {
-			Saveable model = (Saveable) it.next();
-			if (modelsDecrementing.get(model).equals(modelRefCounts.get(model))) {
-				modelsClosing.add(model);
-			}
-		}
-	}
-
-	/**
-	 * Prompt the user to save the given saveables.
-	 * @param modelsToSave the saveables to be saved
-	 * @param shellProvider the provider used to obtain a shell in prompting is
-	 *            required. Clients can use a workbench window for this.
-	 * @param runnableContext a runnable context that will be used to provide a
-	 *            progress monitor while the save is taking place. Clients can
-	 *            use a workbench window for this.
-	 * @param canCancel whether the operation can be canceled
-	 * @param stillOpenElsewhere whether the models are referenced by open parts
-	 * @return true if the user canceled
-	 */
-	public boolean promptForSaving(List modelsToSave,
-			final IShellProvider shellProvider, IRunnableContext runnableContext, final boolean canCancel, boolean stillOpenElsewhere) {
-		// Save parts, exit the method if cancel is pressed.
-		if (modelsToSave.size() > 0) {
-			boolean canceled = SaveableHelper.waitForBackgroundSaveJobs(modelsToSave);
-			if (canceled) {
-				return true;
-			}
-
-			IPreferenceStore apiPreferenceStore = PrefUtil.getAPIPreferenceStore();
-			boolean dontPrompt = stillOpenElsewhere && !apiPreferenceStore.getBoolean(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN);
-
-			if (dontPrompt) {
-				modelsToSave.clear();
-				return false;
-			} else if (modelsToSave.size() == 1) {
-				Saveable model = (Saveable) modelsToSave.get(0);
-				// Show a dialog.
-				String[] buttons;
-				if(canCancel) {
-					buttons = new String[] { IDialogConstants.YES_LABEL,
-							IDialogConstants.NO_LABEL,
-							IDialogConstants.CANCEL_LABEL };
-				} else {
-					buttons = new String[] { IDialogConstants.YES_LABEL,
-							IDialogConstants.NO_LABEL};
-				}
-
-				// don't save if we don't prompt
-				int choice = ISaveablePart2.NO;
-				
-				MessageDialog dialog;
-				if (stillOpenElsewhere) {
-					String message = NLS
-							.bind(
-									WorkbenchMessages.EditorManager_saveChangesOptionallyQuestion,
-									model.getName());
-					MessageDialogWithToggle dialogWithToggle = new MessageDialogWithToggle(shellProvider.getShell(),
-							WorkbenchMessages.Save_Resource, null, message,
-							MessageDialog.QUESTION, buttons, 0, WorkbenchMessages.EditorManager_closeWithoutPromptingOption, false) {
-						protected int getShellStyle() {
-							return (canCancel ? SWT.CLOSE : SWT.NONE)
-									| SWT.TITLE | SWT.BORDER
-									| SWT.APPLICATION_MODAL
-									| getDefaultOrientation();
-						}
-					};
-					dialog = dialogWithToggle;
-				} else {
-					String message = NLS
-							.bind(
-									WorkbenchMessages.EditorManager_saveChangesQuestion,
-									model.getName());
-					dialog = new MessageDialog(shellProvider.getShell(),
-							WorkbenchMessages.Save_Resource, null, message,
-							MessageDialog.QUESTION, buttons, 0) {
-						protected int getShellStyle() {
-							return (canCancel ? SWT.CLOSE : SWT.NONE)
-									| SWT.TITLE | SWT.BORDER
-									| SWT.APPLICATION_MODAL
-									| getDefaultOrientation();
-						}
-					};
-				}
-
-				choice = SaveableHelper.testGetAutomatedResponse();
-				if (SaveableHelper.testGetAutomatedResponse() == SaveableHelper.USER_RESPONSE) {
-					choice = dialog.open();
-					
-					if(stillOpenElsewhere) {
-						// map value of choice back to ISaveablePart2 values
-						switch (choice) {
-						case IDialogConstants.YES_ID:
-							choice = ISaveablePart2.YES;
-							break;
-						case IDialogConstants.NO_ID:
-							choice = ISaveablePart2.NO;
-							break;
-						case IDialogConstants.CANCEL_ID:
-							choice = ISaveablePart2.CANCEL;
-							break;
-						default:
-							break;
-						}
-						MessageDialogWithToggle dialogWithToggle = (MessageDialogWithToggle) dialog;
-						if (choice != ISaveablePart2.CANCEL && dialogWithToggle.getToggleState()) {
-							apiPreferenceStore.setValue(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN, false);
-						}
-					}
-				}
-
-				// Branch on the user choice.
-				// The choice id is based on the order of button labels
-				// above.
-				switch (choice) {
-				case ISaveablePart2.YES: // yes
-					break;
-				case ISaveablePart2.NO: // no
-					modelsToSave.clear();
-					break;
-				default:
-				case ISaveablePart2.CANCEL: // cancel
-					return true;
-				}
-			} else {
-				MyListSelectionDialog dlg = new MyListSelectionDialog(
-						shellProvider.getShell(),
-						modelsToSave,
-						new ArrayContentProvider(),
-						new WorkbenchPartLabelProvider(),
-						stillOpenElsewhere ? WorkbenchMessages.EditorManager_saveResourcesOptionallyMessage
-								: WorkbenchMessages.EditorManager_saveResourcesMessage,
-						canCancel, stillOpenElsewhere);
-				dlg.setInitialSelections(modelsToSave.toArray());
-				dlg.setTitle(EditorManager.SAVE_RESOURCES_TITLE);
-
-				// this "if" statement aids in testing.
-				if (SaveableHelper.testGetAutomatedResponse() == SaveableHelper.USER_RESPONSE) {
-					int result = dlg.open();
-					// Just return null to prevent the operation continuing
-					if (result == IDialogConstants.CANCEL_ID)
-						return true;
-
-					if (dlg.getDontPromptSelection()) {
-						apiPreferenceStore.setValue(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN, false);
-					}
-					
-					modelsToSave = Arrays.asList(dlg.getResult());
-				}
-			}
-		}
-		// Create save block.
-		return saveModels(modelsToSave, shellProvider, runnableContext);
-	}
-
-	/**
-	 * Save the given models.
-	 * @param finalModels the list of models to be saved
-	 * @param shellProvider the provider used to obtain a shell in prompting is
-	 *            required. Clients can use a workbench window for this.
-	 * @param runnableContext a runnable context that will be used to provide a
-	 *            progress monitor while the save is taking place. Clients can
-	 *            use a workbench window for this.
-	 * @return <code>true</code> if the operation was canceled
-	 */
-	public boolean saveModels(final List finalModels, final IShellProvider shellProvider, IRunnableContext runnableContext) {
-		IRunnableWithProgress progressOp = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) {
-				IProgressMonitor monitorWrap = new EventLoopProgressMonitor(
-						monitor);
-				monitorWrap.beginTask("", finalModels.size()); //$NON-NLS-1$
-				for (Iterator i = finalModels.iterator(); i.hasNext();) {
-					Saveable model = (Saveable) i.next();
-					// handle case where this model got saved as a result of
-					// saving another
-					if (!model.isDirty()) {
-						monitor.worked(1);
-						continue;
-					}
-					SaveableHelper.doSaveModel(model, new SubProgressMonitor(monitorWrap, 1), shellProvider, true);
-					if (monitorWrap.isCanceled())
-						break;
-				}
-				monitorWrap.done();
-			}
-		};
-
-		// Do the save.
-		return !SaveableHelper.runProgressMonitorOperation(
-				WorkbenchMessages.Save_All, progressOp, runnableContext,
-				shellProvider);
-	}
-
-	private static class PostCloseInfo {
-		private List partsClosing = new ArrayList();
-
-		private Map modelsDecrementing = new HashMap();
-
-		private Set modelsClosing = new HashSet();
-	}
-
-	/**
-	 * @param postCloseInfoObject
-	 */
-	public void postClose(Object postCloseInfoObject) {
-		PostCloseInfo postCloseInfo = (PostCloseInfo) postCloseInfoObject;
-		List removed = new ArrayList();
-		for (Iterator it = postCloseInfo.partsClosing.iterator(); it.hasNext();) {
-			IWorkbenchPart part = (IWorkbenchPart) it.next();
-			Set saveables = (Set) modelMap.get(part);
-			if (saveables != null) {
-				// make a copy to avoid a ConcurrentModificationException - we
-				// will remove from the original set as we iterate
-				saveables = new HashSet(saveables);
-				for (Iterator it2 = saveables.iterator(); it2.hasNext();) {
-					Saveable saveable = (Saveable) it2.next();
-					if (removeModel(part, saveable)) {
-						removed.add(saveable);
-					}
-				}
-			}
-		}
-		if (removed.size() > 0) {
-			fireModelLifecycleEvent(new SaveablesLifecycleEvent(this,
-					SaveablesLifecycleEvent.POST_CLOSE, (Saveable[]) removed
-							.toArray(new Saveable[removed.size()]), false));
-		}
-	}
-
-	/**
-	 * Returns the saveable models provided by the given part. If the part does
-	 * not provide any models, a default model is returned representing the
-	 * part.
-	 * 
-	 * @param part
-	 *            the workbench part
-	 * @return the saveable models
-	 */
-	private Saveable[] getSaveables(IWorkbenchPart part) {
-		if (part instanceof ISaveablesSource) {
-			ISaveablesSource source = (ISaveablesSource) part;
-			return source.getSaveables();
-		} else if (part instanceof ISaveablePart) {
-			return new Saveable[] { new DefaultSaveable(part) };
-		} else {
-			return new Saveable[0];
-		}
-	}
-
-	/**
-	 * @param actualPart
-	 */
-	public void postOpen(IWorkbenchPart part) {
-		addModels(part, getSaveables(part));
-	}
-
-	/**
-	 * @param actualPart
-	 */
-	public void dirtyChanged(IWorkbenchPart part) {
-		Saveable[] saveables = getSaveables(part);
-		if (saveables.length > 0) {
-			fireModelLifecycleEvent(new SaveablesLifecycleEvent(this,
-					SaveablesLifecycleEvent.DIRTY_CHANGED, saveables, false));
-		}
-	}
-
-	/**
-	 * For testing purposes. Not to be called by clients.
-	 * 
-	 * @param model
-	 * @return
-	 */
-	public Object[] testGetSourcesForModel(Saveable model) {
-		List result = new ArrayList();
-		for (Iterator it = modelMap.entrySet().iterator(); it.hasNext();) {
-			Map.Entry entry = (Map.Entry) it.next();
-			Set values = (Set) entry.getValue();
-			if (values.contains(model)) {
-				result.add(entry.getKey());
-			}
-		}
-		return result.toArray();
-	}
-
-	private static final class MyListSelectionDialog extends
-			ListSelectionDialog {
-		private final boolean canCancel;
-		private Button checkbox;
-		private boolean dontPromptSelection;
-		private boolean stillOpenElsewhere;
-
-		private MyListSelectionDialog(Shell shell, Object input,
-				IStructuredContentProvider contentprovider,
-				ILabelProvider labelProvider, String message, boolean canCancel, boolean stillOpenElsewhere) {
-			super(shell, input, contentprovider, labelProvider, message);
-			this.canCancel = canCancel;
-			this.stillOpenElsewhere = stillOpenElsewhere;
-			if (!canCancel) {
-				int shellStyle = getShellStyle();
-				shellStyle &= ~SWT.CLOSE;
-				setShellStyle(shellStyle);
-			}
-		}
-
-		/**
-		 * @return
-		 */
-		public boolean getDontPromptSelection() {
-			return dontPromptSelection;
-		}
-
-		protected void createButtonsForButtonBar(Composite parent) {
-			createButton(parent, IDialogConstants.OK_ID,
-					IDialogConstants.OK_LABEL, true);
-			if (canCancel) {
-				createButton(parent, IDialogConstants.CANCEL_ID,
-						IDialogConstants.CANCEL_LABEL, false);
-			}
-		}
-		
-		protected Control createDialogArea(Composite parent) {
-			 Composite dialogAreaComposite = (Composite) super.createDialogArea(parent);
-			 
-			 if (stillOpenElsewhere) {
-				 Composite checkboxComposite = new Composite(dialogAreaComposite, SWT.NONE);
-				 checkboxComposite.setLayout(new GridLayout(2, false));
-				 
-				 checkbox = new Button(checkboxComposite, SWT.CHECK);
-				 checkbox.addSelectionListener(new SelectionAdapter() {
-					public void widgetSelected(SelectionEvent e) {
-						dontPromptSelection = checkbox.getSelection();
-					}
-				 });
-				 GridData gd = new GridData();
-				 gd.horizontalAlignment = SWT.BEGINNING;
-				 checkbox.setLayoutData(gd);
-				 
-				 Label label = new Label(checkboxComposite, SWT.NONE);
-				 label.setText(WorkbenchMessages.EditorManager_closeWithoutPromptingOption);
-				 gd = new GridData();
-				 gd.grabExcessHorizontalSpace = true;
-				 gd.horizontalAlignment = SWT.BEGINNING;
-			 }
-			 
-			 return dialogAreaComposite;
-		}
-	}
-
-	/**
-	 * @return a list of ISaveablesSource objects registered with this saveables
-	 *         list which are not workbench parts.
-	 */
-	public ISaveablesSource[] getNonPartSources() {
-		return (ISaveablesSource[]) nonPartSources
-				.toArray(new ISaveablesSource[nonPartSources.size()]);
-	}
-
-	/**
-	 * @param model
-	 */
-	public IWorkbenchPart[] getPartsForSaveable(Saveable model) {
-		List result = new ArrayList();
-		for (Iterator it = modelMap.entrySet().iterator(); it.hasNext();) {
-			Map.Entry entry = (Map.Entry) it.next();
-			Set values = (Set) entry.getValue();
-			if (values.contains(model) && entry.getKey() instanceof IWorkbenchPart) {
-				result.add(entry.getKey());
-			}
-		}
-		return (IWorkbenchPart[]) result.toArray(new IWorkbenchPart[result.size()]);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionAdapterFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionAdapterFactory.java
deleted file mode 100644
index cee1933..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionAdapterFactory.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.expressions.ICountable;
-import org.eclipse.core.expressions.IIterable;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-
-/**
- * Adapts ISelection instances to either IIterable or ICountable. For use with
- * core expressions.
- * 
- * @since 3.3
- */
-public class SelectionAdapterFactory implements IAdapterFactory {
-	private static final ICountable ICOUNT_0 = new ICountable() {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.expressions.ICountable#count()
-		 */
-		public int count() {
-			return 0;
-		}
-	};
-	private static final ICountable ICOUNT_1 = new ICountable() {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.expressions.ICountable#count()
-		 */
-		public int count() {
-			return 1;
-		}
-	};
-	private static final IIterable ITERATE_EMPTY = new IIterable() {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.expressions.IIterable#iterator()
-		 */
-		public Iterator iterator() {
-			return Collections.EMPTY_LIST.iterator();
-		}
-	};
-
-	/**
-	 * The classes we can adapt to.
-	 */
-	private static final Class[] CLASSES = new Class[] { IIterable.class,
-			ICountable.class };
-
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
-		if (adaptableObject instanceof ISelection) {
-			if (adapterType == IIterable.class) {
-				return iterable((ISelection) adaptableObject);
-			} else if (adapterType == ICountable.class) {
-				return countable((ISelection) adaptableObject);
-			}
-		}
-		return null;
-	}
-
-	private Object iterable(final ISelection sel) {
-		if (sel.isEmpty()) {
-			return ITERATE_EMPTY;
-		}
-		if (sel instanceof IStructuredSelection) {
-			return new IIterable() {
-				public Iterator iterator() {
-					return ((IStructuredSelection) sel).iterator();
-				}
-			};
-		}
-		final List list = Arrays.asList(new Object[] { sel });
-		return new IIterable() {
-
-			public Iterator iterator() {
-				return list.iterator();
-			}
-		};
-	}
-
-	private Object countable(final ISelection sel) {
-		if (sel.isEmpty()) {
-			return ICOUNT_0;
-		}
-		if (sel instanceof IStructuredSelection) {
-			final IStructuredSelection ss = (IStructuredSelection) sel;
-			return new ICountable() {
-				public int count() {
-					return ss.size();
-				}
-			};
-		}
-		return ICOUNT_1;
-	}
-
-	public Class[] getAdapterList() {
-		return CLASSES;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
deleted file mode 100644
index 7587639..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SelectionConversionService.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * The SelectionConversionService is the service that converts the selection to
- * IResources.
- * </p>
- * <p>
- * This interface is only intended for use within the
- * <code>org.eclipse.ui.workbench</code> and <code>org.eclipse.ui.ide</code>
- * plug-ins.
- * </p>
- * 
- * @since 3.2
- */
-public class SelectionConversionService implements ISelectionConversionService {
-
-	/**
-	 * Attempt to convert the elements in the passed selection into resources by
-	 * asking each for its IResource property (iff it isn't already a resource).
-	 * If all elements in the initial selection can be converted to resources
-	 * then answer a new selection containing these resources; otherwise answer
-	 * an empty selection.
-	 * 
-	 * @param originalSelection
-	 *            the original selection
-	 * @return the converted selection or an empty selection.
-	 */
-	public IStructuredSelection convertToResources(
-			IStructuredSelection originalSelection) {
-		// @issue resource-specific code should be pushed into IDE
-		Class resourceClass = LegacyResourceSupport.getResourceClass();
-		if (resourceClass == null) {
-			return originalSelection;
-		}
-
-		List result = new ArrayList();
-		Iterator elements = originalSelection.iterator();
-
-		while (elements.hasNext()) {
-			Object currentElement = elements.next();
-            Object resource = Util.getAdapter(currentElement, resourceClass);
-            if (resource != null) {
-            	result.add(resource);   
-            }
-		}
-
-		// all that can be converted are done, answer new selection
-		if (result.isEmpty()) {
-			return StructuredSelection.EMPTY;
-		}
-		return new StructuredSelection(result.toArray());
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Semaphore.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Semaphore.java
deleted file mode 100644
index 9280614..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Semaphore.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-public class Semaphore {
-    protected long notifications;
-
-    protected Thread operation;
-
-    protected Runnable runnable;
-
-    public Semaphore(Runnable runnable) {
-        this.runnable = runnable;
-        notifications = 0;
-    }
-
-    /**
-     * Attempts to acquire this semaphore.  Returns true if it was successfully acquired,
-     * and false otherwise.
-     */
-    public synchronized boolean acquire(long delay) throws InterruptedException {
-        if (Thread.interrupted()) {
-			throw new InterruptedException();
-		}
-        long start = System.currentTimeMillis();
-        long timeLeft = delay;
-        while (true) {
-            if (notifications > 0) {
-                notifications--;
-                return true;
-            }
-            if (timeLeft <= 0) {
-				return false;
-			}
-            wait(timeLeft);
-            timeLeft = start + delay - System.currentTimeMillis();
-        }
-    }
-
-    public boolean equals(Object obj) {
-        return (runnable == ((Semaphore) obj).runnable);
-    }
-
-    public Thread getOperationThread() {
-        return operation;
-    }
-
-    public Runnable getRunnable() {
-        return runnable;
-    }
-
-    public int hashCode() {
-        return runnable == null ? 0 : runnable.hashCode();
-    }
-
-    public synchronized void release() {
-        notifications++;
-        notifyAll();
-    }
-
-    public void setOperationThread(Thread operation) {
-        this.operation = operation;
-    }
-
-    // for debug only
-    public String toString() {
-        return "Semaphore(" + runnable + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SharedImages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SharedImages.java
deleted file mode 100644
index 4514095..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SharedImages.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-
-/**
- * Common images used by the workbench which may be useful to other plug-ins.
- */
-public class SharedImages implements ISharedImages {
-    /**
-     * Retrieves the specified image from the workbench plugin's image registry.
-     *
-     * @see ISharedImages
-     */
-    public Image getImage(String symbolicName) {
-        Image image = WorkbenchImages.getImage(symbolicName);
-        if (image != null) {
-			return image;
-		}
-
-        //if there is a descriptor for it, add the image to the registry.
-        ImageDescriptor desc = WorkbenchImages.getImageDescriptor(symbolicName);
-        if (desc != null) {
-            WorkbenchImages.getImageRegistry().put(symbolicName, desc);
-            return WorkbenchImages.getImageRegistry().get(symbolicName);
-        }
-        return null;
-    }
-
-    /**
-     * Retrieves the specified image descriptor from the workbench plugin's image registry.
-     *
-     * @see ISharedImages
-     */
-    public ImageDescriptor getImageDescriptor(String symbolicName) {
-        return WorkbenchImages.getImageDescriptor(symbolicName);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShellPool.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShellPool.java
deleted file mode 100644
index fc8e1a0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShellPool.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.events.ShellListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Manages a pool of shells. This can be used instead of creating and destroying
- * shells. By reusing shells, they will never be disposed until the pool goes away.
- * This is useful in situations where client code may have cached pointers to the
- * shells to use as a parent for dialogs. It also works around bug 86226 (SWT menus
- * cannot be reparented).
- * 
- * @since 3.1
- */
-public class ShellPool {
-    
-    private int flags;
-    
-    /**
-     * Parent shell (or null if none)
-     */
-    private Shell parentShell;
-    
-    private LinkedList availableShells = new LinkedList();
-    
-    private final static String CLOSE_LISTENER = "close listener"; //$NON-NLS-1$
-    
-    private boolean isDisposed = false;
-    
-    private DisposeListener disposeListener = new DisposeListener() {
-        public void widgetDisposed(DisposeEvent e) {
-            WorkbenchPlugin.log(new RuntimeException("Widget disposed too early!")); //$NON-NLS-1$
-        }  
-    };
-    
-    private ShellListener closeListener = new ShellAdapter() {
-        
-        public void shellClosed(ShellEvent e) {
-                if (isDisposed) {
-                    return;
-                }
-                
-                if (e.doit) {
-                    Shell s = (Shell)e.widget;
-                    ShellListener l = (ShellListener)s.getData(CLOSE_LISTENER);
-                    
-                    if (l != null) {
-                        s.setData(CLOSE_LISTENER, null);
-                        l.shellClosed(e);
-                        
-                        // The shell can 'cancel' the close by setting
-                        // the 'doit' to false...if so, do nothing
-                        if (e.doit) {
-                            Control[] children = s.getChildren();
-	                        for (int i = 0; i < children.length; i++) {
-	                            Control control = children[i];
-	                          
-	                            control.dispose();
-	                        }
-	                        availableShells.add(s);
-	                        s.setVisible(false);
-                        }
-                        else {
-                        	// Restore the listener
-                            s.setData(CLOSE_LISTENER, l);
-                        }
-                    }
-                }
-                e.doit = false;
-         }
-    };
-    
-    /**
-     * Creates a shell pool that allocates shells that are children of the
-     * given parent and are created with the given flags.
-     * 
-     * @param parentShell parent shell (may be null, indicating that this pool creates
-     * top-level shells)
-     * @param childFlags flags for all child shells
-     */
-    public ShellPool(Shell parentShell, int childFlags) {
-        this.parentShell = parentShell;
-        this.flags = childFlags;
-    }
-    
-    /**
-     * Returns a new shell. The shell must not be disposed directly, but it may be closed.
-     * Once the shell is closed, it will be returned to the shell pool. Note: callers must
-     * remove all listeners from the shell before closing it.
-     */
-    public Shell allocateShell(ShellListener closeListener) {
-        Shell result;
-        if (!availableShells.isEmpty()) {
-            result = (Shell)availableShells.removeFirst();
-        } else {
-            result = new Shell(parentShell, flags);
-            result.addShellListener(this.closeListener);
-            result.addDisposeListener(disposeListener);
-        }
-        
-        result.setData(CLOSE_LISTENER, closeListener);
-        return result;
-    }
-    
-    /**
-     * Disposes this pool. Any unused shells in the pool are disposed immediately,
-     * and any shells in use will be disposed once they are closed.
-     * 
-     * @since 3.1
-     */
-    public void dispose() {
-        for (Iterator iter = availableShells.iterator(); iter.hasNext();) {
-            Shell next = (Shell) iter.next();
-            next.removeDisposeListener(disposeListener);
-            
-            next.dispose();
-        }
-        
-        availableShells.clear();
-        isDisposed = true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowFastViewContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowFastViewContribution.java
deleted file mode 100644
index 156bf66..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowFastViewContribution.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * A dynamic contribution item which supports to switch to other Contexts.
- */
-public class ShowFastViewContribution extends ContributionItem {
-    public static final String FAST_VIEW = "FastView"; //$NON-NLS-1$
-
-    private IWorkbenchWindow window;
-    private String fvbId;
-
-    /**
-     * Create a new ToolBar item.
-     */
-    public ShowFastViewContribution(IWorkbenchWindow window, String id) {
-        super("showFastViewContr"); //$NON-NLS-1$
-        this.window = window;
-        this.fvbId = id;
-    }
-
-    /**
-     * Lagacy constructor...automatically points to the legacy FastViewBar
-     * @param window
-     */
-    public ShowFastViewContribution(IWorkbenchWindow window) {
-    	this(window, FastViewBar.FASTVIEWBAR_ID);
-    }
-
-    private void updateItem(ToolItem item, IViewReference ref) {
-        if (item.getImage() != ref.getTitleImage()) {
-            item.setImage(ref.getTitleImage());
-        }
-
-        if (!Util.equals(item.getToolTipText(), ref.getTitle())) {
-            item.setToolTipText(ref.getTitle());
-        }
-    }
-    
-    public static ToolItem getItem(ToolBar toSearch, IWorkbenchPartReference ref) {
-        ToolItem[] items = toSearch.getItems();
-        
-        for (int i = 0; i < items.length; i++) {
-            ToolItem item = items[i];
-            
-            if (item.getData(FAST_VIEW) == ref) {
-                return item;
-            }
-        }
-        
-        return null;
-    }
-    
-    /**
-     * The default implementation of this <code>IContributionItem</code>
-     * method does nothing. Subclasses may override.
-     */
-    public void fill(ToolBar parent, int index) {
-        // Get page.
-        WorkbenchPage page = (WorkbenchPage) window.getActivePage();
-        if (page == null) {
-			return;
-		}
-
-        // Get views...
-        List fvs = new ArrayList();
-        Perspective perspective = page.getActivePerspective();
-        if (perspective != null)
-        	fvs = perspective.getFastViewManager().getFastViews(fvbId);
-
-        // Create tool item for each view.
-        for (Iterator fvIter = fvs.iterator(); fvIter.hasNext();) {
-			final IViewReference ref = (IViewReference) fvIter.next();			
-            final ToolItem item = new ToolItem(parent, SWT.CHECK, index);
-            updateItem(item, ref);
-            item.setData(FAST_VIEW, ref);
-
-            final IPropertyListener propertyListener = new IPropertyListener() {
-
-                public void propertyChanged(Object source, int propId) {
-                    if (propId == IWorkbenchPartConstants.PROP_TITLE) {
-                        if (!item.isDisposed()) {
-                            updateItem(item, ref);
-                        }
-                    }
-                }
-
-            };
-
-            ref.addPropertyListener(propertyListener);
-
-            item.addDisposeListener(new DisposeListener() {
-                /* (non-Javadoc)
-                 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-                 */
-                public void widgetDisposed(DisposeEvent e) {
-                    ref.removePropertyListener(propertyListener);
-                }
-            });
-
-            // Select the active fast view's icon.
-            if (ref == page.getActiveFastView()) {
-                item.setSelection(true);
-            } else {
-                item.setSelection(false);
-            }
-
-            item.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent e) {
-                    showView(ref);
-                }
-            });
-            index++;
-        }
-    }
-
-    /**
-     * Returns whether the contribution is dynamic.
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-
-    /**
-     * Open a view.
-     */
-    private void showView(IViewReference ref) {
-        WorkbenchPage page = (WorkbenchPage) ref.getPage();
-        page.toggleFastView(ref);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInAction.java
deleted file mode 100644
index be67e89..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInAction.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.part.IShowInSource;
-import org.eclipse.ui.part.IShowInTarget;
-import org.eclipse.ui.part.ShowInContext;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Action for a particular target in the Show In menu.
- */
-public class ShowInAction extends Action {
-    private IWorkbenchWindow window;
-
-    private IViewDescriptor desc;
-
-    /**
-     * Creates a new <code>ShowInAction</code>.
-     */
-    protected ShowInAction(IWorkbenchWindow window, IViewDescriptor desc) {
-        super(desc.getLabel());
-        setImageDescriptor(desc.getImageDescriptor());
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SHOW_IN_ACTION);
-        this.window = window;
-        this.desc = desc;
-    }
-
-    /**
-     * Shows the current context in this action's view.
-     */
-    public void run() {
-        IWorkbenchPage page = window.getActivePage();
-        if (page == null) {
-            beep();
-            return;
-        }
-
-        IWorkbenchPart sourcePart = page.getActivePart();
-        if (sourcePart == null) {
-            beep();
-            return;
-        }
-
-        ShowInContext context = getContext(sourcePart);
-        if (context == null) {
-            beep();
-            return;
-        }
-
-        try {
-            IViewPart view = page.showView(desc.getId());
-            IShowInTarget target = getShowInTarget(view);
-            if (target != null && target.show(context)) {
-                // success
-            } else {
-                beep();
-            }
-            ((WorkbenchPage) page).performedShowIn(desc.getId()); // TODO: move back up
-        } catch (PartInitException e) {
-            WorkbenchPlugin.log(
-                    "Error showing view in ShowInAction.run", e.getStatus()); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Returns the <code>IShowInSource</code> provided by the source part,
-     * or <code>null</code> if it does not provide one.
-     * 
-     * @param sourcePart the source part
-     * @return an <code>IShowInSource</code> or <code>null</code>
-     */
-    private IShowInSource getShowInSource(IWorkbenchPart sourcePart) {
-        return (IShowInSource)Util.getAdapter(sourcePart, IShowInSource.class);
-    }
-
-    /**
-     * Returns the <code>IShowInTarget</code> for the given part,
-     * or <code>null</code> if it does not provide one.
-     * 
-     * @param targetPart the target part
-     * @return the <code>IShowInTarget</code> or <code>null</code>
-     */
-    private IShowInTarget getShowInTarget(IWorkbenchPart targetPart) {
-        return (IShowInTarget)Util.getAdapter(targetPart, IShowInTarget.class);
-    }
-
-    /**
-     * Returns the <code>ShowInContext</code> to show in the selected target,
-     * or <code>null</code> if there is no valid context to show.
-     * <p>
-     * This implementation obtains the context from the <code>IShowInSource</code>
-     * of the source part (if provided), or, if the source part is an editor,
-     * it creates the context from the editor's input and selection.
-     * <p>
-     * Subclasses may extend or reimplement.
-     * 
-     * @return the <code>ShowInContext</code> to show or <code>null</code>
-     */
-    private ShowInContext getContext(IWorkbenchPart sourcePart) {
-        IShowInSource source = getShowInSource(sourcePart);
-        if (source != null) {
-            ShowInContext context = source.getShowInContext();
-            if (context != null) {
-                return context;
-            }
-        } else if (sourcePart instanceof IEditorPart) {
-            Object input = ((IEditorPart) sourcePart).getEditorInput();
-            ISelectionProvider sp = sourcePart.getSite().getSelectionProvider();
-            ISelection sel = sp == null ? null : sp.getSelection();
-            return new ShowInContext(input, sel);
-        }
-        return null;
-    }
-
-    /**
-     * Generates a system beep.
-     */
-    private void beep() {
-        window.getShell().getDisplay().beep();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java
deleted file mode 100644
index b24f9c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInHandler.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.commands.IElementUpdater;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.UIElement;
-import org.eclipse.ui.part.IShowInTarget;
-import org.eclipse.ui.part.ShowInContext;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * The show in command, which only needs a target id.
- * 
- * @since 3.4
- */
-public class ShowInHandler extends AbstractHandler implements IElementUpdater {
-	static final String SHOW_IN_ID = "org.eclipse.ui.navigate.showIn"; //$NON-NLS-1$
-	static final String TARGET_ID = "org.eclipse.ui.navigate.showIn.targetId"; //$NON-NLS-1$
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		String targetId = event.getParameter(TARGET_ID);
-		if (targetId == null) {
-			throw new ExecutionException("No targetId specified"); //$NON-NLS-1$
-		}
-		ShowInContext context = getContext(HandlerUtil
-				.getShowInSelection(event), HandlerUtil.getShowInInput(event));
-		if (context == null) {
-			return null;
-		}
-
-		IWorkbenchPage page = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event).getActivePage();
-		try {
-			IViewPart view = page.showView(targetId);
-			IShowInTarget target = getShowInTarget(view);
-			if (target != null) {
-				target.show(context);
-			}
-			((WorkbenchPage) page).performedShowIn(targetId); // TODO: move
-			// back up
-		} catch (PartInitException e) {
-			throw new ExecutionException("Failed to show in", e); //$NON-NLS-1$
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the <code>ShowInContext</code> to show in the selected target,
-	 * or <code>null</code> if there is no valid context to show.
-	 * <p>
-	 * This implementation obtains the context from global variables provide.
-	 * showInSelection and showInInput should be available.
-	 * <p>
-	 * 
-	 * @return the <code>ShowInContext</code> to show or <code>null</code>
-	 */
-	private ShowInContext getContext(ISelection showInSelection, Object input) {
-		if (input == null && showInSelection == null) {
-			return null;
-		}
-		return new ShowInContext(input, showInSelection);
-	}
-
-	/**
-	 * Returns the <code>IShowInTarget</code> for the given part, or
-	 * <code>null</code> if it does not provide one.
-	 * 
-	 * @param targetPart
-	 *            the target part
-	 * @return the <code>IShowInTarget</code> or <code>null</code>
-	 */
-	private IShowInTarget getShowInTarget(IWorkbenchPart targetPart) {
-		return (IShowInTarget) Util.getAdapter(targetPart, IShowInTarget.class);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IElementUpdater#updateElement(org.eclipse.ui.menus.UIElement,
-	 *      java.util.Map)
-	 */
-	public void updateElement(UIElement element, Map parameters) {
-		String targetId = (String) parameters.get(TARGET_ID);
-		if (targetId == null || targetId.length() == 0) {
-			return;
-		}
-		IViewRegistry reg = WorkbenchPlugin.getDefault().getViewRegistry();
-		IViewDescriptor desc = reg.find(targetId);
-		if (desc != null) {
-			element.setIcon(desc.getImageDescriptor());
-			element.setText(desc.getLabel());
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java
deleted file mode 100644
index af6af5e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowInMenu.java
+++ /dev/null
@@ -1,367 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.services.ActivePartSourceProvider;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.IWorkbenchContribution;
-import org.eclipse.ui.menus.MenuUtil;
-import org.eclipse.ui.part.IShowInSource;
-import org.eclipse.ui.part.IShowInTargetList;
-import org.eclipse.ui.part.ShowInContext;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.services.ISourceProviderService;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * A <code>ShowInMenu</code> is used to populate a menu manager with Show In
- * actions. The items to show are determined from the active perspective and
- * active part.
- */
-public class ShowInMenu extends ContributionItem implements
-		IWorkbenchContribution {
-
-	private static final String NO_TARGETS_MSG = WorkbenchMessages.Workbench_showInNoTargets;
-
-	private IWorkbenchWindow window;
-
-	private Map actions = new HashMap(21);
-
-	private boolean dirty = true;
-
-	private IMenuListener menuListener = new IMenuListener() {
-		public void menuAboutToShow(IMenuManager manager) {
-			manager.markDirty();
-			dirty = true;
-		}
-	};
-
-	private IServiceLocator locator;
-
-	private MenuManager currentManager;
-
-	public ShowInMenu() {
-
-	}
-
-	/**
-	 * Creates a Show In menu.
-	 * 
-	 * @param window
-	 *            the window containing the menu
-	 * @param id
-	 *            The ID for this contribution
-	 */
-	public ShowInMenu(IWorkbenchWindow window, String id) {
-		super(id);
-		this.window = window;
-	}
-
-	public boolean isDirty() {
-		return dirty;
-	}
-
-	/**
-	 * Overridden to always return true and force dynamic menu building.
-	 */
-	public boolean isDynamic() {
-		return true;
-	}
-
-	public void fill(Menu menu, int index) {
-		if (getParent() instanceof MenuManager) {
-			((MenuManager) getParent()).addMenuListener(menuListener);
-		}
-
-		if (!dirty) {
-			return;
-		}
-
-		if (currentManager!=null && currentManager.getSize() > 0) {
-			IMenuService service = (IMenuService) locator
-					.getService(IMenuService.class);
-			service.releaseContributions(currentManager);
-			currentManager.removeAll();
-		}
-
-		currentManager = new MenuManager();
-		fillMenu(currentManager);
-		IContributionItem[] items = currentManager.getItems();
-		if (items.length == 0) {
-			MenuItem item = new MenuItem(menu, SWT.NONE, index++);
-			item.setText(NO_TARGETS_MSG);
-			item.setEnabled(false);
-		} else {
-			for (int i = 0; i < items.length; i++) {
-				if (items[i].isVisible()) {
-					items[i].fill(menu, index++);
-				}
-			}
-		}
-		dirty = false;
-	}
-
-	/**
-	 * Fills the menu with Show In actions.
-	 */
-	private void fillMenu(IMenuManager innerMgr) {
-		// Remove all.
-		innerMgr.removeAll();
-
-		IWorkbenchPart sourcePart = getSourcePart();
-		if (sourcePart == null) {
-			return;
-		}
-		ShowInContext context = getContext(sourcePart);
-		if (context == null) {
-			return;
-		}
-		if (context.getInput() == null
-				&& (context.getSelection() == null || context.getSelection()
-						.isEmpty())) {
-			return;
-		}
-
-		IViewDescriptor[] viewDescs = getViewDescriptors(sourcePart);
-		if (viewDescs.length == 0) {
-			return;
-		}
-
-		for (int i = 0; i < viewDescs.length; ++i) {
-			IAction action = getAction(viewDescs[i]);
-			if (action != null) {
-				innerMgr.add(action);
-			}
-		}
-		if (innerMgr instanceof MenuManager) {
-			ISourceProviderService sps = (ISourceProviderService) locator
-					.getService(ISourceProviderService.class);
-			ISourceProvider sp = sps
-					.getSourceProvider(ISources.SHOW_IN_SELECTION);
-			if (sp instanceof ActivePartSourceProvider) {
-				((ActivePartSourceProvider) sp).checkActivePart();
-			}
-			IMenuService service = (IMenuService) locator
-					.getService(IMenuService.class);
-			service.populateContributionManager((ContributionManager) innerMgr,
-					MenuUtil.SHOW_IN_MENU_ID);
-		}
-	}
-
-	/**
-	 * Returns the action for the given view id, or null if not found.
-	 */
-	private IAction getAction(IViewDescriptor desc) {
-		// Keep a cache, rather than creating a new action each time,
-		// so that image caching in ActionContributionItem works.
-		IAction action = (IAction) actions.get(desc.getId());
-		if (action == null) {
-			if (desc != null) {
-				action = new ShowInAction(window, desc);
-				actions.put(desc.getId(), action);
-			}
-		}
-		return action;
-	}
-
-	/**
-	 * Returns the Show In... target part ids for the given source part. Merges
-	 * the contributions from the current perspective and the source part.
-	 */
-	private ArrayList getShowInPartIds(IWorkbenchPart sourcePart) {
-		ArrayList targetIds = new ArrayList();
-		WorkbenchPage page = (WorkbenchPage) getWindow().getActivePage();
-		if (page != null) {
-			targetIds.addAll(page.getShowInPartIds());
-		}
-		IShowInTargetList targetList = getShowInTargetList(sourcePart);
-		if (targetList != null) {
-			String[] partIds = targetList.getShowInTargetIds();
-			if (partIds != null) {
-				for (int i = 0; i < partIds.length; ++i) {
-					if (!targetIds.contains(partIds[i])) {
-						targetIds.add(partIds[i]);
-					}
-				}
-			}
-		}
-		page.sortShowInPartIds(targetIds);
-		return targetIds;
-	}
-
-	/**
-	 * Returns the source part, or <code>null</code> if there is no applicable
-	 * source part
-	 * <p>
-	 * This implementation returns the current part in the window. Subclasses
-	 * may extend or reimplement.
-	 * 
-	 * @return the source part or <code>null</code>
-	 */
-	private IWorkbenchPart getSourcePart() {
-		IWorkbenchPage page = getWindow().getActivePage();
-		if (page != null) {
-			return page.getActivePart();
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the <code>IShowInSource</code> provided by the source part, or
-	 * <code>null</code> if it does not provide one.
-	 * 
-	 * @param sourcePart
-	 *            the source part
-	 * @return an <code>IShowInSource</code> or <code>null</code>
-	 */
-	private IShowInSource getShowInSource(IWorkbenchPart sourcePart) {
-		return (IShowInSource) Util.getAdapter(sourcePart, IShowInSource.class);
-	}
-
-	/**
-	 * Returns the <code>IShowInTargetList</code> for the given source part,
-	 * or <code>null</code> if it does not provide one.
-	 * 
-	 * @param sourcePart
-	 *            the source part
-	 * @return the <code>IShowInTargetList</code> or <code>null</code>
-	 */
-	private IShowInTargetList getShowInTargetList(IWorkbenchPart sourcePart) {
-		return (IShowInTargetList) Util.getAdapter(sourcePart,
-				IShowInTargetList.class);
-	}
-
-	/**
-	 * Returns the <code>ShowInContext</code> to show in the selected target,
-	 * or <code>null</code> if there is no valid context to show.
-	 * <p>
-	 * This implementation obtains the context from the
-	 * <code>IShowInSource</code> of the source part (if provided), or, if the
-	 * source part is an editor, it creates the context from the editor's input
-	 * and selection.
-	 * <p>
-	 * Subclasses may extend or reimplement.
-	 * 
-	 * @return the <code>ShowInContext</code> to show or <code>null</code>
-	 */
-	private ShowInContext getContext(IWorkbenchPart sourcePart) {
-		IShowInSource source = getShowInSource(sourcePart);
-		if (source != null) {
-			ShowInContext context = source.getShowInContext();
-			if (context != null) {
-				return context;
-			}
-		} else if (sourcePart instanceof IEditorPart) {
-			Object input = ((IEditorPart) sourcePart).getEditorInput();
-			ISelectionProvider sp = sourcePart.getSite().getSelectionProvider();
-			ISelection sel = sp == null ? null : sp.getSelection();
-			return new ShowInContext(input, sel);
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the view descriptors to show in the dialog.
-	 */
-	private IViewDescriptor[] getViewDescriptors(IWorkbenchPart sourcePart) {
-		String srcId = sourcePart.getSite().getId();
-		ArrayList ids = getShowInPartIds(sourcePart);
-		ArrayList descs = new ArrayList();
-		IViewRegistry reg = WorkbenchPlugin.getDefault().getViewRegistry();
-		for (Iterator i = ids.iterator(); i.hasNext();) {
-			String id = (String) i.next();
-			if (!id.equals(srcId)) {
-				IViewDescriptor desc = reg.find(id);
-				if (desc != null) {
-					descs.add(desc);
-				}
-			}
-		}
-		return (IViewDescriptor[]) descs.toArray(new IViewDescriptor[descs
-				.size()]);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.menus.IWorkbenchContribution#initialize(org.eclipse.ui.services.IServiceLocator)
-	 */
-	public void initialize(IServiceLocator serviceLocator) {
-		locator = serviceLocator;
-	}
-
-	protected IWorkbenchWindow getWindow() {
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-
-		if (window == null) {
-			window = wls.getWorkbenchWindow();
-		}
-		if (window == null) {
-			IWorkbench wb = wls.getWorkbench();
-			if (wb != null) {
-				window = wb.getActiveWorkbenchWindow();
-			}
-		}
-		return window;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.ContributionItem#dispose()
-	 */
-	public void dispose() {
-		if (currentManager != null && currentManager.getSize() > 0) {
-			IMenuService service = (IMenuService) locator
-					.getService(IMenuService.class);
-			if (service != null) {
-				service.releaseContributions(currentManager);
-			}
-			currentManager.removeAll();
-			currentManager = null;
-		}
-		if (getParent() instanceof MenuManager) {
-			((MenuManager) getParent()).removeMenuListener(menuListener);
-		}
-		actions.clear();
-		window=null;
-		locator=null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java
deleted file mode 100644
index 8456c8b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowPartPaneMenuHandler.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Show the menu on top of the icon in the view or editor label.
- * <p>
- * Replacement for ShowPartPaneMenuAction
- * </p>
- * 
- * @since 3.3
- */
-public class ShowPartPaneMenuHandler extends AbstractEvaluationHandler {
-
-	private Expression enabledWhen;
-
-	public ShowPartPaneMenuHandler() {
-		registerEnablement();
-	}
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-
-		IWorkbenchPart part = HandlerUtil.getActivePart(event);
-		if (part != null) {
-			IWorkbenchPartSite site = part.getSite();
-			if (site instanceof PartSite) {
-				PartPane pane = ((PartSite) site).getPane();
-				pane.showSystemMenu();
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.AbstractEvaluationHandler#getEnabledWhenExpression()
-	 */
-	protected Expression getEnabledWhenExpression() {
-		if (enabledWhen == null) {
-			enabledWhen = new Expression() {
-				public EvaluationResult evaluate(IEvaluationContext context)
-						throws CoreException {
-					IWorkbenchPart part = InternalHandlerUtil
-							.getActivePart(context);
-
-					if (part != null) {
-						return EvaluationResult.TRUE;
-					}
-					return EvaluationResult.FALSE;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.expressions.Expression#collectExpressionInfo(org.eclipse.core.expressions.ExpressionInfo)
-				 */
-				public void collectExpressionInfo(ExpressionInfo info) {
-					info.addVariableNameAccess(ISources.ACTIVE_PART_NAME);
-				}
-			};
-		}
-		return enabledWhen;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewAction.java
deleted file mode 100644
index 7979e7d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewAction.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.registry.ViewDescriptor;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Show a View.
- */
-public class ShowViewAction extends Action implements IPluginContribution {
-    private IWorkbenchWindow window;
-
-    private IViewDescriptor desc;
-    private boolean makeFast = false;
-    
-    
-    /**
-     * ShowViewAction constructor comment.
-     */
-    protected ShowViewAction(IWorkbenchWindow window, IViewDescriptor desc, boolean makeFast) {
-        super(""); //$NON-NLS-1$
-        
-        // TODO: is this wart still needed? 
-        String accel = desc instanceof ViewDescriptor ? ((ViewDescriptor) desc)
-				.getAccelerator() : null;
-        String label = desc.getLabel();
-        setText(accel == null ? label : label + "@" + accel); //$NON-NLS-1$
-        setImageDescriptor(desc.getImageDescriptor());
-        setToolTipText(label);
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SHOW_VIEW_ACTION);
-        this.window = window;
-        this.desc = desc;
-        this.makeFast = makeFast;
-    }
-
-    /**
-     * Implementation of method defined on <code>IAction</code>.
-     */
-    public void run() {
-        IWorkbenchPage page = window.getActivePage();
-        if (page != null) {
-            try {
-                if (makeFast) {
-                    WorkbenchPage wp = (WorkbenchPage) page;
-                	Perspective persp = wp.getActivePerspective();
-
-                    // If we're making a fast view then use the new mechanism directly
-                    boolean useNewMinMax = Perspective.useNewMinMax(persp);
-                    if (useNewMinMax) {
-                    	IViewReference ref = persp.getViewReference(desc.getId(), null);
-                    	if (ref == null)
-                    		return;
-
-                    	persp.getFastViewManager().addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, ref, true);
-                		wp.activate(ref.getPart(true));
-                		
-                		return;
-                    }
-                    
-                    IViewReference ref = wp.findViewReference(desc.getId());
-                    
-                    if (ref == null) {
-                        IViewPart part = page.showView(desc.getId(), null, IWorkbenchPage.VIEW_CREATE);
-                        ref = (IViewReference)wp.getReference(part); 
-                    }
-                    
-                    if (!wp.isFastView(ref) && persp != null) {
-                   		persp.getFastViewManager().addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, ref, true);
-                    }
-                    wp.activate(ref.getPart(true));
-                } else {
-                    page.showView(desc.getId());
-                }
-            } catch (PartInitException e) {
-                ErrorDialog.openError(window.getShell(), WorkbenchMessages.ShowView_errorTitle,
-                        e.getMessage(), e.getStatus());
-            }
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return desc.getId();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return desc instanceof IPluginContribution ? ((IPluginContribution) desc)
-                .getPluginId()
-                : null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java
deleted file mode 100644
index 7d41dfc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.Parameterization;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.menus.CommandContributionItem;
-import org.eclipse.ui.menus.CommandContributionItemParameter;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * A <code>ShowViewMenu</code> is used to populate a menu manager with Show
- * View actions. The visible views are determined by user preference from the
- * Perspective Customize dialog.
- */
-public class ShowViewMenu extends ContributionItem {
-	public static final String SHOW_VIEW_ID = "org.eclipse.ui.views.showView"; //$NON-NLS-1$
-	public static final String VIEW_ID_PARM = "org.eclipse.ui.views.showView.viewId"; //$NON-NLS-1$
-	private static final String PARAMETER_MAKE_FAST = "org.eclipse.ui.views.showView.makeFast"; //$NON-NLS-1$
-
-	private IWorkbenchWindow window;
-
-	private static final String NO_TARGETS_MSG = WorkbenchMessages.Workbench_showInNoTargets;
-
-	private Comparator actionComparator = new Comparator() {
-		public int compare(Object o1, Object o2) {
-			if (collator == null) {
-				collator = Collator.getInstance();
-			}
-			CommandContributionItemParameter a1 = (CommandContributionItemParameter) o1;
-			CommandContributionItemParameter a2 = (CommandContributionItemParameter) o2;
-			return collator.compare(a1.label, a2.label);
-		}
-	};
-
-	private Action showDlgAction;
-
-	private Map actions = new HashMap(21);
-
-	// Maps pages to a list of opened views
-	private Map openedViews = new HashMap();
-
-	protected boolean dirty = true;
-
-	private IMenuListener menuListener = new IMenuListener() {
-		public void menuAboutToShow(IMenuManager manager) {
-			manager.markDirty();
-			dirty = true;
-		}
-	};
-	private boolean makeFast;
-
-	private static Collator collator;
-
-
-	/**
-	 * Creates a Show View menu.
-	 * 
-	 * @param window
-	 *            the window containing the menu
-	 * @param id
-	 *            the id
-	 */
-	public ShowViewMenu(IWorkbenchWindow window, String id) {
-		this(window, id, false);
-	}
-
-	/**
-	 * Creates a Show View menu.
-	 * 
-	 * @param window
-	 *            the window containing the menu
-	 * @param id
-	 *            the id
-	 * @param makeFast use the fact view variant of the command
-	 */
-	public ShowViewMenu(IWorkbenchWindow window, String id,
-			final boolean makeFast) {
-		super(id);
-		this.window = window;
-		this.makeFast = makeFast;
-		final IHandlerService handlerService = (IHandlerService) window
-				.getService(IHandlerService.class);
-		final ICommandService commandService = (ICommandService) window
-				.getService(ICommandService.class);
-		final ParameterizedCommand cmd = getCommand(commandService, makeFast);
-
-		showDlgAction = new Action(WorkbenchMessages.ShowView_title) {
-			public void run() {
-				try {
-					handlerService.executeCommand(cmd, null);
-				} catch (final ExecutionException e) {
-					// Do nothing.
-				} catch (NotDefinedException e) {
-					// Do nothing.
-				} catch (NotEnabledException e) {
-					// Do nothing.
-				} catch (NotHandledException e) {
-					// Do nothing.
-				}
-			}
-		};
-
-		window.getWorkbench().getHelpSystem().setHelp(showDlgAction,
-				IWorkbenchHelpContextIds.SHOW_VIEW_OTHER_ACTION);
-		// indicate that a show views submenu has been created
-		((WorkbenchWindow) window)
-				.addSubmenu(WorkbenchWindow.SHOW_VIEW_SUBMENU);
-
-		showDlgAction.setActionDefinitionId(SHOW_VIEW_ID);
-		
-	}
-
-	public boolean isDirty() {
-		return dirty;
-	}
-
-	/**
-	 * Overridden to always return true and force dynamic menu building.
-	 */
-	public boolean isDynamic() {
-		return true;
-	}
-
-	/**
-	 * Fills the menu with Show View actions.
-	 */
-	private void fillMenu(IMenuManager innerMgr) {
-		// Remove all.
-		innerMgr.removeAll();
-
-		// If no page disable all.
-		IWorkbenchPage page = window.getActivePage();
-		if (page == null) {
-			return;
-		}
-
-		// If no active perspective disable all
-		if (page.getPerspective() == null) {
-			return;
-		}
-
-		// Get visible actions.
-		List viewIds = Arrays.asList(page.getShowViewShortcuts());
-
-		// add all open views
-		viewIds = addOpenedViews(page, viewIds);
-
-		List actions = new ArrayList(viewIds.size());
-		for (Iterator i = viewIds.iterator(); i.hasNext();) {
-			String id = (String) i.next();
-			if (id.equals(IIntroConstants.INTRO_VIEW_ID)) {
-				continue;
-			}
-			CommandContributionItemParameter item = getItem(id);
-			if (item != null) {
-				actions.add(item);
-			}
-		}
-		Collections.sort(actions, actionComparator);
-		for (Iterator i = actions.iterator(); i.hasNext();) {
-			CommandContributionItem item = new CommandContributionItem((CommandContributionItemParameter) i.next());
-			if (WorkbenchActivityHelper.filterItem(item)) {
-				item.dispose();
-				continue;
-			}
-			innerMgr.add(item);
-		}
-
-		// Add Other ..
-		innerMgr.add(new Separator());
-		innerMgr.add(showDlgAction);
-	}
-
-	private CommandContributionItemParameter getItem(String viewId) {
-		IViewRegistry reg = WorkbenchPlugin.getDefault().getViewRegistry();
-		IViewDescriptor desc = reg.find(viewId);
-		if (desc==null) {
-			return null;
-		}
-		String label = desc.getLabel();
-		
-		CommandContributionItemParameter parms = new CommandContributionItemParameter(
-				window, viewId, SHOW_VIEW_ID,
-				CommandContributionItem.STYLE_PUSH);
-		parms.label = label;
-		parms.icon = desc.getImageDescriptor();
-		parms.parameters = new HashMap();
-
-		parms.parameters.put(VIEW_ID_PARM, viewId);
-		if (makeFast) {
-			parms.parameters.put(PARAMETER_MAKE_FAST, "true"); //$NON-NLS-1$
-		}
-		return parms;
-	}
-
-	private List addOpenedViews(IWorkbenchPage page, List actions) {
-		ArrayList views = getParts(page);
-		ArrayList result = new ArrayList(views.size() + actions.size());
-
-		for (int i = 0; i < actions.size(); i++) {
-			Object element = actions.get(i);
-			if (result.indexOf(element) < 0) {
-				result.add(element);
-			}
-		}
-		for (int i = 0; i < views.size(); i++) {
-			Object element = views.get(i);
-			if (result.indexOf(element) < 0) {
-				result.add(element);
-			}
-		}
-		return result;
-	}
-
-	private ArrayList getParts(IWorkbenchPage page) {
-		ArrayList parts = (ArrayList) openedViews.get(page);
-		if (parts == null) {
-			parts = new ArrayList();
-			openedViews.put(page, parts);
-		}
-		return parts;
-	}
-
-	public void fill(Menu menu, int index) {
-		if (getParent() instanceof MenuManager) {
-			((MenuManager) getParent()).addMenuListener(menuListener);
-		}
-
-		if (!dirty) {
-			return;
-		}
-
-		MenuManager manager = new MenuManager();
-		fillMenu(manager);
-		IContributionItem items[] = manager.getItems();
-		if (items.length == 0) {
-			MenuItem item = new MenuItem(menu, SWT.NONE, index++);
-			item.setText(NO_TARGETS_MSG);
-			item.setEnabled(false);
-		} else {
-			for (int i = 0; i < items.length; i++) {
-				items[i].fill(menu, index++);
-			}
-		}
-		dirty = false;
-	}
-
-	// for dynamic UI
-	protected void removeAction(String viewId) {
-		actions.remove(viewId);
-	}
-
-	/**
-	 * @param commandService
-	 * @param makeFast
-	 */
-	private ParameterizedCommand getCommand(ICommandService commandService,
-			final boolean makeFast) {
-		Command c = commandService.getCommand(SHOW_VIEW_ID);
-		Parameterization[] parms = null;
-		if (makeFast) {
-			try {
-				IParameter parmDef = c.getParameter(PARAMETER_MAKE_FAST);
-				parms = new Parameterization[] { new Parameterization(parmDef,
-						"true") //$NON-NLS-1$
-				};
-			} catch (NotDefinedException e) {
-				// this should never happen
-			}
-		}
-		return new ParameterizedCommand(c, parms);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenuHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenuHandler.java
deleted file mode 100644
index a6afc98..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenuHandler.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Shows the View Menu
- * <p>
- * Replacement for: ShowViewMenuAction
- * </p>
- * 
- * @since 3.3
- * 
- */
-public class ShowViewMenuHandler extends AbstractEvaluationHandler {
-
-	private Expression enabledWhen;
-
-	public ShowViewMenuHandler() {
-		registerEnablement();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-
-		IWorkbenchPart part = HandlerUtil.getActivePart(event);
-		if (part != null) {
-			IWorkbenchPartSite site = part.getSite();
-			if (site instanceof PartSite) {
-				PartPane pane = ((PartSite) site).getPane();
-				pane.showPaneMenu();
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.AbstractEvaluationHandler#getEnabledWhenExpression()
-	 */
-	protected Expression getEnabledWhenExpression() {
-		// TODO Auto-generated method stub
-		if (enabledWhen == null) {
-			enabledWhen = new Expression() {
-				public EvaluationResult evaluate(IEvaluationContext context)
-						throws CoreException {
-					IWorkbenchPart part = InternalHandlerUtil
-							.getActivePart(context);
-					if (part != null) {
-						PartPane pane = ((PartSite) part.getSite()).getPane();
-						if ((pane instanceof ViewPane)
-								&& ((ViewPane) pane).hasViewMenu()) {
-							return EvaluationResult.TRUE;
-						}
-					}
-					return EvaluationResult.FALSE;
-				}
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.expressions.Expression#collectExpressionInfo(org.eclipse.core.expressions.ExpressionInfo)
-				 */
-				public void collectExpressionInfo(ExpressionInfo info) {
-					info.addVariableNameAccess(ISources.ACTIVE_PART_NAME);
-				}
-			};
-		}
-		return enabledWhen;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePageService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePageService.java
deleted file mode 100644
index b0c7bf9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePageService.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IPageService;
-import org.eclipse.ui.IPerspectiveListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * @since 3.4
- * 
- */
-public class SlavePageService implements IPageService, IDisposable {
-
-	private IPageService parent;
-	private ListenerList pageListeners = new ListenerList(ListenerList.IDENTITY);
-	private ListenerList perspectiveListeners = new ListenerList(
-			ListenerList.IDENTITY);
-
-	public SlavePageService(IPageService parent) {
-		if (parent == null) {
-			throw new IllegalArgumentException(
-					"Parent IPageService cannot be null"); //$NON-NLS-1$
-		}
-		this.parent = parent;
-	}
-
-	public void addPageListener(IPageListener listener) {
-		pageListeners.add(listener);
-		parent.addPageListener(listener);
-	}
-
-	public void addPerspectiveListener(IPerspectiveListener listener) {
-		perspectiveListeners.add(listener);
-		parent.addPerspectiveListener(listener);
-	}
-
-	public IWorkbenchPage getActivePage() {
-		return parent.getActivePage();
-	}
-
-	public void removePageListener(IPageListener listener) {
-		pageListeners.remove(listener);
-		parent.removePageListener(listener);
-	}
-
-	public void removePerspectiveListener(IPerspectiveListener listener) {
-		perspectiveListeners.remove(listener);
-		parent.removePerspectiveListener(listener);
-	}
-
-	public void dispose() {
-		Object[] listeners = pageListeners.getListeners();
-		
-		for(int i = 0; i < listeners.length; i++) {
-			parent.removePageListener((IPageListener) listeners[i]);
-		}
-		pageListeners.clear();
-		
-		listeners = perspectiveListeners.getListeners();
-		for(int i = 0; i < listeners.length; i++) {
-			parent.removePerspectiveListener((IPerspectiveListener) listeners[i]);
-		}
-		perspectiveListeners.clear();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePartService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePartService.java
deleted file mode 100644
index 8e29b88..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlavePartService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * A part service which delegates all responsibility to the parent service. The
- * slave service is only responsible for disposing any locally activated
- * listeners when it is disposed.
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.4
- * 
- */
-public class SlavePartService implements IPartService, IDisposable {
-
-	/**
-	 * The parent part service to which all listeners are routed. This value is
-	 * never <code>null</code>.
-	 */
-	private IPartService parent;
-
-	private ListenerList listeners = new ListenerList(ListenerList.IDENTITY);
-
-	/**
-	 * Constructs a new instance.
-	 * 
-	 * @param parentPartService
-	 *            The parent part service for this slave. Never
-	 *            <code>null</code>.
-	 */
-	public SlavePartService(IPartService parentPartService) {
-		if (parentPartService == null) {
-			throw new IllegalArgumentException(
-					"The parent part service cannot be null"); //$NON-NLS-1$
-		}
-		this.parent = parentPartService;
-	}
-
-	public void addPartListener(IPartListener listener) {
-		listeners.add(listener);
-		parent.addPartListener(listener);
-	}
-
-	public void addPartListener(IPartListener2 listener) {
-		listeners.add(listener);
-		parent.addPartListener(listener);
-	}
-
-	public IWorkbenchPart getActivePart() {
-		return parent.getActivePart();
-	}
-
-	public IWorkbenchPartReference getActivePartReference() {
-		return parent.getActivePartReference();
-	}
-
-	public void removePartListener(IPartListener listener) {
-		listeners.remove(listener);
-		parent.removePartListener(listener);
-	}
-
-	public void removePartListener(IPartListener2 listener) {
-		listeners.remove(listener);
-		parent.removePartListener(listener);
-	}
-
-	public void dispose() {
-		Object list[] = listeners.getListeners();
-		for (int i = 0; i < list.length; i++) {
-			Object obj = list[i];
-			if (obj instanceof IPartListener) {
-				parent.removePartListener((IPartListener) obj);
-			}
-			if (obj instanceof IPartListener2) {
-				parent.removePartListener((IPartListener2) obj);
-			}
-		}
-		listeners.clear();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlaveSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlaveSelectionService.java
deleted file mode 100644
index 2f5f280..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SlaveSelectionService.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * @since 3.4
- * 
- */
-public class SlaveSelectionService implements ISelectionService, IDisposable {
-
-	private ListenerList postListeners = new ListenerList(ListenerList.IDENTITY);
-	private ListenerList listeners = new ListenerList(ListenerList.IDENTITY);
-	private Map listenersToPartId = new HashMap();
-	private Map postListenersToPartId = new HashMap();
-
-	private ISelectionService parentSelectionService;
-
-	/**
-	 * @param parentSelectionService
-	 */
-	public SlaveSelectionService(ISelectionService parentSelectionService) {
-		if (parentSelectionService == null) {
-			throw new IllegalArgumentException(
-					"The parent selection service cannot be null"); //$NON-NLS-1$
-		}
-		this.parentSelectionService = parentSelectionService;
-	}
-
-	public void addPostSelectionListener(ISelectionListener listener) {
-		postListeners.add(listener);
-		parentSelectionService.addPostSelectionListener(listener);
-	}
-
-	public void addPostSelectionListener(String partId,
-			ISelectionListener listener) {
-		listenersToPartId.put(listener, partId);
-		parentSelectionService.addPostSelectionListener(partId, listener);
-	}
-
-	public void addSelectionListener(ISelectionListener listener) {
-		listeners.add(listener);
-		parentSelectionService.addSelectionListener(listener);
-	}
-
-	public void addSelectionListener(String partId, ISelectionListener listener) {
-		postListenersToPartId.put(listener, partId);
-		parentSelectionService.addPostSelectionListener(partId, listener);
-	}
-
-	public ISelection getSelection() {
-		return parentSelectionService.getSelection();
-	}
-
-	public ISelection getSelection(String partId) {
-		return parentSelectionService.getSelection(partId);
-	}
-
-	public void removePostSelectionListener(ISelectionListener listener) {
-		postListeners.remove(listener);
-		parentSelectionService.removePostSelectionListener(listener);
-	}
-
-	public void removePostSelectionListener(String partId,
-			ISelectionListener listener) {
-		postListenersToPartId.remove(listener);
-		parentSelectionService.removePostSelectionListener(partId, listener);
-	}
-
-	public void removeSelectionListener(ISelectionListener listener) {
-		listeners.remove(listener);
-		parentSelectionService.removeSelectionListener(listener);
-	}
-
-	public void removeSelectionListener(String partId,
-			ISelectionListener listener) {
-		listenersToPartId.remove(listener);
-		parentSelectionService.removeSelectionListener(partId, listener);
-	}
-
-	public void dispose() {
-		Object list[] = listeners.getListeners();
-
-		for (int i = 0; i < list.length; i++) {
-			parentSelectionService
-					.removeSelectionListener((ISelectionListener) list[i]);
-		}
-		listeners.clear();
-
-		list = postListeners.getListeners();
-		for (int i = 0; i < list.length; i++) {
-			parentSelectionService
-					.removePostSelectionListener((ISelectionListener) list[i]);
-		}
-		postListeners.clear();
-
-		Iterator i = listenersToPartId.keySet().iterator();
-		while (i.hasNext()) {
-			Object listener = i.next();
-			parentSelectionService.removeSelectionListener(
-					(String) listenersToPartId.get(listener),
-					(ISelectionListener) listener);
-		}
-		listenersToPartId.clear();
-
-		i = postListenersToPartId.keySet().iterator();
-		while (i.hasNext()) {
-			Object listener = i.next();
-			parentSelectionService.removePostSelectionListener(
-					(String) postListenersToPartId.get(listener),
-					(ISelectionListener) listener);
-		}
-		postListenersToPartId.clear();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StartupThreading.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StartupThreading.java
deleted file mode 100644
index c9276fc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StartupThreading.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.misc.StatusUtil;
-
-/**
- * @since 3.3
- * 
- */
-public final class StartupThreading {
-
-	static Workbench workbench;
-
-	public static abstract class StartupRunnable implements Runnable {
-		private Throwable throwable;
-
-		public final void run() {
-			try {
-				runWithException();
-			} catch (Throwable t) {
-				this.throwable = t;
-			}
-		}
-
-		public abstract void runWithException() throws Throwable;
-
-		public Throwable getThrowable() {
-			return throwable;
-		}
-	}
-
-	static void setWorkbench(Workbench wb) {
-		workbench = wb;
-	}
-
-	public static void runWithWorkbenchExceptions(StartupRunnable r)
-			throws WorkbenchException {
-		workbench.getDisplay().syncExec(r);
-		Throwable throwable = r.getThrowable();
-		if (throwable != null) {
-			if (throwable instanceof Error) {
-				throw (Error) throwable;
-			} else if (throwable instanceof RuntimeException) {
-				throw (RuntimeException) throwable;
-			} else if (throwable instanceof WorkbenchException) {
-				throw (WorkbenchException) throwable;
-			} else {
-				throw new WorkbenchException(StatusUtil.newStatus(
-						WorkbenchPlugin.PI_WORKBENCH, throwable));
-			}
-		}
-	}
-
-	public static void runWithPartInitExceptions(StartupRunnable r)
-			throws PartInitException {
-		workbench.getDisplay().syncExec(r);
-		Throwable throwable = r.getThrowable();
-		if (throwable != null) {
-			if (throwable instanceof Error) {
-				throw (Error) throwable;
-			} else if (throwable instanceof RuntimeException) {
-				throw (RuntimeException) throwable;
-			} else if (throwable instanceof WorkbenchException) {
-				throw (PartInitException) throwable;
-			} else {
-				throw new PartInitException(StatusUtil.newStatus(
-						WorkbenchPlugin.PI_WORKBENCH, throwable));
-			}
-		}
-	}
-
-	public static void runWithThrowable(StartupRunnable r) throws Throwable {
-		workbench.getDisplay().syncExec(r);
-		Throwable throwable = r.getThrowable();
-		if (throwable != null) {
-			throw throwable;
-		}
-	}
-
-	public static void runWithoutExceptions(StartupRunnable r)
-			throws RuntimeException {
-		workbench.getDisplay().syncExec(r);
-		Throwable throwable = r.getThrowable();
-		if (throwable != null) {
-			if (throwable instanceof Error) {
-				throw (Error) throwable;
-			} else if (throwable instanceof RuntimeException) {
-				throw (RuntimeException) throwable;
-			} else {
-				throw new RuntimeException(throwable);
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager.java
deleted file mode 100644
index e961b1e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.Set;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.views.IStickyViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * @since 3.3
- * 
- */
-public class StickyViewManager implements IStickyViewManager {
-	
-	private IWorkbenchPage page;
-	
-	public StickyViewManager(IWorkbenchPage page) {
-		this.page = page;
-	}
-
-	
-	public static IStickyViewManager getInstance(IWorkbenchPage page) {
-		IStickyViewManager stickyViewMan;
-		IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
-		boolean enable32Behavior = preferenceStore
-				.getBoolean(IWorkbenchPreferenceConstants.ENABLE_32_STICKY_CLOSE_BEHAVIOR);
-		if (enable32Behavior)
-			stickyViewMan = new StickyViewManager32(page);
-		else 
-			stickyViewMan = new StickyViewManager(page);
-		
-		return stickyViewMan;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IStickyViewManager#add(java.lang.String,
-	 *      java.util.Set)
-	 */
-	public void add(String perspectiveId, Set stickyViewSet) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IStickyViewManager#clear()
-	 */
-	public void clear() {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IStickyViewManager#remove(java.lang.String)
-	 */
-	public void remove(String perspectiveId) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IStickyViewManager#restore(org.eclipse.ui.IMemento)
-	 */
-	public void restore(IMemento memento) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IStickyViewManager#save(org.eclipse.ui.IMemento)
-	 */
-	public void save(IMemento memento) {
-		// do nothing
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IStickyViewManager#update(org.eclipse.ui.internal.Perspective,
-	 *      org.eclipse.ui.internal.Perspective)
-	 */
-	public void update(Perspective oldPersp, Perspective newPersp) {
-		if (oldPersp == null || newPersp == null) {
-			return;
-		}
-		IViewRegistry viewReg = WorkbenchPlugin.getDefault().getViewRegistry();
-		IStickyViewDescriptor[] stickyDescs = viewReg.getStickyViews();
-		for (int i = 0; i < stickyDescs.length; i++) {
-			final String viewId = stickyDescs[i].getId();
-			try {
-				// show a sticky view if it was in the last perspective and
-				// hasn't already been activated in this one
-				if (oldPersp.findView(viewId) != null) {
-					page.showView(viewId, null, IWorkbenchPage.VIEW_CREATE);
-				}
-				// remove a view if it's sticky and its not visible in the old
-				// perspective
-				else if (newPersp.findView(viewId) != null
-						&& oldPersp.findView(viewId) == null) {
-					page.hideView(newPersp.findView(viewId));
-				}
-			} catch (PartInitException e) {
-				WorkbenchPlugin
-						.log(
-								"Could not open view :" + viewId, new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR, "Could not open view :" + viewId, e)); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager32.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager32.java
deleted file mode 100644
index b6e7b74..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/StickyViewManager32.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.views.IStickyViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * @since 3.3
- *
- */
-class StickyViewManager32 implements IStickyViewManager {
-
-	// a mapping of perspectives to a set of stickyviews that have been activated in that perspective.
-	// this map is persisted across sessions
-	private Map stickyPerspectives = new HashMap(7);
-	
-	private IWorkbenchPage page;
-	
-	public StickyViewManager32(IWorkbenchPage page) {
-		this.page = page;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IStickyViewManager#remove(java.lang.String)
-	 */
-	public void remove(String pespectiveId) {
-		stickyPerspectives.remove(pespectiveId);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IStickyViewManager#add(java.lang.String, java.util.Set)
-	 */
-	public void add(String pespectiveId, Set stickyViewList) {
-		stickyPerspectives.put(pespectiveId, stickyViewList);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IStickyViewManager#clear()
-	 */
-	public void clear() {
-		stickyPerspectives.clear();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IStickyViewManager#update(org.eclipse.ui.IWorkbenchPage, org.eclipse.ui.internal.Perspective, org.eclipse.ui.internal.Perspective)
-	 */
-	public void update(Perspective oldPersp, Perspective newPersp) {
-		if (newPersp != null && oldPersp != null) {
-			Set activatedStickyViewsInThisPerspective = (Set) stickyPerspectives
-					.get(newPersp.getDesc().getId());
-			if (activatedStickyViewsInThisPerspective == null) {
-				activatedStickyViewsInThisPerspective = new HashSet(7);
-				stickyPerspectives.put(newPersp.getDesc().getId(),
-						activatedStickyViewsInThisPerspective);
-			}
-			IViewRegistry viewReg = WorkbenchPlugin.getDefault()
-					.getViewRegistry();
-			IStickyViewDescriptor[] stickyDescs = viewReg.getStickyViews();
-			for (int i = 0; i < stickyDescs.length; i++) {
-				final String viewId = stickyDescs[i].getId();
-				try {
-					// show a sticky view if it was in the last perspective and hasn't already been activated in this one
-					if (oldPersp.findView(viewId) != null
-							&& !activatedStickyViewsInThisPerspective
-									.contains(viewId)) {
-						page.showView(viewId, null, IWorkbenchPage.VIEW_CREATE);
-						activatedStickyViewsInThisPerspective.add(viewId);
-					}
-				} catch (PartInitException e) {
-					WorkbenchPlugin
-							.log(
-									"Could not open view :" + viewId, new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR, "Could not open view :" + viewId, e)); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		}
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IStickyViewManager#save(org.eclipse.ui.IMemento)
-	 */
-	public void save(IMemento memento) {
-		IMemento stickyState = memento.createChild(IWorkbenchConstants.TAG_STICKY_STATE);
-		Iterator itr = stickyPerspectives.entrySet().iterator();
-		while (itr.hasNext()) {
-			Map.Entry entry = (Map.Entry) itr.next();
-			String perspectiveId = (String) entry.getKey();
-			Set activatedViewIds = (Set) entry.getValue();
-			IMemento perspectiveState = stickyState.createChild(
-					IWorkbenchConstants.TAG_PERSPECTIVE, perspectiveId);
-			for (Iterator i = activatedViewIds.iterator(); i.hasNext();) {
-				String viewId = (String) i.next();
-				perspectiveState.createChild(IWorkbenchConstants.TAG_VIEW,
-						viewId);
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IStickyViewManager#restore(org.eclipse.ui.IMemento)
-	 */
-	public void restore(IMemento memento) {
-		// restore the sticky activation state
-		IMemento stickyState = memento
-				.getChild(IWorkbenchConstants.TAG_STICKY_STATE);
-
-		if (stickyState != null) {
-			IMemento[] stickyPerspMems = stickyState
-					.getChildren(IWorkbenchConstants.TAG_PERSPECTIVE);
-			for (int i = 0; i < stickyPerspMems.length; i++) {
-				String perspectiveId = stickyPerspMems[i].getID();
-				Set viewState = new HashSet(7);
-				stickyPerspectives.put(perspectiveId, viewState);
-				IMemento[] viewStateMementos = stickyPerspMems[i]
-						.getChildren(IWorkbenchConstants.TAG_VIEW);
-				for (int j = 0; j < viewStateMementos.length; j++) {
-					viewState.add(viewStateMementos[j].getID());
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java
deleted file mode 100644
index 973f7ca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * A dynamic menu item to switch to other opened workbench windows.
- */
-public class SwitchToWindowMenu extends ContributionItem {
-    private static final int MAX_TEXT_LENGTH = 40;
-
-    private IWorkbenchWindow workbenchWindow;
-
-    private boolean showSeparator;
-
-    private boolean dirty = true;
-
-    private IMenuListener menuListener = new IMenuListener() {
-        public void menuAboutToShow(IMenuManager manager) {
-            manager.markDirty();
-            dirty = true;
-        }
-    };
-
-    /**
-     * Creates a new instance of this class.
-     * 
-     * @param window the workbench window this action applies to
-     * @param showSeparator whether to add a separator in the menu
-     */
-    public SwitchToWindowMenu(IWorkbenchWindow window, String id,
-            boolean showSeparator) {
-        super(id);
-        this.workbenchWindow = window;
-        this.showSeparator = showSeparator;
-    }
-
-    /**
-     * Returns the text for a window. This may be truncated to fit
-     * within the MAX_TEXT_LENGTH.
-     */
-    private String calcText(int number, IWorkbenchWindow window) {
-        String suffix = window.getShell().getText();
-        if (suffix == null) {
-			return null;
-		}
-
-        StringBuffer sb = new StringBuffer();
-        if (number < 10) {
-			sb.append('&');
-		}
-        sb.append(number);
-        sb.append(' ');
-        if (suffix.length() <= MAX_TEXT_LENGTH) {
-            sb.append(suffix);
-        } else {
-            sb.append(suffix.substring(0, MAX_TEXT_LENGTH));
-            sb.append("..."); //$NON-NLS-1$
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Fills the given menu with menu items for all
-     * opened workbench windows.
-     */
-    public void fill(Menu menu, int index) {
-
-        // Get workbench windows.
-        IWorkbench workbench = workbenchWindow.getWorkbench();
-        IWorkbenchWindow[] array = workbench.getWorkbenchWindows();
-        // avoid showing the separator and list for 0 or 1 items
-        if (array.length < 2) {
-			return;
-		}
-
-        if (getParent() instanceof MenuManager) {
-			((MenuManager) getParent()).addMenuListener(menuListener);
-		}
-
-        if (!dirty) {
-			return;
-		}
-
-        // Add separator.
-        if (showSeparator) {
-            new MenuItem(menu, SWT.SEPARATOR, index);
-            ++index;
-        }
-
-        // Add one item for each window.
-        int count = 1;
-        for (int i = 0; i < array.length; i++) {
-            final IWorkbenchWindow window = array[i];
-            // can encounter disposed shells if this update is in response to a shell closing
-            if (!window.getShell().isDisposed()) {
-                String name = calcText(count, window);
-                if (name != null) {
-                    MenuItem mi = new MenuItem(menu, SWT.RADIO, index);
-                    index++;
-                    count++;
-                    mi.setText(name);
-                    mi.addSelectionListener(new SelectionAdapter() {
-                        public void widgetSelected(SelectionEvent e) {
-                            Shell windowShell = window.getShell();
-                            if (windowShell.getMinimized()) {
-								windowShell.setMinimized(false);
-							}
-                            windowShell.setActive();
-                            windowShell.moveAbove(null);
-                        }
-                    });
-                    mi.setSelection(window == workbenchWindow);
-                }
-            }
-        }
-        dirty = false;
-    }
-
-    /**
-     * Overridden to always return true and force dynamic menu building.
-     */
-    public boolean isDirty() {
-        return dirty;
-    }
-
-    /**
-     * Overridden to always return true and force dynamic menu building.
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java
deleted file mode 100644
index 7ead7a9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ToggleEditorsVisibilityAction.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Hides or shows the editor area within the current
- * perspective of the workbench page.
- */
-public class ToggleEditorsVisibilityAction extends PerspectiveAction implements
-        IPerspectiveListener {
-
-    /* (non-Javadoc)
-     * Method declared on IPerspectiveListener
-     */
-    public void perspectiveActivated(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective) {
-        if (page.isEditorAreaVisible()) {
-            setText(WorkbenchMessages.ToggleEditor_hideEditors); 
-        } else {
-            setText(WorkbenchMessages.ToggleEditor_showEditors);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPerspectiveListener
-     */
-    public void perspectiveChanged(IWorkbenchPage page,
-            IPerspectiveDescriptor perspective, String changeId) {
-        if (changeId == IWorkbenchPage.CHANGE_RESET
-                || changeId == IWorkbenchPage.CHANGE_EDITOR_AREA_HIDE
-                || changeId == IWorkbenchPage.CHANGE_EDITOR_AREA_SHOW) {
-            if (page.isEditorAreaVisible()) {
-                setText(WorkbenchMessages.ToggleEditor_hideEditors); 
-            } else {
-                setText(WorkbenchMessages.ToggleEditor_showEditors); 
-            }
-        }
-    }
-
-    /**
-     * Creates a new <code>ToggleEditorsVisibilityAction</code>
-     * 
-     * @param window the window
-     */
-    public ToggleEditorsVisibilityAction(IWorkbenchWindow window) {
-        super(window);
-        setText(WorkbenchMessages.ToggleEditor_hideEditors);
-        setActionDefinitionId("org.eclipse.ui.window.hideShowEditors"); //$NON-NLS-1$
-        // @issue missing action id
-        setToolTipText(WorkbenchMessages.ToggleEditor_toolTip);
-        window.getWorkbench().getHelpSystem().setHelp(this,
-                IWorkbenchHelpContextIds.TOGGLE_EDITORS_VISIBILITY_ACTION);
-        window.addPerspectiveListener(this);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PerspectiveAction.
-     */
-    protected void run(IWorkbenchPage page, IPerspectiveDescriptor persp) {
-        boolean visible = page.isEditorAreaVisible();
-        if (visible) {
-            page.setEditorAreaVisible(false);
-            setText(WorkbenchMessages.ToggleEditor_showEditors); 
-        } else {
-            page.setEditorAreaVisible(true);
-            setText(WorkbenchMessages.ToggleEditor_hideEditors);
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     */
-    public void dispose() {
-        if (getWindow() != null) {
-            getWindow().removePerspectiveListener(this);
-        }
-        super.dispose();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimArea.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimArea.java
deleted file mode 100644
index 415d113..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimArea.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.List;
-
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- * This class represents a logical partition in the overall trim layout. The
- * <code>TrimLayoutData</code> will specify the id of the area to be used for
- * a particular trim element and the <code>WorkbenchLayout</code> will filter
- * each trim control into the appropriate area based on the id.
- * <p>
- * This is a utility class used to support the <code>WorkbenchLayout</code> so
- * the fields are all scoped to the package level to provide the layout full
- * access to the structure.
- * </p>
- * <p>
- * NOTE: This class is a part of a 'work in progress' and should not be used
- * without consulting the Platform UI group. No guarantees are made as to the
- * stability of the API (except that the javadoc will get better...;-).
- * </p>
- * <p>
- * 
- * @see WorkbenchLayout
- * @see TrimLayoutData
- *      </p>
- * 
- * @since 3.2
- * 
- */
-public class TrimArea {
-
-	/**
-	 * The id of this area. Trim controls whose <code>TrimLayoutData</code>
-	 * specifies an id that matches this area's id are slotted into this area by
-	 * the workbench layout.
-	 */
-	String areaId;
-
-	/**
-	 * This
-	 */
-	int orientation;
-
-	int defaultMinor;
-
-	// 'Cache' variables
-	boolean cacheOK;
-
-	Rectangle areaBounds;
-
-	List trimContents;
-
-	List trimLines;
-
-	public TrimArea(String id, int orientation, int defaultMinor) {
-		this.areaId = id;
-		this.orientation = orientation;
-		this.defaultMinor = defaultMinor;
-
-		areaBounds = new Rectangle(0, 0, 0, 0);
-
-		// First use will fill the cache
-		cacheOK = false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDragPreferences.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDragPreferences.java
deleted file mode 100644
index 780d69b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDragPreferences.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-/**
- * Static class to contain the preferences used to manage the GUI during
- * trim dragging.
- * <p><b>
- * NOTE: this is a test harness at this time. This class may be removed
- * before the release of 3.2.
- * </b></p>
- * 
- * @since 3.2
- *
- */
-public class TrimDragPreferences {
-
-	/**
-	 * How close to a caret the cursor has to be to be 'valid'
-	 */
-
-	private static int thresholdPref = 50;
-	
-	/**
-	 * 'true' means that each trim element can have a different 'height'
-	 */
-	private static boolean raggedTrim = true;
-
-	/*
-	 * Accessor Methods
-	 */
-	/**
-	 * @return Returns the threshold.
-	 */
-	public static int getThreshold() {
-		return thresholdPref;
-	}
-
-	/**
-	 * @param threshold The threshold to set.
-	 */
-	public static void setThreshold(int threshold) {
-		thresholdPref = threshold;
-	}
-
-	/**
-	 * @return Returns the raggedTrim.
-	 */
-	public static boolean showRaggedTrim() {
-		return raggedTrim;
-	}
-
-	/**
-	 * @param raggedTrim The raggedTrim to set.
-	 */
-	public static void setRaggedTrim(boolean raggedTrim) {
-		TrimDragPreferences.raggedTrim = raggedTrim;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDropTarget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDropTarget.java
deleted file mode 100644
index 8f1790d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimDropTarget.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.dnd.DragBorder;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.IDragOverListener;
-import org.eclipse.ui.internal.dnd.IDropTarget;
-import org.eclipse.ui.internal.dnd.IDropTarget2;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.layout.TrimDescriptor;
-import org.eclipse.ui.internal.layout.TrimLayout;
-import org.eclipse.ui.internal.layout.TrimToolBarBase;
-
-/**
- */
-/*package*/class TrimDropTarget implements IDragOverListener {
-	
-    private final class ActualTrimDropTarget implements IDropTarget2 {
-        public IWindowTrim draggedTrim;
-        
-        // tracking parameters
-    	private DragBorder border = null;
-    	private int dockedArea;
-        
-        // Holder for the position of trim that is 'floating' with the cursor
-    	private int cursorAreaId;
-        private int initialAreaId;
-        private IWindowTrim initialInsertBefore;        
-		private Rectangle initialLocation;
-
-        /**
-         * Constructor
-         */
-        private ActualTrimDropTarget() {
-            super();
-
-            draggedTrim = null;
-            dockedArea = SWT.NONE;
-            
-            initialAreaId = SWT.NONE;
-            initialInsertBefore = null;
-        }
-        
-        /**
-         * This method is used to delineate separate trims dragging events. The -first- drag
-         * event will set this and then it will remain constant until the drag gesture is done;
-         * either by dropping or escaping. Once the gesture is finished the trim value is set
-         * back to 'null'.
-         * 
-         * @param trim The trim item currently being dragged.
-         */
-        public void startDrag(IWindowTrim trim) {
-        	// Are we starting a new drag?
-        	if (draggedTrim != trim) {
-            	// remember the dragged trim
-            	draggedTrim = trim;
-            	
-            	// Remember the location that we were in initially so we
-            	// can go back there on an cancel...
-            	initialAreaId = layout.getTrimAreaId(draggedTrim.getControl());
-            	
-            	// Determine who we were placed 'before' in the trim
-            	initialInsertBefore = getInsertBefore(initialAreaId, draggedTrim);
-            	
-            	// Remember the location that the control used to be at for animation purposes
-            	initialLocation = DragUtil.getDisplayBounds(draggedTrim.getControl());
-            	            	
-            	// The dragged trim is always initially docked
-            	dockedArea = initialAreaId;
-        	}
-        }
-                
-        /**
-         * Determine the trim area from the point. To avoid clashing at the 'corners' due to extending the trim area's
-         * rectangles we first ensure that the point is not actually -within- a trim area before we check the extended
-         * rectangles.
-         * 
-         * @param pos The current cursor pos
-         * @return the Trim area that the cursor is in or SWT.NONE if the point is not in an area
-         */
-        private int getTrimArea(Point pos) {
-        	// First, check if we're actually -within- a trim area (i.e. no boundary extensions)
-        	int areaId = getTrimArea(pos, 0);
-        	
-        	// If we are not inside a trim area...are we 'close' to one?
-        	if (areaId == SWT.NONE) {
-				areaId = getTrimArea(pos, TrimDragPreferences.getThreshold());
-			}
-        	
-        	// not inside any trim area
-        	return areaId;
-        }
-        
-        /**
-         * Checks the trims areas against the given position. Each trim area is 'extended' into
-         * the workbench page by the value of <code>extendedBoundaryWidth</code> before the checking
-         * takes place.
-         * 
-         * @param pos The point to check against
-         * @param extendedBoundaryWidth The amount to extend the trim area's 'inner' edge by
-         * 
-         * @return The trim area or SWT.NONE if the point is not within any extended trim area's rect.
-         */
-        private int getTrimArea(Point pos, int extendedBoundaryWidth) {
-        	int[] areaIds = layout.getAreaIds();
-        	for (int i = 0; i < areaIds.length; i++) {
-				Rectangle trimRect = layout.getTrimRect(windowComposite, areaIds[i]);
-				trimRect = Geometry.toControl(windowComposite, trimRect);
-
-				// Only check 'valid' sides
-				if ( (areaIds[i] & getValidSides()) != SWT.NONE) {
-					// TODO: more confusion binding 'areaIds' to SWT 'sides'
-		        	switch (areaIds[i]) {
-					case SWT.LEFT:
-						trimRect.width += extendedBoundaryWidth;
-						
-						if (pos.y >= trimRect.y &&
-							pos.y <= (trimRect.y+trimRect.height) &&
-							pos.x <= (trimRect.x+trimRect.width)) {
-							return areaIds[i];
-						}
-						break;
-					case SWT.RIGHT:
-						trimRect.x -= extendedBoundaryWidth;
-						trimRect.width += extendedBoundaryWidth;
-						
-						if (pos.y >= trimRect.y &&
-							pos.y <= (trimRect.y+trimRect.height) &&
-							pos.x >= trimRect.x) {
-							return areaIds[i];
-						}
-						break;
-					case SWT.TOP:
-						trimRect.height += extendedBoundaryWidth;
-						
-						if (pos.x >= trimRect.x &&
-							pos.x <= (trimRect.x+trimRect.width) &&
-							pos.y <= (trimRect.y+trimRect.height)) {
-							return areaIds[i];
-						}
-						break;
-					case SWT.BOTTOM:
-						trimRect.y -= extendedBoundaryWidth;
-						trimRect.height += extendedBoundaryWidth;
-						
-						if (pos.x >= trimRect.x &&
-							pos.x <= (trimRect.x+trimRect.width) &&
-							pos.y >= trimRect.y) {
-							return areaIds[i];
-						}
-						break;
-		        	}
-				}
-			}
-        	
-        	// not inside any trim area
-        	return SWT.NONE;
-        }
-        
-        /**
-         * Determine the window trim that the currently dragged trim should be inserted
-         * before.
-         * @param areaId The area id that is being checked
-         * @param pos The position used to determine the correct insertion trim
-         * @return The trim to 'dock' the draggedTrim before
-         */
-        private IWindowTrim getInsertBefore(int areaId, Point pos) {
-        	boolean isHorizontal = (areaId == SWT.TOP) || (areaId == SWT.BOTTOM);
-        	
-        	// Walk the trim area and return the first one that the positon
-        	// is 'after'.
-        	List tDescs = layout.getTrimArea(areaId).getDescriptors();
-        	for (Iterator iter = tDescs.iterator(); iter.hasNext();) {
-				TrimDescriptor desc = (TrimDescriptor) iter.next();
-				
-				// Skip ourselves
-				if (desc.getTrim() == draggedTrim) {
-					continue;
-				}
-				
-				// Now, check
-				Rectangle bb = desc.getCache().getControl().getBounds();
-				Point center = Geometry.centerPoint(bb);
-				if (isHorizontal) {
-					if (pos.x < center.x) {
-						return desc.getTrim();
-					}
-				}
-				else {
-					if (pos.y < center.y) {
-						return desc.getTrim();
-					}
-				}
-			}
-        	
-        	return null;
-        }
-        
-        /**
-         * Returns the trim that is 'before' the given trim in the given area
-         * 
-         * @param areaId The areaId of the trim
-         * @param trim The trim to find the element after
-         * 
-         * @return The trim that the given trim is 'before'
-         */
-        private IWindowTrim getInsertBefore(int areaId, IWindowTrim trim) {
-        	List tDescs = layout.getTrimArea(areaId).getDescriptors();
-        	for (Iterator iter = tDescs.iterator(); iter.hasNext();) {
-				TrimDescriptor desc = (TrimDescriptor) iter.next();
-				if (desc.getTrim() == trim) {
-					if (iter.hasNext()) {
-						desc = (TrimDescriptor) iter.next();
-						return desc.getTrim();
-					}
-					return null;
-				}
-			}
-        	
-        	return null;
-        }
-        
-        /**
-         * Recalculates the drop information based on the current cursor pos.
-         * 
-         * @param pos The cursor position
-         */
-        public void track(Point pos) {
-        	// Convert the mouse positon into 'local' coords
-        	Rectangle r = new Rectangle(pos.x, pos.y, 1,1);
-        	r = Geometry.toControl(windowComposite, r);
-        	pos.x = r.x;
-        	pos.y = r.y;
-        	        	
-        	// Are we 'inside' a trim area ?
-        	cursorAreaId = getTrimArea(pos);
-
-        	// Provide tracking for the appropriate 'mode'
-        	if (cursorAreaId != SWT.NONE) {
-				trackInsideTrimArea(pos);
-			} else {
-				trackOutsideTrimArea(pos);
-			}
-        }
-       
-        /**
-         * Perform the feedback used when the cursor is 'inside' a particular trim area.
-         * The current implementation will place the dragged trim into the trim area at
-         * the location determined by the supplied point.
-         * 
-         * @param pos The point to use to determine where in the trim area the dragged trim
-         * should be located.
-         */
-        private void trackInsideTrimArea(Point pos) {
-        	// Where should we be?
-        	int newArea = getTrimArea(pos);
-        	IWindowTrim newInsertBefore = getInsertBefore(newArea, pos);
-
-        	// if we're currently undocked then we should dock
-        	boolean shouldDock = dockedArea == SWT.NONE;
-        	
-        	// If we're already docked then only update if there's a change in area or position
-        	if (dockedArea != SWT.NONE) {
-	        	// Where are we now?
-	        	IWindowTrim curInsertBefore = getInsertBefore(dockedArea, draggedTrim);
-	        	
-	        	// If we're already docked we should only update if there's a change
-	        	shouldDock = dockedArea != newArea || curInsertBefore != newInsertBefore;
-        	}
-        	
-        	// Do we have to do anything?
-        	if (shouldDock) {
-        		// (Re)dock the trim in the new location
-        		dock(newArea, newInsertBefore);
-        	}
-        }
-        
-        /**
-         * Provide the dragging feedback when the cursor is -not- explicitly inside
-         * a particular trim area.
-         * 
-         */
-        private void trackOutsideTrimArea(Point pos) {
-        	// If we -were- docked then undock
-        	if (dockedArea != SWT.NONE) {
-				undock();
-			}
-    		
-    		border.setLocation(pos, SWT.BOTTOM);
-        }
-                
-        /**
-         * Return the set of valid sides that a piece of trim can be docked on. We
-         * arbitrarily extend this to include any areas that won't cause a change in orientation
-         * 
-         * @return The extended drop 'side' set
-         */
-        private int getValidSides() {
-        	int result = draggedTrim.getValidSides();
-        	if (result == SWT.NONE) {
-				return result;
-			}
-
-        	// For now, if we can dock...we can dock -anywhere-
-        	return SWT.TOP | SWT.BOTTOM | SWT.LEFT | SWT.RIGHT;
-        }
-
-        /**
-         * The user either cancelled the drag or tried to drop the trim in an invalid
-         * area...put the trim back in the last location it was in
-         */
-        private void redock() {
-        	// Since the control might move 'far' we'll provide an animation
-        	Rectangle startRect = DragUtil.getDisplayBounds(draggedTrim.getControl());
-            RectangleAnimation animation = new RectangleAnimation(
-                    windowComposite.getShell(), startRect, initialLocation, 300);
-            animation.schedule();
-
-            dock(initialAreaId, initialInsertBefore);
-        }
-        
-		/* (non-Javadoc)
-         * @see org.eclipse.ui.internal.dnd.IDropTarget#drop()
-         */
-        public void drop() {
-        	// If we aren't docked then restore the initial location
-        	if (dockedArea == SWT.NONE) {
-				redock();
-			}
-        }
-
-        /**
-         * Remove the trim frmo its current 'docked' location and attach it
-         * to the cursor...
-         */
-        private void undock() {
-        	// Remove the trim from the layout
-        	layout.removeTrim(draggedTrim);
-           	LayoutUtil.resize(draggedTrim.getControl());
-           	
-           	// Re-orient the widget to its -original- side and size
-        	draggedTrim.dock(initialAreaId);
-        	draggedTrim.getControl().setSize(initialLocation.width, initialLocation.height);
-           	
-           	// Create a new dragging border onto the dragged trim
-        	// Special check for TrimPart...should be generalized
-        	boolean wantsFrame = !(draggedTrim instanceof TrimToolBarBase);
-           	border = new DragBorder(windowComposite, draggedTrim.getControl(), wantsFrame);
-
-           	dockedArea = SWT.NONE;
-        }
-        
-        /**
-         * Return the 'undocked' trim to its previous location in the layout
-         */
-        private void dock(int areaId, IWindowTrim insertBefore) {
-        	// remove the drag 'border'
-        	if (border != null) {
-				border.dispose();
-				border = null;
-        	}
-			
-			// Update the trim's orientation if necessary
-			draggedTrim.dock(areaId);
-
-			// Add the trim into the layout
-            layout.addTrim(areaId, draggedTrim, insertBefore);
-           	LayoutUtil.resize(draggedTrim.getControl());
-           	
-           	// Remember the area that we're currently docked in
-           	dockedArea = areaId;
-        }
-        	
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.dnd.IDropTarget#getCursor()
-         */
-        public Cursor getCursor() {
-        	// If the trim isn't docked then show the 'no smoking' sign
-        	if (cursorAreaId == SWT.NONE) {
-				return windowComposite.getDisplay().getSystemCursor(SWT.CURSOR_NO);
-			}
-        	
-        	// It's docked; show the four-way arrow cursor
-        	return windowComposite.getDisplay().getSystemCursor(SWT.CURSOR_SIZEALL);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.dnd.IDropTarget#getSnapRectangle()
-         */
-        public Rectangle getSnapRectangle() {
-        	// TODO: KLUDGE!! We don't want to show -any- snap rect
-        	// but Tracker won't allow that so place it where it won't be visible
-        	return new Rectangle(100000, 0,0,0);
-        }
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.dnd.IDropTarget2#dragFinished(boolean)
-		 */
-		public void dragFinished(boolean dropPerformed) {
-			// If we didn't perform a drop then restore the original position
-			if (!dropPerformed && dockedArea == SWT.NONE) {
-				// Force the dragged trim back into its original position...				
-				redock();
-			}
-			
-			// Set the draggedTrim to null. This indicates that we're no longer
-			// dragging the trim. The first call to the TrimDropTarget's 'drag' method
-			// will reset this the next time a drag starts.
-			draggedTrim = null;
-		}
-    }
-    
-    private ActualTrimDropTarget dropTarget;
-    
-    private TrimLayout layout;
-    private Composite windowComposite;
-
-    /**
-     * Create a new drop target capable of accepting IWindowTrim items
-     * 
-     * @param someComposite The control owning the TrimLayout
-     * @param theWindow the workbenchWindow
-     */
-    public TrimDropTarget(Composite someComposite, WorkbenchWindow theWindow) {
-        layout = (TrimLayout) someComposite.getLayout();
-        windowComposite = someComposite;
-
-        // Create an instance of a drop target to use
-        dropTarget = new ActualTrimDropTarget();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.dnd.IDragOverListener#drag(org.eclipse.swt.widgets.Control, java.lang.Object, org.eclipse.swt.graphics.Point, org.eclipse.swt.graphics.Rectangle)
-     */
-    public IDropTarget drag(Control currentControl, Object draggedObject,
-            Point position, final Rectangle dragRectangle) {
-    	
-    	// Have to be dragging trim
-    	if (!(draggedObject instanceof IWindowTrim)) {
-			return null;
-		}
-    	
-    	// OK, we're dragging trim. is it from -this- shell?
-    	IWindowTrim trim = (IWindowTrim) draggedObject;
-    	if (trim.getControl().getShell() != windowComposite.getShell()) {
-			return null;
-		}
-    	
-    	// If this is the -first- drag then inform the drop target
-    	if (dropTarget.draggedTrim == null) {
-    		dropTarget.startDrag(trim);
-    	}
-
-    	// Forward on to the 'actual' drop target for feedback
-    	dropTarget.track(position);
-    	
-    	// Spin the paint loop after every track
-    	windowComposite.getDisplay().update();
-    	
-		return dropTarget;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimFrame.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimFrame.java
deleted file mode 100644
index 1b89fc4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimFrame.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.themes.ColorUtil;
-
-/**
- * Draws a styled frame around its contained controls.
- * This class is intended to be used to wrap various
- * trim elements that appear in the workbench.
- * 
- *  Currently this class expects a <b>single</b> child
- *  control.
- *  
- * @since 3.3
- *
- */
-public class TrimFrame {
-	private static int blend = 40;
-	
-    Canvas canvas = null;
-    
-    public TrimFrame(Composite parent) {
-        createControl(parent);
-    }
-
-    private void createControl(Composite parent) {
-        dispose();
-        canvas = new Canvas(parent, SWT.NONE);
-        canvas.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
-        
-        // paint the border
-        canvas.addPaintListener(new PaintListener() {
-            private void drawLine (GC gc, int x1, int y1, int x2, int y2, boolean flipXY) {
-                if (flipXY) {
-                    int tmp = x1; 
-                    x1 = y1;
-                    y1 = tmp;
-                    tmp = x2;
-                    x2 = y2;
-                    y2 = tmp;
-                }
-                
-                 gc.drawLine(x1, y1, x2, y2);
-            }
-            
-            public void paintControl(PaintEvent e) {
-                Canvas canvas = (Canvas)e.widget;
-                Control child = canvas.getChildren ()[0];
-                
-                // Are we horizontally or vertically aligned
-                boolean flipXY = false;                
-                if (child instanceof ToolBar && (((ToolBar)child).getStyle() & SWT.VERTICAL) != 0)
-                    flipXY = true;
-                else if (child instanceof CoolBar && (((CoolBar)child).getStyle() & SWT.VERTICAL) != 0)
-                    flipXY = true;
-                
-                Rectangle bb = canvas.getBounds();
-                int maxX = bb.width-1;
-                int maxY = bb.height-1;
-                 
-                if (flipXY) {
-                    int tmp = maxX;
-                    maxX = maxY;
-                    maxY = tmp;
-                }
-                
-                Color white = e.gc.getDevice ().getSystemColor(SWT.COLOR_WHITE);
-                Color shadow = e.gc.getDevice().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
-                RGB outerRGB = ColorUtil.blend(white.getRGB(), shadow.getRGB(), blend); 
-                Color outerColor = new Color(e.gc.getDevice(), outerRGB);
-                
-                // Draw the 'outer' bits
-                e.gc.setForeground(outerColor);
-                
-                // Top Line and curve
-                drawLine(e.gc, 1, 0, maxX-5, 0, flipXY); 
-                drawLine(e.gc, maxX-4, 1, maxX-3, 1, flipXY);
-                drawLine(e.gc, maxX-2, 2, maxX-2, 2, flipXY); 
-                drawLine(e.gc, maxX-1, 3, maxX-1, 4, flipXY);
-                
-                // Bottom line and curve
-                drawLine(e.gc, 1, maxY, maxX-5, maxY, flipXY); 
-                drawLine( e.gc, maxX-4, maxY-1, maxX-3, maxY-1, flipXY);
-                drawLine(e.gc, maxX-2, maxY-2, maxX-2, maxY-2, flipXY);
-                drawLine(e.gc, maxX-1, maxY-3, maxX-1, maxY-4, flipXY);
-                
-                // Left & Right edges 
-                drawLine(e.gc, 0, 1, 0, maxY-1, flipXY); 
-                drawLine(e.gc, maxX, 5, maxX, maxY-5, flipXY);
-                
-                // Dispose the color since we created it...
-                outerColor.dispose();
-                
-                // Draw the 'inner' curve
-                e.gc.setForeground (white);
-
-                drawLine(e.gc, 1, 1, maxX-5, 1, flipXY);
-                drawLine(e.gc, maxX-4, 2, maxX-3, 2, flipXY);
-                drawLine(e.gc, maxX-3, 3, maxX-2, 3, flipXY);
-                drawLine( e.gc, maxX-2, 4, maxX-2, 4, flipXY);
-                
-                drawLine(e.gc, 1, maxY-1, maxX-5, maxY-1, flipXY);
-                drawLine(e.gc, maxX-4, maxY-2, maxX-3, maxY-2, flipXY);
-                drawLine( e.gc, maxX-3, maxY-3, maxX-2, maxY-3, flipXY);
-                drawLine(e.gc, maxX-2, maxY-4, maxX-2, maxY-4, flipXY);
-                
-                // Left and Right sides
-                drawLine(e.gc, 1, 1, 1, maxY-1, flipXY); 
-                drawLine(e.gc, maxX-1, 5, maxX-1, maxY-5, flipXY);
-            }
-        });
-        
-        // provide a layout that provides enough extra space to
-        // draw the border and to place the child conrol in the
-        // correct location
-        canvas.setLayout(new Layout() {
-
-			protected Point computeSize(Composite composite, int wHint,
-                    int hHint, boolean changed) {
-                Control[] children = composite.getChildren();
-                
-                if (children.length == 0)
-                    return new Point(0,0);
-
-                Point innerSize = children[0].computeSize(hHint, wHint, changed); 
-                innerSize.x += 4;
-                innerSize.y += 4;
-                
-                Control child = children[0];
-                if (child instanceof CoolBar && (((CoolBar)child).getStyle() & SWT.VERTICAL) != 0)
-                    innerSize.y += 3;
-                else
-                    innerSize.x += 3;
-                
-                return innerSize;
-            }
-
-            protected void layout(Composite composite, boolean flushCache) { 
-                Control[] children = composite.getChildren();
-                if (children.length == 0)
-                    return;
-
-                children[0].setLocation(2, 2);
-            }             
-        });
-    }
-
-    /**
-     * Dispose the frame
-     */
-    private void dispose() {
-        if (canvas != null && !canvas.isDisposed())
-            canvas.dispose();
-    }
-    
-    /**
-     * @return The border canvas
-     */
-    public Composite getComposite() {
-    	return canvas;
-    }
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimLayoutData.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimLayoutData.java
deleted file mode 100644
index cee9311..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimLayoutData.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-/**
- * The layout data class used by the <code>WorkbenchLayout</code> to arrange
- * trim around the workbench edges.
- * <p>
- * NOTE: This class is a part of a 'work in progress' and should not be used
- * without consulting the Platform UI group. No guarantees are made as to the
- * stability of the API (except that the javadoc will get better...;-).
- * </p>
- * 
- * @since 3.2
- * 
- */
-public class TrimLayoutData {
-
-	// Constants
-	/**
-	 * The trim element will grow unbounded based on the amount of unused space
-	 * in its TrimArea but will never be smaller than it's preferred size. Only
-	 * one of <code>GROWABLE</code> or <code>SHRINKABLE</code> should be
-	 * specified.
-	 */
-	public static final int GROWABLE = 0x1;
-
-	/**
-	 * The trim element will shrink to the <code>shrinkableSize</code> if
-	 * needed to fit the element into the trim but will never grow larger than
-	 */
-	public static final int SHRINKABLE = 0x2;
-
-	/**
-	 * The trim element will grow in its 'minor' dimension (i.e. in Y if the
-	 * trim is oriented horizontally) to match the size of the TrimArea that it
-	 * is in.
-	 */
-	public static final int GRAB_EXCESS_MINOR = 0x4;
-
-	// Fields
-	public String trimId;
-
-	public String areaId;
-
-	public int flags;
-
-	public ITrimAreaChangeListener listener;
-
-	public int shrinkableSize;
-
-	public TrimLayoutData(String trimId, String areaId, int flags,
-			ITrimAreaChangeListener listener) {
-		this.trimId = trimId;
-		this.areaId = areaId;
-		this.flags = flags;
-		this.listener = listener;
-	}
-
-	public TrimLayoutData(String trimId, String areaId, int flags) {
-		this(trimId, areaId, flags, null);
-	}
-
-	public TrimLayoutData(String trimId, String areaId) {
-		this(trimId, areaId, 0);
-	}
-
-	public void setAreaId(String newAreaId) {
-		if (listener != null) {
-			listener.areaChanged(WorkbenchLayout.getOrientation(areaId),
-					WorkbenchLayout.getOrientation(newAreaId));
-		}
-
-		areaId = newAreaId;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimUtil.java
deleted file mode 100644
index dae8b8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/TrimUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-/**
- * Simple class to provide some common internal Trim support.
- *
- * @since 3.2
- *
- */
-public class TrimUtil {
-
-    /**
-     * Default height for workbench trim.
-     */
-    public static final int TRIM_DEFAULT_HEIGHT;
-    static {
-    	Shell s = new Shell(Display.getCurrent(), SWT.NONE);
-    	s.setLayout(new GridLayout());
-    	ToolBar t = new ToolBar(s, SWT.NONE);
-    	t.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-    	ToolItem ti = new ToolItem(t, SWT.PUSH);
-    	ti.setImage(JFaceResources.getImageRegistry().get(Dialog.DLG_IMG_MESSAGE_INFO));
-    	s.layout();
-    	int toolItemHeight = t.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
-    	GC gc = new GC(s);
-    	Point fontSize = gc.textExtent("Wg"); //$NON-NLS-1$
-    	gc.dispose();
-    	TRIM_DEFAULT_HEIGHT = Math.max(toolItemHeight, fontSize.y);
-    	s.dispose();
-    	
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java
deleted file mode 100644
index b8cdf0e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UILockListener.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM - Initial API and implementation
- *     Jeremiah Lott (jeremiah.lott@timesys.com) - fix for deadlock bug 76378
- *     
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.jobs.LockListener;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * The UI lock listener is used to prevent the UI thread from deadlocking on
- * a lock when the thread owning the lock is attempting to syncExec.
- */
-public class UILockListener extends LockListener {
-
-    /**
-     * The Queue is the construct that keeps track of Semaphores.
-     */
-    public class Queue {
-        private static final int BASE_SIZE = 8;
-
-        protected Semaphore[] elements = new Semaphore[BASE_SIZE];
-
-        protected int head = 0;
-
-        protected int tail = 0;
-
-        /**
-         * Add the semaphore to the queue.
-         * @param element
-         */
-        public synchronized void add(Semaphore element) {
-            int newTail = increment(tail);
-            if (newTail == head) {
-                grow();
-                newTail = tail + 1;
-            }
-            elements[tail] = element;
-            tail = newTail;
-        }
-
-        private void grow() {
-            int newSize = elements.length * 2;
-            Semaphore[] newElements = new Semaphore[newSize];
-            if (tail >= head) {
-				System.arraycopy(elements, head, newElements, head, size());
-			} else {
-                int newHead = newSize - (elements.length - head);
-                System.arraycopy(elements, 0, newElements, 0, tail + 1);
-                System.arraycopy(elements, head, newElements, newHead,
-                        (newSize - newHead));
-                head = newHead;
-            }
-            elements = newElements;
-        }
-
-        private int increment(int index) {
-            return (index == (elements.length - 1)) ? 0 : index + 1;
-        }
-
-        /**
-         * Remove the next semaphore to be woken up.
-         * @return
-         */
-        public synchronized Semaphore remove() {
-            if (tail == head) {
-				return null;
-			}
-            Semaphore result = elements[head];
-            elements[head] = null;
-            head = increment(head);
-            //reset the queue if it is empty and it has grown
-            if (tail == head && elements.length > BASE_SIZE) {
-                elements = new Semaphore[BASE_SIZE];
-                tail = head = 0;
-            }
-            return result;
-        }
-
-        private int size() {
-            return tail > head ? (tail - head)
-                    : ((elements.length - head) + tail);
-        }
-    }
-
-    protected Display display;
-
-    protected final Queue pendingWork = new Queue();
-
-    protected Semaphore currentWork = null;
-
-    protected Thread ui;
-
-    /**
-     * Create a new instance of the receiver.
-     * @param display
-     */
-    public UILockListener(Display display) {
-        this.display = display;
-    }
-
-    public void aboutToRelease() {
-        if (isUI()) {
-			ui = null;
-		}
-    }
-
-    public boolean aboutToWait(Thread lockOwner) {
-        if (isUI()) {
-            // If a syncExec was executed from the current operation, it
-            // has already acquired the lock. So, just return true.
-            if (currentWork != null
-                    && currentWork.getOperationThread() == lockOwner) {
-				return true;
-			}
-            ui = Thread.currentThread();
-            try {
-                doPendingWork();
-            } finally {
-                //UI field may be nulled if there is a nested wait during execution
-                //of pending work, so make sure it is assigned before we start waiting
-                ui = Thread.currentThread();
-            }
-        }
-        return false;
-    }
-
-    void addPendingWork(Semaphore work) {
-        pendingWork.add(work);
-    }
-
-    /**
-     * Should always be called from the UI thread.
-     */
-    void doPendingWork() {
-    	//clear the interrupt flag that we may have set in interruptUI()
-    	Thread.interrupted();
-        Semaphore work;
-        while ((work = pendingWork.remove()) != null) {
-        	//remember the old current work before replacing, to handle
-        	//the nested waiting case (bug 76378)
-        	Semaphore oldWork = currentWork;
-            try {
-                currentWork = work;
-                Runnable runnable = work.getRunnable();
-                if (runnable != null) {
-					runnable.run();
-				}
-
-            } finally {
-                currentWork = oldWork;
-                work.release();
-            }
-        }
-    }
-
-    void interruptUI() {
-        display.getThread().interrupt();
-    }
-
-    boolean isLockOwner() {
-        return isLockOwnerThread();
-    }
-
-    boolean isUI() {
-        return (!display.isDisposed())
-                && (display.getThread() == Thread.currentThread());
-    }
-
-    boolean isUIWaiting() {
-        return (ui != null) && (Thread.currentThread() != ui);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UISynchronizer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UISynchronizer.java
deleted file mode 100644
index 6a01d75..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/UISynchronizer.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Synchronizer;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-
-public class UISynchronizer extends Synchronizer {
-    protected UILockListener lockListener;
-    
-    /**
-	 * Indicates that the UI is in startup mode and that no non-workbench
-	 * runnables should be invoked.
-	 */
-	protected boolean isStarting = true;
-
-	/**
-	 * List of non-workbench Runnables that need executing at some point in the future
-	 */
-	protected List pendingStartup = new ArrayList();
-
-	/**
-	 * If this boolean is set to true the synchronizer will fall back to the
-	 * behaviour it had prior to 3.3/3.4. Ie: there will be no restriction on
-	 * what runnables may be run via a/syncExec calls.
-	 * 
-	 * @see IPreferenceConstants#USE_32_THREADING
-	 */
-	private boolean use32Threading = false;
-
-	/**
-	 * Setting this variable to the value {@link Boolean#TRUE} will allow a
-	 * thread to execute code during the startup sequence.
-	 */
-	public static final ThreadLocal startupThread = new ThreadLocal() {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.lang.ThreadLocal#initialValue()
-		 */
-		protected Object initialValue() {
-			return Boolean.FALSE;
-		}
-		
-		/* (non-Javadoc)
-		 * @see java.lang.ThreadLocal#set(java.lang.Object)
-		 */
-		public void set(Object value) {
-			if (value != Boolean.TRUE && value != Boolean.FALSE)
-				throw new IllegalArgumentException();
-			super.set(value);
-		}
-	};
-	
-	public static final ThreadLocal overrideThread = new ThreadLocal() {
-		protected Object initialValue() {
-			return Boolean.FALSE;
-		}
-		public void set(Object value) {
-			if (value != Boolean.TRUE && value != Boolean.FALSE)
-				throw new IllegalArgumentException();
-			if (value == Boolean.TRUE
-                    && ((Boolean)startupThread.get()).booleanValue()) {
-				throw new IllegalStateException();
-			}
-			super.set(value);
-		}
-	};
-	
-    public UISynchronizer(Display display, UILockListener lock) {
-        super(display);
-        this.lockListener = lock;
-        use32Threading = WorkbenchPlugin.getDefault()
-				.getPreferenceStore().getBoolean(
-						IPreferenceConstants.USE_32_THREADING);
-    }
-    
-    public void started() {
-    	synchronized (this) {
-			if (!isStarting)
-				throw new IllegalStateException();
-			isStarting = false;
-			for (Iterator i = pendingStartup.iterator(); i.hasNext();) {
-				Runnable runnable = (Runnable) i.next();
-				try {
-					//queue up all pending asyncs
-					super.asyncExec(runnable);
-				} catch (RuntimeException e) {
-					// do nothing
-				}
-			}
-			pendingStartup = null;
-			// wake up all pending syncExecs
-			this.notifyAll();
-    	}    	
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.swt.widgets.Synchronizer#asyncExec(java.lang.Runnable)
-     */
-    protected void asyncExec(Runnable runnable) {
-    	// the following block should not be invoked if we're using 3.2 threading.
-    	if (runnable != null && !use32Threading) {
-			synchronized (this) {
-				if (isStarting && !(runnable instanceof StartupRunnable)
-						&& overrideThread.get() == Boolean.FALSE) {
-
-					// don't run it now, add it to the list of deferred runnables
-					pendingStartup.add(runnable);
-
-					return;
-				}
-			}
-		}
-    	super.asyncExec(runnable);
-    }
-
-	public void syncExec(Runnable runnable) {
-		
-		synchronized (this) {
-			// the following block should not be invoked if we're using 3.2 threading.
-			if (isStarting && !use32Threading && startupThread.get() == Boolean.FALSE
-					&& overrideThread.get() == Boolean.FALSE) {
-				do {
-					try {
-						this.wait();
-					} catch (InterruptedException e) {
-					}
-				} while (isStarting);
-			}
-		}
-		
-        //if this thread is the UI or this thread does not own any locks, just do the syncExec
-        if ((runnable == null) || lockListener.isUI()
-                || !lockListener.isLockOwner()) {
-            super.syncExec(runnable);
-            return;
-        }
-        Semaphore work = new Semaphore(runnable);
-        work.setOperationThread(Thread.currentThread());
-        lockListener.addPendingWork(work);
-        asyncExec(new Runnable() {
-            public void run() {
-                lockListener.doPendingWork();
-            }
-        });
-        try {
-            //even if the UI was not blocked earlier, it might become blocked
-            //before it can serve the asyncExec to do the pending work
-            do {
-                if (lockListener.isUIWaiting()) {
-					lockListener.interruptUI();
-				}
-            } while (!work.acquire(1000));
-        } catch (InterruptedException e) {
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBars.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBars.java
deleted file mode 100644
index 7bf9fa9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBars.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * An editor container manages the services for an editor.
- */
-public class ViewActionBars extends SubActionBars {
-	private ViewPane pane;
-
-	/**
-	 * ViewActionBars constructor comment.
-	 */
-	public ViewActionBars(IActionBars parent,
-			final IServiceLocator serviceLocator, ViewPane pane) {
-		super(parent, serviceLocator);
-		this.pane = pane;
-	}
-
-	/**
-	 * Returns the menu manager. If items are added or removed from the manager
-	 * be sure to call <code>updateActionBars</code>.
-	 * 
-	 * @return the menu manager
-	 */
-	public IMenuManager getMenuManager() {
-		return pane.getMenuManager();
-	}
-
-	/**
-	 * Returns the tool bar manager. If items are added or removed from the
-	 * manager be sure to call <code>updateActionBars</code>.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager getToolBarManager() {
-		return pane.getToolBarManager();
-	}
-
-	/**
-	 * Commits all UI changes. This should be called after additions or
-	 * subtractions have been made to a menu, status line, or toolbar.
-	 */
-	public void updateActionBars() {
-		pane.updateActionBars();
-		getStatusLineManager().update(false);
-		fireActionHandlersChanged();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBuilder.java
deleted file mode 100644
index f1fb9ca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewActionBuilder.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This class reads the registry for extensions that plug into
- * 'viewActions' extension point.
- */
-public class ViewActionBuilder extends PluginActionBuilder {
-    public static final String TAG_CONTRIBUTION_TYPE = "viewContribution"; //$NON-NLS-1$
-
-    private IViewPart targetPart;
-
-    /**
-     * Basic constructor
-     */
-    public ViewActionBuilder() {
-    }
-
-    /**
-     * Contribute the external menus and actions applicable for this view part.
-     */
-    private void contributeToPart(IViewPart part) {
-        IActionBars bars = part.getViewSite().getActionBars();
-        contribute(bars.getMenuManager(), bars.getToolBarManager(), true);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected ActionDescriptor createActionDescriptor(
-            org.eclipse.core.runtime.IConfigurationElement element) {
-        return new ActionDescriptor(element, ActionDescriptor.T_VIEW,
-                targetPart);
-    }
-
-    /**
-     * Return all extended actions.
-     */
-    public ActionDescriptor[] getExtendedActions() {
-        if (cache == null) {
-			return new ActionDescriptor[0];
-		}
-
-        ArrayList results = new ArrayList();
-        for (int i = 0; i < cache.size(); i++) {
-            BasicContribution bc = (BasicContribution) cache.get(i);
-            if (bc.actions != null) {
-				results.addAll(bc.actions);
-			}
-        }
-        return (ActionDescriptor[]) results
-                .toArray(new ActionDescriptor[results.size()]);
-    }
-
-    /**
-     * Reads and apply all external contributions for this view's ID registered
-     * in 'viewActions' extension point.
-     */
-    public void readActionExtensions(IViewPart viewPart) {
-        targetPart = viewPart;
-        readContributions(viewPart.getSite().getId(), TAG_CONTRIBUTION_TYPE,
-                IWorkbenchRegistryConstants.PL_VIEW_ACTIONS);
-        contributeToPart(targetPart);
-    }
-    
-    public void dispose() {
-		if (cache != null) {
-			for (int i = 0; i < cache.size(); i++) {
-				((BasicContribution) cache.get(i)).disposeActions();
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java
deleted file mode 100644
index 7b82752..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewFactory.java
+++ /dev/null
@@ -1,424 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Markus Alexander Kuppe, Versant Corporation - bug #215797
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPart3;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * The ViewFactory is used to control the creation and disposal of views.  
- * It implements a reference counting strategy so that one view can be shared
- * by more than one client.
- */
-public class ViewFactory implements IExtensionChangeHandler {
-
-    private ReferenceCounter counter;
-
-    private HashMap mementoTable = new HashMap();
-
-    WorkbenchPage page;
-
-    IViewRegistry viewReg;
-
-    /**
-     * Separates a view's primary id from its secondary id in view key strings.
-     */
-    static final String ID_SEP = ":"; //$NON-NLS-1$
-
-    /**
-     * Returns a string representing a view with the given id and (optional) secondary id,
-     * suitable for use as a key in a map.  
-     * 
-     * @param id primary id of the view
-     * @param secondaryId secondary id of the view or <code>null</code>
-     * @return the key
-     */
-    static String getKey(String id, String secondaryId) {
-        return secondaryId == null ? id : id + ID_SEP + secondaryId;
-    }
-
-    /**
-     * Returns a string representing the given view reference, suitable for use as a key in a map.  
-     * 
-     * @param viewRef the view reference
-     * @return the key
-     */
-    static String getKey(IViewReference viewRef) {
-        return getKey(viewRef.getId(), viewRef.getSecondaryId());
-    }
-
-    /**
-     * Extracts ths primary id portion of a compound id.
-     * @param compoundId a compound id of the form: primaryId [':' secondaryId]
-     * @return the primary id
-     */
-    static String extractPrimaryId(String compoundId) {
-        int i = compoundId.lastIndexOf(ID_SEP);
-        if (i == -1) {
-			return compoundId;
-		}
-        return compoundId.substring(0, i);
-    }
-
-    /**
-     * Extracts ths secondary id portion of a compound id.
-     * @param compoundId a compound id of the form: primaryId [':' secondaryId]
-     * @return the secondary id, or <code>null</code> if none
-     */
-    static String extractSecondaryId(String compoundId) {
-        int i = compoundId.lastIndexOf(ID_SEP);
-        if (i == -1) {
-			return null;
-		}
-        return compoundId.substring(i + 1);
-    }
-
-    /**
-     * Returns whether the given view id contains a wildcard. Wildcards cannot
-     * be used in regular view ids, only placeholders.
-     * 
-     * @param viewId the view id
-     * @return <code>true</code> if the given view id contains a wildcard,
-     *         <code>false</code> otherwise
-     * 
-     * @since 3.1
-     */
-    static boolean hasWildcard(String viewId) {
-        return viewId.indexOf(PartPlaceholder.WILD_CARD) >= 0;
-    }
-    
-    /**
-     * Constructs a new view factory.
-     */
-    public ViewFactory(WorkbenchPage page, IViewRegistry reg) {
-        super();
-        this.page = page;
-        this.viewReg = reg;
-        counter = new ReferenceCounter();
-        page.getExtensionTracker().registerHandler(this, null);
-    }
-    
-    /**
-     * Creates an instance of a view defined by id.
-     * 
-     * This factory implements reference counting.  The first call to this
-     * method will return a new view.  Subsequent calls will return the
-     * first view with an additional reference count.  The view is
-     * disposed when releaseView is called an equal number of times
-     * to getView.
-     */
-    public IViewReference createView(final String id) throws PartInitException {
-        return createView(id, null);
-    }
-
-    /**
-     * Creates an instance of a view defined by id and secondary id.
-     * 
-     * This factory implements reference counting.  The first call to this
-     * method will return a new view.  Subsequent calls will return the
-     * first view with an additional reference count.  The view is
-     * disposed when releaseView is called an equal number of times
-     * to createView.
-     */
-    public IViewReference createView(String id, String secondaryId)
-            throws PartInitException {
-        IViewDescriptor desc = viewReg.find(id);
-        // ensure that the view id is valid
-        if (desc == null) {
-			throw new PartInitException(NLS.bind(WorkbenchMessages.ViewFactory_couldNotCreate,  id ));
-		}
-        // ensure that multiple instances are allowed if a secondary id is given
-        if (secondaryId != null) {
-            if (!desc.getAllowMultiple()) {
-                throw new PartInitException(NLS.bind(WorkbenchMessages.ViewFactory_noMultiple, id)); 
-            }
-        }
-        String key = getKey(id, secondaryId);
-        IViewReference ref = (IViewReference) counter.get(key);
-        if (ref == null) {
-            IMemento memento = (IMemento) mementoTable.get(key);
-            ref = new ViewReference(this, id, secondaryId, memento);
-            mementoTable.remove(key);
-            counter.put(key, ref);
-            getWorkbenchPage().partAdded((ViewReference)ref);
-        } else {
-            counter.addRef(key);
-        }
-        return ref;
-    }
-    
-    /**
-     * Returns the set of views being managed by this factory
-     *
-     * @return the set of views being managed by this factory
-     */
-    public IViewReference[] getViewReferences() {
-        List values = counter.values();
-        
-        return (IViewReference[]) values.toArray(new IViewReference[values.size()]);
-    }
-
-    /**
-     * Returns the view with the given id, or <code>null</code> if not found.
-     */
-    public IViewReference getView(String id) {
-        return getView(id, null);
-    }
-
-    /**
-     * Returns the view with the given id and secondary id, or <code>null</code> if not found.
-     */
-    public IViewReference getView(String id, String secondaryId) {
-        String key = getKey(id, secondaryId);
-        return (IViewReference) counter.get(key);
-    }
-
-    /**
-     * @return the <code>IViewRegistry</code> used by this factory.
-     * @since 3.0
-     */
-    public IViewRegistry getViewRegistry() {
-        return viewReg;
-    }
-
-    /**
-     * Returns a list of views which are open.
-     */
-    public IViewReference[] getViews() {
-        List list = counter.values();
-        IViewReference[] array = new IViewReference[list.size()];
-        list.toArray(array);
-        return array;
-    }
-
-    /**
-     * @return the <code>WorkbenchPage</code> used by this factory.
-     * @since 3.0
-     */
-    public WorkbenchPage getWorkbenchPage() {
-        return page;
-    }
-
-    /**
-     * 
-     * @param viewRef
-     * @return the current reference count for the given view
-     */
-    public int getReferenceCount(IViewReference viewRef) {
-        String key = getKey(viewRef);
-        IViewReference ref = (IViewReference) counter.get(key);
-        return ref==null ? 0 : counter.getRef(key);
-    }
-    
-    /**
-     * Releases an instance of a view.
-     *
-     * This factory does reference counting.  For more info see
-     * getView.
-     */
-    public void releaseView(IViewReference viewRef) {
-        String key = getKey(viewRef);
-        IViewReference ref = (IViewReference) counter.get(key);
-        if (ref == null) {
-			return;
-		}
-        int count = counter.removeRef(key);
-        if (count <= 0) {
-            getWorkbenchPage().partRemoved((ViewReference)ref);
-        }
-    }
-
-    /**
-     * Restore view states.
-     *  
-     * @param memento the <code>IMemento</code> to restore from.
-     * @return <code>IStatus</code>
-     */
-    public IStatus restoreState(IMemento memento) {
-        IMemento mem[] = memento.getChildren(IWorkbenchConstants.TAG_VIEW);
-        for (int i = 0; i < mem.length; i++) {
-            //for dynamic UI - add the next line to replace subsequent code that is commented out
-            restoreViewState(mem[i]);
-        }
-        return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-    }
-
-    /**
-     * Save view states.
-     * 
-     * @param memento the <code>IMemento</code> to save to.
-     * @return <code>IStatus</code>
-     */
-    public IStatus saveState(IMemento memento) {
-        final MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID,
-                IStatus.OK, WorkbenchMessages.ViewFactory_problemsSavingViews, null); 
-
-        final IViewReference refs[] = getViews();
-        for (int i = 0; i < refs.length; i++) {
-        	IViewDescriptor desc = viewReg.find(refs[i].getId());
-			if(desc.isRestorable()) {
-				//for dynamic UI - add the following line to replace subsequent code which is commented out
-				saveViewState(memento, refs[i], result);
-			}
-        }
-        return result;
-    }
-
-    //	for dynamic UI
-    public IMemento saveViewState(IMemento memento, IViewReference ref,
-            MultiStatus res) {
-        final MultiStatus result = res;
-        final IMemento viewMemento = memento
-                .createChild(IWorkbenchConstants.TAG_VIEW);
-        viewMemento.putString(IWorkbenchConstants.TAG_ID, ViewFactory
-                .getKey(ref));
-        if (ref instanceof ViewReference) {
-            viewMemento.putString(IWorkbenchConstants.TAG_PART_NAME,
-                    ((ViewReference) ref).getPartName());
-        }
-        final IViewReference viewRef = ref;
-        final IViewPart view = (IViewPart) ref.getPart(false);
-        if (view != null) {
-            SafeRunner.run(new SafeRunnable() {
-                public void run() {
-                	if (view instanceof IWorkbenchPart3) {
-						Map properties = ((IWorkbenchPart3) view)
-								.getPartProperties();
-						if (!properties.isEmpty()) {
-							IMemento propBag = viewMemento
-									.createChild(IWorkbenchConstants.TAG_PROPERTIES);
-							Iterator i = properties.entrySet().iterator();
-							while (i.hasNext()) {
-								Map.Entry entry = (Map.Entry) i.next();
-								IMemento p = propBag.createChild(
-										IWorkbenchConstants.TAG_PROPERTY,
-										(String) entry.getKey());
-								p.putTextData((String) entry.getValue());
-							}
-						}
-					}
-                    view.saveState(viewMemento
-                            .createChild(IWorkbenchConstants.TAG_VIEW_STATE));
-                }
-
-                public void handleException(Throwable e) {
-                    result
-                            .add(new Status(
-                                    IStatus.ERROR,
-                                    PlatformUI.PLUGIN_ID,
-                                    0,
-                                    NLS.bind(WorkbenchMessages.ViewFactory_couldNotSave, viewRef.getTitle() ),
-                                    e));
-                }
-            });
-        } else {
-        	IMemento mem = null;
-        	IMemento props = null;
-        	
-        	// if we've created the reference once, any previous workbench
-        	// state memento is there.  After once, there is no previous
-        	// session state, so it should be null.
-			if (ref instanceof ViewReference) {
-				mem = ((ViewReference) ref).getMemento();
-				if (mem!=null) {
-					props = mem.getChild(IWorkbenchConstants.TAG_PROPERTIES);
-				}
-				if (mem!=null) {
-					mem = mem.getChild(IWorkbenchConstants.TAG_VIEW_STATE);
-				}
-			}
-			if (props != null) {
-				viewMemento.createChild(IWorkbenchConstants.TAG_PROPERTIES)
-						.putMemento(props);
-			}
-			if (mem != null) {
-				IMemento child = viewMemento
-						.createChild(IWorkbenchConstants.TAG_VIEW_STATE);
-				child.putMemento(mem);
-			}
-        }
-        return viewMemento;
-    }
-
-    // for dynamic UI
-    public void restoreViewState(IMemento memento) {
-        String compoundId = memento.getString(IWorkbenchConstants.TAG_ID);
-        mementoTable.put(compoundId, memento);
-    }
-
-    IMemento getViewState(String key) {
-        IMemento memento = (IMemento) mementoTable.get(key);
-
-        if (memento == null) {
-            return null;
-        }
-
-        return memento.getChild(IWorkbenchConstants.TAG_VIEW_STATE);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-     */
-    public void removeExtension(IExtension source, Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            if (objects[i] instanceof IViewPart) {
-                IViewPart part = (IViewPart) objects[i];
-                // String primaryViewId = part.getViewSite().getId();
-                // String secondaryViewId = part.getViewSite().getSecondaryId();
-                // IViewReference viewRef = page.findViewReference(
-                // primaryViewId, secondaryViewId);
-                // IPerspectiveDescriptor[] descs =
-                // page.getOpenedPerspectives();
-                // Perspective active = page.getActivePerspective();
-                // for (int i = 0; i < descs.length; i++) {
-                // Perspective nextPerspective = page.findPerspective(descs[i]);
-                //
-                // if (nextPerspective == null || active == nextPerspective)
-                // continue;
-                //
-                // page.hideView(nextPerspective, viewRef);
-                // }
-                page.hideView(part);
-            }
-
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-     */
-    public void addExtension(IExtensionTracker tracker,IExtension extension) {
-        //Do nothing
-    }
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java
deleted file mode 100644
index fa8c9a8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterPart.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.intro.IntroMessages;
-import org.eclipse.ui.intro.IIntroPart;
-import org.eclipse.ui.intro.IIntroSite;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * Simple view that will wrap an <code>IIntroPart</code>.
- * 
- * @since 3.0
- */
-public final class ViewIntroAdapterPart extends ViewPart {
-
-    private IIntroPart introPart;
-
-    private IIntroSite introSite;
-
-    private boolean handleZoomEvents = true;
-
-    /**
-     * Adds a listener that toggles standby state if the view pane is zoomed. 
-     */
-    private void addPaneListener() {
-        IWorkbenchPartSite site = getSite();
-        if (site instanceof PartSite) {        
-            final WorkbenchPartReference ref = ((WorkbenchPartReference)((PartSite) site).getPartReference()); 
-            ref.addInternalPropertyListener(
-                    new IPropertyListener() {
-                        public void propertyChanged(Object source, int propId) {
-                            if (handleZoomEvents) {
-                                if (propId == WorkbenchPartReference.INTERNAL_PROPERTY_ZOOMED) {
-                                    setStandby(!ref.getPane().isZoomed());
-                                }
-                            }
-                        }
-                    });
-        }
-    }
-
-    /**
-     * Forces the standby state of the intro part.
-     * 
-     * @param standby update the standby state
-     */
-    public void setStandby(final boolean standby) {
-        final Control control = ((PartSite) getSite()).getPane().getControl();
-        BusyIndicator.showWhile(control.getDisplay(), new Runnable() {
-            public void run() {
-                try {
-                    control.setRedraw(false);
-                    introPart.standbyStateChanged(standby);
-                } finally {
-                    control.setRedraw(true);
-                }
-
-                setBarVisibility(standby);
-            }
-        });
-    }
-
-    /**
-     * Toggles handling of zoom events.
-     * 
-     * @param handle whether to handle zoom events
-     */
-    public void setHandleZoomEvents(boolean handle) {
-        handleZoomEvents = handle;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-     */
-    public void createPartControl(Composite parent) {
-        addPaneListener();
-        introPart.createPartControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart#dispose()
-     */
-    public void dispose() {
-    	setBarVisibility(true);
-        super.dispose();
-        getSite().getWorkbenchWindow().getWorkbench().getIntroManager()
-                .closeIntro(introPart);
-        introPart.dispose();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class adapter) {
-        return introPart.getAdapter(adapter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart#getTitleImage()
-     */
-    public Image getTitleImage() {
-        return introPart.getTitleImage();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.part.WorkbenchPart#getTitle()
-     */
-    public String getTitle() {
-    	// this method is called eagerly before our init method is called (and
-    	// therefore before our intropart is created).  By default return 
-    	// the view title from the view declaration.  We will fire a property
-    	// change to set the title to the proper value in the init method.
-    	return introPart == null ? super.getTitle() : introPart.getTitle();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento)
-     */
-    public void init(IViewSite site, IMemento memento) throws PartInitException {
-        super.init(site);
-        Workbench workbench = (Workbench) site.getWorkbenchWindow()
-                .getWorkbench();
-        try {
-            introPart = workbench.getWorkbenchIntroManager()
-                    .createNewIntroPart();
-            // reset the part name of this view to be that of the intro title
-            setPartName(introPart.getTitle());
-            introPart.addPropertyListener(new IPropertyListener() {
-                public void propertyChanged(Object source, int propId) {
-                    firePropertyChange(propId);
-                }
-            });
-            introSite = new ViewIntroAdapterSite(site, workbench
-                    .getIntroDescriptor());
-            introPart.init(introSite, memento);
-            
-        } catch (CoreException e) {
-            WorkbenchPlugin
-                    .log(
-                            IntroMessages.Intro_could_not_create_proxy, new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR, IntroMessages.Intro_could_not_create_proxy, e)); 
-        }
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPart#setFocus()
-	 */
-    public void setFocus() {
-        introPart.setFocus();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewPart#saveState(org.eclipse.ui.IMemento)
-     */
-    public void saveState(IMemento memento) {
-        introPart.saveState(memento);
-    }
-
-	/**
-	 * Sets whether the CoolBar/PerspectiveBar should be visible.
-	 * 
-	 * @param visible whether the CoolBar/PerspectiveBar should be visible
-	 * @since 3.1
-	 */
-	private void setBarVisibility(final boolean visible) {
-		WorkbenchWindow window = (WorkbenchWindow) getSite()
-				.getWorkbenchWindow();
-		
-		final boolean layout = (visible != window.getCoolBarVisible())
-				|| (visible != window.getPerspectiveBarVisible()); // don't layout unless things have actually changed
-		if (visible) {
-			window.setCoolBarVisible(true);
-			window.setPerspectiveBarVisible(true);
-		} else {
-			window.setCoolBarVisible(false);
-			window.setPerspectiveBarVisible(false);
-		}
-
-		if (layout) {
-			window.getShell().layout();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterSite.java
deleted file mode 100644
index 06eb11b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewIntroAdapterSite.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.intro.IntroDescriptor;
-import org.eclipse.ui.intro.IIntroSite;
-
-/**
- * Simple <code>IIntroSite</code> that wraps a <code>IViewSite</code>.  For use in conjunction with 
- * <code>ViewIntroAdapterPart</code>.
- * 
- * @since 3.0
- */
-final class ViewIntroAdapterSite implements IIntroSite {
-    private IntroDescriptor descriptor;
-
-    private IViewSite viewSite;
-
-    public ViewIntroAdapterSite(IViewSite viewSite, IntroDescriptor descriptor) {
-        this.viewSite = viewSite;
-        this.descriptor = descriptor;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.intro.IIntroSite#getActionBars()
-     */
-    public IActionBars getActionBars() {
-        return viewSite.getActionBars();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class adapter) {
-        return viewSite.getAdapter(adapter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartSite#getId()
-     */
-    public String getId() {
-        return descriptor.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartSite#getKeyBindingService()
-     */
-    public IKeyBindingService getKeyBindingService() {
-        return viewSite.getKeyBindingService();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchSite#getPage()
-     */
-    public IWorkbenchPage getPage() {
-        return viewSite.getPage();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartSite#getPluginId()
-     */
-    public String getPluginId() {
-        return descriptor.getPluginId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchSite#getSelectionProvider()
-     */
-    public ISelectionProvider getSelectionProvider() {
-        return viewSite.getSelectionProvider();
-    }
-    
-    public final Object getService(final Class key) {
-    		return viewSite.getService(key);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchSite#getShell()
-     */
-    public Shell getShell() {
-        return viewSite.getShell();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchSite#getWorkbenchWindow()
-     */
-    public IWorkbenchWindow getWorkbenchWindow() {
-        return viewSite.getWorkbenchWindow();
-    }
-
-	public final boolean hasService(final Class key) {
-		return viewSite.hasService(key);
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchSite#setSelectionProvider(org.eclipse.jface.viewers.ISelectionProvider)
-     */
-    public void setSelectionProvider(ISelectionProvider provider) {
-        viewSite.setSelectionProvider(provider);
-    }
-
-	/* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return viewSite.toString();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayout.java
deleted file mode 100644
index 676fb6f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayout.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *      IBM Corporation - initial API and implementation 
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ui.IViewLayout;
-
-/**
- * Implementation of IViewLayout.
- * This is an API facade on the internal ViewLayoutRec.
- *  
- * @since 3.0
- */
-public class ViewLayout implements IViewLayout {
-    private ViewLayoutRec rec;
-
-    public ViewLayout(PageLayout pageLayout, ViewLayoutRec rec) {
-        Assert.isNotNull(pageLayout);
-        Assert.isNotNull(rec);
-        this.rec = rec;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewLayout#getShowTitle()
-     */
-    public boolean getShowTitle() {
-        return rec.showTitle;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewLayout#isCloseable()
-     */
-    public boolean isCloseable() {
-        return rec.isCloseable;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewLayout#isMoveable()
-     */
-    public boolean isMoveable() {
-        return rec.isMoveable;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewLayout#isStandalone()
-     */
-    public boolean isStandalone() {
-        return rec.isStandalone;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewLayout#setCloseable(boolean)
-     */
-    public void setCloseable(boolean closeable) {
-        rec.isCloseable = closeable;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewLayout#setMoveable(boolean)
-     */
-    public void setMoveable(boolean moveable) {
-        rec.isMoveable = moveable;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayoutRec.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayoutRec.java
deleted file mode 100644
index 7b0aa77..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewLayoutRec.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *      IBM Corporation - initial API and implementation 
- *  	Dan Rubel <dan_rubel@instantiations.com>
- *        - Fix for bug 11490 - define hidden view (placeholder for view) in plugin.xml 
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPageLayout;
-
-/**
- * Encapsulates the perspective layout information for a view.
- * 
- * @since 3.0
- */
-public class ViewLayoutRec {
-    boolean isCloseable = true;
-
-    boolean isMoveable = true;
-
-    boolean isStandalone = false;
-
-    boolean showTitle = true;
-
-    float fastViewWidthRatio = IPageLayout.INVALID_RATIO;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPane.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPane.java
deleted file mode 100644
index bc483a1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPane.java
+++ /dev/null
@@ -1,636 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    IBM Corporation - initial API and implementation 
- *    Cagatay Kavukcuoglu <cagatayk@acm.org>
- *      - Fix for bug 10025 - Resizing views should not use height ratios
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarManager2;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.provisional.presentations.IActionBarPresentationFactory;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * Provides a wrapper for the view's widgetry.
- * 
- * TODO: Delete ViewPane and EditorPane, and make PartPane non-abstract.
- */
-public class ViewPane extends PartPane {
-
-    // create initially toolbarless bar manager so that actions may be added in the 
-    // init method of the view.
-    private IToolBarManager2 isvToolBarMgr = null;
-
-    private MenuManager isvMenuMgr;
-
-    boolean hasFocus;
-
-    /**
-     * Indicates whether a toolbar button is shown for the view local menu.
-     */
-    private boolean hadViewMenu = false;
-
-    /**
-     * Toolbar manager for the ISV toolbar.
-     */
-    private class ISVPropListener implements IPropertyChangeListener {    	
-    	private Control toolBar;    	
-    	
-    	/**
-    	 * Constructor
-    	 * @param toolBar
-    	 */
-    	public ISVPropListener (Control toolBar) {
-    		this.toolBar = toolBar;
-    	}
-    	
-    	/* (non-Javadoc)
-    	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-    	 */
-    	public void propertyChange(PropertyChangeEvent event) {    		
-    		String property = event.getProperty();
-    		Integer newValue = (Integer)event.getNewValue();
-	       	if (IToolBarManager2.PROP_LAYOUT.equals(property)) {
-	       		toolBarResized(toolBar, newValue != null ? newValue.intValue() : 0);	
-	       		if (toolBar instanceof Composite) {
-					((Composite)toolBar).layout();
-				} else {
-					toolBar.getParent().layout();
-				}
-	       	}
-	    }
-    }
-
-    /**
-     * Menu manager for view local menu.
-     */
-    class PaneMenuManager extends MenuManager {
-        public PaneMenuManager() {
-            super("View Local Menu"); //$NON-NLS-1$
-        }
-
-        protected void update(boolean force, boolean recursive) {
-            super.update(force, recursive);
-
-            boolean hasMenu = !isEmpty();
-            if (hasMenu != hadViewMenu) {
-                hadViewMenu = hasMenu;
-                firePropertyChange(IPresentablePart.PROP_PANE_MENU);
-            }
-        }
-    }
-
-    /**
-     * Constructs a view pane for a view part.
-     */
-    public ViewPane(IViewReference ref, WorkbenchPage page) {
-        super(ref, page);
-        IActionBarPresentationFactory actionBarPresentation = ((WorkbenchWindow) page
-				.getWorkbenchWindow()).getActionBarPresentationFactory();
-        
-        isvToolBarMgr = actionBarPresentation.createViewToolBarManager();
-    }
-
-    /**
-     * Create control. Add the title bar.
-     */
-    public void createControl(Composite parent) {
-        // Only do this once.
-        if (getControl() != null && !getControl().isDisposed()) {
-			return;
-		}
-
-        super.createControl(parent);
-    }
-
-    /**
-     * Create a title bar for the pane.
-     * 	- the view icon and title to the far left
-     *	- the view toolbar appears in the middle.
-     * 	- the view pulldown menu, pin button, and close button to the far right.
-     */
-    protected void createTitleBar() {
-        // Only do this once.
-
-        updateTitles();
-
-        // Listen to title changes.
-        getPartReference().addPropertyListener(this);
-
-        createToolBars();
-
-    }
-
-    private void toolBarResized(Control toolBar, int newSize) {
-        
-        Control toolbar = isvToolBarMgr.getControl2();
-        if (toolbar != null) {
-            Control ctrl = getControl();
-
-            boolean visible = ctrl != null && ctrl.isVisible()
-                    && toolbarIsVisible();
-
-            toolbar.setVisible(visible);
-        }
-
-        firePropertyChange(IPresentablePart.PROP_TOOLBAR);
-    }
-
-    /**
-     * 
-     */
-    private void createToolBars() {
-        Composite parentControl = control;
-        
-        // ISV toolbar.
-        //			// 1GD0ISU: ITPUI:ALL - Dbl click on view tool cause zoom
-        final Control isvToolBar = isvToolBarMgr.createControl2(parentControl.getParent());
-        
-        isvToolBarMgr.addPropertyChangeListener(new ISVPropListener(isvToolBar));
-        
-        isvToolBar.addMouseListener(new MouseAdapter() {
-            public void mouseDoubleClick(MouseEvent event) {
-                if (event.widget instanceof ToolBar) {
-                
-                    if (((ToolBar)event.widget).getItem(new Point(event.x, event.y)) == null) {
-						doZoom();
-					}
-                }
-            }
-        });
-
-        
-        isvToolBar.addListener(SWT.Activate, this);
-        isvToolBar.moveAbove(control);
-    }
-
-    public void dispose() {
-        super.dispose();
-
-        /* Bug 42684.  The ViewPane instance has been disposed, but an attempt is
-         * then made to remove focus from it.  This happens because the ViewPane is
-         * still viewed as the active part.  In general, when disposed, the control
-         * containing the titleLabel will also disappear (disposing of the 
-         * titleLabel).  As a result, the reference to titleLabel should be dropped. 
-         */
-        if (isvMenuMgr != null) {
-            isvMenuMgr.dispose();
-        }
-        if (isvToolBarMgr != null) {
-            isvToolBarMgr.dispose();
-        }
-    }
-
-    /**
-     * @see PartPane#doHide
-     */
-    public void doHide() {
-        getPage().hideView(getViewReference());
-    }
-
-    /*package*/Rectangle getParentBounds() {
-        Control ctrl = getControl();
-
-        if (getContainer() != null && getContainer() instanceof LayoutPart) {
-            LayoutPart part = (LayoutPart) getContainer();
-
-            if (part.getControl() != null) {
-                ctrl = part.getControl();
-            }
-        }
-
-        return DragUtil.getDisplayBounds(ctrl);
-    }
-
-    /**
-     * Make this view pane a fast view
-     */
-    public void doMakeFast() {
-        WorkbenchWindow window = (WorkbenchWindow) getPage()
-                .getWorkbenchWindow();
-
-        FastViewBar fastViewBar = window.getFastViewBar();
-        if (fastViewBar == null || getPage().getActivePerspective() == null)
-            return;
-
-        Shell shell = window.getShell();
-
-        RectangleAnimation animation = new RectangleAnimation(shell,
-                getParentBounds(), fastViewBar.getLocationOfNextIcon());
-
-        animation.schedule();
-
-        FastViewManager fvm = getPage().getActivePerspective().getFastViewManager();
-        fvm.addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, getViewReference(), true);
-    }
-
-    public void doRemoveFast() {
-        if (getPage().getActivePerspective() == null)
-            return;
-
-        Shell shell = getControl().getShell();
-
-        Rectangle initialBounds = getParentBounds();
-
-        FastViewManager fvm = getPage().getActivePerspective().getFastViewManager();
-        fvm.removeViewReference(getViewReference(), true, true);
-
-        IWorkbenchPart toActivate = getViewReference().getPart(true);
-        if (toActivate != null) {
-            getPage().activate(toActivate);
-        }
-
-        Rectangle finalBounds = getParentBounds();
-
-        RectangleAnimation animation = new RectangleAnimation(shell,
-                initialBounds, finalBounds);
-
-        animation.schedule();
-    }
-
-    /**
-     * Pin the view.
-     */
-    protected void doDock() {
-    	Perspective persp = getPage().getActivePerspective();
-    	if (persp != null) {
-    		persp.getFastViewManager().removeViewReference(getViewReference(), true, true);
-    	}
-    }
-    
-    public void doDetach() {
-    	getPage().detachView(getViewReference());
-    }
-    		
-    public void doAttach() {
-    	getPage().attachView(getViewReference());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#getCompoundId()
-     */
-    public String getCompoundId() {
-        IViewReference ref = getViewReference();
-        if (ref != null) {
-			return ViewFactory.getKey(ref);
-		}
-        
-        return super.getCompoundId();
-    }
-
-    /**
-     * Returns the drag control.
-     */
-    public Control getDragHandle() {
-        return control;
-    }
-
-    /**
-     * @see ViewActionBars
-     */
-    public MenuManager getMenuManager() {
-        if (isvMenuMgr == null) {
-			isvMenuMgr = new PaneMenuManager();
-		}
-        return isvMenuMgr;
-    }
-
-    /**
-     * Returns the tab list to use when this part is active.
-     * Includes the view and its tab (if applicable), in the appropriate order.
-     */
-    public Control[] getTabList() {
-        Control c = getControl();
-        if (getContainer() instanceof ViewStack) {
-            ViewStack tf = (ViewStack) getContainer();
-            return tf.getTabList(this);
-        }
-        return new Control[] { c };
-    }
-
-    /**
-     * @see ViewActionBars
-     */
-    public IToolBarManager2 getToolBarManager() {
-        return isvToolBarMgr;
-    }
-
-    /**
-     * Answer the view part child.
-     */
-    public IViewReference getViewReference() {
-        return (IViewReference) getPartReference();
-    }
-
-    /**
-     * Sets the fast view state.  If this view is a fast view then
-     * various controls like pin and minimize are added to the
-     * system bar.
-     */
-    public void setFast(boolean b) {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartPane.
-     */
-    /* package */
-    void shellActivated() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PartPane.
-     */
-    /* package */
-    void shellDeactivated() {
-    }
-
-    /**
-     * Set the active border.
-     * @param active
-     */
-    void setActive(boolean active) {
-        hasFocus = active;
-
-        if (getContainer() instanceof PartStack) {
-            ((PartStack) getContainer())
-                    .setActive(active ? StackPresentation.AS_ACTIVE_FOCUS
-                            : StackPresentation.AS_INACTIVE);
-        }
-    }
-
-    /**
-     * Indicate focus in part.
-     */
-    public void showFocus(boolean inFocus) {
-        setActive(inFocus);
-    }
-
-    /**
-     * Return true if this view is a fast view.
-     */
-    private boolean isFastView() {
-        return page.isFastView(getViewReference());
-    }
-
-    /**
-     * Return true if the view may be moved.
-     */
-    boolean isMoveable() {
-        return !page.isFixedLayout();
-    }
-
-    /**
-     * Return if there should be a view menu at all.
-     * There is no view menu if there is no menu manager,
-     * no pull down button or if the receiver is an
-     * inactive fast view.
-     */
-    public boolean hasViewMenu() {
-
-        if (isvMenuMgr != null) {
-            return !isvMenuMgr.isEmpty();
-        }
-
-        return false;
-    }
-
-    public void showViewMenu(Point location) {
-        if (!hasViewMenu()) {
-			return;
-		}
-
-        // If this is a fast view, it may have been minimized. Do nothing in this case.
-        if (isFastView() && (page.getActiveFastView() != getViewReference())) {
-			return;
-		}
-
-        Menu aMenu = isvMenuMgr.createContextMenu(getControl().getParent());
-        aMenu.setLocation(location.x, location.y);
-        aMenu.setVisible(true);
-    }
-
-    public String toString() {
-
-        return getClass().getName() + "@" + Integer.toHexString(hashCode()); //$NON-NLS-1$
-    }
-
-    /**
-     * @see ViewActionBars
-     */
-    public void updateActionBars() {
-        if (isvMenuMgr != null) {
-			isvMenuMgr.update(false);
-		}
-        if (isvToolBarMgr != null) {
-			isvToolBarMgr.update(false);
-		}
-
-    }
-
-    /**
-     * Update the title attributes.
-     */
-    public void updateTitles() {
-        firePropertyChange(IPresentablePart.PROP_TITLE);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#addSizeMenuItem(org.eclipse.swt.widgets.Menu)
-     */
-    public void addSizeMenuItem(Menu menu, int index) {
-        if (isMoveable()) {
-			super.addSizeMenuItem(menu, index);
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#doZoom()
-     */
-    protected void doZoom() {
-        if (isMoveable()) {
-			super.doZoom();
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#setContainer(org.eclipse.ui.internal.ILayoutContainer)
-     */
-    public void setContainer(ILayoutContainer container) {
-        ILayoutContainer oldContainer = getContainer();
-        if (hasFocus) {
-            if (oldContainer != null && oldContainer instanceof PartStack) {
-                ((PartStack) oldContainer)
-                        .setActive(StackPresentation.AS_INACTIVE);
-            }
-
-            if (container != null && container instanceof PartStack) {
-                ((PartStack) container)
-                        .setActive(StackPresentation.AS_ACTIVE_FOCUS);
-            }
-        }
-
-        super.setContainer(container);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#reparent(org.eclipse.swt.widgets.Composite)
-     */
-    public void reparent(Composite newParent) {
-        super.reparent(newParent);
-
-        if (isvToolBarMgr != null) {
-            Control bar = isvToolBarMgr.getControl2();
-            if (bar != null) {
-                bar.setParent(newParent);
-                bar.moveAbove(control);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#moveAbove(org.eclipse.swt.widgets.Control)
-     */
-    public void moveAbove(Control refControl) {
-        super.moveAbove(refControl);
-
-        Control toolbar = internalGetToolbar();
-        
-        if (toolbar != null) {
-            toolbar.moveAbove(control);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#setVisible(boolean)
-     */
-    public void setVisible(boolean makeVisible) {
-        super.setVisible(makeVisible);
-
-        Control toolbar = internalGetToolbar();
-        
-        if (toolbar != null) {
-            boolean visible = makeVisible && toolbarIsVisible();
-            toolbar.setVisible(visible);
-        }
-    }
-
-    public boolean toolbarIsVisible() {
-        IToolBarManager2 toolbarManager = getToolBarManager();
-
-        if (toolbarManager == null) {
-            return false;
-        }
-
-        Control control = toolbarManager.getControl2();
-
-        if (control == null || control.isDisposed()) {
-            return false;
-        }
-
-        return toolbarManager.getItemCount() > 0;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#showHighlight()
-     */
-    public void showHighlight() {
-        firePropertyChange(IPresentablePart.PROP_HIGHLIGHT_IF_BACK);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.LayoutPart#getPlaceHolderId()
-     */
-    public String getPlaceHolderId() {
-        return ViewFactory.getKey(getViewReference());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#getToolBar()
-     */
-    public Control getToolBar() {
-
-        if (!toolbarIsVisible()) {
-            return null;
-        }
-        
-        return internalGetToolbar();
-    }
-    
-    private Control internalGetToolbar() {
-        if (isvToolBarMgr == null) {
-            return null;
-        }
-        
-        return isvToolBarMgr.getControl2();        
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartPane#isCloseable()
-     */
-    public boolean isCloseable() {
-        Perspective perspective = page.getActivePerspective();
-        if (perspective == null) {
-            // Shouldn't happen -- can't have a ViewStack without a
-            // perspective
-            return true;
-        }
-        return perspective.isCloseable(getViewReference());
-    }
-    
-    public void showSystemMenu() {
-		if (isFastView()) {
-	        Perspective perspective = page.getActivePerspective();
-	        if (perspective != null) {
-				perspective.getFastViewPane().showSystemMenu();
-			}
-		} else {
-			super.showSystemMenu();	
-		}
-    } 
-    
-    public void showPaneMenu() {
-		if (isFastView()) {
-	        Perspective perspective = page.getActivePerspective();
-			if (perspective != null) {
-				perspective.getFastViewPane().showPaneMenu();
-			}
-		} else {
-			super.showPaneMenu();	
-		}
-    } 
-    
-    public void removeContributions() {
-    	super.removeContributions();
-    	
-        if (isvMenuMgr != null) {
-            isvMenuMgr.removeAll();
-        }
-        if (isvToolBarMgr != null) {
-            isvToolBarMgr.removeAll();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPluginAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPluginAction.java
deleted file mode 100644
index 8fec796..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPluginAction.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.WorkbenchException;
-
-/**
- * This class extends regular plugin action with the
- * additional requirement that the delegate has
- * to implement interface IViewActionDeelgate.
- * This interface has one additional method (init)
- * whose purpose is to initialize the delegate with
- * the view part in which the action is intended to run.
- */
-public final class ViewPluginAction extends PartPluginAction {
-    private IViewPart viewPart;
-
-    /**
-     * This class adds the requirement that action delegates
-     * loaded on demand implement IViewActionDelegate
-     */
-    public ViewPluginAction(IConfigurationElement actionElement,
-            IViewPart viewPart, String id, int style) {
-        super(actionElement, id, style);
-        this.viewPart = viewPart;
-        registerSelectionListener(viewPart);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected IActionDelegate validateDelegate(Object obj)
-            throws WorkbenchException {
-        if (obj instanceof IViewActionDelegate) {
-			return (IViewActionDelegate) obj;
-		} else {
-			throw new WorkbenchException(
-                    "Action must implement IViewActionDelegate"); //$NON-NLS-1$
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected void initDelegate() {
-        super.initDelegate();
-        ((IViewActionDelegate) getDelegate()).init(viewPart);
-    }
-
-    /**
-     * Returns true if the view has been set
-     * The view may be null after the constructor is called and
-     * before the view is stored.  We cannot create the delegate
-     * at that time.
-     */
-    public boolean isOkToCreateDelegate() {
-        return super.isOkToCreateDelegate() && viewPart != null;
-    }
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.PluginAction#dispose()
-	 */
-	public void dispose() {
-		unregisterSelectionListener(viewPart);
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java
deleted file mode 100644
index b9b2fb7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewReference.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart2;
-import org.eclipse.ui.IWorkbenchPart3;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.registry.ViewDescriptor;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.part.IWorkbenchPartOrientation;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-class ViewReference extends WorkbenchPartReference implements IViewReference {
-
-	/**
-	 * 
-	 */
-	private final ViewFactory factory;
-
-	String secondaryId;
-
-	private IMemento memento;
-
-	private ViewActionBuilder actionBuilder;
-
-	public ViewReference(ViewFactory factory, String id, String secondaryId,
-			IMemento memento) {
-		super();
-		this.memento = memento;
-		this.factory = factory;
-		ViewDescriptor desc = (ViewDescriptor) this.factory.viewReg.find(id);
-		ImageDescriptor iDesc = null;
-		String title = null;
-		if (desc != null) {
-			iDesc = desc.getImageDescriptor();
-			title = desc.getLabel();
-		}
-
-		String name = null;
-
-		if (memento != null) {
-			name = memento.getString(IWorkbenchConstants.TAG_PART_NAME);
-			IMemento propBag = memento.getChild(IWorkbenchConstants.TAG_PROPERTIES);
-			if (propBag != null) {
-				IMemento[] props = propBag
-						.getChildren(IWorkbenchConstants.TAG_PROPERTY);
-				for (int i = 0; i < props.length; i++) {
-					propertyCache.put(props[i].getID(), props[i].getTextData());
-				}
-			}
-		}
-		if (name == null) {
-			name = title;
-		}
-
-		init(id, title, "", iDesc, name, ""); //$NON-NLS-1$//$NON-NLS-2$
-		this.secondaryId = secondaryId;
-	}
-
-	protected PartPane createPane() {
-		return new ViewPane(this, this.factory.page);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.WorkbenchPartReference#dispose()
-	 */
-	protected void doDisposePart() {
-		IViewPart view = (IViewPart) part;
-		super.doDisposePart();
-		if (view != null) {
-			// Free action bars, pane, etc.
-			PartSite site = (PartSite) view.getSite();
-			ViewActionBars actionBars = (ViewActionBars) site.getActionBars();
-			//
-			// 3.3 start
-			//
-			IMenuService menuService = (IMenuService) site
-					.getService(IMenuService.class);
-			menuService.releaseContributions((ContributionManager) site.getActionBars()
-					.getMenuManager());
-			menuService.releaseContributions((ContributionManager) site.getActionBars()
-					.getToolBarManager());
-			// 3.3 end
-			actionBars.dispose();
-			
-			// and now dispose the delegates since the
-			// PluginActionContributionItem
-			// can no longer do that
-			if (actionBuilder != null) {
-				actionBuilder.dispose();
-				actionBuilder = null;
-			}
-
-			// Free the site.
-			site.dispose();
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPartReference#getPage()
-	 */
-	public IWorkbenchPage getPage() {
-		return this.factory.page;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.WorkbenchPartReference#getRegisteredName()
-	 */
-	public String getRegisteredName() {
-		if (part != null && part.getSite() != null) {
-			return part.getSite().getRegisteredName();
-		}
-
-		IViewRegistry reg = this.factory.viewReg;
-		IViewDescriptor desc = reg.find(getId());
-		if (desc != null) {
-			return desc.getLabel();
-		}
-		return getTitle();
-	}
-
-	protected String computePartName() {
-		if (part instanceof IWorkbenchPart2) {
-			return super.computePartName();
-		}
-		return getRegisteredName();
-	}
-
-	protected String computeContentDescription() {
-		if (part instanceof IWorkbenchPart2) {
-			return super.computeContentDescription();
-		}
-		
-		String rawTitle = getRawTitle();
-
-		if (!Util.equals(rawTitle, getRegisteredName())) {
-			return rawTitle;
-		}
-
-		return ""; //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IViewReference
-	 */
-	public String getSecondaryId() {
-		return secondaryId;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IViewReference#getView(boolean)
-	 */
-	public IViewPart getView(boolean restore) {
-		return (IViewPart) getPart(restore);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IViewReference#isFastView()
-	 */
-	public boolean isFastView() {
-		return this.factory.page.isFastView(this);
-	}
-
-	/**
-	 * Wrapper for restoring the view. First, this delegates to
-	 * busyRestoreViewHelper to do the real work of restoring the view. If
-	 * unable to restore the view, this method tries to substitute an error part
-	 * and return success.
-	 * 
-	 * @return the created part
-	 */
-	protected IWorkbenchPart createPart() {
-
-		// Check the status of this part
-
-		IWorkbenchPart result = null;
-		PartInitException exception = null;
-
-		// Try to restore the view -- this does the real work of restoring the
-		// view
-		//
-		try {
-			result = createPartHelper();
-		} catch (PartInitException e) {
-			exception = e;
-		}
-
-		// If unable to create the part, create an error part instead
-		// and pass the error to the status handling facility
-		if (exception != null) {
-			IStatus partStatus = exception.getStatus();
-			IStatus displayStatus = StatusUtil.newStatus(partStatus,
-					NLS.bind(WorkbenchMessages.ViewFactory_initException, partStatus.getMessage()));
-			IStatus logStatus = StatusUtil
-					.newStatus(
-							partStatus,
-							NLS
-									.bind(
-											"Unable to create view ID {0}: {1}", getId(), partStatus.getMessage())); //$NON-NLS-1$
-
-			// Pass the error to the status handling facility
-			StatusManager.getManager().handle(logStatus);
-
-			IViewDescriptor desc = factory.viewReg.find(getId());
-			String label = getId();
-			if (desc != null) {
-				label = desc.getLabel();
-			}
-
-			ErrorViewPart part = new ErrorViewPart(displayStatus);
-
-			PartPane pane = getPane();
-			ViewSite site = new ViewSite(this, part, factory.page, getId(),
-					PlatformUI.PLUGIN_ID, label);
-			site.setActionBars(new ViewActionBars(factory.page.getActionBars(),
-					site, (ViewPane) pane));
-			try {
-				part.init(site);
-			} catch (PartInitException e) {
-				StatusUtil.handleStatus(e, StatusManager.SHOW
-						| StatusManager.LOG);
-				return null;
-			}
-			part.setPartName(label);
-
-			Composite parent = (Composite) pane.getControl();
-			Composite content = new Composite(parent, SWT.NONE);
-			content.setLayout(new FillLayout());
-
-			try {
-				part.createPartControl(content);
-			} catch (Exception e) {
-				content.dispose();
-				StatusUtil.handleStatus(e, StatusManager.SHOW
-						| StatusManager.LOG);
-				return null;
-			}
-
-			result = part;
-		}
-
-		return result;
-	}
-
-	private IWorkbenchPart createPartHelper() throws PartInitException {
-
-		IWorkbenchPart result = null;
-
-		IMemento stateMem = null;
-		if (memento != null) {
-			stateMem = memento.getChild(IWorkbenchConstants.TAG_VIEW_STATE);
-		}
-
-		IViewDescriptor desc = factory.viewReg.find(getId());
-		if (desc == null) {
-			throw new PartInitException(
-					NLS.bind(WorkbenchMessages.ViewFactory_couldNotCreate, getId()));
-		}
-
-		// Create the part pane
-		PartPane pane = getPane();
-
-		// Create the pane's top-level control
-		pane.createControl(factory.page.getClientComposite());
-
-		String label = desc.getLabel(); // debugging only
-
-		// Things that will need to be disposed if an exception occurs (they are
-		// listed here
-		// in the order they should be disposed)
-		Composite content = null;
-		IViewPart initializedView = null;
-		ViewSite site = null;
-		ViewActionBars actionBars = null;
-		// End of things that need to be explicitly disposed from the try block
-
-		try {
-			IViewPart view = null;
-			try {
-				UIStats.start(UIStats.CREATE_PART, label);
-				view = desc.createView();
-			} finally {
-				UIStats.end(UIStats.CREATE_PART, view, label);
-			}
-
-			if (view instanceof IWorkbenchPart3) {
-				createPartProperties((IWorkbenchPart3)view);
-			}
-			// Create site
-			site = new ViewSite(this, view, factory.page, desc);
-			actionBars = new ViewActionBars(factory.page.getActionBars(), site,
-					(ViewPane) pane);
-			site.setActionBars(actionBars);
-
-			try {
-				UIStats.start(UIStats.INIT_PART, label);
-				view.init(site, stateMem);
-				// Once we've called init, we MUST dispose the view. Remember
-				// the fact that
-				// we've initialized the view in case an exception is thrown.
-				initializedView = view;
-
-			} finally {
-				UIStats.end(UIStats.INIT_PART, view, label);
-			}
-
-			if (view.getSite() != site) {
-				throw new PartInitException(
-						WorkbenchMessages.ViewFactory_siteException, null);
-			}
-			int style = SWT.NONE;
-			if (view instanceof IWorkbenchPartOrientation) {
-				style = ((IWorkbenchPartOrientation) view).getOrientation();
-			}
-
-			// Create the top-level composite
-			{
-				Composite parent = (Composite) pane.getControl();
-				content = new Composite(parent, style);
-				content.setLayout(new FillLayout());
-
-				try {
-					UIStats.start(UIStats.CREATE_PART_CONTROL, label);
-					view.createPartControl(content);
-
-					parent.layout(true);
-				} finally {
-					UIStats.end(UIStats.CREATE_PART_CONTROL, view, label);
-				}
-			}
-
-			// Install the part's tools and menu
-			{
-				//
-				// 3.3 start
-				//
-				IMenuService menuService = (IMenuService) site
-						.getService(IMenuService.class);
-				menuService.populateContributionManager(
-						(ContributionManager) site.getActionBars()
-								.getMenuManager(), "menu:" //$NON-NLS-1$
-								+ site.getId());
-				menuService
-						.populateContributionManager((ContributionManager) site
-								.getActionBars().getToolBarManager(),
-								"toolbar:" + site.getId()); //$NON-NLS-1$
-				// 3.3 end
-
-				actionBuilder = new ViewActionBuilder();
-				actionBuilder.readActionExtensions(view);
-				ActionDescriptor[] actionDescriptors = actionBuilder
-						.getExtendedActions();
-				IKeyBindingService keyBindingService = view.getSite()
-						.getKeyBindingService();
-
-				if (actionDescriptors != null) {
-					for (int i = 0; i < actionDescriptors.length; i++) {
-						ActionDescriptor actionDescriptor = actionDescriptors[i];
-
-						if (actionDescriptor != null) {
-							IAction action = actionDescriptors[i].getAction();
-
-							if (action != null
-									&& action.getActionDefinitionId() != null) {
-								keyBindingService.registerAction(action);
-							}
-						}
-					}
-				}
-
-				site.getActionBars().updateActionBars();
-			}
-
-			// The editor should now be fully created. Exercise its public
-			// interface, and sanity-check
-			// it wherever possible. If it's going to throw exceptions or behave
-			// badly, it's much better
-			// that it does so now while we can still cancel creation of the
-			// part.
-			PartTester.testView(view);
-
-			result = view;
-
-			IConfigurationElement element = (IConfigurationElement) Util.getAdapter(desc,
-					IConfigurationElement.class);
-			if (element != null) {
-				factory.page.getExtensionTracker().registerObject(
-						element.getDeclaringExtension(), view,
-						IExtensionTracker.REF_WEAK);
-			}
-		} catch (Throwable e) {
-			if ((e instanceof Error) && !(e instanceof LinkageError)) {
-				throw (Error) e;
-			}
-			
-			// An exception occurred. First deallocate anything we've allocated
-			// in the try block (see the top
-			// of the try block for a list of objects that need to be explicitly
-			// disposed)
-			if (content != null) {
-				try {
-					content.dispose();
-				} catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-			}
-
-			if (initializedView != null) {
-				try {
-					initializedView.dispose();
-				} catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-			}
-
-			if (site != null) {
-				try {
-					site.dispose();
-				} catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-			}
-
-			if (actionBars != null) {
-				try {
-					actionBars.dispose();
-				} catch (RuntimeException re) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-									re));
-				}
-			}
-
-			throw new PartInitException(WorkbenchPlugin.getStatus(e));
-		}
-
-		return result;
-	}
-
-	/**
-	 * The memento is that last view state saved by the workbench.
-	 * 
-	 * @return the last state that was saved by the workbench. It can return
-	 *         <code>null</code>.
-	 * @since 3.1.1
-	 */
-	public IMemento getMemento() {
-		return memento;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSashContainer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSashContainer.java
deleted file mode 100644
index f4e31cf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSashContainer.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-
-/**
- * Represents the top level container.
- */
-public class ViewSashContainer extends PartSashContainer {
-    public ViewSashContainer(WorkbenchPage page, Composite parent) {
-        super("root layout container", page, parent);//$NON-NLS-1$
-    }
-
-    /**
-     * Gets root container for this part.
-     */
-    public ViewSashContainer getRootContainer() {
-        return this;
-    }
-
-    /**
-     * Subclasses override this method to specify
-     * the composite to use to parent all children
-     * layout parts it contains.
-     */
-    protected Composite createParent(Composite parentWidget) {
-        return parentWidget;
-    }
-
-    /**
-     * Subclasses override this method to dispose
-     * of any swt resources created during createParent.
-     */
-    protected void disposeParent() {
-        // do nothing
-    }
-
-    /**
-     * Get the part control.  This method may return null.
-     */
-    public Control getControl() {
-        return this.parent;
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public IStatus restoreState(IMemento memento) {
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.RootLayoutContainer_problemsRestoringPerspective, null);
-
-        // Read the info elements.
-        IMemento[] children = memento.getChildren(IWorkbenchConstants.TAG_INFO);
-
-        // Create a part ID to part hashtable.
-        final Map mapIDtoPart = new HashMap(children.length);
-
-        // Loop through the info elements.
-        for (int i = 0; i < children.length; i++) {
-            // Get the info details.
-            IMemento childMem = children[i];
-            String partID = childMem.getString(IWorkbenchConstants.TAG_PART);
-            final String relativeID = childMem
-                    .getString(IWorkbenchConstants.TAG_RELATIVE);
-            int relationship = 0;
-            float ratio = 0.0f;
-            int left = 0, right = 0;
-            if (relativeID != null) {
-                relationship = childMem.getInteger(
-                        IWorkbenchConstants.TAG_RELATIONSHIP).intValue();
-
-                // Note: the ratio is used for reading pre-3.0 eclipse workspaces. It should be ignored
-                // if "left" and "right" are available.
-                Float ratioFloat = childMem
-                        .getFloat(IWorkbenchConstants.TAG_RATIO);
-                Integer leftInt = childMem
-                        .getInteger(IWorkbenchConstants.TAG_RATIO_LEFT);
-                Integer rightInt = childMem
-                        .getInteger(IWorkbenchConstants.TAG_RATIO_RIGHT);
-                if (leftInt != null && rightInt != null) {
-                    left = leftInt.intValue();
-                    right = rightInt.intValue();
-                } else {
-                    if (ratioFloat != null) {
-                        ratio = ratioFloat.floatValue();
-                    }
-                }
-            }
-            String strFolder = childMem
-                    .getString(IWorkbenchConstants.TAG_FOLDER);
-
-            // Create the part.
-            LayoutPart part = null;
-            if (strFolder == null) {
-				part = new PartPlaceholder(partID);
-			} else {
-                ViewStack folder = new ViewStack(page);
-                folder.setID(partID);
-                result.add(folder.restoreState(childMem
-                        .getChild(IWorkbenchConstants.TAG_FOLDER)));
-                ContainerPlaceholder placeholder = new ContainerPlaceholder(
-                        partID);
-                placeholder.setRealContainer(folder);
-                part = placeholder;
-            }
-            // 1FUN70C: ITPUI:WIN - Shouldn't set Container when not active
-            part.setContainer(this);
-
-            final int myLeft = left, myRight= right, myRelationship = relationship;
-            final float myRatio = ratio;
-            final LayoutPart myPart = part;
-            
-            StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					// Add the part to the layout
-		            if (relativeID == null) {
-		                add(myPart);
-		            } else {
-		                LayoutPart refPart = (LayoutPart) mapIDtoPart.get(relativeID);
-		                if (refPart != null) {
-		                    if (myLeft != 0) {
-								add(myPart, myRelationship, myLeft, myRight, refPart);
-							} else {
-								add(myPart, myRelationship, myRatio, refPart);
-							}
-		                } else {
-		                    WorkbenchPlugin
-		                            .log("Unable to find part for ID: " + relativeID);//$NON-NLS-1$
-		                }
-		            }
-				}});
-            
-            mapIDtoPart.put(partID, part);
-        }
-        return result;
-    }
-
-    /**
-     * @see IPersistablePart
-     */
-    public IStatus saveState(IMemento memento) {
-        RelationshipInfo[] relationships = computeRelation();
-
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                WorkbenchMessages.RootLayoutContainer_problemsSavingPerspective, null); 
-
-        // Loop through the relationship array.
-        for (int i = 0; i < relationships.length; i++) {
-            // Save the relationship info ..
-            //		private LayoutPart part;
-            // 		private int relationship;
-            // 		private float ratio;
-            // 		private LayoutPart relative;
-            RelationshipInfo info = relationships[i];
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_INFO);
-            childMem.putString(IWorkbenchConstants.TAG_PART, info.part.getID());
-            if (info.relative != null) {
-                childMem.putString(IWorkbenchConstants.TAG_RELATIVE,
-                        info.relative.getID());
-                childMem.putInteger(IWorkbenchConstants.TAG_RELATIONSHIP,
-                        info.relationship);
-                childMem.putInteger(IWorkbenchConstants.TAG_RATIO_LEFT,
-                        info.left);
-                childMem.putInteger(IWorkbenchConstants.TAG_RATIO_RIGHT,
-                        info.right);
-
-                // The ratio is only needed for saving workspaces that can be read by old versions
-                // of Eclipse. It is not used in newer versions of Eclipse, which use the "left"
-                // and "right" attributes instead.
-                childMem.putFloat(IWorkbenchConstants.TAG_RATIO, info
-                        .getRatio());
-            }
-
-            // Is this part a folder or a placeholder for one?
-            ViewStack folder = null;
-            if (info.part instanceof ViewStack) {
-                folder = (ViewStack) info.part;
-            } else if (info.part instanceof ContainerPlaceholder) {
-                LayoutPart part = ((ContainerPlaceholder) info.part)
-                        .getRealContainer();
-                if (part instanceof ViewStack) {
-					folder = (ViewStack) part;
-				}
-            }
-
-            // If this is a folder (ViewStack) save the contents.
-            if (folder != null) {
-                childMem.putString(IWorkbenchConstants.TAG_FOLDER, "true");//$NON-NLS-1$
-                
-                IMemento folderMem = childMem
-                        .createChild(IWorkbenchConstants.TAG_FOLDER);
-                result.add(folder.saveState(folderMem));
-            }
-        }
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#getDockingRatio(org.eclipse.ui.internal.LayoutPart, org.eclipse.ui.internal.LayoutPart)
-     */
-    protected float getDockingRatio(LayoutPart dragged, LayoutPart target) {
-        if (isStackType(target)) {
-            return super.getDockingRatio(dragged, target);
-        } else {
-            return 0.25f;
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#isStackType(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean isStackType(LayoutPart toTest) {
-        return (toTest instanceof ViewStack);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#isPaneType(org.eclipse.ui.internal.LayoutPart)
-     */
-    public boolean isPaneType(LayoutPart toTest) {
-        return (toTest instanceof ViewPane);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#createStack(org.eclipse.ui.internal.LayoutPart)
-     */
-    protected PartStack createStack() {
-        ViewStack result = new ViewStack(page);
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#setVisiblePart(org.eclipse.ui.internal.ILayoutContainer, org.eclipse.ui.internal.LayoutPart)
-     */
-    protected void setVisiblePart(ILayoutContainer container,
-            LayoutPart visiblePart) {
-        if (container instanceof ViewStack) {
-            ViewStack tabFolder = (ViewStack) container;
-
-            tabFolder.setSelection(visiblePart);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#getVisiblePart(org.eclipse.ui.internal.ILayoutContainer)
-     */
-    protected LayoutPart getVisiblePart(ILayoutContainer container) {
-        return ((ViewStack) container).getSelection();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#derefPart(org.eclipse.ui.internal.LayoutPart)
-     */
-    protected void derefPart(LayoutPart sourcePart) {
-        page.getActivePerspective().getPresentation().derefPart(sourcePart);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartSashContainer#addChild(org.eclipse.ui.internal.PartSashContainer.RelationshipInfo)
-     */
-    protected void addChild(RelationshipInfo info) {
-        LayoutPart child = info.part;
-
-        // Nasty hack: ensure that all views end up inside a tab folder.
-        // Since the view title is provided by the tab folder, this ensures
-        // that views don't get created without a title tab.
-        if (child instanceof ViewPane) {
-            ViewStack folder = new ViewStack(page);
-            folder.add(child);
-            info.part = folder;
-        }
-
-        super.addChild(info);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.ILayoutContainer#replace(org.eclipse.ui.internal.LayoutPart, org.eclipse.ui.internal.LayoutPart)
-     */
-    public void replace(LayoutPart oldChild, LayoutPart newChild) {
-        if (!isChild(oldChild)) {
-            return;
-        }
-
-        // Nasty hack: ensure that all views end up inside a tab folder.
-        // Since the view title is provided by the tab folder, this ensures
-        // that views don't get created without a title tab.
-        if (newChild instanceof ViewPane) {
-            ViewStack folder = new ViewStack(page);
-            folder.add(newChild);
-            newChild = folder;
-        }
-
-        super.replace(oldChild, newChild);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSite.java
deleted file mode 100644
index 5a61d1a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewSite.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * A view container manages the services for a view.
- */
-public class ViewSite extends PartSite implements IViewSite {
-    
-    public ViewSite(IViewReference ref, IViewPart view, WorkbenchPage page,
-            String id, String pluginId, String registeredName) {
-
-        super(ref, view, page);
-        
-        setId(id);
-        setRegisteredName(registeredName);
-        setPluginId(pluginId);
-    }
-    
-    /**
-     * Creates a new ViewSite.
-     */
-    public ViewSite(IViewReference ref, IViewPart view, WorkbenchPage page,
-            IViewDescriptor desc) {
-        super(ref, view, page);
-        setConfigurationElement((IConfigurationElement) Util.getAdapter(desc, IConfigurationElement.class));
-    }
-
-    /**
-     * Returns the secondary id or <code>null</code>.
-     */
-    public String getSecondaryId() {
-        return ((IViewReference) getPartReference()).getSecondaryId();
-    }
-
-    /**
-     * Returns the view.
-     */
-    public IViewPart getViewPart() {
-        return (IViewPart) getPart();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStack.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStack.java
deleted file mode 100644
index 89140f6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStack.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Cagatay Kavukcuoglu <cagatayk@acm.org>
- *     - Fix for bug 10025 - Resizing views should not use height ratios
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.ui.internal.presentations.PresentablePart;
-import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
-import org.eclipse.ui.internal.presentations.SystemMenuDetach;
-import org.eclipse.ui.internal.presentations.SystemMenuFastView;
-import org.eclipse.ui.internal.presentations.SystemMenuSize;
-import org.eclipse.ui.internal.presentations.UpdatingActionContributionItem;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * Manages a set of ViewPanes that are docked into the workbench window. The container for a ViewStack
- * is always a PartSashContainer (or null), and its children are always either PartPlaceholders or ViewPanes.
- * This contains the real behavior and state for stacks of views, although the widgets for the tabs are contributed
- * using a StackPresentation.
- *
- * TODO: eliminate ViewStack and EditorStack. PartStack should be general enough to handle editors
- * and views without any specialization for editors and views. The differences should be in the
- * presentation and in the PartPanes themselves.
- *
- * TODO: eliminate PartPlaceholder. Placeholders should not be children of the ViewStack.
- *
- */
-public class ViewStack extends PartStack {
-
-    private boolean allowStateChanges;
-
-    private WorkbenchPage page;
-
-    private SystemMenuSize sizeItem = new SystemMenuSize(null);
-
-    private SystemMenuFastView fastViewAction;
-
-    private SystemMenuDetach detachViewAction;
-
-    public void addSystemActions(IMenuManager menuManager) {
-        appendToGroupIfPossible(menuManager,
-                "misc", new UpdatingActionContributionItem(fastViewAction)); //$NON-NLS-1$
-        appendToGroupIfPossible(menuManager,
-        		"misc", new UpdatingActionContributionItem(detachViewAction)); //$NON-NLS-1$
-        sizeItem = new SystemMenuSize(getSelection());
-        appendToGroupIfPossible(menuManager, "size", sizeItem); //$NON-NLS-1$
-    }
-
-    public ViewStack(WorkbenchPage page) {
-        this(page, true);
-    }
-
-    public ViewStack(WorkbenchPage page, boolean allowsStateChanges) {
-        this(page, allowsStateChanges, PresentationFactoryUtil.ROLE_VIEW, null);
-    }
-
-    public ViewStack(WorkbenchPage page, boolean allowsStateChanges,
-            int appearance, AbstractPresentationFactory factory) {
-        super(appearance, factory);
-
-        this.page = page;
-        setID(this.toString());
-        // Each folder has a unique ID so relative positioning is unambiguous.
-
-        this.allowStateChanges = allowsStateChanges;
-        fastViewAction = new SystemMenuFastView(getPresentationSite());
-        detachViewAction = new SystemMenuDetach(getPresentationSite());
-    }
-
-    protected WorkbenchPage getPage() {
-        return page;
-    }
-
-    protected boolean canMoveFolder() {
-        Perspective perspective = page.getActivePerspective();
-
-        if (perspective == null) {
-            // Shouldn't happen -- can't have a ViewStack without a
-            // perspective
-            return false;
-        }
-
-        // We need to search if one of the presentations is not moveable
-        // if that's the case the whole folder should not be moveable
-        IStackPresentationSite presenationSite;
-
-        if( (presenationSite = getPresentationSite()) != null ) {
-        	IPresentablePart[] parts = presenationSite.getPartList();
-        	for( int i = 0; i < parts.length; i++ ) {
-        		if( !presenationSite.isPartMoveable(parts[i]) ) {
-        			return false;
-        		}
-        	}
-        }
-
-        return !perspective.isFixedLayout();
-    }
-
-    protected void updateActions(PresentablePart current) {
-        ViewPane pane = null;
-
-        if (current != null && current.getPane() instanceof ViewPane) {
-            pane = (ViewPane) current.getPane();
-        }
-
-        fastViewAction.setPane(current);
-        detachViewAction.setPane(pane);
-        sizeItem.setPane(pane);
-    }
-
-	/**
-	 * Sets the minimized state for this stack. The part may call this method to
-	 * minimize or restore itself. The minimized state only affects the view
-	 * when unzoomed.
-	 *
-	 * This implementation is specific to the 3.3 presentation's
-	 * min/max story; otherwise it just forwards the call.
-	 */
-	public void setMinimized(boolean minimized) {
-		// 'Smart' minimize; move the stack to the trim
-		Perspective persp = getPage().getActivePerspective();
-		if (Perspective.useNewMinMax(persp)) {
-			FastViewManager fvm = persp.getFastViewManager();
-			if (minimized) {
-				fvm.moveToTrim(this, false);
-			} else {
-				// First, if we're maximized then revert
-				if (persp.getPresentation().getMaximizedStack() != null) {
-					PartStack maxStack = persp.getPresentation().getMaximizedStack();
-					if (maxStack != null) {
-						maxStack.setState(IStackPresentationSite.STATE_RESTORED);
-					}
-				}
-
-				fvm.restoreToPresentation(getID());
-			}
-		}
-
-		super.setMinimized(minimized);
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#isMoveable(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    protected boolean isMoveable(IPresentablePart part) {
-        ViewPane pane = (ViewPane) getPaneFor(part);
-        Perspective perspective = page.getActivePerspective();
-        if (perspective == null) {
-            // Shouldn't happen -- can't have a ViewStack without a
-            // perspective
-            return true;
-        }
-        return perspective.isMoveable(pane.getViewReference());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#supportsState(int)
-     */
-    protected boolean supportsState(int newState) {
-        if (page.isFixedLayout()) {
-			return false;
-		}
-        return allowStateChanges;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#derefPart(org.eclipse.ui.internal.LayoutPart)
-     */
-    protected void derefPart(LayoutPart toDeref) {
-        page.getActivePerspective().getPresentation().derefPart(toDeref);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.PartStack#allowsDrop(org.eclipse.ui.internal.PartPane)
-     */
-    protected boolean allowsDrop(PartPane part) {
-        return part instanceof ViewPane;
-    }
-
-    /**
-     * Get the presentation for testing purposes.  This is for testing
-     * purposes <b>ONLY</b>.
-     *
-     * @return the presentation in use for this view stack
-     * @since 3.2
-     */
-    public StackPresentation getTestPresentation() {
-    	return getPresentation();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStackTrimToolBar.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStackTrimToolBar.java
deleted file mode 100644
index 21fb389..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewStackTrimToolBar.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.ToolBarManager;
-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.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.internal.layout.TrimToolBarBase;
-
-/**
- * @since 3.3
- *
- */
-public class ViewStackTrimToolBar extends TrimToolBarBase {
-	private boolean restoreOnUnzoom = false;
-	
-	// The orientation of the fast view pane when showing a view
-	private int paneOrientation;
-	
-	// The id of the part that was showing when we minimized
-	private String selectedTabId;
-
-	public ViewStackTrimToolBar(String id, int curSide, int paneOrientation, WorkbenchWindow wbw) {
-		super(id, curSide, wbw);
-		
-		this.paneOrientation = paneOrientation;		
-		dock(curSide);
-	}
-	
-	/**
-	 * Put the stack back into the presentation
-	 */
-	protected void restoreToPresentation() {
-		Perspective persp = wbw.getActiveWorkbenchPage().getActivePerspective();
-		//FastViewManager fvMgr = persp.getFastViewManager();
-		
-		LayoutPart part = persp.getPresentation().findPart(getId(), null);
-		if (part instanceof ContainerPlaceholder) {
-			ViewStack stack = (ViewStack) ((ContainerPlaceholder)part).getRealContainer();
-			stack.setMinimized(false);
-		}
-		//fvMgr.restoreToPresentation(getId());
-	}
-
-	public void initToolBarManager(final ToolBarManager mgr) {
-		// Set up the ToolBar with a restore button
-		IContributionItem restoreContrib = new ContributionItem() {
-			public void fill(ToolBar parent, int index) {
-		        ToolItem restoreItem = new  ToolItem(mgr.getControl(), SWT.PUSH, index);        
-		        Image tbImage = WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_ETOOL_RESTORE_TRIMPART);
-		        restoreItem.setImage(tbImage);       
-		        String menuTip = WorkbenchMessages.StandardSystemToolbar_Restore;
-		        restoreItem.setToolTipText(menuTip);
-		        restoreItem.addSelectionListener(new SelectionListener() {
-					public void widgetDefaultSelected(SelectionEvent e) {
-						restoreToPresentation();
-					}
-					public void widgetSelected(SelectionEvent e) {
-						restoreToPresentation();
-					}
-		        });
-			}
-		};
-		mgr.add(restoreContrib);
-		
-		ShowFastViewContribution sfvc = new ShowFastViewContribution(wbw, getId());
-		mgr.add(sfvc);
-		
-		// Add context menu items
-		mgr.setContextMenuManager(new MenuManager());
-		MenuManager menuMgr = mgr.getContextMenuManager();
-		
-		final IContributionItem closeContrib = new ContributionItem() {
-			public void fill(Menu parent, int index) {
-		        MenuItem closeItem = new MenuItem(parent, SWT.NONE, index++);
-		        closeItem.setText(WorkbenchMessages.WorkbenchWindow_close); 
-		        closeItem.addSelectionListener(new SelectionAdapter() {
-		            public void widgetSelected(SelectionEvent e) {
-		            	IViewReference selectedView = null;
-		            	if (contextToolItem != null) {
-		            		selectedView = (IViewReference) contextToolItem.getData(ShowFastViewContribution.FAST_VIEW);
-		            	}
-		            	
-		                if (selectedView != null) {
-		                    WorkbenchPage page = wbw.getActiveWorkbenchPage();
-		                    if (page != null) {
-		                        page.hideView(selectedView);
-		                    }
-		                }
-		            }
-		        });
-			}
-		};
-		
-		// We have to manage the visiblity this way...?
-		menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager manager) {
-            	IViewReference selectedView = null;
-            	if (contextToolItem != null) {
-            		selectedView = (IViewReference) contextToolItem.getData(ShowFastViewContribution.FAST_VIEW);
-            	}
-            	
-            	// Only show the 'close' item if we've clicked on a view
-        		Perspective persp = wbw.getActiveWorkbenchPage().getActivePerspective();
-            	closeContrib.setVisible(selectedView != null && persp.isCloseable(selectedView));
-            	manager.update(true);
-			}
-		});
-		
-		menuMgr.add(closeContrib);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.TrimToolBarBase#hookControl(org.eclipse.swt.widgets.ToolBar)
-	 */
-	public void hookControl(ToolBarManager mgr) {
-		// Hook a drop Listener to the control
-		// NOTE: the drop target is self-managing...it
-		// both hooks the new target and removes it on dispose
-		new FastViewDnDHandler(id, mgr, wbw);
-	}
-	
-	/**
-	 * Sets whether or not the stack gets restored on an unzoom
-	 * operation.
-	 * 
-	 * @param restoreOnUnzoom
-	 */
-	public void setRestoreOnUnzoom(boolean restoreOnUnzoom) {
-		this.restoreOnUnzoom = restoreOnUnzoom;
-	}
-	
-	public boolean restoreOnUnzoom() {
-		return restoreOnUnzoom;
-	}
-
-	/**
-	 * @param ref
-	 * @param selected
-	 */
-	public void setIconSelection(IViewReference ref, boolean selected) {
-		ToolItem item = ShowFastViewContribution.getItem(tbMgr.getControl(), ref);
-		if (item != null) {
-			item.setSelection(selected);
-			
-			if (selected) {
-				selectedTabId = ref.getId();
-				
-				// Create a 'compound' id if this is a multi-instance part
-				if (ref.getSecondaryId() != null)
-					selectedTabId = selectedTabId + ':' + ref.getSecondaryId();
-			}
-		}
-	}
-
-	/**
-	 * @return Returns the paneOrientation.
-	 */
-	public int getPaneOrientation() {
-		return paneOrientation;
-	}
-
-	/**
-	 * Cache the tba that was on top when we were minimized
-	 * @param selectedTab The id of the PartPane for the tab 
-	 */
-	public void setSelectedTabId(String id) {
-		selectedTabId = id;
-	}
-	
-	/**
-	 * @return The id of the layout part representing the 'top' tab
-	 */
-	public String getSelectedTabId() {
-		return selectedTabId;
-	}
-
-	/**
-	 * @param newOrientation The new orientation for the fact view display
-	 * @param wbw The currently active WorkbenchWindow
-	 */
-	public void setOrientation(int newOrientation, WorkbenchWindow wbw) {
-		if (newOrientation == paneOrientation)
-			return;
-		
-		paneOrientation = newOrientation;
-		
-		// If there's a fast view showing, toggle it to pick up the change
-		if (wbw.getActivePage() instanceof WorkbenchPage) {
-			WorkbenchPage wbp = (WorkbenchPage) wbw.getActivePage();
-			Perspective persp = wbp.getActivePerspective();
-			if (persp != null) {
-				IViewReference curRef = persp.getActiveFastView();
-				if (curRef != null) { 
-					persp.setActiveFastView(null);
-					persp.setActiveFastView(curRef);
-				}
-			}
-			
-		}
-		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewerActionBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewerActionBuilder.java
deleted file mode 100644
index 3139668..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewerActionBuilder.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This class reads the registry for extensions that plug into
- * 'popupMenus' extension point and deals only with the 'viewerContribution'
- * elements.
- */
-public class ViewerActionBuilder extends PluginActionBuilder {
-    
-
-    private ISelectionProvider provider;
-
-    private IWorkbenchPart part;
-
-    /**
-     * Basic contstructor
-     */
-    public ViewerActionBuilder() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected ActionDescriptor createActionDescriptor(
-            IConfigurationElement element) {
-        if (part instanceof IViewPart) {
-			return new ActionDescriptor(element, ActionDescriptor.T_VIEW, part);
-		}
-		return new ActionDescriptor(element, ActionDescriptor.T_EDITOR, part);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected BasicContribution createContribution() {
-        return new ViewerContribution(provider);
-    }
-
-    /**
-     * Dispose of the action builder
-     */
-    public void dispose() {
-        if (cache != null) {
-            for (int i = 0; i < cache.size(); i++) {
-                ((BasicContribution) cache.get(i)).dispose();
-            }
-            cache = null;
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginActionBuilder.
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        String tag = element.getName();
-
-        // Found visibility sub-element
-        if (currentContribution != null && tag.equals(IWorkbenchRegistryConstants.TAG_VISIBILITY)) {
-            ((ViewerContribution) currentContribution)
-                    .setVisibilityTest(element);
-            return true;
-        }
-
-        return super.readElement(element);
-    }
-
-    /**
-     * Reads the contributions for a viewer menu.
-     * This method is typically used in conjunction with <code>contribute</code> to read
-     * and then insert actions for a particular viewer menu.
-     *
-     * @param id the menu id
-     * @param prov the selection provider for the control containing the menu
-     * @param part the part containing the menu.
-     * @return <code>true</code> if 1 or more items were read.  
-     */
-    public boolean readViewerContributions(String id, ISelectionProvider prov,
-            IWorkbenchPart part) {
-		Assert.isTrue(part instanceof IViewPart || part instanceof IEditorPart);
-        provider = prov;
-        this.part = part;
-        readContributions(id, IWorkbenchRegistryConstants.TAG_VIEWER_CONTRIBUTION,
-                IWorkbenchRegistryConstants.PL_POPUP_MENU);
-        return (cache != null);
-    }
-
-    /**
-     * Helper class to collect the menus and actions defined within a
-     * contribution element.
-     */
-    private static class ViewerContribution extends BasicContribution implements ISelectionChangedListener {
-        private ISelectionProvider selProvider;
-
-        private ActionExpression visibilityTest;
-
-        /**
-         * Create a new ViewerContribution.
-         * 
-         * @param selProvider the selection provider
-         */
-        public ViewerContribution(ISelectionProvider selProvider) {
-            super();
-            this.selProvider = selProvider;
-			if (selProvider != null) {
-				selProvider.addSelectionChangedListener(this);
-			}
-        }
-
-        /**
-         * Set the visibility test.
-         * 
-         * @param element the element
-         */
-        public void setVisibilityTest(IConfigurationElement element) {
-            visibilityTest = new ActionExpression(element);
-        }
-
-        /* (non-Javadoc)
-         * Method declared on BasicContribution.
-         */
-        public void contribute(IMenuManager menu, boolean menuAppendIfMissing,
-                IToolBarManager toolbar, boolean toolAppendIfMissing) {
-            boolean visible = true;
-
-            if (visibilityTest != null) {
-                ISelection selection = selProvider.getSelection();
-                if (selection instanceof IStructuredSelection) {
-                    visible = visibilityTest
-                            .isEnabledFor((IStructuredSelection) selection);
-                } else {
-                    visible = visibilityTest.isEnabledFor(selection);
-                }
-            }
-
-            if (visible) {
-				super.contribute(menu, menuAppendIfMissing, toolbar,
-                        toolAppendIfMissing);
-			}
-        }
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.PluginActionBuilder.BasicContribution#dispose()
-		 */
-		public void dispose() {
-			if (selProvider != null) {
-				selProvider.removeSelectionChangedListener(this);
-			}
-			disposeActions();
-			super.dispose();
-		}
-
-		/**
-		 * Rather than hooking up each action as a selection listener,
-		 * the contribution itself is added, and propagates
-		 * the selection changed notification to all actions.
-		 * This simplifies cleanup, in addition to potentially reducing the number of listeners.
-		 * 
-		 * @see ISelectionChangedListener
-		 * @since 3.1
-		 */
-		public void selectionChanged(SelectionChangedEvent event) {
-			if (actions != null) {
-				if (actions != null) {
-					for (int i = 0; i < actions.size(); i++) {
-						PluginAction proxy = ((ActionDescriptor) actions.get(i))
-								.getAction();
-						proxy.selectionChanged(event);
-					}
-				}
-			}
-		}
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinActionBars.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinActionBars.java
deleted file mode 100644
index c3d5a8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinActionBars.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.ui.IActionBars2;
-import org.eclipse.ui.services.IServiceLocator;
-
-public class WWinActionBars implements IActionBars2 {
-    private WorkbenchWindow window;
-
-    /**
-     * PerspActionBars constructor comment.
-     */
-    public WWinActionBars(WorkbenchWindow window) {
-        super();
-        this.window = window;
-    }
-
-    /**
-     * Clears the global action handler list.
-     */
-    public void clearGlobalActionHandlers() {
-    }
-
-    /**
-     * Returns the cool bar manager.
-     * 
-     */
-    public ICoolBarManager getCoolBarManager() {
-        return window.getCoolBarManager2();
-    }
-
-    /**
-     * Get the handler for a window action.
-     *
-     * @param actionID an action ID declared in the registry
-     * @return an action handler which implements the action ID, or
-     *		<code>null</code> if none is registered.
-     */
-    public IAction getGlobalActionHandler(String actionID) {
-        return null;
-    }
-
-    /**
-     * Returns the menu manager.  If items are added or
-     * removed from the manager be sure to call <code>updateActionBars</code>.
-     *
-     * @return the menu manager
-     */
-    public IMenuManager getMenuManager() {
-        return window.getMenuManager();
-    }
-
-	public final IServiceLocator getServiceLocator() {
-		return window;
-	}
-
-    /**
-     * Returns the status line manager.  If items are added or
-     * removed from the manager be sure to call <code>updateActionBars</code>.
-     *
-     * @return the status line manager
-     */
-    public IStatusLineManager getStatusLineManager() {
-        return window.getStatusLineManager();
-    }
-
-    /**
-     * Returns the tool bar manager.
-     * 
-     */
-    public IToolBarManager getToolBarManager() {
-        // This should never be called
-        Assert.isTrue(false);
-        return null;
-    }
-
-    /**
-     * Add a handler for a window action.
-     *
-     * The standard action ID's for the workbench are defined in
-     * <code>IWorkbenchActions</code>.
-     *
-     * @see IWorkbenchActions
-     *
-     * @param actionID an action ID declared in the registry
-     * @param handler an action which implements the action ID.  
-     *		<code>null</code> may be passed to deregister a handler.
-     */
-    public void setGlobalActionHandler(String actionID, IAction handler) {
-    }
-
-	/**
-     * Commits all UI changes.  This should be called
-     * after additions or subtractions have been made to a 
-     * menu, status line, or toolbar.
-     */
-    public void updateActionBars() {
-        window.updateActionBars();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPartService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPartService.java
deleted file mode 100644
index 66f13b9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPartService.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.misc.UIListenerLogging;
-
-/**
- * A part service for a workbench window.
- */
-public class WWinPartService implements IPartService {
-    private PartService partService = new PartService(UIListenerLogging.WINDOW_PARTLISTENER_EVENTS, 
-            UIListenerLogging.WINDOW_PARTLISTENER2_EVENTS);
-
-    private WindowSelectionService selectionService;
-
-    private IWorkbenchPage activePage;
-    
-    private IPartListener2 partListner = new IPartListener2() {
-        public void partActivated(IWorkbenchPartReference ref) {
-            updateActivePart();
-        }
-
-        public void partBroughtToTop(IWorkbenchPartReference ref) {
-            partService.firePartBroughtToTop(ref);
-        }
-
-        public void partClosed(IWorkbenchPartReference ref) {
-            partService.firePartClosed(ref);
-        }
-
-        public void partDeactivated(IWorkbenchPartReference ref) {
-            updateActivePart();
-        }
-
-        public void partOpened(IWorkbenchPartReference ref) {
-            partService.firePartOpened(ref);
-        }
-
-        public void partHidden(IWorkbenchPartReference ref) {
-            partService.firePartHidden(ref);
-        }
-
-        public void partVisible(IWorkbenchPartReference ref) {
-            partService.firePartVisible(ref);
-        }
-
-        public void partInputChanged(IWorkbenchPartReference ref) {
-            partService.firePartInputChanged(ref);
-        }
-    };
-
-    /**
-     * Creates a new part service for a workbench window.
-     */
-    public WWinPartService(IWorkbenchWindow window) {
-        selectionService = new WindowSelectionService(window);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IPartService
-     */
-    public void addPartListener(IPartListener l) {
-        partService.addPartListener(l);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IPartService
-     */
-    public void addPartListener(IPartListener2 l) {
-        partService.addPartListener(l);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IPartService
-     */
-    public void removePartListener(IPartListener l) {
-        partService.removePartListener(l);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IPartService
-     */
-    public void removePartListener(IPartListener2 l) {
-        partService.removePartListener(l);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IPartService
-     */
-    public IWorkbenchPart getActivePart() {
-        return partService.getActivePart();
-    }
-    
-    private void updateActivePart() {
-        IWorkbenchPartReference activeRef = null;
-        IWorkbenchPart activePart = null;
-        
-        if (activePage != null) {
-            activePart = activePage.getActivePart();
-            activeRef = activePage.getActivePartReference();
-        }
-        
-        partService.setActivePart(activeRef);
-        selectionService.setActivePart(activePart);
-    }
-
-    /*
-     * (non-Javadoc)
-     * Method declared on IPartService
-     */
-    public IWorkbenchPartReference getActivePartReference() {
-        return partService.getActivePartReference();
-    }
-
-    /*
-     * Returns the selection service.
-     */
-    ISelectionService getSelectionService() {
-        return selectionService;
-    }
-
-    /*
-     * Notifies that a page has been activated.
-     */
-    void pageActivated(IWorkbenchPage newPage) {
-        // Optimize.
-        if (newPage == activePage) {
-			return;
-		}
-
-        // Fire events in the following order:
-
-        // 1. For each open part in the new page, open it and then (if applicable) make it visible
-        // 2. Deactivate old active part
-        // 3. Activate the new active part
-        // 4. For each open part in the old page, make it invisible then close it        
-
-        // Hook listener on the new page.
-        if (newPage != null) {      
-            IWorkbenchPartReference[] refs = ((WorkbenchPage)newPage).getOpenParts(); 
-            
-            for (int i = 0; i < refs.length; i++) {
-                IWorkbenchPartReference reference = refs[i];
-                
-                partService.firePartOpened(reference);
-                
-                IWorkbenchPart part = reference.getPart(false);
-                if (part != null && newPage.isPartVisible(part)) {
-                    partService.firePartVisible(reference);
-                }
-            }            
-
-            partService.setActivePart(newPage.getActivePartReference());
-            selectionService.setActivePart(newPage.getActivePart());
-        } else {
-            partService.setActivePart(null);
-            selectionService.setActivePart(null);
-        }
-
-        // Unhook listener from the old page.
-        reset();
-
-        // Update active page.
-        activePage = newPage;
-
-        if (newPage != null) {
-            newPage.addPartListener(partListner);
-        }
-        
-    }
-
-    /*
-     * Notifies that a page has been closed
-     */
-    void pageClosed(IWorkbenchPage page) {
-        // Unhook listener from the old page.
-        if (page == activePage) {
-            reset();
-        }
-    }
-
-    /*
-     * Notifies that a page has been opened.
-     */
-    void pageOpened(IWorkbenchPage page) {
-        pageActivated(page);
-    }
-
-    /*
-     * Resets the part service.  The active page, part and selection are
-     * dereferenced.
-     */
-    private void reset() {
-        IWorkbenchPage tempPage = activePage;
-        activePage = null;
-        if (tempPage != null) {            
-            WorkbenchPage page = (WorkbenchPage)tempPage;
-            
-    		IWorkbenchPartReference[] refs = page.getOpenParts(); 
-    		
-    		for (int i = 0; i < refs.length; i++) {
-    			IWorkbenchPartReference reference = refs[i];
-                
-                if (page.isPartVisible(reference)) {
-                    partService.firePartHidden(reference);
-                }
-                
-    			partService.firePartClosed(reference);
-    		}
-            		
-            tempPage.removePartListener(partListner);
-        }
-        
-    }
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java
deleted file mode 100644
index d655c5c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginAction.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.actions.LabelRetargetAction;
-import org.eclipse.ui.actions.RetargetAction;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This class extends regular plugin action with the additional requirement that
- * the delegate has to implement interface
- * {@link org.eclipse.ui.IWorkbenchWindowActionDelegate}. This interface has
- * one additional method (init) whose purpose is to initialize the delegate with
- * the window in which the action is intended to run.
- */
-public class WWinPluginAction extends PluginAction implements
-        IActionSetContributionItem {
-    /**
-     * The help listener assigned to this action, or <code>null</code> if none.
-     */
-    private HelpListener localHelpListener;
-
-    private IWorkbenchWindow window;
-
-    private String actionSetId;
-
-    private RetargetAction retargetAction;
-
-    private static ArrayList staticActionList = new ArrayList(50);
-
-    /**
-     * Constructs a new <code>WWinPluginAction</code> object.
-     * 
-     * @param actionElement the configuration element
-     * @param window the window to contribute to
-     * @param id the identifier
-     * @param style the style
-     */
-    public WWinPluginAction(IConfigurationElement actionElement,
-            IWorkbenchWindow window, String id, int style) {
-        super(actionElement, id, style);
-        this.window = window;
-
-        // If config specifies a retarget action, create it now
-        String retarget = actionElement
-                .getAttribute(IWorkbenchRegistryConstants.ATT_RETARGET);
-        if (retarget != null && Boolean.valueOf(retarget).booleanValue()) {
-            // create a retarget action
-            String allowLabelUpdate = actionElement
-                    .getAttribute(IWorkbenchRegistryConstants.ATT_ALLOW_LABEL_UPDATE);
-            String label = actionElement
-                    .getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-
-            if (allowLabelUpdate != null && Boolean.valueOf(allowLabelUpdate).booleanValue()) {
-				retargetAction = new LabelRetargetAction(id, label, style);
-			} else {
-				retargetAction = new RetargetAction(id, label, style);
-			}
-            retargetAction
-                    .addPropertyChangeListener(new IPropertyChangeListener() {
-                        public void propertyChange(PropertyChangeEvent event) {
-                            if (event.getProperty().equals(IAction.ENABLED)) {
-                                Object val = event.getNewValue();
-                                if (val instanceof Boolean) {
-                                    setEnabled(((Boolean) val).booleanValue());
-                                }
-                            } else if (event.getProperty().equals(
-                                    IAction.CHECKED)) {
-                                Object val = event.getNewValue();
-                                if (val instanceof Boolean) {
-                                    setChecked(((Boolean) val).booleanValue());
-                                }
-                            } else if (event.getProperty().equals(IAction.TEXT)) {
-                                Object val = event.getNewValue();
-                                if (val instanceof String) {
-                                    setText((String) val);
-                                }
-                            } else if (event.getProperty().equals(
-                                    IAction.TOOL_TIP_TEXT)) {
-                                Object val = event.getNewValue();
-                                if (val instanceof String) {
-                                    setToolTipText((String) val);
-                                }
-                            }
-                        }
-                    });
-            retargetAction.setEnabled(false);
-            setEnabled(false);
-            window.getPartService().addPartListener(retargetAction);
-            IWorkbenchPart activePart = window.getPartService().getActivePart();
-            if (activePart != null) {
-				retargetAction.partActivated(activePart);
-			}
-        } else {
-            // if we retarget the handler will look after selection changes
-            window.getSelectionService().addSelectionListener(this);
-            refreshSelection();
-        }
-        addToActionList(this);
-
-        super.setHelpListener(new HelpListener() {
-            public void helpRequested(HelpEvent e) {
-                HelpListener listener = null;
-                if (retargetAction != null) {
-					listener = retargetAction.getHelpListener();
-				}
-                if (listener == null) {
-					// use our own help listener
-                    listener = localHelpListener;
-				}
-                if (listener != null) {
-					// pass on the event
-                    listener.helpRequested(e);
-				}
-            }
-        });
-    }
-
-    /**
-     * Adds an item to the action list.
-     */
-    private static void addToActionList(WWinPluginAction action) {
-        staticActionList.add(action);
-    }
-
-    /**
-     * Removes an item from the action list.
-     */
-    private static void removeFromActionList(WWinPluginAction action) {
-        staticActionList.remove(action);
-    }
-
-    /**
-     * Creates any actions which belong to an activated plugin.
-     */
-    public static void refreshActionList() {
-        Iterator iter = staticActionList.iterator();
-        while (iter.hasNext()) {
-            WWinPluginAction action = (WWinPluginAction) iter.next();
-            if ((action.getDelegate() == null) && action.isOkToCreateDelegate()) {
-                action.createDelegate();
-                // creating the delegate also refreshes its enablement
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected IActionDelegate validateDelegate(Object obj)
-            throws WorkbenchException {
-        if (obj instanceof IWorkbenchWindowActionDelegate) {
-			return (IWorkbenchWindowActionDelegate) obj;
-		}
-        
-        throw new WorkbenchException(
-                "Action must implement IWorkbenchWindowActionDelegate"); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * Method declared on PluginAction.
-     */
-    protected void initDelegate() {
-        super.initDelegate();
-        ((IWorkbenchWindowActionDelegate) getDelegate()).init(window);
-    }
-
-    /**
-     * Disposes of the action and any resources held.
-     */
-    public void dispose() {
-        removeFromActionList(this);
-        if (retargetAction != null) {
-            window.getPartService().removePartListener(retargetAction);
-            retargetAction.dispose();
-            retargetAction = null;
-        }
-        window.getSelectionService().removeSelectionListener(this);
-        super.dispose();
-    }
-
-    /**
-     * Returns the action set id.
-     */
-    public String getActionSetId() {
-        return actionSetId;
-    }
-
-    /**
-     * Returns true if the window has been set.  
-     * The window may be null after the constructor is called and
-     * before the window is stored.  We cannot create the delegate
-     * at that time.
-     */
-    public boolean isOkToCreateDelegate() {
-        return super.isOkToCreateDelegate() && window != null
-                && retargetAction == null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IActionDelegate2.
-     */
-    public void runWithEvent(Event event) {
-        if (retargetAction == null) {
-            super.runWithEvent(event);
-            return;
-        }
-
-        if (event != null) {
-			retargetAction.runWithEvent(event);
-		} else {
-			retargetAction.run();
-		}
-    }
-
-    /**
-     * Sets the action set id.
-     */
-    public void setActionSetId(String newActionSetId) {
-        actionSetId = newActionSetId;
-    }
-
-    /** 
-     * The <code>WWinPluginAction</code> implementation of this method
-     * declared on <code>IAction</code> stores the help listener in
-     * a local field. The supplied listener is only used if there is
-     * no retarget action.
-     */
-    public void setHelpListener(HelpListener listener) {
-        localHelpListener = listener;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void setChecked(boolean checked) {
-        super.setChecked(checked);
-        // This call may come from the SWT control event handler
-        // itself, so notify the retarget action to keep things
-        // in sync.
-        if (retargetAction != null) {
-			retargetAction.setChecked(checked);
-		}
-    }
-
-    /**
-     * Refresh the selection for the action.
-     */
-    protected void refreshSelection() {
-        ISelection selection = window.getSelectionService().getSelection();
-        selectionChanged(selection);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginPulldown.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginPulldown.java
deleted file mode 100644
index b724ba1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WWinPluginPulldown.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
-import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
-import org.eclipse.ui.WorkbenchException;
-
-/**
- * A workbench window pulldown action.
- */
-public class WWinPluginPulldown extends WWinPluginAction {
-
-	/**
-	 * The proxy for creating the menu. There is always a menu proxy. This value
-	 * can't be <code>null</code>.
-	 */
-	private final IMenuCreator menuProxy;
-
-	private class MenuProxy implements IMenuCreator {
-
-		/**
-		 * A wrapper for loading the menu that defends against possible
-		 * exceptions triggered outside of the workbench.
-		 * 
-		 * @since 3.0
-		 */
-		private class MenuLoader implements ISafeRunnable {
-
-			/**
-			 * The parent for the menu to be created. This value is
-			 * <code>null</code> if the parent is a menu.
-			 */
-			private final Control control;
-
-			/**
-			 * The delegate from which to load the menu.
-			 */
-			private final IWorkbenchWindowPulldownDelegate delegate;
-
-			/**
-			 * The loaded menu. This value is <code>null</code> if the load
-			 * failed, or if it hasn't been loaded yet.
-			 */
-			private Menu menu = null;
-
-			/**
-			 * The parent for the menu to be created. This value is
-			 * <code>null</code> if the parent is a control.
-			 */
-			private final Menu parent;
-
-			/**
-			 * Constructs a new instance of <code>MenuLoader</code>
-			 * 
-			 * @param delegate
-			 *            The delegate from which the menu will be loaded; this
-			 *            value must not be <code>null</code>.
-			 * @param parent
-			 *            The parent of the menu to be loaded; this value must
-			 *            not be <code>null</code>.
-			 */
-			private MenuLoader(
-					final IWorkbenchWindowPulldownDelegate2 delegate,
-					final Menu parent) {
-				this.delegate = delegate;
-				this.parent = parent;
-				this.control = null;
-			}
-
-			/**
-			 * Constructs a new instance of <code>MenuLoader</code>
-			 * 
-			 * @param delegate
-			 *            The delegate from which the menu will be loaded; this
-			 *            value must not be <code>null</code>.
-			 * @param parent
-			 *            The parent of the menu to be loaded; this value must
-			 *            not be <code>null</code>.
-			 */
-			private MenuLoader(final IWorkbenchWindowPulldownDelegate delegate,
-					final Control parent) {
-				this.delegate = delegate;
-				this.parent = null;
-				this.control = parent;
-			}
-
-			/**
-			 * Returns the menu loaded, if any.
-			 * 
-			 * @return the loaded menu, or <code>null</code> if none.
-			 */
-			private Menu getMenu() {
-				return menu;
-			}
-
-			/**
-			 * @see ISafeRunnable#handleException(java.lang.Throwable)
-			 */
-			public void handleException(Throwable exception) {
-				// Do nothing
-			}
-
-			/**
-			 * @see ISafeRunnable#run()
-			 */
-			public void run() throws Exception {
-				if (parent == null) {
-					menu = delegate.getMenu(control);
-				} else {
-					menu = ((IWorkbenchWindowPulldownDelegate2) delegate)
-							.getMenu(parent);
-				}
-			}
-		}
-
-		/**
-		 * @see IMenuCreator#getMenu(Control)
-		 */
-		public Menu getMenu(Control parent) {
-			IWorkbenchWindowPulldownDelegate delegate = getPulldownDelegate();
-			if (delegate != null) {
-				final MenuLoader menuLoader = new MenuLoader(delegate, parent);
-				SafeRunner.run(menuLoader);
-				return menuLoader.getMenu();
-			}
-
-			return null;
-		}
-
-		/**
-		 * @see IMenuCreator#getMenu(Menu)
-		 */
-		public Menu getMenu(Menu parent) {
-			IWorkbenchWindowPulldownDelegate delegate = getPulldownDelegate();
-
-			if (delegate instanceof IWorkbenchWindowPulldownDelegate2) {
-				IWorkbenchWindowPulldownDelegate2 delegate2 = (IWorkbenchWindowPulldownDelegate2) delegate;
-				final MenuLoader menuLoader = new MenuLoader(delegate2, parent);
-				SafeRunner.run(menuLoader);
-				return menuLoader.getMenu();
-			}
-
-			return null;
-		}
-
-		/**
-		 * @see IMenuCreator#dispose()
-		 */
-		public void dispose() {
-			// do nothing
-		}
-	}
-
-	/**
-	 * Constructs a new instance of <code>WWinPluginPulldown</code>.
-	 * 
-	 * @param actionElement
-	 *            The registry element from which the pulldown delegate should
-	 *            be created; must not be <code>null</code>.
-	 * @param id
-	 *            The identifier of this action delegate; may be
-	 *            <code>null</code>.
-	 * @param window
-	 *            The workbench window on which this pulldown should act; must
-	 *            not be <code>null</code>.
-	 * @param style
-	 *            The style.
-	 */
-	public WWinPluginPulldown(IConfigurationElement actionElement,
-			IWorkbenchWindow window, String id, int style) {
-		super(actionElement, window, id, style);
-		menuProxy = new MenuProxy();
-		setMenuCreator(menuProxy);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on PluginAction.
-	 */
-	protected IActionDelegate validateDelegate(Object obj)
-			throws WorkbenchException {
-		if (obj instanceof IWorkbenchWindowPulldownDelegate) {
-			return (IWorkbenchWindowPulldownDelegate) obj;
-		}
-
-		throw new WorkbenchException(
-				"Action must implement IWorkbenchWindowPulldownDelegate"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the pulldown delegate. If it does not exist it is created. Can
-	 * return <code>null</code> if delegate creation failed.
-	 */
-	protected IWorkbenchWindowPulldownDelegate getPulldownDelegate() {
-		IActionDelegate delegate = getDelegate();
-		if (delegate == null) {
-			createDelegate();
-			delegate = getDelegate();
-		}
-		return (IWorkbenchWindowPulldownDelegate) delegate;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java
deleted file mode 100644
index f16189f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Provides part selection tracking for a part with a specific id
- * in all pages of a specific workbench window. This tracker shields
- * clients from a part opening and closing, and still provides selection
- * notification/information even when the part is not active.
- */
-public class WindowPartSelectionTracker extends AbstractPartSelectionTracker
-        implements IPageListener {
-    /**
-     * The window this selection tracker is working in
-     */
-    private IWorkbenchWindow fWindow;
-
-    /**
-     * Part selection listener.
-     */
-    private final INullSelectionListener selListener = new INullSelectionListener() {
-        public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-            fireSelection(part, selection);
-        }
-    };
-
-    /**
-     * Part post selection listener
-     */
-    private final INullSelectionListener postSelListener = new INullSelectionListener() {
-        public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-            firePostSelection(part, selection);
-        }
-    };
-
-    /**
-     * Constructs a new selection tracker for the given window and part id.
-     * 
-     * @param window workbench window
-     * @param partId part identifier
-     */
-    public WindowPartSelectionTracker(IWorkbenchWindow window, String partId) {
-        super(partId);
-        setWindow(window);
-        window.addPageListener(this);
-        IWorkbenchPage[] pages = window.getPages();
-        for (int i = 0; i < pages.length; i++) {
-            pageOpened(pages[i]);
-        }
-    }
-
-    /*
-     * @see IPageListener#pageActivated(IWorkbenchPage)
-     */
-    public void pageActivated(IWorkbenchPage page) {
-    }
-
-    /*
-     * @see IPageListener#pageClosed(IWorkbenchPage)
-     */
-    public void pageClosed(IWorkbenchPage page) {
-        page.removeSelectionListener(getPartId(), selListener);
-        page.removePostSelectionListener(getPartId(), postSelListener);
-    }
-
-    /*
-     * @see IPageListener#pageOpened(IWorkbenchPage)
-     */
-    public void pageOpened(IWorkbenchPage page) {
-        page.addSelectionListener(getPartId(), selListener);
-        page.addPostSelectionListener(getPartId(), postSelListener);
-    }
-
-    /**
-     * Sets the window this tracker is working in.
-     * 
-     * @param window workbench window
-     */
-    private void setWindow(IWorkbenchWindow window) {
-        fWindow = window;
-    }
-
-    /**
-     * Returns the window this tracker is working in.
-     * 
-     * @return workbench window
-     */
-    protected IWorkbenchWindow getWindow() {
-        return fWindow;
-    }
-
-    /**
-     * @see AbstractPartSelectionTracker#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        fWindow = null;
-    }
-
-    /*
-     * @see AbstractPartSelectionTracker#getSelection()
-     */
-    public ISelection getSelection() {
-        IWorkbenchPage page = getWindow().getActivePage();
-        if (page != null) {
-            return page.getSelection(getPartId());
-        }
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java
deleted file mode 100644
index 5995bd1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * The selection service for a window.
- */
-/* package */
-class WindowSelectionService extends AbstractSelectionService {
-
-    /**
-     * The window.
-     */
-    private IWorkbenchWindow window;
-
-    /**
-     * Creates a new selection service for the given window.
-     */
-    public WindowSelectionService(IWorkbenchWindow window) {
-        setWindow(window);
-    }
-
-    /**
-     * Sets the window.
-     */
-    private void setWindow(IWorkbenchWindow window) {
-        this.window = window;
-    }
-
-    /**
-     * Returns the window.
-     */
-    protected IWorkbenchWindow getWindow() {
-        return window;
-    }
-
-    /*
-     * @see AbstractSelectionService#createPartTracker(String)
-     */
-    protected AbstractPartSelectionTracker createPartTracker(String partId) {
-        return new WindowPartSelectionTracker(getWindow(), partId);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowTrimProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowTrimProxy.java
deleted file mode 100644
index 58638ac..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowTrimProxy.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-
-/**
- * A transition class for any control that wants to participate in the workbench
- * window trim. It must supply a unique ID so that it's position can be
- * saved/restored.
- * 
- * @since 3.2
- */
-public class WindowTrimProxy implements IWindowTrim {
-
-	private Control fTrimControl;
-
-	private String fId;
-
-	private String fDisplayName;
-
-	private int fValidSides;
-
-	private boolean fIsResizeable = false;
-	
-	private int fWidthHint = SWT.DEFAULT;
-	
-	private int fHeightHint = SWT.DEFAULT;
-
-	/**
-	 * Create the trim proxy for a control.
-	 * 
-	 * @param c
-	 *            the trim control
-	 * @param id
-	 *            an ID that it's known by
-	 * @param displayName
-	 *            the NLS name, for use in created menus
-	 * @param validSides
-	 *            bitwise or of valid sides
-	 * @see #getValidSides()
-	 */
-	public WindowTrimProxy(Control c, String id, String displayName,
-			int validSides) {
-		fTrimControl = c;
-		fId = id;
-		fDisplayName = displayName;
-		fValidSides = validSides;
-	}
-
-	/**
-	 * Create a trim proxy for a control.
-	 * 
-	 * @param c
-	 * @param id
-	 * @param displayName
-	 * @param validSides
-	 * @param resizeable
-	 */
-	public WindowTrimProxy(Control c, String id, String displayName,
-			int validSides, boolean resizeable) {
-		this(c, id, displayName, validSides);
-		fIsResizeable = resizeable;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IWindowTrim#getControl()
-	 */
-	public Control getControl() {
-		return fTrimControl;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IWindowTrim#getValidSides()
-	 */
-	public int getValidSides() {
-		return fValidSides;
-	}
-
-	/**
-	 * The default for a proxied window trim is to do nothing, as it can't be
-	 * moved around.
-	 * 
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#dock(int)
-	 */
-	public void dock(int dropSide) {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IWindowTrim#getId()
-	 */
-	public String getId() {
-		return fId;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IWindowTrim#getDisplayName()
-	 */
-	public String getDisplayName() {
-		return fDisplayName;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IWindowTrim#isCloseable()
-	 */
-	public boolean isCloseable() {
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IWindowTrim#handleClose()
-	 */
-	public void handleClose() {
-		// nothing to do...
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWindowTrim#getWidthHint()
-	 */
-	public int getWidthHint() {
-		return fWidthHint;
-	}
-	
-	/**
-	 * Update the width hint for this control.
-	 * @param w pixels, or SWT.DEFAULT
-	 */
-	public void setWidthHint(int w) {
-		fWidthHint = w;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWindowTrim#getHeightHint()
-	 */
-	public int getHeightHint() {
-		return fHeightHint;
-	}
-	
-	/**
-	 * Update the height hint for this control.
-	 * @param h pixels, or SWT.DEFAULT
-	 */
-	public void setHeightHint(int h) {
-		fHeightHint = h;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWindowTrim#isResizeable()
-	 */
-	public boolean isResizeable() {
-		return fIsResizeable;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
deleted file mode 100644
index 9857ffa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
+++ /dev/null
@@ -1,3542 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Francis Upton - <francisu@ieee.org> - 
- *     		Fix for Bug 217777 [Workbench] Workbench event loop does not terminate if Display is closed
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Dictionary;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.ExternalActionManager;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.ExternalActionManager.CommandCallback;
-import org.eclipse.jface.action.ExternalActionManager.IActiveChecker;
-import org.eclipse.jface.action.ExternalActionManager.IExecuteApplicable;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.BindingManagerEvent;
-import org.eclipse.jface.bindings.IBindingManagerListener;
-import org.eclipse.jface.databinding.swt.SWTObservables;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.ModalContext;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.OpenStrategy;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.window.WindowManager;
-import org.eclipse.osgi.service.runnable.StartupMonitor;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.DeviceData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IDecoratorManager;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.ILocalWorkingSetManager;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.ISaveableFilter;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWindowListener;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.Saveable;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.application.IWorkbenchConfigurer;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.commands.IWorkbenchCommandSupport;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.contexts.IWorkbenchContextSupport;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.help.IWorkbenchHelpSystem;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.actions.CommandAction;
-import org.eclipse.ui.internal.activities.ws.WorkbenchActivitySupport;
-import org.eclipse.ui.internal.browser.WorkbenchBrowserSupport;
-import org.eclipse.ui.internal.commands.CommandImageManager;
-import org.eclipse.ui.internal.commands.CommandImageService;
-import org.eclipse.ui.internal.commands.CommandService;
-import org.eclipse.ui.internal.commands.WorkbenchCommandSupport;
-import org.eclipse.ui.internal.contexts.ActiveContextSourceProvider;
-import org.eclipse.ui.internal.contexts.ContextService;
-import org.eclipse.ui.internal.contexts.WorkbenchContextSupport;
-import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
-import org.eclipse.ui.internal.help.WorkbenchHelpSystem;
-import org.eclipse.ui.internal.intro.IIntroRegistry;
-import org.eclipse.ui.internal.intro.IntroDescriptor;
-import org.eclipse.ui.internal.keys.BindingService;
-import org.eclipse.ui.internal.menus.FocusControlSourceProvider;
-import org.eclipse.ui.internal.menus.WorkbenchMenuService;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.model.ContributionService;
-import org.eclipse.ui.internal.progress.ProgressManager;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.UIExtensionTracker;
-import org.eclipse.ui.internal.services.ActionSetSourceProvider;
-import org.eclipse.ui.internal.services.EvaluationService;
-import org.eclipse.ui.internal.services.IServiceLocatorCreator;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.services.MenuSourceProvider;
-import org.eclipse.ui.internal.services.ServiceLocator;
-import org.eclipse.ui.internal.services.ServiceLocatorCreator;
-import org.eclipse.ui.internal.services.SourceProviderService;
-import org.eclipse.ui.internal.services.WorkbenchLocationService;
-import org.eclipse.ui.internal.splash.EclipseSplashHandler;
-import org.eclipse.ui.internal.splash.SplashHandlerFactory;
-import org.eclipse.ui.internal.testing.WorkbenchTestable;
-import org.eclipse.ui.internal.themes.ColorDefinition;
-import org.eclipse.ui.internal.themes.FontDefinition;
-import org.eclipse.ui.internal.themes.ThemeElementHelper;
-import org.eclipse.ui.internal.themes.WorkbenchThemeManager;
-import org.eclipse.ui.internal.tweaklets.GrabFocus;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.tweaklets.WorkbenchImplementation;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.intro.IIntroManager;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.model.IContributionService;
-import org.eclipse.ui.operations.IWorkbenchOperationSupport;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceScopes;
-import org.eclipse.ui.services.ISourceProviderService;
-import org.eclipse.ui.splash.AbstractSplashHandler;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.swt.IFocusService;
-import org.eclipse.ui.themes.IThemeManager;
-import org.eclipse.ui.views.IViewRegistry;
-import org.eclipse.ui.wizards.IWizardRegistry;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.SynchronousBundleListener;
-
-/**
- * The workbench class represents the top of the Eclipse user interface. Its
- * primary responsability is the management of workbench windows, dialogs,
- * wizards, and other workbench-related windows.
- * <p>
- * Note that any code that is run during the creation of a workbench instance
- * should not required access to the display.
- * </p>
- * <p>
- * Note that this internal class changed significantly between 2.1 and 3.0.
- * Applications that used to define subclasses of this internal class need to be
- * rewritten to use the new workbench advisor API.
- * </p>
- */
-public final class Workbench extends EventManager implements IWorkbench {
-
-	private final class StartupProgressBundleListener implements
-			SynchronousBundleListener {
-
-		private final IProgressMonitor progressMonitor;
-
-		private final int maximumProgressCount;
-
-		// stack of names of bundles currently starting
-		private final List starting;
-
-		StartupProgressBundleListener(IProgressMonitor progressMonitor,
-				int maximumProgressCount) {
-			super();
-			this.progressMonitor = progressMonitor;
-			this.maximumProgressCount = maximumProgressCount;
-			this.starting = new ArrayList();
-		}
-
-		public void bundleChanged(BundleEvent event) {
-			int eventType = event.getType();
-			String bundleName;
-
-			synchronized (this) {
-				if (eventType == BundleEvent.STARTING) {
-					starting.add(bundleName = event.getBundle()
-							.getSymbolicName());
-				} else if (eventType == BundleEvent.STARTED) {
-					progressCount++;
-					if (progressCount <= maximumProgressCount) {
-						progressMonitor.worked(1);
-					}
-					int index = starting.lastIndexOf(event.getBundle()
-							.getSymbolicName());
-					if (index >= 0) {
-						starting.remove(index);
-					}
-					if (index != starting.size()) {
-						return; // not currently displayed
-					}
-					bundleName = index == 0 ? null : (String) starting
-							.get(index - 1);
-				} else {
-					return; // uninteresting event
-				}
-			}
-
-			String taskName;
-
-			if (bundleName == null) {
-				taskName = WorkbenchMessages.Startup_Loading_Workbench;
-			} else {
-				taskName = NLS.bind(WorkbenchMessages.Startup_Loading,
-						bundleName);
-			}
-
-			progressMonitor.subTask(taskName);
-		}
-	}
-
-	/**
-	 * Family for the early startup job.
-	 */
-	public static final String EARLY_STARTUP_FAMILY = "earlyStartup"; //$NON-NLS-1$
-
-	static final String VERSION_STRING[] = { "0.046", "2.0" }; //$NON-NLS-1$ //$NON-NLS-2$
-
-	static final String DEFAULT_WORKBENCH_STATE_FILENAME = "workbench.xml"; //$NON-NLS-1$
-
-	/**
-	 * Holds onto the only instance of Workbench.
-	 */
-	private static Workbench instance;
-
-	/**
-	 * The testable object facade.
-	 * 
-	 * @since 3.0
-	 */
-	private static WorkbenchTestable testableObject;
-
-	/**
-	 * Signals that the workbench should create a splash implementation when
-	 * instantiated. Intial value is <code>true</code>.
-	 * 
-	 * @since 3.3
-	 */
-	private static boolean createSplash = true;
-
-	/**
-	 * The splash handler.
-	 */
-	private static AbstractSplashHandler splash;
-
-	/**
-	 * The display used for all UI interactions with this workbench.
-	 * 
-	 * @since 3.0
-	 */
-	private Display display;
-
-	private WindowManager windowManager;
-
-	private WorkbenchWindow activatedWindow;
-
-	private EditorHistory editorHistory;
-
-	private boolean runEventLoop = true;
-
-	private boolean isStarting = true;
-
-	private boolean isClosing = false;
-
-	/**
-	 * PlatformUI return code (as opposed to IPlatformRunnable return code).
-	 */
-	private int returnCode = PlatformUI.RETURN_UNSTARTABLE;
-
-	/**
-	 * Advisor providing application-specific configuration and customization of
-	 * the workbench.
-	 * 
-	 * @since 3.0
-	 */
-	private WorkbenchAdvisor advisor;
-
-	/**
-	 * Object for configuring the workbench. Lazily initialized to an instance
-	 * unique to the workbench instance.
-	 * 
-	 * @since 3.0
-	 */
-	private WorkbenchConfigurer workbenchConfigurer;
-
-	// for dynamic UI
-	/**
-	 * ExtensionEventHandler handles extension life-cycle events.
-	 */
-	private ExtensionEventHandler extensionEventHandler;
-
-	/**
-	 * A count of how many large updates are going on. This tracks nesting of
-	 * requests to disable services during a large update -- similar to the
-	 * <code>setRedraw</code> functionality on <code>Control</code>. When
-	 * this value becomes greater than zero, services are disabled. When this
-	 * value becomes zero, services are enabled. Please see
-	 * <code>largeUpdateStart()</code> and <code>largeUpdateEnd()</code>.
-	 */
-	private int largeUpdates = 0;
-
-	/**
-	 * The service locator maintained by the workbench. These services are
-	 * initialized during workbench during the <code>init</code> method.
-	 */
-	private final ServiceLocator serviceLocator;
-
-	/**
-	 * A count of how many plug-ins were loaded while restoring the workbench
-	 * state. Initially -1 for unknown number.
-	 */
-	private int progressCount = -1;
-
-	/**
-	 * A field to hold the workbench windows that have been restored. In the
-	 * event that not all windows have been restored, this field allows the
-	 * openWindowsAfterRestore method to open some windows.
-	 */
-	private WorkbenchWindow[] createdWindows;
-
-	/**
-	 * Listener list for registered IWorkbenchListeners .
-	 */
-	private ListenerList workbenchListeners = new ListenerList(
-			ListenerList.IDENTITY);
-
-	/**
-	 * Creates a new workbench.
-	 * 
-	 * @param display
-	 *            the display to be used for all UI interactions with the
-	 *            workbench
-	 * @param advisor
-	 *            the application-specific advisor that configures and
-	 *            specializes this workbench instance
-	 * @since 3.0
-	 */
-	private Workbench(Display display, WorkbenchAdvisor advisor) {
-		super();
-		StartupThreading.setWorkbench(this);
-		if (instance != null && instance.isRunning()) {
-			throw new IllegalStateException(
-					WorkbenchMessages.Workbench_CreatingWorkbenchTwice);
-		}
-		Assert.isNotNull(display);
-		Assert.isNotNull(advisor);
-		this.advisor = advisor;
-		this.display = display;
-		Workbench.instance = this;
-
-		// for dynamic UI [This seems to be for everything that isn't handled by
-		// some
-		// subclass of RegistryManager. I think that when an extension is moved
-		// to the
-		// RegistryManager implementation, then it should be removed from the
-		// list in
-		// ExtensionEventHandler#appear.
-		// I've found that the new wizard extension in particular is a poor
-		// choice to
-		// use as an example, since the result of reading the registry is not
-		// cached
-		// -- so it is re-read each time. The only real contribution of this
-		// dialog is
-		// to show the user a nice dialog describing the addition.]
-		extensionEventHandler = new ExtensionEventHandler(this);
-		Platform.getExtensionRegistry().addRegistryChangeListener(
-				extensionEventHandler);
-		IServiceLocatorCreator slc = new ServiceLocatorCreator();
-		serviceLocator = (ServiceLocator) slc.createServiceLocator(null, null, new IDisposable(){
-			public void dispose() {
-				final Display display = getDisplay();
-				if (display != null && !display.isDisposed()) {
-					MessageDialog
-									.openInformation(
-											null,
-											WorkbenchMessages.Workbench_NeedsClose_Title,
-											WorkbenchMessages.Workbench_NeedsClose_Message);
-					close(PlatformUI.RETURN_RESTART, true);
-				}
-			}
-		});
-		serviceLocator.registerService(IServiceLocatorCreator.class, slc);
-		serviceLocator.registerService(IWorkbenchLocationService.class,
-				new WorkbenchLocationService(IServiceScopes.WORKBENCH_SCOPE,
-						this, null, null, null, null, 0));
-	}
-
-	/**
-	 * Returns the one and only instance of the workbench, if there is one.
-	 * 
-	 * @return the workbench, or <code>null</code> if the workbench has not
-	 *         been created, or has been created and already completed
-	 */
-	public static final Workbench getInstance() {
-		return instance;
-	}
-
-	/**
-	 * Creates the workbench and associates it with the the given display and
-	 * workbench advisor, and runs the workbench UI. This entails processing and
-	 * dispatching events until the workbench is closed or restarted.
-	 * <p>
-	 * This method is intended to be called by <code>PlatformUI</code>. Fails
-	 * if the workbench UI has already been created.
-	 * </p>
-	 * <p>
-	 * The display passed in must be the default display.
-	 * </p>
-	 * 
-	 * @param display
-	 *            the display to be used for all UI interactions with the
-	 *            workbench
-	 * @param advisor
-	 *            the application-specific advisor that configures and
-	 *            specializes the workbench
-	 * @return return code {@link PlatformUI#RETURN_OK RETURN_OK}for normal
-	 *         exit; {@link PlatformUI#RETURN_RESTART RETURN_RESTART}if the
-	 *         workbench was terminated with a call to
-	 *         {@link IWorkbench#restart IWorkbench.restart}; other values
-	 *         reserved for future use
-	 */
-	public static final int createAndRunWorkbench(final Display display,
-			final WorkbenchAdvisor advisor) {
-		final int[] returnCode = new int[1];
-		Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
-			public void run() {
-				// create the workbench instance
-				Workbench workbench = new Workbench(display, advisor);
-				// run the workbench event loop
-				returnCode[0] = workbench.runUI();
-			}
-		});
-		return returnCode[0];
-	}
-
-	/**
-	 * Creates the <code>Display</code> to be used by the workbench.
-	 * 
-	 * @return the display
-	 */
-	public static Display createDisplay() {
-		// setup the application name used by SWT to lookup resources on some
-		// platforms
-		String applicationName = WorkbenchPlugin.getDefault().getAppName();
-		if (applicationName != null) {
-			Display.setAppName(applicationName);
-		}
-
-		// create the display
-		Display newDisplay = Display.getCurrent();
-		if(newDisplay == null) {
-			if (Policy.DEBUG_SWT_GRAPHICS || Policy.DEBUG_SWT_DEBUG) {
-				DeviceData data = new DeviceData();
-				if (Policy.DEBUG_SWT_GRAPHICS) {
-					data.tracking = true;
-				}
-				if (Policy.DEBUG_SWT_DEBUG) {
-					data.debug = true;
-				}
-				newDisplay = new Display(data);
-			} else {
-				newDisplay = new Display();
-			}
-		}
-
-		// workaround for 1GEZ9UR and 1GF07HN
-		newDisplay.setWarnings(false);
-
-		// Set the priority higher than normal so as to be higher
-		// than the JobManager.
-		Thread.currentThread().setPriority(
-				Math.min(Thread.MAX_PRIORITY, Thread.NORM_PRIORITY + 1));
-
-		initializeImages();
-
-		return newDisplay;
-	}
-
-	/**
-	 * Create the splash wrapper and set it to work.
-	 * 
-	 * @since 3.3
-	 */
-	private void createSplashWrapper() {
-		final Display display = getDisplay();
-		String splashLoc = System.getProperty("org.eclipse.equinox.launcher.splash.location"); //$NON-NLS-1$
-		final Image background = loadImage(splashLoc);
-		
-		SafeRunnable run = new SafeRunnable() {
-
-			public void run() throws Exception {
-				if (! WorkbenchPlugin.isSplashHandleSpecified()) {
-					createSplash = false;
-					return;
-				}
-				
-				// create the splash
-				getSplash();
-				if (splash == null) {
-					createSplash = false;
-					return;
-				}
-				
-				Shell splashShell = splash.getSplash();
-				if (splashShell == null) {					
-					splashShell = WorkbenchPlugin.getSplashShell(display);
-					
-					if (splashShell == null)
-						return;
-					if (background != null)
-						splashShell.setBackgroundImage(background);
-				}
-
-				Dictionary properties = new Hashtable();
-				properties.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-				BundleContext context = WorkbenchPlugin.getDefault().getBundleContext();
-				final ServiceRegistration registration[] = new ServiceRegistration[1];
-				StartupMonitor startupMonitor = new StartupMonitor() {
-
-					public void applicationRunning() {
-						splash.dispose();
-						if (background != null)
-							background.dispose();
-						registration[0].unregister(); // unregister ourself
-						WorkbenchPlugin.unsetSplashShell(display);
-					}
-
-					public void update() {
-						// do nothing - we come into the picture far too late
-						// for this to be relevant
-					}
-				};
-				registration[0] = context.registerService(StartupMonitor.class
-						.getName(), startupMonitor, properties);
-				
-				splash.init(splashShell);
-			}
-			/* (non-Javadoc)
-			 * @see org.eclipse.jface.util.SafeRunnable#handleException(java.lang.Throwable)
-			 */
-			public void handleException(Throwable e) {
-				StatusManager.getManager().handle(
-						StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-								"Could not instantiate splash", e)); //$NON-NLS-1$
-				createSplash = false;
-				splash = null;
-				if (background != null)
-					background.dispose();
-				
-			}
-			};
-			SafeRunner.run(run);
-	}
-
-	/**
-	 * Load an image from a filesystem path.
-	 * 
-	 * @param splashLoc the location to load from
-	 * @return the image or <code>null</code>
-	 * @since 3.3
-	 */
-	private Image loadImage(String splashLoc) {
-		Image background = null;
-		if (splashLoc != null) {
-			try {
-				InputStream input = new BufferedInputStream(
-						new FileInputStream(splashLoc));
-				background = new Image(display, input);
-			} catch (IOException e) {
-				StatusManager.getManager().handle(
-						StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH, e));
-			}
-		} 
-		return background;
-	}
-
-	/**
-	 * Return the splash handler for this application. If none is specifically
-	 * provided the default Eclipse implementation is returned.
-	 * 
-	 * @return the splash handler for this application or <code>null</code>
-	 * @since 3.3
-	 */
-	private static AbstractSplashHandler getSplash() {
-		if (!createSplash)
-			return null;
-		
-		if (splash == null) {
-			
-			IProduct product = Platform.getProduct();
-			if (product != null) 
-				splash = SplashHandlerFactory.findSplashHandlerFor(product);
-			
-			if (splash == null)
-				splash = new EclipseSplashHandler();
-		}
-		return splash;
-	}
-
-	/**
-	 * Returns the testable object facade, for use by the test harness.
-	 * 
-	 * @return the testable object facade
-	 * @since 3.0
-	 */
-	public static WorkbenchTestable getWorkbenchTestable() {
-		if (testableObject == null) {
-			testableObject = new WorkbenchTestable();
-		}
-		return testableObject;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 * 
-	 * @since 3.2
-	 */
-	public void addWorkbenchListener(IWorkbenchListener listener) {
-		workbenchListeners.add(listener);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 * 
-	 * @since 3.2
-	 */
-	public void removeWorkbenchListener(IWorkbenchListener listener) {
-		workbenchListeners.remove(listener);
-	}
-
-	/**
-	 * Fire workbench preShutdown event, stopping at the first one to veto
-	 * 
-	 * @param forced
-	 *            flag indicating whether the shutdown is being forced
-	 * @return <code>true</code> to allow the workbench to proceed with
-	 *         shutdown, <code>false</code> to veto a non-forced shutdown
-	 * @since 3.2
-	 */
-	boolean firePreShutdown(final boolean forced) {
-		Object list[] = workbenchListeners.getListeners();
-		for (int i = 0; i < list.length; i++) {
-			final IWorkbenchListener l = (IWorkbenchListener) list[i];
-			final boolean[] result = new boolean[] { false };
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					result[0] = l.preShutdown(Workbench.this, forced);
-				}
-			});
-			if (!result[0]) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Fire workbench postShutdown event.
-	 * 
-	 * @since 3.2
-	 */
-	void firePostShutdown() {
-		Object list[] = workbenchListeners.getListeners();
-		for (int i = 0; i < list.length; i++) {
-			final IWorkbenchListener l = (IWorkbenchListener) list[i];
-			SafeRunnable.run(new SafeRunnable() {
-				public void run() {
-					l.postShutdown(Workbench.this);
-				}
-			});
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public void addWindowListener(IWindowListener l) {
-		addListenerObject(l);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public void removeWindowListener(IWindowListener l) {
-		removeListenerObject(l);
-	}
-
-	/**
-	 * Fire window opened event.
-	 * 
-	 * @param window
-	 *            The window which just opened; should not be <code>null</code>.
-	 */
-	protected void fireWindowOpened(final IWorkbenchWindow window) {
-		Object list[] = getListeners();
-		for (int i = 0; i < list.length; i++) {
-			final IWindowListener l = (IWindowListener) list[i];
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					l.windowOpened(window);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Fire window closed event.
-	 * 
-	 * @param window
-	 *            The window which just closed; should not be <code>null</code>.
-	 */
-	protected void fireWindowClosed(final IWorkbenchWindow window) {
-		if (activatedWindow == window) {
-			// Do not hang onto it so it can be GC'ed
-			activatedWindow = null;
-		}
-
-		Object list[] = getListeners();
-		for (int i = 0; i < list.length; i++) {
-			final IWindowListener l = (IWindowListener) list[i];
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					l.windowClosed(window);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Fire window activated event.
-	 * 
-	 * @param window
-	 *            The window which was just activated; should not be
-	 *            <code>null</code>.
-	 */
-	protected void fireWindowActivated(final IWorkbenchWindow window) {
-		Object list[] = getListeners();
-		for (int i = 0; i < list.length; i++) {
-			final IWindowListener l = (IWindowListener) list[i];
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					l.windowActivated(window);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Fire window deactivated event.
-	 * 
-	 * @param window
-	 *            The window which was just deactivated; should not be
-	 *            <code>null</code>.
-	 */
-	protected void fireWindowDeactivated(final IWorkbenchWindow window) {
-		Object list[] = getListeners();
-		for (int i = 0; i < list.length; i++) {
-			final IWindowListener l = (IWindowListener) list[i];
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					l.windowDeactivated(window);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Closes the workbench. Assumes that the busy cursor is active.
-	 * 
-	 * @param force
-	 *            true if the close is mandatory, and false if the close is
-	 *            allowed to fail
-	 * @return true if the close succeeded, and false otherwise
-	 */
-	private boolean busyClose(final boolean force) {
-
-		// notify the advisor of preShutdown and allow it to veto if not forced
-		isClosing = advisor.preShutdown();
-		if (!force && !isClosing) {
-			return false;
-		}
-
-		// notify regular workbench clients of preShutdown and allow them to
-		// veto if not forced
-		isClosing = firePreShutdown(force);
-		if (!force && !isClosing) {
-			return false;
-		}
-
-		// save any open editors if they are dirty
-		isClosing = saveAllEditors(!force);
-		if (!force && !isClosing) {
-			return false;
-		}
-
-		boolean closeEditors = !force
-				&& PrefUtil.getAPIPreferenceStore().getBoolean(
-						IWorkbenchPreferenceConstants.CLOSE_EDITORS_ON_EXIT);
-		if (closeEditors) {
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					IWorkbenchWindow windows[] = getWorkbenchWindows();
-					for (int i = 0; i < windows.length; i++) {
-						IWorkbenchPage pages[] = windows[i].getPages();
-						for (int j = 0; j < pages.length; j++) {
-							isClosing = isClosing
-									&& pages[j].closeAllEditors(false);
-						}
-					}
-				}
-			});
-			if (!force && !isClosing) {
-				return false;
-			}
-		}
-
-		if (getWorkbenchConfigurer().getSaveAndRestore()) {
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					XMLMemento mem = recordWorkbenchState();
-					// Save the IMemento to a file.
-					saveMementoToFile(mem);
-				}
-
-				public void handleException(Throwable e) {
-					String message;
-					if (e.getMessage() == null) {
-						message = WorkbenchMessages.ErrorClosingNoArg;
-					} else {
-						message = NLS.bind(
-								WorkbenchMessages.ErrorClosingOneArg, e
-										.getMessage());
-					}
-
-					if (!MessageDialog.openQuestion(null,
-							WorkbenchMessages.Error, message)) {
-						isClosing = false;
-					}
-				}
-			});
-		}
-		if (!force && !isClosing) {
-			return false;
-		}
-
-		SafeRunner.run(new SafeRunnable(WorkbenchMessages.ErrorClosing) {
-			public void run() {
-				if (isClosing || force) {
-					isClosing = windowManager.close();
-				}
-			}
-		});
-
-		if (!force && !isClosing) {
-			return false;
-		}
-
-		shutdown();
-
-		runEventLoop = false;
-		return true;
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbench#saveAllEditors(boolean)
-	 */
-	public boolean saveAllEditors(boolean confirm) {
-		final boolean finalConfirm = confirm;
-		final boolean[] result = new boolean[1];
-		result[0] = true;
-
-		SafeRunner.run(new SafeRunnable(WorkbenchMessages.ErrorClosing) {
-			public void run() {
-				// Collect dirtyParts
-				ArrayList dirtyParts = new ArrayList();
-				ArrayList dirtyEditorsInput = new ArrayList();
-				IWorkbenchWindow windows[] = getWorkbenchWindows();
-				for (int i = 0; i < windows.length; i++) {
-					IWorkbenchPage pages[] = windows[i].getPages();
-					for (int j = 0; j < pages.length; j++) {
-						WorkbenchPage page = (WorkbenchPage) pages[j];
-
-						ISaveablePart[] parts = page.getDirtyParts();
-
-						for (int k = 0; k < parts.length; k++) {
-							ISaveablePart part = parts[k];
-
-							if (part.isSaveOnCloseNeeded()) {
-								if (part instanceof IEditorPart) {
-									IEditorPart editor = (IEditorPart) part;
-									if (!dirtyEditorsInput.contains(editor
-											.getEditorInput())) {
-										dirtyParts.add(editor);
-										dirtyEditorsInput.add(editor
-												.getEditorInput());
-									}
-								} else {
-									dirtyParts.add(part);
-								}
-							}
-						}
-					}
-				}
-				IShellProvider shellProvider;
-				IRunnableContext runnableContext;
-				IWorkbenchWindow w = getActiveWorkbenchWindow();
-				if (w == null && windows.length > 0) {
-					w = windows[0];
-				}
-				if (w != null) {
-					shellProvider = w;
-					runnableContext = w;
-				} else {
-					shellProvider = new IShellProvider() {
-						public Shell getShell() {
-							return null;
-						}
-					};
-					runnableContext = new ProgressMonitorDialog(null);
-				}
-				// The fourth parameter is true to also save saveables from
-				// non-part sources, see bug 139004.
-				result[0] = EditorManager.saveAll(dirtyParts, finalConfirm,
-						false, true, runnableContext, shellProvider);
-			}
-		});
-		return result[0];
-	}
-
-	/**
-	 * Opens a new workbench window and page with a specific perspective.
-	 * 
-	 * Assumes that busy cursor is active.
-	 */
-	private IWorkbenchWindow busyOpenWorkbenchWindow(final String perspID,
-			final IAdaptable input) throws WorkbenchException {
-		// Create a workbench window (becomes active window)
-		final WorkbenchWindow newWindowArray[] = new WorkbenchWindow[1];
-		StartupThreading.runWithWorkbenchExceptions(new StartupRunnable() {
-			public void runWithException() {
-				newWindowArray[0] = newWorkbenchWindow();
-			}
-		});
-
-		final WorkbenchWindow newWindow = newWindowArray[0];
-		
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				newWindow.create(); // must be created before adding to window
-									// manager
-			}
-		});
-		windowManager.add(newWindow);
-
-		final WorkbenchException [] exceptions = new WorkbenchException[1];
-		// Create the initial page.
-		if (perspID != null) {
-			StartupThreading.runWithWorkbenchExceptions(new StartupRunnable() {
-
-				public void runWithException() {
-					try {
-						newWindow.busyOpenPage(perspID, input);
-					} catch (WorkbenchException e) {
-						windowManager.remove(newWindow);
-						exceptions[0] = e;
-					}
-				}});	
-		}
-		if (exceptions[0] != null)
-			throw exceptions[0];
-
-		// Open window after opening page, to avoid flicker.
-		StartupThreading.runWithWorkbenchExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				newWindow.open();
-			}
-		});
-
-		return newWindow;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public boolean close() {
-		return close(PlatformUI.RETURN_OK, false);
-	}
-
-	/**
-	 * Closes the workbench, returning the given return code from the run
-	 * method. If forced, the workbench is closed no matter what.
-	 * 
-	 * @param returnCode
-	 *            {@link PlatformUI#RETURN_OK RETURN_OK}for normal exit;
-	 *            {@link PlatformUI#RETURN_RESTART RETURN_RESTART}if the
-	 *            workbench was terminated with a call to
-	 *            {@link IWorkbench#restart IWorkbench.restart};
-	 *            {@link PlatformUI#RETURN_EMERGENCY_CLOSE} for an emergency
-	 *            shutdown
-	 *            {@link PlatformUI#RETURN_UNSTARTABLE RETURN_UNSTARTABLE}if
-	 *            the workbench could not be started; other values reserved for
-	 *            future use
-	 * 
-	 * @param force
-	 *            true to force the workbench close, and false for a "soft"
-	 *            close that can be canceled
-	 * @return true if the close was successful, and false if the close was
-	 *         canceled
-	 */
-	/* package */
-	boolean close(int returnCode, final boolean force) {
-		this.returnCode = returnCode;
-		final boolean[] ret = new boolean[1];
-		BusyIndicator.showWhile(null, new Runnable() {
-			public void run() {
-				ret[0] = busyClose(force);
-			}
-		});
-		return ret[0];
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchWindow getActiveWorkbenchWindow() {
-		// Return null if called from a non-UI thread.
-		// This is not spec'ed behaviour and is misleading, however this is how
-		// it
-		// worked in 2.1 and we cannot change it now.
-		// For more details, see [Bug 57384] [RCP] Main window not active on
-		// startup
-		if (Display.getCurrent() == null) {
-			return null;
-		}
-
-		// Look at the current shell and up its parent
-		// hierarchy for a workbench window.
-		Control shell = display.getActiveShell();
-		while (shell != null) {
-			Object data = shell.getData();
-			if (data instanceof IWorkbenchWindow) {
-				return (IWorkbenchWindow) data;
-			}
-			shell = shell.getParent();
-		}
-
-		// Look for the window that was last known being
-		// the active one
-		WorkbenchWindow win = getActivatedWindow();
-		if (win != null) {
-			return win;
-		}
-
-		// Look at all the shells and pick the first one
-		// that is a workbench window.
-		Shell shells[] = display.getShells();
-		for (int i = 0; i < shells.length; i++) {
-			Object data = shells[i].getData();
-			if (data instanceof IWorkbenchWindow) {
-				return (IWorkbenchWindow) data;
-			}
-		}
-
-		// Can't find anything!
-		return null;
-	}
-
-	/*
-	 * Returns the editor history.
-	 */
-	public EditorHistory getEditorHistory() {
-		if (editorHistory == null) {
-			editorHistory = new EditorHistory();
-		}
-		return editorHistory;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IEditorRegistry getEditorRegistry() {
-		return WorkbenchPlugin.getDefault().getEditorRegistry();
-	}
-
-	/*
-	 * Returns the number for a new window. This will be the first number > 0
-	 * which is not used to identify another window in the workbench.
-	 */
-	private int getNewWindowNumber() {
-		// Get window list.
-		Window[] windows = windowManager.getWindows();
-		int count = windows.length;
-
-		// Create an array of booleans (size = window count).
-		// Cross off every number found in the window list.
-		boolean checkArray[] = new boolean[count];
-		for (int nX = 0; nX < count; nX++) {
-			if (windows[nX] instanceof WorkbenchWindow) {
-				WorkbenchWindow ww = (WorkbenchWindow) windows[nX];
-				int index = ww.getNumber() - 1;
-				if (index >= 0 && index < count) {
-					checkArray[index] = true;
-				}
-			}
-		}
-
-		// Return first index which is not used.
-		// If no empty index was found then every slot is full.
-		// Return next index.
-		for (int index = 0; index < count; index++) {
-			if (!checkArray[index]) {
-				return index + 1;
-			}
-		}
-		return count + 1;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchOperationSupport getOperationSupport() {
-		return WorkbenchPlugin.getDefault().getOperationSupport();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IPerspectiveRegistry getPerspectiveRegistry() {
-		return WorkbenchPlugin.getDefault().getPerspectiveRegistry();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public PreferenceManager getPreferenceManager() {
-		return WorkbenchPlugin.getDefault().getPreferenceManager();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IPreferenceStore getPreferenceStore() {
-		return WorkbenchPlugin.getDefault().getPreferenceStore();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public ISharedImages getSharedImages() {
-		return WorkbenchPlugin.getDefault().getSharedImages();
-	}
-
-	/**
-	 * Returns the window manager for this workbench.
-	 * 
-	 * @return the window manager
-	 */
-	/* package */
-	WindowManager getWindowManager() {
-		return windowManager;
-	}
-
-	/*
-	 * Answer the workbench state file.
-	 */
-	private File getWorkbenchStateFile() {
-		IPath path = WorkbenchPlugin.getDefault().getDataLocation();
-		if (path == null) {
-			return null;
-		}
-		path = path.append(DEFAULT_WORKBENCH_STATE_FILENAME);
-		return path.toFile();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public int getWorkbenchWindowCount() {
-		return windowManager.getWindowCount();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchWindow[] getWorkbenchWindows() {
-		Window[] windows = windowManager.getWindows();
-		IWorkbenchWindow[] dwindows = new IWorkbenchWindow[windows.length];
-		System.arraycopy(windows, 0, dwindows, 0, windows.length);
-		return dwindows;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkingSetManager getWorkingSetManager() {
-		return WorkbenchPlugin.getDefault().getWorkingSetManager();
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public ILocalWorkingSetManager createLocalWorkingSetManager() {
-		return new LocalWorkingSetManager(WorkbenchPlugin.getDefault()
-				.getBundleContext());
-	}
-
-	/**
-	 * Initializes the workbench now that the display is created.
-	 * 
-	 * @return true if init succeeded.
-	 */
-	private boolean init() {
-		// setup debug mode if required.
-		if (WorkbenchPlugin.getDefault().isDebugging()) {
-			WorkbenchPlugin.DEBUG = true;
-			ModalContext.setDebugMode(true);
-		}
-
-		// Set up the JFace preference store
-		JFaceUtil.initializeJFacePreferences();
-
-		// create workbench window manager
-		windowManager = new WindowManager();
-
-		IIntroRegistry introRegistry = WorkbenchPlugin.getDefault()
-				.getIntroRegistry();
-		if (introRegistry.getIntroCount() > 0) {
-			IProduct product = Platform.getProduct();
-			if (product != null) {
-				introDescriptor = (IntroDescriptor) introRegistry
-						.getIntroForProduct(product.getId());
-			}
-		}
-
-		// TODO Correctly order service initialization
-		// there needs to be some serious consideration given to
-		// the services, and hooking them up in the correct order
-		final EvaluationService evaluationService = new EvaluationService();
-		
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				serviceLocator.registerService(IEvaluationService.class,
-						evaluationService);
-			}
-		});
-		
-		// Initialize the activity support.
-		workbenchActivitySupport = new WorkbenchActivitySupport();
-		activityHelper = ActivityPersistanceHelper.getInstance();
-
-		initializeDefaultServices();
-		initializeFonts();
-		initializeColors();
-		initializeApplicationColors();
-
-		// now that the workbench is sufficiently initialized, let the advisor
-		// have a turn.
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				advisor.internalBasicInitialize(getWorkbenchConfigurer());
-			}
-		});
-		
-		// configure use of color icons in toolbars
-		boolean useColorIcons = PrefUtil.getInternalPreferenceStore()
-				.getBoolean(IPreferenceConstants.COLOR_ICONS);
-		ActionContributionItem.setUseColorIconsInToolbars(useColorIcons);
-
-		// initialize workbench single-click vs double-click behavior
-		initializeSingleClickOption();
-		
-		initializeWorkbenchImages();
-
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				((GrabFocus) Tweaklets.get(GrabFocus.KEY))
-						.init(getDisplay());
-			}
-		});
-		
-
-		// attempt to restore a previous workbench state
-		try {
-			UIStats.start(UIStats.RESTORE_WORKBENCH, "Workbench"); //$NON-NLS-1$
-
-			final boolean bail [] = new boolean[1]; 
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					advisor.preStartup();
-					
-					if (!advisor.openWindows()) {
-						bail[0] = true;
-					}
-				}});
-			
-			if (bail[0])
-				return false;
-
-		} finally {
-			UIStats.end(UIStats.RESTORE_WORKBENCH, this, "Workbench"); //$NON-NLS-1$
-		}
-
-		forceOpenPerspective();
-
-		return true;
-	}
-
-	/**
-	 * 
-	 */
-	private void initializeWorkbenchImages() {
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-			public void runWithException() {
-				WorkbenchImages.getDescriptors();
-			}});
-	}
-
-	/**
-	 * Establishes the relationship between JFace actions and the command
-	 * manager.
-	 */
-	private void initializeCommandResolver() {
-		ExternalActionManager.getInstance().setCallback(
-				new CommandCallback(bindingManager, commandManager,
-						new IActiveChecker() {
-							public final boolean isActive(final String commandId) {
-								return workbenchActivitySupport
-										.getActivityManager().getIdentifier(
-												commandId).isEnabled();
-							}
-						}, new IExecuteApplicable() {
-							public boolean isApplicable(IAction action) {
-								return !(action instanceof CommandAction);
-							}
-						}));
-	}
-
-	/**
-	 * Initialize colors defined by the new colorDefinitions extension point.
-	 * Note this will be rolled into initializeColors() at some point.
-	 * 
-	 * @since 3.0
-	 */
-	private void initializeApplicationColors() {
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				ColorDefinition[] colorDefinitions = WorkbenchPlugin
-						.getDefault().getThemeRegistry().getColors();
-				ThemeElementHelper.populateRegistry(getThemeManager().getTheme(
-						IThemeManager.DEFAULT_THEME), colorDefinitions,
-						PrefUtil.getInternalPreferenceStore());
-			}
-		});
-	}
-
-	private void initializeSingleClickOption() {
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		boolean openOnSingleClick = store
-				.getBoolean(IPreferenceConstants.OPEN_ON_SINGLE_CLICK);
-		boolean selectOnHover = store
-				.getBoolean(IPreferenceConstants.SELECT_ON_HOVER);
-		boolean openAfterDelay = store
-				.getBoolean(IPreferenceConstants.OPEN_AFTER_DELAY);
-		int singleClickMethod = openOnSingleClick ? OpenStrategy.SINGLE_CLICK
-				: OpenStrategy.DOUBLE_CLICK;
-		if (openOnSingleClick) {
-			if (selectOnHover) {
-				singleClickMethod |= OpenStrategy.SELECT_ON_HOVER;
-			}
-			if (openAfterDelay) {
-				singleClickMethod |= OpenStrategy.ARROW_KEYS_OPEN;
-			}
-		}
-		OpenStrategy.setOpenMethod(singleClickMethod);
-	}
-
-	/*
-	 * Initializes the workbench fonts with the stored values.
-	 */
-	private void initializeFonts() {
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				FontDefinition[] fontDefinitions = WorkbenchPlugin.getDefault()
-						.getThemeRegistry().getFonts();
-
-				ThemeElementHelper.populateRegistry(getThemeManager()
-						.getCurrentTheme(), fontDefinitions, PrefUtil
-						.getInternalPreferenceStore());
-			}
-		});
-	}
-
-	/*
-	 * Initialize the workbench images.
-	 * 
-	 * @param windowImages An array of the descriptors of the images to be used
-	 * in the corner of each window, or <code>null</code> if none. It is
-	 * expected that the array will contain the same icon, rendered at different
-	 * sizes.
-	 * 
-	 * @since 3.0
-	 */
-	private static void initializeImages() {
-		ImageDescriptor[] windowImages = WorkbenchPlugin.getDefault()
-				.getWindowImages();
-		if (windowImages == null) {
-			return;
-		}
-
-		Image[] images = new Image[windowImages.length];
-		for (int i = 0; i < windowImages.length; ++i) {
-			images[i] = windowImages[i].createImage();
-		}
-		Window.setDefaultImages(images);
-	}
-
-	/*
-	 * Take the workbenches' images out of the shared registry.
-	 * 
-	 * @since 3.0
-	 */
-	private void uninitializeImages() {
-		WorkbenchImages.dispose();
-		Image[] images = Window.getDefaultImages();
-		Window.setDefaultImage(null);
-		for (int i = 0; i < images.length; i++) {
-			images[i].dispose();			
-		}
-	}
-
-	/*
-	 * Initialize the workbench colors.
-	 * 
-	 * @since 3.0
-	 */
-	private void initializeColors() {
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-			public void runWithException() {
-				WorkbenchColors.startup();
-			}});
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public boolean isClosing() {
-		return isClosing;
-	}
-
-	/**
-	 * Initializes all of the default services for the workbench. For
-	 * initializing the command-based services, this also parses the registry
-	 * and hooks up all the required listeners.
-	 */
-	private final void initializeDefaultServices() {
-				
-		final IContributionService contributionService = new ContributionService(
-				getAdvisor());
-		serviceLocator.registerService(IContributionService.class,
-				contributionService);
-		
-		// TODO Correctly order service initialization
-		// there needs to be some serious consideration given to
-		// the services, and hooking them up in the correct order
-		final IEvaluationService evaluationService = 
-			(IEvaluationService) serviceLocator.getService(IEvaluationService.class);
-		
-		
-
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				serviceLocator.registerService(ISaveablesLifecycleListener.class,
-						new SaveablesList());
-			}});
-		
-		/*
-		 * Phase 1 of the initialization of commands. When this phase completes,
-		 * all the services and managers will exist, and be accessible via the
-		 * getService(Object) method.
-		 */
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				Command.DEBUG_COMMAND_EXECUTION = Policy.DEBUG_COMMANDS;
-				commandManager = new CommandManager();
-			}});
-		
-		final CommandService [] commandService = new CommandService[1];
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				commandService[0] = new CommandService(commandManager);
-				commandService[0].readRegistry();
-				serviceLocator.registerService(ICommandService.class, commandService[0]);
-
-			}});
-		
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				ContextManager.DEBUG = Policy.DEBUG_CONTEXTS;
-				contextManager = new ContextManager();
-				}});
-		
-		final IContextService contextService = new ContextService(
-				contextManager);
-		
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				contextService.readRegistry();
-				}});
-		
-		serviceLocator.registerService(IContextService.class, contextService);
-	
-
-		final IBindingService [] bindingService = new BindingService[1];
-		
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				BindingManager.DEBUG = Policy.DEBUG_KEY_BINDINGS;
-				bindingManager = new BindingManager(contextManager, commandManager);
-				bindingService[0] = new BindingService(
-						bindingManager, commandService[0], Workbench.this);
-				
-			}});
-		
-		bindingService[0].readRegistryAndPreferences(commandService[0]);
-		serviceLocator.registerService(IBindingService.class, bindingService[0]);
-
-		final CommandImageManager commandImageManager = new CommandImageManager();
-		final CommandImageService commandImageService = new CommandImageService(
-				commandImageManager, commandService[0]);
-		commandImageService.readRegistry();
-		serviceLocator.registerService(ICommandImageService.class,
-				commandImageService);
-		
-		final WorkbenchMenuService menuService = new WorkbenchMenuService(serviceLocator);
-		
-		serviceLocator.registerService(IMenuService.class, menuService);
-		// the service must be registered before it is initialized - its
-		// initialization uses the service locator to address a dependency on
-		// the menu service
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				menuService.readRegistry();
-			}});
-
-		/*
-		 * Phase 2 of the initialization of commands. The source providers that
-		 * the workbench provides are creating and registered with the above
-		 * services. These source providers notify the services when particular
-		 * pieces of workbench state change.
-		 */
-		final SourceProviderService sourceProviderService = new SourceProviderService(serviceLocator);
-		serviceLocator.registerService(ISourceProviderService.class,
-				sourceProviderService);
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				// this currently instantiates all players ... sigh
-				sourceProviderService.readRegistry();
-				ISourceProvider[] sp = sourceProviderService.getSourceProviders();
-				for (int i = 0; i < sp.length; i++) {
-					evaluationService.addSourceProvider(sp[i]);
-					if (!(sp[i] instanceof ActiveContextSourceProvider)) {
-						contextService.addSourceProvider(sp[i]);
-					}
-				}
-			}});
-						
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				// these guys are need to provide the variables they say
-				// they source
-				actionSetSourceProvider = (ActionSetSourceProvider) sourceProviderService
-						.getSourceProvider(ISources.ACTIVE_ACTION_SETS_NAME);
-
-				FocusControlSourceProvider focusControl = (FocusControlSourceProvider) sourceProviderService
-						.getSourceProvider(ISources.ACTIVE_FOCUS_CONTROL_ID_NAME);
-				serviceLocator.registerService(IFocusService.class,
-						focusControl);
-
-				menuSourceProvider = (MenuSourceProvider) sourceProviderService
-						.getSourceProvider(ISources.ACTIVE_MENU_NAME);
-			}});
-		
-		/*
-		 * Phase 3 of the initialization of commands. This handles the creation
-		 * of wrappers for legacy APIs. By the time this phase completes, any
-		 * code trying to access commands through legacy APIs should work.
-		 */
-		final IHandlerService[] handlerService = new IHandlerService[1];
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				handlerService[0] = (IHandlerService) serviceLocator
-						.getService(IHandlerService.class);
-			}
-		});
-		workbenchContextSupport = new WorkbenchContextSupport(this,
-				contextManager);
-		workbenchCommandSupport = new WorkbenchCommandSupport(bindingManager,
-				commandManager, contextManager, handlerService[0]);
-		initializeCommandResolver();
-
-		addWindowListener(windowListener);
-		bindingManager.addBindingManagerListener(bindingManagerListener);
-
-		serviceLocator.registerService(ISelectionConversionService.class,
-				new SelectionConversionService());
-	}
-
-	/**
-	 * Returns true if the Workbench is in the process of starting.
-	 * 
-	 * @return <code>true</code> if the Workbench is starting, but not yet
-	 *         running the event loop.
-	 */
-	public boolean isStarting() {
-		return isStarting;
-	}
-
-	/*
-	 * Creates a new workbench window.
-	 * 
-	 * @return the new workbench window
-	 */
-	private WorkbenchWindow newWorkbenchWindow() {
-		WorkbenchWindow wbw = ((WorkbenchImplementation) Tweaklets
-				.get(WorkbenchImplementation.KEY)).createWorkbenchWindow(getNewWindowNumber());
-		return wbw;
-	}
-
-	/*
-	 * If a perspective was specified on the command line (-perspective) then
-	 * force that perspective to open in the active window.
-	 */
-	private void forceOpenPerspective() {
-		if (getWorkbenchWindowCount() == 0) {
-			// there should be an open window by now, bail out.
-			return;
-		}
-
-		String perspId = null;
-		String[] commandLineArgs = Platform.getCommandLineArgs();
-		for (int i = 0; i < commandLineArgs.length - 1; i++) {
-			if (commandLineArgs[i].equalsIgnoreCase("-perspective")) { //$NON-NLS-1$
-				perspId = commandLineArgs[i + 1];
-				break;
-			}
-		}
-		if (perspId == null) {
-			return;
-		}
-		IPerspectiveDescriptor desc = getPerspectiveRegistry()
-				.findPerspectiveWithId(perspId);
-		if (desc == null) {
-			return;
-		}
-
-		IWorkbenchWindow win = getActiveWorkbenchWindow();
-		if (win == null) {
-			win = getWorkbenchWindows()[0];
-		}
-		
-		final String threadPerspId = perspId;
-		final IWorkbenchWindow threadWin = win;
-    	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-			public void runWithException() throws Throwable {
-				try {
-					showPerspective(threadPerspId, threadWin);
-				} catch (WorkbenchException e) {
-					String msg = "Workbench exception showing specified command line perspective on startup."; //$NON-NLS-1$
-					WorkbenchPlugin.log(msg, new Status(IStatus.ERROR,
-							PlatformUI.PLUGIN_ID, 0, msg, e));
-				}
-			}});
-	}
-
-	/**
-	 * Opens the initial workbench window.
-	 */
-	/* package */void openFirstTimeWindow() {
-		final boolean showProgress = PrefUtil.getAPIPreferenceStore()
-				.getBoolean(
-						IWorkbenchPreferenceConstants.SHOW_PROGRESS_ON_STARTUP);
-
-		if (!showProgress) {
-			doOpenFirstTimeWindow();
-		} else {
-			// We don't know how many plug-ins will be loaded,
-			// assume we are loading a tenth of the installed plug-ins.
-			// (The Eclipse SDK loads 7 of 86 plug-ins at startup as of
-			// 2005-5-20)
-			final int expectedProgressCount = Math.max(1, WorkbenchPlugin
-					.getDefault().getBundleCount() / 10);
-
-			runStartupWithProgress(expectedProgressCount, new Runnable() {
-				public void run() {
-					doOpenFirstTimeWindow();
-				}
-			});
-		}
-	}
-
-	private void runStartupWithProgress(final int expectedProgressCount,
-			final Runnable runnable) {
-		progressCount = 0;
-		final double cutoff = 0.95;
-
-		AbstractSplashHandler handler = getSplash();
-		IProgressMonitor progressMonitor = null;
-		if (handler != null)
-			progressMonitor = handler.getBundleProgressMonitor();
-		 
-		if (progressMonitor == null) {
-			// cannot report progress (e.g. if the splash screen is not showing)
-			// fall back to starting without showing progress.
-			runnable.run();
-		} else {
-			progressMonitor.beginTask("", expectedProgressCount); //$NON-NLS-1$
-			SynchronousBundleListener bundleListener = new StartupProgressBundleListener(
-					progressMonitor, (int) (expectedProgressCount * cutoff));
-			WorkbenchPlugin.getDefault().addBundleListener(bundleListener);
-			try {
-				runnable.run();
-				progressMonitor.subTask(WorkbenchMessages.Startup_Done);
-				int remainingWork = expectedProgressCount
-						- Math.min(progressCount,
-								(int) (expectedProgressCount * cutoff));
-				progressMonitor.worked(remainingWork);
-				progressMonitor.done();
-			} finally {
-				WorkbenchPlugin.getDefault().removeBundleListener(
-						bundleListener);
-			}
-		}
-	}
-
-	private void doOpenFirstTimeWindow() {
-		try {
-			final IAdaptable input [] = new IAdaptable[1];
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					input[0] = getDefaultPageInput();
-				}});
-			
-			busyOpenWorkbenchWindow(getPerspectiveRegistry()
-					.getDefaultPerspective(), input[0]);
-		} catch (final WorkbenchException e) {
-			// Don't use the window's shell as the dialog parent,
-			// as the window is not open yet (bug 76724).
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					ErrorDialog.openError(null,
-							WorkbenchMessages.Problems_Opening_Page, e.getMessage(), e
-									.getStatus());
-				}});
-		}
-	}
-
-	/*
-	 * Restores the workbench UI from the workbench state file (workbench.xml).
-	 * 
-	 * @return a status object indicating OK if a window was opened,
-	 * RESTORE_CODE_RESET if no window was opened but one should be, and
-	 * RESTORE_CODE_EXIT if the workbench should close immediately
-	 */
-	/* package */IStatus restoreState() {
-
-		if (!getWorkbenchConfigurer().getSaveAndRestore()) {
-			String msg = WorkbenchMessages.Workbench_restoreDisabled;
-			return new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-					IWorkbenchConfigurer.RESTORE_CODE_RESET, msg, null);
-		}
-		// Read the workbench state file.
-		final File stateFile = getWorkbenchStateFile();
-		// If there is no state file cause one to open.
-		if (stateFile == null || !stateFile.exists()) {
-			String msg = WorkbenchMessages.Workbench_noStateToRestore;
-			return new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-					IWorkbenchConfigurer.RESTORE_CODE_RESET, msg, null);
-		}
-
-		final IStatus result[] = { new Status(IStatus.OK,
-				WorkbenchPlugin.PI_WORKBENCH, IStatus.OK, "", null) }; //$NON-NLS-1$
-		SafeRunner.run(new SafeRunnable(WorkbenchMessages.ErrorReadingState) {
-			public void run() throws Exception {
-				FileInputStream input = new FileInputStream(stateFile);
-				BufferedReader reader = new BufferedReader(
-						new InputStreamReader(input, "utf-8")); //$NON-NLS-1$
-				IMemento memento = XMLMemento.createReadRoot(reader);
-
-				// Validate known version format
-				String version = memento
-						.getString(IWorkbenchConstants.TAG_VERSION);
-				boolean valid = false;
-				for (int i = 0; i < VERSION_STRING.length; i++) {
-					if (VERSION_STRING[i].equals(version)) {
-						valid = true;
-						break;
-					}
-				}
-				if (!valid) {
-					reader.close();
-					String msg = WorkbenchMessages.Invalid_workbench_state_ve;
-					MessageDialog.openError((Shell) null,
-							WorkbenchMessages.Restoring_Problems, msg);
-					stateFile.delete();
-					result[0] = new Status(IStatus.ERROR,
-							WorkbenchPlugin.PI_WORKBENCH,
-							IWorkbenchConfigurer.RESTORE_CODE_RESET, msg, null);
-					return;
-				}
-
-				// Validate compatible version format
-				// We no longer support the release 1.0 format
-				if (VERSION_STRING[0].equals(version)) {
-					reader.close();
-					String msg = WorkbenchMessages.Workbench_incompatibleSavedStateVersion;
-					boolean ignoreSavedState = new MessageDialog(null,
-							WorkbenchMessages.Workbench_incompatibleUIState,
-							null, msg, MessageDialog.WARNING, new String[] {
-									IDialogConstants.OK_LABEL,
-									IDialogConstants.CANCEL_LABEL }, 0).open() == 0;
-					// OK is the default
-					if (ignoreSavedState) {
-						stateFile.delete();
-						result[0] = new Status(IStatus.WARNING,
-								WorkbenchPlugin.PI_WORKBENCH,
-								IWorkbenchConfigurer.RESTORE_CODE_RESET, msg,
-								null);
-					} else {
-						result[0] = new Status(IStatus.WARNING,
-								WorkbenchPlugin.PI_WORKBENCH,
-								IWorkbenchConfigurer.RESTORE_CODE_EXIT, msg,
-								null);
-					}
-					return;
-				}
-
-				// Restore the saved state
-				final IStatus restoreResult = restoreState(memento);
-				reader.close();
-				if (restoreResult.getSeverity() == IStatus.ERROR) {
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-
-								public void runWithException() throws Throwable {
-									StatusManager.getManager().handle(restoreResult, StatusManager.LOG);
-								}
-							});
-
-				}
-			}
-
-			public void handleException(final Throwable e) {
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() {
-						handle(e);
-						String msg = e.getMessage() == null ? "" : e.getMessage(); //$NON-NLS-1$
-						result[0] = new Status(IStatus.ERROR,
-								WorkbenchPlugin.PI_WORKBENCH,
-								IWorkbenchConfigurer.RESTORE_CODE_RESET, msg, e);
-						stateFile.delete();
-					}});
-			}
-			
-			private void handle(final Throwable e) {
-				super.handleException(e);
-			}
-		});
-		// ensure at least one window was opened
-		if (result[0].isOK() && windowManager.getWindows().length == 0) {
-			String msg = WorkbenchMessages.Workbench_noWindowsRestored;
-			result[0] = new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
-					IWorkbenchConfigurer.RESTORE_CODE_RESET, msg, null);
-		}
-		return result[0];
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchWindow openWorkbenchWindow(IAdaptable input)
-			throws WorkbenchException {
-		return openWorkbenchWindow(getPerspectiveRegistry()
-				.getDefaultPerspective(), input);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchWindow openWorkbenchWindow(final String perspID,
-			final IAdaptable input) throws WorkbenchException {
-		// Run op in busy cursor.
-		final Object[] result = new Object[1];
-		BusyIndicator.showWhile(null, new Runnable() {
-			public void run() {
-				try {
-					result[0] = busyOpenWorkbenchWindow(perspID, input);
-				} catch (WorkbenchException e) {
-					result[0] = e;
-				}
-			}
-		});
-		if (result[0] instanceof IWorkbenchWindow) {
-			return (IWorkbenchWindow) result[0];
-		} else if (result[0] instanceof WorkbenchException) {
-			throw (WorkbenchException) result[0];
-		} else {
-			throw new WorkbenchException(
-					WorkbenchMessages.Abnormal_Workbench_Conditi);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#restoreWorkbenchWindow(org.eclipse.ui.IMemento)
-	 */
-	IWorkbenchWindow restoreWorkbenchWindow(IMemento memento)
-			throws WorkbenchException {
-		WorkbenchWindow newWindow = newWorkbenchWindow();
-		newWindow.create();
-
-		windowManager.add(newWindow);
-
-		// whether the window was opened
-		boolean opened = false;
-
-		try {
-			newWindow.restoreState(memento, null);
-			newWindow.fireWindowRestored();
-			newWindow.open();
-			opened = true;
-		} finally {
-			if (!opened) {
-				newWindow.close();
-			}
-		}
-
-		return newWindow;
-	}
-
-	/*
-	 * Record the workbench UI in a document
-	 */
-	private XMLMemento recordWorkbenchState() {
-		XMLMemento memento = XMLMemento
-				.createWriteRoot(IWorkbenchConstants.TAG_WORKBENCH);
-		final IStatus status = saveState(memento);
-		if (status.getSeverity() != IStatus.OK) {
-			// don't use newWindow as parent because it has not yet been opened
-			// (bug 76724)
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					ErrorDialog.openError(null,
-							WorkbenchMessages.Workbench_problemsSaving,
-							WorkbenchMessages.Workbench_problemsSavingMsg, status);
-				}});
-			
-		}
-		return memento;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public boolean restart() {
-		// this is the return code from run() to trigger a restart
-		return close(PlatformUI.RETURN_RESTART, false);
-	}
-
-	/*
-	 * Restores the state of the previously saved workbench
-	 */
-	private IStatus restoreState(final IMemento memento) {
-
-		final MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID,
-				IStatus.OK, WorkbenchMessages.Workbench_problemsRestoring, null);
-
-		final boolean showProgress = PrefUtil.getAPIPreferenceStore()
-				.getBoolean(
-						IWorkbenchPreferenceConstants.SHOW_PROGRESS_ON_STARTUP);
-
-		try {
-			/*
-			 * Restored windows will be set in the createdWindows field to be
-			 * used by the openWindowsAfterRestore() method
-			 */
-			if (!showProgress) {
-				doRestoreState(memento, result);
-			} else {
-				// Retrieve how many plug-ins were loaded while restoring the
-				// workbench
-				Integer lastProgressCount = memento
-						.getInteger(IWorkbenchConstants.TAG_PROGRESS_COUNT);
-
-				// If we don't know how many plug-ins were loaded last time,
-				// assume we are loading half of the installed plug-ins.
-				final int expectedProgressCount = Math.max(1,
-						lastProgressCount == null ? WorkbenchPlugin
-								.getDefault().getBundleCount() / 2
-								: lastProgressCount.intValue());
-
-				runStartupWithProgress(expectedProgressCount, new Runnable() {
-					public void run() {
-						doRestoreState(memento, result);
-					}
-				});
-			}
-		} finally {
-			openWindowsAfterRestore();
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the ids of all plug-ins that extend the
-	 * <code>org.eclipse.ui.startup</code> extension point.
-	 * 
-	 * @return the ids of all plug-ins containing 1 or more startup extensions
-	 */
-	public String[] getEarlyActivatedPlugins() {
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_STARTUP);
-		IExtension[] extensions = point.getExtensions();
-		ArrayList pluginIds = new ArrayList(extensions.length);
-		for (int i = 0; i < extensions.length; i++) {
-			String id = extensions[i].getNamespace();
-			if (!pluginIds.contains(id)) {
-				pluginIds.add(id);
-			}
-		}
-		return (String[]) pluginIds.toArray(new String[pluginIds.size()]);
-	}
-
-	/**
-	 * Returns the ids of the early activated plug-ins that have been disabled
-	 * by the user.
-	 * 
-	 * @return the ids of the early activated plug-ins that have been disabled
-	 *         by the user
-	 */
-	public String[] getDisabledEarlyActivatedPlugins() {
-		String pref = PrefUtil.getInternalPreferenceStore().getString(
-				IPreferenceConstants.PLUGINS_NOT_ACTIVATED_ON_STARTUP);
-		return Util.getArrayFromList(pref, ";"); //$NON-NLS-1$
-	}
-
-	/*
-	 * Starts all plugins that extend the <code> org.eclipse.ui.startup </code>
-	 * extension point, and that the user has not disabled via the preference
-	 * page.
-	 */
-	private void startPlugins() {
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-
-		// bug 55901: don't use getConfigElements directly, for pre-3.0
-		// compat, make sure to allow both missing class
-		// attribute and a missing startup element
-		IExtensionPoint point = registry.getExtensionPoint(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_STARTUP);
-
-		final IExtension[] extensions = point.getExtensions();
-		if (extensions.length == 0) {
-			return;
-		}
-		Job job = new Job("Workbench early startup") { //$NON-NLS-1$
-			protected IStatus run(IProgressMonitor monitor) {
-				HashSet disabledPlugins = new HashSet(Arrays
-						.asList(getDisabledEarlyActivatedPlugins()));
-				monitor.beginTask(WorkbenchMessages.Workbench_startingPlugins,
-						extensions.length);
-				for (int i = 0; i < extensions.length; ++i) {
-					if (monitor.isCanceled() || !isRunning()) {
-						return Status.CANCEL_STATUS;
-					}
-					IExtension extension = extensions[i];
-
-					// if the plugin is not in the set of disabled plugins, then
-					// execute the code to start it
-					if (!disabledPlugins.contains(extension.getNamespace())) {
-						monitor.subTask(extension.getNamespace());
-						SafeRunner.run(new EarlyStartupRunnable(extension));
-					}
-					monitor.worked(1);
-				}
-				monitor.done();
-				return Status.OK_STATUS;
-			}
-
-			public boolean belongsTo(Object family) {
-				return EARLY_STARTUP_FAMILY.equals(family);
-			}
-		};
-		job.setSystem(true);
-		job.schedule();
-	}
-
-	/**
-	 * Internal method for running the workbench UI. This entails processing and
-	 * dispatching events until the workbench is closed or restarted.
-	 * 
-	 * @return return code {@link PlatformUI#RETURN_OK RETURN_OK}for normal
-	 *         exit; {@link PlatformUI#RETURN_RESTART RETURN_RESTART}if the
-	 *         workbench was terminated with a call to
-	 *         {@link IWorkbench#restart IWorkbench.restart};
-	 *         {@link PlatformUI#RETURN_UNSTARTABLE RETURN_UNSTARTABLE}if the
-	 *         workbench could not be started; other values reserved for future
-	 *         use
-	 * @since 3.0
-	 */
-	private int runUI() {
-		UIStats.start(UIStats.START_WORKBENCH, "Workbench"); //$NON-NLS-1$
-
-		// deadlock code
-		boolean avoidDeadlock = true;
-
-		String[] commandLineArgs = Platform.getCommandLineArgs();
-		for (int i = 0; i < commandLineArgs.length; i++) {
-			if (commandLineArgs[i].equalsIgnoreCase("-allowDeadlock")) { //$NON-NLS-1$
-				avoidDeadlock = false;
-			}
-		}
-
-		final UISynchronizer synchronizer;
-		
-		if (avoidDeadlock) {
-			UILockListener uiLockListener = new UILockListener(display);
-			Job.getJobManager().setLockListener(uiLockListener);
-			synchronizer = new UISynchronizer(display, uiLockListener);
-			display
-					.setSynchronizer(synchronizer);
-			// declare the main thread to be a startup thread.
-			UISynchronizer.startupThread.set(Boolean.TRUE);
-		}
-		else 
-			synchronizer = null;
-		
-		// prime the splash nice and early
-		if (createSplash)
-			createSplashWrapper();
-
-		// ModalContext should not spin the event loop (there is no UI yet to
-		// block)
-		ModalContext.setAllowReadAndDispatch(false);
-
-		// if the -debug command line argument is used and the event loop is
-		// being
-		// run while starting the Workbench, log a warning.
-		if (WorkbenchPlugin.getDefault().isDebugging()) {
-			display.asyncExec(new Runnable() {
-				public void run() {
-					if (isStarting()) {
-						WorkbenchPlugin
-								.log(StatusUtil
-										.newStatus(
-												IStatus.WARNING,
-												"Event loop should not be run while the Workbench is starting.", //$NON-NLS-1$
-												new RuntimeException()));
-					}
-				}
-			});
-		}
-
-		Listener closeListener = new Listener() {
-			public void handleEvent(Event event) {
-				event.doit = close();
-			}
-		};
-
-		// Initialize an exception handler.
-		Window.IExceptionHandler handler = ExceptionHandler.getInstance();
-
-		try {
-			// react to display close event by closing workbench nicely
-			display.addListener(SWT.Close, closeListener);
-
-			// install backstop to catch exceptions thrown out of event loop
-			Window.setExceptionHandler(handler);
-
-			final boolean [] initOK = new boolean[1];
-			
-			if (getSplash() != null) {
-				
-				final boolean[] initDone = new boolean[]{false};
-				final Throwable[] error = new Throwable[1];
-				Thread initThread = new Thread() {
-				/* (non-Javadoc)
-				 * @see java.lang.Thread#run()
-				 */
-				public void run() {
-					try {
-						//declare us to be a startup thread so that our syncs will be executed 
-						UISynchronizer.startupThread.set(Boolean.TRUE);
-						initOK[0] = Workbench.this.init();
-					} 
-					catch (Throwable e) {
-						error[0] = e;
-					} 
-					finally {
-						initDone[0] = true;
-						display.wake();
-					}
-				}};
-				initThread.start();
-				while (true) {
-					if (!display.readAndDispatch()) {
-						if (initDone[0])
-							break;
-						display.sleep();
-					}
-				}
-				Throwable throwable = error[0];
-				if (throwable != null) {
-					if (throwable instanceof Error)
-						throw (Error)throwable;
-					if (throwable instanceof Exception)
-						throw (Exception)throwable;
-					
-					// how very exotic - something that isn't playing by the rules.  Wrap it in an error and bail
-					throw new Error(throwable);
-				}
-			}
-			else {
-				// initialize workbench and restore or open one window
-				initOK[0] = init();
-
-			}
-			// drop the splash screen now that a workbench window is up
-			Platform.endSplash();
-
-			// let the advisor run its start up code
-			if (initOK[0]) {
-				advisor.postStartup(); // may trigger a close/restart
-			}
-
-			if (initOK[0] && runEventLoop) {
-				// start eager plug-ins
-				startPlugins();
-				addStartupRegistryListener();
-
-				// WWinPluginAction.refreshActionList();
-
-				display.asyncExec(new Runnable() {
-					public void run() {
-						UIStats.end(UIStats.START_WORKBENCH, this, "Workbench"); //$NON-NLS-1$
-						UIStats.startupComplete();
-					}
-				});
-
-				getWorkbenchTestable().init(display, this);
-
-				// allow ModalContext to spin the event loop
-				ModalContext.setAllowReadAndDispatch(true);
-				isStarting = false;
-
-				if (synchronizer != null)
-					synchronizer.started();
-				// the event loop
-				runEventLoop(handler, display);
-			}
-
-		} catch (final Exception e) {
-			if (!display.isDisposed()) {
-				handler.handleException(e);
-			} else {
-				String msg = "Exception in Workbench.runUI after display was disposed"; //$NON-NLS-1$
-				WorkbenchPlugin.log(msg, new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 1, msg, e));
-			}
-		} finally {
-			// mandatory clean up
-
-			// The runEventLoop flag may not have been cleared if an exception
-			// occurred
-			// Needs to be false to ensure PlatformUI.isWorkbenchRunning()
-			// returns false.
-			runEventLoop = false;
-
-			if (!display.isDisposed()) {
-				display.removeListener(SWT.Close, closeListener);
-			}
-		}
-
-		// restart or exit based on returnCode
-		return returnCode;
-	}
-
-	/*
-	 * Runs an event loop for the workbench.
-	 */
-	private void runEventLoop(Window.IExceptionHandler handler, Display display) {
-		runEventLoop = true;
-		while (runEventLoop) {
-			try {
-				if (!display.readAndDispatch()) {
-					getAdvisor().eventLoopIdle(display);
-				}
-			} catch (Throwable t) {
-				handler.handleException(t);
-				// In case Display was closed under us
-				if (display.isDisposed())
-				    runEventLoop = false;
-			}
-		}
-	}
-
-	/*
-	 * Saves the current state of the workbench so it can be restored later on
-	 */
-	private IStatus saveState(IMemento memento) {
-		MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
-				WorkbenchMessages.Workbench_problemsSaving, null);
-
-		// Save the version number.
-		memento.putString(IWorkbenchConstants.TAG_VERSION, VERSION_STRING[1]);
-
-		// Save how many plug-ins were loaded while restoring the workbench
-		if (progressCount != -1) {
-			memento.putInteger(IWorkbenchConstants.TAG_PROGRESS_COUNT,
-					progressCount);
-		}
-
-		// Save the advisor state.
-		IMemento advisorState = memento
-				.createChild(IWorkbenchConstants.TAG_WORKBENCH_ADVISOR);
-		result.add(getAdvisor().saveState(advisorState));
-
-		// Save the workbench windows.
-		IWorkbenchWindow[] windows = getWorkbenchWindows();
-		for (int nX = 0; nX < windows.length; nX++) {
-			WorkbenchWindow window = (WorkbenchWindow) windows[nX];
-			IMemento childMem = memento
-					.createChild(IWorkbenchConstants.TAG_WINDOW);
-			result.merge(window.saveState(childMem));
-		}
-		result.add(getEditorHistory().saveState(
-				memento.createChild(IWorkbenchConstants.TAG_MRU_LIST)));
-		return result;
-	}
-
-	/*
-	 * Save the workbench UI in a persistence file.
-	 */
-	private boolean saveMementoToFile(XMLMemento memento) {
-		// Save it to a file.
-		// XXX: nobody currently checks the return value of this method.
-		File stateFile = getWorkbenchStateFile();
-		if (stateFile == null) {
-			return false;
-		}
-		try {
-			FileOutputStream stream = new FileOutputStream(stateFile);
-			OutputStreamWriter writer = new OutputStreamWriter(stream, "utf-8"); //$NON-NLS-1$
-			memento.save(writer);
-			writer.close();
-		} catch (IOException e) {
-			stateFile.delete();
-			MessageDialog.openError((Shell) null,
-					WorkbenchMessages.SavingProblem,
-					WorkbenchMessages.ProblemSavingState);
-			return false;
-		}
-
-		// Success !
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchPage showPerspective(String perspectiveId,
-			IWorkbenchWindow window) throws WorkbenchException {
-		Assert.isNotNull(perspectiveId);
-
-		// If the specified window has the requested perspective open, then the
-		// window
-		// is given focus and the perspective is shown. The page's input is
-		// ignored.
-		WorkbenchWindow win = (WorkbenchWindow) window;
-		if (win != null) {
-			WorkbenchPage page = win.getActiveWorkbenchPage();
-			if (page != null) {
-				IPerspectiveDescriptor perspectives[] = page
-						.getOpenPerspectives();
-				for (int i = 0; i < perspectives.length; i++) {
-					IPerspectiveDescriptor persp = perspectives[i];
-					if (perspectiveId.equals(persp.getId())) {
-						win.makeVisible();
-						page.setPerspective(persp);
-						return page;
-					}
-				}
-			}
-		}
-
-		// If another window that has the workspace root as input and the
-		// requested
-		// perpective open and active, then the window is given focus.
-		IAdaptable input = getDefaultPageInput();
-		IWorkbenchWindow[] windows = getWorkbenchWindows();
-		for (int i = 0; i < windows.length; i++) {
-			win = (WorkbenchWindow) windows[i];
-			if (window != win) {
-				WorkbenchPage page = win.getActiveWorkbenchPage();
-				if (page != null) {
-					boolean inputSame = false;
-					if (input == null) {
-						inputSame = (page.getInput() == null);
-					} else {
-						inputSame = input.equals(page.getInput());
-					}
-					if (inputSame) {
-						Perspective persp = page.getActivePerspective();
-						if (persp != null) {
-							IPerspectiveDescriptor desc = persp.getDesc();
-							if (desc != null) {
-								if (perspectiveId.equals(desc.getId())) {
-									Shell shell = win.getShell();
-									shell.open();
-									if (shell.getMinimized()) {
-										shell.setMinimized(false);
-									}
-									return page;
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-
-		// Otherwise the requested perspective is opened and shown in the
-		// specified
-		// window or in a new window depending on the current user preference
-		// for opening
-		// perspectives, and that window is given focus.
-		win = (WorkbenchWindow) window;
-		if (win != null) {
-			IPreferenceStore store = WorkbenchPlugin.getDefault()
-					.getPreferenceStore();
-			int mode = store.getInt(IPreferenceConstants.OPEN_PERSP_MODE);
-			IWorkbenchPage page = win.getActiveWorkbenchPage();
-			IPerspectiveDescriptor persp = null;
-			if (page != null) {
-				persp = page.getPerspective();
-			}
-
-			// Only open a new window if user preference is set and the window
-			// has an active perspective.
-			if (IPreferenceConstants.OPM_NEW_WINDOW == mode && persp != null) {
-				IWorkbenchWindow newWindow = openWorkbenchWindow(perspectiveId,
-						input);
-				return newWindow.getActivePage();
-			}
-
-			IPerspectiveDescriptor desc = getPerspectiveRegistry()
-					.findPerspectiveWithId(perspectiveId);
-			if (desc == null) {
-				throw new WorkbenchException(
-						NLS
-								.bind(
-										WorkbenchMessages.WorkbenchPage_ErrorCreatingPerspective,
-										perspectiveId));
-			}
-			win.getShell().open();
-			if (page == null) {
-				page = win.openPage(perspectiveId, input);
-			} else {
-				page.setPerspective(desc);
-			}
-			return page;
-		}
-
-		// Just throw an exception....
-		throw new WorkbenchException(NLS
-				.bind(WorkbenchMessages.Workbench_showPerspectiveError,
-						perspectiveId));
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IWorkbenchPage showPerspective(String perspectiveId,
-			IWorkbenchWindow window, IAdaptable input)
-			throws WorkbenchException {
-		Assert.isNotNull(perspectiveId);
-
-		// If the specified window has the requested perspective open and the
-		// same requested
-		// input, then the window is given focus and the perspective is shown.
-		boolean inputSameAsWindow = false;
-		WorkbenchWindow win = (WorkbenchWindow) window;
-		if (win != null) {
-			WorkbenchPage page = win.getActiveWorkbenchPage();
-			if (page != null) {
-				boolean inputSame = false;
-				if (input == null) {
-					inputSame = (page.getInput() == null);
-				} else {
-					inputSame = input.equals(page.getInput());
-				}
-				if (inputSame) {
-					inputSameAsWindow = true;
-					IPerspectiveDescriptor perspectives[] = page
-							.getOpenPerspectives();
-					for (int i = 0; i < perspectives.length; i++) {
-						IPerspectiveDescriptor persp = perspectives[i];
-						if (perspectiveId.equals(persp.getId())) {
-							win.makeVisible();
-							page.setPerspective(persp);
-							return page;
-						}
-					}
-				}
-			}
-		}
-
-		// If another window has the requested input and the requested
-		// perpective open and active, then that window is given focus.
-		IWorkbenchWindow[] windows = getWorkbenchWindows();
-		for (int i = 0; i < windows.length; i++) {
-			win = (WorkbenchWindow) windows[i];
-			if (window != win) {
-				WorkbenchPage page = win.getActiveWorkbenchPage();
-				if (page != null) {
-					boolean inputSame = false;
-					if (input == null) {
-						inputSame = (page.getInput() == null);
-					} else {
-						inputSame = input.equals(page.getInput());
-					}
-					if (inputSame) {
-						Perspective persp = page.getActivePerspective();
-						if (persp != null) {
-							IPerspectiveDescriptor desc = persp.getDesc();
-							if (desc != null) {
-								if (perspectiveId.equals(desc.getId())) {
-									win.getShell().open();
-									return page;
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-
-		// If the specified window has the same requested input but not the
-		// requested
-		// perspective, then the window is given focus and the perspective is
-		// opened and shown
-		// on condition that the user preference is not to open perspectives in
-		// a new window.
-		win = (WorkbenchWindow) window;
-		if (inputSameAsWindow && win != null) {
-			IPreferenceStore store = WorkbenchPlugin.getDefault()
-					.getPreferenceStore();
-			int mode = store.getInt(IPreferenceConstants.OPEN_PERSP_MODE);
-
-			if (IPreferenceConstants.OPM_NEW_WINDOW != mode) {
-				IWorkbenchPage page = win.getActiveWorkbenchPage();
-				IPerspectiveDescriptor desc = getPerspectiveRegistry()
-						.findPerspectiveWithId(perspectiveId);
-				if (desc == null) {
-					throw new WorkbenchException(
-							NLS
-									.bind(
-											WorkbenchMessages.WorkbenchPage_ErrorCreatingPerspective,
-											perspectiveId));
-				}
-				win.getShell().open();
-				if (page == null) {
-					page = win.openPage(perspectiveId, input);
-				} else {
-					page.setPerspective(desc);
-				}
-				return page;
-			}
-		}
-
-		// If the specified window has no active perspective, then open the
-		// requested perspective and show the specified window.
-		if (win != null) {
-			IWorkbenchPage page = win.getActiveWorkbenchPage();
-			IPerspectiveDescriptor persp = null;
-			if (page != null) {
-				persp = page.getPerspective();
-			}
-			if (persp == null) {
-				IPerspectiveDescriptor desc = getPerspectiveRegistry()
-						.findPerspectiveWithId(perspectiveId);
-				if (desc == null) {
-					throw new WorkbenchException(
-							NLS
-									.bind(
-											WorkbenchMessages.WorkbenchPage_ErrorCreatingPerspective,
-											perspectiveId));
-				}
-				win.getShell().open();
-				if (page == null) {
-					page = win.openPage(perspectiveId, input);
-				} else {
-					page.setPerspective(desc);
-				}
-				return page;
-			}
-		}
-
-		// Otherwise the requested perspective is opened and shown in a new
-		// window, and the
-		// window is given focus.
-		IWorkbenchWindow newWindow = openWorkbenchWindow(perspectiveId, input);
-		return newWindow.getActivePage();
-	}
-
-	/*
-	 * Shuts down the application.
-	 */
-	private void shutdown() {
-		// shutdown application-specific portions first
-		advisor.postShutdown();
-
-		// notify regular workbench clients of shutdown, and clear the list when
-		// done
-		firePostShutdown();
-		workbenchListeners.clear();
-
-		cancelEarlyStartup();
-
-		// for dynamic UI
-		Platform.getExtensionRegistry().removeRegistryChangeListener(
-				extensionEventHandler);
-		Platform.getExtensionRegistry().removeRegistryChangeListener(
-				startupRegistryListener);
-
-		((GrabFocus) Tweaklets.get(GrabFocus.KEY)).dispose();
-		
-		// Bring down all of the services.
-		serviceLocator.dispose();
-
-		workbenchActivitySupport.dispose();
-		WorkbenchHelpSystem.disposeIfNecessary();
-
-		// shutdown the rest of the workbench
-		WorkbenchColors.shutdown();
-		activityHelper.shutdown();
-		uninitializeImages();
-		if (WorkbenchPlugin.getDefault() != null) {
-			WorkbenchPlugin.getDefault().reset();
-		}
-		WorkbenchThemeManager.getInstance().dispose();
-		PropertyPageContributorManager.getManager().dispose();
-		ObjectActionContributorManager.getManager().dispose();
-		if (tracker != null) {
-			tracker.close();
-		}
-	}
-
-	/**
-	 * Cancels the early startup job, if it's still running.
-	 */
-	private void cancelEarlyStartup() {
-		Job.getJobManager().cancel(EARLY_STARTUP_FAMILY);
-		// We do not currently wait for any plug-in currently being started to
-		// complete
-		// (e.g. by doing a join on EARLY_STARTUP_FAMILY), since they may do a
-		// syncExec,
-		// which would hang. See bug 94537 for rationale.
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public IDecoratorManager getDecoratorManager() {
-		return WorkbenchPlugin.getDefault().getDecoratorManager();
-	}
-
-	/*
-	 * Returns the workbench window which was last known being the active one,
-	 * or <code> null </code> .
-	 */
-	private WorkbenchWindow getActivatedWindow() {
-		if (activatedWindow != null) {
-			Shell shell = activatedWindow.getShell();
-			if (shell != null && !shell.isDisposed()) {
-				return activatedWindow;
-			}
-		}
-
-		return null;
-	}
-
-	/*
-	 * Sets the workbench window which was last known being the active one, or
-	 * <code> null </code> .
-	 */
-	/* package */
-	void setActivatedWindow(WorkbenchWindow window) {
-		activatedWindow = window;
-	}
-
-	/**
-	 * Returns the unique object that applications use to configure the
-	 * workbench.
-	 * <p>
-	 * IMPORTANT This method is declared package-private to prevent regular
-	 * plug-ins from downcasting IWorkbench to Workbench and getting hold of the
-	 * workbench configurer that would allow them to tamper with the workbench.
-	 * The workbench configurer is available only to the application.
-	 * </p>
-	 */
-	/* package */
-	WorkbenchConfigurer getWorkbenchConfigurer() {
-		if (workbenchConfigurer == null) {
-			workbenchConfigurer = new WorkbenchConfigurer();
-		}
-		return workbenchConfigurer;
-	}
-
-	/**
-	 * Returns the workbench advisor that created this workbench.
-	 * <p>
-	 * IMPORTANT This method is declared package-private to prevent regular
-	 * plug-ins from downcasting IWorkbench to Workbench and getting hold of the
-	 * workbench advisor that would allow them to tamper with the workbench. The
-	 * workbench advisor is internal to the application.
-	 * </p>
-	 */
-	/* package */
-	WorkbenchAdvisor getAdvisor() {
-		return advisor;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbench.
-	 */
-	public Display getDisplay() {
-		return display;
-	}
-
-	/**
-	 * Returns the default perspective id, which may be <code>null</code>.
-	 * 
-	 * @return the default perspective id, or <code>null</code>
-	 */
-	public String getDefaultPerspectiveId() {
-		return getAdvisor().getInitialWindowPerspectiveId();
-	}
-
-	/**
-	 * Returns the default workbench window page input.
-	 * 
-	 * @return the default window page input or <code>null</code> if none
-	 */
-	public IAdaptable getDefaultPageInput() {
-		return getAdvisor().getDefaultPageInput();
-	}
-
-	/**
-	 * Returns the id of the preference page that should be presented most
-	 * prominently.
-	 * 
-	 * @return the id of the preference page, or <code>null</code> if none
-	 */
-	public String getMainPreferencePageId() {
-		String id = getAdvisor().getMainPreferencePageId();
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench
-	 * @since 3.0
-	 */
-	public IElementFactory getElementFactory(String factoryId) {
-		Assert.isNotNull(factoryId);
-		return WorkbenchPlugin.getDefault().getElementFactory(factoryId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getProgressService()
-	 */
-	public IProgressService getProgressService() {
-		return ProgressManager.getInstance();
-	}
-
-	private WorkbenchActivitySupport workbenchActivitySupport;
-
-	private WorkbenchCommandSupport workbenchCommandSupport;
-
-	private WorkbenchContextSupport workbenchContextSupport;
-
-	/**
-	 * The single instance of the binding manager used by the workbench. This is
-	 * initialized in <code>Workbench.init(Display)</code> and then never
-	 * changed. This value will only be <code>null</code> if the
-	 * initialization call has not yet completed.
-	 * 
-	 * @since 3.1
-	 */
-	private BindingManager bindingManager;
-
-	/**
-	 * The single instance of the command manager used by the workbench. This is
-	 * initialized in <code>Workbench.init(Display)</code> and then never
-	 * changed. This value will only be <code>null</code> if the
-	 * initialization call has not yet completed.
-	 * 
-	 * @since 3.1
-	 */
-	private CommandManager commandManager;
-
-	/**
-	 * The single instance of the context manager used by the workbench. This is
-	 * initialized in <code>Workbench.init(Display)</code> and then never
-	 * changed. This value will only be <code>null</code> if the
-	 * initialization call has not yet completed.
-	 * 
-	 * @since 3.1
-	 */
-	private ContextManager contextManager;
-
-	public IWorkbenchActivitySupport getActivitySupport() {
-		return workbenchActivitySupport;
-	}
-
-	public IWorkbenchCommandSupport getCommandSupport() {
-		return workbenchCommandSupport;
-	}
-
-	public IWorkbenchContextSupport getContextSupport() {
-		return workbenchContextSupport;
-	}
-	
-	/**
-	 * This method should not be called outside the framework.
-	 * 
-	 * @return The context manager.
-	 */
-	public ContextManager getContextManager() {
-		return contextManager;
-	}
-
-	private final IWindowListener windowListener = new IWindowListener() {
-
-		public void windowActivated(IWorkbenchWindow window) {
-			updateActiveWorkbenchWindowMenuManager(true);
-		}
-
-		public void windowClosed(IWorkbenchWindow window) {
-			updateActiveWorkbenchWindowMenuManager(true);
-		}
-
-		public void windowDeactivated(IWorkbenchWindow window) {
-			updateActiveWorkbenchWindowMenuManager(true);
-		}
-
-		public void windowOpened(IWorkbenchWindow window) {
-			updateActiveWorkbenchWindowMenuManager(true);
-		}
-	};
-
-	private final IBindingManagerListener bindingManagerListener = new IBindingManagerListener() {
-
-		public void bindingManagerChanged(
-				BindingManagerEvent bindingManagerEvent) {
-			if (bindingManagerEvent.isActiveBindingsChanged()) {
-				updateActiveWorkbenchWindowMenuManager(true);
-			}
-		}
-	};
-
-	/**
-	 * The source provider that tracks the activation of action sets within the
-	 * workbench. This source provider is <code>null</code> until
-	 * {@link #initializeDefaultServices()} is called.
-	 */
-	private ActionSetSourceProvider actionSetSourceProvider;
-
-	private WorkbenchWindow activeWorkbenchWindow = null;
-
-	private void updateActiveWorkbenchWindowMenuManager(boolean textOnly) {
-		if (activeWorkbenchWindow != null) {
-			activeWorkbenchWindow
-					.removeActionSetsListener(actionSetSourceProvider);
-			activeWorkbenchWindow = null;
-		}
-		boolean actionSetsUpdated = false;
-
-		final IWorkbenchWindow workbenchWindow = getActiveWorkbenchWindow();
-
-		if (workbenchWindow instanceof WorkbenchWindow) {
-			activeWorkbenchWindow = (WorkbenchWindow) workbenchWindow;
-			if (activeWorkbenchWindow.isClosing()) {
-				return;
-			}
-
-			// Update the action sets.
-			final Shell windowShell = activeWorkbenchWindow.getShell();
-			final Shell activeShell = getDisplay().getActiveShell();
-			final IContextService service = (IContextService) getService(IContextService.class);
-			if (Util.equals(windowShell, activeShell)
-					|| service.getShellType(activeShell) == IContextService.TYPE_WINDOW) {
-				activeWorkbenchWindow
-						.addActionSetsListener(actionSetSourceProvider);
-				final WorkbenchPage page = activeWorkbenchWindow
-						.getActiveWorkbenchPage();
-				final IActionSetDescriptor[] newActionSets;
-				if (page != null) {
-					newActionSets = page.getActionSets();
-					final ActionSetsEvent event = new ActionSetsEvent(
-							newActionSets);
-					actionSetSourceProvider.actionSetsChanged(event);
-					actionSetsUpdated = true;
-				}
-			}
-
-			final MenuManager menuManager = activeWorkbenchWindow
-					.getMenuManager();
-
-			if (textOnly) {
-				menuManager.update(IAction.TEXT);
-			} else {
-				menuManager.update(true);
-			}
-		}
-
-		if (!actionSetsUpdated) {
-			final ActionSetsEvent event = new ActionSetsEvent(null);
-			actionSetSourceProvider.actionSetsChanged(event);
-		}
-	}
-
-	private ActivityPersistanceHelper activityHelper;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getIntroManager()
-	 */
-	public IIntroManager getIntroManager() {
-		return getWorkbenchIntroManager();
-	}
-
-	/**
-	 * @return the workbench intro manager
-	 * @since 3.0
-	 */
-	/* package */WorkbenchIntroManager getWorkbenchIntroManager() {
-		if (introManager == null) {
-			introManager = new WorkbenchIntroManager(this);
-		}
-		return introManager;
-	}
-
-	private WorkbenchIntroManager introManager;
-
-	/**
-	 * @return the intro extension for this workbench.
-	 * 
-	 * @since 3.0
-	 */
-	public IntroDescriptor getIntroDescriptor() {
-		return introDescriptor;
-	}
-
-	/**
-	 * This method exists as a test hook. This method should <strong>NEVER</strong>
-	 * be called by clients.
-	 * 
-	 * @param descriptor
-	 *            The intro descriptor to use.
-	 * @since 3.0
-	 */
-	public void setIntroDescriptor(IntroDescriptor descriptor) {
-		if (getIntroManager().getIntro() != null) {
-			getIntroManager().closeIntro(getIntroManager().getIntro());
-		}
-		introDescriptor = descriptor;
-	}
-
-	/**
-	 * The descriptor for the intro extension that is valid for this workspace,
-	 * <code>null</code> if none.
-	 */
-	private IntroDescriptor introDescriptor;
-
-	private IExtensionTracker tracker;
-
-	private IRegistryChangeListener startupRegistryListener = new IRegistryChangeListener() {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IRegistryChangeListener#registryChanged(org.eclipse.core.runtime.IRegistryChangeEvent)
-		 */
-		public void registryChanged(IRegistryChangeEvent event) {
-			final IExtensionDelta[] deltas = event.getExtensionDeltas(
-					PlatformUI.PLUGIN_ID,
-					IWorkbenchRegistryConstants.PL_STARTUP);
-			if (deltas.length == 0) {
-				return;
-			}
-			final String disabledPlugins = PrefUtil
-					.getInternalPreferenceStore()
-					.getString(
-							IPreferenceConstants.PLUGINS_NOT_ACTIVATED_ON_STARTUP);
-
-			for (int i = 0; i < deltas.length; i++) {
-				IExtension extension = deltas[i].getExtension();
-				if (deltas[i].getKind() == IExtensionDelta.REMOVED) {
-					continue;
-				}
-
-				// if the plugin is not in the set of disabled plugins,
-				// then
-				// execute the code to start it
-				if (disabledPlugins.indexOf(extension.getNamespace()) == -1) {
-					SafeRunner.run(new EarlyStartupRunnable(extension));
-				}
-			}
-
-		}
-	};
-
-	private String factoryID;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getThemeManager()
-	 */
-	public IThemeManager getThemeManager() {
-		return WorkbenchThemeManager.getInstance();
-	}
-
-	/**
-	 * Returns <code>true</code> if the workbench is running,
-	 * <code>false</code> if it has been terminated.
-	 * 
-	 * @return <code>true</code> if the workbench is running,
-	 *         <code>false</code> if it has been terminated.
-	 */
-	public boolean isRunning() {
-		return runEventLoop;
-	}
-
-	/**
-	 * Return the presentation ID specified by the preference or the default ID
-	 * if undefined.
-	 * 
-	 * @return the presentation ID
-	 * @see IWorkbenchPreferenceConstants#PRESENTATION_FACTORY_ID
-	 */
-	public String getPresentationId() {
-		if (factoryID != null) {
-			return factoryID;
-		}
-
-		factoryID = PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
-
-		// Workaround for bug 58975 - New preference mechanism does not properly
-		// initialize defaults
-		// Ensure that the UI plugin has started too.
-		if (factoryID == null || factoryID.equals("")) { //$NON-NLS-1$
-			factoryID = IWorkbenchConstants.DEFAULT_PRESENTATION_ID;
-		}
-		return factoryID;
-	}
-
-	/**
-	 * <p>
-	 * Indicates the start of a large update within the workbench. This is used
-	 * to disable CPU-intensive, change-sensitive services that were temporarily
-	 * disabled in the midst of large changes. This method should always be
-	 * called in tandem with <code>largeUpdateEnd</code>, and the event loop
-	 * should not be allowed to spin before that method is called.
-	 * </p>
-	 * <p>
-	 * Important: always use with <code>largeUpdateEnd</code>!
-	 * </p>
-	 */
-	public final void largeUpdateStart() {
-		if (largeUpdates++ == 0) {
-			// TODO Consider whether these lines still need to be here.
-			// workbenchCommandSupport.setProcessing(false);
-			// workbenchContextSupport.setProcessing(false);
-
-			final IWorkbenchWindow[] windows = getWorkbenchWindows();
-			for (int i = 0; i < windows.length; i++) {
-				IWorkbenchWindow window = windows[i];
-				if (window instanceof WorkbenchWindow) {
-					((WorkbenchWindow) window).largeUpdateStart();
-				}
-			}
-		}
-	}
-
-	/**
-	 * <p>
-	 * Indicates the end of a large update within the workbench. This is used to
-	 * re-enable services that were temporarily disabled in the midst of large
-	 * changes. This method should always be called in tandem with
-	 * <code>largeUpdateStart</code>, and the event loop should not be
-	 * allowed to spin before this method is called.
-	 * </p>
-	 * <p>
-	 * Important: always protect this call by using <code>finally</code>!
-	 * </p>
-	 */
-	public final void largeUpdateEnd() {
-		if (--largeUpdates == 0) {
-			// TODO Consider whether these lines still need to be here.
-			// workbenchCommandSupport.setProcessing(true);
-			// workbenchContextSupport.setProcessing(true);
-
-			// Perform window-specific blocking.
-			final IWorkbenchWindow[] windows = getWorkbenchWindows();
-			for (int i = 0; i < windows.length; i++) {
-				IWorkbenchWindow window = windows[i];
-				if (window instanceof WorkbenchWindow) {
-					((WorkbenchWindow) window).largeUpdateEnd();
-				}
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getExtensionTracker()
-	 */
-	public IExtensionTracker getExtensionTracker() {
-		if (tracker == null) {
-			tracker = new UIExtensionTracker(getDisplay());
-		}
-		return tracker;
-	}
-
-	/**
-	 * Adds the listener that handles startup plugins
-	 * 
-	 * @since 3.1
-	 */
-	private void addStartupRegistryListener() {
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		registry.addRegistryChangeListener(startupRegistryListener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getHelpSystem()
-	 */
-	public IWorkbenchHelpSystem getHelpSystem() {
-		return WorkbenchHelpSystem.getInstance();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getHelpSystem()
-	 */
-	public IWorkbenchBrowserSupport getBrowserSupport() {
-		return WorkbenchBrowserSupport.getInstance();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getViewRegistry()
-	 */
-	public IViewRegistry getViewRegistry() {
-		return WorkbenchPlugin.getDefault().getViewRegistry();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getNewWizardRegistry()
-	 */
-	public IWizardRegistry getNewWizardRegistry() {
-		return WorkbenchPlugin.getDefault().getNewWizardRegistry();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getImportWizardRegistry()
-	 */
-	public IWizardRegistry getImportWizardRegistry() {
-		return WorkbenchPlugin.getDefault().getImportWizardRegistry();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#getExportWizardRegistry()
-	 */
-	public IWizardRegistry getExportWizardRegistry() {
-		return WorkbenchPlugin.getDefault().getExportWizardRegistry();
-	}
-
-	public final Object getAdapter(final Class key) {
-		return serviceLocator.getService(key);
-	}
-
-	private void doRestoreState(final IMemento memento, final MultiStatus status) {
-		IMemento childMem;
-		try {
-			UIStats.start(UIStats.RESTORE_WORKBENCH, "MRUList"); //$NON-NLS-1$
-			IMemento mruMemento = memento
-					.getChild(IWorkbenchConstants.TAG_MRU_LIST);
-			if (mruMemento != null) {
-				status.add(getEditorHistory().restoreState(mruMemento));
-			}
-		} finally {
-			UIStats.end(UIStats.RESTORE_WORKBENCH, this, "MRUList"); //$NON-NLS-1$
-		}
-
-		// Restore advisor state.
-		IMemento advisorState = memento
-				.getChild(IWorkbenchConstants.TAG_WORKBENCH_ADVISOR);
-		if (advisorState != null) {
-			status.add(getAdvisor().restoreState(advisorState));
-		}
-
-		// Get the child windows.
-		IMemento[] children = memento
-				.getChildren(IWorkbenchConstants.TAG_WINDOW);
-
-		createdWindows = new WorkbenchWindow[children.length];
-
-		// Read the workbench windows.
-		for (int i = 0; i < children.length; i++) {
-			childMem = children[i];
-			final WorkbenchWindow [] newWindow = new WorkbenchWindow[1];
-			
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() {
-					newWindow[0] = newWorkbenchWindow();
-					newWindow[0].create();	
-				}});
-			createdWindows[i] = newWindow[0];
-
-			// allow the application to specify an initial perspective to open
-			// @issue temporary workaround for ignoring initial perspective
-			// String initialPerspectiveId =
-			// getAdvisor().getInitialWindowPerspectiveId();
-			// if (initialPerspectiveId != null) {
-			// IPerspectiveDescriptor desc =
-			// getPerspectiveRegistry().findPerspectiveWithId(initialPerspectiveId);
-			// result.merge(newWindow.restoreState(childMem, desc));
-			// }
-			// add the window so that any work done in newWindow.restoreState
-			// that relies on Workbench methods has windows to work with
-			windowManager.add(newWindow[0]);
-
-			// now that we've added it to the window manager we need to listen
-			// for any exception that might hose us before we get a chance to
-			// open it. If one occurs, remove the new window from the manager.
-			// Assume that the new window is a phantom for now
-			boolean restored = false;
-			try {
-				status.merge(newWindow[0].restoreState(childMem, null));
-				try {
-					newWindow[0].fireWindowRestored();
-				} catch (WorkbenchException e) {
-					status.add(e.getStatus());
-				}
-				// everything worked so far, don't close now
-				restored = true;
-			} finally {
-				if (!restored) {
-					// null the window in newWindowHolder so that it won't be
-					// opened later on
-					createdWindows[i] = null;
-					StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-						public void runWithException() throws Throwable {
-							newWindow[0].close();
-						}});
-				}
-			}
-		}
-	}
-
-	private void openWindowsAfterRestore() {
-		if (createdWindows == null) {
-			return;
-		}
-		// now open the windows (except the ones that were nulled because we
-		// closed them above)
-		for (int i = 0; i < createdWindows.length; i++) {
-			if (createdWindows[i] != null) {
-				final WorkbenchWindow myWindow = createdWindows[i];
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() throws Throwable {
-						boolean opened = false;
-						try {
-							myWindow.open();
-							opened = true;
-						} finally {
-							if (!opened) {
-								myWindow.close();
-							}
-						}
-					}});
-			}
-		}
-		createdWindows = null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IServiceLocator#getService(java.lang.Object)
-	 */
-	public final Object getService(final Class key) {
-		return serviceLocator.getService(key);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IServiceLocator#hasService(java.lang.Object)
-	 */
-	public final boolean hasService(final Class key) {
-		return serviceLocator.hasService(key);
-	}
-
-	/**
-	 * Registers a service with this locator. If there is an existing service
-	 * matching the same <code>api</code> and it implements
-	 * {@link IDisposable}, it will be disposed.
-	 * 
-	 * @param api
-	 *            This is the interface that the service implements. Must not be
-	 *            <code>null</code>.
-	 * @param service
-	 *            The service to register. This must be some implementation of
-	 *            <code>api</code>. This value must not be <code>null</code>.
-	 */
-	public final void registerService(final Class api, final Object service) {
-		serviceLocator.registerService(api, service);
-	}
-
-	/**
-	 * The source provider that tracks which context menus (i.e., menus with
-	 * target identifiers) are now showing. This value is <code>null</code>
-	 * until {@link #initializeDefaultServices()} is called.
-	 */
-	private MenuSourceProvider menuSourceProvider;
-
-
-
-	/**
-	 * Adds the ids of a menu that is now showing to the menu source provider.
-	 * This is used for legacy action-based handlers which need to become active
-	 * only for the duration of a menu being visible.
-	 * 
-	 * @param menuIds
-	 *            The identifiers of the menu that is now showing; must not be
-	 *            <code>null</code>.
-	 * @param localSelection
-	 * @param localEditorInput
-	 */
-	public final void addShowingMenus(final Set menuIds,
-			final ISelection localSelection, final ISelection localEditorInput) {
-		menuSourceProvider.addShowingMenus(menuIds, localSelection, 
-				localEditorInput);
-	}
-
-	/**
-	 * Removes the ids of a menu that is now hidden from the menu source
-	 * provider. This is used for legacy action-based handlers which need to
-	 * become active only for the duration of a menu being visible.
-	 * 
-	 * @param menuIds
-	 *            The identifiers of the menu that is now hidden; must not be
-	 *            <code>null</code>.
-	 * @param localSelection
-	 * @param localEditorInput
-	 */
-	public final void removeShowingMenus(final Set menuIds,
-			final ISelection localSelection, final ISelection localEditorInput) {
-		menuSourceProvider.removeShowingMenus(menuIds, localSelection, 
-				localEditorInput);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbench#saveAll(org.eclipse.jface.window.IShellProvider, org.eclipse.jface.operation.IRunnableContext, org.eclipse.ui.ISaveableFilter, boolean)
-	 */
-	public boolean saveAll(IShellProvider shellProvider,
-			IRunnableContext runnableContext, ISaveableFilter filter,
-			boolean confirm) {
-		SaveablesList saveablesList = (SaveablesList) PlatformUI.getWorkbench()
-				.getService(ISaveablesLifecycleListener.class);
-		Saveable[] saveables = saveablesList.getOpenModels();
-		List toSave = getFilteredSaveables(filter, saveables);
-		if (toSave.isEmpty())
-			return true;
-		
-		if (!confirm) {
-			return !saveablesList.saveModels(toSave, shellProvider, runnableContext);
-		}
-		
-		// We must negate the result since false is cancel saveAll
-		return !saveablesList.promptForSaving(toSave, shellProvider, runnableContext, true, false);
-	}
-
-	/*
-	 * Apply the given filter to the list of saveables
-	 */
-	private List getFilteredSaveables(ISaveableFilter filter, Saveable[] saveables) {
-		List toSave = new ArrayList();
-		if (filter == null) {
-			for (int i = 0; i < saveables.length; i++) {
-				Saveable saveable = saveables[i];
-				if (saveable.isDirty())
-					toSave.add(saveable);
-			}
-		} else {
-			SaveablesList saveablesList = (SaveablesList)getService(ISaveablesLifecycleListener.class);
-			for (int i = 0; i < saveables.length; i++) {
-				Saveable saveable = saveables[i];
-				if (saveable.isDirty()) {
-					IWorkbenchPart[] parts = saveablesList.getPartsForSaveable(saveable);
-					if (matchesFilter(filter, saveable, parts))
-						toSave.add(saveable);
-				}
-			}
-		}
-		return toSave;
-	}
-	
-	/*
-	 * Test whether the given filter matches the saveable
-	 */
-	private boolean matchesFilter(ISaveableFilter filter, Saveable saveable,
-			IWorkbenchPart[] parts) {
-		return filter == null || filter.select(saveable, parts);
-	}
-
-	public ServiceLocator getServiceLocator() {
-		return serviceLocator;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchColors.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchColors.java
deleted file mode 100644
index cd6bc9b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchColors.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * This class manages the common workbench colors.  
- */
-public class WorkbenchColors {
-    static private boolean init = false;
-
-    static private Color[] workbenchColors;
-
-    /**
-     * Dispose all color pre-allocated by the workbench.
-     */
-    private static void disposeWorkbenchColors() {
-        for (int i = 0; i < workbenchColors.length; i++) {
-            workbenchColors[i].dispose();
-        }
-        workbenchColors = null;
-    }
-
-    /**
-     * Initialize all colors used in the workbench in case the OS is using
-     * a 256 color palette making sure the workbench colors are allocated.
-     *
-     * This list comes from the designers.
-     */
-    private static void initWorkbenchColors(Display d) {
-        if (workbenchColors != null) {
-			return;
-		}
-
-        workbenchColors = new Color[] {
-        //Product pallet
-                new Color(d, 255, 255, 255), new Color(d, 255, 251, 240),
-                new Color(d, 223, 223, 191), new Color(d, 223, 191, 191),
-                new Color(d, 192, 220, 192), new Color(d, 192, 192, 192),
-                new Color(d, 191, 191, 191), new Color(d, 191, 191, 159),
-                new Color(d, 191, 159, 191), new Color(d, 160, 160, 164),
-                new Color(d, 159, 159, 191), new Color(d, 159, 159, 159),
-                new Color(d, 159, 159, 127), new Color(d, 159, 127, 159),
-                new Color(d, 159, 127, 127), new Color(d, 128, 128, 128),
-                new Color(d, 127, 159, 159), new Color(d, 127, 159, 127),
-                new Color(d, 127, 127, 159), new Color(d, 127, 127, 127),
-                new Color(d, 127, 127, 95), new Color(d, 127, 95, 127),
-                new Color(d, 127, 95, 95), new Color(d, 95, 127, 127),
-                new Color(d, 95, 127, 95), new Color(d, 95, 95, 127),
-                new Color(d, 95, 95, 95), new Color(d, 95, 95, 63),
-                new Color(d, 95, 63, 95), new Color(d, 95, 63, 63),
-                new Color(d, 63, 95, 95), new Color(d, 63, 95, 63),
-                new Color(d, 63, 63, 95), new Color(d, 0, 0, 0),
-                //wizban pallet
-                new Color(d, 195, 204, 224), new Color(d, 214, 221, 235),
-                new Color(d, 149, 168, 199), new Color(d, 128, 148, 178),
-                new Color(d, 106, 128, 158), new Color(d, 255, 255, 255),
-                new Color(d, 0, 0, 0), new Color(d, 0, 0, 0),
-                //Perspective 
-                new Color(d, 132, 130, 132), new Color(d, 143, 141, 138),
-                new Color(d, 171, 168, 165),
-                //PreferenceDialog and TitleAreaDialog
-                new Color(d, 230, 226, 221) };
-    }
-
-    /**
-     * Disposes of the colors. Ignore all
-     * system colors as they do not need
-     * to be disposed.
-     */
-    static public void shutdown() {
-        if (!init) {
-			return;
-		}
-        disposeWorkbenchColors();
-        init = false;
-    }
-
-    /**
-     * Initializes the colors.
-     */
-    static public void startup() {
-        if (init) {
-			return;
-		}
-
-        // Initialize the caches first.
-        init = true;
-
-        Display display = Display.getDefault();
-        initWorkbenchColors(display);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchConfigurer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchConfigurer.java
deleted file mode 100644
index 9a18a69..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchConfigurer.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.WindowManager;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.application.IWorkbenchConfigurer;
-import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-
-/**
- * Internal class providing special access for configuring the workbench.
- * <p>
- * Note that these objects are only available to the main application
- * (the plug-in that creates and owns the workbench).
- * </p>
- * <p>
- * This class is not intended to be instantiated or subclassed by clients.
- * </p>
- * 
- * @since 3.0
- */
-public final class WorkbenchConfigurer implements IWorkbenchConfigurer {
-
-    /**
-     * Table to hold arbitrary key-data settings (key type: <code>String</code>,
-     * value type: <code>Object</code>).
-     * @see #setData
-     */
-    private Map extraData = new HashMap();
-
-    /**
-     * Indicates whether workbench state should be saved on close and 
-     * restored on subsequent open.
-     */
-    private boolean saveAndRestore = false;
-
-    /**
-     * Indicates whether the workbench is being force to close. During
-     * an emergency close, no interaction with the user should be done.
-     */
-    private boolean isEmergencyClosing = false;
-
-    /**
-     * Indicates the behaviour when the last window is closed.
-     * If <code>true</code>, the workbench will exit (saving the last window's state, 
-     * if configured to do so).
-     * If <code>false</code> the window will be closed, leaving the workbench running.
-     * 
-     * @since 3.1
-     */
-	private boolean exitOnLastWindowClose = true;
-
-    /**
-     * Creates a new workbench configurer.
-     * <p>
-     * This method is declared package-private. Clients are passed an instance
-     * only via {@link WorkbenchAdvisor#initialize WorkbenchAdvisor.initialize}
-     * </p>
-     */
-    /* package */WorkbenchConfigurer() {
-        super();
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#getWorkbench
-     */
-    public IWorkbench getWorkbench() {
-        return PlatformUI.getWorkbench();
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#getWorkbenchWindowManager
-     */
-    public WindowManager getWorkbenchWindowManager() {
-        // return the global workbench window manager
-        return ((Workbench) getWorkbench()).getWindowManager();
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#declareImage
-     */
-    public void declareImage(String symbolicName, ImageDescriptor descriptor,
-            boolean shared) {
-        if (symbolicName == null || descriptor == null) {
-            throw new IllegalArgumentException();
-        }
-        WorkbenchImages.declareImage(symbolicName, descriptor, shared);
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#getWindowConfigurer
-     */
-    public IWorkbenchWindowConfigurer getWindowConfigurer(
-            IWorkbenchWindow window) {
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        return ((WorkbenchWindow) window).getWindowConfigurer();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#getSaveAndRestore()
-     */
-    public boolean getSaveAndRestore() {
-        return saveAndRestore;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#setSaveAndRestore(boolean)
-     */
-    public void setSaveAndRestore(boolean enabled) {
-        saveAndRestore = enabled;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#getData
-     */
-    public Object getData(String key) {
-        if (key == null) {
-            throw new IllegalArgumentException();
-        }
-        return extraData.get(key);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#setData(String, Object)
-     */
-    public void setData(String key, Object data) {
-        if (key == null) {
-            throw new IllegalArgumentException();
-        }
-        if (data != null) {
-            extraData.put(key, data);
-        } else {
-            extraData.remove(key);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#emergencyClose()
-     */
-    public void emergencyClose() {
-        if (!isEmergencyClosing) {
-            isEmergencyClosing = true;
-            if (Workbench.getInstance() != null
-                    && !Workbench.getInstance().isClosing()) {
-                Workbench.getInstance().close(
-                        PlatformUI.RETURN_EMERGENCY_CLOSE, true);
-            }
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#emergencyClosing()
-     */
-    public boolean emergencyClosing() {
-        return isEmergencyClosing;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#restoreState()
-     */
-    public IStatus restoreState() {
-        return ((Workbench) getWorkbench()).restoreState();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchConfigurer#openFirstTimeWindow()
-     */
-    public void openFirstTimeWindow() {
-        ((Workbench) getWorkbench()).openFirstTimeWindow();
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.application.IWorkbenchConfigurer#restoreWorkbenchWindow(org.eclipse.ui.IMemento)
-	 */
-	public IWorkbenchWindowConfigurer restoreWorkbenchWindow(IMemento memento) throws WorkbenchException {
-		return getWindowConfigurer(((Workbench) getWorkbench()).restoreWorkbenchWindow(memento));
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.application.IWorkbenchConfigurer#getExitOnLastWindowClose()
-	 */
-	public boolean getExitOnLastWindowClose() {
-		return exitOnLastWindowClose;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.application.IWorkbenchConfigurer#setExitOnLastWindowClose(boolean)
-	 */
-	public void setExitOnLastWindowClose(boolean enabled) {
-		exitOnLastWindowClose = enabled;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchEditorsHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchEditorsHandler.java
deleted file mode 100644
index 1ad55d9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchEditorsHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.dialogs.WorkbenchEditorsDialog;
-
-/**
- * Opens a dialog showing all open editors and the recently closed editors.
- * 
- * @since 3.4
- * 
- */
-public class WorkbenchEditorsHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow workbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (workbenchWindow == null) {
-			// action has been disposed
-			return null;
-		}
-		IWorkbenchPage page = workbenchWindow.getActivePage();
-		if (page != null) {
-			new WorkbenchEditorsDialog(workbenchWindow).open();
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java
deleted file mode 100644
index 2b0eddf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.statushandlers.AbstractStatusHandler;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-
-/**
- * A proxy handler which passes all statuses to handler assigned to current
- * application workbench advisor.
- * 
- * <strong>EXPERIMENTAL</strong> This class or interface has been added as part
- * of a work in progress. This API may change at any given time. Please do not
- * use this API without consulting with the Platform/UI team.
- * 
- * @since 3.3
- */
-public class WorkbenchErrorHandlerProxy extends AbstractStatusHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.statushandlers.AbstractStatusHandler#handle(org.eclipse.ui.statushandlers.StatusAdapter,
-	 *      int)
-	 */
-	public void handle(final StatusAdapter statusAdapter, int style) {
-		Workbench.getInstance().getAdvisor().getWorkbenchErrorHandler().handle(
-				statusAdapter, style);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java
deleted file mode 100644
index baf0ffa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchImages.java
+++ /dev/null
@@ -1,598 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.misc.ProgramImageDescriptor;
-import org.eclipse.ui.internal.util.BundleUtility;
-
-/**
- * This class provides convenience access to many of the resources required
- * by the workbench. The class stores some images as descriptors, and
- * some are stored as real Images in the registry.  This is a pure
- * speed-space tradeoff.  The trick for users of this class is that
- * images obtained from the registry (using getImage()), don't require
- * disposal since they are shared, while images obtained using
- * getImageDescriptor() will require disposal.  Consult the declareImages
- * method to see if a given image is declared as a registry image or
- * just as a descriptor.  If you change an image from being stored
- * as a descriptor to a registry image, or vice-versa, make sure to
- * check all users of the image to ensure they are calling
- * the correct getImage... method and handling disposal correctly.
- *
- *  Images:
- *      - use getImage(key) to access cached images from the registry.
- *      - Less common images are found by calling getImageDescriptor(key)
- *          where key can be found in IWorkbenchGraphicConstants
- *
- *      This class initializes the image registry by declaring all of the required
- *      graphics. This involves creating image descriptors describing
- *      how to create/find the image should it be needed.
- *      The image is not actually allocated until requested.
- *
- *      Some Images are also made available to other plugins by being
- *      placed in the descriptor table of the SharedImages class.
- *
- *      Where are the images?
- *          The images (typically gifs) are found the plugins install directory
- *
- *      How to add a new image
- *          Place the gif file into the appropriate directories.
- *          Add a constant to IWorkbenchGraphicConstants following the conventions
- *          Add the declaration to this file
- */
-public/*final*/class WorkbenchImages {
-
-    private static Map descriptors;
-
-    private static ImageRegistry imageRegistry;
-
-    /* Declare Common paths */
-
-    public final static String ICONS_PATH = "$nl$/icons/full/";//$NON-NLS-1$
-
-    private final static String PATH_ETOOL = ICONS_PATH + "etool16/"; //Enabled toolbar icons.//$NON-NLS-1$
-
-    private final static String PATH_DTOOL = ICONS_PATH + "dtool16/"; //Disabled toolbar icons.//$NON-NLS-1$
-
-    private final static String PATH_ELOCALTOOL = ICONS_PATH + "elcl16/"; //Enabled local toolbar icons.//$NON-NLS-1$
-
-    private final static String PATH_DLOCALTOOL = ICONS_PATH + "dlcl16/"; //Disabled local toolbar icons.//$NON-NLS-1$
-
-    private final static String PATH_EVIEW = ICONS_PATH + "eview16/"; //View icons//$NON-NLS-1$
-
-    //private final static String PATH_PROD = ICONS_PATH+"prod/";	//Product images
-    private final static String PATH_OBJECT = ICONS_PATH + "obj16/"; //Model object icons//$NON-NLS-1$
-
-    private final static String PATH_POINTER = ICONS_PATH + "pointer/"; //Pointer icons//$NON-NLS-1$
-
-    private final static String PATH_WIZBAN = ICONS_PATH + "wizban/"; //Wizard icons//$NON-NLS-1$
-	
-
-    //private final static String PATH_STAT = ICONS_PATH+"stat/";
-    //private final static String PATH_MISC = ICONS_PATH+"misc/";
-    //private final static String PATH_OVERLAY = ICONS_PATH+"ovr16/";
-    
-    /**
-     * Declares a workbench image given the path of the image file (relative to
-     * the workbench plug-in). This is a helper method that creates the image
-     * descriptor and passes it to the main <code>declareImage</code> method.
-     * 
-     * @param key the symbolic name of the image
-     * @param path the path of the image file relative to the base of the workbench
-     * plug-ins install directory
-     * @param shared <code>true</code> if this is a shared image, and
-     * <code>false</code> if this is not a shared image
-     */
-    private final static void declareImage(String key, String path,
-            boolean shared) {
-        URL url = BundleUtility.find(PlatformUI.PLUGIN_ID, path);
-        ImageDescriptor desc = ImageDescriptor.createFromURL(url);
-        declareImage(key, desc, shared);
-    }
-
-    private static void drawViewMenu(GC gc, GC maskgc) {
-    	Display display = Display.getCurrent();
-    	
-    	gc.setForeground(display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
-    	gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-    	
-	    int[] shapeArray = new int[] {1, 1, 10, 1, 6, 5, 5, 5};
-	    gc.fillPolygon(shapeArray);
-	    gc.drawPolygon(shapeArray);
-	    
-	    Color black = display.getSystemColor(SWT.COLOR_BLACK);
-	    Color white = display.getSystemColor(SWT.COLOR_WHITE);
-	    
-	    maskgc.setBackground(black);
-	    maskgc.fillRectangle(0,0,12,16);
-	    
-	    maskgc.setBackground(white);
-	    maskgc.setForeground(white);
-	    maskgc.fillPolygon(shapeArray);
-	    maskgc.drawPolygon(shapeArray);
-    }
-    
-    /**
-     * Declares all the workbench's images, including both "shared" ones and
-     * internal ones.
-     */
-    private final static void declareImages() {
-		
-    	 declareImage(IWorkbenchGraphicConstants.IMG_DTOOL_SHOW_SUPPORT,
-                 PATH_DTOOL  + "show_support.gif", false); //$NON-NLS-1$
-    	
-	    declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_PIN_EDITOR,
-                PATH_ETOOL + "pin_editor.gif", false); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_PIN_EDITOR_DISABLED,
-                PATH_DTOOL + "pin_editor.gif", false); //$NON-NLS-1$
-
-        // other toolbar buttons
-
-        declareImage(ISharedImages.IMG_ETOOL_SAVE_EDIT, PATH_ETOOL
-                + "save_edit.gif", false); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_ETOOL_SAVE_EDIT_DISABLED,
-                PATH_DTOOL + "save_edit.gif", false); //$NON-NLS-1$
-        
-        declareImage(ISharedImages.IMG_ETOOL_SAVEAS_EDIT,
-                PATH_ETOOL + "saveas_edit.gif", false); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_ETOOL_SAVEAS_EDIT_DISABLED,
-                PATH_DTOOL + "saveas_edit.gif", false); //$NON-NLS-1$
-        
-        declareImage(ISharedImages.IMG_ETOOL_SAVEALL_EDIT,
-                PATH_ETOOL + "saveall_edit.gif", false); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_ETOOL_SAVEALL_EDIT_DISABLED,
-                PATH_DTOOL + "saveall_edit.gif", false); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_UNDO,
-                PATH_ETOOL + "undo_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_UNDO_HOVER, PATH_ETOOL
-                + "undo_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_UNDO_DISABLED, PATH_DTOOL
-                + "undo_edit.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_REDO,
-                PATH_ETOOL + "redo_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_REDO_HOVER, PATH_ETOOL
-                + "redo_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_REDO_DISABLED, PATH_DTOOL
-                + "redo_edit.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_CUT,
-                PATH_ETOOL + "cut_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_CUT_HOVER, PATH_ETOOL
-                + "cut_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_CUT_DISABLED, PATH_DTOOL
-                + "cut_edit.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_COPY,
-                PATH_ETOOL + "copy_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_COPY_HOVER, PATH_ETOOL
-                + "copy_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_COPY_DISABLED, PATH_DTOOL
-                + "copy_edit.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_PASTE, PATH_ETOOL
-                + "paste_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_PASTE_HOVER, PATH_ETOOL
-                + "paste_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_PASTE_DISABLED, PATH_DTOOL
-                + "paste_edit.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_DELETE, PATH_ETOOL
-                + "delete_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_DELETE_HOVER, PATH_ETOOL
-                + "delete_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_DELETE_DISABLED, PATH_DTOOL
-                + "delete_edit.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_NEW_WIZARD,
-                PATH_ETOOL + "new_wiz.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_NEW_WIZARD_HOVER, PATH_ETOOL
-                        + "new_wiz.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_NEW_WIZARD_DISABLED, PATH_DTOOL
-                        + "new_wiz.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_ETOOL_PRINT_EDIT,
-                PATH_ETOOL + "print_edit.gif", false); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_ETOOL_PRINT_EDIT_DISABLED,
-                PATH_DTOOL + "print_edit.gif", false); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_HELP_CONTENTS,
-                PATH_ETOOL + "help_contents.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_HELP_SEARCH,
-                PATH_ETOOL + "help_search.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_NEW_FASTVIEW,
-                PATH_ETOOL + "new_fastview.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_DTOOL_NEW_FASTVIEW,
-                PATH_DTOOL + "new_fastview.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_RESTORE_TRIMPART,
-                PATH_ETOOL + "fastview_restore.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_EDITOR_TRIMPART,
-                PATH_ETOOL + "editor_area.gif", true); //$NON-NLS-1$
-        
-        declareImage(ISharedImages.IMG_TOOL_FORWARD, PATH_ELOCALTOOL
-                + "forward_nav.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_FORWARD_HOVER, PATH_ELOCALTOOL
-                + "forward_nav.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_FORWARD_DISABLED, PATH_DLOCALTOOL
-                + "forward_nav.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_BACK, PATH_ELOCALTOOL
-                + "backward_nav.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_BACK_HOVER, PATH_ELOCALTOOL
-                + "backward_nav.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_BACK_DISABLED, PATH_DLOCALTOOL
-                + "backward_nav.gif", true); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_TOOL_UP,
-                PATH_ELOCALTOOL + "up_nav.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_UP_HOVER, PATH_ELOCALTOOL
-                + "up_nav.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_TOOL_UP_DISABLED, PATH_DLOCALTOOL
-                + "up_nav.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_NEW_PAGE, PATH_EVIEW
-                + "new_persp.gif", false); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_ETOOL_HOME_NAV,
-                PATH_ELOCALTOOL + "home_nav.gif", false); //$NON-NLS-1$
-
-        declareImage(ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE,
-                PATH_EVIEW + "default_persp.gif", false); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_NEW_WIZ, PATH_WIZBAN
-                        + "new_wiz.png", false); //$NON-NLS-1$
-
-	// testing PNG images cross platform, allows designers to pickup nightly builds
-//        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_NEW_WIZ, PATH_WIZBAN
-//                + "new_wiz.png", false); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_IMPORT_WIZ, PATH_ETOOL
-                        + "import_wiz.gif", false); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_ETOOL_EXPORT_WIZ, PATH_ETOOL
-                        + "export_wiz.gif", false); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_IMPORT_WIZ, PATH_WIZBAN
-                        + "import_wiz.png", false); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_WIZ, PATH_WIZBAN
-                        + "export_wiz.png", false); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_IMPORT_PREF_WIZ, PATH_WIZBAN
-                + "importpref_wiz.png", false); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_PREF_WIZ, PATH_WIZBAN
-                + "exportpref_wiz.png", false); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_WIZBAN_WORKINGSET_WIZ,
-                PATH_WIZBAN + "workset_wiz.png", false); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_VIEW_DEFAULTVIEW_MISC,
-                PATH_EVIEW + "defaultview_misc.gif", false); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_FONT, PATH_OBJECT
-                + "font.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_THEME_CATEGORY,
-                PATH_OBJECT + "theme_category.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_ACTIVITY, PATH_OBJECT
-                + "activity.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_ACTIVITY_CATEGORY,
-                PATH_OBJECT + "activity_category.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_WORKING_SETS, 
-     		   PATH_OBJECT + "workingsets.gif", true); //$NON-NLS-1$
-        
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_SEPARATOR, 
-      		   PATH_OBJECT + "separator.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_NODE,
-        		PATH_OBJECT + "generic_elements.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT,
-        		PATH_OBJECT + "generic_element.gif", true); //$NON-NLS-1$
-        
-        declareImage(ISharedImages.IMG_OBJ_FILE,
-                PATH_OBJECT + "file_obj.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_OBJ_FOLDER,
-                PATH_OBJECT + "fldr_obj.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_OBJ_ELEMENT, PATH_OBJECT
-                + "elements_obj.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_DEF_VIEW, PATH_EVIEW
-                + "defaultview_misc.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_CLOSE_VIEW,
-                PATH_ELOCALTOOL + "close_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_PIN_VIEW,
-                PATH_ELOCALTOOL + "pin_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_MIN_VIEW,
-                PATH_ELOCALTOOL + "min_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU,
-                PATH_ELOCALTOOL + "view_menu.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_LCL_LINKTO_HELP,
-                PATH_ELOCALTOOL + "linkto_help.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_CLOSE_VIEW_THIN,
-                PATH_ELOCALTOOL + "thin_close_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_HIDE_TOOLBAR_THIN,
-                PATH_ELOCALTOOL + "thin_hide_toolbar.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_MAX_VIEW_THIN,
-                PATH_ELOCALTOOL + "thin_max_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_MIN_VIEW_THIN,
-                PATH_ELOCALTOOL + "thin_min_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_RESTORE_VIEW_THIN,
-                PATH_ELOCALTOOL + "thin_restore_view.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_SHOW_TOOLBAR_THIN,
-                PATH_ELOCALTOOL + "thin_show_toolbar.gif", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU_THIN,
-                PATH_ELOCALTOOL + "thin_view_menu.gif", true); //$NON-NLS-1$
-
-        
-        declareImage(ISharedImages.IMG_OBJS_ERROR_TSK, PATH_OBJECT
-                + "error_tsk.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_OBJS_WARN_TSK, PATH_OBJECT
-                + "warn_tsk.gif", true); //$NON-NLS-1$
-        declareImage(ISharedImages.IMG_OBJS_INFO_TSK, PATH_OBJECT
-                + "info_tsk.gif", true); //$NON-NLS-1$
-
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_LEFT_SOURCE,
-                PATH_POINTER + "left_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_LEFT_MASK,
-                PATH_POINTER + "left_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_RIGHT_SOURCE,
-                PATH_POINTER + "right_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_RIGHT_MASK,
-                PATH_POINTER + "right_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOP_SOURCE,
-                PATH_POINTER + "top_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOP_MASK,
-                PATH_POINTER + "top_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_BOTTOM_SOURCE,
-                PATH_POINTER + "bottom_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_BOTTOM_MASK,
-                PATH_POINTER + "bottom_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_INVALID_SOURCE,
-                PATH_POINTER + "invalid_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_INVALID_MASK,
-                PATH_POINTER + "invalid_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_STACK_SOURCE,
-                PATH_POINTER + "stack_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_STACK_MASK,
-                PATH_POINTER + "stack_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_OFFSCREEN_SOURCE,
-                PATH_POINTER + "offscreen_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_OFFSCREEN_MASK,
-                PATH_POINTER + "offscreen_mask.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOFASTVIEW_SOURCE,
-                PATH_POINTER + "tofastview_source.bmp", true); //$NON-NLS-1$
-        declareImage(IWorkbenchGraphicConstants.IMG_OBJS_DND_TOFASTVIEW_MASK,
-                PATH_POINTER + "tofastview_mask.bmp", true); //$NON-NLS-1$
-        
-        // signed jar images
-		declareImage(IWorkbenchGraphicConstants.IMG_OBJ_SIGNED_YES, PATH_OBJECT
-				+ "signed_yes_tbl.gif", true); //$NON-NLS-1$
-		declareImage(IWorkbenchGraphicConstants.IMG_OBJ_SIGNED_NO, PATH_OBJECT
-				+ "signed_no_tbl.gif", true); //$NON-NLS-1$
-		declareImage(IWorkbenchGraphicConstants.IMG_OBJ_SIGNED_UNKNOWN,
-				PATH_OBJECT + "signed_unkn_tbl.gif", true); //$NON-NLS-1$
-        
-        // Manually create the view menu
-        
-        Display d = Display.getCurrent();
-        
-        Image viewMenu = new Image(d, 11, 16);
-        Image viewMenuMask = new Image(d, 11, 16);
-        
-        GC gc = new GC(viewMenu);
-        GC maskgc = new GC(viewMenuMask);
-        drawViewMenu(gc, maskgc);
-        gc.dispose();
-        maskgc.dispose();
-        
-        ImageData data = viewMenu.getImageData();
-        data.transparentPixel = data.getPixel(0,0);
-        
-        Image vm2 = new Image(d, viewMenu.getImageData(), viewMenuMask.getImageData());
-        viewMenu.dispose();
-        viewMenuMask.dispose();
-                
-        getImageRegistry().put(IWorkbenchGraphicConstants.IMG_LCL_RENDERED_VIEW_MENU, vm2);
-        
-    }
-
-    /**
-     * Declares a workbench image.
-     * <p>
-     * The workbench remembers the given image descriptor under the given name,
-     * and makes the image available to plug-ins via
-     * {@link org.eclipse.ui.ISharedImages IWorkbench.getSharedImages()}.
-     * For "shared" images, the workbench remembers the image descriptor and
-     * will manages the image object create from it; clients retrieve "shared"
-     * images via
-     * {@link org.eclipse.ui.ISharedImages#getImage ISharedImages.getImage()}.
-     * For the other, "non-shared" images, the workbench remembers only the
-     * image descriptor; clients retrieve the image descriptor via
-     * {@link org.eclipse.ui.ISharedImages#getImageDescriptor
-     * ISharedImages.getImageDescriptor()} and are entirely
-     * responsible for managing the image objects they create from it.
-     * (This is made confusing by the historical fact that the API interface
-     *  is called "ISharedImages".)
-     * </p>
-     * 
-     * @param symbolicName the symbolic name of the image
-     * @param descriptor the image descriptor
-     * @param shared <code>true</code> if this is a shared image, and
-     * <code>false</code> if this is not a shared image
-     * @see org.eclipse.ui.ISharedImages#getImage
-     * @see org.eclipse.ui.ISharedImages#getImageDescriptor
-     */
-    public static void declareImage(String symbolicName,
-            ImageDescriptor descriptor, boolean shared) {
-        if (Policy.DEBUG_DECLARED_IMAGES) {
-            Image image = descriptor.createImage(false);
-            if (image == null) {
-                WorkbenchPlugin.log("Image not found in WorkbenchImages.declaredImage().  symbolicName=" + symbolicName + " descriptor=" + descriptor, new Exception("stack dump"));   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-            }
-            else {
-                image.dispose();
-            }
-        }
-        getDescriptors().put(symbolicName, descriptor);
-        if (shared) {
-            getImageRegistry().put(symbolicName, descriptor);
-        }
-    }
-
-    /**
-     * Returns the map from symbolic name to ImageDescriptor.
-     * 
-     * @return the map from symbolic name to ImageDescriptor.
-     */
-    static Map getDescriptors() {
-        if (descriptors == null) {
-            initializeImageRegistry();
-        }
-        return descriptors;
-    }
-    
-    /**
-     * Returns the image stored in the workbench plugin's image registry 
-     * under the given symbolic name.  If there isn't any value associated 
-     * with the name then <code>null</code> is returned.  
-     *
-     * The returned Image is managed by the workbench plugin's image registry.  
-     * Callers of this method must not dispose the returned image.
-     *
-     * This method is essentially a convenient short form of
-     * WorkbenchImages.getImageRegistry.get(symbolicName).
-     */
-    public static Image getImage(String symbolicName) {
-        return getImageRegistry().get(symbolicName);
-    }
-
-    /**
-     * Returns the image descriptor stored under the given symbolic name.
-     * If there isn't any value associated with the name then <code>null
-     * </code> is returned.
-     *
-     * The class also "caches" commonly used images in the image registry.
-     * If you are looking for one of these common images it is recommended you use 
-     * the getImage() method instead.
-     */
-    public static ImageDescriptor getImageDescriptor(String symbolicName) {
-        return (ImageDescriptor) getDescriptors().get(symbolicName);
-    }
-
-    /**
-     * Convenience Method.
-     * Returns an ImageDescriptor obtained from an external program.
-     * If there isn't any image then <code>null</code> is returned.
-     *
-     * This method is convenience and only intended for use by the workbench because it
-     * explicitly uses the workbench's registry for caching/retrieving images from other
-     * extensions -- other plugins must user their own registry. 
-     * This convenience method is subject to removal.
-     *
-     * Note:
-     * This consults the plugin for extension and obtains its installation location.
-     * all requested images are assumed to be in a directory below and relative to that
-     * plugins installation directory.
-     */
-
-    public static ImageDescriptor getImageDescriptorFromProgram(
-            String filename, int offset) {
-        Assert.isNotNull(filename);
-        String key = filename + "*" + offset; //use * as it is not a valid filename character//$NON-NLS-1$
-        ImageDescriptor desc = getImageDescriptor(key);
-        if (desc == null) {
-            desc = new ProgramImageDescriptor(filename, offset);
-            getDescriptors().put(key, desc);
-        }
-        return desc;
-    }
-
-    /**
-     * Returns the ImageRegistry.
-     */
-    public static ImageRegistry getImageRegistry() {
-        if (imageRegistry == null) {
-            initializeImageRegistry();
-        }
-        return imageRegistry;
-    }
-
-    /**
-     *  Initialize the image registry by declaring all of the required
-     *  graphics. This involves creating JFace image descriptors describing
-     *  how to create/find the image should it be needed.
-     *  The image is not actually allocated until requested.
-     *
-     *  Prefix conventions
-     *      Wizard Banners          WIZBAN_
-     *      Preference Banners      PREF_BAN_
-     *      Property Page Banners   PROPBAN_
-     *      Enable toolbar          ETOOL_
-     *      Disable toolbar         DTOOL_
-     *      Local enabled toolbar   ELCL_
-     *      Local Disable toolbar   DLCL_
-     *      Object large            OBJL_
-     *      Object small            OBJS_
-     *      View                    VIEW_
-     *      Product images          PROD_
-     *      Misc images             MISC_
-     *
-     *  Where are the images?
-     *      The images (typically gifs) are found in the same location as this plugin class.
-     *      This may mean the same package directory as the package holding this class.
-     *      The images are declared using this.getClass() to ensure they are looked up via
-     *      this plugin class.
-     *  @see ImageRegistry
-     */
-    private static void initializeImageRegistry() {
-        imageRegistry = new ImageRegistry();
-        descriptors = new HashMap();
-        declareImages();
-    }
-    
-    /**
-     * Disposes and clears the workbench images.
-     * Called when the workbench is shutting down.
-     *
-     * @since 3.1
-     */
-    public static void dispose() {
-        if (imageRegistry != null) {
-            imageRegistry.dispose();
-            imageRegistry = null;
-            descriptors = null;
-        }
-    }
-	
-	/**
-	 * Get the workbench image with the given path relative to
-	 * ICON_PATH.
-	 * @param relativePath
-	 * @return ImageDescriptor
-	 */
-	public static ImageDescriptor getWorkbenchImageDescriptor(String relativePath){
-		return ImageDescriptor.createFromURL(BundleUtility.find(PlatformUI.PLUGIN_ID, ICONS_PATH + relativePath));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java
deleted file mode 100644
index 9814c33..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchIntroManager.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.intro.IntroDescriptor;
-import org.eclipse.ui.internal.intro.IntroMessages;
-import org.eclipse.ui.intro.IIntroManager;
-import org.eclipse.ui.intro.IIntroPart;
-import org.eclipse.ui.intro.IntroContentDetector;
-
-/**
- * Workbench implementation of the IIntroManager interface.
- * 
- * @since 3.0
- */
-public class WorkbenchIntroManager implements IIntroManager {	
-	
-    private final Workbench workbench;
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param workbench the workbench instance
-     */
-    WorkbenchIntroManager(Workbench workbench) {
-        this.workbench = workbench;
-        workbench.getExtensionTracker().registerHandler(new IExtensionChangeHandler(){
-            
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-             */
-            public void addExtension(IExtensionTracker tracker,IExtension extension) {
-                //Do nothing
-            }
-            
-			/* (non-Javadoc)
-			 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-			 */
-			public void removeExtension(IExtension source, Object[] objects) {
-                for (int i = 0; i < objects.length; i++) {
-                    if (objects[i] instanceof IIntroPart) {
-                        closeIntro((IIntroPart) objects[i]);
-                    }
-                }
-				
-			}}, null);
-        
-    }
-
-    /**
-     * The currently active introPart in this workspace, <code>null</code> if none.
-     */
-    private IIntroPart introPart;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#closeIntro(org.eclipse.ui.intro.IIntroPart)
-     */
-    public boolean closeIntro(IIntroPart part) {
-        if (introPart == null || !introPart.equals(part)) {
-			return false;
-		}
-
-        IViewPart introView = getViewIntroAdapterPart();
-        if (introView != null) {
-            //assumption is that there is only ever one intro per workbench
-            //if we ever support one per window then this will need revisiting
-            IWorkbenchPage page = introView.getSite().getPage();
-            IViewReference reference = page
-                    .findViewReference(IIntroConstants.INTRO_VIEW_ID);
-            page.hideView(introView);
-            if (reference == null || reference.getPart(false) == null) {
-                introPart = null;                
-                return true;
-            }
-            return false;
-        }
-        
-		// if there is no part then null our reference
-		introPart = null;
-        
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#showIntro(org.eclipse.ui.IWorkbenchWindow)
-     */
-    public IIntroPart showIntro(IWorkbenchWindow preferredWindow,
-            boolean standby) {
-        if (preferredWindow == null) {
-			preferredWindow = this.workbench.getActiveWorkbenchWindow();
-		}
-
-        if (preferredWindow == null) {
-			return null;
-		}
-
-        ViewIntroAdapterPart viewPart = getViewIntroAdapterPart();
-        if (viewPart == null) {
-            createIntro(preferredWindow);
-        } else {
-            try {
-                IWorkbenchPage page = viewPart.getSite().getPage();
-                IWorkbenchWindow window = page.getWorkbenchWindow();
-                if (!window.equals(preferredWindow)) {
-                    window.getShell().setActive();
-                }
-
-                page.showView(IIntroConstants.INTRO_VIEW_ID);
-            } catch (PartInitException e) {
-                WorkbenchPlugin
-                        .log(
-                                "Could not open intro", new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR, "Could not open intro", e)); //$NON-NLS-1$ //$NON-NLS-2$
-            }
-        }
-        setIntroStandby(introPart, standby);
-        return introPart;
-    }
-
-    /**	 
-     * @param testWindow the window to test
-     * @return whether the intro exists in the given window
-     */
-    /*package*/boolean isIntroInWindow(IWorkbenchWindow testWindow) {
-        ViewIntroAdapterPart viewPart = getViewIntroAdapterPart();
-        if (viewPart == null) {
-			return false;
-		}
-
-        IWorkbenchWindow window = viewPart.getSite().getWorkbenchWindow();
-        if (window.equals(testWindow)) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Create a new Intro area (a view, currently) in the provided window.  If there is no intro
-     * descriptor for this workbench then no work is done.
-     *
-     * @param preferredWindow the window to create the intro in.
-     */
-    private void createIntro(IWorkbenchWindow preferredWindow) {
-        if (this.workbench.getIntroDescriptor() == null) {
-			return;
-		}
-
-        IWorkbenchPage workbenchPage = preferredWindow.getActivePage();
-        if (workbenchPage == null) {
-			return;
-		}
-        try {
-            workbenchPage.showView(IIntroConstants.INTRO_VIEW_ID);
-        } catch (PartInitException e) {
-            WorkbenchPlugin
-                    .log(
-                            IntroMessages.Intro_could_not_create_part, new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR, IntroMessages.Intro_could_not_create_part, e));
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#setIntroStandby(org.eclipse.ui.intro.IIntroPart, boolean)
-     */
-    public void setIntroStandby(IIntroPart part, boolean standby) {
-        if (introPart == null || !introPart.equals(part)) {
-			return;
-		}
-
-        ViewIntroAdapterPart viewIntroAdapterPart = getViewIntroAdapterPart();
-        if (viewIntroAdapterPart == null) {
-			return;
-		}
-
-        PartPane pane = ((PartSite) viewIntroAdapterPart.getSite()).getPane();
-        if (standby == !pane.isZoomed()) {
-            // the zoom state is already correct - just update the part's state.
-            viewIntroAdapterPart.setStandby(standby);
-            return;
-        }
-
-        viewIntroAdapterPart.getSite().getPage().toggleZoom(
-				pane.getPartReference());
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbench#isIntroStandby(org.eclipse.ui.intro.IIntroPart)
-	 */
-    public boolean isIntroStandby(IIntroPart part) {
-        if (introPart == null || !introPart.equals(part)) {
-			return false;
-		}
-
-        ViewIntroAdapterPart viewIntroAdapterPart = getViewIntroAdapterPart();
-        if (viewIntroAdapterPart == null) {
-			return false;
-		}
-
-        return !((PartSite) viewIntroAdapterPart.getSite()).getPane()
-                .isZoomed();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#findIntro()
-     */
-    public IIntroPart getIntro() {
-        return introPart;
-    }
-
-    /** 
-     * @return the <code>ViewIntroAdapterPart</code> for this workbench, <code>null</code> if it 
-     * cannot be found.
-     */
-    /*package*/ViewIntroAdapterPart getViewIntroAdapterPart() {
-        IWorkbenchWindow[] windows = this.workbench.getWorkbenchWindows();
-        for (int i = 0; i < windows.length; i++) {
-            IWorkbenchWindow window = windows[i];
-            WorkbenchPage page = (WorkbenchPage) window.getActivePage();
-            if (page == null) {
-                continue;
-            }
-            IPerspectiveDescriptor[] perspDescs = page.getOpenPerspectives();
-            for (int j = 0; j < perspDescs.length; j++) {
-                IPerspectiveDescriptor descriptor = perspDescs[j];
-                IViewReference reference = page.findPerspective(descriptor)
-                        .findView(IIntroConstants.INTRO_VIEW_ID);
-                if (reference != null) {
-                    IViewPart part = reference.getView(false);
-                    if (part != null && part instanceof ViewIntroAdapterPart) {
-						return (ViewIntroAdapterPart) part;
-					}
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @return a new IIntroPart.  This has the side effect of setting the introPart field to the new
-     * value.
-     */
-    /*package*/IIntroPart createNewIntroPart() throws CoreException {
-        IntroDescriptor introDescriptor = workbench.getIntroDescriptor();
-		introPart = introDescriptor == null ? null
-                : introDescriptor.createIntro();
-        if (introPart != null) {
-        	workbench.getExtensionTracker().registerObject(
-					introDescriptor.getConfigurationElement()
-							.getDeclaringExtension(), introPart,
-					IExtensionTracker.REF_WEAK);
-        }
-    	return introPart;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#hasIntro()
-     */
-    public boolean hasIntro() {
-        return workbench.getIntroDescriptor() != null;
-    }
-    
-    public boolean isNewContentAvailable() {
-		IntroDescriptor introDescriptor = workbench.getIntroDescriptor();
-		if (introDescriptor == null) {
-			return false;
-		}
-		try {
-			IntroContentDetector contentDetector = introDescriptor
-					.getIntroContentDetector();
-			if (contentDetector != null) {
-				return contentDetector.isNewContentAvailable();
-			}
-		} catch (CoreException ex) {
-			WorkbenchPlugin.log(new Status(IStatus.WARNING,
-					WorkbenchPlugin.PI_WORKBENCH, IStatus.WARNING,
-					"Could not load intro content detector", ex)); //$NON-NLS-1$
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayout.java
deleted file mode 100644
index 514886a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayout.java
+++ /dev/null
@@ -1,829 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CBanner;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.ui.internal.layout.TrimCommonUIHandle;
-
-/**
- * This layout implements the handling necessary to support the positioning of
- * all of the 'trim' elements defined for the workbench.
- * <p>
- * NOTE: This class is a part of a 'work in progress' and should not be used
- * without consulting the Platform UI group. No guarantees are made as to the
- * stability of the API.
- * </p>
- * 
- * @since 3.2
- * 
- */
-public class WorkbenchLayout extends Layout {
-	private static int defaultMargin = 5;
-
-	/**
-	 * This is a convenience class that caches information for a single 'tiled'
-	 * line of trim.
-	 * 
-	 * @since 3.2
-	 * 
-	 */
-	private class TrimLine {
-		/**
-		 * Teh list of controls in this trim line
-		 */
-		List controls = new ArrayList();
-
-		/**
-		 * A cache of the previously computed sizes of each trim control
-		 */
-		List computedSizes = new ArrayList();
-
-		/**
-		 * In horizontal terms this is the 'height' of the tallest control.
-		 */
-		int minorMax = 0;
-
-		/**
-		 * The number of controls in the line that want to 'grab' extra space.
-		 * Any unused space in a trim line is shared equally among these
-		 * controls
-		 */
-		int resizableCount = 0;
-
-		/**
-		 * The amount of unused space in the line
-		 */
-		int extraSpace = 0;
-	}
-
-	/**
-	 * This layout is used to capture the CBanner's calls to 'computeSize' for
-	 * the left trim (which is used to determine the height of the CBanner) so
-	 * that it will compute its own height to be the max of either the left or
-	 * the right control.
-	 * <p>
-	 * NOTE: This class is expected to be removed once the CBanner mods are in.
-	 * </p>
-	 * 
-	 * @since 3.2
-	 * 
-	 */
-	private class LeftBannerLayout extends Layout {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
-		 *      int, int, boolean)
-		 */
-		protected Point computeSize(Composite composite, int wHint, int hHint,
-				boolean flushCache) {
-			// 'topMax' is the maximum height of both the left and
-			// the right side
-			return new Point(wHint, WorkbenchLayout.this.topMax);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
-		 *      boolean)
-		 */
-		protected void layout(Composite composite, boolean flushCache) {
-		}
-
-	}
-
-	// Trim area 'ids'
-	public static final String TRIMID_CMD_PRIMARY = "Command Primary"; //$NON-NLS-1$
-
-	public static final String TRIMID_CMD_SECONDARY = "Command Secondary"; //$NON-NLS-1$
-
-	public static final String TRIMID_VERTICAL1 = "vertical1"; //$NON-NLS-1$
-
-	public static final String TRIMID_VERTICAL2 = "vertical2"; //$NON-NLS-1$
-
-	public static final String TRIMID_STATUS = "Status"; //$NON-NLS-1$
-
-	public static final String TRIMID_CENTER = "Center"; //$NON-NLS-1$
-
-	// 'CBanner' info
-	public CBanner banner;
-
-	private int topMax;
-
-	// 'Center' composite
-	public Composite centerComposite;
-
-	// inter-element spacing
-	private int spacing = 0;
-
-	// Trim Areas
-	private TrimArea cmdPrimaryTrimArea;
-
-	private TrimArea cmdSecondaryTrimArea;
-
-	private TrimArea leftTrimArea;
-
-	private TrimArea rightTrimArea;
-
-	private TrimArea bottomTrimArea;
-
-	// Drag handle info
-	private int horizontalHandleSize = -1;
-
-	private int verticalHandleSize = -1;
-
-	private List dragHandles;
-
-	// statics used in the layout
-	private static Composite layoutComposite;
-
-	private static Rectangle clientRect;
-
-	/**
-	 * Construct a new layout. This defines the trim areas that trim can be
-	 * placed into.
-	 */
-	public WorkbenchLayout() {
-		super();
-
-		// Add the trim areas into the layout
-		cmdPrimaryTrimArea = new TrimArea(TRIMID_CMD_PRIMARY, SWT.TOP,
-				defaultMargin);
-		cmdSecondaryTrimArea = new TrimArea(TRIMID_CMD_SECONDARY, SWT.TOP,
-				defaultMargin);
-		leftTrimArea = new TrimArea(TRIMID_VERTICAL1, SWT.LEFT, defaultMargin);
-		rightTrimArea = new TrimArea(TRIMID_VERTICAL2, SWT.RIGHT, defaultMargin);
-		bottomTrimArea = new TrimArea(TRIMID_STATUS, SWT.BOTTOM, defaultMargin);
-
-		// init the list that has the drag handle cache
-		dragHandles = new ArrayList();
-	}
-
-	/**
-	 * Create the CBanner control used to control the horizontal span of the
-	 * primary and secondary command areas.
-	 * 
-	 * @param workbenchComposite
-	 *            The workbench acting as the parent of the CBanner
-	 */
-	public void createCBanner(Composite workbenchComposite) {
-		banner = new CBanner(workbenchComposite, SWT.NONE);
-		banner.setSimple(false);
-		banner.setRightWidth(175);
-		banner.setLocation(0, 0);
-
-		// Create the left composite and override its 'computeSize'
-		// to delegate to the 'primary' command trim area
-		Composite bannerLeft = new Composite(banner, SWT.NONE) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Composite#computeSize(int, int,
-			 *      boolean)
-			 */
-			public Point computeSize(int wHint, int hHint, boolean changed) {
-				// If we're doing a 'real' workbench layout then delegate to the
-				// appropriate trim area
-				if (WorkbenchLayout.layoutComposite != null) {
-					return WorkbenchLayout.this.computeSize(TRIMID_CMD_PRIMARY,
-							wHint);
-				}
-
-				return super.computeSize(wHint, hHint, changed);
-			}
-		};
-		bannerLeft.setLayout(new LeftBannerLayout());
-		bannerLeft.setBackground(workbenchComposite.getDisplay()
-				.getSystemColor(SWT.COLOR_DARK_BLUE));
-		banner.setLeft(bannerLeft);
-
-		// Create the right hand part of the CBanner
-		Composite bannerRight = new Composite(banner, SWT.NONE) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Composite#computeSize(int, int,
-			 *      boolean)
-			 */
-			public Point computeSize(int wHint, int hHint, boolean changed) {
-				// If we're doing a 'real' workbench layout then delegate to the
-				// appropriate trim area
-				if (WorkbenchLayout.layoutComposite != null) {
-					return WorkbenchLayout.this.computeSize(
-							TRIMID_CMD_SECONDARY, wHint);
-				}
-
-				return super.computeSize(wHint, hHint, changed);
-			}
-		};
-		bannerRight.setBackground(workbenchComposite.getDisplay()
-				.getSystemColor(SWT.COLOR_DARK_BLUE));
-		banner.setRight(bannerRight);
-
-		// If the right banner control changes size it's because
-		// the 'swoop' moved.
-		bannerRight.addControlListener(new ControlListener() {
-			public void controlMoved(ControlEvent e) {
-			}
-
-			public void controlResized(ControlEvent e) {
-				Composite leftComp = (Composite) e.widget;
-				leftComp.getShell().layout(true);
-			}
-		});
-
-		// Place the CBanner on the 'bottom' of the z-order
-		banner.moveBelow(null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
-	 *      int, int, boolean)
-	 * 
-	 * Note that this is arbitrary since the we're a top level shell (so
-	 * computeSize won't be called.
-	 */
-	protected Point computeSize(Composite composite, int wHint, int hHint,
-			boolean flushCache) {
-		Point size = new Point(wHint, hHint);
-		if (size.x == SWT.DEFAULT) {
-			size.x = 300;
-		}
-		if (size.y == SWT.DEFAULT) {
-			size.y = 300;
-		}
-		return size;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
-	 *      boolean)
-	 * 
-	 * TODO: Supply a full description of the layout mechanicsS
-	 */
-	protected void layout(Composite composite, boolean flushCache) {
-		layoutComposite = composite;
-		clientRect = composite.getClientArea();
-
-		// reset all the drag handles to be invisible
-		resetDragHandles();
-
-		// Compute the proper size for each trim area
-		// Do Top Right, Top Left, Left, Right then Bottom so the math works out
-		if (useCBanner()) {
-			banner.moveBelow(null);
-
-			// NOTE: calling 'computeSize' here will, in turn, call the
-			// 'computeSize' for the left/right areas, each with the
-			// 'correct' width hint...
-			Point bannerSize = banner
-					.computeSize(clientRect.width, SWT.DEFAULT);
-
-			// set the amount of space used by the 'cmd' areas for use later
-			topMax = bannerSize.y;
-
-			banner.setSize(bannerSize);
-		} else {
-			Point c1Size = computeSize(TRIMID_CMD_PRIMARY, clientRect.width);
-			Point c2Size = computeSize(TRIMID_CMD_SECONDARY, clientRect.width);
-
-			// set the amount of space used by the 'cmd' areas for use later
-			topMax = c1Size.y + c2Size.y;
-		}
-
-		// Now do the vertical areas; their 'major' is whatever is left
-		// vertically once the top areas have been computed
-		Point v1Size = computeSize(TRIMID_VERTICAL1, clientRect.height - topMax);
-		Point v2Size = computeSize(TRIMID_VERTICAL2, clientRect.height - topMax);
-
-		// Finally, the status area's 'major' is whatever is left over
-		// horizontally once the vertical areas have been computed.
-		computeSize(TRIMID_STATUS, clientRect.width - (v1Size.x + v2Size.x));
-
-		// Now, layout the trim within each area
-		// Command primary area
-		if (useCBanner()) {
-			Point leftLoc = banner.getLeft().getLocation();
-			cmdPrimaryTrimArea.areaBounds.x = leftLoc.x;
-			cmdPrimaryTrimArea.areaBounds.y = leftLoc.y;
-		} else {
-			cmdPrimaryTrimArea.areaBounds.x = 0;
-			cmdPrimaryTrimArea.areaBounds.y = 0;
-		}
-		layoutTrim(cmdPrimaryTrimArea, cmdPrimaryTrimArea.areaBounds);
-
-		// Command secondary area
-		if (useCBanner()) {
-			Point rightLoc = banner.getRight().getLocation();
-			cmdSecondaryTrimArea.areaBounds.x = rightLoc.x;
-			cmdSecondaryTrimArea.areaBounds.y = rightLoc.y;
-		} else {
-			cmdSecondaryTrimArea.areaBounds.x = 0;
-			cmdSecondaryTrimArea.areaBounds.y = cmdPrimaryTrimArea.areaBounds.height;
-		}
-		layoutTrim(cmdSecondaryTrimArea, cmdSecondaryTrimArea.areaBounds);
-
-		leftTrimArea.areaBounds.x = 0;
-		leftTrimArea.areaBounds.y = topMax;
-		layoutTrim(leftTrimArea, leftTrimArea.areaBounds);
-
-		rightTrimArea.areaBounds.x = clientRect.width
-				- rightTrimArea.areaBounds.width;
-		rightTrimArea.areaBounds.y = topMax;
-		layoutTrim(rightTrimArea, rightTrimArea.areaBounds);
-
-		bottomTrimArea.areaBounds.x = leftTrimArea.areaBounds.width;
-		bottomTrimArea.areaBounds.y = clientRect.height
-				- bottomTrimArea.areaBounds.height;
-		layoutTrim(bottomTrimArea, bottomTrimArea.areaBounds);
-
-		// Set the center control's bounds to fill the space remaining
-		// after the trim has been arranged
-		layoutCenter();
-	}
-
-	/**
-	 * Indicates whether or not the layout should use the CBanner or tile the
-	 * primary and secondary trim areas one above the other.
-	 * 
-	 * @return <code>true</code> iff the layout should use the CBanner.
-	 */
-	private boolean useCBanner() {
-		return (banner != null && banner.getVisible());
-	}
-
-	/**
-	 * @param areaId
-	 *            The identifier for the TrimArea to return
-	 * @return The TrimArea that matches the given areaId
-	 */
-	private TrimArea getTrimArea(String areaId) {
-		if (TRIMID_CMD_PRIMARY.equals(areaId)) {
-			return cmdPrimaryTrimArea;
-		}
-		if (TRIMID_CMD_SECONDARY.equals(areaId)) {
-			return cmdSecondaryTrimArea;
-		}
-		if (TRIMID_VERTICAL1.equals(areaId)) {
-			return leftTrimArea;
-		}
-		if (TRIMID_VERTICAL2.equals(areaId)) {
-			return rightTrimArea;
-		}
-		if (TRIMID_STATUS.equals(areaId)) {
-			return bottomTrimArea;
-		}
-
-		return null;
-	}
-
-	/**
-	 * @param areaId
-	 *            The TrimArea that we want to get the controls for
-	 * @return The list of controls whose TrimLayoutData's areaId matches the
-	 *         given areaId parameter
-	 */
-	private List getTrimContents(String areaId) {
-		List trimContents = new ArrayList();
-		Control[] children = layoutComposite.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			// Skip any disposed or invisible widgets
-			if (children[i].isDisposed() || !children[i].getVisible()) {
-				continue;
-			}
-
-			// Only accept children that want to be layed out in a particular
-			// trim area
-			if (children[i].getLayoutData() instanceof TrimLayoutData) {
-				TrimLayoutData tlData = (TrimLayoutData) children[i]
-						.getLayoutData();
-				if (tlData.areaId.equals(areaId)) {
-					trimContents.add(children[i]);
-				}
-			}
-		}
-
-		return trimContents;
-	}
-
-	/**
-	 * Lays out the center composite once the outer trim areas have all been
-	 * done.
-	 */
-	private void layoutCenter() {
-		if (centerComposite != null) {
-			// The center is the 'inner' bounding box of the other trim areas
-			Rectangle areaBounds = new Rectangle(
-					leftTrimArea.areaBounds.x + leftTrimArea.areaBounds.width,
-					topMax,
-					clientRect.width
-							- (leftTrimArea.areaBounds.width + rightTrimArea.areaBounds.width),
-					clientRect.height
-							- (topMax + bottomTrimArea.areaBounds.height));
-
-			centerComposite.setBounds(areaBounds);
-		}
-	}
-
-	/**
-	 * Computes the size of a trim area given the length of its major dimension.
-	 * Depending on whether the trim area is horizontal or vertical one of the
-	 * two value will always match the supplied 'majorHint' ('x' if it's
-	 * horizontal).
-	 * <p>
-	 * Effectively, this computes the length of the minor dimension by tiling
-	 * the trim area's controls into multiple lines based on the length of the
-	 * major dimension.
-	 * </p>
-	 * 
-	 * @param areaId
-	 *            The area id to compute the size for
-	 * @param majorHint
-	 *            The length of the major dimension
-	 * 
-	 * @return The computed size
-	 */
-	private Point computeSize(String areaId, int majorHint) {
-		TrimArea trimArea = getTrimArea(areaId);
-		boolean horizontal = trimArea.orientation == SWT.TOP
-				|| trimArea.orientation == SWT.BOTTOM;
-
-		// Gather up all the controls for this area and tile them out
-		trimArea.trimContents = getTrimContents(trimArea.areaId);
-
-		// Split the controls list into a list of TrimLines that each fit into
-		// the trim area
-		trimArea.trimLines = computeWrappedTrim(trimArea, majorHint);
-
-		// Now, calculate the max between the default and the contents
-		int minorMax = 0;
-		for (Iterator iter = trimArea.trimLines.iterator(); iter.hasNext();) {
-			TrimLine curLine = (TrimLine) iter.next();
-			minorMax += curLine.minorMax;
-		}
-		minorMax = Math.max(minorMax, trimArea.defaultMinor);
-
-		// Store the size in the area'a cache...
-		Point computedSize = new Point(0, 0);
-		if (horizontal) {
-			computedSize.x = trimArea.areaBounds.width = majorHint;
-			computedSize.y = trimArea.areaBounds.height = minorMax;
-		} else {
-			computedSize.x = trimArea.areaBounds.width = minorMax;
-			computedSize.y = trimArea.areaBounds.height = majorHint;
-		}
-
-		// ...and return it
-		return computedSize;
-	}
-
-	/**
-	 * This is where the information required to lay the controls belonging to a
-	 * particular trim area out.
-	 * <p>
-	 * Tile the controls in the trim area into one or more lines. Each line is
-	 * guaranteed to take up less than or equal to the 'majorHint' in the major
-	 * dimension. The result is a complete cache of the information needed to
-	 * lay the controls in the trim area out.
-	 * </p>
-	 * 
-	 * @param trimArea The trim area to create the cache info for
-	 * @param majorHint The length of the major dimension
-	 * 
-	 * @return A List of <code>TrimLine</code> elements
-	 */
-	private List computeWrappedTrim(TrimArea trimArea, int majorHint) {
-		boolean horizontal = trimArea.orientation == SWT.TOP
-				|| trimArea.orientation == SWT.BOTTOM;
-		// Return a list of 'lines' to tile the control into...
-		List lines = new ArrayList();
-		TrimLine curLine = new TrimLine();
-		lines.add(curLine);
-		curLine.minorMax = trimArea.defaultMinor;
-
-		// Init the tilePos to force a 'new' line
-		int tilePos = 0;
-		for (Iterator iter = trimArea.trimContents.iterator(); iter.hasNext();) {
-			Control control = (Control) iter.next();
-			TrimLayoutData td = (TrimLayoutData) control.getLayoutData();
-
-			Point prefSize;
-			if (horizontal) {
-				//prefSize = control.computeSize(majorHint, SWT.DEFAULT);
-				prefSize = control.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			} else {
-				prefSize = control.computeSize(SWT.DEFAULT, majorHint);
-			}
-
-			// Will this control fit onto the current line?
-			int curTileSize = horizontal ? prefSize.x : prefSize.y;
-
-			// every control except the first one needs to include the 'spacing'
-			// in the calc
-			if (curLine.controls.size() > 0) {
-				curTileSize += spacing;
-			}
-
-			// If the control can be re-positioned then we have to add a drag
-			// handle to it
-			// we have to include the space that it'll occupy in the calcs
-			if (td.listener != null) {
-				curTileSize += horizontal ? horizontalHandleSize
-						: verticalHandleSize;
-			}
-
-			// Place the control into the 'current' line if it'll fit (or if
-			// it's the
-			// -first- control (this handles the case where a control is too
-			// large to
-			// fit into the current TrimArea's 'major' size.
-			if ((tilePos + curTileSize) <= majorHint
-					|| curLine.controls.size() == 0) {
-				curLine.controls.add(control);
-
-				// Cache the maximum amount of 'minor' space needed
-				int minorSize = horizontal ? prefSize.y : prefSize.x;
-				if (minorSize > curLine.minorMax) {
-					curLine.minorMax = minorSize;
-				}
-
-				tilePos += curTileSize;
-			} else {
-				// Remember how much space was left on the current line
-				curLine.extraSpace = majorHint - tilePos;
-
-				// We need a new line...
-				curLine = new TrimLine();
-				lines.add(curLine);
-
-				curLine.controls.add(control);
-
-				// Cache the maximum amount of 'minor' space needed
-				int minorSize = horizontal ? prefSize.y : prefSize.x;
-				if (minorSize > curLine.minorMax) {
-					curLine.minorMax = minorSize;
-				}
-
-				tilePos = curTileSize;
-			}
-
-			// Count how many 'resizable' controls there are
-			if ((td.flags & TrimLayoutData.GROWABLE) != 0) {
-				curLine.resizableCount++;
-			}
-		}
-
-		// Remember how much space was left on the current line
-		curLine.extraSpace = majorHint - tilePos;
-
-		return lines;
-	}
-
-	private void layoutTrim(TrimArea trimArea, Rectangle areaBounds) {
-		boolean horizontal = trimArea.orientation == SWT.TOP
-				|| trimArea.orientation == SWT.BOTTOM;
-
-		// How much space do we have to 'tile' into?
-		int areaMajor = horizontal ? areaBounds.width : areaBounds.height;
-
-		// Get the tiled 'List of Lists' for the trim
-		List tileAreas = trimArea.trimLines;
-
-		// Tile each 'line' into the trim
-		int tilePosMinor = horizontal ? areaBounds.y : areaBounds.x;
-		for (Iterator areaIter = tileAreas.iterator(); areaIter.hasNext();) {
-			TrimLine curLine = (TrimLine) areaIter.next();
-
-			// Compute how much space to give to 'resizable' controls. Note that
-			// we can end up computing -negative- 'extraSpace' values if the
-			// control's
-			// preferred 'major' size is actually > the 'major' size for the
-			// trim area
-			int resizePadding = 0;
-			if (curLine.resizableCount > 0 && curLine.extraSpace > 0) {
-				resizePadding = curLine.extraSpace / curLine.resizableCount;
-			}
-
-			// Tile each line
-			int tilePosMajor = horizontal ? areaBounds.x : areaBounds.y;
-			for (Iterator iter = curLine.controls.iterator(); iter.hasNext();) {
-				Control control = (Control) iter.next();
-				TrimLayoutData td = (TrimLayoutData) control.getLayoutData();
-				Point prefSize = control.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-
-				int major = horizontal ? prefSize.x : prefSize.y;
-				int minor = horizontal ? prefSize.y : prefSize.x;
-
-				// Ensure that controls that are too wide for the area get
-				// 'clipped'
-				if (major > areaMajor) {
-					major = areaMajor;
-				}
-
-				// If desired, extend the 'minor' size of the control to fill
-				// the area
-				if ((td.flags & TrimLayoutData.GRAB_EXCESS_MINOR) != 0) {
-					minor = curLine.minorMax;
-				}
-
-				// If desired, extend the 'major' size of the control to fill
-				// the area
-				if ((td.flags & TrimLayoutData.GROWABLE) != 0) {
-					major += resizePadding;
-				}
-
-				// If we have to show a drag handle then do it here
-				if (td.listener != null && createHandles()) {
-					TrimCommonUIHandle handle = getDragHandle(trimArea.orientation);
-					// handle.setControl(control);
-
-					if (horizontal) {
-						handle.setBounds(tilePosMajor, tilePosMinor,
-								getHandleSize(true), curLine.minorMax);
-					} else {
-						handle.setBounds(tilePosMinor, tilePosMajor,
-								curLine.minorMax, getHandleSize(false));
-					}
-
-					tilePosMajor += horizontal ? getHandleSize(true)
-							: getHandleSize(false);
-				}
-
-				// Now, lay out the actual control
-				switch (trimArea.orientation) {
-				case SWT.TOP:
-					control.setBounds(tilePosMajor, tilePosMinor, major, minor);
-					break;
-				case SWT.LEFT:
-					control.setBounds(tilePosMinor, tilePosMajor, minor, major);
-					break;
-				case SWT.RIGHT:
-					// Here we want to tile the control to the RIGHT edge
-					int rightEdge = tilePosMinor + curLine.minorMax;
-					control.setBounds(rightEdge - minor, tilePosMajor, minor,
-							major);
-					break;
-				case SWT.BOTTOM:
-					// Here we want to tile the control to the RIGHT edge
-					int bottomEdge = tilePosMinor + curLine.minorMax;
-					control.setBounds(tilePosMajor, bottomEdge - minor, major,
-							minor);
-					break;
-				}
-
-				// Ensure that the control is above the trim control
-				tilePosMajor += major + spacing;
-			}
-			tilePosMinor += curLine.minorMax;
-			tilePosMajor = horizontal ? areaBounds.x : areaBounds.y;
-		}
-	}
-
-	/**
-	 * HACK>>>Remove if found in the wild...
-	 * @return
-	 */
-	private boolean createHandles() {
-		return false;
-	}
-
-	private void resetDragHandles() {
-		for (Iterator iter = dragHandles.iterator(); iter.hasNext();) {
-			// TrimCommonUIHandle handle = (TrimCommonUIHandle) iter.next();
-			// handle.setControl(null);
-		}
-	}
-
-	private TrimCommonUIHandle getDragHandle(int orientation) {
-		// boolean horizontal = orientation == SWT.TOP
-		// || orientation == SWT.BOTTOM;
-
-		for (Iterator iter = dragHandles.iterator(); iter.hasNext();) {
-			TrimCommonUIHandle handle = (TrimCommonUIHandle) iter.next();
-			// if (handle.toDrag == null && handle.horizontal == horizontal)
-			return handle;
-		}
-
-		// If we get here then we haven't found a new drag handle so create one
-		System.out.println("new Handle"); //$NON-NLS-1$
-		// TrimCommonUIHandle newHandle = new
-		// TrimCommonUIHandle(layoutComposite,
-		// horizontal);
-		// dragHandles.add(newHandle);
-		// return newHandle;
-		return null;
-	}
-
-	/**
-	 * Return the SWT side that the trim area is on
-	 * 
-	 * @param areaId The id of the area to get the orientation of
-	 * 
-	 * @return The SWT  side corresponding that the given area
-	 */
-	public static int getOrientation(String areaId) {
-		if (TRIMID_CMD_PRIMARY.equals(areaId)) {
-			return SWT.TOP;
-		}
-		if (TRIMID_CMD_SECONDARY.equals(areaId)) {
-			return SWT.TOP;
-		}
-		if (TRIMID_VERTICAL1.equals(areaId)) {
-			return SWT.LEFT;
-		}
-		if (TRIMID_VERTICAL2.equals(areaId)) {
-			return SWT.RIGHT;
-		}
-		if (TRIMID_STATUS.equals(areaId)) {
-			return SWT.BOTTOM;
-		}
-
-		return SWT.NONE;
-	}
-
-	/**
-	 * Calculate a size for the handle that will be large enough to show the
-	 * CoolBar's drag affordance.
-	 * 
-	 * @return The size that the handle has to be, based on the orientation
-	 */
-	private int getHandleSize(boolean horizontal) {
-		// Do we already have a 'cached' value?
-		if (horizontal && horizontalHandleSize != -1) {
-			return horizontalHandleSize;
-		}
-
-		if (!horizontal && verticalHandleSize != -1) {
-			return verticalHandleSize;
-		}
-
-		// Must be the first time, calculate the value
-		CoolBar bar = new CoolBar(layoutComposite, horizontal ? SWT.HORIZONTAL
-				: SWT.VERTICAL);
-
-		CoolItem item = new CoolItem(bar, SWT.NONE);
-
-		Label ctrl = new Label(bar, SWT.PUSH);
-		ctrl.setText("Button 1"); //$NON-NLS-1$
-		Point size = ctrl.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-
-		Point ps = item.computeSize(size.x, size.y);
-		item.setPreferredSize(ps);
-		item.setControl(ctrl);
-
-		bar.pack();
-
-		// OK, now the difference between the location of the CB and the
-		// location of the
-		Point bl = ctrl.getLocation();
-		Point cl = bar.getLocation();
-
-		// Toss them now...
-		ctrl.dispose();
-		item.dispose();
-		bar.dispose();
-
-		// The 'size' is the difference between the start of teh CoolBar and
-		// start of its first control
-		int length;
-		if (horizontal) {
-			length = bl.x - cl.x;
-			horizontalHandleSize = length;
-		} else {
-			length = bl.y - cl.y;
-			verticalHandleSize = length;
-		}
-
-		return length;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java
deleted file mode 100644
index dce04d6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchLayoutSettingsTransfer.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.preferences.WorkbenchSettingsTransfer;
-import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * The WorkbenchSettings handles the recording and restoring of workbench
- * settings.
- * 
- * @since 3.3
- * 
- */
-public class WorkbenchLayoutSettingsTransfer extends WorkbenchSettingsTransfer {
-
-	// private static final String WORKBENCH_LAYOUT_PATH =
-	// ".metadata/.plugins/org.eclipse.ui.workbench/workbench.xml";
-	// //$NON-NLS-1$
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	public WorkbenchLayoutSettingsTransfer() {
-		super();
-	}
-
-	/**
-	 * Record the sharable workbench state in a document.
-	 * 
-	 * @return {@link XMLMemento}
-	 */
-	public XMLMemento recordSharableWorkbenchState() {
-		XMLMemento memento = XMLMemento
-				.createWriteRoot(IWorkbenchConstants.TAG_WORKBENCH);
-		IStatus status = saveSettings(memento);
-		if (status.getSeverity() != IStatus.OK) {
-			// don't use newWindow as parent because it has not yet been opened
-			// (bug 76724)
-			ErrorDialog.openError(null,
-					WorkbenchMessages.Workbench_problemsSaving,
-					WorkbenchMessages.Workbench_problemsSavingMsg, status);
-		}
-		return memento;
-	}
-
-	/**
-	 * Save the settings to the memento.
-	 * 
-	 * @param memento
-	 * @return IStatus
-	 */
-	private IStatus saveSettings(XMLMemento memento) {
-		MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
-				WorkbenchMessages.Workbench_problemsSaving, null);
-
-		// Save the version number.
-		memento.putString(IWorkbenchConstants.TAG_VERSION,
-				Workbench.VERSION_STRING[1]);
-
-		// Save the workbench windows.
-		IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
-				.getWorkbenchWindows();
-		for (int nX = 0; nX < windows.length; nX++) {
-			WorkbenchWindow window = (WorkbenchWindow) windows[nX];
-			IMemento childMem = memento
-					.createChild(IWorkbenchConstants.TAG_WINDOW);
-			result.merge(saveState(window, childMem));
-		}
-		return result;
-	}
-
-	/**
-	 * Save the workbench window state.
-	 * 
-	 * @param window
-	 * @param memento
-	 * @return IStatus
-	 */
-	private IStatus saveState(WorkbenchWindow window, IMemento memento) {
-
-		MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
-				WorkbenchMessages.WorkbenchWindow_problemsSavingWindow, null);
-
-		IWorkbenchPage activePage = window.getActivePage();
-		if (activePage != null
-				&& activePage.findView(IIntroConstants.INTRO_VIEW_ID) != null) {
-			IMemento introMem = memento
-					.createChild(IWorkbenchConstants.TAG_INTRO);
-			boolean isStandby = getWorkbench()
-					.getIntroManager()
-					.isIntroStandby(getWorkbench().getIntroManager().getIntro());
-			introMem.putString(IWorkbenchConstants.TAG_STANDBY, String
-					.valueOf(isStandby));
-		}
-
-		// Save each page.
-		IWorkbenchPage[] pages = window.getPages();
-		for (int i = 0; i < pages.length; i++) {
-			IWorkbenchPage page = pages[i];
-
-			// Save perspective.
-			IMemento pageMem = memento
-					.createChild(IWorkbenchConstants.TAG_PAGE);
-			pageMem.putString(IWorkbenchConstants.TAG_LABEL, page.getLabel());
-			result.add(saveState((WorkbenchPage) page, pageMem));
-
-			if (page == window.getActivePage()) {
-				pageMem.putString(IWorkbenchConstants.TAG_FOCUS, "true"); //$NON-NLS-1$
-			}
-
-			// Get the input.
-			IAdaptable input = page.getInput();
-			if (input != null) {
-				IPersistableElement persistable = (IPersistableElement) Util
-						.getAdapter(input, IPersistableElement.class);
-				if (persistable == null) {
-					WorkbenchPlugin
-							.log("Unable to save page input: " //$NON-NLS-1$
-									+ input
-									+ ", because it does not adapt to IPersistableElement"); //$NON-NLS-1$
-
-				} else {
-					// Save input.
-					IMemento inputMem = pageMem
-							.createChild(IWorkbenchConstants.TAG_INPUT);
-					inputMem.putString(IWorkbenchConstants.TAG_FACTORY_ID,
-							persistable.getFactoryId());
-					persistable.saveState(inputMem);
-				}
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	 * Save the state of the workbench page.
-	 * 
-	 * @param page
-	 * @param pageMem
-	 * @return IStatus
-	 */
-	private IStatus saveState(WorkbenchPage page, IMemento memento) {
-
-		MultiStatus result = new MultiStatus(
-				PlatformUI.PLUGIN_ID,
-				IStatus.OK,
-				NLS
-						.bind(
-								WorkbenchMessages.WorkbenchPage_unableToSavePerspective,
-								page.getLabel()), null);
-
-		saveEditorState( memento);
-
-		IMemento viewMem = memento.createChild(IWorkbenchConstants.TAG_VIEWS);
-
-		IViewReference[] refs = page.getViewReferences();
-
-		for (int i = 0; i < refs.length; i++) {
-			IViewReference viewReference = refs[i];
-			String tagId = ViewFactory.getKey(viewReference);
-			if (tagId != null) {
-				IMemento childMem = viewMem
-						.createChild(IWorkbenchConstants.TAG_VIEW);
-				childMem.putString(IWorkbenchConstants.TAG_ID, tagId);
-				String name = viewReference.getPartName();
-				if (name != null) {
-					childMem.putString(IWorkbenchConstants.TAG_PART_NAME, name);
-				}
-			}
-		}
-
-		// Create persp block.
-		IMemento perspectiveMemento = memento
-				.createChild(IWorkbenchConstants.TAG_PERSPECTIVES);
-		if (page.getPerspective() != null) {
-			perspectiveMemento.putString(
-					IWorkbenchConstants.TAG_ACTIVE_PERSPECTIVE, page
-							.getPerspective().getId());
-		}
-		if (page.getActivePart() != null) {
-			if (page.getActivePart() instanceof IViewPart) {
-				IViewReference ref = (IViewReference) page.getReference(page
-						.getActivePart());
-				if (ref != null) {
-					perspectiveMemento.putString(
-							IWorkbenchConstants.TAG_ACTIVE_PART, ViewFactory
-									.getKey(ref));
-				}
-			} else {
-				perspectiveMemento.putString(
-						IWorkbenchConstants.TAG_ACTIVE_PART, page
-								.getActivePart().getSite().getId());
-			}
-		}
-
-		// Save each perspective in opened order
-		IPerspectiveDescriptor[] perspectives = page.getOpenPerspectives();
-
-		for (int i = 0; i < perspectives.length; i++) {
-			IPerspectiveDescriptor perspectiveDescriptor = perspectives[i];
-			IMemento gChildMem = perspectiveMemento
-					.createChild(IWorkbenchConstants.TAG_PERSPECTIVE);
-			Perspective perspective = page
-					.findPerspective(perspectiveDescriptor);
-			perspective.saveState(gChildMem);
-		}
-
-		return result;
-
-	}
-
-	/**
-	 * Save the editor state. Set it to be the defaults.
-	 * 
-	 * @param memento
-	 */
-	private void saveEditorState(IMemento memento) {
-
-		IMemento editorsMemento = memento
-				.createChild(IWorkbenchConstants.TAG_EDITORS);
-		IMemento editorArea = editorsMemento
-				.createChild(IWorkbenchConstants.TAG_AREA);
-		editorArea.putString(IWorkbenchConstants.TAG_ACTIVE_WORKBOOK,
-				EditorSashContainer.DEFAULT_WORKBOOK_ID);
-		IMemento info = editorArea.createChild(IWorkbenchConstants.TAG_INFO);
-		info.putString(IWorkbenchConstants.TAG_PART,
-				EditorSashContainer.DEFAULT_WORKBOOK_ID);
-		IMemento folder = info.createChild(IWorkbenchConstants.TAG_FOLDER);
-		folder.putInteger(IWorkbenchConstants.TAG_APPEARANCE,
-				PresentationFactoryUtil.ROLE_EDITOR);
-		folder.putInteger(IWorkbenchConstants.TAG_EXPANDED,
-				IStackPresentationSite.STATE_RESTORED);
-		IMemento presentation = folder
-				.createChild(IWorkbenchConstants.TAG_PRESENTATION);
-		presentation.putString(IWorkbenchConstants.TAG_ID,
-				getCurrentPresentationClassName());
-
-	}
-
-	/**
-	 * Get the name of the current presentation class name.
-	 * 
-	 * @return String
-	 */
-	private String getCurrentPresentationClassName() {
-
-		// update the current selection (used to look for changes on apply)
-		String currentPresentationFactoryId = PrefUtil.getAPIPreferenceStore()
-				.getString(
-						IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
-		// Workbench.getInstance().getPresentationId();
-
-		AbstractPresentationFactory factory = WorkbenchPlugin.getDefault()
-				.getPresentationFactory(currentPresentationFactoryId);
-
-		if (factory == null)
-			factory = WorkbenchPlugin.getDefault().getPresentationFactory(
-					IWorkbenchConstants.DEFAULT_PRESENTATION_ID);
-		return factory.getClass().getName();
-
-	}
-
-	/**
-	 * Return the workbench we are using.
-	 * 
-	 * @return IWorkbench
-	 */
-	private IWorkbench getWorkbench() {
-		return PlatformUI.getWorkbench();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.SettingsTransfer#transferSettings(org.eclipse.core.runtime.IPath)
-	 */
-	public IStatus transferSettings(IPath newWorkspaceRoot) {
-		try {
-			File workspaceFile = createFileAndDirectories(newWorkspaceRoot);
-
-			if (workspaceFile == null)
-				return new Status(
-						IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH,
-						WorkbenchMessages.WorkbenchSettings_CouldNotCreateDirectories);
-
-			FileOutputStream stream = new FileOutputStream(workspaceFile);
-			OutputStreamWriter writer = new OutputStreamWriter(stream, "utf-8"); //$NON-NLS-1$
-			XMLMemento memento = XMLMemento
-					.createWriteRoot(IWorkbenchConstants.TAG_WORKBENCH);
-			IStatus status = saveSettings(memento);
-			if (status.getSeverity() != IStatus.OK)
-				return status;
-
-			memento.save(writer);
-			writer.close();
-
-		} catch (IOException e) {
-			return new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
-					WorkbenchMessages.Workbench_problemsSavingMsg, e);
-
-		}
-
-		return Status.OK_STATUS;
-	}
-
-	/**
-	 * Create the parent directories for the workbench layout file and then
-	 * return the File.
-	 * 
-	 * @param newWorkspaceRoot
-	 * @return File the new layout file. Return <code>null</code> if the file
-	 *         cannot be created.
-	 */
-	private File createFileAndDirectories(IPath newWorkspaceRoot) {
-		IPath newWorkspaceLocation = getNewWorkbenchStateLocation(
-				newWorkspaceRoot).append(
-				Workbench.DEFAULT_WORKBENCH_STATE_FILENAME);
-		File workspaceFile = new File(newWorkspaceLocation.toOSString());
-
-		File parent = workspaceFile.getParentFile();
-		if (!parent.exists()) {
-			if (!parent.mkdirs())
-				return null;
-		}
-
-		return workspaceFile;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.SettingsTransfer#getName()
-	 */
-	public String getName() {
-		return WorkbenchMessages.WorkbenchLayoutSettings_Name;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
deleted file mode 100644
index 4890546..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
+++ /dev/null
@@ -1,1068 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- * Sebastian Davids - bug 128529
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Message class for workbench messages.  These messages are used 
- * throughout the workbench. 
- *
- */
-public class WorkbenchMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.messages";//$NON-NLS-1$
-
-
-	public static String BundleSigningTray_Cant_Find_Service;
-
-
-	public static String BundleSigningTray_Determine_Signer_For;
-
-
-	public static String BundleSigningTray_Signing_Certificate;
-
-
-	public static String BundleSigningTray_Signing_Date;
-
-
-	public static String BundleSigningTray_Unget_Signing_Service;
-
-
-	public static String BundleSigningTray_Unknown;
-
-
-	public static String BundleSigningTray_Unsigned;
-
-
-	public static String BundleSigningTray_Working;
-
-
-	public static String NewWorkingSet;
-
-
-	public static String PlatformUI_NoWorkbench;
-
-	public static String Workbench_CreatingWorkbenchTwice;
-
-    public static String StatusUtil_errorOccurred;
-    
-	// ==============================================================================
-	// Workbench Actions
-	// ==============================================================================
-
-	// --- File Menu ---
-	public static String NewWizardAction_text;
-	public static String NewWizardAction_toolTip;
-	public static String CloseAllAction_text;
-	public static String CloseAllAction_toolTip;
-	public static String CloseAllSavedAction_text;
-	public static String CloseAllSavedAction_toolTip;
-	public static String CloseEditorAction_text;
-	public static String CloseEditorAction_toolTip;
-	public static String CloseOthersAction_text;
-	public static String CloseOthersAction_toolTip;
-	public static String NewEditorAction_text;
-	public static String NewEditorAction_tooltip;
-	public static String SaveAction_text;
-	public static String SaveAction_toolTip;
-	public static String SaveAs_text;
-	public static String SaveAs_toolTip;
-	public static String SaveAll_text;
-	public static String SaveAll_toolTip;
-	public static String Workbench_revert;
-	public static String Workbench_revertToolTip;
-	public static String Workbench_move;
-
-	public static String Workbench_moveToolTip;
-	public static String Workbench_rename;
-	public static String Workbench_renameToolTip;
-	public static String Workbench_refresh;
-	public static String Workbench_refreshToolTip;
-	public static String Workbench_properties;
-	public static String Workbench_propertiesToolTip;
-
-
-	public static String Workbench_print;
-	public static String Workbench_printToolTip;
-	public static String ExportResourcesAction_text;
-	public static String ExportResourcesAction_fileMenuText;
-	public static String ExportResourcesAction_toolTip;
-	public static String ImportResourcesAction_text;
-	public static String ImportResourcesAction_toolTip;
-	public static String OpenRecent_errorTitle;
-	public static String OpenRecent_unableToOpen;
-	public static String Exit_text;
-	public static String Exit_toolTip;
-
-
-	// --- Edit Menu ---
-	public static String Workbench_undo;
-	public static String Workbench_undoToolTip;
-	public static String Workbench_redo;
-	public static String Workbench_redoToolTip;
-	public static String Workbench_cut;
-	public static String Workbench_cutToolTip;
-	public static String Workbench_copy;
-	public static String Workbench_copyToolTip;
-	public static String Workbench_paste;
-	public static String Workbench_pasteToolTip;
-	public static String Workbench_delete;
-	public static String Workbench_deleteToolTip;
-	public static String Workbench_selectAll;
-	public static String Workbench_selectAllToolTip;
-	public static String Workbench_findReplace;
-	public static String Workbench_findReplaceToolTip;
-
-	// --- Navigate Menu ---
-	public static String Workbench_goInto;
-	public static String Workbench_goIntoToolTip;
-	public static String Workbench_back;
-	public static String Workbench_backToolTip;
-	public static String Workbench_forward;
-	public static String Workbench_forwardToolTip;
-	public static String Workbench_up;
-	public static String Workbench_upToolTip;
-	public static String Workbench_next;
-	public static String Workbench_nextToolTip;
-	public static String Workbench_previous;
-	public static String Workbench_previousToolTip;
-
-	public static String NavigationHistoryAction_forward_text;
-	public static String NavigationHistoryAction_forward_toolTip;
-	public static String NavigationHistoryAction_backward_text;
-	public static String NavigationHistoryAction_backward_toolTip;
-	public static String NavigationHistoryAction_forward_toolTipName;
-	public static String NavigationHistoryAction_backward_toolTipName;
-	public static String NavigationHistoryAction_locations;
-
-	public static String Workbench_showInNoTargets;
-	public static String Workbench_showInNoPerspectives;
-	public static String Workbench_noApplicableItems;
-
-	public static String OpenPreferences_text;
-	public static String OpenPreferences_toolTip;
-
-	// --- Window Menu ---
-	public static String PerspectiveMenu_otherItem;
-	public static String SelectPerspective_shellTitle;
-	public static String Workbench_showPerspectiveError;
-	public static String ChangeToPerspectiveMenu_errorTitle;
-    public static String OpenPerspectiveDialogAction_text;
-    public static String OpenPerspectiveDialogAction_tooltip;
-
-    public static String ShowView_title;
-	public static String ShowView_shellTitle;
-	public static String ShowView_errorTitle;
-	public static String ShowView_selectViewHelp;
-	public static String ShowView_noDesc;
-	
-	public static String ToggleEditor_hideEditors;
-	public static String ToggleEditor_showEditors;
-	public static String ToggleEditor_toolTip;
-
-	public static String LockToolBarAction_text;
-	public static String LockToolBarAction_toolTip;
-
-	public static String EditActionSetsAction_text;
-	public static String EditActionSetsAction_toolTip;
-	public static String ActionSetSelection_customize;
-	public static String ActionSetDialogInput_viewCategory;
-	public static String ActionSetDialogInput_perspectiveCategory;
-	public static String ActionSetDialogInput_wizardCategory;
-
-	public static String ActionSetSelection_menuTab;
-	public static String ActionSetSelection_actionSetsTab;
-	public static String ActionSetSelection_selectActionSetsLabel;
-	public static String ActionSetSelection_selectActionSetsHelp;
-	public static String ActionSetSelection_availableActionSets;
-	public static String ActionSetSelection_menubarActions;
-	public static String ActionSetSelection_toolbarActions;
-	public static String ActionSetSelection_selectMenusLabel;
-	public static String ActionSetSelection_availableMenus;
-	public static String ActionSetSelection_availableCategories;
-	public static String ActionSetSelection_menuItems;
-	public static String ActionSetSelection_descriptionColumnHeader;
-	public static String ActionSetSelection_menuColumnHeader;
-	public static String ActionSetSelection_toolbarLocation;
-	public static String ActionSetSelection_menubarLocation;
-	public static String ActionSetSelection_noDesc;
-
-	public static String SavePerspective_text;
-	public static String SavePerspective_toolTip;
-	public static String SavePerspective_shellTitle;
-	public static String SavePerspectiveDialog_description;
-	public static String SavePerspective_name;
-	public static String SavePerspective_existing;
-	public static String SavePerspective_overwriteTitle;
-	public static String SavePerspective_overwriteQuestion;
-	public static String SavePerspective_singletonQuestion;
-	public static String SavePerspective_errorTitle;
-	public static String SavePerspective_errorMessage;
-
-	public static String ResetPerspective_text;
-	public static String ResetPerspective_toolTip;
-	public static String ResetPerspective_message;
-	public static String ResetPerspective_title;
-	public static String RevertPerspective_note;
-
-	public static String ClosePerspectiveAction_text;
-	public static String ClosePerspectiveAction_toolTip;
-	public static String CloseAllPerspectivesAction_text;
-	public static String CloseAllPerspectivesAction_toolTip;
-
-	public static String OpenInNewWindowAction_text;
-	public static String OpenInNewWindowAction_toolTip;
-	public static String OpenInNewWindowAction_errorTitle;
-	public static String CycleEditorAction_next_text;
-	public static String CycleEditorAction_next_toolTip;
-	public static String CycleEditorAction_prev_text;
-	public static String CycleEditorAction_prev_toolTip;
-	public static String CycleEditorAction_header;
-	public static String CyclePartAction_next_text;
-	public static String CyclePartAction_next_toolTip;
-	public static String CyclePartAction_prev_text;
-	public static String CyclePartAction_prev_toolTip;
-	public static String CyclePartAction_header;
-	public static String CyclePartAction_editor;
-	public static String CyclePerspectiveAction_next_text;
-	public static String CyclePerspectiveAction_next_toolTip;
-	public static String CyclePerspectiveAction_prev_text;
-	public static String CyclePerspectiveAction_prev_toolTip;
-	public static String CyclePerspectiveAction_header;
-	public static String ActivateEditorAction_text;
-	public static String ActivateEditorAction_toolTip;
-	public static String MaximizePartAction_text;
-	public static String MaximizePartAction_toolTip;
-	public static String MinimizePartAction_text;
-	public static String MinimizePartAction_toolTip;
-
-
-
-	// --- Help Menu ---
-	public static String AboutAction_text;
-	public static String AboutAction_toolTip;
-	public static String HelpContentsAction_text;
-	public static String HelpContentsAction_toolTip;
-	public static String HelpSearchAction_text;
-	public static String HelpSearchAction_toolTip;
-	public static String DynamicHelpAction_text;
-	public static String DynamicHelpAction_toolTip;
-	public static String AboutDialog_shellTitle;
-	public static String AboutDialog_featureInfo;
-	public static String AboutDialog_pluginInfo;
-	public static String AboutDialog_systemInfo;
-	public static String AboutDialog_defaultProductName;
-	public static String AboutDialog_concatenationOfProviderNameAndFeatureName;
-	public static String ProductInfoDialog_errorTitle;
-	public static String ProductInfoDialog_unableToOpenWebBrowser;
-	public static String PreferencesExportDialog_ErrorDialogTitle;
-	public static String AboutPluginsDialog_shellTitle;
-	public static String AboutPluginsDialog_pluginName;
-	public static String AboutPluginsDialog_pluginId;
-	public static String AboutPluginsDialog_version;
-	public static String AboutPluginsDialog_signed;
-	public static String AboutPluginsDialog_provider;
-	public static String AboutPluginsDialog_state_installed;
-	public static String AboutPluginsDialog_state_resolved;
-	public static String AboutPluginsDialog_state_starting;
-	public static String AboutPluginsDialog_state_stopping;
-	public static String AboutPluginsDialog_state_uninstalled;
-	public static String AboutPluginsDialog_state_active;
-	public static String AboutPluginsDialog_state_unknown;
-	public static String AboutPluginsDialog_moreInfo;
-	public static String AboutPluginsDialog_signingInfo_show;
-	public static String AboutPluginsDialog_signingInfo_hide;
-	public static String AboutPluginsDialog_columns;
-	public static String AboutPluginsDialog_errorTitle;
-	public static String AboutPluginsDialog_unableToOpenFile;
-	public static String AboutFeaturesDialog_shellTitle;
-	public static String AboutFeaturesDialog_featureName;
-	public static String AboutFeaturesDialog_featureId;
-	public static String AboutFeaturesDialog_version;
-	public static String AboutFeaturesDialog_signed;
-	public static String AboutFeaturesDialog_provider;
-	public static String AboutFeaturesDialog_moreInfo;
-	public static String AboutFeaturesDialog_pluginsInfo;
-	public static String AboutFeaturesDialog_columns;
-	public static String AboutFeaturesDialog_noInformation;
-	public static String AboutFeaturesDialog_pluginInfoTitle;
-	public static String AboutFeaturesDialog_pluginInfoMessage;
-	public static String AboutFeaturesDialog_noInfoTitle;
-	public static String AboutSystemDialog_browseErrorLogName;
-	public static String AboutSystemDialog_copyToClipboardName;
-	public static String AboutSystemDialog_noLogTitle;
-	public static String AboutSystemDialog_noLogMessage;
-
-	// --- Shortcutbar ---
-	public static String PerspectiveBarContributionItem_toolTip;
-	public static String PerspectiveBarNewContributionItem_toolTip;
-
-	//--- Coolbar ---
-	public static String WorkbenchWindow_FileToolbar;
-	public static String WorkbenchWindow_NavigateToolbar;
-	public static String WorkbenchWindow_searchCombo_toolTip;
-	public static String WorkbenchWindow_searchCombo_text;
-
-
-	public static String WorkbenchWindow_close;
-	public static String WorkbenchPage_PerspectiveFormat;
-	public static String WorkbenchPage_ErrorCreatingPerspective;
-	public static String WorkbenchPage_UndefinedPerspective;
-
-	public static String SelectWorkingSetAction_text;
-	public static String SelectWorkingSetAction_toolTip;
-	public static String EditWorkingSetAction_text;
-	public static String EditWorkingSetAction_toolTip;
-	public static String EditWorkingSetAction_error_nowizard_title;
-	public static String EditWorkingSetAction_error_nowizard_message;
-	public static String ClearWorkingSetAction_text;
-	public static String ClearWorkingSetAction_toolTip;
-	public static String WindowWorkingSets;
-	public static String NoWorkingSet;
-	public static String SelectedWorkingSets;
-	public static String NoApplicableWorkingSets;
-
-	// ==============================================================================
-	// Drill Actions
-	// ==============================================================================
-	public static String GoHome_text;
-	public static String GoHome_toolTip;
-	public static String GoBack_text;
-	public static String GoBack_toolTip;
-	public static String GoInto_text;
-	public static String GoInto_toolTip;
-
-
-	public static String ICategory_other;
-
-	// ==============================================================================
-	// Wizards
-	// ==============================================================================
-	public static String NewWizard_title;
-	public static String NewWizardNewPage_description;
-	public static String NewWizardNewPage_wizardsLabel;
-	public static String NewWizardNewPage_showAll;
-	public static String WizardList_description;
-	public static String Select;
-	public static String NewWizardSelectionPage_description;
-	public static String NewWizardShortcutAction_errorTitle;
-	public static String NewWizardShortcutAction_errorMessage;
-
-	public static String NewWizardsRegistryReader_otherCategory;
-	public static String NewWizardDropDown_text;
-	
-	public static String WorkbenchWizard_errorMessage;
-	public static String WorkbenchWizard_errorTitle;
-	public static String WizardTransferPage_selectAll;
-	public static String WizardTransferPage_deselectAll;
-	public static String TypesFiltering_title;
-	public static String TypesFiltering_message;
-	public static String TypesFiltering_otherExtensions;
-	public static String TypesFiltering_typeDelimiter;
-
-	// --- Import/Export ---
-	public static String ImportExportPage_chooseImportSource;
-	public static String ImportExportPage_chooseExportDestination;
-	
-	// --- Import ---
-	public static String ImportWizard_title;
-	public static String ImportWizard_selectSource;
-
-	// --- Export ---
-	public static String ExportWizard_title;
-	public static String ExportWizard_selectDestination;
-	// --- New Project ---
-	public static String NewProject_title;
-
-	// ==============================================================================
-	// Preference Pages
-	// ==============================================================================
-	public static String PreferenceNode_errorTitle;
-	public static String PreferenceNode_errorMessage;
-    public static String PreferenceNode_NotFound;
-	public static String Preference_note;
-
-	// --- Workbench ---
-	public static String WorkbenchPreference_showMultipleEditorTabsButton;
-	public static String WorkbenchPreference_allowInplaceEditingButton;
-	public static String WorkbenchPreference_useIPersistableEditorButton;
-	public static String WorkbenchPreference_promptWhenStillOpenButton;
-	public static String WorkbenchPreference_showTextOnPerspectiveBar;
-	public static String WorkbenchPreference_stickyCycleButton;
-	public static String WorkbenchPreference_RunInBackgroundButton;
-	public static String WorkbenchPreference_RunInBackgroundToolTip;
-
-	// --- Appearance ---
-	public static String ViewsPreference_currentPresentation;
-	public static String ViewsPreference_currentPresentationFormat;
-	public static String ViewsPreference_presentationConfirm_title;
-	public static String ViewsPreference_presentationConfirm_message;
-	public static String ViewsPreference_presentationConfirm_yes;
-	public static String ViewsPreference_presentationConfirm_no;
-	public static String ViewsPreference_editors;
-	public static String ViewsPreference_editors_top;
-	public static String ViewsPreference_editors_bottom;
-	public static String ViewsPreference_views;
-	public static String ViewsPreference_views_top;
-	public static String ViewsPreference_views_bottom;
-	public static String ViewsPreference_perspectiveBar;
-	public static String ViewsPreference_perspectiveBar_topRight;
-	public static String ViewsPreference_perspectiveBar_topLeft;
-	public static String ViewsPreference_perspectiveBar_left;
-	public static String ViewsPreference_traditionalTabs;
-	public static String ViewsPreference_currentTheme;
-	public static String ViewsPreference_currentThemeDescription;
-	public static String ViewsPreference_currentThemeFormat;
-	public static String ViewsPreference_enableAnimations;
-	public static String ViewsPreference_useColoredLabels;
-	public static String ViewsPreference_override;
-	public static String ViewsPreference_restartRequestJobName;
-	
-	// --- File Editors ---
-	public static String FileEditorPreference_fileTypes;
-	public static String FileEditorPreference_add;
-	public static String FileEditorPreference_remove;
-	public static String FileEditorPreference_associatedEditors;
-	public static String FileEditorPreference_addEditor;
-	public static String FileEditorPreference_removeEditor;
-	public static String FileEditorPreference_default;
-	public static String FileEditorPreference_existsTitle;
-	public static String FileEditorPreference_existsMessage;
-	public static String FileEditorPreference_defaultLabel;
-    public static String FileEditorPreference_contentTypesRelatedLink;
-    public static String FileEditorPreference_isLocked;
-
-	public static String FileExtension_extensionEmptyMessage;
-	public static String FileExtension_fileNameInvalidMessage;
-	public static String FilteredPreferenceDialog_PreferenceSaveFailed;
-	public static String FilteredPreferenceDialog_Resize;
-	
-	public static String FileExtension_fileTypeMessage;
-	public static String FileExtension_fileTypeLabel;
-	public static String FileExtension_shellTitle;
-	public static String FileExtension_dialogTitle;
-
-	public static String Choose_the_editor_for_file;
-	public static String EditorSelection_chooseAnEditor;
-	public static String EditorSelection_internal;
-	public static String EditorSelection_external;
-	public static String EditorSelection_browse;
-	public static String EditorSelection_title;
-
-	// --- Perspectives ---
-	public static String OpenPerspectiveMode_optionsTitle;
-	public static String OpenPerspectiveMode_sameWindow;
-	public static String OpenPerspectiveMode_newWindow;
-
-	public static String OpenViewMode_title;
-	public static String OpenViewMode_embed;
-	public static String OpenViewMode_fast;
-
-	public static String PerspectivesPreference_MakeDefault;
-	public static String PerspectivesPreference_MakeDefaultTip;
-	public static String PerspectivesPreference_Reset;
-	public static String PerspectivesPreference_ResetTip;
-	public static String PerspectivesPreference_Delete;
-	public static String PerspectivesPreference_DeleteTip;
-	public static String PerspectivesPreference_available;
-	public static String PerspectivesPreference_defaultLabel;
-	public static String PerspectivesPreference_perspectiveopen_title;
-	public static String PerspectivesPreference_perspectiveopen_message;
-
-	public static String PerspectiveLabelProvider_unknown;
-
-	//---- General Preferences----
-	public static String PreferencePage_noDescription;
-	public static String PreferencePageParameterValues_pageLabelSeparator;
-
-	// --- Workbench -----
-	public static String WorkbenchPreference_openMode;
-	public static String WorkbenchPreference_doubleClick;
-	public static String WorkbenchPreference_singleClick;
-	public static String WorkbenchPreference_singleClick_SelectOnHover;
-	public static String WorkbenchPreference_singleClick_OpenAfterDelay;
-	public static String WorkbenchPreference_noEffectOnAllViews;
-	public static String WorkbenchPreference_HeapStatusButton;
-	public static String WorkbenchPreference_HeapStatusButtonToolTip;
-
-	// --- Fonts ---
-	public static String FontsPreference_useSystemFont;
-
-	// --- Decorators ---
-	public static String DecoratorsPreferencePage_description;
-	public static String DecoratorsPreferencePage_decoratorsLabel;
-	public static String DecoratorsPreferencePage_explanation;
-
-	// --- Startup preferences ---
-	public static String StartupPreferencePage_label;
-
-	// ==============================================================================
-	// Property Pages
-	// ==============================================================================
-	public static String PropertyDialog_text;
-	public static String PropertyDialog_toolTip;
-	public static String PropertyDialog_messageTitle;
-	public static String PropertyDialog_noPropertyMessage;
-	public static String PropertyDialog_propertyMessage;
-	public static String PropertyPageNode_errorTitle;
-	public static String PropertyPageNode_errorMessage;
-
-	public static String SystemInPlaceDescription_name;
-	public static String SystemEditorDescription_name;
-
-	// ==============================================================================
-	// Dialogs
-	// ==============================================================================
-	public static String Error;
-	public static String Information;
-	
-	public static String Workbench_NeedsClose_Title;
-	public static String Workbench_NeedsClose_Message;
-
-	public static String ErrorPreferencePage_errorMessage;
-
-	public static String ListSelection_title;
-	public static String ListSelection_message;
-
-	public static String SelectionDialog_selectLabel;
-	public static String SelectionDialog_deselectLabel;
-
-	public static String ElementTreeSelectionDialog_nothing_available;
-
-	public static String CheckedTreeSelectionDialog_nothing_available;
-	public static String CheckedTreeSelectionDialog_select_all;
-	public static String CheckedTreeSelectionDialog_deselect_all;
-
-	// ==============================================================================
-	// Editor Framework
-	// ==============================================================================
-	public static String EditorManager_saveResourcesMessage;
-	public static String EditorManager_saveResourcesOptionallyMessage;
-	public static String EditorManager_saveResourcesTitle;
-	public static String EditorManager_exceptionRestoringEditor;
-	public static String EditorManager_unableToCreateEditor;
-	public static String EditorManager_systemEditorError;
-	public static String EditorManager_invalidDescriptor;
-	public static String EditorManager_instantiationError;
-    public static String EditorManager_errorInInit;
-	public static String EditorManager_siteIncorrect;
-	public static String EditorManager_unknownEditorIDMessage;
-	public static String EditorManager_errorOpeningExternalEditor;
-	public static String EditorManager_unableToOpenExternalEditor;
-	public static String EditorManager_operationFailed;
-	public static String EditorManager_saveChangesQuestion;
-	public static String EditorManager_closeWithoutPromptingOption;
-	public static String EditorManager_saveChangesOptionallyQuestion;
-    public static String EditorManager_missing_editor_descriptor;
-    public static String EditorManager_no_in_place_support;
-    public static String EditorManager_invalid_editor_descriptor;
-    public static String EditorManager_no_persisted_state;
-    public static String EditorManager_no_input_factory_ID;
-    public static String EditorManager_bad_element_factory;
-    public static String EditorManager_create_element_returned_null;
-    public static String EditorManager_wrong_createElement_result;
-    public static String EditorManager_backgroundSaveJobName;
-    
-	public static String EditorPane_pinEditor;
-
-	public static String ExternalEditor_errorMessage;
-	public static String Save;
-	public static String Save_Resource;
-	public static String Save_All;
-
-
-	// ==============================================================================
-	// Perspective Framework
-	// ==============================================================================
-	public static String OpenNewPageMenu_dialogTitle;
-	public static String OpenNewPageMenu_unknownPageInput;
-
-	public static String OpenNewWindowMenu_dialogTitle;
-	public static String OpenNewWindowMenu_unknownInput;
-
-	public static String OpenPerspectiveMenu_pageProblemsTitle;
-	public static String OpenPerspectiveMenu_errorUnknownInput;
-
-	public static String Perspective_oneError;
-	public static String Perspective_multipleErrors;
-
-	public static String Perspective_problemRestoringTitle;
-	public static String Perspective_errorReadingState;
-	public static String Perspective_problemLoadingTitle;
-	public static String Perspective_errorLoadingState;
-	public static String WorkbenchPage_problemRestoringTitle;
-	public static String WorkbenchPage_errorReadingState;
-
-	public static String Perspective_problemSavingTitle;
-	public static String Perspective_problemSavingMessage;
-
-	public static String Perspective_unableToLoad;
-	public static String Perspective_couldNotFind;
-
-	// ==============================================================================
-	// Views Framework
-	// ==============================================================================
-	public static String Menu;
-	public static String ViewMenu;
-
-	public static String StandardSystemToolbar_Minimize;
-	public static String StandardSystemToolbar_Maximize;
-	public static String StandardSystemToolbar_Restore;
-
-	public static String EditorArea_Tooltip;
-	public static String ViewPane_fastView;
-	public static String ViewPane_minimizeView;
-	public static String ViewPane_moveView;
-	public static String ViewPane_moveFolder;
-
-	public static String EditorPane_moveEditor;
-
-	public static String ViewLabel_unknown;
-
-	public static String ViewFactory_initException;
-	public static String ViewFactory_siteException;
-	public static String ViewFactory_couldNotCreate;
-	public static String ViewFactory_noMultiple;
-	public static String ViewFactory_couldNotSave;
-	// ==============================================================================
-	// Workbench
-	// ==============================================================================
-	public static String Startup_Loading;
-	public static String Startup_Loading_Workbench;
-	public static String Startup_Done;
-
-	public static String WorkbenchPage_UnknownLabel;
-
-	public static String WorkbenchPage_editorAlreadyOpenedMsg;
-
-	// These four keys are marked as unused by the NLS search, but they are indirectly used
-	// and should be removed.
-	public static String PartPane_sizeLeft;
-	public static String PartPane_sizeRight;
-	public static String PartPane_sizeTop;
-	public static String PartPane_sizeBottom;
-
-	public static String PartPane_detach;
-	public static String PartPane_restore;
-	public static String PartPane_move;
-	public static String PartPane_size;
-	public static String PartPane_maximize;
-	public static String PartPane_close;
-	public static String PartPane_closeOthers;
-	public static String PartPane_closeAll;
-	public static String PartPane_newEditor;
-	public static String PluginAction_operationNotAvailableMessage;
-	public static String PluginAction_disabledMessage;
-	public static String ActionDescriptor_invalidLabel;
-
-	public static String XMLMemento_parserConfigError;
-	public static String XMLMemento_ioError;
-	public static String XMLMemento_formatError;
-	public static String XMLMemento_noElement;
-
-	// --- Workbench Errors/Problems ---
-	public static String WorkbenchWindow_exceptionMessage;
-	public static String WorkbenchPage_AbnormalWorkbenchCondition;
-	public static String WorkbenchPage_IllegalSecondaryId;
-	public static String WorkbenchPage_IllegalViewMode;
-	public static String WorkbenchPart_AutoTitleFormat;
-	public static String EditorPart_AutoTitleFormat;
-	public static String Abnormal_Workbench_Conditi;
-
-
-	public static String AbstractWorkingSetManager_updatersActivating;
-	public static String WorkbenchPage_ErrorActivatingView;
-	public static String DecoratorManager_ErrorActivatingDecorator;
-
-	public static String EditorRegistry_errorTitle;
-	public static String EditorRegistry_errorMessage;
-
-	public static String ErrorClosing;
-	public static String ErrorClosingNoArg;
-	public static String ErrorClosingOneArg;
-	public static String ErrorReadingState;
-
-	public static String Invalid_workbench_state_ve;
-	public static String Workbench_incompatibleUIState;
-	public static String Workbench_incompatibleSavedStateVersion;
-	public static String ProblemSavingState;
-	public static String SavingProblem;
-
-	public static String Problems_Opening_Page;
-	public static String Restoring_Problems;
-
-	public static String Workspace_problemsTitle;
-
-	public static String Workbench_problemsRestoringMsg;
-	public static String Workbench_problemsSavingMsg;
-	public static String Workbench_problemsRestoring;
-	public static String Workbench_problemsSaving;
-	public static String WorkbenchWindow_problemsRestoringWindow;
-	public static String WorkbenchWindow_problemsSavingWindow;
-	public static String EditorManager_problemsRestoringEditors;
-	public static String EditorManager_problemsSavingEditors;
-	public static String RootLayoutContainer_problemsRestoringPerspective;
-	public static String RootLayoutContainer_problemsSavingPerspective;
-	public static String ViewFactory_problemsSavingViews;
-
-	public static String EditorManager_unableToSaveEditor;
-	public static String Perspective_problemsRestoringPerspective;
-	public static String Perspective_problemsSavingPerspective;
-	public static String Perspective_problemsRestoringViews;
-	public static String WorkbenchWindow_unableToRestorePerspective;
-	public static String WorkbenchPage_unableToRestorePerspective;
-	public static String WorkbenchPage_unableToSavePerspective;
-	public static String Perspective_unableToRestorePerspective;
-	public static String PageLayout_missingRefPart;
-	public static String PageLayout_duplicateRefPart;
-	public static String PartStack_incorrectPartInFolder;
-
-
-	// ==============================================================================
-	// Keys used in the reuse editor which is released as experimental.
-	// ==============================================================================
-	public static String EditorManager_openNewEditorLabel;
-	public static String EditorManager_reuseEditorDialogTitle;
-	public static String PinEditorAction_text;
-	public static String PinEditorAction_toolTip;
-	public static String WorkbenchPreference_reuseEditors;
-	public static String WorkbenchPreference_reuseDirtyEditorGroupTitle;
-	public static String WorkbenchPreference_promptToReuseEditor;
-	public static String WorkbenchPreference_openNewEditor;
-	public static String WorkbenchPreference_reuseEditorsThreshold;
-	public static String WorkbenchPreference_reuseEditorsThresholdError;
-	public static String WorkbenchPreference_recentFiles;
-	public static String WorkbenchPreference_recentFilesError;
-	public static String WorkbenchEditorsAction_label;
-	public static String WorkbookEditorsAction_label;
-
-	public static String WorkbenchEditorsDialog_title;
-	public static String WorkbenchEditorsDialog_label;
-	public static String WorkbenchEditorsDialog_closeSelected;
-	public static String WorkbenchEditorsDialog_saveSelected;
-	public static String WorkbenchEditorsDialog_selectClean;
-	public static String WorkbenchEditorsDialog_invertSelection;
-	public static String WorkbenchEditorsDialog_allSelection;
-	public static String WorkbenchEditorsDialog_showAllPersp;
-	public static String WorkbenchEditorsDialog_name;
-	public static String WorkbenchEditorsDialog_path;
-	public static String WorkbenchEditorsDialog_activate;
-	public static String WorkbenchEditorsDialog_close;
-
-	public static String ShowPartPaneMenuAction_text;
-	public static String ShowPartPaneMenuAction_toolTip;
-	public static String ShowViewMenuAction_text;
-	public static String ShowViewMenuAction_toolTip;
-	public static String QuickAccessAction_text;
-	public static String QuickAccessAction_toolTip;
-
-	public static String ToggleCoolbarVisibilityAction_show_text;
-	public static String ToggleCoolbarVisibilityAction_hide_text;
-	public static String ToggleCoolbarVisibilityAction_toolTip;
-	
-
-	// ==============================================================================
-	// Working Set Framework.
-	// ==============================================================================
-	public static String ProblemSavingWorkingSetState_message;
-	public static String ProblemSavingWorkingSetState_title;
-	public static String ProblemRestoringWorkingSetState_message;
-
-	public static String ProblemRestoringWorkingSetState_title;
-
-	public static String WorkingSetEditWizard_title;
-	public static String WorkingSetNewWizard_title;
-
-	public static String WorkingSetTypePage_description;
-	public static String WorkingSetTypePage_typesLabel;
-
-	public static String WorkingSetSelectionDialog_title;
-	public static String WorkingSetSelectionDialog_title_multiSelect;
-	public static String WorkingSetSelectionDialog_message;
-	public static String WorkingSetSelectionDialog_message_multiSelect;
-	public static String WorkingSetSelectionDialog_detailsButton_label;
-	public static String WorkingSetSelectionDialog_newButton_label;
-	public static String WorkingSetSelectionDialog_removeButton_label;
-	
-	public static String WorkbenchPage_workingSet_default_label;
-	public static String WorkbenchPage_workingSet_multi_label;
-
-	// =================================================================
-	// System Summary
-	// =================================================================
-	public static String SystemSummary_title;
-	public static String SystemSummary_timeStamp;
-	public static String SystemSummary_systemProperties;
-	public static String SystemSummary_features;
-	public static String SystemSummary_pluginRegistry;
-	public static String SystemSummary_userPreferences;
-	public static String SystemSummary_sectionTitle;
-	public static String SystemSummary_sectionError;
-
-	// paramter 0 is the feature name, parameter 1 is the version and parameter 2 is the Id
-	public static String SystemSummary_featureVersion;
-	public static String SystemMenuMovePane_PaneName;
-
-	public static String SystemSummary_descriptorIdVersionState;
-
-	// =================================================================
-	// Editor List
-	// =================================================================
-	public static String EditorList_saveSelected_text;
-	public static String EditorList_saveSelected_toolTip;
-	public static String EditorList_closeSelected_text;
-	public static String EditorList_closeSelected_toolTip;
-
-	public static String EditorList_selectClean_text;
-	public static String EditorList_selectClean_toolTip;
-	public static String EditorList_invertSelection_text;
-	public static String EditorList_invertSelection_toolTip;
-	public static String EditorList_selectAll_text;
-	public static String EditorList_selectAll_toolTip;
-
-	public static String EditorList_FullName_text;
-	public static String EditorList_FullName_toolTip;
-
-	public static String EditorList_SortBy_text;
-	public static String EditorList_SortByName_text;
-	public static String EditorList_SortByName_toolTip;
-	public static String EditorList_SortByMostRecentlyUsed_text;
-	public static String EditorList_SortByMostRecentlyUsed_toolTip;
-
-	public static String EditorList_ApplyTo_text;
-	public static String EditorList_DisplayAllWindows_text;
-	public static String EditorList_DisplayAllWindows_toolTip;
-	public static String EditorList_DisplayAllPage_text;
-	public static String EditorList_DisplayAllPage_toolTip;
-	public static String EditorList_DisplayTabGroup_text;
-	public static String EditorList_DisplayTabGroup_toolTip;
-	public static String DecorationScheduler_UpdateJobName;
-	public static String DecorationScheduler_CalculationJobName;
-	public static String DecorationScheduler_UpdatingTask;
-	public static String DecorationScheduler_CalculatingTask;
-	public static String DecorationScheduler_ClearResultsJob;
-	public static String DecorationScheduler_DecoratingSubtask;
-
-	public static String PerspectiveBar_showText;
-	public static String PerspectiveBar_customize;
-	public static String PerspectiveBar_saveAs;
-	public static String PerspectiveBar_reset;
-
-	public static String PerspectiveSwitcher_dockOn;
-	public static String PerspectiveSwitcher_topRight;
-	public static String PerspectiveSwitcher_topLeft;
-	public static String PerspectiveSwitcher_left;
-
-
-	public static String FastViewBar_view_orientation;
-	public static String FastViewBar_horizontal;
-	public static String FastViewBar_vertical;
-	public static String FastViewBar_0;
-
-	public static String WorkbenchPlugin_extension;
-
-	public static String EventLoopProgressMonitor_OpenDialogJobName;
-	public static String DecorationReference_EmptyReference;
-	public static String RectangleAnimation_Animating_Rectangle;
-	public static String FilteredList_UpdateJobName;
-	public static String FilteredTree_ClearToolTip;
-	public static String FilteredTree_FilterMessage;
-	public static String FilteredTree_FilteredDialogTitle;
-	public static String FilteredTree_AccessibleListenerFiltered;
-	public static String Workbench_restoreDisabled;
-	public static String Workbench_noStateToRestore;
-	public static String Workbench_noWindowsRestored;
-	public static String Workbench_startingPlugins;
-	public static String ScopedPreferenceStore_DefaultAddedError;
-
-	public static String WorkbenchEncoding_invalidCharset;
-
-	public static String Dynamic_resetPerspectiveMessage;
-	public static String Dynamic_resetPerspectiveTitle;
-
-	//==============================================================
-	// Undo/Redo Support
-	
-	public static String Operations_undoCommand;
-	public static String Operations_redoCommand;
-	public static String Operations_undoTooltipCommand;
-	public static String Operations_redoTooltipCommand;
-	public static String Operations_undoRedoCommandDisabled;
-	public static String Operations_undoProblem;
-	public static String Operations_redoProblem;
-	public static String Operations_executeProblem;
-	public static String Operations_undoInfo;
-	public static String Operations_redoInfo;
-	public static String Operations_executeInfo;
-	public static String Operations_undoWarning;
-	public static String Operations_redoWarning;
-	public static String Operations_executeWarning;
-	public static String Operations_linearUndoViolation;
-	public static String Operations_linearRedoViolation;
-	public static String Operations_nonLocalUndoWarning;
-	public static String Operations_nonLocalRedoWarning;
-	public static String Operations_discardUndo;
-	public static String Operations_discardRedo;
-	public static String Operations_proceedWithNonOKExecuteStatus;
-	public static String Operations_proceedWithNonOKUndoStatus;
-	public static String Operations_proceedWithNonOKRedoStatus;
-	public static String Operations_stoppedOnExecuteErrorStatus;
-	public static String Operations_stoppedOnUndoErrorStatus;
-	public static String Operations_stoppedOnRedoErrorStatus;
-
-	//==============================================================
-	// Heap Status
-
-	public static String HeapStatus_status;
-	public static String HeapStatus_widthStr;
-	public static String HeapStatus_memoryToolTip;
-	public static String HeapStatus_meg;
-	public static String HeapStatus_maxUnknown;
-	public static String HeapStatus_noMark;
-	public static String HeapStatus_buttonToolTip;
-	public static String SetMarkAction_text;
-	public static String ClearMarkAction_text;
-	public static String ShowMaxAction_text;
-//	public static String ShowKyrsoftViewAction_text;
-//	public static String ShowKyrsoftViewAction_KyrsoftNotInstalled;
-//	public static String ShowKyrsoftViewAction_OpenPerspectiveFirst;
-//	public static String ShowKyrsoftViewAction_ErrorShowingKyrsoftView;
-
-
-    // ==============================================================================
-    // Content Types preference page
-    // ==============================================================================
-    
-    public static String ContentTypes_lockedFormat;
-    public static String ContentTypes_characterSetLabel;
-    public static String ContentTypes_characterSetUpdateLabel;
-    public static String ContentTypes_fileAssociationsLabel;
-    public static String ContentTypes_fileAssociationsAddLabel;
-    public static String ContentTypes_fileAssociationsEditLabel;
-    public static String ContentTypes_fileAssociationsRemoveLabel;
-    public static String ContentTypes_contentTypesLabel;
-    public static String ContentTypes_errorDialogMessage;
-    public static String ContentTypes_FileEditorsRelatedLink;
-    public static String ContentTypes_addDialog_title;
-    public static String ContentTypes_addDialog_messageHeader;
-    public static String ContentTypes_addDialog_message;
-    public static String ContentTypes_addDialog_label;
-    public static String ContentTypes_editDialog_title;
-    public static String ContentTypes_editDialog_messageHeader;
-    public static String ContentTypes_editDialog_message;
-    public static String ContentTypes_editDialog_label;
-    public static String Edit;
-
-    // =========================================================================
-    // Deprecated actions support
-    // =========================================================================
-    public static String CommandService_AutogeneratedCategoryName;
-    public static String CommandService_AutogeneratedCategoryDescription;
-    public static String LegacyActionPersistence_AutogeneratedCommandName;
-	
-    // ==============================================================================
-    // Trim Common UI
-    // ==============================================================================
-    
-    // Trim Menu item labels
-    public static String TrimCommon_DockOn;
-    public static String TrimCommon_Left;
-    public static String TrimCommon_Right;
-    public static String TrimCommon_Bottom;
-    public static String TrimCommon_Top;
-    public static String TrimCommon_Close;
-
-    // Trim area Display Names
-    public static String TrimCommon_Main_TrimName;
-    public static String TrimCommon_PerspectiveSwitcher_TrimName;
-    public static String TrimCommon_FastView_TrimName;
-    public static String TrimCommon_HeapStatus_TrimName;
-    public static String TrimCommon_IntroBar_TrimName;
-    public static String TrimCommon_Progress_TrimName;
-    public static String TrimCommon_StatusLine_TrimName;
-		
-    // FilteredItemsSelectionDialog
-    public static String FilteredItemsSelectionDialog_cacheSearchJob_taskName;
-    public static String FilteredItemsSelectionDialog_menu;
-	public static String FilteredItemsSelectionDialog_refreshJob;
-	public static String FilteredItemsSelectionDialog_progressRefreshJob;
-	public static String FilteredItemsSelectionDialog_cacheRefreshJob;
-	public static String FilteredItemsSelectionDialog_cacheRefreshJob_checkDuplicates;
-	public static String FilteredItemsSelectionDialog_cacheRefreshJob_getFilteredElements;
-	public static String FilteredItemsSelectionDialog_patternLabel;
-	public static String FilteredItemsSelectionDialog_listLabel;
-	public static String FilteredItemsSelectionDialog_toggleStatusAction;
-	public static String FilteredItemsSelectionDialog_removeItemsFromHistoryAction;
-	public static String FilteredItemsSelectionDialog_searchJob_taskName;
-	public static String FilteredItemsSelectionDialog_separatorLabel;
-    public static String FilteredItemsSelectionDialog_storeError;
-    public static String FilteredItemsSelectionDialog_restoreError;
-    public static String FilteredItemsSelectionDialog_nItemsSelected;
-	
-    // AbstractSearcher
-    public static String FilteredItemsSelectionDialog_jobLabel; 
-    public static String FilteredItemsSelectionDialog_jobError;
-    public static String FilteredItemsSelectionDialog_jobCancel;
-    
-    // GranualProgressMonitor
-    public static String FilteredItemsSelectionDialog_taskProgressMessage;
-    public static String FilteredItemsSelectionDialog_subtaskProgressMessage;
-    	
-    static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, WorkbenchMessages.class);
-	}
-
-
-    public static String FastViewBar_show_view;
-    
-    // Content assist support
-    public static String ContentAssist_Cue_Description_Key;
-	
-	//Settings transfer
-	public static String WorkbenchLayoutSettings_Name;
-	public static String WorkbenchSettings_CouldNotCreateDirectories;
-	public static String WorkbenchSettings_CouldNotFindLocation;
-	public static String WorkingSets_Name;
-	public static String WorkingSets_CannotSave;
-
-	// StatusDialog
-	public static String WorkbenchStatusDialog_ActionLabel;
-	public static String WorkbenchStatusDialog_CopyThisReport;
-	public static String WorkbenchStatusDialog_ExplanationLabel;
-	public static String WorkbenchStatusDialog_NotAvailable;
-	public static String WorkbenchStatusDialog_Support;
-	public static String WorkbenchStatusDialog_StatusLabel;
-	public static String WorkbenchStatusDialog_TimestampNotAvailable;
-	public static String WorkbenchStatusDialog_StatusWithChildren;
-	public static String WorkbenchStatusDialog_NoMessageAvailable;
-	public static String WorkbenchStatusDialog_SeeDetails;
-	public static String WorkbenchStatusDialog_MultipleProblemsHaveOccured;
-	public static String WorkbenchStatusDialog_ProblemOccurred;
-	public static String WorkbenchStatusDialog_ProblemOccurredInJob;
-	
-	public static String StackTraceSupportArea_NoStackTrace;
-	public static String StackTraceSupportArea_CausedBy;
-	public static String StackTraceSupportArea_Title;
-	
-	// WorkingSetConfigurationBlock
-	public static String WorkingSetConfigurationBlock_SelectWorkingSet_button;
-	public static String WorkingSetConfigurationBlock_WorkingSetText_name;
-	
-	public static String WorkingSetPropertyPage_ReadOnlyWorkingSet_description;
-	public static String WorkingSetPropertyPage_ReadOnlyWorkingSet_title;
-	
-	public static String WorkingSetGroup_WorkingSets_group;
-	public static String WorkingSetGroup_WorkingSetSelection_message;
-	public static String WorkingSetGroup_EnableWorkingSet_button;
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
deleted file mode 100644
index b37d8bb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
+++ /dev/null
@@ -1,5026 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Rectangle;
-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.ui.IActionBars;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.INavigationHistory;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.IReusableEditor;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IShowEditorInput;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.contexts.ContextAuthority;
-import org.eclipse.ui.internal.dialogs.CustomizePerspectiveDialog;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.misc.UIListenerLogging;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
-import org.eclipse.ui.internal.registry.UIExtensionTracker;
-import org.eclipse.ui.internal.tweaklets.WorkbenchImplementation;
-import org.eclipse.ui.internal.tweaklets.GrabFocus;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.part.MultiEditor;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * A collection of views and editors in a workbench.
- */
-public class WorkbenchPage extends CompatibleWorkbenchPage implements
-        IWorkbenchPage {
-	
-	private static final String ATT_AGGREGATE_WORKING_SET_ID = "aggregateWorkingSetId"; //$NON-NLS-1$
-	
-    protected WorkbenchWindow window;
-
-    private IAdaptable input;
-
-    private IWorkingSet workingSet;
-    
-    private AggregateWorkingSet aggregateWorkingSet;
-
-    private Composite composite;
-    
-    //Could be delete. This information is in the active part list;
-    private ActivationList activationList = new ActivationList();
-
-    private EditorManager editorMgr;
-
-    private EditorAreaHelper editorPresentation;
-
-    private ListenerList propertyChangeListeners = new ListenerList();
-
-    private PageSelectionService selectionService = new PageSelectionService(
-            this);
-
-    private WorkbenchPagePartList partList = new WorkbenchPagePartList(selectionService);
-
-    private IActionBars actionBars;
-    
-    private ActionSetManager actionSets;
-    
-    private ViewFactory viewFactory;
-
-    private PerspectiveList perspList = new PerspectiveList();
-
-    private PerspectiveDescriptor deferredActivePersp;
-
-    private NavigationHistory navigationHistory = new NavigationHistory(this);
-    
-    private IStickyViewManager stickyViewMan = StickyViewManager.getInstance(this);
-
-    /**
-     * If we're in the process of activating a part, this points to the new part.
-     * Otherwise, this is null.
-     */
-    private IWorkbenchPartReference partBeingActivated = null;
-    
-    /**
-     * If a part is being opened, don't allow a forceFocus() to request
-     * its activation as well.
-     * @since 3.4
-     */
-    private boolean partBeingOpened = false;
-    
-    /**
-     * Contains a list of perspectives that may be dirty due to plugin 
-     * installation and removal. 
-     */
-    private Set dirtyPerspectives = new HashSet();
-    
-    private IPropertyChangeListener workingSetPropertyChangeListener = new IPropertyChangeListener() {
-        /*
-         * Remove the working set from the page if the working set is deleted.
-         */
-        public void propertyChange(PropertyChangeEvent event) {
-            String property = event.getProperty();
-            if (IWorkingSetManager.CHANGE_WORKING_SET_REMOVE.equals(property)) {
-            		if(event.getOldValue().equals(workingSet)) {
-						setWorkingSet(null);
-					}
-            		
-            		// room for optimization here
-            		List newList = new ArrayList(Arrays.asList(workingSets));
-            		if (newList.remove(event.getOldValue())) {
-						setWorkingSets((IWorkingSet []) newList
-								.toArray(new IWorkingSet [newList.size()]));
-					}
-            }
-        }
-    };
-
-    private ActionSwitcher actionSwitcher = new ActionSwitcher();
-
-	private IExtensionTracker tracker;
-    
-    // Deferral count... delays disposing parts and sending certain events if nonzero
-    private int deferCount = 0;
-    // Parts waiting to be disposed
-    private List pendingDisposals = new ArrayList();
-    
-	private IExtensionChangeHandler perspectiveChangeHandler = new IExtensionChangeHandler() {
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-		 */
-		public void removeExtension(IExtension extension, Object[] objects) {
-			boolean suggestReset = false;
-			for (int i = 0; i < objects.length; i++) {
-				if (objects[i] instanceof DirtyPerspectiveMarker) {
-					String id = ((DirtyPerspectiveMarker)objects[i]).perspectiveId;
-					if (!dirtyPerspectives.remove(id)) {
-						dirtyPerspectives.add(id); // otherwise we will be dirty
-					}
-					PerspectiveDescriptor persp = (PerspectiveDescriptor) getPerspective();
-					if (persp == null || persp.hasCustomDefinition()) {
-						continue;
-					}
-					if (persp.getId().equals(id)) {
-						suggestReset = true;
-					}
-				}
-			}
-			if (suggestReset) {
-				suggestReset();
-			}
-		}
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-         */
-        public void addExtension(IExtensionTracker tracker, IExtension extension) {
-            if (WorkbenchPage.this != getWorkbenchWindow().getActivePage()) {
-				return;
-			}
-            
-            // Get the current perspective.
-            PerspectiveDescriptor persp = (PerspectiveDescriptor) getPerspective();
-            if (persp == null) {
-				return;
-			}
-            String currentId = persp.getId();
-            IConfigurationElement[] elements = extension.getConfigurationElements();
-            boolean suggestReset = false;
-            for (int i = 0; i < elements.length; i++) {
-                // If any of these refer to the current perspective, output
-                // a message saying this perspective will need to be reset
-                // in order to see the changes.  For any other case, the
-                // perspective extension registry will be rebuilt anyway so
-                // just ignore it.
-                String id = elements[i].getAttribute(IWorkbenchRegistryConstants.ATT_TARGET_ID);
-                if (id == null) {
-					continue;
-				}
-                if (id.equals(currentId) && !persp.hasCustomDefinition()) {
-                    suggestReset = true;
-                }
-                else {
-                    dirtyPerspectives.add(id);
-                }
-                DirtyPerspectiveMarker marker = new DirtyPerspectiveMarker(id);
-                tracker.registerObject(extension, marker, IExtensionTracker.REF_STRONG);
-            }
-            if (suggestReset) {
-				suggestReset();
-			}
-
-        }
-	};
-	private IWorkingSet[] workingSets = new IWorkingSet[0];
-	private String aggregateWorkingSetId;
-
-	private IExtensionPoint getPerspectiveExtensionPoint() {
-		return Platform.getExtensionRegistry().getExtensionPoint(PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_PERSPECTIVE_EXTENSIONS);
-	}
-
-    /**
-     * Manages editor contributions and action set part associations.
-     */
-    private class ActionSwitcher {
-        private IWorkbenchPart activePart;
-
-        private IEditorPart topEditor;
-
-        private ArrayList oldActionSets = new ArrayList();
-
-        /**
-         * Updates the contributions given the new part as the active part.
-         * 
-         * @param newPart
-         *            the new active part, may be <code>null</code>
-         */
-        public void updateActivePart(IWorkbenchPart newPart) {
-            if (activePart == newPart) {
-				return;
-			}
-
-            boolean isNewPartAnEditor = newPart instanceof IEditorPart;
-            if (isNewPartAnEditor) {
-                String oldId = null;
-                if (topEditor != null) {
-					oldId = topEditor.getSite().getId();
-				}
-                String newId = newPart.getSite().getId();
-
-                // if the active part is an editor and the new editor
-                // is the same kind of editor, then we don't have to do
-                // anything
-                if (activePart == topEditor && newId.equals(oldId)) {
-                	activePart = newPart;
-                	topEditor = (IEditorPart) newPart;
-                    return;
-                }
-
-                // remove the contributions of the old editor
-                // if it is a different kind of editor
-                if (oldId != null && !oldId.equals(newId)) {
-					deactivateContributions(topEditor, true);
-				}
-
-                // if a view was the active part, disable its contributions
-                if (activePart != null && activePart != topEditor) {
-					deactivateContributions(activePart, true);
-				}
-
-                // show (and enable) the contributions of the new editor
-                // if it is a different kind of editor or if the
-                // old active part was a view
-                if (!newId.equals(oldId) || activePart != topEditor) {
-					activateContributions(newPart, true);
-				}
-
-            } else if (newPart == null) {
-                if (activePart != null) {
-					// remove all contributions
-                    deactivateContributions(activePart, true);
-				}
-            } else {
-                // new part is a view
-
-                // if old active part is a view, remove all contributions,
-                // but if old part is an editor only disable
-                if (activePart != null) {
-					deactivateContributions(activePart,
-                            activePart instanceof IViewPart);
-				}
-
-                activateContributions(newPart, true);
-            }
-
-            ArrayList newActionSets = null;
-            if (isNewPartAnEditor
-                    || (activePart == topEditor && newPart == null)) {
-				newActionSets = calculateActionSets(newPart, null);
-			} else {
-				newActionSets = calculateActionSets(newPart, topEditor);
-			}
-
-            if (!updateActionSets(newActionSets)) {
-				updateActionBars();
-			}
-
-            if (isNewPartAnEditor) {
-                topEditor = (IEditorPart) newPart;
-            } else if (activePart == topEditor && newPart == null) {
-                // since we removed all the contributions, we clear the top
-                // editor
-                topEditor = null;
-            }
-
-            activePart = newPart;
-        }
-
-        /**
-         * Updates the contributions given the new part as the topEditor.
-         * 
-         * @param newEditor
-         *            the new top editor, may be <code>null</code>
-         */
-        public void updateTopEditor(IEditorPart newEditor) {
-            if (topEditor == newEditor) {
-				return;
-			}
-
-            if (activePart == topEditor) {
-            	updateActivePart(newEditor);
-            	return;
-            }
-            
-            String oldId = null;
-            if (topEditor != null) {
-				oldId = topEditor.getSite().getId();
-			}
-            String newId = null;
-            if (newEditor != null) {
-				newId = newEditor.getSite().getId();
-			}
-            if (oldId == null ? newId == null : oldId.equals(newId)) {
-                // we don't have to change anything
-                topEditor = newEditor;
-                return;
-            }
-
-            // Remove the contributions of the old editor
-            if (topEditor != null) {
-				deactivateContributions(topEditor, true);
-			}
-
-            // Show (disabled) the contributions of the new editor
-            if (newEditor != null) {
-				activateContributions(newEditor, false);
-			}
-
-            ArrayList newActionSets = calculateActionSets(activePart, newEditor);
-            if (!updateActionSets(newActionSets)) {
-				updateActionBars();
-			}
-
-            topEditor = newEditor;
-        }
-
-        /**
-         * Activates the contributions of the given part. If <code>enable</code>
-         * is <code>true</code> the contributions are visible and enabled,
-         * otherwise they are disabled.
-         * 
-         * @param part
-         *            the part whose contributions are to be activated
-         * @param enable
-         *            <code>true</code> the contributions are to be enabled,
-         *            not just visible.
-         */
-        private void activateContributions(IWorkbenchPart part, boolean enable) {
-            PartSite site = (PartSite) part.getSite();
-            site.activateActionBars(enable);
-        }
-
-        /**
-         * Deactivates the contributions of the given part. If <code>remove</code>
-         * is <code>true</code> the contributions are removed, otherwise they
-         * are disabled.
-         * 
-         * @param part
-         *            the part whose contributions are to be deactivated
-         * @param remove
-         *            <code>true</code> the contributions are to be removed,
-         *            not just disabled.
-         */
-        private void deactivateContributions(IWorkbenchPart part, boolean remove) {
-            PartSite site = (PartSite) part.getSite();
-            site.deactivateActionBars(remove);
-        }
-
-        /**
-         * Calculates the action sets to show for the given part and editor
-         * 
-         * @param part
-         *            the active part, may be <code>null</code>
-         * @param editor
-         *            the current editor, may be <code>null</code>, may be
-         *            the active part
-         * @return the new action sets
-         */
-        private ArrayList calculateActionSets(IWorkbenchPart part,
-                IEditorPart editor) {
-            ArrayList newActionSets = new ArrayList();
-            if (part != null) {
-                IActionSetDescriptor[] partActionSets = WorkbenchPlugin
-                        .getDefault().getActionSetRegistry().getActionSetsFor(
-                                part.getSite().getId());
-                for (int i = 0; i < partActionSets.length; i++) {
-                    newActionSets.add(partActionSets[i]);
-                }
-            }
-            if (editor != null && editor != part) {
-                IActionSetDescriptor[] editorActionSets = WorkbenchPlugin
-                        .getDefault().getActionSetRegistry().getActionSetsFor(
-                                editor.getSite().getId());
-                for (int i = 0; i < editorActionSets.length; i++) {
-                    newActionSets.add(editorActionSets[i]);
-                }
-            }
-            return newActionSets;
-        }
-
-        /**
-         * Updates the actions we are showing for the active part and current
-         * editor.
-         * 
-         * @param newActionSets
-         *            the action sets to show
-         * @return <code>true</code> if the action sets changed
-         */
-        private boolean updateActionSets(ArrayList newActionSets) {
-			if (oldActionSets.equals(newActionSets)) {
-				return false;
-			}
-
-			IContextService service = (IContextService) window
-					.getService(IContextService.class);
-			try {
-				service.activateContext(ContextAuthority.DEFER_EVENTS);
-
-				// show the new
-				for (int i = 0; i < newActionSets.size(); i++) {
-					actionSets.showAction((IActionSetDescriptor) newActionSets
-							.get(i));
-				}
-
-				// hide the old
-				for (int i = 0; i < oldActionSets.size(); i++) {
-					actionSets.hideAction((IActionSetDescriptor) oldActionSets
-							.get(i));
-				}
-
-				oldActionSets = newActionSets;
-
-			} finally {
-				service.activateContext(ContextAuthority.SEND_EVENTS);
-			}
-			Perspective persp = getActivePerspective();
-			if (persp == null) {
-				return false;
-			}
-
-			window.updateActionSets(); // this calls updateActionBars
-			window.firePerspectiveChanged(WorkbenchPage.this, getPerspective(),
-					CHANGE_ACTION_SET_SHOW);
-			return true;
-		}
-
-    }
-
-    /**
-	 * Constructs a new page with a given perspective and input.
-	 * 
-	 * @param w
-	 *            the parent window
-	 * @param layoutID
-	 *            must not be <code>null</code>
-	 * @param input
-	 *            the page input
-	 * @throws WorkbenchException
-	 *             on null layout id
-	 */
-    public WorkbenchPage(WorkbenchWindow w, String layoutID, IAdaptable input)
-            throws WorkbenchException {
-        super();
-        if (layoutID == null) {
-			throw new WorkbenchException(WorkbenchMessages.WorkbenchPage_UndefinedPerspective);
-		}
-        init(w, layoutID, input, true);
-    }
-
-    /**
-     * Constructs a page. <code>restoreState(IMemento)</code> should be
-     * called to restore this page from data stored in a persistance file.
-     * 
-     * @param w
-     *            the parent window
-     * @param input
-     *            the page input
-     * @throws WorkbenchException 
-     */
-    public WorkbenchPage(WorkbenchWindow w, IAdaptable input)
-            throws WorkbenchException {
-        super();
-        init(w, null, input, false);
-    }
-
-    /**
-     * Activates a part. The part will be brought to the front and given focus.
-     * 
-     * @param part
-     *            the part to activate
-     */
-    public void activate(IWorkbenchPart part) {
-        // Sanity check.
-        if (!certifyPart(part)) {
-			return;
-		}
-
-        if (window.isClosing()) {
-			return;
-		}
-
-        if (composite!=null && composite.isVisible()
-        		&& !((GrabFocus)Tweaklets.get(GrabFocus.KEY)).grabFocusAllowed(part)) {
-        	return;
-        }
-        
-        // If zoomed, unzoom.
-        zoomOutIfNecessary(part);
-
-        if (part instanceof MultiEditor) {
-            part = ((MultiEditor) part).getActiveEditor();
-        }
-        // Activate part.
-        //if (window.getActivePage() == this) {
-        IWorkbenchPartReference ref = getReference(part);
-        internalBringToTop(ref);
-        setActivePart(part);
-    }
-
-    /**
-     * Activates a part. The part is given focus, the pane is hilighted.
-     */
-    private void activatePart(final IWorkbenchPart part) {
-        Platform.run(new SafeRunnable(WorkbenchMessages.WorkbenchPage_ErrorActivatingView) { 
-                    public void run() {
-                        if (part != null) {
-                            //part.setFocus();
-                            PartPane pane = getPane(part);
-                            pane.setFocus();
-                            PartSite site = (PartSite) part.getSite();
-                            pane.showFocus(true);
-                            updateTabList(part);
-                            SubActionBars bars = (SubActionBars) site
-                                    .getActionBars();
-                            bars.partChanged(part);
-                        }
-                    }
-                });
-    }
-
-    /**
-     * Add a fast view.
-     */
-    public void addFastView(IViewReference ref) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-        
-        persp.getFastViewManager().addViewReference(FastViewBar.FASTVIEWBAR_ID, -1, ref, true);
-    }
-    
-    /**
-     * Add a fast view.
-     */
-    public void makeFastView(IViewReference ref) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-
-        FastViewManager fvm = persp.getFastViewManager();
-        if (fvm.isFastView(ref)) {
-            return;
-        }
-        
-        // Do real work.
-        persp.makeFastView(ref);
-
-        updateActivePart();
-        
-        // The view is now invisible.
-        // If it is active then deactivate it.
-
-        // Notify listeners.
-        window.firePerspectiveChanged(this, getPerspective(), ref,
-                CHANGE_FAST_VIEW_ADD);
-        window.firePerspectiveChanged(this, getPerspective(),
-                CHANGE_FAST_VIEW_ADD);
-    }
-
-    /**
-     * Adds an IPartListener to the part service.
-     */
-    public void addPartListener(IPartListener l) {
-        partList.getPartService().addPartListener(l);
-    }
-
-    /**
-     * Adds an IPartListener to the part service.
-     */
-    public void addPartListener(IPartListener2 l) {
-        partList.getPartService().addPartListener(l);
-    }
-
-    /**
-     * Implements IWorkbenchPage
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#addPropertyChangeListener(IPropertyChangeListener)
-     * @since 2.0
-     * @deprecated individual views should store a working set if needed and
-     *             register a property change listener directly with the
-     *             working set manager to receive notification when the view
-     *             working set is removed.
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener) {
-        propertyChangeListeners.add(listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void addSelectionListener(ISelectionListener listener) {
-        selectionService.addSelectionListener(listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void addSelectionListener(String partId, ISelectionListener listener) {
-        selectionService.addSelectionListener(partId, listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void addPostSelectionListener(ISelectionListener listener) {
-        selectionService.addPostSelectionListener(listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void addPostSelectionListener(String partId,
-            ISelectionListener listener) {
-        selectionService.addPostSelectionListener(partId, listener);
-    }
-    
-    private ILayoutContainer getContainer(IWorkbenchPart part) {
-        PartPane pane = getPane(part);
-        if (pane == null) {
-            return null;
-        }
-        
-        return pane.getContainer();
-    }
-
-    private ILayoutContainer getContainer(IWorkbenchPartReference part) {
-        PartPane pane = getPane(part);
-        if (pane == null) {
-            return null;
-        }
-        
-        return pane.getContainer();
-    }
-    
-    private PartPane getPane(IWorkbenchPart part) {
-        if (part == null) {
-            return null;
-        }
-        return getPane(getReference(part));
-    }
-    
-    private PartPane getPane(IWorkbenchPartReference part) {
-        if (part == null) {
-            return null;
-        }
-        
-        return ((WorkbenchPartReference)part).getPane();
-    }
-
-    
-    /**
-     * Brings a part to the front of its stack. Does not update the active part or
-     * active editor. This should only be called if the caller knows that the part
-     * is not in the same stack as the active part or active editor, or if the caller
-     * is prepared to update activation after the call.
-     *
-     * @param part
-     */
-    private boolean internalBringToTop(IWorkbenchPartReference part) {
-
-        boolean broughtToTop = false;
-        
-        // Move part.
-        if (part instanceof IEditorReference) {
-            ILayoutContainer container = getContainer(part);
-            if (container instanceof PartStack) {
-                PartStack stack = (PartStack)container;
-                PartPane newPart = getPane(part);
-                if (stack.getSelection() != newPart) {
-                    stack.setSelection(newPart);
-                }
-                broughtToTop = true;
-            }
-        } else if (part instanceof IViewReference) {
-            Perspective persp = getActivePerspective();
-            if (persp != null) {
-                broughtToTop = persp.bringToTop((IViewReference)part);
-            }
-        }
-        
-        // Ensure that this part is considered the most recently activated part
-        // in this stack
-        activationList.bringToTop(part);
-        
-        return broughtToTop;
-    }
-
-    
-    /**
-     * Moves a part forward in the Z order of a perspective so it is visible.
-     * If the part is in the same stack as the active part, the new part is
-     * activated.
-     * 
-     * @param part
-     *            the part to bring to move forward
-     */
-    public void bringToTop(IWorkbenchPart part) {
-        // Sanity check.
-        Perspective persp = getActivePerspective();
-        if (persp == null || !certifyPart(part)) {
-			return;
-		}
-        
-        if (!((GrabFocus)Tweaklets.get(GrabFocus.KEY)).grabFocusAllowed(part)) {
-        	return;
-        }
-
-        String label = null; // debugging only
-        if (UIStats.isDebugging(UIStats.BRING_PART_TO_TOP)) {
-            label = part != null ? part.getTitle() : "none"; //$NON-NLS-1$
-        }
-        
-        try {
-            UIStats.start(UIStats.BRING_PART_TO_TOP, label);
-            
-            IWorkbenchPartReference ref = getReference(part);
-            ILayoutContainer activeEditorContainer = getContainer(getActiveEditor());
-            ILayoutContainer activePartContainer = getContainer(getActivePart());
-            ILayoutContainer newPartContainer = getContainer(part);
-            
-            if (newPartContainer == activePartContainer) {
-                makeActive(ref);
-            } else if (newPartContainer == activeEditorContainer) {
-                if (ref instanceof IEditorReference) {
-                	if (part!=null) {
-                    	IWorkbenchPartSite site = part.getSite();
-						if (site instanceof PartSite) {
-							ref = ((PartSite) site).getPane()
-									.getPartReference();
-						}
-                	}
-                    makeActiveEditor((IEditorReference)ref);
-                } else {
-                    makeActiveEditor(null);
-                }
-            } else {
-                internalBringToTop(ref);
-                if (ref != null) {
-                    partList.firePartBroughtToTop(ref);
-                }
-            }
-        } finally {
-            UIStats.end(UIStats.BRING_PART_TO_TOP, part, label);
-        }
-    }
-
-    /**
-     * Resets the layout for the perspective. The active part in the old layout
-     * is activated in the new layout for consistent user context.
-     * 
-     * Assumes the busy cursor is active.
-     */
-    private void busyResetPerspective() {
-
-        ViewIntroAdapterPart introViewAdapter = ((WorkbenchIntroManager) getWorkbenchWindow()
-                .getWorkbench().getIntroManager()).getViewIntroAdapterPart();
-        PartPane introPane = null;
-        boolean introFullScreen = false;
-        if (introViewAdapter != null) {
-            introPane = ((PartSite) introViewAdapter.getSite()).getPane();
-            introViewAdapter.setHandleZoomEvents(false);
-            introFullScreen = introPane.isZoomed();
-        }
-
-        //try to prevent intro flicker.
-        if (introFullScreen) {
-			window.getShell().setRedraw(false);
-		}
-
-        try {
-
-            // Always unzoom
-            if (isZoomed()) {
-				zoomOut();
-			}
-
-            // Get the current perspective.
-            // This describes the working layout of the page and differs from
-            // the original template.
-            Perspective oldPersp = getActivePerspective();
-
-            // Map the current perspective to the original template.
-            // If the original template cannot be found then it has been deleted.
-            // In that case just return. (PR#1GDSABU).
-            IPerspectiveRegistry reg = WorkbenchPlugin.getDefault()
-                    .getPerspectiveRegistry();
-            PerspectiveDescriptor desc = (PerspectiveDescriptor) reg
-                    .findPerspectiveWithId(oldPersp.getDesc().getId());
-            if (desc == null) {
-				desc = (PerspectiveDescriptor) reg
-                        .findPerspectiveWithId(((PerspectiveDescriptor) oldPersp
-                                .getDesc()).getOriginalId());
-			}
-            if (desc == null) {
-				return;
-			}
-
-            // Notify listeners that we are doing a reset.
-            window.firePerspectiveChanged(this, desc, CHANGE_RESET);
-
-            // Create new persp from original template.
-            // Suppress the perspectiveOpened and perspectiveClosed events otherwise it looks like two
-            // instances of the same perspective are open temporarily (see bug 127470).
-            Perspective newPersp = createPerspective(desc, false);
-            if (newPersp == null) {
-                // We're not going through with the reset, so it is complete.
-                window
-                        .firePerspectiveChanged(this, desc,
-                                CHANGE_RESET_COMPLETE);
-                return;
-            }
-
-            // Fix for Bug 232541 [ViewMgmt] Reset Perspective ignores saveable parts.
-            // Any view referenced from the old perspective with a ref count of
-            // one will be closed. The following code will prompt to save.
-            IViewReference[] oldRefs = oldPersp.getViewReferences();
-            List partsToClose = new ArrayList();
-            for (int i = 0; i < oldRefs.length; i++) {
-				IViewReference ref = oldRefs[i];
-		        int refCount = getViewFactory().getReferenceCount(ref);
-		        if (refCount == 1) {
-		        	IWorkbenchPart actualPart = ref.getPart(false);
-		        	if (actualPart != null) {
-		        		partsToClose.add(actualPart);
-					}
-		        }
-			}
-            SaveablesList saveablesList = null;
-            Object postCloseInfo = null;
-            if (partsToClose.size() > 0) {
-				saveablesList = (SaveablesList) getWorkbenchWindow()
-						.getService(ISaveablesLifecycleListener.class);
-				postCloseInfo = saveablesList.preCloseParts(
-						partsToClose, true, this.getWorkbenchWindow());
-				if (postCloseInfo == null) {
-					// cancel
-					// We're not going through with the reset, so it is
-					// complete.
-					window.firePerspectiveChanged(this, desc,
-							CHANGE_RESET_COMPLETE);
-					return;
-				}
-            }
-
-            // Update the perspective list and shortcut
-            perspList.swap(oldPersp, newPersp);
-
-            // Install new persp.
-            setPerspective(newPersp);
-
-            // Destroy old persp.
-            disposePerspective(oldPersp, false);
-
-            if (saveablesList != null) {
-            	saveablesList.postClose(postCloseInfo);
-            }
-
-            // Update the Coolbar layout.
-            resetToolBarLayout();
-
-            // restore the maximized intro
-            if (introViewAdapter != null) {
-                try {
-                    // ensure that the intro is visible in the new perspective
-                    showView(IIntroConstants.INTRO_VIEW_ID);
-                    if (introFullScreen) {
-						toggleZoom(introPane.getPartReference());
-					}
-                } catch (PartInitException e) {
-                    WorkbenchPlugin.log("Could not restore intro", //$NON-NLS-1$
-                            WorkbenchPlugin.getStatus(e));
-                } finally {
-                    // we want the intro back to a normal state before we fire the event
-                    introViewAdapter.setHandleZoomEvents(true);
-                }
-            }
-            // Notify listeners that we have completed our reset.
-            window.firePerspectiveChanged(this, desc, CHANGE_RESET_COMPLETE);
-        } finally {
-            // reset the handling of zoom events (possibly for the second time) in case there was 
-            // an exception thrown
-            if (introViewAdapter != null) {
-				introViewAdapter.setHandleZoomEvents(true);
-			}
-
-            if (introFullScreen) {
-				window.getShell().setRedraw(true);
-			}
-        }
-
-    }
-
-    /**
-     * Implements <code>setPerspective</code>.
-     * 
-     * Assumes that busy cursor is active.
-     * 
-     * @param desc
-     *            identifies the new perspective.
-     */
-    private void busySetPerspective(IPerspectiveDescriptor desc) {
-        // Create new layout.
-        String label = desc.getId(); // debugging only
-        Perspective newPersp = null;
-        try {
-            UIStats.start(UIStats.SWITCH_PERSPECTIVE, label);
-            PerspectiveDescriptor realDesc = (PerspectiveDescriptor) desc;
-            newPersp = findPerspective(realDesc);
-            if (newPersp == null) {
-                newPersp = createPerspective(realDesc, true);
-                if (newPersp == null) {
-					return;
-				}
-            }
-
-            // Change layout.
-            setPerspective(newPersp);
-        } finally {
-            UIStats.end(UIStats.SWITCH_PERSPECTIVE, desc.getId(), label);
-        }
-    }
-
-    /**
-     * Shows a view.
-     * 
-     * Assumes that a busy cursor is active.
-     */
-    protected IViewPart busyShowView(String viewID, String secondaryID, int mode)
-            throws PartInitException {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return null;
-		}
-
-        // If this view is already visible just return.
-        IViewReference ref = persp.findView(viewID, secondaryID);
-        IViewPart view = null;
-        if (ref != null) {
-			view = ref.getView(true);
-		}
-        if (view != null) {
-            busyShowView(view, mode);
-            return view;
-        }
-
-        // Show the view.
-        view = persp.showView(viewID, secondaryID);
-        if (view != null) {
-            busyShowView(view, mode);
-            
-            IWorkbenchPartReference partReference = getReference(view);
-            PartPane partPane = getPane(partReference);
-            partPane.setInLayout(true);
-
-            window.firePerspectiveChanged(this, getPerspective(),
-                    partReference, CHANGE_VIEW_SHOW);
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_VIEW_SHOW);
-        }
-        return view;
-    }
-
-    /*
-     * Performs showing of the view in the given mode.
-     */
-    private void busyShowView(IViewPart part, int mode) {
-        if (!((GrabFocus)Tweaklets.get(GrabFocus.KEY)).grabFocusAllowed(part)) {
-        	return;
-        }
-        if (mode == VIEW_ACTIVATE) {
-			activate(part);
-		} else if (mode == VIEW_VISIBLE) {
-            IWorkbenchPartReference ref = getActivePartReference();
-            // if there is no active part or it's not a view, bring to top
-            if (ref == null || !(ref instanceof IViewReference)) {
-				bringToTop(part);
-			} else {
-                // otherwise check to see if the we're in the same stack as the active view
-                IViewReference activeView = (IViewReference) ref;
-                IViewReference[] viewStack = getViewReferenceStack(part);
-                for (int i = 0; i < viewStack.length; i++) {
-                    if (viewStack[i].equals(activeView)) {
-						return;
-					}
-                }
-                bringToTop(part);
-            }
-        }
-    }
-
-    /**
-     * Returns whether a part exists in the current page.
-     */
-    private boolean certifyPart(IWorkbenchPart part) {
-        //Workaround for bug 22325
-        if (part != null && !(part.getSite() instanceof PartSite)) {
-			return false;
-		}
-
-        if (part instanceof IEditorPart) {
-            IEditorReference ref = (IEditorReference) getReference(part);
-            return ref != null && getEditorManager().containsEditor(ref);
-        }
-        if (part instanceof IViewPart) {
-            Perspective persp = getActivePerspective();
-            return persp != null && persp.containsView((IViewPart) part);
-        }
-        return false;
-    }
-
-    /**
-     * Closes the perspective.
-     */
-    public boolean close() {
-        final boolean[] ret = new boolean[1];
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-                ret[0] = window.closePage(WorkbenchPage.this, true);
-            }
-        });
-        return ret[0];
-    }
-
-    /**
-     * See IWorkbenchPage
-     */
-    public boolean closeAllSavedEditors() {
-        // get the Saved editors
-        IEditorReference editors[] = getEditorReferences();
-        IEditorReference savedEditors[] = new IEditorReference[editors.length];
-        int j = 0;
-        for (int i = 0; i < editors.length; i++) {
-            IEditorReference editor = editors[i];
-            if (!editor.isDirty()) {
-                savedEditors[j++] = editor;
-            }
-        }
-        //there are no unsaved editors
-        if (j == 0) {
-			return true;
-		}
-        IEditorReference[] newSaved = new IEditorReference[j];
-        System.arraycopy(savedEditors, 0, newSaved, 0, j);
-        return closeEditors(newSaved, false);
-    }
-
-    /**
-     * See IWorkbenchPage
-     */
-    public boolean closeAllEditors(boolean save) {
-        return closeEditors(getEditorReferences(), save);
-    }
-
-    private void updateActivePart() {
-        
-        if (isDeferred()) {
-            return;
-        }
-        
-        IWorkbenchPartReference oldActivePart = partList.getActivePartReference();
-        IWorkbenchPartReference oldActiveEditor = partList.getActiveEditorReference();
-        IWorkbenchPartReference newActivePart = null;
-        IEditorReference newActiveEditor = null;
-        
-        if (!window.isClosing()) {
-            // If an editor is active, try to keep an editor active
-            if (oldActivePart == oldActiveEditor) {
-                newActiveEditor = (IEditorReference)activationList.getActiveReference(true);
-                newActivePart = newActiveEditor;
-                if (newActivePart == null) {
-                    // Only activate a non-editor if there's no editors left
-                    newActivePart = activationList.getActiveReference(false);
-                }
-            } else {
-                // If a non-editor is active, activate whatever was activated most recently
-                newActivePart = activationList.getActiveReference(false);
-                
-                if (newActivePart instanceof IEditorReference) {
-                    // If that happens to be an editor, make it the active editor as well
-                    newActiveEditor = (IEditorReference)newActivePart;
-                } else {
-                    // Otherwise, select whatever editor was most recently active
-                    newActiveEditor = (IEditorReference)activationList.getActiveReference(true);
-                }   
-            }
-        }
-
-        if (newActiveEditor != oldActiveEditor) {
-            makeActiveEditor(newActiveEditor);
-        }
-        
-        if (newActivePart != oldActivePart) {
-            makeActive(newActivePart);
-        }
-    }
-    
-    /**
-     * Makes the given part active. Brings it in front if necessary. Permits null 
-     * (indicating that no part should be active).
-     * 
-     * @since 3.1 
-     *
-     * @param ref new active part (or null)
-     */
-    private void makeActive(IWorkbenchPartReference ref) {
-        if (ref == null) {
-            setActivePart(null);
-        } else {
-            IWorkbenchPart newActive = ref.getPart(true);
-            if (newActive == null) {
-                setActivePart(null);
-            } else {
-                activate(newActive);
-            }
-        }
-    }
-    
-    /**
-     * Makes the given editor active. Brings it to front if necessary. Permits <code>null</code> 
-     * (indicating that no editor is active).
-     * 
-     * @since 3.1 
-     *
-     * @param ref the editor to make active, or <code>null</code> for no active editor
-     */
-    private void makeActiveEditor(IEditorReference ref) {
-        if (ref == getActiveEditorReference()) {
-            return;
-        }
-        
-        IEditorPart part = (ref == null) ? null : ref.getEditor(true);
-        
-        if (part != null) {
-            editorMgr.setVisibleEditor(ref, false);
-            navigationHistory.markEditor(part);
-        }
-        
-        actionSwitcher.updateTopEditor(part);
-
-        if (ref != null) {
-            activationList.bringToTop(getReference(part));
-        }
-        
-        partList.setActiveEditor(ref);
-    }
-    
-    /**
-     * See IWorkbenchPage
-     */
-    public boolean closeEditors(IEditorReference[] refArray, boolean save) {
-        if (refArray.length == 0) {
-            return true;
-        }
-        
-        // Check if we're being asked to close any parts that are already closed or cannot
-        // be closed at this time
-        ArrayList toClose = new ArrayList();
-        for (int i = 0; i < refArray.length; i++) {
-            IEditorReference reference = refArray[i];
-            
-            // If we're in the middle of creating this part, this is a programming error. Abort the entire
-            // close operation. This usually occurs if someone tries to open a dialog in a method that
-            // isn't allowed to do so, and a *syncExec tries to close the part. If this shows up in a log
-            // file with a dialog's event loop on the stack, then the code that opened the dialog is usually
-            // at fault.
-            if (reference == partBeingActivated) {
-                WorkbenchPlugin.log(new RuntimeException("WARNING: Blocked recursive attempt to close part "  //$NON-NLS-1$
-                        + partBeingActivated.getId() + " while still in the middle of activating it")); //$NON-NLS-1$
-                return false;
-            }
-            
-            if(reference instanceof WorkbenchPartReference) {
-                WorkbenchPartReference ref = (WorkbenchPartReference) reference;
-                
-                // If we're being asked to close a part that is disposed (ie: already closed),
-                // skip it and proceed with closing the remaining parts.
-                if (ref.isDisposed()) {
-                    continue;
-                }
-            }
-            
-            toClose.add(reference);
-        }
-        
-        IEditorReference[] editorRefs = (IEditorReference[]) toClose.toArray(new IEditorReference[toClose.size()]);
-        
-        // notify the model manager before the close
-        List partsToClose = new ArrayList();
-        for (int i = 0; i < editorRefs.length; i++) {
-            IEditorPart refPart = editorRefs[i].getEditor(false);
-            if (refPart != null) {
-            	partsToClose.add(refPart);
-            }
-        }
-        SaveablesList modelManager = null;
-        Object postCloseInfo = null;
-        if(partsToClose.size()>0) {
-        	modelManager = (SaveablesList) getWorkbenchWindow().getService(ISaveablesLifecycleListener.class);
-        	// this may prompt for saving and return null if the user canceled:
-        	postCloseInfo = modelManager.preCloseParts(partsToClose, save, getWorkbenchWindow());
-        	if (postCloseInfo==null) {
-        		return false;
-        	}
-        }
-
-        // Fire pre-removal changes 
-        for (int i = 0; i < editorRefs.length; i++) {
-            IEditorReference ref = editorRefs[i];
-            
-            // Notify interested listeners before the close
-            window.firePerspectiveChanged(this, getPerspective(), ref,
-                    CHANGE_EDITOR_CLOSE);
-            
-        }        
-        
-        deferUpdates(true);
-        try {        
-        	if(modelManager!=null) {
-            	modelManager.postClose(postCloseInfo);
-            }
-        	
-	        // Close all editors.
-	        for (int i = 0; i < editorRefs.length; i++) {
-	            IEditorReference ref = editorRefs[i];
-	            
-	            // Remove editor from the presentation
-                editorPresentation.closeEditor(ref);
-	            
-                partRemoved((WorkbenchPartReference)ref);                
-	        }
-        } finally {
-            deferUpdates(false);
-        }
-                        
-        // Notify interested listeners after the close
-        window.firePerspectiveChanged(this, getPerspective(),
-                CHANGE_EDITOR_CLOSE);
-        
-        // Return true on success.
-        return true;
-    }
-    
-    /**
-     * Enables or disables listener notifications. This is used to delay listener notifications until the
-     * end of a public method.
-     * 
-     * @param shouldDefer
-     */
-    private void deferUpdates(boolean shouldDefer) {
-        if (shouldDefer) {
-            if (deferCount == 0) {
-                startDeferring();
-            }
-            deferCount++;
-        } else {
-            deferCount--;
-            if (deferCount == 0) {
-                handleDeferredEvents();
-            }
-        }
-    }
-    
-    private void startDeferring() {
-        editorPresentation.getLayoutPart().deferUpdates(true);
-    }
-
-    private void handleDeferredEvents() {
-        editorPresentation.getLayoutPart().deferUpdates(false);
-        updateActivePart();
-        WorkbenchPartReference[] disposals = (WorkbenchPartReference[]) pendingDisposals.toArray(new WorkbenchPartReference[pendingDisposals.size()]);
-        pendingDisposals.clear();
-        for (int i = 0; i < disposals.length; i++) {
-            WorkbenchPartReference reference = disposals[i];
-            disposePart(reference);
-        }
-        
-    }
-    
-    private boolean isDeferred() {
-        return deferCount > 0;
-    }
-
-    /**
-     * See IWorkbenchPage#closeEditor
-     */
-    public boolean closeEditor(IEditorReference editorRef, boolean save) {
-        return closeEditors(new IEditorReference[] {editorRef}, save);
-    }
-
-    /**
-     * See IWorkbenchPage#closeEditor
-     */
-    public boolean closeEditor(IEditorPart editor, boolean save) {
-        IWorkbenchPartReference ref = getReference(editor);
-        if (ref instanceof IEditorReference) {
-        	return closeEditors(new IEditorReference[] {(IEditorReference) ref}, save);
-        }
-        return false;
-    }
-
-    /**
-     * @see IWorkbenchPage#closePerspective(IPerspectiveDescriptor, boolean, boolean)
-     */
-    public void closePerspective(IPerspectiveDescriptor desc, boolean saveParts, boolean closePage) {
-        Perspective persp = findPerspective(desc);
-        if (persp != null) {
-			closePerspective(persp, saveParts, closePage);
-		}
-    }
-    
-    /**
-	 * Closes the specified perspective in this page. If this is not the last 
-	 * perspective in the page, and it is active, then the perspective specified by 
-	 * <code>descToActivate</code> will be activated. If the last perspective in 
-	 * this page is closed, then all editors are closed. Views that are not shown 
-	 * in other perspectives are closed as well. If <code>saveParts</code> is 
-	 * <code>true</code>, the user will be prompted to save any unsaved changes 
-	 * for parts that are being closed. The page itself is closed if 
-	 * <code>closePage</code> is <code>true</code>.
-	 * 
-	 * @param desc
-	 *            the descriptor of the perspective to be closed
-	 * @param descToActivate
-	 *            the descriptor of the perspective to activate
-	 * @param saveParts
-	 *            whether the page's parts should be saved if closed
-	 * @param closePage
-	 *            whether the page itself should be closed if last perspective
-	 * @since 3.4
-	 */
-    public void closePerspective(IPerspectiveDescriptor desc, IPerspectiveDescriptor descToActivate, boolean saveParts, boolean closePage) {
-    	Perspective persp = findPerspective(desc);
-        Perspective perspToActivate = findPerspective(descToActivate);
-        if (persp != null) {
-			closePerspective(persp, perspToActivate, saveParts, closePage);
-		}
-    }
-
-    /**
-	 * Closes the specified perspective. If last perspective, then entire page
-	 * is closed.
-	 * 
-	 * @param persp
-	 *            the perspective to be closed
-	 * @param saveParts
-	 *            whether the parts that are being closed should be saved
-	 *            (editors if last perspective, views if not shown in other
-	 *            parspectives)
-	 */
-    /* package */
-    void closePerspective(Perspective persp, boolean saveParts, boolean closePage) {
-    	closePerspective(persp, null, saveParts, closePage);
-    }
-    
-    /**
-	 * Closes the specified perspective. If last perspective, then entire page
-	 * is closed.
-	 * 
-	 * @param persp
-	 *            the perspective to be closed
-	 * @param perspToActivate
-	 * 			  the perspective to activate
-	 * @param saveParts
-	 *            whether the parts that are being closed should be saved
-	 *            (editors if last perspective, views if not shown in other
-	 *            parspectives)
-	 */
-    /* package */
-    void closePerspective(Perspective persp, Perspective perspToActivate, boolean saveParts, boolean closePage) {
-
-        // Always unzoom
-        if (isZoomed()) {
-			zoomOut();
-		}
-
-        List partsToSave = new ArrayList();
-        List viewsToClose = new ArrayList();
-        // collect views that will go away and views that are dirty
-        IViewReference[] viewReferences = persp.getViewReferences();
-        for (int i = 0; i < viewReferences.length; i++) {
-			IViewReference reference = viewReferences[i];
-	        if (getViewFactory().getReferenceCount(reference) == 1) {
-	        	IViewPart viewPart = reference.getView(false);
-	        	if (viewPart != null) {
-	        		viewsToClose.add(viewPart);
-	        		if (saveParts && reference.isDirty()) {
-	        			partsToSave.add(viewPart);
-	        		}
-	        	}
-	        }
-		}
-        if (saveParts && perspList.size() == 1) {
-        	// collect editors that are dirty
-        	IEditorReference[] editorReferences = getEditorReferences();
-        	for (int i = 0; i < editorReferences.length; i++) {
-				IEditorReference reference = editorReferences[i];
-					if (reference.isDirty()) {
-						IEditorPart editorPart = reference.getEditor(false);
-						if (editorPart != null) {
-							partsToSave.add(editorPart);
-						}
-					}
-			}
-        }
-        if (saveParts && !partsToSave.isEmpty()) {
-        	if (!EditorManager.saveAll(partsToSave, true, true, false, window)) {
-        		// user canceled
-        		return;
-        	}
-	    }
-        // Close all editors on last perspective close
-        if (perspList.size() == 1 && getEditorManager().getEditorCount() > 0) {
-            // Close all editors
-            if (!closeAllEditors(false)) {
-				return;
-			}
-        }
-        
-        // closeAllEditors already notified the saveables list about the editors.
-        SaveablesList saveablesList = (SaveablesList) getWorkbenchWindow().getWorkbench().getService(ISaveablesLifecycleListener.class);
-        // we took care of the saving already, so pass in false (postCloseInfo will be non-null)
-        Object postCloseInfo = saveablesList.preCloseParts(viewsToClose, false, getWorkbenchWindow());
-        saveablesList.postClose(postCloseInfo);
-
-        // Dispose of the perspective
-        boolean isActive = (perspList.getActive() == persp);
-        if (isActive) {
-        	if (perspToActivate != null) {
-        		setPerspective(perspToActivate);
-        	}
-        	else {
-        		setPerspective(perspList.getNextActive());
-        	}
-		}
-        disposePerspective(persp, true);
-        if (closePage && perspList.size() == 0) {
-			close();
-		}
-    }
-
-    /**
-     * Forces all perspectives on the page to zoom out.
-     */
-    public void unzoomAllPerspectives() {
-    	for (Iterator perspIter = perspList.iterator(); perspIter.hasNext();) {
-			Perspective persp = (Perspective) perspIter.next();
-			persp.getPresentation().forceNoZoom();
-		}
-    }
-    
-    /**
-     * @see IWorkbenchPage#closeAllPerspectives(boolean, boolean)
-     */
-    public void closeAllPerspectives(boolean saveEditors, boolean closePage) {
-
-        if (perspList.isEmpty()) {
-			return;
-		}
-
-        // Always unzoom
-        if (isZoomed()) {
-			zoomOut();
-		}
-
-        if(saveEditors) {
-        	if (!saveAllEditors(true)) {
-        		return;
-        	}
-        }
-        // Close all editors
-        if (!closeAllEditors(false)) {
-			return;
-		}
-
-        // Deactivate the active perspective and part
-        setPerspective((Perspective) null);
-
-        // Close each perspective in turn
-        PerspectiveList oldList = perspList;
-        perspList = new PerspectiveList();
-        Iterator itr = oldList.iterator();
-        while (itr.hasNext()) {
-			closePerspective((Perspective) itr.next(), false, false);
-		}
-        if (closePage) {
-            close();
-        }
-    }
-
-    /**
-     * Creates the client composite.
-     */
-    private void createClientComposite() {
-        final Composite parent = window.getPageComposite();
-        StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				composite = new Composite(parent, SWT.NONE);
-				composite.setVisible(false); // Make visible on activate.
-				// force the client composite to be layed out
-				parent.layout();
-			}
-		});
-       
-    }
-
-    /**
-     * Creates a new view set. Return null on failure.
-     * 
-     * @param desc the perspective descriptor
-     * @param notify whether to fire a perspective opened event
-     */
-    private Perspective createPerspective(PerspectiveDescriptor desc, boolean notify) {
-        String label = desc.getId(); // debugging only
-        try {
-            UIStats.start(UIStats.CREATE_PERSPECTIVE, label);
-            Perspective persp = ((WorkbenchImplementation) Tweaklets
-    				.get(WorkbenchImplementation.KEY)).createPerspective(desc, this);
-            perspList.add(persp);
-            if (notify) {
-            	window.firePerspectiveOpened(this, desc);
-            }
-            //if the perspective is fresh and uncustomzied then it is not dirty
-            //no reset will be prompted for
-            if (!desc.hasCustomDefinition()) {
-				dirtyPerspectives.remove(desc.getId());
-			}
-            return persp;
-        } catch (WorkbenchException e) {
-            if (!((Workbench) window.getWorkbench()).isStarting()) {
-                MessageDialog
-                        .openError(
-                                window.getShell(),
-                                WorkbenchMessages.Error, 
-                                NLS.bind(WorkbenchMessages.Workbench_showPerspectiveError,desc.getId() )); 
-            }
-            return null;
-        } finally {
-            UIStats.end(UIStats.CREATE_PERSPECTIVE, desc.getId(), label);
-        }
-    }
-
-    /**
-     * This is called by child objects after a part has been added to the page.
-     * The page will in turn notify its listeners. 
-     */
-    /* package */ void partAdded(WorkbenchPartReference ref) {
-        activationList.add(ref);
-        partList.addPart(ref);
-        updateActivePart();
-    }
-    
-    /**
-     * This is called by child objects after a part has been added to the page.
-     * The part will be queued for disposal after all listeners have been notified
-     */
-    /* package */ void partRemoved(WorkbenchPartReference ref) {
-        activationList.remove(ref);
-        disposePart(ref);
-    }
-    
-    private void disposePart(WorkbenchPartReference ref) {
-        if (isDeferred()) {
-            pendingDisposals.add(ref);
-        } else {
-            partList.removePart(ref);
-            ref.dispose();
-        }
-    }
-    
-    /**
-     * Deactivates a part. The pane is unhilighted.
-     */
-    private void deactivatePart(IWorkbenchPart part) {
-        if (part != null) {
-            PartSite site = (PartSite) part.getSite();
-            site.getPane().showFocus(false);
-        }
-    }
-    
-	/**
-	 * Detaches a view from the WorkbenchWindow.
-	 */
-	public void detachView(IViewReference ref){
-		Perspective persp = getActivePerspective();
-		if(persp == null) {
-			return;
-		}
-		
-		PerspectiveHelper presentation = persp.getPresentation();		
-		presentation.detachPart(ref);
-	}
-	
-	/**
-	 * Removes a detachedwindow. 
-	 */
-	public void attachView(IViewReference ref){
-  		PerspectiveHelper presentation = getPerspectivePresentation();
-   		presentation.attachPart(ref);
-	}
-
-    /**
-     * Cleanup.
-     */
-    public void dispose() {
-
-        // Always unzoom
-        if (isZoomed()) {
-			zoomOut();
-		}
-
-        makeActiveEditor(null);
-        makeActive(null);
-        
-        // Close and dispose the editors.
-        closeAllEditors(false);
-        
-        // Need to make sure model data is cleaned up when the page is
-		// disposed. Collect all the views on the page and notify the
-		// saveable list of a pre/post close. This will free model data.
-		IWorkbenchPartReference[] partsToClose = getOpenParts();
-		List dirtyParts = new ArrayList(partsToClose.length);
-		for (int i = 0; i < partsToClose.length; i++) {
-			IWorkbenchPart part = partsToClose[i].getPart(false);
-			if (part != null && part instanceof IViewPart) {
-				dirtyParts.add(part);
-			}
-		}
-		SaveablesList saveablesList = (SaveablesList) getWorkbenchWindow().getWorkbench().getService(ISaveablesLifecycleListener.class);
-		Object postCloseInfo = saveablesList.preCloseParts(dirtyParts, false,getWorkbenchWindow());
-		saveablesList.postClose(postCloseInfo);
-
-        // Get rid of perspectives. This will close the views.
-        Iterator itr = perspList.iterator();
-        while (itr.hasNext()) {
-            Perspective perspective = (Perspective) itr.next();
-            window.firePerspectiveClosed(this, perspective.getDesc());
-            perspective.dispose();
-        }
-        perspList = new PerspectiveList();
-
-        // Capture views.
-        IViewReference refs[] = viewFactory.getViews();
-
-        if (refs.length > 0) {
-            // Dispose views.
-            for (int i = 0; i < refs.length; i++) {
-                final WorkbenchPartReference ref = (WorkbenchPartReference) refs[i];
-                //partList.removePart(ref);
-                //firePartClosed(refs[i]);
-                Platform.run(new SafeRunnable() {
-                    public void run() {
-//                        WorkbenchPlugin.log(new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH, 
-//                                Status.OK, "WorkbenchPage leaked a refcount for view " + ref.getId(), null));  //$NON-NLS-1$//$NON-NLS-2$
-                        
-                        ref.dispose();
-                    }
-    
-                    public void handleException(Throwable e) {
-                    }
-                });
-            }
-        }
-        
-        activationList = new ActivationList();
-
-        // Get rid of editor presentation.
-        editorPresentation.dispose();
-
-        // Get rid of composite.
-        composite.dispose();
-
-        navigationHistory.dispose();
-
-        stickyViewMan.clear();
-        
-        if (tracker != null) {
-			tracker.close();
-		}
-        
-        // if we're destroying a window in a non-shutdown situation then we should
-        // clean up the working set we made.
-        if (!window.getWorkbench().isClosing()) {
-        		if (aggregateWorkingSet != null) {
-        			PlatformUI.getWorkbench().getWorkingSetManager().removeWorkingSet(aggregateWorkingSet);
-        		}
-        }
-    }
-
-    /**
-     * Dispose a perspective.
-     * 
-     * @param persp the perspective descriptor
-     * @param notify whether to fire a perspective closed event
-     */
-    private void disposePerspective(Perspective persp, boolean notify) {
-        // Get rid of perspective.
-        perspList.remove(persp);
-        if (notify) {
-        	window.firePerspectiveClosed(this, persp.getDesc());
-        }
-        persp.dispose();
-
-        stickyViewMan.remove(persp.getDesc().getId());
-    }
-
-    /**
-     * @return NavigationHistory
-     */
-    public INavigationHistory getNavigationHistory() {
-        return navigationHistory;
-    }
-
-    /**
-     * Edits the action sets.
-     */
-    public boolean editActionSets() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return false;
-		}
-
-        // Create list dialog.
-        CustomizePerspectiveDialog dlg = window.createCustomizePerspectiveDialog(persp);
-        
-        // Open.
-        boolean ret = (dlg.open() == Window.OK);
-        if (ret) {
-            window.updateActionSets();
-            window.firePerspectiveChanged(this, getPerspective(), CHANGE_RESET);
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_RESET_COMPLETE);
-        }
-        return ret;
-    }
-
-    /**
-     * Returns the first view manager with given ID.
-     */
-    public Perspective findPerspective(IPerspectiveDescriptor desc) {
-        Iterator itr = perspList.iterator();
-        while (itr.hasNext()) {
-            Perspective mgr = (Perspective) itr.next();
-            if (desc.getId().equals(mgr.getDesc().getId())) {
-				return mgr;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * See IWorkbenchPage@findView.
-     */
-    public IViewPart findView(String id) {
-        IViewReference ref = findViewReference(id);
-        if (ref == null) {
-			return null;
-		}
-        return ref.getView(true);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage
-     */
-    public IViewReference findViewReference(String viewId) {
-        return findViewReference(viewId, null);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage
-     */
-    public IViewReference findViewReference(String viewId, String secondaryId) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return null;
-		}
-        return persp.findView(viewId, secondaryId);
-    }
-
-
-    /**
-     * Notify property change listeners about a property change.
-     * 
-     * @param changeId
-     *            the change id
-     * @param oldValue
-     *            old property value
-     * @param newValue
-     *            new property value
-     */
-    private void firePropertyChange(String changeId, Object oldValue,
-            Object newValue) {
-        
-        UIListenerLogging.logPagePropertyChanged(this, changeId, oldValue, newValue);
-        
-        Object[] listeners = propertyChangeListeners.getListeners();
-        PropertyChangeEvent event = new PropertyChangeEvent(this, changeId,
-                oldValue, newValue);
-
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyChangeListener) listeners[i]).propertyChange(event);
-        }
-    }
-
-    /*
-     * Returns the action bars.
-     */
-    public IActionBars getActionBars() {
-        if (actionBars == null) {
-			actionBars = new WWinActionBars(window);
-		}
-        return actionBars;
-    }
-
-    /**
-     * Returns an array of the visible action sets.
-     */
-    public IActionSetDescriptor[] getActionSets() {
-        Collection collection = actionSets.getVisibleItems();
-        
-        return (IActionSetDescriptor[]) collection.toArray(new IActionSetDescriptor[collection.size()]);
-    }
-
-    /**
-     * @see IWorkbenchPage
-     */
-    public IEditorPart getActiveEditor() {
-        return partList.getActiveEditor();
-    }
-
-    /**
-     * Returns the reference for the active editor, or <code>null</code> 
-     * if there is no active editor.
-     * 
-     * @return the active editor reference or <code>null</code>
-     */
-    public IEditorReference getActiveEditorReference() {
-        return partList.getActiveEditorReference();
-    }
-    
-    /*
-     * (non-Javadoc) Method declared on IPartService
-     */
-    public IWorkbenchPart getActivePart() {
-        return partList.getActivePart();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IPartService
-     */
-    public IWorkbenchPartReference getActivePartReference() {
-        return partList.getActivePartReference();
-    }
-
-    /**
-     * Returns the active perspective for the page, <code>null</code> if
-     * none.
-     */
-    public Perspective getActivePerspective() {
-        return perspList.getActive();
-    }
-
-    /**
-     * Returns the client composite.
-     */
-    public Composite getClientComposite() {
-        return composite;
-    }
-
-    //  for dynamic UI - change access from private to protected
-    // for testing purposes only, changed from protected to public
-    /**
-     * Answer the editor manager for this window.
-     */
-    public EditorManager getEditorManager() {
-        return editorMgr;
-    }
-
-    /**
-     * Answer the perspective presentation.
-     */
-    public PerspectiveHelper getPerspectivePresentation() {
-        if (getActivePerspective() != null) {
-			return getActivePerspective().getPresentation();
-		}
-        return null;
-    }
-
-    /**
-     * Answer the editor presentation.
-     */
-    public EditorAreaHelper getEditorPresentation() {
-        return editorPresentation;
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorPart[] getEditors() {
-        final IEditorReference refs[] = getEditorReferences();
-        final ArrayList result = new ArrayList(refs.length);
-        Display d = getWorkbenchWindow().getShell().getDisplay();
-        //Must be backward compatible.
-        d.syncExec(new Runnable() {
-            public void run() {
-                for (int i = 0; i < refs.length; i++) {
-                    IWorkbenchPart part = refs[i].getPart(true);
-                    if (part != null) {
-						result.add(part);
-					}
-                }
-            }
-        });
-        final IEditorPart editors[] = new IEditorPart[result.size()];
-        return (IEditorPart[]) result.toArray(editors);
-    }
-
-    public IEditorPart[] getDirtyEditors() {
-        return getEditorManager().getDirtyEditors();
-    }
-	
-    public ISaveablePart[] getDirtyParts() {
-        List result = new ArrayList(3);
-        IWorkbenchPartReference[] allParts = getAllParts();
-        for (int i = 0; i < allParts.length; i++) {
-            IWorkbenchPartReference reference = allParts[i];
-            
-            IWorkbenchPart part = reference.getPart(false);
-            if (part != null && part instanceof ISaveablePart) {
-                ISaveablePart saveable = (ISaveablePart)part;
-                if (saveable.isDirty()) {
-                    result.add(saveable);
-                }
-            }
-        }
-        
-        return (ISaveablePart[]) result.toArray(new ISaveablePart[result.size()]);
-    }
-  
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorPart findEditor(IEditorInput input) {
-        return getEditorManager().findEditor(input);
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorReference[] findEditors(IEditorInput input, String editorId, int matchFlags) {
-    	return getEditorManager().findEditors(input, editorId, matchFlags);
-    }
-    
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorReference[] getEditorReferences() {
-        return editorPresentation.getEditors();
-    }
-
-    /**
-     * Returns the docked views.
-     */
-    public IViewReference[] getFastViews() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.getFastViews();
-		} else {
-			return new IViewReference[0];
-		}
-    }
-
-    /**
-     * @see IWorkbenchPage
-     */
-    public IAdaptable getInput() {
-        return input;
-    }
-
-    /**
-     * Returns the page label. This is a combination of the page input and
-     * active perspective.
-     */
-    public String getLabel() {
-        String label = WorkbenchMessages.WorkbenchPage_UnknownLabel;
-        IWorkbenchAdapter adapter = (IWorkbenchAdapter) Util.getAdapter(input, 
-                IWorkbenchAdapter.class);
-        if (adapter != null) {
-			label = adapter.getLabel(input);
-		}
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			label = NLS.bind(WorkbenchMessages.WorkbenchPage_PerspectiveFormat,  label, persp.getDesc().getLabel());
-		} else if (deferredActivePersp != null) {
-			label = NLS.bind(WorkbenchMessages.WorkbenchPage_PerspectiveFormat,label, deferredActivePersp.getLabel());
-		} 
-        return label;
-    }
-
-    /**
-     * Returns the perspective.
-     */
-    public IPerspectiveDescriptor getPerspective() {
-        if (deferredActivePersp != null) {
-			return deferredActivePersp;
-		}
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.getDesc();
-		} else {
-			return null;
-		}
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionService
-     */
-    public ISelection getSelection() {
-        return selectionService.getSelection();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionService
-     */
-    public ISelection getSelection(String partId) {
-        return selectionService.getSelection(partId);
-    }
-
-    /**
-     * Returns the ids of the parts to list in the Show In... prompter. This is
-     * a List of Strings.
-     */
-    public ArrayList getShowInPartIds() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.getShowInPartIds();
-		} else {
-			return new ArrayList();
-		}
-    }
-
-    /**
-     * The user successfully performed a Show In... action on the specified
-     * part. Update the list of Show In items accordingly.
-     */
-    public void performedShowIn(String partId) {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-            persp.performedShowIn(partId);
-        }
-    }
-
-    /**
-     * Sorts the given collection of show in target part ids in MRU order.
-     */
-    public void sortShowInPartIds(ArrayList partIds) {
-        final Perspective persp = getActivePerspective();
-        if (persp != null) {
-            Collections.sort(partIds, new Comparator() {
-                public int compare(Object a, Object b) {
-                    long ta = persp.getShowInTime((String) a);
-                    long tb = persp.getShowInTime((String) b);
-                    return (ta == tb) ? 0 : ((ta > tb) ? -1 : 1);
-                }
-            });
-        }
-    }
-
-    /*
-     * Returns the view factory.
-     */
-    public ViewFactory getViewFactory() {
-        if (viewFactory == null) {
-            viewFactory = new ViewFactory(this, WorkbenchPlugin.getDefault()
-                    .getViewRegistry());
-        }
-        return viewFactory;
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IViewReference[] getViewReferences() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.getViewReferences();
-		} else {
-			return new IViewReference[0];
-		}
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IViewPart[] getViews() {
-		return getViews(null, true);
-    }
-	
-	/**
-	 * Returns all view parts in the specified perspective
-	 * 
-	 * @param persp the perspective
-	 * @return an array of view parts
-	 * @since 3.1
-	 */
-	/*package*/IViewPart[] getViews(Perspective persp, boolean restore) {			
-        if (persp == null) {
-			persp = getActivePerspective();
-		}
-		
-        if (persp != null) {
-            IViewReference refs[] = persp.getViewReferences();
-            ArrayList parts = new ArrayList(refs.length);
-            for (int i = 0; i < refs.length; i++) {
-                IWorkbenchPart part = refs[i].getPart(restore);
-                if (part != null) {
-					parts.add(part);
-				}
-            }
-            IViewPart[] result = new IViewPart[parts.size()];
-            return (IViewPart[]) parts.toArray(result);
-        }
-        return new IViewPart[0];
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IWorkbenchWindow getWorkbenchWindow() {
-        return window;
-    }
-
-    /**
-     * Implements IWorkbenchPage
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#getWorkingSet()
-     * @since 2.0
-     * @deprecated individual views should store a working set if needed
-     */
-    public IWorkingSet getWorkingSet() {
-        return workingSet;
-    }
-
-    /**
-     * @see IWorkbenchPage
-     */
-    public void hideActionSet(String actionSetID) {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-            persp.removeActionSet(actionSetID);
-            window.updateActionSets();
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_ACTION_SET_HIDE);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#hideView(org.eclipse.ui.IViewReference)
-     */
-    public void hideView(IViewReference ref) {
-        
-        // Sanity check.
-        if (ref == null) {
-			return;
-		}
-
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-
-        boolean promptedForSave = false;
-        IViewPart view = ref.getView(false);
-        if (view != null) {
-
-            if (!certifyPart(view)) {
-                return;
-            }
-            
-            // Confirm.
-    		if (view instanceof ISaveablePart) {
-    			ISaveablePart saveable = (ISaveablePart)view;
-    			if (saveable.isSaveOnCloseNeeded()) {
-    				IWorkbenchWindow window = view.getSite().getWorkbenchWindow();
-    				boolean success = EditorManager.saveAll(Collections.singletonList(view), true, true, false, window);
-    				if (!success) {
-    					// the user cancelled.
-    					return;
-    				}
-    				promptedForSave = true;
-    			}
-    		}
-        }
-        
-        int refCount = getViewFactory().getReferenceCount(ref);
-        SaveablesList saveablesList = null;
-        Object postCloseInfo = null;
-        if (refCount == 1) {
-        	IWorkbenchPart actualPart = ref.getPart(false);
-        	if (actualPart != null) {
-				saveablesList = (SaveablesList) actualPart
-						.getSite().getService(ISaveablesLifecycleListener.class);
-				postCloseInfo = saveablesList.preCloseParts(Collections
-						.singletonList(actualPart), !promptedForSave, this
-						.getWorkbenchWindow());
-				if (postCloseInfo==null) {
-					// cancel
-					return;
-				}
-			}
-        }
-        
-        // Notify interested listeners before the hide
-        window.firePerspectiveChanged(this, persp.getDesc(), ref,
-                CHANGE_VIEW_HIDE);
-
-        PartPane pane = getPane(ref);
-        pane.setInLayout(false);
-        
-        updateActivePart();
-        
-        if (saveablesList != null) {
-        	saveablesList.postClose(postCloseInfo);
-        }
-
-        // Hide the part.
-        persp.hideView(ref);
-
-        // Notify interested listeners after the hide
-        window.firePerspectiveChanged(this, getPerspective(), CHANGE_VIEW_HIDE);
-    }
-
-    /* package */void refreshActiveView() {
-        updateActivePart();
-    }
-
-    /**
-     * See IPerspective
-     */
-    public void hideView(IViewPart view) {
-        hideView((IViewReference)getReference(view));
-    }
-
-    /**
-     * Initialize the page.
-     * 
-     * @param w
-     *            the parent window
-     * @param layoutID
-     *            may be <code>null</code> if restoring from file
-     * @param input
-     *            the page input
-     * @param openExtras
-     *            whether to process the perspective extras preference
-     */
-    private void init(WorkbenchWindow w, String layoutID, IAdaptable input, boolean openExtras)
-            throws WorkbenchException {
-        // Save args.
-        this.window = w;
-        this.input = input;
-        actionSets = new ActionSetManager(w);
-
-        // Create presentation.
-        createClientComposite();
-        editorPresentation = new EditorAreaHelper(this);
-        editorMgr = new EditorManager(window, this, editorPresentation);
-
-		// add this page as a client to be notified when the UI has re-orded perspectives 
-		// so that the order can be properly maintained in the receiver.
-		// E.g. a UI might support drag-and-drop and will need to make this known to ensure
-		// #saveState and #restoreState do not lose this re-ordering
-		w.addPerspectiveReorderListener(new IReorderListener() {
-			public void reorder(Object perspective, int newLoc) {
-				perspList.reorder((IPerspectiveDescriptor)perspective, newLoc);				
-			}
-		});
-		
-		if (openExtras) {
-			openPerspectiveExtras();
-		}
-		
-        // Get perspective descriptor.
-        if (layoutID != null) {
-            PerspectiveDescriptor desc = (PerspectiveDescriptor) WorkbenchPlugin
-                    .getDefault().getPerspectiveRegistry()
-                    .findPerspectiveWithId(layoutID);
-            if (desc == null) {
-				throw new WorkbenchException(
-                        NLS.bind(WorkbenchMessages.WorkbenchPage_ErrorCreatingPerspective,layoutID ));
-			}
-            Perspective persp = findPerspective(desc);
-            if (persp == null) {
-	            persp = createPerspective(desc, true);
-            }
-            perspList.setActive(persp);
-            window.firePerspectiveActivated(this, desc);
-        }
-        
-        getExtensionTracker()
-                .registerHandler(
-                        perspectiveChangeHandler,
-                        ExtensionTracker
-                                .createExtensionPointFilter(getPerspectiveExtensionPoint()));
-    }
-    
-    /**
-	 * Opens the perspectives specified in the PERSPECTIVE_BAR_EXTRAS preference (see bug 84226).
-	 */
-	public void openPerspectiveExtras() {
-        String extras = PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.PERSPECTIVE_BAR_EXTRAS);
-		StringTokenizer tok = new StringTokenizer(extras, ", "); //$NON-NLS-1$
-		ArrayList descs = new ArrayList();
-		while (tok.hasMoreTokens()) {
-			String id = tok.nextToken();
-            IPerspectiveDescriptor desc = WorkbenchPlugin.getDefault().getPerspectiveRegistry().findPerspectiveWithId(id);
-            if (desc != null) {
-            	descs.add(desc);
-            }
-		}
-		// HACK: The perspective switcher currently adds the button for a new perspective to the beginning of the list.
-		// So, we process the extra perspectives in reverse order here to have their buttons appear in the order declared. 
-		for (int i = descs.size(); --i >= 0;) {
-			PerspectiveDescriptor desc = (PerspectiveDescriptor) descs.get(i);
-            if (findPerspective(desc) == null) {
-            	createPerspective(desc, true);
-            }
-		}
-	}
-
-	/**
-     * See IWorkbenchPage.
-     */
-    public boolean isPartVisible(IWorkbenchPart part) {
-    	PartPane pane = getPane(part);
-    	return pane != null && pane.getVisible();
-    }
-    
-    /**
-     * See IWorkbenchPage.
-     */
-    public boolean isEditorAreaVisible() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return false;
-		}
-        return persp.isEditorAreaVisible();
-    }
-
-    /**
-     * Returns whether the view is fast.
-     */
-    public boolean isFastView(IViewReference ref) {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.isFastView(ref);
-		} else {
-			return false;
-		}
-    }
-    
-    /**
-     * Return whether the view is closeable or not.
-     * 
-     * @param ref the view reference to check.  Must not be <code>null</code>.
-     * @return true if the part is closeable.
-     * @since 3.1.1
-     */
-    public boolean isCloseable(IViewReference ref) {
-		Perspective persp = getActivePerspective();
-		if (persp != null) {
-			return persp.isCloseable(ref);
-		}
-		return false;
-	}
-
-    /**
-     * Return whether the view is moveable or not.
-     * 
-     * @param ref the view reference to check.  Must not be <code>null</code>.
-     * @return true if the part is moveable.
-     * @since 3.1.1
-     */
-    public boolean isMoveable(IViewReference ref) {
-		Perspective persp = getActivePerspective();
-		if (persp != null) {
-			return persp.isMoveable(ref);
-		}
-		return false;
-	}
-
-    /**
-     * Returns whether the layout of the active
-     * perspective is fixed.
-     */
-    public boolean isFixedLayout() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.isFixedLayout();
-		} else {
-			return false;
-		}
-    }
-
-    /**
-     * Return the active fast view or null if there are no fast views or if
-     * there are all minimized.
-     */
-    public IViewReference getActiveFastView() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			return persp.getActiveFastView();
-		} else {
-			return null;
-		}
-    }
-
-    /**
-     * Return true if the perspective has a dirty editor.
-     */
-    protected boolean isSaveNeeded() {
-        return getEditorManager().isSaveAllNeeded();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPage#isPageZoomed()
-     */
-    public boolean isPageZoomed() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return false;
-		}
-        if (persp.getPresentation() == null) {
-			return false;
-		}
-        
-        if (Perspective.useNewMinMax(persp))
-        	return persp.getPresentation().getMaximizedStack() != null;
-        
-        // Default to the legacy code
-    	return isZoomed();
-    }
-    
-    /**
-     * Returns whether the page is zoomed.
-     * @return <code>true</code> if the page is zoomed.
-     * 
-     * <strong>NOTE:</strong> As of 3.3 this method should always return 'false'
-     * when using the new min/max behavior. It is only used for
-     * legacy 'zoom' handling.
-     * 
-     */
-   public boolean isZoomed() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return false;
-		}
-        if (persp.getPresentation() == null) {
-			return false;
-		}
-        return persp.getPresentation().isZoomed();
-    }
-
-    /**
-     * This method is called when the page is activated.
-     */
-    protected void onActivate() {
-        composite.setVisible(true);
-        Perspective persp = getActivePerspective();
-
-        if (persp != null) {
-            persp.onActivate();
-            updateVisibility(null, persp);
-        }
-    }
-
-    /**
-     * This method is called when the page is deactivated.
-     */
-    protected void onDeactivate() {
-    	makeActiveEditor(null);
-        makeActive(null);
-        if (getActivePerspective() != null) {
-			getActivePerspective().onDeactivate();
-		}
-        composite.setVisible(false);
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public void reuseEditor(IReusableEditor editor, IEditorInput input) {
-        
-        // Rather than calling editor.setInput on the editor directly, we do it through the part reference.
-        // This case lets us detect badly behaved editors that are not firing a PROP_INPUT event in response
-        // to the input change... but if all editors obeyed their API contract, the "else" branch would be
-        // sufficient.
-        IWorkbenchPartReference ref = getReference(editor);
-        if (ref instanceof EditorReference) {
-            EditorReference editorRef = (EditorReference) ref;
-            
-            editorRef.setInput(input);
-        } else {
-            editor.setInput(input);
-        }
-        navigationHistory.markEditor(editor);
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorPart openEditor(IEditorInput input, String editorID)
-            throws PartInitException {
-        return openEditor(input, editorID, true, MATCH_INPUT);
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorPart openEditor(IEditorInput input, String editorID,
-			boolean activate) throws PartInitException {
-		return openEditor(input, editorID, activate, MATCH_INPUT);
-    }
-	
-    /**
-     * See IWorkbenchPage.
-     */
-    public IEditorPart openEditor(final IEditorInput input,
-            final String editorID, final boolean activate, final int matchFlags)
-            throws PartInitException {
-    	return openEditor(input, editorID, activate, matchFlags, null);
-    }
-	
-    /**
-     * This is not public API but for use internally.  editorState can be <code>null</code>.
-     */
-    public IEditorPart openEditor(final IEditorInput input,
-            final String editorID, final boolean activate, final int matchFlags,
-            final IMemento editorState)
-            throws PartInitException {
-        if (input == null || editorID == null) {
-            throw new IllegalArgumentException();
-        }
-
-        final IEditorPart result[] = new IEditorPart[1];
-        final PartInitException ex[] = new PartInitException[1];
-        BusyIndicator.showWhile(window.getWorkbench().getDisplay(),
-                new Runnable() {
-                    public void run() {
-                        try {
-                            result[0] = busyOpenEditor(input, editorID,
-                                    activate, matchFlags, editorState);
-                        } catch (PartInitException e) {
-                            ex[0] = e;
-                        }
-                    }
-                });
-        if (ex[0] != null) {
-			throw ex[0];
-		}
-        return result[0];
-    }
-
-    
-    /*
-     * Added to fix Bug 178235 [EditorMgmt] DBCS 3.3 - Cannot open file with external program.
-     * Opens a new editor using the given input and descriptor. (Normally, editors are opened using
-     * an editor ID and an input.)
-     */
-    public IEditorPart openEditorFromDescriptor(final IEditorInput input,
-    		final IEditorDescriptor editorDescriptor, final boolean activate,
-    		final IMemento editorState)
-    throws PartInitException {
-    	if (input == null || !(editorDescriptor instanceof EditorDescriptor)) {
-    		throw new IllegalArgumentException();
-    	}
-    	
-    	final IEditorPart result[] = new IEditorPart[1];
-    	final PartInitException ex[] = new PartInitException[1];
-    	BusyIndicator.showWhile(window.getWorkbench().getDisplay(),
-    			new Runnable() {
-    		public void run() {
-    			try {
-    				result[0] = busyOpenEditorFromDescriptor(input, (EditorDescriptor)editorDescriptor,
-    						activate, editorState);
-    			} catch (PartInitException e) {
-    				ex[0] = e;
-    			}
-    		}
-    	});
-    	if (ex[0] != null) {
-    		throw ex[0];
-    	}
-    	return result[0];
-    }
-    
-    /**
-     * @see #openEditor(IEditorInput, String, boolean, int)
-	 */
-    private IEditorPart busyOpenEditor(IEditorInput input, String editorID,
-            boolean activate, int matchFlags, IMemento editorState) throws PartInitException {
-
-        final Workbench workbench = (Workbench) getWorkbenchWindow()
-                .getWorkbench();
-        workbench.largeUpdateStart();
-
-        try {
-            return busyOpenEditorBatched(input, editorID, activate, matchFlags, editorState);
-
-        } finally {
-            workbench.largeUpdateEnd();
-        }
-    }
-
-    /*
-     * Added to fix Bug 178235 [EditorMgmt] DBCS 3.3 - Cannot open file with external program.
-     * See openEditorFromDescriptor().
-     */
-    private IEditorPart busyOpenEditorFromDescriptor(IEditorInput input, EditorDescriptor editorDescriptor,
-    		boolean activate, IMemento editorState) throws PartInitException {
-    	
-    	final Workbench workbench = (Workbench) getWorkbenchWindow()
-    	.getWorkbench();
-    	workbench.largeUpdateStart();
-    	
-    	try {
-    		return busyOpenEditorFromDescriptorBatched(input, editorDescriptor, activate, editorState);
-    		
-    	} finally {
-    		workbench.largeUpdateEnd();
-    	}
-    }
-    
-    /**
-     * Do not call this method.  Use <code>busyOpenEditor</code>.
-     * 
-     * @see IWorkbenchPage#openEditor(IEditorInput, String, boolean)
-     */
-    protected IEditorPart busyOpenEditorBatched(IEditorInput input,
-            String editorID, boolean activate,  int matchFlags, IMemento editorState) throws PartInitException {
-
-        // If an editor already exists for the input, use it.
-		IEditorPart editor = null;
-		// Reuse an existing open editor, unless we are in "new editor tab management" mode
-		editor = getEditorManager().findEditor(editorID, input, ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).getReuseEditorMatchFlags(matchFlags));
-        if (editor != null) {
-            if (IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID.equals(editorID)) {
-                if (editor.isDirty()) {
-                    MessageDialog dialog = new MessageDialog(
-                            getWorkbenchWindow().getShell(),
-                            WorkbenchMessages.Save, 
-                            null, // accept the default window icon
-                            NLS.bind(WorkbenchMessages.WorkbenchPage_editorAlreadyOpenedMsg,  input.getName()), 
-                            MessageDialog.QUESTION, new String[] {
-                                    IDialogConstants.YES_LABEL,
-                                    IDialogConstants.NO_LABEL,
-                                    IDialogConstants.CANCEL_LABEL }, 0);
-                    int saveFile = dialog.open();
-                    if (saveFile == 0) {
-                        try {
-                            final IEditorPart editorToSave = editor;
-                            getWorkbenchWindow().run(false, false,
-                                    new IRunnableWithProgress() {
-                                        public void run(IProgressMonitor monitor)
-                                                throws InvocationTargetException,
-                                                InterruptedException {
-                                            editorToSave.doSave(monitor);
-                                        }
-                                    });
-                        } catch (InvocationTargetException e) {
-                            throw (RuntimeException) e.getTargetException();
-                        } catch (InterruptedException e) {
-                            return null;
-                        }
-                    } else if (saveFile == 2) {
-                        return null;
-                    }
-                }
-            } else {
-                // do the IShowEditorInput notification before showing the editor
-                // to reduce flicker
-                if (editor instanceof IShowEditorInput) {
-                    ((IShowEditorInput) editor).showEditorInput(input);
-                }
-                showEditor(activate, editor);
-                return editor;
-            }
-        }
-
-
-        // Otherwise, create a new one. This may cause the new editor to
-        // become the visible (i.e top) editor.
-        IEditorReference ref = null;
-        try {
-        	partBeingOpened = true;
-			ref = getEditorManager().openEditor(editorID, input, true,
-					editorState);
-			if (ref != null) {
-				editor = ref.getEditor(true);
-			}
-		} finally {
-			partBeingOpened = false;
-        }
-
-        if (editor != null) {
-            setEditorAreaVisible(true);
-            if (activate) {
-                if (editor instanceof MultiEditor) {
-					activate(((MultiEditor) editor).getActiveEditor());
-				} else {
-					activate(editor);
-				}
-            } else {
-                bringToTop(editor);
-            }
-            window.firePerspectiveChanged(this, getPerspective(), ref,
-                    CHANGE_EDITOR_OPEN);
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_EDITOR_OPEN);
-        }
-
-        return editor;
-    }
-    
-    /*
-     * Added to fix Bug 178235 [EditorMgmt] DBCS 3.3 - Cannot open file with external program.
-     * See openEditorFromDescriptor().
-     */
-    private IEditorPart busyOpenEditorFromDescriptorBatched(IEditorInput input,
-            EditorDescriptor editorDescriptor, boolean activate, IMemento editorState) throws PartInitException {
-
-    	IEditorPart editor = null;
-        // Create a new one. This may cause the new editor to
-        // become the visible (i.e top) editor.
-        IEditorReference ref = null;
-        ref = getEditorManager().openEditorFromDescriptor(editorDescriptor, input, editorState);
-		if (ref != null) {
-            editor = ref.getEditor(true);
-        }
-
-        if (editor != null) {
-            setEditorAreaVisible(true);
-            if (activate) {
-                if (editor instanceof MultiEditor) {
-					activate(((MultiEditor) editor).getActiveEditor());
-				} else {
-					activate(editor);
-				}
-            } else {
-                bringToTop(editor);
-            }
-            window.firePerspectiveChanged(this, getPerspective(), ref,
-                    CHANGE_EDITOR_OPEN);
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_EDITOR_OPEN);
-        }
-
-        return editor;
-    }
-    
-    public void openEmptyTab() {
-    	IEditorPart editor = null;
-        EditorReference ref = null;
-        ref = (EditorReference) getEditorManager().openEmptyTab();
-        if (ref != null) {
-            editor = ref.getEmptyEditor((EditorDescriptor) ((EditorRegistry) WorkbenchPlugin
-					.getDefault().getEditorRegistry())
-					.findEditor(EditorRegistry.EMPTY_EDITOR_ID));
-        }
-
-        if (editor != null) {
-            setEditorAreaVisible(true);
-			activate(editor);
-            window.firePerspectiveChanged(this, getPerspective(), ref,
-                    CHANGE_EDITOR_OPEN);
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_EDITOR_OPEN);
-        }
-    }
-
-    protected void showEditor(boolean activate, IEditorPart editor) {
-        setEditorAreaVisible(true);
-        if (activate) {
-            zoomOutIfNecessary(editor);
-            activate(editor);
-        } else {
-            bringToTop(editor);
-        }
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public boolean isEditorPinned(IEditorPart editor) {
-    	WorkbenchPartReference ref = (WorkbenchPartReference)getReference(editor); 
-        return ref != null && ref.isPinned();
-    }
-    
-    /**
-     * Returns whether changes to a part will affect zoom. There are a few
-     * conditions for this .. - we are zoomed. - the part is contained in the
-     * main window. - the part is not the zoom part - the part is not a fast
-     * view - the part and the zoom part are not in the same editor workbook
-     */
-    private boolean partChangeAffectsZoom(IWorkbenchPartReference ref) {
-        PartPane pane = ((WorkbenchPartReference) ref).getPane();
-        if (pane instanceof MultiEditorInnerPane) {
-			pane = ((MultiEditorInnerPane) pane).getParentPane();
-		}
-        return getActivePerspective().getPresentation().partChangeAffectsZoom(
-                pane);
-    }
-
-    /**
-     * Removes a fast view.
-     */
-    public void removeFastView(IViewReference ref) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-
-        // Do real work.
-        persp.removeFastView(ref);
-
-        // Notify listeners.
-        window.firePerspectiveChanged(this, getPerspective(), ref,
-                CHANGE_FAST_VIEW_REMOVE);
-        window.firePerspectiveChanged(this, getPerspective(),
-                CHANGE_FAST_VIEW_REMOVE);
-    }
-
-    /**
-     * Removes an IPartListener from the part service.
-     */
-    public void removePartListener(IPartListener l) {
-        partList.getPartService().removePartListener(l);
-    }
-
-    /**
-     * Removes an IPartListener from the part service.
-     */
-    public void removePartListener(IPartListener2 l) {
-        partList.getPartService().removePartListener(l);
-    }
-
-    /**
-     * Implements IWorkbenchPage
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#removePropertyChangeListener(IPropertyChangeListener)
-     * @since 2.0
-     * @deprecated individual views should store a working set if needed and
-     *             register a property change listener directly with the
-     *             working set manager to receive notification when the view
-     *             working set is removed.
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener) {
-        propertyChangeListeners.remove(listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void removeSelectionListener(ISelectionListener listener) {
-        selectionService.removeSelectionListener(listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void removeSelectionListener(String partId,
-            ISelectionListener listener) {
-        selectionService.removeSelectionListener(partId, listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void removePostSelectionListener(ISelectionListener listener) {
-        selectionService.removePostSelectionListener(listener);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ISelectionListener.
-     */
-    public void removePostSelectionListener(String partId,
-            ISelectionListener listener) {
-        selectionService.removePostSelectionListener(partId, listener);
-    }
-
-    /**
-     * This method is called when a part is activated by clicking within it. In
-     * response, the part, the pane, and all of its actions will be activated.
-     * <p>
-     * In the current design this method is invoked by the part pane when the
-     * pane, the part, or any children gain focus.
-     * </p><p>
-     * If creating the part causes a forceFocus() well ignore this
-     * activation request.
-     * </p>
-     */
-    public void requestActivation(IWorkbenchPart part) {        
-        // Sanity check.
-        if (!certifyPart(part) || partBeingOpened) {
-			return;
-		}
-
-        if (part instanceof MultiEditor) {
-            part = ((MultiEditor) part).getActiveEditor();
-        }
-
-        // Real work.
-        setActivePart(part);
-    }
-
-    /**
-     * Resets the layout for the perspective. The active part in the old layout
-     * is activated in the new layout for consistent user context.
-     */
-    public void resetPerspective() {
-        // Run op in busy cursor.
-        // Use set redraw to eliminate the "flash" that can occur in the
-        // coolbar as the perspective is reset.
-        ICoolBarManager2 mgr = (ICoolBarManager2) window.getCoolBarManager2();
-        try {
-            mgr.getControl2().setRedraw(false);
-            BusyIndicator.showWhile(null, new Runnable() {
-                public void run() {
-                    busyResetPerspective();
-                }
-            });
-        } finally {
-            mgr.getControl2().setRedraw(true);
-        }
-    }
-
-    /**
-     * Restore this page from the memento and ensure that the active
-     * perspective is equals the active descriptor otherwise create a new
-     * perspective for that descriptor. If activeDescriptor is null active the
-     * old perspective.
-     */
-    public IStatus restoreState(IMemento memento,
-            final IPerspectiveDescriptor activeDescriptor) {
-        StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() throws Throwable {
-				deferUpdates(true);
-			}});
-        
-        try {
-            // Restore working set
-            String pageName = memento.getString(IWorkbenchConstants.TAG_LABEL);
-            
-            String label = null; // debugging only
-            if (UIStats.isDebugging(UIStats.RESTORE_WORKBENCH)) {
-                label = pageName == null ? "" : "::" + pageName; //$NON-NLS-1$ //$NON-NLS-2$
-            }
-    
-            try {
-                UIStats.start(UIStats.RESTORE_WORKBENCH, "WorkbenchPage" + label); //$NON-NLS-1$
-                if (pageName == null) {
-					pageName = ""; //$NON-NLS-1$
-				}
-                final MultiStatus result = new MultiStatus(
-                        PlatformUI.PLUGIN_ID,
-                        IStatus.OK,
-                        NLS.bind(WorkbenchMessages.WorkbenchPage_unableToRestorePerspective, pageName ), 
-                        null);
-    
-                String workingSetName = memento
-                        .getString(IWorkbenchConstants.TAG_WORKING_SET);
-                if (workingSetName != null) {
-                    AbstractWorkingSetManager workingSetManager = (AbstractWorkingSetManager) getWorkbenchWindow()
-                            .getWorkbench().getWorkingSetManager();
-                    setWorkingSet(workingSetManager.getWorkingSet(workingSetName));
-                }
-                
-	            IMemento workingSetMem = memento
-						.getChild(IWorkbenchConstants.TAG_WORKING_SETS);
-	            if (workingSetMem != null) {
-					IMemento[] workingSetChildren = workingSetMem
-							.getChildren(IWorkbenchConstants.TAG_WORKING_SET);
-					List workingSetList = new ArrayList(
-							workingSetChildren.length);
-					for (int i = 0; i < workingSetChildren.length; i++) {
-						IWorkingSet set = getWorkbenchWindow().getWorkbench()
-								.getWorkingSetManager().getWorkingSet(
-										workingSetChildren[i].getID());
-						if (set != null) {
-							workingSetList.add(set);
-						}
-					}
-
-					workingSets = (IWorkingSet[]) workingSetList
-							.toArray(new IWorkingSet[workingSetList.size()]);
-				}
-	            
-	            aggregateWorkingSetId = memento.getString(ATT_AGGREGATE_WORKING_SET_ID);
-	            
-	            IWorkingSet setWithId = window.getWorkbench().getWorkingSetManager().getWorkingSet(aggregateWorkingSetId);
-	            
-	            // check to see if the set has already been made and assign it if it has
-	            if (setWithId instanceof AggregateWorkingSet) {
-					aggregateWorkingSet = (AggregateWorkingSet) setWithId;
-				}
-                // Restore editor manager.
-                IMemento childMem = memento
-                        .getChild(IWorkbenchConstants.TAG_EDITORS);
-                result.merge(getEditorManager().restoreState(childMem));
-    
-                childMem = memento.getChild(IWorkbenchConstants.TAG_VIEWS);
-                if (childMem != null) {
-					result.merge(getViewFactory().restoreState(childMem));
-				}
-    
-                // Get persp block.
-                childMem = memento.getChild(IWorkbenchConstants.TAG_PERSPECTIVES);
-                String activePartID = childMem
-                        .getString(IWorkbenchConstants.TAG_ACTIVE_PART);
-                String activePartSecondaryID = null;
-                if (activePartID != null) {
-                    activePartSecondaryID = ViewFactory
-                            .extractSecondaryId(activePartID);
-                    if (activePartSecondaryID != null) {
-                        activePartID = ViewFactory.extractPrimaryId(activePartID);
-                    }
-                }
-                final String activePerspectiveID = childMem
-                        .getString(IWorkbenchConstants.TAG_ACTIVE_PERSPECTIVE);
-    
-                // Restore perspectives.
-                final IMemento perspMems[] = childMem
-                        .getChildren(IWorkbenchConstants.TAG_PERSPECTIVE);
-                final Perspective activePerspectiveArray [] = new Perspective[1];
-                
-                for (int i = 0; i < perspMems.length; i++) {
-                    
-                        final IMemento current = perspMems[i];
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-
-								public void runWithException() throws Throwable {
-						            Perspective persp = ((WorkbenchImplementation) Tweaklets
-						    				.get(WorkbenchImplementation.KEY)).createPerspective(null,
-													WorkbenchPage.this);
-									result.merge(persp.restoreState(current));
-									final IPerspectiveDescriptor desc = persp
-											.getDesc();
-									if (desc.equals(activeDescriptor)) {
-										activePerspectiveArray[0] = persp;
-									} else if ((activePerspectiveArray[0] == null)
-											&& desc.getId().equals(
-													activePerspectiveID)) {
-										activePerspectiveArray[0] = persp;
-									}
-									perspList.add(persp);
-									window.firePerspectiveOpened(
-											WorkbenchPage.this, desc);
-								}
-							});
-                }
-                Perspective activePerspective = activePerspectiveArray[0];
-                boolean restoreActivePerspective = false;
-                if (activeDescriptor == null) {
-					restoreActivePerspective = true;
-
-                } else if (activePerspective != null
-                        && activePerspective.getDesc().equals(activeDescriptor)) {
-                    restoreActivePerspective = true;
-                } else {
-                    restoreActivePerspective = false;
-                    activePerspective = createPerspective((PerspectiveDescriptor) activeDescriptor, true);
-                    if (activePerspective == null) {
-                        result
-                                .merge(new Status(
-                                        IStatus.ERROR,
-                                        PlatformUI.PLUGIN_ID,
-                                        0,
-                                        NLS.bind(WorkbenchMessages.Workbench_showPerspectiveError, activeDescriptor.getId() ), 
-                                        null));
-                    }
-                }
-    
-                perspList.setActive(activePerspective);
-    
-                // Make sure we have a valid perspective to work with,
-                // otherwise return.
-                activePerspective = perspList.getActive();
-                if (activePerspective == null) {
-                    activePerspective = perspList.getNextActive();
-                    perspList.setActive(activePerspective);
-                }
-                if (activePerspective != null && restoreActivePerspective) {
-					result.merge(activePerspective.restoreState());
-				}
-    
-                if (activePerspective != null) {
-                	final Perspective myPerspective = activePerspective;
-                	final String myActivePartId = activePartID, mySecondaryId = activePartSecondaryID;
-                	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-						public void runWithException() throws Throwable {
-							window.firePerspectiveActivated(WorkbenchPage.this, myPerspective
-		                            .getDesc());
-		    
-		                    // Restore active part.
-		                    if (myActivePartId != null) {
-		                        IViewReference ref = myPerspective.findView(
-		                        		myActivePartId, mySecondaryId);
-		                        
-		                        if (ref != null) {
-		                            activationList.setActive(ref);
-		                        }
-		                    }
-						}});
-                    
-                }
-    
-                childMem = memento
-                        .getChild(IWorkbenchConstants.TAG_NAVIGATION_HISTORY);
-                if (childMem != null) {
-					navigationHistory.restoreState(childMem);
-				} else if (getActiveEditor() != null) {
-					navigationHistory.markEditor(getActiveEditor());
-				}
-                
-                // restore sticky view state
-                stickyViewMan.restore(memento);
-                    
-                return result;
-            } finally {
-            	String blame = activeDescriptor == null ? pageName : activeDescriptor.getId();
-                UIStats.end(UIStats.RESTORE_WORKBENCH, blame, "WorkbenchPage" + label); //$NON-NLS-1$
-            }
-        } finally {
-        	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					deferUpdates(false);
-				}
-			});
-        }
-    }
-
-    /**
-     * See IWorkbenchPage
-     */
-    public boolean saveAllEditors(boolean confirm) {
-        return saveAllEditors(confirm, false);
-    }
-
-    /**
-     * @param confirm 
-     * @param addNonPartSources true if saveables from non-part sources should be saved too
-     * @return false if the user cancelled 
-     * 
-     */
-    public boolean saveAllEditors(boolean confirm, boolean addNonPartSources) {
-        return getEditorManager().saveAll(confirm, false, addNonPartSources);
-    }
-
-    /*
-     * Saves the workbench part.
-     */
-    protected boolean savePart(ISaveablePart saveable, IWorkbenchPart part,
-            boolean confirm) {
-        // Do not certify part do allow editors inside a multipageeditor to
-        // call this.
-        return getEditorManager().savePart(saveable, part, confirm);
-    }
-
-    /**
-     * Saves an editors in the workbench. If <code>confirm</code> is <code>true</code>
-     * the user is prompted to confirm the command.
-     * 
-     * @param confirm
-     *            if user confirmation should be sought
-     * @return <code>true</code> if the command succeeded, or <code>false</code>
-     *         if the user cancels the command
-     */
-    public boolean saveEditor(IEditorPart editor, boolean confirm) {
-        return savePart(editor, editor, confirm);
-    }
-
-    /**
-     * Saves the current perspective.
-     */
-    public void savePerspective() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-
-        // Always unzoom.
-        if (isZoomed()) {
-			zoomOut();
-		}
-
-        persp.saveDesc();
-    }
-
-    /**
-     * Saves the perspective.
-     */
-    public void savePerspectiveAs(IPerspectiveDescriptor newDesc) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-        IPerspectiveDescriptor oldDesc = persp.getDesc();
-
-        // Always unzoom.
-        if (isZoomed()) {
-			zoomOut();
-		}
-
-        persp.saveDescAs(newDesc);
-        window.firePerspectiveSavedAs(this, oldDesc, newDesc);
-    }
-
-    /**
-     * Save the state of the page.
-     */
-    public IStatus saveState(IMemento memento) {
-        // We must unzoom to get correct layout.
-        if (isZoomed()) {
-			zoomOut();
-		}
-
-        MultiStatus result = new MultiStatus(
-                PlatformUI.PLUGIN_ID,
-                IStatus.OK,
-                NLS.bind(WorkbenchMessages.WorkbenchPage_unableToSavePerspective, getLabel()), 
-                null);
-
-        // Save editor manager.
-        IMemento childMem = memento
-                .createChild(IWorkbenchConstants.TAG_EDITORS);
-        result.merge(editorMgr.saveState(childMem));
-
-        childMem = memento.createChild(IWorkbenchConstants.TAG_VIEWS);
-        result.merge(getViewFactory().saveState(childMem));
-
-        // Create persp block.
-        childMem = memento.createChild(IWorkbenchConstants.TAG_PERSPECTIVES);
-        if (getPerspective() != null) {
-			childMem.putString(IWorkbenchConstants.TAG_ACTIVE_PERSPECTIVE,
-                    getPerspective().getId());
-		}
-        if (getActivePart() != null) {
-            if (getActivePart() instanceof IViewPart) {
-                IViewReference ref = (IViewReference) getReference(getActivePart());
-                if (ref != null) {
-                    childMem.putString(IWorkbenchConstants.TAG_ACTIVE_PART,
-                            ViewFactory.getKey(ref));
-                }
-            } else {
-                childMem.putString(IWorkbenchConstants.TAG_ACTIVE_PART,
-                        getActivePart().getSite().getId());
-            }
-        }
-
-        // Save each perspective in opened order
-        Iterator itr = perspList.iterator();
-        while (itr.hasNext()) {
-            Perspective persp = (Perspective) itr.next();
-            IMemento gChildMem = childMem
-                    .createChild(IWorkbenchConstants.TAG_PERSPECTIVE);
-            result.merge(persp.saveState(gChildMem));
-        }
-        // Save working set if set
-        if (workingSet != null) {
-            memento.putString(IWorkbenchConstants.TAG_WORKING_SET, workingSet
-                    .getName());
-        }
-        
-        IMemento workingSetMem = memento
-				.createChild(IWorkbenchConstants.TAG_WORKING_SETS);
-		for (int i = 0; i < workingSets.length; i++) {
-			workingSetMem.createChild(IWorkbenchConstants.TAG_WORKING_SET,
-					workingSets[i].getName());
-		}
-		
-		if (aggregateWorkingSetId != null) {
-			memento.putString(ATT_AGGREGATE_WORKING_SET_ID, aggregateWorkingSetId);
-		}
-
-        navigationHistory.saveState(memento
-                .createChild(IWorkbenchConstants.TAG_NAVIGATION_HISTORY));
-        
-        
-        // save the sticky activation state
-        stickyViewMan.save(memento);
-        
-		return result;
-    }
-    
-    private String getId(IWorkbenchPart part) {
-        return getId(getReference(part));
-    }
-    
-    private String getId(IWorkbenchPartReference ref) {
-        if (ref == null) {
-            return "null"; //$NON-NLS-1$
-        } return ref.getId();
-    }
-
-    /**
-     * Sets the active part.
-     */
-    private void setActivePart(IWorkbenchPart newPart) {
-        // Optimize it.
-        if (getActivePart() == newPart) {
-            return;
-        }
-        
-        if (partBeingActivated != null) {
-            if (partBeingActivated.getPart(false) != newPart) {
-                WorkbenchPlugin.log(new RuntimeException(NLS.bind(
-                        "WARNING: Prevented recursive attempt to activate part {0} while still in the middle of activating part {1}", //$NON-NLS-1$
-                        getId(newPart), getId(partBeingActivated))));
-            }
-            return;
-        }
-
-        //No need to change the history if the active editor is becoming the
-        // active part
-        String label = null; // debugging only
-        if (UIStats.isDebugging(UIStats.ACTIVATE_PART)) {
-            label = newPart != null ? newPart.getTitle() : "none"; //$NON-NLS-1$
-        }
-        try {
-            IWorkbenchPartReference partref = getReference(newPart);
-            IWorkbenchPartReference realPartRef = null;
-			if (newPart != null) {
-				IWorkbenchPartSite site = newPart.getSite();
-				if (site instanceof PartSite) {
-					realPartRef = ((PartSite) site).getPane()
-							.getPartReference();
-				}
-			}
-
-            partBeingActivated = realPartRef;
-            
-            UIStats.start(UIStats.ACTIVATE_PART, label);
-            // Notify perspective. It may deactivate fast view.
-            Perspective persp = getActivePerspective();
-            if (persp != null) {
-				persp.partActivated(newPart);
-			}
-
-            // Deactivate old part
-            IWorkbenchPart oldPart = getActivePart();
-            if (oldPart != null) {
-                deactivatePart(oldPart);
-            }
-            
-            // Set active part.
-            if (newPart != null) {
-                activationList.setActive(newPart);
-                if (newPart instanceof IEditorPart) {
-					makeActiveEditor((IEditorReference)realPartRef);
-				}
-            }
-            activatePart(newPart);
-            
-            actionSwitcher.updateActivePart(newPart);
-            
-            partList.setActivePart(partref);
-        } finally {
-            partBeingActivated = null;
-        	Object blame = newPart == null ? (Object)this : newPart;
-            UIStats.end(UIStats.ACTIVATE_PART, blame, label);
-        }
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public void setEditorAreaVisible(boolean showEditorArea) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-        if (showEditorArea == persp.isEditorAreaVisible()) {
-			return;
-		}
-        // If parts change always update zoom.
-        if (isZoomed()) {
-			zoomOut();
-		}
-        // Update editor area visibility.
-        if (showEditorArea) {
-            persp.showEditorArea();
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_EDITOR_AREA_SHOW);
-        } else {
-            persp.hideEditorArea();
-            updateActivePart();
-            window.firePerspectiveChanged(this, getPerspective(),
-                    CHANGE_EDITOR_AREA_HIDE);
-        }
-    }
-
-    /**
-     * Sets the layout of the page. Assumes the new perspective is not null.
-     * Keeps the active part if possible. Updates the window menubar and
-     * toolbar if necessary.
-     */
-    private void setPerspective(Perspective newPersp) {
-        // Don't do anything if already active layout
-        Perspective oldPersp = getActivePerspective();
-        if (oldPersp == newPersp) {
-			return;
-		}
-
-        window.largeUpdateStart();
-        try {
-	        if (oldPersp != null) {
-	        	// fire the pre-deactivate
-				window.firePerspectivePreDeactivate(this, oldPersp.getDesc());
-	        }
-	        
-	        if (newPersp != null) {
-	            IStatus status = newPersp.restoreState();
-	            if (status.getSeverity() != IStatus.OK) {
-	                String title = WorkbenchMessages.WorkbenchPage_problemRestoringTitle; 
-	                String msg = WorkbenchMessages.WorkbenchPage_errorReadingState;
-	                ErrorDialog.openError(getWorkbenchWindow().getShell(), title,
-	                        msg, status);
-	            }
-	        }
-	
-	
-	        // Deactivate the old layout
-	        if (oldPersp != null) {
-				oldPersp.onDeactivate();
-
-				// Notify listeners of deactivation
-				window.firePerspectiveDeactivated(this, oldPersp.getDesc());
-	        }
-	
-	        // Activate the new layout
-	        perspList.setActive(newPersp);
-	        if (newPersp != null) {
-	            newPersp.onActivate();
-	
-	            // Notify listeners of activation
-	            window.firePerspectiveActivated(this, newPersp.getDesc());
-	        }
-	
-	        updateVisibility(oldPersp, newPersp);
-	
-            // Update the window
-            window.updateActionSets();
-
-            // Update sticky views
-            stickyViewMan.update(oldPersp, newPersp);
-            
-        } finally {
-            window.largeUpdateEnd();
-            if (newPersp == null) {
-				return;
-			}
-            IPerspectiveDescriptor desc = newPersp.getDesc();
-            if (desc == null) {
-				return;
-			}
-            if (dirtyPerspectives.remove(desc.getId())) {
-            	suggestReset();
-            }
-        }
-    }
-
-    void perspectiveActionSetChanged(Perspective perspective, IActionSetDescriptor descriptor, int changeType) {
-        if (perspective == getActivePerspective()) {
-            actionSets.change(descriptor, changeType);
-        }
-    }
-    
-	/*
-     * Update visibility state of all views.
-     */
-    private void updateVisibility(Perspective oldPersp, Perspective newPersp) {
-        
-        // Flag all parts in the old perspective
-        IWorkbenchPartReference[] oldRefs = new IWorkbenchPartReference[0];
-        if (oldPersp != null) {
-            oldRefs = oldPersp.getViewReferences();
-            for (int i = 0; i < oldRefs.length; i++) {
-                PartPane pane = ((WorkbenchPartReference) oldRefs[i]).getPane();
-                pane.setInLayout(false);
-            }
-        }
-        
-        PerspectiveHelper pres = null;
-        // Make parts in the new perspective visible
-        if (newPersp != null) {
-            pres = newPersp.getPresentation();
-            IWorkbenchPartReference[] newRefs = newPersp.getViewReferences();
-            for (int i = 0; i < newRefs.length; i++) {
-                WorkbenchPartReference ref = (WorkbenchPartReference)newRefs[i];
-                PartPane pane = ref.getPane();
-                if (pres.isPartVisible(ref)) {
-                    activationList.bringToTop(ref);
-                }
-
-                pane.setInLayout(true);
-            }
-        }
-
-        updateActivePart();
-
-        // Hide any parts in the old perspective that are no longer visible
-        for (int i = 0; i < oldRefs.length; i++) {
-            WorkbenchPartReference ref = (WorkbenchPartReference)oldRefs[i];
-               
-            PartPane pane = ref.getPane();
-            if (pres == null || !pres.isPartVisible(ref)) {
-                pane.setVisible(false);
-            }
-        }
-    }
-
-    /**
-     * Sets the perspective.
-     * 
-     * @param desc
-     *            identifies the new perspective.
-     */
-    public void setPerspective(final IPerspectiveDescriptor desc) {
-    	if (Util.equals(getPerspective(), desc)) {
-    		return;
-    	}
-        // Going from multiple to single rows can make the coolbar
-        // and its adjacent views appear jumpy as perspectives are
-        // switched. Turn off redraw to help with this.
-        ICoolBarManager2 mgr = (ICoolBarManager2) window.getCoolBarManager2();
-        try {
-            mgr.getControl2().setRedraw(false);
-            getClientComposite().setRedraw(false);
-            // Run op in busy cursor.
-            BusyIndicator.showWhile(null, new Runnable() {
-                public void run() {
-                    busySetPerspective(desc);
-                }
-            });
-        } finally {
-            getClientComposite().setRedraw(true);
-            mgr.getControl2().setRedraw(true);
-            IWorkbenchPart part = getActivePart();
-            if (part != null) {
-				part.setFocus();
-			}
-        }
-    }
-    
-    /**
-     * Allow access to the part service for this page ... used internally to
-     * propogate certain types of events to the page part listeners.
-     * @return the part service for this page.
-     */
-    public PartService getPartService() {
-    	return (PartService)partList.getPartService();
-    }
-
-    /**
-     * Restore the toolbar layout for the active perspective.
-     */
-    protected void resetToolBarLayout() {
-    	ICoolBarManager2 mgr = (ICoolBarManager2) window.getCoolBarManager2();
-    	mgr.resetItemOrder();
-    }
-
-    /**
-     * Sets the active working set for the workbench page. Notifies property
-     * change listener about the change.
-     * 
-     * @param newWorkingSet
-     *            the active working set for the page. May be null.
-     * @since 2.0
-     * @deprecated individual views should store a working set if needed
-     */
-    public void setWorkingSet(IWorkingSet newWorkingSet) {
-        IWorkingSet oldWorkingSet = workingSet;
-
-        workingSet = newWorkingSet;
-        if (oldWorkingSet != newWorkingSet) {
-            firePropertyChange(CHANGE_WORKING_SET_REPLACE, oldWorkingSet,
-                    newWorkingSet);
-        }
-        if (newWorkingSet != null) {
-            WorkbenchPlugin.getDefault().getWorkingSetManager()
-                    .addPropertyChangeListener(workingSetPropertyChangeListener);
-        } else {
-            WorkbenchPlugin.getDefault().getWorkingSetManager()
-                    .removePropertyChangeListener(workingSetPropertyChangeListener);
-        }
-    }
-
-    /**
-     * @see IWorkbenchPage
-     */
-    public void showActionSet(String actionSetID) {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-            ActionSetRegistry reg = WorkbenchPlugin.getDefault()
-                 .getActionSetRegistry();
-            
-            IActionSetDescriptor desc = reg.findActionSet(actionSetID);
-            if (desc != null) {
-                persp.addActionSet(desc);
-                window.updateActionSets();
-                window.firePerspectiveChanged(this, getPerspective(),
-                        CHANGE_ACTION_SET_SHOW);
-            }
-        }
-    }
-
-    /**
-     * See IWorkbenchPage.
-     */
-    public IViewPart showView(String viewID) throws PartInitException {
-        return showView(viewID, null, VIEW_ACTIVATE);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#showView(java.lang.String,
-     *      java.lang.String, int)
-     */
-    public IViewPart showView(final String viewID, final String secondaryID,
-            final int mode) throws PartInitException {
-
-        if (secondaryID != null) {
-            if (secondaryID.length() == 0
-                    || secondaryID.indexOf(ViewFactory.ID_SEP) != -1) {
-				throw new IllegalArgumentException(WorkbenchMessages.WorkbenchPage_IllegalSecondaryId);
-			} 
-        }
-        if (!certifyMode(mode)) {
-			throw new IllegalArgumentException(WorkbenchMessages.WorkbenchPage_IllegalViewMode);
-		}
-
-        // Run op in busy cursor.
-        final Object[] result = new Object[1];
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-                try {
-                    result[0] = busyShowView(viewID, secondaryID, mode);
-                } catch (PartInitException e) {
-                    result[0] = e;
-                }
-            }
-        });
-        if (result[0] instanceof IViewPart) {
-			return (IViewPart) result[0];
-		} else if (result[0] instanceof PartInitException) {
-			throw (PartInitException) result[0];
-		} else {
-			throw new PartInitException(WorkbenchMessages.WorkbenchPage_AbnormalWorkbenchCondition);
-		} 
-    }
-
-    /**
-     * @param mode the mode to test
-     * @return whether the mode is recognized
-     * @since 3.0
-     */
-    private boolean certifyMode(int mode) {
-        switch (mode) {
-        case VIEW_ACTIVATE:
-        case VIEW_VISIBLE:
-        case VIEW_CREATE:
-            return true;
-        default:
-            return false;
-        }
-    }
-
-    /**
-     * Hides the active fast view. Has no effect if there is no fast view active.
-     */
-    public void hideFastView() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-            IViewReference ref = persp.getActiveFastView();
-            if (ref != null) {
-                toggleFastView(ref);
-            }
-        }
-    }
-
-    /**
-     * Toggles the visibility of a fast view. If the view is active it is
-     * deactivated. Otherwise, it is activated.
-     */
-    public void toggleFastView(IViewReference ref) {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-            persp.toggleFastView(ref);
-            // if the fast view has been deactivated
-            if (ref != persp.getActiveFastView()) {
-                IWorkbenchPart previouslyActive = activationList
-                        .getPreviouslyActive();
-                IEditorPart activeEditor = getActiveEditor();
-                if (activeEditor != null
-                        && previouslyActive instanceof IEditorPart) {
-					setActivePart(activeEditor);
-				} else {
-					setActivePart(previouslyActive);
-				}
-            }
-        }
-    }
-
-    /**
-     * Sets the state of the given part.
-     * 
-     * @param ref part whose state should be modified (not null)
-     * @param newState one of the IStackPresentationSite.STATE_* constants
-     */
-    public void setState(IWorkbenchPartReference ref, int newState) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return;
-		}
-
-        PartPane pane = ((WorkbenchPartReference) ref).getPane();
-
-        // If target part is detached fire the zoom event.  Note this doesn't 
-        // actually cause any changes in size and is required to support 
-        // intro state changes.  We may want to introduce the notion of a zoomed
-        // (fullscreen) detached view at a later time.
-        if (!pane.isDocked()) {
-            pane.setZoomed(newState == IStackPresentationSite.STATE_MAXIMIZED);
-            return;
-        }
-
-        if (ref instanceof IViewReference
-                && persp.isFastView((IViewReference) ref)) {
-            persp.setFastViewState(newState);
-            return;
-        }
-
-    	if (Perspective.useNewMinMax(persp)) {
-	        // set the container's state to the new one
-	        PartStack parent = ((PartStack)pane.getContainer());
-	        parent.setState(newState);
-	        return;
-    	}
-    	
-        boolean wasZoomed = isZoomed();
-        boolean isZoomed = newState == IStackPresentationSite.STATE_MAXIMIZED;
-		
-        // Update zoom status.
-        if (wasZoomed && !isZoomed) {
-            zoomOut();
-        } else if (!wasZoomed && isZoomed) {
-            persp.getPresentation().zoomIn(ref);
-            activate(ref.getPart(true));
-        }
-    	
-        PartStack parent = ((PartStack)pane.getContainer());
-        
-        if (parent != null) {
-            parent.setMinimized(newState == IStackPresentationSite.STATE_MINIMIZED);
-        }
-}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPage#setPartState(org.eclipse.ui.IWorkbenchPartReference, int)
-     */
-    public void setPartState(IWorkbenchPartReference ref, int state) {
-    	setState(ref, state);
-    }
-    
-    /**
-     * Returns the maximized/minimized/restored state of the given part reference
-     * 
-     * @param ref part to query (not null)
-     * @return one of the IStackPresentationSite.STATE_* constants
-     */
-    int getState(IWorkbenchPartReference ref) {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-			return IStackPresentationSite.STATE_RESTORED;
-		}
-
-        PartPane pane = ((WorkbenchPartReference) ref).getPane();
-    	
-        if (ref instanceof IViewReference
-                && persp.isFastView((IViewReference) ref)) {
-            return persp.getFastViewState();
-        }    	
-        
-        PartStack parent = ((PartStack)pane.getContainer());
-        
-        if (parent != null) {
-        	return parent.getState();
-        }
-        
-        return IStackPresentationSite.STATE_RESTORED;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPage#getPartState(org.eclipse.ui.IWorkbenchPartReference)
-     */
-    public int getPartState(IWorkbenchPartReference ref) {
-    	return getState(ref);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPage#toggleZoom(org.eclipse.ui.IWorkbenchPartReference)
-     */
-    public void toggleZoom(IWorkbenchPartReference ref) {
-    	int oldState = getState(ref);
-    	boolean shouldZoom = oldState != IStackPresentationSite.STATE_MAXIMIZED;
-    	int newState = shouldZoom ? IStackPresentationSite.STATE_MAXIMIZED : IStackPresentationSite.STATE_RESTORED;
-    	
-    	setState(ref, newState);
-    }
-
-    /**
-     * updateActionBars method comment.
-     */
-    public void updateActionBars() {
-        window.updateActionBars();
-    }
-
-    /**
-     * Sets the tab list of this page's composite appropriately when a part is
-     * activated.
-     */
-    private void updateTabList(IWorkbenchPart part) {
-        PartSite site = (PartSite) part.getSite();
-        PartPane pane = site.getPane();
-        if (pane instanceof ViewPane) {
-            ViewPane viewPane = (ViewPane) pane;
-            Control[] tabList = viewPane.getTabList();
-            if (!pane.isDocked()) {
-                viewPane.getControl().getShell().setTabList(tabList);
-            } else {
-                getClientComposite().setTabList(tabList);
-            }
-        } else if (pane instanceof EditorPane) {
-            EditorSashContainer ea = ((EditorPane) pane).getWorkbook()
-                    .getEditorArea();
-            ea.updateTabList();
-            getClientComposite().setTabList(new Control[] { ea.getParent() });
-        }
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPage#zoomOut()
-     */
-    public void zoomOut() {
-        Perspective persp = getActivePerspective();
-        if (persp != null) {
-			persp.getPresentation().zoomOut();
-		}
-    }
-
-    /**
-     * Zooms out a zoomed in part if it is necessary to do so for the user to
-     * view the IWorkbenchPart that is the argument. Otherwise, does nothing.
-     * 
-     * @param part
-     *            the part to be made viewable
-     */
-    private void zoomOutIfNecessary(IWorkbenchPart part) {
-        if (isZoomed() && partChangeAffectsZoom(((PartSite)part.getSite()).getPartReference())) {
-			zoomOut();
-		}
-    }
-
-    /**
-     * 
-     */
-    public int getEditorReuseThreshold() {
-    	return ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).getEditorReuseThreshold();
-    }
-
-    /**
-     * 
-     */
-    public void setEditorReuseThreshold(int openEditors) {
-    }
-
-    /*
-     * Returns the editors in activation order (oldest first).
-     */
-    public IEditorReference[] getSortedEditors() {
-        return activationList.getEditors();
-    }
-
-    /**
-     * @see IWorkbenchPage#getOpenPerspectives()
-     */
-    public IPerspectiveDescriptor[] getOpenPerspectives() {
-        Perspective opened[] = perspList.getOpenedPerspectives();
-        IPerspectiveDescriptor[] result = new IPerspectiveDescriptor[opened.length];
-        for (int i = 0; i < result.length; i++) {
-            result[i] = opened[i].getDesc();
-        }
-        return result;
-    }
-    
-    /**
-     * Return all open Perspective objects.
-     * 
-     * @return all open Perspective objects
-     * @since 3.1
-     */
-    /*package*/Perspective [] getOpenInternalPerspectives() {
-        return perspList.getOpenedPerspectives();
-    }
-	
-	/**
-	 * Checks perspectives in the order they were activiated
-	 * for the specfied part.  The first sorted perspective 
-	 * that contains the specified part is returned.
-	 * 
-	 * @param part specified part to search for
-	 * @return the first sorted perspespective containing the part
-	 * @since 3.1
-	 */
-	/*package*/Perspective getFirstPerspectiveWithView(IViewPart part) {
-		Perspective [] perspectives = perspList.getSortedPerspectives();
-		for (int i=perspectives.length - 1; i >= 0; i--) {
-			if (perspectives[i].containsView(part)) {
-				return perspectives[i];
-			}
-		}
-		// we should never get here
-		return null;
-	}
-
-    /**
-     * Returns the perspectives in activation order (oldest first).
-     */
-    public IPerspectiveDescriptor[] getSortedPerspectives() {
-        Perspective sortedArray[] = perspList.getSortedPerspectives();
-        IPerspectiveDescriptor[] result = new IPerspectiveDescriptor[sortedArray.length];
-        for (int i = 0; i < result.length; i++) {
-            result[i] = sortedArray[i].getDesc();
-        }
-        return result;
-    }
-
-    /*
-     * Returns the parts in activation order (oldest first).
-     */
-    public IWorkbenchPartReference[] getSortedParts() {
-        return activationList.getParts();
-    }
-
-    /**
-     * Returns the reference to the given part, or <code>null</code> if it has no reference 
-     * (i.e. it is not a top-level part in this workbench page).
-     * 
-     * @param part the part
-     * @return the part's reference or <code>null</code> if the given part does not belong 
-     * to this workbench page
-     */
-    public IWorkbenchPartReference getReference(IWorkbenchPart part) {
-        if (part == null) {
-            return null;
-        }
-        IWorkbenchPartSite site = part.getSite();
-        if (!(site instanceof PartSite)) {
-        	return null;
-        }
-        PartSite partSite = ((PartSite) site);
-        PartPane pane = partSite.getPane();
-        if (pane instanceof MultiEditorInnerPane) {
-            MultiEditorInnerPane innerPane = (MultiEditorInnerPane) pane;
-            return innerPane.getParentPane().getPartReference();
-        }
-        return partSite.getPartReference();
-    }
-
-    private class ActivationList {
-        //List of parts in the activation order (oldest first)
-        List parts = new ArrayList();
-
-        /*
-         * Add/Move the active part to end of the list;
-         */
-        void setActive(IWorkbenchPart part) {
-            if (parts.size() <= 0) {
-				return;
-			}
-			IWorkbenchPartReference ref = getReference(part);
-			if (ref != null) {
-				if (ref == parts.get(parts.size() - 1)) {
-					return;
-				}
-				parts.remove(ref);
-				parts.add(ref);
-			}
-        }
-        
-        /*
-		 * Ensures that the given part appears AFTER any other part in the same
-		 * container.
-		 */
-        void bringToTop(IWorkbenchPartReference ref) {
-            ILayoutContainer targetContainer = getContainer(ref);
-            
-            int newIndex = lastIndexOfContainer(targetContainer);
-            
-            //New index can be -1 if there is no last index
-            if (newIndex >= 0 && ref == parts.get(newIndex)) 
-				return;
-			
-            parts.remove(ref);
-            if(newIndex >= 0)
-            	parts.add(newIndex, ref);
-            else
-            	parts.add(ref);
-        }
-        
-        /*
-         * Returns the last (most recent) index of the given container in the activation list, or returns
-         * -1 if the given container does not appear in the activation list.
-         */
-        int lastIndexOfContainer(ILayoutContainer container) {
-            for (int i = parts.size() - 1; i >= 0; i--) {
-                IWorkbenchPartReference ref = (IWorkbenchPartReference)parts.get(i);
-
-                ILayoutContainer cnt = getContainer(ref);
-                if (cnt == container) {
-                    return i; 
-                }
-            }
-            
-            return -1;
-        }
-
-        /*
-         * Add/Move the active part to end of the list;
-         */
-        void setActive(IWorkbenchPartReference ref) {
-            setActive(ref.getPart(true));
-        }
-
-        /*
-         * Add the active part to the beginning of the list.
-         */
-        void add(IWorkbenchPartReference ref) {
-            if (parts.indexOf(ref) >= 0) {
-				return;
-			}
-
-            IWorkbenchPart part = ref.getPart(false);
-            if (part != null) {
-                PartPane pane = ((PartSite) part.getSite()).getPane();
-                if (pane instanceof MultiEditorInnerPane) {
-                    MultiEditorInnerPane innerPane = (MultiEditorInnerPane) pane;
-                    add(innerPane.getParentPane().getPartReference());
-                    return;
-                }
-            }
-            parts.add(0, ref);
-        }
-
-        /*
-         * Return the active part. Filter fast views.
-         */
-        IWorkbenchPart getActive() {
-            if (parts.isEmpty()) {
-				return null;
-			}
-            return getActive(parts.size() - 1);
-        }
-
-        /*
-         * Return the previously active part. Filter fast views.
-         */
-        IWorkbenchPart getPreviouslyActive() {
-            if (parts.size() < 2) {
-				return null;
-			}
-            return getActive(parts.size() - 2);
-        }
-
-        private IWorkbenchPart getActive(int start) {
-            IWorkbenchPartReference ref = getActiveReference(start, false);
-            
-            if (ref == null) {
-                return null;
-            }
-            
-            return ref.getPart(true);
-        }
-        
-        public IWorkbenchPartReference getActiveReference(boolean editorsOnly) {
-            return getActiveReference(parts.size() - 1, editorsOnly);
-        }
-        
-        private IWorkbenchPartReference getActiveReference(int start, boolean editorsOnly) {
-            // First look for parts that aren't obscured by the current zoom state
-            IWorkbenchPartReference nonObscured = getActiveReference(start, editorsOnly, true);
-            
-            if (nonObscured != null) {
-                return nonObscured;
-            }
-            
-            // Now try all the rest of the parts
-            return getActiveReference(start, editorsOnly, false);
-        }
-        
-        /*
-         * Find a part in the list starting from the end and filter
-         * and views from other perspectives. Will filter fast views
-         * unless 'includeActiveFastViews' is true;
-         */
-        private IWorkbenchPartReference getActiveReference(int start, boolean editorsOnly, boolean skipPartsObscuredByZoom) {
-            IWorkbenchPartReference[] views = getViewReferences();
-            for (int i = start; i >= 0; i--) {
-                WorkbenchPartReference ref = (WorkbenchPartReference) parts
-                        .get(i);
-
-                if (editorsOnly && !(ref instanceof IEditorReference)) {
-                    continue;
-                }
-                
-                // Skip parts whose containers have disabled auto-focus
-                PartPane pane = ref.getPane();
-
-                if (pane != null) {
-                    if (!pane.allowsAutoFocus()) {
-                        continue;
-                    }
-                    
-                    if (skipPartsObscuredByZoom) {
-                        if (pane.isObscuredByZoom()) {
-                            continue;
-                        }
-                    }
-                }
-
-                // Skip fastviews (unless overridden)
-                if (ref instanceof IViewReference) {
-                    if (ref == getActiveFastView() || !((IViewReference) ref).isFastView()) {
-                        for (int j = 0; j < views.length; j++) {
-                            if (views[j] == ref) {
-                                return ref;
-                            }
-                        }
-                    }
-                } else {
-                    return ref;
-                }
-            }
-            return null;
-        }
-
-        /*
-         * Retuns the index of the part within the activation list. The higher
-         * the index, the more recently it was used.
-         */
-        int indexOf(IWorkbenchPart part) {
-        	IWorkbenchPartReference ref = getReference(part);
-        	if (ref == null) {
-        		return -1;
-        	}
-            return parts.indexOf(ref);
-        }
-
-        /*
-         * Returns the index of the part reference within the activation list.  
-         * The higher the index, the more recent it was used.
-         */
-        int indexOf(IWorkbenchPartReference ref) {
-            return parts.indexOf(ref);
-        }
-
-        /*
-         * Remove a part from the list
-         */
-        boolean remove(IWorkbenchPartReference ref) {
-            return parts.remove(ref);
-        }
-
-        /*
-         * Returns the editors in activation order (oldest first).
-         */
-        private IEditorReference[] getEditors() {
-            ArrayList editors = new ArrayList(parts.size());
-            for (Iterator i = parts.iterator(); i.hasNext();) {
-                IWorkbenchPartReference part = (IWorkbenchPartReference) i
-                        .next();
-                if (part instanceof IEditorReference) {
-                    editors.add(part);
-                }
-            }
-            return (IEditorReference[]) editors
-                    .toArray(new IEditorReference[editors.size()]);
-        }
-
-        /*
-         * Return a list with all parts (editors and views).
-         */
-        private IWorkbenchPartReference[] getParts() {
-            IWorkbenchPartReference[] views = getViewReferences();
-            ArrayList resultList = new ArrayList(parts.size());
-            for (Iterator iterator = parts.iterator(); iterator.hasNext();) {
-                IWorkbenchPartReference ref = (IWorkbenchPartReference) iterator
-                        .next();
-                if (ref instanceof IViewReference) {
-                    //Filter views from other perspectives
-                    for (int i = 0; i < views.length; i++) {
-                        if (views[i] == ref) {
-                            resultList.add(ref);
-                            break;
-                        }
-                    }
-                } else {
-                    resultList.add(ref);
-                }
-            }
-            IWorkbenchPartReference[] result = new IWorkbenchPartReference[resultList
-                    .size()];
-            return (IWorkbenchPartReference[]) resultList.toArray(result);
-        }
-
-        /*
-         * Returns the topmost editor on the stack, or null if none.
-         */
-        IEditorPart getTopEditor() {
-            IEditorReference editor = (IEditorReference)getActiveReference(parts.size() - 1, true);
-            
-            if (editor == null) {
-                return null;
-            }
-            
-            return editor.getEditor(true);
-        }
-    }
-
-    /**
-     * Helper class to keep track of all opened perspective. Both the opened
-     * and used order is kept.
-     */
-    private class PerspectiveList {
-        /**
-         * List of perspectives in the order they were opened;
-         */
-        private List openedList;
-
-        /**
-         * List of perspectives in the order they were used. Last element is
-         * the most recently used, and first element is the least recently
-         * used.
-         */
-        private List usedList;
-
-        /**
-         * The perspective explicitly set as being the active one
-         */
-        private Perspective active;
-
-        /**
-         * Creates an empty instance of the perspective list
-         */
-        public PerspectiveList() {
-            openedList = new ArrayList();
-            usedList = new ArrayList();
-        }
-
-        /**
-         * Update the order of the perspectives in the opened list
-         *
-         * @param perspective
-         * @param newLoc
-         */
-        public void reorder(IPerspectiveDescriptor perspective, int newLoc) {
-			int oldLocation = 0;
-			Perspective movedPerspective = null;
-			for (Iterator iterator = openedList.iterator(); iterator.hasNext();) {
-				Perspective openPerspective = (Perspective) iterator.next();
-				if (openPerspective.getDesc().equals(perspective)) {
-					oldLocation = openedList.indexOf(openPerspective);
-					movedPerspective = openPerspective;
-				}
-			}
-			
-			if (oldLocation == newLoc) {
-				return;
-			}
-			
-			openedList.remove(oldLocation);
-			openedList.add(newLoc, movedPerspective);
-			
-		}
-
-		/**
-		 * Return all perspectives in the order they were activated.
-		 * 
-		 * @return an array of perspectives sorted by activation order, least
-		 *         recently activated perspective last.
-		 */
-        public Perspective[] getSortedPerspectives() {
-            Perspective[] result = new Perspective[usedList.size()];
-            return (Perspective[]) usedList.toArray(result);
-        }
-
-        /**
-         * Adds a perspective to the list. No check is done for a duplicate when
-         * adding.
-         * @param perspective the perspective to add
-         * @return boolean <code>true</code> if the perspective was added
-         */
-        public boolean add(Perspective perspective) {
-            openedList.add(perspective);
-            usedList.add(0, perspective);
-            //It will be moved to top only when activated.
-            return true;
-        }
-
-        /**
-         * Returns an iterator on the perspective list in the order they were
-         * opened.
-         */
-        public Iterator iterator() {
-            return openedList.iterator();
-        }
-
-        /**
-         * Returns an array with all opened perspectives
-         */
-        public Perspective[] getOpenedPerspectives() {
-            Perspective[] result = new Perspective[openedList.size()];
-            return (Perspective[]) openedList.toArray(result);
-        }
-
-        /**
-         * Removes a perspective from the list.
-         */
-        public boolean remove(Perspective perspective) {
-            if (active == perspective) {
-                updateActionSets(active, null);
-                active = null;
-            }
-            usedList.remove(perspective);
-            return openedList.remove(perspective);
-        }
-
-        /**
-         * Swap the opened order of old perspective with the new perspective.
-         */
-        public void swap(Perspective oldPerspective, Perspective newPerspective) {
-            int oldIndex = openedList.indexOf(oldPerspective);
-            int newIndex = openedList.indexOf(newPerspective);
-
-            if (oldIndex < 0 || newIndex < 0) {
-				return;
-			}
-
-            openedList.set(oldIndex, newPerspective);
-            openedList.set(newIndex, oldPerspective);
-        }
-
-        /**
-         * Returns whether the list contains any perspectives
-         */
-        public boolean isEmpty() {
-            return openedList.isEmpty();
-        }
-
-        /**
-         * Returns the most recently used perspective in the list.
-         */
-        public Perspective getActive() {
-            return active;
-        }
-
-        /**
-         * Returns the next most recently used perspective in the list.
-         */
-        public Perspective getNextActive() {
-            if (active == null) {
-                if (usedList.isEmpty()) {
-					return null;
-				} else {
-					return (Perspective) usedList.get(usedList.size() - 1);
-				}
-            } else {
-                if (usedList.size() < 2) {
-					return null;
-				} else {
-					return (Perspective) usedList.get(usedList.size() - 2);
-				}
-            }
-        }
-
-        /**
-         * Returns the number of perspectives opened
-         */
-        public int size() {
-            return openedList.size();
-        }
-
-        /**
-         * Marks the specified perspective as the most recently used one in the
-         * list.
-         */
-        public void setActive(Perspective perspective) {
-            if (perspective == active) {
-				return;
-			}
-
-            updateActionSets(active, perspective);
-            active = perspective;
-
-            if (perspective != null) {
-                usedList.remove(perspective);
-                usedList.add(perspective);
-            }
-        }
-        
-        private void updateActionSets(Perspective oldPersp, Perspective newPersp) {
-			// Update action sets
-
-			IContextService service = (IContextService) window
-					.getService(IContextService.class);
-			try {
-				service.activateContext(ContextAuthority.DEFER_EVENTS);
-				if (newPersp != null) {
-					IActionSetDescriptor[] newAlwaysOn = newPersp
-							.getAlwaysOnActionSets();
-					for (int i = 0; i < newAlwaysOn.length; i++) {
-						IActionSetDescriptor descriptor = newAlwaysOn[i];
-
-						actionSets.showAction(descriptor);
-					}
-
-					IActionSetDescriptor[] newAlwaysOff = newPersp
-							.getAlwaysOffActionSets();
-					for (int i = 0; i < newAlwaysOff.length; i++) {
-						IActionSetDescriptor descriptor = newAlwaysOff[i];
-
-						actionSets.maskAction(descriptor);
-					}
-				}
-
-				if (oldPersp != null) {
-					IActionSetDescriptor[] newAlwaysOn = oldPersp
-							.getAlwaysOnActionSets();
-					for (int i = 0; i < newAlwaysOn.length; i++) {
-						IActionSetDescriptor descriptor = newAlwaysOn[i];
-
-						actionSets.hideAction(descriptor);
-					}
-
-					IActionSetDescriptor[] newAlwaysOff = oldPersp
-							.getAlwaysOffActionSets();
-					for (int i = 0; i < newAlwaysOff.length; i++) {
-						IActionSetDescriptor descriptor = newAlwaysOff[i];
-
-						actionSets.unmaskAction(descriptor);
-					}
-				}
-			} finally {
-				service.activateContext(ContextAuthority.SEND_EVENTS);
-			}
-		}
-    }
-
-    // for dynamic UI
-    protected void addPerspective(Perspective persp) {
-        perspList.add(persp);
-        window.firePerspectiveOpened(this, persp.getDesc());
-    }
-
-    /**
-	 * Find the stack of view references stacked with this view part.
-	 * 
-	 * @param part
-	 *            the part
-	 * @return the stack of references
-	 * @since 3.0
-	 */
-    private IViewReference[] getViewReferenceStack(IViewPart part) {
-        // Sanity check.
-        Perspective persp = getActivePerspective();
-        if (persp == null || !certifyPart(part)) {
-			return null;
-		}
-
-        ILayoutContainer container = ((PartSite) part.getSite()).getPane()
-                .getContainer();
-        if (container instanceof ViewStack) {
-            ViewStack folder = (ViewStack) container;
-            final ArrayList list = new ArrayList(folder.getChildren().length);
-            for (int i = 0; i < folder.getChildren().length; i++) {
-                LayoutPart layoutPart = folder.getChildren()[i];
-                if (layoutPart instanceof ViewPane) {
-                    IViewReference view = ((ViewPane) layoutPart)
-                            .getViewReference();
-                    if (view != null) {
-						list.add(view);
-					}
-                }
-            }
-
-            // sort the list by activation order (most recently activated first)
-            Collections.sort(list, new Comparator() {
-                public int compare(Object o1, Object o2) {
-                    int pos1 = (-1)
-                            * activationList
-                                    .indexOf((IWorkbenchPartReference) o1);
-                    int pos2 = (-1)
-                            * activationList
-                                    .indexOf((IWorkbenchPartReference) o2);
-                    return pos1 - pos2;
-                }
-            });
-
-            return (IViewReference[]) list.toArray(new IViewReference[list
-                    .size()]);
-        }
-
-        return new IViewReference[] { (IViewReference) getReference(part) };
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#getViewStack(org.eclipse.ui.IViewPart)
-     */
-    public IViewPart[] getViewStack(IViewPart part) {
-        IViewReference[] refStack = getViewReferenceStack(part);
-        if (refStack == null) {
-			return null;
-		}
-
-        List result = new ArrayList();
-       
-        for (int i = 0; i < refStack.length; i++) {
-            IViewPart next = refStack[i].getView(false);
-            if (next != null) {
-                result.add(next);
-            }
-        }
-
-        return (IViewPart[]) result.toArray(new IViewPart[result.size()]);
-    }
-
-    /**
-     * Allow for programmatically resizing a part.
-     * <p>
-     * <em>EXPERIMENTAL</em>
-     * </p>
-     * <p>
-     * Known limitations:
-     * <ul>
-     * <li>currently applies only to views</li>
-     * <li>has no effect when view is zoomed</li>
-     * </ul> 
-     */
-    public void resizeView(IViewPart part, int width, int height) {
-        SashInfo sashInfo = new SashInfo();
-        PartPane pane = ((PartSite) part.getSite()).getPane();
-        ILayoutContainer container = pane.getContainer();
-        LayoutTree tree = getPerspectivePresentation().getLayout().root
-                .find(((ViewStack) container));
-
-        // retrieve our layout sashes from the layout tree
-        findSashParts(tree, pane.findSashes(), sashInfo);
-
-        // first set the width
-        float deltaWidth = width - pane.getBounds().width;
-        if (sashInfo.right != null) {
-            Rectangle rightBounds = sashInfo.rightNode.getBounds();
-            // set the new ratio 
-            sashInfo.right.setRatio(((deltaWidth + sashInfo.right
-                    .getBounds().x) - rightBounds.x)
-                    / rightBounds.width);
-            // complete the resize
-            sashInfo.rightNode.setBounds(rightBounds);
-        } else if (sashInfo.left != null) {
-            Rectangle leftBounds = sashInfo.leftNode.getBounds();
-            // set the ratio
-            sashInfo.left
-                    .setRatio(((sashInfo.left.getBounds().x - deltaWidth) - leftBounds.x)
-                            / leftBounds.width);
-            // complete the resize
-            sashInfo.leftNode.setBounds(sashInfo.leftNode.getBounds());
-        }
-
-        // next set the height
-        float deltaHeight = height - pane.getBounds().height;
-        if (sashInfo.bottom != null) {
-            Rectangle bottomBounds = sashInfo.bottomNode.getBounds();
-            // set the new ratio 
-            sashInfo.bottom.setRatio(((deltaHeight + sashInfo.bottom
-                    .getBounds().y) - bottomBounds.y)
-                    / bottomBounds.height);
-            // complete the resize
-            sashInfo.bottomNode.setBounds(bottomBounds);
-        } else if (sashInfo.top != null) {
-            Rectangle topBounds = sashInfo.topNode.getBounds();
-            // set the ratio
-            sashInfo.top
-                    .setRatio(((sashInfo.top.getBounds().y - deltaHeight) - topBounds.y)
-                            / topBounds.height);
-            // complete the resize
-            sashInfo.topNode.setBounds(topBounds);
-        }
-
-    }
-
-    // provides sash information for the given pane
-    private class SashInfo {
-        private LayoutPartSash right;
-
-        private LayoutPartSash left;
-
-        private LayoutPartSash top;
-
-        private LayoutPartSash bottom;
-
-        private LayoutTreeNode rightNode;
-
-        private LayoutTreeNode leftNode;
-
-        private LayoutTreeNode topNode;
-
-        private LayoutTreeNode bottomNode;
-    }
-
-    private void findSashParts(LayoutTree tree, PartPane.Sashes sashes,
-            SashInfo info) {
-        LayoutTree parent = tree.getParent();
-        if (parent == null) {
-			return;
-		}
-
-        if (parent.part instanceof LayoutPartSash) {
-            // get the layout part sash from this tree node
-            LayoutPartSash sash = (LayoutPartSash) parent.part;
-            // make sure it has a sash control
-            Control control = sash.getControl();
-            if (control != null) {
-                // check for a vertical sash
-                if (sash.isVertical()) {
-                    if (sashes.left == control) {
-                        info.left = sash;
-                        info.leftNode = parent.findSash(sash);
-                    } else if (sashes.right == control) {
-                        info.right = sash;
-                        info.rightNode = parent.findSash(sash);
-                    }
-                }
-                // check for a horizontal sash
-                else {
-                    if (sashes.top == control) {
-                        info.top = sash;
-                        info.topNode = parent.findSash(sash);
-                    } else if (sashes.bottom == control) {
-                        info.bottom = sash;
-                        info.bottomNode = parent.findSash(sash);
-                    }
-                }
-            }
-        }
-        // recursive call to continue up the tree
-        findSashParts(parent, sashes, info);
-    }
-    
-	/**
-	 * Returns all parts that are owned by this page
-	 * 
-	 * @return
-	 */
-	IWorkbenchPartReference[] getAllParts() {
-		IViewReference[] views = viewFactory.getViews();
-		IEditorReference[] editors = getEditorReferences();
-		
-		IWorkbenchPartReference[] result = new IWorkbenchPartReference[views.length + editors.length];
-		int resultIdx = 0;
-		
-		for (int i = 0; i < views.length; i++) {
-			result[resultIdx++] = views[i];
-		}
-		
-		for (int i = 0; i < editors.length; i++) {
-			result[resultIdx++] = editors[i];
-		}
-		
-		return result;
-	}
-	
-	/**
-	 * Returns all open parts that are owned by this page (that is, all parts
-	 * for which a part opened event would have been sent -- these would be
-	 * activated parts whose controls have already been created.
-	 */
-	IWorkbenchPartReference[] getOpenParts() {
-		IWorkbenchPartReference[] refs = getAllParts();
-		List result = new ArrayList();
-		
-		for (int i = 0; i < refs.length; i++) {
-			IWorkbenchPartReference reference = refs[i];
-			
-			IWorkbenchPart part = reference.getPart(false);
-			if (part != null) {
-				result.add(reference);
-			}
-		}
-		
-		return (IWorkbenchPartReference[]) result.toArray(new IWorkbenchPartReference[result.size()]);
-	}    	
-    
-    /**
-     * Sanity-checks the objects in this page. Throws an Assertation exception
-     * if an object's internal state is invalid. ONLY INTENDED FOR USE IN THE 
-     * UI TEST SUITES. 
-     */
-    public void testInvariants() {
-        Perspective persp = getActivePerspective();
-        
-        if (persp != null) {
-
-            persp.testInvariants();
-            
-            // When we have widgets, ensure that there is no situation where the editor area is visible
-            // and the perspective doesn't want an editor area. 
-            if (!SwtUtil.isDisposed(getClientComposite()) && editorPresentation.getLayoutPart().isVisible()) {
-                Assert.isTrue(persp.isEditorAreaVisible());
-            }
-        }
-        
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbenchPage#getExtensionTracker()
-	 */
-	public IExtensionTracker getExtensionTracker() {
-		if (tracker == null) {
-			tracker = new UIExtensionTracker(getWorkbenchWindow().getWorkbench().getDisplay());
-		}
-		return tracker;		
-	}
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#getNewWizardShortcuts()
-     */
-    public String[] getNewWizardShortcuts() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-            return new String[0];
-        }
-        return persp.getNewWizardShortcuts();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#getPerspectiveShortcuts()
-     */
-    public String[] getPerspectiveShortcuts() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-            return new String[0];
-        }
-        return persp.getPerspectiveShortcuts();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IWorkbenchPage#getShowViewShortcuts()
-     */
-    public String[] getShowViewShortcuts() {
-        Perspective persp = getActivePerspective();
-        if (persp == null) {
-            return new String[0];
-        }
-        return persp.getShowViewShortcuts();
-    }
-    
-    /**
-	 * @since 3.1
-	 */
-	private void suggestReset() {
-		final IWorkbench workbench = getWorkbenchWindow().getWorkbench();
-        workbench.getDisplay().asyncExec(new Runnable() {
-            public void run() {
-                Shell parentShell = null;
-                
-				IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
-                if (window == null) {
-                    if (workbench.getWorkbenchWindowCount() == 0) {
-						return;
-					}
-                    window = workbench.getWorkbenchWindows()[0];
-                }
-
-                parentShell = window.getShell();
-
-                if (MessageDialog
-                        .openQuestion(
-                                parentShell,
-                                WorkbenchMessages.Dynamic_resetPerspectiveTitle, 
-                                WorkbenchMessages.Dynamic_resetPerspectiveMessage)) { 
-                    IWorkbenchPage page = window.getActivePage();
-                    if (page == null) {
-						return;
-					}
-                    page.resetPerspective();
-                }
-            }
-        });
-
-		
-	} 
-    
-    public boolean isPartVisible(IWorkbenchPartReference reference) {        
-        IWorkbenchPart part = reference.getPart(false);
-        // Can't be visible if it isn't created yet
-        if (part == null) {
-            return false;
-        }
-        
-        return isPartVisible(part);
-    }
-
-	public IWorkingSet[] getWorkingSets() {
-		return workingSets;
-	}
-
-	public void setWorkingSets(IWorkingSet[] newWorkingSets) {
-		if (newWorkingSets == null) {
-			newWorkingSets = new IWorkingSet[0];
-		}
-
-		IWorkingSet[] oldWorkingSets = workingSets;
-		
-		// filter out any duplicates if necessary
-		if (newWorkingSets.length > 1) {	
-			Set setOfSets = new HashSet();
-			for (int i = 0; i < newWorkingSets.length; i++) {
-				if (newWorkingSets[i] == null) {
-					throw new IllegalArgumentException();
-				}
-				setOfSets.add(newWorkingSets[i]);
-			}
-			newWorkingSets = (IWorkingSet[]) setOfSets
-					.toArray(new IWorkingSet[setOfSets.size()]);
-		}
-
-		workingSets = newWorkingSets;
-		if (!Arrays.equals(oldWorkingSets, newWorkingSets)) {
-			firePropertyChange(CHANGE_WORKING_SETS_REPLACE, oldWorkingSets,
-					newWorkingSets);
-			if (aggregateWorkingSet != null) {
-				aggregateWorkingSet.setComponents(workingSets);
-			}
-		}
-		if (newWorkingSets != null) {
-			WorkbenchPlugin
-					.getDefault()
-					.getWorkingSetManager()
-					.addPropertyChangeListener(workingSetPropertyChangeListener);
-		} else {
-			WorkbenchPlugin.getDefault().getWorkingSetManager()
-					.removePropertyChangeListener(
-							workingSetPropertyChangeListener);
-		}
-	}
-	
-	public IWorkingSet getAggregateWorkingSet() {
-		if (aggregateWorkingSet == null) {
-			IWorkingSetManager workingSetManager = PlatformUI.getWorkbench()
-					.getWorkingSetManager();
-			aggregateWorkingSet = (AggregateWorkingSet) workingSetManager.getWorkingSet(
-							getAggregateWorkingSetId());
-			if (aggregateWorkingSet == null) {
-				aggregateWorkingSet = (AggregateWorkingSet) workingSetManager
-						.createAggregateWorkingSet(
-								getAggregateWorkingSetId(),
-								WorkbenchMessages.WorkbenchPage_workingSet_default_label,
-								getWorkingSets());
-				workingSetManager.addWorkingSet(aggregateWorkingSet);
-			}
-		}
-		return aggregateWorkingSet;
-	}
-
-	private String getAggregateWorkingSetId() {	
-		if (aggregateWorkingSetId == null) {
-			aggregateWorkingSetId = "Aggregate for window " + System.currentTimeMillis(); //$NON-NLS-1$
-		}
-		return aggregateWorkingSetId;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPagePartList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPagePartList.java
deleted file mode 100644
index f19a64e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPagePartList.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.misc.UIListenerLogging;
-
-public class WorkbenchPagePartList extends PartList {
-    
-    private PageSelectionService selectionService;
-    
-    private PartService partService = new PartService(UIListenerLogging.PAGE_PARTLISTENER_EVENTS, 
-            UIListenerLogging.PAGE_PARTLISTENER2_EVENTS);
-    
-    public WorkbenchPagePartList(PageSelectionService selectionService) {
-        this.selectionService = selectionService;
-    }
-    
-    public IPartService getPartService() {
-        return partService;
-    }
-    
-    protected void firePartOpened(IWorkbenchPartReference part) {
-        partService.firePartOpened(part);     
-    }
-
-    protected void firePartClosed(IWorkbenchPartReference part) {
-        partService.firePartClosed(part);
-    }
-
-    protected void firePartAdded(IWorkbenchPartReference part) {
-        // TODO: There is no listener for workbench page additions yet 
-    }
-
-    protected void firePartRemoved(IWorkbenchPartReference part) {
-        // TODO: There is no listener for workbench page removals yet
-    }
-
-    protected void fireActiveEditorChanged(IWorkbenchPartReference ref) {
-        if (ref != null) {
-            firePartBroughtToTop(ref);
-        }
-    }
-
-    protected void fireActivePartChanged(IWorkbenchPartReference oldRef, IWorkbenchPartReference newRef) {
-        partService.setActivePart(newRef);
-        
-        IWorkbenchPart realPart = newRef == null? null : newRef.getPart(false);
-        selectionService.setActivePart(realPart);
-    }
-    
-    protected void firePartHidden(IWorkbenchPartReference ref) {
-        partService.firePartHidden(ref);
-    }
-
-    protected void firePartVisible(IWorkbenchPartReference ref) {
-        partService.firePartVisible(ref);
-    }
-    
-    protected void firePartInputChanged(IWorkbenchPartReference ref) {
-        partService.firePartInputChanged(ref);
-    }
-
-    public void firePartBroughtToTop(IWorkbenchPartReference ref) {
-        partService.firePartBroughtToTop(ref);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPartReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPartReference.java
deleted file mode 100644
index 550ac83..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPartReference.java
+++ /dev/null
@@ -1,832 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.BitSet;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISaveablePart;
-import org.eclipse.ui.ISaveablesLifecycleListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.ISizeProvider;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart2;
-import org.eclipse.ui.IWorkbenchPart3;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.misc.UIListenerLogging;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * 
- */
-public abstract class WorkbenchPartReference implements IWorkbenchPartReference, ISizeProvider {
-
-    /**
-     * Internal property ID: Indicates that the underlying part was created
-     */
-    public static final int INTERNAL_PROPERTY_OPENED = 0x211;
-    
-    /**
-     * Internal property ID: Indicates that the underlying part was destroyed
-     */
-    public static final int INTERNAL_PROPERTY_CLOSED = 0x212;
-
-    /**
-     * Internal property ID: Indicates that the result of IEditorReference.isPinned()
-     */
-    public static final int INTERNAL_PROPERTY_PINNED = 0x213;
-
-    /**
-     * Internal property ID: Indicates that the result of getVisible() has changed
-     */
-    public static final int INTERNAL_PROPERTY_VISIBLE = 0x214;
-
-    /**
-     * Internal property ID: Indicates that the result of isZoomed() has changed
-     */
-    public static final int INTERNAL_PROPERTY_ZOOMED = 0x215;
-
-    /**
-     * Internal property ID: Indicates that the part has an active child and the
-     * active child has changed. (fired by PartStack)
-     */
-    public static final int INTERNAL_PROPERTY_ACTIVE_CHILD_CHANGED = 0x216;
-
-    /**
-     * Internal property ID: Indicates that changed in the min / max
-     * state has changed
-     */
-    public static final int INTERNAL_PROPERTY_MAXIMIZED = 0x217;
-
-    // State constants //////////////////////////////
-    
-    /**
-     * State constant indicating that the part is not created yet
-     */
-    public static int STATE_LAZY = 0;
-     
-    /**
-     * State constant indicating that the part is in the process of being created
-     */
-    public static int STATE_CREATION_IN_PROGRESS = 1;
-    
-    /**
-     * State constant indicating that the part has been created
-     */
-    public static int STATE_CREATED = 2;
-    
-    /**
-     * State constant indicating that the reference has been disposed (the reference shouldn't be
-     * used anymore)
-     */
-    public static int STATE_DISPOSED = 3;
-  
-    /**
-     * Current state of the reference. Used to detect recursive creation errors, disposed
-     * references, etc. 
-     */
-    private int state = STATE_LAZY;
-   
-    protected IWorkbenchPart part;
-
-    private String id;
-
-    protected PartPane pane;
-
-    private boolean pinned = false;
-    
-    private String title;
-
-    private String tooltip;
-
-    /**
-     * Stores the current Image for this part reference. Lazily created. Null if not allocated.
-     */
-    private Image image = null;
-    
-    private ImageDescriptor defaultImageDescriptor;
-    
-    /**
-     * Stores the current image descriptor for the part. 
-     */
-    private ImageDescriptor imageDescriptor;
-
-    /**
-     * API listener list
-     */
-    private ListenerList propChangeListeners = new ListenerList();
-
-    /**
-     * Internal listener list. Listens to the INTERNAL_PROPERTY_* property change events that are not yet API.
-     * TODO: Make these properties API in 3.2
-     */
-    private ListenerList internalPropChangeListeners = new ListenerList();
-    
-    private ListenerList partChangeListeners = new ListenerList();
-    
-    private String partName;
-
-    private String contentDescription;
-    
-    protected Map propertyCache = new HashMap();
-    
-    /**
-     * Used to remember which events have been queued.
-     */
-    private BitSet queuedEvents = new BitSet();
-
-    private boolean queueEvents = false;
-
-    private static DisposeListener prematureDisposeListener = new DisposeListener() {
-        public void widgetDisposed(DisposeEvent e) {
-            WorkbenchPlugin.log(new RuntimeException("Widget disposed too early!")); //$NON-NLS-1$
-        }    
-    };
-    
-    private IPropertyListener propertyChangeListener = new IPropertyListener() {
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int)
-         */
-        public void propertyChanged(Object source, int propId) {
-            partPropertyChanged(source, propId);
-        }
-    };
-    
-    private IPropertyChangeListener partPropertyChangeListener = new IPropertyChangeListener() {
-		public void propertyChange(PropertyChangeEvent event) {
-			partPropertyChanged(event);
-		}
-    };
-    
-    public WorkbenchPartReference() {
-        //no-op
-    }
-    
-    public boolean isDisposed() {
-        return state == STATE_DISPOSED;
-    }
-    
-    protected void checkReference() {
-        if (state == STATE_DISPOSED) {
-            throw new RuntimeException("Error: IWorkbenchPartReference disposed"); //$NON-NLS-1$
-        }
-    }
-    
-    /**
-     * Calling this with deferEvents(true) will queue all property change events until a subsequent
-     * call to deferEvents(false). This should be used at the beginning of a batch of related changes
-     * to prevent duplicate property change events from being sent.
-     * 
-     * @param shouldQueue
-     */
-    private void deferEvents(boolean shouldQueue) {
-        queueEvents = shouldQueue;
-
-        if (queueEvents == false) {
-        	// do not use nextSetBit, to allow compilation against JCL Foundation (bug 80053)
-        	for (int i = 0, n = queuedEvents.size(); i < n; ++i) {
-        		if (queuedEvents.get(i)) {
-        			firePropertyChange(i);
-        			queuedEvents.clear(i);
-        		}
-            }
-        }
-    }
-
-    protected void setTitle(String newTitle) {
-        if (Util.equals(title, newTitle)) {
-            return;
-        }
-
-        title = newTitle;
-        firePropertyChange(IWorkbenchPartConstants.PROP_TITLE);
-    }
-
-    protected void setPartName(String newPartName) {
-        if (Util.equals(partName, newPartName)) {
-            return;
-        }
-
-        partName = newPartName;
-        firePropertyChange(IWorkbenchPartConstants.PROP_PART_NAME);
-    }
-
-    protected void setContentDescription(String newContentDescription) {
-        if (Util.equals(contentDescription, newContentDescription)) {
-            return;
-        }
-
-        contentDescription = newContentDescription;
-        firePropertyChange(IWorkbenchPartConstants.PROP_CONTENT_DESCRIPTION);
-    }
-
-    protected void setImageDescriptor(ImageDescriptor descriptor) {
-        if (Util.equals(imageDescriptor, descriptor)) {
-            return;
-        }
-
-        Image oldImage = image;
-        ImageDescriptor oldDescriptor = imageDescriptor;
-        image = null;
-        imageDescriptor = descriptor;
-        
-        // Don't queue events triggered by image changes. We'll dispose the image
-        // immediately after firing the event, so we need to fire it right away.
-        immediateFirePropertyChange(IWorkbenchPartConstants.PROP_TITLE);
-        if (queueEvents) {
-            // If there's a PROP_TITLE event queued, remove it from the queue because
-            // we've just fired it.
-            queuedEvents.clear(IWorkbenchPartConstants.PROP_TITLE);
-        }
-        
-        // If we had allocated the old image, deallocate it now (AFTER we fire the property change 
-        // -- listeners may need to clean up references to the old image)
-        if (oldImage != null) {
-            JFaceResources.getResources().destroy(oldDescriptor);
-        }
-    }
-    
-    protected void setToolTip(String newToolTip) {
-        if (Util.equals(tooltip, newToolTip)) {
-            return;
-        }
-
-        tooltip = newToolTip;
-        firePropertyChange(IWorkbenchPartConstants.PROP_TITLE);
-    }
-
-    protected void partPropertyChanged(Object source, int propId) {
-
-        // We handle these properties directly (some of them may be transformed
-        // before firing events to workbench listeners)
-        if (propId == IWorkbenchPartConstants.PROP_CONTENT_DESCRIPTION
-                || propId == IWorkbenchPartConstants.PROP_PART_NAME
-                || propId == IWorkbenchPartConstants.PROP_TITLE) {
-
-            refreshFromPart();
-        } else {
-            // Any other properties are just reported to listeners verbatim
-            firePropertyChange(propId);
-        }
-        
-        // Let the model manager know as well
-        if (propId == IWorkbenchPartConstants.PROP_DIRTY) {
-        	IWorkbenchPart actualPart = getPart(false);
-        	if (actualPart != null) {
-				SaveablesList modelManager = (SaveablesList) actualPart.getSite().getService(ISaveablesLifecycleListener.class);
-	        	modelManager.dirtyChanged(actualPart);
-        	}
-        }
-    }
-    
-    protected void partPropertyChanged(PropertyChangeEvent event) {
-    	firePartPropertyChange(event);
-    }
-
-    /**
-     * Refreshes all cached values with the values from the real part 
-     */
-    protected void refreshFromPart() {
-        deferEvents(true);
-
-        setPartName(computePartName());
-        setTitle(computeTitle());
-        setContentDescription(computeContentDescription());
-        setToolTip(getRawToolTip());
-        setImageDescriptor(computeImageDescriptor());
-
-        deferEvents(false);
-    }
-    
-    protected ImageDescriptor computeImageDescriptor() {
-        if (part != null) {
-            return ImageDescriptor.createFromImage(part.getTitleImage(), Display.getCurrent());
-        }
-        return defaultImageDescriptor;
-    }
-
-    public void init(String id, String title, String tooltip,
-            ImageDescriptor desc, String paneName, String contentDescription) {
-        Assert.isNotNull(id);
-        Assert.isNotNull(title);
-        Assert.isNotNull(tooltip);
-        Assert.isNotNull(desc);
-        Assert.isNotNull(paneName);
-        Assert.isNotNull(contentDescription);
-        
-        this.id = id;
-        this.title = title;
-        this.tooltip = tooltip;
-        this.partName = paneName;
-        this.contentDescription = contentDescription;
-        this.defaultImageDescriptor = desc;
-        this.imageDescriptor = computeImageDescriptor();
-    }
-
-    /**
-     * Releases any references maintained by this part reference
-     * when its actual part becomes known (not called when it is disposed).
-     */
-    protected void releaseReferences() {
-
-    }
-
-    /* package */ void addInternalPropertyListener(IPropertyListener listener) {
-        internalPropChangeListeners.add(listener);
-    }
-    
-    /* package */ void removeInternalPropertyListener(IPropertyListener listener) {
-        internalPropChangeListeners.remove(listener);
-    }
-
-    protected void fireInternalPropertyChange(int id) {
-        Object listeners[] = internalPropChangeListeners.getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyListener) listeners[i]).propertyChanged(this, id);
-        }
-    }
-    
-    /**
-     * @see IWorkbenchPart
-     */
-    public void addPropertyListener(IPropertyListener listener) {
-        // The properties of a disposed reference will never change, so don't
-        // add listeners
-        if (isDisposed()) {
-            return;
-        }
-        
-        propChangeListeners.add(listener);
-    }
-
-    /**
-     * @see IWorkbenchPart
-     */
-    public void removePropertyListener(IPropertyListener listener) {
-        // Currently I'm not calling checkReference here for fear of breaking things late in 3.1, but it may
-        // make sense to do so later. For now we just turn it into a NOP if the reference is disposed.
-        if (isDisposed()) {
-            return;
-        }
-        propChangeListeners.remove(listener);
-    }
-
-    public final String getId() {
-        if (part != null) {
-            IWorkbenchPartSite site = part.getSite();
-            if (site != null) {
-				return site.getId();
-			}
-        }
-        return Util.safeString(id);
-    }
-
-    public String getTitleToolTip() {
-        return Util.safeString(tooltip);
-    }
-
-    protected final String getRawToolTip() {
-        return Util.safeString(part.getTitleToolTip());
-    }
-
-    /**
-     * Returns the pane name for the part
-     * 
-     * @return the pane name for the part
-     */
-    public String getPartName() {
-        return Util.safeString(partName);
-    }
-    
-    /**
-     * Gets the part name directly from the associated workbench part,
-     * or the empty string if none.
-     * 
-     * @return
-     */
-    protected final String getRawPartName() {
-        String result = ""; //$NON-NLS-1$
-
-        if (part instanceof IWorkbenchPart2) {
-            IWorkbenchPart2 part2 = (IWorkbenchPart2) part;
-
-            result = Util.safeString(part2.getPartName());
-        }
-
-        return result;
-    }
-
-    protected String computePartName() {
-        return getRawPartName();
-    }
-
-    /**
-     * Returns the content description for this part.
-     * 
-     * @return the pane name for the part
-     */
-    public String getContentDescription() {
-        return Util.safeString(contentDescription);
-    }
-
-    /**
-     * Computes a new content description for the part. Subclasses may override to change the
-     * default behavior
-     * 
-     * @return the new content description for the part
-     */
-    protected String computeContentDescription() {
-        return getRawContentDescription();
-    }
-
-    /**
-     * Returns the content description as set directly by the part, or the empty string if none
-     * 
-     * @return the unmodified content description from the part (or the empty string if none)
-     */
-    protected final String getRawContentDescription() {
-        if (part instanceof IWorkbenchPart2) {
-            IWorkbenchPart2 part2 = (IWorkbenchPart2) part;
-
-            return part2.getContentDescription();
-        }
-
-        return ""; //$NON-NLS-1$				
-    }
-
-    public boolean isDirty() {
-        if (!(part instanceof ISaveablePart)) {
-			return false;
-		}
-        return ((ISaveablePart) part).isDirty();
-    }
-
-    public String getTitle() {
-        return Util.safeString(title);
-    }
-
-    /**
-     * Computes a new title for the part. Subclasses may override to change the default behavior.
-     * 
-     * @return the title for the part
-     */
-    protected String computeTitle() {
-        return getRawTitle();
-    }
-
-    /**
-     * Returns the unmodified title for the part, or the empty string if none
-     * 
-     * @return the unmodified title, as set by the IWorkbenchPart. Returns the empty string if none.
-     */
-    protected final String getRawTitle() {
-        return Util.safeString(part.getTitle());
-    }
-
-    public final Image getTitleImage() {
-        if (isDisposed()) {
-            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEF_VIEW);
-        }
-        
-        if (image == null) {        
-            image = JFaceResources.getResources().createImageWithDefault(imageDescriptor);
-        }
-        return image;
-    }
-    
-    public ImageDescriptor getTitleImageDescriptor() {
-        if (isDisposed()) {
-            return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_DEF_VIEW);
-        }
-        
-        return imageDescriptor;
-    }
-    
-    /* package */ void fireVisibilityChange() {
-        fireInternalPropertyChange(INTERNAL_PROPERTY_VISIBLE);
-    }
-
-    /* package */ void fireZoomChange() {
-        fireInternalPropertyChange(INTERNAL_PROPERTY_ZOOMED);
-    }
-    
-    public boolean getVisible() {
-        if (isDisposed()) {
-            return false;
-        }
-        return getPane().getVisible();
-    }
-    
-    public void setVisible(boolean isVisible) {
-        if (isDisposed()) {
-            return;
-        }
-        getPane().setVisible(isVisible);
-    }
-    
-    protected void firePropertyChange(int id) {
-
-        if (queueEvents) {
-            queuedEvents.set(id);
-            return;
-        }
-        
-        immediateFirePropertyChange(id);
-    }
-    
-    private void immediateFirePropertyChange(int id) {
-        UIListenerLogging.logPartReferencePropertyChange(this, id);
-        Object listeners[] = propChangeListeners.getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyListener) listeners[i]).propertyChanged(part, id);
-        }
-        
-        fireInternalPropertyChange(id);
-    }
-
-    public final IWorkbenchPart getPart(boolean restore) {
-        if (isDisposed()) {
-            return null;
-        }
-        
-        if (part == null && restore) {
-            
-            if (state == STATE_CREATION_IN_PROGRESS) {
-                IStatus result = WorkbenchPlugin.getStatus(
-                        new PartInitException(NLS.bind("Warning: Detected recursive attempt by part {0} to create itself (this is probably, but not necessarily, a bug)",  //$NON-NLS-1$
-                                getId())));
-                WorkbenchPlugin.log(result);
-                return null;
-            }
-            
-            try {
-                state = STATE_CREATION_IN_PROGRESS;
-                
-                IWorkbenchPart newPart = createPart();
-                if (newPart != null) {
-                    part = newPart;
-                    // Add a dispose listener to the part. This dispose listener does nothing but log an exception
-                    // if the part's widgets get disposed unexpectedly. The workbench part reference is the only
-                    // object that should dispose this control, and it will remove the listener before it does so.
-                    getPane().getControl().addDisposeListener(prematureDisposeListener);
-                    part.addPropertyListener(propertyChangeListener);
-                    if (part instanceof IWorkbenchPart3) {
-                    	((IWorkbenchPart3)part).addPartPropertyListener(partPropertyChangeListener);
-                    }
-
-                    refreshFromPart();
-                    releaseReferences();
-                    
-                    fireInternalPropertyChange(INTERNAL_PROPERTY_OPENED);
-                    
-                    ISizeProvider sizeProvider = (ISizeProvider) Util.getAdapter(part, ISizeProvider.class);
-                    if (sizeProvider != null) {
-                        // If this part has a preferred size, indicate that the preferred size may have changed at this point
-                        if (sizeProvider.getSizeFlags(true) != 0 || sizeProvider.getSizeFlags(false) != 0) {
-                            fireInternalPropertyChange(IWorkbenchPartConstants.PROP_PREFERRED_SIZE);
-                        }
-                    }
-                }
-            } finally {
-                state = STATE_CREATED;
-            }
-        }        
-        
-        return part;
-    }
-    
-    protected abstract IWorkbenchPart createPart();
-        
-    protected abstract PartPane createPane();
-    
-    /**
-     * Returns the part pane for this part reference. Does not return null. Should not be called
-     * if the reference has been disposed.
-     * 
-     * TODO: clean up all code that has any possibility of calling this on a disposed reference
-     * and make this method throw an exception if anyone else attempts to do so.
-     * 
-     * @return
-     */
-    public final PartPane getPane() {
-        
-        // Note: we should never call this if the reference has already been disposed, since it
-        // may cause a PartPane to be created and leaked.
-        if (pane == null) {
-            pane = createPane();
-        }
-        return pane;
-    }
-
-    public final void dispose() {
-        
-        if (isDisposed()) {
-            return;
-        }
-        
-        // Store the current title, tooltip, etc. so that anyone that they can be returned to
-        // anyone that held on to the disposed reference.
-        partName = getPartName();
-        contentDescription = getContentDescription();
-        tooltip = getTitleToolTip();
-        title = getTitle();
-        
-        if (state == STATE_CREATION_IN_PROGRESS) {
-            IStatus result = WorkbenchPlugin.getStatus(
-                    new PartInitException(NLS.bind("Warning: Blocked recursive attempt by part {0} to dispose itself during creation",  //$NON-NLS-1$
-                            getId())));
-            WorkbenchPlugin.log(result);
-            return;
-        }
-        
-    	// Disposing the pane disposes the part's widgets. The part's widgets need to be disposed before the part itself.
-        if (pane != null) {
-            // Remove the dispose listener since this is the correct place for the widgets to get disposed
-            Control targetControl = getPane().getControl(); 
-            if (targetControl != null) {
-                targetControl.removeDisposeListener(prematureDisposeListener);
-            }
-            pane.dispose();
-        }
-        
-        doDisposePart();
-   
-        if (pane != null) {
-        	pane.removeContributions();
-        }
-        
-        clearListenerList(internalPropChangeListeners);
-        clearListenerList(partChangeListeners);
-        Image oldImage = image;
-        ImageDescriptor oldDescriptor = imageDescriptor;
-        image = null;
-        
-        state = STATE_DISPOSED;
-        imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
-        defaultImageDescriptor = ImageDescriptor.getMissingImageDescriptor();
-        immediateFirePropertyChange(IWorkbenchPartConstants.PROP_TITLE);
-        clearListenerList(propChangeListeners);
-        
-        if (oldImage != null) {
-            JFaceResources.getResources().destroy(oldDescriptor);
-        }
-    }
-
-	/**
-	 * Clears all of the listeners in a listener list. TODO Bug 117519 Remove
-	 * this method when fixed.
-	 * 
-	 * @param list
-	 *            The list to be clear; must not be <code>null</code>.
-	 */
-	private final void clearListenerList(final ListenerList list) {
-		final Object[] listeners = list.getListeners();
-		for (int i = 0; i < listeners.length; i++) {
-			list.remove(listeners[i]);
-		}
-	}
-
-    /**
-     * 
-     */
-    protected void doDisposePart() {
-        if (part != null) {
-            fireInternalPropertyChange(INTERNAL_PROPERTY_CLOSED);
-            // Don't let exceptions in client code bring us down. Log them and continue.
-            try {
-                part.removePropertyListener(propertyChangeListener);
-                if (part instanceof IWorkbenchPart3) {
-                	((IWorkbenchPart3)part).removePartPropertyListener(partPropertyChangeListener);
-                }
-                part.dispose();
-            } catch (Exception e) {
-                WorkbenchPlugin.log(e);
-            }
-            part = null;
-        }
-    }
-
-    public void setPinned(boolean newPinned) {
-        if (isDisposed()) {
-            return;
-        }
-
-        if (newPinned == pinned) {
-            return;
-        }
-        
-        pinned = newPinned;
-        
-        setImageDescriptor(computeImageDescriptor());
-        
-        fireInternalPropertyChange(INTERNAL_PROPERTY_PINNED);
-    }
-    
-    public boolean isPinned() {
-        return pinned;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartReference#getPartProperty(java.lang.String)
-     */
-    public String getPartProperty(String key) {
-		if (part != null) {
-			if (part instanceof IWorkbenchPart3) {
-				return ((IWorkbenchPart3) part).getPartProperty(key);
-			}
-		} else {
-			return (String)propertyCache.get(key);
-		}
-		return null;
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartReference#addPartPropertyListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void addPartPropertyListener(IPropertyChangeListener listener) {
-    	if (isDisposed()) {
-    		return;
-    	}
-    	partChangeListeners.add(listener);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartReference#removePartPropertyListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void removePartPropertyListener(IPropertyChangeListener listener) {
-    	if (isDisposed()) {
-    		return;
-    	}
-    	partChangeListeners.remove(listener);
-    }
-    
-    protected void firePartPropertyChange(PropertyChangeEvent event) {
-		Object[] l = partChangeListeners.getListeners();
-		for (int i = 0; i < l.length; i++) {
-			((IPropertyChangeListener) l[i]).propertyChange(event);
-		}
-	}
-    
-    protected void createPartProperties(IWorkbenchPart3 workbenchPart) {
-		Iterator i = propertyCache.entrySet().iterator();
-		while (i.hasNext()) {
-			Map.Entry e = (Map.Entry) i.next();
-			workbenchPart.setPartProperty((String) e.getKey(), (String) e.getValue());
-		}
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.ISizeProvider#computePreferredSize(boolean, int, int, int)
-     */
-    public int computePreferredSize(boolean width, int availableParallel,
-            int availablePerpendicular, int preferredResult) {
-
-        ISizeProvider sizeProvider = (ISizeProvider) Util.getAdapter(part, ISizeProvider.class);
-        if (sizeProvider != null) {
-            return sizeProvider.computePreferredSize(width, availableParallel, availablePerpendicular, preferredResult);
-        }
-
-        return preferredResult;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.ISizeProvider#getSizeFlags(boolean)
-     */
-    public int getSizeFlags(boolean width) {
-        ISizeProvider sizeProvider = (ISizeProvider) Util.getAdapter(part, ISizeProvider.class);
-        if (sizeProvider != null) {
-            return sizeProvider.getSizeFlags(width);
-        }
-        return 0;
-    }
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
deleted file mode 100644
index 4121767..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java
+++ /dev/null
@@ -1,1315 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.io.OutputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Locale;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.decorators.DecoratorManager;
-import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceManager;
-import org.eclipse.ui.internal.intro.IIntroRegistry;
-import org.eclipse.ui.internal.intro.IntroRegistry;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.operations.WorkbenchOperationSupport;
-import org.eclipse.ui.internal.progress.ProgressManager;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PerspectiveRegistry;
-import org.eclipse.ui.internal.registry.PreferencePageRegistryReader;
-import org.eclipse.ui.internal.registry.ViewRegistry;
-import org.eclipse.ui.internal.registry.WorkingSetRegistry;
-import org.eclipse.ui.internal.themes.IThemeRegistry;
-import org.eclipse.ui.internal.themes.ThemeRegistry;
-import org.eclipse.ui.internal.themes.ThemeRegistryReader;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.internal.wizards.ExportWizardRegistry;
-import org.eclipse.ui.internal.wizards.ImportWizardRegistry;
-import org.eclipse.ui.internal.wizards.NewWizardRegistry;
-import org.eclipse.ui.operations.IWorkbenchOperationSupport;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.views.IViewRegistry;
-import org.eclipse.ui.wizards.IWizardRegistry;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.BundleListener;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.SynchronousBundleListener;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * This class represents the TOP of the workbench UI world
- * A plugin class is effectively an application wrapper
- * for a plugin & its classes. This class should be thought
- * of as the workbench UI's application class.
- *
- * This class is responsible for tracking various registries
- * font, preference, graphics, dialog store.
- *
- * This class is explicitly referenced by the 
- * workbench plugin's  "plugin.xml" and places it
- * into the UI start extension point of the main
- * overall application harness
- *
- * When is this class started?
- *      When the Application
- *      calls createExecutableExtension to create an executable
- *      instance of our workbench class.
- */
-public class WorkbenchPlugin extends AbstractUIPlugin {
-	
-	/**
-	 * Splash shell constant.
-	 */
-	private static final String DATA_SPLASH_SHELL = "org.eclipse.ui.workbench.splashShell"; //$NON-NLS-1$
-
-	/**
-	 * The OSGi splash property.
-	 * 
-	 * @sicne 3.4
-	 */
-	private static final String PROP_SPLASH_HANDLE = "org.eclipse.equinox.launcher.splash.handle"; //$NON-NLS-1$
-	
-	private static final String LEFT_TO_RIGHT = "ltr"; //$NON-NLS-1$
-	private static final String RIGHT_TO_LEFT = "rtl";//$NON-NLS-1$
-	private static final String ORIENTATION_COMMAND_LINE = "-dir";//$NON-NLS-1$
-	private static final String ORIENTATION_PROPERTY = "eclipse.orientation";//$NON-NLS-1$
-	private static final String NL_USER_PROPERTY = "osgi.nl.user"; //$NON-NLS-1$
-   
-    // Default instance of the receiver
-    private static WorkbenchPlugin inst;
-
-    // Manager that maps resources to descriptors of editors to use
-    private EditorRegistry editorRegistry;
-
-    // Manager for the DecoratorManager
-    private DecoratorManager decoratorManager;
-
-    // Theme registry
-    private ThemeRegistry themeRegistry;
-
-    // Manager for working sets (IWorkingSet)
-    private WorkingSetManager workingSetManager;
-
-    // Working set registry, stores working set dialogs
-    private WorkingSetRegistry workingSetRegistry;
-
-    // The context within which this plugin was started.
-    private BundleContext bundleContext;
-
-    // The set of currently starting bundles
-    private Collection startingBundles = new HashSet();
-
-    /**
-     * Global workbench ui plugin flag. Only workbench implementation is allowed to use this flag
-     * All other plugins, examples, or test cases must *not* use this flag.
-     */
-    public static boolean DEBUG = false;
-
-    /**
-     * The workbench plugin ID.
-     * 
-     * @issue we should just drop this constant and use PlatformUI.PLUGIN_ID instead
-     */
-    public static String PI_WORKBENCH = PlatformUI.PLUGIN_ID;
-
-    /**
-     * The character used to separate preference page category ids
-     */
-    public static char PREFERENCE_PAGE_CATEGORY_SEPARATOR = '/';
-
-    // Other data.
-    private WorkbenchPreferenceManager preferenceManager;
-
-    private ViewRegistry viewRegistry;
-
-    private PerspectiveRegistry perspRegistry;
-
-    private ActionSetRegistry actionSetRegistry;
-
-    private SharedImages sharedImages;
-
-    /**
-     * Information describing the product (formerly called "primary plugin"); lazily
-     * initialized.
-     * @since 3.0
-     */
-    private ProductInfo productInfo = null;
-
-    private IntroRegistry introRegistry;
-    
-    private WorkbenchOperationSupport operationSupport;
-	private BundleListener bundleListener;
-        
-    
-    /**
-     * Create an instance of the WorkbenchPlugin. The workbench plugin is
-     * effectively the "application" for the workbench UI. The entire UI
-     * operates as a good plugin citizen.
-     */
-    public WorkbenchPlugin() {
-        super();
-        inst = this;
-    }
-
-    /**
-     * Unload all members.  This can be used to run a second instance of a workbench.
-     * @since 3.0 
-     */
-    void reset() {
-        editorRegistry = null;
-
-        if (decoratorManager != null) {
-            decoratorManager.dispose();
-            decoratorManager = null;
-        }
-
-        ProgressManager.shutdownProgressManager();
-
-        themeRegistry = null;
-        if (workingSetManager != null) {
-        	workingSetManager.dispose();
-        	workingSetManager = null;
-        }
-        workingSetRegistry = null;
-
-        preferenceManager = null;
-        if (viewRegistry != null) {
-            viewRegistry.dispose();
-            viewRegistry = null;
-        }
-        if (perspRegistry != null) {
-            perspRegistry.dispose();
-            perspRegistry = null;
-        }
-        actionSetRegistry = null;
-        sharedImages = null;
-
-        productInfo = null;
-        introRegistry = null;
-        
-        if (operationSupport != null) {
-        	operationSupport.dispose();
-        	operationSupport = null;
-        }
-
-        DEBUG = false;
-         
-    }
-
-    /**
-     * 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
-     * @throws CoreException if the extension cannot be created
-     */
-    public static Object createExtension(final IConfigurationElement element,
-            final String classAttribute) throws CoreException {
-        try {
-            // If plugin has been loaded create extension.
-            // Otherwise, show busy cursor then create extension.
-            if (BundleUtility.isActivated(element.getDeclaringExtension()
-                    .getNamespace())) {
-                return element.createExecutableExtension(classAttribute);
-            }
-            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];
-			}
-            return ret[0];
-
-        } catch (CoreException core) {
-            throw core;
-        } catch (Exception e) {
-            throw new CoreException(new Status(IStatus.ERROR, PI_WORKBENCH,
-                    IStatus.ERROR, WorkbenchMessages.WorkbenchPlugin_extension,e));
-        }
-    }
-    
-    /**
-	 * Answers whether the provided element either has an attribute with the
-	 * given name or a child element with the given name with an attribute
-	 * called class.
-	 * 
-	 * @param element
-	 *            the element to test
-	 * @param extensionName
-	 *            the name of the extension to test for
-	 * @return whether or not the extension is declared
-	 * @since 3.3
-	 */
-	public static boolean hasExecutableExtension(IConfigurationElement element,
-			String extensionName) {
-
-		if (element.getAttribute(extensionName) != null)
-			return true;
-		String elementText = element.getValue();
-		if (elementText != null && !elementText.equals("")) //$NON-NLS-1$
-			return true;
-		IConfigurationElement [] children = element.getChildren(extensionName);
-		if (children.length == 1) {
-			if (children[0].getAttribute(IWorkbenchRegistryConstants.ATT_CLASS) != null)
-				return true;
-		}
-		return false;
-	}
-	
-	/**
-	 * Checks to see if the provided element has the syntax for an executable
-	 * extension with a given name that resides in a bundle that is already
-	 * active. Determining the bundle happens in one of two ways:<br/>
-	 * <ul>
-	 * <li>The element has an attribute with the specified name or element text
-	 * in the form <code>bundle.id/class.name[:optional attributes]</code></li>
-	 * <li>The element has a child element with the specified name that has a
-	 * <code>plugin</code> attribute</li>
-	 * </ul>
-	 * 
-	 * @param element
-	 *            the element to test
-	 * @param extensionName
-	 *            the name of the extension to test for
-	 * @return whether or not the bundle expressed by the above criteria is
-	 *         active. If the bundle cannot be determined then the state of the
-	 *         bundle that declared the element is returned.
-	 * @since 3.3
-	 */
-	public static boolean isBundleLoadedForExecutableExtension(
-			IConfigurationElement element, String extensionName) {
-		Bundle bundle = getBundleForExecutableExtension(element, extensionName);
-
-		if (bundle == null)
-			return true;
-		return bundle.getState() == Bundle.ACTIVE;
-	}
-	
-	/**
-	 * Returns the bundle that contains the class referenced by an executable
-	 * extension. Determining the bundle happens in one of two ways:<br/>
-	 * <ul>
-	 * <li>The element has an attribute with the specified name or element text
-	 * in the form <code>bundle.id/class.name[:optional attributes]</code></li>
-	 * <li>The element has a child element with the specified name that has a
-	 * <code>plugin</code> attribute</li>
-	 * </ul>
-	 * 
-	 * @param element
-	 *            the element to test
-	 * @param extensionName
-	 *            the name of the extension to test for
-	 * @return the bundle referenced by the extension. If that bundle cannot be
-	 *         determined the bundle that declared the element is returned. Note
-	 *         that this may be <code>null</code>.
-	 * @since 3.3
-	 */
-	public static Bundle getBundleForExecutableExtension(IConfigurationElement element, String extensionName) {
-		// this code is derived heavily from
-		// ConfigurationElement.createExecutableExtension.  
-		String prop = null;
-		String executable;
-		String contributorName = null;
-		int i;
-
-		if (extensionName != null)
-			prop = element.getAttribute(extensionName);
-		else {
-			// property not specified, try as element value
-			prop = element.getValue();
-			if (prop != null) {
-				prop = prop.trim();
-				if (prop.equals("")) //$NON-NLS-1$
-					prop = null;
-			}
-		}
-
-		if (prop == null) {
-			// property not defined, try as a child element
-			IConfigurationElement[] exec = element.getChildren(extensionName);
-			if (exec.length != 0) 
-				contributorName = exec[0].getAttribute("plugin"); //$NON-NLS-1$
-		} else {
-			// simple property or element value, parse it into its components
-			i = prop.indexOf(':');
-			if (i != -1) 
-				executable = prop.substring(0, i).trim();
-			else
-				executable = prop;
-
-			i = executable.indexOf('/');
-			if (i != -1)
-				contributorName = executable.substring(0, i).trim();
-				
-		}
-		
-		if (contributorName == null)
-			contributorName = element.getContributor().getName();
-		
-		return Platform.getBundle(contributorName);
-	}
-
-    /**
-	 * Returns the image registry for this plugin.
-	 * 
-	 * Where are the images? The images (typically gifs) are found in the same
-	 * plugins directory.
-	 * 
-	 * @see ImageRegistry
-	 * 
-	 * Note: The workbench uses the standard JFace ImageRegistry to track its
-	 * images. In addition the class WorkbenchGraphicResources provides
-	 * convenience access to the graphics resources and fast field access for
-	 * some of the commonly used graphical images.
-	 */
-    protected ImageRegistry createImageRegistry() {
-        return WorkbenchImages.getImageRegistry();
-    }
-
-    /**
-     * Returns the action set registry for the workbench.
-     *
-     * @return the workbench action set registry
-     */
-    public ActionSetRegistry getActionSetRegistry() {
-        if (actionSetRegistry == null) {
-            actionSetRegistry = new ActionSetRegistry();
-        }
-        return actionSetRegistry;
-    }
-
-    /**
-     * Return the default instance of the receiver. This represents the runtime plugin.
-     * @return WorkbenchPlugin
-     * @see AbstractUIPlugin for the typical implementation pattern for plugin classes.
-     */
-    public static WorkbenchPlugin getDefault() {
-        return inst;
-    }
-
-    /**
-     * Answer the manager that maps resource types to a the 
-     * description of the editor to use
-     * @return IEditorRegistry the editor registry used
-     * by this plug-in.
-     */
-
-    public IEditorRegistry getEditorRegistry() {
-        if (editorRegistry == null) {
-            editorRegistry = new EditorRegistry();
-        }
-        return editorRegistry;
-    }
-
-    /**
-     * Answer the element factory for an id, or <code>null</code. if not found.
-     * @param targetID
-     * @return IElementFactory
-     */
-    public IElementFactory getElementFactory(String targetID) {
-
-        // Get the extension point registry.
-        IExtensionPoint extensionPoint;
-        extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(
-                PI_WORKBENCH, IWorkbenchRegistryConstants.PL_ELEMENT_FACTORY);
-
-        if (extensionPoint == null) {
-            WorkbenchPlugin
-                    .log("Unable to find element factory. Extension point: " + IWorkbenchRegistryConstants.PL_ELEMENT_FACTORY + " not found"); //$NON-NLS-2$ //$NON-NLS-1$
-            return null;
-        }
-
-        // Loop through the config elements.
-        IConfigurationElement targetElement = null;
-        IConfigurationElement[] configElements = extensionPoint
-                .getConfigurationElements();
-        for (int j = 0; j < configElements.length; j++) {
-            String strID = configElements[j].getAttribute("id"); //$NON-NLS-1$
-            if (targetID.equals(strID)) {
-                targetElement = configElements[j];
-                break;
-            }
-        }
-        if (targetElement == null) {
-            // log it since we cannot safely display a dialog.
-            WorkbenchPlugin.log("Unable to find element factory: " + targetID); //$NON-NLS-1$
-            return null;
-        }
-
-        // Create the extension.
-        IElementFactory factory = null;
-        try {
-            factory = (IElementFactory) createExtension(targetElement, "class"); //$NON-NLS-1$
-        } catch (CoreException e) {
-            // log it since we cannot safely display a dialog.
-            WorkbenchPlugin.log(
-                    "Unable to create element factory.", e.getStatus()); //$NON-NLS-1$
-            factory = null;
-        }
-        return factory;
-    }
-
-    /**
-     * Returns the presentation factory with the given id, or <code>null</code> if not found.
-     * @param targetID The id of the presentation factory to use.
-     * @return AbstractPresentationFactory or <code>null</code>
-     * if not factory matches that id.
-     */
-    public AbstractPresentationFactory getPresentationFactory(String targetID) {
-        Object o = createExtension(
-                IWorkbenchRegistryConstants.PL_PRESENTATION_FACTORIES,
-                "factory", targetID); //$NON-NLS-1$
-        if (o instanceof AbstractPresentationFactory) {
-            return (AbstractPresentationFactory) o;
-        }
-        WorkbenchPlugin
-                .log("Error creating presentation factory: " + targetID + " -- class is not an AbstractPresentationFactory"); //$NON-NLS-1$ //$NON-NLS-2$
-        return null;
-    }
-
-    /**
-     * Looks up the configuration element with the given id on the given extension point
-     * and instantiates the class specified by the class attributes.
-     * 
-     * @param extensionPointId the extension point id (simple id)
-     * @param elementName the name of the configuration element, or <code>null</code>
-     *   to match any element
-     * @param targetID the target id
-     * @return the instantiated extension object, or <code>null</code> if not found
-     */
-    private Object createExtension(String extensionPointId, String elementName,
-            String targetID) {
-        IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
-                .getExtensionPoint(PI_WORKBENCH, extensionPointId);
-        if (extensionPoint == null) {
-            WorkbenchPlugin
-                    .log("Unable to find extension. Extension point: " + extensionPointId + " not found"); //$NON-NLS-1$ //$NON-NLS-2$
-            return null;
-        }
-
-        // Loop through the config elements.
-        IConfigurationElement targetElement = null;
-        IConfigurationElement[] elements = extensionPoint
-                .getConfigurationElements();
-        for (int j = 0; j < elements.length; j++) {
-            IConfigurationElement element = elements[j];
-            if (elementName == null || elementName.equals(element.getName())) {
-                String strID = element.getAttribute("id"); //$NON-NLS-1$
-                if (targetID.equals(strID)) {
-                    targetElement = element;
-                    break;
-                }
-            }
-        }
-        if (targetElement == null) {
-            // log it since we cannot safely display a dialog.
-            WorkbenchPlugin.log("Unable to find extension: " + targetID //$NON-NLS-1$
-                    + " in extension point: " + extensionPointId); //$NON-NLS-1$ 
-            return null;
-        }
-
-        // Create the extension.
-        try {
-            return createExtension(targetElement, "class"); //$NON-NLS-1$
-        } catch (CoreException e) {
-            // log it since we cannot safely display a dialog.
-            WorkbenchPlugin.log("Unable to create extension: " + targetID //$NON-NLS-1$
-                    + " in extension point: " + extensionPointId //$NON-NLS-1$
-                    + ", status: ", e.getStatus()); //$NON-NLS-1$
-        }
-        return null;
-    }
-
-    /**
-     * Return the perspective registry.
-     * @return IPerspectiveRegistry. The registry for the receiver.
-     */
-    public IPerspectiveRegistry getPerspectiveRegistry() {
-        if (perspRegistry == null) {
-            perspRegistry = new PerspectiveRegistry();
-            // the load methods can touch on WorkbenchImages if an image is
-			// missing so we need to wrap the call in
-			// a startup block for the case where a custom descriptor exists on
-			// startup that does not have an image
-			// associated with it. See bug 196352.
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-				public void runWithException() throws Throwable {
-					perspRegistry.load();
-				}
-			});
-            
-        }
-        return perspRegistry;
-    }
-
-    /**
-     * Returns the working set manager
-     * 
-     * @return the working set manager
-     * @since 2.0
-     */
-    public IWorkingSetManager getWorkingSetManager() {
-        if (workingSetManager == null) {
-            workingSetManager = new WorkingSetManager(bundleContext);
-            workingSetManager.restoreState();
-        }
-        return workingSetManager;
-    }
-
-    /**
-     * Returns the working set registry
-     * 
-     * @return the working set registry
-     * @since 2.0
-     */
-    public WorkingSetRegistry getWorkingSetRegistry() {
-        if (workingSetRegistry == null) {
-            workingSetRegistry = new WorkingSetRegistry();
-            workingSetRegistry.load();
-        }
-        return workingSetRegistry;
-    }
-
-    /**
-     * Returns the introduction registry.
-     *
-     * @return the introduction registry.
-     * @since 3.0
-     */
-    public IIntroRegistry getIntroRegistry() {
-        if (introRegistry == null) {
-            introRegistry = new IntroRegistry();
-        }
-        return introRegistry;
-    }
-    
-    /**
-	 * Returns the operation support.
-	 * 
-	 * @return the workbench operation support.
-	 * @since 3.1
-	 */
-    public IWorkbenchOperationSupport getOperationSupport() {
-        if (operationSupport == null) {
-        	operationSupport = new WorkbenchOperationSupport();
-        }
-        return operationSupport;
-    }
-    
-
-    /**
-     * Get the preference manager.
-     * @return PreferenceManager the preference manager for
-     * the receiver.
-     */
-    public PreferenceManager getPreferenceManager() {
-        if (preferenceManager == null) {
-            preferenceManager = new WorkbenchPreferenceManager(
-                    PREFERENCE_PAGE_CATEGORY_SEPARATOR);
-
-            //Get the pages from the registry
-            PreferencePageRegistryReader registryReader = new PreferencePageRegistryReader(
-                    getWorkbench());
-            registryReader
-                    .loadFromRegistry(Platform.getExtensionRegistry());
-            preferenceManager.addPages(registryReader.getTopLevelNodes());
-           
-        }
-        return preferenceManager;
-    }
-
-    /**
-     * Returns the shared images for the workbench.
-     *
-     * @return the shared image manager
-     */
-    public ISharedImages getSharedImages() {
-        if (sharedImages == null) {
-			sharedImages = new SharedImages();
-		}
-        return sharedImages;
-    }
-
-    /**
-     * Returns the theme registry for the workbench.
-     * 
-     * @return the theme registry
-     */
-    public IThemeRegistry getThemeRegistry() {
-        if (themeRegistry == null) {
-            themeRegistry = new ThemeRegistry();
-            ThemeRegistryReader reader = new ThemeRegistryReader();
-            reader.readThemes(Platform.getExtensionRegistry(),
-                    themeRegistry);
-        }
-        return themeRegistry;
-    }
-
-    /**
-     * Answer the view registry.
-     * @return IViewRegistry the view registry for the
-     * receiver.
-     */
-    public IViewRegistry getViewRegistry() {
-        if (viewRegistry == null) {
-            viewRegistry = new ViewRegistry();
-        }
-        return viewRegistry;
-    }
-
-    /**
-     * Answer the workbench.
-     * @deprecated Use <code>PlatformUI.getWorkbench()</code> instead.
-     */
-    public IWorkbench getWorkbench() {
-        return PlatformUI.getWorkbench();
-    }
-
-    /** 
-     * Set default preference values.
-     * This method must be called whenever the preference store is initially loaded
-     * because the default values are not stored in the preference store.
-     */
-    protected void initializeDefaultPreferences(IPreferenceStore store) {
-        // Do nothing.  This should not be called.
-        // Prefs are initialized in WorkbenchPreferenceInitializer.
-    }
-
-    /**
-     * Logs the given message to the platform log.
-     * 
-     * If you have an exception in hand, call log(String, Throwable) instead.
-     * 
-     * If you have a status object in hand call log(String, IStatus) instead.
-     * 
-     * This convenience method is for internal use by the Workbench only and
-     * must not be called outside the Workbench.
-     * 
-     * @param message
-     *            A high level UI message describing when the problem happened.
-     */
-    public static void log(String message) {
-        getDefault().getLog().log(
-                StatusUtil.newStatus(IStatus.ERROR, message, null));    
-    }
-    
-    /**
-     * Log the throwable.
-     * @param t
-     */
-    public static void log(Throwable t) {
-		getDefault().getLog().log(getStatus(t));
-	}
-
-	/**
-	 * Return the status from throwable
-	 * @param t throwable
-	 * @return IStatus
-	 */
-	public static IStatus getStatus(Throwable t) {
-		String message = StatusUtil.getLocalizedMessage(t);
-
-		return newError(message, t);
-	}
-
-	/**
-	 * Create a new error from the message and the
-	 * throwable.
-	 * @param message
-	 * @param t
-	 * @return IStatus
-	 */
-	public static IStatus newError(String message, Throwable t) {
-		String pluginId = "org.eclipse.ui.workbench"; //$NON-NLS-1$
-		int errorCode = IStatus.OK;
-
-		// If this was a CoreException, keep the original plugin ID and error
-		// code
-		if (t instanceof CoreException) {
-			CoreException ce = (CoreException) t;
-			pluginId = ce.getStatus().getPlugin();
-			errorCode = ce.getStatus().getCode();
-		}
-
-		return new Status(IStatus.ERROR, pluginId, errorCode, message,
-				StatusUtil.getCause(t));
-	}
-    
-    /**
-	 * Logs the given message and throwable to the platform log.
-	 * 
-	 * If you have a status object in hand call log(String, IStatus) instead.
-	 * 
-	 * This convenience method is for internal use by the Workbench only and
-	 * must not be called outside the Workbench.
-	 * 
-	 * @param message
-	 *            A high level UI message describing when the problem happened.
-	 * @param t
-	 *            The throwable from where the problem actually occurred.
-	 */
-    public static void log(String message, Throwable t) {
-        IStatus status = StatusUtil.newStatus(IStatus.ERROR, message, t);
-        log(message, status);
-    }
-    
-    /**
-     * Logs the given throwable to the platform log, indicating the class and
-     * method from where it is being logged (this is not necessarily where it
-     * occurred).
-     * 
-     * This convenience method is for internal use by the Workbench only and
-     * must not be called outside the Workbench.
-     * 
-     * @param clazz
-     *            The calling class.
-     * @param methodName
-     *            The calling method name.
-     * @param t
-     *            The throwable from where the problem actually occurred.
-     */
-    public static void log(Class clazz, String methodName, Throwable t) {
-        String msg = MessageFormat.format("Exception in {0}.{1}: {2}", //$NON-NLS-1$
-                new Object[] { clazz.getName(), methodName, t });
-        log(msg, t);
-    }
-    
-    /**
-     * Logs the given message and status to the platform log.
-     * 
-     * This convenience method is for internal use by the Workbench only and
-     * must not be called outside the Workbench.
-     * 
-     * @param message
-     *            A high level UI message describing when the problem happened.
-     *            May be <code>null</code>.
-     * @param status
-     *            The status describing the problem. Must not be null.
-     */
-    public static void log(String message, IStatus status) {
-
-        //1FTUHE0: ITPCORE:ALL - API - Status & logging - loss of semantic info
-
-        if (message != null) {
-            getDefault().getLog().log(
-                    StatusUtil.newStatus(IStatus.ERROR, message, null));
-        }
-
-        getDefault().getLog().log(status);
-    }
-
-    /**
-     * Log the status to the default log.
-     * @param status
-     */
-    public static void log(IStatus status) {
-        getDefault().getLog().log(status);
-    }
-    
-    /**
-     * Get the decorator manager for the receiver
-     * @return DecoratorManager the decorator manager
-     * for the receiver.
-     */
-    public DecoratorManager getDecoratorManager() {
-        if (this.decoratorManager == null) {
-            this.decoratorManager = new DecoratorManager();
-        }
-        return decoratorManager;
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-     */
-    public void start(BundleContext context) throws Exception {
-    	context.addBundleListener(getBundleListener());
-        super.start(context);
-        bundleContext = context;
-        
-        JFaceUtil.initializeJFace();
-		
-		 Window.setDefaultOrientation(getDefaultOrientation());
-
-        // The UI plugin needs to be initialized so that it can install the callback in PrefUtil,
-        // which needs to be done as early as possible, before the workbench
-        // accesses any API preferences.
-        Bundle uiBundle = Platform.getBundle(PlatformUI.PLUGIN_ID);
-        try {
-            // Attempt to load the activator of the ui bundle.  This will force lazy start
-            // of the ui bundle.  Using the bundle activator class here because it is a
-            // class that needs to be loaded anyway so it should not cause extra classes
-            // to be loaded.s
-        	if(uiBundle != null)
-        		uiBundle.start(Bundle.START_TRANSIENT);
-        } catch (BundleException e) {
-            WorkbenchPlugin.log("Unable to load UI activator", e); //$NON-NLS-1$
-        }
-		/*
-		 * DO NOT RUN ANY OTHER CODE AFTER THIS LINE.  If you do, then you are
-		 * likely to cause a deadlock in class loader code.  Please see Bug 86450
-		 * for more information.
-		 */
-
-    }
-
-	/**
-     * Get the default orientation from the command line
-     * arguments. If there are no arguments imply the 
-     * orientation.
-	 * @return int
-	 * @see SWT#NONE
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 */
-    private int getDefaultOrientation() {
-		
-		String[] commandLineArgs = Platform.getCommandLineArgs();
-		
-		int orientation = getCommandLineOrientation(commandLineArgs);
-		
-		if(orientation != SWT.NONE) {
-			return orientation;
-		}
-		
-		orientation = getSystemPropertyOrientation();
-		
-		if(orientation != SWT.NONE) {
-			return orientation;
-		}
-
-		return checkCommandLineLocale(); //Use the default value if there is nothing specified
-	}
-	
-	/**
-	 * Check to see if the command line parameter for -nl
-	 * has been set. If so imply the orientation from this 
-	 * specified Locale. If it is a bidirectional Locale
-	 * return SWT#RIGHT_TO_LEFT.
-	 * If it has not been set or has been set to 
-	 * a unidirectional Locale then return SWT#NONE.
-	 * 
-	 * Locale is determined differently by different JDKs 
-	 * and may not be consistent with the users expectations.
-	 * 
-
-	 * @return int
-	 * @see SWT#NONE
-	 * @see SWT#RIGHT_TO_LEFT
-	 */
-	private int checkCommandLineLocale() {
-		
-		//Check if the user property is set. If not do not
-		//rely on the vm.
-		if(System.getProperty(NL_USER_PROPERTY) == null) {
-			return SWT.NONE;
-		}
-		
-		Locale locale = Locale.getDefault();
-		String lang = locale.getLanguage();
-
-		if ("iw".equals(lang) || "he".equals(lang) || "ar".equals(lang) ||  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				"fa".equals(lang) || "ur".equals(lang)) { //$NON-NLS-1$ //$NON-NLS-2$ 
-			return SWT.RIGHT_TO_LEFT;
-		}
-			
-		return SWT.NONE;
-	}
-
-	/**
-	 * Check to see if the orientation was set in the
-	 * system properties. If there is no orientation 
-	 * specified return SWT#NONE.
-	 * @return int
-	 * @see SWT#NONE
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 */
-	private int getSystemPropertyOrientation() {
-		String orientation = System.getProperty(ORIENTATION_PROPERTY);
-		if(RIGHT_TO_LEFT.equals(orientation)) {
-			return SWT.RIGHT_TO_LEFT;
-		}
-		if(LEFT_TO_RIGHT.equals(orientation)) {
-			return SWT.LEFT_TO_RIGHT;
-		}
-		return SWT.NONE;
-	}
-
-	/**
-	 * Find the orientation in the commandLineArgs. If there
-	 * is no orientation specified return SWT#NONE.
-	 * @param commandLineArgs
-	 * @return int
-	 * @see SWT#NONE
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 */
-	private int getCommandLineOrientation(String[] commandLineArgs) {
-		//Do not process the last one as it will never have a parameter
-		for (int i = 0; i < commandLineArgs.length - 1; i++) {
-			if(commandLineArgs[i].equalsIgnoreCase(ORIENTATION_COMMAND_LINE)){
-				String orientation = commandLineArgs[i+1];
-				if(orientation.equals(RIGHT_TO_LEFT)){
-					System.setProperty(ORIENTATION_PROPERTY,RIGHT_TO_LEFT);
-					return SWT.RIGHT_TO_LEFT;
-				}
-				if(orientation.equals(LEFT_TO_RIGHT)){
-					System.setProperty(ORIENTATION_PROPERTY,LEFT_TO_RIGHT);
-					return SWT.LEFT_TO_RIGHT;
-				}
-			}
-		}
-		
-		return SWT.NONE;
-	}
-
-	/**
-     * Return an array of all bundles contained in this workbench.
-     * 
-     * @return an array of bundles in the workbench or an empty array if none
-     * @since 3.0
-     */
-    public Bundle[] getBundles() {
-        return bundleContext == null ? new Bundle[0] : bundleContext
-                .getBundles();
-    }
-    
-    /**
-     * Returns the bundle context associated with the workbench plug-in.
-     * 
-     * @return the bundle context
-     * @since 3.1
-     */
-    public BundleContext getBundleContext() {
-    	return bundleContext;
-    }
-
-    /**
-     * Returns the application name.
-     * <p>
-     * Note this is never shown to the user.
-     * It is used to initialize the SWT Display.
-     * On Motif, for example, this can be used
-     * to set the name used for resource lookup.
-     * </p>
-     *
-     * @return the application name, or <code>null</code>
-     * @see org.eclipse.swt.widgets.Display#setAppName
-     * @since 3.0
-     */
-    public String getAppName() {
-        return getProductInfo().getAppName();
-    }
-
-    /**
-     * Returns the name of the product.
-     * 
-     * @return the product name, or <code>null</code> if none
-     * @since 3.0
-     */
-    public String getProductName() {
-        return getProductInfo().getProductName();
-    }
-
-    /**
-     * Returns the image descriptors for the window image to use for this product.
-     * 
-     * @return an array of the image descriptors for the window image, or
-     *         <code>null</code> if none
-     * @since 3.0
-     */
-    public ImageDescriptor[] getWindowImages() {
-        return getProductInfo().getWindowImages();
-    }
-
-    /**
-     * Returns an instance that describes this plugin's product (formerly "primary
-     * plugin").
-     * @return ProductInfo the product info for the receiver
-     */
-    private ProductInfo getProductInfo() {
-        if (productInfo == null) {
-			productInfo = new ProductInfo(Platform.getProduct());
-		}
-        return productInfo;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-     */
-    public void stop(BundleContext context) throws Exception {
-    	if (bundleListener!=null) {
-    		context.removeBundleListener(bundleListener);
-    		bundleListener = null;
-    	}
-    	// TODO normally super.stop(*) would be the last statement in this
-    	// method
-        super.stop(context);     
-    } 
-    
-    /**
-     * Return the new wizard registry.
-     * 
-     * @return the new wizard registry
-     * @since 3.1
-     */
-    public IWizardRegistry getNewWizardRegistry() {
-    	return NewWizardRegistry.getInstance();
-    }
-    
-    /**
-     * Return the import wizard registry.
-     * 
-     * @return the import wizard registry
-     * @since 3.1
-     */
-    public IWizardRegistry getImportWizardRegistry() {
-    	return ImportWizardRegistry.getInstance();
-    }
-    
-    /**
-     * Return the export wizard registry.
-     * 
-     * @return the export wizard registry
-     * @since 3.1
-     */
-    public IWizardRegistry getExportWizardRegistry() {
-    	return ExportWizardRegistry.getInstance();
-    }
-    
-    /**
-     * FOR INTERNAL WORKBENCH USE ONLY. 
-     * 
-     * Returns the path to a location in the file system that can be used 
-     * to persist/restore state between workbench invocations.
-     * If the location did not exist prior to this call it will  be created.
-     * Returns <code>null</code> if no such location is available.
-     * 
-     * @return path to a location in the file system where this plug-in can
-     * persist data between sessions, or <code>null</code> if no such
-     * location is available.
-     * @since 3.1
-     */
-    public IPath getDataLocation() {
-        try {
-            return getStateLocation();
-        } catch (IllegalStateException e) {
-            // This occurs if -data=@none is explicitly specified, so ignore this silently.
-            // Is this OK? See bug 85071.
-            return null;
-        }
-    }
-
-	/* package */ void addBundleListener(BundleListener bundleListener) {
-		bundleContext.addBundleListener(bundleListener);
-	}    
-
-	/* package */ void removeBundleListener(BundleListener bundleListener) {
-		bundleContext.removeBundleListener(bundleListener);
-	}    
-	
-	/* package */ int getBundleCount() {
-		return bundleContext.getBundles().length;
-	}
-	
-	/* package */ OutputStream getSplashStream() {
-		// assumes the output stream is available as a service
-		// see EclipseStarter.publishSplashScreen
-		ServiceReference[] ref;
-		try {
-			ref = bundleContext.getServiceReferences(OutputStream.class.getName(), null);
-		} catch (InvalidSyntaxException e) {
-			return null;
-		}
-		if(ref==null) {
-			return null;
-		}
-		for (int i = 0; i < ref.length; i++) {
-			String name = (String) ref[i].getProperty("name"); //$NON-NLS-1$
-			if (name != null && name.equals("splashstream")) {  //$NON-NLS-1$
-				Object result = bundleContext.getService(ref[i]);
-				bundleContext.ungetService(ref[i]);
-				return (OutputStream) result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * @return
-	 */
-	private BundleListener getBundleListener() {
-		if (bundleListener == null) {
-			bundleListener = new SynchronousBundleListener() {
-				public void bundleChanged(BundleEvent event) {
-					WorkbenchPlugin.this.bundleChanged(event);
-				}
-			};
-		}
-		return bundleListener;
-	}
-
-	private void bundleChanged(BundleEvent event) {
-		// a bundle in the STARTING state generates 2 events, LAZY_ACTIVATION
-		// when it enters STARTING and STARTING when it exists STARTING :-)
-		synchronized (startingBundles) {
-			switch (event.getType()) {
-				case BundleEvent.STARTING :
-					startingBundles.add(event.getBundle());
-					break;
-				case BundleEvent.STARTED :
-				case BundleEvent.STOPPED :
-					startingBundles.remove(event.getBundle());
-					break;
-				default :
-					break;
-			}
-		}
-	}
-
-	public boolean isStarting(Bundle bundle) {
-		synchronized (startingBundles) {
-			return startingBundles.contains(bundle);
-		}
-	}
-
-	/**
-	 * Return whether or not the OSGi framework has specified the handle of a splash shell.
-	 * 
-	 * @return whether or not the OSGi framework has specified the handle of a splash shell
-	 * @since 3.4
-	 */
-	public static boolean isSplashHandleSpecified() {
-		return System.getProperty(PROP_SPLASH_HANDLE) != null;
-	}
-	
-	/**
-	 * Get the splash shell for this workbench instance, if any. This will find
-	 * the splash created by the launcher (native) code and wrap it in a SWT
-	 * shell. This may have the side effect of setting data on the provided
-	 * {@link Display}.
-	 * 
-	 * @param display
-	 *            the display to parent the shell on
-	 * 
-	 * @return the splash shell or <code>null</code>
-	 * @throws InvocationTargetException
-	 * @throws IllegalAccessException
-	 * @throws IllegalArgumentException
-	 * @throws NumberFormatException
-	 * @see Display#setData(String, Object)
-	 * @since 3.4
-	 */
-	public static Shell getSplashShell(Display display)
-			throws NumberFormatException, IllegalArgumentException,
-			IllegalAccessException, InvocationTargetException {
-		Shell splashShell = (Shell) display.getData(DATA_SPLASH_SHELL); 
-		if (splashShell != null)
-			return splashShell;
-		
-		String splashHandle = System.getProperty(PROP_SPLASH_HANDLE);
-		if (splashHandle == null) {
-			return null;
-		}
-	
-		// look for the 32 bit internal_new shell method
-		try {
-			Method method = Shell.class.getMethod(
-					"internal_new", new Class[] { Display.class, int.class }); //$NON-NLS-1$
-			// we're on a 32 bit platform so invoke it with splash
-			// handle as an int
-			splashShell = (Shell) method.invoke(null, new Object[] { display,
-					new Integer(splashHandle) });
-		} catch (NoSuchMethodException e) {
-			// look for the 64 bit internal_new shell method
-			try {
-				Method method = Shell.class
-						.getMethod(
-								"internal_new", new Class[] { Display.class, long.class }); //$NON-NLS-1$
-
-				// we're on a 64 bit platform so invoke it with a long
-				splashShell = (Shell) method.invoke(null, new Object[] {
-						display, new Long(splashHandle) });
-			} catch (NoSuchMethodException e2) {
-				// cant find either method - don't do anything.
-			}
-		}
-
-		display.setData(DATA_SPLASH_SHELL, splashShell);
-		return splashShell;
-	}
-	
-	/**
-	 * Removes any splash shell data set on the provided display and disposes
-	 * the shell if necessary.
-	 * 
-	 * @param display
-	 *            the display to parent the shell on
-	 * @since 3.4
-	 */
-	public static void unsetSplashShell(Display display) {
-		Shell splashShell = (Shell) display.getData(DATA_SPLASH_SHELL);
-		if (splashShell != null) {
-			if (!splashShell.isDisposed())
-				splashShell.dispose();
-			display.setData(DATA_SPLASH_SHELL, null);
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
deleted file mode 100644
index 8510e9e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPreferenceInitializer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.util.OpenStrategy;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * Implementation of the workbench plugin's preferences extension's
- * customization element. This is needed in order to force the workbench
- * plugin's preferences to be initialized properly when running without
- * org.eclipse.core.runtime.compatibility. For more details, see bug 58975 - New
- * preference mechanism does not properly initialize defaults.
- * 
- * @since 3.0
- */
-public class WorkbenchPreferenceInitializer extends
-		AbstractPreferenceInitializer {
-	
-	
-
-	public void initializeDefaultPreferences() {
-		IScopeContext context = new DefaultScope();
-		IEclipsePreferences node = context.getNode(WorkbenchPlugin
-				.getDefault().getBundle().getSymbolicName());
-
-		node
-				.putBoolean(IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT,
-						true);
-
-		node.putBoolean(IPreferenceConstants.EDITORLIST_PULLDOWN_ACTIVE, false);
-		node.putBoolean(IPreferenceConstants.EDITORLIST_DISPLAY_FULL_NAME,
-				false);
-		node.putBoolean(IPreferenceConstants.STICKY_CYCLE, false);
-		node.putBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN, false);
-		node.putBoolean(IPreferenceConstants.REUSE_DIRTY_EDITORS, true);
-		node.putInt(IPreferenceConstants.REUSE_EDITORS, 8);
-		node.putBoolean(IPreferenceConstants.OPEN_ON_SINGLE_CLICK, false);
-		node.putBoolean(IPreferenceConstants.SELECT_ON_HOVER, false);
-		node.putBoolean(IPreferenceConstants.OPEN_AFTER_DELAY, false);
-		node.putInt(IPreferenceConstants.RECENT_FILES, 4);
-
-		
-		node.putBoolean(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE, false);
-		
-		node.putBoolean(IPreferenceConstants.USE_IPERSISTABLE_EDITORS, true);
-
-		node.putInt(IPreferenceConstants.EDITOR_TAB_WIDTH, 3); // high
-		node.putInt(IPreferenceConstants.OPEN_VIEW_MODE,
-				IPreferenceConstants.OVM_EMBED);
-		node.putInt(IPreferenceConstants.OPEN_PERSP_MODE,
-				IPreferenceConstants.OPM_ACTIVE_PAGE);
-		node.put(IPreferenceConstants.ENABLED_DECORATORS, ""); //$NON-NLS-1$
-		node.putInt(IPreferenceConstants.EDITORLIST_SELECTION_SCOPE,
-				IPreferenceConstants.EDITORLIST_SET_PAGE_SCOPE); // Current
-																 // Window
-		node.putInt(IPreferenceConstants.EDITORLIST_SORT_CRITERIA,
-				IPreferenceConstants.EDITORLIST_NAME_SORT); // Name Sort
-		node.putBoolean(IPreferenceConstants.COLOR_ICONS, true);
-		node.putInt(IPreferenceConstants.KEYS_PREFERENCE_SELECTED_TAB, 0);
-		node.putBoolean(IPreferenceConstants.MULTI_KEY_ASSIST, true);
-		node.putInt(IPreferenceConstants.MULTI_KEY_ASSIST_TIME, 1000);
-
-		// Temporary option to enable wizard for project capability
-		node.putBoolean("ENABLE_CONFIGURABLE_PROJECT_WIZARD", false); //$NON-NLS-1$
-		// Temporary option to enable single click
-		node.putInt("SINGLE_CLICK_METHOD", OpenStrategy.DOUBLE_CLICK); //$NON-NLS-1$
-		// Temporary option to enable cool bars
-		node.putBoolean("ENABLE_COOL_BARS", true); //$NON-NLS-1$
-		// Temporary option to enable new menu organization
-		node.putBoolean("ENABLE_NEW_MENUS", true); //$NON-NLS-1$   
-		//Temporary option to turn off the dialog font
-		node.putBoolean("DISABLE_DIALOG_FONT", false); //$NON-NLS-1$
-
-		// Heap status preferences
-		node.putBoolean(IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR, false);
-		node.putInt(IHeapStatusConstants.PREF_UPDATE_INTERVAL, 500);
-		node.putBoolean(IHeapStatusConstants.PREF_SHOW_MAX, false);
-		node.putBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION, false);
-		
-		IEclipsePreferences rootNode = (IEclipsePreferences) Platform
-				.getPreferencesService().getRootNode()
-				.node(InstanceScope.SCOPE);
-
-		final String workbenchName = WorkbenchPlugin.getDefault().getBundle()
-				.getSymbolicName();
-		try {
-			if (rootNode.nodeExists(workbenchName)) {
-				((IEclipsePreferences) rootNode.node(workbenchName))
-						.addPreferenceChangeListener(PlatformUIPreferenceListener
-								.getSingleton());
-			}
-		} catch (BackingStoreException e) {
-			IStatus status = new Status(IStatus.ERROR, WorkbenchPlugin
-					.getDefault().getBundle().getSymbolicName(), IStatus.ERROR,
-					e.getLocalizedMessage(), e);
-			WorkbenchPlugin.getDefault().getLog().log(status);
-		}
-	
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
deleted file mode 100644
index 8cf7e4d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IPageService;
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Create singleton services to make the Workbench singletons available. This is
- * a "hack" to provide access to the Workbench singletons.
- * 
- * @since 3.4
- */
-public class WorkbenchSupportFactory extends AbstractServiceFactory {
-
-	public Object create(Class serviceInterface, IServiceLocator parentLocator,
-			IServiceLocator locator) {
-
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		final IWorkbench wb = wls.getWorkbench();
-		if (wb == null) {
-			return null;
-		}
-		final IWorkbenchWindow window = wls.getWorkbenchWindow();
-		final IWorkbenchPartSite site = wls.getPartSite();
-		Object parent = parentLocator.getService(serviceInterface);
-
-		if (parent == null) {
-			// return top level services
-			if (IProgressService.class.equals(serviceInterface)) {
-				return wb.getProgressService();
-			}
-			if (IWorkbenchSiteProgressService.class.equals(serviceInterface)) {
-				if (site instanceof PartSite) {
-					return ((PartSite) site).getSiteProgressService();
-				}
-			}
-			if (IPartService.class.equals(serviceInterface)) {
-				if (window != null) {
-					return window.getPartService();
-				}
-			}
-			if (IPageService.class.equals(serviceInterface)) {
-				if (window != null) {
-					return window;
-				}
-			}
-			if (ISelectionService.class.equals(serviceInterface)) {
-				if (window != null) {
-					return window.getSelectionService();
-				}
-			}
-			return null;
-		}
-
-		if (ISelectionService.class.equals(serviceInterface)) {
-			if (parent instanceof WindowSelectionService && window != null
-					&& window.getActivePage() != null) {
-				return new SlaveSelectionService(window.getActivePage());
-			}
-			return new SlaveSelectionService((ISelectionService) parent);
-		}
-
-		if (IProgressService.class.equals(serviceInterface)) {
-			if (site instanceof PartSite) {
-				return ((PartSite) site).getSiteProgressService();
-			}
-		}
-		if (IPartService.class.equals(serviceInterface)) {
-			return new SlavePartService((IPartService) parent);
-		}
-		if (IPageService.class.equals(serviceInterface)) {
-			return new SlavePageService((IPageService) parent);
-		}
-
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
deleted file mode 100644
index fc51014..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
+++ /dev/null
@@ -1,3984 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import java.lang.reflect.InvocationTargetException;
-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.commands.IHandler;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.CoolBarManager;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.ICoolBarManager;
-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.action.StatusLineManager;
-import org.eclipse.jface.commands.ActionHandler;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.osgi.util.TextProcessor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.CBanner;
-import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ActiveShellExpression;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.IPersistable;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.application.ActionBarAdvisor;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.application.WorkbenchWindowAdvisor;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.contexts.IWorkbenchContextSupport;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.actions.CommandAction;
-import org.eclipse.ui.internal.contexts.ContextAuthority;
-import org.eclipse.ui.internal.dialogs.CustomizePerspectiveDialog;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.internal.handlers.ActionCommandMappingService;
-import org.eclipse.ui.internal.handlers.IActionCommandMappingService;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.layout.CacheWrapper;
-import org.eclipse.ui.internal.layout.ITrimManager;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.layout.TrimLayout;
-import org.eclipse.ui.internal.menus.IActionSetsListener;
-import org.eclipse.ui.internal.menus.LegacyActionPersistence;
-import org.eclipse.ui.internal.menus.TrimBarManager2;
-import org.eclipse.ui.internal.menus.TrimContributionManager;
-import org.eclipse.ui.internal.menus.WorkbenchMenuService;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.misc.UIListenerLogging;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.presentations.DefaultActionBarPresentationFactory;
-import org.eclipse.ui.internal.progress.ProgressRegion;
-import org.eclipse.ui.internal.provisional.application.IActionBarConfigurer2;
-import org.eclipse.ui.internal.provisional.presentations.IActionBarPresentationFactory;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.UIExtensionTracker;
-import org.eclipse.ui.internal.services.EvaluationReference;
-import org.eclipse.ui.internal.services.IServiceLocatorCreator;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.services.ServiceLocator;
-import org.eclipse.ui.internal.services.WorkbenchLocationService;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.tweaklets.WorkbenchImplementation;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.MenuUtil;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceScopes;
-
-/**
- * A window within the workbench.
- */
-public class WorkbenchWindow extends ApplicationWindow implements
-		IWorkbenchWindow {
-
-	private WorkbenchWindowAdvisor windowAdvisor;
-
-	private ActionBarAdvisor actionBarAdvisor;
-
-	private int number;
-
-	private PageList pageList = new PageList();
-
-	private PageListenerList pageListeners = new PageListenerList();
-
-	private PerspectiveListenerList perspectiveListeners = new PerspectiveListenerList();
-
-	private WWinPartService partService = new WWinPartService(this);
-
-	private ActionPresentation actionPresentation;
-
-	private WWinActionBars actionBars;
-
-	private boolean updateDisabled = true;
-
-	private boolean closing = false;
-
-	private boolean shellActivated = false;
-
-	private FastViewBar fastViewBar;
-
-	private PerspectiveSwitcher perspectiveSwitcher = null;
-
-	private TrimLayout defaultLayout;
-
-	ProgressRegion progressRegion = null;
-
-	// Legacy (3.2) contribution handling
-	private TrimBarManager2 trimMgr2 = null;
-	
-	// 3.3 Trim Contribution handling
-	private TrimContributionManager trimContributionMgr = null;
-	
-	/**
-	 * The map of services maintained by the workbench window. These services
-	 * are initialized during workbench window during the
-	 * {@link #configureShell(Shell)}.
-	 */
-	private final ServiceLocator serviceLocator;
-
-	private HeapStatus heapStatus;
-
-	private WindowTrimProxy heapStatusTrim = null;
-
-	private boolean emptyWindowContentsCreated = false;
-
-	private Control emptyWindowContents;
-
-	private Rectangle normalBounds;
-
-	private boolean asMaximizedState = false;
-
-	private CBanner topBar;
-
-	private IWindowTrim topBarTrim;
-
-	// Previous shell size. Used to prevent the CBanner from triggering
-	// redundant layouts
-	private Point lastShellSize = new Point(0, 0);
-
-	/**
-	 * The composite under which workbench pages create their controls.
-	 * 
-	 * @since 3.0
-	 */
-	private Composite pageComposite;
-
-	/**
-	 * Bit flags indication which submenus (New, Show Views, ...) this window
-	 * contains. Initially none.
-	 * 
-	 * @since 3.0
-	 */
-	private int submenus = 0x00;
-
-	/**
-	 * Object for configuring this workbench window. Lazily initialized to an
-	 * instance unique to this window.
-	 * 
-	 * @since 3.0
-	 */
-	private WorkbenchWindowConfigurer windowConfigurer = null;
-	
-	/**
-	 * List of generic property listeners.
-	 * 
-	 * @since 3.3
-	 */
-	private ListenerList genericPropertyListeners = new ListenerList();
-
-	private ShellPool detachedWindowShells;
-	
-	static final String TEXT_DELIMITERS = TextProcessor.getDefaultDelimiters() + "-"; //$NON-NLS-1$
-
-	// constants for shortcut bar group ids
-	static final String GRP_PAGES = "pages"; //$NON-NLS-1$
-
-	static final String GRP_PERSPECTIVES = "perspectives"; //$NON-NLS-1$
-
-	static final String GRP_FAST_VIEWS = "fastViews"; //$NON-NLS-1$
-
-	// static fields for inner classes.
-	static final int VGAP = 0;
-
-	static final int CLIENT_INSET = 3;
-
-	static final int BAR_SIZE = 23;
-
-	/**
-	 * Coolbar visibility change property.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String PROP_COOLBAR_VISIBLE = "coolbarVisible"; //$NON-NLS-1$
-	
-	/**
-	 * Perspective bar visibility change property.
-	 * 
-	 * @since 3.3
-	 */
-	public static final String PROP_PERSPECTIVEBAR_VISIBLE = "perspectiveBarVisible"; //$NON-NLS-1$
-	
-	/**
-	 * The status line visibility change property.  for internal use only.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String PROP_STATUS_LINE_VISIBLE = "statusLineVisible"; //$NON-NLS-1$
-	
-	/**
-	 * Constant (bit mask) indicating which the Show View submenu is probably
-	 * present somewhere in this window.
-	 * 
-	 * @see #addSubmenu
-	 * @since 3.0
-	 */
-	public static final int SHOW_VIEW_SUBMENU = 0x01;
-
-	/**
-	 * Constant (bit mask) indicating which the Open Perspective submenu is
-	 * probably present somewhere in this window.
-	 * 
-	 * @see #addSubmenu
-	 * @since 3.0
-	 */
-	public static final int OPEN_PERSPECTIVE_SUBMENU = 0x02;
-
-	/**
-	 * Constant (bit mask) indicating which the New Wizard submenu is probably
-	 * present somewhere in this window.
-	 * 
-	 * @see #addSubmenu
-	 * @since 3.0
-	 */
-	public static final int NEW_WIZARD_SUBMENU = 0x04;
-
-	/**
-	 * Remembers that this window contains the given submenu.
-	 * 
-	 * @param type
-	 *            the type of submenu, one of:
-	 *            {@link #NEW_WIZARD_SUBMENU NEW_WIZARD_SUBMENU},
-	 *            {@link #OPEN_PERSPECTIVE_SUBMENU OPEN_PERSPECTIVE_SUBMENU},
-	 *            {@link #SHOW_VIEW_SUBMENU SHOW_VIEW_SUBMENU}
-	 * @see #containsSubmenu
-	 * @since 3.0
-	 */
-	public void addSubmenu(int type) {
-		submenus |= type;
-	}
-
-	/**
-	 * Checks to see if this window contains the given type of submenu.
-	 * 
-	 * @param type
-	 *            the type of submenu, one of:
-	 *            {@link #NEW_WIZARD_SUBMENU NEW_WIZARD_SUBMENU},
-	 *            {@link #OPEN_PERSPECTIVE_SUBMENU OPEN_PERSPECTIVE_SUBMENU},
-	 *            {@link #SHOW_VIEW_SUBMENU SHOW_VIEW_SUBMENU}
-	 * @return <code>true</code> if window contains submenu,
-	 *         <code>false</code> otherwise
-	 * @see #addSubmenu
-	 * @since 3.0
-	 */
-	public boolean containsSubmenu(int type) {
-		return ((submenus & type) != 0);
-	}
-
-	/**
-	 * Constant indicating that all the actions bars should be filled.
-	 * 
-	 * @since 3.0
-	 */
-	private static final int FILL_ALL_ACTION_BARS = ActionBarAdvisor.FILL_MENU_BAR
-			| ActionBarAdvisor.FILL_COOL_BAR
-			| ActionBarAdvisor.FILL_STATUS_LINE;
-
-	/**
-	 * Creates and initializes a new workbench window.
-	 * 
-	 * @param number
-	 *            the number for the window
-	 */
-	public WorkbenchWindow(int number) {
-		super(null);
-		this.number = number;
-
-		// Make sure there is a workbench. This call will throw
-		// an exception if workbench not created yet.
-		final IWorkbench workbench = PlatformUI.getWorkbench();
-		IServiceLocatorCreator slc = (IServiceLocatorCreator) workbench
-				.getService(IServiceLocatorCreator.class);
-		this.serviceLocator = (ServiceLocator) slc
-				.createServiceLocator(workbench, null, new IDisposable(){
-					public void dispose() {
-						final Shell shell = getShell();
-						if (shell != null && !shell.isDisposed()) {
-							close();
-						}
-					}
-				});
-		initializeDefaultServices();
-
-		// Add contribution managers that are exposed to other plugins.
-		addMenuBar();
-		addCoolBar(SWT.NONE);  // style is unused
-		addStatusLine();
-
-		// register with the tracker
-		getExtensionTracker()
-				.registerHandler(
-						actionSetHandler,
-						ExtensionTracker
-								.createExtensionPointFilter(getActionSetExtensionPoint()));
-
-		fireWindowOpening();
-
-		// set the shell style
-		setShellStyle(getWindowConfigurer().getShellStyle());
-
-		// Fill the action bars
-		fillActionBars(FILL_ALL_ACTION_BARS);
-	}
-
-	/**
-	 * Return the action set extension point.
-	 * 
-	 * @return the action set extension point
-	 * @since 3.1
-	 */
-	private IExtensionPoint getActionSetExtensionPoint() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_ACTION_SETS);
-	}
-
-	/**
-	 * Return the style bits for the shortcut bar.
-	 * 
-	 * @return int
-	 */
-	protected int perspectiveBarStyle() {
-		return SWT.FLAT | SWT.WRAP | SWT.RIGHT | SWT.HORIZONTAL;
-	}
-
-	private TrimDropTarget trimDropTarget;
-
-	private boolean coolBarVisible = true;
-
-	private boolean perspectiveBarVisible = true;
-	
-	private boolean fastViewBarVisible = true;
-
-	private boolean statusLineVisible = true;
-
-	private IWindowTrim statusLineTrim = null;
-
-	/**
-	 * The handlers for global actions that were last submitted to the workbench
-	 * command support. This is a map of command identifiers to
-	 * <code>ActionHandler</code>. This map is never <code>null</code>,
-	 * and is never empty as long as at least one global action has been
-	 * registered.
-	 */
-	private Map globalActionHandlersByCommandId = new HashMap();
-
-	/**
-	 * The list of handler submissions submitted to the workbench command
-	 * support. This list may be empty, but it is never <code>null</code>.
-	 */
-	private List handlerActivations = new ArrayList();
-
-	/**
-	 * The number of large updates that are currently going on. If this is
-	 * number is greater than zero, then UI updateActionBars is a no-op.
-	 * 
-	 * @since 3.1
-	 */
-	private int largeUpdates = 0;
-
-	private IExtensionTracker tracker;
-
-	private IExtensionChangeHandler actionSetHandler = new IExtensionChangeHandler() {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker,
-		 *      org.eclipse.core.runtime.IExtension)
-		 */
-		public void addExtension(IExtensionTracker tracker, IExtension extension) {
-			// this assumes that the workbench-level tracker will have already
-			// updated the registry
-
-			ArrayList setsToActivate = new ArrayList();
-			// look for all new sets that are on by default. Examine the tracker
-			// at the workbench level to see what descriptors are registered
-			// against this extension
-			Object[] registeredObjects = getWorkbench().getExtensionTracker()
-					.getObjects(extension);
-			for (int i = 0; i < registeredObjects.length; i++) {
-				if (registeredObjects[i] instanceof IActionSetDescriptor) {
-					IActionSetDescriptor desc = (IActionSetDescriptor) registeredObjects[i];
-					if (desc.isInitiallyVisible()) {
-						setsToActivate.add(desc);
-					}
-				}
-			}
-
-			// if none of the new sets are marked as initially visible, abort.
-			if (setsToActivate.isEmpty()) {
-				return;
-			}
-
-			IActionSetDescriptor[] descriptors = (IActionSetDescriptor[]) setsToActivate
-					.toArray(new IActionSetDescriptor[setsToActivate.size()]);
-
-			WorkbenchPage page = getActiveWorkbenchPage();
-			if (page != null) {
-				Perspective[] perspectives = page.getOpenInternalPerspectives();
-
-				for (int i = 0; i < perspectives.length; i++) {
-					perspectives[i].turnOnActionSets(descriptors);
-				}
-			}
-
-			updateActionSets();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension,
-		 *      java.lang.Object[])
-		 */
-		public void removeExtension(IExtension extension, Object[] objects) {
-			// remove the contributions from the window bars and dispose of the
-			// actions
-			for (int i = 0; i < objects.length; i++) {
-				if (objects[i] instanceof PluginActionSetBuilder.Binding) {
-					PluginActionSetBuilder.Binding binding = (PluginActionSetBuilder.Binding) objects[i];
-					binding.builder.removeActionExtensions(binding.set,
-							binding.window);
-					binding.set.dispose();
-				}
-			}
-
-			// update all opened perspectives
-			Perspective[] perspectives = getActiveWorkbenchPage()
-					.getOpenInternalPerspectives();
-			boolean updateNeeded = true;
-			IContextService contextService = (IContextService) getService(IContextService.class);
-			try {
-				contextService.activateContext(ContextAuthority.DEFER_EVENTS);
-				
-				for (int i = 0; i < perspectives.length; i++) {
-					for (int j = 0; j < objects.length; j++) {
-						if (objects[j] instanceof IActionSetDescriptor) {
-							perspectives[i]
-									.removeActionSet((IActionSetDescriptor) objects[j]);
-							getActionPresentation().removeActionSet(
-									(IActionSetDescriptor) objects[j]);
-						}
-					}
-				}
-			} finally {
-				contextService.activateContext(ContextAuthority.SEND_EVENTS);
-			}
-
-			if (updateNeeded) {
-				// refresh the window
-				updateActionSets();
-			}
-		}
-	};
-
-	void registerGlobalAction(IAction globalAction) {
-		String commandId = globalAction.getActionDefinitionId();
-
-		if (commandId != null) {
-			final Object value = globalActionHandlersByCommandId.get(commandId);
-			if (value instanceof ActionHandler) {
-				// This handler is about to get clobbered, so dispose it.
-				final ActionHandler handler = (ActionHandler) value;
-				handler.dispose();
-			}
-
-			if (globalAction instanceof CommandAction) {
-				final String actionId = globalAction.getId();
-				if (actionId != null) {
-					final IActionCommandMappingService mappingService = (IActionCommandMappingService) serviceLocator
-							.getService(IActionCommandMappingService.class);
-					mappingService.map(actionId, commandId);
-				}
-			} else {
-				globalActionHandlersByCommandId.put(commandId,
-						new ActionHandler(globalAction));
-			}
-		}
-
-		submitGlobalActions();
-	}
-
-	/**
-	 * <p>
-	 * Submits the action handlers for action set actions and global actions.
-	 * Global actions are given priority, so that if a global action and an
-	 * action set action both handle the same command, the global action is
-	 * given priority.
-	 * </p>
-	 * <p>
-	 * These submissions are submitted as <code>Priority.LEGACY</code>, which
-	 * means that they are the lowest priority. This means that if a higher
-	 * priority submission handles the same command under the same conditions,
-	 * that that submission will become the handler.
-	 * </p>
-	 */
-	void submitGlobalActions() {
-		final IHandlerService handlerService = (IHandlerService) getWorkbench().getService(IHandlerService.class);
-
-		/*
-		 * Mash the action sets and global actions together, with global actions
-		 * taking priority.
-		 */
-		Map handlersByCommandId = new HashMap();
-		handlersByCommandId.putAll(globalActionHandlersByCommandId);
-
-		List newHandlers = new ArrayList(handlersByCommandId.size());
-
-		Iterator existingIter = handlerActivations.iterator();
-		while (existingIter.hasNext()) {
-			IHandlerActivation next = (IHandlerActivation) existingIter.next();
-
-			String cmdId = next.getCommandId();
-
-			Object handler = handlersByCommandId.get(cmdId);
-			if (handler == next.getHandler()) {
-				handlersByCommandId.remove(cmdId);
-				newHandlers.add(next);
-			} else {
-				handlerService.deactivateHandler(next);
-			}
-		}
-
-		final Shell shell = getShell();
-		if (shell != null) {
-			final Expression expression = new ActiveShellExpression(shell);
-			for (Iterator iterator = handlersByCommandId.entrySet().iterator(); iterator
-					.hasNext();) {
-				Map.Entry entry = (Map.Entry) iterator.next();
-				String commandId = (String) entry.getKey();
-				IHandler handler = (IHandler) entry.getValue();
-				newHandlers.add(handlerService.activateHandler(commandId,
-						handler, expression));
-			}
-		}
-
-		handlerActivations = newHandlers;
-	}
-	
-	/**
-	 * Add a generic property listener.
-	 * 
-	 * @param listener the listener to add
-	 * @since 3.3
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		genericPropertyListeners.add(listener);
-	}
-	
-	/**
-	 * Removes a generic property listener.
-	 * 
-	 * @param listener the listener to remove 
-	 * @since 3.3
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		genericPropertyListeners.remove(listener);
-	}
-	
-	private void firePropertyChanged(final String property, final Object oldValue, final Object newValue) {
-		PropertyChangeEvent event = new PropertyChangeEvent(this, property, oldValue, newValue);
-		Object[] listeners = genericPropertyListeners.getListeners();
-		for (int i = 0; i < listeners.length; i++) {
-			IPropertyChangeListener listener = (IPropertyChangeListener) listeners[i];
-			listener.propertyChange(event);
-		}
-	}
-
-	/*
-	 * Adds an listener to the part service.
-	 */
-	public void addPageListener(IPageListener l) {
-		pageListeners.addPageListener(l);
-	}
-
-	/**
-	 * @see org.eclipse.ui.IPageService
-	 */
-	public void addPerspectiveListener(org.eclipse.ui.IPerspectiveListener l) {
-		perspectiveListeners.addPerspectiveListener(l);
-	}
-
-	/**
-	 * Configures this window to have a perspecive bar. Does nothing if it
-	 * already has one.
-	 */
-	protected void addPerspectiveBar(int style) {
-		Assert.isTrue(perspectiveSwitcher == null);
-		perspectiveSwitcher = new PerspectiveSwitcher(this, topBar, style);
-	}
-
-	/**
-	 * Close the window.
-	 * 
-	 * Assumes that busy cursor is active.
-	 */
-	private boolean busyClose() {
-		// Whether the window was actually closed or not
-		boolean windowClosed = false;
-
-		// Setup internal flags to indicate window is in
-		// progress of closing and no update should be done.
-		closing = true;
-		updateDisabled = true;
-
-		try {
-			// Only do the check if it is OK to close if we are not closing
-			// via the workbench as the workbench will check this itself.
-			Workbench workbench = getWorkbenchImpl();
-			int count = workbench.getWorkbenchWindowCount();
-			// also check for starting - if the first window dies on startup
-			// then we'll need to open a default window.
-			if (!workbench.isStarting()
-					&& !workbench.isClosing()
-					&& count <= 1
-					&& workbench.getWorkbenchConfigurer()
-							.getExitOnLastWindowClose()) {
-				windowClosed = workbench.close();
-			} else {
-				if (okToClose()) {
-					windowClosed = hardClose();
-				}
-			}
-		} finally {
-			if (!windowClosed) {
-				// Reset the internal flags if window was not closed.
-				closing = false;
-				updateDisabled = false;
-			}
-		}
-
-		if (windowClosed && tracker != null) {
-			tracker.close();
-		}
-
-		return windowClosed;
-	}
-
-	/**
-	 * Opens a new page. Assumes that busy cursor is active.
-	 * <p>
-	 * <b>Note:</b> Since release 2.0, a window is limited to contain at most
-	 * one page. If a page exist in the window when this method is used, then
-	 * another window is created for the new page. Callers are strongly
-	 * recommended to use the <code>IWorkbench.openPerspective</code> APIs to
-	 * programmatically show a perspective.
-	 * </p>
-	 */
-	protected IWorkbenchPage busyOpenPage(String perspID, IAdaptable input)
-			throws WorkbenchException {
-		IWorkbenchPage newPage = null;
-
-		if (pageList.isEmpty()) {
-			newPage = ((WorkbenchImplementation) Tweaklets
-					.get(WorkbenchImplementation.KEY)).createWorkbenchPage(this, perspID, input);
-			pageList.add(newPage);
-			firePageOpened(newPage);
-			setActivePage(newPage);
-		} else {
-			IWorkbenchWindow window = getWorkbench().openWorkbenchWindow(
-					perspID, input);
-			newPage = window.getActivePage();
-		}
-
-		return newPage;
-	}
-
-	/**
-	 * @see Window
-	 */
-	public int open() {
-		if (getPages().length == 0) {
-			showEmptyWindowContents();
-		}
-		fireWindowCreated();
-		getWindowAdvisor().openIntro();
-		int result = super.open();
-
-		// It's time for a layout ... to insure that if TrimLayout
-		// is in play, it updates all of the trim it's responsible
-		// for. We have to do this before updating in order to get
-		// the PerspectiveBar management correct...see defect 137334
-		getShell().layout();
-		
-		fireWindowOpened();
-		if (perspectiveSwitcher != null) {
-			perspectiveSwitcher.updatePerspectiveBar();
-			perspectiveSwitcher.updateBarParent();
-		}
-		
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on Window.
-	 */
-	protected boolean canHandleShellCloseEvent() {
-		if (!super.canHandleShellCloseEvent()) {
-			return false;
-		}
-		// let the advisor or other interested parties
-		// veto the user's explicit request to close the window
-		return fireWindowShellClosing();
-	}
-
-	/**
-	 * @see IWorkbenchWindow
-	 */
-	public boolean close() {
-		final boolean[] ret = new boolean[1];
-		BusyIndicator.showWhile(null, new Runnable() {
-			public void run() {
-				ret[0] = busyClose();
-			}
-		});
-		return ret[0];
-	}
-
-	protected boolean isClosing() {
-		return closing || getWorkbenchImpl().isClosing();
-	}
-
-	/**
-	 * Return whether or not the coolbar layout is locked.
-	 */
-	protected boolean isCoolBarLocked() {
-        ICoolBarManager cbm = getCoolBarManager2(); 
-		return cbm != null && cbm.getLockLayout();
-	}
-
-	/**
-	 * Close all of the pages.
-	 */
-	private void closeAllPages() {
-		// Deactivate active page.
-		setActivePage(null);
-
-		// Clone and deref all so that calls to getPages() returns
-		// empty list (if call by pageClosed event handlers)
-		PageList oldList = pageList;
-		pageList = new PageList();
-
-		// Close all.
-		Iterator itr = oldList.iterator();
-		while (itr.hasNext()) {
-			WorkbenchPage page = (WorkbenchPage) itr.next();
-			firePageClosed(page);
-			page.dispose();
-		}
-		if (!closing) {
-			showEmptyWindowContents();
-		}
-	}
-
-	/**
-	 * Save and close all of the pages.
-	 */
-	public void closeAllPages(boolean save) {
-		if (save) {
-			boolean ret = saveAllPages(true);
-			if (!ret) {
-				return;
-			}
-		}
-		closeAllPages();
-	}
-
-	/**
-	 * closePerspective method comment.
-	 */
-	protected boolean closePage(IWorkbenchPage in, boolean save) {
-		// Validate the input.
-		if (!pageList.contains(in)) {
-			return false;
-		}
-		WorkbenchPage oldPage = (WorkbenchPage) in;
-
-		// Save old perspective.
-		if (save && oldPage.isSaveNeeded()) {
-			if (!oldPage.saveAllEditors(true)) {
-				return false;
-			}
-		}
-
-		// If old page is activate deactivate.
-		boolean oldIsActive = (oldPage == getActiveWorkbenchPage());
-		if (oldIsActive) {
-			setActivePage(null);
-		}
-
-		// Close old page.
-		pageList.remove(oldPage);
-		firePageClosed(oldPage);
-		oldPage.dispose();
-
-		// Activate new page.
-		if (oldIsActive) {
-			IWorkbenchPage newPage = pageList.getNextActive();
-			if (newPage != null) {
-				setActivePage(newPage);
-			}
-		}
-		if (!closing && pageList.isEmpty()) {
-			showEmptyWindowContents();
-		}
-		return true;
-	}
-
-	private void showEmptyWindowContents() {
-		if (!emptyWindowContentsCreated) {
-			Composite parent = getPageComposite();
-			emptyWindowContents = getWindowAdvisor().createEmptyWindowContents(
-					parent);
-			emptyWindowContentsCreated = true;
-			// force the empty window composite to be layed out
-			((StackLayout) parent.getLayout()).topControl = emptyWindowContents;
-			parent.layout();
-		}
-	}
-
-	private void hideEmptyWindowContents() {
-		if (emptyWindowContentsCreated) {
-			if (emptyWindowContents != null) {
-				emptyWindowContents.dispose();
-				emptyWindowContents = null;
-				getPageComposite().layout();
-			}
-			emptyWindowContentsCreated = false;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-
-		detachedWindowShells = new ShellPool(shell, SWT.TOOL | SWT.TITLE
-				| SWT.MAX | SWT.RESIZE | getDefaultOrientation());
-
-		String title = getWindowConfigurer().basicGetTitle();
-		if (title != null) {
-			shell.setText(TextProcessor.process(title, TEXT_DELIMITERS)); 
-		}
-
-		final IWorkbench workbench = getWorkbench();
-		workbench.getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.WORKBENCH_WINDOW);
-
-//		initializeDefaultServices();
-		final IContextService contextService = (IContextService) getWorkbench().getService(IContextService.class);
-		contextService.registerShell(shell, IContextService.TYPE_WINDOW);
-
-		trackShellActivation(shell);
-		trackShellResize(shell);
-	}
-
-	/* package */ShellPool getDetachedWindowPool() {
-		return detachedWindowShells;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.ApplicationWindow#createTrimWidgets(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void createTrimWidgets(Shell shell) {
-		// do nothing -- trim widgets are created in createDefaultContents
-	}
-
-	/**
-	 * Creates and remembers the client composite, under which workbench pages
-	 * create their controls.
-	 * 
-	 * @since 3.0
-	 */
-	protected Composite createPageComposite(Composite parent) {
-		pageComposite = new Composite(parent, SWT.NONE);
-		// use a StackLayout instead of a FillLayout (see bug 81460 [Workbench]
-		// (regression) Close all perspectives, open Java perspective, layout
-		// wrong)
-		pageComposite.setLayout(new StackLayout());
-		return pageComposite;
-	}
-
-	/**
-	 * Creates the contents of the workbench window, including trim controls and
-	 * the client composite. This MUST create the client composite via a call to
-	 * <code>createClientComposite</code>.
-	 * 
-	 * @since 3.0
-	 */
-	protected Control createContents(Composite parent) {
-		// we know from Window.create that the parent is a Shell.
-		getWindowAdvisor().createWindowContents((Shell) parent);
-		// the page composite must be set by createWindowContents
-		Assert
-				.isNotNull(pageComposite,
-						"createWindowContents must call configurer.createPageComposite"); //$NON-NLS-1$
-		return pageComposite;
-	}
-
-	/**
-	 * If the perspective bar is drawn on the top right corner of the window,
-	 * then this method changes its appearance from curved to square. This
-	 * should have its own preference, but for now it piggy-backs on the
-	 * SHOW_TRADITIONAL_STYLE_TABS preference.
-	 * 
-	 * @param square
-	 *            true for a square banner and false otherwise
-	 */
-	public void setBannerCurve(boolean square) {
-		if (topBar != null) {
-			topBar.setSimple(square);
-		}
-	}
-
-	/**
-	 * Creates the default contents and layout of the shell.
-	 * 
-	 * @param shell
-	 *            the shell
-	 */
-	protected void createDefaultContents(final Shell shell) {
-		defaultLayout = new TrimLayout();
-		shell.setLayout(defaultLayout);
-
-		Menu menuBar = getMenuBarManager().createMenuBar(shell);
-		if (getWindowConfigurer().getShowMenuBar()) {
-			shell.setMenuBar(menuBar);
-		}
-
-		// Create the CBanner widget which parents both the Coolbar
-		// and the perspective switcher, and supports some configurations
-		// on the left right and bottom
-		topBar = new CBanner(shell, SWT.NONE);
-		topBarTrim = new WindowTrimProxy(topBar,
-				"org.eclipse.ui.internal.WorkbenchWindow.topBar", //$NON-NLS-1$  
-				WorkbenchMessages.TrimCommon_Main_TrimName, SWT.NONE, true);
-
-		// the banner gets a curve along with the new tab style
-		// TODO create a dedicated preference for this
-		setBannerCurve(PrefUtil.getAPIPreferenceStore().getBoolean(
-				IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
-
-		CacheWrapper coolbarCacheWrapper = new CacheWrapper(topBar);
-
-		final Control coolBar = createCoolBarControl(coolbarCacheWrapper
-				.getControl());
-		// need to resize the shell, not just the coolbar's immediate
-		// parent, if the coolbar wants to grow or shrink
-
-		coolBar.addListener(SWT.Resize, new Listener() {
-			public void handleEvent(Event event) {
-				// If the user is dragging the sash then we will need to force
-				// a resize. However, if the coolbar was resized programatically
-				// then everything is already layed out correctly. There is no
-				// direct way to tell the difference between these cases,
-				// however
-				// we take advantage of the fact that dragging the sash does not
-				// change the size of the shell, and only force another layout
-				// if the shell size is unchanged.
-				Rectangle clientArea = shell.getClientArea();
-
-				if (lastShellSize.x == clientArea.width
-						&& lastShellSize.y == clientArea.height) {
-					LayoutUtil.resize(coolBar);
-				}
-
-				lastShellSize.x = clientArea.width;
-				lastShellSize.y = clientArea.height;
-			}
-		});
-
-		if (getWindowConfigurer().getShowCoolBar()) {
-			topBar.setLeft(coolbarCacheWrapper.getControl());
-		}
-
-		createStatusLine(shell);
-
-		fastViewBar = new FastViewBar(this);
-		fastViewBar.createControl(shell);
-
-		if (getWindowConfigurer().getShowPerspectiveBar()) {
-			addPerspectiveBar(perspectiveBarStyle());
-			perspectiveSwitcher.createControl(shell);
-		}
-
-		createProgressIndicator(shell);
-
-		if (getShowHeapStatus()) {
-			createHeapStatus(shell);
-		}
-		
-		// Insert any contributed trim into the layout
-		// Legacy (3.2) trim
-		trimMgr2 = new TrimBarManager2(this);
-		
-		// 3.3 Trim contributions
-		trimContributionMgr = new TrimContributionManager(this);
-		
-		trimDropTarget = new TrimDropTarget(shell, this);
-		DragUtil.addDragTarget(shell, trimDropTarget);
-		DragUtil.addDragTarget(null, trimDropTarget);
-
-		// Create the client composite area (where page content goes).
-		createPageComposite(shell);
-
-		setLayoutDataForContents();
-		// System.err.println(defaultLayout.displayTrim());
-	}
-
-	/**
-	 * Returns whether the heap status indicator should be shown.
-	 * 
-	 * @return <code>true</code> to show the heap status indicator,
-	 *         <code>false</code> otherwise
-	 */
-	private boolean getShowHeapStatus() {
-		return // Show if the preference is set or debug option is on
-		PrefUtil.getAPIPreferenceStore().getBoolean(
-				IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR)
-				|| Boolean.valueOf(
-						Platform.getDebugOption(PlatformUI.PLUGIN_ID
-								+ "/perf/showHeapStatus")).booleanValue(); //$NON-NLS-1$
-	}
-
-	/**
-	 * Creates the controls for the heap status indicator.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 */
-	private void createHeapStatus(Composite parent) {
-		heapStatus = new HeapStatus(parent, PrefUtil
-				.getInternalPreferenceStore());
-
-		// Subclass the trim to allow closing...
-		heapStatusTrim = new WindowTrimProxy(heapStatus,
-				"org.eclipse.ui.internal.HeapStatus", //$NON-NLS-1$
-				WorkbenchMessages.TrimCommon_HeapStatus_TrimName, SWT.BOTTOM
-						| SWT.TOP) {
-
-			public void handleClose() {
-				getControl().dispose();
-			}
-
-			public boolean isCloseable() {
-				return true;
-			}
-		};
-	}
-
-    /**
-	 * <p>
-	 * Returns a new menu manager for this workbench window. This menu manager
-	 * will just be a proxy to the new command-based menu service.
-	 * </p>
-	 * <p>
-	 * Subclasses may override this method to customize the menu manager.
-	 * </p>
-	 * 
-	 * @return a menu manager for this workbench window; never <code>null</code>.
-	 */
-	protected MenuManager createMenuManager() {
-		return super.createMenuManager();
-	}
-
-	/**
-	 * Set the perspective bar location
-	 * 
-	 * @param location
-	 *            the location to place the bar
-	 */
-	public void setPerspectiveBarLocation(String location) {
-		if (perspectiveSwitcher != null) {
-			perspectiveSwitcher.setPerspectiveBarLocation(location);
-		}
-	}
-
-	/**
-	 * Notifies interested parties (namely the advisor) that the window is about
-	 * to be opened.
-	 * 
-	 * @since 3.1
-	 */
-	private void fireWindowOpening() {
-		// let the application do further configuration
-		getWindowAdvisor().preWindowOpen();
-	}
-
-	/**
-	 * Notifies interested parties (namely the advisor) that the window has been
-	 * restored from a previously saved state.
-	 * 
-	 * @throws WorkbenchException
-	 *             passed through from the advisor
-	 * @since 3.1
-	 */
-	void fireWindowRestored() throws WorkbenchException {
-		StartupThreading.runWithWorkbenchExceptions(new StartupRunnable() {
-			public void runWithException() throws Throwable {
-				getWindowAdvisor().postWindowRestore();
-			}
-		});
-	}
-
-	/**
-	 * Notifies interested parties (namely the advisor) that the window has been
-	 * created.
-	 * 
-	 * @since 3.1
-	 */
-	private void fireWindowCreated() {
-		getWindowAdvisor().postWindowCreate();
-	}
-
-	/**
-	 * Notifies interested parties (namely the advisor and the window listeners)
-	 * that the window has been opened.
-	 * 
-	 * @since 3.1
-	 */
-	private void fireWindowOpened() {
-		getWorkbenchImpl().fireWindowOpened(this);
-		getWindowAdvisor().postWindowOpen();
-	}
-
-	/**
-	 * Notifies interested parties (namely the advisor) that the window's shell
-	 * is closing. Allows the close to be vetoed.
-	 * 
-	 * @return <code>true</code> if the close should proceed,
-	 *         <code>false</code> if it should be canceled
-	 * @since 3.1
-	 */
-	private boolean fireWindowShellClosing() {
-		return getWindowAdvisor().preWindowShellClose();
-	}
-
-	/**
-	 * Notifies interested parties (namely the advisor and the window listeners)
-	 * that the window has been closed.
-	 * 
-	 * @since 3.1
-	 */
-	private void fireWindowClosed() {
-		// let the application do further deconfiguration
-		getWindowAdvisor().postWindowClose();
-		getWorkbenchImpl().fireWindowClosed(this);
-	}
-
-	/**
-	 * Fires page activated
-	 */
-	private void firePageActivated(IWorkbenchPage page) {
-		String label = null; // debugging only
-		if (UIStats.isDebugging(UIStats.NOTIFY_PAGE_LISTENERS)) {
-			label = "activated " + page.getLabel(); //$NON-NLS-1$
-		}
-		try {
-			UIStats.start(UIStats.NOTIFY_PAGE_LISTENERS, label);
-			UIListenerLogging.logPageEvent(this, page,
-					UIListenerLogging.WPE_PAGE_ACTIVATED);
-			pageListeners.firePageActivated(page);
-			partService.pageActivated(page);
-		} finally {
-			UIStats.end(UIStats.NOTIFY_PAGE_LISTENERS, page.getLabel(), label);
-		}
-	}
-
-	/**
-	 * Fires page closed
-	 */
-	private void firePageClosed(IWorkbenchPage page) {
-		String label = null; // debugging only
-		if (UIStats.isDebugging(UIStats.NOTIFY_PAGE_LISTENERS)) {
-			label = "closed " + page.getLabel(); //$NON-NLS-1$
-		}
-		try {
-			UIStats.start(UIStats.NOTIFY_PAGE_LISTENERS, label);
-			UIListenerLogging.logPageEvent(this, page,
-					UIListenerLogging.WPE_PAGE_CLOSED);
-			pageListeners.firePageClosed(page);
-			partService.pageClosed(page);
-		} finally {
-			UIStats.end(UIStats.NOTIFY_PAGE_LISTENERS, page.getLabel(), label);
-		}
-
-	}
-
-	/**
-	 * Fires page opened
-	 */
-	private void firePageOpened(IWorkbenchPage page) {
-		String label = null; // debugging only
-		if (UIStats.isDebugging(UIStats.NOTIFY_PAGE_LISTENERS)) {
-			label = "opened " + page.getLabel(); //$NON-NLS-1$
-		}
-		try {
-			UIStats.start(UIStats.NOTIFY_PAGE_LISTENERS, label);
-			UIListenerLogging.logPageEvent(this, page,
-					UIListenerLogging.WPE_PAGE_OPENED);
-			pageListeners.firePageOpened(page);
-			partService.pageOpened(page);
-		} finally {
-			UIStats.end(UIStats.NOTIFY_PAGE_LISTENERS, page.getLabel(), label);
-		}
-	}
-
-	/**
-	 * Fires perspective activated
-	 */
-	void firePerspectiveActivated(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		UIListenerLogging.logPerspectiveEvent(this, page, perspective,
-				UIListenerLogging.PLE_PERSP_ACTIVATED);
-		perspectiveListeners.firePerspectiveActivated(page, perspective);
-	}
-
-	/**
-	 * Fires perspective deactivated.
-	 * 
-	 * @since 3.2
-	 */
-	void firePerspectivePreDeactivate(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		UIListenerLogging.logPerspectiveEvent(this, page, perspective,
-				UIListenerLogging.PLE_PERSP_PRE_DEACTIVATE);
-		perspectiveListeners.firePerspectivePreDeactivate(page, perspective);
-	}
-	
-	/**
-	 * Fires perspective deactivated.
-	 * 
-	 * @since 3.1
-	 */
-	void firePerspectiveDeactivated(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		UIListenerLogging.logPerspectiveEvent(this, page, perspective,
-				UIListenerLogging.PLE_PERSP_DEACTIVATED);
-		perspectiveListeners.firePerspectiveDeactivated(page, perspective);
-	}
-
-	/**
-	 * Fires perspective changed
-	 */
-	public void firePerspectiveChanged(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective, String changeId) {
-		// Some callers call this even when there is no active perspective.
-		// Just ignore this case.
-		if (perspective != null) {
-			UIListenerLogging.logPerspectiveChangedEvent(this, page,
-					perspective, null, changeId);
-			perspectiveListeners.firePerspectiveChanged(page, perspective,
-					changeId);
-		}
-	}
-
-	/**
-	 * Fires perspective changed for an affected part
-	 */
-	public void firePerspectiveChanged(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective,
-			IWorkbenchPartReference partRef, String changeId) {
-		// Some callers call this even when there is no active perspective.
-		// Just ignore this case.
-		if (perspective != null) {
-			UIListenerLogging.logPerspectiveChangedEvent(this, page,
-					perspective, partRef, changeId);
-			perspectiveListeners.firePerspectiveChanged(page, perspective,
-					partRef, changeId);
-		}
-	}
-
-	/**
-	 * Fires perspective closed
-	 */
-	void firePerspectiveClosed(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		UIListenerLogging.logPerspectiveEvent(this, page, perspective,
-				UIListenerLogging.PLE_PERSP_CLOSED);
-		perspectiveListeners.firePerspectiveClosed(page, perspective);
-	}
-
-	/**
-	 * Fires perspective opened
-	 */
-	void firePerspectiveOpened(IWorkbenchPage page,
-			IPerspectiveDescriptor perspective) {
-		UIListenerLogging.logPerspectiveEvent(this, page, perspective,
-				UIListenerLogging.PLE_PERSP_OPENED);
-		perspectiveListeners.firePerspectiveOpened(page, perspective);
-	}
-
-	/**
-	 * Fires perspective saved as.
-	 * 
-	 * @since 3.1
-	 */
-	void firePerspectiveSavedAs(IWorkbenchPage page,
-			IPerspectiveDescriptor oldPerspective,
-			IPerspectiveDescriptor newPerspective) {
-		UIListenerLogging.logPerspectiveSavedAs(this, page, oldPerspective,
-				newPerspective);
-		perspectiveListeners.firePerspectiveSavedAs(page, oldPerspective,
-				newPerspective);
-	}
-
-	/**
-	 * Returns the action bars for this window.
-	 */
-	public WWinActionBars getActionBars() {
-		if (actionBars == null) {
-			actionBars = new WWinActionBars(this);
-		}
-		return actionBars;
-	}
-
-	/**
-	 * Returns the active page.
-	 * 
-	 * @return the active page
-	 */
-	public IWorkbenchPage getActivePage() {
-		return pageList.getActive();
-	}
-
-	/**
-	 * Returns the active workbench page.
-	 * 
-	 * @return the active workbench page
-	 */
-	/* package */
-	WorkbenchPage getActiveWorkbenchPage() {
-		return pageList.getActive();
-	}
-
-	/**
-	 * Returns the page composite, under which the window's pages create their
-	 * controls.
-	 */
-	protected Composite getPageComposite() {
-		return pageComposite;
-	}
-
-	/**
-	 * Answer the menu manager for this window.
-	 */
-	public MenuManager getMenuManager() {
-		return getMenuBarManager();
-	}
-
-	/**
-	 * Returns the number. This corresponds to a page number in a window or a
-	 * window number in the workbench.
-	 */
-	public int getNumber() {
-		return number;
-	}
-
-	/**
-	 * Returns an array of the pages in the workbench window.
-	 * 
-	 * @return an array of pages
-	 */
-	public IWorkbenchPage[] getPages() {
-		return pageList.getPages();
-	}
-
-	/**
-	 * @see IWorkbenchWindow
-	 */
-	public IPartService getPartService() {
-		return partService;
-	}
-
-	/**
-	 * Returns the layout for the shell.
-	 * 
-	 * @return the layout for the shell
-	 */
-	protected Layout getLayout() {
-		return null;
-	}
-
-	/**
-	 * @see IWorkbenchWindow
-	 */
-	public ISelectionService getSelectionService() {
-		return partService.getSelectionService();
-	}
-
-	/**
-	 * Returns <code>true</code> when the window's shell is activated,
-	 * <code>false</code> when it's shell is deactivated
-	 * 
-	 * @return boolean <code>true</code> when shell activated,
-	 *         <code>false</code> when shell deactivated
-	 */
-	public boolean getShellActivated() {
-		return shellActivated;
-	}
-
-	/**
-	 * Returns the status line manager for this window (if it has one).
-	 * 
-	 * @return the status line manager, or <code>null</code> if this window
-	 *         does not have a status line
-	 * @see ApplicationWindow#addStatusLine
-	 */
-	public StatusLineManager getStatusLineManager() {
-		return super.getStatusLineManager();
-	}
-
-	private IWindowTrim getStatusLineTrim() {
-		if (statusLineTrim == null) {
-			statusLineTrim = new WindowTrimProxy(
-					getStatusLineManager().getControl(),
-					"org.eclipse.jface.action.StatusLineManager", //$NON-NLS-1$
-					WorkbenchMessages.TrimCommon_StatusLine_TrimName, SWT.NONE,
-					true);
-		}
-		return statusLineTrim;
-	}
-
-	/**
-	 * @see IWorkbenchWindow
-	 */
-	public IWorkbench getWorkbench() {
-		return PlatformUI.getWorkbench();
-	}
-
-	public String getToolbarLabel(String actionSetId) {
-		ActionSetRegistry registry = WorkbenchPlugin.getDefault()
-				.getActionSetRegistry();
-		IActionSetDescriptor actionSet = registry.findActionSet(actionSetId);
-		if (actionSet != null) {
-			return actionSet.getLabel();
-		}
-
-		if (IWorkbenchActionConstants.TOOLBAR_FILE
-				.equalsIgnoreCase(actionSetId)) {
-			return WorkbenchMessages.WorkbenchWindow_FileToolbar;
-		}
-
-		if (IWorkbenchActionConstants.TOOLBAR_NAVIGATE
-				.equalsIgnoreCase(actionSetId)) {
-			return WorkbenchMessages.WorkbenchWindow_NavigateToolbar;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Unconditionally close this window. Assumes the proper flags have been set
-	 * correctly (e.i. closing and updateDisabled)
-	 */
-	private boolean hardClose() {
-		boolean result;
-		try {
-			// Clear the action sets, fix for bug 27416.
-            getActionPresentation().clearActionSets();
-
-			// Remove the handler submissions. Bug 64024.
-			final IWorkbench workbench = getWorkbench();
-			final IHandlerService handlerService = (IHandlerService) workbench.getService(IHandlerService.class);
-			handlerService.deactivateHandlers(handlerActivations);
-			final Iterator activationItr = handlerActivations.iterator();
-			while (activationItr.hasNext()) {
-				final IHandlerActivation activation = (IHandlerActivation) activationItr
-						.next();
-				activation.getHandler().dispose();
-			}
-			handlerActivations.clear();
-			globalActionHandlersByCommandId.clear();
-
-			// Remove the enabled submissions. Bug 64024.
-			final IContextService contextService = (IContextService) workbench.getService(IContextService.class);
-			contextService.unregisterShell(getShell());
-
-			closeAllPages();
-
-			fireWindowClosed();
-			
-			// time to wipe our our populate
-			IMenuService menuService = (IMenuService) workbench
-					.getService(IMenuService.class);
-			menuService
-					.releaseContributions(((ContributionManager) getActionBars()
-							.getMenuManager()));
-			ICoolBarManager coolbar = getActionBars().getCoolBarManager();
-			if (coolbar != null) {
-				menuService
-						.releaseContributions(((ContributionManager) coolbar));
-			}
-
-			getActionBarAdvisor().dispose();
-			getWindowAdvisor().dispose();
-			detachedWindowShells.dispose();
-
-
-			// Null out the progress region. Bug 64024.
-			progressRegion = null;
-			
-			// Remove drop targets
-			DragUtil.removeDragTarget(null, trimDropTarget);
-			DragUtil.removeDragTarget(getShell(), trimDropTarget);
-			trimDropTarget = null;
-			
-			if (trimMgr2 != null) {
-				trimMgr2.dispose();
-				trimMgr2 = null;
-			}
-			
-			if (trimContributionMgr != null) {
-				trimContributionMgr.dispose();
-				trimContributionMgr = null;
-			}
-		} finally {
-			result = super.close();
-			try {
-				// Bring down all of the services ... after the window goes away
-				serviceLocator.dispose();
-			} catch (Exception ex) {
-				WorkbenchPlugin.log(ex);
-			}
-			menuRestrictions.clear();
-		}
-		return result;
-	}
-
-	/**
-	 * @see IWorkbenchWindow
-	 */
-	public boolean isApplicationMenu(String menuID) {
-		// delegate this question to the action bar advisor
-		return getActionBarAdvisor().isApplicationMenu(menuID);
-	}
-
-	/**
-	 * Return whether or not the given id matches the id of the coolitems that
-	 * the application creates.
-	 */
-	/* package */
-	boolean isWorkbenchCoolItemId(String id) {
-		return windowConfigurer.containsCoolItem(id);
-	}
-
-	/**
-	 * Locks/unlocks the CoolBar for the workbench.
-	 * 
-	 * @param lock
-	 *            whether the CoolBar should be locked or unlocked
-	 */
-	/* package */
-	void lockCoolBar(boolean lock) {
-        getCoolBarManager2().setLockLayout(lock);
-	}
-
-	/**
-	 * Makes the window visible and frontmost.
-	 */
-	void makeVisible() {
-		Shell shell = getShell();
-		if (shell != null && !shell.isDisposed()) {
-			// see bug 96700 and bug 4414 for a discussion on the use of open()
-			// here
-			shell.open();
-		}
-	}
-
-	/**
-	 * Called when this window is about to be closed.
-	 * 
-	 * Subclasses may overide to add code that returns <code>false</code> to
-	 * prevent closing under certain conditions.
-	 */
-	public boolean okToClose() {
-		// Save all of the editors.
-		if (!getWorkbenchImpl().isClosing()) {
-			if (!saveAllPages(true)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Opens a new page.
-	 * <p>
-	 * <b>Note:</b> Since release 2.0, a window is limited to contain at most
-	 * one page. If a page exist in the window when this method is used, then
-	 * another window is created for the new page. Callers are strongly
-	 * recommended to use the <code>IWorkbench.openPerspective</code> APIs to
-	 * programmatically show a perspective.
-	 * </p>
-	 */
-	public IWorkbenchPage openPage(final String perspId, final IAdaptable input)
-			throws WorkbenchException {
-		Assert.isNotNull(perspId);
-
-		// Run op in busy cursor.
-		final Object[] result = new Object[1];
-		BusyIndicator.showWhile(null, new Runnable() {
-			public void run() {
-				try {
-					result[0] = busyOpenPage(perspId, input);
-				} catch (WorkbenchException e) {
-					result[0] = e;
-				}
-			}
-		});
-
-		if (result[0] instanceof IWorkbenchPage) {
-			return (IWorkbenchPage) result[0];
-		} else if (result[0] instanceof WorkbenchException) {
-			throw (WorkbenchException) result[0];
-		} else {
-			throw new WorkbenchException(
-					WorkbenchMessages.WorkbenchWindow_exceptionMessage);
-		}
-	}
-
-	/**
-	 * Opens a new page.
-	 * <p>
-	 * <b>Note:</b> Since release 2.0, a window is limited to contain at most
-	 * one page. If a page exist in the window when this method is used, then
-	 * another window is created for the new page. Callers are strongly
-	 * recommended to use the <code>IWorkbench.openPerspective</code> APIs to
-	 * programmatically show a perspective.
-	 * </p>
-	 */
-	public IWorkbenchPage openPage(IAdaptable input) throws WorkbenchException {
-		String perspId = getWorkbenchImpl().getPerspectiveRegistry()
-				.getDefaultPerspective();
-		return openPage(perspId, input);
-	}
-
-	/*
-	 * Removes an listener from the part service.
-	 */
-	public void removePageListener(IPageListener l) {
-		pageListeners.removePageListener(l);
-	}
-
-	/**
-	 * @see org.eclipse.ui.IPageService
-	 */
-	public void removePerspectiveListener(org.eclipse.ui.IPerspectiveListener l) {
-		perspectiveListeners.removePerspectiveListener(l);
-	}
-
-	private IStatus unableToRestorePage(IMemento pageMem) {
-		String pageName = pageMem.getString(IWorkbenchConstants.TAG_LABEL);
-		if (pageName == null) {
-			pageName = ""; //$NON-NLS-1$
-		}
-		return new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, NLS.bind(
-				WorkbenchMessages.WorkbenchWindow_unableToRestorePerspective,
-				pageName), null);
-	}
-
-	public IStatus restoreState(IMemento memento,
-			IPerspectiveDescriptor activeDescriptor) {
-		Assert.isNotNull(getShell());
-
-		final MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
-				WorkbenchMessages.WorkbenchWindow_problemsRestoringWindow, null);
-
-		// Restore the window advisor state.
-		IMemento windowAdvisorState = memento
-				.getChild(IWorkbenchConstants.TAG_WORKBENCH_WINDOW_ADVISOR);
-		if (windowAdvisorState != null) {
-			result.add(getWindowAdvisor().restoreState(windowAdvisorState));
-		}
-
-		// Restore actionbar advisor state.
-		IMemento actionBarAdvisorState = memento
-				.getChild(IWorkbenchConstants.TAG_ACTION_BAR_ADVISOR);
-		if (actionBarAdvisorState != null) {
-			result.add(getActionBarAdvisor()
-					.restoreState(actionBarAdvisorState));
-		}
-
-		// Read window's bounds and state.
-		final Rectangle [] displayBounds = new Rectangle[1];
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() {
-				displayBounds[0] = getShell().getDisplay().getBounds();
-				
-			}});
-		final Rectangle shellBounds = new Rectangle(0, 0, 0, 0);
-
-		final IMemento fastViewMem = memento
-				.getChild(IWorkbenchConstants.TAG_FAST_VIEW_DATA);
-		if (fastViewMem != null) {
-			if (fastViewBar != null) {
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() {
-						fastViewBar.restoreState(fastViewMem);
-					}});
-				
-			}
-		}
-		Integer bigInt = memento.getInteger(IWorkbenchConstants.TAG_X);
-		shellBounds.x = bigInt == null ? 0 : bigInt.intValue();
-		bigInt = memento.getInteger(IWorkbenchConstants.TAG_Y);
-		shellBounds.y = bigInt == null ? 0 : bigInt.intValue();
-		bigInt = memento.getInteger(IWorkbenchConstants.TAG_WIDTH);
-		shellBounds.width = bigInt == null ? 0 : bigInt.intValue();
-		bigInt = memento.getInteger(IWorkbenchConstants.TAG_HEIGHT);
-		shellBounds.height = bigInt == null ? 0 : bigInt.intValue();
-		if (!shellBounds.isEmpty()) {
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() {
-					if (!shellBounds.intersects(displayBounds[0])) {
-						Rectangle clientArea = getShell().getDisplay().getClientArea();
-						shellBounds.x = clientArea.x;
-						shellBounds.y = clientArea.y;
-					}
-					getShell().setBounds(shellBounds);
-				}});
-		}
-		if ("true".equals(memento.getString(IWorkbenchConstants.TAG_MAXIMIZED))) { //$NON-NLS-1$
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() {
-					getShell().setMaximized(true);
-				}});
-			
-		}
-		if ("true".equals(memento.getString(IWorkbenchConstants.TAG_MINIMIZED))) { //$NON-NLS-1$
-			// getShell().setMinimized(true);
-		}
-
-		// restore the width of the perspective bar
-		if (perspectiveSwitcher != null) {
-			perspectiveSwitcher.restoreState(memento);
-		}
-
-		// Restore the cool bar order by creating all the tool bar contribution
-		// items
-		// This needs to be done before pages are created to ensure proper
-		// canonical creation
-		// of cool items
-		final ICoolBarManager2 coolBarMgr = (ICoolBarManager2) getCoolBarManager2();
-        if (coolBarMgr != null) {
-			IMemento coolBarMem = memento
-					.getChild(IWorkbenchConstants.TAG_COOLBAR_LAYOUT);
-			if (coolBarMem != null) {
-				// Check if the layout is locked
-				final Integer lockedInt = coolBarMem
-						.getInteger(IWorkbenchConstants.TAG_LOCKED);
-				StartupThreading.runWithoutExceptions(new StartupRunnable(){
-
-					public void runWithException() {
-						if ((lockedInt != null) && (lockedInt.intValue() == 1)) {
-							coolBarMgr.setLockLayout(true);
-						} else {
-							coolBarMgr.setLockLayout(false);
-						}
-					}});
-				
-				// The new layout of the cool bar manager
-				ArrayList coolBarLayout = new ArrayList();
-				// Traverse through all the cool item in the memento
-				IMemento contributionMems[] = coolBarMem
-						.getChildren(IWorkbenchConstants.TAG_COOLITEM);
-				for (int i = 0; i < contributionMems.length; i++) {
-					IMemento contributionMem = contributionMems[i];
-					String type = contributionMem
-							.getString(IWorkbenchConstants.TAG_ITEM_TYPE);
-					if (type == null) {
-						// Do not recognize that type
-						continue;
-					}
-					String id = contributionMem
-							.getString(IWorkbenchConstants.TAG_ID);
-
-					// Prevent duplicate items from being read back in.
-					IContributionItem existingItem = coolBarMgr.find(id);
-					if ((id != null) && (existingItem != null)) {
-						if (Policy.DEBUG_TOOLBAR_DISPOSAL) {
-							System.out
-									.println("Not loading duplicate cool bar item: " + id); //$NON-NLS-1$
-						}
-						coolBarLayout.add(existingItem);
-						continue;
-					}
-					IContributionItem newItem = null;
-					if (type.equals(IWorkbenchConstants.TAG_TYPE_SEPARATOR)) {
-						if (id != null) {
-							newItem = new Separator(id);
-						} else {
-							newItem = new Separator();
-						}
-					} else if (id != null) {
-						if (type
-								.equals(IWorkbenchConstants.TAG_TYPE_GROUPMARKER)) {
-							newItem = new GroupMarker(id);
-
-						} else if (type
-								.equals(IWorkbenchConstants.TAG_TYPE_TOOLBARCONTRIBUTION)
-								|| type
-										.equals(IWorkbenchConstants.TAG_TYPE_PLACEHOLDER)) {
-
-							// Get Width and height
-							Integer width = contributionMem
-									.getInteger(IWorkbenchConstants.TAG_ITEM_X);
-							Integer height = contributionMem
-									.getInteger(IWorkbenchConstants.TAG_ITEM_Y);
-							// Look for the object in the current cool bar
-							// manager
-							IContributionItem oldItem = coolBarMgr.find(id);
-							// If a tool bar contribution item already exists
-							// for this id then use the old object
-							if (oldItem != null) {
-								newItem = oldItem;
-							} else {
-								IActionBarPresentationFactory actionBarPresentation = getActionBarPresentationFactory();
-								newItem = actionBarPresentation.createToolBarContributionItem(
-										actionBarPresentation.createToolBarManager(), id);
-								if (type
-										.equals(IWorkbenchConstants.TAG_TYPE_PLACEHOLDER)) {
-									IToolBarContributionItem newToolBarItem = (IToolBarContributionItem) newItem;
-									if (height != null) {
-										newToolBarItem.setCurrentHeight(height
-												.intValue());
-									}
-									if (width != null) {
-										newToolBarItem.setCurrentWidth(width
-												.intValue());
-									}
-									newItem = new PlaceholderContributionItem(
-											newToolBarItem);
-								}
-								// make it invisible by default
-								newItem.setVisible(false);
-								// Need to add the item to the cool bar manager
-								// so that its canonical order can be preserved
-								IContributionItem refItem = findAlphabeticalOrder(
-										IWorkbenchActionConstants.MB_ADDITIONS,
-										id, coolBarMgr);
-								if (refItem != null) {
-									coolBarMgr.insertAfter(refItem.getId(),
-											newItem);
-								} else {
-									coolBarMgr.add(newItem);
-								}
-							}
-							// Set the current height and width
-							if ((width != null)
-									&& (newItem instanceof IToolBarContributionItem)) {
-								((IToolBarContributionItem) newItem)
-										.setCurrentWidth(width.intValue());
-							}
-							if ((height != null)
-									&& (newItem instanceof IToolBarContributionItem)) {
-								((IToolBarContributionItem) newItem)
-										.setCurrentHeight(height.intValue());
-							}
-						}
-					}
-					// Add new item into cool bar manager
-					if (newItem != null) {
-						coolBarLayout.add(newItem);
-						newItem.setParent(coolBarMgr);
-						coolBarMgr.markDirty();
-					}
-				}
-
-				// We need to check if we have everything we need in the layout.
-				boolean newlyAddedItems = false;
-				IContributionItem[] existingItems = coolBarMgr.getItems();
-				for (int i = 0; i < existingItems.length && !newlyAddedItems; i++) {
-					IContributionItem existingItem = existingItems[i];
-
-					/*
-					 * This line shouldn't be necessary, but is here for
-					 * robustness.
-					 */
-					if (existingItem == null) {
-						continue;
-					}
-
-					boolean found = false;
-					Iterator layoutItemItr = coolBarLayout.iterator();
-					while (layoutItemItr.hasNext()) {
-						IContributionItem layoutItem = (IContributionItem) layoutItemItr
-								.next();
-						if ((layoutItem != null)
-								&& (layoutItem.equals(existingItem))) {
-							found = true;
-							break;
-						}
-					}
-
-					if (!found) {
-						if (existingItem != null) {
-							newlyAddedItems = true;
-						}
-					}
-				}
-
-				// Set the cool bar layout to the given layout.
-				if (!newlyAddedItems) {
-					final IContributionItem[] itemsToSet = new IContributionItem[coolBarLayout
-							.size()];
-					coolBarLayout.toArray(itemsToSet);
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-
-								public void runWithException() {
-									coolBarMgr.setItems(itemsToSet);
-								}
-							});
-				}
-				
-			} else {
-				// For older workbenchs
-				coolBarMem = memento
-						.getChild(IWorkbenchConstants.TAG_TOOLBAR_LAYOUT);
-				if (coolBarMem != null) {
-					// Restore an older layout
-					restoreOldCoolBar(coolBarMem);
-				}
-			}
-		}
-
-		// Recreate each page in the window.
-		IWorkbenchPage newActivePage = null;
-		IMemento[] pageArray = memento
-				.getChildren(IWorkbenchConstants.TAG_PAGE);
-		for (int i = 0; i < pageArray.length; i++) {
-			final IMemento pageMem = pageArray[i];
-			String strFocus = pageMem.getString(IWorkbenchConstants.TAG_FOCUS);
-			if (strFocus == null || strFocus.length() == 0) {
-				continue;
-			}
-
-			// Get the input factory.
-			final IAdaptable [] input = new IAdaptable[1];
-			final IMemento inputMem = pageMem.getChild(IWorkbenchConstants.TAG_INPUT);
-			if (inputMem != null) {
-				final String factoryID = inputMem
-						.getString(IWorkbenchConstants.TAG_FACTORY_ID);
-				if (factoryID == null) {
-					WorkbenchPlugin
-							.log("Unable to restore page - no input factory ID."); //$NON-NLS-1$
-					result.add(unableToRestorePage(pageMem));
-					continue;
-				}
-				try {
-					UIStats.start(UIStats.RESTORE_WORKBENCH,
-							"WorkbenchPageFactory"); //$NON-NLS-1$
-					StartupThreading
-							.runWithoutExceptions(new StartupRunnable() {
-
-								public void runWithException() throws Throwable {
-									IElementFactory factory = PlatformUI
-											.getWorkbench().getElementFactory(
-													factoryID);
-									if (factory == null) {
-										WorkbenchPlugin
-												.log("Unable to restore page - cannot instantiate input factory: " + factoryID); //$NON-NLS-1$
-										result
-												.add(unableToRestorePage(pageMem));
-										return;
-									}
-
-									// Get the input element.
-									input[0] = factory.createElement(inputMem);
-								}
-							});
-					
-					if (input[0] == null) {
-						WorkbenchPlugin
-								.log("Unable to restore page - cannot instantiate input element: " + factoryID); //$NON-NLS-1$
-						result.add(unableToRestorePage(pageMem));
-						continue;
-					}
-				} finally {
-					UIStats.end(UIStats.RESTORE_WORKBENCH, factoryID,
-							"WorkbenchPageFactory"); //$NON-NLS-1$
-				}
-			}
-			// Open the perspective.
-			final IAdaptable finalInput = input[0];
-			final WorkbenchPage [] newPage = new WorkbenchPage[1];
-			try {
-				StartupThreading.runWithWorkbenchExceptions(new StartupRunnable(){
-
-					public void runWithException() throws WorkbenchException {
-						newPage[0] = ((WorkbenchImplementation) Tweaklets
-								.get(WorkbenchImplementation.KEY)).createWorkbenchPage(WorkbenchWindow.this, finalInput);
-					}});
-				
-				result.add(newPage[0].restoreState(pageMem, activeDescriptor));
-				pageList.add(newPage[0]);
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() throws Throwable {
-						firePageOpened(newPage[0]);
-					}});
-				
-			} catch (WorkbenchException e) {
-				WorkbenchPlugin
-						.log(
-								"Unable to restore perspective - constructor failed.", e); //$NON-NLS-1$
-				result.add(e.getStatus());
-				continue;
-			}
-
-			if (strFocus != null && strFocus.length() > 0) {
-				newActivePage = newPage[0];
-			}
-		}
-
-		// If there are no pages create a default.
-		if (pageList.isEmpty()) {
-			try {
-				final String defPerspID = getWorkbenchImpl().getPerspectiveRegistry()
-						.getDefaultPerspective();
-				if (defPerspID != null) {
-					final WorkbenchPage [] newPage = new WorkbenchPage[1];
-					StartupThreading.runWithWorkbenchExceptions(new StartupRunnable() {
-						
-						public void runWithException() throws Throwable {
-							newPage[0] = ((WorkbenchImplementation) Tweaklets
-									.get(WorkbenchImplementation.KEY)).createWorkbenchPage(WorkbenchWindow.this, defPerspID,
-											getDefaultPageInput());
-						}});
-					
-					pageList.add(newPage[0]);
-					StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-						public void runWithException() throws Throwable {
-							firePageOpened(newPage[0]);
-						}});
-				}
-			} catch (WorkbenchException e) {
-				WorkbenchPlugin
-						.log(
-								"Unable to create default perspective - constructor failed.", e); //$NON-NLS-1$
-				result.add(e.getStatus());
-				String productName = WorkbenchPlugin.getDefault()
-						.getProductName();
-				if (productName == null) {
-					productName = ""; //$NON-NLS-1$
-				}
-				getShell().setText(productName);
-			}
-		}
-
-		// Set active page.
-		if (newActivePage == null) {
-			newActivePage = pageList.getNextActive();
-		}
-		final IWorkbenchPage myPage = newActivePage;
-		StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-			public void runWithException() throws Throwable {
-				setActivePage(myPage);
-			}});
-		
-
-		final IMemento introMem = memento.getChild(IWorkbenchConstants.TAG_INTRO);
-		if (introMem != null) {
-			StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					getWorkbench()
-							.getIntroManager()
-							.showIntro(
-									WorkbenchWindow.this,
-									Boolean
-											.valueOf(
-													introMem
-															.getString(IWorkbenchConstants.TAG_STANDBY))
-											.booleanValue());
-				}
-			});
-
-		}
-		
-		// Only restore the trim state if we're using the default layout
-		if (defaultLayout != null) {
-			// Restore the trim state. We pass in the 'root'
-			// memento since we have to check for pre-3.2
-			// state.
-			result.add(restoreTrimState(memento));
-		}
-		
-		return result;
-	}
-
-	/**
-	 * Restores cool item order from an old workbench.
-	 */
-	private boolean restoreOldCoolBar(IMemento coolbarMem) {
-		// Make sure the tag exist
-		if (coolbarMem == null) {
-			return false;
-		}
-        ICoolBarManager2 coolBarMgr = (ICoolBarManager2) getCoolBarManager2();
-		// Check to see if layout is locked
-		Integer locked = coolbarMem.getInteger(IWorkbenchConstants.TAG_LOCKED);
-		boolean state = (locked != null) && (locked.intValue() == 1);
-		coolBarMgr.setLockLayout(state);
-
-		// Get the visual layout
-		IMemento visibleLayout = coolbarMem
-				.getChild(IWorkbenchConstants.TAG_TOOLBAR_LAYOUT);
-		ArrayList visibleWrapIndicies = new ArrayList();
-		ArrayList visibleItems = new ArrayList();
-		if (visibleLayout != null) {
-			if (readLayout(visibleLayout, visibleItems, visibleWrapIndicies) == false) {
-				return false;
-			}
-		}
-		// Get the remembered layout
-		IMemento rememberedLayout = coolbarMem
-				.getChild(IWorkbenchConstants.TAG_LAYOUT);
-		ArrayList rememberedWrapIndicies = new ArrayList();
-		ArrayList rememberedItems = new ArrayList();
-		if (rememberedLayout != null) {
-			if (readLayout(rememberedLayout, rememberedItems,
-					rememberedWrapIndicies) == false) {
-				return false;
-			}
-		}
-
-		// Create the objects
-		if (visibleItems != null) {
-			// Merge remembered layout into visible layout
-			if (rememberedItems != null) {
-				// Traverse through all the remembered items
-				int currentIndex = 0;
-				for (Iterator i = rememberedItems.iterator(); i.hasNext(); currentIndex++) {
-					String id = (String) i.next();
-					int index = -1;
-					for (Iterator iter = visibleItems.iterator(); iter
-							.hasNext();) {
-						String visibleId = (String) iter.next();
-						if (visibleId.equals(id)) {
-							index = visibleItems.indexOf(visibleId);
-							break;
-						}
-					}
-					// The item is not in the visible list
-					if (index == -1) {
-						int insertAt = Math.max(0, Math.min(currentIndex,
-								visibleItems.size()));
-						boolean separateLine = false;
-						// Check whether this item is on a separate line
-						for (Iterator iter = rememberedWrapIndicies.iterator(); iter
-								.hasNext();) {
-							Integer wrapIndex = (Integer) iter.next();
-							if (wrapIndex.intValue() <= insertAt) {
-								insertAt = visibleItems.size();
-								// Add new wrap index for this Item
-								visibleWrapIndicies.add(new Integer(insertAt));
-								separateLine = true;
-							}
-						}
-						// Add item to array list
-						visibleItems.add(insertAt, id);
-						// If the item was not on a separate line then adjust
-						// the visible wrap indicies
-						if (!separateLine) {
-							// Adjust visible wrap indicies
-							for (int j = 0; j < visibleWrapIndicies.size(); j++) {
-								Integer index2 = (Integer) visibleWrapIndicies
-										.get(j);
-								if (index2.intValue() >= insertAt) {
-									visibleWrapIndicies.set(j, new Integer(
-											index2.intValue() + 1));
-								}
-							}
-						}
-					}
-				}
-			}
-			// The new layout of the cool bar manager
-			ArrayList coolBarLayout = new ArrayList(visibleItems.size());
-			// Add all visible items to the layout object
-			for (Iterator i = visibleItems.iterator(); i.hasNext();) {
-				String id = (String) i.next();
-				// Look for the object in the current cool bar manager
-				IContributionItem oldItem = null;
-				IContributionItem newItem = null;
-				if (id != null) {
-					oldItem = coolBarMgr.find(id);
-				}
-				// If a tool bar contribution item already exists for this id
-				// then use the old object
-				if (oldItem instanceof IToolBarContributionItem) {
-					newItem = oldItem;
-				} else {
-					IActionBarPresentationFactory actionBarPresentaiton = getActionBarPresentationFactory();
-					newItem = actionBarPresentaiton.createToolBarContributionItem(
-									actionBarPresentaiton.createToolBarManager(), id);
-					// make it invisible by default
-					newItem.setVisible(false);
-					// Need to add the item to the cool bar manager so that its
-					// canonical order can be preserved
-					IContributionItem refItem = findAlphabeticalOrder(
-							IWorkbenchActionConstants.MB_ADDITIONS, id,
-							coolBarMgr);
-					if (refItem != null) {
-						coolBarMgr.insertAfter(refItem.getId(), newItem);
-					} else {
-						coolBarMgr.add(newItem);
-					}
-				}
-				// Add new item into cool bar manager
-				if (newItem != null) {
-					coolBarLayout.add(newItem);
-					newItem.setParent(coolBarMgr);
-					coolBarMgr.markDirty();
-				}
-			}
-
-			// Add separators to the displayed Items data structure
-			int offset = 0;
-			for (int i = 1; i < visibleWrapIndicies.size(); i++) {
-				int insertAt = ((Integer) visibleWrapIndicies.get(i))
-						.intValue()
-						+ offset;
-				coolBarLayout.add(insertAt, new Separator(
-						CoolBarManager.USER_SEPARATOR));
-				offset++;
-			}
-
-			// Add any group markers in their appropriate places
-			IContributionItem[] items = coolBarMgr.getItems();
-			for (int i = 0; i < items.length; i++) {
-				IContributionItem item = items[i];
-				if (item.isGroupMarker()) {
-					coolBarLayout.add(Math.max(Math
-							.min(i, coolBarLayout.size()), 0), item);
-				}
-			}
-			IContributionItem[] itemsToSet = new IContributionItem[coolBarLayout
-					.size()];
-			coolBarLayout.toArray(itemsToSet);
-			coolBarMgr.setItems(itemsToSet);
-		}
-		return true;
-	}
-
-	/**
-	 * Helper method used for restoring an old cool bar layout. This method
-	 * reads the memento and populatates the item id's and wrap indicies.
-	 */
-	private boolean readLayout(IMemento memento, ArrayList itemIds,
-			ArrayList wrapIndicies) {
-		// Get the Wrap indicies
-		IMemento[] wraps = memento
-				.getChildren(IWorkbenchConstants.TAG_ITEM_WRAP_INDEX);
-		if (wraps == null) {
-			return false;
-		}
-		for (int i = 0; i < wraps.length; i++) {
-			IMemento wrapMem = wraps[i];
-			Integer index = wrapMem.getInteger(IWorkbenchConstants.TAG_INDEX);
-			if (index == null) {
-				return false;
-			}
-			wrapIndicies.add(index);
-		}
-		// Get the Item ids
-		IMemento[] savedItems = memento
-				.getChildren(IWorkbenchConstants.TAG_ITEM);
-		if (savedItems == null) {
-			return false;
-		}
-		for (int i = 0; i < savedItems.length; i++) {
-			IMemento savedMem = savedItems[i];
-			String id = savedMem.getString(IWorkbenchConstants.TAG_ID);
-			if (id == null) {
-				return false;
-			}
-			itemIds.add(id);
-		}
-		return true;
-	}
-
-	/**
-	 * Returns the contribution item that the given contribution item should be
-	 * inserted after.
-	 * 
-	 * @param startId
-	 *            the location to start looking alphabetically.
-	 * @param itemId
-	 *            the target item id.
-	 * @param mgr
-	 *            the contribution manager.
-	 * @return the contribution item that the given items should be returned
-	 *         after.
-	 */
-	private IContributionItem findAlphabeticalOrder(String startId,
-			String itemId, IContributionManager mgr) {
-		IContributionItem[] items = mgr.getItems();
-		int insertIndex = 0;
-
-		// look for starting point
-		while (insertIndex < items.length) {
-			IContributionItem item = items[insertIndex];
-			if (item.getId() != null && item.getId().equals(startId)) {
-				break;
-			}
-			++insertIndex;
-		}
-
-		// Find the index that this item should be inserted in
-		for (int i = insertIndex + 1; i < items.length; i++) {
-			IContributionItem item = items[i];
-			String testId = item.getId();
-
-			if (item.isGroupMarker()) {
-				break;
-			}
-
-			if (itemId != null && testId != null) {
-				if (itemId.compareTo(testId) < 1) {
-					break;
-				}
-			}
-			insertIndex = i;
-		}
-		if (insertIndex >= items.length) {
-			return null;
-		}
-		return items[insertIndex];
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IRunnableContext.
-	 */
-	public void run(boolean fork, boolean cancelable,
-			IRunnableWithProgress runnable) throws InvocationTargetException,
-			InterruptedException {
-		IWorkbenchContextSupport contextSupport = getWorkbench()
-				.getContextSupport();
-		final boolean keyFilterEnabled = contextSupport.isKeyFilterEnabled();
-
-		Control fastViewBarControl = getFastViewBar() == null ? null
-				: getFastViewBar().getControl();
-		boolean fastViewBarWasEnabled = fastViewBarControl == null ? false
-				: fastViewBarControl.getEnabled();
-
-		Control perspectiveBarControl = getPerspectiveBar() == null ? null
-				: getPerspectiveBar().getControl();
-		boolean perspectiveBarWasEnabled = perspectiveBarControl == null ? false
-				: perspectiveBarControl.getEnabled();
-
-		// Cache for any diabled trim controls
-		List disabledControls = null;
-		
-		try {
-			if (fastViewBarControl != null && !fastViewBarControl.isDisposed()) {
-				fastViewBarControl.setEnabled(false);
-			}
-
-			if (perspectiveBarControl != null
-					&& !perspectiveBarControl.isDisposed()) {
-				perspectiveBarControl.setEnabled(false);
-			}
-
-			if (keyFilterEnabled) {
-				contextSupport.setKeyFilterEnabled(false);
-			}
-
-			// Disable all trim -except- the StatusLine
-			if (defaultLayout != null)
-				disabledControls = defaultLayout.disableTrim(getStatusLineTrim());
-
-			super.run(fork, cancelable, runnable);
-		} finally {
-			if (fastViewBarControl != null && !fastViewBarControl.isDisposed()) {
-				fastViewBarControl.setEnabled(fastViewBarWasEnabled);
-			}
-
-			if (perspectiveBarControl != null
-					&& !perspectiveBarControl.isDisposed()) {
-				perspectiveBarControl.setEnabled(perspectiveBarWasEnabled);
-			}
-
-			if (keyFilterEnabled) {
-				contextSupport.setKeyFilterEnabled(true);
-			}
-			
-			// Re-enable any disabled trim
-			if (defaultLayout != null && disabledControls != null)
-				defaultLayout.enableTrim(disabledControls);
-		}
-	}
-
-	/**
-	 * Save all of the pages. Returns true if the operation succeeded.
-	 */
-	private boolean saveAllPages(boolean bConfirm) {
-		boolean bRet = true;
-		Iterator itr = pageList.iterator();
-		while (bRet && itr.hasNext()) {
-			WorkbenchPage page = (WorkbenchPage) itr.next();
-			bRet = page.saveAllEditors(bConfirm);
-		}
-		return bRet;
-	}
-
-	/**
-	 * @see IPersistable
-	 */
-	public IStatus saveState(IMemento memento) {
-
-		MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
-				WorkbenchMessages.WorkbenchWindow_problemsSavingWindow, null);
-
-		// Save the window's state and bounds.
-		if (getShell().getMaximized() || asMaximizedState) {
-			memento.putString(IWorkbenchConstants.TAG_MAXIMIZED, "true"); //$NON-NLS-1$
-		}
-		if (getShell().getMinimized()) {
-			memento.putString(IWorkbenchConstants.TAG_MINIMIZED, "true"); //$NON-NLS-1$
-		}
-		if (normalBounds == null) {
-			normalBounds = getShell().getBounds();
-		}
-		IMemento fastViewBarMem = memento
-				.createChild(IWorkbenchConstants.TAG_FAST_VIEW_DATA);
-		if (fastViewBar != null) {
-			fastViewBar.saveState(fastViewBarMem);
-		}
-
-		memento.putInteger(IWorkbenchConstants.TAG_X, normalBounds.x);
-		memento.putInteger(IWorkbenchConstants.TAG_Y, normalBounds.y);
-		memento.putInteger(IWorkbenchConstants.TAG_WIDTH, normalBounds.width);
-		memento.putInteger(IWorkbenchConstants.TAG_HEIGHT, normalBounds.height);
-
-		IWorkbenchPage activePage = getActivePage();
-		if (activePage != null
-				&& activePage.findView(IIntroConstants.INTRO_VIEW_ID) != null) {
-			IMemento introMem = memento
-					.createChild(IWorkbenchConstants.TAG_INTRO);
-			boolean isStandby = getWorkbench()
-					.getIntroManager()
-					.isIntroStandby(getWorkbench().getIntroManager().getIntro());
-			introMem.putString(IWorkbenchConstants.TAG_STANDBY, String
-					.valueOf(isStandby));
-		}
-
-		// save the width of the perspective bar
-		IMemento persBarMem = memento
-				.createChild(IWorkbenchConstants.TAG_PERSPECTIVE_BAR);
-		if (perspectiveSwitcher != null) {
-			perspectiveSwitcher.saveState(persBarMem);
-		}
-
-		// / Save the order of the cool bar contribution items
-        ICoolBarManager2 coolBarMgr = (ICoolBarManager2) getCoolBarManager2();
-        if (coolBarMgr != null) {
-        	coolBarMgr.refresh();
-			IMemento coolBarMem = memento
-					.createChild(IWorkbenchConstants.TAG_COOLBAR_LAYOUT);
-            if (coolBarMgr.getLockLayout() == true) {
-				coolBarMem.putInteger(IWorkbenchConstants.TAG_LOCKED, 1);
-			} else {
-				coolBarMem.putInteger(IWorkbenchConstants.TAG_LOCKED, 0);
-			}
-            IContributionItem[] items = coolBarMgr.getItems();
-			for (int i = 0; i < items.length; i++) {
-				IMemento coolItemMem = coolBarMem
-						.createChild(IWorkbenchConstants.TAG_COOLITEM);
-				IContributionItem item = items[i];
-				// The id of the contribution item
-				if (item.getId() != null) {
-					coolItemMem.putString(IWorkbenchConstants.TAG_ID, item
-							.getId());
-				}
-				// Write out type and size if applicable
-				if (item.isSeparator()) {
-					coolItemMem.putString(IWorkbenchConstants.TAG_ITEM_TYPE,
-							IWorkbenchConstants.TAG_TYPE_SEPARATOR);
-				} else if (item.isGroupMarker() && !item.isSeparator()) {
-					coolItemMem.putString(IWorkbenchConstants.TAG_ITEM_TYPE,
-							IWorkbenchConstants.TAG_TYPE_GROUPMARKER);
-				} else {
-					if (item instanceof PlaceholderContributionItem) {
-						coolItemMem.putString(
-								IWorkbenchConstants.TAG_ITEM_TYPE,
-								IWorkbenchConstants.TAG_TYPE_PLACEHOLDER);
-					} else {
-						// Store the identifier.
-						coolItemMem
-								.putString(
-										IWorkbenchConstants.TAG_ITEM_TYPE,
-										IWorkbenchConstants.TAG_TYPE_TOOLBARCONTRIBUTION);
-					}
-
-					/*
-					 * Retrieve a reasonable approximation of the height and
-					 * width, if possible.
-					 */
-					final int height;
-					final int width;
-					if (item instanceof IToolBarContributionItem) {
-						IToolBarContributionItem toolBarItem = (IToolBarContributionItem) item;
-						toolBarItem.saveWidgetState();
-						height = toolBarItem.getCurrentHeight();
-						width = toolBarItem.getCurrentWidth();
-					} else if (item instanceof PlaceholderContributionItem) {
-						PlaceholderContributionItem placeholder = (PlaceholderContributionItem) item;
-						height = placeholder.getHeight();
-						width = placeholder.getWidth();
-					} else {
-						height = -1;
-						width = -1;
-					}
-
-					// Store the height and width.
-					coolItemMem.putInteger(IWorkbenchConstants.TAG_ITEM_X,
-							width);
-					coolItemMem.putInteger(IWorkbenchConstants.TAG_ITEM_Y,
-							height);
-				}
-			}
-		}
-
-		// Save each page.
-		Iterator itr = pageList.iterator();
-		while (itr.hasNext()) {
-			WorkbenchPage page = (WorkbenchPage) itr.next();
-
-			// Save perspective.
-			IMemento pageMem = memento
-					.createChild(IWorkbenchConstants.TAG_PAGE);
-			pageMem.putString(IWorkbenchConstants.TAG_LABEL, page.getLabel());
-			result.add(page.saveState(pageMem));
-
-			if (page == getActiveWorkbenchPage()) {
-				pageMem.putString(IWorkbenchConstants.TAG_FOCUS, "true"); //$NON-NLS-1$
-			}
-
-			// Get the input.
-			IAdaptable input = page.getInput();
-			if (input != null) {
-				IPersistableElement persistable = (IPersistableElement) Util.getAdapter(input,
-						IPersistableElement.class);
-				if (persistable == null) {
-					WorkbenchPlugin
-							.log("Unable to save page input: " //$NON-NLS-1$
-									+ input
-									+ ", because it does not adapt to IPersistableElement"); //$NON-NLS-1$
-				} else {
-					// Save input.
-					IMemento inputMem = pageMem
-							.createChild(IWorkbenchConstants.TAG_INPUT);
-					inputMem.putString(IWorkbenchConstants.TAG_FACTORY_ID,
-							persistable.getFactoryId());
-					persistable.saveState(inputMem);
-				}
-			}
-		}
-
-		// Save window advisor state.
-		IMemento windowAdvisorState = memento
-				.createChild(IWorkbenchConstants.TAG_WORKBENCH_WINDOW_ADVISOR);
-		result.add(getWindowAdvisor().saveState(windowAdvisorState));
-
-		// Save actionbar advisor state.
-		IMemento actionBarAdvisorState = memento
-				.createChild(IWorkbenchConstants.TAG_ACTION_BAR_ADVISOR);
-		result.add(getActionBarAdvisor().saveState(actionBarAdvisorState));
-
-		// Only save the trim state if we're using the default layout
-		if (defaultLayout != null) {
-			IMemento trimState = memento.createChild(IWorkbenchConstants.TAG_TRIM);
-			result.add(saveTrimState(trimState));
-		}
-
-		return result;
-	}
-
-	/**
-	 * Save the trim layout trim area and trim ordering.
-	 * 
-	 * @param memento
-	 *            the memento to update
-	 * @return the status, OK or not..
-	 * @since 3.2
-	 */
-	private IStatus saveTrimState(IMemento memento) {
-		int[] ids = defaultLayout.getAreaIds();
-		for (int i = 0; i < ids.length; i++) {
-			int id = ids[i];
-			List trim = defaultLayout.getAreaTrim(id);
-			if (!trim.isEmpty()) {
-				IMemento area = memento
-						.createChild(IWorkbenchConstants.TAG_TRIM_AREA, Integer
-								.toString(id));
-				Iterator d = trim.iterator();
-				while (d.hasNext()) {
-					IWindowTrim item = (IWindowTrim) d.next();
-					area.createChild(IWorkbenchConstants.TAG_TRIM_ITEM, item
-							.getId());
-				}
-			}
-		}
-		return Status.OK_STATUS;
-	}
-
-	/**
-	 * Restore the trim layout state from the memento.
-	 * 
-	 * @param memento
-	 *            the 'root' Workbench memento to restore
-	 * @return the status, OK or not
-	 * @since 3.2
-	 */
-	private IStatus restoreTrimState(IMemento memento) {
-		// Determine if we have saved state. If we don't have any 3.2
-		// type state we're not done because the FastViewBar maintained
-		// its own 'side' state in 3.1 so we'll honor its value
-		IMemento trimState = memento.getChild(IWorkbenchConstants.TAG_TRIM);
-		if (trimState != null) {
-			// first pass sets up ordering for all trim areas
-			IMemento[] areas = trimState
-					.getChildren(IWorkbenchConstants.TAG_TRIM_AREA);
-			
-			// We need to remember all the trim that was repositioned
-			// here so we can re-site -newly contributed- trim after
-			// we're done
-			final List knownIds = new ArrayList();
-			
-			List[] trimOrder = new List[areas.length];
-			for (int i = 0; i < areas.length; i++) {
-				trimOrder[i] = new ArrayList();
-				List preferredLocations = new ArrayList();
-				IMemento area = areas[i];
-				IMemento[] items = area
-						.getChildren(IWorkbenchConstants.TAG_TRIM_ITEM);
-				for (int j = 0; j < items.length; j++) {
-					IMemento item = items[j];
-					String id = item.getID();
-					knownIds.add(id);
-					preferredLocations.add(id);
-					
-					IWindowTrim t = defaultLayout.getTrim(id);
-					if (t != null) {
-						trimOrder[i].add(t);
-					}
-				}
-				
-				// Inform the TrimLayout of the preferred location for this area
-				String areaIdString = areas[i].getID();
-				int areaId = Integer.parseInt(areaIdString);
-				defaultLayout.setPreferredLocations(areaId, preferredLocations);
-			}
-	
-			// second pass applies all of the window trim
-			for (int i = 0; i < areas.length; i++) {
-				IMemento area = areas[i];
-				final int id = Integer.parseInt(area.getID());
-				final List myTrimOrderList = trimOrder[i];
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() throws Throwable {
-						defaultLayout.updateAreaTrim(id, myTrimOrderList, false);
-					}});
-				
-			}
-
-			// get the trim manager to re-locate any -newly contributed-
-			// trim widgets
-			// Legacy (3.2) trim
-			if (trimMgr2 != null) {
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-					public void runWithException() throws Throwable {
-						trimMgr2.updateLocations(knownIds);
-					}});
-				
-			}
-			
-			// 3.3 Trim Contributions
-			if (trimContributionMgr != null) {
-				StartupThreading.runWithoutExceptions(new StartupRunnable() {
-					public void runWithException() throws Throwable {
-						trimContributionMgr.updateLocations(knownIds);
-
-						// Update the GUI with the new locations
-						WorkbenchPage page = getActiveWorkbenchPage();
-						if (page != null) {
-							Perspective perspective = page.getActivePerspective();
-							if (perspective != null) {
-								// Ensure that only the upper/right editor stack has
-								// min/max buttons
-								page.getEditorPresentation().updateStackButtons();
-								
-								// The perspective's onActivate manipulates the trim under the
-								// new min/max story so cause it to refresh...
-								perspective.onActivate();
-							}
-						}
-					}});
-			}
-		}
-		else {
-			// No 3.2 state...check if the FVB has state
-			IMemento fastViewMem = memento
-					.getChild(IWorkbenchConstants.TAG_FAST_VIEW_DATA);
-			if (fastViewMem != null) {
-				if (fastViewBar != null) {
-			        final Integer bigInt = fastViewMem.getInteger(IWorkbenchConstants.TAG_FAST_VIEW_SIDE);
-			        if (bigInt != null) {
-			        	StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-							public void runWithException() throws Throwable {
-								fastViewBar.dock(bigInt.intValue());
-					        	getTrimManager().addTrim(bigInt.intValue(), fastViewBar);
-							}});
-			        	
-			        }
-				}
-			}
-		}
-		
-		return Status.OK_STATUS;
-	}
-
-	/**
-	 * Sets the active page within the window.
-	 * 
-	 * @param in
-	 *            identifies the new active page, or <code>null</code> for no
-	 *            active page
-	 */
-	public void setActivePage(final IWorkbenchPage in) {
-		if (getActiveWorkbenchPage() == in) {
-			return;
-		}
-
-		// 1FVGTNR: ITPUI:WINNT - busy cursor for switching perspectives
-		BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
-			public void run() {
-				// Deactivate old persp.
-				WorkbenchPage currentPage = getActiveWorkbenchPage();
-				if (currentPage != null) {
-					currentPage.onDeactivate();
-				}
-
-				// Activate new persp.
-				if (in == null || pageList.contains(in)) {
-					pageList.setActive(in);
-				}
-				WorkbenchPage newPage = pageList.getActive();
-				Composite parent = getPageComposite();
-				StackLayout layout = (StackLayout) parent.getLayout();
-				if (newPage != null) {
-					layout.topControl = newPage.getClientComposite();
-					parent.layout();
-					hideEmptyWindowContents();
-					newPage.onActivate();
-					firePageActivated(newPage);
-					if (newPage.getPerspective() != null) {
-						firePerspectiveActivated(newPage, newPage
-								.getPerspective());
-					}
-				} else {
-					layout.topControl = null;
-					parent.layout();
-				}
-
-				updateFastViewBar();
-
-				if (isClosing()) {
-					return;
-				}
-
-				updateDisabled = false;
-
-				// Update action bars ( implicitly calls updateActionBars() )
-				updateActionSets();
-				submitGlobalActions();
-
-				if (perspectiveSwitcher != null) {
-					perspectiveSwitcher.update(false);
-				}
-
-				getMenuManager().update(IAction.TEXT);
-			}
-		});
-	}
-
-	/**
-	 * Returns whether or not children exist for the Window's toolbar control.
-	 * Overridden for coolbar support.
-	 * <p>
-	 * 
-	 * @return boolean true if children exist, false otherwise
-	 */
-	protected boolean toolBarChildrenExist() {
-		CoolBar coolBarControl = (CoolBar) getCoolBarControl();
-		return coolBarControl.getItemCount() > 0;
-	}
-
-	private Set menuRestrictions = new HashSet();
-	
-	private Boolean valueOf(boolean result) {
-		return result ? Boolean.TRUE : Boolean.FALSE;
-	}
-	
-	public Set getMenuRestrictions() {
-		return menuRestrictions;
-	}
-	
-	void liftRestrictions() {
-		if (menuRestrictions.isEmpty()) {
-			return;
-		}
-		EvaluationReference[] refs = (EvaluationReference[]) menuRestrictions
-				.toArray(new EvaluationReference[menuRestrictions.size()]);
-		IEvaluationService es = (IEvaluationService) serviceLocator
-				.getService(IEvaluationService.class);
-		IEvaluationContext currentState = es.getCurrentState();
-		boolean changeDetected = false;
-		for (int i = 0; i < refs.length; i++) {
-			EvaluationReference reference = refs[i];
-			reference.setPostingChanges(true);
-
-			boolean os = reference.evaluate(currentState);
-			reference.clearResult();
-			boolean ns = reference.evaluate(currentState);
-			if (os != ns) {
-				changeDetected = true;
-				reference.getListener().propertyChange(
-						new PropertyChangeEvent(reference, reference
-								.getProperty(), valueOf(os), valueOf(ns)));
-			}
-		}
-		if (changeDetected) {
-			IMenuService ms = (IMenuService) getWorkbench().getService(
-					IMenuService.class);
-			if (ms instanceof WorkbenchMenuService) {
-				((WorkbenchMenuService) ms).updateManagers();
-			}
-		}
-	}
-	
-	void imposeRestrictions() {
-		Iterator i = menuRestrictions.iterator();
-		while (i.hasNext()) {
-			EvaluationReference ref = (EvaluationReference) i.next();
-			ref.setPostingChanges(false);
-		}
-	}
-	
-	/**
-	 * Hooks a listener to track the activation and deactivation of the window's
-	 * shell. Notifies the active part and editor of the change
-	 */
-	private void trackShellActivation(Shell shell) {
-		shell.addShellListener(new ShellAdapter() {
-			public void shellActivated(ShellEvent event) {
-				shellActivated = true;
-				serviceLocator.activate();
-				getWorkbenchImpl().setActivatedWindow(WorkbenchWindow.this);
-				WorkbenchPage currentPage = getActiveWorkbenchPage();
-				if (currentPage != null) {
-					IWorkbenchPart part = currentPage.getActivePart();
-					if (part != null) {
-						PartSite site = (PartSite) part.getSite();
-						site.getPane().shellActivated();
-					}
-					IEditorPart editor = currentPage.getActiveEditor();
-					if (editor != null) {
-						PartSite site = (PartSite) editor.getSite();
-						site.getPane().shellActivated();
-					}
-					getWorkbenchImpl()
-							.fireWindowActivated(WorkbenchWindow.this);
-				}
-				liftRestrictions();
-			}
-
-			public void shellDeactivated(ShellEvent event) {
-				shellActivated = false;
-				imposeRestrictions();
-				serviceLocator.deactivate();
-				WorkbenchPage currentPage = getActiveWorkbenchPage();
-				if (currentPage != null) {
-					IWorkbenchPart part = currentPage.getActivePart();
-					if (part != null) {
-						PartSite site = (PartSite) part.getSite();
-						site.getPane().shellDeactivated();
-					}
-					IEditorPart editor = currentPage.getActiveEditor();
-					if (editor != null) {
-						PartSite site = (PartSite) editor.getSite();
-						site.getPane().shellDeactivated();
-					}
-					getWorkbenchImpl().fireWindowDeactivated(
-							WorkbenchWindow.this);
-				}
-			}
-		});
-	}
-
-	/**
-	 * Hooks a listener to track the resize of the window's shell. Stores the
-	 * new bounds if in normal state - that is, not in minimized or maximized
-	 * state)
-	 */
-	private void trackShellResize(Shell newShell) {
-		newShell.addControlListener(new ControlAdapter() {
-			public void controlMoved(ControlEvent e) {
-				saveBounds();
-			}
-
-			public void controlResized(ControlEvent e) {
-				saveBounds();
-			}
-
-			private void saveBounds() {
-				Shell shell = getShell();
-				if (shell == null) {
-					return;
-				}
-				if (shell.isDisposed()) {
-					return;
-				}
-				if (shell.getMinimized()) {
-					return;
-				}
-				if (shell.getMaximized()) {
-					asMaximizedState = true;
-					return;
-				}
-				asMaximizedState = false;
-				normalBounds = shell.getBounds();
-			}
-		});
-	}
-
-	/**
-	 * update the action bars.
-	 */
-	public void updateActionBars() {
-		if (updateDisabled || updatesDeferred()) {
-			return;
-		}
-		// updateAll required in order to enable accelerators on pull-down menus
-		getMenuBarManager().update(false);
-
-		try {
-			getShell().setLayoutDeferred(true);
-			getCoolBarManager2().update(false);
-		} finally {
-			getShell().setLayoutDeferred(false);
-		}
-		
-		getStatusLineManager().update(false);
-	}
-
-	/**
-	 * Returns true iff we are currently deferring UI processing due to a large
-	 * update
-	 * 
-	 * @return true iff we are deferring UI updates.
-	 * @since 3.1
-	 */
-	private boolean updatesDeferred() {
-		return largeUpdates > 0;
-	}
-
-	/**
-	 * <p>
-	 * Indicates the start of a large update within this window. This is used to
-	 * disable CPU-intensive, change-sensitive services that were temporarily
-	 * disabled in the midst of large changes. This method should always be
-	 * called in tandem with <code>largeUpdateEnd</code>, and the event loop
-	 * should not be allowed to spin before that method is called.
-	 * </p>
-	 * <p>
-	 * Important: always use with <code>largeUpdateEnd</code>!
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public final void largeUpdateStart() {
-		largeUpdates++;
-	}
-
-	/**
-	 * <p>
-	 * Indicates the end of a large update within this window. This is used to
-	 * re-enable services that were temporarily disabled in the midst of large
-	 * changes. This method should always be called in tandem with
-	 * <code>largeUpdateStart</code>, and the event loop should not be
-	 * allowed to spin before this method is called.
-	 * </p>
-	 * <p>
-	 * Important: always protect this call by using <code>finally</code>!
-	 * </p>
-	 * 
-	 * @since 3.1
-	 */
-	public final void largeUpdateEnd() {
-		if (--largeUpdates == 0) {
-			updateActionBars();
-		}
-	}
-
-	/**
-	 * Update the visible action sets. This method is typically called from a
-	 * page when the user changes the visible action sets within the
-	 * prespective.
-	 */
-	public void updateActionSets() {
-		if (updateDisabled) {
-			return;
-		}
-
-		WorkbenchPage currentPage = getActiveWorkbenchPage();
-		if (currentPage == null) {
-			getActionPresentation().clearActionSets();
-		} else {
-			ICoolBarManager2 coolBarManager = (ICoolBarManager2) getCoolBarManager2();
-			if (coolBarManager != null) {
-				coolBarManager.refresh();
-			}
-			getActionPresentation().setActionSets(
-					currentPage.getActionSets());
-		}
-		fireActionSetsChanged();
-		updateActionBars();
-
-		// hide the launch menu if it is empty
-		String path = IWorkbenchActionConstants.M_WINDOW
-				+ IWorkbenchActionConstants.SEP
-				+ IWorkbenchActionConstants.M_LAUNCH;
-		IMenuManager manager = getMenuBarManager().findMenuUsingPath(path);
-		IContributionItem item = getMenuBarManager().findUsingPath(path);
-
-		if (manager == null || item == null) {
-			return;
-		}
-		item.setVisible(manager.getItems().length >= 2);
-		// there is a separator for the additions group thus >= 2
-	}
-
-	private ListenerList actionSetListeners = null;
-
-	private ListenerList backgroundSaveListeners = new ListenerList(ListenerList.IDENTITY);
-
-	private final void fireActionSetsChanged() {
-		if (actionSetListeners != null) {
-			final Object[] listeners = actionSetListeners.getListeners();
-			for (int i = 0; i < listeners.length; i++) {
-				final IActionSetsListener listener = (IActionSetsListener) listeners[i];
-				final WorkbenchPage currentPage = getActiveWorkbenchPage();
-				final IActionSetDescriptor[] newActionSets;
-				if (currentPage == null) {
-					newActionSets = null;
-				} else {
-					newActionSets = currentPage.getActionSets();
-				}
-				final ActionSetsEvent event = new ActionSetsEvent(newActionSets);
-				listener.actionSetsChanged(event);
-			}
-		}
-	}
-
-	final void addActionSetsListener(final IActionSetsListener listener) {
-		if (actionSetListeners == null) {
-			actionSetListeners = new ListenerList();
-		}
-
-		actionSetListeners.add(listener);
-	}
-
-	final void removeActionSetsListener(final IActionSetsListener listener) {
-		if (actionSetListeners != null) {
-			actionSetListeners.remove(listener);
-			if (actionSetListeners.isEmpty()) {
-				actionSetListeners = null;
-			}
-		}
-	}
-
-	/**
-	 * Create the progress indicator for the receiver.
-	 * 
-	 * @param shell
-	 *            the parent shell
-	 */
-	private void createProgressIndicator(Shell shell) {
-		if (getWindowConfigurer().getShowProgressIndicator()) {
-			progressRegion = new ProgressRegion();
-			progressRegion.createContents(shell, this);
-		}
-
-	}
-
-	class PageList {
-		// List of pages in the order they were created;
-		private List pagesInCreationOrder;
-
-		// List of pages where the top is the last activated.
-		private List pageInActivationOrder;
-
-		// The page explicitly activated
-		private Object active;
-
-		public PageList() {
-			pagesInCreationOrder = new ArrayList(4);
-			pageInActivationOrder = new ArrayList(4);
-		}
-
-		public boolean add(Object object) {
-			pagesInCreationOrder.add(object);
-			pageInActivationOrder.add(0, object);
-			// It will be moved to top only when activated.
-			return true;
-		}
-
-		public Iterator iterator() {
-			return pagesInCreationOrder.iterator();
-		}
-
-		public boolean contains(Object object) {
-			return pagesInCreationOrder.contains(object);
-		}
-
-		public boolean remove(Object object) {
-			if (active == object) {
-				active = null;
-			}
-			pageInActivationOrder.remove(object);
-			return pagesInCreationOrder.remove(object);
-		}
-
-		public boolean isEmpty() {
-			return pagesInCreationOrder.isEmpty();
-		}
-
-		public IWorkbenchPage[] getPages() {
-			int nSize = pagesInCreationOrder.size();
-			IWorkbenchPage[] retArray = new IWorkbenchPage[nSize];
-			pagesInCreationOrder.toArray(retArray);
-			return retArray;
-		}
-
-		public void setActive(Object page) {
-			if (active == page) {
-				return;
-			}
-
-			active = page;
-
-			if (page != null) {
-				pageInActivationOrder.remove(page);
-				pageInActivationOrder.add(page);
-			}
-		}
-
-		public WorkbenchPage getActive() {
-			return (WorkbenchPage) active;
-		}
-
-		public WorkbenchPage getNextActive() {
-			if (active == null) {
-				if (pageInActivationOrder.isEmpty()) {
-					return null;
-				}
-
-				return (WorkbenchPage) pageInActivationOrder
-						.get(pageInActivationOrder.size() - 1);
-			}
-
-			if (pageInActivationOrder.size() < 2) {
-				return null;
-			}
-
-			return (WorkbenchPage) pageInActivationOrder
-					.get(pageInActivationOrder.size() - 2);
-		}
-	}
-
-	/**
-	 * Returns the unique object that applications use to configure this window.
-	 * <p>
-	 * IMPORTANT This method is declared package-private to prevent regular
-	 * plug-ins from downcasting IWorkbenchWindow to WorkbenchWindow and getting
-	 * hold of the workbench window configurer that would allow them to tamper
-	 * with the workbench window. The workbench window configurer is available
-	 * only to the application.
-	 * </p>
-	 */
-	/* package - DO NOT CHANGE */
-	WorkbenchWindowConfigurer getWindowConfigurer() {
-		if (windowConfigurer == null) {
-			// lazy initialize
-			windowConfigurer = new WorkbenchWindowConfigurer(this);
-		}
-		return windowConfigurer;
-	}
-
-	/**
-	 * Returns the workbench advisor. Assumes the workbench has been created
-	 * already.
-	 * <p>
-	 * IMPORTANT This method is declared private to prevent regular plug-ins
-	 * from downcasting IWorkbenchWindow to WorkbenchWindow and getting hold of
-	 * the workbench advisor that would allow them to tamper with the workbench.
-	 * The workbench advisor is internal to the application.
-	 * </p>
-	 */
-	private/* private - DO NOT CHANGE */
-	WorkbenchAdvisor getAdvisor() {
-		return getWorkbenchImpl().getAdvisor();
-	}
-
-	/**
-	 * Returns the window advisor, creating a new one for this window if needed.
-	 * <p>
-	 * IMPORTANT This method is declared private to prevent regular plug-ins
-	 * from downcasting IWorkbenchWindow to WorkbenchWindow and getting hold of
-	 * the window advisor that would allow them to tamper with the window. The
-	 * window advisor is internal to the application.
-	 * </p>
-	 */
-	private/* private - DO NOT CHANGE */
-	WorkbenchWindowAdvisor getWindowAdvisor() {
-		if (windowAdvisor == null) {
-			windowAdvisor = getAdvisor().createWorkbenchWindowAdvisor(
-					getWindowConfigurer());
-			Assert.isNotNull(windowAdvisor);
-		}
-		return windowAdvisor;
-	}
-
-	/**
-	 * Returns the action bar advisor, creating a new one for this window if
-	 * needed.
-	 * <p>
-	 * IMPORTANT This method is declared private to prevent regular plug-ins
-	 * from downcasting IWorkbenchWindow to WorkbenchWindow and getting hold of
-	 * the action bar advisor that would allow them to tamper with the window's
-	 * action bars. The action bar advisor is internal to the application.
-	 * </p>
-	 */
-	private/* private - DO NOT CHANGE */
-	ActionBarAdvisor getActionBarAdvisor() {
-		if (actionBarAdvisor == null) {
-			actionBarAdvisor = getWindowAdvisor().createActionBarAdvisor(
-					getWindowConfigurer().getActionBarConfigurer());
-			Assert.isNotNull(actionBarAdvisor);
-		}
-		return actionBarAdvisor;
-	}
-
-	/*
-	 * Returns the IWorkbench implementation.
-	 */
-	private Workbench getWorkbenchImpl() {
-		return Workbench.getInstance();
-	}
-
-	/**
-	 * Fills the window's real action bars.
-	 * 
-	 * @param flags
-	 *            indicate which bars to fill
-	 */
-	public void fillActionBars(int flags) {
-		Workbench workbench = getWorkbenchImpl();
-		workbench.largeUpdateStart();
-		try {
-			getActionBarAdvisor().fillActionBars(flags);
-			//
-			// 3.3 start
-			final IMenuService menuService = (IMenuService) serviceLocator
-					.getService(IMenuService.class);
-			menuService.populateContributionManager(
-					(ContributionManager) getActionBars().getMenuManager(),
-					MenuUtil.MAIN_MENU);
-			ICoolBarManager coolbar = getActionBars().getCoolBarManager();
-			if (coolbar != null) {
-				menuService.populateContributionManager(
-						(ContributionManager) coolbar,
-						MenuUtil.MAIN_TOOLBAR);
-			}
-			// 3.3 end
-		} finally {
-			workbench.largeUpdateEnd();
-		}
-	}
-
-	/**
-	 * Fills the window's proxy action bars.
-	 * 
-	 * @param proxyBars
-	 *            the proxy configurer
-	 * @param flags
-	 *            indicate which bars to fill
-	 */
-	public void fillActionBars(IActionBarConfigurer2 proxyBars, int flags) {
-		Assert.isNotNull(proxyBars);
-		WorkbenchWindowConfigurer.WindowActionBarConfigurer wab = (WorkbenchWindowConfigurer.WindowActionBarConfigurer) getWindowConfigurer()
-				.getActionBarConfigurer();
-		wab.setProxy(proxyBars);
-		try {
-			getActionBarAdvisor().fillActionBars(
-					flags | ActionBarAdvisor.FILL_PROXY);
-		} finally {
-			wab.setProxy(null);
-		}
-	}
-
-	/**
-	 * The <code>WorkbenchWindow</code> implementation of this method has the
-	 * same logic as <code>Window</code>'s implementation, but without the
-	 * resize check. We don't want to skip setting the bounds if the shell has
-	 * been resized since a free resize event occurs on Windows when the menubar
-	 * is set in configureShell.
-	 */
-	protected void initializeBounds() {
-		Point size = getInitialSize();
-		Point location = getInitialLocation(size);
-		getShell().setBounds(
-				getConstrainedShellBounds(new Rectangle(location.x, location.y,
-						size.x, size.y)));
-	}
-
-	/*
-	 * Unlike dialogs, the position of the workbench window is set by the user
-	 * and persisted across sessions. If the user wants to put the window
-	 * offscreen or spanning multiple monitors, let them (bug 74762)
-	 */
-	protected void constrainShellSize() {
-		// As long as the shell is visible on some monitor, don't change it.
-		Rectangle bounds = getShell().getBounds();
-		if (!SwtUtil.intersectsAnyMonitor(Display.getCurrent(), bounds)) {
-			super.constrainShellSize();
-		}
-	}
-
-	/*
-	 * Unlike dialogs, the position of the workbench window is set by the user
-	 * and persisted across sessions. If the user wants to put the window
-	 * offscreen or spanning multiple monitors, let them (bug 74762)
-	 */
-	protected Point getInitialLocation(Point size) {
-		Shell shell = getShell();
-		if (shell != null) {
-			return shell.getLocation();
-		}
-
-		return super.getInitialLocation(size);
-	}
-
-	/**
-	 * The <code>WorkbenchWindow</code> implementation of this method
-	 * delegates to the window configurer.
-	 * 
-	 * @since 3.0
-	 */
-	protected Point getInitialSize() {
-		return getWindowConfigurer().getInitialSize();
-	}
-
-	/**
-	 * @param visible
-	 *            whether the cool bar should be shown. This is only applicable
-	 *            if the window configurer also wishes either the cool bar to be
-	 *            visible.
-	 * @since 3.0
-	 */
-	public void setCoolBarVisible(boolean visible) {
-		boolean oldValue = coolBarVisible;
-		coolBarVisible = visible;
-		if (oldValue != coolBarVisible) {
-			updateLayoutDataForContents();
-			firePropertyChanged(PROP_COOLBAR_VISIBLE,
-					oldValue ? Boolean.TRUE : Boolean.FALSE,
-					coolBarVisible ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-
-	/**
-	 * @return whether the cool bar should be shown. This is only applicable if
-	 *         the window configurer also wishes either the cool bar to be
-	 *         visible.
-	 * @since 3.0
-	 */
-	public boolean getCoolBarVisible() {
-		return coolBarVisible;
-	}
-
-	/**
-	 * @param visible
-	 *            whether the perspective bar should be shown. This is only
-	 *            applicable if the window configurer also wishes either the
-	 *            perspective bar to be visible.
-	 * @since 3.0
-	 */
-	public void setPerspectiveBarVisible(boolean visible) {
-		boolean oldValue = perspectiveBarVisible;
-		perspectiveBarVisible = visible;
-		if (oldValue != perspectiveBarVisible) {
-			updateLayoutDataForContents();
-			firePropertyChanged(PROP_PERSPECTIVEBAR_VISIBLE,
-					oldValue ? Boolean.TRUE : Boolean.FALSE,
-					perspectiveBarVisible ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-
-	/**
-	 * @return whether the perspective bar should be shown. This is only
-	 *         applicable if the window configurer also wishes either the
-	 *         perspective bar to be visible.
-	 * @since 3.0
-	 */
-	public boolean getPerspectiveBarVisible() {
-		return perspectiveBarVisible;
-	}
-	
-	/**
-	 * Tell the workbench window a visible state for the fastview bar. This is
-	 * only applicable if the window configurer also wishes the fast view bar to
-	 * be visible.
-	 * 
-	 * @param visible
-	 *            <code>true</code> or <code>false</code>
-	 * @since 3.2
-	 */
-	public void setFastViewBarVisible(boolean visible) {
-		boolean oldValue = fastViewBarVisible;
-		fastViewBarVisible = visible;
-		if (oldValue != fastViewBarVisible) {
-			updateLayoutDataForContents();
-		}
-	}
-	
-	/**
-	 * The workbench window take on the fastview bar. This is only applicable if
-	 * the window configurer also wishes the fast view bar to be visible.
-	 * 
-	 * @return <code>true</code> if the workbench window thinks the fastview
-	 *         bar should be visible.
-	 * @since 3.2
-	 */
-	public boolean getFastViewBarVisible() {
-		return fastViewBarVisible;
-	}
-
-	/**
-	 * @param visible
-	 *            whether the perspective bar should be shown. This is only
-	 *            applicable if the window configurer also wishes either the
-	 *            perspective bar to be visible.
-	 * @since 3.0
-	 */
-	public void setStatusLineVisible(boolean visible) {
-		boolean oldValue = statusLineVisible;
-		statusLineVisible = visible;
-		if (oldValue != statusLineVisible) {
-			updateLayoutDataForContents();
-			firePropertyChanged(PROP_STATUS_LINE_VISIBLE,
-					oldValue ? Boolean.TRUE : Boolean.FALSE,
-					statusLineVisible ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-
-	/**
-	 * @return whether the perspective bar should be shown. This is only
-	 *         applicable if the window configurer also wishes either the
-	 *         perspective bar to be visible.
-	 * @since 3.0
-	 */
-	public boolean getStatusLineVisible() {
-		return statusLineVisible;
-	}
-
-	/**
-	 * Note that this will only have an effect if the default implementation of
-	 * WorkbenchAdvisor.createWindowContents() has been invoked.
-	 * 
-	 * called IWorkbench
-	 * 
-	 * @since 3.0
-	 */
-	private void updateLayoutDataForContents() {
-		if (defaultLayout == null) {
-			return;
-		}
-
-		// @issue this is not ideal; coolbar and perspective shortcuts should be
-		// separately configurable
-		if ((getCoolBarVisible() && getWindowConfigurer().getShowCoolBar())
-				|| (getPerspectiveBarVisible() && getWindowConfigurer()
-						.getShowPerspectiveBar())) {
-			if (defaultLayout.getTrim(topBarTrim.getId()) == null) {
-				defaultLayout.addTrim(SWT.TOP, topBarTrim);
-			}
-			topBar.setVisible(true);
-		} else {
-			defaultLayout.removeTrim(topBarTrim);
-			topBar.setVisible(false);
-		}
-
-		if (fastViewBar != null) {
-			if (getFastViewBarVisible()
-					&& getWindowConfigurer().getShowFastViewBars()) {
-				int side = fastViewBar.getSide();
-
-				if (defaultLayout.getTrim(fastViewBar.getId()) == null) {
-					defaultLayout.addTrim(side, fastViewBar);
-				}
-				fastViewBar.getControl().setVisible(true);
-			} else {
-				defaultLayout.removeTrim(fastViewBar);
-				fastViewBar.getControl().setVisible(false);
-			}
-		}
-
-		if (getStatusLineVisible() && getWindowConfigurer().getShowStatusLine()) {
-			if (defaultLayout.getTrim(getStatusLineTrim().getId()) == null) {
-				defaultLayout.addTrim(SWT.BOTTOM, getStatusLineTrim());
-			}
-			getStatusLineManager().getControl().setVisible(true);
-		} else {
-			defaultLayout.removeTrim(getStatusLineTrim());
-			getStatusLineManager().getControl().setVisible(false);
-		}
-
-		if (heapStatus != null) {
-			if (getShowHeapStatus()) {
-				if (heapStatus.getLayoutData() == null) {
-					heapStatusTrim.setWidthHint(heapStatus.computeSize(
-							SWT.DEFAULT, SWT.DEFAULT).x);
-					heapStatusTrim
-							.setHeightHint(getStatusLineManager().getControl()
-									.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
-				}
-
-				if (defaultLayout.getTrim(heapStatusTrim.getId()) == null) {
-					defaultLayout.addTrim(SWT.BOTTOM, heapStatusTrim);
-				}
-				heapStatus.setVisible(true);
-			} else {
-
-				defaultLayout.removeTrim(heapStatusTrim);
-				heapStatus.setVisible(false);
-			}
-		}
-
-		if (progressRegion != null) {
-			if (getWindowConfigurer().getShowProgressIndicator()) {
-				if (defaultLayout.getTrim(progressRegion.getId()) == null) {
-					defaultLayout.addTrim(SWT.BOTTOM, progressRegion);
-				}
-				progressRegion.getControl().setVisible(true);
-			} else {
-				defaultLayout.removeTrim(progressRegion);
-				progressRegion.getControl().setVisible(false);
-			}
-		}
-		
-		defaultLayout.setCenterControl(getPageComposite());
-
-		// Re-populate the trim elements
-		if (trimMgr2 != null)
-			trimMgr2.update(true, false, !topBar.getVisible());
-		if (trimContributionMgr != null)
-			trimContributionMgr.update(true,  !topBar.getVisible());
-	}
-
-	public boolean getShowFastViewBars() {
-		return getWindowConfigurer().getShowFastViewBars();
-	}
-
-	/**
-	 * Set the layout data for the contents of the window.
-	 */
-	private void setLayoutDataForContents() {
-		updateLayoutDataForContents();
-	}
-
-	/**
-	 * Returns the fast view bar.
-	 */
-	public FastViewBar getFastViewBar() {
-		return fastViewBar;
-	}
-
-	/**
-	 * Returns the perspective bar.
-	 * 
-	 * @return Returns the perspective bar, or <code>null</code> if it has not
-	 *         been initialized.
-	 */
-	public PerspectiveBarManager getPerspectiveBar() {
-		return perspectiveSwitcher == null ? null : perspectiveSwitcher
-				.getPerspectiveBar();
-	}
-
-    /**
-     * Returns the action presentation for dynamic UI
-     * @return action presentation
-     */
-    public ActionPresentation getActionPresentation() {
-        if (actionPresentation == null) {
-        	actionPresentation = new ActionPresentation(this);
-        }
-        return actionPresentation;
-    }
-    
-    /**
-     * Return the action bar presentation used for creating toolbars.  This
-     * is for internal use only, used for consistency with the window.
-     * 
-     * @return the presentation used.
-     */
-    public IActionBarPresentationFactory getActionBarPresentationFactory() {
-    	// allow replacement of the actionbar presentation
-    	IActionBarPresentationFactory actionBarPresentation;        	
-    	AbstractPresentationFactory presentationFactory = 
-    		getWindowConfigurer().getPresentationFactory();
-    	if (presentationFactory instanceof IActionBarPresentationFactory) {
-        	actionBarPresentation = ((IActionBarPresentationFactory) presentationFactory);
-    	} else {
-			actionBarPresentation = new DefaultActionBarPresentationFactory();
-		}      
-    	
-    	return actionBarPresentation;        	
-    }
-    
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.ApplicationWindow#showTopSeperator()
-	 */
-	protected boolean showTopSeperator() {
-		return false;
-	}
-
-	/**
-     * Returns a new cool bar manager for the window.
-     * <p>
-     * Subclasses may override this method to customize the cool bar manager.
-     * </p>
-     * 
-     * @return a cool bar manager
-	 * @since 3.2
-     */
-    protected ICoolBarManager createCoolBarManager2(int style) {
-        return getActionBarPresentationFactory().createCoolBarManager();
-    }
-
-    /**
-     * Returns a new tool bar manager for the window.
-     * <p>
-     * Subclasses may override this method to customize the tool bar manager.
-     * </p>
-     * @return a tool bar manager
-	 * @since 3.2
-     */
-    protected IToolBarManager createToolBarManager2(int style) {
-        return getActionBarPresentationFactory().createToolBarManager();
-    }
-    
-    /**
-	 * Delegate to the presentation factory.
-	 * 
-	 * @see org.eclipse.jface.window.ApplicationWindow#createStatusLineManager
-	 * @since 3.0
-	 */
-	protected StatusLineManager createStatusLineManager() {
-		// @issue ApplicationWindow and WorkbenchWindow should allow full
-		// IStatusLineManager
-		return (StatusLineManager) getWindowConfigurer()
-				.getPresentationFactory().createStatusLineManager();
-	}
-
-	/**
-	 * Delegate to the presentation factory.
-	 * 
-	 * @see org.eclipse.jface.window.ApplicationWindow#createStatusLine
-	 * @since 3.0
-	 */
-	protected void createStatusLine(Shell shell) {
-		getWindowConfigurer().getPresentationFactory().createStatusLineControl(
-				getStatusLineManager(), shell);
-	}
-
-	/**
-	 * Updates the fast view bar, if present. TODO: The fast view bar should
-	 * update itself as necessary. All calls to this should be cleaned up.
-	 * 
-	 * @since 3.0
-	 */
-	public void updateFastViewBar() {
-		if (getFastViewBar() != null) {
-			getFastViewBar().update(true);
-		}
-	}
-
-	/**
-	 * @return Returns the progressRegion.
-	 */
-	public ProgressRegion getProgressRegion() {
-		return progressRegion;
-	}
-
-	/**
-	 * Adds the given control to the specified side of this window's trim.
-	 * 
-	 * @param trim
-	 *            the bar's IWindowTrim
-	 * @param side
-	 *            one of <code>SWT.LEFT</code>,<code>SWT.BOTTOM</code>,
-	 *            or <code>SWT.RIGHT</code> (only LEFT has been tested)
-	 * @since 3.0
-	 */
-	public void addToTrim(IWindowTrim trim, int side) {
-		IWindowTrim reference = null;
-		defaultLayout.addTrim(side, trim, reference);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchWindow#getExtensionTracker()
-	 */
-	public IExtensionTracker getExtensionTracker() {
-		if (tracker == null) {
-			tracker = new UIExtensionTracker(getWorkbench().getDisplay());
-		}
-		return tracker;
-	}
-
-	/**
-	 * Creates the perspective customization dialog.
-	 * 
-	 * @param persp
-	 *            perspective to customize
-	 * 
-	 * @return a new perspective customization dialog
-	 * @since 3.1
-	 */
-	public CustomizePerspectiveDialog createCustomizePerspectiveDialog(
-			Perspective persp) {
-		return new CustomizePerspectiveDialog(getWindowConfigurer(), persp);
-	}
-
-	/**
-	 * Returns the default page input for workbench pages opened in this window.
-	 * 
-	 * @return the default page input or <code>null</code> if none
-	 * @since 3.1
-	 */
-	IAdaptable getDefaultPageInput() {
-		return getWorkbenchImpl().getDefaultPageInput();
-	}
-
-	/**
-	 * Add a listener for perspective reordering.
-	 * 
-	 * @param listener
-	 */
-	public void addPerspectiveReorderListener(IReorderListener listener) {
-		if (perspectiveSwitcher != null) {
-			perspectiveSwitcher.addReorderListener(listener);
-		}
-	}
-
-	/**
-	 * Show the heap status
-	 * 
-	 * @param selection
-	 */
-	public void showHeapStatus(boolean selection) {
-		if (selection) {
-			if (heapStatus == null) {
-				createHeapStatus(getShell());
-				updateLayoutDataForContents();
-				getShell().layout();
-			}
-		} else {
-			if (heapStatus != null) {
-				heapStatus.dispose();
-				heapStatus = null;
-			}
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchWindow#getTrimManager()
-	 */
-	public ITrimManager getTrimManager() {
-		return defaultLayout;
-	}
-
-	/**
-	 * Initializes all of the default command-based services for the workbench
-	 * window.
-	 */
-	private final void initializeDefaultServices() {
-		serviceLocator.registerService(IWorkbenchLocationService.class,
-				new WorkbenchLocationService(IServiceScopes.WINDOW_SCOPE,
-						getWorkbench(), this, null, null, null, 1));
-		
-		final ActionCommandMappingService mappingService = new ActionCommandMappingService();
-		serviceLocator.registerService(IActionCommandMappingService.class,
-				mappingService);
-
-		final LegacyActionPersistence actionPersistence = new LegacyActionPersistence(
-				this);
-		serviceLocator.registerService(LegacyActionPersistence.class,
-				actionPersistence);
-		actionPersistence.read();
-
-	}
-
-	public final Object getService(final Class key) {
-		return serviceLocator.getService(key);
-	}
-
-	public final boolean hasService(final Class key) {
-		return serviceLocator.hasService(key);
-	}
-	
-	/**
-	 * Toggle the visibility of the coolbar/perspective bar. This method
-	 * respects the window configurer and will only toggle visibility if the
-	 * item in question was originally declared visible by the window advisor.
-	 * 
-	 * @since 3.3
-	 */
-	public void toggleToolbarVisibility() {
-		boolean coolbarVisible = getCoolBarVisible();
-		boolean perspectivebarVisible = getPerspectiveBarVisible();
-		// only toggle the visibility of the components that
-		// were on initially
-		if (getWindowConfigurer().getShowCoolBar()) {
-			setCoolBarVisible(!coolbarVisible);
-		}
-		if (getWindowConfigurer().getShowPerspectiveBar()) {
-			setPerspectiveBarVisible(!perspectivebarVisible);
-		}
-		getShell().layout();
-	}
-
-	/*package*/ void addBackgroundSaveListener(IBackgroundSaveListener listener) {
-		backgroundSaveListeners.add(listener);
-	}
-	
-	/*package*/ void fireBackgroundSaveStarted() {
-		Object[] listeners = backgroundSaveListeners.getListeners();
-		for (int i = 0; i < listeners.length; i++) {
-			IBackgroundSaveListener listener = (IBackgroundSaveListener) listeners[i];
-			listener.handleBackgroundSaveStarted();
-		}
-	}
-
-	/*package*/ void removeBackgroundSaveListener(IBackgroundSaveListener listener) {
-		backgroundSaveListeners.remove(listener);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
deleted file mode 100644
index 9ed33c4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowConfigurer.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.CoolBarManager;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.TextProcessor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.application.IActionBarConfigurer;
-import org.eclipse.ui.application.IWorkbenchConfigurer;
-import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-import org.eclipse.ui.internal.provisional.application.IActionBarConfigurer2;
-import org.eclipse.ui.internal.provisional.presentations.IActionBarPresentationFactory;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.WorkbenchPresentationFactory;
-
-/**
- * Internal class providing special access for configuring workbench windows.
- * <p>
- * Note that these objects are only available to the main application
- * (the plug-in that creates and owns the workbench).
- * </p>
- * <p>
- * This class is not intended to be instantiated or subclassed by clients.
- * </p>
- * 
- * @since 3.0
- */
-public final class WorkbenchWindowConfigurer implements
-        IWorkbenchWindowConfigurer {
-
-    /**
-     * The workbench window associated with this configurer.
-     */
-    private WorkbenchWindow window;
-
-    /**
-     * The shell style bits to use when the window's shell is being created.
-     */
-    private int shellStyle = SWT.SHELL_TRIM | Window.getDefaultOrientation();
-
-    /**
-     * The window title to set when the window's shell has been created.
-     */
-    private String windowTitle;
-
-    /**
-     * Whether the workbench window should show the fast view bars.
-     */
-    private boolean showFastViewBars = false;
-
-    /**
-     * Whether the workbench window should show the perspective bar
-     */
-    private boolean showPerspectiveBar = false;
-
-    /**
-     * Whether the workbench window should show the status line.
-     */
-    private boolean showStatusLine = true;
-
-    /**
-     * Whether the workbench window should show the main tool bar.
-     */
-    private boolean showToolBar = true;
-
-    /**
-     * Whether the workbench window should show the main menu bar.
-     */
-    private boolean showMenuBar = true;
-
-    /**
-     * Whether the workbench window should have a progress indicator.
-     */
-    private boolean showProgressIndicator = false;
-
-    /**
-     * Table to hold arbitrary key-data settings (key type: <code>String</code>,
-     * value type: <code>Object</code>).
-     * @see #setData
-     */
-    private Map extraData = new HashMap(1);
-
-    /**
-     * Holds the list drag and drop <code>Transfer</code> for the
-     * editor area
-     */
-    private ArrayList transferTypes = new ArrayList(3);
-
-    /**
-     * The <code>DropTargetListener</code> implementation for handling a
-     * drop into the editor area.
-     */
-    private DropTargetListener dropTargetListener = null;
-
-    /**
-     * Object for configuring this workbench window's action bars. 
-     * Lazily initialized to an instance unique to this window.
-     */
-    private WindowActionBarConfigurer actionBarConfigurer = null;
-
-    /**
-     * The initial size to use for the shell.
-     */
-    private Point initialSize = new Point(1024, 768);
-
-    /**
-     * The presentation factory.  Lazily initialized in getPresentationFactory
-     * if not already assigned in setPresentationFactory.
-     */
-    private AbstractPresentationFactory presentationFactory = null;
-
-    /**
-     * Action bar configurer that changes this workbench window.
-     * This implementation keeps track of of cool bar items
-     */
-    class WindowActionBarConfigurer implements IActionBarConfigurer2 {
-
-        private IActionBarConfigurer2 proxy;
-        
-        /**
-         * Sets the proxy to use, or <code>null</code> for none.
-         * 
-         * @param proxy the proxy
-         */
-        public void setProxy(IActionBarConfigurer2 proxy) {
-            this.proxy = proxy;
-        }
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer#getWindowConfigurer()
-         */
-        public IWorkbenchWindowConfigurer getWindowConfigurer() {
-            return window.getWindowConfigurer();
-        }
-        
-        /**
-         * Returns whether the given id is for a cool item.
-         * 
-         * @param the item id
-         * @return <code>true</code> if it is a cool item,
-         * and <code>false</code> otherwise
-         */
-        /* package */boolean containsCoolItem(String id) {
-            ICoolBarManager cbManager = getCoolBarManager();
-            if (cbManager == null) {
-				return false;
-			}
-            IContributionItem cbItem = cbManager.find(id);
-            if (cbItem == null) {
-				return false;
-			}
-            //@ issue: maybe we should check if cbItem is visible?
-            return true;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer
-         */
-        public IStatusLineManager getStatusLineManager() {
-            if (proxy != null) {
-                return proxy.getStatusLineManager();
-            }
-            return window.getStatusLineManager();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer
-         */
-        public IMenuManager getMenuManager() {
-            if (proxy != null) {
-                return proxy.getMenuManager();
-            }
-            return window.getMenuManager();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.AbstractActionBarConfigurer
-         */
-        public ICoolBarManager getCoolBarManager() {
-            if (proxy != null) {
-                return proxy.getCoolBarManager();
-            }
-            return window.getCoolBarManager2();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer
-         */
-        public void registerGlobalAction(IAction action) {
-            if (proxy != null) {
-                proxy.registerGlobalAction(action);
-            }
-            window.registerGlobalAction(action);
-        }
-
-		private IActionBarPresentationFactory getActionBarPresentationFactory() {
-			WorkbenchWindow window = (WorkbenchWindow)getWindowConfigurer().getWindow();
-			return window.getActionBarPresentationFactory();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.application.IActionBarConfigurer#createToolBarManager()
-		 */
-		public IToolBarManager createToolBarManager() {
-			if (proxy != null) {
-				return proxy.createToolBarManager();
-			}
-			return getActionBarPresentationFactory().createToolBarManager();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.application.IActionBarConfigurer#createToolBarContributionItem(org.eclipse.jface.action.IToolBarManager, java.lang.String)
-		 */
-		public IToolBarContributionItem createToolBarContributionItem(IToolBarManager toolBarManager, String id) {
-			if (proxy != null) {
-				return proxy.createToolBarContributionItem(toolBarManager, id);
-			}
-			return getActionBarPresentationFactory().createToolBarContributionItem(toolBarManager, id);
-		}
-    }
-
-    /**
-     * Creates a new workbench window configurer.
-     * <p>
-     * This method is declared package-private. Clients obtain instances
-     * via {@link WorkbenchAdvisor#getWindowConfigurer 
-     * WorkbenchAdvisor.getWindowConfigurer}
-     * </p>
-     * 
-     * @param window the workbench window that this object configures
-     * @see WorkbenchAdvisor#getWindowConfigurer
-     */
-    WorkbenchWindowConfigurer(WorkbenchWindow window) {
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.window = window;
-        windowTitle = WorkbenchPlugin.getDefault().getProductName();
-        if (windowTitle == null) {
-            windowTitle = ""; //$NON-NLS-1$
-        }
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getWindow
-     */
-    public IWorkbenchWindow getWindow() {
-        return window;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getWorkbenchConfigurer()
-     */
-    public IWorkbenchConfigurer getWorkbenchConfigurer() {
-        return Workbench.getInstance().getWorkbenchConfigurer();
-    }
-
-    /**
-     * Returns the title as set by <code>setTitle</code>, without consulting the shell.
-     * 
-     * @return the window title as set, or <code>null</code> if not set
-     */
-    /* package */String basicGetTitle() {
-        return windowTitle;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getTitle
-     */
-    public String getTitle() {
-        Shell shell = window.getShell();
-        if (shell != null) {
-            // update the cached title
-            windowTitle = shell.getText();
-        }
-        return windowTitle;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#setTitle
-     */
-    public void setTitle(String title) {
-        if (title == null) {
-            throw new IllegalArgumentException();
-        }
-        windowTitle = title;
-        Shell shell = window.getShell();
-        if (shell != null && !shell.isDisposed()) {
-            shell.setText(TextProcessor.process(title, WorkbenchWindow.TEXT_DELIMITERS));
-        }
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getShowMenuBar
-     */
-    public boolean getShowMenuBar() {
-        return showMenuBar;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#setShowMenuBar
-     */
-    public void setShowMenuBar(boolean show) {
-        showMenuBar = show;
-        WorkbenchWindow win = (WorkbenchWindow) getWindow();
-        Shell shell = win.getShell();
-        if (shell != null) {
-            boolean showing = shell.getMenuBar() != null;
-            if (show != showing) {
-                if (show) {
-                    shell.setMenuBar(win.getMenuBarManager().getMenu());
-                } else {
-                    shell.setMenuBar(null);
-                }
-            }
-        }
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getShowToolBar
-     */
-    public boolean getShowCoolBar() {
-        return showToolBar;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setShowCoolBar(boolean show) {
-        showToolBar = show;
-        window.setCoolBarVisible(show);
-        // @issue need to be able to reconfigure after window's controls created
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public boolean getShowFastViewBars() {
-        return showFastViewBars;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setShowFastViewBars(boolean show) {
-        showFastViewBars = show;
-        window.setFastViewBarVisible(show);
-        // @issue need to be able to reconfigure after window's controls created
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public boolean getShowPerspectiveBar() {
-        return showPerspectiveBar;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setShowPerspectiveBar(boolean show) {
-        showPerspectiveBar = show;
-        window.setPerspectiveBarVisible(show);
-        // @issue need to be able to reconfigure after window's controls created
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getShowStatusLine
-     */
-    public boolean getShowStatusLine() {
-        return showStatusLine;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#setShowStatusLine
-     */
-    public void setShowStatusLine(boolean show) {
-        showStatusLine = show;
-        window.setStatusLineVisible(show);
-        // @issue need to be able to reconfigure after window's controls created
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public boolean getShowProgressIndicator() {
-        return showProgressIndicator;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setShowProgressIndicator(boolean show) {
-        showProgressIndicator = show;
-        // @issue need to be able to reconfigure after window's controls created
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#getData
-     */
-    public Object getData(String key) {
-        if (key == null) {
-            throw new IllegalArgumentException();
-        }
-        return extraData.get(key);
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#setData
-     */
-    public void setData(String key, Object data) {
-        if (key == null) {
-            throw new IllegalArgumentException();
-        }
-        if (data != null) {
-            extraData.put(key, data);
-        } else {
-            extraData.remove(key);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#addEditorAreaTransfer
-     */
-    public void addEditorAreaTransfer(Transfer tranfer) {
-        if (tranfer != null && !transferTypes.contains(tranfer)) {
-            transferTypes.add(tranfer);
-            Transfer[] transfers = new Transfer[transferTypes.size()];
-            transferTypes.toArray(transfers);
-            IWorkbenchPage[] pages = window.getPages();
-            for (int i = 0; i < pages.length; i++) {
-                WorkbenchPage page = (WorkbenchPage) pages[i];
-                DropTarget dropTarget = ((EditorSashContainer) page
-                        .getEditorPresentation().getLayoutPart())
-                        .getDropTarget();
-                if (dropTarget != null) {
-                    dropTarget.setTransfer(transfers);
-                }
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void configureEditorAreaDropListener(
-            DropTargetListener dropTargetListener) {
-        if (dropTargetListener != null) {
-            this.dropTargetListener = dropTargetListener;
-            IWorkbenchPage[] pages = window.getPages();
-            for (int i = 0; i < pages.length; i++) {
-                WorkbenchPage page = (WorkbenchPage) pages[i];
-                DropTarget dropTarget = ((EditorSashContainer) page
-                        .getEditorPresentation().getLayoutPart())
-                        .getDropTarget();
-                if (dropTarget != null) {
-                    dropTarget.addDropListener(this.dropTargetListener);
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns the array of <code>Transfer</code> added by the application
-     */
-    /* package */Transfer[] getTransfers() {
-        Transfer[] transfers = new Transfer[transferTypes.size()];
-        transferTypes.toArray(transfers);
-        return transfers;
-    }
-
-    /**
-     * Returns the drop listener provided by the application.
-     */
-    /* package */DropTargetListener getDropTargetListener() {
-        return dropTargetListener;
-    }
-
-    /* (non-javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public IActionBarConfigurer getActionBarConfigurer() {
-        if (actionBarConfigurer == null) {
-            // lazily initialize
-            actionBarConfigurer = new WindowActionBarConfigurer();
-        }
-        return actionBarConfigurer;
-    }
-
-    /**
-     * Returns whether the given id is for a cool item.
-     * 
-     * @param the item id
-     * @return <code>true</code> if it is a cool item,
-     * and <code>false</code> otherwise
-     */
-    /* package */boolean containsCoolItem(String id) {
-        // trigger lazy initialization
-        getActionBarConfigurer();
-        return actionBarConfigurer.containsCoolItem(id);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public int getShellStyle() {
-        return shellStyle;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setShellStyle(int shellStyle) {
-        this.shellStyle = shellStyle;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public Point getInitialSize() {
-        return initialSize;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setInitialSize(Point size) {
-        initialSize = size;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public AbstractPresentationFactory getPresentationFactory() {
-        if (presentationFactory == null) {
-            presentationFactory = createDefaultPresentationFactory();
-        }
-        return presentationFactory;
-    }
-
-    /**
-     * Creates the default presentation factory by looking up the presentation
-     * factory extension with the id specified by the presentation factory preference.
-     * If the preference is null or if no matching extension is found, a
-     * factory default presentation factory is used.
-     */
-    private AbstractPresentationFactory createDefaultPresentationFactory() {
-        final String factoryId = ((Workbench) window.getWorkbench())
-                .getPresentationId();
-
-        if (factoryId != null && factoryId.length() > 0) {
-            final AbstractPresentationFactory [] factory = new AbstractPresentationFactory[1];
-            StartupThreading.runWithoutExceptions(new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					factory[0] = WorkbenchPlugin.getDefault()
-							.getPresentationFactory(factoryId);
-				}
-			});
-            
-            if (factory[0] != null) {
-                return factory[0];
-            }
-        }
-        // presentation ID must be a bogus value, reset it to the default
-        PrefUtil.getAPIPreferenceStore().setValue(
-				IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID,
-				IWorkbenchConstants.DEFAULT_PRESENTATION_ID);
-        return new WorkbenchPresentationFactory();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public void setPresentationFactory(AbstractPresentationFactory factory) {
-        if (factory == null) {
-            throw new IllegalArgumentException();
-        }
-        presentationFactory = factory;
-    }
-
-    /**
-     * Creates the default window contents.
-     * 
-     * @param shell the shell
-     */
-    public void createDefaultContents(Shell shell) {
-        window.createDefaultContents(shell);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public Menu createMenuBar() {
-        return window.getMenuManager().createMenuBar(window.getShell());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public Control createCoolBarControl(Composite parent) {
-    	ICoolBarManager coolBarManager = window.getCoolBarManager2();
-    	if (coolBarManager != null) {
-        	if (coolBarManager instanceof ICoolBarManager2) {
-				return ((ICoolBarManager2) coolBarManager).createControl2(parent);
-			}
-        	if (coolBarManager instanceof CoolBarManager) {
-				return ((CoolBarManager) coolBarManager).createControl(parent);
-			}
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public Control createStatusLineControl(Composite parent) {
-        return window.getStatusLineManager().createControl(parent);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer
-     */
-    public Control createPageComposite(Composite parent) {
-        return window.createPageComposite(parent);
-    }
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.application.IWorkbenchWindowConfigurer#saveState(org.eclipse.ui.IMemento)
-	 */
-	public IStatus saveState(IMemento memento) {
-		return window.saveState(memento);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowPropertyTester.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowPropertyTester.java
deleted file mode 100644
index 990dfbd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindowPropertyTester.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.expressions.PropertyTester;
-
-/**
- * Tests various workbench window properties.
- * 
- * @since 3.3
- * 
- */
-public class WorkbenchWindowPropertyTester extends PropertyTester {
-
-	private static final String PROPERTY_IS_COOLBAR_VISIBLE = "isCoolbarVisible"; //$NON-NLS-1$
-	private static final String PROPERTY_IS_PERSPECTIVEBAR_VISIBLE = "isPerspectiveBarVisible"; //$NON-NLS-1$
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object,
-	 *      java.lang.String, java.lang.Object[], java.lang.Object)
-	 */
-	public boolean test(Object receiver, String property, Object[] args,
-			Object expectedValue) {
-		
-		if (args.length == 0 && receiver instanceof WorkbenchWindow) {
-			boolean defaultExpectedValue = true;
-			if (expectedValue != null) {
-				if (expectedValue instanceof Boolean)
-					defaultExpectedValue = ((Boolean) expectedValue).booleanValue();
-				else
-					return false; // cant work with anything else
-			}
-			final WorkbenchWindow window = (WorkbenchWindow) receiver;
-			if (PROPERTY_IS_COOLBAR_VISIBLE.equals(property)) {
-				return defaultExpectedValue == window.getCoolBarVisible();
-			} else if (PROPERTY_IS_PERSPECTIVEBAR_VISIBLE.equals(property)) {
-				return defaultExpectedValue == window.getPerspectiveBarVisible();
-			}
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbookEditorsHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbookEditorsHandler.java
deleted file mode 100644
index 7b9cf56..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbookEditorsHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Shows a list of open editors in the current or last active workbook.
- * 
- * @since 3.4
- * 
- */
-public class WorkbookEditorsHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow workbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (workbenchWindow == null) {
-			// action has been disposed
-			return null;
-		}
-		IWorkbenchPage page = workbenchWindow.getActivePage();
-		if (page != null) {
-			WorkbenchPage wbp = (WorkbenchPage) page;
-			EditorAreaHelper eah = wbp.getEditorPresentation();
-			if (eah != null) {
-				eah.displayEditorList();
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSet.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSet.java
deleted file mode 100644
index 5082b18..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSet.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.registry.WorkingSetDescriptor;
-import org.eclipse.ui.internal.registry.WorkingSetRegistry;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * A working set holds a number of IAdaptable elements. A working set is
- * intended to group elements for presentation to the user or for operations on
- * a set of elements.
- * 
- * @see org.eclipse.ui.IWorkingSet
- * @since 2.0
- */
-public class WorkingSet extends AbstractWorkingSet {
-	private static final String DEFAULT_ID = "org.eclipse.ui.resourceWorkingSetPage"; //$NON-NLS-1$
-	
-	private String editPageId;
-
-	/**
-	 * Creates a new working set.
-	 * 
-	 * @param name
-	 *            the name of the new working set. Should not have leading or
-	 *            trailing whitespace.
-	 * @param uniqueId
-	 *            the unique id
-	 * @param element
-	 *            the content of the new working set. May be empty but not
-	 *            <code>null</code>.
-	 */
-	public WorkingSet(String name, String uniqueId, IAdaptable[] elements) {
-		super(name, uniqueId);
-		internalSetElements(elements);
-	}
-
-	/**
-	 * Creates a new working set from a memento.
-	 * 
-	 * @param name
-	 *            the name of the new working set. Should not have leading or
-	 *            trailing whitespace.
-	 * @param memento
-	 *            persistence memento containing the elements of the working
-	 *            set.
-	 */
-	protected WorkingSet(String name, String label, IMemento memento) {
-		super(name, label);
-		workingSetMemento = memento;
-	}
-
-	/**
-	 * Tests the receiver and the object for equality
-	 * 
-	 * @param object
-	 *            object to compare the receiver to
-	 * @return true=the object equals the receiver, the name is the same. false
-	 *         otherwise
-	 */
-	public boolean equals(Object object) {
-		if (this == object) {
-			return true;
-		}
-		if (object instanceof WorkingSet) {
-			WorkingSet workingSet = (WorkingSet) object;
-			return Util.equals(workingSet.getName(), getName())
-					&& Util.equals(workingSet.getElementsArray(),
-							getElementsArray())
-					&& Util.equals(workingSet.getId(), getId());
-		}
-		return false;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public boolean isEditable() {
-		WorkingSetDescriptor descriptor = getDescriptor(null);
-		return descriptor != null && descriptor.isEditable();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSet
-	 */
-	public String getId() {
-		return editPageId;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSet#getImageDescriptor()
-	 */
-	public ImageDescriptor getImageDescriptor() {
-		WorkingSetDescriptor descriptor = getDescriptor(DEFAULT_ID);
-		if (descriptor == null) {
-			return null;
-		}
-		return descriptor.getIcon();
-	}
-
-	/**
-	 * Returns the hash code.
-	 * 
-	 * @return the hash code.
-	 */
-	public int hashCode() {
-		int hashCode = getName().hashCode();
-
-		if (editPageId != null) {
-			hashCode &= editPageId.hashCode();
-		}
-		return hashCode;
-	}
-
-	/**
-	 * Recreates the working set elements from the persistence memento.
-	 */
-	void restoreWorkingSet() {
-		IMemento[] itemMementos = workingSetMemento
-				.getChildren(IWorkbenchConstants.TAG_ITEM);
-		final Set items = new HashSet();
-		for (int i = 0; i < itemMementos.length; i++) {
-			final IMemento itemMemento = itemMementos[i];
-			final String factoryID = itemMemento
-					.getString(IWorkbenchConstants.TAG_FACTORY_ID);
-
-			if (factoryID == null) {
-				WorkbenchPlugin
-						.log("Unable to restore working set item - no factory ID."); //$NON-NLS-1$
-				continue;
-			}
-			final IElementFactory factory = PlatformUI.getWorkbench()
-					.getElementFactory(factoryID);
-			if (factory == null) {
-				WorkbenchPlugin
-						.log("Unable to restore working set item - cannot instantiate factory: " + factoryID); //$NON-NLS-1$
-				continue;
-			}
-			SafeRunner
-					.run(new SafeRunnable(
-							"Unable to restore working set item - exception while invoking factory: " + factoryID) { //$NON-NLS-1$
-
-						public void run() throws Exception {
-							IAdaptable item = factory
-									.createElement(itemMemento);
-							if (item == null) {
-								if (Policy.DEBUG_WORKING_SETS)
-									WorkbenchPlugin
-											.log("Unable to restore working set item - cannot instantiate item: " + factoryID); //$NON-NLS-1$
-
-							} else
-								items.add(item);
-						}
-					});
-		}
-		internalSetElements((IAdaptable[]) items.toArray(new IAdaptable[items
-				.size()]));
-	}
-
-	/**
-	 * Implements IPersistableElement. Persist the working set name and working
-	 * set contents. The contents has to be either IPersistableElements or
-	 * provide adapters for it to be persistent.
-	 * 
-	 * @see org.eclipse.ui.IPersistableElement#saveState(IMemento)
-	 */
-	public void saveState(IMemento memento) {
-		if (workingSetMemento != null) {
-			// just re-save the previous memento if the working set has
-			// not been restored
-			memento.putMemento(workingSetMemento);
-		} else {
-			memento.putString(IWorkbenchConstants.TAG_NAME, getName());
-			memento.putString(IWorkbenchConstants.TAG_LABEL, getLabel());
-			memento.putString(IWorkbenchConstants.TAG_EDIT_PAGE_ID, editPageId);
-			Iterator iterator = elements.iterator();
-			while (iterator.hasNext()) {
-				IAdaptable adaptable = (IAdaptable) iterator.next();
-				final IPersistableElement persistable = (IPersistableElement) Util
-						.getAdapter(adaptable, IPersistableElement.class);
-				if (persistable != null) {
-					final IMemento itemMemento = memento
-							.createChild(IWorkbenchConstants.TAG_ITEM);
-
-					itemMemento.putString(IWorkbenchConstants.TAG_FACTORY_ID,
-							persistable.getFactoryId());
-					SafeRunner
-							.run(new SafeRunnable(
-									"Problems occurred while saving persistable item state") { //$NON-NLS-1$
-
-								public void run() throws Exception {
-									persistable.saveState(itemMemento);
-								}
-							});
-				}
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSet
-	 */
-	public void setElements(IAdaptable[] newElements) {
-		internalSetElements(newElements);
-		fireWorkingSetChanged(
-				IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE, null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSet
-	 */
-	public void setId(String pageId) {
-		editPageId = pageId;
-	}
-
-	public boolean isVisible() {
-		return true;
-	}
-
-	public boolean isSelfUpdating() {
-		WorkingSetDescriptor descriptor = getDescriptor(null);
-		return descriptor != null && descriptor.getUpdaterClassName() != null;
-	}
-
-	public boolean isAggregateWorkingSet() {
-		return false;
-	}
-
-	/**
-	 * Return the working set descriptor for this working set.
-	 * 
-	 * @param defaultId
-	 *            the default working set type ID to use if this set has no
-	 *            defined type
-	 * @return the descriptor for this working set or <code>null</code> if it
-	 *         cannot be determined
-	 * @since 3.3
-	 */
-	private WorkingSetDescriptor getDescriptor(String defaultId) {
-		WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
-				.getWorkingSetRegistry();
-		String id = getId();
-		if (id == null)
-			id = defaultId;
-		if (id == null)
-			return null;
-
-		return registry.getWorkingSetDescriptor(id);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSet#adaptElements(org.eclipse.core.runtime.IAdaptable[])
-	 */
-	public IAdaptable[] adaptElements(IAdaptable[] objects) {
-		IWorkingSetManager manager = getManager();
-		if (manager instanceof WorkingSetManager) {
-			WorkingSetDescriptor descriptor = getDescriptor(null);
-			if (descriptor == null || !descriptor.isElementAdapterClassLoaded()) 
-				return objects;
-			return ((WorkingSetManager) manager).getElementAdapter(
-						descriptor).adaptElements(this, objects);
-		}
-		return objects;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetComparator.java
deleted file mode 100644
index 2b0152d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetComparator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import com.ibm.icu.text.Collator;
-import java.util.Comparator;
-
-import org.eclipse.ui.IWorkingSet;
-
-/**
- * Compares two working sets by name.
- */
-public class WorkingSetComparator implements Comparator {
-	
-	/**
-	 * Static instance of this class.
-	 * @since 3.2
-	 */
-	public static WorkingSetComparator INSTANCE = new WorkingSetComparator();
-	
-    private Collator fCollator = Collator.getInstance();
-
-    /**
-     * Implements Comparator.
-     * 
-     * @see Comparator#compare(Object, Object)
-     */
-    public int compare(Object o1, Object o2) {
-		String name1 = null;
-		String name2 = null;
-
-		if (o1 instanceof IWorkingSet) {
-			name1 = ((IWorkingSet) o1).getLabel();
-		}
-
-		if (o2 instanceof IWorkingSet) {
-			name2 = ((IWorkingSet) o2).getLabel();
-		}
-
-		int result = fCollator.compare(name1, name2);
-		if (result == 0) { // okay, same name - now try the unique id
-
-			if (o1 instanceof IWorkingSet) {
-				name1 = ((IWorkingSet) o1).getName();
-			}
-
-			if (o2 instanceof IWorkingSet) {
-				name2 = ((IWorkingSet) o2).getName();
-			}
-			result = name1.compareTo(name2);
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetFactory.java
deleted file mode 100644
index a311c39..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IMemento;
-
-/**
- * A WorkingSetFactory is used to recreate a persisted WorkingSet 
- * object.
- */
-public class WorkingSetFactory implements IElementFactory {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IElementFactory
-     */
-    public IAdaptable createElement(IMemento memento) {
-        String workingSetName = memento.getString(IWorkbenchConstants.TAG_NAME);
-        String label = memento.getString(IWorkbenchConstants.TAG_LABEL);
-        if (label == null) {
-			label = workingSetName;
-		}
-        String workingSetEditPageId = memento
-                .getString(IWorkbenchConstants.TAG_EDIT_PAGE_ID);
-        String aggregateString = memento
-				.getString(AbstractWorkingSet.TAG_AGGREGATE);
-		boolean isAggregate = aggregateString != null
-				&& Boolean.valueOf(aggregateString).booleanValue();
-
-		if (workingSetName == null) {
-			return null;
-		}
-
-        AbstractWorkingSet workingSet = null;
-        
-        if (isAggregate) {
-			workingSet = new AggregateWorkingSet(workingSetName, label, memento);
-		} else {
-			workingSet = new WorkingSet(workingSetName, label, memento);
-		}
-        
-        if (workingSetEditPageId != null) {
-            workingSet.setId(workingSetEditPageId);
-        } else if (!isAggregate) {
-            // working sets created with builds 20020418 and 20020419 will not
-            // have an edit page id. fix this automatically.
-            workingSet.setId("org.eclipse.ui.resourceWorkingSetPage"); //$NON-NLS-1$
-        }
-        return workingSet;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java
deleted file mode 100644
index 355a832..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetManager.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleListener;
-
-/**
- * A working set manager stores working sets and provides property change
- * notification when a working set is added or removed. Working sets are
- * persisted whenever one is added or removed.
- * 
- * @see IWorkingSetManager
- * @since 2.0
- */
-public class WorkingSetManager extends AbstractWorkingSetManager implements
-		IWorkingSetManager, BundleListener {
-
-	// Working set persistence
-	public static final String WORKING_SET_STATE_FILENAME = "workingsets.xml"; //$NON-NLS-1$
-
-	public WorkingSetManager(BundleContext context) {
-		super(context);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetManager
-	 */
-	public void addRecentWorkingSet(IWorkingSet workingSet) {
-		internalAddRecentWorkingSet(workingSet);
-		saveState();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetManager
-	 */
-	public void addWorkingSet(IWorkingSet workingSet) {
-		super.addWorkingSet(workingSet);
-		saveState();
-	}
-
-	/**
-	 * Returns the file used as the persistence store, or <code>null</code> if
-	 * there is no available file.
-	 * 
-	 * @return the file used as the persistence store, or <code>null</code>
-	 */
-	private File getWorkingSetStateFile() {
-		IPath path = WorkbenchPlugin.getDefault().getDataLocation();
-		if (path == null) {
-			return null;
-		}
-		path = path.append(WORKING_SET_STATE_FILENAME);
-		return path.toFile();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkingSetManager
-	 */
-	public void removeWorkingSet(IWorkingSet workingSet) {
-		if (internalRemoveWorkingSet(workingSet)) {
-			saveState();
-		}
-	}
-
-	/**
-	 * Reads the persistence store and creates the working sets stored in it.
-	 */
-	public void restoreState() {
-		File stateFile = getWorkingSetStateFile();
-
-		if (stateFile != null && stateFile.exists()) {
-			try {
-				FileInputStream input = new FileInputStream(stateFile);
-				BufferedReader reader = new BufferedReader(
-						new InputStreamReader(input, "utf-8")); //$NON-NLS-1$
-
-				IMemento memento = XMLMemento.createReadRoot(reader);
-				restoreWorkingSetState(memento);
-				restoreMruList(memento);
-				reader.close();
-			} catch (IOException e) {
-				MessageDialog
-						.openError(
-								(Shell) null,
-								WorkbenchMessages.ProblemRestoringWorkingSetState_title,
-								WorkbenchMessages.ProblemRestoringWorkingSetState_message);
-			} catch (WorkbenchException e) {
-				ErrorDialog
-						.openError(
-								(Shell) null,
-								WorkbenchMessages.ProblemRestoringWorkingSetState_title,
-								WorkbenchMessages.ProblemRestoringWorkingSetState_message,
-								e.getStatus());
-			}
-		}
-	}
-
-	/**
-	 * Saves the working sets in the persistence store
-	 */
-	private void saveState() {
-
-		File stateFile = getWorkingSetStateFile();
-		if (stateFile == null) {
-			return;
-		}
-		try {
-			saveState(stateFile);
-		} catch (IOException e) {
-			stateFile.delete();
-			MessageDialog.openError((Shell) null,
-					WorkbenchMessages.ProblemSavingWorkingSetState_title,
-					WorkbenchMessages.ProblemSavingWorkingSetState_message);
-		}
-	}
-
-	/**
-	 * Persists all working sets and fires a property change event for the
-	 * changed working set. Should only be called by
-	 * org.eclipse.ui.internal.WorkingSet.
-	 * 
-	 * @param changedWorkingSet
-	 *            the working set that has changed
-	 * @param propertyChangeId
-	 *            the changed property. one of CHANGE_WORKING_SET_CONTENT_CHANGE
-	 *            and CHANGE_WORKING_SET_NAME_CHANGE
-	 */
-	public void workingSetChanged(IWorkingSet changedWorkingSet,
-			String propertyChangeId, Object oldValue) {
-		saveState();
-		super.workingSetChanged(changedWorkingSet, propertyChangeId, oldValue);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java
deleted file mode 100644
index ddb2255..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkingSetMenuContributionItem.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * Menu contribution item which shows a working set.
- * 
- * @since 2.1
- */
-public class WorkingSetMenuContributionItem extends ContributionItem {
-    private Image image;
-    
-    private int id;
-
-    private IWorkingSet workingSet;
-
-    private WorkingSetFilterActionGroup actionGroup;
-
-    /**
-     * Returns the id of this menu contribution item
-     * 
-     * @param id numerical id
-     * @return String string id
-     */
-    public static String getId(int id) {
-        return WorkingSetMenuContributionItem.class.getName() + "." + id; //$NON-NLS-1$
-    }
-
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @param id sequential id of the new instance
-     * @param actionGroup the action group this contribution item is created in
-     */
-    public WorkingSetMenuContributionItem(int id,
-            WorkingSetFilterActionGroup actionGroup, IWorkingSet workingSet) {
-        super(getId(id));
-        Assert.isNotNull(actionGroup);
-        Assert.isNotNull(workingSet);
-        this.id = id;
-        this.actionGroup = actionGroup;
-        this.workingSet = workingSet;
-    }
-
-    /**
-     * Adds a menu item for the working set.
-     * Overrides method from ContributionItem.
-     * 
-     * @see org.eclipse.jface.action.ContributionItem#fill(Menu,int)
-     */
-    public void fill(Menu menu, int index) {
-        MenuItem mi = new MenuItem(menu, SWT.RADIO, index);
-        mi.setText("&" + id + " " + workingSet.getLabel()); //$NON-NLS-1$  //$NON-NLS-2$
-        mi.setSelection(workingSet.equals(actionGroup.getWorkingSet()));
-        mi.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                IWorkingSetManager manager = PlatformUI.getWorkbench()
-                        .getWorkingSetManager();
-                actionGroup.setWorkingSet(workingSet);
-                manager.addRecentWorkingSet(workingSet);
-            }
-        });
-        if (image == null) {
-			ImageDescriptor imageDescriptor = workingSet.getImageDescriptor();
-			if (imageDescriptor != null)
-				image = imageDescriptor.createImage();
-		}
-		mi.setImage(image);
-    }
-
-    /**
-     * Overridden to always return true and force dynamic menu building.
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-
-	/*
-	 * @see org.eclipse.jface.action.ContributionItem#dispose()
-	 * @since 3.3
-	 */
-	public void dispose() {
-		if (image != null && !image.isDisposed())
-			image.dispose();
-		image = null;
-
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutAction.java
deleted file mode 100644
index 944f701..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutAction.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.Action;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.dialogs.AboutDialog;
-
-/**
- * Creates an About dialog and opens it.
- */
-public class AboutAction extends Action implements
-        ActionFactory.IWorkbenchAction {
-
-    /**
-     * The workbench window; or <code>null</code> if this action has been
-     * <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Creates a new <code>AboutAction</code>.
-     * 
-     * @param window the window
-     */
-    public AboutAction(IWorkbenchWindow window) {
-        if (window == null) {
-			throw new IllegalArgumentException();
-		}
-
-        this.workbenchWindow = window;
-
-        // use message with no fill-in
-        IProduct product = Platform.getProduct();
-        String productName = null;
-        if (product != null) {
-			productName = product.getName();
-		}
-        if (productName == null) {
-			productName = ""; //$NON-NLS-1$
-		}
-        setText(NLS.bind(WorkbenchMessages.AboutAction_text,productName)); 
-        setToolTipText(NLS.bind(WorkbenchMessages.AboutAction_toolTip, productName));
-        setId("about"); //$NON-NLS-1$
-        setActionDefinitionId("org.eclipse.ui.help.aboutAction"); //$NON-NLS-1$
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.ABOUT_ACTION);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IAction.
-     */
-    public void run() {
-        // make sure action is not disposed
-        if (workbenchWindow != null) {
-			new AboutDialog(workbenchWindow.getShell()).open();
-		}
-    }
-
-    /*
-     * (non-Javadoc) Method declared on ActionFactory.IWorkbenchAction.
-     */
-    public void dispose() {
-        workbenchWindow = null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java
deleted file mode 100644
index 55db469..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleData.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.eclipse.osgi.signedcontent.SignedContentFactory;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceReference;
-
-
-
-/**
- * A small class to manage the about dialog information for a single bundle.
- * @since 3.0
- */
-public class AboutBundleData extends AboutData {
-    
-	private Bundle bundle;
-	
-    private boolean isSignedDetermined = false;	
-
-	private boolean isSigned;
-    
-    public AboutBundleData(Bundle bundle) {
-        super(getResourceString(bundle, Constants.BUNDLE_VENDOR),
-                getResourceString(bundle, Constants.BUNDLE_NAME),
-                getResourceString(bundle, Constants.BUNDLE_VERSION), bundle
-                        .getSymbolicName());
-        
-        this.bundle = bundle;
-        
-    }
-
-    public int getState() {
-        return bundle.getState();
-    }
-
-    /**
-     * Return a string representation of the arugment state. Does not return
-     * null.
-     */
-    public String getStateName() {
-        switch (getState()) {
-        case Bundle.INSTALLED:
-            return WorkbenchMessages.AboutPluginsDialog_state_installed;
-        case Bundle.RESOLVED:
-            return WorkbenchMessages.AboutPluginsDialog_state_resolved;
-        case Bundle.STARTING:
-            return WorkbenchMessages.AboutPluginsDialog_state_starting;
-        case Bundle.STOPPING:
-            return WorkbenchMessages.AboutPluginsDialog_state_stopping; 
-        case Bundle.UNINSTALLED:
-            return WorkbenchMessages.AboutPluginsDialog_state_uninstalled;
-        case Bundle.ACTIVE:
-            return WorkbenchMessages.AboutPluginsDialog_state_active; 
-        default:
-            return WorkbenchMessages.AboutPluginsDialog_state_unknown; 
-        }
-    }
-
-    /**
-     * A function to translate the resource tags that may be embedded in a
-     * string associated with some bundle.
-     * 
-     * @param headerName
-     *            the used to retrieve the correct string
-     * @return the string or null if the string cannot be found
-     */
-    private static String getResourceString(Bundle bundle, String headerName) {
-        String value = (String) bundle.getHeaders().get(headerName);
-        return value == null ? null : Platform.getResourceString(bundle, value);
-    }
-    
-    public boolean isSignedDetermined() {
-    	return isSignedDetermined;
-    }
-    
-    public boolean isSigned() throws IllegalStateException {
-
-		if (isSignedDetermined)
-			return isSigned;
-
-		BundleContext bundleContext = WorkbenchPlugin.getDefault()
-				.getBundleContext();
-		ServiceReference factoryRef = bundleContext
-				.getServiceReference(SignedContentFactory.class.getName());
-		if (factoryRef == null)
-			throw new IllegalStateException();
-		SignedContentFactory contentFactory = (SignedContentFactory) bundleContext
-				.getService(factoryRef);
-		try {
-			SignedContent signedContent = contentFactory.getSignedContent(bundle);
-			isSigned = signedContent != null && signedContent.isSigned();
-			isSignedDetermined = true;
-			return isSigned;
-		} catch (IOException e) {
-			throw (IllegalStateException) new IllegalStateException().initCause(e);
-		} catch (GeneralSecurityException e){
-			throw (IllegalStateException) new IllegalStateException().initCause(e);
-		} finally {
-			bundleContext.ungetService(factoryRef);
-		}
-	}
-
-	/**
-	 * @return
-	 */
-	public Bundle getBundle() {
-		return bundle;
-	}
-    
-// private boolean isBundleSigned(Bundle bundle)
-//    {	
-//    	isSignedDetermined = true;
-//    	
-//    	boolean bRet = false;
-//    	if ( null != bundle.findEntries("META-INF", "*.SF", false) ) { //$NON-NLS-1$//$NON-NLS-2$
-//    		bRet = true;
-//    	}
-//    	return bRet;
-//    	
-//    	
-//    	/*
-//    	 * The below code features implementations that do more.
-//    	 */
-//   
-//    	
-//    /*	String loc = "";
-//    	
-//        StringTokenizer st = new StringTokenizer(this.location,"@");
-//       
-//        try
-//        {
-//        	st.nextToken();
-//        	loc = st.nextToken();
-//        }
-//        catch( NoSuchElementException e )
-//        {
-//        	return "Not a jar file";
-//        }
-//        if(! loc.endsWith(".jar"))
-//       	{
-//        	return "Not a jar file";
-//        }
-//        	
-//        try
-//        {
-//        	String fileLocation = Platform.getInstallLocation().getURL().getFile() + loc;
-//			JarFile jar = new JarFile( fileLocation );
-//				
-//			Enumeration e = jar.entries();
-//			/*ArrayList list = new ArrayList();
-//			byte[] buffer = new byte[8192];
-//			while( e.hasMoreElements())
-//			{
-//				JarEntry currentEntry = (JarEntry)e.nextElement();
-//				list.add(currentEntry);
-//				InputStream is = jar.getInputStream(currentEntry);
-//				while(( is.read(buffer, 0, buffer.length)) != -1 ){
-//					//can't get certificates until you read the whole dang thing.
-//				}
-//			if(is != null ) is.close();
-//			}
-//					
-//					
-//					int checked = 0;
-//					boolean signed =false;
-//					for( int index = 0; index < list.size(); index++ )
-//					{
-//						checked++;
-//						JarEntry je = (JarEntry)list.get(index);
-//						Certificate[] certs = je.getCertificates();
-//						if( certs != null )
-//						{
-//							//Something in this jar is signed by something!!
-//							signed = true;
-//							infoLine[5] = "Signed by "+certs[0].toString();
-//							break;
-//						}
-//						
-//					}
-//					if( !signed )
-//					{
-//						infoLine[5] = "Not signed";
-//					}
-//        		
-//			boolean isSigned = false;
-//        	while( e.hasMoreElements() )
-//        	{
-//        		JarEntry entry = (JarEntry)e.nextElement();
-//        		
-//        		if( entry.getName().matches("[mM][eE][tT][aA][-][iI][nN][fF]/.*[.][sS][fF]"))
-//        		{
-//        			isSigned = true;
-//        			break;
-//        		}
-//        		if( !entry.getName().matches("[mM][eE][tT][aA][-][iI][nN][fF].*"))
-//        		{
-//        			break;
-//        		}
-//        	}
-//        	return isSigned ? "Signed!" : "Not Signed.";
-//
-//		} catch (IOException e) {
-//			return "Couldn't open jar file: " + e.toString();
-//		} */
-//    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleGroupData.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleGroupData.java
deleted file mode 100644
index ddbee65..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutBundleGroupData.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.zip.CRC32;
-import java.util.zip.CheckedInputStream;
-
-import org.eclipse.core.runtime.IBundleGroup;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.branding.IBundleGroupConstants;
-
-/**
- * A small class to manage the information related to IBundleGroup's.
- * @since 3.0
- */
-public class AboutBundleGroupData extends AboutData {
-    private IBundleGroup bundleGroup;
-
-    private URL licenseUrl;
-
-    private URL featureImageUrl;
-
-    private Long featureImageCrc;
-
-    private ImageDescriptor featureImage;
-
-    public AboutBundleGroupData(IBundleGroup bundleGroup) {
-        super(bundleGroup.getProviderName(), bundleGroup.getName(), bundleGroup
-                .getVersion(), bundleGroup.getIdentifier());
-        this.bundleGroup = bundleGroup;
-    }
-
-    public IBundleGroup getBundleGroup() {
-        return bundleGroup;
-    }
-
-    public URL getLicenseUrl() {
-        if (licenseUrl == null) {
-			licenseUrl = getURL(bundleGroup
-                    .getProperty(IBundleGroupConstants.LICENSE_HREF));
-		}
-
-        return licenseUrl;
-    }
-
-    public URL getFeatureImageUrl() {
-        if (featureImageUrl == null) {
-			featureImageUrl = getURL(bundleGroup
-                    .getProperty(IBundleGroupConstants.FEATURE_IMAGE));
-		}
-        return featureImageUrl;
-    }
-
-    public ImageDescriptor getFeatureImage() {
-        if (featureImage == null) {
-			featureImage = getImage(getFeatureImageUrl());
-		}
-        return featureImage;
-    }
-
-    public Long getFeatureImageCrc() {
-        if (featureImageCrc != null) {
-			return featureImageCrc;
-		}
-
-        URL url = getFeatureImageUrl();
-        if (url == null) {
-			return null;
-		}
-
-        // Get the image bytes
-        InputStream in = null;
-        try {
-            CRC32 checksum = new CRC32();
-            in = new CheckedInputStream(url.openStream(), checksum);
-
-            // the contents don't matter, the read just needs a place to go
-            byte[] sink = new byte[1024];
-            while (true) {
-				if (in.read(sink) <= 0) {
-					break;
-				}
-			}
-
-            featureImageCrc = new Long(checksum.getValue());
-            return featureImageCrc;
-
-        } catch (IOException e) {
-            return null;
-        } finally {
-            if (in != null) {
-				try {
-                    in.close();
-                } catch (IOException e) {
-                    // do nothing
-                }
-			}
-        }
-    }
-
-    public String getAboutText() {
-        return bundleGroup.getProperty(IBundleGroupConstants.ABOUT_TEXT);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutData.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutData.java
deleted file mode 100644
index 6ad2903..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutData.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import java.io.IOException;
-import java.net.URL;
-import com.ibm.icu.text.Collator;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * An abstract parent that describes data that can be displayed in a table in one of
- * the about dialogs.
- * @since 3.0 
- */
-public abstract class AboutData {
-    private String providerName;
-
-    private String name;
-
-    private String version;
-
-    private String id;
-
-    private String versionedId = null;
-
-    protected AboutData(String providerName, String name, String version,
-            String id) {
-        this.providerName = providerName == null ? "" : providerName; //$NON-NLS-1$
-        this.name = name == null ? "" : name; //$NON-NLS-1$
-        this.version = version == null ? "" : version; //$NON-NLS-1$
-        this.id = id == null ? "" : id; //$NON-NLS-1$
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getProviderName() {
-        return providerName;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public String getVersionedId() {
-        if (versionedId == null) {
-			versionedId = getId() + "_" + getVersion(); //$NON-NLS-1$
-		}
-        return versionedId;
-    }
-
-    /**
-     * Modify the argument array to reverse the sort order. 
-     * @param infos
-     */
-    private static void reverse(AboutData[] infos) {
-        List infoList = Arrays.asList(infos);
-        Collections.reverse(infoList);
-        for (int i = 0; i < infos.length; ++i) {
-			infos[i] = (AboutData) infoList.get(i);
-		}
-    }
-
-    /**
-     * Modify the argument array to be sorted by provider. If the reverse
-     * boolean is true, the array is assumed to already be sorted and the
-     * direction of sort (ascending vs. descending) is reversed.  Entries
-     * with the same name are sorted by name.
-     * 
-     * @param reverse
-     *            if true then the order of the argument is reversed without
-     *            examining the value of the fields
-     * @param infos
-     *            the data to be sorted
-     */
-    public static void sortByProvider(boolean reverse, AboutData[] infos) {
-        if (reverse) {
-            reverse(infos);
-            return;
-        }
-
-        Arrays.sort(infos, new Comparator() {
-            Collator collator = Collator.getInstance(Locale.getDefault());
-
-            public int compare(Object a, Object b) {
-                AboutData info1 = (AboutData) a;
-                AboutData info2 = (AboutData) b;
-
-                String provider1 = info1.getProviderName();
-                String provider2 = info2.getProviderName();
-
-                if (!provider1.equals(provider2)) {
-					return collator.compare(provider1, provider2);
-				}
-
-                return collator.compare(info1.getName(), info2.getName());
-            }
-        });
-    }
-
-    /**
-     * Modify the argument array to be sorted by name. If the reverse
-     * boolean is true, the array is assumed to already be sorted and the
-     * direction of sort (ascending vs. descending) is reversed.
-     * 
-     * @param reverse
-     *            if true then the order of the argument is reversed without
-     *            examining the value of the fields
-     * @param infos
-     *            the data to be sorted
-     */
-    public static void sortByName(boolean reverse, AboutData[] infos) {
-        if (reverse) {
-            reverse(infos);
-            return;
-        }
-
-        Arrays.sort(infos, new Comparator() {
-            Collator collator = Collator.getInstance(Locale.getDefault());
-
-            public int compare(Object a, Object b) {
-                AboutData info1 = (AboutData) a;
-                AboutData info2 = (AboutData) b;
-                return collator.compare(info1.getName(), info2.getName());
-            }
-        });
-    }
-
-    /**
-     * Modify the argument array to be sorted by version. If the reverse
-     * boolean is true, the array is assumed to already be sorted and the
-     * direction of sort (ascending vs. descending) is reversed.  Entries
-     * with the same name are sorted by name.
-     * 
-     * @param reverse
-     *            if true then the order of the argument is reversed without
-     *            examining the value of the fields
-     * @param infos
-     *            the data to be sorted
-     */
-    public static void sortByVersion(boolean reverse, AboutData[] infos) {
-        if (reverse) {
-            reverse(infos);
-            return;
-        }
-
-        Arrays.sort(infos, new Comparator() {
-            Collator collator = Collator.getInstance(Locale.getDefault());
-
-            public int compare(Object a, Object b) {
-                AboutData info1 = (AboutData) a;
-                AboutData info2 = (AboutData) b;
-
-                String version1 = info1.getVersion();
-                String version2 = info2.getVersion();
-
-                if (!version1.equals(version2)) {
-					return collator.compare(version1, version2);
-				}
-
-                return collator.compare(info1.getName(), info2.getName());
-            }
-        });
-    }
-
-    /**
-     * Modify the argument array to be sorted by id. If the reverse
-     * boolean is true, the array is assumed to already be sorted and the
-     * direction of sort (ascending vs. descending) is reversed.  Entries
-     * with the same name are sorted by name.
-     * 
-     * @param reverse
-     *            if true then the order of the argument is reversed without
-     *            examining the value of the fields
-     * @param infos
-     *            the data to be sorted
-     */
-    public static void sortById(boolean reverse, AboutData[] infos) {
-        if (reverse) {
-            reverse(infos);
-            return;
-        }
-
-        Arrays.sort(infos, new Comparator() {
-            Collator collator = Collator.getInstance(Locale.getDefault());
-
-            public int compare(Object a, Object b) {
-                AboutData info1 = (AboutData) a;
-                AboutData info2 = (AboutData) b;
-
-                String id1 = info1.getId();
-                String id2 = info2.getId();
-
-                if (!id1.equals(id2)) {
-					return collator.compare(id1, id2);
-				}
-
-                return collator.compare(info1.getName(), info2.getName());
-            }
-        });
-    }
-
-    protected static URL getURL(String value) {
-        try {
-            if (value != null) {
-				return new URL(value);
-			}
-        } catch (IOException e) {
-            // do nothing
-        }
-
-        return null;
-    }
-
-    protected static ImageDescriptor getImage(URL url) {
-        return url == null ? null : ImageDescriptor.createFromURL(url);
-    }
-
-    protected static ImageDescriptor getImage(String value) {
-        return getImage(getURL(value));
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java
deleted file mode 100644
index b9f22d3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutFeaturesButtonManager.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Utility class used to associate BundleInfo's that have the same provider and
- * image.  The algorithm in <code>java.util.zip.CRC32</code> is used to determine
- * image identity.
- */
-public class AboutFeaturesButtonManager {
-    private Map providerMap = new HashMap();
-
-    private static class Key {
-        public String providerName;
-
-        public Long crc;
-
-        /**
-         * @param crc must not be null
-         */
-        public Key(String providerName, Long crc) {
-            this.providerName = providerName;
-            this.crc = crc;
-        }
-
-        public boolean equals(Object o) {
-            if (!(o instanceof Key)) {
-				return false;
-			}
-            Key other = (Key) o;
-            if (!providerName.equals(other.providerName)) {
-				return false;
-			}
-            return crc.equals(other.crc);
-        }
-
-        public int hashCode() {
-            return providerName.hashCode();
-        }
-    }
-
-    /**
-     * @return true if a button should be added (i.e., the argument has an image
-     *         and it does not already have a button)
-     */
-    public boolean add(AboutBundleGroupData info) {
-        // no button for features without an image
-        Long crc = info.getFeatureImageCrc();
-        if (crc == null) {
-			return false;
-		}
-
-        String providerName = info.getProviderName();
-        Key key = new Key(providerName, crc);
-
-        List infoList = (List) providerMap.get(key);
-        if (infoList != null) {
-            infoList.add(info);
-            return false;
-        }
-
-        infoList = new ArrayList();
-        infoList.add(info);
-        providerMap.put(key, infoList);
-        return true;
-    }
-
-    /**
-     * Return an array of all bundle groups that share the argument's provider and
-     * image.  Returns an empty array if there isn't any related information.
-     */
-    public AboutBundleGroupData[] getRelatedInfos(AboutBundleGroupData info) {
-        // if there's no image, then there won't be a button
-        Long crc = info.getFeatureImageCrc();
-        if (crc == null) {
-			return new AboutBundleGroupData[0];
-		}
-
-        String providerName = info.getProviderName();
-        Key key = new Key(providerName, crc);
-
-        List infoList = (List) providerMap.get(key);
-        if (infoList == null) {
-			return new AboutBundleGroupData[0];
-		}
-
-        return (AboutBundleGroupData[]) infoList
-                .toArray(new AboutBundleGroupData[0]);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutHandler.java
deleted file mode 100644
index d5774c5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.dialogs.AboutDialog;
-
-/**
- * Creates an About dialog and opens it.
- * 
- * @since 3.3
- */
-public class AboutHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		new AboutDialog(HandlerUtil.getActiveShellChecked(event)).open();
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutItem.java
deleted file mode 100644
index 77cb437..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/AboutItem.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-/**
- * Holds the information for text appearing in the about dialog
- */
-public class AboutItem {
-    private String text;
-
-    private int[][] linkRanges;
-
-    private String[] hrefs;
-
-    /**
-     * Creates a new about item
-     */
-    public AboutItem(String text, int[][] linkRanges, String[] hrefs) {
-
-        this.text = text;
-        this.linkRanges = linkRanges;
-        this.hrefs = hrefs;
-    }
-
-    /**
-     * Returns the link ranges (character locations)
-     */
-    public int[][] getLinkRanges() {
-        return linkRanges;
-    }
-
-    /**
-     * Returns the text to display
-     */
-    public String getText() {
-        return text;
-    }
-
-    /**
-     * Returns true if a link is present at the given character location
-     */
-    public boolean isLinkAt(int offset) {
-        // Check if there is a link at the offset
-        for (int i = 0; i < linkRanges.length; i++) {
-            if (offset >= linkRanges[i][0]
-                    && offset < linkRanges[i][0] + linkRanges[i][1]) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns the link at the given offset (if there is one),
-     * otherwise returns <code>null</code>.
-     */
-    public String getLinkAt(int offset) {
-        // Check if there is a link at the offset
-        for (int i = 0; i < linkRanges.length; i++) {
-            if (offset >= linkRanges[i][0]
-                    && offset < linkRanges[i][0] + linkRanges[i][1]) {
-                return hrefs[i];
-            }
-        }
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java
deleted file mode 100644
index d17c969..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/about/ConfigurationLogDefaultSection.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.about;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Properties;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IBundleGroup;
-import org.eclipse.core.runtime.IBundleGroupProvider;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.about.ISystemSummarySection;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-import org.osgi.framework.Bundle;
-
-/**
- * This class puts basic platform information into the system summary log.  This
- * includes sections for the java properties, the ids of all installed features
- * and plugins, as well as a the current contents of the preferences service. 
- * 
- * @since 3.0
- */
-public class ConfigurationLogDefaultSection implements ISystemSummarySection {
-
-    private static final String ECLIPSE_PROPERTY_PREFIX = "eclipse."; //$NON-NLS-1$
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.about.ISystemSummarySection#write(java.io.PrintWriter)
-     */
-    public void write(PrintWriter writer) {
-        appendProperties(writer);
-        appendFeatures(writer);
-        appendRegistry(writer);
-        appendUserPreferences(writer);
-    }
-
-    /**
-     * Appends the <code>System</code> properties.
-     */
-    private void appendProperties(PrintWriter writer) {
-        writer.println();
-        writer.println(WorkbenchMessages.SystemSummary_systemProperties);
-        Properties properties = System.getProperties();
-        SortedSet set = new TreeSet(new Comparator() {
-            public int compare(Object o1, Object o2) {
-                String s1 = (String) o1;
-                String s2 = (String) o2;
-                return s1.compareTo(s2);
-            }
-        });
-        set.addAll(properties.keySet());
-        Iterator i = set.iterator();
-        while (i.hasNext()) {
-            String key = (String)i.next();
-            String value = properties.getProperty(key);
-
-            writer.print(key);
-            writer.print('=');
-
-            // some types of properties have special characters embedded
-            if (key.startsWith(ECLIPSE_PROPERTY_PREFIX)) {
-				printEclipseProperty(writer, value);
-            } else if (key.toUpperCase().indexOf("PASSWORD") != -1) { //$NON-NLS-1$
-            	// We should obscure any property that may be a password
-            	for (int j = 0; j < value.length(); j++) {
-					writer.print('*');
-				}
-            	writer.println();
-			} else {
-				writer.println(value);
-			}
-        }
-    }
-
-    private static void printEclipseProperty(PrintWriter writer, String value) {
-        String[] lines = Util.getArrayFromList(value, "\n"); //$NON-NLS-1$
-        for (int i = 0; i < lines.length; ++i) {
-			writer.println(lines[i]);
-		}
-    }
-
-    /**
-     * Appends the installed and configured features.
-     */
-    private void appendFeatures(PrintWriter writer) {
-        writer.println();
-        writer.println(WorkbenchMessages.SystemSummary_features);
-
-        IBundleGroupProvider[] providers = Platform.getBundleGroupProviders();
-        LinkedList groups = new LinkedList();
-        if (providers != null) {
-			for (int i = 0; i < providers.length; ++i) {
-                IBundleGroup[] bundleGroups = providers[i].getBundleGroups();
-                for (int j = 0; j < bundleGroups.length; ++j) {
-					groups.add(new AboutBundleGroupData(bundleGroups[j]));
-				}
-            }
-		}
-        AboutBundleGroupData[] bundleGroupInfos = (AboutBundleGroupData[]) groups
-                .toArray(new AboutBundleGroupData[0]);
-
-        AboutData.sortById(false, bundleGroupInfos);
-
-        for (int i = 0; i < bundleGroupInfos.length; ++i) {
-            AboutBundleGroupData info = bundleGroupInfos[i];
-            String[] args = new String[] { info.getId(), info.getVersion(),
-                    info.getName() };
-            writer.println(NLS.bind(WorkbenchMessages.SystemSummary_featureVersion, args)); 
-        }
-    }
-
-    /**
-     * Appends the contents of the Plugin Registry.
-     */
-    private void appendRegistry(PrintWriter writer) {
-        writer.println();
-        writer.println(WorkbenchMessages.SystemSummary_pluginRegistry);
-
-        Bundle[] bundles = WorkbenchPlugin.getDefault().getBundles();
-        AboutBundleData[] bundleInfos = new AboutBundleData[bundles.length];
-
-        for (int i = 0; i < bundles.length; ++i) {
-			bundleInfos[i] = new AboutBundleData(bundles[i]);
-		}
-
-        AboutData.sortById(false, bundleInfos);
-
-        for (int i = 0; i < bundleInfos.length; ++i) {
-            AboutBundleData info = bundleInfos[i];
-            String[] args = new String[] { info.getId(), info.getVersion(),
-                    info.getName(), info.getStateName() };
-            writer.println(NLS.bind(WorkbenchMessages.SystemSummary_descriptorIdVersionState, args)); 
-        }
-    }
-
-    /**
-     * Appends the preferences
-     */
-    private void appendUserPreferences(PrintWriter writer) {
-        // write the prefs to a byte array
-        IPreferencesService service = Platform.getPreferencesService();
-        IEclipsePreferences node = service.getRootNode();
-        ByteArrayOutputStream stm = new ByteArrayOutputStream();
-        try {
-            service.exportPreferences(node, stm, null);
-        } catch (CoreException e) {
-            writer.println("Error reading preferences " + e.toString());//$NON-NLS-1$		
-        }
-
-        // copy the prefs from the byte array to the writer
-        writer.println();
-        writer.println(WorkbenchMessages.SystemSummary_userPreferences); 
-
-        BufferedReader reader = null;
-        try {
-            ByteArrayInputStream in = new ByteArrayInputStream(stm
-                    .toByteArray());
-            reader = new BufferedReader(new InputStreamReader(in, "8859_1")); //$NON-NLS-1$
-            char[] chars = new char[8192];
-
-            while (true) {
-                int read = reader.read(chars);
-                if (read <= 0) {
-					break;
-				}
-                writer.write(chars, 0, read);
-            }
-        } catch (IOException e) {
-            writer.println("Error reading preferences " + e.toString());//$NON-NLS-1$		
-        }
-
-        // ByteArray streams don't need to be closed
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java
deleted file mode 100644
index c3a20f1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/AbstractWorkingSetPulldownDelegate.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.actions;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.events.MenuAdapter;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.WorkingSetRegistry;
-
-/**
- * Baseclass for working set pulldown actions.
- * 
- * @since 3.3
- */
-public abstract class AbstractWorkingSetPulldownDelegate implements
-		IWorkbenchWindowActionDelegate, IWorkbenchWindowPulldownDelegate2 {
-
-	private Menu menubarMenu;
-
-	private Menu toolbarMenu;
-
-	private ISelection selection;
-
-	private IWorkbenchWindow window;
-
-	/**
-	 * 
-	 */
-	public AbstractWorkingSetPulldownDelegate() {
-		super();
-	}
-
-	public void dispose() {
-		if (menubarMenu != null) {
-			menubarMenu.dispose();
-			menubarMenu = null;
-		}
-		if (toolbarMenu != null) {
-			toolbarMenu.dispose();
-			toolbarMenu = null;
-		}
-	}
-
-	public Menu getMenu(Control parent) {
-		if (toolbarMenu != null) {
-			toolbarMenu.dispose();
-		}
-		toolbarMenu = new Menu(parent);
-		initMenu(toolbarMenu);
-		return toolbarMenu;
-	}
-
-	public Menu getMenu(Menu parent) {
-		if (menubarMenu != null) {
-			menubarMenu.dispose();
-		}
-		menubarMenu = new Menu(parent);
-		initMenu(menubarMenu);
-		return menubarMenu;
-	}
-
-	/**
-	 * Creates the menu for the action
-	 */
-	private void initMenu(Menu menu) {
-		menu.addMenuListener(new MenuAdapter() {
-			public void menuShown(MenuEvent e) {
-				Menu m = (Menu) e.widget;
-				MenuItem[] items = m.getItems();
-				for (int i = 0; i < items.length; i++) {
-					items[i].dispose();
-				}
-				fillMenu(m);
-			}
-
-		});
-	}
-
-	/**
-	 * @param m
-	 */
-	protected abstract void fillMenu(Menu m);
-
-	/**
-	 * Split the working sets known by the manager into arrays based on their
-	 * defining page Id.
-	 * 
-	 * @return an array of arrays
-	 */
-	protected IWorkingSet[][] splitSets() {
-		IWorkingSet[] allSets = getWindow().getWorkbench().getWorkingSetManager()
-				.getWorkingSets();
-
-		Map map = new HashMap();
-		WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
-				.getWorkingSetRegistry();
-
-		for (int i = 0; i < allSets.length; i++) {
-			String setType = allSets[i].getId();
-			if (WorkbenchActivityHelper.filterItem(registry
-					.getWorkingSetDescriptor(setType))) {
-				continue;
-			}
-			List setsOfType = (List) map.get(setType);
-			if (setsOfType == null) {
-				setsOfType = new ArrayList();
-				map.put(setType, setsOfType);
-			}
-			setsOfType.add(allSets[i]);
-		}
-
-		IWorkingSet[][] typedSets = new IWorkingSet[map.keySet().size()][];
-		int i = 0;
-		for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
-			List setsOfType = (List) map.get(iter.next());
-			typedSets[i] = new IWorkingSet[setsOfType.size()];
-			setsOfType.toArray(typedSets[i++]);
-		}
-		return typedSets;
-	}
-
-	public void init(IWorkbenchWindow window) {
-		this.window = window;
-	}
-
-	protected IWorkbenchWindow getWindow() {
-		return window;
-	}
-
-	public void selectionChanged(IAction action, ISelection selection) {
-		this.selection = selection;
-	}
-
-	protected ISelection getSelection() {
-		return selection;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java
deleted file mode 100644
index e60bb75..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ClearWorkingSetAction.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Clears the selected working set in the working set action group.
- * 
- * @since 2.1
- */
-public class ClearWorkingSetAction extends Action {
-    private WorkingSetFilterActionGroup actionGroup;
-
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @param actionGroup the action group this action is created in
-     */
-    public ClearWorkingSetAction(WorkingSetFilterActionGroup actionGroup) {
-        super(WorkbenchMessages.ClearWorkingSetAction_text);
-        Assert.isNotNull(actionGroup);
-        setToolTipText(WorkbenchMessages.ClearWorkingSetAction_toolTip);
-        setEnabled(actionGroup.getWorkingSet() != null);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.CLEAR_WORKING_SET_ACTION);
-        this.actionGroup = actionGroup;
-    }
-
-    /**
-     * Overrides method from Action
-     * 
-     * @see Action#run
-     */
-    public void run() {
-        actionGroup.setWorkingSet(null);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/CommandAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/CommandAction.java
deleted file mode 100644
index f0cb1b6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/CommandAction.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.actions;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandEvent;
-import org.eclipse.core.commands.ICommandListener;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Instantiate an action that will execute the command.
- * <p>
- * This is a legacy bridge class, and should not be used outside of the
- * framework. Please use menu contributions to display a command in a menu or
- * toolbar.
- * </p>
- * <p>
- * <b>Note:</b> Clients my instantiate, but they must not subclass.
- * </p>
- * 
- * @since 3.3
- */
-public class CommandAction extends Action {
-
-	private IHandlerService handlerService = null;
-
-	private ParameterizedCommand parameterizedCommand = null;
-
-	private ICommandListener commandListener;
-
-	protected CommandAction() {
-
-	}
-
-	/**
-	 * Creates the action backed by a command. For commands that don't take
-	 * parameters.
-	 * 
-	 * @param serviceLocator
-	 *            The service locator that is closest in lifecycle to this
-	 *            action.
-	 * @param commandIdIn
-	 *            the command id. Must not be <code>null</code>.
-	 */
-	public CommandAction(IServiceLocator serviceLocator, String commandIdIn) {
-		this(serviceLocator, commandIdIn, null);
-	}
-
-	/**
-	 * Creates the action backed by a parameterized command. The parameterMap
-	 * must contain only all required parameters, and may contain the optional
-	 * parameters.
-	 * 
-	 * @param serviceLocator
-	 *            The service locator that is closest in lifecycle to this
-	 *            action.
-	 * @param commandIdIn
-	 *            the command id. Must not be <code>null</code>.
-	 * @param parameterMap
-	 *            the parameter map. May be <code>null</code>.
-	 */
-	public CommandAction(IServiceLocator serviceLocator, String commandIdIn,
-			Map parameterMap) {
-		if (commandIdIn == null) {
-			throw new NullPointerException("commandIdIn must not be null"); //$NON-NLS-1$
-		}
-		init(serviceLocator, commandIdIn, parameterMap);
-	}
-
-	protected ICommandListener getCommandListener() {
-		if (commandListener == null) {
-			commandListener = new ICommandListener() {
-				public void commandChanged(CommandEvent commandEvent) {
-					if (commandEvent.isHandledChanged()
-							|| commandEvent.isEnabledChanged()) {
-						if (commandEvent.getCommand().isDefined()) {
-							setEnabled(commandEvent.getCommand().isEnabled());
-						}
-					}
-				}
-			};
-		}
-		return commandListener;
-	}
-
-	/**
-	 * Build a command from the executable extension information.
-	 * 
-	 * @param commandService
-	 *            to get the Command object
-	 * @param commandId
-	 *            the command id for this action
-	 * @param parameterMap
-	 */
-	private void createCommand(ICommandService commandService,
-			String commandId, Map parameterMap) {
-		Command cmd = commandService.getCommand(commandId);
-		if (!cmd.isDefined()) {
-			WorkbenchPlugin.log("Command " + commandId + " is undefined"); //$NON-NLS-1$//$NON-NLS-2$
-			return;
-		}
-
-		if (parameterMap == null) {
-			parameterizedCommand = new ParameterizedCommand(cmd, null);
-			return;
-		}
-
-		parameterizedCommand = ParameterizedCommand.generateCommand(cmd,
-				parameterMap);
-	}
-
-	public void dispose() {
-		// not important for command ID, maybe for command though.
-		handlerService = null;
-		if (commandListener != null) {
-			parameterizedCommand.getCommand().removeCommandListener(
-					commandListener);
-			commandListener = null;
-		}
-		parameterizedCommand = null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.Action#runWithEvent(org.eclipse.swt.widgets.Event)
-	 */
-	public void runWithEvent(Event event) {
-		if (handlerService == null) {
-			String commandId = (parameterizedCommand == null ? "unknownCommand" //$NON-NLS-1$
-					: parameterizedCommand.getId());
-			WorkbenchPlugin.log("Cannot run " + commandId //$NON-NLS-1$
-					+ " before command action has been initialized"); //$NON-NLS-1$
-			return;
-		}
-		try {
-			if (parameterizedCommand != null) {
-				handlerService.executeCommand(parameterizedCommand, event);
-			}
-		} catch (Exception e) {
-			WorkbenchPlugin.log(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.Action#run()
-	 */
-	public void run() {
-		// hopefully this is never called
-		runWithEvent(null);
-	}
-
-	protected void init(IServiceLocator serviceLocator, String commandIdIn,
-			Map parameterMap) {
-		if (handlerService != null) {
-			// already initialized
-			return;
-		}
-		handlerService = (IHandlerService) serviceLocator
-				.getService(IHandlerService.class);
-		ICommandService commandService = (ICommandService) serviceLocator
-				.getService(ICommandService.class);
-		ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-
-		createCommand(commandService, commandIdIn, parameterMap);
-		if (parameterizedCommand != null) {
-			setId(parameterizedCommand.getId());
-			setActionDefinitionId(parameterizedCommand.getId());
-			try {
-				setText(parameterizedCommand.getName());
-			} catch (NotDefinedException e) {
-				// if we get this far it shouldn't be a problem
-			}
-			parameterizedCommand.getCommand().addCommandListener(
-					getCommandListener());
-			parameterizedCommand.getCommand().setEnabled(
-					handlerService.getCurrentState());
-			setEnabled(parameterizedCommand.getCommand().isEnabled());
-			setImageDescriptor(commandImageService.getImageDescriptor(
-					commandIdIn, ICommandImageService.TYPE_DEFAULT));
-			setDisabledImageDescriptor(commandImageService.getImageDescriptor(
-					commandIdIn, ICommandImageService.TYPE_DISABLED));
-			setHoverImageDescriptor(commandImageService.getImageDescriptor(
-					commandIdIn, ICommandImageService.TYPE_HOVER));
-		}
-	}
-
-	protected ParameterizedCommand getParameterizedCommand() {
-		return parameterizedCommand;
-	}
-
-	public String getActionDefinitionId() {
-		return super.getActionDefinitionId();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/DynamicHelpAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/DynamicHelpAction.java
deleted file mode 100644
index 2c9fdd8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/DynamicHelpAction.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * Action to open the dynamic help.
- * 
- * @since 3.1
- */
-public class DynamicHelpAction extends Action implements IWorkbenchAction {
-	/**
-	 * The workbench window; or <code>null</code> if this action has been
-	 * <code>dispose</code>d.
-	 */
-	private IWorkbenchWindow workbenchWindow;
-
-	/**
-	 * Zero-arg constructor to allow cheat sheets to reuse this action.
-	 */
-	public DynamicHelpAction() {
-		this(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-	}
-
-	/**
-	 * Constructor for use by ActionFactory.
-	 * 
-	 * @param window
-	 *            the window
-	 */
-	public DynamicHelpAction(IWorkbenchWindow window) {
-		if (window == null) {
-			throw new IllegalArgumentException();
-		}
-		this.workbenchWindow = window;
-		setActionDefinitionId("org.eclipse.ui.help.dynamicHelp"); //$NON-NLS-1$
-
-		// support for allowing a product to override the text for the action
-		String overrideText = PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.DYNAMIC_HELP_ACTION_TEXT);
-		if ("".equals(overrideText)) { //$NON-NLS-1$
-			setText(appendAccelerator(WorkbenchMessages.DynamicHelpAction_text));
-			setToolTipText(WorkbenchMessages.DynamicHelpAction_toolTip);
-		} else {
-			setText(appendAccelerator(overrideText));
-			setToolTipText(Action.removeMnemonics(overrideText));
-		}
-		window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.DYNAMIC_HELP_ACTION);
-	}
-
-	private String appendAccelerator(String text) {
-		// We know that on Windows context help key is F1
-		// and cannot be changed by the user.
-		//
-		// Commented out due to the problem described in
-		// Bugzilla bug #95057
-	
-		//if (Platform.getWS().equals(Platform.WS_WIN32))
-		//	return text + "\t" + KeyStroke.getInstance(SWT.F1).format(); //$NON-NLS-1$
-		return text;
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IAction.
-	 */
-	public void run() {
-		if (workbenchWindow == null) {
-			// action has been disposed
-			return;
-		}
-		// This may take a while, so use the busy indicator
-		BusyIndicator.showWhile(null, new Runnable() {
-			public void run() {
-				workbenchWindow.getWorkbench().getHelpSystem()
-						.displayDynamicHelp();
-			}
-		});
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on ActionFactory.IWorkbenchAction.
-	 */
-	public void dispose() {
-		workbenchWindow = null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/EditWorkingSetAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/EditWorkingSetAction.java
deleted file mode 100644
index 88b5b2d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/EditWorkingSetAction.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
-import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Displays an IWorkingSetEditWizard for editing a working set.
- * 
- * @since 2.1
- */
-public class EditWorkingSetAction extends Action {
-    private Shell shell;
-
-    private WorkingSetFilterActionGroup actionGroup;
-
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @param actionGroup the action group this action is created in
-     * @param shell the parent shell
-     */
-    public EditWorkingSetAction(WorkingSetFilterActionGroup actionGroup,
-            Shell shell) {
-        super(WorkbenchMessages.EditWorkingSetAction_text);
-        Assert.isNotNull(actionGroup);
-        setToolTipText(WorkbenchMessages.EditWorkingSetAction_toolTip); 
-
-        this.shell = shell;
-        this.actionGroup = actionGroup;
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.EDIT_WORKING_SET_ACTION);
-    }
-
-    /**
-     * Overrides method from Action
-     * 
-     * @see Action#run
-     */
-    public void run() {
-        IWorkingSetManager manager = PlatformUI.getWorkbench()
-                .getWorkingSetManager();
-        IWorkingSet workingSet = actionGroup.getWorkingSet();
-
-        if (workingSet == null) {
-            setEnabled(false);
-            return;
-        }
-        IWorkingSetEditWizard wizard = manager
-                .createWorkingSetEditWizard(workingSet);
-        if (wizard == null) {
-            String title = WorkbenchMessages.EditWorkingSetAction_error_nowizard_title; 
-            String message = WorkbenchMessages.EditWorkingSetAction_error_nowizard_message;
-            MessageDialog.openError(shell, title, message);
-            return;
-        }
-        WizardDialog dialog = new WizardDialog(shell, wizard);
-        dialog.create();
-        if (dialog.open() == Window.OK) {
-			actionGroup.setWorkingSet(wizard.getSelection());
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpContentsAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpContentsAction.java
deleted file mode 100644
index e63523d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpContentsAction.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * Action to open the help contents.
- * 
- * @since 3.0
- */
-public class HelpContentsAction extends Action implements IWorkbenchAction {
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Zero-arg constructor to allow cheat sheets to reuse this action.
-     */
-    public HelpContentsAction() {
-        this(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-    }
-
-    /**
-     * Constructor for use by ActionFactory.
-     * 
-     * @param window the window
-     */
-    public HelpContentsAction(IWorkbenchWindow window) {
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        setActionDefinitionId("org.eclipse.ui.help.helpContents"); //$NON-NLS-1$
-
-        // support for allowing a product to override the text for the action
-        String overrideText = PrefUtil.getAPIPreferenceStore().getString(
-                IWorkbenchPreferenceConstants.HELP_CONTENTS_ACTION_TEXT);
-        if ("".equals(overrideText)) { //$NON-NLS-1$
-            setText(WorkbenchMessages.HelpContentsAction_text);
-            setToolTipText(WorkbenchMessages.HelpContentsAction_toolTip);
-        } else {
-            setText(overrideText);
-            setToolTipText(Action.removeMnemonics(overrideText));
-        }
-        setImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_HELP_CONTENTS));
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.HELP_CONTENTS_ACTION);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        //This may take a while, so use the busy indicator
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-            	workbenchWindow.getWorkbench().getHelpSystem().displayHelp();
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     */
-    public void dispose() {
-        workbenchWindow = null;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchAction.java
deleted file mode 100644
index 7d8f36c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchAction.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * Action to open the help search.
- * 
- * @since 3.1
- */
-public class HelpSearchAction extends Action implements IWorkbenchAction {
-    /**
-     * The workbench window; or <code>null</code> if this
-     * action has been <code>dispose</code>d.
-     */
-    private IWorkbenchWindow workbenchWindow;
-
-    /**
-     * Zero-arg constructor to allow cheat sheets to reuse this action.
-     */
-    public HelpSearchAction() {
-        this(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-    }
-
-    /**
-     * Constructor for use by ActionFactory.
-     * 
-     * @param window the window
-     */
-    public HelpSearchAction(IWorkbenchWindow window) {
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.workbenchWindow = window;
-        setActionDefinitionId("org.eclipse.ui.help.helpSearch"); //$NON-NLS-1$
-
-        // support for allowing a product to override the text for the action
-        String overrideText = PrefUtil.getAPIPreferenceStore().getString(
-                IWorkbenchPreferenceConstants.HELP_SEARCH_ACTION_TEXT);
-        if ("".equals(overrideText)) { //$NON-NLS-1$
-            setText(WorkbenchMessages.HelpSearchAction_text); 
-            setToolTipText(WorkbenchMessages.HelpSearchAction_toolTip);
-        } else {
-            setText(overrideText);
-            setToolTipText(Action.removeMnemonics(overrideText));
-        }
-        setImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_HELP_SEARCH));
-        window.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.HELP_SEARCH_ACTION);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAction.
-     */
-    public void run() {
-        if (workbenchWindow == null) {
-            // action has been disposed
-            return;
-        }
-        //This may take a while, so use the busy indicator
-        BusyIndicator.showWhile(null, new Runnable() {
-            public void run() {
-            	workbenchWindow.getWorkbench().getHelpSystem().displaySearch();
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ActionFactory.IWorkbenchAction.
-     */
-    public void dispose() {
-        workbenchWindow = null;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java
deleted file mode 100644
index 7a37a45..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/HelpSearchContributionItem.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.ControlContribution;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * This is the contribution item that is used to add a help search field to
- * the cool bar.
- * 
- * @since 3.1
- */
-public class HelpSearchContributionItem extends ControlContribution {
-	private static final String ID = "org.eclipse.ui.helpSearch"; //$NON-NLS-1$
-	
-	private IWorkbenchWindow window;
-
-	private Combo combo;
-
-	private int MAX_ITEM_COUNT = 10;
-	
-	/**
-	 * Creates the contribution item.
-	 * 
-	 * @param window the window
-	 */
-	public HelpSearchContributionItem(IWorkbenchWindow window) {
-		this(window, ID);
-	}
-
-	/**
-	 * Creates the contribution item.
-	 * 
-	 * @param window the window
-	 * @param id the contribution item id
-	 */
-	public HelpSearchContributionItem(IWorkbenchWindow window, String id) {
-		super(id);
-        Assert.isNotNull(window);
-		this.window = window;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.ControlContribution#createControl(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createControl(Composite parent) {
-		combo = new Combo(parent, SWT.NONE);
-		combo.setToolTipText(WorkbenchMessages.WorkbenchWindow_searchCombo_toolTip); 
-		String[] items = WorkbenchPlugin.getDefault().getDialogSettings()
-				.getArray(ID);
-		if (items != null) {
-			combo.setItems(items);
-		}
-		combo.setText(WorkbenchMessages.WorkbenchWindow_searchCombo_text); 
-		combo.addKeyListener(new KeyAdapter() {
-			public void keyReleased(KeyEvent e) {
-				if (e.character == SWT.CR) {
-					doSearch(combo.getText(), true);
-				}
-			}
-		});
-		combo.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				int index = combo.getSelectionIndex();
-				if (index != -1) {
-					doSearch(combo.getItem(index), false);
-				}
-			}
-		});
-		return combo;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.ControlContribution#computeWidth(org.eclipse.swt.widgets.Control)
-	 */
-	protected int computeWidth(Control control) {
-		return control.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x;
-	}
-
-	private void doSearch(String phrase, boolean updateList) {
-		if (phrase.length() == 0) {
-            window.getWorkbench().getHelpSystem().displaySearch();
-			return;
-		}
-		if (updateList) {
-			boolean exists = false;
-			for (int i = 0; i < combo.getItemCount(); i++) {
-				String item = combo.getItem(i);
-				if (item.equalsIgnoreCase(phrase)) {
-					exists = true;
-					break;
-				}
-			}
-			if (!exists) {
-				combo.add(phrase, 0);
-				if (combo.getItemCount() > MAX_ITEM_COUNT) {
-					combo.remove(combo.getItemCount() - 1);
-				}
-				WorkbenchPlugin.getDefault().getDialogSettings().put(ID,
-						combo.getItems());
-			}
-		}
-		window.getWorkbench().getHelpSystem().search(phrase);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
deleted file mode 100644
index 4afa7a8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/ModifyWorkingSetDelegate.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Benjamin Muskalla - Bug 169023 [WorkingSets] "Add to working set"
- *     						drop down should include a "new working set" option
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionDelegate2;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.QuickMenuCreator;
-import org.eclipse.ui.dialogs.IWorkingSetNewWizard;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * @since 3.3
- * 
- */
-public class ModifyWorkingSetDelegate extends
-		AbstractWorkingSetPulldownDelegate implements IExecutableExtension, IActionDelegate2 {
-
-	public class NewWorkingSetAction extends Action {
-
-		/**
-		 * Create a new instance of this action.
-		 */
-		public NewWorkingSetAction() {
-			super(WorkbenchMessages.NewWorkingSet);
-		}
-
-		public void run() {
-			IWorkingSetManager manager = WorkbenchPlugin.getDefault()
-			.getWorkingSetManager();
-			IWorkingSetNewWizard wizard = manager.createWorkingSetNewWizard(null);
-			// the wizard can never be null since we have at least a resource
-			// working set
-			// creation page
-			WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench()
-								.getDisplay().getActiveShell(), wizard);
-		
-			dialog.create();
-			PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(),
-					IWorkbenchHelpContextIds.WORKING_SET_NEW_WIZARD);
-			if (dialog.open() == Window.OK) {
-				IWorkingSet workingSet = wizard.getSelection();
-				if(workingSet != null) {
-					manager.addWorkingSet(workingSet);
-				}
-			}			
-		}
-
-	}
-
-	private class ModifyAction extends Action {
-
-		private IWorkingSet set;
-
-		private IAdaptable [] selectedElements;
-
-		/**
-		 * @param set
-		 * @param selectedElements
-		 * @param add
-		 */
-		private ModifyAction(IWorkingSet set, IAdaptable [] selectedElements) {
-			super(set.getLabel(), IAction.AS_CHECK_BOX);
-			this.set = set;
-			this.selectedElements = selectedElements;
-			setImageDescriptor(set.getImageDescriptor());
-		}
-
-		public void run() {
-
-			Collection oldElements = Arrays.asList(set.getElements());
-			Set newElements = new HashSet(oldElements.size()
-					+ selectedElements.length);
-			newElements.addAll(oldElements);
-			List selectedAsList = Arrays.asList(selectedElements);
-			if (add) {
-				newElements.addAll(selectedAsList);
-			} else {
-				newElements.removeAll(selectedAsList);
-			}
-			set.setElements((IAdaptable[]) newElements
-					.toArray(new IAdaptable[newElements.size()]));
-		}
-	}
-	
-	private QuickMenuCreator contextMenuCreator = new QuickMenuCreator() {
-		protected void fillMenu(IMenuManager menu) {
-			ModifyWorkingSetDelegate.this.fillMenu(menu);
-		}
-	};
-
-	private boolean add = true;
-
-	private IPropertyChangeListener listener = new IPropertyChangeListener() {
-
-		public void propertyChange(PropertyChangeEvent event) {
-			refreshEnablement();
-		}
-
-		/**
-		 * 
-		 */
-		private void refreshEnablement() {
-			selectionChanged(actionProxy, getSelection());
-		}
-	};
-
-	private IAction actionProxy;
-
-	/**
-	 * 
-	 */
-	public ModifyWorkingSetDelegate() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
-	 */
-	public void run(IAction action) {
-		contextMenuCreator.createMenu();
-	}
-	 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IActionDelegate2#runWithEvent(org.eclipse.jface.action.IAction, org.eclipse.swt.widgets.Event)
-	 */
-	public void runWithEvent(IAction action, Event event) {
-		if (event.type == SWT.KeyDown || event.type == SWT.KeyUp)
-			run(action);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.actions.AbstractWorkingSetPulldownDelegate#init(org.eclipse.ui.IWorkbenchWindow)
-	 */
-	public void init(IWorkbenchWindow window) {
-		super.init(window);
-		getWindow().getWorkbench().getWorkingSetManager()
-				.addPropertyChangeListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.actions.AbstractWorkingSetPulldownDelegate#dispose()
-	 */
-	public void dispose() {
-		getWindow().getWorkbench().getWorkingSetManager()
-				.removePropertyChangeListener(listener);
-		super.dispose();
-		contextMenuCreator.dispose();
-	}
-	
-	public void fillMenu(Menu menu) {
-		List menuItems = getItems();
-		for (int i = 0; i < menuItems.size(); i++) {
-			Object object = menuItems.get(i);
-			if (object instanceof IAction) {
-				ActionContributionItem item = new ActionContributionItem((IAction) object);
-				item.fill(menu, -1);
-			} else {
-				IContributionItem item = (IContributionItem) object;
-				item.fill(menu, -1);
-			}
-		}
-		// create working set action only for add menu
-		if(add) {
-			IContributionItem item = null;
-			if (menu.getItemCount() > 0) {
-				item = new Separator();
-				item.fill(menu, -1);
-			}
-			
-			item = new ActionContributionItem(new NewWorkingSetAction());
-			item.fill(menu, -1);
-		}
-	}
-	/**
-	 * Return the list of items to show in the submenu.
-	 * 
-	 * @return the items to show in the submenu
-	 */
-	private List getItems() {
-		List menuItems = new ArrayList();
-		ISelection selection = getSelection();
-		if (!(selection instanceof IStructuredSelection)) {
-			if(!add) {
-				IAction emptyAction = new Action(WorkbenchMessages.NoApplicableWorkingSets) {};
-				emptyAction.setEnabled(false);
-				menuItems.add(emptyAction);
-			}
-			return menuItems;
-		}
-		
-		IWorkingSet[][] typedSets = splitSets();
-		Object [] selectedElements = ((IStructuredSelection)selection).toArray();
-	
-		// keep a tab of whether or not we need a separator. If a given type
-		// of working set has contributed some items then this will be true
-		// after the processing of the working set type. The next type will
-		// then consult this field and add a separator before adding any
-		// items of its own. In this way the list will never end with a
-		// separator.
-		boolean needsSeparator = false;
-		
-		for (int i = 0; i < typedSets.length; i++) {
-			int oldCount = menuItems.size();
-
-			IWorkingSet[] sets = typedSets[i];
-			for (int j = 0; j < sets.length; j++) {
-				IWorkingSet set = sets[j];
-
-				Set existingElements = new HashSet();
-				existingElements.addAll(Arrays
-						.asList(set.getElements()));
-
-				boolean visible = false;
-				IAdaptable [] adaptables = new IAdaptable[selectedElements.length];
-				System.arraycopy(selectedElements, 0, adaptables, 0, selectedElements.length);
-				adaptables = set.adaptElements(adaptables);
-				if (adaptables.length > 0 && add) {
-					for (int k = 0; k < adaptables.length; k++) {
-						if (!existingElements.contains(adaptables[k])) {
-							// show if any element is not present in
-							// addition
-							visible = true;
-							break;
-						}
-					}
-				}
-				else if (adaptables.length > 0) {
-					for (int k = 0; k < adaptables.length; k++) {
-						if (existingElements.contains(adaptables[k]))
-							visible = true; // show if any element
-											// is present in removal
-						break;
-					}
-				}
-				
-				if (visible) {
-					if (needsSeparator) {
-						menuItems.add(new Separator());
-						needsSeparator = false;
-					}
-					ModifyAction action = new ModifyAction(set,
-							adaptables);
-					menuItems.add(action);
-				}
-			}
-			// we need a separator if we needed one before but never added it or
-			// we've added new items to the list.
-			needsSeparator |= menuItems.size() > oldCount;
-		}
-		if (menuItems.isEmpty() && !add) {
-			IAction emptyAction = new Action(
-					WorkbenchMessages.NoApplicableWorkingSets) {
-			};
-			emptyAction.setEnabled(false);
-			menuItems.add(emptyAction);
-		}
-		return menuItems;
-	}
-
-	private void fillMenu(IMenuManager menu) {
-		List menuItems = getItems();
-		for (int i = 0; i < menuItems.size(); i++) {
-			Object object = menuItems.get(i);
-			if (object instanceof IAction) {
-				menu.add((IAction) object);
-			} else {
-				IContributionItem item = (IContributionItem) object;
-				menu.add(item);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.actions.AbstractWorkingSetPulldownDelegate#selectionChanged(org.eclipse.jface.action.IAction,
-	 *      org.eclipse.jface.viewers.ISelection)
-	 */
-	public void selectionChanged(IAction actionProxy, ISelection selection) {
-		super.selectionChanged(actionProxy, selection);
-		if (selection instanceof IStructuredSelection) {
-			Object[] selectedElements = ((IStructuredSelection) getSelection())
-					.toArray();
-			// ensure every item is of type IAdaptable and is NOT an IWorkingSet (minimal fix for 157799)
-			boolean minimallyOkay = true;
-			for (int i = 0; i < selectedElements.length; i++) {
-				Object object = selectedElements[i];
-				if (!(object instanceof IAdaptable) || object instanceof IWorkingSet) {
-					minimallyOkay = false;
-					break;
-				}
-			}
-			actionProxy.setEnabled(minimallyOkay);
-			
-		}
-		else
-			actionProxy.setEnabled(false);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) {
-		if (data instanceof String) {
-			add = Boolean.valueOf((String) data).booleanValue();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IActionDelegate2#init(org.eclipse.jface.action.IAction)
-	 */
-	public void init(IAction action) {
-		this.actionProxy = action;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java
deleted file mode 100644
index 6fe45b6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/NewWizardShortcutAction.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.Action;
-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.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.LegacyResourceSupport;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * Opens a specific new wizard. 
- */
-public class NewWizardShortcutAction extends Action implements
-        IPluginContribution {
-    private IWizardDescriptor wizardElement;
-
-    /**
-     * The wizard dialog width
-     */
-    private static final int SIZING_WIZARD_WIDTH = 500;
-
-    /**
-     * The wizard dialog height
-     */
-    private static final int SIZING_WIZARD_HEIGHT = 500;
-    
-    private IWorkbenchWindow window;
-
-    /**
-     * Create an instance of this class.
-     *
-     * @param window the workbench window in which this action will appear
-     * @param wizardDesc a wizard element
-     */
-    public NewWizardShortcutAction(IWorkbenchWindow window,
-            IWizardDescriptor wizardDesc) {
-        super(wizardDesc.getLabel());
-        setToolTipText(wizardDesc.getDescription());
-        setImageDescriptor(wizardDesc.getImageDescriptor());
-        setId(ActionFactory.NEW.getId());
-        wizardElement = wizardDesc;
-        this.window = window;
-    }
-
-    /**
-     * Get the wizard descriptor for this action.
-     * 
-     * @return the wizard descriptor 
-     */
-    public IWizardDescriptor getWizardDescriptor() {
-		return wizardElement;
-	}
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IAction#run()
-     */
-    public void run() {
-        // create instance of target wizard
-
-        INewWizard wizard;
-        try {
-            wizard = (INewWizard) wizardElement.createWizard();
-        } catch (CoreException e) {
-            ErrorDialog.openError(window.getShell(), WorkbenchMessages.NewWizardShortcutAction_errorTitle,
-                    WorkbenchMessages.NewWizardShortcutAction_errorMessage,
-                    e.getStatus());
-            return;
-        }
-
-        ISelection selection = window.getSelectionService().getSelection();
-        IStructuredSelection selectionToPass = StructuredSelection.EMPTY;
-        if (selection instanceof IStructuredSelection) {
-            selectionToPass = wizardElement
-                    .adaptedSelection((IStructuredSelection) selection);
-        } else {
-            // Build the selection from the IFile of the editor
-            IWorkbenchPart part = window.getPartService().getActivePart();
-            if (part instanceof IEditorPart) {
-                IEditorInput input = ((IEditorPart) part).getEditorInput();
-                Class fileClass = LegacyResourceSupport.getFileClass();
-                if (input != null && fileClass != null) {
-                    Object file = Util.getAdapter(input, fileClass);
-                    if (file != null) {
-                        selectionToPass = new StructuredSelection(file);
-                    }
-                }
-            }
-        }
-
-        // even tho we MAY finish early without showing a dialog, prep the
-		// wizard with a dialog and such in case it's logic requires it
-		// - yes, it wastes a dialog but they are plentiful...
-		wizard.init(window.getWorkbench(), selectionToPass);
-
-        Shell parent = window.getShell();
-        WizardDialog dialog = new WizardDialog(parent, wizard);
-        dialog.create();
-        Point defaultSize = dialog.getShell().getSize();
-        dialog.getShell().setSize(
-                Math.max(SIZING_WIZARD_WIDTH, defaultSize.x),
-                Math.max(SIZING_WIZARD_HEIGHT, defaultSize.y));
-        window.getWorkbench().getHelpSystem().setHelp(dialog.getShell(),
-				IWorkbenchHelpContextIds.NEW_WIZARD_SHORTCUT);
-        
-        // if the wizard can finish early and doesn't have any pages, just finish it.
-        if (wizardElement.canFinishEarly() && !wizardElement.hasPages()) {
-			wizard.performFinish();
-			dialog.close();
-		} else {
-			dialog.open();
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-    	IPluginContribution contribution = getPluginContribution();
-    	if (contribution != null) {
-			return contribution.getLocalId();
-		}
-    	return wizardElement.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-    	IPluginContribution contribution = getPluginContribution();
-    	if (contribution != null) {
-			return contribution.getPluginId();
-		}
-    	return null;
-    }
-    
-    /**
-     * Return the plugin contribution associated with the wizard.
-     * 
-     * @return the contribution or <code>null</code>
-     * @since 3.1
-     */
-    private IPluginContribution getPluginContribution() {
-		return (IPluginContribution) Util.getAdapter(wizardElement,
-				IPluginContribution.class);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/PinEditorContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/PinEditorContributionItem.java
deleted file mode 100644
index 701f3aa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/PinEditorContributionItem.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.PinEditorAction;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-
-/**
- * This contribution item controls the visibility of the pin editor
- * action based on the current preference value for reusing editors.
- * 
- * @since 3.0
- */
-public class PinEditorContributionItem extends ActionContributionItem {
-    private IWorkbenchWindow window = null;
-
-    private boolean reuseEditors = false;
-
-    private IPropertyChangeListener prefListener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            if (event.getProperty().equals(
-					IPreferenceConstants.REUSE_EDITORS_BOOLEAN)) {
-                if (getParent() != null) {
-                    IPreferenceStore store = WorkbenchPlugin.getDefault()
-                            .getPreferenceStore();
-					reuseEditors = store
-							.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)
-							|| ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).alwaysShowPinAction();
-                    setVisible(reuseEditors);
-                    getParent().markDirty();
-                    if (window.getShell() != null
-                            && !window.getShell().isDisposed()) {
-                        // this property change notification could be from a non-ui thread
-                        window.getShell().getDisplay().syncExec(new Runnable() {
-                            public void run() {
-                                getParent().update(false);
-                            }
-                        });
-                    }
-                }
-            }
-        }
-    };
-
-    /**
-     * @param action
-     */
-    public PinEditorContributionItem(PinEditorAction action,
-            IWorkbenchWindow window) {
-        super(action);
-
-        if (window == null) {
-            throw new IllegalArgumentException();
-        }
-        this.window = window;
-
-        IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
-		reuseEditors = store
-				.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)
-				|| ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).alwaysShowPinAction();
-        setVisible(reuseEditors);
-        WorkbenchPlugin.getDefault().getPreferenceStore()
-                .addPropertyChangeListener(prefListener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isVisible()
-     */
-    public boolean isVisible() {
-        // @issue the ActionContributionItem implementation of this method ignores the "visible" value set
-        return super.isVisible() && reuseEditors;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        WorkbenchPlugin.getDefault().getPreferenceStore()
-                .removePropertyChangeListener(prefListener);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java
deleted file mode 100644
index fd484fc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetAction.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.actions;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Displays an IWorkingSetSelectionDialog and sets the selected 
- * working set in the action group.
- * 
- * @since 2.1
- */
-public class SelectWorkingSetAction extends Action {
-    private Shell shell;
-
-    private WorkingSetFilterActionGroup actionGroup;
-
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @param actionGroup the action group this action is created in
-     * @param shell shell to use for opening working set selection dialog.
-     */
-    public SelectWorkingSetAction(WorkingSetFilterActionGroup actionGroup,
-            Shell shell) {
-        super(WorkbenchMessages.SelectWorkingSetAction_text); 
-        Assert.isNotNull(actionGroup);
-        setToolTipText(WorkbenchMessages.SelectWorkingSetAction_toolTip); 
-
-        this.shell = shell;
-        this.actionGroup = actionGroup;
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
-				IWorkbenchHelpContextIds.SELECT_WORKING_SET_ACTION);
-    }
-
-    /**
-     * Overrides method from Action
-     * 
-     * @see Action#run()
-     */
-    public void run() {
-        IWorkingSetManager manager = PlatformUI.getWorkbench()
-                .getWorkingSetManager();
-        IWorkingSetSelectionDialog dialog = manager
-                .createWorkingSetSelectionDialog(shell, false);
-        IWorkingSet workingSet = actionGroup.getWorkingSet();
-
-        if (workingSet != null) {
-			dialog.setSelection(new IWorkingSet[] { workingSet });
-		}
-
-        if (dialog.open() == Window.OK) {
-            IWorkingSet[] result = dialog.getSelection();
-            if (result != null && result.length > 0) {
-                actionGroup.setWorkingSet(result[0]);
-                manager.addRecentWorkingSet(result[0]);
-            } else {
-                actionGroup.setWorkingSet(null);
-            }
-        } else {
-			actionGroup.setWorkingSet(workingSet);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java
deleted file mode 100644
index e943a73..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/actions/SelectWorkingSetsAction.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.actions;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.dialogs.SimpleWorkingSetSelectionDialog;
-
-/**
- * Action to select the visible working sets for a given workbench page.
- * 
- * @since 3.2
- */
-public class SelectWorkingSetsAction extends AbstractWorkingSetPulldownDelegate  {
-
-	private class ManageWorkingSetsAction extends Action {
-
-		ManageWorkingSetsAction() {
-			super(WorkbenchMessages.Edit);
-		}
-
-		public void run() {
-			SelectWorkingSetsAction.this.run(this);
-		}
-	}
-
-	private class ToggleWorkingSetAction extends Action {
-		private IWorkingSet set;
-
-		ToggleWorkingSetAction(IWorkingSet set) {
-			super(set.getLabel(), IAction.AS_CHECK_BOX);
-			setImageDescriptor(set.getImageDescriptor());
-			this.set = set;
-			setChecked(isWorkingSetEnabled(set));
-		}
-
-		public void runWithEvent(Event event) {
-			
-			Set newList = new HashSet(Arrays.asList(getWindow().getActivePage()
-					.getWorkingSets()));
-
-			if (isChecked()) {
-				// if the primary modifier key is down then clear the list
-				// first. this makes the selection exclusive rather than
-				// additive.
-				boolean modified = (event.stateMask & KeyLookupFactory
-						.getDefault().formalModifierLookup(IKeyLookup.M1_NAME)) != 0;
-				
-				if (modified) 
-					newList.clear();
-				newList.add(set);
-			} else {
-				newList.remove(set);
-			}
-
-			getWindow().getActivePage().setWorkingSets(
-					(IWorkingSet[]) newList.toArray(new IWorkingSet[newList
-							.size()]));
-		}
-	}
-
-	protected void fillMenu(Menu menu) {
-		IWorkingSet[][] typedSets = splitSets();
-
-		for (int i = 0; i < typedSets.length; i++) {
-			IWorkingSet[] sets = typedSets[i];
-			for (int j = 0; j < sets.length; j++) {
-				IWorkingSet set = sets[j];
-
-				// only add visible sets
-				// if (set.isVisible()) {
-				ActionContributionItem item = new ActionContributionItem(
-						new ToggleWorkingSetAction(set));
-				item.fill(menu, -1);
-				// }
-			}
-			Separator separator = new Separator();
-			separator.fill(menu, -1);
-		}
-
-		ActionContributionItem item = new ActionContributionItem(
-				new ManageWorkingSetsAction());
-		item.fill(menu, -1);
-
-	}
-
-	private IWorkingSet[] getEnabledSets() {
-		return getWindow().getActivePage().getWorkingSets();
-	}
-
-	private boolean isWorkingSetEnabled(IWorkingSet set) {
-		IWorkingSet[] enabledSets = getEnabledSets();
-		for (int i = 0; i < enabledSets.length; i++) {
-			if (enabledSets[i].equals(set)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	public void run(IAction action) {
-		ConfigureWindowWorkingSetsDialog dialog = new ConfigureWindowWorkingSetsDialog(
-				getWindow());
-		if (dialog.open() == Window.OK) {
-
-		}
-
-	}
-}
-
-class ConfigureWindowWorkingSetsDialog extends SimpleWorkingSetSelectionDialog {
-
-	private IWorkbenchWindow window;
-	
-	protected ConfigureWindowWorkingSetsDialog(IWorkbenchWindow window) {
-		super(window.getShell(), null, window.getActivePage().getWorkingSets(), true);
-		this.window = window;
-		setTitle(WorkbenchMessages.WorkingSetSelectionDialog_title_multiSelect);
-		setMessage(WorkbenchMessages.WorkingSetSelectionDialog_message_multiSelect);
-	}
-	
-	protected void okPressed() {
-		super.okPressed();
-		window.getActivePage().setWorkingSets(getSelection());
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityManager.java
deleted file mode 100644
index cbee560..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityManager.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.IActivityManagerListener;
-
-public abstract class AbstractActivityManager implements IActivityManager {
-    private List activityManagerListeners;
-
-    protected AbstractActivityManager() {
-    }
-
-    public void addActivityManagerListener(
-            IActivityManagerListener activityManagerListener) {
-        if (activityManagerListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityManagerListeners == null) {
-			activityManagerListeners = new ArrayList();
-		}
-
-        if (!activityManagerListeners.contains(activityManagerListener)) {
-			activityManagerListeners.add(activityManagerListener);
-		}
-    }
-
-    protected void fireActivityManagerChanged(
-            ActivityManagerEvent activityManagerEvent) {
-        if (activityManagerEvent == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityManagerListeners != null) {
-			for (int i = 0; i < activityManagerListeners.size(); i++) {
-				((IActivityManagerListener) activityManagerListeners.get(i))
-                        .activityManagerChanged(activityManagerEvent);
-			}
-		}
-    }
-
-    public void removeActivityManagerListener(
-            IActivityManagerListener activityManagerListener) {
-        if (activityManagerListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityManagerListeners != null) {
-			activityManagerListeners.remove(activityManagerListener);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java
deleted file mode 100644
index b62d0eb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/AbstractActivityRegistry.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public abstract class AbstractActivityRegistry implements IActivityRegistry {
-    protected List activityRequirementBindingDefinitions = Collections.EMPTY_LIST;
-
-    protected List activityDefinitions = Collections.EMPTY_LIST;
-
-    protected List activityPatternBindingDefinitions = Collections.EMPTY_LIST;
-
-    private ActivityRegistryEvent activityRegistryEvent;
-
-    private List activityRegistryListeners;
-
-    protected List categoryActivityBindingDefinitions = Collections.EMPTY_LIST;
-
-    protected List categoryDefinitions = Collections.EMPTY_LIST;
-
-    protected List defaultEnabledActivities = Collections.EMPTY_LIST;
-
-    protected AbstractActivityRegistry() {
-    }
-
-    public void addActivityRegistryListener(
-            IActivityRegistryListener activityRegistryListener) {
-        if (activityRegistryListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityRegistryListeners == null) {
-			activityRegistryListeners = new ArrayList();
-		}
-
-        if (!activityRegistryListeners.contains(activityRegistryListener)) {
-			activityRegistryListeners.add(activityRegistryListener);
-		}
-    }
-
-    protected void fireActivityRegistryChanged() {
-        if (activityRegistryListeners != null) {
-            for (int i = 0; i < activityRegistryListeners.size(); i++) {
-                if (activityRegistryEvent == null) {
-					activityRegistryEvent = new ActivityRegistryEvent(this);
-				}
-
-                ((IActivityRegistryListener) activityRegistryListeners.get(i))
-                        .activityRegistryChanged(activityRegistryEvent);
-            }
-        }
-    }
-
-    public List getActivityRequirementBindingDefinitions() {
-        return activityRequirementBindingDefinitions;
-    }
-
-    public List getActivityDefinitions() {
-        return activityDefinitions;
-    }
-
-    public List getActivityPatternBindingDefinitions() {
-        return activityPatternBindingDefinitions;
-    }
-
-    public List getCategoryActivityBindingDefinitions() {
-        return categoryActivityBindingDefinitions;
-    }
-
-    public List getCategoryDefinitions() {
-        return categoryDefinitions;
-    }
-
-    public void removeActivityRegistryListener(
-            IActivityRegistryListener activityRegistryListener) {
-        if (activityRegistryListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityRegistryListeners != null) {
-			activityRegistryListeners.remove(activityRegistryListener);
-		}
-    }
-
-    public List getDefaultEnabledActivities() {
-        return defaultEnabledActivities;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Activity.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Activity.java
deleted file mode 100644
index dc3d7fa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Activity.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.activities.ActivityEvent;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityListener;
-import org.eclipse.ui.activities.IActivityPatternBinding;
-import org.eclipse.ui.activities.IActivityRequirementBinding;
-import org.eclipse.ui.activities.NotDefinedException;
-import org.eclipse.ui.internal.util.Util;
-
-final class Activity implements IActivity {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = Activity.class.getName().hashCode();
-
-    private final static Set strongReferences = new HashSet();
-
-    private Set activityRequirementBindings;
-
-    private transient IActivityRequirementBinding[] activityRequirementBindingsAsArray;
-
-    private List activityListeners;
-
-    private Set activityPatternBindings;
-
-    private transient IActivityPatternBinding[] activityPatternBindingsAsArray;
-
-    private boolean defined;
-
-    private boolean enabled;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String id;
-
-    private String name;
-
-    private transient String string;
-
-    private String description;
-    
-    private boolean defaultEnabled;
-
-	private Expression expression;
-
-    Activity(String id) {
-        if (id == null) {
-			throw new NullPointerException();
-		}
-
-        this.id = id;
-    }
-
-    public void addActivityListener(IActivityListener activityListener) {
-        if (activityListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityListeners == null) {
-			activityListeners = new ArrayList();
-		}
-
-        if (!activityListeners.contains(activityListener)) {
-			activityListeners.add(activityListener);
-		}
-
-        strongReferences.add(this);
-    }
-
-    public int compareTo(Object object) {
-        Activity castedObject = (Activity) object;
-
-        int compareTo = Util.compare(
-                activityRequirementBindingsAsArray,
-                castedObject.activityRequirementBindingsAsArray);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(
-                    activityPatternBindingsAsArray,
-                    castedObject.activityPatternBindingsAsArray);
-
-            if (compareTo == 0) {
-                compareTo = Util.compare(defined, castedObject.defined);
-
-                if (compareTo == 0) {
-                    compareTo = Util.compare(enabled, castedObject.enabled);
-
-                    if (compareTo == 0) {
-                        compareTo = Util.compare(id, castedObject.id);
-
-                        if (compareTo == 0) {
-							compareTo = Util.compare(name, castedObject.name);
-						}
-                    }
-                }
-            }
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof Activity)) {
-			return false;
-		}
-
-        final Activity castedObject = (Activity) object;
-
-        if (!Util.equals(activityRequirementBindings,
-                castedObject.activityRequirementBindings)) {
-            return false;
-        }
-
-        if (!Util.equals(activityPatternBindings,
-                castedObject.activityPatternBindings)) {
-            return false;
-        }
-
-        if (!Util.equals(defined, castedObject.defined)) {
-            return false;
-        }
-
-        if (!Util.equals(enabled, castedObject.enabled)) {
-            return false;
-        }
-
-        if (!Util.equals(id, castedObject.id)) {
-            return false;
-        }
-
-        return Util.equals(name, castedObject.name);
-    }
-
-    void fireActivityChanged(ActivityEvent activityEvent) {
-        if (activityEvent == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityListeners != null) {
-			for (int i = 0; i < activityListeners.size(); i++) {
-				((IActivityListener) activityListeners.get(i))
-                        .activityChanged(activityEvent);
-			}
-		}
-    }
-
-    public Set getActivityRequirementBindings() {
-        return activityRequirementBindings;
-    }
-
-    public Set getActivityPatternBindings() {
-        return activityPatternBindings;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getName() throws NotDefinedException {
-        if (!defined) {
-			throw new NotDefinedException();
-		}
-
-        return name;
-    }
-    
-    public Expression getExpression() {
-    	return expression;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR
-                    + Util.hashCode(activityRequirementBindings);
-            hashCode = hashCode * HASH_FACTOR
-                    + Util.hashCode(activityPatternBindings);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(defined);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(enabled);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(id);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(name);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public boolean isDefined() {
-        return defined;
-    }
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    public boolean isMatch(String string) {
-        if (isDefined()) {
-			for (Iterator iterator = activityPatternBindings.iterator(); iterator
-                    .hasNext();) {
-                ActivityPatternBinding activityPatternBinding = (ActivityPatternBinding) iterator
-                        .next();
-
-                if (activityPatternBinding.isMatch(string)) {
-					return true;
-				}
-            }
-		}
-
-        return false;
-    }
-
-    public void removeActivityListener(IActivityListener activityListener) {
-        if (activityListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (activityListeners != null) {
-			activityListeners.remove(activityListener);
-		}
-
-        if (activityListeners.isEmpty()) {
-			strongReferences.remove(this);
-		}
-    }
-
-    boolean setActivityRequirementBindings(Set activityRequirementBindings) {
-        activityRequirementBindings = Util.safeCopy(
-                activityRequirementBindings, IActivityRequirementBinding.class);
-
-        if (!Util.equals(activityRequirementBindings,
-                this.activityRequirementBindings)) {
-            this.activityRequirementBindings = activityRequirementBindings;
-            this.activityRequirementBindingsAsArray = (IActivityRequirementBinding[]) this.activityRequirementBindings
-                    .toArray(new IActivityRequirementBinding[this.activityRequirementBindings
-                            .size()]);
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setActivityPatternBindings(Set activityPatternBindings) {
-        activityPatternBindings = Util.safeCopy(activityPatternBindings,
-                IActivityPatternBinding.class);
-
-        if (!Util.equals(activityPatternBindings, this.activityPatternBindings)) {
-            this.activityPatternBindings = activityPatternBindings;
-            this.activityPatternBindingsAsArray = (IActivityPatternBinding[]) this.activityPatternBindings
-                    .toArray(new IActivityPatternBinding[this.activityPatternBindings
-                            .size()]);
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setDefined(boolean defined) {
-        if (defined != this.defined) {
-            this.defined = defined;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setEnabled(boolean enabled) {
-        if (enabled != this.enabled) {
-            this.enabled = enabled;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setName(String name) {
-        if (!Util.equals(name, this.name)) {
-            this.name = name;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-    
-    void setExpression(Expression exp) {
-    	expression = exp;
-    }
-
-    boolean setDescription(String description) {
-        if (!Util.equals(description, this.description)) {
-            this.description = description;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(activityRequirementBindings);
-            stringBuffer.append(',');
-            stringBuffer.append(activityPatternBindings);
-            stringBuffer.append(',');
-            stringBuffer.append(defined);
-            stringBuffer.append(',');
-            stringBuffer.append(enabled);
-            stringBuffer.append(',');
-            stringBuffer.append(id);
-            stringBuffer.append(',');
-            stringBuffer.append(name);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#getDescription()
-     */
-    public String getDescription() throws NotDefinedException {
-        if (!defined) {
-			throw new NotDefinedException();
-		}
-
-        return description;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#isDefaultEnabled()
-     */
-    public boolean isDefaultEnabled() {
-        return defaultEnabled;
-    }
-    
-    boolean setDefaultEnabled(boolean defaultEnabled) {
-        if (!Util.equals(defaultEnabled, this.defaultEnabled)) {
-            this.defaultEnabled = defaultEnabled;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;        
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityDefinition.java
deleted file mode 100644
index 923fd90..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityDefinition.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.internal.util.Util;
-
-public final class ActivityDefinition implements Comparable {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = ActivityDefinition.class.getName()
-            .hashCode();
-
-    static Map activityDefinitionsById(Collection activityDefinitions,
-            boolean allowNullIds) {
-        if (activityDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = activityDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util.assertInstance(object, ActivityDefinition.class);
-            ActivityDefinition activityDefinition = (ActivityDefinition) object;
-            String id = activityDefinition.getId();
-
-            if (allowNullIds || id != null) {
-				map.put(id, activityDefinition);
-			}
-        }
-
-        return map;
-    }
-
-    static Map activityDefinitionsByName(Collection activityDefinitions,
-            boolean allowNullNames) {
-        if (activityDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = activityDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util.assertInstance(object, ActivityDefinition.class);
-            ActivityDefinition activityDefinition = (ActivityDefinition) object;
-            String name = activityDefinition.getName();
-
-            if (allowNullNames || name != null) {
-                Collection activityDefinitions2 = (Collection) map.get(name);
-
-                if (activityDefinitions2 == null) {
-                    activityDefinitions2 = new HashSet();
-                    map.put(name, activityDefinitions2);
-                }
-
-                activityDefinitions2.add(activityDefinition);
-            }
-        }
-
-        return map;
-    }
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String id;
-
-    private String name;
-
-    private String sourceId;
-
-    private String description;
-
-    private transient String string;
-
-	private Expression enabledWhen;
-
-    public ActivityDefinition(String id, String name, String sourceId,
-            String description) {
-        this.id = id;
-        this.name = name;
-        this.sourceId = sourceId;
-        this.description = description;
-    }
-
-    public int compareTo(Object object) {
-        ActivityDefinition castedObject = (ActivityDefinition) object;
-        int compareTo = Util.compare(id, castedObject.id);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(name, castedObject.name);
-
-            if (compareTo == 0) {
-				compareTo = Util.compare(sourceId, castedObject.sourceId);
-			}
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof ActivityDefinition)) {
-			return false;
-		}
-
-        final ActivityDefinition castedObject = (ActivityDefinition) object;
-        if (!Util.equals(id, castedObject.id)) {
-            return false;
-        }
-
-        if (!Util.equals(name, castedObject.name)) {
-            return false;
-        }
-
-        return Util.equals(sourceId, castedObject.sourceId);
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getSourceId() {
-        return sourceId;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(id);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(name);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(sourceId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(id);
-            stringBuffer.append(',');
-            stringBuffer.append(name);
-            stringBuffer.append(',');
-            stringBuffer.append(sourceId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-    
-    void setEnabledWhen(Expression expression) {
-    	enabledWhen = expression;
-    }
-    
-    public Expression getEnabledWhen() {
-    	return enabledWhen;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBinding.java
deleted file mode 100644
index 2b1138c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBinding.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.regex.Pattern;
-
-import org.eclipse.ui.activities.IActivityPatternBinding;
-import org.eclipse.ui.internal.util.Util;
-
-public final class ActivityPatternBinding implements IActivityPatternBinding {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = ActivityPatternBinding.class
-            .getName().hashCode();
-
-    private String activityId;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private Pattern pattern;
-    
-    private String patternString;
-    
-    private boolean isEqualityPattern;
-
-    private transient String string;
-    
-    /**
-     * @param activityId The id.
-     * @param pattern A string that will be compiled to a pattern matcher.
-     */
-    public ActivityPatternBinding(String activityId, String pattern) {
-    	this(activityId, Pattern.compile(pattern));
-    }
-    
-    /**
-     *  
-     * @param activityId The id
-     * @param pattern This string will be used as plain string, or as pattern-
-     * 		  matcher pattern. The use depends on parameter <code>nonRegExp</code>.
-     * @param isEqualityPattern If true the <code>pattern</code> string will be
-     * 	      interpreted as normal string, not as pattern. 
-     */
-    public ActivityPatternBinding(String activityId, String pattern, boolean
-    		isEqualityPattern) {
-    	if (pattern == null) {
-			throw new NullPointerException();
-		}
-    	
-    	this.activityId = activityId;
-    	this.isEqualityPattern = isEqualityPattern;
-    	if (isEqualityPattern) {
-    		this.patternString = pattern;    		
-    		this.pattern = null;
-    	} else {    		
-    		this.patternString = null;
-    		this.pattern = Pattern.compile(pattern);
-    	}    
-    }
-
-    public ActivityPatternBinding(String activityId, Pattern pattern) {
-        if (pattern == null) {
-			throw new NullPointerException();
-		}
-
-        this.activityId = activityId;
-        this.pattern = pattern;
-        this.isEqualityPattern = false;
-        this.patternString = null;
-    }
-
-    public int compareTo(Object object) {
-        ActivityPatternBinding castedObject = (ActivityPatternBinding) object;
-        int compareTo = Util.compare(activityId, castedObject.activityId);
-
-        if (compareTo == 0) {        	
-        	compareTo = Util.compare(isEqualityPattern,
-					castedObject.isEqualityPattern);
-        	
-        	if (compareTo == 0)
-				compareTo = Util.compare(getPattern().pattern(), castedObject
-						.getPattern().pattern());
-		}
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof ActivityPatternBinding)) {
-			return false;
-		}
-
-        final ActivityPatternBinding castedObject = (ActivityPatternBinding) object;
-        if (!Util.equals(activityId, castedObject.activityId)) {
-            return false;
-        }
-        
-        if (!Util.equals(isEqualityPattern, castedObject.isEqualityPattern)) {
-            return false;
-        }
-
-        return Util.equals(getPattern(), castedObject.getPattern());
-    }
-
-    public String getActivityId() {
-        return activityId;
-    }
-    
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.activities.IActivityPatternBinding#getPattern()
-	 */
-    public Pattern getPattern() {
-    	if (pattern == null) {
-    		pattern = Pattern.compile(PatternUtil.quotePattern(patternString));    		
-    	}
-    	return pattern;
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivityPatternBinding#getString()
-     */
-    public String getString() {
-    	if (isEqualityPattern) {
-    		return patternString;
-    	}
-    	return getPattern().pattern();
-    }
-    
-    /* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.IActivityPatternBinding#isEqualityPattern()
-	 */
-	public boolean isEqualityPattern() {
-		return isEqualityPattern;
-	}
-    
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(pattern);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(activityId);
-            stringBuffer.append(',');
-            stringBuffer.append(isEqualityPattern());
-            stringBuffer.append(',');
-            stringBuffer.append(getString());
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-
-	/**
-	 * Returns whether this binding's pattern matches the given string.
-	 * 
-	 * @param toMatch the string to match
-	 * @return <code>true</code> if it matches, <code>false</code> if not
-     * @since 3.1
-	 */
-	public boolean isMatch(String toMatch) {
-		if (isEqualityPattern) {
-			return patternString.equals(toMatch);
-		}
-		return pattern.matcher(toMatch).matches();		
-	}	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java
deleted file mode 100644
index ff84c8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPatternBindingDefinition.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ui.internal.util.Util;
-
-public final class ActivityPatternBindingDefinition {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = ActivityPatternBindingDefinition.class
-            .getName().hashCode();
-
-    static Map activityPatternBindingDefinitionsByActivityId(
-            Collection activityPatternBindingDefinitions) {
-        if (activityPatternBindingDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = activityPatternBindingDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util.assertInstance(object, ActivityPatternBindingDefinition.class);
-            ActivityPatternBindingDefinition activityPatternBindingDefinition = (ActivityPatternBindingDefinition) object;
-            String activityId = activityPatternBindingDefinition
-                    .getActivityId();
-
-            if (activityId != null) {
-                Collection activityPatternBindingDefinitions2 = (Collection) map
-                        .get(activityId);
-
-                if (activityPatternBindingDefinitions2 == null) {
-                    activityPatternBindingDefinitions2 = new ArrayList();
-                    map.put(activityId, activityPatternBindingDefinitions2);
-                }
-
-                activityPatternBindingDefinitions2
-                        .add(activityPatternBindingDefinition);
-            }
-        }
-
-        return map;
-    }
-
-    private String activityId;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String pattern;
-
-    private String sourceId;
-
-    private transient String string;
-    
-    /**
-     * If the string is taken "as is", without interpreting it as a regular
-     * expression.
-     */
-    private boolean isEqualityPattern;
-
-    public ActivityPatternBindingDefinition(String activityId, String pattern,
-            String sourceId) {
-    	this(activityId, pattern, sourceId, false);
-    }
-    
-    public ActivityPatternBindingDefinition(String activityId, String pattern,
-			String sourceId, boolean isEqualityPattern) {
-		this.activityId = activityId;
-		this.pattern = pattern;
-		this.sourceId = sourceId;
-		this.isEqualityPattern = isEqualityPattern;
-	}
-
-    public int compareTo(Object object) {
-        ActivityPatternBindingDefinition castedObject = (ActivityPatternBindingDefinition) object;
-        int compareTo = Util.compare(activityId, castedObject.activityId);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(pattern, castedObject.pattern);
-
-            if (compareTo == 0) {
-            	compareTo = Util.compare(isEqualityPattern, castedObject.isEqualityPattern);
-            	
-            	if (compareTo == 0)
-            		compareTo = Util.compare(sourceId, castedObject.sourceId);
-			}
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof ActivityPatternBindingDefinition)) {
-			return false;
-		}
-
-        final ActivityPatternBindingDefinition castedObject = (ActivityPatternBindingDefinition) object;
-        if (!Util.equals(activityId, castedObject.activityId)) {
-            return false;
-        }
-
-        if (!Util.equals(pattern, castedObject.pattern)) {
-            return false;
-        }
-        
-        if (!Util.equals(isEqualityPattern, castedObject.isEqualityPattern)) {
-            return false;
-        }
-        
-        return Util.equals(sourceId, castedObject.sourceId);
-    }
-
-    public String getActivityId() {
-        return activityId;
-    }
-
-    public String getPattern() {
-        return pattern;
-    }
-
-    public String getSourceId() {
-        return sourceId;
-    }
-    
-    public boolean isEqualityPattern() {
-    	return isEqualityPattern;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(pattern);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(sourceId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(activityId);
-            stringBuffer.append(',');
-            stringBuffer.append(isEqualityPattern);
-            stringBuffer.append(',');
-            stringBuffer.append(pattern);
-            stringBuffer.append(',');
-            stringBuffer.append(sourceId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPropertyTester.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPropertyTester.java
deleted file mode 100644
index b579984..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityPropertyTester.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal.activities;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-
-/**
- * An expressions property tester that tests whether or not an activity or
- * category of activities is enabled. Useful for cross-component links and to
- * control discoverability of functionality.
- * 
- * @since 3.3
- */
-public class ActivityPropertyTester extends PropertyTester {
-
-	private static final String PROPERTY_IS_ACTIVITY_ENABLED = "isActivityEnabled"; //$NON-NLS-1$
-	private static final String PROPERTY_IS_CATEGORY_ENABLED = "isCategoryEnabled"; //$NON-NLS-1$
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.expressions.PropertyTester#test(java.lang.Object,
-	 *      java.lang.String, java.lang.Object[], java.lang.Object)
-	 */
-	public boolean test(Object receiver, String property, Object[] args,
-			Object expectedValue) {
-		if (args.length == 1 && receiver instanceof IWorkbench && args[0] instanceof String) {
-			if (PROPERTY_IS_ACTIVITY_ENABLED.equals(property)) {
-				return isActivityEnabled((String) args[0], (IWorkbench)receiver);
-			} else if (PROPERTY_IS_CATEGORY_ENABLED.equals(property)) {
-				return isCategoryEnabled((String) args[0], (IWorkbench)receiver);
-			}
-		}
-		return false;
-	}
-
-	private static boolean isActivityEnabled(String activityId, IWorkbench workbench) {
-		try {
-			IWorkbenchActivitySupport workbenchActivitySupport =
-					workbench.getActivitySupport();
-			IActivityManager activityManager = workbenchActivitySupport
-					.getActivityManager();
-			return activityManager.getActivity(activityId).isEnabled();
-		} catch (Exception e) {
-			// workbench not yet activated; nothing enabled yet
-		}
-		return false;
-	}
-
-	private static boolean isCategoryEnabled(String categoryId, IWorkbench workbench) {
-		try {
-			IWorkbenchActivitySupport workbenchActivitySupport =
-					workbench.getActivitySupport();
-			IActivityManager activityManager = workbenchActivitySupport
-					.getActivityManager();
-			return WorkbenchActivityHelper.isEnabled(activityManager,
-					categoryId);
-		} catch (Exception e) {
-			// workbench not yet activated; nothing enabled yet
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java
deleted file mode 100644
index cf8a5b0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRegistryEvent.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-final class ActivityRegistryEvent {
-    private IActivityRegistry activityRegistry;
-
-    ActivityRegistryEvent(IActivityRegistry activityRegistry) {
-        if (activityRegistry == null) {
-			throw new NullPointerException();
-		}
-
-        this.activityRegistry = activityRegistry;
-    }
-
-    IActivityRegistry getActivityRegistry() {
-        return activityRegistry;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java
deleted file mode 100644
index 3582538..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBinding.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import org.eclipse.ui.activities.IActivityRequirementBinding;
-import org.eclipse.ui.internal.util.Util;
-
-public final class ActivityRequirementBinding implements
-        IActivityRequirementBinding {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = ActivityRequirementBinding.class
-            .getName().hashCode();
-
-    private String requiredActivityId;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String activityId;
-
-    private transient String string;
-
-    public ActivityRequirementBinding(String requiredActivityId,
-            String activityId) {
-        if (requiredActivityId == null || activityId == null) {
-			throw new NullPointerException();
-		}
-
-        this.requiredActivityId = requiredActivityId;
-        this.activityId = activityId;
-    }
-
-    public int compareTo(Object object) {
-        ActivityRequirementBinding castedObject = (ActivityRequirementBinding) object;
-        int compareTo = Util.compare(requiredActivityId,
-                castedObject.requiredActivityId);
-
-        if (compareTo == 0) {
-			compareTo = Util.compare(activityId, castedObject.activityId);
-		}
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof ActivityRequirementBinding)) {
-			return false;
-		}
-
-        final ActivityRequirementBinding castedObject = (ActivityRequirementBinding) object;
-        if (!Util.equals(requiredActivityId, castedObject.requiredActivityId)) {
-            return false;
-        }
-
-        return Util.equals(activityId, castedObject.activityId);
-    }
-
-    public String getRequiredActivityId() {
-        return requiredActivityId;
-    }
-
-    public String getActivityId() {
-        return activityId;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR
-                    + Util.hashCode(requiredActivityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(requiredActivityId);
-            stringBuffer.append(',');
-            stringBuffer.append(activityId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java
deleted file mode 100644
index 4d02c59..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ActivityRequirementBindingDefinition.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ui.internal.util.Util;
-
-public final class ActivityRequirementBindingDefinition {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = ActivityRequirementBindingDefinition.class
-            .getName().hashCode();
-
-    static Map activityRequirementBindingDefinitionsByActivityId(
-            Collection activityRequirementBindingDefinitions) {
-        if (activityRequirementBindingDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = activityRequirementBindingDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util.assertInstance(object,
-                    ActivityRequirementBindingDefinition.class);
-            ActivityRequirementBindingDefinition activityRequirementBindingDefinition = (ActivityRequirementBindingDefinition) object;
-            String parentActivityId = activityRequirementBindingDefinition
-                    .getActivityId();
-
-            if (parentActivityId != null) {
-                Collection activityRequirementBindingDefinitions2 = (Collection) map
-                        .get(parentActivityId);
-
-                if (activityRequirementBindingDefinitions2 == null) {
-                    activityRequirementBindingDefinitions2 = new HashSet();
-                    map.put(parentActivityId,
-                            activityRequirementBindingDefinitions2);
-                }
-
-                activityRequirementBindingDefinitions2
-                        .add(activityRequirementBindingDefinition);
-            }
-        }
-
-        return map;
-    }
-
-    private String requiredActivityId;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String activityId;
-
-    private String sourceId;
-
-    private transient String string;
-
-    public ActivityRequirementBindingDefinition(String requiredActivityId,
-            String activityId, String sourceId) {
-        this.requiredActivityId = requiredActivityId;
-        this.activityId = activityId;
-        this.sourceId = sourceId;
-    }
-
-    public int compareTo(Object object) {
-        ActivityRequirementBindingDefinition castedObject = (ActivityRequirementBindingDefinition) object;
-        int compareTo = Util.compare(requiredActivityId,
-                castedObject.requiredActivityId);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(activityId, castedObject.activityId);
-
-            if (compareTo == 0) {
-				compareTo = Util.compare(sourceId, castedObject.sourceId);
-			}
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof ActivityRequirementBindingDefinition)) {
-			return false;
-		}
-
-        final ActivityRequirementBindingDefinition castedObject = (ActivityRequirementBindingDefinition) object;
-        if (!Util.equals(requiredActivityId,
-                castedObject.requiredActivityId)) {
-            return false;
-        }
-        
-        if (!Util.equals(activityId, castedObject.activityId)) {
-            return false;
-        }
-        
-        return Util.equals(sourceId, castedObject.sourceId);
-    }
-
-    public String getRequiredActivityId() {
-        return requiredActivityId;
-    }
-
-    public String getActivityId() {
-        return activityId;
-    }
-
-    public String getSourceId() {
-        return sourceId;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR
-                    + Util.hashCode(requiredActivityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(sourceId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(requiredActivityId);
-            stringBuffer.append(',');
-            stringBuffer.append(activityId);
-            stringBuffer.append(',');
-            stringBuffer.append(sourceId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Category.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Category.java
deleted file mode 100644
index 2477d47..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Category.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.ui.activities.CategoryEvent;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.ICategoryActivityBinding;
-import org.eclipse.ui.activities.ICategoryListener;
-import org.eclipse.ui.activities.NotDefinedException;
-import org.eclipse.ui.internal.util.Util;
-
-final class Category implements ICategory {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = Category.class.getName().hashCode();
-
-    private final static Set strongReferences = new HashSet();
-
-    private Set categoryActivityBindings;
-
-    private transient ICategoryActivityBinding[] categoryActivityBindingsAsArray;
-
-    private List categoryListeners;
-
-    private boolean defined;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String id;
-
-    private String name;
-
-    private transient String string;
-
-    private String description;
-
-    Category(String id) {
-        if (id == null) {
-			throw new NullPointerException();
-		}
-
-        this.id = id;
-    }
-
-    public void addCategoryListener(ICategoryListener categoryListener) {
-        if (categoryListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (categoryListeners == null) {
-			categoryListeners = new ArrayList();
-		}
-
-        if (!categoryListeners.contains(categoryListener)) {
-			categoryListeners.add(categoryListener);
-		}
-
-        strongReferences.add(this);
-    }
-
-    public int compareTo(Object object) {
-        Category castedObject = (Category) object;
-        int compareTo = Util.compare(
-                categoryActivityBindingsAsArray,
-                castedObject.categoryActivityBindingsAsArray);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(defined, castedObject.defined);
-
-            if (compareTo == 0) {
-                compareTo = Util.compare(id, castedObject.id);
-
-                if (compareTo == 0) {
-					compareTo = Util.compare(name, castedObject.name);
-				}
-            }
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof Category)) {
-			return false;
-		}
-
-        final Category castedObject = (Category) object;
-        if (!Util.equals(categoryActivityBindings,
-                castedObject.categoryActivityBindings)) {
-            return false;
-        }
-        
-        if (!Util.equals(defined, castedObject.defined)) {
-            return false;
-        }
-        
-        if (!Util.equals(id, castedObject.id)) {
-            return false;
-        }
-        
-        return Util.equals(name, castedObject.name);
-    }
-
-    void fireCategoryChanged(CategoryEvent categoryEvent) {
-        if (categoryEvent == null) {
-			throw new NullPointerException();
-		}
-
-        if (categoryListeners != null) {
-			for (int i = 0; i < categoryListeners.size(); i++) {
-				((ICategoryListener) categoryListeners.get(i))
-                        .categoryChanged(categoryEvent);
-			}
-		}
-    }
-
-    public Set getCategoryActivityBindings() {
-        return categoryActivityBindings;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getName() throws NotDefinedException {
-        if (!defined) {
-			throw new NotDefinedException();
-		}
-
-        return name;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR
-                    + Util.hashCode(categoryActivityBindings);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(defined);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(id);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(name);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public boolean isDefined() {
-        return defined;
-    }
-
-    public void removeCategoryListener(ICategoryListener categoryListener) {
-        if (categoryListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (categoryListeners != null) {
-			categoryListeners.remove(categoryListener);
-		}
-
-        if (categoryListeners.isEmpty()) {
-			strongReferences.remove(this);
-		}
-    }
-
-    boolean setCategoryActivityBindings(Set categoryActivityBindings) {
-        categoryActivityBindings = Util.safeCopy(categoryActivityBindings,
-                ICategoryActivityBinding.class);
-
-        if (!Util.equals(categoryActivityBindings,
-                this.categoryActivityBindings)) {
-            this.categoryActivityBindings = categoryActivityBindings;
-            this.categoryActivityBindingsAsArray = (ICategoryActivityBinding[]) this.categoryActivityBindings
-                    .toArray(new ICategoryActivityBinding[this.categoryActivityBindings
-                            .size()]);
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setDefined(boolean defined) {
-        if (defined != this.defined) {
-            this.defined = defined;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setName(String name) {
-        if (!Util.equals(name, this.name)) {
-            this.name = name;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(categoryActivityBindings);
-            stringBuffer.append(',');
-            stringBuffer.append(defined);
-            stringBuffer.append(',');
-            stringBuffer.append(id);
-            stringBuffer.append(',');
-            stringBuffer.append(name);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.ICategory#getDescription()
-     */
-    public String getDescription() throws NotDefinedException {
-        if (!defined) {
-			throw new NotDefinedException();
-		}
-
-        return description;
-    }
-
-    public boolean setDescription(String description) {
-        if (!Util.equals(description, this.description)) {
-            this.description = description;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBinding.java
deleted file mode 100644
index 3ec6e8f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBinding.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import org.eclipse.ui.activities.ICategoryActivityBinding;
-import org.eclipse.ui.internal.util.Util;
-
-public final class CategoryActivityBinding implements ICategoryActivityBinding {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = CategoryActivityBinding.class
-            .getName().hashCode();
-
-    private String activityId;
-
-    private String categoryId;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private transient String string;
-
-    public CategoryActivityBinding(String activityId, String categoryId) {
-        if (activityId == null || categoryId == null) {
-			throw new NullPointerException();
-		}
-
-        this.activityId = activityId;
-        this.categoryId = categoryId;
-    }
-
-    public int compareTo(Object object) {
-        CategoryActivityBinding castedObject = (CategoryActivityBinding) object;
-        int compareTo = Util.compare(activityId, castedObject.activityId);
-
-        if (compareTo == 0) {
-			compareTo = Util.compare(categoryId, castedObject.categoryId);
-		}
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof CategoryActivityBinding)) {
-			return false;
-		}
-
-        final CategoryActivityBinding castedObject = (CategoryActivityBinding) object;
-        if (!Util.equals(activityId, castedObject.activityId)) {
-            return false;
-        }
-
-        return Util.equals(categoryId, castedObject.categoryId);
-    }
-
-    public String getActivityId() {
-        return activityId;
-    }
-
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL){
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(categoryId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(activityId);
-            stringBuffer.append(',');
-            stringBuffer.append(categoryId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java
deleted file mode 100644
index ae43135..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryActivityBindingDefinition.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ui.internal.util.Util;
-
-public final class CategoryActivityBindingDefinition {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = CategoryActivityBindingDefinition.class
-            .getName().hashCode();
-
-    static Map categoryActivityBindingDefinitionsByCategoryId(
-            Collection categoryActivityBindingDefinitions) {
-        if (categoryActivityBindingDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = categoryActivityBindingDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util
-                    .assertInstance(object,
-                            CategoryActivityBindingDefinition.class);
-            CategoryActivityBindingDefinition categoryActivityBindingDefinition = (CategoryActivityBindingDefinition) object;
-            String categoryId = categoryActivityBindingDefinition
-                    .getCategoryId();
-
-            if (categoryId != null) {
-                Collection categoryActivityBindingDefinitions2 = (Collection) map
-                        .get(categoryId);
-
-                if (categoryActivityBindingDefinitions2 == null) {
-                    categoryActivityBindingDefinitions2 = new HashSet();
-                    map.put(categoryId, categoryActivityBindingDefinitions2);
-                }
-
-                categoryActivityBindingDefinitions2
-                        .add(categoryActivityBindingDefinition);
-            }
-        }
-
-        return map;
-    }
-
-    private String activityId;
-
-    private String categoryId;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String sourceId;
-
-    private transient String string;
-
-    public CategoryActivityBindingDefinition(String activityId,
-            String categoryId, String sourceId) {
-        this.activityId = activityId;
-        this.categoryId = categoryId;
-        this.sourceId = sourceId;
-    }
-
-    public int compareTo(Object object) {
-        CategoryActivityBindingDefinition castedObject = (CategoryActivityBindingDefinition) object;
-        int compareTo = Util.compare(activityId, castedObject.activityId);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(categoryId, castedObject.categoryId);
-
-            if (compareTo == 0) {
-				compareTo = Util.compare(sourceId, castedObject.sourceId);
-			}
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof CategoryActivityBindingDefinition)) {
-			return false;
-		}
-
-        final CategoryActivityBindingDefinition castedObject = (CategoryActivityBindingDefinition) object;
-        if (!Util.equals(activityId, castedObject.activityId)) {
-            return false;
-        }
-
-        if (!Util.equals(categoryId, castedObject.categoryId)) {
-            return false;
-        }
-
-        return Util.equals(sourceId, castedObject.sourceId);
-    }
-
-    public String getActivityId() {
-        return activityId;
-    }
-
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    public String getSourceId() {
-        return sourceId;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(categoryId);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(sourceId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(activityId);
-            stringBuffer.append(',');
-            stringBuffer.append(categoryId);
-            stringBuffer.append(',');
-            stringBuffer.append(sourceId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryDefinition.java
deleted file mode 100644
index 2687bc5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/CategoryDefinition.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ui.internal.util.Util;
-
-public final class CategoryDefinition implements Comparable {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = CategoryDefinition.class.getName()
-            .hashCode();
-
-    static Map categoryDefinitionsById(Collection categoryDefinitions,
-            boolean allowNullIds) {
-        if (categoryDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = categoryDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util.assertInstance(object, CategoryDefinition.class);
-            CategoryDefinition categoryDefinition = (CategoryDefinition) object;
-            String id = categoryDefinition.getId();
-
-            if (allowNullIds || id != null) {
-				map.put(id, categoryDefinition);
-			}
-        }
-
-        return map;
-    }
-
-    static Map categoryDefinitionsByName(Collection categoryDefinitions,
-            boolean allowNullNames) {
-        if (categoryDefinitions == null) {
-			throw new NullPointerException();
-		}
-
-        Map map = new HashMap();
-        Iterator iterator = categoryDefinitions.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            Util.assertInstance(object, CategoryDefinition.class);
-            CategoryDefinition categoryDefinition = (CategoryDefinition) object;
-            String name = categoryDefinition.getName();
-
-            if (allowNullNames || name != null) {
-                Collection categoryDefinitions2 = (Collection) map.get(name);
-
-                if (categoryDefinitions2 == null) {
-                    categoryDefinitions2 = new HashSet();
-                    map.put(name, categoryDefinitions2);
-                }
-
-                categoryDefinitions2.add(categoryDefinition);
-            }
-        }
-
-        return map;
-    }
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String id;
-
-    private String name;
-
-    private String sourceId;
-
-    private transient String string;
-
-    private String description;
-
-    public CategoryDefinition(String id, String name, String sourceId,
-            String description) {
-        this.id = id;
-        this.name = name;
-        this.sourceId = sourceId;
-        this.description = description;
-    }
-
-    public int compareTo(Object object) {
-        CategoryDefinition castedObject = (CategoryDefinition) object;
-        int compareTo = Util.compare(id, castedObject.id);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(name, castedObject.name);
-
-            if (compareTo == 0) {
-				compareTo = Util.compare(sourceId, castedObject.sourceId);
-			}
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof CategoryDefinition)) {
-			return false;
-		}
-
-        final CategoryDefinition castedObject = (CategoryDefinition) object;
-        if (!Util.equals(id, castedObject.id)) {
-            return false;
-        }
-        
-        if (!Util.equals(name, castedObject.name)) {
-            return false;
-        }
-        
-        return Util.equals(sourceId, castedObject.sourceId);
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getSourceId() {
-        return sourceId;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(id);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(name);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(sourceId);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(id);
-            stringBuffer.append(',');
-            stringBuffer.append(name);
-            stringBuffer.append(',');
-            stringBuffer.append(sourceId);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java
deleted file mode 100644
index 82489c8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ExtensionActivityRegistry.java
+++ /dev/null
@@ -1,361 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.ConfigurationElementMemento;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-final class ExtensionActivityRegistry extends AbstractActivityRegistry {
-    private List activityRequirementBindingDefinitions;
-
-    private List activityDefinitions;
-
-    private List activityPatternBindingDefinitions;
-
-    private List categoryActivityBindingDefinitions;
-
-    private List categoryDefinitions;
-
-    private List defaultEnabledActivities;
-
-    private IExtensionRegistry extensionRegistry;
-
-    ExtensionActivityRegistry(IExtensionRegistry extensionRegistry) {
-        if (extensionRegistry == null) {
-			throw new NullPointerException();
-		}
-
-        this.extensionRegistry = extensionRegistry;
-
-        this.extensionRegistry
-                .addRegistryChangeListener(new IRegistryChangeListener() {
-                    public void registryChanged(
-                            IRegistryChangeEvent registryChangeEvent) {
-                        IExtensionDelta[] extensionDeltas = registryChangeEvent
-                                .getExtensionDeltas(Persistence.PACKAGE_PREFIX,
-                                        Persistence.PACKAGE_BASE);
-
-                        if (extensionDeltas.length != 0) {
-							try {
-                                load();
-                            } catch (IOException eIO) {
-                            }
-						}
-                    }
-                });
-
-        try {
-            load();
-        } catch (IOException eIO) {
-        }
-    }
-
-    private String getNamespace(IConfigurationElement configurationElement) {
-        String namespace = null;
-
-        if (configurationElement != null) {
-            IExtension extension = configurationElement.getDeclaringExtension();
-
-            if (extension != null) {
-				namespace = extension.getNamespace();
-			}
-        }
-
-        return namespace;
-    }
-    
-    /**
-     * Returns the activity definition found at this id.
-     * 
-     * @param id <code>ActivityDefinition</code> id.
-     * @return <code>ActivityDefinition</code> with given id or <code>null</code> if not found. 
-     */
-    private ActivityDefinition getActivityDefinitionById(String id) {
-		int size = activityDefinitions.size();
-		for (int i = 0; i < size; i++) {
-			ActivityDefinition activityDef = (ActivityDefinition) activityDefinitions
-					.get(i);
-			if (activityDef.getId().equals(id)) {
-				return activityDef;
-			}
-		}
-		return null;
-	}
-
-    private void load() throws IOException {
-        if (activityRequirementBindingDefinitions == null) {
-			activityRequirementBindingDefinitions = new ArrayList();
-		} else {
-			activityRequirementBindingDefinitions.clear();
-		}
-
-        if (activityDefinitions == null) {
-			activityDefinitions = new ArrayList();
-		} else {
-			activityDefinitions.clear();
-		}
-
-        if (activityPatternBindingDefinitions == null) {
-			activityPatternBindingDefinitions = new ArrayList();
-		} else {
-			activityPatternBindingDefinitions.clear();
-		}
-
-        if (categoryActivityBindingDefinitions == null) {
-			categoryActivityBindingDefinitions = new ArrayList();
-		} else {
-			categoryActivityBindingDefinitions.clear();
-		}
-
-        if (categoryDefinitions == null) {
-			categoryDefinitions = new ArrayList();
-		} else {
-			categoryDefinitions.clear();
-		}
-
-        if (defaultEnabledActivities == null) {
-			defaultEnabledActivities = new ArrayList();
-		} else {
-			defaultEnabledActivities.clear();
-		}
-
-        IConfigurationElement[] configurationElements = extensionRegistry
-                .getConfigurationElementsFor(Persistence.PACKAGE_FULL);
-
-        for (int i = 0; i < configurationElements.length; i++) {
-            IConfigurationElement configurationElement = configurationElements[i];
-            String name = configurationElement.getName();
-
-            if (Persistence.TAG_ACTIVITY_REQUIREMENT_BINDING.equals(name)) {
-				readActivityRequirementBindingDefinition(configurationElement);
-			} else if (Persistence.TAG_ACTIVITY.equals(name)) {
-				readActivityDefinition(configurationElement);
-			} else if (Persistence.TAG_ACTIVITY_PATTERN_BINDING.equals(name)) {
-				readActivityPatternBindingDefinition(configurationElement);
-			} else if (Persistence.TAG_CATEGORY_ACTIVITY_BINDING.equals(name)) {
-				readCategoryActivityBindingDefinition(configurationElement);
-			} else if (Persistence.TAG_CATEGORY.equals(name)) {
-				readCategoryDefinition(configurationElement);
-			} else if (Persistence.TAG_DEFAULT_ENABLEMENT.equals(name)) {
-				readDefaultEnablement(configurationElement);
-			}
-        }
-                
-        // Removal of all defaultEnabledActivites which target to expression
-        // controlled activities.
-		for (int i = 0; i < defaultEnabledActivities.size();) {
-			String id = (String) defaultEnabledActivities.get(i);
-			ActivityDefinition activityDef = getActivityDefinitionById(id);
-			if (activityDef != null && activityDef.getEnabledWhen() != null) {
-				defaultEnabledActivities.remove(i);
-				StatusManager
-						.getManager()
-						.handle(
-								new Status(
-										IStatus.WARNING,
-										PlatformUI.PLUGIN_ID,
-										"Default enabled activity declarations will be ignored (id: " + id + ")")); //$NON-NLS-1$ //$NON-NLS-2$
-			} else {
-				i++;
-			}
-		}
-
-		// remove all requirement bindings that reference expression-bound activities
-		for (Iterator i = activityRequirementBindingDefinitions.iterator(); i
-				.hasNext();) {
-			ActivityRequirementBindingDefinition bindingDef = (ActivityRequirementBindingDefinition) i
-					.next();
-			ActivityDefinition activityDef = getActivityDefinitionById(bindingDef
-					.getRequiredActivityId());
-			if (activityDef != null && activityDef.getEnabledWhen() != null) {
-				i.remove();
-				StatusManager
-						.getManager()
-						.handle(
-								new Status(
-										IStatus.WARNING,
-										PlatformUI.PLUGIN_ID,
-										"Expression activity cannot have requirements (id: " + activityDef.getId() + ")")); //$NON-NLS-1$ //$NON-NLS-2$
-				continue;
-			}
-
-			activityDef = getActivityDefinitionById(bindingDef.getActivityId());
-			if (activityDef != null && activityDef.getEnabledWhen() != null) {
-				i.remove();
-				StatusManager
-						.getManager()
-						.handle(
-								new Status(
-										IStatus.WARNING,
-										PlatformUI.PLUGIN_ID,
-										"Expression activity cannot be required (id: " + activityDef.getId() + ")")); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		
-        boolean activityRegistryChanged = false;
-
-        if (!activityRequirementBindingDefinitions
-                .equals(super.activityRequirementBindingDefinitions)) {
-            super.activityRequirementBindingDefinitions = Collections
-                    .unmodifiableList(activityRequirementBindingDefinitions);
-            activityRegistryChanged = true;
-        }
-
-        if (!activityDefinitions.equals(super.activityDefinitions)) {
-            super.activityDefinitions = Collections
-                    .unmodifiableList(activityDefinitions);
-            activityRegistryChanged = true;
-        }
-
-        if (!activityPatternBindingDefinitions
-                .equals(super.activityPatternBindingDefinitions)) {
-            super.activityPatternBindingDefinitions = Collections
-                    .unmodifiableList(activityPatternBindingDefinitions);
-            activityRegistryChanged = true;
-        }
-
-        if (!categoryActivityBindingDefinitions
-                .equals(super.categoryActivityBindingDefinitions)) {
-            super.categoryActivityBindingDefinitions = Collections
-                    .unmodifiableList(categoryActivityBindingDefinitions);
-            activityRegistryChanged = true;
-        }
-
-        if (!categoryDefinitions.equals(super.categoryDefinitions)) {
-            super.categoryDefinitions = Collections
-                    .unmodifiableList(categoryDefinitions);
-            activityRegistryChanged = true;
-        }
-
-        if (!defaultEnabledActivities.equals(super.defaultEnabledActivities)) {
-            super.defaultEnabledActivities = Collections
-                    .unmodifiableList(defaultEnabledActivities);
-            activityRegistryChanged = true;
-        }
-
-        if (activityRegistryChanged) {
-			fireActivityRegistryChanged();
-		}
-    }
-
-    private void readDefaultEnablement(
-            IConfigurationElement configurationElement) {
-        String enabledActivity = Persistence
-                .readDefaultEnablement(new ConfigurationElementMemento(
-                        configurationElement));
-
-        if (enabledActivity != null) {
-			defaultEnabledActivities.add(enabledActivity);
-		}
-
-    }
-
-    private void readActivityRequirementBindingDefinition(
-            IConfigurationElement configurationElement) {
-        ActivityRequirementBindingDefinition activityRequirementBindingDefinition = Persistence
-                .readActivityRequirementBindingDefinition(
-                        new ConfigurationElementMemento(configurationElement),
-                        getNamespace(configurationElement));
-
-        if (activityRequirementBindingDefinition != null) {
-			activityRequirementBindingDefinitions
-                    .add(activityRequirementBindingDefinition);
-		}
-    }
-
-    private void readActivityDefinition(
-            IConfigurationElement configurationElement) {
-        ActivityDefinition activityDefinition = Persistence
-                .readActivityDefinition(new ConfigurationElementMemento(
-                        configurationElement),
-                        getNamespace(configurationElement));
-        
-        if (activityDefinition != null) {
-        	// this is not ideal, but core expressions takes an
-        	// IConfigurationElement or a w3c dom Document
-			IConfigurationElement[] enabledWhen = configurationElement
-					.getChildren(IWorkbenchRegistryConstants.TAG_ENABLED_WHEN);
-			if (enabledWhen.length == 1) {
-				IConfigurationElement[] expElement = enabledWhen[0]
-						.getChildren();
-				if (expElement.length == 1) {
-					try {
-						Expression expression = ExpressionConverter
-								.getDefault().perform(expElement[0]);
-						activityDefinition.setEnabledWhen(expression);
-					} catch (CoreException e) {
-						StatusManager.getManager().handle(e, WorkbenchPlugin.PI_WORKBENCH);
-					}
-				}
-			}
-			activityDefinitions.add(activityDefinition);
-		}
-    }
-
-    private void readActivityPatternBindingDefinition(
-            IConfigurationElement configurationElement) {
-        ActivityPatternBindingDefinition activityPatternBindingDefinition = Persistence
-                .readActivityPatternBindingDefinition(
-                        new ConfigurationElementMemento(configurationElement),
-                        getNamespace(configurationElement));
-
-        if (activityPatternBindingDefinition != null) {
-			activityPatternBindingDefinitions
-                    .add(activityPatternBindingDefinition);
-		}
-    }
-
-    private void readCategoryActivityBindingDefinition(
-            IConfigurationElement configurationElement) {
-        CategoryActivityBindingDefinition categoryActivityBindingDefinition = Persistence
-                .readCategoryActivityBindingDefinition(
-                        new ConfigurationElementMemento(configurationElement),
-                        getNamespace(configurationElement));
-
-        if (categoryActivityBindingDefinition != null) {
-			categoryActivityBindingDefinitions
-                    .add(categoryActivityBindingDefinition);
-		}
-    }
-
-    private void readCategoryDefinition(
-            IConfigurationElement configurationElement) {
-        CategoryDefinition categoryDefinition = Persistence
-                .readCategoryDefinition(new ConfigurationElementMemento(
-                        configurationElement),
-                        getNamespace(configurationElement));
-
-        if (categoryDefinition != null) {
-			categoryDefinitions.add(categoryDefinition);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistry.java
deleted file mode 100644
index ef523ac..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistry.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.List;
-
-public interface IActivityRegistry {
-
-    void addActivityRegistryListener(
-            IActivityRegistryListener activityRegistryListener);
-
-    List getActivityRequirementBindingDefinitions();
-
-    List getActivityDefinitions();
-
-    List getActivityPatternBindingDefinitions();
-
-    List getCategoryActivityBindingDefinitions();
-
-    List getCategoryDefinitions();
-
-    List getDefaultEnabledActivities();
-
-    void removeActivityRegistryListener(
-            IActivityRegistryListener activityRegistryListener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistryListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistryListener.java
deleted file mode 100644
index 3798d28..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/IActivityRegistryListener.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-public interface IActivityRegistryListener {
-
-    void activityRegistryChanged(ActivityRegistryEvent activityRegistryEvent);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Identifier.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Identifier.java
deleted file mode 100644
index 69d2c00..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Identifier.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.ui.activities.IIdentifier;
-import org.eclipse.ui.activities.IIdentifierListener;
-import org.eclipse.ui.activities.IdentifierEvent;
-import org.eclipse.ui.internal.util.Util;
-
-final class Identifier implements IIdentifier {
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = Identifier.class.getName()
-            .hashCode();
-
-    private final static Set strongReferences = new HashSet();
-
-    private Set activityIds = Collections.EMPTY_SET;
-
-    private transient String[] activityIdsAsArray = {};
-
-    private boolean enabled;
-
-    private transient int hashCode = HASH_INITIAL;
-
-    private String id;
-
-    private List identifierListeners;
-
-    private transient String string;
-
-    Identifier(String id) {
-        if (id == null) {
-			throw new NullPointerException();
-		}
-
-        this.id = id;
-    }
-
-    public void addIdentifierListener(IIdentifierListener identifierListener) {
-        if (identifierListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (identifierListeners == null) {
-			identifierListeners = new ArrayList();
-		}
-
-        if (!identifierListeners.contains(identifierListener)) {
-			identifierListeners.add(identifierListener);
-		}
-
-        strongReferences.add(this);
-    }
-
-    public int compareTo(Object object) {
-        Identifier castedObject = (Identifier) object;
-        int compareTo = Util.compare(activityIdsAsArray,
-                castedObject.activityIdsAsArray);
-
-        if (compareTo == 0) {
-            compareTo = Util.compare(enabled, castedObject.enabled);
-
-            if (compareTo == 0) {
-				compareTo = Util.compare(id, castedObject.id);
-			}
-        }
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof Identifier)) {
-			return false;
-		}
-
-        final Identifier castedObject = (Identifier) object;
-        if (!Util.equals(activityIds, castedObject.activityIds)) {
-            return false;
-        }
-        
-        if (!Util.equals(enabled, castedObject.enabled)) {
-            return false;
-        }
-        
-        return Util.equals(id, castedObject.id);
-    }
-
-    void fireIdentifierChanged(IdentifierEvent identifierEvent) {
-        if (identifierEvent == null) {
-			throw new NullPointerException();
-		}
-
-        if (identifierListeners != null) {
-			for (int i = 0; i < identifierListeners.size(); i++) {
-				((IIdentifierListener) identifierListeners.get(i))
-                        .identifierChanged(identifierEvent);
-			}
-		}
-    }
-
-    public Set getActivityIds() {
-        return activityIds;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public int hashCode() {
-        if (hashCode == HASH_INITIAL) {
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(activityIds);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(enabled);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(id);
-            if (hashCode == HASH_INITIAL) {
-				hashCode++;
-			}
-        }
-
-        return hashCode;
-    }
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    public void removeIdentifierListener(IIdentifierListener identifierListener) {
-        if (identifierListener == null) {
-			throw new NullPointerException();
-		}
-
-        if (identifierListeners != null) {
-			identifierListeners.remove(identifierListener);
-			if (identifierListeners.isEmpty()) {
-				strongReferences.remove(this);
-			}
-		}
-    }
-
-    boolean setActivityIds(Set activityIds) {
-        activityIds = Util.safeCopy(activityIds, String.class);
-
-        if (!Util.equals(activityIds, this.activityIds)) {
-            this.activityIds = activityIds;
-            this.activityIdsAsArray = (String[]) this.activityIds
-                    .toArray(new String[this.activityIds.size()]);
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    boolean setEnabled(boolean enabled) {
-        if (enabled != this.enabled) {
-            this.enabled = enabled;
-            hashCode = HASH_INITIAL;
-            string = null;
-            return true;
-        }
-
-        return false;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(activityIds);
-            stringBuffer.append(',');
-            stringBuffer.append(enabled);
-            stringBuffer.append(',');
-            stringBuffer.append(id);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/InternalActivityHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/InternalActivityHelper.java
deleted file mode 100644
index 4490a8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/InternalActivityHelper.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.ICategoryActivityBinding;
-
-/**
- * Internal modifications to the (regrettably) public API in
- * WorkbenchActivityHelper. Much of the logic for what to display in the
- * preference page is bound to the API contracts in this class and these are no
- * longer suitable now that we have expression bound activities to consider.
- * 
- * <p>
- * These methods are the same as the originals except that activities with
- * expressions are not considered in any calculations.
- * </p>
- * 
- * <p>
- * See bug 229424 for details.
- * </p>
- * 
- * @since 3.4
- * 
- */
-public final class InternalActivityHelper {
-
-	public static Set getActivityIdsForCategory(
-			IActivityManager activityManager, ICategory category) {
-		Set bindings = category.getCategoryActivityBindings();
-		Set activityIds = new HashSet();
-		for (Iterator i = bindings.iterator(); i.hasNext();) {
-			ICategoryActivityBinding binding = (ICategoryActivityBinding) i
-					.next();
-			String id = binding.getActivityId();
-			if (activityManager.getActivity(id).getExpression() == null)
-				activityIds.add(id);
-		}
-		return activityIds;
-	}
-
-	private static boolean isEnabled(IActivityManager activityManager,
-			String categoryId) {
-
-		ICategory category = activityManager.getCategory(categoryId);
-		if (category.isDefined()) {
-			Set activityIds = getActivityIdsForCategory(activityManager,
-					category);
-			if (activityManager.getEnabledActivityIds()
-					.containsAll(activityIds)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	public static Set getEnabledCategories(IActivityManager activityManager) {
-
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		Set enabledCategories = new HashSet();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String categoryId = (String) i.next();
-			if (isEnabled(activityManager, categoryId)) {
-				enabledCategories.add(categoryId);
-			}
-		}
-		return enabledCategories;
-	}
-
-	public static Set getPartiallyEnabledCategories(
-			IActivityManager activityManager) {
-		Set definedCategoryIds = activityManager.getDefinedCategoryIds();
-		Set partialCategories = new HashSet();
-		for (Iterator i = definedCategoryIds.iterator(); i.hasNext();) {
-			String categoryId = (String) i.next();
-			if (isPartiallyEnabled(activityManager, categoryId)) {
-				partialCategories.add(categoryId);
-			}
-		}
-
-		return partialCategories;
-	}
-
-	private static boolean isPartiallyEnabled(IActivityManager activityManager,
-			String categoryId) {
-		Set activityIds = getActivityIdsForCategory(activityManager,
-				activityManager.getCategory(categoryId));
-		int foundCount = 0;
-		for (Iterator i = activityIds.iterator(); i.hasNext();) {
-			String activityId = (String) i.next();
-			if (activityManager.getEnabledActivityIds().contains(activityId)) {
-				foundCount++;
-			}
-		}
-
-		return foundCount > 0 && foundCount != activityIds.size();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java
deleted file mode 100644
index bf92ebc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java
+++ /dev/null
@@ -1,969 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ActivityEvent;
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.CategoryEvent;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityPatternBinding;
-import org.eclipse.ui.activities.IActivityRequirementBinding;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.ICategoryActivityBinding;
-import org.eclipse.ui.activities.IIdentifier;
-import org.eclipse.ui.activities.IMutableActivityManager;
-import org.eclipse.ui.activities.ITriggerPointAdvisor;
-import org.eclipse.ui.activities.IdentifierEvent;
-import org.eclipse.ui.progress.UIJob;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * An activity registry that may be altered.
- * 
- * @since 3.0
- */
-public final class MutableActivityManager extends AbstractActivityManager
-        implements IMutableActivityManager, Cloneable {
-
-    private Map activitiesById = new HashMap();
-
-    private Map activityRequirementBindingsByActivityId = new HashMap();
-
-    private Map activityDefinitionsById = new HashMap();
-
-    private Map activityPatternBindingsByActivityId = new HashMap();
-
-    private IActivityRegistry activityRegistry;
-
-    private Map categoriesById = new HashMap();
-
-    private Map categoryActivityBindingsByCategoryId = new HashMap();
-
-    private Map categoryDefinitionsById = new HashMap();
-
-    private Set definedActivityIds = new HashSet();
-
-    private Set definedCategoryIds = new HashSet();
-
-    private Set enabledActivityIds = new HashSet();
-
-    private Map identifiersById = new HashMap();
-    
-    /**
-     * Avoid endless circular referencing of re-adding activity to evaluation
-     * listener, because of adding it the first time to evaluation listener.
-     */
-    private boolean addingEvaluationListener = false;
-    
-    /**
-     * A list of identifiers that need to have their activity sets reconciled in the background job.
-     */
-    private List deferredIdentifiers = Collections.synchronizedList(new LinkedList());
-
-    /**
-     * The identifier update job.  Lazily initialized.
-     */
-    private Job deferredIdentifierJob = null;
-    
-    private final IActivityRegistryListener activityRegistryListener = new IActivityRegistryListener() {
-                public void activityRegistryChanged(
-                        ActivityRegistryEvent activityRegistryEvent) {
-                    readRegistry(false);
-                }
-            };
-
-	private Map refsByActivityDefinition = new HashMap();
-
-    /**
-     * Create a new instance of this class using the platform extension registry.
-     * @param triggerPointAdvisor 
-     */
-    public MutableActivityManager(ITriggerPointAdvisor triggerPointAdvisor) {
-        this(triggerPointAdvisor, new ExtensionActivityRegistry(Platform.getExtensionRegistry()));
-    }
-
-    /**
-     * Create a new instance of this class using the provided registry.
-     * @param triggerPointAdvisor 
-     * 
-     * @param activityRegistry the activity registry
-     */
-    public MutableActivityManager(ITriggerPointAdvisor triggerPointAdvisor, IActivityRegistry activityRegistry) {
-        Assert.isNotNull(activityRegistry);
-        Assert.isNotNull(triggerPointAdvisor);
-
-        this.advisor = triggerPointAdvisor;
-        this.activityRegistry = activityRegistry;
-
-        this.activityRegistry
-                .addActivityRegistryListener(activityRegistryListener);
-
-        readRegistry(true);
-    }
-
-    public IActivity getActivity(String activityId) {
-        if (activityId == null) {
-			throw new NullPointerException();
-		}
-
-        Activity activity = (Activity) activitiesById.get(activityId);
-
-        if (activity == null) {
-            activity = new Activity(activityId);
-            updateActivity(activity);
-            activitiesById.put(activityId, activity);
-        }
-
-        return activity;
-    }
-
-    public ICategory getCategory(String categoryId) {
-        if (categoryId == null) {
-			throw new NullPointerException();
-		}
-
-        Category category = (Category) categoriesById.get(categoryId);
-
-        if (category == null) {
-            category = new Category(categoryId);
-            updateCategory(category);
-            categoriesById.put(categoryId, category);
-        }
-
-        return category;
-    }
-
-    public Set getDefinedActivityIds() {
-        return Collections.unmodifiableSet(definedActivityIds);
-    }
-
-    public Set getDefinedCategoryIds() {
-        return Collections.unmodifiableSet(definedCategoryIds);
-    }
-
-    public Set getEnabledActivityIds() {
-        return Collections.unmodifiableSet(enabledActivityIds);
-    }
-
-    public IIdentifier getIdentifier(String identifierId) {
-        if (identifierId == null) {
-			throw new NullPointerException();
-		}
-
-        Identifier identifier = (Identifier) identifiersById.get(identifierId);
-
-        if (identifier == null) {
-            identifier = new Identifier(identifierId);
-            updateIdentifier(identifier);
-            identifiersById.put(identifierId, identifier);
-        }
-
-        return identifier;
-    }
-
-    private void getRequiredActivityIds(Set activityIds, Set requiredActivityIds) {
-        for (Iterator iterator = activityIds.iterator(); iterator.hasNext();) {
-            String activityId = (String) iterator.next();
-            IActivity activity = getActivity(activityId);
-            Set childActivityIds = new HashSet();
-            Set activityRequirementBindings = activity
-                    .getActivityRequirementBindings();
-
-            for (Iterator iterator2 = activityRequirementBindings.iterator(); iterator2
-                    .hasNext();) {
-                IActivityRequirementBinding activityRequirementBinding = (IActivityRequirementBinding) iterator2
-                        .next();
-                childActivityIds.add(activityRequirementBinding
-                        .getRequiredActivityId());
-            }
-
-            childActivityIds.removeAll(requiredActivityIds);
-            requiredActivityIds.addAll(childActivityIds);
-            getRequiredActivityIds(childActivityIds, requiredActivityIds);
-        }
-    }
-
-    private void notifyActivities(Map activityEventsByActivityId) {
-        for (Iterator iterator = activityEventsByActivityId.entrySet()
-                .iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            String activityId = (String) entry.getKey();
-            ActivityEvent activityEvent = (ActivityEvent) entry.getValue();
-            Activity activity = (Activity) activitiesById.get(activityId);
-
-            if (activity != null) {
-				activity.fireActivityChanged(activityEvent);
-			}
-        }
-    }
-
-    private void notifyCategories(Map categoryEventsByCategoryId) {
-        for (Iterator iterator = categoryEventsByCategoryId.entrySet()
-                .iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            String categoryId = (String) entry.getKey();
-            CategoryEvent categoryEvent = (CategoryEvent) entry.getValue();
-            Category category = (Category) categoriesById.get(categoryId);
-
-            if (category != null) {
-				category.fireCategoryChanged(categoryEvent);
-			}
-        }
-    }
-
-    private void notifyIdentifiers(Map identifierEventsByIdentifierId) {
-        for (Iterator iterator = identifierEventsByIdentifierId.entrySet()
-                .iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            String identifierId = (String) entry.getKey();
-            IdentifierEvent identifierEvent = (IdentifierEvent) entry
-                    .getValue();
-            Identifier identifier = (Identifier) identifiersById
-                    .get(identifierId);
-
-            if (identifier != null) {
-				identifier.fireIdentifierChanged(identifierEvent);
-			}
-        }
-    }
-
-    private void readRegistry(boolean setDefaults) {
-    	if (!isRegexpSupported()) {
-    		return;
-    	}
-    	clearExpressions();
-        Collection activityDefinitions = new ArrayList();
-        activityDefinitions.addAll(activityRegistry.getActivityDefinitions());
-        Map activityDefinitionsById = new HashMap(ActivityDefinition
-                .activityDefinitionsById(activityDefinitions, false));
-
-        for (Iterator iterator = activityDefinitionsById.values().iterator(); iterator
-                .hasNext();) {
-            ActivityDefinition activityDefinition = (ActivityDefinition) iterator
-                    .next();
-            String name = activityDefinition.getName();
-
-            if (name == null || name.length() == 0) {
-				iterator.remove();
-			}
-        }
-
-        Collection categoryDefinitions = new ArrayList();
-        categoryDefinitions.addAll(activityRegistry.getCategoryDefinitions());
-        Map categoryDefinitionsById = new HashMap(CategoryDefinition
-                .categoryDefinitionsById(categoryDefinitions, false));
-
-        for (Iterator iterator = categoryDefinitionsById.values().iterator(); iterator
-                .hasNext();) {
-            CategoryDefinition categoryDefinition = (CategoryDefinition) iterator
-                    .next();
-            String name = categoryDefinition.getName();
-
-            if (name == null || name.length() == 0) {
-				iterator.remove();
-			}
-        }
-
-        Map activityRequirementBindingDefinitionsByActivityId = ActivityRequirementBindingDefinition
-                .activityRequirementBindingDefinitionsByActivityId(activityRegistry
-                        .getActivityRequirementBindingDefinitions());
-        Map activityRequirementBindingsByActivityId = new HashMap();
-
-        for (Iterator iterator = activityRequirementBindingDefinitionsByActivityId
-                .entrySet().iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            String parentActivityId = (String) entry.getKey();
-
-            if (activityDefinitionsById.containsKey(parentActivityId)) {
-                Collection activityRequirementBindingDefinitions = (Collection) entry
-                        .getValue();
-
-                if (activityRequirementBindingDefinitions != null) {
-					for (Iterator iterator2 = activityRequirementBindingDefinitions
-                            .iterator(); iterator2.hasNext();) {
-                        ActivityRequirementBindingDefinition activityRequirementBindingDefinition = (ActivityRequirementBindingDefinition) iterator2
-                                .next();
-                        String childActivityId = activityRequirementBindingDefinition
-                                .getRequiredActivityId();
-
-                        if (activityDefinitionsById
-                                .containsKey(childActivityId)) {
-                            IActivityRequirementBinding activityRequirementBinding = new ActivityRequirementBinding(
-                                    childActivityId, parentActivityId);
-                            Set activityRequirementBindings = (Set) activityRequirementBindingsByActivityId
-                                    .get(parentActivityId);
-
-                            if (activityRequirementBindings == null) {
-                                activityRequirementBindings = new HashSet();
-                                activityRequirementBindingsByActivityId.put(
-                                        parentActivityId,
-                                        activityRequirementBindings);
-                            }
-
-                            activityRequirementBindings
-                                    .add(activityRequirementBinding);
-                        }
-                    }
-				}
-            }
-        }
-
-        Map activityPatternBindingDefinitionsByActivityId = ActivityPatternBindingDefinition
-                .activityPatternBindingDefinitionsByActivityId(activityRegistry
-                        .getActivityPatternBindingDefinitions());
-        Map activityPatternBindingsByActivityId = new HashMap();
-
-        for (Iterator iterator = activityPatternBindingDefinitionsByActivityId
-                .entrySet().iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            String activityId = (String) entry.getKey();
-
-            if (activityDefinitionsById.containsKey(activityId)) {
-                Collection activityPatternBindingDefinitions = (Collection) entry
-                        .getValue();
-
-                if (activityPatternBindingDefinitions != null) {
-					for (Iterator iterator2 = activityPatternBindingDefinitions
-                            .iterator(); iterator2.hasNext();) {
-                        ActivityPatternBindingDefinition activityPatternBindingDefinition = (ActivityPatternBindingDefinition) iterator2
-                                .next();
-                        String pattern = activityPatternBindingDefinition
-                                .getPattern();
-
-                        if (pattern != null && pattern.length() != 0) {
-                            IActivityPatternBinding activityPatternBinding = new ActivityPatternBinding(
-                                    activityId, pattern, activityPatternBindingDefinition.isEqualityPattern());
-                            Set activityPatternBindings = (Set) activityPatternBindingsByActivityId
-                                    .get(activityId);
-
-                            if (activityPatternBindings == null) {
-                                activityPatternBindings = new HashSet();
-                                activityPatternBindingsByActivityId.put(
-                                        activityId, activityPatternBindings);
-                            }
-
-                            activityPatternBindings.add(activityPatternBinding);
-                        }
-                    }
-				}
-            }
-        }
-
-        Map categoryActivityBindingDefinitionsByCategoryId = CategoryActivityBindingDefinition
-                .categoryActivityBindingDefinitionsByCategoryId(activityRegistry
-                        .getCategoryActivityBindingDefinitions());
-        Map categoryActivityBindingsByCategoryId = new HashMap();
-
-        for (Iterator iterator = categoryActivityBindingDefinitionsByCategoryId
-                .entrySet().iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            String categoryId = (String) entry.getKey();
-
-            if (categoryDefinitionsById.containsKey(categoryId)) {
-                Collection categoryActivityBindingDefinitions = (Collection) entry
-                        .getValue();
-
-                if (categoryActivityBindingDefinitions != null) {
-					for (Iterator iterator2 = categoryActivityBindingDefinitions
-                            .iterator(); iterator2.hasNext();) {
-                        CategoryActivityBindingDefinition categoryActivityBindingDefinition = (CategoryActivityBindingDefinition) iterator2
-                                .next();
-                        String activityId = categoryActivityBindingDefinition
-                                .getActivityId();
-
-                        if (activityDefinitionsById.containsKey(activityId)) {
-                            ICategoryActivityBinding categoryActivityBinding = new CategoryActivityBinding(
-                                    activityId, categoryId);
-                            Set categoryActivityBindings = (Set) categoryActivityBindingsByCategoryId
-                                    .get(categoryId);
-
-                            if (categoryActivityBindings == null) {
-                                categoryActivityBindings = new HashSet();
-                                categoryActivityBindingsByCategoryId.put(
-                                        categoryId, categoryActivityBindings);
-                            }
-
-                            categoryActivityBindings
-                                    .add(categoryActivityBinding);
-                        }
-                    }
-				}
-            }
-        }
-
-        this.activityRequirementBindingsByActivityId = activityRequirementBindingsByActivityId;
-        this.activityDefinitionsById = activityDefinitionsById;
-        this.activityPatternBindingsByActivityId = activityPatternBindingsByActivityId;
-        this.categoryActivityBindingsByCategoryId = categoryActivityBindingsByCategoryId;
-        this.categoryDefinitionsById = categoryDefinitionsById;
-        boolean definedActivityIdsChanged = false;
-        Set definedActivityIds = new HashSet(activityDefinitionsById.keySet());
-
-        Set previouslyDefinedActivityIds = null;
-        if (!definedActivityIds.equals(this.definedActivityIds)) {
-            previouslyDefinedActivityIds = this.definedActivityIds;
-            this.definedActivityIds = definedActivityIds;
-            definedActivityIdsChanged = true;
-        }
-
-        boolean definedCategoryIdsChanged = false;
-        Set definedCategoryIds = new HashSet(categoryDefinitionsById.keySet());
-
-        Set previouslyDefinedCategoryIds = null;
-        if (!definedCategoryIds.equals(this.definedCategoryIds)) {
-            previouslyDefinedCategoryIds = this.definedCategoryIds;
-            this.definedCategoryIds = definedCategoryIds;
-            definedCategoryIdsChanged = true;
-        }
-
-        Set enabledActivityIds = new HashSet(this.enabledActivityIds);
-        getRequiredActivityIds(this.enabledActivityIds, enabledActivityIds);
-        boolean enabledActivityIdsChanged = false;
-
-        Set previouslyEnabledActivityIds = null;
-        if (!this.enabledActivityIds.equals(enabledActivityIds)) {
-            previouslyEnabledActivityIds = this.enabledActivityIds;
-            this.enabledActivityIds = enabledActivityIds;
-            enabledActivityIdsChanged = true;
-        }
-
-        Map activityEventsByActivityId = updateActivities(activitiesById
-                .keySet());
-
-        Map categoryEventsByCategoryId = updateCategories(categoriesById
-                .keySet());
-
-        Map identifierEventsByIdentifierId = updateIdentifiers(identifiersById
-                .keySet());
-
-        if (definedActivityIdsChanged || definedCategoryIdsChanged
-                || enabledActivityIdsChanged) {
-			fireActivityManagerChanged(new ActivityManagerEvent(this,
-                    definedActivityIdsChanged, definedCategoryIdsChanged,
-                    enabledActivityIdsChanged, previouslyDefinedActivityIds,
-                    previouslyDefinedCategoryIds, previouslyEnabledActivityIds));
-		}
-
-        if (activityEventsByActivityId != null) {
-			notifyActivities(activityEventsByActivityId);
-		}
-
-        if (categoryEventsByCategoryId != null) {
-			notifyCategories(categoryEventsByCategoryId);
-		}
-
-        if (identifierEventsByIdentifierId != null) {
-			notifyIdentifiers(identifierEventsByIdentifierId);
-		}
-
-        if (setDefaults) {
-            setEnabledActivityIds(new HashSet(activityRegistry
-                    .getDefaultEnabledActivities()));
-        }
-    }
-
-	private void clearExpressions() {
-		IEvaluationService evaluationService = (IEvaluationService) PlatformUI
-				.getWorkbench().getService(IEvaluationService.class);
-		Iterator i = refsByActivityDefinition.values().iterator();
-		while (i.hasNext()) {
-			IEvaluationReference ref = (IEvaluationReference) i.next();
-			evaluationService.removeEvaluationListener(ref);
-		}
-		refsByActivityDefinition.clear();
-	}
-
-	/**
-     * Returns whether the Java 1.4 regular expression support is available.
-     * Regexp support will not be available when running against JCL Foundation (see bug 80053).
-     * 
-	 * @return <code>true</code> if regexps are supported, <code>false</code> otherwise.
-	 * 
-	 * @since 3.1
-	 */
-	private boolean isRegexpSupported() {
-		try {
-			Class.forName("java.util.regex.Pattern"); //$NON-NLS-1$
-			return true;
-		}
-		catch (Exception e) {
-			return false;
-		}
-	}
-
-	public void setEnabledActivityIds(Set enabledActivityIds) {
-        enabledActivityIds = new HashSet(enabledActivityIds);
-        Set requiredActivityIds = new HashSet(enabledActivityIds);
-        getRequiredActivityIds(enabledActivityIds, requiredActivityIds);
-        enabledActivityIds = requiredActivityIds;
-        Set deltaActivityIds = null;
-        boolean activityManagerChanged = false;
-        Map activityEventsByActivityId = null;
-        
-        Set previouslyEnabledActivityIds = null;
-        // the sets are different so there may be work to do.
-        if (!this.enabledActivityIds.equals(enabledActivityIds)) {
-            previouslyEnabledActivityIds = this.enabledActivityIds;
-            activityManagerChanged = true;
-            
-            // break out the additions to the current set
-            Set additions = new HashSet(enabledActivityIds);
-            additions.removeAll(previouslyEnabledActivityIds);
-            
-            // and the removals
-            Set removals = new HashSet(previouslyEnabledActivityIds);
-            removals.removeAll(enabledActivityIds);
-            
-            // remove from each set the expression-activities 
-            removeExpressionControlledActivities(additions);
-            removeExpressionControlledActivities(removals);
-            
-            // merge the two sets into one delta - these are the changes that
-			// need to be made after taking expressions into account
-            deltaActivityIds = new HashSet(additions);
-            deltaActivityIds.addAll(removals);
-            
-            if (deltaActivityIds.size() > 0) {
-            	// instead of blowing away the old set with the new we will
-				// instead modify it based on the deltas
-            	// add in all the new activities to the current set
-            	enabledActivityIds.addAll(additions);
-            	// and remove the stale ones
-            	enabledActivityIds.removeAll(removals);
-            	// finally set the internal set of activities
-            	this.enabledActivityIds = enabledActivityIds;
-				activityEventsByActivityId = updateActivities(deltaActivityIds);
-			} else {
-				return;
-			}
-        }
-
-        updateListeners(activityManagerChanged, activityEventsByActivityId,
-				deltaActivityIds, previouslyEnabledActivityIds);
-    }
-
-	/**
-	 * Updates all the listeners to changes in the state.
-	 * 
-	 * @param activityManagerChanged
-	 * @param activityEventsByActivityId
-	 * @param deltaActivityIds
-	 * @param previouslyEnabledActivityIds
-	 */
-	private void updateListeners(boolean activityManagerChanged,
-			Map activityEventsByActivityId, Set deltaActivityIds,
-			Set previouslyEnabledActivityIds) {
-		// don't update identifiers if the enabled activity set has not changed
-        if (activityManagerChanged) {
-            Map identifierEventsByIdentifierId = updateIdentifiers(identifiersById
-                    .keySet(), deltaActivityIds);
-            if (identifierEventsByIdentifierId != null) {
-				notifyIdentifiers(identifierEventsByIdentifierId);
-			}
-        }
-        if (activityEventsByActivityId != null) {
-			notifyActivities(activityEventsByActivityId);
-		}
-
-        if (activityManagerChanged) {
-			fireActivityManagerChanged(new ActivityManagerEvent(this, false,
-                    false, true, null, null, previouslyEnabledActivityIds));
-		}
-	}
-
-	private void addExpressionEnabledActivity(String id) {
-		Set previouslyEnabledActivityIds = new HashSet(this.enabledActivityIds);
-		this.enabledActivityIds.add(id);
-
-		updateExpressionEnabledActivities(id, previouslyEnabledActivityIds);
-	}
-	
-	private void removeExpressionEnabledActivity(String id) {
-		Set previouslyEnabledActivityIds = new HashSet(this.enabledActivityIds);
-		this.enabledActivityIds.remove(id);
-
-		updateExpressionEnabledActivities(id, previouslyEnabledActivityIds);
-	}
-
-	/**
-	 * @param id
-	 * @param previouslyEnabledActivityIds
-	 */
-	private void updateExpressionEnabledActivities(String id,
-			Set previouslyEnabledActivityIds) {
-		Set deltaActivityIds = new HashSet();
-		deltaActivityIds.add(id);
-		Map activityEventsByActivityId = updateActivities(deltaActivityIds);
-
-		updateListeners(true, activityEventsByActivityId, deltaActivityIds,
-				previouslyEnabledActivityIds);
-	}
-	
-
-	/**
-	 * Removes from a list of activity changes all those that are based on expressions
-	 * 
-	 * @param delta the set to modify
-	 */
-	private void removeExpressionControlledActivities(Set delta) {
-		
-		for (Iterator i = delta.iterator(); i.hasNext();) {
-			String id = (String) i.next();
-			IActivity activity = (IActivity) activitiesById.get(id);
-			Expression expression = activity.getExpression();
-			
-			if (expression != null) {
-				i.remove();
-			}
-		}
-	}
-
-    private Map updateActivities(Collection activityIds) {
-        Map activityEventsByActivityId = new TreeMap();
-
-        for (Iterator iterator = activityIds.iterator(); iterator.hasNext();) {
-            String activityId = (String) iterator.next();
-            Activity activity = (Activity) activitiesById.get(activityId);
-
-            if (activity != null) {
-                ActivityEvent activityEvent = updateActivity(activity);
-
-                if (activityEvent != null) {
-					activityEventsByActivityId.put(activityId, activityEvent);
-				}
-            }
-        }
-
-        return activityEventsByActivityId;
-    }
-
-    private IPropertyChangeListener enabledWhenListener = new IPropertyChangeListener() {
-		public void propertyChange(PropertyChangeEvent event) {
-			if (addingEvaluationListener) {
-				return;
-			}
-			
-			Object nv = event.getNewValue();
-			boolean enabledWhen = nv == null ? false : ((Boolean) nv)
-					.booleanValue();
-			String id = event.getProperty();
-			IActivity activity = (IActivity)activitiesById.get(id);
-			if (activity.isEnabled() != enabledWhen) {				
-				if (enabledWhen) {					
-					addExpressionEnabledActivity(id);					
-				} else {
-					removeExpressionEnabledActivity(id);
-				}				
-			}
-		}
-	};
-
-	private ITriggerPointAdvisor advisor;
-    	
-    private ActivityEvent updateActivity(Activity activity) {
-        Set activityRequirementBindings = (Set) activityRequirementBindingsByActivityId
-                .get(activity.getId());
-        boolean activityRequirementBindingsChanged = activity
-                .setActivityRequirementBindings(activityRequirementBindings != null ? activityRequirementBindings
-                        : Collections.EMPTY_SET);
-        Set activityPatternBindings = (Set) activityPatternBindingsByActivityId
-                .get(activity.getId());
-        boolean activityPatternBindingsChanged = activity
-                .setActivityPatternBindings(activityPatternBindings != null ? activityPatternBindings
-                        : Collections.EMPTY_SET);
-        ActivityDefinition activityDefinition = (ActivityDefinition) activityDefinitionsById
-                .get(activity.getId());
-        boolean definedChanged = activity
-                .setDefined(activityDefinition != null);
-        
-        // enabledWhen comes into play
-        IEvaluationReference ref = (IEvaluationReference) refsByActivityDefinition
-				.get(activityDefinition);
-		IEvaluationService evaluationService = (IEvaluationService) PlatformUI
-				.getWorkbench().getService(IEvaluationService.class);
-		boolean newRef = false;
-		if (activityDefinition != null && evaluationService!=null) {
-			activity.setExpression(activityDefinition.getEnabledWhen());
-			if (ref == null && activityDefinition.getEnabledWhen()!=null) {
-				addingEvaluationListener = true;
-				try {
-					ref = evaluationService.addEvaluationListener(
-						activityDefinition.getEnabledWhen(),
-						enabledWhenListener, activityDefinition.getId());
-					newRef = true;
-				} finally {
-					addingEvaluationListener = false;
-				}
-				if (ref != null) {
-					refsByActivityDefinition.put(activityDefinition, ref);
-				}
-			}
-		}
-		final boolean enabledChanged;
-		if (ref != null && evaluationService!=null) {
-			enabledChanged = activity.setEnabled(ref.evaluate(evaluationService
-					.getCurrentState()));
-			if (newRef && activity.isEnabled()) {
-				// make sure this activity is in the enabled set for this
-				// manager - event firing will be handled by the caller to this
-				// method.
-				this.enabledActivityIds.add(activity.getId());				
-			}
-		} else {
-			enabledChanged = activity.setEnabled(enabledActivityIds
-					.contains(activity.getId()));
-		}
-		
-        boolean nameChanged = activity
-                .setName(activityDefinition != null ? activityDefinition
-                        .getName() : null);
-        boolean descriptionChanged = activity
-                .setDescription(activityDefinition != null ? activityDefinition
-                        .getDescription() : null);
-        boolean defaultEnabledChanged = activity.setDefaultEnabled(activityRegistry
-                .getDefaultEnabledActivities().contains(activity.getId()));
-        if (activityRequirementBindingsChanged
-                || activityPatternBindingsChanged || definedChanged
-                || enabledChanged || nameChanged || descriptionChanged 
-                || defaultEnabledChanged) {
-			return new ActivityEvent(activity,
-                    activityRequirementBindingsChanged,
-                    activityPatternBindingsChanged, definedChanged,
-                    descriptionChanged, enabledChanged, nameChanged, defaultEnabledChanged);
-		}
-        
-        return null;
-    }
-
-    private Map updateCategories(Collection categoryIds) {
-        Map categoryEventsByCategoryId = new TreeMap();
-
-        for (Iterator iterator = categoryIds.iterator(); iterator.hasNext();) {
-            String categoryId = (String) iterator.next();
-            Category category = (Category) categoriesById.get(categoryId);
-
-            if (category != null) {
-                CategoryEvent categoryEvent = updateCategory(category);
-
-                if (categoryEvent != null) {
-					categoryEventsByCategoryId.put(categoryId, categoryEvent);
-				}
-            }
-        }
-
-        return categoryEventsByCategoryId;
-    }
-
-    private CategoryEvent updateCategory(Category category) {
-        Set categoryActivityBindings = (Set) categoryActivityBindingsByCategoryId
-                .get(category.getId());
-        boolean categoryActivityBindingsChanged = category
-                .setCategoryActivityBindings(categoryActivityBindings != null ? categoryActivityBindings
-                        : Collections.EMPTY_SET);
-        CategoryDefinition categoryDefinition = (CategoryDefinition) categoryDefinitionsById
-                .get(category.getId());
-        boolean definedChanged = category
-                .setDefined(categoryDefinition != null);
-        boolean nameChanged = category
-                .setName(categoryDefinition != null ? categoryDefinition
-                        .getName() : null);
-        boolean descriptionChanged = category
-                .setDescription(categoryDefinition != null ? categoryDefinition
-                        .getDescription() : null);
-
-        if (categoryActivityBindingsChanged || definedChanged || nameChanged
-                || descriptionChanged) {
-			return new CategoryEvent(category, categoryActivityBindingsChanged,
-                    definedChanged, descriptionChanged, nameChanged);
-		}
-        
-        return null;
-    }
-
-    private IdentifierEvent updateIdentifier(Identifier identifier) {
-        return updateIdentifier(identifier, definedActivityIds);
-    }
-    
-    private IdentifierEvent updateIdentifier(Identifier identifier, Set changedActivityIds) {
-        String id = identifier.getId();
-        Set activityIds = new HashSet();
-        
-        boolean enabled = false;
-        
-        boolean activityIdsChanged = false;
-        
-        boolean enabledChanged = false;
-        
-        // short-circut logic. If all activities are enabled, then the
-        // identifier must be as well. Return true and schedule the remainder of
-        // the work to run in a background job.
-        if (enabledActivityIds.size() == definedActivityIds.size()) {
-            enabled = true;
-            enabledChanged = identifier.setEnabled(enabled);
-            identifier.setActivityIds(Collections.EMPTY_SET);
-            deferredIdentifiers.add(identifier);
-            getUpdateJob().schedule();
-            if (enabledChanged) {
-				return new IdentifierEvent(identifier, activityIdsChanged,
-                        enabledChanged);
-			}
-        } else {
-            Set activityIdsToUpdate = new HashSet(changedActivityIds);
-            if (identifier.getActivityIds() != null) {
-                activityIdsToUpdate.addAll(identifier.getActivityIds());
-            }
-            for (Iterator iterator = activityIdsToUpdate.iterator(); iterator
-                    .hasNext();) {
-                String activityId = (String) iterator.next();
-                Activity activity = (Activity) getActivity(activityId);
-    
-                if (activity.isMatch(id)) {
-                    activityIds.add(activityId);
-               }
-            }
-            
-            activityIdsChanged = identifier.setActivityIds(activityIds);
-            
-            if (advisor != null) {
-            	enabled = advisor.computeEnablement(this, identifier);
-            }
-            enabledChanged = identifier.setEnabled(enabled);
-    
-            if (activityIdsChanged || enabledChanged) {
-				return new IdentifierEvent(identifier, activityIdsChanged,
-                        enabledChanged);
-			}
-        }
-        return null;
-    }
-
-    private Map updateIdentifiers(Collection identifierIds) {
-        return updateIdentifiers(identifierIds, definedActivityIds);
-    }
-    
-    private Map updateIdentifiers(Collection identifierIds, Set changedActivityIds) {
-        Map identifierEventsByIdentifierId = new TreeMap();
-
-        for (Iterator iterator = identifierIds.iterator(); iterator.hasNext();) {
-            String identifierId = (String) iterator.next();
-            Identifier identifier = (Identifier) identifiersById
-                    .get(identifierId);
-
-            if (identifier != null) {
-                IdentifierEvent identifierEvent = updateIdentifier(identifier, changedActivityIds);
-
-                if (identifierEvent != null) {
-					identifierEventsByIdentifierId.put(identifierId,
-                            identifierEvent);
-				}
-            }
-        }
-
-        return identifierEventsByIdentifierId;
-    }
-    
-    /**
-     * Unhook this manager from its registry.
-     *
-     * @since 3.1
-     */
-    public void unhookRegistryListeners() {
-        activityRegistry.removeActivityRegistryListener(activityRegistryListener);
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#clone()
-     */
-    public Object clone() {
-        MutableActivityManager clone = new MutableActivityManager(advisor, activityRegistry);
-        clone.setEnabledActivityIds(getEnabledActivityIds());
-        return clone;
-    }
-    
-    /**
-     * Return the identifier update job.
-     * 
-     * @return the job
-     * @since 3.1
-     */
-    private Job getUpdateJob() {
-        if (deferredIdentifierJob == null) {
-            deferredIdentifierJob = new Job("Identifier Update Job") { //$NON-NLS-1$
-                
-                /* (non-Javadoc)
-                 * @see org.eclipse.core.internal.jobs.InternalJob#run(org.eclipse.core.runtime.IProgressMonitor)
-                 */
-                protected IStatus run(IProgressMonitor monitor) {
-                    while (!deferredIdentifiers.isEmpty()) {
-                        Identifier identifier = (Identifier) deferredIdentifiers.remove(0);
-                        Set activityIds = new HashSet();
-                        for (Iterator iterator = definedActivityIds.iterator(); iterator
-                                .hasNext();) {
-                            String activityId = (String) iterator.next();
-                            Activity activity = (Activity) getActivity(activityId);
-
-                            if (activity.isMatch(identifier.getId())) {
-                                activityIds.add(activityId);
-                            }
-                        }
-                        
-                        boolean activityIdsChanged = identifier.setActivityIds(activityIds);
-                        if (activityIdsChanged) {
-                            IdentifierEvent identifierEvent = new IdentifierEvent(identifier, activityIdsChanged,
-                                    false);
-                            final Map identifierEventsByIdentifierId = new HashMap(1);
-                            identifierEventsByIdentifierId.put(identifier.getId(),
-                                    identifierEvent);
-                            UIJob notifyJob = new UIJob("Identifier Update Job") { //$NON-NLS-1$
-
-								public IStatus runInUIThread(
-										IProgressMonitor monitor) {
-									notifyIdentifiers(identifierEventsByIdentifierId);
-									return Status.OK_STATUS;
-								} 
-                            };
-                            notifyJob.setSystem(true);
-                            notifyJob.schedule();
-                        }                
-                    }
-                    return Status.OK_STATUS;
-                }
-            };
-            deferredIdentifierJob.setSystem(true);
-        }
-        return deferredIdentifierJob;
-    }
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/PatternUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/PatternUtil.java
deleted file mode 100644
index 05ce736..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/PatternUtil.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Bredex GmbH - Creator of this class.
- ******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-/**
- * Utility helper class for regular expression string patterns. 
- * 
- * @since 3.4
- * @author Jan Diederich
- */
-public class PatternUtil {
-	
-	/**
-	 * Quotes a string pattern as non-regular expression string.
-	 * That means: no regular expresion instructions in the given string 
-	 * won't be taken into account.<br/>
-	 * Example:
-	 * <code>String searchString = "xy[^a]";<br/>
-	 * Pattern.compile(quotePattern(searchString)).matcher(searchString)
-	 * 		.matches();
-	 * <br/> </code> will return true.
-	 * @param pattern pattern to quote
-	 * @return the quoted pattern
-	 */
-	public static String quotePattern(String pattern) {
-		final String START = "\\Q";  //$NON-NLS-1$
-		final String STOP = "\\E"; //$NON-NLS-1$
-		final int STOP_LENGTH = 2;  // STOP.length()
-		
-		int stopIndex = pattern.indexOf(STOP);
-		if (stopIndex < 0) {
-			return START + pattern + STOP;
-		}
-		
-		String result = START;
-		for (int position=0; ;) {
-			stopIndex = pattern.indexOf(STOP, position);
-			if (stopIndex >= 0) {
-				result += pattern.substring(position, stopIndex + 2)
-						+ "\\" + STOP + START; //$NON-NLS-1$
-				position = stopIndex + STOP_LENGTH;
-			} else {
-				result += pattern.substring(position) + STOP;  
-				break;
-			}
-		}
-		
-		return result;
-	}	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Persistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Persistence.java
deleted file mode 100644
index 589774b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/Persistence.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import org.eclipse.ui.IMemento;
-
-final class Persistence {
-    final static String PACKAGE_BASE = "activities"; //$NON-NLS-1$
-
-    final static String PACKAGE_FULL = "org.eclipse.ui.activities"; //$NON-NLS-1$
-
-    final static String PACKAGE_PREFIX = "org.eclipse.ui"; //$NON-NLS-1$
-
-    final static String TAG_ACTIVITY = "activity"; //$NON-NLS-1$	
-
-    final static String TAG_ACTIVITY_REQUIREMENT_BINDING = "activityRequirementBinding"; //$NON-NLS-1$
-
-    final static String TAG_DEFAULT_ENABLEMENT = "defaultEnablement"; //$NON-NLS-1$
-
-    final static String TAG_ACTIVITY_ID = "activityId"; //$NON-NLS-1$	
-
-    final static String TAG_ACTIVITY_PATTERN_BINDING = "activityPatternBinding"; //$NON-NLS-1$	
-
-    final static String TAG_CATEGORY = "category"; //$NON-NLS-1$	
-
-    final static String TAG_CATEGORY_ACTIVITY_BINDING = "categoryActivityBinding"; //$NON-NLS-1$	
-
-    final static String TAG_CATEGORY_ID = "categoryId"; //$NON-NLS-1$
-
-    final static String TAG_REQUIRED_ACTIVITY_ID = "requiredActivityId"; //$NON-NLS-1$		
-
-    final static String TAG_ID = "id"; //$NON-NLS-1$
-
-    final static String TAG_NAME = "name"; //$NON-NLS-1$	
-
-    final static String TAG_PATTERN = "pattern"; //$NON-NLS-1$
-    
-    final static String TAG_IS_EQUALITY_PATTERN = "isEqualityPattern"; //$NON-NLS-1$
-
-    final static String TAG_SOURCE_ID = "sourceId"; //$NON-NLS-1$
-
-    final static String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
-
-    static ActivityRequirementBindingDefinition readActivityRequirementBindingDefinition(
-            IMemento memento, String sourceIdOverride) {
-        if (memento == null) {
-			throw new NullPointerException();
-		}
-
-        String childActivityId = memento.getString(TAG_REQUIRED_ACTIVITY_ID);
-        String parentActivityId = memento.getString(TAG_ACTIVITY_ID);
-        if (childActivityId == null || parentActivityId == null) {
-			return null;
-		}
-        String sourceId = sourceIdOverride != null ? sourceIdOverride : memento
-                .getString(TAG_SOURCE_ID);
-        return new ActivityRequirementBindingDefinition(childActivityId,
-                parentActivityId, sourceId);
-    }
-
-    static String readDefaultEnablement(IMemento memento) {
-        if (memento == null) {
-			throw new NullPointerException();
-		}
-
-        return memento.getString(TAG_ID);
-    }
-
-    static ActivityDefinition readActivityDefinition(IMemento memento,
-            String sourceIdOverride) {
-        if (memento == null) {
-			throw new NullPointerException();
-		}
-
-        String id = memento.getString(TAG_ID);
-        if (id == null) {
-			return null;
-		}
-        String name = memento.getString(TAG_NAME);
-        if (name == null) {
-			return null;
-		}
-        String description = memento.getString(TAG_DESCRIPTION);
-        if (description == null) {
-			description = ""; //$NON-NLS-1$
-		}
-        String sourceId = sourceIdOverride != null ? sourceIdOverride : memento
-                .getString(TAG_SOURCE_ID);
-        return new ActivityDefinition(id, name, sourceId, description);
-    }
-
-    static ActivityPatternBindingDefinition readActivityPatternBindingDefinition(
-            IMemento memento, String sourceIdOverride) {
-        if (memento == null) {
-			throw new NullPointerException();
-		}
-
-        String activityId = memento.getString(TAG_ACTIVITY_ID);
-        if (activityId == null) {
-			return null;
-		}
-        String pattern = memento.getString(TAG_PATTERN);
-        if (pattern == null) {
-			return null;
-		}
-        String sourceId = sourceIdOverride != null ? sourceIdOverride : memento
-                .getString(TAG_SOURCE_ID);
-        
-        final String isEqualityPatternStr = memento.getString(TAG_IS_EQUALITY_PATTERN);
-        final boolean isEqualityPattern = (isEqualityPatternStr != null && isEqualityPatternStr
-				.equals("true")); //$NON-NLS-1$
-        
-        return new ActivityPatternBindingDefinition(activityId, pattern,
-                sourceId, isEqualityPattern);
-    }
-
-    static CategoryActivityBindingDefinition readCategoryActivityBindingDefinition(
-            IMemento memento, String sourceIdOverride) {
-        if (memento == null) {
-			throw new NullPointerException();
-		}
-
-        String activityId = memento.getString(TAG_ACTIVITY_ID);
-        if (activityId == null) {
-			return null;
-		}
-        String categoryId = memento.getString(TAG_CATEGORY_ID);
-        if (categoryId == null) {
-			return null;
-		}
-        String sourceId = sourceIdOverride != null ? sourceIdOverride : memento
-                .getString(TAG_SOURCE_ID);
-        return new CategoryActivityBindingDefinition(activityId, categoryId,
-                sourceId);
-    }
-
-    static CategoryDefinition readCategoryDefinition(IMemento memento,
-            String sourceIdOverride) {
-        if (memento == null) {
-			throw new NullPointerException();
-		}
-
-        String id = memento.getString(TAG_ID);
-        if (id == null) {
-			return null;
-		}
-        String name = memento.getString(TAG_NAME);
-        if (name == null) {
-			return null;
-		}
-        String description = memento.getString(TAG_DESCRIPTION);
-        if (description == null) {
-			description = ""; //$NON-NLS-1$
-		}
-        String sourceId = sourceIdOverride != null ? sourceIdOverride : memento
-                .getString(TAG_SOURCE_ID);
-        return new CategoryDefinition(id, name, sourceId, description);
-    }
-
-    private Persistence() {
-        //no-op
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ProxyActivityManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ProxyActivityManager.java
deleted file mode 100644
index d947e84..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ProxyActivityManager.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.activities;
-
-import java.util.Set;
-
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.IActivityManagerListener;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.IIdentifier;
-
-public final class ProxyActivityManager extends AbstractActivityManager {
-    private IActivityManager activityManager;
-
-    public ProxyActivityManager(IActivityManager activityManager) {
-        if (activityManager == null) {
-			throw new NullPointerException();
-		}
-
-        this.activityManager = activityManager;
-
-        this.activityManager
-                .addActivityManagerListener(new IActivityManagerListener() {
-                    public void activityManagerChanged(
-                            ActivityManagerEvent activityManagerEvent) {
-                        ActivityManagerEvent proxyActivityManagerEvent = new ActivityManagerEvent(
-                                ProxyActivityManager.this, activityManagerEvent
-                                        .haveDefinedActivityIdsChanged(),
-                                activityManagerEvent
-                                        .haveDefinedCategoryIdsChanged(),
-                                activityManagerEvent
-                                        .haveEnabledActivityIdsChanged(),
-                                activityManagerEvent
-                                        .getPreviouslyDefinedActivityIds(),
-                                activityManagerEvent
-                                        .getPreviouslyDefinedCategoryIds(),
-                                activityManagerEvent
-                                        .getPreviouslyEnabledActivityIds());
-                        fireActivityManagerChanged(proxyActivityManagerEvent);
-                    }
-                });
-    }
-
-    public IActivity getActivity(String activityId) {
-        return activityManager.getActivity(activityId);
-    }
-
-    public ICategory getCategory(String categoryId) {
-        return activityManager.getCategory(categoryId);
-    }
-
-    public Set getDefinedActivityIds() {
-        return activityManager.getDefinedActivityIds();
-    }
-
-    public Set getDefinedCategoryIds() {
-        return activityManager.getDefinedCategoryIds();
-    }
-
-    public Set getEnabledActivityIds() {
-        return activityManager.getEnabledActivityIds();
-    }
-
-    public IIdentifier getIdentifier(String identifierId) {
-        return activityManager.getIdentifier(identifierId);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java
deleted file mode 100644
index be57811..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/AbstractTriggerPoint.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import org.eclipse.ui.activities.ITriggerPoint;
-
-/**
- * @since 3.1
- */
-public abstract class AbstractTriggerPoint implements ITriggerPoint {
-
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object obj) {
-		if (obj instanceof ITriggerPoint) {
-			return getId().equals(((ITriggerPoint)obj).getId());
-		}
-		
-		return false;
-	}
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		return getId().hashCode();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java
deleted file mode 100644
index 0b95c11..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryContentProvider.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.IActivityRequirementBinding;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.internal.activities.InternalActivityHelper;
-
-/**
- * Tree provider that provides <code>ICategory</code> objects in an 
- * <code>IActivityManager</code> at the top level, with <code>IActivity</code> 
- * objects as second level children under the <code>ICategory</code>.
- * <p>
- * Note that the <code>IActivity</code> objects are not instances of 
- * <code>org.eclipse.ui.internal.activities.Activity</code>, but rather proxies 
- * that also have a pointer to the <code>ICategory</code> for which the 
- * <code>IActivity</code> should be represented under. 
- * 
- * @since 3.0
- */
-public class ActivityCategoryContentProvider implements ITreeContentProvider {
-
-    /**
-     * The manager to extract content from.
-     */
-    private IActivityManager manager;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-        manager = null;
-    }
-
-    /**
-	 * @param category
-	 * 		the category to fetch.
-	 * @return all activities in the category.
-	 */
-	private IActivity[] getCategoryActivities(ICategory category) {
-		Set activityIds = InternalActivityHelper.getActivityIdsForCategory(
-				manager, category);
-		List categoryActivities = new ArrayList(activityIds.size());
-		for (Iterator i = activityIds.iterator(); i.hasNext();) {
-			String activityId = (String) i.next();
-			categoryActivities.add(new CategorizedActivity(category, manager
-					.getActivity(activityId)));
-
-		}
-		return (IActivity[]) categoryActivities
-				.toArray(new IActivity[categoryActivities.size()]);
-	}
-
-	/**
-	 * Get the duplicate activities found in the other defined categories.
-	 * 
-	 * @param categorizedActivity
-	 *            The categorized activity.
-	 * @return the list of duplicate categorized activities.
-	 */
-	public Object[] getDuplicateCategoryActivities(
-			CategorizedActivity categorizedActivity) {
-		ArrayList duplicateCategorizedactivities = new ArrayList();
-		Set categoryIds = manager.getDefinedCategoryIds();
-		ICategory currentCategory = null;
-		String currentActivityId = null;
-		IActivity[] categoryActivities = null;
-		String currentCategoryId = null;
-		// find the duplicate activities in the defined categories
-		for (Iterator i = categoryIds.iterator(); i.hasNext();) {
-			currentCategoryId = (String) i.next();
-			if (!currentCategoryId.equals(categorizedActivity.getCategory()
-					.getId())) {
-				currentCategory = manager.getCategory(currentCategoryId);
-				categoryActivities = getCategoryActivities(currentCategory);
-				// traverse the category's activities to find a duplicate
-				for (int index = 0; index < categoryActivities.length; index++) {
-					currentActivityId = categoryActivities[index].getId();
-					if (currentActivityId.equals(categorizedActivity
-							.getActivity().getId())) {
-						duplicateCategorizedactivities
-								.add(new CategorizedActivity(currentCategory,
-										manager.getActivity(currentActivityId)));
-						// Assuming only one unique activity per category -
-						// break
-						break;
-					}
-				}
-
-			}
-
-		}
-		return duplicateCategorizedactivities.toArray();
-	}
-
-	/**
-	 * Get the child required activities.
-	 * 
-	 * @param activityId
-	 *            The parent activity id.
-	 * @return the list of child required activities.
-	 */
-	public Object[] getChildRequiredActivities(String activityId) {
-		ArrayList childRequiredActivities = new ArrayList();
-		IActivity activity = manager.getActivity(activityId);
-		Set actvitiyRequirementBindings = activity
-				.getActivityRequirementBindings();
-		String requiredActivityId = null;
-		IActivityRequirementBinding currentActivityRequirementBinding = null;
-		Object[] currentCategoryIds = null;
-		for (Iterator i = actvitiyRequirementBindings.iterator(); i.hasNext();) {
-			currentActivityRequirementBinding = (IActivityRequirementBinding) i
-					.next();
-			requiredActivityId = currentActivityRequirementBinding
-					.getRequiredActivityId();
-			currentCategoryIds = getActivityCategories(requiredActivityId);
-			for (int index = 0; index < currentCategoryIds.length; index++) {
-				childRequiredActivities.add(new CategorizedActivity(manager
-						.getCategory((String) currentCategoryIds[index]),
-						manager.getActivity(requiredActivityId)));
-			}
-
-		}
-
-		return childRequiredActivities.toArray();
-	}
-
-	/**
-	 * Get the parent required activities.
-	 * 
-	 * @param activityId
-	 *            The child activity id.
-	 * @return the list of parent required activities.
-	 */
-	public Object[] getParentRequiredActivities(String activityId) {
-		ArrayList parentRequiredActivities = new ArrayList();
-		Set definedActivities = manager.getDefinedActivityIds();
-		String currentActivityId = null;
-		Set activityRequirementBindings = null;
-		IActivityRequirementBinding currentActivityRequirementBinding = null;
-		Object[] currentCategoryIds = null;
-		for (Iterator i = definedActivities.iterator(); i.hasNext();) {
-			currentActivityId = (String) i.next();
-			activityRequirementBindings = manager
-					.getActivity(currentActivityId)
-					.getActivityRequirementBindings();
-			for (Iterator j = activityRequirementBindings.iterator(); j
-					.hasNext();) {
-				currentActivityRequirementBinding = (IActivityRequirementBinding) j
-						.next();
-				if (currentActivityRequirementBinding.getRequiredActivityId()
-						.equals(activityId)) {
-					// We found one - add it to the list
-					currentCategoryIds = getActivityCategories(currentActivityId);
-					for (int index = 0; index < currentCategoryIds.length; index++) {
-						parentRequiredActivities
-								.add(new CategorizedActivity(
-										manager
-												.getCategory((String) currentCategoryIds[index]),
-										manager.getActivity(currentActivityId)));
-					}
-				}
-			}
-
-		}
-		return parentRequiredActivities.toArray();
-	}
-
-	/**
-	 * Get the activity's categories (there could be more than one).
-	 * 
-	 * @param activityId
-	 *            The activity id.
-	 * @return the activity's categories.
-	 */
-	private Object[] getActivityCategories(String activityId) {
-		ArrayList activityCategories = new ArrayList();
-		Set categoryIds = manager.getDefinedCategoryIds();
-		String currentCategoryId = null;
-		IActivity[] categoryActivities = null;
-		for (Iterator i = categoryIds.iterator(); i.hasNext();) {
-			currentCategoryId = (String) i.next();
-			categoryActivities = getCategoryActivities(manager
-					.getCategory(currentCategoryId));
-			for (int index = 0; index < categoryActivities.length; index++) {
-				if (categoryActivities[index].getId().equals(activityId)) {
-					activityCategories.add(currentCategoryId);
-					break;
-				}
-			}
-		}
-		return activityCategories.toArray();
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-     */
-    public Object[] getChildren(Object parentElement) {
-        if (parentElement instanceof IActivityManager) {
-            Set categoryIds = manager.getDefinedCategoryIds();
-            ArrayList categories = new ArrayList(categoryIds.size());
-            for (Iterator i = categoryIds.iterator(); i.hasNext();) {
-                String categoryId = (String) i.next();
-                ICategory category = manager.getCategory(categoryId);
-				if (getCategoryActivities(category).length > 0) {
-					categories.add(category);
-				}
-            }
-            return categories.toArray();
-        } else if (parentElement instanceof ICategory) {
-            return getCategoryActivities((ICategory) parentElement);
-        }
-        return new Object[0];
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object inputElement) {
-        return getChildren(inputElement);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-     */
-    public Object getParent(Object element) {
-        if (element instanceof CategorizedActivity) {
-            return ((CategorizedActivity) element).getCategory();
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-     */
-    public boolean hasChildren(Object element) {
-        if (element instanceof IActivityManager || element instanceof ICategory) {
-			return true;
-		}
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        manager = (IActivityManager) newInput;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java
deleted file mode 100644
index 3e71340..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityCategoryLabelProvider.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.NotDefinedException;
-
-/**
- * Provides labels for elements drawn from <code>IActivityManagers</code>.  
- * Ie:  <code>IActivity</code> and <code>ICategory</code> objects.
- * 
- * @since 3.0
- */
-public class ActivityCategoryLabelProvider extends LabelProvider {
-
-	private LocalResourceManager manager;	
-	private Map descriptorMap = new HashMap();
-
-	/**
-	 * Create a new instance of this class.
-	 */
-	public ActivityCategoryLabelProvider() {
-		manager = new LocalResourceManager(JFaceResources.getResources());
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-     */
-    public Image getImage(Object element) {
-    	try {
-    		ImageDescriptor descriptor = getDescriptor(element);	        
-	        if (descriptor != null) {
-				return manager.createImage(descriptor);
-			}
-    	}
-    	catch (DeviceResourceException e) {
-    		//ignore 
-    	}
-        return null;
-    }
-    
-    private ImageDescriptor getDescriptor(Object element) {
-    	ImageDescriptor descriptor = (ImageDescriptor) descriptorMap.get(element);
-    	if (descriptor != null) {
-			return descriptor;
-		}
-        
-    	if (element instanceof ICategory) {
-        	ICategory category = (ICategory) element;
-			descriptor = PlatformUI.getWorkbench().getActivitySupport()
-					.getImageDescriptor(category);
-			if (descriptor != null) {
-				descriptorMap.put(element, descriptor);
-			}
-        } else if (element instanceof IActivity) {
-        	IActivity activity = (IActivity) element;
-			descriptor = PlatformUI.getWorkbench().getActivitySupport()
-					.getImageDescriptor(activity);
-			if (descriptor != null) {
-				descriptorMap.put(element, descriptor);
-			}
-        }
-    	return descriptor;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        if (element instanceof IActivity) {
-            IActivity activity = (IActivity) element;
-            try {
-                return activity.getName();
-            } catch (NotDefinedException e) {
-                return activity.getId();
-            }
-        } else if (element instanceof ICategory) {
-            ICategory category = ((ICategory) element);
-            try {
-                return category.getName();
-            } catch (NotDefinedException e) {
-                return category.getId();
-            }
-        }
-        return super.getText(element);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-     */
-    public void dispose() {    	
-    	manager.dispose();
-    	descriptorMap.clear();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java
deleted file mode 100644
index 1bd715c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityContentProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.Collection;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.activities.IActivityManager;
-
-/**
- * @since 3.0
- */
-public class ActivityContentProvider implements IStructuredContentProvider {
-
-    /**
-     * @since 3.0
-     */
-    public ActivityContentProvider() {
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object inputElement) {
-        Object[] activities = new Object[0];
-        if (inputElement instanceof IActivityManager) {
-            activities = ((IActivityManager) inputElement)
-                    .getDefinedActivityIds().toArray();
-        } else if (inputElement instanceof Collection) {
-            activities = ((Collection) inputElement).toArray();
-        }
-        return activities;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-     *      java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java
deleted file mode 100644
index 5544c07..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityEnabler.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-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.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.activities.ActivitiesPreferencePage;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.IMutableActivityManager;
-import org.eclipse.ui.activities.NotDefinedException;
-import org.eclipse.ui.internal.activities.InternalActivityHelper;
-
-/**
- * A simple control provider that will allow the user to toggle on/off the
- * activities bound to categories.
- * 
- * @since 3.0
- */
-public class ActivityEnabler {
-
-	private static final int ALL = 2;
-
-	private static final int NONE = 0;
-
-	private static final int SOME = 1;
-
-	private ISelectionChangedListener selectionListener = new ISelectionChangedListener() {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-		 */
-		public void selectionChanged(SelectionChangedEvent event) {
-			Object element = ((IStructuredSelection) event.getSelection())
-					.getFirstElement();
-			try {
-				if (element instanceof ICategory) {
-					descriptionText.setText(((ICategory) element)
-							.getDescription());
-				} else if (element instanceof IActivity) {
-					descriptionText.setText(((IActivity) element)
-							.getDescription());
-				}
-			} catch (NotDefinedException e) {
-				descriptionText.setText(""); //$NON-NLS-1$
-			}
-		}
-	};
-
-	/**
-	 * Listener that manages the grey/check state of categories.
-	 */
-	private ICheckStateListener checkListener = new ICheckStateListener() {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent)
-		 */
-		public void checkStateChanged(CheckStateChangedEvent event) {
-			Set checked = new HashSet(Arrays.asList(dualViewer
-					.getCheckedElements()));
-			Object element = event.getElement();
-			if (element instanceof ICategory) {
-				// clicking on a category should enable/disable all activities
-				// within it
-				dualViewer.setSubtreeChecked(element, event.getChecked());
-				// the state of the category is always absolute after clicking
-				// on it. Never gray.
-				dualViewer.setGrayed(element, false);
-				Object categoryActivities[] = provider.getChildren(element);
-				// Update the category's activities for multiplicity in other
-				// categories
-				for (int index = 0; index < categoryActivities.length; index++) {
-					handleDuplicateActivities(event.getChecked(),
-							categoryActivities[index]);
-				}
-
-			} else {
-				// Activity checked
-				handleActivityCheck(checked, element);
-				handleDuplicateActivities(event.getChecked(), element);
-			}
-		}
-
-		/**
-		 * Handle duplicate activities.
-		 * 
-		 * @param checkedState
-		 *            Checked state of the element.
-		 * @param element
-		 *            The checked element.
-		 */
-		private void handleDuplicateActivities(boolean checkedState,
-				Object element) {
-			// Retrieve duplicate activities from the other categories
-			Object[] duplicateActivities = provider
-					.getDuplicateCategoryActivities((CategorizedActivity) element);
-			CategorizedActivity activity = null;
-			for (int index = 0; index < duplicateActivities.length; index++) {
-				activity = (CategorizedActivity) duplicateActivities[index];
-				// Update the duplicate activity with the same state as the
-				// original
-				dualViewer.setChecked(activity, checkedState);
-				// handle the activity check to potentially update its
-				// category's enablement
-				handleActivityCheck(new HashSet(Arrays.asList(dualViewer
-						.getCheckedElements())), activity);
-			}
-		}
-
-		/**
-		 * Handle the checking of an activity and update its category's checked
-		 * state.
-		 * 
-		 * @param checked
-		 *            The set of checked elements in the viewer.
-		 * @param element
-		 *            The checked element.
-		 */
-		private void handleActivityCheck(Set checked, Object element) {
-			// clicking on an activity can potentially change the check/gray
-			// state of its category.
-			CategorizedActivity proxy = (CategorizedActivity) element;
-			Object[] children = provider.getChildren(proxy.getCategory());
-			int state = NONE;
-			int count = 0;
-			for (int i = 0; i < children.length; i++) {
-				if (checked.contains(children[i])) {
-					count++;
-				}
-			}
-
-			if (count == children.length) {
-				state = ALL;
-			} else if (count != 0) {
-				state = SOME;
-			}
-
-			if (state == NONE) {
-				checked.remove(proxy.getCategory());
-			} else {
-				checked.add(proxy.getCategory());
-			}
-
-			dualViewer.setGrayed(proxy.getCategory(), state == SOME);
-			dualViewer.setCheckedElements(checked.toArray());
-			// Check child required activities and uncheck parent required activities
-			// if needed
-			handleRequiredActivities(checked, element);
-		}
-
-		/**
-		 * Handle the activity's required activities (parent and child).
-		 * 
-		 * @param checked
-		 *            The set of checked elements in the viewer.
-		 * @param element
-		 *            The checked element.
-		 *  
-		 */
-		private void handleRequiredActivities(Set checked, Object element) {
-			Object[] requiredActivities = null;
-			// An element has been checked - we want to check its child required
-			// activities
-			if (checked.contains(element)) {
-				requiredActivities = provider
-						.getChildRequiredActivities(((CategorizedActivity) element)
-								.getId());
-				for (int index = 0; index < requiredActivities.length; index++) {
-					// We want to check the element if it is unchecked
-					if (!checked.contains(requiredActivities[index])) {
-						dualViewer.setChecked(requiredActivities[index], true);
-						handleActivityCheck(new HashSet(Arrays
-								.asList(dualViewer.getCheckedElements())),
-								requiredActivities[index]);
-					}
-				}
-			}
-			// An element has been unchecked - we want to uncheck its parent
-			// required activities
-			else {
-				requiredActivities = provider
-						.getParentRequiredActivities(((CategorizedActivity) element)
-								.getId());
-				for (int index = 0; index < requiredActivities.length; index++) {
-					// We want to uncheck the element if it is checked
-					if (checked.contains(requiredActivities[index])) {
-						dualViewer.setChecked(requiredActivities[index], false);
-						handleActivityCheck(new HashSet(Arrays
-								.asList(dualViewer.getCheckedElements())),
-								requiredActivities[index]);
-					}
-				}
-			}
-		}
-
-	};
-
-	protected CheckboxTreeViewer dualViewer;
-
-	/**
-	 * The Set of activities that belong to at least one category.
-	 */
-	private Set managedActivities = new HashSet(7);
-
-	/**
-	 * The content provider.
-	 */
-	protected ActivityCategoryContentProvider provider = new ActivityCategoryContentProvider();
-
-	/**
-	 * The descriptive text.
-	 */
-	protected Text descriptionText;
-
-	private Properties strings;
-
-    private IMutableActivityManager activitySupport;
-
-	/**
-	 * Create a new instance.
-	 * 
-	 * @param activitySupport
-	 *            the <code>IMutableActivityMananger</code> to use.
-	 * @param strings
-	 *            map of strings to use. See the constants on
-	 *            {@link org.eclipse.ui.activities.ActivitiesPreferencePage} for
-	 *            details.
-	 */
-	public ActivityEnabler(IMutableActivityManager activitySupport, Properties strings) {
-		this.activitySupport = activitySupport;
-		this.strings = strings;
-	}
-
-	/**
-	 * Create the controls.
-	 * 
-	 * @param parent
-	 *            the parent in which to create the controls.
-	 * @return the composite in which the controls exist.
-	 */
-	public Control createControl(Composite parent) {
-        GC gc = new GC(parent);
-        gc.setFont(JFaceResources.getDialogFont());
-        FontMetrics fontMetrics = gc.getFontMetrics();
-        gc.dispose();
-        
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayout(createGridLayoutWithoutMargins(1, fontMetrics));
-
-		new Label(composite, SWT.NONE).setText(strings.getProperty(ActivitiesPreferencePage.ACTIVITY_NAME, ActivityMessages.ActivityEnabler_activities) + ':');
-
-		dualViewer = new CheckboxTreeViewer(composite);
-		dualViewer.setComparator(new ViewerComparator());
-		dualViewer.setLabelProvider(new ActivityCategoryLabelProvider());
-		dualViewer.setContentProvider(provider);
-		dualViewer.setInput(activitySupport);
-		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
-		dualViewer.getControl().setLayoutData(data);
-
-		Composite buttonComposite = new Composite(composite, SWT.NONE);
-		buttonComposite.setLayout(createGridLayoutWithoutMargins(2, fontMetrics));
-
-		Button selectAllButton = new Button(buttonComposite, SWT.PUSH);
-		selectAllButton.setText(ActivityMessages.ActivityEnabler_selectAll);
-		selectAllButton.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				toggleTreeEnablement(true);
-			}
-		});
-		setButtonLayoutData(selectAllButton, fontMetrics);
-
-		Button deselectAllButton = new Button(buttonComposite, SWT.PUSH);
-		deselectAllButton.setText(ActivityMessages.ActivityEnabler_deselectAll); 
-		deselectAllButton.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				toggleTreeEnablement(false);
-			}
-		});
-		setButtonLayoutData(deselectAllButton, fontMetrics);
-
-		new Label(composite, SWT.NONE).setText(ActivityMessages.ActivityEnabler_description);
-
-		descriptionText = new Text(composite, SWT.READ_ONLY | SWT.WRAP | SWT.BORDER
-				| SWT.V_SCROLL);
-		data = new GridData(SWT.FILL, SWT.FILL, true, false);
-		data.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, 5);
-		descriptionText.setLayoutData(data);
-		setInitialStates();
-
-		dualViewer.addCheckStateListener(checkListener);
-		dualViewer.addSelectionChangedListener(selectionListener);
-
-		dualViewer.setSelection(new StructuredSelection());
-
-        Dialog.applyDialogFont(composite);
-        
-		return composite;
-	}
-
-	private GridLayout createGridLayoutWithoutMargins(int nColumns, FontMetrics fontMetrics) {
-		GridLayout layout = new GridLayout(nColumns, false);
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		layout.horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
-		layout.verticalSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING);
-		return layout;
-	}
-
-    private GridData setButtonLayoutData(Button button, FontMetrics fontMetrics) {
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-        int widthHint = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH);
-        Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-        data.widthHint = Math.max(widthHint, minSize.x);
-        button.setLayoutData(data);
-        return data;
-    }
-
-	/**
-	 * Set the enabled category/activity check/grey states based on initial
-	 * activity enablement.
-	 */
-	private void setInitialStates() {
-		Set enabledActivities = activitySupport
-				.getEnabledActivityIds();
-		setEnabledStates(enabledActivities);
-	}
-
-	private void setEnabledStates(Set enabledActivities) {
-		Set categories = activitySupport
-				.getDefinedCategoryIds();
-		List checked = new ArrayList(10), grayed = new ArrayList(10);
-		for (Iterator i = categories.iterator(); i.hasNext();) {
-			String categoryId = (String) i.next();
-			ICategory category = activitySupport
-					.getCategory(categoryId);
-
-			int state = NONE;
-			
-			Collection activities = InternalActivityHelper
-					.getActivityIdsForCategory(activitySupport, category);
-			int foundCount = 0;
-			for (Iterator j = activities.iterator(); j.hasNext();) {
-				String activityId = (String) j.next();
-				managedActivities.add(activityId);
-				if (enabledActivities.contains(activityId)) {
-					IActivity activity = activitySupport
-							.getActivity(activityId);
-					checked.add(new CategorizedActivity(category, activity));
-					//add activity proxy
-					foundCount++;
-				}
-			}
-
-			if (foundCount == activities.size()) {
-				state = ALL;
-			} else if (foundCount > 0) {
-				state = SOME;
-			}
-
-			if (state == NONE) {
-				continue;
-			}
-			checked.add(category);
-
-			if (state == SOME) {
-				grayed.add(category);
-			}
-		}
-
-		dualViewer.setCheckedElements(checked.toArray());
-		dualViewer.setGrayedElements(grayed.toArray());
-	}
-
-	/**
-	 * Update activity enablement based on the check states of activities in the
-	 * tree.
-	 */
-	public void updateActivityStates() {
-		Set enabledActivities = new HashSet(activitySupport
-                .getEnabledActivityIds());
-
-		// remove all but the unmanaged activities (if any).
-		enabledActivities.removeAll(managedActivities);
-
-		Object[] checked = dualViewer.getCheckedElements();
-		for (int i = 0; i < checked.length; i++) {
-			Object element = checked[i];
-			if (element instanceof ICategory || dualViewer.getGrayed(element)) {
-				continue;
-			}
-			enabledActivities.add(((IActivity) element).getId());
-		}
-
-		activitySupport.setEnabledActivityIds(enabledActivities);
-	}
-
-	/**
-	 * Restore the default activity states.
-	 */
-	public void restoreDefaults() {
-	    Set defaultEnabled = new HashSet();
-	    Set activityIds = activitySupport.getDefinedActivityIds();
-	    for (Iterator i = activityIds.iterator(); i.hasNext();) {
-            String activityId = (String) i.next();
-            IActivity activity = activitySupport.getActivity(activityId);
-            try {
-                if (activity.isDefaultEnabled()) {
-                    defaultEnabled.add(activityId);
-                }
-            } catch (NotDefinedException e) {
-                // this can't happen - we're iterating over defined activities.
-            }
-        }
-	    
-		setEnabledStates(defaultEnabled);
-	}
-
-	/**
-	 * Toggles the enablement state of all activities.
-	 * 
-	 * @param enabled
-	 *            whether the tree should be enabled
-	 */
-	protected void toggleTreeEnablement(boolean enabled) {
-		Object[] elements = provider.getElements(activitySupport);
-		
-		//reset grey state to null
-		dualViewer.setGrayedElements(new Object[0]);
-		
-		//enable all categories
-		for (int i = 0; i < elements.length; i++) {
-			dualViewer
-					.expandToLevel(elements[i], AbstractTreeViewer.ALL_LEVELS);
-			dualViewer.setSubtreeChecked(elements[i], enabled);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java
deleted file mode 100644
index 8d103d1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityLabelProvider.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.NotDefinedException;
-
-/**
- * Provides labels for <code>IActivity</code> objects. They may be passed
- * directly or as <code>String</code> identifiers that are matched against
- * the activity manager.
- * 
- * @since 3.0
- */
-public class ActivityLabelProvider extends LabelProvider {
-
-    private IActivityManager activityManager;
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param activityManager
-     * @since 3.0
-     */
-    public ActivityLabelProvider(IActivityManager activityManager) {
-        this.activityManager = activityManager;
-    }
-
-    /**
-     * @param activity
-     * @return
-     */
-    private String getActivityText(IActivity activity) {
-        try {
-            return activity.getName();
-        } catch (NotDefinedException e) {
-            return activity.getId();
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-     */
-    public Image getImage(Object element) {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        if (element instanceof String) {
-            return getActivityText(activityManager
-                    .getActivity((String) element));
-        } else if (element instanceof IActivity) {
-            return getActivityText((IActivity) element);
-        } else {
-            throw new IllegalArgumentException();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityMessages.java
deleted file mode 100644
index 688a4df..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityMessages.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import org.eclipse.osgi.util.NLS;
-
-
-/**
- * The ActivtyMessages are the messages used by the activities
- * support.
- *
- */
-public class ActivityMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.activities.ws.messages";//$NON-NLS-1$
-	
-	public static String ActivityEnabler_description;
-	public static String ActivityEnabler_activities;
-    public static String ActivityEnabler_categories;
-	public static String ActivityEnabler_selectAll;
-	public static String ActivityEnabler_deselectAll;
-    public static String ActivitiesPreferencePage_advancedDialogTitle;
-    public static String ActivitiesPreferencePage_advancedButton;
-    public static String ActivitiesPreferencePage_lockedMessage;
-    public static String ActivitiesPreferencePage_captionMessage;
-    public static String ActivitiesPreferencePage_requirements;
-	public static String ManagerTask;
-	public static String ManagerWindowSubTask;
-	public static String ManagerViewsSubTask;
-	public static String Perspective_showAll;
-	public static String activityPromptButton;
-	public static String activityPromptToolTip;
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, ActivityMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java
deleted file mode 100644
index 2481cc4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ActivityViewerFilter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-
-/**
- * Generic viewer filter that works based on activity enablement.
- * 
- * @since 3.0
- */
-public class ActivityViewerFilter extends ViewerFilter {
-
-    private boolean hasEncounteredFilteredItem = false;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-     */
-    public boolean select(Viewer viewer, Object parentElement, Object element) {
-        if (WorkbenchActivityHelper.filterItem(element)) {
-            setHasEncounteredFilteredItem(true);
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * @return returns whether the filter has filtered an item
-     */
-    public boolean getHasEncounteredFilteredItem() {
-        return hasEncounteredFilteredItem;
-    }
-
-    /**
-     * @param sets whether the filter has filtered an item
-     */
-    public void setHasEncounteredFilteredItem(boolean hasEncounteredFilteredItem) {
-        this.hasEncounteredFilteredItem = hasEncounteredFilteredItem;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java
deleted file mode 100644
index a18f711..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/CategorizedActivity.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityListener;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.NotDefinedException;
-
-/**
- * IActivity proxy that is used by the 
- * <code>IActivityCategoryContentProvider</code>.  Each 
- * proxy keeps a pointer to the <code>ICategory</code> under which it is being 
- * provided.
- * 
- * @since 3.0
- */
-public class CategorizedActivity implements IActivity {
-
-    /**
-     * The real <code>IActivity</code>.
-     */
-    private IActivity activity;
-
-    /**
-     * The <code>ICategory</code> under which this proxy will be rendered.
-     */
-    private ICategory category;
-
-    /**
-     * Create a new instance.
-     * 
-     * @param category the <code>ICategory</code> under which this proxy will be 
-     * rendered.
-     * @param activity the real <code>IActivity</code>.
-     */
-    public CategorizedActivity(ICategory category, IActivity activity) {
-        this.activity = activity;
-        this.category = category;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#addActivityListener(org.eclipse.ui.activities.IActivityListener)
-     */
-    public void addActivityListener(IActivityListener activityListener) {
-        activity.addActivityListener(activityListener);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public int compareTo(Object o) {
-        return activity.compareTo(o);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object o) {
-        if (o instanceof CategorizedActivity) {
-            if (((CategorizedActivity) o).getCategory().equals(getCategory())) {
-				return ((CategorizedActivity) o).getActivity().equals(
-                        getActivity());
-			}
-        }
-        return false;
-    }
-
-    /**
-     * @return returns the <code>IActivity</code>.
-     */
-    public IActivity getActivity() {
-        return activity;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#getActivityRequirementBindings()
-     */
-    public Set getActivityRequirementBindings() {
-        return activity.getActivityRequirementBindings();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#getActivityPatternBindings()
-     */
-    public Set getActivityPatternBindings() {
-        return activity.getActivityPatternBindings();
-    }
-
-    /**
-     * @return returns the <code>ICategory</code>.
-     */
-    public ICategory getCategory() {
-        return category;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#getId()
-     */
-    public String getId() {
-        return activity.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#getName()
-     */
-    public String getName() throws NotDefinedException {
-        return activity.getName();
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return activity.hashCode();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#isDefined()
-     */
-    public boolean isDefined() {
-        return activity.isDefined();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#isEnabled()
-     */
-    public boolean isEnabled() {
-        return activity.isEnabled();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#removeActivityListener(org.eclipse.ui.activities.IActivityListener)
-     */
-    public void removeActivityListener(IActivityListener activityListener) {
-        activity.removeActivityListener(activityListener);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return category.getId() + " -> " + activity.getId(); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#getDescription()
-     */
-    public String getDescription() throws NotDefinedException {
-        return activity.getDescription();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IActivity#isDefaultEnabled()
-     */
-    public boolean isDefaultEnabled() throws NotDefinedException {
-        return activity.isDefaultEnabled();
-    }
-    
-    public Expression getExpression() {
-    	return activity.getExpression();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.java
deleted file mode 100644
index 4f34be7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.java
+++ /dev/null
@@ -1,335 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import com.ibm.icu.text.MessageFormat;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.NotDefinedException;
-import org.eclipse.ui.activities.WorkbenchTriggerPointAdvisor;
-
-/**
- * Dialog that will prompt the user and confirm that they wish to activate a set
- * of activities.
- * 
- * @since 3.0
- */
-public class EnablementDialog extends Dialog {
-
-	/**
-     * The translation bundle in which to look up internationalized text.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(EnablementDialog.class.getName());
-
-    private Button dontAskButton;
-
-    private Set activitiesToEnable = new HashSet(7);
-
-    private Collection activityIds;
-
-    private boolean dontAsk;
-
-    private Button detailsButton;
-
-    boolean showDetails = false;
-
-    private Composite detailsComposite;
-
-    private Label detailsLabel;
-
-    private String selectedActivity;
-
-    private Text detailsText;
-
-	private Properties strings;
-
-    /**
-     * Create a new instance of the reciever.
-     * 
-     * @param parentShell the parent shell
-     * @param activityIds the candidate activities
-     * @param strings string overrides
-     */
-    public EnablementDialog(Shell parentShell, Collection activityIds, Properties strings) {
-        super(parentShell);
-        this.activityIds = activityIds;
-		this.strings = strings;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite composite = (Composite) super.createDialogArea(parent);
-        Font dialogFont = parent.getFont();
-        composite.setFont(dialogFont);
-        Label text = new Label(composite, SWT.NONE);
-        text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        text.setFont(dialogFont);
-        IActivityManager manager = PlatformUI.getWorkbench()
-                .getActivitySupport().getActivityManager();
-
-        if (activityIds.size() == 1) {
-            String activityId = (String) activityIds.iterator().next();
-            activitiesToEnable.add(activityId);
-            selectedActivity = activityId;
-
-            IActivity activity = manager.getActivity(activityId);
-            String activityText;
-            try {
-                activityText = activity.getName();
-            } catch (NotDefinedException e) {
-                activityText = activity.getId();
-            }
-            text.setText(MessageFormat.format(RESOURCE_BUNDLE
-                    .getString("requiresSingle"), //$NON-NLS-1$
-                    new Object[] { activityText }));
-
-            text = new Label(composite, SWT.NONE);
-			text
-					.setText(strings
-							.getProperty(
-									WorkbenchTriggerPointAdvisor.PROCEED_SINGLE,
-									RESOURCE_BUNDLE
-											.getString(WorkbenchTriggerPointAdvisor.PROCEED_SINGLE)));
-            text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-            text.setFont(dialogFont);
-        } else {
-            text.setText(RESOURCE_BUNDLE.getString("requiresMulti")); //$NON-NLS-1$
-            Set activityIdsCopy = new HashSet(activityIds);
-            CheckboxTableViewer viewer = CheckboxTableViewer.newCheckList(
-					composite, SWT.CHECK | SWT.BORDER | SWT.SINGLE);
-            viewer.setContentProvider(new ActivityContentProvider());
-            viewer.setLabelProvider(new ActivityLabelProvider(manager));
-            viewer.setInput(activityIdsCopy);
-            viewer.setCheckedElements(activityIdsCopy.toArray());
-            viewer.addCheckStateListener(new ICheckStateListener() {
-
-                /* (non-Javadoc)
-                 * @see org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent)
-                 */
-                public void checkStateChanged(CheckStateChangedEvent event) {
-                    if (event.getChecked()) {
-						activitiesToEnable.add(event.getElement());
-					} else {
-						activitiesToEnable.remove(event.getElement());
-					}
-
-                    getButton(Window.OK).setEnabled(
-                            !activitiesToEnable.isEmpty());
-                }
-            });
-            viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-                /* (non-Javadoc)
-                 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-                 */
-                public void selectionChanged(SelectionChangedEvent event) {
-                    selectedActivity = (String) ((IStructuredSelection) event
-                            .getSelection()).getFirstElement();
-                    setDetails();
-                }
-            });
-            activitiesToEnable.addAll(activityIdsCopy);
-
-            viewer.getControl().setLayoutData(
-                    new GridData(GridData.FILL_HORIZONTAL));
-            viewer.getControl().setFont(dialogFont);
-
-            text = new Label(composite, SWT.NONE);
-            text.setText(strings.getProperty(WorkbenchTriggerPointAdvisor.PROCEED_MULTI, RESOURCE_BUNDLE
-					.getString(WorkbenchTriggerPointAdvisor.PROCEED_MULTI))); 
-            text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-            text.setFont(dialogFont);
-        }
-        Label seperator = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
-        seperator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        dontAskButton = new Button(composite, SWT.CHECK);
-        dontAskButton.setSelection(false);
-        dontAskButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        dontAskButton.setText(strings.getProperty(
-				WorkbenchTriggerPointAdvisor.DONT_ASK, RESOURCE_BUNDLE
-						.getString(WorkbenchTriggerPointAdvisor.DONT_ASK)));
-        dontAskButton.setFont(dialogFont);
-
-        detailsComposite = new Composite(composite, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        detailsComposite.setLayout(layout);
-        detailsLabel = new Label(detailsComposite, SWT.NONE);
-        detailsLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        detailsLabel.setFont(dialogFont);
-
-        detailsText = new Text(detailsComposite, SWT.WRAP | SWT.V_SCROLL
-                | SWT.BORDER | SWT.READ_ONLY);
-        detailsText.setLayoutData(new GridData(GridData.FILL_BOTH));
-        detailsText.setFont(dialogFont);
-
-        setDetails();
-
-        GridData data = new GridData(GridData.FILL_BOTH);
-        detailsComposite.setLayoutData(data);
-        setDetailHints();
-
-        return composite;
-    }
-
-    /**
-     * Set the text of the detail label and text area.
-     */
-    protected void setDetails() {
-        if (selectedActivity == null) {
-            detailsLabel
-					.setText(strings
-							.getProperty(
-									WorkbenchTriggerPointAdvisor.NO_DETAILS,
-									RESOURCE_BUNDLE
-											.getString(WorkbenchTriggerPointAdvisor.NO_DETAILS)));
-            detailsText.setText(""); //$NON-NLS-1$
-        } else {
-            IActivity activity = PlatformUI.getWorkbench().getActivitySupport()
-                    .getActivityManager().getActivity(selectedActivity);
-            String name;
-            try {
-                name = activity.getName();
-            } catch (NotDefinedException e1) {
-                name = selectedActivity;
-            }
-            String desc;
-            try {
-                desc = activity.getDescription();
-            } catch (NotDefinedException e) {
-                desc = RESOURCE_BUNDLE.getString("noDescAvailable"); //$NON-NLS-1$
-            }
-            detailsLabel.setText(MessageFormat.format(RESOURCE_BUNDLE
-                    .getString("detailsLabel"), new Object[] { name })); //$NON-NLS-1$
-            detailsText.setText(desc);
-        }
-    }
-
-    /**
-     * 
-     */
-    protected void setDetailHints() {
-        GridData data = (GridData) detailsComposite.getLayoutData();
-        if (showDetails) {
-            Composite parent = detailsComposite.getParent();
-            data.widthHint = parent.getSize().x - ((GridLayout)parent.getLayout()).marginWidth * 2;
-            data.heightHint = convertHeightInCharsToPixels(5);
-        } else {
-            data.widthHint = 0;
-            data.heightHint = 0;
-        }
-    }
-
-    /**
-     * Set the label of the detail button based on whether we're currently showing the description text.
-     */
-    private void setDetailButtonLabel() {
-        if (!showDetails) {
-			detailsButton.setText(RESOURCE_BUNDLE.getString("showDetails")); //$NON-NLS-1$
-		} else {
-			detailsButton.setText(RESOURCE_BUNDLE.getString("hideDetails")); //$NON-NLS-1$        
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        newShell.setText(RESOURCE_BUNDLE.getString("title")); //$NON-NLS-1$
-    }
-
-    /** 
-     * @return Returns whether the user has declared that there is to be no further 
-     * prompting for the supplied activities
-     */
-    public boolean getDontAsk() {
-        return dontAsk;
-    }
-
-    /**
-     * @return Returns the activities to enable
-     */
-    public Set getActivitiesToEnable() {
-        return activitiesToEnable;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-     */
-    protected void okPressed() {
-        dontAsk = dontAskButton.getSelection();
-        super.okPressed();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        super.createButtonsForButtonBar(parent);
-        detailsButton = createButton(parent, IDialogConstants.DETAILS_ID,
-                "", false); //$NON-NLS-1$
-        setDetailButtonLabel();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-     */
-    protected void buttonPressed(int buttonId) {
-        if (buttonId == IDialogConstants.DETAILS_ID) {
-            detailsPressed();
-            return;
-        }
-        super.buttonPressed(buttonId);
-    }
-
-    /**
-     * Handles selection of the Details button.
-     */
-    private void detailsPressed() {
-        showDetails = !showDetails;
-        setDetailButtonLabel();
-        setDetailHints();
-        setDetails();
-        ((Composite) getDialogArea()).layout(true);
-        getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties
deleted file mode 100644
index b94c6a0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/EnablementDialog.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-title=Confirm Enablement
-proceedMulti=Enable the selected activities?
-proceedSingle=Enable the required activity?
-requiresSingle=This action requires the enablement of "{0}".
-requiresMulti=This action requires the enablement of at least one of the following:\n
-dontAsk=&Always enable activities and don't ask me again
-noDescAvailable=No description available.
-noDetails=Select an activity to view its description.
-detailsLabel=D&escription of \"{0}\":
-showDetails=&Details >>
-hideDetails=<< &Details
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java
deleted file mode 100644
index 22825cb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/ImageBindingRegistry.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * @since 3.1
- */
-public class ImageBindingRegistry implements IExtensionChangeHandler {
-	private String tag; 
-	private ImageRegistry registry = new ImageRegistry();
-	
-	/**
-	 * @param tag 
-	 * 
-	 */
-	public ImageBindingRegistry(String tag) {
-		super();
-		this.tag = tag;
-		IExtension [] extensions = getExtensionPointFilter().getExtensions();
-		for (int i = 0; i < extensions.length; i++) {
-			addExtension(PlatformUI.getWorkbench().getExtensionTracker(), extensions[i]);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		IConfigurationElement [] elements = extension.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			IConfigurationElement element = elements[i];
-			if (element.getName().equals(tag)) {
-				String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-				String file = element.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-				if (file == null || id == null) {
-					continue; //ignore - malformed
-				}
-				if (registry.getDescriptor(id) == null) { // first come, first serve
-					ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getNamespace(), file);
-					if (descriptor != null) {
-						registry.put(id, descriptor);
-						tracker.registerObject(extension, id, IExtensionTracker.REF_WEAK);
-					}
-				}
-			}
-		}
-		
-	}
-    
-    /**
-     * Return the activity support extension point that this registry is interested in.
-     * 
-     * @return the extension point
-     */
-	public IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-                PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_ACTIVITYSUPPORT);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof String) {
-				registry.remove((String) objects[i]);
-			}
-		}
-	}
-	
-	/**
-	 * Get the ImageDescriptor for the given id.
-	 * 
-	 * @param id the id
-	 * @return the descriptor
-	 */
-	public ImageDescriptor getImageDescriptor(String id) {
-		return registry.getDescriptor(id);
-	}
-	
-	/**
-	 * Dispose of this registry.
-	 */
-	void dispose() {
-		registry.dispose();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java
deleted file mode 100644
index 7bf2783..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/RegistryTriggerPoint.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * @since 3.1
- */
-public class RegistryTriggerPoint extends AbstractTriggerPoint {
-
-    private String id;
-
-    private IConfigurationElement element;
-
-    private Map hints;
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param id the id of the trigger point
-     * @param element the defining configuration element
-     */
-    public RegistryTriggerPoint(String id, IConfigurationElement element) {
-        this.id = id;
-        this.element = element;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.ITriggerPoint#getId()
-     */
-    public String getId() {
-        return id;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.ITriggerPoint#getStringHint(java.lang.String)
-     */
-    public String getStringHint(String key) {
-        return (String) getHints().get(key);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.ITriggerPoint#getBooleanHint(java.lang.String)
-     */
-    public boolean getBooleanHint(String key) {
-        return Boolean.valueOf(getStringHint(key)).booleanValue();
-    }
-
-    /**
-     * Lazily create the hints.
-     * 
-     * @return the hint map
-     */
-    private Map getHints() {
-        if (hints == null) {
-            hints = new HashMap();
-
-            IConfigurationElement[] hintElements = element
-                    .getChildren(IWorkbenchRegistryConstants.TAG_HINT);
-            for (int i = 0; i < hintElements.length; i++) {
-                String id = hintElements[i]
-                        .getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-                String value = hintElements[i]
-                        .getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-
-                if (id != null && value != null) {
-					hints.put(id, value);
-				}
-            }
-        }
-
-        return hints;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java
deleted file mode 100644
index 19e66c7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorDescriptor.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.activities.ITriggerPointAdvisor;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * Descriptor for trigger point advisor extensions.
- * 
- * @since 3.1
- */
-public final class TriggerPointAdvisorDescriptor {
-
-	private String id;
-
-	private IConfigurationElement element;
-
-	/**
-	 * Create a new instance of this class.
-	 * 
-	 * @param element
-	 *            the configuration element
-	 * @throws IllegalArgumentException
-	 *             thrown if the element is missing an id attribute
-	 */
-	public TriggerPointAdvisorDescriptor(IConfigurationElement element)
-			throws IllegalArgumentException {
-		id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-		if (id == null
-				|| RegistryReader.getClassValue(element,
-						IWorkbenchRegistryConstants.ATT_CLASS) == null) {
-			throw new IllegalArgumentException();
-		}
-		this.element = element;
-	}
-
-	/**
-	 * Return the id.
-	 * 
-	 * @return the id
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * Create the advisor for this descriptor.
-	 * 
-	 * @return the advisor
-	 * @throws CoreException
-	 *             thrown if there is an issue creating the advisor
-	 */
-	public ITriggerPointAdvisor createAdvisor() throws CoreException {
-		return (ITriggerPointAdvisor) element
-				.createExecutableExtension(IWorkbenchRegistryConstants.ATT_CLASS);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java
deleted file mode 100644
index f832ed9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointAdvisorRegistry.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * @since 3.1
- */
-public class TriggerPointAdvisorRegistry {
-
-	private static TriggerPointAdvisorRegistry instance;
-
-	/**
-	 * 
-	 */
-	private TriggerPointAdvisorRegistry() {
-	}
-
-	/**
-	 * Return the instance of this registry.
-	 * 
-	 * @return the instance of this registry
-	 */
-	public static TriggerPointAdvisorRegistry getInstance() {
-		if (instance == null) {
-			instance = new TriggerPointAdvisorRegistry();
-		}
-
-		return instance;
-	}
-
-	/**
-	 * Return the trigger point advisors.
-	 * 
-	 * @return the advisors
-	 */
-	public TriggerPointAdvisorDescriptor[] getAdvisors() {
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_ACTIVITYSUPPORT);
-		if (point == null) {
-			return new TriggerPointAdvisorDescriptor[0];
-		}
-
-		IExtension[] extensions = point.getExtensions();
-		extensions = RegistryReader.orderExtensions(extensions);
-
-		ArrayList list = new ArrayList(extensions.length);
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement[] elements = extensions[i]
-					.getConfigurationElements();
-			for (int j = 0; j < elements.length; j++) {
-				if (elements[j].getName().equals(
-						IWorkbenchRegistryConstants.TAG_TRIGGERPOINTADVISOR)) {
-					try {
-						TriggerPointAdvisorDescriptor descriptor = new TriggerPointAdvisorDescriptor(
-								elements[j]);
-						list.add(descriptor);
-					} catch (IllegalArgumentException e) {
-						// log an error since its not safe to open a dialog here
-						WorkbenchPlugin.log(
-								"invalid trigger point advisor extension", //$NON-NLS-1$
-								StatusUtil.newStatus(IStatus.ERROR, e
-										.getMessage(), e));
-					}
-				}
-			}
-		}
-
-		return (TriggerPointAdvisorDescriptor[]) list
-				.toArray(new TriggerPointAdvisorDescriptor[list.size()]);
-	}
-
-	/**
-	 * Return the trigger point advisor bound to a given product.
-	 * 
-	 * @param productId
-	 *            the product id
-	 * @return the advisor
-	 */
-	public TriggerPointAdvisorDescriptor getAdvisorForProduct(String productId) {
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_ACTIVITYSUPPORT);
-		if (point == null) {
-			return null;
-		}
-
-		IExtension[] extensions = point.getExtensions();
-		extensions = RegistryReader.orderExtensions(extensions);
-
-		String targetIntroId = getAdvisorForProduct(productId, extensions);
-		if (targetIntroId == null) {
-			return null;
-		}
-
-		TriggerPointAdvisorDescriptor[] advisors = getAdvisors();
-		for (int i = 0; i < advisors.length; i++) {
-			if (advisors[i].getId().equals(targetIntroId)) {
-				return advisors[i];
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * @param targetProductId
-	 * @param extensions
-	 * @return the advisor id
-	 */
-	private String getAdvisorForProduct(String targetProductId,
-			IExtension[] extensions) {
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement[] elements = extensions[i]
-					.getConfigurationElements();
-			for (int j = 0; j < elements.length; j++) {
-				if (elements[j].getName().equals(
-						IWorkbenchRegistryConstants.TAG_ADVISORPRODUCTBINDING)) {
-					String advisorId = elements[j]
-							.getAttribute(IWorkbenchRegistryConstants.ATT_ADVISORID);
-					String productId = elements[j]
-							.getAttribute(IWorkbenchRegistryConstants.ATT_PRODUCTID);
-
-					if (advisorId == null || productId == null) {
-						IStatus status = new Status(
-								IStatus.ERROR,
-								elements[j].getDeclaringExtension()
-										.getNamespace(),
-								IStatus.ERROR,
-								"triggerPointAdvisorId and productId must be defined.", new IllegalArgumentException()); //$NON-NLS-1$
-						WorkbenchPlugin
-								.log(
-										"Invalid trigger point advisor binding", status); //$NON-NLS-1$
-						continue;
-					}
-
-					if (targetProductId.equals(productId)) {
-						return advisorId;
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java
deleted file mode 100644
index 471e24e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/TriggerPointManager.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.util.HashMap;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ITriggerPoint;
-import org.eclipse.ui.activities.ITriggerPointManager;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Workbench implementation of the trigger point manager.
- * 
- * @since 3.1
- */
-public class TriggerPointManager implements ITriggerPointManager, IExtensionChangeHandler {
-
-    private HashMap triggerMap = new HashMap();
-
-    /**
-     * 
-     */
-    public TriggerPointManager() {
-        super();
-        triggerMap.put(ITriggerPointManager.UNKNOWN_TRIGGER_POINT_ID,
-                new AbstractTriggerPoint() {
-
-                    /*
-                     * (non-Javadoc)
-                     * 
-                     * @see org.eclipse.ui.activities.ITriggerPoint#getId()
-                     */
-                    public String getId() {
-                        return ITriggerPointManager.UNKNOWN_TRIGGER_POINT_ID;
-                    }
-
-                    /*
-                     * (non-Javadoc)
-                     * 
-                     * @see org.eclipse.ui.activities.ITriggerPoint#getStringHint(java.lang.String)
-                     */
-                    public String getStringHint(String key) {
-                        if (ITriggerPoint.HINT_INTERACTIVE.equals(key)) {
-                            // TODO: change to false when we have mapped our
-                            // trigger points
-                            return Boolean.TRUE.toString();
-                        }
-                        return null;
-                    }
-
-                    /*
-                     * (non-Javadoc)
-                     * 
-                     * @see org.eclipse.ui.activities.ITriggerPoint#getBooleanHint(java.lang.String)
-                     */
-                    public boolean getBooleanHint(String key) {
-                        if (ITriggerPoint.HINT_INTERACTIVE.equals(key)) {
-                            // TODO: change to false when we have mapped our
-                            // trigger points
-                            return true;
-                        }
-                        return false;
-                    }
-                });
-        IExtensionTracker tracker = PlatformUI.getWorkbench().getExtensionTracker();
-        tracker.registerHandler(this, ExtensionTracker.createExtensionPointFilter(getExtensionPointFilter()));
-
-        IExtensionPoint point = getExtensionPointFilter();
-        IExtension[] extensions = point.getExtensions();
-        for (int i = 0; i < extensions.length; i++) {
-            addExtension(tracker,
-                    extensions[i]);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.ITriggerPointManager#getTriggerPoint(java.lang.String)
-     */
-    public ITriggerPoint getTriggerPoint(String id) {
-        return (ITriggerPoint) triggerMap.get(id);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.ITriggerPointManager#getDefinedTriggerPointIds()
-     */
-    public Set getDefinedTriggerPointIds() {
-        return triggerMap.entrySet();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionRemovalHandler#removeInstance(org.eclipse.core.runtime.IExtension,
-     *      java.lang.Object[])
-     */
-    public void removeExtension(IExtension extension, Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            Object object = objects[i];
-            if (object instanceof RegistryTriggerPoint) {
-                triggerMap.remove(((RegistryTriggerPoint) object).getId());
-            }
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionAdditionHandler#addInstance(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker,
-     *      org.eclipse.core.runtime.IExtension)
-     */
-    public void addExtension(IExtensionTracker tracker, IExtension extension) {
-        IConfigurationElement[] elements = extension.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-            IConfigurationElement element = elements[i];
-            if (element.getName().equals(
-                    IWorkbenchRegistryConstants.TAG_TRIGGERPOINT)) {
-                String id = element
-                        .getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-                if (id == null) {
-					continue;
-				}
-                RegistryTriggerPoint triggerPoint = new RegistryTriggerPoint(
-                        id, element);
-                triggerMap.put(id, triggerPoint);
-                tracker.registerObject(extension, triggerPoint,
-                        IExtensionTracker.REF_WEAK);
-            }
-        }
-    }
-
-    private IExtensionPoint getExtensionPointFilter() {
-        return Platform.getExtensionRegistry().getExtensionPoint(
-                PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_ACTIVITYSUPPORT);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java
deleted file mode 100644
index 6e6c86d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchActivitySupport.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.IActivity;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.activities.IActivityManagerListener;
-import org.eclipse.ui.activities.ICategory;
-import org.eclipse.ui.activities.IMutableActivityManager;
-import org.eclipse.ui.activities.ITriggerPointAdvisor;
-import org.eclipse.ui.activities.ITriggerPointManager;
-import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import org.eclipse.ui.activities.WorkbenchTriggerPointAdvisor;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.activities.MutableActivityManager;
-import org.eclipse.ui.internal.activities.ProxyActivityManager;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Implementation of {@link org.eclipse.ui.activities.IWorkbenchActivitySupport}.
- * @since 3.0
- */
-public class WorkbenchActivitySupport implements IWorkbenchActivitySupport, IExtensionChangeHandler {
-    private MutableActivityManager mutableActivityManager;
-
-    private ProxyActivityManager proxyActivityManager;
-
-	private ImageBindingRegistry activityImageBindingRegistry;
-
-	private ImageBindingRegistry categoryImageBindingRegistry;
-	
-	private ITriggerPointManager triggerPointManager;
-
-	private ITriggerPointAdvisor advisor;
-
-	/**
-	 * Create a new instance of this class.
-	 */
-    public WorkbenchActivitySupport() {
-		triggerPointManager = new TriggerPointManager();
-		IExtensionTracker tracker = PlatformUI.getWorkbench().getExtensionTracker();
-        tracker.registerHandler(this, ExtensionTracker.createExtensionPointFilter(getActivitySupportExtensionPoint()));
-        mutableActivityManager = new MutableActivityManager(getTriggerPointAdvisor());
-        proxyActivityManager = new ProxyActivityManager(mutableActivityManager);
-        mutableActivityManager
-                .addActivityManagerListener(new IActivityManagerListener() {
-
-                    private Set lastEnabled = new HashSet(
-                            mutableActivityManager.getEnabledActivityIds());
-
-                    /* (non-Javadoc)
-                     * @see org.eclipse.ui.activities.IActivityManagerListener#activityManagerChanged(org.eclipse.ui.activities.ActivityManagerEvent)
-                     */
-                    public void activityManagerChanged(
-                            ActivityManagerEvent activityManagerEvent) {
-                        Set activityIds = mutableActivityManager
-                                .getEnabledActivityIds();
-                        // only update the windows if we've not processed this new enablement state already.
-                        if (!activityIds.equals(lastEnabled)) {
-                            lastEnabled = new HashSet(activityIds);
-
-                            // abort if the workbench isn't running
-                            if (!PlatformUI.isWorkbenchRunning()) {
-								return;
-							}
-
-                            // refresh the managers on all windows.
-                            final IWorkbench workbench = PlatformUI
-                                    .getWorkbench();
-                            IWorkbenchWindow[] windows = workbench
-                                    .getWorkbenchWindows();
-                            for (int i = 0; i < windows.length; i++) {
-                                if (windows[i] instanceof WorkbenchWindow) {
-                                    final WorkbenchWindow window = (WorkbenchWindow) windows[i];
-
-                                    final ProgressMonitorDialog dialog = new ProgressMonitorDialog(
-                                            window.getShell());
-
-                                    final IRunnableWithProgress runnable = new IRunnableWithProgress() {
-
-                                        /**
-                                         * When this operation should open a dialog
-                                         */
-                                        private long openTime;
-
-                                        /**
-                                         * Whether the dialog has been opened yet.
-                                         */
-                                        private boolean dialogOpened = false;
-
-                                        /* (non-Javadoc)
-                                         * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
-                                         */
-                                        public void run(IProgressMonitor monitor) {
-
-                                            openTime = System
-                                                    .currentTimeMillis()
-                                                    + workbench
-                                                            .getProgressService()
-                                                            .getLongOperationTime();
-
-                                            //two work units - updating the window bars, and updating view bars
-                                            monitor
-                                                    .beginTask(
-                                                            ActivityMessages.ManagerTask, 2);
-
-                                            monitor
-                                                    .subTask(ActivityMessages.ManagerWindowSubTask); 
-
-                                            //update window managers...
-                                            updateWindowBars(window);
-                                            monitor.worked(1);
-
-                                            monitor
-                                                    .subTask(ActivityMessages.ManagerViewsSubTask); 
-                                            // update all of the (realized) views in all of the pages
-                                            IWorkbenchPage[] pages = window
-                                                    .getPages();
-                                            for (int j = 0; j < pages.length; j++) {
-                                                IWorkbenchPage page = pages[j];
-                                                IViewReference[] refs = page
-                                                        .getViewReferences();
-                                                for (int k = 0; k < refs.length; k++) {
-                                                    IViewPart part = refs[k]
-                                                            .getView(false);
-                                                    if (part != null) {
-                                                        updateViewBars(part);
-                                                    }
-                                                }
-                                            }
-                                            monitor.worked(1);
-
-                                            monitor.done();
-                                        }
-
-                                        /**
-                                         * Update the managers on the given given view.
-                                         * 
-                                         * @param part the view to update
-                                         */
-                                        private void updateViewBars(
-                                                IViewPart part) {
-                                            IViewSite viewSite = part
-                                                    .getViewSite();
-                                            // check for badly behaving or badly initialized views
-                                            if (viewSite == null) {
-												return;
-											}
-                                            IActionBars bars = viewSite
-                                                    .getActionBars();
-                                            IContributionManager manager = bars
-                                                    .getMenuManager();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                            manager = bars.getToolBarManager();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                            manager = bars
-                                                    .getStatusLineManager();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                        }
-
-                                        /**
-                                         * Update the managers on the given window.
-                                         * 
-                                         * @param window the window to update
-                                         */
-                                        private void updateWindowBars(
-                                                final WorkbenchWindow window) {
-                                            IContributionManager manager = window
-                                                    .getMenuBarManager();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                            manager = window
-                                                    .getCoolBarManager2();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                            manager = window
-                                                    .getToolBarManager2();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                            manager = window
-                                                    .getStatusLineManager();
-                                            if (manager != null) {
-												updateManager(manager);
-											}
-                                        }
-
-                                        /**
-                                         * Update the given manager in the UI thread.
-                                         * This may also open the progress dialog if 
-                                         * the operation is taking too long.
-                                         * 
-                                         * @param manager the manager to update
-                                         */
-                                        private void updateManager(
-                                                final IContributionManager manager) {
-                                            if (!dialogOpened
-                                                    && System
-                                                            .currentTimeMillis() > openTime) {
-                                                dialog.open();
-                                                dialogOpened = true;
-                                            }
-
-                                            manager.update(true);
-                                        }
-                                    };
-
-                                    // don't open the dialog by default - that'll be
-                                    // handled by the runnable if we take too long
-                                    dialog.setOpenOnRun(false);
-                                    // run this in the UI thread
-                                    workbench.getDisplay().asyncExec(
-                                            new Runnable() {
-
-                                                /* (non-Javadoc)
-                                                 * @see java.lang.Runnable#run()
-                                                 */
-                                                public void run() {
-                                                    BusyIndicator
-                                                            .showWhile(
-                                                                    workbench
-                                                                            .getDisplay(),
-                                                                    new Runnable() {
-
-                                                                        /* (non-Javadoc)
-                                                                         * @see java.lang.Runnable#run()
-                                                                         */
-                                                                        public void run() {
-                                                                            try {
-                                                                                dialog
-                                                                                        .run(
-                                                                                                false,
-                                                                                                false,
-                                                                                                runnable);
-                                                                            } catch (InvocationTargetException e) {
-                                                                                log(e);
-                                                                            } catch (InterruptedException e) {
-                                                                                log(e);
-                                                                            }
-                                                                        }
-                                                                    });
-                                                }
-                                            });
-                                }
-                            }
-                        }
-                    }
-
-                    /**
-                     * Logs an error message to the workbench log.
-                     * 
-                     * @param e the exception to log
-                     */
-                    private void log(Exception e) {
-                        StatusUtil.newStatus(IStatus.ERROR,
-                                "Could not update contribution managers", e); //$NON-NLS-1$ 
-                    }
-                });
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IWorkbenchActivitySupport#getActivityManager()
-     */
-    public IActivityManager getActivityManager() {
-        return proxyActivityManager;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IWorkbenchActivitySupport#setEnabledActivityIds(java.util.Set)
-     */
-    public void setEnabledActivityIds(Set enabledActivityIds) {
-        mutableActivityManager.setEnabledActivityIds(enabledActivityIds);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.IWorkbenchActivitySupport#getImageDescriptor(org.eclipse.ui.activities.IActivity)
-	 */
-	public ImageDescriptor getImageDescriptor(IActivity activity) {
-		if (activity.isDefined()) {
-			ImageDescriptor descriptor = getActivityImageBindingRegistry()
-					.getImageDescriptor(activity.getId());
-			if (descriptor != null) {
-				return descriptor;
-			}
-		}
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_ACTIVITY);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.IWorkbenchActivitySupport#getImageDescriptor(org.eclipse.ui.activities.ICategory)
-	 */
-	public ImageDescriptor getImageDescriptor(ICategory category) {
-		if (category.isDefined()) {
-			ImageDescriptor descriptor = getCategoryImageBindingRegistry()
-					.getImageDescriptor(category.getId());
-			if (descriptor != null) {
-				return descriptor;
-			}
-		}
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_ACTIVITY_CATEGORY);
-	}
-	
-	
-	/**
-	 * Return the activity image registry.
-	 * 
-	 * @return the activity image registry
-	 * @since 3.1
-	 */
-	private ImageBindingRegistry getActivityImageBindingRegistry() {
-		if (activityImageBindingRegistry == null) {
-			activityImageBindingRegistry = new ImageBindingRegistry(IWorkbenchRegistryConstants.TAG_ACTIVITY_IMAGE_BINDING);
-			PlatformUI
-					.getWorkbench()
-					.getExtensionTracker()
-					.registerHandler(
-							activityImageBindingRegistry,
-							ExtensionTracker
-									.createExtensionPointFilter(getActivitySupportExtensionPoint()));
-		}
-		return activityImageBindingRegistry;
-	}
-	
-	/**
-	 * Return the category image registry.
-	 * 
-	 * @return the category image registry
-	 * @since 3.1
-	 */
-	private ImageBindingRegistry getCategoryImageBindingRegistry() {
-		if (categoryImageBindingRegistry == null) {
-			categoryImageBindingRegistry = new ImageBindingRegistry(IWorkbenchRegistryConstants.TAG_CATEGORY_IMAGE_BINDING); 
-			PlatformUI
-			.getWorkbench()
-			.getExtensionTracker()
-			.registerHandler(
-					categoryImageBindingRegistry,
-					ExtensionTracker
-							.createExtensionPointFilter(getActivitySupportExtensionPoint()));
-		}
-		return categoryImageBindingRegistry;
-	}
-
-	/**
-	 * Dispose of the image registries.
-	 * 
-	 * @since 3.1
-	 */
-	public void dispose() {
-		if (activityImageBindingRegistry != null) {
-			activityImageBindingRegistry.dispose();
-			PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(activityImageBindingRegistry);
-		}
-		if (categoryImageBindingRegistry != null) {
-			categoryImageBindingRegistry.dispose();
-			PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(categoryImageBindingRegistry);
-		}
-		
-		PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(this);
-	}
-	
-	/**
-	 * Return the trigger point advisor.
-	 * 
-	 * TODO: should this be part of the interface?
-	 * 
-	 * @return the trigger point advisor
-	 * @since 3.1
-	 */
-	public ITriggerPointAdvisor getTriggerPointAdvisor() {
-		if (advisor != null) {
-			return advisor;
-		}
-		
-		IProduct product = Platform.getProduct();
-        if (product != null) {
-			TriggerPointAdvisorDescriptor descriptor = TriggerPointAdvisorRegistry
-					.getInstance().getAdvisorForProduct(product.getId());
-			if (descriptor != null) {
-				try {
-					advisor = descriptor.createAdvisor();					
-				} catch (CoreException e) {
-					WorkbenchPlugin.log("could not create trigger point advisor", e); //$NON-NLS-1$
-				}
-			}
-        }
-		
-		if (advisor == null) {
-			advisor = new WorkbenchTriggerPointAdvisor();
-		}
-		
-		return advisor;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.IWorkbenchActivitySupport#getTriggerPointManager()
-	 */
-	public ITriggerPointManager getTriggerPointManager() {
-		return triggerPointManager;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		// reset the advisor if it's the "default" advisor.
-		// this will give getAdvisor the chance to find a proper trigger/binding if
-		// it exists.
-		if (advisor != null && advisor.getClass().equals(WorkbenchTriggerPointAdvisor.class)) {
-			advisor = null;
-		}
-	}
-
-    /**
-     * Return the activity support extension point.
-     * 
-     * @return the activity support extension point.
-     * @since 3.1
-     */
-	private IExtensionPoint getActivitySupportExtensionPoint() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_ACTIVITYSUPPORT);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] == advisor) {
-				advisor = null;
-				break;
-			}
-		}
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.IWorkbenchActivitySupport#createWorkingCopy()
-     */
-    public IMutableActivityManager createWorkingCopy() {
-        MutableActivityManager clone = (MutableActivityManager) mutableActivityManager.clone();
-        clone.unhookRegistryListeners();
-        return clone;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java
deleted file mode 100644
index a26a5fc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/WorkbenchTriggerPoints.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.activities.ws;
-
-/**
- * @since 3.1
- */
-public interface WorkbenchTriggerPoints {
-
-    /**
-     * New wizard trigger point identifier.  Value <code>org.eclipse.ui.newWizards</code>.
-     */
-    public static final String NEW_WIZARDS = "org.eclipse.ui.newWizards"; //$NON-NLS-1$
-    
-    /**
-     * Perspective opening trigger point identifier.  Value <code>org.eclipse.ui.openPerspectiveDialog</code>.
-     */
-    public static final String OPEN_PERSPECITVE_DIALOG = "org.eclipse.ui.openPerspectiveDialog"; //$NON-NLS-1$
-    
-    /**
-     * Import wizards trigger point identifier.  Value <code>org.eclipse.ui.importWizards</code>.
-     */
-    public static final String IMPORT_WIZARDS = "org.eclipse.ui.importWizards"; //$NON-NLS-1$
-    
-    /**
-     * Export wizards trigger point identifier.  Value <code>org.eclipse.ui.exportWizards</code>.
-     */
-    public static final String EXPORT_WIZARDS = "org.eclipse.ui.exportWizards"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/messages.properties
deleted file mode 100644
index f7f0bbc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/ws/messages.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-ActivityEnabler_description=Descriptio&n:
-ActivityEnabler_activities=&Activities
-ActivityEnabler_categories=&Categories
-ActivityEnabler_selectAll=&Enable All
-ActivityEnabler_deselectAll=D&isable All
-ActivitiesPreferencePage_advancedDialogTitle=Advanced {0} Settings
-ActivitiesPreferencePage_advancedButton=Ad&vanced...
-ActivitiesPreferencePage_lockedMessage={0} (locked)
-ActivitiesPreferencePage_captionMessage=Activities allow you to enable or disable various product components.  These activities are grouped according to a set of predefined categories.
-ActivitiesPreferencePage_requirements=Re&quires:
-ManagerTask = Updating windows
-ManagerWindowSubTask = Updating window contributions
-ManagerViewsSubTask = Updating view contributions
-Perspective_showAll=&Show all
-activityPromptButton = &Prompt when enabling activities
-activityPromptToolTip = Prompt when a feature is first used that requires enablement of activities
-
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java
deleted file mode 100644
index 97c6918..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityActionBarAdvisor.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.application;
-
-import org.eclipse.ui.application.ActionBarAdvisor;
-import org.eclipse.ui.application.IActionBarConfigurer;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-
-/**
- * An implementation of <code>ActionBarAdvisor</code> that
- * calls back to the 3.0 legacy methods on <code>WorkbenchAdvisor</code>
- * for backwards compatibility.
- * 
- * @since 3.1
- */
-public class CompatibilityActionBarAdvisor extends ActionBarAdvisor {
-
-    private WorkbenchAdvisor wbAdvisor;
-
-    /**
-     * Creates a new compatibility action bar advisor.
-     * 
-     * @param wbAdvisor the workbench advisor
-     * @param configurer the action bar configurer
-     */
-    public CompatibilityActionBarAdvisor(WorkbenchAdvisor wbAdvisor, IActionBarConfigurer configurer) {
-        super(configurer);
-        this.wbAdvisor = wbAdvisor;
-    }
-
-    public void fillActionBars(int flags) {
-        IActionBarConfigurer abc = getActionBarConfigurer();
-        wbAdvisor.fillActionBars(abc.getWindowConfigurer().getWindow(), abc, flags);
-    }
-    
-    public boolean isApplicationMenu(String menuId) {
-        IActionBarConfigurer abc = getActionBarConfigurer();
-        return wbAdvisor.isApplicationMenu(abc.getWindowConfigurer(), menuId);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java
deleted file mode 100644
index 3e9aa9c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/application/CompatibilityWorkbenchWindowAdvisor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.application;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.application.ActionBarAdvisor;
-import org.eclipse.ui.application.IActionBarConfigurer;
-import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.application.WorkbenchWindowAdvisor;
-
-/**
- * An implementation of <code>WorkbenchWindowAdvisor</code> that
- * calls back to the 3.0 legacy methods on <code>WorkbenchAdvisor</code>
- * for backwards compatibility.
- * 
- * @since 3.1
- */
-public class CompatibilityWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
-
-    private WorkbenchAdvisor wbAdvisor;
-
-    /**
-     * Creates a new compatibility workbench window advisor.
-     * 
-     * @param wbAdvisor the workbench advisor
-     * @param windowConfigurer the window configurer
-     */
-    public CompatibilityWorkbenchWindowAdvisor(WorkbenchAdvisor wbAdvisor, IWorkbenchWindowConfigurer windowConfigurer) {
-        super(windowConfigurer);
-        this.wbAdvisor = wbAdvisor;
-    }
-
-    public void preWindowOpen() {
-        wbAdvisor.preWindowOpen(getWindowConfigurer());
-    }
-
-    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
-        return new CompatibilityActionBarAdvisor(wbAdvisor, configurer);
-    }
-    
-    public void postWindowRestore() throws WorkbenchException {
-        wbAdvisor.postWindowRestore(getWindowConfigurer());
-    }
-
-    public void openIntro() {
-        wbAdvisor.openIntro(getWindowConfigurer());
-    }
-
-    public void postWindowCreate() {
-        wbAdvisor.postWindowCreate(getWindowConfigurer());
-    }
-
-    public void postWindowOpen() {
-        wbAdvisor.postWindowOpen(getWindowConfigurer());
-    }
-
-    public boolean preWindowShellClose() {
-        return wbAdvisor.preWindowShellClose(getWindowConfigurer());
-    }
-
-    public void postWindowClose() {
-        wbAdvisor.postWindowClose(getWindowConfigurer());
-    }
-
-    public boolean isApplicationMenu(String menuId) {
-        return wbAdvisor.isApplicationMenu(getWindowConfigurer(), menuId);
-    }
-
-    public IAdaptable getDefaultPageInput() {
-        return wbAdvisor.getDefaultPageInput();
-    }
-
-    public void createWindowContents(Shell shell) {
-        wbAdvisor.createWindowContents(getWindowConfigurer(), shell);
-    }
-
- 
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWebBrowser.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWebBrowser.java
deleted file mode 100644
index ed47fcc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWebBrowser.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.browser;
-
-import java.io.IOException;
-import java.net.URL;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.program.Program;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.browser.AbstractWebBrowser;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * The default implementation of the web browser instance.
- * 
- * @since 3.1
- */
-public class DefaultWebBrowser extends AbstractWebBrowser {
-	private DefaultWorkbenchBrowserSupport support;
-
-	private String webBrowser;
-
-	private boolean webBrowserOpened;
-
-	/**
-	 * Creates the browser instance.
-	 * 
-	 * @param support
-	 * @param id
-	 */
-	public DefaultWebBrowser(DefaultWorkbenchBrowserSupport support, String id) {
-		super(id);
-		this.support = support;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWebBrowser#openURL(java.net.URL)
-	 */
-	public void openURL(URL url) throws PartInitException {
-		// format the href for an html file (file:///<filename.html>
-		// required for Mac only.
-		String href = url.toString();
-		if (href.startsWith("file:")) { //$NON-NLS-1$
-			href = href.substring(5);
-			while (href.startsWith("/")) { //$NON-NLS-1$
-				href = href.substring(1);
-			}
-			href = "file:///" + href; //$NON-NLS-1$
-		}
-		final String localHref = href;
-
-		final Display d = Display.getCurrent();
-		String platform = SWT.getPlatform();
-
-		if ("win32".equals(platform)) { //$NON-NLS-1$
-			Program.launch(localHref);
-		} else if ("carbon".equals(platform)) { //$NON-NLS-1$
-			try {
-				Runtime.getRuntime().exec("/usr/bin/open " + localHref); //$NON-NLS-1$
-			} catch (IOException e) {
-				throw new PartInitException(
-						WorkbenchMessages.ProductInfoDialog_unableToOpenWebBrowser,
-						e);
-			}
-		} else {
-			Thread launcher = new Thread("About Link Launcher") {//$NON-NLS-1$
-				public void run() {
-					try {
-						/*
-						 * encoding the href as the browser does not open if
-						 * there is a space in the url. Bug 77840
-						 */
-						String encodedLocalHref = urlEncodeForSpaces(localHref
-								.toCharArray());
-						if (webBrowserOpened) {
-							Runtime
-									.getRuntime()
-									.exec(
-											webBrowser
-													+ " -remote openURL(" + encodedLocalHref + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-						} else {
-							Process p = openWebBrowser(encodedLocalHref);
-							webBrowserOpened = true;
-							try {
-								if (p != null) {
-									p.waitFor();
-								}
-							} catch (InterruptedException e) {
-								openWebBrowserError(d);
-							} finally {
-								webBrowserOpened = false;
-							}
-						}
-					} catch (IOException e) {
-						openWebBrowserError(d);
-					}
-				}
-			};
-			launcher.start();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWebBrowser#close()
-	 */
-	public boolean close() {
-		support.unregisterBrowser(this);
-		return super.close();
-	}
-
-	/**
-	 * This method encodes the url, removes the spaces from the url and replaces
-	 * the same with <code>"%20"</code>. This method is required to fix Bug
-	 * 77840.
-	 * 
-	 */
-	private String urlEncodeForSpaces(char[] input) {
-		StringBuffer retu = new StringBuffer(input.length);
-		for (int i = 0; i < input.length; i++) {
-			if (input[i] == ' ') {
-				retu.append("%20"); //$NON-NLS-1$
-			} else {
-				retu.append(input[i]);
-			}
-		}
-		return retu.toString();
-	}
-
-	// TODO: Move browser support from Help system, remove this method
-	private Process openWebBrowser(String href) throws IOException {
-		Process p = null;
-		if (webBrowser == null) {
-			try {
-				webBrowser = "firefox"; //$NON-NLS-1$
-				p = Runtime.getRuntime().exec(webBrowser + "  " + href); //$NON-NLS-1$;
-			} catch (IOException e) {
-				p = null;
-				webBrowser = "mozilla"; //$NON-NLS-1$
-			}
-		}
-
-		if (p == null) {
-			try {
-				p = Runtime.getRuntime().exec(webBrowser + " " + href); //$NON-NLS-1$;
-			} catch (IOException e) {
-				p = null;
-				webBrowser = "netscape"; //$NON-NLS-1$
-			}
-		}
-		
-		if (p == null) {
-			try {
-				p = Runtime.getRuntime().exec(webBrowser + " " + href); //$NON-NLS-1$;
-			} catch (IOException e) {
-				p = null;
-				throw e;
-			}
-		}
-		
-		return p;
-	}
-
-	/**
-	 * display an error message
-	 */
-	private void openWebBrowserError(Display display) {
-		display.asyncExec(new Runnable() {
-			public void run() {
-				MessageDialog
-						.openError(
-								null,
-								WorkbenchMessages.ProductInfoDialog_errorTitle,
-								WorkbenchMessages.ProductInfoDialog_unableToOpenWebBrowser);
-			}
-		});
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
deleted file mode 100644
index 79f812d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/DefaultWorkbenchBrowserSupport.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.browser;
-
-import java.util.Hashtable;
-
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.browser.AbstractWorkbenchBrowserSupport;
-import org.eclipse.ui.browser.IWebBrowser;
-
-/**
- * Extends the abstract browser support class by providing minimal support for
- * external browsers. This class is used when no alternative implementation is
- * plugged in via the 'org.eclipse.ui.browserSupport' extension point.
- * 
- * @since 3.1
- */
-public class DefaultWorkbenchBrowserSupport extends
-		AbstractWorkbenchBrowserSupport {
-	private Hashtable browsers;
-	private static final String DEFAULT_BROWSER_ID_BASE = "org.eclipse.ui.defaultBrowser"; //$NON-NLS-1$
-
-	/**
-	 * The default constructor.
-	 */
-	public DefaultWorkbenchBrowserSupport() {
-		browsers = new Hashtable();
-	}
-
-	void registerBrowser(IWebBrowser browser) {
-		browsers.put(browser.getId(), browser);
-	}
-
-	void unregisterBrowser(IWebBrowser browser) {
-		browsers.remove(browser.getId());
-	}
-
-	IWebBrowser findBrowser(String id) {
-		return (IWebBrowser) browsers.get(id);
-	}
-
-	protected IWebBrowser doCreateBrowser(int style, String browserId,
-			String name, String tooltip) throws PartInitException {
-		return new DefaultWebBrowser(this, browserId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#createBrowser(int,
-	 *      java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public IWebBrowser createBrowser(int style, String browserId, String name,
-			String tooltip) throws PartInitException {
-		IWebBrowser browser = findBrowser(browserId == null? getDefaultId():browserId);
-		if (browser != null) {
-			return browser;
-		}
-		browser = doCreateBrowser(style, browserId, name, tooltip);
-		registerBrowser(browser);
-		return browser;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#createBrowser(java.lang.String)
-	 */
-	public IWebBrowser createBrowser(String browserId) throws PartInitException {
-		return createBrowser(AS_EXTERNAL, browserId, null, null);
-	}
-	
-	private String getDefaultId() {
-		String id = null;
-		for (int i = 0; i < Integer.MAX_VALUE; i++) {
-			id = DEFAULT_BROWSER_ID_BASE + i;
-			if (browsers.get(id) == null)
-				break;
-		}
-		return id;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java
deleted file mode 100644
index 6bf6bdb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/browser/WorkbenchBrowserSupport.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.browser;
-
-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.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.browser.AbstractWorkbenchBrowserSupport;
-import org.eclipse.ui.browser.IWebBrowser;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Implements the support interface and delegates the calls to the active
- * support if contributed via the extension point, or the default support
- * otherwise.
- * 
- * @since 3.1
- */
-public class WorkbenchBrowserSupport extends AbstractWorkbenchBrowserSupport {
-
-	private static WorkbenchBrowserSupport instance;
-
-	private IWorkbenchBrowserSupport activeSupport;
-
-	private boolean initialized;
-    
-    private String desiredBrowserSupportId;
-
-	private IExtensionChangeHandler handler = new IExtensionChangeHandler() {
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-         */
-        public void addExtension(IExtensionTracker tracker,IExtension extension) {
-            //Do nothing
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-         */
-        public void removeExtension(IExtension source, Object[] objects) {
-			for (int i = 0; i < objects.length; i++) {
-				if (objects[i] == activeSupport) {
-					dispose();
-					// remove ourselves - we'll be added again in initalize if
-					// needed
-					PlatformUI.getWorkbench().getExtensionTracker()
-							.unregisterHandler(handler);
-				}
-			}
-		}
-	};
-
-	/**
-	 * Cannot be instantiated from outside.
-	 */
-	private WorkbenchBrowserSupport() {
-	}
-
-	/**
-	 * Returns the shared instance.
-	 * 
-	 * @return shared instance
-	 */
-	public static IWorkbenchBrowserSupport getInstance() {
-		if (instance == null) {
-			instance = new WorkbenchBrowserSupport();
-		}
-		return instance;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#createBrowser(int, java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public IWebBrowser createBrowser(int style, String browserId, String name,
-			String tooltip) throws PartInitException {
-		return getActiveSupport()
-				.createBrowser(style, browserId, name, tooltip);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#createBrowser(java.lang.String)
-	 */
-	public IWebBrowser createBrowser(String browserId) throws PartInitException {
-		return getActiveSupport().createBrowser(browserId);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#isInternalWebBrowserAvailable()
-	 */
-	public boolean isInternalWebBrowserAvailable() {
-		return getActiveSupport().isInternalWebBrowserAvailable();
-	}
-
-	private IWorkbenchBrowserSupport getActiveSupport() {
-		if (initialized == false) {
-			loadActiveSupport();
-		}
-		// ensure we always have an active instance
-		if (activeSupport == null) {
-			activeSupport = new DefaultWorkbenchBrowserSupport();
-		}
-		return activeSupport;
-	}
-    
-    /**
-     * Answers whether the system has a non-default browser installed.
-     * 
-     * @return whether the system has a non-default browser installed
-     */
-    public boolean hasNonDefaultBrowser() {
-        return !(getActiveSupport() instanceof DefaultWorkbenchBrowserSupport);
-    }
-
-	private void loadActiveSupport() {
-		BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see java.lang.Runnable#run()
-			 */
-			public void run() {
-                IConfigurationElement[] elements = Platform
-                        .getExtensionRegistry().getConfigurationElementsFor(
-                                PlatformUI.PLUGIN_ID,
-                                IWorkbenchRegistryConstants.PL_BROWSER_SUPPORT);
-				IConfigurationElement elementToUse = null;
-                
-                if (desiredBrowserSupportId != null) {
-					elementToUse = findDesiredElement(elements);
-				} else {
-					elementToUse = getElementToUse(elements);
-				}
-				if (elementToUse != null) {
-					initialized = initializePluggableBrowserSupport(elementToUse);
-				}
-			}
-
-            /**
-             * Search for the element whose extension has ID equal to that of
-             * the field desiredBrowserSupport.
-             * 
-             * @param elements
-             *            the elements to search
-             * @return the element or <code>null</code>
-             */
-            private IConfigurationElement findDesiredElement(IConfigurationElement [] elements) {
-                for (int i = 0; i < elements.length; i++) {
-                    if (desiredBrowserSupportId.equals(elements[i].getDeclaringExtension().getUniqueIdentifier())) {
-						return elements[i];
-					}
-                }
-                return null;
-            }
-
-            private IExtensionPoint getExtensionPoint() {
-                return Platform.getExtensionRegistry()
-						.getExtensionPoint(PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_BROWSER_SUPPORT);
-            }
-
-			private IConfigurationElement getElementToUse(
-					IConfigurationElement[] elements) {
-				if (elements.length == 0) {
-					return null;
-				}
-				IConfigurationElement defaultElement = null;
-				IConfigurationElement choice = null;
-				// find the first default element and
-				// the first non-default element. If non-default
-				// is found, pick it. Otherwise, use default.
-				for (int i = 0; i < elements.length; i++) {
-					IConfigurationElement element = elements[i];
-					if (element.getName().equals(IWorkbenchRegistryConstants.TAG_SUPPORT)) {
-						String def = element.getAttribute(IWorkbenchRegistryConstants.ATT_DEFAULT);
-						if (def != null && Boolean.valueOf(def).booleanValue()) { 
-							if (defaultElement == null) {
-								defaultElement = element;
-							}
-						} else {
-							// non-default
-							if (choice == null) {
-								choice = element;
-							}
-						}
-					}
-				}
-				if (choice == null) {
-					choice = defaultElement;
-				}
-				return choice;
-			}
-
-			private boolean initializePluggableBrowserSupport(
-					IConfigurationElement element) {
-				// Instantiate the browser support
-				try {
-					activeSupport = (AbstractWorkbenchBrowserSupport) WorkbenchPlugin
-							.createExtension(element, IWorkbenchRegistryConstants.ATT_CLASS);
-					// start listening for removals
-					IExtensionTracker extensionTracker = PlatformUI.getWorkbench().getExtensionTracker();
-                    extensionTracker.registerHandler(handler, ExtensionTracker
-                            .createExtensionPointFilter(getExtensionPoint()));
-					// register the new browser support for removal
-					// notification
-					extensionTracker
-							.registerObject(element.getDeclaringExtension(),
-									activeSupport, IExtensionTracker.REF_WEAK);
-					return true;
-				} catch (CoreException e) {
-					WorkbenchPlugin
-							.log("Unable to instantiate browser support" + e.getStatus(), e);//$NON-NLS-1$
-				}
-				return false;
-			}
-
-		});
-	}
-    
-    /**
-     * For debug purposes only.
-     * 
-     * @param desiredBrowserSupportId the desired browser system id
-     */
-    public void setDesiredBrowserSupportId(String desiredBrowserSupportId) {
-        dispose(); // prep for a new help system
-        this.desiredBrowserSupportId = desiredBrowserSupportId;
-    }
-
-    /**
-     * Dispose of the active support.
-     */
-    protected void dispose() {
-        activeSupport = null;
-        initialized = false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManager.java
deleted file mode 100644
index 26ad716..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManager.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * <p>
- * A central lookup facility for images for commands. Images can be associated
- * with commands using this manager.
- * </p>
- * <p>
- * Clients may instantiate, but must not extend.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * <p>
- * This class is eventually intended to exist in
- * <code>org.eclipse.jface.commands</code>.
- * </p>
- * 
- * @since 3.2
- */
-public final class CommandImageManager extends EventManager {
-
-	/**
-	 * The type of image to display in the default case.
-	 */
-	public static final int TYPE_DEFAULT = 0;
-
-	/**
-	 * The type of image to display if the corresponding command is disabled.
-	 */
-	public static final int TYPE_DISABLED = 1;
-
-	/**
-	 * The type of image to display if the mouse is hovering over the command
-	 * and the command is enabled.
-	 */
-	public static final int TYPE_HOVER = 2;
-
-	/**
-	 * The map of command identifiers (<code>String</code>) to images. The
-	 * images are an array indexed by type. The values in the array are either
-	 * an <code>ImageDescriptor</code> or a <code>Map</code> of style (<code>String</code>)
-	 * to <code>ImageDescriptor</code>.
-	 */
-	private final Map imagesById = new HashMap();
-
-	/**
-	 * Adds a listener to this command image manager. The listener will be
-	 * notified when the set of image bindings changes. This can be used to
-	 * track the global appearance and disappearance of image bindings.
-	 * 
-	 * @param listener
-	 *            The listener to attach; must not be <code>null</code>.
-	 */
-	public final void addCommandImageManagerListener(
-			final ICommandImageManagerListener listener) {
-		addListenerObject(listener);
-	}
-
-	/**
-	 * Binds a particular image path to a command id, type and style triple
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to which the image should be
-	 *            bound; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this class.
-	 * @param style
-	 *            The style of the image; may be <code>null</code>.
-	 * @param url
-	 *            The URL to the image. Should not be <code>null</code>.
-	 */
-	public final void bind(final String commandId, final int type,
-			final String style, final URL url) {
-		final ImageDescriptor descriptor = ImageDescriptor.createFromURL(url);
-		bind(commandId, type, style, descriptor);
-	}
-
-	/**
-	 * Binds a particular image path to a command id, type and style triple
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to which the image should be
-	 *            bound; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this class.
-	 * @param style
-	 *            The style of the image; may be <code>null</code>.
-	 * @param descriptor
-	 *            The image descriptor. Should not be <code>null</code>.
-	 */
-	public final void bind(final String commandId, final int type,
-			final String style, final ImageDescriptor descriptor) {
-		Object[] images = (Object[]) imagesById.get(commandId);
-		if (images == null) {
-			images = new Object[3];
-			imagesById.put(commandId, images);
-		}
-
-		if ((type < 0) || (type >= images.length)) {
-			throw new IllegalArgumentException(
-					"The type must be one of TYPE_DEFAULT, TYPE_DISABLED and TYPE_HOVER."); //$NON-NLS-1$
-		}
-
-		final Object typedImage = images[type];
-		if (style == null) {
-			if ((typedImage == null) || (typedImage instanceof ImageDescriptor)) {
-				images[type] = descriptor;
-			} else if (typedImage instanceof Map) {
-				final Map styleMap = (Map) typedImage;
-				styleMap.put(style, descriptor);
-			}
-		} else {
-			if (typedImage instanceof Map) {
-				final Map styleMap = (Map) typedImage;
-				styleMap.put(style, descriptor);
-			} else if (typedImage instanceof ImageDescriptor
-					|| typedImage == null) {
-				final Map styleMap = new HashMap();
-				styleMap.put(null, typedImage);
-				styleMap.put(style, descriptor);
-				images[type] = styleMap;
-			}
-		}
-
-		fireManagerChanged(new CommandImageManagerEvent(this,
-				new String[] { commandId }, type, style));
-	}
-
-	/**
-	 * Removes all of the images from this manager.
-	 */
-	public final void clear() {
-		imagesById.clear();
-		if (isListenerAttached()) {
-			final String[] commandIds = (String[]) imagesById.keySet().toArray(
-					new String[imagesById.size()]);
-			fireManagerChanged(new CommandImageManagerEvent(this, commandIds,
-					TYPE_DEFAULT, null));
-		}
-	}
-
-	/**
-	 * Notifies all of the listeners to this manager that the image bindings
-	 * have changed.
-	 * 
-	 * @param event
-	 *            The event to send to all of the listeners; must not be
-	 *            <code>null</code>.
-	 */
-	private final void fireManagerChanged(final CommandImageManagerEvent event) {
-		if (event == null) {
-			throw new NullPointerException();
-		}
-
-		final Object[] listeners = getListeners();
-		for (int i = 0; i < listeners.length; i++) {
-			final ICommandImageManagerListener listener = (ICommandImageManagerListener) listeners[i];
-			listener.commandImageManagerChanged(event);
-		}
-	}
-
-	/**
-	 * Generates a style tag that is not currently used for the given command.
-	 * This can be used by applications trying to create a unique style for a
-	 * new set of images.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which a unique style is
-	 *            required; must not be <code>null</code>.
-	 * @return A style tag that is not currently used; may be <code>null</code>.
-	 */
-	public final String generateUnusedStyle(final String commandId) {
-		final Object[] existingImages = (Object[]) imagesById.get(commandId);
-		if (existingImages == null) {
-			return null;
-		}
-
-		final Set existingStyles = new HashSet(3);
-		for (int type = 0; type < existingImages.length; type++) {
-			final Object styledImages = existingImages[type];
-			if (styledImages instanceof ImageDescriptor) {
-				existingStyles.add(null);
-			} else if (styledImages instanceof Map) {
-				final Map styleMap = (Map) styledImages;
-				existingStyles.addAll(styleMap.keySet());
-			}
-		}
-
-		if (!existingStyles.contains(null)) {
-			return null;
-		}
-
-		String generatedStyle = "AUTOGEN:::"; //$NON-NLS-1$
-		int index = 0;
-		while (existingStyles.contains(generatedStyle)) {
-			generatedStyle += (index++ % 10);
-		}
-
-		return generatedStyle;
-	}
-
-	/**
-	 * Retrieves the default image associated with the given command in the
-	 * default style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @return An image appropriate for the given command; never
-	 *         <code>null</code>.
-	 */
-	public final ImageDescriptor getImageDescriptor(final String commandId) {
-		return getImageDescriptor(commandId, TYPE_DEFAULT, null);
-	}
-
-	/**
-	 * Retrieves the image of the given type associated with the given command
-	 * in the default style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this class.
-	 * @return An image appropriate for the given command; <code>null</code>
-	 *         if the given image type cannot be found.
-	 */
-	public final ImageDescriptor getImageDescriptor(final String commandId,
-			final int type) {
-		return getImageDescriptor(commandId, type, null);
-	}
-
-	/**
-	 * Retrieves the image of the given type associated with the given command
-	 * in the given style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this class.
-	 * @param style
-	 *            The style of the image to retrieve; may be <code>null</code>.
-	 * @return An image appropriate for the given command; <code>null</code>
-	 *         if the given image style and type cannot be found.
-	 */
-	public final ImageDescriptor getImageDescriptor(final String commandId,
-			final int type, final String style) {
-		if (commandId == null) {
-			throw new NullPointerException();
-		}
-
-		final Object[] images = (Object[]) imagesById.get(commandId);
-		if (images == null) {
-			return null;
-		}
-
-		if ((type < 0) || (type >= images.length)) {
-			throw new IllegalArgumentException(
-					"The type must be one of TYPE_DEFAULT, TYPE_DISABLED and TYPE_HOVER."); //$NON-NLS-1$
-		}
-
-		Object typedImage = images[type];
-
-		if (typedImage == null) {
-			return null;
-		}
-
-		if (typedImage instanceof ImageDescriptor) {
-			return (ImageDescriptor) typedImage;
-		}
-
-		if (typedImage instanceof Map) {
-			final Map styleMap = (Map) typedImage;
-			Object styledImage = styleMap.get(style);
-			if (styledImage instanceof ImageDescriptor) {
-				return (ImageDescriptor) styledImage;
-			}
-
-			if (style != null) {
-				styledImage = styleMap.get(null);
-				if (styledImage instanceof ImageDescriptor) {
-					return (ImageDescriptor) styledImage;
-				}
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Retrieves the default image associated with the given command in the
-	 * given style.
-	 * 
-	 * @param commandId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @param style
-	 *            The style of the image to retrieve; may be <code>null</code>.
-	 * @return An image appropriate for the given command; <code>null</code>
-	 *         if the given image style cannot be found.
-	 */
-	public final ImageDescriptor getImageDescriptor(final String commandId,
-			final String style) {
-		return getImageDescriptor(commandId, TYPE_DEFAULT, style);
-	}
-
-	/**
-	 * Removes a listener from this command image manager.
-	 * 
-	 * @param listener
-	 *            The listener to be removed; must not be <code>null</code>.
-	 */
-	public final void removeCommandImageManagerListener(
-			final ICommandImageManagerListener listener) {
-		removeListenerObject(listener);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java
deleted file mode 100644
index 40a5bf0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageManagerEvent.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-/**
- * <p>
- * An event indicating that the image bindings have changed.
- * </p>
- * <p>
- * Clients must neither instantiate nor extend.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * <p>
- * This class is eventually intended to exist in
- * <code>org.eclipse.jface.commands</code>.
- * </p>
- * 
- * @since 3.2
- * @see ICommandImageManagerListener#commandImageManagerChanged(CommandImageManagerEvent)
- */
-public final class CommandImageManagerEvent {
-
-	/**
-	 * The identifiers of the commands whose image bindings have changed. This
-	 * value is never <code>null</code> and never empty.
-	 */
-	private final String[] changedCommandIds;
-
-	/**
-	 * The command image manager that has changed. This value is never
-	 * <code>null</code>.
-	 */
-	private final CommandImageManager commandImageManager;
-
-	/**
-	 * The style of image that changed.
-	 */
-	private final String style;
-
-	/**
-	 * The type of image that changed.
-	 */
-	private final int type;
-
-	/**
-	 * Creates a new instance of this class.
-	 * 
-	 * @param commandImageManager
-	 *            the instance of the manager that changed; must not be
-	 *            <code>null</code>.
-	 * @param changedCommandIds
-	 *            The identifiers of the commands whose image bindings have
-	 *            changed; this value must not be <code>null</code> and must
-	 *            not be empty. This value is not copied.
-	 */
-	CommandImageManagerEvent(final CommandImageManager commandImageManager,
-			final String[] changedCommandIds, final int type, final String style) {
-		if (commandImageManager == null) {
-			throw new NullPointerException("An event must refer to its manager"); //$NON-NLS-1$
-		}
-
-		if ((changedCommandIds == null) || (changedCommandIds.length < 1)) {
-			throw new IllegalArgumentException(
-					"There must be at least one change command identifier"); //$NON-NLS-1$
-		}
-
-		this.commandImageManager = commandImageManager;
-		this.changedCommandIds = changedCommandIds;
-		this.type = type;
-		this.style = style;
-	}
-
-	/**
-	 * Returns the identifiers of the commands whose bindings have changed.
-	 * 
-	 * @return The identifiers of the commands whose bindings have changed;
-	 *         neither <code>null</code> nor empty.
-	 */
-	public final String[] getChangedCommandIds() {
-		final String[] copy = new String[changedCommandIds.length];
-		System.arraycopy(changedCommandIds, 0, copy, 0,
-				changedCommandIds.length);
-		return copy;
-	}
-
-	/**
-	 * Returns the instance of the interface that changed.
-	 * 
-	 * @return the instance of the interface that changed. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	public final CommandImageManager getCommandImageManager() {
-		return commandImageManager;
-	}
-
-	/**
-	 * Returns whether one of the images of the given command has changed.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to check; must not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if one of the command's images has changed;
-	 *         <code>false</code> otherwise.
-	 */
-	public final boolean isCommandIdChanged(final String commandId) {
-		// PERFORMANCE
-		for (int i = 0; i < changedCommandIds.length; i++) {
-			if (commandId.equals(changedCommandIds[i])) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Returns whether the image for the command has changed.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to check; must not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if the command's image has changed
-	 * @see CommandImageManager#getImageDescriptor(String)
-	 */
-	public final boolean isCommandImageChanged(final String commandId) {
-		return isCommandIdChanged(commandId)
-				&& (type == CommandImageManager.TYPE_DEFAULT)
-				&& (style == null);
-	}
-
-	/**
-	 * Returns whether the image of the given type for the command has changed.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to check; must not be
-	 *            <code>null</code>.
-	 * @param type
-	 *            The type of image, one of
-	 *            {@link CommandImageManager#TYPE_DEFAULT},
-	 *            {@link CommandImageManager#TYPE_DISABLED} or
-	 *            {@link CommandImageManager#TYPE_HOVER}.
-	 * @return <code>true</code> if the command's image of the given type has
-	 *         changed.
-	 * @see CommandImageManager#getImageDescriptor(String, int)
-	 */
-	public final boolean isCommandImageChanged(final String commandId,
-			final int type) {
-		return isCommandIdChanged(commandId)
-				&& ((type == CommandImageManager.TYPE_DEFAULT) || (type == this.type))
-				&& (style == null);
-	}
-
-	/**
-	 * Returns whether the image of the given type and style for the command has
-	 * changed.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to check; must not be
-	 *            <code>null</code>.
-	 * @param type
-	 *            The type of image, one of
-	 *            {@link CommandImageManager#TYPE_DEFAULT},
-	 *            {@link CommandImageManager#TYPE_DISABLED} or
-	 *            {@link CommandImageManager#TYPE_HOVER}.
-	 * @param style
-	 *            The style of the image; may be anything.
-	 * @return <code>true</code> if the command's image of the given type and
-	 *         style has changed.
-	 * @see CommandImageManager#getImageDescriptor(String, int, String)
-	 */
-	public final boolean isCommandImageChanged(final String commandId,
-			final int type, final String style) {
-		return isCommandIdChanged(commandId)
-				&& ((type == CommandImageManager.TYPE_DEFAULT) || (type == this.type))
-				&& ((style == null) || (style.equals(this.style)));
-	}
-
-	/**
-	 * Returns whether the image of the given style for the command has changed.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to check; must not be
-	 *            <code>null</code>.
-	 * @param style
-	 *            The style of the image; may be anything.
-	 * @return <code>true</code> if the command's image of the given style has
-	 *         changed.
-	 * @see CommandImageManager#getImageDescriptor(String, String)
-	 */
-	public final boolean isCommandImageChanged(final String commandId,
-			final String style) {
-		return isCommandIdChanged(commandId)
-				&& (type == CommandImageManager.TYPE_DEFAULT)
-				&& ((style == null) || (style.equals(this.style)));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImagePersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImagePersistence.java
deleted file mode 100644
index 4d4091f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImagePersistence.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.RegistryPersistence;
-import org.eclipse.ui.internal.util.BundleUtility;
-
-/**
- * <p>
- * Handles persistence for the command images.
- * </p>
- * <p>
- * This class is only intended for internal use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-final class CommandImagePersistence extends RegistryPersistence {
-
-	/**
-	 * The index of the image elements in the indexed array.
-	 * 
-	 * @see CommandImagePersistence#read()
-	 */
-	private static final int INDEX_IMAGES = 0;
-
-	/**
-	 * Reads all of the images from the command images extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the command images extension
-	 *            point; must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param commandImageManager
-	 *            The command image manager to which the images should be added;
-	 *            must not be <code>null</code>.
-	 * @param commandService
-	 *            The command service for the workbench; must not be
-	 *            <code>null</code>.
-	 */
-	private static final void readImagesFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final CommandImageManager commandImageManager,
-			final ICommandService commandService) {
-		// Undefine all the previous images.
-		commandImageManager.clear();
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the command identifier.
-			final String commandId = readRequired(configurationElement,
-					ATT_COMMAND_ID, warningsToLog, "Image needs an id"); //$NON-NLS-1$
-			if (commandId == null) {
-				continue;
-			}
-
-			if (!commandService.getCommand(commandId).isDefined()) {
-				// Reference to an undefined command. This is invalid.
-				addWarning(warningsToLog,
-						"Cannot bind to an undefined command", //$NON-NLS-1$
-						configurationElement, commandId);
-				continue;
-			}
-
-			// Read out the style.
-			final String style = readOptional(configurationElement, ATT_STYLE);
-
-			// Read out the default icon.
-			final String icon = readRequired(configurationElement, ATT_ICON,
-					warningsToLog, commandId);
-			if (icon == null) {
-				continue;
-			}
-
-			final String disabledIcon = readOptional(configurationElement,
-					ATT_DISABLEDICON);
-			final String hoverIcon = readOptional(configurationElement,
-					ATT_HOVERICON);
-
-			final URL iconURL = BundleUtility.find(configurationElement
-					.getNamespace(), icon);
-			commandImageManager.bind(commandId,
-					CommandImageManager.TYPE_DEFAULT, style, iconURL);
-			if (disabledIcon != null) {
-				final URL disabledIconURL = BundleUtility.find(
-						configurationElement.getNamespace(), disabledIcon);
-				commandImageManager.bind(commandId,
-						CommandImageManager.TYPE_DISABLED, style,
-						disabledIconURL);
-			}
-			if (hoverIcon != null) {
-				final URL hoverIconURL = BundleUtility.find(
-						configurationElement.getNamespace(), hoverIcon);
-				commandImageManager.bind(commandId,
-						CommandImageManager.TYPE_HOVER, style, hoverIconURL);
-			}
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the images from the 'org.eclipse.ui.commandImages' extension point."); //$NON-NLS-1$
-	}
-
-	/**
-	 * The command image manager which should be populated with the values from
-	 * the registry; must not be <code>null</code>.
-	 */
-	private final CommandImageManager commandImageManager;
-
-	/**
-	 * The command service for the workbench; must not be <code>null</code>.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * Constructs a new instance of <code>CommandImagePersistence</code>.
-	 * 
-	 * @param commandImageManager
-	 *            The command image manager which should be populated with the
-	 *            values from the registry; must not be <code>null</code>.
-	 * @param commandService
-	 *            The command service for the workbench; must not be
-	 *            <code>null</code>.
-	 */
-	CommandImagePersistence(final CommandImageManager commandImageManager,
-			final ICommandService commandService) {
-		this.commandImageManager = commandImageManager;
-		this.commandService = commandService;
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		final IExtensionDelta[] imageDeltas = event.getExtensionDeltas(
-				PlatformUI.PLUGIN_ID,
-				IWorkbenchRegistryConstants.PL_COMMAND_IMAGES);
-		return (imageDeltas.length != 0);
-	}
-
-	/**
-	 * Reads all of the command images from the registry.
-	 */
-	protected final void read() {
-		super.read();
-
-		// Create the extension registry mementos.
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		int imageCount = 0;
-		final IConfigurationElement[][] indexedConfigurationElements = new IConfigurationElement[1][];
-
-		// Sort the commands extension point based on element name.
-		final IConfigurationElement[] commandImagesExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_COMMAND_IMAGES);
-		for (int i = 0; i < commandImagesExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = commandImagesExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_IMAGE.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements, INDEX_IMAGES,
-						imageCount++);
-			}
-		}
-
-		readImagesFromRegistry(indexedConfigurationElements[INDEX_IMAGES],
-				imageCount, commandImageManager, commandService);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageService.java
deleted file mode 100644
index 32321c5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandImageService.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import java.net.URL;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.commands.ICommandService;
-
-/**
- * <p>
- * Provides services related to the command architecture within the workbench.
- * This service can be used to access the set of commands and handlers.
- * </p>
- * 
- * @since 3.2
- */
-public final class CommandImageService implements ICommandImageService {
-
-	/**
-	 * The command image manager that supports this service. This value is never
-	 * <code>null</code>.
-	 */
-	private final CommandImageManager commandImageManager;
-
-	/**
-	 * The class providing persistence for this service.
-	 */
-	private final CommandImagePersistence commandImagePersistence;
-
-	/**
-	 * Constructs a new instance of <code>CommandService</code> using a
-	 * command image manager.
-	 * 
-	 * @param commandImageManager
-	 *            The command image manager to use; must not be
-	 *            <code>null</code>.
-	 * @param commandService
-	 *            The workbench command service; must not be <code>null</code>.
-	 *            This is used for checking whether a command is defined when
-	 *            reading the registry.
-	 */
-	public CommandImageService(final CommandImageManager commandImageManager,
-			final ICommandService commandService) {
-		if (commandImageManager == null) {
-			throw new NullPointerException(
-					"Cannot create a command image service with a null manager"); //$NON-NLS-1$
-		}
-		if (commandService == null) {
-			throw new NullPointerException(
-					"Cannot create a command image service with a null command service"); //$NON-NLS-1$
-		}
-		this.commandImageManager = commandImageManager;
-		this.commandImagePersistence = new CommandImagePersistence(
-				commandImageManager, commandService);
-	}
-
-	/**
-	 * Binds a particular image descriptor to a command id, type and style
-	 * triple
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to which the image should be
-	 *            bound; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this class.
-	 * @param style
-	 *            The style of the image; may be <code>null</code>.
-	 * @param descriptor
-	 *            The image descriptor. Should not be <code>null</code>.
-	 */
-	public final void bind(final String commandId, final int type,
-			final String style, final ImageDescriptor descriptor) {
-		commandImageManager.bind(commandId, type, style, descriptor);
-	}
-
-	/**
-	 * Binds a particular image path to a command id, type and style triple
-	 * 
-	 * @param commandId
-	 *            The identifier of the command to which the image should be
-	 *            bound; must not be <code>null</code>.
-	 * @param type
-	 *            The type of image to retrieve. This value must be one of the
-	 *            <code>TYPE</code> constants defined in this class.
-	 * @param style
-	 *            The style of the image; may be <code>null</code>.
-	 * @param url
-	 *            The URL to the image. Should not be <code>null</code>.
-	 */
-	public final void bind(final String commandId, final int type,
-			final String style, final URL url) {
-		commandImageManager.bind(commandId, type, style, url);
-	}
-
-	public final void dispose() {
-		commandImagePersistence.dispose();
-	}
-
-	/**
-	 * Generates a style tag that is not currently used for the given command.
-	 * This can be used by applications trying to create a unique style for a
-	 * new set of images.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which a unique style is
-	 *            required; must not be <code>null</code>.
-	 * @return A style tag that is not currently used; may be <code>null</code>.
-	 */
-	public final String generateUnusedStyle(final String commandId) {
-		return commandImageManager.generateUnusedStyle(commandId);
-	}
-
-	public final ImageDescriptor getImageDescriptor(final String commandId) {
-		return commandImageManager.getImageDescriptor(commandId);
-	}
-
-	public final ImageDescriptor getImageDescriptor(final String commandId,
-			final int type) {
-		return commandImageManager.getImageDescriptor(commandId, type);
-	}
-
-	public final ImageDescriptor getImageDescriptor(final String commandId,
-			final int type, final String style) {
-		return commandImageManager.getImageDescriptor(commandId, type, style);
-	}
-
-	public final ImageDescriptor getImageDescriptor(final String commandId,
-			final String style) {
-		return commandImageManager.getImageDescriptor(commandId, style);
-	}
-
-	public final void readRegistry() {
-		commandImagePersistence.read();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandLegacyWrapper.java
deleted file mode 100644
index 64a9d9f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandLegacyWrapper.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.ui.commands.ExecutionException;
-import org.eclipse.ui.commands.ICommand;
-import org.eclipse.ui.commands.ICommandListener;
-import org.eclipse.ui.commands.NotDefinedException;
-import org.eclipse.ui.commands.NotHandledException;
-import org.eclipse.ui.internal.keys.KeySequenceBinding;
-import org.eclipse.ui.keys.KeySequence;
-
-/**
- * A wrapper around a core command so that it satisfies the deprecated
- * <code>ICommand</code> interface.
- * 
- * @since 3.1
- */
-final class CommandLegacyWrapper implements ICommand {
-
-	/**
-	 * The supporting binding manager; never <code>null</code>.
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The wrapped command; never <code>null</code>.
-	 */
-	private final Command command;
-
-	/**
-	 * A parameterized representation of the command. This is created lazily. If
-	 * it has not yet been created, it is <code>null</code>.
-	 */
-	private ParameterizedCommand parameterizedCommand;
-
-	/**
-	 * Constructs a new <code>CommandWrapper</code>
-	 * 
-	 * @param command
-	 *            The command to be wrapped; must not be <code>null</code>.
-	 * @param bindingManager
-	 *            The binding manager to support this wrapper; must not be
-	 *            <code>null</code>.
-	 */
-	CommandLegacyWrapper(final Command command,
-			final BindingManager bindingManager) {
-		if (command == null) {
-			throw new NullPointerException(
-					"The wrapped command cannot be <code>null</code>."); //$NON-NLS-1$
-		}
-
-		if (bindingManager == null) {
-			throw new NullPointerException(
-					"A binding manager is required to wrap a command"); //$NON-NLS-1$
-		}
-
-		this.command = command;
-		this.bindingManager = bindingManager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#addCommandListener(org.eclipse.ui.commands.ICommandListener)
-	 */
-
-	public final void addCommandListener(final ICommandListener commandListener) {
-		command.addCommandListener(new LegacyCommandListenerWrapper(
-				commandListener, bindingManager));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#execute(java.util.Map)
-	 */
-	public final Object execute(Map parameterValuesByName)
-			throws ExecutionException, NotHandledException {
-		try {
-			return command.execute(new ExecutionEvent(command,
-					(parameterValuesByName == null) ? Collections.EMPTY_MAP
-							: parameterValuesByName, null, null));
-		} catch (final org.eclipse.core.commands.ExecutionException e) {
-			throw new ExecutionException(e);
-		} catch (final org.eclipse.core.commands.NotHandledException e) {
-			throw new NotHandledException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#getAttributeValuesByName()
-	 */
-	public final Map getAttributeValuesByName() {
-		final Map attributeValues = new HashMap();
-		// avoid using Boolean.valueOf to allow compilation against JCL
-		// Foundation (bug 80053)
-		attributeValues.put(ILegacyAttributeNames.ENABLED,
-				command.isEnabled() ? Boolean.TRUE : Boolean.FALSE);
-		attributeValues.put(ILegacyAttributeNames.HANDLED,
-				command.isHandled() ? Boolean.TRUE : Boolean.FALSE);
-		return attributeValues;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#getCategoryId()
-	 */
-	public final String getCategoryId() throws NotDefinedException {
-		try {
-			return command.getCategory().getId();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#getDescription()
-	 */
-	public final String getDescription() throws NotDefinedException {
-		try {
-			return command.getDescription();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#getId()
-	 */
-	public final String getId() {
-		return command.getId();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#getKeySequenceBindings()
-	 */
-	public final List getKeySequenceBindings() {
-		final List legacyBindings = new ArrayList();
-		if (parameterizedCommand == null) {
-			parameterizedCommand = new ParameterizedCommand(command, null);
-		}
-		final TriggerSequence[] activeBindings = bindingManager
-				.getActiveBindingsFor(parameterizedCommand);
-		final int activeBindingsCount = activeBindings.length;
-		for (int i = 0; i < activeBindingsCount; i++) {
-			final TriggerSequence triggerSequence = activeBindings[i];
-			if (triggerSequence instanceof org.eclipse.jface.bindings.keys.KeySequence) {
-				legacyBindings
-						.add(new KeySequenceBinding(
-								KeySequence
-										.getInstance((org.eclipse.jface.bindings.keys.KeySequence) triggerSequence),
-								0));
-			}
-		}
-
-		return legacyBindings;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#getName()
-	 */
-	public final String getName() throws NotDefinedException {
-		try {
-			return command.getName();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#isDefined()
-	 */
-	public final boolean isDefined() {
-		return command.isDefined();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#isHandled()
-	 */
-	public final boolean isHandled() {
-		return command.isHandled();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommand#removeCommandListener(org.eclipse.ui.commands.ICommandListener)
-	 */
-	public final void removeCommandListener(
-			final ICommandListener commandListener) {
-		command.removeCommandListener(new LegacyCommandListenerWrapper(
-				commandListener, bindingManager));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public final int compareTo(final Object o) {
-		return command.compareTo(o);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerFactory.java
deleted file mode 100644
index b6e5325..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.jface.bindings.BindingManager;
-
-/**
- * This class allows clients to broker instances of <code>ICommandManager</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- */
-public final class CommandManagerFactory {
-
-	/**
-	 * Creates a new instance of <code>IMutableCommandManager</code>.
-	 * 
-	 * @param bindingManager
-	 *            The binding manager providing support for the command manager;
-	 *            must not be <code>null</code>.
-	 * @param commandManager
-	 *            The command manager providing support for this command
-	 *            manager; must not be <code>null</code>.
-	 * @param contextManager
-	 *            The context manager for this command manager; must not be
-	 *            <code>null</code>.
-	 * @return a new instance of <code>IMutableCommandManager</code>. Clients
-	 *         should not make assumptions about the concrete implementation
-	 *         outside the contract of the interface. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	public static CommandManagerLegacyWrapper getCommandManagerWrapper(
-			final BindingManager bindingManager,
-			final CommandManager commandManager,
-			final ContextManager contextManager) {
-		return new CommandManagerLegacyWrapper(bindingManager, commandManager,
-				contextManager);
-	}
-
-	private CommandManagerFactory() {
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerLegacyWrapper.java
deleted file mode 100644
index ed20d06..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandManagerLegacyWrapper.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-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.commands.Command;
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.commands.contexts.ContextManagerEvent;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.BindingManagerEvent;
-import org.eclipse.jface.bindings.IBindingManagerListener;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.ParseException;
-import org.eclipse.ui.commands.CommandManagerEvent;
-import org.eclipse.ui.commands.ICategory;
-import org.eclipse.ui.commands.ICommand;
-import org.eclipse.ui.commands.ICommandManager;
-import org.eclipse.ui.commands.ICommandManagerListener;
-import org.eclipse.ui.commands.IKeyConfiguration;
-import org.eclipse.ui.internal.handlers.LegacyHandlerWrapper;
-import org.eclipse.ui.internal.keys.SchemeLegacyWrapper;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.KeySequence;
-
-/**
- * Provides support for the old <code>ICommandManager</code> interface.
- * 
- * @since 3.1
- */
-public final class CommandManagerLegacyWrapper implements ICommandManager,
-		org.eclipse.core.commands.ICommandManagerListener,
-		IBindingManagerListener, IContextManagerListener {
-
-	/**
-	 * Whether commands should print out information about which handlers are
-	 * being executed. Change this value if you want console output on command
-	 * execution.
-	 */
-	public static boolean DEBUG_COMMAND_EXECUTION = false;
-
-	/**
-	 * Whether commands should print out information about handler changes.
-	 * Change this value if you want console output when commands change
-	 * handlers.
-	 */
-	public static boolean DEBUG_HANDLERS = false;
-
-	/**
-	 * Which command should print out debugging information. Change this value
-	 * if you want to only here when a command with a particular identifier
-	 * changes its handler.
-	 */
-	public static String DEBUG_HANDLERS_COMMAND_ID = null;
-
-	static boolean validateKeySequence(KeySequence keySequence) {
-		if (keySequence == null) {
-			return false;
-		}
-		List keyStrokes = keySequence.getKeyStrokes();
-		int size = keyStrokes.size();
-		if (size == 0 || size > 4 || !keySequence.isComplete()) {
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * The JFace binding machine that provides binding support for this
-	 * workbench mutable command manager. This value will never be
-	 * <code>null</code>.
-	 * 
-	 * @since 3.1
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The command manager that provides functionality for this workbench
-	 * command manager. This value will never be <code>null</code>.
-	 * 
-	 * @since 3.1
-	 */
-	private final CommandManager commandManager;
-
-	private List commandManagerListeners;
-
-	/**
-	 * The context manager that provides functionality for this workbench
-	 * command manager. This value will never be <code>null</code>.
-	 * 
-	 * @since 3.1
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * Constructs a new instance of <code>MutableCommandManager</code>. The
-	 * binding manager and command manager providing support for this manager
-	 * are constructed at this time.
-	 * 
-	 * @param bindingManager
-	 *            The binding manager providing support for the command manager;
-	 *            must not be <code>null</code>.
-	 * @param commandManager
-	 *            The command manager providing support for this command
-	 *            manager; must not be <code>null</code>.
-	 * @param contextManager
-	 *            The context manager to provide context support to this
-	 *            manager. This value must not be <code>null</code>.
-	 * 
-	 */
-	public CommandManagerLegacyWrapper(final BindingManager bindingManager,
-			final CommandManager commandManager,
-			final ContextManager contextManager) {
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"The context manager cannot be null."); //$NON-NLS-1$
-		}
-		this.bindingManager = bindingManager;
-		this.commandManager = commandManager;
-		this.contextManager = contextManager;
-	}
-
-	public final void addCommandManagerListener(
-			final ICommandManagerListener commandManagerListener) {
-		if (commandManagerListener == null) {
-			throw new NullPointerException("Cannot add a null listener."); //$NON-NLS-1$
-		}
-
-		if (commandManagerListeners == null) {
-			commandManagerListeners = new ArrayList();
-			this.commandManager.addCommandManagerListener(this);
-			this.bindingManager.addBindingManagerListener(this);
-			this.contextManager.addContextManagerListener(this);
-		}
-
-		if (!commandManagerListeners.contains(commandManagerListener)) {
-			commandManagerListeners.add(commandManagerListener);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.IBindingManagerListener#bindingManagerChanged(org.eclipse.jface.bindings.BindingManagerEvent)
-	 */
-	public final void bindingManagerChanged(final BindingManagerEvent event) {
-		final boolean schemeDefinitionsChanged = event.getScheme() != null;
-		final Set previousSchemes;
-		if (schemeDefinitionsChanged) {
-			previousSchemes = new HashSet();
-			final Scheme scheme = event.getScheme();
-			final Scheme[] definedSchemes = event.getManager()
-					.getDefinedSchemes();
-			final int definedSchemesCount = definedSchemes.length;
-			for (int i = 0; i < definedSchemesCount; i++) {
-				final Scheme definedScheme = definedSchemes[0];
-				if ((definedScheme == scheme) && (event.isSchemeDefined())) {
-					continue; // skip this one, it was just defined.
-				}
-				previousSchemes.add(definedSchemes[0].getId());
-			}
-			if (!event.isSchemeDefined()) {
-				previousSchemes.add(scheme.getId());
-			}
-		} else {
-			previousSchemes = null;
-		}
-
-		fireCommandManagerChanged(new CommandManagerEvent(this, false, event
-				.isActiveSchemeChanged(), event.isLocaleChanged(), event
-				.isPlatformChanged(), false, false, schemeDefinitionsChanged,
-				null, null, previousSchemes));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.commands.ICommandManagerListener#commandManagerChanged(org.eclipse.commands.CommandManagerEvent)
-	 */
-	public final void commandManagerChanged(
-			final org.eclipse.core.commands.CommandManagerEvent event) {
-		// Figure out the set of previous category identifiers.
-		final boolean categoryIdsChanged = event.isCategoryChanged();
-		final Set previousCategoryIds;
-		if (categoryIdsChanged) {
-			previousCategoryIds = new HashSet(commandManager
-					.getDefinedCategoryIds());
-			final String categoryId = event.getCategoryId();
-			if (event.isCategoryDefined()) {
-				previousCategoryIds.remove(categoryId);
-			} else {
-				previousCategoryIds.add(categoryId);
-			}
-		} else {
-			previousCategoryIds = null;
-		}
-
-		// Figure out the set of previous command identifiers.
-		final boolean commandIdsChanged = event.isCommandChanged();
-		final Set previousCommandIds;
-		if (commandIdsChanged) {
-			previousCommandIds = new HashSet(commandManager
-					.getDefinedCommandIds());
-			final String commandId = event.getCommandId();
-			if (event.isCommandDefined()) {
-				previousCommandIds.remove(commandId);
-			} else {
-				previousCommandIds.add(commandId);
-			}
-		} else {
-			previousCommandIds = null;
-		}
-
-		fireCommandManagerChanged(new CommandManagerEvent(this, false, false,
-				false, false, categoryIdsChanged, commandIdsChanged, false,
-				previousCategoryIds, previousCommandIds, null));
-	}
-
-	public final void contextManagerChanged(final ContextManagerEvent event) {
-		fireCommandManagerChanged(new CommandManagerEvent(this, event
-				.isActiveContextsChanged(), false, false, false, false, false,
-				false, null, null, null));
-	}
-
-	private void fireCommandManagerChanged(
-			CommandManagerEvent commandManagerEvent) {
-		if (commandManagerEvent == null) {
-			throw new NullPointerException();
-		}
-		if (commandManagerListeners != null) {
-			for (int i = 0; i < commandManagerListeners.size(); i++) {
-				((ICommandManagerListener) commandManagerListeners.get(i))
-						.commandManagerChanged(commandManagerEvent);
-			}
-		}
-	}
-
-	public Set getActiveContextIds() {
-		return contextManager.getActiveContextIds();
-	}
-
-	public String getActiveKeyConfigurationId() {
-		final Scheme scheme = bindingManager.getActiveScheme();
-		if (scheme != null) {
-			return scheme.getId();
-		}
-
-		/*
-		 * TODO This is possibly a breaking change. The id should be non-null,
-		 * and presumably, a real scheme id.
-		 */
-		return Util.ZERO_LENGTH_STRING;
-	}
-
-	public String getActiveLocale() {
-		return bindingManager.getLocale();
-	}
-
-	public String getActivePlatform() {
-		return bindingManager.getPlatform();
-	}
-
-	public ICategory getCategory(String categoryId) {
-		// TODO Provide access to the categories.
-		// return new CategoryWrapper(commandManager.getCategory(categoryId));
-		return null;
-	}
-
-	public ICommand getCommand(String commandId) {
-		final Command command = commandManager.getCommand(commandId);
-		return new CommandLegacyWrapper(command, bindingManager);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandManager#getDefinedCategoryIds()
-	 */
-	public Set getDefinedCategoryIds() {
-		return commandManager.getDefinedCategoryIds();
-	}
-
-	public Set getDefinedCommandIds() {
-		return commandManager.getDefinedCommandIds();
-	}
-
-	public Set getDefinedKeyConfigurationIds() {
-		final Set definedIds = new HashSet();
-		final Scheme[] schemes = bindingManager.getDefinedSchemes();
-		for (int i = 0; i < schemes.length; i++) {
-			definedIds.add(schemes[i].getId());
-		}
-		return definedIds;
-	}
-
-	public IKeyConfiguration getKeyConfiguration(String keyConfigurationId) {
-		final Scheme scheme = bindingManager.getScheme(keyConfigurationId);
-		return new SchemeLegacyWrapper(scheme, bindingManager);
-	}
-
-	public Map getPartialMatches(KeySequence keySequence) {
-		try {
-			final org.eclipse.jface.bindings.keys.KeySequence sequence = org.eclipse.jface.bindings.keys.KeySequence
-					.getInstance(keySequence.toString());
-			final Map partialMatches = bindingManager
-					.getPartialMatches(sequence);
-			final Map returnValue = new HashMap();
-			final Iterator matchItr = partialMatches.entrySet().iterator();
-			while (matchItr.hasNext()) {
-				final Map.Entry entry = (Map.Entry) matchItr.next();
-				final TriggerSequence trigger = (TriggerSequence) entry
-						.getKey();
-				if (trigger instanceof org.eclipse.jface.bindings.keys.KeySequence) {
-					final org.eclipse.jface.bindings.keys.KeySequence triggerKey = (org.eclipse.jface.bindings.keys.KeySequence) trigger;
-					returnValue.put(KeySequence.getInstance(triggerKey
-							.toString()), entry.getValue());
-				}
-			}
-			return returnValue;
-		} catch (final ParseException e) {
-			return new HashMap();
-		} catch (final org.eclipse.ui.keys.ParseException e) {
-			return new HashMap();
-		}
-	}
-
-	public String getPerfectMatch(KeySequence keySequence) {
-		try {
-			final org.eclipse.jface.bindings.keys.KeySequence sequence = org.eclipse.jface.bindings.keys.KeySequence
-					.getInstance(keySequence.toString());
-			final Binding binding = bindingManager.getPerfectMatch(sequence);
-			if (binding == null) {
-				return null;
-			}
-
-			return binding.getParameterizedCommand().getId();
-
-		} catch (final ParseException e) {
-			return null;
-		}
-	}
-
-	public boolean isPartialMatch(KeySequence keySequence) {
-		try {
-			final org.eclipse.jface.bindings.keys.KeySequence sequence = org.eclipse.jface.bindings.keys.KeySequence
-					.getInstance(keySequence.toString());
-			return bindingManager.isPartialMatch(sequence);
-		} catch (final ParseException e) {
-			return false;
-		}
-	}
-
-	public boolean isPerfectMatch(KeySequence keySequence) {
-		try {
-			final org.eclipse.jface.bindings.keys.KeySequence sequence = org.eclipse.jface.bindings.keys.KeySequence
-					.getInstance(keySequence.toString());
-			return bindingManager.isPerfectMatch(sequence);
-		} catch (final ParseException e) {
-			return false;
-		}
-	}
-
-	public void removeCommandManagerListener(
-			ICommandManagerListener commandManagerListener) {
-		if (commandManagerListener == null) {
-			throw new NullPointerException("Cannot remove a null listener"); //$NON-NLS-1$
-		}
-
-		if (commandManagerListeners != null) {
-			commandManagerListeners.remove(commandManagerListener);
-			if (commandManagerListeners.isEmpty()) {
-				commandManagerListeners = null;
-				this.commandManager.removeCommandManagerListener(this);
-				this.bindingManager.removeBindingManagerListener(this);
-				this.contextManager.removeContextManagerListener(this);
-			}
-		}
-	}
-
-	/**
-	 * Updates the handlers for a block of commands all at once.
-	 * 
-	 * @param handlersByCommandId
-	 *            The map of command identifier (<code>String</code>) to
-	 *            handler (<code>IHandler</code>).
-	 */
-	public final void setHandlersByCommandId(final Map handlersByCommandId) {
-		// Wrap legacy handlers so they can be passed to the new API.
-		final Iterator entryItr = handlersByCommandId.entrySet().iterator();
-		while (entryItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) entryItr.next();
-			final Object handler = entry.getValue();
-			if (handler instanceof org.eclipse.ui.commands.IHandler) {
-				final String commandId = (String) entry.getKey();
-				handlersByCommandId.put(commandId, new LegacyHandlerWrapper(
-						(org.eclipse.ui.commands.IHandler) handler));
-			}
-		}
-
-		commandManager.setHandlersByCommandId(handlersByCommandId);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandPersistence.java
deleted file mode 100644
index aeaedc2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandPersistence.java
+++ /dev/null
@@ -1,530 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.commands.AbstractParameterValueConverter;
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.State;
-import org.eclipse.core.commands.common.HandleObject;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.RegistryPersistence;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * <p>
- * A static class for accessing the registry and the preference store.
- * </p>
- * 
- * @since 3.1
- */
-public final class CommandPersistence extends RegistryPersistence {
-
-	/**
-	 * The index of the category elements in the indexed array.
-	 * 
-	 * @see CommandPersistence#read()
-	 */
-	private static final int INDEX_CATEGORY_DEFINITIONS = 0;
-
-	/**
-	 * The index of the command elements in the indexed array.
-	 * 
-	 * @see CommandPersistence#read()
-	 */
-	private static final int INDEX_COMMAND_DEFINITIONS = 1;
-
-	/**
-	 * The index of the commandParameterType elements in the indexed array.
-	 * 
-	 * @see CommandPersistence#read()
-	 * @since 3.2
-	 */
-	private static final int INDEX_PARAMETER_TYPE_DEFINITIONS = 2;
-
-	/**
-	 * Reads all of the category definitions from the commands extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param commandService
-	 *            The command service to which the categories should be added;
-	 *            must not be <code>null</code>.
-	 */
-	private static final void readCategoriesFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final ICommandService commandService) {
-		// Undefine all the previous handle objects.
-		final HandleObject[] handleObjects = commandService
-				.getDefinedCategories();
-		if (handleObjects != null) {
-			for (int i = 0; i < handleObjects.length; i++) {
-				handleObjects[i].undefine();
-			}
-		}
-
-		// Define the uncategorized category.
-		commandService
-				.defineUncategorizedCategory(
-						WorkbenchMessages.CommandService_AutogeneratedCategoryName,
-						WorkbenchMessages.CommandService_AutogeneratedCategoryDescription);
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the category identifier.
-			final String categoryId = readRequired(configurationElement,
-					ATT_ID, warningsToLog, "Categories need an id"); //$NON-NLS-1$
-			if (categoryId == null) {
-				continue;
-			}
-
-			// Read out the name.
-			final String name = readRequired(configurationElement, ATT_NAME,
-					warningsToLog, "Categories need a name", //$NON-NLS-1$
-					categoryId);
-			if (name == null) {
-				continue;
-			}
-
-			// Read out the description.
-			final String description = readOptional(configurationElement,
-					ATT_DESCRIPTION);
-
-			final Category category = commandService.getCategory(categoryId);
-			category.define(name, description);
-		}
-
-		// If there were any warnings, then log them now.
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points."); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads all of the command definitions from the commands extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param commandService
-	 *            The command service to which the commands should be added;
-	 *            must not be <code>null</code>.
-	 */
-	private static final void readCommandsFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final ICommandService commandService) {
-		// Undefine all the previous handle objects.
-		final HandleObject[] handleObjects = commandService
-				.getDefinedCommands();
-		if (handleObjects != null) {
-			for (int i = 0; i < handleObjects.length; i++) {
-				handleObjects[i].undefine();
-			}
-		}
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the command identifier.
-			final String commandId = readRequired(configurationElement, ATT_ID,
-					warningsToLog, "Commands need an id"); //$NON-NLS-1$
-			if (commandId == null) {
-				continue;
-			}
-
-			// Read out the name.
-			final String name = readRequired(configurationElement, ATT_NAME,
-					warningsToLog, "Commands need a name"); //$NON-NLS-1$
-			if (name == null) {
-				continue;
-			}
-
-			// Read out the description.
-			final String description = readOptional(configurationElement,
-					ATT_DESCRIPTION);
-
-			// Read out the category id.
-			String categoryId = configurationElement
-					.getAttribute(ATT_CATEGORY_ID);
-			if ((categoryId == null) || (categoryId.length() == 0)) {
-				categoryId = configurationElement.getAttribute(ATT_CATEGORY);
-				if ((categoryId != null) && (categoryId.length() == 0)) {
-					categoryId = null;
-				}
-			}
-
-			// Read out the parameters.
-			final Parameter[] parameters = readParameters(configurationElement,
-					warningsToLog, commandService);
-
-			// Read out the returnTypeId.
-			final String returnTypeId = readOptional(configurationElement,
-					ATT_RETURN_TYPE_ID);
-
-			// Read out the help context identifier.
-			final String helpContextId = readOptional(configurationElement,
-					ATT_HELP_CONTEXT_ID);
-
-			final Command command = commandService.getCommand(commandId);
-			final Category category = commandService.getCategory(categoryId);
-			if (!category.isDefined()) {
-				addWarning(
-						warningsToLog,
-						"Commands should really have a category", //$NON-NLS-1$
-						configurationElement, commandId,
-						"categoryId", categoryId); //$NON-NLS-1$
-			}
-
-			final ParameterType returnType;
-			if (returnTypeId == null) {
-				returnType = null;
-			} else {
-				returnType = commandService.getParameterType(returnTypeId);
-			}
-
-			command.define(name, description, category, parameters, returnType,
-					helpContextId);
-			readState(configurationElement, warningsToLog, command);
-		}
-
-		// If there were any warnings, then log them now.
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points."); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads the parameters from a parent configuration element. This is used to
-	 * read the parameter sub-elements from a command element. Each parameter is
-	 * guaranteed to be valid. If invalid parameters are found, then a warning
-	 * status will be appended to the <code>warningsToLog</code> list.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the parameters should be
-	 *            read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings found during parsing. Warnings found
-	 *            while parsing the parameters will be appended to this list.
-	 *            This value must not be <code>null</code>.
-	 * @param commandService
-	 *            The command service from which the parameter can get parameter
-	 *            types; must not be <code>null</code>.
-	 * @return The array of parameters found for this configuration element;
-	 *         <code>null</code> if none can be found.
-	 */
-	private static final Parameter[] readParameters(
-			final IConfigurationElement configurationElement,
-			final List warningsToLog, final ICommandService commandService) {
-		final IConfigurationElement[] parameterElements = configurationElement
-				.getChildren(TAG_COMMAND_PARAMETER);
-		if ((parameterElements == null) || (parameterElements.length == 0)) {
-			return null;
-		}
-
-		int insertionIndex = 0;
-		Parameter[] parameters = new Parameter[parameterElements.length];
-		for (int i = 0; i < parameterElements.length; i++) {
-			final IConfigurationElement parameterElement = parameterElements[i];
-			// Read out the id
-			final String id = readRequired(parameterElement, ATT_ID,
-					warningsToLog, "Parameters need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			// Read out the name.
-			final String name = readRequired(parameterElement, ATT_NAME,
-					warningsToLog, "Parameters need a name"); //$NON-NLS-1$
-			if (name == null) {
-				continue;
-			}
-
-			/*
-			 * The IParameterValues will be initialized lazily as an
-			 * IExecutableExtension.
-			 */
-
-			// Read out the typeId attribute, if present.
-			final String typeId = readOptional(parameterElement, ATT_TYPE_ID);
-
-			// Read out the optional attribute, if present.
-			final boolean optional = readBoolean(parameterElement,
-					ATT_OPTIONAL, true);
-
-			final ParameterType type;
-			if (typeId == null) {
-				type = null;
-			} else {
-				type = commandService.getParameterType(typeId);
-			}
-
-			final Parameter parameter = new Parameter(id, name,
-					parameterElement, type, optional);
-			parameters[insertionIndex++] = parameter;
-		}
-
-		if (insertionIndex != parameters.length) {
-			final Parameter[] compactedParameters = new Parameter[insertionIndex];
-			System.arraycopy(parameters, 0, compactedParameters, 0,
-					insertionIndex);
-			parameters = compactedParameters;
-		}
-
-		return parameters;
-	}
-
-	/**
-	 * Reads all of the commandParameterType definitions from the commands
-	 * extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param commandService
-	 *            The command service to which the commands should be added;
-	 *            must not be <code>null</code>.
-	 * @since 3.2
-	 */
-	private static final void readParameterTypesFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final ICommandService commandService) {
-
-		// Undefine all the previous handle objects.
-		final HandleObject[] handleObjects = commandService
-				.getDefinedParameterTypes();
-		if (handleObjects != null) {
-			for (int i = 0; i < handleObjects.length; i++) {
-				handleObjects[i].undefine();
-			}
-		}
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the commandParameterType identifier.
-			final String parameterTypeId = readRequired(configurationElement,
-					ATT_ID, warningsToLog, "Command parameter types need an id"); //$NON-NLS-1$
-			if (parameterTypeId == null) {
-				continue;
-			}
-
-			// Read out the type.
-			final String type = readOptional(configurationElement, ATT_TYPE);
-
-			// Read out the converter.
-			final String converter = readOptional(configurationElement,
-					ATT_CONVERTER);
-
-			/*
-			 * if the converter attribute was given, create a proxy
-			 * AbstractParameterValueConverter for the ParameterType, otherwise
-			 * null indicates there is no converter
-			 */
-			final AbstractParameterValueConverter parameterValueConverter = (converter == null) ? null
-					: new ParameterValueConverterProxy(configurationElement);
-
-			final ParameterType parameterType = commandService
-					.getParameterType(parameterTypeId);
-			parameterType.define(type, parameterValueConverter);
-		}
-
-		// If there were any warnings, then log them now.
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the commandParameterTypes from the 'org.eclipse.ui.commands' extension point."); //$NON-NLS-1$
-
-	}
-
-	/**
-	 * Reads the states from a parent configuration element. This is used to
-	 * read the state sub-elements from a command element. Each state is
-	 * guaranteed to be valid. If invalid states are found, then a warning
-	 * status will be appended to the <code>warningsToLog</code> list.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the states should be
-	 *            read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings found during parsing. Warnings found
-	 *            while parsing the parameters will be appended to this list.
-	 *            This value must not be <code>null</code>.
-	 * @param command
-	 *            The command for which the state is being read; may be
-	 *            <code>null</code>.
-	 */
-	private static final void readState(
-			final IConfigurationElement configurationElement,
-			final List warningsToLog, final Command command) {
-		final IConfigurationElement[] stateElements = configurationElement
-				.getChildren(TAG_STATE);
-		if ((stateElements == null) || (stateElements.length == 0)) {
-			return;
-		}
-
-		for (int i = 0; i < stateElements.length; i++) {
-			final IConfigurationElement stateElement = stateElements[i];
-
-			final String id = readRequired(stateElement, ATT_ID, warningsToLog,
-					"State needs an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			if (checkClass(stateElement, warningsToLog,
-					"State must have an associated class", id)) { //$NON-NLS-1$
-				final State state = new CommandStateProxy(stateElement,
-						ATT_CLASS, PrefUtil.getInternalPreferenceStore(),
-						CommandService.createPreferenceKey(command, id));
-				command.addState(id, state);
-			}
-		}
-	}
-
-	/**
-	 * The command service with which this persistence class is associated;
-	 * never <code>null</code>.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * Constructs a new instance of <code>CommandPersistence</code>.
-	 * 
-	 * @param commandService
-	 *            The command service which should be populated with the values
-	 *            from the registry; must not be <code>null</code>.
-	 */
-	CommandPersistence(final ICommandService commandService) {
-		if (commandService == null) {
-			throw new NullPointerException("The command service cannot be null"); //$NON-NLS-1$
-		}
-		this.commandService = commandService;
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		return false;
-	}
-
-	public boolean commandsNeedUpdating(final IRegistryChangeEvent event) {
-		final IExtensionDelta[] commandDeltas = event.getExtensionDeltas(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_COMMANDS);
-		if (commandDeltas.length == 0) {
-			final IExtensionDelta[] actionDefinitionDeltas = event
-					.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-							IWorkbenchRegistryConstants.PL_ACTION_DEFINITIONS);
-			if (actionDefinitionDeltas.length == 0) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-	
-	/**
-	 * Reads all of the commands and categories from the registry,
-	 * 
-	 * @param commandService
-	 *            The command service which should be populated with the values
-	 *            from the registry; must not be <code>null</code>.
-	 */
-	protected final void read() {
-		super.read();
-		reRead();
-	}
-	
-	public void reRead() {
-		// Create the extension registry mementos.
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		int commandDefinitionCount = 0;
-		int categoryDefinitionCount = 0;
-		int parameterTypeDefinitionCount = 0;
-		final IConfigurationElement[][] indexedConfigurationElements = new IConfigurationElement[3][];
-
-		// Sort the commands extension point based on element name.
-		final IConfigurationElement[] commandsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_COMMANDS);
-		for (int i = 0; i < commandsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = commandsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_COMMAND.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_COMMAND_DEFINITIONS, commandDefinitionCount++);
-			} else if (TAG_CATEGORY.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_CATEGORY_DEFINITIONS, categoryDefinitionCount++);
-			} else if (TAG_COMMAND_PARAMETER_TYPE.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_PARAMETER_TYPE_DEFINITIONS,
-						parameterTypeDefinitionCount++);
-			}
-		}
-
-		final IConfigurationElement[] actionDefinitionsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_ACTION_DEFINITIONS);
-		for (int i = 0; i < actionDefinitionsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = actionDefinitionsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			if (TAG_ACTION_DEFINITION.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_COMMAND_DEFINITIONS, commandDefinitionCount++);
-			}
-		}
-
-		readCategoriesFromRegistry(
-				indexedConfigurationElements[INDEX_CATEGORY_DEFINITIONS],
-				categoryDefinitionCount, commandService);
-		readCommandsFromRegistry(
-				indexedConfigurationElements[INDEX_COMMAND_DEFINITIONS],
-				commandDefinitionCount, commandService);
-		readParameterTypesFromRegistry(
-				indexedConfigurationElements[INDEX_PARAMETER_TYPE_DEFINITIONS],
-				parameterTypeDefinitionCount, commandService);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandService.java
deleted file mode 100644
index 2c448fd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandService.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.IExecutionListener;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.SerializationException;
-import org.eclipse.core.commands.State;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.commands.PersistentState;
-import org.eclipse.ui.commands.IElementReference;
-import org.eclipse.ui.commands.IElementUpdater;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.menus.UIElement;
-
-/**
- * <p>
- * Provides services related to the command architecture within the workbench.
- * This service can be used to access the set of commands and handlers.
- * </p>
- * 
- * @since 3.1
- */
-public final class CommandService implements ICommandService {
-
-	/**
-	 * The preference key prefix for all handler state.
-	 */
-	private static final String PREFERENCE_KEY_PREFIX = "org.eclipse.ui.commands/state"; //$NON-NLS-1$
-
-	/**
-	 * Creates a preference key for the given piece of state on the given
-	 * command.
-	 * 
-	 * @param command
-	 *            The command for which the preference key should be created;
-	 *            must not be <code>null</code>.
-	 * @param stateId
-	 *            The identifier of the state for which the preference key
-	 *            should be created; must not be <code>null</code>.
-	 * @return A suitable preference key; never <code>null</code>.
-	 */
-	static final String createPreferenceKey(final Command command,
-			final String stateId) {
-		return PREFERENCE_KEY_PREFIX + '/' + command.getId() + '/' + stateId;
-	}
-
-	/**
-	 * The command manager that supports this service. This value is never
-	 * <code>null</code>.
-	 */
-	private final CommandManager commandManager;
-
-	/**
-	 * The persistence class for this command service.
-	 */
-	private final CommandPersistence commandPersistence;
-
-	/**
-	 * Constructs a new instance of <code>CommandService</code> using a
-	 * command manager.
-	 * 
-	 * @param commandManager
-	 *            The command manager to use; must not be <code>null</code>.
-	 */
-	public CommandService(final CommandManager commandManager) {
-		if (commandManager == null) {
-			throw new NullPointerException(
-					"Cannot create a command service with a null manager"); //$NON-NLS-1$
-		}
-		this.commandManager = commandManager;
-		this.commandPersistence = new CommandPersistence(this);
-	}
-
-	public final void addExecutionListener(final IExecutionListener listener) {
-		commandManager.addExecutionListener(listener);
-	}
-
-	public final void defineUncategorizedCategory(final String name,
-			final String description) {
-		commandManager.defineUncategorizedCategory(name, description);
-	}
-
-	public final ParameterizedCommand deserialize(
-			final String serializedParameterizedCommand)
-			throws NotDefinedException, SerializationException {
-		return commandManager.deserialize(serializedParameterizedCommand);
-	}
-
-	public final void dispose() {
-		commandPersistence.dispose();
-
-		/*
-		 * All state on all commands neeeds to be disposed. This is so that the
-		 * state has a chance to persist any changes.
-		 */
-		final Command[] commands = commandManager.getAllCommands();
-		for (int i = 0; i < commands.length; i++) {
-			final Command command = commands[i];
-			final String[] stateIds = command.getStateIds();
-			for (int j = 0; j < stateIds.length; j++) {
-				final String stateId = stateIds[j];
-				final State state = command.getState(stateId);
-				if (state instanceof PersistentState) {
-					final PersistentState persistentState = (PersistentState) state;
-					if (persistentState.shouldPersist()) {
-						persistentState.save(PrefUtil
-								.getInternalPreferenceStore(),
-								createPreferenceKey(command, stateId));
-					}
-				}
-			}
-		}
-		commandCallbacks = null;
-	}
-
-	public final Category getCategory(final String categoryId) {
-		return commandManager.getCategory(categoryId);
-	}
-
-	public final Command getCommand(final String commandId) {
-		return commandManager.getCommand(commandId);
-	}
-
-	public final Category[] getDefinedCategories() {
-		return commandManager.getDefinedCategories();
-	}
-
-	public final Collection getDefinedCategoryIds() {
-		return commandManager.getDefinedCategoryIds();
-	}
-
-	public final Collection getDefinedCommandIds() {
-		return commandManager.getDefinedCommandIds();
-	}
-
-	public final Command[] getDefinedCommands() {
-		return commandManager.getDefinedCommands();
-	}
-
-	public Collection getDefinedParameterTypeIds() {
-		return commandManager.getDefinedParameterTypeIds();
-	}
-
-	public ParameterType[] getDefinedParameterTypes() {
-		return commandManager.getDefinedParameterTypes();
-	}
-
-	public final String getHelpContextId(final Command command)
-			throws NotDefinedException {
-		return commandManager.getHelpContextId(command);
-	}
-
-	public final String getHelpContextId(final String commandId)
-			throws NotDefinedException {
-		final Command command = getCommand(commandId);
-		return commandManager.getHelpContextId(command);
-	}
-
-	public ParameterType getParameterType(final String parameterTypeId) {
-		return commandManager.getParameterType(parameterTypeId);
-	}
-
-	public final void readRegistry() {
-		commandPersistence.read();
-	}
-
-	public final void removeExecutionListener(final IExecutionListener listener) {
-		commandManager.removeExecutionListener(listener);
-	}
-
-	public final void setHelpContextId(final IHandler handler,
-			final String helpContextId) {
-		commandManager.setHelpContextId(handler, helpContextId);
-	}
-
-	/**
-	 * This is a map of commandIds to a list containing currently registered
-	 * callbacks, in the form of ICallbackReferences.
-	 */
-	private Map commandCallbacks = new HashMap();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#refreshElements(java.lang.String,
-	 *      java.util.Map)
-	 */
-	public final void refreshElements(String commandId, Map filter) {
-		Command cmd = getCommand(commandId);
-
-		if (!cmd.isDefined() || !(cmd.getHandler() instanceof IElementUpdater)) {
-			return;
-		}
-		final IElementUpdater updater = (IElementUpdater) cmd.getHandler();
-
-		if (commandCallbacks == null) {
-			return;
-		}
-
-		List callbackRefs = (List) commandCallbacks.get(commandId);
-		if (callbackRefs == null) {
-			return;
-		}
-
-		for (Iterator i = callbackRefs.iterator(); i.hasNext();) {
-			final IElementReference callbackRef = (IElementReference) i.next();
-			final Map parms = Collections.unmodifiableMap(callbackRef
-					.getParameters());
-			ISafeRunnable run = new ISafeRunnable() {
-				public void handleException(Throwable exception) {
-					WorkbenchPlugin.log("Failed to update callback: "  //$NON-NLS-1$
-							+ callbackRef.getCommandId(), exception);
-				}
-
-				public void run() throws Exception {
-					updater.updateElement(callbackRef.getElement(), parms);
-				}
-			};
-			if (filter == null) {
-				SafeRunner.run(run);
-			} else {
-				boolean match = true;
-				for (Iterator j = filter.entrySet().iterator(); j.hasNext()
-						&& match;) {
-					Map.Entry parmEntry = (Map.Entry) j.next();
-					Object value = parms.get(parmEntry.getKey());
-					if (!parmEntry.getValue().equals(value)) {
-						match = false;
-					}
-				}
-				if (match) {
-					SafeRunner.run(run);
-				}
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#registerElementForCommand(org.eclipse.core.commands.ParameterizedCommand,
-	 *      org.eclipse.ui.menus.UIElement)
-	 */
-	public final IElementReference registerElementForCommand(
-			ParameterizedCommand command, UIElement element)
-			throws NotDefinedException {
-		if (!command.getCommand().isDefined()) {
-			throw new NotDefinedException(
-					"Cannot define a callback for undefined command " //$NON-NLS-1$
-							+ command.getCommand().getId());
-		}
-		if (element == null) {
-			throw new NotDefinedException("No callback defined for command " //$NON-NLS-1$
-					+ command.getCommand().getId());
-		}
-
-		ElementReference ref = new ElementReference(command.getId(), element,
-				command.getParameterMap());
-		registerElement(ref);
-		return ref;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#registerElement(org.eclipse.ui.commands.IElementReference)
-	 */
-	public void registerElement(IElementReference elementReference) {
-		List parameterizedCommands = (List) commandCallbacks
-				.get(elementReference.getCommandId());
-		if (parameterizedCommands == null) {
-			parameterizedCommands = new ArrayList();
-			commandCallbacks.put(elementReference.getCommandId(),
-					parameterizedCommands);
-		}
-		parameterizedCommands.add(elementReference);
-
-		// If the active handler wants to update the callback, it can do
-		// so now
-		Command command = getCommand(elementReference.getCommandId());
-		if (command.isDefined()) {
-			if (command.getHandler() instanceof IElementUpdater) {
-				((IElementUpdater) command.getHandler()).updateElement(
-						elementReference.getElement(), elementReference
-								.getParameters());
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#unregisterElement(org.eclipse.ui.commands.IElementReference)
-	 */
-	public void unregisterElement(IElementReference elementReference) {
-		List parameterizedCommands = (List) commandCallbacks
-				.get(elementReference.getCommandId());
-		if (parameterizedCommands != null) {
-			parameterizedCommands.remove(elementReference);
-			if (parameterizedCommands.isEmpty()) {
-				commandCallbacks.remove(elementReference.getCommandId());
-			}
-		}
-	}
-
-	/**
-	 * @return Returns the commandPersistence.
-	 */
-	public CommandPersistence getCommandPersistence() {
-		return commandPersistence;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandServiceFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandServiceFactory.java
deleted file mode 100644
index 30e1e8d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandServiceFactory.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.services.IServiceScopes;
-
-/**
- * @since 3.4
- * 
- */
-public class CommandServiceFactory extends AbstractServiceFactory {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.services.AbstractServiceFactory#create(java.lang.Class,
-	 * org.eclipse.ui.services.IServiceLocator,
-	 * org.eclipse.ui.services.IServiceLocator)
-	 */
-	public Object create(Class serviceInterface, IServiceLocator parentLocator,
-			IServiceLocator locator) {
-		if (!ICommandService.class.equals(serviceInterface)) {
-			return null;
-		}
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		final IWorkbench wb = wls.getWorkbench();
-		if (wb == null) {
-			return null;
-		}
-
-		Object parent = parentLocator.getService(serviceInterface);
-		if (parent == null) {
-			// we are registering the global services in the Workbench
-			return null;
-		}
-		final IWorkbenchWindow window = wls.getWorkbenchWindow();
-		final IWorkbenchPartSite site = wls.getPartSite();
-
-		if (site == null) {
-			return new SlaveCommandService((ICommandService) parent,
-					IServiceScopes.WINDOW_SCOPE, window);
-		}
-
-		if (parent instanceof SlaveCommandService) {
-			Object pageSite = wls.getPageSite();
-			if (pageSite != null) {
-				return new SlaveCommandService((ICommandService) parent,
-						IServiceScopes.PAGESITE_SCOPE, pageSite);
-			}
-			Object mpepSite = wls.getMultiPageEditorSite();
-			if (mpepSite != null) {
-				return new SlaveCommandService((ICommandService) parent,
-						IServiceScopes.MPESITE_SCOPE, mpepSite);
-			}
-		}
-
-		return new SlaveCommandService((ICommandService) parent,
-				IServiceScopes.PARTSITE_SCOPE, site);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandStateProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandStateProxy.java
deleted file mode 100644
index 30fa3f9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/CommandStateProxy.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.core.commands.IStateListener;
-import org.eclipse.core.commands.State;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.commands.PersistentState;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * <p>
- * A proxy for handler state that has been defined in XML. This delays the class
- * loading until the state is really asked for information. Asking a proxy for
- * anything (except disposing, and adding and removing listeners) will cause the
- * proxy to instantiate the proxied handler.
- * </p>
- * <p>
- * Loading the proxied state will automatically cause it to load its value from
- * the preference store. Disposing of the state will cause it to persist its
- * value.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class CommandStateProxy extends PersistentState {
-
-	/**
-	 * The configuration element from which the state can be created. This value
-	 * will exist until the element is converted into a real class -- at which
-	 * point this value will be set to <code>null</code>.
-	 */
-	private IConfigurationElement configurationElement;
-
-	/**
-	 * The key in the preference store to locate the persisted state.
-	 */
-	private String preferenceKey;
-
-	/**
-	 * The preference store containing the persisted state, if any.
-	 */
-	private IPreferenceStore preferenceStore;
-
-	/**
-	 * The real state. This value is <code>null</code> until the proxy is
-	 * forced to load the real state. At this point, the configuration element
-	 * is converted, nulled out, and this state gains a reference.
-	 */
-	private State state = null;
-
-	/**
-	 * The name of the configuration element attribute which contains the
-	 * information necessary to instantiate the real state.
-	 */
-	private final String stateAttributeName;
-
-	/**
-	 * Constructs a new instance of <code>HandlerState</code> with all the
-	 * information it needs to create the real state later.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time; must not be <code>null</code>.
-	 * @param stateAttributeName
-	 *            The name of the attribute or element containing the state
-	 *            executable extension; must not be <code>null</code>.
-	 * @param preferenceStore
-	 *            The preference store to which any persistent data should be
-	 *            written, and from which it should be loaded; may be
-	 *            <code>null</code>.
-	 * @param preferenceKey
-	 *            The key at which the persistent data is located within the
-	 *            preference store.
-	 */
-	public CommandStateProxy(final IConfigurationElement configurationElement,
-			final String stateAttributeName,
-			final IPreferenceStore preferenceStore, final String preferenceKey) {
-
-		if (configurationElement == null) {
-			throw new NullPointerException(
-					"The configuration element backing a state proxy cannot be null"); //$NON-NLS-1$
-		}
-
-		if (stateAttributeName == null) {
-			throw new NullPointerException(
-					"The attribute containing the state class must be known"); //$NON-NLS-1$
-		}
-
-		this.configurationElement = configurationElement;
-		this.stateAttributeName = stateAttributeName;
-		this.preferenceKey = preferenceKey;
-		this.preferenceStore = preferenceStore;
-	}
-
-	public final void addListener(final IStateListener listener) {
-		if (state == null) {
-			addListenerObject(listener);
-		} else {
-			state.addListener(listener);
-		}
-	}
-
-	public final void dispose() {
-		if (state != null) {
-			state.dispose();
-			if (state instanceof PersistentState) {
-				final PersistentState persistableState = (PersistentState) state;
-				if (persistableState.shouldPersist() && preferenceStore != null
-						&& preferenceKey != null) {
-					persistableState.save(preferenceStore, preferenceKey);
-				}
-			}
-		}
-	}
-
-	public final Object getValue() {
-		if (loadState()) {
-			return state.getValue();
-		}
-
-		return null;
-	}
-
-	public final void load(final IPreferenceStore store,
-			final String preferenceKey) {
-		if (loadState() && state instanceof PersistentState) {
-			final PersistentState persistableState = (PersistentState) state;
-			if (persistableState.shouldPersist() && preferenceStore != null
-					&& preferenceKey != null) {
-				persistableState.load(preferenceStore, preferenceKey);
-			}
-		}
-	}
-
-	/**
-	 * Loads the state, if possible. If the state is loaded, then the member
-	 * variables are updated accordingly and the state is told to load its value
-	 * from the preference store.
-	 * 
-	 * @return <code>true</code> if the state is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadState() {
-		return loadState(false);
-	}
-
-	/**
-	 * Loads the state, if possible. If the state is loaded, then the member
-	 * variables are updated accordingly and the state is told to load its value
-	 * from the preference store.
-	 * 
-	 * @param readPersistence
-	 *            Whether the persistent state for this object should be read.
-	 * @return <code>true</code> if the state is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadState(final boolean readPersistence) {
-		if (state == null) {
-			try {
-				state = (State) configurationElement
-						.createExecutableExtension(stateAttributeName);
-				state.setId(getId());
-				configurationElement = null;
-
-				// Try to load the persistent state, if possible.
-				if (readPersistence && state instanceof PersistentState) {
-					final PersistentState persistentState = (PersistentState) state;
-					persistentState.setShouldPersist(true);
-				}
-				load(preferenceStore, preferenceKey);
-
-				// Transfer the local listeners to the real state.
-				final Object[] listenerArray = getListeners();
-				for (int i = 0; i < listenerArray.length; i++) {
-					state.addListener((IStateListener) listenerArray[i]);
-				}
-				clearListeners();
-
-				return true;
-
-			} catch (final ClassCastException e) {
-				final String message = "The proxied state was the wrong class"; //$NON-NLS-1$
-				final IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-
-			} catch (final CoreException e) {
-				final String message = "The proxied state for '" + configurationElement.getAttribute(stateAttributeName) //$NON-NLS-1$
-						+ "' could not be loaded"; //$NON-NLS-1$
-				IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	public final void removeListener(final IStateListener listener) {
-		if (state == null) {
-			removeListenerObject(listener);
-		} else {
-			state.removeListener(listener);
-		}
-	}
-
-	public final void save(final IPreferenceStore store,
-			final String preferenceKey) {
-		if (loadState() && state instanceof PersistentState) {
-			((PersistentState) state).save(store, preferenceKey);
-		}
-	}
-
-	public final void setId(final String id) {
-		super.setId(id);
-		if (state != null) {
-			state.setId(id);
-		}
-	}
-
-	public final void setShouldPersist(final boolean persisted) {
-		if (loadState(persisted) && state instanceof PersistentState) {
-			((PersistentState) state).setShouldPersist(persisted);
-		}
-	}
-
-	public final void setValue(final Object value) {
-		if (loadState()) {
-			state.setValue(value);
-		}
-	}
-
-	public final boolean shouldPersist() {
-		if (loadState() && state instanceof PersistentState) {
-			return ((PersistentState) state).shouldPersist();
-		}
-
-		return false;
-	}
-
-	public final String toString() {
-		if (state == null) {
-			return configurationElement.getAttribute(stateAttributeName);
-		}
-
-		return state.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ElementReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ElementReference.java
deleted file mode 100644
index a620cfc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ElementReference.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ui.commands.IElementReference;
-import org.eclipse.ui.menus.UIElement;
-
-/**
- * Our element reference that is used during element
- * registration/unregistration.
- * 
- * @since 3.3
- */
-public class ElementReference implements IElementReference {
-
-	private String commandId;
-	private UIElement element;
-	private HashMap parameters;
-
-	/**
-	 * Construct the reference.
-	 * 
-	 * @param id
-	 *            command id. Must not be <code>null</code>.
-	 * @param adapt
-	 *            the element. Must not be <code>null</code>.
-	 * @param parms.
-	 *            parameters used for filtering. Must not be <code>null</code>.
-	 */
-	public ElementReference(String id, UIElement adapt, Map parms) {
-		commandId = id;
-		element = adapt;
-		if (parms == null) {
-			parameters = new HashMap();
-		} else {
-			parameters = new HashMap(parms);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IElementReference#getElement()
-	 */
-	public UIElement getElement() {
-		return element;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.commands.IElementReference#getCommandId()
-	 */
-	public String getCommandId() {
-		return commandId;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.commands.IElementReference#getParameters()
-	 */
-	public Map getParameters() {
-		return parameters;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java
deleted file mode 100644
index bac1469..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ICommandImageManagerListener.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-/**
- * <p>
- * An instance of this interface can be used by clients to receive notification
- * of changes to one or more instances of <code>CommandImageManager</code>.
- * </p>
- * <p>
- * Clients may instantiate, but must not extend.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * <p>
- * This class is eventually intended to exist in
- * <code>org.eclipse.jface.commands</code>.
- * </p>
- * 
- * @since 3.2
- */
-public interface ICommandImageManagerListener {
-
-	/**
-	 * Notifies that one or more properties of an instance of
-	 * <code>CommandImageManager</code> have changed. Specific details are
-	 * described in the <code>CommandImageManagerEvent</code>.
-	 * 
-	 * @param event
-	 *            The event; never <code>null</code>.
-	 */
-	void commandImageManagerChanged(CommandImageManagerEvent event);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java
deleted file mode 100644
index 58129a2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ILegacyAttributeNames.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.jface.action.IAction;
-
-/**
- * This defines attribute names that were understood in Eclipse 3.0. This is
- * used to provide legacy support for the attribute map property.
- * 
- * @since 3.1
- */
-public interface ILegacyAttributeNames {
-
-	/**
-	 * Whether the handler is capable of executing right now.
-	 */
-	public final String ENABLED = IAction.ENABLED;
-
-	/**
-	 * Whether the handler is capable of handling delegation of responsibilities
-	 * at this time.
-	 */
-	public final String HANDLED = IAction.HANDLED;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/LegacyCommandListenerWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/LegacyCommandListenerWrapper.java
deleted file mode 100644
index 1a7cfd4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/LegacyCommandListenerWrapper.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.core.commands.CommandEvent;
-import org.eclipse.core.commands.ICommandListener;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.ui.commands.ICommand;
-
-/**
- * Wraps a legacy listener in a new listener interface. This simply forwards
- * incoming events through to the old interface.
- * 
- * @since 3.1
- */
-final class LegacyCommandListenerWrapper implements ICommandListener {
-
-	/**
-	 * The supporting binding manager; never <code>null</code>.
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The listener which is being wrapped. This value should never be
-	 * <code>null</code>.
-	 */
-	private final org.eclipse.ui.commands.ICommandListener listener;
-
-	/**
-	 * Constructs a new instance of <code>CommandListenerWrapper</code> around
-	 * a legacy listener.
-	 * 
-	 * @param listener
-	 *            The listener to be wrapped; must not be <code>null</code>.
-	 */
-	LegacyCommandListenerWrapper(
-			final org.eclipse.ui.commands.ICommandListener listener,
-			final BindingManager bindingManager) {
-		if (listener == null) {
-			throw new NullPointerException("Cannot wrap a null listener."); //$NON-NLS-1$
-		}
-
-		if (bindingManager == null) {
-			throw new NullPointerException(
-					"Cannot create a listener wrapper without a binding manager"); //$NON-NLS-1$
-		}
-
-		this.listener = listener;
-		this.bindingManager = bindingManager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.commands.ICommandListener#commandChanged(org.eclipse.commands.CommandEvent)
-	 */
-	public final void commandChanged(final CommandEvent commandEvent) {
-		final ICommand command = new CommandLegacyWrapper(commandEvent.getCommand(),
-				bindingManager);
-		final boolean definedChanged = commandEvent.isDefinedChanged();
-		final boolean descriptionChanged = commandEvent.isDescriptionChanged();
-		final boolean handledChanged = commandEvent.isHandledChanged();
-		final boolean nameChanged = commandEvent.isNameChanged();
-
-		listener.commandChanged(new org.eclipse.ui.commands.CommandEvent(
-				command, false, false, definedChanged, descriptionChanged,
-				handledChanged, false, nameChanged, null));
-
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyCommandListenerWrapper) {
-			final LegacyCommandListenerWrapper wrapper = (LegacyCommandListenerWrapper) object;
-			return listener.equals(wrapper.listener);
-		}
-
-		if (object instanceof org.eclipse.ui.commands.ICommandListener) {
-			final org.eclipse.ui.commands.ICommandListener other = (org.eclipse.ui.commands.ICommandListener) object;
-			return listener.equals(other);
-		}
-
-		return false;
-	}
-
-	public final int hashCode() {
-		return listener.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/Parameter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/Parameter.java
deleted file mode 100644
index 129f93e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/Parameter.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.core.commands.ITypedParameter;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.ParameterValuesException;
-import org.eclipse.core.commands.common.HandleObject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * A parameter for a command. A parameter identifies a type of information that
- * the command might accept. For example, a "Show View" command might accept the
- * id of a view for display. This parameter also identifies possible values, for
- * display in the user interface.
- * </p>
- * <p>
- * Parameters are mutable, and can change as the command changes. Notifications
- * will not be sent if the parameter itself changes. Listeners can be attached
- * to the command.
- * </p>
- * 
- * @since 3.1
- */
-public final class Parameter implements IParameter, ITypedParameter {
-
-	/**
-	 * The name of the configuration element attribute contain the values. This
-	 * is used to retrieve the executable extension
-	 * <code>IParameterValues</code>.
-	 */
-	private static final String ATTRIBUTE_VALUES = "values"; //$NON-NLS-1$
-
-	/**
-	 * The constant integer hash code value meaning the hash code has not yet
-	 * been computed.
-	 */
-	private static final int HASH_CODE_NOT_COMPUTED = -1;
-
-	/**
-	 * A factor for computing the hash code for all schemes.
-	 */
-	private static final int HASH_FACTOR = 89;
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = HandleObject.class.getName()
-			.hashCode();
-
-	/**
-	 * The hash code for this object. This value is computed lazily, and marked
-	 * as invalid when one of the values on which it is based changes.
-	 */
-	private transient int hashCode = HASH_CODE_NOT_COMPUTED;
-
-	/**
-	 * The identifier for this object. This identifier should be unique across
-	 * all objects of the same type and should never change. This value will
-	 * never be <code>null</code>.
-	 */
-	protected final String id;
-
-	/**
-	 * The non-externalized name of this parameter. The name is used as the in a
-	 * name-value parameter map. This value will never be <code>null</code>.
-	 */
-	private final String name;
-
-	/**
-	 * Whether the parameter is optional (as opposed to required).
-	 */
-	private final boolean optional;
-
-	/**
-	 * The type for this parameter. This value may be <code>null</code> if the
-	 * parameter is not typed.
-	 */
-	private final ParameterType parameterType;
-
-	/**
-	 * The string representation of this object. This string is for debugging
-	 * purposes only, and is not meant to be displayed to the user. This value
-	 * is computed lazily, and is cleared if one of its dependent values
-	 * changes.
-	 */
-	protected transient String string = null;
-
-	/**
-	 * The actual <code>IParameterValues</code> implementation. This is lazily
-	 * loaded from the <code>valuesConfigurationElement</code>, to avoid
-	 * unnecessary class-loading.
-	 */
-	private transient IParameterValues values = null;
-
-	/**
-	 * The configuration element providing the executable extension that will
-	 * implement <code>IParameterValues</code>. This value will not be
-	 * <code>null</code>.
-	 */
-	private final IConfigurationElement valuesConfigurationElement;
-
-	/**
-	 * Constructs a new instance of <code>Parameter</code> with all of its
-	 * values pre-defined.
-	 * 
-	 * @param id
-	 *            The identifier for this parameter; must not be
-	 *            <code>null</code>.
-	 * @param name
-	 *            The name for this parameter; must not be <code>null</code>.
-	 * @param values
-	 *            The values for this parameter; must not be <code>null</code>.
-	 * @param parameterType
-	 *            the type for this parameter; may be <code>null</code> if the
-	 *            parmeter doesn't declare type.
-	 * @param optional
-	 *            Whether this parameter is optional (as opposed to required).
-	 * @param commandService
-	 *            The command service from which parameter types can be
-	 *            retrieved; must not be <code>null</code>.
-	 */
-	public Parameter(final String id, final String name,
-			final IConfigurationElement values,
-			final ParameterType parameterType, final boolean optional) {
-		if (id == null) {
-			throw new NullPointerException(
-					"Cannot create a parameter with a null id"); //$NON-NLS-1$
-		}
-
-		if (name == null) {
-			throw new NullPointerException(
-					"The name of a parameter cannot be null."); //$NON-NLS-1$
-		}
-
-		if (values == null) {
-			throw new NullPointerException(
-					"The values for a parameter cannot be null."); //$NON-NLS-1$
-		}
-
-		this.id = id;
-		this.name = name;
-		this.valuesConfigurationElement = values;
-		this.parameterType = parameterType;
-		this.optional = optional;
-	}
-
-	/**
-	 * Tests whether this object is equal to another object. A parameter is only
-	 * equal to another parameter with the same properties.
-	 * 
-	 * @param object
-	 *            The object with which to compare; may be <code>null</code>.
-	 * @return <code>true</code> if the objects are equal; <code>false</code>
-	 *         otherwise.
-	 */
-	public final boolean equals(final Object object) {
-		if (this == object) {
-			return true;
-		}
-
-		if (!(object instanceof Parameter)) {
-			return false;
-		}
-
-		final Parameter parameter = (Parameter) object;
-		if (!Util.equals(id, parameter.id)) {
-			return false;
-		}
-		if (!Util.equals(name, parameter.name)) {
-			return false;
-		}
-		if (!Util.equals(values, parameter.values)) {
-			return false;
-		}
-
-		return Util.equals(optional, parameter.optional);
-	}
-
-	public final String getId() {
-		return id;
-	}
-
-	public final String getName() {
-		return name;
-	}
-
-	public final ParameterType getParameterType() {
-		return parameterType;
-	}
-
-	public final IParameterValues getValues() throws ParameterValuesException {
-		if (values == null) {
-			try {
-				values = (IParameterValues) valuesConfigurationElement
-						.createExecutableExtension(ATTRIBUTE_VALUES);
-			} catch (final CoreException e) {
-				throw new ParameterValuesException(
-						"Problem creating parameter values", e); //$NON-NLS-1$
-			} catch (final ClassCastException e) {
-				throw new ParameterValuesException(
-						"Parameter values were not an instance of IParameterValues", e); //$NON-NLS-1$
-			}
-		}
-
-		return values;
-	}
-
-	public final int hashCode() {
-		if (hashCode == HASH_CODE_NOT_COMPUTED) {
-			hashCode = HASH_INITIAL * HASH_FACTOR + Util.hashCode(id);
-			if (hashCode == HASH_CODE_NOT_COMPUTED) {
-				hashCode++;
-			}
-		}
-		return hashCode;
-	}
-
-	public final boolean isOptional() {
-		return optional;
-	}
-
-	public final String toString() {
-		if (string == null) {
-			final StringBuffer buffer = new StringBuffer();
-
-			buffer.append("Parameter("); //$NON-NLS-1$
-			buffer.append(id);
-			buffer.append(',');
-			buffer.append(name);
-			buffer.append(',');
-			buffer.append(values);
-			buffer.append(',');
-			buffer.append(optional);
-			buffer.append(')');
-
-			string = buffer.toString();
-		}
-
-		return string;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java
deleted file mode 100644
index a9ff3a7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/ParameterValueConverterProxy.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import org.eclipse.core.commands.AbstractParameterValueConverter;
-import org.eclipse.core.commands.ParameterValueConversionException;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * A proxy for a parameter value converter that has been defined in the regisry.
- * This delays the class loading until the converter is really asked to do
- * string/object conversions.
- * 
- * @since 3.2
- */
-public final class ParameterValueConverterProxy extends
-		AbstractParameterValueConverter {
-
-	/**
-	 * The configuration element providing the executable extension that will
-	 * extend <code>AbstractParameterValueConverter</code>. This value will
-	 * not be <code>null</code>.
-	 */
-	private final IConfigurationElement converterConfigurationElement;
-
-	/**
-	 * The real parameter value converter instance. This will be
-	 * <code>null</code> until one of the conversion methods are used.
-	 */
-	private AbstractParameterValueConverter parameterValueConverter;
-
-	/**
-	 * Constructs a <code>ParameterValueConverterProxy</code> to represent the
-	 * real converter until it is needed.
-	 * 
-	 * @param converterConfigurationElement
-	 *            The configuration element from which the real converter can be
-	 *            loaded.
-	 */
-	public ParameterValueConverterProxy(
-			final IConfigurationElement converterConfigurationElement) {
-		if (converterConfigurationElement == null) {
-			throw new NullPointerException(
-					"converterConfigurationElement must not be null"); //$NON-NLS-1$
-		}
-
-		this.converterConfigurationElement = converterConfigurationElement;
-	}
-
-	public final Object convertToObject(final String parameterValue)
-			throws ParameterValueConversionException {
-		return getConverter().convertToObject(parameterValue);
-	}
-
-	public final String convertToString(final Object parameterValue)
-			throws ParameterValueConversionException {
-		return getConverter().convertToString(parameterValue);
-	}
-
-	/**
-	 * Returns the real parameter value converter for this proxy or throws an
-	 * exception indicating the converter could not be obtained.
-	 * 
-	 * @return the real converter for this proxy; never <code>null</code>.
-	 * @throws ParameterValueConversionException
-	 *             if the converter could not be obtained
-	 */
-	private AbstractParameterValueConverter getConverter()
-			throws ParameterValueConversionException {
-		if (parameterValueConverter == null) {
-			try {
-				parameterValueConverter = (AbstractParameterValueConverter) converterConfigurationElement
-						.createExecutableExtension(IWorkbenchRegistryConstants.ATT_CONVERTER);
-			} catch (final CoreException e) {
-				throw new ParameterValueConversionException(
-						"Problem creating parameter value converter", e); //$NON-NLS-1$
-			} catch (final ClassCastException e) {
-				throw new ParameterValueConversionException(
-						"Parameter value converter was not a subclass of AbstractParameterValueConverter", e); //$NON-NLS-1$
-			}
-		}
-		return parameterValueConverter;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java
deleted file mode 100644
index 6dc9b4c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.commands;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.IExecutionListener;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.ParameterType;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.SerializationException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.ui.commands.IElementReference;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.menus.UIElement;
-
-/**
- * A command service which delegates almost all responsibility to the parent
- * service.
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public class SlaveCommandService implements ICommandService {
-
-	private Collection fExecutionListeners = new ArrayList();
-
-	/**
-	 * The collection of ICallbackReferences added through this service.
-	 * 
-	 * @since 3.3
-	 */
-	private Set fCallbackCache = new HashSet();
-
-	private ICommandService fParentService;
-
-	/**
-	 * The scoping constant added to callback registrations submitted through
-	 * this service.
-	 * 
-	 * @since 3.3
-	 */
-	private String fScopingName;
-
-	/**
-	 * The object to scope. In theory, the service locator that would find this
-	 * service.
-	 * 
-	 * @since 3.3
-	 */
-	private Object fScopingValue;
-
-	/**
-	 * Build the slave service.
-	 * 
-	 * @param parent
-	 *            the parent service. This must not be <code>null</code>.
-	 */
-	public SlaveCommandService(ICommandService parent, String scopeName,
-			Object scopeValue) {
-		if (parent == null) {
-			throw new NullPointerException(
-					"The parent command service must not be null"); //$NON-NLS-1$
-		}
-		fParentService = parent;
-		fScopingName = scopeName;
-		fScopingValue = scopeValue;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#addExecutionListener(org.eclipse.core.commands.IExecutionListener)
-	 */
-	public void addExecutionListener(IExecutionListener listener) {
-		if (!fExecutionListeners.contains(listener)) {
-			fExecutionListeners.add(listener);
-		}
-		fParentService.addExecutionListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#defineUncategorizedCategory(java.lang.String,
-	 *      java.lang.String)
-	 */
-	public void defineUncategorizedCategory(String name, String description) {
-		fParentService.defineUncategorizedCategory(name, description);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#deserialize(java.lang.String)
-	 */
-	public ParameterizedCommand deserialize(
-			String serializedParameterizedCommand) throws NotDefinedException,
-			SerializationException {
-		return fParentService.deserialize(serializedParameterizedCommand);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		if (!fExecutionListeners.isEmpty()) {
-			Object[] array = fExecutionListeners.toArray();
-			for (int i = 0; i < array.length; i++) {
-				removeExecutionListener((IExecutionListener) array[i]);
-			}
-			fExecutionListeners.clear();
-		}
-		if (!fCallbackCache.isEmpty()) {
-			Object[] array = fCallbackCache.toArray();
-			for (int i = 0; i < array.length; i++) {
-				unregisterElement((IElementReference) array[i]);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getCategory(java.lang.String)
-	 */
-	public Category getCategory(String categoryId) {
-		return fParentService.getCategory(categoryId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getCommand(java.lang.String)
-	 */
-	public Command getCommand(String commandId) {
-		return fParentService.getCommand(commandId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getDefinedCategories()
-	 */
-	public Category[] getDefinedCategories() {
-		return fParentService.getDefinedCategories();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getDefinedCategoryIds()
-	 */
-	public Collection getDefinedCategoryIds() {
-		return fParentService.getDefinedCategoryIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getDefinedCommandIds()
-	 */
-	public Collection getDefinedCommandIds() {
-		return fParentService.getDefinedCommandIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getDefinedCommands()
-	 */
-	public Command[] getDefinedCommands() {
-		return fParentService.getDefinedCommands();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getDefinedParameterTypeIds()
-	 */
-	public Collection getDefinedParameterTypeIds() {
-		return fParentService.getDefinedParameterTypeIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getDefinedParameterTypes()
-	 */
-	public ParameterType[] getDefinedParameterTypes() {
-		return fParentService.getDefinedParameterTypes();
-	}
-
-	public final String getHelpContextId(final Command command)
-			throws NotDefinedException {
-		return fParentService.getHelpContextId(command);
-	}
-
-	public final String getHelpContextId(final String commandId)
-			throws NotDefinedException {
-		return fParentService.getHelpContextId(commandId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#getParameterType(java.lang.String)
-	 */
-	public ParameterType getParameterType(String parameterTypeId) {
-		return fParentService.getParameterType(parameterTypeId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#readRegistry()
-	 */
-	public void readRegistry() {
-		fParentService.readRegistry();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#removeExecutionListener(org.eclipse.core.commands.IExecutionListener)
-	 */
-	public void removeExecutionListener(IExecutionListener listener) {
-		fExecutionListeners.remove(listener);
-		fParentService.removeExecutionListener(listener);
-	}
-
-	public final void setHelpContextId(final IHandler handler,
-			final String helpContextId) {
-		fParentService.setHelpContextId(handler, helpContextId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#refreshElements(java.lang.String,
-	 *      java.util.Map)
-	 */
-	public void refreshElements(String commandId, Map filter) {
-		fParentService.refreshElements(commandId, filter);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#registerElementForCommand(org.eclipse.core.commands.ParameterizedCommand,
-	 *      org.eclipse.ui.menus.UIElement)
-	 */
-	public IElementReference registerElementForCommand(
-			ParameterizedCommand command, UIElement element)
-			throws NotDefinedException {
-		if (!command.getCommand().isDefined()) {
-			throw new NotDefinedException(
-					"Cannot define a callback for undefined command " //$NON-NLS-1$
-							+ command.getCommand().getId());
-		}
-		if (element == null) {
-			throw new NotDefinedException("No callback defined for command " //$NON-NLS-1$
-					+ command.getCommand().getId());
-		}
-
-		ElementReference ref = new ElementReference(command.getId(), element,
-				command.getParameterMap());
-		registerElement(ref);
-		return ref;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#registerElement(org.eclipse.ui.commands.IElementReference)
-	 */
-	public void registerElement(IElementReference elementReference) {
-		fCallbackCache.add(elementReference);
-		elementReference.getParameters().put(fScopingName, fScopingValue);
-		fParentService.registerElement(elementReference);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandService#unregisterElement(org.eclipse.ui.commands.IElementReference)
-	 */
-	public void unregisterElement(IElementReference elementReference) {
-		fCallbackCache.remove(elementReference);
-		fParentService.unregisterElement(elementReference);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/WorkbenchCommandSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/WorkbenchCommandSupport.java
deleted file mode 100644
index c8265a3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/WorkbenchCommandSupport.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.commands;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.LegacyHandlerSubmissionExpression;
-import org.eclipse.ui.commands.HandlerSubmission;
-import org.eclipse.ui.commands.ICommandManager;
-import org.eclipse.ui.commands.IWorkbenchCommandSupport;
-import org.eclipse.ui.commands.Priority;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.handlers.LegacyHandlerWrapper;
-
-/**
- * Provides command support in terms of the workbench.
- * 
- * @since 3.0
- */
-public class WorkbenchCommandSupport implements IWorkbenchCommandSupport {
-
-	/**
-	 * The map of activations that have been given to the handler service (<code>IHandlerActivation</code>),
-	 * indexed by the submissions (<code>HandlerSubmission</code>). This map
-	 * should be <code>null</code> if there are no such activations.
-	 */
-	private Map activationsBySubmission = null;
-
-	/**
-	 * The mutable command manager that should be notified of changes to the
-	 * list of active handlers. This value is never <code>null</code>.
-	 */
-	private final CommandManagerLegacyWrapper commandManagerWrapper;
-
-	/**
-	 * The handler service for the workbench. This value is never
-	 * <code>null</code>.
-	 */
-	private final IHandlerService handlerService;
-
-	/**
-	 * Constructs a new instance of <code>WorkbenchCommandSupport</code>
-	 * 
-	 * @param bindingManager
-	 *            The binding manager providing support for the command manager;
-	 *            must not be <code>null</code>.
-	 * @param commandManager
-	 *            The command manager for the workbench; must not be
-	 *            <code>null</code>.
-	 * @param contextManager
-	 *            The context manager providing support for the command manager
-	 *            and binding manager; must not be <code>null</code>.
-	 * @param handlerService
-	 *            The handler service for the workbench; must not be
-	 *            <code>null</code>.
-	 */
-	public WorkbenchCommandSupport(final BindingManager bindingManager,
-			final CommandManager commandManager,
-			final ContextManager contextManager,
-			final IHandlerService handlerService) {
-		if (handlerService == null) {
-			throw new NullPointerException("The handler service cannot be null"); //$NON-NLS-1$
-		}
-
-		this.handlerService = handlerService;
-
-		commandManagerWrapper = CommandManagerFactory.getCommandManagerWrapper(
-				bindingManager, commandManager, contextManager);
-
-		// Initialize the old key formatter settings.
-		org.eclipse.ui.keys.KeyFormatterFactory
-				.setDefault(org.eclipse.ui.keys.SWTKeySupport
-						.getKeyFormatterForPlatform());
-	}
-
-	public final void addHandlerSubmission(
-			final HandlerSubmission handlerSubmission) {
-		/*
-		 * Create the source priorities based on the conditions mentioned in the
-		 * submission.
-		 */
-		int sourcePriorities = 0;
-		if (handlerSubmission.getActivePartId() != null) {
-			sourcePriorities |= ISources.ACTIVE_PART_ID;
-		}
-		if (handlerSubmission.getActiveShell() != null) {
-			sourcePriorities |= (ISources.ACTIVE_SHELL | ISources.ACTIVE_WORKBENCH_WINDOW);
-		}
-		if (handlerSubmission.getActiveWorkbenchPartSite() != null) {
-			sourcePriorities |= ISources.ACTIVE_SITE;
-		}
-		if (handlerSubmission.getPriority() == Priority.LEGACY) {
-			sourcePriorities |= ISources.LEGACY_LEGACY;
-		} else if (handlerSubmission.getPriority() == Priority.LOW) {
-			sourcePriorities |= ISources.LEGACY_LOW;
-		} else if (handlerSubmission.getPriority() == Priority.MEDIUM) {
-			sourcePriorities |= ISources.LEGACY_MEDIUM;
-		}
-
-		final IHandlerActivation activation = handlerService.activateHandler(
-				handlerSubmission.getCommandId(), new LegacyHandlerWrapper(
-						handlerSubmission.getHandler()),
-				new LegacyHandlerSubmissionExpression(handlerSubmission
-						.getActivePartId(), handlerSubmission.getActiveShell(),
-						handlerSubmission.getActiveWorkbenchPartSite()));
-		if (activationsBySubmission == null) {
-			activationsBySubmission = new HashMap();
-		}
-		activationsBySubmission.put(handlerSubmission, activation);
-	}
-
-	public final void addHandlerSubmissions(final Collection handlerSubmissions) {
-		final Iterator submissionItr = handlerSubmissions.iterator();
-		while (submissionItr.hasNext()) {
-			addHandlerSubmission((HandlerSubmission) submissionItr.next());
-		}
-	}
-
-	public ICommandManager getCommandManager() {
-		return commandManagerWrapper;
-	}
-
-	public final void removeHandlerSubmission(
-			final HandlerSubmission handlerSubmission) {
-		if (activationsBySubmission == null) {
-			return;
-		}
-
-		final Object value = activationsBySubmission.remove(handlerSubmission);
-		if (value instanceof IHandlerActivation) {
-			final IHandlerActivation activation = (IHandlerActivation) value;
-			handlerService.deactivateHandler(activation);
-		}
-	}
-
-	public final void removeHandlerSubmissions(
-			final Collection handlerSubmissions) {
-		final Iterator submissionItr = handlerSubmissions.iterator();
-		while (submissionItr.hasNext()) {
-			removeHandlerSubmission((HandlerSubmission) submissionItr.next());
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java
deleted file mode 100644
index cfc392e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ActiveContextSourceProvider.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.eclipse.core.commands.contexts.ContextManagerEvent;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * This listens to changes to the list of active contexts, and propagates them
- * through the <code>ISourceProvider</code> framework (a common language in
- * which events are communicated to services).
- * </p>
- * 
- * @since 3.2
- */
-public final class ActiveContextSourceProvider extends AbstractSourceProvider
-		implements IContextManagerListener {
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] { ISources.ACTIVE_CONTEXT_NAME };
-
-	/**
-	 * The context service with which this source provider should communicate.
-	 * This value is never <code>null</code>.
-	 */
-	private IContextService contextService;
-
-	public final void contextManagerChanged(final ContextManagerEvent event) {
-		if (event.isActiveContextsChanged()) {
-			final Map currentState = getCurrentState();
-
-			if (DEBUG) {
-				logDebuggingInfo("Contexts changed to " //$NON-NLS-1$
-						+ currentState.get(ISources.ACTIVE_CONTEXT_NAME));
-			}
-
-			fireSourceChanged(ISources.ACTIVE_CONTEXT, currentState);
-		}
-	}
-
-	public final void dispose() {
-		contextService.removeContextManagerListener(this);
-	}
-
-	public final Map getCurrentState() {
-		final Map currentState = new TreeMap();
-		final Collection activeContextIds = contextService
-				.getActiveContextIds();
-		currentState.put(ISources.ACTIVE_CONTEXT_NAME, activeContextIds);
-		return currentState;
-	}
-
-	public final String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.AbstractSourceProvider#initialize(org.eclipse.ui.services.IServiceLocator)
-	 */
-	public void initialize(IServiceLocator locator) {
-		contextService = (IContextService) locator
-				.getService(IContextService.class);
-		contextService.addContextManagerListener(this);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextActivation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextActivation.java
deleted file mode 100644
index f199177..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextActivation.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.services.EvaluationResultCache;
-
-/**
- * <p>
- * A token representing the activation of a context. This token can later be
- * used to cancel that activation. Without this token, then the context will
- * only become inactive if the component in which the context was activated is
- * destroyed.
- * </p>
- * <p>
- * This caches the context id, so that they can later be identified.
- * </p>
- * <p>
- * Note: this class has a natural ordering that is inconsistent with equals.
- * </p>
- * 
- * @since 3.1
- */
-final class ContextActivation extends EvaluationResultCache implements
-		IContextActivation {
-
-	/**
-	 * The identifier for the context which should be active. This value is
-	 * never <code>null</code>.
-	 */
-	private final String contextId;
-
-	/**
-	 * The context service from which this context activation was requested.
-	 * This value is never <code>null</code>.
-	 */
-	private final IContextService contextService;
-
-	/**
-	 * Constructs a new instance of <code>ContextActivation</code>.
-	 * 
-	 * @param contextId
-	 *            The identifier for the context which should be activated. This
-	 *            value must not be <code>null</code>.
-	 * @param expression
-	 *            The expression that must evaluate to <code>true</code>
-	 *            before this handler is active. This value may be
-	 *            <code>null</code> if it is always active.
-	 * @param contextService
-	 *            The context service from which the handler activation was
-	 *            requested; must not be <code>null</code>.
-	 * @see ISources
-	 */
-	public ContextActivation(final String contextId,
-			final Expression expression, final IContextService contextService) {
-		super(expression);
-
-		if (contextId == null) {
-			throw new NullPointerException(
-					"The context identifier for a context activation cannot be null"); //$NON-NLS-1$
-		}
-
-		if (contextService == null) {
-			throw new NullPointerException(
-					"The context service for an activation cannot be null"); //$NON-NLS-1$
-		}
-
-		this.contextId = contextId;
-		this.contextService = contextService;
-	}
-
-	public final void clearActive() {
-		clearResult();
-	}
-
-	public final String getContextId() {
-		return contextId;
-	}
-
-	public final IContextService getContextService() {
-		return contextService;
-	}
-
-	public final boolean isActive(final IEvaluationContext context) {
-		return evaluate(context);
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("ContextActivation(contextId="); //$NON-NLS-1$
-		buffer.append(contextId);
-		buffer.append(",sourcePriority="); //$NON-NLS-1$
-		buffer.append(getSourcePriority());
-		buffer.append(')');
-
-		return buffer.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextAuthority.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextAuthority.java
deleted file mode 100644
index d5d01ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextAuthority.java
+++ /dev/null
@@ -1,823 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import java.util.ArrayList;
-import java.util.Collection;
-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 java.util.WeakHashMap;
-
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ActiveShellExpression;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.services.ExpressionAuthority;
-
-/**
- * <p>
- * A central authority for deciding activation of contexts. This authority
- * listens to a variety of incoming sources, and updates the underlying context
- * manager if changes occur.
- * </p>
- * 
- * @since 3.1
- */
-public final class ContextAuthority extends ExpressionAuthority {
-	public static final String DEFER_EVENTS = "org.eclipse.ui.internal.contexts.deferEvents"; //$NON-NLS-1$
-	public static final String SEND_EVENTS = "org.eclipse.ui.internal.contexts.sendEvents"; //$NON-NLS-1$
-
-
-	/**
-	 * The default size of the set containing the activations to recompute. This
-	 * is more than enough to cover the average case.
-	 */
-	private static final int ACTIVATIONS_TO_RECOMPUTE_SIZE = 4;
-
-	/**
-	 * Whether the context authority should kick into debugging mode. This
-	 * causes the unresolvable handler conflicts to be printed to the console.
-	 */
-	private static final boolean DEBUG = Policy.DEBUG_CONTEXTS;
-
-	/**
-	 * Whether the performance information should be printed about the
-	 * performance of the context authority.
-	 */
-	private static final boolean DEBUG_PERFORMANCE = Policy.DEBUG_CONTEXTS_PERFORMANCE;
-
-	/**
-	 * The name of the data tag containing the dispose listener information.
-	 */
-	private static final String DISPOSE_LISTENER = "org.eclipse.ui.internal.contexts.ContextAuthority"; //$NON-NLS-1$
-
-	/**
-	 * The component name to print when displaying tracing information.
-	 */
-	private static final String TRACING_COMPONENT = "CONTEXTS"; //$NON-NLS-1$
-
-	/**
-	 * A bucket sort of the context activations based on source priority. Each
-	 * activation will appear only once per set, but may appear in multiple
-	 * sets. If no activations are defined for a particular priority level, then
-	 * the array at that index will only contain <code>null</code>.
-	 */
-	private final Set[] activationsBySourcePriority = new Set[33];
-
-	/**
-	 * This is a map of context activations (<code>Collection</code> of
-	 * <code>IContextActivation</code>) sorted by context identifier (<code>String</code>).
-	 * If there is only one context activation for a context, then the
-	 * <code>Collection</code> is replaced by a
-	 * <code>IContextActivation</code>. If there is no activation, the entry
-	 * should be removed entirely.
-	 */
-	private final Map contextActivationsByContextId = new HashMap();
-
-	/**
-	 * The context manager that should be updated when the contexts are
-	 * changing.
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * The context service that should be used for authority-managed
-	 * shell-related contexts. This value is never <code>null</code>.
-	 */
-	private final IContextService contextService;
-
-	/**
-	 * This is a map of shell to a list of activations. When a shell is
-	 * registered, it is added to this map with the list of activation that
-	 * should be submitted when the shell is active. When the shell is
-	 * deactivated, this same list should be withdrawn. A shell is removed from
-	 * this map using the {@link #unregisterShell(Shell)}method. This value may
-	 * be empty, but is never <code>null</code>. The <code>null</code> key
-	 * is reserved for active shells that have not been registered but have a
-	 * parent (i.e., default dialog service).
-	 */
-	private final Map registeredWindows = new WeakHashMap();
-
-	/**
-	 * Constructs a new instance of <code>ContextAuthority</code>.
-	 * 
-	 * @param contextManager
-	 *            The context manager from which contexts can be retrieved (to
-	 *            update their active state); must not be <code>null</code>.
-	 * @param contextService
-	 *            The workbench context service for which this authority is
-	 *            acting. This allows the authority to manage shell-specific
-	 *            contexts. This value must not be <code>null</code>.
-	 */
-	ContextAuthority(final ContextManager contextManager,
-			final IContextService contextService) {
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"The context authority needs a context manager"); //$NON-NLS-1$
-		}
-		if (contextService == null) {
-			throw new NullPointerException(
-					"The context authority needs an evaluation context"); //$NON-NLS-1$
-		}
-
-		this.contextManager = contextManager;
-		this.contextService = contextService;
-	}
-
-	/**
-	 * Activates a context on the workbench. This will add it to a master list.
-	 * 
-	 * @param activation
-	 *            The activation; must not be <code>null</code>.
-	 */
-	final void activateContext(final IContextActivation activation) {
-		// First we update the contextActivationsByContextId map.
-		final String contextId = activation.getContextId();
-		if (DEFER_EVENTS.equals(contextId) || SEND_EVENTS.equals(contextId)) {
-			contextManager.addActiveContext(contextId);
-			return;
-		}
-		final Object value = contextActivationsByContextId.get(contextId);
-		if (value instanceof Collection) {
-			final Collection contextActivations = (Collection) value;
-			if (!contextActivations.contains(activation)) {
-				contextActivations.add(activation);
-				updateContext(contextId, containsActive(contextActivations));
-			}
-		} else if (value instanceof IContextActivation) {
-			if (value != activation) {
-				final Collection contextActivations = new ArrayList(2);
-				contextActivations.add(value);
-				contextActivations.add(activation);
-				contextActivationsByContextId
-						.put(contextId, contextActivations);
-				updateContext(contextId, containsActive(contextActivations));
-			}
-		} else {
-			contextActivationsByContextId.put(contextId, activation);
-			updateContext(contextId, evaluate(activation));
-		}
-
-		// Next we update the source priority bucket sort of activations.
-		final int sourcePriority = activation.getSourcePriority();
-		for (int i = 1; i <= 32; i++) {
-			if ((sourcePriority & (1 << i)) != 0) {
-				Set activations = activationsBySourcePriority[i];
-				if (activations == null) {
-					activations = new HashSet(1);
-					activationsBySourcePriority[i] = activations;
-				}
-				activations.add(activation);
-			}
-		}
-	}
-
-	/**
-	 * Checks whether the new active shell is registered. If it is already
-	 * registered, then it does no work. If it is not registered, then it checks
-	 * what type of contexts the shell should have by default. This is
-	 * determined by parenting. A shell with no parent receives no contexts. A
-	 * shell with a parent, receives the dialog contexts.
-	 * 
-	 * @param newShell
-	 *            The newly active shell; may be <code>null</code> or
-	 *            disposed.
-	 * @param oldShell
-	 *            The previously active shell; may be <code>null</code> or
-	 *            disposed.
-	 */
-	private final void checkWindowType(final Shell newShell,
-			final Shell oldShell) {
-		/*
-		 * If the previous active shell was recognized as a dialog by default,
-		 * then remove its submissions.
-		 */
-		Collection oldActivations = (Collection) registeredWindows
-				.get(oldShell);
-		if (oldActivations == null) {
-			/*
-			 * The old shell wasn't registered. So, we need to check if it was
-			 * considered a dialog by default.
-			 */
-			oldActivations = (Collection) registeredWindows.get(null);
-			if (oldActivations != null) {
-				final Iterator oldActivationItr = oldActivations.iterator();
-				while (oldActivationItr.hasNext()) {
-					final IContextActivation activation = (IContextActivation) oldActivationItr
-							.next();
-					deactivateContext(activation);
-				}
-			}
-		}
-
-		/*
-		 * If the new active shell is recognized as a dialog by default, then
-		 * create some submissions, remember them, and submit them for
-		 * processing.
-		 */
-		if ((newShell != null) && (!newShell.isDisposed())) {
-			final Collection newActivations;
-
-			if ((newShell.getParent() != null)
-					&& (registeredWindows.get(newShell) == null)) {
-				// This is a dialog by default.
-				newActivations = new ArrayList();
-				final Expression expression = new ActiveShellExpression(
-						newShell);
-				final IContextActivation dialogWindowActivation = new ContextActivation(
-						IContextService.CONTEXT_ID_DIALOG_AND_WINDOW,
-						expression, contextService);
-				activateContext(dialogWindowActivation);
-				newActivations.add(dialogWindowActivation);
-				final IContextActivation dialogActivation = new ContextActivation(
-						IContextService.CONTEXT_ID_DIALOG, expression,
-						contextService);
-				activateContext(dialogActivation);
-				newActivations.add(dialogActivation);
-				registeredWindows.put(null, newActivations);
-
-				/*
-				 * Make sure the submissions will be removed in event of
-				 * disposal. This is really just a paranoid check. The
-				 * "oldSubmissions" code above should take care of this.
-				 */
-				newShell.addDisposeListener(new DisposeListener() {
-
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-					 */
-					public void widgetDisposed(DisposeEvent e) {
-						registeredWindows.remove(null);
-						if (!newShell.isDisposed()) {
-							newShell.removeDisposeListener(this);
-						}
-
-						/*
-						 * In the case where a dispose has happened, we are
-						 * expecting an activation event to arrive at some point
-						 * in the future. If we process the submissions now,
-						 * then we will update the activeShell before
-						 * checkWindowType is called. This means that dialogs
-						 * won't be recognized as dialogs.
-						 */
-						final Iterator newActivationItr = newActivations
-								.iterator();
-						while (newActivationItr.hasNext()) {
-							deactivateContext((IContextActivation) newActivationItr
-									.next());
-						}
-					}
-				});
-
-			} else {
-				// Shells that are not dialogs by default must register.
-				newActivations = null;
-
-			}
-		}
-	}
-
-	/**
-	 * Returns a subset of the given <code>activations</code> containing only
-	 * those that are active
-	 * 
-	 * @param activations
-	 *            The activations to trim; must not be <code>null</code>, but
-	 *            may be empty.
-	 * @return <code>true</code> if there is at least one active context;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean containsActive(final Collection activations) {
-		final Iterator activationItr = activations.iterator();
-		while (activationItr.hasNext()) {
-			final IContextActivation activation = (IContextActivation) activationItr
-					.next();
-			if (evaluate(activation)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Removes an activation for a context on the workbench. This will remove it
-	 * from the master list, and update the appropriate context, if necessary.
-	 * 
-	 * @param activation
-	 *            The activation; must not be <code>null</code>.
-	 */
-	final void deactivateContext(final IContextActivation activation) {
-		// First we update the handlerActivationsByCommandId map.
-		final String contextId = activation.getContextId();
-		if (DEFER_EVENTS.equals(contextId) || SEND_EVENTS.equals(contextId)) {
-			return;
-		}
-		final Object value = contextActivationsByContextId.get(contextId);
-		if (value instanceof Collection) {
-			final Collection contextActivations = (Collection) value;
-			if (contextActivations.contains(activation)) {
-				contextActivations.remove(activation);
-				if (contextActivations.isEmpty()) {
-					contextActivationsByContextId.remove(contextId);
-					updateContext(contextId, false);
-
-				} else if (contextActivations.size() == 1) {
-					final IContextActivation remainingActivation = (IContextActivation) contextActivations
-							.iterator().next();
-					contextActivationsByContextId.put(contextId,
-							remainingActivation);
-					updateContext(contextId, evaluate(remainingActivation));
-
-				} else {
-					updateContext(contextId, containsActive(contextActivations));
-				}
-			}
-		} else if (value instanceof IContextActivation) {
-			if (value == activation) {
-				contextActivationsByContextId.remove(contextId);
-				updateContext(contextId, false);
-			}
-		}
-
-		// Next we update the source priority bucket sort of activations.
-		final int sourcePriority = activation.getSourcePriority();
-		for (int i = 1; i <= 32; i++) {
-			if ((sourcePriority & (1 << i)) != 0) {
-				final Set activations = activationsBySourcePriority[i];
-				if (activations == null) {
-					continue;
-				}
-				activations.remove(activation);
-				if (activations.isEmpty()) {
-					activationsBySourcePriority[i] = null;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns the currently active shell.
-	 * 
-	 * @return The currently active shell; may be <code>null</code>.
-	 */
-	final Shell getActiveShell() {
-		return (Shell) getVariable(ISources.ACTIVE_SHELL_NAME);
-	}
-
-	/**
-	 * Returns the shell type for the given shell.
-	 * 
-	 * @param shell
-	 *            The shell for which the type should be determined. If this
-	 *            value is <code>null</code>, then
-	 *            <code>IWorkbenchContextSupport.TYPE_NONE</code> is returned.
-	 * @return <code>IWorkbenchContextSupport.TYPE_WINDOW</code>,
-	 *         <code>IWorkbenchContextSupport.TYPE_DIALOG</code>, or
-	 *         <code>IWorkbenchContextSupport.TYPE_NONE</code>.
-	 */
-	public final int getShellType(final Shell shell) {
-		// If the shell is null, then return none.
-		if (shell == null) {
-			return IContextService.TYPE_NONE;
-		}
-
-		final Collection activations = (Collection) registeredWindows
-				.get(shell);
-		if (activations != null) {
-			// The shell is registered, so check what type it was registered as.
-			if (activations.isEmpty()) {
-				// It was registered as none.
-				return IContextService.TYPE_NONE;
-			}
-
-			// Look for the right type of context id.
-			final Iterator activationItr = activations.iterator();
-			while (activationItr.hasNext()) {
-				final IContextActivation activation = (IContextActivation) activationItr
-						.next();
-				final String contextId = activation.getContextId();
-				if (contextId == IContextService.CONTEXT_ID_DIALOG) {
-					return IContextService.TYPE_DIALOG;
-				} else if (contextId == IContextService.CONTEXT_ID_WINDOW) {
-					return IContextService.TYPE_WINDOW;
-				}
-			}
-
-			// This shouldn't be possible.
-			Assert
-					.isTrue(
-							false,
-							"A registered shell should have at least one submission matching TYPE_WINDOW or TYPE_DIALOG"); //$NON-NLS-1$
-			return IContextService.TYPE_NONE; // not reachable
-
-		} else if (shell.getParent() != null) {
-			/*
-			 * The shell is not registered, but it has a parent. It is therefore
-			 * considered a dialog by default.
-			 */
-			return IContextService.TYPE_DIALOG;
-
-		} else {
-			/*
-			 * The shell is not registered, but has no parent. It gets no key
-			 * bindings.
-			 */
-			return IContextService.TYPE_NONE;
-		}
-	}
-
-	/**
-	 * <p>
-	 * Registers a shell to automatically promote or demote some basic types of
-	 * contexts. The "In Dialogs" and "In Windows" contexts are provided by the
-	 * system. This a convenience method to ensure that these contexts are
-	 * promoted when the given is shell is active.
-	 * </p>
-	 * <p>
-	 * If a shell is registered as a window, then the "In Windows" context is
-	 * enabled when that shell is active. If a shell is registered as a dialog --
-	 * or is not registered, but has a parent shell -- then the "In Dialogs"
-	 * context is enabled when that shell is active. If the shell is registered
-	 * as none -- or is not registered, but has no parent shell -- then the
-	 * neither of the contexts will be enabled (by us -- someone else can always
-	 * enabled them).
-	 * </p>
-	 * <p>
-	 * If the provided shell has already been registered, then this method will
-	 * change the registration.
-	 * </p>
-	 * 
-	 * @param shell
-	 *            The shell to register for key bindings; must not be
-	 *            <code>null</code>.
-	 * @param type
-	 *            The type of shell being registered. This value must be one of
-	 *            the constants given in this interface.
-	 * 
-	 * @return <code>true</code> if the shell had already been registered
-	 *         (i.e., the registration has changed); <code>false</code>
-	 *         otherwise.
-	 */
-	public final boolean registerShell(final Shell shell, final int type) {
-		// We do not allow null shell registration. It is reserved.
-		if (shell == null) {
-			throw new NullPointerException("The shell was null"); //$NON-NLS-1$
-		}
-
-		// Debugging output
-		if (DEBUG) {
-			final StringBuffer buffer = new StringBuffer("register shell '"); //$NON-NLS-1$
-			buffer.append(shell);
-			buffer.append("' as "); //$NON-NLS-1$
-			switch (type) {
-			case IContextService.TYPE_DIALOG:
-				buffer.append("dialog"); //$NON-NLS-1$
-				break;
-			case IContextService.TYPE_WINDOW:
-				buffer.append("window"); //$NON-NLS-1$
-				break;
-			case IContextService.TYPE_NONE:
-				buffer.append("none"); //$NON-NLS-1$
-				break;
-			default:
-				buffer.append("unknown"); //$NON-NLS-1$
-				break;
-			}
-			Tracing.printTrace(TRACING_COMPONENT, buffer.toString());
-		}
-
-		// Build the list of submissions.
-		final List activations = new ArrayList();
-		Expression expression;
-		IContextActivation dialogWindowActivation;
-		switch (type) {
-		case IContextService.TYPE_DIALOG:
-			expression = new ActiveShellExpression(shell);
-			dialogWindowActivation = new ContextActivation(
-					IContextService.CONTEXT_ID_DIALOG_AND_WINDOW, expression,
-					contextService);
-			activateContext(dialogWindowActivation);
-			activations.add(dialogWindowActivation);
-			final IContextActivation dialogActivation = new ContextActivation(
-					IContextService.CONTEXT_ID_DIALOG, expression,
-					contextService);
-			activateContext(dialogActivation);
-			activations.add(dialogActivation);
-			break;
-		case IContextService.TYPE_NONE:
-			break;
-		case IContextService.TYPE_WINDOW:
-			expression = new ActiveShellExpression(shell);
-			dialogWindowActivation = new ContextActivation(
-					IContextService.CONTEXT_ID_DIALOG_AND_WINDOW, expression,
-					contextService);
-			activateContext(dialogWindowActivation);
-			activations.add(dialogWindowActivation);
-			final IContextActivation windowActivation = new ContextActivation(
-					IContextService.CONTEXT_ID_WINDOW, expression,
-					contextService);
-			activateContext(windowActivation);
-			activations.add(windowActivation);
-			break;
-		default:
-			throw new IllegalArgumentException("The type is not recognized: " //$NON-NLS-1$
-					+ type);
-		}
-
-		// Check to see if the activations are already present.
-		boolean returnValue = false;
-		final Collection previousActivations = (Collection) registeredWindows
-				.get(shell);
-		if (previousActivations != null) {
-			returnValue = true;
-			final Iterator previousActivationItr = previousActivations
-					.iterator();
-			while (previousActivationItr.hasNext()) {
-				final IContextActivation activation = (IContextActivation) previousActivationItr
-						.next();
-				deactivateContext(activation);
-			}
-		}
-
-		// Add the new submissions, and force some reprocessing to occur.
-		registeredWindows.put(shell, activations);
-
-		/*
-		 * Remember the dispose listener so that we can remove it later if we
-		 * unregister the shell.
-		 */
-		final DisposeListener shellDisposeListener = new DisposeListener() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-			 */
-			public void widgetDisposed(DisposeEvent e) {
-				registeredWindows.remove(shell);
-				if (!shell.isDisposed()) {
-					shell.removeDisposeListener(this);
-				}
-
-				/*
-				 * In the case where a dispose has happened, we are expecting an
-				 * activation event to arrive at some point in the future. If we
-				 * process the submissions now, then we will update the
-				 * activeShell before checkWindowType is called. This means that
-				 * dialogs won't be recognized as dialogs.
-				 */
-				final Iterator activationItr = activations.iterator();
-				while (activationItr.hasNext()) {
-					deactivateContext((IContextActivation) activationItr.next());
-				}
-			}
-		};
-
-		// Make sure the submissions will be removed in event of disposal.
-		shell.addDisposeListener(shellDisposeListener);
-		shell.setData(DISPOSE_LISTENER, shellDisposeListener);
-
-		return returnValue;
-	}
-
-	/**
-	 * Carries out the actual source change notification. It assumed that by the
-	 * time this method is called, <code>context</code> is up-to-date with the
-	 * current state of the application.
-	 * 
-	 * @param sourcePriority
-	 *            A bit mask of all the source priorities that have changed.
-	 */
-	protected final void sourceChanged(final int sourcePriority) {
-		// If tracing, then track how long it takes to process the activations.
-		long startTime = 0L;
-		if (DEBUG_PERFORMANCE) {
-			startTime = System.currentTimeMillis();
-		}
-
-		/*
-		 * In this first phase, we cycle through all of the activations that
-		 * could have potentially changed. Each such activation is added to a
-		 * set for future processing. We add it to a set so that we avoid
-		 * handling any individual activation more than once.
-		 */
-		final Set activationsToRecompute = new HashSet(
-				ACTIVATIONS_TO_RECOMPUTE_SIZE);
-		for (int i = 1; i <= 32; i++) {
-			if ((sourcePriority & (1 << i)) != 0) {
-				final Collection activations = activationsBySourcePriority[i];
-				if (activations != null) {
-					final Iterator activationItr = activations.iterator();
-					while (activationItr.hasNext()) {
-						activationsToRecompute.add(activationItr.next());
-					}
-				}
-			}
-		}
-
-		/*
-		 * For every activation, we recompute its active state, and check
-		 * whether it has changed. If it has changed, then we take note of the
-		 * context identifier so we can update the context later.
-		 */
-		final Collection changedContextIds = new ArrayList(
-				activationsToRecompute.size());
-		final Iterator activationItr = activationsToRecompute.iterator();
-		while (activationItr.hasNext()) {
-			final IContextActivation activation = (IContextActivation) activationItr
-					.next();
-			final boolean currentActive = evaluate(activation);
-			activation.clearResult();
-			final boolean newActive = evaluate(activation);
-			if (newActive != currentActive) {
-				changedContextIds.add(activation.getContextId());
-			}
-		}
-
-		try {
-			contextManager.addActiveContext(DEFER_EVENTS);
-			/*
-			 * For every context identifier with a changed activation, we
-			 * resolve conflicts and trigger an update.
-			 */
-			final Iterator changedContextIdItr = changedContextIds.iterator();
-			while (changedContextIdItr.hasNext()) {
-				final String contextId = (String) changedContextIdItr.next();
-				final Object value = contextActivationsByContextId
-						.get(contextId);
-				if (value instanceof IContextActivation) {
-					final IContextActivation activation = (IContextActivation) value;
-					updateContext(contextId, evaluate(activation));
-				} else if (value instanceof Collection) {
-					updateContext(contextId, containsActive((Collection) value));
-				} else {
-					updateContext(contextId, false);
-				}
-			}
-		} finally {
-			contextManager.addActiveContext(SEND_EVENTS);
-		}
-
-		// If tracing performance, then print the results.
-		if (DEBUG_PERFORMANCE) {
-			final long elapsedTime = System.currentTimeMillis() - startTime;
-			final int size = activationsToRecompute.size();
-			if (size > 0) {
-				Tracing.printTrace(TRACING_COMPONENT, size
-						+ " activations recomputed in " + elapsedTime + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	/**
-	 * <p>
-	 * Unregisters a shell that was previously registered. After this method
-	 * completes, the shell will be treated as if it had never been registered
-	 * at all. If you have registered a shell, you should ensure that this
-	 * method is called when the shell is disposed. Otherwise, a potential
-	 * memory leak will exist.
-	 * </p>
-	 * <p>
-	 * If the shell was never registered, or if the shell is <code>null</code>,
-	 * then this method returns <code>false</code> and does nothing.
-	 * 
-	 * @param shell
-	 *            The shell to be unregistered; does nothing if this value is
-	 *            <code>null</code>.
-	 * 
-	 * @return <code>true</code> if the shell had been registered;
-	 *         <code>false</code> otherwise.
-	 */
-	public final boolean unregisterShell(final Shell shell) {
-		// Don't allow this method to play with the special null slot.
-		if (shell == null) {
-			return false;
-		}
-
-		/*
-		 * If we're unregistering the shell but we're not about to dispose it,
-		 * then we'll end up leaking the DisposeListener unless we remove it
-		 * here.
-		 */
-		if (!shell.isDisposed()) {
-			final DisposeListener oldListener = (DisposeListener) shell
-					.getData(DISPOSE_LISTENER);
-			if (oldListener != null) {
-				shell.removeDisposeListener(oldListener);
-			}
-		}
-
-		Collection previousActivations = (Collection) registeredWindows
-				.get(shell);
-		if (previousActivations != null) {
-			registeredWindows.remove(shell);
-
-			final Iterator previousActivationItr = previousActivations
-					.iterator();
-			while (previousActivationItr.hasNext()) {
-				final IContextActivation activation = (IContextActivation) previousActivationItr
-						.next();
-				deactivateContext(activation);
-			}
-			return true;
-		}
-
-		return false;
-	}
-
-	/**
-	 * Updates the context with the given context activation.
-	 * 
-	 * @param contextId
-	 *            The identifier of the context which should be updated; must
-	 *            not be <code>null</code>.
-	 * @param active
-	 *            Whether the context should be active; <code>false</code>
-	 *            otherwise.
-	 */
-	private final void updateContext(final String contextId,
-			final boolean active) {
-		if (active) {
-			contextManager.addActiveContext(contextId);
-		} else {
-			contextManager.removeActiveContext(contextId);
-		}
-	}
-
-	/**
-	 * Updates this authority's evaluation context. If the changed variable is
-	 * the <code>ISources.ACTIVE_SHELL_NAME</code> variable, then this also
-	 * triggers an update of the shell-specific contexts. For example, if a
-	 * dialog becomes active, then the dialog context will be activated by this
-	 * method.
-	 * 
-	 * @param name
-	 *            The name of the variable to update; must not be
-	 *            <code>null</code>.
-	 * @param value
-	 *            The new value of the variable. If this value is
-	 *            <code>null</code>, then the variable is removed.
-	 */
-	protected final void updateEvaluationContext(final String name,
-			final Object value) {
-		/*
-		 * Bug 84056. If we update the active workbench window, then we risk
-		 * falling back to that shell when the active shell has registered as
-		 * "none".
-		 */
-		if ((name != null)
-				&& (!ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME.equals(name))) {
-			/*
-			 * We need to track shell activation ourselves, as some special
-			 * contexts are automatically activated in response to different
-			 * types of shells becoming active.
-			 */
-			if (ISources.ACTIVE_SHELL_NAME.equals(name)) {
-				checkWindowType((Shell) value,
-						(Shell) getVariable(ISources.ACTIVE_SHELL_NAME));
-			}
-
-			// Update the evaluation context itself.
-			changeVariable(name, value);
-		}
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the contexts (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 */
-	final void updateShellKludge() {
-		updateCurrentState();
-		sourceChanged(ISources.ACTIVE_SHELL);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java
deleted file mode 100644
index 40d2a74..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextLegacyWrapper.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.contexts;
-
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.ui.contexts.IContext;
-import org.eclipse.ui.contexts.IContextListener;
-import org.eclipse.ui.contexts.NotDefinedException;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * This implements the old <code>IContext</code> interface based on the new
- * context implementation in <code>org.eclipse.ui.contexts</code>. This is a
- * wrapper.
- * 
- * @since 3.1
- */
-public class ContextLegacyWrapper implements IContext {
-
-	/**
-	 * The context manager that maintains the set of active contexts; must not
-	 * be <code>null</code>.
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * The wrapped instance of context. This value will never be
-	 * <code>null</code>.
-	 */
-	private final Context wrappedContext;
-
-	/**
-	 * Constructs a new instance of <code>ContextWrapper</code>.
-	 * 
-	 * @param context
-	 *            The context to wrapper; must not be <code>null</code>.
-	 * @param contextManager
-	 *            The context manager that maintains the set of active contexts;
-	 *            must not be <code>null</code>.
-	 */
-	public ContextLegacyWrapper(final Context context,
-			final ContextManager contextManager) {
-		if (context == null) {
-			throw new NullPointerException(
-					"A wrapper cannot be created on a null context"); //$NON-NLS-1$
-		}
-
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"A wrapper cannot be created with a null manager"); //$NON-NLS-1$
-		}
-
-		wrappedContext = context;
-		this.contextManager = contextManager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#addContextListener(org.eclipse.ui.contexts.IContextListener)
-	 */
-	public void addContextListener(IContextListener contextListener) {
-		final LegacyContextListenerWrapper wrapper = new LegacyContextListenerWrapper(
-				contextListener, contextManager, this);
-		wrappedContext.addContextListener(wrapper);
-
-		/*
-		 * We need to add the listener to the context manager as well, as only
-		 * the manager advertises changes to the enabled state.
-		 */
-		contextManager.addContextManagerListener(wrapper);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(T)
-	 */
-	public int compareTo(Object o) {
-		return Util
-				.compare(wrappedContext, ((ContextLegacyWrapper) o).wrappedContext);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#getId()
-	 */
-	public String getId() {
-		return wrappedContext.getId();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#getName()
-	 */
-	public String getName() throws NotDefinedException {
-		try {
-			return wrappedContext.getName();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#getParentId()
-	 */
-	public String getParentId() throws NotDefinedException {
-		try {
-			return wrappedContext.getParentId();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#isDefined()
-	 */
-	public boolean isDefined() {
-		return wrappedContext.isDefined();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#isEnabled()
-	 */
-	public boolean isEnabled() {
-		return contextManager.getActiveContextIds().contains(
-				wrappedContext.getId());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContext#removeContextListener(org.eclipse.ui.contexts.IContextListener)
-	 */
-	public void removeContextListener(IContextListener contextListener) {
-		final LegacyContextListenerWrapper wrapper = new LegacyContextListenerWrapper(
-				contextListener, contextManager, this);
-		wrappedContext.removeContextListener(wrapper);
-		contextManager.removeContextManagerListener(wrapper);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerFactory.java
deleted file mode 100644
index 464840d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import org.eclipse.core.commands.contexts.ContextManager;
-
-/**
- * This class allows clients to broker instances of <code>IContextManager</code>.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.0
- */
-public final class ContextManagerFactory {
-
-	/**
-	 * Creates a new instance of <code>ContextManagerWrapper</code>.
-	 * 
-	 * @param contextManager
-	 *            The context manager that this context manager wrapper should
-	 *            wrap; must not be <code>null</code>.
-	 * @return a new instance of <code>ContextManagerWrapper</code>. Clients
-	 *         should not make assumptions about the concrete implementation
-	 *         outside the contract of the interface. Guaranteed not to be
-	 *         <code>null</code>.
-	 */
-	public static final ContextManagerLegacyWrapper getContextManagerWrapper(
-			final ContextManager contextManager) {
-		return new ContextManagerLegacyWrapper(contextManager);
-	}
-
-	/**
-	 * This class should not be constructed.
-	 */
-	private ContextManagerFactory() {
-		// Should not be called.
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java
deleted file mode 100644
index 564a833..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextManagerLegacyWrapper.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.ui.contexts.ContextManagerEvent;
-import org.eclipse.ui.contexts.IContext;
-import org.eclipse.ui.contexts.IContextManager;
-import org.eclipse.ui.contexts.IContextManagerListener;
-
-/**
- * A wrapper around the new API that supports the old API. This manager also
- * adds support for reading from the registry.
- * 
- * @since 3.1
- */
-public final class ContextManagerLegacyWrapper implements
-		org.eclipse.core.commands.contexts.IContextManagerListener,
-		IContextManager {
-
-	/**
-	 * A comparator between context identifiers, that sorts them based on depth
-	 * within the tree. Context identifiers representing deeper items (i.e.,
-	 * items with more ancestors), have lesser values (i.e., would appear
-	 * earlier in a set).
-	 * 
-	 * @since 3.0
-	 */
-	private class ContextIdDepthComparator implements Comparator {
-
-		/**
-		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-		 */
-		public final int compare(final Object object1, final Object object2) {
-			final String contextId1 = (String) object1;
-			final String contextId2 = (String) object2;
-			Context context;
-			String parentId;
-
-			// Get the depth of the first context.
-			int depth1 = 0;
-			context = contextManager.getContext(contextId1);
-			try {
-				parentId = context.getParentId();
-				while (parentId != null) {
-					depth1++;
-					context = contextManager.getContext(parentId);
-					parentId = context.getParentId();
-				}
-			} catch (final NotDefinedException e) {
-				// Do nothing. Stop ascending the ancestry.
-			}
-
-			// Get the depth of the second context.
-			int depth2 = 0;
-			context = contextManager.getContext(contextId2);
-			try {
-				parentId = context.getParentId();
-				while (parentId != null) {
-					depth2++;
-					context = contextManager.getContext(parentId);
-					parentId = context.getParentId();
-				}
-			} catch (final NotDefinedException e) {
-				// Do nothing. Stop ascending the ancestry.
-			}
-
-			// If the contexts are equal depth, then use their identifier.
-			int compare = depth2 - depth1;
-			if (compare == 0) {
-				compare = contextId1.compareTo(contextId2);
-			}
-
-			return compare;
-		}
-	}
-
-	/**
-	 * A set that contains context identifiers (strings). The set is sorted
-	 * based on how many ancestors the corresponding contexts have. Contexts
-	 * with no parents appear last, while contexts with the most ancestors
-	 * appear first.
-	 * 
-	 * @since 3.0
-	 */
-	private class DepthSortedContextIdSet extends TreeSet {
-
-		/**
-		 * Generated serial version UID for this class.
-		 * 
-		 * @since 3.1
-		 */
-		private static final long serialVersionUID = 3257291326872892465L;
-
-		/**
-		 * Constructs a new instance of <code>DepthSortedContextIdSet</code>
-		 * with the set to be sorted.
-		 * 
-		 * @param contextIds
-		 *            A set of context identifiers (strings); this may contain
-		 *            <code>null</code> values. The set may not be
-		 *            <code>null</code>, but may be empty.
-		 */
-		private DepthSortedContextIdSet(final Set contextIds) {
-			super(new ContextIdDepthComparator());
-			addAll(contextIds);
-		}
-	}
-
-	private final ContextManager contextManager;
-
-	private List contextManagerListeners;
-
-	/**
-	 * Constructs a new instance of <code>MutableContextManager</code>. The
-	 * registry is created on the platform's extension registry.
-	 * 
-	 * @param contextManager
-	 *            The manager which will provided the real support; must not be
-	 *            <code>null</code>.
-	 */
-	public ContextManagerLegacyWrapper(ContextManager contextManager) {
-
-		if (contextManager == null) {
-			throw new NullPointerException("The context manager cannot be null"); //$NON-NLS-1$
-		}
-
-		this.contextManager = contextManager;
-		this.contextManager.addContextManagerListener(this);
-	}
-
-	public void addContextManagerListener(
-			IContextManagerListener contextManagerListener) {
-		if (contextManagerListener == null) {
-			throw new NullPointerException();
-		}
-
-		if (contextManagerListeners == null) {
-			contextManagerListeners = new ArrayList();
-		}
-
-		if (!contextManagerListeners.contains(contextManagerListener)) {
-			contextManagerListeners.add(contextManagerListener);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.contexts.IContextManagerListener#contextManagerChanged(org.eclipse.core.commands.contexts.ContextManagerEvent)
-	 */
-	public void contextManagerChanged(
-			org.eclipse.core.commands.contexts.ContextManagerEvent contextManagerEvent) {
-		final String contextId = contextManagerEvent.getContextId();
-		final boolean definedContextsChanged;
-		final Set previouslyDefinedContextIds;
-		if (contextId == null) {
-			definedContextsChanged = false;
-			previouslyDefinedContextIds = null;
-		} else {
-			definedContextsChanged = true;
-			previouslyDefinedContextIds = new HashSet();
-			previouslyDefinedContextIds.addAll(contextManager
-					.getDefinedContextIds());
-			if (contextManagerEvent.isContextDefined()) {
-				previouslyDefinedContextIds.remove(contextId);
-			} else {
-				previouslyDefinedContextIds.add(contextId);
-			}
-		}
-
-		fireContextManagerChanged(new ContextManagerEvent(this,
-				definedContextsChanged, contextManagerEvent
-						.isActiveContextsChanged(),
-				previouslyDefinedContextIds, contextManagerEvent
-						.getPreviouslyActiveContextIds()));
-
-	}
-
-	protected void fireContextManagerChanged(
-			ContextManagerEvent contextManagerEvent) {
-		if (contextManagerEvent == null) {
-			throw new NullPointerException();
-		}
-
-		if (contextManagerListeners != null) {
-			for (int i = 0; i < contextManagerListeners.size(); i++) {
-				((IContextManagerListener) contextManagerListeners.get(i))
-						.contextManagerChanged(contextManagerEvent);
-			}
-		}
-	}
-
-	public IContext getContext(String contextId) {
-		return new ContextLegacyWrapper(contextManager.getContext(contextId),
-				contextManager);
-	}
-
-	public SortedSet getDefinedContextIds() {
-		return new DepthSortedContextIdSet(contextManager
-				.getDefinedContextIds());
-	}
-
-	public SortedSet getEnabledContextIds() {
-		return new DepthSortedContextIdSet(contextManager.getActiveContextIds());
-	}
-
-	public void removeContextManagerListener(
-			IContextManagerListener contextManagerListener) {
-		if (contextManagerListener == null) {
-			throw new NullPointerException();
-		}
-
-		if (contextManagerListeners != null) {
-			contextManagerListeners.remove(contextManagerListener);
-		}
-	}
-
-	public void setEnabledContextIds(Set enabledContextIds) {
-		contextManager.setActiveContextIds(enabledContextIds);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextPersistence.java
deleted file mode 100644
index ef3ad9b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextPersistence.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.commands.common.HandleObject;
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.RegistryPersistence;
-
-/**
- * <p>
- * A static class for accessing the registry.
- * </p>
- * 
- * @since 3.1
- */
-final class ContextPersistence extends RegistryPersistence {
-
-	/**
-	 * The index of the context elements in the indexed array.
-	 * 
-	 * @see ContextPersistence#read()
-	 */
-	private static final int INDEX_CONTEXT_DEFINITIONS = 0;
-
-	/**
-	 * Reads all of the command definitions from the commands extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param contextManager
-	 *            The context manager to which the commands should be added;
-	 *            must not be <code>null</code>.
-	 */
-	private static final void readContextsFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final ContextManager contextManager) {
-		// Undefine all the previous handle objects.
-		final HandleObject[] handleObjects = contextManager
-				.getDefinedContexts();
-		if (handleObjects != null) {
-			for (int i = 0; i < handleObjects.length; i++) {
-				handleObjects[i].undefine();
-			}
-		}
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the command identifier.
-			final String contextId = readRequired(configurationElement, ATT_ID,
-					warningsToLog, "Contexts need an id"); //$NON-NLS-1$
-			if (contextId == null) {
-				continue;
-			}
-
-			// Read out the name.
-			final String name = readRequired(configurationElement, ATT_NAME,
-					warningsToLog, "Contexts need a name", //$NON-NLS-1$
-					contextId);
-			if (name == null) {
-				continue;
-			}
-
-			// Read out the description.
-			final String description = readOptional(configurationElement,
-					ATT_DESCRIPTION);
-
-			// Read out the parent id.
-			String parentId = configurationElement.getAttribute(ATT_PARENT_ID);
-			if ((parentId == null) || (parentId.length() == 0)) {
-				parentId = configurationElement.getAttribute(ATT_PARENT);
-				if ((parentId == null) || (parentId.length() == 0)) {
-					parentId = configurationElement
-							.getAttribute(ATT_PARENT_SCOPE);
-				}
-			}
-			if ((parentId != null) && (parentId.length() == 0)) {
-				parentId = null;
-			}
-
-			final Context context = contextManager.getContext(contextId);
-			context.define(name, description, parentId);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the contexts from the 'org.eclipse.ui.contexts', 'org.eclipse.ui.commands' and 'org.eclipse.ui.acceleratorScopes' extension points."); //$NON-NLS-1$
-	}
-
-	/**
-	 * The context manager for this instance; must not be <code>null</code>.
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * Constructs a new instance of <code>ContextPersistence</code>.
-	 */
-	ContextPersistence(final ContextManager contextManager) {
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"The context manager must not be null"); //$NON-NLS-1$
-		}
-		this.contextManager = contextManager;
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		final IExtensionDelta[] acceleratorScopeDeltas = event
-				.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_ACCELERATOR_SCOPES);
-		if (acceleratorScopeDeltas.length == 0) {
-			final IExtensionDelta[] contextDeltas = event.getExtensionDeltas(
-					PlatformUI.PLUGIN_ID,
-					IWorkbenchRegistryConstants.PL_CONTEXTS);
-			if (contextDeltas.length == 0) {
-				final IExtensionDelta[] commandDeltas = event
-						.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-								IWorkbenchRegistryConstants.PL_COMMANDS);
-				if (commandDeltas.length == 0) {
-					return false;
-				}
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Reads all of the contexts from the registry,
-	 * 
-	 * @param contextManager
-	 *            The context manager which should be populated with the values
-	 *            from the registry; must not be <code>null</code>.
-	 */
-	protected final void read() {
-		super.read();
-
-		// Create the extension registry mementos.
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		int contextDefinitionCount = 0;
-		final IConfigurationElement[][] indexedConfigurationElements = new IConfigurationElement[1][];
-
-		/*
-		 * Retrieve the accelerator scopes from the accelerator scopes extension
-		 * point.
-		 */
-		final IConfigurationElement[] acceleratorScopesExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_ACCELERATOR_SCOPES);
-		for (int i = 0; i < acceleratorScopesExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = acceleratorScopesExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_ACCELERATOR_SCOPE.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_CONTEXT_DEFINITIONS, contextDefinitionCount++);
-			}
-		}
-
-		/*
-		 * Retrieve the deprecated scopes and contexts from the commands
-		 * extension point.
-		 */
-		final IConfigurationElement[] commandsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_COMMANDS);
-		for (int i = 0; i < commandsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = commandsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_SCOPE.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_CONTEXT_DEFINITIONS, contextDefinitionCount++);
-			} else if (TAG_CONTEXT.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_CONTEXT_DEFINITIONS, contextDefinitionCount++);
-
-			}
-		}
-
-		/*
-		 * Retrieve the contexts from the contexts extension point.
-		 */
-		final IConfigurationElement[] contextsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_CONTEXTS);
-		for (int i = 0; i < contextsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = contextsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_CONTEXT.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_CONTEXT_DEFINITIONS, contextDefinitionCount++);
-			}
-		}
-
-		readContextsFromRegistry(
-				indexedConfigurationElements[INDEX_CONTEXT_DEFINITIONS],
-				contextDefinitionCount, contextManager);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextService.java
deleted file mode 100644
index 3fb9762..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextService.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.contexts;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-
-/**
- * <p>
- * Provides services related to contexts in the Eclipse workbench. This provides
- * access to contexts.
- * </p>
- * 
- * @since 3.1
- */
-public final class ContextService implements IContextService {
-
-	/**
-	 * The central authority for determining which context we should use.
-	 */
-	private final ContextAuthority contextAuthority;
-
-	/**
-	 * The context manager that supports this service. This value is never
-	 * <code>null</code>.
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * The persistence class for this context service.
-	 */
-	private final ContextPersistence contextPersistence;
-
-	/**
-	 * Constructs a new instance of <code>ContextService</code> using a
-	 * context manager.
-	 * 
-	 * @param contextManager
-	 *            The context manager to use; must not be <code>null</code>.
-	 */
-	public ContextService(final ContextManager contextManager) {
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"Cannot create a context service with a null manager"); //$NON-NLS-1$
-		}
-		this.contextManager = contextManager;
-		this.contextAuthority = new ContextAuthority(contextManager, this);
-		this.contextPersistence = new ContextPersistence(contextManager);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String)
-	 */
-	public final IContextActivation activateContext(final String contextId) {
-		return activateContext(contextId, null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String,
-	 *      org.eclipse.core.expressions.Expression)
-	 */
-	public final IContextActivation activateContext(final String contextId,
-			final Expression expression) {
-		final IContextActivation activation = new ContextActivation(contextId,
-				expression, this);
-		contextAuthority.activateContext(activation);
-		return activation;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String,
-	 *      org.eclipse.core.expressions.Expression, boolean)
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression, boolean global) {
-		return activateContext(contextId, expression);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String,
-	 *      org.eclipse.core.expressions.Expression, int)
-	 */
-	public final IContextActivation activateContext(final String contextId,
-			final Expression expression, final int sourcePriority) {
-		return activateContext(contextId, expression);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#addContextManagerListener(org.eclipse.core.commands.contexts.IContextManagerListener)
-	 */
-	public final void addContextManagerListener(
-			final IContextManagerListener listener) {
-		contextManager.addContextManagerListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IServiceWithSources#addSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public final void addSourceProvider(final ISourceProvider provider) {
-		contextAuthority.addSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#deactivateContext(org.eclipse.ui.contexts.IContextActivation)
-	 */
-	public final void deactivateContext(final IContextActivation activation) {
-		if (activation.getContextService() == this) {
-			contextAuthority.deactivateContext(activation);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#deactivateContexts(java.util.Collection)
-	 */
-	public final void deactivateContexts(final Collection activations) {
-		final Iterator activationItr = activations.iterator();
-		while (activationItr.hasNext()) {
-			final IContextActivation activation = (IContextActivation) activationItr
-					.next();
-			deactivateContext(activation);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public final void dispose() {
-		contextPersistence.dispose();
-		contextAuthority.dispose();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getActiveContextIds()
-	 */
-	public final Collection getActiveContextIds() {
-		return contextManager.getActiveContextIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getContext(java.lang.String)
-	 */
-	public final Context getContext(final String contextId) {
-		return contextManager.getContext(contextId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getDefinedContextIds()
-	 */
-	public final Collection getDefinedContextIds() {
-		return contextManager.getDefinedContextIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getDefinedContexts()
-	 */
-	public final Context[] getDefinedContexts() {
-		return contextManager.getDefinedContexts();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getShellType(org.eclipse.swt.widgets.Shell)
-	 */
-	public final int getShellType(final Shell shell) {
-		return contextAuthority.getShellType(shell);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#readRegistry()
-	 */
-	public final void readRegistry() {
-		contextPersistence.read();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#registerShell(org.eclipse.swt.widgets.Shell,
-	 *      int)
-	 */
-	public final boolean registerShell(final Shell shell, final int type) {
-		return contextAuthority.registerShell(shell, type);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#removeContextManagerListener(org.eclipse.core.commands.contexts.IContextManagerListener)
-	 */
-	public final void removeContextManagerListener(
-			final IContextManagerListener listener) {
-		contextManager.addContextManagerListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IServiceWithSources#removeSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public final void removeSourceProvider(final ISourceProvider provider) {
-		contextAuthority.removeSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#unregisterShell(org.eclipse.swt.widgets.Shell)
-	 */
-	public final boolean unregisterShell(final Shell shell) {
-		return contextAuthority.unregisterShell(shell);
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the contexts (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 */
-	public final void updateShellKludge() {
-		contextAuthority.updateShellKludge();
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the contexts (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 * 
-	 * @param shell
-	 *            The shell that should be considered active; must not be
-	 *            <code>null</code>.
-	 */
-	public final void updateShellKludge(final Shell shell) {
-		final Shell currentActiveShell = contextAuthority.getActiveShell();
-		if (currentActiveShell != shell) {
-			contextAuthority.sourceChanged(ISources.ACTIVE_SHELL,
-					ISources.ACTIVE_SHELL_NAME, shell);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextServiceFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextServiceFactory.java
deleted file mode 100644
index 11e657a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/ContextServiceFactory.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.expressions.ActivePartExpression;
-import org.eclipse.ui.internal.expressions.WorkbenchWindowExpression;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.4
- * 
- */
-public class ContextServiceFactory extends AbstractServiceFactory {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.services.AbstractServiceFactory#create(java.lang.Class,
-	 * org.eclipse.ui.services.IServiceLocator,
-	 * org.eclipse.ui.services.IServiceLocator)
-	 */
-	public Object create(Class serviceInterface, IServiceLocator parentLocator,
-			IServiceLocator locator) {
-		if (!IContextService.class.equals(serviceInterface)) {
-			return null;
-		}
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		final IWorkbench wb = wls.getWorkbench();
-		if (wb == null) {
-			return null;
-		}
-
-		Object parent = parentLocator.getService(serviceInterface);
-		if (parent == null) {
-			// we are registering the global services in the Workbench
-			return null;
-		}
-		final IWorkbenchWindow window = wls.getWorkbenchWindow();
-		final IWorkbenchPartSite site = wls.getPartSite();
-		if (site == null) {
-			Expression exp = new WorkbenchWindowExpression(window);
-			return new SlaveContextService((IContextService) parent, exp);
-		}
-		if (parent instanceof SlaveContextService) {
-			Expression exp = ((SlaveContextService) parent).fDefaultExpression;
-			if (exp instanceof ActivePartExpression) {
-				return new NestableContextService((IContextService) parent, exp);
-			}
-		}
-		Expression exp = new ActivePartExpression(site.getPart());
-		return new SlaveContextService((IContextService) parent, exp);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java
deleted file mode 100644
index d69379a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/LegacyContextListenerWrapper.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.contexts;
-
-import java.util.Set;
-
-import org.eclipse.core.commands.contexts.ContextEvent;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.commands.contexts.ContextManagerEvent;
-import org.eclipse.core.commands.contexts.IContextListener;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.ui.contexts.IContext;
-
-/**
- * <p>
- * This wraps an old context listener so it supports the new API. This is used
- * to support attaching old-style listens to the new context objects.
- * </p>
- * 
- * @since 3.1
- */
-public class LegacyContextListenerWrapper implements IContextListener,
-		IContextManagerListener {
-
-	/**
-	 * The legacy context that this listener would previously have been attached
-	 * to. This value is never <code>null</code>.
-	 */
-	private final IContext context;
-
-	/**
-	 * The context manager used for constructing the context wrapper when an
-	 * event occurs; must not be <code>null</code>.
-	 */
-	private final ContextManager contextManager;
-
-	/**
-	 * The listener to be wrapped. This value is never <code>null</code>.
-	 */
-	private final org.eclipse.ui.contexts.IContextListener wrappedListener;
-
-	/**
-	 * Constructs a new instance of <code>ContextListenerWrapper</code>.
-	 * 
-	 * @param listener
-	 *            The listener to be wrapped. Must not be <code>null</code>.
-	 * @param contextManager
-	 *            The context manager used for constructing the context wrapper
-	 *            when an event occurs; must not be <code>null</code>.
-	 * @param context
-	 *            The legacy context this listener will be listening to; must
-	 *            not be <code>null</code>.
-	 */
-	public LegacyContextListenerWrapper(
-			final org.eclipse.ui.contexts.IContextListener listener,
-			final ContextManager contextManager, final IContext context) {
-		if (listener == null) {
-			throw new NullPointerException(
-					"Cannot create a listener wrapper on a null listener"); //$NON-NLS-1$
-		}
-
-		if (contextManager == null) {
-			throw new NullPointerException(
-					"Cannot create a listener wrapper with a null context manager"); //$NON-NLS-1$
-		}
-
-		if (context == null) {
-			throw new NullPointerException(
-					"Cannot create a listener wrapper with a null context"); //$NON-NLS-1$
-		}
-
-		wrappedListener = listener;
-		this.contextManager = contextManager;
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.contexts.IContextListener#contextChanged(org.eclipse.core.commands.contexts.ContextEvent)
-	 */
-	public final void contextChanged(final ContextEvent contextEvent) {
-		wrappedListener
-				.contextChanged(new org.eclipse.ui.contexts.ContextEvent(
-						new ContextLegacyWrapper(contextEvent.getContext(),
-								contextManager), contextEvent
-								.isDefinedChanged(), false, contextEvent
-								.isNameChanged(), contextEvent
-								.isParentIdChanged()));
-	}
-
-	public final void contextManagerChanged(final ContextManagerEvent event) {
-		final String contextId = context.getId();
-		final boolean enabledChanged;
-		if (event.isActiveContextsChanged()) {
-			final Set previousContexts = event.getPreviouslyActiveContextIds();
-			final Set currentContexts = contextManager.getActiveContextIds();
-			if ((previousContexts != null)
-					&& (previousContexts.contains(contextId))
-					&& ((currentContexts == null) || (currentContexts
-							.contains(contextId)))) {
-				enabledChanged = true;
-			} else if ((currentContexts != null)
-					&& (currentContexts.contains(contextId))
-					&& ((previousContexts == null) || (previousContexts
-							.contains(contextId)))) {
-				enabledChanged = true;
-			} else {
-				enabledChanged = false;
-			}
-		} else {
-			enabledChanged = false;
-		}
-
-		wrappedListener
-				.contextChanged(new org.eclipse.ui.contexts.ContextEvent(
-						context, false, enabledChanged, false, false));
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyContextListenerWrapper) {
-			final LegacyContextListenerWrapper other = (LegacyContextListenerWrapper) object;
-			return wrappedListener.equals(other.wrappedListener);
-		}
-
-		if (object instanceof org.eclipse.ui.contexts.IContextListener) {
-			final org.eclipse.ui.contexts.IContextListener other = (org.eclipse.ui.contexts.IContextListener) object;
-			return wrappedListener.equals(other);
-		}
-
-		return false;
-	}
-
-	public final int hashCode() {
-		return wrappedListener.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/NestableContextService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/NestableContextService.java
deleted file mode 100644
index b557146..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/NestableContextService.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import java.util.Iterator;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.services.INestable;
-
-/**
- * <p>
- * A context service which delegates almost all responsibility to the parent
- * service. This service is capable of being nested inside a component that is
- * not recognized by the "source" event mechanism.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public class NestableContextService extends SlaveContextService implements
-		INestable {
-	/**
-	 * Maintain the state of the context service.
-	 */
-	private boolean fActive;
-
-	/**
-	 * Construct the new nested slave context.
-	 * 
-	 * @param parentService
-	 *            the parent context service; must not be <code>null</code>.
-	 * @param defaultExpression
-	 *            A default expression to use to determine viability. It's
-	 *            mainly used for conflict resolution. It can be
-	 *            <code>null</code>.
-	 */
-	public NestableContextService(IContextService parentService,
-			Expression defaultExpression) {
-		super(parentService, defaultExpression);
-		fActive = false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.contexts.SlaveContextService#doActivateContext(org.eclipse.ui.contexts.IContextActivation)
-	 */
-	protected IContextActivation doActivateContext(IContextActivation activation) {
-		if (fActive) {
-			return super.doActivateContext(activation);
-		}
-		fLocalActivations.put(activation, null);
-		return activation;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.INestable#activate()
-	 */
-	public void activate() {
-		if (fActive) {
-			return;
-		}
-
-		Iterator c = fLocalActivations.keySet().iterator();
-		while (c.hasNext()) {
-			IContextActivation activation = (IContextActivation) c.next();
-			super.doActivateContext(activation);
-		}
-		fActive = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.INestable#deactivate()
-	 */
-	public void deactivate() {
-		if (!fActive) {
-			return;
-		}
-		deactivateContexts(fParentActivations);
-		fParentActivations.clear();
-
-		Iterator c = fLocalActivations.keySet().iterator();
-		while (c.hasNext()) {
-			fLocalActivations.put(c.next(), null);
-		}
-		fActive = false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
deleted file mode 100644
index 7422e28..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.contexts;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.IContextManagerListener;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.expressions.AndExpression;
-
-/**
- * A context service which delegates almost all responsibility to the parent
- * service.
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- * 
- */
-public class SlaveContextService implements IContextService {
-
-	/**
-	 * The parent context service, which is never <code>null</code>.
-	 */
-	protected IContextService fParentService;
-
-	/**
-	 * The default expression used when {@link #activateContext(String) } is
-	 * called. Contexts contributed that use this expression will only be active
-	 * with this service is active.
-	 */
-	protected Expression fDefaultExpression;
-
-	/**
-	 * Our contexts that are currently active with the parent context service.
-	 */
-	protected Set fParentActivations;
-
-	/**
-	 * A map of the local activation to the parent activations. If this service
-	 * is inactive, then all parent activations are <code>null</code>.
-	 * Otherwise, they point to the corresponding activation in the parent
-	 * service.
-	 */
-	protected Map fLocalActivations;
-
-	/**
-	 * A collection of context manager listeners. The listeners are not
-	 * activated/deactivated, but they will be removed when this service is
-	 * disposed.
-	 */
-	private Collection fContextManagerListeners;
-
-	/**
-	 * A collection of source providers. The listeners are not
-	 * activated/deactivated, but they will be removed when this service is
-	 * disposed.
-	 */
-	private Collection fSourceProviders;
-
-	/**
-	 * A collection of shells registered through this service. The listeners are
-	 * not activated/deactivated, but they will be removed when this service is
-	 * disposed.
-	 */
-	private Collection fRegisteredShells;
-
-	/**
-	 * Construct the new slave.
-	 * 
-	 * @param parentService
-	 *            the parent context service; must not be <code>null</code>.
-	 * @param defaultExpression
-	 *            A default expression to use to determine viability. It's
-	 *            mainly used for conflict resolution. It can be
-	 *            <code>null</code>.
-	 */
-	public SlaveContextService(IContextService parentService,
-			Expression defaultExpression) {
-		if (parentService == null) {
-			throw new NullPointerException(
-					"The parent context service must not be null"); //$NON-NLS-1$
-		}
-		fParentService = parentService;
-		fDefaultExpression = defaultExpression;
-		fParentActivations = new HashSet();
-		fLocalActivations = new HashMap();
-		fContextManagerListeners = new ArrayList();
-		fSourceProviders = new ArrayList();
-		fRegisteredShells = new ArrayList();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String)
-	 */
-	public IContextActivation activateContext(String contextId) {
-		ContextActivation activation = new ContextActivation(contextId,
-				fDefaultExpression, this);
-		return doActivateContext(activation);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String,
-	 *      org.eclipse.core.expressions.Expression)
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression) {
-		return activateContext(contextId, expression, false);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String,
-	 *      org.eclipse.core.expressions.Expression, boolean)
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression, boolean global) {
-		if (global) {
-			IContextActivation activation = fParentService.activateContext(
-					contextId, expression, global);
-			fParentActivations.add(activation);
-			return activation;
-		}
-		AndExpression andExpression = null;
-		if (expression instanceof AndExpression) {
-			andExpression = (AndExpression) expression;
-		} else {
-			andExpression = new AndExpression();
-			if (expression!=null) {
-				andExpression.add(expression);
-			}
-		}
-		if (fDefaultExpression!=null) {
-			andExpression.add(fDefaultExpression);
-		}
-		ContextActivation activation = new ContextActivation(contextId,
-				andExpression, this);
-		return doActivateContext(activation);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#activateContext(java.lang.String,
-	 *      org.eclipse.core.expressions.Expression, int)
-	 */
-	public IContextActivation activateContext(String contextId,
-			Expression expression, int sourcePriorities) {
-		return activateContext(contextId, expression);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#addContextManagerListener(org.eclipse.core.commands.contexts.IContextManagerListener)
-	 */
-	public void addContextManagerListener(IContextManagerListener listener) {
-		if (!fContextManagerListeners.contains(listener)) {
-			fContextManagerListeners.add(listener);
-		}
-		fParentService.addContextManagerListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IServiceWithSources#addSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public void addSourceProvider(ISourceProvider provider) {
-		if (!fSourceProviders.contains(provider)) {
-			fSourceProviders.add(provider);
-		}
-		fParentService.addSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#deactivateContext(org.eclipse.ui.contexts.IContextActivation)
-	 */
-	public void deactivateContext(IContextActivation activation) {
-		IContextActivation parentActivation = null;
-		if (fLocalActivations.containsKey(activation)) {
-			parentActivation = (IContextActivation) fLocalActivations
-					.remove(activation);
-		} else {
-			parentActivation = activation;
-		}
-		if (parentActivation != null) {
-			fParentService.deactivateContext(parentActivation);
-			fParentActivations.remove(parentActivation);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#deactivateContexts(java.util.Collection)
-	 */
-	public void deactivateContexts(Collection activations) {
-		Object[] array = activations.toArray();
-		for (int i = 0; i < array.length; i++) {
-			deactivateContext((IContextActivation) array[i]);
-			array[i] = null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		fParentService.deactivateContexts(fParentActivations);
-		fParentActivations.clear();
-		fLocalActivations.clear();
-		
-		// Remove any "resource", like listeners, that were associated
-		// with this service.
-		if (!fContextManagerListeners.isEmpty()) {
-			Object[] array = fContextManagerListeners.toArray();
-			for (int i = 0; i < array.length; i++) {
-				removeContextManagerListener((IContextManagerListener) array[i]);
-			}
-			fContextManagerListeners.clear();
-		}
-		if (!fSourceProviders.isEmpty()) {
-			Object[] array = fSourceProviders.toArray();
-			for (int i = 0; i < array.length; i++) {
-				removeSourceProvider((ISourceProvider) array[i]);
-			}
-			fSourceProviders.clear();
-		}
-		if (!fRegisteredShells.isEmpty()) {
-			Object[] array = fRegisteredShells.toArray();
-			for (int i = 0; i < array.length; i++) {
-				unregisterShell((Shell) array[i]);
-			}
-			fRegisteredShells.clear();
-		}
-	}
-
-	/**
-	 * Activate the context with respect to this slave service.
-	 * 
-	 * @param contextId
-	 *            the context id
-	 * @param expression
-	 *            the expression to use
-	 * @return the activated context
-	 */
-	protected IContextActivation doActivateContext(IContextActivation activation) {
-		IContextActivation parentActivation = fParentService.activateContext(
-				activation.getContextId(), activation.getExpression());
-		fParentActivations.add(parentActivation);
-		fLocalActivations.put(activation, parentActivation);
-		return activation;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getActiveContextIds()
-	 */
-	public Collection getActiveContextIds() {
-		return fParentService.getActiveContextIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getContext(java.lang.String)
-	 */
-	public Context getContext(String contextId) {
-		return fParentService.getContext(contextId);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getDefinedContextIds()
-	 */
-	public Collection getDefinedContextIds() {
-		return fParentService.getDefinedContextIds();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getDefinedContexts()
-	 */
-	public Context[] getDefinedContexts() {
-		return fParentService.getDefinedContexts();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#getShellType(org.eclipse.swt.widgets.Shell)
-	 */
-	public int getShellType(Shell shell) {
-		return fParentService.getShellType(shell);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#readRegistry()
-	 */
-	public void readRegistry() {
-		fParentService.readRegistry();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#registerShell(org.eclipse.swt.widgets.Shell,
-	 *      int)
-	 */
-	public boolean registerShell(Shell shell, int type) {
-		if (!fRegisteredShells.contains(shell)) {
-			fRegisteredShells.add(shell);
-		}
-		return fParentService.registerShell(shell, type);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#removeContextManagerListener(org.eclipse.core.commands.contexts.IContextManagerListener)
-	 */
-	public void removeContextManagerListener(IContextManagerListener listener) {
-		fContextManagerListeners.remove(listener);
-		fParentService.removeContextManagerListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IServiceWithSources#removeSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public void removeSourceProvider(ISourceProvider provider) {
-		fSourceProviders.remove(provider);
-		fParentService.removeSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.contexts.IContextService#unregisterShell(org.eclipse.swt.widgets.Shell)
-	 */
-	public boolean unregisterShell(Shell shell) {
-		fRegisteredShells.remove(shell);
-		return fParentService.unregisterShell(shell);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java
deleted file mode 100644
index 219fa3a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/WorkbenchContextSupport.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.contexts;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.LegacyHandlerSubmissionExpression;
-import org.eclipse.ui.contexts.EnabledSubmission;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextManager;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.contexts.IWorkbenchContextSupport;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * Provides support for contexts within the workbench -- including key bindings,
- * and some default contexts for shell types.
- * 
- * @since 3.0
- */
-public class WorkbenchContextSupport implements IWorkbenchContextSupport {
-
-	/**
-	 * The map of activations that have been given to the handler service (<code>IHandlerActivation</code>),
-	 * indexed by the submissions (<code>HandlerSubmission</code>). This map
-	 * should be <code>null</code> if there are no such activations.
-	 */
-	private Map activationsBySubmission = null;
-
-	/**
-	 * The binding service for the workbench. This value is never
-	 * <code>null</code>.
-	 */
-	private IBindingService bindingService;
-
-	/**
-	 * The context service for the workbench. This value is never
-	 * <code>null</code>.
-	 */
-	private IContextService contextService;
-
-	/**
-	 * The legacy context manager supported by this application.
-	 */
-	private ContextManagerLegacyWrapper contextManagerWrapper;
-
-	/**
-	 * The workbench for which context support is being provided. This value
-	 * must not be <code>null</code>.
-	 */
-	private final Workbench workbench;
-
-	/**
-	 * Constructs a new instance of <code>WorkbenchCommandSupport</code>.
-	 * This attaches the key binding support, and adds a global shell activation
-	 * filter.
-	 * 
-	 * @param workbenchToSupport
-	 *            The workbench that needs to be supported by this instance;
-	 *            must not be <code>null</code>.
-	 * @param contextManager
-	 *            The context manager to be wrappered; must not be
-	 *            <code>null</code>.
-	 */
-	public WorkbenchContextSupport(final Workbench workbenchToSupport,
-			final ContextManager contextManager) {
-		workbench = workbenchToSupport;
-		contextService = (IContextService) workbench.getService(IContextService.class);
-		bindingService = (IBindingService) workbench.getService(IBindingService.class);
-		contextManagerWrapper = ContextManagerFactory
-				.getContextManagerWrapper(contextManager);
-	}
-
-	public final void addEnabledSubmission(
-			final EnabledSubmission enabledSubmission) {
-		/*
-		 * Create the source priorities based on the conditions mentioned in the
-		 * submission.
-		 */
-		int sourcePriorities = 0;
-		if (enabledSubmission.getActivePartId() != null) {
-			sourcePriorities |= ISources.ACTIVE_PART_ID;
-		}
-		if (enabledSubmission.getActiveShell() != null) {
-			sourcePriorities |= (ISources.ACTIVE_SHELL | ISources.ACTIVE_WORKBENCH_WINDOW);
-		}
-		if (enabledSubmission.getActiveWorkbenchPartSite() != null) {
-			sourcePriorities |= ISources.ACTIVE_SITE;
-		}
-
-		final IContextActivation activation = contextService.activateContext(
-				enabledSubmission.getContextId(),
-				new LegacyHandlerSubmissionExpression(enabledSubmission
-						.getActivePartId(), enabledSubmission.getActiveShell(),
-						enabledSubmission.getActiveWorkbenchPartSite()));
-		if (activationsBySubmission == null) {
-			activationsBySubmission = new HashMap();
-		}
-		activationsBySubmission.put(enabledSubmission, activation);
-	}
-
-	public final void addEnabledSubmissions(final Collection enabledSubmissions) {
-		final Iterator submissionItr = enabledSubmissions.iterator();
-		while (submissionItr.hasNext()) {
-			addEnabledSubmission((EnabledSubmission) submissionItr.next());
-		}
-	}
-
-	public final IContextManager getContextManager() {
-		return contextManagerWrapper;
-	}
-
-	public final int getShellType(Shell shell) {
-		return contextService.getShellType(shell);
-	}
-
-	public final boolean isKeyFilterEnabled() {
-		return bindingService.isKeyFilterEnabled();
-	}
-
-	public final void openKeyAssistDialog() {
-		bindingService.openKeyAssistDialog();
-	}
-
-	public final boolean registerShell(final Shell shell, final int type) {
-		return contextService.registerShell(shell, type);
-	}
-
-	public final void removeEnabledSubmission(
-			final EnabledSubmission enabledSubmission) {
-		if (activationsBySubmission == null) {
-			return;
-		}
-
-		final Object value = activationsBySubmission.remove(enabledSubmission);
-		if (value instanceof IContextActivation) {
-			final IContextActivation activation = (IContextActivation) value;
-			contextService.deactivateContext(activation);
-		}
-	}
-
-	public final void removeEnabledSubmissions(
-			final Collection enabledSubmissions) {
-		final Iterator submissionItr = enabledSubmissions.iterator();
-		while (submissionItr.hasNext()) {
-			removeEnabledSubmission((EnabledSubmission) submissionItr.next());
-		}
-	}
-
-	public final void setKeyFilterEnabled(final boolean enabled) {
-		bindingService.setKeyFilterEnabled(enabled);
-	}
-
-	public final boolean unregisterShell(final Shell shell) {
-		return contextService.unregisterShell(shell);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java
deleted file mode 100644
index 4c91a01..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DeclarativeDecorator.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.ui.internal.util.BundleUtility;
-
-/**
- * The DeclarativeDecorator is a decorator that is made entirely from an XML
- * specification.
- */
-public class DeclarativeDecorator implements ILightweightLabelDecorator {
- 
-	private String iconLocation;
-
-    private IConfigurationElement configElement;
-
-    private ImageDescriptor descriptor;
-
-    DeclarativeDecorator(IConfigurationElement definingElement, String iconPath) {
-        this.iconLocation = iconPath;
-        this.configElement = definingElement;
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-     */
-    public void addListener(ILabelProviderListener listener) {
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-     */
-    public void dispose() {
-    	//Nothing to do here
-    }
-
-	/**
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
-     *      java.lang.String)
-     */
-    public boolean isLabelProperty(Object element, String property) {
-        return false;
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-     */
-    public void removeListener(ILabelProviderListener listener) {
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object,
-     *      org.eclipse.jface.viewers.IDecoration)
-     */
-    public void decorate(Object element, IDecoration decoration) {
-        if (descriptor == null) {
-            URL url = BundleUtility.find(configElement.getDeclaringExtension()
-                    .getNamespace(), iconLocation);
-            if (url == null) {
-				return;
-			}
-            descriptor = ImageDescriptor.createFromURL(url);
-        }
-        decoration.addOverlay(descriptor);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationBuilder.java
deleted file mode 100644
index eb37f23..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationBuilder.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sascha Zelzer <zelzer@mathi.uni-heidelberg.de> -
- *     	Fix for Bug 152927 [Decorators] ArrayOutOfBoundsException in DecorationBuilder.java
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DecorationContext;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.IDecorationContext;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * The Decoration builder is the object that builds a decoration.
- */
-public class DecorationBuilder implements IDecoration {
-
-	private static int DECORATOR_ARRAY_SIZE = 6;
-
-	private List prefixes = new ArrayList();
-
-	private List suffixes = new ArrayList();
-
-	private ImageDescriptor[] descriptors = new ImageDescriptor[DECORATOR_ARRAY_SIZE];
-
-	private Color foregroundColor;
-
-	private Color backgroundColor;
-
-	private Font font;
-
-	LightweightDecoratorDefinition currentDefinition;
-
-	// A flag set if a value has been added
-	private boolean valueSet = false;
-
-	private final IDecorationContext context;
-
-	/**
-	 * Default constructor.
-	 */
-	DecorationBuilder() {
-		this(DecorationContext.DEFAULT_CONTEXT);
-	}
-
-	/**
-	 * Create a decoration builder for the given context
-	 * 
-	 * @param context
-	 *            a decoration context
-	 */
-	public DecorationBuilder(IDecorationContext context) {
-		this.context = context;
-	}
-
-	/**
-	 * Set the value of the definition we are currently working on.
-	 * 
-	 * @param definition
-	 */
-	void setCurrentDefinition(LightweightDecoratorDefinition definition) {
-		this.currentDefinition = definition;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.IDecoration#addOverlay(org.eclipse.jface.resource.ImageDescriptor)
-	 */
-	public void addOverlay(ImageDescriptor overlay) {
-		int quadrant = currentDefinition.getQuadrant();
-		if (descriptors[quadrant] == null) {
-			descriptors[quadrant] = overlay;
-		}
-		valueSet = true;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.IDecoration#addOverlay(org.eclipse.jface.resource.ImageDescriptor)
-	 */
-	public void addOverlay(ImageDescriptor overlay, int quadrant) {
-		if (quadrant >= 0 && quadrant < DECORATOR_ARRAY_SIZE) {
-			if (descriptors[quadrant] == null) {
-				descriptors[quadrant] = overlay;
-			}
-			valueSet = true;
-		} else {
-			WorkbenchPlugin
-					.log("Unable to apply decoration for " + currentDefinition.getId() + " invalid quadrant: " + quadrant); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.IDecoration#addPrefix(java.lang.String)
-	 */
-	public void addPrefix(String prefixString) {
-		prefixes.add(prefixString);
-		valueSet = true;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.IDecoration#addSuffix(java.lang.String)
-	 */
-	public void addSuffix(String suffixString) {
-		suffixes.add(suffixString);
-		valueSet = true;
-	}
-
-	/**
-	 * Clear the current values and return a DecorationResult.
-	 * 
-	 * @return DecorationResult
-	 */
-	DecorationResult createResult() {
-		// check whether the context says that replacement should happen
-		boolean clearReplacementImage = true;
-		if (context != null) {
-			Object propertyValue = context.getProperty(IDecoration.ENABLE_REPLACE);
-			if (propertyValue instanceof Boolean) {
-				if (((Boolean) propertyValue).booleanValue()) {
-					clearReplacementImage = false;
-				}
-			}
-		}
-		if (clearReplacementImage) {
-			descriptors[IDecoration.REPLACE] = null;
-		}
-		DecorationResult newResult = new DecorationResult(new ArrayList(
-				prefixes), new ArrayList(suffixes), descriptors,
-				foregroundColor, backgroundColor, font);
-
-		return newResult;
-	}
-
-	/**
-	 * Clear the contents of the result so it can be reused.
-	 */
-	void clearContents() {
-		this.prefixes.clear();
-		this.suffixes.clear();
-		this.descriptors = new ImageDescriptor[DECORATOR_ARRAY_SIZE];
-		valueSet = false;
-	}
-
-	/**
-	 * Return whether or not a value has been set.
-	 * 
-	 * @return boolean
-	 */
-	boolean hasValue() {
-		return valueSet;
-	}
-
-	/**
-	 * Apply the previously calculates result to the receiver.
-	 * 
-	 * @param result
-	 */
-	void applyResult(DecorationResult result) {
-		prefixes.addAll(result.getPrefixes());
-		suffixes.addAll(result.getSuffixes());
-		ImageDescriptor[] resultDescriptors = result.getDescriptors();
-		if (resultDescriptors != null) {
-			for (int i = 0; i < descriptors.length; i++) {
-				if (resultDescriptors[i] != null) {
-					descriptors[i] = resultDescriptors[i];
-				}
-			}
-		}
-
-		setForegroundColor(result.getForegroundColor());
-		setBackgroundColor(result.getBackgroundColor());
-		setFont(result.getFont());
-		valueSet = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IDecoration#setBackgroundColor(org.eclipse.swt.graphics.Color)
-	 */
-
-	public void setBackgroundColor(Color bgColor) {
-		this.backgroundColor = bgColor;
-		valueSet = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IDecoration#setFont(org.eclipse.swt.graphics.Font)
-	 */
-	public void setFont(Font newFont) {
-		this.font = newFont;
-		valueSet = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IDecoration#setForegroundColor(org.eclipse.swt.graphics.Color)
-	 */
-	public void setForegroundColor(Color fgColor) {
-		this.foregroundColor = fgColor;
-		valueSet = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IDecoration#getDecorationContext()
-	 */
-	public IDecorationContext getDecorationContext() {
-		return context;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationImageBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationImageBuilder.java
deleted file mode 100644
index e73d4a3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationImageBuilder.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * DecorationImageBuilder is a utility class for merging images without data
- * loss.
- * 
- * @since 3.3
- * 
- */
-class DecorationImageBuilder {
-
-	private static final int TOP_LEFT = LightweightDecoratorDefinition.TOP_LEFT;
-	private static final int TOP_RIGHT = LightweightDecoratorDefinition.TOP_RIGHT;
-	private static final int BOTTOM_LEFT = LightweightDecoratorDefinition.BOTTOM_LEFT;
-	private static final int BOTTOM_RIGHT = LightweightDecoratorDefinition.BOTTOM_RIGHT;
-	private static final int UNDERLAY = LightweightDecoratorDefinition.UNDERLAY;
-
-	private static final PaletteData ALPHA_PALETTE, BW_PALETTE;
-	static {
-		RGB[] rgbs = new RGB[256];
-		for (int i = 0; i < rgbs.length; i++) {
-			rgbs[i] = new RGB(i, i, i);
-		}
-		ALPHA_PALETTE = new PaletteData(rgbs);
-		BW_PALETTE = new PaletteData(new RGB[] { new RGB(0, 0, 0),
-				new RGB(255, 255, 255) });
-	}
-
-	private static int getTransparencyDepth(ImageData data) {
-		if (data.maskData != null && data.depth == 32) {
-			for (int i = 0; i < data.data.length; i += 4) {
-				if (data.data[i] != 0)
-					return 8;
-			}
-		}
-		if (data.maskData != null || data.transparentPixel != -1)
-			return 1;
-		if (data.alpha != -1 || data.alphaData != null)
-			return 8;
-		return 0;
-	}
-
-	private static ImageData getTransparency(ImageData data,
-			int transparencyDepth) {
-		if (data == null)
-			return null;
-		if (transparencyDepth == 1)
-			return data.getTransparencyMask();
-		ImageData mask = null;
-		if (data.maskData != null && data.depth == 32) {
-			ImageData m = data.getTransparencyMask();
-			mask = new ImageData(data.width, data.height, 8, ALPHA_PALETTE,
-					data.width, new byte[data.width * data.height]);
-			for (int y = 0; y < data.height; y++) {
-				for (int x = 0; x < data.width; x++) {
-					int alpha = data.getPixel(x, y) & 0xFF;
-					if (alpha == 0) {
-						if (m.getPixel(x, y) != 0)
-							alpha = 255;
-					}
-					mask.setPixel(x, y, alpha);
-				}
-			}
-		} else if (data.maskData != null || data.transparentPixel != -1) {
-			ImageData m = data.getTransparencyMask();
-			mask = new ImageData(data.width, data.height, 8, ALPHA_PALETTE,
-					data.width, new byte[data.width * data.height]);
-			for (int y = 0; y < mask.height; y++) {
-				for (int x = 0; x < mask.width; x++) {
-					mask.setPixel(x, y, m.getPixel(x, y) != 0 ? (byte) 255 : 0);
-				}
-			}
-		} else if (data.alpha != -1) {
-			mask = new ImageData(data.width, data.height, 8, ALPHA_PALETTE,
-					data.width, new byte[data.width * data.height]);
-			for (int i = 0; i < mask.data.length; i++) {
-				mask.data[i] = (byte) data.alpha;
-			}
-		} else if (data.alphaData != null) {
-			mask = new ImageData(data.width, data.height, 8, ALPHA_PALETTE,
-					data.width, data.alphaData);
-		} else {
-			mask = new ImageData(data.width, data.height, 8, ALPHA_PALETTE,
-					data.width, new byte[data.width * data.height]);
-			for (int i = 0; i < mask.data.length; i++) {
-				mask.data[i] = (byte) 255;
-			}
-		}
-		return mask;
-	}
-
-	private static void composite(ImageData dst, ImageData src, int xOffset,
-			int yOffset) {
-		if (dst.depth == 1) {
-			for (int y = 0, dstY = y + yOffset; y < src.height; y++, dstY++) {
-				for (int x = 0, dstX = x + xOffset; x < src.width; x++, dstX++) {
-					if (0 <= dstX && dstX < dst.width && 0 <= dstY
-							&& dstY < dst.height) {
-						if (src.getPixel(x, y) != 0) {
-							dst.setPixel(dstX, dstY, 1);
-						}
-					}
-				}
-			}
-		} else if (dst.depth == 8) {
-			for (int y = 0, dstY = y + yOffset; y < src.height; y++, dstY++) {
-				for (int x = 0, dstX = x + xOffset; x < src.width; x++, dstX++) {
-					if (0 <= dstX && dstX < dst.width && 0 <= dstY
-							&& dstY < dst.height) {
-						int srcAlpha = src.getPixel(x, y);
-						int dstAlpha = dst.getPixel(dstX, dstY);
-						dstAlpha += (srcAlpha - dstAlpha) * srcAlpha / 255;
-						dst.setPixel(dstX, dstY, dstAlpha);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Create a composite image by underlaying and overlaying the base image.
-	 * @param device
-	 * @param base
-	 * @param overlay
-	 * @return Image
-	 */
-	static Image compositeImage(Device device, ImageData base,
-			ImageData[] overlay) {
-		if (base == null)
-			return null;
-		Image image = new Image(device, new ImageData(base.width, base.height,
-				24, new PaletteData(0xff, 0xff00, 0xff00000)));
-		GC gc = new GC(image);
-		ImageData src;
-		int maskDepth = 0, baseMaskDepth = 0;
-		ImageData underlay = src = overlay.length > UNDERLAY ? overlay[UNDERLAY]
-				: null;
-		if (src != null) {
-			maskDepth = Math.max(maskDepth, getTransparencyDepth(src));
-			Image img = new Image(device, src);
-			gc.drawImage(img, 0, 0);
-			img.dispose();
-		}
-		src = base;
-		if (base != null) {
-			maskDepth = Math.max(maskDepth,
-					baseMaskDepth = getTransparencyDepth(src));
-			Image img = new Image(device, src);
-			gc.drawImage(img, 0, 0);
-			img.dispose();
-		}
-		ImageData topLeft = src = overlay[TOP_LEFT];
-		if (src != null) {
-			maskDepth = Math.max(maskDepth, getTransparencyDepth(src));
-			Image img = new Image(device, src);
-			gc.drawImage(img, 0, 0);
-			img.dispose();
-		}
-		ImageData topRight = src = overlay[TOP_RIGHT];
-		if (src != null) {
-			maskDepth = Math.max(maskDepth, getTransparencyDepth(src));
-			Image img = new Image(device, src);
-			gc.drawImage(img, base.width - src.width, 0);
-			img.dispose();
-		}
-		ImageData bottomLeft = src = overlay[BOTTOM_LEFT];
-		if (src != null) {
-			maskDepth = Math.max(maskDepth, getTransparencyDepth(src));
-			Image img = new Image(device, src);
-			gc.drawImage(img, 0, base.height - src.height);
-			img.dispose();
-		}
-		ImageData bottomRight = src = overlay[BOTTOM_RIGHT];
-		if (src != null) {
-			maskDepth = Math.max(maskDepth, getTransparencyDepth(src));
-			Image img = new Image(device, src);
-			gc.drawImage(img, base.width - src.width, base.height - src.height);
-			img.dispose();
-		}
-		gc.dispose();
-		if (baseMaskDepth > 0) {
-			ImageData newData = image.getImageData();
-			image.dispose();
-			ImageData mask = null;
-			switch (maskDepth) {
-			case 1:
-				mask = new ImageData(base.width, base.height, maskDepth,
-						BW_PALETTE);
-				break;
-			case 8:
-				mask = new ImageData(base.width, base.height, maskDepth,
-						ALPHA_PALETTE, base.width, new byte[base.width
-								* base.height]);
-				break;
-			}
-			src = getTransparency(underlay, maskDepth);
-			if (src != null)
-				composite(mask, src, 0, 0);
-			src = getTransparency(base, maskDepth);
-			if (src != null)
-				composite(mask, src, 0, 0);
-			src = getTransparency(topLeft, maskDepth);
-			if (src != null)
-				composite(mask, src, 0, 0);
-			src = getTransparency(topRight, maskDepth);
-			if (src != null)
-				composite(mask, src, mask.width - src.width, 0);
-			src = getTransparency(bottomLeft, maskDepth);
-			if (src != null)
-				composite(mask, src, 0, mask.height - src.height);
-			src = getTransparency(bottomRight, maskDepth);
-			if (src != null)
-				composite(mask, src, mask.width - src.width, mask.height
-						- src.height);
-			switch (maskDepth) {
-			case 1:
-				newData.maskData = mask.data;
-				newData.maskPad = mask.scanlinePad;
-				break;
-			case 8:
-				newData.alphaData = mask.data;
-				break;
-			}
-			image = new Image(device, newData);
-		}
-		return image;
-	}
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationReference.java
deleted file mode 100644
index bcd89ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationReference.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.IDecorationContext;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A DecorationReference is a class that holds onto the starting
- * text and image of a decoration.
- */
-class DecorationReference {
-    Object element;
-
-    Object adaptedElement;
-
-    String undecoratedText;
-
-    boolean forceUpdate = false;
-
-	IDecorationContext[] contexts;
-
-    DecorationReference(Object object, Object adaptedObject, IDecorationContext context) {
-        this.contexts = new IDecorationContext[] { context} ;
-		Assert.isNotNull(object);
-        element = object;
-        this.adaptedElement = adaptedObject;
-    }
-
-    /**
-     * Returns the adaptedElement.
-     * @return Object
-     */
-    Object getAdaptedElement() {
-        return adaptedElement;
-    }
-
-    /**
-     * Returns the element.
-     * @return Object
-     */
-    Object getElement() {
-        return element;
-    }
-
-    /**
-     * Return true if an update should occur whether or 
-     * not there is a result.
-     * @return boolean
-     */
-    boolean shouldForceUpdate() {
-        return forceUpdate;
-    }
-
-    /**
-     * Sets the forceUpdate flag. If true an update 
-     * occurs whether or not a decoration has resulted.
-     * @param forceUpdate The forceUpdate to set
-     */
-    void setForceUpdate(boolean forceUpdate) {
-        this.forceUpdate = forceUpdate;
-    }
-
-    /**
-     * Set the text that will be used to label the decoration
-     * calculation.
-     * @param text
-     */
-    void setUndecoratedText(String text) {
-        undecoratedText = text;
-    }
-
-    /**
-     * Return the string for the subtask for this element.
-     * @return String
-     */
-    String getSubTask() {
-        if (undecoratedText == null) {
-			return WorkbenchMessages.DecorationReference_EmptyReference;
-		}
-	return NLS.bind(WorkbenchMessages.DecorationScheduler_DecoratingSubtask, undecoratedText );
-    }
-
-    /**
-     * Returns the decoration context associated with the element
-     * being decorated
-     * @return the decoration context
-     */
-	IDecorationContext[] getContexts() {
-		return contexts;
-	}
-
-	void addContext(IDecorationContext context) {
-		IDecorationContext[] newContexts = new IDecorationContext[contexts.length + 1];
-		System.arraycopy(contexts, 0, newContexts, 0, contexts.length);
-		newContexts[contexts.length] = context;
-		contexts = newContexts;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationResult.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationResult.java
deleted file mode 100644
index 8f6e3e1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationResult.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.DecorationOverlayIcon;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- * The Decoration Result is the result of a decoration.
- */
-public class DecorationResult {
-
-	private List prefixes;
-
-	private List suffixes;
-
-	private ImageDescriptor[] descriptors;
-
-	private Color foregroundColor;
-
-	private Color backgroundColor;
-
-	private Font font;
-
-	DecorationResult(List prefixList, List suffixList,
-			ImageDescriptor[] imageDescriptors, Color resultForegroundColor,
-			Color resultBackgroundColor, Font resultFont) {
-		prefixes = prefixList;
-		suffixes = suffixList;
-
-		// Don't set the field if there are no entries
-		if (hasOverlays(imageDescriptors)) {
-			descriptors = imageDescriptors;
-		}
-		foregroundColor = resultForegroundColor;
-		backgroundColor = resultBackgroundColor;
-		font = resultFont;
-	}
-
-	/**
-	 * Return whether or not any of the imageDescriptors are non-null.
-	 * 
-	 * @param imageDescriptors
-	 * @return <code>true</code> if there are some non-null overlays
-	 */
-	private boolean hasOverlays(ImageDescriptor[] imageDescriptors) {
-		for (int i = 0; i < imageDescriptors.length; i++) {
-			if (imageDescriptors[i] != null) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Decorate the Image supplied with the overlays.
-	 * 
-	 * @param image
-	 * @param manager
-	 * @return Image
-	 */
-	Image decorateWithOverlays(Image image, ResourceManager manager) {
-
-		// Do not try to do anything if there is no source or overlays
-		if (image == null || descriptors == null) {
-			return image;
-		}
-		
-		Rectangle bounds = image.getBounds();
-		Point size = new Point(bounds.width, bounds.height);
-		DecorationOverlayIcon icon = new DecorationOverlayIcon(image, descriptors, size);
-		return manager.createImage(icon);
-	}
-
-	/**
-	 * Decorate the String supplied with the prefixes and suffixes. This method
-	 * is public for use by the test suites and is not intended to be referenced
-	 * by other workbench internals.
-	 * 
-	 * @param text
-	 * @return String
-	 */
-	public String decorateWithText(String text) {
-
-		if (prefixes.isEmpty() && suffixes.isEmpty()) {
-			return text;
-		}
-
-		StringBuffer result = new StringBuffer();
-
-		ListIterator prefixIterator = prefixes.listIterator();
-
-		while (prefixIterator.hasNext()) {
-			result.append(prefixIterator.next());
-		}
-
-		result.append(text);
-
-		ListIterator suffixIterator = suffixes.listIterator();
-
-		while (suffixIterator.hasNext()) {
-			result.append(suffixIterator.next());
-		}
-
-		return result.toString();
-	}
-
-	/**
-	 * Get the descriptor array for the receiver.
-	 * 
-	 * @return ImageDescriptor[] or <code>null</code>
-	 */
-	ImageDescriptor[] getDescriptors() {
-		return descriptors;
-	}
-
-	/**
-	 * Get the prefixes for the receiver.
-	 * 
-	 * @return List
-	 */
-	List getPrefixes() {
-		return prefixes;
-	}
-
-	/**
-	 * Get the suffixes for the receiver.
-	 * 
-	 * @return List
-	 */
-	List getSuffixes() {
-		return suffixes;
-	}
-
-	/**
-	 * Return the background Color for the result.
-	 * 
-	 * @return Color
-	 */
-	Color getBackgroundColor() {
-		return backgroundColor;
-	}
-
-	/**
-	 * Return the font for the result.
-	 * 
-	 * @return Font
-	 */
-	Font getFont() {
-		return font;
-	}
-
-	/**
-	 * Return the foreground color for the result.
-	 * 
-	 * @return Color
-	 */
-	Color getForegroundColor() {
-		return foregroundColor;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java
deleted file mode 100644
index 3b595a4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java
+++ /dev/null
@@ -1,720 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Francis Upton <francisu@ieee.org> - 
- *     		Fix for Bug 216667 [Decorators] DecorationScheduler hangs onto objects forever sometimes
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.DecorationContext;
-import org.eclipse.jface.viewers.IDecorationContext;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.progress.UIJob;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The DecorationScheduler is the class that handles the decoration of elements
- * using a background thread.
- */
-public class DecorationScheduler {
-
-	static final ILabelProviderListener[] EMPTY_LISTENER_LIST = new ILabelProviderListener[0];
-
-	// When decorations are computed they are added to this cache via
-	// decorated() method
-	Map resultCache = new HashMap();
-
-	// Objects that need an icon and text computed for display to the user
-	List awaitingDecoration = new ArrayList();
-
-	// Objects that are awaiting a label update.
-	Set pendingUpdate = new HashSet();
-
-	// Key to lock write access to the pending update set
-	Object pendingKey = new Object();
-
-	Map awaitingDecorationValues = new HashMap();
-
-	DecoratorManager decoratorManager;
-
-	boolean shutdown = false;
-
-	Job decorationJob;
-
-	UIJob updateJob;
-
-	private Collection removedListeners = Collections
-			.synchronizedSet(new HashSet());
-
-	private Job clearJob;
-
-	// Static used for the updates to indicate an update is required
-	static final int NEEDS_INIT = -1;
-
-	/** Amount of time to delay the update notification when max reached. */
-	static final int UPDATE_DELAY = 100;
-
-	/**
-	 * Return a new instance of the receiver configured for the supplied
-	 * DecoratorManager.
-	 * 
-	 * @param manager
-	 */
-	DecorationScheduler(DecoratorManager manager) {
-		decoratorManager = manager;
-		createDecorationJob();
-	}
-
-	/**
-	 * Decorate the text for the receiver. If it has already been done then
-	 * return the result, otherwise queue it for decoration.
-	 * 
-	 * @return String
-	 * @param text
-	 * @param element
-	 * @param adaptedElement
-	 *            The adapted value of element. May be null.
-	 * @param context
-	 *            the decoration context
-	 */
-
-	public String decorateWithText(String text, Object element,
-			Object adaptedElement, IDecorationContext context) {
-
-		DecorationResult decoration = getResult(element, adaptedElement,
-				context);
-
-		if (decoration == null) {
-			return text;
-		}
-
-		return decoration.decorateWithText(text);
-
-	}
-
-	/**
-	 * Queue the element and its adapted value if it has not been already.
-	 * 
-	 * @param element
-	 * @param adaptedElement
-	 *            The adapted value of element. May be null.
-	 * @param forceUpdate
-	 *            If true then a labelProviderChanged is fired whether
-	 *            decoration occurred or not.
-	 * @param undecoratedText
-	 *            The original text for the element if it is known.
-	 * @param context
-	 *            The decoration context
-	 */
-
-	synchronized void queueForDecoration(Object element, Object adaptedElement,
-			boolean forceUpdate, String undecoratedText,
-			IDecorationContext context) {
-
-		Assert.isNotNull(context);
-		DecorationReference reference = (DecorationReference) awaitingDecorationValues
-				.get(element);
-		if (reference != null) {
-			if (forceUpdate) {// Make sure we don't loose a force
-				reference.setForceUpdate(forceUpdate);
-			}
-			reference.addContext(context);
-		} else {
-			reference = new DecorationReference(element, adaptedElement,
-					context);
-			reference.setForceUpdate(forceUpdate);
-			reference.setUndecoratedText(undecoratedText);
-			awaitingDecorationValues.put(element, reference);
-			awaitingDecoration.add(element);
-			if (shutdown) {
-				return;
-			}
-			if (decorationJob.getState() == Job.SLEEPING) {
-				decorationJob.wakeUp();
-			}
-			decorationJob.schedule();
-		}
-
-	}
-
-	/**
-	 * Decorate the supplied image, element and its adapted value.
-	 * 
-	 * @return Image
-	 * @param image
-	 * @param element
-	 * @param adaptedElement
-	 *            The adapted value of element. May be null.
-	 * @param context
-	 *            the decoration context
-	 * @param manager 
-	 * 
-	 */
-	public Image decorateWithOverlays(Image image, Object element,
-			Object adaptedElement, IDecorationContext context, ResourceManager manager) {
-
-		DecorationResult decoration = getResult(element, adaptedElement,
-				context);
-
-		if (decoration == null) {
-			return image;
-		}
-		return decoration.decorateWithOverlays(image, manager);
-	}
-
-	/**
-	 * Return the DecorationResult for element. If there isn't one queue for
-	 * decoration and return <code>null</code>.
-	 * 
-	 * @param element
-	 *            The element to be decorated. If it is <code>null</code>
-	 *            return <code>null</code>.
-	 * @param adaptedElement
-	 *            It's adapted value.
-	 * @param context
-	 *            The deocration context
-	 * @return DecorationResult or <code>null</code>
-	 */
-	private DecorationResult getResult(Object element, Object adaptedElement,
-			IDecorationContext context) {
-
-		// We do not support decoration of null
-		if (element == null) {
-			return null;
-		}
-
-		DecorationResult decoration = internalGetResult(element, context);
-
-		if (decoration == null) {
-			queueForDecoration(element, adaptedElement, false, null, context);
-			return null;
-		}
-		return decoration;
-
-	}
-
-	private DecorationResult internalGetResult(Object element,
-			IDecorationContext context) {
-		Map results = (Map) resultCache.get(context);
-		if (results != null) {
-			return (DecorationResult) results.get(element);
-		}
-		return null;
-	}
-
-	protected void internalPutResult(Object element,
-			IDecorationContext context, DecorationResult result) {
-		Map results = (Map) resultCache.get(context);
-		if (results == null) {
-			results = new HashMap();
-			resultCache.put(context, results);
-		}
-		results.put(element, result);
-	}
-
-	/**
-	 * Execute a label update using the pending decorations.
-	 */
-	synchronized void decorated() {
-
-		// Don't bother if we are shutdown now
-		if (shutdown) {
-			return;
-		}
-
-		// Lazy initialize the job
-		if (updateJob == null) {
-			updateJob = getUpdateJob();
-		}
-
-		// Give it a bit of a lag for other updates to occur
-		updateJob.schedule(UPDATE_DELAY);
-	}
-
-	/**
-	 * Shutdown the decoration.
-	 */
-	synchronized void shutdown() {
-		shutdown = true;
-	}
-
-	/**
-	 * Get the next resource to be decorated.
-	 * 
-	 * @return IResource
-	 */
-	synchronized DecorationReference nextElement() {
-
-		if (shutdown || awaitingDecoration.isEmpty()) {
-			return null;
-		}
-		Object element = awaitingDecoration.remove(0);
-
-		return (DecorationReference) awaitingDecorationValues.remove(element);
-	}
-
-	/**
-	 * Create the Thread used for running decoration.
-	 */
-	private void createDecorationJob() {
-		decorationJob = new Job(
-				WorkbenchMessages.DecorationScheduler_CalculationJobName) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus run(IProgressMonitor monitor) {
-
-				synchronized (DecorationScheduler.this) {
-					if (shutdown) {
-						return Status.CANCEL_STATUS;
-					}
-				}
-
-				while (updatesPending()) {
-
-					try {
-						Thread.sleep(100);
-					} catch (InterruptedException e) {
-						// Cancel and try again if there was an error
-						schedule();
-						return Status.CANCEL_STATUS;
-					}
-				}
-
-				monitor.beginTask(
-						WorkbenchMessages.DecorationScheduler_CalculatingTask,
-						100);
-				// will block if there are no resources to be decorated
-				DecorationReference reference;
-				monitor.worked(5);
-				int workCount = 5;
-				while ((reference = nextElement()) != null) {
-
-					// Count up to 90 to give the appearance of updating
-					if (workCount < 90) {
-						monitor.worked(1);
-						workCount++;
-					}
-
-					monitor.subTask(reference.getSubTask());
-					Object element = reference.getElement();
-					boolean force = reference.shouldForceUpdate();
-					IDecorationContext[] contexts = reference.getContexts();
-					for (int i = 0; i < contexts.length; i++) {
-						IDecorationContext context = contexts[i];
-						ensureResultCached(element, force, context);
-					}
-
-					// Only notify listeners when we have exhausted the
-					// queue of decoration requests.
-					synchronized (DecorationScheduler.this) {
-						if (awaitingDecoration.isEmpty()) {
-							decorated();
-						}
-					}
-				}
-				monitor.worked(100 - workCount);
-				monitor.done();
-				return Status.OK_STATUS;
-			}
-
-			/**
-			 * Ensure that a result is cached for the given element and context
-			 * 
-			 * @param element
-			 *            the elements
-			 * @param force
-			 *            whether an update should be forced
-			 * @param context
-			 *            the decoration context
-			 */
-			private void ensureResultCached(Object element, boolean force,
-					IDecorationContext context) {
-				boolean elementIsCached = internalGetResult(element, context) != null;
-				if (elementIsCached) {
-					synchronized (pendingKey) {
-						pendingUpdate.add(element);
-					}
-
-				}
-
-				if (!elementIsCached) {
-					DecorationBuilder cacheResult = new DecorationBuilder(
-							context);
-					// Calculate the decoration
-					decoratorManager.getLightweightManager().getDecorations(
-							element, cacheResult);
-
-					// If we should update regardless then put a result
-					// anyways
-					if (cacheResult.hasValue() || force) {
-
-						// Synchronize on the result lock as we want to
-						// be sure that we do not try and decorate during
-						// label update servicing.
-						// Note: resultCache and pendingUpdate modifications
-						// must be done atomically.
-
-						// Add the decoration even if it's empty in
-						// order to indicate that the decoration is
-						// ready
-						internalPutResult(element, context, cacheResult
-								.createResult());
-
-						// Add an update for only the original element
-						// to
-						// prevent multiple updates and clear the cache.
-						synchronized (pendingKey) {
-							pendingUpdate.add(element);
-						}
-						
-
-					}
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#belongsTo(java.lang.Object)
-			 */
-			public boolean belongsTo(Object family) {
-				return DecoratorManager.FAMILY_DECORATE == family;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-			 */
-			public boolean shouldRun() {
-				return PlatformUI.isWorkbenchRunning();
-			}
-		};
-
-		decorationJob.setSystem(true);
-		decorationJob.setPriority(Job.DECORATE);
-		decorationJob.schedule();
-	}
-
-	/**
-	 * Return whether or not we are waiting on updated
-	 * 
-	 * @return <code>true</code> if there are updates waiting to be served
-	 */
-	protected boolean updatesPending() {
-		if (updateJob != null && updateJob.getState() != Job.NONE) {
-			return true;
-		}
-		if (clearJob != null && clearJob.getState() != Job.NONE) {
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * An external update request has been made. Clear the results as they are
-	 * likely obsolete now.
-	 */
-	void clearResults() {
-		if (clearJob == null) {
-			clearJob = getClearJob();
-		}
-		clearJob.schedule();
-	}
-
-	private Job getClearJob() {
-		Job clear = new Job(
-				WorkbenchMessages.DecorationScheduler_ClearResultsJob) {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			protected IStatus run(IProgressMonitor monitor) {
-				resultCache.clear();
-				return Status.OK_STATUS;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-			 */
-			public boolean shouldRun() {
-				return PlatformUI.isWorkbenchRunning();
-			}
-
-		};
-		clear.setSystem(true);
-
-		return clear;
-	}
-
-	/**
-	 * Get the update WorkbenchJob.
-	 * 
-	 * @return WorkbenchJob
-	 */
-	private WorkbenchJob getUpdateJob() {
-		WorkbenchJob job = new WorkbenchJob(
-				WorkbenchMessages.DecorationScheduler_UpdateJobName) {
-
-			int currentIndex = NEEDS_INIT;
-
-			LabelProviderChangedEvent labelProviderChangedEvent;
-
-			ILabelProviderListener[] listeners;
-
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-
-				synchronized (DecorationScheduler.this) {
-					if (shutdown) {
-						return Status.CANCEL_STATUS;
-					}
-				}
-
-				// If this is the first one check again in case
-				// someone has already cleared it out.
-				if (currentIndex == NEEDS_INIT) {
-					if (hasPendingUpdates()) {
-					    resetState();
-						return Status.OK_STATUS;
-					}
-					setUpUpdates();
-				}
-
-				if (listeners.length == 0) {
-				    resetState();
-				    return Status.OK_STATUS;
-				}
-
-				monitor.beginTask(
-						WorkbenchMessages.DecorationScheduler_UpdatingTask,
-						IProgressMonitor.UNKNOWN);
-
-				long startTime = System.currentTimeMillis();
-				while (currentIndex < listeners.length) {
-					ILabelProviderListener listener = listeners[currentIndex];
-					currentIndex++;
-
-					// If it was removed in the meantime then skip it.
-					if (!removedListeners.contains(listener)) {
-						decoratorManager.fireListener(
-								labelProviderChangedEvent, listener);
-					}
-
-					// If it is taking long enough for the user to notice then
-					// cancel the
-					// updates.
-					if ((System.currentTimeMillis() - startTime) >= UPDATE_DELAY / 2) {
-						break;
-					}
-				}
-
-				monitor.done();
-
-				if (currentIndex >= listeners.length) {
-				    resetState();
-					if (!hasPendingUpdates()) {
-						decorated();
-					}
-					labelProviderChangedEvent = null;
-					listeners = EMPTY_LISTENER_LIST;
-				} else {
-					schedule(UPDATE_DELAY);// Reschedule if we are not done
-				}
-				return Status.OK_STATUS;
-			}
-
-            /**
-             * Clear any cached information.
-             */
-            private void resetState() {
-                currentIndex = NEEDS_INIT;// Reset
-                removedListeners.clear();
-                // Other decoration requests may have occurred due to
-                // updates or we may have timed out updating listeners.
-                // Only clear the results if there are none pending.
-                if (awaitingDecoration.isEmpty()) {
-                    resultCache.clear();
-                }
-            }
-            
-			private void setUpUpdates() {
-				// Get the elements awaiting update and then
-				// clear the list
-				removedListeners.clear();
-				currentIndex = 0;
-				synchronized (pendingKey) {
-					Object[] elements = pendingUpdate
-							.toArray(new Object[pendingUpdate.size()]);
-					pendingUpdate.clear();
-					labelProviderChangedEvent = new LabelProviderChangedEvent(
-							decoratorManager, elements);
-				}
-				listeners = decoratorManager.getListeners();
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#belongsTo(java.lang.Object)
-			 */
-			public boolean belongsTo(Object family) {
-				return DecoratorManager.FAMILY_DECORATE == family;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-			 */
-			public boolean shouldRun() {
-				return PlatformUI.isWorkbenchRunning();
-			}
-		};
-
-		job.setSystem(true);
-		return job;
-	}
-
-	/**
-	 * Return whether or not there is a decoration for this element ready.
-	 * 
-	 * @param element
-	 * @param context
-	 *            The decoration context
-	 * @return boolean true if the element is ready.
-	 */
-	public boolean isDecorationReady(Object element, IDecorationContext context) {
-		return internalGetResult(element, context) != null;
-	}
-
-	/**
-	 * Return the background Color for element. If there is no result cue for
-	 * decoration and return null, otherwise return the value in the result.
-	 * 
-	 * @param element
-	 *            The Object to be decorated
-	 * @param adaptedElement
-	 * @return Color or <code>null</code> if there is no value or if it is has
-	 *         not been decorated yet.
-	 */
-	public Color getBackgroundColor(Object element, Object adaptedElement) {
-		DecorationResult decoration = getResult(element, adaptedElement,
-				DecorationContext.DEFAULT_CONTEXT);
-
-		if (decoration == null) {
-			return null;
-		}
-		return decoration.getBackgroundColor();
-	}
-
-	/**
-	 * Return the font for element. If there is no result cue for decoration and
-	 * return null, otherwise return the value in the result.
-	 * 
-	 * @param element
-	 *            The Object to be decorated
-	 * @param adaptedElement
-	 * @return Font or <code>null</code> if there is no value or if it is has
-	 *         not been decorated yet.
-	 */
-	public Font getFont(Object element, Object adaptedElement) {
-		DecorationResult decoration = getResult(element, adaptedElement,
-				DecorationContext.DEFAULT_CONTEXT);
-
-		if (decoration == null) {
-			return null;
-		}
-		return decoration.getFont();
-	}
-
-	/**
-	 * Return the foreground Color for element. If there is no result cue for
-	 * decoration and return null, otherwise return the value in the result.
-	 * 
-	 * @param element
-	 *            The Object to be decorated
-	 * @param adaptedElement
-	 * @return Color or <code>null</code> if there is no value or if it is has
-	 *         not been decorated yet.
-	 */
-	public Color getForegroundColor(Object element, Object adaptedElement) {
-		DecorationResult decoration = getResult(element, adaptedElement,
-				DecorationContext.DEFAULT_CONTEXT);
-
-		if (decoration == null) {
-			return null;
-		}
-		return decoration.getForegroundColor();
-	}
-
-	/**
-	 * Return whether or not any updates are being processed/
-	 * 
-	 * @return boolean
-	 */
-	public boolean processingUpdates() {
-		return !hasPendingUpdates() && !awaitingDecoration.isEmpty();
-	}
-
-	/**
-	 * A listener has been removed. If we are updating then skip it.
-	 * 
-	 * @param listener
-	 */
-	void listenerRemoved(ILabelProviderListener listener) {
-		if (updatesPending()) {// Only keep track of them if there are updates
-			// pending
-			removedListeners.add(listener);
-		}
-		if (!updatesPending()) {
-			removedListeners.remove(listener);
-		}
-
-	}
-
-	/**
-	 * Return whether or not there are any updates pending.
-	 * 
-	 * @return boolean <code>true</code> if the updates are empty
-	 */
-	boolean hasPendingUpdates() {
-		synchronized (pendingKey) {
-			return pendingUpdate.isEmpty();
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
deleted file mode 100644
index 077aafe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorDefinition.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.ui.internal.ActionExpression;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * The DecoratorDefinition is the class that holds onto
- * the label decorator, the name and the name of the
- * class a decorator definition applies to,
- */
-
-public abstract class DecoratorDefinition {
-	
-    private static final String ATT_LABEL = "label"; //$NON-NLS-1$
-    
-    private static final String ATT_OBJECT_CLASS = "objectClass"; //$NON-NLS-1$
-    
-    static final String CHILD_ENABLEMENT = "enablement"; //$NON-NLS-1$
-    
-    private static final String ATT_ADAPTABLE = "adaptable"; //$NON-NLS-1$
-    
-    private static final String ATT_ENABLED = "state"; //$NON-NLS-1$
-
-    private ActionExpression enablement;
-
-    protected boolean enabled;
-
-    private boolean defaultEnabled;
-
-    private String id;
-
-    protected IConfigurationElement definingElement;
-
-    //A flag that is set if there is an error creating the decorator
-    protected boolean labelProviderCreationFailed = false;
-
-	private boolean hasReadEnablement;
-
-	static final String ATT_CLASS = "class";//$NON-NLS-1$
-
-    /**
-     * Create a new instance of the receiver with the
-     * supplied values.
-     */
-
-    DecoratorDefinition(String identifier, IConfigurationElement element) {
-
-        this.id = identifier;  
-        this.definingElement = element;
-        
-        this.enabled = this.defaultEnabled = Boolean.valueOf(element.getAttribute(ATT_ENABLED)).booleanValue();
-    }
-
-    /**
-     * Gets the name.
-     * @return Returns a String
-     */
-    public String getName() {
-        return definingElement.getAttribute(ATT_LABEL);
-    }
-
-    /**
-     * Returns the description.
-     * @return String
-     */
-    public String getDescription() {
-        return RegistryReader.getDescription(definingElement);
-    }
-
-    /**
-     * Gets the enabled.
-     * @return Returns a boolean
-     */
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    /**
-     * Sets the enabled flag and adds or removes the decorator
-     * manager as a listener as appropriate.
-     * @param newState The enabled to set
-     */
-    public void setEnabled(boolean newState) {
-
-        //Only refresh if there has been a change
-        if (this.enabled != newState) {
-            this.enabled = newState;
-            try {
-                refreshDecorator();
-            } catch (CoreException exception) {
-                handleCoreException(exception);
-            }
-
-        }
-    }
-
-    /**
-     * Refresh the current decorator based on our enable
-     * state.
-     */
-    protected abstract void refreshDecorator() throws CoreException;
-
-    /**
-     * Dispose the decorator instance and remove listeners
-     * as appropirate.
-     * @param disposedDecorator
-     */
-    protected void disposeCachedDecorator(IBaseLabelProvider disposedDecorator) {
-        disposedDecorator.removeListener(WorkbenchPlugin.getDefault()
-                .getDecoratorManager());
-        disposedDecorator.dispose();
-
-    }
-
-    /**
-     * Return whether or not this decorator should be 
-     * applied to adapted types.
-     * 
-     * @return whether or not this decorator should be 
-     * applied to adapted types
-     */
-    public boolean isAdaptable() {
-    	return Boolean.valueOf(definingElement.getAttribute(ATT_ADAPTABLE)).booleanValue();
-    }
-
-    /**
-     * Gets the id.
-     * @return Returns a String
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Return the default value for this type - this value
-     * is the value read from the element description.
-     * 
-     * @return the default value for this type - this value
-     * is the value read from the element description
-     */
-    public boolean getDefaultValue() {
-        return defaultEnabled;
-    }
-
-    /**
-     * Returns the enablement.
-     * @return ActionExpression
-     */
-    protected ActionExpression getEnablement() {
-    	if (!hasReadEnablement) {
-    		hasReadEnablement = true;
-    		initializeEnablement();
-    	}
-        return enablement;
-    }
-
-    /**
-     * Initialize the enablement expression for this decorator
-     */
-    protected void initializeEnablement() {
-        IConfigurationElement[] elements = definingElement.getChildren(CHILD_ENABLEMENT);
-        if (elements.length == 0) {
-            String className = definingElement.getAttribute(ATT_OBJECT_CLASS);
-            if (className != null) {
-				enablement = new ActionExpression(ATT_OBJECT_CLASS,
-                        className);
-			}
-        } else {
-			enablement = new ActionExpression(elements[0]);
-		}
-    }
-
-    /**
-     * Add a listener for the decorator.If there is an exception
-     * then inform the user and disable the receiver.
-     * This method should not be called unless a check for
-     * isEnabled() has been done first.
-     */
-    void addListener(ILabelProviderListener listener) {
-        try {
-            //Internal decorator might be null so be prepared
-            IBaseLabelProvider currentDecorator = internalGetLabelProvider();
-            if (currentDecorator != null) {
-				currentDecorator.addListener(listener);
-			}
-        } catch (CoreException exception) {
-            handleCoreException(exception);
-        }
-    }
-
-    /**
-     * Return whether or not the decorator registered for element
-     * has a label property called property name. If there is an 
-     * exception disable the receiver and return false.
-     * This method should not be called unless a check for
-     * isEnabled() has been done first.
-     */
-    boolean isLabelProperty(Object element, String property) {
-        try { //Internal decorator might be null so be prepared
-            IBaseLabelProvider currentDecorator = internalGetLabelProvider();
-            if (currentDecorator != null) {
-				return currentDecorator.isLabelProperty(element, property);
-			}
-        } catch (CoreException exception) {
-            handleCoreException(exception);
-            return false;
-        }
-        return false;
-    }
-
-    /**
-     * Gets the label provider and creates it if it does not exist yet. 
-     * Throws a CoreException if there is a problem
-     * creating the labelProvider.
-     * This method should not be called unless a check for
-     * enabled to be true is done first.
-     * @return Returns a ILabelDecorator
-     */
-    protected abstract IBaseLabelProvider internalGetLabelProvider()
-            throws CoreException;
-
-    /** 
-     * A CoreException has occured. Inform the user and disable
-     * the receiver.
-     */
-
-    protected void handleCoreException(CoreException exception) {
-
-        //If there is an error then reset the enabling to false
-        WorkbenchPlugin.log(exception);
-        crashDisable();
-    }
-
-    /**
-     * A crash has occured. Disable the receiver without notification.
-     */
-    public void crashDisable() {
-        this.enabled = false;
-    }
-
-    /**
-     * Return whether or not this is a full or lightweight definition.
-     * @return <code>true</code> if this is not a lightweight decorator.
-     */
-    public abstract boolean isFull();
-
-	/**
-	 * Return the configuration element.
-	 * 
-	 * @return the configuration element
-	 * @since 3.1
-	 */
-	public IConfigurationElement getConfigurationElement() {
-		return definingElement;
-	}
-
-    /**
-     * Return whether the decorator is applicable to the given element
-     * @param element the element to be decorated
-     * @return whether the decorator w=should be applied to the element
-     */
-    public boolean isEnabledFor(Object element) {
-    	if(isEnabled()){
-    		ActionExpression expression =  getEnablement();
-    		if(expression != null) {
-				return expression.isEnabledFor(element);
-			}
-    		return true;//Always on if no expression
-    	}
-    	return false;
-       
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java
deleted file mode 100644
index d2ac8dc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorManager.java
+++ /dev/null
@@ -1,1249 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.DecorationContext;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IColorDecorator;
-import org.eclipse.jface.viewers.IDecorationContext;
-import org.eclipse.jface.viewers.IDelayedLabelDecorator;
-import org.eclipse.jface.viewers.IFontDecorator;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.jface.viewers.LabelDecorator;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IDecoratorManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.LegacyResourceSupport;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The DecoratorManager is the class that handles all of the decorators defined
- * in the image.
- * 
- * @since 2.0
- */
-public class DecoratorManager implements ILabelProviderListener,
-		IDecoratorManager, IExtensionChangeHandler {
-
-	private static String EXTENSIONPOINT_UNIQUE_ID = WorkbenchPlugin.PI_WORKBENCH
-			+ "." + IWorkbenchRegistryConstants.PL_DECORATORS; //$NON-NLS-1$
-
-	/**
-	 * The family for the decorate job.
-	 */
-	public static final Object FAMILY_DECORATE = new Object();
-
-	private DecorationScheduler scheduler;
-
-	private LightweightDecoratorManager lightweightManager;
-
-	// Hold onto the list of listeners to be told if a change has occured
-	private ListenerList listeners = new ListenerList();
-
-	// The full definitions read from the registry.
-	// Initalize to an empty collection as this is rarely used now.
-	private FullDecoratorDefinition[] fullDefinitions;
-
-	private FullTextDecoratorRunnable fullTextRunnable = new FullTextDecoratorRunnable();
-
-	private FullImageDecoratorRunnable fullImageRunnable = new FullImageDecoratorRunnable();
-
-	private static final FullDecoratorDefinition[] EMPTY_FULL_DEF = new FullDecoratorDefinition[0];
-
-	private final String PREFERENCE_SEPARATOR = ","; //$NON-NLS-1$
-
-	private final String VALUE_SEPARATOR = ":"; //$NON-NLS-1$
-
-	private final String P_TRUE = "true"; //$NON-NLS-1$
-
-	private final String P_FALSE = "false"; //$NON-NLS-1$
-
-	private LocalResourceManager resourceManager;
-
-	
-	/**
-	 * ManagedWorkbenchLabelDecorator is the internal LabelDecorator
-	 * passed as result of calls to {@link IDecoratorManager#getLabelDecorator()}
-	 * @since 3.4
-	 *
-	 */
-	private static class ManagedWorkbenchLabelDecorator extends LabelDecorator
-			implements ILabelDecorator, IDelayedLabelDecorator,
-			IColorDecorator, IFontDecorator {
-
-		private final DecoratorManager decoratorManager;
-		private LocalResourceManager resourceManager;
-
-		/**
-		 * Create a new instance of the receiver that supports decoratorManager
-		 * @param decoratorManager
-		 */
-		public ManagedWorkbenchLabelDecorator(DecoratorManager decoratorManager) {
-			this.decoratorManager = decoratorManager;
-			this.resourceManager = null;
-		}
-
-		/**
-		 * Return a resource manager local to the receiver. 
-		 * @return {@link LocalResourceManager}
-		 */
-		private LocalResourceManager getResourceManager() {
-			if (resourceManager == null) {
-				resourceManager = new LocalResourceManager(decoratorManager
-						.getResourceManager());
-			}
-			return resourceManager;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelDecorator#decorateImage(org.eclipse.swt.graphics.Image,
-		 *      java.lang.Object, org.eclipse.jface.viewers.IDecorationContext)
-		 */
-		public Image decorateImage(Image image, Object element,
-				IDecorationContext context) {
-			return decoratorManager.decorateImage(image, element, context,
-					getResourceManager());
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelDecorator#decorateText(java.lang.String,
-		 *      java.lang.Object, org.eclipse.jface.viewers.IDecorationContext)
-		 */
-		public String decorateText(String text, Object element,
-				IDecorationContext context) {
-			return decoratorManager.decorateText(text, element, context);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelDecorator#prepareDecoration(java.lang.Object,
-		 *      java.lang.String, org.eclipse.jface.viewers.IDecorationContext)
-		 */
-		public boolean prepareDecoration(Object element, String originalText,
-				IDecorationContext context) {
-			return decoratorManager.prepareDecoration(element, originalText,
-					context);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IDelayedLabelDecorator#prepareDecoration(java.lang.Object,
-		 *      java.lang.String)
-		 */
-		public boolean prepareDecoration(Object element, String originalText) {
-			return prepareDecoration(element, originalText,
-					DecorationContext.DEFAULT_CONTEXT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IFontDecorator#decorateFont(java.lang.Object)
-		 */
-		public Font decorateFont(Object element) {
-			return decoratorManager.decorateFont(element);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IColorDecorator#decorateBackground(java.lang.Object)
-		 */
-		public Color decorateBackground(Object element) {
-			return decoratorManager.decorateBackground(element);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IColorDecorator#decorateForeground(java.lang.Object)
-		 */
-		public Color decorateForeground(Object element) {
-			return decoratorManager.decorateForeground(element);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ILabelDecorator#decorateImage(org.eclipse.swt.graphics.Image,
-		 *      java.lang.Object)
-		 */
-		public Image decorateImage(Image image, Object element) {
-			return decorateImage(image, element,
-					DecorationContext.DEFAULT_CONTEXT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ILabelDecorator#decorateText(java.lang.String,
-		 *      java.lang.Object)
-		 */
-		public String decorateText(String text, Object element) {
-			return decorateText(text, element,
-					DecorationContext.DEFAULT_CONTEXT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void addListener(ILabelProviderListener listener) {
-			decoratorManager.addListener(listener);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-		 */
-		public void dispose() {
-			if (resourceManager != null) {
-				resourceManager.dispose();
-				resourceManager = null;
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
-		 *      java.lang.String)
-		 */
-		public boolean isLabelProperty(Object element, String property) {
-			return decoratorManager.isLabelProperty(element, property);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void removeListener(ILabelProviderListener listener) {
-			decoratorManager.removeListener(listener);
-		}
-
-	}
-
-	/**
-	 * Create a new instance of the receiver and load the settings from the
-	 * installed plug-ins.
-	 */
-	public DecoratorManager() {
-
-		scheduler = new DecorationScheduler(this);
-		IExtensionTracker tracker = PlatformUI.getWorkbench()
-				.getExtensionTracker();
-		tracker.registerHandler(this, ExtensionTracker
-				.createExtensionPointFilter(getExtensionPointFilter()));
-
-		resourceManager = null;
-	}
-
-	/**
-	 * Initalize the decorator definitions.
-	 */
-	private void initializeDecoratorDefinitions() {
-		DecoratorRegistryReader reader = new DecoratorRegistryReader();
-		Collection values = reader
-				.readRegistry(Platform.getExtensionRegistry());
-
-		ArrayList full = new ArrayList();
-		ArrayList lightweight = new ArrayList();
-		Iterator allDefinitions = values.iterator();
-		IExtensionTracker configurationElementTracker = PlatformUI
-				.getWorkbench().getExtensionTracker();
-		while (allDefinitions.hasNext()) {
-			DecoratorDefinition nextDefinition = (DecoratorDefinition) allDefinitions
-					.next();
-			if (nextDefinition.isFull()) {
-				full.add(nextDefinition);
-			} else {
-				lightweight.add(nextDefinition);
-			}
-
-			configurationElementTracker.registerObject(nextDefinition
-					.getConfigurationElement().getDeclaringExtension(),
-					nextDefinition, IExtensionTracker.REF_WEAK);
-		}
-
-		fullDefinitions = new FullDecoratorDefinition[full.size()];
-		full.toArray(fullDefinitions);
-
-		LightweightDecoratorDefinition[] lightweightDefinitions = new LightweightDecoratorDefinition[lightweight
-				.size()];
-		lightweight.toArray(lightweightDefinitions);
-
-		lightweightManager = new LightweightDecoratorManager(
-				lightweightDefinitions);
-
-		applyDecoratorsPreference();
-	}
-
-	/**
-	 * For dynamic UI
-	 * 
-	 * @param definition
-	 *            the definition to add
-	 * @since 3.0
-	 */
-	public void addDecorator(DecoratorDefinition definition) {
-		if (definition.isFull()) {
-			if (getFullDecoratorDefinition(definition.getId()) == null) {
-				FullDecoratorDefinition[] oldDefs = getFullDefinitions();
-				fullDefinitions = new FullDecoratorDefinition[fullDefinitions.length + 1];
-				System
-						.arraycopy(oldDefs, 0, fullDefinitions, 0,
-								oldDefs.length);
-				fullDefinitions[oldDefs.length] = (FullDecoratorDefinition) definition;
-				clearCaches();
-				updateForEnablementChange();
-			}
-		} else {
-			if (getLightweightManager().addDecorator(
-					(LightweightDecoratorDefinition) definition)) {
-				clearCaches();
-				updateForEnablementChange();
-			}
-		}
-		((Workbench) PlatformUI.getWorkbench()).getExtensionTracker()
-				.registerObject(
-						definition.getConfigurationElement()
-								.getDeclaringExtension(), definition,
-						IExtensionTracker.REF_WEAK);
-	}
-
-	/**
-	 * See if the supplied decorator cache has a value for the element. If not
-	 * calculate it from the enabledDefinitions and update the cache.
-	 * 
-	 * @return Collection of DecoratorDefinition.
-	 * @param element
-	 *            The element being tested.
-	 * @param enabledDefinitions
-	 *            The definitions currently defined for this decorator.
-	 */
-	static Collection getDecoratorsFor(Object element,
-			DecoratorDefinition[] enabledDefinitions) {
-
-		ArrayList decorators = new ArrayList();
-
-		for (int i = 0; i < enabledDefinitions.length; i++) {
-			if (enabledDefinitions[i].isEnabledFor(element)) {
-				decorators.add(enabledDefinitions[i]);
-			}
-		}
-
-		return decorators;
-
-	}
-
-	/**
-	 * Add the listener to the list of listeners.
-	 */
-	public void addListener(ILabelProviderListener listener) {
-		listeners.add(listener);
-	}
-
-	/**
-	 * Remove the listener from the list.
-	 */
-	public void removeListener(ILabelProviderListener listener) {
-		listeners.remove(listener);
-		scheduler.listenerRemoved(listener);
-	}
-
-	/**
-	 * Get the list of elements listening to the receiver.
-	 * 
-	 * @return ILabelProviderListener []
-	 */
-	ILabelProviderListener[] getListeners() {
-		Object[] array = listeners.getListeners();
-		ILabelProviderListener[] listenerArray = new ILabelProviderListener[array.length];
-		System.arraycopy(array, 0, listenerArray, 0, listenerArray.length);
-		return listenerArray;
-	}
-
-	/**
-	 * Inform all of the listeners that require an update
-	 * 
-	 * @param listener
-	 *            The listener we are updating.
-	 * @param event
-	 *            the event with the update details
-	 */
-	void fireListener(final LabelProviderChangedEvent event,
-			final ILabelProviderListener listener) {
-		SafeRunner.run(new SafeRunnable() {
-			public void run() {
-				listener.labelProviderChanged(event);
-			}
-		});
-
-	}
-
-	/**
-	 * Inform all of the listeners that require an update
-	 * 
-	 * @param event
-	 *            the event with the update details
-	 */
-	void fireListeners(final LabelProviderChangedEvent event) {
-		Object[] array = listeners.getListeners();
-		for (int i = 0; i < array.length; i++) {
-			final ILabelProviderListener l = (ILabelProviderListener) array[i];
-			SafeRunner.run(new SafeRunnable() {
-				public void run() {
-					l.labelProviderChanged(event);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Fire any listeners from the UIThread. Used for cases where this may be
-	 * invoked outside of the UI by the public API.
-	 * 
-	 * @param event
-	 *            the event with the update details
-	 */
-	void fireListenersInUIThread(final LabelProviderChangedEvent event) {
-
-		// No updates if there is no UI
-		if (!PlatformUI.isWorkbenchRunning()) {
-			return;
-		}
-
-		// Only bother with the job if in the UI Thread
-		if (Thread.currentThread() == PlatformUI.getWorkbench().getDisplay()
-				.getThread()) {
-			fireListeners(event);
-			return;
-		}
-
-		WorkbenchJob updateJob = new WorkbenchJob(
-				WorkbenchMessages.DecorationScheduler_UpdateJobName) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-				fireListeners(event);
-				return Status.OK_STATUS;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.Job#belongsTo(java.lang.Object)
-			 */
-			public boolean belongsTo(Object family) {
-				return FAMILY_DECORATE == family;
-			}
-		};
-		updateJob.setSystem(true);
-		updateJob.schedule();
-
-	}
-
-	
-	/**
-	 * Decorate the text in the reciever using the context.
-	 * @param text
-	 * @param element
-	 * @param context
-	 * @return String
-	 * @see LabelDecorator#decorateText(String, Object, IDecorationContext)
-	 */
-	public String decorateText(String text, Object element,
-			IDecorationContext context) {
-		// Get any adaptations to IResource
-		Object adapted = getResourceAdapter(element);
-		String result = scheduler.decorateWithText(text, element, adapted,
-				context);
-		FullDecoratorDefinition[] decorators = getDecoratorsFor(element);
-		for (int i = 0; i < decorators.length; i++) {
-			if (decorators[i].isEnabledFor(element)) {
-				String newResult = safeDecorateText(element, result,
-						decorators[i]);
-				if (newResult != null) {
-					result = newResult;
-				}
-			}
-		}
-
-		if (adapted != null) {
-			decorators = getDecoratorsFor(adapted);
-			for (int i = 0; i < decorators.length; i++) {
-				if (decorators[i].isAdaptable()
-						&& decorators[i].isEnabledFor(adapted)) {
-					String newResult = safeDecorateText(adapted, result,
-							decorators[i]);
-					if (newResult != null) {
-						result = newResult;
-					}
-				}
-			}
-		}
-
-		return result;
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ILabelDecorator#decorateText(java.lang.String, java.lang.Object)
-	 */
-	public String decorateText(String text, Object element) {
-		return decorateText(text, element, DecorationContext.DEFAULT_CONTEXT);
-	}
-
-	/**
-	 * Decorate the text in a SafeRunnable.
-	 * 
-	 * @param element
-	 *            The element we are decorating
-	 * @param start
-	 *            The currently decorated String
-	 * @param decorator
-	 *            The decorator to run.
-	 * @return String
-	 */
-	private String safeDecorateText(Object element, String start,
-			FullDecoratorDefinition decorator) {
-		fullTextRunnable.setValues(start, element, decorator);
-		SafeRunner.run(fullTextRunnable);
-		String newResult = fullTextRunnable.getResult();
-		return newResult;
-	}
-
-	/**
-	 * Decorate the image within the context. Allocate any new images in
-	 * localResourceManager
-	 * @param image
-	 * @param element
-	 * @param context
-	 * @param localResourceManager
-	 * @return Image
-	 * @see LabelDecorator#decorateImage(Image, Object, IDecorationContext)
-	 */
-	public Image decorateImage(Image image, Object element,
-			IDecorationContext context, ResourceManager localResourceManager) {
-		Object adapted = getResourceAdapter(element);
-		Image result = scheduler.decorateWithOverlays(image, element, adapted,
-				context, localResourceManager);
-		FullDecoratorDefinition[] decorators = getDecoratorsFor(element);
-
-		for (int i = 0; i < decorators.length; i++) {
-			if (decorators[i].isEnabledFor(element)) {
-				Image newResult = safeDecorateImage(element, result,
-						decorators[i]);
-				if (newResult != null) {
-					result = newResult;
-				}
-			}
-		}
-
-		// Get any adaptations to IResource
-
-		if (adapted != null) {
-			decorators = getDecoratorsFor(adapted);
-			for (int i = 0; i < decorators.length; i++) {
-				if (decorators[i].isAdaptable()
-						&& decorators[i].isEnabledFor(adapted)) {
-					Image newResult = safeDecorateImage(adapted, result,
-							decorators[i]);
-					if (newResult != null) {
-						result = newResult;
-					}
-				}
-			}
-		}
-
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ILabelDecorator#decorateImage(org.eclipse.swt.graphics.Image,
-	 *      java.lang.Object)
-	 */
-	public Image decorateImage(Image image, Object element) {
-		return decorateImage(image, element, DecorationContext.DEFAULT_CONTEXT,
-				getResourceManager());
-	}
-
-	/**
-	 * Decorate the image in a SafeRunnable.
-	 * 
-	 * @param element
-	 *            The element we are decorating
-	 * @param start
-	 *            The currently decorated Image
-	 * @param decorator
-	 *            The decorator to run.
-	 * @return Image
-	 */
-	private Image safeDecorateImage(Object element, Image start,
-			FullDecoratorDefinition decorator) {
-		fullImageRunnable.setValues(start, element, decorator);
-		SafeRunner.run(fullImageRunnable);
-		Image newResult = fullImageRunnable.getResult();
-		return newResult;
-	}
-
-	/**
-	 * Get the resource adapted object for the supplied element. Return
-	 * <code>null</code>. if there isn't one.
-	 * 
-	 * @param element
-	 * @return Object or <code>null</code>.
-	 */
-	private Object getResourceAdapter(Object element) {
-		Object adapted = LegacyResourceSupport
-				.getAdaptedContributorResource(element);
-		if (adapted != element) {
-			return adapted; // Avoid applying decorator twice
-		}
-		return null;
-	}
-
-	/**
-	 * Return whether or not the decorator registered for element has a label
-	 * property called property name.
-	 */
-	public boolean isLabelProperty(Object element, String property) {
-		return isLabelProperty(element, property, true);
-	}
-
-	/**
-	 * Return whether or not the decorator registered for element has a label
-	 * property called property name. Check for an adapted resource if
-	 * checkAdapted is true.
-	 * 
-	 * @param element
-	 * @param property
-	 * @param checkAdapted
-	 * @return boolean <code>true</code> if there is a label property for
-	 *         element or its adapted value
-	 */
-	public boolean isLabelProperty(Object element, String property,
-			boolean checkAdapted) {
-		boolean fullCheck = isLabelProperty(element, property,
-				getDecoratorsFor(element));
-
-		if (fullCheck) {
-			return fullCheck;
-		}
-
-		boolean lightweightCheck = isLabelProperty(element, property,
-				getLightweightManager().getDecoratorsFor(element));
-
-		if (lightweightCheck) {
-			return true;
-		}
-
-		if (checkAdapted) {
-			// Get any adaptions to IResource
-			Object adapted = getResourceAdapter(element);
-			if (adapted == null || adapted == element) {
-				return false;
-			}
-
-			fullCheck = isLabelProperty(adapted, property,
-					getDecoratorsFor(adapted));
-			if (fullCheck) {
-				return fullCheck;
-			}
-
-			return isLabelProperty(adapted, property, lightweightManager
-					.getDecoratorsFor(adapted));
-		}
-		return false;
-	}
-
-	private boolean isLabelProperty(Object element, String property,
-			DecoratorDefinition[] decorators) {
-		for (int i = 0; i < decorators.length; i++) {
-			if (decorators[i].isEnabledFor(element)
-					&& decorators[i].isLabelProperty(element, property)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Return the enabled full decorator definitions.
-	 * 
-	 * @return FullDecoratorDefinition[]
-	 */
-	private FullDecoratorDefinition[] enabledFullDefinitions() {
-
-		FullDecoratorDefinition[] full = getFullDefinitions();
-		// As this are a deprecated data type optimize for
-		// the undefined case.
-		if (full.length == 0) {
-			return full;
-		}
-		ArrayList result = new ArrayList();
-		for (int i = 0; i < full.length; i++) {
-			if (full[i].isEnabled()) {
-				result.add(full[i]);
-			}
-		}
-		FullDecoratorDefinition[] returnArray = new FullDecoratorDefinition[result
-				.size()];
-		result.toArray(returnArray);
-		return returnArray;
-	}
-
-	/*
-	 * @see IBaseLabelProvider#dispose()
-	 */
-	public void dispose() {
-		// do nothing
-	}
-
-	/**
-	 * Clear the caches in the manager. This is required to avoid updates that
-	 * may occur due to changes in enablement.
-	 */
-	public void clearCaches() {
-		getLightweightManager().reset();
-		fullTextRunnable.clearReferences();
-		fullImageRunnable.clearReferences();
-	}
-
-	/**
-	 * Enablement had changed. Fire the listeners and write the preference.
-	 */
-	public void updateForEnablementChange() {
-		// Clear any results that may be around as all labels have changed
-		scheduler.clearResults();
-		fireListenersInUIThread(new LabelProviderChangedEvent(this));
-		writeDecoratorsPreference();
-	}
-
-	/**
-	 * Get the DecoratorDefinitions defined on the receiver.
-	 * 
-	 * @return DecoratorDefinition[]
-	 */
-	public DecoratorDefinition[] getAllDecoratorDefinitions() {
-		LightweightDecoratorDefinition[] lightweightDefinitions = getLightweightManager()
-				.getDefinitions();
-		DecoratorDefinition[] returnValue = new DecoratorDefinition[fullDefinitions.length
-				+ lightweightDefinitions.length];
-		System.arraycopy(fullDefinitions, 0, returnValue, 0,
-				fullDefinitions.length);
-		System.arraycopy(lightweightDefinitions, 0, returnValue,
-				fullDefinitions.length, lightweightDefinitions.length);
-		return returnValue;
-	}
-
-	/*
-	 * @see ILabelProviderListener#labelProviderChanged(LabelProviderChangedEvent)
-	 */
-	public void labelProviderChanged(LabelProviderChangedEvent event) {
-		Object[] elements = event.getElements();
-		scheduler.clearResults();
-		// If the elements are not specified send out a general update
-		if (elements == null) {
-			fireListeners(event);
-		} else {
-			// Assume that someone is going to care about the
-			// decoration result and just start it right away
-			for (int i = 0; i < elements.length; i++) {
-				Object adapted = getResourceAdapter(elements[i]);
-				// Force an update in case full decorators are the only ones
-				// enabled
-				scheduler.queueForDecoration(elements[i], adapted, true, null,
-						DecorationContext.DEFAULT_CONTEXT);
-			}
-		}
-	}
-
-	/**
-	 * Store the currently enabled decorators in preference store.
-	 */
-	private void writeDecoratorsPreference() {
-		StringBuffer enabledIds = new StringBuffer();
-		writeDecoratorsPreference(enabledIds, getFullDefinitions());
-		writeDecoratorsPreference(enabledIds, getLightweightManager()
-				.getDefinitions());
-
-		WorkbenchPlugin.getDefault().getPreferenceStore().setValue(
-				IPreferenceConstants.ENABLED_DECORATORS, enabledIds.toString());
-		PrefUtil.savePrefs();
-	}
-
-	private void writeDecoratorsPreference(StringBuffer enabledIds,
-			DecoratorDefinition[] definitions) {
-		for (int i = 0; i < definitions.length; i++) {
-			enabledIds.append(definitions[i].getId());
-			enabledIds.append(VALUE_SEPARATOR);
-			if (definitions[i].isEnabled()) {
-				enabledIds.append(P_TRUE);
-			} else {
-				enabledIds.append(P_FALSE);
-			}
-
-			enabledIds.append(PREFERENCE_SEPARATOR);
-		}
-	}
-
-	/**
-	 * Get the currently enabled decorators in preference store and set the
-	 * state of the current definitions accordingly.
-	 */
-	public void applyDecoratorsPreference() {
-
-		String preferenceValue = WorkbenchPlugin.getDefault()
-				.getPreferenceStore().getString(
-						IPreferenceConstants.ENABLED_DECORATORS);
-
-		StringTokenizer tokenizer = new StringTokenizer(preferenceValue,
-				PREFERENCE_SEPARATOR);
-		Set enabledIds = new HashSet();
-		Set disabledIds = new HashSet();
-		while (tokenizer.hasMoreTokens()) {
-			String nextValuePair = tokenizer.nextToken();
-
-			// Strip out the true or false to get the id
-			String id = nextValuePair.substring(0, nextValuePair
-					.indexOf(VALUE_SEPARATOR));
-			if (nextValuePair.endsWith(P_TRUE)) {
-				enabledIds.add(id);
-			} else {
-				disabledIds.add(id);
-			}
-		}
-
-		FullDecoratorDefinition[] full = getFullDefinitions();
-		for (int i = 0; i < full.length; i++) {
-			String id = full[i].getId();
-			if (enabledIds.contains(id)) {
-				full[i].setEnabled(true);
-			} else {
-				if (disabledIds.contains(id)) {
-					full[i].setEnabled(false);
-				}
-			}
-		}
-
-		LightweightDecoratorDefinition[] lightweightDefinitions = getLightweightManager()
-				.getDefinitions();
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			String id = lightweightDefinitions[i].getId();
-			if (enabledIds.contains(id)) {
-				lightweightDefinitions[i].setEnabled(true);
-			} else {
-				if (disabledIds.contains(id)) {
-					lightweightDefinitions[i].setEnabled(false);
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * Shutdown the decorator manager by disabling all of the decorators so that
-	 * dispose() will be called on them.
-	 */
-	public void shutdown() {
-		// Disable all of the enabled decorators
-		// so as to force a dispose of thier decorators
-		FullDecoratorDefinition[] full = getFullDefinitions();
-		for (int i = 0; i < full.length; i++) {
-			if (full[i].isEnabled()) {
-				full[i].setEnabled(false);
-			}
-		}
-		if (lightweightManager != null) {
-			getLightweightManager().shutdown();
-		}
-		scheduler.shutdown();
-		dispose();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IDecoratorManager#getEnabled(java.lang.String)
-	 */
-	public boolean getEnabled(String decoratorId) {
-		DecoratorDefinition definition = getDecoratorDefinition(decoratorId);
-		if (definition == null) {
-			return false;
-		}
-		return definition.isEnabled();
-	}
-
-	/**
-	 * @see IDecoratorManager#getLabelDecorator()
-	 */
-	public ILabelDecorator getLabelDecorator() {
-		return new ManagedWorkbenchLabelDecorator(this);
-	}
-
-	/**
-	 * Returns the resource manager used to created images for the light weight
-	 * decorator.
-	 * 
-	 * @return the resource manager
-	 */
-	public ResourceManager getResourceManager() {
-		if (resourceManager == null) {
-			resourceManager = new LocalResourceManager(JFaceResources
-					.getResources(PlatformUI.getWorkbench().getDisplay()));
-		}
-		return resourceManager;
-	}
-
-	/**
-	 * @see IDecoratorManager#setEnabled(String, boolean)
-	 */
-	public void setEnabled(String decoratorId, boolean enabled) {
-		DecoratorDefinition definition = getDecoratorDefinition(decoratorId);
-		if (definition != null) {
-			definition.setEnabled(enabled);
-			clearCaches();
-			updateForEnablementChange();
-		}
-	}
-
-	/*
-	 * @see IDecoratorManager#getBaseLabelProvider(String)
-	 */
-	public IBaseLabelProvider getBaseLabelProvider(String decoratorId) {
-		IBaseLabelProvider fullProvider = getLabelDecorator(decoratorId);
-		if (fullProvider == null) {
-			return getLightweightLabelDecorator(decoratorId);
-		}
-		return fullProvider;
-	}
-
-	/*
-	 * @see IDecoratorManager#getLabelDecorator(String)
-	 */
-	public ILabelDecorator getLabelDecorator(String decoratorId) {
-		FullDecoratorDefinition definition = getFullDecoratorDefinition(decoratorId);
-
-		// Do not return for a disabled decorator
-		if (definition != null && definition.isEnabled()) {
-			return definition.getDecorator();
-		}
-		return null;
-	}
-
-	/*
-	 * @see IDecoratorManager#getLightweightLabelDecorator(String)
-	 */
-	public ILightweightLabelDecorator getLightweightLabelDecorator(
-			String decoratorId) {
-		LightweightDecoratorDefinition definition = getLightweightManager()
-				.getDecoratorDefinition(decoratorId);
-		// Do not return for a disabled decorator
-		if (definition != null && definition.isEnabled()) {
-			return definition.getDecorator();
-		}
-		return null;
-	}
-
-	/**
-	 * Get the DecoratorDefinition with the supplied id
-	 * 
-	 * @return DecoratorDefinition or <code>null</code> if it is not found
-	 * @param decoratorId
-	 *            String
-	 */
-	private DecoratorDefinition getDecoratorDefinition(String decoratorId) {
-		DecoratorDefinition returnValue = getFullDecoratorDefinition(decoratorId);
-		if (returnValue == null) {
-			return getLightweightManager().getDecoratorDefinition(decoratorId);
-		}
-		return returnValue;
-	}
-
-	/**
-	 * Get the FullDecoratorDefinition with the supplied id
-	 * 
-	 * @return FullDecoratorDefinition or <code>null</code> if it is not found
-	 * @param decoratorId
-	 *            the id
-	 */
-	private FullDecoratorDefinition getFullDecoratorDefinition(
-			String decoratorId) {
-		int idx = getFullDecoratorDefinitionIdx(decoratorId);
-		if (idx != -1) {
-			return getFullDefinitions()[idx];
-		}
-		return null;
-	}
-
-	/**
-	 * Return the index of the definition in the array.
-	 * 
-	 * @param decoratorId
-	 *            the id
-	 * @return the index of the definition in the array or <code>-1</code>
-	 * @since 3.1
-	 */
-	private int getFullDecoratorDefinitionIdx(String decoratorId) {
-		FullDecoratorDefinition[] full = getFullDefinitions();
-		for (int i = 0; i < full.length; i++) {
-			if (full[i].getId().equals(decoratorId)) {
-				return i;
-			}
-		}
-		return -1;
-	}
-
-	/**
-	 * Get the full decorator definitions registered for elements of this type.
-	 * 
-	 * @param element
-	 *            The element to look up
-	 * @return FullDecoratorDefinition[]
-	 */
-	private FullDecoratorDefinition[] getDecoratorsFor(Object element) {
-
-		if (element == null) {
-			return EMPTY_FULL_DEF;
-		}
-
-		Collection decorators = getDecoratorsFor(element,
-				enabledFullDefinitions());
-		FullDecoratorDefinition[] decoratorArray = EMPTY_FULL_DEF;
-		if (decorators.size() > 0) {
-			decoratorArray = new FullDecoratorDefinition[decorators.size()];
-			decorators.toArray(decoratorArray);
-		}
-
-		return decoratorArray;
-	}
-
-	/**
-	 * Returns the lightweightManager. This method is public for use by test
-	 * cases. No other classes outside of this package should use this method.
-	 * 
-	 * @return LightweightDecoratorManager
-	 */
-	public LightweightDecoratorManager getLightweightManager() {
-		if (lightweightManager == null) {
-			initializeDecoratorDefinitions();
-		}
-		return lightweightManager;
-	}
-
-	/**
-	 * @see org.eclipse.ui.IDecoratorManager#update(java.lang.String)
-	 */
-	public void update(String decoratorId) {
-
-		IBaseLabelProvider provider = getBaseLabelProvider(decoratorId);
-		if (provider != null) {
-			scheduler.clearResults();
-			fireListeners(new LabelProviderChangedEvent(provider));
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.LabelDecorator#prepareDecoration(java.lang.Object,
-	 *      java.lang.String, org.eclipse.jface.viewers.IDecorationContext)
-	 */
-	public boolean prepareDecoration(Object element, String originalText,
-			IDecorationContext context) {
-		// Check if there is a decoration ready or if there is no lightweight
-		// decorators to be applied
-		if (scheduler.isDecorationReady(element, context)
-				|| !getLightweightManager().hasEnabledDefinitions()) {
-			return true;
-		}
-
-		// Force an update if there is a text already
-		boolean force = true;
-		// If not then do not force as the undecorated value is fine
-		if (originalText == null || originalText.length() == 0) {
-			force = false;
-		}
-
-		// Queue the decoration.
-		scheduler.queueForDecoration(element, getResourceAdapter(element),
-				force, originalText, context);
-
-		// If we are going to force an update just let that happen later.
-		return !force;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IDelayedLabelDecorator#prepareDecoration(java.lang.Object,
-	 *      java.lang.String)
-	 */
-	public boolean prepareDecoration(Object element, String originalText) {
-		return prepareDecoration(element, originalText,
-				DecorationContext.DEFAULT_CONTEXT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IFontDecorator#decorateFont(java.lang.Object)
-	 */
-	public Font decorateFont(Object element) {
-		return scheduler.getFont(element, getResourceAdapter(element));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IColorDecorator#decorateBackground(java.lang.Object)
-	 */
-	public Color decorateBackground(Object element) {
-		return scheduler.getBackgroundColor(element,
-				getResourceAdapter(element));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IColorDecorator#decorateForeground(java.lang.Object)
-	 */
-	public Color decorateForeground(Object element) {
-		return scheduler.getForegroundColor(element,
-				getResourceAdapter(element));
-	}
-
-	/**
-	 * Get all of the defined fullDefinitions. Initalize if required
-	 * 
-	 * @return FullDecoratorDefinition[]
-	 */
-	private FullDecoratorDefinition[] getFullDefinitions() {
-		if (fullDefinitions == null) {
-			initializeDecoratorDefinitions();
-		}
-		return fullDefinitions;
-	}
-
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				EXTENSIONPOINT_UNIQUE_ID);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker,
-	 *      org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker,
-			IExtension addedExtension) {
-		IConfigurationElement addedElements[] = addedExtension
-				.getConfigurationElements();
-		for (int i = 0; i < addedElements.length; i++) {
-			DecoratorRegistryReader reader = new DecoratorRegistryReader();
-			reader.readElement(addedElements[i]);
-			for (Iterator j = reader.getValues().iterator(); j.hasNext();) {
-				addDecorator((DecoratorDefinition) j.next());
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension,
-	 *      java.lang.Object[])
-	 */
-	public void removeExtension(IExtension source, Object[] objects) {
-
-		boolean shouldClear = false;
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof DecoratorDefinition) {
-				DecoratorDefinition definition = (DecoratorDefinition) objects[i];
-				if (definition.isFull()) {
-					int idx = getFullDecoratorDefinitionIdx(definition.getId());
-					if (idx != -1) {
-						FullDecoratorDefinition[] oldDefs = getFullDefinitions();
-						Util
-								.arrayCopyWithRemoval(
-										oldDefs,
-										fullDefinitions = new FullDecoratorDefinition[fullDefinitions.length - 1],
-										idx);
-						shouldClear = true;
-					}
-				} else {
-					shouldClear |= getLightweightManager().removeDecorator(
-							(LightweightDecoratorDefinition) definition);
-				}
-			}
-		}
-
-		if (shouldClear) {
-			clearCaches();
-			updateForEnablementChange();
-		}
-
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java
deleted file mode 100644
index 53cb870..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecoratorRegistryReader.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * The DecoratorRegistryReader is the class that reads the
- * decorator descriptions from the registry
- */
-public class DecoratorRegistryReader extends RegistryReader {
-
-    //The registry values are the ones read from the registry
-    private Collection values = new ArrayList();
-
-    private Collection ids = new HashSet();
-
-    /**
-     * Constructor for DecoratorRegistryReader.
-     */
-    public DecoratorRegistryReader() {
-        super();
-    }
-
-    /*
-     * @see RegistryReader#readElement(IConfigurationElement)
-     */
-    public boolean readElement(IConfigurationElement element) {
-
-    	DecoratorDefinition desc = getDecoratorDefinition(element);
-    	
-    	if (desc == null) {
-			return false;
-		}
-    	
-        values.add(desc);
-
-        return true;
-
-    }
-    
-    /**
-     * Return the DecoratorDefinition defined by element or <code>null</code>
-     * if it cannot be determined.
-     * @param element
-     * @return DecoratorDefinition
-     */
-    DecoratorDefinition getDecoratorDefinition(IConfigurationElement element){
-
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (ids.contains(id)) {
-            logDuplicateId(element);
-            return null;
-        }
-        ids.add(id);
-
-        boolean noClass = element.getAttribute(DecoratorDefinition.ATT_CLASS) == null;
-
-        //Lightweight or Full? It is lightweight if it is declared lightweight or if there is no class
-        if (Boolean.valueOf(element.getAttribute(IWorkbenchRegistryConstants.ATT_LIGHTWEIGHT)).booleanValue() || noClass) {
-
-            String iconPath = element.getAttribute(LightweightDecoratorDefinition.ATT_ICON);
-
-            if (noClass && iconPath == null) {
-                logMissingElement(element, LightweightDecoratorDefinition.ATT_ICON);
-                return null;
-            }
-
-            return new LightweightDecoratorDefinition(id, element);
-        } 
-        return new FullDecoratorDefinition(id, element);
-        
-    }
-
-    /**
-     * Read the decorator extensions within a registry and set 
-     * up the registry values.
-     */
-    Collection readRegistry(IExtensionRegistry in) {
-        values.clear();
-        ids.clear();
-        readRegistry(in, PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_DECORATORS);
-        return values;
-    }
-
-    /**
-     * Return the values.
-     * 
-     * @return the values
-     */
-    public Collection getValues() {
-        return values;
-    }
-
-    /**
-     * Logs a registry error when the configuration element is unknown.
-     */
-    protected void logDuplicateId(IConfigurationElement element) {
-        logError(element, "Duplicate id found: " + element.getAttribute(IWorkbenchRegistryConstants.ATT_ID));//$NON-NLS-1$
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java
deleted file mode 100644
index fe40177..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorDefinition.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * The RunnableDecoratorDefinition is the definition for 
- * decorators that have an ILabelDecorator class to instantiate.
- */
-
-class FullDecoratorDefinition extends DecoratorDefinition {
-
-	ILabelDecorator decorator;
-
-    /**
-     * Create a new instance of the receiver with the
-     * supplied values.
-     */
-
-    FullDecoratorDefinition(String identifier, IConfigurationElement element) {
-        super(identifier, element);
-    }
-
-    /**
-     * Gets the decorator and creates it if it does
-     * not exist yet. Throws a CoreException if there is a problem
-     * creating the decorator.
-     * This method should not be called unless a check for
-     * enabled to be true is done first.
-     * @return Returns a ILabelDecorator
-     */
-    protected ILabelDecorator internalGetDecorator() throws CoreException {
-        if (labelProviderCreationFailed) {
-			return null;
-		}
-
-        final CoreException[] exceptions = new CoreException[1];
-
-        if (decorator == null) {
-            Platform
-                    .run(new SafeRunnable(
-                            NLS.bind(WorkbenchMessages.DecoratorManager_ErrorActivatingDecorator, getName() )) { 
-                        public void run() {
-                            try {
-                                decorator = (ILabelDecorator) WorkbenchPlugin
-                                        .createExtension(
-                                                definingElement,
-                                                DecoratorDefinition.ATT_CLASS);
-                                decorator.addListener(WorkbenchPlugin
-                                        .getDefault().getDecoratorManager());
-                            } catch (CoreException exception) {
-                                exceptions[0] = exception;
-                            }
-                        }
-                    });
-        } else {
-			return decorator;
-		}
-
-        if (decorator == null) {
-            this.labelProviderCreationFailed = true;
-            setEnabled(false);
-        }
-
-        if (exceptions[0] != null) {
-			throw exceptions[0];
-		}
-
-        return decorator;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#refreshDecorator()
-     */
-    protected void refreshDecorator() {
-        //Only do something if disabled so as to prevent
-        //gratutitous activation
-        if (!this.enabled && decorator != null) {
-            IBaseLabelProvider cached = decorator;
-            decorator = null;
-            disposeCachedDecorator(cached);
-        }
-    }
-
-    /**
-     * Decorate the image provided for the element type.
-     * This method should not be called unless a check for
-     * isEnabled() has been done first.
-     * Return null if there is no image or if an error occurs.
-     */
-    Image decorateImage(Image image, Object element) {
-        try {
-            //Internal decorator might be null so be prepared
-            ILabelDecorator currentDecorator = internalGetDecorator();
-            if (currentDecorator != null) {
-				return currentDecorator.decorateImage(image, element);
-			}
-
-        } catch (CoreException exception) {
-            handleCoreException(exception);
-        }
-        return null;
-    }
-
-    /**
-     * Decorate the text provided for the element type.
-     * This method should not be called unless a check for
-     * isEnabled() has been done first.
-     * Return null if there is no text or if there is an exception.
-     */
-    String decorateText(String text, Object element) {
-        try {
-            //Internal decorator might be null so be prepared
-            ILabelDecorator currentDecorator = internalGetDecorator();
-            if (currentDecorator != null) {
-				return currentDecorator.decorateText(text, element);
-			}
-        } catch (CoreException exception) {
-            handleCoreException(exception);
-        }
-        return null;
-    }
-
-    /**
-     * Returns the decorator, or <code>null</code> if not enabled.
-     * 
-     * @return the decorator, or <code>null</code> if not enabled
-     */
-    public ILabelDecorator getDecorator() {
-        return decorator;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#internalGetLabelProvider()
-     */
-    protected IBaseLabelProvider internalGetLabelProvider()
-            throws CoreException {
-        return internalGetDecorator();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#isFull()
-     */
-    public boolean isFull() {
-        return true;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java
deleted file mode 100644
index e51fc53..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullDecoratorRunnable.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-
-/**
- * The FullDecoratorRunnable is the ISafeRunnable that runs
- * the full decorators
- */
-abstract class FullDecoratorRunnable implements ISafeRunnable {
-    protected Object element;
-
-    protected FullDecoratorDefinition decorator;
-
-    /**
-     * Set the values for the element and the decorator.
-     * @param object
-     * @param definition
-     */
-    protected void setValues(Object object, FullDecoratorDefinition definition) {
-        element = object;
-        decorator = definition;
-
-    }
-
-    /*
-     * @see ISafeRunnable.handleException(Throwable).
-     */
-    public void handleException(Throwable exception) {
-        IStatus status = StatusUtil.newStatus(IStatus.ERROR, exception
-                .getMessage(), exception);
-        WorkbenchPlugin.log("Exception in Decorator", status); //$NON-NLS-1$
-        decorator.crashDisable();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java
deleted file mode 100644
index 099e37b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullImageDecoratorRunnable.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The FullImageDecoratorRunnable is the runnable for decorating
- * images
- */
-class FullImageDecoratorRunnable extends FullDecoratorRunnable {
-    Image result = null;
-
-    Image start;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.ISafeRunnable#run()
-     */
-    public void run() throws Exception {
-        result = decorator.decorateImage(start, element);
-    }
-
-    /**
-     * Get the result of the decoration or <code>null</code>
-     * if there was a failure.
-     * @return Image
-     */
-    Image getResult() {
-        return result;
-    }
-
-    /**
-     * Set the values of the initialString and the decorator
-     * and object that are going to be used to determine the
-     * result.
-     * @param initialImage
-     * @param object
-     * @param definition
-     */
-    void setValues(Image initialImage, Object object,
-            FullDecoratorDefinition definition) {
-        setValues(object, definition);
-        start = initialImage;
-        result = null;
-    }
-
-
-	/**
-	 * Clear decorator references.
-	 * @since 3.1
-	 */
-	void clearReferences() {
-		decorator = null;		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java
deleted file mode 100644
index 8ea321c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/FullTextDecoratorRunnable.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-/**
- * FullTextDecoratorRunnable is the decorator that runs the text
- * decoration.
- */
-public class FullTextDecoratorRunnable extends FullDecoratorRunnable {
-    String result = null;
-
-    String start;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.ISafeRunnable#run()
-     */
-    public void run() throws Exception {
-        result = decorator.decorateText(start, element);
-    }
-
-    /**
-     * Get the result of the decoration or <code>null</code>
-     * if there was a failure.
-     * @return the result
-     */
-    String getResult() {
-        return result;
-    }
-
-    /**
-     * Set the values of the initialString and the decorator
-     * and object that are going to be used to determine the
-     * result.
-     * @param initialString
-     * @param object
-     * @param definition
-     */
-    void setValues(String initialString, Object object,
-            FullDecoratorDefinition definition) {
-        setValues(object, definition);
-        start = initialString;
-        result = null;
-    }
-
-	/**
-	 * Clear decorator references.
-	 * @since 3.1
-	 */
-	void clearReferences() {
-		decorator = null;		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java
deleted file mode 100644
index 686e225..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightActionDescriptor.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.internal.dialogs.DialogUtil;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Represent the description of an action within
- * an action set. It does not create an action.
- *
- * [Issue: This class overlaps with ActionDescriptor
- *		and should be reviewed to determine if code
- *		reuse if possible.]
- */
-public class LightweightActionDescriptor implements IAdaptable,
-        IWorkbenchAdapter {
-    private static final Object[] NO_CHILDREN = new Object[0];
-
-    private String id;
-
-    private String label;
-
-    private String description;
-
-    private ImageDescriptor image;
-
-    /**
-     * Create a new instance of <code>LightweightActionDescriptor</code>.
-     * 
-     * @param actionElement the configuration element
-     */
-    public LightweightActionDescriptor(IConfigurationElement actionElement) {
-        super();
-
-        this.id = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        this.label = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-        this.description = actionElement
-                .getAttribute(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-
-        String iconName = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-        if (iconName != null) {
-            IExtension extension = actionElement.getDeclaringExtension();
-            this.image = AbstractUIPlugin.imageDescriptorFromPlugin(extension
-                    .getNamespace(), iconName);
-        }
-    }
-
-    /**
-     * 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 action's description.
-     * 
-     * @return the description
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Returns the action's id.
-     * 
-     * @return the id
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the action's image descriptor.
-     * 
-     * @return the image descriptor
-     */
-    public ImageDescriptor getImageDescriptor() {
-        return image;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
-     */
-    public ImageDescriptor getImageDescriptor(Object o) {
-        if (o == this) {
-			return getImageDescriptor();
-		}
-        return null;
-    }
-
-    /**
-     * Returns the action's label.
-     * 
-     * @return the label
-     */
-    public String getLabel() {
-        return label;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
-     */
-    public String getLabel(Object o) {
-        if (o == this) {
-            String text = getLabel();
-            int end = text.lastIndexOf('@');
-            if (end >= 0) {
-				text = text.substring(0, end);
-			}
-            return DialogUtil.removeAccel(text);
-        }
-        return o == null ? "" : o.toString();//$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
-     */
-    public Object[] getChildren(Object o) {
-        return NO_CHILDREN;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
-     */
-    public Object getParent(Object o) {
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java
deleted file mode 100644
index 9f67923..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorDefinition.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.ui.internal.ActionExpression;
-import org.eclipse.ui.internal.IObjectContributor;
-import org.eclipse.ui.internal.LegacyResourceSupport;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * The DeclarativeDecoratorDefinition is a decorator definition that is defined
- * entirely from xml and will not require the activation of its defining
- * plug-in.
- */
-class LightweightDecoratorDefinition extends DecoratorDefinition implements
-		IObjectContributor {
-
-	private static final String ATT_LOCATION = "location"; //$NON-NLS-1$
-
-	static final String ATT_ICON = "icon"; //$NON-NLS-1$
-
-	// Constants for quadrants
-	/**
-	 * Position <code>TOP_LEFT</code>. Value <code>0</code>
-	 */
-	public static final int TOP_LEFT = 0;
-
-	/**
-	 * Position <code>TOP_RIGHT</code>. Value <code>1</code>
-	 */
-	public static final int TOP_RIGHT = 1;
-
-	/**
-	 * Position <code>BOTTOM_LEFT</code>. Value <code>2</code>
-	 */
-	public static final int BOTTOM_LEFT = 2;
-
-	/**
-	 * Position <code>BOTTOM_RIGHT</code>. Value <code>3</code>
-	 */
-	public static final int BOTTOM_RIGHT = 3;
-
-	/**
-	 * Position <code>UNDERLAY</code>. Value <code>4</code>
-	 */
-	public static final int UNDERLAY = 4;
-
-	private static final String UNDERLAY_STRING = "UNDERLAY"; //$NON-NLS-1$
-
-	/**
-	 * Position <code>REPLACE</code>. Value <code>5</code>
-	 */
-	public static final int REPLACE = 5;
-	
-	private static final String REPLACE_STRING = "REPLACE"; //$NON-NLS-1$
-	
-	private static final String ATT_QUADRANT = "quadrant"; //$NON-NLS-1$
-
-	// Constants for quadrants
-	private static final String TOP_LEFT_STRING = "TOP_LEFT"; //$NON-NLS-1$
-
-	private static final String TOP_RIGHT_STRING = "TOP_RIGHT"; //$NON-NLS-1$
-
-	private static final String BOTTOM_LEFT_STRING = "BOTTOM_LEFT"; //$NON-NLS-1$
-
-	/**
-	 * The DeclarativeDecorator is the internal decorator supplied by the
-	 * decorator definition.
-	 */
-	private ILightweightLabelDecorator decorator;
-
-	private int quadrant;
-
-	private boolean hasReadQuadrant;
-
-	private String[] objectClasses;
-
-	LightweightDecoratorDefinition(String identifier,
-			IConfigurationElement element) {
-		super(identifier, element);
-	}
-
-	/**
-	 * Gets the decorator and creates it if it does not exist yet. Throws a
-	 * CoreException if there is a problem creating the decorator. This method
-	 * should not be called unless a check for enabled to be true is done first.
-	 * 
-	 * @return Returns a ILabelDecorator
-	 */
-	protected ILightweightLabelDecorator internalGetDecorator()
-			throws CoreException {
-		if (labelProviderCreationFailed) {
-			return null;
-		}
-
-		final CoreException[] exceptions = new CoreException[1];
-
-		if (decorator == null) {
-
-			if (isDeclarative()) {
-				decorator = new DeclarativeDecorator(definingElement,
-						getIconLocation());
-			} else {
-
-				Platform.run(new ISafeRunnable() {
-					public void run() {
-						try {
-							decorator = (ILightweightLabelDecorator) WorkbenchPlugin
-									.createExtension(definingElement,
-											DecoratorDefinition.ATT_CLASS);
-							decorator.addListener(WorkbenchPlugin.getDefault()
-									.getDecoratorManager());
-						} catch (CoreException exception) {
-							exceptions[0] = exception;
-						}
-					}
-
-					/*
-					 * (non-Javadoc) Method declared on ISafeRunnable.
-					 */
-					public void handleException(Throwable e) {
-						// Do nothing as Core will handle the logging
-					}
-				});
-			}
-		} else {
-			return decorator;
-		}
-
-		if (decorator == null) {
-			this.labelProviderCreationFailed = true;
-			setEnabled(false);
-		}
-
-		if (exceptions[0] != null) {
-			throw exceptions[0];
-		}
-
-		return decorator;
-	}
-
-	/**
-	 * Return whether or not this represents a declarative decorator.
-	 * 
-	 * @return boolean <code>true</code> if this is declarative
-	 */
-	private boolean isDeclarative() {
-		return definingElement.getAttribute(DecoratorDefinition.ATT_CLASS) == null;
-	}
-
-	/**
-	 * Return the icon location.
-	 * 
-	 * @return the icon location
-	 */
-	private String getIconLocation() {
-		return definingElement.getAttribute(ATT_ICON);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#internalGetLabelProvider()
-	 */
-	protected IBaseLabelProvider internalGetLabelProvider()
-			throws CoreException {
-		return internalGetDecorator();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#isFull()
-	 */
-	public boolean isFull() {
-		return false;
-	}
-
-	/**
-	 * Returns the quadrant.One of the following constants in
-	 * DecoratorRegistryReader: TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT
-	 * UNDERLAY REPLACE
-	 * 
-	 * @return int
-	 */
-	public int getQuadrant() {
-		if (!hasReadQuadrant) {
-			hasReadQuadrant = true;
-			quadrant = getLocationConstant(definingElement
-					.getAttribute(ATT_LOCATION), definingElement);
-		}
-		return quadrant;
-	}
-
-	/**
-	 * Get the constant value based on the location supplied. Default to bottom
-	 * right.
-	 * 
-	 * @since 3.1
-	 */
-	private int getLocationConstant(String locationDefinition,
-			IConfigurationElement element) {
-
-		// Backwards compatibility
-		if (locationDefinition == null) {
-			locationDefinition = element.getAttribute(ATT_QUADRANT);
-		}
-
-		if (TOP_RIGHT_STRING.equals(locationDefinition)) {
-			return TOP_RIGHT;
-		}
-		if (TOP_LEFT_STRING.equals(locationDefinition)) {
-			return TOP_LEFT;
-		}
-		if (BOTTOM_LEFT_STRING.equals(locationDefinition)) {
-			return BOTTOM_LEFT;
-		}
-		if (UNDERLAY_STRING.equals(locationDefinition)) {
-			return UNDERLAY;
-		}
-		if (REPLACE_STRING.equals(locationDefinition)) {
-			return REPLACE;
-		}
-		return BOTTOM_RIGHT;
-
-	}
-
-	/**
-	 * Decorate the element using the decoration to store the result.
-	 * @param element
-	 * @param decoration
-	 */
-	public void decorate(Object element, IDecoration decoration) {
-		try {
-			// Internal decorator might be null so be prepared
-			ILightweightLabelDecorator currentDecorator = internalGetDecorator();
-			if(currentDecorator == null) {
-				return;
-			}
-			
-			if (isAdaptable()) {
-				String[] classes = getObjectClasses();
-				for (int i = 0; i < classes.length; i++) {
-					String className = classes[i];
-					Object adapted = LegacyResourceSupport.getAdapter(element,
-							className);
-					if (adapted != null) {
-						currentDecorator.decorate(adapted, decoration);
-					}					
-				}				
-			}
-			else{
-				if (currentDecorator != null && element != null) {
-					currentDecorator.decorate(element, decoration);
-				}
-			}
-		} catch (CoreException exception) {
-			handleCoreException(exception);
-		}
-
-	}
-
-	/**
-	 * Returns the lightweight decorator, or <code>null</code> if not enabled.
-	 * 
-	 * @return the lightweight decorator, or <code>null</code> if not enabled
-	 */
-	public ILightweightLabelDecorator getDecorator() {
-		return decorator;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#refreshDecorator()
-	 */
-	protected void refreshDecorator() {
-		// Only do something if disabled so as to prevent
-		// gratutitous activation
-		if (!this.enabled && decorator != null) {
-			IBaseLabelProvider cached = decorator;
-			decorator = null;
-			disposeCachedDecorator(cached);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IObjectContributor#isApplicableTo(java.lang.Object)
-	 */
-	public boolean isApplicableTo(Object object) {
-		return isEnabledFor(object);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.IObjectContributor#canAdapt()
-	 */
-	public boolean canAdapt() {
-		return isAdaptable();
-	}
-
-	/**
-	 * Get the object classes to which this decorator is registered.
-	 * 
-	 * @return String [] the object classes to which this decorator is
-	 *         registered
-	 */
-	public String[] getObjectClasses() {
-		if (objectClasses == null) {
-			getEnablement();
-		}
-		return objectClasses;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.decorators.DecoratorDefinition#initializeEnablement()
-	 */
-	protected void initializeEnablement() {
-		super.initializeEnablement();
-		ActionExpression expression = getEnablement();
-		if (expression != null) {
-			objectClasses = expression.extractObjectClasses();
-		}
-
-		// If the class is null set it to Object
-		if (objectClasses == null) {
-			objectClasses = new String[] {Object.class.getName()};
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java
deleted file mode 100644
index e575417..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/LightweightDecoratorManager.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.decorators;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.internal.ObjectContributorManager;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * The LightweightDecoratorManager is a decorator manager that encapsulates the
- * behavior for the lightweight decorators.
- */
-public class LightweightDecoratorManager extends ObjectContributorManager {
-
-	/**
-	 * The runnable is the object used to run the decorations so that an error
-	 * in someones decorator will not kill the thread. It is implemented here to
-	 * prevent aborting of decoration i.e. successful decorations will still be
-	 * applied.
-	 */
-
-	private class LightweightRunnable implements ISafeRunnable {
-		private Object element;
-
-		private DecorationBuilder decoration;
-
-		private LightweightDecoratorDefinition decorator;
-
-		void setValues(Object object, DecorationBuilder builder,
-				LightweightDecoratorDefinition definition) {
-			element = object;
-			decoration = builder;
-			decorator = definition;
-
-		}
-
-		/*
-		 * @see ISafeRunnable.handleException(Throwable).
-		 */
-		public void handleException(Throwable exception) {
-			IStatus status = StatusUtil.newStatus(IStatus.ERROR, exception
-					.getMessage(), exception);
-			WorkbenchPlugin.log("Exception in Decorator", status); //$NON-NLS-1$
-			if (decorator != null) {
-				decorator.crashDisable();
-			}
-			clearReferences();
-		}
-
-		/*
-		 * @see ISafeRunnable.run
-		 */
-		public void run() throws Exception {
-			decorator.decorate(element, decoration);
-			clearReferences();
-		}
-
-		/**
-		 * Clear all of the references in the receiver.
-		 * 
-		 * @since 3.1
-		 */
-		void clearReferences() {
-			decorator = null;
-			element = null;// Clear the element
-			decoration = null;
-		}
-	}
-
-	private LightweightRunnable runnable = new LightweightRunnable();
-
-	// The lightweight definitions read from the registry
-	private LightweightDecoratorDefinition[] lightweightDefinitions;
-
-	private static final LightweightDecoratorDefinition[] EMPTY_LIGHTWEIGHT_DEF = new LightweightDecoratorDefinition[0];
-
-	LightweightDecoratorManager(LightweightDecoratorDefinition[] definitions) {
-		super();
-		lightweightDefinitions = definitions;
-		buildContributors();
-	}
-
-	/**
-	 * Get the lightweight definitions for the receiver.
-	 * 
-	 * @return LightweightDecoratorDefinition[]
-	 */
-	LightweightDecoratorDefinition[] getDefinitions() {
-		return lightweightDefinitions;
-	}
-
-	/**
-	 * Register the decorators as object contributions so that adaptable lookup
-	 * can occur.
-	 */
-	private void buildContributors() {
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			LightweightDecoratorDefinition decorator = lightweightDefinitions[i];
-			String[] types = getTargetTypes(decorator);
-			for (int j = 0; j < types.length; j++) {
-				registerContributor(decorator, types[j]);
-			}
-		}
-	}
-
-	/**
-	 * For dynamic UI
-	 * 
-	 * @param decorator
-	 *            the definition to add
-	 * @return whether the definition was added
-	 * @since 3.0
-	 */
-	public boolean addDecorator(LightweightDecoratorDefinition decorator) {
-		if (getLightweightDecoratorDefinition(decorator.getId()) == null) {
-			LightweightDecoratorDefinition[] oldDefs = lightweightDefinitions;
-			lightweightDefinitions = new LightweightDecoratorDefinition[lightweightDefinitions.length + 1];
-			System.arraycopy(oldDefs, 0, lightweightDefinitions, 0,
-					oldDefs.length);
-			lightweightDefinitions[oldDefs.length] = decorator;
-			// no reset - handled in the DecoratorManager
-			String[] types = getTargetTypes(decorator);
-			for (int i = 0; i < types.length; i++) {
-				registerContributor(decorator, types[i]);
-			}
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Get the name of the types that a decorator is registered for.
-	 * 
-	 * @param decorator
-	 * @return String[]
-	 */
-	private String[] getTargetTypes(LightweightDecoratorDefinition decorator) {
-		return decorator.getObjectClasses();
-	}
-
-	/**
-	 * For dynamic-ui
-	 * 
-	 * @param decorator
-	 *            the definition to remove
-	 * @return whether the definition was removed
-	 * @since 3.1
-	 */
-	public boolean removeDecorator(LightweightDecoratorDefinition decorator) {
-		int idx = getLightweightDecoratorDefinitionIdx(decorator.getId());
-		if (idx != -1) {
-			LightweightDecoratorDefinition[] oldDefs = lightweightDefinitions;
-			Util
-					.arrayCopyWithRemoval(
-							oldDefs,
-							lightweightDefinitions = new LightweightDecoratorDefinition[lightweightDefinitions.length - 1],
-							idx);
-			// no reset - handled in the DecoratorManager
-			String[] types = getTargetTypes(decorator);
-			for (int i = 0; i < types.length; i++) {
-				unregisterContributor(decorator, types[i]);
-
-			}
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Get the LightweightDecoratorDefinition with the supplied id
-	 * 
-	 * @return LightweightDecoratorDefinition or <code>null</code> if it is
-	 *         not found
-	 * @param decoratorId
-	 *            String
-	 * @since 3.0
-	 */
-	private LightweightDecoratorDefinition getLightweightDecoratorDefinition(
-			String decoratorId) {
-		int idx = getLightweightDecoratorDefinitionIdx(decoratorId);
-		if (idx != -1) {
-			return lightweightDefinitions[idx];
-		}
-		return null;
-	}
-
-	/**
-	 * Return the index of the definition in the array.
-	 * 
-	 * @param decoratorId
-	 *            the id
-	 * @return the index of the definition in the array or <code>-1</code>
-	 * @since 3.1
-	 */
-	private int getLightweightDecoratorDefinitionIdx(String decoratorId) {
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			if (lightweightDefinitions[i].getId().equals(decoratorId)) {
-				return i;
-			}
-		}
-		return -1;
-	}
-
-	/**
-	 * Return the enabled lightweight decorator definitions.
-	 * 
-	 * @return LightweightDecoratorDefinition[]
-	 */
-	LightweightDecoratorDefinition[] enabledDefinitions() {
-		ArrayList result = new ArrayList();
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			if (lightweightDefinitions[i].isEnabled()) {
-				result.add(lightweightDefinitions[i]);
-			}
-		}
-		LightweightDecoratorDefinition[] returnArray = new LightweightDecoratorDefinition[result
-				.size()];
-		result.toArray(returnArray);
-		return returnArray;
-	}
-
-	/**
-	 * Return whether there are enabled lightwieght decorators
-	 * 
-	 * @return boolean
-	 */
-	boolean hasEnabledDefinitions() {
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			if (lightweightDefinitions[i].isEnabled()) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Reset any cached values.
-	 */
-	void reset() {
-		runnable.clearReferences();
-	}
-
-	/**
-	 * Shutdown the decorator manager by disabling all of the decorators so that
-	 * dispose() will be called on them.
-	 */
-	void shutdown() {
-		// Disable all fo the enabled decorators
-		// so as to force a dispose of thier decorators
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			if (lightweightDefinitions[i].isEnabled()) {
-				lightweightDefinitions[i].setEnabled(false);
-			}
-		}
-	}
-
-	/**
-	 * Get the LightweightDecoratorDefinition with the supplied id
-	 * 
-	 * @return LightweightDecoratorDefinition or <code>null</code> if it is
-	 *         not found
-	 * @param decoratorId
-	 *            String
-	 */
-	LightweightDecoratorDefinition getDecoratorDefinition(String decoratorId) {
-		for (int i = 0; i < lightweightDefinitions.length; i++) {
-			if (lightweightDefinitions[i].getId().equals(decoratorId)) {
-				return lightweightDefinitions[i];
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Get the lightweight registered for elements of this type.
-	 */
-	LightweightDecoratorDefinition[] getDecoratorsFor(Object element) {
-
-		if (element == null) {
-			return EMPTY_LIGHTWEIGHT_DEF;
-		}
-
-		List elements = new ArrayList(1);
-		elements.add(element);
-		LightweightDecoratorDefinition[] decoratorArray = EMPTY_LIGHTWEIGHT_DEF;
-		List contributors = getContributors(elements);
-		if (!contributors.isEmpty()) {
-			Collection decorators = DecoratorManager.getDecoratorsFor(element,
-					(DecoratorDefinition[]) contributors
-							.toArray(new DecoratorDefinition[contributors
-									.size()]));
-			if (decorators.size() > 0) {
-				decoratorArray = new LightweightDecoratorDefinition[decorators
-						.size()];
-				decorators.toArray(decoratorArray);
-			}
-		}
-
-		return decoratorArray;
-	}
-
-	/**
-	 * Fill the decoration with all of the results of the decorators.
-	 * 
-	 * @param element
-	 *            The source element
-	 * @param decoration
-	 *            The DecorationResult we are working on. where adaptable is
-	 *            true.
-	 */
-	public void getDecorations(Object element, DecorationBuilder decoration) {
-
-		LightweightDecoratorDefinition[] decorators = getDecoratorsFor(element);
-
-		for (int i = 0; i < decorators.length; i++) {
-			// If we are doing the adaptable one make sure we are
-			// only applying the adaptable decorations
-			LightweightDecoratorDefinition dd = decorators[i];
-			decoration.setCurrentDefinition(dd);
-			decorate(element, decoration, dd);
-		}
-	}
-
-	/**
-	 * Decorate the element receiver in a SafeRunnable.
-	 * 
-	 * @param element
-	 *            The Object to be decorated
-	 * @param decoration
-	 *            The object building decorations.
-	 * @param decorator
-	 *            The decorator being applied.
-	 */
-	private void decorate(Object element, DecorationBuilder decoration,
-			LightweightDecoratorDefinition decorator) {
-
-		runnable.setValues(element, decoration, decorator);
-		SafeRunner.run(runnable);
-	}
-
-	
-	/**
-	 * Method for use by test cases
-	 * 
-	 * @param object
-	 *            the object to be decorated
-	 * @return the decoration result
-	 */
-	public DecorationResult getDecorationResult(Object object) {
-		DecorationBuilder builder = new DecorationBuilder();
-		getDecorations(object, builder);
-		return builder.createResult();
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker,
-	 *      org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		// Do nothing as this is handled by the DecoratorManager
-		// This is not called as canHandleExtensionTracking returns
-		// false.
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java
deleted file mode 100644
index 427d335..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutDialog.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-
-import org.eclipse.core.runtime.IBundleGroup;
-import org.eclipse.core.runtime.IBundleGroupProvider;
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-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.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.ProductProperties;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.about.AboutBundleGroupData;
-import org.eclipse.ui.internal.about.AboutFeaturesButtonManager;
-import org.eclipse.ui.menus.CommandContributionItem;
-import org.eclipse.ui.menus.CommandContributionItemParameter;
-
-/**
- * Displays information about the product.
- */
-public class AboutDialog extends ProductInfoDialog {
-    private final static int MAX_IMAGE_WIDTH_FOR_TEXT = 250;
-
-    private final static int FEATURES_ID = IDialogConstants.CLIENT_ID + 1;
-
-    private final static int PLUGINS_ID = IDialogConstants.CLIENT_ID + 2;
-
-    private final static int INFO_ID = IDialogConstants.CLIENT_ID + 3;
-
-    private String productName;
-
-    private IProduct product;
-
-    private AboutBundleGroupData[] bundleGroupInfos;
-
-    private ArrayList images = new ArrayList();
-
-    private AboutFeaturesButtonManager buttonManager = new AboutFeaturesButtonManager();
-
-    // TODO should the styled text be disposed? if not then it likely
-    //      doesn't need to be a member
-    private StyledText text;
-
-    /**
-     * Create an instance of the AboutDialog for the given window.
-     * @param parentShell The parent of the dialog.
-     */
-    public AboutDialog(Shell parentShell) {
-        super(parentShell);
-
-        product = Platform.getProduct();
-        if (product != null) {
-			productName = product.getName();
-		}
-        if (productName == null) {
-			productName = WorkbenchMessages.AboutDialog_defaultProductName;
-		}
-
-        // create a descriptive object for each BundleGroup
-        IBundleGroupProvider[] providers = Platform.getBundleGroupProviders();
-        LinkedList groups = new LinkedList();
-        if (providers != null) {
-			for (int i = 0; i < providers.length; ++i) {
-                IBundleGroup[] bundleGroups = providers[i].getBundleGroups();
-                for (int j = 0; j < bundleGroups.length; ++j) {
-					groups.add(new AboutBundleGroupData(bundleGroups[j]));
-				}
-            }
-		}
-        bundleGroupInfos = (AboutBundleGroupData[]) groups
-                .toArray(new AboutBundleGroupData[0]);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void buttonPressed(int buttonId) {
-        switch (buttonId) {
-        case FEATURES_ID:
-			BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
-				public void run() {
-		            new AboutFeaturesDialog(getShell(), productName, bundleGroupInfos)
-		                    .open();
-				}
-			});
-            break;
-        case PLUGINS_ID:
-			BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
-				public void run() {
-		            new AboutPluginsDialog(getShell(), productName).open();
-				}
-			});
-            break;
-        case INFO_ID:
-			BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
-				public void run() {
-		            new AboutSystemDialog(getShell()).open();
-				}
-			});
-            break;
-        default:
-            super.buttonPressed(buttonId);
-            break;
-        }
-    }
-
-    public boolean close() {
-        // dispose all images
-        for (int i = 0; i < images.size(); ++i) {
-            Image image = (Image) images.get(i);
-            image.dispose();
-        }
-
-        return super.close();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Window.
-     */
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        newShell.setText(NLS.bind(WorkbenchMessages.AboutDialog_shellTitle,productName ));
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell,
-				IWorkbenchHelpContextIds.ABOUT_DIALOG);
-    }
-
-    /**
-     * Add buttons to the dialog's button bar.
-     * 
-     * Subclasses should override.
-     * 
-     * @param parent
-     *            the button bar composite
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        // bug 64232: the feature details button should only be created if there
-        // are features to show
-        if (bundleGroupInfos != null && bundleGroupInfos.length > 0) {
-			createButton(parent, FEATURES_ID, WorkbenchMessages.AboutDialog_featureInfo, false);
-		} 
-
-        createButton(parent, PLUGINS_ID, WorkbenchMessages.AboutDialog_pluginInfo, false);
-        createButton(parent, INFO_ID, WorkbenchMessages.AboutDialog_systemInfo, false); 
-
-        Label l = new Label(parent, SWT.NONE);
-        l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        GridLayout layout = (GridLayout) parent.getLayout();
-        layout.numColumns++;
-        layout.makeColumnsEqualWidth = false;
-
-        Button b = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        b.setFocus();
-    }
-
-    /**
-     * Creates and returns the contents of the upper part 
-     * of the dialog (above the button bar).
-     *
-     * Subclasses should overide.
-     *
-     * @param parent  the parent composite to contain the dialog area
-     * @return the dialog area control
-     */
-    protected Control createDialogArea(Composite parent) {
-        final Cursor hand = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-        final Cursor busy = new Cursor(parent.getDisplay(), SWT.CURSOR_WAIT);
-        setHandCursor(hand);
-        setBusyCursor(busy);
-        getShell().addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                setHandCursor(null);
-                hand.dispose();
-                setBusyCursor(null);
-                busy.dispose();
-            }
-        });
-
-        // brand the about box if there is product info
-        Image aboutImage = null;
-        if (product != null) {
-            ImageDescriptor imageDescriptor = ProductProperties
-                    .getAboutImage(product);
-            if (imageDescriptor != null) {
-				aboutImage = imageDescriptor.createImage();
-			}
-
-            // if the about image is small enough, then show the text
-            if (aboutImage == null
-                    || aboutImage.getBounds().width <= MAX_IMAGE_WIDTH_FOR_TEXT) {
-                String aboutText = ProductProperties.getAboutText(product);
-                if (aboutText != null) {
-					setItem(scan(aboutText));
-				}
-            }
-
-            if (aboutImage != null) {
-				images.add(aboutImage);
-			}
-        }
-
-        // create a composite which is the parent of the top area and the bottom
-        // button bar, this allows there to be a second child of this composite with 
-        // a banner background on top but not have on the bottom
-        Composite workArea = new Composite(parent, SWT.NONE);
-        GridLayout workLayout = new GridLayout();
-        workLayout.marginHeight = 0;
-        workLayout.marginWidth = 0;
-        workLayout.verticalSpacing = 0;
-        workLayout.horizontalSpacing = 0;
-        workArea.setLayout(workLayout);
-        workArea.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-        // page group
-        Color background = JFaceColors.getBannerBackground(parent.getDisplay());
-        Color foreground = JFaceColors.getBannerForeground(parent.getDisplay());
-        Composite top = (Composite) super.createDialogArea(workArea);
-
-        // override any layout inherited from createDialogArea 
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        layout.verticalSpacing = 0;
-        layout.horizontalSpacing = 0;
-        top.setLayout(layout);
-        top.setLayoutData(new GridData(GridData.FILL_BOTH));
-        top.setBackground(background);
-        top.setForeground(foreground);
-
-        // the image & text	
-        final Composite topContainer = new Composite(top, SWT.NONE);
-        topContainer.setBackground(background);
-        topContainer.setForeground(foreground);
-
-        layout = new GridLayout();
-        layout.numColumns = (aboutImage == null || getItem() == null ? 1 : 2);
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        layout.verticalSpacing = 0;
-        layout.horizontalSpacing = 0;
-        topContainer.setLayout(layout);
-        
-
-        GC gc = new GC(parent);
-        // arbitrary default
-        int topContainerHeightHint = 100;
-        try {
-        	// default height enough for 6 lines of text
-        	topContainerHeightHint = Math.max(topContainerHeightHint, gc.getFontMetrics().getHeight() * 6);         
-        }
-        finally {
-        	gc.dispose();
-        }
-        
-        //image on left side of dialog
-        if (aboutImage != null) {
-            Label imageLabel = new Label(topContainer, SWT.NONE);
-            imageLabel.setBackground(background);
-            imageLabel.setForeground(foreground);
-
-            GridData data = new GridData();
-            data.horizontalAlignment = GridData.FILL;
-            data.verticalAlignment = GridData.BEGINNING;
-            data.grabExcessHorizontalSpace = false;
-            imageLabel.setLayoutData(data);
-            imageLabel.setImage(aboutImage);
-            topContainerHeightHint = Math.max(topContainerHeightHint, aboutImage.getBounds().height);
-        }
-        
-        GridData data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        data.verticalAlignment = GridData.FILL;
-        data.grabExcessHorizontalSpace = true;
-        data.grabExcessVerticalSpace = true;
-        data.heightHint = topContainerHeightHint;
-        topContainer.setLayoutData(data);
-        
-        if (getItem() != null) {
-        	final int minWidth = 400; // This value should really be calculated
-        	// from the computeSize(SWT.DEFAULT,
-        	// SWT.DEFAULT) of all the
-        	// children in infoArea excluding the
-        	// wrapped styled text
-        	// There is no easy way to do this.
-        	final ScrolledComposite scroller = new ScrolledComposite(topContainer,
-    				SWT.V_SCROLL | SWT.H_SCROLL);
-        	data = new GridData(GridData.FILL_BOTH);
-        	data.widthHint = minWidth;
-    		scroller.setLayoutData(data);
-
-    		final Composite textComposite = new Composite(scroller, SWT.NONE);
-    		textComposite.setBackground(background);
-    		
-    		layout = new GridLayout();
-    		textComposite.setLayout(layout);
-
-    		text = new StyledText(textComposite, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);
-    		text.setCaret(null);
-            text.setFont(parent.getFont());
-            text.setText(getItem().getText());
-            text.setCursor(null);
-            text.setBackground(background);
-            text.setForeground(foreground);
-            setLinkRanges(text, getItem().getLinkRanges());
-            addListeners(text);
-            
-            createTextMenu();
-            
-    		GridData gd = new GridData();
-    		gd.verticalAlignment = GridData.BEGINNING;
-    		gd.horizontalAlignment = GridData.FILL;
-    		gd.grabExcessHorizontalSpace = true;
-    		text.setLayoutData(gd);
-
-    		// Adjust the scrollbar increments
-    		scroller.getHorizontalBar().setIncrement(20);
-    		scroller.getVerticalBar().setIncrement(20);
-
-    		final boolean[] inresize = new boolean[1]; // flag to stop unneccesary
-    		// recursion
-    		textComposite.addControlListener(new ControlAdapter() {
-    			public void controlResized(ControlEvent e) {
-    				if (inresize[0])
-    					return;
-    				inresize[0] = true;
-    				// required because of bugzilla report 4579
-    				textComposite.layout(true);
-    				// required because you want to change the height that the
-    				// scrollbar will scroll over when the width changes.
-    				int width = textComposite.getClientArea().width;
-    				Point p = textComposite.computeSize(width, SWT.DEFAULT);
-    				scroller.setMinSize(minWidth, p.y);
-    				inresize[0] = false;
-    			}
-    		});
-
-    		scroller.setExpandHorizontal(true);
-    		scroller.setExpandVertical(true);
-    		Point p = textComposite.computeSize(minWidth, SWT.DEFAULT);
-    		textComposite.setSize(p.x, p.y);
-    		scroller.setMinWidth(minWidth);
-    		scroller.setMinHeight(p.y);
-
-    		scroller.setContent(textComposite);
-        }
-
-        // horizontal bar
-        Label bar = new Label(workArea, SWT.HORIZONTAL | SWT.SEPARATOR);
-        data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        bar.setLayoutData(data);
-
-        // add image buttons for bundle groups that have them
-        Composite bottom = (Composite) super.createDialogArea(workArea);
-        // override any layout inherited from createDialogArea 
-        layout = new GridLayout();
-        bottom.setLayout(layout);
-        data = new GridData();
-        data.horizontalAlignment = SWT.FILL;
-        data.verticalAlignment = SWT.FILL;
-        data.grabExcessHorizontalSpace = true;
-        
-        bottom.setLayoutData(data);
-
-        createFeatureImageButtonRow(bottom);
-
-        // spacer
-        bar = new Label(bottom, SWT.NONE);
-        data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        bar.setLayoutData(data);
-
-        return workArea;
-    }
-
-    /**
-	 * Create the context menu for the text widget.
-	 * 
-	 * @since 3.4
-	 */
-	private void createTextMenu() {
-		final MenuManager textManager = new MenuManager();
-		textManager.add(new CommandContributionItem(
-				new CommandContributionItemParameter(PlatformUI
-						.getWorkbench(), null, "org.eclipse.ui.edit.copy", //$NON-NLS-1$
-						CommandContributionItem.STYLE_PUSH)));
-		textManager.add(new CommandContributionItem(
-				new CommandContributionItemParameter(PlatformUI
-						.getWorkbench(), null, "org.eclipse.ui.edit.selectAll", //$NON-NLS-1$
-						CommandContributionItem.STYLE_PUSH)));
-		text.setMenu(textManager.createContextMenu(text));
-		text.addDisposeListener(new DisposeListener() {
-
-			public void widgetDisposed(DisposeEvent e) {
-				textManager.dispose();
-			}
-		});
-		
-	}
-
-	private void createFeatureImageButtonRow(Composite parent) {
-        Composite featureContainer = new Composite(parent, SWT.NONE);
-        RowLayout rowLayout = new RowLayout();
-        rowLayout.wrap = true;
-        featureContainer.setLayout(rowLayout);
-        GridData data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        featureContainer.setLayoutData(data);
-
-        for (int i = 0; i < bundleGroupInfos.length; i++) {
-			createFeatureButton(featureContainer, bundleGroupInfos[i]);
-		}
-    }
-
-    private Button createFeatureButton(Composite parent,
-            final AboutBundleGroupData info) {
-        if (!buttonManager.add(info)) {
-			return null;
-		}
-
-        ImageDescriptor desc = info.getFeatureImage();
-        Image featureImage = null;
-
-        Button button = new Button(parent, SWT.FLAT | SWT.PUSH);
-        button.setData(info);
-        featureImage = desc.createImage();
-        images.add(featureImage);
-        button.setImage(featureImage);
-        button
-				.setToolTipText(NLS
-						.bind(
-								WorkbenchMessages.AboutDialog_concatenationOfProviderNameAndFeatureName,
-								new Object[] { info.getProviderName(),
-										info.getName() }));
-        
-        button.getAccessible().addAccessibleListener(new AccessibleAdapter(){
-        	/* (non-Javadoc)
-			 * @see org.eclipse.swt.accessibility.AccessibleAdapter#getName(org.eclipse.swt.accessibility.AccessibleEvent)
-			 */
-			public void getName(AccessibleEvent e) {
-				e.result = info.getProviderName();
-			}
-        });
-        button.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent event) {
-                AboutBundleGroupData[] groupInfos = buttonManager
-                        .getRelatedInfos(info);
-                AboutBundleGroupData selection = (AboutBundleGroupData) event.widget
-                        .getData();
-
-                AboutFeaturesDialog d = new AboutFeaturesDialog(getShell(),
-                        productName, groupInfos);
-                d.setInitialSelection(selection);
-                d.open();
-            }
-        });
-
-        return button;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java
deleted file mode 100644
index 9169753..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutFeaturesDialog.java
+++ /dev/null
@@ -1,537 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *      IBM Corporation - initial API and implementation 
- *  	Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog
- *      font should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IBundleGroup;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.internal.ConfigureColumnsDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Font;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.about.AboutBundleGroupData;
-import org.eclipse.ui.internal.about.AboutData;
-import org.osgi.framework.Bundle;
-
-/**
- * Displays information about the product plugins.
- *
- * PRIVATE
- *	This class is internal to the workbench and must not be called outside
- *	the workbench.
- */
-public class AboutFeaturesDialog extends ProductInfoDialog {
-
-    /**
-     * Table height in dialog units (value 150).
-     */
-    private static final int TABLE_HEIGHT = 150;
-
-    private static final int INFO_HEIGHT = 100;
-
-    private final static int MORE_ID = IDialogConstants.CLIENT_ID + 1;
-
-    private final static int PLUGINS_ID = IDialogConstants.CLIENT_ID + 2;
-
-    private final static int COLUMNS_ID = IDialogConstants.CLIENT_ID + 3;
-
-    private Table table;
-
-    private Label imageLabel;
-
-    private StyledText text;
-
-    private Composite infoArea;
-
-    private Map cachedImages = new HashMap();
-
-    private String columnTitles[] = {
-            WorkbenchMessages.AboutFeaturesDialog_provider,
-            WorkbenchMessages.AboutFeaturesDialog_featureName, 
-            WorkbenchMessages.AboutFeaturesDialog_version, 
-            WorkbenchMessages.AboutFeaturesDialog_featureId, 
-    };
-
-    private String productName;
-
-    private AboutBundleGroupData[] bundleGroupInfos;
-
-    private int lastColumnChosen = 0; // initially sort by provider
-
-    private boolean reverseSort = false; // initially sort ascending
-
-    private AboutBundleGroupData lastSelection = null;
-
-    private Button moreButton;
-
-    private Button pluginsButton;
-
-    private static Map featuresMap;
-
-    /**
-     * Constructor for AboutFeaturesDialog.
-     * 
-     * @param parentShell the parent shell
-     * @param productName the product name
-     * @param bundleGroupInfos the bundle info
-     */
-    public AboutFeaturesDialog(Shell parentShell, String productName,
-            AboutBundleGroupData[] bundleGroupInfos) {
-        super(parentShell);
-        this.productName = productName;
-
-        // the order of the array may be changed due to sorting, so create a
-        // copy
-        this.bundleGroupInfos = new AboutBundleGroupData[bundleGroupInfos.length];
-        System.arraycopy(bundleGroupInfos, 0, this.bundleGroupInfos, 0,
-                bundleGroupInfos.length);
-
-        AboutData.sortByProvider(reverseSort, this.bundleGroupInfos);
-    }
-
-    /**
-     * The More Info button was pressed.  Open a browser with the license for the
-     * selected item or an information dialog if there is no license, or the browser
-     * cannot be opened. 
-     */
-    private void handleMoreInfoPressed() {
-        TableItem[] items = table.getSelection();
-        if (items.length <= 0) {
-			return;
-		}
-
-        AboutBundleGroupData info = (AboutBundleGroupData) items[0].getData();
-        if (info == null || !openBrowser(info.getLicenseUrl())) {
-            MessageDialog.openInformation(getShell(), WorkbenchMessages.AboutFeaturesDialog_noInfoTitle, 
-                    WorkbenchMessages.AboutFeaturesDialog_noInformation);
-        }
-    }
-
-    /**
-     * The Plugins button was pressed. Open an about dialog on the plugins for
-     * the selected feature.
-     */
-    private void handlePluginInfoPressed() {
-        TableItem[] items = table.getSelection();
-        if (items.length <= 0) {
-			return;
-		}
-
-        AboutBundleGroupData info = (AboutBundleGroupData) items[0].getData();
-        IBundleGroup bundleGroup = info.getBundleGroup();
-        Bundle[] bundles = bundleGroup == null ? new Bundle[0] : bundleGroup
-                .getBundles();
-
-        AboutPluginsDialog d = new AboutPluginsDialog(getShell(), productName,
-                bundles, WorkbenchMessages.AboutFeaturesDialog_pluginInfoTitle, 
-                NLS.bind(WorkbenchMessages.AboutFeaturesDialog_pluginInfoMessage, bundleGroup.getIdentifier()),
-                IWorkbenchHelpContextIds.ABOUT_FEATURES_PLUGINS_DIALOG);
-        d.open();
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void buttonPressed(int buttonId) {
-        switch (buttonId) {
-        case MORE_ID:
-            handleMoreInfoPressed();
-            break;
-        case PLUGINS_ID:
-            handlePluginInfoPressed();
-            break;
-        case COLUMNS_ID:
-        	handleColumnsPressed();
-        	break;
-        default:
-            super.buttonPressed(buttonId);
-            break;
-        }
-    }
-
-    /**
-	 * 
-	 */
-	private void handleColumnsPressed() {
-		ConfigureColumnsDialog d = new ConfigureColumnsDialog(this, table);
-		d.open();
-	}
-
-	/*
-     * (non-Javadoc) Method declared on Window.
-     */
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        if (productName != null) {
-			newShell.setText(NLS.bind(WorkbenchMessages.AboutFeaturesDialog_shellTitle, productName));
-		}
-
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell,
-				IWorkbenchHelpContextIds.ABOUT_FEATURES_DIALOG);
-    }
-
-    /**
-     * Add buttons to the dialog's button bar.
-     * 
-     * Subclasses should override.
-     * 
-     * @param parent
-     *            the button bar composite
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        moreButton = createButton(parent, MORE_ID, WorkbenchMessages.AboutFeaturesDialog_moreInfo, false);
-        pluginsButton = createButton(parent, PLUGINS_ID, WorkbenchMessages.AboutFeaturesDialog_pluginsInfo, false); 
-        createButton(parent, COLUMNS_ID, WorkbenchMessages.AboutFeaturesDialog_columns, false); 
-        Label l = new Label(parent, SWT.NONE);
-        l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        GridLayout layout = (GridLayout) parent.getLayout();
-        layout.numColumns++;
-        layout.makeColumnsEqualWidth = false;
-
-        Button b = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        b.setFocus();
-
-        TableItem[] items = table.getSelection();
-        if (items.length > 0) {
-			updateButtons((AboutBundleGroupData) items[0].getData());
-		}
-    }
-
-    /**
-     * Create the contents of the dialog (above the button bar).
-     * 
-     * Subclasses should overide.
-     * 
-     * @param parent  the parent composite to contain the dialog area
-     * @return the dialog area control
-     */
-    protected Control createDialogArea(Composite parent) {
-        setHandCursor(new Cursor(parent.getDisplay(), SWT.CURSOR_HAND));
-        setBusyCursor(new Cursor(parent.getDisplay(), SWT.CURSOR_WAIT));
-        getShell().addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                if (getHandCursor() != null) {
-					getHandCursor().dispose();
-				}
-                if (getBusyCursor() != null) {
-					getBusyCursor().dispose();
-				}
-            }
-        });
-
-        Composite outer = (Composite) super.createDialogArea(parent);
-
-        createTable(outer);
-        createInfoArea(outer);
-        
-        return outer;
-    }
-
-    /** 
-     * Create the info area containing the image and text
-     */
-    protected void createInfoArea(Composite parent) {
-        Font font = parent.getFont();
-
-        infoArea = new Composite(parent, SWT.NULL);
-        GridData data = new GridData(GridData.FILL, GridData.FILL, true, true);
-        // need to provide space for arbitrary feature infos, not just the
-        // one selected by default
-        data.heightHint = convertVerticalDLUsToPixels(INFO_HEIGHT);
-        infoArea.setLayoutData(data);
-
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        infoArea.setLayout(layout);
-
-        imageLabel = new Label(infoArea, SWT.NONE);
-        data = new GridData(GridData.FILL, GridData.BEGINNING, false, false);
-        data.widthHint = 32;
-        data.heightHint = 32;
-        imageLabel.setLayoutData(data);
-        imageLabel.setFont(font);
-
-        // text on the right
-        text = new StyledText(infoArea, SWT.MULTI | SWT.READ_ONLY);
-        text.setCaret(null);
-        text.setFont(parent.getFont());
-        data = new GridData(GridData.FILL, GridData.FILL, true, true);
-        text.setLayoutData(data);
-        text.setFont(font);
-        text.setCursor(null);
-        text.setBackground(infoArea.getBackground());
-        addListeners(text);
-
-        TableItem[] items = table.getSelection();
-        if (items.length > 0) {
-			updateInfoArea((AboutBundleGroupData) items[0].getData());
-		}
-    }
-
-    /**
-     * Create the table part of the dialog.
-     *
-     * @param parent  the parent composite to contain the dialog area
-     */
-    protected void createTable(Composite parent) {
-        table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE
-                | SWT.FULL_SELECTION | SWT.BORDER);
-        
-        GridData gridData = new GridData(GridData.FILL, GridData.FILL, true,
-                true);
-        gridData.heightHint = convertVerticalDLUsToPixels(TABLE_HEIGHT);
-        table.setLayoutData(gridData);
-        table.setHeaderVisible(true);
-        
-        table.setLinesVisible(true);
-        table.setFont(parent.getFont());
-        table.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                AboutBundleGroupData info = (AboutBundleGroupData) e.item
-                        .getData();
-                updateInfoArea(info);
-                updateButtons(info);
-            }
-        });
-        
-        int[] columnWidths = { convertHorizontalDLUsToPixels(120),
-                convertHorizontalDLUsToPixels(120),
-                convertHorizontalDLUsToPixels(70),
-                convertHorizontalDLUsToPixels(130) };
-
-        for (int i = 0; i < columnTitles.length; i++) {
-            TableColumn tableColumn = new TableColumn(table, SWT.NULL);
-            tableColumn.setWidth(columnWidths[i]);
-            tableColumn.setText(columnTitles[i]);
-            final int columnIndex = i;
-            tableColumn.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent e) {
-                    sort(columnIndex);
-                }
-            });
-        }
-
-        // create a table row for each bundle group
-        String selId = lastSelection == null ? null : lastSelection.getId();
-        int sel = 0;
-        for (int i = 0; i < bundleGroupInfos.length; i++) {
-            if (bundleGroupInfos[i].getId().equals(selId)) {
-				sel = i;
-			}
-
-            TableItem item = new TableItem(table, SWT.NULL);
-            item.setText(createRow(bundleGroupInfos[i]));
-            item.setData(bundleGroupInfos[i]);
-        }
-
-        // if an item was specified during construction, it should be
-        // selected when the table is created
-        if (bundleGroupInfos.length > 0) {
-            table.setSelection(sel);
-            table.showSelection();
-        }
-    }
-
-    /**
-     * @see Window#close()
-     */
-    public boolean close() {
-        boolean ret = super.close();
-
-        Iterator iter = cachedImages.values().iterator();
-        while (iter.hasNext()) {
-            Image image = (Image) iter.next();
-            image.dispose();
-        }
-
-        return ret;
-    }
-
-    /**
-     * Update the button enablement
-     */
-    private void updateButtons(AboutBundleGroupData info) {
-        if (info == null) {
-            moreButton.setEnabled(false);
-            pluginsButton.setEnabled(false);
-            return;
-        }
-
-        // Creating the feature map is too much just to determine enablement, so if
-        // it doesn't already exist, just enable the buttons.  If this was the wrong
-        // choice, then when the button is actually pressed an dialog will be opened. 
-        if (featuresMap == null) {
-            moreButton.setEnabled(true);
-            pluginsButton.setEnabled(true);
-            return;
-        }
-
-        moreButton.setEnabled(info.getLicenseUrl() != null);
-        pluginsButton.setEnabled(true);
-    }
-
-    /**
-     * Update the info area
-     */
-    private void updateInfoArea(AboutBundleGroupData info) {
-        if (info == null) {
-            imageLabel.setImage(null);
-            text.setText(""); //$NON-NLS-1$
-            return;
-        }
-
-        ImageDescriptor desc = info.getFeatureImage();
-        Image image = (Image) cachedImages.get(desc);
-        if (image == null && desc != null) {
-            image = desc.createImage();
-            cachedImages.put(desc, image);
-        }
-        imageLabel.setImage(image);
-
-        String aboutText = info.getAboutText();
-        setItem(null);
-        if (aboutText != null) {
-			setItem(scan(aboutText));
-		}
-
-        if (getItem() == null) {
-			text.setText(WorkbenchMessages.AboutFeaturesDialog_noInformation);
-		} else {
-            text.setText(getItem().getText());
-            text.setCursor(null);
-            setLinkRanges(text, getItem().getLinkRanges());
-        }
-    }
-
-    /**
-     * Select the initial selection
-     * 
-     * @param info the info
-     */
-    public void setInitialSelection(AboutBundleGroupData info) {
-        lastSelection = info;
-    }
-
-    /**
-     * Sort the rows of the table based on the selected column.
-     * 
-     * @param column
-     *            index of table column selected as sort criteria
-     */
-    private void sort(int column) {
-        if (lastColumnChosen == column) {
-			reverseSort = !reverseSort;
-		} else {
-            reverseSort = false;
-            lastColumnChosen = column;
-        }
-
-        if (table.getItemCount() <= 1) {
-			return;
-		}
-
-        // Remember the last selection
-        int sel = table.getSelectionIndex();
-        if (sel != -1) {
-			lastSelection = bundleGroupInfos[sel];
-		}
-
-        switch (column) {
-        case 0:
-            AboutData.sortByProvider(reverseSort, bundleGroupInfos);
-            break;
-        case 1:
-            AboutData.sortByName(reverseSort, bundleGroupInfos);
-            break;
-        case 2:
-            AboutData.sortByVersion(reverseSort, bundleGroupInfos);
-            break;
-        case 3:
-            AboutData.sortById(reverseSort, bundleGroupInfos);
-            break;
-        }
-
-        refreshTable();
-    }
-
-    /**
-     * Refresh the rows of the table based on the selected column. Maintain
-     * selection from before sort action request.
-     */
-    private void refreshTable() {
-        TableItem[] items = table.getItems();
-
-        // create new order of table items
-        for (int i = 0; i < items.length; i++) {
-            items[i].setText(createRow(bundleGroupInfos[i]));
-            items[i].setData(bundleGroupInfos[i]);
-        }
-
-        // Maintain the original selection
-        int sel = -1;
-        if (lastSelection != null) {
-            String oldId = lastSelection.getId();
-            for (int k = 0; k < bundleGroupInfos.length; k++) {
-				if (oldId.equalsIgnoreCase(bundleGroupInfos[k].getId())) {
-					sel = k;
-				}
-			}
-
-            table.setSelection(sel);
-            table.showSelection();
-        }
-
-        updateInfoArea(lastSelection);
-    }
-
-    /**
-     * Return an array of strings containing the argument's information in the
-     * proper order for this table's columns.
-     * 
-     * @param info
-     *            the source information for the new row, must not be null
-     */
-    private static String[] createRow(AboutBundleGroupData info) {
-        return new String[] { info.getProviderName(), info.getName(),
-                info.getVersion(), info.getId() };
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java
deleted file mode 100644
index e5a7af8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutPluginsDialog.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *		IBM Corporation - initial API and implementation 
- *  	Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog
- * 		font should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.DialogTray;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.internal.ConfigureColumnsDialog;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.about.AboutBundleData;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.progress.WorkbenchJob;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.osgi.framework.Bundle;
-
-/**
- * Displays information about the product plugins.
- *
- * PRIVATE
- *	this class is internal to the ide
- */
-public class AboutPluginsDialog extends ProductInfoDialog {
-
-	public class BundleTableLabelProvider extends LabelProvider implements ITableLabelProvider  {
-		
-		/**
-		 * Queue containing bundle signing info to be resolved.
-		 */
-		private LinkedList resolveQueue = new LinkedList();
-		
-		/**
-         * Queue containing bundle data that's been resolve and needs updating.
-         */
-		private List updateQueue = new ArrayList();
-
-		/*
-		 * this job will attempt to discover the signing state of a given bundle
-		 * and then send it along to the update job
-		 */
-		private Job resolveJob= new Job(AboutPluginsDialog.class.getName()) {
-			{
-				setSystem(true);
-				setPriority(Job.SHORT);
-			}
-			
-			protected IStatus run(IProgressMonitor monitor) {
-				while (true) {
-					AboutBundleData data = null;
-					Shell dialogShell = getShell();
-					// the shell has gone down since we were asked to render
-					if (dialogShell == null || dialogShell.isDisposed())
-						return Status.OK_STATUS;
-					synchronized (resolveQueue) {
-						if (resolveQueue.isEmpty())
-							return Status.OK_STATUS;
-						data = (AboutBundleData) resolveQueue.removeFirst();
-					}
-					try {
-						// following is an expensive call
-						data.isSigned();
-						
-						synchronized (updateQueue) {
-							updateQueue.add(data);
-						}
-						// start the update job
-						updateJob.schedule();
-					} catch (IllegalStateException e) {
-						// the bundle we're testing has been unloaded.  Do nothing.
-					}
-				}
-			}
-		};
-		
-		/*
-		 * this job is responsible for feeding label change events into the
-		 * viewer as they become available from the resolve job
-		 */
-		private Job updateJob= new WorkbenchJob(getShell().getDisplay(), AboutPluginsDialog.class.getName()) {
-			{
-				setSystem(true);
-				setPriority(Job.DECORATE);
-			}
-			
-			/* (non-Javadoc)
-			 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-				while (true) {
-					Shell dialogShell = getShell();
-					// the shell has gone down since we were asked to render
-					if (dialogShell == null || dialogShell.isDisposed())
-						return Status.OK_STATUS;
-					AboutBundleData[] data = null;
-					synchronized (updateQueue) {
-						if (updateQueue.isEmpty())
-							return Status.OK_STATUS;
-
-						data = (AboutBundleData[]) updateQueue
-								.toArray(new AboutBundleData[updateQueue.size()]);
-						updateQueue.clear();
-
-					}
-					fireLabelProviderChanged(new LabelProviderChangedEvent(
-							BundleTableLabelProvider.this, data));
-				}
-			}
-		};
-			
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
-		 */
-		public Image getColumnImage(Object element, int columnIndex) {
-			if (columnIndex == 0) {
-				if (element instanceof AboutBundleData) {
-					final AboutBundleData data = (AboutBundleData) element;
-					if (data.isSignedDetermined()) {
-						return WorkbenchImages
-								.getImage(data.isSigned() ? IWorkbenchGraphicConstants.IMG_OBJ_SIGNED_YES
-										: IWorkbenchGraphicConstants.IMG_OBJ_SIGNED_NO);
-					} 
-					
-					synchronized (resolveQueue) {
-						resolveQueue.add(data);
-					}
-					resolveJob.schedule();
-					
-					return WorkbenchImages
-							.getImage(IWorkbenchGraphicConstants.IMG_OBJ_SIGNED_UNKNOWN);
-				}
-			}
-			return null;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
-		 */
-		public String getColumnText(Object element, int columnIndex) {
-			if (element instanceof AboutBundleData) {
-				AboutBundleData data = (AboutBundleData) element;
-				switch (columnIndex) {
-				case 1:
-					return data.getProviderName();
-				case 2:
-					return data.getName();
-				case 3:
-					return data.getVersion();
-				case 4:
-					return data.getId();
-				}
-			}
-			return ""; //$NON-NLS-1$
-		}		
-	}
-	
-    /**
-     * Table height in dialog units (value 200).
-     */
-    private static final int TABLE_HEIGHT = 200;
-
-	private static final IPath baseNLPath = new Path("$nl$"); //$NON-NLS-1$
-
-    private static final String PLUGININFO = "about.html"; //$NON-NLS-1$
-
-    private final static int MORE_ID = IDialogConstants.CLIENT_ID + 1;
-    private final static int SIGNING_ID = MORE_ID + 1;
-    private final static int COLUMNS_ID = MORE_ID + 2;
-    
-    private static final int PLUGIN_NAME_COLUMN_INDEX = 2;
-
-    private TableViewer vendorInfo;
-
-    private Button moreInfo, signingInfo;
-
-    private String title;
-
-    private String message;
-    
-    private String helpContextId;
-
-    private String columnTitles[] = {
-    		WorkbenchMessages.AboutPluginsDialog_signed,
-            WorkbenchMessages.AboutPluginsDialog_provider,
-            WorkbenchMessages.AboutPluginsDialog_pluginName,
-            WorkbenchMessages.AboutPluginsDialog_version, 
-            WorkbenchMessages.AboutPluginsDialog_pluginId,
-            
-    };
-
-    private String productName;
-
-    private AboutBundleData[] bundleInfos;
-    
-    /**
-     * Constructor for AboutPluginsDialog.
-     * 
-     * @param parentShell the parent shell
-     * @param productName the product name
-     */
-    public AboutPluginsDialog(Shell parentShell, String productName) {
-        this(parentShell, productName, WorkbenchPlugin.getDefault()
-                .getBundles(), null, null, IWorkbenchHelpContextIds.ABOUT_PLUGINS_DIALOG);
-        WorkbenchPlugin.class.getSigners();
-    }
-
-    /**
-     * Constructor for AboutPluginsDialog.
-     * 
-     * @param parentShell 
-     * 			  the parent shell
-     * @param productName
-     *            must not be null
-     * @param bundles
-     *            must not be null
-     * @param title 
-     *            the title
-     * @param message 
-     * 			  the message
-     * @param helpContextId 
-     *            the help context id
-     */
-    public AboutPluginsDialog(Shell parentShell, String productName,
-            Bundle[] bundles, String title, String message, String helpContextId) {
-        super(parentShell);
-        this.title = title;
-        this.message = message;
-        this.helpContextId = helpContextId;
-        this.productName = productName;
-        
-        // create a data object for each bundle, remove duplicates, and include only resolved bundles (bug 65548)
-        Map map = new HashMap();
-        for (int i = 0; i < bundles.length; ++i) {
-            AboutBundleData data = new AboutBundleData(bundles[i]);
-            if (BundleUtility.isReady(data.getState()) && !map.containsKey(data.getVersionedId())) {
-				map.put(data.getVersionedId(), data);
-			}
-        }
-        bundleInfos = (AboutBundleData[]) map.values().toArray(
-                new AboutBundleData[0]);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on Dialog.
-     */
-    protected void buttonPressed(int buttonId) {
-        switch (buttonId) {
-        case MORE_ID:
-            handleMoreInfoPressed();
-            break;
-        case SIGNING_ID:
-        	handleSigningInfoPressed();
-        	break;
-        case COLUMNS_ID:
-        	handleColumnsPressed();
-        	break;
-        default:
-            super.buttonPressed(buttonId);
-            break;
-        }
-    }
-
-    /**
-	 * 
-	 */
-	private void handleColumnsPressed() {
-		ConfigureColumnsDialog d = new ConfigureColumnsDialog(this, vendorInfo.getTable());
-		d.open();
-	}
-
-	/**
-	 */
-	private void handleSigningInfoPressed() {
-		DialogTray existingTray = getTray();
-		if (existingTray instanceof BundleSigningTray) {
-			// hide
-			getButton(SIGNING_ID).setText(WorkbenchMessages.AboutPluginsDialog_signingInfo_show); 
-			closeTray();
-		}
-		else {
-			//show
-			getButton(SIGNING_ID).setText(WorkbenchMessages.AboutPluginsDialog_signingInfo_hide);
-			if (existingTray != null)
-				closeTray();
-			AboutBundleData bundleInfo = (AboutBundleData) ((IStructuredSelection) vendorInfo
-					.getSelection()).getFirstElement();
-			BundleSigningTray tray = new BundleSigningTray(this);
-			tray.setData(bundleInfo);
-			openTray(tray);
-		}
-		
-	}
-
-	/*
-     * (non-Javadoc) Method declared on Window.
-     */
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        
-        //signImage = new Image( this.getParentShell().getDisplay(), AboutPluginsDialog.class.getResourceAsStream("Signed.gif")); //$NON-NLS-1$
-        
-        if (title == null && productName != null) {
-			title = NLS.bind(WorkbenchMessages.AboutPluginsDialog_shellTitle, productName);
-		}
-
-        if (title != null) {
-			newShell.setText(title);
-		}
-
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell,
-				helpContextId);
-    }
-    
-    /**
-     * Add buttons to the dialog's button bar.
-     * 
-     * Subclasses should override.
-     * 
-     * @param parent
-     *            the button bar composite
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        moreInfo = createButton(parent, MORE_ID, WorkbenchMessages.AboutPluginsDialog_moreInfo, false); 
-        moreInfo.setEnabled(false);
-        
-        signingInfo = createButton(parent, SIGNING_ID, WorkbenchMessages.AboutPluginsDialog_signingInfo_show, false);
-        signingInfo.setEnabled(false);
-
-        createButton(parent, COLUMNS_ID, WorkbenchMessages.AboutPluginsDialog_columns, false);
-
-        Label l = new Label(parent, SWT.NONE);
-        l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        GridLayout layout = (GridLayout) parent.getLayout();
-        layout.numColumns++;
-        layout.makeColumnsEqualWidth = false;
-
-        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
-                true);
-    }
-
-    /**
-     * Create the contents of the dialog (above the button bar).
-     * 
-     * Subclasses should overide.
-     * 
-     * @param parent
-     *            the parent composite to contain the dialog area
-     * @return the dialog area control
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite outer = (Composite) super.createDialogArea(parent);
-
-        if (message != null) {
-            Label label = new Label(outer, SWT.NONE);
-            label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-            label.setFont(parent.getFont());
-            label.setText(message);
-        }
-
-        createTable(outer);
-
-        return outer;
-    }
-
-    /**
-     * Create the table part of the dialog.
-     * 
-     * @param parent
-     *            the parent composite to contain the dialog area
-     */
-    protected void createTable(Composite parent) {
-        vendorInfo = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE
-                | SWT.FULL_SELECTION | SWT.BORDER);
-        vendorInfo.setUseHashlookup(true);
-        vendorInfo.getTable().setHeaderVisible(true);
-        vendorInfo.getTable().setLinesVisible(true);
-        vendorInfo.getTable().setFont(parent.getFont());
-        vendorInfo.addSelectionChangedListener(new ISelectionChangedListener() {
-
-			public void selectionChanged(SelectionChangedEvent event) {
-				// enable if there is an item selected and that
-                // item has additional info
-				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
-				if (selection.getFirstElement() instanceof AboutBundleData) {
-					AboutBundleData selected = (AboutBundleData) selection.getFirstElement(); 
-					moreInfo.setEnabled(selectionHasInfo(selected));
-					signingInfo.setEnabled(true);
-					if (getTray() instanceof BundleSigningTray) {
-						((BundleSigningTray)getTray()).setData(selected);
-					}
-				}
-				else {
-					moreInfo.setEnabled(false);
-					signingInfo.setEnabled(false);
-				}
-			}});
-        
-        final TableComparator comparator = new TableComparator();
-        vendorInfo.setComparator(comparator);
-        int[] columnWidths = {
-        		convertHorizontalDLUsToPixels(30), //signature
-        		convertHorizontalDLUsToPixels(120),
-                convertHorizontalDLUsToPixels(120),
-                convertHorizontalDLUsToPixels(70),
-                convertHorizontalDLUsToPixels(130),
-                };
-
-        
-        // create table headers
-        for (int i = 0; i < columnTitles.length; i++) {
-            TableColumn column = new TableColumn(vendorInfo.getTable(), SWT.NULL);
-            if (i == PLUGIN_NAME_COLUMN_INDEX) { // prime initial sorting
-            	updateTableSorting(i);
-            }	
-            column.setWidth(columnWidths[i]);
-            column.setText(columnTitles[i]);
-            final int columnIndex = i;
-            column.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent e) {
-                    updateTableSorting(columnIndex);
-                }
-            });
-        }
-                
-        vendorInfo.setContentProvider(new ArrayContentProvider());        
-        vendorInfo.setLabelProvider(new BundleTableLabelProvider());
-       
-        GridData gridData = new GridData(GridData.FILL, GridData.FILL, true,
-                true);
-        gridData.heightHint = convertVerticalDLUsToPixels(TABLE_HEIGHT);
-        vendorInfo.getTable().setLayoutData(gridData);
-        
-        vendorInfo.setInput(bundleInfos);
-    }
-
-	/**
-	 * Update the sort information on both the comparator and the table.
-	 * 
-	 * @param columnIndex
-	 *            the index to sort by
-	 * @since 3.4
-	 */
-	private void updateTableSorting(final int columnIndex) {
-		TableComparator comparator = (TableComparator) vendorInfo
-				.getComparator();
-		// toggle direction if it's the same column
-		if (columnIndex == comparator.getSortColumn()) {
-			comparator.setAscending(!comparator.isAscending());
-		}
-		comparator.setSortColumn(columnIndex);
-		vendorInfo.getTable().setSortColumn(
-				vendorInfo.getTable().getColumn(columnIndex));
-		vendorInfo.getTable().setSortDirection(
-				comparator.isAscending() ? SWT.UP : SWT.DOWN);
-		vendorInfo.refresh(false);
-	}
-	
-	/**
-     * Check if the currently selected plugin has additional information to
-     * show.
-     * @param bundleInfo 
-     * 
-     * @return true if the selected plugin has additional info available to
-     *         display
-     */
-    private boolean selectionHasInfo(AboutBundleData bundleInfo) {
-        
-        URL infoURL = getMoreInfoURL(bundleInfo, false);
-
-        // only report ini problems if the -debug command line argument is used
-        if (infoURL == null && WorkbenchPlugin.DEBUG) {
-        	WorkbenchPlugin.log("Problem reading plugin info for: " //$NON-NLS-1$
-					+ bundleInfo.getName());
-		}
-
-        return infoURL != null;
-    }
-
-    /** 
-     * The More Info button was pressed.  Open a browser showing the license information
-     * for the selected bundle or an error dialog if the browser cannot be opened.
-     */
-    protected void handleMoreInfoPressed() {
-        if (vendorInfo == null) {
-			return;
-		}
-        
-        if (vendorInfo.getSelection().isEmpty())
-        	return;
-        
-        AboutBundleData bundleInfo = (AboutBundleData) ((IStructuredSelection) vendorInfo
-				.getSelection()).getFirstElement();
-        
-        if (!openBrowser(getMoreInfoURL(bundleInfo, true))) {
-			String message = NLS.bind(
-					WorkbenchMessages.AboutPluginsDialog_unableToOpenFile,
-					PLUGININFO, bundleInfo.getId());
-			StatusUtil.handleStatus(
-					WorkbenchMessages.AboutPluginsDialog_errorTitle
-							+ ": " + message, StatusManager.SHOW, getShell()); //$NON-NLS-1$
-		}
-    }
-
-    /**
-     * Return an url to the plugin's about.html file (what is shown when "More info" is
-     * pressed) or null if no such file exists.  The method does nl lookup to allow for
-     * i18n.
-     * 
-     * @param bundleInfo the bundle info
-     * @param makeLocal whether to make the about content local
-     * @return the url or <code>null</code>
-     */
-    private URL getMoreInfoURL(AboutBundleData bundleInfo, boolean makeLocal) {
-        Bundle bundle = Platform.getBundle(bundleInfo.getId());
-        if (bundle == null) {
-			return null;
-		}
-
-        URL aboutUrl = Platform.find(bundle, baseNLPath.append(PLUGININFO), null);
-        if (!makeLocal) {
-            return aboutUrl;
-        }
-		if (aboutUrl != null) {
-		    try {
-				URL result = Platform.asLocalURL(aboutUrl);
-				try {
-				    // Make local all content in the "about" directory.
-				    // This is needed to handle jar'ed plug-ins.
-				    // See Bug 88240 [About] About dialog needs to extract subdirs.
-					URL about = new URL(aboutUrl, "about_files"); //$NON-NLS-1$
-					if (about != null) {
-						Platform.asLocalURL(about);
-					}
-				} catch (IOException e) {
-					// skip the about dir if its not found or there are other problems.
-				}
-				return result;
-		    } catch(IOException e) {
-		        // do nothing
-		    }
-        }
-		return null;
-    }
-}
-
-
-class TableComparator extends ViewerComparator {
-
-	private int sortColumn = 0;
-	private boolean ascending = true;
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-	 */
-	public int compare(Viewer viewer, Object e1, Object e2) {
-		if (sortColumn == 0 && e1 instanceof AboutBundleData && e2 instanceof AboutBundleData) {
-			AboutBundleData d1= (AboutBundleData) e1;
-			AboutBundleData d2= (AboutBundleData) e2;
-			int diff= getSignedSortValue(d1) - getSignedSortValue(d2);
-			return ascending ? diff : -diff;
-		}
-		if (viewer instanceof TableViewer) {
-			TableViewer tableViewer = (TableViewer) viewer;
-			IBaseLabelProvider baseLabel = tableViewer.getLabelProvider();
-			if (baseLabel instanceof ITableLabelProvider) {
-				ITableLabelProvider tableProvider = (ITableLabelProvider) baseLabel;
-				String e1p = tableProvider.getColumnText(e1, sortColumn);
-				String e2p = tableProvider.getColumnText(e2, sortColumn);
-				int result = getComparator().compare(e1p, e2p);
-				return ascending ?  result : (-1) * result;
-			}
-		}
-		
-		return super.compare(viewer, e1, e2);
-	}
-
-	/**
-	 * @param data
-	 * @return a sort value depending on the signed state
-	 */
-	private int getSignedSortValue(AboutBundleData data) {
-		if (! data.isSignedDetermined()) {
-			return 0;
-		} else if (data.isSigned()) {
-			return 1;
-		} else {
-			return -1;
-		}
-	}
-	
-	/**
-	 * @return Returns the sortColumn.
-	 */
-	public int getSortColumn() {
-		return sortColumn;
-	}
-
-	/**
-	 * @param sortColumn The sortColumn to set.
-	 */
-	public void setSortColumn(int sortColumn) {
-		this.sortColumn = sortColumn;
-	}
-
-	/**
-	 * @return Returns the ascending.
-	 */
-	public boolean isAscending() {
-		return ascending;
-	}
-
-	/**
-	 * @param ascending The ascending to set.
-	 */
-	public void setAscending(boolean ascending) {
-		this.ascending = ascending;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutSystemDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutSystemDialog.java
deleted file mode 100644
index f736771..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AboutSystemDialog.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.ConfigurationInfo;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-
-/**
- * Displays system information about the eclipse application.  The content of
- * what is displayed is selectable through the
- * <code>org.eclipse.ui.systemSummaryExtensions</code> extension point.
- */
-public final class AboutSystemDialog extends ProductInfoDialog {
-
-    private Text text;
-    
-    private final static int BROWSE_ERROR_LOG_BUTTON = IDialogConstants.CLIENT_ID;
-
-    private final static int COPY_TO_CLIPBOARD_BUTTON = IDialogConstants.CLIENT_ID + 1;
-    
-    private final static String ERROR_LOG_COPY_FILENAME = "log"; //$NON-NLS-1$
-
-    /**
-     * Create an instance of this dialog.
-     * 
-     * @param parentShell the parent shell
-     */
-    public AboutSystemDialog(Shell parentShell) {
-        super(parentShell);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Window.
-     */
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        newShell.setText(WorkbenchMessages.SystemSummary_title);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell,
-				IWorkbenchHelpContextIds.SYSTEM_SUMMARY_DIALOG);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Dialog.
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        Button button = createButton(parent, BROWSE_ERROR_LOG_BUTTON, WorkbenchMessages.AboutSystemDialog_browseErrorLogName, false);
-        String filename = Platform.getLogFileLocation().toOSString();
-        button.setEnabled(new File(filename).exists());
-
-        createButton(parent, COPY_TO_CLIPBOARD_BUTTON, WorkbenchMessages.AboutSystemDialog_copyToClipboardName, false);
-
-        new Label(parent, SWT.NONE).setLayoutData(new GridData(
-                GridData.FILL_HORIZONTAL));
-        GridLayout layout = (GridLayout) parent.getLayout();
-        layout.numColumns++;
-        layout.makeColumnsEqualWidth = false;
-
-        createButton(parent, IDialogConstants.CLOSE_ID,
-                IDialogConstants.CLOSE_LABEL, true);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Dialog.
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite outer = (Composite) super.createDialogArea(parent);
-
-        text = new Text(outer, SWT.MULTI | SWT.BORDER | SWT.READ_ONLY
-                | SWT.V_SCROLL | SWT.NO_FOCUS | SWT.H_SCROLL);
-        text.setBackground(parent.getDisplay().getSystemColor(
-                SWT.COLOR_LIST_BACKGROUND));
-        GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-                | GridData.VERTICAL_ALIGN_FILL);
-        gridData.grabExcessVerticalSpace = true;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.heightHint = convertVerticalDLUsToPixels(300);
-        gridData.widthHint = convertHorizontalDLUsToPixels(400);
-        text.setLayoutData(gridData);
-        text.setText(ConfigurationInfo.getSystemSummary());
-        text.setFont(JFaceResources.getTextFont());
-        return outer;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-     */
-    protected void buttonPressed(int buttonId) {
-        switch (buttonId) {
-        case IDialogConstants.CLOSE_ID:
-            close();
-            break;
-        case BROWSE_ERROR_LOG_BUTTON:
-            openErrorLogBrowser();
-            break;
-        case COPY_TO_CLIPBOARD_BUTTON:
-            runCopyToClipboard();
-            break;
-        }
-        super.buttonPressed(buttonId);
-    }
-
-    private void openErrorLogBrowser() {
-        String filename = Platform.getLogFileLocation().toOSString();
-
-        File log = new File(filename);
-        if (log.exists()) {
-        	// Make a copy of the file with a temporary name.
-        	// Working around an issue with windows file associations/browser malfunction
-        	// whereby the browser doesn't open on ".log" and we aren't returned an error.
-        	// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=97783
-        	File logCopy = makeDisplayCopy(log);
-        	if (logCopy != null) {
-        		openLink("file:///" + logCopy.getAbsolutePath()); //$NON-NLS-1$
-        		return;
-        	}
-        	// Couldn't make copy, try to open the original log.
-        	// We try the original in this case rather than putting up an error,
-        	// because the copy could fail due to an I/O or out of space problem.
-        	// In that case we may still be able to show the original log,
-        	// depending on the platform.  The risk is that users with configurations
-        	// that have bug #97783 will still get nothing (vs. an error) but we'd rather
-        	// try again than put up an error dialog on platforms where the ability to
-        	// view the original log works just fine.
-        	openLink("file:///" + filename); //$NON-NLS-1$
-        	return;
-        }
-        MessageDialog.openInformation(getShell(), WorkbenchMessages.AboutSystemDialog_noLogTitle, 
-                NLS.bind(WorkbenchMessages.AboutSystemDialog_noLogMessage,  filename ));
-    }
-    
-    /**
-     * Returns a copy of the given file to be used for display in
-     * a browser.
-     * 
-     * @return the file, or <code>null</code>
-     */
-    private File makeDisplayCopy(File file) {
-        IPath path = WorkbenchPlugin.getDefault().getDataLocation();
-        if(path == null) {
-			return null;
-		}
-        path = path.append(ERROR_LOG_COPY_FILENAME);
-        File copy = path.toFile();
-        FileReader in = null;
-        FileWriter out = null;
-        try {
-			in = new FileReader(file);
-			// don't append data, overwrite what was there
-			out = new FileWriter(copy);
-			char buffer[] = new char[4096];
-		    int count;
-		    while ((count = in.read(buffer, 0, buffer.length)) > 0) {
-		        out.write(buffer, 0, count);
-		    }
-		} catch (FileNotFoundException e) {
-			return null;
-		} catch (IOException e) {
-			return null;
-		} finally {
-			try {
-				if (in != null) {
-					in.close();
-				}
-				if (out != null) {
-					out.close();
-				}
-			} catch (IOException e) {
-				return null;
-			}
-		}
-		return copy;
-
-    }
-
-    private void runCopyToClipboard() {
-        if (text == null) {
-			return;
-		}
-
-        Clipboard clipboard = null;
-        try {
-            clipboard = new Clipboard(getShell().getDisplay());
-            clipboard.setContents(new Object[] { text.getText() },
-                    new Transfer[] { TextTransfer.getInstance() });
-        } finally {
-            if (clipboard != null) {
-				clipboard.dispose();
-			}
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java
deleted file mode 100644
index feaec78..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AbstractWorkingSetDialog.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *      IBM Corporation - initial API and implementation 
- * 		Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font
- *   	should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-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.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.Shell;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
-import org.eclipse.ui.dialogs.IWorkingSetNewWizard;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-import org.eclipse.ui.dialogs.SelectionDialog;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkingSet;
-import org.eclipse.ui.internal.registry.WorkingSetRegistry;
-
-/**
- * Abstract baseclass for various working set dialogs.
- * 
- * @since 3.2
- */
-public abstract class AbstractWorkingSetDialog extends SelectionDialog
-		implements IWorkingSetSelectionDialog {
-
-	private static final int ID_NEW = IDialogConstants.CLIENT_ID + 1;
-	private static final int ID_DETAILS = ID_NEW + 1;
-	private static final int ID_REMOVE = ID_DETAILS + 1;
-	private static final int ID_SELECTALL = ID_REMOVE + 1;
-	private static final int ID_DESELECTALL = ID_SELECTALL + 1;
-	
-	private Button newButton;
-
-	private Button detailsButton;
-
-	private Button removeButton;
-	
-	private Button selectAllButton;
-	
-	private Button deselectAllButton;
-
-	private IWorkingSet[] result;
-
-	private List addedWorkingSets;
-
-	private List removedWorkingSets;
-
-	private Map editedWorkingSets;
-
-	private List removedMRUWorkingSets;
-
-	private Set workingSetIds;
-	
-	private boolean canEdit;
-
-	protected AbstractWorkingSetDialog(Shell parentShell, String[] workingSetIds, boolean canEdit) {
-		super(parentShell);
-		if (workingSetIds != null) {
-			this.workingSetIds = new HashSet();
-			for (int i = 0; i < workingSetIds.length; i++) {
-				this.workingSetIds.add(workingSetIds[i]);
-			}
-		}
-		this.canEdit = canEdit;
-	}
-
-	/**
-	 * Return the set of supported working set types.
-	 * 
-	 * @return the supported working set types
-	 */
-	protected Set getSupportedWorkingSetIds() {
-		return workingSetIds;
-	}
-
-	/**
-	 * Adds the modify buttons to the dialog.
-	 * 
-	 * @param composite
-	 *            Composite to add the buttons to
-	 */
-	protected void addModifyButtons(Composite composite) {
-		Composite buttonComposite = new Composite(composite, SWT.RIGHT);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = layout.marginWidth = 0;
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		buttonComposite.setLayout(layout);
-		GridData data = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.GRAB_VERTICAL);
-		buttonComposite.setLayoutData(data);
-
-		newButton = createButton(buttonComposite, ID_NEW,
-				WorkbenchMessages.WorkingSetSelectionDialog_newButton_label,
-				false);
-		newButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				createWorkingSet();
-			}
-		});
-
-		if (canEdit) {
-			detailsButton = createButton(
-					buttonComposite,
-					ID_DETAILS,
-					WorkbenchMessages.WorkingSetSelectionDialog_detailsButton_label,
-					false);
-			detailsButton.setEnabled(false);
-			detailsButton.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent e) {
-					editSelectedWorkingSet();
-				}
-			});
-
-			removeButton = createButton(
-					buttonComposite,
-					ID_REMOVE,
-					WorkbenchMessages.WorkingSetSelectionDialog_removeButton_label,
-					false);
-			removeButton.setEnabled(false);
-			removeButton.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent e) {
-					removeSelectedWorkingSets();
-				}
-			});
-		}
-		
-		layout.numColumns = 1; // must manually reset the number of columns because createButton increments it - we want these buttons to be laid out vertically.
-	}
-
-	/**
-	 * Add the select/deselect buttons.
-	 * 
-	 * @param composite Composite to add the buttons to
-	 */
-	protected void addSelectionButtons(Composite composite) {
-		Composite buttonComposite = new Composite(composite, SWT.NONE);
-		GridLayout layout = new GridLayout(2, false);
-		layout.marginHeight = layout.marginWidth = 0;
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		buttonComposite.setLayout(layout);
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-		buttonComposite.setLayoutData(data);
-		
-		selectAllButton = createButton(
-				buttonComposite,
-				ID_SELECTALL,
-				WorkbenchMessages.SelectionDialog_selectLabel,
-				false);
-		selectAllButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				selectAllSets();
-			}
-		});
-		
-		deselectAllButton = createButton(
-				buttonComposite,
-				ID_DESELECTALL,
-				WorkbenchMessages.SelectionDialog_deselectLabel,
-				false);
-		deselectAllButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				deselectAllSets();
-			}
-		});
-	}
-	
-	/**
-	 * Select all working sets.
-	 */
-	protected abstract void selectAllSets();
-	
-	/**
-	 * Deselect all working sets.
-	 */
-	protected abstract void deselectAllSets();
-
-	/**
-	 * Opens a working set wizard for editing the currently selected working
-	 * set.
-	 * 
-	 * @see org.eclipse.ui.dialogs.IWorkingSetPage
-	 */
-	void editSelectedWorkingSet() {
-		IWorkingSetManager manager = WorkbenchPlugin.getDefault()
-				.getWorkingSetManager();
-		IWorkingSet editWorkingSet = (IWorkingSet) getSelectedWorkingSets()
-				.get(0);
-		IWorkingSetEditWizard wizard = manager
-				.createWorkingSetEditWizard(editWorkingSet);
-		WizardDialog dialog = new WizardDialog(getShell(), wizard);
-		IWorkingSet originalWorkingSet = (IWorkingSet) editedWorkingSets
-				.get(editWorkingSet);
-		boolean firstEdit = originalWorkingSet == null;
-
-		// save the original working set values for restoration when selection
-		// dialog is cancelled.
-		if (firstEdit) {
-			originalWorkingSet = new WorkingSet(editWorkingSet.getName(),
-					editWorkingSet.getLabel(), editWorkingSet.getElements());
-		} else {
-			editedWorkingSets.remove(editWorkingSet);
-		}
-		dialog.create();
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(),
-				IWorkbenchHelpContextIds.WORKING_SET_EDIT_WIZARD);
-		if (dialog.open() == Window.OK) {
-			editWorkingSet = wizard.getSelection();
-			availableWorkingSetsChanged();
-			// make sure ok button is enabled when the selected working set
-			// is edited. Fixes bug 33386.
-			updateButtonAvailability();
-		}
-		editedWorkingSets.put(editWorkingSet, originalWorkingSet);
-	}
-
-	/**
-	 * Opens a working set wizard for creating a new working set.
-	 */
-	void createWorkingSet() {
-		IWorkingSetManager manager = WorkbenchPlugin.getDefault()
-				.getWorkingSetManager();
-		String ids[] = null;
-		if (workingSetIds != null) {
-			ids = (String[]) workingSetIds.toArray(new String[workingSetIds
-					.size()]);
-		}
-		IWorkingSetNewWizard wizard = manager.createWorkingSetNewWizard(ids);
-		// the wizard can never be null since we have at least a resource
-		// working set
-		// creation page
-		WizardDialog dialog = new WizardDialog(getShell(), wizard);
-
-		dialog.create();
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(),
-				IWorkbenchHelpContextIds.WORKING_SET_NEW_WIZARD);
-		if (dialog.open() == Window.OK) {
-			IWorkingSet workingSet = wizard.getSelection();
-			manager.addWorkingSet(workingSet);
-			addedWorkingSets.add(workingSet);
-			availableWorkingSetsChanged();
-		}
-	}
-
-	protected abstract List getSelectedWorkingSets();
-
-	/**
-	 * Notifies the dialog that there has been a change to the sets available
-	 * for use. In other words, the user has either added, deleted or renamed a
-	 * set.
-     * <p>
-     * Subclasses should override, but should call <code>super.availableWorkingSetsChanged</code>
-     * to update the selection button enablements.
-     * </p>
-	 */
-	protected void availableWorkingSetsChanged() {
-		boolean enable = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets().length > 0;
-		if (!(selectAllButton == null || selectAllButton.isDisposed())){
-			selectAllButton.setEnabled(enable);
-		}
-		if (!(deselectAllButton == null || deselectAllButton.isDisposed())){
-			deselectAllButton.setEnabled(enable);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dialogs.IWorkingSetSelectionDialog#getSelection()
-	 */
-	public IWorkingSet[] getSelection() {
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dialogs.IWorkingSetSelectionDialog#setSelection(org.eclipse.ui.IWorkingSet[])
-	 */
-	public void setSelection(IWorkingSet[] selection) {
-		result = selection;
-	}
-
-	/**
-	 * Overrides method in Dialog
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#open()
-	 */
-	public int open() {
-		addedWorkingSets = new ArrayList();
-		removedWorkingSets = new ArrayList();
-		editedWorkingSets = new HashMap();
-		removedMRUWorkingSets = new ArrayList();
-		return super.open();
-	}
-
-	/**
-	 * Return the list of working sets that were added during the life of this
-	 * dialog.
-	 * 
-	 * @return the working sets
-	 */
-	protected final List getAddedWorkingSets() {
-		return addedWorkingSets;
-	}
-
-	/**
-	 * Return the map of working sets that were edited during the life of this
-	 * dialog.
-	 * 
-	 * @return the working sets
-	 */
-	protected final Map getEditedWorkingSets() {
-		return editedWorkingSets;
-	}
-
-	/**
-	 * Return the list of working sets that were removed from the MRU list
-	 * during the life of this dialog.
-	 * 
-	 * @return the working sets
-	 */
-	protected final List getRemovedMRUWorkingSets() {
-		return removedMRUWorkingSets;
-	}
-
-	/**
-	 * Return the list of working sets that were removed during the life of this
-	 * dialog.
-	 * 
-	 * @return the working sets
-	 */
-	protected final List getRemovedWorkingSets() {
-		return removedWorkingSets;
-	}
-
-	/**
-	 * Updates the modify buttons' enabled state based on the current seleciton.
-	 */
-	protected void updateButtonAvailability() {
-		List selection = getSelectedWorkingSets();
-		boolean hasSelection = selection != null && !selection.isEmpty();
-		boolean hasSingleSelection = hasSelection;
-		WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
-				.getWorkingSetRegistry();
-
-		newButton.setEnabled(registry.hasNewPageWorkingSetDescriptor());
-
-		if (canEdit)
-			removeButton.setEnabled(hasSelection);
-
-		IWorkingSet selectedWorkingSet = null;
-		if (hasSelection) {
-			hasSingleSelection = selection.size() == 1;
-			if (hasSingleSelection) {
-				selectedWorkingSet = (IWorkingSet) selection
-						.get(0);
-			}
-		}
-		if (canEdit)
-			detailsButton.setEnabled(hasSingleSelection
-				&& selectedWorkingSet.isEditable());
-
-		getOkButton().setEnabled(true);
-	}
-
-	/**
-	 * Removes the selected working sets from the workbench.
-	 */
-	protected void removeSelectedWorkingSets() {
-		List selection = getSelectedWorkingSets();
-		removeSelectedWorkingSets(selection);
-	}
-
-	/**
-	 * Remove the working sets contained in the provided selection from the
-	 * working set manager.
-	 * 
-	 * @param selection
-	 *            the sets
-	 */
-	protected void removeSelectedWorkingSets(List selection) {
-		IWorkingSetManager manager = WorkbenchPlugin.getDefault()
-				.getWorkingSetManager();
-		Iterator iter = selection.iterator();
-		while (iter.hasNext()) {
-			IWorkingSet workingSet = (IWorkingSet) iter.next();
-			if (getAddedWorkingSets().contains(workingSet)) {
-				getAddedWorkingSets().remove(workingSet);
-			} else {
-				IWorkingSet[] recentWorkingSets = manager
-						.getRecentWorkingSets();
-				for (int i = 0; i < recentWorkingSets.length; i++) {
-					if (workingSet.equals(recentWorkingSets[i])) {
-						getRemovedMRUWorkingSets().add(workingSet);
-						break;
-					}
-				}
-				getRemovedWorkingSets().add(workingSet);
-			}
-			manager.removeWorkingSet(workingSet);
-		}
-		availableWorkingSetsChanged();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ActionSetComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ActionSetComparator.java
deleted file mode 100644
index d630a0d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ActionSetComparator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-
-/**
- * This is used to sort action sets in the perspective customization dialog.
- */
-public class ActionSetComparator extends ViewerComparator {
-
-    /**
-     * Creates a new sorter.
-     */
-    public ActionSetComparator() {
-    }
-
-    /**
-     * Returns a negative, zero, or positive number depending on whether
-     * the first element is less than, equal to, or greater than
-     * the second element.
-     */
-    public int compare(Viewer viewer, Object e1, Object e2) {
-        if (e1 instanceof IActionSetDescriptor) {
-            String str1 = DialogUtil.removeAccel(((IActionSetDescriptor) e1)
-                    .getLabel());
-            String str2 = DialogUtil.removeAccel(((IActionSetDescriptor) e2)
-                    .getLabel());
-            return getComparator().compare(str1, str2);
-        }
-        return 0;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java
deleted file mode 100644
index 30a2cac..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/AdaptableForwarder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Class that wraps an object and forwards adapter calls if possible, otherwise
- * returns the object. This is used to maintain API compatibility with methods that
- * need an IAdaptable but when the operation supports a broader type.
- * 
- * @since 3.2
- */
-public class AdaptableForwarder implements IAdaptable {
-
-	private Object element;
-	
-	/**
-	 * Create a new instance of the receiver.
-	 * @param element
-	 */
-	public AdaptableForwarder(Object element) {
-		this.element = element;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-        return Util.getAdapter(element, adapter);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/BundleSigningTray.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/BundleSigningTray.java
deleted file mode 100644
index bb8b16a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/BundleSigningTray.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.cert.Certificate;
-import java.security.cert.X509Certificate;
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Map.Entry;
-
-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.jobs.Job;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.DialogTray;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.eclipse.osgi.signedcontent.SignedContentFactory;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-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.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.about.AboutBundleData;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-/**
- * @since 3.3
- *
- */
-public class BundleSigningTray extends DialogTray {
-
-
-	private Text date;
-	private StyledText certificate;
-	private AboutBundleData data;
-	private TrayDialog dialog;
-	
-	/**
-	 * 
-	 */
-	public BundleSigningTray(TrayDialog dialog) {
-		this.dialog = dialog;
-	}
-	
-	public void setData(AboutBundleData data) {
-		this.data = data;
-		startJobs();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.DialogTray#createContents(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		Composite content = new Composite(parent, SWT.NONE);
-		content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		GridLayout layout = new GridLayout(2, false);
-		content.setLayout(layout);
-		// date
-		Color backgroundColor = parent.getDisplay().getSystemColor(
-				SWT.COLOR_WIDGET_BACKGROUND);
-		{
-			Label label = new Label(content, SWT.NONE);
-			label.setText(WorkbenchMessages.BundleSigningTray_Signing_Date); 
-			GridData data = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
-			date = new Text(content, SWT.READ_ONLY);
-			GC gc = new GC(date);
-			gc.setFont(JFaceResources.getDialogFont());
-			Point size = gc.stringExtent(DateFormat.getDateTimeInstance().format(new Date()));
-			data.widthHint = size.x;
-			gc.dispose();
-			date.setText(WorkbenchMessages.BundleSigningTray_Working); 
-			date.setLayoutData(data);
-			date.setBackground(backgroundColor);
-		}
-		// signer
-		{
-			Label label = new Label(content, SWT.NONE);
-			label.setText(WorkbenchMessages.BundleSigningTray_Signing_Certificate); 
-			GridData data = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false);
-			data.horizontalSpan = 2;
-			data = new GridData(SWT.FILL, SWT.FILL, true, true);
-			data.horizontalSpan = 2;
-			certificate = new StyledText(content, SWT.READ_ONLY | SWT.MULTI | SWT.WRAP);
-			certificate.setText(WorkbenchMessages.BundleSigningTray_Working); 
-			certificate.setLayoutData(data);
-		}
-		
-		// problems
-//		{
-//			Label label = new Label(content, SWT.NONE);
-//			label.setText("Problems:"); //$NON-NLS-1$
-//
-//		}
-		Dialog.applyDialogFont(content);
-
-		startJobs(); // start the jobs that will prime the content
-
-		return content;
-	}
-	
-	/**
-	 * 
-	 */
-	private void startJobs() {
-		if (!isOpen())
-			return;
-		certificate.setText(WorkbenchMessages.BundleSigningTray_Working); 
-		date.setText(WorkbenchMessages.BundleSigningTray_Working); 
-		final BundleContext bundleContext = WorkbenchPlugin.getDefault()
-				.getBundleContext();
-		final ServiceReference factoryRef = bundleContext
-				.getServiceReference(SignedContentFactory.class.getName());
-		if (factoryRef == null) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							WorkbenchMessages.BundleSigningTray_Cant_Find_Service), 
-					StatusManager.LOG);
-			return;
-		}
-
-		final SignedContentFactory contentFactory = (SignedContentFactory) bundleContext
-				.getService(factoryRef);
-		if (contentFactory == null) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							WorkbenchMessages.BundleSigningTray_Cant_Find_Service), 
-					StatusManager.LOG);
-			return;
-		}
-
-		final AboutBundleData myData = data;
-		final Job signerJob = new Job(NLS.bind(WorkbenchMessages.BundleSigningTray_Determine_Signer_For, myData.getId())) { 
-
-			protected IStatus run(IProgressMonitor monitor) {
-				try {
-					if (myData != data)
-						return Status.OK_STATUS;
-					SignedContent signedContent = contentFactory.getSignedContent(myData
-							.getBundle());
-					if (myData != data)
-						return Status.OK_STATUS;
-					SignerInfo[] signers = signedContent.getSignerInfos();
-					final String signerText, dateText;
-					final Shell dialogShell = dialog.getShell();
-					if (!isOpen() && BundleSigningTray.this.data == myData)
-						return Status.OK_STATUS;
-
-					if (signers.length == 0) {
-						signerText = WorkbenchMessages.BundleSigningTray_Unsigned; 
-						dateText = WorkbenchMessages.BundleSigningTray_Unsigned; 
-					} else {
-						Properties [] certs = parseCerts(signers[0].getCertificateChain());
-						if (certs.length == 0)
-							signerText = WorkbenchMessages.BundleSigningTray_Unknown; 
-						else {
-							StringBuffer buffer = new StringBuffer();
-							for (Iterator i = certs[0].entrySet().iterator(); i.hasNext(); ) {
-								Map.Entry entry = (Entry) i.next();
-								buffer.append(entry.getKey());
-								buffer.append('=');
-								buffer.append(entry.getValue());
-								if (i.hasNext())
-									buffer.append('\n');
-							}
-							signerText = buffer.toString();
-						}
-
-						Date signDate = signedContent.getSigningTime(signers[0]);
-						if (signDate != null)
-							dateText = DateFormat.getDateTimeInstance().format(
-									signDate);
-						else
-							dateText = WorkbenchMessages.BundleSigningTray_Unknown; 
-					}
-					
-					Display display = dialogShell.getDisplay();
-					display.asyncExec(new Runnable() {
-
-						public void run() {
-							// check to see if the tray is still visible and if we're still looking at the same item
-							if (!isOpen() && BundleSigningTray.this.data != myData)
-								return;
-							certificate.setText(signerText);
-							date.setText(dateText);
-						}
-					});
-
-				} catch (IOException e) {
-					return new Status(IStatus.ERROR,
-							WorkbenchPlugin.PI_WORKBENCH, e.getMessage(), e);
-				} catch (GeneralSecurityException e) {
-					return new Status(IStatus.ERROR,
-							WorkbenchPlugin.PI_WORKBENCH, e.getMessage(), e);
-				}
-				return Status.OK_STATUS;
-			}
-		};
-		signerJob.setSystem(true);
-		signerJob.belongsTo(signerJob);
-		signerJob.schedule();
-
-		Job cleanup = new Job(WorkbenchMessages.BundleSigningTray_Unget_Signing_Service) { 
-
-			protected IStatus run(IProgressMonitor monitor) {
-				try {
-					getJobManager().join(signerJob, monitor);
-				} catch (OperationCanceledException e) {
-				} catch (InterruptedException e) {
-				}
-				bundleContext.ungetService(factoryRef);
-				return Status.OK_STATUS;
-			}
-		};
-		cleanup.setSystem(true);
-		cleanup.schedule();
-
-	}
-
-	/**
-	 * 
-	 */
-	private boolean isOpen() {
-		return certificate != null && !certificate.isDisposed();
-	}
-
-	private Properties[] parseCerts(Certificate[] chain) {
-		List certs = new ArrayList(chain.length);
-		for (int i = 0; i < chain.length; i++) {
-			if (!(chain[i] instanceof X509Certificate))
-				continue;
-			Map cert = parseCert(((X509Certificate) chain[i]).getSubjectDN().getName());
-			if (cert != null)
-				certs.add(cert);
-		}
-		return (Properties []) certs.toArray(new Properties[certs.size()]);
-
-
-	}
-
-	/**
-	 * @param certString
-	 * @return
-	 */
-	private Properties parseCert(String certString) {
-		StringTokenizer toker = new StringTokenizer(certString, ","); //$NON-NLS-1$
-		Properties cert = new Properties();
-		while (toker.hasMoreTokens()) {
-			String pair = toker.nextToken();
-			int idx = pair.indexOf('=');
-			if (idx > 0 && idx < pair.length() - 2) {
-				String key = pair.substring(0, idx).trim();
-				String value = pair.substring(idx + 1).trim();
-				if (value.length() > 2) {
-					if (value.charAt(0) == '\"')
-						value = value.substring(1);
-
-					if (value.charAt(value.length() - 1) == '\"')
-						value = value.substring(0, value.length() - 1);
-				}
-				cert.setProperty(key, value);
-			}
-		}
-		return cert;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CapabilityFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CapabilityFilter.java
deleted file mode 100644
index 0b6401c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CapabilityFilter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-
-/**
- * The CapabilityFilter is a filter that uses the capabilities
- * support as filter for items.
- */
-public class CapabilityFilter extends ViewerFilter {
-
-	/**
-	 * Create a new instance of a capability filter.
-	 */
-	public CapabilityFilter() {
-		super();
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-	 */
-	public boolean select(Viewer viewer, Object parentElement, Object element) {
-		return ! WorkbenchActivityHelper.filterItem(element);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
deleted file mode 100644
index ff78c8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ContentTypesPreferencePage.java
+++ /dev/null
@@ -1,679 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.osgi.util.TextProcessor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.PreferenceLinkArea;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Preference page that allows manipulation of core content types. Unlike most
- * preference pages, it does not work on the preference store itself but rather
- * the content type manager. As such, there are no apply/default buttons and all
- * changes made take effect immediately.
- * 
- * @since 3.1
- */
-public class ContentTypesPreferencePage extends PreferencePage implements
-		IWorkbenchPreferencePage {
-
-	private ListViewer fileAssociationViewer;
-
-	private Button removeButton;
-
-	private TreeViewer contentTypesViewer;
-
-	private Button addButton;
-	
-	private Button editButton;
-
-	private Text charsetField;
-
-	private Button setButton;
-
-	private IWorkbench workbench;
-
-	private class Spec {
-		String name;
-
-		String ext;
-
-		boolean isPredefined;
-
-		int sortValue;
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.lang.Object#toString()
-		 */
-		public String toString() {
-			String toString;
-			if (name != null) {
-				toString = name;
-			} else {
-				toString = "*." + ext; //$NON-NLS-1$
-			}
-
-			if (isPredefined) {
-				toString = NLS.bind(
-						WorkbenchMessages.ContentTypes_lockedFormat, toString);
-			}
-
-			return toString;
-		}
-	}
-
-	private class FileSpecComparator extends ViewerComparator {
-		public int category(Object element) {
-			// only Spec objects in here - unchecked cast
-			return ((Spec) element).sortValue;
-		}
-	}
-
-	private class FileSpecLabelProvider extends LabelProvider {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-		 */
-		public String getText(Object element) {
-			String label = super.getText(element);
-			return TextProcessor.process(label, "*."); //$NON-NLS-1$
-		}
-	}
-
-	private class FileSpecContentProvider implements IStructuredContentProvider {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-		 */
-		public void dispose() {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-		 *      java.lang.Object, java.lang.Object)
-		 */
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-		 */
-		public Object[] getElements(Object inputElement) {
-			IContentType contentType = (IContentType) inputElement;
-			String[] userextfileSpecs = contentType
-					.getFileSpecs(IContentType.FILE_EXTENSION_SPEC
-							| IContentType.IGNORE_PRE_DEFINED);
-			String[] usernamefileSpecs = contentType
-					.getFileSpecs(IContentType.FILE_NAME_SPEC
-							| IContentType.IGNORE_PRE_DEFINED);
-			String[] preextfileSpecs = contentType
-					.getFileSpecs(IContentType.FILE_EXTENSION_SPEC
-							| IContentType.IGNORE_USER_DEFINED);
-			String[] prenamefileSpecs = contentType
-					.getFileSpecs(IContentType.FILE_NAME_SPEC
-							| IContentType.IGNORE_USER_DEFINED);
-
-			return createSpecs(userextfileSpecs, usernamefileSpecs,
-					preextfileSpecs, prenamefileSpecs);
-		}
-
-		private Object[] createSpecs(String[] userextfileSpecs,
-				String[] usernamefileSpecs, String[] preextfileSpecs,
-				String[] prenamefileSpecs) {
-			List returnValues = new ArrayList();
-			for (int i = 0; i < usernamefileSpecs.length; i++) {
-				Spec spec = new Spec();
-				spec.name = usernamefileSpecs[i];
-				spec.isPredefined = false;
-				spec.sortValue = 0;
-				returnValues.add(spec);
-			}
-
-			for (int i = 0; i < prenamefileSpecs.length; i++) {
-				Spec spec = new Spec();
-				spec.name = prenamefileSpecs[i];
-				spec.isPredefined = true;
-				spec.sortValue = 1;
-				returnValues.add(spec);
-			}
-
-			for (int i = 0; i < userextfileSpecs.length; i++) {
-				Spec spec = new Spec();
-				spec.ext = userextfileSpecs[i];
-				spec.isPredefined = false;
-				spec.sortValue = 2;
-				returnValues.add(spec);
-			}
-
-			for (int i = 0; i < preextfileSpecs.length; i++) {
-				Spec spec = new Spec();
-				spec.ext = preextfileSpecs[i];
-				spec.isPredefined = true;
-				spec.sortValue = 3;
-				returnValues.add(spec);
-			}
-
-			return returnValues.toArray();
-		}
-	}
-
-	private class ContentTypesLabelProvider extends LabelProvider {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-		 */
-		public String getText(Object element) {
-			IContentType contentType = (IContentType) element;
-			return contentType.getName();
-		}
-	}
-
-	private class ContentTypesContentProvider implements ITreeContentProvider {
-
-		private IContentTypeManager manager;
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-		 */
-		public Object[] getChildren(Object parentElement) {
-			List elements = new ArrayList();
-			IContentType baseType = (IContentType) parentElement;
-			IContentType[] contentTypes = manager.getAllContentTypes();
-			for (int i = 0; i < contentTypes.length; i++) {
-				IContentType type = contentTypes[i];
-				if (Util.equals(type.getBaseType(), baseType)) {
-					elements.add(type);
-				}
-			}
-			return elements.toArray();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-		 */
-		public Object getParent(Object element) {
-			IContentType contentType = (IContentType) element;
-			return contentType.getBaseType();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-		 */
-		public boolean hasChildren(Object element) {
-			return getChildren(element).length > 0;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-		 */
-		public Object[] getElements(Object inputElement) {
-			return getChildren(null);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-		 */
-		public void dispose() {
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-		 *      java.lang.Object, java.lang.Object)
-		 */
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			manager = (IContentTypeManager) newInput;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout(2, false);
-		layout.marginHeight = layout.marginWidth = 0;
-		composite.setLayout(layout);
-
-		PreferenceLinkArea contentTypeArea = new PreferenceLinkArea(
-				composite,
-				SWT.NONE,
-				"org.eclipse.ui.preferencePages.FileEditors", WorkbenchMessages.ContentTypes_FileEditorsRelatedLink,//$NON-NLS-1$
-				(IWorkbenchPreferenceContainer) getContainer(), null);
-
-		GridData data = new GridData(GridData.FILL_HORIZONTAL
-				| GridData.GRAB_HORIZONTAL);
-		contentTypeArea.getControl().setLayoutData(data);
-
-		createContentTypesTree(composite);
-		createFileAssociations(composite);
-		createCharset(composite);
-
-		workbench.getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.CONTENT_TYPES_PREFERENCE_PAGE);
-
-		applyDialogFont(composite);
-		return composite;
-	}
-
-	private void createCharset(final Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout(3, false);
-		layout.marginHeight = layout.marginWidth = 0;
-		GridData compositeData = new GridData(GridData.FILL_HORIZONTAL);
-		compositeData.horizontalSpan = 2;
-		composite.setLayoutData(compositeData);
-		composite.setLayout(layout);
-
-		Label label = new Label(composite, SWT.NONE);
-		label.setFont(parent.getFont());
-		label.setText(WorkbenchMessages.ContentTypes_characterSetLabel);
-		charsetField = new Text(composite, SWT.SINGLE | SWT.BORDER);
-		charsetField.setFont(parent.getFont());
-		charsetField.setEnabled(false);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		charsetField.setLayoutData(data);
-		setButton = new Button(composite, SWT.PUSH);
-		setButton.setFont(parent.getFont());
-		setButton
-				.setText(WorkbenchMessages.ContentTypes_characterSetUpdateLabel);
-		setButton.setEnabled(false);
-		setButtonLayoutData(setButton);
-		setButton.addSelectionListener(new SelectionAdapter() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				try {
-					String text = charsetField.getText().trim();
-					if (text.length() == 0) {
-						text = null;
-					}
-					getSelectedContentType().setDefaultCharset(text);
-					setButton.setEnabled(false);
-				} catch (CoreException e1) {
-					StatusUtil.handleStatus(e1.getStatus(), StatusManager.SHOW,
-							parent.getShell());
-				}
-			}
-		});
-
-		charsetField.addKeyListener(new KeyAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
-			 */
-			public void keyReleased(KeyEvent e) {
-				IContentType contentType = getSelectedContentType();
-				String charset = contentType.getDefaultCharset();
-				if (charset == null) {
-					charset = ""; //$NON-NLS-1$
-				}
-				setButton.setEnabled(!charset.equals(charsetField.getText()));
-			}
-		});
-
-	}
-
-	/**
-	 * @param composite
-	 */
-	private void createFileAssociations(final Composite composite) {
-		{
-			Label label = new Label(composite, SWT.NONE);
-			label.setText(WorkbenchMessages.ContentTypes_fileAssociationsLabel);
-			GridData data = new GridData();
-			data.horizontalSpan = 2;
-			label.setLayoutData(data);
-		}
-		{
-			fileAssociationViewer = new ListViewer(composite);
-			fileAssociationViewer.setComparator(new FileSpecComparator());
-			fileAssociationViewer.getControl().setFont(composite.getFont());
-			fileAssociationViewer
-					.setContentProvider(new FileSpecContentProvider());
-			fileAssociationViewer.setLabelProvider(new FileSpecLabelProvider());
-			GridData data = new GridData(GridData.FILL_BOTH);
-			data.horizontalSpan = 1;
-			fileAssociationViewer.getControl().setLayoutData(data);
-			fileAssociationViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						public void selectionChanged(SelectionChangedEvent event) {
-							IStructuredSelection selection = (IStructuredSelection) event
-									.getSelection();
-							if (selection.isEmpty()) {
-								editButton.setEnabled(false);
-								removeButton.setEnabled(false);
-								return;
-							}
-							boolean enabled = true;
-							List elements = selection.toList();
-							for (Iterator i = elements.iterator(); i.hasNext();) {
-								Spec spec = (Spec) i.next();
-								if (spec.isPredefined) {
-									enabled = false;
-								}
-							}
-							editButton.setEnabled(enabled && selection.size() == 1);
-							removeButton.setEnabled(enabled);
-						}
-					});
-		}
-		{
-			Composite buttonArea = new Composite(composite, SWT.NONE);
-			GridLayout layout = new GridLayout(1, false);
-			layout.marginHeight = layout.marginWidth = 0;
-			buttonArea.setLayout(layout);
-			GridData data = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
-			buttonArea.setLayoutData(data);
-
-			addButton = new Button(buttonArea, SWT.PUSH);
-			addButton.setFont(composite.getFont());
-			addButton
-					.setText(WorkbenchMessages.ContentTypes_fileAssociationsAddLabel);
-			addButton.setEnabled(false);
-			setButtonLayoutData(addButton);
-			addButton.addSelectionListener(new SelectionAdapter() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-				 */
-				public void widgetSelected(SelectionEvent e) {
-					Shell shell = composite.getShell();
-					IContentType selectedContentType = getSelectedContentType();
-					FileExtensionDialog dialog = new FileExtensionDialog(
-							shell,
-							WorkbenchMessages.ContentTypes_addDialog_title,
-							IWorkbenchHelpContextIds.FILE_EXTENSION_DIALOG,
-							WorkbenchMessages.ContentTypes_addDialog_messageHeader,
-							WorkbenchMessages.ContentTypes_addDialog_message,
-							WorkbenchMessages.ContentTypes_addDialog_label);
-					if (dialog.open() == Window.OK) {
-						String name = dialog.getName();
-						String extension = dialog.getExtension();
-						try {
-							if (name.equals("*")) { //$NON-NLS-1$
-								selectedContentType.addFileSpec(extension,
-										IContentType.FILE_EXTENSION_SPEC);
-							} else {
-								selectedContentType
-										.addFileSpec(
-												name
-														+ (extension.length() > 0 ? ('.' + extension)
-																: ""), //$NON-NLS-1$
-												IContentType.FILE_NAME_SPEC);
-							}
-						} catch (CoreException ex) {
-							StatusUtil.handleStatus(ex.getStatus(),
-									StatusManager.SHOW, shell);
-							WorkbenchPlugin.log(ex);
-						} finally {
-							fileAssociationViewer.refresh(false);
-						}
-					}
-				}
-			});
-
-			editButton = new Button(buttonArea, SWT.PUSH);
-			editButton.setFont(composite.getFont());
-			editButton
-					.setText(WorkbenchMessages.ContentTypes_fileAssociationsEditLabel);
-			editButton.setEnabled(false);
-			setButtonLayoutData(editButton);
-			editButton.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent e) {
-					Shell shell = composite.getShell();
-					IContentType selectedContentType = getSelectedContentType();
-					Spec spec = getSelectedSpecs()[0];
-					FileExtensionDialog dialog = new FileExtensionDialog(
-							shell,
-							WorkbenchMessages.ContentTypes_editDialog_title,
-							IWorkbenchHelpContextIds.FILE_EXTENSION_DIALOG,
-							WorkbenchMessages.ContentTypes_editDialog_messageHeader,
-							WorkbenchMessages.ContentTypes_editDialog_message,
-							WorkbenchMessages.ContentTypes_editDialog_label);
-					if (spec.name == null) {
-						dialog.setInitialValue("*." + spec.ext); //$NON-NLS-1$
-					} else {
-						dialog.setInitialValue(spec.name);
-					}
-					if (dialog.open() == Window.OK) {
-						String name = dialog.getName();
-						String extension = dialog.getExtension();
-						try {
-							// remove the original spec
-							if (spec.name != null) {
-								selectedContentType.removeFileSpec(spec.name,
-										IContentType.FILE_NAME_SPEC);
-							} else if (spec.ext != null) {
-								selectedContentType.removeFileSpec(spec.ext,
-										IContentType.FILE_EXTENSION_SPEC);
-							}
-
-							// add the new one
-							if (name.equals("*")) { //$NON-NLS-1$
-								selectedContentType.addFileSpec(extension,
-										IContentType.FILE_EXTENSION_SPEC);
-							} else {
-								selectedContentType
-										.addFileSpec(
-												name
-														+ (extension.length() > 0 ? ('.' + extension)
-																: ""), //$NON-NLS-1$
-												IContentType.FILE_NAME_SPEC);
-							}
-						} catch (CoreException ex) {
-							StatusUtil.handleStatus(ex.getStatus(),
-									StatusManager.SHOW, shell);
-							WorkbenchPlugin.log(ex);
-						} finally {
-							fileAssociationViewer.refresh(false);
-						}
-					}
-				}
-			});
-
-			removeButton = new Button(buttonArea, SWT.PUSH);
-			removeButton.setEnabled(false);
-			removeButton
-					.setText(WorkbenchMessages.ContentTypes_fileAssociationsRemoveLabel);
-			setButtonLayoutData(removeButton);
-			removeButton.addSelectionListener(new SelectionAdapter() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-				 */
-				public void widgetSelected(SelectionEvent event) {
-					IContentType contentType = getSelectedContentType();
-					Spec[] specs = getSelectedSpecs();
-					MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID,
-							0, new IStatus[0],
-							WorkbenchMessages.ContentTypes_errorDialogMessage,
-							null);
-					for (int i = 0; i < specs.length; i++) {
-						Spec spec = specs[i];
-						try {
-							if (spec.name != null) {
-								contentType.removeFileSpec(spec.name,
-										IContentType.FILE_NAME_SPEC);
-							} else if (spec.ext != null) {
-								contentType.removeFileSpec(spec.ext,
-										IContentType.FILE_EXTENSION_SPEC);
-							}
-						} catch (CoreException e) {
-							result.add(e.getStatus());
-						}
-					}
-					if (!result.isOK()) {
-						StatusUtil.handleStatus(result, StatusManager.SHOW,
-								composite.getShell());
-					}
-					fileAssociationViewer.refresh(false);
-				}
-			});
-		}
-	}
-
-	protected Spec[] getSelectedSpecs() {
-		List list = ((IStructuredSelection) fileAssociationViewer
-				.getSelection()).toList();
-		return (Spec[]) list.toArray(new Spec[list.size()]);
-	}
-
-	protected IContentType getSelectedContentType() {
-		return (IContentType) ((IStructuredSelection) contentTypesViewer
-				.getSelection()).getFirstElement();
-	}
-
-	/**
-	 * @param composite
-	 */
-	private void createContentTypesTree(Composite composite) {
-		{
-			Label label = new Label(composite, SWT.NONE);
-			label.setFont(composite.getFont());
-			label.setText(WorkbenchMessages.ContentTypes_contentTypesLabel);
-			GridData data = new GridData();
-			data.horizontalSpan = 2;
-			label.setLayoutData(data);
-		}
-		{
-			contentTypesViewer = new TreeViewer(composite, SWT.SINGLE
-					| SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-			contentTypesViewer.getControl().setFont(composite.getFont());
-			contentTypesViewer
-					.setContentProvider(new ContentTypesContentProvider());
-			contentTypesViewer
-					.setLabelProvider(new ContentTypesLabelProvider());
-			contentTypesViewer.setComparator(new ViewerComparator());
-			contentTypesViewer.setInput(Platform.getContentTypeManager());
-			GridData data = new GridData(GridData.FILL_BOTH);
-			data.horizontalSpan = 2;
-			contentTypesViewer.getControl().setLayoutData(data);
-
-			contentTypesViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						/*
-						 * (non-Javadoc)
-						 * 
-						 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-						 */
-						public void selectionChanged(SelectionChangedEvent event) {
-							IContentType contentType = (IContentType) ((IStructuredSelection) event
-									.getSelection()).getFirstElement();
-							fileAssociationViewer.setInput(contentType);
-
-							if (contentType != null) {
-								String charset = contentType
-										.getDefaultCharset();
-								if (charset == null) {
-									charset = ""; //$NON-NLS-1$
-								}
-								charsetField.setText(charset);
-							} else {
-								charsetField.setText(""); //$NON-NLS-1$
-							}
-
-							charsetField.setEnabled(contentType != null);
-							addButton.setEnabled(contentType != null);
-							setButton.setEnabled(false);
-						}
-					});
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-	 */
-	public void init(IWorkbench workbench) {
-		this.workbench = workbench;
-		noDefaultAndApplyButton();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java
deleted file mode 100644
index 921a42a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java
+++ /dev/null
@@ -1,1773 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.CoolBarManager;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.StatusLineManager;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.jface.internal.provisional.action.ToolBarContributionItem2;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-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.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.DefaultToolTip;
-import org.eclipse.jface.window.ToolTip;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-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.graphics.Point;
-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.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IActionBars2;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.application.ActionBarAdvisor;
-import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
-import org.eclipse.ui.internal.ActionSetActionBars;
-import org.eclipse.ui.internal.ActionSetContributionItem;
-import org.eclipse.ui.internal.ActionSetMenuManager;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.PluginActionContributionItem;
-import org.eclipse.ui.internal.PluginActionCoolBarContributionItem;
-import org.eclipse.ui.internal.PluginActionSet;
-import org.eclipse.ui.internal.PluginActionSetBuilder;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.internal.provisional.application.IActionBarConfigurer2;
-import org.eclipse.ui.internal.registry.ActionSetDescriptor;
-import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.model.WorkbenchViewerComparator;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-import org.eclipse.ui.wizards.IWizardCategory;
-
-/**
- * Dialog to allow users the ability to customize the perspective. This includes
- * customizing menus and toolbars by adding, removing, or re-arranging commands
- * or groups of commands.
- * 
- */
-// @issue need to break this not to show menu specific page
-public class CustomizePerspectiveDialog extends TrayDialog {
-	private DefaultToolTip actionSetMenuViewerTooltip;
-	
-	private DefaultToolTip actionSetToolbarViewerTooltip;
-	
-	private DefaultToolTip actionSetsViewerTooltip;
-	
-    private Perspective perspective;
-
-    WorkbenchWindow window;
-
-    private TabFolder tabFolder;
-
-    private CheckboxTableViewer actionSetsViewer;
-
-    private TreeViewer actionSetMenuViewer;
-
-    private TreeViewer actionSetToolbarViewer;
-
-    private Combo menusCombo;
-
-    private CheckboxTreeViewer menuCategoriesViewer;
-
-    private CheckboxTableViewer menuItemsViewer;
-
-    private static int lastSelectedTab = -1;
-
-    private static int lastSelectedMenuIndex = 0;
-
-    private static String lastSelectedActionSetId = null;
-
-    private final static int TAB_WIDTH_IN_DLUS = 490;
-
-    private final static int TAB_HEIGHT_IN_DLUS = 230;
-
-    private final String shortcutMenuColumnHeaders[] = {
-            WorkbenchMessages.ActionSetSelection_menuColumnHeader,
-            WorkbenchMessages.ActionSetSelection_descriptionColumnHeader };
-
-    private int[] shortcutMenuColumnWidths = { 125, 300 };
-
-    private ActionSetDescriptor selectedActionSet = null;
-
-    private ShortcutMenu selectedMenuCategory = null;
-
-    ImageDescriptor menuImageDescriptor = null;
-
-    ImageDescriptor submenuImageDescriptor = null;
-
-    ImageDescriptor toolbarImageDescriptor = null;
-
-    ShortcutMenu rootMenu;
-
-    private ArrayList actionSets = new ArrayList();
-
-    private Hashtable actionSetStructures = new Hashtable();
-
-	private IWorkbenchWindowConfigurer configurer;
-
-    private List initiallyActive = new ArrayList();
-
-    class ActionSetDisplayItem extends Object {
-        /**
-         * Tree representation for action set menu and toolbar items.  
-         */
-        ArrayList children = new ArrayList();
-
-        ActionSetDisplayItem parent = null;
-
-        private String id = null;
-
-        private String text = ""; //$NON-NLS-1$
-
-        String description = ""; //$NON-NLS-1$
-
-        ImageDescriptor imageDescriptor;
-
-        int type = MENUITEM;
-
-        private final static int MENUITEM = 0;
-
-        private final static int TOOLITEM = 1;
-
-        ActionSetDisplayItem(String id) {
-            this(null, id, "", MENUITEM); //$NON-NLS-1$
-        }
-
-        private ActionSetDisplayItem(ActionSetDisplayItem parent, String id,
-                String text, int type) {
-            if (parent != null) {
-                parent.children.add(this);
-                this.parent = parent;
-            }
-            this.id = id;
-            this.type = type;
-            this.text = removeShortcut(text);
-            this.text = DialogUtil.removeAccel(this.text);
-        }
-
-        private ActionSetDisplayItem find(String itemId) {
-            for (int i = 0; i < children.size(); i++) {
-                ActionSetDisplayItem child = (ActionSetDisplayItem) children
-                        .get(i);
-                if (itemId.equals(child.id)) {
-					return child;
-				}
-            }
-            return null;
-        }
-
-        /**
-         * @param actionSetId the action to fill
-         * @param item the item to fill 
-         */
-        public void fillMenusFor(String actionSetId, IContributionItem item) {
-            if (item instanceof ContributionManager) {
-                ContributionManager mgr = (ContributionManager) item;
-                IContributionItem[] items = mgr.getItems();
-                for (int i = 0; i < items.length; i++) {
-                    IContributionItem mgrItem = items[i];
-                    if (mgrItem instanceof ActionSetContributionItem) {
-                        ActionSetContributionItem actionSetItem = (ActionSetContributionItem) mgrItem;
-                        if (actionSetItem.getActionSetId().equals(actionSetId)) {
-                            IContributionItem innerItem = actionSetItem
-                                    .getInnerItem();
-                            if (innerItem instanceof MenuManager) {
-                                MenuManager inner = (MenuManager) actionSetItem
-                                        .getInnerItem();
-                                ActionSetDisplayItem node = new ActionSetDisplayItem(
-                                        this, inner.getId(), inner
-                                                .getMenuText(), MENUITEM);
-                                node.fillMenusFor(actionSetId, inner);
-                            } else if (innerItem instanceof ActionSetMenuManager) {
-                                ActionSetMenuManager inner = (ActionSetMenuManager) actionSetItem
-                                        .getInnerItem();
-                                MenuManager parentMgr = (MenuManager) inner
-                                        .getParent();
-                                ActionSetDisplayItem node = new ActionSetDisplayItem(
-                                        this, inner.getId(), parentMgr
-                                                .getMenuText(), MENUITEM);
-                                node.fillMenusFor(actionSetId, parentMgr);
-                            } else if (innerItem instanceof PluginActionContributionItem) {
-                                PluginActionContributionItem inner = (PluginActionContributionItem) actionSetItem
-                                        .getInnerItem();
-                                ActionSetDisplayItem node = new ActionSetDisplayItem(
-                                        this, inner.getId(), inner.getAction()
-                                                .getText(), MENUITEM);
-                                IAction action = inner.getAction();
-                                if (action != null) {
-                                    node.imageDescriptor = action
-                                            .getImageDescriptor();
-                                    node.description = action.getDescription();
-                                }
-                            }
-                        }
-                    } else if (mgrItem instanceof MenuManager) {
-                        MenuManager menuMgr = (MenuManager) mgrItem;
-                        boolean found = containsActionSet(menuMgr, actionSetId);
-                        if (found) {
-                            ActionSetDisplayItem node = new ActionSetDisplayItem(
-                                    this, menuMgr.getId(), menuMgr
-                                            .getMenuText(), MENUITEM);
-                            node.fillMenusFor(actionSetId, menuMgr);
-                        }
-                    }
-                }
-            }
-        }
-
-        /**
-         * @param actionSetId the action set to fill
-         * @param mgr the manager to fill into
-         */
-        public void fillToolsFor(String actionSetId, CoolBarManager mgr) {
-            IContributionItem[] items = mgr.getItems();
-            for (int i = 0; i < items.length; i++) {
-                if (items[i] instanceof IToolBarContributionItem) {
-                	IToolBarContributionItem cbItem = (IToolBarContributionItem) items[i];
-                    IContributionItem[] subItems = cbItem.getToolBarManager()
-                            .getItems();
-                    for (int j = 0; j < subItems.length; j++) {
-                        IContributionItem subItem = subItems[j];
-                        if (subItem instanceof PluginActionCoolBarContributionItem) {
-                            PluginActionCoolBarContributionItem actionItem = (PluginActionCoolBarContributionItem) subItem;
-                            if (actionItem.getActionSetId().equals(actionSetId)) {
-                                String toolbarId = cbItem.getId();
-                                ActionSetDisplayItem toolbar = find(toolbarId);
-                                if (toolbar == null) {
-                                    String toolbarText = window
-                                            .getToolbarLabel(toolbarId);
-                                    toolbar = new ActionSetDisplayItem(this,
-                                            toolbarId, toolbarText, TOOLITEM);
-                                }
-                                IAction action = actionItem.getAction();
-                                String toolItemText = action.getToolTipText();
-                                if (toolItemText == null) {
-									toolItemText = action.getText();
-								}
-                                ActionSetDisplayItem toolItem = new ActionSetDisplayItem(
-                                        toolbar, action.getId(), toolItemText,
-                                        TOOLITEM);
-                                toolItem.imageDescriptor = action
-                                        .getImageDescriptor();
-                                toolItem.description = action.getDescription();
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        int getDepth() {
-            if (parent == null) {
-				return 0;
-			}
-            return parent.getDepth() + 1;
-        }
-
-        String getDisplayText() {
-            if (type == MENUITEM) {
-                if (children.size() > 0) {
-                    if (parent.id.equals("Root")) { //$NON-NLS-1$
-                        return NLS.bind(WorkbenchMessages.ActionSetSelection_menubarLocation, text );
-                    }
-                }
-                return text;
-            } 
-            if (children.size() > 0) {
-				return NLS.bind(WorkbenchMessages.ActionSetSelection_toolbarLocation, text );
-			} 
-            
-            return text;
-        }
-
-        protected boolean isTopLevelMenu() {
-            if (parent == null) {
-				return false;
-			}
-            return parent.parent == null;
-        }
-        
-        public String toString() {
-        	StringBuffer sb = new StringBuffer();
-        	for (int i = getDepth(); --i >= 0;) {
-        		sb.append("  "); //$NON-NLS-1$
-        	}
-    		sb.append("id: "); //$NON-NLS-1$
-    		sb.append(id);
-    		sb.append("  text: "); //$NON-NLS-1$
-    		sb.append(text);
-        	sb.append('\n');
-        	for (int i = 0; i < children.size(); ++i) {
-        		sb.append(children.get(i));
-        	}
-        	return sb.toString();
-        		
-        }
-    }
-
-    /**
-     * The proxy IActionBarConfigurer that gets passed to the application's
-     * ActionBarAdvisor.  This is used to construct a representation of the
-     * window's hardwired menus and toolbars in order to display their
-     * structure properly in the preview panes.
-     */
-    public class CustomizeActionBars implements IActionBarConfigurer2,
-			IActionBars2 {
-        
-        IWorkbenchWindowConfigurer configurer;
-        
-        /**
-         * Fake action bars to use to build the menus and toolbar contributions for the
-         * workbench.  We cannot use the actual workbench action bars, since doing so would
-         * make the action set items visible.  
-         */
-        MenuManager menuManager = new MenuManager();
-        CoolBarManager coolBarManager = new CoolBarManager();
-        StatusLineManager statusLineManager = new StatusLineManager();
-        
-        /**
-         * Create a new instance of this class.
-         * 
-         * @param configurer the configurer
-         */
-        public CustomizeActionBars(IWorkbenchWindowConfigurer configurer) {
-            this.configurer = configurer;
-        }
-
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer#getWindowConfigurer()
-         */
-        public IWorkbenchWindowConfigurer getWindowConfigurer() {
-            return configurer;
-        }
-        
-        /*
-         *  (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer#getMenuManager()
-         */
-        public IMenuManager getMenuManager() {
-            return menuManager;
-        }
-
-        /*
-         *  (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer#getStatusLineManager()
-         */
-        public IStatusLineManager getStatusLineManager() {
-            return statusLineManager;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.AbstractActionBarConfigurer#getCoolBarManager()
-         */
-        public ICoolBarManager getCoolBarManager() {
-            return coolBarManager;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IActionBars#getToolBarManager()
-         */
-        public IToolBarManager getToolBarManager() {
-            return null;
-        }
-
-        public void setGlobalActionHandler(String actionID, IAction handler) {
-        }
-
-        public void updateActionBars() {
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IActionBars#clearGlobalActionHandlers()
-         */
-        public void clearGlobalActionHandlers() {
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IActionBars#getGlobalActionHandler(java.lang.String)
-         */
-        public IAction getGlobalActionHandler(String actionId) {
-            return null;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.application.IActionBarConfigurer#registerGlobalAction(org.eclipse.jface.action.IAction)
-         */
-        public void registerGlobalAction(IAction action) {
-        }
-
-        /**
-         * Clean up the action bars.
-         */
-		public void dispose() {
-			coolBarManager.dispose();
-	        menuManager.dispose();	
-	        statusLineManager.dispose();
-	    }
-
-		public final IServiceLocator getServiceLocator() {
-			return configurer.getWindow();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.application.IActionBarConfigurer#createToolBarContributionItem(org.eclipse.jface.action.IToolBarManager, java.lang.String)
-		 */
-		public IToolBarContributionItem createToolBarContributionItem(IToolBarManager toolBarManager, String id) {
-			return new ToolBarContributionItem2(toolBarManager, id);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.application.IActionBarConfigurer#createToolBarManager(int)
-		 */
-		public IToolBarManager createToolBarManager() {
-			return new ToolBarManager();
-		}
-    }
-
-    class ShortcutMenuItemContentProvider implements IStructuredContentProvider {
-
-        ShortcutMenuItemContentProvider() {
-        }
-
-        public Object[] getElements(Object input) {
-            if (input instanceof ShortcutMenu) {
-                return ((ShortcutMenu) input).getItems().toArray();
-            }
-            return new Object[0];
-        }
-
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        }
-
-        public void dispose() {
-        }
-    }
-
-    class ShortcutMenuItemLabelProvider extends LabelProvider implements
-            ITableLabelProvider {
-        private Map imageTable = new Hashtable();
-
-        private final static int COLUMN_ID = 0;
-
-        private final static int COLUMN_DESCRIPTION = 1;
-
-        ShortcutMenuItemLabelProvider() {
-        }
-
-        public final void dispose() {
-            for (Iterator i = imageTable.values().iterator(); i.hasNext();) {
-                ((Image) i.next()).dispose();
-            }
-            imageTable = null;
-        }
-
-        public Image getColumnImage(Object element, int index) {
-            if (index != COLUMN_ID) {
-				return null;
-			}
-            ImageDescriptor descriptor = null;
-            if (element instanceof IPerspectiveDescriptor) {
-                descriptor = ((IPerspectiveDescriptor) element)
-                        .getImageDescriptor();
-            } else if (element instanceof IViewDescriptor) {
-                descriptor = ((IViewDescriptor) element).getImageDescriptor();
-            } else if (element instanceof WorkbenchWizardElement) {
-                descriptor = ((WorkbenchWizardElement) element)
-                        .getImageDescriptor();
-            }
-            if (descriptor == null) {
-				return null;
-			}
-            //obtain the cached image corresponding to the descriptor
-            if (imageTable == null) {
-                imageTable = new Hashtable(40);
-            }
-            Image image = (Image) imageTable.get(descriptor);
-            if (image == null) {
-                image = descriptor.createImage();
-                imageTable.put(descriptor, image);
-            }
-            return image;
-        }
-
-        public String getColumnText(Object element, int columnIndex) {
-            String text = null;
-            switch (columnIndex) {
-            case COLUMN_ID:
-                text = getText(element);
-                break;
-            case COLUMN_DESCRIPTION:
-                if (element instanceof IPerspectiveDescriptor) {
-                    text = ((IPerspectiveDescriptor) element).getDescription();
-                } else if (element instanceof IViewDescriptor) {
-                    text = ((IViewDescriptor) element).getDescription();
-                } else if (element instanceof WorkbenchWizardElement) {
-                    text = ((WorkbenchWizardElement) element).getDescription();
-                }
-                break;
-            }
-            if (text == null) {
-				text = ""; //$NON-NLS-1$
-			}
-            return text;
-        }
-
-        public String getText(Object element) {
-            String text = null;
-            if (element instanceof IPerspectiveDescriptor) {
-                text = ((IPerspectiveDescriptor) element).getLabel();
-            } else if (element instanceof IViewDescriptor) {
-                text = ((IViewDescriptor) element).getLabel();
-            } else if (element instanceof WorkbenchWizardElement) {
-                text = ((WorkbenchWizardElement) element).getLabel(element);
-            }
-            if (text == null) {
-				text = ""; //$NON-NLS-1$
-			}
-            return text;
-        }
-    }
-
-    class ShortcutMenu extends Object {
-        /**
-         * Tree representation for the shortcut items.  
-         */
-        private final static String ID_VIEW = "org.eclipse.ui.views"; //$NON-NLS-1$
-
-        private final static String ID_WIZARD = "org.eclipse.ui.wizards"; //$NON-NLS-1$
-
-        private final static String ID_PERSP = "org.eclipse.ui.perspectives"; //$NON-NLS-1$
-
-        String id;
-
-        String label;
-
-        private ArrayList items = new ArrayList();
-
-        private ArrayList checkedItems = new ArrayList();
-
-        ArrayList children = new ArrayList();
-
-        ShortcutMenu parent = null;
-
-        ShortcutMenu(ShortcutMenu parent, String id, String label) {
-            super();
-            this.id = id;
-            this.parent = parent;
-            this.label = removeShortcut(label);
-            this.label = DialogUtil.removeAccel(this.label);
-            if (parent != null) {
-				parent.children.add(this);
-			}
-        }
-
-        void addItem(Object item) {
-            items.add(item);
-        }
-
-        void addCheckedItem(Object item) {
-            checkedItems.add(item);
-        }
-
-        public String toString() {
-            return label;
-        }
-
-        ArrayList getCheckedItems() {
-            return checkedItems;
-        }
-
-        ArrayList getCheckedItemIds() {
-            ArrayList ids = new ArrayList();
-            if (getMenuId() == ID_PERSP) {
-                for (int i = 0; i < checkedItems.size(); i++) {
-                    IPerspectiveDescriptor item = (IPerspectiveDescriptor) checkedItems
-                            .get(i);
-                    ids.add(item.getId());
-                }
-            } else if (getMenuId() == ID_VIEW) {
-                for (int i = 0; i < checkedItems.size(); i++) {
-                    IViewDescriptor item = (IViewDescriptor) checkedItems
-                            .get(i);
-                    ids.add(item.getId());
-                }
-            } else if (getMenuId() == ID_WIZARD) {
-                for (int i = 0; i < checkedItems.size(); i++) {
-                    WorkbenchWizardElement item = (WorkbenchWizardElement) checkedItems
-                            .get(i);
-                    ids.add(item.getId());
-                }
-            }
-            for (int i = 0; i < children.size(); i++) {
-                ShortcutMenu menu = (ShortcutMenu) children.get(i);
-                ids.addAll(menu.getCheckedItemIds());
-            }
-            return ids;
-        }
-
-        ArrayList getChildren() {
-            return children;
-        }
-
-        ArrayList getItems() {
-            return items;
-        }
-
-        private String getMenuId() {
-            if (parent == rootMenu) {
-				return id;
-			}
-
-            return parent.getMenuId();
-        }
-
-        ArrayList getSubtreeItems() {
-            ArrayList subtreeItems = new ArrayList();
-            subtreeItems.add(this);
-            for (int i = 0; i < children.size(); i++) {
-                ShortcutMenu child = (ShortcutMenu) children.get(i);
-                subtreeItems.addAll(child.getSubtreeItems());
-            }
-            return subtreeItems;
-        }
-
-        Object getItem(String menuItemId) {
-            for (int i = 0; i < items.size(); i++) {
-                Object item = items.get(i);
-                String itemId = null;
-                if (id == ID_PERSP) {
-                    itemId = ((IPerspectiveDescriptor) item).getId();
-                } else if (id == ID_VIEW) {
-                    itemId = ((IViewDescriptor) item).getId();
-                } else if (id == ID_WIZARD) {
-                    itemId = ((WorkbenchWizardElement) item).getId();
-                }
-                if (menuItemId.equals(itemId)) {
-					return item;
-				}
-            }
-            return null;
-        }
-
-        boolean isFullyChecked() {
-            if (getItems().size() != getCheckedItems().size()) {
-				return false;
-			}
-            for (int i = 0; i < children.size(); i++) {
-                ShortcutMenu child = (ShortcutMenu) children.get(i);
-                if (!child.isFullyChecked()) {
-					return false;
-				}
-            }
-            return true;
-        }
-
-        boolean isFullyUnchecked() {
-            if (getCheckedItems().size() != 0) {
-				return false;
-			}
-            for (int i = 0; i < children.size(); i++) {
-                ShortcutMenu child = (ShortcutMenu) children.get(i);
-                if (!child.isFullyUnchecked()) {
-					return false;
-				}
-            }
-            return true;
-        }
-
-        void removeCheckedItem(Object item) {
-            checkedItems.remove(item);
-        }
-
-        void checked(boolean checked) {
-            checkedItems = new ArrayList();
-            if (checked) {
-                checkedItems.addAll(items);
-            }
-            for (int i = 0; i < children.size(); i++) {
-                ShortcutMenu child = (ShortcutMenu) children.get(i);
-                child.checked(checked);
-            }
-        }
-    }
-
-    class TreeContentProvider implements ITreeContentProvider {
-        public void dispose() {
-        }
-
-        public Object[] getChildren(Object element) {
-            if (element instanceof ActionSetDisplayItem) {
-                ActionSetDisplayItem node = (ActionSetDisplayItem) element;
-                return node.children.toArray();
-            } else if (element instanceof ShortcutMenu) {
-                ShortcutMenu node = (ShortcutMenu) element;
-                return node.children.toArray();
-            } else if (element instanceof ArrayList) {
-            	return ((ArrayList) element).toArray();
-            }
-            return new Object[0];
-        }
-
-        public Object[] getElements(Object element) {
-            return getChildren(element);
-        }
-
-        public Object getParent(Object element) {
-            if (element instanceof ActionSetDisplayItem) {
-                ActionSetDisplayItem node = (ActionSetDisplayItem) element;
-                return node.parent;
-            } else if (element instanceof ShortcutMenu) {
-                ShortcutMenu node = (ShortcutMenu) element;
-                return node.parent;
-            }
-            return null;
-        }
-
-        public boolean hasChildren(Object element) {
-            if (element instanceof ActionSetDisplayItem) {
-                ActionSetDisplayItem node = (ActionSetDisplayItem) element;
-                return node.children.size() > 0;
-            } else if (element instanceof ShortcutMenu) {
-                ShortcutMenu node = (ShortcutMenu) element;
-                return node.children.size() > 0;
-            }
-            return false;
-        }
-
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        }
-    }
-
-    class ActionSetLabelProvider extends LabelProvider {
-        private Map imageTable = new Hashtable();
-
-        public void dispose() {
-            for (Iterator i = imageTable.values().iterator(); i.hasNext();) {
-                ((Image) i.next()).dispose();
-            }
-            imageTable = null;
-        }
-
-        public Image getImage(Object element) {
-            ActionSetDisplayItem item = (ActionSetDisplayItem) element;
-            ImageDescriptor descriptor = item.imageDescriptor;
-            if (descriptor == null) {
-                if (item.type == ActionSetDisplayItem.MENUITEM) {
-                    if (item.children.size() > 0) {
-                        if (item.isTopLevelMenu()) {
-							descriptor = menuImageDescriptor;
-						} else {
-							descriptor = submenuImageDescriptor;
-						}
-                    } else {
-						return null;
-					}
-                } else if (item.type == ActionSetDisplayItem.TOOLITEM) {
-                    if (item.children.size() > 0) {
-						descriptor = toolbarImageDescriptor;
-					} else {
-						return null;
-					}
-                } else {
-                    return null;
-                }
-            }
-            //obtain the cached image corresponding to the descriptor
-            if (imageTable == null) {
-                imageTable = new Hashtable(40);
-            }
-            Image image = (Image) imageTable.get(descriptor);
-            if (image == null) {
-                image = descriptor.createImage();
-                imageTable.put(descriptor, image);
-            }
-            return image;
-        }
-
-        public String getText(Object element) {
-            if (element instanceof ActionSetDisplayItem) {
-                ActionSetDisplayItem item = (ActionSetDisplayItem) element;
-                String text = item.getDisplayText();
-                if ((item.type == ActionSetDisplayItem.MENUITEM)
-                        && (item.children.size() > 0)) {
-					text = text + "  >"; //$NON-NLS-1$ 
-				}
-                return text;
-            }
-            return ""; //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Create an instance of this Dialog.
-     * 
-     * @param configurer the configurer
-     * @param persp the perspective
-     */
-    public CustomizePerspectiveDialog(IWorkbenchWindowConfigurer configurer, Perspective persp) {
-        super(configurer.getWindow().getShell());        
-        this.configurer = configurer;
-        perspective = persp;
-        window = (WorkbenchWindow) configurer.getWindow();
-        
-        initializeActionSetInput();
-        initializeShortcutMenuInput();
-    }
-
-    /**
-     * Adds listeners for the Commands tab.
-     * 
-     * @since 3.0
-     */
-    private void addActionSetsListeners() {
-        tabFolder.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent event) {
-                handleTabSelected(event);
-            }
-        });
-        actionSetsViewer
-                .addSelectionChangedListener(new ISelectionChangedListener() {
-                    public void selectionChanged(SelectionChangedEvent event) {
-                        handleActionSetSelected(event);
-                    }
-                });
-        actionSetsViewer.getControl().addKeyListener(new KeyListener() {
-            public void keyPressed(KeyEvent e) {
-                handleActionSetViewerKeyPressed(e);
-            }
-
-            public void keyReleased(KeyEvent e) {
-            }
-        });
-        actionSetMenuViewer.getControl().addKeyListener(new KeyListener() {
-            public void keyPressed(KeyEvent e) {
-                handleActionSetMenuViewerKeyPressed(e);
-            }
-
-            public void keyReleased(KeyEvent e) {
-            }
-        });
-        actionSetToolbarViewer.getControl().addKeyListener(new KeyListener() {
-            public void keyPressed(KeyEvent e) {
-                handleActionSetToolbarViewerKeyPressed(e);
-            }
-
-            public void keyReleased(KeyEvent e) {
-            }
-        });
-    }
-
-    /**
-     * Adds listeners for the Shortcuts tab.
-     * 
-     * @since 3.0
-     */
-    private void addShortcutListeners() {
-        menusCombo.addSelectionListener(new SelectionListener() {
-            public void widgetDefaultSelected(SelectionEvent e) {
-                // do nothing
-            }
-
-            public void widgetSelected(SelectionEvent e) {
-                handleMenuSelected();
-            }
-        });
-        menusCombo.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                handleMenuModified();
-            }
-        });
-        menuCategoriesViewer
-                .addSelectionChangedListener(new ISelectionChangedListener() {
-                    public void selectionChanged(SelectionChangedEvent event) {
-                        handleMenuCategorySelected(event);
-                    }
-                });
-        menuCategoriesViewer.addCheckStateListener(new ICheckStateListener() {
-            public void checkStateChanged(CheckStateChangedEvent event) {
-                handleMenuCategoryChecked(event);
-            }
-        });
-        menuItemsViewer.addCheckStateListener(new ICheckStateListener() {
-            public void checkStateChanged(CheckStateChangedEvent event) {
-                handleMenuItemChecked(event);
-            }
-        });
-    }
-
-    private PluginActionSet buildMenusAndToolbarsFor(CustomizeActionBars customizeActionBars, ActionSetDescriptor actionSetDesc) {
-        String id = actionSetDesc.getId();
-        ActionSetActionBars bars = new ActionSetActionBars(
-        		customizeActionBars, window, customizeActionBars, id);
-        PluginActionSetBuilder builder = new PluginActionSetBuilder();
-        PluginActionSet actionSet = null;
-        try {
-            actionSet = (PluginActionSet) actionSetDesc.createActionSet();
-            actionSet.init(null, bars);
-        } catch (CoreException ex) {
-            WorkbenchPlugin
-                    .log("Unable to create action set " + actionSetDesc.getId(), ex); //$NON-NLS-1$
-            return null;
-        }
-        builder.buildMenuAndToolBarStructure(actionSet, window);
-        return actionSet;
-    }
-
-    private void checkInitialActionSetSelections() {
-        // Check off the action sets that are active for the perspective.
-        IActionSetDescriptor[] actionSetDescriptors = ((WorkbenchPage)window.getActivePage()).getActionSets();
-        initiallyActive  = Arrays.asList(actionSetDescriptors);
-        if (actionSets != null) {
-            for (int i = 0; i < actionSetDescriptors.length; i++) {
-				actionSetsViewer.setChecked(actionSetDescriptors[i], true);
-			}
-        }
-    }
-
-    private void checkInitialMenuCategorySelections(ShortcutMenu menu) {
-        // Check off the shortcut categories that are active for the perspective.
-        if (menu.children.size() == 0) {
-			updateMenuCategoryCheckedState(menu);
-		} else {
-            for (int i = 0; i < menu.children.size(); i++) {
-                ShortcutMenu child = (ShortcutMenu) menu.children.get(i);
-                checkInitialMenuCategorySelections(child);
-            }
-        }
-    }
-
-    public boolean close() {
-        if (showShortcutTab()) {
-            lastSelectedMenuIndex = menusCombo.getSelectionIndex();
-        }
-        lastSelectedTab = tabFolder.getSelectionIndex();
-        IStructuredSelection selection = (IStructuredSelection) actionSetsViewer
-                .getSelection();
-        if (selection.isEmpty()) {
-			lastSelectedActionSetId = null;
-		} else {
-			lastSelectedActionSetId = ((ActionSetDescriptor) selection
-                    .getFirstElement()).getId();
-		}
-        return super.close();
-    }
-
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        String title=perspective.getDesc().getLabel();
-        
-        title = NLS.bind(WorkbenchMessages.ActionSetSelection_customize,title);
-        shell.setText(title);
-        window.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.ACTION_SET_SELECTION_DIALOG);
-    }
-
-    boolean containsActionSet(MenuManager mgr, String actionSetId) {
-        // Return whether or not the given menuManager contains items for the
-        // given actionSetId.
-        IContributionItem[] menuItems = mgr.getItems();
-        for (int j = 0; j < menuItems.length; j++) {
-            IContributionItem menuItem = menuItems[j];
-            if (menuItem instanceof ActionSetContributionItem) {
-                ActionSetContributionItem actionSetItem = (ActionSetContributionItem) menuItem;
-                if (actionSetItem.getActionSetId().equals(actionSetId)) {
-                    return true;
-                }
-            } else if (menuItem instanceof MenuManager) {
-                MenuManager childMgr = (MenuManager) menuItem;
-                boolean found = containsActionSet(childMgr, actionSetId);
-                if (found) {
-					return true;
-				}
-            }
-        }
-        return false;
-    }
-
-    private Composite createActionSetsPage(Composite parent) {
-    	GridData data;
-    	
-        Composite actionSetsComposite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        actionSetsComposite.setLayout(layout);
-
-        // Select... label
-        Label label = new Label(actionSetsComposite, SWT.WRAP);
-        label
-                .setText(NLS.bind(WorkbenchMessages.ActionSetSelection_selectActionSetsLabel,perspective.getDesc().getLabel() ));
-        data = new GridData(SWT.FILL, SWT.CENTER, true, false);
-        label.setLayoutData(data);
-
-        Label sep = new Label(actionSetsComposite, SWT.HORIZONTAL
-                | SWT.SEPARATOR);
-        sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        SashForm sashComposite = new SashForm(actionSetsComposite,
-                SWT.HORIZONTAL);
-        data = new GridData(SWT.FILL, SWT.FILL, true, true);
-        sashComposite.setLayoutData(data);
-
-        // Action Set List Composite
-        Composite actionSetGroup = new Composite(sashComposite, SWT.NONE);
-        layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        actionSetGroup.setLayout(layout);
-        actionSetGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-        label = new Label(actionSetGroup, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_availableActionSets);
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-        
-        actionSetsViewer = CheckboxTableViewer.newCheckList(actionSetGroup,
-                SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-        actionSetsViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        actionSetsViewer.setLabelProvider(new WorkbenchLabelProvider());
-        actionSetsViewer.setContentProvider(new ArrayContentProvider());
-        actionSetsViewer.setComparator(new ActionSetComparator());
-        actionSetsViewerTooltip = new DefaultToolTip(actionSetsViewer.getControl(),ToolTip.RECREATE,true){
-
-			public Point getLocation(Point tipSize, Event event) {
-				return getShell().getDisplay().getCursorLocation();
-			}
-        	
-        };
-
-        // Menu and toolbar composite
-        Composite actionGroup = new Composite(sashComposite, SWT.NONE);
-        layout = new GridLayout();
-        layout.numColumns = 2;
-        layout.makeColumnsEqualWidth = true;
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        layout.horizontalSpacing = 0;
-        actionGroup.setLayout(layout);
-        actionGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-        Composite menubarGroup = new Composite(actionGroup, SWT.NONE);
-        layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        menubarGroup.setLayout(layout);
-        menubarGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        
-        label = new Label(menubarGroup, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_menubarActions); 
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        actionSetMenuViewer = new TreeViewer(menubarGroup);
-        actionSetMenuViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
-        actionSetMenuViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        actionSetMenuViewer.setLabelProvider(new ActionSetLabelProvider());
-        actionSetMenuViewer.setContentProvider(new TreeContentProvider());
-        actionSetMenuViewerTooltip = new DefaultToolTip(actionSetMenuViewer.getControl(),ToolTip.RECREATE, true) {
-
-			public Point getLocation(Point tipSize, Event event) {
-				return getShell().getDisplay().getCursorLocation();
-			}
-        	
-        };
-
-        Composite toolbarGroup = new Composite(actionGroup, SWT.NONE);
-        layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        toolbarGroup.setLayout(layout);
-        toolbarGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        
-        label = new Label(toolbarGroup, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_toolbarActions);
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        actionSetToolbarViewer = new TreeViewer(toolbarGroup);
-        actionSetToolbarViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
-        actionSetToolbarViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        actionSetToolbarViewer
-                .setLabelProvider(new ActionSetLabelProvider());
-        actionSetToolbarViewer.setContentProvider(new TreeContentProvider());
-        actionSetToolbarViewerTooltip = new DefaultToolTip(actionSetToolbarViewer.getControl(),ToolTip.RECREATE,true){
-
-			public Point getLocation(Point tipSize, Event event) {
-				return getShell().getDisplay().getCursorLocation();
-			}
-        	
-        };
-
-        sashComposite.setWeights(new int[] { 30, 70 });
-
-        // Use F2... label
-        label = new Label(actionSetsComposite, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_selectActionSetsHelp);
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        return actionSetsComposite;
-    }
-
-    /**
-     * Returns whether the shortcut tab should be shown.
-     * 
-     * @return <code>true</code> if the shortcut tab should be shown,
-     * and <code>false</code> otherwise
-     * @since 3.0
-     */
-    private boolean showShortcutTab() {
-        return window.containsSubmenu(WorkbenchWindow.NEW_WIZARD_SUBMENU)
-                || window
-                        .containsSubmenu(WorkbenchWindow.OPEN_PERSPECTIVE_SUBMENU)
-                || window.containsSubmenu(WorkbenchWindow.SHOW_VIEW_SUBMENU);
-    }
-
-    protected Control createDialogArea(Composite parent) {
-        Composite composite = (Composite) super.createDialogArea(parent);
-
-        // tab folder
-        tabFolder = new TabFolder(composite, SWT.NONE);
-        
-        GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
-        gd.widthHint = convertHorizontalDLUsToPixels(TAB_WIDTH_IN_DLUS);
-        gd.heightHint = convertVerticalDLUsToPixels(TAB_HEIGHT_IN_DLUS);
-        tabFolder.setLayoutData(gd);
-
-        // Shortcuts tab
-        if (showShortcutTab()) {
-            TabItem item1 = new TabItem(tabFolder, SWT.NONE);
-            item1.setText(WorkbenchMessages.ActionSetSelection_menuTab);
-            item1.setControl(createMenusPage(tabFolder));
-            addShortcutListeners();
-            ArrayList children = rootMenu.getChildren();
-            String[] itemNames = new String[children.size()];
-            for (int i = 0; i < children.size(); i++) {
-                itemNames[i] = ((ShortcutMenu) children.get(i)).label;
-            }
-            menusCombo.setItems(itemNames);
-        }
-
-        // Commands tab
-        TabItem item = new TabItem(tabFolder, SWT.NONE);
-        item.setText(WorkbenchMessages.ActionSetSelection_actionSetsTab); 
-        item.setControl(createActionSetsPage(tabFolder));
-        applyDialogFont(tabFolder);
-        addActionSetsListeners();
-        actionSetsViewer.setInput(actionSets);
-        checkInitialActionSetSelections();
-
-        // now that both tabs are set up, initialize selections
-        setInitialSelections();
-
-        return composite;
-    }
-
-    private Composite createMenusPage(Composite parent) {
-    	GridData data;
-
-        Composite menusComposite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        menusComposite.setLayout(layout);
-
-        // Select... label
-        Label label = new Label(menusComposite, SWT.WRAP);
-        label.setText(NLS.bind(WorkbenchMessages.ActionSetSelection_selectMenusLabel,  perspective.getDesc().getLabel() )); 
-        data = new GridData(SWT.FILL, SWT.CENTER, true, false);
-        label.setLayoutData(data);
-
-        Label sep = new Label(menusComposite, SWT.HORIZONTAL | SWT.SEPARATOR);
-        sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        SashForm sashComposite = new SashForm(menusComposite, SWT.HORIZONTAL);
-        data = new GridData(SWT.FILL, SWT.FILL, true, true);
-        sashComposite.setLayoutData(data);
-
-        // Menus List
-        Composite menusGroup = new Composite(sashComposite, SWT.NONE);
-        layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        menusGroup.setLayout(layout);
-        menusGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-        label = new Label(menusGroup, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_availableMenus); 
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        menusCombo = new Combo(menusGroup, SWT.READ_ONLY);
-        menusCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        // Categories Tree
-        label = new Label(menusGroup, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_availableCategories);
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        menuCategoriesViewer = new CheckboxTreeViewer(menusGroup);
-        menuCategoriesViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        menuCategoriesViewer.setLabelProvider(new LabelProvider());
-        menuCategoriesViewer.setContentProvider(new TreeContentProvider());
-        menuCategoriesViewer.setComparator(new WorkbenchViewerComparator());
-
-        // Menu items list
-        Composite menuItemsGroup = new Composite(sashComposite, SWT.NONE);
-        layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        menuItemsGroup.setLayout(layout);
-        menuItemsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-        label = new Label(menuItemsGroup, SWT.WRAP);
-        label.setText(WorkbenchMessages.ActionSetSelection_menuItems);
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        menuItemsViewer = CheckboxTableViewer.newCheckList(menuItemsGroup,
-                SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-        Table menuTable = menuItemsViewer.getTable();
-        menuTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        menuItemsViewer.setLabelProvider(new ShortcutMenuItemLabelProvider());
-        menuItemsViewer
-                .setContentProvider(new ShortcutMenuItemContentProvider());
-        menuItemsViewer.setComparator(new WorkbenchViewerComparator());
-
-        menuTable.setHeaderVisible(true);
-        int[] columnWidths = new int[shortcutMenuColumnWidths.length];
-        for (int i = 0; i < shortcutMenuColumnWidths.length; i++) {
-            columnWidths[i] = convertHorizontalDLUsToPixels(shortcutMenuColumnWidths[i]);
-        }
-        for (int i = 0; i < shortcutMenuColumnHeaders.length; i++) {
-            TableColumn tc = new TableColumn(menuTable, SWT.NONE, i);
-            tc.setResizable(true);
-            tc.setText(shortcutMenuColumnHeaders[i]);
-            tc.setWidth(columnWidths[i]);
-        }
-        sashComposite.setWeights(new int[] { 30, 70 });
-        return menusComposite;
-    }
-
-    void handleActionSetMenuViewerKeyPressed(KeyEvent event) {
-        // popup the description for the selected action set menu item
-        if (event.keyCode == SWT.F2 && event.stateMask == 0) {
-            IStructuredSelection sel = (IStructuredSelection) actionSetMenuViewer
-                    .getSelection();
-            ActionSetDisplayItem element = (ActionSetDisplayItem) sel
-                    .getFirstElement();
-            if (element != null) {
-                String desc = element.description;
-                if (desc == null || desc.equals("")) { //$NON-NLS-1$
-                    desc = WorkbenchMessages.ActionSetSelection_noDesc;
-                }
-                actionSetMenuViewerTooltip.setText(desc);
-                // Passing 0,0 because tooltip is always opened on current cursor position
-                actionSetMenuViewerTooltip.show(new Point(0,0));
-            }
-        }
-    }
-
-    void handleActionSetSelected(SelectionChangedEvent event) {
-        IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-        ActionSetDescriptor element = (ActionSetDescriptor) sel
-                .getFirstElement();
-        if (element == selectedActionSet) {
-			return;
-		}
-        String actionSetId = element.getId();
-        // Hash table is used to cache previous selections
-        ArrayList structures = (ArrayList) actionSetStructures.get(actionSetId);
-        ActionSetDisplayItem menubarStructure = null;
-        ActionSetDisplayItem toolbarStructure = null;
-        // If the actionset has never been selected then we need to populate the structures
-        if (structures == null) {
-            structures = new ArrayList(2);
-            menubarStructure = new ActionSetDisplayItem("Menubar"); //$NON-NLS-1$
-            toolbarStructure = new ActionSetDisplayItem("Toolbar"); //$NON-NLS-1$
-            
-            // Build the menus and toolbars for it using our fake action bars.
-        	// Can't reuse customizeActionBars between action sets due to action set menu reuse.  See bug 94827 for details.
-        	CustomizeActionBars customizeActionBars = new CustomizeActionBars(configurer);
-            // Fill current actionBars in the "fake" workbench action bars
-            window.fillActionBars(customizeActionBars,
-                    ActionBarAdvisor.FILL_PROXY | ActionBarAdvisor.FILL_MENU_BAR
-                            | ActionBarAdvisor.FILL_COOL_BAR);
-            // Populate the action bars with the action set
-            PluginActionSet actionSet = buildMenusAndToolbarsFor(customizeActionBars, element);
-            // Build the representation to show
-            menubarStructure.fillMenusFor(actionSetId,
-            		customizeActionBars.menuManager);
-            toolbarStructure.fillToolsFor(actionSetId,
-            		customizeActionBars.coolBarManager);
-            // Be sure to dispose the custom bars or we'll leak
-            if (actionSet!=null) {
-            	actionSet.dispose();
-            }
-            customizeActionBars.dispose();
-
-            // Add menubarStructure and toolbarStructure to arrayList
-            structures.add(menubarStructure);
-            structures.add(toolbarStructure);
-            // Add the structure to the hash table with key actionSetId
-            actionSetStructures.put(actionSetId, structures);
-        }
-        // retrieve the actionsets from the arraylist
-        if (menubarStructure == null) {
-			menubarStructure = (ActionSetDisplayItem) structures.get(0);
-		}
-        if (toolbarStructure == null) {
-			toolbarStructure = (ActionSetDisplayItem) structures.get(1);
-		}
-
-        // fill the menu structure table
-        actionSetMenuViewer.setInput(menubarStructure);
-        if (menubarStructure.children.size() > 0) {
-            actionSetMenuViewer
-                    .reveal(menubarStructure.children.get(0));
-        }
-
-        // fill the toolbar structure table
-        actionSetToolbarViewer.setInput(toolbarStructure);
-        if (toolbarStructure.children.size() > 0) {
-            actionSetToolbarViewer.reveal(toolbarStructure.children
-                    .get(0));
-        }
-        selectedActionSet = element;
-    }
-
-    void handleActionSetToolbarViewerKeyPressed(KeyEvent event) {
-        // popup the description for the selected action set toolbar item
-        if (event.keyCode == SWT.F2 && event.stateMask == 0) {
-            IStructuredSelection sel = (IStructuredSelection) actionSetToolbarViewer
-                    .getSelection();
-            ActionSetDisplayItem element = (ActionSetDisplayItem) sel
-                    .getFirstElement();
-            if (element != null) {
-                String desc = element.description;
-                if (desc == null || desc.equals("")) { //$NON-NLS-1$
-                    desc = WorkbenchMessages.ActionSetSelection_noDesc; 
-                }
-                actionSetToolbarViewerTooltip.setText(desc);
-                // Passing 0,0 because tooltip is always opened on current cursor position
-                actionSetToolbarViewerTooltip.show(new Point(0,0));
-            }
-        }
-    }
-
-    void handleActionSetViewerKeyPressed(KeyEvent event) {
-        // popup the description for the selected action set
-        if (event.keyCode == SWT.F2 && event.stateMask == 0) {
-            IStructuredSelection sel = (IStructuredSelection) actionSetsViewer
-                    .getSelection();
-            ActionSetDescriptor element = (ActionSetDescriptor) sel
-                    .getFirstElement();
-            if (element != null) {
-                String desc = element.getDescription();
-                if (desc == null || desc.equals("")) { //$NON-NLS-1$
-                    desc = WorkbenchMessages.ActionSetSelection_noDesc; 
-                }
-                actionSetsViewerTooltip.setText(desc);
-                // Passing 0,0 because tooltip is always opened on current cursor position
-                actionSetsViewerTooltip.show(new Point(0,0));
-            }
-        }
-    }
-
-    void handleMenuCategoryChecked(CheckStateChangedEvent event) {
-        ShortcutMenu checkedCategory = (ShortcutMenu) event.getElement();
-        boolean checked = event.getChecked();
-        checkedCategory.checked(checked);
-        // check/uncheck the element's category subtree
-        menuCategoriesViewer.setSubtreeChecked(checkedCategory, checked);
-        // set gray state of the element's category subtree, all items should
-        // not be grayed
-        ArrayList subtree = checkedCategory.getSubtreeItems();
-        ShortcutMenu menuItemInput = (ShortcutMenu) menuItemsViewer.getInput();
-        for (int i = 0; i < subtree.size(); i++) {
-            Object child = subtree.get(i);
-            menuCategoriesViewer.setGrayed(child, false);
-            if (child == menuItemInput) {
-				menuItemsViewer.setAllChecked(checked);
-			}
-        }
-        menuCategoriesViewer.setGrayed(checkedCategory, false);
-        updateMenuCategoryCheckedState(checkedCategory.parent);
-    }
-
-    void handleMenuCategorySelected(SelectionChangedEvent event) {
-        IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-        ShortcutMenu element = (ShortcutMenu) sel.getFirstElement();
-        if (element == selectedMenuCategory) {
-			return;
-		}
-        if (element != menuItemsViewer.getInput()) {
-            menuItemsViewer.setInput(element);
-        }
-        if (element != null) {
-            menuItemsViewer.setCheckedElements(element.getCheckedItems()
-                    .toArray());
-        }
-    }
-
-    void handleMenuItemChecked(CheckStateChangedEvent event) {
-        ShortcutMenu selectedMenu = (ShortcutMenu) menuItemsViewer.getInput();
-        boolean itemChecked = event.getChecked();
-        Object item = event.getElement();
-        if (itemChecked) {
-            selectedMenu.addCheckedItem(item);
-        } else {
-            selectedMenu.removeCheckedItem(item);
-        }
-        updateMenuCategoryCheckedState(selectedMenu);
-    }
-
-    void handleMenuModified() {
-        String text = menusCombo.getText();
-        String[] items = menusCombo.getItems();
-        int itemIndex = -1;
-        for (int i = 0; i < items.length; i++) {
-            if (items[i].equals(text)) {
-                itemIndex = i;
-                break;
-            }
-        }
-        if (itemIndex == -1) {
-			return;
-		}
-        ShortcutMenu element = (ShortcutMenu) rootMenu.children.get(itemIndex);
-        handleMenuSelected(element);
-    }
-
-    void handleMenuSelected() {
-        int i = menusCombo.getSelectionIndex();
-        ShortcutMenu element = (ShortcutMenu) rootMenu.children.get(i);
-        handleMenuSelected(element);
-    }
-
-    void handleMenuSelected(ShortcutMenu element) {
-        if (element != menuCategoriesViewer.getInput()) {
-            menuCategoriesViewer.setInput(element);
-            menuCategoriesViewer.expandAll();
-            if (element != null) {
-                if (element.getChildren().size() > 0) {
-                    StructuredSelection sel = new StructuredSelection(element
-                            .getChildren().get(0));
-                    menuCategoriesViewer.setSelection(sel, true);
-                } else {
-                    menuItemsViewer.setInput(element);
-                    menuItemsViewer.setCheckedElements(element
-                            .getCheckedItems().toArray());
-                }
-            } else {
-                menuCategoriesViewer.setInput(element);
-                menuItemsViewer.setInput(element);
-            }
-            checkInitialMenuCategorySelections(rootMenu);
-        }
-    }
-
-    void handleTabSelected(SelectionEvent event) {
-        TabItem item = (TabItem) event.item;
-        Control control = item.getControl();
-        if (control != null) {
-			control.setFocus();
-		}
-    }
-
-    private void initializeActionSetInput() {
-        // Just get the action sets at this point.  Do not load the action set until it
-        // is actually selected in the dialog.
-        ActionSetRegistry reg = WorkbenchPlugin.getDefault()
-                .getActionSetRegistry();
-        IActionSetDescriptor[] sets = reg.getActionSets();
-        for (int i = 0; i < sets.length; i++) {
-            ActionSetDescriptor actionSetDesc = (ActionSetDescriptor) sets[i];
-            if (WorkbenchActivityHelper.filterItem(actionSetDesc)) {
-				continue;
-			}
-            actionSets.add(actionSetDesc);
-        }
-        String iconPath = "$nl$/icons/full/obj16/menu.gif";//$NON-NLS-1$
-        URL url = BundleUtility.find(PlatformUI.PLUGIN_ID, iconPath);
-        menuImageDescriptor = ImageDescriptor.createFromURL(url);
-
-        iconPath = "$nl$/icons/full/obj16/submenu.gif";//$NON-NLS-1$
-        url = BundleUtility.find(PlatformUI.PLUGIN_ID, iconPath);
-        submenuImageDescriptor = ImageDescriptor.createFromURL(url);
-
-        iconPath = "$nl$/icons/full/obj16/toolbar.gif";//$NON-NLS-1$
-        url = BundleUtility.find(PlatformUI.PLUGIN_ID, iconPath);
-        toolbarImageDescriptor = ImageDescriptor.createFromURL(url);
-    }
-
-    private void initializeShortCutMenu(ShortcutMenu menu,
-    		IWizardCategory  element, List activeIds) {
-        ShortcutMenu category = new ShortcutMenu(menu, element.getId(), element
-                .getLabel());
-        Object[] wizards = element.getWizards();
-        for (int i = 0; i < wizards.length; i++) {
-            WorkbenchWizardElement wizard = (WorkbenchWizardElement) wizards[i];
-            category.addItem(wizard);
-            if (activeIds.contains(wizard.getId())) {
-				category.addCheckedItem(wizard);
-			}
-        }
-        // @issue should not pass in null
-        IWizardCategory [] children = element.getCategories();
-        for (int i = 0; i < children.length; i++) {
-            initializeShortCutMenu(category, children[i], activeIds);
-        }
-    }
-
-    private void initializeShortcutMenuInput() {
-        rootMenu = new ShortcutMenu(null, "Root", ""); //$NON-NLS-1$ //$NON-NLS-2$
-        List activeIds;
-
-        if (window.containsSubmenu(WorkbenchWindow.NEW_WIZARD_SUBMENU)) {
-            ShortcutMenu wizardMenu = new ShortcutMenu(rootMenu,
-                    ShortcutMenu.ID_WIZARD, WorkbenchMessages.ActionSetDialogInput_wizardCategory); 
-            
-            IWizardCategory wizardCollection = WorkbenchPlugin.getDefault().getNewWizardRegistry().getRootCategory();
-
-            IWizardCategory [] wizardCategories = wizardCollection.getCategories();
-            activeIds = Arrays.asList(perspective.getNewWizardShortcuts());
-            for (int i = 0; i < wizardCategories.length; i++) {
-                IWizardCategory element = wizardCategories[i];
-                if (WorkbenchActivityHelper.filterItem(element)) {
-					continue;
-				}
-                initializeShortCutMenu(wizardMenu, element, activeIds);
-            }
-        }
-
-        if (window.containsSubmenu(WorkbenchWindow.OPEN_PERSPECTIVE_SUBMENU)) {
-            ShortcutMenu perspMenu = new ShortcutMenu(
-                    rootMenu,
-                    ShortcutMenu.ID_PERSP,
-                    WorkbenchMessages.ActionSetDialogInput_perspectiveCategory);
-            IPerspectiveRegistry perspReg = WorkbenchPlugin.getDefault()
-                    .getPerspectiveRegistry();
-            IPerspectiveDescriptor[] persps = perspReg.getPerspectives();
-            for (int i = 0; i < persps.length; i++) {
-                if (WorkbenchActivityHelper.filterItem(persps[i])) {
-					continue;
-				}
-                perspMenu.addItem(persps[i]);
-            }
-            activeIds = Arrays.asList(perspective.getPerspectiveShortcuts());
-            for (int i = 0; i < activeIds.size(); i++) {
-                String id = (String) activeIds.get(i);
-                Object item = perspMenu.getItem(id);
-                if (item != null) {
-					perspMenu.addCheckedItem(item);
-				}
-            }
-        }
-
-        if (window.containsSubmenu(WorkbenchWindow.SHOW_VIEW_SUBMENU)) {
-            ShortcutMenu viewMenu = new ShortcutMenu(rootMenu,
-                    ShortcutMenu.ID_VIEW, WorkbenchMessages.ActionSetDialogInput_viewCategory); 
-            IViewRegistry viewReg = WorkbenchPlugin.getDefault()
-                    .getViewRegistry();
-            IViewCategory [] categories = viewReg.getCategories();
-            activeIds = Arrays.asList(perspective.getShowViewShortcuts());
-            for (int i = 0; i < categories.length; i++) {
-                IViewCategory category = categories[i];
-                if (WorkbenchActivityHelper.filterItem(category)) {
-					continue;
-				}
-                ShortcutMenu viewCategory = new ShortcutMenu(viewMenu, category
-                        .getId(), category.getLabel());
-                IViewDescriptor [] views = category.getViews();
-                if (views != null) {
-                    for (int j = 0; j < views.length; j++) {
-                        IViewDescriptor view = views[j];
-                        if (view.getId().equals(IIntroConstants.INTRO_VIEW_ID)) {
-							continue;
-						}
-                        if (WorkbenchActivityHelper.filterItem(view)) {
-							continue;
-						}
-                        viewCategory.addItem(view);
-                        if (activeIds.contains(view.getId())) {
-							viewCategory.addCheckedItem(view);
-						}
-                    }
-                }
-            }
-        }
-    }
-
-    protected void okPressed() {
-        if (showShortcutTab()) {
-            ArrayList menus = rootMenu.children;
-            for (int i = 0; i < menus.size(); i++) {
-                ShortcutMenu menu = (ShortcutMenu) menus.get(i);
-                if (ShortcutMenu.ID_VIEW.equals(menu.id)) {
-                    perspective.setShowViewActionIds(menu.getCheckedItemIds());
-                } else if (ShortcutMenu.ID_PERSP.equals(menu.id)) {
-                    perspective.setPerspectiveActionIds(menu
-                            .getCheckedItemIds());
-                } else if (ShortcutMenu.ID_WIZARD.equals(menu.id)) {
-                    perspective.setNewWizardActionIds(menu.getCheckedItemIds());
-                }
-            }
-        }
-
-        ArrayList toAdd = new ArrayList();
-        ArrayList toRemove = new ArrayList();
-        toRemove.addAll(initiallyActive);
-        
-        Object[] selected = actionSetsViewer.getCheckedElements();
-        for (int i = 0; i < selected.length; i++) {
-            Object obj = selected[i];
-            toRemove.remove(obj);
-            if (!initiallyActive.contains(toRemove)) {
-                toAdd.add(obj);
-            }
-        }
-        
-        perspective.turnOnActionSets((IActionSetDescriptor[]) toAdd.toArray(new IActionSetDescriptor[toAdd.size()]));
-        perspective.turnOffActionSets((IActionSetDescriptor[]) toRemove.toArray(new IActionSetDescriptor[toAdd.size()]));
-
-        super.okPressed();
-    }
-    
-    String removeShortcut(String label) {
-        if (label == null) {
-			return label;
-		}
-        int end = label.lastIndexOf('@');
-        if (end >= 0) {
-			label = label.substring(0, end);
-		}
-        return label;
-    }
-
-    private void setInitialSelections() {
-        Object item = actionSetsViewer.getElementAt(0);
-        if (lastSelectedActionSetId != null) {
-            for (int i = 0; i < actionSets.size(); i++) {
-                ActionSetDescriptor actionSet = (ActionSetDescriptor) actionSets
-                        .get(i);
-                if (actionSet.getId().equals(lastSelectedActionSetId)) {
-                    item = actionSet;
-                    break;
-                }
-            }
-        }
-        if (item != null) {
-        	StructuredSelection sel = new StructuredSelection(item);
-        	actionSetsViewer.setSelection(sel, true);
-        }
-
-        if (showShortcutTab()) {
-            menusCombo.select(lastSelectedMenuIndex);
-        }
-
-        if (lastSelectedTab != -1) {
-            tabFolder.setSelection(lastSelectedTab);
-        }
-
-        if ((tabFolder.getSelectionIndex() == 0) && showShortcutTab()) {
-            menusCombo.setFocus();
-        } else {
-            actionSetsViewer.getControl().setFocus();
-        }
-    }
-
-    private void updateMenuCategoryCheckedState(ShortcutMenu menu) {
-        if (menu == rootMenu) {
-			return;
-		}
-        if (menu.isFullyChecked()) {
-            menuCategoriesViewer.setParentsGrayed(menu, false);
-            menuCategoriesViewer.setChecked(menu, true);
-        } else if (menu.isFullyUnchecked()) {
-            menuCategoriesViewer.setParentsGrayed(menu, false);
-            menuCategoriesViewer.setChecked(menu, false);
-        } else {
-            menuCategoriesViewer.setParentsGrayed(menu, true);
-            menuCategoriesViewer.setChecked(menu, true);
-        }
-        updateMenuCategoryCheckedState(menu.parent);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#applyDialogFont()
-     */
-    protected boolean applyDialogFont() {
-        return false;
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java
deleted file mode 100644
index 69f3ac5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DataTransferWizardCollectionComparator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.IBasicPropertyConstants;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.ui.internal.registry.WizardsRegistryReader;
-
-/**
- *	A Viewer element sorter that sorts Elements by their name attribute.
- *	Note that capitalization differences are not considered by this
- *	sorter, so a < B < c.
- *
- *	NOTE exceptions to the above: an element with the system's reserved
- *	category for Other Wizards will always be sorted such that it will
- *	ultimately be placed at the end of the sorted result, and an elemen 
- *  with the reserved category name for General wizards will always be 
- *  placed at the beginning of the sorted result.
- *  
- *  @since 3.2
- */
-class DataTransferWizardCollectionComparator extends ViewerComparator {
-	/**
-	 * Static instance of this class.
-	 */	
-    public final static DataTransferWizardCollectionComparator INSTANCE = new DataTransferWizardCollectionComparator();
-
-    /**
-     * Creates an instance of <code>DataTransferWizardCollectionSorter</code>.  Since this
-     * is a stateless sorter, it is only accessible as a singleton; the private
-     * visibility of this constructor ensures this.
-     */
-    private DataTransferWizardCollectionComparator() {
-        super();
-    }
-
-    public int category(Object element) {
-		if (element instanceof WizardCollectionElement){
-			String id = ((WizardCollectionElement)element).getId();
-    		if (WizardsRegistryReader.GENERAL_WIZARD_CATEGORY.equals(id)) {
-				return 1;
-			}
-    		if (WizardsRegistryReader.UNCATEGORIZED_WIZARD_CATEGORY.equals(id)) {
-				return 3;
-			}
-    		return 2;
-		}
-		return super.category(element);
-	}
-
-	/**
-     *	Return true if this sorter is affected by a property 
-     *	change of propertyName on the specified element.
-     */
-    public boolean isSorterProperty(Object object, String propertyId) {
-        return propertyId.equals(IBasicPropertyConstants.P_TEXT);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java
deleted file mode 100644
index f92c4a8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DecoratorsPreferencePage.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import com.ibm.icu.text.Collator;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-
-import org.eclipse.jface.preference.IPreferencePage;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-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.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-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.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.decorators.DecoratorDefinition;
-import org.eclipse.ui.internal.decorators.DecoratorManager;
-
-/**
- * The DecoratorsPreferencePage is the preference page for enabling and disabling
- * the decorators in the image and for giving the user a description of the decorator.
- */
-public class DecoratorsPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage {
-
-    private Text descriptionText;
-
-    private CheckboxTableViewer checkboxViewer;
-
-    /**
-     * @see PreferencePage#createContents(Composite)
-     */
-    protected Control createContents(Composite parent) {
-
-        Font font = parent.getFont();
-
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.DECORATORS_PREFERENCE_PAGE);
-
-        Composite mainComposite = new Composite(parent, SWT.NONE);
-        mainComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        mainComposite.setFont(font);
-
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        layout.verticalSpacing = 10;
-        mainComposite.setLayout(layout);
-
-        Label topLabel = new Label(mainComposite, SWT.NONE);
-        topLabel.setText(WorkbenchMessages.DecoratorsPreferencePage_explanation);
-        topLabel.setFont(font);
-
-        createDecoratorsArea(mainComposite);
-        createDescriptionArea(mainComposite);
-        populateDecorators();
-
-        return mainComposite;
-    }
-
-    /** 
-     * Creates the widgets for the list of decorators.
-     */
-    private void createDecoratorsArea(Composite mainComposite) {
-
-        Font mainFont = mainComposite.getFont();
-        Composite decoratorsComposite = new Composite(mainComposite, SWT.NONE);
-        decoratorsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-        GridLayout decoratorsLayout = new GridLayout();
-        decoratorsLayout.marginWidth = 0;
-        decoratorsLayout.marginHeight = 0;
-        decoratorsComposite.setLayout(decoratorsLayout);
-        decoratorsComposite.setFont(mainFont);
-
-        Label decoratorsLabel = new Label(decoratorsComposite, SWT.NONE);
-        decoratorsLabel.setText(WorkbenchMessages.DecoratorsPreferencePage_decoratorsLabel);
-        decoratorsLabel.setFont(mainFont);
-
-        // Checkbox table viewer of decorators
-        checkboxViewer = CheckboxTableViewer.newCheckList(decoratorsComposite,
-                SWT.SINGLE | SWT.TOP | SWT.BORDER);
-        checkboxViewer.getTable().setLayoutData(
-                new GridData(GridData.FILL_BOTH));
-        checkboxViewer.getTable().setFont(decoratorsComposite.getFont());
-        checkboxViewer.setLabelProvider(new LabelProvider() {
-            public String getText(Object element) {
-                return ((DecoratorDefinition) element).getName();
-            }
-        });
-        checkboxViewer.getTable().setFont(mainFont);
-
-        checkboxViewer.setContentProvider(new IStructuredContentProvider() {
-            private final Comparator comparer = new Comparator() {
-                private Collator collator = Collator.getInstance();
-
-                public int compare(Object arg0, Object arg1) {
-                    String s1 = ((DecoratorDefinition) arg0).getName();
-                    String s2 = ((DecoratorDefinition) arg1).getName();
-                    return collator.compare(s1, s2);
-                }
-            };
-
-            public void dispose() {
-                //Nothing to do on dispose
-            }
-
-            public void inputChanged(Viewer viewer, Object oldInput,
-                    Object newInput) {
-            }
-
-            public Object[] getElements(Object inputElement) {
-                //Make an entry for each decorator definition
-                Object[] elements = (Object[]) inputElement;
-                Object[] results = new Object[elements.length];
-                System.arraycopy(elements, 0, results, 0, elements.length);
-                Collections.sort(Arrays.asList(results), comparer);
-                return results;
-            }
-
-        });
-
-        checkboxViewer
-                .addSelectionChangedListener(new ISelectionChangedListener() {
-                    public void selectionChanged(SelectionChangedEvent event) {
-                        if (event.getSelection() instanceof IStructuredSelection) {
-                            IStructuredSelection sel = (IStructuredSelection) event
-                                    .getSelection();
-                            DecoratorDefinition definition = (DecoratorDefinition) sel
-                                    .getFirstElement();
-                            if (definition == null) {
-								clearDescription();
-							} else {
-								showDescription(definition);
-							}
-                        }
-                    }
-                });
-
-        checkboxViewer.addCheckStateListener(new ICheckStateListener() {
-            public void checkStateChanged(CheckStateChangedEvent event) {
-                checkboxViewer.setSelection(new StructuredSelection(event
-                        .getElement()));
-            }
-        });
-    }
-
-    /** 
-     * Creates the widgets for the description.
-     */
-    private void createDescriptionArea(Composite mainComposite) {
-
-        Font mainFont = mainComposite.getFont();
-        Composite textComposite = new Composite(mainComposite, SWT.NONE);
-        textComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-        GridLayout textLayout = new GridLayout();
-        textLayout.marginWidth = 0;
-        textLayout.marginHeight = 0;
-        textComposite.setLayout(textLayout);
-        textComposite.setFont(mainFont);
-
-        Label descriptionLabel = new Label(textComposite, SWT.NONE);
-        descriptionLabel.setText(WorkbenchMessages.DecoratorsPreferencePage_description); 
-        descriptionLabel.setFont(mainFont);
-
-        descriptionText = new Text(textComposite, SWT.MULTI | SWT.WRAP
-                | SWT.READ_ONLY | SWT.BORDER | SWT.H_SCROLL);
-        descriptionText.setLayoutData(new GridData(GridData.FILL_BOTH));
-        descriptionText.setFont(mainFont);
-    }
-
-    /**
-     * Populates the list of decorators.
-     */
-    private void populateDecorators() {
-        DecoratorDefinition[] definitions = getAllDefinitions();
-        checkboxViewer.setInput(definitions);
-        for (int i = 0; i < definitions.length; i++) {
-            checkboxViewer.setChecked(definitions[i], definitions[i]
-                    .isEnabled());
-        }
-    }
-
-    /**
-     * Show the selected description in the text.
-     */
-    private void showDescription(DecoratorDefinition definition) {
-        if (descriptionText == null || descriptionText.isDisposed()) {
-            return;
-        }
-        String text = definition.getDescription();
-        if (text == null || text.length() == 0) {
-			descriptionText.setText(WorkbenchMessages.PreferencePage_noDescription);
-		} else {
-			descriptionText.setText(text);
-		}
-    }
-
-    /**
-     * Clear the selected description in the text.
-     */
-    private void clearDescription() {
-        if (descriptionText == null || descriptionText.isDisposed()) {
-            return;
-        }
-        descriptionText.setText(""); //$NON-NLS-1$
-    }
-
-    /**
-     * @see PreferencePage#performDefaults()
-     */
-    protected void performDefaults() {
-        super.performDefaults();
-        DecoratorManager manager = WorkbenchPlugin.getDefault()
-				.getDecoratorManager();
-        DecoratorDefinition[] definitions = manager
-                .getAllDecoratorDefinitions();
-        for (int i = 0; i < definitions.length; i++) {
-            checkboxViewer.setChecked(definitions[i], definitions[i]
-                    .getDefaultValue());
-        }
-    }
-
-    /**
-     * @see IPreferencePage#performOk()
-     */
-    public boolean performOk() {
-        if (super.performOk()) {
-            DecoratorManager manager = getDecoratorManager();
-            //Clear the caches first to avoid unneccessary updates
-            manager.clearCaches();
-            DecoratorDefinition[] definitions = manager
-                    .getAllDecoratorDefinitions();
-            for (int i = 0; i < definitions.length; i++) {
-                boolean checked = checkboxViewer.getChecked(definitions[i]);
-                definitions[i].setEnabled(checked);
-
-            }
-            //Have the manager clear again as there may have been
-            //extra updates fired by the enablement changes.
-            manager.clearCaches();
-            manager.updateForEnablementChange();
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * @see IWorkbenchPreferencePage#init(IWorkbench)
-     */
-    public void init(IWorkbench workbench) {
-    }
-
-    /**
-     * Get the decorator definitions for the workbench.
-     */
-    private DecoratorDefinition[] getAllDefinitions() {
-        return getDecoratorManager().getAllDecoratorDefinitions();
-    }
-
-    /**
-     * Get the DecoratorManager being used for this page.
-     * 
-     * @return the decorator manager
-     */
-    private DecoratorManager getDecoratorManager() {
-        return WorkbenchPlugin.getDefault().getDecoratorManager();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DialogUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DialogUtil.java
deleted file mode 100644
index 5fa56a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/DialogUtil.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Utility class to help with dialogs.
- * <p>
- * Note that a copy of this class exists in the
- * org.eclipse.ui.internal.ide package.
- * </p>
- */
-public class DialogUtil {
-
-    /**
-     * Prevent instantiation.
-     */
-    private DialogUtil() {
-    }
-
-    /**
-     * Open an error style dialog for PartInitException by
-     * including any extra information from the nested
-     * CoreException if present.
-     */
-    public static void openError(Shell parent, String title, String message,
-            PartInitException exception) {
-        // Check for a nested CoreException
-        CoreException nestedException = null;
-        IStatus status = exception.getStatus();
-        if (status != null && status.getException() instanceof CoreException) {
-			nestedException = (CoreException) status.getException();
-		}
-        
-        IStatus errorStatus = null;
-
-		if (nestedException != null) {
-			// Open an error dialog and include the extra
-			// status information from the nested CoreException
-			errorStatus = StatusUtil.newStatus(nestedException.getStatus(),
-					message);
-		} else {
-			// Open a regular error dialog since there is no
-			// extra information to displa
-			errorStatus = new Status(IStatus.ERROR,
-					WorkbenchPlugin.PI_WORKBENCH, message);
-		}
-
-		StatusUtil.handleStatus(errorStatus, StatusManager.SHOW, parent);
-    }
-
-    /**
-	 * Removes the '&' accelerator indicator from a label, if any. Also removes
-	 * the () accelerators which are used in Asian languages.
-	 */
-    public static String removeAccel(String label) {
-
-        int startBracket = label.indexOf("(&"); //$NON-NLS-1$
-        //Non latin accelerator?
-        if (startBracket >= 0) {
-            int endBracket = label.indexOf(')');
-
-            //If there is more than one character it is not an accelerator
-            if ((endBracket - startBracket) == 3) {
-				return label.substring(0, startBracket)
-                        + label.substring(endBracket + 1);
-			}
-        }
-
-        int i = label.indexOf('&');
-        if (i >= 0) {
-			label = label.substring(0, i) + label.substring(i + 1);
-		}
-
-        return label;
-    }
-
-    /**
-     * Return the number of rows available in the current display using the
-     * current font.
-     * @param parent The Composite whose Font will be queried.
-     * @return int The result of the display size divided by the font size.
-     */
-    public static int availableRows(Composite parent) {
-
-        int fontHeight = (parent.getFont().getFontData())[0].getHeight();
-        int displayHeight = parent.getDisplay().getClientArea().height;
-
-        return displayHeight / fontHeight;
-    }
-
-    /**
-     * Return whether or not the font in the parent is the size of a result
-     * font (i.e. smaller than the High Contrast Font). This method is used to
-     * make layout decisions based on screen space.
-     * @param parent The Composite whose Font will be queried.
-     * @return boolean. True if there are more than 50 lines of possible
-     * text in the display.
-     */
-    public static boolean inRegularFontMode(Composite parent) {
-
-        return availableRows(parent) > 50;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
deleted file mode 100644
index 701eabc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EditorsPreferencePage.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids <sdavids@gmx.de> - bug 97667 [Preferences] Pref Page General/Editors - problems
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.IntegerFieldEditor;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.Group;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.EditorHistory;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * The Editors preference page of the workbench.
- */
-public class EditorsPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage {
-    private static final int REUSE_INDENT = 10;
-
-    protected Composite editorReuseGroup;
-
-    private Button reuseEditors;
-
-    protected Button showMultipleEditorTabs;
-
-    protected Button useIPersistableEditor;
-
-    private Composite editorReuseIndentGroup;
-
-    private Composite editorReuseThresholdGroup;
-
-    private IntegerFieldEditor reuseEditorsThreshold;
-
-    private Group dirtyEditorReuseGroup;
-
-    private Button openNewEditor;
-
-    private Button promptToReuseEditor;
-
-    private IntegerFieldEditor recentFilesEditor;
-
-    private IPropertyChangeListener validityChangeListener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
-				updateValidState();
-			}
-        }
-    };
-
-	private Button promptWhenStillOpenEditor;
-
-	private Button allowInplaceEditor;
-
-	protected Control createContents(Composite parent) {
-        Composite composite = createComposite(parent);
-
-        createEditorHistoryGroup(composite);
-
-        createSpace(composite);
-        createShowMultipleEditorTabsPref(composite);
-        createAllowInplaceEditorPref(composite);
-        createUseIPersistablePref(composite);
-        createPromptWhenStillOpenPref(composite);
-		createEditorReuseGroup(composite);
-		((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).setPreferenceVisibility(editorReuseGroup, showMultipleEditorTabs);
-
-        updateValidState();
-
-        applyDialogFont(composite);
-        
-        setHelpContext(parent);
-
-        return composite;
-    }
-
-	protected void setHelpContext(Composite parent) {
-		// @issue the IDE subclasses this, but should provide its own help
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.WORKBENCH_EDITOR_PREFERENCE_PAGE);
-	}
-
-    protected void createSpace(Composite parent) {
-        WorkbenchPreferencePage.createSpace(parent);
-    }
-
-    protected void createShowMultipleEditorTabsPref(Composite composite) {
-        showMultipleEditorTabs = new Button(composite, SWT.CHECK);
-        showMultipleEditorTabs.setText(WorkbenchMessages.WorkbenchPreference_showMultipleEditorTabsButton);
-        showMultipleEditorTabs.setSelection(getAPIPreferenceStore().getBoolean(
-                IWorkbenchPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS));
-        setButtonLayoutData(showMultipleEditorTabs);
-    }
-
-    protected void createAllowInplaceEditorPref(Composite composite) {
-    	allowInplaceEditor = new Button(composite, SWT.CHECK);
-    	allowInplaceEditor.setText(WorkbenchMessages.WorkbenchPreference_allowInplaceEditingButton);
-    	allowInplaceEditor.setSelection(!getAPIPreferenceStore().getBoolean(
-    			IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE));
-    	setButtonLayoutData(allowInplaceEditor);
-    }
-    
-    protected void createUseIPersistablePref(Composite composite) {
-        useIPersistableEditor = new Button(composite, SWT.CHECK);
-        useIPersistableEditor.setText(WorkbenchMessages.WorkbenchPreference_useIPersistableEditorButton);
-        useIPersistableEditor.setSelection(getPreferenceStore().getBoolean(
-                IPreferenceConstants.USE_IPERSISTABLE_EDITORS));
-        setButtonLayoutData(useIPersistableEditor);
-    }
-    
-    protected void createPromptWhenStillOpenPref(Composite composite) {
-    	promptWhenStillOpenEditor = new Button(composite, SWT.CHECK);
-    	promptWhenStillOpenEditor.setText(WorkbenchMessages.WorkbenchPreference_promptWhenStillOpenButton);
-    	promptWhenStillOpenEditor.setSelection(getAPIPreferenceStore().getBoolean(
-    			IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN));
-    	setButtonLayoutData(promptWhenStillOpenEditor);
-    }
-    
-    protected Composite createComposite(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        composite.setLayout(layout);
-        composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
-        return composite;
-    }
-
-    public void init(IWorkbench workbench) {
-        // do nothing
-    }
-
-    protected void performDefaults() {
-        IPreferenceStore store = getPreferenceStore();
-        showMultipleEditorTabs
-				.setSelection(getAPIPreferenceStore()
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS));
-        allowInplaceEditor
-        		.setSelection(!getAPIPreferenceStore()
-        				.getDefaultBoolean(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE));
-		useIPersistableEditor
-				.setSelection(store
-						.getDefaultBoolean(IPreferenceConstants.USE_IPERSISTABLE_EDITORS));
-		promptWhenStillOpenEditor
-				.setSelection(getAPIPreferenceStore()
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN));
-        reuseEditors.setSelection(store
-                .getDefaultBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN));
-        dirtyEditorReuseGroup.setEnabled(reuseEditors.getSelection());
-        openNewEditor.setSelection(!store
-                .getDefaultBoolean(IPreferenceConstants.REUSE_DIRTY_EDITORS));
-        openNewEditor.setEnabled(reuseEditors.getSelection());
-        promptToReuseEditor.setSelection(store
-                .getDefaultBoolean(IPreferenceConstants.REUSE_DIRTY_EDITORS));
-        promptToReuseEditor.setEnabled(reuseEditors.getSelection());
-        reuseEditorsThreshold.loadDefault();
-        reuseEditorsThreshold.getLabelControl(editorReuseThresholdGroup)
-                .setEnabled(reuseEditors.getSelection());
-        reuseEditorsThreshold.getTextControl(editorReuseThresholdGroup)
-                .setEnabled(reuseEditors.getSelection());
-        recentFilesEditor.loadDefault();
-    }
-
-    public boolean performOk() {
-        IPreferenceStore store = getPreferenceStore();
-        getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS,
-                showMultipleEditorTabs.getSelection());
-        getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE,
-        		!allowInplaceEditor.getSelection());
-        store.setValue(IPreferenceConstants.USE_IPERSISTABLE_EDITORS,
-                useIPersistableEditor.getSelection());
-        getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.PROMPT_WHEN_SAVEABLE_STILL_OPEN,
-        		promptWhenStillOpenEditor.getSelection());
-        
-        // store the reuse editors setting
-        store.setValue(IPreferenceConstants.REUSE_EDITORS_BOOLEAN, reuseEditors
-                .getSelection());
-        store.setValue(IPreferenceConstants.REUSE_DIRTY_EDITORS,
-                promptToReuseEditor.getSelection());
-        reuseEditorsThreshold.store();
-
-        // store the recent files setting
-        recentFilesEditor.store();
-        
-        PrefUtil.savePrefs();
-        return super.performOk();
-    }
-
-    /**
-     * Returns preference store that belongs to the our plugin.
-     *
-     * @return the preference store for this plugin
-     */
-    protected IPreferenceStore doGetPreferenceStore() {
-        return WorkbenchPlugin.getDefault().getPreferenceStore();
-    }
-
-    protected IPreferenceStore getAPIPreferenceStore() {
-    	return PrefUtil.getAPIPreferenceStore();
-    }
-    
-    protected void updateValidState() {
-        if (!recentFilesEditor.isValid()) {
-            setErrorMessage(recentFilesEditor.getErrorMessage());
-            setValid(false);
-        } else if (!reuseEditorsThreshold.isValid()) {
-            setErrorMessage(reuseEditorsThreshold.getErrorMessage());
-            setValid(false);
-        } else {
-            setErrorMessage(null);
-            setValid(true);
-        }
-    }
-
-    /**
-     * Create a composite that contains entry fields specifying editor reuse preferences.
-     */
-    protected void createEditorReuseGroup(Composite composite) {
-        editorReuseGroup = new Composite(composite, SWT.LEFT);
-        GridLayout layout = new GridLayout();
-        // Line up with other entries in preference page
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        editorReuseGroup.setLayout(layout);
-        editorReuseGroup.setLayoutData(new GridData(
-                GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
-
-        reuseEditors = new Button(editorReuseGroup, SWT.CHECK);
-        reuseEditors.setText(WorkbenchMessages.WorkbenchPreference_reuseEditors);
-        reuseEditors.setLayoutData(new GridData());
-
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        reuseEditors.setSelection(store
-                .getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN));
-        reuseEditors.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                reuseEditorsThreshold
-                        .getLabelControl(editorReuseThresholdGroup).setEnabled(
-                                reuseEditors.getSelection());
-                reuseEditorsThreshold.getTextControl(editorReuseThresholdGroup)
-                        .setEnabled(reuseEditors.getSelection());
-                dirtyEditorReuseGroup.setEnabled(reuseEditors.getSelection());
-                openNewEditor.setEnabled(reuseEditors.getSelection());
-                promptToReuseEditor.setEnabled(reuseEditors.getSelection());
-            }
-        });
-
-        editorReuseIndentGroup = new Composite(editorReuseGroup, SWT.LEFT);
-        GridLayout indentLayout = new GridLayout();
-        indentLayout.marginLeft = REUSE_INDENT;
-        indentLayout.marginRight = 0;
-        editorReuseIndentGroup.setLayout(indentLayout);
-        editorReuseIndentGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        editorReuseThresholdGroup = new Composite(editorReuseIndentGroup,
-                SWT.LEFT);
-        layout = new GridLayout();
-        layout.marginWidth = 0;
-        editorReuseThresholdGroup.setLayout(layout);
-        editorReuseThresholdGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        reuseEditorsThreshold = new IntegerFieldEditor(
-                IPreferenceConstants.REUSE_EDITORS,
-                WorkbenchMessages.WorkbenchPreference_reuseEditorsThreshold, editorReuseThresholdGroup); 
-
-        reuseEditorsThreshold.setPreferenceStore(WorkbenchPlugin.getDefault()
-                .getPreferenceStore());
-        reuseEditorsThreshold.setPage(this);
-        reuseEditorsThreshold.setTextLimit(2);
-        reuseEditorsThreshold.setErrorMessage(WorkbenchMessages.WorkbenchPreference_reuseEditorsThresholdError); 
-        reuseEditorsThreshold
-                .setValidateStrategy(StringFieldEditor.VALIDATE_ON_KEY_STROKE);
-        reuseEditorsThreshold.setValidRange(1, 99);
-        reuseEditorsThreshold.load();
-        reuseEditorsThreshold.getLabelControl(editorReuseThresholdGroup)
-                .setEnabled(reuseEditors.getSelection());
-        reuseEditorsThreshold.getTextControl(editorReuseThresholdGroup)
-                .setEnabled(reuseEditors.getSelection());
-        reuseEditorsThreshold.setPropertyChangeListener(validityChangeListener);
-
-        dirtyEditorReuseGroup = new Group(editorReuseIndentGroup, SWT.NONE);
-        layout = new GridLayout();
-        layout.marginWidth = 0;
-        dirtyEditorReuseGroup.setLayout(layout);
-        dirtyEditorReuseGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-        dirtyEditorReuseGroup.setText(WorkbenchMessages.WorkbenchPreference_reuseDirtyEditorGroupTitle); 
-        dirtyEditorReuseGroup.setEnabled(reuseEditors.getSelection());
-
-        promptToReuseEditor = new Button(dirtyEditorReuseGroup, SWT.RADIO);
-        promptToReuseEditor.setText(WorkbenchMessages.WorkbenchPreference_promptToReuseEditor); 
-        promptToReuseEditor.setSelection(store
-                .getBoolean(IPreferenceConstants.REUSE_DIRTY_EDITORS));
-        promptToReuseEditor.setEnabled(reuseEditors.getSelection());
-
-        openNewEditor = new Button(dirtyEditorReuseGroup, SWT.RADIO);
-        openNewEditor.setText(WorkbenchMessages.WorkbenchPreference_openNewEditor); 
-        openNewEditor.setSelection(!store
-                .getBoolean(IPreferenceConstants.REUSE_DIRTY_EDITORS));
-        openNewEditor.setEnabled(reuseEditors.getSelection());
-    }
-
-    /**
-     * Create a composite that contains entry fields specifying editor history preferences.
-     */
-    protected void createEditorHistoryGroup(Composite composite) {
-        Composite groupComposite = new Composite(composite, SWT.LEFT);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        groupComposite.setLayout(layout);
-        GridData gd = new GridData();
-        gd.horizontalAlignment = GridData.FILL;
-        gd.grabExcessHorizontalSpace = true;
-        groupComposite.setLayoutData(gd);
-        
-        recentFilesEditor = new IntegerFieldEditor(
-                IPreferenceConstants.RECENT_FILES,
-                WorkbenchMessages.WorkbenchPreference_recentFiles, groupComposite); 
-
-        recentFilesEditor.setPreferenceStore(WorkbenchPlugin.getDefault()
-                .getPreferenceStore());
-        recentFilesEditor.setPage(this);
-        recentFilesEditor.setTextLimit(Integer.toString(EditorHistory.MAX_SIZE)
-                .length());
-        recentFilesEditor
-                .setErrorMessage(NLS.bind(WorkbenchMessages.WorkbenchPreference_recentFilesError, new Integer(EditorHistory.MAX_SIZE) )); 
-        recentFilesEditor
-                .setValidateStrategy(StringFieldEditor.VALIDATE_ON_KEY_STROKE);
-        recentFilesEditor.setValidRange(0, EditorHistory.MAX_SIZE);
-        recentFilesEditor.load();
-        recentFilesEditor.setPropertyChangeListener(validityChangeListener);
-    }
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java
deleted file mode 100644
index ff4b5a1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPreferencePage.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/*
- * A page used as a filler for nodes in the preference tree
- * for which no page is suppplied.
- */
-public class EmptyPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage {
-    protected Control createContents(Composite parent) {
-        return new Composite(parent, SWT.NULL);
-    }
-
-    /**
-     * Hook method to get a page specific preference store. Reimplement this
-     * method if a page don't want to use its parent's preference store.
-     */
-    protected IPreferenceStore doGetPreferenceStore() {
-        return WorkbenchPlugin.getDefault().getPreferenceStore();
-    }
-
-    /**
-     * @see IWorkbenchPreferencePage
-     */
-    public void init(IWorkbench workbench) {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java
deleted file mode 100644
index 416f766..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EmptyPropertyPage.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-/*
- * A page used as a filler for nodes in the property page dialog
- * for which no page is suppplied.
- */
-public class EmptyPropertyPage extends PropertyPage {
-    /**
-     * Creates empty composite for this page content.
-     */
-
-    protected Control createContents(Composite parent) {
-        return new Composite(parent, SWT.NULL);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java
deleted file mode 100644
index ef3acd3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ErrorPreferencePage.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A page that is used to indicate an error in loading a page within the
- * workbench.
- * 
- * @since 3.0
- */
-public class ErrorPreferencePage extends EmptyPreferencePage {
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createContents(Composite parent) {
-        Text text = new Text(parent, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP);
-        text.setForeground(JFaceColors.getErrorText(text.getDisplay()));
-        text.setBackground(text.getDisplay().getSystemColor(
-                SWT.COLOR_WIDGET_BACKGROUND));
-        text.setText(WorkbenchMessages.ErrorPreferencePage_errorMessage); 
-        return text;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java
deleted file mode 100644
index d615c27..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/EventLoopProgressMonitor.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ProgressMonitorWrapper;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.internal.ExceptionHandler;
-
-/**
- * Used to run an event loop whenever progress monitor methods
- * are invoked.  <p>
- * This is needed since editor save operations are done in the UI thread.  
- * Although save operations should be written to do the work in the non-UI thread, 
- * this was not done for 1.0, so this was added to keep the UI live
- * (including allowing the cancel button to work).
- */
-public class EventLoopProgressMonitor extends ProgressMonitorWrapper implements
-        IProgressMonitorWithBlocking {
-    /**
-     * Threshold for how often the event loop is spun, in ms.
-     */
-    private static int T_THRESH = 100;
-
-    /**
-     * Maximum amount of time to spend processing events, in ms.
-     */
-    private static int T_MAX = 50;
-
-    /**
-     * Last time the event loop was spun.
-     */
-    private long lastTime = System.currentTimeMillis();
-
-    /**
-     * The task name is the name of the current task
-     * in the event loop.
-     */
-    private String taskName;
-
-    /**
-     * Constructs a new instance of the receiver and forwards to monitor.
-     * @param monitor
-     */
-    public EventLoopProgressMonitor(IProgressMonitor monitor) {
-        super(monitor);
-    }
-
-    /** 
-     * @see IProgressMonitor#beginTask
-     */
-    public void beginTask(String name, int totalWork) {
-        super.beginTask(name, totalWork);
-        taskName = name;
-        runEventLoop();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-     */
-    public void clearBlocked() {
-        Dialog.getBlockedHandler().clearBlocked();
-    }
-
-    /**
-     * @see IProgressMonitor#done
-     */
-    public void done() {
-        super.done();
-        taskName = null;
-        runEventLoop();
-    }
-
-    /**
-     * @see IProgressMonitor#internalWorked
-     */
-    public void internalWorked(double work) {
-        super.internalWorked(work);
-        runEventLoop();
-    }
-
-    /**
-     * @see IProgressMonitor#isCanceled
-     */
-    public boolean isCanceled() {
-        runEventLoop();
-        return super.isCanceled();
-    }
-
-    /**
-     * Runs an event loop.
-     */
-    private void runEventLoop() {
-        // Only run the event loop so often, as it is expensive on some platforms
-        // (namely Motif).
-        long t = System.currentTimeMillis();
-        if (t - lastTime < T_THRESH) {
-            return;
-        }
-        lastTime = t;
-        // Run the event loop.
-        Display disp = Display.getDefault();
-        if (disp == null) {
-            return;
-        }
-
-        //Initialize an exception handler from the window class.
-        ExceptionHandler handler = ExceptionHandler.getInstance();
-
-        for (;;) {
-            try {
-                if (!disp.readAndDispatch()) {
-					break;
-				}
-            } catch (Throwable e) {//Handle the exception the same way as the workbench
-                handler.handleException(e);
-                break;
-            }
-
-            // Only run the event loop for so long.
-            // Otherwise, this would never return if some other thread was 
-            // constantly generating events.
-            if (System.currentTimeMillis() - t > T_MAX) {
-                break;
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-     */
-    public void setBlocked(IStatus reason) {
-        Dialog.getBlockedHandler().showBlocked(this, reason, taskName);
-    }
-
-    /**
-     * @see IProgressMonitor#setCanceled
-     */
-    public void setCanceled(boolean b) {
-        super.setCanceled(b);
-        taskName = null;
-        runEventLoop();
-    }
-
-    /**
-     * @see IProgressMonitor#setTaskName
-     */
-    public void setTaskName(String name) {
-        super.setTaskName(name);
-        taskName = name;
-        runEventLoop();
-    }
-
-    /**
-     * @see IProgressMonitor#subTask
-     */
-    public void subTask(String name) {
-        //Be prepared in case the first task was null
-        if (taskName == null) {
-			taskName = name;
-		}
-        super.subTask(name);
-        runEventLoop();
-    }
-
-    /**
-     * @see IProgressMonitor#worked
-     */
-    public void worked(int work) {
-        super.worked(work);
-        runEventLoop();
-    }
-
-    /**
-     * Return the name of the current task.
-     * @return Returns the taskName.
-     */
-    protected String getTaskName() {
-        return taskName;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportPage.java
deleted file mode 100644
index 0708c84..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportPage.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-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.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.activities.ITriggerPoint;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
-import org.eclipse.ui.wizards.IWizardCategory;
-
-/**
- * Wizard page class from which an export wizard is selected.
- * 
- * @since 3.2
- *
- */
-public class ExportPage extends ImportExportPage {
-	private static final String STORE_SELECTED_EXPORT_WIZARD_ID = DIALOG_SETTING_SECTION_NAME
-		+ "STORE_SELECTED_EXPORT_WIZARD_ID"; //$NON-NLS-1$
-	
-	private static final String STORE_EXPANDED_EXPORT_CATEGORIES = DIALOG_SETTING_SECTION_NAME
-		+ "STORE_EXPANDED_EXPORT_CATEGORIES";	//$NON-NLS-1$
-
-	CategorizedWizardSelectionTree exportTree;
-	
-	/**
-	 * Constructor for export wizard selection page.
-	 * 
-	 * @param aWorkbench
-	 * @param currentSelection
-	 */
-	public ExportPage(IWorkbench aWorkbench,
-			IStructuredSelection currentSelection) {
-		super(aWorkbench, currentSelection);
-	}
-	
-	protected void initialize() {
-		workbench.getHelpSystem().setHelp(getControl(),
-                IWorkbenchHelpContextIds.EXPORT_WIZARD_SELECTION_WIZARD_PAGE);
-	}
-
-	protected Composite createTreeViewer(Composite parent) {
-		IWizardCategory root = WorkbenchPlugin.getDefault()
-			.getExportWizardRegistry().getRootCategory();
-		exportTree = new CategorizedWizardSelectionTree(
-				root, WorkbenchMessages.ExportWizard_selectDestination);
-		Composite exportComp = exportTree.createControl(parent);
-		exportTree.getViewer().addSelectionChangedListener(new ISelectionChangedListener(){
-			public void selectionChanged(SelectionChangedEvent event) {
-				listSelectionChanged(event.getSelection());    	       			
-			}
-		});
-		exportTree.getViewer().addDoubleClickListener(new IDoubleClickListener(){
-	    	public void doubleClick(DoubleClickEvent event) {
-	    		treeDoubleClicked(event);
-	    	}
-	    });
-		setTreeViewer(exportTree.getViewer());
-	    return exportComp;
-	}
-	
-	public void saveWidgetValues(){
-    	storeExpandedCategories(STORE_EXPANDED_EXPORT_CATEGORIES, exportTree.getViewer());
-        storeSelectedCategoryAndWizard(STORE_SELECTED_EXPORT_WIZARD_ID, exportTree.getViewer()); 	
-        super.saveWidgetValues();
-	}
-	
-	protected void restoreWidgetValues(){
-        IWizardCategory exportRoot = WorkbenchPlugin.getDefault().getExportWizardRegistry().getRootCategory();
-        expandPreviouslyExpandedCategories(STORE_EXPANDED_EXPORT_CATEGORIES, exportRoot, exportTree.getViewer());
-        selectPreviouslySelected(STORE_SELECTED_EXPORT_WIZARD_ID, exportRoot, exportTree.getViewer());       
-        super.restoreWidgetValues();
-	}
-	
-	protected ITriggerPoint getTriggerPoint(){
-		return getWorkbench().getActivitySupport()
-    		.getTriggerPointManager().getTriggerPoint(WorkbenchTriggerPoints.EXPORT_WIZARDS);
-	}
-	
-	protected void updateMessage(){
-		setMessage(WorkbenchMessages.ImportExportPage_chooseExportDestination); 
-		super.updateMessage();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportWizard.java
deleted file mode 100644
index c0f8140..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ExportWizard.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
-import org.eclipse.ui.internal.registry.WizardsRegistryReader;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.wizards.IWizardCategory;
-
-/**
- * The export wizard allows the user to choose which nested export wizard to run.
- * The set of available wizards comes from the export wizard extension point.
- */
-public class ExportWizard extends Wizard {
-    private IWorkbench theWorkbench;
-
-    private IStructuredSelection selection;
-
-    //the list selection page
-    class SelectionPage extends WorkbenchWizardListSelectionPage {
-        SelectionPage(IWorkbench w, IStructuredSelection ss, AdaptableList e,
-                String s) {
-            super(w, ss, e, s, WorkbenchTriggerPoints.EXPORT_WIZARDS);
-        }
-
-        public void createControl(Composite parent) {
-            super.createControl(parent);
-            workbench.getHelpSystem().setHelp(getControl(),
-                    IWorkbenchHelpContextIds.EXPORT_WIZARD_SELECTION_WIZARD_PAGE);
-        }
-
-        protected IWizardNode createWizardNode(WorkbenchWizardElement element) {
-            return new WorkbenchWizardNode(this, element) {
-                public IWorkbenchWizard createWizard() throws CoreException {
-                    return wizardElement.createWizard();
-                }
-            };
-        }
-    }
-
-    /**
-     * Creates the wizard's pages lazily.
-     */
-    public void addPages() {
-        addPage(new SelectionPage(this.theWorkbench, this.selection,
-                getAvailableExportWizards(), WorkbenchMessages.ExportWizard_selectDestination));
-    }
-
-    /**
-     * Returns the export wizards that are available for invocation.
-     */
-    protected AdaptableList getAvailableExportWizards() {
-       	// TODO: exports are still flat - we need to get at the flat list. All
-		// wizards will be in the "other" category.
-		IWizardCategory root = WorkbenchPlugin.getDefault()
-				.getExportWizardRegistry().getRootCategory();
-		WizardCollectionElement otherCategory = (WizardCollectionElement) root
-				.findCategory(new Path(
-						WizardsRegistryReader.UNCATEGORIZED_WIZARD_CATEGORY));
-		if (otherCategory == null) {
-			return new AdaptableList();
-		}
-		return otherCategory.getWizardAdaptableList();    
-	}
-
-    /**
-     * Initializes the wizard.
-     * 
-     * @param aWorkbench the workbench
-     * @param currentSelection the current selectio
-     */
-    public void init(IWorkbench aWorkbench,
-            IStructuredSelection currentSelection) {
-        this.theWorkbench = aWorkbench;
-        this.selection = currentSelection;
-
-        setWindowTitle(WorkbenchMessages.ExportWizard_title); 
-        setDefaultPageImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_WIZ));
-        setNeedsProgressMonitor(true);
-    }
-
-    /**
-     * Subclasses must implement this <code>IWizard</code> method 
-     * to perform any special finish processing for their wizard.
-     */
-    public boolean performFinish() {
-        ((SelectionPage) getPages()[0]).saveWidgetValues();
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java
deleted file mode 100644
index 0e7eb89..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileEditorsPreferencePage.java
+++ /dev/null
@@ -1,691 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Benjamin Muskalla -	Bug 29633 [EditorMgmt] "Open" menu should
- *     						have Open With-->Other
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-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.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.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IFileEditorMapping;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.dialogs.EditorSelectionDialog;
-import org.eclipse.ui.dialogs.PreferenceLinkArea;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.internal.registry.EditorRegistry;
-import org.eclipse.ui.internal.registry.FileEditorMapping;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-/**
- * The file editors page presents the collection of file names and extensions
- * for which the user has registered editors. It also lets the user add new
- * internal or external (program) editors for a given file name and extension.
- *
- * The user can add an editor for either a specific file name and extension
- * (e.g. report.doc), or for all file names of a given extension (e.g. *.doc)
- *
- * The set of registered editors is tracked by the EditorRegistery
- * available from the workbench plugin.
- */
-public class FileEditorsPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage, Listener {
-	
-    private static final String DATA_EDITOR = "editor"; //$NON-NLS-1$
-
-    private static final String DATA_FROM_CONTENT_TYPE = "type"; //$NON-NLS-1$
-    
-	protected Table resourceTypeTable;
-
-    protected Button addResourceTypeButton;
-
-    protected Button removeResourceTypeButton;
-
-    protected Table editorTable;
-
-    protected Button addEditorButton;
-
-    protected Button removeEditorButton;
-
-    protected Button defaultEditorButton;
-
-    protected Label editorLabel;
-
-    protected IWorkbench workbench;
-
-    protected List imagesToDispose;
-
-    protected Map editorsToImages;
-
-    /**
-     * Add a new resource type to the collection shown in the top of the page.
-     * This is typically called after the extension dialog is shown to the user.
-     * 
-     * @param newName the new name
-     * @param newExtension the new extension
-     */
-    public void addResourceType(String newName, String newExtension) {
-        // Either a file name or extension must be provided
-        Assert.isTrue((newName != null && newName.length() != 0)
-                || (newExtension != null && newExtension.length() != 0));
-
-        // Wild card only valid by itself (i.e. rep* is not valid)
-        // And must have an extension
-        int index = newName.indexOf('*');
-        if (index > -1) {
-            Assert.isTrue(index == 0 && newName.length() == 1);
-            Assert.isTrue(newExtension != null && newExtension.length() != 0);
-        }
-
-        // Find the index at which to insert the new entry.
-        String newFilename = (newName + (newExtension == null
-                || newExtension.length() == 0 ? "" : "." + newExtension)).toUpperCase();//$NON-NLS-1$ //$NON-NLS-2$
-        IFileEditorMapping resourceType;
-        TableItem[] items = resourceTypeTable.getItems();
-        boolean found = false;
-        int i = 0;
-
-        while (i < items.length && !found) {
-            resourceType = (IFileEditorMapping) items[i].getData();
-            int result = newFilename.compareToIgnoreCase(resourceType
-                    .getLabel());
-            if (result == 0) {
-                // Same resource type not allowed!
-                MessageDialog
-                        .openInformation(
-                                getControl().getShell(),
-                                WorkbenchMessages.FileEditorPreference_existsTitle,
-                                WorkbenchMessages.FileEditorPreference_existsMessage);
-                return;
-            }
-
-            if (result < 0) {
-				found = true;
-			} else {
-				i++;
-			}
-        }
-
-        // Create the new type and insert it
-        resourceType = new FileEditorMapping(newName, newExtension);
-        TableItem item = newResourceTableItem(resourceType, i, true);
-        resourceTypeTable.setFocus();
-        resourceTypeTable.showItem(item);
-        fillEditorTable();
-    }
-
-    /**
-     * Creates the page's UI content.
-     */
-    protected Control createContents(Composite parent) {
-        imagesToDispose = new ArrayList();
-        editorsToImages = new HashMap(50);
-
-        // define container & its gridding
-        Composite pageComponent = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        pageComponent.setLayout(layout);
-        GridData data = new GridData();
-        data.verticalAlignment = GridData.FILL;
-        data.horizontalAlignment = GridData.FILL;
-        pageComponent.setLayoutData(data);
-
-        //layout the contents
-
-        PreferenceLinkArea contentTypeArea = new PreferenceLinkArea(pageComponent, SWT.NONE,
-                "org.eclipse.ui.preferencePages.ContentTypes", WorkbenchMessages.FileEditorPreference_contentTypesRelatedLink,//$NON-NLS-1$
-                (IWorkbenchPreferenceContainer) getContainer(),null);
-        
-        data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
-        contentTypeArea.getControl().setLayoutData(data);
-
-        //layout the top table & its buttons
-        Label label = new Label(pageComponent, SWT.LEFT);
-        label.setText(WorkbenchMessages.FileEditorPreference_fileTypes); 
-        data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        data.horizontalSpan = 2;
-        label.setLayoutData(data);
-
-        resourceTypeTable = new Table(pageComponent, SWT.SINGLE | SWT.BORDER
-                | SWT.FULL_SELECTION);
-        resourceTypeTable.addListener(SWT.Selection, this);
-        resourceTypeTable.addListener(SWT.DefaultSelection, this);
-        data = new GridData(GridData.FILL_HORIZONTAL);
-
-        int availableRows = DialogUtil.availableRows(pageComponent);
-
-        data.heightHint = resourceTypeTable.getItemHeight()
-                * (availableRows / 8);
-        resourceTypeTable.setLayoutData(data);
-
-        Composite groupComponent = new Composite(pageComponent, SWT.NULL);
-        GridLayout groupLayout = new GridLayout();
-        groupLayout.marginWidth = 0;
-        groupLayout.marginHeight = 0;
-        groupComponent.setLayout(groupLayout);
-        data = new GridData();
-        data.verticalAlignment = GridData.FILL;
-        data.horizontalAlignment = GridData.FILL;
-        groupComponent.setLayoutData(data);
-
-        addResourceTypeButton = new Button(groupComponent, SWT.PUSH);
-        addResourceTypeButton.setText(WorkbenchMessages.FileEditorPreference_add); 
-        addResourceTypeButton.addListener(SWT.Selection, this);
-        addResourceTypeButton.setLayoutData(data);
-        setButtonLayoutData(addResourceTypeButton);
-
-        removeResourceTypeButton = new Button(groupComponent, SWT.PUSH);
-        removeResourceTypeButton.setText(WorkbenchMessages.FileEditorPreference_remove);
-        removeResourceTypeButton.addListener(SWT.Selection, this);
-        setButtonLayoutData(removeResourceTypeButton);
-
-        //Spacer
-        label = new Label(pageComponent, SWT.LEFT);
-        data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        data.horizontalSpan = 2;
-        label.setLayoutData(data);
-
-        // layout the bottom table & its buttons
-        editorLabel = new Label(pageComponent, SWT.LEFT);
-        editorLabel.setText(WorkbenchMessages.FileEditorPreference_associatedEditors);
-        data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        data.horizontalSpan = 2;
-        editorLabel.setLayoutData(data);
-
-        editorTable = new Table(pageComponent, SWT.SINGLE | SWT.BORDER);
-        editorTable.addListener(SWT.Selection, this);
-        editorTable.addListener(SWT.DefaultSelection, this);
-        data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = editorTable.getItemHeight() * 7;
-        editorTable.setLayoutData(data);
-
-        groupComponent = new Composite(pageComponent, SWT.NULL);
-        groupLayout = new GridLayout();
-        groupLayout.marginWidth = 0;
-        groupLayout.marginHeight = 0;
-        groupComponent.setLayout(groupLayout);
-        data = new GridData();
-        data.verticalAlignment = GridData.FILL;
-        data.horizontalAlignment = GridData.FILL;
-        groupComponent.setLayoutData(data);
-
-        addEditorButton = new Button(groupComponent, SWT.PUSH);
-        addEditorButton.setText(WorkbenchMessages.FileEditorPreference_addEditor);
-        addEditorButton.addListener(SWT.Selection, this);
-        addEditorButton.setLayoutData(data);
-        setButtonLayoutData(addEditorButton);
-
-        removeEditorButton = new Button(groupComponent, SWT.PUSH);
-        removeEditorButton.setText(WorkbenchMessages.FileEditorPreference_removeEditor); 
-        removeEditorButton.addListener(SWT.Selection, this);
-        setButtonLayoutData(removeEditorButton);
-
-        defaultEditorButton = new Button(groupComponent, SWT.PUSH);
-        defaultEditorButton.setText(WorkbenchMessages.FileEditorPreference_default);
-        defaultEditorButton.addListener(SWT.Selection, this);
-        setButtonLayoutData(defaultEditorButton);
-
-        fillResourceTypeTable();
-        if (resourceTypeTable.getItemCount() > 0) {
-            resourceTypeTable.setSelection(0);
-        }
-        fillEditorTable();
-        updateEnabledState();
-
-        workbench.getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.FILE_EDITORS_PREFERENCE_PAGE);
-        applyDialogFont(pageComponent);
-
-        return pageComponent;
-    }
-
-    /**
-     * The preference page is going to be disposed. So deallocate all allocated
-     * SWT resources that aren't disposed automatically by disposing the page
-     * (i.e fonts, cursors, etc). Subclasses should reimplement this method to 
-     * release their own allocated SWT resources.
-     */
-    public void dispose() {
-        super.dispose();
-        if (imagesToDispose != null) {
-            for (Iterator e = imagesToDispose.iterator(); e.hasNext();) {
-                ((Image) e.next()).dispose();
-            }
-            imagesToDispose = null;
-        }
-        if (editorsToImages != null) {
-            for (Iterator e = editorsToImages.values().iterator(); e.hasNext();) {
-                ((Image) e.next()).dispose();
-            }
-            editorsToImages = null;
-        }
-    }
-
-    /**
-     * Hook method to get a page specific preference store. Reimplement this
-     * method if a page don't want to use its parent's preference store.
-     */
-    protected IPreferenceStore doGetPreferenceStore() {
-        return WorkbenchPlugin.getDefault().getPreferenceStore();
-    }
-
-    protected void fillEditorTable() {
-        editorTable.removeAll();
-        FileEditorMapping resourceType = getSelectedResourceType();
-        if (resourceType != null) {
-            IEditorDescriptor[] array = resourceType.getEditors();
-            for (int i = 0; i < array.length; i++) {
-                IEditorDescriptor editor = array[i];
-                TableItem item = new TableItem(editorTable, SWT.NULL);
-                item.setData(DATA_EDITOR, editor);
-                // Check if it is the default editor
-                String defaultString = null;
-                if (resourceType != null) {
-                    if (resourceType.getDefaultEditor() == editor && resourceType.isDeclaredDefaultEditor(editor)) {
-						defaultString = WorkbenchMessages.FileEditorPreference_defaultLabel;
-					}
-                }
-
-                if (defaultString != null) {
-                    item.setText(editor.getLabel() + " " + defaultString); //$NON-NLS-1$
-                } else {
-                    item.setText(editor.getLabel());
-                }
-                item.setImage(getImage(editor));
-            }
-            
-            // now add any content type editors
-			EditorRegistry registry = (EditorRegistry) WorkbenchPlugin
-					.getDefault().getEditorRegistry();
-			IContentType[] contentTypes = Platform.getContentTypeManager()
-					.findContentTypesFor(resourceType.getLabel());
-			for (int i = 0; i < contentTypes.length; i++) {
-				array = registry.getEditorsForContentType(contentTypes[i]);
-				for (int j = 0; j < array.length; j++) {
-					IEditorDescriptor editor = array[j];
-					// don't add duplicates
-					TableItem[] items = editorTable.getItems();
-					TableItem foundItem = null;
-					for (int k = 0; k < items.length; k++) {
-						if (items[k].getData(DATA_EDITOR).equals(editor)) {
-							foundItem = items[k];
-							break;
-						}
-					}
-					if (foundItem == null) {
-						TableItem item = new TableItem(editorTable, SWT.NULL);
-						item.setData(DATA_EDITOR, editor);
-						item.setData(DATA_FROM_CONTENT_TYPE, contentTypes[i]);
-						setLockedItemText(item, editor.getLabel());
-						item.setImage(getImage(editor));
-					} else { // update the item to reflect its origin
-						foundItem.setData(DATA_FROM_CONTENT_TYPE, contentTypes[i]);
-						setLockedItemText(foundItem, foundItem.getText());
-					}
-				}
-			}
-            
-        }
-    }
-
-    /**
-	 * Set the locked message on the item. Assumes the item has an instance of
-	 * IContentType in the data map.
-	 * 
-	 * @param item the item to set
-	 * @param baseLabel the base label
-	 */
-	private void setLockedItemText(TableItem item, String baseLabel) {
-		item.setText(NLS
-				.bind(WorkbenchMessages.FileEditorPreference_isLocked,
-						baseLabel, ((IContentType) item
-								.getData(DATA_FROM_CONTENT_TYPE)).getName()));
-	}
-    
-    /**
-	 * Place the existing resource types in the table
-	 */
-    protected void fillResourceTypeTable() {
-        // Populate the table with the items
-        IFileEditorMapping[] array = WorkbenchPlugin.getDefault()
-                .getEditorRegistry().getFileEditorMappings();
-        for (int i = 0; i < array.length; i++) {
-            FileEditorMapping mapping = (FileEditorMapping) array[i];
-            mapping = (FileEditorMapping) mapping.clone(); // want a copy
-            newResourceTableItem(mapping, i, false);
-        }
-    }
-
-    /**
-     * Returns the image associated with the given editor.
-     */
-    protected Image getImage(IEditorDescriptor editor) {
-        Image image = (Image) editorsToImages.get(editor);
-        if (image == null) {
-            image = editor.getImageDescriptor().createImage();
-            editorsToImages.put(editor, image);
-        }
-        return image;
-    }
-
-    protected FileEditorMapping getSelectedResourceType() {
-        TableItem[] items = resourceTypeTable.getSelection();
-        if (items.length > 0) {
-            return (FileEditorMapping) items[0].getData(); //Table is single select
-        }
-        return null;        
-    }
-
-    protected IEditorDescriptor[] getAssociatedEditors() {
-        if (getSelectedResourceType() == null) {
-			return null;
-		}
-        if (editorTable.getItemCount() > 0) {
-            ArrayList editorList = new ArrayList();
-            for (int i = 0; i < editorTable.getItemCount(); i++) {
-				editorList.add(editorTable.getItem(i).getData(DATA_EDITOR));
-			}
-
-            return (IEditorDescriptor[]) editorList
-                    .toArray(new IEditorDescriptor[editorList.size()]);
-        } 
-        return null;
-    }
-
-    public void handleEvent(Event event) {
-        if (event.widget == addResourceTypeButton) {
-            promptForResourceType();
-        } else if (event.widget == removeResourceTypeButton) {
-            removeSelectedResourceType();
-        } else if (event.widget == addEditorButton) {
-            promptForEditor();
-        } else if (event.widget == removeEditorButton) {
-            removeSelectedEditor();
-        } else if (event.widget == defaultEditorButton) {
-            setSelectedEditorAsDefault();
-        } else if (event.widget == resourceTypeTable) {
-            fillEditorTable();
-        }
-
-        updateEnabledState();
-
-    }
-
-    /**
-     * @see IWorkbenchPreferencePage
-     */
-    public void init(IWorkbench aWorkbench) {
-        this.workbench = aWorkbench;
-        noDefaultAndApplyButton();
-    }
-
-    /*
-     * Create a new <code>TableItem</code> to represent the resource
-     * type editor description supplied.
-     */
-    protected TableItem newResourceTableItem(IFileEditorMapping mapping,
-            int index, boolean selected) {
-        Image image = mapping.getImageDescriptor().createImage(false);
-        if (image != null) {
-			imagesToDispose.add(image);
-		}
-
-        TableItem item = new TableItem(resourceTypeTable, SWT.NULL, index);
-        if (image != null) {
-            item.setImage(image);
-        }
-        item.setText(mapping.getLabel());
-        item.setData(mapping);
-        if (selected) {
-            resourceTypeTable.setSelection(index);
-        }
-
-        return item;
-    }
-
-    /**
-     * This is a hook for sublcasses to do special things when the ok
-     * button is pressed.
-     * For example reimplement this method if you want to save the 
-     * page's data into the preference bundle.
-     */
-    public boolean performOk() {
-        TableItem[] items = resourceTypeTable.getItems();
-        FileEditorMapping[] resourceTypes = new FileEditorMapping[items.length];
-        for (int i = 0; i < items.length; i++) {
-            resourceTypes[i] = (FileEditorMapping) (items[i].getData());
-        }
-        EditorRegistry registry = (EditorRegistry) WorkbenchPlugin.getDefault()
-                .getEditorRegistry(); // cast to allow save to be called
-        registry.setFileEditorMappings(resourceTypes);
-        registry.saveAssociations();
-        
-        PrefUtil.savePrefs();
-        return true;
-    }
-
-    /**
-     * Prompt for editor.
-     */
-    public void promptForEditor() {
-        EditorSelectionDialog dialog = new EditorSelectionDialog(getControl()
-                .getShell());
-        dialog.setEditorsToFilter(getAssociatedEditors());
-        dialog
-                .setMessage(NLS.bind(WorkbenchMessages.Choose_the_editor_for_file,getSelectedResourceType().getLabel() ));
-        if (dialog.open() == Window.OK) {
-            EditorDescriptor editor = (EditorDescriptor) dialog
-                    .getSelectedEditor();
-            if (editor != null) {
-                int i = editorTable.getItemCount();
-                boolean isEmpty = i < 1;
-                TableItem item = new TableItem(editorTable, SWT.NULL, i);
-                item.setData(DATA_EDITOR, editor);
-                if (isEmpty) {
-					item
-                            .setText(editor.getLabel()
-                                    + " " + WorkbenchMessages.FileEditorPreference_defaultLabel); //$NON-NLS-1$
-				} else {
-					item.setText(editor.getLabel());
-				}
-                item.setImage(getImage(editor));
-                editorTable.setSelection(i);
-                editorTable.setFocus();
-                getSelectedResourceType().addEditor(editor);
-				if (isEmpty) {
-					getSelectedResourceType().setDefaultEditor(editor);
-				}
-                updateSelectedResourceType(); //in case of new default
-            }
-        }
-    }
-
-    /**
-     * Prompt for resource type.
-     */
-    public void promptForResourceType() {
-        FileExtensionDialog dialog = new FileExtensionDialog(getControl()
-				.getShell(), WorkbenchMessages.FileExtension_shellTitle,
-				IWorkbenchHelpContextIds.FILE_EXTENSION_DIALOG,
-				WorkbenchMessages.FileExtension_dialogTitle,
-				WorkbenchMessages.FileExtension_fileTypeMessage,
-				WorkbenchMessages.FileExtension_fileTypeLabel);
-        if (dialog.open() == Window.OK) {
-            String name = dialog.getName();
-            String extension = dialog.getExtension();
-            addResourceType(name, extension);
-        }
-    }
-
-    /**
-     * Remove the editor from the table
-     */
-    public void removeSelectedEditor() {
-        TableItem[] items = editorTable.getSelection();
-        boolean defaultEditor = editorTable.getSelectionIndex() == 0;
-        if (items.length > 0) {
-            getSelectedResourceType().removeEditor(
-                    (EditorDescriptor) items[0].getData(DATA_EDITOR));
-            items[0].dispose(); //Table is single selection
-        }
-        if (defaultEditor && editorTable.getItemCount() > 0) {
-            TableItem item = editorTable.getItem(0);
-            // explicitly set the new editor first editor to default
-            getSelectedResourceType().setDefaultEditor(
-					(EditorDescriptor) item.getData(DATA_EDITOR));
-            if (item != null) {
-				item
-                        .setText(((EditorDescriptor) (item.getData(DATA_EDITOR)))
-                                .getLabel()
-                                + " " + WorkbenchMessages.FileEditorPreference_defaultLabel); //$NON-NLS-1$
-			}
-			if (!isEditorRemovable(item)) {
-				setLockedItemText(item, item.getText());
-			}
-		}
-
-    }
-
-    /**
-     * Remove the type from the table
-     */
-    public void removeSelectedResourceType() {
-        TableItem[] items = resourceTypeTable.getSelection();
-        if (items.length > 0) {
-            items[0].dispose(); //Table is single selection
-        }
-        //Clear out the editors too
-        editorTable.removeAll();
-    }
-
-    /**
-     * Add the selected editor to the default list.
-     */
-    public void setSelectedEditorAsDefault() {
-        TableItem[] items = editorTable.getSelection();
-        if (items.length > 0) {
-            // First change the label of the old default
-            TableItem oldDefaultItem = editorTable.getItem(0);
-            oldDefaultItem
-                    .setText(((EditorDescriptor) oldDefaultItem.getData(DATA_EDITOR))
-                            .getLabel());
-            // update the label to reflect the locked state
-            if (!isEditorRemovable(oldDefaultItem)) {
-				setLockedItemText(oldDefaultItem, oldDefaultItem.getText());
-			}
-            // Now set the new default
-            EditorDescriptor editor = (EditorDescriptor) items[0].getData(DATA_EDITOR);
-            getSelectedResourceType().setDefaultEditor(editor);
-            IContentType fromContentType = (IContentType) items[0].getData(DATA_FROM_CONTENT_TYPE);
-            items[0].dispose(); //Table is single selection
-            TableItem item = new TableItem(editorTable, SWT.NULL, 0);
-            item.setData(DATA_EDITOR, editor);
-            if (fromContentType != null) {
-				item.setData(DATA_FROM_CONTENT_TYPE, fromContentType);
-			}
-            item
-                    .setText(editor.getLabel()
-                            + " " + WorkbenchMessages.FileEditorPreference_defaultLabel); //$NON-NLS-1$
-            item.setImage(getImage(editor));
-            if (!isEditorRemovable(item)) {
-				setLockedItemText(item, item.getText());
-			}
-			editorTable.setSelection(new TableItem[] { item });
-        }
-    }
-
-    /**
-     * Update the enabled state.
-     */
-    public void updateEnabledState() {
-        //Update enabled state
-        boolean resourceTypeSelected = resourceTypeTable.getSelectionIndex() != -1;
-        boolean editorSelected = editorTable.getSelectionIndex() != -1;
-
-        removeResourceTypeButton.setEnabled(resourceTypeSelected);
-        editorLabel.setEnabled(resourceTypeSelected);
-        addEditorButton.setEnabled(resourceTypeSelected);
-        removeEditorButton.setEnabled(editorSelected && isEditorRemovable());
-        defaultEditorButton.setEnabled(editorSelected);
-    }
-    
-    /**
-	 * Return whether the selected editor is removable. An editor is removable
-	 * if it is not submitted via a content-type binding.
-	 * 
-	 * @return whether the selected editor is removable
-	 * @since 3.1
-	 */
-    private boolean isEditorRemovable() {
-		TableItem[] items = editorTable.getSelection();
-		if (items.length > 0) {
-			return isEditorRemovable(items[0]);
-		}
-		return false;
-	}
-    
-    /**
-	 * Return whether the given editor is removable. An editor is removable
-	 * if it is not submitted via a content-type binding.
-	 * 
-	 * @param item the item to test
-	 * @return whether the selected editor is removable
-	 * @since 3.1
-	 */
-    private boolean isEditorRemovable(TableItem item) {
-		IContentType fromContentType = (IContentType) item.getData(DATA_FROM_CONTENT_TYPE);
-		return fromContentType == null;
-	}
-
-	/**
-	 * Update the selected type.
-	 */
-    public void updateSelectedResourceType() {
-        // TableItem item = resourceTypeTable.getSelection()[0]; //Single select
-        //  Image image = ((IFileEditorMapping)item.getData()).getImageDescriptor().getImage();
-        //  imagesToDispose.addElement(image);
-        //  item.setImage(image);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java
deleted file mode 100644
index a5128f7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FileExtensionDialog.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.layout.LayoutConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-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.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * This class is used to prompt the user for a file name & extension.
- */
-public class FileExtensionDialog extends TitleAreaDialog {
-	
-	private static final String DIALOG_SETTINGS_SECTION = "FileExtensionDialogSettings"; //$NON-NLS-1$
-	
-    private String filename = ""; //$NON-NLS-1$
-    
-    private String initialValue;
-
-    private Text filenameField;
-
-    private Button okButton;
-
-	private String title;
-
-	private String helpContextId;
-
-	private final String headerTitle;
-
-	private final String message2;
-
-	private final String label;
-
-    /**
-     * Constructs a new file extension dialog.
-     * @param parentShell the parent shell
-     */
-    public FileExtensionDialog(Shell parentShell) {
-		this(parentShell, WorkbenchMessages.FileExtension_shellTitle,
-				IWorkbenchHelpContextIds.FILE_EXTENSION_DIALOG,
-				WorkbenchMessages.FileExtension_dialogTitle,
-				WorkbenchMessages.FileExtension_fileTypeMessage,
-				WorkbenchMessages.FileExtension_fileTypeLabel);
-	}
-    
-    /**
-     * Constructs a new file extension dialog.
-     * 
-     * @param parentShell the parent shell
-     * @param title the dialog title
-     * @param helpContextId the help context for this dialog
-     * @param headerTitle the dialog header
-     * @param message the dialog message
-     * @param label the label for the "file type" field
-     * @since 3.4
-     */
-    public FileExtensionDialog(Shell parentShell, String title, String helpContextId, String headerTitle, String message, String label) {
-    	super(parentShell);
-    	this.title = title;
-    	this.helpContextId = helpContextId;
-		this.headerTitle = headerTitle;
-		message2 = message;
-		this.label = label;
-    	
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        shell.setText(title);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, helpContextId);
-    }
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.TitleAreaDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-		Composite parentComposite = (Composite) super.createDialogArea(parent);
-
-		Composite contents = new Composite(parentComposite, SWT.NONE);
-		contents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-		setTitle(headerTitle);
-		setMessage(message2);
-
-		new Label(contents, SWT.LEFT)
-				.setText(label);
-
-		filenameField = new Text(contents, SWT.SINGLE | SWT.BORDER);
-		if (initialValue != null) {
-			filenameField.setText(initialValue);
-		}
-		filenameField.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent event) {
-				if (event.widget == filenameField) {
-					filename = filenameField.getText().trim();
-					okButton.setEnabled(validateFileType());
-				}
-			}
-		});
-		filenameField.setFocus();
-
-		Dialog.applyDialogFont(parentComposite);
-
-		Point defaultMargins = LayoutConstants.getMargins();
-		GridLayoutFactory.fillDefaults().numColumns(2).margins(
-				defaultMargins.x, defaultMargins.y).generateLayout(contents);
-		
-		return contents;
-	}
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        okButton = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        okButton.setEnabled(false);
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-    }
-
-    /**
-     * Validate the user input for a file type
-     */
-    private boolean validateFileType() {
-        // We need kernel api to validate the extension or a filename
-
-        // check for empty name and extension
-        if (filename.length() == 0) {
-            setErrorMessage(null);
-            return false;
-        }
-
-        // check for empty extension if there is no name
-        int index = filename.lastIndexOf('.');
-        if (index == filename.length() - 1) {
-            if (index == 0 || (index == 1 && filename.charAt(0) == '*')) {
-                setErrorMessage(WorkbenchMessages.FileExtension_extensionEmptyMessage); 
-                return false;
-            }
-        }
-
-        // check for characters before * 
-        // or no other characters
-        // or next chatacter not '.'
-        // or another *
-        index = filename.indexOf('*');
-        if (index > -1) {
-            if (filename.length() == 1) {
-                setErrorMessage(WorkbenchMessages.FileExtension_extensionEmptyMessage); 
-                return false;
-            }
-            if (index != 0 || filename.charAt(1) != '.') {
-                setErrorMessage(WorkbenchMessages.FileExtension_fileNameInvalidMessage);
-                return false;
-            }
-            if (filename.length() > index && filename.indexOf('*', index + 1) != -1) {
-            	setErrorMessage(WorkbenchMessages.FileExtension_fileNameInvalidMessage); 
-            	return false;
-            }
-        }
-
-        setErrorMessage(null);
-        return true;
-    }
-
-    /**
-     * Get the extension.
-     * 
-     * @return the extension
-     */
-    public String getExtension() {
-        // We need kernel api to validate the extension or a filename
-
-        int index = filename.lastIndexOf('.');
-        if (index == -1) {
-			return ""; //$NON-NLS-1$
-		}
-        if (index == filename.length()) {
-			return ""; //$NON-NLS-1$
-		}
-        return filename.substring(index + 1, filename.length());
-    }
-
-    /**
-     * Get the name.
-     * 
-     * @return the name
-     */
-    public String getName() {
-        // We need kernel api to validate the extension or a filename
-
-        int index = filename.lastIndexOf('.');
-        if (index == -1) {
-			return filename;
-		}
-        if (index == 0) {
-			return "*"; //$NON-NLS-1$
-		}
-        return filename.substring(0, index);
-    }
-    
-    /**
-	 * Sets the initial value that should be prepopulated in this dialog.
-	 * 
-	 * @param initialValue
-	 *            the value to be displayed to the user
-	 * @since 3.4
-	 */
-    public void setInitialValue(String initialValue) {
-    	this.initialValue = initialValue;
-    }
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#getDialogBoundsSettings()
-     */
-    protected IDialogSettings getDialogBoundsSettings() {
-        IDialogSettings settings = WorkbenchPlugin.getDefault().getDialogSettings();
-        IDialogSettings section = settings.getSection(DIALOG_SETTINGS_SECTION);
-        if (section == null) section = settings.addNewSection(DIALOG_SETTINGS_SECTION);
-        return section;
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
deleted file mode 100644
index 684bb22..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java
+++ /dev/null
@@ -1,668 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 219273 
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.commands.ActionHandler;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.IPreferencePage;
-import org.eclipse.jface.preference.PreferenceContentProvider;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Menu;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.ActiveShellExpression;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.model.IContributionService;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-import org.eclipse.ui.preferences.IWorkingCopyManager;
-import org.eclipse.ui.preferences.WorkingCopyManager;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * Baseclass for preference dialogs that will show two tabs of preferences -
- * filtered and unfiltered.
- * 
- * @since 3.0
- */
-public abstract class FilteredPreferenceDialog extends PreferenceDialog
-		implements IWorkbenchPreferenceContainer {
-
-	protected class PreferenceFilteredTree extends FilteredTree {
-		/**
-		 * An (optional) additional filter on the TreeViewer.
-		 */
-		private ViewerFilter viewerFilter;
-
-		/**
-		 * Initial title of dialog. This is only used if the additional filter
-		 * provided by the addFilter(ViewerFilter) method is utilized.
-		 */
-		private String cachedTitle;
-
-		/**
-		 * Constructor.
-		 * 
-		 * @param parent
-		 *            parent Composite
-		 * @param treeStyle
-		 *            SWT style bits for Tree
-		 * @param filter
-		 *            the PatternFilter to use for the TreeViewer
-		 */
-		PreferenceFilteredTree(Composite parent, int treeStyle,
-				PatternFilter filter) {
-			super(parent, treeStyle, filter);
-		}
-
-		/**
-		 * Add an additional, optional filter to the viewer. If the filter text
-		 * is cleared, this filter will be removed from the TreeViewer.
-		 * 
-		 * @param filter
-		 */
-		protected void addFilter(ViewerFilter filter) {
-			viewerFilter = filter;
-			getViewer().addFilter(filter);
-			setInitialText(WorkbenchMessages.FilteredTree_FilterMessage);
-
-			if (filterText != null) {
-				setFilterText(WorkbenchMessages.FilteredTree_FilterMessage);
-				textChanged();
-			}
-
-			cachedTitle = getShell().getText();
-			getShell().setText(
-					NLS.bind(
-							WorkbenchMessages.FilteredTree_FilteredDialogTitle,
-							cachedTitle));
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.dialogs.FilteredTree#updateToolbar(boolean)
-		 */
-		protected void updateToolbar(boolean visible) {
-			if (filterToolBar != null) {
-				filterToolBar.getControl().setVisible(
-						viewerFilter != null || visible);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.dialogs.FilteredTree#clearText()
-		 */
-		protected void clearText() {
-			setFilterText(""); //$NON-NLS-1$
-			// remove the filter if text is cleared
-			if (viewerFilter != null) {
-				getViewer().removeFilter(viewerFilter);
-				viewerFilter = null;
-				getShell().setText(cachedTitle);
-			}
-			textChanged();
-		}
-	}
-
-	protected PreferenceFilteredTree filteredTree;
-
-	private Object pageData;
-
-	IWorkingCopyManager workingCopyManager;
-
-	private Collection updateJobs = new ArrayList();
-
-	/**
-	 * The preference page history.
-	 * 
-	 * @since 3.1
-	 */
-	PreferencePageHistory history;
-
-	private Sash sash;
-
-	private IHandlerActivation showViewHandler;
-
-	/**
-	 * Creates a new preference dialog under the control of the given preference
-	 * manager.
-	 * 
-	 * @param parentShell
-	 *            the parent shell
-	 * @param manager
-	 *            the preference manager
-	 */
-	public FilteredPreferenceDialog(Shell parentShell, PreferenceManager manager) {
-		super(parentShell, manager);
-		history = new PreferencePageHistory(this);
-	}
-
-	/**
-	 * Differs from super implementation in that if the node is found but should
-	 * be filtered based on a call to
-	 * <code>WorkbenchActivityHelper.filterItem()</code> then
-	 * <code>null</code> is returned.
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#findNodeMatching(java.lang.String)
-	 */
-	protected IPreferenceNode findNodeMatching(String nodeId) {
-		IPreferenceNode node = super.findNodeMatching(nodeId);
-		if (WorkbenchActivityHelper.filterItem(node)) {
-			return null;
-		}
-		return node;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#createTreeViewer(org.eclipse.swt.widgets.Composite)
-	 */
-	protected TreeViewer createTreeViewer(Composite parent) {
-		int styleBits = SWT.SINGLE;
-		filteredTree = new PreferenceFilteredTree(parent, styleBits,
-				new PreferencePatternFilter());
-		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
-		gd.horizontalIndent = IDialogConstants.HORIZONTAL_MARGIN;
-		filteredTree.setBackground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_LIST_BACKGROUND));
-
-		TreeViewer tree = filteredTree.getViewer();
-
-		setContentAndLabelProviders(tree);
-		tree.setInput(getPreferenceManager());
-
-		// if the tree has only one or zero pages, make the combo area disable
-		if (hasAtMostOnePage(tree)) {
-			Text filterText = filteredTree.getFilterControl();
-			if (filterText != null) {
-				filteredTree.getFilterControl().setEnabled(false);
-			}
-		}
-
-		tree.addFilter(new CapabilityFilter());
-
-		tree.addSelectionChangedListener(new ISelectionChangedListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-			 */
-			public void selectionChanged(SelectionChangedEvent event) {
-				handleTreeSelectionChanged(event);
-			}
-		});
-
-		super.addListeners(tree);
-		return tree;
-	}
-
-	/**
-	 * Return whether or not there are less than two pages.
-	 * 
-	 * @param tree
-	 * @return <code>true</code> if there are less than two pages.
-	 */
-	private boolean hasAtMostOnePage(TreeViewer tree) {
-		ITreeContentProvider contentProvider = (ITreeContentProvider) tree
-				.getContentProvider();
-		Object[] children = contentProvider.getElements(tree.getInput());
-
-		if (children.length <= 1) {
-			if (children.length == 0) {
-				return true;
-			}
-			return !contentProvider.hasChildren(children[0]);
-		}
-		return false;
-	}
-
-	/**
-	 * Set the content and label providers for the treeViewer
-	 * 
-	 * @param treeViewer
-	 */
-	protected void setContentAndLabelProviders(TreeViewer treeViewer) {
-		treeViewer.setLabelProvider(new PreferenceBoldLabelProvider(
-				filteredTree));
-		IContributionService cs = (IContributionService) Workbench
-				.getInstance().getActiveWorkbenchWindow().getService(
-						IContributionService.class);
-		treeViewer.setComparator(cs.getComparatorFor(getContributionType()));
-		treeViewer.setContentProvider(new PreferenceContentProvider());
-	}
-
-	/**
-	 * Return the contributionType (used by the IContributionService).
-	 * 
-	 * Override this with a more specific contribution type as required.
-	 * 
-	 * @return a string, the contributionType
-	 */
-	protected String getContributionType() {
-		return IContributionService.TYPE_PREFERENCE;
-	}
-
-	/**
-	 * A selection has been made in the tree.
-	 * 
-	 * @param event
-	 *            SelectionChangedEvent
-	 */
-	protected void handleTreeSelectionChanged(SelectionChangedEvent event) {
-		// Do nothing by default
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#createTreeAreaContents(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createTreeAreaContents(Composite parent) {
-		Composite leftArea = new Composite(parent, SWT.NONE);
-		leftArea.setBackground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_LIST_BACKGROUND));
-		leftArea.setFont(parent.getFont());
-		GridLayout leftLayout = new GridLayout();
-		leftLayout.numColumns = 1;
-		leftLayout.marginHeight = 0;
-		leftLayout.marginTop = IDialogConstants.VERTICAL_MARGIN;
-		leftLayout.marginWidth = 0;
-		leftLayout.marginLeft = IDialogConstants.HORIZONTAL_MARGIN;
-		leftLayout.horizontalSpacing = 0;
-		leftLayout.verticalSpacing = 0;
-		leftArea.setLayout(leftLayout);
-
-		// Build the tree an put it into the composite.
-		TreeViewer viewer = createTreeViewer(leftArea);
-		setTreeViewer(viewer);
-
-		updateTreeFont(JFaceResources.getDialogFont());
-		GridData viewerData = new GridData(GridData.FILL_BOTH
-				| GridData.GRAB_VERTICAL);
-		viewer.getControl().getParent().setLayoutData(viewerData);
-
-		layoutTreeAreaControl(leftArea);
-
-		return leftArea;
-	}
-
-	/**
-	 * Show only the supplied ids.
-	 * 
-	 * @param filteredIds
-	 */
-	public void showOnly(String[] filteredIds) {
-		filteredTree.addFilter(new PreferenceNodeFilter(filteredIds));
-	}
-
-	/**
-	 * Set the data to be applied to a page after it is created.
-	 * 
-	 * @param pageData
-	 *            Object
-	 */
-	public void setPageData(Object pageData) {
-		this.pageData = pageData;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#createPage(org.eclipse.jface.preference.IPreferenceNode)
-	 */
-	protected void createPage(IPreferenceNode node) {
-
-		super.createPage(node);
-		if (this.pageData == null) {
-			return;
-		}
-		// Apply the data if it has been set.
-		IPreferencePage page = node.getPage();
-		if (page instanceof PreferencePage) {
-			((PreferencePage) page).applyData(this.pageData);
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#getCurrentPage()
-	 */
-	public IPreferencePage getCurrentPage() {
-		return super.getCurrentPage();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.IWorkbenchPreferenceContainer#openPage(java.lang.String,
-	 *      java.lang.Object)
-	 */
-	public boolean openPage(String pageId, Object data) {
-		setPageData(data);
-		setCurrentPageId(pageId);
-		IPreferencePage page = getCurrentPage();
-		if (page instanceof PreferencePage) {
-			((PreferencePage) page).applyData(data);
-		}
-		return true;
-	}
-
-	/**
-	 * Selects the current page based on the given preference page identifier.
-	 * If no node can be found, then nothing will change.
-	 * 
-	 * @param preferencePageId
-	 *            The preference page identifier to select; should not be
-	 *            <code>null</code>.
-	 */
-	public final void setCurrentPageId(final String preferencePageId) {
-		final IPreferenceNode node = findNodeMatching(preferencePageId);
-		if (node != null) {
-			getTreeViewer().setSelection(new StructuredSelection(node));
-			showPage(node);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.IWorkbenchPreferenceContainer#getWorkingCopyManager()
-	 */
-	public IWorkingCopyManager getWorkingCopyManager() {
-		if (workingCopyManager == null) {
-			workingCopyManager = new WorkingCopyManager();
-		}
-		return workingCopyManager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-	 */
-	protected void okPressed() {
-		super.okPressed();
-
-		if (getReturnCode() == FAILED) {
-			return;
-		}
-
-		if (workingCopyManager != null) {
-			try {
-				workingCopyManager.applyChanges();
-			} catch (BackingStoreException e) {
-				String msg = e.getMessage();
-				if (msg == null) {
-					msg = WorkbenchMessages.FilteredPreferenceDialog_PreferenceSaveFailed;
-				}
-				StatusUtil
-						.handleStatus(
-								WorkbenchMessages.PreferencesExportDialog_ErrorDialogTitle
-										+ ": " + msg, e, StatusManager.SHOW, //$NON-NLS-1$
-								getShell());
-			}
-		}
-
-		// Run the update jobs
-		Iterator updateIterator = updateJobs.iterator();
-		while (updateIterator.hasNext()) {
-			((Job) updateIterator.next()).schedule();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.IWorkbenchPreferenceContainer#registerUpdateJob(org.eclipse.core.runtime.jobs.Job)
-	 */
-	public void registerUpdateJob(Job job) {
-		updateJobs.add(job);
-	}
-
-	/**
-	 * Get the toolbar for the container
-	 * 
-	 * @return Control
-	 */
-	Control getContainerToolBar(Composite composite) {
-
-		final ToolBarManager historyManager = new ToolBarManager(SWT.HORIZONTAL
-				| SWT.FLAT);
-		historyManager.createControl(composite);
-
-		history.createHistoryControls(historyManager.getControl(),
-				historyManager);
-
-		Action popupMenuAction = new Action() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.action.Action#getImageDescriptor()
-			 */
-			public ImageDescriptor getImageDescriptor() {
-				return WorkbenchImages
-						.getImageDescriptor(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU);
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.action.Action#run()
-			 */
-			public void run() {
-				MenuManager manager = new MenuManager();
-				manager.add(new Action() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.jface.action.Action#run()
-					 */
-					public void run() {
-						
-						sash.addFocusListener(new FocusAdapter() {
-							public void focusGained(FocusEvent e) {
-								sash.setBackground(sash.getDisplay()
-										.getSystemColor(
-												SWT.COLOR_LIST_SELECTION));
-							}
-
-							public void focusLost(FocusEvent e) {
-								sash.setBackground(sash.getDisplay()
-										.getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-							}
-						});
-						sash.setFocus();
-					}
-
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.jface.action.Action#getText()
-					 */
-					public String getText() {
-						return WorkbenchMessages.FilteredPreferenceDialog_Resize;
-					}
-				});
-				Menu menu = manager.createContextMenu(getShell());
-				Rectangle bounds = historyManager.getControl().getBounds();
-				Point topLeft = new Point(bounds.x + bounds.width, bounds.y + bounds.height);
-				topLeft = historyManager.getControl().toDisplay(topLeft);
-				menu.setLocation(topLeft.x, topLeft.y);
-				menu.setVisible(true);
-			}
-		};
-		historyManager.add(popupMenuAction);
-		IHandlerService service = (IHandlerService) PlatformUI.getWorkbench()
-				.getService(IHandlerService.class);
-		showViewHandler = service
-				.activateHandler(
-						"org.eclipse.ui.window.showViewMenu", //$NON-NLS-1$
-						new ActionHandler(popupMenuAction),
-						new ActiveShellExpression(getShell()));
-
-		historyManager.update(false);
-
-		return historyManager.getControl();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#showPage(org.eclipse.jface.preference.IPreferenceNode)
-	 */
-	protected boolean showPage(IPreferenceNode node) {
-		final boolean success = super.showPage(node);
-		if (success) {
-			history.addHistoryEntry(new PreferenceHistoryEntry(node.getId(),
-					node.getLabelText(), null));
-		}
-		return success;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		if (showViewHandler != null) {
-			IHandlerService service = (IHandlerService) PlatformUI
-					.getWorkbench().getService(IHandlerService.class);
-			service.deactivateHandler(showViewHandler);
-			showViewHandler.getHandler().dispose();
-			showViewHandler = null;
-		}
-		history.dispose();
-		return super.close();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#createTitleArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Composite createTitleArea(Composite parent) {
-
-		GridLayout parentLayout = (GridLayout) parent.getLayout();
-		parentLayout.numColumns = 2;
-		parentLayout.marginHeight = 0;
-		parentLayout.marginTop = IDialogConstants.VERTICAL_MARGIN;
-		parent.setLayout(parentLayout);
-
-		Composite titleComposite = super.createTitleArea(parent);
-
-		Composite toolbarArea = new Composite(parent, SWT.NONE);
-		GridLayout toolbarLayout = new GridLayout();
-		toolbarLayout.marginHeight = 0;
-		toolbarLayout.verticalSpacing = 0;
-		toolbarArea.setLayout(toolbarLayout);
-		toolbarArea.setLayoutData(new GridData(SWT.END, SWT.FILL, false, true));
-		Control topBar = getContainerToolBar(toolbarArea);
-		topBar.setLayoutData(new GridData(SWT.END, SWT.FILL, false, true));
-
-		return titleComposite;
-	}
-
-	protected void selectSavedItem() {
-		getTreeViewer().setInput(getPreferenceManager());
-		super.selectSavedItem();
-		if (getTreeViewer().getTree().getItemCount() > 1) {
-			// unfortunately super will force focus to the list but we want the
-			// type ahead combo to get it.
-			Text filterText = filteredTree.getFilterControl();
-			if (filterText != null) {
-				filterText.setFocus();
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#updateTreeFont(org.eclipse.swt.graphics.Font)
-	 */
-	protected void updateTreeFont(Font dialogFont) {
-		applyDialogFont(filteredTree, dialogFont);
-		filteredTree.layout(true);
-	}
-
-	/**
-	 * Apply the dialog font to the control and it's children.
-	 * 
-	 * @param control
-	 * @param dialogFont
-	 */
-	private void applyDialogFont(Control control, Font dialogFont) {
-		control.setFont(dialogFont);
-		if (control instanceof Composite) {
-			Control[] children = ((Composite) control).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				applyDialogFont(children[i], dialogFont);
-			}
-		}
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.PreferenceDialog#createSash(org.eclipse.swt.widgets.Composite, org.eclipse.swt.widgets.Control)
-	 */
-	protected Sash createSash(Composite composite, Control rightControl) {
-		sash = super.createSash(composite, rightControl);
-		return sash;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java
deleted file mode 100644
index 86c8a8b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/IPropertyPageContributor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 223808 
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.ui.internal.IObjectContributor;
-
-/**
- * Implement this interface in order to register property
- * pages for a given object. During property dialog building
- * sequence, all property page contributors for a given object
- * are given a chance to add their pages.
- */
-public interface IPropertyPageContributor extends IObjectContributor {
-    /**
-     * Implement this method to add an instance of PropertyPage class to the
-     * property page manager.
-     * @param manager the contributor manager onto which to contribute the
-     * property page.
-     * @param object the type for which page should be contributed. 
-     * @return true the page that was added, <code>null</code> if no page was added.
-     */
-    public PreferenceNode contributePropertyPage(PropertyPageManager manager,
-            Object object);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java
deleted file mode 100644
index 7046db2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportPage.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-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.IWizardNode;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-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.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.activities.ITriggerPoint;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * Abstract wizard page class from which an import or export wizard can be chosen.
- * 
- * @since 3.2
- *
- */
-public abstract class ImportExportPage extends WorkbenchWizardSelectionPage{
-    protected static final String DIALOG_SETTING_SECTION_NAME = "ImportExportPage."; //$NON-NLS-1$
-	
-    // tree viewer of wizard selections
-    private TreeViewer treeViewer;
-    
-	/*
-	 * Class to create a control that shows a categorized tree of wizard types.
-	 */
-	protected class CategorizedWizardSelectionTree {
-		private final static int SIZING_LISTS_HEIGHT = 200;
-		
-		private IWizardCategory wizardCategories;
-		private String message;
-		private TreeViewer viewer;
-
-		/**
-		 * Constructor for CategorizedWizardSelectionTree
-		 * 
-		 * @param categories root wizard category for the wizard type
-		 * @param msg message describing what the user should choose from the tree.
-		 */
-		protected CategorizedWizardSelectionTree(IWizardCategory categories, String msg){
-			this.wizardCategories = categories;
-			this.message = msg;
-		}
-		
-		/**
-		 * Create the tree viewer and a message describing what the user should choose
-		 * from the tree.
-		 * 
-		 * @param parent Composite on which the tree viewer is to be created
-		 * @return Comoposite with all widgets
-		 */
-		protected Composite createControl(Composite parent){
-	        Font font = parent.getFont();
-
-	        // create composite for page.
-	        Composite outerContainer = new Composite(parent, SWT.NONE);
-	        outerContainer.setLayout(new GridLayout());
-	        outerContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
-	        outerContainer.setFont(font);
-
-	        Label messageLabel = new Label(outerContainer, SWT.NONE);
-	        if (message != null) {
-				messageLabel.setText(message);
-			}
-	        messageLabel.setFont(font);
-
-	        createFilteredTree(outerContainer);
-	        layoutTopControl(viewer.getControl());
-
-	        return outerContainer;
-		}
-		
-		/**
-		 * Create the categorized tree viewer.
-		 * 
-		 * @param parent
-		 */
-		private void createFilteredTree(Composite parent){        
-			// Create a FilteredTree for the categories and wizards
-			FilteredTree filteredTree = new FilteredTree(parent, SWT.SINGLE | SWT.H_SCROLL
-	                | SWT.V_SCROLL | SWT.BORDER, new WizardPatternFilter());
-	        viewer = filteredTree.getViewer();
-	        filteredTree.setFont(parent.getFont());
-
-	        viewer.setContentProvider(new WizardContentProvider());
-	        viewer.setLabelProvider(new WorkbenchLabelProvider());
-	        viewer.setComparator(DataTransferWizardCollectionComparator.INSTANCE);
-	        
-	        ArrayList inputArray = new ArrayList();
-	        boolean expandTop = false;
-
-	        if (wizardCategories != null) {
-	            if (wizardCategories.getParent() == null) {
-	                IWizardCategory [] children = wizardCategories.getCategories();
-	                for (int i = 0; i < children.length; i++) {
-                		inputArray.add(children[i]);
-	                }
-	            } else {
-	                expandTop = true;
-	                inputArray.add(wizardCategories);
-	            }
-	        }
-
-	        // ensure the category is expanded.  If there is a remembered expansion it will be set later.
-	        if (expandTop) {
-				viewer.setAutoExpandLevel(2);
-			}
-
-	        AdaptableList input = new AdaptableList(inputArray);
-	        
-	        // filter wizard list according to capabilities that are enabled
-	        viewer.addFilter(new WizardActivityFilter());
-	        
-	        viewer.setInput(input);
-		}
-
-		/**
-		 * 
-		 * @return the categorized tree viewer
-		 */
-		protected TreeViewer getViewer(){
-			return viewer;
-		}
-
-		/**
-		 * Layout for the given control.
-		 * 
-		 * @param control
-		 */
-	    private void layoutTopControl(Control control) {
-	        GridData data = new GridData(GridData.FILL_BOTH);
-
-	        int availableRows = DialogUtil.availableRows(control.getParent());
-
-	        //Only give a height hint if the dialog is going to be too small
-	        if (availableRows > 50) {
-	            data.heightHint = SIZING_LISTS_HEIGHT;
-	        } else {
-	            data.heightHint = availableRows * 3;
-	        }
-
-	        control.setLayoutData(data);
-	    }
-	}
-	
-	/**
-	 * Constructor for import/export wizard page.
-	 * 
-	 * @param aWorkbench current workbench
-	 * @param currentSelection current selection
-	 */
-	protected ImportExportPage(IWorkbench aWorkbench, IStructuredSelection currentSelection){
-		super("importExportPage", aWorkbench, currentSelection, null, null);	//$NON-NLS-1$
-		setTitle(WorkbenchMessages.Select);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createControl(Composite parent) {
-	    Font font = parent.getFont();
-	
-	    // create composite for page.
-	    Composite outerContainer = new Composite(parent, SWT.NONE);
-	    outerContainer.setLayout(new GridLayout());
-	    outerContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
-	    outerContainer.setFont(font);
-
-	    Composite comp = createTreeViewer(outerContainer);
-	    
-		Dialog.applyDialogFont(comp);
-		
-	    restoreWidgetValues();
-	
-	    setControl(outerContainer);	
-	    
-	   initialize();
-	}
-
-	/**
-	 * Create the tree viewer from which a wizard is selected.
-	 */
-    protected abstract Composite createTreeViewer(Composite parent);
-    
-    /**
-     * Method to call when an item in one of the lists is double-clicked.
-     * Shows the first page of the selected wizard or expands a collapsed
-     * tree.
-     * @param event
-     */
-    protected void treeDoubleClicked(DoubleClickEvent event){
-    	ISelection selection = event.getViewer().getSelection();
-	    IStructuredSelection ss = (IStructuredSelection) selection;
-    	listSelectionChanged(ss);
-		
-		Object element = ss.getFirstElement();
-		TreeViewer v = (TreeViewer)event.getViewer();
-		if (v.isExpandable(element)) {
-		    v.setExpandedState(element, !v.getExpandedState(element));
-		} else if (element instanceof WorkbenchWizardElement) {
-			if (canFlipToNextPage()) {
-				getContainer().showPage(getNextPage());
-			}
-		}    	
-        getContainer().showPage(getNextPage());   			
-    }
-    
-    /*
-     * Update the wizard's message based on the given (selected) wizard element.
-     */
-    private void updateSelectedNode(WorkbenchWizardElement wizardElement){
-        setErrorMessage(null);
-        if (wizardElement == null) {
-        	updateMessage();
-            setSelectedNode(null);
-            return;
-        }
-
-        setSelectedNode(createWizardNode(wizardElement));
-        setMessage(wizardElement.getDescription()); 
-    }
-    
-    /*
-     * Update the wizard's message based on the currently selected tab
-     * and the selected wizard on that tab.
-     */
-    protected void updateMessage(){
-    	TreeViewer viewer = getTreeViewer();
-    	if (viewer != null){
-    		ISelection selection = viewer.getSelection();
-            IStructuredSelection ss = (IStructuredSelection) selection;
-            Object sel = ss.getFirstElement();
-            if (sel instanceof WorkbenchWizardElement){
-               	updateSelectedNode((WorkbenchWizardElement)sel);
-            }
-            else{
-            	setSelectedNode(null);
-            }
-    	} else {
-			setMessage(null);
-		}
-    }
-    
-    /*
-     * Method to call whenever the selection in one of the lists has changed.
-     * Updates the wizard's message to relect the description of the currently 
-     * selected wizard.
-     */
-    protected void listSelectionChanged(ISelection selection){
-        setErrorMessage(null);
-        IStructuredSelection ss = (IStructuredSelection) selection;
-        Object sel = ss.getFirstElement();
-        if (sel instanceof WorkbenchWizardElement){
-	        WorkbenchWizardElement currentWizardSelection = (WorkbenchWizardElement) sel;        
-	        updateSelectedNode(currentWizardSelection);
-        } else {
-			updateSelectedNode(null);
-		}
-    }
-
-    /*
-     * Create a wizard node given a wizard's descriptor.
-     */
-	private IWizardNode createWizardNode(IWizardDescriptor element) {
-        return new WorkbenchWizardNode(this, element) {
-            public IWorkbenchWizard createWizard() throws CoreException {
-                return wizardElement.createWizard();
-            }
-        };
-    }
-    
-    /**
-     * Uses the dialog store to restore widget values to the values that they
-     * held last time this wizard was used to completion.
-     */
-    protected void restoreWidgetValues() {
-        updateMessage();
-    }
-
-    /**
-     * Expands the wizard categories in this page's category viewer that were
-     * expanded last time this page was used. If a category that was previously
-     * expanded no longer exists then it is ignored.
-     */
-    protected void expandPreviouslyExpandedCategories(String setting, IWizardCategory wizardCategories, TreeViewer viewer) {
-        String[] expandedCategoryPaths =  getDialogSettings()
-                .getArray(setting);
-        if (expandedCategoryPaths == null || expandedCategoryPaths.length == 0) {
-			return;
-		}
-
-        List categoriesToExpand = new ArrayList(expandedCategoryPaths.length);
-
-        if (wizardCategories != null) {
-            for (int i = 0; i < expandedCategoryPaths.length; i++) {
-                IWizardCategory category = wizardCategories
-                        .findCategory(new Path(expandedCategoryPaths[i]));
-                if (category != null) {
-					categoriesToExpand.add(category);
-				}
-            }
-        }
-
-        if (!categoriesToExpand.isEmpty()) {
-			viewer.setExpandedElements(categoriesToExpand.toArray());
-		}
-
-    }
-
-    /**
-     * Selects the wizard category and wizard in this page that were selected
-     * last time this page was used. If a category or wizard that was
-     * previously selected no longer exists then it is ignored.
-     */
-    protected void selectPreviouslySelected(String setting, IWizardCategory wizardCategories, final TreeViewer viewer) {
-        String selectedId = getDialogSettings().get(setting);
-        if (selectedId == null) {
-			return;
-		}
-
-        if (wizardCategories == null) {
-			return;
-		}
-
-        Object selected = wizardCategories.findCategory(new Path(
-                selectedId));
-
-        if (selected == null) {
-            selected = wizardCategories.findWizard(selectedId);
-
-            if (selected == null) {
-				// if we cant find either a category or a wizard, abort.
-                return;
-			}
-        }
-
-        viewer.setSelection(new StructuredSelection(selected), true);
-    }
- 
-    /**
-     * Stores the collection of currently-expanded categories in this page's
-     * dialog store, in order to recreate this page's state in the next
-     * instance of this page.
-     */
-    protected void storeExpandedCategories(String setting, TreeViewer viewer) {
-        Object[] expandedElements = viewer.getExpandedElements();
-        List expandedElementPaths = new ArrayList(expandedElements.length);
-        for (int i = 0; i < expandedElements.length; ++i) {
-            if (expandedElements[i] instanceof IWizardCategory) {
-				expandedElementPaths
-                        .add(((IWizardCategory) expandedElements[i])
-                                .getPath().toString());
-			}
-        }
-        getDialogSettings().put(setting,
-                (String[]) expandedElementPaths
-                        .toArray(new String[expandedElementPaths.size()]));
-    }
-
-    /**
-     * Stores the currently-selected element in this page's dialog store, in
-     * order to recreate this page's state in the next instance of this page.
-     */
-    protected void storeSelectedCategoryAndWizard(String setting, TreeViewer viewer) {
-        Object selected = ((IStructuredSelection) viewer
-                .getSelection()).getFirstElement();
-
-        if (selected != null) {
-            if (selected instanceof IWizardCategory) {
-				getDialogSettings().put(setting,
-                        ((IWizardCategory) selected).getPath()
-                                .toString());
-			} else {
-				// else its a wizard
-            	getDialogSettings().put(setting,
-                        ((IWizardDescriptor) selected).getId());
-			}
-        }
-    }
-    
-    /**
-     * When Finish is pressed, write widget values to the dialog store so
-     * that they will persist into the next invocation of the wizard page.
-     *
-     */
-    public void saveWidgetValues(){
-    	// do nothing by default - subclasses should override
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardPage#getNextPage()
-     */
-    public IWizardPage getNextPage() { 
-    	ITriggerPoint triggerPoint = getTriggerPoint();
-        
-        if (triggerPoint == null || WorkbenchActivityHelper.allowUseOf(triggerPoint, getSelectedNode())) {
-			return super.getNextPage();
-		}
-        return null;
-    }
-
-    /** 
-     * Get the trigger point for the wizard type, if one exists.
-     * 
-     * @return the wizard's trigger point
-     */
-    protected ITriggerPoint getTriggerPoint(){
-    	return null;	// default implementation
-    }
-    
-    /**
-     * Set the tree viewer that is used for this wizard selection page.
-     * 
-     * @param viewer
-     */
-    protected void setTreeViewer(TreeViewer viewer){
-    	treeViewer = viewer;
-    }
-    
-    /**
-     * Get the tree viewer that is used for this wizard selection page.
-     * 
-     * @return tree viewer used for this wizard's selection page
-     */
-    protected TreeViewer getTreeViewer(){
-    	return treeViewer;
-    }
-    
-    /**
-     * Perform any initialization of the wizard page that needs to be done 
-     * after widgets are created and main control is set.
-     */
-    protected void initialize(){
-    	// do nothing by default
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportWizard.java
deleted file mode 100644
index bd7ac91..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportExportWizard.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * The import/export wizard allows users to choose whether to 
- * show the import wizard or the export wizard.
- * 
- * @since 3.2
- *
- */
-public class ImportExportWizard extends Wizard {
-	/**
-	 * Constant used to to specify to the import/export wizard
-	 * which page should initially be shown. 
-	 */
-	public static final String IMPORT = "import";	//$NON-NLS-1$
-	/**
-	 * Constant used to to specify to the import/export wizard
-	 * which page should initially be shown. 
-	 */
-	public static final String EXPORT = "export";	//$NON-NLS-1$
-		
-    private IWorkbench workbench;
-    private IStructuredSelection selection;
-    private ImportExportPage importExportPage;
-    private String page = null;
-    
-    /**
-     * Create an import/export wizard and show the page 
-     * with the given id.
-     * 
-     * @param pageId
-     */
-    public ImportExportWizard(String pageId){
-    	page = pageId;
-    }
-    
-    /**
-     * Subclasses must implement this <code>IWizard</code> method 
-     * to perform any special finish processing for their wizard.
-     */
-    public boolean performFinish() {
-    	importExportPage.saveWidgetValues();
-        return true;
-    }
-
-    /**
-     * Creates the wizard's pages lazily.
-     */
-    public void addPages() {
-    	if (page.equals(IMPORT)) {
-			importExportPage = new ImportPage(this.workbench, this.selection);
-		} else if (page.equals(EXPORT)) {
-			importExportPage = new ExportPage(this.workbench, this.selection);
-		}
-        if (importExportPage != null) {
-			addPage(importExportPage);
-		}
-    }
-
-    /**
-     * Initializes the wizard.
-     * 
-     * @param aWorkbench the workbench
-     * @param currentSelection the current selectio
-     */
-    public void init(IWorkbench aWorkbench,
-            IStructuredSelection currentSelection) {
-        this.workbench = aWorkbench;
-        this.selection = currentSelection;
-
-        ImageDescriptor wizardBannerImage = null;
-        if (IMPORT.equals(page)){
-        	wizardBannerImage = WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_IMPORT_WIZ);
-        	setWindowTitle(WorkbenchMessages.ImportWizard_title);
-        }
-        else if (EXPORT.equals(page)){
-        	wizardBannerImage = WorkbenchImages
-                    .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_WIZ);
-        	setWindowTitle(WorkbenchMessages.ExportWizard_title);
-        }
-        if (wizardBannerImage != null) {
-			setDefaultPageImageDescriptor(wizardBannerImage);
-		}
-        setNeedsProgressMonitor(true);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportPage.java
deleted file mode 100644
index 3194b30..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportPage.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-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.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.activities.ITriggerPoint;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
-import org.eclipse.ui.wizards.IWizardCategory;
-
-/**
- * Wizard page class from which an import wizard is selected.
- * 
- * @since 3.2
- *
- */
-public class ImportPage extends ImportExportPage {
-    private static final String STORE_SELECTED_IMPORT_WIZARD_ID = DIALOG_SETTING_SECTION_NAME
-    		+ "STORE_SELECTED_IMPORT_WIZARD_ID"; //$NON-NLS-1$
-
-    private static final String STORE_EXPANDED_IMPORT_CATEGORIES = DIALOG_SETTING_SECTION_NAME
-			+ "STORE_EXPANDED_IMPORT_CATEGORIES";	//$NON-NLS-1$    
-
-    protected CategorizedWizardSelectionTree importTree;
-	
-    /**
-     * Constructor for import wizard selection page.
-     * 
-     * @param aWorkbench
-     * @param currentSelection
-     */
-	public ImportPage(IWorkbench aWorkbench,
-			IStructuredSelection currentSelection) {
-		super(aWorkbench, currentSelection);
-	}
-
-	protected void initialize() {
-        workbench.getHelpSystem().setHelp(
-				getControl(),
-				IWorkbenchHelpContextIds.IMPORT_WIZARD_SELECTION_WIZARD_PAGE); 		
-	}
-
-	protected Composite createTreeViewer(Composite parent) {
-		IWizardCategory root = WorkbenchPlugin.getDefault()
-			.getImportWizardRegistry().getRootCategory();
-		importTree = new CategorizedWizardSelectionTree(
-				root, WorkbenchMessages.ImportWizard_selectSource);
-		Composite importComp = importTree.createControl(parent);
-		importTree.getViewer().addSelectionChangedListener(new ISelectionChangedListener(){
-			public void selectionChanged(SelectionChangedEvent event) {
-				listSelectionChanged(event.getSelection());    	       			
-			}
-		});
-		importTree.getViewer().addDoubleClickListener(new IDoubleClickListener(){
-	    	public void doubleClick(DoubleClickEvent event) {
-	    		treeDoubleClicked(event);
-	    	}
-	    });
-		setTreeViewer(importTree.getViewer());
-		return importComp;
-	}
-	
-	public void saveWidgetValues(){
-    	storeExpandedCategories(STORE_EXPANDED_IMPORT_CATEGORIES, importTree.getViewer());
-        storeSelectedCategoryAndWizard(STORE_SELECTED_IMPORT_WIZARD_ID, importTree.getViewer());   
-        super.saveWidgetValues();
-	}
-	
-	protected void restoreWidgetValues(){
-    	IWizardCategory importRoot = WorkbenchPlugin.getDefault().getImportWizardRegistry().getRootCategory();
-        expandPreviouslyExpandedCategories(STORE_EXPANDED_IMPORT_CATEGORIES, importRoot,importTree.getViewer());
-        selectPreviouslySelected(STORE_SELECTED_IMPORT_WIZARD_ID, importRoot, importTree.getViewer());
-        super.restoreWidgetValues();
-	}
-
-	protected ITriggerPoint getTriggerPoint(){
-		return getWorkbench().getActivitySupport()
-    		.getTriggerPointManager().getTriggerPoint(WorkbenchTriggerPoints.IMPORT_WIZARDS);		
-	}
-	
-	protected void updateMessage(){
-		setMessage(WorkbenchMessages.ImportExportPage_chooseImportSource);
-		super.updateMessage();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportWizard.java
deleted file mode 100644
index ee61b62..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ImportWizard.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
-import org.eclipse.ui.internal.registry.WizardsRegistryReader;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.wizards.IWizardCategory;
-
-/**
- * The import wizard allows the user to choose which nested import wizard to
- * run. The set of available wizards comes from the import wizard extension
- * point.
- */
-public class ImportWizard extends Wizard {
-
-    //the list selection page
-    class SelectionPage extends WorkbenchWizardListSelectionPage {
-        SelectionPage(IWorkbench w, IStructuredSelection ss, AdaptableList e,
-                String s) {
-            super(w, ss, e, s, WorkbenchTriggerPoints.IMPORT_WIZARDS);
-        }
-
-        public void createControl(Composite parent) {
-            super.createControl(parent);
-            getWorkbench()
-					.getHelpSystem()
-					.setHelp(
-							getControl(),
-							IWorkbenchHelpContextIds.IMPORT_WIZARD_SELECTION_WIZARD_PAGE);
-        }
-
-        public IWizardNode createWizardNode(WorkbenchWizardElement element) {
-            return new WorkbenchWizardNode(this, element) {
-                public IWorkbenchWizard createWizard() throws CoreException {
-                    return wizardElement.createWizard();
-                }
-            };
-        }
-        
-        
-    }
-
-    private IStructuredSelection selection;
-
-    private IWorkbench workbench;
-
-    /**
-     * Creates the wizard's pages lazily.
-     */
-    public void addPages() {
-        addPage(new SelectionPage(this.workbench, this.selection,
-                getAvailableImportWizards(), WorkbenchMessages.ImportWizard_selectSource)); 
-    }
-
-    /**
-     * Returns the import wizards that are available for invocation.
-     */
-    protected AdaptableList getAvailableImportWizards() {
-       	// TODO: imports are still flat - we need to get at the flat list. All
-		// wizards will be in the "other" category.
-		IWizardCategory root = WorkbenchPlugin.getDefault()
-				.getImportWizardRegistry().getRootCategory();
-		WizardCollectionElement otherCategory = (WizardCollectionElement) root
-				.findCategory(new Path(
-						WizardsRegistryReader.UNCATEGORIZED_WIZARD_CATEGORY));
-		if (otherCategory == null) {
-			return new AdaptableList();
-		}
-		return otherCategory.getWizardAdaptableList();
-    }
-
-    /**
-     * Initializes the wizard.
-     * 
-     * @param aWorkbench the workbench
-     * @param currentSelection the current selection
-     */
-    public void init(IWorkbench aWorkbench,
-            IStructuredSelection currentSelection) {
-        this.workbench = aWorkbench;
-        this.selection = currentSelection;
-
-        setWindowTitle(WorkbenchMessages.ImportWizard_title); 
-        setDefaultPageImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_IMPORT_WIZ));
-        setNeedsProgressMonitor(true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizard#performFinish()
-     */
-    public boolean performFinish() {
-        ((SelectionPage) getPages()[0]).saveWidgetValues();
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java
deleted file mode 100644
index 81dd421..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizard.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * The new wizard is responsible for allowing the user to choose which new
- * (nested) wizard to run. The set of available new wizards comes from the new
- * extension point.
- */
-public class NewWizard extends Wizard {
-    private static final String CATEGORY_SEPARATOR = "/"; //$NON-NLS-1$
-
-    private String categoryId = null;
-
-    private NewWizardSelectionPage mainPage;
-
-    private boolean projectsOnly = false;
-
-    private IStructuredSelection selection;
-
-    private IWorkbench workbench;
-
-    /**
-     * Create the wizard pages
-     */
-    public void addPages() {
-        IWizardCategory root = WorkbenchPlugin.getDefault().getNewWizardRegistry().getRootCategory();
-        IWizardDescriptor [] primary = WorkbenchPlugin.getDefault().getNewWizardRegistry().getPrimaryWizards();
-
-        if (categoryId != null) {
-            IWizardCategory categories = root;
-            StringTokenizer familyTokenizer = new StringTokenizer(categoryId,
-                    CATEGORY_SEPARATOR);
-            while (familyTokenizer.hasMoreElements()) {
-                categories = getChildWithID(categories, familyTokenizer
-                        .nextToken());
-                if (categories == null) {
-					break;
-				}
-            }
-            if (categories != null) {
-				root = categories;
-			}
-        }
-
-        mainPage = new NewWizardSelectionPage(workbench, selection, root,
-				primary, projectsOnly);
-        addPage(mainPage);
-    }
-
-    /**
-     * Returns the id of the category of wizards to show or <code>null</code>
-     * to show all categories. If no entries can be found with this id then all
-     * categories are shown.
-     * 
-     * @return String or <code>null</code>.
-     */
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    /**
-     * Returns the child collection element for the given id
-     */
-    private IWizardCategory getChildWithID(
-            IWizardCategory parent, String id) {
-        IWizardCategory [] children = parent.getCategories();
-        for (int i = 0; i < children.length; ++i) {
-        	IWizardCategory currentChild = children[i];
-            if (currentChild.getId().equals(id)) {
-				return currentChild;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Lazily create the wizards pages
-     * @param aWorkbench the workbench
-     * @param currentSelection the current selection
-     */
-    public void init(IWorkbench aWorkbench,
-            IStructuredSelection currentSelection) {
-        this.workbench = aWorkbench;
-        this.selection = currentSelection;
-
-        if (projectsOnly) {
-			setWindowTitle(WorkbenchMessages.NewProject_title);
-		} else {
-			setWindowTitle(WorkbenchMessages.NewWizard_title);
-		} 
-        setDefaultPageImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_NEW_WIZ));
-        setNeedsProgressMonitor(true);
-    }
-
-    /**
-     * The user has pressed Finish. Instruct self's pages to finish, and answer
-     * a boolean indicating success.
-     * 
-     * @return boolean
-     */
-    public boolean performFinish() {
-        //save our selection state
-        mainPage.saveWidgetValues();
-        // if we're finishing from the main page then perform finish on the selected wizard.
-        if (getContainer().getCurrentPage() == mainPage) {
-			if (mainPage.canFinishEarly()) {
-				IWizard wizard = mainPage.getSelectedNode().getWizard();
-				wizard.setContainer(getContainer());
-				return wizard.performFinish();
-			}
-		}
-        return true;
-    }
-
-    /**
-     * Sets the id of the category of wizards to show or <code>null</code> to
-     * show all categories. If no entries can be found with this id then all
-     * categories are shown.
-     * 
-     * @param id may be <code>null</code>.
-     */
-    public void setCategoryId(String id) {
-        categoryId = id;
-    }
-
-    /**
-     * Sets the projects only flag. If <code>true</code> only projects will
-     * be shown in this wizard.
-     * @param b if only projects should be shown
-     */
-    public void setProjectsOnly(boolean b) {
-        projectsOnly = b;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizard#canFinish()
-     */
-    public boolean canFinish() {
-         // we can finish if the first page is current and the the page can finish early.
-	    	if (getContainer().getCurrentPage() == mainPage) {
-	    		if (mainPage.canFinishEarly()) {
-					return true;
-				}
-	    	}
-	    	return super.canFinish();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java
deleted file mode 100644
index 774f3c5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardCollectionComparator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.IBasicPropertyConstants;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.ui.internal.registry.WizardsRegistryReader;
-
-/**
- *	A Viewer element sorter that sorts Elements by their name attribute.
- *	Note that capitalization differences are not considered by this
- *	sorter, so a < B < c.
- *
- *	NOTE one exception to the above: an element with the system's reserved
- *	name for base Wizards will always be sorted such that it will
- *	ultimately be placed at the beginning of the sorted result.
- */
-class NewWizardCollectionComparator extends ViewerComparator {
-	/**
-	 * Static instance of this class.
-	 */
-    public final static NewWizardCollectionComparator INSTANCE = new NewWizardCollectionComparator();
-
-
-    /**
-     * Creates an instance of <code>NewWizardCollectionSorter</code>.  Since this
-     * is a stateless sorter, it is only accessible as a singleton; the private
-     * visibility of this constructor ensures this.
-     */
-    private NewWizardCollectionComparator() {
-        super();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ViewerSorter#category(java.lang.Object)
-     */
-    public int category(Object element) {
-    	if (element instanceof WorkbenchWizardElement) {
-			return -1;
-		}
-    	if (element instanceof WizardCollectionElement){
-    		String id = ((WizardCollectionElement)element).getId();
-    		if (WizardsRegistryReader.GENERAL_WIZARD_CATEGORY.equals(id)) {
-				return 1;
-			}
-    		if (WizardsRegistryReader.UNCATEGORIZED_WIZARD_CATEGORY.equals(id)) {
-				return 3;
-			}
-    		if (WizardsRegistryReader.FULL_EXAMPLES_WIZARD_CATEGORY.equals(id)) {
-				return 4;
-			}
-    		return 2;
-    	}
-    	return super.category(element);	
-	}
-
-	/**
-     *	Return true if this sorter is affected by a property 
-     *	change of propertyName on the specified element.
-     */
-    public boolean isSorterProperty(Object object, String propertyId) {
-        return propertyId.equals(IBasicPropertyConstants.P_TEXT);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
deleted file mode 100644
index 7704f86..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardNewPage.java
+++ /dev/null
@@ -1,740 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-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 org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogSettings;
-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.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.wizard.IWizardContainer;
-import org.eclipse.jface.wizard.IWizardContainer2;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * New wizard selection tab that allows the user to select a registered 'New'
- * wizard to be launched.
- */
-class NewWizardNewPage implements ISelectionChangedListener {
-
-    // id constants
-    private static final String DIALOG_SETTING_SECTION_NAME = "NewWizardSelectionPage."; //$NON-NLS-1$
-
-    private final static int SIZING_LISTS_HEIGHT = 200;
-
-    private final static int SIZING_VIEWER_WIDTH = 300;
-
-    private final static String STORE_EXPANDED_CATEGORIES_ID = DIALOG_SETTING_SECTION_NAME
-            + "STORE_EXPANDED_CATEGORIES_ID"; //$NON-NLS-1$
-
-    private final static String STORE_SELECTED_ID = DIALOG_SETTING_SECTION_NAME
-            + "STORE_SELECTED_ID"; //$NON-NLS-1$
-
-    private NewWizardSelectionPage page;
-    
-    private FilteredTree filteredTree;
-    
-    private WizardPatternFilter filteredTreeFilter;
-
-    //Keep track of the wizards we have previously selected
-    private Hashtable selectedWizards = new Hashtable();
-
-    private IDialogSettings settings;
-
-    private Button showAllCheck;
-
-    private IWizardCategory wizardCategories;
-
-    private IWizardDescriptor [] primaryWizards;
-
-    private CLabel descImageCanvas;
-
-    private Map imageTable = new HashMap();
-
-    private IWizardDescriptor selectedElement;
-
-    private WizardActivityFilter filter = new WizardActivityFilter();
-
-    private boolean needShowAll;
-
-	private boolean projectsOnly;
-
-	private ViewerFilter projectFilter = new WizardTagFilter(new String[] {WorkbenchWizardElement.TAG_PROJECT});
-
-    /**
-     * Create an instance of this class
-     * @param mainPage 
-     * @param wizardCategories 
-     * @param primaryWizards 
-     * @param projectsOnly 
-     */
-    public NewWizardNewPage(NewWizardSelectionPage mainPage,
-			IWizardCategory wizardCategories,
-			IWizardDescriptor[] primaryWizards, boolean projectsOnly) {
-        this.page = mainPage;
-        this.wizardCategories = wizardCategories;
-        this.primaryWizards = primaryWizards;
-        this.projectsOnly = projectsOnly;
-
-        trimPrimaryWizards();
-
-        if (this.primaryWizards.length > 0) {
-            if (allPrimary(wizardCategories)) {
-                this.wizardCategories = null; // dont bother considering the categories as all wizards are primary
-                needShowAll = false;
-            } else {
-                needShowAll = !allActivityEnabled(wizardCategories);
-            }
-        } else {
-            needShowAll = !allActivityEnabled(wizardCategories);
-        }
-    }
-
-    /**
-     * @param category the wizard category
-     * @return whether all of the wizards in the category are enabled via activity filtering
-     */
-    private boolean allActivityEnabled(IWizardCategory category) {
-        IWizardDescriptor [] wizards = category.getWizards();
-        for (int i = 0; i < wizards.length; i++) {
-            IWizardDescriptor wizard = wizards[i];
-            if (WorkbenchActivityHelper.filterItem(wizard)) {
-				return false;
-			}
-        }
-
-        IWizardCategory [] children = category.getCategories();
-        for (int i = 0; i < children.length; i++) {
-            if (!allActivityEnabled(children[i])) {
-				return false;
-			}
-        }
-
-        return true;
-    }
-
-    /**
-     * Remove all primary wizards that are not in the wizard collection
-     */
-    private void trimPrimaryWizards() {
-        ArrayList newPrimaryWizards = new ArrayList(primaryWizards.length);
-
-        if (wizardCategories == null) {
-			return;//No categories so nothing to trim
-		}
-
-        for (int i = 0; i < primaryWizards.length; i++) {
-            if (wizardCategories.findWizard(primaryWizards[i].getId()) != null) {
-				newPrimaryWizards.add(primaryWizards[i]);
-			}
-        }
-
-        primaryWizards = (WorkbenchWizardElement[]) newPrimaryWizards
-                .toArray(new WorkbenchWizardElement[newPrimaryWizards.size()]);
-    }
-
-    /**
-     * @param category the wizard category
-     * @return whether all wizards in the category are considered primary
-     */
-    private boolean allPrimary(IWizardCategory category) {
-        IWizardDescriptor [] wizards = category.getWizards();
-        for (int i = 0; i < wizards.length; i++) {
-        	IWizardDescriptor wizard = wizards[i];
-            if (!isPrimary(wizard)) {
-				return false;
-			}
-        }
-
-        IWizardCategory [] children = category.getCategories();
-        for (int i = 0; i < children.length; i++) {
-            if (!allPrimary(children[i])) {
-				return false;
-			}
-        }
-
-        return true;
-    }
-
-    /**
-     * @param wizard
-     * @return whether the given wizard is primary
-     */
-    private boolean isPrimary(IWizardDescriptor wizard) {
-        for (int j = 0; j < primaryWizards.length; j++) {
-            if (primaryWizards[j].equals(wizard)) {
-				return true;
-			}
-        }
-
-        return false;
-    }
-
-    /**
-     * @since 3.0
-     */
-    public void activate() {
-        page.setDescription(WorkbenchMessages.NewWizardNewPage_description);
-    }
-
-    /**
-     * Create this tab's visual components
-     * 
-     * @param parent Composite
-     * @return Control
-     */
-    protected Control createControl(Composite parent) {
-
-        Font wizardFont = parent.getFont();
-        // top level group
-        Composite outerContainer = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        outerContainer.setLayout(layout);
-
-        Label wizardLabel = new Label(outerContainer, SWT.NONE);
-        GridData data = new GridData(SWT.BEGINNING, SWT.FILL, false, true);
-        outerContainer.setLayoutData(data);
-        wizardLabel.setFont(wizardFont);
-        wizardLabel.setText(WorkbenchMessages.NewWizardNewPage_wizardsLabel);    
-
-        Composite innerContainer = new Composite(outerContainer, SWT.NONE);
-        layout = new GridLayout(2, false);
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        innerContainer.setLayout(layout);
-        innerContainer.setFont(wizardFont);
-        data = new GridData(SWT.FILL, SWT.FILL, true, true);	
-        innerContainer.setLayoutData(data);
-
-        filteredTree = createFilteredTree(innerContainer);
-        createOptionsButtons(innerContainer);
-        
-        createImage(innerContainer);
-
-        updateDescription(null);
-
-        // wizard actions pane...create SWT table directly to
-        // get single selection mode instead of multi selection.
-        restoreWidgetValues();
-
-        return outerContainer;
-    }
-
-    /**
-     * Create a new FilteredTree in the parent.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     * @since 3.0
-     */
-    protected FilteredTree createFilteredTree(Composite parent){
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        composite.setLayout(layout);
-        
-        GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
-        data.widthHint = SIZING_VIEWER_WIDTH;
-        data.horizontalSpan = 2;	 
-        data.grabExcessHorizontalSpace = true;
-        data.grabExcessVerticalSpace = true;
-
-        boolean needsHint = DialogUtil.inRegularFontMode(parent);
-
-        //Only give a height hint if the dialog is going to be too small
-        if (needsHint) {
-            data.heightHint = SIZING_LISTS_HEIGHT;
-        }
-        composite.setLayoutData(data);
-
-        filteredTreeFilter = new WizardPatternFilter();
-    	FilteredTree filterTree = new FilteredTree(composite, 
-    			SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, filteredTreeFilter);
-  	
-		final TreeViewer treeViewer = filterTree.getViewer();
-		treeViewer.setContentProvider(new WizardContentProvider());
-		treeViewer.setLabelProvider(new WorkbenchLabelProvider());
-		treeViewer.setComparator(NewWizardCollectionComparator.INSTANCE);
-		treeViewer.addSelectionChangedListener(this);
-
-        ArrayList inputArray = new ArrayList();
-
-        for (int i = 0; i < primaryWizards.length; i++) {
-            inputArray.add(primaryWizards[i]);
-        }
-
-        boolean expandTop = false;
-
-        if (wizardCategories != null) {
-            if (wizardCategories.getParent() == null) {
-                IWizardCategory [] children = wizardCategories.getCategories();
-                for (int i = 0; i < children.length; i++) {
-                    inputArray.add(children[i]);
-                }
-            } else {
-                expandTop = true;
-                inputArray.add(wizardCategories);
-            }
-        }
-
-        // ensure the category is expanded.  If there is a remembered expansion it will be set later.
-        if (expandTop) {
-			treeViewer.setAutoExpandLevel(2);
-		}
-
-        AdaptableList input = new AdaptableList(inputArray);
-
-        treeViewer.setInput(input);
-
-		filterTree.setBackground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_WIDGET_BACKGROUND));
-
-        treeViewer.getTree().setFont(parent.getFont());
-
-        treeViewer.addDoubleClickListener(new IDoubleClickListener() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-             */
-            public void doubleClick(DoubleClickEvent event) {
-            	    IStructuredSelection s = (IStructuredSelection) event
-						.getSelection();
-				selectionChanged(new SelectionChangedEvent(event.getViewer(), s));
-				
-				Object element = s.getFirstElement();
-                if (treeViewer.isExpandable(element)) {
-                	treeViewer.setExpandedState(element, !treeViewer
-                            .getExpandedState(element));
-                } else if (element instanceof WorkbenchWizardElement) {
-                    page.advanceToNextPageOrFinish();
-                }
-            }
-        });
-        
-        treeViewer.addFilter(filter);
-        
-        if (projectsOnly) {
-			treeViewer.addFilter(projectFilter);
-		}
-
-		Dialog.applyDialogFont(filterTree);
-		return filterTree;
-    }
-    
-    /**
-     * Create the Show All and help buttons at the bottom of the page.
-     * 
-     * @param parent the parent composite on which to create the widgets
-     */
-    private void createOptionsButtons(Composite parent){
-        if (needShowAll) {
-            showAllCheck = new Button(parent, SWT.CHECK);
-            GridData data = new GridData();
-            showAllCheck.setLayoutData(data);
-            showAllCheck.setFont(parent.getFont());
-            showAllCheck.setText(WorkbenchMessages.NewWizardNewPage_showAll); 
-            showAllCheck.setSelection(false);
-
-            // flipping tabs updates the selected node
-            showAllCheck.addSelectionListener(new SelectionAdapter() {
-
-                // the delta of expanded elements between the last 'show all'
-                // and the current 'no show all'
-                private Object[] delta = new Object[0];
-
-                public void widgetSelected(SelectionEvent e) {
-                    boolean showAll = showAllCheck.getSelection();
-
-                    if (showAll) {
-                    	filteredTree.getViewer().getControl().setRedraw(false);
-                    } else {
-                        // get the inital expanded elements when going from show
-                        // all-> no show all.
-                        // this isnt really the delta yet, we're just reusing
-                        // the variable.
-                        delta = filteredTree.getViewer().getExpandedElements();
-                    }
-
-                    try {
-                        if (showAll) {
-                        	filteredTree.getViewer().resetFilters();
-                        	filteredTree.getViewer().addFilter(filteredTreeFilter);
-                            if (projectsOnly) {
-								filteredTree.getViewer().addFilter(projectFilter);
-							}
-
-                            // restore the expanded elements that were present
-                            // in the last show all state but not in the 'no
-                            // show all' state.
-                            Object[] currentExpanded = filteredTree.getViewer()
-                                    .getExpandedElements();
-                            Object[] expanded = new Object[delta.length
-                                    + currentExpanded.length];
-                            System.arraycopy(currentExpanded, 0, expanded, 0,
-                                    currentExpanded.length);
-                            System.arraycopy(delta, 0, expanded,
-                                    currentExpanded.length, delta.length);
-                            filteredTree.getViewer().setExpandedElements(expanded);
-                        } else {
-                        	filteredTree.getViewer().addFilter(filter);
-                            if (projectsOnly) {
-								filteredTree.getViewer().addFilter(projectFilter);
-							}
-                        }
-                        filteredTree.getViewer().refresh(false);
-
-                        if (!showAll) {
-                            // if we're going from show all -> no show all
-                            // record the elements that were expanded in the
-                            // 'show all' state but not the 'no show all' state
-                            // (because they didnt exist).
-                            Object[] newExpanded = filteredTree.getViewer().getExpandedElements();
-                            List deltaList = new ArrayList(Arrays.asList(delta));
-                            deltaList.removeAll(Arrays.asList(newExpanded));
-                        }
-                    } finally {
-                        if (showAll) {
-							filteredTree.getViewer().getControl().setRedraw(true);
-						}
-                    }
-                }
-            });
-        }
-    }
-    
-    /**
-     * Create the image controls.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     * @since 3.0
-     */
-    private void createImage(Composite parent) {
-        descImageCanvas = new CLabel(parent, SWT.NONE);
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING
-                | GridData.VERTICAL_ALIGN_BEGINNING);
-        data.widthHint = 0;
-        data.heightHint = 0;
-        descImageCanvas.setLayoutData(data);
-
-        // hook a listener to get rid of cached images.
-        descImageCanvas.addDisposeListener(new DisposeListener() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-             */
-            public void widgetDisposed(DisposeEvent e) {
-                for (Iterator i = imageTable.values().iterator(); i.hasNext();) {
-                    ((Image) i.next()).dispose();
-                }
-                imageTable.clear();
-            }
-        });
-    }
-
-    /**
-     * Expands the wizard categories in this page's category viewer that were
-     * expanded last time this page was used. If a category that was previously
-     * expanded no longer exists then it is ignored.
-     */
-    protected void expandPreviouslyExpandedCategories() {
-        String[] expandedCategoryPaths = settings
-                .getArray(STORE_EXPANDED_CATEGORIES_ID);
-        if (expandedCategoryPaths == null || expandedCategoryPaths.length == 0) {
-			return;
-		}
-
-        List categoriesToExpand = new ArrayList(expandedCategoryPaths.length);
-
-        if (wizardCategories != null) {
-            for (int i = 0; i < expandedCategoryPaths.length; i++) {
-                IWizardCategory category = wizardCategories
-                        .findCategory(new Path(expandedCategoryPaths[i]));
-                if (category != null) {
-					categoriesToExpand.add(category);
-				}
-            }
-        }
-
-        if (!categoriesToExpand.isEmpty()) {
-			filteredTree.getViewer().setExpandedElements(categoriesToExpand.toArray());
-		}
-
-    }
-
-    /**
-     * Returns the single selected object contained in the passed
-     * selectionEvent, or <code>null</code> if the selectionEvent contains
-     * either 0 or 2+ selected objects.
-     */
-    protected Object getSingleSelection(IStructuredSelection selection) {
-        return selection.size() == 1 ? selection.getFirstElement() : null;
-    }
-
-    /**
-     * Set self's widgets to the values that they held last time this page was
-     * open
-     *  
-     */
-    protected void restoreWidgetValues() {
-        expandPreviouslyExpandedCategories();
-        selectPreviouslySelected();
-    }
-
-    /**
-     * Store the current values of self's widgets so that they can be restored
-     * in the next instance of self
-     *  
-     */
-    public void saveWidgetValues() {
-        storeExpandedCategories();
-        storeSelectedCategoryAndWizard();
-    }
-
-    /**
-     * The user selected either new wizard category(s) or wizard element(s).
-     * Proceed accordingly.
-     * 
-     * @param selectionEvent ISelection
-     */
-    public void selectionChanged(SelectionChangedEvent selectionEvent) {
-        page.setErrorMessage(null);
-        page.setMessage(null);
-
-        Object selectedObject = getSingleSelection((IStructuredSelection) selectionEvent
-                .getSelection());
-
-        if (selectedObject instanceof IWizardDescriptor) {
-            if (selectedObject == selectedElement) {
-				return;
-			}
-            updateWizardSelection((IWizardDescriptor) selectedObject);
-        } else {
-            selectedElement = null;
-            page.setHasPages(false);
-            page.setCanFinishEarly(false);
-            page.selectWizardNode(null);
-            updateDescription(null);
-        }
-    }
-
-    /**
-     * Selects the wizard category and wizard in this page that were selected
-     * last time this page was used. If a category or wizard that was
-     * previously selected no longer exists then it is ignored.
-     */
-    protected void selectPreviouslySelected() {
-        String selectedId = settings.get(STORE_SELECTED_ID);
-        if (selectedId == null) {
-			return;
-		}
-
-        if (wizardCategories == null) {
-			return;
-		}
-
-        Object selected = wizardCategories.findCategory(new Path(
-                selectedId));
-
-        if (selected == null) {
-            selected = wizardCategories.findWizard(selectedId);
-
-            if (selected == null) {
-				// if we cant find either a category or a wizard, abort.
-                return;
-			}
-        }
-
-        //work around for 62039
-        final StructuredSelection selection = new StructuredSelection(selected);
-        filteredTree.getViewer().getControl().getDisplay().asyncExec(new Runnable() {
-            public void run() {
-            	filteredTree.getViewer().setSelection(selection, true);
-            }
-        });
-    }
-
-    /**
-     * Set the dialog store to use for widget value storage and retrieval
-     * 
-     * @param settings IDialogSettings
-     */
-    public void setDialogSettings(IDialogSettings settings) {
-        this.settings = settings;
-    }
-
-    /**
-     * Stores the collection of currently-expanded categories in this page's
-     * dialog store, in order to recreate this page's state in the next
-     * instance of this page.
-     */
-    protected void storeExpandedCategories() {
-        Object[] expandedElements = filteredTree.getViewer().getExpandedElements();
-        List expandedElementPaths = new ArrayList(expandedElements.length);
-        for (int i = 0; i < expandedElements.length; ++i) {
-            if (expandedElements[i] instanceof IWizardCategory) {
-				expandedElementPaths
-                        .add(((IWizardCategory) expandedElements[i])
-                                .getPath().toString());
-			}
-        }
-        settings.put(STORE_EXPANDED_CATEGORIES_ID,
-                (String[]) expandedElementPaths
-                        .toArray(new String[expandedElementPaths.size()]));
-    }
-
-    /**
-     * Stores the currently-selected element in this page's dialog store, in
-     * order to recreate this page's state in the next instance of this page.
-     */
-    protected void storeSelectedCategoryAndWizard() {
-        Object selected = getSingleSelection((IStructuredSelection) filteredTree
-        		.getViewer().getSelection());
-
-        if (selected != null) {
-            if (selected instanceof IWizardCategory) {
-				settings.put(STORE_SELECTED_ID,
-                        ((IWizardCategory) selected).getPath()
-                                .toString());
-			} else {
-				// else its a wizard
-                settings.put(STORE_SELECTED_ID,
-                        ((IWizardDescriptor) selected).getId());
-			}
-        }
-    }
-
-    /**
-     * Update the current description controls.
-     * 
-     * @param selectedObject the new wizard
-     * @since 3.0
-     */
-    private void updateDescription(IWizardDescriptor selectedObject) {
-        String string = ""; //$NON-NLS-1$
-        if (selectedObject != null) {
-			string = selectedObject.getDescription();
-		}
-
-        page.setDescription(string);
-
-        if (hasImage(selectedObject)) {
-            ImageDescriptor descriptor = null;
-            if (selectedObject != null) {
-                descriptor = selectedObject.getDescriptionImage();
-            }
-
-            if (descriptor != null) {
-            	GridData data = (GridData)descImageCanvas.getLayoutData();
-            	data.widthHint = SWT.DEFAULT;
-            	data.heightHint = SWT.DEFAULT;
-                Image image = (Image) imageTable.get(descriptor);
-                if (image == null) {
-                    image = descriptor.createImage(false);
-                    imageTable.put(descriptor, image);
-                }
-                descImageCanvas.setImage(image);
-            }
-        } else {
-        	GridData data = (GridData)descImageCanvas.getLayoutData();
-        	data.widthHint = 0;
-        	data.heightHint = 0;
-            descImageCanvas.setImage(null);
-        }
-
-        descImageCanvas.getParent().layout(true);
-
-        IWizardContainer container = page.getWizard().getContainer();
-        if (container instanceof IWizardContainer2) {
-            ((IWizardContainer2) container).updateSize();
-        }
-    }
-
-    /**
-     * Tests whether the given wizard has an associated image.
-     * 
-     * @param selectedObject the wizard to test
-     * @return whether the given wizard has an associated image
-     */
-    private boolean hasImage(IWizardDescriptor selectedObject) {
-        if (selectedObject == null) {
-			return false;
-		}
-
-        if (selectedObject.getDescriptionImage() != null) {
-			return true;
-		}
-
-        return false;
-    }
-
-    /**
-     * @param selectedObject
-     */
-    private void updateWizardSelection(IWizardDescriptor selectedObject) {
-        selectedElement = selectedObject;
-        WorkbenchWizardNode selectedNode;
-        if (selectedWizards.containsKey(selectedObject)) {
-            selectedNode = (WorkbenchWizardNode) selectedWizards
-                    .get(selectedObject);
-        } else {
-            selectedNode = new WorkbenchWizardNode(page, selectedObject) {
-                public IWorkbenchWizard createWizard() throws CoreException {
-                    return wizardElement.createWizard();
-                }
-            };
-            selectedWizards.put(selectedObject, selectedNode);
-        }
-
-        page.setCanFinishEarly(selectedObject.canFinishEarly());
-        page.setHasPages(selectedObject.hasPages());
-        page.selectWizardNode(selectedNode);
-
-        updateDescription(selectedObject);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java
deleted file mode 100644
index 85068fc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/NewWizardSelectionPage.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- *	New wizard selection tab that allows the user to either select a
- *	registered 'New' wizard to be launched, or to select a solution or
- *	projects to be retrieved from an available server.  This page
- *	contains two visual tabs that allow the user to perform these tasks.
- *
- *  Temporarily has two inner pages.  The new format page is used if the system 
- *  is currently aware of activity categories.
- */
-class NewWizardSelectionPage extends WorkbenchWizardSelectionPage {
-    private IWizardCategory wizardCategories;
-
-    // widgets
-    private NewWizardNewPage newResourcePage;
-
-    private IWizardDescriptor [] primaryWizards;
-
-	private boolean projectsOnly;
-	
-	private boolean canFinishEarly = false, hasPages = true;
-    
-    /**
-     * Create an instance of this class.
-     *
-     * @param workbench the workbench
-     * @param selection the current selection
-     * @param root the wizard root element
-     * @param primary the primary wizard elements
-     * @param projectsOnly if only projects should be shown
-     */
-    public NewWizardSelectionPage(IWorkbench workbench,
-			IStructuredSelection selection, IWizardCategory root,
-			IWizardDescriptor[] primary, boolean projectsOnly) {
-        super("newWizardSelectionPage", workbench, selection, null, WorkbenchTriggerPoints.NEW_WIZARDS);//$NON-NLS-1$
-        
-        setTitle(WorkbenchMessages.NewWizardSelectionPage_description); 
-        wizardCategories = root;
-        primaryWizards = primary;
-        this.projectsOnly = projectsOnly;
-	}
-
-    /**
-     * Makes the next page visible.
-     */
-    public void advanceToNextPageOrFinish() {
-    		if (canFlipToNextPage()) {
-				getContainer().showPage(getNextPage());
-			} else if (canFinishEarly()) {
-    			if (getWizard().performFinish()) {
-					((WizardDialog)getContainer()).close();
-				}
-    		}
-    }
-
-    /** (non-Javadoc)
-     * Method declared on IDialogPage.
-     */
-    public void createControl(Composite parent) {
-        IDialogSettings settings = getDialogSettings();
-        newResourcePage = new NewWizardNewPage(this, wizardCategories,
-				primaryWizards, projectsOnly);
-        newResourcePage.setDialogSettings(settings);
-
-        Control control = newResourcePage.createControl(parent);
-        getWorkbench().getHelpSystem().setHelp(control,
-				IWorkbenchHelpContextIds.NEW_WIZARD_SELECTION_WIZARD_PAGE);
-        setControl(control);
-    }
-
-    /**
-     * Since Finish was pressed, write widget values to the dialog store so that they
-     *will persist into the next invocation of this wizard page
-     */
-    protected void saveWidgetValues() {
-        newResourcePage.saveWidgetValues();
-    }
-        
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardPage#canFlipToNextPage()
-     */
-    public boolean canFlipToNextPage() {
-        // if the current page advertises that it does have pages then ask it via the super call
-    		if (hasPages) {
-				return super.canFlipToNextPage();
-			}
-    		return false;
-    }
-
-    /**
-     * Sets whether the selected wizard advertises that it does provide pages.
-     * 
-     * @param newValue whether the selected wizard has pages
-     * @since 3.1
-     */
-	public void setHasPages(boolean newValue) {
-		hasPages = newValue;
-	}
-
-	/**
-	 * Sets whether the selected wizard advertises that it can finish early.
-	 * 
-	 * @param newValue whether the selected wizard can finish early
-	 * @since 3.1
-	 */
-	public void setCanFinishEarly(boolean newValue) {
-		canFinishEarly = newValue;
-	}
-
-	/**
-	 * Answers whether the currently selected page, if any, advertises that it may finish early.
-	 * 
-	 * @return whether the page can finish early
-	 * @since 3.1
-	 */
-	public boolean canFinishEarly() {
-		return canFinishEarly;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspContentProvider.java
deleted file mode 100644
index 3f91eb6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspContentProvider.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IPerspectiveRegistry;
-
-public class PerspContentProvider implements IStructuredContentProvider {
-
-    /**
-     * Create a new <code>PerspContentProvider</code>.
-     */
-    public PerspContentProvider() {
-        //no-op
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-        //no-op
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object element) {
-        if (element instanceof IPerspectiveRegistry) {
-            return ((IPerspectiveRegistry) element).getPerspectives();
-        }
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-     *      java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        //no-op
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
deleted file mode 100644
index 308e622..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PerspectivesPreferencePage.java
+++ /dev/null
@@ -1,673 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import com.ibm.icu.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
-import org.eclipse.ui.internal.registry.PerspectiveRegistry;
-import org.eclipse.ui.internal.util.Descriptors;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * The Workbench / Perspectives preference page.
- */
-public class PerspectivesPreferencePage extends PreferencePage implements
-		IWorkbenchPreferencePage {
-	private IWorkbench workbench;
-
-	private PerspectiveRegistry perspectiveRegistry;
-
-	private ArrayList perspectives;
-
-	private String defaultPerspectiveId;
-
-	private ArrayList perspToDelete = new ArrayList();
-
-	private ArrayList perspToRevert = new ArrayList();
-
-	private Table perspectivesTable;
-	
-	private Button revertButton;
-
-	private Button deleteButton;
-
-	private Button setDefaultButton;
-
-	// widgets for open perspective mode;
-	private Button openSameWindowButton;
-
-	private Button openNewWindowButton;
-
-	private int openPerspMode;
-
-	// widgets for open view mode
-	private int openViewMode;
-
-	private Button openEmbedButton;
-
-	private Button openFastButton;
-    
-	// labels
-	private final String OVM_TITLE = WorkbenchMessages.OpenViewMode_title;
-
-	private final String OVM_EMBED = WorkbenchMessages.OpenViewMode_embed;
-
-	private final String OVM_FAST = WorkbenchMessages.OpenViewMode_fast; 
-
-	private final String OPM_TITLE = WorkbenchMessages.OpenPerspectiveMode_optionsTitle; 
-
-	private final String OPM_SAME_WINDOW = WorkbenchMessages.OpenPerspectiveMode_sameWindow; 
-
-	private final String OPM_NEW_WINDOW = WorkbenchMessages.OpenPerspectiveMode_newWindow; 
-
-	/**
-	 * <code>Comparator</code> to compare two perspective descriptors
-	 */
-    private Comparator comparator = new Comparator() {
-        private Collator collator = Collator.getInstance();
-
-        public int compare(Object ob1, Object ob2) {
-            IPerspectiveDescriptor d1 = (IPerspectiveDescriptor) ob1;
-            IPerspectiveDescriptor d2 = (IPerspectiveDescriptor) ob2;
-            return collator.compare(d1.getLabel(), d2.getLabel());
-        }
-    };
-
-	/**
-	 * Creates the page's UI content.
-	 */
-	protected Control createContents(Composite parent) {
-		// @issue if the product subclasses this page, then it should provide
-		// the help content
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.PERSPECTIVES_PREFERENCE_PAGE);
-
-		Composite composite = createComposite(parent);
-
-		createOpenPerspButtonGroup(composite);
-		createOpenViewButtonGroup(composite);
-		createCustomizePerspective(composite);
-
-		return composite;
-	}
-
-	/**
-	 * Creates the composite which will contain all the preference controls for
-	 * this page.
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @return the composite for this page
-	 */
-	protected Composite createComposite(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridData data = new GridData(GridData.FILL_BOTH);
-		composite.setLayoutData(data);
-		composite.setFont(parent.getFont());
-		GridLayout layout = new GridLayout();
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		layout.verticalSpacing = 10;
-		composite.setLayout(layout);
-		return composite;
-	}
-
-	/**
-	 * Create a composite that contains buttons for selecting the open
-	 * perspective mode.
-	 * 
-	 * @param composite
-	 *            the parent composite
-	 */
-	protected void createOpenPerspButtonGroup(Composite composite) {
-
-		Font font = composite.getFont();
-
-		Group buttonComposite = new Group(composite, SWT.LEFT);
-		buttonComposite.setText(OPM_TITLE);
-		buttonComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		buttonComposite.setFont(composite.getFont());
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		buttonComposite.setLayout(layout);
-
-		openSameWindowButton = new Button(buttonComposite, SWT.RADIO);
-		openSameWindowButton.setText(OPM_SAME_WINDOW);
-		openSameWindowButton
-				.setSelection(IPreferenceConstants.OPM_ACTIVE_PAGE == openPerspMode);
-		openSameWindowButton.setFont(font);
-		openSameWindowButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				openPerspMode = IPreferenceConstants.OPM_ACTIVE_PAGE;
-			}
-		});
-
-		openNewWindowButton = new Button(buttonComposite, SWT.RADIO);
-		openNewWindowButton.setText(OPM_NEW_WINDOW);
-		openNewWindowButton
-				.setSelection(IPreferenceConstants.OPM_NEW_WINDOW == openPerspMode);
-		openNewWindowButton.setFont(font);
-		openNewWindowButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				openPerspMode = IPreferenceConstants.OPM_NEW_WINDOW;
-			}
-		});
-
-	}
-
-	/**
-	 * Creates a composite that contains buttons for selecting open view mode.
-	 * 
-	 * @param composite
-	 *            the parent composite
-	 */
-	protected void createOpenViewButtonGroup(Composite composite) {
-
-		Font font = composite.getFont();
-
-		Group buttonComposite = new Group(composite, SWT.LEFT);
-		buttonComposite.setText(OVM_TITLE);
-		buttonComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		buttonComposite.setFont(composite.getFont());
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		buttonComposite.setLayout(layout);
-
-		openEmbedButton = new Button(buttonComposite, SWT.RADIO);
-		openEmbedButton.setText(OVM_EMBED);
-		openEmbedButton
-				.setSelection(openViewMode == IPreferenceConstants.OVM_EMBED);
-		openEmbedButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				openViewMode = IPreferenceConstants.OVM_EMBED;
-			}
-		});
-		openEmbedButton.setFont(font);
-
-		// Open view as float no longer supported
-		if (openViewMode == IPreferenceConstants.OVM_FLOAT) {
-			openViewMode = IPreferenceConstants.OVM_FAST;
-		}
-
-		openFastButton = new Button(buttonComposite, SWT.RADIO);
-		openFastButton.setText(OVM_FAST);
-		openFastButton
-				.setSelection(openViewMode == IPreferenceConstants.OVM_FAST);
-		openFastButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				openViewMode = IPreferenceConstants.OVM_FAST;
-			}
-		});
-		openFastButton.setFont(font);
-
-	}
-
-	/**
-	 * Create a table of 3 buttons to enable the user to manage customized
-	 * perspectives.
-	 * 
-	 * @param parent
-	 *            the parent for the button parent
-	 * @return Composite that the buttons are created in.
-	 */
-	protected Composite createCustomizePerspective(Composite parent) {
-
-		Font font = parent.getFont();
-
-		// define container & its gridding
-		Composite perspectivesComponent = new Composite(parent, SWT.NONE);
-		perspectivesComponent.setLayoutData(new GridData(GridData.FILL_BOTH));
-		perspectivesComponent.setFont(parent.getFont());
-
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		perspectivesComponent.setLayout(layout);
-
-		// Add the label
-		Label label = new Label(perspectivesComponent, SWT.LEFT);
-		label.setText(WorkbenchMessages.PerspectivesPreference_available); 
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		label.setLayoutData(data);
-		label.setFont(font);
-
-		// Add perspectivesTable.
-		perspectivesTable = new Table(perspectivesComponent, SWT.H_SCROLL | SWT.V_SCROLL
-				| SWT.BORDER);
-	    perspectivesTable.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				updateButtons();
-			}
-		});
-        perspectivesTable.setFont(font);
-
-		data = new GridData(GridData.FILL_BOTH);
-		data.grabExcessHorizontalSpace = true;
-		data.grabExcessVerticalSpace = true;
-		perspectivesTable.setLayoutData(data);
-
-		// Populate the perspectivesTable
-		IPerspectiveDescriptor[] persps = perspectiveRegistry.getPerspectives();
-		perspectives = new ArrayList(persps.length);
-		for (int i = 0; i < persps.length; i++) {
-			perspectives.add(i, persps[i]);
-		}
-		Collections.sort(perspectives, comparator);
-		defaultPerspectiveId = perspectiveRegistry.getDefaultPerspective();
-		updatePerspectivesTable();
-		
-		// Create vertical button bar.
-		Composite buttonBar = (Composite) createVerticalButtonBar(perspectivesComponent);
-		data = new GridData(GridData.FILL_VERTICAL);
-		buttonBar.setLayoutData(data);
-		
-		//Add note label
-		String NOTE_LABEL = WorkbenchMessages.Preference_note;
-		String REVERT_NOTE = WorkbenchMessages.RevertPerspective_note; 
-		Composite noteComposite = createNoteComposite(font, parent,
-                NOTE_LABEL, REVERT_NOTE);
-        GridData noteData = new GridData();
-        noteData.horizontalSpan = 2;
-        noteComposite.setLayoutData(noteData);
-		return perspectivesComponent;
-	}
-
-	/**
-	 * Creates a new vertical button with the given id.
-	 * <p>
-	 * The default implementation of this framework method creates a standard
-	 * push button, registers for selection events including button presses and
-	 * help requests, and registers default buttons with its shell. The button
-	 * id is stored as the buttons client data.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @param label
-	 *            the label from the button
-	 * @param defaultButton
-	 *            <code>true</code> if the button is to be the default button,
-	 *            and <code>false</code> otherwise
-	 * @return Button The created button.
-	 */
-	protected Button createVerticalButton(Composite parent, String label,
-			boolean defaultButton) {
-		Button button = new Button(parent, SWT.PUSH);
-
-		button.setText(label);
-
-		GridData data = setButtonLayoutData(button);
-		data.horizontalAlignment = GridData.FILL;
-
-		button.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent event) {
-				verticalButtonPressed(event.widget);
-			}
-		});
-		button.setToolTipText(label);
-		if (defaultButton) {
-			Shell shell = parent.getShell();
-			if (shell != null) {
-				shell.setDefaultButton(button);
-			}
-		}
-		button.setFont(parent.getFont());
-		return button;
-	}
-
-	/**
-	 * Creates and returns the vertical button bar.
-	 * 
-	 * @param parent
-	 *            the parent composite to contain the button bar
-	 * @return the button bar control
-	 */
-	protected Control createVerticalButtonBar(Composite parent) {
-		// Create composite.
-		Composite composite = new Composite(parent, SWT.NULL);
-
-		// create a layout with spacing and margins appropriate for the font
-		// size.
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 1;
-		layout.marginWidth = 5;
-		layout.marginHeight = 0;
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		composite.setLayout(layout);
-		composite.setFont(parent.getFont());
-
-		// Add the buttons to the button bar.
-		setDefaultButton = createVerticalButton(composite, WorkbenchMessages.PerspectivesPreference_MakeDefault, false); 
-		setDefaultButton.setToolTipText(WorkbenchMessages.PerspectivesPreference_MakeDefaultTip); 
-
-		revertButton = createVerticalButton(composite, WorkbenchMessages.PerspectivesPreference_Reset, false); 
-		revertButton.setToolTipText(WorkbenchMessages.PerspectivesPreference_ResetTip); 
-
-		deleteButton = createVerticalButton(composite, WorkbenchMessages.PerspectivesPreference_Delete, false); 
-		deleteButton.setToolTipText(WorkbenchMessages.PerspectivesPreference_DeleteTip); 
-		updateButtons();
-
-		return composite;
-	}
-
-	/**
-	 * @see IWorkbenchPreferencePage
-	 */
-	public void init(IWorkbench aWorkbench) {
-		this.workbench = aWorkbench;
-		this.perspectiveRegistry = (PerspectiveRegistry) workbench
-				.getPerspectiveRegistry();
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		setPreferenceStore(store);
-
-		openViewMode = store.getInt(IPreferenceConstants.OPEN_VIEW_MODE);
-		openPerspMode = store.getInt(IPreferenceConstants.OPEN_PERSP_MODE);
-	}
-
-	/**
-	 * The default button has been pressed.
-	 */
-	protected void performDefaults() {
-		//Project perspective preferences
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-
-		openViewMode = store.getDefaultInt(IPreferenceConstants.OPEN_VIEW_MODE);
-		// Open view as float no longer supported
-		if (openViewMode == IPreferenceConstants.OVM_FLOAT) {
-			openViewMode = IPreferenceConstants.OVM_FAST;
-		}
-		openEmbedButton
-				.setSelection(openViewMode == IPreferenceConstants.OVM_EMBED);
-		openFastButton
-				.setSelection(openViewMode == IPreferenceConstants.OVM_FAST);
-
-		openPerspMode = store
-				.getDefaultInt(IPreferenceConstants.OPEN_PERSP_MODE);
-		openSameWindowButton
-				.setSelection(IPreferenceConstants.OPM_ACTIVE_PAGE == openPerspMode);
-		openNewWindowButton
-				.setSelection(IPreferenceConstants.OPM_NEW_WINDOW == openPerspMode);
-
-		String currentDefault = perspectiveRegistry.getDefaultPerspective();
-		
-		int index = indexOf(currentDefault);
-		if (index >= 0){
-			defaultPerspectiveId = currentDefault;
-			updatePerspectivesTable();
-			perspectivesTable.setSelection(index);			
-		}
-		
-		String newDefault = PrefUtil.getAPIPreferenceStore().getDefaultString(
-                IWorkbenchPreferenceConstants.DEFAULT_PERSPECTIVE_ID);
-		
-		IPerspectiveDescriptor desc = null;
-        if (newDefault != null) {
-			desc = workbench.getPerspectiveRegistry().findPerspectiveWithId(newDefault);
-		}
-        if (desc == null) {
-        	newDefault = workbench.getPerspectiveRegistry().getDefaultPerspective();
-        }
-        
-        defaultPerspectiveId = newDefault;
-        updatePerspectivesTable();
-
-	}
-
-	/**
-	 * Look up the index of the perpective with the given if.
-	 * @param perspectiveId or <code>null</code>
-	 * @return int -1 if it cannot be found
-	 */
-	private int indexOf(String perspectiveId) {
-		if (perspectiveId == null) {
-			return -1;
-		}
-		PerspectiveDescriptor[] descriptors =
-			new PerspectiveDescriptor[perspectives.size()];
-		perspectives.toArray(descriptors);
-		for (int i = 0; i < descriptors.length; i++) {
-			PerspectiveDescriptor descriptor = descriptors[i];
-			if(descriptor.getId().equals(perspectiveId)) {
-				return i;
-			}
-		}
-		return -1;
-	}
-
-	/**
-	 * Deletes the perspectives selected by the user if there is no opened
-	 * instance of that perspective.
-	 * 
-	 * @return boolean <code>true</code> if all of the perspectives could be
-	 *         deleted.
-	 */
-	private boolean findOpenInstance(IPerspectiveDescriptor desc) {
-		IWorkbenchWindow windows[] = workbench.getWorkbenchWindows();
-		
-		//find all active perspectives currently
-		for (int i = 0; i < windows.length; i++) {
-			IWorkbenchPage pages[] = windows[i].getPages();
-			for (int j = 0; j < pages.length; j++) {
-				WorkbenchPage page = (WorkbenchPage) pages[j];
-				if (page.findPerspective(desc) != null) {
-						if (!MessageDialog
-								.openQuestion(
-										getShell(),
-										WorkbenchMessages.PerspectivesPreference_perspectiveopen_title,
-										NLS.bind(WorkbenchMessages.PerspectivesPreference_perspectiveopen_message, desc.getLabel()))) {
-							return true;
-						}
-				}
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Apply the user's changes if any
-	 */
-	public boolean performOk() {
-		// Set the default perspective
-		if (!Util.equals(defaultPerspectiveId, perspectiveRegistry.getDefaultPerspective())) {
-			perspectiveRegistry.setDefaultPerspective(defaultPerspectiveId);
-		}
-		
-		//Delete the perspective
-		if(perspectives.size()<perspectiveRegistry.getPerspectives().length) {
-			IWorkbenchWindow windows[] = workbench.getWorkbenchWindows();
-			
-			// close any perspectives that are about to be deleted
-			for (int i = 0; i < windows.length; i++) {
-				IWorkbenchPage pages[] = windows[i].getPages();
-				for (int j = 0; j < pages.length; j++) {
-					WorkbenchPage page = (WorkbenchPage) pages[j];
-					for (int k = 0; k < perspToDelete.size(); k++) {
-						IPerspectiveDescriptor desc = (IPerspectiveDescriptor) perspToDelete.get(k);
-						if (page.findPerspective(desc) != null) {
-							page.closePerspective(desc, true, true);	
-						}
-					}
-				}
-			}
-			perspectiveRegistry.deletePerspectives(perspToDelete);
-		}
-				
-        // Revert the perspectives
-		perspectiveRegistry.revertPerspectives(perspToRevert);
-
-		IPreferenceStore store = getPreferenceStore();
-
-		// store the open view mode setting
-		store.setValue(IPreferenceConstants.OPEN_VIEW_MODE, openViewMode);
-
-		// store the open perspective mode setting
-		store.setValue(IPreferenceConstants.OPEN_PERSP_MODE, openPerspMode);
-
-		// save both the API prefs and the internal prefs
-		// the API prefs are modified by
-		// PerspectiveRegistry.setDefaultPerspective
-		PrefUtil.savePrefs();
-
-		return true;
-	}
-
-	/**
-	 * Update the button enablement state.
-	 */
-	protected void updateButtons() {
-		// Get selection.
-		int index = perspectivesTable.getSelectionIndex();
-
-		// Map it to the perspective descriptor
-		PerspectiveDescriptor desc = null;
-		if (index > -1) {
-			desc = (PerspectiveDescriptor) perspectives.get(index);
-		}
-
-		// Do enable.
-		if (desc != null) {
-			revertButton.setEnabled(desc.isPredefined()
-					&& desc.hasCustomDefinition()
-					&& !perspToRevert.contains(desc));
-			deleteButton.setEnabled(!desc.isPredefined());
-			setDefaultButton.setEnabled(true);
-		} else {
-			revertButton.setEnabled(false);
-			deleteButton.setEnabled(false);
-			setDefaultButton.setEnabled(false);
-		}
-	}
-
-	/**
-	 * Update the perspectivesTable.
-	 */
-	protected void updatePerspectivesTable() {
-        // Populate the table with the items
-		perspectivesTable.removeAll();
-		for (int i = 0; i < perspectives.size(); i++) {
-        	PerspectiveDescriptor persp = (PerspectiveDescriptor) perspectives.get(i);
-        	newPerspectivesTableItem(persp, i, false);
-        }
-    }
-	
-	/**
-	 * Create a new tableItem using given perspective, and set image for the new item.
-	 */
-	protected TableItem newPerspectivesTableItem(IPerspectiveDescriptor persp,
-            int index, boolean selected) {
-        
-        ImageDescriptor image = persp.getImageDescriptor();
-        
-        TableItem item = new TableItem(perspectivesTable, SWT.NULL, index);
-        if (image != null) {
-            Descriptors.setImage(item, image);
-        }
-        String label=persp.getLabel();
-        if (persp.getId().equals(defaultPerspectiveId)){
-			label = NLS.bind(WorkbenchMessages.PerspectivesPreference_defaultLabel, label ); 
-    	    
-		}
-        item.setText(label);
-        item.setData(persp);
-        if (selected) {
-        	perspectivesTable.setSelection(index);
-        }
-
-        return item;
-    }
-
-    /**
-	 * Notifies that this page's button with the given id has been pressed.
-	 * 
-	 * @param button
-	 *            the button that was pressed
-	 */
-	protected void verticalButtonPressed(Widget button) {
-		// Get selection.
-		int index = perspectivesTable.getSelectionIndex();
-
-		// Map it to the perspective descriptor
-		PerspectiveDescriptor desc = null;
-		if (index > -1) {
-			desc = (PerspectiveDescriptor) perspectives.get(index);
-		} else {
-			return;
-		}
-
-		// Take action.
-		if (button == revertButton) {
-			if (desc.isPredefined() && !perspToRevert.contains(desc)) {
-				perspToRevert.add(desc);
-			}
-		} else if (button == deleteButton) {
-			if (!desc.isPredefined() && !perspToDelete.contains(desc)) {
-				if(!findOpenInstance(desc)){
-					perspToDelete.add(desc);
-					perspToRevert.remove(desc);
-					perspectives.remove(desc);				
-					updatePerspectivesTable();
-				}
-					
-			}
-		} else if (button == setDefaultButton) {
-			defaultPerspectiveId = desc.getId();
-			updatePerspectivesTable();
-			perspectivesTable.setSelection(index);
-		}
-
-		updateButtons();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
deleted file mode 100644
index a2cc73a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceBoldLabelProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.preference.PreferenceLabelProvider;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-/**
- * This PreferenceBoldLabelProvider will bold those elements which really match
- * the search contents
- */
-public class PreferenceBoldLabelProvider extends PreferenceLabelProvider
-		implements IFontProvider {
-
-	private FilteredTree filterTree;
-	private PatternFilter filterForBoldElements = new PreferencePatternFilter();
-	
-	PreferenceBoldLabelProvider(FilteredTree filterTree) {
-		this.filterTree = filterTree;
-	}
-
-	public Font getFont(Object element) {
-		return FilteredTree.getBoldFont(element, filterTree,
-				filterForBoldElements);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java
deleted file mode 100644
index 7c2c793..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceHistoryEntry.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A preference history entry.
- * 
- * @since 3.1
- */
-final class PreferenceHistoryEntry {
-	private String id;
-	private String label;
-	private Object argument;
-	
-	/**
-	 * Creates a new entry.
-	 * 
-	 * @param id the preference page id
-	 * @param label the label to display, usually the preference page label
-	 * @param argument an argument to pass to the preference page, may be
-	 *        <code>null</code>
-	 */
-	public PreferenceHistoryEntry(String id, String label, Object argument) {
-		Assert.isLegal(id != null);
-		Assert.isLegal(label != null);
-		this.id= id;
-		this.label= label;
-		this.argument= argument;
-	}
-	/**
-	 * Returns the preference page id.
-	 * 
-	 * @return the preference page id
-	 */
-	public String getId() {
-		return id;
-	}
-	/**
-	 * Returns the preference page argument.
-	 * 
-	 * @return the preference page argument
-	 */
-	public Object getArgument() {
-		return argument;
-	}
-	/**
-	 * Returns the preference page label.
-	 * 
-	 * @return the preference page label
-	 */
-	public String getLabel() {
-		return label;
-	}
-	/*
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		if (argument == null) {
-			return id;
-		}
-		return id + "(" + argument + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	/*
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object obj) {
-		if (obj instanceof PreferenceHistoryEntry) {
-			PreferenceHistoryEntry other= (PreferenceHistoryEntry) obj;
-			return id.equals(other.id)
-					&& (argument == null && other.argument == null
-							|| argument.equals(other.argument));
-		}
-		return super.equals(obj);
-	}
-	/*
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		int argHash= argument == null ? 0 : argument.hashCode() & 0x0000ffff;
-		return id.hashCode() << 16 | argHash;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java
deleted file mode 100644
index a43ffb6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferenceNodeFilter.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-
-/**
- * The PreferenceNodeFilter is a filter that only matches
- * a set of ids.
- */
-public class PreferenceNodeFilter extends ViewerFilter {
-
-	Collection ids = new HashSet();
-
-	/**
-	 * Create a new instance of the receiver on a
-	 * list of filteredIds.
-	 * @param filteredIds The collection of ids that
-	 * will be shown.
-	 */
-	public PreferenceNodeFilter(String[] filteredIds) {
-		super();
-		for (int i = 0; i < filteredIds.length; i++) {
-			ids.add(filteredIds[i]);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-	 */
-	public boolean select(Viewer viewer, Object parentElement, Object element) {
-		return checkNodeAndChildren((IPreferenceNode) element);
-	}
-
-	/**
-	 * Check to see if the node or any of its children 
-	 * have an id in the ids.
-	 * @param node WorkbenchPreferenceNode
-	 * @return boolean <code>true</code> if node or oe of its children
-	 * has an id in the ids.
-	 */
-	private boolean checkNodeAndChildren(IPreferenceNode node) {
-		if(ids.contains(node.getId())) {
-			return true;
-		}
-		
-		IPreferenceNode[] subNodes = node.getSubNodes();
-		for (int i = 0; i < subNodes.length; i++) {
-			if(checkNodeAndChildren(subNodes[i])) {
-				return true;
-			}
-			
-		}
-		return false;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java
deleted file mode 100644
index c498c11..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePageHistory.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.commands.ActionHandler;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.ActiveShellExpression;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * History for navigating preference pages.
- * 
- * @since 3.1
- */
-class PreferencePageHistory {
-
-	/**
-	 * The history toolbar.
-	 */
-	private ToolBarManager historyToolbar;
-
-	/**
-	 * A list of preference history domain elements that stores the history of
-	 * the visited preference pages.
-	 */
-	private List history = new ArrayList();
-
-	/**
-	 * Stores the current entry into <code>history</code> and
-	 * <code>historyLabels</code>.
-	 */
-	private int historyIndex = -1;
-
-	/**
-	 * The preference dialog we implement the history for.
-	 */
-	private final FilteredPreferenceDialog dialog;
-
-	/**
-	 * The handler submission for these controls.
-	 */
-	private Set activations = new HashSet();
-
-	/**
-	 * Creates a new history for the given dialog.
-	 * 
-	 * @param dialog
-	 *            the preference dialog to create a history for
-	 */
-	public PreferencePageHistory(FilteredPreferenceDialog dialog) {
-		this.dialog = dialog;
-	}
-
-	/**
-	 * Returns the preference page path (for now: its id) for the history at
-	 * <code>index</code>.
-	 * 
-	 * @param index
-	 *            the index into the history
-	 * @return the preference page path at <code>index</code> or
-	 *         <code>null</code> if <code>index</code> is not a valid
-	 *         history index
-	 */
-	private PreferenceHistoryEntry getHistoryEntry(int index) {
-		if (index >= 0 && index < history.size()) {
-			return (PreferenceHistoryEntry) history.get(index);
-		}
-		return null;
-	}
-
-	/**
-	 * Adds the preference page path and its label to the page history.
-	 * 
-	 * @param entry
-	 *            the preference page history entry
-	 */
-	public void addHistoryEntry(PreferenceHistoryEntry entry) {
-		if (historyIndex == -1 || !history.get(historyIndex).equals(entry)) {
-			history.subList(historyIndex + 1, history.size()).clear();
-			history.add(entry);
-			historyIndex++;
-			updateHistoryControls();
-		}
-	}
-
-	/**
-	 * Sets the current page to be the one corresponding to the given index in
-	 * the page history.
-	 * 
-	 * @param index
-	 *            the index into the page history
-	 */
-	private void jumpToHistory(int index) {
-		if (index >= 0 && index < history.size()) {
-			historyIndex = index;
-			dialog.setCurrentPageId(getHistoryEntry(index).getId());
-		}
-		updateHistoryControls();
-	}
-
-	/**
-	 * Updates the history controls.
-	 * 
-	 */
-	private void updateHistoryControls() {
-		historyToolbar.update(false);
-		IContributionItem[] items = historyToolbar.getItems();
-		for (int i = 0; i < items.length; i++) {
-			items[i].update(IAction.ENABLED);
-			items[i].update(IAction.TOOL_TIP_TEXT);
-		}
-	}
-
-	/**
-	 * Creates the history toolbar and initializes <code>historyToolbar</code>.
-	 * 
-	 * @param historyBar
-	 * @param manager
-	 * @return the control of the history toolbar
-	 */
-	public ToolBar createHistoryControls(ToolBar historyBar,
-			ToolBarManager manager) {
-
-		historyToolbar = manager;
-		/**
-		 * Superclass of the two for-/backward actions for the history.
-		 */
-		abstract class HistoryNavigationAction extends Action implements
-				IMenuCreator {
-			private Menu lastMenu;
-
-			protected final static int MAX_ENTRIES = 5;
-
-			HistoryNavigationAction() {
-				super("", IAction.AS_DROP_DOWN_MENU); //$NON-NLS-1$
-			}
-
-			public IMenuCreator getMenuCreator() {
-				return this;
-			}
-
-			public void dispose() {
-				if (lastMenu != null) {
-					lastMenu.dispose();
-					lastMenu = null;
-				}
-			}
-
-			public Menu getMenu(Control parent) {
-				if (lastMenu != null) {
-					lastMenu.dispose();
-				}
-				lastMenu = new Menu(parent);
-				createEntries(lastMenu);
-				return lastMenu;
-
-			}
-
-			public Menu getMenu(Menu parent) {
-				return null;
-			}
-
-			protected void addActionToMenu(Menu parent, IAction action) {
-				ActionContributionItem item = new ActionContributionItem(action);
-				item.fill(parent, -1);
-			}
-
-			protected abstract void createEntries(Menu menu);
-		}
-
-		/**
-		 * Menu entry for the toolbar dropdowns. Instances are direct-jump
-		 * entries in the navigation history.
-		 */
-		class HistoryItemAction extends Action {
-
-			private final int index;
-
-			HistoryItemAction(int index, String label) {
-				super(label, IAction.AS_PUSH_BUTTON);
-				this.index = index;
-			}
-
-			public void run() {
-				jumpToHistory(index);
-			}
-		}
-
-		HistoryNavigationAction backward = new HistoryNavigationAction() {
-			public void run() {
-				jumpToHistory(historyIndex - 1);
-			}
-
-			public boolean isEnabled() {
-				boolean enabled = historyIndex > 0;
-				if (enabled) {
-					setToolTipText(NLS.bind(WorkbenchMessages.NavigationHistoryAction_backward_toolTipName,getHistoryEntry(historyIndex - 1).getLabel() ));
-				} 
-				return enabled;
-			}
-
-			protected void createEntries(Menu menu) {
-				int limit = Math.max(0, historyIndex - MAX_ENTRIES);
-				for (int i = historyIndex - 1; i >= limit; i--) {
-					IAction action = new HistoryItemAction(i,
-							getHistoryEntry(i).getLabel());
-					addActionToMenu(menu, action);
-				}
-			}
-		};
-		backward.setText(WorkbenchMessages.NavigationHistoryAction_backward_text); 
-		backward
-				.setActionDefinitionId("org.eclipse.ui.navigate.backwardHistory"); //$NON-NLS-1$
-		backward.setImageDescriptor(WorkbenchPlugin.getDefault()
-				.getSharedImages().getImageDescriptor(
-						ISharedImages.IMG_TOOL_BACK));
-		backward.setDisabledImageDescriptor(WorkbenchPlugin.getDefault()
-				.getSharedImages().getImageDescriptor(
-						ISharedImages.IMG_TOOL_BACK_DISABLED));		
-		registerKeybindings(backward);
-		historyToolbar.add(backward);
-
-		HistoryNavigationAction forward = new HistoryNavigationAction() {
-			public void run() {
-				jumpToHistory(historyIndex + 1);
-			}
-
-			public boolean isEnabled() {
-				boolean enabled = historyIndex < history.size() - 1;
-				if (enabled) {
-					setToolTipText(NLS.bind(WorkbenchMessages.NavigationHistoryAction_forward_toolTipName, getHistoryEntry(historyIndex + 1).getLabel() ));
-				} 
-				return enabled;
-			}
-
-			protected void createEntries(Menu menu) {
-				int limit = Math.min(history.size(), historyIndex + MAX_ENTRIES
-						+ 1);
-				for (int i = historyIndex + 1; i < limit; i++) {
-					IAction action = new HistoryItemAction(i,
-							getHistoryEntry(i).getLabel());
-					addActionToMenu(menu, action);
-				}
-			}
-		};
-		forward.setText(WorkbenchMessages.NavigationHistoryAction_forward_text); 
-		forward.setActionDefinitionId("org.eclipse.ui.navigate.forwardHistory"); //$NON-NLS-1$
-		forward.setImageDescriptor(WorkbenchPlugin.getDefault()
-				.getSharedImages().getImageDescriptor(
-						ISharedImages.IMG_TOOL_FORWARD));
-		forward.setDisabledImageDescriptor(WorkbenchPlugin.getDefault()
-				.getSharedImages().getImageDescriptor(
-						ISharedImages.IMG_TOOL_FORWARD_DISABLED));
-		registerKeybindings(forward);
-		historyToolbar.add(forward);
-
-		return historyBar;
-	}
-
-	/**
-	 * Registers the given action with the workbench command support.
-	 * 
-	 * @param action
-	 *            the action to register.
-	 */
-	private void registerKeybindings(IAction action) {
-		final IHandler handler = new ActionHandler(action);
-		final IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
-		final IHandlerActivation activation = handlerService.activateHandler(
-				action.getActionDefinitionId(), handler,
-				new ActiveShellExpression(dialog.getShell()));
-		activations.add(activation);
-	}
-
-	/**
-	 * Dispose the receiver and clear out the references.
-	 *
-	 */
-	public void dispose() {
-		final IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
-		final Iterator iterator = activations.iterator();
-		while (iterator.hasNext()) {
-			handlerService.deactivateHandler((IHandlerActivation) iterator
-					.next());
-		}
-		activations.clear();
-		
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java
deleted file mode 100644
index 83c12e5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencePatternFilter.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.internal.preferences.WorkbenchPreferenceExtensionNode;
-
-/**
- * A class that handles filtering preference node items based on a supplied
- * matching string.
- * 
- * @since 3.2
- * 
- */
-public class PreferencePatternFilter extends PatternFilter {
-
-	/**
-	 * this cache is needed because
-	 * WorkbenchPreferenceExtensionNode.getKeywordLabels() is expensive. When it
-	 * tracks keyword changes effectivly than this cache can be removed.
-	 */
-	private Map keywordCache = new HashMap();
-
-	/**
-	 * Create a new instance of a PreferencePatternFilter
-	 * 
-	 * @param isMatchItem
-	 */
-	public PreferencePatternFilter() {
-		super();
-	}
-
-	/*
-	 * Return true if the given Object matches with any possible keywords that
-	 * have been provided. Currently this is only applicable for preference and
-	 * property pages.
-	 */
-	private String[] getKeywords(Object element) {
-		List keywordList = new ArrayList();
-		if (element instanceof WorkbenchPreferenceExtensionNode) {
-			WorkbenchPreferenceExtensionNode workbenchNode = (WorkbenchPreferenceExtensionNode) element;
-
-			Collection keywordCollection = (Collection) keywordCache
-					.get(element);
-			if (keywordCollection == null) {
-				keywordCollection = workbenchNode.getKeywordLabels();
-				keywordCache.put(element, keywordCollection);
-			}
-			if (!keywordCollection.isEmpty()){
-				Iterator keywords = keywordCollection.iterator();
-				while (keywords.hasNext()) {
-					keywordList.add(keywords.next());
-				}
-			}
-		}
-		return (String[]) keywordList.toArray(new String[keywordList.size()]);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.dialogs.PatternFilter#isElementSelectable(java.lang.Object)
-	 */
-	public boolean isElementSelectable(Object element) {
-		return element instanceof WorkbenchPreferenceExtensionNode;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dialogs.PatternFilter#isElementVisible(org.eclipse.jface.viewers.Viewer, java.lang.Object)
-	 */
-	public boolean isElementVisible(Viewer viewer, Object element) {
-	    if (WorkbenchActivityHelper.restrictUseOf(
-	            element))
-	        return false;
-	    
-		// Preference nodes are not differentiated based on category since 
-		// categories are selectable nodes.
-		if (isLeafMatch(viewer, element)) {
-			return true;
-		}
-
-		ITreeContentProvider contentProvider = (ITreeContentProvider) ((TreeViewer) viewer)
-				.getContentProvider();
-		IPreferenceNode node = (IPreferenceNode) element;
-		Object[] children = contentProvider.getChildren(node);
-		// Will return true if any subnode of the element matches the search
-		if (filter(viewer, element, children).length > 0) {
-			return true;
-		}		
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dialogs.PatternFilter#isLeafMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object)
-	 * 
-	 */
-	protected boolean isLeafMatch(Viewer viewer, Object element) {
-		IPreferenceNode node = (IPreferenceNode) element;
-		String text = node.getLabelText();
-
-		if (wordMatches(text)) {
-			return true;
-		}
-
-		// Also need to check the keywords
-		String[] keywords = getKeywords(node);
-		for (int i = 0; i < keywords.length; i++){
-			if (wordMatches(keywords[i])) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencesPageContainer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencesPageContainer.java
deleted file mode 100644
index 72593c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PreferencesPageContainer.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.IPreferencePageContainer;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-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;
-
-/**
- * The PreferencesPageContainer is the container object for the preference pages
- * in a node.
- */
-public class PreferencesPageContainer implements IPreferencePageContainer {
-
-	private Composite control;
-
-	private ScrolledComposite scrolled;
-
-	private class PreferenceEntry {
-
-		Composite composite;
-
-		IPreferenceNode node;
-
-		String title;
-
-		int offset;
-
-		Label expandImage;
-
-		Label titleLabel;
-
-		Composite pageContainer;
-
-		/**
-		 * Create a new instance of the receiver.
-		 * 
-		 * @param displayedNode
-		 * @param pageTitle
-		 */
-		PreferenceEntry(IPreferenceNode displayedNode, String pageTitle) {
-			node = displayedNode;
-			title = pageTitle;
-		}
-
-		/**
-		 * Add the subnodes of the receiver.
-		 */
-		private void addSubNodes() {
-			IPreferenceNode[] subnodes = node.getSubNodes();
-			PreferenceEntry previous = null;
-			for (int i = 0; i < subnodes.length; i++) {
-				PreferenceEntry entry = createEntry(subnodes[i], subnodes[i]
-						.getLabelText(), offset + 1);
-				if (previous == null) {
-					entry.composite.moveBelow(this.composite);
-				} else {
-					entry.composite.moveBelow(previous.composite);
-				}
-				previous = entry;
-			}
-		}
-
-		/**
-		 * Create the contents of the entry in parent. When laying this out
-		 * indent the composite ident units.
-		 * 
-		 * @param indent
-		 */
-		void createContents(int indent) {
-
-			composite = new Composite(control, SWT.NULL);
-
-			// Create the title area which will contain
-			// a title, message, and image.
-
-			GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
-			gridData.horizontalIndent = IDialogConstants.SMALL_INDENT * indent;
-			composite.setLayoutData(gridData);
-
-			FormLayout layout = new FormLayout();
-			layout.marginHeight = 0;
-			layout.marginWidth = 0;
-			composite.setLayout(layout);
-
-			Font titleFont = JFaceResources.getBannerFont();
-
-			expandImage = new Label(composite, SWT.RIGHT);
-			expandImage.setText("+");//$NON-NLS-1$
-			expandImage.setFont(titleFont);
-
-			FormData imageData = new FormData();
-			imageData.top = new FormAttachment(0);
-			imageData.left = new FormAttachment(0,
-					IDialogConstants.HORIZONTAL_SPACING);
-			expandImage.setLayoutData(imageData);
-
-			// Title image
-			titleLabel = new Label(composite, SWT.LEFT);
-			titleLabel.setText(title);
-			titleLabel.setFont(titleFont);
-
-			FormData titleData = new FormData();
-			titleData.right = new FormAttachment(100);
-			titleData.top = new FormAttachment(0);
-			titleData.left = new FormAttachment(expandImage,
-					IDialogConstants.HORIZONTAL_SPACING);
-			titleLabel.setLayoutData(titleData);
-
-			titleLabel.addMouseListener(new MouseAdapter() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent)
-				 */
-				public void mouseDown(MouseEvent e) {
-
-					if (pageContainer == null) {
-						boolean adjustScrollbars = false;
-
-						pageContainer = new Composite(composite, SWT.BORDER);
-
-						FormData containerData = new FormData();
-						containerData.top = new FormAttachment(titleLabel, 0);
-						containerData.left = new FormAttachment(0);
-						containerData.right = new FormAttachment(100);
-						pageContainer.setLayoutData(containerData);
-
-						pageContainer.setLayout(new GridLayout());
-
-						node.createPage();
-						node.getPage().createControl(pageContainer);
-						node.getPage().setContainer(
-								PreferencesPageContainer.this);
-						node.getPage().getControl().setLayoutData(
-								new GridData(GridData.FILL_BOTH));
-						adjustScrollbars = true;
-
-						Point contentSize = node.getPage().computeSize();
-						Rectangle totalArea = composite.getClientArea();
-
-						if (contentSize.x < totalArea.width) {
-							contentSize.x = totalArea.width;
-						}
-
-						node.getPage().setSize(contentSize);
-						if (adjustScrollbars) {
-							adjustScrollbars(contentSize);
-						}
-
-						expandImage.setText("-");//$NON-NLS-1$
-
-						addSubNodes();
-
-						setSelectionColors(composite.getDisplay()
-								.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-					} else {
-						setSelectionColors(null);
-						pageContainer.dispose();
-						pageContainer = null;
-						expandImage.setText("+");//$NON-NLS-1$
-					}
-
-					control.layout(true);
-				}
-			});
-			offset = indent;
-		}
-
-		/**
-		 * Set the background colors and the labels due to selection.
-		 * 
-		 * @param highlight
-		 *            The highlight to set
-		 */
-		private void setSelectionColors(Color highlight) {
-			composite.setBackground(highlight);
-			titleLabel.setBackground(highlight);
-			expandImage.setBackground(highlight);
-		}
-
-	}
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	public PreferencesPageContainer() {
-		super();
-	}
-
-	/**
-	 * Create the contents area of the composite.
-	 * 
-	 * @param parent
-	 * @param style
-	 */
-	void createContents(Composite parent, int style) {
-		scrolled = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
-
-		GridData newPageData = new GridData(GridData.FILL_BOTH);
-		scrolled.setLayoutData(newPageData);
-
-		control = new Composite(scrolled, style);
-
-		scrolled.setContent(control);
-		scrolled.setExpandVertical(true);
-		scrolled.setExpandHorizontal(true);
-		GridData controlData = new GridData(GridData.FILL_BOTH);
-		control.setLayoutData(controlData);
-
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		layout.verticalSpacing = 1;
-		control.setLayout(layout);
-
-	}
-
-	/**
-	 * Return the top level control
-	 * 
-	 * @return Control
-	 */
-	Control getControl() {
-		return control;
-	}
-
-	/**
-	 * Show the selected node. Return whether or not this succeeded.
-	 * 
-	 * @param node
-	 * @return <code>true</code> if the page selection was sucessful
-	 *         <code>false</code> is unsuccessful
-	 */
-	boolean show(IPreferenceNode node) {
-		createGeneralEntry(node);
-		control.layout(true);
-		return true;
-	}
-
-	/**
-	 * Create an entry for the receiver with the general tag. Do not recurse
-	 * through the children as this is the implied top node.
-	 * 
-	 * @param node
-	 */
-	private void createGeneralEntry(IPreferenceNode node) {
-		PreferenceEntry entry = createEntry(node, "General", 0); //$NON-NLS-1$
-		entry.addSubNodes();
-
-	}
-
-	/**
-	 * Create an entry with the given title for the IPreferenceNode with an
-	 * indent i.
-	 * 
-	 * @param node
-	 * @param name
-	 * @param indent
-	 * @return the entry
-	 */
-	private PreferenceEntry createEntry(IPreferenceNode node, String name,
-			int indent) {
-		PreferenceEntry entry = new PreferenceEntry(node, name);
-		entry.createContents(indent);
-		return entry;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#getPreferenceStore()
-	 */
-	public IPreferenceStore getPreferenceStore() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#updateButtons()
-	 */
-	public void updateButtons() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#updateMessage()
-	 */
-	public void updateMessage() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferencePageContainer#updateTitle()
-	 */
-	public void updateTitle() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/**
-	 * Adjust the scrollbars for the content that just got added.
-	 * 
-	 * @param contentSize
-	 */
-	private void adjustScrollbars(Point contentSize) {
-
-		Point size = control.getSize();
-		scrolled.setMinHeight(size.y + contentSize.y);
-		scrolled.setMinWidth(Math.max(size.x, contentSize.x));
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ProductInfoDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ProductInfoDialog.java
deleted file mode 100644
index d317340..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ProductInfoDialog.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.browser.IWebBrowser;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.about.AboutItem;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Abstract superclass of about dialogs 
- */
-
-public abstract class ProductInfoDialog extends TrayDialog {
-
-    private AboutItem item;
-
-    private Cursor handCursor;
-
-    private Cursor busyCursor;
-
-    private boolean mouseDown = false;
-
-    private boolean dragEvent = false;
-
-    /**
-     * Create an instance of this Dialog
-     */
-    public ProductInfoDialog(Shell parentShell) {
-        super(parentShell);
-    }
-
-    /**
-     * Adds listeners to the given styled text
-     */
-    protected void addListeners(StyledText styledText) {
-        styledText.addMouseListener(new MouseAdapter() {
-            public void mouseDown(MouseEvent e) {
-                if (e.button != 1) {
-                    return;
-                }
-                mouseDown = true;
-            }
-
-            public void mouseUp(MouseEvent e) {
-                mouseDown = false;
-                StyledText text = (StyledText) e.widget;
-                int offset = text.getCaretOffset();
-                if (dragEvent) {
-                    // don't activate a link during a drag/mouse up operation
-                    dragEvent = false;
-                    if (item != null && item.isLinkAt(offset)) {
-                        text.setCursor(handCursor);
-                    }
-                } else if (item != null && item.isLinkAt(offset)) {
-                    text.setCursor(busyCursor);
-                    openLink(item.getLinkAt(offset));
-                    StyleRange selectionRange = getCurrentRange(text);
-                    text.setSelectionRange(selectionRange.start,
-                            selectionRange.length);
-                    text.setCursor(null);
-                }
-            }
-        });
-
-        styledText.addMouseMoveListener(new MouseMoveListener() {
-            public void mouseMove(MouseEvent e) {
-                // Do not change cursor on drag events
-                if (mouseDown) {
-                    if (!dragEvent) {
-                        StyledText text = (StyledText) e.widget;
-                        text.setCursor(null);
-                    }
-                    dragEvent = true;
-                    return;
-                }
-                StyledText text = (StyledText) e.widget;
-                int offset = -1;
-                try {
-                    offset = text.getOffsetAtLocation(new Point(e.x, e.y));
-                } catch (IllegalArgumentException ex) {
-                    // leave value as -1
-                }
-                if (offset == -1) {
-					text.setCursor(null);
-				} else if (item != null && item.isLinkAt(offset)) {
-					text.setCursor(handCursor);
-				} else {
-					text.setCursor(null);
-				}
-            }
-        });
-
-        styledText.addTraverseListener(new TraverseListener() {
-            public void keyTraversed(TraverseEvent e) {
-                StyledText text = (StyledText) e.widget;
-                switch (e.detail) {
-                case SWT.TRAVERSE_ESCAPE:
-                    e.doit = true;
-                    break;
-                case SWT.TRAVERSE_TAB_NEXT:
-                    //Previously traverse out in the backward direction?
-                    Point nextSelection = text.getSelection();
-                    int charCount = text.getCharCount();
-                    if ((nextSelection.x == charCount)
-                            && (nextSelection.y == charCount)) {
-                        text.setSelection(0);
-                    }
-                    StyleRange nextRange = findNextRange(text);
-                    if (nextRange == null) {
-                        // Next time in start at beginning, also used by 
-                        // TRAVERSE_TAB_PREVIOUS to indicate we traversed out
-                        // in the forward direction
-                        text.setSelection(0);
-                        e.doit = true;
-                    } else {
-                        text.setSelectionRange(nextRange.start,
-                                nextRange.length);
-                        e.doit = true;
-                        e.detail = SWT.TRAVERSE_NONE;
-                    }
-                    break;
-                case SWT.TRAVERSE_TAB_PREVIOUS:
-                    //Previously traverse out in the forward direction?
-                    Point previousSelection = text.getSelection();
-                    if ((previousSelection.x == 0)
-                            && (previousSelection.y == 0)) {
-						text.setSelection(text.getCharCount());
-					}
-                    StyleRange previousRange = findPreviousRange(text);
-                    if (previousRange == null) {
-                        // Next time in start at the end, also used by 
-                        // TRAVERSE_TAB_NEXT to indicate we traversed out
-                        // in the backward direction
-                        text.setSelection(text.getCharCount());
-                        e.doit = true;
-                    } else {
-                        text.setSelectionRange(previousRange.start,
-                                previousRange.length);
-                        e.doit = true;
-                        e.detail = SWT.TRAVERSE_NONE;
-                    }
-                    break;
-                default:
-                    break;
-                }
-            }
-        });
-
-        //Listen for Tab and Space to allow keyboard navigation
-        styledText.addKeyListener(new KeyAdapter() {
-            public void keyPressed(KeyEvent event) {
-                StyledText text = (StyledText) event.widget;
-                if (event.character == ' ' || event.character == SWT.CR) {
-                    if (item != null) {
-                        //Be sure we are in the selection
-                        int offset = text.getSelection().x + 1;
-
-                        if (item.isLinkAt(offset)) {
-                            text.setCursor(busyCursor);
-                            openLink(item.getLinkAt(offset));
-                            StyleRange selectionRange = getCurrentRange(text);
-                            text.setSelectionRange(selectionRange.start,
-                                    selectionRange.length);
-                            text.setCursor(null);
-                        }
-                    }
-                    return;
-                }
-            }
-        });
-    }
-
-    /**
-     * Gets the busy cursor.
-     * @return the busy cursor
-     */
-    protected Cursor getBusyCursor() {
-        return busyCursor;
-    }
-
-    /**
-     * Sets the busy cursor.
-     * @param busyCursor the busy cursor
-     */
-    protected void setBusyCursor(Cursor busyCursor) {
-        this.busyCursor = busyCursor;
-    }
-
-    /**
-     * Gets the hand cursor.
-     * @return Returns a hand cursor
-     */
-    protected Cursor getHandCursor() {
-        return handCursor;
-    }
-
-    /**
-     * Sets the hand cursor.
-     * @param handCursor The hand cursor to set
-     */
-    protected void setHandCursor(Cursor handCursor) {
-        this.handCursor = handCursor;
-    }
-
-    /**
-     * Gets the about item.
-     * @return the about item
-     */
-    protected AboutItem getItem() {
-        return item;
-    }
-
-    /**
-     * Sets the about item.
-     * @param item about item
-     */
-    protected void setItem(AboutItem item) {
-        this.item = item;
-    }
-
-    /**
-     * Find the range of the current selection.
-     */
-    protected StyleRange getCurrentRange(StyledText text) {
-        StyleRange[] ranges = text.getStyleRanges();
-        int currentSelectionEnd = text.getSelection().y;
-        int currentSelectionStart = text.getSelection().x;
-
-        for (int i = 0; i < ranges.length; i++) {
-            if ((currentSelectionStart >= ranges[i].start)
-                    && (currentSelectionEnd <= (ranges[i].start + ranges[i].length))) {
-                return ranges[i];
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Find the next range after the current 
-     * selection.
-     */
-    protected StyleRange findNextRange(StyledText text) {
-        StyleRange[] ranges = text.getStyleRanges();
-        int currentSelectionEnd = text.getSelection().y;
-
-        for (int i = 0; i < ranges.length; i++) {
-            if (ranges[i].start >= currentSelectionEnd) {
-				return ranges[i];
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Find the previous range before the current selection.
-     */
-    protected StyleRange findPreviousRange(StyledText text) {
-        StyleRange[] ranges = text.getStyleRanges();
-        int currentSelectionStart = text.getSelection().x;
-
-        for (int i = ranges.length - 1; i > -1; i--) {
-            if ((ranges[i].start + ranges[i].length - 1) < currentSelectionStart) {
-				return ranges[i];
-			}
-        }
-        return null;
-    }
-
-    /**
-     * display an error message
-     */
-    private void openWebBrowserError(final String href, final Throwable t) {
-        String title = WorkbenchMessages.ProductInfoDialog_errorTitle;
-		String msg = NLS.bind(
-				WorkbenchMessages.ProductInfoDialog_unableToOpenWebBrowser,
-				href);
-		IStatus status = WorkbenchPlugin.getStatus(t);
-		StatusUtil.handleStatus(status, title + ": " + msg, StatusManager.SHOW, //$NON-NLS-1$
-				getShell());
-    }
-
-    /**
-     * Open a link
-     */
-    protected void openLink(String href) {
-        // format the href for an html file (file:///<filename.html>
-        // required for Mac only.
-        if (href.startsWith("file:")) { //$NON-NLS-1$
-            href = href.substring(5);
-            while (href.startsWith("/")) { //$NON-NLS-1$
-                href = href.substring(1);
-            }
-            href = "file:///" + href; //$NON-NLS-1$
-        }
-		IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
-		try {
-			IWebBrowser browser = support.getExternalBrowser();
-			browser.openURL(new URL(urlEncodeForSpaces(href.toCharArray())));
-		}
-		catch (MalformedURLException e) {
-			openWebBrowserError(href, e);
-		}
-		catch (PartInitException e) {
-			openWebBrowserError(href, e);
-		}
-    }
-
-    /**
-     * This method encodes the url, removes the spaces from the url and replaces
-     * the same with <code>"%20"</code>. This method is required to fix Bug
-     * 77840.
-     * 
-     * @since 3.0.2
-     */
-    private String urlEncodeForSpaces(char[] input) {
-       StringBuffer retu = new StringBuffer(input.length);
-       for (int i = 0; i < input.length; i++) {
-           if (input[i] == ' ') {
-			retu.append("%20"); //$NON-NLS-1$
-		} else {
-			retu.append(input[i]);
-		}
-       }
-       return retu.toString();
-    }
-
-    /**
-     * Open a browser with the argument title on the argument url.  If the url refers to a
-     * resource within a bundle, then a temp copy of the file will be extracted and opened.
-     * @see <code>Platform.asLocalUrl</code>
-     * @param url The target url to be displayed, null will be safely ignored
-     * @return true if the url was successfully displayed and false otherwise
-     */
-    protected boolean openBrowser(URL url) {
-        if (url != null) {
-			try {
-                url = Platform.asLocalURL(url);
-            } catch (IOException e) {
-                return false;
-            }
-		}
-        if (url == null) {
-			return false;
-		}
-        openLink(url.toString());
-        return true;
-    }
-
-    /**
-     * Sets the styled text's bold ranges
-     */
-    protected void setBoldRanges(StyledText styledText, int[][] boldRanges) {
-        for (int i = 0; i < boldRanges.length; i++) {
-            StyleRange r = new StyleRange(boldRanges[i][0], boldRanges[i][1],
-                    null, null, SWT.BOLD);
-            styledText.setStyleRange(r);
-        }
-    }
-
-    /**
-     * Sets the styled text's link (blue) ranges
-     */
-    protected void setLinkRanges(StyledText styledText, int[][] linkRanges) {
-        Color fg = JFaceColors.getHyperlinkText(styledText.getShell()
-                .getDisplay());
-        for (int i = 0; i < linkRanges.length; i++) {
-            StyleRange r = new StyleRange(linkRanges[i][0], linkRanges[i][1],
-                    fg, null);
-            styledText.setStyleRange(r);
-        }
-    }
-
-    /**
-     * Scan the contents of the about text
-     */
-    protected AboutItem scan(String s) {
-        ArrayList linkRanges = new ArrayList();
-        ArrayList links = new ArrayList();
-        
-        // slightly modified version of jface url detection
-        // see org.eclipse.jface.text.hyperlink.URLHyperlinkDetector
-        
-		int urlSeparatorOffset= s.indexOf("://"); //$NON-NLS-1$
-		while(urlSeparatorOffset >= 0) {
-	
-			boolean startDoubleQuote= false;
-	
-			// URL protocol (left to "://")
-			int urlOffset= urlSeparatorOffset;
-			char ch;
-			do {
-				urlOffset--;
-				ch= ' ';
-				if (urlOffset > -1)
-					ch= s.charAt(urlOffset);
-				startDoubleQuote= ch == '"';
-			} while (Character.isUnicodeIdentifierStart(ch));
-			urlOffset++;
-			
-	
-			// Right to "://"
-			StringTokenizer tokenizer= new StringTokenizer(s.substring(urlSeparatorOffset + 3), " \t\n\r\f<>", false); //$NON-NLS-1$
-			if (!tokenizer.hasMoreTokens())
-				return null;
-	
-			int urlLength= tokenizer.nextToken().length() + 3 + urlSeparatorOffset - urlOffset;
-	
-			if (startDoubleQuote) {
-				int endOffset= -1;
-				int nextDoubleQuote= s.indexOf('"', urlOffset);
-				int nextWhitespace= s.indexOf(' ', urlOffset);
-				if (nextDoubleQuote != -1 && nextWhitespace != -1)
-					endOffset= Math.min(nextDoubleQuote, nextWhitespace);
-				else if (nextDoubleQuote != -1)
-					endOffset= nextDoubleQuote;
-				else if (nextWhitespace != -1)
-					endOffset= nextWhitespace;
-				if (endOffset != -1)
-					urlLength= endOffset - urlOffset;
-			}
-			
-			linkRanges.add(new int[] { urlOffset, urlLength });
-			links.add(s.substring(urlOffset, urlOffset+urlLength));
-			
-			urlSeparatorOffset= s.indexOf("://", urlOffset+urlLength+1); //$NON-NLS-1$
-		}
-        return new AboutItem(s, (int[][]) linkRanges.toArray(new int[linkRanges
-                .size()][2]), (String[]) links
-                .toArray(new String[links.size()]));
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyDialog.java
deleted file mode 100644
index f4760e3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyDialog.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Iterator;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.IContributionService;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This dialog is created and shown when 'Properties' action is performed while
- * an object is selected. It shows one or more pages registered for object's
- * type.
- */
-public class PropertyDialog extends FilteredPreferenceDialog {
-	private ISelection selection;
-
-	// The id of the last page that was selected
-	private static String lastPropertyId = null;
-
-	/**
-	 * Create a new property dialog.
-	 * 
-	 * @param shell
-	 *            the parent shell
-	 * @param propertyPageId
-	 *            the property page id
-	 * @param element
-	 *            the adaptable element
-	 * @return the property dialog
-	 */
-	public static PropertyDialog createDialogOn(Shell shell,
-			final String propertyPageId, Object element) {
-
-		PropertyPageManager pageManager = new PropertyPageManager();
-		String title = "";//$NON-NLS-1$
-
-		if (element == null) {
-			return null;
-		}
-		// load pages for the selection
-		// fill the manager with contributions from the matching contributors
-		PropertyPageContributorManager.getManager().contribute(pageManager,
-				element);
-		// testing if there are pages in the manager
-		Iterator pages = pageManager.getElements(PreferenceManager.PRE_ORDER)
-				.iterator();
-		String name = getName(element);
-		if (!pages.hasNext()) {
-			MessageDialog.openInformation(shell,
-					WorkbenchMessages.PropertyDialog_messageTitle, NLS.bind(
-							WorkbenchMessages.PropertyDialog_noPropertyMessage,
-							name));
-			return null;
-		}
-		title = NLS
-				.bind(WorkbenchMessages.PropertyDialog_propertyMessage, name);
-		PropertyDialog propertyDialog = new PropertyDialog(shell, pageManager,
-				new StructuredSelection(element));
-
-		if (propertyPageId != null) {
-			propertyDialog.setSelectedNode(propertyPageId);
-		}
-		propertyDialog.create();
-
-		propertyDialog.getShell().setText(title);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(
-				propertyDialog.getShell(),
-				IWorkbenchHelpContextIds.PROPERTY_DIALOG);
-
-		return propertyDialog;
-
-	}
-
-	/**
-	 * Returns the name of the given element.
-	 * 
-	 * @param element
-	 *            the element
-	 * @return the name of the element
-	 */
-	private static String getName(Object element) {
-		IWorkbenchAdapter adapter = (IWorkbenchAdapter)Util.getAdapter(element, IWorkbenchAdapter.class);
-		if (adapter != null) {
-			return adapter.getLabel(element);
-		}
-		return "";//$NON-NLS-1$
-	}
-
-	/**
-	 * Create an instance of the receiver.
-	 * 
-	 * @param parentShell
-	 * @param mng
-	 * @param selection
-	 */
-	public PropertyDialog(Shell parentShell, PreferenceManager mng,
-			ISelection selection) {
-		super(parentShell, mng);
-		setSelection(selection);
-	}
-
-	/**
-	 * Returns selection in the "Properties" action context.
-	 * 
-	 * @return the selection
-	 */
-	public ISelection getSelection() {
-		return selection;
-	}
-
-	/**
-	 * Sets the selection that will be used to determine target object.
-	 * 
-	 * @param newSelection
-	 *            the new selection
-	 */
-	public void setSelection(ISelection newSelection) {
-		selection = newSelection;
-	}
-
-	/**
-	 * Get the name of the selected item preference
-	 */
-	protected String getSelectedNodePreference() {
-		return lastPropertyId;
-	}
-
-	/**
-	 * Get the name of the selected item preference
-	 */
-	protected void setSelectedNodePreference(String pageId) {
-		lastPropertyId = pageId;
-	}
-
-	/**
-	 * Return the contributionType (used by the IContributionService).
-	 * 
-	 * Override this with a more specific contribution type as required.
-	 * 
-	 * @return a string, the contributionType
-	 */
-	protected String getContributionType() {
-		return IContributionService.TYPE_PROPERTY;
-	}
-
-	
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
deleted file mode 100644
index f546b72..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageContributorManager.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 219273 
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.ui.internal.ObjectContributorManager;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PropertyPagesRegistryReader;
-
-/**
- * Extends generic object contributor manager by loading property page
- * contributors from the registry.
- */
-
-public class PropertyPageContributorManager extends ObjectContributorManager {
-	private static PropertyPageContributorManager sharedInstance = null;
-
-	private class CategorizedPageNode {
-		RegistryPageContributor contributor;
-
-		CategorizedPageNode parent;
-
-		String qualifiedName;
-
-		CategorizedPageNode(RegistryPageContributor page) {
-			contributor = page;
-		}
-
-		void setParent(CategorizedPageNode node) {
-			parent = node;
-		}
-
-		String getQualifiedName() {
-
-			if (qualifiedName == null) {
-				if (parent == null) {
-					qualifiedName = contributor.getPageName();
-				} else {
-					StringBuffer nameBuffer = new StringBuffer();
-					nameBuffer.append(parent.getQualifiedName());
-					nameBuffer
-							.append(WorkbenchPlugin.PREFERENCE_PAGE_CATEGORY_SEPARATOR);
-					nameBuffer.append(contributor.getPageName());
-					qualifiedName = nameBuffer.toString();
-				}
-			}
-			return qualifiedName;
-
-		}
-
-	}
-
-	/**
-	 * The constructor.
-	 */
-	public PropertyPageContributorManager() {
-		super();
-		// load contributions on startup so that getContributors() returns the
-		// proper content
-		loadContributors();
-	}
-
-	/**
-	 * Given the object class, this method will find all the registered matching
-	 * contributors and sequentially invoke them to contribute to the property
-	 * page manager. Matching algorithm will also check subclasses and
-	 * implemented interfaces.
-	 * @param manager
-	 * @param object
-	 * @return true if contribution took place, false otherwise.
-	 */
-	public boolean contribute(PropertyPageManager manager, Object object) {
-
-		List result = getContributors(object);
-
-		if (result == null || result.size() == 0) {
-			return false;
-		}
-
-		// Build the category nodes
-		List catNodes = buildNodeList(result);
-		Iterator resultIterator = catNodes.iterator();
-
-		// K(CategorizedPageNode) V(PreferenceNode - property page)
-		Map catPageNodeToPages = new HashMap();
-
-		// Allow each contributor to add its page to the manager.
-		boolean actualContributions = false;
-		while (resultIterator.hasNext()) {
-			CategorizedPageNode next = (CategorizedPageNode) resultIterator
-					.next();
-			IPropertyPageContributor ppcont = next.contributor;
-			if (!ppcont.isApplicableTo(object)) {
-				continue;
-			}
-			PreferenceNode page = ppcont.contributePropertyPage(manager, object);
-			if (page != null) {
-				catPageNodeToPages.put(next, page);
-				actualContributions = true;
-			}
-		}
-
-		// Fixup the parents in each page
-		if (actualContributions) {
-			resultIterator = catNodes.iterator();
-			while (resultIterator.hasNext()) {
-				CategorizedPageNode next = (CategorizedPageNode) resultIterator
-						.next();
-				PreferenceNode child = (PreferenceNode) catPageNodeToPages.get(next);
-				if (child == null)
-					continue;
-				PreferenceNode parent = null;
-				if (next.parent != null)
-					parent = (PreferenceNode) catPageNodeToPages.get(next.parent);
-				
-				if (parent == null) {
-					manager.addToRoot(child);
-				} else {
-					parent.add(child);
-				}
-			}
-		}
-		return actualContributions;
-	}
-
-	/**
-	 * Build the list of nodes to be sorted.
-	 * @param nodes
-	 * @return List of CategorizedPageNode
-	 */
-	private List buildNodeList(List nodes) {
-		Hashtable mapping = new Hashtable();
-		
-		Iterator nodesIterator = nodes.iterator();
-		while(nodesIterator.hasNext()){
-			RegistryPageContributor page = (RegistryPageContributor) nodesIterator.next();
-			mapping.put(page.getPageId(),new CategorizedPageNode(page));
-		}
-		
-		Iterator values = mapping.values().iterator();
-		List returnValue = new ArrayList();
-		while(values.hasNext()){
-			CategorizedPageNode next = (CategorizedPageNode) values.next();
-			returnValue.add(next);
-			if(next.contributor.getCategory() == null) {
-				continue;
-			}
-			Object parent = mapping.get(next.contributor.getCategory());
-			if(parent != null) {
-				next.setParent((CategorizedPageNode) parent);
-			}
-		}
-		return returnValue;
-	}
-
-	/**
-	 * Ideally, shared instance should not be used and manager should be located
-	 * in the workbench class.
-	 * @return PropertyPageContributorManager
-	 */
-	public static PropertyPageContributorManager getManager() {
-		if (sharedInstance == null) {
-			sharedInstance = new PropertyPageContributorManager();
-		}
-		return sharedInstance;
-	}
-
-	/**
-	 * Loads property page contributors from the registry.
-	 */
-	private void loadContributors() {
-		PropertyPagesRegistryReader reader = new PropertyPagesRegistryReader(
-				this);
-		reader.registerPropertyPages(Platform.getExtensionRegistry());
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-     */
-    public void addExtension(IExtensionTracker tracker, IExtension extension) {
-        IConfigurationElement[] addedElements = extension.getConfigurationElements();
-        for (int i = 0; i < addedElements.length; i++) {
-            PropertyPagesRegistryReader reader = new PropertyPagesRegistryReader(this);
-            reader.readElement(addedElements[i]);
-        }
-    }
-
-	/**
-	 * Return the contributors for element filters on the enablement. 
-	 * @param element
-	 * @return Collection of PropertyPageContribution
-	 */
-	public Collection getApplicableContributors(Object element) {
-		Collection contributors = getContributors(element);
-		Collection result = new ArrayList();
-		for (Iterator iter = contributors.iterator(); iter.hasNext();) {
-			RegistryPageContributor contributor = (RegistryPageContributor) iter.next();
-			if(contributor.isApplicableTo(element))
-				result.add(contributor);
-			
-		}
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.ObjectContributorManager#getExtensionPointFilter()
-	 */
-	protected String getExtensionPointFilter() {
-		return IWorkbenchRegistryConstants.PL_PROPERTY_PAGES;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageManager.java
deleted file mode 100644
index 9341860..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageManager.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 219273
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.preferences.WorkbenchPreferenceExpressionNode;
-
-/**
- * This class is created to avoid mentioning preferences
- * in this context. Ideally, JFace preference classes should be
- * renamed into something more generic (for example,
- * 'TreeNavigationDialog').
- */
-
-public class PropertyPageManager extends PreferenceManager {
-	/**
-	 * The constructor.
-	 */
-	public PropertyPageManager() {
-		super(WorkbenchPlugin.PREFERENCE_PAGE_CATEGORY_SEPARATOR,
-				new WorkbenchPreferenceExpressionNode("")); //$NON-NLS-1$
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
deleted file mode 100644
index b22bc77..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/PropertyPageNode.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.preferences.WorkbenchPreferenceExtensionNode;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Property page node allows us to achieve presence in the property page dialog
- * without loading the page itself, thus loading the contributing plugin.
- * Only when the user selects the page will it be loaded.
- */
-public class PropertyPageNode extends WorkbenchPreferenceExtensionNode {
-    private RegistryPageContributor contributor;
-
-    private IWorkbenchPropertyPage page;
-
-    private Image icon;
-
-    private Object element;
-
-    /**
-     * Create a new instance of the receiver.
-     * @param contributor
-     * @param element
-     */
-    public PropertyPageNode(RegistryPageContributor contributor,
-            Object element) {
-        super(contributor.getPageId(), contributor.getConfigurationElement());
-        this.contributor = contributor;
-        this.element = element;
-    }
-
-    /**
-     * Creates the preference page this node stands for. If the page is null,
-     * it will be created by loading the class. If loading fails,
-     * empty filler page will be created instead.
-     */
-    public void createPage() {
-        try {
-            page = contributor.createPage(element);
-        } catch (CoreException e) {
-            // Just inform the user about the error. The details are
-            // written to the log by now.
-            IStatus errStatus = StatusUtil.newStatus(e.getStatus(), WorkbenchMessages.PropertyPageNode_errorMessage); 
-            StatusManager.getManager().handle(errStatus, StatusManager.SHOW);
-            page = new EmptyPropertyPage();
-        }
-        setPage(page);
-    }
-
-    /** (non-Javadoc)
-     * Method declared on IPreferenceNode.
-     */
-    public void disposeResources() {
-
-        if (page != null) {
-            page.dispose();
-            page = null;
-        }
-        if (icon != null) {
-            icon.dispose();
-            icon = null;
-        }
-    }
-
-    /**
-     * Returns page icon, if defined.
-     */
-    public Image getLabelImage() {
-        if (icon == null) {
-            ImageDescriptor desc = contributor.getPageIcon();
-            if (desc != null) {
-                icon = desc.createImage();
-            }
-        }
-        return icon;
-    }
-
-    /**
-     * Returns page label as defined in the registry.
-     */
-    public String getLabelText() {
-        return contributor.getPageName();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java
deleted file mode 100644
index e69760c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/RegistryPageContributor.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 223808 
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.lang.ref.SoftReference;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IActionFilter;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-import org.eclipse.ui.SelectionEnabler;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.internal.LegacyResourceSupport;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.CategorizedPageRegistryReader;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PropertyPagesRegistryReader;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * This property page contributor is created from page entry in the registry.
- * Since instances of this class are created by the workbench, there is no
- * danger of premature loading of plugins.
- */
-
-public class RegistryPageContributor implements IPropertyPageContributor,
-		IAdaptable,
-		IPluginContribution
-		{
-	private static final String CHILD_ENABLED_WHEN = "enabledWhen"; //$NON-NLS-1$
-
-	private String pageId;
-
-	/**
-	 * The list of subpages (immediate children) of this node (element type:
-	 * <code>RegistryPageContributor</code>).
-	 */
-	private Collection subPages = new ArrayList();
-
-	private boolean adaptable = false;
-
-	private IConfigurationElement pageElement;
-
-	private SoftReference filterProperties;
-
-	private Expression enablementExpression;
-
-	/**
-	 * PropertyPageContributor constructor.
-	 * 
-	 * @param pageId
-	 *            the id
-	 * @param element
-	 *            the element
-	 */
-	public RegistryPageContributor(String pageId, IConfigurationElement element) {
-		this.pageId = pageId;
-		this.pageElement = element;
-		adaptable = Boolean
-				.valueOf(
-						pageElement
-								.getAttribute(PropertyPagesRegistryReader.ATT_ADAPTABLE))
-				.booleanValue();
-		initializeEnablement(element);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.dialogs.IPropertyPageContributor#contributePropertyPage(org.eclipse.ui.internal.dialogs.PropertyPageManager,
-	 *      java.lang.Object)
-	 */
-	public PreferenceNode contributePropertyPage(PropertyPageManager mng,
-			Object element) {
-		PropertyPageNode node = new PropertyPageNode(this, element);
-		if (IWorkbenchConstants.WORKBENCH_PROPERTIES_PAGE_INFO.equals(node.getId()))
-			node.setPriority(-1);
-		return node;
-	}
-	
-	/**
-	 * Creates the page based on the information in the configuration element.
-	 * 
-	 * @param element
-	 *            the adaptable element
-	 * @return the property page
-	 * @throws CoreException
-	 *             thrown if there is a problem creating the apge
-	 */
-	public IWorkbenchPropertyPage createPage(Object element)
-			throws CoreException {
-		IWorkbenchPropertyPage ppage = null;
-		ppage = (IWorkbenchPropertyPage) WorkbenchPlugin.createExtension(
-				pageElement, IWorkbenchRegistryConstants.ATT_CLASS);
-
-		ppage.setTitle(getPageName());
-
-		Object adapted = element;
-		if (adaptable) {
-			adapted = getAdaptedElement(element);
-			if (adapted == null) {
-				String message = "Error adapting selection to Property page " + pageId + " is being ignored"; //$NON-NLS-1$ //$NON-NLS-2$            	
-				throw new CoreException(new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR, message,
-						null));
-			}
-		}
-
-		if (adapted instanceof IAdaptable)
-			ppage.setElement((IAdaptable) adapted);
-		else
-			ppage.setElement(new AdaptableForwarder(adapted));
-
-		return ppage;
-	}
-
-	/**
-	 * Find an adapted element from the receiver.
-	 * 
-	 * @param element
-	 * @return the adapted element or <code>null</code> if it could not be
-	 *         found.
-	 */
-	private Object getAdaptedElement(Object element) {
-		Object adapted = LegacyResourceSupport.getAdapter(element,
-				getObjectClass());
-		if (adapted != null)
-			return adapted;
-
-		return null;
-	}
-
-	/**
-	 * Return the object class name
-	 * 
-	 * @return the object class name
-	 */
-	public String getObjectClass() {
-		return pageElement
-				.getAttribute(PropertyPagesRegistryReader.ATT_OBJECTCLASS);
-	}
-
-	/**
-	 * Returns page icon as defined in the registry.
-	 * 
-	 * @return the page icon
-	 */
-	public ImageDescriptor getPageIcon() {
-		String iconName = pageElement
-				.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-		if (iconName == null)
-			return null;
-		return AbstractUIPlugin.imageDescriptorFromPlugin(pageElement
-				.getNamespaceIdentifier(), iconName);
-	}
-
-	/**
-	 * Returns page ID as defined in the registry.
-	 * 
-	 * @return the page id
-	 */
-
-	public String getPageId() {
-		return pageId;
-	}
-
-	/**
-	 * Returns page name as defined in the registry.
-	 * 
-	 * @return the page name
-	 */
-	public String getPageName() {
-		return pageElement.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-	}
-
-	/**
-	 * Return true if name filter is not defined in the registry for this page,
-	 * or if name of the selected object matches the name filter.
-	 */
-	public boolean isApplicableTo(Object object) {
-
-		if (failsEnablement(object))
-			return false;
-
-		// Test name filter
-		String nameFilter = pageElement
-				.getAttribute(PropertyPagesRegistryReader.ATT_NAME_FILTER);
-		if (nameFilter != null) {
-			String objectName = object.toString();
-			IWorkbenchAdapter adapter = (IWorkbenchAdapter) Util.getAdapter(object, 
-                    IWorkbenchAdapter.class);
-			if (adapter != null) {
-				String elementName = adapter.getLabel(object);
-				if (elementName != null) {
-					objectName = elementName;
-				}
-			}
-			if (!SelectionEnabler.verifyNameMatch(objectName, nameFilter))
-				return false;
-		}
-
-		// Test custom filter
-		if (getFilterProperties() == null)
-			return true;
-		IActionFilter filter = null;
-
-		// Do the free IResource adapting
-		Object adaptedObject = LegacyResourceSupport.getAdaptedResource(object);
-		if (adaptedObject != null) {
-			object = adaptedObject;
-		}
-
-        filter = (IActionFilter)Util.getAdapter(object, IActionFilter.class);
-
-		if (filter != null)
-			return testCustom(object, filter);
-
-		return true;
-	}
-
-	/**
-	 * Return whether or not object fails the enablement criterea.
-	 * 
-	 * @param object
-	 * @return boolean <code>true</code> if it fails the enablement test
-	 */
-	private boolean failsEnablement(Object object) {
-		if (enablementExpression == null)
-			return false;
-		try {
-			EvaluationContext context = new EvaluationContext(null, object);
-			context.setAllowPluginActivation(true);
-			return enablementExpression.evaluate(
-					context).equals(
-					EvaluationResult.FALSE);
-		} catch (CoreException e) {
-			WorkbenchPlugin.log(e);
-			return false;
-		}
-	}
-
-	/**
-	 * Initialize the enablement expression for this decorator
-	 */
-	protected void initializeEnablement(IConfigurationElement definingElement) {
-		IConfigurationElement[] elements = definingElement
-				.getChildren(CHILD_ENABLED_WHEN);
-
-		if (elements.length == 0)
-			return;
-
-		try {
-			IConfigurationElement[] enablement = elements[0].getChildren();
-			if (enablement.length == 0)
-				return;
-			enablementExpression = ExpressionConverter.getDefault().perform(
-					enablement[0]);
-		} catch (CoreException e) {
-			WorkbenchPlugin.log(e);
-		}
-
-	}
-
-	/**
-	 * Returns whether the object passes a custom key value filter implemented
-	 * by a matcher.
-	 */
-	private boolean testCustom(Object object, IActionFilter filter) {
-		Map filterProperties = getFilterProperties();
-
-		if (filterProperties == null)
-			return false;
-		Iterator iter = filterProperties.keySet().iterator();
-		while (iter.hasNext()) {
-			String key = (String) iter.next();
-			String value = (String) filterProperties.get(key);
-			if (!filter.testAttribute(object, key, value))
-				return false;
-		}
-		return true;
-	}
-
-	/*
-	 * @see IObjectContributor#canAdapt()
-	 */
-	public boolean canAdapt() {
-		return adaptable;
-	}
-
-	/**
-	 * Get the id of the category.
-	 * 
-	 * @return String
-	 * @since 3.1
-	 */
-	public String getCategory() {
-		return pageElement
-				.getAttribute(CategorizedPageRegistryReader.ATT_CATEGORY);
-	}
-
-	/**
-	 * Return the children of the receiver.
-	 * 
-	 * @return Collection
-	 */
-	public Collection getSubPages() {
-		return subPages;
-	}
-
-	/**
-	 * Add child to the list of children.
-	 * 
-	 * @param child
-	 */
-	public void addSubPage(RegistryPageContributor child) {
-		subPages.add(child);
-	}
-
-	private Map getFilterProperties() {
-		if (filterProperties == null || filterProperties.get() == null) {
-			Map map = new HashMap();
-			filterProperties = new SoftReference(map);
-			IConfigurationElement[] children = pageElement.getChildren();
-			for (int i = 0; i < children.length; i++) {
-				processChildElement(map, children[i]);
-			}
-		}
-		return (Map) filterProperties.get();
-	}
-
-	/**
-	 * Get the child with the given id.
-	 * 
-	 * @param id
-	 * @return RegistryPageContributor
-	 */
-	public Object getChild(String id) {
-		Iterator iterator = subPages.iterator();
-		while (iterator.hasNext()) {
-			RegistryPageContributor next = (RegistryPageContributor) iterator
-					.next();
-			if (next.getPageId().equals(id))
-				return next;
-		}
-		return null;
-	}
-
-	/**
-	 * Parses child element and processes it.
-	 * 
-	 * @since 3.1
-	 */
-	private void processChildElement(Map map, IConfigurationElement element) {
-		String tag = element.getName();
-		if (tag.equals(PropertyPagesRegistryReader.TAG_FILTER)) {
-			String key = element
-					.getAttribute(PropertyPagesRegistryReader.ATT_FILTER_NAME);
-			String value = element
-					.getAttribute(PropertyPagesRegistryReader.ATT_FILTER_VALUE);
-			if (key == null || value == null)
-				return;
-			map.put(key, value);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 * @since 3.1
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter.equals(IConfigurationElement.class)) {
-			return getConfigurationElement();
-		}
-		return null;
-	}
-
-	/**
-	 * @return the configuration element
-	 * @since 3.1
-	 */
-	IConfigurationElement getConfigurationElement() {
-		return pageElement;
-	}
-
-	public String getLocalId() {
-		return pageId;
-	}
-
-    public String getPluginId() {
-    	return pageElement.getContributor().getName();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java
deleted file mode 100644
index 0655412..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SavePerspectiveDialog.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-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.TableViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Font;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.activities.ws.ActivityViewerFilter;
-import org.eclipse.ui.internal.registry.PerspectiveRegistry;
-import org.eclipse.ui.model.PerspectiveLabelProvider;
-
-/**
- * The SavePerspectiveDialog can be used to get the name of a new
- * perspective or the descriptor of an old perspective.  The results
- * are returned by <code>getNewPerspName</code> and 
- * <code>getOldPersp</code>.
- */
-public class SavePerspectiveDialog extends org.eclipse.jface.dialogs.Dialog
-        implements ISelectionChangedListener, ModifyListener {
-    private Text text;
-
-    private TableViewer list;
-
-    private Button okButton;
-
-    private PerspectiveRegistry perspReg;
-
-    private String perspName;
-
-    private IPerspectiveDescriptor persp;
-
-    private IPerspectiveDescriptor initialSelection;
-
-    private boolean ignoreSelection = false;
-
-    final private static int LIST_WIDTH = 40;
-
-    final private static int TEXT_WIDTH = 40;
-
-    final private static int LIST_HEIGHT = 14;
-
-    /**
-     * PerspectiveDialog constructor comment.
-     * @param parentShell the parent shell
-     * @param perspReg the perspective registry
-     */
-    public SavePerspectiveDialog(Shell parentShell, PerspectiveRegistry perspReg) {
-        super(parentShell);
-        this.perspReg = perspReg;
-    }
-
-    /* (non-Javadoc)
-     * Method declared in Window.
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        shell
-                .setText(WorkbenchMessages.SavePerspective_shellTitle); 
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.SAVE_PERSPECTIVE_DIALOG);
-    }
-
-    /**
-     * Add buttons to the dialog's button bar.
-     *
-     * @param parent the button bar composite
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        okButton = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-        updateButtons();
-        text.setFocus();
-    }
-
-    /**
-     * Creates and returns the contents of the upper part 
-     * of this dialog (above the button bar).
-     *
-     * @param parent the parent composite to contain the dialog area
-     * @return the dialog area control
-     */
-    protected Control createDialogArea(Composite parent) {
-        Font font = parent.getFont();
-        // Run super.
-        Composite composite = (Composite) super.createDialogArea(parent);
-
-        // description
-        Label descLabel = new Label(composite, SWT.WRAP);
-        descLabel.setText(WorkbenchMessages.SavePerspectiveDialog_description);
-        descLabel.setFont(parent.getFont());
-
-        // Spacer.
-        Label label = new Label(composite, SWT.NONE);
-        GridData data = new GridData();
-        data.heightHint = 8;
-        label.setLayoutData(data);
-
-        // Create name group.
-        Composite nameGroup = new Composite(composite, SWT.NONE);
-        nameGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 2;
-        layout.marginWidth = layout.marginHeight = 0;
-        nameGroup.setLayout(layout);
-
-        // Create name label.
-        label = new Label(nameGroup, SWT.NONE);
-        label.setText(WorkbenchMessages.SavePerspective_name);
-        label.setFont(font);
-
-        // Add text field.
-        text = new Text(nameGroup, SWT.BORDER);
-        text.setFocus();
-        data = new GridData(GridData.FILL_HORIZONTAL);
-        data.widthHint = convertWidthInCharsToPixels(TEXT_WIDTH);
-        text.setLayoutData(data);
-        text.setFont(font);
-        text.addModifyListener(this);
-
-        // Spacer.
-        label = new Label(composite, SWT.NONE);
-        data = new GridData();
-        data.heightHint = 5;
-        label.setLayoutData(data);
-
-        // Another label.
-        label = new Label(composite, SWT.NONE);
-        label.setText(WorkbenchMessages.SavePerspective_existing);
-        label.setFont(font);
-
-        // Add perspective list.
-        list = new TableViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL
-                | SWT.BORDER);
-        list.setLabelProvider(new PerspectiveLabelProvider());
-        list.setContentProvider(new PerspContentProvider());
-        list.addFilter(new ActivityViewerFilter());
-        list.setComparator(new ViewerComparator());
-        list.setInput(perspReg);
-        list.addSelectionChangedListener(this);
-        list.getTable().setFont(font);
-
-        // Set perspective list size.
-        Control ctrl = list.getControl();
-        GridData spec = new GridData(GridData.FILL_BOTH);
-        spec.widthHint = convertWidthInCharsToPixels(LIST_WIDTH);
-        spec.heightHint = convertHeightInCharsToPixels(LIST_HEIGHT);
-        ctrl.setLayoutData(spec);
-
-        // Set the initial selection
-        if (initialSelection != null) {
-            StructuredSelection sel = new StructuredSelection(initialSelection);
-            list.setSelection(sel, true);
-        }
-        text.selectAll();
-
-        // Return results.
-        return composite;
-    }
-
-    /**
-     * Returns the target name.
-     * 
-     * @return the target name
-     */
-    public IPerspectiveDescriptor getPersp() {
-        return persp;
-    }
-
-    /**
-     * Returns the target name.
-     * 
-     * @return the target name
-     */
-    public String getPerspName() {
-        return perspName;
-    }
-
-    /**
-     * The user has typed some text.
-     */
-    public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
-        // Get text.
-        perspName = text.getText();
-
-        // Transfer text to persp list.
-        ignoreSelection = true;
-        persp = perspReg.findPerspectiveWithLabel(perspName);
-        if (persp == null) {
-            StructuredSelection sel = new StructuredSelection();
-            list.setSelection(sel);
-        } else {
-            StructuredSelection sel = new StructuredSelection(persp);
-            list.setSelection(sel);
-        }
-        ignoreSelection = false;
-
-        updateButtons();
-    }
-
-    /**
-     * 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() {
-        perspName = text.getText();
-        persp = perspReg.findPerspectiveWithLabel(perspName);
-        if (persp != null) {
-            // Confirm ok to overwrite
-            String message = NLS.bind(WorkbenchMessages.SavePerspective_overwriteQuestion,perspName ); 
-            String[] buttons = new String[] { IDialogConstants.YES_LABEL,
-                    IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL };
-            MessageDialog d = new MessageDialog(this.getShell(),
-                    WorkbenchMessages.SavePerspective_overwriteTitle, 
-                    null, message, MessageDialog.QUESTION, buttons, 0);
-
-            switch (d.open()) {
-            case 0: //yes
-                break;
-            case 1: //no
-                return;
-            case 2: //cancel
-                cancelPressed();
-                return;
-            default:
-                return;
-            }
-        }
-
-        super.okPressed();
-    }
-
-    /**
-     * Notifies that the selection has changed.
-     *
-     * @param event event object describing the change
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        // If a selection is caused by modifyText ignore it.
-        if (ignoreSelection) {
-			return;
-		}
-
-        // Get selection.
-        IStructuredSelection sel = (IStructuredSelection) list.getSelection();
-        persp = null;
-        if (!sel.isEmpty()) {
-			persp = (IPerspectiveDescriptor) sel.getFirstElement();
-		}
-
-        // Transfer selection to text field.
-        if (persp != null) {
-            perspName = persp.getLabel();
-            text.setText(perspName);
-        }
-
-        updateButtons();
-    }
-
-    /**
-     * Sets the initial selection in this dialog.
-     *
-     * @param selectedElement the perspective descriptor to select
-     */
-    public void setInitialSelection(IPerspectiveDescriptor selectedElement) {
-        initialSelection = selectedElement;
-    }
-
-    /**
-     * Update the OK button.
-     */
-    private void updateButtons() {
-        if (okButton != null) {
-            String label = text.getText();
-            okButton.setEnabled(perspReg.validateLabel(label));
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
deleted file mode 100644
index 767fe2a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SelectPerspectiveDialog.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should be
- *     activated and used by other components.
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-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.TableViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-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.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ITriggerPoint;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.activities.ws.ActivityMessages;
-import org.eclipse.ui.internal.activities.ws.ActivityViewerFilter;
-import org.eclipse.ui.internal.activities.ws.WorkbenchTriggerPoints;
-import org.eclipse.ui.model.PerspectiveLabelProvider;
-
-/**
- * A dialog for perspective creation
- */
-public class SelectPerspectiveDialog extends Dialog implements
-        ISelectionChangedListener {
-
-    final private static int LIST_HEIGHT = 300;
-
-    final private static int LIST_WIDTH = 300;
-
-    private TableViewer list;
-
-    private Button okButton;
-
-    private IPerspectiveDescriptor perspDesc;
-
-    private IPerspectiveRegistry perspReg;
-
-    private ActivityViewerFilter activityViewerFilter = new ActivityViewerFilter();
-
-    private Button showAllButton;
-
-    /**
-     * PerspectiveDialog constructor comment.
-     * 
-     * @param parentShell the parent shell
-     * @param perspReg the perspective registry
-     */
-    public SelectPerspectiveDialog(Shell parentShell,
-            IPerspectiveRegistry perspReg) {
-        super(parentShell);
-        this.perspReg = perspReg;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#cancelPressed()
-     */
-    protected void cancelPressed() {
-        perspDesc = null;
-        super.cancelPressed();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        shell.setText(WorkbenchMessages.SelectPerspective_shellTitle);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.SELECT_PERSPECTIVE_DIALOG);
-    }
-
-    /**
-     * Adds buttons to this dialog's button bar.
-     * <p>
-     * The default implementation of this framework method adds standard ok and
-     * cancel buttons using the <code>createButton</code> framework method.
-     * Subclasses may override.
-     * </p>
-     * 
-     * @param parent the button bar composite
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        okButton = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-        updateButtons();
-    }
-
-    /**
-     * Creates and returns the contents of the upper part of this dialog (above
-     * the button bar).
-     * 
-     * @param parent the parent composite to contain the dialog area
-     * @return the dialog area control
-     */
-    protected Control createDialogArea(Composite parent) {
-        // Run super.
-        Composite composite = (Composite) super.createDialogArea(parent);
-        composite.setFont(parent.getFont());
-
-        createViewer(composite);
-        layoutTopControl(list.getControl());
-        if (needsShowAllButton()) {
-            createShowAllButton(composite);
-        }
-        // Return results.
-        return composite;
-    }
-
-    /**
-     * @return whether a show-all button is needed.  A show all button is needed only if the list contains filtered items.
-     */
-    private boolean needsShowAllButton() {
-        return activityViewerFilter.getHasEncounteredFilteredItem();
-    }
-
-    /**
-     * Create a show all button in the parent.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     */
-    private void createShowAllButton(Composite parent) {
-        showAllButton = new Button(parent, SWT.CHECK);
-        showAllButton
-                .setText(ActivityMessages.Perspective_showAll);
-        showAllButton.addSelectionListener(new SelectionAdapter() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-                if (showAllButton.getSelection()) {
-                    list.resetFilters();
-                } else {
-                    list.addFilter(activityViewerFilter);
-                }
-            }
-        });
-
-    }
-
-    /**
-     * Create a new viewer in the parent.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     */
-    private void createViewer(Composite parent) {
-        // Add perspective list.
-        list = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL
-                | SWT.BORDER);
-        list.getTable().setFont(parent.getFont());
-        list.setLabelProvider(new PerspectiveLabelProvider());
-        list.setContentProvider(new PerspContentProvider());
-        list.addFilter(activityViewerFilter);
-        list.setComparator(new ViewerComparator());
-        list.setInput(perspReg);
-        list.addSelectionChangedListener(this);
-        list.addDoubleClickListener(new IDoubleClickListener() {
-            public void doubleClick(DoubleClickEvent event) {
-                handleDoubleClickEvent();
-            }
-        });
-    }
-
-    /**
-     * Returns the current selection.
-     * 
-     * @return the current selection
-     */
-    public IPerspectiveDescriptor getSelection() {
-        return perspDesc;
-    }
-
-    /**
-     * Handle a double click event on the list
-     */
-    protected void handleDoubleClickEvent() {
-        okPressed();
-    }
-
-    /**
-     * Layout the top control.
-     * 
-     * @param control the control.
-     */
-    private void layoutTopControl(Control control) {
-        GridData spec = new GridData(GridData.FILL_BOTH);
-        spec.widthHint = LIST_WIDTH;
-        spec.heightHint = LIST_HEIGHT;
-        control.setLayoutData(spec);
-    }
-
-    /**
-     * Notifies that the selection has changed.
-     * 
-     * @param event event object describing the change
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        updateSelection(event);
-        updateButtons();
-    }
-
-    /**
-     * Update the button enablement state.
-     */
-    protected void updateButtons() {
-        okButton.setEnabled(getSelection() != null);
-    }
-
-    /**
-     * Update the selection object.
-     */
-    protected void updateSelection(SelectionChangedEvent event) {
-        perspDesc = null;
-        IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-        if (!sel.isEmpty()) {
-            Object obj = sel.getFirstElement();
-            if (obj instanceof IPerspectiveDescriptor) {
-				perspDesc = (IPerspectiveDescriptor) obj;
-			}
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-     */
-    protected void okPressed() {
-        ITriggerPoint triggerPoint = PlatformUI.getWorkbench()
-                .getActivitySupport().getTriggerPointManager().getTriggerPoint(
-                        WorkbenchTriggerPoints.OPEN_PERSPECITVE_DIALOG);
-        if (WorkbenchActivityHelper.allowUseOf(triggerPoint, getSelection())) {
-			super.okPressed();
-		}
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
deleted file mode 100644
index 07d71b1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ShowViewDialog.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids - bug 128526, bug 128529
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.PopupDialog;
-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.ITreeContentProvider;
-import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.layout.GridData;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.ViewRegistry;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * The Show View dialog.
- */
-public class ShowViewDialog extends Dialog implements
-        ISelectionChangedListener, IDoubleClickListener {
-
-    private static final String DIALOG_SETTING_SECTION_NAME = "ShowViewDialog"; //$NON-NLS-1$
-
-    private static final int LIST_HEIGHT = 300;
-
-    private static final int LIST_WIDTH = 250;
-
-    private static final String STORE_EXPANDED_CATEGORIES_ID = DIALOG_SETTING_SECTION_NAME
-            + ".STORE_EXPANDED_CATEGORIES_ID"; //$NON-NLS-1$    
-
-    private static final String STORE_SELECTED_VIEW_ID = DIALOG_SETTING_SECTION_NAME
-            + ".STORE_SELECTED_VIEW_ID"; //$NON-NLS-1$    
-
-    private FilteredTree filteredTree;
-
-    private Button okButton;
-
-    private IViewDescriptor[] viewDescs = new IViewDescriptor[0];
-
-    private IViewRegistry viewReg;
-
-	private IWorkbenchWindow window;
-
-	private Color dimmedForeground;
-
-    /**
-     * Constructs a new ShowViewDialog.
-     * 
-     * @param window the workbench window
-     * @param viewReg the view registry
-     */
-    public ShowViewDialog(IWorkbenchWindow window, IViewRegistry viewReg) {
-        super(window.getShell());
-        this.window = window;
-        this.viewReg = viewReg;
-    }
-
-    /**
-     * This method is called if a button has been pressed.
-     */
-    protected void buttonPressed(int buttonId) {
-        if (buttonId == IDialogConstants.OK_ID) {
-			saveWidgetValues();
-		}
-        super.buttonPressed(buttonId);
-    }
-
-    /**
-     * Notifies that the cancel button of this dialog has been pressed.
-     */
-    protected void cancelPressed() {
-        viewDescs = new IViewDescriptor[0];
-        super.cancelPressed();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        shell.setText(WorkbenchMessages.ShowView_shellTitle);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.SHOW_VIEW_DIALOG);
-    }
-
-    /**
-     * Adds buttons to this dialog's button bar.
-     * <p>
-     * The default implementation of this framework method adds standard ok and
-     * cancel buttons using the <code>createButton</code> framework method.
-     * Subclasses may override.
-     * </p>
-     * 
-     * @param parent the button bar composite
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        okButton = createButton(parent, IDialogConstants.OK_ID,
-                IDialogConstants.OK_LABEL, true);
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-        updateButtons();
-    }
-
-    /**
-     * Creates and returns the contents of the upper part of this dialog (above
-     * the button bar).
-     * 
-     * @param parent the parent composite to contain the dialog area
-     * @return the dialog area control
-     */
-    protected Control createDialogArea(Composite parent) {
-        // Run super.
-        Composite composite = (Composite) super.createDialogArea(parent);
-        composite.setFont(parent.getFont());
-
-        createFilteredTreeViewer(composite);
-
-        layoutTopControl(filteredTree);
-        
-        // Use F2... label
-        Label label = new Label(composite, SWT.WRAP);
-        label.setText(WorkbenchMessages.ShowView_selectViewHelp);
-        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        // Restore the last state
-        restoreWidgetValues();
-
-		applyDialogFont(composite);
-
-		// Return results.
-        return composite;
-    }
-
-	/**
-	 * Blends c1 and c2 based in the provided ratio.
-	 * 
-	 * @param c1
-	 *            first color
-	 * @param c2
-	 *            second color
-	 * @param ratio
-	 *            percentage of the first color in the blend (0-100)
-	 * @return the RGB value of the blended color
-	 * 
-	 * copied from FormColors.java
-	 */
-	private static RGB blend(RGB c1, RGB c2, int ratio) {
-		int r = blend(c1.red, c2.red, ratio);
-		int g = blend(c1.green, c2.green, ratio);
-		int b = blend(c1.blue, c2.blue, ratio);
-		return new RGB(r, g, b);
-	}
-
-	private static int blend(int v1, int v2, int ratio) {
-		int b = (ratio * v1 + (100 - ratio) * v2) / 100;
-		return Math.min(255, b);
-	}
-
-	/**
-     * Create a new filtered tree viewer in the parent.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     */
-    private void createFilteredTreeViewer(Composite parent) {
-		PatternFilter filter = new ViewPatternFilter();
-		int styleBits = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
-		filteredTree = new FilteredTree(parent, styleBits, filter);
-		filteredTree.setBackground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_WIDGET_BACKGROUND));
-		
-		TreeViewer treeViewer = filteredTree.getViewer();
-		Control treeControl = treeViewer.getControl();
-		RGB dimmedRGB = blend(treeControl.getForeground().getRGB(), treeControl.getBackground().getRGB(), 60);
-		dimmedForeground = new Color(treeControl.getDisplay(), dimmedRGB);
-		treeControl.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				dimmedForeground.dispose();
-			}
-		});
-		
-		treeViewer.setLabelProvider(new ViewLabelProvider(window, dimmedForeground));
-		treeViewer.setContentProvider(new ViewContentProvider());
-		treeViewer.setComparator(new ViewComparator((ViewRegistry) viewReg));
-		treeViewer.setInput(viewReg);
-		treeViewer.addSelectionChangedListener(this);
-		treeViewer.addDoubleClickListener(this);
-		treeViewer.addFilter(new CapabilityFilter());
-		treeViewer.getControl().addKeyListener(new KeyAdapter() {
-            public void keyPressed(KeyEvent e) {
-                handleTreeViewerKeyPressed(e);
-            }
-        });
-
-		// if the tree has only one or zero views, disable the filter text control
-		if (hasAtMostOneView(filteredTree.getViewer())) {
-			Text filterText = filteredTree.getFilterControl();
-			if (filterText != null) {
-				filterText.setEnabled(false);
-			}
-		}
-	}
-
-	/**
-	 * Return whether or not there are less than two views in the list.
-	 * 
-	 * @param tree
-	 * @return <code>true</code> if there are less than two views in the list.
-	 */
-	private boolean hasAtMostOneView(TreeViewer tree) {
-		ITreeContentProvider contentProvider = (ITreeContentProvider) tree
-				.getContentProvider();
-		Object[] children = contentProvider.getElements(tree.getInput());
-
-		if (children.length <= 1) {
-			if (children.length == 0) {
-				return true;
-			}
-			return !contentProvider.hasChildren(children[0]);
-		}
-		return false;
-	}
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-     */
-    public void doubleClick(DoubleClickEvent event) {
-        IStructuredSelection s = (IStructuredSelection) event.getSelection();
-        Object element = s.getFirstElement();
-        if (filteredTree.getViewer().isExpandable(element)) {
-            filteredTree.getViewer().setExpandedState(element, !filteredTree.getViewer().getExpandedState(element));
-        } else if (viewDescs.length > 0) {
-            saveWidgetValues();
-            setReturnCode(OK);
-            close();
-        }
-    }
-
-    /**
-     * Return the dialog store to cache values into
-     */
-    protected IDialogSettings getDialogSettings() {
-        IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-                .getDialogSettings();
-        IDialogSettings section = workbenchSettings
-                .getSection(DIALOG_SETTING_SECTION_NAME);
-        if (section == null) {
-			section = workbenchSettings
-                    .addNewSection(DIALOG_SETTING_SECTION_NAME);
-		}
-        return section;
-    }
-
-    /**
-     * Returns the descriptors for the selected views.
-     * 
-     * @return the descriptors for the selected views
-     */
-    public IViewDescriptor[] getSelection() {
-        return viewDescs;
-    }
-
-    /**
-     * Layout the top control.
-     * 
-     * @param control the control.
-     */
-    private void layoutTopControl(Control control) {
-        GridData spec = new GridData(GridData.FILL_BOTH);
-        spec.widthHint = LIST_WIDTH;
-        spec.heightHint = LIST_HEIGHT;
-        control.setLayoutData(spec);
-    }
-
-    /**
-     * Use the dialog store to restore widget values to the values that they
-     * held last time this dialog was used to completion.
-     */
-    protected void restoreWidgetValues() {
-        IDialogSettings settings = getDialogSettings();
-
-        String[] expandedCategoryIds = settings
-                .getArray(STORE_EXPANDED_CATEGORIES_ID);
-        if (expandedCategoryIds == null) {
-			return;
-		}
-
-        ViewRegistry reg = (ViewRegistry) viewReg;
-        ArrayList categoriesToExpand = new ArrayList(expandedCategoryIds.length);
-        for (int i = 0; i < expandedCategoryIds.length; i++) {
-            IViewCategory category = reg.findCategory(expandedCategoryIds[i]);
-            if (category != null) {
-				categoriesToExpand.add(category);
-			}
-        }
-
-        if (!categoriesToExpand.isEmpty()) {
-			filteredTree.getViewer().setExpandedElements(categoriesToExpand.toArray());
-		}
-        
-        String selectedViewId = settings.get(STORE_SELECTED_VIEW_ID);
-        if (selectedViewId != null) {
-            IViewDescriptor viewDesc = reg.find(selectedViewId);
-            if (viewDesc != null) {
-                filteredTree.getViewer().setSelection(new StructuredSelection(viewDesc), true);
-            }
-        }
-    }
-
-    /**
-     * Since OK was pressed, write widget values to the dialog store so that
-     * they will persist into the next invocation of this dialog
-     */
-    protected void saveWidgetValues() {
-        IDialogSettings settings = getDialogSettings();
-
-        // Collect the ids of the all expanded categories
-        Object[] expandedElements = filteredTree.getViewer().getExpandedElements();
-        String[] expandedCategoryIds = new String[expandedElements.length];
-        for (int i = 0; i < expandedElements.length; ++i) {
-			expandedCategoryIds[i] = ((IViewCategory) expandedElements[i]).getId();
-		}
-
-        // Save them for next time.
-        settings.put(STORE_EXPANDED_CATEGORIES_ID, expandedCategoryIds);
-        
-        String selectedViewId = ""; //$NON-NLS-1$
-        if (viewDescs.length > 0) {
-            // in the case of a multi-selection, it's probably less confusing
-            // to store just the first rather than the whole multi-selection
-            selectedViewId = viewDescs[0].getId();
-        }
-        settings.put(STORE_SELECTED_VIEW_ID, selectedViewId);
-    }
-
-    /**
-     * Notifies that the selection has changed.
-     * 
-     * @param event event object describing the change
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        updateSelection(event);
-        updateButtons();
-    }
-
-    /**
-     * Update the button enablement state.
-     */
-    protected void updateButtons() {
-        if (okButton != null) {
-            okButton.setEnabled(getSelection().length > 0);
-        }
-    }
-
-    /**
-     * Update the selection object.
-     */
-    protected void updateSelection(SelectionChangedEvent event) {
-        ArrayList descs = new ArrayList();
-        IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-        for (Iterator i = sel.iterator(); i.hasNext();) {
-            Object o = i.next();
-            if (o instanceof IViewDescriptor) {
-                descs.add(o);
-            }
-        }
-        viewDescs = new IViewDescriptor[descs.size()];
-        descs.toArray(viewDescs);
-    }
-
-    
-	/* (non-Javadoc)
-     * @see org.eclipse.jface.window.Dialog#getDialogBoundsSettings()
-     * 
-     * @since 3.4
-     */
-	protected IDialogSettings getDialogBoundsSettings() {
-        return getDialogSettings();
-	}
-    void handleTreeViewerKeyPressed(KeyEvent event) {
-		// popup the description for the selected view
-		if (event.keyCode == SWT.F2 && event.stateMask == 0) {
-			ITreeSelection selection = (ITreeSelection) filteredTree
-					.getViewer().getSelection();
-			// only show description if one view is selected
-			if (selection.size() == 1) {
-				Object o = selection.getFirstElement();
-				if (o instanceof IViewDescriptor) {
-					String description = ((IViewDescriptor) o).getDescription();
-					if (description.length() == 0)
-						description = WorkbenchMessages.ShowView_noDesc;
-					popUp(description);
-				}
-			}
-		}
-	}
-
-	private void popUp(final String description) {
-		new PopupDialog(filteredTree.getShell(), PopupDialog.HOVER_SHELLSTYLE,
-				true, false, false, false, null, null) {
-			private static final int CURSOR_SIZE = 15;
-
-			protected Point getInitialLocation(Point initialSize) {
-				//show popup relative to cursor
-				Display display = getShell().getDisplay();
-				Point location = display.getCursorLocation();
-				location.x += CURSOR_SIZE;
-				location.y += CURSOR_SIZE;
-				return location;
-			}
-
-			protected Control createDialogArea(Composite parent) {
-				Label label = new Label(parent, SWT.WRAP);
-				label.setText(description);
-				label.addFocusListener(new FocusAdapter() {
-					public void focusLost(FocusEvent event) {
-						close();
-					}
-				});
-				// Use the compact margins employed by PopupDialog.
-				GridData gd = new GridData(GridData.BEGINNING
-						| GridData.FILL_BOTH);
-				gd.horizontalIndent = PopupDialog.POPUP_HORIZONTALSPACING;
-				gd.verticalIndent = PopupDialog.POPUP_VERTICALSPACING;
-				label.setLayoutData(gd);
-				return label;
-			}
-		}.open();
-	}  
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java
deleted file mode 100644
index 01f2e2f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/SimpleWorkingSetSelectionDialog.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-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.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-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.Shell;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Base implementation for a simple working set dialog that doesn't contain
- * references to non-editable/non-visible working sets.
- * 
- * @since 3.4
- * 
- */
-public class SimpleWorkingSetSelectionDialog extends AbstractWorkingSetDialog {
-
-	private class Filter extends ViewerFilter {
-
-		public boolean select(Viewer viewer, Object parentElement,
-				Object element) {
-			return isCompatible((IWorkingSet) element);
-		}
-
-		private boolean isCompatible(IWorkingSet set) {
-			if (set.isAggregateWorkingSet())
-				return false;
-
-			// original JDT code had the catch for self-updating sets that no
-			// one can explain. There doesn't seem to
-			// be a good reason to exclude these sets so the clause has been
-			// removed.
-			
-			// if (set.isAggregateWorkingSet() || !set.isSelfUpdating())
-			// return false;
-
-			if (!set.isVisible())
-				return false;
-
-			if (!set.isEditable())
-				return false;
-
-			Set workingSetTypeIds = getSupportedWorkingSetIds();
-			if (workingSetTypeIds == null)
-				return true;
-
-			for (Iterator i = workingSetTypeIds.iterator(); i.hasNext();) {
-				String workingSetTypeId = (String) i.next();
-				if (workingSetTypeId.equals(set.getId()))
-					return true;
-			}
-
-			return false;
-		}
-	}
-
-	private final static int SIZING_SELECTION_WIDGET_HEIGHT = 200;
-
-	private final static int SIZING_SELECTION_WIDGET_WIDTH = 50;
-
-	private CheckboxTableViewer viewer;
-
-	private IWorkingSet[] initialSelection;
-
-	/**
-	 * Create a new instance of this class.
-	 * 
-	 * @param shell
-	 *            the shell to parent this dialog on
-	 * @param workingSetTypeIds
-	 *            the types of working set IDs that will be shown in this dialog
-	 * @param selectedWorkingSets
-	 *            the currently selected working sets (if any)
-	 * @param canEdit
-	 *            whether or not this dialog will display edit controls
-	 */
-	public SimpleWorkingSetSelectionDialog(Shell shell,
-			String[] workingSetTypeIds, IWorkingSet[] selectedWorkingSets,
-			boolean canEdit) {
-		super(shell, workingSetTypeIds, canEdit);
-		this.initialSelection = selectedWorkingSets;
-		setTitle(WorkbenchMessages.WorkingSetSelectionDialog_title_multiSelect);
-		setMessage(WorkbenchMessages.WorkingSetSelectionDialog_message_multiSelect);
-	}
-
-	protected Control createDialogArea(Composite parent) {
-		initializeDialogUnits(parent);
-
-		Composite composite = (Composite) super.createDialogArea(parent);
-
-		Composite viewerComposite = new Composite(composite, SWT.NONE);
-		GridLayout layout = new GridLayout(2, false);
-		layout.marginHeight = layout.marginWidth = 0;
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		viewerComposite.setLayout(layout);
-
-		GridData data = new GridData(GridData.FILL_BOTH);
-		data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-		data.widthHint = SIZING_SELECTION_WIDGET_WIDTH + 300; // fudge? I like
-		// fudge.
-		viewerComposite.setLayoutData(data);
-
-		viewer = CheckboxTableViewer.newCheckList(viewerComposite, SWT.BORDER);
-		viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
-		viewer.setLabelProvider(new WorkingSetLabelProvider());
-		viewer.setContentProvider(new ArrayContentProvider());
-		viewer.addFilter(new WorkingSetFilter(null));
-		viewer.setInput(PlatformUI.getWorkbench().getWorkingSetManager()
-				.getWorkingSets());
-		viewer.setFilters(new ViewerFilter[] { new Filter() });
-
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				handleSelectionChanged();
-			}
-		});
-		viewer.setCheckedElements(initialSelection);
-
-		data = new GridData(GridData.FILL_BOTH);
-		data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-		data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
-
-		viewer.getControl().setLayoutData(data);
-		addModifyButtons(viewerComposite);
-
-		addSelectionButtons(composite);
-
-		availableWorkingSetsChanged();
-
-		Dialog.applyDialogFont(composite);
-
-		return composite;
-	}
-
-	protected void okPressed() {
-		Object[] checked = viewer.getCheckedElements();
-		IWorkingSet[] workingSets = new IWorkingSet[checked.length];
-		System.arraycopy(checked, 0, workingSets, 0, checked.length);
-		setSelection(workingSets);
-		super.okPressed();
-	}
-
-	protected List getSelectedWorkingSets() {
-		ISelection selection = viewer.getSelection();
-		if (selection instanceof IStructuredSelection) {
-			return ((IStructuredSelection) selection).toList();
-		}
-		return null;
-	}
-
-	protected void availableWorkingSetsChanged() {
-		viewer.setInput(PlatformUI.getWorkbench().getWorkingSetManager()
-				.getWorkingSets());
-		super.availableWorkingSetsChanged();
-	}
-
-	/**
-	 * Called when the selection has changed.
-	 */
-	void handleSelectionChanged() {
-		updateButtonAvailability();
-	}
-
-	protected void selectAllSets() {
-		viewer.setCheckedElements(PlatformUI.getWorkbench()
-				.getWorkingSetManager().getWorkingSets());
-		updateButtonAvailability();
-	}
-
-	protected void deselectAllSets() {
-		viewer.setCheckedElements(new Object[0]);
-		updateButtonAvailability();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
deleted file mode 100644
index 0f096c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/StartupPreferencePage.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Arrays;
-import java.util.HashSet;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-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.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.osgi.framework.Constants;
-
-/**
- * The Startup preference page.
- */
-public class StartupPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage {
-    private Table pluginsList;
-
-    private Workbench workbench;
-
-    /**
-     * @see PreferencePage#createContents(Composite)
-     */
-    protected Control createContents(Composite parent) {
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.STARTUP_PREFERENCE_PAGE);
-
-        Composite composite = createComposite(parent);
-
-        createEarlyStartupSelection(composite);
-
-        return composite;
-    }
-
-    protected Composite createComposite(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NULL);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        composite.setLayout(layout);
-        GridData data = new GridData(GridData.FILL_BOTH
-                | GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
-        composite.setLayoutData(data);
-        composite.setFont(parent.getFont());
-
-        return composite;
-    }
-
-    protected void createEarlyStartupSelection(Composite parent) {
-        Label label = new Label(parent, SWT.NONE);
-        label.setText(WorkbenchMessages.StartupPreferencePage_label);
-        label.setFont(parent.getFont());
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        label.setLayoutData(data);
-        pluginsList = new Table(parent, SWT.BORDER | SWT.CHECK | SWT.H_SCROLL
-                | SWT.V_SCROLL);
-        data = new GridData(GridData.FILL_BOTH);
-        pluginsList.setFont(parent.getFont());
-        pluginsList.setLayoutData(data);
-        populatePluginsList();
-    }
-
-    private void populatePluginsList() {
-        String pluginIds[] = workbench.getEarlyActivatedPlugins();
-        HashSet disabledPlugins = new HashSet(Arrays.asList(workbench.getDisabledEarlyActivatedPlugins()));
-        for (int i = 0; i < pluginIds.length; i++) {
-            String pluginId = pluginIds[i];
-            TableItem item = new TableItem(pluginsList, SWT.NONE);
-            item.setText((String) Platform.getBundle(pluginId).getHeaders().get(
-                    Constants.BUNDLE_NAME));
-            item.setData(pluginId);
-            item.setChecked(!disabledPlugins.contains(pluginId));
-        }
-    }
-
-    /**
-     * @see IWorkbenchPreferencePage
-     */
-    public void init(IWorkbench workbench) {
-        this.workbench = (Workbench) workbench;
-    }
-
-    /**
-     * @see PreferencePage
-     */
-    protected void performDefaults() {
-        TableItem items[] = pluginsList.getItems();
-        for (int i = 0; i < items.length; i++) {
-            items[i].setChecked(true);
-        }
-    }
-
-    /**
-     * @see PreferencePage
-     */
-    public boolean performOk() {
-        StringBuffer preference = new StringBuffer();
-        TableItem items[] = pluginsList.getItems();
-        for (int i = 0; i < items.length; i++) {
-            if (!items[i].getChecked()) {
-                preference.append((String) items[i].getData());
-                preference.append(IPreferenceConstants.SEPARATOR);
-            }
-        }
-        String pref = preference.toString();
-        IPreferenceStore store = PrefUtil.getInternalPreferenceStore();
-        store.putValue(IPreferenceConstants.PLUGINS_NOT_ACTIVATED_ON_STARTUP,
-                pref);
-        PrefUtil.savePrefs();
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewComparator.java
deleted file mode 100644
index 0755704..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewComparator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.ui.internal.registry.Category;
-import org.eclipse.ui.internal.registry.ViewRegistry;
-import org.eclipse.ui.internal.registry.ViewRegistryReader;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * This is used to sort views in a ShowViewDialog.
- */
-public class ViewComparator extends ViewerComparator {
-    private ViewRegistry viewReg;
-
-    /**
-     * ViewSorter constructor comment.
-     * 
-     * @param reg an IViewRegistry
-     */
-    public ViewComparator(ViewRegistry reg) {
-        super();
-        viewReg = reg;
-    }
-
-    /**
-     * Returns a negative, zero, or positive number depending on whether
-     * the first element is less than, equal to, or greater than
-     * the second element.
-     */
-    public int compare(Viewer viewer, Object e1, Object e2) {
-        if (e1 instanceof IViewDescriptor) {
-            String str1 = DialogUtil.removeAccel(((IViewDescriptor) e1)
-                    .getLabel());
-            String str2 = DialogUtil.removeAccel(((IViewDescriptor) e2)
-                    .getLabel());
-            return getComparator().compare(str1, str2);
-        } else if (e1 instanceof IViewCategory) {
-        	IViewCategory generalCategory = viewReg.findCategory(ViewRegistryReader.GENERAL_VIEW_ID);
-        	if (generalCategory != null){
-        		if (((IViewCategory)e1).getId().equals(generalCategory.getId())) {
-					return -1;
-				}
-        		if (((IViewCategory)e2).getId().equals(generalCategory.getId())) {
-					return 1;
-				}
-        	}
-			Category miscCategory = viewReg.getMiscCategory();
-			if(miscCategory != null){
-				if (((IViewCategory)e1).getId().equals(miscCategory.getId())) {
-					return 1;
-				}
-				if (((IViewCategory)e2).getId().equals(miscCategory.getId())) {
-					return -1;
-				}
-			}
-            String str1 = DialogUtil.removeAccel(((IViewCategory) e1).getLabel());
-            String str2 = DialogUtil.removeAccel(((IViewCategory) e2).getLabel());
-            return getComparator().compare(str1, str2);
-        }
-        return 0;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewContentProvider.java
deleted file mode 100644
index 225ee39..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewContentProvider.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.intro.IIntroConstants;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * Provides content for viewers that wish to show Views.
- */
-public class ViewContentProvider implements ITreeContentProvider {
-
-    /**
-     * Child cache.  Map from Object->Object[].  Our hasChildren() method is 
-     * expensive so it's better to cache the results of getChildren().
-     */
-    private Map childMap = new HashMap();
-
-    /**
-     * Create a new instance of the ViewContentProvider.
-     */
-    public ViewContentProvider() {
-        //no-op
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-        childMap.clear();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-     */
-    public Object[] getChildren(Object element) {
-        Object[] children = (Object[]) childMap.get(element);
-        if (children == null) {
-            children = createChildren(element);
-            childMap.put(element, children);
-        }
-        return children;
-    }
-
-    /**
-     * Does the actual work of getChildren.
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-     */
-    private Object[] createChildren(Object element) {
-        if (element instanceof IViewRegistry) {
-            IViewRegistry reg = (IViewRegistry) element;
-            IViewCategory [] categories = reg.getCategories();
-
-            ArrayList filtered = new ArrayList();
-            for (int i = 0; i < categories.length; i++) {
-                if (!hasChildren(categories[i])) {
-					continue;
-				}
-
-                filtered.add(categories[i]);
-            }
-            categories = (IViewCategory[]) filtered.toArray(new IViewCategory[filtered
-                    .size()]);
-
-            // if there is only one category, return it's children directly
-            if (categories.length == 1) {
-                return getChildren(categories[0]);
-            }
-            return categories;
-        } else if (element instanceof IViewCategory) {
-            IViewDescriptor [] views = ((IViewCategory) element).getViews();
-            if (views != null) {
-                ArrayList filtered = new ArrayList();
-                for (int i = 0; i < views.length; i++) {
-                    Object o = views[i];
-                    if (WorkbenchActivityHelper.filterItem(o)) {
-						continue;
-					}
-                    filtered.add(o);
-                }
-                return removeIntroView(filtered).toArray();
-            }
-        }
-
-        return new Object[0];
-    }
-
-    /**
-     * Removes the temporary intro view from the list so that it cannot be activated except through
-     * the introduction command.
-     *  
-     * @param list the list of view descriptors
-     * @return the modified list.
-     * @since 3.0
-     */
-    private ArrayList removeIntroView(ArrayList list) {
-        for (Iterator i = list.iterator(); i.hasNext();) {
-            IViewDescriptor view = (IViewDescriptor) i.next();
-            if (view.getId().equals(IIntroConstants.INTRO_VIEW_ID)) {
-                i.remove();
-            }
-        }
-        return list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object element) {
-        return getChildren(element);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-     */
-    public Object getParent(Object element) {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-     */
-    public boolean hasChildren(java.lang.Object element) {
-        if (element instanceof IViewRegistry) {
-			return true;
-		} else if (element instanceof IViewCategory) {
-            if (getChildren(element).length > 0) {
-				return true;
-			}
-        }
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-     *      java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        childMap.clear();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
deleted file mode 100644
index 8576e82..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewLabelProvider.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Benjamin Muskalla  - bug 77710
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Provides labels for view children.
- */
-public class ViewLabelProvider extends LabelProvider implements IColorProvider {
-    private HashMap images;
-	private final IWorkbenchWindow window;
-	private final Color dimmedForeground;
-
-    /**
-	 * @param window the workbench window
-     * @param dimmedForeground the dimmed foreground color to use for views that are already open
-	 */
-	public ViewLabelProvider(IWorkbenchWindow window, Color dimmedForeground) {
-		this.window = window;
-		this.dimmedForeground = dimmedForeground;
-	}
-
-	Image cacheImage(ImageDescriptor desc) {
-        if (images == null) {
-			images = new HashMap(21);
-		}
-        Image image = (Image) images.get(desc);
-        if (image == null) {
-            image = desc.createImage();
-            images.put(desc, image);
-        }
-        return image;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-     */
-    public void dispose() {
-        if (images != null) {
-            for (Iterator i = images.values().iterator(); i.hasNext();) {
-                ((Image) i.next()).dispose();
-            }
-            images = null;
-        }
-        super.dispose();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-     */
-    public Image getImage(Object element) {
-        if (element instanceof IViewDescriptor) {
-            ImageDescriptor desc = ((IViewDescriptor) element)
-                    .getImageDescriptor();
-            if (desc != null) {
-				return cacheImage(desc);
-			}
-        } else if (element instanceof IViewCategory) {
-            ImageDescriptor desc = WorkbenchImages
-                    .getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
-            return cacheImage(desc);
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        String label = WorkbenchMessages.ViewLabel_unknown;
-        if (element instanceof IViewCategory) {
-			label = ((IViewCategory) element).getLabel();
-		} else if (element instanceof IViewDescriptor) {
-			label = ((IViewDescriptor) element).getLabel();
-		}
-        return DialogUtil.removeAccel(label);
-    }
-
-	public Color getBackground(Object element) {
-		return null;
-	}
-
-	public Color getForeground(Object element) {
-		if (element instanceof IViewDescriptor) {
-			IWorkbenchPage activePage = window.getActivePage();
-			if (activePage != null) {
-				if (activePage
-						.findViewReference(((IViewDescriptor) element).getId()) != null) {
-					return dimmedForeground;
-				}
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
deleted file mode 100644
index ee08c93..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewPatternFilter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * A class that handles filtering view node items based on a supplied
- * matching string.
- *  
- * @since 3.2
- *
- */
-public class ViewPatternFilter extends PatternFilter {
-
-	/**
-	 * Create a new instance of a ViewPatternFilter 
-	 * @param isMatchItem
-	 */
-	public ViewPatternFilter() {
-		super();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.internal.dialogs.PatternFilter#isElementSelectable(java.lang.Object)
-	 */
-	public boolean isElementSelectable(Object element) {
-		return element instanceof IViewDescriptor;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.dialogs.PatternFilter#isElementMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object)
-	 */
-	protected boolean isLeafMatch(Viewer viewer, Object element) {
-		if (element instanceof IViewCategory) {
-			return false;
-		}
-
-		String text = null;
-		if (element instanceof IViewDescriptor) {
-			IViewDescriptor desc = (IViewDescriptor) element;
-			text = desc.getLabel();
-			if (wordMatches(text)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
deleted file mode 100644
index c5a3491..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java
+++ /dev/null
@@ -1,1158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Locale;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.themes.IThemeDescriptor;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-import org.eclipse.ui.progress.UIJob;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemeManager;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * The ViewsPreferencePage is the page used to set preferences for the
- * appearance of the workbench. Originally this applied only to views but now
- * applies to the overall appearance, hence the name.
- */
-public class ViewsPreferencePage extends PreferencePage implements
-		IWorkbenchPreferencePage {
-
-	private Button showTextOnPerspectiveBar;
-
-	/*
-	 * change the tab style of the workbench
-	 */
-	private Button showTraditionalStyleTabs;
-
-	private Button enableAnimations;
-
-	private Button useColoredLabels;
-
-	private Button editorTopButton;
-
-	private Button editorBottomButton;
-
-	private Button viewTopButton;
-
-	private Button viewBottomButton;
-
-	private Button perspLeftButton;
-
-	private Button perspTopLeftButton;
-
-	private Button perspTopRightButton;
-
-	static final String EDITORS_TITLE = WorkbenchMessages.ViewsPreference_editors;
-
-	private static final String EDITORS_TOP_TITLE = WorkbenchMessages.ViewsPreference_editors_top;
-
-	private static final String EDITORS_BOTTOM_TITLE = WorkbenchMessages.ViewsPreference_editors_bottom;
-
-	private static final String VIEWS_TITLE = WorkbenchMessages.ViewsPreference_views;
-
-	private static final String VIEWS_TOP_TITLE = WorkbenchMessages.ViewsPreference_views_top;
-
-	private static final String VIEWS_BOTTOM_TITLE = WorkbenchMessages.ViewsPreference_views_bottom;
-
-	private static final String PERSP_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar;
-
-	private static final String PERSP_LEFT_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar_left;
-
-	private static final String PERSP_TOP_LEFT_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar_topLeft;
-
-	private static final String PERSP_TOP_RIGHT_TITLE = WorkbenchMessages.ViewsPreference_perspectiveBar_topRight;
-
-	// These constants aren't my favourite idea, but to get this preference done
-	// for M9... A better solution might be to have the presentation factory set
-	// its dependant preference defaults on startup. I've filed bug 63346 to do
-	// something about this area.
-	private static final String R21PRESENTATION_ID = "org.eclipse.ui.internal.r21presentationFactory"; //$NON-NLS-1$
-	private static final String DEFAULT_PRESENTATION_ID = IWorkbenchConstants.DEFAULT_PRESENTATION_ID;
-	private static final String R30_PRESENTATION_ID = "org.eclipse.ui.presentations.r30"; //$NON-NLS-1$
-
-	private static final String INITIAL_VAL = new String();
-
-	private static final int INITIAL_LOC_INT = -1;
-
-	// remembers whether the hidden fastview bar pref needs to be changed on
-	// OK/Apply
-	private String fastViewLoc = INITIAL_VAL;
-
-	private String showTextOnPerspBar = INITIAL_VAL;
-
-	private int editorAlignment;
-
-	private boolean editorAlignmentChanged = false;
-
-	private int viewAlignment;
-
-	private boolean viewAlignmentChanged = false;
-
-	private String perspBarLocation;
-
-	private Combo themeCombo;
-
-	private Combo presentationCombo;
-
-	private IConfigurationElement[] presentationFactories;
-
-	private String currentPresentationFactoryId;
-
-	private Button overridePresButton;
-
-	private IPropertyChangeListener overrideListener;
-
-	private boolean restartPosted = false;
-
-	private Group editorTabGroup;
-
-	private Group viewTabGroup;
-
-	private Group perspBarTabGroup;
-
-	private Text themeDescriptionText;
-
-	/**
-	 * Create a composite that for creating the tab toggle buttons.
-	 * 
-	 * @param composite
-	 *            Composite
-	 * @param title
-	 *            String
-	 */
-	private Group createButtonGroup(Composite composite, String title) {
-		Group buttonComposite = new Group(composite, SWT.NONE);
-		buttonComposite.setText(title);
-		FormLayout layout = new FormLayout();
-		layout.marginWidth = 5; // same as GridData default
-		layout.marginHeight = 5; // same as GridData default
-		buttonComposite.setLayout(layout);
-		buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
-				false));
-		return buttonComposite;
-	}
-
-	/**
-	 * Creates and returns the SWT control for the customized body of this
-	 * preference page under the given parent composite.
-	 * <p>
-	 * This framework method must be implemented by concrete subclasses.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @return Control the new control
-	 */
-	protected Control createContents(Composite parent) {
-		initializeDialogUnits(parent);
-
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.VIEWS_PREFERENCE_PAGE);
-
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		editorAlignment = apiStore
-				.getInt(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
-		viewAlignment = apiStore
-				.getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-		perspBarLocation = apiStore
-				.getString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
-
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-		GridLayout layout = new GridLayout();
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		composite.setLayout(layout);
-
-		createPresentationCombo(composite);
-		createPresentationOverride(composite);
-		createEditorTabButtonGroup(composite);
-		createViewTabButtonGroup(composite);
-		createPerspBarTabButtonGroup(composite);
-		createShowTextOnPerspectiveBarPref(composite);
-		createThemeCombo(composite);
-		createThemeDescriptionText(composite);
-		createShowTraditionalStyleTabsPref(composite);
-		createEnableAnimationsPref(composite);
-		createColoredLabelsPref(composite);
-
-		updateOverride();
-		hookOverrideListener();
-
-		applyDialogFont(composite);
-
-		return composite;
-	}
-
-	private void createColoredLabelsPref(Composite composite) {
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		useColoredLabels = createCheckButton(
-				composite,
-				WorkbenchMessages.ViewsPreference_useColoredLabels,
-				apiStore
-						.getBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS));
-	}
-
-	private void createThemeCombo(Composite composite) {
-		new Label(composite, SWT.NONE)
-				.setText(WorkbenchMessages.ViewsPreference_currentTheme);
-		themeCombo = new Combo(composite, SWT.READ_ONLY);
-		themeCombo
-				.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-		themeCombo.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				refreshThemeDescriptionText();
-			}
-		});
-		refreshThemeCombo(PlatformUI.getWorkbench().getThemeManager()
-				.getCurrentTheme().getId());
-	}
-
-	/**
-	 * Create the text box that will contain the current theme description text
-	 * (if any).
-	 * 
-	 * @param parent
-	 *            the parent <code>Composite</code>.
-	 */
-	private void createThemeDescriptionText(Composite parent) {
-		new Label(parent, SWT.NONE)
-				.setText(WorkbenchMessages.ViewsPreference_currentThemeDescription);
-
-		themeDescriptionText = new Text(parent, SWT.H_SCROLL | SWT.V_SCROLL
-				| SWT.READ_ONLY | SWT.BORDER | SWT.WRAP);
-		GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		// give a height hint that'll show at least two lines (and let the
-		// scroll bars draw nicely if necessary)
-		GC gc = new GC(parent);
-		layoutData.heightHint = Dialog.convertHeightInCharsToPixels(gc
-				.getFontMetrics(), 2);
-		gc.dispose();
-		themeDescriptionText.setLayoutData(layoutData);
-
-		refreshThemeDescriptionText();
-	}
-
-	private void refreshThemeDescriptionText() {
-		String description = null;
-		int idx = themeCombo.getSelectionIndex();
-		// idx == 0 is "Default" which has no description
-		if (idx > 0) {
-			IThemeDescriptor theme = WorkbenchPlugin.getDefault()
-					.getThemeRegistry().getThemes()[idx - 1];
-			description = theme.getDescription();
-		}
-		if (description == null) {
-			description = ""; //$NON-NLS-1$
-		}
-		themeDescriptionText.setText(description);
-	}
-
-	private Button createCheckButton(Composite composite, String text,
-			boolean selection) {
-		Button button = new Button(composite, SWT.CHECK);
-		button.setText(text);
-		button.setSelection(selection);
-		return button;
-	}
-
-	private void createPresentationOverride(Composite parent) {
-		IPreferenceStore store = getPreferenceStore();
-		boolean override = store
-				.getBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION);
-
-		// workaround to catch the case where the show text value was changed
-		// outside of this page
-		// turn off text on persp bar
-		boolean showText = PrefUtil.getAPIPreferenceStore().getBoolean(
-				IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR);
-		if (showText && isR21(currentPresentationFactoryId) || !showText
-				&& isR30(currentPresentationFactoryId)) {
-			if (!override) {
-				store
-						.setValue(IPreferenceConstants.OVERRIDE_PRESENTATION,
-								true);
-				override = true;
-			}
-		}
-		// workaround to catch the case where the perspective switcher location
-		// was changed outside of this page
-		// turn off text on persp bar
-		String barLocation = PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
-		if (!barLocation.equals(IWorkbenchPreferenceConstants.LEFT)
-				&& isR21(currentPresentationFactoryId)
-				|| !barLocation.equals(IWorkbenchPreferenceConstants.TOP_RIGHT)
-				&& isR30(currentPresentationFactoryId)) {
-			if (!override) {
-				store
-						.setValue(IPreferenceConstants.OVERRIDE_PRESENTATION,
-								true);
-				override = true;
-			}
-		}
-
-		overridePresButton = createCheckButton(parent,
-				WorkbenchMessages.ViewsPreference_override, override);
-		overridePresButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				updateOverrideState(overridePresButton.getSelection());
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				updateOverrideState(overridePresButton.getSelection());
-			}
-		});
-	}
-
-	private void updateOverrideState(boolean override) {
-		IPreferenceStore store = getPreferenceStore();
-		if (store.getBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION) != override) {
-			store
-					.setValue(IPreferenceConstants.OVERRIDE_PRESENTATION,
-							override);
-		}
-		// as we are no longer overriding the prefs should match the selected
-		// presentation
-		if (!override)
-			setPresentationPrefs(getSelectedPresentationID());
-	}
-
-	private void createPresentationCombo(Composite parent) {
-		new Label(parent, SWT.NONE)
-				.setText(WorkbenchMessages.ViewsPreference_currentPresentation);
-
-		presentationCombo = new Combo(parent, SWT.READ_ONLY);
-		presentationCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
-				true, false));
-		presentationCombo.addSelectionListener(new SelectionListener() {
-
-			public void widgetSelected(SelectionEvent e) {
-				updateSettings();
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				updateSettings();
-			}
-
-			private void updateSettings() {
-				if (!overridePresButton.getSelection()) {
-					setPresentationPrefs(getSelectedPresentationID());
-				}
-			}
-		});
-
-		refreshPresentationCombo();
-		setPresentationSelection();
-	}
-
-	/**
-	 * Set the two supplied controls to be beside each other.
-	 */
-	private void attachControls(Control leftControl, Control rightControl) {
-		FormData leftData = new FormData();
-		leftData.left = new FormAttachment(0, 0);
-
-		FormData rightData = new FormData();
-		rightData.left = new FormAttachment(
-				leftControl,
-				convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING));
-
-		leftControl.setLayoutData(leftData);
-		rightControl.setLayoutData(rightData);
-	}
-
-	/**
-	 * Create a composite that contains buttons for selecting tab position for
-	 * the edit selection.
-	 * 
-	 * @param composite
-	 *            Composite
-	 */
-	private void createEditorTabButtonGroup(Composite composite) {
-		editorTabGroup = createButtonGroup(composite, EDITORS_TITLE);
-
-		editorTopButton = new Button(editorTabGroup, SWT.RADIO);
-		editorTopButton.setText(EDITORS_TOP_TITLE);
-		editorTopButton.setSelection(editorAlignment == SWT.TOP);
-		editorTopButton.getAccessible().addAccessibleListener(
-				new AccessibleAdapter() {
-					public void getName(AccessibleEvent e) {
-						e.result = EDITORS_TITLE;
-					}
-				});
-
-		editorBottomButton = new Button(editorTabGroup, SWT.RADIO);
-		editorBottomButton.setText(EDITORS_BOTTOM_TITLE);
-		editorBottomButton.setSelection(editorAlignment == SWT.BOTTOM);
-
-		SelectionListener sel = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (e.widget.equals(editorTopButton)) {
-					if (editorAlignment != SWT.TOP) {
-						editorAlignment = SWT.TOP;
-						editorAlignmentChanged = true;
-					}
-				} else if (e.widget.equals(editorBottomButton)) {
-					if (editorAlignment != SWT.BOTTOM) {
-						editorAlignment = SWT.BOTTOM;
-						editorAlignmentChanged = true;
-					}
-				}
-			}
-		};
-
-		editorTopButton.addSelectionListener(sel);
-		editorBottomButton.addSelectionListener(sel);
-
-		attachControls(editorTopButton, editorBottomButton);
-	}
-
-	/**
-	 * Create a composite that contains buttons for selecting tab position for
-	 * the view selection.
-	 * 
-	 * @param composite
-	 *            Composite
-	 */
-	private void createViewTabButtonGroup(Composite composite) {
-		viewTabGroup = createButtonGroup(composite, VIEWS_TITLE);
-
-		viewTopButton = new Button(viewTabGroup, SWT.RADIO);
-		viewTopButton.setText(VIEWS_TOP_TITLE);
-		viewTopButton.setSelection(this.viewAlignment == SWT.TOP);
-
-		viewBottomButton = new Button(viewTabGroup, SWT.RADIO);
-		viewBottomButton.setText(VIEWS_BOTTOM_TITLE);
-		viewBottomButton.setSelection(viewAlignment == SWT.BOTTOM);
-
-		SelectionListener sel = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (e.widget.equals(viewTopButton)) {
-					if (viewAlignment != SWT.TOP) {
-						viewAlignment = SWT.TOP;
-						viewAlignmentChanged = true;
-					}
-				} else if (e.widget.equals(viewBottomButton)) {
-					if (viewAlignment != SWT.BOTTOM) {
-						viewAlignment = SWT.BOTTOM;
-						viewAlignmentChanged = true;
-					}
-				}
-			}
-		};
-
-		viewTopButton.addSelectionListener(sel);
-		viewBottomButton.addSelectionListener(sel);
-
-		attachControls(viewTopButton, viewBottomButton);
-	}
-
-	/**
-	 * Create a composite that contains buttons for selecting perspective
-	 * switcher position.
-	 * 
-	 * @param composite
-	 *            Composite
-	 */
-	private void createPerspBarTabButtonGroup(Composite composite) {
-		perspBarTabGroup = createButtonGroup(composite, PERSP_TITLE);
-
-		perspLeftButton = new Button(perspBarTabGroup, SWT.RADIO);
-		perspLeftButton.setText(PERSP_LEFT_TITLE);
-		perspLeftButton.setSelection(IWorkbenchPreferenceConstants.LEFT
-				.equals(perspBarLocation));
-		perspLeftButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				perspBarLocation = IWorkbenchPreferenceConstants.LEFT;
-			}
-		});
-
-		perspTopLeftButton = new Button(perspBarTabGroup, SWT.RADIO);
-		perspTopLeftButton.setText(PERSP_TOP_LEFT_TITLE);
-		perspTopLeftButton.setSelection(IWorkbenchPreferenceConstants.TOP_LEFT
-				.equals(perspBarLocation));
-		perspTopLeftButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				perspBarLocation = IWorkbenchPreferenceConstants.TOP_LEFT;
-			}
-		});
-
-		perspTopRightButton = new Button(perspBarTabGroup, SWT.RADIO);
-		perspTopRightButton.setText(PERSP_TOP_RIGHT_TITLE);
-		perspTopRightButton
-				.setSelection(IWorkbenchPreferenceConstants.TOP_RIGHT
-						.equals(perspBarLocation));
-		perspTopRightButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				perspBarLocation = IWorkbenchPreferenceConstants.TOP_RIGHT;
-			}
-		});
-
-		int spacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-
-		FormData leftData = new FormData();
-		leftData.left = new FormAttachment(0, 0);
-
-		FormData topLeftData = new FormData();
-		topLeftData.left = new FormAttachment(perspLeftButton, spacing);
-
-		FormData topRightData = new FormData();
-		topRightData.left = new FormAttachment(perspTopLeftButton, spacing);
-
-		perspLeftButton.setLayoutData(leftData);
-		perspTopLeftButton.setLayoutData(topLeftData);
-		perspTopRightButton.setLayoutData(topRightData);
-	}
-
-	/**
-	 * Hook a listener to update the buttons based on an override preference. If
-	 * the preference is false then do not allow editing of these options.
-	 * 
-	 */
-	private void hookOverrideListener() {
-		if (overrideListener != null) {
-			return;
-		}
-		IPreferenceStore store = getPreferenceStore();
-		overrideListener = new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getProperty().equals(
-						IPreferenceConstants.OVERRIDE_PRESENTATION)) {
-					updateOverride();
-				}
-			}
-		};
-		store.addPropertyChangeListener(overrideListener);
-	}
-
-	/**
-	 * Dispose resources created by the receiver.
-	 */
-	public void dispose() {
-		super.dispose();
-		if (overrideListener != null) {
-			getPreferenceStore().removePropertyChangeListener(overrideListener);
-			overrideListener = null;
-		}
-	}
-
-	private void updateOverride() {
-		boolean override = getPreferenceStore().getBoolean(
-				IPreferenceConstants.OVERRIDE_PRESENTATION);
-		editorTabGroup.setEnabled(override);
-		editorTopButton.setEnabled(override);
-		editorBottomButton.setEnabled(override);
-		viewTabGroup.setEnabled(override);
-		viewTopButton.setEnabled(override);
-		viewBottomButton.setEnabled(override);
-		perspBarTabGroup.setEnabled(override);
-		perspTopLeftButton.setEnabled(override);
-		perspLeftButton.setEnabled(override);
-		perspTopRightButton.setEnabled(override);
-		showTextOnPerspectiveBar.setEnabled(override);
-	}
-
-	private void refreshPresentationCombo() {
-		// get the active presentation
-		presentationCombo.removeAll();
-		refreshPresentationFactories();
-
-		for (int i = 0; i < presentationFactories.length; ++i) {
-			IConfigurationElement el = presentationFactories[i];
-			String name = el.getAttribute(IWorkbenchConstants.TAG_NAME);
-			if (!currentPresentationFactoryId.equals(el
-					.getAttribute(IWorkbenchConstants.TAG_ID))) {
-				presentationCombo.add(name);
-			} else {
-				presentationCombo
-						.add(NLS
-								.bind(
-										WorkbenchMessages.ViewsPreference_currentPresentationFormat,
-										name));
-			}
-		}
-	}
-
-	private void setPresentationSelection() {
-		for (int i = 0; i < presentationFactories.length; ++i) {
-			if (currentPresentationFactoryId.equals(presentationFactories[i]
-					.getAttribute(IWorkbenchConstants.TAG_ID))) {
-				presentationCombo.select(i);
-				return;
-			}
-		}
-		// presentationCombo.select(0);
-	}
-
-	/**
-	 * Update this page's list of presentation factories. This should only be
-	 * used when the presentation combo is refreshed, as this array will be used
-	 * to set the selection from the combo.
-	 */
-	private void refreshPresentationFactories() {
-		// update the current selection (used to look for changes on apply)
-		currentPresentationFactoryId = PrefUtil.getAPIPreferenceStore()
-				.getString(
-						IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
-		// Workbench.getInstance().getPresentationId();
-
-		// update the sorted list of factories
-		presentationFactories = Platform.getExtensionRegistry()
-				.getConfigurationElementsFor(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_PRESENTATION_FACTORIES);
-
-		// sort the array by name
-		Arrays.sort(presentationFactories, new Comparator() {
-			Collator collator = Collator.getInstance(Locale.getDefault());
-
-			public int compare(Object a, Object b) {
-				IConfigurationElement el1 = (IConfigurationElement) a;
-				IConfigurationElement el2 = (IConfigurationElement) b;
-				return collator.compare(el1
-						.getAttribute(IWorkbenchConstants.TAG_NAME), el2
-						.getAttribute(IWorkbenchConstants.TAG_NAME));
-			}
-		});
-	}
-
-	/**
-	 * Update the preferences associated with the argument presentation factory.
-	 * 
-	 * @return boolean
-	 *         <code>true<\code> of the presentation has changed and <code>false<\code> otherwise
-	 */
-	private boolean updatePresentationPreferences() {
-		// There are some preference values associated with the R2.1
-		// presentation that cannot be captured in the presentation
-		// factory. Perhaps the extension point should contain these
-		// (a list of attributes?), but for now it is done manually.
-
-		if (presentationCombo == null) {
-			return false;
-		}
-
-		String id = getSelectedPresentationID();
-
-		// if it hasn't changed then there's nothing to do
-		if (id.equals(currentPresentationFactoryId)) {
-			return false;
-		}
-
-		currentPresentationFactoryId = id;
-		// apply 2.1 prefs if needed
-		setPresentationPrefs(id);
-		// set the new presentation factory id
-		PrefUtil.getAPIPreferenceStore().putValue(
-				IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID, id);
-		// a restart is required to update the presentation
-		return true;
-	}
-
-	private void setPresentationPrefs(String id) {
-		if (isR21(id)) {
-			setR21Preferences();
-		} else if (isR30(id)) {
-			setR30Preferences();
-		} else if (isR33(id)) {
-			setR33Preferences();
-		}
-	}
-
-	private boolean isR33(String id) {
-		return DEFAULT_PRESENTATION_ID.equals(id);
-	}
-
-	private boolean isR30(String id) {
-		return R30_PRESENTATION_ID.equals(id);
-	}
-
-	private boolean isR21(String id) {
-		return R21PRESENTATION_ID.equals(id);
-	}
-
-	private String getSelectedPresentationID() {
-		int selection = presentationCombo.getSelectionIndex();
-		IConfigurationElement element = presentationFactories[selection];
-		String id = element.getAttribute(IWorkbenchConstants.TAG_ID);
-		return id;
-	}
-
-	private void setR33Preferences() {
-		setR30Preferences();
-
-		// Turn -on- the new Min/Max behaviour
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-		apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX,
-				true);
-	}
-
-	private void setR30Preferences() {
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		// Turn -off- the new min/max behaviour
-		apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX,
-				false);
-
-		setEditorAlignDefault(apiStore);
-		setViewAlignDefault(apiStore);
-
-		// perspective switcher on the left
-		perspBarLocation = apiStore
-				.getDefaultString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
-		perspLeftButton.setSelection(perspBarLocation
-				.equals(IWorkbenchPreferenceConstants.LEFT));
-		perspTopLeftButton.setSelection(perspBarLocation
-				.equals(IWorkbenchPreferenceConstants.TOP_LEFT));
-		perspTopRightButton.setSelection(perspBarLocation
-				.equals(IWorkbenchPreferenceConstants.TOP_RIGHT));
-
-		// perspective bar should be set to default on OK or Apply
-		perspBarLocation = INITIAL_VAL;
-
-		// turn off text on persp bar
-		showTextOnPerspectiveBar
-				.setSelection(apiStore
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
-		// text on perspective bar should be set to default on OK or Apply
-		showTextOnPerspBar = INITIAL_VAL;
-
-		// fast view bar should be set to default on OK or Apply
-		fastViewLoc = INITIAL_VAL;
-	}
-
-	/**
-	 * Set the view alignment based on apiStore.
-	 * @param apiStore
-	 */
-	private void setViewAlignDefault(IPreferenceStore apiStore) {
-		int oldVal;
-		// reset the preferences for 3.0 presentation
-		oldVal = viewAlignment;
-		viewAlignment = apiStore
-				.getDefaultInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-		viewTopButton.setSelection(viewAlignment == SWT.TOP);
-		viewBottomButton.setSelection(viewAlignment == SWT.BOTTOM);
-
-		// view tabs should be set to default on OK or Apply
-		if (oldVal != viewAlignment) {
-			viewAlignmentChanged = true;
-		}
-		viewAlignment = INITIAL_LOC_INT;
-	}
-
-	private void setEditorAlignDefault(IPreferenceStore apiStore) {
-		// editor tabs on the bottom, really should associate this with the
-		// presentation
-		int oldVal = editorAlignment;
-		editorAlignment = apiStore
-				.getDefaultInt(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
-		editorTopButton.setSelection(editorAlignment == SWT.TOP);
-		editorBottomButton.setSelection(editorAlignment == SWT.BOTTOM);
-
-		// editor tabs should be set to default on OK or Apply
-		if (oldVal != editorAlignment) {
-			editorAlignmentChanged = true;
-		}
-		editorAlignment = INITIAL_LOC_INT;
-	}
-
-	private void setR21Preferences() {
-		// editor tabs on the bottom, really should associate this with the
-		// presentation
-		int oldVal = editorAlignment;
-		editorAlignment = SWT.TOP;
-		editorTopButton.setSelection(editorAlignment == SWT.TOP);
-		editorBottomButton.setSelection(editorAlignment == SWT.BOTTOM);
-		if (oldVal != editorAlignment) {
-			editorAlignmentChanged = true;
-		}
-
-		// view tabs on the bottom, really should associate this with the
-		// presentation
-		oldVal = viewAlignment;
-		viewAlignment = SWT.BOTTOM;
-		viewTopButton.setSelection(viewAlignment == SWT.TOP);
-		viewBottomButton.setSelection(viewAlignment == SWT.BOTTOM);
-		if (oldVal != viewAlignment) {
-			viewAlignmentChanged = true;
-		}
-
-		// perspective switcher on the left, really should associate this with
-		// the presentation
-		perspBarLocation = IWorkbenchPreferenceConstants.LEFT;
-		perspLeftButton.setSelection(perspBarLocation
-				.equals(IWorkbenchPreferenceConstants.LEFT));
-		perspTopLeftButton.setSelection(perspBarLocation
-				.equals(IWorkbenchPreferenceConstants.TOP_LEFT));
-		perspTopRightButton.setSelection(perspBarLocation
-				.equals(IWorkbenchPreferenceConstants.TOP_RIGHT));
-
-		// turn off text on persp bar, really should associate this with the
-		// presentation
-		showTextOnPerspectiveBar.setSelection(false);
-		showTextOnPerspBar = String.valueOf(false);
-
-		// fast view bar on the left (hidden pref, set it directly)
-		fastViewLoc = IWorkbenchPreferenceConstants.LEFT;
-
-		// Turn -off- the new min/max behaviour
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-		apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX,
-				false);
-	}
-
-	/**
-	 * @param themeToSelect
-	 *            the id of the theme to be selected
-	 */
-	private void refreshThemeCombo(String themeToSelect) {
-		themeCombo.removeAll();
-		ITheme currentTheme = PlatformUI.getWorkbench().getThemeManager()
-				.getCurrentTheme();
-
-		IThemeDescriptor[] descs = WorkbenchPlugin.getDefault()
-				.getThemeRegistry().getThemes();
-		String defaultThemeString = PlatformUI.getWorkbench().getThemeManager()
-				.getTheme(IThemeManager.DEFAULT_THEME).getLabel();
-		if (currentTheme.getId().equals(IThemeManager.DEFAULT_THEME)) {
-			defaultThemeString = NLS.bind(
-					WorkbenchMessages.ViewsPreference_currentThemeFormat,
-					new Object[] { defaultThemeString });
-		}
-		themeCombo.add(defaultThemeString);
-
-		String themeString;
-		int selection = 0;
-		for (int i = 0; i < descs.length; i++) {
-			themeString = descs[i].getName();
-			if (descs[i].getId().equals(currentTheme.getId())) {
-				themeString = NLS.bind(
-						WorkbenchMessages.ViewsPreference_currentThemeFormat,
-						new Object[] { themeString });
-			}
-			if (themeToSelect.equals(descs[i].getId())) {
-				selection = i + 1;
-			}
-			themeCombo.add(themeString);
-		}
-		themeCombo.select(selection);
-	}
-
-	/**
-	 * Create the button and text that support setting the preference for
-	 * showing text labels on the perspective switching bar.
-	 */
-	protected void createShowTextOnPerspectiveBarPref(Composite composite) {
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		showTextOnPerspectiveBar = createCheckButton(
-				composite,
-				WorkbenchMessages.WorkbenchPreference_showTextOnPerspectiveBar,
-				apiStore
-						.getBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
-	}
-
-	/**
-	 * Create the button and text that support setting the preference for
-	 * showing text labels on the perspective switching bar
-	 */
-	protected void createShowTraditionalStyleTabsPref(Composite composite) {
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		showTraditionalStyleTabs = createCheckButton(
-				composite,
-				WorkbenchMessages.ViewsPreference_traditionalTabs,
-				apiStore
-						.getBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
-	}
-
-	protected void createEnableAnimationsPref(Composite composite) {
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		enableAnimations = createCheckButton(
-				composite,
-				WorkbenchMessages.ViewsPreference_enableAnimations,
-				apiStore
-						.getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS));
-	}
-
-	/**
-	 * Returns preference store that belongs to the our plugin.
-	 * 
-	 * @return IPreferenceStore the preference store for this plugin
-	 */
-	protected IPreferenceStore doGetPreferenceStore() {
-		return WorkbenchPlugin.getDefault().getPreferenceStore();
-	}
-
-	/**
-	 * Initializes this preference page for the given workbench.
-	 * <p>
-	 * This method is called automatically as the preference page is being
-	 * created and initialized. Clients must not call this method.
-	 * </p>
-	 * 
-	 * @param workbench
-	 *            the workbench
-	 */
-	public void init(IWorkbench workbench) {
-		currentPresentationFactoryId = PrefUtil.getAPIPreferenceStore()
-				.getString(
-						IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
-	}
-
-	/**
-	 * The default button has been pressed.
-	 */
-	protected void performDefaults() {
-		IPreferenceStore store = getPreferenceStore();
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-
-		showTextOnPerspectiveBar
-				.setSelection(apiStore
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR));
-		showTraditionalStyleTabs
-				.setSelection(apiStore
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
-		enableAnimations
-				.setSelection(apiStore
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS));
-		useColoredLabels
-				.setSelection(apiStore
-						.getDefaultBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS));
-
-		String presID = apiStore
-				.getDefaultString(IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
-		currentPresentationFactoryId = presID;
-		setPresentationSelection();
-
-		boolean overridePrefs = store
-				.getDefaultBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION);
-		overridePresButton.setSelection(overridePrefs);
-
-		updateOverrideState(overridePrefs);
-
-		setEditorAlignDefault(apiStore);
-		setViewAlignDefault(apiStore);
-
-		perspBarLocation = apiStore
-				.getDefaultString(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
-		perspLeftButton.setSelection(IWorkbenchPreferenceConstants.LEFT
-				.equals(perspBarLocation));
-		perspTopLeftButton.setSelection(IWorkbenchPreferenceConstants.TOP_LEFT
-				.equals(perspBarLocation));
-		perspTopRightButton
-				.setSelection(IWorkbenchPreferenceConstants.TOP_RIGHT
-						.equals(perspBarLocation));
-
-		refreshThemeCombo(PlatformUI.getWorkbench().getThemeManager().getTheme(
-				IThemeManager.DEFAULT_THEME).getId());
-		refreshThemeDescriptionText();
-
-		WorkbenchPlugin.getDefault().savePluginPreferences();
-
-		super.performDefaults();
-	}
-
-	/**
-	 * The user has pressed Ok. Store/apply this page's values appropriately.
-	 */
-	public boolean performOk() {
-		IPreferenceStore store = getPreferenceStore();
-		IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
-		boolean override = store
-				.getBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION);
-
-		// apply the presentation selection first since it might change some of
-		// the other values
-		boolean restart = updatePresentationPreferences();
-
-		if (showTextOnPerspBar.equals(INITIAL_VAL) && !override) {
-			apiStore
-					.setToDefault(IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR);
-		} else {
-			apiStore.setValue(
-					IWorkbenchPreferenceConstants.SHOW_TEXT_ON_PERSPECTIVE_BAR,
-					showTextOnPerspectiveBar.getSelection());
-		}
-
-		if (editorAlignmentChanged) {
-			if (editorAlignment == INITIAL_LOC_INT) {
-				apiStore
-						.setToDefault(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
-			} else if (!override) {
-				// store the editor tab value to setting
-				apiStore.setValue(
-						IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION,
-						editorAlignment);
-			} else {
-				// store the editor tab value to setting
-				apiStore.setValue(
-						IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION,
-						editorAlignment);
-			}
-			restart = true;
-		}
-
-		if (viewAlignmentChanged) {
-			if (viewAlignment == INITIAL_LOC_INT) {
-				apiStore
-						.setToDefault(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-			} else if (!override) {
-				// store the view tab value to setting
-				apiStore.setValue(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION,
-						viewAlignment);
-			} else {
-				// store the view tab value to setting
-				apiStore.setValue(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION,
-						viewAlignment);
-			}
-			restart = true;
-		}
-
-		if (perspBarLocation.equals(INITIAL_VAL)) {
-			apiStore
-					.setToDefault(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR);
-		} else if (!override) {
-			// store the perspective bar text enabled setting
-			apiStore.setValue(
-					IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
-					perspBarLocation);
-		} else {
-			// store the perspective bar text enabled setting
-			apiStore.setValue(
-					IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
-					perspBarLocation);
-		}
-
-		if (fastViewLoc.equals(INITIAL_VAL)) {
-			apiStore
-					.setToDefault(IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION);
-		} else {
-			apiStore
-					.setValue(
-							IWorkbenchPreferenceConstants.INITIAL_FAST_VIEW_BAR_LOCATION,
-							fastViewLoc);
-		}
-
-		int idx = themeCombo.getSelectionIndex();
-		if (idx <= 0) {
-			Workbench.getInstance().getThemeManager().setCurrentTheme(
-					IThemeManager.DEFAULT_THEME);
-			refreshThemeCombo(IThemeManager.DEFAULT_THEME);
-		} else {
-			IThemeDescriptor applyTheme = WorkbenchPlugin.getDefault()
-					.getThemeRegistry().getThemes()[idx - 1];
-			Workbench.getInstance().getThemeManager().setCurrentTheme(
-					applyTheme.getId());
-			refreshThemeCombo(applyTheme.getId());
-		}
-		refreshThemeDescriptionText();
-
-		apiStore.setValue(
-				IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
-				showTraditionalStyleTabs.getSelection());
-		apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS,
-				enableAnimations.getSelection());
-		apiStore.setValue(IWorkbenchPreferenceConstants.USE_COLORED_LABELS,
-				useColoredLabels.getSelection());
-
-		PrefUtil.savePrefs();
-
-		// we can get here through performApply, in that case only post one
-		// restart
-		if (restart && !restartPosted) {
-			if (getContainer() instanceof IWorkbenchPreferenceContainer) {
-				IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
-				UIJob job = new UIJob(
-						WorkbenchMessages.ViewsPreference_restartRequestJobName) {
-					public IStatus runInUIThread(IProgressMonitor monitor) {
-						// make sure they really want to do this
-						int really = new MessageDialog(
-								null,
-								WorkbenchMessages.ViewsPreference_presentationConfirm_title,
-								null,
-								WorkbenchMessages.ViewsPreference_presentationConfirm_message,
-								MessageDialog.QUESTION,
-								new String[] {
-										WorkbenchMessages.ViewsPreference_presentationConfirm_yes,
-										WorkbenchMessages.ViewsPreference_presentationConfirm_no },
-								1).open();
-						if (really == Window.OK) {
-							PlatformUI.getWorkbench().restart();
-						}
-						return Status.OK_STATUS;
-					}
-				};
-				job.setSystem(true);
-				container.registerUpdateJob(job);
-				restartPosted = true;
-			}
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java
deleted file mode 100644
index 7b30a81..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardActivityFilter.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.model.AdaptableList;
-
-/**
- * Viewer filter designed to work with the new wizard page (and its input/content provider).
- * This will filter all non-primary wizards that are not enabled by activity.
- * 
- * @since 3.0
- */
-public class WizardActivityFilter extends ViewerFilter {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-     */
-    public boolean select(Viewer viewer, Object parentElement, Object element) {
-        Object[] children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer)
-                .getContentProvider()).getChildren(element);
-        if (children.length > 0) {
-			return filter(viewer, element, children).length > 0;
-		}
-
-        if (parentElement.getClass().equals(AdaptableList.class)) {
-			return true; //top-level ("primary") wizards should always be returned
-		}
-
-        if (WorkbenchActivityHelper.filterItem(element)) {
-			return false;
-		}
-
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java
deleted file mode 100644
index deff78c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardCollectionElement.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * Instances of this class are a collection of WizardCollectionElements,
- * thereby facilitating the definition of tree structures composed of these
- * elements. Instances also store a list of wizards.
- */
-public class WizardCollectionElement extends AdaptableList implements 
-		IPluginContribution, IWizardCategory {
-    private String id;
-
-    private String pluginId;
-
-    private String name;
-
-    private WizardCollectionElement parent;
-
-    private AdaptableList wizards = new AdaptableList();
-
-	private IConfigurationElement configElement;
-
-    /**
-     * Creates a new <code>WizardCollectionElement</code>. Parent can be
-     * null.
-     * @param id the id
-     * @param pluginId the plugin
-     * @param name the name
-     * @param parent the parent
-     */
-    public WizardCollectionElement(String id, String pluginId, String name,
-            WizardCollectionElement parent) {
-        this.name = name;
-        this.id = id;
-        this.pluginId = pluginId;
-        this.parent = parent;
-    }
-
-    /**
-     * Creates a new <code>WizardCollectionElement</code>. Parent can be
-     * null.
-     * 
-     * @param element
-     * @param parent
-     * @since 3.1
-     */
-    public WizardCollectionElement(IConfigurationElement element, WizardCollectionElement parent) {
-		configElement = element;
-		id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID); 
-		this.parent = parent;
-	}
-
-	/**
-     * Adds a wizard collection to this collection.
-     */
-    public AdaptableList add(IAdaptable a) {
-        if (a instanceof WorkbenchWizardElement) {
-            wizards.add(a);
-        } else {
-            super.add(a);
-        }
-        return this;
-    }
-    
-    
-    /**
-     * Remove a wizard from this collection.
-     */
-    public void remove(IAdaptable a) {
-        if (a instanceof WorkbenchWizardElement) {
-            wizards.remove(a);
-        } else {
-            super.remove(a);
-        }		
-	}
-
-	/**
-     * Returns the wizard collection child object corresponding to the passed
-     * path (relative to this object), or <code>null</code> if such an object
-     * could not be found.
-     * 
-     * @param searchPath
-     *            org.eclipse.core.runtime.IPath
-     * @return WizardCollectionElement
-     */
-    public WizardCollectionElement findChildCollection(IPath searchPath) {
-        Object[] children = getChildren(null);
-        String searchString = searchPath.segment(0);
-        for (int i = 0; i < children.length; ++i) {
-            WizardCollectionElement currentCategory = (WizardCollectionElement) children[i];
-            if (currentCategory.getId().equals(searchString)) {
-                if (searchPath.segmentCount() == 1) {
-					return currentCategory;
-				}
-
-                return currentCategory.findChildCollection(searchPath
-                        .removeFirstSegments(1));
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the wizard category corresponding to the passed
-     * id, or <code>null</code> if such an object could not be found.
-     * This recurses through child categories.
-     * 
-     * @param id the id for the child category
-     * @return the category, or <code>null</code> if not found
-     * @since 3.1
-     */
-    public WizardCollectionElement findCategory(String id) {
-        Object[] children = getChildren(null);
-        for (int i = 0; i < children.length; ++i) {
-            WizardCollectionElement currentCategory = (WizardCollectionElement) children[i];
-            if (id.equals(currentCategory.getId())) {
-                    return currentCategory;
-            }
-            WizardCollectionElement childCategory = currentCategory.findCategory(id);
-            if (childCategory != null) {
-                return childCategory;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns this collection's associated wizard object corresponding to the
-     * passed id, or <code>null</code> if such an object could not be found.
-     * 
-     * @param searchId the id to search on
-     * @param recursive whether to search recursivly
-     * @return the element
-     */
-    public WorkbenchWizardElement findWizard(String searchId, boolean recursive) {
-        Object[] wizards = getWizards();
-        for (int i = 0; i < wizards.length; ++i) {
-            WorkbenchWizardElement currentWizard = (WorkbenchWizardElement) wizards[i];
-            if (currentWizard.getId().equals(searchId)) {
-				return currentWizard;
-			}
-        }
-        if (!recursive) {
-			return null;
-		}
-        for (Iterator iterator = children.iterator(); iterator.hasNext();) {
-            WizardCollectionElement child = (WizardCollectionElement) iterator
-                    .next();
-            WorkbenchWizardElement result = child.findWizard(searchId, true);
-            if (result != null) {
-				return result;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * 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 Platform.getAdapterManager().getAdapter(this, adapter);
-    }
-
-    /**
-     * Returns the unique ID of this element.
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the label for this collection.
-     */
-    public String getLabel(Object o) {
-    	return configElement != null ? configElement
-				.getAttribute(IWorkbenchRegistryConstants.ATT_NAME) : name;
-    }
-
-    /**
-     * Returns the logical parent of the given object in its tree.
-     */
-    public Object getParent(Object o) {
-        return parent;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.IWizardCategory#getPath()
-     */
-    public IPath getPath() {
-        if (parent == null) {
-			return new Path(""); //$NON-NLS-1$
-		}
-
-        return parent.getPath().append(getId());
-    }
-
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.IWizardCategory#getWizards()
-     */
-    public IWizardDescriptor [] getWizards() {
-		return getWizardsExpression((IWizardDescriptor[]) wizards
-				.getTypedChildren(IWizardDescriptor.class));
-	}
-
-    /**
-     * Takes an array of <code>IWizardDescriptor</code> and removes all
-     * entries which fail the Expressions check.
-     * 
-     * @param wizardDescriptors Array of <code>IWizardDescriptor</code>.
-     * @return The array minus the elements which faled the Expressions check.
-     */
-    private IWizardDescriptor[] getWizardsExpression(IWizardDescriptor[] wizardDescriptors) {
-        int size = wizardDescriptors.length;
-        List result = new ArrayList(size);
-        for (int i = 0; i < size; i++) {
-            if (!WorkbenchActivityHelper.restrictUseOf(
-            		(WorkbenchWizardElement)wizardDescriptors[i]))
-                result.add(wizardDescriptors[i]);
-        }
-        return (IWizardDescriptor[])result
-                    .toArray(new IWizardDescriptor[result.size()]);
-    }   
-    
-    /**
-     * Return the wizards minus the wizards which failed the expressions check.
-     * 
-     * @return the wizards
-     * @since 3.1
-     */
-    public WorkbenchWizardElement [] getWorkbenchWizardElements() {        
-    	return getWorkbenchWizardElementsExpression(
-    	    (WorkbenchWizardElement[]) wizards
-				.getTypedChildren(WorkbenchWizardElement.class));
-    }
-    
-    /**
-     * Takes an array of <code>WorkbenchWizardElement</code> and removes all
-     * entries which fail the Expressions check.
-     * 
-     * @param workbenchWizardElements Array of <code>WorkbenchWizardElement</code>.
-     * @return The array minus the elements which faled the Expressions check.
-     */
-    private WorkbenchWizardElement[] getWorkbenchWizardElementsExpression(
-        WorkbenchWizardElement[] workbenchWizardElements) {
-        int size = workbenchWizardElements.length;
-        List result = new ArrayList(size);
-        for (int i=0; i<size; i++) {
-            WorkbenchWizardElement element = workbenchWizardElements[i];
-            if (!WorkbenchActivityHelper.restrictUseOf(element))
-                result.add(element);
-        }
-        return (WorkbenchWizardElement[])result.toArray(new WorkbenchWizardElement[result.size()]);
-    }
-
-
-    /**
-     * Returns true if this element has no children and no wizards.
-     * 
-     * @return whether it is empty
-     */
-    public boolean isEmpty() {
-        return size() == 0 && wizards.size() == 0;
-    }
-
-    /**
-     * For debugging purposes.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer("WizardCollection, "); //$NON-NLS-1$
-        buf.append(children.size());
-        buf.append(" children, "); //$NON-NLS-1$
-        buf.append(wizards.size());
-        buf.append(" wizards"); //$NON-NLS-1$
-        return buf.toString();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
-     */
-    public ImageDescriptor getImageDescriptor(Object object) {
-        return WorkbenchImages.getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getId();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return configElement != null ? configElement.getNamespace() : pluginId;
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.IWizardCategory#getParent()
-     */
-    public IWizardCategory getParent() {
-		return parent;
-	}
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.IWizardCategory#getCategories()
-     */
-    public IWizardCategory[] getCategories() {		
-		return (IWizardCategory []) getTypedChildren(IWizardCategory.class);
-	}
-    
-    /**
-     * Return the collection elements.
-     * 
-     * @return the collection elements
-     * @since 3.1
-     */
-    public WizardCollectionElement [] getCollectionElements() {
-    	return (WizardCollectionElement[]) getTypedChildren(WizardCollectionElement.class);
-    }
-    
-    /**
-     * Return the raw adapted list of wizards.
-     * 
-     * @return the list of wizards
-     * @since 3.1
-     */
-    public AdaptableList getWizardAdaptableList() {
-    	return wizards;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.IWizardCategory#getLabel()
-     */
-    public String getLabel() {
-		return getLabel(this);
-	}
-    
-    /**
-     * Return the configuration element.
-     * 
-     * @return the configuration element
-     * @since 3.1
-     */
-    public IConfigurationElement getConfigurationElement() {
-    	return configElement;
-    }
-
-    /**
-     * Return the parent collection element.
-     * 
-     * @return the parent
-     * @since 3.1
-     */
-	public WizardCollectionElement getParentCollection() {
-		return parent;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.IWizardCategory#findWizard(java.lang.String)
-	 */
-	public IWizardDescriptor findWizard(String id) {
-		return findWizard(id, true);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.IWizardCategory#findCategory(org.eclipse.core.runtime.IPath)
-	 */
-	public IWizardCategory findCategory(IPath path) {
-		return findChildCollection(path);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
deleted file mode 100644
index d75579c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardContentProvider.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.model.AdaptableList;
-
-/**
- * Provider used by the NewWizardNewPage.
- * 
- * @since 3.0
- */
-public class WizardContentProvider implements ITreeContentProvider {
-
-    private AdaptableList input;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-        input = null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-     */
-    public Object[] getChildren(Object parentElement) {
-        if (parentElement instanceof WizardCollectionElement) {
-            ArrayList list = new ArrayList();
-            WizardCollectionElement element = (WizardCollectionElement) parentElement;
-
-            Object[] childCollections = element.getChildren();
-            for (int i = 0; i < childCollections.length; i++) {
-                handleChild(childCollections[i], list);
-            }
-
-            Object[] childWizards = element.getWizards();
-            for (int i = 0; i < childWizards.length; i++) {
-                handleChild(childWizards[i], list);
-            }
-
-            // flatten lists with only one category
-            if (list.size() == 1
-                    && list.get(0) instanceof WizardCollectionElement) {
-                return getChildren(list.get(0));
-            }
-
-            return list.toArray();
-        } else if (parentElement instanceof AdaptableList) {
-            AdaptableList aList = (AdaptableList) parentElement;
-            Object[] children = aList.getChildren();
-            ArrayList list = new ArrayList(children.length);
-            for (int i = 0; i < children.length; i++) {
-                handleChild(children[i], list);
-            }
-            // if there is only one category, return it's children directly (flatten list)
-            if (list.size() == 1
-            		&& list.get(0) instanceof WizardCollectionElement) {
-                return getChildren(list.get(0));
-            }
-                
-            return list.toArray();
-        } else {
-			return new Object[0];
-		}
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object inputElement) {
-        return getChildren(inputElement);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-     */
-    public Object getParent(Object element) {
-        if (element instanceof WizardCollectionElement) {
-            Object[] children = input.getChildren();
-            for (int i = 0; i < children.length; i++) {
-                if (children[i].equals(element)) {
-					return input;
-				}
-            }
-            return ((WizardCollectionElement) element).getParent(element);
-        } 
-        return null;
-    }
-
-    /**
-     * Adds the item to the list, unless it's a collection element without any children.
-     * 
-     * @param element the element to test and add
-     * @param list the <code>Collection</code> to add to.
-     * @since 3.0
-     */
-    private void handleChild(Object element, ArrayList list) {
-        if (element instanceof WizardCollectionElement) {
-            if (hasChildren(element)) {
-				list.add(element);
-			}
-        } else {
-            list.add(element);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-     */
-    public boolean hasChildren(Object element) {
-        if (element instanceof WizardCollectionElement) {
-            if (getChildren(element).length > 0) {
-				return true;
-			}
-        }
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-     *      java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        input = (AdaptableList) newInput;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
deleted file mode 100644
index 194609c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardPatternFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-/**
- * A class that handles filtering wizard node items based on a supplied
- * matching string.
- *  
- * @since 3.2
- *
- */
-public class WizardPatternFilter extends PatternFilter {
-
-	/**
-	 * Create a new instance of a WizardPatternFilter 
-	 * @param isMatchItem
-	 */
-	public WizardPatternFilter() {
-		super();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.internal.dialogs.PatternFilter#isElementSelectable(java.lang.Object)
-	 */
-	public boolean isElementSelectable(Object element) {
-		return element instanceof WorkbenchWizardElement;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.internal.dialogs.PatternFilter#isElementMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object)
-	 */
-	protected boolean isLeafMatch(Viewer viewer, Object element) {
-		if (element instanceof WizardCollectionElement) {
-			return false;
-		}
-		
-		if (element instanceof WorkbenchWizardElement) {
-			WorkbenchWizardElement desc = (WorkbenchWizardElement) element;
-			String text = desc.getLabel();
-			if (wordMatches(text)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardTagFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardTagFilter.java
deleted file mode 100644
index d3b789c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WizardTagFilter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * A viewer filter that will exclude all IWizardDescriptors that do not have at
- * least one tag in a provided set.
- * 
- * @since 3.1
- */
-public class WizardTagFilter extends ViewerFilter {
-
-	private String [] myTags;
-	
-	/**
-	 * Create a new instance of this filter
-	 * @param tags the wizard tags to allow
-	 */
-	public WizardTagFilter(String [] tags) {
-		myTags = tags;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-	 */
-	public boolean select(Viewer viewer, Object parentElement, Object element) {
-		if (element instanceof IWizardDescriptor) {
-			IWizardDescriptor desc = (IWizardDescriptor)element;
-			String [] tags = desc.getTags();
-			for (int i = 0; i < tags.length; i++) {
-				for (int j = 0; j < myTags.length; j++) {
-					if (tags[i].equals(myTags[j])) {
-						return true;
-					}
-				}
-			}
-			return false;
-		}
-        Object[] children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer)
-                .getContentProvider()).getChildren(element);
-        if (children.length > 0) {
-			return filter(viewer, element, children).length > 0;
-		}
-
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java
deleted file mode 100644
index a35dd1d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchDialogBlockedHandler.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.IDialogBlockedHandler;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.progress.BlockedJobsDialog;
-
-/**
- * The WorkbenchWizardBlockedHandler is the class that implements the blocked
- * handler for the workbench.
- */
-public class WorkbenchDialogBlockedHandler implements IDialogBlockedHandler {
-    IProgressMonitor outerMonitor;
-
-    int nestingDepth = 0;
-
-    /**
-     * Create a new instance of the receiver.
-     */
-    public WorkbenchDialogBlockedHandler() {
-        //No default behavior
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogBlockedHandler#clearBlocked()
-     */
-    public void clearBlocked() {
-        if (nestingDepth == 0) {
-			return;
-		}
-
-        nestingDepth--;
-
-        if (nestingDepth <= 0) {
-            BlockedJobsDialog.clear(outerMonitor);
-            outerMonitor = null;
-            nestingDepth = 0;
-        }
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogBlockedHandler#showBlocked(org.eclipse.swt.widgets.Shell,
-     *      org.eclipse.core.runtime.IProgressMonitor,
-     *      org.eclipse.core.runtime.IStatus, java.lang.String)
-     */
-    public void showBlocked(Shell parentShell,
-            IProgressMonitor blockingMonitor, IStatus blockingStatus,
-            String blockedName) {
-
-        nestingDepth++;
-        if (outerMonitor == null) {
-            outerMonitor = blockingMonitor;
-            //Try to get a name as best as possible
-            if (blockedName == null && parentShell != null) {
-				blockedName = parentShell.getText();
-			}
-            BlockedJobsDialog.createBlockedDialog(parentShell, blockingMonitor,
-                    blockingStatus, blockedName);
-        }
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogBlockedHandler#showBlocked(org.eclipse.core.runtime.IProgressMonitor,
-     *      org.eclipse.core.runtime.IStatus, java.lang.String)
-     */
-    public void showBlocked(IProgressMonitor blocking, IStatus blockingStatus,
-            String blockedName) {
-        showBlocked(null, blocking, blockingStatus, blockedName);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java
deleted file mode 100644
index b4e970a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchEditorsDialog.java
+++ /dev/null
@@ -1,790 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.SelectionDialog;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPartReference;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.layout.CellData;
-import org.eclipse.ui.internal.layout.CellLayout;
-import org.eclipse.ui.internal.layout.Row;
-import org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * Implements a dialog showing all opened editors in the workbench
- * and the recent closed editors
- */
-public class WorkbenchEditorsDialog extends SelectionDialog {
-
-    private IWorkbenchWindow window;
-
-    private Table editorsTable;
-
-    private Button saveSelected;
-
-    private Button closeSelected;
-
-    private Button selectClean;
-
-    private Button invertSelection;
-
-    private Button allSelection;
-
-    private boolean showAllPersp = false;
-
-    private int sortColumn;
-
-    private List elements = new ArrayList();
-
-    private HashMap imageCache = new HashMap(11);
-
-    private HashMap disabledImageCache = new HashMap(11);
-
-    private boolean reverse = false;
-
-    private Collator collator = Collator.getInstance();
-
-    private Rectangle bounds;
-
-    private int columnsWidth[];
-
-    private static final String SORT = "sort"; //$NON-NLS-1$
-
-    private static final String ALLPERSP = "allPersp"; //$NON-NLS-1$
-
-    private static final String BOUNDS = "bounds"; //$NON-NLS-1$
-
-    private static final String COLUMNS = "columns"; //$NON-NLS-1$
-
-    private SelectionListener headerListener = new SelectionAdapter() {
-        public void widgetSelected(SelectionEvent e) {
-            int index = editorsTable.indexOf((TableColumn) e.widget);
-            if (index == sortColumn) {
-				reverse = !reverse;
-			} else {
-				sortColumn = index;
-			}
-            updateItems();
-        }
-    };
-
-    /**
-     * Constructor for WorkbenchEditorsDialog.
-     * 
-     * @param window the window
-     */
-    public WorkbenchEditorsDialog(IWorkbenchWindow window) {
-        super(window.getShell());
-        this.window = window;
-        setTitle(WorkbenchMessages.WorkbenchEditorsDialog_title); 
-
-        IDialogSettings s = getDialogSettings();
-        if (s.get(ALLPERSP) == null) {
-            sortColumn = 0;
-        } else {
-            showAllPersp = s.getBoolean(ALLPERSP);
-            sortColumn = s.getInt(SORT);
-            String[] array = s.getArray(BOUNDS);
-            if (array != null) {
-                bounds = new Rectangle(0, 0, 0, 0);
-                bounds.x = new Integer(array[0]).intValue();
-                bounds.y = new Integer(array[1]).intValue();
-                bounds.width = new Integer(array[2]).intValue();
-                bounds.height = new Integer(array[3]).intValue();
-            }
-            array = s.getArray(COLUMNS);
-            if (array != null) {
-                columnsWidth = new int[array.length];
-                for (int i = 0; i < columnsWidth.length; i++) {
-					columnsWidth[i] = new Integer(array[i]).intValue();
-				}
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Window.
-     */
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell,
-				IWorkbenchHelpContextIds.WORKBENCH_EDITORS_DIALOG);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        // Typically we would use the parent's createButtonsForButtonBar.
-        // However, we only want a Cancel button and not an OK button.  The
-        // OK button will be used later (in createDialogArea) to activate
-        // the selected editor.
-        createButton(parent, IDialogConstants.CANCEL_ID,
-                IDialogConstants.CANCEL_LABEL, false);
-        Button button = getButton(IDialogConstants.CANCEL_ID);
-        if (button != null) {
-			button.setText(WorkbenchMessages.WorkbenchEditorsDialog_close);
-		}
-
-    }
-
-    /**
-     * Initialize the dialog bounds with the bounds saved
-     * from the settings.
-     */
-    protected void initializeBounds() {
-        if (bounds != null) {
-            getShell().setBounds(bounds);
-        } else {
-            super.initializeBounds();
-        }
-    }
-
-    /**
-     * Creates the contents of this dialog, initializes the
-     * listener and the update thread.
-     */
-    protected Control createDialogArea(Composite parent) {
-
-        initializeDialogUnits(parent);
-
-        Font font = parent.getFont();
-
-        Composite dialogArea = new Composite(parent, SWT.NONE);
-        CellLayout dialogAreaLayout = new CellLayout(1)
-                .setMargins(
-                        convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN),
-                        convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN))
-                .setSpacing(
-                        convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING),
-                        convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING))
-                .setRow(1, Row.growing());
-        dialogArea.setLayout(dialogAreaLayout);
-        dialogArea.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-        //Label over the table
-        Label l = new Label(dialogArea, SWT.NONE);
-        l.setText(WorkbenchMessages.WorkbenchEditorsDialog_label); 
-        l.setFont(font);
-        l.setLayoutData(new CellData().align(SWT.FILL, SWT.CENTER));
-        //Table showing the editors name, full path and perspective
-        editorsTable = new Table(dialogArea, SWT.MULTI | SWT.BORDER
-                | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
-        editorsTable.setLinesVisible(true);
-        editorsTable.setHeaderVisible(true);
-        editorsTable.setFont(font);
-
-        final int height = 16 * editorsTable.getItemHeight();
-        final int width = (int) (2.5 * height);
-
-        CellData tableData = new CellData().align(SWT.FILL, SWT.FILL).setHint(
-                CellData.OVERRIDE, width, height);
-
-        editorsTable.setLayoutData(tableData);
-        editorsTable.setLayout(new Layout() {
-            protected Point computeSize(Composite composite, int wHint,
-                    int hHint, boolean flushCache) {
-                return new Point(width, height);
-            }
-
-            protected void layout(Composite composite, boolean flushCache) {
-                TableColumn c[] = editorsTable.getColumns();
-                if (columnsWidth == null) {
-                    int w = editorsTable.getClientArea().width;
-                    c[0].setWidth(w * 1 / 3);
-                    c[1].setWidth(w - c[0].getWidth());
-                } else {
-                    c[0].setWidth(columnsWidth[0]);
-                    c[1].setWidth(columnsWidth[1]);
-                }
-                editorsTable.setLayout(null);
-            }
-        });
-        //Name column
-        TableColumn tc = new TableColumn(editorsTable, SWT.NONE);
-        tc.setResizable(true);
-        tc.setText(WorkbenchMessages.WorkbenchEditorsDialog_name);
-        tc.addSelectionListener(headerListener);
-        //Full path column
-        tc = new TableColumn(editorsTable, SWT.NONE);
-        tc.setResizable(true);
-        tc.setText(WorkbenchMessages.WorkbenchEditorsDialog_path); 
-        tc.addSelectionListener(headerListener);
-
-        // A composite for selection option buttons
-        Composite selectionButtons = new Composite(dialogArea, SWT.NULL);
-        Label compLabel = new Label(selectionButtons, SWT.NULL);
-        compLabel.setFont(font);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 4;
-        selectionButtons.setLayout(layout);
-
-        //Select clean editors button
-        selectClean = new Button(selectionButtons, SWT.PUSH);
-        selectClean.setText(WorkbenchMessages.WorkbenchEditorsDialog_selectClean); 
-        selectClean.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                editorsTable.setSelection(selectClean(editorsTable.getItems()));
-                updateButtons();
-            }
-        });
-        selectClean.setFont(font);
-        setButtonLayoutData(selectClean);
-
-        //Invert selection button
-        invertSelection = new Button(selectionButtons, SWT.PUSH);
-        invertSelection.setText(WorkbenchMessages.WorkbenchEditorsDialog_invertSelection); 
-        invertSelection.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                editorsTable.setSelection(invertedSelection(editorsTable
-                        .getItems(), editorsTable.getSelection()));
-                updateButtons();
-            }
-        });
-        invertSelection.setFont(font);
-        setButtonLayoutData(invertSelection);
-
-        //Select all button
-        allSelection = new Button(selectionButtons, SWT.PUSH);
-        allSelection.setText(WorkbenchMessages.WorkbenchEditorsDialog_allSelection); 
-        allSelection.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                editorsTable.setSelection(editorsTable.getItems());
-                updateButtons();
-            }
-        });
-        allSelection.setFont(font);
-        setButtonLayoutData(allSelection);
-
-        // A composite for selected editor action buttons
-        Composite actionButtons = new Composite(dialogArea, SWT.NULL);
-        Label actLabel = new Label(actionButtons, SWT.NULL);
-        actLabel.setFont(font);
-        GridLayout actLayout = new GridLayout();
-        actLayout.numColumns = 4;
-        actionButtons.setLayout(actLayout);
-
-        // Activate selected editor button
-        createButton(actionButtons, IDialogConstants.OK_ID, WorkbenchMessages.WorkbenchEditorsDialog_activate, 
-                true);
-
-        //Close selected editors button
-        closeSelected = new Button(actionButtons, SWT.PUSH);
-        closeSelected.setText(WorkbenchMessages.WorkbenchEditorsDialog_closeSelected);
-        closeSelected.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                closeItems(editorsTable.getSelection());
-            }
-        });
-        closeSelected.setFont(font);
-        setButtonLayoutData(closeSelected);
-
-        //Save selected editors button
-        saveSelected = new Button(actionButtons, SWT.PUSH);
-        saveSelected.setText(WorkbenchMessages.WorkbenchEditorsDialog_saveSelected); 
-        saveSelected.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                saveItems(editorsTable.getSelection());
-            }
-        });
-        saveSelected.setFont(font);
-        setButtonLayoutData(saveSelected);
-
-        //Show only active perspective button
-        final Button showAllPerspButton = new Button(dialogArea, SWT.CHECK);
-        showAllPerspButton.setText(WorkbenchMessages.WorkbenchEditorsDialog_showAllPersp);
-        showAllPerspButton.setSelection(showAllPersp);
-        showAllPerspButton.setFont(font);
-        setButtonLayoutData(showAllPerspButton);
-        showAllPerspButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                showAllPersp = showAllPerspButton.getSelection();
-                updateItems();
-            }
-        });
-        //Create the items and update buttons state
-        updateItems();
-        updateButtons();
-
-        editorsTable.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                updateButtons();
-            }
-
-            public void widgetDefaultSelected(SelectionEvent e) {
-                okPressed();
-            }
-        });
-        editorsTable.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                for (Iterator images = imageCache.values().iterator(); images
-                        .hasNext();) {
-                    Image i = (Image) images.next();
-                    i.dispose();
-                }
-                for (Iterator images = disabledImageCache.values().iterator(); images
-                        .hasNext();) {
-                    Image i = (Image) images.next();
-                    i.dispose();
-                }
-            }
-        });
-        editorsTable.setFocus();
-        applyDialogFont(dialogArea);
-        return dialogArea;
-    }
-
-    /**
-     * Updates the button state (enabled/disabled)
-     */
-    private void updateButtons() {
-        TableItem selectedItems[] = editorsTable.getSelection();
-        boolean hasDirty = false;
-        for (int i = 0; i < selectedItems.length; i++) {
-            Adapter editor = (Adapter) selectedItems[i].getData();
-            if (editor.isDirty()) {
-                hasDirty = true;
-                break;
-            }
-        }
-        saveSelected.setEnabled(hasDirty);
-
-        TableItem allItems[] = editorsTable.getItems();
-        boolean hasClean = false;
-        for (int i = 0; i < allItems.length; i++) {
-            Adapter editor = (Adapter) allItems[i].getData();
-            if (!editor.isDirty()) {
-                hasClean = true;
-                break;
-            }
-        }
-        selectClean.setEnabled(hasClean);
-        invertSelection.setEnabled(allItems.length > 0);
-        closeSelected.setEnabled(selectedItems.length > 0);
-
-        Button ok = getOkButton();
-        if (ok != null) {
-			ok.setEnabled(selectedItems.length == 1);
-		}
-    }
-
-    /**
-     * Closes the specified editors
-     */
-    private void closeItems(TableItem items[]) {
-        if (items.length == 0) {
-			return;
-		}
-        for (int i = 0; i < items.length; i++) {
-            Adapter e = (Adapter) items[i].getData();
-            e.close();
-        }
-        updateItems();
-    }
-
-    /**
-     * Saves the specified editors
-     */
-    private void saveItems(TableItem items[]) {
-        if (items.length == 0) {
-			return;
-		}
-        ProgressMonitorDialog pmd = new ProgressMonitorJobsDialog(getShell());
-        pmd.open();
-        for (int i = 0; i < items.length; i++) {
-            Adapter editor = (Adapter) items[i].getData();
-            editor.save(pmd.getProgressMonitor());
-            updateItem(items[i], editor);
-        }
-        pmd.close();
-        updateItems();
-    }
-
-    /**
-     * Returns all clean editors from items[];
-     */
-    private TableItem[] selectClean(TableItem items[]) {
-        if (items.length == 0) {
-			return new TableItem[0];
-		}
-        ArrayList cleanItems = new ArrayList(items.length);
-        for (int i = 0; i < items.length; i++) {
-            Adapter editor = (Adapter) items[i].getData();
-            if (!editor.isDirty()) {
-				cleanItems.add(items[i]);
-			}
-        }
-        TableItem result[] = new TableItem[cleanItems.size()];
-        cleanItems.toArray(result);
-        return result;
-    }
-
-    /**
-     * Returns all clean editors from items[];
-     */
-    private TableItem[] invertedSelection(TableItem allItems[],
-            TableItem selectedItems[]) {
-        if (allItems.length == 0) {
-			return allItems;
-		}
-        ArrayList invertedSelection = new ArrayList(allItems.length
-                - selectedItems.length);
-        outerLoop: for (int i = 0; i < allItems.length; i++) {
-            for (int j = 0; j < selectedItems.length; j++) {
-                if (allItems[i] == selectedItems[j]) {
-					continue outerLoop;
-				}
-            }
-            invertedSelection.add(allItems[i]);
-        }
-        TableItem result[] = new TableItem[invertedSelection.size()];
-        invertedSelection.toArray(result);
-        return result;
-    }
-
-    /**
-     * Updates the specified item
-     */
-    private void updateItem(TableItem item, Adapter editor) {
-        item.setData(editor);
-        item.setText(editor.getText());
-        Image images[] = editor.getImage();
-        for (int i = 0; i < images.length; i++) {
-            if (images[i] != null) {
-				item.setImage(i, images[i]);
-			}
-        }
-    }
-
-    /**
-     * Adds all editors to elements
-     */
-    private void updateEditors(IWorkbenchPage[] pages) {
-        for (int j = 0; j < pages.length; j++) {
-            IEditorReference editors[] = pages[j].getEditorReferences();
-            for (int k = 0; k < editors.length; k++) {
-                elements.add(new Adapter(editors[k]));
-            }
-        }
-    }
-
-    /**
-     * Updates all items in the table
-     */
-    private void updateItems() {
-        editorsTable.removeAll();
-        elements = new ArrayList();
-        if (showAllPersp) {
-            IWorkbenchWindow windows[] = window.getWorkbench()
-                    .getWorkbenchWindows();
-            for (int i = 0; i < windows.length; i++) {
-				updateEditors(windows[i].getPages());
-			}
-        } else {
-            IWorkbenchPage page = window.getActivePage();
-            if (page != null) {
-                updateEditors(new IWorkbenchPage[] { page });
-            }
-        }
-        sort();
-        Object selection = null;
-        if (window.getActivePage() != null) {
-			selection = window.getActivePage().getActiveEditor();
-		}
-        for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
-            Adapter e = (Adapter) iterator.next();
-            TableItem item = new TableItem(editorsTable, SWT.NULL);
-            updateItem(item, e);
-            if ((selection != null) && (selection == e.editorRef)) {
-				editorsTable.setSelection(new TableItem[] { item });
-			}
-        }
-        // update the buttons, because the selection may have changed
-        updateButtons();
-    }
-
-    /**
-     * Sorts all the editors according to the table header
-     */
-    private void sort() {
-        //Backward compatible. Table used to have 3 columns.
-        if (sortColumn > (editorsTable.getColumnCount() - 1)) {
-			sortColumn = 0;
-		}
-        Adapter a[] = new Adapter[elements.size()];
-        elements.toArray(a);
-        Arrays.sort(a);
-        elements = Arrays.asList(a);
-    }
-
-    /**
-     * The user has selected a resource and the dialog is closing.
-     */
-    protected void okPressed() {
-        TableItem items[] = editorsTable.getSelection();
-        if (items.length != 1) {
-            super.okPressed();
-            return;
-        }
-
-        saveDialogSettings();
-
-        Adapter selection = (Adapter) items[0].getData();
-        //It would be better to activate before closing the
-        //dialog but it does not work when the editor is in other
-        //window. Must investigate.
-        super.okPressed();
-        selection.activate();
-    }
-
-    /**
-     * Saves the dialog settings.
-     */
-    private void saveDialogSettings() {
-        IDialogSettings s = getDialogSettings();
-        s.put(ALLPERSP, showAllPersp);
-        s.put(SORT, sortColumn);
-        bounds = getShell().getBounds();
-        String array[] = new String[4];
-        array[0] = String.valueOf(bounds.x);
-        array[1] = String.valueOf(bounds.y);
-        array[2] = String.valueOf(bounds.width);
-        array[3] = String.valueOf(bounds.height);
-        s.put(BOUNDS, array);
-        array = new String[editorsTable.getColumnCount()];
-        for (int i = 0; i < array.length; i++) {
-			array[i] = String.valueOf(editorsTable.getColumn(i).getWidth());
-		}
-        s.put(COLUMNS, array);
-    }
-
-    /**
-     * Return a dialog setting section for this dialog
-     */
-    private IDialogSettings getDialogSettings() {
-        IDialogSettings settings = WorkbenchPlugin.getDefault()
-                .getDialogSettings();
-        IDialogSettings thisSettings = settings
-                .getSection(getClass().getName());
-        if (thisSettings == null) {
-			thisSettings = settings.addNewSection(getClass().getName());
-		}
-        return thisSettings;
-    }
-
-    /**
-     * A helper inner class to adapt EditorHistoryItem and IEditorPart
-     * in the same type.
-     */
-    private class Adapter implements Comparable {
-        IEditorReference editorRef;
-
-        IEditorInput input;
-
-        IEditorDescriptor desc;
-
-        String text[];
-
-        Image images[];
-
-        Adapter(IEditorReference ref) {
-            editorRef = ref;
-        }
-
-        Adapter(IEditorInput input, IEditorDescriptor desc) {
-            this.input = input;
-            this.desc = desc;
-        }
-
-        boolean isDirty() {
-            if (editorRef == null) {
-				return false;
-			}
-            return editorRef.isDirty();
-        }
-
-        boolean isOpened() {
-            return editorRef != null;
-        }
-
-        void close() {
-            if (editorRef == null) {
-				return;
-			}
-            WorkbenchPage p = ((WorkbenchPartReference) editorRef).getPane()
-                    .getPage();
-            p.closeEditor(editorRef, true);
-        }
-
-        void save(IProgressMonitor monitor) {
-            if (editorRef == null) {
-				return;
-			}
-            IEditorPart editor = (IEditorPart) editorRef.getPart(true);
-            if (editor != null) {
-				editor.doSave(monitor);
-			}
-        }
-
-        String[] getText() {
-            if (text != null) {
-				return text;
-			}
-            text = new String[2];
-            if (editorRef != null) {
-                if (editorRef.isDirty()) {
-					text[0] = "*" + editorRef.getTitle(); //$NON-NLS-1$
-				} else {
-					text[0] = editorRef.getTitle();
-				}
-                text[1] = editorRef.getTitleToolTip();
-            } else {
-                text[0] = input.getName();
-                text[1] = input.getToolTipText();
-            }
-            return text;
-        }
-
-        Image[] getImage() {
-            if (images != null) {
-				return images;
-			}
-            images = new Image[2];
-            if (editorRef != null) {
-                images[0] = editorRef.getTitleImage();
-                WorkbenchPage p = ((WorkbenchPartReference) editorRef)
-                        .getPane().getPage();
-                IPerspectiveDescriptor persp = p.getPerspective();
-                ImageDescriptor image = persp.getImageDescriptor();
-                if (image == null) {
-					image = WorkbenchImages
-                            .getImageDescriptor(ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE);
-				}
-            } else {
-                ImageDescriptor image = null;
-                if (desc != null) {
-					image = desc.getImageDescriptor();
-				}
-                if (image == null) {
-                    IEditorRegistry registry = WorkbenchPlugin.getDefault()
-                            .getEditorRegistry();
-                    image = registry.getImageDescriptor(input.getName());
-					//TODO: how can this honour content types?  Guessing at the content type perhaps?
-					
-                    if (image == null) {
-                        // @issue what should be the default image?
-                        // image = registry.getDefaultEditor().getImageDescriptor();
-                    }
-                }
-                if (image != null) {
-                    images[0] = (Image) disabledImageCache.get(image);
-                    if (images[0] == null) {
-                        Image enabled = image.createImage();
-                        Image disabled = new Image(editorsTable.getDisplay(),
-                                enabled, SWT.IMAGE_DISABLE);
-                        enabled.dispose();
-                        disabledImageCache.put(image, disabled);
-                        images[0] = disabled;
-                    }
-                }
-            }
-            return images;
-        }
-
-        private void activate() {
-            if (editorRef != null) {
-                IEditorPart editor = editorRef.getEditor(true);
-                WorkbenchPage p = (WorkbenchPage) editor.getEditorSite()
-                        .getPage();
-                Shell s = p.getWorkbenchWindow().getShell();
-                if (s.getMinimized()) {
-					s.setMinimized(false);
-				}
-                s.moveAbove(null);
-                p.getWorkbenchWindow().setActivePage(p);
-                p.activate(editor);
-            } else {
-                IWorkbenchPage p = window.getActivePage();
-                if (p != null) {
-                    try {
-                        p.openEditor(input, desc.getId(), true);
-                    } catch (PartInitException e) {
-                    }
-                }
-            }
-        }
-
-        public int compareTo(Object another) {
-            Adapter adapter = (Adapter) another;
-            int result = collator.compare(getText()[sortColumn], adapter
-                    .getText()[sortColumn]);
-            if (result == 0) {
-                int column = sortColumn == 0 ? 1 : 0;
-                result = collator.compare(getText()[column],
-                        adapter.getText()[column]);
-            }
-            if (reverse) {
-				return result * -1;
-			}
-            return result;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java
deleted file mode 100644
index 2ece6d9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceDialog.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * Prefence dialog for the workbench including the ability to load/save
- * preferences.
- */
-public class WorkbenchPreferenceDialog extends FilteredPreferenceDialog {
-	/**
-	 * There can only ever be one instance of the workbench's preference dialog.
-	 * This keeps a handle on this instance, so that attempts to create a second
-	 * dialog should just fail (or return the original instance).
-	 * 
-	 * @since 3.1
-	 */
-	private static WorkbenchPreferenceDialog instance = null;
-	
-	/**
-	 * The bounds of this dialog will be persisted in the dialog settings.
-	 * This is defined at the most concrete level of the hierarchy so that
-	 * different concrete implementations don't necessarily store their bounds 
-	 * in the same settings.
-	 * 
-	 * @since 3.2
-	 */
-	private static final String DIALOG_SETTINGS_SECTION = "WorkbenchPreferenceDialogSettings"; //$NON-NLS-1$
-
-	
-	/**
-	 * Creates a workbench preference dialog to a particular preference page. It
-	 * is the responsibility of the caller to then call <code>open()</code>.
-	 * The call to <code>open()</code> will not return until the dialog
-	 * closes, so this is the last chance to manipulate the dialog.
-	 * 
-	 * @param shell
-	 * 			The Shell to parent the dialog off of if it is not
-	 * 			already created. May be <code>null</code>
-	 * 			in which case the active workbench window will be used
-	 * 			if available.
-	 * @param preferencePageId
-	 *            The identifier of the preference page to open; may be
-	 *            <code>null</code>. If it is <code>null</code>, then the
-	 *            preference page is not selected or modified in any way.
-	 * @return The selected preference page.
-	 * @since 3.1
-	 */
-	public static final WorkbenchPreferenceDialog createDialogOn(Shell shell, final String preferencePageId) {
-		final WorkbenchPreferenceDialog dialog;
-
-		if (instance == null) {
-			/*
-			 * There is no existing preference dialog, so open a new one with
-			 * the given selected page.
-			 */
-
-			Shell parentShell = shell;
-			if (parentShell == null) {
-				// Determine a decent parent shell.
-				final IWorkbench workbench = PlatformUI.getWorkbench();
-				final IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-				if (workbenchWindow != null) {
-					parentShell = workbenchWindow.getShell();
-				} else {
-					parentShell = null;
-				}
-			}
-
-			// Create the dialog
-			final PreferenceManager preferenceManager = PlatformUI.getWorkbench()
-					.getPreferenceManager();
-			dialog = new WorkbenchPreferenceDialog(parentShell, preferenceManager);
-			if (preferencePageId != null) {
-				dialog.setSelectedNode(preferencePageId);
-			}
-			dialog.create();
-			PlatformUI.getWorkbench().getHelpSystem().setHelp(
-					dialog.getShell(),
-					IWorkbenchHelpContextIds.PREFERENCE_DIALOG);
-
-		} else {
-			/*
-			 * There is an existing preference dialog, so let's just select the
-			 * given preference page.
-			 */
-			dialog = instance;
-			if (preferencePageId != null) {
-				dialog.setCurrentPageId(preferencePageId);
-			}
-
-		}
-
-		// Get the selected node, and return it.
-		return dialog;
-	}
-
-	/**
-	 * Creates a new preference dialog under the control of the given preference
-	 * manager.
-	 * 
-	 * @param parentShell
-	 *            the parent shell
-	 * @param manager
-	 *            the preference manager
-	 */
-	public WorkbenchPreferenceDialog(Shell parentShell, PreferenceManager manager) {
-		super(parentShell, manager);
-		Assert.isTrue((instance == null),
-				"There cannot be two preference dialogs at once in the workbench."); //$NON-NLS-1$
-		instance = this;
-		
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.window.Window#close()
-	 */
-	public boolean close() {
-		instance = null;
-		return super.close();
-	}
-
-
-	/**
-	 * Differs from super implementation in that if the node is found but should
-	 * be filtered based on a call to
-	 * <code>WorkbenchActivityHelper.filterItem()</code> then
-	 * <code>null</code> is returned.
-	 * 
-	 * @see org.eclipse.jface.preference.PreferenceDialog#findNodeMatching(java.lang.String)
-	 */
-	protected IPreferenceNode findNodeMatching(String nodeId) {
-		IPreferenceNode node = super.findNodeMatching(nodeId);
-		if (WorkbenchActivityHelper.filterItem(node)) {
-			return null;
-		}
-		return node;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-	 */
-	protected void okPressed() {
-		super.okPressed();
-	}
-	
-	/* (non-Javadoc)
-     * @see org.eclipse.jface.window.Dialog#getDialogBoundsSettings()
-     * 
-     * @since 3.2
-     */
-	protected IDialogSettings getDialogBoundsSettings() {
-        IDialogSettings settings = WorkbenchPlugin.getDefault().getDialogSettings();
-        IDialogSettings section = settings.getSection(DIALOG_SETTINGS_SECTION);
-        if (section == null) {
-            section = settings.addNewSection(DIALOG_SETTINGS_SECTION);
-        } 
-        return section;
-	}
-	
-	/* (non-Javadoc)
-     * @see org.eclipse.jface.window.Dialog#getDialogBoundsStrategy()
-     * 
-     * Overridden to persist only the location, not the size, since the current
-     * page dictates the most appropriate size for the dialog.
-     * @since 3.2
-     */
-	protected int getDialogBoundsStrategy() {
-		return DIALOG_PERSISTLOCATION;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java
deleted file mode 100644
index 89042f5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceManager.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.preferences.WorkbenchPreferenceExpressionNode;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PreferencePageRegistryReader;
-
-/**
- * The WorkbenchPreferenceManager is the manager that can handle categories and
- * preference nodes.
- */
-public class WorkbenchPreferenceManager extends PreferenceManager implements
-		IExtensionChangeHandler {
-
-	/**
-	 * Create a new instance of the receiver with the specified seperatorChar
-	 * 
-	 * @param separatorChar
-	 */
-	public WorkbenchPreferenceManager(char separatorChar) {
-		super(separatorChar, new WorkbenchPreferenceExpressionNode("")); //$NON-NLS-1$
-        
-		IExtensionTracker tracker = PlatformUI.getWorkbench().getExtensionTracker();
-		tracker.registerHandler(this, ExtensionTracker.createExtensionPointFilter(getExtensionPointFilter()));
-
-		// add a listener for keyword deltas. If any occur clear all page caches
-		Platform.getExtensionRegistry().addRegistryChangeListener(
-				new IRegistryChangeListener() {
-
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.core.runtime.IRegistryChangeListener#registryChanged(org.eclipse.core.runtime.IRegistryChangeEvent)
-					 */
-					public void registryChanged(IRegistryChangeEvent event) {
-						if (event.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-								IWorkbenchRegistryConstants.PL_KEYWORDS).length > 0) {
-							for (Iterator j = getElements(
-									PreferenceManager.POST_ORDER).iterator(); j
-									.hasNext();) {
-								((WorkbenchPreferenceNode) j.next())
-										.clearKeywords();
-							}
-						}
-					}
-				});
-	}
-
-	/**
-	 * Add the pages and the groups to the receiver.
-	 * 
-	 * @param pageContributions
-	 */
-	public void addPages(Collection pageContributions) {
-
-		// Add the contributions to the manager
-		Iterator iterator = pageContributions.iterator();
-		while (iterator.hasNext()) {
-			Object next = iterator.next();
-			if (next instanceof WorkbenchPreferenceNode) {
-				WorkbenchPreferenceNode wNode = (WorkbenchPreferenceNode) next;
-				addToRoot(wNode);
-				registerNode(wNode);
-			}
-		}
-
-	}
-
-	/**
-	 * Register a node with the extension tracker.
-	 * 
-	 * @param node
-	 *            register the given node and its subnodes with the extension
-	 *            tracker
-	 */
-	private void registerNode(WorkbenchPreferenceNode node) {
-		PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-				node.getConfigurationElement().getDeclaringExtension(), node,
-				IExtensionTracker.REF_WEAK);
-		IPreferenceNode[] subNodes = node.getSubNodes();
-		for (int i = 0; i < subNodes.length; i++) {
-			registerNode((WorkbenchPreferenceNode) subNodes[i]);
-		}
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		IConfigurationElement[] elements = extension.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			WorkbenchPreferenceNode node = PreferencePageRegistryReader
-					.createNode(elements[i]);
-			if (node == null) {
-				continue;
-			}
-			registerNode(node);
-			String category = node.getCategory();
-			if (category == null) {
-				addToRoot(node);
-			} else {
-				IPreferenceNode parent = null;
-				for (Iterator j = getElements(PreferenceManager.POST_ORDER)
-						.iterator(); j.hasNext();) {
-					IPreferenceNode element = (IPreferenceNode) j
-							.next();
-					if (category.equals(element.getId())) {
-						parent = element;
-						break;
-					}
-				}
-				if (parent == null) {
-					// Could not find the parent - log
-					WorkbenchPlugin
-							.log("Invalid preference page path: " + category); //$NON-NLS-1$
-					addToRoot(node);
-				} else {
-					parent.add(node);
-				}
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionAdditionHandler#getExtensionPointFilter()
-	 */
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_PREFERENCES);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof IPreferenceNode) {
-				IPreferenceNode wNode = (IPreferenceNode) objects[i];
-				wNode.disposeResources();
-				deepRemove(getRoot(), wNode);
-			}
-		}
-	}
-
-	/**
-	 * Removes the node from the manager, searching through all subnodes.
-	 * 
-	 * @param parent
-	 *            the node to search
-	 * @param nodeToRemove
-	 *            the node to remove
-	 * @return whether the node was removed
-	 */
-	private boolean deepRemove(IPreferenceNode parent,
-			IPreferenceNode nodeToRemove) {
-		if (parent == nodeToRemove) {
-			if (parent == getRoot()) {
-				removeAll(); // we're removing the root
-				return true;
-			}
-		}
-
-		if (parent.remove(nodeToRemove)) {
-			return true;
-		}
-
-		IPreferenceNode[] subNodes = parent.getSubNodes();
-		for (int i = 0; i < subNodes.length; i++) {
-			if (deepRemove(subNodes[i], nodeToRemove)) {
-				return true;
-			}
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java
deleted file mode 100644
index 74895bb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferenceNode.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.preferences.WorkbenchPreferenceExtensionNode;
-import org.eclipse.ui.internal.registry.CategorizedPageRegistryReader;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * A proxy for a preference page to avoid creation of preference page just to
- * show a node in the preference dialog tree.
- */
-public class WorkbenchPreferenceNode extends WorkbenchPreferenceExtensionNode {
-
-	/**
-	 * Create a new instance of the receiver.
-	 * @param nodeId
-	 * @param element
-	 */
-	public WorkbenchPreferenceNode(String nodeId, IConfigurationElement element) {
-		super(nodeId, element);
-	}
-
-	/**
-	 * Creates the preference page this node stands for.
-	 */
-	public void createPage() {
-		IWorkbenchPreferencePage page;
-		try {
-			page = (IWorkbenchPreferencePage) WorkbenchPlugin.createExtension(
-					getConfigurationElement(), IWorkbenchRegistryConstants.ATT_CLASS);
-		} catch (CoreException e) {
-			// Just inform the user about the error. The details are
-			// written to the log by now.
-			IStatus errStatus = StatusUtil.newStatus(e.getStatus(), WorkbenchMessages.PreferenceNode_errorMessage); 
-			StatusManager.getManager().handle(errStatus, StatusManager.SHOW | StatusManager.LOG);
-			page = new ErrorPreferencePage();
-		}
-
-		page.init(PlatformUI.getWorkbench());
-		if (getLabelImage() != null) {
-			page.setImageDescriptor(getImageDescriptor());
-		}
-		page.setTitle(getLabelText());
-		setPage(page);
-	}
-
-	/**
-	 * Return the category name for the node.
-	 * @return java.lang.String
-	 */
-	public String getCategory() {
-		return getConfigurationElement().getAttribute(
-				CategorizedPageRegistryReader.ATT_CATEGORY);
-	}	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
deleted file mode 100644
index 04106c2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchPreferencePage.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.util.OpenStrategy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.util.PrefUtil;
-
-/**
- * Generic workbench main preference page.
- */
-public class WorkbenchPreferencePage extends PreferencePage implements
-        IWorkbenchPreferencePage {
-    private Button stickyCycleButton;
-
-    private Button doubleClickButton;
-
-    private Button singleClickButton;
-
-    private Button selectOnHoverButton;
-
-    private Button openAfterDelayButton;
-
-    private Button showUserDialogButton;
-
-    private boolean openOnSingleClick;
-
-    private boolean selectOnHover;
-
-    private boolean openAfterDelay;
-
-	private Button showHeapStatusButton;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.PreferencePage
-     */
-    protected Control createContents(Composite parent) {
-
-        // @issue if the product subclasses this page, then it should provide
-        // the help content
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.WORKBENCH_PREFERENCE_PAGE);
-
-        Composite composite = createComposite(parent);
-
-        createButtons(composite);
-
-        createSpace(composite);
-        createOpenModeGroup(composite);
-
-        applyDialogFont(composite);
-
-        return composite;
-    }
-
-    /**
-     * Create the buttons at the top of the preference page.
-     * @param composite
-     */
-	protected void createButtons(Composite composite) {
-		createShowUserDialogPref(composite);
-        createStickyCyclePref(composite);
-        createHeapStatusPref(composite);
-	}
-
-    /**
-     * Create the widget for the user dialog preference.
-     * 
-     * @param composite
-     */
-    protected void createShowUserDialogPref(Composite composite) {
-        showUserDialogButton = new Button(composite, SWT.CHECK);
-        showUserDialogButton.setText(WorkbenchMessages.WorkbenchPreference_RunInBackgroundButton);
-        showUserDialogButton.setToolTipText(WorkbenchMessages.WorkbenchPreference_RunInBackgroundToolTip);
-        showUserDialogButton.setSelection(WorkbenchPlugin.getDefault()
-                .getPreferenceStore().getBoolean(
-                        IPreferenceConstants.RUN_IN_BACKGROUND));
-    }
-    
-    /**
-     * Create the widget for the heap status preference.
-     * 
-     * @param composite
-     */
-    protected void createHeapStatusPref(Composite composite) {
-        showHeapStatusButton = new Button(composite, SWT.CHECK);
-        showHeapStatusButton.setText(WorkbenchMessages.WorkbenchPreference_HeapStatusButton);
-        showHeapStatusButton.setToolTipText(WorkbenchMessages.WorkbenchPreference_HeapStatusButtonToolTip);
-        
-        showHeapStatusButton.setSelection(PrefUtil.getAPIPreferenceStore().getBoolean(
-                        IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR));
-    }
-
-    /**
-     * Creates the composite which will contain all the preference controls for
-     * this page.
-     * 
-     * @param parent
-     *            the parent composite
-     * @return the composite for this page
-     */
-    protected Composite createComposite(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        composite.setLayout(layout);
-        composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL
-                | GridData.HORIZONTAL_ALIGN_FILL));
-        return composite;
-    }
-
-    protected void createStickyCyclePref(Composite composite) {
-        stickyCycleButton = new Button(composite, SWT.CHECK);
-        stickyCycleButton.setText(WorkbenchMessages.WorkbenchPreference_stickyCycleButton); 
-        stickyCycleButton.setSelection(getPreferenceStore().getBoolean(
-                IPreferenceConstants.STICKY_CYCLE));
-    }
-
-    protected void createOpenModeGroup(Composite composite) {
-
-        Font font = composite.getFont();
-
-        Group buttonComposite = new Group(composite, SWT.LEFT);
-        GridLayout layout = new GridLayout();
-        buttonComposite.setLayout(layout);
-        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-                | GridData.GRAB_HORIZONTAL);
-        buttonComposite.setLayoutData(data);
-        buttonComposite.setText(WorkbenchMessages.WorkbenchPreference_openMode); 
-
-        String label = WorkbenchMessages.WorkbenchPreference_doubleClick;
-        doubleClickButton = createRadioButton(buttonComposite, label);
-        doubleClickButton.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                selectClickMode(singleClickButton.getSelection());
-            }
-        });
-        doubleClickButton.setSelection(!openOnSingleClick);
-
-        label = WorkbenchMessages.WorkbenchPreference_singleClick;
-        singleClickButton = createRadioButton(buttonComposite, label);
-        singleClickButton.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                selectClickMode(singleClickButton.getSelection());
-            }
-        });
-        singleClickButton.setSelection(openOnSingleClick);
-
-        label = WorkbenchMessages.WorkbenchPreference_singleClick_SelectOnHover; 		
-        selectOnHoverButton = new Button(buttonComposite, SWT.CHECK | SWT.LEFT);
-        selectOnHoverButton.setText(label);
-        selectOnHoverButton.setEnabled(openOnSingleClick);
-        selectOnHoverButton.setSelection(selectOnHover);
-        selectOnHoverButton.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                selectOnHover = selectOnHoverButton.getSelection();
-            }
-        });
-        data = new GridData();
-        data.horizontalIndent = 20;
-        selectOnHoverButton.setLayoutData(data);
-
-        label = WorkbenchMessages.WorkbenchPreference_singleClick_OpenAfterDelay;		
-        openAfterDelayButton = new Button(buttonComposite, SWT.CHECK | SWT.LEFT);
-        openAfterDelayButton.setText(label);
-        openAfterDelayButton.setEnabled(openOnSingleClick);
-        openAfterDelayButton.setSelection(openAfterDelay);
-        openAfterDelayButton.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                openAfterDelay = openAfterDelayButton.getSelection();
-            }
-        });
-        data = new GridData();
-        data.horizontalIndent = 20;
-        openAfterDelayButton.setLayoutData(data);
-
-        createNoteComposite(font, buttonComposite, WorkbenchMessages.Preference_note, 
-                WorkbenchMessages.WorkbenchPreference_noEffectOnAllViews);
-    }
-
-    private void selectClickMode(boolean singleClick) {
-        openOnSingleClick = singleClick;
-        selectOnHoverButton.setEnabled(openOnSingleClick);
-        openAfterDelayButton.setEnabled(openOnSingleClick);
-    }
-
-    /**
-     * Utility method that creates a radio button instance and sets the default
-     * layout data.
-     * 
-     * @param parent
-     *            the parent for the new button
-     * @param label
-     *            the label for the new button
-     * @return the newly-created button
-     */
-    protected static Button createRadioButton(Composite parent, String label) {
-        Button button = new Button(parent, SWT.RADIO | SWT.LEFT);
-        button.setText(label);
-        return button;
-    }
-
-    /**
-     * Utility method that creates a combo box
-     * 
-     * @param parent
-     *            the parent for the new label
-     * @return the new widget
-     */
-    protected static 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 static 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 a tab of one horizontal spans.
-     * 
-     * @param parent
-     *            the parent in which the tab should be created
-     */
-    protected static void createSpace(Composite parent) {
-        Label vfiller = new Label(parent, SWT.LEFT);
-        GridData gridData = new GridData();
-        gridData = new GridData();
-        gridData.horizontalAlignment = GridData.BEGINNING;
-        gridData.grabExcessHorizontalSpace = false;
-        gridData.verticalAlignment = GridData.CENTER;
-        gridData.grabExcessVerticalSpace = false;
-        vfiller.setLayoutData(gridData);
-    }
-
-    /**
-     * Returns preference store that belongs to the our plugin.
-     * 
-     * @return the preference store for this plugin
-     */
-    protected IPreferenceStore doGetPreferenceStore() {
-        return WorkbenchPlugin.getDefault().getPreferenceStore();
-    }
-
-    /**
-     * @see IWorkbenchPreferencePage
-     */
-    public void init(IWorkbench aWorkbench) {
-        IPreferenceStore store = getPreferenceStore();
-        openOnSingleClick = store
-                .getBoolean(IPreferenceConstants.OPEN_ON_SINGLE_CLICK);
-        selectOnHover = store.getBoolean(IPreferenceConstants.SELECT_ON_HOVER);
-        openAfterDelay = store
-                .getBoolean(IPreferenceConstants.OPEN_AFTER_DELAY);
-    }
-
-    /**
-     * The default button has been pressed.
-     */
-    protected void performDefaults() {
-        IPreferenceStore store = getPreferenceStore();
-        stickyCycleButton.setSelection(store
-                .getBoolean(IPreferenceConstants.STICKY_CYCLE));
-        openOnSingleClick = store
-                .getDefaultBoolean(IPreferenceConstants.OPEN_ON_SINGLE_CLICK);
-        selectOnHover = store
-                .getDefaultBoolean(IPreferenceConstants.SELECT_ON_HOVER);
-        openAfterDelay = store
-                .getDefaultBoolean(IPreferenceConstants.OPEN_AFTER_DELAY);
-        singleClickButton.setSelection(openOnSingleClick);
-        doubleClickButton.setSelection(!openOnSingleClick);
-        selectOnHoverButton.setSelection(selectOnHover);
-        openAfterDelayButton.setSelection(openAfterDelay);
-        selectOnHoverButton.setEnabled(openOnSingleClick);
-        openAfterDelayButton.setEnabled(openOnSingleClick);
-        stickyCycleButton.setSelection(store
-                .getDefaultBoolean(IPreferenceConstants.STICKY_CYCLE));
-        showUserDialogButton.setSelection(store.getDefaultBoolean(
-                IPreferenceConstants.RUN_IN_BACKGROUND));
-        showHeapStatusButton.setSelection(PrefUtil.getAPIPreferenceStore().getDefaultBoolean(
-                IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR));
-		
-        super.performDefaults();
-    }
-
-    /**
-     * The user has pressed Ok. Store/apply this page's values appropriately.
-     */
-    public boolean performOk() {
-        IPreferenceStore store = getPreferenceStore();
-
-        // store the keep cycle part dialogs sticky preference
-        store.setValue(IPreferenceConstants.STICKY_CYCLE, stickyCycleButton
-                .getSelection());
-        store.setValue(IPreferenceConstants.OPEN_ON_SINGLE_CLICK,
-                openOnSingleClick);
-        store.setValue(IPreferenceConstants.SELECT_ON_HOVER, selectOnHover);
-        store.setValue(IPreferenceConstants.OPEN_AFTER_DELAY, openAfterDelay);
-        store.setValue(IPreferenceConstants.RUN_IN_BACKGROUND,
-                showUserDialogButton.getSelection());
-        PrefUtil.getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR, showHeapStatusButton.getSelection());
-        updateHeapStatus(showHeapStatusButton.getSelection());
-        
-        int singleClickMethod = openOnSingleClick ? OpenStrategy.SINGLE_CLICK
-                : OpenStrategy.DOUBLE_CLICK;
-        if (openOnSingleClick) {
-            if (selectOnHover) {
-                singleClickMethod |= OpenStrategy.SELECT_ON_HOVER;
-            }
-            if (openAfterDelay) {
-                singleClickMethod |= OpenStrategy.ARROW_KEYS_OPEN;
-            }
-        }
-        OpenStrategy.setOpenMethod(singleClickMethod);
-
-        PrefUtil.savePrefs();
-        return true;
-    }
-
-	/**
-	 * Show or hide the heap status based on selection.
-	 * @param selection
-	 */
-	private void updateHeapStatus(boolean selection) {
-		IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
-		for (int i = 0; i < windows.length; i++) {
-			IWorkbenchWindow window = windows[i];
-			if(window instanceof WorkbenchWindow){
-				((WorkbenchWindow) window).showHeapStatus(selection);
-			}
-		}
-		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java
deleted file mode 100644
index c2be14b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardElement.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-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.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.SelectionEnabler;
-import org.eclipse.ui.internal.ISelectionConversionService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.model.IWorkbenchAdapter2;
-import org.eclipse.ui.model.WorkbenchAdapter;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * Instances represent registered wizards.
- */
-public class WorkbenchWizardElement extends WorkbenchAdapter implements
-        IAdaptable, IPluginContribution, IWizardDescriptor {
-    private String id;
-    
-    private ImageDescriptor imageDescriptor;
-
-    private SelectionEnabler selectionEnabler;
-
-    private IConfigurationElement configurationElement;
-
-    private ImageDescriptor descriptionImage;
-    
-    private WizardCollectionElement parentCategory;
-    
-	/**
-	 * TODO: DO we need to  make this API?
-	 */
-	public static final String TAG_PROJECT = "project"; //$NON-NLS-1$
-
-	private static final String [] EMPTY_TAGS = new String[0];
-
-	private static final String [] PROJECT_TAGS = new String[] {TAG_PROJECT};
-
-    
-    /**
-     * Create a new instance of this class
-     * 
-     * @param configurationElement
-     * @since 3.1
-     */
-    public WorkbenchWizardElement(IConfigurationElement configurationElement) {
-        this.configurationElement = configurationElement;
-        id = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-    }
-
-    /**
-     * Answer a boolean indicating whether the receiver is able to handle the
-     * passed selection
-     * 
-     * @return boolean
-     * @param selection
-     *            IStructuredSelection
-     */
-    public boolean canHandleSelection(IStructuredSelection selection) {
-        return getSelectionEnabler().isEnabledForSelection(selection);
-    }
-
-    /**
-     * Answer the selection for the reciever based on whether the it can handle
-     * the selection. If it can return the selection. If it can handle the
-     * adapted to IResource value of the selection. If it satisfies neither of
-     * these conditions return an empty IStructuredSelection.
-     * 
-     * @return IStructuredSelection
-     * @param selection
-     *            IStructuredSelection
-     */
-    public IStructuredSelection adaptedSelection(IStructuredSelection selection) {
-        if (canHandleSelection(selection)) {
-			return selection;
-		}
-
-        IStructuredSelection adaptedSelection = convertToResources(selection);
-        if (canHandleSelection(adaptedSelection)) {
-			return adaptedSelection;
-		}
-
-        //Couldn't find one that works so just return
-        return StructuredSelection.EMPTY;
-    }
-
-    /**
-     * 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.
-     * @return the new object
-     * @throws CoreException 
-     */
-    public Object createExecutableExtension() throws CoreException {
-        return WorkbenchPlugin.createExtension(configurationElement,
-                IWorkbenchRegistryConstants.ATT_CLASS);
-    }
-
-    /**
-     * 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
-                || adapter == IWorkbenchAdapter2.class) {
-            return this;
-        }
-        else if (adapter == IPluginContribution.class) {
-        	return this;
-        }
-        else if (adapter == IConfigurationElement.class) {
-        	return configurationElement;
-        }
-        return Platform.getAdapterManager().getAdapter(this, adapter);
-    }
-
-    /**
-     * @return IConfigurationElement
-     */
-    public IConfigurationElement getConfigurationElement() {
-        return configurationElement;
-    }
-
-    /**
-     * Answer the description parameter of this element
-     * 
-     * @return java.lang.String
-     */
-    public String getDescription() {
-        return RegistryReader.getDescription(configurationElement);
-    }
-
-    /**
-     * Answer the icon of this element.
-     */
-    public ImageDescriptor getImageDescriptor() {
-    	if (imageDescriptor == null) {
-    		String iconName = configurationElement
-                    .getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-	        if (iconName == null) {
-				return null;
-			}
-            imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-                    configurationElement.getNamespaceIdentifier(), iconName);    
-    	}
-        return imageDescriptor;
-    }
-
-    /**
-     * Returns the name of this wizard element.
-     */
-    public ImageDescriptor getImageDescriptor(Object element) {
-        return getImageDescriptor();
-    }
-    
-    /**
-     * Returns the name of this wizard element.
-     */
-    public String getLabel(Object element) {
-        return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-    }
-
-    /**
-     * Answer self's action enabler, creating it first iff necessary
-     */
-    protected SelectionEnabler getSelectionEnabler() {
-        if (selectionEnabler == null) {
-			selectionEnabler = new SelectionEnabler(configurationElement);
-		}
-
-        return selectionEnabler;
-    }
-
-    /**
-     * Attempt to convert the elements in the passed selection into resources
-     * by asking each for its IResource property (iff it isn't already a
-     * resource). If all elements in the initial selection can be converted to
-     * resources then answer a new selection containing these resources;
-     * otherwise answer an empty selection.
-     * 
-     * @param originalSelection the original selection
-     * @return the converted selection or an empty selection
-     */
-	private IStructuredSelection convertToResources(
-			IStructuredSelection originalSelection) {
-		Object selectionService = PlatformUI.getWorkbench().getService(
-				ISelectionConversionService.class);
-		if (selectionService == null || originalSelection == null) {
-			return StructuredSelection.EMPTY;
-		}
-		return ((ISelectionConversionService) selectionService)
-				.convertToResources(originalSelection);
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPluginContribution#getLocalId()
-	 */
-    public String getLocalId() {
-        return getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return (configurationElement != null) ? configurationElement
-                .getNamespaceIdentifier() : null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.INewWizardDescriptor#getDescriptionImage()
-     */
-    public ImageDescriptor getDescriptionImage() {
-    	if (descriptionImage == null) {
-    		String descImage = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_DESCRIPTION_IMAGE);
-    		if (descImage == null) {
-				return null;
-			}
-            descriptionImage = AbstractUIPlugin.imageDescriptorFromPlugin(
-                    configurationElement.getNamespaceIdentifier(), descImage);
-    	}
-        return descriptionImage;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.wizards.INewWizardDescriptor#getHelpHref()
-     */
-    public String getHelpHref() {
-        return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_HELP_HREF);
-    }
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.INewWizardDescriptor#createWizard()
-	 */
-	public IWorkbenchWizard createWizard() throws CoreException {
-		return (IWorkbenchWizard) createExecutableExtension();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbenchPartDescriptor#getId()
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbenchPartDescriptor#getLabel()
-	 */
-	public String getLabel() {		
-		return getLabel(this);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.INewWizardDescriptor#getCategory()
-	 */
-	public IWizardCategory getCategory() {
-		return (IWizardCategory) getParent(this);
-	}
-	
-	/**
-	 * Return the collection.
-	 * 
-	 * @return the collection
-	 * @since 3.1
-	 */
-	public WizardCollectionElement getCollectionElement() {
-		return (WizardCollectionElement) getParent(this);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.IWizardDescriptor#getTags()
-	 */
-	public String [] getTags() {
- 
-        String flag = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_PROJECT);
-        if (Boolean.valueOf(flag).booleanValue()) {
-        	return PROJECT_TAGS;
-        }
-        
-        return EMPTY_TAGS;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
-	 */
-	public Object getParent(Object object) {
-		return parentCategory;
-	}
-
-	/**
-	 * Set the parent category.
-	 * 
-	 * @param parent the parent category
-	 * @since 3.1
-	 */
-	public void setParent(WizardCollectionElement parent) {
-		parentCategory = parent;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.IWizardDescriptor#canFinishEarly()
-	 */
-	public boolean canFinishEarly() {
-		return Boolean.valueOf(configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_CAN_FINISH_EARLY)).booleanValue();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.wizards.IWizardDescriptor#hasPages()
-	 */
-	public boolean hasPages() {
-		String hasPagesString = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_HAS_PAGES);
-		// default value is true
-		if (hasPagesString == null) {
-			return true;
-		}
-		return Boolean.valueOf(hasPagesString).booleanValue();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java
deleted file mode 100644
index 0260250..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardListSelectionPage.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-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.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-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.Table;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.model.AdaptableList;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.model.WorkbenchViewerComparator;
-
-/**
- * Abstract implementation of a wizard selection page which simply displays a
- * list of specified wizard elements and allows the user to select one to be
- * launched. Subclasses just need to provide a method which creates an
- * appropriate wizard node based upon a user selection.
- */
-public abstract class WorkbenchWizardListSelectionPage extends
-        WorkbenchWizardSelectionPage implements ISelectionChangedListener,
-        IDoubleClickListener {
-
-    // id constants
-    private static final String DIALOG_SETTING_SECTION_NAME = "WizardListSelectionPage."; //$NON-NLS-1$
-
-    private final static int SIZING_LISTS_HEIGHT = 200;
-
-    private static final String STORE_SELECTED_WIZARD_ID = DIALOG_SETTING_SECTION_NAME
-            + "STORE_SELECTED_WIZARD_ID"; //$NON-NLS-1$
-
-    private TableViewer viewer;
-
-    private String message;
-
-    /**
-     * Creates a <code>WorkbenchWizardListSelectionPage</code>.
-     * 
-     * @param aWorkbench the current workbench
-     * @param currentSelection the workbench's current resource selection
-     * @param wizardElements the collection of <code>WorkbenchWizardElements</code>
-     *            to display for selection
-     * @param message the message to display above the selection list
-     * @param triggerPointId the trigger point id
-     */
-    protected WorkbenchWizardListSelectionPage(IWorkbench aWorkbench,
-            IStructuredSelection currentSelection,
-            AdaptableList wizardElements, String message, String triggerPointId) {
-        super(
-                "singleWizardSelectionPage", aWorkbench, currentSelection, wizardElements, triggerPointId); //$NON-NLS-1$
-        setDescription(WorkbenchMessages.WizardList_description);
-        this.message = message;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-     */
-    public void createControl(Composite parent) {
-
-        Font font = parent.getFont();
-
-        // create composite for page.
-        Composite outerContainer = new Composite(parent, SWT.NONE);
-        outerContainer.setLayout(new GridLayout());
-        outerContainer.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL
-                | GridData.HORIZONTAL_ALIGN_FILL));
-        outerContainer.setFont(font);
-
-        Label messageLabel = new Label(outerContainer, SWT.NONE);
-        messageLabel.setText(message);
-        messageLabel.setFont(font);
-
-        createViewer(outerContainer);
-        layoutTopControl(viewer.getControl());
-
-        restoreWidgetValues();
-
-        setControl(outerContainer);
-    }
-
-    /**
-     * Create a new viewer in the parent.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     */
-    private void createViewer(Composite parent) {
-        //Create a table for the list
-        Table table = new Table(parent, SWT.BORDER);
-        table.setFont(parent.getFont());
-
-        // the list viewer
-        viewer = new TableViewer(table);
-        viewer.setContentProvider(new WizardContentProvider());
-        viewer.setLabelProvider(new WorkbenchLabelProvider());
-        viewer.setComparator(new WorkbenchViewerComparator());
-        viewer.addSelectionChangedListener(this);
-        viewer.addDoubleClickListener(this);
-        viewer.setInput(wizardElements);
-    }
-
-    /**
-     * Returns an <code>IWizardNode</code> representing the specified
-     * workbench wizard which has been selected by the user. <b>Subclasses
-     * </b> must override this abstract implementation.
-     * 
-     * @param element the wizard element that an <code>IWizardNode</code> is
-     *            needed for
-     * @return org.eclipse.jface.wizards.IWizardNode
-     */
-    protected abstract IWizardNode createWizardNode(
-            WorkbenchWizardElement element);
-
-    /**
-     * An item in a viewer has been double-clicked.
-     */
-    public void doubleClick(DoubleClickEvent event) {
-        selectionChanged(new SelectionChangedEvent(event.getViewer(), event
-                .getViewer().getSelection()));
-        getContainer().showPage(getNextPage());
-    }
-
-    /**
-     * Layout the top control.
-     * 
-     * @param control the control.
-     * @since 3.0
-     */
-    private void layoutTopControl(Control control) {
-        GridData data = new GridData(GridData.FILL_BOTH);
-
-        int availableRows = DialogUtil.availableRows(control.getParent());
-
-        //Only give a height hint if the dialog is going to be too small
-        if (availableRows > 50) {
-            data.heightHint = SIZING_LISTS_HEIGHT;
-        } else {
-            data.heightHint = availableRows * 3;
-        }
-
-        control.setLayoutData(data);
-
-    }
-
-    /**
-     * Uses the dialog store to restore widget values to the values that they
-     * held last time this wizard was used to completion.
-     */
-    private void restoreWidgetValues() {
-
-        IDialogSettings settings = getDialogSettings();
-        if (settings == null) {
-			return;
-		}
-
-        String wizardId = settings.get(STORE_SELECTED_WIZARD_ID);
-        WorkbenchWizardElement wizard = findWizard(wizardId);
-        if (wizard == null) {
-			return;
-		}
-
-        StructuredSelection selection = new StructuredSelection(wizard);
-        viewer.setSelection(selection);
-    }
-
-    /**
-     * Since Finish was pressed, write widget values to the dialog store so
-     * that they will persist into the next invocation of this wizard page
-     */
-    public void saveWidgetValues() {
-        IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
-        if (sel.size() > 0) {
-            WorkbenchWizardElement selectedWizard = (WorkbenchWizardElement) sel
-                    .getFirstElement();
-            getDialogSettings().put(STORE_SELECTED_WIZARD_ID,
-                    selectedWizard.getId());
-        }
-    }
-
-    /**
-     * Notes the newly-selected wizard element and updates the page
-     * accordingly.
-     * 
-     * @param event the selection changed event
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        setErrorMessage(null);
-        IStructuredSelection selection = (IStructuredSelection) event
-                .getSelection();
-        WorkbenchWizardElement currentWizardSelection = (WorkbenchWizardElement) selection
-                .getFirstElement();
-        if (currentWizardSelection == null) {
-            setMessage(null);
-            setSelectedNode(null);
-            return;
-        }
-
-        setSelectedNode(createWizardNode(currentWizardSelection));
-        setMessage(currentWizardSelection.getDescription());
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java
deleted file mode 100644
index a0fdfff..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardNode.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * A wizard node represents a "potential" wizard. Wizard nodes
- * are used by wizard selection pages to allow the user to pick
- * from several available nested wizards.
- * <p>
- * <b>Subclasses</b> simply need to override method <code>createWizard()</code>,
- * which is responsible for creating an instance of the wizard it represents
- * AND ensuring that this wizard is the "right" type of wizard (e.g.-
- * New, Import, etc.).</p>
- */
-public abstract class WorkbenchWizardNode implements IWizardNode,
-        IPluginContribution {
-    protected WorkbenchWizardSelectionPage parentWizardPage;
-
-    protected IWizard wizard;
-
-    protected IWizardDescriptor wizardElement;
-
-    /**
-     * Creates a <code>WorkbenchWizardNode</code> that holds onto a wizard
-     * element.  The wizard element provides information on how to create
-     * the wizard supplied by the ISV's extension.
-     * 
-     * @param aWizardPage the wizard page
-     * @param element the wizard descriptor
-     */
-    public WorkbenchWizardNode(WorkbenchWizardSelectionPage aWizardPage,
-    		IWizardDescriptor element) {
-        super();
-        this.parentWizardPage = aWizardPage;
-        this.wizardElement = element;
-    }
-
-    /**
-     * Returns the wizard represented by this wizard node.  <b>Subclasses</b>
-     * must override this method.
-     * 
-     * @return the wizard object
-     * @throws CoreException 
-     */
-    public abstract IWorkbenchWizard createWizard() throws CoreException;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardNode#dispose()
-     */
-    public void dispose() {
-        // Do nothing since the wizard wasn't created via reflection.
-    }
-
-    /**
-     * Returns the current resource selection that is being given to the wizard.
-     */
-    protected IStructuredSelection getCurrentResourceSelection() {
-        return parentWizardPage.getCurrentResourceSelection();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardNode#getExtent()
-     */
-    public Point getExtent() {
-        return new Point(-1, -1);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-    	IPluginContribution contribution = (IPluginContribution) Util.getAdapter(wizardElement,
-				IPluginContribution.class);
-		if (contribution != null) {
-			return contribution.getLocalId();
-		}
-		return wizardElement.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-       	IPluginContribution contribution = (IPluginContribution) Util.getAdapter(wizardElement,
-				IPluginContribution.class);
-		if (contribution != null) {
-			return contribution.getPluginId();
-		}
-		return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardNode#getWizard()
-     */
-    public IWizard getWizard() {
-        if (wizard != null) {
-			return wizard; // we've already created it
-		}
-
-        final IWorkbenchWizard[] workbenchWizard = new IWorkbenchWizard[1];
-        final IStatus statuses[] = new IStatus[1];
-        // Start busy indicator.
-        BusyIndicator.showWhile(parentWizardPage.getShell().getDisplay(),
-                new Runnable() {
-                    public void run() {
-                        SafeRunner.run(new SafeRunnable() {
-                            /**
-                             * Add the exception details to status is one happens.
-                             */
-                            public void handleException(Throwable e) {
-                               	IPluginContribution contribution = (IPluginContribution) Util.getAdapter(wizardElement, IPluginContribution.class);
-                                statuses[0] = new Status(
-                                        IStatus.ERROR,
-                                        contribution != null ? contribution.getPluginId() : WorkbenchPlugin.PI_WORKBENCH,
-                                        IStatus.OK,
-                                        WorkbenchMessages.WorkbenchWizard_errorMessage,
-                                        e);
-                            }
-
-                            public void run() {
-                                try {
-                                    workbenchWizard[0] = createWizard();
-                                    // create instance of target wizard
-                                } catch (CoreException e) {
-                                	IPluginContribution contribution = (IPluginContribution) Util.getAdapter(wizardElement, IPluginContribution.class);
-                                	statuses[0] = new Status(
-                                            IStatus.ERROR,
-                                            contribution != null ? contribution.getPluginId() : WorkbenchPlugin.PI_WORKBENCH,
-                                            IStatus.OK,
-                                            WorkbenchMessages.WorkbenchWizard_errorMessage,
-                                            e);
-                                }
-                            }
-                        });
-                    }
-                });
-
-        if (statuses[0] != null) {
-            parentWizardPage
-					.setErrorMessage(WorkbenchMessages.WorkbenchWizard_errorMessage);
-			StatusAdapter statusAdapter = new StatusAdapter(statuses[0]);
-			statusAdapter.addAdapter(Shell.class, parentWizardPage.getShell());
-			statusAdapter.setProperty(StatusAdapter.TITLE_PROPERTY,
-					WorkbenchMessages.WorkbenchWizard_errorTitle);
-			StatusManager.getManager()
-					.handle(statusAdapter, StatusManager.SHOW);
-			return null;
-        }
-
-        IStructuredSelection currentSelection = getCurrentResourceSelection();
-
-        //Get the adapted version of the selection that works for the
-        //wizard node
-        currentSelection = wizardElement.adaptedSelection(currentSelection);
-
-        workbenchWizard[0].init(getWorkbench(), currentSelection);
-
-        wizard = workbenchWizard[0];
-        return wizard;
-    }
-
-    /**
-     * Returns the wizard element.
-     * 
-     * @return the wizard descriptor
-     */
-    public IWizardDescriptor getWizardElement() {
-        return wizardElement;
-    }
-
-    /**
-     * Returns the current workbench.
-     */
-    protected IWorkbench getWorkbench() {
-        return parentWizardPage.getWorkbench();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardNode#isContentCreated()
-     */
-    public boolean isContentCreated() {
-        return wizard != null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java
deleted file mode 100644
index ff44fa6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkbenchWizardSelectionPage.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardSelectionPage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.activities.ITriggerPoint;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.model.AdaptableList;
-
-/**
- * Page for selecting a wizard from a group of available wizards.
- */
-public abstract class WorkbenchWizardSelectionPage extends WizardSelectionPage {
-
-    // variables
-    protected IWorkbench workbench;
-
-    protected AdaptableList wizardElements;
-
-    public TableViewer wizardSelectionViewer;
-
-    protected IStructuredSelection currentResourceSelection;
-    
-    protected String triggerPointId;
-
-    /**
-     *	Create an instance of this class
-     */
-    public WorkbenchWizardSelectionPage(String name, IWorkbench aWorkbench,
-            IStructuredSelection currentSelection, AdaptableList elements, 
-            String triggerPointId) {
-        super(name);
-        this.wizardElements = elements;
-        this.currentResourceSelection = currentSelection;
-        this.workbench = aWorkbench;
-        this.triggerPointId = triggerPointId;
-        setTitle(WorkbenchMessages.Select);
-    }
-
-    /**
-     *	Answer the wizard object corresponding to the passed id, or null
-     *	if such an object could not be found
-     *
-     *	@return WizardElement
-     *	@param searchId the id to search on
-     */
-    protected WorkbenchWizardElement findWizard(String searchId) {
-        Object[] children = wizardElements.getChildren();
-        for (int i = 0; i < children.length; ++i) {
-            WorkbenchWizardElement currentWizard = (WorkbenchWizardElement) children[i];
-            if (currentWizard.getId().equals(searchId)) {
-				return currentWizard;
-			}
-        }
-
-        return null;
-    }
-
-    public IStructuredSelection getCurrentResourceSelection() {
-        return currentResourceSelection;
-    }
-
-    public IWorkbench getWorkbench() {
-        return this.workbench;
-    }
-
-    /**
-     *	Specify the passed wizard node as being selected, meaning that if
-     *	it's non-null then the wizard to be displayed when the user next
-     *	presses the Next button should be determined by asking the passed
-     *	node.
-     *
-     *	@param node org.eclipse.jface.wizards.IWizardNode
-     */
-    public void selectWizardNode(IWizardNode node) {
-        setSelectedNode(node);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.IWizardPage#getNextPage()
-     */
-    public IWizardPage getNextPage() { 
-        ITriggerPoint triggerPoint = getWorkbench().getActivitySupport()
-        .getTriggerPointManager().getTriggerPoint(triggerPointId);
-        if (triggerPoint == null || WorkbenchActivityHelper.allowUseOf(triggerPoint, getSelectedNode())) {
-			return super.getNextPage();
-		}
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java
deleted file mode 100644
index 74730f7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetEditWizard.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
-import org.eclipse.ui.dialogs.IWorkingSetPage;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A working set edit wizard allows the user to edit a 
- * working set using a plugin specified working set page.
- * 
- * @since 2.0
- * @see org.eclipse.ui.dialog.IWorkingSetPage
- */
-public class WorkingSetEditWizard extends Wizard implements
-        IWorkingSetEditWizard {
-    private IWorkingSetPage workingSetEditPage;
-
-    private IWorkingSet workingSet;
-
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @param editPage the working set page that is going to 
-     * 	be used for editing a working set.
-     */
-    public WorkingSetEditWizard(IWorkingSetPage editPage) {
-        super();
-        workingSetEditPage = editPage;
-        workingSetEditPage.setWizard(this);
-        setWindowTitle(WorkbenchMessages.WorkingSetEditWizard_title);
-    }
-
-    /**
-     * Overrides Wizard.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#addPages
-     */
-    public void addPages() {
-        super.addPages();
-        addPage(workingSetEditPage);
-    }
-
-    /**
-     * Overrides Wizard.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#canFinish()
-     */
-    public boolean canFinish() {
-        return workingSetEditPage.isPageComplete();
-    }
-
-    /**
-     * Returns the working set that is being edited.
-     * 
-     * @return the working set that is being edited.
-     */
-    public IWorkingSet getSelection() {
-        return workingSet;
-    }
-
-    /**
-     * Overrides Wizard.
-     * Notifies the IWorkingSetPage that the wizard is being closed.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#performFinish
-     */
-    public boolean performFinish() {
-        workingSetEditPage.finish();
-        return true;
-    }
-
-    /**
-     * Sets the working set that should be edited.
-     * 
-     * @param workingSet the working set that should be edited.
-     */
-    public void setSelection(IWorkingSet workingSet) {
-        this.workingSet = workingSet;
-        workingSetEditPage.setSelection(workingSet);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java
deleted file mode 100644
index a55da61..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetFilter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Set;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.IWorkingSet;
-
-public class WorkingSetFilter extends ViewerFilter {
-		Set workingSetIds;
-		
-		public WorkingSetFilter(Set workingSetIds) {
-			this.workingSetIds = workingSetIds;
-		}
-		
-    public boolean select(Viewer viewer, Object parentElement, Object element) {
-        if (element instanceof IWorkingSet) {
-            IWorkingSet workingSet = (IWorkingSet) element;
-			String id = workingSet.getId();
-            //if (!workingSet.isVisible())
-            //	return false;
-            if (workingSetIds != null && id != null) {
-                return workingSetIds.contains(id);
-            }
-        }
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java
deleted file mode 100644
index c3600b5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetLabelProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IWorkingSet;
-
-public class WorkingSetLabelProvider extends LabelProvider {
-    private ResourceManager images;
-
-    /**
-     * Create a new instance of the receiver.
-     */
-    public WorkingSetLabelProvider() {
-        images = new LocalResourceManager(JFaceResources.getResources());
-    }
-
-    public void dispose() {
-        images.dispose();
-
-        super.dispose();
-    }
-
-    public Image getImage(Object object) {
-        Assert.isTrue(object instanceof IWorkingSet);
-        IWorkingSet workingSet = (IWorkingSet) object;
-        ImageDescriptor imageDescriptor = workingSet.getImageDescriptor();
-
-        if (imageDescriptor == null) {
-			return null;
-		}
-
-        Image icon = (Image) images.get(imageDescriptor);
-        return icon;
-    }
-
-    public String getText(Object object) {
-        Assert.isTrue(object instanceof IWorkingSet);
-        IWorkingSet workingSet = (IWorkingSet) object;
-        return workingSet.getLabel();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java
deleted file mode 100644
index f9f3de5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetNewWizard.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.dialogs.IWorkingSetNewWizard;
-import org.eclipse.ui.dialogs.IWorkingSetPage;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.WorkingSetDescriptor;
-import org.eclipse.ui.internal.registry.WorkingSetRegistry;
-
-/**
- * A new working set wizard allows the user to create a 
- * new working set using a plugin specified working set page.
- * 
- * @since 2.0
- * @see org.eclipse.ui.dialog.IWorkingSetPage
- */
-public class WorkingSetNewWizard extends Wizard implements IWorkingSetNewWizard {
-    private WorkingSetTypePage workingSetTypePage;
-
-    private IWorkingSetPage workingSetEditPage;
-
-    private String editPageId;
-
-    private IWorkingSet workingSet;
-    
-    private WorkingSetDescriptor[] descriptors;
-    
-    /**
-     * Creates a new instance of the receiver.
-     * 
-     * @param descriptors the choice of descriptors 
-     */
-    public WorkingSetNewWizard(WorkingSetDescriptor[] descriptors) {
-        super();
-        Assert.isTrue(descriptors != null && descriptors.length > 0);
-        this.descriptors= descriptors;
-        setWindowTitle(WorkbenchMessages.WorkingSetNewWizard_title);
-    }
-
-    /**
-     * Overrides method in Wizard.
-     * Adds a page listing the available kinds of working sets.
-     * The second wizard page will depend on the selected working set 
-     * type.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#addPages()
-     */
-    public void addPages() {
-        super.addPages();
-
-        IWizardPage page;
-        WorkingSetRegistry registry = WorkbenchPlugin.getDefault().getWorkingSetRegistry();
-        
-        if (descriptors.length > 1) {
-            page = workingSetTypePage = new WorkingSetTypePage(this.descriptors);
-        } else {
-            editPageId = descriptors[0].getId();
-            page = workingSetEditPage = registry.getWorkingSetPage(editPageId);
-        }
-        page.setWizard(this);
-        addPage(page);
-        setForcePreviousAndNextButtons(descriptors.length > 1);
-    }
-
-	/**
-     * Overrides method in Wizard.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#canFinish()
-     */
-    public boolean canFinish() {
-        return (workingSetEditPage != null && workingSetEditPage
-                .isPageComplete());
-    }
-
-    /**
-     * Overrides method in Wizard.
-     * Returns a working set page for creating the new working set.
-     * This second page is loaded from the plugin that defined the
-     * selected working set type.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#getNextPage(IWizardPage)
-     */
-    public IWizardPage getNextPage(IWizardPage page) {
-        if (workingSetTypePage != null && page == workingSetTypePage) {
-            String pageId = workingSetTypePage.getSelection();
-            if (pageId != null) {
-                if (workingSetEditPage == null || pageId != editPageId) {
-                    WorkingSetRegistry registry = WorkbenchPlugin.getDefault()
-                            .getWorkingSetRegistry();
-                    workingSetEditPage = registry.getWorkingSetPage(pageId);
-                    addPage(workingSetEditPage);
-                    editPageId = pageId;
-                }
-                return workingSetEditPage;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns the new working set. Returns null if the wizard has 
-     * been cancelled.
-     * 
-     * @return the new working set or null if the wizard has been 
-     * 	cancelled.
-     */
-    public IWorkingSet getSelection() {
-        return workingSet;
-    }
-
-    /**
-     * Overrides method in Wizard.
-     * Stores the newly created working set and the id of the page
-     * used to create it.
-     * 
-     * @see org.eclipse.jface.wizard.Wizard#performFinish()
-     */
-    public boolean performFinish() {
-        workingSetEditPage.finish();
-        workingSet = workingSetEditPage.getSelection();
-        workingSet.setId(editPageId);
-        return true;
-    }    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
deleted file mode 100644
index 361615f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetSelectionDialog.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *      IBM Corporation - initial API and implementation 
- * 		Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font
- *   	should be activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-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.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-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.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.Shell;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-import org.eclipse.ui.internal.AggregateWorkingSet;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.WorkbenchViewerComparator;
-
-/**
- * A working set selection dialog displays a list of working
- * sets available in the workbench.
- * 
- * @see IWorkingSetSelectionDialog
- * @since 2.0
- */
-public class WorkingSetSelectionDialog extends AbstractWorkingSetDialog {
-    private final static int SIZING_SELECTION_WIDGET_HEIGHT = 200;
-
-    private final static int SIZING_SELECTION_WIDGET_WIDTH = 50;
-
-    private ILabelProvider labelProvider;
-
-    private IStructuredContentProvider contentProvider;
-
-    private CheckboxTableViewer listViewer;
-
-    private boolean multiSelect;
-    
-    private IWorkbenchWindow workbenchWindow;
-
-	private Button buttonWindowSet;
-
-	private Button buttonNoSet;
-
-	private Button buttonSelectedSets;
-
-    /**
-     * Creates a working set selection dialog.
-     *
-     * @param parentShell the parent shell
-     * @param multi true=more than one working set can be chosen 
-     * 	in the dialog. false=only one working set can be chosen. Multiple
-     * 	working sets can still be selected and removed from the list but
-     * 	the dialog can only be closed when a single working set is selected.
-     * @param workingSetIds a list of working set ids which are valid workings sets
-     *  to be selected, created, removed or edited, or <code>null</code> if all currently
-     *  available working set types are valid 
-     */
-    public WorkingSetSelectionDialog(Shell parentShell, boolean multi, String[] workingSetIds) {
-        super(parentShell, workingSetIds, true);
-        initWorkbenchWindow();
-        
-        contentProvider = new ArrayContentProvider();
-        labelProvider = new WorkingSetLabelProvider();
-        multiSelect = multi;
-        if (multiSelect) {
-            setTitle(WorkbenchMessages.WorkingSetSelectionDialog_title_multiSelect); 
-            setMessage(WorkbenchMessages.WorkingSetSelectionDialog_message_multiSelect);
-        } else {
-            setTitle(WorkbenchMessages.WorkingSetSelectionDialog_title); 
-            setMessage(WorkbenchMessages.WorkingSetSelectionDialog_message);
-        }
-            			
-    }
-
-    /**
-	 * Determine what window this dialog is being opened on. This impacts the
-	 * returned working set in the case where the user chooses the window set.
-	 * 
-	 * @since 3.2
-	 */
-    private void initWorkbenchWindow() {
-		Shell shellToCheck = getShell();
-
-		workbenchWindow = Util.getWorkbenchWindowForShell(shellToCheck);
-	}
-
-    /**
-     * Overrides method from Dialog.
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#cancelPressed()
-     */
-    protected void cancelPressed() {
-        restoreAddedWorkingSets();
-        restoreChangedWorkingSets();
-        restoreRemovedWorkingSets();
-        setSelection(null);
-        super.cancelPressed();
-    }
-
-    /** 
-     * Overrides method from Window.
-     * 
-     * @see org.eclipse.jface.window.Window#configureShell(Shell)
-     */
-    protected void configureShell(Shell shell) {
-        super.configureShell(shell);
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
-				IWorkbenchHelpContextIds.WORKING_SET_SELECTION_DIALOG);
-    }
-
-    /**
-     * Overrides method from Dialog.
-     * Create the dialog widgets.
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-    	initializeDialogUnits(parent);
-    	
-        Composite composite = (Composite) super.createDialogArea(parent);
-
-		createMessageArea(composite);
-
-		SelectionListener listener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				updateButtonAvailability();
-			}
-		};
-		
-		buttonWindowSet = new Button(composite, SWT.RADIO);
-		buttonWindowSet.setText(WorkbenchMessages.WindowWorkingSets);
-		buttonWindowSet.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		buttonWindowSet.addSelectionListener(listener);
-
-		buttonNoSet = new Button(composite, SWT.RADIO);
-		buttonNoSet.setText(WorkbenchMessages.NoWorkingSet);
-		buttonNoSet.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		buttonNoSet.addSelectionListener(listener);
-
-		buttonSelectedSets = new Button(composite, SWT.RADIO);
-		buttonSelectedSets.setText(WorkbenchMessages.SelectedWorkingSets);
-		buttonSelectedSets.addSelectionListener(listener);
-
-		switch (getInitialRadioSelection()) {
-		case 0:
-			buttonWindowSet.setSelection(true);
-			break;
-		case 1:
-			buttonNoSet.setSelection(true);
-			break;
-		case 2:
-			buttonSelectedSets.setSelection(true);
-			break;
-		}
-		buttonSelectedSets
-				.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        
-		Composite viewerComposite = new Composite(composite, SWT.NONE);
-		GridLayout layout = new GridLayout(2, false);
-		layout.marginHeight = layout.marginWidth = 0;
-		layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-		layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-		viewerComposite.setLayout(layout);
-		
-		GridData data = new GridData(GridData.FILL_BOTH);
-		data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-		data.widthHint = SIZING_SELECTION_WIDGET_WIDTH + 300;  // fudge?  I like fudge.
-		viewerComposite.setLayoutData(data);
-		
-		listViewer = CheckboxTableViewer.newCheckList(viewerComposite,
-				SWT.BORDER | SWT.MULTI);
-		data = new GridData(GridData.FILL_BOTH);
-		data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-		data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
-		listViewer.getTable().setLayoutData(data);
-
-        listViewer.setLabelProvider(labelProvider);
-        listViewer.setContentProvider(contentProvider);
-        listViewer.setComparator(new WorkbenchViewerComparator());
-        
-        listViewer.addFilter(new WorkingSetFilter(getSupportedWorkingSetIds()));
-        
-        listViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-            public void selectionChanged(SelectionChangedEvent event) {
-                handleSelectionChanged();
-            }
-        });
-        listViewer.addDoubleClickListener(new IDoubleClickListener() {
-            public void doubleClick(DoubleClickEvent event) {
-            	Object obj = ((IStructuredSelection) listViewer.getSelection())
-						.getFirstElement();
-				listViewer.setCheckedElements(new Object[] {obj});
-				buttonWindowSet.setSelection(false);
-				buttonNoSet.setSelection(false);
-				buttonSelectedSets.setSelection(true);            	
-            	okPressed();
-            }
-        });
-        listViewer.addCheckStateListener(new ICheckStateListener() {
-			public void checkStateChanged(CheckStateChangedEvent event) {
-				// implicitly select the third radio button
-				buttonWindowSet.setSelection(false);
-				buttonNoSet.setSelection(false);
-				buttonSelectedSets.setSelection(true);
-			}
-		});
-
-        addModifyButtons(viewerComposite);
-        
-        addSelectionButtons(composite);
-        
-
-		listViewer.setInput(Arrays.asList(WorkbenchPlugin.getDefault()
-				.getWorkingSetManager().getWorkingSets()));
-        List initialElementSelections = getInitialElementSelections();
-		if (multiSelect) {
-			listViewer.setCheckedElements(initialElementSelections.toArray());
-		} else if (!initialElementSelections.isEmpty()) {
-			IWorkingSet set = (IWorkingSet) initialElementSelections.get(0);
-			if (set instanceof AggregateWorkingSet) {
-				AggregateWorkingSet aggregate = (AggregateWorkingSet) set;
-				listViewer.setCheckedElements(aggregate.getComponents());
-			}
-			else {
-				listViewer.setCheckedElements(initialElementSelections.toArray());
-			}
-		}
-		
-		availableWorkingSetsChanged();
-		Dialog.applyDialogFont(composite);
-		
-		return composite;
-    }
-
-    private int getInitialRadioSelection() {
-    		IWorkingSet windowSet = workbenchWindow.getActivePage().getAggregateWorkingSet();
-    		
-    		int selectionIndex;
-    		if (getSelection() != null && getSelection().length > 0) {
-    			if (windowSet.equals(getSelection()[0])) {
-    				selectionIndex = 0;
-    			}
-    			else {
-    				selectionIndex = 2;
-    			}
-    		}
-    		else {
-    			selectionIndex = 1;
-    		}
-    		
-		return selectionIndex;
-	}
-
-	/**
-     * Overrides method from Dialog.
-     * Sets the initial selection, if any.
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#createContents(Composite)
-     */
-    protected Control createContents(Composite parent) {
-        Control control = super.createContents(parent);
-        List selections = getInitialElementSelections();
-        if (!selections.isEmpty()) {
-            listViewer.setSelection(new StructuredSelection(selections), true);
-        }
-        updateButtonAvailability();
-        return control;
-    }
-
-    /**
-     * Returns the selected working sets.
-     * 
-     * @return the selected working sets
-     */
-    protected List getSelectedWorkingSets() {
-        ISelection selection = listViewer.getSelection();
-        if (selection instanceof IStructuredSelection) {
-			return ((IStructuredSelection) selection).toList();
-		}
-        return null;
-    }
-
-    /**
-     * Called when the selection has changed.
-     */
-    void handleSelectionChanged() {
-        updateButtonAvailability();
-    }
-
-    /**
-     * Sets the selected working sets as the dialog result.
-     * Overrides method from Dialog
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-     */
-    protected void okPressed() {
-    		if (buttonWindowSet.getSelection()) {
-    			IWorkingSet [] windowSet = new IWorkingSet[] {workbenchWindow.getActivePage().getAggregateWorkingSet()};
-    			setSelection(windowSet);
-    			setResult(Arrays.asList(getSelection()));
-    		}
-    		else if (buttonNoSet.getSelection()) {
-			setSelection(new IWorkingSet[0]);
-			setResult(Arrays.asList(getSelection()));
-    		}
-    		else if (buttonSelectedSets.getSelection()) {
-			Object[] untypedResult = listViewer.getCheckedElements();
-			IWorkingSet[] typedResult = new IWorkingSet[untypedResult.length];
-			System.arraycopy(untypedResult, 0, typedResult, 0,
-					untypedResult.length);
-			// if multiselect is allowed or there was only one selected then dont create 
-			// an aggregate
-			if (multiSelect || typedResult.length <= 1) {
-				setSelection(typedResult);
-				setResult(Arrays.asList(typedResult));
-			}
-			else {
-				String setId = getAggregateIdForSets(typedResult);
-				IWorkingSetManager workingSetManager = workbenchWindow
-						.getWorkbench().getWorkingSetManager();
-				IWorkingSet aggregate = workingSetManager
-						.getWorkingSet(setId);
-				if (aggregate == null) {
-					aggregate = workingSetManager
-							.createAggregateWorkingSet(
-									setId,
-									WorkbenchMessages.WorkbenchPage_workingSet_multi_label,
-									typedResult);
-					workingSetManager.addWorkingSet(aggregate);
-				}
-				setSelection(new IWorkingSet[] {aggregate});
-				setResult(Collections.singletonList(aggregate));
-			}
-    		}
-        
-        super.okPressed();
-    }
-
-    /**
-	 * Create a string that represents the name of the aggregate set composed of
-	 * the supplied working sets. It's very long and not printworthy.
-	 * 
-	 * @param typedResult the sets 
-	 * @return the name
-	 */
-    private String getAggregateIdForSets(IWorkingSet[] typedResult) {
-    		StringBuffer buffer = new StringBuffer();
-    		buffer.append("Aggregate:"); //$NON-NLS-1$
-    		for (int i = 0; i < typedResult.length; i++) {
-			buffer.append(typedResult[i].getName()).append(':');
-		}
-		return buffer.toString();
-	}
-
-	/**
-     * Removes newly created working sets from the working set manager.
-     */
-    private void restoreAddedWorkingSets() {
-        IWorkingSetManager manager = WorkbenchPlugin.getDefault()
-                .getWorkingSetManager();
-        Iterator iterator = getAddedWorkingSets().iterator();
-
-        while (iterator.hasNext()) {
-            manager.removeWorkingSet(((IWorkingSet) iterator.next()));
-        }
-    }
-
-    /**
-     * Rolls back changes to working sets.
-     */
-    private void restoreChangedWorkingSets() {
-        Iterator iterator = getEditedWorkingSets().keySet().iterator();
-
-        while (iterator.hasNext()) {
-            IWorkingSet editedWorkingSet = (IWorkingSet) iterator.next();
-            IWorkingSet originalWorkingSet = (IWorkingSet) getEditedWorkingSets()
-                    .get(editedWorkingSet);
-
-            if (editedWorkingSet.getName().equals(originalWorkingSet.getName()) == false) {
-                editedWorkingSet.setName(originalWorkingSet.getName());
-            }
-            if (editedWorkingSet.getElements().equals(
-                    originalWorkingSet.getElements()) == false) {
-                editedWorkingSet.setElements(originalWorkingSet.getElements());
-            }
-        }
-    }
-
-    /**
-     * Adds back removed working sets to the working set manager.
-     */
-    private void restoreRemovedWorkingSets() {
-        IWorkingSetManager manager = WorkbenchPlugin.getDefault()
-                .getWorkingSetManager();
-        Iterator iterator = getRemovedWorkingSets().iterator();
-
-        while (iterator.hasNext()) {
-            manager.addWorkingSet(((IWorkingSet) iterator.next()));
-        }
-        iterator = getRemovedMRUWorkingSets().iterator();
-        while (iterator.hasNext()) {
-            manager.addRecentWorkingSet(((IWorkingSet) iterator.next()));
-        }
-    }
-
-    /**
-     * Implements IWorkingSetSelectionDialog.
-     *
-     * @see org.eclipse.ui.dialogs.IWorkingSetSelectionDialog#setSelection(IWorkingSet[])
-     */
-    public void setSelection(IWorkingSet[] workingSets) {
-        super.setSelection(workingSets);
-        setInitialSelections(workingSets == null ? new Object[0] : workingSets);
-    }
-
-	protected void availableWorkingSetsChanged() {
-		listViewer.setInput(PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets());
-		super.availableWorkingSetsChanged();
-	}
-
-	protected void selectAllSets() {
-		listViewer.setCheckedElements(PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets());
-		// implicitly select the third radio button
-		buttonWindowSet.setSelection(false);
-		buttonNoSet.setSelection(false);
-		buttonSelectedSets.setSelection(true);
-		updateButtonAvailability();
-	}
-
-	protected void deselectAllSets() {
-		listViewer.setCheckedElements(new Object[0]);
-		// implicitly select the third radio button
-		buttonWindowSet.setSelection(false);
-		buttonNoSet.setSelection(false);
-		buttonSelectedSets.setSelection(true);
-		updateButtonAvailability();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java
deleted file mode 100644
index 9f870f5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetTypePage.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *        IBM Corporation - initial API and implementation 
- * 		  Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should be
- *        activated and used by other components.
- *******************************************************************************/
-package org.eclipse.ui.internal.dialogs;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-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.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-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.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.WorkingSetDescriptor;
-
-/**
- * The working set type page is used in the new working set 
- * wizard to select from a list of plugin defined working set 
- * types.
- * 
- * @since 2.0
- */
-public class WorkingSetTypePage extends WizardPage {
-    private final static int SIZING_SELECTION_WIDGET_WIDTH = 50;
-
-    private final static int SIZING_SELECTION_WIDGET_HEIGHT = 200;
-
-    private TableViewer typesListViewer;
-
-	private WorkingSetDescriptor[] descriptors;
-
-    /**
-     * Creates a new instance of the receiver
-     */
-    public WorkingSetTypePage() {
-        this(WorkbenchPlugin.getDefault().getWorkingSetRegistry().getNewPageWorkingSetDescriptors());
-    }
-
-    /**
-	 * @param descriptors a set of working set descriptors which can be selected on the page
-	 */
-	public WorkingSetTypePage(WorkingSetDescriptor[] descriptors) {
-		super(
-				"workingSetTypeSelectionPage", WorkbenchMessages.WorkingSetTypePage_description, WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_WORKINGSET_WIZ)); //$NON-NLS-1$ 
-		this.descriptors = descriptors;
-	}
-
-    /**
-	 * Overrides method in WizardPage
-	 * 
-	 * @see org.eclipse.jface.wizard.IWizardPage#canFlipToNextPage()
-	 */
-    public boolean canFlipToNextPage() {
-        return isPageComplete();
-    }
-
-    /** 
-     * Implements IDialogPage
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite)
-     */
-    public void createControl(Composite parent) {
-        Font font = parent.getFont();
-        Composite composite = new Composite(parent, SWT.NULL);
-        composite.setLayout(new GridLayout());
-        composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-        setControl(composite);
-
-        PlatformUI.getWorkbench().getHelpSystem().setHelp(composite,
-				IWorkbenchHelpContextIds.WORKING_SET_TYPE_PAGE);
-        Label typesLabel = new Label(composite, SWT.NONE);
-        typesLabel.setText(WorkbenchMessages.WorkingSetTypePage_typesLabel);
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        typesLabel.setLayoutData(data);
-        typesLabel.setFont(font);
-
-        typesListViewer = new TableViewer(composite, SWT.BORDER | SWT.SINGLE);
-        data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
-        data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
-        typesListViewer.getTable().setLayoutData(data);
-        typesListViewer.getTable().setFont(font);
-        typesListViewer
-                .addSelectionChangedListener(new ISelectionChangedListener() {
-                    public void selectionChanged(SelectionChangedEvent event) {
-                        handleSelectionChanged();
-                    }
-                });
-        typesListViewer.addDoubleClickListener(new IDoubleClickListener() {
-            public void doubleClick(DoubleClickEvent event) {
-                handleDoubleClick();
-            }
-        });
-        typesListViewer.setContentProvider(new ArrayContentProvider());
-        typesListViewer.setLabelProvider(new LabelProvider() {
-        	private ResourceManager images = new LocalResourceManager(
-					JFaceResources.getResources());
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-			 */
-			public String getText(Object element) {
-				return ((WorkingSetDescriptor)element).getName();
-			}
-			
-			/* (non-Javadoc)
-			 * @see org.eclipse.jface.viewers.BaseLabelProvider#dispose()
-			 */
-			public void dispose() {
-				images.dispose();
-				super.dispose();
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
-			 */
-			public Image getImage(Object element) {
-				ImageDescriptor imageDescriptor = ((WorkingSetDescriptor) element)
-						.getIcon();
-				return imageDescriptor == null ? null : (Image) images
-						.get(imageDescriptor);
-			}
-		});
-        typesListViewer.setInput(descriptors);
-        setPageComplete(false);
-    }
-
-    /** 
-     * Overrides method in DialogPage
-     * 
-     * @see org.eclipse.jface.dialogs.IDialogPage#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-    }
-
-    /**
-     * Returns the page id of the selected working set type.
-     * 
-     * @return the page id of the selected working set type.
-     */
-    public String getSelection() {
-        WorkingSetDescriptor descriptor = getSelectedWorkingSet();
-        if (descriptor != null)
-        	return descriptor.getId();
-        
-        return null;
-    }
-
-	/**
-     * Return the selected working set.
-     *
-	 * @return the selected working set or <code>null</code>
-     * @since 3.4
-	 */
-	private WorkingSetDescriptor getSelectedWorkingSet() {
-		ISelection selection = typesListViewer.getSelection();
-        boolean hasSelection = selection != null
-                && selection.isEmpty() == false;
-
-        WorkingSetDescriptor descriptor = null;
-        if (hasSelection && selection instanceof IStructuredSelection) {
-            descriptor = (WorkingSetDescriptor) ((IStructuredSelection) selection)
-                    .getFirstElement();
-        }
-		return descriptor;
-	}
-
-    /**
-     * Called when a working set type is double clicked.
-     */
-    private void handleDoubleClick() {
-        handleSelectionChanged();
-        getContainer().showPage(getNextPage());
-    }
-
-    /**
-     * Called when the selection has changed.
-     */
-    private void handleSelectionChanged() {
-        ISelection selection = typesListViewer.getSelection();
-        boolean hasSelection = selection != null
-                && selection.isEmpty() == false;
-
-        WorkingSetDescriptor descriptor = getSelectedWorkingSet();
-		setDescription(descriptor == null ? "" : descriptor.getDescription()); //$NON-NLS-1$
-        
-        setPageComplete(hasSelection);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/AbstractDropTarget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/AbstractDropTarget.java
deleted file mode 100644
index c7c8d81..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/AbstractDropTarget.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- */
-public abstract class AbstractDropTarget implements IDropTarget {
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.dnd.IDropTarget#drop()
-     */
-    public abstract void drop();
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.dnd.IDropTarget#getCursor()
-     */
-    public abstract Cursor getCursor();
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.dnd.IDropTarget#getSnapRectangle()
-     */
-    public Rectangle getSnapRectangle() {
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/CompatibilityDragTarget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/CompatibilityDragTarget.java
deleted file mode 100644
index 921b3e9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/CompatibilityDragTarget.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Compatibility layer for the old-style drag-and-drop. Adapts an old-style
- * IPartDropListener into an IDragTarget.
- * 
- */
-public class CompatibilityDragTarget {
-
-    // Define width of part's "hot" border	
-    private final static int MARGIN = 30;
-
-    /**
-     * Returns the relative position of the given point (in display coordinates)
-     * with respect to the given control. Returns one of SWT.LEFT, SWT.RIGHT, SWT.CENTER, SWT.TOP, 
-     * or SWT.BOTTOM if the point is on the control or SWT.DEFAULT if the point is not on the control. 
-     * 
-     * @param control control to perform hit detection on
-     * @param toTest point to test, in display coordinates
-     * @return
-     */
-    public static int getRelativePosition(Control c, Point toTest) {
-        Point p = c.toControl(toTest);
-        Point e = c.getSize();
-
-        if (p.x > e.x || p.y > e.y || p.x < 0 || p.y < 0) {
-            return SWT.DEFAULT;
-        }
-
-        // first determine whether mouse position is in center of part
-        int hmargin = Math.min(e.x / 3, MARGIN);
-        int vmargin = Math.min(e.y / 3, MARGIN);
-
-        Rectangle inner = new Rectangle(hmargin, vmargin, e.x - (hmargin * 2),
-                e.y - (vmargin * 2));
-        if (inner.contains(p)) {
-            return SWT.CENTER;
-        } else {
-            return Geometry.getClosestSide(inner, p);
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragBorder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragBorder.java
deleted file mode 100644
index 4822a1e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragBorder.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.themes.ColorUtil;
-
-/**
- * Utility class that wraps a given control with a black 'border'. Moving the
- * border control will cause the given control to move to stay within its bounds.
- *  
- * @since 3.2
- *
- */
-public class DragBorder {
-	// Controls
-	private Composite clientControl = null;
-	private Control dragControl = null;
-	private Canvas border = null;
-
-	// Colors
-	private Color baseColor;
-	private Color hilightColor;
-	private boolean isHighlight;
-
-	/**
-	 * Construct a new DragBorder.
-	 * 
-	 * @param client The client window that the border must stay within
-	 * @param toDrag The control to be placed 'inside' the border
-	 */
-	public DragBorder(Composite client, Control toDrag, boolean provideFrame) {
-		clientControl = client;
-		dragControl = toDrag;
-		Point dragSize = toDrag.getSize();
-		
-		// Create a control large enough to 'contain' the dragged control
-		border = new Canvas(dragControl.getParent(), SWT.NONE);
-		border.setSize(dragSize.x+2, dragSize.y+2);
-		
-		// Use the SWT 'title' colors since they should always have a proper contrast
-		// and are 'related' (i.e. should look good together)
-		baseColor = border.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
-		RGB background  = border.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
-		RGB blended = ColorUtil.blend(baseColor.getRGB(), background);
-		hilightColor = new Color(border.getDisplay(), blended);
-		
-		// Ensure the border is visible and the control is 'above' it...
-		border.moveAbove(null);
-		dragControl.moveAbove(null);
-		
-		if (provideFrame) {
-			border.addPaintListener(new PaintListener() {
-				public void paintControl(PaintEvent e) {
-					if (isHighlight) {
-						e.gc.setForeground(hilightColor);
-					}
-					else {
-						e.gc.setForeground(baseColor);
-					}
-					
-					// Draw a rectangle as our 'border'
-					Rectangle bb = border.getBounds();
-					e.gc.drawRectangle(0,0,bb.width-1, bb.height-1);
-				}
-			});
-		}
-	}
-	
-    
-    /**
-     * Move the border (and its 'contained' control to a new position. The new
-     * position will be adjusted to lie entirely within the client area of the
-     * <code>clientControl</code>.
-     * 
-     * @param newPos The new position for the border
-     * @param alignment The location of the cursor relative to the border being dragged.
-     * Current implementation only recognizes SWT.TOP & SWT.BOTTOM (which implies SWT.LEFT)
-     * and SWT.CENTER (which centers teh dragged border on the cursor.
-     */
-    public void setLocation(Point newPos, int alignment) {
-		// Move the border but ensure that it is still inside the Client area
-    	if (alignment == SWT.CENTER) {
-    		Point size = border.getSize();
-    		border.setLocation(newPos.x - (size.x/2), newPos.y - (size.y/2));
-    	}
-    	else if (alignment == SWT.TOP) {
-    		border.setLocation(newPos.x, newPos.y);
-    	} else {
-			border.setLocation(newPos.x, newPos.y - border.getSize().y);
-		}
-    	
-    	// Force the control to remain inside the shell
-		Rectangle bb = border.getBounds();
-		Rectangle cr = clientControl.getClientArea();
-		Geometry.moveInside(bb,cr);
-		
-		// Ensure that the controls are the 'topmost' controls
-		border.moveAbove(null);
-		dragControl.moveAbove(null);
-		
-		// OK, now move the drag control and the border to their new locations
-		dragControl.setLocation(bb.x+1, bb.y+1);
-		border.setBounds(bb);
-    }
-
-	/**
-	 * Sets the hilight 'mode' for the control.
-	 * @param highlight true if the border should be drawn as 'hilighted'
-	 */
-	public void setHighlight(boolean highlight) {
-		isHighlight = highlight;
-		border.redraw();
-	}
-
-	/**
-	 * Dispose the controls owned by the border.
-	 */
-	public void dispose() {
-		hilightColor.dispose();
-		border.dispose();
-	}
-
-
-	/**
-	 * @return The bounds of the border's control.
-	 */
-	public Rectangle getBounds() {
-		return border.getBounds();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragUtil.java
deleted file mode 100644
index 3f54110..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/DragUtil.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tracker;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.DragCursors;
-
-/**
- * Provides the methods for attaching drag-and-drop listeners to SWT controls. 
- */
-public class DragUtil {
-    private static final String DROP_TARGET_ID = "org.eclipse.ui.internal.dnd.dropTarget"; //$NON-NLS-1$
-
-    /**
-     * The location where all drags will end. If this is non-null, then
-     * all user input is ignored in drag/drop. If null, we use user input
-     * to determine where objects should be dropped.
-     */
-    private static TestDropLocation forcedDropTarget = null;
-    
-    /**
-     * List of IDragOverListener
-     */
-    private static List defaultTargets = new ArrayList();
-
-    /**
-     * Sets the drop target for the given control. It is possible to add one or more 
-     * targets for a "null" control. This becomes a default target that is used if no
-     * other targets are found (for example, when dragging objects off the application
-     * window). 
-     * 
-     * @param control the control that should be treated as a drag target, or null
-     * to indicate the default target
-     * @param target the drag target to handle the given control
-     */
-    public static void addDragTarget(Control control, IDragOverListener target) {
-        if (control == null) {
-            defaultTargets.add(target);
-        } else {
-            List targetList = getTargetList(control);
-
-            if (targetList == null) {
-                targetList = new ArrayList(1);
-            }
-            targetList.add(target);
-            control.setData(DROP_TARGET_ID, targetList);
-        }
-    }
-
-    /**
-     * Return the list of 'IDragOverListener' elements associated with
-     * the given control. If there's a 'global' listener then always
-     * return it.
-     * 
-     * @param control
-     * @return
-     */
-    private static List getTargetList(Control control) {
-        List result = (List) control.getData(DROP_TARGET_ID);
-        return result;
-    }
-
-    /**
-     * Removes a drop target from the given control.
-     * 
-     * @param control
-     * @param target
-     */
-    public static void removeDragTarget(Control control,
-            IDragOverListener target) {
-        if (control == null) {
-            defaultTargets.remove(target);
-        } else {
-            List targetList = getTargetList(control);
-            if (targetList != null) {
-                targetList.remove(target);
-                if (targetList.isEmpty()) {
-                    control.setData(DROP_TARGET_ID, null);
-                }
-            }
-        }
-    }
-
-    /**
-     * Shorthand method. Returns the bounding rectangle for the given control, in
-     * display coordinates. Note that all 'Shell' controls are expected to be 'top level'
-     * so DO NOT do the origin offset for them.
-     * 
-     * @param draggedItem
-     * @param boundsControl
-     * @return
-     */
-    public static Rectangle getDisplayBounds(Control boundsControl) {
-        Control parent = boundsControl.getParent();
-        if (parent == null || boundsControl instanceof Shell) {
-            return boundsControl.getBounds();
-        }
-
-        return Geometry.toDisplay(parent, boundsControl.getBounds());
-    }
-
-    public static boolean performDrag(final Object draggedItem,
-            Rectangle sourceBounds, Point initialLocation, boolean allowSnapping) {
-
-        IDropTarget target = dragToTarget(draggedItem, sourceBounds,
-                initialLocation, allowSnapping);
-
-        if (target == null) {
-            return false;
-        }
-
-        target.drop();
-
-        // If the target can handle a 'finished' notification then send one
-        if (target!= null && target instanceof IDropTarget2) {
-        	((IDropTarget2)target).dragFinished(true);
-        }
-
-        return true;
-    }
-
-    /**
-     * Drags the given item to the given location (in display coordinates). This
-     * method is intended for use by test suites.
-     * 
-     * @param draggedItem object being dragged
-     * @param finalLocation location being dragged to
-     * @return true iff the drop was accepted
-     */
-    public static boolean dragTo(Display display, Object draggedItem,
-            Point finalLocation, Rectangle dragRectangle) {
-        Control currentControl = SwtUtil.findControl(display, finalLocation);
-
-        IDropTarget target = getDropTarget(currentControl, draggedItem,
-                finalLocation, dragRectangle);
-
-        if (target == null) {
-            return false;
-        }
-
-        target.drop();
-
-        return true;
-    }
-
-    /**
-     * Forces all drags to end at the given position (display coordinates). Intended
-     * for use by test suites. If this method is called, then all subsequent calls
-     * to performDrag will terminate immediately and behave as though the object were
-     * dragged to the given location. Calling this method with null cancels this 
-     * behavior and causes performDrag to behave normally. 
-     * 
-     * @param forcedLocation location where objects will be dropped (or null to
-     * cause drag/drop to behave normally).
-     */
-    public static void forceDropLocation(TestDropLocation forcedLocation) {
-        forcedDropTarget = forcedLocation;
-    }
-    
-    /**
-     * Drags the given item, given an initial bounding rectangle in display coordinates.
-     * Due to a quirk in the Tracker class, changing the tracking rectangle when using the
-     * keyboard will also cause the mouse cursor to move. Since "snapping" causes the tracking
-     * rectangle to change based on the position of the mouse cursor, it is impossible to do
-     * drag-and-drop with the keyboard when snapping is enabled.    
-     * 
-     * @param draggedItem object being dragged
-     * @param sourceBounds initial bounding rectangle for the dragged item
-     * @param initialLocation initial position of the mouse cursor
-     * @param allowSnapping true iff the rectangle should snap to the drop location. This must
-     * be false if the user might be doing drag-and-drop using the keyboard. 
-     *  
-     * @return
-     */
-    static IDropTarget dragToTarget(final Object draggedItem,
-            final Rectangle sourceBounds, final Point initialLocation,
-            final boolean allowSnapping) {
-        final Display display = Display.getCurrent();
-
-        // Testing...immediately 'drop' onto the test target
-        if (forcedDropTarget != null) {
-            Point location = forcedDropTarget.getLocation();
-
-            Control currentControl = SwtUtil.findControl(forcedDropTarget.getShells(), location);
-            return getDropTarget(currentControl, draggedItem, location,
-                    sourceBounds);
-        }
-
-        // Create a tracker.  This is just an XOR rect on the screen.
-        // As it moves we notify the drag listeners.
-        final Tracker tracker = new Tracker(display, SWT.NULL);
-        tracker.setStippled(true);
-
-        tracker.addListener(SWT.Move, new Listener() {
-            public void handleEvent(final Event event) {
-                display.syncExec(new Runnable() {
-                    public void run() {
-                    	// Get the curslor location as a point
-                        Point location = new Point(event.x, event.y);
-
-                        // Select a drop target; use the global one by default
-                    	IDropTarget target = null;
-                    		
-                        Control targetControl = display.getCursorControl();
-
-                        // Get the drop target for this location
-                        target = getDropTarget(targetControl,
-                                draggedItem, location,
-                                tracker.getRectangles()[0]);
-
-                    	// Set up the tracker feedback based on the target
-                        Rectangle snapTarget = null;
-                        if (target != null) {
-                            snapTarget = target.getSnapRectangle();
-
-                            tracker.setCursor(target.getCursor());
-                        } else {
-                            tracker.setCursor(DragCursors
-                                    .getCursor(DragCursors.INVALID));
-                        }
-
-                        // If snapping then reset the tracker's rectangle based on the current drop target 
-                        if (allowSnapping) {
-                            if (snapTarget == null) {
-                                snapTarget = new Rectangle(sourceBounds.x
-                                        + location.x - initialLocation.x,
-                                        sourceBounds.y + location.y
-                                                - initialLocation.y,
-                                        sourceBounds.width, sourceBounds.height);
-                            }
-
-                            // Try to prevent flicker: don't change the rectangles if they're already in
-                            // the right location
-                            Rectangle[] currentRectangles = tracker.getRectangles();
-
-                            if (!(currentRectangles.length == 1 && currentRectangles[0]
-                                    .equals(snapTarget))) {
-                                tracker.setRectangles(new Rectangle[] { snapTarget });
-                            }
-                        }
-                    }
-                });
-            }
-        });
-
-        // Setup...when the drag starts we might already be over a valid target, check this...
-        // If there is a 'global' target then skip the check
-        IDropTarget target = null;
-        Control startControl = display.getCursorControl();
-        
-        if (startControl != null && allowSnapping) {
-            target = getDropTarget(startControl,
-                draggedItem, initialLocation,
-                sourceBounds);
-        }
-
-        // Set up an initial tracker rectangle
-        Rectangle startRect = sourceBounds;
-        if (target != null) {
-            Rectangle rect = target.getSnapRectangle();
-            
-            if (rect != null) {
-                startRect = rect;
-            }
-
-            tracker.setCursor(target.getCursor());
-        } 
-        
-        if (startRect != null) {
-            tracker.setRectangles(new Rectangle[] { Geometry.copy(startRect)});
-        }
-
-        // Tracking Loop...tracking is preformed on the 'SWT.Move' listener registered
-        // against the tracker.
-        
-        // HACK:
-        // Some control needs to capture the mouse during the drag or other 
-        // controls will interfere with the cursor
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-        if (shell != null) {
-            shell.setCapture(true);
-        }
-
-        // Run tracker until mouse up occurs or escape key pressed.
-        boolean trackingOk = tracker.open();
-
-        // HACK:
-        // Release the mouse now
-        if (shell != null) {
-            shell.setCapture(false);
-        }
-
-        // Done tracking...
-        
-        // Get the current drop target
-        IDropTarget dropTarget = null;
-        Point finalLocation = display.getCursorLocation();
-        Control targetControl = display.getCursorControl();
-        dropTarget = getDropTarget(targetControl, draggedItem,
-                finalLocation, tracker.getRectangles()[0]);
-
-        // Cleanup...
-        tracker.dispose();
-        
-        // if we're going to perform a 'drop' then delay the issuing of the 'finished'
-        // callback until after it's done...
-        if (trackingOk) {
-        	return dropTarget;
-        }
-        else if (dropTarget!= null && dropTarget instanceof IDropTarget2) {
-            // If the target can handle a 'finished' notification then send one
-        	((IDropTarget2)dropTarget).dragFinished(false);
-        }
-        
-        return null;
-    }
-    
-    /**
-     * Given a list of IDragOverListeners and a description of what is being dragged, it returns
-     * a IDropTarget for the current drop.
-     * 
-     * @param toSearch
-     * @param mostSpecificControl
-     * @param draggedObject
-     * @param position
-     * @param dragRectangle
-     * @return
-     */
-    private static IDropTarget getDropTarget(List toSearch,
-            Control mostSpecificControl, Object draggedObject, Point position,
-            Rectangle dragRectangle) {
-        if (toSearch == null) {
-            return null;
-        }
-
-        Iterator iter = toSearch.iterator();
-        while (iter.hasNext()) {
-            IDragOverListener next = (IDragOverListener) iter.next();
-
-            IDropTarget dropTarget = next.drag(mostSpecificControl,
-                    draggedObject, position, dragRectangle);
-
-            if (dropTarget != null) {
-                return dropTarget;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the drag target for the given control or null if none. 
-     * 
-     * @param toSearch
-     * @param e
-     * @return
-     */
-    public static IDropTarget getDropTarget(Control toSearch,
-            Object draggedObject, Point position, Rectangle dragRectangle) {
-    	// Search for a listener by walking the control's parent hierarchy
-        for (Control current = toSearch; current != null; current = current
-                .getParent()) {
-            IDropTarget dropTarget = getDropTarget(getTargetList(current),
-                    toSearch, draggedObject, position, dragRectangle);
-
-            if (dropTarget != null) {
-                return dropTarget;
-            }
-
-            // Don't look to parent shells for drop targets
-            if (current instanceof Shell) {
-                break;
-            }
-        }
-
-        // No controls could handle this event -- check for default targets
-        return getDropTarget(defaultTargets, toSearch, draggedObject, position,
-                dragRectangle);
-    }
-
-    /**
-     * Returns the location of the given event, in display coordinates
-     * @return
-     */
-    public static Point getEventLoc(Event event) {
-        Control ctrl = (Control) event.widget;
-        return ctrl.toDisplay(new Point(event.x, event.y));
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDragOverListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDragOverListener.java
deleted file mode 100644
index f612bb3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDragOverListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Implementers of this interface will receive notifications when objects are dragged over
- * a particular SWT control. 
- */
-public interface IDragOverListener {
-
-    /**
-     * Notifies the receiver that the given object has been dragged over
-     * the given position. Returns a drop target if the object may be
-     * dropped in this position. Returns null otherwise.
-     * 
-     * @param draggedObject object being dragged over this location
-     * @param position location of the cursor
-     * @param dragRectangle current drag rectangle (may be an empty rectangle if none)
-     * @return a valid drop target or null if none
-     */
-    IDropTarget drag(Control currentControl, Object draggedObject,
-            Point position, Rectangle dragRectangle);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget.java
deleted file mode 100644
index d8f9148..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- * This interface is used to drop objects. It knows how to drop a particular object
- * in a particular location. IDropTargets are typically created by IDragOverListeners, and
- * it is the job of the IDragOverListener to supply the drop target with information about 
- * the object currently being dragged.
- * 
- * @see org.eclipse.ui.internal.dnd.IDragOverListener
- */
-public interface IDropTarget {
-
-    /**
-     * Drops the object in this position
-     */
-    void drop();
-
-    /**
-     * Returns a cursor describing this drop operation
-     * 
-     * @return a cursor describing this drop operation
-     */
-    Cursor getCursor();
-
-    /**
-     * Returns a rectangle (screen coordinates) describing the target location
-     * for this drop operation.
-     * 
-     * @return a snap rectangle or null if this drop target does not have a specific snap
-     * location.
-     */
-    Rectangle getSnapRectangle();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget2.java
deleted file mode 100644
index b7526f0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/IDropTarget2.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-/**
- * This interface allows a particular drop target to be informed that
- * the drag operation was cancelled. This allows the target to clean
- * up any extended drag feedback.
- * 
- * @since 3.2
- *
- */
-public interface IDropTarget2 extends IDropTarget {
-	/**
-	 * This is called whenever a drag operation is cancelled
-	 */
-	public void dragFinished(boolean dropPerformed);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/InsertCaret.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/InsertCaret.java
deleted file mode 100644
index 5e758ca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/InsertCaret.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.themes.ColorUtil;
-
-/**
- * This class provides 'insertion' feedback to the User. It can be used to draw a
- * 'bracket' based on the trim area's rectangle.
- *
- * @since 3.2
- */
-public class InsertCaret {
-	// Constants
-	private static final int width = 6; // the handle's 'thickness'
-	private static final int pctInset = 10; // The percentage of the area left at each 'end'
-
-	// Control info
-	private Canvas caretControl;
-	private Canvas end1;
-	private Canvas end2;
-	
-	// Colors
-	private Color baseColor;
-	private Color hilightColor;
-	private boolean isHighlight;
-	
-	/**
-	 * Creates an affordance to indicate that the given trim area is a valid location for the
-	 * trim being dragged.
-	 * 
-	 * @param windowComposite The window to create the affordance as a child of
-	 * @param trimRect The rectangle to show the affordance for
-	 * @param swtSide The 'side' that the rectangle is on
-	 * @param threshold The amount to offfset the affordance by
-	 */
-	public InsertCaret(Composite parent, Rectangle trimRect, int swtSide, int threshold) {
-		// Use the SWT 'title' colors since they should always have a proper contrast
-		// and are 'related' (i.e. should look good together)
-		baseColor = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
-		RGB background  = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
-		RGB blended = ColorUtil.blend(baseColor.getRGB(), background);
-		hilightColor = new Color(parent.getDisplay(), blended);
-
-		//Create the caret control
-		createControl(parent, trimRect, swtSide, threshold);
-	}
-
-	/**
-	 * Creates a control to show the 'area valid' affordance. The current implementation creates a
-	 * simple rect half the length of the rect, centered and offset by the 'threshold' value.
-	 * 
-	 * @param parent The control to used as the parent of the affordance control
-	 * @param trimRect The trim rectangle
-	 * @param swtSide The SWT side that the trim is on
-	 * @param threshold The offset value
-	 */
-	private void createControl(Composite parent, Rectangle trimRect, int swtSide, int threshold) {
-		int hDelta = trimRect.width/pctInset;
-		int vDelta = trimRect.height/pctInset;
-		caretControl = new Canvas (parent.getShell(), SWT.BORDER);
-		
-		end1 = new Canvas (parent.getShell(), SWT.BORDER);
-		end1.setSize(width, width);
-		end2 = new Canvas (parent.getShell(), SWT.BORDER);
-		end2.setSize(width, width);
-		
-		Rectangle bb;
-		switch (swtSide) {
-		case SWT.TOP:
-			caretControl.setSize(trimRect.width-(2*hDelta), width);
-			caretControl.setLocation(trimRect.x + hDelta, trimRect.y + trimRect.height + threshold);
-			bb = caretControl.getBounds();
-			end1.setLocation(bb.x, bb.y-width);
-			end2.setLocation((bb.x+bb.width)-width, bb.y-width);
-			break;
-		case SWT.BOTTOM:
-			caretControl.setSize(trimRect.width-(2*hDelta), width);
-			caretControl.setLocation(trimRect.x + hDelta, trimRect.y - threshold); 
-			bb = caretControl.getBounds();
-			end1.setLocation(bb.x, bb.y+width);
-			end2.setLocation((bb.x+bb.width)-width, bb.y+width);
-			break;
-		case SWT.LEFT:
-			caretControl.setSize(width, trimRect.height -(2*vDelta));
-			caretControl.setLocation(trimRect.x + trimRect.width + threshold,
-									trimRect.y + vDelta); 
-			bb = caretControl.getBounds();
-			end1.setLocation(bb.x-bb.width, bb.y);
-			end2.setLocation(bb.x-bb.width, (bb.y+bb.height)-width);
-			break;
-		case SWT.RIGHT:
-			caretControl.setSize(width, trimRect.height -(2*vDelta));
-			caretControl.setLocation(trimRect.x - threshold,
-									trimRect.y + vDelta); 
-			bb = caretControl.getBounds();
-			end1.setLocation(bb.x+bb.width, bb.y);
-			end2.setLocation(bb.x+bb.width, (bb.y+bb.height)-width);
-			break;
-		}
-		
-		// Initially create as not hilighted
-		setHighlight(false);
-		caretControl.moveAbove(null);
-		end1.moveAbove(null);
-		end2.moveAbove(null);
-	}
-
-	/**
-	 * Sets the hilight 'mode' for the control.
-	 * @param highlight true if the caret should be drawn as 'hilighted'
-	 */
-	public void setHighlight(boolean highlight) {
-		isHighlight = highlight;
-
-		// if we're displaying as a 'bar' then set the control's background to the
-		// appropriate value
-		if (isHighlight) {
-			caretControl.setBackground(hilightColor);
-			end1.setBackground(hilightColor);
-			end2.setBackground(hilightColor);
-		}
-		else {
-			caretControl.setBackground(baseColor);
-			end1.setBackground(baseColor);
-			end2.setBackground(baseColor);
-		}
-	}
-
-	public void dispose() {
-		// Dispose the control's resources (we don't have to dispose the
-		// 'bacseColor' because it's a system color
-		hilightColor.dispose();
-		
-		caretControl.dispose();
-		end1.dispose();
-		end2.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/SwtUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/SwtUtil.java
deleted file mode 100644
index aca9126..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/SwtUtil.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Monitor;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Contains static methods for manipulating SWT controls
- * 
- * @since 3.0
- */
-public class SwtUtil {
-
-    private SwtUtil() {
-
-    }
-
-    /**
-     * Returns true if the given control is null or has been disposed
-     * 
-     * @param toTest the control to test
-     * @return false if it is safe to invoke methods on the given control
-     */
-    public static boolean isDisposed(Control toTest) {
-        return toTest == null || toTest.isDisposed();
-    }
-
-    /**
-     * Returns the control that is covering the given control, or null if none.
-     * 
-     * @param toTest control to test
-     * @return a control that obscures the test control or null if none
-     */
-    public static Control controlThatCovers(Control toTest) {
-        return controlThatCovers(toTest, DragUtil.getDisplayBounds(toTest));
-    }
-    
-    private static Control controlThatCovers(Control toTest, Rectangle testRegion) {
-        Composite parent = toTest.getParent();
-        
-        if (parent == null || toTest instanceof Shell) {
-            return null;
-        }
-       
-        Control[] children = parent.getChildren();
-        for (int i = 0; i < children.length; i++) {
-            Control control = children[i];
-            
-            if (control == toTest) {
-                break;
-            }
-            
-            if (!control.isVisible()) {
-                continue;
-            }
-            
-            Rectangle nextBounds = DragUtil.getDisplayBounds(control);
-            
-            if (nextBounds.intersects(testRegion)) {
-                return control;
-            }
-        }
-        
-        return controlThatCovers(parent, testRegion);
-    }
-    
-    /**
-     * Determines if one control is a child of another. Returns true iff the second
-     * argument is a child of the first (or the same object).
-     * 
-     * @param potentialParent
-     * @param childToTest
-     * @return
-     */
-    public static boolean isChild(Control potentialParent, Control childToTest) {
-        if (childToTest == null) {
-            return false;
-        }
-
-        if (childToTest == potentialParent) {
-            return true;
-        }
-
-        return isChild(potentialParent, childToTest.getParent());
-    }
-    
-    public static boolean isFocusAncestor(Control potentialParent) {
-        Assert.isNotNull(potentialParent);
-        Control focusControl = Display.getCurrent().getFocusControl();
-        if (focusControl == null) {
-            return false;
-        }
-        return isChild(potentialParent, focusControl);
-    }
-
-    /**
-     * Finds and returns the most specific SWT control at the given location. 
-     * (Note: this does a DFS on the SWT widget hierarchy, which is slow).
-     * 
-     * @param displayToSearch
-     * @param locationToFind
-     * @return
-     */
-    public static Control findControl(Display displayToSearch,
-            Point locationToFind) {
-        Shell[] shells = displayToSearch.getShells();
-
-        return findControl(shells, locationToFind);
-    }
-
-    /**
-     * Searches the given list of controls for a control containing the given point.
-     * If the array contains any composites, those composites will be recursively
-     * searched to find the most specific child that contains the point.
-     * 
-     * @param toSearch an array of composites 
-     * @param locationToFind a point (in display coordinates)
-     * @return the most specific Control that overlaps the given point, or null if none
-     */
-    public static Control findControl(Control[] toSearch, Point locationToFind) {
-        for (int idx = toSearch.length - 1; idx >= 0; idx--) {
-            Control next = toSearch[idx];
-
-            if (!next.isDisposed() && next.isVisible()) {
-
-                Rectangle bounds = DragUtil.getDisplayBounds(next);
-
-                if (bounds.contains(locationToFind)) {
-                    if (next instanceof Composite) {
-                        Control result = findControl((Composite) next,
-                                locationToFind);
-
-                        if (result != null) {
-                            return result;
-                        }
-                    }
-
-                    return next;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    public static Control[] getAncestors(Control theControl) {
-        return getAncestors(theControl, 1);
-    }
-    
-    private static Control[] getAncestors(Control theControl, int children) {
-        Control[] result;
-        
-        if (theControl.getParent() == null) {
-            result = new Control[children]; 
-        } else {
-            result = getAncestors(theControl.getParent(), children + 1);
-        }
-        
-        result[result.length - children] = theControl;
-        
-        return result;
-    }
-    
-    public static Control findCommonAncestor(Control control1, Control control2) {
-        Control[] control1Ancestors = getAncestors(control1);
-        Control[] control2Ancestors = getAncestors(control2);
-        
-        Control mostSpecific = null;
-        
-        for (int idx = 0; idx < Math.min(control1Ancestors.length, control2Ancestors.length); idx++) {
-            Control control1Ancestor = control1Ancestors[idx];
-            if (control1Ancestor == control2Ancestors[idx]) {
-                mostSpecific = control1Ancestor;
-            } else {
-                break;
-            }
-        }
-        
-        return mostSpecific;
-    }
-    
-    /**
-     * Finds the control in the given location
-     * 
-     * @param toSearch
-     * @param locationToFind location (in display coordinates) 
-     * @return
-     */
-    public static Control findControl(Composite toSearch, Point locationToFind) {
-        Control[] children = toSearch.getChildren();
-
-        return findControl(children, locationToFind);
-    }
-
-    /**
-     * 
-     * Returns true iff the given rectangle is located in the client area of any
-     * monitor.
-     * 
-     * @param someRectangle a rectangle in display coordinates (not null)
-     * @return true iff the given point can be seen on any monitor
-     */
-    public static boolean intersectsAnyMonitor(Display display,
-            Rectangle someRectangle) {
-        Monitor[] monitors = display.getMonitors();
-    
-        for (int idx = 0; idx < monitors.length; idx++) {
-            Monitor mon = monitors[idx];
-    
-            if (mon.getClientArea().intersects(someRectangle)) {
-                return true;
-            }
-        }
-    
-        return false;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/TestDropLocation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/TestDropLocation.java
deleted file mode 100644
index e5fd2c0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dnd/TestDropLocation.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.dnd;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This is an interface intended for use in test suites. Objects can implement
- * this interface to force any dragged object to be dropped at a particular
- * location.
- * 
- * @since 3.0
- */
-public interface TestDropLocation {
-
-    /**
-     * Location where the object should be dropped, in display coordinates
-     * 
-     * @return a location in display coordinates
-     */
-    public Point getLocation();
-    
-    /**
-     * The drop code will pretend that only the given shells are open,
-     * and that they have the specified Z-order.
-     *
-     * @return the shells to check for drop targets, from bottom to top.
-     */
-    public Shell[] getShells();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/ActivePartExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/ActivePartExpression.java
deleted file mode 100644
index ef9d18a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/ActivePartExpression.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * <p>
- * An expression that is bound to a particular part instance.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class ActivePartExpression extends Expression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = ActivePartExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The part that must be active for this expression to evaluate to
-	 * <code>true</code>. This value is never <code>null</code>.
-	 */
-	private final IWorkbenchPart activePart;
-
-	/**
-	 * Constructs a new instance of <code>ActivePartExpression</code>
-	 * 
-	 * @param activePart
-	 *            The part to match with the active part; may be
-	 *            <code>null</code>
-	 */
-	public ActivePartExpression(final IWorkbenchPart activePart) {
-		if (activePart == null) {
-			throw new NullPointerException("The active part must not be null"); //$NON-NLS-1$
-		}
-		this.activePart = activePart;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		info.addVariableNameAccess(ISources.ACTIVE_PART_NAME);
-	}
-
-	protected final int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(activePart);
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof ActivePartExpression) {
-			final ActivePartExpression that = (ActivePartExpression) object;
-			return equals(this.activePart, that.activePart);
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context) {
-		final Object variable = context.getVariable(ISources.ACTIVE_PART_NAME);
-		if (equals(activePart, variable)) {
-			return EvaluationResult.TRUE;
-		}
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("ActivePartExpression("); //$NON-NLS-1$
-		buffer.append(activePart);
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java
deleted file mode 100644
index 29b23e1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AlwaysEnabledExpression.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-/**
- * An expression that simply returns <code>true</code> at all times. A shared
- * instance of this expression is provided.
- * 
- * @since 3.3
- * 
- */
-public final class AlwaysEnabledExpression extends Expression {
-
-	public static final AlwaysEnabledExpression INSTANCE = new AlwaysEnabledExpression();
-
-
-	/**
-	 * Not to be instantiated
-	 */
-	private AlwaysEnabledExpression() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.expressions.Expression#evaluate(org.eclipse.core.expressions.IEvaluationContext)
-	 */
-	public EvaluationResult evaluate(IEvaluationContext context) {
-		return EvaluationResult.TRUE;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java
deleted file mode 100644
index 76c7866..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.expressions;
-
-import java.util.Iterator;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Copied from org.eclipse.core.internal.expressions.
- */
-public final class AndExpression extends CompositeExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = AndExpression.class.getName()
-			.hashCode();
-
-	protected final int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(fExpressions);
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof AndExpression) {
-			final AndExpression that = (AndExpression) object;
-			return equals(this.fExpressions, that.fExpressions);
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		return evaluateAnd(context);
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("AndExpression("); //$NON-NLS-1$
-		if (fExpressions != null) {
-			final Iterator itr = fExpressions.iterator();
-			while (itr.hasNext()) {
-				final Expression expression = (Expression) itr.next();
-				buffer.append(expression.toString());
-				if (itr.hasNext()) {
-					buffer.append(',');
-				}
-			}
-		}
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java
deleted file mode 100644
index fcdacc5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.expressions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Copied from org.eclipse.core.internal.expressions.
- */
-public abstract class CompositeExpression extends Expression {
-
-	private static final Expression[] EMPTY_ARRAY = new Expression[0];
-
-	protected List fExpressions;
-
-	public void add(Expression expression) {
-		if (fExpressions == null) {
-			fExpressions = new ArrayList(2);
-		}
-		fExpressions.add(expression);
-	}
-
-	public Expression[] getChildren() {
-		if (fExpressions == null) {
-			return EMPTY_ARRAY;
-		}
-		return (Expression[]) fExpressions.toArray(new Expression[fExpressions
-				.size()]);
-	}
-
-	protected EvaluationResult evaluateAnd(IEvaluationContext scope)
-			throws CoreException {
-		if (fExpressions == null) {
-			return EvaluationResult.TRUE;
-		}
-		EvaluationResult result = EvaluationResult.TRUE;
-		for (Iterator iter = fExpressions.iterator(); iter.hasNext();) {
-			Expression expression = (Expression) iter.next();
-			result = result.and(expression.evaluate(scope));
-			// keep iterating even if we have a not loaded found. It can be
-			// that we find a false which will result in a better result.
-			if (result == EvaluationResult.FALSE) {
-				return result;
-			}
-		}
-		return result;
-	}
-
-	protected EvaluationResult evaluateOr(IEvaluationContext scope)
-			throws CoreException {
-		if (fExpressions == null) {
-			return EvaluationResult.TRUE;
-		}
-		EvaluationResult result = EvaluationResult.FALSE;
-		for (Iterator iter = fExpressions.iterator(); iter.hasNext();) {
-			Expression expression = (Expression) iter.next();
-			result = result.or(expression.evaluate(scope));
-			if (result == EvaluationResult.TRUE) {
-				return result;
-			}
-		}
-		return result;
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		if (fExpressions == null) {
-			return;
-		}
-		for (Iterator iter = fExpressions.iterator(); iter.hasNext();) {
-			Expression expression = (Expression) iter.next();
-			expression.collectExpressionInfo(info);
-		}
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionExpressionWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionExpressionWrapper.java
deleted file mode 100644
index f1e3fae..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionExpressionWrapper.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.ActionExpression;
-
-/**
- * <p>
- * This wrappers the old {@link ActionExpression} class so that it can
- * communicate via the {@link Expression} contract.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacyActionExpressionWrapper extends
-		WorkbenchWindowExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyActionExpressionWrapper.class
-			.getName().hashCode();
-
-	/**
-	 * The legacy action expression being wrapped; never <code>null</code>.
-	 */
-	private final ActionExpression expression;
-
-	/**
-	 * Constructs a new instance of {@link LegacyActionExpressionWrapper}.
-	 * 
-	 * @param expression
-	 *            The expression to wrap; must not be <code>null</code>.
-	 * @param window
-	 *            The workbench window which must be active for this expression
-	 *            to evaluate to <code>true</code>; may be <code>null</code>
-	 *            if the window should be disregarded.
-	 */
-	public LegacyActionExpressionWrapper(final ActionExpression expression,
-			final IWorkbenchWindow window) {
-		super(window);
-
-		if (expression == null) {
-			throw new NullPointerException(
-					"The action expression cannot be null"); //$NON-NLS-1$
-		}
-		this.expression = expression;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		super.collectExpressionInfo(info);
-		info.markDefaultVariableAccessed();
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(getWindow());
-		hashCode = hashCode * HASH_FACTOR + hashCode(expression);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyActionExpressionWrapper) {
-			final LegacyActionExpressionWrapper that = (LegacyActionExpressionWrapper) object;
-			return equals(this.expression, that.expression)
-					&& equals(this.getWindow(), that.getWindow());
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		final EvaluationResult result = super.evaluate(context);
-		if (result == EvaluationResult.FALSE) {
-			return result;
-		}
-
-		final Object defaultVariable = context
-				.getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		if (defaultVariable instanceof IStructuredSelection) {
-			final IStructuredSelection selection = (IStructuredSelection) defaultVariable;
-			if (expression.isEnabledFor(selection)) {
-				return EvaluationResult.TRUE;
-			}
-		} else if (expression.isEnabledFor(defaultVariable)) {
-			return EvaluationResult.TRUE;
-		}
-
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("LegacyActionExpressionWrapper("); //$NON-NLS-1$
-		buffer.append(expression);
-		buffer.append(',');
-		buffer.append(getWindow());
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java
deleted file mode 100644
index abc022a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyActionSetExpression.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-
-/**
- * <p>
- * An expression that evaluates whether a particular action set is active.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacyActionSetExpression extends WorkbenchWindowExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyActionSetExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The identifier of the action set that must be active for this expression
-	 * to evaluate to <code>true</code>. This value is never
-	 * <code>null</code>.
-	 */
-	private final String actionSetId;
-
-	/**
-	 * Constructs a new instance of {@link LegacyActionSetExpression}.
-	 * 
-	 * @param actionSetId
-	 *            The identifier of the action set that must be active for this
-	 *            expression to evaluate to <code>true</code>; must not be
-	 *            <code>null</code>.
-	 * @param window
-	 *            The workbench window in which this handler should be active.
-	 *            This avoids conflicts between handlers from different windows.
-	 *            This should not be <code>null</code>.
-	 */
-	public LegacyActionSetExpression(final String actionSetId,
-			final IWorkbenchWindow window) {
-		super(window);
-		if (actionSetId == null) {
-			throw new NullPointerException(
-					"The action set identifier cannot be null"); //$NON-NLS-1$
-		}
-		this.actionSetId = actionSetId;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		super.collectExpressionInfo(info);
-		info.addVariableNameAccess(ISources.ACTIVE_ACTION_SETS_NAME);
-	}
-
-	protected final int computeHhashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(getWindow());
-		hashCode = hashCode * HASH_FACTOR + hashCode(actionSetId);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyActionSetExpression) {
-			final LegacyActionSetExpression that = (LegacyActionSetExpression) object;
-			return equals(this.actionSetId, that.actionSetId)
-					&& equals(this.getWindow(), that.getWindow());
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		final EvaluationResult result = super.evaluate(context);
-		if (result == EvaluationResult.FALSE) {
-			return result;
-		}
-
-		// Check the action sets.
-		final Object variable = context
-				.getVariable(ISources.ACTIVE_ACTION_SETS_NAME);
-		if (variable instanceof IActionSetDescriptor[]) {
-			final IActionSetDescriptor[] descriptors = (IActionSetDescriptor[]) variable;
-			for (int i = 0; i < descriptors.length; i++) {
-				final IActionSetDescriptor descriptor = descriptors[i];
-				final String currentId = descriptor.getId();
-				if (actionSetId.equals(currentId)) {
-					return EvaluationResult.TRUE;
-				}
-			}
-		}
-
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("ActionSetExpression("); //$NON-NLS-1$
-		buffer.append(actionSetId);
-		buffer.append(',');
-		buffer.append(getWindow());
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java
deleted file mode 100644
index c1a7c59..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorActionBarExpression.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.internal.services.SourcePriorityNameMapping;
-
-/**
- * <p>
- * An expression representing the <code>part id</code> of the legacy editor
- * action bar contribution.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public class LegacyEditorActionBarExpression extends Expression {
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyEditorActionBarExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The identifier for the editor that must be active for this expression to
-	 * evaluate to <code>true</code>. This value is never <code>null</code>.
-	 */
-	private final String activeEditorId;
-
-	/**
-	 * Constructs a new instance of <code>LegacyEditorActionBarExpression</code>
-	 * 
-	 * @param editorId
-	 *            The identifier of the editor to match with the active editor;
-	 *            must not be <code>null</code>
-	 */
-	public LegacyEditorActionBarExpression(final String editorId) {
-
-		if (editorId == null) {
-			throw new IllegalArgumentException(
-					"The targetId for an editor contribution must not be null"); //$NON-NLS-1$
-		}
-		activeEditorId = editorId;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		info.addVariableNameAccess(ISources.ACTIVE_PART_ID_NAME);
-		info
-				.addVariableNameAccess(SourcePriorityNameMapping.LEGACY_LEGACY_NAME);
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(activeEditorId);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyEditorActionBarExpression) {
-			final LegacyEditorActionBarExpression that = (LegacyEditorActionBarExpression) object;
-			return activeEditorId.equals(that.activeEditorId);
-		}
-
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.expressions.Expression#evaluate(org.eclipse.core.expressions.IEvaluationContext)
-	 */
-	public final EvaluationResult evaluate(final IEvaluationContext context) {
-		final Object variable = context
-				.getVariable(ISources.ACTIVE_PART_ID_NAME);
-		if (equals(activeEditorId, variable)) {
-			return EvaluationResult.TRUE;
-		}
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("LegacyEditorActionBarExpression("); //$NON-NLS-1$
-		buffer.append(activeEditorId);
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java
deleted file mode 100644
index f41733b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyEditorContributionExpression.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * <p>
- * An expression representing the <code>targetId</code> of the legacy editor
- * contributions.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacyEditorContributionExpression extends
-		WorkbenchWindowExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyEditorContributionExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The identifier for the editor that must be active for this expression to
-	 * evaluate to <code>true</code>. This value is never <code>null</code>.
-	 */
-	private final String activeEditorId;
-
-	/**
-	 * Constructs a new instance of
-	 * <code>LegacyEditorContributionExpression</code>
-	 * 
-	 * @param activeEditorId
-	 *            The identifier of the editor to match with the active editor;
-	 *            may be <code>null</code>
-	 * @param window
-	 *            The workbench window in which this handler should be active.
-	 *            This value is never <code>null</code>.
-	 */
-	public LegacyEditorContributionExpression(final String activeEditorId,
-			final IWorkbenchWindow window) {
-		super(window);
-
-		if (activeEditorId == null) {
-			throw new NullPointerException(
-					"The targetId for an editor contribution must not be null"); //$NON-NLS-1$
-		}
-		this.activeEditorId = activeEditorId;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		super.collectExpressionInfo(info);
-		info.addVariableNameAccess(ISources.ACTIVE_PART_ID_NAME);
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(getWindow());
-		hashCode = hashCode * HASH_FACTOR + hashCode(activeEditorId);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyEditorContributionExpression) {
-			final LegacyEditorContributionExpression that = (LegacyEditorContributionExpression) object;
-			return equals(this.activeEditorId, that.activeEditorId)
-					&& equals(this.getWindow(), that.getWindow());
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		final EvaluationResult result = super.evaluate(context);
-		if (result == EvaluationResult.FALSE) {
-			return result;
-		}
-
-		final Object variable = context
-				.getVariable(ISources.ACTIVE_PART_ID_NAME);
-		if (equals(activeEditorId, variable)) {
-			return EvaluationResult.TRUE;
-		}
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("LegacyEditorContributionExpression("); //$NON-NLS-1$
-		buffer.append(activeEditorId);
-		buffer.append(',');
-		buffer.append(getWindow());
-		buffer.append(')');
-		return buffer.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java
deleted file mode 100644
index f7da038..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacySelectionEnablerWrapper.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.SelectionEnabler;
-
-/**
- * <p>
- * An expression wrapper for the legacy {@link SelectionEnabler}. This emulates
- * an {@link Expression} using an instance of <code>SelectionEnabler</code>.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacySelectionEnablerWrapper extends
-		WorkbenchWindowExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacySelectionEnablerWrapper.class
-			.getName().hashCode();
-
-	/**
-	 * The enabler for this expression; never <code>null</code>.
-	 */
-	private final SelectionEnabler enabler;
-
-	/**
-	 * Constructs a new instance of <code>SelectionEnablerExpression</code>.
-	 * 
-	 * @param enabler
-	 *            The enabler; must not be <code>null</code>.
-	 * @param window
-	 *            The workbench window which must be active for this expression
-	 *            to evaluate to <code>true</code>; may be <code>null</code>
-	 *            if the window should be disregarded.
-	 */
-	public LegacySelectionEnablerWrapper(final SelectionEnabler enabler,
-			final IWorkbenchWindow window) {
-		super(window);
-
-		if (enabler == null) {
-			throw new NullPointerException("There is no enabler"); //$NON-NLS-1$
-		}
-		this.enabler = enabler;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		super.collectExpressionInfo(info);
-		info.markDefaultVariableAccessed();
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(getWindow());
-		hashCode = hashCode * HASH_FACTOR + hashCode(enabler);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacySelectionEnablerWrapper) {
-			final LegacySelectionEnablerWrapper that = (LegacySelectionEnablerWrapper) object;
-			return equals(this.enabler, that.enabler)
-					&& equals(this.getWindow(), that.getWindow());
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		final EvaluationResult result = super.evaluate(context);
-		if (result == EvaluationResult.FALSE) {
-			return result;
-		}
-
-		final Object defaultVariable = context
-				.getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		if (defaultVariable instanceof ISelection) {
-			final ISelection selection = (ISelection) defaultVariable;
-			if (enabler.isEnabledForSelection(selection)) {
-				return EvaluationResult.TRUE;
-			}
-		}
-
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("LegacySelectionEnablerWrapper("); //$NON-NLS-1$
-		buffer.append(enabler);
-		buffer.append(',');
-		buffer.append(getWindow());
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java
deleted file mode 100644
index 929c2ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewContributionExpression.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * <p>
- * An expression representing the <code>targetId</code> of the legacy view
- * contributions.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacyViewContributionExpression extends
-		WorkbenchWindowExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyViewContributionExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The identifier for the part that must be active for this expression to
-	 * evaluate to <code>true</code>. This value is never <code>null</code>.
-	 */
-	private final String activePartId;
-
-	/**
-	 * Constructs a new instance of
-	 * <code>LegacyViewContributionExpression</code>
-	 * 
-	 * @param activePartId
-	 *            The identifier of the part to match with the active part; may
-	 *            be <code>null</code>
-	 * @param window
-	 *            The workbench window in which this handler should be active.
-	 *            This value is never <code>null</code>.
-	 */
-	public LegacyViewContributionExpression(final String activePartId,
-			final IWorkbenchWindow window) {
-		super(window);
-
-		if (activePartId == null) {
-			throw new NullPointerException(
-					"The targetId for a view contribution must not be null"); //$NON-NLS-1$
-		}
-		this.activePartId = activePartId;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		super.collectExpressionInfo(info);
-		info.addVariableNameAccess(ISources.ACTIVE_PART_ID_NAME);
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(getWindow());
-		hashCode = hashCode * HASH_FACTOR + hashCode(activePartId);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyViewContributionExpression) {
-			final LegacyViewContributionExpression that = (LegacyViewContributionExpression) object;
-			return equals(this.activePartId, that.activePartId)
-					&& equals(this.getWindow(), that.getWindow());
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		final EvaluationResult result = super.evaluate(context);
-		if (result == EvaluationResult.FALSE) {
-			return result;
-		}
-
-		final Object variable = context
-				.getVariable(ISources.ACTIVE_PART_ID_NAME);
-		if (equals(activePartId, variable)) {
-			return EvaluationResult.TRUE;
-		}
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("LegacyViewContributionExpression("); //$NON-NLS-1$
-		buffer.append(activePartId);
-		buffer.append(',');
-		buffer.append(getWindow());
-		buffer.append(')');
-		return buffer.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewerContributionExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewerContributionExpression.java
deleted file mode 100644
index 3bfe713..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/LegacyViewerContributionExpression.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import java.util.Collection;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * <p>
- * An expression that can control the activation of a handler derived from a
- * viewer contribution. The viewer contribution is linked to a menu with a
- * particular identifier, as well as some other criteria. This expression checks
- * the target menu id, and contains a child expression for the other criteria.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @see ISources#ACTIVE_MENU_NAME
- * @since 3.2
- */
-public final class LegacyViewerContributionExpression extends
-		WorkbenchWindowExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = LegacyViewerContributionExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The child expression for this viewer contribution. This value may be
-	 * <code>null</code> if there are no criteria beyond the menu id.
-	 */
-	private final Expression expression;
-
-	/**
-	 * The identifier of the menu to which this viewer contribution applies.
-	 * This value is never <code>null</code>.
-	 */
-	private final String targetId;
-
-	/**
-	 * Constructs a new {@link LegacyViewerContributionExpression}.
-	 * 
-	 * @param targetId
-	 *            The identifier of the menu to which this viewer contribution
-	 *            applies; never <code>null</code>.
-	 * @param window
-	 *            The workbench window which must be active for this expression
-	 *            to evaluate to <code>true</code>; may be <code>null</code>
-	 *            if the window should be disregarded.
-	 * @param childExpression
-	 *            The child expression for this viewer contribution; may be
-	 *            <code>null</code>.
-	 */
-	public LegacyViewerContributionExpression(final String targetId,
-			final IWorkbenchWindow window, final Expression childExpression) {
-		super(window);
-
-		if (targetId == null) {
-			throw new NullPointerException("The targetId cannot be null"); //$NON-NLS-1$
-		}
-		this.targetId = targetId;
-		this.expression = childExpression;
-	}
-
-	public final void collectExpressionInfo(final ExpressionInfo info) {
-		super.collectExpressionInfo(info);
-		info.addVariableNameAccess(ISources.ACTIVE_MENU_NAME);
-		if (expression != null) {
-			expression.collectExpressionInfo(info);
-		}
-	}
-
-	protected final int computeHashCode() {
-		int hashCode = HASH_INITIAL * HASH_FACTOR + hashCode(getWindow());
-		hashCode = hashCode * HASH_FACTOR + hashCode(expression);
-		hashCode = hashCode * HASH_FACTOR + hashCode(targetId);
-		return hashCode;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacyViewerContributionExpression) {
-			final LegacyViewerContributionExpression that = (LegacyViewerContributionExpression) object;
-			return equals(this.targetId, that.targetId)
-					&& equals(this.expression, that.expression)
-					&& equals(this.getWindow(), that.getWindow());
-		}
-
-		return false;
-	}
-
-	public final EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		final EvaluationResult result = super.evaluate(context);
-		if (result == EvaluationResult.FALSE) {
-			return result;
-		}
-
-		final Object value = context.getVariable(ISources.ACTIVE_MENU_NAME);
-		if (value instanceof String) {
-			final String menuId = (String) value;
-			if (targetId.equals(menuId)) {
-				if (expression == null) {
-					return EvaluationResult.TRUE;
-				}
-
-				return expression.evaluate(context);
-			}
-		} else if (value instanceof Collection) {
-			final Collection menuIds = (Collection) value;
-			if (menuIds.contains(targetId)) {
-				if (expression == null) {
-					return EvaluationResult.TRUE;
-				}
-
-				return expression.evaluate(context);
-			}
-		}
-
-		return EvaluationResult.FALSE;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("ViewerContributionExpression("); //$NON-NLS-1$
-		buffer.append(targetId);
-		buffer.append(',');
-		buffer.append(expression);
-		buffer.append(',');
-		buffer.append(getWindow());
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java
deleted file mode 100644
index a55bb3a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/WorkbenchWindowExpression.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * <p>
- * An expression that evaluates to {@link EvaluationResult#TRUE} when the active
- * workbench window matches the window held by this expression.
- * </p>
- * 
- * @since 3.2
- */
-public class WorkbenchWindowExpression extends Expression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = WorkbenchWindowExpression.class
-			.getName().hashCode();
-
-	/**
-	 * The workbench window that must be active for this expression to evaluate
-	 * to <code>true</code>. If this value is <code>null</code>, then any
-	 * workbench window may be active.
-	 */
-	private final IWorkbenchWindow window;
-
-	/**
-	 * Constructs a new instance.
-	 * 
-	 * @param window
-	 *            The workbench window which must be active for this expression
-	 *            to evaluate to <code>true</code>; may be <code>null</code>
-	 *            if this expression is always <code>true</code>.
-	 */
-	public WorkbenchWindowExpression(final IWorkbenchWindow window) {
-		this.window = window;
-	}
-
-	public void collectExpressionInfo(final ExpressionInfo info) {
-		if (window != null) {
-			info.addVariableNameAccess(ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-		}
-	}
-
-	protected int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(window);
-	}
-
-	public boolean equals(final Object object) {
-		if (object instanceof WorkbenchWindowExpression) {
-			final WorkbenchWindowExpression that = (WorkbenchWindowExpression) object;
-			return equals(this.window, that.window);
-		}
-
-		return false;
-	}
-
-	public EvaluationResult evaluate(final IEvaluationContext context)
-			throws CoreException {
-		if (window != null) {
-			Object value = context
-					.getVariable(ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-			if (window.equals(value)) {
-				return EvaluationResult.TRUE;
-			}
-		}
-
-		return EvaluationResult.FALSE;
-	}
-
-	/**
-	 * Returns the workbench window to which this expression applies.
-	 * 
-	 * @return The workbench window to which this expression applies; may be
-	 *         <code>null</code>.
-	 */
-	protected final IWorkbenchWindow getWindow() {
-		return window;
-	}
-
-	public String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("WorkbenchWindowExpression("); //$NON-NLS-1$
-		buffer.append(window);
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java
deleted file mode 100644
index bb96d79..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionCommandMappingService.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * <p>
- * A service which holds mappings between retarget action identifiers and
- * command identifiers (aka: action definition ids). This implementation does
- * not clean up in the case of dynamic plug-ins.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class ActionCommandMappingService implements
-		IActionCommandMappingService {
-
-	/**
-	 * The map of action identifiers ({@link String}) to command identifiers ({@link String}).
-	 * This value is never <code>null</code>.
-	 */
-	private final Map mapping = new HashMap();
-
-	public final String getCommandId(final String actionId) {
-		if (actionId == null) {
-			throw new NullPointerException(
-					"Cannot get the command identifier for a null action id"); //$NON-NLS-1$
-		}
-
-		return (String) mapping.get(actionId);
-	}
-
-	public final void map(final String actionId, final String commandId) {
-		if (actionId == null) {
-			throw new NullPointerException("The action id cannot be null"); //$NON-NLS-1$
-		}
-
-		if (commandId == null) {
-			throw new NullPointerException("The command id cannot be null"); //$NON-NLS-1$
-		}
-
-		mapping.put(actionId, commandId);
-	}
-
-	public final String getGeneratedCommandId(String targetId, String actionId) {
-		return IWorkbenchRegistryConstants.AUTOGENERATED_PREFIX + targetId
-				+ '/' + actionId;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java
deleted file mode 100644
index 42e67c1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ActionDelegateHandlerProxy.java
+++ /dev/null
@@ -1,749 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IHandler2;
-import org.eclipse.core.commands.IHandlerListener;
-import org.eclipse.core.commands.IObjectWithState;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.State;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.InvalidRegistryObjectException;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IActionDelegate2;
-import org.eclipse.ui.IActionDelegateWithEvent;
-import org.eclipse.ui.IEditorActionDelegate;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * <p>
- * This proxies an {@link IActionDelegate} so that it can impersonate an
- * {@link IHandler}.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class ActionDelegateHandlerProxy implements ISelectionListener,
-		ISelectionChangedListener, INullSelectionListener, IHandler2,
-		IObjectWithState, IPartListener2 {
-
-	/**
-	 * The fake action that proxies all of the command-based services. This
-	 * value is never <code>null</code>.
-	 */
-	private CommandLegacyActionWrapper action;
-
-	/**
-	 * The identifier of the actions to create as a wrapper to the command
-	 * architecture. This value may be <code>null</code>.
-	 */
-	private String actionId;
-
-	/**
-	 * The command that will back the dummy actions exposed to this delegate.
-	 * This value is never <code>null</code>.
-	 */
-	private ParameterizedCommand command;
-
-	/**
-	 * This is the current selection, as seen by this proxy.
-	 */
-	private ISelection currentSelection;
-
-	/**
-	 * The delegate, if it has been created yet.
-	 */
-	private IActionDelegate delegate;
-
-	//
-	// instead of casting, which is unreliable, pick
-	// a delegate type based on the IConfigurationElement
-	//
-	private IEditorActionDelegate editorDelegate = null;
-	private IViewActionDelegate viewDelegate = null;
-	private IObjectActionDelegate objectDelegate = null;
-	private IWorkbenchWindowActionDelegate windowDelegate = null;
-	
-	private IWorkbenchPart currentPart = null;
-
-	/**
-	 * The name of the configuration element attribute which contains the
-	 * information necessary to instantiate the real handler.
-	 */
-	private String delegateAttributeName;
-
-	/**
-	 * The configuration element from which the handler can be created. This
-	 * value will exist until the element is converted into a real class -- at
-	 * which point this value will be set to <code>null</code>.
-	 */
-	private IConfigurationElement element;
-
-	/**
-	 * The <code>enabledWhen</code> expression for the handler. Only if this
-	 * expression evaluates to <code>true</code> (or the value is
-	 * <code>null</code>) should we consult the handler.
-	 */
-	private final Expression enabledWhenExpression;
-
-	/**
-	 * A collection of objects listening to changes to this manager. This
-	 * collection is <code>null</code> if there are no listeners.
-	 */
-	private transient ListenerList listenerList = null;
-
-	/**
-	 * The image style to use when selecting the images to display for this
-	 * delegate. This value may be <code>null</code>, if the default style
-	 * should be used.
-	 */
-	private final String style;
-
-	/**
-	 * The identifier of the view with which this delegate must be associated.
-	 * This value is not <code>null</code> iff the delegate is an
-	 * {@link IViewActionDelegate}.
-	 */
-	private final String viewId;
-
-	/**
-	 * The workbench window in which this delegate is active. This value is
-	 * never <code>null</code>.
-	 */
-	private final IWorkbenchWindow window;
-
-	/**
-	 * Constructs a new instance of <code>ActionDelegateHandlerProxy</code>
-	 * with all the information it needs to try to avoid loading until it is
-	 * needed.
-	 * 
-	 * @param element
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time; must not be <code>null</code>.
-	 * @param delegateAttributeName
-	 *            The name of the attibute or element containing the action
-	 *            delegate; must not be <code>null</code>.
-	 * @param actionId
-	 *            The identifier of the underlying action; may be
-	 *            <code>null</code>.
-	 * @param command
-	 *            The command with which the action delegate will be associated;
-	 *            must not be <code>null</code>.
-	 * @param window
-	 *            The workbench window in which this delegate will be active;
-	 *            must not be <code>null</code>.
-	 * @param style
-	 *            The image style with which the icons are associated; may be
-	 *            <code>null</code>.
-	 * @param enabledWhenExpression
-	 *            The name of the element containing the enabledWhen expression.
-	 *            This should be a child of the
-	 *            <code>configurationElement</code>. If this value is
-	 *            <code>null</code>, then there is no enablement expression
-	 *            (i.e., enablement will be delegated to the handler when
-	 *            possible).
-	 * @param viewId
-	 *            The identifier of the view to which this proxy is bound; may
-	 *            be <code>null</code> if this proxy is not for an
-	 *            {@link IViewActionDelegate}.
-	 */
-	public ActionDelegateHandlerProxy(final IConfigurationElement element,
-			final String delegateAttributeName, final String actionId,
-			final ParameterizedCommand command, final IWorkbenchWindow window,
-			final String style, final Expression enabledWhenExpression,
-			final String viewId) {
-		if (element == null) {
-			throw new NullPointerException(
-					"The configuration element backing a handler proxy cannot be null"); //$NON-NLS-1$
-		}
-
-		if (delegateAttributeName == null) {
-			throw new NullPointerException(
-					"The attribute containing the action delegate must be known"); //$NON-NLS-1$
-		}
-
-		if (window == null) {
-			throw new NullPointerException(
-					"The workbench window for a delegate must not be null"); //$NON-NLS-1$
-		}
-
-		this.element = element;
-		this.enabledWhenExpression = enabledWhenExpression;
-		this.delegateAttributeName = delegateAttributeName;
-		this.window = window;
-		this.command = command;
-		this.actionId = actionId;
-		this.style = style;
-		this.viewId = viewId;
-	}
-
-	public final void addHandlerListener(final IHandlerListener handlerListener) {
-		if (listenerList == null) {
-			listenerList = new ListenerList(ListenerList.IDENTITY);
-		}
-
-		listenerList.add(handlerListener);
-	}
-
-	public void addState(String id, State state) {
-		// TODO Auto-generated method stub
-
-	}
-
-	
-	public final void dispose() {
-		disposeDelegate();
-	}
-
-	/**
-	 * 
-	 */
-	private void disposeDelegate() {
-		final IActionDelegate actDel = getDelegate();
-		if (actDel instanceof IWorkbenchWindowActionDelegate) {
-			final IWorkbenchWindowActionDelegate workbenchWindowDelegate = (IWorkbenchWindowActionDelegate) actDel;
-			workbenchWindowDelegate.dispose();
-		} else if (actDel instanceof IActionDelegate2) {
-			final IActionDelegate2 delegate2 = (IActionDelegate2) actDel;
-			delegate2.dispose();
-		}
-		delegate = null;
-		editorDelegate = null;
-		objectDelegate = null;
-		viewDelegate = null;
-		windowDelegate = null;
-		currentSelection = null;
-	}
-
-	public final Object execute(final ExecutionEvent event) {
-		final IAction action = getAction();
-		if (loadDelegate() && (action != null)) {
-			final Object trigger = event.getTrigger();
-
-			// Attempt to update the selection.
-			final Object applicationContext = event.getApplicationContext();
-			if (applicationContext instanceof IEvaluationContext) {
-				final IEvaluationContext context = (IEvaluationContext) applicationContext;
-				updateDelegate(action, context);
-			}
-
-			// Decide what type of delegate we have.
-			if ((delegate instanceof IActionDelegate2)
-					&& (trigger instanceof Event)) {
-				// This supports Eclipse 2.1 to Eclipse 3.1.
-				final IActionDelegate2 delegate2 = (IActionDelegate2) delegate;
-				final Event triggeringEvent = (Event) trigger;
-				delegate2.runWithEvent(action, triggeringEvent);
-			} else if ((delegate instanceof IActionDelegateWithEvent)
-					&& (trigger instanceof Event)) {
-				// This supports Eclipse 2.0
-				final IActionDelegateWithEvent delegateWithEvent = (IActionDelegateWithEvent) delegate;
-				final Event triggeringEvent = (Event) trigger;
-				delegateWithEvent.runWithEvent(action, triggeringEvent);
-			} else {
-				delegate.run(action);
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * @param action
-	 * @param context
-	 */
-	private void updateDelegate(final IAction action,
-			final IEvaluationContext context) {
-		if (action == null || delegate == null) {
-			return;
-		}
-
-		if (editorDelegate != null) {
-			final Object activeEditor = context
-					.getVariable(ISources.ACTIVE_EDITOR_NAME);
-			if (activeEditor != IEvaluationContext.UNDEFINED_VARIABLE) {
-				editorDelegate.setActiveEditor(action,
-						(IEditorPart) activeEditor);
-			}
-			updateActivePart(activeEditor==IEvaluationContext.UNDEFINED_VARIABLE
-					?null:(IWorkbenchPart)activeEditor);
-		} else if (objectDelegate != null) {
-			final Object activePart = context
-					.getVariable(ISources.ACTIVE_PART_NAME);
-			if (activePart != IEvaluationContext.UNDEFINED_VARIABLE) {
-				objectDelegate.setActivePart(action,
-						(IWorkbenchPart) activePart);
-			}
-			updateActivePart(activePart==IEvaluationContext.UNDEFINED_VARIABLE
-					?null:(IWorkbenchPart) activePart);
-		}
-
-		final Object selectionObject = getCurrentSelection(context);
-		if (selectionObject instanceof ISelection) {
-			currentSelection = (ISelection) selectionObject;
-		} else {
-			currentSelection = null;
-		}
-		if (delegate != null) {
-			delegate.selectionChanged(action, currentSelection);
-		}
-	}
-
-	/**
-	 * @param activePart
-	 */
-	private void updateActivePart(IWorkbenchPart activePart) {
-		if (currentPart == activePart) {
-			return;
-		}
-		if (currentPart != null) {
-			currentPart.getSite().getPage().removePartListener(this);
-		}
-		if (activePart != null) {
-			activePart.getSite().getPage().addPartListener(this);
-		} else {
-			selectionChanged(StructuredSelection.EMPTY);
-			disposeDelegate();
-			if (action!=null) {
-				action.setEnabled(true);
-			}
-		}
-		currentPart = activePart;
-	}
-
-	/**
-	 * @param context
-	 * @return
-	 */
-	private Object getCurrentSelection(final IEvaluationContext context) {
-		Object obj = context
-				.getVariable(ISources.ACTIVE_MENU_EDITOR_INPUT_NAME);
-		if (obj == null || obj == IEvaluationContext.UNDEFINED_VARIABLE) {
-			obj = context.getVariable(ISources.ACTIVE_MENU_SELECTION_NAME);
-			if (obj == null || obj == IEvaluationContext.UNDEFINED_VARIABLE) {
-				obj = context
-						.getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME);
-			}
-		}
-		return obj;
-	}
-
-	/**
-	 * Retrieves the action corresponding to the currently active workbench
-	 * window, if any.
-	 * 
-	 * @return The current action; <code>null</code> if there is no currently
-	 *         active workbench window.
-	 */
-	private final CommandLegacyActionWrapper getAction() {
-		if (action == null) {
-			action = new CommandLegacyActionWrapper(actionId, command, style,
-					window);
-			action.addPropertyChangeListener(new IPropertyChangeListener() {
-				public final void propertyChange(final PropertyChangeEvent event) {
-					// TODO Update the state somehow.
-				}
-			});
-		}
-		return action;
-	}
-
-	/**
-	 * Retrieves the delegate corresponding to the currently active workbench
-	 * window, if any. This does not trigger loading of the delegate.
-	 * 
-	 * @return The current delegate; or <code>null</code> if none.
-	 */
-	private final IActionDelegate getDelegate() {
-		return delegate;
-	}
-
-	public State getState(String stateId) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public String[] getStateIds() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public final void handleStateChange(final State state, final Object oldValue) {
-		// TODO What should we do here?
-	}
-
-	/**
-	 * Initialize the action delegate by calling its lifecycle method.
-	 */
-	private final boolean initDelegate() {
-		final IWorkbenchPage page = window.getActivePage();
-		final IWorkbenchPart activePart;
-		final IEditorPart activeEditor;
-		if (page == null) {
-			activePart = null;
-			activeEditor = null;
-		} else {
-			activePart = page.getActivePart();
-			activeEditor = page.getActiveEditor();
-		}
-		final IActionDelegate delegate = getDelegate();
-		final IAction action = getAction();
-
-		// Check to see if the view delegate should be initialized.
-		if ((viewId != null) && (page != null) && (viewDelegate != null)) {
-			final IViewPart viewPart = page.findView(viewId);
-			if (viewPart == null) {
-				return false;
-			}
-		}
-
-		// Initialize the delegate.
-		final ISafeRunnable runnable = new ISafeRunnable() {
-			public final void handleException(final Throwable exception) {
-				// Do nothing.
-			}
-
-			public final void run() {
-				// Handle IActionDelegate2
-				if (delegate instanceof IActionDelegate2) {
-					final IActionDelegate2 delegate2 = (IActionDelegate2) delegate;
-					delegate2.init(action);
-				}
-
-				// Handle IObjectActionDelegates
-				if ((objectDelegate != null) && (activePart != null)) {
-					objectDelegate.setActivePart(action, activePart);
-					updateActivePart(activePart);
-				} else if (editorDelegate != null) {
-					editorDelegate.setActiveEditor(action, activeEditor);
-					updateActivePart(activeEditor);
-				} else if ((viewId != null) && (page != null)
-						&& (viewDelegate != null)) {
-					final IViewPart viewPart = page.findView(viewId);
-					viewDelegate.init(viewPart);
-				} else if (windowDelegate != null) {
-					windowDelegate.init(window);
-				}
-			}
-		};
-		SafeRunner.run(runnable);
-		return true;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.commands.IHandler2#setEnabled(java.lang.Object)
-	 */
-	public void setEnabled(Object evaluationContext) {
-		if (!(evaluationContext instanceof IEvaluationContext)) {
-			return;
-		}
-
-		IEvaluationContext context = (IEvaluationContext) evaluationContext;
-		final CommandLegacyActionWrapper action = getAction();
-		if (enabledWhenExpression != null) {
-			try {
-				final EvaluationResult result = enabledWhenExpression
-						.evaluate(context);
-				if (action != null) {
-					action.setEnabled(result != EvaluationResult.FALSE);
-				}
-			} catch (final CoreException e) {
-				// We will just fall through an let it return false.
-				final StringBuffer message = new StringBuffer(
-						"An exception occurred while evaluating the enabledWhen expression for "); //$NON-NLS-1$
-				if (delegate != null) {
-					message.append(delegate);
-				} else {
-					message.append(element.getAttribute(delegateAttributeName));
-				}
-				message.append("' could not be loaded"); //$NON-NLS-1$
-				final IStatus status = new Status(IStatus.WARNING,
-						WorkbenchPlugin.PI_WORKBENCH, 0, e.getMessage(), e);
-				WorkbenchPlugin.log(message.toString(), status);
-				return;
-			}
-		}
-		updateDelegate(action, context);
-	}
-
-	public final boolean isEnabled() {
-		return (action == null) || action.isEnabledDisregardingCommand();
-	}
-
-	public final boolean isHandled() {
-		return true;
-	}
-
-	/**
-	 * Checks if the declaring plugin has been loaded. This means that there
-	 * will be no need to delay creating the delegate.
-	 * 
-	 * @return <code>true</code> if the bundle containing the delegate is
-	 *         already loaded -- making it safe to load the delegate.
-	 */
-	private final boolean isSafeToLoadDelegate() {
-		return false;
-		// TODO This causes problem because some people expect their selections
-		// to be a particular class.
-		// final String bundleId = element.getNamespace();
-		// return BundleUtility.isActive(bundleId);
-	}
-
-	/**
-	 * Loads the delegate, if possible. If the delegate is loaded, then the
-	 * member variables are updated accordingly.
-	 * 
-	 * @return <code>true</code> if the delegate is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadDelegate() {
-		// Try to load the delegate, if it hasn't been loaded already.
-		if (delegate == null) {
-			/*
-			 * If this is an IViewActionDelegate, then check to see if we have a
-			 * view ready yet. If not, then we'll have to wait.
-			 */
-			if (viewId != null) {
-				final IWorkbenchPage activePage = window.getActivePage();
-				if (activePage != null) {
-					final IViewPart part = activePage.findView(viewId);
-					if (part == null) {
-						return false;
-					}
-				} else {
-					return false;
-				}
-			}
-
-			// Load the delegate.
-			try {
-				delegate = (IActionDelegate) element
-						.createExecutableExtension(delegateAttributeName);
-				String name = element.getDeclaringExtension()
-						.getExtensionPointUniqueIdentifier();
-				if ("org.eclipse.ui.actionSets".equals(name) //$NON-NLS-1$
-						&& delegate instanceof IWorkbenchWindowActionDelegate) {
-					windowDelegate = (IWorkbenchWindowActionDelegate) delegate;
-				} else if ("org.eclipse.ui.editorActions".equals(name) //$NON-NLS-1$
-						&& delegate instanceof IEditorActionDelegate) {
-					editorDelegate = (IEditorActionDelegate) delegate;
-				} else if ("org.eclipse.ui.viewActions".equals(name) //$NON-NLS-1$
-						&& delegate instanceof IViewActionDelegate) {
-					viewDelegate = (IViewActionDelegate) delegate;
-				} else if ("org.eclipse.ui.popupMenus".equals(name)) { //$NON-NLS-1$
-					IConfigurationElement parent = (IConfigurationElement) element
-							.getParent();
-					if ("objectContribution".equals(parent.getName()) //$NON-NLS-1$
-							&& delegate instanceof IObjectActionDelegate) {
-						objectDelegate = (IObjectActionDelegate) delegate;
-					} else if (viewId == null
-							&& delegate instanceof IEditorActionDelegate) {
-						editorDelegate = (IEditorActionDelegate) delegate;
-					} else if (viewId != null
-							&& delegate instanceof IViewActionDelegate) {
-						viewDelegate = (IViewActionDelegate) delegate;
-					}
-				}
-				if (initDelegate()) {
-					return true;
-				}
-
-				delegate = null;
-				objectDelegate = null;
-				viewDelegate = null;
-				editorDelegate = null;
-				windowDelegate = null;
-				return false;
-
-			} catch (final ClassCastException e) {
-				final String message = "The proxied delegate was the wrong class"; //$NON-NLS-1$
-				final IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-
-			} catch (final CoreException e) {
-				final String message = "The proxied delegate for '" //$NON-NLS-1$
-						+ element.getAttribute(delegateAttributeName)
-						+ "' could not be loaded"; //$NON-NLS-1$
-				IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Refresh the action enablement.
-	 */
-	private final void refreshEnablement() {
-		final IActionDelegate delegate = getDelegate();
-		final IAction action = getAction();
-		if ((delegate != null) && (action != null)) {
-			delegate.selectionChanged(action, currentSelection);
-		}
-	}
-
-	public void removeHandlerListener(IHandlerListener handlerListener) {
-		if (listenerList != null) {
-			listenerList.remove(handlerListener);
-
-			if (listenerList.isEmpty()) {
-				listenerList = null;
-			}
-		}
-	}
-
-	public void removeState(String stateId) {
-		// TODO Auto-generated method stub
-
-	}
-
-	private final void selectionChanged(final ISelection selection) {
-		// Update selection.
-		currentSelection = selection;
-		if (currentSelection == null) {
-			currentSelection = StructuredSelection.EMPTY;
-		}
-
-		// The selection is passed to the delegate as-is without
-		// modification. If the selection needs to be modified
-		// the action contributors should do so.
-
-		// If the delegate can be loaded, do so.
-		// Otherwise, just update the enablement.
-		final IActionDelegate delegate = getDelegate();
-		if (delegate == null && isSafeToLoadDelegate()) {
-			loadDelegate();
-		}
-		refreshEnablement();
-	}
-
-	public final void selectionChanged(final IWorkbenchPart part,
-			final ISelection selection) {
-		selectionChanged(selection);
-
-	}
-
-	public final void selectionChanged(final SelectionChangedEvent event) {
-		final ISelection selection = event.getSelection();
-		selectionChanged(selection);
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-		buffer.append("ActionDelegateHandlerProxy("); //$NON-NLS-1$
-		buffer.append(getDelegate());
-		if (element != null) {
-			buffer.append(',');
-			try {
-				final String className = element
-						.getAttribute(delegateAttributeName);
-				buffer.append(className);
-			} catch (InvalidRegistryObjectException e) {
-				buffer.append(actionId);
-			}
-		}
-		buffer.append(')');
-		return buffer.toString();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partActivated(IWorkbenchPartReference partRef) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partBroughtToTop(IWorkbenchPartReference partRef) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partClosed(IWorkbenchPartReference partRef) {
-		if (currentPart != null && partRef.getPart(false) == currentPart) {
-			updateActivePart(null);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partDeactivated(IWorkbenchPartReference partRef) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partHidden(IWorkbenchPartReference partRef) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partInputChanged(IWorkbenchPartReference partRef) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partOpened(IWorkbenchPartReference partRef) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference)
-	 */
-	public void partVisible(IWorkbenchPartReference partRef) {
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java
deleted file mode 100644
index a0272a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CloseAllPerspectivesHandler.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Closes all the perspectives.
- * 
- * @since 3.4
- */
-public class CloseAllPerspectivesHandler extends AbstractHandler {
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
-		if (window != null) {
-			IWorkbenchPage page = window.getActivePage();
-			if (page != null) {
-				page.closeAllPerspectives(true, true);
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePartHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePartHandler.java
deleted file mode 100644
index f875072..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePartHandler.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Provide a Handler for the Close Part command. This can then be bound to
- * whatever keybinding the user prefers.
- * 
- * @since 3.3
- */
-public class ClosePartHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchPart part = HandlerUtil.getActivePartChecked(event);
-		IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
-
-		if (part instanceof IEditorPart) {
-			window.getActivePage().closeEditor((IEditorPart) part, true);
-		} else if (part instanceof IViewPart) {
-			window.getActivePage().hideView((IViewPart) part);
-		}
-
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
deleted file mode 100644
index 1e17b34..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ClosePerspectiveHandler.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.WorkbenchPage;
-
-public class ClosePerspectiveHandler extends AbstractHandler {
-
-	/**
-	 * The name of the parameter providing the perspective id.
-	 */
-	private static final String PARAMETER_NAME_PERSPECTIVE_ID = "org.eclipse.ui.window.closePerspective.perspectiveId"; //$NON-NLS-1$
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (activeWorkbenchWindow != null) {
-			WorkbenchPage page = (WorkbenchPage) activeWorkbenchWindow
-					.getActivePage();
-			if (page != null) {
-				Map parameters = event.getParameters();
-				String value = (String) parameters
-						.get(PARAMETER_NAME_PERSPECTIVE_ID);
-				if (value == null) {
-					page.closePerspective(page.getPerspective(), true, true);
-				} else {
-					IPerspectiveDescriptor perspective = activeWorkbenchWindow
-							.getWorkbench().getPerspectiveRegistry()
-							.findPerspectiveWithId(value);
-					if (perspective != null) {
-						page.closePerspective(perspective, true, true);
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Closes the specified perspective. Nothing will happen if the given page
-	 * or perspective are <code>null</null>.
-	 * @param page
-	 * 		a reference to the page
-	 * @param persp
-	 * 		the perspective to close
-	 */
-	public static void closePerspective(WorkbenchPage page, Perspective persp) {
-		if (page != null && persp != null) {
-			page.closePerspective(persp.getDesc(), true, true);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
deleted file mode 100644
index ae26246..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CommandLegacyActionWrapper.java
+++ /dev/null
@@ -1,516 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandEvent;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.ICommandListener;
-import org.eclipse.core.commands.INamedHandleStateIds;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.State;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.action.AbstractAction;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.commands.RadioState;
-import org.eclipse.jface.commands.ToggleState;
-import org.eclipse.jface.menus.IMenuStateIds;
-import org.eclipse.jface.menus.TextState;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.Util;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.commands.CommandImageManager;
-import org.eclipse.ui.internal.commands.CommandImageService;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * A wrapper around the new command infrastructure that imitates the old
- * <code>IAction</code> interface.
- * </p>
- * <p>
- * Clients may instantiate this class, but must not extend.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * <p>
- * This class is eventually intended to exist in
- * <code>org.eclipse.ui.handlers</code>.
- * </p>
- * 
- * @since 3.2
- */
-public final class CommandLegacyActionWrapper extends AbstractAction {
-
-	/**
-	 * Listens to changes to one or more commands, and forwards them out through
-	 * the property change event mechanism.
-	 */
-	private final class CommandListener implements ICommandListener {
-		public final void commandChanged(final CommandEvent commandEvent) {
-			final Command baseCommand = commandEvent.getCommand();
-
-			// Check if the name changed.
-			if (commandEvent.isNameChanged()) {
-				String newName = null;
-				if (baseCommand.isDefined()) {
-					try {
-						newName = baseCommand.getName();
-					} catch (final NotDefinedException e) {
-						// Not defined, so leave as null.
-					}
-				}
-				firePropertyChange(IAction.TEXT, null, newName);
-			}
-
-			// Check if the description changed.
-			if (commandEvent.isDescriptionChanged()) {
-				String newDescription = null;
-				if (baseCommand.isDefined()) {
-					try {
-						newDescription = baseCommand.getDescription();
-					} catch (final NotDefinedException e) {
-						// Not defined, so leave as null.
-					}
-				}
-				firePropertyChange(IAction.DESCRIPTION, null, newDescription);
-				firePropertyChange(IAction.TOOL_TIP_TEXT, null, newDescription);
-			}
-
-			// Check if the handled property changed.
-			if (commandEvent.isHandledChanged()) {
-				if (baseCommand.isHandled()) {
-					firePropertyChange(IAction.HANDLED, Boolean.FALSE,
-							Boolean.TRUE);
-				} else {
-					firePropertyChange(IAction.HANDLED, Boolean.TRUE,
-							Boolean.FALSE);
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * The command with which this action is associated; never <code>null</code>.
-	 */
-	private ParameterizedCommand command;
-
-	/**
-	 * Listens to changes in a command, and forwards them out through the
-	 * property change event mechanism.
-	 */
-	private final ICommandListener commandListener = new CommandListener();
-
-	/**
-	 * Whether this action has been marked as enabled.
-	 */
-	private boolean enabled = true;
-
-	/**
-	 * The identifier for the action. This may be <code>null</code>.
-	 */
-	private String id;
-
-	/**
-	 * A service locator that can be used for retrieving command-based services.
-	 * This value is never <code>null</code>.
-	 */
-	private final IServiceLocator serviceLocator;
-
-	/**
-	 * The image style to use for this action. This value may be
-	 * <code>null</code>.
-	 */
-	private final String style;
-
-	/**
-	 * Constructs a new instance of <code>ActionProxy</code>.
-	 * 
-	 * @param id
-	 *            The initial action identifier; may be <code>null</code>.
-	 * @param command
-	 *            The command with which this action is associated; must not be
-	 *            <code>null</code>.
-	 * @param style
-	 *            The image style to use for this action, may be
-	 *            <code>null</code>.
-	 * @param serviceLocator
-	 *            A service locator that can be used to find various
-	 *            command-based services; must not be <code>null</code>.
-	 */
-	public CommandLegacyActionWrapper(final String id,
-			final ParameterizedCommand command, final String style,
-			final IServiceLocator serviceLocator) {
-		if (command == null) {
-			throw new NullPointerException(
-					"An action proxy can't be created without a command"); //$NON-NLS-1$
-		}
-
-		if (serviceLocator == null) {
-			throw new NullPointerException(
-					"An action proxy can't be created without a service locator"); //$NON-NLS-1$
-		}
-
-		this.command = command;
-		this.id = id;
-		this.style = style;
-		this.serviceLocator = serviceLocator;
-
-		// TODO Needs to listen to command, state, binding and image changes.
-		command.getCommand().addCommandListener(commandListener);
-	}
-
-	public final int getAccelerator() {
-		final String commandId = getActionDefinitionId();
-		final IBindingService bindingService = (IBindingService) serviceLocator
-				.getService(IBindingService.class);
-		final TriggerSequence triggerSequence = bindingService
-				.getBestActiveBindingFor(commandId);
-		if (triggerSequence instanceof KeySequence) {
-			final KeySequence keySequence = (KeySequence) triggerSequence;
-			final KeyStroke[] keyStrokes = keySequence.getKeyStrokes();
-			if (keyStrokes.length == 1) {
-				final KeyStroke keyStroke = keyStrokes[0];
-				return keyStroke.getModifierKeys() | keyStroke.getNaturalKey();
-			}
-		}
-
-		return 0;
-	}
-
-	public final String getActionDefinitionId() {
-		return command.getId();
-	}
-
-	public final String getDescription() {
-		try {
-			return command.getCommand().getDescription();
-		} catch (final NotDefinedException e) {
-			return null;
-		}
-	}
-
-	public final ImageDescriptor getDisabledImageDescriptor() {
-		final String commandId = getActionDefinitionId();
-		final ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-		return commandImageService.getImageDescriptor(commandId,
-				CommandImageManager.TYPE_DISABLED, style);
-	}
-
-	public final HelpListener getHelpListener() {
-		// TODO Help. Addressing help on commands.
-		return null;
-	}
-
-	public final ImageDescriptor getHoverImageDescriptor() {
-		final String commandId = getActionDefinitionId();
-		final ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-		return commandImageService.getImageDescriptor(commandId,
-				CommandImageManager.TYPE_HOVER, style);
-	}
-
-	public final String getId() {
-		return id;
-	}
-
-	public final ImageDescriptor getImageDescriptor() {
-		final String commandId = getActionDefinitionId();
-		final ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-		return commandImageService.getImageDescriptor(commandId, style);
-	}
-
-	public final IMenuCreator getMenuCreator() {
-		// TODO Pulldown. What kind of callback is needed here?
-		return null;
-	}
-
-	public final int getStyle() {
-		// TODO Pulldown. This does not currently support the pulldown style.
-		final State state = command.getCommand().getState(IMenuStateIds.STYLE);
-		if (state instanceof RadioState) {
-			return IAction.AS_RADIO_BUTTON;
-		} else if (state instanceof ToggleState) {
-			return IAction.AS_CHECK_BOX;
-		}
-
-		return IAction.AS_PUSH_BUTTON;
-	}
-
-	public final String getText() {
-		try {
-			return command.getName();
-		} catch (final NotDefinedException e) {
-			return null;
-		}
-	}
-
-	public final String getToolTipText() {
-		return getDescription();
-	}
-
-	public final boolean isChecked() {
-		final State state = command.getCommand().getState(IMenuStateIds.STYLE);
-		if (state instanceof ToggleState) {
-			final Boolean currentValue = (Boolean) state.getValue();
-			return currentValue.booleanValue();
-		}
-
-		return false;
-	}
-
-	public final boolean isEnabled() {
-		final Command baseCommand = command.getCommand();
-		return baseCommand.isEnabled() && enabled;
-	}
-
-	/**
-	 * Whether this action's local <code>enabled</code> property is set. This
-	 * can be used by handlers that are trying to check if
-	 * {@link #setEnabled(boolean)} has been called. This is typically used by
-	 * legacy action proxies who are trying to avoid a <a
-	 * href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=117496">stack
-	 * overflow</a>.
-	 * 
-	 * @return <code>false</code> if someone has called
-	 *         {@link #setEnabled(boolean)} with <code>false</code>;
-	 *         <code>true</code> otherwise.
-	 */
-	public final boolean isEnabledDisregardingCommand() {
-		return enabled;
-	}
-
-	public final boolean isHandled() {
-		final Command baseCommand = command.getCommand();
-		return baseCommand.isHandled();
-	}
-
-	public final void run() {
-		runWithEvent(null);
-	}
-
-	public final void runWithEvent(final Event event) {
-		final Command baseCommand = command.getCommand();
-		final ExecutionEvent executionEvent = new ExecutionEvent(command
-				.getCommand(), command.getParameterMap(), event, null);
-		try {
-			baseCommand.execute(executionEvent);
-			firePropertyChange(IAction.RESULT, null, Boolean.TRUE);
-
-		} catch (final NotHandledException e) {
-			firePropertyChange(IAction.RESULT, null, Boolean.FALSE);
-
-		} catch (final ExecutionException e) {
-			firePropertyChange(IAction.RESULT, null, Boolean.FALSE);
-			// TODO Should this be logged?
-
-		}
-	}
-
-	public final void setAccelerator(final int keycode) {
-		// TODO Binding. This is hopefully not essential.
-	}
-
-	public final void setActionDefinitionId(final String id) {
-		// Get the old values.
-		final boolean oldChecked = isChecked();
-		final String oldDescription = getDescription();
-		final boolean oldEnabled = isEnabled();
-		final boolean oldHandled = isHandled();
-		final ImageDescriptor oldDefaultImage = getImageDescriptor();
-		final ImageDescriptor oldDisabledImage = getDisabledImageDescriptor();
-		final ImageDescriptor oldHoverImage = getHoverImageDescriptor();
-		final String oldText = getText();
-
-		// Update the command.
-		final Command oldBaseCommand = command.getCommand();
-		oldBaseCommand.removeCommandListener(commandListener);
-		final ICommandService commandService = (ICommandService) serviceLocator
-				.getService(ICommandService.class);
-		final Command newBaseCommand = commandService.getCommand(id);
-		command = new ParameterizedCommand(newBaseCommand, null);
-		newBaseCommand.addCommandListener(commandListener);
-
-		// Get the new values.
-		final boolean newChecked = isChecked();
-		final String newDescription = getDescription();
-		final boolean newEnabled = isEnabled();
-		final boolean newHandled = isHandled();
-		final ImageDescriptor newDefaultImage = getImageDescriptor();
-		final ImageDescriptor newDisabledImage = getDisabledImageDescriptor();
-		final ImageDescriptor newHoverImage = getHoverImageDescriptor();
-		final String newText = getText();
-
-		// Fire property change events, as necessary.
-		if (newChecked != oldChecked) {
-			if (oldChecked) {
-				firePropertyChange(IAction.CHECKED, Boolean.TRUE, Boolean.FALSE);
-			} else {
-				firePropertyChange(IAction.CHECKED, Boolean.FALSE, Boolean.TRUE);
-			}
-		}
-
-		if (!Util.equals(oldDescription, newDescription)) {
-			firePropertyChange(IAction.DESCRIPTION, oldDescription,
-					newDescription);
-			firePropertyChange(IAction.TOOL_TIP_TEXT, oldDescription,
-					newDescription);
-		}
-
-		if (newEnabled != oldEnabled) {
-			if (oldEnabled) {
-				firePropertyChange(IAction.ENABLED, Boolean.TRUE, Boolean.FALSE);
-			} else {
-				firePropertyChange(IAction.ENABLED, Boolean.FALSE, Boolean.TRUE);
-			}
-		}
-
-		if (newHandled != oldHandled) {
-			if (oldHandled) {
-				firePropertyChange(IAction.HANDLED, Boolean.TRUE, Boolean.FALSE);
-			} else {
-				firePropertyChange(IAction.HANDLED, Boolean.FALSE, Boolean.TRUE);
-			}
-		}
-
-		if (!Util.equals(oldDefaultImage, newDefaultImage)) {
-			firePropertyChange(IAction.IMAGE, oldDefaultImage, newDefaultImage);
-		}
-
-		if (!Util.equals(oldDisabledImage, newDisabledImage)) {
-			firePropertyChange(IAction.IMAGE, oldDisabledImage,
-					newDisabledImage);
-		}
-
-		if (!Util.equals(oldHoverImage, newHoverImage)) {
-			firePropertyChange(IAction.IMAGE, oldHoverImage, newHoverImage);
-		}
-
-		if (!Util.equals(oldText, newText)) {
-			firePropertyChange(IAction.TEXT, oldText, newText);
-		}
-	}
-
-	public final void setChecked(final boolean checked) {
-		final State state = command.getCommand().getState(IMenuStateIds.STYLE);
-		if (state instanceof ToggleState) {
-			final Boolean currentValue = (Boolean) state.getValue();
-			if (checked != currentValue.booleanValue()) {
-				if (checked) {
-					state.setValue(Boolean.TRUE);
-				} else {
-					state.setValue(Boolean.FALSE);
-				}
-			}
-		}
-	}
-
-	public final void setDescription(final String text) {
-		final State state = command.getCommand().getState(
-				INamedHandleStateIds.DESCRIPTION);
-		if (state instanceof TextState) {
-			final String currentValue = (String) state.getValue();
-			if (!Util.equals(text, currentValue)) {
-				state.setValue(text);
-			}
-		}
-	}
-
-	public final void setDisabledImageDescriptor(final ImageDescriptor newImage) {
-		final String commandId = getActionDefinitionId();
-		final int type = CommandImageManager.TYPE_DISABLED;
-		final ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-		if (commandImageService instanceof CommandImageService) {
-			((CommandImageService) commandImageService).bind(commandId, type,
-					style, newImage);
-		}
-	}
-
-	public final void setEnabled(final boolean enabled) {
-		if (enabled != this.enabled) {
-			final Boolean oldValue = this.enabled ? Boolean.TRUE
-					: Boolean.FALSE;
-			final Boolean newValue = enabled ? Boolean.TRUE : Boolean.FALSE;
-			this.enabled = enabled;
-			firePropertyChange(ENABLED, oldValue, newValue);
-		}
-	}
-
-	public final void setHelpListener(final HelpListener listener) {
-		// TODO Help Haven't even started to look at help yet.
-
-	}
-
-	public final void setHoverImageDescriptor(final ImageDescriptor newImage) {
-		final String commandId = getActionDefinitionId();
-		final int type = CommandImageManager.TYPE_HOVER;
-		final ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-		if (commandImageService instanceof CommandImageService) {
-			((CommandImageService) commandImageService).bind(commandId, type,
-					style, newImage);
-		}
-	}
-
-	public final void setId(final String id) {
-		this.id = id;
-	}
-
-	public final void setImageDescriptor(final ImageDescriptor newImage) {
-		final String commandId = getActionDefinitionId();
-		final int type = CommandImageManager.TYPE_DEFAULT;
-		final ICommandImageService commandImageService = (ICommandImageService) serviceLocator
-				.getService(ICommandImageService.class);
-		if (commandImageService instanceof CommandImageService) {
-			((CommandImageService) commandImageService).bind(commandId, type,
-					style, newImage);
-		}
-	}
-
-	public final void setMenuCreator(final IMenuCreator creator) {
-		// TODO Pulldown. This is complicated
-	}
-
-	public final void setText(final String text) {
-		final State state = command.getCommand().getState(
-				INamedHandleStateIds.NAME);
-		if (state instanceof TextState) {
-			final String currentValue = (String) state.getValue();
-			if (!Util.equals(text, currentValue)) {
-				state.setValue(text);
-			}
-		}
-	}
-
-	public final void setToolTipText(final String text) {
-		setDescription(text);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CyclePageHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CyclePageHandler.java
deleted file mode 100644
index ae1d182..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/CyclePageHandler.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.CycleBaseHandler;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.part.PageSwitcher;
-import org.eclipse.ui.part.WorkbenchPart;
-
-/**
- * Displays a dialog for cycling through pages of a view. A view may implement
- * its pages however it wishes. As long as the view creates a
- * {@link PageSwitcher} object, {@link CyclePageHandler} will handle the cycling
- * of pages.
- * 
- * @since 3.4
- * 
- */
-public class CyclePageHandler extends CycleBaseHandler {
-
-	/**
-	 * The character limit before text is truncated.
-	 */
-	private static final int TEXT_LIMIT = 65;
-	private static final String COMMAND_PREVIOUS_PAGE = "org.eclipse.ui.part.previousPage"; //$NON-NLS-1$
-	private static final String COMMAND_NEXT_PAGE = "org.eclipse.ui.part.nextPage"; //$NON-NLS-1$
-
-	private PageSwitcher pageSwitcher;
-	private LocalResourceManager lrm;
-
-	public CyclePageHandler(PageSwitcher pageSwitcher) {
-		this.pageSwitcher = pageSwitcher;
-	}
-
-	protected void addItems(Table table, WorkbenchPage page) {
-		Object[] pages = pageSwitcher.getPages();
-		for (int i = 0; i < pages.length; i++) {
-			TableItem item = null;
-			item = new TableItem(table, SWT.NONE);
-			ImageDescriptor imageDescriptor = pageSwitcher
-					.getImageDescriptor(pages[i]);
-			if (imageDescriptor != null) {
-				if (lrm == null) {
-					lrm = new LocalResourceManager(JFaceResources
-							.getResources());
-				}
-				item.setImage(lrm.createImage(imageDescriptor));
-			}
-			item.setData(pages[i]);
-			String name = pageSwitcher.getName(pages[i]);
-			if (name.length() > TEXT_LIMIT) {
-				name = name.substring(0, TEXT_LIMIT) + "..."; //$NON-NLS-1$
-			}
-			item.setText(name);
-		}
-	}
-	
-	protected int getCurrentItemIndex() {
-		return pageSwitcher.getCurrentPageIndex();
-	}
-
-	protected ParameterizedCommand getBackwardCommand() {
-		final ICommandService commandService = (ICommandService) window
-				.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService
-				.getCommand(COMMAND_PREVIOUS_PAGE);
-		ParameterizedCommand commandF = new ParameterizedCommand(command, null);
-		return commandF;
-	}
-
-	protected ParameterizedCommand getForwardCommand() {
-		final ICommandService commandService = (ICommandService) window
-				.getWorkbench().getService(ICommandService.class);
-		final Command command = commandService.getCommand(COMMAND_NEXT_PAGE);
-		ParameterizedCommand commandF = new ParameterizedCommand(command, null);
-		return commandF;
-	}
-
-	protected String getTableHeader(IWorkbenchPart activePart) {
-		if (activePart instanceof WorkbenchPart) {
-			return ((WorkbenchPart) activePart).getPartName();
-		}
-
-		return activePart.getTitle();
-	}
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		if (event.getCommand().getId().equals(COMMAND_NEXT_PAGE)) {
-			gotoDirection = true;
-		} else {
-			gotoDirection = false;
-		}
-		super.execute(event);
-		if (lrm != null) {
-			lrm.dispose();
-			lrm = null;
-		}
-		return null;
-	}
-
-	protected void setDialogLocation(final Shell dialog,
-			IWorkbenchPart activePart) {
-		if (dialog == null)
-			return;
-
-		// Default to center on the display
-		Point dlgAnchor = Geometry.centerPoint(dialog.getDisplay().getBounds());
-		
-		// Center the dialog within the activePart's pane (if any)
-		if (activePart != null) {
-			WorkbenchPart wbPart = (WorkbenchPart) activePart;
-			PartSite site = (PartSite) wbPart.getSite();
-			Control paneCtrl = site.getPane().getControl();
-
-			// Get the center of the view pane's control
-			Rectangle viewBounds = paneCtrl.getBounds();
-			Point vCenter = Geometry.centerPoint(viewBounds);
-			
-			// Map it to the display
-			dlgAnchor = paneCtrl.getParent().toDisplay(vCenter);
-		}
-		
-		// Offset the point by half the dialog size
-		Rectangle dialogBounds = dialog.getBounds();		
-		dlgAnchor.x -= (dialogBounds.width / 2);
-		dlgAnchor.y -= (dialogBounds.height / 2);
-
-		dialog.setLocation(dlgAnchor);
-	}
-
-	public void dispose() {
-		super.dispose();
-		this.pageSwitcher = null;
-	}
-
-	protected void activate(IWorkbenchPage page, Object selectedItem) {
-		if (selectedItem == null) {
-			return;
-		}
-
-		pageSwitcher.activatePage(selectedItem);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java
deleted file mode 100644
index 2744785..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/DisplayHelpHandler.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.help.IWorkbenchHelpSystem;
-
-/**
- * Displays the help resource specified in the <code>href</code> command
- * parameter or simply displays the help bookshelf if no parameter was passed.
- * 
- * @since 3.2
- */
-public final class DisplayHelpHandler extends AbstractHandler {
-
-	/**
-	 * The identifier of the command parameter for the URI to oepn.
-	 */
-	private static final String PARAM_ID_HREF = "href"; //$NON-NLS-1$
-
-	public final Object execute(final ExecutionEvent event) {
-		final IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench()
-				.getHelpSystem();
-		final String href = event.getParameter(PARAM_ID_HREF);
-
-		if (href == null) {
-			helpSystem.displayHelp();
-		} else {
-			helpSystem.displayHelpResource(href);
-		}
-
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java
deleted file mode 100644
index aa8dcca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/EditActionSetsHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.WorkbenchPage;
-
-/**
- * Customize the action sets and shortcuts.
- * 
- * @since 3.4
- */
-public class EditActionSetsHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-
-		if (activeWorkbenchWindow != null) {
-			WorkbenchPage page = (WorkbenchPage) activeWorkbenchWindow
-					.getActivePage();
-			if (page != null) {
-				page.editActionSets();
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java
deleted file mode 100644
index abb6930..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ExecutableExtensionHandler.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-
-/**
- * A handler that is intended to be defined in XML. These handlers support the
- * concept of executable extensions, defined by Platform Core. It is okay for
- * subclasses to never be used as executable extension. This default
- * implementation of <code>setInitializationData</code> is only intended as a
- * convenience for developers.
- * 
- * @since 3.1
- */
-public abstract class ExecutableExtensionHandler extends AbstractHandler
-        implements IExecutableExtension {
-
-    /**
-     * Initializes this handler with data provided from XML. By default, an
-     * <code>ExecutableExtensionHandler</code> will do nothing with this
-     * information. Subclasses should override if they expect parameters from
-     * XML.
-     * 
-     * @param config
-     *            the configuration element used to trigger this execution. It
-     *            can be queried by the executable extension for specific
-     *            configuration properties
-     * @param propertyName
-     *            the name of an attribute of the configuration element used on
-     *            the <code>createExecutableExtension(String)</code> call.
-     *            This argument can be used in the cases where a single
-     *            configuration element is used to define multiple executable
-     *            extensions.
-     * @param data
-     *            adapter data in the form of a <code>String</code>, a
-     *            <code>Hashtable</code>, or <code>null</code>.
-     * @throws CoreException
-     *             if error(s) detected during initialization processing
-     * 
-     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-     *      java.lang.String, java.lang.Object)
-     */
-    public void setInitializationData(final IConfigurationElement config,
-            final String propertyName, final Object data) throws CoreException {
-        // Do nothing, by default
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerActivation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerActivation.java
deleted file mode 100644
index 2a2a92a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerActivation.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.StringWriter;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.services.EvaluationResultCache;
-import org.eclipse.ui.services.IEvaluationReference;
-
-/**
- * <p>
- * A token representing the activation of a handler. This token can later be
- * used to cancel that activation. Without this token, then handler will only
- * become inactive if the component in which the handler was activated is
- * destroyed.
- * </p>
- * <p>
- * This caches the command id and the handler, so that they can later be
- * identified.
- * </p>
- * <p>
- * <b>Note:</b> this class has a natural ordering that is inconsistent with
- * equals.
- * </p>
- * 
- * @since 3.1
- */
-final class HandlerActivation extends EvaluationResultCache implements
-		IHandlerActivation {
-
-	/**
-	 * The identifier for the command which the activated handler handles. This
-	 * value is never <code>null</code>.
-	 */
-	private final String commandId;
-
-	/**
-	 * The depth of services at which this token was created. This is used as a
-	 * final tie-breaker if all other things are equivalent.
-	 */
-	private final int depth;
-
-	/**
-	 * The handler that has been activated. This value may be <code>null</code>.
-	 */
-	private final IHandler handler;
-
-	/**
-	 * The handler service from which this handler activation was request. This
-	 * value is never <code>null</code>.
-	 */
-	private final IHandlerService handlerService;
-
-	private IEvaluationReference reference = null;
-	
-	private IPropertyChangeListener listener = null;
-
-	/**
-	 * Constructs a new instance of <code>HandlerActivation</code>.
-	 * 
-	 * @param commandId
-	 *            The identifier for the command which the activated handler
-	 *            handles. This value must not be <code>null</code>.
-	 * @param handler `
-	 *            The handler that has been activated. This value may be
-	 *            <code>null</code>.
-	 * @param expression
-	 *            The expression that must evaluate to <code>true</code>
-	 *            before this handler is active. This value may be
-	 *            <code>null</code> if it is always active.</code>.
-	 * @param depth
-	 *            The depth at which this activation was created within the
-	 *            services hierarchy. This is used as the final tie-breaker if
-	 *            all other conditions are equal. This should be a positive
-	 *            integer.
-	 * @param handlerService
-	 *            The handler service from which the handler activation was
-	 *            requested; must not be <code>null</code>.
-	 * @see ISources
-	 */
-	HandlerActivation(final String commandId, final IHandler handler,
-			final Expression expression, final int depth,
-			final IHandlerService handlerService) {
-		super(expression);
-
-		if (commandId == null) {
-			throw new NullPointerException(
-					"The command identifier for a handler activation cannot be null"); //$NON-NLS-1$
-		}
-
-		if (handlerService == null) {
-			throw new NullPointerException(
-					"The handler service for an activation cannot be null"); //$NON-NLS-1$
-		}
-
-		this.commandId = commandId;
-		this.depth = depth;
-		this.handler = handler;
-		this.handlerService = handlerService;
-	}
-
-	public final void clearActive() {
-		clearResult();
-	}
-
-	/**
-	 * Implement {@link Comparable#compareTo(Object)}.
-	 * <p>
-	 * <b>Note:</b> this class has a natural ordering that is inconsistent with
-	 * equals.
-	 * </p>
-	 */
-	public final int compareTo(final Object object) {
-		final IHandlerActivation activation = (IHandlerActivation) object;
-		int difference;
-
-		// Check the priorities
-		int thisPriority = this.getSourcePriority();
-		int thatPriority = activation.getSourcePriority();
-
-		// rogue bit problem - ISources.ACTIVE_MENU
-		int thisLsb = 0;
-		int thatLsb = 0;
-
-		if (((thisPriority & ISources.ACTIVE_MENU) | (thatPriority & ISources.ACTIVE_MENU)) != 0) {
-			thisLsb = thisPriority & 1;
-			thisPriority = (thisPriority >> 1) & 0x7fffffff;
-			thatLsb = thatPriority & 1;
-			thatPriority = (thatPriority >> 1) & 0x7fffffff;
-		}
-
-		difference = thisPriority - thatPriority;
-		if (difference != 0) {
-			return difference;
-		}
-
-		// if all of the higher bits are the same, check the
-		// difference of the LSB
-		difference = thisLsb - thatLsb;
-		if (difference != 0) {
-			return difference;
-		}
-
-		// Check depth
-		final int thisDepth = this.getDepth();
-		final int thatDepth = activation.getDepth();
-		difference = thisDepth - thatDepth;
-		return difference;
-	}
-
-	public final String getCommandId() {
-		return commandId;
-	}
-
-	public final int getDepth() {
-		return depth;
-	}
-
-	public final IHandler getHandler() {
-		return handler;
-	}
-
-	public final IHandlerService getHandlerService() {
-		return handlerService;
-	}
-
-	public final boolean isActive(final IEvaluationContext context) {
-		return evaluate(context);
-	}
-
-	public final String toString() {
-		final StringWriter sw = new StringWriter();
-		final BufferedWriter buffer = new BufferedWriter(sw);
-
-		try {
-			buffer.write("HandlerActivation(commandId="); //$NON-NLS-1$
-			buffer.write(commandId);
-			buffer.write(',');
-			buffer.newLine();
-			buffer.write("\thandler="); //$NON-NLS-1$
-			buffer.write(handler == null ? "" : handler.toString()); //$NON-NLS-1$
-			buffer.write(',');
-			buffer.newLine();
-			buffer.write("\texpression="); //$NON-NLS-1$
-			Expression exp = getExpression();
-			buffer.write(exp == null ? "" : exp.toString()); //$NON-NLS-1$
-			buffer.write(",sourcePriority="); //$NON-NLS-1$
-			buffer.write(Integer.toString(getSourcePriority()));
-			buffer.write(')');
-			buffer.flush();
-		} catch (IOException e) {
-			// we're a string buffer, there should be no IO exception
-		}
-		return sw.toString();
-	}
-
-	/**
-	 * @return Returns the reference.
-	 */
-	public IEvaluationReference getReference() {
-		return reference;
-	}
-
-	/**
-	 * @param reference
-	 *            The reference to set.
-	 */
-	public void setReference(IEvaluationReference reference) {
-		this.reference = reference;
-	}
-
-	/**
-	 * @param listener The listener to set.
-	 */
-	public void setListener(IPropertyChangeListener listener) {
-		this.listener = listener;
-	}
-
-	/**
-	 * @return Returns the listener.
-	 */
-	public IPropertyChangeListener getListener() {
-		return listener;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerAuthority.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerAuthority.java
deleted file mode 100644
index f703e19..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerAuthority.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.services.EvaluationResultCacheComparator;
-import org.eclipse.ui.internal.services.EvaluationService;
-import org.eclipse.ui.internal.services.IEvaluationResultCache;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.services.ISourceProviderService;
-
-/**
- * <p>
- * A central authority for resolving conflicts between handlers. This authority
- * listens to a variety of incoming sources, and updates the underlying commands
- * if changes in the active handlers occur.
- * </p>
- * <p>
- * This authority encapsulates all of the handler conflict resolution mechanisms
- * for the workbench. A conflict occurs if two or more handlers are assigned to
- * the same command identifier. To resolve this conflict, the authority
- * considers which source the handler came from.
- * </p>
- * 
- * @since 3.1
- */
-final class HandlerAuthority {
-
-	/**
-	 * Whether the workbench command support should kick into debugging mode.
-	 * This causes the unresolvable handler conflicts to be printed to the
-	 * console.
-	 */
-	private static final boolean DEBUG = Policy.DEBUG_HANDLERS;
-
-	/**
-	 * Whether the performance information should be printed about the
-	 * performance of the handler authority.
-	 */
-	private static final boolean DEBUG_PERFORMANCE = Policy.DEBUG_HANDLERS_PERFORMANCE;
-
-	/**
-	 * Whether the workbench command support should kick into verbose debugging
-	 * mode. This causes the resolvable handler conflicts to be printed to the
-	 * console.
-	 */
-	private static final boolean DEBUG_VERBOSE = Policy.DEBUG_HANDLERS
-			&& Policy.DEBUG_HANDLERS_VERBOSE;
-
-	/**
-	 * The command identifier to which the verbose output should be restricted.
-	 */
-	private static final String DEBUG_VERBOSE_COMMAND_ID = Policy.DEBUG_HANDLERS_VERBOSE_COMMAND_ID;
-
-	/**
-	 * The component name to print when displaying tracing information.
-	 */
-	private static final String TRACING_COMPONENT = "HANDLERS"; //$NON-NLS-1$
-
-	private static final String[] SELECTION_VARIABLES = {
-			ISources.ACTIVE_CURRENT_SELECTION_NAME,
-			ISources.ACTIVE_FOCUS_CONTROL_ID_NAME,
-			ISources.ACTIVE_FOCUS_CONTROL_NAME,
-			ISources.ACTIVE_MENU_EDITOR_INPUT_NAME, ISources.ACTIVE_MENU_NAME,
-			ISources.ACTIVE_MENU_SELECTION_NAME };
-
-	/**
-	 * The command service that should be updated when the handlers are
-	 * changing. This value is never <code>null</code>.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * This is a map of handler activations (<code>SortedSet</code> of
-	 * <code>IHandlerActivation</code>) sorted by command identifier (<code>String</code>).
-	 * If there is only one handler activation for a command, then the
-	 * <code>SortedSet</code> is replaced by a <code>IHandlerActivation</code>.
-	 * If there is no activation, the entry should be removed entirely.
-	 */
-	private final Map handlerActivationsByCommandId = new HashMap();
-
-	private Set previousLogs = new HashSet();
-
-	private IServiceLocator locator;
-
-	private Collection changedCommandIds = new HashSet();
-
-	private IPropertyChangeListener serviceListener;
-
-	/**
-	 * Constructs a new instance of <code>HandlerAuthority</code>.
-	 * 
-	 * @param commandService
-	 *            The command service from which commands can be retrieved (to
-	 *            update their handlers); must not be <code>null</code>.
-	 * @param locator
-	 *            the appropriate service locator
-	 */
-	HandlerAuthority(final ICommandService commandService,
-			final IServiceLocator locator) {
-		if (commandService == null) {
-			throw new NullPointerException(
-					"The handler authority needs a command service"); //$NON-NLS-1$
-		}
-
-		this.commandService = commandService;
-		this.locator = locator;
-	}
-
-	private IEvaluationService evalService = null;
-
-	private IEvaluationService getEvaluationService() {
-		if (evalService == null) {
-			evalService = (IEvaluationService) locator
-					.getService(IEvaluationService.class);
-			evalService.addServiceListener(getServiceListener());
-		}
-		return evalService;
-	}
-
-	private IPropertyChangeListener getServiceListener() {
-		if (serviceListener == null) {
-			serviceListener = new IPropertyChangeListener() {
-				public void propertyChange(PropertyChangeEvent event) {
-					if (IEvaluationService.PROP_NOTIFYING.equals(event
-							.getProperty())) {
-						if (event.getNewValue() instanceof Boolean) {
-							boolean startNotifying = ((Boolean) event
-									.getNewValue()).booleanValue();
-							if (startNotifying) {
-								changedCommandIds.clear();
-							} else {
-								processChangedCommands();
-							}
-						}
-					}
-				}
-			};
-		}
-		return serviceListener;
-	}
-
-	public void dispose() {
-		if (serviceListener != null) {
-			getEvaluationService().removeServiceListener(serviceListener);
-			serviceListener = null;
-		}
-	}
-
-	/**
-	 * Activates a handler on the workbench. This will add it to a master list.
-	 * If conflicts exist, they will be resolved based on the source priority.
-	 * If conflicts still exist, then no handler becomes active.
-	 * 
-	 * @param activation
-	 *            The activation; must not be <code>null</code>.
-	 */
-	final void activateHandler(final IHandlerActivation activation) {
-		final HandlerActivation handler = (HandlerActivation) activation;
-
-		// First we update the handlerActivationsByCommandId map.
-		final String commandId = handler.getCommandId();
-		MultiStatus conflicts = new MultiStatus("org.eclipse.ui.workbench", 0, //$NON-NLS-1$
-				"A handler conflict occurred.  This may disable some commands.", //$NON-NLS-1$
-				null);
-		final Object value = handlerActivationsByCommandId.get(commandId);
-		if (value instanceof SortedSet) {
-			final SortedSet handlerActivations = (SortedSet) value;
-			if (!handlerActivations.contains(handler)) {
-				handlerActivations.add(handler);
-				if (handler.getExpression() != null) {
-					HandlerPropertyListener l = new HandlerPropertyListener(
-							handler);
-					handler.setReference(getEvaluationService()
-							.addEvaluationListener(handler.getExpression(), l,
-									handler.getCommandId()));
-				}
-				updateCommand(commandId, resolveConflicts(commandId,
-						handlerActivations, conflicts));
-			}
-		} else if (value instanceof IHandlerActivation) {
-			if (value != handler) {
-				final SortedSet handlerActivations = new TreeSet(
-						new EvaluationResultCacheComparator());
-				handlerActivations.add(value);
-				handlerActivations.add(handler);
-				if (handler.getExpression() != null) {
-					HandlerPropertyListener l = new HandlerPropertyListener(
-							handler);
-					handler.setReference(getEvaluationService()
-							.addEvaluationListener(handler.getExpression(), l,
-									handler.getCommandId()));
-				}
-				handlerActivationsByCommandId
-						.put(commandId, handlerActivations);
-				updateCommand(commandId, resolveConflicts(commandId,
-						handlerActivations, conflicts));
-			}
-		} else {
-			handlerActivationsByCommandId.put(commandId, handler);
-			if (handler.getExpression() != null) {
-				HandlerPropertyListener l = new HandlerPropertyListener(handler);
-				handler.setReference(getEvaluationService()
-						.addEvaluationListener(handler.getExpression(), l,
-								handler.getCommandId()));
-			}
-			updateCommand(commandId, (evaluate(handler) ? handler : null));
-		}
-
-		if (conflicts.getSeverity() != IStatus.OK) {
-			WorkbenchPlugin.log(conflicts);
-		}
-	}
-
-	/**
-	 * Removes an activation for a handler on the workbench. This will remove it
-	 * from the master list, and update the appropriate command, if necessary.
-	 * 
-	 * @param activation
-	 *            The activation; must not be <code>null</code>.
-	 */
-	final void deactivateHandler(final IHandlerActivation activation) {
-		final HandlerActivation handler = (HandlerActivation) activation;
-
-		// First we update the handlerActivationsByCommandId map.
-		final String commandId = handler.getCommandId();
-		MultiStatus conflicts = new MultiStatus("org.eclipse.ui.workbench", 0, //$NON-NLS-1$
-				"A handler conflict occurred.  This may disable some commands.", //$NON-NLS-1$
-				null);
-		final Object value = handlerActivationsByCommandId.get(commandId);
-		if (value instanceof SortedSet) {
-			final SortedSet handlerActivations = (SortedSet) value;
-			if (handlerActivations.contains(handler)) {
-				handlerActivations.remove(handler);
-				if (handler.getReference() != null) {
-					getEvaluationService().removeEvaluationListener(
-							handler.getReference());
-					handler.setReference(null);
-					handler.setListener(null);
-				}
-				if (handlerActivations.isEmpty()) {
-					handlerActivationsByCommandId.remove(commandId);
-					updateCommand(commandId, null);
-
-				} else if (handlerActivations.size() == 1) {
-					final IHandlerActivation remainingActivation = (IHandlerActivation) handlerActivations
-							.iterator().next();
-					handlerActivationsByCommandId.put(commandId,
-							remainingActivation);
-					updateCommand(
-							commandId,
-							(evaluate(remainingActivation) ? remainingActivation
-									: null));
-
-				} else {
-					updateCommand(commandId, resolveConflicts(commandId,
-							handlerActivations, conflicts));
-				}
-			}
-		} else if (value instanceof IHandlerActivation) {
-			if (value == handler) {
-				if (handler.getReference() != null) {
-					getEvaluationService().removeEvaluationListener(
-							handler.getReference());
-					handler.setReference(null);
-					handler.setListener(null);
-				}
-
-				handlerActivationsByCommandId.remove(commandId);
-				updateCommand(commandId, null);
-			}
-		}
-		if (conflicts.getSeverity() != IStatus.OK) {
-			WorkbenchPlugin.log(conflicts);
-		}
-	}
-
-	/**
-	 * Resolves conflicts between multiple handlers for the same command
-	 * identifier. This tries to select the best activation based on the source
-	 * priority. For the sake of comparison, activations with the same handler
-	 * are considered equivalent (i.e., non-conflicting).
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the conflicts should
-	 *            be detected; must not be <code>null</code>. This is only
-	 *            used for debugging purposes.
-	 * @param activations
-	 *            All of the possible handler activations for the given command
-	 *            identifier; must not be <code>null</code>.
-	 * @return The best matching handler activation. If none can be found (e.g.,
-	 *         because of unresolvable conflicts), then this returns
-	 *         <code>null</code>.
-	 */
-	private final IHandlerActivation resolveConflicts(final String commandId,
-			final SortedSet activations, MultiStatus conflicts) {
-		// If we don't have any, then there is no match.
-		if (activations.isEmpty()) {
-			return null;
-		}
-
-		// Cycle over the activations, remembered the current best.
-		final Iterator activationItr = activations.iterator();
-		IHandlerActivation bestActivation = null;
-		IHandlerActivation currentActivation = null;
-		boolean conflict = false;
-		while (activationItr.hasNext()) {
-			currentActivation = (IHandlerActivation) activationItr.next();
-			if (!evaluate(currentActivation)) {
-				continue; // only consider potentially active handlers
-			}
-
-			// Check to see if we haven't found a potentially active handler yet
-			if ((DEBUG_VERBOSE)
-					&& ((DEBUG_VERBOSE_COMMAND_ID == null) || (DEBUG_VERBOSE_COMMAND_ID
-							.equals(commandId)))) {
-				Tracing.printTrace(TRACING_COMPONENT,
-						"    resolveConflicts: eval: " + currentActivation); //$NON-NLS-1$
-			}
-			if (bestActivation == null) {
-				bestActivation = currentActivation;
-				conflict = false;
-				continue;
-			}
-
-			// Compare the two handlers.
-			final int comparison = bestActivation.compareTo(currentActivation);
-			if (comparison < 0) {
-				bestActivation = currentActivation;
-				conflict = false;
-
-			} else if (comparison == 0) {
-				if (currentActivation.getHandler() != bestActivation
-						.getHandler()) {
-					conflict = true;
-					break;
-				}
-
-			} else {
-				break;
-			}
-		}
-
-		// If we are logging information, now is the time to do it.
-		if (DEBUG) {
-			if (conflict) {
-				Tracing.printTrace(TRACING_COMPONENT,
-						"Unresolved conflict detected for '" //$NON-NLS-1$
-								+ commandId + '\'');
-			} else if ((bestActivation != null)
-					&& (DEBUG_VERBOSE)
-					&& ((DEBUG_VERBOSE_COMMAND_ID == null) || (DEBUG_VERBOSE_COMMAND_ID
-							.equals(commandId)))) {
-				Tracing
-						.printTrace(TRACING_COMPONENT,
-								"Resolved conflict detected.  The following activation won: "); //$NON-NLS-1$
-				Tracing.printTrace(TRACING_COMPONENT, "    " + bestActivation); //$NON-NLS-1$
-			}
-		}
-
-		// Return the current best.
-		if (conflict) {
-			if (previousLogs.add(commandId)) {
-				final StringWriter sw = new StringWriter();
-				final BufferedWriter buffer = new BufferedWriter(sw);
-				try {
-					buffer.write("Conflict for \'"); //$NON-NLS-1$
-					buffer.write(commandId);
-					buffer.write("\':"); //$NON-NLS-1$
-					buffer.newLine();
-					buffer.write(bestActivation.toString());
-					buffer.newLine();
-					buffer.write(currentActivation.toString());
-					buffer.flush();
-				} catch (IOException e) {
-					// should never get this.
-				}
-
-				IStatus s = new Status(IStatus.WARNING,
-						"org.eclipse.ui.workbench", //$NON-NLS-1$
-						sw.toString());
-				conflicts.add(s);
-			}
-			return null;
-		}
-		return bestActivation;
-	}
-
-	/**
-	 * Carries out the actual source change notification. It assumed that by the
-	 * time this method is called, <code>context</code> is up-to-date with the
-	 * current state of the application.
-	 * 
-	 * @param sourcePriority
-	 *            A bit mask of all the source priorities that have changed.
-	 */
-	protected final void sourceChanged(final int sourcePriority) {
-		// we don't do this anymore ... we just keep walking.
-	}
-
-	/**
-	 * Updates the command with the given handler activation.
-	 * 
-	 * @param commandId
-	 *            The identifier of the command which should be updated; must
-	 *            not be <code>null</code>.
-	 * @param activation
-	 *            The activation to use; may be <code>null</code> if the
-	 *            command should have a <code>null</code> handler.
-	 */
-	private final void updateCommand(final String commandId,
-			final IHandlerActivation activation) {
-		final Command command = commandService.getCommand(commandId);
-		if (activation == null) {
-			command.setHandler(null);
-		} else {
-			command.setHandler(activation.getHandler());
-			commandService.refreshElements(commandId, null);
-		}
-	}
-
-	/**
-	 * Currently this is a an internal method to help locate a handler.
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            the command id to check
-	 * @param context
-	 *            the context to use for activations
-	 * @since 3.3
-	 */
-	public final IHandler findHandler(String commandId,
-			IEvaluationContext context) {
-		Object o = handlerActivationsByCommandId.get(commandId);
-		if (o instanceof IHandlerActivation) {
-			IHandlerActivation activation = (IHandlerActivation) o;
-			try {
-				if (eval(context, activation)) {
-					return activation.getHandler();
-				}
-			} catch (CoreException e) {
-				// the evalution failed
-			}
-		} else if (o instanceof SortedSet) {
-			SortedSet activations = (SortedSet) o;
-			IHandlerActivation lastActivation = null;
-			IHandlerActivation currentActivation = null;
-			Iterator i = activations.iterator();
-			while (i.hasNext() && lastActivation == null) {
-				IHandlerActivation activation = (IHandlerActivation) i.next();
-				try {
-					if (eval(context, activation)) {
-						lastActivation = currentActivation;
-						currentActivation = activation;
-					}
-				} catch (CoreException e) {
-					// OK, this one is out of the running
-				}
-			}
-			if (currentActivation != null) {
-				if (lastActivation == null) {
-					return currentActivation.getHandler();
-				}
-				if (lastActivation.getSourcePriority() != currentActivation
-						.getSourcePriority()) {
-					return lastActivation.getHandler();
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Evaluate the expression for the handler and bypass the result cache.
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 * 
-	 * @param context
-	 * @param activation
-	 * @return <code>true</code> if the handler expression can evaluate to
-	 *         true.
-	 * @throws CoreException
-	 * @since 3.3
-	 */
-	private boolean eval(IEvaluationContext context,
-			IHandlerActivation activation) throws CoreException {
-		Expression expression = activation.getExpression();
-		if (expression == null) {
-			return true;
-		}
-		return expression.evaluate(context) == EvaluationResult.TRUE;
-	}
-
-	public IEvaluationContext createContextSnapshot(boolean includeSelection) {
-		IEvaluationContext tmpContext = getCurrentState();
-
-		EvaluationContext context = null;
-		if (includeSelection) {
-			context = new EvaluationContext(null, tmpContext
-					.getDefaultVariable());
-			for (int i = 0; i < SELECTION_VARIABLES.length; i++) {
-				copyVariable(context, tmpContext, SELECTION_VARIABLES[i]);
-			}
-		} else {
-			context = new EvaluationContext(null, Collections.EMPTY_LIST);
-		}
-
-		ISourceProviderService sp = (ISourceProviderService) locator
-				.getService(ISourceProviderService.class);
-		ISourceProvider[] providers = sp.getSourceProviders();
-		for (int i = 0; i < providers.length; i++) {
-			String[] names = providers[i].getProvidedSourceNames();
-			for (int j = 0; j < names.length; j++) {
-				if (!isSelectionVariable(names[j])) {
-					copyVariable(context, tmpContext, names[j]);
-				}
-			}
-		}
-
-		return context;
-	}
-
-	private boolean isSelectionVariable(String name) {
-		for (int i = 0; i < SELECTION_VARIABLES.length; i++) {
-			if (SELECTION_VARIABLES[i].equals(name)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	private void copyVariable(IEvaluationContext context,
-			IEvaluationContext tmpContext, String var) {
-		Object o = tmpContext.getVariable(var);
-		if (o != null) {
-			context.addVariable(var, o);
-		}
-	}
-
-	private class HandlerPropertyListener implements IPropertyChangeListener {
-		private HandlerActivation handler;
-
-		public HandlerPropertyListener(final HandlerActivation activation) {
-			handler = activation;
-			handler.setListener(this);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-		 */
-		public void propertyChange(PropertyChangeEvent event) {
-			if (handler.getCommandId().equals(event.getProperty())) {
-				boolean val = false;
-				if (event.getNewValue() instanceof Boolean) {
-					val = ((Boolean) event.getNewValue()).booleanValue();
-				}
-				handler.setResult(val);
-				changedCommandIds.add(handler.getCommandId());
-			}
-		}
-	}
-
-	private void processChangedCommands() {
-		// If tracing, then track how long it takes to process the activations.
-		long startTime = 0L;
-		if (DEBUG_PERFORMANCE) {
-			startTime = System.currentTimeMillis();
-		}
-
-		MultiStatus conflicts = new MultiStatus("org.eclipse.ui.workbench", 0, //$NON-NLS-1$
-				"A handler conflict occurred.  This may disable some commands.", //$NON-NLS-1$
-				null);
-
-		/*
-		 * For every command identifier with a changed activation, we resolve
-		 * conflicts and trigger an update.
-		 */
-		final Iterator changedCommandIdItr = changedCommandIds.iterator();
-		while (changedCommandIdItr.hasNext()) {
-			final String commandId = (String) changedCommandIdItr.next();
-			final Object value = handlerActivationsByCommandId.get(commandId);
-			if (value instanceof IHandlerActivation) {
-				final IHandlerActivation activation = (IHandlerActivation) value;
-				updateCommand(commandId, (evaluate(activation) ? activation
-						: null));
-			} else if (value instanceof SortedSet) {
-				final IHandlerActivation activation = resolveConflicts(
-						commandId, (SortedSet) value, conflicts);
-				updateCommand(commandId, activation);
-			} else {
-				updateCommand(commandId, null);
-			}
-		}
-		if (conflicts.getSeverity() != IStatus.OK) {
-			WorkbenchPlugin.log(conflicts);
-		}
-
-		// If tracing performance, then print the results.
-		if (DEBUG_PERFORMANCE) {
-			final long elapsedTime = System.currentTimeMillis() - startTime;
-			final int size = changedCommandIds.size();
-			if (size > 0) {
-				Tracing.printTrace(TRACING_COMPONENT, size
-						+ " command ids changed in " + elapsedTime + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	protected final boolean evaluate(final IEvaluationResultCache expression) {
-		final IEvaluationContext contextWithDefaultVariable = getCurrentState();
-		return expression.evaluate(contextWithDefaultVariable);
-	}
-
-	public final IEvaluationContext getCurrentState() {
-		return getEvaluationService().getCurrentState();
-	}
-
-	public void updateShellKludge() {
-		((EvaluationService) getEvaluationService()).updateShellKludge();
-	}
-
-	public void updateShellKludge(Shell shell) {
-		((EvaluationService) getEvaluationService()).updateShellKludge(shell);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerPersistence.java
deleted file mode 100644
index fc77eb9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerPersistence.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.RegistryPersistence;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * <p>
- * A static class for accessing the registry.
- * </p>
- * 
- * @since 3.1
- */
-public final class HandlerPersistence extends RegistryPersistence {
-
-	/**
-	 * The index of the command elements in the indexed array.
-	 * 
-	 * @see HandlerPersistence#read()
-	 */
-	private static final int INDEX_COMMAND_DEFINITIONS = 0;
-
-	/**
-	 * The index of the command elements in the indexed array.
-	 * 
-	 * @see HandlerPersistence#read()
-	 */
-	private static final int INDEX_HANDLER_DEFINITIONS = 1;
-
-	/**
-	 * The index of the handler submissions in the indexed array.
-	 * 
-	 * @see HandlerPersistence#read()
-	 */
-	private static final int INDEX_HANDLER_SUBMISSIONS = 2;
-
-	/**
-	 * The handler activations that have come from the registry. This is used to
-	 * flush the activations when the registry is re-read. This value is never
-	 * <code>null</code>
-	 */
-	private final Collection handlerActivations = new ArrayList();
-
-	/**
-	 * The handler service with which this persistence class is associated. This
-	 * value must not be <code>null</code>.
-	 */
-	private final IHandlerService handlerService;
-
-	private IEvaluationService evaluationService;
-
-	/**
-	 * Constructs a new instance of <code>HandlerPersistence</code>.
-	 * 
-	 * @param handlerService
-	 *            The handler service with which the handlers should be
-	 *            registered; must not be <code>null</code>.
-	 * @param evaluationService
-	 *            The evaluation service used by handler proxies with enabled
-	 *            when expressions
-	 */
-	HandlerPersistence(final IHandlerService handlerService,
-			IEvaluationService evaluationService) {
-		this.handlerService = handlerService;
-		this.evaluationService = evaluationService;
-	}
-
-	/**
-	 * Deactivates all of the activations made by this class, and then clears
-	 * the collection. This should be called before every read.
-	 * 
-	 * @param handlerService
-	 *            The service handling the activations; must not be
-	 *            <code>null</code>.
-	 */
-	private final void clearActivations(final IHandlerService handlerService) {
-		handlerService.deactivateHandlers(handlerActivations);
-		Iterator i = handlerActivations.iterator();
-		while (i.hasNext()) {
-			IHandlerActivation activation = (IHandlerActivation) i.next();
-			if (activation.getHandler()!=null) {
-				activation.getHandler().dispose();
-			}
-		}
-		handlerActivations.clear();
-	}
-
-	public final void dispose() {
-		super.dispose();
-		clearActivations(handlerService);
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		return false;
-	}
-
-	public boolean handlersNeedUpdating(final IRegistryChangeEvent event) {
-		/*
-		 * Handlers will need to be re-read (i.e., re-verified) if any of the
-		 * handler extensions change (i.e., handlers, commands), or if any of
-		 * the command extensions change (i.e., action definitions).
-		 */
-		final IExtensionDelta[] handlerDeltas = event.getExtensionDeltas(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_HANDLERS);
-		if (handlerDeltas.length == 0) {
-			final IExtensionDelta[] commandDeltas = event.getExtensionDeltas(
-					PlatformUI.PLUGIN_ID,
-					IWorkbenchRegistryConstants.PL_COMMANDS);
-			if (commandDeltas.length == 0) {
-				final IExtensionDelta[] actionDefinitionDeltas = event
-						.getExtensionDeltas(
-								PlatformUI.PLUGIN_ID,
-								IWorkbenchRegistryConstants.PL_ACTION_DEFINITIONS);
-				if (actionDefinitionDeltas.length == 0) {
-					return false;
-				}
-			}
-		}
-
-		return true;
-	}
-	
-	/**
-	 * Reads all of the handlers from the registry
-	 * 
-	 * @param handlerService
-	 *            The handler service which should be populated with the values
-	 *            from the registry; must not be <code>null</code>.
-	 */
-	protected final void read() {
-		super.read();
-		reRead();
-	}
-
-	public final void reRead() {
-		// Create the extension registry mementos.
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		int commandDefinitionCount = 0;
-		int handlerDefinitionCount = 0;
-		int handlerSubmissionCount = 0;
-		final IConfigurationElement[][] indexedConfigurationElements = new IConfigurationElement[3][];
-
-		// Sort the commands extension point based on element name.
-		final IConfigurationElement[] commandsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_COMMANDS);
-		for (int i = 0; i < commandsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = commandsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a handler submission or a command definition.
-			if (TAG_HANDLER_SUBMISSION.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_HANDLER_SUBMISSIONS, handlerSubmissionCount++);
-			} else if (TAG_COMMAND.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_COMMAND_DEFINITIONS, commandDefinitionCount++);
-			}
-		}
-
-		// Sort the handler extension point based on element name.
-		final IConfigurationElement[] handlersExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_HANDLERS);
-		for (int i = 0; i < handlersExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = handlersExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a handler submission or a command definition.
-			if (TAG_HANDLER.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_HANDLER_DEFINITIONS, handlerDefinitionCount++);
-			}
-		}
-
-		clearActivations(handlerService);
-		readDefaultHandlersFromRegistry(
-				indexedConfigurationElements[INDEX_COMMAND_DEFINITIONS],
-				commandDefinitionCount);
-		readHandlerSubmissionsFromRegistry(
-				indexedConfigurationElements[INDEX_HANDLER_SUBMISSIONS],
-				handlerSubmissionCount);
-		readHandlersFromRegistry(
-				indexedConfigurationElements[INDEX_HANDLER_DEFINITIONS],
-				handlerDefinitionCount);
-	}
-	
-	/**
-	 * Reads the default handlers from an array of command elements from the
-	 * commands extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 */
-	private final void readDefaultHandlersFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			/*
-			 * Read out the command identifier. This was already checked by
-			 * <code>CommandPersistence</code>, so we'll just ignore any
-			 * problems here.
-			 */
-			final String commandId = readOptional(configurationElement, ATT_ID);
-			if (commandId == null) {
-				continue;
-			}
-
-			// Check to see if we have a default handler of any kind.
-			if ((configurationElement.getAttribute(ATT_DEFAULT_HANDLER) == null)
-					&& (configurationElement.getChildren(TAG_DEFAULT_HANDLER).length == 0)) {
-				continue;
-			}
-
-			handlerActivations.add(handlerService
-					.activateHandler(commandId, new HandlerProxy(commandId,
-							configurationElement, ATT_DEFAULT_HANDLER)));
-		}
-	}
-
-	/**
-	 * Reads all of the handlers from the handlers extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param handlerService
-	 *            The handler service to which the handlers should be added;
-	 *            must not be <code>null</code>.
-	 */
-	private final void readHandlersFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the command identifier.
-			final String commandId = readRequired(configurationElement,
-					ATT_COMMAND_ID, warningsToLog, "Handlers need a command id"); //$NON-NLS-1$
-			if (commandId == null) {
-				continue;
-			}
-
-			// Check to see if we have a handler class.
-			if (!checkClass(configurationElement, warningsToLog,
-					"Handlers need a class", commandId)) { //$NON-NLS-1$
-				continue;
-			}
-
-			// Get the activeWhen and enabledWhen expressions.
-			final Expression activeWhenExpression = readWhenElement(
-					configurationElement, TAG_ACTIVE_WHEN, commandId,
-					warningsToLog);
-			if (activeWhenExpression == ERROR_EXPRESSION) {
-				continue;
-			}
-			final Expression enabledWhenExpression = readWhenElement(
-					configurationElement, TAG_ENABLED_WHEN, commandId,
-					warningsToLog);
-			if (enabledWhenExpression == ERROR_EXPRESSION) {
-				continue;
-			}
-
-			final IHandler proxy = new HandlerProxy(commandId, configurationElement,
-					ATT_CLASS, enabledWhenExpression, evaluationService);
-			handlerActivations.add(handlerService.activateHandler(commandId,
-					proxy, activeWhenExpression));
-
-			// Read out the help context identifier.
-			final String helpContextId = readOptional(configurationElement,
-					ATT_HELP_CONTEXT_ID);
-			handlerService.setHelpContextId(proxy, helpContextId);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the handlers from the 'org.eclipse.ui.handlers' extension point."); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads all of the handler submissions from the commands extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param handlerService
-	 *            The handler service to which the handlers should be added;
-	 *            must not be <code>null</code>.
-	 */
-	private final void readHandlerSubmissionsFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the command identifier.
-			final String commandId = readRequired(configurationElement,
-					ATT_COMMAND_ID, warningsToLog,
-					"Handler submissions need a command id"); //$NON-NLS-1$
-			if (commandId == null) {
-				continue;
-			}
-
-			handlerActivations.add(handlerService.activateHandler(commandId,
-					new LegacyHandlerWrapper(new LegacyHandlerProxy(
-							configurationElement))));
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the handler submissions from the 'org.eclipse.ui.commands' extension point."); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerProxy.java
deleted file mode 100644
index 1379bf2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerProxy.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.HandlerEvent;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IHandler2;
-import org.eclipse.core.commands.IHandlerListener;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.commands.IElementUpdater;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.UIElement;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * <p>
- * A proxy for a handler that has been defined in XML. This delays the class
- * loading until the handler is really asked for information (besides the
- * priority or the command identifier). Asking a proxy for anything but the
- * attributes defined publicly in this class will cause the proxy to instantiate
- * the proxied handler.
- * </p>
- * 
- * @since 3.0
- */
-public final class HandlerProxy extends AbstractHandler implements
-		IElementUpdater {
-
-	private static Map CEToProxyMap = new HashMap();
-
-	/**
-	 * 
-	 */
-	private static final String PROP_ENABLED = "enabled"; //$NON-NLS-1$
-
-	/**
-	 * The configuration element from which the handler can be created. This
-	 * value will exist until the element is converted into a real class -- at
-	 * which point this value will be set to <code>null</code>.
-	 */
-	private IConfigurationElement configurationElement;
-
-	/**
-	 * The <code>enabledWhen</code> expression for the handler. Only if this
-	 * expression evaluates to <code>true</code> (or the value is
-	 * <code>null</code>) should we consult the handler.
-	 */
-	private final Expression enabledWhenExpression;
-
-	/**
-	 * The real handler. This value is <code>null</code> until the proxy is
-	 * forced to load the real handler. At this point, the configuration element
-	 * is converted, nulled out, and this handler gains a reference.
-	 */
-	private IHandler handler = null;
-
-	/**
-	 * The name of the configuration element attribute which contains the
-	 * information necessary to instantiate the real handler.
-	 */
-	private final String handlerAttributeName;
-
-	private IHandlerListener handlerListener;
-
-	/**
-	 * The evaluation service to use when evaluating
-	 * <code>enabledWhenExpression</code>. This value may be
-	 * <code>null</code> only if the <code>enabledWhenExpression</code> is
-	 * <code>null</code>.
-	 */
-	private IEvaluationService evaluationService;
-
-	private IPropertyChangeListener enablementListener;
-
-	private IEvaluationReference enablementRef;
-
-	private boolean proxyEnabled;
-	
-	private String commandId;
-
-	/**
-	 * Constructs a new instance of <code>HandlerProxy</code> with all the
-	 * information it needs to try to avoid loading until it is needed.
-	 * 
-	 * @param commandId the id for this handler
-	 * @param configurationElement
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time; must not be <code>null</code>.
-	 * @param handlerAttributeName
-	 *            The name of the attibute or element containing the handler
-	 *            executable extension; must not be <code>null</code>.
-	 */
-	public HandlerProxy(final String commandId, final IConfigurationElement configurationElement,
-			final String handlerAttributeName) {
-		this(commandId, configurationElement, handlerAttributeName, null, null);
-	}
-
-	/**
-	 * Constructs a new instance of <code>HandlerProxy</code> with all the
-	 * information it needs to try to avoid loading until it is needed.
-	 * 
-	 * @param commandId the id for this handler
-	 * @param configurationElement
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time; must not be <code>null</code>.
-	 * @param handlerAttributeName
-	 *            The name of the attribute or element containing the handler
-	 *            executable extension; must not be <code>null</code>.
-	 * @param enabledWhenExpression
-	 *            The name of the element containing the enabledWhen expression.
-	 *            This should be a child of the
-	 *            <code>configurationElement</code>. If this value is
-	 *            <code>null</code>, then there is no enablement expression
-	 *            (i.e., enablement will be delegated to the handler when
-	 *            possible).
-	 * @param evaluationService
-	 *            The evaluation service to manage enabledWhen expressions
-	 *            trying to evaluate the <code>enabledWhenExpression</code>.
-	 *            This value may be <code>null</code> only if the
-	 *            <code>enabledWhenExpression</code> is <code>null</code>.
-	 */
-	public HandlerProxy(final String commandId, 
-			final IConfigurationElement configurationElement,
-			final String handlerAttributeName,
-			final Expression enabledWhenExpression,
-			final IEvaluationService evaluationService) {
-		if (configurationElement == null) {
-			throw new NullPointerException(
-					"The configuration element backing a handler proxy cannot be null"); //$NON-NLS-1$
-		}
-
-		if (handlerAttributeName == null) {
-			throw new NullPointerException(
-					"The attribute containing the handler class must be known"); //$NON-NLS-1$
-		}
-
-		if ((enabledWhenExpression != null) && (evaluationService == null)) {
-			throw new NullPointerException(
-					"We must have a handler service and evaluation service to support the enabledWhen expression"); //$NON-NLS-1$
-		}
-
-		this.commandId = commandId;
-		this.configurationElement = configurationElement;
-		this.handlerAttributeName = handlerAttributeName;
-		this.enabledWhenExpression = enabledWhenExpression;
-		this.evaluationService = evaluationService;
-		if (enabledWhenExpression != null) {
-			setProxyEnabled(false);
-			registerEnablement();
-		} else {
-			setProxyEnabled(true);
-		}
-
-		CEToProxyMap.put(configurationElement, this);
-	}
-
-	public static void updateStaleCEs(IConfigurationElement[] replacements) {
-		for (int i = 0; i < replacements.length; i++) {
-			HandlerProxy proxy = (HandlerProxy) CEToProxyMap
-					.get(replacements[i]);
-			if (proxy != null)
-				proxy.configurationElement = replacements[i];
-		}
-	}
-
-	/**
-	 * 
-	 */
-	private void registerEnablement() {
-		enablementRef = evaluationService.addEvaluationListener(
-				enabledWhenExpression, getEnablementListener(), PROP_ENABLED);
-	}
-
-	public void setEnabled(Object evaluationContext) {
-		if (!(evaluationContext instanceof IEvaluationContext)) {
-			return;
-		}
-		IEvaluationContext context = (IEvaluationContext) evaluationContext;
-		if (enabledWhenExpression != null) {
-			try {
-				setProxyEnabled(enabledWhenExpression.evaluate(context) == EvaluationResult.TRUE);
-			} catch (CoreException e) {
-				// TODO should we log this exception, or just treat it as
-				// a failure
-			}
-		}
-		if (isOkToLoad() && loadHandler()) {
-			if (handler instanceof IHandler2) {
-				((IHandler2) handler).setEnabled(evaluationContext);
-			}
-		}
-	}
-
-	void setProxyEnabled(boolean enabled) {
-		proxyEnabled = enabled;
-	}
-
-	boolean getProxyEnabled() {
-		return proxyEnabled;
-	}
-
-	/**
-	 * @return
-	 */
-	private IPropertyChangeListener getEnablementListener() {
-		if (enablementListener == null) {
-			enablementListener = new IPropertyChangeListener() {
-				public void propertyChange(PropertyChangeEvent event) {
-					if (event.getProperty() == PROP_ENABLED) {
-						setProxyEnabled(event.getNewValue() == null ? false
-								: ((Boolean) event.getNewValue())
-										.booleanValue());
-						fireHandlerChanged(new HandlerEvent(HandlerProxy.this,
-								true, false));
-					}
-				}
-			};
-		}
-		return enablementListener;
-	}
-
-	/**
-	 * Passes the dipose on to the proxied handler, if it has been loaded.
-	 */
-	public final void dispose() {
-		if (handler != null) {
-			if (handlerListener != null) {
-				handler.removeHandlerListener(handlerListener);
-				handlerListener = null;
-			}
-			handler.dispose();
-			handler = null;
-		}
-		if (enablementListener != null) {
-			evaluationService.removeEvaluationListener(enablementRef);
-			enablementRef = null;
-			enablementListener = null;
-		}
-	}
-
-	public final Object execute(final ExecutionEvent event)
-			throws ExecutionException {
-		if (loadHandler()) {
-			if (!isEnabled()) {
-				MessageDialog.openInformation(Util.getShellToParentOn(),
-						WorkbenchMessages.Information,
-						WorkbenchMessages.PluginAction_disabledMessage);
-				return null;
-			}
-			return handler.execute(event);
-		}
-
-		return null;
-	}
-
-	public final boolean isEnabled() {
-		if (enabledWhenExpression != null) {
-			// proxyEnabled reflects the enabledWhen clause
-			if (!getProxyEnabled()) {
-				return false;
-			}
-			if (isOkToLoad() && loadHandler()) {
-				return handler.isEnabled();
-			}
-
-			return true;
-		}
-
-		/*
-		 * There is no enabled when expression, so we just need to consult the
-		 * handler.
-		 */
-		if (isOkToLoad() && loadHandler()) {
-			return handler.isEnabled();
-		}
-		return true;
-	}
-
-	public final boolean isHandled() {
-		if (configurationElement != null && handler == null) {
-			return true;
-		}
-
-		if (isOkToLoad() && loadHandler()) {
-			return handler.isHandled();
-		}
-
-		return false;
-	}
-
-	/**
-	 * Loads the handler, if possible. If the handler is loaded, then the member
-	 * variables are updated accordingly.
-	 * 
-	 * @return <code>true</code> if the handler is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadHandler() {
-		if (handler == null) {
-			// Load the handler.
-			try {
-				if (configurationElement != null) {
-					handler = (IHandler) configurationElement
-							.createExecutableExtension(handlerAttributeName);
-					handler.addHandlerListener(getHandlerListener());
-					setEnabled(evaluationService == null ? null
-							: evaluationService.getCurrentState());
-					refreshElements();
-					return true;
-				}
-
-			} catch (final ClassCastException e) {
-				final String message = "The proxied handler was the wrong class"; //$NON-NLS-1$
-				final IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				configurationElement = null;
-
-			} catch (final CoreException e) {
-				final String message = "The proxied handler for '" + configurationElement.getAttribute(handlerAttributeName) //$NON-NLS-1$
-						+ "' could not be loaded"; //$NON-NLS-1$
-				IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				configurationElement = null;
-			}
-			return false;
-		}
-
-		return true;
-	}
-
-	private IHandlerListener getHandlerListener() {
-		if (handlerListener == null) {
-			handlerListener = new IHandlerListener() {
-				public void handlerChanged(HandlerEvent handlerEvent) {
-					fireHandlerChanged(new HandlerEvent(HandlerProxy.this,
-							handlerEvent.isEnabledChanged(), handlerEvent
-									.isHandledChanged()));
-				}
-			};
-		}
-		return handlerListener;
-	}
-
-	public final String toString() {
-		if (handler == null) {
-			if (configurationElement != null) {
-				String configurationElementAttribute = getConfigurationElementAttribute();
-				if (configurationElementAttribute != null) {
-					return configurationElementAttribute;
-				}
-			}
-			return "HandlerProxy()"; //$NON-NLS-1$
-		}
-
-		return handler.toString();
-	}
-
-	/**
-	 * Retrives the ConfigurationElement attribute according to the
-	 * <code>handlerAttributeName</code>.
-	 * 
-	 * @return the handlerAttributeName value, may be <code>null</code>.
-	 */
-	private String getConfigurationElementAttribute() {
-		String attribute = configurationElement
-				.getAttribute(handlerAttributeName);
-		if (attribute == null) {
-			IConfigurationElement[] children = configurationElement
-					.getChildren(handlerAttributeName);
-			for (int i = 0; i < children.length; i++) {
-				String childAttribute = children[i]
-						.getAttribute(IWorkbenchRegistryConstants.ATT_CLASS);
-				if (childAttribute != null) {
-					return childAttribute;
-				}
-			}
-		}
-		return attribute;
-	}
-
-	private boolean isOkToLoad() {
-		if (configurationElement != null && handler == null) {
-			final String bundleId = configurationElement.getContributor()
-					.getName();
-			return BundleUtility.isActive(bundleId);
-		}
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IElementUpdater#updateElement(org.eclipse.ui.menus.UIElement,
-	 *      java.util.Map)
-	 */
-	public void updateElement(UIElement element, Map parameters) {
-		if (handler != null && handler instanceof IElementUpdater) {
-			((IElementUpdater) handler).updateElement(element, parameters);
-		}
-	}
-	
-	private void refreshElements() {
-		if (commandId==null || !(handler instanceof IElementUpdater)) {
-			return;
-		}
-		ICommandService cs = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
-		cs.refreshElements(commandId, null);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerService.java
deleted file mode 100644
index 260b4e7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerService.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IHandler2;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * Provides services related to activating and deactivating handlers within the
- * workbench.
- * </p>
- * 
- * @since 3.1
- */
-public final class HandlerService implements IHandlerService {
-
-	static {
-		Command.DEBUG_HANDLERS = Policy.DEBUG_HANDLERS_VERBOSE;
-		Command.DEBUG_HANDLERS_COMMAND_ID = Policy.DEBUG_HANDLERS_VERBOSE_COMMAND_ID;
-	}
-
-	/**
-	 * The command service for this handler service. This value is never
-	 * <code>null</code>.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * The central authority for determining which handler we should use.
-	 */
-	private final HandlerAuthority handlerAuthority;
-
-	/**
-	 * The class providing persistence for this service.
-	 */
-	private final HandlerPersistence handlerPersistence;
-
-	/**
-	 * Constructs a new instance of <code>CommandService</code> using a
-	 * command manager.
-	 * 
-	 * @param commandService
-	 *            The command service to use; must not be <code>null</code>.
-	 * @param evaluationService
-	 *            The evaluation service to use; must not be <code>null</code>.
-	 * @param locator
-	 *            an appropriate service locator
-	 */
-	public HandlerService(final ICommandService commandService,
-			final IEvaluationService evaluationService, IServiceLocator locator) {
-		if (commandService == null) {
-			throw new NullPointerException(
-					"A handler service requires a command service"); //$NON-NLS-1$
-		}
-		this.commandService = commandService;
-		this.handlerAuthority = new HandlerAuthority(commandService, locator);
-		this.handlerPersistence = new HandlerPersistence(this,
-				evaluationService);
-	}
-
-	public final IHandlerActivation activateHandler(
-			final IHandlerActivation childActivation) {
-		final String commandId = childActivation.getCommandId();
-		final IHandler handler = childActivation.getHandler();
-		final Expression expression = childActivation.getExpression();
-		final int depth = childActivation.getDepth() + 1;
-		final IHandlerActivation localActivation = new HandlerActivation(
-				commandId, handler, expression, depth, this);
-		handlerAuthority.activateHandler(localActivation);
-		return localActivation;
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler) {
-		return activateHandler(commandId, handler, null);
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler, final Expression expression) {
-		return activateHandler(commandId, handler, expression, false);
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler, final Expression expression,
-			final boolean global) {
-		final IHandlerActivation activation = new HandlerActivation(commandId,
-				handler, expression, IHandlerActivation.ROOT_DEPTH, this);
-		handlerAuthority.activateHandler(activation);
-		return activation;
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler, final Expression expression,
-			final int sourcePriority) {
-		return activateHandler(commandId, handler, expression);
-	}
-
-	public final void addSourceProvider(final ISourceProvider provider) {
-		// no-op
-	}
-
-	public final ExecutionEvent createExecutionEvent(final Command command,
-			final Event event) {
-		return new ExecutionEvent(command, Collections.EMPTY_MAP, event,
-				getCurrentState());
-	}
-
-	public ExecutionEvent createExecutionEvent(
-			final ParameterizedCommand command, final Event event) {
-		return new ExecutionEvent(command.getCommand(), command
-				.getParameterMap(), event, getCurrentState());
-	}
-
-	public final void deactivateHandler(final IHandlerActivation activation) {
-		if (activation.getHandlerService() == this) {
-			handlerAuthority.deactivateHandler(activation);
-		}
-	}
-
-	public final void deactivateHandlers(final Collection activations) {
-		final Iterator activationItr = activations.iterator();
-		while (activationItr.hasNext()) {
-			final IHandlerActivation activation = (IHandlerActivation) activationItr
-					.next();
-			deactivateHandler(activation);
-		}
-	}
-
-	public final void dispose() {
-		handlerAuthority.dispose();
-		handlerPersistence.dispose();
-	}
-
-	public final Object executeCommand(final ParameterizedCommand command,
-			final Event trigger) throws ExecutionException,
-			NotDefinedException, NotEnabledException, NotHandledException {
-		return command.executeWithChecks(trigger, getCurrentState());
-	}
-
-	public final Object executeCommand(final String commandId,
-			final Event trigger) throws ExecutionException,
-			NotDefinedException, NotEnabledException, NotHandledException {
-		final Command command = commandService.getCommand(commandId);
-		final ExecutionEvent event = new ExecutionEvent(command,
-				Collections.EMPTY_MAP, trigger, getCurrentState());
-		return command.executeWithChecks(event);
-	}
-
-	public final IEvaluationContext getCurrentState() {
-		return handlerAuthority.getCurrentState();
-	}
-
-	public final void readRegistry() {
-		handlerPersistence.read();
-	}
-
-	public final void removeSourceProvider(final ISourceProvider provider) {
-		// this is a no-op
-	}
-
-	public final void setHelpContextId(final IHandler handler,
-			final String helpContextId) {
-		commandService.setHelpContextId(handler, helpContextId);
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the handlers (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 */
-	public final void updateShellKludge() {
-		handlerAuthority.updateShellKludge();
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the handlers (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 * 
-	 * @param shell
-	 *            The shell that should be considered active; must not be
-	 *            <code>null</code>.
-	 */
-	public final void updateShellKludge(final Shell shell) {
-		handlerAuthority.updateShellKludge(shell);
-	}
-
-	/**
-	 * Currently this is a an internal method to help locate a handler.
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 * 
-	 * @param commandId
-	 *            the command id to check
-	 * @param context
-	 *            the context to use for activations
-	 * @return the correct IHandler or <code>null</code>
-	 * @since 3.3
-	 */
-	public final IHandler findHandler(String commandId,
-			IEvaluationContext context) {
-		return handlerAuthority.findHandler(commandId, context);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.handlers.IHandlerService#createContextSnapshot(boolean)
-	 */
-	public IEvaluationContext createContextSnapshot(boolean includeSelection) {
-		return handlerAuthority.createContextSnapshot(includeSelection);
-	}
-
-	public final Object executeCommandInContext(
-			final ParameterizedCommand command, final Event trigger,
-			IEvaluationContext context) throws ExecutionException,
-			NotDefinedException, NotEnabledException, NotHandledException {
-		IHandler oldHandler = command.getCommand().getHandler();
-
-		IHandler handler = findHandler(command.getId(), context);
-		if (handler instanceof IHandler2) {
-			((IHandler2) handler).setEnabled(context);
-		}
-		try {
-			command.getCommand().setHandler(handler);
-
-			return command.executeWithChecks(trigger, context);
-		} finally {
-			command.getCommand().setHandler(oldHandler);
-			if (handler instanceof IHandler2) {
-				((IHandler2) handler).setEnabled(getCurrentState());
-			}
-		}
-	}
-
-	/**
-	 * @return Returns the handlerPersistence.
-	 */
-	public HandlerPersistence getHandlerPersistence() {
-		return handlerPersistence;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerServiceFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerServiceFactory.java
deleted file mode 100644
index a39f70f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/HandlerServiceFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.expressions.ActivePartExpression;
-import org.eclipse.ui.internal.expressions.WorkbenchWindowExpression;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.4
- * 
- */
-public class HandlerServiceFactory extends AbstractServiceFactory {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.services.AbstractServiceFactory#create(java.lang.Class,
-	 * org.eclipse.ui.services.IServiceLocator,
-	 * org.eclipse.ui.services.IServiceLocator)
-	 */
-	public Object create(Class serviceInterface, IServiceLocator parentLocator,
-			IServiceLocator locator) {
-		if (!IHandlerService.class.equals(serviceInterface)) {
-			return null;
-		}
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		final IWorkbench wb = wls.getWorkbench();
-		if (wb == null) {
-			return null;
-		}
-
-		Object parent = parentLocator.getService(serviceInterface);
-		if (parent == null) {
-			ICommandService commands = (ICommandService) locator
-					.getService(ICommandService.class);
-			IEvaluationService evals = (IEvaluationService) locator
-					.getService(IEvaluationService.class);
-			HandlerService handlerService = new HandlerService(commands, evals,
-					locator);
-			handlerService.readRegistry();
-			return handlerService;
-		}
-
-		final IWorkbenchWindow window = wls.getWorkbenchWindow();
-		final IWorkbenchPartSite site = wls.getPartSite();
-		if (site == null) {
-			Expression exp = new WorkbenchWindowExpression(window);
-			return new SlaveHandlerService((IHandlerService) parent, exp);
-		}
-
-		if (parent instanceof SlaveHandlerService) {
-			Expression parentExp = ((SlaveHandlerService) parent)
-					.getDefaultExpression();
-			if (parentExp instanceof ActivePartExpression) {
-				return new NestableHandlerService((IHandlerService) parent,
-						parentExp);
-			}
-		}
-
-		Expression exp = new ActivePartExpression(site.getPart());
-		return new SlaveHandlerService((IHandlerService) parent, exp);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java
deleted file mode 100644
index 183751a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IActionCommandMappingService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-/**
- * <p>
- * A service which holds mappings between retarget action identifiers and
- * command identifiers (aka: action definition ids).
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public interface IActionCommandMappingService {
-
-	/**
-	 * Returns the command identifier corresponding to the given action
-	 * identifier, if any.
-	 * 
-	 * @param actionId
-	 *            The identifier of the retarget action for which the command
-	 *            identifier should be retrieved; must not be <code>null</code>.
-	 * @return The identifier of the corresponding command; <code>null</code>
-	 *         if none.
-	 */
-	public String getCommandId(String actionId);
-
-	/**
-	 * Maps an action identifier to a command identifier. This is used for
-	 * retarget action, so that global action handlers can be registered with
-	 * the correct command.
-	 * 
-	 * @param actionId
-	 *            The identifier of the retarget action; must not be
-	 *            <code>null</code>.
-	 * @param commandId
-	 *            The identifier of the command; must not be <code>null</code>
-	 */
-	public void map(String actionId, String commandId);
-	
-	public String getGeneratedCommandId(String targetId, String actionId);
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java
deleted file mode 100644
index 1e8b7f1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/IWorkbenchWindowHandlerDelegate.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-
-/**
- * Allows handlers to be contributed to through action sets.
- * 
- * @since 3.1
- */
-public interface IWorkbenchWindowHandlerDelegate extends
-        IWorkbenchWindowActionDelegate {
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerListenerWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerListenerWrapper.java
deleted file mode 100644
index c717dba..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerListenerWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.ui.commands.HandlerEvent;
-import org.eclipse.ui.commands.IHandlerListener;
-import org.eclipse.ui.internal.commands.ILegacyAttributeNames;
-
-/**
- * A wrapper so that the new handler listener can work with legacy handlers.
- * This class is only intended for backward compatibility with Eclipse 3.0.
- * 
- * @since 3.1
- */
-public final class LegacyHandlerListenerWrapper implements IHandlerListener {
-
-	/**
-	 * The handler on which this listener is listening; never <code>null</code>.
-	 */
-	private final IHandler handler;
-
-	/**
-	 * The wrapped listener; never <code>null</code>.
-	 */
-	private final org.eclipse.core.commands.IHandlerListener listener;
-
-	/**
-	 * Constructs a new instance of <code>LegacyHandlerListenerWrapper</code>.
-	 * 
-	 * @param listener
-	 *            The listener to wrap; must not be <code>null</code>.
-	 */
-	public LegacyHandlerListenerWrapper(final IHandler handler,
-			final org.eclipse.core.commands.IHandlerListener listener) {
-		if (handler == null) {
-			throw new NullPointerException(
-					"A listener wrapper cannot be created on a null handler"); //$NON-NLS-1$
-		}
-
-		if (listener == null) {
-			throw new NullPointerException(
-					"A listener wrapper cannot be created on a null listener"); //$NON-NLS-1$
-		}
-
-		this.handler = handler;
-		this.listener = listener;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IHandlerListener#handlerChanged(org.eclipse.ui.commands.HandlerEvent)
-	 */
-	public void handlerChanged(HandlerEvent event) {
-		final boolean enabledChanged = ((Boolean) event
-				.getPreviousAttributeValuesByName().get(
-						ILegacyAttributeNames.ENABLED)).booleanValue() != handler
-				.isEnabled();
-		final boolean handledChanged = ((Boolean) event
-				.getPreviousAttributeValuesByName().get(
-						ILegacyAttributeNames.HANDLED)).booleanValue() != handler
-				.isHandled();
-		listener.handlerChanged(new org.eclipse.core.commands.HandlerEvent(
-				handler, enabledChanged, handledChanged));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerProxy.java
deleted file mode 100644
index 2048784..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerProxy.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.commands.AbstractHandler;
-import org.eclipse.ui.commands.ExecutionException;
-import org.eclipse.ui.commands.IHandler;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * <p>
- * A proxy for a handler that has been defined in XML. This delays the class
- * loading until the handler is really asked for information (besides the
- * priority or the command identifier). Asking a proxy for anything but the
- * attributes defined publicly in this class will cause the proxy to instantiate
- * the proxied handler.
- * </p>
- * 
- * @since 3.0
- */
-public final class LegacyHandlerProxy extends AbstractHandler {
-
-	/**
-	 * The name of the configuration element attribute which contains the
-	 * information necessary to instantiate the real handler.
-	 */
-	private static final String HANDLER_ATTRIBUTE_NAME = "handler"; //$NON-NLS-1$
-
-	/**
-	 * The configuration element from which the handler can be created. This
-	 * value will exist until the element is converted into a real class -- at
-	 * which point this value will be set to <code>null</code>.
-	 */
-	private IConfigurationElement configurationElement;
-
-	/**
-	 * The real handler. This value is <code>null</code> until the proxy is
-	 * forced to load the real handler. At this point, the configuration element
-	 * is converted, nulled out, and this handler gains a reference.
-	 */
-	private IHandler handler;
-
-	/**
-	 * Constructs a new instance of <code>HandlerProxy</code> with all the
-	 * information it needs to try to avoid loading until it is needed.
-	 * 
-	 * @param newConfigurationElement
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time.
-	 */
-	public LegacyHandlerProxy(
-			final IConfigurationElement newConfigurationElement) {
-		configurationElement = newConfigurationElement;
-		handler = null;
-	}
-
-	/**
-	 * Passes the dipose on to the proxied handler, if it has been loaded.
-	 */
-	public void dispose() {
-		if (handler != null) {
-			handler.dispose();
-		}
-	}
-
-	/**
-	 * @see IHandler#execute(Map)
-	 */
-	public Object execute(Map parameters) throws ExecutionException {
-		if (loadHandler()) {
-			return handler.execute(parameters);
-		}
-
-		return null;
-	}
-
-	/**
-	 * @see IHandler#getAttributeValuesByName()
-	 */
-	public Map getAttributeValuesByName() {
-		if (loadHandler()) {
-			return handler.getAttributeValuesByName();
-		} else {
-			return Collections.EMPTY_MAP;
-		}
-	}
-
-	/**
-	 * Loads the handler, if possible. If the handler is loaded, then the member
-	 * variables are updated accordingly.
-	 * 
-	 * @return <code>true</code> if the handler is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadHandler() {
-		if (handler == null) {
-			// Load the handler.
-			try {
-				handler = (IHandler) configurationElement
-						.createExecutableExtension(HANDLER_ATTRIBUTE_NAME);
-				configurationElement = null;
-				return true;
-			} catch (final CoreException e) {
-				/*
-				 * TODO If it can't be instantiated, should future attempts to
-				 * instantiate be blocked?
-				 */
-				final String message = "The proxied handler for '" + configurationElement.getAttribute(HANDLER_ATTRIBUTE_NAME) //$NON-NLS-1$
-						+ "' could not be loaded"; //$NON-NLS-1$
-				IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("LegacyProxy("); //$NON-NLS-1$
-		if (handler == null) {
-			final String className = configurationElement
-					.getAttribute(HANDLER_ATTRIBUTE_NAME);
-			buffer.append(className);
-		} else {
-			buffer.append(handler);
-		}
-		buffer.append(')');
-
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerWrapper.java
deleted file mode 100644
index ea3227f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerWrapper.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.IHandlerListener;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.ui.internal.commands.ILegacyAttributeNames;
-import org.eclipse.ui.internal.misc.Policy;
-
-/**
- * A handler that wraps a legacy handler. This provide backward compatibility
- * with the handlers release in Eclipse 3.0.
- * 
- * @since 3.1
- */
-public final class LegacyHandlerWrapper implements IHandler {
-
-	/**
-	 * This flag can be set to <code>true</code> if commands should print
-	 * information to <code>System.out</code> when changing handlers.
-	 */
-	private static final boolean DEBUG_HANDLERS = Policy.DEBUG_HANDLERS
-			&& Policy.DEBUG_HANDLERS_VERBOSE;
-
-	/**
-	 * The wrapped handler; never <code>null</code>.
-	 */
-	private final org.eclipse.ui.commands.IHandler handler;
-
-	/**
-	 * Constructs a new instance of <code>HandlerWrapper</code>.
-	 * 
-	 * @param handler
-	 *            The handler that should be wrapped; must not be
-	 *            <code>null</code>.
-	 */
-	public LegacyHandlerWrapper(final org.eclipse.ui.commands.IHandler handler) {
-		if (handler == null) {
-			throw new NullPointerException(
-					"A handler wrapper cannot be constructed on a null handler"); //$NON-NLS-1$
-		}
-
-		this.handler = handler;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#addHandlerListener(org.eclipse.core.commands.IHandlerListener)
-	 */
-	public final void addHandlerListener(final IHandlerListener handlerListener) {
-		handler.addHandlerListener(new LegacyHandlerListenerWrapper(this,
-				handlerListener));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#dispose()
-	 */
-	public final void dispose() {
-		handler.dispose();
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof org.eclipse.ui.commands.IHandler) {
-			return this.handler == object;
-		}
-
-		if (object instanceof LegacyHandlerWrapper) {
-			return this.handler == ((LegacyHandlerWrapper) object).handler;
-		}
-
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public final Object execute(final ExecutionEvent event)
-			throws ExecutionException {
-		// Debugging output
-		if (DEBUG_HANDLERS) {
-			final StringBuffer buffer = new StringBuffer("Executing LegacyHandlerWrapper for "); //$NON-NLS-1$
-			if (handler == null) {
-				buffer.append("no handler"); //$NON-NLS-1$
-			} else {
-				buffer.append('\'');
-				buffer.append(handler.getClass().getName());
-				buffer.append('\'');
-			}
-			Tracing.printTrace("HANDLERS", buffer.toString()); //$NON-NLS-1$
-		}
-
-		try {
-			return handler.execute(event.getParameters());
-		} catch (final org.eclipse.ui.commands.ExecutionException e) {
-			throw new ExecutionException(e.getMessage(), e.getCause());
-		}
-	}
-
-	public final int hashCode() {
-		return this.handler.hashCode();
-	}
-
-	public final boolean isEnabled() {
-		final Object enabled = handler.getAttributeValuesByName().get(
-				ILegacyAttributeNames.ENABLED);
-		if (enabled instanceof Boolean) {
-			return ((Boolean) enabled).booleanValue();
-		}
-
-		return true;
-	}
-
-	public final boolean isHandled() {
-		final Object handled = handler.getAttributeValuesByName().get(
-				ILegacyAttributeNames.HANDLED);
-		if (handled instanceof Boolean) {
-			return ((Boolean) handled).booleanValue();
-		}
-
-		return true;
-	}
-
-	public final void removeHandlerListener(
-			final IHandlerListener handlerListener) {
-		handler.removeHandlerListener(new LegacyHandlerListenerWrapper(this,
-				handlerListener));
-	}
-
-	public final String toString() {
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("LegacyHandlerWrapper("); //$NON-NLS-1$
-		buffer.append(handler);
-		buffer.append(')');
-
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MaximizePartHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MaximizePartHandler.java
deleted file mode 100644
index 7c3b942..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MaximizePartHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * @since 3.4
- * 
- */
-public class MaximizePartHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (activeWorkbenchWindow != null) {
-			IWorkbenchPage page = activeWorkbenchWindow.getActivePage();
-			if (page != null) {
-				IWorkbenchPartReference partRef = page.getActivePartReference();
-				if (partRef != null) {
-					page.toggleZoom(partRef);
-				}
-			}
-		}
-
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MinimizePartHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MinimizePartHandler.java
deleted file mode 100644
index 8631926..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/MinimizePartHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.4
- * 
- */
-public class MinimizePartHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (activeWorkbenchWindow != null) {
-			IWorkbenchPage page = activeWorkbenchWindow.getActivePage();
-			if (page != null) {
-				IWorkbenchPartReference partRef = page.getActivePartReference();
-				if (partRef != null) {
-					page.setPartState(partRef,
-							IStackPresentationSite.STATE_MINIMIZED);
-				}
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NestableHandlerService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NestableHandlerService.java
deleted file mode 100644
index 98e9338..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NestableHandlerService.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.Iterator;
-
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.services.INestable;
-
-/**
- * <p>
- * A handler service which delegates almost all responsibility to the parent
- * service. It is capable of being nested inside a component that is not
- * recognizable by the "sources" event mechanism. This means that the handlers
- * must be activated and deactivated manually.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class NestableHandlerService extends SlaveHandlerService implements
-		INestable {
-
-	/**
-	 * Whether the component with which this service is associated is active.
-	 */
-	private boolean active = false;
-
-	/**
-	 * Constructs a new instance.
-	 * 
-	 * @param parentHandlerService
-	 *            The parent handler service for this slave; must not be
-	 *            <code>null</code>.
-	 * @param defaultExpression
-	 *            The default expression to use if none is provided. This is
-	 *            primarily used for conflict resolution. This value may be
-	 *            <code>null</code>.
-	 */
-	public NestableHandlerService(final IHandlerService parentHandlerService,
-			final Expression defaultExpression) {
-		super(parentHandlerService, defaultExpression);
-	}
-
-	public final void activate() {
-		if (active) {
-			return;
-		}
-
-		final Iterator localActivationItr = localActivationsToParentActivations
-				.keySet().iterator();
-		while (localActivationItr.hasNext()) {
-			final Object object = localActivationItr.next();
-			if (object instanceof IHandlerActivation) {
-				final IHandlerActivation localActivation = (IHandlerActivation) object;
-				final String commandId = localActivation.getCommandId();
-				final IHandler handler = localActivation.getHandler();
-				final IHandlerActivation parentActivation = parent
-						.activateHandler(commandId, handler, defaultExpression);
-				parentActivations.add(parentActivation);
-				localActivationsToParentActivations.put(localActivation,
-						parentActivation);
-			}
-		}
-
-		active = true;
-	}
-
-	protected final IHandlerActivation doActivation(
-			final IHandlerActivation localActivation) {
-		final IHandlerActivation parentActivation;
-		if (active) {
-			parentActivation = parent.activateHandler(localActivation);
-			parentActivations.add(parentActivation);
-		} else {
-			parentActivation = null;
-		}
-		localActivationsToParentActivations.put(localActivation,
-				parentActivation);
-		return localActivation;
-	}
-
-	public final void deactivate() {
-		if (!active) {
-			return;
-		}
-
-		deactivateHandlers(parentActivations);
-		parentActivations.clear();
-
-		final Iterator localActivationItr = localActivationsToParentActivations
-				.keySet().iterator();
-		while (localActivationItr.hasNext()) {
-			final Object object = localActivationItr.next();
-			localActivationsToParentActivations.put(object, null);
-		}
-
-		active = false;
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NewEditorHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NewEditorHandler.java
deleted file mode 100644
index ddfb721..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/NewEditorHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPersistableEditor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.dialogs.DialogUtil;
-
-/**
- * Open a new editor on the active editor's input.
- * 
- * @since 3.4
- * 
- */
-public class NewEditorHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		IWorkbenchPage page = activeWorkbenchWindow.getActivePage();
-		if (page == null) {
-			return null;
-		}
-		IEditorPart editor = page.getActiveEditor();
-		if (editor == null) {
-			return null;
-		}
-		String editorId = editor.getSite().getId();
-		if (editorId == null) {
-			return null;
-		}
-		try {
-			if (editor instanceof IPersistableEditor) {
-				XMLMemento editorState = XMLMemento
-						.createWriteRoot(IWorkbenchConstants.TAG_EDITOR_STATE);
-				((IPersistableEditor) editor).saveState(editorState);
-				((WorkbenchPage) page).openEditor(editor.getEditorInput(),
-						editorId, true, IWorkbenchPage.MATCH_NONE, editorState);
-			} else {
-				page.openEditor(editor.getEditorInput(), editorId, true,
-						IWorkbenchPage.MATCH_NONE);
-			}
-		} catch (PartInitException e) {
-			DialogUtil.openError(activeWorkbenchWindow.getShell(),
-					WorkbenchMessages.Error, e.getMessage(), e);
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java
deleted file mode 100644
index 960f37e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/OpenInNewWindowHandler.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * @since 3.4
- * 
- */
-public class OpenInNewWindowHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (activeWorkbenchWindow == null) {
-			return null;
-		}
-		try {
-			String perspId = null;
-
-			IWorkbenchPage page = activeWorkbenchWindow.getActivePage();
-			IAdaptable pageInput = ((Workbench) activeWorkbenchWindow
-					.getWorkbench()).getDefaultPageInput();
-			if (page != null && page.getPerspective() != null) {
-				perspId = page.getPerspective().getId();
-				pageInput = page.getInput();
-			} else {
-				perspId = activeWorkbenchWindow.getWorkbench()
-						.getPerspectiveRegistry().getDefaultPerspective();
-			}
-			
-			activeWorkbenchWindow.getWorkbench().openWorkbenchWindow(perspId,
-					pageInput);
-		} catch (WorkbenchException e) {
-			StatusUtil.handleStatus(e.getStatus(),
-					WorkbenchMessages.OpenInNewWindowAction_errorTitle
-							+ ": " + e.getMessage(), //$NON-NLS-1$
-					StatusManager.SHOW);
-		}
-		return null;
-
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java
deleted file mode 100644
index 2362366..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/PropertyDialogHandler.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.dialogs.PropertyDialog;
-
-/**
- * @since 3.4
- * 
- */
-public class PropertyDialogHandler extends AbstractHandler {
-
-	private String initialPageId = null;
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		PreferenceDialog dialog;
-		Object element = null;
-		ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
-		Shell shell;
-		
-		if (currentSelection instanceof IStructuredSelection) {
-			element = ((IStructuredSelection) currentSelection)
-					.getFirstElement();
-		} else {
-			return null;
-		}
-		
-		if (activeWorkbenchWindow != null){
-			shell = activeWorkbenchWindow.getShell();
-			dialog = PropertyDialog.createDialogOn(shell,
-					initialPageId, element);
-			if (dialog != null) {
-				dialog.open();
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuickMenuHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuickMenuHandler.java
deleted file mode 100644
index 0a3e398..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuickMenuHandler.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IMenuListener2;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.QuickMenuCreator;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.progress.UIJob;
-
-/**
- * Support for a command based QuickMenuAction that can pop up a
- * menu-contribution based context menu.
- * <p>
- * This is experimental and should not be moved.
- * </p>
- * 
- * @since 3.4
- */
-public class QuickMenuHandler extends AbstractHandler implements IMenuListener2 {
-	private QuickMenuCreator creator = new QuickMenuCreator() {
-
-		protected void fillMenu(IMenuManager menu) {
-			if (!(menu instanceof ContributionManager)) {
-				return;
-			}
-			IMenuService service = (IMenuService) PlatformUI.getWorkbench()
-					.getService(IMenuService.class);
-			service.populateContributionManager((ContributionManager) menu,
-					locationURI);
-			menu.addMenuListener(QuickMenuHandler.this);
-		}
-
-	};
-
-	private String locationURI;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		locationURI = event.getParameter("org.eclipse.ui.window.quickMenu.uri"); //$NON-NLS-1$
-		if (locationURI == null) {
-			throw new ExecutionException("locatorURI must not be null"); //$NON-NLS-1$
-		}
-		creator.createMenu();
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.AbstractHandler#dispose()
-	 */
-	public void dispose() {
-		if (creator != null) {
-			creator.dispose();
-			creator = null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.IMenuListener2#menuAboutToHide(org.eclipse.jface.action.IMenuManager)
-	 */
-	public void menuAboutToHide(final IMenuManager managerM) {
-		new UIJob("quickMenuCleanup") { //$NON-NLS-1$
-
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-				IMenuService service = (IMenuService) PlatformUI.getWorkbench()
-						.getService(IMenuService.class);
-				service.releaseContributions((ContributionManager) managerM);
-				return Status.OK_STATUS;
-			}
-
-		}.schedule();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.IMenuListener#menuAboutToShow(org.eclipse.jface.action.IMenuManager)
-	 */
-	public void menuAboutToShow(IMenuManager manager) {
-		// no-op
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuitHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuitHandler.java
deleted file mode 100644
index 8cdd903..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/QuitHandler.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Quit (close the workbench).
- * 
- * @since 3.4
- * 
- */
-public class QuitHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-		if (activeWorkbenchWindow == null) {
-			// action has been disposed
-			return null;
-		}
-
-		activeWorkbenchWindow.getWorkbench().close();
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java
deleted file mode 100644
index 3cc5db8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/RestartWorkbenchHandler.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Manuel Selva <manuel.selva@st.com> - Bug 197922
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Provide a Handler for the Restart Workbench command.
- * 
- */
-public class RestartWorkbenchHandler extends AbstractHandler {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event){
-		
-		PlatformUI.getWorkbench().restart();
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java
deleted file mode 100644
index 1f0d7e3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SelectAllHandler.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-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.ui.internal.ExceptionHandler;
-
-/**
- * This handler is an adaptation of the widget method handler allowing select
- * all to work even in some cases where the "selectAll" method does not exist.
- * This handler attempts to use "getTextLimit" and "setSelection" to do select
- * all. If this doesn't work, then it finally fails.
- * 
- * @since 3.0
- */
-public class SelectAllHandler extends WidgetMethodHandler {
-
-	/**
-	 * The parameters for a single point select all.
-	 */
-	private static final Class[] METHOD_PARAMETERS = { Point.class };
-
-	public final Object execute(final ExecutionEvent event)
-			throws ExecutionException {
-		final Method methodToExecute = getMethodToExecute();
-		if (methodToExecute != null) {
-			try {
-				final Control focusControl = Display.getCurrent()
-						.getFocusControl();
-				
-				final int numParams = methodToExecute.getParameterTypes().length;
-
-				if ((focusControl instanceof Composite)
-                        && ((((Composite) focusControl).getStyle() & SWT.EMBEDDED) != 0)) {
-					
-					// we only support selectAll for swing components
-					if (numParams != 0) {
-						return null;
-					}
-
-					/*
-					 * Okay. Have a seat. Relax a while. This is going to be a
-					 * bumpy ride. If it is an embedded widget, then it *might*
-					 * be a Swing widget. At the point where this handler is
-					 * executing, the key event is already bound to be
-					 * swallowed. If I don't do something, then the key will be
-					 * gone for good. So, I will try to forward the event to the
-					 * Swing widget. Unfortunately, we can't even count on the
-					 * Swing libraries existing, so I need to use reflection
-					 * everywhere. And, to top it off, I need to dispatch the
-					 * event on the Swing event queue, which means that it will
-					 * be carried out asynchronously to the SWT event queue.
-					 */
-					try {
-						final Object focusComponent = getFocusComponent();
-						if (focusComponent != null) {
-							Runnable methodRunnable = new Runnable() {
-								public void run() {
-									try {
-										methodToExecute.invoke(focusComponent,
-												null);
-										// and back to the UI thread :-)
-										focusControl.getDisplay().asyncExec(
-												new Runnable() {
-													public void run() {
-														if (!focusControl
-																.isDisposed()) {
-															focusControl
-																	.notifyListeners(
-																			SWT.Selection,
-																			null);
-														}
-													}
-												});
-									} catch (final IllegalAccessException e) {
-										// The method is protected, so do
-										// nothing.
-									} catch (final InvocationTargetException e) {
-										/*
-										 * I would like to log this exception --
-										 * and possibly show a dialog to the
-										 * user -- but I have to go back to the
-										 * SWT event loop to do this. So, back
-										 * we go....
-										 */
-										focusControl.getDisplay().asyncExec(
-												new Runnable() {
-													public void run() {
-														ExceptionHandler
-																.getInstance()
-																.handleException(
-																		new ExecutionException(
-																				"An exception occurred while executing " //$NON-NLS-1$
-																						+ methodToExecute
-																								.getName(),
-																				e
-																						.getTargetException()));
-													}
-												});
-									}
-								}
-							};
-
-							swingInvokeLater(methodRunnable);
-						}
-					} catch (final ClassNotFoundException e) {
-						// There is no Swing support, so do nothing.
-
-					} catch (final NoSuchMethodException e) {
-						// The API has changed, which seems amazingly unlikely.
-						throw new Error("Something is seriously wrong here"); //$NON-NLS-1$
-					}
-				} else if (numParams == 0) {
-					// This is a no-argument selectAll method.
-					methodToExecute.invoke(focusControl, null);
-					focusControl.notifyListeners(SWT.Selection, null);
-
-				} else if (numParams == 1) {
-					// This is a single-point selection method.
-					final Method textLimitAccessor = focusControl.getClass()
-							.getMethod("getTextLimit", NO_PARAMETERS); //$NON-NLS-1$
-					final Integer textLimit = (Integer) textLimitAccessor
-							.invoke(focusControl, null);
-					final Object[] parameters = { new Point(0, textLimit
-							.intValue()) };
-					methodToExecute.invoke(focusControl, parameters);
-					if (!(focusControl instanceof Combo)) {
-						focusControl.notifyListeners(SWT.Selection, null);
-					}
-
-				} else {
-					/*
-					 * This means that getMethodToExecute() has been changed,
-					 * while this method hasn't.
-					 */
-					throw new ExecutionException(
-							"Too many parameters on select all", new Exception()); //$NON-NLS-1$
-
-				}
-
-			} catch (IllegalAccessException e) {
-				// The method is protected, so do nothing.
-
-			} catch (InvocationTargetException e) {
-				throw new ExecutionException(
-						"An exception occurred while executing " //$NON-NLS-1$
-								+ getMethodToExecute(), e.getTargetException());
-
-			} catch (NoSuchMethodException e) {
-				// I can't get the text limit. Do nothing.
-
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Looks up the select all method on the given focus control.
-	 * 
-	 * @return The method on the focus control; <code>null</code> if none.
-	 */
-	protected Method getMethodToExecute() {
-		Method method = super.getMethodToExecute();
-
-		// Let's see if we have a control that supports point-based selection.
-		if (method == null) {
-			final Control focusControl = Display.getCurrent().getFocusControl();
-			if (focusControl != null) {
-				try {
-					method = focusControl.getClass().getMethod("setSelection", //$NON-NLS-1$
-							METHOD_PARAMETERS);
-				} catch (NoSuchMethodException e) {
-					// Do nothing.
-				}
-			}
-		}
-
-		return method;
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) {
-		// The name is always "selectAll".
-		methodName = "selectAll"; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java
deleted file mode 100644
index e03b900..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowKeyAssistHandler.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * A handler that displays the key assist dialog when executed.
- * 
- * @since 3.1
- */
-public class ShowKeyAssistHandler extends WorkbenchWindowHandlerDelegate {
-
-	/**
-	 * Opens the key assistant. This should never be called until initialization
-	 * occurs.
-	 * 
-	 * @param event
-	 *            Ignored
-	 * @return <code>null</code>
-	 */
-	public Object execute(final ExecutionEvent event) {
-		final IWorkbench workbench = PlatformUI.getWorkbench();
-		final IBindingService bindingService = (IBindingService) workbench.getService(IBindingService.class);
-		bindingService.openKeyAssistDialog();
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
deleted file mode 100644
index e679d50..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ShowPreferencePageHandler.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.dialogs.PreferencesUtil;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * <p>
- * Shows the given preference page. If no preference page id is specified in the
- * parameters, then this opens the preferences dialog to whatever page was
- * active the last time the dialog was shown.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class ShowPreferencePageHandler extends AbstractHandler {
-
-	/**
-	 * The name of the parameter providing the view identifier.
-	 */
-	private static final String PARAMETER_ID_PREFERENCE_PAGE_ID = "preferencePageId"; //$NON-NLS-1$
-
-	public final Object execute(final ExecutionEvent event) {
-		final String preferencePageId = event
-				.getParameter(PARAMETER_ID_PREFERENCE_PAGE_ID);
-		final IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindow(event);
-
-		final Shell shell;
-		if (activeWorkbenchWindow == null) {
-			shell = null;
-		} else {
-			shell = activeWorkbenchWindow.getShell();
-		}
-
-		final PreferenceDialog dialog = PreferencesUtil
-				.createPreferenceDialogOn(shell, preferencePageId, null, null);
-		dialog.open();
-
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SlaveHandlerService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SlaveHandlerService.java
deleted file mode 100644
index 83152d7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/SlaveHandlerService.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.expressions.AndExpression;
-
-/**
- * A handler service which delegates almost all responsibility to the parent
- * service. It is only responsible for disposing of locally activated handlers
- * when it is disposed.
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public class SlaveHandlerService implements IHandlerService {
-
-	/**
-	 * The default expression to use when
-	 * {@link #activateHandler(String, IHandler)} is called. Handlers
-	 * contributed using that method will only be active when this service is
-	 * active. However, this expression will be used for conflict resolution.
-	 */
-	protected final Expression defaultExpression;
-
-	/**
-	 * A collection of source providers. The listeners are not
-	 * activated/deactivated, but they will be removed when this service is
-	 * disposed.
-	 */
-	private Collection fSourceProviders = new ArrayList();
-
-	/**
-	 * A map of the local activation to the parent activations. If this service
-	 * is inactive, then all parent activations are <code>null</code>.
-	 * Otherwise, they point to the corresponding activation in the parent
-	 * service.
-	 */
-	protected final Map localActivationsToParentActivations = new HashMap();
-
-	/**
-	 * The parent handler service to which all requests are ultimately routed.
-	 * This value is never <code>null</code>.
-	 */
-	protected final IHandlerService parent;
-
-	/**
-	 * The activations registered with the parent handler service. This value is
-	 * never <code>null</code>.
-	 */
-	protected final Set parentActivations = new HashSet();
-
-	/**
-	 * Constructs a new instance.
-	 * 
-	 * @param parentHandlerService
-	 *            The parent handler service for this slave; must not be
-	 *            <code>null</code>.
-	 * @param defaultExpression
-	 *            The default expression to use if none is provided. This is
-	 *            primarily used for conflict resolution. This value may be
-	 *            <code>null</code>.
-	 */
-	public SlaveHandlerService(final IHandlerService parentHandlerService,
-			final Expression defaultExpression) {
-		if (parentHandlerService == null) {
-			throw new NullPointerException(
-					"The parent handler service cannot be null"); //$NON-NLS-1$
-		}
-
-		this.defaultExpression = defaultExpression;
-		this.parent = parentHandlerService;
-	}
-
-	public final IHandlerActivation activateHandler(
-			final IHandlerActivation childActivation) {
-		final String commandId = childActivation.getCommandId();
-		final IHandler handler = childActivation.getHandler();
-		final Expression childExpression = childActivation.getExpression();
-		final AndExpression expression;
-		if (childExpression instanceof AndExpression) {
-			expression = (AndExpression) childExpression;
-		} else {
-			expression = new AndExpression();
-			if (childExpression != null) {
-				expression.add(childExpression);
-			}
-		}
-		if (defaultExpression != null) {
-			expression.add(defaultExpression);
-		}
-		final int depth = childActivation.getDepth() + 1;
-		final IHandlerActivation localActivation = new HandlerActivation(
-				commandId, handler, expression, depth, this);
-
-		return doActivation(localActivation);
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler) {
-		final IHandlerActivation localActivation = new HandlerActivation(
-				commandId, handler, defaultExpression,
-				IHandlerActivation.ROOT_DEPTH, this);
-		return doActivation(localActivation);
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler, final Expression expression) {
-		return activateHandler(commandId, handler, expression, false);
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler, final Expression expression,
-			final boolean global) {
-		if (global) {
-			final IHandlerActivation activation = parent.activateHandler(
-					commandId, handler, expression, global);
-			parentActivations.add(activation);
-			return activation;
-		}
-
-		final AndExpression andExpression;
-		if (expression instanceof AndExpression) {
-			andExpression = (AndExpression) expression;
-		} else {
-			andExpression = new AndExpression();
-			if (expression != null) {
-				andExpression.add(expression);
-			}
-		}
-		if (defaultExpression != null) {
-			andExpression.add(defaultExpression);
-		}
-		final IHandlerActivation localActivation = new HandlerActivation(
-				commandId, handler, andExpression,
-				IHandlerActivation.ROOT_DEPTH, this);
-		return doActivation(localActivation);
-	}
-
-	public final IHandlerActivation activateHandler(final String commandId,
-			final IHandler handler, final Expression expression,
-			final int sourcePriorities) {
-		return activateHandler(commandId, handler, expression);
-	}
-
-	public final void addSourceProvider(final ISourceProvider provider) {
-		if (!fSourceProviders.contains(provider)) {
-			fSourceProviders.add(provider);
-		}
-		parent.addSourceProvider(provider);
-	}
-
-	public final ExecutionEvent createExecutionEvent(final Command command,
-			final Event event) {
-		return parent.createExecutionEvent(command, event);
-	}
-
-	public final ExecutionEvent createExecutionEvent(
-			final ParameterizedCommand command, final Event event) {
-		return parent.createExecutionEvent(command, event);
-	}
-
-	public final void deactivateHandler(final IHandlerActivation activation) {
-		final IHandlerActivation parentActivation;
-		if (localActivationsToParentActivations.containsKey(activation)) {
-			parentActivation = (IHandlerActivation) localActivationsToParentActivations
-					.remove(activation);
-		} else {
-			parentActivation = activation;
-		}
-
-		if (parentActivation != null) {
-			parent.deactivateHandler(parentActivation);
-			parentActivations.remove(parentActivation);
-		}
-	}
-
-	public final void deactivateHandlers(final Collection activations) {
-		Object[] array = activations.toArray();
-		for (int i = 0; i < array.length; i++) {
-			deactivateHandler((IHandlerActivation) array[i]);
-			array[i] = null;
-		}
-	}
-
-	public final void dispose() {
-		parent.deactivateHandlers(parentActivations);
-		parentActivations.clear();
-		localActivationsToParentActivations.clear();
-
-		// Remove any "resource", like listeners, that were associated
-		// with this service.
-		if (!fSourceProviders.isEmpty()) {
-			Object[] array = fSourceProviders.toArray();
-			for (int i = 0; i < array.length; i++) {
-				removeSourceProvider((ISourceProvider) array[i]);
-			}
-			fSourceProviders.clear();
-		}
-	}
-
-	protected IHandlerActivation doActivation(
-			final IHandlerActivation localActivation) {
-		final IHandlerActivation parentActivation;
-		parentActivation = parent.activateHandler(localActivation);
-		parentActivations.add(parentActivation);
-		localActivationsToParentActivations.put(localActivation,
-				parentActivation);
-		return localActivation;
-	}
-
-	public final Object executeCommand(final ParameterizedCommand command,
-			final Event event) throws ExecutionException, NotDefinedException,
-			NotEnabledException, NotHandledException {
-		return parent.executeCommand(command, event);
-	}
-
-	public final Object executeCommand(final String commandId, final Event event)
-			throws ExecutionException, NotDefinedException,
-			NotEnabledException, NotHandledException {
-		return parent.executeCommand(commandId, event);
-	}
-
-	public final IEvaluationContext getCurrentState() {
-		return parent.getCurrentState();
-	}
-
-	public final void readRegistry() {
-		parent.readRegistry();
-	}
-
-	public final void removeSourceProvider(final ISourceProvider provider) {
-		fSourceProviders.remove(provider);
-		parent.removeSourceProvider(provider);
-	}
-
-	public final void setHelpContextId(final IHandler handler,
-			final String helpContextId) {
-		parent.setHelpContextId(handler, helpContextId);
-	}
-
-	Expression getDefaultExpression() {
-		return defaultExpression;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.handlers.IHandlerService#createContextSnapshot(boolean)
-	 */
-	public IEvaluationContext createContextSnapshot(boolean includeSelection) {
-		return parent.createContextSnapshot(includeSelection);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.handlers.IHandlerService#executeCommandInContext(org.eclipse.core.commands.ParameterizedCommand, org.eclipse.swt.widgets.Event, org.eclipse.core.expressions.IEvaluationContext)
-	 */
-	public Object executeCommandInContext(ParameterizedCommand command,
-			Event event, IEvaluationContext context) throws ExecutionException,
-			NotDefinedException, NotEnabledException, NotHandledException {
-		return parent.executeCommandInContext(command, event, context);
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java
deleted file mode 100644
index fad9853..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/ToggleCoolbarHandler.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.commands.IElementUpdater;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.menus.UIElement;
-import org.eclipse.ui.services.IServiceScopes;
-
-/**
- * Handler that toggles the visibility of the coolbar/perspective bar in a given
- * window.
- * 
- * @since 3.3
- */
-public class ToggleCoolbarHandler extends AbstractHandler implements
-		IElementUpdater {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
-	 * ExecutionEvent)
-	 */
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		final IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-		if (activeWorkbenchWindow instanceof WorkbenchWindow) {
-			WorkbenchWindow window = (WorkbenchWindow) activeWorkbenchWindow;
-			window.toggleToolbarVisibility();
-			ICommandService commandService = (ICommandService) activeWorkbenchWindow
-					.getService(ICommandService.class);
-			Map filter = new HashMap();
-			filter.put(IServiceScopes.WINDOW_SCOPE, window);
-			commandService.refreshElements(event.getCommand().getId(), filter);
-		}
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.commands.IElementUpdater#updateElement(org.eclipse.ui.
-	 * menus.UIElement, java.util.Map)
-	 */
-	public void updateElement(UIElement element, Map parameters) {
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) element
-				.getServiceLocator()
-				.getService(IWorkbenchLocationService.class);
-		IWorkbenchWindow window = wls.getWorkbenchWindow();
-		if (window == null || !(window instanceof WorkbenchWindow))
-			return;
-		element
-				.setText(isCoolbarVisible((WorkbenchWindow) window) ? WorkbenchMessages.ToggleCoolbarVisibilityAction_hide_text
-						: WorkbenchMessages.ToggleCoolbarVisibilityAction_show_text);
-	}
-
-	/**
-	 * Return whether the coolbar is currently visible.
-	 * 
-	 * @param window
-	 * 		the window to test
-	 * @return whether or not the coolbar is visible
-	 */
-	private boolean isCoolbarVisible(WorkbenchWindow window) {
-		return window.getCoolBarVisible() || window.getPerspectiveBarVisible();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
deleted file mode 100644
index 4999e42..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WidgetMethodHandler.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Bruno Haible haible@ilog.fr - bug 228890 
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.internal.ExceptionHandler;
-
-/**
- * Handles the cut command in both dialogs and windows. This handler is enabled
- * if the focus control supports the "cut" method.
- * 
- * @since 3.0
- */
-public class WidgetMethodHandler extends AbstractHandler implements
-		IExecutableExtension {
-
-	/**
-	 * The parameters to pass to the method this handler invokes. This handler
-	 * always passes no parameters.
-	 */
-	protected static final Class[] NO_PARAMETERS = new Class[0];
-
-	/**
-	 * The name of the method to be invoked by this handler. This value should
-	 * never be <code>null</code>.
-	 */
-	protected String methodName;
-
-	public Object execute(final ExecutionEvent event) throws ExecutionException {
-		final Method methodToExecute = getMethodToExecute();
-		if (methodToExecute != null) {
-			try {
-				final Control focusControl = Display.getCurrent()
-						.getFocusControl();
-				if ((focusControl instanceof Composite)
-						&& ((((Composite) focusControl).getStyle() & SWT.EMBEDDED) != 0)) {
-					/*
-					 * Okay. Have a seat. Relax a while. This is going to be a
-                     * bumpy ride. If it is an embedded widget, then it *might*
-                     * be a Swing widget. At the point where this handler is
-					 * executing, the key event is already bound to be
-					 * swallowed. If I don't do something, then the key will be
-					 * gone for good. So, I will try to forward the event to the
-					 * Swing widget. Unfortunately, we can't even count on the
-					 * Swing libraries existing, so I need to use reflection
-					 * everywhere. And, to top it off, I need to dispatch the
-					 * event on the Swing event queue, which means that it will
-					 * be carried out asynchronously to the SWT event queue.
-					 */
-					try {
-						final Object focusComponent = getFocusComponent();
-						if (focusComponent != null) {
-							Runnable methodRunnable = new Runnable() {
-								public void run() {
-									try {
-										methodToExecute.invoke(focusComponent,
-												null);
-									} catch (final IllegalAccessException e) {
-										// The method is protected, so do
-										// nothing.
-									} catch (final InvocationTargetException e) {
-										/*
-										 * I would like to log this exception --
-										 * and possibly show a dialog to the
-										 * user -- but I have to go back to the
-										 * SWT event loop to do this. So, back
-										 * we go....
-										 */
-										focusControl.getDisplay().asyncExec(
-												new Runnable() {
-													public void run() {
-														ExceptionHandler
-																.getInstance()
-																.handleException(
-																		new ExecutionException(
-																				"An exception occurred while executing " //$NON-NLS-1$
-																						+ methodToExecute
-																								.getName(),
-																				e
-																						.getTargetException()));
-													}
-												});
-									}
-								}
-							};
-
-							swingInvokeLater(methodRunnable);
-						}
-					} catch (final ClassNotFoundException e) {
-						// There is no Swing support, so do nothing.
-
-					} catch (final NoSuchMethodException e) {
-						// The API has changed, which seems amazingly unlikely.
-						throw new Error("Something is seriously wrong here"); //$NON-NLS-1$
-					}
-
-				} else {
-
-					methodToExecute.invoke(focusControl, null);
-				}
-
-			} catch (IllegalAccessException e) {
-				// The method is protected, so do nothing.
-
-			} catch (InvocationTargetException e) {
-				throw new ExecutionException(
-						"An exception occurred while executing " //$NON-NLS-1$
-								+ methodToExecute.getName(), e
-								.getTargetException());
-
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Invoke a runnable on the swing EDT.
-	 * 
-	 * @param methodRunnable
-	 * @throws ClassNotFoundException
-	 * @throws NoSuchMethodException
-	 * @throws IllegalAccessException
-	 * @throws InvocationTargetException
-	 */
-	protected void swingInvokeLater(Runnable methodRunnable)
-			throws ClassNotFoundException, NoSuchMethodException,
-			IllegalAccessException, InvocationTargetException {
-		final Class swingUtilitiesClass = Class
-				.forName("javax.swing.SwingUtilities"); //$NON-NLS-1$
-		final Method swingUtilitiesInvokeLaterMethod = swingUtilitiesClass
-				.getMethod("invokeLater", //$NON-NLS-1$
-						new Class[] { Runnable.class });
-		swingUtilitiesInvokeLaterMethod.invoke(swingUtilitiesClass,
-				new Object[] { methodRunnable });
-	}
-
-	/**
-	 * Find the swing focus component, if it is available.
-	 * 
-	 * @return Hopefully, the swing focus component, but it can return
-	 * 	<code>null</code>.
-	 * @throws ClassNotFoundException
-	 * @throws NoSuchMethodException
-	 * @throws IllegalAccessException
-	 * @throws InvocationTargetException
-	 */
-	protected Object getFocusComponent() throws ClassNotFoundException,
-			NoSuchMethodException, IllegalAccessException,
-			InvocationTargetException {
-		/*
-		 * Before JRE 1.4, one has to use
-		 * javax.swing.FocusManager.getCurrentManager().getFocusOwner(). Since
-		 * JRE 1.4, one has to use
-		 * java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager
-		 * ().getFocusOwner(); the use of the older API would install a
-		 * LegacyGlueFocusTraversalPolicy which causes endless recursions in
-		 * some situations.
-		 */
-		Class keyboardFocusManagerClass = null;
-		try {
-			keyboardFocusManagerClass = Class
-					.forName("java.awt.KeyboardFocusManager"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// switch to the old guy
-		}
-		if (keyboardFocusManagerClass != null) {
-			// Use JRE 1.4 API
-			final Method keyboardFocusManagerGetCurrentKeyboardFocusManagerMethod = keyboardFocusManagerClass
-					.getMethod("getCurrentKeyboardFocusManager", null); //$NON-NLS-1$
-			final Object keyboardFocusManager = keyboardFocusManagerGetCurrentKeyboardFocusManagerMethod
-					.invoke(keyboardFocusManagerClass, null);
-			final Method keyboardFocusManagerGetFocusOwner = keyboardFocusManagerClass
-					.getMethod("getFocusOwner", null); //$NON-NLS-1$
-			final Object focusComponent = keyboardFocusManagerGetFocusOwner
-					.invoke(keyboardFocusManager, null);
-			return focusComponent;
-		}
-		// Use JRE 1.3 API
-		final Class focusManagerClass = Class
-				.forName("javax.swing.FocusManager"); //$NON-NLS-1$
-		final Method focusManagerGetCurrentManagerMethod = focusManagerClass
-				.getMethod("getCurrentManager", null); //$NON-NLS-1$
-		final Object focusManager = focusManagerGetCurrentManagerMethod
-		        .invoke(focusManagerClass, null);
-		final Method focusManagerGetFocusOwner = focusManagerClass
-		        .getMethod("getFocusOwner", null); //$NON-NLS-1$
-		final Object focusComponent = focusManagerGetFocusOwner
-		        .invoke(focusManager, null);
-		return focusComponent;
-
-	}
-	
-	public final boolean isHandled() {
-		return getMethodToExecute() != null;
-	}
-
-	/**
-	 * Looks up the method on the focus control.
-	 * 
-	 * @return The method on the focus control; <code>null</code> if none.
-	 */
-	protected Method getMethodToExecute() {
-		Display display = Display.getCurrent();
-		if (display == null)
-			return null;
-		final Control focusControl = display.getFocusControl();
-		Method method = null;
-
-		if (focusControl != null) {
-			final Class clazz = focusControl.getClass();
-			try {
-				method = clazz.getMethod(methodName, NO_PARAMETERS);
-			} catch (NoSuchMethodException e) {
-				// Fall through...
-			}
-		}
-
-		if ((method == null)
-				&& (focusControl instanceof Composite)
-				&& ((((Composite) focusControl).getStyle() & SWT.EMBEDDED) != 0)) {
-			/*
-			 * We couldn't find the appropriate method on the current focus
-			 * control. It is possible that the current focus control is an
-			 * embedded SWT composite, which could be containing some Swing
-			 * components. If this is the case, then we should try to pass
-			 * through to the underlying Swing component hierarchy. Insha'allah,
-			 * this will work.
-			 */
-			try {
-				final Object focusComponent = getFocusComponent();
-				if (focusComponent != null) {
-					final Class clazz = focusComponent.getClass();
-
-					try {
-						method = clazz.getMethod(methodName, NO_PARAMETERS);
-					} catch (NoSuchMethodException e) {
-						// Do nothing.
-					}
-				}
-			} catch (final ClassNotFoundException e) {
-				// There is no Swing support, so do nothing.
-
-			} catch (final NoSuchMethodException e) {
-				// The API has changed, which seems amazingly unlikely.
-				throw new Error("Something is seriously wrong here"); //$NON-NLS-1$
-			} catch (IllegalAccessException e) {
-				// The API has changed, which seems amazingly unlikely.
-				throw new Error("Something is seriously wrong here"); //$NON-NLS-1$
-			} catch (InvocationTargetException e) {
-				// The API has changed, which seems amazingly unlikely.
-				throw new Error("Something is seriously wrong here"); //$NON-NLS-1$
-			}
-		}
-
-		return method;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org
-	 * .eclipse.core.runtime.IConfigurationElement, java.lang.String,
-	 * java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) {
-		// The data is really just a string (i.e., the method name).
-		methodName = data.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java
deleted file mode 100644
index 4041619..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WizardHandler.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 202170 [Wizards] Empy Source Folder and Package in New Class Wizard
- *******************************************************************************/
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.IDialogSettings;
-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.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWizard;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.LegacyResourceSupport;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.dialogs.ImportExportWizard;
-import org.eclipse.ui.internal.dialogs.NewWizard;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-import org.eclipse.ui.wizards.IWizardRegistry;
-
-/**
- * Abstract handler for commands that launch the import, export and new wizards.
- * <p>
- * This class is only intended to be extended by the three inner classes (<code>Export</code>,
- * <code>Import</code> and <code>New</code>) defined here.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class WizardHandler extends AbstractHandler {
-
-	/**
-	 * Default handler for launching export wizards.
-	 */
-	public static final class Export extends WizardHandler {
-	    private static final int SIZING_WIZARD_WIDTH = 470;
-	    private static final int SIZING_WIZARD_HEIGHT = 550;
-
-		protected String getWizardIdParameterId() {
-			return "exportWizardId"; //$NON-NLS-1$
-		}
-
-		protected IWizardRegistry getWizardRegistry() {
-			return PlatformUI.getWorkbench().getExportWizardRegistry();
-		}
-
-		protected void executeHandler(ExecutionEvent event) {
-			IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-					.getActiveWorkbenchWindow(event);
-			if (activeWorkbenchWindow == null) {
-				// action has been disposed
-				return;
-			}
-			ImportExportWizard wizard = new ImportExportWizard(
-					ImportExportWizard.EXPORT);
-			IStructuredSelection selectionToPass = getSelectionToUse(event);
-
-			wizard.init(activeWorkbenchWindow.getWorkbench(), selectionToPass);
-			IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-					.getDialogSettings();
-			IDialogSettings wizardSettings = workbenchSettings
-					.getSection("ImportExportAction"); //$NON-NLS-1$
-			if (wizardSettings == null) {
-				wizardSettings = workbenchSettings
-						.addNewSection("ImportExportAction"); //$NON-NLS-1$
-			}
-			wizard.setDialogSettings(wizardSettings);
-			wizard.setForcePreviousAndNextButtons(true);
-
-			Shell parent = activeWorkbenchWindow.getShell();
-			WizardDialog dialog = new WizardDialog(parent, wizard);
-			dialog.create();
-			dialog.getShell().setSize(
-					Math.max(SIZING_WIZARD_WIDTH, dialog.getShell()
-							.getSize().x), SIZING_WIZARD_HEIGHT);
-			activeWorkbenchWindow.getWorkbench().getHelpSystem().setHelp(
-					dialog.getShell(), IWorkbenchHelpContextIds.EXPORT_WIZARD);
-			dialog.open();
-		}
-
-	}
-
-	/**
-	 * Default handler for launching import wizards.
-	 */
-	public static final class Import extends WizardHandler {
-	    private static final int SIZING_WIZARD_WIDTH = 470;
-	    private static final int SIZING_WIZARD_HEIGHT = 550;
-
-		protected String getWizardIdParameterId() {
-			return "importWizardId"; //$NON-NLS-1$
-		}
-
-		protected IWizardRegistry getWizardRegistry() {
-			return PlatformUI.getWorkbench().getImportWizardRegistry();
-		}
-
-		protected void executeHandler(ExecutionEvent event) {
-			IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
-	        if (activeWorkbenchWindow == null) {
-	            // action has been disposed
-	            return;
-	        }
-	        ImportExportWizard wizard = new ImportExportWizard(ImportExportWizard.IMPORT);
-			IStructuredSelection selectionToPass = getSelectionToUse(event);
-
-	        wizard.init(activeWorkbenchWindow.getWorkbench(), selectionToPass);
-	        IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-	                .getDialogSettings();
-	        IDialogSettings wizardSettings = workbenchSettings
-	                .getSection("ImportExportAction"); //$NON-NLS-1$
-	        if (wizardSettings == null) {
-				wizardSettings = workbenchSettings
-	                    .addNewSection("ImportExportAction"); //$NON-NLS-1$
-			}
-	        wizard.setDialogSettings(wizardSettings);
-	        wizard.setForcePreviousAndNextButtons(true);
-
-	        Shell parent = activeWorkbenchWindow.getShell();
-	        WizardDialog dialog = new WizardDialog(parent, wizard);
-	        dialog.create();
-	        dialog.getShell().setSize(
-	                Math.max(SIZING_WIZARD_WIDTH, dialog.getShell().getSize().x),
-	                SIZING_WIZARD_HEIGHT);
-	        activeWorkbenchWindow.getWorkbench().getHelpSystem().setHelp(
-					dialog.getShell(), IWorkbenchHelpContextIds.IMPORT_WIZARD);
-	        dialog.open();
-		}
-
-	}
-
-	/**
-	 * Default handler for launching new wizards.
-	 */
-	public static final class New extends WizardHandler {
-	    
-		/**
-	     * The wizard dialog width
-	     */
-	    private static final int SIZING_WIZARD_WIDTH = 500;
-
-	    /**
-	     * The wizard dialog height
-	     */
-	    private static final int SIZING_WIZARD_HEIGHT = 500;
-	    
-	    /**
-	     * The id of the category to show or <code>null</code> to
-	     * show all the categories.
-	     */
-	    private String categoryId = null;
-
-		protected String getWizardIdParameterId() {
-			return "newWizardId"; //$NON-NLS-1$
-		}
-
-		protected IWizardRegistry getWizardRegistry() {
-			return PlatformUI.getWorkbench().getNewWizardRegistry();
-		}
-		
-	    /**
-	     * Returns the id of the category of wizards to show
-	     * or <code>null</code> to show all categories.
-	     * @return String
-	     */
-	    public String getCategoryId() {
-	        return categoryId;
-	    }
-
-	    /**
-	     * Sets the id of the category of wizards to show
-	     * or <code>null</code> to show all categories.
-	     * @param id
-	     */
-	    public void setCategoryId(String id) {
-	        categoryId = id;
-	    }
-	    
-	    protected IStructuredSelection getSelectionToUse(ExecutionEvent event) {
-	        ISelection selection = HandlerUtil.getCurrentSelection(event);
-	        IStructuredSelection selectionToPass = StructuredSelection.EMPTY;
-	        if (selection instanceof IStructuredSelection) {
-	            selectionToPass = (IStructuredSelection) selection;
-	        } else {
-	            // @issue the following is resource-specific legacy code
-	            // Build the selection from the IFile of the editor
-	            Class resourceClass = LegacyResourceSupport.getResourceClass();
-	            if (resourceClass != null) {
-	            	IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
-	                IWorkbenchPart part = activeWorkbenchWindow.getPartService()
-	                        .getActivePart();
-	                if (part instanceof IEditorPart) {
-	                    IEditorInput input = ((IEditorPart) part).getEditorInput();
-	                    Object resource = Util.getAdapter(input, resourceClass);
-	                    if (resource != null) {
-	                        selectionToPass = new StructuredSelection(resource);
-	                    }
-	                }
-	            }
-	        }
-	        return selectionToPass;
-	    }
-	    
-		protected void executeHandler(ExecutionEvent event) {
-			IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
-	        if (activeWorkbenchWindow == null) {
-	            // action has been disposed
-	            return;
-	        }
-	        NewWizard wizard = new NewWizard();
-	        wizard.setCategoryId(categoryId);
-
-			IStructuredSelection selectionToPass = getSelectionToUse(event);
-	        wizard.init(activeWorkbenchWindow.getWorkbench(), selectionToPass);
-	        
-	        IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-	                .getDialogSettings();
-	        IDialogSettings wizardSettings = workbenchSettings
-	                .getSection("NewWizardAction"); //$NON-NLS-1$
-	        if (wizardSettings == null) {
-				wizardSettings = workbenchSettings.addNewSection("NewWizardAction"); //$NON-NLS-1$
-			}
-	        wizard.setDialogSettings(wizardSettings);
-	        wizard.setForcePreviousAndNextButtons(true);
-
-	        Shell parent = activeWorkbenchWindow.getShell();
-	        WizardDialog dialog = new WizardDialog(parent, wizard);
-	        dialog.create();
-	        dialog.getShell().setSize(
-	                Math.max(SIZING_WIZARD_WIDTH, dialog.getShell().getSize().x),
-	                SIZING_WIZARD_HEIGHT);
-	        activeWorkbenchWindow.getWorkbench().getHelpSystem().setHelp(
-					dialog.getShell(), IWorkbenchHelpContextIds.NEW_WIZARD);
-	        dialog.open();
-		}
-
-	}
-
-
-	/**
-	 * This is the execution of the handler to open a wizard dialog.
-	 * @param event
-	 */
-	protected abstract void executeHandler(ExecutionEvent event);
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-
-		String wizardId = event.getParameter(getWizardIdParameterId());
-
-		IWorkbenchWindow activeWindow = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-
-		if (wizardId == null) {
-			executeHandler(event);
-		} else {
-
-			IWizardRegistry wizardRegistry = getWizardRegistry();
-			IWizardDescriptor wizardDescriptor = wizardRegistry
-					.findWizard(wizardId);
-			if (wizardDescriptor == null) {
-				throw new ExecutionException("unknown wizard: " + wizardId); //$NON-NLS-1$
-			}
-
-			try {
-				IWorkbenchWizard wizard = wizardDescriptor.createWizard();
-				wizard.init(PlatformUI.getWorkbench(), getSelectionToUse(event));
-				
-				if (wizardDescriptor.canFinishEarly() && !wizardDescriptor.hasPages()) {
-					wizard.performFinish();
-					return null;
-				}
-				
-				Shell parent = activeWindow.getShell();
-				WizardDialog dialog = new WizardDialog(parent, wizard);
-				dialog.create();
-				dialog.open();
-
-			} catch (CoreException ex) {
-				throw new ExecutionException("error creating wizard", ex); //$NON-NLS-1$
-			}
-
-		}
-
-		return null;
-	}
-	
-	/**
-	 * Returns a structured selection based on the event to initialize the
-	 * wizard with.
-	 * @param event the event object containing information about the current state of the application
-	 * @return the current structured selection of the application
-	 */
-	protected IStructuredSelection getSelectionToUse(ExecutionEvent event) {
-		ISelection selection = HandlerUtil.getCurrentSelection(event);
-		if (selection instanceof IStructuredSelection) {
-			return (IStructuredSelection) selection;
-		}
-		return StructuredSelection.EMPTY;
-	}
-
-	/**
-	 * Returns the id of the parameter used to indicate which wizard this
-	 * command should launch.
-	 * 
-	 * @return The id of the parameter used to indicate which wizard this
-	 *         command should launch.
-	 */
-	protected abstract String getWizardIdParameterId();
-
-	/**
-	 * Returns the wizard registry for the concrete <code>WizardHandler</code>
-	 * implementation class.
-	 * 
-	 * @return The wizard registry for the concrete <code>WizardHandler</code>
-	 *         implementation class.
-	 */
-	protected abstract IWizardRegistry getWizardRegistry();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java
deleted file mode 100644
index 61ebb94..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/WorkbenchWindowHandlerDelegate.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.handlers;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * A handler that can be used to imitate a IWorkbenchWindowActionDelegate.
- * 
- * @since 3.1
- */
-public abstract class WorkbenchWindowHandlerDelegate extends
-		ExecutableExtensionHandler implements IWorkbenchWindowHandlerDelegate {
-
-	/**
-	 * By default, this will do nothing. Subclasses may override.
-	 * 
-	 * @param window
-	 *            the window that provides the context for this delegate
-	 * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
-	 */
-	public void init(final IWorkbenchWindow window) {
-		// Do nothing by default.
-	}
-
-	/**
-	 * This simply calls execute with a <code>null</code> map of parameter
-	 * values. If an <code>ExecutionException</code> occurs, then this should
-	 * be handle somehow. It's not clear what we'll do yet.
-	 * 
-	 * @param action
-	 *            The action proxy that handles the presentation portion of the
-	 *            action
-	 * @see org.eclipse.ui.IActionDelegate#run(IAction)
-	 */
-	public void run(final IAction action) {
-		try {
-			execute(new ExecutionEvent());
-		} catch (final ExecutionException e) {
-			// TODO Do something meaningful and poignant.
-		}
-	}
-
-	/**
-	 * By default, this will do nothing. Subclasses may override.
-	 * 
-	 * @param action
-	 *            The action proxy that handles presentation portion of the
-	 *            action
-	 * @param selection
-	 *            The current selection, or <code>null</code> if there is no
-	 *            selection.
-	 * 
-	 * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection)
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-		// Do nothing be default.
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java
deleted file mode 100644
index a7eacc7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/help/WorkbenchHelpSystem.java
+++ /dev/null
@@ -1,1020 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.help;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.Assert;
-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.Platform;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.help.HelpSystem;
-import org.eclipse.help.IContext;
-import org.eclipse.help.IContext2;
-import org.eclipse.help.IHelp;
-import org.eclipse.help.IHelpResource;
-import org.eclipse.help.IToc;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.HelpEvent;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommand;
-import org.eclipse.ui.help.AbstractHelpUI;
-import org.eclipse.ui.help.IContextComputer;
-import org.eclipse.ui.help.IWorkbenchHelpSystem;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * This class represents a refactoring of the functionality previously contained
- * in <code>WorkbenchHelp</code>.
- * 
- * @since 3.1
- */
-public final class WorkbenchHelpSystem implements IWorkbenchHelpSystem {
-
-	/**
-	 * Key used for stashing help-related data on SWT widgets.
-	 * 
-	 * @see org.eclipse.swt.widgets.Widget#getData(java.lang.String)
-	 */
-	public static final String HELP_KEY = "org.eclipse.ui.help";//$NON-NLS-1$
-
-	/**
-	 * Id of extension point where the help UI is contributed.
-	 */
-	private static final String HELP_SYSTEM_EXTENSION_ID = PlatformUI.PLUGIN_ID + '.' + IWorkbenchRegistryConstants.PL_HELPSUPPORT;
-
-	/**
-	 * Attribute id for class attribute of help UI extension point.
-	 */
-	private static final String HELP_SYSTEM_CLASS_ATTRIBUTE = "class";//$NON-NLS-1$
-
-	/**
-	 * Singleton.
-	 */
-	private static WorkbenchHelpSystem instance;
-
-	/**
-	 * The help listener.
-	 */
-	private static class WorkbenchHelpListener implements HelpListener {
-		public void helpRequested(HelpEvent event) {
-
-			if (getInstance().getHelpUI() == null) {
-				return;
-			}
-
-			// get the help context from the widget
-			Object object = event.widget.getData(HELP_KEY);
-
-			// Since 2.0 we can expect that object is a String, however
-			// for backward compatability we handle context computers and
-			// arrays.
-			IContext context = null;
-			if (object instanceof String) {
-				// context id - this is the norm
-				context = HelpSystem.getContext((String) object);
-			} else if (object instanceof IContext) {
-				// already resolved context (pre 2.0)
-				context = (IContext) object;
-			} else if (object instanceof IContextComputer) {
-				// a computed context (pre 2.0) - compute it now
-				Object[] helpContexts = ((IContextComputer) object)
-						.computeContexts(event);
-				// extract the first entry
-				if (helpContexts != null && helpContexts.length > 0) {
-					Object primaryEntry = helpContexts[0];
-					if (primaryEntry instanceof String) {
-						context = HelpSystem.getContext((String) primaryEntry);
-					} else if (primaryEntry instanceof IContext) {
-						context = (IContext) primaryEntry;
-					}
-				}
-			} else if (object instanceof Object[]) {
-				// mixed array of String or IContext (pre 2.0) - extract the
-				// first entry
-				Object[] helpContexts = (Object[]) object;
-				// extract the first entry
-				if (helpContexts.length > 0) {
-					Object primaryEntry = helpContexts[0];
-					if (primaryEntry instanceof String) {
-						context = HelpSystem.getContext((String) primaryEntry);
-					} else if (primaryEntry instanceof IContext) {
-						context = (IContext) primaryEntry;
-					}
-				}
-			}
-			
-			/*
-			 * If can't find it, show the "context is missing" context.
-			 */
-			if (context == null) {
-				context = HelpSystem.getContext(IWorkbenchHelpContextIds.MISSING);
-			}
-			
-			if (context != null) {
-				// determine a location in the upper right corner of the
-				// widget
-				Point point = computePopUpLocation(event.widget.getDisplay());
-				// display the help
-				getInstance().displayContext(context, point.x, point.y);
-			}
-		}
-	}
-
-	/**
-	 * Whether the help system has been initialized.
-	 */
-	private boolean isInitialized;
-
-	/**
-	 * Pluggable help UI, or <code>null</code> if none (or unknown).
-	 */
-	private AbstractHelpUI pluggableHelpUI = null;
-
-	/**
-	 * The id of the help extension that should be used. This is used only for
-	 * debugging purposes.
-	 */
-	private String desiredHelpSystemId;
-
-	/**
-	 * Handles dynamic removal of the help system.
-	 * 
-	 * @since 3.1
-	 */
-    /**
-     * Handles dynamic removal of the help system.
-     * 
-     * @since 3.1
-     */
-    private IExtensionChangeHandler handler = new IExtensionChangeHandler() {
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-         */
-        public void addExtension(IExtensionTracker tracker,IExtension extension) {
-            //Do nothing
-        }
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-         */
-        public void removeExtension(IExtension source, Object[] objects) {
-            for (int i = 0; i < objects.length; i++) {
-                if (objects[i] == pluggableHelpUI) {
-                    isInitialized = false;
-                    pluggableHelpUI = null;
-                    helpCompatibilityWrapper = null;
-                    // remove ourselves - we'll be added again in initalize if
-                    // needed
-                    PlatformUI.getWorkbench().getExtensionTracker()
-							.unregisterHandler(handler);
-                }
-            }
-        }
-    };
-    
-	/**
-	 * Compatibility implementation of old IHelp interface.
-	 * WorkbenchHelp.getHelpSupport and IHelp were deprecated in 3.0.
-	 */
-	private class CompatibilityIHelpImplementation implements IHelp {
-
-		/** @deprecated */
-		public void displayHelp() {
-			// real method - forward to help UI if available
-			AbstractHelpUI helpUI = getHelpUI();
-			if (helpUI != null) {
-				helpUI.displayHelp();
-			}
-		}
-
-		/** @deprecated */
-		public void displayContext(IContext context, int x, int y) {
-			// real method - forward to help UI if available
-			AbstractHelpUI helpUI = getHelpUI();
-			if (helpUI != null) {
-				helpUI.displayContext(context, x, y);
-			}
-		}
-
-		/** @deprecated */
-		public void displayContext(String contextId, int x, int y) {
-			// convenience method - funnel through the real method
-			IContext context = HelpSystem.getContext(contextId);
-			if (context != null) {
-				displayContext(context, x, y);
-			}
-		}
-
-		/** @deprecated */
-		public void displayHelpResource(String href) {
-			// real method - forward to help UI if available
-			AbstractHelpUI helpUI = getHelpUI();
-			if (helpUI != null) {
-				helpUI.displayHelpResource(href);
-			}
-		}
-
-		/** @deprecated */
-		public void displayHelpResource(IHelpResource helpResource) {
-			// convenience method - funnel through the real method
-			displayHelpResource(helpResource.getHref());
-		}
-
-		/** @deprecated */
-		public void displayHelp(String toc) {
-			// deprecated method - funnel through the real method
-			displayHelpResource(toc);
-		}
-
-		/** @deprecated */
-		public void displayHelp(String toc, String selectedTopic) {
-			// deprecated method - funnel through the real method
-			displayHelpResource(selectedTopic);
-		}
-
-		/** @deprecated */
-		public void displayHelp(String contextId, int x, int y) {
-			// deprecated method - funnel through the real method
-			displayContext(contextId, x, y);
-		}
-
-		/** @deprecated */
-		public void displayHelp(IContext context, int x, int y) {
-			// deprecated method - funnel through the real method
-			displayContext(context, x, y);
-		}
-
-		/** @deprecated */
-		public IContext getContext(String contextId) {
-			// non-UI method - forward to HelpSystem
-			return HelpSystem.getContext(contextId);
-		}
-
-		/** @deprecated */
-		public IToc[] getTocs() {
-			// non-UI method - forward to HelpSystem
-			return HelpSystem.getTocs();
-		}
-
-		/** @deprecated */
-		public boolean isContextHelpDisplayed() {
-			// real method - forward to pluggedhelp UI
-			return isContextHelpDisplayed();
-		}
-	}
-
-	/**
-	 * A wrapper for action help context that passes the action
-	 * text to be used as a title. 
-	 * @since 3.1
-	 */
-	private static class ContextWithTitle implements IContext2 {
-		private IContext context;
-		private String title;
-
-		ContextWithTitle(IContext context, String title) {
-			this.context = context;
-			this.title = title;
-		}
-
-		public String getTitle() {
-			if (context instanceof IContext2) {
-				String ctitle = ((IContext2)context).getTitle();
-				if (ctitle!=null) {
-					return ctitle;
-				}
-			}
-			return title;
-		}
-
-		public String getStyledText() {
-			if (context instanceof IContext2) {
-				return ((IContext2)context).getStyledText();
-			}
-			return context.getText();
-		}
-
-		public String getCategory(IHelpResource topic) {
-			if (context instanceof IContext2) {
-				return ((IContext2)context).getCategory(topic);
-			}
-			return null;
-		}
-
-		public IHelpResource[] getRelatedTopics() {
-			return context.getRelatedTopics();
-		}
-
-		public String getText() {
-			return context.getText();
-		}
-	}
-	
-	/**
-	 * Compatibility wrapper, or <code>null</code> if none. Do not access
-	 * directly; see getHelpSupport().
-	 */
-	private IHelp helpCompatibilityWrapper = null;
-
-	/**
-	 * The listener to attach to various widgets.
-	 */
-	private static HelpListener helpListener;
-
-	/**
-	 * For debug purposes only.  
-	 * 
-	 * @return the desired help system id
-	 */
-	public String getDesiredHelpSystemId() {
-		return desiredHelpSystemId;
-	}
-	
-	/**
-	 * For debug purposes only.
-	 * 
-	 * @param desiredHelpSystemId the desired help system id
-	 */
-	public void setDesiredHelpSystemId(String desiredHelpSystemId) {
-		dispose(); // prep for a new help system
-		this.desiredHelpSystemId = desiredHelpSystemId;
-	}
-	
-	/**
-	 * Singleton Constructor.
-	 */
-	private WorkbenchHelpSystem() {
-	}
-
-	/**
-	 * Return the singleton instance of this class.
-	 * 
-	 * @return the singleton instance
-	 */
-	public static WorkbenchHelpSystem getInstance() {
-		if (instance == null) {
-			instance = new WorkbenchHelpSystem();
-		}
-
-		return instance;
-	}
-
-	/**
-	 * Disposed of the singleton of this class if it has been created.
-	 */
-	public static void disposeIfNecessary() {
-		if (instance != null) {
-			instance.dispose();
-			instance = null;
-		}
-	}
-
-	/**
-	 * Dispose of any resources allocated by this instance.
-	 */
-	public void dispose() {
-		pluggableHelpUI = null;
-		helpCompatibilityWrapper = null;
-		isInitialized = false;
-		PlatformUI.getWorkbench().getExtensionTracker()
-				.unregisterHandler(handler);
-	}
-
-	/**
-	 * Returns the help UI for the platform, if available. This method will
-	 * initialize the help UI if necessary.
-	 * 
-	 * @return the help UI, or <code>null</code> if none
-	 */
-	private AbstractHelpUI getHelpUI() {
-		if (!isInitialized) {
-			isInitialized = initializePluggableHelpUI();
-		}
-		return pluggableHelpUI;
-	}
-
-	/**
-	 * Initializes the pluggable help UI by getting an instance via the
-	 * extension point.
-	 */
-	private boolean initializePluggableHelpUI() {
-		final boolean[] ret = new boolean[] { false };
-
-		BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see java.lang.Runnable#run()
-			 */
-			public void run() {
-				// get the help UI extension from the registry
-				IExtensionPoint point = Platform.getExtensionRegistry()
-						.getExtensionPoint(HELP_SYSTEM_EXTENSION_ID);
-				if (point == null) {
-					// our extension point is missing (!) - act like there was
-					// no help UI
-					return;
-				}
-				IExtension[] extensions = point.getExtensions();
-				if (extensions.length == 0) {
-					// no help UI present
-					return;
-				}
-
-				IConfigurationElement elementToUse = null;
-				if (desiredHelpSystemId == null) {
-					elementToUse = getFirstElement(extensions);
-				} else {
-					elementToUse = findElement(desiredHelpSystemId, extensions);
-				}
-
-				if (elementToUse != null) {
-					ret[0] = initializePluggableHelpUI(elementToUse);
-				}
-			}
-
-			private IConfigurationElement findElement(
-					String desiredHelpSystemId, IExtension[] extensions) {
-				for (int i = 0; i < extensions.length; i++) {
-					IExtension extension = extensions[i];
-					if (desiredHelpSystemId.equals(extension.getUniqueIdentifier())) {
-						IConfigurationElement[] elements = extensions[0]
-								.getConfigurationElements();
-						if (elements.length == 0) {
-							// help UI present but mangled - act like there was
-							// no help
-							// UI
-							return null;
-						}
-						return elements[0];
-					}
-
-				}
-				return null;
-			}
-
-			private IConfigurationElement getFirstElement(
-					IExtension[] extensions) {
-				// There should only be one extension/config element so we just
-				// take the first
-				IConfigurationElement[] elements = extensions[0]
-						.getConfigurationElements();
-				if (elements.length == 0) {
-					// help UI present but mangled - act like there was no help
-					// UI
-					return null;
-				}
-				return elements[0];
-			}
-
-			private boolean initializePluggableHelpUI(
-					IConfigurationElement element) {
-				// Instantiate the help UI
-				try {
-					pluggableHelpUI = (AbstractHelpUI) WorkbenchPlugin
-							.createExtension(element,
-									HELP_SYSTEM_CLASS_ATTRIBUTE);
-					// start listening for removals
-					PlatformUI.getWorkbench().getExtensionTracker()
-							.registerHandler(handler, null);
-					// register the new help UI for removal notification
-					PlatformUI
-							.getWorkbench()
-							.getExtensionTracker()
-							.registerObject(element.getDeclaringExtension(),
-									pluggableHelpUI, IExtensionTracker.REF_WEAK);
-					return true;
-				} catch (CoreException e) {
-					WorkbenchPlugin.log(
-							"Unable to instantiate help UI" + e.getStatus(), e);//$NON-NLS-1$
-				}
-				return false;
-			}
-
-		});
-		return ret[0];
-	}
-
-	/**
-	 * Determines the location for the help popup shell given the widget which
-	 * orginated the request for help.
-	 * 
-	 * @param display
-	 *            the display where the help will appear
-	 */
-	private static Point computePopUpLocation(Display display) {
-		Point point = display.getCursorLocation();
-		return new Point(point.x + 15, point.y);
-	}
-
-	/**
-	 * Returns the help listener which activates the help support system.
-	 * 
-	 * @return the help listener
-	 */
-	private HelpListener getHelpListener() {
-		if (helpListener == null) {
-			helpListener = new WorkbenchHelpListener();
-		}
-		return helpListener;
-	}
-
-	/**
-	 * Returns the help support system for the platform, if available.
-	 * 
-	 * @return the help support system, or <code>null</code> if none
-	 * @deprecated Use the static methods on this class and on
-	 *             {@link org.eclipse.help.HelpSystem HelpSystem}instead of the
-	 *             IHelp methods on the object returned by this method.
-	 */
-	public IHelp getHelpSupport() {
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null && helpCompatibilityWrapper == null) {
-			// create instance only once, and only if needed
-			helpCompatibilityWrapper = new CompatibilityIHelpImplementation();
-		}
-		return helpCompatibilityWrapper;
-
-	}
-
-	/**
-	 * Sets the given help contexts on the given action.
-	 * <p>
-	 * Use this method when the list of help contexts is known in advance. Help
-	 * contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param action
-	 *            the action on which to register the computer
-	 * @param contexts
-	 *            the contexts to use when F1 help is invoked; a mixed-type
-	 *            array of context ids (type <code>String</code>) and/or help
-	 *            contexts (type <code>IContext</code>)
-	 * @deprecated use setHelp with a single context id parameter
-	 */
-	public void setHelp(IAction action, final Object[] contexts) {
-		for (int i = 0; i < contexts.length; i++) {
-			Assert.isTrue(contexts[i] instanceof String
-					|| contexts[i] instanceof IContext);
-		}
-		action.setHelpListener(new HelpListener() {
-			public void helpRequested(HelpEvent event) {
-				if (contexts != null && contexts.length > 0
-						&& getHelpUI() != null) {
-					// determine the context
-					IContext context = null;
-					if (contexts[0] instanceof String) {
-						context = HelpSystem.getContext((String) contexts[0]);
-					} else if (contexts[0] instanceof IContext) {
-						context = (IContext) contexts[0];
-					}
-					if (context != null) {
-						Point point = computePopUpLocation(event.widget
-								.getDisplay());
-						displayContext(context, point.x, point.y);
-					}
-				}
-			}
-		});
-	}
-
-	/**
-	 * Sets the given help context computer on the given action.
-	 * <p>
-	 * Use this method when the help contexts cannot be computed in advance.
-	 * Help contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param action
-	 *            the action on which to register the computer
-	 * @param computer
-	 *            the computer to determine the help contexts for the control
-	 *            when F1 help is invoked
-	 * @deprecated context computers are no longer supported, clients should
-	 *             implement their own help listener
-	 */
-	public void setHelp(IAction action, final IContextComputer computer) {
-		action.setHelpListener(new HelpListener() {
-			public void helpRequested(HelpEvent event) {
-				Object[] helpContexts = computer.computeContexts(event);
-				if (helpContexts != null && helpContexts.length > 0
-						&& getHelpUI() != null) {
-					// determine the context
-					IContext context = null;
-					if (helpContexts[0] instanceof String) {
-						context = HelpSystem
-								.getContext((String) helpContexts[0]);
-					} else if (helpContexts[0] instanceof IContext) {
-						context = (IContext) helpContexts[0];
-					}
-					if (context != null) {
-						Point point = computePopUpLocation(event.widget
-								.getDisplay());
-						displayContext(context, point.x, point.y);
-					}
-				}
-			}
-		});
-	}
-
-	/**
-	 * Sets the given help contexts on the given control.
-	 * <p>
-	 * Use this method when the list of help contexts is known in advance. Help
-	 * contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param control
-	 *            the control on which to register the contexts
-	 * @param contexts
-	 *            the contexts to use when F1 help is invoked; a mixed-type
-	 *            array of context ids (type <code>String</code>) and/or help
-	 *            contexts (type <code>IContext</code>)
-	 * @deprecated use setHelp with single context id parameter
-	 */
-	public void setHelp(Control control, Object[] contexts) {
-		for (int i = 0; i < contexts.length; i++) {
-			Assert.isTrue(contexts[i] instanceof String
-					|| contexts[i] instanceof IContext);
-		}
-
-		control.setData(HELP_KEY, contexts);
-		// ensure that the listener is only registered once
-		control.removeHelpListener(getHelpListener());
-		control.addHelpListener(getHelpListener());
-	}
-
-	/**
-	 * Sets the given help context computer on the given control.
-	 * <p>
-	 * Use this method when the help contexts cannot be computed in advance.
-	 * Help contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param control
-	 *            the control on which to register the computer
-	 * @param computer
-	 *            the computer to determine the help contexts for the control
-	 *            when F1 help is invoked
-	 * @deprecated context computers are no longer supported, clients should
-	 *             implement their own help listener
-	 */
-	public void setHelp(Control control, IContextComputer computer) {
-		control.setData(HELP_KEY, computer);
-		// ensure that the listener is only registered once
-		control.removeHelpListener(getHelpListener());
-		control.addHelpListener(getHelpListener());
-	}
-
-	/**
-	 * Sets the given help contexts on the given menu.
-	 * <p>
-	 * Use this method when the list of help contexts is known in advance. Help
-	 * contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param menu
-	 *            the menu on which to register the context
-	 * @param contexts
-	 *            the contexts to use when F1 help is invoked; a mixed-type
-	 *            array of context ids (type <code>String</code>) and/or help
-	 *            contexts (type <code>IContext</code>)
-	 * @deprecated use setHelp with single context id parameter
-	 */
-	public void setHelp(Menu menu, Object[] contexts) {
-		for (int i = 0; i < contexts.length; i++) {
-			Assert.isTrue(contexts[i] instanceof String
-					|| contexts[i] instanceof IContext);
-		}
-		menu.setData(HELP_KEY, contexts);
-		// ensure that the listener is only registered once
-		menu.removeHelpListener(getHelpListener());
-		menu.addHelpListener(getHelpListener());
-	}
-
-	/**
-	 * Sets the given help context computer on the given menu.
-	 * <p>
-	 * Use this method when the help contexts cannot be computed in advance.
-	 * Help contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param menu
-	 *            the menu on which to register the computer
-	 * @param computer
-	 *            the computer to determine the help contexts for the control
-	 *            when F1 help is invoked
-	 * @deprecated context computers are no longer supported, clients should
-	 *             implement their own help listener
-	 */
-	public void setHelp(Menu menu, IContextComputer computer) {
-		menu.setData(HELP_KEY, computer);
-		// ensure that the listener is only registered once
-		menu.removeHelpListener(getHelpListener());
-		menu.addHelpListener(getHelpListener());
-	}
-
-	/**
-	 * Sets the given help contexts on the given menu item.
-	 * <p>
-	 * Use this method when the list of help contexts is known in advance. Help
-	 * contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param item
-	 *            the menu item on which to register the context
-	 * @param contexts
-	 *            the contexts to use when F1 help is invoked; a mixed-type
-	 *            array of context ids (type <code>String</code>) and/or help
-	 *            contexts (type <code>IContext</code>)
-	 * @deprecated use setHelp with single context id parameter
-	 */
-	public void setHelp(MenuItem item, Object[] contexts) {
-		for (int i = 0; i < contexts.length; i++) {
-			Assert.isTrue(contexts[i] instanceof String
-					|| contexts[i] instanceof IContext);
-		}
-		item.setData(HELP_KEY, contexts);
-		// ensure that the listener is only registered once
-		item.removeHelpListener(getHelpListener());
-		item.addHelpListener(getHelpListener());
-	}
-
-	/**
-	 * Sets the given help context computer on the given menu item.
-	 * <p>
-	 * Use this method when the help contexts cannot be computed in advance.
-	 * Help contexts can either supplied as a static list, or calculated with a
-	 * context computer (but not both).
-	 * </p>
-	 * 
-	 * @param item
-	 *            the menu item on which to register the computer
-	 * @param computer
-	 *            the computer to determine the help contexts for the control
-	 *            when F1 help is invoked
-	 * @deprecated context computers are no longer supported, clients should
-	 *             implement their own help listener
-	 */
-	public void setHelp(MenuItem item, IContextComputer computer) {
-		item.setData(HELP_KEY, computer);
-		// ensure that the listener is only registered once
-		item.removeHelpListener(getHelpListener());
-		item.addHelpListener(getHelpListener());
-	}
-	
-    /**
-     * Creates a new help listener for the given command. This retrieves the
-     * help context ID from the command, and creates an appropriate listener
-     * based on this.
-     * 
-     * @param command
-     *            The command for which the listener should be created; must
-     *            not be <code>null</code>.
-     * @return A help listener; never <code>null</code>.
-     */
-	public HelpListener createHelpListener(ICommand command) {
-		// TODO Need a help ID from the context
-		// final String contextId = command.getHelpId();
-		final String contextId = ""; //$NON-NLS-1$
-		return new HelpListener() {
-			public void helpRequested(HelpEvent event) {
-				if (getHelpUI() != null) {
-					IContext context = HelpSystem.getContext(contextId);
-					if (context != null) {
-						Point point = computePopUpLocation(event.widget
-								.getDisplay());
-						displayContext(context, point.x, point.y);
-					}
-				}
-			}
-		};
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displayHelp()
-	 */
-	public void displayHelp() {
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.displayHelp();
-		}
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displaySearch()
-	 */
-	public void displaySearch() {
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.displaySearch();
-		}
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displaySearch()
-	 */
-	public void displayDynamicHelp() {
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.displayDynamicHelp();
-		}
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#search(java.lang.String)
-	 */
-	public void search(String expression) {
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.search(expression);
-		}
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#resolve(java.lang.String, boolean)
-	 */
-	public URL resolve(String href, boolean documentOnly) {
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			return helpUI.resolve(href, documentOnly);
-		}
-		return null;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displayContext(org.eclipse.help.IContext,
-	 *      int, int)
-	 */
-	public void displayContext(IContext context, int x, int y) {
-		if (context == null) {
-			throw new IllegalArgumentException();
-		}
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.displayContext(context, x, y);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displayHelpResource(java.lang.String)
-	 */
-	public void displayHelpResource(String href) {
-		if (href == null) {
-			throw new IllegalArgumentException();
-		}
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.displayHelpResource(href);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displayHelp(java.lang.String)
-	 */
-	public void displayHelp(String contextId) {
-		IContext context = HelpSystem.getContext(contextId);
-		if (context != null) {
-			Point point = computePopUpLocation(Display.getCurrent());
-			displayContext(context, point.x, point.y);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#displayHelp(org.eclipse.help.IContext)
-	 */
-	public void displayHelp(IContext context) {
-		Point point = computePopUpLocation(Display.getCurrent());
-		AbstractHelpUI helpUI = getHelpUI();
-		if (helpUI != null) {
-			helpUI.displayContext(context, point.x, point.y);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#isContextHelpDisplayed()
-	 */
-	public boolean isContextHelpDisplayed() {
-		if (!isInitialized) {
-			return false;
-		}
-		AbstractHelpUI helpUI = getHelpUI();
-		return helpUI != null && helpUI.isContextHelpDisplayed();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#setHelp(org.eclipse.jface.action.IAction,
-	 *      java.lang.String)
-	 */
-	public void setHelp(final IAction action, final String contextId) {
-		action.setHelpListener(new HelpListener() {
-			public void helpRequested(HelpEvent event) {
-				if (getHelpUI() != null) {
-					IContext context = HelpSystem.getContext(contextId);
-					if (context != null) {
-						Point point = computePopUpLocation(event.widget
-								.getDisplay());
-						displayContext(new ContextWithTitle(context, action.getText()), point.x, point.y);
-					}
-				}
-			}
-		});
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#setHelp(org.eclipse.swt.widgets.Control,
-	 *      java.lang.String)
-	 */
-	public void setHelp(Control control, String contextId) {
-		control.setData(HELP_KEY, contextId);
-		// ensure that the listener is only registered once
-		control.removeHelpListener(getHelpListener());
-		control.addHelpListener(getHelpListener());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#setHelp(org.eclipse.swt.widgets.Menu,
-	 *      java.lang.String)
-	 */
-	public void setHelp(Menu menu, String contextId) {
-		menu.setData(HELP_KEY, contextId);
-		// ensure that the listener is only registered once
-		menu.removeHelpListener(getHelpListener());
-		menu.addHelpListener(getHelpListener());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#setHelp(org.eclipse.swt.widgets.MenuItem,
-	 *      java.lang.String)
-	 */
-	public void setHelp(MenuItem item, String contextId) {
-		item.setData(HELP_KEY, contextId);
-		// ensure that the listener is only registered once
-		item.removeHelpListener(getHelpListener());
-		item.addHelpListener(getHelpListener());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.help.IWorkbenchHelpSystem#hasHelpUI()
-	 */
-	public boolean hasHelpUI() {
-		return getHelpUI() != null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroConstants.java
deleted file mode 100644
index ff3acd7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroConstants.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.intro;
-
-/**
- * Contains constants used by the intro implementation
- * 
- * @since 3.0
- */
-public interface IIntroConstants {
-
-    /**
-     * The id of the view that is used as the intro host.
-     */
-    public static final String INTRO_VIEW_ID = "org.eclipse.ui.internal.introview"; //$NON-NLS-1$ 
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroDescriptor.java
deleted file mode 100644
index e43165c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroDescriptor.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.intro;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.intro.IIntroPart;
-
-/**
- * Describes an introduction extension.
- *  
- * @since 3.0
- */
-public interface IIntroDescriptor {
-
-    /**
-     * Creates an instance of the intro part defined in the descriptor.
-     */
-    IIntroPart createIntro() throws CoreException;
-
-    /**
-     * Returns the part id.
-     *
-     * @return the id of the part
-     */
-    public String getId();
-
-    /**
-     * Returns the descriptor of the image for this part.
-     *
-     * @return the descriptor of the image to display next to this part
-     */
-    public ImageDescriptor getImageDescriptor();
-    
-    /**
-	 * Return the label override string for this part.
-	 * 
-	 * @return the label override string or <code>null</code> if one has not
-	 *         been specified
-     * @since 3.2
-	 */
-	public String getLabelOverride();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroRegistry.java
deleted file mode 100644
index 896888b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IIntroRegistry.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.intro;
-
-/**
- * Registry for introduction elements.
- * 
- * @since 3.0
- */
-public interface IIntroRegistry {
-
-    /**
-     * Return the number of introduction extensions known by this registry.
-     * 
-     * @return the number of introduction extensions known by this registry 
-     */
-    int getIntroCount();
-
-    /** 
-     * Return the introduction extensions known by this registry.
-     * 
-     * @return the introduction extensions known by this registry 
-     */
-    IIntroDescriptor[] getIntros();
-
-    /**
-     * Return the introduction extension that is bound to the given product.
-     * 
-     * @param productId the product identifier
-     * @return the introduction extension that is bound to the given product, 
-     * or <code>null</code> if there is no such binding
-     */
-    IIntroDescriptor getIntroForProduct(String productId);
-
-    /**
-     * Find an intro descriptor with the given identifier.
-     * 
-     * @param id the id
-     * @return the intro descriptor, or <code>null</code>
-     */
-    IIntroDescriptor getIntro(String id);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroDescriptor.java
deleted file mode 100644
index 9f6316b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroDescriptor.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.intro;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.intro.IIntroPart;
-import org.eclipse.ui.intro.IntroContentDetector;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Describes an introduction extension.
- * 
- * @since 3.0
- */
-public class IntroDescriptor implements IIntroDescriptor, IPluginContribution {
-
-
-    private IConfigurationElement element;
-
-    private ImageDescriptor imageDescriptor;
-
-    /**
-     * Create a new IntroDescriptor for an extension.
-     */
-    public IntroDescriptor(IConfigurationElement configElement)
-            throws CoreException {
-    	element = configElement;  
-
-    	if (configElement.getAttribute(IWorkbenchRegistryConstants.ATT_CLASS) == null) {
-            throw new CoreException(new Status(IStatus.ERROR, configElement
-                    .getNamespace(), 0,
-                    "Invalid extension (Missing class name): " + getId(), //$NON-NLS-1$
-                    null));
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.intro.IIntroDescriptor#createIntro()
-     */
-    public IIntroPart createIntro() throws CoreException {
-    	return (IIntroPart) element.createExecutableExtension(IWorkbenchRegistryConstants.ATT_CLASS);
-    }
-    
-    public IntroContentDetector getIntroContentDetector() throws CoreException {
-    	if (element.getAttribute(IWorkbenchRegistryConstants.ATT_CONTENT_DETECTOR) == null) {
-    		return null;
-    	}
-    	return (IntroContentDetector) element.createExecutableExtension(IWorkbenchRegistryConstants.ATT_CONTENT_DETECTOR);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IIntroDescriptor#getId()
-     */
-    public String getId() {    	
-        return element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IIntroDescriptor#getImageDescriptor()
-     */
-    public ImageDescriptor getImageDescriptor() {
-        if (imageDescriptor != null) {
-			return imageDescriptor;
-		}        
-		String iconName = element.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-		if (iconName == null) {
-			return null;
-		}
-        
-        imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element
-                .getNamespace(), iconName);
-        return imageDescriptor;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return element.getNamespace();
-    }
-    
-    /**
-     * Returns the configuration element.
-     * 
-     * @return the configuration element
-     * @since 3.1
-     */
-    public IConfigurationElement getConfigurationElement() {
-    	return element;
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.intro.IIntroDescriptor#getLabelOverride()
-	 */
-	public String getLabelOverride() {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroMessages.java
deleted file mode 100644
index c94f8fe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroMessages.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.intro;
-
-import org.eclipse.osgi.util.NLS;
-
-
-/**
- * The IntroMessages are the messages used in the intro support.
- */
-public class IntroMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.intro.intro";//$NON-NLS-1$
-	
-	public static String Intro_could_not_create_part;
-	public static String Intro_could_not_create_proxy;
-	public static String Intro_could_not_create_descriptor;
-	public static String Intro_action_text;
-	public static String Intro_default_title;
-    public static String Intro_missing_product_title;
-    public static String Intro_missing_product_message;
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, IntroMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroRegistry.java
deleted file mode 100644
index 0e1f5eb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/IntroRegistry.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.intro;
-
-import java.util.ArrayList;
-
-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.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * Registry for introduction elements.
- * 
- * @since 3.0
- */
-public class IntroRegistry implements IIntroRegistry {
-	private static final String TAG_INTRO = "intro";//$NON-NLS-1$	
-
-	private static final String TAG_INTROPRODUCTBINDING = "introProductBinding";//$NON-NLS-1$
-
-	private static final String ATT_INTROID = "introId"; //$NON-NLS-1$
-
-	private static final String ATT_PRODUCTID = "productId"; //$NON-NLS-1$	
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.intro.IIntroRegistry#getIntroCount()
-	 */
-	public int getIntroCount() {
-		return getIntros().length;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.intro.IIntroRegistry#getIntros()
-	 */
-	public IIntroDescriptor[] getIntros() {
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_INTRO);
-		if (point == null) {
-			return new IIntroDescriptor[0];
-		}
-
-		IExtension[] extensions = point.getExtensions();
-		extensions = RegistryReader.orderExtensions(extensions);
-
-		ArrayList list = new ArrayList(extensions.length);
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement[] elements = extensions[i]
-					.getConfigurationElements();
-			for (int j = 0; j < elements.length; j++) {
-				if (elements[j].getName().equals(TAG_INTRO)) {
-					try {
-						IIntroDescriptor descriptor = new IntroDescriptor(
-								elements[j]);
-						list.add(descriptor);
-					} catch (CoreException e) {
-						// log an error since its not safe to open a dialog here
-						WorkbenchPlugin
-								.log(
-										IntroMessages.Intro_could_not_create_descriptor, e.getStatus());
-					}
-				}
-			}
-		}
-
-		return (IIntroDescriptor[]) list.toArray(new IIntroDescriptor[list
-				.size()]);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.intro.IIntroRegistry#getIntroForProduct(java.lang.String)
-	 */
-	public IIntroDescriptor getIntroForProduct(String targetProductId) {
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_INTRO);
-		if (point == null) {
-			return null;
-		}
-
-		IExtension[] extensions = point.getExtensions();
-		extensions = RegistryReader.orderExtensions(extensions);
-
-		String targetIntroId = getIntroForProduct(targetProductId, extensions);
-		if (targetIntroId == null) {
-			return null;
-		}
-
-		IIntroDescriptor descriptor = null;
-
-		IIntroDescriptor[] intros = getIntros();
-		for (int i = 0; i < intros.length; i++) {
-			if (intros[i].getId().equals(targetIntroId)) {
-				descriptor = intros[i];
-				break;
-			}
-		}
-
-		return descriptor;
-	}
-
-	/**
-	 * @param targetProductId
-	 * @param extensions
-	 * @return
-	 */
-	private String getIntroForProduct(String targetProductId,
-			IExtension[] extensions) {
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement[] elements = extensions[i]
-					.getConfigurationElements();
-			for (int j = 0; j < elements.length; j++) {
-				if (elements[j].getName().equals(TAG_INTROPRODUCTBINDING)) {
-					String introId = elements[j].getAttribute(ATT_INTROID);
-					String productId = elements[j].getAttribute(ATT_PRODUCTID);
-
-					if (introId == null || productId == null) {
-						IStatus status = new Status(
-								IStatus.ERROR,
-								elements[j].getDeclaringExtension()
-										.getNamespace(),
-								IStatus.ERROR,
-								"introId and productId must be defined.", new IllegalArgumentException()); //$NON-NLS-1$
-						WorkbenchPlugin.log("Invalid intro binding", status); //$NON-NLS-1$
-						continue;
-					}
-
-					if (targetProductId.equals(productId)) {
-						return introId;
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.intro.IIntroRegistry#getIntro(java.lang.String)
-	 */
-	public IIntroDescriptor getIntro(String id) {
-		IIntroDescriptor[] intros = getIntros();
-		for (int i = 0; i < intros.length; i++) {
-			IIntroDescriptor desc = intros[i];
-			if (desc.getId().equals(id)) {
-				return desc;
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/intro.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/intro.properties
deleted file mode 100644
index 0bc2e14..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/intro/intro.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-Intro_could_not_create_part=Could not create intro part.
-Intro_could_not_create_proxy=Could not create intro view proxy.
-Intro_could_not_create_descriptor=Unable to create intro descriptor.
-Intro_action_text=&Welcome
-Intro_default_title=Welcome
-Intro_missing_product_title=No Welcome Content Found
-Intro_missing_product_message=There is no welcome content suitable for display in this application.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java
deleted file mode 100644
index fecad89..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.ResourceBundle;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.IKeyFormatter;
-import org.eclipse.ui.keys.Key;
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.KeyStroke;
-import org.eclipse.ui.keys.ModifierKey;
-import org.eclipse.ui.keys.NaturalKey;
-
-/**
- * An abstract implementation of a key formatter that provides a lot of common
- * key formatting functionality. It is recommended that those people
- * implementing their own key formatters subclass from here, rather than
- * implementing <code>KeyFormatter</code> directly.
- * 
- * @since 3.0
- */
-public abstract class AbstractKeyFormatter implements IKeyFormatter {
-
-    /**
-     * The key for the delimiter between keys. This is used in the
-     * internationalization bundles.
-     */
-    protected final static String KEY_DELIMITER_KEY = "KEY_DELIMITER"; //$NON-NLS-1$
-
-    /**
-     * The key for the delimiter between key strokes. This is used in the
-     * internationalization bundles.
-     */
-    protected final static String KEY_STROKE_DELIMITER_KEY = "KEY_STROKE_DELIMITER"; //$NON-NLS-1$
-
-    /**
-     * The bundle in which to look up the internationalized text for all of the
-     * individual keys in the system. This is the platform-agnostic version of
-     * the internationalized strings. Some platforms (namely Carbon) provide
-     * special Unicode characters and glyphs for some keys.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(AbstractKeyFormatter.class.getName());
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.KeyFormatter#format(org.eclipse.ui.keys.KeySequence)
-     */
-    public String format(Key key) {
-        String name = key.toString();
-        return Util.translateString(RESOURCE_BUNDLE, name, name, false, false);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.KeyFormatter#format(org.eclipse.ui.keys.KeySequence)
-     */
-    public String format(KeySequence keySequence) {
-        StringBuffer stringBuffer = new StringBuffer();
-
-        Iterator keyStrokeItr = keySequence.getKeyStrokes().iterator();
-        while (keyStrokeItr.hasNext()) {
-            stringBuffer.append(format((KeyStroke) keyStrokeItr.next()));
-
-            if (keyStrokeItr.hasNext()) {
-                stringBuffer.append(getKeyStrokeDelimiter());
-            }
-        }
-
-        return stringBuffer.toString();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.KeyFormatter#formatKeyStroke(org.eclipse.ui.keys.KeyStroke)
-     */
-    public String format(KeyStroke keyStroke) {
-        String keyDelimiter = getKeyDelimiter();
-
-        // Format the modifier keys, in sorted order.
-        SortedSet modifierKeys = new TreeSet(getModifierKeyComparator());
-        modifierKeys.addAll(keyStroke.getModifierKeys());
-        StringBuffer stringBuffer = new StringBuffer();
-        Iterator modifierKeyItr = modifierKeys.iterator();
-        while (modifierKeyItr.hasNext()) {
-            stringBuffer.append(format((ModifierKey) modifierKeyItr.next()));
-            stringBuffer.append(keyDelimiter);
-        }
-
-        // Format the natural key, if any.
-        NaturalKey naturalKey = keyStroke.getNaturalKey();
-        if (naturalKey != null) {
-            stringBuffer.append(format(naturalKey));
-        }
-
-        return stringBuffer.toString();
-
-    }
-
-    /**
-     * An accessor for the delimiter you wish to use between keys. This is used
-     * by the default format implementations to determine the key delimiter.
-     * 
-     * @return The delimiter to use between keys; should not be <code>null</code>.
-     */
-    protected abstract String getKeyDelimiter();
-
-    /**
-     * An accessor for the delimiter you wish to use between key strokes. This
-     * used by the default format implementations to determine the key stroke
-     * delimiter.
-     * 
-     * @return The delimiter to use between key strokes; should not be <code>null</code>.
-     */
-    protected abstract String getKeyStrokeDelimiter();
-
-    /**
-     * An accessor for the comparator to use for sorting modifier keys. This is
-     * used by the default format implementations to sort the modifier keys
-     * before formatting them into a string.
-     * 
-     * @return The comparator to use to sort modifier keys; must not be <code>null</code>.
-     */
-    protected abstract Comparator getModifierKeyComparator();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
deleted file mode 100644
index f5d216c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractKeyFormatter.properties
+++ /dev/null
@@ -1,74 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# Modifier keys
-ALT=Alt
-COMMAND=Command
-CTRL=Ctrl
-SHIFT=Shift
-
-# Special keys
-ARROW_DOWN=Down
-ARROW_LEFT=Left
-ARROW_RIGHT=Right
-ARROW_UP=Up
-BREAK=Break
-CAPS_LOCK=CapsLock
-END=End
-F1=F1
-F10=F10
-F11=F11
-F12=F12
-F2=F2
-F3=F3
-F4=F4
-F5=F5
-F6=F6
-F7=F7
-F8=F8
-F9=F9
-HOME=Home
-INSERT=Insert
-NUM_LOCK=NumLock
-NUMPAD_0=Numpad_0
-NUMPAD_1=Numpad_1
-NUMPAD_2=Numpad_2
-NUMPAD_3=Numpad_3
-NUMPAD_4=Numpad_4
-NUMPAD_5=Numpad_5
-NUMPAD_6=Numpad_6
-NUMPAD_7=Numpad_7
-NUMPAD_8=Numpad_8
-NUMPAD_9=Numpad_9
-NUMPAD_ADD=Numpad_Add
-NUMPAD_DECIMAL=Numpad_Decimal
-NUMPAD_DIVIDE=Numpad_Divide
-NUMPAD_ENTER=Numpad_Enter
-NUMPAD_EQUAL=Numpad_Equal
-NUMPAD_MULTIPLY=Numpad_Multiply
-NUMPAD_SUBTRACT=Numpad_Subtract
-PAGE_DOWN=PageDown
-PAGE_UP=PageUp
-PAUSE=Pause
-PRINT_SCREEN=PrintScreen
-SCROLL_LOCK=ScrollLock
-
-# Character keys
-BS=Backspace
-CR=Enter
-DEL=Delete
-ESC=Esc
-FF=FormFeed
-LF=LineFeed
-NUL=Null
-SPACE=Space
-TAB=Tab
-VT=VerticalTab
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java
deleted file mode 100644
index 6db7565..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AbstractModifierKeyComparator.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-
-import org.eclipse.ui.keys.ModifierKey;
-
-abstract class AbstractModifierKeyComparator implements Comparator {
-
-    public int compare(Object left, Object right) {
-        ModifierKey modifierKeyLeft = (ModifierKey) left;
-        ModifierKey modifierKeyRight = (ModifierKey) right;
-        int modifierKeyLeftRank = rank(modifierKeyLeft);
-        int modifierKeyRightRank = rank(modifierKeyRight);
-
-        if (modifierKeyLeftRank != modifierKeyRightRank) {
-			return modifierKeyLeftRank - modifierKeyRightRank;
-		} else {
-			return modifierKeyLeft.compareTo(modifierKeyRight);
-		}
-    }
-
-    protected abstract int rank(ModifierKey modifierKey);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java
deleted file mode 100644
index c2b254e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/AlphabeticModifierKeyComparator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-
-import org.eclipse.ui.keys.ModifierKey;
-
-/**
- * Compares modifier keys lexicographically by the name of the key.
- * 
- * @since 3.0
- */
-public class AlphabeticModifierKeyComparator implements Comparator {
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public int compare(Object left, Object right) {
-        ModifierKey modifierKeyLeft = (ModifierKey) left;
-        ModifierKey modifierKeyRight = (ModifierKey) right;
-        return modifierKeyLeft.toString()
-                .compareTo(modifierKeyRight.toString());
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingPersistence.java
deleted file mode 100644
index 2f5edda..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingPersistence.java
+++ /dev/null
@@ -1,1170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.HandleObject;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.bindings.keys.ParseException;
-import org.eclipse.jface.bindings.keys.SWTKeySupport;
-import org.eclipse.jface.contexts.IContextIds;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.ShowViewMenu;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.PreferencePersistence;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.views.IViewRegistry;
-
-/**
- * <p>
- * A static class for accessing the registry and the preference store.
- * </p>
- * 
- * @since 3.1
- */
-public final class BindingPersistence extends PreferencePersistence {
-
-	/**
-	 * Whether this class should print out debugging information when it reads
-	 * in data, or writes to the preference store.
-	 */
-	private static final boolean DEBUG = Policy.DEBUG_KEY_BINDINGS;
-
-	/**
-	 * The index of the active scheme configuration elements in the indexed
-	 * array.
-	 * 
-	 * @see BindingPersistence#read()
-	 */
-	private static final int INDEX_ACTIVE_SCHEME = 0;
-
-	/**
-	 * The index of the binding definition configuration elements in the indexed
-	 * array.
-	 * 
-	 * @see BindingPersistence#read()
-	 */
-	private static final int INDEX_BINDING_DEFINITIONS = 1;
-
-	/**
-	 * The index of the scheme definition configuration elements in the indexed
-	 * array.
-	 * 
-	 * @see BindingPersistence#read(BindingManager, ICommandService)
-	 */
-	private static final int INDEX_SCHEME_DEFINITIONS = 2;
-
-	/**
-	 * The name of the default scope in 2.1.x.
-	 */
-	private static final String LEGACY_DEFAULT_SCOPE = "org.eclipse.ui.globalScope"; //$NON-NLS-1$
-
-	/**
-	 * A look-up map for 2.1.x style <code>string</code> keys on a
-	 * <code>keyBinding</code> element.
-	 */
-	private static final Map r2_1KeysByName = new HashMap();
-
-	static {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		r2_1KeysByName.put(IKeyLookup.BACKSPACE_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.BACKSPACE_NAME));
-		r2_1KeysByName.put(IKeyLookup.TAB_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.TAB_NAME));
-		r2_1KeysByName.put(IKeyLookup.RETURN_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.RETURN_NAME));
-		r2_1KeysByName.put(IKeyLookup.ENTER_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ENTER_NAME));
-		r2_1KeysByName.put(IKeyLookup.ESCAPE_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ESCAPE_NAME));
-		r2_1KeysByName.put(IKeyLookup.ESC_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ESC_NAME));
-		r2_1KeysByName.put(IKeyLookup.DELETE_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.DELETE_NAME));
-		r2_1KeysByName.put(IKeyLookup.SPACE_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.SPACE_NAME));
-		r2_1KeysByName.put(IKeyLookup.ARROW_UP_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ARROW_UP_NAME));
-		r2_1KeysByName.put(IKeyLookup.ARROW_DOWN_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ARROW_DOWN_NAME));
-		r2_1KeysByName.put(IKeyLookup.ARROW_LEFT_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ARROW_LEFT_NAME));
-		r2_1KeysByName.put(IKeyLookup.ARROW_RIGHT_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.ARROW_RIGHT_NAME));
-		r2_1KeysByName.put(IKeyLookup.PAGE_UP_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.PAGE_UP_NAME));
-		r2_1KeysByName.put(IKeyLookup.PAGE_DOWN_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.PAGE_DOWN_NAME));
-		r2_1KeysByName.put(IKeyLookup.HOME_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.HOME_NAME));
-		r2_1KeysByName.put(IKeyLookup.END_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.END_NAME));
-		r2_1KeysByName.put(IKeyLookup.INSERT_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.INSERT_NAME));
-		r2_1KeysByName.put(IKeyLookup.F1_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F1_NAME));
-		r2_1KeysByName.put(IKeyLookup.F2_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F2_NAME));
-		r2_1KeysByName.put(IKeyLookup.F3_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F3_NAME));
-		r2_1KeysByName.put(IKeyLookup.F4_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F4_NAME));
-		r2_1KeysByName.put(IKeyLookup.F5_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F5_NAME));
-		r2_1KeysByName.put(IKeyLookup.F6_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F6_NAME));
-		r2_1KeysByName.put(IKeyLookup.F7_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F7_NAME));
-		r2_1KeysByName.put(IKeyLookup.F8_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F8_NAME));
-		r2_1KeysByName.put(IKeyLookup.F9_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F9_NAME));
-		r2_1KeysByName.put(IKeyLookup.F10_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F10_NAME));
-		r2_1KeysByName.put(IKeyLookup.F11_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F11_NAME));
-		r2_1KeysByName.put(IKeyLookup.F12_NAME, lookup
-				.formalKeyLookupInteger(IKeyLookup.F12_NAME));
-	}
-
-	/**
-	 * Converts a 2.1.x style key sequence (as parsed from the
-	 * <code>string</code> attribute of the <code>keyBinding</code>) to a
-	 * 3.1 key sequence.
-	 * 
-	 * @param r21KeySequence
-	 *            The sequence of 2.1.x key strokes that should be converted
-	 *            into a 3.1 key sequence; never <code>null</code>.
-	 * @return A 3.1 key sequence; never <code>null</code>.
-	 */
-	private static final KeySequence convert2_1Sequence(int[] r21KeySequence) {
-		final int r21KeySequenceLength = r21KeySequence.length;
-		final KeyStroke[] keyStrokes = new KeyStroke[r21KeySequenceLength];
-		for (int i = 0; i < r21KeySequenceLength; i++) {
-			keyStrokes[i] = convert2_1Stroke(r21KeySequence[i]);
-		}
-
-		return KeySequence.getInstance(keyStrokes);
-	}
-
-	/**
-	 * Converts a 2.1.x style key stroke (as parsed from the <code>string</code>
-	 * attribute of the <code>keyBinding</code> to a 3.1 key stroke.
-	 * 
-	 * @param r21Stroke
-	 *            The 2.1.x stroke to convert; must never be <code>null</code>.
-	 * @return A 3.1 key stroke; never <code>null</code>.
-	 */
-	private static final KeyStroke convert2_1Stroke(final int r21Stroke) {
-		return SWTKeySupport.convertAcceleratorToKeyStroke(r21Stroke);
-	}
-
-	/**
-	 * Returns the default scheme identifier for the currently running
-	 * application.
-	 * 
-	 * @return The default scheme identifier (<code>String</code>); never
-	 *         <code>null</code>, but may be empty or point to an undefined
-	 *         scheme.
-	 */
-	static final String getDefaultSchemeId() {
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		return store
-				.getDefaultString(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID);
-	}
-
-	/**
-	 * Parses a 2.1.x <code>string</code> attribute of the
-	 * <code>keyBinding</code> element.
-	 * 
-	 * @param string
-	 *            The string to parse; must not be <code>null</code>.
-	 * @return An array of integer values -- each integer representing a single
-	 *         key stroke. This array may be empty, but it is never
-	 *         <code>null</code>.
-	 */
-	private static final int[] parse2_1Sequence(final String string) {
-		final StringTokenizer stringTokenizer = new StringTokenizer(string);
-		final int length = stringTokenizer.countTokens();
-		final int[] strokes = new int[length];
-
-		for (int i = 0; i < length; i++) {
-			strokes[i] = parse2_1Stroke(stringTokenizer.nextToken());
-		}
-
-		return strokes;
-	}
-
-	/**
-	 * Parses a single 2.1.x key stroke string, as provided by
-	 * <code>parse2_1Sequence</code>.
-	 * 
-	 * @param string
-	 *            The string to parse; must not be <code>null</code>.
-	 * @return An single integer value representing this key stroke.
-	 */
-	private static final int parse2_1Stroke(final String string) {
-		final StringTokenizer stringTokenizer = new StringTokenizer(string,
-				KeyStroke.KEY_DELIMITER, true);
-
-		// Copy out the tokens so we have random access.
-		final int size = stringTokenizer.countTokens();
-		final String[] tokens = new String[size];
-		for (int i = 0; stringTokenizer.hasMoreTokens(); i++) {
-			tokens[i] = stringTokenizer.nextToken();
-		}
-
-		int value = 0;
-		if (size % 2 == 1) {
-			String token = tokens[size - 1];
-			final Integer integer = (Integer) r2_1KeysByName.get(token
-					.toUpperCase());
-
-			if (integer != null) {
-				value = integer.intValue();
-			} else if (token.length() == 1) {
-				value = token.toUpperCase().charAt(0);
-			}
-
-			if (value != 0) {
-				for (int i = 0; i < size - 1; i++) {
-					token = tokens[i];
-
-					if (i % 2 == 0) {
-						if (token.equalsIgnoreCase(IKeyLookup.CTRL_NAME)) {
-							if ((value & SWT.CTRL) != 0) {
-								return 0;
-							}
-
-							value |= SWT.CTRL;
-
-						} else if (token.equalsIgnoreCase(IKeyLookup.ALT_NAME)) {
-							if ((value & SWT.ALT) != 0) {
-								return 0;
-							}
-
-							value |= SWT.ALT;
-
-						} else if (token
-								.equalsIgnoreCase(IKeyLookup.SHIFT_NAME)) {
-							if ((value & SWT.SHIFT) != 0) {
-								return 0;
-							}
-
-							value |= SWT.SHIFT;
-
-						} else if (token
-								.equalsIgnoreCase(IKeyLookup.COMMAND_NAME)) {
-							if ((value & SWT.COMMAND) != 0) {
-								return 0;
-							}
-
-							value |= SWT.COMMAND;
-
-						} else {
-							return 0;
-
-						}
-
-					} else if (!KeyStroke.KEY_DELIMITER.equals(token)) {
-						return 0;
-					}
-				}
-			}
-		}
-
-		return value;
-	}
-
-	/**
-	 * <p>
-	 * Reads the registry and the preference store, and determines the
-	 * identifier for the scheme that should be active. There is a complicated
-	 * order of priorities for this. The registry will only be read if there is
-	 * no user preference, and the default active scheme id is different than
-	 * the default default active scheme id.
-	 * </p>
-	 * <ol>
-	 * <li>A non-default preference.</li>
-	 * <li>The legacy preference XML memento.</li>
-	 * <li>A default preference value that is different than the default
-	 * default active scheme id.</li>
-	 * <li>The registry.</li>
-	 * <li>The default default active scheme id.</li>
-	 * </ol>
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements from the commands extension point;
-	 *            must not be <code>null</code>.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param preferences
-	 *            The memento wrapping the commands preference key; may be
-	 *            <code>null</code>.
-	 * @param bindingManager
-	 *            The binding manager that should be updated with the active
-	 *            scheme. This binding manager must already have its schemes
-	 *            defined. This value must not be <code>null</code>.
-	 */
-	private static final void readActiveScheme(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount, final IMemento preferences,
-			final BindingManager bindingManager) {
-		// A non-default preference.
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		final String defaultActiveSchemeId = store
-				.getDefaultString(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID);
-		final String preferenceActiveSchemeId = store
-				.getString(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID);
-		if ((preferenceActiveSchemeId != null)
-				&& (!preferenceActiveSchemeId.equals(defaultActiveSchemeId))) {
-			try {
-				bindingManager.setActiveScheme(bindingManager
-						.getScheme(preferenceActiveSchemeId));
-				return;
-			} catch (final NotDefinedException e) {
-				// Let's keep looking....
-			}
-		}
-
-		// A legacy preference XML memento.
-		if (preferences != null) {
-			final IMemento[] preferenceMementos = preferences
-					.getChildren(TAG_ACTIVE_KEY_CONFIGURATION);
-			int preferenceMementoCount = preferenceMementos.length;
-			for (int i = preferenceMementoCount - 1; i >= 0; i--) {
-				final IMemento memento = preferenceMementos[i];
-				String id = memento.getString(ATT_KEY_CONFIGURATION_ID);
-				if (id != null) {
-					try {
-						bindingManager.setActiveScheme(bindingManager
-								.getScheme(id));
-						return;
-					} catch (final NotDefinedException e) {
-						// Let's keep looking....
-					}
-				}
-			}
-		}
-
-		// A default preference value that is different than the default.
-		if ((defaultActiveSchemeId != null && defaultActiveSchemeId.length() > 0)
-				&& (!defaultActiveSchemeId
-						.equals(IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID))) {
-			try {
-				bindingManager.setActiveScheme(bindingManager
-						.getScheme(defaultActiveSchemeId));
-				return;
-			} catch (final NotDefinedException e) {
-				// Let's keep looking....
-			}
-		}
-
-		// The registry.
-		for (int i = configurationElementCount - 1; i >= 0; i--) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			String id = configurationElement
-					.getAttribute(ATT_KEY_CONFIGURATION_ID);
-			if (id != null) {
-				try {
-					bindingManager
-							.setActiveScheme(bindingManager.getScheme(id));
-					return;
-				} catch (final NotDefinedException e) {
-					// Let's keep looking....
-				}
-			}
-
-			id = configurationElement.getAttribute(ATT_VALUE);
-			if (id != null) {
-				try {
-					bindingManager
-							.setActiveScheme(bindingManager.getScheme(id));
-					return;
-				} catch (final NotDefinedException e) {
-					// Let's keep looking....
-				}
-			}
-		}
-
-		// The default default active scheme id.
-		try {
-			bindingManager
-					.setActiveScheme(bindingManager
-							.getScheme(IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID));
-		} catch (final NotDefinedException e) {
-			//this is bad - the default default scheme should always exist
-			throw new Error(
-					"The default default active scheme id is not defined."); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Reads all of the binding definitions from the preferences.
-	 * 
-	 * @param preferences
-	 *            The memento for the commands preferences key.
-	 * @param bindingManager
-	 *            The binding manager to which the bindings should be added;
-	 *            must not be <code>null</code>.
-	 * @param commandService
-	 *            The command service for the workbench; must not be
-	 *            <code>null</code>.
-	 */
-	private static final void readBindingsFromPreferences(
-			final IMemento preferences, final BindingManager bindingManager,
-			final ICommandService commandService) {
-		List warningsToLog = new ArrayList(1);
-
-		if (preferences != null) {
-			IViewRegistry viewRegistry = PlatformUI.getWorkbench().getViewRegistry();
-			final IMemento[] preferenceMementos = preferences
-					.getChildren(TAG_KEY_BINDING);
-			int preferenceMementoCount = preferenceMementos.length;
-			for (int i = preferenceMementoCount - 1; i >= 0; i--) {
-				final IMemento memento = preferenceMementos[i];
-
-				// Read out the command id.
-				String commandId = readOptional(memento, ATT_COMMAND_ID);
-				if (commandId == null) {
-					commandId = readOptional(memento, ATT_COMMAND);
-				}
-				String viewParameter = null;
-				final Command command;
-				if (commandId != null) {
-					if (viewRegistry.find(commandId) == null) {
-						command = commandService.getCommand(commandId);
-					} else {
-						// we must be able to translate old view commands to the new
-						// parameterized command
-						viewParameter = commandId;
-						command = commandService.getCommand(ShowViewMenu.SHOW_VIEW_ID);
-					}
-				} else {
-					command = null;
-				}
-
-				// Read out the scheme id.
-				String schemeId = readOptional(memento,
-						ATT_KEY_CONFIGURATION_ID);
-				if (schemeId == null) {
-					schemeId = readRequired(memento, ATT_CONFIGURATION,
-							warningsToLog,
-							"Key bindings need a scheme or key configuration"); //$NON-NLS-1$
-					if (schemeId == null) {
-						continue;
-					}
-				}
-
-				// Read out the context id.
-				String contextId = readOptional(memento, ATT_CONTEXT_ID);
-				if (contextId == null) {
-					contextId = readOptional(memento, ATT_SCOPE);
-				}
-				if (LEGACY_DEFAULT_SCOPE.equals(contextId)) {
-					contextId = null;
-				}
-				if (contextId == null) {
-					contextId = IContextIds.CONTEXT_ID_WINDOW;
-				}
-
-				// Read out the key sequence.
-				String keySequenceText = readOptional(memento, ATT_KEY_SEQUENCE);
-				KeySequence keySequence = null;
-				if (keySequenceText == null) {
-					keySequenceText = readRequired(memento, ATT_STRING,
-							warningsToLog,
-							"Key bindings need a key sequence or string"); //$NON-NLS-1$
-					if (keySequenceText == null) {
-						continue;
-					}
-
-					// The key sequence is in the old-style format.
-					keySequence = convert2_1Sequence(parse2_1Sequence(keySequenceText));
-
-				} else {
-					// The key sequence is in the new-style format.
-					try {
-						keySequence = KeySequence.getInstance(keySequenceText);
-					} catch (final ParseException e) {
-						addWarning(warningsToLog, "Could not parse", null, //$NON-NLS-1$
-								commandId, "keySequence", keySequenceText); //$NON-NLS-1$
-						continue;
-					}
-					if (keySequence.isEmpty() || !keySequence.isComplete()) {
-						addWarning(
-								warningsToLog,
-								"Key bindings cannot use an empty or incomplete key sequence", //$NON-NLS-1$
-								null, commandId, "keySequence", keySequence //$NON-NLS-1$
-										.toString());
-						continue;
-					}
-
-				}
-
-				// Read out the locale and platform.
-				final String locale = readOptional(memento, ATT_LOCALE);
-				final String platform = readOptional(memento, ATT_PLATFORM);
-
-				// Read out the parameters
-				final ParameterizedCommand parameterizedCommand;
-				if (command == null) {
-					parameterizedCommand = null;
-				} else if (viewParameter != null) { 
-					HashMap parms = new HashMap();
-					parms.put(ShowViewMenu.VIEW_ID_PARM, viewParameter);
-					parameterizedCommand = ParameterizedCommand.generateCommand(command, parms);
-				} else {
-					parameterizedCommand = readParameters(memento,
-							warningsToLog, command);
-				}
-
-				final Binding binding = new KeyBinding(keySequence,
-						parameterizedCommand, schemeId, contextId, locale,
-						platform, null, Binding.USER);
-				bindingManager.addBinding(binding);
-			}
-		}
-
-		// If there were any warnings, then log them now.
-		logWarnings(warningsToLog,
-				"Warnings while parsing the key bindings from the preference store"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads all of the binding definitions from the commands extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param bindingManager
-	 *            The binding manager to which the bindings should be added;
-	 *            must not be <code>null</code>.
-	 * @param commandService
-	 *            The command service for the workbench; must not be
-	 *            <code>null</code>.
-	 */
-	private static final void readBindingsFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final BindingManager bindingManager,
-			final ICommandService commandService) {
-		final Collection bindings = new ArrayList(configurationElementCount);
-		final List warningsToLog = new ArrayList(1);
-
-		IViewRegistry viewRegistry = PlatformUI.getWorkbench().getViewRegistry();
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			/*
-			 * Read out the command id. Doing this before determining if the key
-			 * binding is actually valid is a bit wasteful. However, it is
-			 * helpful to have the command identifier when logging syntax
-			 * errors.
-			 */
-			String commandId = configurationElement
-					.getAttribute(ATT_COMMAND_ID);
-			if ((commandId == null) || (commandId.length() == 0)) {
-				commandId = configurationElement.getAttribute(ATT_COMMAND);
-			}
-			if ((commandId != null) && (commandId.length() == 0)) {
-				commandId = null;
-			}
-			String viewParameter = null;
-			final Command command;
-			if (commandId != null) {
-				if (viewRegistry.find(commandId) == null) {
-					command = commandService.getCommand(commandId);
-					if (!command.isDefined()) {
-						// Reference to an undefined command. This is invalid.
-						addWarning(warningsToLog,
-								"Cannot bind to an undefined command", //$NON-NLS-1$
-								configurationElement, commandId);
-						continue;
-					}
-				} else {
-					// we must be able to translate old view commands to the new
-					// parameterized command
-					viewParameter = commandId;
-					command = commandService.getCommand(ShowViewMenu.SHOW_VIEW_ID);
-					if (DEBUG) {
-						Tracing.printTrace("BINDINGS", "Command '" //$NON-NLS-1$ //$NON-NLS-2$
-								+ commandId + "\' should be migrated to "  //$NON-NLS-1$
-								+ ShowViewMenu.SHOW_VIEW_ID);
-					}
-					if (!command.isDefined()) {
-						// Reference to an undefined command. This is invalid.
-						addWarning(warningsToLog,
-								"Cannot bind to an undefined command", //$NON-NLS-1$
-								configurationElement, commandId);
-						continue;
-					}
-				}
-			} else {
-				command = null;
-			}
-
-			// Read out the scheme id.
-			String schemeId = configurationElement.getAttribute(ATT_SCHEME_ID);
-			if ((schemeId == null) || (schemeId.length() == 0)) {
-				schemeId = configurationElement
-						.getAttribute(ATT_KEY_CONFIGURATION_ID);
-				if ((schemeId == null) || (schemeId.length() == 0)) {
-					schemeId = configurationElement
-							.getAttribute(ATT_CONFIGURATION);
-					if ((schemeId == null) || (schemeId.length() == 0)) {
-						// The scheme id should never be null. This is invalid.
-						addWarning(warningsToLog, "Key bindings need a scheme", //$NON-NLS-1$
-								configurationElement, commandId);
-						continue;
-					}
-				}
-			}
-
-			// Read out the context id.
-			String contextId = configurationElement
-					.getAttribute(ATT_CONTEXT_ID);
-			if (LEGACY_DEFAULT_SCOPE.equals(contextId)) {
-				contextId = null;
-			} else if ((contextId == null) || (contextId.length() == 0)) {
-				contextId = configurationElement.getAttribute(ATT_SCOPE);
-				if (LEGACY_DEFAULT_SCOPE.equals(contextId)) {
-					contextId = null;
-				}
-			}
-			if ((contextId == null) || (contextId.length() == 0)) {
-				contextId = IContextIds.CONTEXT_ID_WINDOW;
-			}
-
-			// Read out the key sequence.
-			KeySequence keySequence = null;
-			String keySequenceText = configurationElement
-					.getAttribute(ATT_SEQUENCE);
-			if ((keySequenceText == null) || (keySequenceText.length() == 0)) {
-				keySequenceText = configurationElement
-						.getAttribute(ATT_KEY_SEQUENCE);
-			}
-			if ((keySequenceText == null) || (keySequenceText.length() == 0)) {
-				keySequenceText = configurationElement.getAttribute(ATT_STRING);
-				if ((keySequenceText == null)
-						|| (keySequenceText.length() == 0)) {
-					// The key sequence should never be null. This is pointless
-					addWarning(
-							warningsToLog,
-							"Defining a key binding with no key sequence has no effect", //$NON-NLS-1$
-							configurationElement, commandId);
-					continue;
-				}
-
-				// The key sequence is in the old-style format.
-				try {
-					keySequence = convert2_1Sequence(parse2_1Sequence(keySequenceText));
-				} catch (final IllegalArgumentException e) {
-					addWarning(warningsToLog, "Could not parse key sequence", //$NON-NLS-1$
-							configurationElement, commandId, "keySequence", //$NON-NLS-1$
-							keySequenceText);
-					continue;
-				}
-
-			} else {
-				// The key sequence is in the new-style format.
-				try {
-					keySequence = KeySequence.getInstance(keySequenceText);
-				} catch (final ParseException e) {
-					addWarning(warningsToLog, "Could not parse key sequence", //$NON-NLS-1$
-							configurationElement, commandId, "keySequence", //$NON-NLS-1$
-							keySequenceText);
-					continue;
-				}
-				if (keySequence.isEmpty() || !keySequence.isComplete()) {
-					addWarning(
-							warningsToLog,
-							"Key bindings should not have an empty or incomplete key sequence", //$NON-NLS-1$
-							configurationElement, commandId, "keySequence", //$NON-NLS-1$
-							keySequence.toString());
-					continue;
-				}
-
-			}
-
-			// Read out the locale and platform.
-			String locale = configurationElement.getAttribute(ATT_LOCALE);
-			if ((locale != null) && (locale.length() == 0)) {
-				locale = null;
-			}
-			String platform = configurationElement.getAttribute(ATT_PLATFORM);
-			if ((platform != null) && (platform.length() == 0)) {
-				platform = null;
-			}
-
-			// Read out the parameters, if any.
-			final ParameterizedCommand parameterizedCommand;
-			if (command == null) {
-				parameterizedCommand = null;
-			} else if (viewParameter != null) { 
-				HashMap parms = new HashMap();
-				parms.put(ShowViewMenu.VIEW_ID_PARM, viewParameter);
-				parameterizedCommand = ParameterizedCommand.generateCommand(command, parms);
-			} else {
-				parameterizedCommand = readParameters(configurationElement,
-						warningsToLog, command);
-			}
-
-			final Binding binding = new KeyBinding(keySequence,
-					parameterizedCommand, schemeId, contextId, locale,
-					platform, null, Binding.SYSTEM);
-			bindings.add(binding);
-		}
-
-		final Binding[] bindingArray = (Binding[]) bindings
-				.toArray(new Binding[bindings.size()]);
-		bindingManager.setBindings(bindingArray);
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the key bindings from the 'org.eclipse.ui.commands' extension point"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads all of the scheme definitions from the registry.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the commands extension point;
-	 *            must not be <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 * @param bindingManager
-	 *            The binding manager to which the schemes should be added; must
-	 *            not be <code>null</code>.
-	 */
-	private static final void readSchemesFromRegistry(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount,
-			final BindingManager bindingManager) {
-		// Undefine all the previous handle objects.
-		final HandleObject[] handleObjects = bindingManager.getDefinedSchemes();
-		if (handleObjects != null) {
-			for (int i = 0; i < handleObjects.length; i++) {
-				handleObjects[i].undefine();
-			}
-		}
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement configurationElement = configurationElements[i];
-
-			// Read out the attributes.
-			final String id = readRequired(configurationElement, ATT_ID,
-					warningsToLog, "Schemes need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-			final String name = readRequired(configurationElement, ATT_NAME,
-					warningsToLog, "A scheme needs a name", id); //$NON-NLS-1$
-			if (name == null) {
-				continue;
-			}
-			final String description = readOptional(configurationElement,
-					ATT_DESCRIPTION);
-
-			String parentId = configurationElement.getAttribute(ATT_PARENT_ID);
-			if ((parentId != null) && (parentId.length() == 0)) {
-				parentId = configurationElement.getAttribute(ATT_PARENT);
-				if ((parentId != null) && (parentId.length() == 0)) {
-					parentId = null;
-				}
-			}
-
-			// Define the scheme.
-			final Scheme scheme = bindingManager.getScheme(id);
-			scheme.define(name, description, parentId);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the key bindings from the 'org.eclipse.ui.bindings', 'org.eclipse.ui.acceleratorConfigurations' and 'org.eclipse.ui.commands' extension point"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Writes the given active scheme and bindings to the preference store. Only
-	 * bindings that are of the <code>Binding.USER</code> type will be
-	 * written; the others will be ignored.
-	 * 
-	 * @param activeScheme
-	 *            The scheme which should be persisted; may be <code>null</code>.
-	 * @param bindings
-	 *            The bindings which should be persisted; may be
-	 *            <code>null</code>
-	 * @throws IOException
-	 *             If something happens while trying to write to the workbench
-	 *             preference store.
-	 */
-	static final void write(final Scheme activeScheme, final Binding[] bindings)
-			throws IOException {
-		// Print out debugging information, if requested.
-		if (DEBUG) {
-			Tracing.printTrace("BINDINGS", "Persisting active scheme '" //$NON-NLS-1$ //$NON-NLS-2$
-					+ activeScheme.getId() + '\'');
-			Tracing.printTrace("BINDINGS", "Persisting bindings"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		// Write the simple preference key to the UI preference store.
-		writeActiveScheme(activeScheme);
-
-		// Build the XML block for writing the bindings and active scheme.
-		final XMLMemento xmlMemento = XMLMemento
-				.createWriteRoot(EXTENSION_COMMANDS);
-		if (activeScheme != null) {
-			writeActiveSchemeToPreferences(xmlMemento, activeScheme);
-		}
-		if (bindings != null) {
-			final int bindingsLength = bindings.length;
-			for (int i = 0; i < bindingsLength; i++) {
-				final Binding binding = bindings[i];
-				if (binding.getType() == Binding.USER) {
-					writeBindingToPreferences(xmlMemento, binding);
-				}
-			}
-		}
-
-		// Write the XML block to the workbench preference store.
-		final IPreferenceStore preferenceStore = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		final Writer writer = new StringWriter();
-		try {
-			xmlMemento.save(writer);
-			preferenceStore.setValue(EXTENSION_COMMANDS, writer.toString());
-		} finally {
-			writer.close();
-		}
-	}
-
-	/**
-	 * Writes the active scheme to its own preference key. This key is used by
-	 * RCP applications as part of their plug-in customization.
-	 * 
-	 * @param scheme
-	 *            The scheme to write to the preference store. If the scheme is
-	 *            <code>null</code>, then it is removed.
-	 */
-	private static final void writeActiveScheme(final Scheme scheme) {
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		final String schemeId = (scheme == null) ? null : scheme.getId();
-		final String defaultSchemeId = store
-				.getDefaultString(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID);
-		if ((defaultSchemeId == null) ? (scheme != null) : (!defaultSchemeId
-				.equals(schemeId))) {
-			store.setValue(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID,
-					scheme.getId());
-		} else {
-			store
-					.setToDefault(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID);
-		}
-	}
-
-	/**
-	 * Writes the active scheme to the memento. If the scheme is
-	 * <code>null</code>, then all schemes in the memento are removed.
-	 * 
-	 * @param memento
-	 *            The memento to which the scheme should be written; must not be
-	 *            <code>null</code>.
-	 * @param scheme
-	 *            The scheme that should be written; must not be
-	 *            <code>null</code>.
-	 */
-	private static final void writeActiveSchemeToPreferences(
-			final IMemento memento, final Scheme scheme) {
-		// Add this active scheme, if it is not the default.
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		final String schemeId = scheme.getId();
-		final String defaultSchemeId = store
-				.getDefaultString(IWorkbenchPreferenceConstants.KEY_CONFIGURATION_ID);
-		if ((defaultSchemeId == null) ? (schemeId != null) : (!defaultSchemeId
-				.equals(schemeId))) {
-			final IMemento child = memento
-					.createChild(TAG_ACTIVE_KEY_CONFIGURATION);
-			child.putString(ATT_KEY_CONFIGURATION_ID, schemeId);
-		}
-	}
-
-	/**
-	 * Writes the binding to the memento. This creates a new child element on
-	 * the memento, and places the properties of the binding as its attributes.
-	 * 
-	 * @param parent
-	 *            The parent memento for the binding element; must not be
-	 *            <code>null</code>.
-	 * @param binding
-	 *            The binding to write; must not be <code>null</code>.
-	 */
-	private static final void writeBindingToPreferences(final IMemento parent,
-			final Binding binding) {
-		final IMemento element = parent.createChild(TAG_KEY_BINDING);
-		element.putString(ATT_CONTEXT_ID, binding.getContextId());
-		final ParameterizedCommand parameterizedCommand = binding
-				.getParameterizedCommand();
-		final String commandId = (parameterizedCommand == null) ? null
-				: parameterizedCommand.getId();
-		element.putString(ATT_COMMAND_ID, commandId);
-		element.putString(ATT_KEY_CONFIGURATION_ID, binding.getSchemeId());
-		element.putString(ATT_KEY_SEQUENCE, binding.getTriggerSequence()
-				.toString());
-		element.putString(ATT_LOCALE, binding.getLocale());
-		element.putString(ATT_PLATFORM, binding.getPlatform());
-		if (parameterizedCommand != null) {
-			final Map parameterizations = parameterizedCommand
-					.getParameterMap();
-			final Iterator parameterizationItr = parameterizations.entrySet()
-					.iterator();
-			while (parameterizationItr.hasNext()) {
-				final Map.Entry entry = (Map.Entry) parameterizationItr.next();
-				final String id = (String) entry.getKey();
-				final String value = (String) entry.getValue();
-				final IMemento parameterElement = element
-						.createChild(TAG_PARAMETER);
-				parameterElement.putString(ATT_ID, id);
-				parameterElement.putString(ATT_VALUE, value);
-			}
-		}
-	}
-
-	/**
-	 * The binding manager which should be populated with the values from the
-	 * registry and preference store; must not be <code>null</code>.
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The command service for the workbench; must not be <code>null</code>.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * Constructs a new instance of <code>BindingPersistence</code>.
-	 * 
-	 * @param bindingManager
-	 *            The binding manager which should be populated with the values
-	 *            from the registry and preference store; must not be
-	 *            <code>null</code>.
-	 * @param commandService
-	 *            The command service for the workbench; must not be
-	 *            <code>null</code>.
-	 */
-	BindingPersistence(final BindingManager bindingManager,
-			final ICommandService commandService) {
-		this.bindingManager = bindingManager;
-		this.commandService = commandService;
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		return false;
-	}
-
-	public boolean bindingsNeedUpdating(final IRegistryChangeEvent event) {
-		final IExtensionDelta[] acceleratorConfigurationDeltas = event
-				.getExtensionDeltas(
-						PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_ACCELERATOR_CONFIGURATIONS);
-		if (acceleratorConfigurationDeltas.length == 0) {
-			final IExtensionDelta[] bindingDeltas = event.getExtensionDeltas(
-					PlatformUI.PLUGIN_ID,
-					IWorkbenchRegistryConstants.PL_BINDINGS);
-			if (bindingDeltas.length == 0) {
-				final IExtensionDelta[] commandDeltas = event
-						.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-								IWorkbenchRegistryConstants.PL_COMMANDS);
-				if (commandDeltas.length == 0) {
-					final IExtensionDelta[] acceleratorScopeDeltas = event
-							.getExtensionDeltas(
-									PlatformUI.PLUGIN_ID,
-									IWorkbenchRegistryConstants.PL_ACCELERATOR_SCOPES);
-					if (acceleratorScopeDeltas.length == 0) {
-						final IExtensionDelta[] contextDeltas = event
-								.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-										IWorkbenchRegistryConstants.PL_CONTEXTS);
-						if (contextDeltas.length == 0) {
-							final IExtensionDelta[] actionDefinitionDeltas = event
-									.getExtensionDeltas(
-											PlatformUI.PLUGIN_ID,
-											IWorkbenchRegistryConstants.PL_ACTION_DEFINITIONS);
-							if (actionDefinitionDeltas.length == 0) {
-								return false;
-							}
-						}
-					}
-				}
-			}
-		}
-		
-		return true;
-	}
-	
-	protected final boolean isChangeImportant(final PropertyChangeEvent event) {
-		return EXTENSION_COMMANDS.equals(event.getProperty());
-	}
-
-	/**
-	 * Reads all of the binding information from the registry and from the
-	 * preference store.
-	 */
-	protected final void read() {
-		super.read();
-		reRead();
-	}
-	
-	public void reRead() {
-		// Create the extension registry mementos.
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		int activeSchemeElementCount = 0;
-		int bindingDefinitionCount = 0;
-		int schemeDefinitionCount = 0;
-		final IConfigurationElement[][] indexedConfigurationElements = new IConfigurationElement[3][];
-
-		// Sort the bindings extension point based on element name.
-		final IConfigurationElement[] bindingsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_BINDINGS);
-		for (int i = 0; i < bindingsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = bindingsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_KEY.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_BINDING_DEFINITIONS, bindingDefinitionCount++);
-			} else
-			// Check to see if it is a scheme definition.
-			if (TAG_SCHEME.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements, INDEX_SCHEME_DEFINITIONS,
-						schemeDefinitionCount++);
-			}
-
-		}
-
-		// Sort the commands extension point based on element name.
-		final IConfigurationElement[] commandsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_COMMANDS);
-		for (int i = 0; i < commandsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = commandsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if it is a binding definition.
-			if (TAG_KEY_BINDING.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements,
-						INDEX_BINDING_DEFINITIONS, bindingDefinitionCount++);
-
-				// Check if it is a scheme defintion.
-			} else if (TAG_KEY_CONFIGURATION.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements, INDEX_SCHEME_DEFINITIONS,
-						schemeDefinitionCount++);
-
-				// Check if it is an active scheme identifier.
-			} else if (TAG_ACTIVE_KEY_CONFIGURATION.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements, INDEX_ACTIVE_SCHEME,
-						activeSchemeElementCount++);
-			}
-		}
-
-		/*
-		 * Sort the accelerator configuration extension point into the scheme
-		 * definitions.
-		 */
-		final IConfigurationElement[] acceleratorConfigurationsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_ACCELERATOR_CONFIGURATIONS);
-		for (int i = 0; i < acceleratorConfigurationsExtensionPoint.length; i++) {
-			final IConfigurationElement configurationElement = acceleratorConfigurationsExtensionPoint[i];
-			final String name = configurationElement.getName();
-
-			// Check if the name matches the accelerator configuration element
-			if (TAG_ACCELERATOR_CONFIGURATION.equals(name)) {
-				addElementToIndexedArray(configurationElement,
-						indexedConfigurationElements, INDEX_SCHEME_DEFINITIONS,
-						schemeDefinitionCount++);
-			}
-		}
-
-		// Create the preference memento.
-		final IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		final String preferenceString = store.getString(EXTENSION_COMMANDS);
-		IMemento preferenceMemento = null;
-		if ((preferenceString != null) && (preferenceString.length() > 0)) {
-			final Reader reader = new StringReader(preferenceString);
-			try {
-				preferenceMemento = XMLMemento.createReadRoot(reader);
-			} catch (final WorkbenchException e) {
-				// Could not initialize the preference memento.
-			}
-		}
-
-		// Read the scheme definitions.
-		readSchemesFromRegistry(
-				indexedConfigurationElements[INDEX_SCHEME_DEFINITIONS],
-				schemeDefinitionCount, bindingManager);
-		readActiveScheme(indexedConfigurationElements[INDEX_ACTIVE_SCHEME],
-				activeSchemeElementCount, preferenceMemento, bindingManager);
-		readBindingsFromRegistry(
-				indexedConfigurationElements[INDEX_BINDING_DEFINITIONS],
-				bindingDefinitionCount, bindingManager, commandService);
-		readBindingsFromPreferences(preferenceMemento, bindingManager,
-				commandService);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingService.java
deleted file mode 100644
index a3e9574..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/BindingService.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.SWTKeySupport;
-import org.eclipse.jface.bindings.keys.formatting.KeyFormatterFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * <p>
- * Provides services related to the binding architecture (e.g., keyboard
- * shortcuts) within the workbench. This service can be used to access the
- * currently active bindings, as well as the current state of the binding
- * architecture.
- * </p>
- * 
- * @since 3.1
- */
-public final class BindingService implements IBindingService {
-
-	/**
-	 * The binding manager that supports this service. This value is never
-	 * <code>null</code>.
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The persistence class responsible for bindings.
-	 */
-	private final BindingPersistence bindingPersistence;
-
-	/**
-	 * The key binding support for the contexts. In the workbench, key bindings
-	 * are intimately tied to the context mechanism.
-	 */
-	private WorkbenchKeyboard keyboard;
-
-	/**
-	 * Constructs a new instance of <code>BindingService</code> using a JFace
-	 * binding manager.
-	 * 
-	 * @param bindingManager
-	 *            The bind ing manager to use; must not be <code>null</code>.
-	 * @param commandService
-	 *            The command service providing support for this service; must
-	 *            not be <code>null</code>;
-	 * @param workbench
-	 *            The workbench on which this context service will act; must not
-	 *            be <code>null</code>.
-	 */
-	public BindingService(final BindingManager bindingManager,
-			final ICommandService commandService, final Workbench workbench) {
-		if (bindingManager == null) {
-			throw new NullPointerException(
-					"Cannot create a binding service with a null manager"); //$NON-NLS-1$
-		}
-		if (commandService == null) {
-			throw new NullPointerException(
-					"Cannot create a binding service with a null command service"); //$NON-NLS-1$
-		}
-		this.bindingManager = bindingManager;
-		this.bindingPersistence = new BindingPersistence(bindingManager,
-				commandService);
-
-		// Hook up the key binding support.
-		keyboard = new WorkbenchKeyboard(workbench);
-		final Display display = workbench.getDisplay();
-		final Listener listener = keyboard.getKeyDownFilter();
-		display.addFilter(SWT.KeyDown, listener);
-		display.addFilter(SWT.Traverse, listener);
-
-		// Initialize the key formatter.
-		KeyFormatterFactory.setDefault(SWTKeySupport
-				.getKeyFormatterForPlatform());
-	}
-
-	/**
-	 * TODO Promote this method to API.
-	 * <p>
-	 * Adds a single new binding to the existing array of bindings. If the array
-	 * is currently <code>null</code>, then a new array is created and this
-	 * binding is added to it. This method does not detect duplicates.
-	 * </p>
-	 * <p>
-	 * This method completes in amortized <code>O(1)</code>.
-	 * </p>
-	 * 
-	 * @param binding
-	 *            The binding to be added; must not be <code>null</code>.
-	 */
-	public final void addBinding(final Binding binding) {
-		bindingManager.addBinding(binding);
-	}
-	
-	public final void dispose() {
-		bindingPersistence.dispose();
-	}
-
-	public final TriggerSequence[] getActiveBindingsFor(
-			final ParameterizedCommand parameterizedCommand) {
-		return bindingManager.getActiveBindingsFor(parameterizedCommand);
-	}
-
-	public final TriggerSequence[] getActiveBindingsFor(final String commandId) {
-		return bindingManager.getActiveBindingsFor(commandId);
-	}
-
-	public final Scheme getActiveScheme() {
-		return bindingManager.getActiveScheme();
-	}
-
-	public final TriggerSequence getBestActiveBindingFor(final String commandId) {
-		return bindingManager.getBestActiveBindingFor(commandId);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.keys.IBindingService#getBestActiveBindingFor(org.eclipse.core.commands.ParameterizedCommand)
-	 */
-	public TriggerSequence getBestActiveBindingFor(ParameterizedCommand command) {
-		return bindingManager.getBestActiveBindingFor(command);
-	}
-
-	public final String getBestActiveBindingFormattedFor(final String commandId) {
-		return bindingManager.getBestActiveBindingFormattedFor(commandId);
-	}
-
-	public final Binding[] getBindings() {
-		return bindingManager.getBindings();
-	}
-
-	public final TriggerSequence getBuffer() {
-		return keyboard.getBuffer();
-	}
-
-	public final String getDefaultSchemeId() {
-		return BindingPersistence.getDefaultSchemeId();
-	}
-
-	public final Scheme[] getDefinedSchemes() {
-		return bindingManager.getDefinedSchemes();
-	}
-
-	/**
-	 * Returns the key binding architecture for the workbench. This method is
-	 * internal, and is only intended for testing. This must not be used by
-	 * clients.
-	 * 
-	 * @return The key binding support; never <code>null</code>.
-	 */
-	public final WorkbenchKeyboard getKeyboard() {
-		return keyboard;
-	}
-
-	public final String getLocale() {
-		return bindingManager.getLocale();
-	}
-
-	public final Map getPartialMatches(final TriggerSequence trigger) {
-		return bindingManager.getPartialMatches(trigger);
-	}
-
-	public final Binding getPerfectMatch(final TriggerSequence trigger) {
-		return bindingManager.getPerfectMatch(trigger);
-	}
-
-	public final String getPlatform() {
-		return bindingManager.getPlatform();
-	}
-
-	public final Scheme getScheme(final String schemeId) {
-		return bindingManager.getScheme(schemeId);
-	}
-
-	public final boolean isKeyFilterEnabled() {
-		return keyboard.getKeyDownFilter().isEnabled();
-	}
-
-	public final boolean isPartialMatch(final TriggerSequence sequence) {
-		return bindingManager.isPartialMatch(sequence);
-	}
-
-	public final boolean isPerfectMatch(final TriggerSequence sequence) {
-		return bindingManager.isPerfectMatch(sequence);
-	}
-
-	public final void openKeyAssistDialog() {
-		keyboard.openMultiKeyAssistShell();
-	}
-
-	public final void readRegistryAndPreferences(
-			final ICommandService commandService) {
-		bindingPersistence.read();
-	}
-
-	/**
-	 * Remove the specific binding by identity. Does nothing if the binding is
-	 * not in the manager.
-	 * 
-	 * @param binding
-	 *            The binding to be removed; must not be <code>null</code>.
-	 */
-	public final void removeBinding(final Binding binding) {
-		bindingManager.removeBinding(binding);
-	}
-
-	public final void savePreferences(final Scheme activeScheme,
-			final Binding[] bindings) throws IOException {
-		BindingPersistence.write(activeScheme, bindings);
-		try {
-			bindingManager.setActiveScheme(activeScheme);
-		} catch (final NotDefinedException e) {
-			WorkbenchPlugin.log("The active scheme is not currently defined.",  //$NON-NLS-1$
-					WorkbenchPlugin.getStatus(e));
-		}
-		bindingManager.setBindings(bindings);
-	}
-
-	public final void setKeyFilterEnabled(final boolean enabled) {
-		keyboard.getKeyDownFilter().setEnabled(enabled);
-	}
-
-	/**
-	 * @return Returns the bindingPersistence.
-	 */
-	public BindingPersistence getBindingPersistence() {
-		return bindingPersistence;
-	}
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CancelOnModifyListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CancelOnModifyListener.java
deleted file mode 100644
index d00a83e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CancelOnModifyListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A listener that removes the out-of-order listener if a modification occurs
- * before reaching it. This is a workaround for Bug 53497.
- * 
- * @since 3.0
- */
-final class CancelOnModifyListener implements Listener {
-
-    /**
-     * The listener to remove when this listener catches any event. This value
-     * should not be <code>null</code>.
-     */
-    private final Listener chainedListener;
-
-    /**
-     * Constructs a new instance of <code>CancelOnModifyListener</code>
-     * 
-     * @param listener
-     *            The listener which should be removed in the event of a
-     *            modification event arriving; should not be <code>null</code>.
-     */
-    CancelOnModifyListener(Listener listener) {
-        chainedListener = listener;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-     */
-    public void handleEvent(Event event) {
-        Widget widget = event.widget;
-        widget.removeListener(SWT.Modify, this);
-        widget.removeListener(SWT.KeyDown, chainedListener);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CategoryPatternFilter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CategoryPatternFilter.java
deleted file mode 100644
index 677c641..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CategoryPatternFilter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.internal.keys.model.BindingElement;
-
-class CategoryPatternFilter extends PatternFilter {
-	private boolean filterCategories;
-	final Category uncategorized;
-
-	public CategoryPatternFilter(boolean filterCategories, Category c) {
-		uncategorized = c;
-		filterCategories(filterCategories);
-	}
-
-	public void filterCategories(boolean b) {
-		filterCategories = b;
-		if (filterCategories) {
-			setPattern("org.eclipse.ui.keys.optimization.false"); //$NON-NLS-1$
-		} else {
-			setPattern("org.eclipse.ui.keys.optimization.true"); //$NON-NLS-1$
-		}
-	}
-	
-	public boolean isFilteringCategories() {
-		return filterCategories;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.dialogs.PatternFilter#isLeafMatch(org.eclipse.jface.viewers.Viewer,
-	 *      java.lang.Object)
-	 */
-	protected boolean isLeafMatch(Viewer viewer, Object element) {
-		if (filterCategories) {
-			final ParameterizedCommand cmd = getCommand(element);
-			try {
-				if (cmd != null
-						&& cmd.getCommand().getCategory() == uncategorized) {
-					return false;
-				}
-			} catch (NotDefinedException e) {
-				return false;
-			}
-		}
-		return super.isLeafMatch(viewer, element);
-	}
-
-	private ParameterizedCommand getCommand(Object element) {
-		if (element instanceof BindingElement) {
-			Object modelObject = ((BindingElement) element).getModelObject();
-			if (modelObject instanceof Binding) {
-				return ((Binding) modelObject).getParameterizedCommand();
-			} else if (modelObject instanceof ParameterizedCommand) {
-				return (ParameterizedCommand) modelObject;
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CompactKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CompactKeyFormatter.java
deleted file mode 100644
index ff6c55c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/CompactKeyFormatter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.KeyStroke;
-import org.eclipse.ui.keys.ModifierKey;
-import org.eclipse.ui.keys.NaturalKey;
-
-/**
- * A key formatter providing a special compact format for displaying key
- * bindings.
- * 
- * @since 3.0
- */
-public class CompactKeyFormatter extends NativeKeyFormatter {
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.KeyFormatter#format(org.eclipse.ui.keys.KeySequence)
-     */
-    public String format(KeySequence keySequence) {
-        StringBuffer stringBuffer = new StringBuffer();
-
-        List keyStrokes = keySequence.getKeyStrokes();
-        KeyStroke[] keyStrokeArray = (KeyStroke[]) keyStrokes
-                .toArray(new KeyStroke[keyStrokes.size()]);
-        Set previousModifierKeys = Collections.EMPTY_SET;
-        List naturalKeys = new ArrayList();
-        for (int i = 0; i < keyStrokeArray.length; i++) {
-            KeyStroke keyStroke = keyStrokeArray[i];
-            Set currentModifierKeys = keyStroke.getModifierKeys();
-
-            if (!previousModifierKeys.equals(currentModifierKeys)) {
-                // End the old sequence fragment.
-                if (i > 0) {
-                    stringBuffer.append(formatKeyStrokes(previousModifierKeys,
-                            naturalKeys));
-                    stringBuffer.append(getKeyStrokeDelimiter());
-                }
-
-                // Start a new one.
-                previousModifierKeys = currentModifierKeys;
-                naturalKeys.clear();
-
-            }
-
-            naturalKeys.add(keyStroke.getNaturalKey());
-        }
-
-        stringBuffer
-                .append(formatKeyStrokes(previousModifierKeys, naturalKeys));
-
-        return stringBuffer.toString();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.KeyFormatter#formatKeyStroke(org.eclipse.ui.keys.KeyStroke)
-     */
-    public String formatKeyStrokes(Set modifierKeys, List naturalKeys) {
-        StringBuffer stringBuffer = new StringBuffer();
-        String keyDelimiter = getKeyDelimiter();
-
-        // Format the modifier keys, in sorted order.
-        SortedSet sortedModifierKeys = new TreeSet(getModifierKeyComparator());
-        sortedModifierKeys.addAll(modifierKeys);
-        Iterator sortedModifierKeyItr = sortedModifierKeys.iterator();
-        while (sortedModifierKeyItr.hasNext()) {
-            stringBuffer.append(format((ModifierKey) sortedModifierKeyItr
-                    .next()));
-            stringBuffer.append(keyDelimiter);
-        }
-
-        // Format the natural key, if any.
-        Iterator naturalKeyItr = naturalKeys.iterator();
-        while (naturalKeyItr.hasNext()) {
-            Object naturalKey = naturalKeyItr.next();
-            if (naturalKey instanceof NaturalKey) {
-                stringBuffer.append(format((NaturalKey) naturalKey));
-                if (naturalKeyItr.hasNext()) {
-                    stringBuffer.append(keyDelimiter);
-                }
-            }
-        }
-
-        return stringBuffer.toString();
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java
deleted file mode 100644
index 684e646..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-import java.util.ResourceBundle;
-
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.Key;
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.KeyStroke;
-import org.eclipse.ui.keys.ModifierKey;
-
-/**
- * A key formatter providing the Emacs-style accelerators using single letters
- * to represent the modifier keys.
- * 
- * @since 3.0
- */
-public class EmacsKeyFormatter extends AbstractKeyFormatter {
-
-    /**
-     * A comparator that guarantees that modifier keys will be sorted the same
-     * across different platforms.
-     */
-    private static final Comparator EMACS_MODIFIER_KEY_COMPARATOR = new AlphabeticModifierKeyComparator();
-
-    /**
-     * The resource bundle used by <code>format()</code> to translate formal
-     * string representations by locale.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(EmacsKeyFormatter.class.getName());
-
-    /**
-     * Formats an individual key into a human readable format. This converts
-     * the key into a format similar to Xemacs.
-     * 
-     * @param key
-     *            The key to format; must not be <code>null</code>.
-     * @return The key formatted as a string; should not be <code>null</code>.
-     */
-    public String format(Key key) {
-        if (key instanceof ModifierKey) {
-            String formattedName = Util.translateString(RESOURCE_BUNDLE, key
-                    .toString(), null, false, false);
-            if (formattedName != null) {
-                return formattedName;
-            }
-        }
-
-        return super.format(key).toLowerCase();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getKeyDelimiter()
-     */
-    protected String getKeyDelimiter() {
-        return Util.translateString(RESOURCE_BUNDLE, KEY_DELIMITER_KEY,
-                KeyStroke.KEY_DELIMITER, false, false);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getKeyStrokeDelimiter()
-     */
-    protected String getKeyStrokeDelimiter() {
-        return Util.translateString(RESOURCE_BUNDLE, KEY_STROKE_DELIMITER_KEY,
-                KeySequence.KEY_STROKE_DELIMITER, false, false);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getModifierKeyComparator()
-     */
-    protected Comparator getModifierKeyComparator() {
-        return EMACS_MODIFIER_KEY_COMPARATOR;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties
deleted file mode 100644
index 5d6e98f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/EmacsKeyFormatter.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# Modifier keys
-ALT=M
-COMMAND=D
-CTRL=C
-SHIFT=S
-
-# Delimiters
-KEY_DELIMITER=-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/FormalKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/FormalKeyFormatter.java
deleted file mode 100644
index 1c7dc75..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/FormalKeyFormatter.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-
-import org.eclipse.ui.keys.Key;
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.KeyStroke;
-
-/**
- * Formats the keys in the internal key sequence grammar. This is used for
- * persistence, and is not really intended for display to the user.
- * 
- * @since 3.0
- */
-public class FormalKeyFormatter extends AbstractKeyFormatter {
-
-    /**
-     * A comparator that guarantees that modifier keys will be sorted the same
-     * across different platforms.
-     */
-    private static final Comparator FORMAL_MODIFIER_KEY_COMPARATOR = new AlphabeticModifierKeyComparator();
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.KeyFormatter#format(org.eclipse.ui.keys.KeySequence)
-     */
-    public String format(Key key) {
-        return key.toString();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getKeyDelimiter()
-     */
-    protected String getKeyDelimiter() {
-        return KeyStroke.KEY_DELIMITER;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getKeyStrokeDelimiter()
-     */
-    protected String getKeyStrokeDelimiter() {
-        return KeySequence.KEY_STROKE_DELIMITER;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getModifierKeyComparator()
-     */
-    protected Comparator getModifierKeyComparator() {
-        return FORMAL_MODIFIER_KEY_COMPARATOR;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties
deleted file mode 100644
index e78770b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/GnomeKeyFormatter.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/ImageFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/ImageFactory.java
deleted file mode 100644
index eba30df..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/ImageFactory.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.ImageSupport;
-
-final class ImageFactory {
-
-	private static ImageRegistry imageRegistry = new ImageRegistry();
-	private static Map map = new HashMap();
-
-	static {
-		put("blank", "$nl$/icons/full/obj16/blank.gif"); //$NON-NLS-1$//$NON-NLS-2$
-		put("change", "$nl$/icons/full/obj16/change_obj.gif"); //$NON-NLS-1$//$NON-NLS-2$
-		
-		/*
-		 * TODO Remove these images from the registry if they are no longer
-		 * needed.
-		 */
-		put("minus", "$nl$/icons/full/obj16/delete_obj.gif"); //$NON-NLS-1$//$NON-NLS-2$
-		put("plus", "$nl$/icons/full/obj16/add_obj.gif"); //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-	static Image getImage(String key) {
-		Image image = imageRegistry.get(key);
-
-		if (image == null) {
-			ImageDescriptor imageDescriptor = getImageDescriptor(key);
-
-			if (imageDescriptor != null) {
-				image = imageDescriptor.createImage(false);
-
-				if (image == null) {
-					WorkbenchPlugin.log(ImageFactory.class +": error creating image for " + key); //$NON-NLS-1$
-				}
-
-				imageRegistry.put(key, image);
-			}
-		}
-
-		return image;
-	}
-
-	static ImageDescriptor getImageDescriptor(String key) {
-		ImageDescriptor imageDescriptor = (ImageDescriptor) map.get(key);
-
-		if (imageDescriptor == null) {
-			WorkbenchPlugin.log(ImageFactory.class +": no image descriptor for " + key); //$NON-NLS-1$
-		}
-
-		return imageDescriptor;
-	}
-
-	private static void put(String key, String value) {
-		map.put(key, ImageSupport.getImageDescriptor(value));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.java
deleted file mode 100644
index f38c4a7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-import java.util.ResourceBundle;
-
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.KeyStroke;
-import org.eclipse.ui.keys.ModifierKey;
-
-public final class KdeKeyFormatter extends AbstractKeyFormatter {
-
-    private final static class KdeModifierKeyComparator extends
-            AbstractModifierKeyComparator {
-
-        protected int rank(ModifierKey modifierKey) {
-            if (ModifierKey.ALT.equals(modifierKey)) {
-                return 0;
-            }
-
-            if (ModifierKey.CTRL.equals(modifierKey)) {
-                return 1;
-            }
-
-            if (ModifierKey.SHIFT.equals(modifierKey)) {
-                return 2;
-            }
-
-            return Integer.MAX_VALUE;
-        }
-    }
-
-    private final static Comparator MODIFIER_KEY_COMPARATOR = new KdeModifierKeyComparator();
-
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(KdeKeyFormatter.class.getName());
-
-    protected String getKeyDelimiter() {
-        return Util.translateString(RESOURCE_BUNDLE, KEY_DELIMITER_KEY,
-                KeyStroke.KEY_DELIMITER, false, false);
-    }
-
-    protected String getKeyStrokeDelimiter() {
-        return Util.translateString(RESOURCE_BUNDLE, KEY_STROKE_DELIMITER_KEY,
-                KeySequence.KEY_STROKE_DELIMITER, false, false);
-    }
-
-    protected Comparator getModifierKeyComparator() {
-        return MODIFIER_KEY_COMPARATOR;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties
deleted file mode 100644
index e78770b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KdeKeyFormatter.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java
deleted file mode 100644
index 143545d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.java
+++ /dev/null
@@ -1,734 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.CommandException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.dialogs.PreferencesUtil;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * <p>
- * A dialog displaying a list of key bindings. The dialog will execute a command
- * if it is selected.
- * </p>
- * <p>
- * The methods on this class are not thread-safe and must be run from the UI
- * thread.
- * </p>
- * 
- * @since 3.1
- */
-final class KeyAssistDialog extends PopupDialog {
-
-	/**
-	 * The data key for the binding stored on an SWT widget. The key is a
-	 * fully-qualified name, but in reverse order. This is so that the equals
-	 * method will detect misses faster.
-	 */
-	private static final String BINDING_KEY = "Binding.bindings.jface.eclipse.org"; //$NON-NLS-1$
-
-	/**
-	 * The value of <code>previousWidth</code> to set if there is no
-	 * remembered width.
-	 */
-	private static final int NO_REMEMBERED_WIDTH = -1;
-
-	/**
-	 * The activity manager for the associated workbench.
-	 */
-	private final IActivityManager activityManager;
-
-	/**
-	 * The binding service for the associated workbench.
-	 */
-	private final IBindingService bindingService;
-
-	/**
-	 * The binding that was selected when the key assist dialog last closed.
-	 * This is only remembered until <code>clearRememberedState()</code> is
-	 * called.
-	 */
-	private Binding binding = null;
-
-	/**
-	 * The ordered list of command identifiers corresponding to the table.
-	 */
-	private final List bindings = new ArrayList();
-
-	/**
-	 * The command service for the associated workbench.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * The table containing of the possible completions. This value is
-	 * <code>null</code> until the dialog is created.
-	 */
-	private Table completionsTable = null;
-
-	/**
-	 * Whether this dialog is currently holding some remembered state.
-	 */
-	private boolean hasRememberedState = false;
-
-	/**
-	 * The key binding state for the associated workbench.
-	 */
-	private final KeyBindingState keyBindingState;
-
-	/**
-	 * The width of the shell when it was previously open. This is only
-	 * remembered until <code>clearRememberedState()</code> is called.
-	 */
-	private int previousWidth = NO_REMEMBERED_WIDTH;
-
-	/**
-	 * The key binding listener for the associated workbench.
-	 */
-	private final WorkbenchKeyboard workbenchKeyboard;
-
-	/**
-	 * A sorted map of conflicts to be used when the dialog pops up.
-	 * 
-	 * @since 3.3
-	 */
-	private SortedMap conflictMatches;
-
-	/**
-	 * Constructs a new instance of <code>KeyAssistDialog</code>. When the
-	 * dialog is first constructed, it contains no widgets. The dialog is first
-	 * created with no parent. If a parent is required, call
-	 * <code>setParentShell()</code>. Also, between uses, it might be
-	 * necessary to call <code>setParentShell()</code> as well.
-	 * 
-	 * @param workbench
-	 *            The workbench in which this dialog is created; must not be
-	 *            <code>null</code>.
-	 * @param associatedKeyboard
-	 *            The key binding listener for the workbench; must not be
-	 *            <code>null</code>.
-	 * @param associatedState
-	 *            The key binding state associated with the workbench; must not
-	 *            be <code>null</code>.
-	 */
-	KeyAssistDialog(final IWorkbench workbench,
-			final WorkbenchKeyboard associatedKeyboard,
-			final KeyBindingState associatedState) {
-		super((Shell) null, PopupDialog.INFOPOPUP_SHELLSTYLE, true, false,
-				false, false, null, null);
-
-		this.activityManager = workbench.getActivitySupport()
-				.getActivityManager();
-		this.bindingService = (IBindingService) workbench
-				.getService(IBindingService.class);
-		this.commandService = (ICommandService) workbench
-				.getService(ICommandService.class);
-		this.keyBindingState = associatedState;
-		this.workbenchKeyboard = associatedKeyboard;
-
-		this.setInfoText(getKeySequenceString());
-	}
-
-	/**
-	 * Clears out the remembered state of the key assist dialog. This includes
-	 * its width, as well as the selected binding.
-	 */
-	final void clearRememberedState() {
-		previousWidth = NO_REMEMBERED_WIDTH;
-		binding = null;
-		hasRememberedState = false;
-	}
-
-	/**
-	 * Closes this shell, but first remembers some state of the dialog. This way
-	 * it will have a response if asked to open the dialog again or if asked to
-	 * open the keys preference page. This does not remember the internal state.
-	 * 
-	 * @return Whether the shell was already closed.
-	 */
-	public final boolean close() {
-		return close(false);
-	}
-
-	/**
-	 * Closes this shell, but first remembers some state of the dialog. This way
-	 * it will have a response if asked to open the dialog again or if asked to
-	 * open the keys preference page.
-	 * 
-	 * @param rememberState
-	 *            Whether the internal state should be remembered.
-	 * @return Whether the shell was already closed.
-	 */
-	public final boolean close(final boolean rememberState) {
-		return close(rememberState, true);
-	}
-
-	/**
-	 * Closes this shell, but first remembers some state of the dialog. This way
-	 * it will have a response if asked to open the dialog again or if asked to
-	 * open the keys preference page.
-	 * 
-	 * @param rememberState
-	 *            Whether the internal state should be remembered.
-	 * @param resetState
-	 *            Whether the state should be reset.
-	 * @return Whether the shell was already closed.
-	 */
-	private final boolean close(final boolean rememberState,
-			final boolean resetState) {
-		final Shell shell = getShell();
-		if (rememberState) {
-			// Remember the previous width.
-			final int widthToRemember;
-			if ((shell != null) && (!shell.isDisposed())) {
-				widthToRemember = getShell().getSize().x;
-			} else {
-				widthToRemember = NO_REMEMBERED_WIDTH;
-			}
-
-			// Remember the selected command name and key sequence.
-			final Binding bindingToRemember;
-			if ((completionsTable != null) && (!completionsTable.isDisposed())) {
-				final int selectedIndex = completionsTable.getSelectionIndex();
-				if (selectedIndex != -1) {
-					final TableItem selectedItem = completionsTable
-							.getItem(selectedIndex);
-					bindingToRemember = (Binding) selectedItem
-							.getData(BINDING_KEY);
-				} else {
-					bindingToRemember = null;
-				}
-			} else {
-				bindingToRemember = null;
-			}
-
-			rememberState(widthToRemember, bindingToRemember);
-			completionsTable = null;
-		}
-
-		if (resetState) {
-			keyBindingState.reset();
-		}
-		return super.close();
-	}
-
-	/**
-	 * Sets the position for the dialog based on the position of the workbench
-	 * window. The dialog is flush with the bottom right corner of the workbench
-	 * window. However, the dialog will not appear outside of the display's
-	 * client area.
-	 * 
-	 * @param size
-	 *            The final size of the dialog; must not be <code>null</code>.
-	 */
-	private final void configureLocation(final Point size) {
-		final Shell shell = getShell();
-
-		final Shell workbenchWindowShell = keyBindingState
-				.getAssociatedWindow().getShell();
-		final int xCoord;
-		final int yCoord;
-		if (workbenchWindowShell != null) {
-			/*
-			 * Position the shell at the bottom right corner of the workbench
-			 * window
-			 */
-			final Rectangle workbenchWindowBounds = workbenchWindowShell
-					.getBounds();
-			xCoord = workbenchWindowBounds.x + workbenchWindowBounds.width
-					- size.x - 10;
-			yCoord = workbenchWindowBounds.y + workbenchWindowBounds.height
-					- size.y - 10;
-
-		} else {
-			xCoord = 0;
-			yCoord = 0;
-
-		}
-		final Rectangle bounds = new Rectangle(xCoord, yCoord, size.x, size.y);
-		shell.setBounds(getConstrainedShellBounds(bounds));
-	}
-
-	/**
-	 * Sets the size for the dialog based on its previous size. The width of the
-	 * dialog is its previous width, if it exists. Otherwise, it is simply the
-	 * packed width of the dialog. The maximum width is 40% of the workbench
-	 * window's width. The dialog's height is the packed height of the dialog to
-	 * a maximum of half the height of the workbench window.
-	 * 
-	 * @return The size of the dialog
-	 */
-	private final Point configureSize() {
-		final Shell shell = getShell();
-
-		// Get the packed size of the shell.
-		shell.pack();
-		final Point size = shell.getSize();
-
-		// Use the previous width if appropriate.
-		if ((previousWidth != NO_REMEMBERED_WIDTH) && (previousWidth > size.x)) {
-			size.x = previousWidth;
-		}
-
-		// Enforce maximum sizing.
-		final Shell workbenchWindowShell = keyBindingState
-				.getAssociatedWindow().getShell();
-		if (workbenchWindowShell != null) {
-			final Point workbenchWindowSize = workbenchWindowShell.getSize();
-			final int maxWidth = workbenchWindowSize.x * 2 / 5;
-			final int maxHeight = workbenchWindowSize.y / 2;
-			if (size.x > maxWidth) {
-				size.x = maxWidth;
-			}
-			if (size.y > maxHeight) {
-				size.y = maxHeight;
-			}
-		}
-
-		// Set the size for the shell.
-		shell.setSize(size);
-		return size;
-	}
-
-	/**
-	 * Returns a string representing the key sequence used to open this dialog.
-	 * 
-	 * @return the string describing the key sequence, or <code>null</code> if
-	 *         it cannot be determined.
-	 */
-	private String getKeySequenceString() {
-		final Command command = commandService
-				.getCommand("org.eclipse.ui.window.showKeyAssist"); //$NON-NLS-1$
-		final TriggerSequence[] keyBindings = bindingService
-				.getActiveBindingsFor(new ParameterizedCommand(command, null));
-		final int keyBindingsCount = keyBindings.length;
-		final KeySequence currentState = keyBindingState.getCurrentSequence();
-		final int prefixSize = currentState.getKeyStrokes().length;
-
-		// Try to find the first possible matching key binding.
-		KeySequence keySequence = null;
-		for (int i = 0; i < keyBindingsCount; i++) {
-			keySequence = (KeySequence) keyBindings[i];
-
-			// Now just double-check to make sure the key is still possible.
-			if (prefixSize > 0) {
-				if (keySequence.startsWith(currentState, false)) {
-					/*
-					 * Okay, so we have a partial match. Replace the key binding
-					 * with the required suffix completion.
-					 */
-					final KeyStroke[] oldKeyStrokes = keySequence
-							.getKeyStrokes();
-					final int newSize = oldKeyStrokes.length - prefixSize;
-					final KeyStroke[] newKeyStrokes = new KeyStroke[newSize];
-					System.arraycopy(oldKeyStrokes, prefixSize, newKeyStrokes,
-							0, newSize);
-					keySequence = KeySequence.getInstance(newKeyStrokes);
-					break;
-				}
-
-				/*
-				 * The prefix doesn't match, so null out the key binding and try
-				 * again.
-				 */
-				keySequence = null;
-				continue;
-
-			}
-
-			// There is no prefix, so just grab the first.
-			break;
-		}
-		if (keySequence == null) {
-			return null; // couldn't find a suitable key binding
-		}
-
-		return NLS.bind(KeyAssistMessages.openPreferencePage, keySequence
-				.format());
-	}
-
-	/**
-	 * Creates the content area for the key assistant. This creates a table and
-	 * places it inside the composite. The composite will contain a list of all
-	 * the key bindings.
-	 * 
-	 * @param parent
-	 *            The parent composite to contain the dialog area; must not be
-	 *            <code>null</code>.
-	 */
-	protected final Control createDialogArea(final Composite parent) {
-		// First, register the shell type with the context support
-		registerShellType();
-
-		// Create a composite for the dialog area.
-		final Composite composite = new Composite(parent, SWT.NONE);
-		final GridLayout compositeLayout = new GridLayout();
-		compositeLayout.marginHeight = 0;
-		compositeLayout.marginWidth = 0;
-		composite.setLayout(compositeLayout);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		composite.setBackground(parent.getBackground());
-
-		// Layout the partial matches.
-		final SortedMap partialMatches;
-		if (conflictMatches != null) {
-			partialMatches = conflictMatches;
-			conflictMatches = null;
-		} else {
-			partialMatches = getPartialMatches();
-		}
-
-		if (partialMatches.isEmpty()) {
-			createEmptyDialogArea(composite);
-		} else {
-			createTableDialogArea(composite, partialMatches);
-		}
-		return composite;
-	}
-
-	/**
-	 * Creates an empty dialog area with a simple message saying there were no
-	 * matches. This is used if no partial matches could be found. This should
-	 * not really ever happen, but might be possible if the commands are
-	 * changing while waiting for this dialog to open.
-	 * 
-	 * @param parent
-	 *            The parent composite for the dialog area; must not be
-	 *            <code>null</code>.
-	 */
-	private final void createEmptyDialogArea(final Composite parent) {
-		final Label noMatchesLabel = new Label(parent, SWT.NULL);
-		noMatchesLabel.setText(KeyAssistMessages.NoMatches_Message);
-		noMatchesLabel.setLayoutData(new GridData(GridData.FILL_BOTH));
-		noMatchesLabel.setBackground(parent.getBackground());
-	}
-
-	/**
-	 * Creates a dialog area with a table of the partial matches for the current
-	 * key binding state. The table will be either the minimum width, or
-	 * <code>previousWidth</code> if it is not
-	 * <code>NO_REMEMBERED_WIDTH</code>.
-	 * 
-	 * @param parent
-	 *            The parent composite for the dialog area; must not be
-	 *            <code>null</code>.
-	 * @param partialMatches
-	 *            The lexicographically sorted map of partial matches for the
-	 *            current state; must not be <code>null</code> or empty.
-	 */
-	private final void createTableDialogArea(final Composite parent,
-			final SortedMap partialMatches) {
-		// Layout the table.
-		completionsTable = new Table(parent, SWT.FULL_SELECTION | SWT.SINGLE);
-		final GridData gridData = new GridData(GridData.FILL_BOTH);
-		completionsTable.setLayoutData(gridData);
-		completionsTable.setBackground(parent.getBackground());
-		completionsTable.setLinesVisible(true);
-
-		// Initialize the columns and rows.
-		bindings.clear();
-		final TableColumn columnCommandName = new TableColumn(completionsTable,
-				SWT.LEFT, 0);
-		final TableColumn columnKeySequence = new TableColumn(completionsTable,
-				SWT.LEFT, 1);
-		final Iterator itemsItr = partialMatches.entrySet().iterator();
-		while (itemsItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) itemsItr.next();
-			final String sequence = (String) entry.getValue();
-			final Binding binding = (Binding) entry.getKey();
-			final ParameterizedCommand command = binding
-					.getParameterizedCommand();
-			try {
-				final String[] text = { command.getName(), sequence };
-				final TableItem item = new TableItem(completionsTable, SWT.NULL);
-				item.setText(text);
-				item.setData(BINDING_KEY, binding);
-				bindings.add(binding);
-			} catch (NotDefinedException e) {
-				// Not much to do, but this shouldn't really happen.
-			}
-		}
-
-		Dialog.applyDialogFont(parent);
-		columnKeySequence.pack();
-		if (previousWidth != NO_REMEMBERED_WIDTH) {
-			columnKeySequence.setWidth(previousWidth);
-		}
-		columnCommandName.pack();
-
-		/*
-		 * If you double-click on the table, it should execute the selected
-		 * command.
-		 */
-		completionsTable.addListener(SWT.DefaultSelection, new Listener() {
-			public final void handleEvent(final Event event) {
-				executeKeyBinding(event);
-			}
-		});
-	}
-
-	/**
-	 * Edits the remembered selection in the preference dialog.
-	 */
-	private final void editKeyBinding() {
-		// Create a preference dialog on the keys preference page.
-		final String keysPageId = "org.eclipse.ui.preferencePages.Keys"; //$NON-NLS-1$
-		final PreferenceDialog dialog = PreferencesUtil
-				.createPreferenceDialogOn(getShell(), keysPageId, null, binding);
-
-		/*
-		 * Forget the remembered state (so we don't get stuck editing
-		 * preferences).
-		 */
-		clearRememberedState();
-
-		// Open the dialog (blocking).
-		dialog.open();
-	}
-
-	/**
-	 * Handles the default selection event on the table of possible completions.
-	 * This attempts to execute the given command.
-	 */
-	private final void executeKeyBinding(final Event trigger) {
-		// Try to execute the corresponding command.
-		final int selectionIndex = completionsTable.getSelectionIndex();
-		if (selectionIndex >= 0) {
-			final Binding binding = (Binding) bindings.get(selectionIndex);
-			try {
-				workbenchKeyboard.executeCommand(binding, trigger);
-			} catch (final CommandException e) {
-				workbenchKeyboard.logException(e, binding
-						.getParameterizedCommand());
-			}
-		}
-	}
-
-	/**
-	 * Gets the list of key bindings that are partial matches to the current key
-	 * binding state.
-	 * 
-	 * @return A sorted map of key sequences (KeySequence) to command identifier
-	 *         (String) representing the list of enabled commands that could
-	 *         possibly complete the current key sequence.
-	 */
-	private final SortedMap getPartialMatches() {
-		// Put all partial matches into the matches into the map.
-		final Map partialMatches = bindingService
-				.getPartialMatches(keyBindingState.getCurrentSequence());
-
-		// Create a sorted map that sorts based on lexicographical order.
-		final SortedMap sortedMatches = new TreeMap(new Comparator() {
-			public final int compare(final Object a, final Object b) {
-				final Binding bindingA = (Binding) a;
-				final Binding bindingB = (Binding) b;
-				final ParameterizedCommand commandA = bindingA
-						.getParameterizedCommand();
-				final ParameterizedCommand commandB = bindingB
-						.getParameterizedCommand();
-				try {
-					return commandA.getName().compareTo(commandB.getName());
-				} catch (final NotDefinedException e) {
-					// should not happen
-					return 0;
-				}
-			}
-		});
-
-		/*
-		 * Remove those partial matches for which either the command is not
-		 * identified or the activity manager believes the command is not
-		 * enabled.
-		 */
-		final Iterator partialMatchItr = partialMatches.entrySet().iterator();
-		while (partialMatchItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) partialMatchItr.next();
-			final Binding binding = (Binding) entry.getValue();
-			final Command command = binding.getParameterizedCommand()
-					.getCommand();
-			if (command.isDefined()
-					&& activityManager.getIdentifier(command.getId())
-							.isEnabled()) {
-				TriggerSequence bestActiveBindingFor = bindingService.getBestActiveBindingFor(binding.getParameterizedCommand());
-				sortedMatches.put(binding, bestActiveBindingFor==null?null:bestActiveBindingFor.format());
-			}
-		}
-
-		return sortedMatches;
-
-	}
-
-	/**
-	 * Returns whether the dialog is currently holding some remembered state.
-	 * 
-	 * @return <code>true</code> if the dialog has remembered state;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean hasRememberedState() {
-		return hasRememberedState;
-	}
-
-	/**
-	 * Opens this dialog. This method can be called multiple times on the same
-	 * dialog. This only opens the dialog if there is no remembered state; if
-	 * there is remembered state, then it tries to open the preference page
-	 * instead.
-	 * 
-	 * @return The return code from this dialog.
-	 */
-	public final int open() {
-		// If there is remember state, open the preference page.
-		if (hasRememberedState()) {
-			editKeyBinding();
-			clearRememberedState();
-			return Window.OK;
-		}
-
-		// If the dialog is already open, dispose the shell and recreate it.
-		final Shell shell = getShell();
-		if (shell != null) {
-			close(false, false);
-		}
-		create();
-
-		// Configure the size and location.
-		final Point size = configureSize();
-		configureLocation(size);
-
-		// Call the super method.
-		return super.open();
-	}
-
-	/**
-	 * Opens this dialog with the list of bindings for the user to select from.
-	 * 
-	 * @return The return code from this dialog.
-	 * @since 3.3
-	 */
-	public final int open(Collection bindings) {
-		conflictMatches = new TreeMap(new Comparator() {
-			public final int compare(final Object a, final Object b) {
-				final Binding bindingA = (Binding) a;
-				final Binding bindingB = (Binding) b;
-				final ParameterizedCommand commandA = bindingA
-						.getParameterizedCommand();
-				final ParameterizedCommand commandB = bindingB
-						.getParameterizedCommand();
-				try {
-					return commandA.getName().compareTo(commandB.getName());
-				} catch (final NotDefinedException e) {
-					// should not happen
-					return 0;
-				}
-			}
-		});
-		Iterator i = bindings.iterator();
-		while (i.hasNext()) {
-			Binding b = (Binding) i.next();
-			TriggerSequence bestActiveBindingFor = bindingService.getBestActiveBindingFor(b.getParameterizedCommand());
-			conflictMatches.put(b, bestActiveBindingFor==null?null:bestActiveBindingFor.format());
-		}
-
-		// If the dialog is already open, dispose the shell and recreate it.
-		final Shell shell = getShell();
-		if (shell != null) {
-			close(false, false);
-		}
-		create();
-
-		// Configure the size and location.
-		final Point size = configureSize();
-		configureLocation(size);
-
-		// Call the super method.
-		return super.open();
-	}
-
-	/**
-	 * Registers the shell as the same type as its parent with the context
-	 * support. This ensures that it does not modify the current state of the
-	 * application.
-	 */
-	private final void registerShellType() {
-		final Shell shell = getShell();
-		final IContextService contextService = (IContextService) keyBindingState
-				.getAssociatedWindow().getWorkbench().getService(
-						IContextService.class);
-		contextService.registerShell(shell, contextService
-				.getShellType((Shell) shell.getParent()));
-	}
-
-	/**
-	 * Remembers the current state of this dialog.
-	 * 
-	 * @param previousWidth
-	 *            The previous width of the dialog.
-	 * @param binding
-	 *            The binding to remember, may be <code>null</code> if none.
-	 */
-	private final void rememberState(final int previousWidth,
-			final Binding binding) {
-		this.previousWidth = previousWidth;
-		this.binding = binding;
-		hasRememberedState = true;
-	}
-
-	/**
-	 * Exposing this within the keys package.
-	 * 
-	 * @param newParentShell
-	 *            The new parent shell; this value may be <code>null</code> if
-	 *            there is to be no parent.
-	 */
-	protected final void setParentShell(final Shell newParentShell) {
-		super.setParentShell(newParentShell);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.properties
deleted file mode 100644
index 4c23f4b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistDialog.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-NoMatches_Message=No Matches Found
-openPreferencePage=Press "{0}" to open the preference page.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistMessages.java
deleted file mode 100644
index 98bf36b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyAssistMessages.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.osgi.util.NLS;
-
-
-
-/**
- * The KeyAssistMessages class is the class that manages the messages
- * used in the KeyAssistDialog.
- *
- */
-public class KeyAssistMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.keys.KeyAssistDialog";//$NON-NLS-1$
-	
-	public static String NoMatches_Message;
-	public static String openPreferencePage;
-	
-	
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, KeyAssistMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyBindingState.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyBindingState.java
deleted file mode 100644
index 6fb88f9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeyBindingState.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.StatusLineContributionItem;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.WorkbenchWindow;
-
-/**
- * <p>
- * The mutable state of the key binding architecture. This is the only piece of
- * the key binding architecture that changes (internally). It keeps track of
- * what partial key strokes the user has entered. In the case of functional
- * groups of key bindings, it allows the user to keep part of the key sequence
- * even after a match has been made. Only after releasing all of the modifier
- * keys would the sequence reset itself.
- * </p>
- * <p>
- * In the current implementation, a partial reset results in only one key
- * stroke being left in the sequence. However, this may change in the future.
- * </p>
- * 
- * @since 3.0
- */
-class KeyBindingState {
-
-    /**
-     * The workbench window associated with this state. The state can only
-     * exist for one window. When the focus leaves this window then the mode
-     * must automatically be reset.
-     */
-    private IWorkbenchWindow associatedWindow;
-
-    /**
-     * This is the current extent of the sequence entered by the user. In an
-     * application with only single-stroke key bindings, this will also be
-     * empty. However, in applications with multi-stroke key bindings, this is
-     * the sequence entered by the user that partially matches another one of
-     * the application's active key bindings.
-     */
-    private KeySequence currentSequence;
-
-    /**
-     * The workbench that should be notified of changes to the key binding
-     * state. This is done by updating one of the contribution items on the
-     * status line.
-     */
-    private final IWorkbench workbench;
-
-    /**
-     * Constructs a new instance of <code>KeyBindingState</code> with an
-     * empty key sequence, set to reset fully.
-     * 
-     * @param workbenchToNotify
-     *            The workbench that this state should keep advised of changes
-     *            to the key binding state; must not be <code>null</code>.
-     */
-    KeyBindingState(IWorkbench workbenchToNotify) {
-        currentSequence = KeySequence.getInstance();
-        workbench = workbenchToNotify;
-        associatedWindow = workbench.getActiveWorkbenchWindow();
-    }
-
-    /**
-     * An accessor for the workbench window associated with this state. This
-     * should never be <code>null</code>, as the setting follows the last
-     * workbench window to have focus.
-     * 
-     * @return The workbench window to which the key binding architecture is
-     *         currently attached; should never be <code>null</code>.
-     */
-    IWorkbenchWindow getAssociatedWindow() {
-        return associatedWindow;
-    }
-
-    /**
-     * An accessor for the current key sequence waiting for completion.
-     * 
-     * @return The current incomplete key sequence; never <code>null</code>,
-     *         but may be empty.
-     */
-    KeySequence getCurrentSequence() {
-        return currentSequence;
-    }
-
-    /**
-     * Gets the status line contribution item which the key binding
-     * architecture uses to keep the user up-to-date as to the current state.
-     * 
-     * @return The status line contribution item, if any; <code>null</code>,
-     *         if none.
-     */
-    StatusLineContributionItem getStatusLine() {
-        if (associatedWindow instanceof WorkbenchWindow) {
-            WorkbenchWindow window = (WorkbenchWindow) associatedWindow;
-            IStatusLineManager statusLine = window.getStatusLineManager();
-            // TODO implicit dependency on IDE's action builder
-            // @issue implicit dependency on IDE's action builder
-            if (statusLine != null) { // this can be null if we're exiting
-                IContributionItem item = statusLine
-                        .find("ModeContributionItem"); //$NON-NLS-1$
-                if (item instanceof StatusLineContributionItem) {
-                    return ((StatusLineContributionItem) item);
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * <p>
-     * Resets the state based on the current properties. If the state is to
-     * collapse fully or if there are no key strokes, then it sets the state to
-     * have an empty key sequence. Otherwise, it leaves the first key stroke in
-     * the sequence.
-     * </p>
-     * <p>
-     * The workbench's status lines are updated, if appropriate.
-     * </p>
-     */
-    void reset() {
-        currentSequence = KeySequence.getInstance();
-        updateStatusLines();
-    }
-
-    /**
-     * A mutator for the workbench window to which this state is associated.
-     * 
-     * @param window
-     *            The workbench window to associated; should never be <code>null</code>.
-     */
-    void setAssociatedWindow(IWorkbenchWindow window) {
-        associatedWindow = window;
-    }
-
-    /**
-     * A mutator for the partial sequence entered by the user.
-     * 
-     * @param sequence
-     *            The current key sequence; should not be <code>null</code>,
-     *            but may be empty.
-     */
-    void setCurrentSequence(KeySequence sequence) {
-        currentSequence = sequence;
-        updateStatusLines();
-    }
-
-    /**
-     * Updates the text of the status line of the associated shell with the
-     * current sequence.
-     */
-    private void updateStatusLines() {
-        StatusLineContributionItem statusLine = getStatusLine();
-        if (statusLine != null) {
-            statusLine.setText(getCurrentSequence().format());
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeySequenceBinding.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeySequenceBinding.java
deleted file mode 100644
index a17e95b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeySequenceBinding.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.ui.commands.IKeySequenceBinding;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.KeySequence;
-
-public final class KeySequenceBinding implements IKeySequenceBinding {
-
-    /**
-     * This is the identifier for the default context.  This is used wherever
-     * some default is needed.  For example, this is the context that is used
-     * for key bindings that specify no context.  This is also used to select a
-     * default context in the keys preference page.
-     */
-    public static final String DEFAULT_CONTEXT_ID = "org.eclipse.ui.contexts.window"; //$NON-NLS-1$
-
-    private final static int HASH_FACTOR = 89;
-
-    private final static int HASH_INITIAL = KeySequenceBinding.class.getName()
-            .hashCode();
-
-    private transient int hashCode;
-
-    private transient boolean hashCodeComputed;
-
-    private KeySequence keySequence;
-
-    private int match;
-
-    private transient String string;
-
-    public KeySequenceBinding(KeySequence keySequence, int match) {
-        if (keySequence == null) {
-			throw new NullPointerException();
-		}
-
-        if (match < 0) {
-			throw new IllegalArgumentException();
-		}
-
-        this.keySequence = keySequence;
-        this.match = match;
-    }
-
-    public int compareTo(Object object) {
-        KeySequenceBinding castedObject = (KeySequenceBinding) object;
-        int compareTo = Util.compare(match, castedObject.match);
-
-        if (compareTo == 0) {
-			compareTo = Util.compare(keySequence, castedObject.keySequence);
-		}
-
-        return compareTo;
-    }
-
-    public boolean equals(Object object) {
-        if (!(object instanceof KeySequenceBinding)) {
-			return false;
-		}
-
-        final KeySequenceBinding castedObject = (KeySequenceBinding) object;
-        if (!Util.equals(keySequence, castedObject.keySequence)) {
-            return false;
-        }
-        
-        return Util.equals(match, castedObject.match);
-    }
-
-    public KeySequence getKeySequence() {
-        return keySequence;
-    }
-
-    public int getMatch() {
-        return match;
-    }
-
-    public int hashCode() {
-        if (!hashCodeComputed) {
-            hashCode = HASH_INITIAL;
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(keySequence);
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(match);
-            hashCodeComputed = true;
-        }
-
-        return hashCode;
-    }
-
-    public String toString() {
-        if (string == null) {
-            final StringBuffer stringBuffer = new StringBuffer();
-            stringBuffer.append('[');
-            stringBuffer.append(keySequence);
-            stringBuffer.append(',');
-            stringBuffer.append(match);
-            stringBuffer.append(']');
-            string = stringBuffer.toString();
-        }
-
-        return string;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java
deleted file mode 100644
index 47e151d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferenceFiltersDialog.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.preferences.ViewSettingsDialog;
-
-/**
- * Creates a dialog box for applying filter selection of When combo box in
- * NewKeysPreferencePage
- * 
- * @since 3.3
- * 
- */
-public class KeysPreferenceFiltersDialog extends ViewSettingsDialog {
-
-	private Button actionSetFilterCheckBox;
-	private Button internalFilterCheckBox;
-	private Button uncategorizedFilterCheckBox;
-
-	private boolean filterActionSet;
-	private boolean filterInternal;
-	private boolean filterUncategorized;
-	private boolean filterShowUnboundCommands;
-
-	void setFilterActionSet(boolean b) {
-		filterActionSet = b;
-	}
-
-	void setFilterInternal(boolean b) {
-		filterInternal = b;
-	}
-	
-	void setFilterUncategorized(boolean b) {
-		filterUncategorized = b;
-	}
-
-	boolean getFilterActionSet() {
-		return filterActionSet;
-	}
-
-	boolean getFilterInternal() {
-		return filterInternal;
-	}
-	
-	boolean getFilterUncategorized() {
-		return filterUncategorized;
-	}
-
-	/**
-	 * @param parentShell
-	 */
-	public KeysPreferenceFiltersDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.ViewSettingsDialog#performDefaults()
-	 */
-	protected void performDefaults() {
-		actionSetFilterCheckBox.setSelection(true);
-		internalFilterCheckBox.setSelection(true);
-		uncategorizedFilterCheckBox.setSelection(true);
-		super.performDefaults();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite topComposite = (Composite) super.createDialogArea(parent);
-		GridLayout layout = new GridLayout(1, false);
-		topComposite.setLayout(layout);
-		topComposite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL));
-		actionSetFilterCheckBox = new Button(topComposite, SWT.CHECK);
-		actionSetFilterCheckBox
-				.setText(NewKeysPreferenceMessages.ActionSetFilterCheckBox_Text);
-		internalFilterCheckBox = new Button(topComposite, SWT.CHECK);
-		internalFilterCheckBox
-				.setText(NewKeysPreferenceMessages.InternalFilterCheckBox_Text);
-		uncategorizedFilterCheckBox = new Button(topComposite, SWT.CHECK);
-		uncategorizedFilterCheckBox
-				.setText(NewKeysPreferenceMessages.UncategorizedFilterCheckBox_Text);
-
-		actionSetFilterCheckBox.setSelection(filterActionSet);
-		internalFilterCheckBox.setSelection(filterInternal);
-		uncategorizedFilterCheckBox.setSelection(filterUncategorized);
-		applyDialogFont(topComposite);
-
-		return topComposite;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-	 */
-	protected void okPressed() {
-		filterActionSet = actionSetFilterCheckBox.getSelection();
-		filterInternal = internalFilterCheckBox.getSelection();
-		filterUncategorized = uncategorizedFilterCheckBox.getSelection();
-		super.okPressed();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void configureShell(Shell newShell) {
-		super.configureShell(newShell);
-		newShell
-				.setText(NewKeysPreferenceMessages.KeysPreferenceFilterDialog_Title);
-	}
-
-	boolean getFilterShowUnboundCommands() {
-		return filterShowUnboundCommands;
-	}
-
-	void setFilterUnboundCommands(boolean filterUnboundCommands) {
-		this.filterShowUnboundCommands = filterUnboundCommands;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.java
deleted file mode 100644
index a272d06..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.java
+++ /dev/null
@@ -1,2479 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeySequenceText;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.contexts.IContextIds;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-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.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-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.FileDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.IActivityManager;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-import com.ibm.icu.text.Collator;
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * The preference page for defining keyboard shortcuts. While some of its
- * underpinning have been made generic to "bindings" rather than "key bindings",
- * it will still take some work to remove the link entirely.
- * 
- * @since 3.0
- */
-public final class KeysPreferencePage extends PreferencePage implements
-		IWorkbenchPreferencePage {
-
-	/**
-	 * A selection listener to be used on the columns in the table on the view
-	 * tab. This selection listener modifies the sort order so that the
-	 * appropriate column is in the first position.
-	 * 
-	 * @since 3.1
-	 */
-	private class SortOrderSelectionListener extends SelectionAdapter {
-
-		/**
-		 * The column to be put in the first position. This value should be one
-		 * of the constants defined by <code>SORT_COLUMN_</code>.
-		 */
-		private final int columnSelected;
-
-		/**
-		 * Constructs a new instance of <code>SortOrderSelectionListener</code>.
-		 * 
-		 * @param columnSelected
-		 *            The column to be given first priority in the sort order;
-		 *            this value should be one of the constants defined as
-		 *            <code>SORT_COLUMN_</code>.
-		 */
-		private SortOrderSelectionListener(final int columnSelected) {
-			this.columnSelected = columnSelected;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-		 */
-		public void widgetSelected(SelectionEvent e) {
-			// Change the column titles.
-			final int oldSortIndex = sortOrder[0];
-			final TableColumn oldSortColumn = tableBindings
-					.getColumn(oldSortIndex);
-			oldSortColumn.setText(UNSORTED_COLUMN_NAMES[oldSortIndex]);
-			final TableColumn newSortColumn = tableBindings
-					.getColumn(columnSelected);
-			newSortColumn.setText(SORTED_COLUMN_NAMES[columnSelected]);
-
-			// Change the sort order.
-			boolean columnPlaced = false;
-			boolean enoughRoom = false;
-			int bumpedColumn = -1;
-			for (int i = 0; i < sortOrder.length; i++) {
-				if (sortOrder[i] == columnSelected) {
-					/*
-					 * We've found the place where the column existing in the
-					 * old sort order. No matter what at this point, we have
-					 * completed the reshuffling.
-					 */
-					enoughRoom = true;
-					if (bumpedColumn != -1) {
-						// We have already started bumping things around, so
-						// drop the last bumped column here.
-						sortOrder[i] = bumpedColumn;
-					} else {
-						// The order has not changed.
-						columnPlaced = true;
-					}
-					break;
-
-				} else if (columnPlaced) {
-					// We are currently bumping, so just bump another.
-					int temp = sortOrder[i];
-					sortOrder[i] = bumpedColumn;
-					bumpedColumn = temp;
-
-				} else {
-					/*
-					 * We are not currently bumping, so drop the column and
-					 * start bumping.
-					 */
-					bumpedColumn = sortOrder[i];
-					sortOrder[i] = columnSelected;
-					columnPlaced = true;
-				}
-			}
-
-			// Grow the sort order.
-			if (!enoughRoom) {
-				final int[] newSortOrder = new int[sortOrder.length + 1];
-				System.arraycopy(sortOrder, 0, newSortOrder, 0,
-						sortOrder.length);
-				newSortOrder[sortOrder.length] = bumpedColumn;
-				sortOrder = newSortOrder;
-			}
-
-			// Update the view tab.
-			updateViewTab();
-		}
-	}
-
-	/**
-	 * The data key for the binding stored on an SWT widget. The key is a
-	 * fully-qualified name, but in reverse order. This is so that the equals
-	 * method will detect misses faster.
-	 */
-	private static final String BINDING_KEY = "Binding.bindings.jface.eclipse.org"; //$NON-NLS-1$
-
-	/**
-	 * The image associate with a binding that exists as part of the system
-	 * definition.
-	 */
-	private static final Image IMAGE_BLANK = ImageFactory.getImage("blank"); //$NON-NLS-1$
-
-	/**
-	 * The image associated with a binding changed by the user.
-	 */
-	private static final Image IMAGE_CHANGE = ImageFactory.getImage("change"); //$NON-NLS-1$
-
-	/**
-	 * The data key at which the <code>Binding</code> instance for a table
-	 * item is stored.
-	 */
-	private static final String ITEM_DATA_KEY = "org.eclipse.jface.bindings"; //$NON-NLS-1$
-
-	/**
-	 * The number of items to show in the combo boxes.
-	 */
-	private static final int ITEMS_TO_SHOW = 9;
-
-	/**
-	 * The resource bundle from which translations can be retrieved.
-	 */
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(KeysPreferencePage.class.getName());
-
-	/**
-	 * The total number of columns on the view tab.
-	 */
-	private static final int VIEW_TOTAL_COLUMNS = 4;
-
-	/**
-	 * The translated names for the columns when they are the primary sort key
-	 * (e.g., ">Category<").
-	 */
-	private static final String[] SORTED_COLUMN_NAMES = new String[VIEW_TOTAL_COLUMNS];
-
-	/**
-	 * The index of the modify tab.
-	 * 
-	 * @since 3.1
-	 */
-	private static final int TAB_INDEX_MODIFY = 1;
-
-	/**
-	 * The translated names for the columns when they are not the primary sort
-	 * key (e.g., "Category").
-	 */
-	private static final String[] UNSORTED_COLUMN_NAMES = new String[VIEW_TOTAL_COLUMNS];
-
-	/**
-	 * The index of the column on the view tab containing the category name.
-	 */
-	private static final int VIEW_CATEGORY_COLUMN_INDEX = 0;
-
-	/**
-	 * The index of the column on the view tab containing the command name.
-	 */
-	private static final int VIEW_COMMAND_COLUMN_INDEX = 1;
-
-	/**
-	 * The index of the column on the view tab containing the context name.
-	 */
-	private static final int VIEW_CONTEXT_COLUMN_INDEX = 3;
-
-	/**
-	 * The index of the column on the view tab containing the key sequence.
-	 */
-	private static final int VIEW_KEY_SEQUENCE_COLUMN_INDEX = 2;
-
-	static {
-		UNSORTED_COLUMN_NAMES[VIEW_CATEGORY_COLUMN_INDEX] = Util
-				.translateString(RESOURCE_BUNDLE, "tableColumnCategory"); //$NON-NLS-1$
-		UNSORTED_COLUMN_NAMES[VIEW_COMMAND_COLUMN_INDEX] = Util
-				.translateString(RESOURCE_BUNDLE, "tableColumnCommand"); //$NON-NLS-1$
-		UNSORTED_COLUMN_NAMES[VIEW_KEY_SEQUENCE_COLUMN_INDEX] = Util
-				.translateString(RESOURCE_BUNDLE, "tableColumnKeySequence"); //$NON-NLS-1$
-		UNSORTED_COLUMN_NAMES[VIEW_CONTEXT_COLUMN_INDEX] = Util
-				.translateString(RESOURCE_BUNDLE, "tableColumnContext"); //$NON-NLS-1$
-
-		SORTED_COLUMN_NAMES[VIEW_CATEGORY_COLUMN_INDEX] = Util.translateString(
-				RESOURCE_BUNDLE, "tableColumnCategorySorted"); //$NON-NLS-1$
-		SORTED_COLUMN_NAMES[VIEW_COMMAND_COLUMN_INDEX] = Util.translateString(
-				RESOURCE_BUNDLE, "tableColumnCommandSorted"); //$NON-NLS-1$
-		SORTED_COLUMN_NAMES[VIEW_KEY_SEQUENCE_COLUMN_INDEX] = Util
-				.translateString(RESOURCE_BUNDLE,
-						"tableColumnKeySequenceSorted"); //$NON-NLS-1$
-		SORTED_COLUMN_NAMES[VIEW_CONTEXT_COLUMN_INDEX] = Util.translateString(
-				RESOURCE_BUNDLE, "tableColumnContextSorted"); //$NON-NLS-1$
-	}
-
-	/**
-	 * The workbench's activity manager. This activity manager is used to see if
-	 * certain commands should be filtered from the user interface.
-	 */
-	private IActivityManager activityManager;
-
-	/**
-	 * The workbench's binding service. This binding service is used to access
-	 * the current set of bindings, and to persist changes.
-	 */
-	private IBindingService bindingService;
-
-	/**
-	 * The add button located on the bottom left of the preference page. This
-	 * button adds the current trigger sequence to the currently selected
-	 * command.
-	 */
-	private Button buttonAdd;
-
-	/**
-	 * The remove button located on the bottom left of the preference page. This
-	 * button removes the current trigger sequence from the current command.
-	 */
-	private Button buttonRemove;
-
-	/**
-	 * The restore button located on the bottom left of the preference page.
-	 * This button attempts to restore the currently trigger sequence to its
-	 * initial (i.e., Binding.SYSTEM) state -- undoing all user modifications.
-	 */
-	private Button buttonRestore;
-
-	/**
-	 * A map of all the category identifiers indexed by the names that appear in
-	 * the user interface. This look-up table is built during initialization.
-	 */
-	private Map categoryIdsByUniqueName;
-
-	/**
-	 * A map of all the category names in the user interface indexed by their
-	 * identifiers. This look-up table is built during initialization.
-	 */
-	private Map categoryUniqueNamesById;
-
-	/**
-	 * The combo box containing the list of all categories for commands.
-	 */
-	private Combo comboCategory;
-
-	/**
-	 * The combo box containing the list of commands relevent for the currently
-	 * selected category.
-	 */
-	private Combo comboCommand;
-
-	/**
-	 * The combo box containing the list of contexts in the system.
-	 */
-	private Combo comboContext;
-
-	/**
-	 * The combo box containing the list of schemes in the system.
-	 */
-	private Combo comboScheme;
-
-	/**
-	 * A map of all the command identifiers indexed by the categories to which
-	 * they belong. This look-up table is built during initialization.
-	 */
-	private Map commandIdsByCategoryId;
-
-	/**
-	 * The parameterized commands corresponding to the current contents of
-	 * <code>comboCommand</code>. The commands in this array are in the same
-	 * order as in the combo. This value can be <code>null</code> if nothing
-	 * is selected in the combo.
-	 */
-	private ParameterizedCommand[] commands = null;
-
-	/**
-	 * The workbench's command service. This command service is used to access
-	 * the list of commands.
-	 */
-	private ICommandService commandService;
-
-	/**
-	 * A map of all the context identifiers indexed by the names that appear in
-	 * the user interface. This look-up table is built during initialization.
-	 */
-	private Map contextIdsByUniqueName;
-
-	/**
-	 * The workbench's context service. This context service is used to access
-	 * the list of contexts.
-	 */
-	private IContextService contextService;
-
-	/**
-	 * A map of all the category names in the user interface indexed by their
-	 * identifiers. This look-up table is built during initialization.
-	 */
-	private Map contextUniqueNamesById;
-
-	/**
-	 * The workbench's help system. This is used to register the page with the
-	 * help system.
-	 * 
-	 * TODO Add a help context
-	 */
-	// private IWorkbenchHelpSystem helpSystem;
-	/**
-	 * This is the label next to the table showing the bindings matching a
-	 * particular command. The label is disabled if there isn't a selected
-	 * command identifier.
-	 */
-	private Label labelBindingsForCommand;
-
-	/**
-	 * This is the label next to the table showing the bindings matching a
-	 * particular trigger sequence. The label is disabled if there isn't a
-	 * current key sequence.
-	 */
-	private Label labelBindingsForTriggerSequence;
-
-	/**
-	 * The label next to the context combo box. This label indicates whether the
-	 * context is a child of another context. If the current context is not a
-	 * child, then this label is blank.
-	 */
-	private Label labelContextExtends;
-
-	/**
-	 * The label next to the scheme combo box. This label indicates whether the
-	 * scheme is a child of another scheme. If the current scheme is not a
-	 * child, then this label is blank.
-	 */
-	private Label labelSchemeExtends;
-
-	/**
-	 * A binding manager local to this preference page. When the page is
-	 * initialized, the current bindings are read out from the binding service
-	 * and placed in this manager. This manager is then updated as the user
-	 * makes changes. When the user has finished, the contents of this manager
-	 * are compared with the contents of the binding service. The changes are
-	 * then persisted.
-	 */
-	private final BindingManager localChangeManager = new BindingManager(
-			new ContextManager(), new CommandManager());
-
-	/**
-	 * A map of all the scheme identifiers indexed by the names that appear in
-	 * the user interface. This look-up table is built during initialization.
-	 */
-	private Map schemeIdsByUniqueName;
-
-	/**
-	 * A map of all the scheme names in the user interface indexed by their
-	 * identifiers. This look-up table is built during initialization.
-	 */
-	private Map schemeUniqueNamesById;
-
-	/**
-	 * The sort order to be used on the view tab to display all of the key
-	 * bindings. This sort order can be changed by the user. This array is never
-	 * <code>null</code>, but may be empty.
-	 */
-	private int[] sortOrder = { VIEW_CATEGORY_COLUMN_INDEX,
-			VIEW_COMMAND_COLUMN_INDEX, VIEW_KEY_SEQUENCE_COLUMN_INDEX,
-			VIEW_CONTEXT_COLUMN_INDEX };
-
-	/**
-	 * The top-most tab folder for the preference page -- containing a view and
-	 * a modify tab.
-	 */
-	private TabFolder tabFolder;
-
-	/**
-	 * A table of the key bindings currently defined. This table appears on the
-	 * view tab; it is intended to be an easy way for users to learn the key
-	 * bindings in Eclipse. This value is only <code>null</code> until the
-	 * controls are first created.
-	 */
-	private Table tableBindings;
-
-	/**
-	 * The table containing all of the bindings matching the selected command.
-	 */
-	private Table tableBindingsForCommand;
-
-	/**
-	 * The table containing all of the bindings matching the current trigger
-	 * sequence.
-	 */
-	private Table tableBindingsForTriggerSequence;
-
-	/**
-	 * The text widget where keys are entered. This widget is managed by
-	 * <code>textTriggerSequenceManager</code>, which provides its special
-	 * behaviour.
-	 */
-	private Text textTriggerSequence;
-
-	/**
-	 * The manager for the text widget that traps incoming key events. This
-	 * manager should be used to access the widget, rather than accessing the
-	 * widget directly.
-	 */
-	private KeySequenceText textTriggerSequenceManager;
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.PreferencePage#applyData(java.lang.Object)
-	 */
-	public void applyData(Object data) {
-		if(data instanceof Binding) {
-			editBinding((Binding) data);
-		}
-	}
-	protected final Control createContents(final Composite parent) {
-		
-		PlatformUI.getWorkbench().getHelpSystem()
-			.setHelp(parent, IWorkbenchHelpContextIds.KEYS_PREFERENCE_PAGE);
-		
-		tabFolder = new TabFolder(parent, SWT.NULL);
-
-		// View tab
-		final TabItem viewTab = new TabItem(tabFolder, SWT.NULL);
-		viewTab.setText(Util.translateString(RESOURCE_BUNDLE, "viewTab.Text")); //$NON-NLS-1$
-		viewTab.setControl(createViewTab(tabFolder));
-
-		// Modify tab
-		final TabItem modifyTab = new TabItem(tabFolder, SWT.NULL);
-		modifyTab.setText(Util.translateString(RESOURCE_BUNDLE,
-				"modifyTab.Text")); //$NON-NLS-1$
-		modifyTab.setControl(createModifyTab(tabFolder));
-
-		// Do some fancy stuff.
-		applyDialogFont(tabFolder);
-		final IPreferenceStore store = getPreferenceStore();
-		final int selectedTab = store
-				.getInt(IPreferenceConstants.KEYS_PREFERENCE_SELECTED_TAB);
-		if ((tabFolder.getItemCount() > selectedTab) && (selectedTab > 0)) {
-			tabFolder.setSelection(selectedTab);
-		}
-		
-		return tabFolder;
-	}
-
-	/**
-	 * Creates the tab that allows the user to change the keyboard shortcuts.
-	 * 
-	 * @param parent
-	 *            The tab folder in which the tab should be created; must not be
-	 *            <code>null</code>.
-	 * @return The composite which represents the contents of the tab; never
-	 *         <code>null</code>.
-	 */
-	private final Composite createModifyTab(final TabFolder parent) {
-		final Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayout(new GridLayout());
-		GridData gridData = new GridData(GridData.FILL_BOTH);
-		composite.setLayoutData(gridData);
-		final Composite compositeKeyConfiguration = new Composite(composite,
-				SWT.NULL);
-		GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 3;
-		compositeKeyConfiguration.setLayout(gridLayout);
-		gridData = new GridData(GridData.FILL_HORIZONTAL);
-		compositeKeyConfiguration.setLayoutData(gridData);
-		final Label labelKeyConfiguration = new Label(
-				compositeKeyConfiguration, SWT.LEFT);
-		labelKeyConfiguration.setText(Util.translateString(RESOURCE_BUNDLE,
-				"labelScheme")); //$NON-NLS-1$
-		comboScheme = new Combo(compositeKeyConfiguration, SWT.READ_ONLY);
-		gridData = new GridData();
-		gridData.widthHint = 200;
-		comboScheme.setLayoutData(gridData);
-		comboScheme.setVisibleItemCount(ITEMS_TO_SHOW);
-
-		comboScheme.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent e) {
-				selectedComboScheme();
-			}
-		});
-
-		labelSchemeExtends = new Label(compositeKeyConfiguration, SWT.LEFT);
-		gridData = new GridData(GridData.FILL_HORIZONTAL);
-		labelSchemeExtends.setLayoutData(gridData);
-		final Control spacer = new Composite(composite, SWT.NULL);
-		gridData = new GridData();
-		gridData.heightHint = 10;
-		gridData.widthHint = 10;
-		spacer.setLayoutData(gridData);
-		final Group groupCommand = new Group(composite, SWT.SHADOW_NONE);
-		gridLayout = new GridLayout();
-		gridLayout.numColumns = 3;
-		groupCommand.setLayout(gridLayout);
-		gridData = new GridData(GridData.FILL_BOTH);
-		groupCommand.setLayoutData(gridData);
-		groupCommand.setText(Util.translateString(RESOURCE_BUNDLE,
-				"groupCommand")); //$NON-NLS-1$	
-		final Label labelCategory = new Label(groupCommand, SWT.LEFT);
-		gridData = new GridData();
-		labelCategory.setLayoutData(gridData);
-		labelCategory.setText(Util.translateString(RESOURCE_BUNDLE,
-				"labelCategory")); //$NON-NLS-1$
-		comboCategory = new Combo(groupCommand, SWT.READ_ONLY);
-		gridData = new GridData();
-		gridData.horizontalSpan = 2;
-		gridData.widthHint = 200;
-		comboCategory.setLayoutData(gridData);
-		comboCategory.setVisibleItemCount(ITEMS_TO_SHOW);
-
-		comboCategory.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent e) {
-				update();
-			}
-		});
-
-		final Label labelCommand = new Label(groupCommand, SWT.LEFT);
-		gridData = new GridData();
-		labelCommand.setLayoutData(gridData);
-		labelCommand.setText(Util.translateString(RESOURCE_BUNDLE,
-				"labelCommand")); //$NON-NLS-1$
-		comboCommand = new Combo(groupCommand, SWT.READ_ONLY);
-		gridData = new GridData();
-		gridData.horizontalSpan = 2;
-		gridData.widthHint = 300;
-		comboCommand.setLayoutData(gridData);
-		comboCommand.setVisibleItemCount(9);
-
-		comboCommand.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent e) {
-				update();
-			}
-		});
-
-		labelBindingsForCommand = new Label(groupCommand, SWT.LEFT);
-		gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
-		gridData.verticalAlignment = GridData.FILL_VERTICAL;
-		labelBindingsForCommand.setLayoutData(gridData);
-		labelBindingsForCommand.setText(Util.translateString(RESOURCE_BUNDLE,
-				"labelAssignmentsForCommand")); //$NON-NLS-1$
-		tableBindingsForCommand = new Table(groupCommand, SWT.BORDER
-				| SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
-		tableBindingsForCommand.setHeaderVisible(true);
-		gridData = new GridData(GridData.FILL_BOTH);
-		gridData.heightHint = 60;
-		gridData.horizontalSpan = 2;
-		gridData.widthHint = "carbon".equals(SWT.getPlatform()) ? 620 : 520; //$NON-NLS-1$
-		tableBindingsForCommand.setLayoutData(gridData);
-		TableColumn tableColumnDelta = new TableColumn(tableBindingsForCommand,
-				SWT.NULL, 0);
-		tableColumnDelta.setResizable(false);
-		tableColumnDelta.setText(Util.ZERO_LENGTH_STRING);
-		tableColumnDelta.setWidth(20);
-		TableColumn tableColumnContext = new TableColumn(
-				tableBindingsForCommand, SWT.NULL, 1);
-		tableColumnContext.setResizable(true);
-		tableColumnContext.setText(Util.translateString(RESOURCE_BUNDLE,
-				"tableColumnContext")); //$NON-NLS-1$
-		tableColumnContext.pack();
-		tableColumnContext.setWidth(200);
-		final TableColumn tableColumnKeySequence = new TableColumn(
-				tableBindingsForCommand, SWT.NULL, 2);
-		tableColumnKeySequence.setResizable(true);
-		tableColumnKeySequence.setText(Util.translateString(RESOURCE_BUNDLE,
-				"tableColumnKeySequence")); //$NON-NLS-1$
-		tableColumnKeySequence.pack();
-		tableColumnKeySequence.setWidth(300);
-
-		tableBindingsForCommand.addMouseListener(new MouseAdapter() {
-
-			public void mouseDoubleClick(MouseEvent mouseEvent) {
-				update();
-			}
-		});
-
-		tableBindingsForCommand.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent selectionEvent) {
-				selectedTableBindingsForCommand();
-			}
-		});
-
-		final Group groupKeySequence = new Group(composite, SWT.SHADOW_NONE);
-		gridLayout = new GridLayout();
-		gridLayout.numColumns = 4;
-		groupKeySequence.setLayout(gridLayout);
-		gridData = new GridData(GridData.FILL_BOTH);
-		groupKeySequence.setLayoutData(gridData);
-		groupKeySequence.setText(Util.translateString(RESOURCE_BUNDLE,
-				"groupKeySequence")); //$NON-NLS-1$	
-		final Label labelKeySequence = new Label(groupKeySequence, SWT.LEFT);
-		gridData = new GridData();
-		labelKeySequence.setLayoutData(gridData);
-		labelKeySequence.setText(Util.translateString(RESOURCE_BUNDLE,
-				"labelKeySequence")); //$NON-NLS-1$
-
-		// The text widget into which the key strokes will be entered.
-		textTriggerSequence = new Text(groupKeySequence, SWT.BORDER);
-		// On MacOS X, this font will be changed by KeySequenceText
-		textTriggerSequence.setFont(groupKeySequence.getFont());
-		gridData = new GridData();
-		gridData.horizontalSpan = 2;
-		gridData.widthHint = 300;
-		textTriggerSequence.setLayoutData(gridData);
-		textTriggerSequence.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				update();
-			}
-		});
-		textTriggerSequence.addFocusListener(new FocusListener() {
-			public void focusGained(FocusEvent e) {
-				bindingService.setKeyFilterEnabled(false);
-			}
-
-			public void focusLost(FocusEvent e) {
-				bindingService.setKeyFilterEnabled(true);
-			}
-		});
-		textTriggerSequence.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				if (!bindingService.isKeyFilterEnabled()) {
-					bindingService.setKeyFilterEnabled(true);
-				}
-			}
-		});
-
-		// The manager for the key sequence text widget.
-		textTriggerSequenceManager = new KeySequenceText(textTriggerSequence);
-		textTriggerSequenceManager.setKeyStrokeLimit(4);
-
-		// Button for adding trapped key strokes
-		final Button buttonAddKey = new Button(groupKeySequence, SWT.LEFT
-				| SWT.ARROW);
-		buttonAddKey.setToolTipText(Util.translateString(RESOURCE_BUNDLE,
-				"buttonAddKey.ToolTipText")); //$NON-NLS-1$
-		gridData = new GridData();
-		gridData.heightHint = comboCategory.getTextHeight();
-		buttonAddKey.setLayoutData(gridData);
-
-		// Arrow buttons aren't normally added to the tab list. Let's fix that.
-		final Control[] tabStops = groupKeySequence.getTabList();
-		final ArrayList newTabStops = new ArrayList();
-		for (int i = 0; i < tabStops.length; i++) {
-			Control tabStop = tabStops[i];
-			newTabStops.add(tabStop);
-			if (textTriggerSequence.equals(tabStop)) {
-				newTabStops.add(buttonAddKey);
-			}
-		}
-		final Control[] newTabStopArray = (Control[]) newTabStops
-				.toArray(new Control[newTabStops.size()]);
-		groupKeySequence.setTabList(newTabStopArray);
-
-		// Construct the menu to attach to the above button.
-		final Menu menuButtonAddKey = new Menu(buttonAddKey);
-		final Iterator trappedKeyItr = KeySequenceText.TRAPPED_KEYS.iterator();
-		while (trappedKeyItr.hasNext()) {
-			final KeyStroke trappedKey = (KeyStroke) trappedKeyItr.next();
-			final MenuItem menuItem = new MenuItem(menuButtonAddKey, SWT.PUSH);
-			menuItem.setText(trappedKey.format());
-			menuItem.addSelectionListener(new SelectionAdapter() {
-
-				public void widgetSelected(SelectionEvent e) {
-					textTriggerSequenceManager.insert(trappedKey);
-					textTriggerSequence.setFocus();
-					textTriggerSequence.setSelection(textTriggerSequence
-							.getTextLimit());
-				}
-			});
-		}
-		buttonAddKey.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent selectionEvent) {
-				Point buttonLocation = buttonAddKey.getLocation();
-				buttonLocation = groupKeySequence.toDisplay(buttonLocation.x,
-						buttonLocation.y);
-				Point buttonSize = buttonAddKey.getSize();
-				menuButtonAddKey.setLocation(buttonLocation.x, buttonLocation.y
-						+ buttonSize.y);
-				menuButtonAddKey.setVisible(true);
-			}
-		});
-
-		labelBindingsForTriggerSequence = new Label(groupKeySequence, SWT.LEFT);
-		gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
-		gridData.verticalAlignment = GridData.FILL_VERTICAL;
-		labelBindingsForTriggerSequence.setLayoutData(gridData);
-		labelBindingsForTriggerSequence.setText(Util.translateString(
-				RESOURCE_BUNDLE, "labelAssignmentsForKeySequence")); //$NON-NLS-1$
-		tableBindingsForTriggerSequence = new Table(groupKeySequence,
-				SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
-		tableBindingsForTriggerSequence.setHeaderVisible(true);
-		gridData = new GridData(GridData.FILL_BOTH);
-		gridData.heightHint = 60;
-		gridData.horizontalSpan = 3;
-		gridData.widthHint = "carbon".equals(SWT.getPlatform()) ? 620 : 520; //$NON-NLS-1$
-		tableBindingsForTriggerSequence.setLayoutData(gridData);
-		tableColumnDelta = new TableColumn(tableBindingsForTriggerSequence,
-				SWT.NULL, 0);
-		tableColumnDelta.setResizable(false);
-		tableColumnDelta.setText(Util.ZERO_LENGTH_STRING);
-		tableColumnDelta.setWidth(20);
-		tableColumnContext = new TableColumn(tableBindingsForTriggerSequence,
-				SWT.NULL, 1);
-		tableColumnContext.setResizable(true);
-		tableColumnContext.setText(Util.translateString(RESOURCE_BUNDLE,
-				"tableColumnContext")); //$NON-NLS-1$
-		tableColumnContext.pack();
-		tableColumnContext.setWidth(200);
-		final TableColumn tableColumnCommand = new TableColumn(
-				tableBindingsForTriggerSequence, SWT.NULL, 2);
-		tableColumnCommand.setResizable(true);
-		tableColumnCommand.setText(Util.translateString(RESOURCE_BUNDLE,
-				"tableColumnCommand")); //$NON-NLS-1$
-		tableColumnCommand.pack();
-		tableColumnCommand.setWidth(300);
-
-		tableBindingsForTriggerSequence.addMouseListener(new MouseAdapter() {
-
-			public void mouseDoubleClick(MouseEvent mouseEvent) {
-				update();
-			}
-		});
-
-		tableBindingsForTriggerSequence
-				.addSelectionListener(new SelectionAdapter() {
-
-					public void widgetSelected(SelectionEvent selectionEvent) {
-						selectedTableBindingsForTriggerSequence();
-					}
-				});
-
-		final Composite compositeContext = new Composite(composite, SWT.NULL);
-		gridLayout = new GridLayout();
-		gridLayout.numColumns = 3;
-		compositeContext.setLayout(gridLayout);
-		gridData = new GridData(GridData.FILL_HORIZONTAL);
-		compositeContext.setLayoutData(gridData);
-		final Label labelContext = new Label(compositeContext, SWT.LEFT);
-		labelContext.setText(Util.translateString(RESOURCE_BUNDLE,
-				"labelContext")); //$NON-NLS-1$
-		comboContext = new Combo(compositeContext, SWT.READ_ONLY);
-		gridData = new GridData();
-		gridData.widthHint = 250;
-		comboContext.setLayoutData(gridData);
-		comboContext.setVisibleItemCount(ITEMS_TO_SHOW);
-
-		comboContext.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent e) {
-				update();
-			}
-		});
-
-		labelContextExtends = new Label(compositeContext, SWT.LEFT);
-		gridData = new GridData(GridData.FILL_HORIZONTAL);
-		labelContextExtends.setLayoutData(gridData);
-		final Composite compositeButton = new Composite(composite, SWT.NULL);
-		gridLayout = new GridLayout();
-		gridLayout.marginHeight = 20;
-		gridLayout.marginWidth = 0;
-		gridLayout.numColumns = 3;
-		compositeButton.setLayout(gridLayout);
-		gridData = new GridData();
-		compositeButton.setLayoutData(gridData);
-		buttonAdd = new Button(compositeButton, SWT.CENTER | SWT.PUSH);
-		gridData = new GridData();
-		int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		buttonAdd.setText(Util.translateString(RESOURCE_BUNDLE, "buttonAdd")); //$NON-NLS-1$
-		gridData.widthHint = Math.max(widthHint, buttonAdd.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		buttonAdd.setLayoutData(gridData);
-
-		buttonAdd.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent selectionEvent) {
-				selectedButtonAdd();
-			}
-		});
-
-		buttonRemove = new Button(compositeButton, SWT.CENTER | SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		buttonRemove.setText(Util.translateString(RESOURCE_BUNDLE,
-				"buttonRemove")); //$NON-NLS-1$
-		gridData.widthHint = Math.max(widthHint, buttonRemove.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		buttonRemove.setLayoutData(gridData);
-
-		buttonRemove.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent selectionEvent) {
-				selectedButtonRemove();
-			}
-		});
-
-		buttonRestore = new Button(compositeButton, SWT.CENTER | SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		buttonRestore.setText(Util.translateString(RESOURCE_BUNDLE,
-				"buttonRestore")); //$NON-NLS-1$
-		gridData.widthHint = Math.max(widthHint, buttonRestore.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		buttonRestore.setLayoutData(gridData);
-
-		buttonRestore.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent selectionEvent) {
-				selectedButtonRestore();
-			}
-		});
-
-		return composite;
-	}
-
-	/**
-	 * Creates a tab on the main page for displaying an uneditable list of the
-	 * current key bindings. This is intended as a discovery tool for new users.
-	 * It shows all of the key bindings for the current key configuration,
-	 * platform and locale.
-	 * 
-	 * @param parent
-	 *            The tab folder in which the tab should be created; must not be
-	 *            <code>null</code>.
-	 * @return The newly created composite containing all of the controls; never
-	 *         <code>null</code>.
-	 * @since 3.1
-	 */
-	private final Composite createViewTab(final TabFolder parent) {
-		GridData gridData = null;
-		int widthHint;
-
-		// Create the composite for the tab.
-		final Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		composite.setLayout(new GridLayout());
-
-		// Place a table inside the tab.
-		tableBindings = new Table(composite, SWT.BORDER | SWT.FULL_SELECTION
-				| SWT.H_SCROLL | SWT.V_SCROLL);
-		tableBindings.setHeaderVisible(true);
-		gridData = new GridData(GridData.FILL_BOTH);
-		gridData.heightHint = 400;
-		gridData.horizontalSpan = 2;
-		tableBindings.setLayoutData(gridData);
-		final TableColumn tableColumnCategory = new TableColumn(tableBindings,
-				SWT.NONE, VIEW_CATEGORY_COLUMN_INDEX);
-		tableColumnCategory
-				.setText(SORTED_COLUMN_NAMES[VIEW_CATEGORY_COLUMN_INDEX]);
-		tableColumnCategory
-				.addSelectionListener(new SortOrderSelectionListener(
-						VIEW_CATEGORY_COLUMN_INDEX));
-		final TableColumn tableColumnCommand = new TableColumn(tableBindings,
-				SWT.NONE, VIEW_COMMAND_COLUMN_INDEX);
-		tableColumnCommand
-				.setText(UNSORTED_COLUMN_NAMES[VIEW_COMMAND_COLUMN_INDEX]);
-		tableColumnCommand.addSelectionListener(new SortOrderSelectionListener(
-				VIEW_COMMAND_COLUMN_INDEX));
-		final TableColumn tableColumnKeySequence = new TableColumn(
-				tableBindings, SWT.NONE, VIEW_KEY_SEQUENCE_COLUMN_INDEX);
-		tableColumnKeySequence
-				.setText(UNSORTED_COLUMN_NAMES[VIEW_KEY_SEQUENCE_COLUMN_INDEX]);
-		tableColumnKeySequence
-				.addSelectionListener(new SortOrderSelectionListener(
-						VIEW_KEY_SEQUENCE_COLUMN_INDEX));
-		final TableColumn tableColumnContext = new TableColumn(tableBindings,
-				SWT.NONE, VIEW_CONTEXT_COLUMN_INDEX);
-		tableColumnContext
-				.setText(UNSORTED_COLUMN_NAMES[VIEW_CONTEXT_COLUMN_INDEX]);
-		tableColumnContext.addSelectionListener(new SortOrderSelectionListener(
-				VIEW_CONTEXT_COLUMN_INDEX));
-		tableBindings.addSelectionListener(new SelectionAdapter() {
-			public final void widgetDefaultSelected(final SelectionEvent e) {
-				selectedTableKeyBindings();
-			}
-		});
-
-		// A composite for the buttons.
-		final Composite buttonBar = new Composite(composite, SWT.NONE);
-		buttonBar.setLayout(new GridLayout(2, false));
-		gridData = new GridData();
-		gridData.horizontalAlignment = GridData.END;
-		buttonBar.setLayoutData(gridData);
-
-		// A button for editing the current selection.
-		final Button editButton = new Button(buttonBar, SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		editButton.setText(Util.translateString(RESOURCE_BUNDLE, "buttonEdit")); //$NON-NLS-1$
-		gridData.widthHint = Math.max(widthHint, editButton.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		editButton.setLayoutData(gridData);
-		editButton.addSelectionListener(new SelectionListener() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public final void widgetDefaultSelected(final SelectionEvent event) {
-				selectedTableKeyBindings();
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				widgetDefaultSelected(e);
-			}
-		});
-
-		// A button for exporting the contents to a file.
-		final Button buttonExport = new Button(buttonBar, SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		buttonExport.setText(Util.translateString(RESOURCE_BUNDLE,
-				"buttonExport")); //$NON-NLS-1$
-		gridData.widthHint = Math.max(widthHint, buttonExport.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		buttonExport.setLayoutData(gridData);
-		buttonExport.addSelectionListener(new SelectionListener() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public final void widgetDefaultSelected(final SelectionEvent event) {
-				selectedButtonExport();
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				widgetDefaultSelected(e);
-			}
-		});
-
-		return composite;
-	}
-
-	protected IPreferenceStore doGetPreferenceStore() {
-		return PrefUtil.getInternalPreferenceStore();
-	}
-
-	/**
-	 * Allows the user to change the key bindings for a particular command.
-	 * Switches the tab to the modify tab, and then selects the category and
-	 * command that corresponds with the given command name. It then selects the
-	 * given key sequence and gives focus to the key sequence text widget.
-	 * 
-	 * @param binding
-	 *            The binding to be edited; if <code>null</code>, then just
-	 *            switch to the modify tab. If the <code>binding</code> does
-	 *            not correspond to anything in the keys preference page, then
-	 *            this also just switches to the modify tab.
-	 * @since 3.1
-	 */
-	public final void editBinding(final Binding binding) {
-		// Switch to the modify tab.
-		tabFolder.setSelection(TAB_INDEX_MODIFY);
-
-		// If there is no command name, stop here.
-		if (binding == null) {
-			return;
-		}
-
-		/*
-		 * Get the corresponding category and command names. If either is
-		 * undefined, then we can just stop now. We won't be able to find their
-		 * name.
-		 */
-		final ParameterizedCommand command = binding.getParameterizedCommand();
-		String categoryName = null;
-		String commandName = null;
-		try {
-			categoryName = command.getCommand().getCategory().getName();
-			commandName = command.getName();
-		} catch (final NotDefinedException e) {
-			return; // no name
-		}
-
-		// Update the category combo box.
-		final String[] categoryNames = comboCategory.getItems();
-		int i = 0;
-		for (; i < categoryNames.length; i++) {
-			if (categoryName.equals(categoryNames[i])) {
-				break;
-			}
-		}
-		if (i >= comboCategory.getItemCount()) {
-			// Couldn't find the category, so abort.
-			return;
-		}
-		comboCategory.select(i);
-
-		// Update the commands combo box.
-		updateComboCommand();
-
-		// Update the command combo box.
-		final String[] commandNames = comboCommand.getItems();
-		int j = 0;
-		for (; j < commandNames.length; j++) {
-			if (commandName.equals(commandNames[j])) {
-				if (comboCommand.getSelectionIndex() != j) {
-					comboCommand.select(j);
-				}
-				break;
-			}
-		}
-		if (j >= comboCommand.getItemCount()) {
-			// Couldn't find the command, so just select the first and then stop
-			if (comboCommand.getSelectionIndex() != 0) {
-				comboCommand.select(0);
-			}
-			update();
-			return;
-		}
-
-		/*
-		 * Update and validate the state of the modify tab in response to these
-		 * selection changes.
-		 */
-		update();
-
-		// Select the right key binding, if possible.
-		final TableItem[] items = tableBindingsForCommand.getItems();
-		int k = 0;
-		for (; k < items.length; k++) {
-			final String currentKeySequence = items[k].getText(2);
-			if (binding.getTriggerSequence().format()
-					.equals(currentKeySequence)) {
-				break;
-			}
-		}
-		if (k < tableBindingsForCommand.getItemCount()) {
-			tableBindingsForCommand.select(k);
-			tableBindingsForCommand.notifyListeners(SWT.Selection, null);
-			textTriggerSequence.setFocus();
-		}
-	}
-
-	/**
-	 * Returns the identifier for the currently selected category.
-	 * 
-	 * @return The selected category; <code>null</code> if none.
-	 */
-	private final String getCategoryId() {
-		return !commandIdsByCategoryId.containsKey(null)
-				|| comboCategory.getSelectionIndex() > 0 ? (String) categoryIdsByUniqueName
-				.get(comboCategory.getText())
-				: null;
-	}
-
-	/**
-	 * Returns the identifier for the currently selected context.
-	 * 
-	 * @return The selected context; <code>null</code> if none.
-	 */
-	private final String getContextId() {
-		return comboContext.getSelectionIndex() >= 0 ? (String) contextIdsByUniqueName
-				.get(comboContext.getText())
-				: null;
-	}
-
-	/**
-	 * Returns the current trigger sequence.
-	 * 
-	 * @return The trigger sequence; may be empty, but never <code>null</code>.
-	 */
-	private final KeySequence getKeySequence() {
-		return textTriggerSequenceManager.getKeySequence();
-	}
-
-	/**
-	 * Returns the currently-selected fully-parameterized command.
-	 * 
-	 * @return The selected fully-parameterized command; <code>null</code> if
-	 *         none.
-	 */
-	private final ParameterizedCommand getParameterizedCommand() {
-		final int selectionIndex = comboCommand.getSelectionIndex();
-		if ((selectionIndex >= 0) && (commands != null)
-				&& (selectionIndex < commands.length)) {
-			return commands[selectionIndex];
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the identifier for the currently selected scheme.
-	 * 
-	 * @return The selected scheme; <code>null</code> if none.
-	 */
-	private final String getSchemeId() {
-		return comboScheme.getSelectionIndex() >= 0 ? (String) schemeIdsByUniqueName
-				.get(comboScheme.getText())
-				: null;
-	}
-
-	public final void init(final IWorkbench workbench) {
-		activityManager = workbench.getActivitySupport().getActivityManager();
-		bindingService = (IBindingService) workbench.getService(IBindingService.class);
-		commandService = (ICommandService) workbench.getService(ICommandService.class);
-		contextService = (IContextService) workbench.getService(IContextService.class);
-	}
-
-	/**
-	 * Checks whether the activity manager knows anything about this command
-	 * identifier. If the activity manager is currently filtering this command,
-	 * then it does not appear in the user interface.
-	 * 
-	 * @param command
-	 *            The command which should be checked against the activities;
-	 *            must not be <code>null</code>.
-	 * @return <code>true</code> if the command identifier is not filtered;
-	 *         <code>false</code> if it is
-	 */
-	private final boolean isActive(final Command command) {
-		return activityManager.getIdentifier(command.getId()).isEnabled();
-	}
-
-	/**
-	 * Logs the given exception, and opens an error dialog saying that something
-	 * went wrong. The exception is assumed to have something to do with the
-	 * preference store.
-	 * 
-	 * @param exception
-	 *            The exception to be logged; must not be <code>null</code>.
-	 */
-	private final void logPreferenceStoreException(final Throwable exception) {
-		final String message = Util.translateString(RESOURCE_BUNDLE,
-				"PreferenceStoreError.Message"); //$NON-NLS-1$
-		String exceptionMessage = exception.getMessage();
-		if (exceptionMessage == null) {
-			exceptionMessage = message;
-		}
-		final IStatus status = new Status(IStatus.ERROR,
-				WorkbenchPlugin.PI_WORKBENCH, 0, exceptionMessage, exception);
-		WorkbenchPlugin.log(message, status);
-		StatusUtil.handleStatus(message, exception, StatusManager.SHOW);
-	}
-
-	public final boolean performCancel() {
-		// Save the selected tab for future reference.
-		persistSelectedTab();
-
-		return super.performCancel();
-	}
-
-	protected final void performDefaults() {
-		// Ask the user to confirm
-		final String title = Util.translateString(RESOURCE_BUNDLE,
-				"restoreDefaultsMessageBoxText"); //$NON-NLS-1$
-		final String message = Util.translateString(RESOURCE_BUNDLE,
-				"restoreDefaultsMessageBoxMessage"); //$NON-NLS-1$
-		final boolean confirmed = MessageDialog.openConfirm(getShell(), title,
-				message);
-
-		if (confirmed) {
-			// Fix the scheme in the local changes.
-			final String defaultSchemeId = bindingService.getDefaultSchemeId();
-			final Scheme defaultScheme = localChangeManager
-					.getScheme(defaultSchemeId);
-			try {
-				localChangeManager.setActiveScheme(defaultScheme);
-			} catch (final NotDefinedException e) {
-				// At least we tried....
-			}
-
-			// Fix the bindings in the local changes.
-			final Binding[] currentBindings = localChangeManager.getBindings();
-			final int currentBindingsLength = currentBindings.length;
-			final Set trimmedBindings = new HashSet();
-			for (int i = 0; i < currentBindingsLength; i++) {
-				final Binding binding = currentBindings[i];
-				if (binding.getType() != Binding.USER) {
-					trimmedBindings.add(binding);
-				}
-			}
-			final Binding[] trimmedBindingArray = (Binding[]) trimmedBindings
-					.toArray(new Binding[trimmedBindings.size()]);
-			localChangeManager.setBindings(trimmedBindingArray);
-
-			// Apply the changes.
-			try {
-				bindingService.savePreferences(defaultScheme,
-						trimmedBindingArray);
-			} catch (final IOException e) {
-				logPreferenceStoreException(e);
-			}
-		}
-
-		setScheme(localChangeManager.getActiveScheme()); // update the scheme
-		update(true);
-		super.performDefaults();
-	}
-
-	public final boolean performOk() {
-		// Save the preferences.
-		try {
-			bindingService.savePreferences(
-					localChangeManager.getActiveScheme(), localChangeManager
-							.getBindings());
-		} catch (final IOException e) {
-			logPreferenceStoreException(e);
-		}
-
-		// Save the selected tab for future reference.
-		persistSelectedTab();
-
-		return super.performOk();
-	}
-
-	/**
-	 * Remembers the currently selected tab for when the preference page next
-	 * opens.
-	 */
-	private final void persistSelectedTab() {
-		final IPreferenceStore store = getPreferenceStore();
-		store.setValue(IPreferenceConstants.KEYS_PREFERENCE_SELECTED_TAB,
-				tabFolder.getSelectionIndex());
-	}
-
-	/**
-	 * Handles the selection event on the add button. This removes all
-	 * user-defined bindings matching the given key sequence, scheme and
-	 * context. It then adds a new binding with the current selections.
-	 */
-	private final void selectedButtonAdd() {
-		final ParameterizedCommand command = getParameterizedCommand();
-		final String contextId = getContextId();
-		final String schemeId = getSchemeId();
-		final KeySequence keySequence = getKeySequence();
-		localChangeManager.removeBindings(keySequence, schemeId, contextId,
-				null, null, null, Binding.USER);
-		localChangeManager.addBinding(new KeyBinding(keySequence, command,
-				schemeId, contextId, null, null, null, Binding.USER));
-		update(true);
-	}
-
-	/**
-	 * Provides a facility for exporting the viewable list of key bindings to a
-	 * file. Currently, this only supports exporting to a list of
-	 * comma-separated values. The user is prompted for which file should
-	 * receive our bounty.
-	 * 
-	 * @since 3.1
-	 */
-	private final void selectedButtonExport() {
-		final FileDialog fileDialog = new FileDialog(getShell(), SWT.SAVE);
-		fileDialog.setFilterExtensions(new String[] { "*.csv" }); //$NON-NLS-1$
-		fileDialog.setFilterNames(new String[] { Util.translateString(
-				RESOURCE_BUNDLE, "csvFilterName") }); //$NON-NLS-1$
-		final String filePath = fileDialog.open();
-		if (filePath == null) {
-			return;
-		}
-
-		final SafeRunnable runnable = new SafeRunnable() {
-			public final void run() throws IOException {
-				Writer fileWriter = null;
-				try {
-					fileWriter = new BufferedWriter(new FileWriter(filePath));
-					final TableItem[] items = tableBindings.getItems();
-					final int numColumns = tableBindings.getColumnCount();
-					for (int i = 0; i < items.length; i++) {
-						final TableItem item = items[i];
-						for (int j = 0; j < numColumns; j++) {
-							String buf = Util.replaceAll(item.getText(j), "\"", //$NON-NLS-1$
-									"\"\""); //$NON-NLS-1$
-							fileWriter.write("\"" + buf + "\"");  //$NON-NLS-1$//$NON-NLS-2$
-							if (j < numColumns - 1) {
-								fileWriter.write(',');
-							}
-						}
-						fileWriter.write(System.getProperty("line.separator")); //$NON-NLS-1$
-					}
-
-				} finally {
-					if (fileWriter != null) {
-						try {
-							fileWriter.close();
-						} catch (final IOException e) {
-							// At least I tried.
-						}
-					}
-
-				}
-			}
-		};
-		SafeRunner.run(runnable);
-	}
-	
-	/**
-	 * Handles the selection event on the remove button. This removes all
-	 * user-defined bindings matching the given key sequence, scheme and
-	 * context. It then adds a new deletion binding for the selected trigger
-	 * sequence.
-	 */
-	private final void selectedButtonRemove() {
-		final String contextId = getContextId();
-		final String schemeId = getSchemeId();
-		final KeySequence keySequence = getKeySequence();
-		localChangeManager.removeBindings(keySequence, schemeId, contextId,
-				null, null, null, Binding.USER);
-		localChangeManager.addBinding(new KeyBinding(keySequence, null,
-				schemeId, contextId, null, null, null, Binding.USER));
-		update(true);
-	}
-
-	/**
-	 * Handles the selection event on the restore button. This removes all
-	 * user-defined bindings matching the given key sequence, scheme and
-	 * context.
-	 */
-	private final void selectedButtonRestore() {
-		String contextId = getContextId();
-		String schemeId = getSchemeId();
-		KeySequence keySequence = getKeySequence();
-		localChangeManager.removeBindings(keySequence, schemeId, contextId,
-				null, null, null, Binding.USER);
-		update(true);
-	}
-
-	/**
-	 * Updates the local managers active scheme, and then updates the interface.
-	 */
-	private final void selectedComboScheme() {
-		final String activeSchemeId = getSchemeId();
-		final Scheme activeScheme = localChangeManager
-				.getScheme(activeSchemeId);
-		try {
-			localChangeManager.setActiveScheme(activeScheme);
-		} catch (final NotDefinedException e) {
-			// Oh, well.
-		}
-		update(true);
-	}
-
-	/**
-	 * Handles the selection event on the table containing the bindings for a
-	 * particular command. This updates the context and trigger sequence based
-	 * on the selected binding.
-	 */
-	private final void selectedTableBindingsForCommand() {
-		final int selection = tableBindingsForCommand.getSelectionIndex();
-		if ((selection >= 0)
-				&& (selection < tableBindingsForCommand.getItemCount())) {
-			final TableItem item = tableBindingsForCommand.getItem(selection);
-			final KeyBinding binding = (KeyBinding) item.getData(ITEM_DATA_KEY);
-			setContextId(binding.getContextId());
-			setKeySequence(binding.getKeySequence());
-		}
-
-		update();
-	}
-
-	/**
-	 * Handles the selection event on the table containing the bindings for a
-	 * particular trigger sequence. This updates the context based on the
-	 * selected binding.
-	 */
-	private final void selectedTableBindingsForTriggerSequence() {
-		final int selection = tableBindingsForTriggerSequence
-				.getSelectionIndex();
-		if ((selection >= 0)
-				&& (selection < tableBindingsForTriggerSequence.getItemCount())) {
-			final TableItem item = tableBindingsForTriggerSequence
-					.getItem(selection);
-			final Binding binding = (Binding) item.getData(ITEM_DATA_KEY);
-			setContextId(binding.getContextId());
-		}
-
-		update();
-	}
-
-	/**
-	 * Responds to some kind of trigger on the View tab by taking the current
-	 * selection on the key bindings table and selecting the appropriate items
-	 * in the Modify tab.
-	 * 
-	 * @since 3.1
-	 */
-	private final void selectedTableKeyBindings() {
-		final int selectionIndex = tableBindings.getSelectionIndex();
-		if (selectionIndex != -1) {
-			final TableItem item = tableBindings.getItem(selectionIndex);
-			final Binding binding = (Binding) item.getData(BINDING_KEY);
-			editBinding(binding);
-
-		} else {
-			editBinding(null);
-		}
-	}
-
-	/**
-	 * Changes the selected context name in the context combo box. The context
-	 * selected is either the one matching the identifier provided (if
-	 * possible), or the default context identifier. If no matching name can be
-	 * found in the combo, then the first item is selected.
-	 * 
-	 * @param contextId
-	 *            The context identifier for the context to be selected in the
-	 *            combo box; may be <code>null</code>.
-	 */
-	private final void setContextId(final String contextId) {
-		// Clear the current selection.
-		comboContext.clearSelection();
-		comboContext.deselectAll();
-
-		// Figure out which name to look for.
-		String contextName = (String) contextUniqueNamesById.get(contextId);
-		if (contextName == null) {
-			contextName = (String) contextUniqueNamesById
-					.get(IContextIds.CONTEXT_ID_WINDOW);
-		}
-		if (contextName == null) {
-			contextName = Util.ZERO_LENGTH_STRING;
-		}
-
-		// Scan the list for the selection we're looking for.
-		final String[] items = comboContext.getItems();
-		boolean found = false;
-		for (int i = 0; i < items.length; i++) {
-			if (contextName.equals(items[i])) {
-				comboContext.select(i);
-				found = true;
-				break;
-			}
-		}
-
-		// If we didn't find an item, then set the first item as selected.
-		if ((!found) && (items.length > 0)) {
-			comboContext.select(0);
-		}
-	}
-
-	/**
-	 * Sets the current trigger sequence.
-	 * 
-	 * @param keySequence
-	 *            The trigger sequence; may be <code>null</code>.
-	 */
-	private final void setKeySequence(final KeySequence keySequence) {
-		textTriggerSequenceManager.setKeySequence(keySequence);
-	}
-
-	/**
-	 * Changes the selection in the command combo box.
-	 * 
-	 * @param command
-	 *            The fully-parameterized command to select; may be
-	 *            <code>null</code>.
-	 */
-	private final void setParameterizedCommand(
-			final ParameterizedCommand command) {
-		int i = 0;
-		if (commands != null) {
-			final int commandCount = commands.length;
-			for (; i < commandCount; i++) {
-				if (commands[i].equals(command)) {
-					if ((comboCommand.getSelectionIndex() != i)
-							&& (i < comboCommand.getItemCount())) {
-						comboCommand.select(i);
-					}
-					break;
-				}
-			}
-			if ((i >= comboCommand.getItemCount())
-					&& (comboCommand.getSelectionIndex() != 0)) {
-				comboCommand.select(0);
-			}
-		}
-	}
-
-	/**
-	 * Sets the currently selected scheme
-	 * 
-	 * @param scheme
-	 *            The scheme to select; may be <code>null</code>.
-	 */
-	private final void setScheme(final Scheme scheme) {
-		comboScheme.clearSelection();
-		comboScheme.deselectAll();
-		final String schemeUniqueName = (String) schemeUniqueNamesById
-				.get(scheme.getId());
-
-		if (schemeUniqueName != null) {
-			final String items[] = comboScheme.getItems();
-
-			for (int i = 0; i < items.length; i++) {
-				if (schemeUniqueName.equals(items[i])) {
-					comboScheme.select(i);
-					break;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Builds the internal look-up tables before allowing the page to become
-	 * visible.
-	 */
-	public final void setVisible(final boolean visible) {
-		if (visible == true) {
-			Map contextsByName = new HashMap();
-
-			for (Iterator iterator = contextService.getDefinedContextIds()
-					.iterator(); iterator.hasNext();) {
-				Context context = contextService.getContext((String) iterator
-						.next());
-				try {
-					String name = context.getName();
-					Collection contexts = (Collection) contextsByName.get(name);
-
-					if (contexts == null) {
-						contexts = new HashSet();
-						contextsByName.put(name, contexts);
-					}
-
-					contexts.add(context);
-				} catch (final NotDefinedException e) {
-					// Do nothing.
-				}
-			}
-			
-			Map commandsByName = new HashMap();
-
-			for (Iterator iterator = commandService.getDefinedCommandIds()
-					.iterator(); iterator.hasNext();) {
-				Command command = commandService.getCommand((String) iterator
-						.next());
-				if (!isActive(command)) {
-					continue;
-				}
-
-				try {
-					String name = command.getName();
-					Collection commands = (Collection) commandsByName.get(name);
-
-					if (commands == null) {
-						commands = new HashSet();
-						commandsByName.put(name, commands);
-					}
-
-					commands.add(command);
-				} catch (NotDefinedException eNotDefined) {
-					// Do nothing
-				}
-			}
-			
-			// moved here to allow us to remove any empty categories
-			commandIdsByCategoryId = new HashMap();
-
-			for (Iterator iterator = commandService.getDefinedCommandIds()
-					.iterator(); iterator.hasNext();) {
-				final Command command = commandService
-						.getCommand((String) iterator.next());
-				if (!isActive(command)) {
-					continue;
-				}
-
-				try {
-					String categoryId = command.getCategory().getId();
-					Collection commandIds = (Collection) commandIdsByCategoryId
-							.get(categoryId);
-
-					if (commandIds == null) {
-						commandIds = new HashSet();
-						commandIdsByCategoryId.put(categoryId, commandIds);
-					}
-
-					commandIds.add(command.getId());
-				} catch (NotDefinedException eNotDefined) {
-					// Do nothing
-				}
-			}
-
-			Map categoriesByName = new HashMap();
-
-			for (Iterator iterator = commandService.getDefinedCategoryIds()
-					.iterator(); iterator.hasNext();) {
-				Category category = commandService
-						.getCategory((String) iterator.next());
-
-				try {
-					if (commandIdsByCategoryId.containsKey(category.getId())) {
-						String name = category.getName();
-						Collection categories = (Collection) categoriesByName
-								.get(name);
-
-						if (categories == null) {
-							categories = new HashSet();
-							categoriesByName.put(name, categories);
-						}
-
-						categories.add(category);
-					}
-				} catch (NotDefinedException eNotDefined) {
-					// Do nothing
-				}
-			}
-
-			Map schemesByName = new HashMap();
-
-			final Scheme[] definedSchemes = bindingService.getDefinedSchemes();
-			for (int i = 0; i < definedSchemes.length; i++) {
-				final Scheme scheme = definedSchemes[i];
-				try {
-					String name = scheme.getName();
-					Collection schemes = (Collection) schemesByName.get(name);
-
-					if (schemes == null) {
-						schemes = new HashSet();
-						schemesByName.put(name, schemes);
-					}
-
-					schemes.add(scheme);
-				} catch (final NotDefinedException e) {
-					// Do nothing.
-				}
-			}
-
-			contextIdsByUniqueName = new HashMap();
-			contextUniqueNamesById = new HashMap();
-
-			for (Iterator iterator = contextsByName.entrySet().iterator(); iterator
-					.hasNext();) {
-				Map.Entry entry = (Map.Entry) iterator.next();
-				String name = (String) entry.getKey();
-				Set contexts = (Set) entry.getValue();
-				Iterator iterator2 = contexts.iterator();
-
-				if (contexts.size() == 1) {
-					Context context = (Context) iterator2.next();
-					contextIdsByUniqueName.put(name, context.getId());
-					contextUniqueNamesById.put(context.getId(), name);
-				} else {
-					while (iterator2.hasNext()) {
-						Context context = (Context) iterator2.next();
-						String uniqueName = MessageFormat.format(
-								Util.translateString(RESOURCE_BUNDLE,
-										"uniqueName"), new Object[] { name, //$NON-NLS-1$
-										context.getId() });
-						contextIdsByUniqueName.put(uniqueName, context.getId());
-						contextUniqueNamesById.put(context.getId(), uniqueName);
-					}
-				}
-			}
-
-			categoryIdsByUniqueName = new HashMap();
-			categoryUniqueNamesById = new HashMap();
-
-			for (Iterator iterator = categoriesByName.entrySet().iterator(); iterator
-					.hasNext();) {
-				Map.Entry entry = (Map.Entry) iterator.next();
-				String name = (String) entry.getKey();
-				Set categories = (Set) entry.getValue();
-				Iterator iterator2 = categories.iterator();
-
-				if (categories.size() == 1) {
-					Category category = (Category) iterator2.next();
-					categoryIdsByUniqueName.put(name, category.getId());
-					categoryUniqueNamesById.put(category.getId(), name);
-				} else {
-					while (iterator2.hasNext()) {
-						Category category = (Category) iterator2.next();
-						String uniqueName = MessageFormat.format(
-								Util.translateString(RESOURCE_BUNDLE,
-										"uniqueName"), new Object[] { name, //$NON-NLS-1$
-										category.getId() });
-						categoryIdsByUniqueName.put(uniqueName, category
-								.getId());
-						categoryUniqueNamesById.put(category.getId(),
-								uniqueName);
-					}
-				}
-			}
-
-			schemeIdsByUniqueName = new HashMap();
-			schemeUniqueNamesById = new HashMap();
-
-			for (Iterator iterator = schemesByName.entrySet().iterator(); iterator
-					.hasNext();) {
-				Map.Entry entry = (Map.Entry) iterator.next();
-				String name = (String) entry.getKey();
-				Set keyConfigurations = (Set) entry.getValue();
-				Iterator iterator2 = keyConfigurations.iterator();
-
-				if (keyConfigurations.size() == 1) {
-					Scheme scheme = (Scheme) iterator2.next();
-					schemeIdsByUniqueName.put(name, scheme.getId());
-					schemeUniqueNamesById.put(scheme.getId(), name);
-				} else {
-					while (iterator2.hasNext()) {
-						Scheme scheme = (Scheme) iterator2.next();
-						String uniqueName = MessageFormat.format(
-								Util.translateString(RESOURCE_BUNDLE,
-										"uniqueName"), new Object[] { name, //$NON-NLS-1$
-										scheme.getId() });
-						schemeIdsByUniqueName.put(uniqueName, scheme.getId());
-						schemeUniqueNamesById.put(scheme.getId(), uniqueName);
-					}
-				}
-			}
-
-			Scheme activeScheme = bindingService.getActiveScheme();
-
-			// Make an internal copy of the binding manager, for local changes.
-			try {
-				for (int i = 0; i < definedSchemes.length; i++) {
-					final Scheme scheme = definedSchemes[i];
-					final Scheme copy = localChangeManager.getScheme(scheme
-							.getId());
-					copy.define(scheme.getName(), scheme.getDescription(),
-							scheme.getParentId());
-				}
-				localChangeManager.setActiveScheme(bindingService
-						.getActiveScheme());
-			} catch (final NotDefinedException e) {
-				throw new Error(
-						"There is a programmer error in the keys preference page"); //$NON-NLS-1$
-			}
-			localChangeManager.setLocale(bindingService.getLocale());
-			localChangeManager.setPlatform(bindingService.getPlatform());
-			localChangeManager.setBindings(bindingService.getBindings());
-
-			// Populate the category combo box.
-			List categoryNames = new ArrayList(categoryIdsByUniqueName.keySet());
-			Collections.sort(categoryNames, Collator.getInstance());
-			if (commandIdsByCategoryId.containsKey(null)) {
-				categoryNames.add(0, Util.translateString(RESOURCE_BUNDLE,
-						"other")); //$NON-NLS-1$
-			}
-			comboCategory.setItems((String[]) categoryNames
-					.toArray(new String[categoryNames.size()]));
-			comboCategory.clearSelection();
-			comboCategory.deselectAll();
-			if (commandIdsByCategoryId.containsKey(null)
-					|| !categoryNames.isEmpty()) {
-				comboCategory.select(0);
-			}
-
-			// Populate the scheme combo box.
-			List schemeNames = new ArrayList(schemeIdsByUniqueName.keySet());
-			Collections.sort(schemeNames, Collator.getInstance());
-			comboScheme.setItems((String[]) schemeNames
-					.toArray(new String[schemeNames.size()]));
-			setScheme(activeScheme);
-
-			// Update the entire page.
-			update(true);
-		}
-
-		super.setVisible(visible);
-	}
-
-	/**
-	 * Updates the entire preference page -- except the view tab -- based on
-	 * current selection sate. This preference page is written so that
-	 * everything can be made consistent simply by inspecting the state of its
-	 * widgets. A change is triggered by the user, and an event is fired. The
-	 * event triggers an update. It is possible for extra work to be done by
-	 * this page before calling update.
-	 */
-	private final void update() {
-		update(false);
-	}
-
-	/**
-	 * Updates the entire preference page based on current changes. This
-	 * preference page is written so that everything can be made consistent
-	 * simply by inspecting the state of its widgets. A change is triggered by
-	 * the user, and an event is fired. The event triggers an update. It is
-	 * possible for extra work to be done by this page before calling update.
-	 * 
-	 * @param updateViewTab
-	 *            Whether the view tab should be updated as well.
-	 */
-	private final void update(final boolean updateViewTab) {
-		if (updateViewTab) {
-			updateViewTab();
-		}
-		updateComboCommand();
-		updateComboContext();
-		final TriggerSequence triggerSequence = getKeySequence();
-		updateTableBindingsForTriggerSequence(triggerSequence);
-		final ParameterizedCommand command = getParameterizedCommand();
-		updateTableBindingsForCommand(command);
-		final String contextId = getContextId();
-		updateSelection(tableBindingsForTriggerSequence, contextId,
-				triggerSequence);
-		updateSelection(tableBindingsForCommand, contextId, triggerSequence);
-		updateLabelSchemeExtends();
-		updateLabelContextExtends();
-		updateEnabled(triggerSequence, command);
-	}
-
-	/**
-	 * Updates the contents of the commands combo box, based on the current
-	 * selection in the category combo box.
-	 */
-	private final void updateComboCommand() {
-		// Remember the current selection, so we can restore it later.
-		final ParameterizedCommand command = getParameterizedCommand();
-
-		// Figure out where command identifiers apply to the selected category.
-		final String categoryId = getCategoryId();
-		Set commandIds = (Set) commandIdsByCategoryId.get(categoryId);
-		if (commandIds==null) {
-			commandIds = Collections.EMPTY_SET;
-		}
-
-		/*
-		 * Generate an array of parameterized commands based on these
-		 * identifiers. The parameterized commands will be sorted based on their
-		 * names.
-		 */
-		List commands = new ArrayList();
-		final Iterator commandIdItr = commandIds.iterator();
-		while (commandIdItr.hasNext()) {
-			final String currentCommandId = (String) commandIdItr.next();
-			final Command currentCommand = commandService
-					.getCommand(currentCommandId);
-			try {
-				commands.addAll(ParameterizedCommand
-						.generateCombinations(currentCommand));
-			} catch (final NotDefinedException e) {
-				// It is safe to just ignore undefined commands.
-			}
-		}
-		
-		// sort the commands with a collator, so they appear in the
-		// combo correctly
-		commands = sortParameterizedCommands(commands);
-		
-		final int commandCount = commands.size();
-		this.commands = (ParameterizedCommand[]) commands
-				.toArray(new ParameterizedCommand[commandCount]);
-
-		/*
-		 * Generate an array of command names based on this array of
-		 * parameterized commands.
-		 */
-		final String[] commandNames = new String[commandCount];
-		for (int i = 0; i < commandCount; i++) {
-			try {
-				commandNames[i] = this.commands[i].getName();
-			} catch (final NotDefinedException e) {
-				throw new Error(
-						"Concurrent modification of the command's defined state"); //$NON-NLS-1$
-			}
-		}
-
-		/*
-		 * Copy the command names into the combo box, but only if they've
-		 * changed. We do this to try to avoid unnecessary calls out to the
-		 * operating system, as well as to defend against bugs in SWT's event
-		 * mechanism.
-		 */
-		final String[] currentItems = comboCommand.getItems();
-		if (!Arrays.equals(currentItems, commandNames)) {
-			comboCommand.setItems(commandNames);
-		}
-
-		// Try to restore the selection.
-		setParameterizedCommand(command);
-
-		/*
-		 * Just to be extra careful, make sure that we have a selection at this
-		 * point. This line could probably be removed, but it makes the code a
-		 * bit more robust.
-		 */
-		if ((comboCommand.getSelectionIndex() == -1) && (commandCount > 0)) {
-			comboCommand.select(0);
-		}
-	}
-	
-	/**
-	 * Sort the commands using the correct language.
-	 * @param commands the List of ParameterizedCommands
-	 * @return The sorted List
-	 */
-	private List sortParameterizedCommands(List commands) {
-		final Collator collator = Collator.getInstance();
-		
-		// this comparator is based on the ParameterizedCommands#compareTo(*)
-		// method, but uses the collator.
-		Comparator comparator = new Comparator() {
-			public int compare(Object o1, Object o2) {
-				String name1 = null;
-				String name2 = null;
-				try {
-					name1 = ((ParameterizedCommand) o1).getName();
-				} catch (NotDefinedException e) {
-					return -1;
-				}
-				try {
-					name2 = ((ParameterizedCommand) o2).getName();
-				} catch (NotDefinedException e) {
-					return 1;
-				}
-				int rc = collator.compare(name1, name2);
-				if (rc != 0) {
-					return rc;
-				}
-
-				String id1 = ((ParameterizedCommand) o1).getId();
-				String id2 = ((ParameterizedCommand) o2).getId();
-				return collator.compare(id1, id2);
-			}
-		};
-		Collections.sort(commands, comparator);
-		return commands;
-	}
-
-	/**
-	 * Updates the contents of the context combo box, as well as its selection.
-	 */
-	private final void updateComboContext() {
-		final String contextId = getContextId();
-		final Map contextIdsByName = new HashMap(contextIdsByUniqueName);
-
-		final List contextNames = new ArrayList(contextIdsByName.keySet());
-		Collections.sort(contextNames, Collator.getInstance());
-
-		comboContext.setItems((String[]) contextNames
-				.toArray(new String[contextNames.size()]));
-		setContextId(contextId);
-
-		if (comboContext.getSelectionIndex() == -1 && !contextNames.isEmpty()) {
-			comboContext.select(0);
-		}
-	}
-
-	/**
-	 * Updates the enabled state of the various widgets on this page. The
-	 * decision is based on the current trigger sequence and the currently
-	 * selected command.
-	 * 
-	 * @param triggerSequence
-	 *            The current trigger sequence; may be empty, but never
-	 *            <code>null</code>.
-	 * @param command
-	 *            The currently selected command, if any; <code>null</code>
-	 *            otherwise.
-	 */
-	private final void updateEnabled(final TriggerSequence triggerSequence,
-			final ParameterizedCommand command) {
-		final boolean commandSelected = command != null;
-		labelBindingsForCommand.setEnabled(commandSelected);
-		tableBindingsForCommand.setEnabled(commandSelected);
-
-		final boolean triggerSequenceSelected = !triggerSequence.isEmpty();
-		labelBindingsForTriggerSequence.setEnabled(triggerSequenceSelected);
-		tableBindingsForTriggerSequence.setEnabled(triggerSequenceSelected);
-
-		/*
-		 * TODO Do some better button enablement.
-		 */
-		final boolean buttonsEnabled = commandSelected
-				&& triggerSequenceSelected;
-		buttonAdd.setEnabled(buttonsEnabled);
-		buttonRemove.setEnabled(buttonsEnabled);
-		buttonRestore.setEnabled(buttonsEnabled);
-	}
-
-	/**
-	 * Updates the label next to the context that says "extends" if the context
-	 * is a child of another context. If the context is not a child of another
-	 * context, then the label is simply blank.
-	 */
-	private final void updateLabelContextExtends() {
-		final String contextId = getContextId();
-
-		if (contextId != null) {
-			final Context context = contextService.getContext(getContextId());
-			if (context.isDefined()) {
-				try {
-					final String parentId = context.getParentId();
-					if (parentId != null) {
-						final String name = (String) contextUniqueNamesById
-								.get(parentId);
-						if (name != null) {
-							labelContextExtends.setText(MessageFormat.format(
-									Util.translateString(RESOURCE_BUNDLE,
-											"extends"), //$NON-NLS-1$
-									new Object[] { name }));
-							return;
-						}
-					}
-				} catch (final NotDefinedException e) {
-					// Do nothing
-				}
-			}
-		}
-
-		labelContextExtends.setText(Util.ZERO_LENGTH_STRING);
-	}
-
-	/**
-	 * Updates the label next to the scheme that says "extends" if the scheme is
-	 * a child of another scheme. If the scheme is not a child of another
-	 * scheme, then the label is simply blank.
-	 */
-	private final void updateLabelSchemeExtends() {
-		final String schemeId = getSchemeId();
-
-		if (schemeId != null) {
-			final Scheme scheme = bindingService.getScheme(schemeId);
-			try {
-				final String name = (String) schemeUniqueNamesById.get(scheme
-						.getParentId());
-				if (name != null) {
-					labelSchemeExtends.setText(MessageFormat.format(Util
-							.translateString(RESOURCE_BUNDLE, "extends"), //$NON-NLS-1$
-							new Object[] { name }));
-					return;
-				}
-			} catch (final NotDefinedException e) {
-				// Do nothing
-			}
-		}
-
-		labelSchemeExtends.setText(Util.ZERO_LENGTH_STRING);
-	}
-
-	/**
-	 * Tries to select the correct entry in table based on the currently
-	 * selected context and trigger sequence. If the table hasn't really
-	 * changed, then this method is essentially trying to restore the selection.
-	 * If it has changed, then it is trying to select the most entry based on
-	 * the context.
-	 * 
-	 * @param table
-	 *            The table to be changed; must not be <code>null</code>.
-	 * @param contextId
-	 *            The currently selected context; should not be
-	 *            <code>null</code>.
-	 * @param triggerSequence
-	 *            The current trigger sequence; should not be <code>null</code>.
-	 */
-	private final void updateSelection(final Table table,
-			final String contextId, final TriggerSequence triggerSequence) {
-		if (table.getSelectionCount() > 1) {
-			table.deselectAll();
-		}
-
-		final TableItem[] items = table.getItems();
-		int selection = -1;
-		for (int i = 0; i < items.length; i++) {
-			final Binding binding = (Binding) items[i].getData(ITEM_DATA_KEY);
-			if ((Util.equals(contextId, binding.getContextId()))
-					&& (Util.equals(triggerSequence, binding
-							.getTriggerSequence()))) {
-				selection = i;
-				break;
-			}
-		}
-
-		if (selection != -1) {
-			table.select(selection);
-		}
-	}
-
-	/**
-	 * Updates the contents of the table showing the bindings for the currently
-	 * selected command. The selection is destroyed by this process.
-	 * 
-	 * @param parameterizedCommand
-	 *            The currently selected fully-parameterized command; may be
-	 *            <code>null</code>.
-	 */
-	private final void updateTableBindingsForCommand(
-			final ParameterizedCommand parameterizedCommand) {
-		// Clear the table of existing items.
-		tableBindingsForCommand.removeAll();
-
-		// Add each of the bindings, if the command identifier matches.
-		final Collection bindings = localChangeManager
-				.getActiveBindingsDisregardingContextFlat();
-		final Iterator bindingItr = bindings.iterator();
-		while (bindingItr.hasNext()) {
-			final Binding binding = (Binding) bindingItr.next();
-			if (!Util.equals(parameterizedCommand, binding
-					.getParameterizedCommand())) {
-				continue; // binding does not match
-			}
-
-			final TableItem tableItem = new TableItem(tableBindingsForCommand,
-					SWT.NULL);
-			tableItem.setData(ITEM_DATA_KEY, binding);
-
-			/*
-			 * Set the associated image based on the type of binding. Either it
-			 * is a user binding or a system binding.
-			 * 
-			 * TODO Identify more image types.
-			 */
-			if (binding.getType() == Binding.SYSTEM) {
-				tableItem.setImage(0, IMAGE_BLANK);
-			} else {
-				tableItem.setImage(0, IMAGE_CHANGE);
-			}
-
-			String contextName = (String) contextUniqueNamesById.get(binding
-					.getContextId());
-			if (contextName == null) {
-				contextName = Util.ZERO_LENGTH_STRING;
-			}
-			tableItem.setText(1, contextName);
-			tableItem.setText(2, binding.getTriggerSequence().format());
-		}
-	}
-
-	/**
-	 * Updates the contents of the table showing the bindings for the current
-	 * trigger sequence. The selection is destroyed by this process.
-	 * 
-	 * @param triggerSequence
-	 *            The current trigger sequence; may be <code>null</code> or
-	 *            empty.
-	 */
-	private final void updateTableBindingsForTriggerSequence(
-			final TriggerSequence triggerSequence) {
-		// Clear the table of its existing items.
-		tableBindingsForTriggerSequence.removeAll();
-
-		// Get the collection of bindings for the current command.
-		final Map activeBindings = localChangeManager
-				.getActiveBindingsDisregardingContext();
-		final Collection bindings = (Collection) activeBindings
-				.get(triggerSequence);
-		if (bindings == null) {
-			return;
-		}
-
-		// Add each of the bindings.
-		final Iterator bindingItr = bindings.iterator();
-		while (bindingItr.hasNext()) {
-			final Binding binding = (Binding) bindingItr.next();
-			final Context context = contextService.getContext(binding
-					.getContextId());
-			final ParameterizedCommand parameterizedCommand = binding
-					.getParameterizedCommand();
-			final Command command = parameterizedCommand.getCommand();
-			if ((!context.isDefined()) && (!command.isDefined())) {
-				continue;
-			}
-
-			final TableItem tableItem = new TableItem(
-					tableBindingsForTriggerSequence, SWT.NULL);
-			tableItem.setData(ITEM_DATA_KEY, binding);
-
-			/*
-			 * Set the associated image based on the type of binding. Either it
-			 * is a user binding or a system binding.
-			 * 
-			 * TODO Identify more image types.
-			 */
-			if (binding.getType() == Binding.SYSTEM) {
-				tableItem.setImage(0, IMAGE_BLANK);
-			} else {
-				tableItem.setImage(0, IMAGE_CHANGE);
-			}
-
-			try {
-				tableItem.setText(1, context.getName());
-				tableItem.setText(2, parameterizedCommand.getName());
-			} catch (final NotDefinedException e) {
-				throw new Error(
-						"Context or command became undefined on a non-UI thread while the UI thread was processing."); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Updates the contents of the view tab. This queries the command manager
-	 * for a list of key sequence binding definitions, and these definitions are
-	 * then added to the table.
-	 * 
-	 * @since 3.1
-	 */
-	private final void updateViewTab() {
-		// Clear out the existing table contents.
-		tableBindings.removeAll();
-
-		// Get a sorted list of key binding contents.
-		final List bindings = new ArrayList(localChangeManager
-				.getActiveBindingsDisregardingContextFlat());
-		Collections.sort(bindings, new Comparator() {
-			/**
-			 * Compares two instances of <code>Binding</code> based on the
-			 * current sort order.
-			 * 
-			 * @param object1
-			 *            The first object to compare; must be an instance of
-			 *            <code>Binding</code> (i.e., not <code>null</code>).
-			 * @param object2
-			 *            The second object to compare; must be an instance of
-			 *            <code>Binding</code> (i.e., not <code>null</code>).
-			 * @return The integer value representing the comparison. The
-			 *         comparison is based on the current sort order.
-			 * @since 3.1
-			 */
-			public final int compare(final Object object1, final Object object2) {
-				final Binding binding1 = (Binding) object1;
-				final Binding binding2 = (Binding) object2;
-
-				/*
-				 * Get the category name, command name, formatted key sequence
-				 * and context name for the first binding.
-				 */
-				final Command command1 = binding1.getParameterizedCommand()
-						.getCommand();
-				String categoryName1 = Util.ZERO_LENGTH_STRING;
-				String commandName1 = Util.ZERO_LENGTH_STRING;
-				try {
-					commandName1 = command1.getName();
-					categoryName1 = command1.getCategory().getName();
-				} catch (final NotDefinedException e) {
-					// Just use the zero-length string.
-				}
-				final String triggerSequence1 = binding1.getTriggerSequence()
-						.format();
-				final String contextId1 = binding1.getContextId();
-				String contextName1 = Util.ZERO_LENGTH_STRING;
-				if (contextId1 != null) {
-					final Context context = contextService
-							.getContext(contextId1);
-					try {
-						contextName1 = context.getName();
-					} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-						// Just use the zero-length string.
-					}
-				}
-
-				/*
-				 * Get the category name, command name, formatted key sequence
-				 * and context name for the first binding.
-				 */
-				final Command command2 = binding2.getParameterizedCommand()
-						.getCommand();
-				String categoryName2 = Util.ZERO_LENGTH_STRING;
-				String commandName2 = Util.ZERO_LENGTH_STRING;
-				try {
-					commandName2 = command2.getName();
-					categoryName2 = command2.getCategory().getName();
-				} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-					// Just use the zero-length string.
-				}
-				final String keySequence2 = binding2.getTriggerSequence()
-						.format();
-				final String contextId2 = binding2.getContextId();
-				String contextName2 = Util.ZERO_LENGTH_STRING;
-				if (contextId2 != null) {
-					final Context context = contextService
-							.getContext(contextId2);
-					try {
-						contextName2 = context.getName();
-					} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-						// Just use the zero-length string.
-					}
-				}
-
-				// Compare the items in the current sort order.
-				int compare = 0;
-				for (int i = 0; i < sortOrder.length; i++) {
-					switch (sortOrder[i]) {
-					case VIEW_CATEGORY_COLUMN_INDEX:
-						compare = Util.compare(categoryName1, categoryName2);
-						if (compare != 0) {
-							return compare;
-						}
-						break;
-					case VIEW_COMMAND_COLUMN_INDEX:
-						compare = Util.compare(commandName1, commandName2);
-						if (compare != 0) {
-							return compare;
-						}
-						break;
-					case VIEW_KEY_SEQUENCE_COLUMN_INDEX:
-						compare = Util.compare(triggerSequence1, keySequence2);
-						if (compare != 0) {
-							return compare;
-						}
-						break;
-					case VIEW_CONTEXT_COLUMN_INDEX:
-						compare = Util.compare(contextName1, contextName2);
-						if (compare != 0) {
-							return compare;
-						}
-						break;
-					default:
-						throw new Error(
-								"Programmer error: added another sort column without modifying the comparator."); //$NON-NLS-1$
-					}
-				}
-
-				return compare;
-			}
-
-			/**
-			 * @see Object#equals(java.lang.Object)
-			 */
-			public final boolean equals(final Object object) {
-				return super.equals(object);
-			}
-		});
-
-		// Add a table item for each item in the list.
-		final Iterator keyBindingItr = bindings.iterator();
-		while (keyBindingItr.hasNext()) {
-			final Binding binding = (Binding) keyBindingItr.next();
-
-			// Get the command and category name.
-			final ParameterizedCommand command = binding
-					.getParameterizedCommand();
-			String commandName = Util.ZERO_LENGTH_STRING;
-			String categoryName = Util.ZERO_LENGTH_STRING;
-			try {
-				commandName = command.getName();
-				categoryName = command.getCommand().getCategory().getName();
-			} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-				// Just use the zero-length string.
-			}
-
-			// Ignore items with a meaningless command name.
-			if ((commandName == null) || (commandName.length() == 0)) {
-				continue;
-			}
-
-			// Get the context name.
-			final String contextId = binding.getContextId();
-			String contextName = Util.ZERO_LENGTH_STRING;
-			if (contextId != null) {
-				final Context context = contextService.getContext(contextId);
-				try {
-					contextName = context.getName();
-				} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-					// Just use the zero-length string.
-				}
-			}
-
-			// Create the table item.
-			final TableItem item = new TableItem(tableBindings, SWT.NONE);
-			item.setText(VIEW_CATEGORY_COLUMN_INDEX, categoryName);
-			item.setText(VIEW_COMMAND_COLUMN_INDEX, commandName);
-			item.setText(VIEW_KEY_SEQUENCE_COLUMN_INDEX, binding
-					.getTriggerSequence().format());
-			item.setText(VIEW_CONTEXT_COLUMN_INDEX, contextName);
-			item.setData(BINDING_KEY, binding);
-		}
-
-		// Pack the columns.
-		for (int i = 0; i < tableBindings.getColumnCount(); i++) {
-			tableBindings.getColumn(i).pack();
-		}
-	}
-	
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.properties
deleted file mode 100644
index 9dbc671..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/KeysPreferencePage.properties
+++ /dev/null
@@ -1,62 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-advancedTab.Text=Ad&vanced
-modifyTab.Text=M&odify
-viewTab.Text=V&iew
-buttonAdd=Add
-buttonAddKey.ToolTipText=Insert Special Key
-buttonEdit=Edi&t
-buttonExport=E&xport...
-buttonRemove=&Remove
-buttonRestore=R&estore
-checkBoxMultiKeyAssist.Text=&Help Me With Multi-Stroke Keyboard Shortcuts
-checkBoxMultiKeyAssist.ToolTipText=Display a little assistant if you pause while entering a multi-stroke keyboard shortcut
-commandConflict=[conflict]
-commandNothing=[do nothing]
-commandUndefined=[undefined]
-csvFilterName=CSV Files (*.csv)
-exportErrorMessage=Failed to write to file:
-exportErrorTitle=Export Failed
-extends=(extends "{0}")
-extendsGeneral=(extends In General)
-extendsStandard=(extends Standard)
-general=In General
-groupCommand=Command
-groupKeySequence=Key Sequence
-labelAssignmentsForCommand=A&ssignments:
-labelAssignmentsForKeySequence=Assi&gnments:
-labelCategory=Ca&tegory:
-labelCommand=&Name:
-labelContext=&When:
-labelDescription=Description:
-labelScheme=S&cheme:
-labelKeySequence=Na&me:
-now=(now: {0})
-other=Other
-restoreDefaultsMessageBoxMessage=This will restore all keys to the default settings.\r\nAre you sure you want to do this?
-restoreDefaultsMessageBoxText=Restore Keyboard Defaults
-standard=Standard
-tableColumnCategory=Category
-tableColumnCategorySorted=>Category<
-tableColumnCommand=Command
-tableColumnCommandSorted=>Command<
-tableColumnContext=When
-tableColumnContextSorted=>When<
-tableColumnKeySequence=Key Sequence
-tableColumnKeySequenceSorted=>Key Sequence<
-textMultiKeyAssistTime.ErrorMessage=Delay time must be an integer value greater than zero
-textMultiKeyAssistTime.Text=Dela&y (milliseconds):
-uniqueName={0} ({1})
-was=(was: {0})
-
-PreferenceStoreError.Title=Error
-PreferenceStoreError.Message=Could not access the preference store
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/LegacySchemeListenerWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/LegacySchemeListenerWrapper.java
deleted file mode 100644
index 2b816b5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/LegacySchemeListenerWrapper.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.ISchemeListener;
-import org.eclipse.jface.bindings.SchemeEvent;
-import org.eclipse.ui.commands.IKeyConfiguration;
-import org.eclipse.ui.commands.IKeyConfigurationListener;
-import org.eclipse.ui.commands.KeyConfigurationEvent;
-
-/**
- * A wrapper for old-style listeners to be hooked on to new style schemes.
- * 
- * @since 3.1
- */
-final class LegacySchemeListenerWrapper implements ISchemeListener {
-
-	/**
-	 * The binding manager; never <code>null</code>.
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The listener that is being wrapped. This value is never <code>null</code>.
-	 */
-	private final IKeyConfigurationListener listener;
-
-	/**
-	 * Constructs a new instance of <code>SchemeListenerWrapper</code> with
-	 * the given listener.
-	 * 
-	 * @param listener
-	 *            The listener to be wrapped; must mot be <code>null</code>.
-	 */
-	LegacySchemeListenerWrapper(final IKeyConfigurationListener listener,
-			final BindingManager bindingManager) {
-		if (listener == null) {
-			throw new NullPointerException("Cannot wrap a null listener"); //$NON-NLS-1$
-		}
-
-		if (bindingManager == null) {
-			throw new NullPointerException(
-					"Cannot wrap a listener without a binding manager"); //$NON-NLS-1$
-		}
-
-		this.listener = listener;
-		this.bindingManager = bindingManager;
-	}
-
-	public final boolean equals(final Object object) {
-		if (object instanceof LegacySchemeListenerWrapper) {
-			final LegacySchemeListenerWrapper wrapper = (LegacySchemeListenerWrapper) object;
-			return listener.equals(wrapper.listener);
-		}
-
-		if (object instanceof IKeyConfigurationListener) {
-			final IKeyConfigurationListener other = (IKeyConfigurationListener) object;
-			return listener.equals(other);
-		}
-
-		return false;
-	}
-
-	public final int hashCode() {
-		return listener.hashCode();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.bindings.ISchemeListener#schemeChanged(org.eclipse.jface.bindings.SchemeEvent)
-	 */
-	public final void schemeChanged(final SchemeEvent schemeEvent) {
-		final IKeyConfiguration keyConfiguration = new SchemeLegacyWrapper(
-				schemeEvent.getScheme(), bindingManager);
-		final boolean definedChanged = schemeEvent.isDefinedChanged();
-		final boolean nameChanged = schemeEvent.isNameChanged();
-		final boolean parentIdChanged = schemeEvent.isParentIdChanged();
-
-		listener.keyConfigurationChanged(new KeyConfigurationEvent(
-				keyConfiguration, false, definedChanged, nameChanged,
-				parentIdChanged));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java
deleted file mode 100644
index d732c6a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.ResourceBundle;
-
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.CharacterKey;
-import org.eclipse.ui.keys.Key;
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.ModifierKey;
-import org.eclipse.ui.keys.SpecialKey;
-
-public final class MacKeyFormatter extends AbstractKeyFormatter {
-
-    private final static class MacModifierKeyComparator extends
-            AbstractModifierKeyComparator {
-
-        protected int rank(ModifierKey modifierKey) {
-            if (ModifierKey.SHIFT.equals(modifierKey)) {
-                return 0;
-            }
-
-            if (ModifierKey.CTRL.equals(modifierKey)) {
-                return 1;
-            }
-
-            if (ModifierKey.ALT.equals(modifierKey)) {
-                return 2;
-            }
-
-            if (ModifierKey.COMMAND.equals(modifierKey)) {
-                return 3;
-            }
-
-            return Integer.MAX_VALUE;
-        }
-    }
-
-    private final static HashMap KEY_LOOKUP = new HashMap();
-
-    private final static Comparator MODIFIER_KEY_COMPARATOR = new MacModifierKeyComparator();
-
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(MacKeyFormatter.class.getName());
-
-    static {
-        KEY_LOOKUP
-                .put(CharacterKey.BS.toString(), "\u232B");  //$NON-NLS-1$
-        KEY_LOOKUP
-                .put(CharacterKey.CR.toString(), "\u21A9");  //$NON-NLS-1$
-        KEY_LOOKUP.put(CharacterKey.DEL.toString(), "\u2326");  //$NON-NLS-1$
-        KEY_LOOKUP.put(CharacterKey.SPACE.toString(), "\u2423");  //$NON-NLS-1$
-        KEY_LOOKUP
-                .put(ModifierKey.ALT.toString(), "\u2325");  //$NON-NLS-1$
-        KEY_LOOKUP.put(ModifierKey.COMMAND.toString(), "\u2318");  //$NON-NLS-1$
-        KEY_LOOKUP.put(ModifierKey.CTRL.toString(), "\u2303");  //$NON-NLS-1$
-        KEY_LOOKUP.put(ModifierKey.SHIFT.toString(), "\u21E7");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.ARROW_DOWN.toString(), "\u2193");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.ARROW_LEFT.toString(), "\u2190");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.ARROW_RIGHT.toString(), "\u2192");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.ARROW_UP.toString(), "\u2191");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.END.toString(), "\u2198");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.NUMPAD_ENTER.toString(), "\u2324");  //$NON-NLS-1$
-        KEY_LOOKUP
-                .put(SpecialKey.HOME.toString(), "\u2196");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.PAGE_DOWN.toString(), "\u21DF");  //$NON-NLS-1$
-        KEY_LOOKUP.put(SpecialKey.PAGE_UP.toString(), "\u21DE");  //$NON-NLS-1$
-    }
-
-    public String format(Key key) {
-        String string = (String) KEY_LOOKUP.get(key.toString());
-        return string != null ? string : super.format(key);
-    }
-
-    protected String getKeyDelimiter() {
-        return Util.translateString(RESOURCE_BUNDLE, KEY_DELIMITER_KEY,
-                Util.ZERO_LENGTH_STRING, false, false);
-    }
-
-    protected String getKeyStrokeDelimiter() {
-        return Util.translateString(RESOURCE_BUNDLE, KEY_STROKE_DELIMITER_KEY,
-                KeySequence.KEY_STROKE_DELIMITER, false, false);
-    }
-
-    protected Comparator getModifierKeyComparator() {
-        return MODIFIER_KEY_COMPARATOR;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.properties
deleted file mode 100644
index e78770b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/MacKeyFormatter.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
deleted file mode 100644
index 80e09b0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.ResourceBundle;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.CharacterKey;
-import org.eclipse.ui.keys.Key;
-import org.eclipse.ui.keys.KeySequence;
-import org.eclipse.ui.keys.KeyStroke;
-import org.eclipse.ui.keys.ModifierKey;
-import org.eclipse.ui.keys.SpecialKey;
-
-/**
- * Formats the key sequences and key strokes into the native human-readable
- * format. This is typically what you would see on the menus for the given
- * platform and locale.
- * 
- * @since 3.0
- */
-public class NativeKeyFormatter extends AbstractKeyFormatter {
-
-    /**
-     * The key into the internationalization resource bundle for the delimiter
-     * to use between keys (on the Carbon platform).
-     */
-    private final static String CARBON_KEY_DELIMITER_KEY = "CARBON_KEY_DELIMITER"; //$NON-NLS-1$
-
-    /**
-     * A look-up table for the string representations of various carbon keys.
-     */
-    private final static HashMap CARBON_KEY_LOOK_UP = new HashMap();
-
-    /**
-     * A comparator to sort modifier keys in the order that they would be
-     * displayed to a user. This comparator is platform-specific.
-     */
-    private final static Comparator MODIFIER_KEY_COMPARATOR = new NativeModifierKeyComparator();
-
-    /**
-     * The resource bundle used by <code>format()</code> to translate formal
-     * string representations by locale.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE;
-
-    /**
-     * The key into the internationalization resource bundle for the delimiter
-     * to use between key strokes (on the Win32 platform).
-     */
-    private final static String WIN32_KEY_STROKE_DELIMITER_KEY = "WIN32_KEY_STROKE_DELIMITER"; //$NON-NLS-1$
-
-    static {
-        RESOURCE_BUNDLE = ResourceBundle.getBundle(NativeKeyFormatter.class
-                .getName());
-
-        CARBON_KEY_LOOK_UP.put(CharacterKey.BS.toString(), "\u232B");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(CharacterKey.CR.toString(), "\u21A9");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(CharacterKey.DEL.toString(), "\u2326");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(CharacterKey.SPACE.toString(), "\u2423");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(ModifierKey.ALT.toString(), "\u2325");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(ModifierKey.COMMAND.toString(), "\u2318");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(ModifierKey.CTRL.toString(), "\u2303");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(ModifierKey.SHIFT.toString(), "\u21E7");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.ARROW_DOWN.toString(), "\u2193");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.ARROW_LEFT.toString(), "\u2190");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.ARROW_RIGHT.toString(), "\u2192");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.ARROW_UP.toString(), "\u2191");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.END.toString(), "\u2198");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.NUMPAD_ENTER.toString(), "\u2324");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.HOME.toString(), "\u2196");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.PAGE_DOWN.toString(), "\u21DF");  //$NON-NLS-1$
-        CARBON_KEY_LOOK_UP.put(SpecialKey.PAGE_UP.toString(), "\u21DE");  //$NON-NLS-1$
-    }
-
-    /**
-     * Formats an individual key into a human readable format. This uses an
-     * internationalization resource bundle to look up the key. This does the
-     * platform-specific formatting for Carbon.
-     * 
-     * @param key
-     *            The key to format; must not be <code>null</code>.
-     * @return The key formatted as a string; should not be <code>null</code>.
-     */
-    public String format(Key key) {
-        String name = key.toString();
-
-        // TODO consider platform-specific resource bundles
-        if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$    	
-            String formattedName = (String) CARBON_KEY_LOOK_UP.get(name);
-            if (formattedName != null) {
-                return formattedName;
-            }
-        }
-
-        return super.format(key);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getKeyDelimiter()
-     */
-    protected String getKeyDelimiter() {
-        // We must do the look up every time, as our locale might change.
-        if ("carbon".equals(SWT.getPlatform())) { //$NON-NLS-1$
-            return Util.translateString(RESOURCE_BUNDLE,
-                    CARBON_KEY_DELIMITER_KEY, Util.ZERO_LENGTH_STRING, false,
-                    false);
-        } else {
-            return Util.translateString(RESOURCE_BUNDLE, KEY_DELIMITER_KEY,
-                    KeyStroke.KEY_DELIMITER, false, false);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getKeyStrokeDelimiter()
-     */
-    protected String getKeyStrokeDelimiter() {
-        // We must do the look up every time, as our locale might change.
-        if ("win32".equals(SWT.getPlatform())) { //$NON-NLS-1$
-            return Util.translateString(RESOURCE_BUNDLE,
-                    WIN32_KEY_STROKE_DELIMITER_KEY,
-                    KeySequence.KEY_STROKE_DELIMITER, false, false);
-        } else {
-            return Util.translateString(RESOURCE_BUNDLE,
-                    KEY_STROKE_DELIMITER_KEY, KeySequence.KEY_STROKE_DELIMITER,
-                    false, false);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.keys.AbstractKeyFormatter#getModifierKeyComparator()
-     */
-    protected Comparator getModifierKeyComparator() {
-        return MODIFIER_KEY_COMPARATOR;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties
deleted file mode 100644
index c997e2f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeKeyFormatter.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-KEY_DELIMITER=+
-CARBON_KEY_DELIMITER=
-WIN32_KEY_STROKE_DELIMITER=, 
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java
deleted file mode 100644
index e63a99e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NativeModifierKeyComparator.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.Comparator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.keys.ModifierKey;
-
-/**
- * A comparator that sorts the modifier keys based on the native environment.
- * Currently, this is only the windowing toolkit, but in the future it might
- * expand to include the window manager.
- * 
- * @since 3.0
- */
-class NativeModifierKeyComparator implements Comparator {
-
-    /**
-     * The sort order value to use when the modifier key is not recognized.
-     */
-    private final static int UNKNOWN_KEY = Integer.MAX_VALUE;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public int compare(Object left, Object right) {
-        ModifierKey modifierKeyLeft = (ModifierKey) left;
-        ModifierKey modifierKeyRight = (ModifierKey) right;
-        int modifierKeyLeftRank = rank(modifierKeyLeft);
-        int modifierKeyRightRank = rank(modifierKeyRight);
-
-        if (modifierKeyLeftRank != modifierKeyRightRank) {
-            return modifierKeyLeftRank - modifierKeyRightRank;
-        } else {
-            return modifierKeyLeft.compareTo(modifierKeyRight);
-        }
-    }
-
-    /**
-     * Calculates a rank for a given modifier key.
-     * 
-     * @param modifierKey
-     *            The modifier key to rank; may be <code>null</code>.
-     * @return The rank of this modifier key. This is a non-negative number
-     *         where a lower number suggests a higher rank.
-     */
-    private int rank(ModifierKey modifierKey) {
-        String platform = SWT.getPlatform();
-
-        if ("win32".equals(platform)) { //$NON-NLS-1$
-            return rankWindows(modifierKey);
-        }
-
-        if ("gtk".equals(platform)) { //$NON-NLS-1$
-            // TODO Do a look-up on window manager.
-            return rankGNOME(modifierKey);
-        }
-
-        if ("carbon".equals(platform)) { //$NON-NLS-1$
-            return rankMacOSX(modifierKey);
-        }
-
-        if ("motif".equals(platform)) { //$NON-NLS-1$
-            // TODO Do a look-up on window manager.
-            return rankGNOME(modifierKey);
-        }
-
-        return UNKNOWN_KEY;
-    }
-
-    /**
-     * Provides a ranking for the modifier key based on the modifier key
-     * ordering used in the GNOME window manager.
-     * 
-     * @param modifierKey
-     *            The modifier key to rank; may be <code>null</code>.
-     * @return The rank of this modifier key. This is a non-negative number
-     *         where a lower number suggests a higher rank.
-     */
-    private final int rankGNOME(ModifierKey modifierKey) {
-        if (ModifierKey.SHIFT.equals(modifierKey)) {
-            return 0;
-        }
-
-        if (ModifierKey.CTRL.equals(modifierKey)) {
-            return 1;
-        }
-
-        if (ModifierKey.ALT.equals(modifierKey)) {
-            return 2;
-        }
-
-        return UNKNOWN_KEY;
-
-    }
-
-    /**
-     * Provides a ranking for the modifier key based on the modifier key
-     * ordering used in the KDE window manager.
-     * 
-     * @param modifierKey
-     *            The modifier key to rank; may be <code>null</code>.
-     * @return The rank of this modifier key. This is a non-negative number
-     *         where a lower number suggests a higher rank.
-     */
-//    private final int rankKDE(ModifierKey modifierKey) {
-//        if (ModifierKey.ALT.equals(modifierKey)) {
-//            return 0;
-//        }
-//
-//        if (ModifierKey.CTRL.equals(modifierKey)) {
-//            return 1;
-//        }
-//
-//        if (ModifierKey.SHIFT.equals(modifierKey)) {
-//            return 2;
-//        }
-//
-//        return UNKNOWN_KEY;
-//    }
-
-    /**
-     * Provides a ranking for the modifier key based on the modifier key
-     * ordering used in the MacOS X operating system.
-     * 
-     * @param modifierKey
-     *            The modifier key to rank; may be <code>null</code>.
-     * @return The rank of this modifier key. This is a non-negative number
-     *         where a lower number suggests a higher rank.
-     */
-    private final int rankMacOSX(ModifierKey modifierKey) {
-        if (ModifierKey.SHIFT.equals(modifierKey)) {
-            return 0;
-        }
-
-        if (ModifierKey.CTRL.equals(modifierKey)) {
-            return 1;
-        }
-
-        if (ModifierKey.ALT.equals(modifierKey)) {
-            return 2;
-        }
-
-        if (ModifierKey.COMMAND.equals(modifierKey)) {
-            return 3;
-        }
-
-        return UNKNOWN_KEY;
-    }
-
-    /**
-     * Provides a ranking for the modifier key based on the modifier key
-     * ordering used in the Windows operating system.
-     * 
-     * @param modifierKey
-     *            The modifier key to rank; may be <code>null</code>.
-     * @return The rank of this modifier key. This is a non-negative number
-     *         where a lower number suggests a higher rank.
-     */
-    private final int rankWindows(ModifierKey modifierKey) {
-        if (ModifierKey.CTRL.equals(modifierKey)) {
-            return 0;
-        }
-
-        if (ModifierKey.ALT.equals(modifierKey)) {
-            return 1;
-        }
-
-        if (ModifierKey.SHIFT.equals(modifierKey)) {
-            return 2;
-        }
-
-        return UNKNOWN_KEY;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java
deleted file mode 100644
index cdda389..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferenceMessages.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 186522 - [KeyBindings] New Keys preference page does not resort by binding with conflicts
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Messages used in the New Keys Preference page.
- * 
- * @since 3.2
- *
- */
-public class NewKeysPreferenceMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.keys.NewKeysPreferencePage";//$NON-NLS-1$
-	
-	public static String AddBindingButton_Text;
-	public static String AddKeyButton_ToolTipText;
-	public static String FiltersButton_Text;
-	public static String ExportButton_Text;
-	public static String BindingLabel_Text;
-	public static String CommandNameColumn_Text;
-	public static String CategoryColumn_Text;
-	public static String UserColumn_Text;
-	public static String CommandNameLabel_Text;
-	public static String CommandDescriptionLabel_Text;
-	public static String DeleteSchemeButton_Text;
-	public static String ConflictsLabel_Text;
-	public static String RemoveBindingButton_Text;
-	public static String RestoreBindingButton_Text;
-	public static String SchemeLabel_Text;
-	public static String TriggerSequenceColumn_Text;
-	public static String WhenColumn_Text;
-	public static String WhenLabel_Text;
-	public static String Asterisk_Text;
-	
-	public static String GroupingCombo_Label;
-	public static String GroupingCombo_Category_Text;
-	public static String GroupingCombo_None_Text;
-	public static String GroupingCombo_When_Text;
-	
-	public static String PreferenceStoreError_Message;
-	public static String PreferenceStoreError_Title;
-	
-	public static String RestoreDefaultsMessageBoxText;
-	public static String RestoreDefaultsMessageBoxMessage;
-	
-	public static String Undefined_Command;
-	public static String Unavailable_Category;
-	public static String Undefined_Context;
-	
-	public static String KeysPreferenceFilterDialog_Title;
-	public static String ActionSetFilterCheckBox_Text;
-	public static String InternalFilterCheckBox_Text;
-	public static String UncategorizedFilterCheckBox_Text;
-	
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, NewKeysPreferenceMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java
deleted file mode 100644
index ee46c65..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java
+++ /dev/null
@@ -1,1332 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> -
- *     		Bug 186522 - [KeyBindings] New Keys preference page does not resort by binding with conflicts
- *     		Bug 226342 - [KeyBindings] Keys preference page conflict table is hard to read
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeySequenceText;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-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.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-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.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-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.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.keys.model.BindingElement;
-import org.eclipse.ui.internal.keys.model.BindingModel;
-import org.eclipse.ui.internal.keys.model.CommonModel;
-import org.eclipse.ui.internal.keys.model.ConflictModel;
-import org.eclipse.ui.internal.keys.model.ContextElement;
-import org.eclipse.ui.internal.keys.model.ContextModel;
-import org.eclipse.ui.internal.keys.model.KeyController;
-import org.eclipse.ui.internal.keys.model.ModelElement;
-import org.eclipse.ui.internal.keys.model.SchemeElement;
-import org.eclipse.ui.internal.keys.model.SchemeModel;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * <p>
- * A preference page that is capable of displaying and editing the bindings
- * between commands and user input events. These are typically things like
- * keyboard shortcuts.
- * </p>
- * <p>
- * This preference page has four general types of methods. Create methods are
- * called when the page is first made visible. They are responsible for creating
- * all of the widgets, and laying them out within the preference page. Fill
- * methods populate the contents of the widgets that contain collections of data
- * from which items can be selected. The select methods respond to selection
- * events from the user, such as a button press or a table selection. The update
- * methods update the contents of various widgets based on the current state of
- * the user interface. For example, the command name label will always try to
- * match the current select in the binding table.
- * </p>
- * <p>
- * Updated in 3.4 to work with a model backed by the real KeyBinding and
- * ParameterizedCommand objects.
- * </p>
- * 
- * @since 3.2
- */
-public class NewKeysPreferencePage extends PreferencePage implements
-		IWorkbenchPreferencePage {
-
-	private static boolean DEBUG = Policy.DEBUG_KEY_BINDINGS;
-
-	private static final String TRACING_COMPONENT = "NewKeysPref"; //$NON-NLS-1$
-
-	public final static String TAG_DIALOG_SECTION = "org.eclipse.ui.preferences.keysPreferencePage"; //$NON-NLS-1$
-
-	private static final String TAG_FILTER_ACTION_SETS = "actionSetFilter"; //$NON-NLS-1$
-
-	private static final String TAG_FILTER_INTERNAL = "internalFilter"; //$NON-NLS-1$
-
-	private static final String TAG_FILTER_UNCAT = "uncategorizedFilter"; //$NON-NLS-1$
-
-	/**
-	 * The number of items to show in the bindings table tree.
-	 */
-	private static final int ITEMS_TO_SHOW = 7;
-
-	private static final int COMMAND_NAME_COLUMN = 0;
-	private static final int KEY_SEQUENCE_COLUMN = 1;
-	private static final int CONTEXT_COLUMN = 2;
-	private static final int CATEGORY_COLUMN = 3;
-	private static final int USER_DELTA_COLUMN = 4;
-	private static int NUM_OF_COLUMNS = USER_DELTA_COLUMN + 1;
-
-	private ComboViewer fSchemeCombo;
-
-	private CategoryPatternFilter fPatternFilter;
-
-	private CategoryFilterTree fFilteredTree;
-
-	private boolean fFilterActionSetContexts = true;
-
-	private boolean fFilterInternalContexts = true;
-
-	private KeyController keyController;
-
-	private Category fDefaultCategory;
-
-	private Label commandNameValueLabel;
-
-	private Text fBindingText;
-	
-	private Text fDescriptionText;
-
-	private ComboViewer fWhenCombo;
-
-	private IBindingService fBindingService;
-
-	private KeySequenceText fKeySequenceText;
-
-	private TableViewer conflictViewer;
-
-	private ICommandImageService commandImageService;
-
-	private ICommandService commandService;
-
-	/**
-	 * A FilteredTree that provides a combo which is used to organize and
-	 * display elements in the tree according to the selected criteria.
-	 * 
-	 */
-	protected class CategoryFilterTree extends FilteredTree {
-
-		private CategoryPatternFilter filter;
-
-		/**
-		 * Constructor for PatternFilteredTree.
-		 * 
-		 * @param parent
-		 * @param treeStyle
-		 * @param filter
-		 */
-		protected CategoryFilterTree(Composite parent, int treeStyle,
-				CategoryPatternFilter filter) {
-			super(parent, treeStyle, filter);
-			this.filter = filter;
-		}
-
-		public void filterCategories(boolean b) {
-			filter.filterCategories(b);
-			textChanged();
-		}
-
-		public boolean isFilteringCategories() {
-			return filter.isFilteringCategories();
-		}
-	}
-
-	private final class BindingModelComparator extends ViewerComparator {
-		private LinkedList sortColumns = new LinkedList();
-		private boolean ascending = true;
-
-		public BindingModelComparator() {
-			for (int i = 0; i < NUM_OF_COLUMNS; i++) {
-				sortColumns.add(new Integer(i));
-			}
-		}
-
-		public int getSortColumn() {
-			return ((Integer) sortColumns.getFirst()).intValue();
-		}
-
-		public void setSortColumn(int column) {
-			if (column == getSortColumn()) {
-				return;
-			}
-			Integer sortColumn = new Integer(column);
-			sortColumns.remove(sortColumn);
-			sortColumns.addFirst(sortColumn);
-		}
-
-		/**
-		 * @return Returns the ascending.
-		 */
-		public boolean isAscending() {
-			return ascending;
-		}
-
-		/**
-		 * @param ascending
-		 *            The ascending to set.
-		 */
-		public void setAscending(boolean ascending) {
-			this.ascending = ascending;
-		}
-
-		public final int compare(final Viewer viewer, final Object a,
-				final Object b) {
-			int result = 0;
-			Iterator i = sortColumns.iterator();
-			while (i.hasNext() && result == 0) {
-				int column = ((Integer) i.next()).intValue();
-				result = compareColumn(viewer, a, b, column);
-			}
-			return ascending ? result : (-1) * result;
-		}
-
-		private int compareColumn(final Viewer viewer, final Object a,
-				final Object b, final int columnNumber) {
-			if (columnNumber == USER_DELTA_COLUMN) {
-				return sortUser(a, b);
-			}
-			IBaseLabelProvider baseLabel = ((TreeViewer) viewer)
-					.getLabelProvider();
-			if (baseLabel instanceof ITableLabelProvider) {
-				ITableLabelProvider tableProvider = (ITableLabelProvider) baseLabel;
-				String e1p = tableProvider.getColumnText(a, columnNumber);
-				String e2p = tableProvider.getColumnText(b, columnNumber);
-				if (e1p != null && e2p != null) {
-					return getComparator().compare(e1p, e2p);
-				}
-			}
-			return 0;
-		}
-
-		private int sortUser(final Object a, final Object b) {
-			int typeA = ((BindingElement) a).getUserDelta().intValue();
-			int typeB = ((BindingElement) b).getUserDelta().intValue();
-			int result = typeA - typeB;
-			return result;
-		}
-
-	}
-
-	private final class ResortColumn extends SelectionAdapter {
-		private final BindingModelComparator comparator;
-		private final TreeColumn treeColumn;
-		private final TreeViewer viewer;
-		private final int column;
-
-		private ResortColumn(BindingModelComparator comparator,
-				TreeColumn treeColumn, TreeViewer viewer, int column) {
-			this.comparator = comparator;
-			this.treeColumn = treeColumn;
-			this.viewer = viewer;
-			this.column = column;
-		}
-
-		public void widgetSelected(SelectionEvent e) {
-			if (comparator.getSortColumn() == column) {
-				comparator.setAscending(!comparator.isAscending());
-				viewer.getTree().setSortDirection(
-						comparator.isAscending() ? SWT.UP : SWT.DOWN);
-			} else {
-				viewer.getTree().setSortColumn(treeColumn);
-				comparator.setSortColumn(column);
-			}
-			try {
-				viewer.getTree().setRedraw(false);
-				viewer.refresh();
-			} finally {
-				viewer.getTree().setRedraw(true);
-			}
-		}
-	}
-
-	private static class ListLabelProvider extends LabelProvider {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-		 */
-		public String getText(Object element) {
-			return ((ModelElement) element).getName();
-		}
-	}
-
-	private class BindingElementLabelProvider extends LabelProvider implements
-			ITableLabelProvider {
-		/**
-		 * A resource manager for this preference page.
-		 */
-		private final LocalResourceManager localResourceManager = new LocalResourceManager(
-				JFaceResources.getResources());
-
-		public final void dispose() {
-			super.dispose();
-			localResourceManager.dispose();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-		 */
-		public String getText(Object element) {
-			String rc = getColumnText(element, 0);
-			if (rc == null) {
-				super.getText(element);
-			}
-			StringBuffer buf = new StringBuffer(rc);
-			for (int i = 1; i < USER_DELTA_COLUMN; i++) {
-				String text = getColumnText(element, i);
-				if (text != null) {
-					buf.append(' ');
-					buf.append(text);
-				}
-			}
-			return buf.toString();
-		}
-
-		public String getColumnText(Object element, int index) {
-			BindingElement bindingElement = ((BindingElement) element);
-			switch (index) {
-			case COMMAND_NAME_COLUMN: // name
-				return bindingElement.getName();
-			case KEY_SEQUENCE_COLUMN: // keys
-				TriggerSequence seq = bindingElement.getTrigger();
-				return seq == null ? Util.ZERO_LENGTH_STRING : seq.format();
-			case CONTEXT_COLUMN: // when
-				ModelElement context = bindingElement.getContext();
-				return context == null ? Util.ZERO_LENGTH_STRING : context
-						.getName();
-			case CATEGORY_COLUMN: // category
-				return bindingElement.getCategory();
-			case USER_DELTA_COLUMN: // user
-				if (bindingElement.getUserDelta().intValue() == Binding.USER) {
-					if (bindingElement.getConflict().equals(Boolean.TRUE)) {
-						return "CU"; //$NON-NLS-1$
-					}
-					return " U"; //$NON-NLS-1$
-				}
-				if (bindingElement.getConflict().equals(Boolean.TRUE)) {
-					return "C "; //$NON-NLS-1$
-				}
-				return "  "; //$NON-NLS-1$
-			}
-			return null;
-		}
-
-		public Image getColumnImage(Object element, int index) {
-			BindingElement be = (BindingElement) element;
-			switch (index) {
-			case COMMAND_NAME_COLUMN:
-				final String commandId = be.getId();
-				final ImageDescriptor imageDescriptor = commandImageService
-						.getImageDescriptor(commandId);
-				if (imageDescriptor == null) {
-					return null;
-				}
-				try {
-					return localResourceManager.createImage(imageDescriptor);
-				} catch (final DeviceResourceException e) {
-					final String message = "Problem retrieving image for a command '" //$NON-NLS-1$
-							+ commandId + '\'';
-					final IStatus status = new Status(IStatus.ERROR,
-							WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-					WorkbenchPlugin.log(message, status);
-				}
-				return null;
-
-//			case USER_DELTA_COLUMN:
-//				if (be.getUserDelta().intValue() == Binding.USER) {
-//					if (be.getConflict().equals(Boolean.TRUE)) {
-//						return ImageFactory.getImage("plus"); //$NON-NLS-1$
-//					}
-//					return ImageFactory.getImage("change"); //$NON-NLS-1$
-//				}
-//				if (be.getConflict().equals(Boolean.TRUE)) {
-//					return ImageFactory.getImage("minus"); //$NON-NLS-1$
-//				}
-//				return ImageFactory.getImage("blank"); //$NON-NLS-1$
-			}
-
-			return null;
-		}
-	}
-
-	class ModelContentProvider implements ITreeContentProvider {
-		public Object[] getChildren(Object parentElement) {
-			if (parentElement instanceof BindingModel) {
-				return ((BindingModel) parentElement).getBindings().toArray();
-			}
-			if (parentElement instanceof ContextModel) {
-				return ((ContextModel) parentElement).getContexts().toArray();
-			}
-			if (parentElement instanceof SchemeModel) {
-				return ((SchemeModel) parentElement).getSchemes().toArray();
-			}
-			return new Object[0];
-		}
-
-		public Object getParent(Object element) {
-			return ((ModelElement) element).getParent();
-		}
-
-		public boolean hasChildren(Object element) {
-			return (element instanceof BindingModel)
-					|| (element instanceof ContextModel)
-					|| (element instanceof SchemeModel);
-		}
-
-		public Object[] getElements(Object inputElement) {
-			return getChildren(inputElement);
-		}
-
-		public void dispose() {
-		}
-
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.KEYS_PREFERENCE_PAGE);
-		final Composite page = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout(1, false);
-		layout.marginWidth = 0;
-		page.setLayout(layout);
-
-		IDialogSettings settings = getDialogSettings();
-
-		fPatternFilter = new CategoryPatternFilter(true, commandService
-				.getCategory(null));
-		if (settings.get(TAG_FILTER_UNCAT) != null) {
-			fPatternFilter.filterCategories(settings
-					.getBoolean(TAG_FILTER_UNCAT));
-		}
-
-		createSchemeControls(page);
-		createTree(page);
-		createTreeControls(page);
-		createDataControls(page);
-		createButtonBar(page);
-
-		fill();
-
-		applyDialogFont(page);
-
-		// we want the description text control to span four lines, but because
-		// we need the dialog's font for this information, we have to set it here
-		// after the dialog font has been applied
-		GC gc = new GC(fDescriptionText);
-		gc.setFont(fDescriptionText.getFont());
-		FontMetrics metrics = gc.getFontMetrics();
-		gc.dispose();
-		int height = metrics.getHeight() * 4;
-		
-		GridData gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		gridData.horizontalSpan = 2;
-		gridData.heightHint = height;
-		fDescriptionText.setLayoutData(gridData);
-		
-		return page;
-	}
-
-	/**
-	 * Creates the button bar across the bottom of the preference page. This
-	 * button bar contains the "Advanced..." button.
-	 * 
-	 * @param parent
-	 *            The composite in which the button bar should be placed; never
-	 *            <code>null</code>.
-	 * @return The button bar composite; never <code>null</code>.
-	 */
-	private final Control createButtonBar(final Composite parent) {
-		GridLayout layout;
-		GridData gridData;
-		int widthHint;
-
-		// Create the composite to house the button bar.
-		final Composite buttonBar = new Composite(parent, SWT.NONE);
-		layout = new GridLayout(2, false);
-		layout.marginWidth = 0;
-		buttonBar.setLayout(layout);
-		gridData = new GridData();
-		gridData.horizontalAlignment = SWT.END;
-		buttonBar.setLayoutData(gridData);
-
-		// Advanced button.
-		final Button filtersButton = new Button(buttonBar, SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		filtersButton.setText(NewKeysPreferenceMessages.FiltersButton_Text);
-		gridData.widthHint = Math.max(widthHint, filtersButton.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		filtersButton.setLayoutData(gridData);
-		filtersButton.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-
-			public void widgetSelected(SelectionEvent e) {
-				KeysPreferenceFiltersDialog dialog = new KeysPreferenceFiltersDialog(
-						getShell());
-				dialog.setFilterActionSet(fFilterActionSetContexts);
-				dialog.setFilterInternal(fFilterInternalContexts);
-				dialog.setFilterUncategorized(fFilteredTree
-						.isFilteringCategories());
-				if (dialog.open() == Window.OK) {
-					fFilterActionSetContexts = dialog.getFilterActionSet();
-					fFilterInternalContexts = dialog.getFilterInternal();
-					fFilteredTree.filterCategories(dialog
-							.getFilterUncategorized());
-
-					// Apply context filters
-					keyController.filterContexts(fFilterActionSetContexts,
-							fFilterInternalContexts);
-
-					ISelection currentContextSelection = fWhenCombo
-							.getSelection();
-					fWhenCombo.setInput(keyController.getContextModel());
-					fWhenCombo.setSelection(currentContextSelection);
-				}
-			}
-		});
-
-		// Export bindings to CSV
-		final Button exportButton = new Button(buttonBar, SWT.PUSH);
-		// gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		exportButton.setText(NewKeysPreferenceMessages.ExportButton_Text);
-		gridData.widthHint = Math.max(widthHint, exportButton.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		exportButton.setLayoutData(gridData);
-		exportButton.addSelectionListener(new SelectionListener() {
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-
-			public void widgetSelected(SelectionEvent e) {
-				keyController.exportCSV(((Button) e.getSource()).getShell());
-			}
-
-		});
-
-		return buttonBar;
-	}
-
-	private final void createDataControls(final Composite parent) {
-		GridLayout layout;
-		GridData gridData;
-
-		// Creates the data area.
-		final Composite dataArea = new Composite(parent, SWT.NONE);
-		layout = new GridLayout(2, true);
-		layout.marginWidth = 0;
-		dataArea.setLayout(layout);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		dataArea.setLayoutData(gridData);
-
-		// LEFT DATA AREA
-		// Creates the left data area.
-		final Composite leftDataArea = new Composite(dataArea, SWT.NONE);
-		layout = new GridLayout(3, false);
-		leftDataArea.setLayout(layout);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.verticalAlignment = SWT.TOP;
-		gridData.horizontalAlignment = SWT.FILL;
-		leftDataArea.setLayoutData(gridData);
-
-		// The command name label.
-		final Label commandNameLabel = new Label(leftDataArea, SWT.NONE);
-		commandNameLabel
-				.setText(NewKeysPreferenceMessages.CommandNameLabel_Text);
-
-		// The current command name.
-		commandNameValueLabel = new Label(leftDataArea, SWT.NONE);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalSpan = 2;
-		gridData.horizontalAlignment = SWT.FILL;
-		commandNameValueLabel.setLayoutData(gridData);
-		
-		final Label commandDescriptionlabel = new Label(leftDataArea, SWT.LEAD);
-		commandDescriptionlabel.setText(NewKeysPreferenceMessages.CommandDescriptionLabel_Text);
-		gridData = new GridData();
-		gridData.verticalAlignment = SWT.BEGINNING;
-		commandDescriptionlabel.setLayoutData(gridData);
-		
-		fDescriptionText = new Text(leftDataArea, SWT.MULTI | SWT.WRAP
-				| SWT.BORDER | SWT.READ_ONLY);
-
-		// The binding label.
-		final Label bindingLabel = new Label(leftDataArea, SWT.NONE);
-		bindingLabel.setText(NewKeysPreferenceMessages.BindingLabel_Text);
-
-		// The key sequence entry widget.
-		fBindingText = new Text(leftDataArea, SWT.BORDER);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		gridData.widthHint = 200;
-		fBindingText.setLayoutData(gridData);
-
-		fBindingText.addFocusListener(new FocusListener() {
-			public void focusGained(FocusEvent e) {
-				fBindingService.setKeyFilterEnabled(false);
-			}
-
-			public void focusLost(FocusEvent e) {
-				fBindingService.setKeyFilterEnabled(true);
-			}
-		});
-		fBindingText.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				if (!fBindingService.isKeyFilterEnabled()) {
-					fBindingService.setKeyFilterEnabled(true);
-				}
-			}
-		});
-
-		fKeySequenceText = new KeySequenceText(fBindingText);
-		fKeySequenceText.setKeyStrokeLimit(4);
-		fKeySequenceText
-				.addPropertyChangeListener(new IPropertyChangeListener() {
-					public final void propertyChange(
-							final PropertyChangeEvent event) {
-						if (!event.getOldValue().equals(event.getNewValue())) {
-							final KeySequence keySequence = fKeySequenceText
-									.getKeySequence();
-							if (!keySequence.isComplete()) {
-								return;
-							}
-
-							BindingElement activeBinding = (BindingElement) keyController
-									.getBindingModel().getSelectedElement();
-							if (activeBinding != null) {
-								activeBinding.setTrigger(keySequence);
-							}
-							fBindingText.setSelection(fBindingText
-									.getTextLimit());
-						}
-					}
-				});
-
-		// Button for adding trapped key strokes
-		final Button addKeyButton = new Button(leftDataArea, SWT.LEFT
-				| SWT.ARROW);
-		addKeyButton
-				.setToolTipText(NewKeysPreferenceMessages.AddKeyButton_ToolTipText);
-		gridData = new GridData();
-		gridData.heightHint = fSchemeCombo.getCombo().getTextHeight();
-		addKeyButton.setLayoutData(gridData);
-
-		// Arrow buttons aren't normally added to the tab list. Let's fix that.
-		final Control[] tabStops = dataArea.getTabList();
-		final ArrayList newTabStops = new ArrayList();
-		for (int i = 0; i < tabStops.length; i++) {
-			Control tabStop = tabStops[i];
-			newTabStops.add(tabStop);
-			if (fBindingText.equals(tabStop)) {
-				newTabStops.add(addKeyButton);
-			}
-		}
-		final Control[] newTabStopArray = (Control[]) newTabStops
-				.toArray(new Control[newTabStops.size()]);
-		dataArea.setTabList(newTabStopArray);
-
-		// Construct the menu to attach to the above button.
-		final Menu addKeyMenu = new Menu(addKeyButton);
-		final Iterator trappedKeyItr = KeySequenceText.TRAPPED_KEYS.iterator();
-		while (trappedKeyItr.hasNext()) {
-			final KeyStroke trappedKey = (KeyStroke) trappedKeyItr.next();
-			final MenuItem menuItem = new MenuItem(addKeyMenu, SWT.PUSH);
-			menuItem.setText(trappedKey.format());
-			menuItem.addSelectionListener(new SelectionAdapter() {
-
-				public void widgetSelected(SelectionEvent e) {
-					fKeySequenceText.insert(trappedKey);
-					fBindingText.setFocus();
-					fBindingText.setSelection(fBindingText.getTextLimit());
-				}
-			});
-		}
-		addKeyButton.addSelectionListener(new SelectionAdapter() {
-
-			public void widgetSelected(SelectionEvent selectionEvent) {
-				Point buttonLocation = addKeyButton.getLocation();
-				buttonLocation = dataArea.toDisplay(buttonLocation.x,
-						buttonLocation.y);
-				Point buttonSize = addKeyButton.getSize();
-				addKeyMenu.setLocation(buttonLocation.x, buttonLocation.y
-						+ buttonSize.y);
-				addKeyMenu.setVisible(true);
-			}
-		});
-
-		// The when label.
-		final Label whenLabel = new Label(leftDataArea, SWT.NONE);
-		whenLabel.setText(NewKeysPreferenceMessages.WhenLabel_Text);
-
-		// The when combo.
-		fWhenCombo = new ComboViewer(leftDataArea);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		gridData.horizontalSpan = 2;
-		ViewerComparator comparator = new ViewerComparator();
-		fWhenCombo.setComparator(comparator);
-		fWhenCombo.getCombo().setVisibleItemCount(ITEMS_TO_SHOW);
-		fWhenCombo.getCombo().setLayoutData(gridData);
-		fWhenCombo.setContentProvider(new ModelContentProvider());
-		fWhenCombo.setLabelProvider(new ListLabelProvider());
-		fWhenCombo.addSelectionChangedListener(new ISelectionChangedListener() {
-			public final void selectionChanged(final SelectionChangedEvent event) {
-				ContextElement context = (ContextElement) ((IStructuredSelection) event
-						.getSelection()).getFirstElement();
-				keyController.getContextModel().setSelectedElement(context);
-			}
-		});
-		IPropertyChangeListener whenListener = new IPropertyChangeListener() {
-
-			// Sets the combo selection when a new keybinding is selected?
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == keyController.getContextModel()
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					Object newVal = event.getNewValue();
-					StructuredSelection structuredSelection = newVal == null ? null
-							: new StructuredSelection(newVal);
-					fWhenCombo.setSelection(structuredSelection, true);
-				}
-			}
-		};
-		keyController.addPropertyChangeListener(whenListener);
-
-		// RIGHT DATA AREA
-		// Creates the right data area.
-		final Composite rightDataArea = new Composite(dataArea, SWT.NONE);
-		layout = new GridLayout(1, false);
-		rightDataArea.setLayout(layout);
-		gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		rightDataArea.setLayoutData(gridData);
-
-		new Label(rightDataArea, SWT.NONE); // filler
-		
-		// The description label.
-		final Label descriptionLabel = new Label(rightDataArea, SWT.NONE);
-		descriptionLabel.setText(NewKeysPreferenceMessages.ConflictsLabel_Text);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		descriptionLabel.setLayoutData(gridData);
-
-		conflictViewer = new TableViewer(rightDataArea, SWT.SINGLE | SWT.V_SCROLL
-				| SWT.BORDER | SWT.FULL_SELECTION);
-		Table table = conflictViewer.getTable();
-		table.setHeaderVisible(true);
-		TableColumn bindingNameColumn = new TableColumn(table, SWT.LEAD);
-		bindingNameColumn.setText(NewKeysPreferenceMessages.CommandNameColumn_Text);
-		bindingNameColumn.setWidth(150);
-		TableColumn bindingContextNameColumn = new TableColumn(table, SWT.LEAD);
-		bindingContextNameColumn.setText(NewKeysPreferenceMessages.WhenColumn_Text);
-		bindingContextNameColumn.setWidth(150);
-		gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		//gridData.horizontalIndent = 10;
-		table.setLayoutData(gridData);
-		TableLayout tableLayout = new TableLayout();
-		tableLayout.addColumnData(new ColumnWeightData(60));
-		tableLayout.addColumnData(new ColumnWeightData(40));
-		table.setLayout(tableLayout);
-		conflictViewer.setContentProvider(new IStructuredContentProvider() {
-
-			public Object[] getElements(Object inputElement) {
-				if (inputElement instanceof Collection) {
-					return ((Collection) inputElement).toArray();
-				}
-				return new Object[0];
-			}
-
-			public void dispose() {
-			}
-
-			public void inputChanged(Viewer viewer, Object oldInput,
-					Object newInput) {
-			}
-		});
-		conflictViewer.setLabelProvider(new BindingElementLabelProvider() {
-			public String getColumnText(Object o, int index) {
-				BindingElement element = (BindingElement) o;
-				if (index == 0) {
-					return element.getName();
-				}
-				return element.getContext().getName();
-			}
-		});
-		conflictViewer
-				.addSelectionChangedListener(new ISelectionChangedListener() {
-
-					// When the conflict viewer's selection changes, update the
-					// model's current selection
-					public void selectionChanged(SelectionChangedEvent event) {
-						ModelElement binding = (ModelElement) ((IStructuredSelection) event
-								.getSelection()).getFirstElement();
-						BindingModel bindingModel = keyController
-								.getBindingModel();
-						if (binding != null
-								&& binding != bindingModel.getSelectedElement()) {
-							StructuredSelection selection = new StructuredSelection(
-									binding);
-
-							bindingModel.setSelectedElement(binding);
-							conflictViewer.setSelection(selection);
-
-							boolean selectionVisible = false;
-							TreeItem[] items = fFilteredTree.getViewer()
-									.getTree().getItems();
-							for (int i = 0; i < items.length; i++) {
-								if (items[i].getData().equals(binding)) {
-									selectionVisible = true;
-									break;
-								}
-							}
-
-							if (!selectionVisible) {
-								fFilteredTree.getFilterControl().setText(""); //$NON-NLS-1$
-								fFilteredTree.getViewer().refresh();
-								bindingModel.setSelectedElement(binding);
-								conflictViewer.setSelection(selection);
-							}
-						}
-					}
-				});
-
-		IPropertyChangeListener conflictsListener = new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == keyController.getConflictModel()
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					if (keyController.getConflictModel().getConflicts() != null) {
-						Object newVal = event.getNewValue();
-						StructuredSelection structuredSelection = newVal == null ? null
-								: new StructuredSelection(newVal);
-						conflictViewer.setSelection(structuredSelection, true);
-					}
-				} else if (ConflictModel.PROP_CONFLICTS.equals(event
-						.getProperty())) {
-					conflictViewer.setInput(event.getNewValue());
-				} else if (ConflictModel.PROP_CONFLICTS_ADD.equals(event
-						.getProperty())) {
-					conflictViewer.add(event.getNewValue());
-				} else if (ConflictModel.PROP_CONFLICTS_REMOVE.equals(event
-						.getProperty())) {
-					conflictViewer.remove(event.getNewValue());
-				}
-			}
-		};
-		keyController.addPropertyChangeListener(conflictsListener);
-
-		IPropertyChangeListener dataUpdateListener = new IPropertyChangeListener() {
-
-			public void propertyChange(PropertyChangeEvent event) {
-				BindingElement bindingElement = null;
-				boolean weCare = false;
-				if (event.getSource() == keyController.getBindingModel()
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					bindingElement = (BindingElement) event.getNewValue();
-					weCare = true;
-				} else if (event.getSource() == keyController.getBindingModel()
-						.getSelectedElement()
-						&& ModelElement.PROP_MODEL_OBJECT.equals(event
-								.getProperty())) {
-					bindingElement = (BindingElement) event.getSource();
-					weCare = true;
-				}
-				if (bindingElement == null && weCare) {
-					commandNameValueLabel.setText(""); //$NON-NLS-1$
-					fDescriptionText.setText(""); //$NON-NLS-1$
-					fBindingText.setText(""); //$NON-NLS-1$
-					fWhenCombo.setSelection(null);
-					fWhenCombo.getCombo().setVisible(false);
-					whenLabel.setVisible(false);
-				} else if (bindingElement != null) {
-					commandNameValueLabel.setText(bindingElement.getName());
-					String desc = bindingElement.getDescription();
-					fDescriptionText.setText(desc==null?"":desc); //$NON-NLS-1$
-					KeySequence trigger = (KeySequence) bindingElement
-							.getTrigger();
-					fKeySequenceText.setKeySequence(trigger);
-					Object context = bindingElement.getContext();
-					fWhenCombo.setSelection(context == null ? null
-							: new StructuredSelection(context));
-					fWhenCombo.getCombo().setVisible(context != null);
-					whenLabel.setVisible(context != null);
-				}
-			}
-		};
-		keyController.addPropertyChangeListener(dataUpdateListener);
-
-	}
-
-	private void createTree(Composite parent) {
-		fPatternFilter = new CategoryPatternFilter(true, fDefaultCategory);
-		fPatternFilter.filterCategories(true);
-
-		GridData gridData;
-
-		fFilteredTree = new CategoryFilterTree(parent, SWT.SINGLE
-				| SWT.FULL_SELECTION | SWT.BORDER, fPatternFilter);
-		final GridLayout layout = new GridLayout(1, false);
-		layout.marginWidth = 0;
-		fFilteredTree.setLayout(layout);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.grabExcessVerticalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		gridData.verticalAlignment = SWT.FILL;
-		fFilteredTree.setLayoutData(gridData);
-
-		final TreeViewer viewer = fFilteredTree.getViewer();
-		// Make sure the filtered tree has a height of ITEMS_TO_SHOW
-		final Tree tree = viewer.getTree();
-		tree.setHeaderVisible(true);
-		final Object layoutData = tree.getLayoutData();
-		if (layoutData instanceof GridData) {
-			gridData = (GridData) layoutData;
-			final int itemHeight = tree.getItemHeight();
-			if (itemHeight > 1) {
-				gridData.heightHint = ITEMS_TO_SHOW * itemHeight;
-			}
-		}
-
-		BindingModelComparator comparator = new BindingModelComparator();
-		viewer.setComparator(comparator);
-
-		final TreeColumn commandNameColumn = new TreeColumn(tree, SWT.LEFT,
-				COMMAND_NAME_COLUMN);
-		commandNameColumn
-				.setText(NewKeysPreferenceMessages.CommandNameColumn_Text);
-		tree.setSortColumn(commandNameColumn);
-		tree.setSortDirection(comparator.isAscending() ? SWT.UP : SWT.DOWN);
-		commandNameColumn.addSelectionListener(new ResortColumn(comparator,
-				commandNameColumn, viewer, COMMAND_NAME_COLUMN));
-
-		final TreeColumn triggerSequenceColumn = new TreeColumn(tree, SWT.LEFT,
-				KEY_SEQUENCE_COLUMN);
-		triggerSequenceColumn
-				.setText(NewKeysPreferenceMessages.TriggerSequenceColumn_Text);
-		triggerSequenceColumn.addSelectionListener(new ResortColumn(comparator,
-				triggerSequenceColumn, viewer, KEY_SEQUENCE_COLUMN));
-
-		final TreeColumn whenColumn = new TreeColumn(tree, SWT.LEFT,
-				CONTEXT_COLUMN);
-		whenColumn.setText(NewKeysPreferenceMessages.WhenColumn_Text);
-		whenColumn.addSelectionListener(new ResortColumn(comparator,
-				whenColumn, viewer, CONTEXT_COLUMN));
-
-		final TreeColumn categoryColumn = new TreeColumn(tree, SWT.LEFT,
-				CATEGORY_COLUMN);
-		categoryColumn.setText(NewKeysPreferenceMessages.CategoryColumn_Text);
-		categoryColumn.addSelectionListener(new ResortColumn(comparator,
-				categoryColumn, viewer, CATEGORY_COLUMN));
-
-		final TreeColumn userMarker = new TreeColumn(tree, SWT.LEFT,
-				USER_DELTA_COLUMN);
-		userMarker.setText(NewKeysPreferenceMessages.UserColumn_Text);
-		userMarker.addSelectionListener(new ResortColumn(comparator,
-				userMarker, viewer, USER_DELTA_COLUMN));
-
-		viewer.setContentProvider(new ModelContentProvider());
-		viewer.setLabelProvider(new BindingElementLabelProvider());
-
-		fFilteredTree.getPatternFilter().setIncludeLeadingWildcard(true);
-		final TreeColumn[] columns = viewer.getTree().getColumns();
-
-		columns[COMMAND_NAME_COLUMN].setWidth(240);
-		columns[KEY_SEQUENCE_COLUMN].setWidth(130);
-		columns[CONTEXT_COLUMN].setWidth(130);
-		columns[CATEGORY_COLUMN].setWidth(130);
-		columns[USER_DELTA_COLUMN].setWidth(50);
-
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
-			// When the viewer changes selection, update the model's current
-			// selection
-			public void selectionChanged(SelectionChangedEvent event) {
-				ModelElement binding = (ModelElement) ((IStructuredSelection) event
-						.getSelection()).getFirstElement();
-				keyController.getBindingModel().setSelectedElement(binding);
-			}
-		});
-
-		IPropertyChangeListener treeUpdateListener = new IPropertyChangeListener() {
-
-			// When the model changes a property, update the viewer
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == keyController.getBindingModel()
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					Object newVal = event.getNewValue();
-					StructuredSelection structuredSelection = newVal == null ? null
-							: new StructuredSelection(newVal);
-					viewer.setSelection(structuredSelection, true);
-				} else if (event.getSource() instanceof BindingElement
-						&& ModelElement.PROP_MODEL_OBJECT.equals(event
-								.getProperty())) {
-					viewer.update(event.getSource(), null);
-				} else if (BindingElement.PROP_CONFLICT.equals(event
-						.getProperty())) {
-					viewer.update(event.getSource(), null);
-				} else if (BindingModel.PROP_BINDINGS.equals(event
-						.getProperty())) {
-					viewer.refresh();
-				} else if (BindingModel.PROP_BINDING_ADD.equals(event
-						.getProperty())) {
-					viewer.add(keyController.getBindingModel(), event
-							.getNewValue());
-				} else if (BindingModel.PROP_BINDING_REMOVE.equals(event
-						.getProperty())) {
-					viewer.remove(event.getNewValue());
-				} else if (BindingModel.PROP_BINDING_FILTER.equals(event
-						.getProperty())) {
-					viewer.refresh();
-				}
-			}
-		};
-		keyController.addPropertyChangeListener(treeUpdateListener);
-		// as far as I got
-	}
-
-	private final Control createTreeControls(final Composite parent) {
-		GridLayout layout;
-		GridData gridData;
-		int widthHint;
-
-		// Creates controls related to the tree.
-		final Composite treeControls = new Composite(parent, SWT.NONE);
-		layout = new GridLayout(4, false);
-		layout.marginWidth = 0;
-		treeControls.setLayout(layout);
-		gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.horizontalAlignment = SWT.FILL;
-		treeControls.setLayoutData(gridData);
-
-		final Button addBindingButton = new Button(treeControls, SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		addBindingButton
-				.setText(NewKeysPreferenceMessages.AddBindingButton_Text);
-		gridData.widthHint = Math.max(widthHint, addBindingButton.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		addBindingButton.setLayoutData(gridData);
-		addBindingButton.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent event) {
-				keyController.getBindingModel().copy();
-			}
-		});
-
-		final Button removeBindingButton = new Button(treeControls, SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		removeBindingButton
-				.setText(NewKeysPreferenceMessages.RemoveBindingButton_Text);
-		gridData.widthHint = Math.max(widthHint, removeBindingButton
-				.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		removeBindingButton.setLayoutData(gridData);
-		removeBindingButton.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent event) {
-				keyController.getBindingModel().remove();
-			}
-		});
-
-		final Button restore = new Button(treeControls, SWT.PUSH);
-		gridData = new GridData();
-		widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-		restore.setText(NewKeysPreferenceMessages.RestoreBindingButton_Text);
-		gridData.widthHint = Math.max(widthHint, restore.computeSize(
-				SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
-		restore.setLayoutData(gridData);
-		restore.addSelectionListener(new SelectionAdapter() {
-			public final void widgetSelected(final SelectionEvent event) {
-				try {
-					fFilteredTree.setRedraw(false);
-					BindingModel bindingModel = keyController.getBindingModel();
-					bindingModel
-							.restoreBinding(keyController.getContextModel());
-				} finally {
-					fFilteredTree.setRedraw(true);
-				}
-			}
-		});
-
-		return treeControls;
-	}
-
-	/**
-	 * 
-	 */
-	private void fill() {
-		fSchemeCombo.setInput(keyController.getSchemeModel());
-		fSchemeCombo.setSelection(new StructuredSelection(keyController
-				.getSchemeModel().getSelectedElement()));
-
-		// Apply context filters
-		keyController.filterContexts(fFilterActionSetContexts,
-				fFilterInternalContexts);
-		fWhenCombo.setInput(keyController.getContextModel());
-
-		fFilteredTree.filterCategories(fPatternFilter.isFilteringCategories());
-		fFilteredTree.getViewer().setInput(keyController.getBindingModel());
-	}
-
-	private void createSchemeControls(Composite parent) {
-		final Composite schemeControls = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout(3, false);
-		layout.marginWidth = 0;
-		schemeControls.setLayout(layout);
-
-		final Label schemeLabel = new Label(schemeControls, SWT.NONE);
-		schemeLabel.setText(NewKeysPreferenceMessages.SchemeLabel_Text);
-
-		fSchemeCombo = new ComboViewer(schemeControls);
-		fSchemeCombo.setLabelProvider(new ListLabelProvider());
-		fSchemeCombo.setContentProvider(new ModelContentProvider());
-		GridData gridData = new GridData();
-		gridData.widthHint = 150;
-		gridData.horizontalAlignment = SWT.FILL;
-		fSchemeCombo.getCombo().setLayoutData(gridData);
-		fSchemeCombo
-				.addSelectionChangedListener(new ISelectionChangedListener() {
-					public final void selectionChanged(
-							final SelectionChangedEvent event) {
-						BusyIndicator.showWhile(fFilteredTree.getViewer()
-								.getTree().getDisplay(), new Runnable() {
-							public void run() {
-								SchemeElement scheme = (SchemeElement) ((IStructuredSelection) event
-										.getSelection()).getFirstElement();
-								keyController.getSchemeModel()
-										.setSelectedElement(scheme);
-							}
-						});
-					}
-				});
-		IPropertyChangeListener listener = new IPropertyChangeListener() {
-
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == keyController.getSchemeModel()
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					Object newVal = event.getNewValue();
-					StructuredSelection structuredSelection = newVal == null ? null
-							: new StructuredSelection(newVal);
-					fSchemeCombo.setSelection(structuredSelection, true);
-				}
-			}
-		};
-
-		keyController.addPropertyChangeListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-	 */
-	public void init(IWorkbench workbench) {
-		keyController = new KeyController();
-		keyController.init(workbench);
-
-		commandService = (ICommandService) workbench
-				.getService(ICommandService.class);
-		fDefaultCategory = commandService.getCategory(null);
-		fBindingService = (IBindingService) workbench
-				.getService(IBindingService.class);
-
-		commandImageService = (ICommandImageService) workbench
-				.getService(ICommandImageService.class);
-	}
-
-	public void applyData(Object data) {
-		if (data instanceof ModelElement) {
-			keyController.getBindingModel().setSelectedElement(
-					(ModelElement) data);
-		}
-		if (data instanceof Binding && fFilteredTree != null) {
-			BindingElement be = (BindingElement) keyController
-					.getBindingModel().getBindingToElement().get(data);
-			fFilteredTree.getViewer().setSelection(new StructuredSelection(be),
-					true);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.PreferencePage#performOk()
-	 */
-	public boolean performOk() {
-		keyController.saveBindings(fBindingService);
-		saveState(getDialogSettings());
-		return super.performOk();
-	}
-
-	/**
-	 * Save the state of the receiver.
-	 * 
-	 * @param dialogSettings
-	 */
-	public void saveState(IDialogSettings dialogSettings) {
-		if (dialogSettings == null) {
-			return;
-		}
-		dialogSettings.put(TAG_FILTER_ACTION_SETS, fFilterActionSetContexts);
-		dialogSettings.put(TAG_FILTER_INTERNAL, fFilterInternalContexts);
-		dialogSettings.put(TAG_FILTER_UNCAT, fFilteredTree
-				.isFilteringCategories());
-	}
-
-	protected IDialogSettings getDialogSettings() {
-		IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault()
-				.getDialogSettings();
-
-		IDialogSettings settings = workbenchSettings
-				.getSection(TAG_DIALOG_SECTION);
-
-		if (settings == null) {
-			settings = workbenchSettings.addNewSection(TAG_DIALOG_SECTION);
-		}
-		return settings;
-	}
-
-	protected final void performDefaults() {
-
-		// Ask the user to confirm
-		final String title = NewKeysPreferenceMessages.RestoreDefaultsMessageBoxText;
-		final String message = NewKeysPreferenceMessages.RestoreDefaultsMessageBoxMessage;
-		final boolean confirmed = MessageDialog.openConfirm(getShell(), title,
-				message);
-
-		if (confirmed) {
-			long startTime = 0L;
-			if (DEBUG) {
-				startTime = System.currentTimeMillis();
-			}
-
-			fFilteredTree.setRedraw(false);
-			BusyIndicator.showWhile(fFilteredTree.getViewer().getTree()
-					.getDisplay(), new Runnable() {
-				public void run() {
-					keyController.setDefaultBindings(fBindingService);
-				}
-			});
-			fFilteredTree.setRedraw(true);
-			if (DEBUG) {
-				final long elapsedTime = System.currentTimeMillis() - startTime;
-				Tracing.printTrace(TRACING_COMPONENT,
-						"performDefaults:model in " //$NON-NLS-1$
-								+ elapsedTime + "ms"); //$NON-NLS-1$
-			}
-		}
-
-		super.performDefaults();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties
deleted file mode 100644
index 5b48da0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.properties
+++ /dev/null
@@ -1,53 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-#     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 186522 - [KeyBindings] New Keys preference page does not resort by binding with conflicts
-###############################################################################
-AddBindingButton_Text = &Copy Command
-AddKeyButton_ToolTipText = Copy the command from a binding
-FiltersButton_Text = F&ilters...
-ExportButton_Text = E&xport...
-BindingLabel_Text = &Binding:
-CommandNameColumn_Text = Command
-CommandNameLabel_Text = &Name:
-CommandDescriptionLabel_Text = &Description:
-CategoryColumn_Text= Category
-UserColumn_Text= User
-DeleteSchemeButton_Text = D&elete
-ConflictsLabel_Text = Con&flicts:
-RemoveBindingButton_Text = &Unbind Command
-RestoreBindingButton_Text = Res&tore Command
-SchemeLabel_Text = &Scheme:
-TriggerSequenceColumn_Text = Binding
-WhenLabel_Text = &When:
-WhenColumn_Text = When
-Asterisk_Text = * in the binding column denotes a key conflict
-
-GroupingCombo_Label = Group By: 
-GroupingCombo_Category_Text = Category
-GroupingCombo_None_Text = None
-GroupingCombo_When_Text = When
-
-RestoreDefaultsMessageBoxMessage=This will restore all keys to the default settings and remove user changes.\r\nAre you sure you want to do this?
-RestoreDefaultsMessageBoxText=Restore Keyboard Defaults
-
-PreferenceStoreError_Title=Error
-PreferenceStoreError_Message=Could not access the preference store
-
-Undefined_Command=Undefined Command
-		
-Unavailable_Category=Unavailable Category
-		
-Undefined_Context=Undefined Context
-
-ActionSetFilterCheckBox_Text= Filter &action set contexts
-InternalFilterCheckBox_Text = Filter &internal contexts
-UncategorizedFilterCheckBox_Text = Filter &uncategorized commands
-KeysPreferenceFilterDialog_Title= When Context Filters
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderListener.java
deleted file mode 100644
index b18a2b9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderListener.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import java.util.List;
-
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A listener that makes sure that global key bindings are processed if no other
- * listeners do any useful work.
- * 
- * @since 3.0
- */
-public class OutOfOrderListener implements Listener {
-    /**
-     * The time at which this listener was last registered to an event. This is
-     * the <code>event.time</code> value.
-     * 
-     * @since 3.1
-     */
-    private int active = Integer.MIN_VALUE;
-
-    /**
-     * The keyboard interface to which the event should be passed if it is not
-     * eaten.
-     */
-    private final WorkbenchKeyboard keyboard;
-
-    /**
-     * Constructs a new instance of <code>OutOfOrderListener</code> with a
-     * reference to the keyboard interface which should be allowed to process
-     * uneaten events.
-     * 
-     * @param workbenchKeyboard
-     *            The keyboard interface for the workbench capable of processing
-     *            key bindings; must not be <code>null</code>.
-     */
-    public OutOfOrderListener(WorkbenchKeyboard workbenchKeyboard) {
-        keyboard = workbenchKeyboard;
-    }
-
-    /**
-     * Handles the key down event on a widget by passing uneaten events to the
-     * key binding architecture. This is used to allow special keys to reach the
-     * widget first -- before being processed by the key binding architecture.
-     * 
-     * @param event
-     *            The event to process; must not be <code>null</code>
-     */
-    public void handleEvent(Event event) {
-        // Always remove myself as a listener.
-        final Widget widget = event.widget;
-        if ((widget != null) && (!widget.isDisposed())) {
-            widget.removeListener(event.type, this);
-        }
-
-        /*
-         * If the event is still up for grabs, then re-route through the global
-         * key filter.
-         */
-        if (event.doit) {
-            List keyStrokes = WorkbenchKeyboard
-                    .generatePossibleKeyStrokes(event);
-            keyboard.processKeyEvent(keyStrokes, event);
-        }
-    }
-
-    /**
-     * Returns whether this listener has been hooked by this event already.
-     * 
-     * @param timeRegistered
-     *            The <code>event.time</code> for the current event.
-     * @return <code>true</code> if this listener is registered for a
-     *         different event; <code>false</code> otherwise.
-     * 
-     * @since 3.1
-     */
-    final boolean isActive(final int timeRegistered) {
-        return (active == timeRegistered);
-    }
-
-    /**
-     * Sets the event time at which this listener was last registered with a
-     * widget.
-     * 
-     * @param timeRegistered
-     *            The time at which this listener was last registered with a
-     *            widget.
-     * 
-     * @since 3.1
-     */
-    final void setActive(final int timeRegistered) {
-        active = timeRegistered;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderVerifyListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderVerifyListener.java
deleted file mode 100644
index 71f9d22..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderVerifyListener.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.custom.VerifyKeyListener;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A listener that makes sure that out-of-order processing occurs if no other
- * verify listeners do any work.
- * 
- * @since 3.0
- */
-class OutOfOrderVerifyListener implements VerifyKeyListener {
-
-    /**
-     * The time at which this listener was last registered to an event. This is
-     * the <code>event.time</code> value.
-     * 
-     * @since 3.1
-     */
-    private int active = Integer.MIN_VALUE;
-
-    /**
-     * The listener that will be chained in if the verify event has not been
-     * eaten yet.
-     */
-    private OutOfOrderListener chainedListener;
-
-    /**
-     * Constructs a new instance of <code>OutOfOrderVerifyListener</code> with
-     * the listener that will be chained in.
-     * 
-     * @param outOfOrderListener
-     *            The listener that should be attached to the widget if the
-     *            verify event is not eaten; must not be <code>null</code>.
-     */
-    OutOfOrderVerifyListener(OutOfOrderListener outOfOrderListener) {
-        chainedListener = outOfOrderListener;
-    }
-
-    /**
-     * Returns whether this listener has been hooked by this event already.
-     * 
-     * @param timeRegistered
-     *            The <code>event.time</code> for the current event.
-     * @return <code>true</code> if this listener is registered for a
-     *         different event; <code>false</code> otherwise.
-     * 
-     * @since 3.1
-     */
-    final boolean isActive(final int timeRegistered) {
-        return (active == timeRegistered);
-    }
-
-    /**
-     * Sets the event time at which this listener was last registered with a
-     * widget.
-     * 
-     * @param timeRegistered
-     *            The time at which this listener was last registered with a
-     *            widget.
-     * 
-     * @since 3.1
-     */
-    final void setActive(final int timeRegistered) {
-        active = timeRegistered;
-    }
-
-    /**
-     * Checks whether any other verify listeners have triggered. If not, then it
-     * sets up the top-level out-of-order listener.
-     * 
-     * @param event
-     *            The verify event after it has been processed by all other
-     *            verify listeners; must not be <code>null</code>.
-     */
-    public void verifyKey(VerifyEvent event) {
-        // Always remove the listener.
-        final Widget widget = event.widget;
-        if ((widget instanceof StyledText) && (!widget.isDisposed())) {
-            ((StyledText) widget).removeVerifyKeyListener(this);
-        }
-
-        /*
-         * If the event is still up for grabs, then re-route through the global
-         * key filter.
-         */
-        if (event.doit) {
-            widget.addListener(SWT.Modify, new CancelOnModifyListener(
-                    chainedListener));
-            widget.addListener(SWT.KeyDown, chainedListener);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/SchemeLegacyWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/SchemeLegacyWrapper.java
deleted file mode 100644
index 8db28f4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/SchemeLegacyWrapper.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.ui.commands.IKeyConfiguration;
-import org.eclipse.ui.commands.IKeyConfigurationListener;
-import org.eclipse.ui.commands.NotDefinedException;
-
-/**
- * A wrapper around the new {@link Scheme} class, providing supported for the
- * old {@link IKeyConfiguration} interface.
- * 
- * @since 3.1
- */
-public final class SchemeLegacyWrapper implements IKeyConfiguration {
-
-	/**
-	 * The binding manager managing this scheme. This value is never
-	 * <code>null</code>.
-	 */
-	private final BindingManager bindingManager;
-
-	/**
-	 * The wrapped scheme; never <code>null</code>
-	 */
-	private final Scheme scheme;
-
-	/**
-	 * Constructs a new instance of <code>SchemeWrapper</code>.
-	 * 
-	 * @param scheme
-	 *            The scheme to be wrapped; must not be <code>null</code>.
-	 * @param bindingManager
-	 *            The binding manager for this scheme; must not be
-	 *            <code>null</code>.
-	 */
-	public SchemeLegacyWrapper(final Scheme scheme,
-			final BindingManager bindingManager) {
-		if (scheme == null) {
-			throw new NullPointerException("Cannot wrap a null scheme"); //$NON-NLS-1$
-		}
-
-		if (bindingManager == null) {
-			throw new NullPointerException(
-					"Cannot wrap a scheme without a binding manager"); //$NON-NLS-1$
-		}
-
-		this.scheme = scheme;
-		this.bindingManager = bindingManager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#addKeyConfigurationListener(org.eclipse.ui.commands.IKeyConfigurationListener)
-	 */
-	public void addKeyConfigurationListener(
-			IKeyConfigurationListener keyConfigurationListener) {
-		scheme.addSchemeListener(new LegacySchemeListenerWrapper(
-				keyConfigurationListener, bindingManager));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public int compareTo(Object o) {
-		return scheme.compareTo(o);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#getDescription()
-	 */
-	public String getDescription() throws NotDefinedException {
-		try {
-			return scheme.getDescription();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#getId()
-	 */
-	public String getId() {
-		return scheme.getId();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#getName()
-	 */
-	public String getName() throws NotDefinedException {
-		try {
-			return scheme.getName();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#getParentId()
-	 */
-	public String getParentId() throws NotDefinedException {
-		try {
-			return scheme.getParentId();
-		} catch (final org.eclipse.core.commands.common.NotDefinedException e) {
-			throw new NotDefinedException(e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#isActive()
-	 */
-	public boolean isActive() {
-		return scheme.getId().equals(bindingManager.getActiveScheme().getId());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#isDefined()
-	 */
-	public boolean isDefined() {
-		return scheme.isDefined();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.commands.IKeyConfiguration#removeKeyConfigurationListener(org.eclipse.ui.commands.IKeyConfigurationListener)
-	 */
-	public void removeKeyConfigurationListener(
-			IKeyConfigurationListener keyConfigurationListener) {
-		scheme.removeSchemeListener(new LegacySchemeListenerWrapper(
-				keyConfigurationListener, bindingManager));
-
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties
deleted file mode 100644
index bad9f70..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WindowsKeyFormatter.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-KEY_STROKE_DELIMITER=, 
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
deleted file mode 100644
index bae54cb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java
+++ /dev/null
@@ -1,916 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.keys;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.CommandException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.bindings.keys.ParseException;
-import org.eclipse.jface.bindings.keys.SWTKeySupport;
-import org.eclipse.jface.internal.InternalPolicy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IWindowListener;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.contexts.ContextService;
-import org.eclipse.ui.internal.handlers.HandlerService;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * <p>
- * Controls the keyboard input into the workbench key binding architecture. This
- * allows key events to be programmatically pushed into the key binding
- * architecture -- potentially triggering the execution of commands. It is used
- * by the <code>Workbench</code> to listen for events on the
- * <code>Display</code>.
- * </p>
- * <p>
- * This class is not designed to be thread-safe. It is assumed that all access
- * to the <code>press</code> method is done through the event loop. Accessing
- * this method outside the event loop can cause corruption of internal state.
- * </p>
- * 
- * @since 3.0
- */
-public final class WorkbenchKeyboard {
-
-	/**
-	 * A display filter for handling key bindings. This filter can either be
-	 * enabled or disabled. If disabled, the filter does not process incoming
-	 * events. The filter starts enabled.
-	 * 
-	 * @since 3.1
-	 */
-	public final class KeyDownFilter implements Listener {
-
-		/**
-		 * Whether the filter is enabled.
-		 */
-		private transient boolean enabled = true;
-
-		/**
-		 * Handles an incoming traverse or key down event.
-		 * 
-		 * @param event
-		 *            The event to process; must not be <code>null</code>.
-		 */
-		public final void handleEvent(final Event event) {
-			if (!enabled) {
-				return;
-			}
-
-			if (DEBUG && DEBUG_VERBOSE) {
-				final StringBuffer buffer = new StringBuffer(
-						"Listener.handleEvent(type = "); //$NON-NLS-1$
-				switch (event.type) {
-				case SWT.KeyDown:
-					buffer.append("KeyDown"); //$NON-NLS-1$
-					break;
-				case SWT.Traverse:
-					buffer.append("Traverse"); //$NON-NLS-1$
-					break;
-				default:
-					buffer.append(event.type);
-				}
-				buffer.append(", stateMask = 0x" //$NON-NLS-1$
-						+ Integer.toHexString(event.stateMask)
-						+ ", keyCode = 0x" //$NON-NLS-1$
-						+ Integer.toHexString(event.keyCode) + ", time = " //$NON-NLS-1$
-						+ event.time + ", character = 0x" //$NON-NLS-1$
-						+ Integer.toHexString(event.character) + ")"); //$NON-NLS-1$
-				Tracing.printTrace("KEYS", buffer.toString()); //$NON-NLS-1$
-			}
-
-			filterKeySequenceBindings(event);
-		}
-
-		/**
-		 * Returns whether the key binding filter is enabled.
-		 * 
-		 * @return Whether the key filter is enabled.
-		 */
-		public final boolean isEnabled() {
-			return enabled;
-		}
-
-		/**
-		 * Sets whether this filter should be enabled or disabled.
-		 * 
-		 * @param enabled
-		 *            Whether key binding filter should be enabled.
-		 */
-		public final void setEnabled(final boolean enabled) {
-			this.enabled = enabled;
-		}
-	}
-
-	/**
-	 * Whether the keyboard should kick into debugging mode. This causes real
-	 * key bindings trapped by the key binding architecture to be reported.
-	 */
-	private static final boolean DEBUG = Policy.DEBUG_KEY_BINDINGS;
-
-	/**
-	 * Whether the keyboard should report every event received by its global
-	 * filter.
-	 */
-	private static final boolean DEBUG_VERBOSE = Policy.DEBUG_KEY_BINDINGS_VERBOSE;
-
-	/**
-	 * The time in milliseconds to wait after pressing a key before displaying
-	 * the key assist dialog.
-	 */
-	private static final int DELAY = 1000;
-
-	/** The collection of keys that are to be processed out-of-order. */
-	static KeySequence outOfOrderKeys;
-
-	/**
-	 * The translation bundle in which to look up internationalized text.
-	 */
-	private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(WorkbenchKeyboard.class.getName());
-
-	static {
-
-		try {
-			outOfOrderKeys = KeySequence.getInstance("ESC DEL"); //$NON-NLS-1$
-		} catch (ParseException e) {
-			outOfOrderKeys = KeySequence.getInstance();
-			String message = "Could not parse out-of-order keys definition: 'ESC DEL'.  Continuing with no out-of-order keys."; //$NON-NLS-1$
-			WorkbenchPlugin.log(message, new Status(IStatus.ERROR,
-					WorkbenchPlugin.PI_WORKBENCH, 0, message, e));
-		}
-	}
-
-	/**
-	 * Generates any key strokes that are near matches to the given event. The
-	 * first such key stroke is always the exactly matching key stroke.
-	 * 
-	 * @param event
-	 *            The event from which the key strokes should be generated; must
-	 *            not be <code>null</code>.
-	 * @return The set of nearly matching key strokes. It is never
-	 *         <code>null</code>, but may be empty.
-	 */
-	public static List generatePossibleKeyStrokes(Event event) {
-		final List keyStrokes = new ArrayList(3);
-
-		/*
-		 * If this is not a keyboard event, then there are no key strokes. This
-		 * can happen if we are listening to focus traversal events.
-		 */
-		if ((event.stateMask == 0) && (event.keyCode == 0)
-				&& (event.character == 0)) {
-			return keyStrokes;
-		}
-
-		// Add each unique key stroke to the list for consideration.
-		final int firstAccelerator = SWTKeySupport
-				.convertEventToUnmodifiedAccelerator(event);
-		keyStrokes.add(SWTKeySupport
-				.convertAcceleratorToKeyStroke(firstAccelerator));
-
-		// We shouldn't allow delete to undergo shift resolution.
-		if (event.character == SWT.DEL) {
-			return keyStrokes;
-		}
-
-		final int secondAccelerator = SWTKeySupport
-				.convertEventToUnshiftedModifiedAccelerator(event);
-		if (secondAccelerator != firstAccelerator) {
-			keyStrokes.add(SWTKeySupport
-					.convertAcceleratorToKeyStroke(secondAccelerator));
-		}
-
-		final int thirdAccelerator = SWTKeySupport
-				.convertEventToModifiedAccelerator(event);
-		if ((thirdAccelerator != secondAccelerator)
-				&& (thirdAccelerator != firstAccelerator)) {
-			keyStrokes.add(SWTKeySupport
-					.convertAcceleratorToKeyStroke(thirdAccelerator));
-		}
-
-		return keyStrokes;
-	}
-
-	/**
-	 * <p>
-	 * Determines whether the given event represents a key press that should be
-	 * handled as an out-of-order event. An out-of-order key press is one that
-	 * is passed to the focus control first. Only if the focus control fails to
-	 * respond will the regular key bindings get applied.
-	 * </p>
-	 * <p>
-	 * Care must be taken in choosing which keys are chosen as out-of-order
-	 * keys. This method has only been designed and test to work with the
-	 * unmodified "Escape" key stroke.
-	 * </p>
-	 * 
-	 * @param keyStrokes
-	 *            The key stroke in which to look for out-of-order keys; must
-	 *            not be <code>null</code>.
-	 * @return <code>true</code> if the key is an out-of-order key;
-	 *         <code>false</code> otherwise.
-	 */
-	private static boolean isOutOfOrderKey(List keyStrokes) {
-		// Compare to see if one of the possible key strokes is out of order.
-		final KeyStroke[] outOfOrderKeyStrokes = outOfOrderKeys.getKeyStrokes();
-		final int outOfOrderKeyStrokesLength = outOfOrderKeyStrokes.length;
-		for (int i = 0; i < outOfOrderKeyStrokesLength; i++) {
-			if (keyStrokes.contains(outOfOrderKeyStrokes[i])) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * The binding manager to be used to resolve key bindings. This member
-	 * variable will be <code>null</code> if it has not yet been initialized.
-	 */
-	private IBindingService bindingService = null;
-
-	/**
-	 * The <code>KeyAssistDialog</code> displayed to the user to assist them
-	 * in completing a multi-stroke keyboard shortcut.
-	 * 
-	 * @since 3.1
-	 */
-	private KeyAssistDialog keyAssistDialog = null;
-
-	/**
-	 * The listener that runs key events past the global key bindings.
-	 */
-	private final KeyDownFilter keyDownFilter = new KeyDownFilter();
-
-	/**
-	 * The single out-of-order listener used by the workbench. This listener is
-	 * attached to one widget at a time, and is used to catch key down events
-	 * after all processing is done. This technique is used so that some keys
-	 * will have their native behaviour happen first.
-	 * 
-	 * @since 3.1
-	 */
-	private final OutOfOrderListener outOfOrderListener = new OutOfOrderListener(
-			this);
-
-	/**
-	 * The single out-of-order verify listener used by the workbench. This
-	 * listener is attached to one</code> StyledText</code> at a time, and is
-	 * used to catch verify events after all processing is done. This technique
-	 * is used so that some keys will have their native behaviour happen first.
-	 * 
-	 * @since 3.1
-	 */
-	private final OutOfOrderVerifyListener outOfOrderVerifyListener = new OutOfOrderVerifyListener(
-			outOfOrderListener);
-
-	/**
-	 * The time at which the last timer was started. This is used to judge if a
-	 * sufficient amount of time has elapsed. This is simply the output of
-	 * <code>System.currentTimeMillis()</code>.
-	 */
-	private long startTime = Long.MAX_VALUE;
-
-	/**
-	 * The mode is the current state of the key binding architecture. In the
-	 * case of multi-stroke key bindings, this can be a partially complete key
-	 * binding.
-	 */
-	private final KeyBindingState state;
-
-	/**
-	 * The window listener responsible for maintaining internal state as the
-	 * focus moves between windows on the desktop.
-	 */
-	private final IWindowListener windowListener = new IWindowListener() {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.IWindowListener#windowActivated(org.eclipse.ui.IWorkbenchWindow)
-		 */
-		public void windowActivated(IWorkbenchWindow window) {
-			checkActiveWindow(window);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.IWindowListener#windowClosed(org.eclipse.ui.IWorkbenchWindow)
-		 */
-		public void windowClosed(IWorkbenchWindow window) {
-			// Do nothing.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.IWindowListener#windowDeactivated(org.eclipse.ui.IWorkbenchWindow)
-		 */
-		public void windowDeactivated(IWorkbenchWindow window) {
-			// Do nothing
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.IWindowListener#windowOpened(org.eclipse.ui.IWorkbenchWindow)
-		 */
-		public void windowOpened(IWorkbenchWindow window) {
-			// Do nothing.
-		}
-	};
-
-	/**
-	 * The workbench on which this keyboard interface should act.
-	 */
-	private final IWorkbench workbench;
-
-	/**
-	 * Constructs a new instance of <code>WorkbenchKeyboard</code> associated
-	 * with a particular workbench.
-	 * 
-	 * @param associatedWorkbench
-	 *            The workbench with which this keyboard interface should work;
-	 *            must not be <code>null</code>.
-	 * @since 3.1
-	 */
-	public WorkbenchKeyboard(Workbench associatedWorkbench) {
-		workbench = associatedWorkbench;
-		state = new KeyBindingState(associatedWorkbench);
-		workbench.addWindowListener(windowListener);
-	}
-
-	/**
-	 * Verifies that the active workbench window is the same as the workbench
-	 * window associated with the state. This is used to verify that the state
-	 * is properly reset as focus changes. When they are not the same, the state
-	 * is reset and associated with the newly activated window.
-	 * 
-	 * @param window
-	 *            The activated window; must not be <code>null</code>.
-	 */
-	private void checkActiveWindow(IWorkbenchWindow window) {
-		if (!window.equals(state.getAssociatedWindow())) {
-			resetState(true);
-			state.setAssociatedWindow(window);
-		}
-	}
-
-	/**
-	 * Closes the multi-stroke key binding assistant shell, if it exists and
-	 * isn't already disposed.
-	 */
-	private void closeMultiKeyAssistShell() {
-		if (keyAssistDialog != null) {
-			final Shell shell = keyAssistDialog.getShell();
-			if ((shell != null) && (!shell.isDisposed()) && (shell.isVisible())) {
-				keyAssistDialog.close(true);
-			}
-		}
-	}
-
-	/**
-	 * Performs the actual execution of the command by looking up the current
-	 * handler from the command manager. If there is a handler and it is
-	 * enabled, then it tries the actual execution. Execution failures are
-	 * logged. When this method completes, the key binding state is reset.
-	 * 
-	 * @param binding
-	 *            The binding that should be executed; should not be
-	 *            <code>null</code>.
-	 * @param trigger
-	 *            The triggering event; may be <code>null</code>.
-	 * @return <code>true</code> if there was a handler; <code>false</code>
-	 *         otherwise.
-	 * @throws CommandException
-	 *             if the handler does not complete execution for some reason.
-	 *             It is up to the caller of this method to decide whether to
-	 *             log the message, display a dialog, or ignore this exception
-	 *             entirely.
-	 */
-	final boolean executeCommand(final Binding binding, final Event trigger)
-			throws CommandException {
-		final ParameterizedCommand parameterizedCommand = binding
-				.getParameterizedCommand();
-
-		if (DEBUG) {
-			Tracing.printTrace("KEYS", //$NON-NLS-1$
-					"WorkbenchKeyboard.executeCommand(commandId = '" //$NON-NLS-1$
-							+ parameterizedCommand.getId() + "', parameters = " //$NON-NLS-1$
-							+ parameterizedCommand.getParameterMap() + ')');
-		}
-
-		// Reset the key binding state (close window, clear status line, etc.)
-		resetState(false);
-
-		// Dispatch to the handler.
-		final IHandlerService handlerService = (IHandlerService) workbench
-				.getService(IHandlerService.class);
-		final Command command = parameterizedCommand.getCommand();
-		final boolean commandDefined = command.isDefined();
-		final boolean commandHandled = command.isHandled();
-		command.setEnabled(handlerService.getCurrentState());
-		final boolean commandEnabled = command.isEnabled();
-
-		if (DEBUG && DEBUG_VERBOSE) {
-			if (!commandDefined) {
-				Tracing.printTrace("KEYS", "    not defined"); //$NON-NLS-1$ //$NON-NLS-2$
-			} else if (!commandHandled) {
-				Tracing.printTrace("KEYS", "    not handled"); //$NON-NLS-1$ //$NON-NLS-2$
-			} else if (!commandEnabled) {
-				Tracing.printTrace("KEYS", "    not enabled"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		try {
-			handlerService.executeCommand(parameterizedCommand, trigger);
-		} catch (final NotDefinedException e) {
-			// The command is not defined. Forwarded to the IExecutionListener.
-		} catch (final NotEnabledException e) {
-			// The command is not enabled. Forwarded to the IExecutionListener.
-		} catch (final NotHandledException e) {
-			// There is no handler. Forwarded to the IExecutionListener.
-		}
-
-		/*
-		 * Now that the command has executed (and had the opportunity to use the
-		 * remembered state of the dialog), it is safe to delete that
-		 * information.
-		 */
-		if (keyAssistDialog != null) {
-			keyAssistDialog.clearRememberedState();
-		}
-
-		return (commandDefined && commandHandled);
-	}
-
-	/**
-	 * <p>
-	 * Launches the command matching a the typed key. This filter an incoming
-	 * <code>SWT.KeyDown</code> or <code>SWT.Traverse</code> event at the
-	 * level of the display (i.e., before it reaches the widgets). It does not
-	 * allow processing in a dialog or if the key strokes does not contain a
-	 * natural key.
-	 * </p>
-	 * <p>
-	 * Some key strokes (defined as a property) are declared as out-of-order
-	 * keys. This means that they are processed by the widget <em>first</em>.
-	 * Only if the other widget listeners do no useful work does it try to
-	 * process key bindings. For example, "ESC" can cancel the current widget
-	 * action, if there is one, without triggering key bindings.
-	 * </p>
-	 * 
-	 * @param event
-	 *            The incoming event; must not be <code>null</code>.
-	 */
-	private void filterKeySequenceBindings(Event event) {
-		/*
-		 * Only process key strokes containing natural keys to trigger key
-		 * bindings.
-		 */
-		if ((event.keyCode & SWT.MODIFIER_MASK) != 0) {
-			return;
-		}
-
-		// Allow special key out-of-order processing.
-		List keyStrokes = generatePossibleKeyStrokes(event);
-		if (isOutOfOrderKey(keyStrokes)) {
-			Widget widget = event.widget;
-			if ((event.character == SWT.DEL)
-					&& ((event.stateMask & SWT.MODIFIER_MASK) == 0)
-					&& ((widget instanceof Text) || (widget instanceof Combo)
-							|| (widget instanceof Browser))) {
-				/*
-				 * KLUDGE. Bug 54654. The text widget relies on no listener
-				 * doing any work before dispatching the native delete event.
-				 * This does not work, as we are restricted to listeners.
-				 * However, it can be said that pressing a delete key in a text
-				 * widget will never use key bindings. This can be shown be
-				 * considering how the event dispatching is expected to work in
-				 * a text widget. So, we should do nothing ... ever.
-				 */
-				return;
-
-			} else if (widget instanceof StyledText) {
-
-				if (event.type == SWT.KeyDown) {
-					/*
-					 * KLUDGE. Some people try to do useful work in verify
-					 * listeners. The way verify listeners work in SWT, we need
-					 * to verify the key as well; otherwise, we can't detect
-					 * that useful work has been done.
-					 */
-					if (!outOfOrderVerifyListener.isActive(event.time)) {
-						((StyledText) widget)
-								.addVerifyKeyListener(outOfOrderVerifyListener);
-						outOfOrderVerifyListener.setActive(event.time);
-					}
-				}
-
-			} else {
-				if (!outOfOrderListener.isActive(event.time)) {
-					widget.addListener(SWT.KeyDown, outOfOrderListener);
-					outOfOrderListener.setActive(event.time);
-				}
-
-			}
-
-			/*
-			 * Otherwise, we count on a key down arriving eventually. Expecting
-			 * out of order handling on Ctrl+Tab, for example, is a bad idea
-			 * (stick to keys that are not window traversal keys).
-			 */
-
-		} else {
-			processKeyEvent(keyStrokes, event);
-
-		}
-	}
-
-	/**
-	 * An accessor for the filter that processes key down and traverse events on
-	 * the display.
-	 * 
-	 * @return The global key down and traverse filter; never <code>null</code>.
-	 */
-	public KeyDownFilter getKeyDownFilter() {
-		return keyDownFilter;
-	}
-
-	/**
-	 * Determines whether the key sequence is a perfect match for any command.
-	 * If there is a match, then the corresponding command identifier is
-	 * returned.
-	 * 
-	 * @param keySequence
-	 *            The key sequence to check for a match; must never be
-	 *            <code>null</code>.
-	 * @return The binding for the perfectly matching command; <code>null</code>
-	 *         if no command matches.
-	 */
-	private Binding getPerfectMatch(KeySequence keySequence) {
-		if (bindingService == null) {
-			bindingService = (IBindingService) workbench
-					.getService(IBindingService.class);
-		}
-		return bindingService.getPerfectMatch(keySequence);
-	}
-
-	final KeySequence getBuffer() {
-		return state.getCurrentSequence();
-	}
-
-	/**
-	 * Changes the key binding state to the given value. This should be an
-	 * incremental change, but there are no checks to guarantee this is so. It
-	 * also sets up a <code>Shell</code> to be displayed after one second has
-	 * elapsed. This shell will show the user the possible completions for what
-	 * they have typed.
-	 * 
-	 * @param sequence
-	 *            The new key sequence for the state; should not be
-	 *            <code>null</code>.
-	 */
-	private void incrementState(KeySequence sequence) {
-		// Record the starting time.
-		startTime = System.currentTimeMillis();
-		final long myStartTime = startTime;
-
-		// Update the state.
-		state.setCurrentSequence(sequence);
-		state.setAssociatedWindow(workbench.getActiveWorkbenchWindow());
-
-		// After some time, open a shell displaying the possible completions.
-		final Display display = workbench.getDisplay();
-		display.timerExec(DELAY, new Runnable() {
-			public void run() {
-				if ((System.currentTimeMillis() > (myStartTime - DELAY))
-						&& (startTime == myStartTime)) {
-					openMultiKeyAssistShell();
-				}
-			}
-		});
-	}
-
-	/**
-	 * Determines whether the key sequence partially matches on of the active
-	 * key bindings.
-	 * 
-	 * @param keySequence
-	 *            The key sequence to check for a partial match; must never be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if there is a partial match;
-	 *         <code>false</code> otherwise.
-	 */
-	private boolean isPartialMatch(KeySequence keySequence) {
-		if (bindingService == null) {
-			bindingService = (IBindingService) workbench
-					.getService(IBindingService.class);
-		}
-		return bindingService.isPartialMatch(keySequence);
-	}
-
-	/**
-	 * Determines whether the key sequence perfectly matches on of the active
-	 * key bindings.
-	 * 
-	 * @param keySequence
-	 *            The key sequence to check for a perfect match; must never be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if there is a perfect match;
-	 *         <code>false</code> otherwise.
-	 */
-	private boolean isPerfectMatch(KeySequence keySequence) {
-		if (bindingService == null) {
-			bindingService = (IBindingService) workbench
-					.getService(IBindingService.class);
-		}
-		return bindingService.isPerfectMatch(keySequence);
-	}
-
-	/**
-	 * Logs the given exception, and opens a dialog explaining the failure.
-	 * 
-	 * @param e
-	 *            The exception to log; must not be <code>null</code>.
-	 * @param command
-	 *            The parameterized command for the binding to execute; may be
-	 *            <code>null</code>.
-	 */
-	final void logException(final CommandException e,
-			final ParameterizedCommand command) {
-		Throwable nestedException = e.getCause();
-		Throwable exception = (nestedException == null) ? e : nestedException;
-
-		// If we can, include the command name in the exception.
-		String message = null;
-		if (command != null) {
-			try {
-				final String name = command.getCommand().getName();
-				message = MessageFormat.format(Util.translateString(
-						RESOURCE_BUNDLE, "ExecutionError.MessageCommandName"), //$NON-NLS-1$
-						new Object[] { name });
-			} catch (final NotDefinedException nde) {
-				// Fall through (message == null)
-			}
-		}
-		if (message == null) {
-			message = Util.translateString(RESOURCE_BUNDLE,
-					"ExecutionError.Message"); //$NON-NLS-1$
-		}
-
-		String exceptionMessage = exception.getMessage();
-		if (exceptionMessage == null) {
-			exceptionMessage = exception.getClass().getName();
-		}
-		IStatus status = new Status(IStatus.ERROR,
-				WorkbenchPlugin.PI_WORKBENCH, 0, exceptionMessage, exception);
-		WorkbenchPlugin.log(message, status);
-		StatusUtil.handleStatus(message, exception, StatusManager.SHOW);
-	}
-
-	/**
-	 * Opens a <code>KeyAssistDialog</code> to assist the user in completing a
-	 * multi-stroke key binding. This method lazily creates a
-	 * <code>keyAssistDialog</code> and shares it between executions.
-	 */
-	public final void openMultiKeyAssistShell() {
-		if (keyAssistDialog == null) {
-			keyAssistDialog = new KeyAssistDialog(workbench, this, state);
-		}
-		if (keyAssistDialog.getShell() == null) {
-			keyAssistDialog.setParentShell(Util.getShellToParentOn());
-		}
-		keyAssistDialog.open();
-	}
-
-	/**
-	 * Opens the key assist dialog to offer the user the choice of a binding to
-	 * pick from the collection of bindings.
-	 * 
-	 * @param bindings
-	 *            a collection of Binding objects
-	 * @since 3.3
-	 */
-	public final void openKeyAssistShell(final Collection bindings) {
-		if (keyAssistDialog == null) {
-			keyAssistDialog = new KeyAssistDialog(workbench,
-					WorkbenchKeyboard.this, state);
-		}
-		if (keyAssistDialog.getShell() == null) {
-			keyAssistDialog.setParentShell(Util.getShellToParentOn());
-		}
-		keyAssistDialog.open(bindings);
-	}
-
-	/**
-	 * Processes a key press with respect to the key binding architecture. This
-	 * updates the mode of the command manager, and runs the current handler for
-	 * the command that matches the key sequence, if any.
-	 * 
-	 * @param potentialKeyStrokes
-	 *            The key strokes that could potentially match, in the order of
-	 *            priority; must not be <code>null</code>.
-	 * @param event
-	 *            The event; may be <code>null</code>.
-	 * @return <code>true</code> if a command is executed; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean press(List potentialKeyStrokes, Event event) {
-		if (DEBUG && DEBUG_VERBOSE) {
-			Tracing.printTrace("KEYS", //$NON-NLS-1$
-					"WorkbenchKeyboard.press(potentialKeyStrokes = " //$NON-NLS-1$
-							+ potentialKeyStrokes + ')');
-		}
-
-		/*
-		 * KLUDGE. This works around a couple of specific problems in how GTK+
-		 * works. The first problem is the ordering of key press events with
-		 * respect to shell activation events. If on the event thread a dialog
-		 * is about to open, and the user presses a key, the key press event
-		 * will arrive before the shell activation event. From the perspective
-		 * of Eclipse, this means that things like two "Open Type" dialogs can
-		 * appear if "Ctrl+Shift+T" is pressed twice rapidly. For more
-		 * information, please see Bug 95792. The second problem is simply a bug
-		 * in GTK+, for which an incomplete workaround currently exists in SWT.
-		 * This makes shell activation events unreliable. Please see Bug 56231
-		 * and Bug 95222 for more information.
-		 */
-		if ("gtk".equals(SWT.getPlatform())) { //$NON-NLS-1$
-			final Widget widget = event.widget;
-
-			// Update the contexts.
-			final ContextService contextService = (ContextService) workbench
-					.getService(IContextService.class);
-			if ((widget instanceof Control) && (!widget.isDisposed())) {
-				final Shell shell = ((Control) widget).getShell();
-				contextService.updateShellKludge(shell);
-			} else {
-				contextService.updateShellKludge();
-			}
-
-			// Update the handlers.
-			final HandlerService handlerService = (HandlerService) workbench
-					.getService(IHandlerService.class);
-			if ((widget instanceof Control) && (!widget.isDisposed())) {
-				final Shell shell = ((Control) widget).getShell();
-				handlerService.updateShellKludge(shell);
-			} else {
-				handlerService.updateShellKludge();
-			}
-		}
-
-		KeySequence errorSequence = null;
-		Collection errorMatch = null;
-
-		KeySequence sequenceBeforeKeyStroke = state.getCurrentSequence();
-		for (Iterator iterator = potentialKeyStrokes.iterator(); iterator
-				.hasNext();) {
-			KeySequence sequenceAfterKeyStroke = KeySequence.getInstance(
-					sequenceBeforeKeyStroke, (KeyStroke) iterator.next());
-			if (isPartialMatch(sequenceAfterKeyStroke)) {
-				incrementState(sequenceAfterKeyStroke);
-				return true;
-
-			} else if (isPerfectMatch(sequenceAfterKeyStroke)) {
-				final Binding binding = getPerfectMatch(sequenceAfterKeyStroke);
-				try {
-					return executeCommand(binding, event)
-							|| !sequenceBeforeKeyStroke.isEmpty();
-				} catch (final CommandException e) {
-					logException(e, binding.getParameterizedCommand());
-					return true;
-				}
-
-			} else if ((keyAssistDialog != null)
-					&& (keyAssistDialog.getShell() != null)
-					&& ((event.keyCode == SWT.ARROW_DOWN)
-							|| (event.keyCode == SWT.ARROW_UP)
-							|| (event.keyCode == SWT.ARROW_LEFT)
-							|| (event.keyCode == SWT.ARROW_RIGHT)
-							|| (event.keyCode == SWT.CR)
-							|| (event.keyCode == SWT.PAGE_UP) || (event.keyCode == SWT.PAGE_DOWN))) {
-				// We don't want to swallow keyboard navigation keys.
-				return false;
-
-			} else {
-				Collection match = (InternalPolicy.currentConflicts == null ? null
-						: (Collection) InternalPolicy.currentConflicts
-								.get(sequenceAfterKeyStroke));
-				if (match != null) {
-					errorSequence = sequenceAfterKeyStroke;
-					errorMatch = match;
-				}
-			}
-		}
-
-		resetState(true);
-		if (sequenceBeforeKeyStroke.isEmpty() && errorSequence != null) {
-			openKeyAssistShell(errorMatch);
-		}
-		return !sequenceBeforeKeyStroke.isEmpty();
-	}
-
-	/**
-	 * <p>
-	 * Actually performs the processing of the key event by interacting with the
-	 * <code>ICommandManager</code>. If work is carried out, then the event
-	 * is stopped here (i.e., <code>event.doit = false</code>). It does not
-	 * do any processing if there are no matching key strokes.
-	 * </p>
-	 * <p>
-	 * If the active <code>Shell</code> is not the same as the one to which
-	 * the state is associated, then a reset occurs.
-	 * </p>
-	 * 
-	 * @param keyStrokes
-	 *            The set of all possible matching key strokes; must not be
-	 *            <code>null</code>.
-	 * @param event
-	 *            The event to process; must not be <code>null</code>.
-	 */
-	void processKeyEvent(List keyStrokes, Event event) {
-		// Dispatch the keyboard shortcut, if any.
-		boolean eatKey = false;
-		if (!keyStrokes.isEmpty()) {
-			eatKey = press(keyStrokes, event);
-		}
-
-		if (eatKey) {
-			switch (event.type) {
-			case SWT.KeyDown:
-				event.doit = false;
-				break;
-			case SWT.Traverse:
-				event.detail = SWT.TRAVERSE_NONE;
-				event.doit = true;
-				break;
-			default:
-			}
-			event.type = SWT.NONE;
-		}
-	}
-
-	/**
-	 * Resets the state, and cancels any running timers. If there is a
-	 * <code>Shell</code> currently open, then it closes it.
-	 * 
-	 * @param clearRememberedState
-	 *            Whether the remembered state (dialog bounds) of the key assist
-	 *            should be forgotten immediately as well.
-	 */
-	private final void resetState(final boolean clearRememberedState) {
-		startTime = Long.MAX_VALUE;
-		state.reset();
-		closeMultiKeyAssistShell();
-		if ((keyAssistDialog != null) && clearRememberedState) {
-			keyAssistDialog.clearRememberedState();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties
deleted file mode 100644
index a24ea83..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-ExecutionError.Title=Error Executing Command
-ExecutionError.Message=The command for the key you pressed failed.  Please see the log for more information.
-ExecutionError.MessageCommandName="{0}" did not complete normally.  Please see the log for more information.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingElement.java
deleted file mode 100644
index 2094a79..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingElement.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.internal.keys.NewKeysPreferenceMessages;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * @since 3.4
- * 
- */
-public class BindingElement extends ModelElement {
-
-	public static final String PROP_TRIGGER = "trigger"; //$NON-NLS-1$
-	public static final String PROP_CONTEXT = "bindingContext"; //$NON-NLS-1$
-	public static final String PROP_CATEGORY = "category"; //$NON-NLS-1$
-	public static final String PROP_USER_DELTA = "userDelta"; //$NON-NLS-1$
-	private static final String PROP_IMAGE = "image"; //$NON-NLS-1$
-	public static final String PROP_CONFLICT = "bindingConflict"; //$NON-NLS-1$
-	private TriggerSequence trigger;
-	private ContextElement context;
-	private String category;
-	private Integer userDelta;
-	private Image image;
-	private Boolean conflict;
-
-	/**
-	 * @param kc
-	 */
-	public BindingElement(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * @param b
-	 * @param model
-	 */
-	public void init(Binding b, ContextModel model) {
-		setCommandInfo(b.getParameterizedCommand());
-		setTrigger(b.getTriggerSequence());
-		setContext((ContextElement) model.getContextIdToElement().get(
-				b.getContextId()));
-		setUserDelta(new Integer(b.getType()));
-		setModelObject(b);
-	}
-
-	/**
-	 * @param bindingCommand
-	 */
-	private void setCommandInfo(ParameterizedCommand bindingCommand) {
-		setId(bindingCommand.getId());
-		try {
-			setName(bindingCommand.getName());
-		} catch (NotDefinedException e) {
-			setName(NewKeysPreferenceMessages.Undefined_Command);
-		}
-		try {
-			setDescription(bindingCommand.getCommand().getDescription());
-		} catch (NotDefinedException e) {
-			setDescription(Util.ZERO_LENGTH_STRING);
-		}
-		try {
-			setCategory(bindingCommand.getCommand().getCategory().getName());
-		} catch (NotDefinedException e) {
-			setCategory(NewKeysPreferenceMessages.Unavailable_Category);
-		}
-		setConflict(Boolean.FALSE);
-	}
-
-	/**
-	 * @param cmd
-	 * @param type
-	 *            The binding type. Check {@link Binding} constants.
-	 */
-	public void init(ParameterizedCommand cmd) {
-		setCommandInfo(cmd);
-		setTrigger(null);
-		setContext(null);
-		setUserDelta(new Integer(Binding.SYSTEM));
-
-		setModelObject(cmd);
-	}
-
-	/**
-	 * @return Returns the trigger.
-	 */
-	public TriggerSequence getTrigger() {
-		return trigger;
-	}
-
-	/**
-	 * @param trigger
-	 *            The trigger to set.
-	 */
-	public void setTrigger(TriggerSequence trigger) {
-		Object old = this.trigger;
-		this.trigger = trigger;
-		controller.firePropertyChange(this, PROP_TRIGGER, old, trigger);
-	}
-
-	/**
-	 * @return Returns the context.
-	 */
-	public ContextElement getContext() {
-		return context;
-	}
-
-	/**
-	 * @param context
-	 *            The context to set.
-	 */
-	public void setContext(ContextElement context) {
-		Object old = this.context;
-		this.context = context;
-		controller.firePropertyChange(this, PROP_CONTEXT, old, context);
-	}
-
-	/**
-	 * @return Returns the category.
-	 */
-	public String getCategory() {
-		return category;
-	}
-
-	/**
-	 * @param category
-	 *            The category to set.
-	 */
-	public void setCategory(String category) {
-		Object old = this.category;
-		this.category = category;
-		controller.firePropertyChange(this, PROP_CATEGORY, old, category);
-	}
-
-	/**
-	 * @return Returns the userDelta.
-	 */
-	public Integer getUserDelta() {
-		return userDelta;
-	}
-
-	/**
-	 * @param userDelta
-	 *            The userDelta to set.
-	 */
-	public void setUserDelta(Integer userDelta) {
-		Object old = this.userDelta;
-		this.userDelta = userDelta;
-		controller.firePropertyChange(this, PROP_USER_DELTA, old, userDelta);
-	}
-
-	/**
-	 * @return Returns the image.
-	 */
-	public Image getImage() {
-		return image;
-	}
-
-	/**
-	 * @param image
-	 *            The image to set.
-	 */
-	public void setImage(Image image) {
-		Object old = this.image;
-		this.image = image;
-		controller.firePropertyChange(this, PROP_IMAGE, old, image);
-	}
-
-	/**
-	 * @return Returns the conflict.
-	 */
-	public Boolean getConflict() {
-		return conflict;
-	}
-
-	/**
-	 * @param conflict
-	 *            The conflict to set.
-	 */
-	public void setConflict(Boolean conflict) {
-		Object old = this.conflict;
-		this.conflict = conflict;
-		controller.firePropertyChange(this, PROP_CONFLICT, old, conflict);
-	}
-
-	/**
-	 * @param binding
-	 * @param contextModel
-	 */
-	public void fill(KeyBinding binding, ContextModel contextModel) {
-		setCommandInfo(binding.getParameterizedCommand());
-		setTrigger(binding.getTriggerSequence());
-		setContext((ContextElement) contextModel.getContextIdToElement().get(
-				binding.getContextId()));
-		setUserDelta(new Integer(binding.getType()));
-		setModelObject(binding);
-	}
-
-	/**
-	 * @param parameterizedCommand
-	 */
-	public void fill(ParameterizedCommand parameterizedCommand) {
-		setCommandInfo(parameterizedCommand);
-		setTrigger(null);
-		setContext(null);
-		setUserDelta(new Integer(Binding.SYSTEM));
-		setModelObject(parameterizedCommand);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingModel.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingModel.java
deleted file mode 100644
index 9dde7bf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/BindingModel.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.4
- * 
- */
-public class BindingModel extends CommonModel {
-	public static final String PROP_BINDING_ADD = "bindingAdd"; //$NON-NLS-1$
-	public static final String PROP_BINDING_ELEMENT_MAP = "bindingElementMap"; //$NON-NLS-1$
-	public static final String PROP_BINDING_FILTER = "bindingFilter"; //$NON-NLS-1$
-	public static final String PROP_BINDING_REMOVE = "bindingRemove"; //$NON-NLS-1$
-	public static final String PROP_BINDINGS = "bindings"; //$NON-NLS-1$
-	public static final String PROP_CONFLICT_ELEMENT_MAP = "bindingConfictMap"; //$NON-NLS-1$
-
-	final static boolean deletes(final Binding del, final Binding binding) {
-		boolean deletes = true;
-		deletes &= Util.equals(del.getContextId(), binding.getContextId());
-		deletes &= Util.equals(del.getTriggerSequence(), binding
-				.getTriggerSequence());
-		if (del.getLocale() != null) {
-			deletes &= Util.equals(del.getLocale(), binding.getLocale());
-		}
-		if (del.getPlatform() != null) {
-			deletes &= Util.equals(del.getPlatform(), binding.getPlatform());
-		}
-		deletes &= (binding.getType() == Binding.SYSTEM);
-		deletes &= Util.equals(del.getParameterizedCommand(), null);
-
-		return deletes;
-	}
-
-	private Collection allParameterizedCommands;
-	private BindingManager bindingManager;
-
-	/**
-	 * Holds all the {@link BindingElement} objects.
-	 */
-	private HashSet bindingElements;
-
-	/**
-	 * A map of {@link Binding} objects to {@link BindingElement} objects.
-	 */
-	private Map bindingToElement;
-
-	/**
-	 * A map of {@link ParameterizedCommand} objects to {@link BindingElement}
-	 * objects.
-	 */
-	private Map commandToElement;
-
-	/**
-	 * @param kc
-	 */
-	public BindingModel(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * Makes a copy of the selected element.
-	 * 
-	 */
-	public void copy() {
-		BindingElement element = (BindingElement) getSelectedElement();
-		copy(element);
-	}
-
-	/**
-	 * Makes a copy of the
-	 * 
-	 * @param element
-	 */
-	public void copy(BindingElement element) {
-		if (element == null || !(element.getModelObject() instanceof Binding)) {
-			return;
-		}
-		BindingElement be = new BindingElement(controller);
-		ParameterizedCommand parameterizedCommand = ((Binding) element
-				.getModelObject()).getParameterizedCommand();
-		be.init(parameterizedCommand);
-		be.setParent(this);
-		bindingElements.add(be);
-		commandToElement.put(parameterizedCommand.getId(), be);
-		controller.firePropertyChange(this, PROP_BINDING_ADD, null, be);
-		setSelectedElement(be);
-	}
-
-	/**
-	 * @return Returns the bindings.
-	 */
-	public HashSet getBindings() {
-		return bindingElements;
-	}
-
-	/**
-	 * @return Returns the bindingToElement.
-	 */
-	public Map getBindingToElement() {
-		return bindingToElement;
-	}
-
-	/**
-	 * @return Returns the commandToElement.
-	 */
-	public Map getCommandToElement() {
-		return commandToElement;
-	}
-
-	/**
-	 * The initialization only.
-	 * 
-	 * @param locator
-	 * @param manager
-	 * @param model
-	 */
-	public void init(IServiceLocator locator, BindingManager manager,
-			ContextModel model) {
-		Set cmdsForBindings = new HashSet();
-		bindingToElement = new HashMap();
-		commandToElement = new HashMap();
-
-		bindingElements = new HashSet();
-		bindingManager = manager;
-
-		Iterator i = manager.getActiveBindingsDisregardingContextFlat()
-				.iterator();
-		while (i.hasNext()) {
-			Binding b = (Binding) i.next();
-			BindingElement be = new BindingElement(controller);
-			be.init(b, model);
-			be.setParent(this);
-			bindingElements.add(be);
-			bindingToElement.put(b, be);
-			cmdsForBindings.add(b.getParameterizedCommand());
-		}
-
-		ICommandService commandService = (ICommandService) locator
-				.getService(ICommandService.class);
-		final Collection commandIds = commandService.getDefinedCommandIds();
-		allParameterizedCommands = new HashSet();
-		final Iterator commandIdItr = commandIds.iterator();
-		while (commandIdItr.hasNext()) {
-			final String currentCommandId = (String) commandIdItr.next();
-			final Command currentCommand = commandService
-					.getCommand(currentCommandId);
-			try {
-				allParameterizedCommands.addAll(ParameterizedCommand
-						.generateCombinations(currentCommand));
-			} catch (final NotDefinedException e) {
-				// It is safe to just ignore undefined commands.
-			}
-		}
-
-		i = allParameterizedCommands.iterator();
-		while (i.hasNext()) {
-			ParameterizedCommand cmd = (ParameterizedCommand) i.next();
-			if (!cmdsForBindings.contains(cmd)) {
-				BindingElement be = new BindingElement(controller);
-				be.init(cmd);
-				be.setParent(this);
-				bindingElements.add(be);
-				commandToElement.put(cmd.getId(), be);
-			}
-		}
-	}
-
-	/**
-	 * Refreshes the binding model to be in sync with the {@link BindingManager}.
-	 * 
-	 * @param contextModel
-	 */
-	public void refresh(ContextModel contextModel) {
-		Set cmdsForBindings = new HashSet();
-		Collection activeManagerBindings = bindingManager
-				.getActiveBindingsDisregardingContextFlat();
-
-		// add any bindings that we don't already have.
-		Iterator i = activeManagerBindings.iterator();
-		while (i.hasNext()) {
-			KeyBinding b = (KeyBinding) i.next();
-			ParameterizedCommand parameterizedCommand = b
-					.getParameterizedCommand();
-			cmdsForBindings.add(parameterizedCommand);
-			if (!bindingToElement.containsKey(b)) {
-				BindingElement be = new BindingElement(controller);
-				be.init(b, contextModel);
-				be.setParent(this);
-				bindingElements.add(be);
-				bindingToElement.put(b, be);
-				controller.firePropertyChange(this, PROP_BINDING_ADD, null, be);
-
-				String idKey = parameterizedCommand.getId();
-				if (commandToElement.containsKey(idKey)
-						&& be.getUserDelta().intValue() == Binding.SYSTEM) {
-					Object remove = commandToElement.remove(idKey);
-					bindingElements.remove(remove);
-					controller.firePropertyChange(this, PROP_BINDING_REMOVE,
-							null, remove);
-				}
-			}
-		}
-
-		// remove bindings that shouldn't be there
-		i = bindingElements.iterator();
-		while (i.hasNext()) {
-			BindingElement be = (BindingElement) i.next();
-			Object obj = be.getModelObject();
-			if (obj instanceof Binding) {
-				Binding b = (Binding) obj;
-				if (!activeManagerBindings.contains(b)) {
-					be.fill(b.getParameterizedCommand());
-					bindingToElement.remove(b);
-					i.remove();
-					controller.firePropertyChange(this, PROP_BINDING_REMOVE,
-							null, be);
-				}
-			} else {
-				cmdsForBindings.add(obj);
-			}
-		}
-
-		// If we removed the last binding for a parameterized command,
-		// put back the CMD
-		i = allParameterizedCommands.iterator();
-		while (i.hasNext()) {
-			ParameterizedCommand cmd = (ParameterizedCommand) i.next();
-			if (!cmdsForBindings.contains(cmd)) {
-				BindingElement be = new BindingElement(controller);
-				be.init(cmd);
-				be.setParent(this);
-				bindingElements.add(be);
-				commandToElement.put(cmd.getId(), be);
-				controller.firePropertyChange(this, PROP_BINDING_ADD, null, be);
-			}
-		}
-	}
-
-	/**
-	 * Removes the selected element's binding
-	 * 
-	 */
-	public void remove() {
-		BindingElement element = (BindingElement) getSelectedElement();
-		remove(element);
-	}
-
-	/**
-	 * Removes the <code>bindingElement</code> binding.
-	 * 
-	 * @param bindingElement
-	 */
-	public void remove(BindingElement bindingElement) {
-		if (bindingElement == null
-				|| !(bindingElement.getModelObject() instanceof Binding)) {
-			return;
-		}
-		KeyBinding keyBinding = (KeyBinding) bindingElement.getModelObject();
-		if (keyBinding.getType() == Binding.USER) {
-			bindingManager.removeBinding(keyBinding);
-		} else {
-			KeySequence keySequence = keyBinding.getKeySequence();
-
-			// Add the delete binding
-			bindingManager.addBinding(new KeyBinding(keySequence, null,
-					keyBinding.getSchemeId(), keyBinding.getContextId(), null,
-					null, null, Binding.USER));
-
-			// Unbind any conflicts affected by the delete binding
-			ConflictModel conflictModel = controller.getConflictModel();
-			conflictModel.updateConflictsFor(bindingElement);
-			Collection conflictsList = conflictModel.getConflicts();
-			if (conflictsList != null) {
-				Object[] conflicts = conflictsList.toArray();
-				for (int i = 0; i < conflicts.length; i++) {
-					BindingElement be = (BindingElement) conflicts[i];
-					if (be == bindingElement) {
-						continue;
-					}
-					Object modelObject = be.getModelObject();
-					if (modelObject instanceof Binding) {
-						Binding binding = (Binding) modelObject;
-						if (binding.getType() != Binding.SYSTEM) {
-							continue;
-						}
-						ParameterizedCommand pCommand = binding
-								.getParameterizedCommand();
-						be.fill(pCommand);
-						commandToElement.put(pCommand.getId(), be);
-					}
-				}
-			}
-		}
-		ParameterizedCommand parameterizedCommand = keyBinding
-				.getParameterizedCommand();
-		bindingElement.fill(parameterizedCommand);
-		commandToElement.put(parameterizedCommand.getId(), bindingElement);
-		controller.firePropertyChange(this, PROP_CONFLICT_ELEMENT_MAP, null,
-				bindingElement);
-	}
-
-	/**
-	 * Restores the specified BindingElement. A refresh should be performed
-	 * afterwards. The refresh may be done after several elements have been
-	 * restored.
-	 * 
-	 * @param element
-	 */
-	public void restoreBinding(BindingElement element) {
-		if (element == null) {
-			return;
-		}
-
-		Object modelObject = element.getModelObject();
-
-		ParameterizedCommand cmd = null;
-		if (modelObject instanceof ParameterizedCommand) {
-			cmd = (ParameterizedCommand) modelObject;
-			TriggerSequence trigger = bindingManager
-					.getBestActiveBindingFor(cmd.getId());
-			Binding binding = bindingManager.getPerfectMatch(trigger);
-			if (binding != null && binding.getType() == Binding.SYSTEM) {
-				return;
-			}
-		} else if (modelObject instanceof KeyBinding) {
-			cmd = ((KeyBinding) modelObject).getParameterizedCommand();
-		}
-
-		// Remove any USER bindings
-		Binding[] managerBindings = bindingManager.getBindings();
-		ArrayList systemBindings = new ArrayList();
-		ArrayList removalBindings = new ArrayList();
-		for (int i = 0; i < managerBindings.length; i++) {
-			if (managerBindings[i].getParameterizedCommand() == null) {
-				removalBindings.add(managerBindings[i]);
-			} else if (managerBindings[i].getParameterizedCommand().equals(cmd)) {
-				if (managerBindings[i].getType() == Binding.USER) {
-					bindingManager.removeBinding(managerBindings[i]);
-				} else if (managerBindings[i].getType() == Binding.SYSTEM) {
-					systemBindings.add(managerBindings[i]);
-				}
-			}
-		}
-
-		// Clear the USER bindings for parameterized commands
-		Iterator i = systemBindings.iterator();
-		while (i.hasNext()) {
-			Binding sys = (Binding) i.next();
-			Iterator j = removalBindings.iterator();
-			while (j.hasNext()) {
-				Binding del = (Binding) j.next();
-				if (deletes(del, sys) && del.getType() == Binding.USER) {
-					bindingManager.removeBinding(del);
-				}
-			}
-		}
-
-		setSelectedElement(null);
-
-		bindingElements.remove(element);
-		bindingToElement.remove(modelObject);
-		commandToElement.remove(modelObject);
-		controller.firePropertyChange(this, PROP_BINDING_REMOVE, null, element);
-	}
-
-	/**
-	 * Restores the currently selected binding.
-	 * 
-	 * @param contextModel
-	 */
-	public void restoreBinding(ContextModel contextModel) {
-		BindingElement element = (BindingElement) getSelectedElement();
-
-		if (element == null) {
-			return;
-		}
-
-		restoreBinding(element);
-		refresh(contextModel);
-
-		Object obj = element.getModelObject();
-		ParameterizedCommand cmd = null;
-		if (obj instanceof ParameterizedCommand) {
-			cmd = (ParameterizedCommand) obj;
-		} else if (obj instanceof KeyBinding) {
-			cmd = ((KeyBinding) obj).getParameterizedCommand();
-		}
-
-		boolean done = false;
-		Iterator i = bindingElements.iterator();
-		// Reselects the command
-		while (i.hasNext() && !done) {
-			BindingElement be = (BindingElement) i.next();
-			obj = be.getModelObject();
-			ParameterizedCommand pcmd = null;
-			if (obj instanceof ParameterizedCommand) {
-				pcmd = (ParameterizedCommand) obj;
-			} else if (obj instanceof KeyBinding) {
-				pcmd = ((KeyBinding) obj).getParameterizedCommand();
-			}
-			if (cmd.equals(pcmd)) {
-				done = true;
-				setSelectedElement(be);
-			}
-		}
-	}
-
-	/**
-	 * @param bindings
-	 *            The bindings to set.
-	 */
-	public void setBindings(HashSet bindings) {
-		HashSet old = this.bindingElements;
-		this.bindingElements = bindings;
-		controller.firePropertyChange(this, PROP_BINDINGS, old, bindings);
-	}
-
-	/**
-	 * @param bindingToElement
-	 *            The bindingToElement to set.
-	 */
-	public void setBindingToElement(Map bindingToElement) {
-		Map old = this.bindingToElement;
-		this.bindingToElement = bindingToElement;
-		controller.firePropertyChange(this, PROP_BINDING_ELEMENT_MAP, old,
-				bindingToElement);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/CommonModel.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/CommonModel.java
deleted file mode 100644
index c9a7497..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/CommonModel.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-/**
- * @since 3.4
- *
- */
-public class CommonModel extends ModelElement {
-
-	public static final String PROP_SELECTED_ELEMENT = "selectedElement"; //$NON-NLS-1$
-	private ModelElement selectedElement;
-
-	/**
-	 * @param kc
-	 */
-	public CommonModel(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * @return Returns the selectedContext.
-	 */
-	public ModelElement getSelectedElement() {
-		return selectedElement;
-	}
-
-	/**
-	 * @param selectedContext
-	 *            The selectedContext to set.
-	 */
-	public void setSelectedElement(ModelElement selectedContext) {
-		ModelElement old = this.selectedElement;
-		this.selectedElement = selectedContext;
-		controller.firePropertyChange(this, PROP_SELECTED_ELEMENT, old,
-				selectedContext);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ConflictModel.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ConflictModel.java
deleted file mode 100644
index 7a91e3a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ConflictModel.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * @since 3.4
- * 
- */
-public class ConflictModel extends CommonModel {
-
-	public static final String PROP_CONFLICTS = "conflicts"; //$NON-NLS-1$
-	public static final String PROP_CONFLICTS_ADD = "conflictsAdd"; //$NON-NLS-1$
-	public static final String PROP_CONFLICTS_REMOVE = "conflictsRemove"; //$NON-NLS-1$
-
-	/**
-	 * The set of conflicts for the currently selected element.
-	 */
-	private Collection conflicts;
-
-	private BindingManager bindingManager;
-
-	private BindingModel bindingModel;
-
-	/**
-	 * A mapping of binding element to known conflicts.
-	 */
-	private Map conflictsMap;
-
-	/**
-	 * @param kc
-	 */
-	public ConflictModel(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * @return Returns the conflicts.
-	 */
-	public Collection getConflicts() {
-		return conflicts;
-	}
-
-	/**
-	 * Sets the conflicts to the given collection. Any conflicts in the
-	 * collection that do not exist in the <code>bindingModel</code> are
-	 * removed.
-	 * 
-	 * @param conflicts
-	 *            The conflicts to set.
-	 */
-	public void setConflicts(Collection conflicts) {
-		Object old = this.conflicts;
-		this.conflicts = conflicts;
-
-		if (this.conflicts != null) {
-			Iterator i = this.conflicts.iterator();
-			Map bindingToElement = bindingModel.getBindingToElement();
-			while (i.hasNext()) {
-				Object next = i.next();
-				if (!bindingToElement.containsValue(next)
-						&& !next.equals(getSelectedElement())) {
-					i.remove();
-				}
-			}
-		}
-
-		controller.firePropertyChange(this, PROP_CONFLICTS, old, conflicts);
-	}
-
-	public void updateConflictsFor(BindingElement source) {
-		updateConflictsFor(source, false);
-	}
-
-	public void updateConflictsFor(BindingElement oldValue,
-			BindingElement newValue) {
-		updateConflictsFor(oldValue, newValue, false);
-	}
-
-	public void updateConflictsFor(BindingElement source, boolean removal) {
-		updateConflictsFor(null, source, removal);
-	}
-
-	private void updateConflictsFor(BindingElement oldValue,
-			BindingElement newValue, boolean removal) {
-		updateConflictsFor(newValue, oldValue == null ? null : oldValue
-				.getTrigger(), newValue == null ? null : newValue.getTrigger(),
-				removal);
-	}
-
-	public void updateConflictsFor(BindingElement newValue,
-			TriggerSequence oldTrigger, TriggerSequence newTrigger,
-			boolean removal) {
-		Collection matches = (Collection) conflictsMap.get(newValue);
-		if (matches != null) {
-			if (newTrigger == null || removal) {
-				// we need to clear this match
-				matches.remove(newValue);
-				conflictsMap.remove(newValue);
-				if (matches == conflicts) {
-					controller.firePropertyChange(this, PROP_CONFLICTS_REMOVE,
-							null, newValue);
-				}
-				if (matches.size() == 1) {
-					BindingElement tbe = (BindingElement) matches.iterator()
-							.next();
-					conflictsMap.remove(tbe);
-					tbe.setConflict(Boolean.FALSE);
-					if (matches == conflicts) {
-						setConflicts(null);
-					}
-				}
-				return;
-			} else if (oldTrigger != null && !newTrigger.equals(oldTrigger)) {
-				// we need to clear this match
-				matches.remove(newValue);
-				conflictsMap.remove(newValue);
-
-				if (matches == conflicts) {
-					controller.firePropertyChange(this, PROP_CONFLICTS_REMOVE,
-							null, newValue);
-				}
-				if (matches.size() == 1) {
-					BindingElement tbe = (BindingElement) matches.iterator()
-							.next();
-					conflictsMap.remove(tbe);
-					tbe.setConflict(Boolean.FALSE);
-					if (matches == conflicts) {
-						setConflicts(null);
-					}
-				}
-			} else {
-				return;
-			}
-		}
-
-		if (newValue.getTrigger() == null
-				|| !(newValue.getModelObject() instanceof Binding)) {
-			return;
-		}
-		Binding binding = (Binding) newValue.getModelObject();
-		TriggerSequence trigger = binding.getTriggerSequence();
-
-		matches = (Collection) bindingManager
-				.getActiveBindingsDisregardingContext().get(trigger);
-		ArrayList localConflicts = new ArrayList();
-		if (matches != null) {
-			localConflicts.add(newValue);
-			Iterator i = matches.iterator();
-			while (i.hasNext()) {
-				Binding b = (Binding) i.next();
-				if (binding != b
-						&& b.getContextId().equals(binding.getContextId())
-						&& b.getSchemeId().equals(binding.getSchemeId())) {
-					Object element = bindingModel.getBindingToElement().get(b);
-					if (element != null) {
-						localConflicts.add(element);
-					}
-				}
-			}
-		}
-
-		if (localConflicts.size() > 1) {
-			// first find if it is already a conflict collection
-			Collection knownConflicts = null;
-			Iterator i = localConflicts.iterator();
-			while (i.hasNext() && knownConflicts == null) {
-				BindingElement tbe = (BindingElement) i.next();
-				knownConflicts = (Collection) conflictsMap.get(tbe);
-			}
-			if (knownConflicts != null) {
-				knownConflicts.add(newValue);
-				conflictsMap.put(newValue, knownConflicts);
-				newValue.setConflict(Boolean.TRUE);
-				if (knownConflicts == conflicts) {
-					controller.firePropertyChange(this, PROP_CONFLICTS_ADD,
-							null, newValue);
-				} else if (newValue == getSelectedElement()) {
-					setConflicts(knownConflicts);
-				}
-				return;
-			}
-			boolean isSelected = false;
-			i = localConflicts.iterator();
-			while (i.hasNext()) {
-				BindingElement tbe = (BindingElement) i.next();
-				if (tbe != null) {
-					conflictsMap.put(tbe, localConflicts);
-					tbe.setConflict(Boolean.TRUE);
-				}
-				if (tbe == getSelectedElement()) {
-					isSelected = true;
-				}
-			}
-			if (isSelected) {
-				setConflicts(localConflicts);
-			}
-		}
-	}
-
-	public void init(BindingManager manager, BindingModel model) {
-		bindingManager = manager;
-		bindingModel = model;
-		conflictsMap = new HashMap();
-		Iterator i = bindingModel.getBindings().iterator();
-		while (i.hasNext()) {
-			BindingElement be = (BindingElement) i.next();
-			if (be.getModelObject() instanceof Binding) {
-				updateConflictsFor(be);
-			}
-		}
-		controller.addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == ConflictModel.this
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					if (event.getNewValue() != null) {
-						updateConflictsFor(
-								(BindingElement) event.getOldValue(),
-								(BindingElement) event.getNewValue());
-						setConflicts((Collection) conflictsMap.get(event
-								.getNewValue()));
-					} else {
-						setConflicts(null);
-					}
-				} else if (BindingModel.PROP_BINDING_REMOVE.equals(event
-						.getProperty())) {
-					updateConflictsFor((BindingElement) event.getOldValue(),
-							(BindingElement) event.getNewValue(), true);
-				}
-			}
-		});
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextElement.java
deleted file mode 100644
index 5067c94..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextElement.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.contexts.Context;
-
-/**
- * @since 3.4
- *
- */
-public class ContextElement extends ModelElement {
-	
-	/**
-	 * @param kc
-	 */
-	public ContextElement(KeyController kc) {
-		super(kc);
-	}
-	
-	public void init(Context context) {
-		setId(context.getId());
-		setModelObject(context);
-		try {
-			setName(context.getName());
-			setDescription(context.getDescription());
-		} catch (NotDefinedException e) {
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextModel.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextModel.java
deleted file mode 100644
index ec0842a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ContextModel.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.contexts.Context;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.4
- * 
- */
-public class ContextModel extends CommonModel {
-	private static final String CONTEXT_ID_ACTION_SETS = "org.eclipse.ui.contexts.actionSet"; //$NON-NLS-1$
-	private static final String CONTEXT_ID_INTERNAL = ".internal."; //$NON-NLS-1$
-
-	public static final String PROP_CONTEXTS = "contexts"; //$NON-NLS-1$
-	public static final String PROP_CONTEXT_MAP = "contextIdElementMap"; //$NON-NLS-1$
-	private List contexts;
-	private Map contextIdToFilteredContexts;
-	private Map contextIdToElement;
-	private IContextService contextService;
-
-	public ContextModel(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * @param locator
-	 */
-	public void init(IServiceLocator locator) {
-		contextService = (IContextService) locator
-				.getService(IContextService.class);
-		contexts = new ArrayList();
-		contextIdToFilteredContexts = new HashMap();
-		contextIdToElement = new HashMap();
-
-		Context[] definedContexts = contextService.getDefinedContexts();
-		for (int i = 0; i < definedContexts.length; i++) {
-			ContextElement ce = new ContextElement(controller);
-			ce.init(definedContexts[i]);
-			ce.setParent(this);
-			contexts.add(ce);
-			contextIdToElement.put(definedContexts[i].getId(), ce);
-		}
-	}
-
-	/**
-	 * @return Returns the contexts.
-	 */
-	public List getContexts() {
-		return contexts;
-	}
-
-	/**
-	 * @param contexts
-	 *            The contexts to set.
-	 */
-	public void setContexts(List contexts) {
-		List old = this.contexts;
-		this.contexts = contexts;
-		controller.firePropertyChange(this, PROP_CONTEXTS, old, contexts);
-	}
-
-	/**
-	 * @return Returns the contextToElement.
-	 */
-	public Map getContextIdToElement() {
-		return contextIdToElement;
-	}
-
-	/**
-	 * @param contextToElement
-	 *            The contextToElement to set.
-	 */
-	public void setContextIdToElement(Map contextToElement) {
-		Map old = this.contextIdToElement;
-		this.contextIdToElement = contextToElement;
-		controller.firePropertyChange(this, PROP_CONTEXT_MAP, old,
-				contextToElement);
-	}
-
-	/**
-	 * Removes any contexts according to the parameters. The contexts are stored
-	 * in a {@link List} to they can be easily restored.
-	 * 
-	 * @param actionSets
-	 *            <code>true</code> to filter action set contexts.
-	 * @param internal
-	 *            <code>true</code> to filter internal contexts
-	 */
-	public void filterContexts(boolean actionSets, boolean internal) {
-		// Remove undesired contexts
-		for (int i = 0; i < contexts.size(); i++) {
-			boolean removeContext = false;
-			ContextElement contextElement = (ContextElement) contexts.get(i);
-
-			if (actionSets == true
-					&& contextElement.getId().equalsIgnoreCase(
-							CONTEXT_ID_ACTION_SETS)) {
-				removeContext = true;
-			} else {
-				String parentId;
-				try {
-					parentId = ((Context) contextElement.getModelObject())
-							.getParentId();
-					while (parentId != null) {
-						if (parentId.equalsIgnoreCase(CONTEXT_ID_ACTION_SETS)) {
-							removeContext = true;
-						}
-						parentId = contextService.getContext(parentId)
-								.getParentId();
-					}
-				} catch (NotDefinedException e) {
-					// No parentId to check
-				}
-			}
-
-			if (internal == true
-					&& contextElement.getId().indexOf(CONTEXT_ID_INTERNAL) != -1) {
-				removeContext = true;
-			}
-
-			if (removeContext) {
-				contextIdToFilteredContexts.put(contextElement.getId(),
-						contextElement);
-				contextIdToElement.remove(contextElement);
-			}
-		}
-
-		contexts.removeAll(contextIdToFilteredContexts.values());
-
-		Iterator iterator = contextIdToFilteredContexts.keySet().iterator();
-		// Restore desired contexts
-		while (iterator.hasNext()) {
-			boolean restoreContext = false;
-			ContextElement contextElement = (ContextElement) contextIdToFilteredContexts
-					.get(iterator.next());
-
-			try {
-				if (actionSets == false
-						&& (contextElement.getId().equalsIgnoreCase(
-								CONTEXT_ID_ACTION_SETS) || ((Context) contextElement
-								.getModelObject()).getParentId()
-								.equalsIgnoreCase(CONTEXT_ID_ACTION_SETS))) {
-					restoreContext = true;
-				}
-			} catch (NotDefinedException e) {
-				// No parentId to check
-			}
-			if (internal == false
-					&& contextElement.getId().indexOf(CONTEXT_ID_INTERNAL) != -1) {
-				restoreContext = true;
-			}
-
-			if (restoreContext) {
-				contexts.add(contextElement);
-				contextIdToElement.put(contextElement.getId(), contextElement);
-				iterator.remove();
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/KeyController.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/KeyController.java
deleted file mode 100644
index 6cc8772..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/KeyController.java
+++ /dev/null
@@ -1,546 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.commands.contexts.ContextManager;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.keys.KeysPreferencePage;
-import org.eclipse.ui.internal.keys.NewKeysPreferenceMessages;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * @since 3.4
- * 
- */
-public class KeyController {
-	private static final String DELIMITER = ","; //$NON-NLS-1$
-	private static final String ESCAPED_QUOTE = "\""; //$NON-NLS-1$
-	private static final String REPLACEMENT = "\"\""; //$NON-NLS-1$
-	/**
-	 * The resource bundle from which translations can be retrieved.
-	 */
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(KeysPreferencePage.class.getName());
-	private ListenerList eventManager = null;
-	private BindingManager fBindingManager;
-	private ContextModel contextModel;
-	private SchemeModel fSchemeModel;
-	private BindingModel bindingModel;
-	private boolean notifying = true;
-	private ConflictModel conflictModel;
-	private IServiceLocator serviceLocator;
-
-	private ListenerList getEventManager() {
-		if (eventManager == null) {
-			eventManager = new ListenerList(ListenerList.IDENTITY);
-		}
-		return eventManager;
-	}
-
-	public void setNotifying(boolean b) {
-		notifying = b;
-	}
-
-	public boolean isNotifying() {
-		return notifying;
-	}
-
-	public void firePropertyChange(Object source, String propId, Object oldVal,
-			Object newVal) {
-		if (!isNotifying()) {
-			return;
-		}
-		if (Util.equals(oldVal, newVal)) {
-			return;
-		}
-
-		Object[] listeners = getEventManager().getListeners();
-		PropertyChangeEvent event = new PropertyChangeEvent(source, propId,
-				oldVal, newVal);
-		for (int i = 0; i < listeners.length; i++) {
-			((IPropertyChangeListener) listeners[i]).propertyChange(event);
-		}
-	}
-
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		getEventManager().add(listener);
-	}
-
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		getEventManager().remove(listener);
-	}
-
-	public void init(IServiceLocator locator) {
-		getEventManager().clear();
-		this.serviceLocator = locator;
-		fBindingManager = loadModelBackend(serviceLocator);
-		contextModel = new ContextModel(this);
-		contextModel.init(serviceLocator);
-		fSchemeModel = new SchemeModel(this);
-		fSchemeModel.init(fBindingManager);
-		bindingModel = new BindingModel(this);
-		bindingModel.init(serviceLocator, fBindingManager, contextModel);
-		conflictModel = new ConflictModel(this);
-		conflictModel.init(fBindingManager, bindingModel);
-		addSetContextListener();
-		addSetBindingListener();
-		addSetConflictListener();
-		addSetKeySequenceListener();
-		addSetSchemeListener();
-		addSetModelObjectListener();
-	}
-
-	private static BindingManager loadModelBackend(IServiceLocator locator) {
-		IBindingService bindingService = (IBindingService) locator
-				.getService(IBindingService.class);
-		BindingManager bindingManager = new BindingManager(
-				new ContextManager(), new CommandManager());
-		final Scheme[] definedSchemes = bindingService.getDefinedSchemes();
-		try {
-			Scheme modelActiveScheme = null;
-			for (int i = 0; i < definedSchemes.length; i++) {
-				final Scheme scheme = definedSchemes[i];
-				final Scheme copy = bindingManager.getScheme(scheme.getId());
-				copy.define(scheme.getName(), scheme.getDescription(), scheme
-						.getParentId());
-				if (definedSchemes[i] == bindingService.getActiveScheme()) {
-					modelActiveScheme = copy;
-				}
-			}
-			bindingManager.setActiveScheme(modelActiveScheme);
-		} catch (final NotDefinedException e) {
-			StatusManager.getManager().handle(
-					new Status(IStatus.WARNING, WorkbenchPlugin.PI_WORKBENCH,
-							"Keys page found an undefined scheme", e)); //$NON-NLS-1$
-		}
-		bindingManager.setLocale(bindingService.getLocale());
-		bindingManager.setPlatform(bindingService.getPlatform());
-		bindingManager.setBindings(bindingService.getBindings());
-		return bindingManager;
-	}
-
-	public ContextModel getContextModel() {
-		return contextModel;
-	}
-
-	public SchemeModel getSchemeModel() {
-		return fSchemeModel;
-	}
-
-	public BindingModel getBindingModel() {
-		return bindingModel;
-	}
-
-	public ConflictModel getConflictModel() {
-		return conflictModel;
-	}
-
-	private void addSetContextListener() {
-		addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == contextModel
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					updateBindingContext((ContextElement) event.getNewValue());
-				}
-			}
-		});
-	}
-
-	private void addSetBindingListener() {
-		addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == bindingModel
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					BindingElement binding = (BindingElement) event
-							.getNewValue();
-					if (binding == null) {
-						conflictModel.setSelectedElement(null);
-						contextModel.setSelectedElement(null);
-						return;
-					}
-					conflictModel.setSelectedElement(binding);
-					contextModel.setSelectedElement(binding.getContext());
-				}
-			}
-		});
-	}
-
-	private void addSetConflictListener() {
-		addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == conflictModel
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					if (event.getNewValue() != null) {
-						bindingModel.setSelectedElement((ModelElement) event
-								.getNewValue());
-					}
-				}
-			}
-		});
-	}
-
-	private void addSetKeySequenceListener() {
-		addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (BindingElement.PROP_TRIGGER.equals(event.getProperty())) {
-					updateTrigger((BindingElement) event.getSource(),
-							(KeySequence) event.getOldValue(),
-							(KeySequence) event.getNewValue());
-				}
-			}
-		});
-	}
-
-	private void addSetModelObjectListener() {
-		addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() instanceof BindingElement
-						&& ModelElement.PROP_MODEL_OBJECT.equals(event
-								.getProperty())) {
-					if (event.getNewValue() != null) {
-						BindingElement element = (BindingElement) event
-								.getSource();
-						Object oldValue = event.getOldValue();
-						Object newValue = event.getNewValue();
-						if (oldValue instanceof Binding
-								&& newValue instanceof Binding) {
-							conflictModel.updateConflictsFor(element,
-									((Binding) oldValue).getTriggerSequence(),
-									((Binding) newValue).getTriggerSequence(),
-									false);
-						} else {
-							conflictModel.updateConflictsFor(element, false);
-						}
-
-						ContextElement context = element.getContext();
-						contextModel.setSelectedElement(context);
-					}
-				}
-			}
-		});
-	}
-
-	private void addSetSchemeListener() {
-		addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if (event.getSource() == fSchemeModel
-						&& CommonModel.PROP_SELECTED_ELEMENT.equals(event
-								.getProperty())) {
-					changeScheme((SchemeElement) event.getOldValue(),
-							(SchemeElement) event.getNewValue());
-				}
-			}
-		});
-	}
-
-	/**
-	 * @param oldScheme
-	 * @param newScheme
-	 */
-	protected void changeScheme(SchemeElement oldScheme, SchemeElement newScheme) {
-		if (newScheme == null
-				|| newScheme.getModelObject() == fBindingManager
-						.getActiveScheme()) {
-			return;
-		}
-		try {
-			fBindingManager
-					.setActiveScheme((Scheme) newScheme.getModelObject());
-			bindingModel.refresh(contextModel);
-			bindingModel.setSelectedElement(null);
-		} catch (NotDefinedException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-
-	}
-
-	private void updateBindingContext(ContextElement context) {
-		if (context == null) {
-			return;
-		}
-		BindingElement activeBinding = (BindingElement) bindingModel
-				.getSelectedElement();
-		if (activeBinding == null) {
-			return;
-		}
-		String activeSchemeId = fSchemeModel.getSelectedElement().getId();
-		Object obj = activeBinding.getModelObject();
-		if (obj instanceof KeyBinding) {
-			KeyBinding keyBinding = (KeyBinding) obj;
-			if (!keyBinding.getContextId().equals(context.getId())) {
-				final KeyBinding binding = new KeyBinding(keyBinding
-						.getKeySequence(),
-						keyBinding.getParameterizedCommand(), activeSchemeId,
-						context.getId(), null, null, null, Binding.USER);
-				if (keyBinding.getType() == Binding.USER) {
-					fBindingManager.removeBinding(keyBinding);
-				} else {
-					fBindingManager.addBinding(new KeyBinding(keyBinding
-							.getKeySequence(), null, keyBinding.getSchemeId(),
-							keyBinding.getContextId(), null, null, null,
-							Binding.USER));
-				}
-				bindingModel.getBindingToElement().remove(
-						activeBinding.getModelObject());
-
-				fBindingManager.addBinding(binding);
-				activeBinding.fill(binding, contextModel);
-				bindingModel.getBindingToElement().put(binding, activeBinding);
-			}
-		}
-	}
-
-	/**
-	 * @param activeBinding
-	 * @param oldSequence
-	 * @param keySequence
-	 */
-	public void updateTrigger(BindingElement activeBinding,
-			KeySequence oldSequence, KeySequence keySequence) {
-		if (activeBinding == null) {
-			return;
-		}
-		Object obj = activeBinding.getModelObject();
-		if (obj instanceof KeyBinding) {
-			KeyBinding keyBinding = (KeyBinding) obj;
-			if (!keyBinding.getKeySequence().equals(keySequence)) {
-				if (keySequence != null && !keySequence.isEmpty()) {
-					String activeSchemeId = fSchemeModel.getSelectedElement()
-							.getId();
-					String activeContextId = contextModel.getSelectedElement()
-							.getId();
-					final KeyBinding binding = new KeyBinding(keySequence,
-							keyBinding.getParameterizedCommand(),
-							activeSchemeId, activeContextId, null, null, null,
-							Binding.USER);
-					Map bindingToElement = bindingModel.getBindingToElement();
-					bindingToElement.remove(keyBinding);
-					if (keyBinding.getType() == Binding.USER) {
-						fBindingManager.removeBinding(keyBinding);
-					} else {
-						fBindingManager.addBinding(new KeyBinding(keyBinding
-								.getKeySequence(), null, keyBinding
-								.getSchemeId(), keyBinding.getContextId(),
-								null, null, null, Binding.USER));
-					}
-
-					fBindingManager.addBinding(binding);
-					activeBinding.fill(binding, contextModel);
-					bindingModel.getBindingToElement().put(binding,
-							activeBinding);
-
-					// Remove binding for any system conflicts
-					Object[] keys = bindingToElement.keySet().toArray();
-					for (int i = 0; i < keys.length; i++) {
-						Binding bindingKey = (Binding) keys[i];
-						if (oldSequence.equals(bindingKey.getTriggerSequence())
-								&& bindingKey.getType() == Binding.SYSTEM) {
-							BindingElement be = (BindingElement) bindingToElement
-									.get(bindingKey);
-							bindingModel.remove(be);
-						}
-					}
-
-					bindingModel.setSelectedElement(activeBinding);
-				} else {
-					bindingModel.getBindingToElement().remove(keyBinding);
-					if (keyBinding.getType() == Binding.USER) {
-						fBindingManager.removeBinding(keyBinding);
-					} else {
-						fBindingManager.addBinding(new KeyBinding(keyBinding
-								.getKeySequence(), null, keyBinding
-								.getSchemeId(), keyBinding.getContextId(),
-								null, null, null, Binding.USER));
-					}
-					activeBinding.fill(keyBinding.getParameterizedCommand());
-				}
-			}
-		} else if (obj instanceof ParameterizedCommand) {
-			ParameterizedCommand cmd = (ParameterizedCommand) obj;
-			if (keySequence != null && !keySequence.isEmpty()) {
-				String activeSchemeId = fSchemeModel.getSelectedElement()
-						.getId();
-				String activeContextId = IContextService.CONTEXT_ID_WINDOW;
-				final KeyBinding binding = new KeyBinding(keySequence, cmd,
-						activeSchemeId, activeContextId, null, null, null,
-						Binding.USER);
-				fBindingManager.addBinding(binding);
-				activeBinding.fill(binding, contextModel);
-				bindingModel.getBindingToElement().put(binding, activeBinding);
-			}
-		}
-	}
-
-	/**
-	 * Replaces all the current bindings with the bindings in the local copy of
-	 * the binding manager.
-	 * 
-	 * @param bindingService
-	 *            The binding service that saves the changes made to the local
-	 *            copy of the binding manager
-	 */
-	public void saveBindings(IBindingService bindingService) {
-		try {
-			bindingService.savePreferences(fBindingManager.getActiveScheme(),
-					fBindingManager.getBindings());
-		} catch (IOException e) {
-			logPreferenceStoreException(e);
-		}
-	}
-
-	/**
-	 * Logs the given exception, and opens an error dialog saying that something
-	 * went wrong. The exception is assumed to have something to do with the
-	 * preference store.
-	 * 
-	 * @param exception
-	 *            The exception to be logged; must not be <code>null</code>.
-	 */
-	private final void logPreferenceStoreException(final Throwable exception) {
-		final String message = NewKeysPreferenceMessages.PreferenceStoreError_Message;
-		String exceptionMessage = exception.getMessage();
-		if (exceptionMessage == null) {
-			exceptionMessage = message;
-		}
-		final IStatus status = new Status(IStatus.ERROR,
-				WorkbenchPlugin.PI_WORKBENCH, 0, exceptionMessage, exception);
-		WorkbenchPlugin.log(message, status);
-		StatusUtil.handleStatus(message, exception, StatusManager.SHOW);
-	}
-
-	/**
-	 * Filters contexts for the When Combo.
-	 * 
-	 * @param actionSets
-	 *            <code>true</code> to filter action set contexts
-	 * @param internal
-	 *            <code>false</code> to filter internal contexts
-	 * 
-	 */
-	public void filterContexts(boolean actionSets, boolean internal) {
-		contextModel.filterContexts(actionSets, internal);
-	}
-
-	/**
-	 * Sets the bindings to default.
-	 * 
-	 * @param bindingService
-	 */
-	public void setDefaultBindings(IBindingService bindingService) {
-		// Fix the scheme in the local changes.
-		final String defaultSchemeId = bindingService.getDefaultSchemeId();
-		final Scheme defaultScheme = fBindingManager.getScheme(defaultSchemeId);
-		try {
-			fBindingManager.setActiveScheme(defaultScheme);
-		} catch (final NotDefinedException e) {
-			// At least we tried....
-		}
-
-		// Restore any User defined bindings
-		Binding[] bindings = fBindingManager.getBindings();
-		for (int i = 0; i < bindings.length; i++) {
-			if (bindings[i].getType() == Binding.USER) {
-				fBindingManager.removeBinding(bindings[i]);
-			}
-		}
-
-		bindingModel.refresh(contextModel);
-		saveBindings(bindingService);
-	}
-
-	public void exportCSV(Shell shell) {
-		final FileDialog fileDialog = new FileDialog(shell, SWT.SAVE);
-		fileDialog.setFilterExtensions(new String[] { "*.csv" }); //$NON-NLS-1$
-		fileDialog.setFilterNames(new String[] { Util.translateString(
-				RESOURCE_BUNDLE, "csvFilterName") }); //$NON-NLS-1$
-		final String filePath = fileDialog.open();
-		if (filePath == null) {
-			return;
-		}
-
-		final SafeRunnable runnable = new SafeRunnable() {
-			public final void run() throws IOException {
-				Writer fileWriter = null;
-				try {
-					fileWriter = new BufferedWriter(new FileWriter(filePath));
-					final Object[] bindingElements = bindingModel.getBindings()
-							.toArray();
-					for (int i = 0; i < bindingElements.length; i++) {
-						final BindingElement be = (BindingElement) bindingElements[i];
-						if (be.getTrigger() == null
-								|| be.getTrigger().isEmpty()) {
-							continue;
-						}
-						StringBuffer buffer = new StringBuffer();
-						buffer.append(ESCAPED_QUOTE
-								+ Util.replaceAll(be.getCategory(),
-										ESCAPED_QUOTE, REPLACEMENT)
-								+ ESCAPED_QUOTE + DELIMITER);
-						buffer.append(ESCAPED_QUOTE + be.getName()
-								+ ESCAPED_QUOTE + DELIMITER);
-						buffer.append(ESCAPED_QUOTE + be.getTrigger().format()
-								+ ESCAPED_QUOTE + DELIMITER);
-						buffer.append(ESCAPED_QUOTE + be.getContext().getName()
-								+ ESCAPED_QUOTE);
-						buffer.append(System.getProperty("line.separator")); //$NON-NLS-1$
-						fileWriter.write(buffer.toString());
-					}
-
-				} finally {
-					if (fileWriter != null) {
-						try {
-							fileWriter.close();
-						} catch (final IOException e) {
-							// At least I tried.
-						}
-					}
-
-				}
-			}
-		};
-		SafeRunner.run(runnable);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ModelElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ModelElement.java
deleted file mode 100644
index e1a41d8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/ModelElement.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-/**
- * @since 3.4
- *
- */
-public class ModelElement {
-
-	public static final String PROP_PARENT = "parent"; //$NON-NLS-1$
-	public static final String PROP_ID = "id"; //$NON-NLS-1$
-	public static final String PROP_NAME = "name"; //$NON-NLS-1$
-	public static final String PROP_DESCRIPTION = "description"; //$NON-NLS-1$
-	public static final String PROP_MODEL_OBJECT = "modelObject"; //$NON-NLS-1$
-	protected KeyController controller;
-	private ModelElement parent;
-	private String id;
-	private String name;
-	private String description;
-	private Object modelObject;
-
-	public ModelElement(KeyController kc) {
-		controller = kc;
-	}
-
-	/**
-	 * @return Returns the parent.
-	 */
-	public ModelElement getParent() {
-		return parent;
-	}
-
-	/**
-	 * @param parent The parent to set.
-	 */
-	public void setParent(ModelElement parent) {
-		ModelElement old = this.parent;
-		this.parent = parent;
-		controller.firePropertyChange(this, PROP_PARENT, old, parent);
-	}
-
-	/**
-	 * @return Returns the id.
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * @param id The id to set.
-	 */
-	public void setId(String id) {
-		String old = this.id;
-		this.id = id;
-		controller.firePropertyChange(this, PROP_ID, old, id);
-	}
-
-	/**
-	 * @return Returns the name.
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * @param name The name to set.
-	 */
-	public void setName(String name) {
-		String old = this.name;
-		this.name = name;
-		controller.firePropertyChange(this, PROP_NAME, old, name);
-	}
-
-	/**
-	 * @return Returns the description.
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * @param description The description to set.
-	 */
-	public void setDescription(String description) {
-		String old = this.description;
-		this.description = description;
-		controller.firePropertyChange(this, PROP_DESCRIPTION, old, description);
-	}
-
-	/**
-	 * @return Returns the context.
-	 */
-	public Object getModelObject() {
-		return modelObject;
-	}
-
-	/**
-	 * @param context The context to set.
-	 */
-	public void setModelObject(Object o) {
-		Object old = this.modelObject;
-		modelObject = o;
-		controller.firePropertyChange(this, PROP_MODEL_OBJECT, old, o);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeElement.java
deleted file mode 100644
index 46b93d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeElement.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.bindings.Scheme;
-
-/**
- * @since 3.4
- * 
- */
-public class SchemeElement extends ModelElement {
-
-	/**
-	 * @param kc
-	 */
-	public SchemeElement(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * @param scheme
-	 */
-	public void init(Scheme scheme) {
-		setId(scheme.getId());
-		setModelObject(scheme);
-		try {
-			setName(scheme.getName());
-			setDescription(scheme.getDescription());
-		} catch (NotDefinedException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeModel.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeModel.java
deleted file mode 100644
index ee52fad..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/model/SchemeModel.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.keys.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.bindings.BindingManager;
-import org.eclipse.jface.bindings.Scheme;
-
-/**
- * @since 3.4
- * 
- */
-public class SchemeModel extends CommonModel {
-
-	public static final String PROP_SCHEMES = "schemes"; //$NON-NLS-1$
-	private List schemes;
-
-	/**
-	 * @param kc
-	 */
-	public SchemeModel(KeyController kc) {
-		super(kc);
-	}
-
-	/**
-	 * @param bindingManager
-	 */
-	public void init(BindingManager bindingManager) {
-		schemes = new ArrayList();
-		Scheme[] definedSchemes = bindingManager.getDefinedSchemes();
-		for (int i = 0; i < definedSchemes.length; i++) {
-			SchemeElement se = new SchemeElement(controller);
-			se.init(definedSchemes[i]);
-			se.setParent(this);
-			schemes.add(se);
-			if (definedSchemes[i] == bindingManager.getActiveScheme()) {
-				setSelectedElement(se);
-			}
-		}
-	}
-
-	/**
-	 * @return Returns the schemes.
-	 */
-	public List getSchemes() {
-		return schemes;
-	}
-
-	/**
-	 * @param schemes
-	 *            The schemes to set.
-	 */
-	public void setSchemes(List schemes) {
-		List old = this.schemes;
-		this.schemes = schemes;
-		controller.firePropertyChange(this, PROP_SCHEMES, old, schemes);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CacheWrapper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CacheWrapper.java
deleted file mode 100644
index c8e70be..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CacheWrapper.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-
-/**
- * This class wraps a control with a complex computeSize method. It uses caching
- * to reduce the number of times the control's computeSize method is called. This
- * allows controls (such as Coolbars and wrapping text) with slow computeSize
- * operations to be used inside layouts and composites that use inefficient caching.
- * <p>
- * For example, you want to use Coolbar A inside composite B. Rather than making A
- * a direct child of B, place it inside a CacheWrapper and insert the CacheWrapper
- * into B. Any layout data that would normally be attached to the control itself
- * should be attached to the wrapper instead:
- * </p>
- * <code>
- * 
- *   // Unoptimized code
- *   Toolbar myToolbar = new Toolbar(someParent, SWT.WRAP);
- *   myToolbar.setLayoutData(someLayoutData);
- * </code>
- * <code>
- * 
- *   // Optimized code
- *   CacheWrapper myWrapper = new CacheWrapper(someParent);
- *   Toolbar myToolbar = new Toolbar(myWrapper.getControl(), SWT.WRAP);
- *   myWrapper.getControl().setLayoutData(someLayoutData);
- * </code>
- * <p>
- * CacheWrapper creates a Composite which should have exactly one child: the control
- * whose size should be cached. Note that CacheWrapper does NOT respect the flushCache
- * argument to layout() and computeSize(). This is intentional, since the whole point of
- * this class is to workaround layouts with poor caching, and such layouts will typically
- * be too eager about flushing the caches of their children. However, this means that you
- * MUST manually call flushCache() whenver the child's preferred size changes (and before
- * the parent is layed out).  
- * </p>
- * 
- * @since 3.0
- */
-public class CacheWrapper {
-    private Composite proxy;
-
-    private SizeCache cache = new SizeCache();
-
-    private Rectangle lastBounds = new Rectangle(0, 0, 0, 0);
-
-    private class WrapperLayout extends Layout implements ICachingLayout {
-        protected Point computeSize(Composite composite, int wHint, int hHint,
-                boolean flushCache) {
-            Control[] children = composite.getChildren();
-            if (children.length != 1) {
-                return new Point(0, 0);
-            }
-
-            cache.setControl(children[0]);
-
-            return cache.computeSize(wHint, hHint);
-        }
-
-        protected void layout(Composite composite, boolean flushCache) {
-            Control[] children = composite.getChildren();
-            if (children.length != 1) {
-                return;
-            }
-
-            Control child = children[0];
-            Rectangle newBounds = composite.getClientArea();
-            if (!newBounds.equals(lastBounds)) {
-                child.setBounds(newBounds);
-                lastBounds = newBounds;
-            }
-
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.layout.ICachingLayout#flush(org.eclipse.swt.widgets.Control)
-         */
-        public void flush(Control dirtyControl) {
-            CacheWrapper.this.flushCache();
-        }
-    }
-
-    /**
-     * Creates a <code>CacheWrapper</code> with the given parent
-     * 
-     * @param parent
-     */
-    public CacheWrapper(Composite parent) {
-        proxy = new Composite(parent, SWT.NONE);
-
-        proxy.setLayout(new WrapperLayout());
-    }
-
-    /**
-     * Flush the cache. Call this when the child has changed in order to force
-     * the size to be recomputed in the next resize event.
-     */
-    public void flushCache() {
-        cache.flush();
-    }
-
-    /**
-     * Use this as the parent of the real control.
-     * 
-     * @return the proxy contol. It should be given exactly one child.
-     */
-    public Composite getControl() {
-        return proxy;
-    }
-
-    /**
-     * Dispose of any widgets created by this wrapper.
-     */
-    public void dispose() {
-        if (proxy != null) {
-            proxy.dispose();
-            proxy = null;
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellData.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellData.java
deleted file mode 100644
index 0e801a7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellData.java
+++ /dev/null
@@ -1,550 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-
-/**
- * <code>CellData</code> is the layout data object associated with 
- * <code>CellLayout</code>. You can attach a CellData object to a
- * control by using the <code>setLayoutData</code> method. CellData
- * objects are optional. If you do not attach any layout data to a control,
- * it will behave just like attaching a CellData created using its default
- * constructor.
- * 
- * @since 3.0
- **/
-public final class CellData {
-
-    /**
-     * hintType flag (value = 0) indicating that the control's computeSize method should be used
-     * to determine the control size. If modifierType is set to NONE, then the widthHint
-     * and heightHint fields will be ignored.
-     */
-    public final static int NONE = 0;
-
-    /**
-     * hintType flag (value = 1) indicating that the widthHint and heightHint should be used
-     * as the control's size instead of the result of computeSize
-     * <p>
-     * This flag is useful for list boxes, text boxes, tree controls, and other controls
-     * whose contents can change dynamically. For example, create a tree control and set
-     * its width and height hints to the default size for that control. This will cause
-     * the hints to be used instead of the preferred size of the tree control.</p>
-     */
-    public final static int OVERRIDE = 1;
-
-    /**
-     * hintType(value = 2) indicating that the width of the control should be no less than
-     * widthHint (if provided) and the height of the control should be no less
-     * than heightHint (if provided).
-     * <p>
-     * This flag is useful for buttons. For example, set the width and height hints to
-     * the default button size. This will use the default button size unless the button
-     * label is too large to fit on the button.
-     * </p>  
-     */
-    public final static int MINIMUM = 2;
-
-    /**
-     * hintType flag (value = 3) indicating that the width of the control should be no more than
-     * widthHint (if provided) and the height of the control should be no more
-     * than heightHint (if provided). 
-     * <p>
-     * This flag is useful for wrapping text. For example, set heightHint to SWT.DEFAULT
-     * and set widthHint to the desired number of pixels after which text should wrap. This
-     * will cause the text to wrap after the given number of pixels, but will not allocate
-     * extra space in the column if the text widget does not fill an entire line.
-     * </p> 
-     */
-    public final static int MAXIMUM = 3;
-
-    /**
-     * This flag controls how the width and height hints are to be treated. See the constants
-     * above. 
-     */
-    public int hintType = OVERRIDE;
-
-    /**
-     * Width hint. This modifies the width of the control, in pixels. If set to SWT.DEFAULT,
-     * this dimension will not be constrained. Depending on the value of modifierType,
-     * this may be a minimum size, a maximum size, or simply replace the preferred control
-     * size.
-     */
-    public int widthHint = SWT.DEFAULT;
-
-    /**
-     * Height hint. This modifies the height of the control, in pixels. If set to SWT.DEFAULT,
-     * this dimension will not be constrained. Depending on the value of modifierType,
-     * this will be a minimum size, a maximum size, or a replacement for the control's preferred
-     * size. 
-     */
-    public int heightHint = SWT.DEFAULT;
-
-    /**
-     * Number of rows spanned by this cell (default = 1)
-     */
-    public int verticalSpan = 1;
-
-    /**
-     * Number of columns spanned by this cell (default = 1)
-     */
-    public int horizontalSpan = 1;
-
-    /**
-     * Horizontal alignment of the control within the cell. May be one
-     * of SWT.LEFT, SWT.RIGHT, SWT.CENTER, or SWT.NORMAL. SWT.NORMAL indicates
-     * that the control should be made as wide as the cell.
-     */
-    public int horizontalAlignment = SWT.FILL;
-
-    /**
-     * Vertical alignment of the control within the cell. May be one of
-     * SWT.TOP, SWT.BOTTOM, SWT.CENTER, or SWT.NORMAL. SWT.NORMAL indicates
-     * that the control should be made as wide as the cell.
-     */
-    public int verticalAlignment = SWT.FILL;
-
-    /**
-     * Horizontal indentation (pixels). Positive values move the control 
-     * to the right, negative to the left.
-     */
-    public int horizontalIndent = 0;
-
-    /**
-     * Vertical indentation (pixels). Positive values move the control
-     * down, negative values move the control up.
-     */
-    public int verticalIndent = 0;
-
-    /**
-     * Constructs a CellData with default properties
-     */
-    public CellData() {
-        // Use the default values for all fields.
-    }
-
-    /**
-     * Creates a new CellData that with properties that are as close as possible to
-     * the given GridData. This is used for converting GridLayouts into CellLayouts.
-     * 
-     * @param data
-     */
-    public CellData(GridData data) {
-        verticalSpan = data.verticalSpan;
-        horizontalSpan = data.horizontalSpan;
-
-        switch (data.horizontalAlignment) {
-        case GridData.BEGINNING:
-            horizontalAlignment = SWT.LEFT;
-            break;
-        case GridData.CENTER:
-            horizontalAlignment = SWT.CENTER;
-            break;
-        case GridData.END:
-            horizontalAlignment = SWT.RIGHT;
-            break;
-        case GridData.FILL:
-            horizontalAlignment = SWT.FILL;
-            break;
-        }
-
-        switch (data.verticalAlignment) {
-        case GridData.BEGINNING:
-            verticalAlignment = SWT.LEFT;
-            break;
-        case GridData.CENTER:
-            verticalAlignment = SWT.CENTER;
-            break;
-        case GridData.END:
-            verticalAlignment = SWT.RIGHT;
-            break;
-        case GridData.FILL:
-            verticalAlignment = SWT.FILL;
-            break;
-        }
-
-        widthHint = data.widthHint;
-        heightHint = data.heightHint;
-        horizontalIndent = data.horizontalIndent;
-        hintType = OVERRIDE;
-    }
-
-    /**
-     * Copies the given CellData
-     * 
-     * @param newData
-     */
-    public CellData(CellData newData) {
-        hintType = newData.hintType;
-        widthHint = newData.widthHint;
-        heightHint = newData.heightHint;
-        horizontalAlignment = newData.horizontalAlignment;
-        verticalAlignment = newData.verticalAlignment;
-        horizontalSpan = newData.horizontalSpan;
-        verticalSpan = newData.verticalSpan;
-    }
-
-    /**
-     * Sets the size hint for this control. This is used to modify the control's 
-     * preferred size. If one dimension should remain unmodified, that hint can be
-     * set to SWT.DEFAULT. Using a size hint of CellData.MINIMUM ensures that the preferred
-     * control size is larger than the hint. Using a size hint of CellData.MAXIMUM ensures
-     * that the preferred size is smaller than the hint. Using a size hint of CellData.OVERRIDE
-     * ensures that the preferred size is always equal to the hint. 
-     * 
-     * @param hintType one of CellData.MINIMUM, CellData.MAXIMUM, or CellData.OVERRIDE
-     * @param hint size hint (in pixels). If either dimension is set to SWT.DEFAULT, the
-     * hint will not affect that dimension 
-     * @return this
-     */
-    public CellData setHint(int hintType, Point hint) {
-        return setHint(hintType, hint.x, hint.y);
-    }
-
-    /**
-     * Sets the size hint for this control. This is used to modify the control's 
-     * preferred size. If one dimension should remain unmodified, that hint can be
-     * set to SWT.DEFAULT. Using a size hint of CellData.MINIMUM ensures that the preferred
-     * control size is larger than the hint. Using a size hint of CellData.MAXIMUM ensures
-     * that the preferred size is smaller than the hint. Using a size hint of CellData.OVERRIDE
-     * ensures that the preferred size is always equal to the hint. If both hints are equal
-     * to SWT.DEFAULT, then the control's preferred size is unmodified.
-     * 
-     * @param hintType one of CellData.MINIMUM, CellData.MAXIMUM, or CellData.OVERRIDE
-     * @param horizontal horizontal hint (pixels). A value of SWT.DEFAULT will leave the result
-     * of the control's computeSize method unmodified.
-     * @param vertical vertical hint (pixels). A value of SWT.DEFAULT will leave the result of 
-     * the control's computeSize method unmodified.
-     * @return this
-     */
-    public CellData setHint(int hintType, int horizontal, int vertical) {
-        this.hintType = hintType;
-        this.heightHint = vertical;
-        this.widthHint = horizontal;
-
-        return this;
-    }
-
-    /**
-     * Sets the alignment for this control
-     * 
-     * @param horizontalAlignment one of SWT.LEFT, SWT.RIGHT, SWT.FILL, or SWT.CENTER
-     * @param verticalAlignment one of SWT.TOP, SWT.BOTTOM, SWT.FILL, or SWT.CENTER
-     * @return this
-     */
-    public CellData align(int horizontalAlignment, int verticalAlignment) {
-        this.horizontalAlignment = horizontalAlignment;
-        this.verticalAlignment = verticalAlignment;
-
-        return this;
-    }
-
-    /**
-     * Sets the number of rows and columns spanned by this control.
-     * 
-     * @param horizontalSpan number of columns spanned by the control (> 0)
-     * @param verticalSpan number of rows spanned by the control (> 0)
-     * @return this
-     */
-    public CellData span(int horizontalSpan, int verticalSpan) {
-        this.horizontalSpan = horizontalSpan;
-        this.verticalSpan = verticalSpan;
-
-        return this;
-    }
-
-    /**
-     * Sets the indentation for this control. The indentation is added to
-     * the control's position within the cell. For example, indentation of
-     * (10,4) will move the control right by 10 pixels and down by 4 pixels.
-     * 
-     * @param indent indentation (pixels)
-     * @return this
-     */
-    public CellData indent(Point indent) {
-        return this.indent(indent.x, indent.y);
-    }
-
-    /**
-     * Sets the indentation for this cell
-     * 
-     * @param horizontalIndent distance (pixels) to move the control to the right
-     * @param verticalIndent distance (pixels) to move the control down
-     * @return this
-     */
-    public CellData indent(int horizontalIndent, int verticalIndent) {
-        this.horizontalIndent = horizontalIndent;
-        this.verticalIndent = verticalIndent;
-
-        return this;
-    }
-
-    /**
-     * Returns the preferred size of the given control, given the known dimensions of
-     * its cell.
-     *  
-     * @param toCompute the control whose size is to be computed
-     * @param cellWidth width of the cell, in pixels (or SWT.DEFAULT if unknown)
-     * @param cellHeight height of the cell, in pixels (or SWT.DEFAULT if unknown)
-     * @return the preferred size of the given control, in pixels
-     */
-    public Point computeSize(SizeCache toCompute, int cellWidth, int cellHeight) {
-
-        int absHorizontalIndent = Math.abs(horizontalIndent);
-        int absVerticalIndent = Math.abs(verticalIndent);
-
-        // If we're going to indent, subtract off the space that will be required for indentation from
-        // the available space
-        if (cellWidth != SWT.DEFAULT) {
-            cellWidth -= absHorizontalIndent;
-        }
-
-        if (cellHeight != SWT.DEFAULT) {
-            cellHeight -= absVerticalIndent;
-        }
-
-        int controlWidth = horizontalAlignment == SWT.FILL ? cellWidth
-                : SWT.DEFAULT;
-        int controlHeight = verticalAlignment == SWT.FILL ? cellHeight
-                : SWT.DEFAULT;
-
-        // Note: this could be optimized further. If we're using a MAXIMUM hint and 
-        // non-FILL alignment, we could simply call computeMaximumBoundedSize using the
-        // minimum of the cell size and the hint as the boundary -- basically, rather
-        // than applying two limits for the hint and the cell boundary, we can do it in
-        // one step and reduce the size computations by half (for this specific case).
-        Point controlSize = computeControlSize(toCompute, controlWidth,
-                controlHeight);
-
-        if (cellWidth != SWT.DEFAULT && controlSize.x > cellWidth) {
-            controlSize = computeControlSize(toCompute, cellWidth,
-                    controlHeight);
-            if (cellHeight != SWT.DEFAULT && controlSize.y > cellHeight) {
-                controlSize.y = cellHeight;
-            }
-        } else if (cellHeight != SWT.DEFAULT && controlSize.y > cellHeight) {
-            controlSize = computeControlSize(toCompute, controlWidth,
-                    cellHeight);
-            if (cellWidth != SWT.DEFAULT && controlSize.x > cellWidth) {
-                controlSize.x = cellWidth;
-            }
-        }
-
-        // If we're going to indent, add the indentation to the required space 
-        controlSize.x += absHorizontalIndent;
-        controlSize.y += absVerticalIndent;
-
-        return controlSize;
-    }
-
-    /**
-     * Arranges the given control within the given rectangle using the
-     * criteria described by this CellData.
-     * 
-     * @param control 
-     * @param cellBounds
-     * @since 3.0
-     */
-    public void positionControl(SizeCache cache, Rectangle cellBounds) {
-
-        int startx = cellBounds.x;
-        int starty = cellBounds.y;
-        int availableWidth = cellBounds.width - horizontalIndent;
-        int availableHeight = cellBounds.height - verticalIndent;
-
-        Point size = computeSize(cache, availableWidth, availableHeight);
-
-        // Horizontal justification
-        switch (horizontalAlignment) {
-        case SWT.RIGHT:
-            startx = cellBounds.x + availableWidth - size.x;
-            break;
-        case SWT.CENTER:
-            startx = cellBounds.x + (availableWidth - size.x) / 2;
-            break;
-        }
-
-        // Vertical justification
-        switch (verticalAlignment) {
-        case SWT.BOTTOM:
-            starty = cellBounds.y + availableHeight - size.y;
-            break;
-        case SWT.CENTER:
-            starty = cellBounds.y + (availableHeight - size.y) / 2;
-            break;
-        }
-
-        // Position the control
-        cache.getControl().setBounds(startx + horizontalIndent,
-                starty + verticalIndent, size.x, size.y);
-    }
-
-    /**
-     * Returns the preferred size of the given control in this cell, given one or both
-     * known dimensions of the control. This differs from computeSize, which takes known
-     * dimensions of the <b>cell</b> as arguments.
-     * 
-     * @param toCompute
-     * @param controlWidth
-     * @param controlHeight
-     * @return
-     * @since 3.0
-     */
-    private Point computeControlSize(SizeCache toCompute, int controlWidth,
-            int controlHeight) {
-        switch (hintType) {
-        case OVERRIDE:
-            return computeOverrideSize(toCompute, controlWidth, controlHeight,
-                    widthHint, heightHint);
-        case MINIMUM:
-            return computeMinimumBoundedSize(toCompute, controlWidth,
-                    controlHeight, widthHint, heightHint);
-        case MAXIMUM:
-            return computeMaximumBoundedSize(toCompute, controlWidth,
-                    controlHeight, widthHint, heightHint);
-        }
-
-        return computeRawSize(toCompute, controlWidth, controlHeight);
-    }
-
-    /** 
-     * Computes the size of the control, given its outer dimensions. This should be used in
-     * place of calling Control.computeSize, since Control.computeSize takes control-specific
-     * inner dimensions as hints.
-     *
-     * @param toCompute Control whose size will be computed
-     * @param controlWidth width of the control (pixels or SWT.DEFAULT if unknown)
-     * @param controlHeight height of the control (pixels or SWT.DEFAULT if unknown)
-     * @return preferred dimensions of the control
-     */
-    private static Point computeRawSize(SizeCache toCompute, int controlWidth,
-            int controlHeight) {
-        if (controlWidth != SWT.DEFAULT && controlHeight != SWT.DEFAULT) {
-            return new Point(controlWidth, controlHeight);
-        }
-
-        // Known bug: we pass the OUTER dimension of the control into computeSize, even though
-        // SWT expects a control-specific inner dimension as width and height hints. Currently,
-        // SWT does not provide any means to convert outer dimensions into inner dimensions.
-        // Fortunately, the outer and inner dimensions tend to be quite close so we
-        // pass in the outer dimension and adjust the result if it differs from one of the
-        // hints. This may cause incorrect text wrapping in rare cases, and should be fixed
-        // once SWT provides a way to convert the outer dimension of a control into a valid
-        // width or height hint for Control.computeSize. Note that the distinction between outer
-        // and inner dimensions is undocumented in SWT, and most examples also contain this
-        // bug.
-        Point result = toCompute.computeSize(controlWidth, controlHeight);
-
-        // Hack: If the result of computeSize differs from the width or height-hints, adjust it.
-        // See above. Don't remove this hack until SWT provides some way to pass correct width
-        // and height hints into computeSize. Once this happens, these conditions should always
-        // return false and the hack will have no effect.
-        if (controlWidth != SWT.DEFAULT) {
-            result.x = controlWidth;
-        } else if (controlHeight != SWT.DEFAULT) {
-            result.y = controlHeight;
-        }
-
-        return result;
-    }
-
-    /**
-     * Computes the preferred size of the control. Optionally, one or both dimensions
-     * may be fixed to a given size.
-     * 
-     * @param control object that can compute the size of the control of interest
-     * @param wHint known width (or SWT.DEFAULT if the width needs to be computed) 
-     * @param hHint known height (or SWT.DEFAULT if the height needs to be computed) 
-     * @param overrideW width that should always be returned by the control, 
-     * or SWT.DEFAULT if the width is not being constrained
-     * @param overrideH height that should always be returned by the control, 
-     * or SWT.DEFAULT if the height is not being constrained
-     * @return
-     */
-    private static Point computeOverrideSize(SizeCache control, int wHint,
-            int hHint, int overrideW, int overrideH) {
-        int resultWidth = overrideW;
-        int resultHeight = overrideH;
-
-        if (wHint != SWT.DEFAULT) {
-            resultWidth = wHint;
-        }
-
-        if (hHint != SWT.DEFAULT) {
-            resultHeight = hHint;
-        }
-
-        if (resultWidth == SWT.DEFAULT || resultHeight == SWT.DEFAULT) {
-            Point result = computeRawSize(control, resultWidth, resultHeight);
-
-            return result;
-        }
-
-        return new Point(resultWidth, resultHeight);
-    }
-
-    /**
-     * Computes the size for the control, optionally bounding the size in the x and
-     * y directions. The various hints are used to determine which dimensions are
-     * already known and which dimensions need to be computed.
-     * 
-     * @param control The control whose size should be computed
-     * @param wHint known width (or SWT.DEFAULT if the width needs to be computed) 
-     * @param hHint known height (or SWT.DEFAULT if the height needs to be computed) 
-     * @param boundedWidth maximum width for the control (or SWT.DEFAULT if the width is unbounded)
-     * @param boundedHeight maximum height for the control (or SWT.DEFAULT if the height is unbounded)
-     * @return the preferred size of the control, given that it cannot exceed the given bounds 
-     */
-    private static Point computeMaximumBoundedSize(SizeCache control,
-            int wHint, int hHint, int boundedWidth, int boundedHeight) {
-        Point controlSize = computeRawSize(control, wHint, hHint);
-
-        if (wHint == SWT.DEFAULT && boundedWidth != SWT.DEFAULT
-                && controlSize.x > boundedWidth) {
-            return computeMaximumBoundedSize(control, boundedWidth, hHint,
-                    boundedWidth, boundedHeight);
-        }
-
-        if (hHint == SWT.DEFAULT && boundedHeight != SWT.DEFAULT
-                && controlSize.y > boundedHeight) {
-            return computeMaximumBoundedSize(control, wHint, boundedHeight,
-                    boundedWidth, boundedHeight);
-        }
-
-        return controlSize;
-    }
-
-    private static Point computeMinimumBoundedSize(SizeCache control,
-            int wHint, int hHint, int minimumWidth, int minimumHeight) {
-
-        Point controlSize = computeRawSize(control, wHint, hHint);
-
-        if (minimumWidth != SWT.DEFAULT && wHint == SWT.DEFAULT
-                && controlSize.x < minimumWidth) {
-            return computeMinimumBoundedSize(control, minimumWidth, hHint,
-                    minimumWidth, minimumHeight);
-        }
-
-        if (minimumHeight != SWT.DEFAULT && hHint == SWT.DEFAULT
-                && controlSize.y < minimumHeight) {
-            return computeMinimumBoundedSize(control, wHint, minimumHeight,
-                    minimumWidth, minimumHeight);
-        }
-
-        return controlSize;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayout.java
deleted file mode 100644
index 11c347f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayout.java
+++ /dev/null
@@ -1,888 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-
-/**
- * <p>Instance of this class lay out the control children of a <code>Composite</code>
- * in a grid, using a simple set of rules and a simple API. This class is 
- * intended to be more predictable than <code>GridLayout</code> and easier to use than
- * <code>FormLayout</code>, while retaining most of the power of both.</p>
- * 
- * <p>The power of a <code>CellLayout</code> lies in the ability to control
- * the size and resizing properties of each row and column. Unlike other layout
- * classes, complex layouts can be created without attaching any layout data to
- * individual controls in the layout. </p>
- * 
- * <p>The various subclasses of <code>IColumnInfo</code> 
- * can be used to create columns with fixed width, columns whose width is computed
- * from child controls, or width that grows in proportion to the size of other
- * columns. Layouts can be given a default <code>IColumnInfo</code> that will
- * be used to set the size of any column whose properties have not been explicitly
- * set. This is useful for creating layouts where most or all columns have the
- * same properties. Similarly, the subclasses of <code>IRowInfo</code> can be used to
- * control the height of individual rows.</p>
- * 
- * <p>For a finer grain of control, <code>CellData</code> objects can be attached
- * to individual controls in the layout. These objects serve a similar function as
- * <code>GridData</code> objects serve for <code>GridLayout</code>. They allow
- * controls to span multiple rows or columns, set the justification of the control
- * within its cell, and allow the user to override the preferred size of the control.
- * </p> 
- * 
- * <p>In many cases, it is not necessary to attach any layout data to controls in
- * the layout, since the controls can be arranged based on the properties of rows
- * and columns. However, layout data may be attached to individual controls to
- * allow them to span multiple columns or to control their justification within
- * their cell. 
- * </p>
- * 
- * <p>All the <code>set</code> methods in this class return <code>this</code>, allowing
- * a layout to be created and initialized in a single line of code. For example: </p>
- * 
- * <code>
- * Composite myControl = new Composite(parent, SWT.NONE);
- * myControl.setLayout(new CellLayout(2).setMargins(10,10).setSpacing(5,5));
- * </code>
- * 
- * @since 3.0
- */
-public class CellLayout extends Layout {
-
-    /**
-     * Object used to compute the height of rows whose properties have not been
-     * explicitly set.
-     */
-    private Row defaultRowSettings = new Row(false);
-
-    /**
-     * Object used to compute the width of columns whose properties have not been
-     * explicitly set.
-     */
-    private Row defaultColSettings = new Row(true);
-
-    /**
-     * horizontalSpacing specifies the number of pixels between the right
-     * edge of one cell and the left edge of its neighbouring cell to
-     * the right.
-     *
-     * The default value is 5.
-     */
-    int horizontalSpacing = 5;
-
-    /**
-     * verticalSpacing specifies the number of pixels between the bottom
-     * edge of one cell and the top edge of its neighbouring cell underneath.
-     *
-     * The default value is 5.
-     */
-    int verticalSpacing = 5;
-
-    /**
-     * marginWidth specifies the number of pixels of horizontal margin
-     * that will be placed along the left and right edges of the layout.
-     *
-     * The default value is 0.
-     */
-    public int marginWidth = 5;
-
-    /**
-     * marginHeight specifies the number of pixels of vertical margin
-     * that will be placed along the top and bottom edges of the layout.
-     *
-     * The default value is 0.
-     */
-    public int marginHeight = 5;
-
-    /**
-     * Number of columns in this layout, or 0 indicating that the whole layout
-     * should be on a single row.
-     */
-    private int numCols;
-
-    /**
-     * List of IColumnInfo. The nth object is used to compute the width of the
-     * nth column, or null indicating that the default column should be used.
-     */
-    private List cols;
-
-    /**
-     * List of RowInfo. The nth object is used to compute the height of the
-     * nth row, or null indicating that the default row should be used.
-     */
-    private List rows = new ArrayList(16);
-
-    // Cached information 
-    private GridInfo gridInfo = new GridInfo();
-
-    private int[] cachedRowMin = null;
-
-    private int[] cachedColMin = null;
-
-    public static int cacheMisses;
-
-    public static int cacheHits;
-
-    private LayoutCache cache = new LayoutCache();
-
-    // End of cached control sizes
-
-    /**
-     * Creates the layout
-     * 
-     * @param numCols the number of columns in this layout, 
-     * or 0 indicating that the whole layout should be on one row.
-     */
-    public CellLayout(int numCols) {
-        super();
-        this.numCols = numCols;
-        cols = new ArrayList(numCols == 0 ? 3 : numCols);
-    }
-
-    /**
-     * Sets the amount empty space between cells
-     * 
-     * @param newSpacing a point (x,y) corresponding to the number of pixels of
-     * empty space between adjacent columns and rows respectively
-     */
-    public CellLayout setSpacing(int horizontalSpacing, int verticalSpacing) {
-        this.horizontalSpacing = horizontalSpacing;
-        this.verticalSpacing = verticalSpacing;
-
-        return this;
-    }
-
-    /**
-     * Sets the amount empty space between cells
-     * 
-     * @param newSpacing a point (x,y) corresponding to the number of pixels of
-     * empty space between adjacent columns and rows respectively
-     */
-    public CellLayout setSpacing(Point newSpacing) {
-        horizontalSpacing = newSpacing.x;
-        verticalSpacing = newSpacing.y;
-        return this;
-    }
-
-    /**
-     * Returns the amount of empty space between adjacent cells
-     * 
-     * @return a point (x,y) corresponding to the number of pixels of empty
-     * space between adjacent columns and rows respectively
-     */
-    public Point getSpacing() {
-        return new Point(horizontalSpacing, verticalSpacing);
-    }
-
-    /**
-     * Sets the size of the margin around the outside of the layout. 
-     * 
-     * @param marginWidth the size of the margin around the top and 
-     * bottom of the layout
-     * @param marginHeight the size of the margin on the left and right
-     * of the layout.
-     */
-    public CellLayout setMargins(int marginWidth, int marginHeight) {
-        this.marginWidth = marginWidth;
-        this.marginHeight = marginHeight;
-        return this;
-    }
-
-    /**
-     * Sets the size of the margin around the outside of the layout.
-     * 
-     * @param newMargins point indicating the size of the horizontal and vertical
-     * margins, in pixels.
-     */
-    public CellLayout setMargins(Point newMargins) {
-        marginWidth = newMargins.x;
-        marginHeight = newMargins.y;
-        return this;
-    }
-
-    /**
-     * Returns the size of the margins around the outside of the layout.
-     * 
-     * @return the size of the outer margins, in pixels.
-     */
-    public Point getMargins() {
-        return new Point(marginWidth, marginHeight);
-    }
-
-    /**
-     * Sets the default column settings. All columns will use these settings unless
-     * they have been explicitly assigned custom settings by setColumn.
-     * 
-     * @param info the properties of all default columns
-     * @see setColumn
-     */
-    public CellLayout setDefaultColumn(Row info) {
-        defaultColSettings = info;
-        return this;
-    }
-
-    /**
-     * Sets the column info for the given column number (the leftmost column is column 0).
-     * This replaces any existing info for the column. Note that more than one column
-     * are allowed to share the same IColumnInfo instance if they have identical properties.
-     * 
-     * @param colNum the column number to modify
-     * @param info the properties of the column, or null if this column should use the
-     * default properties 
-     */
-    public CellLayout setColumn(int colNum, Row info) {
-        while (cols.size() <= colNum) {
-            cols.add(null);
-        }
-
-        cols.set(colNum, info);
-
-        return this;
-    }
-
-    /**
-     * Sets the default row settings for this layout. Unless this is overridden
-     * for an individual row, all rows will use the default settings.
-     * 
-     * @param info the row info object that should be used to set the size
-     * of rows, by default.
-     */
-    public CellLayout setDefaultRow(Row info) {
-        defaultRowSettings = info;
-
-        return this;
-    }
-
-    /**
-     * Sets the row info for the given rows. The topmost row is row 0. Multiple
-     * rows are allowed to share the same RowInfo instance.
-     * 
-     * @param rowNum the row number to set
-     * @param info the row info that will control the sizing of the given row,
-     * or null if the row should use the default settings for this layout.
-     */
-    public CellLayout setRow(int rowNum, Row info) {
-        while (rows.size() <= rowNum) {
-            rows.add(null);
-        }
-
-        rows.set(rowNum, info);
-
-        return this;
-    }
-
-    /**
-     * Returns the row info that controls the size of the given row. Will return
-     * the default row settings for this layout if no custom row info has been
-     * assigned to the row.
-     * 
-     * @param rowNum
-     * @return
-     */
-    private Row getRow(int rowNum, boolean isHorizontal) {
-        if (isHorizontal) {
-            if (rowNum >= rows.size()) {
-                return defaultRowSettings;
-            }
-
-            Row result = (Row) rows.get(rowNum);
-
-            if (result == null) {
-                result = defaultRowSettings;
-            }
-
-            return result;
-        } else {
-            if (rowNum >= cols.size()) {
-                return defaultColSettings;
-            }
-
-            Row result = (Row) cols.get(rowNum);
-
-            if (result == null) {
-                result = defaultColSettings;
-            }
-
-            return result;
-        }
-    }
-
-    /**
-     * Initializes the gridInfo object.
-     * 
-     * @param children controls that are being layed out
-     */
-    private void initGrid(Control[] children) {
-        cache.setControls(children);
-        gridInfo.initGrid(children, this);
-        cachedRowMin = null;
-        cachedColMin = null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite, int, int, boolean)
-     */
-    protected Point computeSize(Composite composite, int wHint, int hHint,
-            boolean flushCache) {
-        Control[] children = composite.getChildren();
-        initGrid(children);
-
-        if (flushCache) {
-            cache.flush();
-        }
-
-        // Determine the amount of whitespace (area that cannot be used by controls)
-        Point emptySpace = totalEmptySpace();
-
-        int[] heightConstraints = computeConstraints(true);
-
-        int width;
-        if (wHint == SWT.DEFAULT) {
-            width = preferredSize(heightConstraints, false);
-        } else {
-            width = wHint - emptySpace.x;
-        }
-
-        int height = hHint;
-        if (hHint == SWT.DEFAULT) {
-            height = preferredSize(
-                    computeSizes(heightConstraints, width, false), true);
-        } else {
-            height = hHint - emptySpace.y;
-        }
-
-        Point preferredSize = new Point(width + emptySpace.x, height
-                + emptySpace.y);
-
-        // At this point we know the layout's preferred size. Now adjust it
-        // if we're smaller than the minimum possible size for the composite.
-
-        // If exactly one dimension of our preferred size is smaller than
-        // the minimum size of our composite, then set that dimension to
-        // the minimum size and recompute the other dimension (for example,
-        // increasing the width to match a shell's minimum width may reduce
-        // the height allocated for a wrapping text widget). There is no
-        // point in doing this if both dimensions are smaller than the
-        // composite's minimum size, since we're already smaller than
-        // we need to be.
-        Point minimumSize = CellLayoutUtil.computeMinimumSize(composite);
-
-        boolean wider = (preferredSize.x >= minimumSize.x);
-        boolean taller = (preferredSize.y >= minimumSize.y);
-
-        if (wider) {
-            if (taller) {
-                // If we're larger in both dimensions, don't adjust the minimum
-                // size.
-                return preferredSize;
-            } else {
-                // If our preferred height is smaller than the minimum height,
-                // recompute the preferred width using the minimum height
-                return computeSize(composite, wHint, minimumSize.y, false);
-            }
-        } else {
-            if (taller) {
-                // If our preferred width is smaller than the minimum width,
-                // recompute the preferred height using the minimum width
-                return computeSize(composite, minimumSize.x, hHint, false);
-            } else {
-                // If both dimensions are smaller than the minimum size,
-                // use the minimum size as our preferred size.
-                return minimumSize;
-            }
-        }
-    }
-
-    int[] computeSizes(int[] constraints, int availableSpace,
-            boolean computingRows) {
-        int[] result = computeMinSizes(constraints, computingRows);
-
-        int totalFixed = sumOfSizes(result);
-        int denominator = getResizeDenominator(computingRows);
-        int numRows = gridInfo.getNumRows(computingRows);
-
-        if (totalFixed < availableSpace) {
-            int remaining = availableSpace - totalFixed;
-
-            for (int idx = 0; idx < numRows && denominator > 0; idx++) {
-                Row row = getRow(idx, computingRows);
-
-                if (row.grows) {
-                    int greed = row.size;
-                    int amount = remaining * greed / denominator;
-
-                    result[idx] += amount;
-                    remaining -= amount;
-                    denominator -= greed;
-                }
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * Computes one dimension of the preferred size of the layout.
-     * 
-     * @param hint contains the result if already known, or SWT.DEFAULT if it needs to be computed
-     * @param constraints contains constraints along the other dimension, or SWT.DEFAULT if none. For
-     * example, if we are computing the preferred row sizes, this would be an array of known column sizes.
-     * @param computingRows if true, this method returns the height (pixels). Otherwise, it returns the
-     * width (pixels).
-     */
-    int preferredSize(int[] constraints, boolean computingRows) {
-        int[] fixedSizes = computeMinSizes(constraints, computingRows);
-
-        return sumOfSizes(fixedSizes)
-                + getDynamicSize(constraints, fixedSizes, computingRows);
-    }
-
-    /**
-     * Computes the sum of all integers in the given array. If any of the entries are SWT.DEFAULT,
-     * the result is SWT.DEFAULT. 
-     */
-    static int sumOfSizes(int[] input) {
-        return sumOfSizes(input, 0, input.length);
-    }
-
-    static int sumOfSizes(int[] input, int start, int length) {
-        int sum = 0;
-        for (int idx = start; idx < start + length; idx++) {
-            int next = input[idx];
-
-            if (next == SWT.DEFAULT) {
-                return SWT.DEFAULT;
-            }
-
-            sum += next;
-        }
-
-        return sum;
-    }
-
-    /**
-     * Returns the preferred dynamic width of the layout 
-     * 
-     * @param constraints
-     * @param fixedSizes
-     * @param computingRows
-     * @return
-     */
-    int getDynamicSize(int[] constraints, int[] fixedSizes,
-            boolean computingRows) {
-        int result = 0;
-        int numerator = getResizeDenominator(computingRows);
-
-        // If no resizable columns, return
-        if (numerator == 0) {
-            return 0;
-        }
-
-        int rowSpacing = computingRows ? verticalSpacing : horizontalSpacing;
-        int colSpacing = computingRows ? horizontalSpacing : verticalSpacing;
-
-        int numControls = gridInfo.controls.length;
-        for (int idx = 0; idx < numControls; idx++) {
-            int controlRowStart = gridInfo.getStartPos(idx, computingRows);
-            int controlRowSpan = getSpan(idx, computingRows);
-            int controlColStart = gridInfo.getStartPos(idx, !computingRows);
-            int controlColSpan = getSpan(idx, !computingRows);
-
-            int denominator = getGrowthRatio(controlRowStart, controlRowSpan,
-                    computingRows);
-
-            if (denominator > 0) {
-
-                int widthHint = sumOfSizes(constraints, controlColStart,
-                        controlColSpan);
-                if (widthHint != SWT.DEFAULT) {
-                    widthHint += colSpacing * (controlColSpan - 1);
-                }
-
-                // Compute the total control size
-                int controlSize = computeControlSize(idx, widthHint,
-                        computingRows);
-
-                // Subtract the amount that overlaps fixed-size columns
-                controlSize -= sumOfSizes(fixedSizes, controlRowStart,
-                        controlRowSpan);
-
-                // Subtract the amount that overlaps spacing between cells
-                controlSize -= (rowSpacing * (controlRowSpan - 1));
-
-                result = Math
-                        .max(result, controlSize * numerator / denominator);
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * Computes one dimension of a control's size
-     * 
-     * @param control the index of the control being computed
-     * @param constraint the other dimension of the control's size, or SWT.DEFAULT if unknown
-     * @param computingHeight if true, this method returns a height. Else it returns a width
-     * @return the preferred height or width of the control, in pixels
-     */
-    int computeControlSize(int control, int constraint, boolean computingHeight) {
-        CellData data = gridInfo.getCellData(control);
-
-        // If we're looking for the preferred size of the control (without hints)
-        if (constraint == SWT.DEFAULT) {
-            Point result = data.computeSize(cache.getCache(control),
-                    SWT.DEFAULT, SWT.DEFAULT);
-
-            // Return result
-            if (computingHeight) {
-                return result.y;
-            }
-            return result.x;
-        }
-
-        // Compute a height
-        if (computingHeight) {
-            return data.computeSize(cache.getCache(control), constraint,
-                    SWT.DEFAULT).y;
-        }
-
-        return data.computeSize(cache.getCache(control), SWT.DEFAULT,
-                constraint).x;
-    }
-
-    /**
-     * Returns the relative amount that a control starting on the given row and spanning
-     * the given length will contribute 
-     * 
-     * @param start
-     * @param length
-     * @param computingRows
-     * @return
-     */
-    int getGrowthRatio(int start, int length, boolean computingRows) {
-        boolean willGrow = false;
-        int sum = 0;
-
-        int end = start + length;
-        for (int idx = start; idx < end; idx++) {
-            Row row = getRow(idx, computingRows);
-
-            if (row.largerThanChildren && row.grows) {
-                willGrow = true;
-            }
-
-            sum += row.size;
-        }
-
-        if (!willGrow) {
-            return 0;
-        }
-
-        return sum;
-    }
-
-    int[] computeMinSizes(int[] constraints, boolean computingRows) {
-        // We cache the result of this function since it might be called more than once
-        // for a single size computation
-        int[] result = computingRows ? cachedRowMin : cachedColMin;
-
-        if (result == null) {
-            int columnSpacing;
-            int rowSpacing;
-
-            if (computingRows) {
-                columnSpacing = horizontalSpacing;
-                rowSpacing = verticalSpacing;
-            } else {
-                columnSpacing = verticalSpacing;
-                rowSpacing = horizontalSpacing;
-            }
-
-            int rowCount = gridInfo.getNumRows(computingRows);
-            result = new int[rowCount];
-            int colCount = gridInfo.getNumRows(!computingRows);
-            int[] rowControls = new int[colCount];
-
-            int lastGrowingRow = -1;
-
-            for (int idx = 0; idx < rowCount; idx++) {
-                Row row = getRow(idx, computingRows);
-
-                if (row.grows) {
-                    // There is no minimum size for growing rows
-                    lastGrowingRow = idx;
-                    result[idx] = 0;
-                } else {
-                    result[idx] = row.size;
-
-                    if (row.largerThanChildren) {
-                        // Determine which controls are in this row
-                        gridInfo.getRow(rowControls, idx, computingRows);
-
-                        for (int colIdx = 0; colIdx < rowControls.length; colIdx++) {
-                            int control = rowControls[colIdx];
-
-                            // The getRow method will insert -1 into empty cells... skip these.
-                            if (control != -1) {
-                                int controlStart = gridInfo.getStartPos(
-                                        control, computingRows);
-                                int controlSpan = getSpan(control,
-                                        computingRows);
-
-                                // If the control ends on this row and does not span any growing rows
-                                if (controlStart + controlSpan - 1 == idx
-                                        && controlStart > lastGrowingRow) {
-                                    int controlColStart = gridInfo.getStartPos(
-                                            control, !computingRows);
-                                    int controlColSpan = getSpan(control,
-                                            !computingRows);
-                                    int controlRowSpan = getSpan(control,
-                                            computingRows);
-
-                                    // Compute the width constraint for this control
-                                    int spannedWidth = sumOfSizes(constraints,
-                                            controlColStart, controlColSpan);
-                                    if (spannedWidth != SWT.DEFAULT) {
-                                        spannedWidth += (columnSpacing * (controlSpan - 1));
-                                    }
-
-                                    int controlHeight = computeControlSize(
-                                            control, spannedWidth,
-                                            computingRows);
-
-                                    // Determine how much of the control spans already allocated columns
-                                    int allocatedHeight = sumOfSizes(result,
-                                            controlColStart, controlRowSpan - 1)
-                                            + (rowSpacing * (controlRowSpan - 1));
-
-                                    result[idx] = Math.max(result[idx],
-                                            controlHeight - allocatedHeight);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        // Cache this result
-        if (computingRows) {
-            cachedRowMin = result;
-        } else {
-            cachedColMin = result;
-        }
-
-        return result;
-    }
-
-    /**
-     * Returns the height constraints that should be used when computing column widths. Requires initGrid
-     * to have been called first.
-     * 
-     * @param result Will contain the height constraint for row i in the ith position of the array, 
-     * or SWT.DEFAULT if there is no constraint on that row.
-     */
-    private int[] computeConstraints(boolean horizontal) {
-        // Initialize the height constraints for each row (basically, these will always be SWT.DEFAULT,
-        // except for rows of type FixedRow, which have a constant height).
-        int numRows = gridInfo.getNumRows(horizontal);
-        int[] result = new int[numRows];
-
-        for (int idx = 0; idx < numRows; idx++) {
-            Row row = getRow(idx, horizontal);
-
-            if (!(row.grows || row.largerThanChildren)) {
-                result[idx] = row.size;
-            } else {
-                result[idx] = SWT.DEFAULT;
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * Computes the total greediness of all rows
-     * 
-     * @return the total greediness of all rows
-     */
-    private int getResizeDenominator(boolean horizontal) {
-        int result = 0;
-        int numRows = gridInfo.getNumRows(horizontal);
-
-        for (int idx = 0; idx < numRows; idx++) {
-            Row row = getRow(idx, horizontal);
-
-            if (row.grows) {
-                result += row.size;
-            }
-        }
-
-        return result;
-    }
-
-    //	/**
-    //	 * Computes the total fixed height of all rows
-    //	 * 
-    //	 * @param widthConstraints array where the nth entry indicates the known width of the
-    //	 * nth column, or SWT.DEFAULT if the width is still unknown
-    //	 * 
-    //	 * @return the total fixed height for all rows
-    //	 */
-    //	private int getMinimumSize(int[] constraints, boolean horizontal) {
-    //		Control[] controls = new Control[gridInfo.getRows()];
-    //		int result = 0;
-    //		int numRows = gridInfo.getRows();
-    //		
-    //		for (int idx = 0; idx < numRows; idx++) {
-    //			result += getRow(idx).getFixedHeight(gridInfo, widthConstraints, idx);
-    //		}		
-    //		
-    //		return result;
-    //	}
-
-    protected int getSpan(int controlId, boolean isRow) {
-        CellData data = gridInfo.getCellData(controlId);
-
-        if (isRow) {
-            return data.verticalSpan;
-        }
-        return data.horizontalSpan;
-    }
-
-    /**
-     * Returns the total space that will be required for margins and spacing between and
-     * around cells. initGrid(...) must have been called first.
-     * 
-     * @return
-     */
-    private Point totalEmptySpace() {
-        int numRows = gridInfo.getRows();
-
-        return new Point((2 * marginWidth)
-                + ((gridInfo.getCols() - 1) * horizontalSpacing),
-                (2 * marginHeight) + ((numRows - 1) * verticalSpacing));
-    }
-
-    /**
-     * Returns the absolute positions of each row, given the start position, row sizes, 
-     * and row spacing 
-     * 
-     * @param startPos position of the initial row
-     * @param sizes array of row sizes (pixels)
-     * @param spacing space between each row (pixels)
-     * @return array of row positions. The result size is sizes.length + 1. The last entry is
-     * the position of the end of the layout.
-     */
-    private static int[] computeRowPositions(int startPos, int[] sizes,
-            int spacing) {
-        int[] result = new int[sizes.length + 1];
-
-        result[0] = startPos;
-        for (int idx = 0; idx < sizes.length; idx++) {
-            result[idx + 1] = result[idx] + sizes[idx] + spacing;
-        }
-
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite, boolean)
-     */
-    protected void layout(Composite composite, boolean flushCache) {
-        Control[] children = composite.getChildren();
-        
-        // If there are no children then this is a NO-OP
-        if (children.length == 0)
-        	return;
-        	
-        initGrid(children);
-
-        if (flushCache) {
-            cache.flush();
-        }
-
-        Point emptySpace = totalEmptySpace();
-
-        // Compute the area actually available for controls (once the margins and spacing is removed)
-        int availableWidth = composite.getClientArea().width - emptySpace.x;
-        int availableHeight = composite.getClientArea().height - emptySpace.y;
-
-        int[] heights = computeConstraints(true);
-        int[] widths = new int[gridInfo.getCols()];
-
-        // Compute the actual column widths
-        widths = computeSizes(heights, availableWidth, false);
-
-        // Compute the actual row heights (based on the actual column widths)
-        heights = computeSizes(widths, availableHeight, true);
-
-        Rectangle currentCell = new Rectangle(0, 0, 0, 0);
-
-        int[] starty = computeRowPositions(composite.getClientArea().y
-                + marginHeight, heights, verticalSpacing);
-        int[] startx = computeRowPositions(composite.getClientArea().x
-                + marginWidth, widths, horizontalSpacing);
-
-        int numChildren = gridInfo.controls.length;
-        for (int controlId = 0; controlId < numChildren; controlId++) {
-            CellData data = gridInfo.getCellData(controlId);
-
-            int row = gridInfo.controlRow[controlId];
-            int col = gridInfo.controlCol[controlId];
-
-            currentCell.x = startx[col];
-            currentCell.width = startx[col + data.horizontalSpan]
-                    - currentCell.x - horizontalSpacing;
-
-            currentCell.y = starty[row];
-            currentCell.height = starty[row + data.verticalSpan]
-                    - currentCell.y - verticalSpacing;
-
-            data.positionControl(cache.getCache(controlId), currentCell);
-        }
-    }
-
-    /**
-     * @return
-     */
-    public int getColumns() {
-        return numCols;
-    }
-
-    public boolean canGrow(Composite composite, boolean horizontally) {
-        initGrid(composite.getChildren());
-
-        int numRows = gridInfo.getNumRows(horizontally);
-
-        for (int idx = 0; idx < numRows; idx++) {
-            Row row = getRow(idx, horizontally);
-
-            if (row.grows) {
-                return true;
-            }
-        }
-
-        return false;
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayoutUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayoutUtil.java
deleted file mode 100644
index 811bcc8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/CellLayoutUtil.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Contains helper methods for CellLayout. Many of these methods are workarounds for
- * known SWT bugs. They should be updated once the original bugs are fixed in SWT.
- * 
- * @since 3.0
- */
-class CellLayoutUtil {
-
-    private static Point zero = new Point(0, 0);
-
-    private static Point minimumShellSize;
-
-    private static CellData defaultData = new CellData();
-
-    /**
-     * Returns the minimum size for the given composite. That is, 
-     * this returns the smallest values that will have any effect 
-     * when passed into the composite's setSize method. Passing any
-     * smaller value is equivalent to passing the minimum size.
-     * <p>
-     * This method is intended for use by layouts. The layout can
-     * use this information when determining its preferred size. 
-     * Returning a preferred size smaller than the composite's 
-     * minimum size is pointless since the composite could never
-     * be set to that size. The layout may choose a different preferred
-     * size in this situation. 
-     * </p><p>
-     * Note that this method is only concerned with restrictions imposed
-     * by the composite; not it's layout. If the only restriction on the 
-     * composite's size is imposed by the layout, then this method returns (0,0). 
-     * </p><p>
-     * Currently SWT does not expose this information through
-     * API, so this method is developed using trial-and-error. Whenever
-     * a composite is discovered that will not accept sizes below
-     * a certain threshold on some platform, this method should be
-     * updated to reflect that fact. 
-     * </p><p>
-     * At this time, the only known composite that has a minimum size
-     * are Shells. 
-     * </p>
-     * 
-     * @param toCompute the composite whose minimum size is being computed
-     * @return a size, in pixels, which is the smallest value that can be
-     * passed into the composite's setSize(...) method.
-     */
-    static Point computeMinimumSize(Composite toCompute) {
-        if (toCompute instanceof Shell) {
-            if (minimumShellSize == null) {
-                Shell testShell = new Shell((Shell) toCompute, SWT.DIALOG_TRIM
-                        | SWT.RESIZE);
-                testShell.setSize(0, 0);
-                minimumShellSize = testShell.getSize();
-                testShell.dispose();
-            }
-
-            return minimumShellSize;
-        }
-
-        // If any other composites are discovered to have minimum sizes,
-        // add heuristics for them here.
-
-        // Otherwise, the composite can be reduced to size (0,0)
-
-        return zero;
-    }
-
-    /**
-     * Returns the CellData associated with the given control. If the control
-     * does not have any layout data associated with it, a default object is returned.
-     * If the control has a GridData object associated with it, an equivalent
-     * CellData object will be returned.
-     *  
-     * @param control
-     * @return
-     */
-    static CellData getData(Control control) {
-        Object layoutData = control.getLayoutData();
-        CellData data = null;
-
-        if (layoutData instanceof CellData) {
-            data = (CellData) layoutData;
-        } else if (layoutData instanceof GridData) {
-            data = new CellData((GridData) layoutData);
-        }
-
-        if (data == null) {
-            data = defaultData;
-        }
-
-        return data;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/GridInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/GridInfo.java
deleted file mode 100644
index 56dc949..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/GridInfo.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Computes and the positions of controls in a CellLayout, based on their span.
- */
-class GridInfo {
-    private int cols = 0;
-
-    private int rows = 0;
-
-    private int[] gridInfo;
-
-    int[] controlRow;
-
-    int[] controlCol;
-
-    private CellData[] cellData;
-
-    Control[] controls;
-
-    /**
-     * Initialize the grid
-     * 
-     * @param newControls
-     * @param cols
-     */
-    public void initGrid(Control[] newControls, CellLayout layout) {
-        cols = layout.getColumns();
-        controls = newControls;
-
-        int area = 0;
-        int totalWidth = 0;
-
-        controlRow = new int[controls.length];
-        controlCol = new int[controls.length];
-
-        // Get the CellData objects for each control, and compute
-        // the total number of cells spanned by controls in this layout.
-        cellData = new CellData[controls.length];
-        for (int idx = 0; idx < controls.length; idx++) {
-            if (controls[idx] == null) {
-                continue;
-            }
-
-            CellData next = CellLayoutUtil.getData(controls[idx]);
-            cellData[idx] = next;
-            area += next.horizontalSpan * next.verticalSpan;
-            totalWidth += next.horizontalSpan;
-        }
-
-        // Compute the number of columns
-        if (cols == 0) {
-            cols = totalWidth;
-        }
-
-        // Compute the number of rows
-        rows = area / cols;
-        if (area % cols > 0) {
-            // Ensure we count any partial rows
-            rows++;
-        }
-
-        area = rows * cols;
-
-        // Allocate the gridInfo array
-        gridInfo = new int[area];
-        for (int idx = 0; idx < area; idx++) {
-            gridInfo[idx] = -1;
-        }
-
-        int infoIdx = 0;
-        // Compute the positions of each control
-        for (int idx = 0; idx < controls.length; idx++) {
-            CellData data = cellData[idx];
-
-            // Find an empty position to insert the control
-            while (gridInfo[infoIdx] >= 0) {
-                infoIdx++;
-            }
-
-            controlRow[idx] = infoIdx / cols;
-            controlCol[idx] = infoIdx % cols;
-
-            // Insert the new control here
-            for (int rowIdx = 0; rowIdx < data.verticalSpan; rowIdx++) {
-                for (int colIdx = 0; colIdx < data.horizontalSpan; colIdx++) {
-                    gridInfo[infoIdx + rowIdx * cols + colIdx] = idx;
-                }
-            }
-
-            infoIdx += data.horizontalSpan;
-        }
-    }
-
-    public int getRows() {
-        return rows;
-    }
-
-    public int getStartPos(int control, boolean row) {
-        if (row) {
-            return controlRow[control];
-        } else {
-            return controlCol[control];
-        }
-    }
-
-    /**
-     * Returns the number of rows or columns
-     * 
-     * @param isRow if true, returns the number of rows. If false, returns the number of columns
-     * @return
-     */
-    public int getNumRows(boolean isRow) {
-        if (isRow) {
-            return rows;
-        } else {
-			return cols;
-		}
-    }
-
-    public void getRow(int[] result, int rowId, boolean horizontal) {
-        if (horizontal) {
-            int prev = -1;
-            for (int colIdx = 0; colIdx < cols; colIdx++) {
-                int next = gridInfo[cols * rowId + colIdx];
-
-                if (prev == next) {
-                    result[colIdx] = -1;
-                } else {
-					result[colIdx] = next;
-				}
-
-                prev = next;
-            }
-        } else {
-            int prev = -1;
-            for (int rowIdx = 0; rowIdx < rows; rowIdx++) {
-                int next = gridInfo[cols * rowIdx + rowId];
-
-                if (prev == next) {
-                    result[rowIdx] = -1;
-                } else {
-					result[rowIdx] = next;
-				}
-
-                prev = next;
-            }
-        }
-    }
-
-    public CellData getCellData(int controlId) {
-        return cellData[controlId];
-    }
-
-    public int getCols() {
-        return cols;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ICachingLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ICachingLayout.java
deleted file mode 100644
index 0bc9df9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ICachingLayout.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Layouts that implement this interface are capable of caching the
- * sizes of child controls in a manner that allows the information
- * for a single control to be flushed without affecting the remaining
- * controls. These layouts will ignore the "changed" arguments to layout(...)
- * and computeSize(...), however they will flush their cache for individual
- * controls when the flush(...) method is called.
- * <p>
- * This allows for much more efficient layouts, since most of the cache
- * can be reused when a child control changes.
- * </p>
- * 
- * @since 3.0
- */
-public interface ICachingLayout {
-    /**
-     * Flushes cached data for the given control
-     */
-    public void flush(Control dirtyControl);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ITrimManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ITrimManager.java
deleted file mode 100644
index 052efe3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/ITrimManager.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-
-/**
- * Allow programmatic access to the workbench window trim areas.
- * 
- * <p>
- * <b>Note:</b> This is highly experimental and will change between M4 and M5.
- * For example, the current trim area IDs will be changes to Strings, amongst
- * other things.
- * </p>
- * 
- * @since 3.2
- */
-public interface ITrimManager {
-
-	/**
-	 * Trim area location.
-	 */
-	public static final int TOP = SWT.TOP;
-
-	/**
-	 * Trim area location.
-	 */
-	public static final int BOTTOM = SWT.BOTTOM;
-
-	/**
-	 * Trim area location.
-	 */
-	public static final int LEFT = SWT.LEFT;
-
-	/**
-	 * Trim area location.
-	 */
-	public static final int RIGHT = SWT.RIGHT;
-
-	/**
-	 * Trim area location.
-	 */
-	public static final int NONTRIM = SWT.DEFAULT;
-
-	/**
-	 * Adds the given control to the layout's trim. The same as calling
-	 * addTrim(areaId, trim, null);
-	 * 
-	 * @param trim
-	 *            new window trim to be added
-	 * @param areaId
-	 *            the area ID
-	 * @see #getAreaIds()
-	 * @see #addTrim(int, IWindowTrim, IWindowTrim)
-	 */
-	public void addTrim(int areaId, IWindowTrim trim);
-
-	/**
-	 * Adds the given control to the layout's trim. Note that this must be
-	 * called for every trim control. If the given widget is already a trim
-	 * widget, it will be moved to the new position. Specifying a position
-	 * allows a new widget to be inserted between existing trim widgets.
-	 * 
-	 * <p>
-	 * For example, this method allows the caller to say "insert this new
-	 * control as trim along the bottom of the layout, to the left of this
-	 * existing control".
-	 * </p>
-	 * 
-	 * @param trim
-	 *            new window trim to be added
-	 * @param areaId
-	 *            the area ID
-	 * @param beforeMe
-	 *            trim to insert before, <code>null</code> to insert at the
-	 *            end
-	 * @see #getAreaIds()
-	 */
-	public void addTrim(int areaId, IWindowTrim trim, IWindowTrim beforeMe);
-
-	/**
-	 * Removes the given window trim. Note that this has no effect if window
-	 * trim is not our window trim.
-	 * 
-	 * @param toRemove
-	 *            a piece of trim.
-	 */
-	public void removeTrim(IWindowTrim toRemove);
-
-	/**
-	 * Return the window trim for a given id.
-	 * 
-	 * @param id
-	 *            the id
-	 * @return the window trim, or <code>null</code> if not found.
-	 */
-	public IWindowTrim getTrim(String id);
-
-	/**
-	 * Return all of the IDs for the currently supported trim areas. This is
-	 * <b>experimental</b> and will be changing.
-	 * 
-	 * @return the list of IDs that can be used with area descriptions. We
-	 *         currently support SWT.TOP, SWT.BOTTOM, SWT.LEFT, and SWT.RIGHT.
-	 * @since 3.2
-	 */
-	public int[] getAreaIds();
-
-	/**
-	 * Return a copy of the IWindowTrim in an ordered array. This will not
-	 * return <code>null</code>. This array can be used to shuffle items
-	 * around in {@link #updateAreaTrim(int, List, boolean) }.
-	 * 
-	 * @param areaId
-	 *            the trim area id
-	 * @return the IWindowTrim array
-	 * @since 3.2
-	 * @see #getAreaIds()
-	 */
-	public List getAreaTrim(int areaId);
-
-	/**
-	 * Update ID's area description with the new window trim ordering. This
-	 * applies the IWindowTrim contains in the array to the trim area named
-	 * "ID".
-	 * 
-	 * @param id
-	 *            the trim area ID
-	 * @param trim
-	 *            the trim array must not be <code>null</code>.
-	 * @param removeExtra
-	 *            if <code>true</code> the any trim in the specified trim area
-	 *            that's not contained in the List is removed from the window
-	 *            trim (but not disposed()). If <code>false</code> then the
-	 *            extra trim is shuffled to the beginning of the trim area.
-	 * @since 3.2
-	 * @see #getAreaIds()
-	 */
-	public void updateAreaTrim(int id, List trim, boolean removeExtra);
-
-	/**
-	 * This method returns an aggregate array of all trim items known to this
-	 * TrimLayout.
-	 * 
-	 * @return The List of all IWindowTrim elements
-	 * @since 3.2
-	 */
-	public List getAllTrim();
-
-	/**
-	 * Update the visibility of the trim controls. It updates any docking
-	 * handles as well. It has no effect on visiblity if the window trim doesn't
-	 * belong to this TrimLayout.
-	 * 
-	 * @param trim
-	 *            the trim to update
-	 * @param visible
-	 *            visible or not
-	 * @since 3.2
-	 */
-	public void setTrimVisible(IWindowTrim trim, boolean visible);
-	
-	/**
-	 * Force the trim areas to layout to pick up changes
-	 * 
-	 * @since 3.2
-	 */
-	public void forceLayout();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/IWindowTrim.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/IWindowTrim.java
deleted file mode 100644
index 7c43d6b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/IWindowTrim.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Interface for trim controls that can be docked to the edge of a Workbench
- * window using drag-and-drop.
- * 
- * <p>
- * <b>Note:</b> This interface is highly experimental, and will probably change
- * between M4 and M5. For example, it will support a "lifecycle" that allows the
- * {@link ITrimManager} to update its modifiers (like SWT.TOP or SWT.LEFT) so the
- * IWindowTrim can dispose and re-create its control. This will likely effect
- * methods like {@link #dock(int) }, {@link #getControl() },
- * {@link #getValidSides() }, etc.
- * </p>
- * 
- * @since 3.2
- */
-public interface IWindowTrim {
-	/**
-	 * Returns the control representing this trim widget, or null if it has not
-	 * yet been created.
-	 * 
-	 * @return the control for the trim widget.
-	 */
-	Control getControl();
-
-	/**
-	 * Returns the set of sides that this trim can be docked onto.
-	 * 
-	 * @return bitwise OR of one or more of SWT.TOP, SWT.BOTTOM, SWT.LEFT, and
-	 *         SWT.RIGHT
-	 */
-	int getValidSides();
-
-	/**
-	 * Called to notify the trim object that it has been docked on the given
-	 * side of the layout
-	 * 
-	 * @param dropSide
-	 *            the trim drop area
-	 * 
-	 */
-	void dock(int dropSide);
-
-	/**
-	 * Each piece of window trim must have a unique ID to participate fully as
-	 * trim.
-	 * 
-	 * @return The unique id
-	 * @since 3.2
-	 */
-	public String getId();
-
-	/**
-	 * Returns the (localized) display name for this trim. This is used, for
-	 * example, to construct menu items...
-	 * 
-	 * @return The display name for this trim
-	 * 
-	 * @since 3.2
-	 */
-	public String getDisplayName();
-
-	/**
-	 * Determines whether a particular trim can be 'closed' using the common
-	 * Trim UI.
-	 * 
-	 * @return true if the UI should profer the close affordance; false
-	 *         otherwise
-	 * 
-	 * @since 3.2
-	 */
-	public boolean isCloseable();
-
-	/**
-	 * This method is called when the trim UI has closed (hidden) the trim. The
-	 * controls associated with the trim will have already been removed from the
-	 * trim layout. The implementor should take any necessary clean up actions
-	 * here.
-	 * 
-	 * @since 3.2
-	 */
-	public void handleClose();
-
-	/**
-	 * Overrides the preferred width of the control (pixels). If SWT.DEFAULT,
-	 * then the control's preferred width will be used. This has no effect for
-	 * horizontally resizable controls.
-	 * 
-	 * @return pixels, or SWT.DEFAULT
-	 * @since 3.2
-	 */
-	public int getWidthHint();
-
-	/**
-	 * Overrides the preferred height of the control (pixels). If SWT.DEFAULT,
-	 * then the control's preferred height will be used. This has no effect for
-	 * vertically resizable controls.
-	 * 
-	 * @return pixels, or SWT.DEFAULT
-	 * @since 3.2
-	 */
-	public int getHeightHint();
-
-	/**
-	 * If true, the control will be resized with the layout. If there is more
-	 * than one resizable control on the same side of the layout, the available
-	 * space will be divided equally among all the resizeable controls.
-	 * 
-	 * @return <code>true</code> or <code>false</code>.
-	 * @since 3.2
-	 */
-	public boolean isResizeable();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutCache.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutCache.java
deleted file mode 100644
index 49f6cad..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutCache.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Caches the preferred sizes of an array of controls
- * 
- * @since 3.0
- */
-public class LayoutCache {
-    private SizeCache[] caches = new SizeCache[0];
-
-    /**
-     * Creates an empty layout cache
-     */
-    public LayoutCache() {
-    }
-
-    /**
-     * Creates a cache for the given array of controls
-     * 
-     * @param controls
-     */
-    public LayoutCache(Control[] controls) {
-        rebuildCache(controls);
-    }
-
-    /**
-     * Returns the size cache for the given control
-     * 
-     * @param idx
-     * @return
-     */
-    public SizeCache getCache(int idx) {
-        return caches[idx];
-    }
-
-    /**
-     * Sets the controls that are being cached here. If these are the same
-     * controls that were used last time, this method does nothing. Otherwise,
-     * the cache is flushed and a new cache is created for the new controls.
-     * 
-     * @param controls
-     */
-    public void setControls(Control[] controls) {
-        // If the number of controls has changed, discard the entire cache
-        if (controls.length != caches.length) {
-            rebuildCache(controls);
-            return;
-        }
-
-        for (int idx = 0; idx < controls.length; idx++) {
-            caches[idx].setControl(controls[idx]);
-        }
-    }
-
-    /**
-     * Creates a new size cache for the given set of controls, discarding any
-     * existing cache.
-     * 
-     * @param controls the controls whose size is being cached
-     */
-    private void rebuildCache(Control[] controls) {
-        SizeCache[] newCache = new SizeCache[controls.length];
-
-        for (int idx = 0; idx < controls.length; idx++) {
-            // Try to reuse existing caches if possible
-            if (idx < caches.length) {
-                newCache[idx] = caches[idx];
-                newCache[idx].setControl(controls[idx]);
-            } else {
-                newCache[idx] = new SizeCache(controls[idx]);
-            }
-        }
-
-        caches = newCache;
-    }
-
-    /**
-     * Computes the preferred size of the nth control
-     * 
-     * @param controlIndex index of the control whose size will be computed
-     * @param widthHint width of the control (or SWT.DEFAULT if unknown)
-     * @param heightHint height of the control (or SWT.DEFAULT if unknown)
-     * @return the preferred size of the control
-     */
-    public Point computeSize(int controlIndex, int widthHint, int heightHint) {
-        return caches[controlIndex].computeSize(widthHint, heightHint);
-    }
-
-    /**
-     * Flushes the cache for the given control. This should be called if exactly
-     * one of the controls has changed but the remaining controls remain unmodified
-     * 
-     * @param controlIndex
-     */
-    public void flush(int controlIndex) {
-        caches[controlIndex].flush();
-    }
-
-    /**
-     * Flushes the cache.
-     */
-    public void flush() {
-        for (int idx = 0; idx < caches.length; idx++) {
-            caches[idx].flush();
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutUtil.java
deleted file mode 100644
index 944f36d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/LayoutUtil.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Contains various methods for manipulating layouts
- * 
- * @since 3.0
- */
-public class LayoutUtil {
-
-    /**
-     * Should be called whenever a control's contents have changed. Will
-     * trigger a layout parent controls if necessary.
-     * 
-     * @param changedControl
-     */
-    public static void resize(Control changedControl) {
-        Composite parent = changedControl.getParent();
-
-        Layout parentLayout = parent.getLayout();
-
-        if (parentLayout instanceof ICachingLayout) {
-            ((ICachingLayout) parentLayout).flush(changedControl);
-        }
-
-        if (parent instanceof Shell) {
-            parent.layout(true);
-        } else {
-            Rectangle currentBounds = parent.getBounds();
-
-            resize(parent);
-
-            // If the parent was resized, then it has already triggered a
-            // layout. Otherwise, we need to manually force it to layout again.
-            if (currentBounds.equals(parent.getBounds())) {
-                parent.layout(true);
-            }
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/Row.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/Row.java
deleted file mode 100644
index 130f060..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/Row.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-/**
- * Describes a single row (or column) in a CellLayout
- * 
- * @since 3.0
- */
-public class Row {
-    /**
-     * True iff this row will expand to fill available space
-     */
-    boolean grows = false;
-
-    /**
-     * Size of this row. For growing rows, this is the relative size
-     * of the row with respect to other rows (ie: a row of size 100 is twice
-     * as wide as a row of size 50). For fixed rows, this is the absolute size
-     * of the row, in pixels. 
-     */
-    int size = 0;
-
-    /**
-     * True iff this row should query its child controls for its size.
-     */
-    boolean largerThanChildren = true;
-
-    /**
-     * Creates a fixed-size row with the given width (pixels).
-     * The preferred sizes of child controls are ignored.
-     * 
-     * @param size
-     */
-    public Row(int size) {
-        largerThanChildren = false;
-        this.size = size;
-        grows = false;
-    }
-
-    /**
-     * Creates a row that automatically computes its size based on the preferred
-     * sizes of its children.
-     * 
-     * @param growing
-     */
-    public Row(boolean growing) {
-        this.grows = growing;
-
-        if (growing) {
-            size = 100;
-        }
-    }
-
-    /**
-     * Creates a growing row.
-     * 
-     * @param sizeRatio determines the size of this row with respect to other growing rows
-     * (for example, a row with size = 3 will be 3x as large as a row with size = 1)
-     * @param largerThanChildren true iff the preferred size of this row should take into
-     * account the preferred sizes of its children.
-     */
-    public Row(int size, boolean largerThanChildren) {
-        this.grows = true;
-        this.size = size;
-        this.largerThanChildren = largerThanChildren;
-    }
-
-    /**
-     * Construct and return a typical growing row.
-     * 
-     * @return a growing row
-     */
-    public static Row growing() {
-        return new Row(100, true);
-    }
-
-    /**
-     * Construct and return a growing row with custom properties
-     * 
-     * @param size relative size of this row with respect to other growing rows
-     * @param largerThanChildren true iff the preferred size of this row should
-     * be based on the preferred sizes of its children
-     * @return a new Row
-     */
-    public static Row growing(int size, boolean largerThanChildren) {
-        return new Row(size, largerThanChildren);
-    }
-
-    /**
-     * Construct and return a fixed-size row. The row will not grow when the layout
-     * is resized, and its size will be computed from the default sizes of its children.
-     * 
-     * @return a new Row
-     */
-    public static Row fixed() {
-        return new Row(false);
-    }
-
-    /**
-     * Construct and return a fixed-size row. The row will always have the given
-     * width, regardless of the size of the layout or the preferred sizes of its children. 
-     * 
-     * @param pixels size of the row
-     * @return a fixed-size row with the given width (in pixels)
-     */
-    public static Row fixed(int pixels) {
-        return new Row(pixels);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/SizeCache.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/SizeCache.java
deleted file mode 100644
index 7540370..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/SizeCache.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.ProgressBar;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.Scale;
-import org.eclipse.swt.widgets.Slider;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.Tree;
-
-/**
- * Caches the preferred size of an SWT control
- * 
- * @since 3.0
- */
-public class SizeCache {
-    private Control control;
-
-    private Point preferredSize;
-
-    private Point cachedWidth;
-
-    private Point cachedHeight;
-
-    /**
-     * True iff we should recursively flush all children on the next layout
-     */
-    private boolean flushChildren;
-
-    /**
-     * True iff changing the height hint does not affect the preferred width and changing
-     * the width hint does not change the preferred height
-     */
-    private boolean independentDimensions = false;
-
-    /**
-     * True iff the preferred height for any hint larger than the preferred width will not
-     * change the preferred height.
-     */
-    private boolean preferredWidthOrLargerIsMinimumHeight = false;
-
-    // HACK: these values estimate how much to subtract from the width and height
-    // hints that get passed into computeSize, in order to produce a result
-    // that is exactly the desired size. To be removed once bug 46112 is fixed (note:
-    // bug 46112 is currently flagged as a duplicate, but there is still no workaround).
-    private int widthAdjustment = 0;
-
-    private int heightAdjustment = 0;
-
-    // END OF HACK
-
-    public SizeCache() {
-        this(null);
-    }
-
-    /**
-     * Creates a cache for size computations on the given control
-     * 
-     * @param control the control for which sizes will be calculated, 
-     * or null to always return (0,0) 
-     */
-    public SizeCache(Control control) {
-        setControl(control);
-    }
-
-    /**
-     * Sets the control whose size is being cached. Does nothing (will not
-     * even flush the cache) if this is the same control as last time. 
-     * 
-     * @param newControl the control whose size is being cached, or null to always return (0,0)
-     */
-    public void setControl(Control newControl) {
-        if (newControl != control) {
-            control = newControl;
-            if (control == null) {
-                independentDimensions = true;
-                preferredWidthOrLargerIsMinimumHeight = false;
-                widthAdjustment = 0;
-                heightAdjustment = 0;
-            } else {
-                independentDimensions = independentLengthAndWidth(control);
-                preferredWidthOrLargerIsMinimumHeight = isPreferredWidthMaximum(control);
-                computeHintOffset(control);
-                flush();
-            }
-        }
-    }
-
-    /**
-     * Returns the control whose size is being cached
-     * 
-     * @return the control whose size is being cached, or null if this cache always returns (0,0)
-     */
-    public Control getControl() {
-        return control;
-    }
-
-    /**
-     * Flush the cache (should be called if the control's contents may have changed since the
-     * last query)
-     */
-    public void flush() {
-        flush(true);
-    }
-
-    public void flush(boolean recursive) {
-        preferredSize = null;
-        cachedWidth = null;
-        cachedHeight = null;
-        this.flushChildren = recursive;
-    }
-
-    private Point getPreferredSize() {
-        if (preferredSize == null) {
-            preferredSize = computeSize(control, SWT.DEFAULT, SWT.DEFAULT);
-        }
-
-        return preferredSize;
-    }
-
-    /**
-     * Computes the preferred size of the control.
-     *  
-     * @param widthHint the known width of the control (pixels) or SWT.DEFAULT if unknown
-     * @param heightHint the known height of the control (pixels) or SWT.DEFAULT if unknown
-     * @return the preferred size of the control
-     */
-    public Point computeSize(int widthHint, int heightHint) {
-        if (control == null) {
-            return new Point(0, 0);
-        }
-
-        // If both dimensions were supplied in the input, return them verbatim
-        if (widthHint != SWT.DEFAULT && heightHint != SWT.DEFAULT) {
-            return new Point(widthHint, heightHint);
-        }
-
-        // No hints given -- find the preferred size
-        if (widthHint == SWT.DEFAULT && heightHint == SWT.DEFAULT) {
-            return Geometry.copy(getPreferredSize());
-        }
-
-        // If the length and width are independent, compute the preferred size
-        // and adjust whatever dimension was supplied in the input
-        if (independentDimensions) {
-            Point result = Geometry.copy(getPreferredSize());
-
-            if (widthHint != SWT.DEFAULT) {
-                result.x = widthHint;
-            }
-
-            if (heightHint != SWT.DEFAULT) {
-                result.y = heightHint;
-            }
-
-            return result;
-        }
-
-        // Computing a height
-        if (heightHint == SWT.DEFAULT) {
-            // If we know the control's preferred size
-            if (preferredSize != null) {
-                // If the given width is the preferred width, then return the preferred size
-                if (widthHint == preferredSize.x) {
-                    return Geometry.copy(preferredSize);
-                }
-            }
-
-            // If we have a cached height measurement
-            if (cachedHeight != null) {
-                // If this was measured with the same width hint
-                if (cachedHeight.x == widthHint) {
-                    return Geometry.copy(cachedHeight);
-                }
-            }
-
-            // If this is a control where any hint larger than the
-            // preferred width results in the minimum height, determine if
-            // we can compute the result based on the preferred height
-            if (preferredWidthOrLargerIsMinimumHeight) {
-                // Computed the preferred size (if we don't already know it)
-                getPreferredSize();
-
-                // If the width hint is larger than the preferred width, then
-                // we can compute the result from the preferred width
-                if (widthHint >= preferredSize.x) {
-                    Point result = Geometry.copy(preferredSize);
-                    result.x = widthHint;
-                    return result;
-                }
-            }
-
-            // Else we can't find an existing size in the cache, so recompute
-            // it from scratch.
-            cachedHeight = computeSize(control, widthHint, heightHint);
-
-            return Geometry.copy(cachedHeight);
-        }
-
-        // Computing a width
-        if (widthHint == SWT.DEFAULT) {
-            // If we know the control's preferred size
-            if (preferredSize != null) {
-                // If the given height is the preferred height, then return the preferred size
-                if (heightHint == preferredSize.y) {
-                    return Geometry.copy(preferredSize);
-                }
-            }
-
-            // If we have a cached width measurement
-            if (cachedWidth != null) {
-                // If this was measured with the same height hint
-                if (cachedWidth.y == heightHint) {
-                    return Geometry.copy(cachedWidth);
-                }
-            }
-
-            cachedWidth = computeSize(control, widthHint, heightHint);
-
-            return Geometry.copy(cachedWidth);
-        }
-
-        return computeSize(control, widthHint, heightHint);
-    }
-
-    /**
-     * Compute the control's size, and ensure that non-default hints are returned verbatim
-     * (this tries to compensate for SWT's hints, which aren't really the outer width of the
-     * control).
-     * 
-     * @param control
-     * @param widthHint
-     * @param heightHint
-     * @return
-     */
-    private Point computeSize(Control control, int widthHint, int heightHint) {
-        int adjustedWidthHint = widthHint == SWT.DEFAULT ? SWT.DEFAULT : Math
-                .max(0, widthHint - widthAdjustment);
-        int adjustedHeightHint = heightHint == SWT.DEFAULT ? SWT.DEFAULT : Math
-                .max(0, heightHint - heightAdjustment);
-
-        Point result = control.computeSize(adjustedWidthHint,
-                adjustedHeightHint, flushChildren);
-        flushChildren = false;
-
-        // If the amounts we subtracted off the widthHint and heightHint didn't do the trick, then
-        // manually adjust the result to ensure that a non-default hint will return that result verbatim.
-
-        if (widthHint != SWT.DEFAULT) {
-            result.x = widthHint;
-        }
-
-        if (heightHint != SWT.DEFAULT) {
-            result.y = heightHint;
-        }
-
-        return result;
-    }
-
-    /**
-     * Returns true if the preferred length of the given control is 
-     * independent of the width and visa-versa. If this returns true,
-     * then changing the widthHint argument to control.computeSize will
-     * never change the resulting height and changing the heightHint
-     * will never change the resulting width. Returns false if unknown.
-     * <p>
-     * This information can be used to improve caching. Incorrectly returning
-     * a value of false may decrease performance, but incorrectly returning 
-     * a value of true will generate incorrect layouts... so always return
-     * false if unsure.
-     * </p>
-     * 
-     * @param control
-     * @return
-     */
-    static boolean independentLengthAndWidth(Control control) {
-        if (control == null) {
-            return true;
-        }
-
-        if (control instanceof Button || control instanceof ProgressBar
-                || control instanceof Sash || control instanceof Scale
-                || control instanceof Slider || control instanceof List
-                || control instanceof Combo || control instanceof Tree) {
-            return true;
-        }
-
-        if (control instanceof Label || control instanceof Text) {
-            return (control.getStyle() & SWT.WRAP) == 0;
-        }
-
-        // Unless we're certain that the control has this property, we should
-        // return false.
-
-        return false;
-    }
-
-    /**
-     * Try to figure out how much we need to subtract from the hints that we
-     * pass into the given control's computeSize(...) method. This tries to
-     * compensate for bug 46112. To be removed once SWT provides an "official"
-     * way to compute one dimension of a control's size given the other known
-     * dimension.
-     * 
-     * @param control
-     */
-    private void computeHintOffset(Control control) {
-        if (control instanceof Composite) {
-            // For composites, subtract off the trim size
-            Composite composite = (Composite) control;
-            Rectangle trim = composite.computeTrim(0, 0, 0, 0);
-
-            widthAdjustment = trim.width;
-            heightAdjustment = trim.height;
-        } else {
-            // For non-composites, subtract off 2 * the border size
-            widthAdjustment = control.getBorderWidth() * 2;
-            heightAdjustment = widthAdjustment;
-        }
-    }
-
-    /**
-     * Returns true only if the control will return a constant height for any
-     * width hint larger than the preferred width. Returns false if there is
-     * any situation in which the control does not have this property.
-     * 
-     * <p>
-     * Note: this method is only important for wrapping controls, and it can
-     * safely return false for anything else. AFAIK, all SWT controls have this
-     * property, but to be safe they will only be added to the list once the
-     * property has been confirmed.
-     * </p> 
-     * 
-     * @param control
-     * @return
-     */
-    private static boolean isPreferredWidthMaximum(Control control) {
-        return (control instanceof ToolBar
-        //|| control instanceof CoolBar
-        || control instanceof Label);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimArea.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimArea.java
deleted file mode 100644
index 1c92cd7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimArea.java
+++ /dev/null
@@ -1,545 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CBanner;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.WindowTrimProxy;
-
-/**
- * Represents one Trim Area.
- * 
- * @since 3.2
- */
-public class TrimArea {
-	
-	/**
-	 * This is a convenience class that caches information for a single 'tiled'
-	 * line of trim.
-	 * 
-	 * @since 3.2
-	 * 
-	 */
-	private class TrimLine {
-		/** The list of controls in this trim line */
-		List controls = new ArrayList();
-
-		/** In horizontal terms this is the 'height' of the tallest control. */
-		int minorMax; // Default minimum for empty trim areas
-
-		/** The number of controls that can 'grow' to use leftover space */
-		int resizableCount;
-
-		/** The amount of unused space in the line */
-		int availableSpace;
-
-		/**
-		 * @param majorHint The total amount of space available to tile into
-		 */
-		public TrimLine(int majorHint) {
-			availableSpace = majorHint;
-		}
-
-		/**
-		 * Add a new control to the current line.
-		 * 
-		 * @param ctrl The control to add
-		 * @param minorSize it's size in the minor dimension
-		 * @param dragHandle its drag handle (if any)
-		 */
-		void addControl(Control ctrl, int tileLength, int minorSize, Control dragHandle) {
-			if (dragHandle != null) {
-				controls.add(dragHandle);
-			}
-			
-			controls.add(ctrl);
-			
-			// If the control is re-sizable then we use the default size as its 'minimum' size
-			if (getData(ctrl).isResizeable()) {
-				resizableCount++;
-			}
-
-			// Cache the maximum amount of 'minor' space needed
-			if (minorSize > minorMax) {
-				minorMax = minorSize;
-			}
-			
-			// Adjust the amount of remaining space
-			availableSpace -= tileLength;
-		}
-		
-		/**
-		 * Terminates a line by calculating the remaining space and fixing the
-		 * minorMax if there was a CBanner in the line.
-		 * 
-		 * @return The total amount of 'minor' space required for this line
-		 */
-		int terminate() {
-			// OK, now if there was a banner in the current line we'll re-compute
-			// its height based on the actual width we'll be displaying it at
-			for (Iterator ctrls = controls.iterator(); ctrls.hasNext();) {
-				Control ctrl = (Control) ctrls.next();
-				if (ctrl instanceof CBanner) {
-					CBanner banner = (CBanner) ctrl;
-					Point bannerPrefSize = (Point) banner.getData(PREFSIZE_DATA_ID);
-					int realWidth = bannerPrefSize.x + (availableSpace / resizableCount);
-					Point cbSize = banner.computeSize(realWidth, SWT.DEFAULT);
-					banner.setData(PREFSIZE_DATA_ID, new Point(bannerPrefSize.x, cbSize.y));
-					
-					// Update the minor size if necessary
-					if (cbSize.y > minorMax)
-						minorMax = cbSize.y;
-				}
-			}
-			
-			return minorMax;
-		}
-	}
-
-	// this is no longer necessary, since every piece of window trim defined
-	// itself as the trim layout data.
-	private static final IWindowTrim defaultData = new WindowTrimProxy(null, null, null, 0, true);
-
-	private static IWindowTrim getData(Control control) {
-		IWindowTrim data = (IWindowTrim) control.getLayoutData();
-		if (data == null) {
-			data = defaultData;
-		}
-
-		return data;
-	}
-
-	/** Our area ID. */
-	private int fId;
-
-	/** An NLS display name. */
-	private String fDisplayName;
-
-	/** The last 'tiled' set of trim lines */
-	private List lines = new ArrayList();
-	
-	/** Each trimArea is an ordered list of TrimDescriptors. */
-	private ArrayList fTrim;
-
-	// layout constants
-	private static final String PREFSIZE_DATA_ID = "prefSize"; //$NON-NLS-1$
-	private static final int MIN_BANNER_LEFT = 150;
-	private static int TILE_SPACING = 2;
-	private static int LINE_SPACING = 2;
-	
-	private Rectangle curRect = new Rectangle(0,0,0,0);
-
-	/**
-	 * Create the trim area with its ID.
-	 * 
-	 * @param id
-	 * @param displayName
-	 *            the NLS display name
-	 */
-	public TrimArea(int id, String displayName) {
-		fTrim = new ArrayList();
-		fId = id;
-		fDisplayName = displayName;
-	}
-
-	/**
-	 * return true of the trim area is empty
-	 * 
-	 * @return <code>true</code>
-	 */
-	public boolean isEmpty() {
-		return fTrim.isEmpty();
-	}
-
-	/**
-	 * @return The rectangle currently occupied by this trim area
-	 */
-	public Rectangle getCurRect() {
-		return curRect;
-	}
-	
-	/**
-	 * Return the ordered list of trim for this area.
-	 * 
-	 * @return a List containing IWindowTrim
-	 */
-	public List getTrims() {
-		List trim = new ArrayList(fTrim.size());
-		Iterator d = fTrim.iterator();
-
-		while (d.hasNext()) {
-			TrimDescriptor desc = (TrimDescriptor) d.next();
-			trim.add(desc.getTrim());
-		}
-		return trim;
-	}
-
-	/**
-	 * Return the ordered list of trim descriptors for this area.
-	 * 
-	 * @return a List containing TrimDescriptor
-	 */
-	public List getDescriptors() {
-		return (List) fTrim.clone();
-	}
-	
-	/**
-	 * Calculates the correct 'preferred size' of the given control.
-	 * For controls that cannot be resized (i.e. stretched) the preferred
-	 * size is simply the control's current size. For controls that can be
-	 * stretched it represents the minimum size that the control can have
-	 * before being tiled onto a separate line.
-	 * 
-	 * This method also managed the two stretch-able controls known by
-	 * the Workbench; the StatusLine and the CBanner. These controls
-	 * require specialized help (i.e. hacks) since their respective
-	 * <code>computeSize</code> methods cannot correctly compute their
-	 * preferred size.
-	 * 
-	 * @param ctrl The control to get the preferred size for
-	 * @return The preferred size of the given control
-	 */
-	private Point getPrefSize(Control ctrl) {
-		// A control's prefSize -is- its current size
-		Point prefSize = ctrl.getSize();
-
-		// If the control has not yet sized itself then initialize it to its preferred size
-		if ((prefSize.x == 0 || prefSize.y == 0) && !getData(ctrl).isResizeable()) {
-			prefSize = ctrl.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			ctrl.setSize(prefSize);
-		}
-		
-		// If the control is re-sizable then we use the default size as its 'minimum' size
-		if (getData(ctrl).isResizeable()) {
-			// Special case: we allow sufficient room to ensure that the right area,
-			// the 'swoop' and some constant size for the CoolBar are available.
-			// The height is set to zero but is re-calculated after the true width that
-			// the banner will occupy is calculated
-			if (ctrl instanceof CBanner) {
-				CBanner banner = (CBanner) ctrl;
-				prefSize.x = banner.getRightWidth() + banner.getBorderWidth() + MIN_BANNER_LEFT;
-				prefSize.y = 0;  // No height for now, computed later
-			}
-			else if (getData(ctrl).getId().equals("org.eclipse.jface.action.StatusLineManager")) { //$NON-NLS-1$
-				// Hack !! should fix StatusLine itself
-				// We have to force the StatusLine to have a consistent
-				// preferred width (it's computeSize takes the message into
-				// account
-				prefSize = new Point(250, 26);
-			}
-			else {
-				// Normal control, expect it to return its true preferred size 
-				prefSize = ctrl.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			}
-			
-			// Cache the computed  preferred size
-			ctrl.setData(PREFSIZE_DATA_ID, prefSize);
-		}
-		
-		return prefSize;
-	}
-	
-	/**
-	 * This is where the information required to lay the controls belonging to a
-	 * particular trim area out.
-	 * <p>
-	 * Tile the controls in the trim area into one or more lines. Each line is
-	 * guaranteed to take up less than or equal to the 'majorHint' in the major
-	 * dimension. The result is a complete cache of the information needed to
-	 * lay the controls in the trim area out.
-	 * </p>
-	 * 
-	 * @param majorHint The length of the major dimension
-	 * 
-	 * @return A List of <code>TrimLine</code> elements
-	 */
-	public int computeWrappedTrim(int majorHint) {
-		int totalMinor = 0;
-		
-		// Remove any previous tiling information
-		lines.clear();
-		
-		boolean isHorizontal = !isVertical();
-
-		TrimLine curLine = new TrimLine(majorHint);
-		lines.add(curLine);
-
-		TrimCommonUIHandle dragHandle = null;
-		
-		// Initialize the tilePos to force a 'new' line
-		List caches = getCaches();
-		for (Iterator cacheIter = caches.iterator(); cacheIter.hasNext();) {
-			SizeCache cache = (SizeCache) cacheIter.next();
-			Control ctrl = cache.getControl();
-			
-			// Skip invisible trim
-			if (ctrl == null || !ctrl.getVisible())
-				continue;
-			
-			// We need to keep the drag handle and the 'real' trim on the same line... 
-			if (ctrl instanceof TrimCommonUIHandle) {
-				dragHandle = (TrimCommonUIHandle) ctrl;
-
-				// Ensure that the dragHandle is sized correctly
-				Point dhSize = dragHandle.getSize();
-				if (dhSize.x == 0 || dhSize.y == 0)
-					dragHandle.setSize(dragHandle.computeSize(SWT.DEFAULT, SWT.DEFAULT));
-
-				continue;
-			}
-			
-			// A control's prefSize -is- its current size
-			Point prefSize = getPrefSize(ctrl);
-
-			// Will this control fit onto the current line?
-			int tileLength = isHorizontal ? prefSize.x : prefSize.y;
-			int minorSize = isHorizontal ? prefSize.y : prefSize.x;
-
-			// Including its drag handle?
-			if (dragHandle != null) {
-				Point dhSize = dragHandle.getSize();
-				tileLength += isHorizontal ? dhSize.x : dhSize.y;
-			}
-			
-			// Space out the controls
-			tileLength += TILE_SPACING;
-
-			// Place the control into the 'current' line if it'll fit or if
-			// it's the -first- control (this handles the case where a control is too
-			// large to fit into the current TrimArea's 'major' size.)
-			//if ((tilePos + tileLength) <= majorHint	|| curLine.controls.size() == 0) {
-			if (tileLength < curLine.availableSpace	|| curLine.controls.size() == 0) {
-				curLine.addControl(ctrl, tileLength, minorSize, dragHandle);
-			} else {
-				totalMinor += curLine.terminate();
-				
-				// We need a new line...
-				curLine = new TrimLine(majorHint);
-				lines.add(curLine);
-				
-				curLine.addControl(ctrl, tileLength, minorSize, dragHandle);
-			}
-			
-			// If we get here then we've already handled the drag handle
-			dragHandle = null;
-		}
-
-		// Remember how much space was needed to tile -all- the lines
-		totalMinor += curLine.terminate();
-
-		// Finally, add enough room to provide spacing between the lines
-		totalMinor += (lines.size() + 1) * LINE_SPACING;
-		
-		return totalMinor;
-	}
-
-	static int tileCount = 0;
-	/**
-	 * Re-position and, in the case of re-sizable trim, re-size the
-	 * controls in the trim based on the information cached in the
-	 * last call to 'computeWrappedTrim'.
-	 * 
-	 * @param anchorX The X position to start tiling
-	 * @param anchorY The Y position to start tiling
-	 * @param major The length of the trim area in the major dimension
-	 */
-	public void tileTrim(int anchorX, int anchorY, int major) {
-		// Capture the location of the tiled rectangle
-		curRect.x = anchorX;
-		curRect.y = anchorY;
-		
-		boolean isHorizontal = !isVertical();
-
-		int tileX = anchorX;
-		int tileY = anchorY;
-		
-		if (isHorizontal) {
-			tileX += TILE_SPACING;
-			tileY += LINE_SPACING;
-		}
-		else {
-			tileY += TILE_SPACING;
-			tileX += LINE_SPACING;
-		}
-		
-		for (Iterator lineIter = lines.iterator(); lineIter.hasNext();) {
-			TrimLine line = (TrimLine) lineIter.next();
-			
-			int curExtraSpace = line.availableSpace;
-			int curResizeCount = line.resizableCount;
-			for (Iterator ctrlIter = line.controls.iterator(); ctrlIter.hasNext();) {
-				Control ctrl = (Control) ctrlIter.next();
-				
-				// Make the control the correct size
-				Point prefSize = ctrl.getSize();
-				if (getData(ctrl).isResizeable() && curResizeCount > 0) {
-					// -DONT- trash the actual cached size !!
-					Point cachedPrefSize = (Point) ctrl.getData(PREFSIZE_DATA_ID);
-					prefSize.x = cachedPrefSize.x;
-					prefSize.y = cachedPrefSize.y;
-					
-					int resizeAmount = curExtraSpace/curResizeCount;
-					if (isHorizontal)
-						prefSize.x += resizeAmount;
-					else
-						prefSize.y += resizeAmount;
-					
-					curExtraSpace -= resizeAmount;
-					curResizeCount--;
-					
-					ctrl.setSize(prefSize);
-				}
-				
-				// Now, position the control
-				ctrl.setLocation(tileX, tileY);
-
-				// adjust for the control
-				if (isHorizontal)
-					tileX += prefSize.x;
-				else
-					tileY += prefSize.y;
-				
-				// Adjust the TILE_SPACING (unless it's a handle)
-				if (!(ctrl instanceof TrimCommonUIHandle)) {
-					if (isHorizontal)
-						tileX += TILE_SPACING;
-					else
-						tileY += TILE_SPACING;
-				}
-			}
-			
-			if (isHorizontal) {
-				tileY += (line.minorMax + LINE_SPACING);
-				tileX = anchorX + TILE_SPACING;
-			}
-			else {
-				tileX += (line.minorMax + LINE_SPACING);
-				tileY = anchorY + TILE_SPACING;
-			}
-		}
-		
-		// capture the bounds of the tiled area
-		if (isHorizontal) {
-			curRect.width = major;
-			curRect.height = tileY - anchorY;
-		}
-		else {
-			curRect.width = tileX - anchorX;
-			curRect.height = major;
-		}
-	}
-	
-	/**
-	 * return true if this area orientation is vertical.
-	 * 
-	 * @return <code>true</code>
-	 */
-	public boolean isVertical() {
-		return fId == SWT.LEFT || fId == SWT.RIGHT;
-	}
-
-	/**
-	 * The ID for this area.
-	 * 
-	 * @return the ID.
-	 */
-	public int getId() {
-		return fId;
-	}
-
-	/**
-	 * The NLS display name for this area.
-	 * 
-	 * @return the String display name.
-	 */
-	public String getDisplayName() {
-		return fDisplayName;
-	}
-
-	/**
-	 * Add the descriptor representing a piece of trim to this trim area.
-	 * 
-	 * @param desc
-	 *            the trim descriptor
-	 */
-	public void addTrim(TrimDescriptor desc) {
-		fTrim.add(desc);
-	}
-
-	/**
-	 * Insert this desc before the other desc.  If beforeMe is not
-	 * part of this area it just defaults to an add.
-	 * 
-	 * @param desc
-	 *            the window trim
-	 * @param beforeMe
-	 *            before this trim
-	 */
-	public void addTrim(TrimDescriptor desc, TrimDescriptor beforeMe) {
-		int idx = fTrim.indexOf(beforeMe);
-		if (idx == -1) {
-			fTrim.add(desc);
-		} else {
-			ListIterator i = fTrim.listIterator(idx);
-			i.add(desc);
-		}
-	}
-
-	/**
-	 * Remove the descriptor representing a piece of trim from this trim area.
-	 * 
-	 * @param desc
-	 *            the trim descriptor
-	 */
-	public void removeTrim(TrimDescriptor desc) {
-		fTrim.remove(desc);
-	}
-
-	/**
-	 * Does this area contain a piece of trim.
-	 * 
-	 * @param desc
-	 *            the trim
-	 * @return <code>true</code> if we contain the trim.
-	 */
-	public boolean contains(TrimDescriptor desc) {
-		return fTrim.contains(desc);
-	}
-
-	/**
-	 * Takes the trim area and turns it into an List of {@link SizeCache}.
-	 * There can be more items in the return list than there are trim
-	 * descriptors in the area.
-	 * 
-	 * @return a list of {@link SizeCache}
-	 */
-	public List getCaches() {
-		ArrayList result = new ArrayList(fTrim.size());
-		Iterator d = fTrim.iterator();
-		while (d.hasNext()) {
-			TrimDescriptor desc = (TrimDescriptor) d.next();
-			if (desc.getDockingCache() != null) {
-				result.add(desc.getDockingCache());
-			}
-			result.add(desc.getCache());
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimCommonUIHandle.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimCommonUIHandle.java
deleted file mode 100644
index 81d5d88..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimCommonUIHandle.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.internal.IChangeListener;
-import org.eclipse.ui.internal.IntModel;
-import org.eclipse.ui.internal.RadioMenu;
-import org.eclipse.ui.internal.WindowTrimProxy;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.presentations.PresentationUtil;
-
-/**
- * This control provides common UI functionality for trim elements. Its
- * lifecycle is managed by the <code>TrimLayout</code> which automatically
- * adds a UI handle to all added trim elements. It uses an instance of a
- * CoolBar to provide the platform-specific drag affordance.
- * <p>
- * It provides the following features:
- * <p>
- * Drag affordance and handling:
- * <ol>
- * <li>Drag affordance is provided in the <code>paintControl</code> method</li>
- * <li>Drag handling is provided to allow rearrangement within a trim side or
- * to other sides, depending on the values returned by <code>IWindowTrim.getValidSides</code></li>
- * </ol>
- * </p>
- * <p>
- * Context Menu:
- * <ol>
- * <li>A "Dock on" menu item is provided to allow changing the side, depending on the values returned by 
- * <code>IWindowTrim.getValidSides</code></li>
- * <li>A "Close" menu item is provided to allow the User to close (hide) the trim element,
- * based on the value returned by <code>IWindowTrim.isCloseable</code>
- * </ol>
- * </p>
- * <p>
- * @since 3.2
- * </p>
- */
-public class TrimCommonUIHandle extends Composite {
-	/*
-	 * Fields
-	 */
-	private TrimLayout  layout;
-    private IWindowTrim trim;
-	private Control     toDrag;
-	private int orientation;
-
-	// CoolBar handling
-	private CoolBar cb = null;
-	private CoolItem ci = null;
-	private static int horizontalHandleSize = -1;
-	private static int verticalHandleSize = -1;
-	
-    /*
-     * Context Menu
-     */
-	private MenuManager dockMenuManager;
-	private ContributionItem dockContributionItem = null;
-    private Menu sidesMenu;
-	private MenuItem dockCascade;
-    private RadioMenu radioButtons;
-    private IntModel radioVal = new IntModel(0);
-//	private Menu showMenu;
-//	private MenuItem showCascade;
-	
-	/*
-	 * Listeners...
-	 */
-    
-    /**
-     * This listener starts a drag operation when
-     * the Drag and Drop manager tells it to
-     */
-    private Listener dragListener = new Listener() {
-        public void handleEvent(Event event) {
-        	// Only allow 'left mouse' drags...
-        	if (event.button != 3) {
-	            Point position = DragUtil.getEventLoc(event);
-	            startDraggingTrim(position);
-        	}
-        }
-    };
-
-    /**
-     * This listener brings up the context menu
-     */
-    private Listener menuListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point loc = new Point(event.x, event.y);
-            if (event.type == SWT.MenuDetect) {
-                showDockTrimPopup(loc);
-            }
-        }
-    };
-
-    /**
-     * Listen to size changes in the control so we can adjust the
-     * Coolbar and CoolItem to match.
-     */
-    private ControlListener controlListener = new ControlListener() {
-		public void controlMoved(ControlEvent e) {
-		}
-
-		public void controlResized(ControlEvent e) {
-			if (e.widget instanceof TrimCommonUIHandle) {
-				TrimCommonUIHandle ctrl = (TrimCommonUIHandle) e.widget;
-		        Point size = ctrl.getSize();
-
-		        // Set the CoolBar and item to match the handle's size
-		        cb.setSize(size);
-		        ci.setSize(size);
-		        ci.setPreferredSize(size);
-		        cb.layout(true);
-			}
-		}
-    };
-
-    /**
-     * Create a new trim UI handle for a particular IWindowTrim item
-     * 
-     * @param layout the TrimLayout we're being used in
-     * @param trim the IWindowTrim we're acting on behalf of
-     * @param curSide  the SWT side that the trim is currently on
-     */
-    public TrimCommonUIHandle(TrimLayout layout, IWindowTrim trim, int curSide) {
-    	super(trim.getControl().getParent(), SWT.NONE);
-    	
-    	// Set the control up with all its various hooks, cursor...
-    	setup(layout, trim, curSide);
-		
-        // Listen to size changes to keep the CoolBar synched
-        addControlListener(controlListener);
-    }
-
-	/**
-	 * Set up the trim with its cursor, drag listener, context menu and menu listener.
-	 * This method can also be used to 'recycle' a trim handle as long as the new handle
-	 * is for trim under the same parent as it was originally used for.
-	 */
-	public void setup(TrimLayout layout, IWindowTrim trim, int curSide) {    	
-    	this.layout = layout;
-    	this.trim = trim;
-    	this.toDrag = trim.getControl();
-    	this.radioVal.set(curSide);
-    	
-    	// remember the orientation to use
-    	orientation = (curSide == SWT.LEFT || curSide == SWT.RIGHT) ? SWT.VERTICAL  : SWT.HORIZONTAL;
-    	
-        // Insert a CoolBar and extras in order to provide the drag affordance
-        insertCoolBar(orientation);
-        
-		// Create a window trim proxy for the handle
-		createWindowTrimProxy();
-       	
-    	// Set the cursor affordance
-    	setDragCursor();
-    	
-        // Set up the dragging behaviour
-        PresentationUtil.addDragListener(cb, dragListener);
-    	
-    	// Create the docking context menu
-    	dockMenuManager = new MenuManager();
-    	dockContributionItem = getDockingContribution();
-        dockMenuManager.add(dockContributionItem);
-
-        cb.addListener(SWT.MenuDetect, menuListener);
-        
-        setVisible(true);
-    }
-
-    /**
-     * Handle the event generated when a User selects a new side to
-     * dock this trim on using the context menu
-     */
-    private void handleShowOnChange() {
-    	layout.removeTrim(trim);
-    	trim.dock(radioVal.get());
-    	layout.addTrim(radioVal.get(), trim, null);
-    	
-    	// perform an optimized layout to show the trim in its new location
-    	LayoutUtil.resize(trim.getControl());
-	}
-
-	/**
-	 * Create and format the IWindowTrim for the handle, ensuring that the
-	 * handle will be 'wide' enough to display the drag affordance.
-	 */
-	private void createWindowTrimProxy() {
-		// Create a window trim proxy for the handle
-		WindowTrimProxy proxy = new WindowTrimProxy(this, "NONE", "NONE", //$NON-NLS-1$ //$NON-NLS-2$
-				SWT.TOP | SWT.BOTTOM | SWT.LEFT | SWT.RIGHT, false);
-
-		// Set up the handle's hints based on the computed size that
-		// the handle has to be (i.e. if it's HORIZONTAL then the
-		// 'width' is determined by the space required to show the
-		// CB's drag affordance).
-		if (orientation == SWT.HORIZONTAL) {
-			proxy.setWidthHint(getHandleSize());
-			proxy.setHeightHint(0);
-		}
-		else {
-			proxy.setWidthHint(0);
-			proxy.setHeightHint(getHandleSize());
-		}
-		
-		setLayoutData(proxy);
-	}
-	
-	/**
-	 * Calculate a size for the handle that will be large enough to show
-	 * the CoolBar's drag affordance.
-	 * 
-	 * @return The size that the handle has to be, based on the orientation
-	 */
-	private int getHandleSize() {
-		// Do we already have a 'cached' value?
-		if (orientation == SWT.HORIZONTAL && horizontalHandleSize != -1) {
-			return horizontalHandleSize;
-		}
-				
-		if (orientation == SWT.VERTICAL && verticalHandleSize != -1) {
-			return verticalHandleSize;
-		}
-				
-		// Must be the first time, calculate the value
-		CoolBar bar = new CoolBar (trim.getControl().getParent(), orientation);
-		
-		CoolItem item = new CoolItem (bar, SWT.NONE);
-		
-		Label ctrl = new Label (bar, SWT.PUSH);
-		ctrl.setText ("Button 1"); //$NON-NLS-1$
-	    Point size = ctrl.computeSize (SWT.DEFAULT, SWT.DEFAULT);
-		
-	    Point ps = item.computeSize (size.x, size.y);
-		item.setPreferredSize (ps);
-		item.setControl (ctrl);
-
-		bar.pack ();
-
-		// OK, now the difference between the location of the CB and the
-		// location of the 
-		Point bl = ctrl.getLocation();
-		Point cl = bar.getLocation();
-
-		// Toss them now...
-		ctrl.dispose();
-		item.dispose();
-		bar.dispose();
-	
-		// The 'size' is the difference between the start of teh CoolBar and
-		// start of its first control
-		int length;
-		if (orientation == SWT.HORIZONTAL) {
-			length = bl.x - cl.x;
-			horizontalHandleSize = length;
-		}
-		else {
-			length = bl.y - cl.y;
-			verticalHandleSize = length;
-		}
-		
-		return length;
-	}
-	
-	/**
-	 * Place a CoolBar / CoolItem / Control inside the current
-	 * UI handle. These elements will maintain thier size based on
-	 * the size of their 'parent' (this).
-	 * 
-	 * @param parent 
-	 * @param orientation
-	 */
-	public void insertCoolBar(int orientation) {
-		// Clean up the previous info in case we've changed orientation
-		if (cb != null) {
-			ci.dispose();
-	        PresentationUtil.removeDragListener(cb, dragListener);
-			cb.dispose();
-		}
-		
-		// Create the necessary parts...
-		cb = new CoolBar(this, orientation | SWT.FLAT);
-		cb.setLocation(0,0);
-		ci = new CoolItem(cb, SWT.FLAT);
-		
-		// Create a composite in order to get the handles to appear
-		Composite comp = new Composite(cb, SWT.NONE);
-		ci.setControl(comp);
-	}
-	
-	/**
-	 * Set the cursor to the four-way arrow to indicate that the
-	 * trim can be dragged
-	 */
-	private void setDragCursor() {
-    	Cursor dragCursor = toDrag.getDisplay().getSystemCursor(SWT.CURSOR_SIZEALL);
-    	setCursor(dragCursor);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.swt.widgets.Composite#computeSize(int, int, boolean)
-	 */
-	public Point computeSize(int wHint, int hHint, boolean changed) {
-		Point ctrlPrefSize = trim.getControl().computeSize(wHint, hHint);
-		if (orientation == SWT.HORIZONTAL) {
-			return new Point(getHandleSize(), ctrlPrefSize.y);
-		}
-		
-		// Must be vertical....
-		return new Point(ctrlPrefSize.x, getHandleSize());
-	}
-	
-	/**
-	 * Construct (if necessary) a context menu contribution item and return it. This
-	 * is explicitly <code>public</code> so that trim elements can retrieve the item
-	 * and add it into their own context menus if desired.
-	 * 
-	 * @return The contribution item for the handle's context menu. 
-	 */
-	public ContributionItem getDockingContribution() {
-    	if (dockContributionItem == null) {
-    		dockContributionItem = new ContributionItem() {
-    			public void fill(Menu menu, int index) {
-    				// populate from superclass
-    				super.fill(menu, index);
-    				
-    				// Add a 'Close' menu entry if the trim supports the operation
-    				if (trim.isCloseable()) {
-	    				MenuItem closeItem = new MenuItem(menu, SWT.PUSH, index++);
-	    				closeItem.setText(WorkbenchMessages.TrimCommon_Close);
-	    				
-	    				closeItem.addSelectionListener(new SelectionListener() {
-							public void widgetSelected(SelectionEvent e) {
-								handleCloseTrim();
-							}
-
-							public void widgetDefaultSelected(SelectionEvent e) {
-							}
-	    				});
-
-	    				new MenuItem(menu, SWT.SEPARATOR, index++);
-    				}
-    				
-    				// Test Hook: add a menu entry that brings up a dialog to allow
-    				// testing with various GUI prefs.
-//    				MenuItem closeItem = new MenuItem(menu, SWT.PUSH, index++);
-//    				closeItem.setText("Change Preferences"); //$NON-NLS-1$
-//    				
-//    				closeItem.addSelectionListener(new SelectionListener() {
-//						public void widgetSelected(SelectionEvent e) {
-//							handleChangePreferences();
-//						}
-//
-//						public void widgetDefaultSelected(SelectionEvent e) {
-//						}
-//    				});
-//
-//    				new MenuItem(menu, SWT.SEPARATOR, index++);
-    				
-    				// Create a cascading menu to allow the user to dock the trim
-    				dockCascade = new MenuItem(menu, SWT.CASCADE, index++);
-    				{
-    					dockCascade.setText(WorkbenchMessages.TrimCommon_DockOn); 
-    					
-    					sidesMenu = new Menu(dockCascade);
-    					radioButtons = new RadioMenu(sidesMenu, radioVal);
-    					
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Top, new Integer(SWT.TOP));
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Bottom, new Integer(SWT.BOTTOM));
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Left, new Integer(SWT.LEFT));
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Right, new Integer(SWT.RIGHT));
-    					
-    					dockCascade.setMenu(sidesMenu);
-    				}
-
-    		    	// if the radioVal changes it means that the User wants to change the docking location
-    		    	radioVal.addChangeListener(new IChangeListener() {
-    					public void update(boolean changed) {
-    						if (changed) {
-								handleShowOnChange();
-							}
-    					}
-    		    	});
-    				
-    				// Provide Show / Hide trim capabilities
-//    				showCascade = new MenuItem(menu, SWT.CASCADE, index++);
-//    				{
-//    					showCascade.setText(WorkbenchMessages.TrimCommon_ShowTrim); 
-//    					
-//    					showMenu = new Menu(dockCascade);
-//    					
-//    					// Construct a 'hide/show' cascade from -all- the existing trim...
-//    					List trimItems = layout.getAllTrim();
-//    					Iterator d = trimItems.iterator();
-//    					while (d.hasNext()) {
-//    						IWindowTrim trimItem = (IWindowTrim) d.next();
-//							MenuItem item = new MenuItem(showMenu, SWT.CHECK);
-//							item.setText(trimItem.getDisplayName());
-//							item.setSelection(trimItem.getControl().getVisible());
-//							item.setData(trimItem);
-//							
-//							// TODO: Make this work...wire it off for now
-//							item.setEnabled(false);
-//							
-//							item.addSelectionListener(new SelectionListener() {
-//
-//								public void widgetSelected(SelectionEvent e) {
-//									IWindowTrim trim = (IWindowTrim) e.widget.getData();
-//									layout.setTrimVisible(trim, !trim.getControl().getVisible());
-//								}
-//
-//								public void widgetDefaultSelected(SelectionEvent e) {
-//								}
-//								
-//							});
-//						}
-//    					
-//    					showCascade.setMenu(showMenu);
-//    				}
-    			}
-    		};
-    	}
-    	return dockContributionItem;
-    }
-
-	/**
-	 * Test Hook: Bring up a dialog that allows the user to
-	 * modify the trimdragging GUI preferences.
-	 */
-//	private void handleChangePreferences() {
-//		TrimDragPreferenceDialog dlg = new TrimDragPreferenceDialog(getShell());
-//		dlg.open();
-//	}
-   
-	/**
-	 * Handle the event generated when the "Close" item is
-	 * selected on the context menu. This removes the associated
-	 * trim and calls back to the IWidnowTrim to inform it that
-	 * the User has closed the trim.
-	 */
-	private void handleCloseTrim() {
-		layout.removeTrim(trim);
-		trim.handleClose();
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.swt.widgets.Widget#dispose()
-     */
-    public void dispose() {
-        if (radioButtons != null) {
-            radioButtons.dispose();
-        }
-
-        // tidy up...
-        removeControlListener(controlListener);
-        removeListener(SWT.MenuDetect, menuListener);
-        
-        super.dispose();
-    }
-
-    /**
-     * Begins dragging the trim
-     * 
-     * @param position initial mouse position
-     */
-    protected void startDraggingTrim(Point position) {
-    	Rectangle fakeBounds = new Rectangle(100000, 0,0,0);
-        DragUtil.performDrag(trim, fakeBounds, position, true);
-    }
-
-    /**
-     * Shows the popup menu for an item in the fast view bar.
-     */
-    private void showDockTrimPopup(Point pt) {
-        Menu menu = dockMenuManager.createContextMenu(toDrag);
-        menu.setLocation(pt.x, pt.y);
-        menu.setVisible(true);
-    }	    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDescriptor.java
deleted file mode 100644
index 31a5abd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDescriptor.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-
-/**
- * Manages the internal piece of trim for each trim area.
- * 
- * @since 3.2
- */
-public class TrimDescriptor {
-
-	/**
-	 * The window trim object.
-	 */
-	private IWindowTrim fTrim;
-
-	/**
-	 * The cache for the window trim object's control.
-	 */
-	private SizeCache fCache;
-
-	/**
-	 * The cache for the common drag affordance, if available.
-	 */
-	private SizeCache fDockingHandle = null;
-
-	/**
-	 * The current area that we belong to.
-	 * 
-	 * @see TrimLayout#getAreaIds()
-	 */
-	private int fAreaId;
-
-	/**
-	 * Create a trim descriptor for the trim manager.
-	 * 
-	 * @param trim
-	 *            the window trim
-	 * @param areaId
-	 *            the trim area we belong to.
-	 */
-	public TrimDescriptor(IWindowTrim trim, int areaId) {
-		fTrim = trim;
-		fAreaId = areaId;
-	}
-
-	/**
-	 * @return Returns the fCache.
-	 */
-	public SizeCache getCache() {
-		return fCache;
-	}
-
-	/**
-	 * Set the trim cache. Because of the requirements of possibly changing
-	 * orientation when docking on a different side, the same IWindowTrim
-	 * sometimes needs to have it's control SizeCache replaced.
-	 * 
-	 * @param c
-	 *            cache.
-	 */
-	public void setCache(SizeCache c) {
-		fCache = c;
-	}
-
-	/**
-	 * @return Returns the fTrim.
-	 */
-	public IWindowTrim getTrim() {
-		return fTrim;
-	}
-
-	/**
-	 * Return the cache for the common drag affordance.
-	 * 
-	 * @return return the docking handle cache
-	 */
-	public SizeCache getDockingCache() {
-		return fDockingHandle;
-	}
-
-	/**
-	 * The trim ID.
-	 * 
-	 * @return the trim ID. This should not be <code>null</code>.
-	 */
-	public String getId() {
-		return fTrim.getId();
-	}
-
-	/**
-	 * Returns whether the control for this trim is visible.
-	 * 
-	 * @return <code>true</code> if the control is visible.
-	 */
-	public boolean isVisible() {
-		if (!fTrim.getControl().isDisposed()) {
-			return fTrim.getControl().isVisible();
-		}
-		return false;
-	}
-
-	/**
-	 * Set the cache for the common drag affordance.
-	 * 
-	 * @param cache
-	 *            the sizecache for the docking control
-	 */
-	public void setDockingCache(SizeCache cache) {
-		fDockingHandle = cache;
-	}
-
-	/**
-	 * The area ID this descriptor belongs to.
-	 * 
-	 * @return the ID
-	 * @see TrimLayout#getAreaIds()
-	 */
-	public int getAreaId() {
-		return fAreaId;
-	}
-
-	/**
-	 * Set the current area this descriptor belongs to.
-	 * 
-	 * @param id
-	 *            the area ID.
-	 * @see TrimLayout#getAreaIds()
-	 */
-	public void setAreaId(int id) {
-		fAreaId = id;
-	}
-
-	/**
-	 * Flush any contained size caches.
-	 */
-	public void flush() {
-		if (fCache != null) {
-			fCache.flush();
-		}
-		if (fDockingHandle != null) {
-			fDockingHandle.flush();
-		}
-	}
-
-	/**
-	 * Update the visibility of the trim controls.
-	 * 
-	 * @param visible
-	 *            visible or not.
-	 */
-	public void setVisible(boolean visible) {
-		if (fTrim.getControl() != null && !fTrim.getControl().isDisposed()) {
-			fTrim.getControl().setVisible(visible);
-		}
-		if (fDockingHandle != null && fDockingHandle.getControl() != null
-				&& !fDockingHandle.getControl().isDisposed()) {
-			fDockingHandle.getControl().setVisible(visible);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDragPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDragPreferenceDialog.java
deleted file mode 100644
index 650b23d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimDragPreferenceDialog.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.layout;
-
-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.Button;
-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.internal.TrimDragPreferences;
-
-/**
- * This dialog allows the User to modify the <code>TrimDragPreferences</code>.
- * 
- * <p><b>
- * NOTE: this is a test harness at this time. This class may be removed
- * before the release of 3.2.
- * </b></p>
- * 
- * @since 3.2
- *
- */
-public class TrimDragPreferenceDialog extends Dialog {
-
-	private Text   thresholdValue;
-	private Button raggedTrimButton;
-	
-	/**
-	 * @param parentShell
-	 */
-	public TrimDragPreferenceDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayout(new GridLayout(2, false));
-		
-		Label disclaimer = new Label(composite, SWT.BORDER | SWT.WRAP);
-		disclaimer.setText("NOTE: This dialog is for testing purposes -only- and "+ //$NON-NLS-1$
-				" will be removed from the code before release."); //$NON-NLS-1$
-		disclaimer.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_DARK_RED));
-
-		// Filler to leave a blank line
-		new Label(composite, SWT.NONE);
-		new Label(composite, SWT.NONE);
-		
-		GridData dgd = new GridData();
-		dgd.grabExcessHorizontalSpace = true;
-		dgd.horizontalSpan = 2;
-		dgd.minimumWidth = 50;
-		disclaimer.setLayoutData(dgd);
-		
-		// Create a control to change the threshold value
-		Label tLabel = new Label(composite, SWT.NONE);
-		tLabel.setText("Drag Threshold"); //$NON-NLS-1$
-		
-		thresholdValue = new Text(composite, SWT.SINGLE | SWT.BORDER);		
-		thresholdValue.setText(Integer.toString(TrimDragPreferences.getThreshold()));
-		thresholdValue.setToolTipText("The minimum distance to snap to"); //$NON-NLS-1$
-		
-		GridData tgd = new GridData();
-		tgd.grabExcessHorizontalSpace = true;
-		tgd.minimumWidth = 50;
-		thresholdValue.setLayoutData(tgd);
-		
-		// Create a control to change the layout to show 'ragged' trim
-		raggedTrimButton = new Button(composite, SWT.CHECK);
-		raggedTrimButton.setText("Ragged Trim"); //$NON-NLS-1$
-		raggedTrimButton.setSelection(TrimDragPreferences.showRaggedTrim());
-		raggedTrimButton.setToolTipText("Allows trim in the same area to have different heights if checked"); //$NON-NLS-1$
-		
-		GridData rgd = new GridData();
-		rgd.horizontalSpan = 2;
-		raggedTrimButton.setLayoutData(rgd);
-			
-		return composite;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-	 */
-	protected void okPressed() {
-		// Update the 'threshold' pref
-		try {
-			TrimDragPreferences.setThreshold(Integer.parseInt(thresholdValue.getText()));
-		} catch (NumberFormatException e) {
-			// If it fails...just leave it...
-		}
-		
-		// Update the 'ragged trim' pref
-		boolean val = raggedTrimButton.getSelection();
-		TrimDragPreferences.setRaggedTrim(val);
-		
-		super.okPressed();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimLayout.java
deleted file mode 100644
index 61041ff..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimLayout.java
+++ /dev/null
@@ -1,695 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import java.util.ArrayList;
-import java.util.Collections;
-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.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Lays out the children of a Composite. One control occupies the center of the
- * composite, and any number of controls may be attached to the top, bottom, and
- * sides. This is a common layout for application windows, which typically have
- * a central work area and a number of small widgets (toolbars, status lines,
- * etc.) attached to the edge.
- * 
- * <p>
- * Unlike most other SWT layouts, this layout does not require layout data to be
- * attached to each child control. Instead, member functions on the Layout are
- * used to control the positioning of controls within the layout.
- * </p>
- * 
- * <p>
- * The interface to this layout is intended to easily support drag-and-drop.
- * Trim widgets can be added, removed, or inserted between other existing
- * widgets and the layout will adjust accordingly. If one side of the layout
- * contains no trim widgets, the central area will expand to reclaim the unused
- * space.
- * </p>
- * 
- * <p>
- * This layout must be told about every widget that it is supposed to arrange.
- * If the composite contains additional widgets, they will not be moved by the
- * layout and may be arranged through other means.
- * </p>
- * 
- * @since 3.0
- */
-public class TrimLayout extends Layout implements ICachingLayout, ITrimManager {
-
-	/**
-	 * Trim area ID.
-	 */
-	public static final Integer TOP_ID = new Integer(TOP);
-
-	/**
-	 * Trim area ID.
-	 */
-	public static final Integer BOTTOM_ID = new Integer(BOTTOM);
-
-	/**
-	 * Trim area ID.
-	 */
-	public static final Integer LEFT_ID = new Integer(LEFT);
-
-	/**
-	 * Trim area ID.
-	 */
-	public static final Integer RIGHT_ID = new Integer(RIGHT);
-
-	/**
-	 * Trim area ID.
-	 */
-	public static final Integer NONTRIM_ID = new Integer(NONTRIM);
-
-	/**
-	 * IDs for the current trim areas we support.
-	 */
-	private static final int[] TRIM_ID_INFO = { LEFT, RIGHT, TOP, BOTTOM };
-
-	private SizeCache centerArea = new SizeCache();
-
-	/**
-	 * Map of TrimAreas by IDs.
-	 */
-	private Map fTrimArea = new HashMap();
-
-	/**
-	 * Map of TrimDescriptors by IDs.
-	 */
-	private Map fTrimDescriptors = new HashMap();
-	
-	private boolean trimLocked;
-
-	private HashMap preferredLocationMap = new HashMap();
-
-	/**
-	 * Creates a new (initially empty) trim layout.
-	 */
-	public TrimLayout() {
-		// Determine whether or not the trim is 'locked'
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-        trimLocked = store.getBoolean(IWorkbenchPreferenceConstants.LOCK_TRIM);
-		
-		createTrimArea(TOP_ID, TOP_ID.toString());
-		createTrimArea(BOTTOM_ID, BOTTOM_ID.toString());
-		createTrimArea(LEFT_ID, LEFT_ID.toString());
-		createTrimArea(RIGHT_ID, RIGHT_ID.toString());
-	}
-
-	private void createTrimArea(Integer id, String displayName) {
-		TrimArea top = new TrimArea(id.intValue(), displayName);
-		fTrimArea.put(id, top);
-	}
-
-	/**
-	 * Returns the location of the given trim control. For example, returns
-	 * SWT.LEFT if the control is docked on the left, SWT.RIGHT if docked on the
-	 * right, etc. Returns SWT.DEFAULT if the given control is not a trim
-	 * control.
-	 * 
-	 * @param trimControl
-	 *            control to query
-	 * @return The area ID of this control. If the control is not part of our
-	 *         trim, return SWT.DEFAULT.
-	 * @see #getAreaIds()
-	 */
-	public int getTrimAreaId(Control trimControl) {
-		TrimDescriptor desc = findTrimDescription(trimControl);
-		if (desc != null) {
-			return desc.getAreaId();
-		}
-		return SWT.DEFAULT;
-	}
-
-	/**
-	 * @param control
-	 *            new window trim to be added
-	 * @param areaId
-	 *            the area ID
-	 * @see #getAreaIds()
-	 * @deprecated
-	 */
-	public void addTrim(IWindowTrim control, int areaId) {
-		addTrim(areaId, control, null);
-	}
-
-	/**
-	 * 
-	 * @param trim
-	 *            new window trim to be added
-	 * @param areaId
-	 *            the area ID
-	 * @param beforeMe
-	 *            if null, the control will be inserted as the last trim widget
-	 *            on this side of the layout. Otherwise, the control will be
-	 *            inserted before the given widget.
-	 * @see #getAreaIds()
-	 * @deprecated
-	 */
-	public void addTrim(IWindowTrim trim, int areaId, IWindowTrim beforeMe) {
-		addTrim(areaId, trim, beforeMe);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#addTrim(int,
-	 *      org.eclipse.ui.internal.IWindowTrim)
-	 */
-	public void addTrim(int areaId, IWindowTrim trim) {
-		// If we're adding trim to the same side that it's
-		// already on then don't change its order
-		IWindowTrim insertBefore = null;
-		List trimDescs = getAreaTrim(areaId);
-		for (Iterator trimIter = trimDescs.iterator(); trimIter.hasNext();) {
-			IWindowTrim curTrim = (IWindowTrim) trimIter.next();
-			if (curTrim.getId().equals(trim.getId())) {
-				if (trimIter.hasNext()) {
-					insertBefore = (IWindowTrim) trimIter.next();
-				}
-			}
-		}
-		
-		addTrim(areaId, trim, insertBefore);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#addTrim(int,
-	 *      org.eclipse.ui.internal.IWindowTrim,
-	 *      org.eclipse.ui.internal.IWindowTrim)
-	 */
-	public void addTrim(int areaId, IWindowTrim trim, IWindowTrim beforeMe) {
-		TrimArea area = (TrimArea) fTrimArea.get(new Integer(areaId));
-		if (area == null) {
-			return;
-		}
-		
-		// remove the trim from the current layout
-		removeTrim(trim);
-
-		// Create a new trim descriptor for the new area...
-		TrimDescriptor desc = new TrimDescriptor(trim, areaId);
-		
-		// If the trim can be relocated then add a docking handle
-		boolean isAlreadyAHandle = trim instanceof TrimToolBarBase;
-		if (!trimLocked && trim.getValidSides() != SWT.NONE && !isAlreadyAHandle) {
-			// Create a 'docking' handle to allow dragging the trim
-			Composite dockingHandle = new TrimCommonUIHandle(this, trim, areaId);
-			desc.setDockingCache(new SizeCache(dockingHandle));
-		}
-
-		// Add the trim control
-		SizeCache cache = new SizeCache(trim.getControl());
-		trim.getControl().setLayoutData(trim);
-		desc.setCache(cache);
-		
-		// Add a dispose listener so we can clean up if the Client disposes the trim
-		trim.getControl().addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				Control control = (Control) e.widget;
-				if (control.getLayoutData() instanceof IWindowTrim) {
-					IWindowTrim trim = (IWindowTrim) control.getLayoutData();
-					removeTrim(trim);
-					//forceLayout();
-				}
-			}
-		});
-
-		// Add the new descriptor to the map
-		fTrimDescriptors.put(desc.getId(), desc);
-
-		// insert before behaviour, revisited
-		if (beforeMe != null) {
-			TrimDescriptor beforeDesc = (TrimDescriptor) fTrimDescriptors
-					.get(beforeMe.getId());
-			if (beforeDesc != null && beforeDesc.getAreaId() == areaId) {
-				area.addTrim(desc, beforeDesc);
-			} else {
-				area.addTrim(desc);
-			}
-		} else {
-			area.addTrim(desc);
-		}
-	}
-
-	/**
-	 * Force a layout of the trim
-	 */
-	public void forceLayout() {
-		removeDisposed();
-
-		// we hack this by calling the LayoutUtil with the
-		// first piece of trim that we find...(kludge!!)
-		Iterator d = fTrimDescriptors.values().iterator();
-		while (d.hasNext()) {
-			TrimDescriptor desc = (TrimDescriptor) d.next();
-			if (desc.getTrim().getControl() != null) {
-				LayoutUtil.resize(desc.getTrim().getControl());
-				return;
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#removeTrim(org.eclipse.ui.internal.IWindowTrim)
-	 */
-	public void removeTrim(IWindowTrim toRemove) {
-		TrimDescriptor desc = (TrimDescriptor) fTrimDescriptors.remove(toRemove
-				.getId());
-		if (desc == null) {
-			return;
-		}
-
-		TrimArea area = (TrimArea) fTrimArea.get(new Integer(desc.getAreaId()));
-		if (area != null) {
-			area.removeTrim(desc);
-			desc.getCache().getControl().setLayoutData(null);
-		}
-
-		// If we had a trim UI handle then dispose it
-		if (desc.getDockingCache() != null) {
-			Control ctrl = desc.getDockingCache().getControl();
-			
-			// KLUDGE!! we'll leak a handle rather than losing the
-			// mouse capture (for now...)
-			ctrl.setVisible(false);
-			//ctrl.dispose();
-			desc.setDockingCache(null);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#getTrim(java.lang.String)
-	 */
-	public IWindowTrim getTrim(String id) {
-		TrimDescriptor desc = (TrimDescriptor) fTrimDescriptors.get(id);
-		if (desc != null) {
-			return desc.getTrim();
-		}
-		return null;
-	}
-
-	/**
-	 * Removes any disposed widgets from this layout. This is still experimental
-	 * code.
-	 */
-	private void removeDisposed() {
-		Iterator a = fTrimArea.values().iterator();
-		while (a.hasNext()) {
-			TrimArea area = (TrimArea) a.next();
-			Iterator d = area.getDescriptors().iterator();
-			while (d.hasNext()) {
-				TrimDescriptor desc = (TrimDescriptor) d.next();
-				Control nextControl = desc.getTrim().getControl();
-				if (nextControl == null || nextControl.isDisposed()) {
-					// Remvoe the trim from the area's list (not the local copy)
-					area.removeTrim(desc);
-					
-					// Remove it from the map
-					fTrimDescriptors.remove(desc.getId());
-				}
-			}
-		}
-	}
-
-	/**
-	 * We -can't- determine the correct size for the shell because
-	 * of it's underlying 'big lie' structure (i.e. many of the controls
-	 * are created as children of the shell and then we play a games than
-	 * makes them -appear- to be contained in a Control hoerarchy)
-	 * and the fact that most of the
-	 * UI elements don't really exist until shown (meaning that
-	 * the normal 'computeSize' mechanism won't work).
-	 *
-	 * See bug 166619 for details but we'll keep returning the
-	 * current value for legacy reasons...
-	 * 
-	 * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
-	 *      int, int, boolean)
-	 */
-	protected Point computeSize(Composite composite, int wHint, int hHint,
-			boolean flushCache) {
-		return new Point(0, 0);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
-	 *      boolean)
-	 */
-	protected void layout(Composite composite, boolean flushCache) {
-		//long startTime = System.currentTimeMillis();
-		removeDisposed();
-
-		// get the actual trim areas
-		TrimArea top = (TrimArea) fTrimArea.get(TOP_ID);
-		TrimArea bottom = (TrimArea) fTrimArea.get(BOTTOM_ID);
-		TrimArea left = (TrimArea) fTrimArea.get(LEFT_ID);
-		TrimArea right = (TrimArea) fTrimArea.get(RIGHT_ID);
-
-		Rectangle clientArea = composite.getClientArea();
-
-		// Determine the amount of space necessary for the trim areas 
-		int trim_top = top.computeWrappedTrim(clientArea.width);
-		int trim_bottom = bottom.computeWrappedTrim(clientArea.width);
-		
-		// The space left over after the top and bottom have been laid out
-		// represents the 'fixed' dimension for the vertical trim 
-		int verticalMajor = clientArea.height- (trim_top+trim_bottom);
-		
-		// Lay out the left/right trim areas
-		int trim_left = left.computeWrappedTrim(verticalMajor);
-		int trim_right = right.computeWrappedTrim(verticalMajor);
-		
-		// Tile the trim into the allotted space
-		top.tileTrim(clientArea.x, clientArea.y, clientArea.width);
-		bottom.tileTrim(clientArea.x, clientArea.height-trim_bottom, clientArea.width);
-		left.tileTrim(clientArea.x, clientArea.y + trim_top, verticalMajor);
-		right.tileTrim(clientArea.width-trim_right, clientArea.y + trim_top, verticalMajor);
-
-		// Lay out the center area in to the 'leftover' space
-		if (centerArea.getControl() != null) {
-			Control caCtrl = centerArea.getControl();
-			caCtrl.setBounds(clientArea.x+trim_left,
-					clientArea.y+trim_top,
-					clientArea.width - (trim_left+trim_right),
-					clientArea.height - (trim_top+trim_bottom));
-		}
-	}
-
-	/**
-	 * Sets the widget that will occupy the central area of the layout.
-	 * Typically, this will be a composite that contains the main widgetry of
-	 * the application.
-	 * 
-	 * @param center
-	 *            control that will occupy the center of the layout, or null if
-	 *            none
-	 */
-	public void setCenterControl(Control center) {
-		centerArea.setControl(center);
-	}
-
-	/**
-	 * Returns the control in the center of this layout
-	 * 
-	 * @return the center area control.
-	 */
-	public Control getCenterControl() {
-		return centerArea.getControl();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ICachingLayout#flush(org.eclipse.swt.widgets.Control)
-	 */
-	public void flush(Control dirtyControl) {
-		if (dirtyControl == centerArea.getControl()) {
-			centerArea.flush();
-		} else {
-			TrimDescriptor desc = findTrimDescription(dirtyControl);
-			if (desc != null) {
-				desc.flush();
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#getAreaIds()
-	 */
-	public int[] getAreaIds() {
-		return (int[]) TRIM_ID_INFO.clone();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#getAreaTrim(int)
-	 */
-	public List getAreaTrim(int areaId) {
-		TrimArea area = (TrimArea) fTrimArea.get(new Integer(areaId));
-		if (area == null) {
-			return Collections.EMPTY_LIST;
-		}
-		return area.getTrims();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#updateAreaTrim(int,
-	 *      java.util.List, boolean)
-	 */
-	public void updateAreaTrim(int id, List trim, boolean removeExtra) {
-		TrimArea area = (TrimArea) fTrimArea.get(new Integer(id));
-		if (area == null) {
-			return;
-		}
-		List current = area.getTrims();
-
-		// add back the trim ... this takes care of moving it
-		// from one trim area to another.
-		Iterator i = trim.iterator();
-		while (i.hasNext()) {
-			IWindowTrim t = (IWindowTrim) i.next();
-			t.dock(id);  // Ensure that the trim is properly oriented
-			addTrim(id, t, null);
-			current.remove(t);
-		}
-
-		if (removeExtra) {
-			// if it wasn't removed from the current list, then it's extra
-			// trim we don't need.
-			i = current.iterator();
-			while (i.hasNext()) {
-				IWindowTrim t = (IWindowTrim) i.next();
-				removeTrim(t);
-			}
-		}
-	}
-
-	/**
-	 * Return a trim area rectangle.
-	 * 
-	 * @param window
-	 *            the window that has the trim
-	 * @param areaId
-	 *            the side it's on
-	 * @return the area rectangle.
-	 * @since 3.2
-	 * @see #getAreaIds()
-	 */
-	public Rectangle getTrimRect(Composite window, int areaId) {
-		TrimArea area = getTrimArea(areaId);
-		return window.getDisplay().map(window, null, area.getCurRect());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#getAllTrim()
-	 */
-	public List getAllTrim() {
-		List trimList = new ArrayList(fTrimDescriptors.size());
-
-		Iterator d = fTrimDescriptors.values().iterator();
-		while (d.hasNext()) {
-			TrimDescriptor desc = (TrimDescriptor) d.next();
-			trimList.add(desc.getTrim());
-		}
-
-		return trimList;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.layout.ITrimManager#setTrimVisible(org.eclipse.ui.internal.IWindowTrim,
-	 *      boolean)
-	 */
-	public void setTrimVisible(IWindowTrim trim, boolean visible) {
-		TrimDescriptor desc = findTrimDescription(trim.getControl());
-
-		if (desc != null) {
-			desc.setVisible(visible);
-		}
-	}
-
-	/**
-	 * Find the trim descriptor for this control.
-	 * 
-	 * @param trim
-	 *            the Control to find.
-	 * @return the trim descriptor, or <code>null</code> if not found.
-	 * @since 3.2
-	 */
-	private TrimDescriptor findTrimDescription(Control trim) {
-		Iterator d = fTrimDescriptors.values().iterator();
-		while (d.hasNext()) {
-			TrimDescriptor desc = (TrimDescriptor) d.next();
-			if (desc.getTrim().getControl() == trim) {
-				return desc;
-			}
-			if (desc.getDockingCache() != null
-					&& desc.getDockingCache().getControl() == trim) {
-				return desc;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Return the trim area associated with the given id
-	 * 
-	 * @param areaId
-	 *            The id of the trim area to get
-	 * @return The TrimArea or <code>null</code> if the id is not found
-	 */
-	public TrimArea getTrimArea(int areaId) {
-		return (TrimArea) fTrimArea.get(new Integer(areaId));
-	}
-
-	/**
-	 * Remember the persisted locations for the trim. This allows the code
-	 * to site the trim in its preferred (i.e. cached) location on creation
-	 * 
-	 * @param areaId The id of the trim area being defined
-	 * @param preferredLocations A list of trim ID's
-	 */
-	public void setPreferredLocations(int areaId, List preferredLocations) {
-		preferredLocationMap.put(new Integer(areaId), preferredLocations);
-	}
-	
-	/**
-	 * If the given id has a cached location return its preferred side
-	 * 
-	 * @param trimId The id of the trim to be tested
-	 * @return The areaId of a cached id or -1 if no cache info exists
-	 */
-	public int getPreferredArea(String trimId) {
-		Iterator keyIter = preferredLocationMap.keySet().iterator();
-		while (keyIter.hasNext()) {
-			Integer key = (Integer) keyIter.next();
-			List areaList = (List) preferredLocationMap.get(key);
-			if (areaList.contains(trimId))
-				return key.intValue();
-		}
-		
-		return -1;
-	}
-	
-	/**
-	 * If the given id has a cached location return an existing trim
-	 * element that it should be placed before (if any)
-	 * 
-	 * @param trimId The id of the trim to be tested
-	 * @return The trim to be inserted before or <code>null</code>
-	 * if no cached info exists
-	 */
-	public IWindowTrim getPreferredLocation(String trimId) {
-		Iterator keyIter = preferredLocationMap.keySet().iterator();
-		while (keyIter.hasNext()) {
-			Integer key = (Integer) keyIter.next();
-			List areaList = (List) preferredLocationMap.get(key);
-			int index = areaList.indexOf(trimId);
-			if (index != -1) {
-				// OK, find the first 'real' trim after this one
-				// This will be used as the 'beforeMe' parameter
-				// in the 'addTrim' call
-				for (int i = index+1; i < areaList.size(); i++) {
-					String id = (String) areaList.get(i);
-					IWindowTrim trim = getTrim(id);
-					if (trim != null)
-						return trim;
-				}
-			}
-		}
-		
-		return null;
-	}
-
-	/**
-	 * Disables the controls associated with visible trim elements. This
-	 * is only used during long-running WorkbenchWindow operations to prevent users
-	 * from changing the environment while the operation (i.e. a long-running editor
-	 * 'save') is in progress.
-	 * 
-	 * The expected life-cycle is to first call this this method to disable any visible
-	 * trim (and caching the elements that had to be disabled) followed by a call to
-	 * 'enableTrim' passing in the list returned from this method.
-	 * 
-	 * @param ignoreMe Since the current UI has a disable button in the StatusLine
-	 * we allow the caller to designate one piece of trim to ignore
-	 * 
-	 * @return The list of trim controls that were disabled during this call
-	 */
-	public List disableTrim(IWindowTrim ignoreMe) {
-		List disabledControls = new ArrayList();
-
-		// Disable all the trim -except- for 'ignoreMe'
-		List allTrim = getAllTrim();
-		for (Iterator trimIter = allTrim.iterator(); trimIter.hasNext();) {
-			IWindowTrim trim = (IWindowTrim) trimIter.next();
-			if (ignoreMe == trim)
-				continue;
-			
-			Control ctrl = trim.getControl();
-			if (ctrl == null || ctrl.isDisposed() || !ctrl.isVisible() || !ctrl.isEnabled())
-				continue;
-			
-			ctrl.setEnabled(false);
-			disabledControls.add(ctrl);
-		}
-		
-		return disabledControls;
-	}
-	
-	/**
-	 * Enables the controls in the list. This list is expected to be a non-modified
-	 * List as returned from a call to 'disableTrim'.
-	 * @param disabledControls The list of controls to enable
-	 */
-	public void enableTrim(List disabledControls) {
-		// Simply re-enable any controls in the list
-		for (Iterator dcIter = disabledControls.iterator(); dcIter.hasNext();) {
-			Control ctrl = (Control) dcIter.next();
-			
-			if (!ctrl.isDisposed() && !ctrl.isEnabled())
-				ctrl.setEnabled(true);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimToolBarBase.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimToolBarBase.java
deleted file mode 100644
index 9bff3a4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/layout/TrimToolBarBase.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.layout;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.internal.IChangeListener;
-import org.eclipse.ui.internal.IntModel;
-import org.eclipse.ui.internal.RadioMenu;
-import org.eclipse.ui.internal.TrimFrame;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.presentations.PresentationUtil;
-
-/**
- * This control provides common UI functionality for trim elements
- * that wish to use a ToolBarManager-based implementation.
- * <p>
- * It provides the following features:
- * <p>
- * Drag affordance and handling:
- * <ol>
- * <li>The ToolBar is contained within a CoolBar/Item to provide the same
- * drag handle affordance as the rest of the trim
- * <li>Drag handling is provided to allow rearrangement within a trim side or
- * to other sides, depending on the values returned by <code>IWindowTrim.getValidSides</code></li>
- * </ol>
- * </p>
- * <p>
- * Context Menu:
- * <ol>
- * <li>A "Dock on" menu item is provided to allow changing the side, depending on the values returned by 
- * <code>IWindowTrim.getValidSides</code></li>
- * <li>A "Close" menu item is provided to allow the User to close (hide) the trim element,
- * based on the value returned by <code>IWindowTrim.isCloseable</code>
- * </ol>
- * </p>
- * <p>
- * @since 3.3
- * </p>
- */
-public abstract class TrimToolBarBase implements IWindowTrim {
-	// Fields
-	protected String id;
-	protected int orientation;
-	protected WorkbenchWindow wbw;
-	protected TrimLayout layout;
-	protected ToolBarManager tbMgr = null;
-	protected ToolItem contextToolItem = null;
-
-	// CoolBar handling
-	private TrimFrame frame = null;
-	private CoolBar cb = null;
-	private CoolItem ci = null;
-    
-	// Context Menu
-	private MenuManager dockMenuManager;
-	private ContributionItem dockContributionItem = null;
-    private Menu sidesMenu;
-	private MenuItem dockCascade;
-    private RadioMenu radioButtons;
-    private IntModel radioVal = new IntModel(0);
-//	private Menu showMenu;
-//	private MenuItem showCascade;
-	
-	/*
-	 * Listeners...
-	 */
-
-    private Listener tbListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point loc = new Point(event.x, event.y);
-            if (event.type == SWT.MenuDetect) {
-                showToolBarPopup(loc);
-            }
-        }
-    };
-
-    /**
-     * This listener brings up the context menu
-     */
-    private Listener cbListener = new Listener() {
-        public void handleEvent(Event event) {
-            Point loc = new Point(event.x, event.y);
-            if (event.type == SWT.MenuDetect) {
-                showDockTrimPopup(loc);
-            }
-        }
-    };
-    
-    /**
-     * This listener starts a drag operation when
-     * the Drag and Drop manager tells it to
-     */
-    private Listener dragListener = new Listener() {
-        public void handleEvent(Event event) {
-        	// Only allow 'left mouse' drags...
-        	if (event.button != 3) {
-	            Point position = DragUtil.getEventLoc(event);
-	            startDraggingTrim(position);
-        	}
-        }
-    };
-
-    /**
-     * Create a new trim UI handle for a particular IWindowTrim item
-     * 
-     * @param layout the TrimLayout we're being used in
-     * @param trim the IWindowTrim we're acting on behalf of
-     * @param curSide  the SWT side that the trim is currently on
-     */
-    protected TrimToolBarBase(String id, int curSide, WorkbenchWindow wbw) {
-    	this.id = id;
-    	this.wbw = wbw;
-    	this.layout = (TrimLayout) wbw.getTrimManager();
-    }
-
-    /**
-	 * @param loc
-	 */
-	private void showToolBarPopup(Point loc) {
-		Point tbLoc = tbMgr.getControl().toControl(loc);
-		contextToolItem = tbMgr.getControl().getItem(tbLoc);
-		MenuManager mm = tbMgr.getContextMenuManager();
-		if (mm != null) {
-			Menu menu = mm.createContextMenu(wbw.getShell());
-	        menu.setLocation(loc.x, loc.y);
-	        menu.setVisible(true);
-		}
-	}
-
-	/**
-     * Initialize the ToolBarManger for this instance. We create a
-     * new ToolBarManager whenever we need to and this gives the
-     * derived class a chance to define the ICI's and context
-     * menu...
-     * 
-     * @param mgr The manager to initialize
-     */
-    public abstract void initToolBarManager(ToolBarManager mgr);
-    
-    /**
-     * Hook any necessary listeners to the new ToolBar instance.
-     * <p>
-     * NOTE: Clients should add a dispose listener if necessary to
-     * unhook listeners added through this call.
-     * </p>
-     * @param mgr The ToolBarManager whose control is to be hooked
-     */
-    public abstract void hookControl(ToolBarManager mgr);
-    
-	/**
-	 * Set up the trim with its cursor, drag listener, context menu and menu listener.
-	 * This method can also be used to 'recycle' a trim handle as long as the new handle
-	 * is for trim under the same parent as it was originally used for.
-	 */
-	private void createControl(int curSide) {
-		// out with the old
-		dispose();
-		
-    	this.radioVal.set(curSide);
-    	
-    	// remember the orientation to use
-    	orientation = (curSide == SWT.LEFT || curSide == SWT.RIGHT) ? SWT.VERTICAL  : SWT.HORIZONTAL;
-
-    	frame = new TrimFrame(wbw.getShell());
-		
-		// Create the necessary parts...
-		cb = new CoolBar(frame.getComposite(), orientation | SWT.FLAT);
-		ci = new CoolItem(cb, SWT.FLAT);
-
-		// Create (and 'fill') the toolbar
-		tbMgr = new ToolBarManager(orientation | SWT.FLAT);
-		
-		// Have the subclass define any manager content
-		initToolBarManager(tbMgr);
-		
-		// Create the new ToolBar
-		ToolBar tb = tbMgr.createControl(cb);
-		ci.setControl(tb);
-		
-		// Have the subclass hook any listeners
-		hookControl(tbMgr);
-		
-		// set up the frame's layout
-		update(true);
-		
-    	// Set the cursor affordance
-    	Cursor dragCursor = getControl().getDisplay().getSystemCursor(SWT.CURSOR_SIZEALL);
-    	cb.setCursor(dragCursor);
-    	
-    	// Now, we have to explicity set the arrow for the TB
-    	Cursor tbCursor = getControl().getDisplay().getSystemCursor(SWT.CURSOR_ARROW);
-    	tb.setCursor(tbCursor);
-    	
-    	//cb.setBackground(cb.getDisplay().getSystemColor(SWT.COLOR_RED));
-    	
-        // Set up the dragging behaviour
-        PresentationUtil.addDragListener(cb, dragListener);
-    	
-    	// Create the docking context menu
-    	dockMenuManager = new MenuManager();
-    	dockContributionItem = getDockingContribution();
-        dockMenuManager.add(dockContributionItem);
-
-        tb.addListener(SWT.MenuDetect, tbListener);
-        cb.addListener(SWT.MenuDetect, cbListener);
-        
-        //tbMgr.getControl().setBackground(cb.getDisplay().getSystemColor(SWT.COLOR_GREEN));
-        //tbMgr.getControl().pack(true);
-        cb.pack(true);
-        cb.setVisible(true);
-        
-        tbMgr.getControl().setVisible(true);
-        cb.setVisible(true);
-        frame.getComposite().setVisible(true);
-    }
-
-    /**
-     * Handle the event generated when a User selects a new side to
-     * dock this trim on using the context menu
-     */
-    private void handleShowOnChange() {
-    	if (getControl() == null)
-    		return;
-    	
-    	layout.removeTrim(this);
-    	dock(radioVal.get());
-    	layout.addTrim(radioVal.get(), this, null);
-    	
-    	// perform an optimized layout to show the trim in its new location
-    	LayoutUtil.resize(getControl());
-	}
-
-	/**
-	 * Force the toobar to re-synch to the model
-	 * @param changed true if changes have occurred in the structure
-	 */
-	public void update(boolean changed) {
-		tbMgr.update(changed);
-		
-		// Force a resize
-		tbMgr.getControl().pack();
-	    Point size = tbMgr.getControl().getSize();
-	    //tbMgr.getControl().setBounds(0, 0, size.x, size.y);
-	    Point ps = ci.computeSize (size.x, size.y);
-		ci.setPreferredSize (ps);
-		ci.setSize(ps);
-		cb.pack();
-		cb.update();
-		LayoutUtil.resize(getControl());
-	}
-	
-	/**
-	 * Construct (if necessary) a context menu contribution item and return it. This
-	 * is explicitly <code>public</code> so that trim elements can retrieve the item
-	 * and add it into their own context menus if desired.
-	 * 
-	 * @return The contribution item for the handle's context menu. 
-	 */
-	private ContributionItem getDockingContribution() {
-    	if (dockContributionItem == null) {
-    		dockContributionItem = new ContributionItem() {
-    			public void fill(Menu menu, int index) {
-    				// populate from superclass
-    				super.fill(menu, index);
-    				
-    				// Add a 'Close' menu entry if the trim supports the operation
-    				if (isCloseable()) {
-	    				MenuItem closeItem = new MenuItem(menu, SWT.PUSH, index++);
-	    				closeItem.setText(WorkbenchMessages.TrimCommon_Close);
-	    				
-	    				closeItem.addSelectionListener(new SelectionListener() {
-							public void widgetSelected(SelectionEvent e) {
-								handleCloseTrim();
-							}
-
-							public void widgetDefaultSelected(SelectionEvent e) {
-							}
-	    				});
-
-	    				new MenuItem(menu, SWT.SEPARATOR, index++);
-    				}
-    				
-    				// Test Hook: add a menu entry that brings up a dialog to allow
-    				// testing with various GUI prefs.
-//    				MenuItem closeItem = new MenuItem(menu, SWT.PUSH, index++);
-//    				closeItem.setText("Change Preferences"); //$NON-NLS-1$
-//    				
-//    				closeItem.addSelectionListener(new SelectionListener() {
-//						public void widgetSelected(SelectionEvent e) {
-//							handleChangePreferences();
-//						}
-//
-//						public void widgetDefaultSelected(SelectionEvent e) {
-//						}
-//    				});
-//
-//    				new MenuItem(menu, SWT.SEPARATOR, index++);
-    				
-    				// Create a cascading menu to allow the user to dock the trim
-    				dockCascade = new MenuItem(menu, SWT.CASCADE, index++);
-    				{
-    					dockCascade.setText(WorkbenchMessages.TrimCommon_DockOn); 
-    					
-    					sidesMenu = new Menu(dockCascade);
-    					radioButtons = new RadioMenu(sidesMenu, radioVal);
-    					
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Top, new Integer(SWT.TOP));
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Bottom, new Integer(SWT.BOTTOM));
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Left, new Integer(SWT.LEFT));
-						radioButtons.addMenuItem(WorkbenchMessages.TrimCommon_Right, new Integer(SWT.RIGHT));
-    					
-    					dockCascade.setMenu(sidesMenu);
-    				}
-
-    		    	// if the radioVal changes it means that the User wants to change the docking location
-    		    	radioVal.addChangeListener(new IChangeListener() {
-    					public void update(boolean changed) {
-    						if (changed) {
-								handleShowOnChange();
-							}
-    					}
-    		    	});
-    				
-    				// Provide Show / Hide trim capabilities
-//    				showCascade = new MenuItem(menu, SWT.CASCADE, index++);
-//    				{
-//    					showCascade.setText(WorkbenchMessages.TrimCommon_ShowTrim); 
-//    					
-//    					showMenu = new Menu(dockCascade);
-//    					
-//    					// Construct a 'hide/show' cascade from -all- the existing trim...
-//    					List trimItems = layout.getAllTrim();
-//    					Iterator d = trimItems.iterator();
-//    					while (d.hasNext()) {
-//    						IWindowTrim trimItem = (IWindowTrim) d.next();
-//							MenuItem item = new MenuItem(showMenu, SWT.CHECK);
-//							item.setText(trimItem.getDisplayName());
-//							item.setSelection(trimItem.getControl().getVisible());
-//							item.setData(trimItem);
-//							
-//							// TODO: Make this work...wire it off for now
-//							item.setEnabled(false);
-//							
-//							item.addSelectionListener(new SelectionListener() {
-//
-//								public void widgetSelected(SelectionEvent e) {
-//									IWindowTrim trim = (IWindowTrim) e.widget.getData();
-//									layout.setTrimVisible(trim, !trim.getControl().getVisible());
-//								}
-//
-//								public void widgetDefaultSelected(SelectionEvent e) {
-//								}
-//								
-//							});
-//						}
-//    					
-//    					showCascade.setMenu(showMenu);
-//    				}
-    			}
-    		};
-    	}
-    	return dockContributionItem;
-    }
-
-	/**
-	 * @return The side the trm is currently on
-	 */
-	public int getCurrentSide() {
-		return radioVal.get();
-	}
-	
-	/**
-	 * Test Hook: Bring up a dialog that allows the user to
-	 * modify the trimdragging GUI preferences.
-	 */
-//	private void handleChangePreferences() {
-//		TrimDragPreferenceDialog dlg = new TrimDragPreferenceDialog(getShell());
-//		dlg.open();
-//	}
-   
-	/**
-	 * Handle the event generated when the "Close" item is
-	 * selected on the context menu. This removes the associated
-	 * trim and calls back to the IWidnowTrim to inform it that
-	 * the User has closed the trim.
-	 */
-	private void handleCloseTrim() {
-		handleClose();
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.swt.widgets.Widget#dispose()
-     */
-    public void dispose() {
-    	if (getControl() == null || getControl().isDisposed())
-    		return;
-    	
-        if (radioButtons != null) {
-            radioButtons.dispose();
-        }
-
-        // tidy up...
-        getControl().removeListener(SWT.MenuDetect, cbListener);
-        
-        tbMgr.dispose();
-        tbMgr = null;
-        
-        getControl().dispose();
-        frame = null;
-    }
-
-    /**
-     * Begins dragging the trim
-     * 
-     * @param position initial mouse position
-     */
-    private void startDraggingTrim(Point position) {
-    	Rectangle fakeBounds = new Rectangle(100000, 0,0,0);
-        DragUtil.performDrag(this, fakeBounds, position, true);
-    }
-
-    /**
-     * Shows the popup menu for an item in the fast view bar.
-     */
-    private void showDockTrimPopup(Point pt) {
-        Menu menu = dockMenuManager.createContextMenu(this.getControl());
-        menu.setLocation(pt.x, pt.y);
-        menu.setVisible(true);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#dock(int)
-	 */
-	public void dock(int dropSide) {
-		createControl(dropSide);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#getControl()
-	 */
-	public Control getControl() {
-		if (frame == null)
-			return null;
-		
-		return frame.getComposite();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#getDisplayName()
-	 */
-	public String getDisplayName() {
-		return id;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#getHeightHint()
-	 */
-	public int getHeightHint() {
-		return getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#getId()
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#getValidSides()
-	 */
-	public int getValidSides() {
-		return SWT.BOTTOM | SWT.TOP | SWT.LEFT | SWT.RIGHT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#getWidthHint()
-	 */
-	public int getWidthHint() {
-		return getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#handleClose()
-	 */
-	public void handleClose() {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#isCloseable()
-	 */
-	public boolean isCloseable() {
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.layout.IWindowTrim#isResizeable()
-	 */
-	public boolean isResizeable() {
-		return false;
-	}	    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/AbstractWorkbenchWidget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/AbstractWorkbenchWidget.java
deleted file mode 100644
index 02e7ab1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/AbstractWorkbenchWidget.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.menus.IWorkbenchWidget;
-
-/**
- * @since 3.3
- *
- */
-public class AbstractWorkbenchWidget implements IWorkbenchWidget {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.menus.IWorkbenchWidget#init(org.eclipse.ui.IWorkbenchWindow)
-	 */
-	public void init(IWorkbenchWindow workbenchWindow) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#dispose()
-	 */
-	public void dispose() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.Composite)
-	 */
-	public void fill(Composite parent) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.Menu, int)
-	 */
-	public void fill(Menu parent, int index) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.ToolBar, int)
-	 */
-	public void fill(ToolBar parent, int index) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.menus.IWidget#fill(org.eclipse.swt.widgets.CoolBar, int)
-	 */
-	public void fill(CoolBar parent, int index) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/**
-	 * @return The preferred size of this item
-	 */
-	public Point getPreferredSize() {
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionRoot.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionRoot.java
deleted file mode 100644
index 70b9e0e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/ContributionRoot.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.internal.expressions.AlwaysEnabledExpression;
-import org.eclipse.ui.menus.AbstractContributionFactory;
-import org.eclipse.ui.menus.IContributionRoot;
-
-/**
- * Default implementation.
- * 
- * @since 3.3
- */
-final class ContributionRoot implements
-		IContributionRoot {
-
-	private List topLevelItems = new ArrayList();
-	private List itemsToExpressions = new ArrayList();
-	private InternalMenuService menuService;
-	Set restriction;
-	private ContributionManager mgr;
-	private AbstractContributionFactory factory;
-
-	public ContributionRoot(InternalMenuService menuService, Set restriction,
-			ContributionManager mgr, AbstractContributionFactory factory) {
-		this.menuService = menuService;
-		this.restriction = restriction;
-		this.mgr = mgr;
-		this.factory = factory;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.menus.IContributionRoot#addContributionItem(org.eclipse.jface.action.IContributionItem, org.eclipse.core.expressions.Expression, org.eclipse.core.expressions.Expression)
-	 */
-	public void addContributionItem(IContributionItem item,
-			Expression visibleWhen) {
-		if (item == null)
-			throw new IllegalArgumentException();
-		topLevelItems.add(item);
-		if (visibleWhen == null) 
-			visibleWhen = AlwaysEnabledExpression.INSTANCE;
-		
-		menuService.registerVisibleWhen(item, visibleWhen, restriction,
-				createIdentifierId(item));
-		itemsToExpressions.add(item);
-	}
-
-	/**
-     * Create the activity identifier for this contribution item.
-     *
-	 * @param item the item
-	 * @return the identifier
-	 */
-	private String createIdentifierId(IContributionItem item) {
-		String namespace = factory.getNamespace();
-		String identifierID = namespace != null ? namespace + '/'
-				+ item.getId() : null; // create the activity identifier ID. If
-										// this factory doesn't have a namespace
-										// it will be null.
-		return identifierID;
-	}
-
-	public List getItems() {
-		return topLevelItems;
-	}
-
-	/**
-	 * Unregister all visible when expressions from the menu service.
-	 */
-	public void release() {
-		for (Iterator itemIter = itemsToExpressions.iterator(); itemIter.hasNext();) {
-			IContributionItem item = (IContributionItem) itemIter.next();
-			menuService.unregisterVisibleWhen(item, restriction);
-			item.dispose();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.menus.IContributionRoot#registerVisibilityForChild(org.eclipse.jface.action.IContributionItem,
-	 *      org.eclipse.core.expressions.Expression,
-	 *      org.eclipse.core.expressions.Expression)
-	 */
-	public void registerVisibilityForChild(IContributionItem item,
-			Expression visibleWhen) {
-		if (item == null)
-			throw new IllegalArgumentException();
-		if (visibleWhen == null) 
-			visibleWhen = AlwaysEnabledExpression.INSTANCE;
-		menuService.registerVisibleWhen(item, visibleWhen, restriction,
-				createIdentifierId(item));
-		itemsToExpressions.add(item);
-	}
-
-	/**
-	 * @return Returns the mgr.
-	 */
-	public ContributionManager getManager() {
-		return mgr;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
deleted file mode 100644
index 9ad5212..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.swt.IFocusService;
-
-/**
- * @since 3.3
- * 
- */
-public class FocusControlSourceProvider extends AbstractSourceProvider
-		implements IFocusService {
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] {
-			ISources.ACTIVE_FOCUS_CONTROL_ID_NAME,
-			ISources.ACTIVE_FOCUS_CONTROL_NAME };
-
-	Map controlToId = new HashMap();
-	private FocusListener focusListener;
-
-	private String currentId;
-
-	private Control currentControl;
-
-	private DisposeListener disposeListener;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.menus.IFocusService#addTrackerFor(org.eclipse.swt.widgets.Control,
-	 *      java.lang.String)
-	 */
-	public void addFocusTracker(Control control, String id) {
-		if (control.isDisposed()) {
-			return;
-		}
-		controlToId.put(control, id);
-		control.addFocusListener(getFocusListener());
-		control.addDisposeListener(getDisposeListener());
-	}
-
-	private DisposeListener getDisposeListener() {
-		if (disposeListener == null) {
-			disposeListener = new DisposeListener() {
-				public void widgetDisposed(DisposeEvent e) {
-					controlToId.remove(e.widget);
-				}
-			};
-		}
-		return disposeListener;
-	}
-
-	private FocusListener getFocusListener() {
-		if (focusListener == null) {
-			focusListener = new FocusListener() {
-				public void focusGained(FocusEvent e) {
-					focusIn(e.widget);
-				}
-
-				public void focusLost(FocusEvent e) {
-					focusIn(null);
-				}
-			};
-		}
-		return focusListener;
-	}
-
-	/**
-	 * @param widget
-	 */
-	private void focusIn(Widget widget) {
-		String id = (String) controlToId.get(widget);
-		if (currentId != id) {
-			Map m = new HashMap();
-			if (id == null) {
-				currentId = null;
-				currentControl = null;
-				m.put(ISources.ACTIVE_FOCUS_CONTROL_ID_NAME,
-						IEvaluationContext.UNDEFINED_VARIABLE);
-				m.put(ISources.ACTIVE_FOCUS_CONTROL_NAME,
-						IEvaluationContext.UNDEFINED_VARIABLE);
-			} else {
-				currentId = id;
-				currentControl = (Control) widget;
-				m.put(ISources.ACTIVE_FOCUS_CONTROL_ID_NAME, currentId);
-				m.put(ISources.ACTIVE_FOCUS_CONTROL_NAME, currentControl);
-			}
-			fireSourceChanged(ISources.ACTIVE_MENU, m);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.menus.IFocusService#removeTrackerFor(org.eclipse.swt.widgets.Control)
-	 */
-	public void removeFocusTracker(Control control) {
-		controlToId.remove(control);
-		if (control.isDisposed()) {
-			return;
-		}
-		control.removeFocusListener(getFocusListener());
-		control.removeDisposeListener(getDisposeListener());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.ISourceProvider#dispose()
-	 */
-	public void dispose() {
-		Iterator i = controlToId.keySet().iterator();
-		while (i.hasNext()) {
-			Control c = (Control) i.next();
-			if (!c.isDisposed()) {
-				c.removeFocusListener(getFocusListener());
-				c.removeDisposeListener(getDisposeListener());
-			}
-		}
-		controlToId.clear();
-		controlToId = null;
-		focusListener = null;
-		disposeListener = null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.ISourceProvider#getCurrentState()
-	 */
-	public Map getCurrentState() {
-		Map m = new HashMap();
-		if (currentId == null) {
-			m.put(ISources.ACTIVE_FOCUS_CONTROL_ID_NAME,
-					IEvaluationContext.UNDEFINED_VARIABLE);
-			m.put(ISources.ACTIVE_FOCUS_CONTROL_NAME,
-					IEvaluationContext.UNDEFINED_VARIABLE);
-
-		} else {
-			m.put(ISources.ACTIVE_FOCUS_CONTROL_ID_NAME, currentId);
-			m.put(ISources.ACTIVE_FOCUS_CONTROL_NAME, currentControl);
-		}
-		return m;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.ISourceProvider#getProvidedSourceNames()
-	 */
-	public String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IActionSetsListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IActionSetsListener.java
deleted file mode 100644
index 4879eef..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IActionSetsListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.ui.internal.ActionSetsEvent;
-
-
-/**
- * <p>
- * A listener to changes in the list of active action sets.
- * </p>
- * <p>
- * This class is only intended for internal use within
- * <code>org.eclipse.ui.workbench</code>.
- * </p>
- * <p>
- * This class will eventually exist in <code>org.eclipse.jface.menus</code>.
- * </p>
- * 
- * @since 3.2
- */
-public interface IActionSetsListener {
-
-	/**
-	 * Indicates that the list of active action sets has changed.
-	 * 
-	 * @param event
-	 *            The event carrying information about the new state of the
-	 *            action sets; never <code>null</code>.
-	 */
-	public void actionSetsChanged(ActionSetsEvent event);
-
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuActivation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuActivation.java
deleted file mode 100644
index a823f75..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuActivation.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.internal.services.IEvaluationResultCache;
-
-/**
- * @since 3.3
- *
- */
-public interface IMenuActivation extends IEvaluationResultCache {
-	/**
-	 * @return the IContributionItem for the cache.
-	 */
-	public IContributionItem getContribution();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuLabelProvider.java
deleted file mode 100644
index a3c5382..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/IMenuLabelProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.jface.viewers.ILabelProvider;
-
-/**
- * Label provider for menu / toolbar items
- * 
- * @since 3.3
- *
- */
-public interface IMenuLabelProvider extends ILabelProvider {
-	/**
-	 * @return The Tooltip to use for this menu item
-	 */
-	public String getToolTip();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java
deleted file mode 100644
index f528105..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalControlContribution.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.jface.action.ControlContribution;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Add workbench specific information to a standard control contribution.
- * Allows the client derivatives to access the IWorkbenchWindow hosting
- * the control as well as the side of the workbench that the control is
- * currently being displayed on.
- * 
- * @since 3.3
- *
- */
-public abstract class InternalControlContribution extends ControlContribution {
-	private IWorkbenchWindow wbw;
-	private int curSide;
-	
-	/**
-	 * @param id
-	 */
-	protected InternalControlContribution(String id) {
-		super(id);
-	}
-
-	public InternalControlContribution() {
-		this("unknown ID"); //$NON-NLS-1$
-	}
-	
-	/**
-	 * @return Returns the wbw.
-	 */
-	public IWorkbenchWindow getWorkbenchWindow() {
-		return wbw;
-	}
-
-	/**
-	 * @param wbw The wbw to set.
-	 */
-	/*package*/ void setWorkbenchWindow(IWorkbenchWindow wbw) {
-		this.wbw = wbw;
-	}
-
-	/**
-	 * @return Returns the curSide.
-	 */
-	public int getCurSide() {
-		return curSide;
-	}
-
-	/**
-	 * @param curSide The curSide to set.
-	 */
-	/*package*/ void setCurSide(int curSide) {
-		this.curSide = curSide;
-	}
-	
-	public int getOrientation() {
-		if (getCurSide() == SWT.LEFT || getCurSide() == SWT.RIGHT)
-			return SWT.VERTICAL;
-		
-		return SWT.HORIZONTAL;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalMenuService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalMenuService.java
deleted file mode 100644
index ba13547..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/InternalMenuService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Internal baseclass for Workbench and Window menu service implementations.
- * Methods in this class might some day make sense to live in IMenuService.
- * 
- * @since 3.3
- * 
- */
-public abstract class InternalMenuService implements IMenuService {
-
-	/**
-	 * Ties an expression to {@link IContributionItem#setVisible(boolean)}.
-	 * 
-	 * @param item
-	 *            the item
-	 * @param visibleWhen
-	 *            the expression
-	 * @param restriction
-	 *            the restriction expression
-	 * @param identifierId
-	 * 			  the activity identifier id
-	 */
-	public abstract void registerVisibleWhen(final IContributionItem item,
-			final Expression visibleWhen, final Set restriction, String identifierID);
-
-	/**
-	 * Removes any expressions bound to
-	 * {@link IContributionItem#setVisible(boolean)} of the given item
-	 * 
-	 * @param item
-	 *            the item to unbind
-	 */
-	public abstract void unregisterVisibleWhen(IContributionItem item, final Set restriction);
-
-	/**
-	 * Return a list of {@link MenuAdditionCacheEntry} objects that are
-	 * contributed at the given uri.
-	 * 
-	 * @param uri
-	 *            the uri to search on
-	 * @return the list of items
-	 */
-	public abstract List getAdditionsForURI(MenuLocationURI uri);
-
-	public abstract void populateContributionManager(
-			IServiceLocator serviceLocatorToUse, Set restriction,
-			ContributionManager mgr, String uri, boolean recurse);
-
-	public abstract void populateContributionManager(ContributionManager mgr,
-			String uri, boolean recurse);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
deleted file mode 100644
index d8aeb0b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/LegacyActionPersistence.java
+++ /dev/null
@@ -1,1055 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.Category;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandEvent;
-import org.eclipse.core.commands.ICommandListener;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.State;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.LegacyActionTools;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.jface.commands.RadioState;
-import org.eclipse.jface.commands.ToggleState;
-import org.eclipse.jface.contexts.IContextIds;
-import org.eclipse.jface.menus.IMenuStateIds;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.SelectionEnabler;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.ActionExpression;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.expressions.LegacyActionExpressionWrapper;
-import org.eclipse.ui.internal.expressions.LegacyActionSetExpression;
-import org.eclipse.ui.internal.expressions.LegacyEditorContributionExpression;
-import org.eclipse.ui.internal.expressions.LegacySelectionEnablerWrapper;
-import org.eclipse.ui.internal.expressions.LegacyViewContributionExpression;
-import org.eclipse.ui.internal.expressions.LegacyViewerContributionExpression;
-import org.eclipse.ui.internal.handlers.ActionDelegateHandlerProxy;
-import org.eclipse.ui.internal.handlers.IActionCommandMappingService;
-import org.eclipse.ui.internal.keys.BindingService;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.RegistryPersistence;
-import org.eclipse.ui.keys.IBindingService;
-
-/**
- * <p>
- * A static class for reading actions from the registry. Actions were the
- * mechanism in 3.1 and earlier for contributing to menus and tool bars in the
- * Eclipse workbench. They have since been replaced with commands.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class LegacyActionPersistence extends RegistryPersistence {
-
-	/**
-	 * The index of the action set elements in the indexed array.
-	 * 
-	 * @see LegacyActionPersistence#read()
-	 */
-	private static final int INDEX_ACTION_SETS = 0;
-
-	/**
-	 * The index of the editor contribution elements in the indexed array.
-	 * 
-	 * @see LegacyActionPersistence#read()
-	 */
-	private static final int INDEX_EDITOR_CONTRIBUTIONS = 1;
-
-	/**
-	 * The index of the object contribution elements in the indexed array.
-	 * 
-	 * @see LegacyActionPersistence#read()
-	 */
-	private static final int INDEX_OBJECT_CONTRIBUTIONS = 2;
-
-	/**
-	 * The index of the view contribution elements in the indexed array.
-	 * 
-	 * @see LegacyActionPersistence#read()
-	 */
-	private static final int INDEX_VIEW_CONTRIBUTIONS = 3;
-
-	/**
-	 * The index of the viewer contribution elements in the indexed array.
-	 * 
-	 * @see LegacyActionPersistence#read()
-	 */
-	private static final int INDEX_VIEWER_CONTRIBUTIONS = 4;
-
-
-	/**
-	 * Reads the visibility element for a contribution from the
-	 * <code>org.eclipse.ui.popupMenus</code> extension point.
-	 * 
-	 * @param parentElement
-	 *            The contribution element which contains a visibility
-	 *            expression; must not be <code>null</code>.
-	 * @param parentId
-	 *            The identifier of the parent contribution; may be
-	 *            <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @return An expression representing the visibility element; may be
-	 *         <code>null</code>.
-	 */
-	private static final Expression readVisibility(
-			final IConfigurationElement parentElement, final String parentId,
-			final List warningsToLog) {
-		final IConfigurationElement[] visibilityElements = parentElement
-				.getChildren(TAG_VISIBILITY);
-		if ((visibilityElements == null) || (visibilityElements.length == 0)) {
-			return null;
-		}
-
-		if (visibilityElements.length != 1) {
-			addWarning(warningsToLog,
-					"There can only be one visibility element", parentElement, //$NON-NLS-1$
-					parentId);
-		}
-
-		final IConfigurationElement visibilityElement = visibilityElements[0];
-		final ActionExpression visibilityActionExpression = new ActionExpression(
-				visibilityElement);
-		final LegacyActionExpressionWrapper wrapper = new LegacyActionExpressionWrapper(
-				visibilityActionExpression, null);
-		return wrapper;
-	}
-
-	/**
-	 * The binding manager which should be populated with bindings from actions;
-	 * must not be <code>null</code>.
-	 */
-	private final BindingService bindingService;
-
-
-
-	/**
-	 * The command service which is providing the commands for the workbench;
-	 * must not be <code>null</code>.
-	 */
-	private final ICommandService commandService;
-
-	/**
-	 * The handler activations that have come from the registry. This is used to
-	 * flush the activations when the registry is re-read. This value is never
-	 * <code>null</code>
-	 */
-	private final Collection handlerActivations = new ArrayList();
-
-	/**
-	 * The menu contributions that have come from the registry. This is used to
-	 * flush the contributions when the registry is re-read. This value is never
-	 * <code>null</code>
-	 */
-	private final Collection menuContributions = new ArrayList();
-
-	/**
-	 * The service locator from which services can be retrieved in the future;
-	 * must not be <code>null</code>.
-	 */
-	private final IWorkbenchWindow window;
-	
-	/**
-	 * Help action sets with enable/disable.
-	 */
-	private ICommandListener actionSetListener = new ICommandListener() {
-		public void commandChanged(CommandEvent commandEvent) {
-			Command cmd = commandEvent.getCommand();
-			String commandId = cmd.getId();
-			Binding binding = (Binding) commandIdToBinding.get(commandId);
-			if (binding != null) {
-				if (cmd.isEnabled()) {
-					if (!actionSetActiveBindings.contains(binding)) {
-						bindingService.addBinding(binding);
-						actionSetActiveBindings.add(binding);
-					}
-				} else if (actionSetActiveBindings.contains(binding)) {
-					bindingService.removeBinding(binding);
-					actionSetActiveBindings.remove(binding);
-				}
-			}
-		}
-	};
-	
-	/**
-	 * Map every commandId to its binding.
-	 */
-	private HashMap commandIdToBinding = new HashMap();
-	
-	/**
-	 * Which bindings do we currently have outstanding.
-	 */
-	private HashSet actionSetActiveBindings = new HashSet();
-
-	/**
-	 * Constructs a new instance of {@link LegacyActionPersistence}.
-	 * 
-	 * @param window
-	 *            The window from which the services should be retrieved; must
-	 *            not be <code>null</code>.
-	 */
-	public LegacyActionPersistence(final IWorkbenchWindow window) {
-		// TODO Blind casts are bad.
-		this.bindingService = (BindingService) window
-				.getService(IBindingService.class);
-
-		this.commandService = (ICommandService) window
-				.getService(ICommandService.class);
-		this.window = window;
-	}
-
-	/**
-	 * Deactivates all of the activations made by this class, and then clears
-	 * the collection. This should be called before every read.
-	 */
-	private final void clearActivations() {
-		final IHandlerService service = (IHandlerService) window
-				.getService(IHandlerService.class);
-		service.deactivateHandlers(handlerActivations);
-		final Iterator activationItr = handlerActivations.iterator();
-		while (activationItr.hasNext()) {
-			final IHandlerActivation activation = (IHandlerActivation) activationItr
-					.next();
-			final IHandler handler = activation.getHandler();
-			if (handler != null) {
-				handler.dispose();
-			}
-		}
-		handlerActivations.clear();
-	}
-
-	/**
-	 * Removes all of the bindings made by this class, and then clears the
-	 * collection. This should be called before every read.
-	 */
-	private final void clearBindings() {
-		Iterator i = commandIdToBinding.entrySet().iterator();
-		while (i.hasNext()) {
-			Map.Entry entry = (Map.Entry) i.next();
-			String commandId = (String) entry.getKey();
-			Binding binding = (Binding) entry.getValue();
-			commandService.getCommand(commandId).removeCommandListener(actionSetListener);
-			if (binding!=null && actionSetActiveBindings.contains(binding)) {
-				bindingService.removeBinding(binding);
-			}
-		}
-		commandIdToBinding.clear();
-		actionSetActiveBindings.clear();
-	}
-
-	/**
-	 * Removes all of the image bindings made by this class, and then clears the
-	 * collection. This should be called before every read.
-	 * 
-	 */
-	private final void clearImages() {
-		// TODO Implement
-	}
-
-	/**
-	 * Removes all of the contributions made by this class, and then clears the
-	 * collection. This should be called before every read.
-	 */
-	private final void clearMenus() {
-		menuContributions.clear();
-	}
-
-	/**
-	 * Extracts any key bindings from the action. If such a binding exists, it
-	 * is added to the binding manager.
-	 * 
-	 * @param element
-	 *            The action from which the binding should be read; must not be
-	 *            <code>null</code>.
-	 * @param command
-	 *            The fully-parameterized command for which a binding should be
-	 *            made; must not be <code>null</code>.
-	 */
-	private final void convertActionToBinding(
-			final IConfigurationElement element,
-			final ParameterizedCommand command, final List warningsToLog) {
-		// Figure out which accelerator text to use.
-		String acceleratorText = readOptional(element, ATT_ACCELERATOR);
-		if (acceleratorText == null) {
-			final String label = readOptional(element, ATT_LABEL);
-			if (label != null) {
-				acceleratorText = LegacyActionTools
-						.extractAcceleratorText(label);
-			}
-		}
-
-		// If there is some accelerator text, generate a key sequence from it.
-		if (acceleratorText != null) {
-			final IKeyLookup lookup = KeyLookupFactory.getSWTKeyLookup();
-			final int acceleratorInt = LegacyActionTools
-					.convertAccelerator(acceleratorText);
-			final int modifierMask = lookup.getAlt() | lookup.getCommand()
-					| lookup.getCtrl() | lookup.getShift();
-			final int modifierKeys = acceleratorInt & modifierMask;
-			final int naturalKey = acceleratorInt & ~modifierMask;
-			final KeyStroke keyStroke = KeyStroke.getInstance(modifierKeys,
-					naturalKey);
-			final KeySequence keySequence = KeySequence.getInstance(keyStroke);
-
-			final Scheme activeScheme = bindingService.getActiveScheme();
-
-			try {
-				final Binding binding = new KeyBinding(keySequence, command,
-						activeScheme.getId(), IContextIds.CONTEXT_ID_WINDOW,
-						null, null, null, Binding.SYSTEM);
-				commandIdToBinding.put(command.getCommand().getId(), binding);
-
-				if (command.getCommand().isEnabled()) {
-					bindingService.addBinding(binding);
-					actionSetActiveBindings.add(binding);
-				}
-
-				command.getCommand().addCommandListener(actionSetListener);
-			} catch (IllegalArgumentException e) {
-				addWarning(warningsToLog,
-						"invalid keybinding: " + e.getMessage(), element, //$NON-NLS-1$
-						command.getCommand().getId());
-			}
-		}
-	}
-
-	/**
-	 * Determine which command to use. This is slightly complicated as actions
-	 * do not have to have commands, but the new architecture requires it. As
-	 * such, we will auto-generate a command for the action if the definitionId
-	 * is missing or points to a command that does not yet exist. All such
-	 * command identifiers are prefixed with AUTOGENERATED_COMMAND_ID_PREFIX.
-	 * 
-	 * @param element
-	 *            The action element from which a command must be generated;
-	 *            must not be <code>null</code>.
-	 * @param primaryId
-	 *            The primary identifier to use when auto-generating a command;
-	 *            must not be <code>null</code>.
-	 * @param secondaryId
-	 *            The secondary identifier to use when auto-generating a
-	 *            command; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The collection of warnings logged while reading the extension
-	 *            point; must not be <code>null</code>.
-	 * @return the fully-parameterized command; <code>null</code> if an error
-	 *         occurred.
-	 */
-	private final ParameterizedCommand convertActionToCommand(
-			final IConfigurationElement element, final String primaryId,
-			final String secondaryId, final List warningsToLog) {
-		String commandId = readOptional(element, ATT_DEFINITION_ID);
-		Command command = null;
-		if (commandId != null) {
-			command = commandService.getCommand(commandId);
-		}
-
-		final IActionCommandMappingService mappingService = (IActionCommandMappingService) window
-				.getService(IActionCommandMappingService.class);
-		
-		String label = null;
-		if ((commandId == null) || (!command.isDefined())) {
-			// Add a mapping from this action id to the command id.
-			if (commandId == null && mappingService != null) {
-				commandId = mappingService.getGeneratedCommandId(primaryId,
-						secondaryId);
-			}
-			if (commandId == null) {
-				WorkbenchPlugin.log("MappingService unavailable"); //$NON-NLS-1$
-				return null;
-			}
-
-			// Read the label attribute.
-			label = readRequired(element, ATT_LABEL, warningsToLog,
-					"Actions require a non-empty label or definitionId", //$NON-NLS-1$
-					commandId);
-			if (label == null) {
-				label = WorkbenchMessages.LegacyActionPersistence_AutogeneratedCommandName;
-			}
-
-			/*
-			 * Read the tooltip attribute. The tooltip is really the description
-			 * of the command.
-			 */
-			final String tooltip = readOptional(element, ATT_TOOLTIP);
-
-			// Define the command.
-			command = commandService.getCommand(commandId);
-			final Category category = commandService.getCategory(null);
-			final String name = LegacyActionTools.removeAcceleratorText(Action
-					.removeMnemonics(label));
-			command.define(name, tooltip, category, null);
-
-			// TODO Decide the command state.
-			final String style = readOptional(element, ATT_STYLE);
-			if (STYLE_RADIO.equals(style)) {
-				final State state = new RadioState();
-				// TODO How to set the id?
-				final boolean checked = readBoolean(element, ATT_STATE, false);
-				state.setValue((checked) ? Boolean.TRUE : Boolean.FALSE);
-				command.addState(IMenuStateIds.STYLE, state);
-
-			} else if (STYLE_TOGGLE.equals(style)) {
-				final State state = new ToggleState();
-				final boolean checked = readBoolean(element, ATT_STATE, false);
-				state.setValue((checked) ? Boolean.TRUE : Boolean.FALSE);
-				command.addState(IMenuStateIds.STYLE, state);
-			}
-		}
-		// this allows us to look up a "commandId" give the contributionId
-		// and the actionId
-		if (mappingService != null && commandId != null) {
-			mappingService.map(mappingService.getGeneratedCommandId(primaryId,
-					secondaryId), commandId);
-		}
-
-		return new ParameterizedCommand(command, null);
-	}
-
-	/**
-	 * <p>
-	 * Extracts the handler information from the given action element. These are
-	 * registered with the handler service. They are always active.
-	 * </p>
-	 * 
-	 * @param element
-	 *            The action element from which the handler should be read; must
-	 *            not be <code>null</code>.
-	 * @param actionId
-	 *            The identifier of the action for which a handler is being
-	 *            created; must not be <code>null</code>.
-	 * @param command
-	 *            The command for which this handler applies; must not be
-	 *            <code>null</code>.
-	 * @param activeWhenExpression
-	 *            The expression controlling when the handler is active; may be
-	 *            <code>null</code>.
-	 * @param viewId
-	 *            The view to which this handler is associated. This value is
-	 *            required if this is a view action; otherwise it can be
-	 *            <code>null</code>.
-	 * @param warningsToLog
-	 *            The collection of warnings while parsing this extension point;
-	 *            must not be <code>null</code>.
-	 */
-	private final void convertActionToHandler(
-			final IConfigurationElement element, final String actionId,
-			final ParameterizedCommand command,
-			final Expression activeWhenExpression, final String viewId,
-			final List warningsToLog) {
-		// Check to see if this is a retargettable action.
-		final boolean retarget = readBoolean(element, ATT_RETARGET, false);
-
-		final boolean classAvailable = (element.getAttribute(ATT_CLASS) != null)
-				|| (element.getChildren(TAG_CLASS).length != 0);
-		// Read the class attribute.
-		String classString = readOptional(element, ATT_CLASS);
-		if (classAvailable && classString == null) {
-			classString = readOptional(element.getChildren(TAG_CLASS)[0],
-					ATT_CLASS);
-		}
-
-		if (retarget) {
-			if (classAvailable && !isPulldown(element)) {
-				addWarning(warningsToLog,
-						"The class was not null but retarget was set to true", //$NON-NLS-1$
-						element, actionId, ATT_CLASS, classString);
-			}
-
-			// Add a mapping from this action id to the command id.
-			final IActionCommandMappingService mappingService = (IActionCommandMappingService) window
-					.getService(IActionCommandMappingService.class);
-			if (mappingService != null) {
-				mappingService.map(actionId, command.getId());
-			} else {
-				// this is probably the shutdown case where the service has
-				// already disposed.
-				addWarning(
-						warningsToLog,
-						"Retarget service unavailable", //$NON-NLS-1$
-						element, actionId);
-			}
-			return; // This is nothing more to be done.
-
-		} else if (!classAvailable) {
-			addWarning(
-					warningsToLog,
-					"There was no class provided, and the action is not retargettable", //$NON-NLS-1$
-					element, actionId);
-			return; // There is nothing to be done.
-		}
-
-		// Read the enablesFor attribute, and enablement and selection elements.
-		SelectionEnabler enabler = null;
-		if (element.getAttribute(ATT_ENABLES_FOR) != null) {
-			enabler = new SelectionEnabler(element);
-		} else {
-			IConfigurationElement[] kids = element.getChildren(TAG_ENABLEMENT);
-			if (kids.length > 0) {
-				enabler = new SelectionEnabler(element);
-			}
-		}
-		final Expression enabledWhenExpression;
-		if (enabler == null) {
-			enabledWhenExpression = null;
-		} else {
-			enabledWhenExpression = new LegacySelectionEnablerWrapper(enabler,
-					window);
-		}
-
-		/*
-		 * Create the handler. TODO The image style is read at the workbench
-		 * level, but it is hard to communicate this information to this point.
-		 * For now, I'll pass null, but this ultimately won't work.
-		 */
-		final ActionDelegateHandlerProxy handler = new ActionDelegateHandlerProxy(
-				element, ATT_CLASS, actionId, command, window, null,
-				enabledWhenExpression, viewId);
-
-		// Read the help context id.
-		final String helpContextId = readOptional(element, ATT_HELP_CONTEXT_ID);
-		if (helpContextId != null) {
-			commandService.setHelpContextId(handler, helpContextId);
-		}
-
-		// Activate the handler.
-		final String commandId = command.getId();
-		final IHandlerService service = (IHandlerService) window
-				.getService(IHandlerService.class);
-		final IHandlerActivation handlerActivation;
-		if (activeWhenExpression == null) {
-			handlerActivation = service.activateHandler(commandId, handler);
-		} else {
-			handlerActivation = service.activateHandler(commandId, handler,
-					activeWhenExpression);
-		}
-		handlerActivations.add(handlerActivation);
-	}
-
-
-
-	public final void dispose() {
-		super.dispose();
-		clear();
-	}
-
-	private void clear() {
-		clearActivations();
-		clearBindings();
-		clearImages();
-		clearMenus();
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		return !((event.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-				IWorkbenchRegistryConstants.PL_ACTION_SETS).length == 0)
-				&& (event.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_EDITOR_ACTIONS).length == 0)
-				&& (event.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_POPUP_MENU).length == 0) && (event
-				.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_VIEW_ACTIONS).length == 0));
-	}
-
-	/**
-	 * <p>
-	 * Reads all of the actions from the deprecated extension points. Actions
-	 * have been replaced with commands, command images, handlers, menu elements
-	 * and action sets.
-	 * </p>
-	 * <p>
-	 * TODO Before this method is called, all of the extension points must be
-	 * cleared.
-	 * </p>
-	 */
-	public final void read() {
-		clear();
-		LegacyActionPersistence.super.read();
-
-		// Create the extension registry mementos.
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		int actionSetCount = 0;
-		int editorContributionCount = 0;
-		int objectContributionCount = 0;
-		int viewContributionCount = 0;
-		int viewerContributionCount = 0;
-		final IConfigurationElement[][] indexedConfigurationElements = new IConfigurationElement[5][];
-
-		// Sort the actionSets extension point.
-		final IConfigurationElement[] actionSetsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_ACTION_SETS);
-		for (int i = 0; i < actionSetsExtensionPoint.length; i++) {
-			final IConfigurationElement element = actionSetsExtensionPoint[i];
-			final String name = element.getName();
-			if (TAG_ACTION_SET.equals(name)) {
-				addElementToIndexedArray(element, indexedConfigurationElements,
-						INDEX_ACTION_SETS, actionSetCount++);
-			}
-		}
-
-		// Sort the editorActions extension point.
-		final IConfigurationElement[] editorActionsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_EDITOR_ACTIONS);
-		for (int i = 0; i < editorActionsExtensionPoint.length; i++) {
-			final IConfigurationElement element = editorActionsExtensionPoint[i];
-			final String name = element.getName();
-			if (TAG_EDITOR_CONTRIBUTION.equals(name)) {
-				addElementToIndexedArray(element, indexedConfigurationElements,
-						INDEX_EDITOR_CONTRIBUTIONS, editorContributionCount++);
-			}
-		}
-
-		// Sort the popupMenus extension point.
-		final IConfigurationElement[] popupMenusExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_POPUP_MENUS);
-		for (int i = 0; i < popupMenusExtensionPoint.length; i++) {
-			final IConfigurationElement element = popupMenusExtensionPoint[i];
-			final String name = element.getName();
-			if (TAG_OBJECT_CONTRIBUTION.equals(name)) {
-				addElementToIndexedArray(element, indexedConfigurationElements,
-						INDEX_OBJECT_CONTRIBUTIONS, objectContributionCount++);
-			} else if (TAG_VIEWER_CONTRIBUTION.equals(name)) {
-				addElementToIndexedArray(element, indexedConfigurationElements,
-						INDEX_VIEWER_CONTRIBUTIONS, viewerContributionCount++);
-			}
-		}
-
-		// Sort the viewActions extension point.
-		final IConfigurationElement[] viewActionsExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_VIEW_ACTIONS);
-		for (int i = 0; i < viewActionsExtensionPoint.length; i++) {
-			final IConfigurationElement element = viewActionsExtensionPoint[i];
-			final String name = element.getName();
-			if (TAG_VIEW_CONTRIBUTION.equals(name)) {
-				addElementToIndexedArray(element, indexedConfigurationElements,
-						INDEX_VIEW_CONTRIBUTIONS, viewContributionCount++);
-			}
-		}
-
-		readActionSets(indexedConfigurationElements[INDEX_ACTION_SETS],
-				actionSetCount);
-		readEditorContributions(
-				indexedConfigurationElements[INDEX_EDITOR_CONTRIBUTIONS],
-				editorContributionCount);
-		readObjectContributions(
-				indexedConfigurationElements[INDEX_OBJECT_CONTRIBUTIONS],
-				objectContributionCount);
-		readViewContributions(
-				indexedConfigurationElements[INDEX_VIEW_CONTRIBUTIONS],
-				viewContributionCount);
-		readViewerContributions(
-				indexedConfigurationElements[INDEX_VIEWER_CONTRIBUTIONS],
-				viewerContributionCount);
-		
-	}
-
-	/**
-	 * Reads the actions, and defines all the necessary subcomponents in terms
-	 * of the command architecture. For each action, there could be a command, a
-	 * command image binding, a handler and a menu item.
-	 * 
-	 * @param primaryId
-	 *            The identifier of the primary object to which this action
-	 *            belongs. This is used to auto-generate command identifiers
-	 *            when required. The <code>primaryId</code> must not be
-	 *            <code>null</code>.
-	 * @param elements
-	 *            The action elements to be read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The collection of warnings while parsing this extension point;
-	 *            must not be <code>null</code>.
-	 * @param visibleWhenExpression
-	 *            The expression controlling visibility of the corresponding
-	 *            menu elements; may be <code>null</code>.
-	 * @param viewId
-	 *            The view to which this handler is associated. This value is
-	 *            required if this is a view action; otherwise it can be
-	 *            <code>null</code>.
-	 * @return References to the created menu elements; may be <code>null</code>,
-	 *         and may be empty.
-	 */
-	private final void readActions(final String primaryId,
-			final IConfigurationElement[] elements, final List warningsToLog,
-			final Expression visibleWhenExpression, final String viewId) {
-		for (int i = 0; i < elements.length; i++) {
-			final IConfigurationElement element = elements[i];
-
-			/*
-			 * We might need the identifier to generate the command, so we'll
-			 * read it out now.
-			 */
-			final String id = readRequired(element, ATT_ID, warningsToLog,
-					"Actions require an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			// Try to break out the command part of the action.
-			final ParameterizedCommand command = convertActionToCommand(
-					element, primaryId, id, warningsToLog);
-			if (command == null) {
-				continue;
-			}
-
-			convertActionToHandler(element, id, command, visibleWhenExpression,
-					viewId, warningsToLog);
-			// TODO Read the overrideActionId attribute
-
-			convertActionToBinding(element, command, warningsToLog);
-
-		}
-	}
-
-	/**
-	 * Reads all of the action and menu child elements from the given element.
-	 * 
-	 * @param element
-	 *            The configuration element from which the actions and menus
-	 *            should be read; must not be <code>null</code>, but may be
-	 *            empty.
-	 * @param id
-	 *            The identifier of the contribution being made. This could be
-	 *            an action set, an editor contribution, a view contribution, a
-	 *            viewer contribution or an object contribution. This value must
-	 *            not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings already logged for this extension point;
-	 *            must not be <code>null</code>.
-	 * @param visibleWhenExpression
-	 *            The expression controlling visibility of the corresponding
-	 *            menu elements; may be <code>null</code>.
-	 * @param viewId
-	 *            The view to which this handler is associated. This value is
-	 *            required if this is a view action; otherwise it can be
-	 *            <code>null</code>.
-	 * @return An array of references to the created menu elements. This value
-	 *         may be <code>null</code> if there was a problem parsing the
-	 *         configuration element.
-	 */
-	private final void readActionsAndMenus(
-			final IConfigurationElement element, final String id,
-			final List warningsToLog, 
-			final Expression visibleWhenExpression, final String viewId) {
-
-		// Read its child elements.
-		final IConfigurationElement[] actionElements = element
-				.getChildren(TAG_ACTION);
-		readActions(id, actionElements,
-				warningsToLog, visibleWhenExpression, viewId);
-
-	}
-
-	/**
-	 * Reads the deprecated actions from an array of elements from the action
-	 * sets extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the extension point; must not be
-	 *            <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 */
-	private final void readActionSets(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		// 
-		// this was an even dumber fix than modifying the path
-		// 
-		// stupid navigate group
-		// SGroup nav = menuService.getGroup(STUPID_NAVIGATE);
-		// if (!nav.isDefined()) {
-		// nav.define(new SLocation(new SBar(SBar.TYPE_MENU, null)));
-		// }
-		// stupid navigate group
-
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement element = configurationElements[i];
-
-			// Read the action set identifier.
-			final String id = readRequired(element, ATT_ID, warningsToLog,
-					"Action sets need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			// Read the label.
-			final String label = readRequired(element, ATT_LABEL,
-					warningsToLog, "Actions set need a label", //$NON-NLS-1$
-					id);
-			if (label == null) {
-				continue;
-			}
-
-			// Restrict the handler to when the action set is active.
-			final LegacyActionSetExpression expression = new LegacyActionSetExpression(
-					id, window);
-
-
-			// Read all of the child elements.
-			readActionsAndMenus(element, id,
-					warningsToLog, expression, null);
-			// Define the action set.
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the action sets from the 'org.eclipse.ui.actionSets' extension point"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads the deprecated editor contributions from an array of elements from
-	 * the editor actions extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the extension point; must not be
-	 *            <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 */
-	private final void readEditorContributions(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement element = configurationElements[i];
-
-			// Read the editor contribution identifier.
-			final String id = readRequired(element, ATT_ID, warningsToLog,
-					"Editor contributions need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			/*
-			 * Read the target id. This is the identifier of the editor with
-			 * which these contributions are associated.
-			 */
-			final String targetId = readRequired(element, ATT_TARGET_ID,
-					warningsToLog, "Editor contributions need a target id", id); //$NON-NLS-1$
-			if (targetId == null) {
-				continue;
-			}
-			final Expression visibleWhenExpression = new LegacyEditorContributionExpression(
-					targetId, window);
-
-			// Read all of the child elements from the registry.
-			readActionsAndMenus(element, id, warningsToLog,
-					visibleWhenExpression, null);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the editor contributions from the 'org.eclipse.ui.editorActions' extension point"); //$NON-NLS-1$
-	}
-
-
-
-
-	/**
-	 * Reads the deprecated object contributions from an array of elements from
-	 * the popup menus extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the extension point; must not be
-	 *            <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 */
-	private final void readObjectContributions(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement element = configurationElements[i];
-
-			// Read the object contribution identifier.
-			final String id = readRequired(element, ATT_ID, warningsToLog,
-					"Object contributions need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			// Read the object class. This influences the visibility.
-			final String objectClass = readRequired(element, ATT_OBJECTCLASS,
-					warningsToLog,
-					"Object contributions need an object class", id); //$NON-NLS-1$
-			if (objectClass == null) {
-				continue;
-			}
-
-			// TODO Read the name filter. This influences the visibility.
-			// final String nameFilter = readOptional(element,
-			// ATT_NAME_FILTER);
-
-			// TODO Read the object class. This influences the visibility.
-			// final boolean adaptable = readBoolean(element,
-			// ATT_ADAPTABLE,
-			// false);
-
-
-			// TODO Read the filter elements.
-			// TODO Read the enablement elements.
-
-			// TODO Figure out an appropriate visibility expression.
-			// Read the visibility element, if any.
-			final Expression visibleWhenExpression = readVisibility(element,
-					id, warningsToLog);
-
-			// Read all of the child elements from the registry.
-			readActionsAndMenus(element, id, warningsToLog,
-					visibleWhenExpression, null);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the object contributions from the 'org.eclipse.ui.popupMenus' extension point"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads the deprecated view contributions from an array of elements from
-	 * the view actions extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the extension point; must not be
-	 *            <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 */
-	private final void readViewContributions(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement element = configurationElements[i];
-
-			// Read the view contribution identifier.
-			final String id = readRequired(element, ATT_ID, warningsToLog,
-					"View contributions need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			/*
-			 * Read the target id. This is the identifier of the view with which
-			 * these contributions are associated.
-			 */
-			final String targetId = readRequired(element, ATT_TARGET_ID,
-					warningsToLog, "View contributions need a target id", id); //$NON-NLS-1$
-			if (targetId == null) {
-				continue;
-			}
-			final Expression visibleWhenExpression = new LegacyViewContributionExpression(
-					targetId, window);
-
-			// Read all of the child elements from the registry.
-			readActionsAndMenus(element, id, warningsToLog,
-					visibleWhenExpression, targetId);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the view contributions from the 'org.eclipse.ui.viewActions' extension point"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads the deprecated viewer contributions from an array of elements from
-	 * the popup menus extension point.
-	 * 
-	 * @param configurationElements
-	 *            The configuration elements in the extension point; must not be
-	 *            <code>null</code>, but may be empty.
-	 * @param configurationElementCount
-	 *            The number of configuration elements that are really in the
-	 *            array.
-	 */
-	private final void readViewerContributions(
-			final IConfigurationElement[] configurationElements,
-			final int configurationElementCount) {
-		final List warningsToLog = new ArrayList(1);
-
-		for (int i = 0; i < configurationElementCount; i++) {
-			final IConfigurationElement element = configurationElements[i];
-
-			// Read the viewer contribution identifier.
-			final String id = readRequired(element, ATT_ID, warningsToLog,
-					"Viewer contributions need an id"); //$NON-NLS-1$
-			if (id == null) {
-				continue;
-			}
-
-			/*
-			 * Read the target id. This is the identifier of the view with which
-			 * these contributions are associated.
-			 */
-			final String targetId = readRequired(element, ATT_TARGET_ID,
-					warningsToLog, "Viewer contributions need a target id", id); //$NON-NLS-1$
-			if (targetId == null) {
-				continue;
-			}
-
-			// Read the visibility element, if any.
-			final Expression visibleWhenExpression = readVisibility(element,
-					id, warningsToLog);
-			final Expression menuVisibleWhenExpression = new LegacyViewerContributionExpression(
-					targetId, window, visibleWhenExpression);
-
-			// Read all of the child elements from the registry.
-			readActionsAndMenus(element, id, warningsToLog,
-					menuVisibleWhenExpression, targetId);
-		}
-
-		logWarnings(
-				warningsToLog,
-				"Warnings while parsing the viewer contributions from the 'org.eclipse.ui.popupMenus' extension point"); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuActivation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuActivation.java
deleted file mode 100644
index ea61ab3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuActivation.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.internal.services.EvaluationResultCache;
-
-/**
- * @since 3.3
- * 
- */
-public class MenuActivation extends EvaluationResultCache implements
-		IMenuActivation {
-
-	private IContributionItem fItem;
-
-	/**
-	 * @param item
-	 *            this contribution ite
-	 * @param visibleWhen
-	 *            when it's visible
-	 * @param auth
-	 *            the menu authority responsible for this cache
-	 */
-	public MenuActivation(IContributionItem item, Expression visibleWhen) {
-		super(visibleWhen);
-		fItem = item;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuActivation#getContribution()
-	 */
-	public IContributionItem getContribution() {
-		return fItem;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java
deleted file mode 100644
index f2c7ee5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java
+++ /dev/null
@@ -1,567 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 221662 [Contributions] Extension point org.eclipse.ui.menus: sub menu contribution does not have icon even if specified
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.InvalidRegistryObjectException;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.ToolBarContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.provisional.presentations.IActionBarPresentationFactory;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.AbstractContributionFactory;
-import org.eclipse.ui.menus.CommandContributionItem;
-import org.eclipse.ui.menus.CommandContributionItemParameter;
-import org.eclipse.ui.menus.IContributionRoot;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.IWorkbenchContribution;
-import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.3
- * 
- */
-public class MenuAdditionCacheEntry extends AbstractContributionFactory {
-	private IConfigurationElement additionElement;
-
-	// Caches
-
-
-	/**
-	 * If an {@link IConfigurationElement} is in the Set then we have already
-	 * tried (and failed) to load the associated ExecutableExtension.
-	 * 
-	 * This is used to prevent multiple retries which would spam the Log.
-	 */
-	Set failedLoads = new HashSet();
-
-	/**
-	 * Maps an IConfigurationElement to its parsed Expression
-	 */
-	private HashMap visWhenMap = new HashMap();
-
-	/**
-	 * The menu service on which to generate all subcaches.
-	 */
-	private IMenuService menuService;
-
-	/**
-	 * List of caches created while processing this one. Used to clean up
-	 * stale cache entries during removal
-	 */
-	private List subCaches;
-
-	private boolean hasAdditions = false;
-
-	public MenuAdditionCacheEntry(IMenuService menuService,
-			IConfigurationElement element) {
-		this(menuService, element, element.getAttribute(IWorkbenchRegistryConstants.TAG_LOCATION_URI), 
-				element.getNamespaceIdentifier());
-	}
-
-	public MenuAdditionCacheEntry(IMenuService menuService,
-			IConfigurationElement element, String location, String namespace) {
-		super(location, namespace);
-		this.menuService = menuService;
-		this.additionElement = element;
-		findAdditions();
-		generateSubCaches();
-	}
-
-	/**
-	 * 
-	 */
-	private void generateSubCaches() {
-		IConfigurationElement[] items = additionElement.getChildren();
-		for (int i = 0; i < items.length; i++) {
-			String itemType = items[i].getName();
-			if (IWorkbenchRegistryConstants.TAG_MENU.equals(itemType)
-					|| IWorkbenchRegistryConstants.TAG_TOOLBAR.equals(itemType)) {
-				// Menus and toolbars are special...we have to add any sub menu
-				// items into their own cache
-				// If the locationURI is null then this should be a sub menu
-				// addition..create the 'root' URI
-
-				String location = new MenuLocationURI(getLocation())
-						.getScheme()
-						+ ":" + MenuAdditionCacheEntry.getId(items[i]); //$NON-NLS-1$
-
-				// -ALL- contibuted menus must have an id so create one
-				// if necessary
-				MenuAdditionCacheEntry subMenuEntry = new MenuAdditionCacheEntry(
-						menuService, items[i], location, getNamespace());
-				menuService.addContributionFactory(subMenuEntry);
-				
-				if (subCaches == null)
-					subCaches = new ArrayList();
-				
-				subCaches.add(subMenuEntry);
-			}
-		}
-	}
-
-	private Expression getVisibleWhenForItem(IContributionItem item, IConfigurationElement configElement) {
-		if (!visWhenMap.containsKey(configElement)) {
-			// Not parsed yet
-			try {
-				IConfigurationElement[] visibleConfig = configElement
-						.getChildren(IWorkbenchRegistryConstants.TAG_VISIBLE_WHEN);
-				if (visibleConfig.length > 0 && visibleConfig.length < 2) {
-					IConfigurationElement[] visibleChild = visibleConfig[0]
-							.getChildren();
-					if (visibleChild.length > 0) {
-						Expression visWhen = ExpressionConverter.getDefault()
-								.perform(visibleChild[0]);
-						visWhenMap.put(configElement, visWhen);
-					}
-				}
-			} catch (InvalidRegistryObjectException e) {
-				visWhenMap.put(configElement, null);
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			} catch (CoreException e) {
-				visWhenMap.put(configElement, null);
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-		}
-
-		return (Expression) visWhenMap.get(configElement);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.AbstractContributionFactory#createContributionItems(org.eclipse.ui.internal.menus.IMenuService,
-	 *      java.util.List)
-	 */
-	public void createContributionItems(IServiceLocator serviceLocator,
-			IContributionRoot additions) {
-		IActionBarPresentationFactory actionBarPresentationFactory = null;
-
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) serviceLocator
-		.getService(IWorkbenchLocationService.class);
-		WorkbenchWindow window = (WorkbenchWindow) wls.getWorkbenchWindow();
-		if (window != null) {
-			actionBarPresentationFactory = window
-					.getActionBarPresentationFactory();
-		}
-
-		IConfigurationElement[] items = additionElement.getChildren();
-		for (int i = 0; i < items.length; i++) {
-			String itemType = items[i].getName();
-			IContributionItem newItem = null;
-
-			if (IWorkbenchRegistryConstants.TAG_COMMAND.equals(itemType)) {
-				newItem = createCommandAdditionContribution(serviceLocator,
-						items[i]);
-			} else if (IWorkbenchRegistryConstants.TAG_DYNAMIC.equals(itemType)) {
-				newItem = createDynamicAdditionContribution(serviceLocator,
-						items[i]);
-			} else if (IWorkbenchRegistryConstants.TAG_CONTROL.equals(itemType)) {
-				newItem = createControlAdditionContribution(serviceLocator,
-						items[i]);
-			} else if (IWorkbenchRegistryConstants.TAG_SEPARATOR
-					.equals(itemType)) {
-				newItem = createSeparatorAdditionContribution(items[i]);
-			} else if (IWorkbenchRegistryConstants.TAG_MENU.equals(itemType)) {
-				newItem = createMenuAdditionContribution(items[i]);
-			} else if (IWorkbenchRegistryConstants.TAG_TOOLBAR.equals(itemType)) {
-				newItem = createToolBarAdditionContribution(
-						actionBarPresentationFactory, items[i]);
-			}
-			
-			if (newItem instanceof InternalControlContribution) {
-				((InternalControlContribution) newItem).setWorkbenchWindow(window);
-			}
-
-			// Cache the relationship between the ICI and the
-			// registry element used to back it
-			if (newItem != null) {
-				additions.addContributionItem(newItem,
-						getVisibleWhenForItem(newItem, items[i]));
-			}
-		}
-	}
-
-	/**
-	 * @param configurationElement
-	 * @return the toolbar contribution item
-	 */
-	private IContributionItem createToolBarAdditionContribution(
-			IActionBarPresentationFactory actionBarPresentationFactory,
-			IConfigurationElement configurationElement) {
-		if (!inToolbar()) {
-			return null;
-		}
-		if (actionBarPresentationFactory != null) {
-			return actionBarPresentationFactory.createToolBarContributionItem(
-					actionBarPresentationFactory.createToolBarManager(),
-					getId(configurationElement));
-		}
-		return new ToolBarContributionItem(new ToolBarManager(),
-				getId(configurationElement));
-	}
-
-	/**
-	 * @return <code>true</code> if this is a toolbar contribution
-	 */
-	private boolean inToolbar() {
-		return getLocation().startsWith("toolbar"); //$NON-NLS-1$
-	}
-
-	/**
-	 * @param configurationElement
-	 * @return the menu manager
-	 */
-	private IContributionItem createMenuAdditionContribution(
-			final IConfigurationElement menuAddition) {
-		// Is this for a menu or a ToolBar ? We can't create
-		// a menu directly under a Toolbar; we have to add an
-		// item of style 'pulldown'
-		if (inToolbar()) {
-			return null;
-		}
-
-		String text = getLabel(menuAddition);
-		String mnemonic = getMnemonic(menuAddition);
-		if (text != null && mnemonic != null) {
-			int idx = text.indexOf(mnemonic);
-			if (idx != -1) {
-				text = text.substring(0, idx) + '&' + text.substring(idx);
-			}
-		}
-		MenuManager menuManager = new MenuManager(text, getIconDescriptor(menuAddition), getId(menuAddition));
-		menuManager.setActionDefinitionId(getCommandId(menuAddition));
-		return menuManager;
-	}
-
-	/**
-	 * @param configurationElement
-	 * @return
-	 */
-	private IContributionItem createSeparatorAdditionContribution(
-			final IConfigurationElement sepAddition) {
-		if (isSeparatorVisible(sepAddition)) {
-			return new Separator(getName(sepAddition));
-		}
-		return new GroupMarker(getName(sepAddition));
-	}
-
-	/**
-	 * @return
-	 */
-	private IContributionItem createDynamicAdditionContribution(
-			final IServiceLocator locator,
-			final IConfigurationElement dynamicAddition) {
-		// If we've already tried (and failed) to load the
-		// executable extension then skip this addition.
-		if (failedLoads.contains(dynamicAddition))
-			return null;
-
-		// Attempt to load the addition's EE (creates a new instance)
-		final ContributionItem loadedDynamicContribution = (ContributionItem) Util
-				.safeLoadExecutableExtension(dynamicAddition,
-						IWorkbenchRegistryConstants.ATT_CLASS,
-						ContributionItem.class);
-
-		// Cache failures
-		if (loadedDynamicContribution == null) {
-			failedLoads.add(loadedDynamicContribution);
-			return null;
-		}
-
-		loadedDynamicContribution.setId(getId(dynamicAddition));
-		if (loadedDynamicContribution instanceof IWorkbenchContribution) {
-			((IWorkbenchContribution)loadedDynamicContribution).initialize(locator);
-		}
-		
-		// TODO provide a proxy IContributionItem that defers instantiation
-		// adding contribution items in a menu instantiates this object ...
-		// we need to defer loading until fill(*) is called.
-		return loadedDynamicContribution;
-	}
-
-	private IContributionItem createControlAdditionContribution(
-			final IServiceLocator locator,
-			final IConfigurationElement widgetAddition) {
-		if (!inToolbar()) {
-			return null;
-		}
-		// If we've already tried (and failed) to load the
-		// executable extension then skip this addirion.
-		if (failedLoads.contains(widgetAddition))
-			return null;
-
-		// Attempt to load the addition's EE (creates a new instance)
-		final WorkbenchWindowControlContribution loadedWidget = (WorkbenchWindowControlContribution) Util
-				.safeLoadExecutableExtension(widgetAddition,
-						IWorkbenchRegistryConstants.ATT_CLASS,
-						WorkbenchWindowControlContribution.class);
-
-		// Cache failures
-		if (loadedWidget == null) {
-			failedLoads.add(widgetAddition);
-			return null;
-		}
-
-		// explicitly set the id
-		loadedWidget.setId(getId(widgetAddition));
-		if (loadedWidget instanceof IWorkbenchContribution) {
-			((IWorkbenchContribution)loadedWidget).initialize(locator);
-		}
-
-		return loadedWidget;
-	}
-
-	private IContributionItem createCommandAdditionContribution(
-			IServiceLocator locator, final IConfigurationElement commandAddition) {
-		CommandContributionItemParameter parm = new CommandContributionItemParameter(
-				locator, getId(commandAddition), getCommandId(commandAddition),
-				getParameters(commandAddition),
-				getIconDescriptor(commandAddition),
-				getDisabledIconDescriptor(commandAddition),
-				getHoverIconDescriptor(commandAddition),
-				getLabel(commandAddition), getMnemonic(commandAddition),
-				getTooltip(commandAddition), getStyle(commandAddition),
-				getHelpContextId(commandAddition),
-				getVisibleEnabled(commandAddition));
-		if (inToolbar()) {
-			parm.iconStyle = ICommandImageService.IMAGE_STYLE_TOOLBAR;
-		}
-		parm.mode = getMode(commandAddition);
-		return new CommandContributionItem(parm);
-	}
-
-	/**
-	 * @param element the configuration element
-	 * @return <code>true</code> if the checkEnabled is <code>true</code>.
-	 */
-	static boolean getVisibleEnabled(IConfigurationElement element) {
-		IConfigurationElement[] children = element
-				.getChildren(IWorkbenchRegistryConstants.TAG_VISIBLE_WHEN);
-		String checkEnabled = null;
-		
-		if (children.length>0) {
-			checkEnabled = children[0]
-				.getAttribute(IWorkbenchRegistryConstants.ATT_CHECK_ENABLED);
-		}
-		
-		return checkEnabled != null && checkEnabled.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	/*
-	 * Support Utilities
-	 */
-	public static String getId(IConfigurationElement element) {
-		String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-
-		// For sub-menu management -all- items must be id'd so enforce this
-		// here (we could optimize by checking the 'name' of the config
-		// element == "menu"
-		if (id == null || id.length() == 0) {
-			id = getCommandId(element);
-		}
-		if (id == null || id.length() == 0) {
-			id = element.toString();
-		}
-
-		return id;
-	}
-
-	static String getName(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-	}
-	
-	static int getMode(IConfigurationElement element) {
-		if ("FORCE_TEXT".equals(element.getAttribute(IWorkbenchRegistryConstants.ATT_MODE))) { //$NON-NLS-1$
-			return CommandContributionItem.MODE_FORCE_TEXT;
-		}
-		return 0;
-	}
-
-	static String getLabel(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-	}
-
-	static String getMnemonic(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_MNEMONIC);
-	}
-
-	static String getTooltip(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLTIP);
-	}
-
-	static String getIconPath(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-	}
-
-	static String getDisabledIconPath(IConfigurationElement element) {
-		return element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_DISABLEDICON);
-	}
-
-	static String getHoverIconPath(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_HOVERICON);
-	}
-
-	static ImageDescriptor getIconDescriptor(IConfigurationElement element) {
-		String extendingPluginId = element.getDeclaringExtension()
-				.getContributor().getName();
-
-		String iconPath = getIconPath(element);
-		if (iconPath != null) {
-			return AbstractUIPlugin.imageDescriptorFromPlugin(
-					extendingPluginId, iconPath);
-		}
-		return null;
-	}
-
-	static ImageDescriptor getDisabledIconDescriptor(
-			IConfigurationElement element) {
-		String extendingPluginId = element.getDeclaringExtension()
-				.getContributor().getName();
-
-		String iconPath = getDisabledIconPath(element);
-		if (iconPath != null) {
-			return AbstractUIPlugin.imageDescriptorFromPlugin(
-					extendingPluginId, iconPath);
-		}
-		return null;
-	}
-
-	static ImageDescriptor getHoverIconDescriptor(IConfigurationElement element) {
-		String extendingPluginId = element.getDeclaringExtension()
-				.getContributor().getName();
-
-		String iconPath = getHoverIconPath(element);
-		if (iconPath != null) {
-			return AbstractUIPlugin.imageDescriptorFromPlugin(
-					extendingPluginId, iconPath);
-		}
-		return null;
-	}
-
-	static String getHelpContextId(IConfigurationElement element) {
-		return element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_HELP_CONTEXT_ID);
-	}
-
-	public static boolean isSeparatorVisible(IConfigurationElement element) {
-		String val = element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_VISIBLE);
-		return Boolean.valueOf(val).booleanValue();
-	}
-
-	public static String getClassSpec(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_CLASS);
-	}
-
-	public static String getCommandId(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_COMMAND_ID);
-	}
-
-	private int getStyle(IConfigurationElement element) {
-		String style = element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_STYLE);
-		if (style == null || style.length() == 0) {
-			return CommandContributionItem.STYLE_PUSH;
-		}
-		if (IWorkbenchRegistryConstants.STYLE_TOGGLE.equals(style)) {
-			return CommandContributionItem.STYLE_CHECK;
-		}
-		if (IWorkbenchRegistryConstants.STYLE_RADIO.equals(style)) {
-			return CommandContributionItem.STYLE_RADIO;
-		}
-		if (IWorkbenchRegistryConstants.STYLE_PULLDOWN.equals(style)) {
-			return CommandContributionItem.STYLE_PULLDOWN;
-		}
-		return CommandContributionItem.STYLE_PUSH;
-	}
-
-	/**
-	 * @param element
-	 * @return A map of parameters names to parameter values. All Strings. The
-	 *         map may be empty.
-	 */
-	public static Map getParameters(IConfigurationElement element) {
-		HashMap map = new HashMap();
-		IConfigurationElement[] parameters = element
-				.getChildren(IWorkbenchRegistryConstants.TAG_PARAMETER);
-		for (int i = 0; i < parameters.length; i++) {
-			String name = parameters[i]
-					.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-			String value = parameters[i]
-					.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-			if (name != null && value != null) {
-				map.put(name, value);
-			}
-		}
-		return map;
-	}
-
-	/**
-	 * @return
-	 */
-	public IConfigurationElement getConfigElement() {
-		return additionElement;
-	}
-
-	/**
-	 * @return Returns the subCaches.
-	 */
-	public List getSubCaches() {
-		return subCaches;
-	}
-	
-	private void findAdditions() {
-		IConfigurationElement[] items = additionElement.getChildren();
-		boolean done = false;
-		for (int i = 0; i < items.length && !done; i++) {
-			String itemType = items[i].getName();
-			if (IWorkbenchRegistryConstants.TAG_SEPARATOR
-			.equals(itemType)) {
-				if (IWorkbenchActionConstants.MB_ADDITIONS.equals(getName(items[i]))) {
-					hasAdditions  = true;
-					done = true;
-				}
-			}
-		}
-	}
-	
-	public boolean hasAdditions() {
-		return hasAdditions;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuLocationURI.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuLocationURI.java
deleted file mode 100644
index 85034d8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuLocationURI.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Basic implementation of the java.net.URI api. This is
- * needed because the java 'foundation' doesn't contain
- * the actual <code>java.net.URI</code> class.
- * <p>
- * The expected format for URI Strings managed by this class is:
- * </p><p>
- * "[scheme]:[path]?[query]" 
- * </p><p>
- *  with the 'query' format being "[id1]=[val1]&[id2]=[val2]..."
- * </p>
- * @since 3.3
- *
- */
-public class MenuLocationURI {
-
-	private String rawString;
-	
-	/**
-	 * @param uriDef
-	 */
-	public MenuLocationURI(String uriDef) {
-		rawString = uriDef;
-	}
-
-	/**
-	 * @return The query part of the uri (i.e. the
-	 * part after the '?').
-	 */
-	public String getQuery() {
-		// Trim off the scheme
-		String[] vals = Util.split(rawString, '?');
-		return vals[1];
-	}
-
-	/**
-	 * @return The scheme part of the uri (i.e. the
-	 * part before the ':').
-	 */
-	public String getScheme() {
-		String[] vals = Util.split(rawString, ':');
-		return vals[0];
-	}
-
-	/**
-	 * @return The path part of the uri (i.e. the
-	 * part between the ':' and the '?').
-	 */
-	public String getPath() {
-		// Trim off the scheme
-		String[] vals = Util.split(rawString, ':');
-		if (vals[1] == null)
-			return null;
-		
-		// Now, trim off any query
-		vals = Util.split(vals[1], '?');
-		return vals[0];
-	}
-
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return rawString;
-	}
-
-	/**
-	 * @return the full URI definition string
-	 */
-	public String getRawString() {
-		return rawString;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java
deleted file mode 100755
index 64cf3d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.RegistryPersistence;
-
-/**
- * <p>
- * A static class for accessing the registry.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-final class MenuPersistence extends RegistryPersistence {
-
-	private final WorkbenchMenuService menuService;
-
-	/**
-	 * Constructs a new instance of {@link MenuPersistence}.
-	 * 
-	 * @param workbenchMenuService
-	 * 
-	 * @param workbenchMenuService
-	 *            The menu service which should be populated with the values
-	 *            from the registry; must not be <code>null</code>.
-	 */
-	MenuPersistence(final WorkbenchMenuService workbenchMenuService) {
-		if (workbenchMenuService == null) {
-			throw new NullPointerException("The menu service cannot be null"); //$NON-NLS-1$
-		}
-
-		this.menuService = workbenchMenuService;
-	}
-
-	public final void dispose() {
-		super.dispose();
-	}
-
-	protected final boolean isChangeImportant(final IRegistryChangeEvent event) {
-		/*
-		 * TODO Menus will need to be re-read (i.e., re-verified) if any of the
-		 * menu extensions change (i.e., menus), or if any of the command
-		 * extensions change (i.e., action definitions).
-		 */
-		return false;
-	}
-
-	public boolean menusNeedUpdating(final IRegistryChangeEvent event) {
-		final IExtensionDelta[] menuDeltas = event.getExtensionDeltas(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_MENUS);
-		if (menuDeltas.length == 0) {
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * <p>
-	 * Reads all of the menu elements and action sets from the registry.
-	 * </p>
-	 * <p>
-	 * TODO Add support for modifications.
-	 * </p>
-	 */
-	protected final void read() {
-		super.read();
-
-		// Read legacy 3.2 'trim' additions
-		readTrimAdditions();
-
-		// read the 3.3 menu additions
-		readAdditions();
-	}
-
-	//
-	// 3.3 menu extension code
-	// 
-
-	public void readTrimAdditions() {
-		if (menuService == null)
-			return;
-
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		final IConfigurationElement[] configElements = registry
-				.getConfigurationElementsFor(EXTENSION_MENUS);
-
-		// Create a cache entry for every menu addition
-		for (int i = 0; i < configElements.length; i++) {
-			// Only process 'group' entries
-			if (!TAG_GROUP.equals(configElements[i].getName()))
-				continue;
-
-			String id = configElements[i]
-					.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-
-			// Define the initial URI spec
-			String uriSpec = "toolbar:" + id; //$NON-NLS-1$
-			if (configElements[i].getChildren(TAG_LOCATION).length > 0) {
-				IConfigurationElement location = configElements[i]
-						.getChildren(TAG_LOCATION)[0];
-				if (location.getChildren(TAG_ORDER).length > 0) {
-					IConfigurationElement order = location
-							.getChildren(TAG_ORDER)[0];
-
-					String pos = order
-							.getAttribute(IWorkbenchRegistryConstants.ATT_POSITION);
-					String relTo = order
-							.getAttribute(IWorkbenchRegistryConstants.ATT_RELATIVE_TO);
-					uriSpec += "?" + pos + "=" + relTo; //$NON-NLS-1$ //$NON-NLS-2$
-
-					// HACK! We expect that the new trim group is -always-
-					// relative to
-					// one of the 'default' groups; indicating which trim area
-					// they're in
-					MenuLocationURI uri = new MenuLocationURI(
-							"toolbar:" + relTo); //$NON-NLS-1$
-					List trimAdditions = menuService.getAdditionsForURI(uri);
-
-					//
-					// TODO convert the TrimAdditionCacheEntry over to use the
-					// new MenuCacheEntry and addCacheForURI(*)
-					// OK, add the addition to this area
-					uri = new MenuLocationURI(uriSpec);
-					trimAdditions.add(new TrimAdditionCacheEntry(
-							configElements[i], uri, menuService));
-				} else {
-					// Must be a default group; make a new entry cache
-					MenuLocationURI uri = new MenuLocationURI(uriSpec);
-
-					// NOTE: 'getAdditionsForURI' forces creation
-					menuService.getAdditionsForURI(uri);
-				}
-			}
-		}
-	}
-
-	public void readAdditions() {
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		ArrayList configElements = new ArrayList();
-
-		final IConfigurationElement[] menusExtensionPoint = registry
-				.getConfigurationElementsFor(EXTENSION_MENUS);
-
-		// Create a cache entry for every menu addition;
-		for (int i = 0; i < menusExtensionPoint.length; i++) {
-			if (PL_MENU_CONTRIBUTION.equals(menusExtensionPoint[i].getName())) {
-				configElements.add(menusExtensionPoint[i]);
-			}
-		}
-		Comparator comparer = new Comparator() {
-			public int compare(Object o1, Object o2) {
-				IConfigurationElement c1 = (IConfigurationElement) o1;
-				IConfigurationElement c2 = (IConfigurationElement) o2;
-				return c1.getNamespaceIdentifier().compareToIgnoreCase(
-						c2.getNamespaceIdentifier());
-			}
-		};
-		Collections.sort(configElements, comparer);
-
-		Iterator i = configElements.iterator();
-		while (i.hasNext()) {
-			IConfigurationElement configElement = (IConfigurationElement) i
-					.next();
-			// Determine the insertion location by parsing the URI
-			String location = configElement.getAttribute(TAG_LOCATION_URI);
-			menuService.addContributionFactory(new MenuAdditionCacheEntry(
-					menuService, configElement, location, configElement
-							.getNamespaceIdentifier()));
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuServiceFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuServiceFactory.java
deleted file mode 100644
index 1e766c0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuServiceFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.4
- * 
- */
-public class MenuServiceFactory extends AbstractServiceFactory {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.services.AbstractServiceFactory#create(java.lang.Class,
-	 * org.eclipse.ui.services.IServiceLocator,
-	 * org.eclipse.ui.services.IServiceLocator)
-	 */
-	public Object create(Class serviceInterface, IServiceLocator parentLocator,
-			IServiceLocator locator) {
-		if (!IMenuService.class.equals(serviceInterface)) {
-			return null;
-		}
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		final IWorkbench wb = wls.getWorkbench();
-		if (wb == null) {
-			return null;
-		}
-
-		Object parent = parentLocator.getService(serviceInterface);
-		if (parent == null) {
-			// we are registering the global services in the Workbench
-			return null;
-		}
-		final IWorkbenchWindow window = wls.getWorkbenchWindow();
-		return new SlaveMenuService((InternalMenuService) parent, locator, 
-				((WorkbenchWindow)window).getMenuRestrictions());
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/PulldownDelegateWidgetProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/PulldownDelegateWidgetProxy.java
deleted file mode 100644
index e4e6d13..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/PulldownDelegateWidgetProxy.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.CommandException;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.menus.IWidget;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
-import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * A proxy for a {@link IWorkbenchWindowPulldownDelegate} on a pulldown action
- * set action. This delays the class loading until the delegate is really asked
- * for information. Asking a proxy for anything (except disposing) will cause
- * the proxy to instantiate the proxied delegate.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-final class PulldownDelegateWidgetProxy implements IWidget {
-
-	/**
-	 * A wrapper for loading the menu that defends against possible exceptions
-	 * triggered outside of the workbench.
-	 */
-	private static final class MenuLoader implements ISafeRunnable {
-
-		/**
-		 * The parent for the menu to be created. This value is
-		 * <code>null</code> if the parent is a menu.
-		 */
-		private final Control control;
-
-		/**
-		 * The delegate from which to load the menu.
-		 */
-		private final IWorkbenchWindowPulldownDelegate delegate;
-
-		/**
-		 * The loaded menu. This value is <code>null</code> if the load
-		 * failed, or if it hasn't been loaded yet.
-		 */
-		private Menu menu = null;
-
-		/**
-		 * The parent for the menu to be created. This value is
-		 * <code>null</code> if the parent is a control.
-		 */
-		private final Menu parent;
-
-		/**
-		 * Constructs a new instance of <code>MenuLoader</code>
-		 * 
-		 * @param delegate
-		 *            The delegate from which the menu will be loaded; this
-		 *            value must not be <code>null</code>.
-		 * @param parent
-		 *            The parent of the menu to be loaded; this value must not
-		 *            be <code>null</code>.
-		 */
-		private MenuLoader(final IWorkbenchWindowPulldownDelegate delegate,
-				final Control parent) {
-			this.delegate = delegate;
-			this.parent = null;
-			this.control = parent;
-		}
-
-		/**
-		 * Constructs a new instance of <code>MenuLoader</code>
-		 * 
-		 * @param delegate
-		 *            The delegate from which the menu will be loaded; this
-		 *            value must not be <code>null</code>.
-		 * @param parent
-		 *            The parent of the menu to be loaded; this value must not
-		 *            be <code>null</code>.
-		 */
-		private MenuLoader(final IWorkbenchWindowPulldownDelegate2 delegate,
-				final Menu parent) {
-			this.delegate = delegate;
-			this.parent = parent;
-			this.control = null;
-		}
-
-		/**
-		 * Returns the menu loaded, if any.
-		 * 
-		 * @return the loaded menu, or <code>null</code> if none.
-		 */
-		private Menu getMenu() {
-			return menu;
-		}
-
-		/**
-		 * @see ISafeRunnable#handleException(java.lang.Throwable)
-		 */
-		public void handleException(Throwable exception) {
-			// Do nothing
-		}
-
-		/**
-		 * @see ISafeRunnable#run()
-		 */
-		public void run() throws Exception {
-			if (parent == null) {
-				menu = delegate.getMenu(control);
-			} else {
-				menu = ((IWorkbenchWindowPulldownDelegate2) delegate)
-						.getMenu(parent);
-			}
-		}
-	}
-
-	/**
-	 * The command to execute when the pulldown delegate appears in a tool bar,
-	 * and the arrow is <em>not</em> clicked. This also carries a help context
-	 * identifier. This value must be <code>null</code>.
-	 */
-	private final ParameterizedCommand command;
-
-	/**
-	 * The configuration element from which the delegate can be created. This
-	 * value will exist until the element is converted into a real class -- at
-	 * which point this value will be set to <code>null</code>.
-	 */
-	private IConfigurationElement configurationElement;
-
-	/**
-	 * The real delegate. This value is <code>null</code> until the proxy is
-	 * forced to load the real delegate. At this point, the configuration
-	 * element is converted, nulled out, and this delegate gains a reference.
-	 */
-	private IWorkbenchWindowPulldownDelegate delegate = null;
-
-	/**
-	 * The name of the configuration element attribute which contains the
-	 * information necessary to instantiate the real delegate.
-	 */
-	private final String delegateAttributeName;
-
-	private final DisposeListener disposeListener = new DisposeListener() {
-		public void widgetDisposed(DisposeEvent e) {
-			if (e.widget == widget) {
-				dispose();
-				widget = null;
-
-				// TODO Is this necessary?
-				// disposeOldImages();
-			}
-		}
-	};
-
-	/**
-	 * The service locator from which a handler service can be retrieved. This
-	 * is needed if the pulldown appears in the tool bar, and the drop-down
-	 * arrow is <em>not</em> clicked. This value must not be <code>null</code>.
-	 */
-	private final IServiceLocator locator;
-
-	private final Listener selectionListener = new Listener() {
-		public final void handleEvent(final Event event) {
-			final Widget item = event.widget;
-			if (item == null) {
-				return;
-			}
-
-			final int style = item.getStyle();
-			if (((style & SWT.DROP_DOWN) != 0) && (event.detail == SWT.ARROW)
-					&& (item instanceof ToolItem)) {
-				// Create the submenu.
-				final ToolItem toolItem = (ToolItem) item;
-				final ToolBar toolBar = toolItem.getParent();
-				if (loadDelegate()
-						&& (delegate instanceof IWorkbenchWindowPulldownDelegate2)) {
-					final IWorkbenchWindowPulldownDelegate2 delegate2 = (IWorkbenchWindowPulldownDelegate2) delegate;
-					final MenuLoader loader = new MenuLoader(delegate2, toolBar);
-					SafeRunner.run(loader);
-					final Menu subMenu = loader.getMenu();
-					if (subMenu != null) {
-						// position the menu below the drop down item
-						final Rectangle bounds = toolItem.getBounds();
-						final Point location = toolBar.toDisplay(new Point(
-								bounds.x, bounds.y + bounds.height));
-						subMenu.setLocation(location);
-						subMenu.setVisible(true);
-						return; // we don't fire the command
-					}
-				}
-			}
-
-			final IHandlerService service = (IHandlerService) locator
-					.getService(IHandlerService.class);
-			try {
-				service.executeCommand(command, event);
-			} catch (final CommandException e) {
-				/*
-				 * TODO There should be an API on IHandlerService that handles
-				 * the exceptions.
-				 */
-			}
-		}
-
-	};
-
-	/**
-	 * The widget created for this pulldown delegate. If this proxy has not been
-	 * asked to fill or it has been disposed, then this value is
-	 * <code>null</code>.
-	 */
-	private Widget widget = null;
-
-	/**
-	 * Constructs a new instance of <code>PulldownDelegateWidgetProxy</code>
-	 * with all the information it needs to try to avoid loading until it is
-	 * needed.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time; must not be <code>null</code>.
-	 * @param delegateAttributeName
-	 *            The name of the attibute or element containing the delegate;
-	 *            must not be <code>null</code>.
-	 * @param command
-	 *            The command to execute if this the pulldown is not shown; must
-	 *            not be <code>null</code>.
-	 * @param locator
-	 *            A service locator from which a handler service can be
-	 *            retrieved; must not be <code>null</code>.
-	 */
-	public PulldownDelegateWidgetProxy(
-			final IConfigurationElement configurationElement,
-			final String delegateAttributeName,
-			final ParameterizedCommand command, final IServiceLocator locator) {
-		if (configurationElement == null) {
-			throw new NullPointerException(
-					"The configuration element backing a handler proxy cannot be null"); //$NON-NLS-1$
-		}
-
-		if (delegateAttributeName == null) {
-			throw new NullPointerException(
-					"The attribute containing the handler class must be known"); //$NON-NLS-1$
-		}
-
-		if (command == null) {
-			throw new NullPointerException("The command cannot be null"); //$NON-NLS-1$
-		}
-
-		this.configurationElement = configurationElement;
-		this.delegateAttributeName = delegateAttributeName;
-		this.command = command;
-		this.locator = locator;
-	}
-
-	/**
-	 * Passes the dipose on to the proxied handler, if it has been loaded.
-	 */
-	public final void dispose() {
-		if (delegate != null) {
-			delegate.dispose();
-		}
-	}
-
-	public final void fill(final Composite parent) {
-		// This does not need to be supported.
-	}
-
-	public final void fill(CoolBar parent, final int index) {
-		// This does not need to be supported.
-	}
-
-	public final void fill(final Menu parent, final int index) {
-		if ((widget != null) || (parent == null)) {
-			return;
-		}
-
-		// Create the menu item.
-		final MenuItem menuItem;
-		if (index >= 0) {
-			menuItem = new MenuItem(parent, SWT.CASCADE, index);
-		} else {
-			menuItem = new MenuItem(parent, SWT.CASCADE);
-		}
-		menuItem.setData(this);
-		widget = menuItem;
-
-		// Create the submenu.
-		if (loadDelegate()
-				&& (delegate instanceof IWorkbenchWindowPulldownDelegate2)) {
-			final IWorkbenchWindowPulldownDelegate2 delegate2 = (IWorkbenchWindowPulldownDelegate2) delegate;
-			final MenuLoader loader = new MenuLoader(delegate2, parent);
-			SafeRunner.run(loader);
-			final Menu subMenu = loader.getMenu();
-			if (subMenu != null) {
-				menuItem.setMenu(subMenu);
-			}
-		}
-
-		menuItem.addDisposeListener(disposeListener);
-		menuItem.addListener(SWT.Selection, selectionListener);
-
-		// TODO Needs a way to be linked to a command.
-		// if (action.getHelpListener() != null)
-		// menuItem.addHelpListener(action.getHelpListener());
-
-		// TODO Needs a way of updating itself
-		// update(null);
-	}
-
-	public final void fill(final ToolBar parent, final int index) {
-		if ((widget != null) && (parent == null)) {
-			return;
-		}
-
-		final ToolItem toolItem;
-		if (index >= 0) {
-			toolItem = new ToolItem(parent, SWT.DROP_DOWN, index);
-		} else {
-			toolItem = new ToolItem(parent, SWT.DROP_DOWN);
-		}
-		toolItem.setData(this);
-		widget = toolItem;
-
-		// Attach some listeners.
-		toolItem.addDisposeListener(disposeListener);
-		toolItem.addListener(SWT.Selection, selectionListener);
-
-		// TODO Needs a way to be linked to a command.
-		// toolItem.addListener(SWT.Selection, getToolItemListener());
-		// action.addPropertyChangeListener(propertyListener);
-		// if (action != null) {
-		// String commandId = action.getActionDefinitionId();
-		// ExternalActionManager.ICallback callback = ExternalActionManager
-		// .getInstance().getCallback();
-		//
-		// if ((callback != null) && (commandId != null)) {
-		// callback.addPropertyChangeListener(commandId,
-		// actionTextListener);
-		// }
-		// }
-
-		// TODO Needs a way of updating itself
-		// update(null);
-	}
-
-	/**
-	 * Loads the delegate, if possible. If the delegate is loaded, then the
-	 * member variables are updated accordingly.
-	 * 
-	 * @return <code>true</code> if the delegate is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadDelegate() {
-		if (delegate == null) {
-			// Load the handler.
-			try {
-				delegate = (IWorkbenchWindowPulldownDelegate) configurationElement
-						.createExecutableExtension(delegateAttributeName);
-				configurationElement = null;
-				return true;
-
-			} catch (final ClassCastException e) {
-				final String message = "The proxied delegate was the wrong class"; //$NON-NLS-1$
-				final IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-
-			} catch (final CoreException e) {
-				final String message = "The proxied delegate for '" + configurationElement.getAttribute(delegateAttributeName) //$NON-NLS-1$
-						+ "' could not be loaded"; //$NON-NLS-1$
-				IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	public final String toString() {
-		if (delegate == null) {
-			return configurationElement.getAttribute(delegateAttributeName);
-		}
-
-		return delegate.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/SlaveMenuService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/SlaveMenuService.java
deleted file mode 100644
index 231c421..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/SlaveMenuService.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.menus.AbstractContributionFactory;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * Provides services related to contributing menu elements to a workbench
- * window. Visibility and showing are tracked at the workbench window level.
- * </p>
- * <p>
- * This class is only intended for internal use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class SlaveMenuService extends InternalMenuService {
-
-	private Collection providers = new ArrayList();
-	private Collection factories = new ArrayList();
-
-	/**
-	 * The parent menu service for this window. This parent must track menu
-	 * definitions and the registry. Must not be <code>null</code>
-	 */
-	private final InternalMenuService parent;
-	private IServiceLocator serviceLocator;
-	private Set restrictionExpression;
-
-	/**
-	 * Constructs a new instance of <code>MenuService</code> using a menu
-	 * manager.
-	 * 
-	 * @param parent
-	 * 		The parent menu service for this window. This parent must track menu
-	 * 		definitions and the regsitry. Must not be <code>null</code>
-	 */
-	public SlaveMenuService(InternalMenuService parent,
-			final IServiceLocator serviceLocator, Set restrictions) {
-		restrictionExpression = restrictions;
-
-		this.parent = parent;
-		this.serviceLocator = serviceLocator;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.menus.IMenuService#populateMenu(org.eclipse.jface
-	 * .action.MenuManager, org.eclipse.ui.internal.menus.MenuLocationURI)
-	 */
-	public void populateContributionManager(ContributionManager mgr, String uri) {
-		parent.populateContributionManager(serviceLocator,
-				restrictionExpression, mgr, uri, true);
-	}
-
-	public void populateContributionManager(ContributionManager mgr,
-			String uri, boolean recurse) {
-		parent.populateContributionManager(serviceLocator,
-				restrictionExpression, mgr, uri, recurse);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#getCurrentState()
-	 */
-	public IEvaluationContext getCurrentState() {
-		return parent.getCurrentState();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.menus.IMenuService#addCacheForURI(org.eclipse
-	 * .ui.internal.menus.MenuLocationURI,
-	 * org.eclipse.ui.internal.menus.MenuCacheEntry)
-	 */
-	public void addContributionFactory(AbstractContributionFactory cache) {
-		if (!factories.contains(cache)) {
-			factories.add(cache);
-		}
-		parent.addContributionFactory(cache);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.menus.IMenuService#releaseMenu(org.eclipse.jface
-	 * .action.ContributionManager)
-	 */
-	public void releaseContributions(ContributionManager mgr) {
-		parent.releaseContributions(mgr);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.menus.IMenuService#removeContributionFactory(org.eclipse
-	 * .ui.menus.AbstractContributionFactory)
-	 */
-	public void removeContributionFactory(AbstractContributionFactory factory) {
-		factories.remove(factory);
-		parent.removeContributionFactory(factory);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		if (!providers.isEmpty()) {
-			Object[] array = providers.toArray();
-			for (int i = 0; i < array.length; i++) {
-				parent.removeSourceProvider((ISourceProvider) array[i]);
-			}
-			providers.clear();
-		}
-		if (!factories.isEmpty()) {
-			Object[] array = factories.toArray();
-			for (int i = 0; i < array.length; i++) {
-				parent
-						.removeContributionFactory((AbstractContributionFactory) array[i]);
-			}
-			factories.clear();
-		}
-		restrictionExpression = null;
-		serviceLocator = null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.services.IServiceWithSources#addSourceProvider(org.eclipse
-	 * .ui.ISourceProvider)
-	 */
-	public void addSourceProvider(ISourceProvider provider) {
-		if (!providers.contains(provider)) {
-			providers.add(provider);
-		}
-		parent.addSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.services.IServiceWithSources#removeSourceProvider(org.
-	 * eclipse.ui.ISourceProvider)
-	 */
-	public void removeSourceProvider(ISourceProvider provider) {
-		providers.remove(provider);
-		parent.removeSourceProvider(provider);
-	}
-
-	public List getAdditionsForURI(MenuLocationURI uri) {
-		return parent.getAdditionsForURI(uri);
-	}
-
-	public void registerVisibleWhen(final IContributionItem item,
-			final Expression visibleWhen, final Set restriction,
-			String identifierID) {
-		parent
-				.registerVisibleWhen(item, visibleWhen, restriction,
-						identifierID);
-	}
-
-	public void unregisterVisibleWhen(IContributionItem item, final Set restriction) {
-		parent.unregisterVisibleWhen(item, restriction);
-	}
-
-	public void populateContributionManager(
-			IServiceLocator serviceLocatorToUse, Set restriction,
-			ContributionManager mgr, String uri, boolean recurse) {
-		parent.populateContributionManager(serviceLocatorToUse, restriction,
-				mgr, uri, recurse);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimAdditionCacheEntry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimAdditionCacheEntry.java
deleted file mode 100644
index c18411a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimAdditionCacheEntry.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.menus.IWidget;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.IWorkbenchWidget;
-
-/**
- * Handles the top level caching for 3.2 style trim
- * contributions.
- * 
- * @since 3.3
- * 
- */
-public class TrimAdditionCacheEntry  {
-	private IConfigurationElement additionElement;
-	private MenuLocationURI uri = null;
-	
-	/**
-	 * The map contains {@link IWorkbenchWidget} entries
-	 * for widgets that have failed to load on a previous
-	 * attempt. Used to prevent multiple retries at
-	 * loading a widget (which spams the log).
-	 */
-	private Map failedWidgets = new HashMap();
-	/**
-	 * Maps the widget back to it's configurtation element
-	 */
-	private Map widgetToConfigElementMap = new HashMap();
-	
-
-	// Caches
-
-	/**
-	 * Maps an IContributionItem to its corresponding IConfigurationElement
-	 */
-	Map iciToConfigElementMap = new HashMap();
-
-	public TrimAdditionCacheEntry(IConfigurationElement element,
-			MenuLocationURI uri, IMenuService service) {
-		this.additionElement = element;
-		this.uri = uri;
-	}
-
-	/**
-	 * Populate the list
-	 * 
-	 * @param additions
-	 */
-	public void getContributionItems(List additions) {
-		additions.clear();
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.menus.MenuCacheEntry#generateSubCaches()
-	 */
-	public void generateSubCaches() {
-		// TODO Auto-generated method stub
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.menus.MenuCacheEntry#getVisibleWhenForItem(org.eclipse.jface.action.IContributionItem)
-	 */
-	public Expression getVisibleWhenForItem(IContributionItem item) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/**
-	 * @return
-	 */
-	public String getId() {
-		return additionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-	}
-
-	/**
-	 * @return <code>true</code> iff the group is positioned at the start
-	 * (or 'before') the entry that it is relative to. Default is true
-	 * 
-	 */
-	public boolean isAtStart() {
-		IConfigurationElement location = additionElement.getChildren(IWorkbenchRegistryConstants.TAG_LOCATION)[0];
-		if (location.getChildren(IWorkbenchRegistryConstants.TAG_ORDER).length > 0) {
-			IConfigurationElement order = location.getChildren(IWorkbenchRegistryConstants.TAG_ORDER)[0];
-			
-			String pos = order.getAttribute(IWorkbenchRegistryConstants.ATT_POSITION);
-			if (pos != null)
-				return (pos.equals("start") | pos.equals("before"));  //$NON-NLS-1$//$NON-NLS-2$
-		}
-		return true;
-	}
-
-	/**
-	 * Returns whether or not the defining {@link IConfigurationElement}
-	 * declares that the widget should use extra space in the 'major'
-	 * dimension (ie. use extra horizontal space in the status area).
-	 * The space is equally divided with other elementa in the same
-	 * trim area that also want to use the extra space.
-	 * 
-	 * @param widgetElement the {@link IConfigurationElement} declaring this
-	 * widget.
-	 * 
-	 * @return <code>true</code> iff the resulting widget should use
-	 * extra major space
-	 */
-	public boolean fillMajor(IConfigurationElement widgetElement) {
-		if (widgetElement.getChildren(IWorkbenchRegistryConstants.TAG_LAYOUT).length==0) {
-			return false;
-		}
-		IConfigurationElement layout = widgetElement.getChildren(IWorkbenchRegistryConstants.TAG_LAYOUT)[0];
-		String fillMajorVal = layout.getAttribute(IWorkbenchRegistryConstants.ATT_FILL_MAJOR);
-
-		return (fillMajorVal != null && fillMajorVal.equals("true")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns whether or not the defining {@link IConfigurationElement}
-	 * declares that the widget should use extra space in the 'minor'
-	 * dimension (ie. use extra vertical space in the status area)
-	 * 
-	 * @param widgetElement the {@link IConfigurationElement} declaring this
-	 * widget.
-	 * 
-	 * @return <code>true</code> iff the resulting widget should use
-	 * extra minor space
-	 */
-	public boolean fillMinor(IConfigurationElement widgetElement) {
-		if (widgetElement.getChildren(IWorkbenchRegistryConstants.TAG_LAYOUT).length==0) {
-			return false;
-		}
-		IConfigurationElement layout = widgetElement.getChildren(IWorkbenchRegistryConstants.TAG_LAYOUT)[0];
-		String fillMinorVal = layout.getAttribute(IWorkbenchRegistryConstants.ATT_FILL_MINOR);
-
-		return (fillMinorVal != null && fillMinorVal.equals("true")); //$NON-NLS-1$
-	}
-
-	/**
-	 * @return The list of IConfigurationElements representing
-	 * widgets to be added into this 'group'
-	 */
-	private List getWidgetConfigs() {
-		List widgetConfigs = new ArrayList();
-		
-		// Return to the 'root' of the config tree and gather all elements
-		// for this 'group'. Note that while this is sub-optimal
-		// performace-wise that there are expected to be -very-
-		// few contributions in total (i.e. 10's, not 100's)
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		final IConfigurationElement[] widgetElements = registry
-				.getConfigurationElementsFor(IWorkbenchRegistryConstants.EXTENSION_MENUS);
-
-		// Locate all 'widget' additions appropriate for -this- group
-		for (int i = 0; i < widgetElements.length; i++) {
-			// Only process 'widget' entries
-			if (!IWorkbenchRegistryConstants.TAG_WIDGET.equals(widgetElements[i].getName()))
-				continue;
-			
-			// Define the initial URI spec
-			if (widgetElements[i].getChildren(IWorkbenchRegistryConstants.TAG_LOCATION).length > 0) {
-				IConfigurationElement location = widgetElements[i].getChildren(IWorkbenchRegistryConstants.TAG_LOCATION)[0];
-				if (location.getChildren(IWorkbenchRegistryConstants.TAG_BAR).length > 0) {
-					IConfigurationElement bar = location.getChildren(IWorkbenchRegistryConstants.TAG_BAR)[0];
-
-					// The bar's path represents the 'group' it should go into
-					String path = bar.getAttribute(IWorkbenchRegistryConstants.ATT_PATH);
-					if (path != null && path.equals(getId()))
-							widgetConfigs.add(widgetElements[i]);
-				}
-			}
-		}
-		
-		return widgetConfigs;
-	}
-	
-	/**
-	 * Attempts to load -all- widgets for this entry and
-	 * keeps track of the successful loads only. Only elements
-	 * who can be successfully loaded will be seen by the
-	 * builder.
-	 * 
-	 * @return The list of <code>IWorkbenchWidget</code> entries
-	 * that have been successfully loaded 
-	 */
-	public List getWidgets() {
-		List loadedWidgets = new ArrayList();
-		
-		// Get the widget config elements for this 'group'
-		List widgetConfigs = getWidgetConfigs();
-		for (Iterator iterator = widgetConfigs.iterator(); iterator
-				.hasNext();) {
-			IConfigurationElement widgetCE = (IConfigurationElement) iterator.next();
-			
-			// skip elements that are known to fail
-			if (failedWidgets.containsKey(widgetCE))
-				continue;
-			
-			IWorkbenchWidget loadedWidget = loadWidget(widgetCE);
-
-			// Either add it to the 'valid' list or mark it
-			// as failed
-			if (loadedWidget != null) {
-				loadedWidgets.add(loadedWidget);
-				widgetToConfigElementMap.put(loadedWidget, widgetCE);
-			}
-			else
-				failedWidgets.put(widgetCE, widgetCE);
-		}
-		
-		return loadedWidgets;
-	}
-
-	/**
-	 * Attempts to load the executable extension defined within the given
-	 * configuration element. An error is logged for any widget that fails
-	 * to load.
-	 * 
-	 * @param widgetCE The {@link IConfigurationElement} containing the
-	 * widget's 'class' specification.
-	 * 
-	 * @return The loaded {@link IWorkbenchWidget} or <code>null</code>
-	 * if the loading fails
-	 */
-	private IWorkbenchWidget loadWidget(IConfigurationElement widgetCE) {
-		return (IWorkbenchWidget) Util.safeLoadExecutableExtension(widgetCE,
-					IWorkbenchRegistryConstants.ATT_CLASS,
-					IWorkbenchWidget.class);
-	}
-
-	/**
-	 * @param widget The {@link IWorkbenchWidget} to get the defining configuration
-	 * element for.
-	 * 
-	 * @return The defining {@link IConfigurationElement}
-	 */
-	public IConfigurationElement getElement(IWorkbenchWidget widget) {
-		return (IConfigurationElement) widgetToConfigElementMap.get(widget);
-	}
-
-	/**
-	 * @param widget
-	 */
-	public void removeWidget(IWidget widget) {
-		widgetToConfigElementMap.remove(widget);
-	}
-	
-	public MenuLocationURI getUri() {
-		return uri;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimBarManager2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimBarManager2.java
deleted file mode 100644
index 2ce8167..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimBarManager2.java
+++ /dev/null
@@ -1,502 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.menus.IWidget;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.internal.WindowTrimProxy;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.TrimLayout;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.menus.AbstractWorkbenchTrimWidget;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.IWorkbenchWidget;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * <p>
- * An implementation that supports 'trim' elements defined in using the
- * <code>org.eclipse.ui.menus</code> extension point.
- * </p>
- * <p>
- * This class is not intended to be used outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public class TrimBarManager2 {
-
-	/**
-	 * A List of the URI's representing the trim areas
-	 */
-	private MenuLocationURI[] trimAreaURIs = {
-			new MenuLocationURI("toolbar:command1"), //$NON-NLS-1$
-			new MenuLocationURI("toolbar:command2"), //$NON-NLS-1$
-			new MenuLocationURI("toolbar:vertical1"), //$NON-NLS-1$
-			new MenuLocationURI("toolbar:vertical2"), //$NON-NLS-1$
-			new MenuLocationURI("toolbar:status"), //$NON-NLS-1$
-	};
-
-	/**
-	 * The SWT 'side' corresponding to a URI
-	 */
-	int[] swtSides = { SWT.TOP, SWT.TOP, SWT.LEFT, SWT.RIGHT, SWT.BOTTOM }; 
-	/**
-	 * The window on which this menu manager exists; never <code>null</code>.
-	 */
-	private STrimBuilder fTrimBuilder;
-
-	private WorkbenchMenuService fMenuService;
-
-	private boolean fDirty;
-
-	/**
-	 * Constructs a new instance of <code>TrimBarManager</code>.
-	 * 
-	 * @param window
-	 *            The window on which this menu manager exists; must not be
-	 *            <code>null</code>.
-	 */
-	public TrimBarManager2(final WorkbenchWindow window) {
-		if (window == null) {
-			throw new IllegalArgumentException("The window cannot be null"); //$NON-NLS-1$
-		}
-
-		// Remember the parameters
-		fMenuService = (WorkbenchMenuService) window.getWorkbench().getService(
-				IMenuService.class);
-		fTrimBuilder = new STrimBuilder(window);
-
-		// New layouts are always 'dirty'
-		fDirty = true;
-	}
-
-	/**
-	 * Hacked version of the update method that allows the hiding of any trim
-	 * sited at SWT.TOP. This is because the Intro management wants there to be
-	 * no trim at the top but can only currently indicate this by using the
-	 * CoolBar's visibility...
-	 * 
-	 * @param force
-	 * @param recursive
-	 * @param hideTopTrim
-	 */
-	public void update(boolean force, boolean recursive, boolean hideTopTrim) {
-		if (force || isDirty()) {
-			// Re-render the trim based on the new layout
-			fTrimBuilder.build(hideTopTrim);
-			setDirty(false);
-		}
-	}
-
-	/**
-	 * Copied from the <code>MenuManager</code> method...
-	 * 
-	 * @param force
-	 *            If true then do the update even if not 'dirty'
-	 * @param recursive
-	 *            Update recursively
-	 * 
-	 * @see org.eclipse.jface.action.MenuManager#update(boolean, boolean)
-	 */
-	public void update(boolean force, boolean recursive) {
-		update(force, recursive, false);
-	}
-
-	/**
-	 * Set the dirty state of the layout
-	 * 
-	 * @param isDirty
-	 */
-	private void setDirty(boolean isDirty) {
-		fDirty = isDirty;
-	}
-
-	/**
-	 * Returns the 'dirty' state of the layout
-	 * 
-	 * @return Always returns 'true' for now
-	 */
-	private boolean isDirty() {
-		return fDirty;
-	}
-
-	/**
-	 * This is a convenience class that maintains the list of the widgets in the
-	 * group. This allows any position / orientation changes to the group to be
-	 * passed on to all the widgets for that group.
-	 * 
-	 * @since 3.2
-	 * 
-	 */
-	private class TrimWidgetProxy extends WindowTrimProxy {
-
-		private List widgets;
-		private TrimAdditionCacheEntry cacheEntry;
-		private int originalSide;
-		private int curSide;
-
-		private Composite parent;
-
-		/**
-		 * Constructor that takes in any information necessary to implement an
-		 * IWindowTrim and also has enough state to manage a group with multiple
-		 * IWidget contributions.
-		 * 
-		 */
-		public TrimWidgetProxy(List widgets, int side, Composite parent,
-				TrimAdditionCacheEntry entry, boolean resizeable) {
-			super(parent, entry.getId(), entry.getId(), SWT.TOP | SWT.BOTTOM | SWT.LEFT
-					| SWT.RIGHT, resizeable);
-
-			// Remember our widget structure
-			this.widgets = widgets;
-			this.curSide = side;
-			this.originalSide = side;
-			this.parent = parent;
-			this.cacheEntry = entry;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.WindowTrimProxy#dock(int)
-		 */
-		public void dock(int newSide) {
-			// out with the old...
-			for (Iterator iter = widgets.iterator(); iter.hasNext();) {
-				IWidget widget = (IWidget) iter.next();
-				widget.dispose();
-				
-				cacheEntry.removeWidget(widget);
-			}
-
-			// ...in with the new
-			for (Iterator iter = widgets.iterator(); iter.hasNext();) {
-				IWorkbenchWidget widget = (IWorkbenchWidget) iter.next();
-				if (widget instanceof AbstractWorkbenchTrimWidget)
-					((AbstractWorkbenchTrimWidget)widget).fill(parent, curSide, newSide);
-				else
-					widget.fill(parent);
-			}
-
-			curSide = newSide;
-			parent.layout();
-		}
-
-		/**
-		 * Disposes all the widgets contributed into this group and then
-		 * disposes the group's 'proxy' control
-		 */
-		public void dispose() {
-			for (Iterator iter = widgets.iterator(); iter.hasNext();) {
-				IWidget widget = (IWidget) iter.next();
-				widget.dispose();
-
-				// Remove the IWidget from the entry's cache
-				cacheEntry.removeWidget(widget);
-			}
-
-			getControl().dispose();
-		}
-
-		/**
-		 * @return The side that the trim was declared to be on
-		 */
-		public int getSide() {
-			return originalSide;
-		}
-
-		/**
-		 * @return Whether this addition is at the start or end of the
-		 * containing trim area
-		 */
-		public boolean isAtStart() {
-			//Delegate to the cache entry
-			return cacheEntry.isAtStart();
-		}
-	}
-
-	/**
-	 * A convenience class that implements the 'rendering' code necessary to
-	 * turn the contributions to the 'trim' bar into actual SWT controls.
-	 * 
-	 * @since 3.2
-	 * 
-	 */
-	private class STrimBuilder {
-		/**
-		 * The WorkbenchWindow that this builder is for
-		 */
-		private WorkbenchWindow fWindow;
-
-		/**
-		 * The list of <code>WindowTrimProxy</code> elements currently
-		 * rendered in the WorkbenchWindow. Used to support the update mechanism
-		 * (specifically, it's needed to implement the <code>tearDown</code>
-		 * method).
-		 */
-		private List curGroups = new ArrayList();
-
-		/**
-		 * Map to cache which trim has already been initialized
-		 */
-		private Map initializedTrim = new HashMap();
-		
-		/**
-		 * Construct a trim builder for the given WorkbenchWindow
-		 * 
-		 * @param window
-		 *            The WorkbenchWindow to render the trim on
-		 */
-		public STrimBuilder(WorkbenchWindow window) {
-			fWindow = window;
-		}
-
-		/**
-		 * Remove any rendered trim. This method will always be directly
-		 * followed by a call to the 'build' method to update the contents.
-		 */
-		public void tearDown() {
-			// First, remove all trim
-			for (Iterator iter = curGroups.iterator(); iter.hasNext();) {
-				TrimWidgetProxy proxy = (TrimWidgetProxy) iter.next();
-				fWindow.getTrimManager().removeTrim(proxy);
-
-				try {
-					proxy.dispose();
-		        } catch (Throwable e) {
-		            IStatus status = null;
-		            if (e instanceof CoreException) {
-		                status = ((CoreException) e).getStatus();
-		            } else {
-		                status = StatusUtil
-		                        .newStatus(
-		                                IStatus.ERROR,
-		                                "Internal plug-in widget delegate error on dispose.", e); //$NON-NLS-1$
-		            }
-		            StatusUtil
-							.handleStatus(
-									status,
-									"widget delegate failed on dispose: id = " + proxy.getId(), StatusManager.LOG); //$NON-NLS-1$
-		        }
-			}
-
-			// Clear out the old list
-			curGroups.clear();
-		}
-
-		/**
-		 * Construct the trim based on the contributions.
-		 * 
-		 * @param layout
-		 *            The new layout information
-		 * @param hideTopTrim
-		 *            <code>true</code> iff we don't want to display trim
-		 *            contributed into the SWT.TOP area. This is because the
-		 *            'Intro' View hides the CBanner (and so, presumably, also
-		 *            wants to not show any other trim at the top.
-		 * 
-		 * @param window
-		 *            The widnow to 'render' the trim into
-		 * 
-		 */
-		public void build(boolean hideTopTrim) {
-			tearDown();
-			
-			for (int i = 0; i < trimAreaURIs.length; i++) {
-				processAdditions(trimAreaURIs[i], hideTopTrim);
-			}
-		}
-
-		/**
-		 * @param menuLocationURI
-		 * @param hideTopTrim 
-		 */
-		private void processAdditions(MenuLocationURI trimURI, boolean hideTopTrim) {
-			List additions = fMenuService.getAdditionsForURI(trimURI);
-			if (additions.size() == 0)
-				return;
-			
-			int swtSide = getSide(trimURI);
-			
-			// Dont show trim on the top if it's 'hidden'
-			if (swtSide == SWT.TOP && hideTopTrim)
-				return;
-
-			// Each trim addition represents a 'group' into which one or more
-			// widgets can be placed...
-			for (Iterator iterator = additions.iterator(); iterator.hasNext();) {
-				TrimAdditionCacheEntry trimEntry = (TrimAdditionCacheEntry) iterator.next();
-				String groupId = trimEntry.getId();
-				
-				// Get the list of IConfgurationElements representing
-				// widgets in this group
-				List widgets = trimEntry.getWidgets();
-				if (widgets.size() == 0)
-					continue;
-				
-				// Create a 'container' composite for the group
-				Composite grpComposite = new Composite(fWindow.getShell(), SWT.NONE);
-				grpComposite.setToolTipText(groupId);
-				
-				// Create the layout for the 'group' container...-no- border margins
-				RowLayout rl = new RowLayout();
-		        rl.marginBottom = rl.marginHeight = rl.marginLeft = rl.marginRight = rl.marginTop = rl.marginWidth = 0;
-				grpComposite.setLayout(rl);
-				
-				// keep track of whether -any- of the widgets are resizeable
-				boolean resizeable = false;
-
-				for (Iterator widgetIter = widgets.iterator(); widgetIter.hasNext();) {
-					IWorkbenchWidget widget = (IWorkbenchWidget) widgetIter.next();
-					IConfigurationElement widgetElement = trimEntry.getElement(widget);
-					if (widget != null) {
-						resizeable |= trimEntry.fillMajor(widgetElement);
-						renderTrim(grpComposite, widget, swtSide);
-					}
-				}
-
-				// Create the trim proxy for this group
-				TrimWidgetProxy groupTrimProxy = new TrimWidgetProxy(widgets,
-						swtSide, grpComposite, trimEntry, resizeable);
-				curGroups.add(groupTrimProxy);
-
-				// 'Site' the group in its default location
-				placeGroup(groupTrimProxy);
-			}	
-		}
-
-		private void placeGroup(final TrimWidgetProxy proxy) {
-			// Get the placement parameters
-			final int side = proxy.getSide();
-			boolean atStart = proxy.isAtStart();
-
-			// Place the trim before any other trim if it's
-			// at the 'start'; otherwise place it at the end
-			IWindowTrim beforeMe = null;
-			if (atStart) {
-				List trim = fWindow.getTrimManager().getAreaTrim(side);
-				if (trim.size() > 0)
-					beforeMe = (IWindowTrim) trim.get(0);
-			}
-
-			// Add the group into trim...safely
-			try {
-    			proxy.dock(side); // ensure that the widgets are properly oriented
-    			TrimLayout tl = (TrimLayout) fWindow.getShell().getLayout();
-    			tl.addTrim(side, proxy, beforeMe);
-	        } catch (Throwable e) {
-	            IStatus status = null;
-	            if (e instanceof CoreException) {
-	                status = ((CoreException) e).getStatus();
-	            } else {
-	                status = StatusUtil
-	                        .newStatus(
-	                                IStatus.ERROR,
-	                                "Internal plug-in widget delegate error on dock.", e); //$NON-NLS-1$
-	            }
-	            StatusUtil.handleStatus(status, "widget delegate failed on dock: id = " + proxy.getId(), //$NON-NLS-1$
-	            		StatusManager.LOG);
-	        }
-		}
-
-		/**
-		 * Render a particular SWidget into a given group
-		 * 
-		 * @param groupComposite
-		 *            The parent to create the widgets under
-		 * @param widget
-		 *            The SWidget to render
-		 * @param side
-		 */
-		private void renderTrim(final Composite groupComposite, IWidget iw,
-				final int side) {
-			// OK, fill the widget
-			if (iw != null) {
-            	// The -first- time trim is displayed we'll initialize it
-            	if (iw instanceof IWorkbenchWidget && initializedTrim.get(iw) == null) {
-            		IWorkbenchWidget iww = (IWorkbenchWidget) iw;
-            		iww.init(fWindow);
-            		initializedTrim.put(iw, iw);
-            	}
-
-            	if (iw instanceof AbstractWorkbenchTrimWidget)
-            		((AbstractWorkbenchTrimWidget)iw).fill(groupComposite, SWT.DEFAULT, side);
-            	else
-            		iw.fill(groupComposite);
-			}
-		}
-
-		private int getSide(MenuLocationURI uri) {
-			for (int i = 0; i < trimAreaURIs.length; i++) {
-				if (trimAreaURIs[i].getRawString().equals(uri.getRawString()))
-					return swtSides[i];
-			}
-			return SWT.BOTTOM;
-		}
-
-
-		/**
-		 * Reposition any contributed trim whose id is -not- a 'knownId'. If the
-		 * id is known then the trim has already been positioned from the stored
-		 * workbench state. If it isn't then it's a new contribution whose
-		 * default position may have been trashed by the WorkbenchWindow's
-		 * 'restoreState' handling.
-		 * 
-		 * @param knownIds
-		 *            A List of strings containing the ids of any trim that was
-		 *            explicitly positioned during the restore state.
-		 */
-		public void updateLocations(List knownIds) {
-			for (Iterator iter = curGroups.iterator(); iter.hasNext();) {
-				TrimWidgetProxy proxy = (TrimWidgetProxy) iter.next();
-				if (!knownIds.contains(proxy.getId())) {
-					placeGroup(proxy);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Updates the placement of any contributed trim that is -not- in the
-	 * 'knownIds' list (which indicates that it has already been placed using
-	 * cached workspace data.
-	 * 
-	 * Forward on to the bulder for implementation
-	 */
-	public void updateLocations(List knownIds) {
-		fTrimBuilder.updateLocations(knownIds);
-	}
-	
-	/**
-	 * unhook the menu service.
-	 */
-	public void dispose() {
-		fMenuService = null;
-		fTrimBuilder = null;
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java
deleted file mode 100644
index 8e683df..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/TrimContributionManager.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-import org.eclipse.ui.internal.layout.TrimLayout;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.menus.AbstractContributionFactory;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.MenuUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Manage trim contributions added through the 'org.eclipse.ui.menus'
- * extension point.
- * 
- * @since 3.3
- *
- */
-public class TrimContributionManager extends ContributionManager {
-	private class ToolBarTrimProxy implements IWindowTrim {
-		private String id;
-		private String uriSpec;
-		private WorkbenchMenuService menuService;
-		private WorkbenchWindow wbw;
-		private ToolBar tb = null;
-		private ToolBarManager tbm = null;
-
-		ToolBarTrimProxy(String id, WorkbenchWindow wbw) {
-			this.id = id;
-			uriSpec = "toolbar:" + id; //$NON-NLS-1$
-			this.wbw = wbw;
-			
-			this.menuService = (WorkbenchMenuService) wbw.getWorkbench().getService(
-					IMenuService.class);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#dock(int)
-		 */
-		public void dock(int dropSide) {
-			dispose();
-			
-			int orientation = SWT.HORIZONTAL;
-			if (dropSide == SWT.LEFT || dropSide == SWT.RIGHT)
-				orientation = SWT.VERTICAL;
-			
-			// Create the new control, manager...
-			tbm = new ToolBarManager(SWT.FLAT | orientation);
-//			menuService.populateContributionManager(tbm, uriSpec);
-			menuService.populateContributionManager(wbw, restrictionExpression, tbm, uriSpec, true);
-			
-			// Set the state for any Control entries
-			IContributionItem[] items = tbm.getItems();
-			for (int i = 0; i < items.length; i++) {
-				if (items[i] instanceof InternalControlContribution) {
-					InternalControlContribution wbwcc = (InternalControlContribution) items[i];
-					wbwcc.setWorkbenchWindow(wbw);
-					wbwcc.setCurSide(dropSide);
-				}
-			}
-			
-			// OK, create the ToolBar (causes an 'update(true)'
-			tb = tbm.createControl(wbw.getShell());
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#getControl()
-		 */
-		public Control getControl() {
-			return tb;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#getDisplayName()
-		 */
-		public String getDisplayName() {
-			return getId();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#getHeightHint()
-		 */
-		public int getHeightHint() {
-			return SWT.DEFAULT;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#getId()
-		 */
-		public String getId() {
-			return id;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#getValidSides()
-		 */
-		public int getValidSides() {
-			return SWT.TOP | SWT.BOTTOM | SWT.LEFT | SWT.RIGHT;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#getWidthHint()
-		 */
-		public int getWidthHint() {
-			return SWT.DEFAULT;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#handleClose()
-		 */
-		public void handleClose() {
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#isCloseable()
-		 */
-		public boolean isCloseable() {
-			return false;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.layout.IWindowTrim#isResizeable()
-		 */
-		public boolean isResizeable() {
-			return false;
-		}
-		
-		/**
-		 * Dispose any trim element resources
-		 */
-		public void dispose() {
-			if (tbm != null) {
-				tbm.removeAll();
-				tbm.dispose();
-			}
-		}
-	}
-	
-	/**
-	 * A List of the URI's representing the trim areas
-	 */
-	private String[] trimAreaURIs = {
-			MenuUtil.TRIM_COMMAND1,
-			MenuUtil.TRIM_COMMAND2,
-			MenuUtil.TRIM_VERTICAL1,
-			MenuUtil.TRIM_VERTICAL2,
-			MenuUtil.TRIM_STATUS
-	};
-
-	/**
-	 * The SWT 'side' corresponding to a URI
-	 */
-	private int[] swtSides = { SWT.TOP, SWT.TOP, SWT.LEFT, SWT.RIGHT, SWT.BOTTOM }; 
-
-	private WorkbenchWindow wbWindow;
-	TrimLayout layout;
-	private InternalMenuService menuService;
-	
-	List contributedTrim = new ArrayList();
-
-	List contributedLists = new ArrayList();
-
-	private Set restrictionExpression;
-
-	/**
-	 * Construct a contribution manager for the given window 
-	 */
-	public TrimContributionManager(WorkbenchWindow window) {
-		wbWindow = window;
-		layout = (TrimLayout) wbWindow.getShell().getLayout();
-		menuService = (InternalMenuService) window.getService(
-				IMenuService.class);
-		restrictionExpression = wbWindow.getMenuRestrictions();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IContributionManager#update(boolean)
-	 */
-	public void update(boolean force) {
-		update(force, false);
-	}
-	
-	public void update(boolean force, boolean hideTopTrim) {
-		// Remove any contributed trim
-		teardown();
-		
-		// Process the additions for each 'area'
-		for (int i = 0; i < trimAreaURIs.length; i++) {
-			// IntroBar want to hide the top trim
-			if (hideTopTrim && swtSides[i] == SWT.TOP)
-				continue;
-			
-			List contribs = menuService.getAdditionsForURI(new MenuLocationURI(trimAreaURIs[i]));
-			
-			for (Iterator cacheIter = contribs.iterator(); cacheIter.hasNext();) {
-				AbstractContributionFactory cache = (AbstractContributionFactory) cacheIter.next();
-				ContributionRoot ciList = new ContributionRoot(menuService,
-						restrictionExpression, this, cache);
-				cache.createContributionItems(wbWindow, ciList);
-				// save the list for later cleanup of any visibility expressions that were added.
-				contributedLists.add(ciList);
-				for (Iterator ciIter = ciList.getItems().iterator(); ciIter.hasNext();) {
-					IContributionItem ci = (IContributionItem) ciIter.next();
-					if (ci instanceof IToolBarContributionItem) {
-						// HACK!! Fake this
-						ToolBarTrimProxy tbProxy = new ToolBarTrimProxy(ci.getId(), wbWindow);
-						tbProxy.dock(swtSides[i]);
-						
-						// If we're adding to the 'command1' area then we're -before- the CoolBar
-						IWindowTrim insertBefore = null;
-						if (i == 0) {
-							insertBefore = layout.getTrim("org.eclipse.ui.internal.WorkbenchWindow.topBar"); //$NON-NLS-1$
-						}
-						layout.addTrim(swtSides[i], tbProxy, insertBefore);						
-						contributedTrim.add(tbProxy);
-					}
-				}
-			}
-		}
-	}
-
-	private void teardown() {
-		// First, remove all trim
-		for (Iterator iter = contributedTrim.iterator(); iter.hasNext();) {
-			ToolBarTrimProxy proxy = (ToolBarTrimProxy) iter.next();
-			layout.removeTrim(proxy);
-
-			try {
-				proxy.dispose();
-	        } catch (Throwable e) {
-	            IStatus status = null;
-	            if (e instanceof CoreException) {
-	                status = ((CoreException) e).getStatus();
-	            } else {
-	                status = StatusUtil
-	                        .newStatus(
-	                                IStatus.ERROR,
-	                                "Internal plug-in widget delegate error on dispose.", e); //$NON-NLS-1$
-	            }
-	            StatusUtil
-						.handleStatus(
-								status,
-								"widget delegate failed on dispose: id = " + proxy.getId(), StatusManager.LOG); //$NON-NLS-1$
-	        }
-		}
-
-		// Clear out the old list
-		contributedTrim.clear();
-		
-		// clean up the list of ContributionLists
-		for (Iterator iter = contributedLists.iterator(); iter.hasNext();) {
-			ContributionRoot list = (ContributionRoot) iter.next();
-			list.release();
-		}
-		
-		contributedLists.clear();
-	}
-	
-	/**
-	 * 
-	 */
-	public void dispose() {
-		teardown();
-	}
-
-	/**
-	 * @param knownIds
-	 */
-	public void updateLocations(List knownIds) {
-		// TODO Auto-generated method stub
-		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WidgetProxy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WidgetProxy.java
deleted file mode 100644
index 835d71b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WidgetProxy.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.menus.AbstractWorkbenchTrimWidget;
-import org.eclipse.ui.menus.IWorkbenchWidget;
-
-/**
- * <p>
- * A proxy for a widget that has been defined in XML. This delays the class
- * loading until the widget is really asked to fill a menu collection. Asking
- * the widget for anything will instantiate the class.
- * </p>
- * 
- * @since 3.2
- */
-final class WidgetProxy implements IWorkbenchWidget {
-
-	/**
-	 * Used to determine whether the load has been tried to 
-	 * prevent multiple retries at a failed load.
-	 */
-	private boolean firstLoad = true;
-	
-	/**
-	 * The configuration element from which the widget can be created. This
-	 * value will exist until the element is converted into a real class -- at
-	 * which point this value will be set to <code>null</code>.
-	 */
-	private IConfigurationElement configurationElement;
-
-	/**
-	 * The real widget. This value is <code>null</code> until the proxy is
-	 * forced to load the real widget. At this point, the configuration element
-	 * is converted, nulled out, and this widget gains a reference.
-	 */
-	private IWorkbenchWidget widget = null;
-
-	/**
-	 * The name of the configuration element attribute which contains the
-	 * information necessary to instantiate the real widget.
-	 */
-	private final String widgetAttributeName;
-
-	/**
-	 * Constructs a new instance of <code>WidgetProxy</code> with all the
-	 * information it needs to try to load the class at a later point in time.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the real class can be
-	 *            loaded at run-time; must not be <code>null</code>.
-	 * @param widgetAttributeName
-	 *            The name of the attibute or element containing the widget
-	 *            executable extension; must not be <code>null</code>.
-	 */
-	public WidgetProxy(final IConfigurationElement configurationElement,
-			final String widgetAttributeName) {
-		if (configurationElement == null) {
-			throw new NullPointerException(
-					"The configuration element backing a widget proxy cannot be null"); //$NON-NLS-1$
-		}
-
-		if (widgetAttributeName == null) {
-			throw new NullPointerException(
-					"The attribute containing the widget class must be known"); //$NON-NLS-1$
-		}
-
-		this.configurationElement = configurationElement;
-		this.widgetAttributeName = widgetAttributeName;
-	}
-
-	public final void dispose() {
-		if (loadWidget()) {
-			widget.dispose();
-		}
-	}
-
-	public final void fill(final Composite parent) {
-		if (loadWidget()) {
-			widget.fill(parent);
-		}
-	}
-
-	public final void fill(final CoolBar parent, final int index) {
-		if (loadWidget()) {
-			widget.fill(parent, index);
-		}
-	}
-
-	public final void fill(final Menu parent, final int index) {
-		if (loadWidget()) {
-			widget.fill(parent, index);
-		}
-	}
-
-	public final void fill(final ToolBar parent, final int index) {
-		if (loadWidget()) {
-			widget.fill(parent, index);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.menus.IWorkbenchWidget#init(org.eclipse.ui.IWorkbenchWindow)
-	 */
-	public void init(IWorkbenchWindow workbenchWindow) {
-		if (loadWidget()) {
-			widget.init(workbenchWindow);
-		}
-	}
-
-	/**
-	 * Convenience method that allows the trim layout manager to
-	 * inform widgets if they have changed locations. If the IWidget
-	 * implementation does not support the method then we default
-	 * to using the simpler <code>fill(final Composite parent)</code>.
-	 * 
-	 * @param parent The composite to create the controls in
-	 * @param oldSide The side the trim was previously displayed on
-	 * @param newSide The new side that the trim will be displayed on
-	 */
-	public final void fill(Composite parent, int oldSide, int newSide) {
-		if (loadWidget()) {
-			if (isMoveableTrimWidget()) {
-				((AbstractWorkbenchTrimWidget) widget).fill(parent, oldSide, newSide);
-			} else {
-				widget.fill(parent);
-			}
-		}
-	}
-
-	/**
-	 * Loads the widget, if possible. If the widget is loaded, then the member
-	 * variables are updated accordingly.
-	 * 
-	 * @return <code>true</code> if the widget is now non-null;
-	 *         <code>false</code> otherwise.
-	 */
-	private final boolean loadWidget() {
-		if (firstLoad) {
-			// Load the handler.
-			try {
-				widget = (IWorkbenchWidget) configurationElement
-						.createExecutableExtension(widgetAttributeName);
-				configurationElement = null;				
-			} catch (final ClassCastException e) {
-				final String message = "The proxied widget was the wrong class"; //$NON-NLS-1$
-				final IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-
-			} catch (final CoreException e) {
-				final String message = "The proxied widget for '" + configurationElement.getAttribute(widgetAttributeName) //$NON-NLS-1$
-						+ "' could not be loaded"; //$NON-NLS-1$
-				IStatus status = new Status(IStatus.ERROR,
-						WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-				WorkbenchPlugin.log(message, status);
-			}
-		}
-
-		// We're througth the first load
-		firstLoad = false;
-		
-		// the load only succeeded if there's a widget..
-		return widget != null;
-	}
-
-	/**
-	 * Determine if the widget knows how to respond to changes in the
-	 * workbench 'side' that it is being displayed on.
-	 * 
-	 * @return <code>true</code> iff the <code>IWidget</code> implementation
-	 * is actually based on <code>AbstractTrimWidget</code> 
-	 */
-	private final boolean isMoveableTrimWidget() {
-		if (loadWidget()) {
-			return widget instanceof AbstractWorkbenchTrimWidget;
-		}
-		
-		return false;
-	}
-	
-	public final String toString() {
-		if (widget == null) {
-			return configurationElement.getAttribute(widgetAttributeName);
-		}
-
-		return widget.toString();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
deleted file mode 100755
index 0b0da6c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
+++ /dev/null
@@ -1,1071 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.menus;
-
-import java.util.ArrayList;
-import java.util.Collection;
-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.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.AbstractGroupMarker;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.ToolBarContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.ActivityManagerEvent;
-import org.eclipse.ui.activities.IActivityManagerListener;
-import org.eclipse.ui.activities.IIdentifier;
-import org.eclipse.ui.activities.IIdentifierListener;
-import org.eclipse.ui.activities.IdentifierEvent;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.commands.CommandPersistence;
-import org.eclipse.ui.internal.commands.CommandService;
-import org.eclipse.ui.internal.expressions.AlwaysEnabledExpression;
-import org.eclipse.ui.internal.handlers.HandlerPersistence;
-import org.eclipse.ui.internal.handlers.HandlerProxy;
-import org.eclipse.ui.internal.handlers.HandlerService;
-import org.eclipse.ui.internal.keys.BindingPersistence;
-import org.eclipse.ui.internal.keys.BindingService;
-import org.eclipse.ui.internal.layout.LayoutUtil;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.menus.AbstractContributionFactory;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * <p>
- * Provides services related to contributing menu elements to the workbench.
- * </p>
- * <p>
- * This class is only intended for internal use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class WorkbenchMenuService extends InternalMenuService {
-
-	/**
-	 * A combined property and activity listener that updates the visibility of
-	 * contribution items in the new menu system.
-	 * 
-	 * @since 3.3
-	 */
-	private final class ContributionItemUpdater implements
-			IPropertyChangeListener, IIdentifierListener {
-
-		private final IContributionItem item;
-		private IIdentifier identifier;
-		private boolean lastExpressionResult = true;
-
-		private ContributionItemUpdater(IContributionItem item,
-				IIdentifier identifier) {
-			this.item = item;
-			if (identifier != null) {
-				this.identifier = identifier;
-				this.identifier.addIdentifierListener(this);
-				updateVisibility(); // force initial visibility to fall in line
-				// with activity enablement
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-		 */
-		public void propertyChange(PropertyChangeEvent event) {
-			if (event.getProperty() == PROP_VISIBLE) {
-				if (event.getNewValue() != null) {
-					this.lastExpressionResult = ((Boolean) event.getNewValue())
-							.booleanValue();
-				} else {
-					this.lastExpressionResult = false;
-				}
-				updateVisibility();
-			}
-		}
-
-		private void updateVisibility() {
-			boolean visible = identifier != null ? (identifier.isEnabled() && lastExpressionResult)
-					: lastExpressionResult;
-			item.setVisible(visible);
-
-			IContributionManager parent = null;
-			if (item instanceof ContributionItem) {
-				parent = ((ContributionItem) item).getParent();
-
-			} else if (item instanceof MenuManager) {
-				parent = ((MenuManager) item).getParent();
-			}
-			if (parent != null) {
-				parent.markDirty();
-				managersAwaitingUpdates.add(parent);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.activities.IIdentifierListener#identifierChanged(org.eclipse.ui.activities.IdentifierEvent)
-		 */
-		public void identifierChanged(IdentifierEvent identifierEvent) {
-			updateVisibility();
-		}
-
-		/**
-		 * Dispose of this updater
-		 */
-		public void dispose() {
-			if (identifier != null)
-				identifier.removeIdentifierListener(this);
-		}
-	}
-	
-	private final class ManagerPopulationRecord {
-		public IServiceLocator serviceLocatorToUse;
-		public Set restriction;
-		public String uri;
-		public boolean recurse;
-
-		Map factoryToItems = new HashMap();
-		
-		public ManagerPopulationRecord(IServiceLocator serviceLocatorToUse, Set restriction,
-				String uri, boolean recurse) {
-			this.serviceLocatorToUse = serviceLocatorToUse;
-			this.restriction = restriction;
-			this.uri = uri;
-			this.recurse = recurse;
-		}
-		
-		public void addFactoryContribution(AbstractContributionFactory factory, ContributionRoot ciList) {
-			// Remove any existing cache info for this factory
-			removeFactoryContribution(factory);
-			
-			// save the new info
-			factoryToItems.put(factory, ciList);
-		}
-		
-		public void removeFactoryContribution(AbstractContributionFactory factory) {			
-			ContributionRoot items =(ContributionRoot)factoryToItems.remove(factory);
-			if (items != null) {
-				WorkbenchMenuService.this.releaseContributions(items);
-			}
-		}
-		
-		public List getItemsForFactory(AbstractContributionFactory factory) {
-			ContributionRoot items =(ContributionRoot) factoryToItems.get(factory);
-			if (items == null)
-				return new ArrayList();
-			
-			return items.getItems();
-		}
-
-		/**
-		 * Removes all the cached info for the given manager.
-		 */
-		public void clearCaches() {
-			factoryToItems.clear();
-		}
-
-		/**
-		 * Delegates back to the workbench to remove -all- the contributions
-		 * associated with this contribution manager
-		 */
-		public void releaseContributions() {
-			Collection cRoots = factoryToItems.values();
-			for (Iterator crItem = cRoots.iterator(); crItem.hasNext();) {
-				ContributionRoot items = (ContributionRoot) crItem.next();
-				WorkbenchMenuService.this.releaseContributions(items);
-			}
-			
-			factoryToItems.clear();
-		}
-	}
-
-	/**
-	 * 
-	 */
-	private static final String PROP_VISIBLE = "visible"; //$NON-NLS-1$
-
-	/**
-	 * The class providing persistence for this service.
-	 */
-	private final MenuPersistence menuPersistence;
-
-	/**
-	 * The central authority for determining which menus are visible within this
-	 * window.
-	 */
-	private IEvaluationService evaluationService;
-
-	private IPropertyChangeListener serviceListener;
-
-	/**
-	 * The service locator into which this service will be inserted.
-	 */
-	private IServiceLocator serviceLocator;
-
-	private IActivityManagerListener activityManagerListener;
-
-	/**
-	 * Constructs a new instance of <code>MenuService</code> using a menu
-	 * manager.
-	 */
-	public WorkbenchMenuService(IServiceLocator serviceLocator) {
-		this.menuPersistence = new MenuPersistence(this);
-		this.serviceLocator = serviceLocator;
-		evaluationService = (IEvaluationService) serviceLocator
-				.getService(IEvaluationService.class);
-		evaluationService.addServiceListener(getServiceListener());
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) serviceLocator
-			.getService(IWorkbenchLocationService.class);
-		wls.getWorkbench()
-				.getActivitySupport().getActivityManager()
-				.addActivityManagerListener(getActivityManagerListener());
-		
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		registry.addRegistryChangeListener(new IRegistryChangeListener() {
-			public void registryChanged(final IRegistryChangeEvent event) {
-				PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
-					public void run() {
-						handleRegistryChanges(event);
-					}
-				});
-			}
-		});
-	}
-
-	/**
-	 * @return
-	 */
-	private IActivityManagerListener getActivityManagerListener() {
-		if (activityManagerListener == null) {
-			activityManagerListener = new IActivityManagerListener() {
-
-				public void activityManagerChanged(
-						ActivityManagerEvent activityManagerEvent) {
-					if (activityManagerEvent.haveEnabledActivityIdsChanged()) {
-						updateManagers(); // called after all identifiers have
-						// been update - now update the
-						// managers
-					}
-
-				}
-			};
-		}
-		return activityManagerListener;
-	}
-
-	/**
-	 * @return
-	 */
-	private IPropertyChangeListener getServiceListener() {
-		if (serviceListener == null) {
-			serviceListener = new IPropertyChangeListener() {
-				public void propertyChange(PropertyChangeEvent event) {
-					if (event.getProperty().equals(
-							IEvaluationService.PROP_NOTIFYING)) {
-						if (!((Boolean) event.getNewValue()).booleanValue()) {
-							// if it's false, the evaluation service has
-							// finished
-							// with its latest round of updates
-							updateManagers();
-						}
-					}
-				}
-			};
-		}
-		return serviceListener;
-	}
-
-	public void updateManagers() {
-		Object[] managers = managersAwaitingUpdates.toArray();
-		managersAwaitingUpdates.clear();
-		for (int i = 0; i < managers.length; i++) {
-			IContributionManager mgr = (IContributionManager) managers[i];
-			mgr.update(true);
-			if (mgr instanceof ToolBarManager) {
-				if (!updateCoolBar((ToolBarManager) mgr)) {
-					updateTrim((ToolBarManager) mgr);
-				}
-			} else if (mgr instanceof MenuManager) {
-				IContributionManager parent = ((MenuManager) mgr).getParent();
-				if (parent != null) {
-					parent.update(true);
-				}
-			}
-		}
-	}
-
-	private void updateTrim(ToolBarManager mgr) {
-		Control control = mgr.getControl();
-		if (control == null || control.isDisposed()) {
-			return;
-		}
-		LayoutUtil.resize(control);
-	}
-
-	private boolean updateCoolBar(ToolBarManager mgr) {
-		IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
-				.getWorkbenchWindows();
-		for (int i = 0; i < windows.length; i++) {
-			WorkbenchWindow window = (WorkbenchWindow) windows[i];
-			ICoolBarManager cb = window.getCoolBarManager2();
-			if (cb != null) {
-				IContributionItem[] items = cb.getItems();
-				for (int j = 0; j < items.length; j++) {
-					if (items[j] instanceof ToolBarContributionItem) {
-						IToolBarManager tbm = ((ToolBarContributionItem) items[j])
-								.getToolBarManager();
-						if (mgr == tbm) {
-							cb.update(true);
-							return true;
-						}
-					}
-				}
-			}
-		}
-		return false;
-	}
-
-	public final void addSourceProvider(final ISourceProvider provider) {
-		// no-op
-	}
-
-	public final void dispose() {
-		menuPersistence.dispose();
-		Iterator i = evaluationsByItem.values().iterator();
-		while (i.hasNext()) {
-			IEvaluationReference ref = (IEvaluationReference) i.next();
-			evaluationService.removeEvaluationListener(ref);
-		}
-		evaluationsByItem.clear();
-		
-		managersAwaitingUpdates.clear();
-		if (serviceListener != null) {
-			evaluationService.removeServiceListener(serviceListener);
-			serviceListener = null;
-		}
-	}
-
-	public final void readRegistry() {
-		menuPersistence.read();
-	}
-
-	public final void removeSourceProvider(final ISourceProvider provider) {
-		// no-op
-	}
-
-	//
-	// 3.3 common menu service information
-	//
-	private Map uriToFactories = new HashMap();
-
-	private Map evaluationsByItem = new HashMap();
-
-	private Map activityListenersByItem = new HashMap();
-
-	private Set managersAwaitingUpdates = new HashSet();
-
-	private HashMap populatedManagers = new HashMap();
-
-	/**
-	 * Construct an 'id' string from the given URI. The resulting 'id' is the
-	 * part of the URI not containing the query:
-	 * <p>
-	 * i.e. [menu | popup | toolbar]:id
-	 * </p>
-	 * 
-	 * @param uri
-	 *            The URI to construct the id from
-	 * @return The id
-	 */
-	private String getIdFromURI(MenuLocationURI uri) {
-		return uri.getScheme() + ":" + uri.getPath(); //$NON-NLS-1$;
-	}
-
-	public List getAdditionsForURI(MenuLocationURI uri) {
-		if (uri == null)
-			return null;
-
-		List caches = (List) uriToFactories.get(getIdFromURI(uri));
-
-		// we always return a list
-		if (caches == null) {
-			caches = new ArrayList();
-			uriToFactories.put(getIdFromURI(uri), caches);
-		}
-
-		return caches;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#addCacheForURI(org.eclipse.ui.internal.menus.MenuCacheEntry)
-	 */
-	public void addContributionFactory(AbstractContributionFactory factory) {
-		if (factory == null || factory.getLocation() == null)
-			return;
-
-		MenuLocationURI uri = new MenuLocationURI(factory.getLocation());
-		String factoryId = getIdFromURI(uri);
-		List factories = (List) uriToFactories.get(factoryId);
-
-		// we always return a list
-		if (factories == null) {
-			factories = new ArrayList();
-			uriToFactories.put(factoryId, factories);
-		}
-		if (factory instanceof MenuAdditionCacheEntry && ((MenuAdditionCacheEntry)factory).hasAdditions()) {
-			factories.add(0, factory);
-		} else {
-			factories.add(factory);
-		}
-		
-		// OK, now update any managers that use this uri
-		List factoryList = new ArrayList();
-		factoryList.add(factory);
-		List affectedManagers = getManagersFor(factoryId);
-		for (Iterator mgrIter = affectedManagers.iterator(); mgrIter.hasNext();) {
-			ContributionManager mgr = (ContributionManager) mgrIter.next();
-			ManagerPopulationRecord mpr = (ManagerPopulationRecord) populatedManagers.get(mgr);
-			addContributionsToManager(mpr.serviceLocatorToUse, 
-					mpr.restriction, mgr, mpr.uri, mpr.recurse, factoryList);
-			mgr.update(true);
-		}
-	}
-
-	/**
-	 * Return a list of managers that have already been populated and
-	 * whose URI matches the given one
-	 * @param factoryId The factoryId to check for
-	 * @return The list of interested managers
-	 */
-	private List getManagersFor(String factoryId) {
-		List mgrs = new ArrayList();
-		
-		for (Iterator mgrIter = populatedManagers.keySet().iterator(); mgrIter.hasNext();) {
-			ContributionManager mgr = (ContributionManager) mgrIter.next();
-			ManagerPopulationRecord mpr = (ManagerPopulationRecord) populatedManagers.get(mgr);
-			if (factoryId.equals(mpr.uri))
-				mgrs.add(mgr);
-		}
-		
-		return mgrs;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.menus.IMenuService#removeContributionFactory(org.eclipse.ui.menus.AbstractContributionFactory)
-	 */
-	public void removeContributionFactory(AbstractContributionFactory factory) {
-		if (factory == null || factory.getLocation() == null)
-			return;
-
-		MenuLocationURI uri = new MenuLocationURI(factory.getLocation());
-		String factoryId = getIdFromURI(uri);
-		List factories = (List) uriToFactories.get(factoryId);
-		if (factories != null) {
-			// Before we remove the top-level cache we recursively
-			// remove any sub-caches creates by this one
-			if (factory instanceof MenuAdditionCacheEntry) {
-				List subCaches = ((MenuAdditionCacheEntry)factory).getSubCaches();
-				if (subCaches != null) {
-					for (Iterator subCacheIter = subCaches.iterator(); subCacheIter
-							.hasNext();) {
-						MenuAdditionCacheEntry mace = (MenuAdditionCacheEntry) subCacheIter.next();
-						removeContributionFactory(mace);
-					}
-				}
-			}
-			factories.remove(factory);
-		}
-		
-		// OK, now update any managers that use this uri
-		List factoryList = new ArrayList();
-		factoryList.add(factory);
-		List affectedManagers = getManagersFor(factoryId);
-		for (Iterator mgrIter = affectedManagers.iterator(); mgrIter.hasNext();) {
-			ContributionManager mgr = (ContributionManager) mgrIter.next();
-			removeContributionsForFactory(mgr, factory);
-			mgr.update(true);
-		}
-	}
-
-	private boolean processAdditions(final IServiceLocator serviceLocatorToUse,
-			Set restriction, final ContributionManager mgr,
-			final AbstractContributionFactory cache, final Set itemsAdded) {
-		final int idx = getInsertionIndex(mgr, cache.getLocation());
-		if (idx == -1)
-			return false; // can't process (yet)
-
-		// Get the additions
-		final ContributionRoot ciList = new ContributionRoot(this, restriction,
-				mgr, cache);
-
-		ISafeRunnable run = new ISafeRunnable() {
-
-			public void handleException(Throwable exception) {
-				// TODO Auto-generated method stub
-
-			}
-
-			public void run() throws Exception {
-				int insertionIndex = idx;
-				cache.createContributionItems(serviceLocatorToUse, ciList);
-
-				// If we have any then add them at the correct location
-				if (ciList.getItems().size() > 0) {
-					// Cache the items for future cleanup
-					ManagerPopulationRecord mpr = (ManagerPopulationRecord) populatedManagers.get(mgr);
-					mpr.addFactoryContribution(cache, ciList);
-					
-					for (Iterator ciIter = ciList.getItems().iterator(); ciIter
-							.hasNext();) {
-						IContributionItem ici = (IContributionItem) ciIter
-								.next();
-						if ((ici instanceof ContributionManager || ici instanceof IToolBarContributionItem
-								|| ici instanceof AbstractGroupMarker)
-								&& ici.getId() != null
-								&& !"".equals(ici.getId())) { //$NON-NLS-1$
-							IContributionItem foundIci = mgr.find(ici.getId());
-							// really, this is a very specific scenario that
-							// allows merging
-							// but, if it is a contribution manager that also
-							// contains
-							// items, then we would be throwing stuff away.
-							if (foundIci instanceof ContributionManager) {
-								if (((ContributionManager) ici).getSize() > 0) {
-									IStatus status = new Status(
-											IStatus.WARNING,
-											WorkbenchPlugin.PI_WORKBENCH,
-											"Menu contribution id collision: " //$NON-NLS-1$
-													+ ici.getId());
-									StatusManager.getManager().handle(status);
-								}
-								continue;
-							} else if (foundIci instanceof IToolBarContributionItem) {
-								IToolBarManager toolBarManager = ((IToolBarContributionItem) ici)
-										.getToolBarManager();
-								if (toolBarManager instanceof ContributionManager
-										&& ((ContributionManager) toolBarManager)
-												.getSize() > 0) {
-									IStatus status = new Status(
-											IStatus.WARNING,
-											WorkbenchPlugin.PI_WORKBENCH,
-											"Toolbar contribution id collision: " //$NON-NLS-1$
-													+ ici.getId());
-									StatusManager.getManager().handle(status);
-								}
-								continue;
-							} else if (foundIci instanceof AbstractGroupMarker) {
-								continue;
-							}
-						}
-						final int oldSize = mgr.getSize();
-						mgr.insert(insertionIndex, ici);
-						if (ici.getId() != null) {
-							itemsAdded.add(ici.getId());
-						}
-						if (mgr.getSize() > oldSize)
-							insertionIndex++;
-					}
-				}
-			}
-		};
-		SafeRunner.run(run);
-
-		return true;
-	}
-
-	/**
-	 * Removes all cached info for the given manager/factory tuple. This
-	 * includes unregistering expressions...
-	 * 
-	 * @param manager The contribution manager owning the contributions
-	 * @param factory The factory responsible for the contributions
-	 */
-	protected void removeContributionsForFactory(IContributionManager manager, AbstractContributionFactory factory) {
-		ManagerPopulationRecord mpr = (ManagerPopulationRecord) populatedManagers.get(manager);
-		mpr.removeFactoryContribution(factory); // automatically cleans its caches
-	}
-
-	/**
-	 * @param items
-	 */
-	private void releaseCache(final ContributionRoot items) {
-		items.release();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#populateMenu(org.eclipse.jface.action.ContributionManager,
-	 *      org.eclipse.ui.internal.menus.MenuLocationURI)
-	 */
-	public void populateContributionManager(ContributionManager mgr, String uri) {
-		populateContributionManager(serviceLocator, null, mgr, uri, true);
-	}
-
-	public void populateContributionManager(
-			IServiceLocator serviceLocatorToUse, Set restriction,
-			ContributionManager mgr, String uri, boolean recurse) {		
-		// Track this attempt to populate the menu, remembering all the parameters
-		ManagerPopulationRecord mpr = (ManagerPopulationRecord) populatedManagers.get(mgr);
-		if (mpr == null) {
-			mpr = new ManagerPopulationRecord(serviceLocatorToUse, 
-					restriction, uri, recurse);
-			populatedManagers.put(mgr, mpr);
-		}
-		
-		MenuLocationURI contributionLocation = new MenuLocationURI(uri);
-		List factories = getAdditionsForURI(contributionLocation);
-		addContributionsToManager(serviceLocatorToUse, restriction, mgr, uri, recurse, factories);
-	}
-
-	public void addContributionsToManager(
-			IServiceLocator serviceLocatorToUse, Set restriction,
-			ContributionManager mgr, String uri, boolean recurse,
-			List factories) {
-		MenuLocationURI contributionLocation = new MenuLocationURI(uri);
-
-		List retryList = new ArrayList();
-		Set itemsAdded = new HashSet();
-		for (Iterator iterator = factories.iterator(); iterator.hasNext();) {
-			AbstractContributionFactory cache = (AbstractContributionFactory) iterator
-					.next();
-			if (!processAdditions(serviceLocatorToUse, restriction, mgr, cache,
-					itemsAdded)) {
-				retryList.add(cache);
-			}
-		}
-
-		// OK, iteratively loop through entries whose URI's could not
-		// be resolved until we either run out of entries or the list
-		// doesn't change size (indicating that the remaining entries
-		// can never be resolved).
-		boolean done = retryList.size() == 0;
-		while (!done) {
-			// Clone the retry list and clear it
-			List curRetry = new ArrayList(retryList);
-			int retryCount = retryList.size();
-			retryList.clear();
-
-			// Walk the current list seeing if any entries can now be resolved
-			for (Iterator iterator = curRetry.iterator(); iterator.hasNext();) {
-				AbstractContributionFactory cache = (AbstractContributionFactory) iterator
-						.next();
-				if (!processAdditions(serviceLocatorToUse, restriction, mgr,
-						cache, itemsAdded))
-					retryList.add(cache);
-			}
-
-			// We're done if the retryList is now empty (everything done) or
-			// if the list hasn't changed at all (no hope)
-			done = (retryList.size() == 0) || (retryList.size() == retryCount);
-		}
-
-		// Now, recurse through any sub-menus
-		IContributionItem[] curItems = mgr.getItems();
-		for (int i = 0; i < curItems.length; i++) {
-			if (curItems[i] instanceof ContributionManager) {
-				String id = curItems[i].getId();
-				if (id != null && id.length() > 0
-						&& (recurse || itemsAdded.contains(id))) {
-					populateContributionManager(serviceLocatorToUse,
-							restriction, (ContributionManager) curItems[i],
-							contributionLocation.getScheme() + ":" + id, true); //$NON-NLS-1$
-				}
-			} else if (curItems[i] instanceof IToolBarContributionItem) {
-				IToolBarContributionItem tbci = (IToolBarContributionItem) curItems[i];
-				if (tbci.getId() != null && tbci.getId().length() > 0
-						&& (recurse || itemsAdded.contains(tbci.getId()))) {
-					populateContributionManager(serviceLocatorToUse,
-							restriction, (ContributionManager) tbci
-									.getToolBarManager(), contributionLocation
-									.getScheme()
-									+ ":" + tbci.getId(), true); //$NON-NLS-1$
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param mgr
-	 * @param uri
-	 * @return
-	 */
-	private int getInsertionIndex(ContributionManager mgr, String location) {
-		MenuLocationURI uri = new MenuLocationURI(location);
-		String query = uri.getQuery();
-
-		int additionsIndex = -1;
-
-		// No Query means 'after=additions' (if ther) or
-		// the end of the menu
-		if (query.length() == 0 || query.equals("after=additions")) { //$NON-NLS-1$
-			additionsIndex = mgr.indexOf("additions"); //$NON-NLS-1$
-			if (additionsIndex == -1)
-				additionsIndex = mgr.getItems().length;
-			else
-				++additionsIndex;
-		} else {
-			// Should be in the form "[before|after]=id"
-			String[] queryParts = Util.split(query, '=');
-			if (queryParts[1].length() > 0) {
-				additionsIndex = mgr.indexOf(queryParts[1]);
-				if (additionsIndex != -1 && queryParts[0].equals("after")) //$NON-NLS-1$
-					additionsIndex++;
-			}
-		}
-
-		return additionsIndex;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#getCurrentState()
-	 */
-	public IEvaluationContext getCurrentState() {
-		return evaluationService.getCurrentState();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#registerVisibleWhen(org.eclipse.jface.action.IContributionItem,
-	 *      org.eclipse.core.expressions.Expression)
-	 */
-	public void registerVisibleWhen(final IContributionItem item,
-			final Expression visibleWhen, final Set restriction,
-			String identifierID) {
-		if (item == null) {
-			throw new IllegalArgumentException("item cannot be null"); //$NON-NLS-1$
-		}
-		if (visibleWhen == null) {
-			throw new IllegalArgumentException(
-					"visibleWhen expression cannot be null"); //$NON-NLS-1$
-		}
-		if (evaluationsByItem.get(item) != null) {
-			final String id = item.getId();
-			WorkbenchPlugin.log("item is already registered: " //$NON-NLS-1$
-					+ (id == null ? "no id" : id)); //$NON-NLS-1$
-			return;
-		}
-		IIdentifier identifier = null;
-		if (identifierID != null) {
-			identifier = PlatformUI.getWorkbench().getActivitySupport()
-					.getActivityManager().getIdentifier(identifierID);
-		}
-		ContributionItemUpdater listener = new ContributionItemUpdater(item,
-				identifier);
-
-		if (visibleWhen != AlwaysEnabledExpression.INSTANCE) {
-			IEvaluationReference ref = evaluationService.addEvaluationListener(
-					visibleWhen, listener, PROP_VISIBLE);
-			if (restriction != null) {
-				restriction.add(ref);
-			}
-			evaluationsByItem.put(item, ref);
-		}
-		activityListenersByItem.put(item, listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#unregisterVisibleWhen(org.eclipse.jface.action.IContributionItem)
-	 */
-	public void unregisterVisibleWhen(IContributionItem item, final Set restriction) {
-		ContributionItemUpdater identifierListener = (ContributionItemUpdater) activityListenersByItem
-				.remove(item);
-		if (identifierListener != null) {
-			identifierListener.dispose();
-		}
-
-		IEvaluationReference ref = (IEvaluationReference) evaluationsByItem
-				.remove(item);
-		if (ref == null) {
-			return;
-		}
-
-		evaluationService.removeEvaluationListener(ref);
-		if (restriction !=null) {
-			restriction.remove(ref);
-		}
-	}
-
-	/**
-	 * @param manager
-	 */
-	protected void releaseContributions(ContributionRoot items) {
-		ContributionManager mgr = items.getManager();
-		Iterator j = items.getItems().iterator();
-		while (j.hasNext()) {
-			IContributionItem item = (IContributionItem) j.next();
-			releaseItem(item, items.restriction);
-			mgr.remove(item);
-		}
-		releaseCache(items);
-		
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.menus.IMenuService#releaseMenu(org.eclipse.jface.action.ContributionManager)
-	 */
-	public void releaseContributions(ContributionManager mgr) {
-		// Recursive remove any contributions from sub-menus
-		IContributionItem[] items = mgr.getItems();
-		for (int i = 0; i < items.length; i++) {
-			if (items[i] instanceof ContributionManager) {
-				releaseContributions((ContributionManager) items[i]);
-			} else if (items[i] instanceof IToolBarContributionItem) {
-				IToolBarContributionItem tbci = (IToolBarContributionItem) items[i];
-				releaseContributions((ContributionManager) tbci
-						.getToolBarManager());
-			}
-		}
-		
-		// Now remove any cached information
-		ManagerPopulationRecord mpr = (ManagerPopulationRecord) populatedManagers.remove(mgr);
-		if (mpr != null)
-			mpr.releaseContributions();
-		managersAwaitingUpdates.remove(mgr);
-	}
-
-	/**
-	 * @param item
-	 */
-	private void releaseItem(IContributionItem item, final Set restriction) {
-		unregisterVisibleWhen(item, restriction);
-		if (item instanceof ContributionManager) {
-			releaseContributions((ContributionManager) item);
-		} else if (item instanceof IToolBarContributionItem) {
-			IToolBarContributionItem tbci = (IToolBarContributionItem) item;
-			releaseContributions((ContributionManager) tbci.getToolBarManager());
-		}
-	}
-
-	/**
-	 * Process additions to the menus that occur through ExtensionRegistry changes
-	 * @param menuAdditions The list of new menu addition extensions to process
-	 */
-	public void handleDynamicAdditions(List menuAdditions) {
-		for (Iterator additionsIter = menuAdditions.iterator(); additionsIter.hasNext();) {
-			IConfigurationElement menuAddition = (IConfigurationElement) additionsIter.next();
-			MenuAdditionCacheEntry newFactory = new MenuAdditionCacheEntry(this, menuAddition);
-			addContributionFactory(newFactory);
-		}
-	}
-
-	/**
-	 * Process additions to the menus that occur through ExtensionRegistry changes
-	 * @param menuRemovals The list of menu addition extensions to remove
-	 */
-	public void handleDynamicRemovals(List menuRemovals) {
-		for (Iterator additionsIter = menuRemovals.iterator(); additionsIter.hasNext();) {
-			IConfigurationElement ceToRemove = (IConfigurationElement) additionsIter.next();
-			MenuAdditionCacheEntry factoryToRemove = findFactory(ceToRemove);
-			removeContributionFactory(factoryToRemove);
-		}
-	}
-
-	/**
-	 * @param ceToRemove
-	 * @return
-	 */
-	private MenuAdditionCacheEntry findFactory(IConfigurationElement ceToRemove) {
-		String uriStr = ceToRemove.getAttribute(IWorkbenchRegistryConstants.TAG_LOCATION_URI);
-		MenuLocationURI uri = new MenuLocationURI(uriStr);
-		List factories = getAdditionsForURI(uri);
-		for (Iterator iterator = factories.iterator(); iterator.hasNext();) {
-			AbstractContributionFactory factory = (AbstractContributionFactory) iterator.next();
-			if (factory instanceof MenuAdditionCacheEntry) {
-				MenuAdditionCacheEntry mace = (MenuAdditionCacheEntry) factory;
-				if (mace.getConfigElement().equals(ceToRemove))
-					return mace;
-			}
-		}
-		return null;
-	}
-
-	private void handleMenuChanges(IRegistryChangeEvent event) {
-		final IExtensionDelta[] menuDeltas = event.getExtensionDeltas(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_MENUS);
-		final List menuAdditions = new ArrayList();
-		final List menuRemovals = new ArrayList();
-		for (int i = 0; i < menuDeltas.length; i++) {
-			IConfigurationElement[] ices = menuDeltas[i].getExtension().getConfigurationElements();
-			
-			for (int j = 0; j < ices.length; j++) {
-				if (IWorkbenchRegistryConstants.PL_MENU_CONTRIBUTION.equals(ices[j].getName())) {
-					if (menuDeltas[i].getKind() == IExtensionDelta.ADDED)
-						menuAdditions.add(ices[j]);
-					else
-						menuRemovals.add(ices[j]);
-				}
-			}
-		}			
-
-		// Handle additions
-		if (menuAdditions.size() > 0) {
-			PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-				public void run() {
-					handleDynamicAdditions(menuAdditions);
-				}							
-			});
-		}
-		
-		// Handle Removals
-		if (menuRemovals.size() > 0) {
-			PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-				public void run() {
-					handleDynamicRemovals(menuRemovals);
-				}							
-			});
-		}
-	}
-	
-	/**
-	 * @param event
-	 */
-	public void handleRegistryChanges(final IRegistryChangeEvent event) {
-		// HACK!! determine if this is an addition or deletion from the first delta
-		IExtensionDelta[] deltas = event.getExtensionDeltas();
-		if (deltas.length == 0)
-			return;
-		boolean isAddition = deltas[0].getKind() == IExtensionDelta.ADDED;
-
-		// access all the necessary service persistence handlers
-		HandlerService handlerSvc = (HandlerService) serviceLocator.getService(IHandlerService.class);
-		HandlerPersistence handlerPersistence = handlerSvc.getHandlerPersistence();
-		
-		CommandService cmdSvc = (CommandService) serviceLocator.getService(ICommandService.class);
-		CommandPersistence cmdPersistence = cmdSvc.getCommandPersistence();
-		
-		BindingService bindingSvc = (BindingService) serviceLocator.getService(IBindingService.class);
-		BindingPersistence bindingPersistence = bindingSvc.getBindingPersistence();
-
-		boolean needsUpdate = false;
-		
-		// determine order from the type of delta
-		if (isAddition) {
-			// additions order: Commands, Handlers, Bindings, Menus
-			if (cmdPersistence.commandsNeedUpdating(event)) {
-				cmdPersistence.reRead();
-				needsUpdate = true;
-			}
-			if (handlerPersistence.handlersNeedUpdating(event)) {
-				handlerPersistence.reRead();
-				needsUpdate = true;
-			}
-			if (bindingPersistence.bindingsNeedUpdating(event)) {
-				bindingPersistence.reRead();
-				needsUpdate = true;
-			}
-			if (menuPersistence.menusNeedUpdating(event)) {
-				handleMenuChanges(event);
-				needsUpdate = true;
-			}
-		}
-		else {
-			// Removal order: Menus, Bindings, Handlers, Commands
-			if (menuPersistence.menusNeedUpdating(event)) {
-				handleMenuChanges(event);
-				needsUpdate = true;
-			}
-			if (bindingPersistence.bindingsNeedUpdating(event)) {
-				bindingPersistence.reRead();
-				needsUpdate = true;
-			}
-			if (handlerPersistence.handlersNeedUpdating(event)) {
-				final IExtensionDelta[] handlerDeltas = event.getExtensionDeltas(
-						PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_HANDLERS);
-				for (int i = 0; i < handlerDeltas.length; i++) {
-					IConfigurationElement[] ices = handlerDeltas[i].getExtension().getConfigurationElements();
-					HandlerProxy.updateStaleCEs(ices);
-				}
-				
-				handlerPersistence.reRead();
-				needsUpdate = true;
-			}
-			if (cmdPersistence.commandsNeedUpdating(event)) {
-				cmdPersistence.reRead();
-				needsUpdate = true;
-			}
-		}
-		
-		if (needsUpdate) {
-			for (Iterator mgrIter = populatedManagers.keySet().iterator(); mgrIter.hasNext();) {
-				ContributionManager mgr = (ContributionManager) mgrIter.next();
-				mgr.update(true);
-			}
-		}
-	}
-
-	/**
-	 * @return Returns the menuPersistence.
-	 */
-	public MenuPersistence getMenuPersistence() {
-		return menuPersistence;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.menus.InternalMenuService#populateContributionManager(org.eclipse.jface.action.ContributionManager, java.lang.String, boolean)
-	 */
-	public void populateContributionManager(ContributionManager mgr,
-			String uri, boolean recurse) {
-		populateContributionManager(serviceLocator, null, mgr, uri, recurse);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
deleted file mode 100644
index 504bef2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
+++ /dev/null
@@ -1,1075 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-#     Sebastian Davids (sdavids@gmx.de) 
-#        - Fix for Bug 57087
-#        - Fix for Bug 138034 [Preferences] Label decorations page - extra space
-#        - Fix for Bug 128529
-###############################################################################
-
-# package: org.eclipse.ui
-
-PlatformUI_NoWorkbench = Workbench has not been created yet.
-
-Workbench_CreatingWorkbenchTwice = Workbench already exists and cannot be created again.
-
-# ==============================================================================
-# Workbench Actions
-# ==============================================================================
-
-# --- File Menu ---
-NewWizardAction_text = &Other...
-NewWizardAction_toolTip = New
-CloseAllAction_text = C&lose All
-CloseAllAction_toolTip = Close All
-CloseOthersAction_text = Close O&thers
-CloseOthersAction_toolTip = Close Others
-CloseAllSavedAction_text = Cl&ose All Saved
-CloseAllSavedAction_toolTip = Close All Saved
-CloseEditorAction_text = &Close
-CloseEditorAction_toolTip = Close
-NewEditorAction_text=New &Editor
-NewEditorAction_tooltip=New Editor
-SaveAction_text = &Save
-SaveAction_toolTip = Save
-SaveAs_text = Save &As...
-SaveAs_toolTip = Save As
-SaveAll_text = Sav&e All
-SaveAll_toolTip = Save All
-Workbench_revert = Rever&t
-Workbench_revertToolTip = Revert
-Workbench_move = Mo&ve...
-Workbench_moveToolTip = Move
-Workbench_rename = Rena&me...
-Workbench_renameToolTip = Rename
-Workbench_refresh = Re&fresh
-Workbench_refreshToolTip = Refresh
-Workbench_properties = P&roperties
-Workbench_propertiesToolTip = Properties
-Workbench_print = &Print...
-Workbench_printToolTip = Print
-ExportResourcesAction_text = E&xport...
-ExportResourcesAction_fileMenuText = Exp&ort...
-ExportResourcesAction_toolTip = Export
-ImportResourcesAction_text = &Import...
-ImportResourcesAction_toolTip = Import
-OpenRecent_errorTitle = Problems opening editor
-OpenRecent_unableToOpen = Unable to open ''{0}''.
-Exit_text = E&xit
-Exit_toolTip = Exit Workbench
-
-
-# --- Edit Menu ---
-Workbench_undo = &Undo
-Workbench_undoToolTip = Undo
-Workbench_redo = &Redo
-Workbench_redoToolTip = Redo
-Workbench_cut = Cu&t
-Workbench_cutToolTip = Cut
-Workbench_copy = &Copy
-Workbench_copyToolTip = Copy
-Workbench_paste = &Paste
-Workbench_pasteToolTip = Paste
-Workbench_delete = &Delete
-Workbench_deleteToolTip = Delete
-Workbench_selectAll = Select &All
-Workbench_selectAllToolTip = Select All
-Workbench_findReplace = &Find/Replace...
-Workbench_findReplaceToolTip = Find/Replace
-
-# --- Navigate Menu ---
-Workbench_goInto = Go &Into
-Workbench_goIntoToolTip = Go Into
-Workbench_back = &Back
-Workbench_backToolTip = Back
-Workbench_forward = &Forward
-Workbench_forwardToolTip = Forward
-Workbench_up = &Up One Level
-Workbench_upToolTip = Up
-Workbench_next = Ne&xt
-Workbench_nextToolTip = Next
-Workbench_previous = Pre&vious
-Workbench_previousToolTip = Previous
-
-NavigationHistoryAction_forward_text=&Forward
-NavigationHistoryAction_forward_toolTip=Forward
-NavigationHistoryAction_backward_text=&Back
-NavigationHistoryAction_backward_toolTip=Back
-NavigationHistoryAction_forward_toolTipName=Forward to {0}
-NavigationHistoryAction_backward_toolTipName=Back to {0}
-NavigationHistoryAction_locations = {0} ({1} locations)
-
-Workbench_showInNoTargets = <No Applicable Views>
-Workbench_showInNoPerspectives = <No Applicable Perspectives>
-Workbench_noApplicableItems = <No Applicable Items>
-
-OpenPreferences_text = &Preferences
-OpenPreferences_toolTip = Preferences
-
-# --- Window Menu ---
-PerspectiveMenu_otherItem = &Other...
-SelectPerspective_shellTitle = Open Perspective
-Workbench_showPerspectiveError = Problems opening perspective ''{0}''
-ChangeToPerspectiveMenu_errorTitle = Problems Changing Perspective
-
-ShowView_title = &Other...
-ShowView_shellTitle = Show View
-ShowView_errorTitle = Problems Showing View
-ShowView_selectViewHelp = Use F2 to display the description for a selected view.
-ShowView_noDesc = No description available.
-
-ToggleEditor_hideEditors = Hide &Editors
-ToggleEditor_showEditors = Show &Editors
-ToggleEditor_toolTip = Hide/Show Editors
-
-LockToolBarAction_text = Lock the &Toolbars
-LockToolBarAction_toolTip = Lock the Toolbars
-
-EditActionSetsAction_text = Customi&ze Perspective...
-EditActionSetsAction_toolTip = Customize Perspective
-ActionSetSelection_customize = Customize Perspective - {0}
-ActionSetDialogInput_viewCategory = Show View
-ActionSetDialogInput_perspectiveCategory = Open Perspective
-ActionSetDialogInput_wizardCategory = New
-
-ActionSetSelection_menuTab = Shortcuts
-ActionSetSelection_actionSetsTab = Commands
-ActionSetSelection_selectActionSetsLabel = Select the command groups that you want to see added to the current perspective ({0}).  The details field identifies which menu items and/or toolbar items are added to the perspective by the selected command group.
-ActionSetSelection_selectActionSetsHelp = Use F2 to display the description for a selected command item.
-ActionSetSelection_availableActionSets = Available &command groups:
-ActionSetSelection_menubarActions = &Menubar details:
-ActionSetSelection_toolbarActions = &Toolbar details:
-ActionSetSelection_selectMenusLabel = Select the shortcuts that you want to see added as cascade items to the following submenus.  The selections made will only affect the current perspective ({0}).
-ActionSetSelection_availableMenus = &Submenus:
-ActionSetSelection_availableCategories = Shortcut &Categories:
-ActionSetSelection_menuItems = S&hortcuts:
-ActionSetSelection_descriptionColumnHeader = Description
-ActionSetSelection_menuColumnHeader = Shortcut
-ActionSetSelection_toolbarLocation = {0} toolbar
-ActionSetSelection_menubarLocation = {0} menu
-ActionSetSelection_noDesc = No description available.
-
-SavePerspective_text = Save Perspective &As...
-SavePerspective_toolTip = Save Perspective As
-SavePerspective_shellTitle = Save Perspective As...
-SavePerspectiveDialog_description = Enter or select a name to save the current\nperspective as.
-SavePerspective_name = &Name:
-SavePerspective_existing = &Existing Perspectives:
-SavePerspective_overwriteTitle = Overwrite Perspective
-SavePerspective_overwriteQuestion = A perspective with the name ''{0}'' already exists. Do you want to overwrite?
-SavePerspective_singletonQuestion = The current perspective can only be opened once and cannot be saved using a new name. Do you want to overwrite?
-SavePerspective_errorTitle = Cannot Save Perspective
-SavePerspective_errorMessage = Invalid Perspective Descriptor
-
-ResetPerspective_text = &Reset Perspective...
-ResetPerspective_toolTip = Reset Perspective
-ResetPerspective_message = Do you want to reset the current {0} perspective to its defaults?
-ResetPerspective_title = Reset Perspective
-RevertPerspective_note=Reset takes effect the next time the perspective is opened
-
-ClosePerspectiveAction_text = &Close Perspective
-ClosePerspectiveAction_toolTip = Close Perspective
-CloseAllPerspectivesAction_text = Close A&ll Perspectives
-CloseAllPerspectivesAction_toolTip = Close All Perspectives
-
-OpenInNewWindowAction_text = Open in &New Window
-OpenInNewWindowAction_toolTip = Open in New Window
-OpenInNewWindowAction_errorTitle = Problems Opening New Window
-CycleEditorAction_next_text = Next &Editor
-CycleEditorAction_next_toolTip = Next Editor
-CycleEditorAction_prev_text = P&revious Editor
-CycleEditorAction_prev_toolTip = Previous Editor
-CycleEditorAction_header=Editors
-CyclePartAction_next_text = Next &View
-CyclePartAction_next_toolTip = Next View
-CyclePartAction_prev_text = Previ&ous View
-CyclePartAction_prev_toolTip = Previous View
-CyclePartAction_header = Views
-CyclePartAction_editor = Editor
-CyclePerspectiveAction_next_text = Next &Perspective
-CyclePerspectiveAction_next_toolTip = Next Perspective
-CyclePerspectiveAction_prev_text = Previo&us Perspective
-CyclePerspectiveAction_prev_toolTip = Previous Perspective
-CyclePerspectiveAction_header=Perspectives
-ActivateEditorAction_text = &Activate Editor
-ActivateEditorAction_toolTip = Activate Editor
-MaximizePartAction_text = Ma&ximize Active View or Editor
-MaximizePartAction_toolTip = Toggles Maximize/Restore State of Active View or Editor
-MinimizePartAction_text = Mi&nimize Active View or Editor
-MinimizePartAction_toolTip = Minimizes the Active View or Editor
-
-
-
-# --- Help Menu ---
-AboutAction_text = &About {0}
-AboutAction_toolTip = About {0}
-HelpContentsAction_text = &Help Contents
-HelpContentsAction_toolTip= Help Contents
-HelpSearchAction_text = S&earch
-HelpSearchAction_toolTip= Search Help
-DynamicHelpAction_text = &Dynamic Help
-DynamicHelpAction_toolTip = Dynamic Help
-AboutDialog_shellTitle = About {0}
-AboutDialog_featureInfo = &Feature Details
-AboutDialog_pluginInfo = &Plug-in Details
-AboutDialog_systemInfo = &Configuration Details
-AboutDialog_defaultProductName =
-AboutDialog_concatenationOfProviderNameAndFeatureName = {0} - {1}
-ProductInfoDialog_errorTitle = Problems Opening Link
-ProductInfoDialog_unableToOpenWebBrowser = Unable to open web browser on {0}
-PreferencesExportDialog_ErrorDialogTitle=Error
-AboutPluginsDialog_shellTitle = About {0} Plug-ins
-AboutPluginsDialog_pluginName = Plug-in Name
-AboutPluginsDialog_pluginId = Plug-in Id
-AboutPluginsDialog_version = Version
-AboutPluginsDialog_provider = Provider
-AboutPluginsDialog_signed = Signed
-AboutPluginsDialog_state_installed = Installed
-AboutPluginsDialog_state_resolved = Resolved
-AboutPluginsDialog_state_starting = Starting
-AboutPluginsDialog_state_stopping = Stopping
-AboutPluginsDialog_state_uninstalled = Uninstalled
-AboutPluginsDialog_state_active = Active
-AboutPluginsDialog_state_unknown = Unknown State
-AboutPluginsDialog_moreInfo = &Legal Info
-AboutPluginsDialog_signingInfo_show = &Show Signing Info
-AboutPluginsDialog_signingInfo_hide = &Hide Signing Info
-AboutPluginsDialog_columns = &Columns...
-AboutPluginsDialog_errorTitle = Problems Opening File
-AboutPluginsDialog_unableToOpenFile = Unable to find file {0} in plug-in {1}.
-AboutFeaturesDialog_shellTitle = About {0} Features
-AboutFeaturesDialog_featureName = Feature Name
-AboutFeaturesDialog_featureId = Feature Id
-AboutFeaturesDialog_version = Version
-AboutFeaturesDialog_provider = Provider
-AboutFeaturesDialog_signed = Signed
-AboutFeaturesDialog_moreInfo = &License
-AboutFeaturesDialog_pluginsInfo = &Plug-in Details
-AboutFeaturesDialog_columns = &Columns...
-AboutFeaturesDialog_noInformation = No further information is available for this feature.
-AboutFeaturesDialog_pluginInfoTitle = Feature Plug-ins
-AboutFeaturesDialog_pluginInfoMessage = Plug-ins contributed by feature: {0}
-AboutFeaturesDialog_noInfoTitle = No Further Information
-AboutSystemDialog_browseErrorLogName = &View Error Log
-AboutSystemDialog_copyToClipboardName = Copy &to Clipboard
-AboutSystemDialog_noLogTitle = Error Log Not Found
-AboutSystemDialog_noLogMessage = The error log was not found at {0}.  No errors have been reported in this workspace.
-
-# --- Shortcutbar ---
-PerspectiveBarContributionItem_toolTip = {0} perspective
-PerspectiveBarNewContributionItem_toolTip = Open Perspective
-
-#--- Coolbar ---
-WorkbenchWindow_FileToolbar = File
-WorkbenchWindow_NavigateToolbar = Navigate
-WorkbenchWindow_searchCombo_toolTip = Enter help search expression and press Enter
-WorkbenchWindow_searchCombo_text = Search help
-
-
-WorkbenchWindow_close = &Close
-WorkbenchPage_PerspectiveFormat = {0} - {1}
-WorkbenchPage_ErrorCreatingPerspective = Unable to create perspective ''{0}''.  There is no corresponding perspective extension.
-WorkbenchPage_UndefinedPerspective = Perspective ID is undefined
-
-SelectWorkingSetAction_text= Select &Working Set...
-SelectWorkingSetAction_toolTip= Select a working set
-EditWorkingSetAction_text= &Edit Active Working Set...
-EditWorkingSetAction_toolTip= Edit the active working set
-EditWorkingSetAction_error_nowizard_title= Edit Working Set
-EditWorkingSetAction_error_nowizard_message= Can not edit the active working set.
-ClearWorkingSetAction_text= Deselect Wor&king Set
-ClearWorkingSetAction_toolTip= Deselect the active working set
-WindowWorkingSets= Window Working Sets
-NoWorkingSet = No Working Sets
-SelectedWorkingSets = Selected Working Sets
-NoApplicableWorkingSets = No applicable working sets
-
-# ==============================================================================
-# Drill Actions
-# ==============================================================================
-GoHome_text = Go &Home
-GoHome_toolTip = Home
-GoBack_text = Go &Back
-GoBack_toolTip = Back
-GoInto_text = Go &Into
-GoInto_toolTip = Go Into
-
-
-ICategory_other = Other
-
-# ==============================================================================
-# Wizards
-# ==============================================================================
-NewWizard_title = New
-NewWorkingSet=New Working Set
-NewWizardNewPage_description = The following resource creation wizards are available.
-NewWizardNewPage_wizardsLabel = &Wizards:
-NewWizardNewPage_showAll = &Show All Wizards.
-WizardList_description = The following wizards are available.
-Select = Select
-NewWizardSelectionPage_description = Select a wizard
-NewWizardShortcutAction_errorTitle = Problem Opening Wizard
-NewWizardShortcutAction_errorMessage = The selected wizard could not be started.
-
-NewWizardsRegistryReader_otherCategory = Other
-NewWizardDropDown_text = &New Wizards
-
-WorkbenchWizard_errorMessage = The selected wizard could not be started.
-WorkbenchWizard_errorTitle = Problem Opening Wizard
-WizardTransferPage_selectAll = &Select All
-WizardTransferPage_deselectAll = &Deselect All
-TypesFiltering_title = Select Types
-TypesFiltering_message = Reduce selection to only files of &type(s):
-TypesFiltering_otherExtensions = &Other extensions:
-TypesFiltering_typeDelimiter = ,
-
-# --- Import/Export ---
-ImportExportPage_chooseImportSource = Choose import source.
-ImportExportPage_chooseExportDestination = Choose export destination.
-
-# --- Import ---
-ImportWizard_title = Import
-ImportWizard_selectSource = &Select an import source:
-
-# --- Export ---
-ExportWizard_title = Export
-ExportWizard_selectDestination = &Select an export destination:
-# --- New Project ---
-NewProject_title = New Project
-
-# ==============================================================================
-# Preference Pages
-# ==============================================================================
-PreferenceNode_errorTitle = Preference Page Creation Problems
-PreferenceNode_errorMessage = Unable to create the selected preference page.
-PreferenceNode_NotFound = {0} not found
-Preference_note = Note:
-
-# --- Workbench ---
-WorkbenchPreference_showMultipleEditorTabsButton = Show &multiple editor tabs
-WorkbenchPreference_allowInplaceEditingButton = Allow in-place &system editors
-WorkbenchPreference_useIPersistableEditorButton = Restore &editor state on startup
-WorkbenchPreference_promptWhenStillOpenButton = Pr&ompt to save on close even if still open elsewhere
-WorkbenchPreference_showTextOnPerspectiveBar = S&how text on the perspective bar
-WorkbenchPreference_stickyCycleButton = Keep &next/previous editor, view and perspectives dialog open
-WorkbenchPreference_RunInBackgroundButton=Always r&un in background
-WorkbenchPreference_RunInBackgroundToolTip=Run long operations in the background where possible
-WorkbenchPreference_HeapStatusButton = Sho&w heap status
-WorkbenchPreference_HeapStatusButtonToolTip = Show the heap status area on the bottom of the window
-      
-
-# --- Appearance ---
-ViewsPreference_currentPresentation = Current &presentation:
-ViewsPreference_currentPresentationFormat = {0} (current)
-ViewsPreference_presentationConfirm_title = Confirm Presentation Change
-ViewsPreference_presentationConfirm_message =\
-Changing the presentation settings will require restarting the workbench to complete the change.  Restart now?
-ViewsPreference_presentationConfirm_yes = Yes
-ViewsPreference_presentationConfirm_no = No
-ViewsPreference_editors = Editor tab positions
-ViewsPreference_editors_top = &Top
-ViewsPreference_editors_bottom = &Bottom
-ViewsPreference_views = View tab positions
-ViewsPreference_views_top = T&op
-ViewsPreference_views_bottom = Botto&m
-ViewsPreference_perspectiveBar = Perspective switcher positions
-ViewsPreference_perspectiveBar_topRight = Top &Right
-ViewsPreference_perspectiveBar_topLeft = Top L&eft
-ViewsPreference_perspectiveBar_left = &Left
-ViewsPreference_traditionalTabs = &Show traditional style tabs
-ViewsPreference_currentTheme = &Current theme:
-ViewsPreference_currentThemeDescription = Descr&iption:
-ViewsPreference_override=O&verride presentation settings
-ViewsPreference_currentThemeFormat = {0} (current)
-ViewsPreference_enableAnimations = Enable a&nimations
-ViewsPreference_useColoredLabels = Enable colore&d labels
-ViewsPreference_restartRequestJobName = Restart Request
-
-# --- File Editors ---
-FileEditorPreference_fileTypes = File &types:
-FileEditorPreference_add = &Add...
-FileEditorPreference_remove = &Remove
-FileEditorPreference_associatedEditors = Associated &editors:
-FileEditorPreference_addEditor = A&dd...
-FileEditorPreference_removeEditor = Re&move
-FileEditorPreference_default = De&fault
-FileEditorPreference_existsTitle = File Type Exists
-FileEditorPreference_existsMessage = An entry already exists for that file type
-FileEditorPreference_defaultLabel = (default)
-FileEditorPreference_contentTypesRelatedLink = See <a>''{0}''</a> for content-type based file associations.
-FileEditorPreference_isLocked = {0} (locked by ''{1}'' content type)
-
-FileExtension_extensionEmptyMessage = The file extension cannot be empty
-FileExtension_fileNameInvalidMessage = The file name cannot include the wild card character (*) in the current location
-FilteredPreferenceDialog_PreferenceSaveFailed=Preferences save failed.
-FilteredPreferenceDialog_Resize = &Resize tree
-
-
-FileExtension_fileTypeMessage =  Enter file type to add: (*.doc or report.doc for example)
-FileExtension_fileTypeLabel = File &type:
-FileExtension_shellTitle = Add File Type
-FileExtension_dialogTitle = Define a New File Type
-
-Choose_the_editor_for_file = Choose the editor for files of type ({0})
-EditorSelection_chooseAnEditor = Choose an editor:
-EditorSelection_internal = &Internal editors
-EditorSelection_external = &External programs
-EditorSelection_browse = &Browse...
-EditorSelection_title = Editor Selection
-
-# --- Perspectives ---
-OpenPerspectiveMode_optionsTitle = Open a new perspective
-OpenPerspectiveMode_sameWindow = In the &same window
-OpenPerspectiveMode_newWindow = In a &new window
-
-OpenViewMode_title = Open a new view
-OpenViewMode_embed = &Within the perspective
-OpenViewMode_fast = As &fast view
-
-PerspectivesPreference_MakeDefault = Ma&ke Default
-PerspectivesPreference_MakeDefaultTip = Make the Current Selection the Default Perspective
-PerspectivesPreference_Reset = &Reset
-PerspectivesPreference_ResetTip = Reset the Current Selection to its Original Value
-PerspectivesPreference_Delete = D&elete
-PerspectivesPreference_DeleteTip = Delete a User Defined Perspective
-PerspectivesPreference_available = Available &perspectives:
-PerspectivesPreference_defaultLabel = {0} (default)
-PerspectivesPreference_perspectiveopen_title=Delete Perspective
-PerspectivesPreference_perspectiveopen_message=Are you sure you want to delete the ''{0}'' perspective? It has open instances.
-
-PerspectiveLabelProvider_unknown = Unknown Element Type
-
-OpenPerspectiveDialogAction_text=&Open Perspective...
-OpenPerspectiveDialogAction_tooltip=Open Perspective
-
-#---- General Preferences----
-PreferencePage_noDescription = (No description available)
-PreferencePageParameterValues_pageLabelSeparator = \ >\ 
-
-# --- Workbench -----
-WorkbenchPreference_openMode=Open mode
-WorkbenchPreference_doubleClick=D&ouble click
-WorkbenchPreference_singleClick=&Single click
-WorkbenchPreference_singleClick_SelectOnHover=Select on &hover
-WorkbenchPreference_singleClick_OpenAfterDelay=Open when using arrow &keys
-WorkbenchPreference_noEffectOnAllViews=This preference may not take effect on all views
-
-# --- Fonts ---
-FontsPreference_useSystemFont=&Use System Font
-
-# --- Decorators ---
-DecoratorsPreferencePage_description = Descriptio&n:
-DecoratorsPreferencePage_decoratorsLabel = Available &label decorations:
-DecoratorsPreferencePage_explanation = Label decorations show extra information about an item on its label or icon.\nSelect which additional decorations should be displayed.
-
-# --- Startup preferences ---
-StartupPreferencePage_label=&Plug-ins activated on startup:
-
-# ==============================================================================
-# Property Pages
-# ==============================================================================
-PropertyDialog_text = P&roperties
-PropertyDialog_toolTip = Open Properties Dialog
-PropertyDialog_messageTitle = Property Pages
-PropertyDialog_noPropertyMessage = No property pages for {0}.
-PropertyDialog_propertyMessage = Properties for {0}
-PropertyPageNode_errorTitle = Property Page Creation Problems
-PropertyPageNode_errorMessage = Unable to create the selected property page.
-
-SystemInPlaceDescription_name = &In-Place Editor
-SystemEditorDescription_name = &System Editor
-
-# ==============================================================================
-# Dialogs
-# ==============================================================================
-Error = Error
-Information = Information
-
-Workbench_NeedsClose_Title = Restart Needed
-Workbench_NeedsClose_Message = A required plug-in is no longer available and the Workbench needs to be restarted. You will be prompted to save if there is any unsaved work.
-
-ErrorPreferencePage_errorMessage = An error has occurred when creating this preference page.
-
-ListSelection_title = Selection Needed
-ListSelection_message = Select the items:
-
-SelectionDialog_selectLabel = &Select All
-SelectionDialog_deselectLabel = &Deselect All
-
-ElementTreeSelectionDialog_nothing_available=No entries available.
-
-CheckedTreeSelectionDialog_nothing_available=No entries available.
-CheckedTreeSelectionDialog_select_all=Select &All
-CheckedTreeSelectionDialog_deselect_all=&Deselect All
-
-# ==============================================================================
-# Editor Framework
-# ==============================================================================
-EditorManager_saveResourcesMessage = Select the &resources to save:
-EditorManager_saveResourcesOptionallyMessage = The following resources have been modified, but are still open elsewhere with identical changes. Closing will not lose those changes. Select the &resources to save now anyway:
-EditorManager_saveResourcesTitle = Save Resources
-EditorManager_exceptionRestoringEditor = Internal error activating an Editor.
-
-# The parameter {0} stands for the status message
-EditorManager_unableToCreateEditor = Could not open the editor: {0}
-
-EditorManager_systemEditorError = System editor can only open file base resources.
-EditorManager_invalidDescriptor = Invalid editor descriptor, id={0}.
-EditorManager_instantiationError = The editor class could not be instantiated. This usually indicates a missing no-arg constructor or that the editor's class name was mistyped in plugin.xml.
-EditorManager_errorInInit = An exception was thrown during initialization
-EditorManager_siteIncorrect = Editor initialization failed: {0}.  Site is incorrect.
-EditorManager_unknownEditorIDMessage = Unable to open editor, unknown editor ID: {0}
-EditorManager_errorOpeningExternalEditor = Unable to open external editor {0} ({1}).
-EditorManager_unableToOpenExternalEditor = Unable to open external editor for {0}.
-EditorManager_operationFailed = {0} Failed
-EditorManager_saveChangesQuestion = ''{0}'' has been modified. Save changes?
-EditorManager_saveChangesOptionallyQuestion = ''{0}'' has been modified, but is still open elsewhere with identical changes. Closing this will not lose those changes. Would you like to save now anyway?
-EditorManager_closeWithoutPromptingOption = Do not prompt to save on close when still open elsewhere
-EditorManager_no_in_place_support=Unable to restore in-place editor. In-place support is missing.
-EditorManager_no_input_factory_ID=No input factory ID found for editor id={0} name={1}
-EditorManager_bad_element_factory=Cannot instantiate input element factory {0} for editor id={1} name={2}
-EditorManager_openNewEditorLabel=&Open New Editor
-EditorManager_no_persisted_state=No saved state can be found for editor id={0} name={1}
-EditorManager_reuseEditorDialogTitle=Close Editor Automatically
-EditorManager_wrong_createElement_result=Factory {0} returned a result from createElement that is not an IEditorInput for editor id={1} name={2}
-EditorManager_create_element_returned_null=Factory {0} returned null from createElement for editor id={1} name={2}
-EditorManager_problemsRestoringEditors=Problems occurred restoring editors.
-EditorManager_missing_editor_descriptor=No editor descriptor for id {0}
-EditorManager_invalid_editor_descriptor=Invalid editor descriptor for id {0}
-EditorManager_problemsSavingEditors=Problems occurred saving editors.
-EditorManager_unableToSaveEditor=Unable to save editor: {0}.
-EditorManager_backgroundSaveJobName=Saving {0}
-
-EditorPane_pinEditor=&Pin Editor
-
-ExternalEditor_errorMessage = Error opening external editor ({0}).
-Save = Save
-Save_Resource = Save Resource
-Save_All = Save All
-
-
-# ==============================================================================
-# Perspective Framework
-# ==============================================================================
-OpenNewPageMenu_dialogTitle = Problems Opening Page
-OpenNewPageMenu_unknownPageInput = Unknown Page Input
-
-OpenNewWindowMenu_dialogTitle = Problems Opening Window
-OpenNewWindowMenu_unknownInput = Unknown Window Input
-
-OpenPerspectiveMenu_pageProblemsTitle = Problems Opening Perspective
-OpenPerspectiveMenu_errorUnknownInput = Unknown Perspective Input
-
-Perspective_oneError = An error has occurred while saving the workbench: See error log for more details.
-Perspective_multipleErrors = Errors have occurred while saving the workbench: See error log for more details.
-
-Perspective_problemRestoringTitle = Restoring Problems
-Perspective_errorReadingState = Unable to read workbench state.
-Perspective_problemLoadingTitle = Loading Problems
-Perspective_errorLoadingState = Unable to load perspective.
-WorkbenchPage_problemRestoringTitle = Restoring Problems
-WorkbenchPage_errorReadingState = Unable to read workbench state.
-
-Perspective_problemSavingTitle = Saving Problems
-Perspective_problemSavingMessage = Unable to store layout state.
-
-Perspective_unableToLoad = Unable to load perspective: {0}
-Perspective_couldNotFind = Could not find view: {0}
-
-# ==============================================================================
-# Views Framework
-# ==============================================================================
-Menu = Menu
-ViewMenu = View Menu
-
-StandardSystemToolbar_Minimize = Minimize
-StandardSystemToolbar_Maximize = Maximize
-StandardSystemToolbar_Restore = Restore
-
-EditorArea_Tooltip = Editor Area
-ViewPane_fastView = &Fast View
-ViewPane_minimizeView= Mi&nimize
-ViewPane_moveView=&View
-ViewPane_moveFolder=&Tab Group
-
-EditorPane_moveEditor=&Editor
-
-ViewLabel_unknown = Unknown
-
-# The parameter {0} stands for the status message
-ViewFactory_initException = Could not create the view: {0}
-ViewFactory_siteException = View initialization failed: {0}.  Site is incorrect.
-
-# The parameter {0} stands for the view ID 
-ViewFactory_couldNotCreate = Could not create view: {0}
-
-ViewFactory_noMultiple = View does not allow multiple instances: {0}
-ViewFactory_couldNotSave = Could not save view: {0}
-
-# ==============================================================================
-# Workbench
-# ==============================================================================
-WorkbenchPage_UnknownLabel = <Unknown Label>
-
-WorkbenchPage_editorAlreadyOpenedMsg = ''{0}'' is opened and has unsaved changes. Do you want to save it?
-
-# These four keys are marked as unused by the NLS search, but they are indirectly used
-# and should be removed.
-
-PartPane_sizeLeft=&Left
-PartPane_sizeRight=&Right
-PartPane_sizeTop=&Top
-PartPane_sizeBottom=&Bottom
-
-PartPane_detach = &Detached
-PartPane_restore = &Restore
-PartPane_move=&Move
-PartPane_size=&Size
-PartPane_maximize = Ma&ximize
-PartPane_close = &Close
-PartPane_closeOthers=Close &Others
-PartPane_closeAll=Close &All
-PartPane_newEditor=New &Editor
-
-PluginAction_operationNotAvailableMessage = The chosen operation is not currently available.
-PluginAction_disabledMessage = The chosen operation is not enabled.
-ActionDescriptor_invalidLabel = Unknown Label
-
-XMLMemento_parserConfigError = Internal XML parser configuration error.
-XMLMemento_ioError = Could not read content of XML file.
-XMLMemento_formatError = Could not parse content of XML file.
-XMLMemento_noElement = Could not find root element node of XML file.
-
-StatusUtil_errorOccurred = An unexpected exception was thrown.
-
-# --- Workbench Errors/Problems ---
-WorkbenchWindow_exceptionMessage = Abnormal Workbench Condition
-WorkbenchPage_AbnormalWorkbenchCondition = Abnormal Workbench Condition
-WorkbenchPage_IllegalSecondaryId = Illegal secondary id (cannot be empty or contain a colon)
-WorkbenchPage_IllegalViewMode = Illegal view mode
-WorkbenchPart_AutoTitleFormat={0} ({1})
-EditorPart_AutoTitleFormat={0} - {1}
-Abnormal_Workbench_Conditi = Abnormal Workbench Condition
-AbstractWorkingSetManager_updatersActivating=Activating working set updaters for bundle {0}
-WorkbenchPage_ErrorActivatingView = An error has occurred when activating this view
-
-DecoratorManager_ErrorActivatingDecorator = An error has occurred activating decorator {0}.
-
-EditorRegistry_errorTitle = Load Problem
-EditorRegistry_errorMessage = Unable to load editor associations.
-
-ErrorClosing = An error has occurred when closing the workbench. See error log for more details.
-ErrorClosingNoArg = An error has occurred. See error log for more details. Do you want to exit?
-ErrorClosingOneArg = An error has occurred: {0}. See error log for more details. Do you want to exit?
-ErrorReadingState = Unable to read workbench state. Workbench UI layout will be reset.
-
-Invalid_workbench_state_ve = Invalid workbench state version. workbench.xml will be deleted
-Workbench_incompatibleUIState = Cannot Preserve Layout
-Workbench_incompatibleSavedStateVersion = \
-The saved user interface layout is in an obsolete format and cannot be preserved.\n\n\
-Your projects and files will not be affected.\n\n\
-Press OK to convert to the new format.\n\
-Press Cancel to exit with no changes.
-ProblemSavingState = Unable to store workbench state.
-SavingProblem = Saving Problems
-
-Problems_Opening_Page = Problems Opening Page
-Restoring_Problems = Restoring Problems
-
-Startup_Loading=Loading {0}
-Startup_Loading_Workbench=Loading Workbench
-Startup_Done=Done
-
-Workspace_problemsTitle = Problems
-
-Workbench_problemsRestoringMsg=Could not restore workbench layout.
-Workbench_problemsSavingMsg=Could not save workbench layout.
-Workbench_problemsRestoring=Problems occurred restoring workbench.
-Workbench_problemsSaving=Problems occurred saving workbench.
-WorkbenchWindow_problemsRestoringWindow=Problems occurred restoring window.
-WorkbenchWindow_problemsSavingWindow=Problems occurred saving window.
-RootLayoutContainer_problemsRestoringPerspective=Problems occurred restoring perspective.
-RootLayoutContainer_problemsSavingPerspective=Problems occurred saving perspective.
-ViewFactory_problemsSavingViews=Problems occurred saving views.
-
-Perspective_problemsRestoringPerspective=Problems occurred restoring perspective.
-Perspective_problemsSavingPerspective=Problems occurred saving perspective.
-Perspective_problemsRestoringViews=Problems occurred restoring views.
-WorkbenchWindow_unableToRestorePerspective=Unable to restore perspective: {0}.
-WorkbenchPage_unableToRestorePerspective=Unable to restore perspective: {0}.
-WorkbenchPage_unableToSavePerspective=Unable to save perspective: {0}.
-Perspective_unableToRestorePerspective=Unable to restore perspective: {0}.
-PageLayout_missingRefPart=Referenced part does not exist yet: {0}.
-PageLayout_duplicateRefPart=Part already exists in page layout: {0}.
-PartStack_incorrectPartInFolder=Incorrect part {0} contained in a part stack.
-
-
-# ==============================================================================
-# Keys used in the reuse editor which is released as experimental.
-# ==============================================================================
-PinEditorAction_text=Pin Editor
-PinEditorAction_toolTip=Pin Editor
-WorkbenchPreference_reuseEditors=&Close editors automatically
-WorkbenchPreference_reuseDirtyEditorGroupTitle=When all editors are dirty or pinned
-WorkbenchPreference_promptToReuseEditor=&Prompt to save and reuse
-WorkbenchPreference_openNewEditor=Open ne&w editor
-WorkbenchPreference_reuseEditorsThreshold=Number of opened editors before closi&ng:
-WorkbenchPreference_reuseEditorsThresholdError=The number of opened editors should be more than 0.
-WorkbenchPreference_recentFiles=Size of &recently opened files list:
-WorkbenchPreference_recentFilesError=The size of the recently opened files list should be between 0 and {0}.
-WorkbenchEditorsAction_label=S&witch to Editor...
-WorkbookEditorsAction_label=&Quick Switch Editor
-
-WorkbenchEditorsDialog_title=Switch to Editor
-WorkbenchEditorsDialog_label=Select an &editor to switch to:
-WorkbenchEditorsDialog_closeSelected=&Close Selected Editors
-WorkbenchEditorsDialog_saveSelected=&Save Selected Editors
-WorkbenchEditorsDialog_selectClean=Se&lect Clean Editors
-WorkbenchEditorsDialog_invertSelection=&Invert Selection
-WorkbenchEditorsDialog_allSelection=Select &All
-WorkbenchEditorsDialog_showAllPersp=Show editors from all &windows
-WorkbenchEditorsDialog_name=Name
-WorkbenchEditorsDialog_path=Path
-WorkbenchEditorsDialog_activate=Ac&tivate Selected Editor
-WorkbenchEditorsDialog_close=Close
-
-ShowPartPaneMenuAction_text=Show &System Menu
-ShowPartPaneMenuAction_toolTip=Show System Menu
-ShowViewMenuAction_text=Show View &Menu
-ShowViewMenuAction_toolTip=Show View Menu
-QuickAccessAction_text=&Quick Access
-QuickAccessAction_toolTip=Quick Access
-
-ToggleCoolbarVisibilityAction_show_text = Show &Toolbar
-ToggleCoolbarVisibilityAction_hide_text = Hide &Toolbar
-ToggleCoolbarVisibilityAction_toolTip = Toggle the visibility of the window toolbar and perspective switcher
-# ==============================================================================
-# Working Set Framework.
-# ==============================================================================
-ProblemSavingWorkingSetState_message = Unable to store working set state.
-ProblemSavingWorkingSetState_title = Saving Problems
-ProblemRestoringWorkingSetState_message = Unable to restore working set state.
-ProblemRestoringWorkingSetState_title = Restoring Problems
-
-WorkingSetEditWizard_title=Edit Working Set
-WorkingSetNewWizard_title=New Working Set
-
-WorkingSetTypePage_description=Select a working set type
-WorkingSetTypePage_typesLabel=&Working set type:
-
-WorkingSetSelectionDialog_title= Select Working Set
-WorkingSetSelectionDialog_title_multiSelect= Select Working Sets
-WorkingSetSelectionDialog_message= &Select a working set:
-WorkingSetSelectionDialog_message_multiSelect= &Select working sets:
-WorkingSetSelectionDialog_detailsButton_label= &Edit...
-WorkingSetSelectionDialog_newButton_label= &New...
-WorkingSetSelectionDialog_removeButton_label= &Remove
-
-WorkbenchPage_workingSet_default_label=Window Working Set
-WorkbenchPage_workingSet_multi_label=Multiple Working Sets
-
-# =================================================================
-# System Summary
-# =================================================================
-SystemSummary_title = Configuration Details
-SystemSummary_timeStamp= *** Date: {0}
-SystemSummary_systemProperties= *** System properties:
-SystemSummary_features= *** Features:
-SystemSummary_pluginRegistry= *** Plug-in Registry:
-SystemSummary_userPreferences= *** User Preferences:
-SystemSummary_sectionTitle = *** {0}:
-SystemSummary_sectionError = Could not write section, see error log.
-
-# paramter 0 is the feature name, parameter 1 is the version and parameter 2 is the Id
-SystemSummary_featureVersion= {0} ({1}) "{2}"
-SystemMenuMovePane_PaneName=&Pane
-
-# parameter 0 is the description name, parameter 1 is the version and parameter 2 is the Id
-SystemSummary_descriptorIdVersionState= {0} ({1}) "{2}" [{3}]
-
-# =================================================================
-# Editor List
-# =================================================================
-EditorList_saveSelected_text=&Save
-EditorList_saveSelected_toolTip=Save
-EditorList_closeSelected_text=&Close
-EditorList_closeSelected_toolTip=Close
-
-EditorList_selectClean_text=Select &Clean Editors
-EditorList_selectClean_toolTip=Select Clean Editors
-EditorList_invertSelection_text=&Invert Selection
-EditorList_invertSelection_toolTip=Invert Selection
-EditorList_selectAll_text=Select &All
-EditorList_selectAll_toolTip=Select All
-
-EditorList_FullName_text=Show Full &Name
-EditorList_FullName_toolTip=Show Full Name
-
-EditorList_SortBy_text=Sort &By
-EditorList_SortByName_text=&Name
-EditorList_SortByName_toolTip=Name
-EditorList_SortByMostRecentlyUsed_text=&Most Recently Used
-EditorList_SortByMostRecentlyUsed_toolTip=Most Recently Used
-
-EditorList_ApplyTo_text=Show Editors &From
-EditorList_DisplayAllWindows_text=&All Windows
-EditorList_DisplayAllWindows_toolTip=Show Editors from All Windows
-EditorList_DisplayAllPage_text=&Current Window
-EditorList_DisplayAllPage_toolTip=Show Editors in Current Window
-EditorList_DisplayTabGroup_text=&Tab Group
-EditorList_DisplayTabGroup_toolTip=Show Editors in Tab Group
-DecorationScheduler_UpdateJobName=Update for Decoration Completion
-DecorationScheduler_CalculationJobName=Decoration Calculation
-DecorationScheduler_UpdatingTask=Updating
-DecorationScheduler_CalculatingTask=Calculating Decorations
-DecorationScheduler_ClearResultsJob=Clear Results
-DecorationScheduler_DecoratingSubtask=Decorating {0}
-
-PerspectiveBar_showText=Show &Text
-PerspectiveBar_customize=Customi&ze...
-PerspectiveBar_saveAs= Save &As...
-PerspectiveBar_reset= &Reset
-
-PerspectiveSwitcher_dockOn=&Dock On
-PerspectiveSwitcher_topRight=Top Right
-PerspectiveSwitcher_topLeft=Top Left
-PerspectiveSwitcher_left=Left
-
-
-FastViewBar_view_orientation=&Orientation
-FastViewBar_horizontal=&Horizontal
-FastViewBar_vertical=&Vertical
-FastViewBar_show_view=&New Fast View
-FastViewBar_0=Show View as a fast view
-
-WorkbenchPlugin_extension=Cannot create extension
-
-EventLoopProgressMonitor_OpenDialogJobName=Open Blocked Dialog
-DecorationReference_EmptyReference=Decorating
-RectangleAnimation_Animating_Rectangle=Animating rectangle
-FilteredList_UpdateJobName=Table Update
-FilteredTree_ClearToolTip=Clear
-FilteredTree_FilterMessage=type filter text
-FilteredTree_FilteredDialogTitle={0} (Filtered)
-FilteredTree_AccessibleListenerFiltered={0} {1} matches.
-Workbench_restoreDisabled=This application does not save and restore previously saved state.
-Workbench_noStateToRestore=No previously saved state to restore.
-Workbench_noWindowsRestored=No windows restored.
-Workbench_startingPlugins = Starting plug-ins
-ScopedPreferenceStore_DefaultAddedError=Do not add the default to the search contexts
-
-WorkbenchEncoding_invalidCharset = {0} is not a valid charset.
-
-#==============================================================
-# Dynamic support
-
-Dynamic_resetPerspectiveMessage=Changes to installed plug-ins have affected this perspective.  Would you like to reset this perspective to accept these changes?
-Dynamic_resetPerspectiveTitle=Reset Perspective?
-
-#==============================================================
-# Undo/Redo Support
-
-################################################################################
-#Operations_undoCommand and Operations_redoCommand are
-#used to concatenate the Undo or Redo command with a specific 
-#operation name such as Delete Resources, Typing, Add Bookmark, etc.
-#to result in a string such as "Undo Typing".
-#The commmand should include the mnemonic character somewhere in the 
-#string.  {0} represents the operation to be undone or redone
-################################################################################
-Operations_undoCommand=&Undo {0}
-Operations_redoCommand=&Redo {0}
-
-################################################################################
-#Operations_undoTooltipCommand and Operations_redoTooltipCommand are
-#used to concatenate the Undo or Redo command with a specific 
-#operation name such as Delete Resources, Typing, Add Bookmark, etc.
-#to result in a string such as "Undo Typing".
-#The commmand should NOT include the mnemonic character.
-################################################################################
-Operations_undoTooltipCommand=Undo {0}
-Operations_redoTooltipCommand=Redo {0}
-
-################################################################################
-#Operations_undoRedoCommandDisabled is used when no undo or redo
-#operation is available.  {0} represents "Undo" or "Redo"
-################################################################################
-Operations_undoRedoCommandDisabled=Can''t {0}
-
-Operations_undoProblem=Undo Problem
-Operations_redoProblem=Redo Problem
-Operations_executeProblem=Problem Executing Operation
-Operations_undoInfo=Undo Information
-Operations_redoInfo=Redo Information
-Operations_executeInfo=Operation Information
-Operations_undoWarning=Undo Warning
-Operations_redoWarning=Redo Warning
-Operations_executeWarning=Operation Warning
-Operations_linearUndoViolation=There have been local changes in ''{0}'' since ''{1}'' was performed.  These changes must be undone before proceeding.  Proceed anyway?
-Operations_linearRedoViolation=Local changes in ''{0}'' have been undone since ''{1}'' was undone.  They must be redone before proceeding.  Continue with redoing ''{1}''?
-Operations_nonLocalUndoWarning=Undoing ''{0}'' affects elements outside of ''{1}''.  Continue with undoing ''{0}''?
-Operations_nonLocalRedoWarning=Redoing ''{0}'' affects elements outside of ''{1}''.  Continue with redoing ''{0}''?
-Operations_discardUndo=&Discard Undo
-Operations_discardRedo=&Discard Redo
-Operations_proceedWithNonOKUndoStatus={0}\nProceed with undoing ''{1}'' anyway?
-Operations_proceedWithNonOKRedoStatus={0}\nProceed with redoing ''{1}'' anyway?
-Operations_proceedWithNonOKExecuteStatus={0}\nProceed with executing ''{1}'' anyway?
-Operations_stoppedOnUndoErrorStatus=''{1}'' cannot be undone.  \nReason: {0}
-Operations_stoppedOnRedoErrorStatus=''{1}'' cannot be redone.  \nReason: {0}
-Operations_stoppedOnExecuteErrorStatus=''{1}'' cannot be performed.  \nReason: {0}
-#==============================================================
-# Heap Status 
-
-
-HeapStatus_status={0} of {1}
-HeapStatus_widthStr=MMMMMMMMMMMM
-HeapStatus_memoryToolTip= Heap size: {0} of total: {1} max: {2} mark: {3}
-HeapStatus_meg= {0}M
-HeapStatus_maxUnknown= <unknown>
-HeapStatus_noMark= <none>
-HeapStatus_buttonToolTip= Run Garbage Collector
-SetMarkAction_text=&Set Mark
-ClearMarkAction_text=&Clear Mark
-ShowMaxAction_text=Show &Max Heap
-#ShowKyrsoftViewAction_text=Show &Kyrsoft Memory Monitor View
-#ShowKyrsoftViewAction_KyrsoftNotInstalled=The Kyrsoft Memory Monitor plug-in is not installed.\n\
-#  For more info, visit:\n\
-#  http://www.kyrsoft.com/opentools/memmon.html\n\
-#  http://eclipse-plugins.2y.net/eclipse/plugin_details.jsp?id=205
-#ShowKyrsoftViewAction_OpenPerspectiveFirst=Please open a perspective first.
-#ShowKyrsoftViewAction_ErrorShowingKyrsoftView=Error showing Kyrsoft Memory Monitor view.
-
-#==============================================================
-# Content Types
-ContentTypes_lockedFormat = {0} (locked)
-ContentTypes_characterSetLabel = Default &encoding:
-ContentTypes_characterSetUpdateLabel = &Update
-ContentTypes_fileAssociationsLabel = &File associations:
-ContentTypes_fileAssociationsAddLabel = &Add...
-ContentTypes_fileAssociationsEditLabel = E&dit...
-ContentTypes_fileAssociationsRemoveLabel = &Remove
-ContentTypes_contentTypesLabel = &Content types:
-ContentTypes_errorDialogMessage = There was an error removing content type file association(s).
-ContentTypes_FileEditorsRelatedLink=See <a>''{0}''</a> for associating editors with file types.
-ContentTypes_addDialog_title=Add Content Type Association
-ContentTypes_addDialog_messageHeader=Define New Content Type Association
-ContentTypes_addDialog_message=Enter content type association to add: (*.doc or report.doc for example)
-ContentTypes_addDialog_label=&Content type:
-
-ContentTypes_editDialog_title=Edit Content Type Association
-ContentTypes_editDialog_messageHeader=Edit Content Type Association
-ContentTypes_editDialog_message=Edit content type association: (*.doc or report.doc for example)
-ContentTypes_editDialog_label=&Content type:
-
-
-
-# =========================================================================
-# Deprecated actions support
-# =========================================================================
-CommandService_AutogeneratedCategoryName = Uncategorized
-CommandService_AutogeneratedCategoryDescription = Commands that were either auto-generated or have no category
-LegacyActionPersistence_AutogeneratedCommandName = Legacy Action With No Label
-
-Edit=&Edit...
-
-#==============================================================
-# Trim Common UI
-
-# Menu strings
-TrimCommon_DockOn=&Dock On
-TrimCommon_Left=&Left
-TrimCommon_Right=&Right
-TrimCommon_Bottom=&Bottom
-TrimCommon_Top=&Top
-TrimCommon_Close=&Close
-
-# Trim Display Names
-TrimCommon_Main_TrimName=&Main Toolbar
-TrimCommon_PerspectiveSwitcher_TrimName=&Perspective Switcher
-TrimCommon_FastView_TrimName=&Fast View Bar
-TrimCommon_HeapStatus_TrimName=&Heap Status
-TrimCommon_IntroBar_TrimName=&Welcome
-TrimCommon_Progress_TrimName=&Progress
-TrimCommon_StatusLine_TrimName=&Status Line
-
-# FilteredItemsSelectionDialog
-FilteredItemsSelectionDialog_menu = Menu
-FilteredItemsSelectionDialog_refreshJob = Dialog refresh
-FilteredItemsSelectionDialog_progressRefreshJob = Progress message refresh
-FilteredItemsSelectionDialog_cacheRefreshJob = Cache refresh
-FilteredItemsSelectionDialog_cacheRefreshJob_checkDuplicates = Checking for duplicates
-FilteredItemsSelectionDialog_cacheRefreshJob_getFilteredElements = Get filtered elements
-FilteredItemsSelectionDialog_cacheSearchJob_taskName = Searching in cache
-FilteredItemsSelectionDialog_patternLabel = &Select an item to open (? = any character, * = any string):
-FilteredItemsSelectionDialog_listLabel = &Matching items:
-FilteredItemsSelectionDialog_searchJob_taskName = Searching
-FilteredItemsSelectionDialog_toggleStatusAction = &Show Status Line
-FilteredItemsSelectionDialog_removeItemsFromHistoryAction = &Remove from History
-FilteredItemsSelectionDialog_separatorLabel = Workspace matches
-FilteredItemsSelectionDialog_nItemsSelected = {0} items selected
-
-FilteredItemsSelectionDialog_jobLabel=Items filtering
-FilteredItemsSelectionDialog_jobError=Items filtering failed
-FilteredItemsSelectionDialog_jobCancel=Items filtering canceled
-
-FilteredItemsSelectionDialog_storeError=Storing the dialog failed
-FilteredItemsSelectionDialog_restoreError=Restoring the dialog failed
-
-FilteredItemsSelectionDialog_taskProgressMessage={0} ({1}%)
-FilteredItemsSelectionDialog_subtaskProgressMessage={0}: {1}
-
-#==============================================================
-# Content Assist
-
-# Content Assist cue strings
-ContentAssist_Cue_Description_Key=Content Assist Available ({0})
-
-#===============================================================
-WorkbenchLayoutSettings_Name=Workbench Layout;
-WorkbenchSettings_CouldNotCreateDirectories = Could not create workspace directories
-WorkbenchSettings_CouldNotFindLocation=Could not find workbench settings location
-WorkingSets_Name=Working Sets
-WorkingSets_CannotSave=Cannot save working sets
-BundleSigningTray_Signing_Date=Signing Date:
-BundleSigningTray_Working=Working...
-BundleSigningTray_Signing_Certificate=Signing Certificate:
-BundleSigningTray_Cant_Find_Service=Could not find certificate service.
-BundleSigningTray_Determine_Signer_For=Determine Signer for {0}
-BundleSigningTray_Unsigned=Unsigned
-BundleSigningTray_Unknown=Unknown
-BundleSigningTray_Unget_Signing_Service=Return Signing Service
-
-# StatusDialog
-WorkbenchStatusDialog_StatusLabel=Status:
-WorkbenchStatusDialog_NotAvailable=Not available.
-WorkbenchStatusDialog_TimestampNotAvailable=Not available
-WorkbenchStatusDialog_ExplanationLabel=Explanation:
-WorkbenchStatusDialog_ActionLabel=Action:
-WorkbenchStatusDialog_CopyThisReport=Copy this report
-WorkbenchStatusDialog_Support=Support
-WorkbenchStatusDialog_StatusWithChildren=This status has children statuses. See 'Details' for more information.
-WorkbenchStatusDialog_NoMessageAvailable=No message available
-WorkbenchStatusDialog_SeeDetails=See 'Details' for more information.
-WorkbenchStatusDialog_MultipleProblemsHaveOccured=Multiple problems have occurred
-WorkbenchStatusDialog_ProblemOccurred=A problem has occurred.
-WorkbenchStatusDialog_ProblemOccurredInJob=''{0}'' has encountered a problem.
-StackTraceSupportArea_CausedBy=Caused by:
-StackTraceSupportArea_NoStackTrace=No stack trace found
-StackTraceSupportArea_Title=Stacktrace:
-
-# WorkingSetConfigurationBlock
-WorkingSetConfigurationBlock_WorkingSetText_name=W&orking sets:
-WorkingSetConfigurationBlock_SelectWorkingSet_button=S&elect...
-
-WorkingSetPropertyPage_ReadOnlyWorkingSet_description=This is a read only working set. Its content can not be changed.
-WorkingSetPropertyPage_ReadOnlyWorkingSet_title=Read only Working Set
-
-WorkingSetGroup_EnableWorkingSet_button=Add projec&t to working sets
-WorkingSetGroup_WorkingSetSelection_message=The new project will be added to the selected working sets:
-WorkingSetGroup_WorkingSets_group=Working sets
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalEditor.java
deleted file mode 100644
index a0144e8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalEditor.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.program.Program;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.osgi.framework.Bundle;
-
-public class ExternalEditor {
-    private IPath filePath;
-
-    private EditorDescriptor descriptor;
-
-    /**
-     * Create an external editor.
-     */
-    public ExternalEditor(IPath newFilePath, EditorDescriptor editorDescriptor) {
-        this.filePath = newFilePath;
-        this.descriptor = editorDescriptor;
-    }
-
-    /**
-     * open the editor. If the descriptor has a program then use it - otherwise build its
-     * info from the descriptor.
-     * @exception	Throws a CoreException if the external editor could not be opened.
-     */
-    public void open() throws CoreException {
-
-        Program program = this.descriptor.getProgram();
-        if (program == null) {
-            openWithUserDefinedProgram();
-        } else {
-            String path = ""; //$NON-NLS-1$
-            if (filePath != null) {
-                path = filePath.toOSString();
-                if (program.execute(path)) {
-					return;
-				}
-            }
-            throw new CoreException(
-                    new Status(
-                            IStatus.ERROR,
-                            WorkbenchPlugin.PI_WORKBENCH,
-                            0,
-                            NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage, path), 
-                            null));
-        }
-    }
-
-    /**
-     * open the editor.
-     * @exception	Throws a CoreException if the external editor could not be opened.
-     */
-    public void openWithUserDefinedProgram() throws CoreException {
-        // We need to determine if the command refers to a program in the plugin
-        // install directory. Otherwise we assume the program is on the path.
-
-        String programFileName = null;
-        IConfigurationElement configurationElement = descriptor
-                .getConfigurationElement();
-
-        // Check if we have a config element (if we don't it is an
-        // external editor created on the resource associations page).
-        if (configurationElement != null) {
-            try {
-                Bundle bundle = Platform.getBundle(configurationElement
-                        .getNamespace());
-                // See if the program file is in the plugin directory
-                URL entry = bundle.getEntry(descriptor.getFileName());
-                if (entry != null) {
-                    // this will bring the file local if the plugin is on a server
-                    URL localName = Platform.asLocalURL(entry);
-                    File file = new File(localName.getFile());
-                    //Check that it exists before we assert it is valid
-                    if (file.exists()) {
-						programFileName = file.getAbsolutePath();
-					}
-                }
-            } catch (IOException e) {
-                // Program file is not in the plugin directory
-            }
-        }
-
-        if (programFileName == null) {
-			// Program file is not in the plugin directory therefore
-            // assume it is on the path
-            programFileName = descriptor.getFileName();
-		}
-
-        // Get the full path of the file to open
-        if (filePath == null) {
-            throw new CoreException(
-                    new Status(
-                            IStatus.ERROR,
-                            WorkbenchPlugin.PI_WORKBENCH,
-                            0,
-                            NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage,programFileName), 
-                            null));
-        }
-        String path = filePath.toOSString();
-
-        // Open the file
-
-        // ShellCommand was removed in response to PR 23888.  If an exception was 
-        // thrown, it was not caught in time, and no feedback was given to user
-
-        try {
-            Runtime.getRuntime().exec(new String[] { programFileName, path });
-        } catch (Exception e) {
-            throw new CoreException(
-                    new Status(
-                            IStatus.ERROR,
-                            WorkbenchPlugin.PI_WORKBENCH,
-                            0,
-                            NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage,programFileName),
-                            e));
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java
deleted file mode 100644
index 534e86c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ExternalProgramImageDescriptor.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.program.Program;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * The external program image descriptor is the descriptor used to
- * handle images that are from a Program.
- */
-public class ExternalProgramImageDescriptor extends ImageDescriptor {
-
-    public Program program;
-
-    /**
-     * Creates a new ImageDescriptor. The image is loaded 
-     * from a file with the given name <code>name</code>.
-     */
-    public ExternalProgramImageDescriptor(Program program) {
-        this.program = program;
-    }
-
-    /**
-     * @see Object#equals
-     */
-    public boolean equals(Object o) {
-        if (!(o instanceof ExternalProgramImageDescriptor)) {
-            return false;
-        }
-        ExternalProgramImageDescriptor other = (ExternalProgramImageDescriptor) o;
-
-        //See if there is a name - compare it if so and compare the programs if not
-        String otherName = other.program.getName();
-        if (otherName == null) {
-			return other.program.equals(program);
-		} else {
-            return otherName.equals(program.getName());
-        }
-    }
-
-    /**
-     * Returns an SWT Image that is described by the information
-     * in this descriptor.  Each call returns a new Image.
-     */
-    public Image getImage() {
-        return createImage();
-    }
-
-    /**
-     * Returns an SWT Image that is described by the information
-     * in this descriptor.  Each call returns a new Image.
-     */
-    public ImageData getImageData() {
-        ImageData data = null;
-        ImageData defaultImage = WorkbenchImages.getImageDescriptor(
-                ISharedImages.IMG_OBJ_FILE).getImageData();
-        if (defaultImage == null) {
-			return null;
-		}
-
-        if (program == null || ((data = program.getImageData()) == null)) {
-			return defaultImage;
-		}
-
-        //The images in GNOME are too big. Scaling them does not give nice result so return defaultImage;
-        if (data.height > defaultImage.height
-                || data.width > defaultImage.width) {
-			return defaultImage;
-		}
-
-        return data;
-    }
-
-    /**
-     * @see Object#hashCode
-     */
-    public int hashCode() {
-        String programName = program.getName();
-        if (programName == null) {
-			return program.hashCode();
-		} else {
-			return programName.hashCode();
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/Policy.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/Policy.java
deleted file mode 100644
index 7bc745b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/Policy.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * A common facility for parsing the <code>org.eclipse.ui/.options</code>
- * file.
- * 
- * @since 2.1
- */
-public class Policy {
-    public static boolean DEFAULT = false;
-
-    public static boolean DEBUG_SWT_GRAPHICS = DEFAULT;
-
-    public static boolean DEBUG_SWT_DEBUG = DEFAULT;
-    
-    public static boolean DEBUG_SWT_DEBUG_GLOBAL = DEFAULT;
-
-    public static boolean DEBUG_DRAG_DROP = DEFAULT;
-
-    /**
-     * Flag to log stale jobs
-     */
-    public static boolean DEBUG_STALE_JOBS = DEFAULT;
-
-    /**
-	 * Whether to report all events entering through the common event framework
-	 * used by the commands architecture.
-	 * 
-	 * @see ISourceProvider
-	 * @since 3.2
-	 */
-    public static boolean DEBUG_SOURCES = DEFAULT;
-
-    /**
-     * Whether to print information about key bindings that are successfully
-     * recognized within the system (as the keys are pressed).
-     */
-    public static boolean DEBUG_KEY_BINDINGS = DEFAULT;
-
-    /**
-     * Whether to print information about every key seen by the system.
-     */
-    public static boolean DEBUG_KEY_BINDINGS_VERBOSE = DEFAULT;
-
-    /**
-     * Whether to print extra information about error conditions dealing with
-     * cool bars in the workbench, and their disposal.
-     */
-    public static boolean DEBUG_TOOLBAR_DISPOSAL = DEFAULT;
-
-    /**
-     * Whether to print debugging information about the execution of commands
-     */
-    public static boolean DEBUG_COMMANDS = DEFAULT;
-
-    /**
-     * Whether to print debugging information about the internal state of the 
-     * context support within the workbench.
-     */
-    public static boolean DEBUG_CONTEXTS = DEFAULT;
-
-    /**
-     * Whether to print debugging information about the performance of context
-     * computations.
-     */
-    public static boolean DEBUG_CONTEXTS_PERFORMANCE = DEFAULT;
-
-    /**
-     * Whether to print even more debugging information about the internal state
-     * of the context support within the workbench.
-     */
-    public static boolean DEBUG_CONTEXTS_VERBOSE = DEFAULT;
-
-    /**
-     * Whether to print debugging information about the internal state of the
-     * command support (in relation to handlers) within the workbench.
-     */
-    public static boolean DEBUG_HANDLERS = DEFAULT;
-
-    /**
-     * Whether to print debugging information about the performance of handler
-     * computations.
-     */
-    public static boolean DEBUG_HANDLERS_PERFORMANCE = DEFAULT;
-
-    /**
-     * Whether to print out verbose information about changing handlers in the
-     * workbench.
-     */
-    public static boolean DEBUG_HANDLERS_VERBOSE = DEFAULT;
-	
-    /**
-     * Whether to print debugging information about unexpected occurrences and
-     * important state changes in the operation history.
-     */
-    public static boolean DEBUG_OPERATIONS = DEFAULT;
-
-    /**
-     * Whether to print out verbose information about the operation histories,
-     * including all notifications sent.
-     */
-    public static boolean DEBUG_OPERATIONS_VERBOSE = DEFAULT;
-
-
-    /**
-     * Whether or not to show system jobs at all times.
-     */
-    public static boolean DEBUG_SHOW_ALL_JOBS = DEFAULT;
-    
-    /**
-     * Whether or not to resolve images as they are declared.
-     * 
-     * @since 3.1
-     */
-    public static boolean DEBUG_DECLARED_IMAGES = DEFAULT;
-    
-    /**
-     * Whether or not to print contribution-related issues.
-     * 
-     * @since 3.1
-     */
-    public static boolean DEBUG_CONTRIBUTIONS = DEFAULT;
-
-    /**
-     * Which command identifier to print handler information for.  This
-     * restricts the debugging output, so a developer can focus on one command
-     * at a time.
-     */
-    public static String DEBUG_HANDLERS_VERBOSE_COMMAND_ID = null;
-    
-    /**
-     * Whether experimental features in the rendering of commands into menus
-     * and toolbars should be enabled.  This is not guaranteed to provide a
-     * working workbench.
-     */
-    public static boolean EXPERIMENTAL_MENU = DEFAULT;
-    
-    public static boolean DEBUG_MPE = DEFAULT;
-    
-    /**
-     * Whether or not additional working set logging will occur.
-     * 
-     * @since 3.4
-     */
-    public static boolean DEBUG_WORKING_SETS = DEFAULT;
-
-    static {
-        if (getDebugOption("/debug")) { //$NON-NLS-1$
-            DEBUG_SWT_GRAPHICS = getDebugOption("/trace/graphics"); //$NON-NLS-1$
-            DEBUG_SWT_DEBUG = getDebugOption("/debug/swtdebug"); //$NON-NLS-1$
-            DEBUG_SWT_DEBUG_GLOBAL = getDebugOption("/debug/swtdebugglobal"); //$NON-NLS-1$
-            DEBUG_DRAG_DROP = getDebugOption("/trace/dragDrop"); //$NON-NLS-1$
-            DEBUG_SOURCES = getDebugOption("/trace/sources"); //$NON-NLS-1$
-            DEBUG_KEY_BINDINGS = getDebugOption("/trace/keyBindings"); //$NON-NLS-1$
-            DEBUG_KEY_BINDINGS_VERBOSE = getDebugOption("/trace/keyBindings.verbose"); //$NON-NLS-1$
-            DEBUG_TOOLBAR_DISPOSAL = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jface/trace/toolbarDisposal")); //$NON-NLS-1$ //$NON-NLS-2$
-            DEBUG_COMMANDS = getDebugOption("/trace/commands"); //$NON-NLS-1$
-            DEBUG_CONTEXTS = getDebugOption("/trace/contexts"); //$NON-NLS-1$
-            DEBUG_CONTEXTS_PERFORMANCE = getDebugOption("/trace/contexts.performance"); //$NON-NLS-1$
-            DEBUG_CONTEXTS_VERBOSE = getDebugOption("/trace/contexts.verbose"); //$NON-NLS-1$
-            DEBUG_HANDLERS = getDebugOption("/trace/handlers"); //$NON-NLS-1$
-            DEBUG_HANDLERS_PERFORMANCE = getDebugOption("/trace/handlers.performance"); //$NON-NLS-1$
-            DEBUG_HANDLERS_VERBOSE = getDebugOption("/trace/handlers.verbose"); //$NON-NLS-1$
-            DEBUG_OPERATIONS = getDebugOption("/trace/operations"); //$NON-NLS-1$
-            DEBUG_OPERATIONS_VERBOSE = getDebugOption("/trace/operations.verbose"); //$NON-NLS-1$
-            DEBUG_SHOW_ALL_JOBS = getDebugOption("/debug/showAllJobs"); //$NON-NLS-1$
-            DEBUG_STALE_JOBS = getDebugOption("/debug/job.stale"); //$NON-NLS-1$
-            DEBUG_HANDLERS_VERBOSE_COMMAND_ID = Platform
-                    .getDebugOption(PlatformUI.PLUGIN_ID
-                            + "/trace/handlers.verbose.commandId"); //$NON-NLS-1$
-            if ("".equals(DEBUG_HANDLERS_VERBOSE_COMMAND_ID)) { //$NON-NLS-1$
-            	DEBUG_HANDLERS_VERBOSE_COMMAND_ID = null;
-            }
-            DEBUG_DECLARED_IMAGES = getDebugOption("/debug/declaredImages"); //$NON-NLS-1$
-            DEBUG_CONTRIBUTIONS = getDebugOption("/debug/contributions"); //$NON-NLS-1$
-            EXPERIMENTAL_MENU = getDebugOption("/experimental/menus"); //$NON-NLS-1$
-            DEBUG_MPE = getDebugOption("/trace/multipageeditor"); //$NON-NLS-1$
-            DEBUG_WORKING_SETS = getDebugOption("/debug/workingSets"); //$NON-NLS-1$
-            
-            if(DEBUG_SWT_DEBUG_GLOBAL)
-            	Device.DEBUG = true;
-        }
-    }
-
-    private static boolean getDebugOption(String option) {
-        return "true".equalsIgnoreCase(Platform.getDebugOption(PlatformUI.PLUGIN_ID + option)); //$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java
deleted file mode 100644
index f98b296..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/ProgramImageDescriptor.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * An image descriptor that loads its data from a program file.
- */
-public class ProgramImageDescriptor extends ImageDescriptor {
-    private String filename;
-
-    private int offset;
-
-    /**
-     * Creates a new ImageDescriptor. The image is loaded 
-     * from a file with the given name <code>name</code>.
-     */
-    public ProgramImageDescriptor(String fullPath, int offsetInFile) {
-        filename = fullPath;
-        offset = offsetInFile;
-    }
-
-    /**
-     * @see Object#equals
-     */
-    public boolean equals(Object o) {
-        if (!(o instanceof ProgramImageDescriptor)) {
-            return false;
-        }
-        ProgramImageDescriptor other = (ProgramImageDescriptor) o;
-        return filename.equals(other.filename) && offset == other.offset;
-    }
-
-    /**
-     * Returns an SWT Image that is described by the information
-     * in this descriptor.  Each call returns a new Image.
-     */
-    public Image getImage() {
-        return createImage();
-    }
-
-    /**
-     * Returns an SWT Image that is described by the information
-     * in this descriptor. 
-     */
-    public ImageData getImageData() {
-        /*This is a user defined offset into the file which always
-         *returns us the defualt - return the default regardless*/
-
-        return WorkbenchImages.getImageDescriptor(ISharedImages.IMG_OBJ_FILE)
-                .getImageData();
-    }
-
-    /**
-     * @see Object#hashCode
-     */
-    public int hashCode() {
-        return filename.hashCode() + offset;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StatusUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StatusUtil.java
deleted file mode 100644
index 34876f8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StatusUtil.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Utility class to create status objects.
- *
- * @private - This class is an internal implementation class and should
- * not be referenced or subclassed outside of the workbench
- */
-public class StatusUtil {
-    /**
-     *	Answer a flat collection of the passed status and its recursive children
-     */
-    protected static List flatten(IStatus aStatus) {
-        List result = new ArrayList();
-
-        if (aStatus.isMultiStatus()) {
-            IStatus[] children = aStatus.getChildren();
-            for (int i = 0; i < children.length; i++) {
-                IStatus currentChild = children[i];
-                if (currentChild.isMultiStatus()) {
-                    Iterator childStatiiEnum = flatten(currentChild).iterator();
-                    while (childStatiiEnum.hasNext()) {
-						result.add(childStatiiEnum.next());
-					}
-                } else {
-					result.add(currentChild);
-				}
-            }
-        } else {
-			result.add(aStatus);
-		}
-
-        return result;
-    }
-
-    /**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for creating status.
-     */
-    protected static IStatus newStatus(IStatus[] stati, String message,
-            Throwable exception) {
-
-        Assert.isTrue(message != null);
-        Assert.isTrue(message.trim().length() != 0);
-
-        return new MultiStatus(WorkbenchPlugin.PI_WORKBENCH, IStatus.ERROR,
-                stati, message, exception);
-    }
-    
-    public static IStatus newStatus(String pluginId, Throwable exception) {
-        return newStatus(pluginId, getLocalizedMessage(exception), exception);
-    }
-
-    /**
-     * Returns a localized message describing the given exception. If the given exception does not
-     * have a localized message, this returns the string "An error occurred".
-     *
-     * @param exception
-     * @return
-     */
-    public static String getLocalizedMessage(Throwable exception) {
-        String message = exception.getLocalizedMessage();
-        
-        if (message != null) {
-            return message;
-        }
-        
-        // Workaround for the fact that CoreException does not implement a getLocalizedMessage() method.
-        // Remove this branch when and if CoreException implements getLocalizedMessage() 
-        if (exception instanceof CoreException) {
-            CoreException ce = (CoreException)exception;
-            return ce.getStatus().getMessage();
-        }
-        
-        return WorkbenchMessages.StatusUtil_errorOccurred;
-    }
-    
-    /**
-     * Creates a new Status based on the original status, but with a different message
-     *
-     * @param originalStatus
-     * @param newMessage
-     * @return
-     */
-    public static IStatus newStatus(IStatus originalStatus, String newMessage) {
-        return new Status(originalStatus.getSeverity(), 
-                originalStatus.getPlugin(), originalStatus.getCode(), newMessage, originalStatus.getException());
-    }
-    
-    public static IStatus newStatus(String pluginId, String message, Throwable exception) {        
-        return new Status(IStatus.ERROR, pluginId, IStatus.OK, 
-                message, getCause(exception));
-    }    
-    
-    public static Throwable getCause(Throwable exception) {
-        // Figure out which exception should actually be logged -- if the given exception is
-        // a wrapper, unwrap it
-        Throwable cause = null;
-        if (exception != null) {
-            if (exception instanceof CoreException) {
-                // Workaround: CoreException contains a cause, but does not actually implement getCause(). 
-                // If we get a CoreException, we need to manually unpack the cause. Otherwise, use
-                // the general-purpose mechanism. Remove this branch if CoreException ever implements
-                // a correct getCause() method.
-                CoreException ce = (CoreException)exception;
-                cause = ce.getStatus().getException();
-            } else {
-            	// use reflect instead of a direct call to getCause(), to allow compilation against JCL Foundation (bug 80053)
-            	try {
-            		Method causeMethod = exception.getClass().getMethod("getCause", new Class[0]); //$NON-NLS-1$
-            		Object o = causeMethod.invoke(exception, new Object[0]);
-            		if (o instanceof Throwable) { 
-            			cause = (Throwable) o;
-            		}
-            	}
-            	catch (NoSuchMethodException e) {
-            		// ignore
-            	} catch (IllegalArgumentException e) {
-            		// ignore
-				} catch (IllegalAccessException e) {
-            		// ignore
-				} catch (InvocationTargetException e) {
-            		// ignore
-				}
-            }
-            
-            if (cause == null) {
-                cause = exception;
-            }
-        }
-
-        return cause;
-    }
-        
-    /**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for creating status.
-     */
-    public static IStatus newStatus(int severity, String message,
-            Throwable exception) {
-
-        String statusMessage = message;
-        if (message == null || message.trim().length() == 0) {
-            if (exception.getMessage() == null) {
-				statusMessage = exception.toString();
-			} else {
-				statusMessage = exception.getMessage();
-			}
-        }
-
-        return new Status(severity, WorkbenchPlugin.PI_WORKBENCH, severity,
-                statusMessage, getCause(exception));
-    }
-
-    /**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for creating status.
-     */
-    public static IStatus newStatus(List children, String message,
-            Throwable exception) {
-
-        List flatStatusCollection = new ArrayList();
-        Iterator iter = children.iterator();
-        while (iter.hasNext()) {
-            IStatus currentStatus = (IStatus) iter.next();
-            Iterator childrenIter = flatten(currentStatus).iterator();
-            while (childrenIter.hasNext()) {
-				flatStatusCollection.add(childrenIter.next());
-			}
-        }
-
-        IStatus[] stati = new IStatus[flatStatusCollection.size()];
-        flatStatusCollection.toArray(stati);
-        return newStatus(stati, message, exception);
-    }
-    
-    /**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-    public static void handleStatus(IStatus status, int hint, Shell shell) {
-    	StatusManager.getManager().handle(status, hint);
-	}
-    
-    /**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-    public static void handleStatus(Throwable e, int hint) {
-		StatusManager.getManager().handle(
-				newStatus(WorkbenchPlugin.PI_WORKBENCH, e), hint);
-	}
-    
-    /**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-	public static void handleStatus(String message, Throwable e, int hint) {
-		StatusManager.getManager().handle(
-				newStatus(WorkbenchPlugin.PI_WORKBENCH, message, e), hint);
-	}
-	
-	/**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-	public static void handleStatus(String message, Throwable e, int hint,
-			Shell shell) {
-		StatusManager.getManager().handle(
-				newStatus(WorkbenchPlugin.PI_WORKBENCH, message, e), hint);
-	}
-	
-	/**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-	public static void handleStatus(IStatus status, String message, int hint) {
-		StatusManager.getManager().handle(newStatus(status, message), hint);
-	}
-	
-	/**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-	public static void handleStatus(IStatus status, String message, int hint,
-			Shell shell) {
-		StatusManager.getManager().handle(newStatus(status, message), hint);
-	}
-
-	/**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-	public static void handleStatus(String message, int hint) {
-		handleStatus(message, null, hint);
-	}
-	
-	/**
-     * This method must not be called outside the workbench.
-     *
-     * Utility method for handling status.
-     */
-	public static void handleStatus(String message, int hint, Shell shell) {
-		handleStatus(message, null, hint);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StringMatcher.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StringMatcher.java
deleted file mode 100644
index 2ff2b67..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/StringMatcher.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import java.util.Vector;
-
-/**
- * A string pattern matcher, suppporting "*" and "?" wildcards.
- */
-public class StringMatcher {
-    protected String fPattern;
-
-    protected int fLength; // pattern length
-
-    protected boolean fIgnoreWildCards;
-
-    protected boolean fIgnoreCase;
-
-    protected boolean fHasLeadingStar;
-
-    protected boolean fHasTrailingStar;
-
-    protected String fSegments[]; //the given pattern is split into * separated segments
-
-    /* boundary value beyond which we don't need to search in the text */
-    protected int fBound = 0;
-
-    protected static final char fSingleWildCard = '\u0000';
-
-    public static class Position {
-        int start; //inclusive
-
-        int end; //exclusive
-
-        public Position(int start, int end) {
-            this.start = start;
-            this.end = end;
-        }
-
-        public int getStart() {
-            return start;
-        }
-
-        public int getEnd() {
-            return end;
-        }
-    }
-
-    /**
-     * StringMatcher constructor takes in a String object that is a simple 
-     * pattern which may contain '*' for 0 and many characters and
-     * '?' for exactly one character.  
-     *
-     * Literal '*' and '?' characters must be escaped in the pattern 
-     * e.g., "\*" means literal "*", etc.
-     *
-     * Escaping any other character (including the escape character itself), 
-     * just results in that character in the pattern.
-     * e.g., "\a" means "a" and "\\" means "\"
-     *
-     * If invoking the StringMatcher with string literals in Java, don't forget
-     * escape characters are represented by "\\".
-     *
-     * @param pattern the pattern to match text against
-     * @param ignoreCase if true, case is ignored
-     * @param ignoreWildCards if true, wild cards and their escape sequences are ignored
-     * 		  (everything is taken literally).
-     */
-    public StringMatcher(String pattern, boolean ignoreCase,
-            boolean ignoreWildCards) {
-        if (pattern == null) {
-			throw new IllegalArgumentException();
-		}
-        fIgnoreCase = ignoreCase;
-        fIgnoreWildCards = ignoreWildCards;
-        fPattern = pattern;
-        fLength = pattern.length();
-
-        if (fIgnoreWildCards) {
-            parseNoWildCards();
-        } else {
-            parseWildCards();
-        }
-    }
-
-    /**
-     * Find the first occurrence of the pattern between <code>start</code)(inclusive) 
-     * and <code>end</code>(exclusive).  
-     * @param text the String object to search in 
-     * @param start the starting index of the search range, inclusive
-     * @param end the ending index of the search range, exclusive
-     * @return an <code>StringMatcher.Position</code> object that keeps the starting 
-     * (inclusive) and ending positions (exclusive) of the first occurrence of the 
-     * pattern in the specified range of the text; return null if not found or subtext
-     * is empty (start==end). A pair of zeros is returned if pattern is empty string
-     * Note that for pattern like "*abc*" with leading and trailing stars, position of "abc"
-     * is returned. For a pattern like"*??*" in text "abcdf", (1,3) is returned
-     */
-    public StringMatcher.Position find(String text, int start, int end) {
-        if (text == null) {
-			throw new IllegalArgumentException();
-		}
-
-        int tlen = text.length();
-        if (start < 0) {
-			start = 0;
-		}
-        if (end > tlen) {
-			end = tlen;
-		}
-        if (end < 0 || start >= end) {
-			return null;
-		}
-        if (fLength == 0) {
-			return new Position(start, start);
-		}
-        if (fIgnoreWildCards) {
-            int x = posIn(text, start, end);
-            if (x < 0) {
-				return null;
-			}
-            return new Position(x, x + fLength);
-        }
-
-        int segCount = fSegments.length;
-        if (segCount == 0) {
-			return new Position(start, end);
-		}
-
-        int curPos = start;
-        int matchStart = -1;
-        int i;
-        for (i = 0; i < segCount && curPos < end; ++i) {
-            String current = fSegments[i];
-            int nextMatch = regExpPosIn(text, curPos, end, current);
-            if (nextMatch < 0) {
-				return null;
-			}
-            if (i == 0) {
-				matchStart = nextMatch;
-			}
-            curPos = nextMatch + current.length();
-        }
-        if (i < segCount) {
-			return null;
-		}
-        return new Position(matchStart, curPos);
-    }
-
-    /**
-     * match the given <code>text</code> with the pattern 
-     * @return true if matched otherwise false
-     * @param text a String object 
-     */
-    public boolean match(String text) {
-    	if(text == null) {
-			return false;
-		}
-        return match(text, 0, text.length());
-    }
-
-    /**
-     * Given the starting (inclusive) and the ending (exclusive) positions in the   
-     * <code>text</code>, determine if the given substring matches with aPattern  
-     * @return true if the specified portion of the text matches the pattern
-     * @param text a String object that contains the substring to match 
-     * @param start marks the starting position (inclusive) of the substring
-     * @param end marks the ending index (exclusive) of the substring 
-     */
-    public boolean match(String text, int start, int end) {
-        if (null == text) {
-			throw new IllegalArgumentException();
-		}
-
-        if (start > end) {
-			return false;
-		}
-
-        if (fIgnoreWildCards) {
-			return (end - start == fLength)
-                    && fPattern.regionMatches(fIgnoreCase, 0, text, start,
-                            fLength);
-		}
-        int segCount = fSegments.length;
-        if (segCount == 0 && (fHasLeadingStar || fHasTrailingStar)) {
-			return true;
-		}
-        if (start == end) {
-			return fLength == 0;
-		}
-        if (fLength == 0) {
-			return start == end;
-		}
-
-        int tlen = text.length();
-        if (start < 0) {
-			start = 0;
-		}
-        if (end > tlen) {
-			end = tlen;
-		}
-
-        int tCurPos = start;
-        int bound = end - fBound;
-        if (bound < 0) {
-			return false;
-		}
-        int i = 0;
-        String current = fSegments[i];
-        int segLength = current.length();
-
-        /* process first segment */
-        if (!fHasLeadingStar) {
-            if (!regExpRegionMatches(text, start, current, 0, segLength)) {
-                return false;
-            } else {
-                ++i;
-                tCurPos = tCurPos + segLength;
-            }
-        }
-        if ((fSegments.length == 1) && (!fHasLeadingStar)
-                && (!fHasTrailingStar)) {
-            // only one segment to match, no wildcards specified
-            return tCurPos == end;
-        }
-        /* process middle segments */
-        while (i < segCount) {
-            current = fSegments[i];
-            int currentMatch;
-            int k = current.indexOf(fSingleWildCard);
-            if (k < 0) {
-                currentMatch = textPosIn(text, tCurPos, end, current);
-                if (currentMatch < 0) {
-					return false;
-				}
-            } else {
-                currentMatch = regExpPosIn(text, tCurPos, end, current);
-                if (currentMatch < 0) {
-					return false;
-				}
-            }
-            tCurPos = currentMatch + current.length();
-            i++;
-        }
-
-        /* process final segment */
-        if (!fHasTrailingStar && tCurPos != end) {
-            int clen = current.length();
-            return regExpRegionMatches(text, end - clen, current, 0, clen);
-        }
-        return i == segCount;
-    }
-
-    /**
-     * This method parses the given pattern into segments seperated by wildcard '*' characters.
-     * Since wildcards are not being used in this case, the pattern consists of a single segment.
-     */
-    private void parseNoWildCards() {
-        fSegments = new String[1];
-        fSegments[0] = fPattern;
-        fBound = fLength;
-    }
-
-    /**
-     * Parses the given pattern into segments seperated by wildcard '*' characters.
-     * @param p, a String object that is a simple regular expression with '*' and/or '?'
-     */
-    private void parseWildCards() {
-        if (fPattern.startsWith("*")) { //$NON-NLS-1$
-			fHasLeadingStar = true;
-		}
-        if (fPattern.endsWith("*")) {//$NON-NLS-1$
-            /* make sure it's not an escaped wildcard */
-            if (fLength > 1 && fPattern.charAt(fLength - 2) != '\\') {
-                fHasTrailingStar = true;
-            }
-        }
-
-        Vector temp = new Vector();
-
-        int pos = 0;
-        StringBuffer buf = new StringBuffer();
-        while (pos < fLength) {
-            char c = fPattern.charAt(pos++);
-            switch (c) {
-            case '\\':
-                if (pos >= fLength) {
-                    buf.append(c);
-                } else {
-                    char next = fPattern.charAt(pos++);
-                    /* if it's an escape sequence */
-                    if (next == '*' || next == '?' || next == '\\') {
-                        buf.append(next);
-                    } else {
-                        /* not an escape sequence, just insert literally */
-                        buf.append(c);
-                        buf.append(next);
-                    }
-                }
-                break;
-            case '*':
-                if (buf.length() > 0) {
-                    /* new segment */
-                    temp.addElement(buf.toString());
-                    fBound += buf.length();
-                    buf.setLength(0);
-                }
-                break;
-            case '?':
-                /* append special character representing single match wildcard */
-                buf.append(fSingleWildCard);
-                break;
-            default:
-                buf.append(c);
-            }
-        }
-
-        /* add last buffer to segment list */
-        if (buf.length() > 0) {
-            temp.addElement(buf.toString());
-            fBound += buf.length();
-        }
-
-        fSegments = new String[temp.size()];
-        temp.copyInto(fSegments);
-    }
-
-    /** 
-     * @param text a string which contains no wildcard
-     * @param start the starting index in the text for search, inclusive
-     * @param end the stopping point of search, exclusive
-     * @return the starting index in the text of the pattern , or -1 if not found 
-     */
-    protected int posIn(String text, int start, int end) {//no wild card in pattern
-        int max = end - fLength;
-
-        if (!fIgnoreCase) {
-            int i = text.indexOf(fPattern, start);
-            if (i == -1 || i > max) {
-				return -1;
-			}
-            return i;
-        }
-
-        for (int i = start; i <= max; ++i) {
-            if (text.regionMatches(true, i, fPattern, 0, fLength)) {
-				return i;
-			}
-        }
-
-        return -1;
-    }
-
-    /** 
-     * @param text a simple regular expression that may only contain '?'(s)
-     * @param start the starting index in the text for search, inclusive
-     * @param end the stopping point of search, exclusive
-     * @param p a simple regular expression that may contains '?'
-     * @return the starting index in the text of the pattern , or -1 if not found 
-     */
-    protected int regExpPosIn(String text, int start, int end, String p) {
-        int plen = p.length();
-
-        int max = end - plen;
-        for (int i = start; i <= max; ++i) {
-            if (regExpRegionMatches(text, i, p, 0, plen)) {
-				return i;
-			}
-        }
-        return -1;
-    }
-
-    /**
-     * 
-     * @return boolean
-     * @param text a String to match
-     * @param start int that indicates the starting index of match, inclusive
-     * @param end</code> int that indicates the ending index of match, exclusive
-     * @param p String,  String, a simple regular expression that may contain '?'
-     * @param ignoreCase boolean indicating wether code>p</code> is case sensitive
-     */
-    protected boolean regExpRegionMatches(String text, int tStart, String p,
-            int pStart, int plen) {
-        while (plen-- > 0) {
-            char tchar = text.charAt(tStart++);
-            char pchar = p.charAt(pStart++);
-
-            /* process wild cards */
-            if (!fIgnoreWildCards) {
-                /* skip single wild cards */
-                if (pchar == fSingleWildCard) {
-                    continue;
-                }
-            }
-            if (pchar == tchar) {
-				continue;
-			}
-            if (fIgnoreCase) {
-                if (Character.toUpperCase(tchar) == Character
-                        .toUpperCase(pchar)) {
-					continue;
-				}
-                // comparing after converting to upper case doesn't handle all cases;
-                // also compare after converting to lower case
-                if (Character.toLowerCase(tchar) == Character
-                        .toLowerCase(pchar)) {
-					continue;
-				}
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /** 
-     * @param text the string to match
-     * @param start the starting index in the text for search, inclusive
-     * @param end the stopping point of search, exclusive
-     * @param p a pattern string that has no wildcard
-     * @return the starting index in the text of the pattern , or -1 if not found 
-     */
-    protected int textPosIn(String text, int start, int end, String p) {
-
-        int plen = p.length();
-        int max = end - plen;
-
-        if (!fIgnoreCase) {
-            int i = text.indexOf(p, start);
-            if (i == -1 || i > max) {
-				return -1;
-			}
-            return i;
-        }
-
-        for (int i = start; i <= max; ++i) {
-            if (text.regionMatches(true, i, p, 0, plen)) {
-				return i;
-			}
-        }
-
-        return -1;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TestPartListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TestPartListener.java
deleted file mode 100644
index f39a446..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/TestPartListener.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Prints out part listener events
- */
-public class TestPartListener implements IPartListener {
-    /**
-     * TestPartListener constructor comment.
-     * @issue seems like garbage - no one using it
-     */
-    public TestPartListener() {
-        super();
-    }
-
-    /**
-     * Notifies this listener that the given part has been activated.
-     *
-     * @param part the part that was activated
-     * @see IPerspective#activate
-     */
-    public void partActivated(IWorkbenchPart part) {
-        System.out.println("partActivated(" + part + ")");//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Notifies this listener that the given part has been brought to the top.
-     * <p>
-     * These events occur when an editor is brought to the top in the editor area,
-     * or when a view is brought to the top in a page book with multiple views.
-     * They are normally only sent when a part is brought to the top 
-     * programmatically (via <code>IPerspective.bringToTop</code>). When a part is
-     * activated by the user clicking on it, only <code>partActivated</code> is sent.
-     * </p>
-     *
-     * @param part the part that was surfaced
-     * @see IPerspective#bringToTop
-     */
-    public void partBroughtToTop(IWorkbenchPart part) {
-        System.out.println("partBroughtToTop(" + part + ")");//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Notifies this listener that the given part has been closed.
-     *
-     * @param part the part that was closed
-     * @see IPerspective#close
-     */
-    public void partClosed(IWorkbenchPart part) {
-        System.out.println("partClosed(" + part + ")");//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Notifies this listener that the given part has been deactivated.
-     *
-     * @param part the part that was deactivated
-     * @see IPerspective#activate
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-        System.out.println("partDeactivated(" + part + ")");//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Notifies this listener that the given part has been opened.
-     *
-     * @param part the part that was opened
-     */
-    public void partOpened(IWorkbenchPart part) {
-        System.out.println("partOpened(" + part + ")");//$NON-NLS-2$//$NON-NLS-1$
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIListenerLogging.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIListenerLogging.java
deleted file mode 100644
index 1c11af8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIListenerLogging.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.util.Util;
-
-
-/**
- * To whom it may concern: Please stop deleting the logging code. This is important for debugging
- * event ordering issues.
- */
-public class UIListenerLogging {
-    
-    // Types of listeners that can be logged (the names of the options that enable/disable their logging)
-    private final static String LISTENER_EVENTS = PlatformUI.PLUGIN_ID + "/debug"; //$NON-NLS-1$
-    public  final static String PAGE_PARTLISTENER_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchPage.IPartListener"; //$NON-NLS-1$
-    public  final static String PAGE_PARTLISTENER2_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchPage.IPartListener2"; //$NON-NLS-1$
-    private final static String PAGE_PROPERTY_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchPage.IPropertyChangeListener"; //$NON-NLS-1$
-    private final static String WINDOW_PAGE_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchWindow.IPageListener"; //$NON-NLS-1$
-    private final static String WINDOW_PERSPECTIVE_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchWindow.IPerspectiveListener"; //$NON-NLS-1$
-    public  final static String WINDOW_PARTLISTENER_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchWindow.IPartListener"; //$NON-NLS-1$
-    public  final static String WINDOW_PARTLISTENER2_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchWindow.IPartListener2"; //$NON-NLS-1$
-    private final static String PARTREFERENCE_PROPERTY_EVENTS = PlatformUI.PLUGIN_ID + "/listeners/IWorkbenchPartReference"; //$NON-NLS-1$
-    
-    public final static boolean enabled = internal_isEnabled(LISTENER_EVENTS);
-    
-    // IPartListener events
-    public final static String PE_ACTIVATED = "partActivated"; //$NON-NLS-1$
-    public final static String PE_PART_BROUGHT_TO_TOP = "partBroughtToTop"; //$NON-NLS-1$
-    public final static String PE_PART_CLOSED = "partClosed"; //$NON-NLS-1$
-    public final static String PE_PART_DEACTIVATED = "partDeactivated"; //$NON-NLS-1$
-    public final static String PE_PART_OPENED = "partOpened"; //$NON-NLS-1$
-    
-    // IPartListener2 events
-    public final static String PE2_ACTIVATED = "partActivated"; //$NON-NLS-1$
-    public final static String PE2_PART_VISIBLE = "partVisible"; //$NON-NLS-1$
-    public final static String PE2_PART_HIDDEN = "partHidden"; //$NON-NLS-1$
-    public final static String PE2_PART_BROUGHT_TO_TOP = "partBroughtToTop"; //$NON-NLS-1$
-    public final static String PE2_PART_CLOSED = "partClosed"; //$NON-NLS-1$
-    public final static String PE2_PART_DEACTIVATED = "partDectivated"; //$NON-NLS-1$
-    public final static String PE2_PART_OPENED = "partOpened"; //$NON-NLS-1$
-    public static final String PE2_PART_INPUT_CHANGED = "partInputChanged"; //$NON-NLS-1$
-    
-    // IPageListener events
-    public final static String WPE_PAGE_ACTIVATED = "pageActivated"; //$NON-NLS-1$
-    public final static String WPE_PAGE_OPENED = "pageOpened"; //$NON-NLS-1$ 
-    public final static String WPE_PAGE_CLOSED = "pageClosed"; //$NON-NLS-1$ 
-    
-    // IPerspectiveListener events
-    public static final String PLE_PERSP_PRE_DEACTIVATE = "perspectivePreDeactivate"; //$NON-NLS-1$
-    public static final String PLE_PERSP_DEACTIVATED = "perspectiveDeactivated"; //$NON-NLS-1$
-    public static final String PLE_PERSP_ACTIVATED = "perspectiveActivated"; //$NON-NLS-1$
-    public static final String PLE_PERSP_OPENED = "perspectiveOpened"; //$NON-NLS-1$
-    public static final String PLE_PERSP_CLOSED = "perspectiveClosed"; //$NON-NLS-1$
-    public static final String PLE_PERSP_SAVED_AS = "perspectiveSavedAs"; //$NON-NLS-1$
-
-    private static String getSourceId(Object source) {
-        return Util.safeString(Integer.toString(source.hashCode() % 1000));
-    }
-
-    private static String getWindowId(IWorkbenchWindow source) {
-        return "window " + Util.safeString(Integer.toString(source.hashCode() % 1000)); //$NON-NLS-1$
-    }
-    
-    private static String getPageId(IWorkbenchPage page) {
-        return "page " + Util.safeString(Integer.toString(page.hashCode() % 1000)); //$NON-NLS-1$
-    }
-    
-    private static String getPerspectiveId(IPerspectiveDescriptor descriptor) {
-        return Util.safeString(descriptor.getId());
-    }
-    
-    public static final void logPageEvent(IWorkbenchWindow window, IWorkbenchPage page, String eventId) {
-        if (isEnabled(WINDOW_PAGE_EVENTS)) {
-            System.out.println(WINDOW_PAGE_EVENTS 
-                    + " " + getWindowId(window) //$NON-NLS-1$
-                    + " " + eventId + " (" + getPageId(page) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
-        }
-    }
-
-    public static final void logPerspectiveEvent(IWorkbenchWindow window, IWorkbenchPage page, 
-            IPerspectiveDescriptor descriptor, String eventId) {
-        
-        if (isEnabled(WINDOW_PERSPECTIVE_EVENTS)) {
-            System.out.println(WINDOW_PERSPECTIVE_EVENTS 
-                    + " " + getWindowId(window) //$NON-NLS-1$
-                    + " " + eventId + " (" + getPageId(page) + ", " + getPerspectiveId(descriptor) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 
-        }
-    }
-
-    public static final void logPerspectiveChangedEvent(IWorkbenchWindow window, IWorkbenchPage page, 
-            IPerspectiveDescriptor descriptor, IWorkbenchPartReference ref, String changeId) {
-        
-        if (isEnabled(WINDOW_PERSPECTIVE_EVENTS)) {
-            System.out.println(WINDOW_PERSPECTIVE_EVENTS 
-                    + " "+ getWindowId(window) //$NON-NLS-1$
-                    + " perspectiveChanged (" + getPageId(page) + ", " + getPerspectiveId(descriptor)  //$NON-NLS-1$ //$NON-NLS-2$
-                    + ", " + getPartId(ref) + ", " + changeId + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-                            
-        }
-    }
-
-    public static final void logPerspectiveSavedAs(IWorkbenchWindow window, IWorkbenchPage page, 
-    		IPerspectiveDescriptor oldDescriptor, IPerspectiveDescriptor newDescriptor) {
-        
-        if (isEnabled(WINDOW_PERSPECTIVE_EVENTS)) {
-            System.out.println(WINDOW_PERSPECTIVE_EVENTS 
-                    + " " + getWindowId(window) //$NON-NLS-1$
-                    + " " + PLE_PERSP_SAVED_AS + " (" + getPageId(page) + ", " + getPerspectiveId(oldDescriptor)  + ", " + getPerspectiveId(newDescriptor) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ 
-        }
-    }
-
-    
-    private static String getPartId(IWorkbenchPart part) {
-        if (part == null) {
-            return "null part"; //$NON-NLS-1$
-        }
-        
-        return Util.safeString(part.getTitle()) + " - "  //$NON-NLS-1$
-            + Util.safeString(part.getSite().getId());
-    }
-    
-    private static String getPartId(IWorkbenchPartReference ref) {
-        if (ref == null) {
-            return "null part"; //$NON-NLS-1$
-        }
-        
-        return Util.safeString(ref.getPartName()) + " - "  //$NON-NLS-1$
-            + Util.safeString(ref.getId());
-    }
-
-    /**
-     * Log a partListener event fired from the workbench window
-     *
-     * @param page
-     * @param eventId
-     */
-    public static final void logPartListenerEvent(String sourceType, Object source, IWorkbenchPart part, String eventId) {
-        if (isEnabled(sourceType)) {
-            System.out.println(sourceType + " " + getSourceId(source) //$NON-NLS-1$
-                    + ", " + eventId + "(" + getPartId(part) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        }
-    }
-
-    /**
-     * Log a partListener2 event fired from the workbench window
-     *
-     * @param page
-     * @param eventId
-     */
-    public static final void logPartListener2Event(String sourceType, Object source, IWorkbenchPartReference part, String eventId) {
-        if (isEnabled(sourceType)) {
-            System.out.println(sourceType + " " + getSourceId(source) //$NON-NLS-1$
-                    + ", " + eventId + "(" + getPartId(part) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        }
-    }
-    
-    /**
-     * Log an event fired from the workbench page
-     *
-     * @param page
-     * @param eventId
-     */
-    public static final void logPartListenerEvent(IWorkbenchPage page, IWorkbenchPart part, String eventId) {
-        if (isEnabled(PAGE_PARTLISTENER_EVENTS)) {
-            System.out.println(PAGE_PARTLISTENER_EVENTS + " page "  //$NON-NLS-1$
-                    + Util.safeString(page.getLabel()) 
-                    + ", " + eventId + "(" + getPartId(part) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        }
-    }
-
-    /**
-     * Log an event fired from the workbench page
-     *
-     * @param page
-     * @param eventId
-     */
-    public static final void logPartListener2Event(IWorkbenchPage page, IWorkbenchPartReference part, String eventId) {
-        if (isEnabled(PAGE_PARTLISTENER2_EVENTS)) {
-            System.out.println(PAGE_PARTLISTENER2_EVENTS + " page "  //$NON-NLS-1$
-                    + Util.safeString(page.getLabel()) 
-                    + ", " + eventId + "(" + getPartId(part) + ")");          //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        }
-    }
-    
-    /**
-     * Log an event fired from the workbench page
-     *
-     * @param page
-     * @param eventId
-     */
-    public static final void logPagePropertyChanged(IWorkbenchPage page, String changeId, Object oldValue, Object newValue) {
-        if (isEnabled(PAGE_PROPERTY_EVENTS)) {
-            System.out.println(PAGE_PROPERTY_EVENTS + " page "  //$NON-NLS-1$
-                    + Util.safeString(page.getLabel()) 
-                    + ", " + changeId + " = " + Util.safeString(newValue.toString()) + "( old value = " + newValue.toString() + " )"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$        
-        }
-    }
-    
-    public static final void logPartReferencePropertyChange(IWorkbenchPartReference ref, int changeId) {
-        if (isEnabled(PARTREFERENCE_PROPERTY_EVENTS)) {
-            String eventDescription;
-            
-            switch(changeId) {
-                case IWorkbenchPartConstants.PROP_TITLE: eventDescription = "title"; break; //$NON-NLS-1$
-                case IWorkbenchPartConstants.PROP_DIRTY: eventDescription = "dirty"; break; //$NON-NLS-1$
-                case IWorkbenchPartConstants.PROP_INPUT: eventDescription = "input"; break; //$NON-NLS-1$
-                case IWorkbenchPartConstants.PROP_PART_NAME: eventDescription = "part_name"; break; //$NON-NLS-1$
-                case IWorkbenchPartConstants.PROP_CONTENT_DESCRIPTION: eventDescription = "content_description"; break; //$NON-NLS-1$
-                default:
-                    eventDescription = "unknown event id = " + changeId; //$NON-NLS-1$
-            }
-            
-            System.out.println(PARTREFERENCE_PROPERTY_EVENTS + " "  //$NON-NLS-1$
-                    + getPartId(ref)
-                    + ", property " + eventDescription);         //$NON-NLS-1$
-        }        
-    }
-    
-    private static boolean isEnabled(String eventName) {
-        return enabled && internal_isEnabled(eventName);
-    }
-    
-    private static boolean internal_isEnabled(String eventName) {
-        String option = Platform.getDebugOption(eventName);
-        return option != null && !option.equalsIgnoreCase("false") && !option.equalsIgnoreCase("-1"); //$NON-NLS-1$ //$NON-NLS-2$
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIStats.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIStats.java
deleted file mode 100644
index 41ec332..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/misc/UIStats.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.misc;
-
-import java.util.HashMap;
-
-import org.eclipse.core.runtime.PerformanceStats;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This class is used for monitoring performance events.  Each performance
- * event has an associated option in the org.eclipse.ui plugin's .options file
- * that specifies an maximum acceptable duration for that event.
- * 
- * @see org.eclipse.core.runtime.PerformanceStats
- */
-public class UIStats {
-	
-	 private static HashMap operations = new HashMap();
-
-    public static final int CREATE_PART = 0;
-
-    public static final int CREATE_PART_CONTROL = 1;
-
-    public static final int INIT_PART = 2;
-
-    public static final int CREATE_PERSPECTIVE = 3;
-
-    public static final int RESTORE_WORKBENCH = 4;
-
-    public static final int START_WORKBENCH = 5;
-
-    public static final int CREATE_PART_INPUT = 6;
-
-    public static final int ACTIVATE_PART = 7;
-
-    public static final int BRING_PART_TO_TOP = 8;
-
-    public static final int NOTIFY_PART_LISTENERS = 9;
-
-    public static final int SWITCH_PERSPECTIVE = 10;
-    
-    public static final int NOTIFY_PAGE_LISTENERS = 11;
-
-    public static final int NOTIFY_PERSPECTIVE_LISTENERS = 12;
-
-    public static final int UI_JOB = 13;
-	
-	public static final int CONTENT_TYPE_LOOKUP = 14;
-
-    /**
-     * Change this value when you add a new event constant.
-     */
-    public static final int LAST_VALUE = CONTENT_TYPE_LOOKUP;
-
-    private static boolean debug[] = new boolean[LAST_VALUE+1];
-
-    private static String[] events = new String[LAST_VALUE+1];
-
-    static {
-        events[CREATE_PART] = PlatformUI.PLUGIN_ID + "/perf/part.create"; //$NON-NLS-1$
-        events[CREATE_PART_INPUT] = PlatformUI.PLUGIN_ID + "/perf/part.input"; //$NON-NLS-1$
-        events[CREATE_PART_CONTROL] = PlatformUI.PLUGIN_ID + "/perf/part.control"; //$NON-NLS-1$
-        events[INIT_PART] = PlatformUI.PLUGIN_ID + "/perf/part.init"; //$NON-NLS-1$
-        events[CREATE_PERSPECTIVE] = PlatformUI.PLUGIN_ID + "/perf/perspective.create"; //$NON-NLS-1$
-        events[SWITCH_PERSPECTIVE] = PlatformUI.PLUGIN_ID + "/perf/perspective.switch"; //$NON-NLS-1$
-        events[RESTORE_WORKBENCH] = PlatformUI.PLUGIN_ID + "/perf/workbench.restore"; //$NON-NLS-1$
-        events[START_WORKBENCH] = PlatformUI.PLUGIN_ID + "/perf/workbench.start"; //$NON-NLS-1$
-        events[ACTIVATE_PART] = PlatformUI.PLUGIN_ID + "/perf/part.activate"; //$NON-NLS-1$
-        events[BRING_PART_TO_TOP] = PlatformUI.PLUGIN_ID + "/perf/part.activate"; //$NON-NLS-1$
-        events[NOTIFY_PART_LISTENERS] = PlatformUI.PLUGIN_ID + "/perf/part.listeners"; //$NON-NLS-1$
-        events[NOTIFY_PAGE_LISTENERS] = PlatformUI.PLUGIN_ID + "/perf/page.listeners"; //$NON-NLS-1$
-        events[NOTIFY_PERSPECTIVE_LISTENERS] = PlatformUI.PLUGIN_ID + "/perf/perspective.listeners"; //$NON-NLS-1$
-        events[UI_JOB] = PlatformUI.PLUGIN_ID + "/perf/uijob"; //$NON-NLS-1$
-		events[CONTENT_TYPE_LOOKUP] = PlatformUI.PLUGIN_ID + "/perf/contentTypes"; //$NON-NLS-1$
-
-        for (int i = 0; i <= LAST_VALUE; i++) {
-        	//don't log any performance events if the general performance stats is disabled
-        	if (events[i] != null && PerformanceStats.ENABLED) {
-				debug[i] = PerformanceStats.isEnabled(events[i]);
-			}
-        }
-    }
-
-    /**
-     * Returns whether tracing of the given debug event is turned on.
-     * 
-     * @param event The event id
-     * @return <code>true</code> if tracing of this event is turned on,
-     * and <code>false</code> otherwise.
-     */
-    public static boolean isDebugging(int event) {
-        return debug[event];
-    }
-    
-    /**
-     * Indicates the start of a performance event
-     * 
-     * @param event The event id
-     * @param label The event label
-     */
-    public static void start(int event, String label) {
-        if (debug[event]) {
-			operations.put(event + label, new Long(System.currentTimeMillis()));
-		}
-    }
-
-    /**
-     * Indicates the end of a performance operation
-     * 
-     * @param event The event id
-     * @param blame An object that is responsible for the event that occurred,
-     * or that uniquely describes the event that occurred
-     * @param label The event label
-     */
-   	public static void end(int event, Object blame, String label) {
-        if (debug[event]) {
-            Long startTime = (Long) operations.remove(event + label);
-            if (startTime == null) {
-				return;
-			}
-            final long elapsed = System.currentTimeMillis() - startTime.longValue();
-//			System.out.println("Time - " + //$NON-NLS-1$
-//                    elapsed + events[event] + label);
-            PerformanceStats.getStats(events[event], blame).addRun(elapsed, label);
-        }
-    }
-   	
-   	/**
-   	 * Special hook to signal that application startup is complete and the event
-   	 * loop has started running.
-   	 */
-   	public static void startupComplete() {
-   		// We use a runtime debug option here for backwards compatibility (bug 96672)
-		// Note that this value is only relevant if the workspace chooser is not used.
-   		String option = Platform.getDebugOption(Platform.PI_RUNTIME + "/debug"); //$NON-NLS-1$
-		if (option == null || !"true".equalsIgnoreCase(option)) { //$NON-NLS-1$
-			return;
-		}
-		String startString = System.getProperty("eclipse.startTime"); //$NON-NLS-1$
-		if (startString == null) {
-			return;
-		}
-		try {
-			long start = Long.parseLong(startString);
-			long end = System.currentTimeMillis();
-			System.out.println("Startup complete: " + (end - start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (NumberFormatException e) {
-			//this is just debugging code -- ok to swallow exception
-		}
-   	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/model/ContributionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/model/ContributionService.java
deleted file mode 100644
index f5b9422..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/model/ContributionService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.model;
-
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.model.ContributionComparator;
-import org.eclipse.ui.model.IContributionService;
-
-public class ContributionService implements IContributionService {
-
-	private WorkbenchAdvisor advisor;
-
-	/**
-	 * @param advisor
-	 */
-	public ContributionService(WorkbenchAdvisor advisor) {
-		this.advisor = advisor;
-	}
-	
-	public ContributionComparator getComparatorFor(String contributionType) {
-		return advisor.getComparatorFor(contributionType);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java
deleted file mode 100644
index d29ab21..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/AdvancedValidationUserApprover.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.operations;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IAdvancedUndoableOperation;
-import org.eclipse.core.commands.operations.IAdvancedUndoableOperation2;
-import org.eclipse.core.commands.operations.IOperationApprover;
-import org.eclipse.core.commands.operations.IOperationApprover2;
-import org.eclipse.core.commands.operations.IOperationHistory;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
-import org.eclipse.core.runtime.IAdaptable;
-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.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * An operation approver that rechecks the validity of a proposed undo or redo
- * operation using
- * {@link IAdvancedUndoableOperation#computeUndoableStatus(IProgressMonitor)} or
- * {@link IAdvancedUndoableOperation#computeRedoableStatus(IProgressMonitor)}.
- * Some complex operations do not compute their validity in canUndo() or
- * canRedo() because it is too time-consuming. To save time on complex
- * validations, the true validity is not determined until it is time to perform
- * the operation.
- * </p>
- * <p>
- * Since 3.3, this operation approver also checks the validity of a proposed
- * execute by determining whether the redo is viable.
- * 
- * @since 3.1
- */
-public class AdvancedValidationUserApprover implements IOperationApprover,
-		IOperationApprover2 {
-	
-    /**
-     * Static to prevent opening of error dialogs for automated testing.
-     * 
-     * @since 3.3
-     */
-    public static boolean AUTOMATED_MODE = false;
-
-	private IUndoContext context;
-
-	private static final int EXECUTING = 1;
-
-	private static final int UNDOING = 2;
-
-	private static final int REDOING = 3;
-
-	private class StatusReportingRunnable implements IRunnableWithProgress {
-		IStatus status;
-
-		int doing;
-
-		IUndoableOperation operation;
-
-		IOperationHistory history;
-
-		IAdaptable uiInfo;
-
-		StatusReportingRunnable(IUndoableOperation operation,
-				IOperationHistory history, IAdaptable uiInfo, int doing) {
-			super();
-			this.operation = operation;
-			this.history = history;
-			this.doing = doing;
-			this.uiInfo = uiInfo;
-		}
-
-		// The casts to IAdvancedUndoableOperation and
-		// IAdvancedUndoableOperation2 are safe because these types were checked
-		// in the call chain.
-		public void run(IProgressMonitor pm) {
-			try {
-				switch (doing) {
-				case UNDOING:
-					status = ((IAdvancedUndoableOperation) operation)
-							.computeUndoableStatus(pm);
-					break;
-				case REDOING:
-					status = ((IAdvancedUndoableOperation) operation)
-							.computeRedoableStatus(pm);
-					break;
-				case EXECUTING:
-					status = ((IAdvancedUndoableOperation2) operation)
-							.computeExecutionStatus(pm);
-					break;
-				}
-
-			} catch (ExecutionException e) {
-				reportException(e, uiInfo);
-				status = IOperationHistory.OPERATION_INVALID_STATUS;
-			}
-		}
-
-		IStatus getStatus() {
-			return status;
-		}
-	}
-
-	/**
-	 * Create an AdvancedValidationUserApprover that performs advanced
-	 * validations on proposed undo and redo operations for a given undo
-	 * context.
-	 * 
-	 * @param context -
-	 *            the undo context of operations in question.
-	 */
-	public AdvancedValidationUserApprover(IUndoContext context) {
-		super();
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.IOperationApprover#proceedRedoing(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	public IStatus proceedRedoing(IUndoableOperation operation,
-			IOperationHistory history, IAdaptable uiInfo) {
-		return proceedWithOperation(operation, history, uiInfo, REDOING);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.IOperationApprover#proceedUndoing(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	public IStatus proceedUndoing(IUndoableOperation operation,
-			IOperationHistory history, IAdaptable uiInfo) {
-
-		return proceedWithOperation(operation, history, uiInfo, UNDOING);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.IOperationApprover2#proceedExecuting(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	public IStatus proceedExecuting(IUndoableOperation operation,
-			IOperationHistory history, IAdaptable uiInfo) {
-		return proceedWithOperation(operation, history, uiInfo, EXECUTING);
-	}
-
-	/*
-	 * Determine whether the operation in question is still valid.
-	 */
-	private IStatus proceedWithOperation(final IUndoableOperation operation,
-			final IOperationHistory history, final IAdaptable uiInfo,
-			final int doing) {
-
-		// return immediately if the operation is not relevant
-		if (!operation.hasContext(context)) {
-			return Status.OK_STATUS;
-		}
-
-		// if the operation does not support advanced validation,
-		// then we assume it is valid.
-		if (doing == EXECUTING) {
-			if (!(operation instanceof IAdvancedUndoableOperation2)) {
-				return Status.OK_STATUS;
-			}
-		} else {
-			if (!(operation instanceof IAdvancedUndoableOperation)) {
-				return Status.OK_STATUS;
-			}
-		}
-
-		// The next two methods make a number of UI calls, so we wrap the
-		// whole thing up in a syncExec.
-		final IStatus[] status = new IStatus[1];
-		Workbench.getInstance().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				// Compute the undoable or redoable status
-				status[0] = computeOperationStatus(operation, history, uiInfo,
-						doing);
-
-				// Report non-OK statuses to the user. In some cases, the user
-				// may choose to proceed, and the returned status will be
-				// different than what is reported.
-				if (!status[0].isOK()) {
-					status[0] = reportAndInterpretStatus(status[0], uiInfo,
-							operation, doing);
-				}
-
-			}
-		});
-
-		// If the operation is still not OK, inform the history that the
-		// operation has changed, since it was previously believed to be valid.
-		// We rely here on the ability of an IAdvancedUndoableOperation to
-		// correctly report canUndo() and canRedo() once the undoable and
-		// redoable status have been computed.
-		if (!status[0].isOK()) {
-			history.operationChanged(operation);
-		}
-		return status[0];
-	}
-
-	private IStatus computeOperationStatus(IUndoableOperation operation,
-			IOperationHistory history, IAdaptable uiInfo, int doing) {
-		try {
-			StatusReportingRunnable runnable = new StatusReportingRunnable(
-					operation, history, uiInfo, doing);
-			TimeTriggeredProgressMonitorDialog progressDialog = new TimeTriggeredProgressMonitorDialog(
-					getShell(uiInfo), PlatformUI.getWorkbench()
-							.getProgressService().getLongOperationTime());
-
-			progressDialog.run(false, true, runnable);
-			return runnable.getStatus();
-		} catch (OperationCanceledException e) {
-			return Status.CANCEL_STATUS;
-		} catch (InvocationTargetException e) {
-			reportException(e, uiInfo);
-			return IOperationHistory.OPERATION_INVALID_STATUS;
-		} catch (InterruptedException e) {
-			// Operation was cancelled and acknowledged by runnable with this
-			// exception. Do nothing.
-			return Status.CANCEL_STATUS;
-		}
-	}
-
-	/*
-	 * Report the specified execution exception to the log and to the user.
-	 */
-	private void reportException(Exception e, IAdaptable uiInfo) {
-		Throwable nestedException = StatusUtil.getCause(e);
-		Throwable exception = (nestedException == null) ? e : nestedException;
-		String title = WorkbenchMessages.Error;
-		String message = WorkbenchMessages.WorkbenchWindow_exceptionMessage;
-		String exceptionMessage = exception.getMessage();
-		if (exceptionMessage == null) {
-			exceptionMessage = message;
-		}
-		IStatus status = new Status(IStatus.ERROR,
-				WorkbenchPlugin.PI_WORKBENCH, 0, exceptionMessage, exception);
-		WorkbenchPlugin.log(message, status);
-
-		boolean createdShell = false;
-		Shell shell = getShell(uiInfo);
-		if (shell == null) {
-			createdShell = true;
-			shell = new Shell();
-		}
-		ErrorDialog.openError(shell, title, message, status);
-		if (createdShell) {
-			shell.dispose();
-		}
-	}
-
-	/*
-	 * Report a non-OK status to the user
-	 */
-	private IStatus reportAndInterpretStatus(IStatus status, IAdaptable uiInfo,
-			IUndoableOperation operation, int doing) {
-		// Nothing to report if we are running automated tests.  We will treat
-		// warnings as if they were authorized by the user.
-		if (AUTOMATED_MODE) {
-			if (status.getSeverity() == IStatus.WARNING) {
-				return Status.OK_STATUS;
-			}
-			return status;
-		}
-		
-		// CANCEL status is assumed to be initiated by the user, so there
-		// is nothing to report.
-		if (status.getSeverity() == IStatus.CANCEL) {
-			return status;
-		}
-
-		// Other status severities are reported with a message dialog.
-		// First obtain a shell and set up the dialog title.
-		boolean createdShell = false;
-		IStatus reportedStatus = status;
-
-		Shell shell = getShell(uiInfo);
-		if (shell == null) {
-			createdShell = true;
-			shell = new Shell();
-		}
-
-		// Set up the dialog. For non-error statuses, we use a warning dialog
-		// that allows the user to proceed or to cancel out of the operation.
-
-		if (!(status.getSeverity() == IStatus.ERROR)) {
-			String warning, title;
-			switch (doing) {
-			case UNDOING:
-				warning = WorkbenchMessages.Operations_proceedWithNonOKUndoStatus;
-				if (status.getSeverity() == IStatus.INFO) {
-					title = WorkbenchMessages.Operations_undoInfo;
-				} else {
-					title = WorkbenchMessages.Operations_undoWarning;
-				}
-				break;
-			case REDOING:
-				warning = WorkbenchMessages.Operations_proceedWithNonOKRedoStatus;
-				if (status.getSeverity() == IStatus.INFO) {
-					title = WorkbenchMessages.Operations_redoInfo;
-				} else {
-					title = WorkbenchMessages.Operations_redoWarning;
-				}
-				break;
-			default: // EXECUTING
-				warning = WorkbenchMessages.Operations_proceedWithNonOKExecuteStatus;
-				if (status.getSeverity() == IStatus.INFO) {
-					title = WorkbenchMessages.Operations_executeInfo;
-				} else {
-					title = WorkbenchMessages.Operations_executeWarning;
-				}
-				break;
-			}
-
-			String message = NLS.bind(warning, new Object[] { status.getMessage(), operation.getLabel() });
-			String[] buttons = new String[] { IDialogConstants.YES_LABEL,
-					IDialogConstants.NO_LABEL };
-			MessageDialog dialog = new MessageDialog(shell, title, null,
-					message, MessageDialog.WARNING, buttons, 0);
-			int dialogAnswer = dialog.open();
-			// The user has been given the specific status and has chosen
-			// to proceed or to cancel. The user choice determines what
-			// the status should be at this point, OK or CANCEL.
-			if (dialogAnswer == Window.OK) {
-				reportedStatus = Status.OK_STATUS;
-			} else {
-				reportedStatus = Status.CANCEL_STATUS;
-			}
-		} else {
-			String title, stopped;
-			switch (doing) {
-			case UNDOING:
-				title = WorkbenchMessages.Operations_undoProblem;
-				stopped = WorkbenchMessages.Operations_stoppedOnUndoErrorStatus;
-				break;
-			case REDOING:
-				title = WorkbenchMessages.Operations_redoProblem;
-				stopped = WorkbenchMessages.Operations_stoppedOnRedoErrorStatus;
-				break;
-			default: // EXECUTING
-				title = WorkbenchMessages.Operations_executeProblem;
-				stopped = WorkbenchMessages.Operations_stoppedOnExecuteErrorStatus;
-
-				break;
-			}
-
-			// It is an error condition. The user has no choice to proceed, so
-			// we only report what has gone on. We use a warning icon instead of
-			// an error icon since there has not yet been a failure.
-
-			String message = NLS.bind(stopped, status.getMessage(), operation
-					.getLabel());
-
-			MessageDialog dialog = new MessageDialog(shell, title, null,
-					message, MessageDialog.WARNING,
-					new String[] { IDialogConstants.OK_LABEL }, 0); // ok
-			dialog.open();
-		}
-
-		if (createdShell) {
-			shell.dispose();
-		}
-
-		return reportedStatus;
-
-	}
-
-	/*
-	 * Return the shell described by the supplied uiInfo, or null if no shell is
-	 * described.
-	 */
-	Shell getShell(IAdaptable uiInfo) {
-		if (uiInfo != null) {
-			Shell shell = (Shell) Util.getAdapter(uiInfo, Shell.class);
-			if (shell != null) {
-				return shell;
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java
deleted file mode 100644
index 6123b0c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/TimeTriggeredProgressMonitorDialog.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.operations;
-
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * The TimeTriggeredProgressMonitorDialog is a progress monitor dialog that only
- * opens if the runnable provided exceeds the specified long operation time.
- * 
- * @since 3.1
- */
-public class TimeTriggeredProgressMonitorDialog extends ProgressMonitorDialog {
-
-	/**
-	 * The time considered to be the long operation time.
-	 */
-	private int longOperationTime;
-
-	/**
-	 * The time at which the dialog should be opened.
-	 */
-	private long triggerTime = -1;
-
-	/**
-	 * Whether or not we've already opened a dialog.
-	 */
-	private boolean dialogOpened = false;
-	
-	/**
-	 * Wrappered monitor so we can check ticks and open the dialog when
-	 * appropriate
-	 */
-	private IProgressMonitor wrapperedMonitor;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param parent
-	 *            the parent of the dialog
-	 * @param longOperationTime
-	 *            the time (in milliseconds) considered to be a long enough
-	 *            execution time to warrant opening a dialog.
-	 */
-	public TimeTriggeredProgressMonitorDialog(Shell parent,
-			int longOperationTime) {
-		super(parent);
-		setOpenOnRun(false);
-		this.longOperationTime = longOperationTime;
-	}
-
-   /**
-	 * Create a monitor for the receiver that wrappers the superclasses monitor.
-	 * 
-	 */
-    public void createWrapperedMonitor() {
-        wrapperedMonitor = new IProgressMonitor() {
-
-            IProgressMonitor superMonitor = TimeTriggeredProgressMonitorDialog.super
-                    .getProgressMonitor();
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String,
-			 *      int)
-			 */
-            public void beginTask(String name, int totalWork) {
-                superMonitor.beginTask(name, totalWork);
-                checkTicking();
-            }
-
-            /**
-			 * Check if we have ticked in the last 800ms.
-			 */
-            private void checkTicking() {
-            	if (triggerTime < 0) {
-					triggerTime = System.currentTimeMillis() + longOperationTime;
-				}
-    			if (!dialogOpened && System.currentTimeMillis() > triggerTime) {
-    				open();
-    				dialogOpened = true;
-    			}
-            }
-
-
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#done()
-			 */
-            public void done() {
-                superMonitor.done();
-                checkTicking();
-            }
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
-			 */
-            public void internalWorked(double work) {
-                superMonitor.internalWorked(work);
-                checkTicking();
-            }
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#isCanceled()
-			 */
-            public boolean isCanceled() {
-                return superMonitor.isCanceled();
-            }
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#setCanceled(boolean)
-			 */
-            public void setCanceled(boolean value) {
-                superMonitor.setCanceled(value);
-
-            }
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-			 */
-            public void setTaskName(String name) {
-                superMonitor.setTaskName(name);
-                checkTicking();
-
-            }
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-			 */
-            public void subTask(String name) {
-                superMonitor.subTask(name);
-                checkTicking();
-            }
-
-            /*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
-			 */
-            public void worked(int work) {
-                superMonitor.worked(work);
-                checkTicking();
-
-            }
-        };
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#getProgressMonitor()
-	 */
-    public IProgressMonitor getProgressMonitor() {
-        if (wrapperedMonitor == null) {
-			createWrapperedMonitor();
-		}
-        return wrapperedMonitor;
-    }
-    
-   /*
-    * (non-Javadoc) 
-    * 
-    * @see org.eclipse.jface.operations.IRunnableContext#run(boolean, boolean, IRunnableWithProgress)
-    */
-    public void run(final boolean fork, final boolean cancelable,
-            final IRunnableWithProgress runnable) throws InvocationTargetException,
-            InterruptedException {
-    	final InvocationTargetException[] invokes = new InvocationTargetException[1];
-        final InterruptedException[] interrupt = new InterruptedException[1];
-        Runnable dialogWaitRunnable = new Runnable() {
-    		public void run() {
-    			try {
-    				TimeTriggeredProgressMonitorDialog.super.run(fork, cancelable, runnable);
-    			} catch (InvocationTargetException e) {
-    				invokes[0] = e;
-    			} catch (InterruptedException e) {
-    				interrupt[0]= e;
-    			}
-    		}
-        };
-        final Display display = PlatformUI.getWorkbench().getDisplay();
-        if (display == null) {
-			return;
-		}
-        //show a busy cursor until the dialog opens
-        BusyIndicator.showWhile(display, dialogWaitRunnable);
-        if (invokes[0] != null) {
-            throw invokes[0];
-        }
-        if (interrupt[0] != null) {
-            throw interrupt[0];
-        }
-     }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java
deleted file mode 100644
index 6a86fde..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/operations/WorkbenchOperationSupport.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.operations;
-
-import org.eclipse.core.commands.operations.DefaultOperationHistory;
-import org.eclipse.core.commands.operations.IOperationApprover;
-import org.eclipse.core.commands.operations.IOperationHistory;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.ObjectUndoContext;
-import org.eclipse.core.commands.operations.OperationHistoryFactory;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.operations.IWorkbenchOperationSupport;
-
-/**
- * <p>
- * Provides undoable operation support for the workbench.  This includes  providing access to the default 
- * operation history and installing a workbench-specific operation approver that enforces a linear
- * undo strategy.
- * </p>
- * 
- * @since 3.1
- */
-public class WorkbenchOperationSupport implements IWorkbenchOperationSupport {
-
-	private ObjectUndoContext undoContext;
-	private IOperationApprover approver;
-	
-	// initialize debug options
-	static {
-		DefaultOperationHistory.DEBUG_OPERATION_HISTORY_UNEXPECTED = Policy.DEBUG_OPERATIONS;
-		DefaultOperationHistory.DEBUG_OPERATION_HISTORY_OPENOPERATION = Policy.DEBUG_OPERATIONS;
-		DefaultOperationHistory.DEBUG_OPERATION_HISTORY_APPROVAL = Policy.DEBUG_OPERATIONS;
-		DefaultOperationHistory.DEBUG_OPERATION_HISTORY_NOTIFICATION = Policy.DEBUG_OPERATIONS && Policy.DEBUG_OPERATIONS_VERBOSE;
-		DefaultOperationHistory.DEBUG_OPERATION_HISTORY_DISPOSE = Policy.DEBUG_OPERATIONS && Policy.DEBUG_OPERATIONS_VERBOSE;
-	}
-
-	/**
-	 * Disposes of anything created by the operation support.
-	 */
-	public void dispose() {
-		/*
-		 * uninstall the operation approver that we added to the operation history
-		 */ 
-		getOperationHistory().removeOperationApprover(approver);
-		/*
-		 * dispose of all operations using our context
-		 */
-		getOperationHistory().dispose(getUndoContext(), true, true, true);
-	}
-
-	/**
-	 * Returns the undo context for workbench operations.
-	 * The workbench configures an undo context with the appropriate policies
-	 * for the workbench undo model.  
-	 * 
-	 * @return the workbench operation context.
-	 * @since 3.1
-	 */
-	public IUndoContext getUndoContext() {
-		if (undoContext == null) {
-			undoContext = new ObjectUndoContext(PlatformUI.getWorkbench(),
-					"Workbench Context"); //$NON-NLS-1$
-		}
-		return undoContext;
-	}
-
-	/**
-	 * Returns the workbench operation history.
-	 * 
-	 * @return the operation history for workbench operations.
-	 * @since 3.1
-	 */
-	public IOperationHistory getOperationHistory() {
-		IOperationHistory history = OperationHistoryFactory.getOperationHistory();
-		/*
-		 * Set up the history if we have not done so before.
-		 */
-		if (approver == null) {
-			/*
-			 * install an operation approver that prevents linear undo violations
-			 * in any context
-			 */
-			approver = new AdvancedValidationUserApprover(getUndoContext());
-			history.addOperationApprover(approver);
-			/*
-			 * set a limit for the workbench undo context
-			 */
-			history.setLimit(getUndoContext(), 25);
-		}
-		return history;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartHost.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartHost.java
deleted file mode 100644
index 0ac444f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartHost.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-
-public interface IPartHost {
-	public IWorkbenchPartSite getSite();
-	public IEditorPart getActiveEditor();
-	public IWorkbenchPart getActivePart();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartPropertyProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartPropertyProvider.java
deleted file mode 100644
index a1e8668..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IPartPropertyProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Provides the listeners and get methods that are available to Eclipse 3.0
- * IWorkbenchPart, IEditorPart, IViewPart, and IWorkbenchPart2. Every new-style
- * part needs to be supplied with one of these so that it can later be adapted
- * back to an IWorkbenchPart.
- * <p>
- * If the new-style part wraps an old-style part, it supply an implementation that
- * redirects directly to the old-style part (see <code>OldPartToNewAdapter</code>).
- * When wrapping a new-style part inside an old-style part, the wrapper should supply 
- * an <code>IPartPropertyProvider</code>. Otherwise, the new-style part will use the 
- * default implementation (<code>PartPropertyProvider</code>).
- * </p>
- * 
- * @since 3.1
- */
-public interface IPartPropertyProvider {
-    public void addPropertyListener(IWorkbenchPart part, IPropertyListener l);
-    public void removePropertyListener(IWorkbenchPart part, IPropertyListener l);
-    public String getTitleToolTip();
-    public Image getTitleImage();
-    public String getPartName();
-    public String getTitle();
-    public String getContentDescription();
-    public IEditorInput getEditorInput();
-    public boolean isDirty();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IWorkbenchScopeConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IWorkbenchScopeConstants.java
deleted file mode 100644
index d782fe8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/IWorkbenchScopeConstants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-/**
- * @since 3.1
- */
-public interface IWorkbenchScopeConstants {
-    public static final String PART_DELEGATOR_SCOPE = "org.eclipse.ui.part.delegator"; //$NON-NLS-1$
-    public static final String SITE_MULTIPLEXER_SCOPE = "org.eclipse.ui.site.multiplexer"; //$NON-NLS-1$
-    public static final String SITE_SCOPE = "org.eclipse.ui.site"; //$NON-NLS-1$
-    public static final String PART_SCOPE = "org.eclipse.ui.part"; //$NON-NLS-1$
-    public static final String PLUGIN_SCOPE = "org.eclipse.ui.components.plugin"; //$NON-NLS-1$ 
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullEditorInput.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullEditorInput.java
deleted file mode 100644
index b2ebf40..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullEditorInput.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import org.eclipse.core.runtime.Assert;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.internal.EditorReference;
-
-/**
- * @since 3.1
- */
-public class NullEditorInput implements IEditorInput {
-
-	private EditorReference editorReference;
-
-	/**
-	 * Creates a <code>NullEditorInput</code>.
-	 */
-	public NullEditorInput() {
-	}
-
-	/**
-	 * Creates a <code>NullEditorInput</code> for the
-	 * given editor reference.
-	 * 
-	 * @param editorReference the editor reference
-	 * @since 3.4
-	 */
-	public NullEditorInput(EditorReference editorReference) {
-		Assert.isLegal(editorReference != null);
-		this.editorReference= editorReference;
-
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorInput#exists()
-     */
-    public boolean exists() {
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
-     */
-    public ImageDescriptor getImageDescriptor() {
-        return ImageDescriptor.getMissingImageDescriptor();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorInput#getName()
-     */
-    public String getName() {
-		if (editorReference != null)
-			return editorReference.getName();
-        return ""; //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorInput#getPersistable()
-     */
-    public IPersistableElement getPersistable() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorInput#getToolTipText()
-     */
-    public String getToolTipText() {
-		if (editorReference != null)
-			return editorReference.getTitleToolTip();
-        return ""; //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class adapter) {
-        return null;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullPersistable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullPersistable.java
deleted file mode 100644
index 4b0f875..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/NullPersistable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPersistable;
-
-/**
- * @since 3.1
- */
-public class NullPersistable implements IPersistable {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.part.components.interfaces.IPersistable#saveState(org.eclipse.ui.IMemento)
-     */
-    public void saveState(IMemento memento) {
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/Part.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/Part.java
deleted file mode 100644
index 4d0a904..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/Part.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IPersistable;
-
-/**
- * A part is a high-level object that manages an SWT control. The lifecycle
- * of a part matches that of its control. The part creates its
- * control in its constructor, and it performs any cleanup by hooking
- * a dispose listener on the control.
- * 
- * <p>
- * Not intended to be subclassed by clients. 
- * </p>
- * 
- * @since 3.1
- */
-public abstract class Part implements IPersistable
-{
-    
-    /**
-     * Returns the part's control. The owner of a part may attach
-     * layout data to this control, and may give the part focus by
-     * calling getControl().setFocus().
-     *
-     * @return the part's control
-     */
-    public abstract Control getControl();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/SelectionProviderAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/SelectionProviderAdapter.java
deleted file mode 100644
index f7f9cbf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/SelectionProviderAdapter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-
-/**
- * 
- */
-class SelectionProviderAdapter implements ISelectionProvider {
-
-    List listeners = new ArrayList();
-
-    ISelection theSelection = StructuredSelection.EMPTY;
-
-    public void addSelectionChangedListener(ISelectionChangedListener listener) {
-        listeners.add(listener);
-    }
-
-    public ISelection getSelection() {
-        return theSelection;
-    }
-
-    public void removeSelectionChangedListener(
-            ISelectionChangedListener listener) {
-        listeners.remove(listener);
-    }
-
-    public void setSelection(ISelection selection) {
-        theSelection = selection;
-        final SelectionChangedEvent e = new SelectionChangedEvent(this, selection);
-        Object[] listenersArray = listeners.toArray();
-        
-        for (int i = 0; i < listenersArray.length; i++) {
-            final ISelectionChangedListener l = (ISelectionChangedListener) listenersArray[i];
-            Platform.run(new SafeRunnable() {
-                public void run() {
-                    l.selectionChanged(e);
-                }
-            });
-		}
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/StatusPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/StatusPart.java
deleted file mode 100644
index 96752e1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/part/StatusPart.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.part;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-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.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-import org.eclipse.core.runtime.IStatus;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-
-/**
- * @since 3.1
- */
-public class StatusPart {
-    
-    boolean showingDetails = false;
-    private Button detailsButton;
-    private Composite detailsArea;
-    private Control details = null;
-    private IStatus reason;
-    
-    public StatusPart(final Composite parent, IStatus reason_) {
-    	Color bgColor= parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
-		Color fgColor= parent.getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND);
-    	
-		parent.setBackground(bgColor);
-		parent.setForeground(fgColor);
-
-        this.reason = reason_;
-        GridLayout layout = new GridLayout();
-        
-        layout.numColumns = 3;
-        
-        int spacing = 8;
-        int margins = 8;
-        layout.marginBottom = margins;
-        layout.marginTop = margins;
-        layout.marginLeft = margins;
-        layout.marginRight = margins;
-        layout.horizontalSpacing = spacing;
-        layout.verticalSpacing = spacing;
-        parent.setLayout(layout);
-        
-        Label imageLabel = new Label(parent, SWT.NONE);
-        imageLabel.setBackground(bgColor);
-        Image image = getImage();
-        if (image != null) {
-            image.setBackground(bgColor);
-            imageLabel.setImage(image);
-            imageLabel.setLayoutData(new GridData(
-                    GridData.HORIZONTAL_ALIGN_CENTER
-                            | GridData.VERTICAL_ALIGN_BEGINNING));
-        }
-        
-        Text text = new Text(parent, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP);
-        text.setBackground(bgColor);
-        text.setForeground(fgColor);
-
-        //text.setForeground(JFaceColors.getErrorText(text.getDisplay()));
-		text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-        text.setText(reason.getMessage());
-        
-        detailsButton = new Button(parent, SWT.PUSH);
-        detailsButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                showDetails(!showingDetails);
-            }
-        });
-        
-        detailsButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
-        detailsButton.setVisible(reason.getException() != null);
-        
-        updateDetailsText();
-        
-        detailsArea = new Composite(parent, SWT.NONE);
-        detailsArea.setBackground(bgColor);
-        detailsArea.setForeground(fgColor);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.horizontalSpan = 3;
-        data.verticalSpan = 1;
-        detailsArea.setLayoutData(data);
-        detailsArea.setLayout(new FillLayout());
-        parent.layout(true);
-    }
-    
-    /**
-     * Return the image for the upper-left corner of this part
-     *
-     * @return the image
-     */
-    private Image getImage() {
-        Display d = Display.getCurrent();
-        
-        switch(reason.getSeverity()) {
-        case IStatus.ERROR:
-            return d.getSystemImage(SWT.ICON_ERROR);
-        case IStatus.WARNING:
-            return d.getSystemImage(SWT.ICON_WARNING);
-        default:
-            return d.getSystemImage(SWT.ICON_INFORMATION);
-        }
-    }
-    
-    private void showDetails(boolean shouldShow) {
-        if (shouldShow == showingDetails) {
-            return;
-        }
-        this.showingDetails = shouldShow;
-        updateDetailsText();
-    }
-    
-    private void updateDetailsText() {
-        if (details != null) {
-            details.dispose();
-            details = null;
-        }
-        
-        if (showingDetails) {
-            detailsButton.setText(IDialogConstants.HIDE_DETAILS_LABEL);
-            Text detailsText = new Text(detailsArea, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
-                    | SWT.MULTI | SWT.READ_ONLY | SWT.LEFT_TO_RIGHT);
-            detailsText.setText(getDetails(reason));
-            detailsText.setBackground(detailsText.getDisplay().getSystemColor(
-                    SWT.COLOR_LIST_BACKGROUND));
-            details = detailsText;
-            detailsArea.layout(true);
-        } else {
-            detailsButton.setText(IDialogConstants.SHOW_DETAILS_LABEL);
-        }
-    }
-
-    
-    private String getDetails(IStatus status) {
-        if (status.getException() != null) {
-            return getStackTrace(status.getException());
-        }
-        
-        return ""; //$NON-NLS-1$
-    }
-
-    private String getStackTrace(Throwable throwable) {
-        StringWriter swriter = new StringWriter();
-        PrintWriter pwriter = new PrintWriter(swriter);
-        throwable.printStackTrace(pwriter);
-        pwriter.flush();
-        pwriter.close();
-        return swriter.toString();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractBooleanListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractBooleanListener.java
deleted file mode 100644
index 985cb7d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractBooleanListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-/**
- * @since 3.1
- */
-public abstract class AbstractBooleanListener extends AbstractPropertyListener {
-
-    private IDynamicPropertyMap map;
-    private boolean defaultValue;
-    private String propertyId;
-    
-    public AbstractBooleanListener() {
-    }
-    
-    public void attach(IDynamicPropertyMap map, String propertyId, boolean defaultValue) {
-        this.defaultValue = defaultValue;
-        this.propertyId = propertyId;
-        if (this.map != null) {
-            this.map.removeListener(this);
-        }
-        
-        this.map = map;
-        
-        if (this.map != null) {
-            this.map.addListener(new String[]{propertyId}, this);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.AbstractPropertyListener#update()
-     */
-    protected void update() {
-        handleValue(PropertyUtil.get(map, propertyId, defaultValue));
-    }
-
-    /**
-     * @param b
-     * @since 3.1
-     */
-    protected abstract void handleValue(boolean b);
-   
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractIntegerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractIntegerListener.java
deleted file mode 100644
index 0b2174a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractIntegerListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-/**
- * @since 3.1
- */
-public abstract class AbstractIntegerListener extends AbstractPropertyListener {
-
-    private IDynamicPropertyMap map;
-    private int defaultValue;
-    private String propertyId;
-    
-    public AbstractIntegerListener() {
-    }
-    
-    public void attach(IDynamicPropertyMap map, String propertyId, int defaultValue) {
-        this.defaultValue = defaultValue;
-        this.propertyId = propertyId;
-        if (this.map != null) {
-            this.map.removeListener(this);
-        }
-        
-        this.map = map;
-        
-        if (this.map != null) {
-            this.map.addListener(new String[]{propertyId}, this);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.AbstractPropertyListener#update()
-     */
-    protected void update() {
-        handleValue(PropertyUtil.get(map, propertyId, defaultValue));
-    }
-
-    /**
-     * @param b
-     * @since 3.1
-     */
-    protected abstract void handleValue(int b);
-   
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractPropertyListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractPropertyListener.java
deleted file mode 100644
index bd08a25..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/AbstractPropertyListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-/**
- * @since 3.1
- */
-public abstract class AbstractPropertyListener implements IPropertyMapListener {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMapListener#propertyChanged(java.lang.String[])
-     */
-    public void propertyChanged(String[] propertyIds) {
-        update();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMapListener#listenerAttached()
-     */
-    public void listenerAttached() {
-        update();
-    }
-
-    protected abstract void update();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/Base64.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/Base64.java
deleted file mode 100644
index 9d2e504..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/Base64.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-/**
- * Base64 is a helper class for converting byte arrays to and 
- * from base 64 encoded Strings.
- *
- */
-class Base64 {
-
-	private static final byte equalSign = (byte) '=';
-
-	static char digits[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', //
-			'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', //
-			'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', //
-			'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};
-
-	/**
-	 * This method decodes the byte array in base 64 encoding into a char array
-	 * Base 64 encoding has to be according to the specification given by the
-	 * RFC 1521 (5.2).
-	 * 
-	 * @param data the encoded byte array
-	 * @return the decoded byte array
-	 */
-	public static byte[] decode(byte[] data) {
-		if (data.length == 0) {
-			return data;
-		}
-		int lastRealDataIndex = data.length - 1;
-		while (data[lastRealDataIndex] == equalSign) {
-			lastRealDataIndex--;
-		}
-		// original data digit is 8 bits long, but base64 digit is 6 bits long
-		int padBytes = data.length - 1 - lastRealDataIndex;
-		int byteLength = data.length * 6 / 8 - padBytes;
-		byte[] result = new byte[byteLength];
-		// Each 4 bytes of input (encoded) we end up with 3 bytes of output
-		int dataIndex = 0;
-		int resultIndex = 0;
-		int allBits = 0;
-		// how many result chunks we can process before getting to pad bytes
-		int resultChunks = (lastRealDataIndex + 1) / 4;
-		for (int i = 0; i < resultChunks; i++) {
-			allBits = 0;
-			// Loop 4 times gathering input bits (4 * 6 = 24)
-			for (int j = 0; j < 4; j++) {
-				allBits = (allBits << 6) | decodeDigit(data[dataIndex++]);
-			}
-			// Loop 3 times generating output bits (3 * 8 = 24)
-			for (int j = resultIndex + 2; j >= resultIndex; j--) {
-				result[j] = (byte) (allBits & 0xff); // Bottom 8 bits
-				allBits = allBits >>> 8;
-			}
-			resultIndex += 3; // processed 3 result bytes
-		}
-		// Now we do the extra bytes in case the original (non-encoded) data
-		// was not multiple of 3 bytes
-		switch (padBytes) {
-			case 1 :
-				// 1 pad byte means 3 (4-1) extra Base64 bytes of input, 18
-				// bits, of which only 16 are meaningful
-				// Or: 2 bytes of result data
-				allBits = 0;
-				// Loop 3 times gathering input bits
-				for (int j = 0; j < 3; j++) {
-					allBits = (allBits << 6) | decodeDigit(data[dataIndex++]);
-				}
-				// NOTE - The code below ends up being equivalent to allBits =
-				// allBits>>>2
-				// But we code it in a non-optimized way for clarity
-				// The 4th, missing 6 bits are all 0
-				allBits = allBits << 6;
-				// The 3rd, missing 8 bits are all 0
-				allBits = allBits >>> 8;
-				// Loop 2 times generating output bits
-				for (int j = resultIndex + 1; j >= resultIndex; j--) {
-					result[j] = (byte) (allBits & 0xff); // Bottom 8
-					// bits
-					allBits = allBits >>> 8;
-				}
-				break;
-			case 2 :
-				// 2 pad bytes mean 2 (4-2) extra Base64 bytes of input, 12 bits
-				// of data, of which only 8 are meaningful
-				// Or: 1 byte of result data
-				allBits = 0;
-				// Loop 2 times gathering input bits
-				for (int j = 0; j < 2; j++) {
-					allBits = (allBits << 6) | decodeDigit(data[dataIndex++]);
-				}
-				// NOTE - The code below ends up being equivalent to allBits =
-				// allBits>>>4
-				// But we code it in a non-optimized way for clarity
-				// The 3rd and 4th, missing 6 bits are all 0
-				allBits = allBits << 6;
-				allBits = allBits << 6;
-				// The 3rd and 4th, missing 8 bits are all 0
-				allBits = allBits >>> 8;
-				allBits = allBits >>> 8;
-				result[resultIndex] = (byte) (allBits & 0xff); // Bottom
-				// 8
-				// bits
-				break;
-		}
-		return result;
-	}
-
-	/**
-	 * This method converts a Base 64 digit to its numeric value.
-	 * 
-	 * @param data digit (character) to convert
-	 * @return value for the digit
-	 */
-	static int decodeDigit(byte data) {
-		char charData = (char) data;
-		if (charData <= 'Z' && charData >= 'A') {
-			return charData - 'A';
-		}
-		if (charData <= 'z' && charData >= 'a') {
-			return charData - 'a' + 26;
-		}
-		if (charData <= '9' && charData >= '0') {
-			return charData - '0' + 52;
-		}
-		switch (charData) {
-			case '+' :
-				return 62;
-			case '/' :
-				return 63;
-			default :
-				throw new IllegalArgumentException("Invalid char to decode: " + data); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * This method encodes the byte array into a char array in base 64 according
-	 * to the specification given by the RFC 1521 (5.2).
-	 * 
-	 * @param data the encoded char array
-	 * @return the byte array that needs to be encoded
-	 */
-	public static byte[] encode(byte[] data) {
-		int sourceChunks = data.length / 3;
-		int len = ((data.length + 2) / 3) * 4;
-		byte[] result = new byte[len];
-		int extraBytes = data.length - (sourceChunks * 3);
-		// Each 4 bytes of input (encoded) we end up with 3 bytes of output
-		int dataIndex = 0;
-		int resultIndex = 0;
-		int allBits = 0;
-		for (int i = 0; i < sourceChunks; i++) {
-			allBits = 0;
-			// Loop 3 times gathering input bits (3 * 8 = 24)
-			for (int j = 0; j < 3; j++) {
-				allBits = (allBits << 8) | (data[dataIndex++] & 0xff);
-			}
-			// Loop 4 times generating output bits (4 * 6 = 24)
-			for (int j = resultIndex + 3; j >= resultIndex; j--) {
-				result[j] = (byte) digits[(allBits & 0x3f)]; // Bottom
-				// 6
-				// bits
-				allBits = allBits >>> 6;
-			}
-			resultIndex += 4; // processed 4 result bytes
-		}
-		// Now we do the extra bytes in case the original (non-encoded) data
-		// is not multiple of 4 bytes
-		switch (extraBytes) {
-			case 1 :
-				allBits = data[dataIndex++]; // actual byte
-				allBits = allBits << 8; // 8 bits of zeroes
-				allBits = allBits << 8; // 8 bits of zeroes
-				// Loop 4 times generating output bits (4 * 6 = 24)
-				for (int j = resultIndex + 3; j >= resultIndex; j--) {
-					result[j] = (byte) digits[(allBits & 0x3f)]; // Bottom
-					// 6
-					// bits
-					allBits = allBits >>> 6;
-				}
-				// 2 pad tags
-				result[result.length - 1] = (byte) '=';
-				result[result.length - 2] = (byte) '=';
-				break;
-			case 2 :
-				allBits = data[dataIndex++]; // actual byte
-				allBits = (allBits << 8) | (data[dataIndex++] & 0xff); // actual
-				// byte
-				allBits = allBits << 8; // 8 bits of zeroes
-				// Loop 4 times generating output bits (4 * 6 = 24)
-				for (int j = resultIndex + 3; j >= resultIndex; j--) {
-					result[j] = (byte) digits[(allBits & 0x3f)]; // Bottom
-					// 6
-					// bits
-					allBits = allBits >>> 6;
-				}
-				// 1 pad tag
-				result[result.length - 1] = (byte) '=';
-				break;
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java
deleted file mode 100644
index 1b274a9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IDynamicPropertyMap.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-/**
- * @since 3.1
- */
-public interface IDynamicPropertyMap extends IPropertyMap {
-    /**
-     * Attaches a property map listener to this map. The listener will be notified 
-     * whenever one of the properties in the map is changed, added, or removed.
-     *  
-     * @param listener
-     * @since 3.1
-     */
-    public void addListener(IPropertyMapListener listener);
-    
-    /**
-     * Attaches a listener that will receive notifications when any
-     * of the given properties change. If an identical listener is already registered,
-     * then this will add additional IDs to the set of properties being monitored
-     * by the given listener.
-     * 
-     * @param listener
-     * @param propertyIds
-     * @since 3.1
-     */
-    public void addListener(String[] propertyIds, IPropertyMapListener listener);
-
-    /**
-     * Removes a property map listener from this map . The listener will no longer 
-     * be notified whenever one of the properties in the map is changed, added, or removed.
-     *  
-     * @param listener
-     * @since 3.1
-     */
-    public void removeListener(IPropertyMapListener listener);    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMap.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMap.java
deleted file mode 100644
index 90d7965..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMap.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Set;
-
-/**
- * Eclipse provides many different classes and interfaces that map ids onto values and
- * send property change notifications (some examples are themes, preference stores,
- * xml nodes, property providers, and others). This interface is intended to provide
- * interoperability between these various classes. 
- * 
- * @since 3.1
- */
-public interface IPropertyMap {
-    
-    /**
-     * Returns the set of keys that are recognized by this property map
-     * (optional operation). 
-     * 
-     * @return the set of valid keys for this map
-     * @throws UnsupportedOperationException if this type of property map
-     * cannot compute the set of valid keys
-     * @since 3.1
-     */
-    public Set keySet();
-    
-    /**
-     * Returns the value of the given property. Returns null if the given
-     * property does not exist, cannot be converted into the expected type,
-     * or if the value of the property is null.
-     * 
-     * @param propertyId property ID to query
-     * @param propertyType type of the expected return value
-     * @return an object of the given propertyType or null if the property
-     * does not exist or has the wrong type
-     * @since 3.1
-     */
-    public Object getValue(String propertyId, Class propertyType);
-    
-    /**
-     * If this map represents the union of multiple property maps, this
-     * returns true iff the property existed in every map in the union.
-     * Always returns true if this map was not computed from the union
-     * of multiple maps. 
-     * 
-     * @param propertyId
-     * @return true iff the given property existed in every child map
-     * @since 3.1
-     */
-    public boolean isCommonProperty(String propertyId);
-    
-    /**
-     * Returns true iff the given property exists.
-     * 
-     * @param propertyId
-     * @return true iff the given property exists in this map
-     * @since 3.1
-     */
-    public boolean propertyExists(String propertyId);
-      
-    /**
-     * Sets the value of the given property to the given value (optional 
-     * operation). 
-     * 
-     * @param propertyId
-     * @param newValue
-     * @throws UnsupportedOperationException if this type of property map
-     * is read-only
-     * @since 3.1
-     */
-    public void setValue(String propertyId, Object newValue);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMapListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMapListener.java
deleted file mode 100644
index ba24ad3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/IPropertyMapListener.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-/**
- * @since 3.1
- */
-public interface IPropertyMapListener {
-    public void propertyChanged(String[] propertyIds);
-    public void listenerAttached();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceStoreAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceStoreAdapter.java
deleted file mode 100644
index 9ccb3a8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceStoreAdapter.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Set;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * @since 3.1
- */
-public final class PreferenceStoreAdapter extends PropertyMapAdapter {
-
-    private IPreferenceStore store;
-    
-    private IPropertyChangeListener listener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            firePropertyChange(event.getProperty());
-        }
-    };
-    
-    public PreferenceStoreAdapter(IPreferenceStore toConvert) {
-        this.store = toConvert;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#attachListener()
-     */
-    protected void attachListener() {
-        store.addPropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#detachListener()
-     */
-    protected void detachListener() {
-        store.removePropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#keySet()
-     */
-    public Set keySet() {
-        throw new UnsupportedOperationException();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#getValue(java.lang.String, java.lang.Class)
-     */
-    public Object getValue(String propertyId, Class propertyType) {
-        if (propertyType.isAssignableFrom(String.class)) {
-            return store.getString(propertyId);
-        }
-        
-        if (propertyType == Boolean.class) {
-            return store.getBoolean(propertyId) ? Boolean.TRUE : Boolean.FALSE;
-        }
-        
-        if (propertyType == Double.class) {
-            return new Double(store.getDouble(propertyId));
-        }
-        
-        if (propertyType == Float.class) {
-            return new Float(store.getFloat(propertyId));
-        }
-        
-        if (propertyType == Integer.class) {
-            return new Integer(store.getInt(propertyId));
-        }
-        
-        if (propertyType == Long.class) {
-            return new Long(store.getLong(propertyId));
-        }
-        
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#propertyExists(java.lang.String)
-     */
-    public boolean propertyExists(String propertyId) {
-        return store.contains(propertyId);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#setValue(java.lang.String, java.lang.Object)
-     */
-    public void setValue(String propertyId, Object newValue) {
-        if (newValue instanceof String) {
-            store.setValue(propertyId, (String)newValue);
-        } else if (newValue instanceof Integer) {
-            store.setValue(propertyId, ((Integer)newValue).intValue());
-        } else if (newValue instanceof Boolean) {
-            store.setValue(propertyId, ((Boolean)newValue).booleanValue());
-        } else if (newValue instanceof Double) {
-            store.setValue(propertyId, ((Double)newValue).doubleValue());
-        } else if (newValue instanceof Float) {
-            store.setValue(propertyId, ((Float)newValue).floatValue());
-        } else if (newValue instanceof Integer) {
-            store.setValue(propertyId, ((Integer)newValue).intValue());
-        } else if (newValue instanceof Long) {
-            store.setValue(propertyId, ((Long)newValue).longValue());
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java
deleted file mode 100644
index 8983ef2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferElement.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.preferences.IPreferenceFilter;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PreferenceTransferRegistryReader;
-import org.eclipse.ui.internal.registry.RegistryReader;
-import org.eclipse.ui.model.WorkbenchAdapter;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Instances represent registered preference transfers.
- * 
- * @since 3.1
- */
-public class PreferenceTransferElement extends WorkbenchAdapter implements
-        IPluginContribution {
-    private String id;
-    
-    private ImageDescriptor imageDescriptor;
-
-    private IConfigurationElement configurationElement;
-
-    private IPreferenceFilter filter;
-
-    /**
-     * Create a new instance of this class
-     * 
-     * @param configurationElement
-     *              
-     */
-    public PreferenceTransferElement(IConfigurationElement configurationElement) {
-        this.configurationElement = configurationElement;
-        id = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-    }
-
-    /**
-     * @return IConfigurationElement
-     */
-    public IConfigurationElement getConfigurationElement() {
-        return configurationElement;
-    }
-
-    /**
-     * Answer the preference filter of this element
-     * If the class attribute is specified it will be used, if not then look to the 
-     * 
-     * @return java.lang.String
-     * @throws CoreException 
-     */
-    public IPreferenceFilter getFilter() throws CoreException {
-        //TODO: can the CoreException be removed?
-        if (filter == null) {
-            IConfigurationElement[] mappings = PreferenceTransferRegistryReader.getMappings(configurationElement);
-            PreferenceFilter prefFilter = new PreferenceFilter();
-            prefFilter.scopes = new String[mappings.length];
-            prefFilter.maps = new Map[mappings.length];
-            for (int i = 0; i < mappings.length; i++) {
-                prefFilter.scopes[i] = PreferenceTransferRegistryReader.getScope(mappings[i]);
-                prefFilter.maps[i] = PreferenceTransferRegistryReader.getEntry(mappings[i]);
-            } 
-            filter = prefFilter;
-        }
-        return filter;
-    }
-
-    /**
-     * Answer the description parameter of this element
-     * 
-     * @return java.lang.String
-     */
-    public String getDescription() {
-        return RegistryReader.getDescription(configurationElement);
-    }
-    
-    /**
-     * Answer the id as specified in the extension.
-     * 
-     * @return java.lang.String
-     */
-    public String getID() {
-        return id;
-    }
-
-    /**
-     * Answer the icon of this element.
-     * 
-     * @return an image descriptor
-     */
-    public ImageDescriptor getImageDescriptor() {
-    	if (imageDescriptor == null) {
-    		String iconName = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-	        if (iconName == null) {
-				return null;
-			}
-            imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-                    configurationElement.getNamespace(), iconName);    
-    	}
-        return imageDescriptor;
-    }
-    
-    /**
-     * Returns the name of this preference transfer element.
-     * @return the name of the element
-     */
-    public String getName() {
-        return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getID();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return (configurationElement != null) ? configurationElement
-                .getNamespace() : null;
-    }
-
-    class PreferenceFilter implements IPreferenceFilter {
-
-        protected String[] scopes;
-        protected Map[] maps;
-        
-        public String[] getScopes() {
-            return scopes;
-        }
-
-        public Map getMapping(String scope) {
-            for (int i = 0; i < scopes.length; i++) {
-                String item = scopes[i];
-                if (item.equals(scope)) {
-					return maps[i];
-				}                
-            }
-            return null;
-        }
-        
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java
deleted file mode 100644
index 41ee166..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferenceTransferManager.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.PreferenceTransferRegistryReader;
-
-/**
- * Manages preference transfer support for the workbench
- *
- * @since 3.1
- */
-public class PreferenceTransferManager {
-
-    /**
-     * Return an array of <code>IPreferenceTransfer</code> objects
-     * @return an array of <code>IPreferenceTransfer</code> objects
-     */
-    public static PreferenceTransferElement[] getPreferenceTransfers() {
-        return new PreferenceTransferRegistryReader(
-                    IWorkbenchRegistryConstants.PL_PREFERENCE_TRANSFER)
-                    .getPreferenceTransfers();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferencesAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferencesAdapter.java
deleted file mode 100644
index b2a834a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PreferencesAdapter.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Preferences;
-
-/**
- * @since 3.1
- */
-public final class PreferencesAdapter extends PropertyMapAdapter {
-    private Preferences store;
-    
-    private Preferences.IPropertyChangeListener listener = new Preferences.IPropertyChangeListener() {
-        public void propertyChange(Preferences.PropertyChangeEvent event) {
-            firePropertyChange(event.getProperty());
-        }
-    };
-    
-    public PreferencesAdapter(Preferences toConvert) {
-        this.store = toConvert;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#attachListener()
-     */
-    protected void attachListener() {
-        store.addPropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#detachListener()
-     */
-    protected void detachListener() {
-        store.removePropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#keySet()
-     */
-    public Set keySet() {
-        Set result = new HashSet();
-        
-        String[] names = store.propertyNames();
-        
-        for (int i = 0; i < names.length; i++) {
-            String string = names[i];
-            
-            result.add(string);
-        }
-        
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#getValue(java.lang.String, java.lang.Class)
-     */
-    public Object getValue(String propertyId, Class propertyType) {
-        if (propertyType.isAssignableFrom(String.class)) {
-            return store.getString(propertyId);
-        }
-        
-        if (propertyType == Boolean.class) {
-            return store.getBoolean(propertyId) ? Boolean.TRUE : Boolean.FALSE;
-        }
-        
-        if (propertyType == Double.class) {
-            return new Double(store.getDouble(propertyId));
-        }
-        
-        if (propertyType == Float.class) {
-            return new Float(store.getFloat(propertyId));
-        }
-        
-        if (propertyType == Integer.class) {
-            return new Integer(store.getInt(propertyId));
-        }
-        
-        if (propertyType == Long.class) {
-            return new Long(store.getLong(propertyId));
-        }
-        
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#propertyExists(java.lang.String)
-     */
-    public boolean propertyExists(String propertyId) {
-        return store.contains(propertyId);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#setValue(java.lang.String, java.lang.Object)
-     */
-    public void setValue(String propertyId, Object newValue) {
-        if (newValue instanceof String) {
-            store.setValue(propertyId, (String)newValue);
-        } else if (newValue instanceof Integer) {
-            store.setValue(propertyId, ((Integer)newValue).intValue());
-        } else if (newValue instanceof Boolean) {
-            store.setValue(propertyId, ((Boolean)newValue).booleanValue());
-        } else if (newValue instanceof Double) {
-            store.setValue(propertyId, ((Double)newValue).doubleValue());
-        } else if (newValue instanceof Float) {
-            store.setValue(propertyId, ((Float)newValue).floatValue());
-        } else if (newValue instanceof Integer) {
-            store.setValue(propertyId, ((Integer)newValue).intValue());
-        } else if (newValue instanceof Long) {
-            store.setValue(propertyId, ((Long)newValue).longValue());
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyListenerList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyListenerList.java
deleted file mode 100644
index f6b9f04..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyListenerList.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @since 3.1
- */
-public final class PropertyListenerList {
-    private Map listeners;
-    private List globalListeners;
-    private static String[] singlePropertyDelta;
-    private static Object mutex = new Object();
-    
-    public PropertyListenerList() {
-    }
-    
-    public void firePropertyChange(String prefId) {        
-        String[] delta;
-        
-        // Optimization: as long as we're not being called recursively,
-        // we can reuse the same delta object to avoid repeated memory
-        // allocation.
-        synchronized(mutex) {        
-	        if (singlePropertyDelta != null) {
-	            delta = singlePropertyDelta;
-	            singlePropertyDelta = null;                
-	        } else {
-	            delta = new String[] {prefId};
-	        }
-        }
-        
-        delta[0] = prefId;
-        
-        firePropertyChange(delta);
-        
-        // Optimization: allow this same delta object to be reused at a later
-        // time
-        if (singlePropertyDelta == null) {
-	        synchronized(mutex) {
-	            singlePropertyDelta = delta;
-	        }
-        }
-    }
-    
-    public void firePropertyChange(String[] propertyIds) {
-        if (globalListeners != null) {
-            for (Iterator iter = globalListeners.iterator(); iter.hasNext();) {
-                IPropertyMapListener next = (IPropertyMapListener) iter.next();
-                
-                next.propertyChanged(propertyIds);
-            }
-        }
-        
-        if (listeners != null) {
-            
-            // To avoid temporary memory allocation, we try to simply move the
-            // result pointer around if possible. We only allocate a HashSet
-            // to compute which listeners we care about
-            Collection result = Collections.EMPTY_SET;
-            HashSet union = null;
-            
-            for (int i = 0; i < propertyIds.length; i++) {
-                String property = propertyIds[i];
-                
-    	        List existingListeners = (List)listeners.get(property);
-    	        
-    	        if (existingListeners != null) {
-    	            if (result == Collections.EMPTY_SET) {
-    	                result = existingListeners;
-    	            } else { 
-    	                if (union == null) {
-    	                    union = new HashSet();
-    	                    union.addAll(result);
-    	                    result = union;
-    	                }
-    	                
-    	                union.addAll(existingListeners);
-    	            }    	            
-    	        }
-            }
-            
-            for (Iterator iter = result.iterator(); iter.hasNext();) {
-                IPropertyMapListener next = (IPropertyMapListener) iter.next();
-                
-                next.propertyChanged(propertyIds);
-            }
-        }
-    }
-
-    public void add(IPropertyMapListener newListener) {
-        if (globalListeners == null) {
-            globalListeners = new ArrayList();
-        }
-        
-        globalListeners.add(newListener);
-        newListener.listenerAttached();
-    }
-    
-    /**
-     * Adds a listener which will be notified when the given property changes
-     * 
-     * @param propertyId
-     * @param newListener
-     * @since 3.1
-     */
-    private void addInternal(String propertyId, IPropertyMapListener newListener) {
-        if (listeners == null) {
-            listeners = new HashMap();
-        }
-        
-        List listenerList = (List)listeners.get(propertyId);
-        
-        if (listenerList == null) {
-            listenerList = new ArrayList(1);
-            listeners.put(propertyId, listenerList);
-        }
-        
-        if (!listenerList.contains(newListener)) {
-            listenerList.add(newListener);
-        }
-    }
-    
-    public void add(String[] propertyIds, IPropertyMapListener newListener) {        
-        for (int i = 0; i < propertyIds.length; i++) {
-            String id = propertyIds[i];
-            
-            addInternal(id, newListener);
-        }
-        newListener.listenerAttached();
-    }
-    
-    public void remove(String propertyId, IPropertyMapListener toRemove) {
-        if (listeners == null) {
-            return;
-        }
-        List listenerList = (List)listeners.get(propertyId);
-        
-        if (listenerList != null) {
-            listenerList.remove(toRemove);
-            
-            if (listenerList.isEmpty()) {
-                listeners.remove(propertyId);
-                
-                if (listeners.isEmpty()) {
-                    listeners = null;
-                }
-            }
-        }        
-    }
-    
-    public void removeAll() {
-        globalListeners = null;
-        listeners = null;
-    }
-    
-    public void remove(IPropertyMapListener toRemove) {
-        if (globalListeners != null) {
-            globalListeners.remove(toRemove);
-            if (globalListeners.isEmpty()) {
-                globalListeners = null;
-            }
-        }
-        
-        if (listeners != null) {
-            for (Iterator iter = listeners.keySet().iterator(); iter.hasNext();) {
-                String key = (String) iter.next();
-                
-                remove(key, toRemove);
-            }
-        }
-    }
-    
-    public boolean isEmpty() {
-        return globalListeners == null && listeners == null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java
deleted file mode 100644
index 87f9203..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapAdapter.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.ArrayList;
-
-/**
- * @since 3.1
- */
-public abstract class PropertyMapAdapter implements IDynamicPropertyMap {
-
-    private PropertyListenerList listeners;
-    private int ignoreCount = 0;
-    private ArrayList queuedEvents = new ArrayList();
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IDynamicPropertyMap#addListener(org.eclipse.ui.internal.preferences.IPropertyMapListener)
-     */
-    public final void addListener(IPropertyMapListener listener) {
-        if (listeners == null) {
-            listeners = new PropertyListenerList();
-            attachListener();
-        }
-        listeners.add(listener);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IDynamicPropertyMap#removeListener(org.eclipse.ui.internal.preferences.IPropertyMapListener)
-     */
-    public final void removeListener(IPropertyMapListener listener) {
-        if (listeners != null) {
-            listeners.remove(listener);
-            if (listeners.isEmpty()) {
-                detachListener();
-                listeners = null;
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#isCommonProperty(java.lang.String)
-     */
-    public final boolean isCommonProperty(String propertyId) {
-        return true;
-    }
-
-    /**
-     * Detaches all listeners which have been registered with other objects
-     * 
-     * @since 3.1
-     */
-    public void dispose() {
-        if (listeners != null) {
-            detachListener();
-            listeners = null;
-        }
-    }
-    
-    protected final void firePropertyChange(String prefId) {
-        if (ignoreCount > 0) {
-            queuedEvents.add(prefId);
-            return;
-        }
-        
-        if (listeners != null) {
-            listeners.firePropertyChange(prefId);
-        }
-    }
-    
-    public final void addListener(String[] eventsOfInterest, IPropertyMapListener listener) {
-        if (listeners == null) {
-            listeners = new PropertyListenerList();
-            attachListener();
-        }
-        listeners.add(eventsOfInterest, listener);
-    }
-    
-    protected final void firePropertyChange(String[] prefIds) {
-        if (ignoreCount > 0) {
-            for (int i = 0; i < prefIds.length; i++) {
-                queuedEvents.add(prefIds[i]);
-            }
-            return;
-        }
-
-        if (listeners != null) {
-            listeners.firePropertyChange(prefIds);
-        }
-    }
-    
-    public final void startTransaction() {
-        ignoreCount++;
-    }
-    
-    public final void endTransaction() {
-        ignoreCount--;
-        if (ignoreCount == 0 && !queuedEvents.isEmpty()) {
-            if (listeners != null) {
-                listeners.firePropertyChange((String[]) queuedEvents.toArray(new String[queuedEvents.size()]));
-            }
-            queuedEvents.clear();
-        }
-    }
-    
-    public boolean equals(Object toCompare) {
-        return toCompare instanceof IPropertyMap && PropertyUtil.isEqual(this, (IPropertyMap)toCompare);
-    }
-    
-    protected abstract void attachListener();
-    protected abstract void detachListener();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapUnion.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapUnion.java
deleted file mode 100644
index 698daec..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyMapUnion.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * @since 3.1
- */
-public class PropertyMapUnion implements IPropertyMap {
-
-    private Map values;
-    
-    private final static class PropertyInfo {
-        Object value;
-        boolean commonAttribute;
-        
-        PropertyInfo(Object value, boolean commonAttribute) {
-            this.value = value;
-            this.commonAttribute = commonAttribute;
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#keySet()
-     */
-    public Set keySet() {
-        return values.keySet();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#getValue(java.lang.String, java.lang.Class)
-     */
-    public Object getValue(String propertyId, Class propertyType) {
-        PropertyInfo info = (PropertyInfo)values.get(propertyId);
-        
-        if (info == null) {
-            return null;
-        }
-        
-        Object value = info.value;
-        
-        if (propertyType.isInstance(value)) {
-            return value;
-        }
-        
-        return null;        
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#isCommonProperty(java.lang.String)
-     */
-    public boolean isCommonProperty(String propertyId) {
-        PropertyInfo info = (PropertyInfo)values.get(propertyId);
-        
-        if (info == null) {
-            return false;
-        }
-        
-        return info.commonAttribute;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#propertyExists(java.lang.String)
-     */
-    public boolean propertyExists(String propertyId) {
-        return values.get(propertyId) != null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#setValue(java.lang.String, java.lang.Object)
-     */
-    public void setValue(String propertyId, Object newValue) {
-        PropertyInfo info = new PropertyInfo(newValue, true);
-        
-        values.put(propertyId, info);
-    }
-
-    public void addMap(IPropertyMap toAdd) {
-        Set keySet = toAdd.keySet();
-
-        // Update any existing attributes
-        for (Iterator iter = keySet().iterator(); iter.hasNext();) {
-            String key = (String) iter.next();
-            
-            PropertyInfo localInfo = (PropertyInfo)values.get(key);
-            // Shouldn't be null, but just in case...
-            if (localInfo != null) {
-                // If the attribute exists in the new map
-                if (toAdd.propertyExists(key)) {
-                    // Determine if the value is common
-	                Object value = toAdd.getValue(key, Object.class);
-	                
-	                if (!Util.equals(value, toAdd.getValue(key, Object.class))) {
-	                    // Set the value to null if not common
-	                    localInfo.value = null;
-	                }
-	                
-	                // The attribute must be common in both the receiver and the new map to be common
-	                // everywhere
-	                localInfo.commonAttribute = localInfo.commonAttribute && toAdd.isCommonProperty(key);
-                } else {
-                    // If the attribute doesn't exist in the new map, it cannot be common
-                    localInfo.commonAttribute = false;
-                }
-            }
-        }
-        
-        // Add any new attributes that exist in the target
-        for (Iterator iter = keySet.iterator(); iter.hasNext();) {
-            String element = (String) iter.next();
-            
-            PropertyInfo localInfo = (PropertyInfo)values.get(element);
-            if (localInfo == null) {
-                Object value = toAdd.getValue(element, Object.class);
-                
-                boolean isCommon = toAdd.isCommonProperty(element);
-                
-                localInfo = new PropertyInfo(value, isCommon);
-                values.put(element, localInfo);
-            }        
-        }        
-    }
-    
-    public void removeValue(String propertyId) {
-        values.remove(propertyId);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyUtil.java
deleted file mode 100644
index 74e28dc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/PropertyUtil.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @since 3.1
- */
-public class PropertyUtil {
-    private PropertyUtil() {
-    }
-    
-    public static boolean isEqual(IPropertyMap map1, IPropertyMap map2) {
-        Set map1Keys = map1.keySet();
-        Set map2Keys = map2.keySet();
-        
-        if (!map1Keys.equals(map2Keys)) {
-            return false;
-        }
-        
-        for (Iterator iter = map1Keys.iterator(); iter.hasNext();) {
-            String next = (String) iter.next();
-            
-            if (!map1.getValue(next, Object.class).equals(map2.getValue(next, Object.class))) {
-                return false;
-            }
-        }
-        
-        return true;
-    }
-    
-    /**
-     * Copies all properties from the given source to the given destination
-     * 
-     * @param destination
-     * @param source
-     * @since 3.1
-     */
-    public static void copy(IPropertyMap destination, IPropertyMap source) {
-       Set keys = source.keySet();
-       
-       for (Iterator iter = keys.iterator(); iter.hasNext();) {
-           String key = (String) iter.next();
-        
-           destination.setValue(key, source.getValue(key, Object.class));
-       }
-    }
-    
-    /**
-     * Computes the union of a set property maps. The result will contain all properties from
-     * all of the contributing maps. If the same property had a different value in two or
-     * more maps, its value in the union will be null. If the same property 
-     * 
-     * Note that the result is a standalone
-     * object and will not be updated to reflect subsequent changes in the source maps.
-     * 
-     * @param sources
-     * @return
-     * @since 3.1
-     */
-    public static IPropertyMap union(IPropertyMap[] sources) {
-        PropertyMapUnion result = new PropertyMapUnion();
-        
-        for (int i = 0; i < sources.length; i++) {
-            IPropertyMap map = sources[i];
-            
-            result.addMap(map);
-        }
-        
-        return result;
-    }
-    
-    public static boolean get(IPropertyMap toRead, String propertyId, boolean defaultValue) {
-        Boolean result = ((Boolean)toRead.getValue(propertyId, Boolean.class));
-        
-        if (result == null) {
-            return defaultValue;
-        }
-        
-        return result.booleanValue();
-    }
-    
-    public static int get(IPropertyMap toRead, String propertyId, int defaultValue) {
-        Integer result = ((Integer)toRead.getValue(propertyId, Integer.class));
-        
-        if (result == null) {
-            return defaultValue;
-        }
-        
-        return result.intValue();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java
deleted file mode 100644
index 9562ef9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/SettingsTransferRegistryReader.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.preferences;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-
-/**
- * The SettingsTransferRegistryReader is the class that supplies all of the
- * transfer settings used by the settingsTransfer in the preferencesTransfer
- * extension point.
- * 
- * 
- * @since 3.3
- * 
- */
-public class SettingsTransferRegistryReader extends RegistryReader {
-
-	Collection settingsTransfers = new ArrayList();
-
-	/**
-	 * Create an instance of the receiver.
-	 */
-	public SettingsTransferRegistryReader() {
-
-	}
-
-	/**
-	 * Get all of the currently registered settings transfers.
-	 * 
-	 * @return IConfigurationElement[]
-	 */
-	public IConfigurationElement[] getSettingTransfers() {
-
-		settingsTransfers = new ArrayList();
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		readRegistry(registry, WorkbenchPlugin.PI_WORKBENCH,
-				IWorkbenchRegistryConstants.PL_PREFERENCE_TRANSFER);
-
-		IConfigurationElement[] transfers = new IConfigurationElement[settingsTransfers
-				.size()];
-		settingsTransfers.toArray(transfers);
-		return transfers;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-	 */
-	protected boolean readElement(IConfigurationElement element) {
-		if (element.getName().equals(
-				IWorkbenchRegistryConstants.TAG_SETTINGS_TRANSFER)) {
-
-			settingsTransfers.add(element);
-			return true;
-		}
-
-		//Ignore the preference transfers
-		return element.getName().equals(
-				IWorkbenchRegistryConstants.TAG_TRANSFER);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeAdapter.java
deleted file mode 100644
index dc73483..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeAdapter.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.ui.themes.ITheme;
-
-/**
- * @since 3.1
- */
-public class ThemeAdapter extends PropertyMapAdapter {
-
-    private ITheme targetTheme;
-    
-    private IPropertyChangeListener listener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            firePropertyChange(event.getProperty());
-        }
-    };
-    
-    public ThemeAdapter(ITheme targetTheme) {
-        this.targetTheme = targetTheme;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#attachListener()
-     */
-    protected void attachListener() {
-        targetTheme.addPropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#detachListener()
-     */
-    protected void detachListener() {
-        targetTheme.removePropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#getKeySet()
-     */
-    public Set keySet() {
-        return getKeySet(targetTheme);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#getValue(java.lang.String, java.lang.Class)
-     */
-    public Object getValue(String propertyId, Class propertyType) {
-        return getValue(targetTheme, propertyId, propertyType);
-    }
-
-    public static Set getKeySet(ITheme targetTheme) {
-        Set result = new HashSet();
-        
-        result.addAll(targetTheme.keySet());
-        result.addAll(targetTheme.getColorRegistry().getKeySet());
-        result.addAll(targetTheme.getFontRegistry().getKeySet());
-        
-        return result;        
-    }
-    
-    public static Object getValue(ITheme targetTheme, String propertyId, Class propertyType) {
-
-        if (propertyType.isAssignableFrom(String.class)) {
-            return targetTheme.getString(propertyId);
-        }
-        
-        if (propertyType.isAssignableFrom(Color.class)) {
-            Color result = targetTheme.getColorRegistry().get(propertyId);
-            if (result != null) {
-                return result;
-            }
-        }
-        
-        if (propertyType.isAssignableFrom(Font.class)) {
-            FontRegistry fonts = targetTheme.getFontRegistry();
-            
-            if (fonts.hasValueFor(propertyId)) {
-                return fonts.get(propertyId);
-            }
-        }
-        
-        if (propertyType == Integer.class) {
-            return new Integer(targetTheme.getInt(propertyId));
-        }
-
-        if (propertyType == Boolean.class) {
-            return targetTheme.getBoolean(propertyId) ? Boolean.TRUE : Boolean.FALSE;
-        }
-        
-        return null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#propertyExists(java.lang.String)
-     */
-    public boolean propertyExists(String propertyId) {
-        return keySet().contains(propertyId);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#setValue(java.lang.String)
-     */
-    public void setValue(String propertyId, Object newValue) {
-        throw new UnsupportedOperationException();        
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeManagerAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeManagerAdapter.java
deleted file mode 100644
index 22c481e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/ThemeManagerAdapter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Set;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @since 3.1
- */
-public class ThemeManagerAdapter extends PropertyMapAdapter {
-
-    private IThemeManager manager;
-    
-    private IPropertyChangeListener listener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            firePropertyChange(event.getProperty());
-        }
-    };
-    
-    public ThemeManagerAdapter(IThemeManager manager) {
-        this.manager = manager;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#attachListener()
-     */
-    protected void attachListener() {
-        manager.addPropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.PropertyMapAdapter#detachListener()
-     */
-    protected void detachListener() {
-        manager.removePropertyChangeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#keySet()
-     */
-    public Set keySet() {
-        Set result = ThemeAdapter.getKeySet(manager.getCurrentTheme());
-        
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#getValue(java.lang.String, java.lang.Class)
-     */
-    public Object getValue(String propertyId, Class propertyType) {
-        return ThemeAdapter.getValue(manager.getCurrentTheme(), propertyId, propertyType);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#propertyExists(java.lang.String)
-     */
-    public boolean propertyExists(String propertyId) {
-        return keySet().contains(propertyId);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.IPropertyMap#setValue(java.lang.String, java.lang.Object)
-     */
-    public void setValue(String propertyId, Object newValue) {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java
deleted file mode 100644
index 3c9b517..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExpressionNode.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Bredex GmbH and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Jan-Hendrik Diederich, Bredex GmbH - initial API and implementation, bug 201052
- *     IBM Corporation - bug 201052
- ******************************************************************************/
-
-package org.eclipse.ui.internal.preferences;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-
-/**
- * @since 3.4
- * @author Jan Diederich
- */
-public class WorkbenchPreferenceExpressionNode extends PreferenceNode 
-	implements IPluginContribution {
-	
-	
-	/**
-	 * @param id The id.
-	 * @see PreferenceNode#PreferenceNode(String)
-	 */
-	public WorkbenchPreferenceExpressionNode(String id) {
-		super(id);
-	}
-	
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.PreferenceNode#findSubNode(java.lang.String)
-     */
-    public IPreferenceNode findSubNode(String id) {
-        return getNodeExpression(super.findSubNode(id));
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.preference.PreferenceNode#getSubNodes()
-     */
-    public IPreferenceNode[] getSubNodes() {
-    	IPreferenceNode[] prefNodes = super.getSubNodes();
-        int size = prefNodes.length;
-        List list = new ArrayList(size);
-        for (int i = 0; i < size; i++) {
-        	IPreferenceNode prefNode = getNodeExpression(prefNodes[i]);
-            if (prefNode != null) {
-                list.add(prefNode);
-            }
-        }
-        return (IPreferenceNode[])list.toArray(new IPreferenceNode[list.size()]);
-    }
-
-    /**
-     * Returns the given <code>prefNode</code>, but only if it's no
-     * WorkbenchPreferenceExtensionNode which fails the Expression check.
-     * 
-     * @param prefNode
-     *            The preference node which will be checked. Can be <code>null
-     *            </code>.
-     * @return The given <code>prefNode</code>, or <code>null</code> if it
-     *         fails the Expressions check.
-     */
-    public static IPreferenceNode getNodeExpression(
-    		IPreferenceNode prefNode) {
-    	if (prefNode == null)
-    		return null;
-        if (prefNode instanceof WorkbenchPreferenceExtensionNode) {
-        	WorkbenchPreferenceExpressionNode node = 
-        		(WorkbenchPreferenceExtensionNode)prefNode;
-            if (WorkbenchActivityHelper.restrictUseOf(node)) {
-                return null;
-            }
-        }
-        return prefNode;
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPluginContribution#getLocalId()
-	 */
-	public String getLocalId() {
-		return getId();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IPluginContribution#getPluginId()
-	 */
-	public String getPluginId() {
-		return ""; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
deleted file mode 100644
index 1a25679..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchPreferenceExtensionNode.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 219273 
- *     
- *******************************************************************************/
-
-package org.eclipse.ui.internal.preferences;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.KeywordRegistry;
-import org.eclipse.ui.model.IComparableContribution;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * The WorkbenchPreferenceExtensionNode is the abstract class for all property
- * and page nodes in the workbench.
- * 
- * @since 3.1
- */
-public abstract class WorkbenchPreferenceExtensionNode extends WorkbenchPreferenceExpressionNode 
-    implements IComparableContribution {
-	
-	private static final String TAG_KEYWORD_REFERENCE = "keywordReference"; //$NON-NLS-1$
-
-	private Collection keywordReferences;
-	
-	private IConfigurationElement configurationElement;
-
-	private ImageDescriptor imageDescriptor;
-
-	private Image image;
-
-	private Collection keywordLabelCache;
-	
-	private int priority;
-
-	private String pluginId;
-
-	/**
-	 * Create a new instance of the reciever.
-	 * 
-	 * @param id
-	 * @param configurationElement 
-	 */
-	public WorkbenchPreferenceExtensionNode(String id, IConfigurationElement configurationElement) {
-		super(id);
-		this.configurationElement = configurationElement;
-		this.pluginId = configurationElement.getNamespaceIdentifier();
-	}
-
-	/**
-	 * Get the ids of the keywords the receiver is bound to.
-	 * 
-	 * @return Collection of <code>String</code>.  Never <code>null</code>.
-	 */
-	public Collection getKeywordReferences() {
-		if (keywordReferences == null) {
-			IConfigurationElement[] references = getConfigurationElement()
-					.getChildren(TAG_KEYWORD_REFERENCE);
-			HashSet list = new HashSet(references.length);
-			for (int i = 0; i < references.length; i++) {
-				IConfigurationElement page = references[i];
-				String id = page.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-				if (id != null) {
-					list.add(id);
-				}
-			}
-
-			if (!list.isEmpty()) {
-				keywordReferences = list;
-			} else {
-				keywordReferences = Collections.EMPTY_SET;
-			}
-			
-		}
-		return keywordReferences;
-	}
-
-	/**
-	 * Get the labels of all of the keywords of the receiver.
-	 * 
-	 * @return Collection of <code>String</code>.  Never <code>null</code>.
-	 */
-	public Collection getKeywordLabels() {
-		if (keywordLabelCache != null) {
-			return keywordLabelCache;
-		}
-		
-		Collection refs = getKeywordReferences();
-		
-		if(refs == Collections.EMPTY_SET) {
-			keywordLabelCache = Collections.EMPTY_SET; 
-			return keywordLabelCache;
-		}
-		
-		keywordLabelCache = new ArrayList(refs.size());
-		Iterator referenceIterator = refs.iterator();
-		while(referenceIterator.hasNext()){
-			Object label = KeywordRegistry.getInstance().getKeywordLabel(
-					(String) referenceIterator.next());
-			if(label != null) {
-				keywordLabelCache.add(label);
-			}
-		}
-		
-		return keywordLabelCache;
-	}
-	
-	/**
-	 * Clear the keyword cache, if any.
-	 */
-	public void clearKeywords() {
-		keywordLabelCache = null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.IPreferenceNode#disposeResources()
-	 */
-	public void disposeResources() {
-        if (image != null) {
-            image.dispose();
-            image = null;
-        }
-        super.disposeResources();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.IPreferenceNode#getLabelImage()
-	 */
-	public Image getLabelImage() {		
-        if (image == null) {
-        	ImageDescriptor desc = getImageDescriptor();
-        	if (desc != null) {
-				image = imageDescriptor.createImage();
-			}
-        }
-        return image;
-    }
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.IPreferenceNode#getLabelText()
-	 */
-	public String getLabelText() {
-		return getConfigurationElement().getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-	}
-
-    /**
-     * Returns the image descriptor for this node.
-     * 
-     * @return the image descriptor
-     */
-    public ImageDescriptor getImageDescriptor() {
-    	if (imageDescriptor != null) {
-			return imageDescriptor;
-		}
-    	
-    	String imageName = getConfigurationElement().getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-		if (imageName != null) {
-			String contributingPluginId = pluginId;
-			imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(contributingPluginId, imageName);
-		}
-		return imageDescriptor;
-    }
-    
-    /**
-     * Return the configuration element.
-     * 
-     * @return the configuration element
-     */
-	public IConfigurationElement getConfigurationElement() {
-		return configurationElement;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-	 */
-	public String getLocalId() {
-		return getId();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-	 */
-	public String getPluginId() {
-		return pluginId;
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IComparableContribution#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class adapter)
-    {
-        if (adapter == IConfigurationElement.class)
-            return getConfigurationElement();
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IComparableContribution#getLabel()
-     */
-    public String getLabel()
-    {
-        return getLabelText();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IComparableContribution#getPriority()
-     */
-    public int getPriority()
-    {
-        return priority;
-    }
-
-    public void setPriority(int pri)
-    {
-        priority = pri;
-    }
-
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java
deleted file mode 100644
index a052942..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkbenchSettingsTransfer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.preferences;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.preferences.SettingsTransfer;
-
-/**
- * The WorkbenchSettingsTransfer is the abstract superclass of settings
- * transfers in the workbench.
- * 
- * @since 3.3
- * 
- */
-public abstract class WorkbenchSettingsTransfer extends SettingsTransfer {
-
-	/**
-	 * Return a status message for missing workspace settings.
-	 * @return IStatus
-	 */
-	protected IStatus noWorkingSettingsStatus() {
-		return new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
-				WorkbenchMessages.WorkbenchSettings_CouldNotFindLocation);
-	}
-
-	/**
-	 * Return the workbench settings location for the new root 
-	 * @param newWorkspaceRoot
-	 * @return IPath or <code>null</code> if it can't be determined.
-	 */
-	protected IPath getNewWorkbenchStateLocation(IPath newWorkspaceRoot) {
-		IPath currentWorkspaceRoot = Platform.getLocation();
-	
-		IPath dataLocation = WorkbenchPlugin.getDefault().getDataLocation();
-	
-		if (dataLocation == null)
-			return null;
-		int segmentsToRemove = dataLocation
-				.matchingFirstSegments(currentWorkspaceRoot);
-	
-		// Strip it down to the extension
-		dataLocation = dataLocation.removeFirstSegments(segmentsToRemove);
-		// Now add in the
-		dataLocation = newWorkspaceRoot.append(dataLocation);
-		return dataLocation;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java
deleted file mode 100644
index 384c519..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingCopyPreferences.java
+++ /dev/null
@@ -1,536 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.preferences;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IPreferenceNodeVisitor;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * Represents a working copy of a preference node, backed by the real node.
- * <p>
- * Note: Working copy nodes do not fire node change events.
- * </p>
- * <p>
- * Note: Preference change listeners registered on this node will only receive 
- * events from this node and not events based on the original backing node.
- * </p>
- * @since 3.1
- */
-public class WorkingCopyPreferences extends EventManager implements
-		IEclipsePreferences {
-
-	private static final String TRUE = "true"; //$NON-NLS-1$
-
-	private final Map temporarySettings;
-	private final IEclipsePreferences original;
-	private boolean removed = false;
-	private org.eclipse.ui.preferences.WorkingCopyManager manager;
-
-	/**
-	 * @param original the underlying preference node
-	 * @param manager the working copy manager
-	 */
-	public WorkingCopyPreferences(IEclipsePreferences original, org.eclipse.ui.preferences.WorkingCopyManager manager) {
-		super();
-		this.original = original;
-		this.manager = manager;
-		this.temporarySettings = new HashMap();
-	}
-
-	/*
-	 * Convenience method for throwing an exception when methods
-	 * are called on a removed node.
-	 */
-	private void checkRemoved() {
-		if (removed) {
-			String message = "Preference node: " + absolutePath() + " has been removed."; //$NON-NLS-1$ //$NON-NLS-2$
-			throw new IllegalStateException(message);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences#addNodeChangeListener(org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener)
-	 */
-	public void addNodeChangeListener(INodeChangeListener listener) {
-		// no-op - working copy nodes don't fire node change events
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences#removeNodeChangeListener(org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener)
-	 */
-	public void removeNodeChangeListener(INodeChangeListener listener) {
-		// no-op - working copy nodes don't fire node change events
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences#addPreferenceChangeListener(org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener)
-	 */
-	public void addPreferenceChangeListener(IPreferenceChangeListener listener) {
-		checkRemoved();
-		addListenerObject(listener);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences#removePreferenceChangeListener(org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener)
-	 */
-	public void removePreferenceChangeListener(IPreferenceChangeListener listener) {
-		checkRemoved();
-		removeListenerObject(listener);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#removeNode()
-	 */
-	public void removeNode() throws BackingStoreException {
-		checkRemoved();
-
-		// clear all values (long way so people get notified)
-		String[] keys = keys();
-		for (int i = 0; i < keys.length; i++) {
-			remove(keys[i]);
-		}
-
-		// remove children
-		String[] childNames = childrenNames();
-		for (int i = 0; i < childNames.length; i++) {
-			node(childNames[i]).removeNode();
-		}
-
-		// mark as removed
-		removed = true;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#node(java.lang.String)
-	 */
-	public Preferences node(String path) {
-		checkRemoved();
-		return manager.getWorkingCopy((IEclipsePreferences) getOriginal().node(path));
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences#accept(org.eclipse.core.runtime.preferences.IPreferenceNodeVisitor)
-	 */
-	public void accept(IPreferenceNodeVisitor visitor) throws BackingStoreException {
-		checkRemoved();
-		if (!visitor.visit(this)) {
-			return;
-		}
-		String[] childNames = childrenNames();
-		for (int i = 0; i < childNames.length; i++) {
-			((IEclipsePreferences) node(childNames[i])).accept(visitor);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#put(java.lang.String, java.lang.String)
-	 */
-	public void put(String key, String value) {
-		checkRemoved();
-		if (key == null || value == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		temporarySettings.put(key, value);
-		if (!value.equals(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, value);
-		}
-	}
-
-	private void firePropertyChangeEvent(String key, Object oldValue, Object newValue) {
-		Object[] listeners = getListeners();
-		if (listeners.length == 0) {
-			return;
-		}
-		PreferenceChangeEvent event = new PreferenceChangeEvent(this, key, oldValue, newValue);
-		for (int i = 0; i < listeners.length; i++) {
-			((IPreferenceChangeListener) listeners[i]).preferenceChange(event);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#get(java.lang.String, java.lang.String)
-	 */
-	public String get(String key, String defaultValue) {
-		checkRemoved();
-		return internalGet(key, defaultValue);
-	}
-
-	private String internalGet(String key, String defaultValue) {
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		if (temporarySettings.containsKey(key)) {
-			Object value = temporarySettings.get(key);
-			return value == null ? defaultValue : (String) value;
-		}
-		return getOriginal().get(key, defaultValue);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#remove(java.lang.String)
-	 */
-	public void remove(String key) {
-		checkRemoved();
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		Object oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = temporarySettings.get(key);
-		} else {
-			oldValue = original.get(key, null);
-		}
-		if (oldValue == null) {
-			return;
-		}
-		temporarySettings.put(key, null);
-		firePropertyChangeEvent(key, oldValue, null);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#clear()
-	 */
-	public void clear() {
-		checkRemoved();
-		for (Iterator i = temporarySettings.keySet().iterator(); i.hasNext();) {
-			String key = (String) i.next();
-			Object value = temporarySettings.get(key);
-			if (value != null) {
-				temporarySettings.put(key, null);
-				firePropertyChangeEvent(key, value, null);
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#putInt(java.lang.String, int)
-	 */
-	public void putInt(String key, int value) {
-		checkRemoved();
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		String newValue = Integer.toString(value);
-		temporarySettings.put(key, newValue);
-		if (!newValue.equals(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, newValue);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#getInt(java.lang.String, int)
-	 */
-	public int getInt(String key, int defaultValue) {
-		checkRemoved();
-		String value = internalGet(key, null);
-		int result = defaultValue;
-		if (value != null) {
-			try {
-				result = Integer.parseInt(value);
-			} catch (NumberFormatException e) {
-				// use default
-			}
-		}
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#putLong(java.lang.String, long)
-	 */
-	public void putLong(String key, long value) {
-		checkRemoved();
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		String newValue = Long.toString(value);
-		temporarySettings.put(key, newValue);
-		if (!newValue.equals(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, newValue);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#getLong(java.lang.String, long)
-	 */
-	public long getLong(String key, long defaultValue) {
-		checkRemoved();
-		String value = internalGet(key, null);
-		long result = defaultValue;
-		if (value != null) {
-			try {
-				result = Long.parseLong(value);
-			} catch (NumberFormatException e) {
-				// use default
-			}
-		}
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#putBoolean(java.lang.String, boolean)
-	 */
-	public void putBoolean(String key, boolean value) {
-		checkRemoved();
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		String newValue = String.valueOf(value);
-		temporarySettings.put(key, newValue);
-		if (!newValue.equalsIgnoreCase(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, newValue);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#getBoolean(java.lang.String, boolean)
-	 */
-	public boolean getBoolean(String key, boolean defaultValue) {
-		checkRemoved();
-		String value = internalGet(key, null);
-		return value == null ? defaultValue : TRUE.equalsIgnoreCase(value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#putFloat(java.lang.String, float)
-	 */
-	public void putFloat(String key, float value) {
-		checkRemoved();
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		String newValue = Float.toString(value);
-		temporarySettings.put(key, newValue);
-		if (!newValue.equals(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, newValue);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#getFloat(java.lang.String, float)
-	 */
-	public float getFloat(String key, float defaultValue) {
-		checkRemoved();
-		String value = internalGet(key, null);
-		float result = defaultValue;
-		if (value != null) {
-			try {
-				result = Float.parseFloat(value);
-			} catch (NumberFormatException e) {
-				// use default
-			}
-		}
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#putDouble(java.lang.String, double)
-	 */
-	public void putDouble(String key, double value) {
-		checkRemoved();
-		if (key == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		String newValue = Double.toString(value);
-		temporarySettings.put(key, newValue);
-		if (!newValue.equals(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, newValue);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#getDouble(java.lang.String, double)
-	 */
-	public double getDouble(String key, double defaultValue) {
-		checkRemoved();
-		String value = internalGet(key, null);
-		double result = defaultValue;
-		if (value != null) {
-			try {
-				result = Double.parseDouble(value);
-			} catch (NumberFormatException e) {
-				// use default
-			}
-		}
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#putByteArray(java.lang.String, byte[])
-	 */
-	public void putByteArray(String key, byte[] value) {
-		checkRemoved();
-		if (key == null || value == null) {
-			throw new NullPointerException();
-		}
-		String oldValue = null;
-		if (temporarySettings.containsKey(key)) {
-			oldValue = (String) temporarySettings.get(key);
-		} else {
-			oldValue = getOriginal().get(key, null);
-		}
-		String newValue = new String(Base64.encode(value));
-		temporarySettings.put(key, newValue);
-		if (!newValue.equals(oldValue)) {
-			firePropertyChangeEvent(key, oldValue, newValue);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#getByteArray(java.lang.String, byte[])
-	 */
-	public byte[] getByteArray(String key, byte[] defaultValue) {
-		checkRemoved();
-		String value = internalGet(key, null);
-		return value == null ? defaultValue : Base64.decode(value.getBytes());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#keys()
-	 */
-	public String[] keys() throws BackingStoreException {
-		checkRemoved();
-		HashSet allKeys = new HashSet(Arrays.asList(getOriginal().keys()));
-		allKeys.addAll(temporarySettings.keySet());
-		return (String[]) allKeys.toArray(new String[allKeys.size()]);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#childrenNames()
-	 */
-	public String[] childrenNames() throws BackingStoreException {
-		checkRemoved();
-		return getOriginal().childrenNames();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#parent()
-	 */
-	public Preferences parent() {
-		checkRemoved();
-		return manager.getWorkingCopy((IEclipsePreferences) getOriginal().parent());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#nodeExists(java.lang.String)
-	 */
-	public boolean nodeExists(String pathName) throws BackingStoreException {
-		// short circuit for this node
-		if (pathName.length() == 0) {
-			return removed ? false : getOriginal().nodeExists(pathName);
-		}
-		return getOriginal().nodeExists(pathName);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#name()
-	 */
-	public String name() {
-		return getOriginal().name();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#absolutePath()
-	 */
-	public String absolutePath() {
-		return getOriginal().absolutePath();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#flush()
-	 */
-	public void flush() throws BackingStoreException {
-		if (removed) {
-			getOriginal().removeNode();
-			return;
-		}
-		checkRemoved();
-		// update underlying preferences
-		for (Iterator i = temporarySettings.keySet().iterator(); i.hasNext();) {
-			String key = (String) i.next();
-			String value = (String) temporarySettings.get(key);
-			if (value == null) {
-				getOriginal().remove(key);
-			} else {
-				getOriginal().put(key, value);
-			}
-		}
-		// clear our settings
-		temporarySettings.clear();
-
-		// save the underlying preference store
-		getOriginal().flush();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.service.prefs.Preferences#sync()
-	 */
-	public void sync() throws BackingStoreException {
-		checkRemoved();
-		// forget our settings
-		temporarySettings.clear();
-		// load the underlying preference store
-		getOriginal().sync();
-	}
-
-	/**
-	 * @return Returns the original preference node.
-	 */
-	private IEclipsePreferences getOriginal() {
-		return original;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java
deleted file mode 100644
index 3571a13..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetPropertyPage.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.preferences;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.Wizard;
-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.ui.IWorkingSet;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.preferences.WizardPropertyPage;
-
-/**
- * Embeds a working set wizard for a given working set into a property page.
- *
- * @since 3.4
- */
-public class WorkingSetPropertyPage extends WizardPropertyPage {
-	
-	private static final class ReadOnlyWizard extends Wizard {
-		
-		public ReadOnlyWizard() {
-		}
-		
-		/**
-		 * {@inheritDoc}
-		 */
-		public boolean performFinish() {
-			return true;
-		}
-		
-		/**
-		 * {@inheritDoc}
-		 */
-		public void addPages() {
-			addPage(new ReadOnlyPage());
-		}
-	}
-	
-	private static final class ReadOnlyPage extends WizardPage {
-		
-		protected ReadOnlyPage() {
-			super(WorkbenchMessages.WorkingSetPropertyPage_ReadOnlyWorkingSet_title);
-			setDescription(WorkbenchMessages.WorkingSetPropertyPage_ReadOnlyWorkingSet_description);
-		}
-		
-		/**
-		 * {@inheritDoc}
-		 */
-		public void createControl(Composite parent) {
-			Composite composite= new Composite(parent, SWT.NONE);
-			composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-			composite.setLayout(new GridLayout(1, false));
-			
-			setControl(composite);
-		}
-	}
-	
-	private IWorkingSet fWorkingSet;
-	
-	public WorkingSetPropertyPage() {
-		noDefaultAndApplyButton();
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public void setElement(IAdaptable element) {
-		super.setElement(element);
-		
-		if (element instanceof IWorkingSet) {
-			fWorkingSet= (IWorkingSet)element;
-		} else {
-			fWorkingSet= (IWorkingSet)element.getAdapter(IWorkingSet.class);
-		}
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	protected void applyChanges() {
-		//Wizard does all the work
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	protected IWizard createWizard() {
-		if (fWorkingSet.isEditable()) {
-			return PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetEditWizard(fWorkingSet);
-		}
-		
-		return new ReadOnlyWizard();
-	}
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java
deleted file mode 100644
index 3956600..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/preferences/WorkingSetSettingsTransfer.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.preferences;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.AbstractWorkingSetManager;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkingSetManager;
-
-/**
- * The WorkingSetSettingsTransfer is the settings transfer for the workbench
- * working sets.
- * 
- * @since 3.3
- * 
- */
-public class WorkingSetSettingsTransfer extends WorkbenchSettingsTransfer {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.SettingsTransfer#getName()
-	 */
-	public String getName() {
-		return WorkbenchMessages.WorkingSets_Name;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.preferences.SettingsTransfer#transferSettings(org.eclipse.core.runtime.IPath)
-	 */
-	public IStatus transferSettings(IPath newWorkspaceRoot) {
-		IPath dataLocation = getNewWorkbenchStateLocation(newWorkspaceRoot);
-
-		if (dataLocation == null)
-			return noWorkingSettingsStatus();
-
-		dataLocation = dataLocation
-				.append(WorkingSetManager.WORKING_SET_STATE_FILENAME);
-
-		File stateFile = new File(dataLocation.toOSString());
-
-		try {
-			IWorkingSetManager manager = PlatformUI.getWorkbench()
-					.getWorkingSetManager();
-			if (manager instanceof AbstractWorkingSetManager)
-				((AbstractWorkingSetManager) manager).saveState(stateFile);
-			else
-				return new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
-						WorkbenchMessages.WorkingSets_CannotSave);
-		} catch (IOException e) {
-			new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
-					WorkbenchMessages.ProblemSavingWorkingSetState_message, e);
-		}
-		return Status.OK_STATUS;
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/AbstractTableInformationControl.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/AbstractTableInformationControl.java
deleted file mode 100644
index 49969ad..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/AbstractTableInformationControl.java
+++ /dev/null
@@ -1,626 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Display;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.misc.StringMatcher;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabItem;
-
-/**
- * @since 3.0
- */
-public abstract class AbstractTableInformationControl {
-
-    /**
-     * The NamePatternFilter selects the elements which match the given string
-     * patterns.
-     */
-    protected class NamePatternFilter extends ViewerFilter {
-
-        public NamePatternFilter() {
-            //no-op
-        }
-
-        /*
-         * (non-Javadoc) Method declared on ViewerFilter.
-         */
-        public boolean select(Viewer viewer, Object parentElement,
-                Object element) {
-            StringMatcher matcher = getMatcher();
-            if (matcher == null || !(viewer instanceof TableViewer)) {
-				return true;
-			}
-            TableViewer tableViewer = (TableViewer) viewer;
-
-            String matchName = ((ILabelProvider) tableViewer.getLabelProvider())
-                    .getText(element);
-            
-            if(matchName == null) {
-				return false;
-			}
-            // A dirty editor's label will start with dirty prefix, this prefix 
-            // should not be taken in consideration when matching with a pattern
-            String prefix = DefaultTabItem.DIRTY_PREFIX;
-            if (matchName.startsWith(prefix)) {
-				matchName = matchName.substring(prefix.length());
-			}
-            return matchName != null && matcher.match(matchName);
-        }
-    }
-
-    private static class BorderFillLayout extends Layout {
-
-        /** The border widths. */
-        final int fBorderSize;
-
-        /**
-         * Creates a fill layout with a border.
-         */
-        public BorderFillLayout(int borderSize) {
-            if (borderSize < 0) {
-				throw new IllegalArgumentException();
-			}
-            fBorderSize = borderSize;
-        }
-
-        /**
-         * Returns the border size.
-         */
-        public int getBorderSize() {
-            return fBorderSize;
-        }
-
-        /*
-         * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
-         *      int, int, boolean)
-         */
-        protected Point computeSize(Composite composite, int wHint, int hHint,
-                boolean flushCache) {
-
-            Control[] children = composite.getChildren();
-            Point minSize = new Point(0, 0);
-
-            if (children != null) {
-                for (int i = 0; i < children.length; i++) {
-                    Point size = children[i].computeSize(wHint, hHint,
-                            flushCache);
-                    minSize.x = Math.max(minSize.x, size.x);
-                    minSize.y = Math.max(minSize.y, size.y);
-                }
-            }
-
-            minSize.x += fBorderSize * 2 + RIGHT_MARGIN;
-            minSize.y += fBorderSize * 2;
-
-            return minSize;
-        }
-
-        /*
-         * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
-         *      boolean)
-         */
-        protected void layout(Composite composite, boolean flushCache) {
-
-            Control[] children = composite.getChildren();
-            Point minSize = new Point(composite.getClientArea().width,
-                    composite.getClientArea().height);
-
-            if (children != null) {
-                for (int i = 0; i < children.length; i++) {
-                    Control child = children[i];
-                    child.setSize(minSize.x - fBorderSize * 2, minSize.y
-                            - fBorderSize * 2);
-                    child.setLocation(fBorderSize, fBorderSize);
-                }
-            }
-        }
-    }
-
-    /** Border thickness in pixels. */
-    private static final int BORDER = 1;
-
-    /** Right margin in pixels. */
-    private static final int RIGHT_MARGIN = 3;
-
-    /** The control's shell */
-    private Shell fShell;
-
-    /** The composite */
-    protected Composite fComposite;
-
-    /** The control's text widget */
-    private Text fFilterText;
-
-    /** The control's table widget */
-    private TableViewer fTableViewer;
-
-    /** The control width constraint */
-    //private int fMaxWidth= -1;
-    /** The control height constraint */
-    //private int fMaxHeight= -1;
-    /** The current string matcher */
-    private StringMatcher fStringMatcher;
-
-    /**
-     * Creates an information control with the given shell as parent. The given
-     * styles are applied to the shell and the table widget.
-     * 
-     * @param parent
-     *            the parent shell
-     * @param shellStyle
-     *            the additional styles for the shell
-     * @param controlStyle
-     *            the additional styles for the control
-     */
-    public AbstractTableInformationControl(Shell parent, int shellStyle,
-            int controlStyle) {
-        fShell = new Shell(parent, shellStyle);
-        Display display = fShell.getDisplay();
-        fShell.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
-
-        // Composite for filter text and viewer
-
-        fComposite = new Composite(fShell, SWT.RESIZE);
-        GridLayout layout = new GridLayout(1, false);
-        fComposite.setLayout(layout);
-        //		fComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        createFilterText(fComposite);
-
-        fTableViewer = createTableViewer(fComposite, controlStyle);
-
-        final Table table = fTableViewer.getTable();
-        table.addKeyListener(new KeyListener() {
-            public void keyPressed(KeyEvent e) {
-                if (e.character == SWT.ESC) {
-					dispose();
-				} else if (e.character == SWT.DEL) {
-                    removeSelectedItems();
-                    e.character = SWT.NONE;
-                    e.doit = false;
-                }
-            }
-
-            public void keyReleased(KeyEvent e) {
-                // do nothing
-            }
-        });
-
-        table.addSelectionListener(new SelectionListener() {
-            public void widgetSelected(SelectionEvent e) {
-                // do nothing;
-            }
-
-            public void widgetDefaultSelected(SelectionEvent e) {
-                gotoSelectedElement();
-            }
-        });
-
-        /*
-         * Bug in GTK, see SWT bug: 62405 Editor drop down performance slow on
-         * Linux-GTK on mouse move.
-         * Rather then removing the support altogether this feature has been 
-         * worked around for GTK only as we expect that newer versions of GTK 
-         * will no longer exhibit this quality and we will be able to have the 
-         * desired support running on all platforms. See
-         * comment https://bugs.eclipse.org/bugs/show_bug.cgi?id=62405#c22 
-         * TODO: remove this code once bug 62405 is fixed for the mainstream GTK
-         * version
-         */
-        final int ignoreEventCount = Platform.getWS().equals(Platform.WS_GTK) ? 4 : 1;
-    
-        table.addMouseMoveListener(new MouseMoveListener() {
-            TableItem fLastItem = null;
-            int lastY = 0;
-            int itemHeightdiv4 = table.getItemHeight() / 4;
-            int tableHeight = table.getBounds().height;
-            Point tableLoc = table.toDisplay(0,0);
-            int divCount = 0;
-            public void mouseMove(MouseEvent e) {
-                if (divCount == ignoreEventCount) {
-					divCount = 0;
-				}
-                if (table.equals(e.getSource()) & ++divCount == ignoreEventCount) {
-                    Object o = table.getItem(new Point(e.x, e.y));
-                    if (o instanceof TableItem && lastY != e.y) {
-                        lastY = e.y;
-                        if (!o.equals(fLastItem)) {
-                            fLastItem = (TableItem) o;
-                            table.setSelection(new TableItem[] { fLastItem });
-                        } else if (e.y < itemHeightdiv4) {
-                            // Scroll up
-                            Item item = fTableViewer.scrollUp(e.x + tableLoc.x, e.y + tableLoc.y);
-                            if (item instanceof TableItem) {
-                                fLastItem = (TableItem) item;
-                                table.setSelection(new TableItem[] { fLastItem });
-                            }
-                        } else if (e.y > tableHeight - itemHeightdiv4) {
-                            // Scroll down
-                            Item item = fTableViewer.scrollDown(e.x + tableLoc.x, e.y + tableLoc.y);
-                            if (item instanceof TableItem) {
-                                fLastItem = (TableItem) item;
-                                table.setSelection(new TableItem[] { fLastItem });
-                            }
-                        }
-                    }
-                }
-            }
-        });
-    
-        table.addMouseListener(new MouseAdapter() {
-            public void mouseUp(MouseEvent e) {
-                if (table.getSelectionCount() < 1) {
-					return;
-				}
-
-                if (e.button == 1) {
-					if (table.equals(e.getSource())) {
-                        Object o = table.getItem(new Point(e.x, e.y));
-                        TableItem selection = table.getSelection()[0];
-                        if (selection.equals(o)) {
-							gotoSelectedElement();
-						}
-                    }
-				}
-                if (e.button == 3) {
-                    TableItem tItem = fTableViewer.getTable().getItem(
-                            new Point(e.x, e.y));
-                    if (tItem != null) {
-                        Menu menu = new Menu(fTableViewer.getTable());
-                        MenuItem mItem = new MenuItem(menu, SWT.NONE);
-                        mItem.setText(WorkbenchMessages.PartPane_close);
-                        mItem.addSelectionListener(new SelectionAdapter() {
-                            public void widgetSelected(
-                                    SelectionEvent selectionEvent) {
-                                removeSelectedItems();
-                            }
-                        });
-                        menu.setVisible(true);
-                    }
-                }
-            }
-        });
-
-        int border = ((shellStyle & SWT.NO_TRIM) == 0) ? 0 : BORDER;
-        fShell.setLayout(new BorderFillLayout(border));
-
-        setInfoSystemColor();
-        installFilter();
-    }
-
-    /**
-     * Removes the selected items from the list and closes their corresponding tabs
-     * Selects the next item in the list or disposes it if its presentation is disposed
-     */
-    protected void removeSelectedItems() {
-        int selInd = fTableViewer.getTable().getSelectionIndex();
-        if (deleteSelectedElements()) {
-            return;
-        }
-        fTableViewer.refresh();
-        if (selInd >= fTableViewer.getTable().getItemCount()) {
-			selInd = fTableViewer.getTable().getItemCount() - 1;
-		}
-        if (selInd >= 0) {
-			fTableViewer.getTable().setSelection(selInd);
-		}
-    }
-
-    protected abstract TableViewer createTableViewer(Composite parent, int style);
-
-    public TableViewer getTableViewer() {
-        return fTableViewer;
-    }
-
-    protected Text createFilterText(Composite parent) {
-        fFilterText = new Text(parent, SWT.NONE);
-
-        GridData data = new GridData();
-        GC gc = new GC(parent);
-        gc.setFont(parent.getFont());
-        FontMetrics fontMetrics = gc.getFontMetrics();
-        gc.dispose();
-
-        data.heightHint = org.eclipse.jface.dialogs.Dialog
-                .convertHeightInCharsToPixels(fontMetrics, 1);
-        data.horizontalAlignment = GridData.FILL;
-        data.verticalAlignment = GridData.BEGINNING;
-        fFilterText.setLayoutData(data);
-
-        fFilterText.addKeyListener(new KeyListener() {
-            public void keyPressed(KeyEvent e) {
-                if (e.keyCode == 0x0D) {
-					gotoSelectedElement();
-				}
-                if (e.keyCode == SWT.ARROW_DOWN) {
-                    fTableViewer.getTable().setFocus();
-                    fTableViewer.getTable().setSelection(0);
-                }
-                if (e.keyCode == SWT.ARROW_UP) {
-                    fTableViewer.getTable().setFocus();
-                    fTableViewer.getTable().setSelection(
-                            fTableViewer.getTable().getItemCount() - 1);
-                }
-                if (e.character == 0x1B) {
-					dispose();
-				}
-            }
-
-            public void keyReleased(KeyEvent e) {
-                // do nothing
-            }
-        });
-
-        // Horizontal separator line
-        Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL
-                | SWT.LINE_DOT);
-        separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-        return fFilterText;
-    }
-
-    private void setInfoSystemColor() {
-        Display display = fShell.getDisplay();
-        setForegroundColor(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
-        setBackgroundColor(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-    }
-
-    private void installFilter() {
-        fFilterText.setText(""); //$NON-NLS-1$
-
-        fFilterText.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                String text = ((Text) e.widget).getText();
-                int length = text.length();
-                if (length > 0 && text.charAt(length - 1) != '*') {
-                    text = text + '*';
-                }
-                setMatcherString(text);
-            }
-        });
-    }
-
-    /**
-     * The string matcher has been modified. The default implementation
-     * refreshes the view and selects the first macthed element
-     */
-    protected void stringMatcherUpdated() {
-        // refresh viewer to refilter
-        fTableViewer.getControl().setRedraw(false);
-        fTableViewer.refresh();
-        selectFirstMatch();
-        fTableViewer.getControl().setRedraw(true);
-    }
-
-    /**
-     * Sets the patterns to filter out for the receiver.
-     * <p>
-     * The following characters have special meaning: ? => any character * =>
-     * any string
-     * </p>
-     */
-    protected void setMatcherString(String pattern) {
-        if (pattern.length() == 0) {
-            fStringMatcher = null;
-        } else {
-            boolean ignoreCase = pattern.toLowerCase().equals(pattern);
-            fStringMatcher = new StringMatcher(pattern, ignoreCase, false);
-        }
-        stringMatcherUpdated();
-    }
-
-    protected StringMatcher getMatcher() {
-        return fStringMatcher;
-    }
-
-    /**
-     * Implementers can modify
-     */
-    protected Object getSelectedElement() {
-        return ((IStructuredSelection) fTableViewer.getSelection())
-                .getFirstElement();
-    }
-
-    /**
-     * Implementers can modify
-     */
-    protected IStructuredSelection getSelectedElements() {
-        return (IStructuredSelection) fTableViewer.getSelection();
-    }
-
-    protected abstract void gotoSelectedElement();
-
-    /**
-     * Delete all selected elements.
-     *  
-     * @return <code>true</code> if there are no elements left after deletion.
-     */
-    protected abstract boolean deleteSelectedElements();
-
-    /**
-     * Selects the first element in the table which matches the current filter
-     * pattern.
-     */
-    protected void selectFirstMatch() {
-        Table table = fTableViewer.getTable();
-        Object element = findElement(table.getItems());
-        if (element != null) {
-			fTableViewer.setSelection(new StructuredSelection(element), true);
-		} else {
-			fTableViewer.setSelection(StructuredSelection.EMPTY);
-		}
-    }
-
-    private Object findElement(TableItem[] items) {
-        ILabelProvider labelProvider = (ILabelProvider) fTableViewer
-                .getLabelProvider();
-        for (int i = 0; i < items.length; i++) {
-            Object element = items[i].getData();
-            if (fStringMatcher == null) {
-				return element;
-			}
-
-            if (element != null) {
-                String label = labelProvider.getText(element);
-                if(label == null) {
-					return null;
-				}
-                // remove the dirty prefix from the editor's label
-                String prefix = DefaultTabItem.DIRTY_PREFIX;
-                if (label.startsWith(prefix)) {
-					label = label.substring(prefix.length());
-				}
-                if (fStringMatcher.match(label)) {
-					return element;
-				}
-            }
-        }
-        return null;
-    }
-
-    public abstract void setInput(Object information);
-
-    protected void inputChanged(Object newInput, Object newSelection) {
-        fFilterText.setText(""); //$NON-NLS-1$
-        fTableViewer.setInput(newInput);
-
-        // Resize the table's height accordingly to the new input
-        Table viewerTable = fTableViewer.getTable();
-        Point tableSize = viewerTable.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-        int tableMaxHeight = fComposite.getDisplay().getBounds().height / 2;
-        // removes padding if necessary
-        int tableHeight = (tableSize.y <= tableMaxHeight) ? tableSize.y
-                - viewerTable.getItemHeight() - viewerTable.getItemHeight() / 2
-                : tableMaxHeight;
-        ((GridData) viewerTable.getLayoutData()).heightHint = tableHeight;
-        Point fCompSize = fComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-        fComposite.setSize(fCompSize);
-        fComposite.getShell().setSize(fCompSize);
-    }
-
-    public void setVisible(boolean visible) {
-        fShell.setVisible(visible);
-    }
-
-    public void dispose() {
-        if (fShell != null) {
-            if (!fShell.isDisposed()) {
-				fShell.dispose();
-			}
-            fShell = null;
-            fTableViewer = null;
-            fComposite = null;
-            fFilterText = null;
-        }
-    }
-
-    public boolean hasContents() {
-        return fTableViewer != null && fTableViewer.getInput() != null;
-    }
-
-    public void setSizeConstraints(int maxWidth, int maxHeight) {
-        //fMaxWidth= maxWidth;
-        //fMaxHeight= maxHeight;
-    }
-
-    public Point computeSizeHint() {
-        return fShell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-    }
-
-    public void setLocation(Point location) {
-        Rectangle trim = fShell.computeTrim(0, 0, 0, 0);
-        Point textLocation = fComposite.getLocation();
-        location.x += trim.x - textLocation.x;
-        location.y += trim.y - textLocation.y;
-        fShell.setLocation(location);
-    }
-
-    public void setSize(int width, int height) {
-        fShell.setSize(width, height);
-    }
-
-    public void addDisposeListener(DisposeListener listener) {
-        fShell.addDisposeListener(listener);
-    }
-
-    public void removeDisposeListener(DisposeListener listener) {
-        fShell.removeDisposeListener(listener);
-    }
-
-    public void setForegroundColor(Color foreground) {
-        fTableViewer.getTable().setForeground(foreground);
-        fFilterText.setForeground(foreground);
-        fComposite.setForeground(foreground);
-    }
-
-    public void setBackgroundColor(Color background) {
-        fTableViewer.getTable().setBackground(background);
-        fFilterText.setBackground(background);
-        fComposite.setBackground(background);
-    }
-
-    public boolean isFocusControl() {
-        return fTableViewer.getControl().isFocusControl()
-                || fFilterText.isFocusControl();
-    }
-
-    public void setFocus() {
-        fShell.forceFocus();
-        fFilterText.setFocus();
-    }
-
-    public void addFocusListener(FocusListener listener) {
-        fShell.addFocusListener(listener);
-    }
-
-    public void removeFocusListener(FocusListener listener) {
-        fShell.removeFocusListener(listener);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/BasicPartList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/BasicPartList.java
deleted file mode 100644
index a372a83..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/BasicPartList.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.presentations;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.viewers.ContentViewer;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabItem;
-import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
-import org.eclipse.ui.internal.presentations.util.PresentablePartFolder;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class BasicPartList extends AbstractTableInformationControl {
-
-    private boolean hiddenTabsBold = true;
-    private PresentablePartFolder folder;
-    private IStackPresentationSite site;
-    
-    private class BasicStackListContentProvider implements
-            IStructuredContentProvider {
-    	
-    	/**
-    	 * Constructor for stack list content provider.
-    	 *
-    	 */
-        public BasicStackListContentProvider() {
-            //no-op
-        }
-
-        public void dispose() {
-            //no-op 
-        }
-
-        public Object[] getElements(Object inputElement) {
-            if (folder == null) {
-                return new IPresentablePart[0];
-            }
-            
-            return folder.getPartList();
-        }
-
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-            folder = (PresentablePartFolder) newInput;
-        }
-    }
-
-    private class BasicStackListLabelProvider extends LabelProvider implements
-            IFontProvider {
-
-        private Font boldFont = null;
-
-        /**
-         * Constructor for stack list label provider.
-         *
-         */
-        public BasicStackListLabelProvider() {
-            //no-op
-        }
-
-        public String getText(Object element) {
-            IPresentablePart presentablePart = (IPresentablePart) element;
-            if (presentablePart.isDirty()) {
-                return DefaultTabItem.DIRTY_PREFIX + presentablePart.getName();
-            }
-            
-            return presentablePart.getName();
-        }
-
-        public Image getImage(Object element) {
-            IPresentablePart presentablePart = (IPresentablePart) element;
-            return presentablePart.getTitleImage();
-        }
-
-        public Font getFont(Object element) {
-            IPresentablePart presentablePart = (IPresentablePart)element;
-
-            AbstractTabItem item = folder.getTab(presentablePart);
-            // if in single tab mode, do not use the bold font for non-visible tabs
-            // if in multiple tab mode, use the bold for non-visible tabs only
-            if ((item!=null && item.isShowing()) || !hiddenTabsBold) {
-				return folder.getTabFolder().getControl().getFont();
-			}
-
-            if (boldFont == null) {
-                Control control = folder.getTabFolder().getControl();
-                Font originalFont = control.getFont();
-                FontData fontData[] = originalFont.getFontData();
-                // Adding the bold attribute
-                for (int i = 0; i < fontData.length; i++) {
-					fontData[i].setStyle(fontData[i].getStyle() | SWT.BOLD);
-				}
-                boldFont = new Font(control.getDisplay(), fontData);
-            }
-            return boldFont;
-        }
-
-        public void dispose() {
-            super.dispose();
-            if (boldFont != null) {
-				boldFont.dispose();
-			}
-        }
-    }
-
-    private class BasicStackListViewerComparator extends ViewerComparator {
-    	/**
-    	 * Constructor for stack list viewer's comparator.
-    	 *
-    	 */
-        public BasicStackListViewerComparator() {
-            //no-op
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-         */
-        public int compare(Viewer viewer, Object e1, Object e2) {
-            int cat1 = category(e1);
-            int cat2 = category(e2);
-
-            if (cat1 != cat2) {
-				return cat1 - cat2;
-			}
-
-            String name1;
-            String name2;
-
-            if (viewer == null || !(viewer instanceof ContentViewer)) {
-                name1 = e1.toString();
-                name2 = e2.toString();
-            } else {
-                IBaseLabelProvider prov = ((ContentViewer) viewer)
-                        .getLabelProvider();
-                if (prov instanceof ILabelProvider) {
-                    ILabelProvider lprov = (ILabelProvider) prov;
-                    name1 = lprov.getText(e1);
-                    name2 = lprov.getText(e2);
-                    // ILabelProvider's implementation in BasicStackList calls 
-                    // DefaultEditorPresentation.getLabelText which returns the name of dirty 
-                    // files begining with dirty prefix, sorting should not take dirty prefix in consideration
-                    String prefix = DefaultTabItem.DIRTY_PREFIX;
-                    if (name1.startsWith(prefix)) {
-						name1 = name1.substring(prefix.length());
-					}
-                    if (name2.startsWith(prefix)) {
-						name2 = name2.substring(prefix.length());
-					}
-                } else {
-                    name1 = e1.toString();
-                    name2 = e2.toString();
-                }
-            }
-            if (name1 == null) {
-				name1 = "";//$NON-NLS-1$
-			}
-            if (name2 == null) {
-				name2 = "";//$NON-NLS-1$
-			}
-            return getComparator().compare(name1, name2);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ViewerComparator#category(java.lang.Object)
-         */
-        public int category(Object element) {
-
-            IPresentablePart part = (IPresentablePart)element;
-            AbstractTabItem tabItem = folder.getTab(part);
-            
-            if (tabItem!=null && tabItem.isShowing()) {
-				return 1; // visible
-			}
-            return 0; // not visible
-        }
-    }
-
-    /**
-     * Constructor for BasicPartList.
-     * 
-     * @param parent the parent shell
-     * @param shellStyle the SWT style bits used to create the shell
-     * @param treeStyle	the SWT style bits used to create the tree
-     * @param site 
-     * @param folder 
-     */
-    public BasicPartList(Shell parent, int shellStyle, int treeStyle, 
-            IStackPresentationSite site, PresentablePartFolder folder) {
-        super(parent, shellStyle, treeStyle);
-        
-        this.site = site;
-        this.folder = folder;
-    }
-
-    protected TableViewer createTableViewer(Composite parent, int style) {
-        Table table = new Table(parent, SWT.SINGLE | (style & ~SWT.MULTI));
-        table.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
-        TableViewer tableViewer = new TableViewer(table) {
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.viewers.TableViewer#internalRefresh(java.lang.Object)
-             */
-            protected void internalRefresh(Object element) {
-                boolean usingMotif = "motif".equals(SWT.getPlatform()); //$NON-NLS-1$
-                try {
-                    // This avoids a "graphic is disposed" error on Motif by not letting
-                    // it redraw while we remove entries.  Some items in this table are
-                    // being removed and may have icons which may have already been
-                    // disposed elsewhere.
-                    if (usingMotif) {
-						getTable().setRedraw(false);
-					}
-                    super.internalRefresh(element);
-                } finally {
-                    if (usingMotif) {
-						getTable().setRedraw(true);
-					}
-                }
-            }
-        };
-        tableViewer.addFilter(new NamePatternFilter());
-        tableViewer.setContentProvider(new BasicStackListContentProvider());
-        tableViewer.setComparator(new BasicStackListViewerComparator());
-        tableViewer.setLabelProvider(new BasicStackListLabelProvider());
-        return tableViewer;
-    }
-
-    public void setInput(Object information) {
-        PresentablePartFolder newFolder = (PresentablePartFolder) information;
-        inputChanged(newFolder, newFolder.getCurrent());
-    }
-
-    protected void gotoSelectedElement() {
-        Object selectedElement = getSelectedElement();
-
-        //close the shell
-        dispose();
-
-        if (selectedElement instanceof IPresentablePart) {
-        	site.selectPart((IPresentablePart)selectedElement);
-        }
-    }
-
-    protected boolean deleteSelectedElements() {
-
-        IStructuredSelection structuredSelection = getSelectedElements();
-
-        if (structuredSelection != null) {
-
-            ArrayList list = new ArrayList(structuredSelection.size());
-
-            for (Iterator iterator = structuredSelection.iterator(); iterator
-                    .hasNext();) {
-                IPresentablePart presentablePart = (IPresentablePart) iterator.next();
-                list.add(presentablePart);
-            }
-
-            site.close((IPresentablePart[]) list
-                    .toArray(new IPresentablePart[list.size()]));
-        }
-
-        if (folder.isDisposed()) {
-            fComposite.dispose();
-            return true;
-        }
-        return false;
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/DefaultActionBarPresentationFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/DefaultActionBarPresentationFactory.java
deleted file mode 100644
index fad2c06..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/DefaultActionBarPresentationFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.internal.provisional.action.CoolBarManager2;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.jface.internal.provisional.action.IToolBarManager2;
-import org.eclipse.jface.internal.provisional.action.ToolBarContributionItem2;
-import org.eclipse.jface.internal.provisional.action.ToolBarManager2;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.internal.provisional.presentations.IActionBarPresentationFactory;
-
-/**
- * The intention of this class is to allow for replacing the implementation of
- * the cool bar and tool bars in the workbench.
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public class DefaultActionBarPresentationFactory implements IActionBarPresentationFactory {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.IActionBarPresentationFactory#createCoolBarManager()
-	 */
-	public ICoolBarManager2 createCoolBarManager() {
-		return new CoolBarManager2(SWT.FLAT);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.IActionBarPresentationFactory#createToolBarManager()
-	 */
-	public IToolBarManager2 createToolBarManager() {
-		return new ToolBarManager2(SWT.FLAT | SWT.RIGHT);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.IActionBarPresentationFactory#createViewToolBarManager()
-	 */
-	public IToolBarManager2 createViewToolBarManager() {
-		return new ToolBarManager2(SWT.FLAT | SWT.RIGHT | SWT.WRAP);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.IActionBarPresentationFactory#createToolBarContributionItem(org.eclipse.jface.action.IToolBarManager, java.lang.String)
-	 */
-	public IToolBarContributionItem createToolBarContributionItem(
-			IToolBarManager toolBarManager, String id) {
-		return new ToolBarContributionItem2(toolBarManager, id);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/ISelfUpdatingAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/ISelfUpdatingAction.java
deleted file mode 100644
index 4434911..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/ISelfUpdatingAction.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.IAction;
-
-/**
- * @since 3.0
- */
-public interface ISelfUpdatingAction extends IAction {
-    /**
-     * Refreshes the action.
-     */
-    public void update();
-
-    public boolean shouldBeVisible();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativePresentationFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativePresentationFactory.java
deleted file mode 100644
index c0efff9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativePresentationFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-import org.eclipse.ui.presentations.WorkbenchPresentationFactory;
-
-/**
- * A presentation factory using native widgets.
- * <p>
- * EXPERIMENTAL
- * </p>
- * 
- * @since 3.0
- */
-public class NativePresentationFactory extends WorkbenchPresentationFactory {
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.presentations.AbstractPresentationFactory
-     */
-    public StackPresentation createEditorPresentation(Composite parent,
-            IStackPresentationSite site) {
-        return new NativeStackPresentation(parent, site);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.presentations.AbstractPresentationFactory
-     */
-    public StackPresentation createViewPresentation(Composite parent,
-            IStackPresentationSite site) {
-        return new NativeStackPresentation(parent, site);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.presentations.AbstractPresentationFactory
-     */
-    public StackPresentation createStandaloneViewPresentation(Composite parent,
-            IStackPresentationSite site, boolean showTitle) {
-        // TODO honour showTitle
-        return new NativeStackPresentation(parent, site);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativeStackPresentation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativeStackPresentation.java
deleted file mode 100644
index 4830c43..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/NativeStackPresentation.java
+++ /dev/null
@@ -1,489 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.Menu;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.PresentationUtil;
-import org.eclipse.ui.presentations.StackDropResult;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * A stack presentation using native widgets.
- * <p>
- * EXPERIMENTAL
- * </p> 
- * 
- * @since 3.0
- */
-public class NativeStackPresentation extends StackPresentation {
-
-    private TabFolder tabFolder;
-
-    private Listener dragListener;
-
-    private IPresentablePart current;
-
-    private MenuManager systemMenuManager = new MenuManager();
-
-   	// don't reset this dynamically, so just keep the information static.
-	// see bug:
-	//   75422 [Presentations] Switching presentation to R21 switches immediately, but only partially
-    private static int tabPos = PlatformUI.getPreferenceStore().getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-  
-    private final static String TAB_DATA = NativeStackPresentation.class
-            .getName()
-            + ".partId"; //$NON-NLS-1$
-
-    private MouseListener mouseListener = new MouseAdapter() {
-        public void mouseDown(MouseEvent e) {
-            //			// PR#1GDEZ25 - If selection will change in mouse up ignore mouse down.
-            //			// Else, set focus.
-            //			TabItem newItem = tabFolder.getItem(new Point(e.x, e.y));
-            //			if (newItem != null) {
-            //				TabItem oldItem = tabFolder.getSelection();
-            //				if (newItem != oldItem)
-            //					return;
-            //			}
-            if (current != null) {
-                current.setFocus();
-            }
-        }
-    };
-
-    private Listener menuListener = new Listener() {
-        /* (non-Javadoc)
-         * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-         */
-        public void handleEvent(Event event) {
-            Point pos = new Point(event.x, event.y);
-            //			TabItem item = tabFolder.getItem(pos);
-            TabItem item = null;
-            IPresentablePart part = null;
-            if (item != null) {
-                part = getPartForTab(item);
-            }
-            showPaneMenu(part, pos);
-        }
-    };
-
-    private Listener selectionListener = new Listener() {
-        public void handleEvent(Event e) {
-            IPresentablePart item = getPartForTab((TabItem) e.item);
-            if (item != null) {
-                getSite().selectPart(item);
-                //				item.setFocus();
-            }
-        }
-    };
-
-    private Listener resizeListener = new Listener() {
-        public void handleEvent(Event e) {
-            setControlSize();
-        }
-    };
-
-    private IPropertyListener childPropertyChangeListener = new IPropertyListener() {
-        public void propertyChanged(Object source, int property) {
-
-            if (isDisposed()) {
-				return;
-			}
-
-            if (source instanceof IPresentablePart) {
-                IPresentablePart part = (IPresentablePart) source;
-                childPropertyChanged(part, property);
-            }
-        }
-    };
-
-    private DisposeListener tabDisposeListener = new DisposeListener() {
-        public void widgetDisposed(DisposeEvent e) {
-            if (e.widget instanceof TabItem) {
-                TabItem item = (TabItem) e.widget;
-                IPresentablePart part = getPartForTab(item);
-                part.removePropertyListener(childPropertyChangeListener);
-            }
-        }
-    };
-
-    public NativeStackPresentation(Composite parent,
-            IStackPresentationSite stackSite) {
-        super(stackSite);
-
-        tabFolder = new TabFolder(parent, tabPos);
-
-        // listener to switch between visible tabItems
-        tabFolder.addListener(SWT.Selection, selectionListener);
-
-        // listener to resize visible components
-        tabFolder.addListener(SWT.Resize, resizeListener);
-
-        // listen for mouse down on tab to set focus.
-        tabFolder.addMouseListener(mouseListener);
-
-        tabFolder.addListener(SWT.MenuDetect, menuListener);
-
-        dragListener = new Listener() {
-            public void handleEvent(Event event) {
-                Point localPos = new Point(event.x, event.y);
-                //				TabItem tabUnderPointer = tabFolder.getItem(localPos);
-                TabItem tabUnderPointer = null;
-
-                if (tabUnderPointer == null) {
-                    return;
-                }
-
-                IPresentablePart part = getPartForTab(tabUnderPointer);
-
-                if (getSite().isPartMoveable(part)) {
-                    getSite().dragStart(part, tabFolder.toDisplay(localPos),
-                            false);
-                }
-            }
-        };
-
-        PresentationUtil.addDragListener(tabFolder, dragListener);
-
-    }
-
-    /**
-     * Returns the index of the tab for the given part, or returns tabFolder.getItemCount()
-     * if there is no such tab.
-     * 
-     * @param part part being searched for
-     * @return the index of the tab for the given part, or the number of tabs
-     * if there is no such tab
-     */
-    private final int indexOf(IPresentablePart part) {
-        if (part == null) {
-            return tabFolder.getItemCount();
-        }
-
-        TabItem[] items = tabFolder.getItems();
-
-        for (int idx = 0; idx < items.length; idx++) {
-            IPresentablePart tabPart = getPartForTab(items[idx]);
-
-            if (part == tabPart) {
-                return idx;
-            }
-        }
-
-        return items.length;
-    }
-
-    /**
-     * Returns the tab for the given part, or null if there is no such tab
-     * 
-     * @param part the part being searched for
-     * @return the tab for the given part, or null if there is no such tab
-     */
-    protected final TabItem getTab(IPresentablePart part) {
-        TabItem[] items = tabFolder.getItems();
-
-        int idx = indexOf(part);
-
-        if (idx < items.length) {
-            return items[idx];
-        }
-
-        return null;
-    }
-
-    /**
-     * @param part
-     * @param property
-     */
-    protected void childPropertyChanged(IPresentablePart part, int property) {
-        TabItem tab = getTab(part);
-        initTab(tab, part);
-    }
-
-    protected final IPresentablePart getPartForTab(TabItem item) {
-        IPresentablePart part = (IPresentablePart) item.getData(TAB_DATA);
-        return part;
-    }
-
-    protected TabFolder getTabFolder() {
-        return tabFolder;
-    }
-
-    public boolean isDisposed() {
-        return tabFolder == null || tabFolder.isDisposed();
-    }
-
-    /**
-     * Set the size of a page in the folder.
-     */
-    private void setControlSize() {
-        if (current == null || tabFolder == null) {
-			return;
-		}
-        //		Rectangle bounds;
-        // @issue as above, the mere presence of a theme should not change the behaviour
-        //		if ((mapTabToPart.size() > 1)
-        //			|| ((tabThemeDescriptor != null) && (mapTabToPart.size() >= 1)))
-        //			bounds = calculatePageBounds(tabFolder);
-        //		else
-        //			bounds = tabFolder.getBounds();
-        current.setBounds(calculatePageBounds(tabFolder));
-        //current.moveAbove(tabFolder);
-    }
-
-    public static Rectangle calculatePageBounds(TabFolder folder) {
-        if (folder == null) {
-			return new Rectangle(0, 0, 0, 0);
-		}
-        Rectangle bounds = folder.getBounds();
-        Rectangle offset = folder.getClientArea();
-        bounds.x += offset.x;
-        bounds.y += offset.y;
-        bounds.width = offset.width;
-        bounds.height = offset.height;
-        return bounds;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#dispose()
-     */
-    public void dispose() {
-        if (isDisposed()) {
-            return;
-        }
-        PresentationUtil.removeDragListener(tabFolder, dragListener);
-
-        //systemMenuManager.dispose();
-
-        tabFolder.dispose();
-        tabFolder = null;
-    }
-
-    private TabItem createPartTab(IPresentablePart part, int tabIndex) {
-        TabItem tabItem = new TabItem(tabFolder, SWT.NONE, tabIndex);
-        tabItem.setData(TAB_DATA, part);
-        part.addPropertyListener(childPropertyChangeListener);
-        tabItem.addDisposeListener(tabDisposeListener);
-        initTab(tabItem, part);
-        return tabItem;
-    }
-
-    /**
-     * Initializes a tab for the given part. Sets the text, icon, tool tip,
-     * etc. This will also be called whenever a relevant property changes
-     * in the part to reflect those changes in the tab. Subclasses may override
-     * to change the appearance of tabs for a particular part.
-     * 
-     * @param tabItem tab for the part
-     * @param part the part being displayed
-     */
-    protected void initTab(TabItem tabItem, IPresentablePart part) {
-        tabItem.setText(part.getName());
-        tabItem.setToolTipText(part.getTitleToolTip());
-
-        Image tabImage = part.getTitleImage();
-        if (tabImage != tabItem.getImage()) {
-            tabItem.setImage(tabImage);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.StackPresentation#addPart(org.eclipse.ui.internal.skins.IPresentablePart, org.eclipse.ui.internal.skins.IPresentablePart)
-     */
-    public void addPart(IPresentablePart newPart, Object cookie) {
-        createPartTab(newPart, tabFolder.getItemCount());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.StackPresentation#removePart(org.eclipse.ui.internal.skins.IPresentablePart)
-     */
-    public void removePart(IPresentablePart oldPart) {
-        TabItem item = getTab(oldPart);
-        if (item == null) {
-            return;
-        }
-        oldPart.setVisible(false);
-
-        item.dispose();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.StackPresentation#selectPart(org.eclipse.ui.internal.skins.IPresentablePart)
-     */
-    public void selectPart(IPresentablePart toSelect) {
-        if (toSelect == current) {
-            return;
-        }
-
-        if (current != null) {
-            current.setVisible(false);
-        }
-
-        current = toSelect;
-
-        if (current != null) {
-            tabFolder.setSelection(indexOf(current));
-            current.setVisible(true);
-            setControlSize();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#setBounds(org.eclipse.swt.graphics.Rectangle)
-     */
-    public void setBounds(Rectangle bounds) {
-        tabFolder.setBounds(bounds);
-        setControlSize();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#computeMinimumSize()
-     */
-    public Point computeMinimumSize() {
-        return Geometry.getSize(tabFolder.computeTrim(0, 0, 0, 0));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#setVisible(boolean)
-     */
-    public void setVisible(boolean isVisible) {
-        if (current != null) {
-            current.setVisible(isVisible);
-        }
-        tabFolder.setVisible(isVisible);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#setState(int)
-     */
-    public void setState(int state) {
-        //		tabFolder.setMinimized(state == IPresentationSite.STATE_MINIMIZED);
-        //		tabFolder.setMaximized(state == IPresentationSite.STATE_MAXIMIZED);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#getSystemMenuManager()
-     */
-    public IMenuManager getSystemMenuManager() {
-        return systemMenuManager;
-    }
-
-    /**
-     * @param part
-     * @param point
-     */
-    protected void showPaneMenu(IPresentablePart part, Point point) {
-        systemMenuManager.update(false);
-        Menu aMenu = systemMenuManager.createContextMenu(tabFolder.getParent());
-        aMenu.setLocation(point.x, point.y);
-        aMenu.setVisible(true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.Presentation#getControl()
-     */
-    public Control getControl() {
-        return tabFolder;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.skins.StackPresentation#dragOver(org.eclipse.swt.widgets.Control, org.eclipse.swt.graphics.Point)
-     */
-    public StackDropResult dragOver(Control currentControl, Point location) {
-
-        // Determine which tab we're currently dragging over
-        //		Point localPos = tabFolder.toControl(location);
-        //		final TabItem tabUnderPointer = tabFolder.getItem(localPos);
-        final TabItem tabUnderPointer = null;
-
-        // This drop target only deals with tabs... if we're not dragging over
-        // a tab, exit.
-        if (tabUnderPointer == null) {
-            return null;
-        }
-
-        //		return new StackDropResult(Geometry.toDisplay(tabFolder, tabUnderPointer.getBounds()),
-        //			tabFolder.indexOf(tabUnderPointer));
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#showSystemMenu()
-     */
-    public void showSystemMenu() {
-        // TODO Auto-generated method stub
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#showPaneMenu()
-     */
-    public void showPaneMenu() {
-        // TODO Auto-generated method stub
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#getTabList(IPresentablePart)
-     */
-    public Control[] getTabList(IPresentablePart part) {
-        ArrayList list = new ArrayList();
-        if (getControl() != null) {
-			list.add(getControl());
-		}
-        if (part.getToolBar() != null) {
-			list.add(part.getToolBar());
-		}
-        if (part.getControl() != null) {
-			list.add(part.getControl());
-		}
-        return (Control[]) list.toArray(new Control[list.size()]);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#getCurrentPart()
-     */
-    public IPresentablePart getCurrentPart() {
-        return current;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#setActive(int)
-     */
-    public void setActive(int newState) {
-
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolder.java
deleted file mode 100644
index 33525b1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolder.java
+++ /dev/null
@@ -1,883 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabFolder2Adapter;
-import org.eclipse.swt.custom.CTabFolderEvent;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.internal.layout.SizeCache;
-import org.eclipse.ui.internal.presentations.util.ProxyControl;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * This class implements the tab folders that contains can contain two toolbars
- * and status text. Wherever possible, the toolbars are aligned with the tabs.
- * If there is not enough room beside the tabs, the toolbars are aligned with
- * the status text. This is the same tab folder that is used to arrange views
- * and editors in Eclipse.
- * <p>
- * This is closely related to DefaultPartPresentation, but they have different
- * responsibilities. This is essentially a CTabFolder that can manage a toolbar.
- * It should not depend on data structures from the workbench, and its public
- * interface should only use SWT objects or listeners. DefaultPartPresentation
- * uses a PaneFolder to arrange views or editors. Knowledge of higher-level data
- * structures should go there.
- * </p>
- * <p>
- * Although it is not actually a control, the public interface is much like an
- * SWT control. Implementation-wise, this is actually a combination of a
- * CTabFolder and a ViewForm. It encapsulates the details of moving the toolbar
- * between the CTabFolder and the ViewForm, and provides a simpler interface to
- * the ViewForm/CTabFolder.
- * </p>
- * To be consistent with SWT composites, this object can deal with its children
- * being disposed without warning. This is treated like a removal.
- * 
- * @since 3.0
- */
-public final class PaneFolder {
-    // Tab folder and associated proxy controls
-    private CTabFolder tabFolder;
-
-    private Control titleAreaProxy;
-
-    // View form and associated proxy controls
-    private ViewForm viewForm;
-
-    private ProxyControl contentProxy;
-
-    private ProxyControl viewFormTopLeftProxy;
-
-    private ProxyControl viewFormTopRightProxy;
-
-    private ProxyControl viewFormTopCenterProxy;
-
-    // Cached sizes of the top-right and top-center controls
-    private SizeCache topRightCache = new SizeCache();
-
-    private SizeCache topCenterCache = new SizeCache();
-
-    private SizeCache topLeftCache = new SizeCache();
-
-    private boolean putTrimOnTop = true;
-
-    // HACK: Sometimes the topright control isn't resized when
-    // CTabFolder.setBounds is called.
-    // We use the following data structures to detect if this has happened and
-    // force a layout when necessary.
-    private boolean topRightResized = false;
-
-    private boolean useTopRightOptimization = false;
-
-    private int lastWidth = 0;
-
-    // END OF HACK
-
-    private DisposeListener tabFolderDisposeListener = new DisposeListener() {
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-         */
-        public void widgetDisposed(DisposeEvent e) {
-            PaneFolder.this.widgetDisposed();
-        }
-    };
-
-    /**
-     * Listens for its children being disposed, and removes them if this happens
-     * (although this may indicate a programming error, this behavior is
-     * consistent with SWT composites).
-     */
-    private DisposeListener prematureDisposeListener = new DisposeListener() {
-
-        public void widgetDisposed(DisposeEvent e) {
-            Control disposedControl = (Control) e.widget;
-
-            if (isDisposed()) {
-                return;
-            }
-
-            // Probably unnecessary, but it can't hurt garbage collection
-            disposedControl.removeDisposeListener(this);
-
-            if (disposedControl == topLeftCache.getControl()) {
-                setTopLeft(null);
-            }
-
-            if (disposedControl == topRightCache.getControl()) {
-                setTopRight(null);
-            }
-
-            if (disposedControl == topCenterCache.getControl()) {
-                setTopCenter(null);
-            }
-        }
-
-    };
-
-    /**
-     * List of PaneFolderButtonListener
-     */
-    private List buttonListeners = new ArrayList(1);
-
-    private int state = IStackPresentationSite.STATE_RESTORED;
-
-    /**
-     * State of the folder at the last mousedown event. This is used to prevent
-     * a mouseup over the minimize or maximize buttons from undoing a state
-     * change that was caused by the mousedown.
-     */
-    private int mousedownState = -1;
-    
-    /**
-     * Location of the last mousedown event. This is used to determine if the
-     * mouseup event occured on the same item.
-     */
-    private Point mousedownPoint = new Point(-1, -1);
-    
-    /**
-     * Time of the last mousedown event. This is used to determine if the
-     * mouseup event occurs within a reasonable time.
-     */
-    private long mousedownTime = 0L;
-    
-    /**
-	 * Timeout value for when a pair of mousedown, mouseup events should not be
-	 * interpreted as a click.
-	 */
-    private static long CLICK_TIME = 1000;
-
-    // CTabFolder listener
-    private CTabFolder2Adapter expandListener = new CTabFolder2Adapter() {
-        public void minimize(CTabFolderEvent event) {
-            event.doit = false;
-            notifyButtonListeners(IStackPresentationSite.STATE_MINIMIZED);
-        }
-
-        public void restore(CTabFolderEvent event) {
-            event.doit = false;
-            notifyButtonListeners(IStackPresentationSite.STATE_RESTORED);
-        }
-
-        public void maximize(CTabFolderEvent event) {
-            event.doit = false;
-            notifyButtonListeners(IStackPresentationSite.STATE_MAXIMIZED);
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.swt.custom.CTabFolder2Adapter#close(org.eclipse.swt.custom.CTabFolderEvent)
-         */
-        public void close(CTabFolderEvent event) {
-            event.doit = false;
-            notifyCloseListeners((CTabItem) event.item);
-        }
-
-        public void showList(CTabFolderEvent event) {
-            notifyShowListeners(event);
-        }
-
-    };
-
-    private MouseListener mouseListener = new MouseAdapter() {
-        public void mouseDown(MouseEvent e) {
-            mousedownState = getState();
-            mousedownPoint = new Point(e.x, e.y);
-            mousedownTime = e.time & 0x0FFFFFFFFL;
-        }
-
-        public void mouseUp(MouseEvent e) {
-			if (e.button == 2 && e.count == 1) {
-				Point mouseupPoint = new Point(e.x, e.y);
-				CTabItem item = tabFolder.getItem(mouseupPoint);
-				long mouseupTime = e.time & 0x0FFFFFFFFL;
-				if (item != null && (mouseupTime - mousedownTime <= CLICK_TIME)) {
-					CTabItem mousedownItem = tabFolder.getItem(mousedownPoint);
-					if (mousedownItem == item) {
-						notifyCloseListeners(item);
-					}
-				}
-			}
-        }
-        
-        public void mouseDoubleClick(MouseEvent e) {
-        }
-    };
-
-    private boolean showButtons = true;
-    private boolean minimizeVisible = false;
-    private boolean maximizeVisible = false;
-
-    /**
-     * Make sure we don't recursively enter the layout() code.
-     */
-	private boolean inLayout = false;
-
-	private int tabPosition;
-
-    /**
-     * Creates a pane folder. This will create exactly one child control in the
-     * given parent.
-     * 
-     * @param parent
-     * @param flags
-     */
-    public PaneFolder(Composite parent, int flags) {
-        // Initialize tab folder
-        {
-            tabFolder = new CTabFolder(parent, flags);
-            
-			tabFolder.setMRUVisible(((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).enableMRUTabVisibility());
-
-            // Create a proxy control to measure the title area of the tab folder
-            titleAreaProxy = new Composite(tabFolder, SWT.NO_BACKGROUND);
-            titleAreaProxy.setVisible(false);
-            titleAreaProxy.addControlListener(new ControlListener() {
-                public void controlMoved(ControlEvent e) {
-                    topRightResized = true;
-                }
-
-                public void controlResized(ControlEvent e) {
-                    topRightResized = true;
-
-					// bug 101683 - we need to do a layout of the PaneFolder
-					// when the title area proxy is resized.
-					if (!inLayout && !PaneFolder.this.isDisposed()
-							&& viewForm!=null && contentProxy!=null) {
-						PaneFolder.this.aboutToResize();
-						PaneFolder.this.layout(false);
-					}
-                }
-            });
-            tabFolder.setTopRight(titleAreaProxy, SWT.FILL);
-
-            tabFolder.addCTabFolder2Listener(expandListener);
-
-            tabFolder.addMouseListener(mouseListener);
-
-            tabFolder.addDisposeListener(tabFolderDisposeListener);
-        }
-
-        // Initialize view form
-        {
-            viewForm = new ViewForm(tabFolder, SWT.NO_BACKGROUND);
-
-            // Only attach these to the viewForm when there's actually a control
-            // to display
-            viewFormTopLeftProxy = new ProxyControl(viewForm);
-            viewFormTopCenterProxy = new ProxyControl(viewForm);
-            viewFormTopRightProxy = new ProxyControl(viewForm);
-
-            contentProxy = new ProxyControl(viewForm);
-            viewForm.setContent(contentProxy.getControl());
-        }
-    }
-
-    /**
-     * Returns the title area (the empty region to the right of the tabs), in
-     * the tab folder's coordinate system.
-     * 
-     * @return the title area (the empty region to the right of the tabs)
-     */
-    public Rectangle getTitleArea() {
-        return titleAreaProxy.getBounds();
-    }
-
-    /**
-     * Return the main control for this pane folder
-     * 
-     * @return
-     */
-    public Composite getControl() {
-        return tabFolder;
-    }
-
-    public void flushTopCenterSize() {
-        topCenterCache.flush();
-        viewForm.changed(new Control[] {viewFormTopCenterProxy.getControl()});
-    }
-    
-    /**
-     * Sets the top-center control (usually a toolbar), or null if none. Note
-     * that the control can have any parent.
-     * 
-     * @param topCenter
-     *            the top-center control or null if none
-     */
-    public void setTopCenter(Control topCenter) {
-        if (topCenter == topCenterCache.getControl()) {
-            return;
-        }
-
-        removeDisposeListener(topCenterCache.getControl());
-
-        topCenterCache.setControl(topCenter);
-        
-        if (putTrimOnTop) {
-            viewFormTopCenterProxy.setTarget(null);
-        } else {
-            viewFormTopCenterProxy.setTarget(topCenterCache);
-        }
-        
-        viewForm.changed(new Control[] {viewFormTopCenterProxy.getControl()});
-        
-        if (topCenter != null) {
-            topCenter.addDisposeListener(prematureDisposeListener);
-        
-            if (!putTrimOnTop) {
-                if (!viewForm.isDisposed()) {
-                    viewForm.setTopCenter(viewFormTopCenterProxy.getControl());
-                }
-            }
-        } else {
-            if (!putTrimOnTop) {
-                if (!viewForm.isDisposed()) {
-                    viewForm.setTopCenter(null);
-                }
-            }
-        }
-    }
-
-    /**
-     * Sets the top-right control (usually a dropdown), or null if none
-     * 
-     * @param topRight
-     */
-    public void setTopRight(Control topRight) {
-        if (topRightCache.getControl() == topRight) {
-            return;
-        }
-
-        removeDisposeListener(topRightCache.getControl());
-
-        topRightCache.setControl(topRight);
-        
-        if (putTrimOnTop) {
-            viewFormTopRightProxy.setTarget(null);
-        } else {
-            viewFormTopRightProxy.setTarget(topRightCache);
-        }
-        
-        if (topRight != null) {
-            topRight.addDisposeListener(prematureDisposeListener);
-            if (!putTrimOnTop) {
-                
-                viewForm.setTopRight(viewFormTopRightProxy.getControl());
-            }
-        } else {
-            if (!putTrimOnTop) {
-                viewForm.setTopRight(null);
-            }
-        }
-    }
-
-    /**
-     * Sets the top-left control (usually a title label), or null if none
-     * 
-     * @param topLeft
-     */
-    public void setTopLeft(Control topLeft) {
-        if (topLeftCache.getControl() == topLeft) {
-            return;
-        }
-
-        removeDisposeListener(topLeftCache.getControl());
-
-        topLeftCache.setControl(topLeft);
-        // The top-left control always goes directly in the ViewForm
-        if (topLeft != null) {
-            topLeft.addDisposeListener(prematureDisposeListener);
-            viewFormTopLeftProxy.setTarget(topLeftCache);
-            viewForm.setTopLeft(viewFormTopLeftProxy.getControl());
-        } else {
-            viewFormTopLeftProxy.setTarget(null);
-            viewForm.setTopLeft(null);
-        }
-    }
-
-    /**
-     * Optimization: calling this method immediately before setting the
-     * control's bounds will allow for improved caching.
-     */
-    public void aboutToResize() {
-        useTopRightOptimization = true;
-        topRightResized = false;
-        lastWidth = getControl().getBounds().width;
-    }
-
-	/**
-	 * Cause the folder to hide or show its
-	 * Minimize and Maximize affordances.
-	 * 
-	 * @param show
-	 *            <code>true</code> - the min/max buttons are visible.
-	 * @since 3.3
-	 */
-    public void showMinMax(boolean show) {
-    	showButtons = show;
-    	setMaximizeVisible(show);
-    	setMinimizeVisible(show);
-    	layout(true);    	
-    }
-    
-    public void layout(boolean flushCache) {
-    	if (inLayout) {
-    		return;
-    	}
-    	
-        inLayout = true;
-		try {
-	        
-        	viewForm.setLayoutDeferred(true);
-	
-	        tabFolder.setMinimizeVisible(showButtons && minimizeVisible);
-	        tabFolder.setMaximizeVisible(showButtons && maximizeVisible);
-	
-	        // Flush the cached sizes if necessary
-	        if (flushCache) {
-	            topLeftCache.flush();
-	            topRightCache.flush();
-	            topCenterCache.flush();
-	        }
-	
-	        // HACK: Force the tab folder to do a layout, since it doesn't always
-	        // resize its title area each time setBounds is called.
-	        if (!(useTopRightOptimization && (topRightResized || lastWidth == getControl()
-	                .getBounds().width))) {
-	            // If we can't use the optimization, then we need to force a layout
-	            // of the tab folder
-	            tabFolder.setTopRight(titleAreaProxy, SWT.FILL);
-	        }
-	        useTopRightOptimization = false;
-	        // END OF HACK
-	
-			// Get the bounds relative to the CTabFolder
-	        Rectangle titleArea = titleAreaProxy.getBounds();
-	
-	        Point topRightSize = topRightCache
-	                .computeSize(SWT.DEFAULT, SWT.DEFAULT);
-	        Point topCenterSize = topCenterCache.computeSize(SWT.DEFAULT,
-	                SWT.DEFAULT);
-	
-	        // Determine if there is enough room for the trim in the title area
-	        int requiredWidth = topRightSize.x + topCenterSize.x;
-	        int requiredHeight = Math.max(topRightSize.y, topCenterSize.y);
-	
-	        boolean lastTrimOnTop = putTrimOnTop;
-	        putTrimOnTop = (titleArea.width >= requiredWidth && titleArea.height >= requiredHeight);
-	
-	        Control topRight = topRightCache.getControl();
-	        Control topCenter = topCenterCache.getControl();
-	
-	        if (putTrimOnTop) {
-	            // Try to avoid calling setTop* whenever possible, since this will
-	            // trigger a layout
-	            // of the viewForm.
-	            if (!lastTrimOnTop) {
-	                //	Arrange controls in the title bar
-	                viewFormTopCenterProxy.setTarget(null);
-	                viewFormTopRightProxy.setTarget(null);
-	                viewForm.setTopCenter(null);
-	                viewForm.setTopRight(null);
-	            }
-	
-	            Rectangle topRightArea = new Rectangle(titleArea.x
-	                    + titleArea.width - topRightSize.x, titleArea.y
-	                    + (titleArea.height - topRightSize.y) / 2, topRightSize.x,
-	                    topRightSize.y);
-	
-	            if (topRight != null) {
-	            	// Map the coordinates from the tabFolder back to the control's parent
-	            	topRight.setBounds(topRight.getDisplay().map(tabFolder, topRight.getParent(), topRightArea));
-	            }
-	
-	            if (topCenter != null) {
-	                Rectangle topCenterArea = new Rectangle(topRightArea.x
-	                        - topCenterSize.x, titleArea.y
-	                        + (titleArea.height - topCenterSize.y) / 2,
-	                        topCenterSize.x, topCenterSize.y);
-	
-	            	// Map the coordinates from the tabFolder back to the control's parent
-	            	topCenter.setBounds(topCenter.getDisplay().map(tabFolder, topCenter.getParent(), topCenterArea));
-	            }
-	        } else {
-                if (topCenter != null) {
-                    viewFormTopCenterProxy.setTarget(topCenterCache);
-                    viewForm.setTopCenter(viewFormTopCenterProxy.getControl());
-                }
-
-                if (topRight != null) {
-                    viewFormTopRightProxy.setTarget(topRightCache);
-                    viewForm.setTopRight(viewFormTopRightProxy.getControl());
-                }
-	        }
-	
-	        Rectangle newBounds = tabFolder.getClientArea();
-	        viewForm.setBounds(newBounds);
-        } finally {
-        	viewForm.setLayoutDeferred(false);
-        	inLayout = false;
-        }
-
-        viewFormTopRightProxy.layout();
-        viewFormTopLeftProxy.layout();
-        viewFormTopCenterProxy.layout();
-    }
-
-    public Composite getContentParent() {
-        return viewForm;
-    }
-
-    public void setContent(Control newContent) {
-        viewForm.setContent(newContent);
-    }
-
-    /**
-     * Returns the current state of the folder (as shown on the button icons)
-     * 
-     * @return one of the IStackPresentationSite.STATE_* constants
-     */
-    public int getState() {
-        return state;
-    }
-
-    /**
-     * @param buttonId
-     *            one of the IStackPresentationSite.STATE_* constants
-     */
-    protected void notifyButtonListeners(int buttonId) {
-        if (mousedownState == getState()) {
-            Iterator iter = buttonListeners.iterator();
-
-            while (iter.hasNext()) {
-                PaneFolderButtonListener listener = (PaneFolderButtonListener) iter
-                        .next();
-
-                listener.stateButtonPressed(buttonId);
-            }
-        }
-    }
-
-    public Control getContent() {
-        return viewForm.getContent();
-    }
-
-    /**
-     * Notifies all listeners that the user clicked on the chevron
-     * 
-     * @param tabItem
-     */
-    protected void notifyShowListeners(CTabFolderEvent event) {
-        Iterator iter = buttonListeners.iterator();
-
-        while (iter.hasNext()) {
-            PaneFolderButtonListener listener = (PaneFolderButtonListener) iter
-                    .next();
-
-            listener.showList(event);
-        }
-    }
-
-    /**
-     * Notifies all listeners that the close button was pressed
-     * 
-     * @param tabItem
-     */
-    protected void notifyCloseListeners(CTabItem tabItem) {
-        Iterator iter = buttonListeners.iterator();
-
-        while (iter.hasNext()) {
-            PaneFolderButtonListener listener = (PaneFolderButtonListener) iter
-                    .next();
-
-            listener.closeButtonPressed(tabItem);
-        }
-    }
-
-    /**
-     * Sets the state that will be shown on the CTabFolder's buttons
-     * 
-     * @param state
-     *            one of the IStackPresentationSite.STATE_* constants
-     */
-    public void setState(int state) {
-        this.state = state;
-
-        tabFolder.setMinimized(state == IStackPresentationSite.STATE_MINIMIZED);
-        tabFolder.setMaximized(state == IStackPresentationSite.STATE_MAXIMIZED);
-    }
-
-    public void addButtonListener(PaneFolderButtonListener listener) {
-        buttonListeners.add(listener);
-    }
-
-    public void removeButtonListener(PaneFolderButtonListener listener) {
-        buttonListeners.remove(listener);
-    }
-
-    public void setTabPosition(int newTabPosition) {
-        tabPosition = newTabPosition;
-        tabFolder.setTabPosition(tabPosition);
-    }
-
-    public int getTabPosition() {
-        return tabPosition;
-    }
-
-    public boolean isDisposed() {
-        return tabFolder == null || tabFolder.isDisposed();
-    }
-
-    public CTabItem createItem(int style, int index) {
-        return new CTabItem(tabFolder, style, index);
-    }
-
-    public Point computeMinimumSize() {
-        Point result = Geometry.getSize(tabFolder.computeTrim(0, 0, 0, 0));
-
-        // Add some space for the minimize and maximize buttons plus a tab.
-        // Right now this isn't exposed from SWT as API, so we just add 50
-        // pixels.
-        result.x += 100;
-        return result;
-    }
-
-    /**
-     * Removes the dispose listener from the given control, unless the given
-     * control is null or disposed.
-     * 
-     * @param oldControl
-     *            control to detach the dispose listener from
-     */
-    private void removeDisposeListener(Control oldControl) {
-        if (!SwtUtil.isDisposed(oldControl)) {
-            oldControl.removeDisposeListener(prematureDisposeListener);
-        }
-    }
-
-    private void widgetDisposed() {
-        removeDisposeListener(topCenterCache.getControl());
-        topCenterCache.setControl(null);
-        removeDisposeListener(topRightCache.getControl());
-        topRightCache.setControl(null);
-        removeDisposeListener(topLeftCache.getControl());
-        topLeftCache.setControl(null);
-    }
-
-    public Point getChevronLocation() {
-        // get the last visible item
-        int numItems = tabFolder.getItemCount();
-        CTabItem item = null, tempItem = null;
-        for (int i = 0; i < numItems; i++) {
-            tempItem = tabFolder.getItem(i);
-            if (tempItem.isShowing()) {
-				item = tempItem;
-			}
-        }
-
-        // if we have no visible tabs, abort.
-        if (item == null) {
-			return new Point(0, 0);
-		}
-
-        Rectangle itemBounds = item.getBounds();
-        int x = itemBounds.x + itemBounds.width;
-        int y = itemBounds.y + itemBounds.height;
-        return new Point(x, y);
-    }
-
-    ///////////////////////////////////////////////////////////////////////////////////////
-    // The remainder of the methods in this class redirect directly to
-    // CTabFolder methods
-
-    public void setSelection(int selection) {
-        tabFolder.setSelection(selection);
-    }
-
-    /**
-     * @param i
-     * @param j
-     * @param k
-     * @param l
-     * @return
-     */
-    public Rectangle computeTrim(int i, int j, int k, int l) {
-        return tabFolder.computeTrim(i, j, k, l);
-    }
-
-    /**
-     * @param b
-     */
-    public void setUnselectedCloseVisible(boolean b) {
-        tabFolder.setUnselectedCloseVisible(b);
-    }
-
-    /**
-     * @param fgColor
-     */
-    public void setSelectionForeground(Color fgColor) {
-        tabFolder.setSelectionForeground(fgColor);
-    }
-
-    /**
-	 * Set the selection gradient with the activation state.
-     * @param bgColors
-     * @param percentages
-     * @param vertical
-     */
-    public void setSelectionBackground(Color[] bgColors, int[] percentages,
-            boolean vertical) {
-        tabFolder.setSelectionBackground(bgColors, percentages, vertical);
-    }
-
-    public CTabItem getItem(int idx) {
-        return tabFolder.getItem(idx);
-    }
-
-    public int getSelectionIndex() {
-        return tabFolder.getSelectionIndex();
-    }
-
-    public int getTabHeight() {
-        return tabFolder.getTabHeight();
-    }
-
-    public int indexOf(CTabItem toFind) {
-        return tabFolder.indexOf(toFind);
-    }
-
-    public void setTabHeight(int height) {
-        tabFolder.setTabHeight(height);
-    }
-
-    /**
-     * @return
-     */
-    public int getItemCount() {
-        return tabFolder.getItemCount();
-    }
-
-    /**
-     * @return
-     */
-    public CTabItem[] getItems() {
-        return tabFolder.getItems();
-    }
-
-    public CTabItem getItem(Point toGet) {
-        return tabFolder.getItem(toGet);
-    }
-
-    public CTabItem getSelection() {
-        return tabFolder.getSelection();
-    }
-
-    /**
-     * @param isVisible
-     */
-    public void setMinimizeVisible(boolean isVisible) {
-        tabFolder.setMinimizeVisible(isVisible);
-        minimizeVisible = isVisible;
-    }
-
-    /**
-     * Changes the minimum number of characters to display in a pane folder tab.
-     * This control how much information will be displayed to the user.
-     * 
-     * @param count
-     *            The number of characters to display in the tab folder; this
-     *            value should be a positive integer.
-     * @see org.eclipse.swt.custom.CTabFolder#setMinimumCharacters(int)
-     * @since 3.1
-     */
-    public void setMinimumCharacters(int count) {
-        tabFolder.setMinimumCharacters(count);
-    }
-
-    /**
-     * @param isVisible
-     */
-    public void setMaximizeVisible(boolean isVisible) {
-        tabFolder.setMaximizeVisible(isVisible);
-        maximizeVisible = isVisible;
-    }
-
-    /**
-     * @param traditionalTab
-     */
-    public void setSimpleTab(boolean traditionalTab) {
-        tabFolder.setSimple(traditionalTab);
-    }
-
-    /**
-     * @param b
-     */
-    public void setUnselectedImageVisible(boolean b) {
-        tabFolder.setUnselectedImageVisible(b);
-    }
-
-    /**
-     * @param b
-     */
-    public void setSingleTab(boolean b) {
-        tabFolder.setSingle(b);
-    }
-
-    public void hideTitle() {
-        tabFolder.setTabHeight(0);
-    }
-    
-    public ViewForm getViewForm() {
-        return viewForm;
-    }
-
-    /**
-	 * Propogate the visibility change requests to the proxy controls. When
-	 * their target is null, they no longer get visibility updates. Currently
-	 * this only propagates the changes to the ProxyControls held by this
-	 * folder.
-	 * 
-	 * @param visible
-	 *            <code>true</code> - it's visible.
-	 * @since 3.2
-	 */
-    public void setVisible(boolean visible) {
-		contentProxy.setVisible(visible);
-		viewFormTopCenterProxy.setVisible(visible);
-		viewFormTopLeftProxy.setVisible(visible);
-		viewFormTopRightProxy.setVisible(visible);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolderButtonListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolderButtonListener.java
deleted file mode 100644
index 8225353..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PaneFolderButtonListener.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.swt.custom.CTabFolderEvent;
-import org.eclipse.swt.custom.CTabItem;
-
-/**
- * This listener receives notifications when the user clicks on one of
- * the buttons (minimize, maximize, or restore) on a pane folder.  
- * 
- * @since 3.0
- */
-public abstract class PaneFolderButtonListener {
-
-    /**
-     * Called when the minimize, maximize, or restore buttons are pressed.
-     *   
-     * @param buttonId one of the IStackPresentationSite.STATE_* constants
-     */
-    public void stateButtonPressed(int buttonId) {
-    }
-
-    /**
-     * Called when a close button is pressed.
-     *   
-     * @param item the tab whose close button was pressed
-     */
-    public void closeButtonPressed(CTabItem item) {
-    }
-
-    /**
-     * 
-     * @since 3.0
-     */
-    public void showList(CTabFolderEvent event) {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java
deleted file mode 100644
index 4f12c7f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.PartPane;
-import org.eclipse.ui.internal.WorkbenchPartReference;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.presentations.IPartMenu;
-import org.eclipse.ui.presentations.IPresentablePart;
-
-/**
- * This is a lightweight adapter that allows PartPanes to be used by a StackPresentation. All methods
- * either redirect directly to PartPane or do trivial type conversions. All listeners registered by
- * the presentation are kept here rather than registering them directly on the PartPane. This allows
- * us to remove all listeners registered by a presentation that has been disposed, offering some
- * protection against memory leaks.
- */
-public class PresentablePart implements IPresentablePart {
-
-    private PartPane part;
-
-    /**
-     * Local listener list -- we use this rather than registering listeners directly on the part
-     * in order to protect against memory leaks in badly behaved presentations.
-     */
-    private List listeners = new ArrayList();
-
-    // Lazily initialized. Use getPropertyListenerProxy() to access.
-    private IPropertyListener lazyPropertyListenerProxy;
-    
-    private ListenerList partPropertyChangeListeners = new ListenerList();
-    
-    private IPropertyChangeListener lazyPartPropertyChangeListener;
-
-    // Lazily initialized. Use getMenu() to access 
-    private IPartMenu viewMenu;
-    
-    // True iff the "set" methods on this object are talking to the real part (disabled
-    // if the part is currently being managed by another presentation stack)
-    private boolean enableInputs = true;
-    
-    // True iff the "get" methods are returning up-to-date info from the real part (disabled
-    // for efficency if the presentation is invisible)
-    private boolean enableOutputs = true;
-    private Rectangle savedBounds = new Rectangle(0,0,0,0);
-    private boolean isVisible = false;
-    
-    // Saved state (only used when the part is inactive)
-    private String name = ""; //$NON-NLS-1$
-    private String titleStatus = ""; //$NON-NLS-1$
-    private boolean isDirty = false;
-    private boolean isBusy = false;
-    private boolean hasViewMenu = false;
-   
-    /**
-     * Constructor
-     * 
-     * @param part
-     */
-    public PresentablePart(PartPane part, Composite parent) {
-        this.part = part;
-        getPane().addPropertyListener(getPropertyListenerProxy());
-        getPane().addPartPropertyListener(getPartPropertyListenerProxy());
-    }
-
-    public PartPane getPane() {
-        return part;
-    }
-    
-    private IPropertyListener getPropertyListenerProxy() {
-        if (lazyPropertyListenerProxy == null) {
-            lazyPropertyListenerProxy = new IPropertyListener() {
-                public void propertyChanged(Object source, int propId) {
-                    firePropertyChange(propId);
-                }
-            };
-        }
-
-        return lazyPropertyListenerProxy;
-    }
-    
-    private IPropertyChangeListener getPartPropertyListenerProxy() {
-		if (lazyPartPropertyChangeListener == null) {
-			lazyPartPropertyChangeListener = new IPropertyChangeListener() {
-				public void propertyChange(PropertyChangeEvent event) {
-					PropertyChangeEvent e = new PropertyChangeEvent(this,
-							event.getProperty(), event.getOldValue(), event.getNewValue());
-					firePartPropertyChange(e);
-				}
-			};
-		}
-		return lazyPartPropertyChangeListener;
-	}
-
-    /**
-	 * Detach this PresentablePart from the real part. No further methods should
-	 * be invoked on this object.
-	 */
-    public void dispose() {
-        // Ensure that the property listener is detached (necessary to prevent leaks)
-        getPane().removePropertyListener(getPropertyListenerProxy());
-        getPane().removePartPropertyListener(getPartPropertyListenerProxy());
-
-        // Null out the various fields to ease garbage collection (optional)
-        part = null;
-        listeners.clear();
-        listeners = null;
-        partPropertyChangeListeners.clear();
-        partPropertyChangeListeners = null;
-    }
-
-    public void firePropertyChange(int propertyId) {
-        for (int i = 0; i < listeners.size(); i++) {
-            ((IPropertyListener) listeners.get(i)).propertyChanged(this, propertyId);
-        }
-    }
-
-    public void addPropertyListener(final IPropertyListener listener) {
-        listeners.add(listener);
-    }
-
-    public void removePropertyListener(final IPropertyListener listener) {
-        listeners.remove(listener);
-    }
-
-    protected void firePartPropertyChange(PropertyChangeEvent event) {
-		Object[] l = partPropertyChangeListeners.getListeners();
-		for (int i = 0; i < l.length; i++) {
-			((IPropertyChangeListener) l[i]).propertyChange(event);
-		}
-	}
-    
-    public void addPartPropertyListener(IPropertyChangeListener listener) {
-    	partPropertyChangeListeners.add(listener);
-    }
-    
-    public void removePartPropertyListener(IPropertyChangeListener listener) {
-    	partPropertyChangeListeners.remove(listener);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#setBounds(org.eclipse.swt.graphics.Rectangle)
-     */
-    public void setBounds(Rectangle bounds) {
-        savedBounds = bounds;
-        if (enableInputs && !SwtUtil.isDisposed(part.getControl())) {
-            part.setBounds(bounds);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#setVisible(boolean)
-     */
-    public void setVisible(boolean isVisible) {
-        this.isVisible = isVisible;
-        if (enableInputs) {
-            part.setVisible(isVisible);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#setFocus()
-     */
-    public void setFocus() {
-        if (!SwtUtil.isDisposed(part.getControl())) {
-            if (part.getPage().getActivePart() == part.getPartReference().getPart(false)) { 
-                part.setFocus();
-            } else {
-                part.requestActivation();
-            }
-        }
-    }
-
-    
-    private WorkbenchPartReference getPartReference() {
-        return (WorkbenchPartReference) part.getPartReference();
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#getName()
-     */
-    public String getName() {
-        if (enableOutputs) {
-            return getPartReference().getPartName();
-		}
-		return name;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#getTitle()
-     */
-    public String getTitle() {
-        return getPartReference().getTitle();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#getTitleStatus()
-     */
-    public String getTitleStatus() {
-        if (enableOutputs) {
-			return getPartReference().getContentDescription();
-		}
-
-		return titleStatus;
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.IPresentablePart#getTitleImage()
-	 */
-    public Image getTitleImage() {
-//        
-//        return PlatformUI.getWorkbench().getSharedImages().getImage(
-//                ISharedImages.IMG_DEF_VIEW); 
-//        
-        if (enableOutputs) {
-            return getPartReference().getTitleImage();
-		}
-
-		return PlatformUI.getWorkbench().getSharedImages().getImage(
-				ISharedImages.IMG_DEF_VIEW);
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.IPresentablePart#getTitleToolTip()
-	 */
-    public String getTitleToolTip() {
-        return getPartReference().getTitleToolTip();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#isDirty()
-     */
-    public boolean isDirty() {
-        if (enableOutputs) {
-			return getPartReference().isDirty();
-		}
-		return isDirty;
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.IPresentablePart#isBusy()
-	 */
-    public boolean isBusy() {
-        if (enableOutputs) {
-			return part.isBusy();
-		}
-		return isBusy;
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.IPresentablePart#getToolBar()
-	 */
-    public Control getToolBar() {
-        if (enableOutputs) {
-			return getPane().getToolBar();
-		}
-		return null;
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.IPresentablePart#getMenu()
-	 */
-    public IPartMenu getMenu() {
-        boolean hasMenu;
-        
-        if (enableOutputs) {
-            hasMenu = part.hasViewMenu();
-        } else {
-            hasMenu = this.hasViewMenu;
-        }
-        
-        if (!hasMenu) {
-            return null;
-        }
-
-        if (viewMenu == null) {
-            viewMenu = new IPartMenu() {
-                public void showMenu(Point location) {
-                    part.showViewMenu(location);
-                }
-            };
-        }
-
-        return viewMenu;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#isCloseable()
-     */
-    public boolean isCloseable() {        
-        return part.isCloseable();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentablePart#getControl()
-     */
-    public Control getControl() {
-        return part.getControl();
-    }
-
-    public void enableOutputs(boolean isActive) {
-        if (isActive == this.enableOutputs) {
-            return;
-        }
-        
-        this.enableOutputs = isActive;
-        
-        if (isActive) {
-            if (isBusy != getPane().isBusy()) {
-                firePropertyChange(PROP_BUSY);
-            }
-            if (isDirty != isDirty()) {
-                firePropertyChange(PROP_DIRTY);
-            }
-            if (!name.equals(getName())) {
-                firePropertyChange(PROP_PART_NAME);
-            }
-            if (!titleStatus.equals(getTitleStatus())) {
-                firePropertyChange(PROP_CONTENT_DESCRIPTION);
-            }
-            if (hasViewMenu != getPane().hasViewMenu()) {
-                firePropertyChange(PROP_PANE_MENU);
-            }
-            // Always assume that the toolbar and title has changed (keeping track of this for real
-            // would be too expensive)
-            firePropertyChange(PROP_TOOLBAR);
-            firePropertyChange(PROP_TITLE);
-            
-            getPane().addPropertyListener(getPropertyListenerProxy());
-        } else {
-            getPane().removePropertyListener(getPropertyListenerProxy());
-            
-            WorkbenchPartReference ref = getPartReference();
-            isBusy = getPane().isBusy();
-            isDirty = ref.isDirty();
-            name = ref.getPartName();
-            titleStatus = ref.getContentDescription();
-            hasViewMenu = getPane().hasViewMenu();
-            firePropertyChange(PROP_TITLE);
-            firePropertyChange(PROP_TOOLBAR);
-        }
-    }
-    
-    public void enableInputs(boolean isActive) {
-        if (isActive == this.enableInputs) {
-            return;
-        }
-        
-        this.enableInputs = isActive;
-        
-        if (isActive) {
-            if (isActive && !SwtUtil.isDisposed(part.getControl())) {
-                part.setBounds(savedBounds);
-            }
-            
-            part.setVisible(isVisible);
-        }
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.presentations.IPresentablePart#getPartProperty(java.lang.String)
-	 */
-	public String getPartProperty(String key) {
-		return getPartReference().getPartProperty(key);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.ISizeProvider#computePreferredSize(boolean, int, int, int)
-	 */
-	public int computePreferredSize(boolean width, int availableParallel,
-	        int availablePerpendicular, int preferredResult) {
-
-	    return getPane().computePreferredSize(width, availableParallel,
-	            availablePerpendicular, preferredResult);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.ISizeProvider#getSizeFlags(boolean)
-	 */
-	public int getSizeFlags(boolean width) {
-	    return getPane().getSizeFlags(width);
-	}
-
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationFactoryUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationFactoryUtil.java
deleted file mode 100644
index 938c366..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationFactoryUtil.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IPresentationSerializer;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * 
- */
-public class PresentationFactoryUtil {
-
-    public static final int ROLE_EDITOR = 0x01;
-
-    public static final int ROLE_VIEW = 0x02;
-
-    public static final int ROLE_STANDALONE = 0x03;
-
-    public static final int ROLE_STANDALONE_NOTITLE = 0x04;
-    
-    public static StackPresentation createPresentation(
-            AbstractPresentationFactory factory, int role, Composite parent,
-            IStackPresentationSite site, IPresentationSerializer serializer,
-            IMemento memento) {
-
-        StackPresentation presentation = null;
-
-        switch (role) {
-        case ROLE_EDITOR:
-            presentation = factory.createEditorPresentation(parent, site);
-            break;
-        case ROLE_STANDALONE:
-            presentation = factory.createStandaloneViewPresentation(parent,
-                    site, true);
-            break;
-        case ROLE_STANDALONE_NOTITLE:
-            presentation = factory.createStandaloneViewPresentation(parent,
-                    site, false);
-            break;
-        default:
-            presentation = factory.createViewPresentation(parent, site);
-        }
-
-        //don't initialize editors at creation time - it will not contain any parts
-        if (role != ROLE_EDITOR && memento != null && serializer != null) {
-            presentation.restoreState(serializer, memento);
-        }
-
-        return presentation;
-    }
-
-    private PresentationFactoryUtil() {
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationSerializer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationSerializer.java
deleted file mode 100644
index 0365b96..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentationSerializer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IPresentationSerializer;
-
-/**
- * This class is used to map IPresentableParts onto string IDs
- */
-public class PresentationSerializer implements IPresentationSerializer {
-
-    private List parts = Collections.EMPTY_LIST;
-
-    public PresentationSerializer(List presentableParts) {
-        parts = presentableParts;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentationSerializer#getId(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public String getId(IPresentablePart part) {
-        int index = parts.indexOf(part);
-
-        return "" + index; //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.IPresentationSerializer#getPart(java.lang.String)
-     */
-    public IPresentablePart getPart(String id) {
-        try {
-            Integer integer = new Integer(id);
-            int index = integer.intValue();
-
-            IPresentablePart result = (IPresentablePart) parts.get(index);
-            return result;
-
-        } catch (NumberFormatException e) {
-        } catch (IndexOutOfBoundsException e) {
-        }
-
-        return null;
-    }
-
-    /**
-     * Prevent this object from being used further. Ensure that none
-     * of the methods return anything useful in order to discourage clients
-     * from hanging onto references to this object.
-     */
-    public void dispose() {
-        parts = Collections.EMPTY_LIST;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuClose.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuClose.java
deleted file mode 100644
index 5cf8196..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuClose.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * This convenience class provides a "close" system menu item that closes
- * the currently selected pane in a presentation. Presentations can use
- * this to add a close item to their system menu.
- * 
- * @since 3.0
- */
-public final class SystemMenuClose extends Action implements ISelfUpdatingAction {
-
-    private IStackPresentationSite site;
-    private IPresentablePart part;
-
-    public SystemMenuClose(IStackPresentationSite site) {
-        this.site = site;
-        setText(WorkbenchMessages.PartPane_close);
-    }
-
-    public void dispose() {
-        site = null;
-    }
-
-    public void run() {
-        if (part != null) {
-            site.close(new IPresentablePart[] { part });
-        }
-    }
-
-    public void setTarget(IPresentablePart presentablePart) {
-        this.part = presentablePart;
-        setEnabled(presentablePart != null && site.isCloseable(presentablePart));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.ISelfUpdatingAction#update()
-     */
-    public void update() {
-        setTarget(site.getSelectedPart());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.ISelfUpdatingAction#shouldBeVisible()
-     */
-    public boolean shouldBeVisible() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseAll.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseAll.java
deleted file mode 100644
index 817e0da..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseAll.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuCloseAll extends Action implements ISelfUpdatingAction {
-
-    private IStackPresentationSite presentation;
-
-    public SystemMenuCloseAll(IStackPresentationSite presentation) {
-        this.presentation = presentation;
-        setText(WorkbenchMessages.PartPane_closeAll);
-    }
-
-    public void dispose() {
-        presentation = null;
-    }
-
-    public void run() {
-        presentation.close(presentation.getPartList());
-    }
-
-    public void update() {
-        IPresentablePart[] parts = presentation.getPartList();
-        setEnabled(parts.length != 0);
-    }
-
-    public boolean shouldBeVisible() {
-        return true;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseOthers.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseOthers.java
deleted file mode 100644
index 3e24fc3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuCloseOthers.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuCloseOthers extends Action implements
-        ISelfUpdatingAction {
-
-    private IStackPresentationSite stackPresentation;
-    private IPresentablePart current;
-
-    public SystemMenuCloseOthers(IStackPresentationSite stackPresentation) {
-        this.stackPresentation = stackPresentation;
-        setText(WorkbenchMessages.PartPane_closeOthers); 
-    }
-
-    public void dispose() {
-        stackPresentation = null;
-    }
-
-    public void run() {
-        List others = new LinkedList();
-        others.addAll(Arrays.asList(stackPresentation.getPartList()));
-        others.remove(current);
-        stackPresentation.close((IPresentablePart[]) others
-                .toArray(new IPresentablePart[others.size()]));
-    }
-
-    public void update() {
-        setTarget(stackPresentation.getSelectedPart());
-    }
-
-    public boolean shouldBeVisible() {
-        return true;
-    }
-
-    /**
-     * @param currentSelection
-     * @since 3.1
-     */
-    public void setTarget(IPresentablePart current) {
-        this.current = current;
-        setEnabled(current != null && 
-        		stackPresentation.getPartList().length > 1);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuDetach.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuDetach.java
deleted file mode 100644
index 1991689..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuDetach.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.internal.ViewPane;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuDetach extends Action implements ISelfUpdatingAction {
-
-    private ViewPane viewPane;
-    private IStackPresentationSite site;
-    private WorkbenchPage page;
-
-    public SystemMenuDetach(IStackPresentationSite site) {
-        this.site = site;
-        setText(WorkbenchMessages.PartPane_detach);
-        update();
-    }
-    
-    public void update() {
-    	IPresentablePart presentablePart = site.getSelectedPart();
-    	setEnabled(presentablePart != null && site.isPartMoveable(presentablePart));
-    	if(viewPane != null){
-    		setChecked(!viewPane.isDocked());
-        	page = viewPane.getPage();
-    	}
-    }
-    
-    public boolean shouldBeVisible() {
-    	if(page != null) {
-			return page.getActivePerspective().getPresentation().canDetach();
-		}
-    	return false;
-    }
-    
-    public void dispose() {
-        site = null;
-    }
-
-    public void setPane(ViewPane current){
-    	viewPane = current;
-    	update();
-    }
-    	
-    public void run() {
-    	if(site != null){
-    		if(!isChecked()){
-	    		viewPane.doDetach();			
-    		}
-    		else{
-    			viewPane.doAttach();
-    		}
-    	}
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastView.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastView.java
deleted file mode 100644
index 3145543..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastView.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.FastViewBar;
-import org.eclipse.ui.internal.FastViewManager;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.ViewPane;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuFastView extends Action implements ISelfUpdatingAction {
-
-    private PresentablePart viewPane;
-
-    private IStackPresentationSite site;
-
-    private boolean realFV = true;
-    
-    public SystemMenuFastView(IStackPresentationSite site) {
-        this.site = site;
-        setText(WorkbenchMessages.ViewPane_fastView);
-        update();
-    }
-
-    public void setPane(PresentablePart newPane) {
-        viewPane = newPane;
-        update();
-    }
-    
-    public void update() {
-        IViewReference viewRef = getReference();
-        if (viewRef == null) {
-        	setEnabled(false);
-        	return;
-        }
-        
-        // Are we showing a 'real' fast view or a minimized view ?
-        Perspective persp = viewPane.getPane().getPage().getActivePerspective();
-        FastViewManager fvm = persp.getFastViewManager();
-        
-        String trimId = null;
-        if (fvm != null)
-        	trimId = fvm.getIdForRef(viewRef);
-        realFV = trimId == null || FastViewBar.FASTVIEWBAR_ID.equals(trimId);
-
-        // it's 'restore' if we're not using a real fast view
-        if (realFV) {
-        	setText(WorkbenchMessages.ViewPane_fastView);
-        }
-        else {
-        	setText(WorkbenchMessages.StandardSystemToolbar_Restore);
-        	setChecked(false);
-        }
-        
-        if (!site.isPartMoveable(viewPane)) {
-            setEnabled(false);
-        } else {
-            setEnabled(true);
-            
-            if (realFV)
-            	setChecked(persp.isFastView(viewRef));
-        }
-    }
-
-    private IViewReference getReference() {
-        IViewReference viewRef = null;
-        
-        if (viewPane != null) {
-            IWorkbenchPartReference ref = viewPane.getPane().getPartReference();
-            
-            if (ref instanceof IViewReference) {
-                viewRef = (IViewReference) ref;
-            }
-        }
-        return viewRef;
-    }
-
-    public boolean shouldBeVisible() {
-        if (viewPane == null || viewPane.getPane().getPage() == null) {
-            return false;
-        }
-
-        WorkbenchWindow workbenchWindow = (WorkbenchWindow) viewPane.getPane().getPage()
-                .getWorkbenchWindow();
-
-        return workbenchWindow.getShowFastViewBars() && viewPane != null
-                && site.isPartMoveable(viewPane);
-    }
-
-    public void dispose() {
-        viewPane = null;
-    }
-
-    public void run() {
-    	if (realFV) {
-	        if (viewPane.getPane() instanceof ViewPane) {
-	            ViewPane pane = (ViewPane) viewPane.getPane();
-	            
-	            if (!isChecked()) {
-	                pane.doMakeFast();
-	            } else {
-	                pane.doRemoveFast();
-	            }   
-	        }
-    	}
-    	else {
-    		// We're a minimized stack...restore it
-            IViewReference viewRef = getReference();
-            
-            Perspective persp = viewPane.getPane().getPage().getActivePerspective();
-            FastViewManager fvm = persp.getFastViewManager();
-            String trimId = fvm.getIdForRef(viewRef);
-            fvm.restoreToPresentation(trimId);
-    	}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastViewOrientation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastViewOrientation.java
deleted file mode 100644
index 62ed331..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuFastViewOrientation.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.internal.FastViewBar;
-import org.eclipse.ui.internal.IChangeListener;
-import org.eclipse.ui.internal.IntModel;
-import org.eclipse.ui.internal.PartPane;
-import org.eclipse.ui.internal.RadioMenu;
-import org.eclipse.ui.internal.ViewStackTrimToolBar;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchWindow;
-
-/**
- * @since 3.0
- */
-public class SystemMenuFastViewOrientation extends ContributionItem {
-
-    private PartPane viewPane;
-
-    private IntModel currentOrientation = new IntModel(SWT.VERTICAL);
-
-    private ViewStackTrimToolBar minimizedStack = null;
-    
-    public SystemMenuFastViewOrientation(PartPane newViewPane) {
-    	this(newViewPane, null);
-    }
-
-    /**
-	 * @param pane
-	 * @param vstt
-	 */
-	public SystemMenuFastViewOrientation(PartPane newViewPane,
-			final ViewStackTrimToolBar vstt) {
-        this.viewPane = newViewPane;
-        this.minimizedStack = vstt;
-        
-        currentOrientation.addChangeListener(new IChangeListener() {
-            public void update(boolean changed) {
-                if (changed) {
-                    WorkbenchWindow workbenchWindow = (WorkbenchWindow) viewPane
-                            .getPage().getWorkbenchWindow();
-                    
-                    if (vstt == null) {
-	                    FastViewBar bar = workbenchWindow.getFastViewBar();
-	                    if (bar != null && viewPane != null) {
-	                        IWorkbenchPartReference ref = viewPane.getPartReference();
-	                        
-	                        if (ref instanceof IViewReference) {
-	                            bar.setOrientation((IViewReference)ref,
-	                                    currentOrientation.get());
-	                        }
-	                    }
-                    }
-                    else {
-                    	vstt.setOrientation(currentOrientation.get(), workbenchWindow);
-                    }
-                }
-            }
-        });
-	}
-
-	public void dispose() {
-        viewPane = null;
-    }
-
-    public void fill(Menu menu, int index) {
-        WorkbenchWindow workbenchWindow = (WorkbenchWindow) viewPane.getPage()
-                .getWorkbenchWindow();
-
-        IWorkbenchPartReference ref = viewPane.getPartReference();
-        if (!(ref instanceof IViewReference))
-        	return;
-        
-        if (minimizedStack == null) {
-	        FastViewBar bar = workbenchWindow.getFastViewBar();
-	        if (bar != null && viewPane != null) {
-                currentOrientation.set(bar.getOrientation((IViewReference)ref));
-	        }
-        }
-        else {
-        	currentOrientation.set(minimizedStack.getPaneOrientation());
-        }
-        
-        MenuItem orientationItem = new MenuItem(menu, SWT.CASCADE, index);
-        {
-            orientationItem.setText(WorkbenchMessages.FastViewBar_view_orientation);
-
-            Menu orientationSwtMenu = new Menu(orientationItem);
-            RadioMenu orientationMenu = new RadioMenu(orientationSwtMenu,
-                    currentOrientation);
-            orientationMenu
-                    .addMenuItem(
-                            WorkbenchMessages.FastViewBar_horizontal, new Integer(SWT.HORIZONTAL)); 
-            orientationMenu
-                    .addMenuItem(
-                            WorkbenchMessages.FastViewBar_vertical, new Integer(SWT.VERTICAL)); 
-
-            orientationItem.setMenu(orientationSwtMenu);
-        }
-    }
-
-    public boolean isDynamic() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMaximize.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMaximize.java
deleted file mode 100644
index dab320d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMaximize.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuMaximize extends SystemMenuStateChange {
-
-    /**
-     * @param site
-     * @param name
-     * @param state
-     */
-    public SystemMenuMaximize(IStackPresentationSite site) {
-        super(site, WorkbenchMessages.PartPane_maximize,
-                IStackPresentationSite.STATE_MAXIMIZED);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMinimize.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMinimize.java
deleted file mode 100644
index 37b86ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMinimize.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuMinimize extends SystemMenuStateChange {
-
-    /**
-     * @param site
-     * @param name
-     * @param state
-     */
-    public SystemMenuMinimize(IStackPresentationSite site) {
-        super(site, WorkbenchMessages.ViewPane_minimizeView,
-                IStackPresentationSite.STATE_MINIMIZED);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMove.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMove.java
deleted file mode 100644
index a98308f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMove.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuMove extends MenuManager {
-
-    private IStackPresentationSite stackPresentationSite;
-
-    private SystemMenuMovePane movePaneAction;
-
-    private SystemMenuMoveFolder moveFolderAction;
-    private boolean assumeActivePart = false;
-
-    public SystemMenuMove(IStackPresentationSite stackPresentationSite,
-            String partName) {
-        this(stackPresentationSite, partName, true);
-    }
-    
-    public SystemMenuMove(IStackPresentationSite stackPresentationSite,
-            String partName, boolean assumeActivePart) {
-        super(WorkbenchMessages.PartPane_move);
-        this.stackPresentationSite = stackPresentationSite;
-        this.assumeActivePart = assumeActivePart;
-
-        movePaneAction = new SystemMenuMovePane(stackPresentationSite);
-        movePaneAction.setText(partName);
-        moveFolderAction = new SystemMenuMoveFolder(stackPresentationSite);
-
-        add(movePaneAction);
-        add(moveFolderAction);
-    }
-
-    public void setTarget(IPresentablePart part) {
-        movePaneAction.setTarget(part);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.MenuManager#update(boolean, boolean)
-     */
-    protected void update(boolean force, boolean recursive) {
-        if (assumeActivePart) {
-            setTarget(stackPresentationSite.getSelectedPart());
-        }
-        
-        moveFolderAction.update();
-
-        super.update(force, recursive);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMoveFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMoveFolder.java
deleted file mode 100644
index 6f7a91f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMoveFolder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.0
- */
-public class SystemMenuMoveFolder extends Action implements ISelfUpdatingAction {
-    private IStackPresentationSite site;
-
-    public SystemMenuMoveFolder(IStackPresentationSite site) {
-        this.site = site;
-        setText(WorkbenchMessages.ViewPane_moveFolder);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IAction#run()
-     */
-    public void run() {
-        site.dragStart(Display.getDefault().getCursorLocation(), true);
-    }
-
-    public void update() {
-        setEnabled(site.isStackMoveable());
-    }
-
-    public boolean shouldBeVisible() {
-        return site.isStackMoveable();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMovePane.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMovePane.java
deleted file mode 100644
index c363ecb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuMovePane.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.0
- */
-public class SystemMenuMovePane extends Action {
-
-    IStackPresentationSite site;
-    IPresentablePart part;
-
-    public SystemMenuMovePane(IStackPresentationSite site) {
-        this.site = site;
-        setText(WorkbenchMessages.SystemMenuMovePane_PaneName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IAction#run()
-     */
-    public void run() {
-        site.dragStart(part, Display.getDefault().getCursorLocation(), true);
-    }
-
-    public void setTarget(IPresentablePart part) {
-        this.part = part;
-        setEnabled(part != null && site.isPartMoveable(part));
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuPinEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuPinEditor.java
deleted file mode 100644
index 07b17a3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuPinEditor.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ui.internal.EditorPane;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPartReference;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.tweaklets.TabBehaviour;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-
-public class SystemMenuPinEditor extends Action implements ISelfUpdatingAction {
-
-    private EditorPane editorPane;
-
-    public SystemMenuPinEditor(EditorPane pane) {
-        setText(WorkbenchMessages.EditorPane_pinEditor);
-        setPane(pane);
-    }
-
-    public void dispose() {
-        editorPane = null;
-    }
-
-    public void setPane(EditorPane pane) {
-        editorPane = pane;
-        update();
-    }
-
-    public void run() {
-        WorkbenchPartReference ref = (WorkbenchPartReference)editorPane.getPartReference();
-
-        ref.setPinned(!isChecked());
-    }
-
-    public void update() {
-        if (editorPane == null) {
-            setEnabled(false);
-            return;
-        }
-
-        WorkbenchPartReference ref = (WorkbenchPartReference)editorPane.getPartReference();
-        setEnabled(true);
-        setChecked(ref.isPinned());
-    }
-
-    public boolean shouldBeVisible() {
-        if (editorPane == null) {
-            return false;
-        }
-
-        IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
-		boolean reuseEditor = store
-				.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)
-				| ((TabBehaviour)Tweaklets.get(TabBehaviour.KEY)).alwaysShowPinAction();
-        return reuseEditor;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuRestore.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuRestore.java
deleted file mode 100644
index ed3552c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuRestore.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-public class SystemMenuRestore extends SystemMenuStateChange {
-
-    /**
-     * @param site
-     * @param name
-     * @param state
-     */
-    public SystemMenuRestore(IStackPresentationSite site) {
-        super(site, WorkbenchMessages.PartPane_restore, IStackPresentationSite.STATE_RESTORED);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSize.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSize.java
deleted file mode 100644
index d7d362d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSize.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.internal.PartPane;
-
-public class SystemMenuSize extends ContributionItem {
-
-    private PartPane partPane;
-
-    public SystemMenuSize(PartPane pane) {
-        setPane(pane);
-    }
-
-    public void setPane(PartPane pane) {
-        partPane = pane;
-    }
-
-    public void dispose() {
-        partPane = null;
-    }
-
-    public void fill(Menu menu, int index) {
-        if (partPane != null) {
-            partPane.addSizeMenuItem(menu, index);
-        }
-    }
-
-    public boolean isDynamic() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSizeFastView.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSizeFastView.java
deleted file mode 100644
index 2ddc0a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuSizeFastView.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.internal.FastViewPane;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-public class SystemMenuSizeFastView extends ContributionItem {
-
-    private FastViewPane fastViewPane;
-
-    public SystemMenuSizeFastView(FastViewPane fastViewPane) {
-        this.fastViewPane = fastViewPane;
-    }
-
-    public void dispose() {
-        fastViewPane = null;
-    }
-
-    public void fill(Menu menu, int index) {
-        MenuItem item = new MenuItem(menu, SWT.NONE, index);
-        item.setText(WorkbenchMessages.PartPane_size); 
-        item.addSelectionListener(new SelectionAdapter() {
-
-            public void widgetSelected(SelectionEvent e) {
-                fastViewPane.moveSash();
-            }
-        });
-        item.setEnabled(fastViewPane.getCurrentPane() != null);
-    }
-
-    public boolean isDynamic() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuStateChange.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuStateChange.java
deleted file mode 100644
index 425fea0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/SystemMenuStateChange.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * 
- * 
- * @since 3.0
- */
-public class SystemMenuStateChange extends Action implements
-        ISelfUpdatingAction {
-    private IStackPresentationSite site;
-
-    private int state;
-
-    public SystemMenuStateChange(IStackPresentationSite site, String name,
-            int state) {
-        this.site = site;
-        this.state = state;
-
-        setText(name);
-        update();
-    }
-
-    public void dispose() {
-        this.site = null;
-    }
-
-    public void run() {
-        site.setState(state);
-    }
-
-    public void update() {
-        setEnabled(site.getState() != state && site.supportsState(state));
-    }
-
-    public boolean shouldBeVisible() {
-        return site.supportsState(state);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/UpdatingActionContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/UpdatingActionContributionItem.java
deleted file mode 100644
index 8cfc187..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/UpdatingActionContributionItem.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations;
-
-import org.eclipse.jface.action.ActionContributionItem;
-
-/**
- * @since 3.0
- */
-public class UpdatingActionContributionItem extends ActionContributionItem {
-
-    /**
-     * @param action
-     */
-    public UpdatingActionContributionItem(ISelfUpdatingAction action) {
-        super(action);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isVisible()
-     */
-    public boolean isVisible() {
-        ISelfUpdatingAction action = (ISelfUpdatingAction) getAction();
-        return super.isVisible() && action.shouldBeVisible();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
-     */
-    public void update(String propertyName) {
-        ISelfUpdatingAction action = (ISelfUpdatingAction) getAction();
-        action.update();
-
-        super.update(propertyName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.action.IContributionItem#isDynamic()
-     */
-    public boolean isDynamic() {
-        return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/classic/WorkbenchPresentationFactoryClassic.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/classic/WorkbenchPresentationFactoryClassic.java
deleted file mode 100644
index 35c3db5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/classic/WorkbenchPresentationFactoryClassic.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.presentations.classic;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultSimpleTabListener;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultThemeListener;
-import org.eclipse.ui.internal.presentations.util.PresentablePartFolder;
-import org.eclipse.ui.internal.presentations.util.StandardViewSystemMenu;
-import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-import org.eclipse.ui.presentations.WorkbenchPresentationFactory;
-
-/**
- * The classic presentation factory for the Workbench (the 3.0 look).
- * 
- * @since 3.4
- * 
- */
-public class WorkbenchPresentationFactoryClassic extends
-		WorkbenchPresentationFactory {
-
-	private static int viewTabPosition = PlatformUI.getPreferenceStore()
-			.getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.WorkbenchPresentationFactory#createViewPresentation(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.ui.presentations.IStackPresentationSite)
-	 */
-	public StackPresentation createViewPresentation(Composite parent,
-			IStackPresentationSite site) {
-
-		DefaultTabFolder folder = new DefaultTabFolder(parent, viewTabPosition
-				| SWT.BORDER, site
-				.supportsState(IStackPresentationSite.STATE_MINIMIZED), site
-				.supportsState(IStackPresentationSite.STATE_MAXIMIZED));
-
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		final int minimumCharacters = store
-				.getInt(IWorkbenchPreferenceConstants.VIEW_MINIMUM_CHARACTERS);
-		if (minimumCharacters >= 0) {
-			folder.setMinimumCharacters(minimumCharacters);
-		}
-
-		PresentablePartFolder partFolder = new PresentablePartFolder(folder);
-
-		folder.setUnselectedCloseVisible(false);
-		folder.setUnselectedImageVisible(false);
-
-		TabbedStackPresentation result = new TabbedStackPresentation(site,
-				partFolder, new StandardViewSystemMenu(site));
-
-		DefaultThemeListener themeListener = new DefaultThemeListener(folder,
-				result.getTheme());
-		result.getTheme().addListener(themeListener);
-
-		new DefaultSimpleTabListener(result.getApiPreferences(),
-				IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
-				folder);
-
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultMultiTabListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultMultiTabListener.java
deleted file mode 100644
index 397b5a9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultMultiTabListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.ui.internal.preferences.AbstractBooleanListener;
-import org.eclipse.ui.internal.preferences.IDynamicPropertyMap;
-
-/**
- * @since 3.1
- */
-public final class DefaultMultiTabListener extends AbstractBooleanListener {
-
-    private DefaultTabFolder folder;
-    
-    /**
-     * @param map
-     * @param propertyId
-     * @param defaultValue
-     */
-    public DefaultMultiTabListener(IDynamicPropertyMap map, String propertyId, DefaultTabFolder folder) {
-        super();
-        
-        this.folder = folder;
-        
-        attach(map, propertyId, true);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.AbstractBooleanListener#handleValue(boolean)
-     */
-    protected void handleValue(boolean b) {
-        folder.setSingleTab(!b);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultPartList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultPartList.java
deleted file mode 100644
index 02954a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultPartList.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Monitor;
-import org.eclipse.ui.internal.presentations.BasicPartList;
-import org.eclipse.ui.internal.presentations.util.ISystemMenu;
-import org.eclipse.ui.internal.presentations.util.PresentablePartFolder;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.1
- */
-public class DefaultPartList implements ISystemMenu {
-
-    private IStackPresentationSite site;
-    private PresentablePartFolder folder;
-    
-    public DefaultPartList(IStackPresentationSite site, PresentablePartFolder folder) {
-        this.site = site;
-        this.folder = folder;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse.swt.widgets.Control, org.eclipse.swt.graphics.Point, org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void show(Control control, Point displayCoordinates,
-            IPresentablePart currentSelection) {
-
-        int shellStyle = SWT.RESIZE | SWT.ON_TOP | SWT.NO_TRIM;
-        int tableStyle = SWT.V_SCROLL | SWT.H_SCROLL;
-        final BasicPartList editorList = new BasicPartList(control.getShell(), 
-                shellStyle, tableStyle, site, folder);
-        editorList.setInput(folder);
-        Point size = editorList.computeSizeHint();
-        int x = displayCoordinates.x;
-        int y = displayCoordinates.y;
-
-        Monitor mon = folder.getTabFolder().getControl().getMonitor();
-        Rectangle bounds = mon.getClientArea();
-        if (x + size.x > bounds.x + bounds.width) {
-			x = bounds.x + bounds.width - size.x;
-		}
-        if (y + size.y > bounds.y + bounds.height) {
-			y = bounds.y + bounds.height - size.y;
-		}
-        editorList.setLocation(new Point(x, y));
-        editorList.setVisible(true);
-        editorList.setFocus();
-        editorList.getTableViewer().getTable().getShell().addListener(
-                SWT.Deactivate, new Listener() {
-
-                    public void handleEvent(Event event) {
-                        editorList.setVisible(false);
-                    }
-                }
-        	);
-    }
-    
-    public void dispose() {
-        
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultSimpleTabListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultSimpleTabListener.java
deleted file mode 100644
index ba4c8e0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultSimpleTabListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.ui.internal.preferences.AbstractBooleanListener;
-import org.eclipse.ui.internal.preferences.IDynamicPropertyMap;
-
-/**
- * @since 3.1
- */
-public final class DefaultSimpleTabListener extends AbstractBooleanListener {
-
-    private DefaultTabFolder folder;
-    
-    /**
-     * @param map
-     * @param propertyId
-     * @param defaultValue
-     */
-    public DefaultSimpleTabListener(IDynamicPropertyMap map, String propertyId, DefaultTabFolder folder) {
-        super();
-        
-        this.folder = folder;
-        
-        attach(map, propertyId, true);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.preferences.AbstractBooleanListener#handleValue(boolean)
-     */
-    protected void handleValue(boolean b) {
-        folder.setSimpleTabs(b);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java
deleted file mode 100644
index 367c503..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java
+++ /dev/null
@@ -1,523 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Remy Chi Jian Suen <remy.suen@gmail.com> - Bug 145557 [WorkbenchParts] Content description label needs a hover 
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabFolderEvent;
-import org.eclipse.swt.custom.CTabItem;
-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.Font;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.presentations.PaneFolder;
-import org.eclipse.ui.internal.presentations.PaneFolderButtonListener;
-import org.eclipse.ui.internal.presentations.util.AbstractTabFolder;
-import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
-import org.eclipse.ui.internal.presentations.util.PartInfo;
-import org.eclipse.ui.internal.presentations.util.TabFolderEvent;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * @since 3.1
- */
-public class DefaultTabFolder extends AbstractTabFolder {
-
-    private PaneFolder paneFolder;
-    private Control viewToolBar;
-    private Label titleLabel;
-    
-    private PaneFolderButtonListener buttonListener = new PaneFolderButtonListener() {
-        public void stateButtonPressed(int buttonId) {
-            fireEvent(TabFolderEvent.stackStateToEventId(buttonId));
-        }
-
-        /**
-         * Called when a close button is pressed.
-         *   
-         * @param item the tab whose close button was pressed
-         */
-        public void closeButtonPressed(CTabItem item) {
-            fireEvent(TabFolderEvent.EVENT_CLOSE, getTab(item));
-        }
-        /**
-         * 
-         * @since 3.0
-         */
-        public void showList(CTabFolderEvent event) {
-            event.doit = false;
-            fireEvent(TabFolderEvent.EVENT_SHOW_LIST);
-        }
-    };
-    
-    private Listener selectionListener = new Listener() {
-        public void handleEvent(Event e) {
-            AbstractTabItem item = getTab((CTabItem) e.item);
-
-            if (item != null) {
-                fireEvent(TabFolderEvent.EVENT_TAB_SELECTED, item);
-            }
-        }
-    };
-    
-    private static DefaultTabFolderColors defaultColors = new DefaultTabFolderColors();
-    
-    private DefaultTabFolderColors[] activeShellColors = {defaultColors, defaultColors, defaultColors};
-    private DefaultTabFolderColors[] inactiveShellColors = {defaultColors, defaultColors, defaultColors};
-    private boolean shellActive = false;
-    
-    /**
-     * Create a new instance of the receiver
-     * 
-     * @param parent
-     * @param flags
-     * @param allowMin
-     * @param allowMax
-     */
-    public DefaultTabFolder(Composite parent, int flags, boolean allowMin, boolean allowMax) {
-        paneFolder = new PaneFolder(parent, flags | SWT.NO_BACKGROUND);
-        paneFolder.addButtonListener(buttonListener);
-        paneFolder.setMinimizeVisible(allowMin);
-        paneFolder.setMaximizeVisible(allowMax);
-        paneFolder.getControl().addListener(SWT.Selection, selectionListener);
-        paneFolder.setTopRight(null);
-        
-        // Initialize view menu dropdown
-        {            
-            ToolBar actualToolBar = new ToolBar(paneFolder.getControl(), SWT.FLAT | SWT.NO_BACKGROUND);
-            viewToolBar = actualToolBar;
-            
-        	actualToolBar.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-            	public void getName(AccessibleEvent e) {
-            		e.result = WorkbenchMessages.ViewMenu;
-            	}
-            });
-        	
-	        ToolItem pullDownButton = new ToolItem(actualToolBar, SWT.PUSH);
-	        Image hoverImage = WorkbenchImages
-	                .getImage(IWorkbenchGraphicConstants.IMG_LCL_RENDERED_VIEW_MENU);
-	        pullDownButton.setDisabledImage(hoverImage);
-	        pullDownButton.setImage(hoverImage);
-	        pullDownButton.setToolTipText(WorkbenchMessages.ViewMenu); 
-            actualToolBar.addMouseListener(new MouseAdapter() {
-                public void mouseDown(MouseEvent e) {
-                    fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation());
-                }
-            });
-            pullDownButton.addSelectionListener(new SelectionAdapter() {
-            	public void widgetSelected(SelectionEvent e) {
-                    fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation());
-
-            		super.widgetSelected(e);
-            	}
-            });
-        }
-        
-        // Initialize content description label
-        {
-	        titleLabel = new Label(paneFolder.getControl(), SWT.NONE);
-	        titleLabel.moveAbove(null);
-	        titleLabel.setVisible(false);
-            attachListeners(titleLabel, false);
-        }
-        
-        attachListeners(paneFolder.getControl(), false);
-        attachListeners(paneFolder.getViewForm(), false);
-        
-        paneFolder.setTabHeight(computeTabHeight());
-        
-        viewToolBar.moveAbove(null);
-    }
-
-    /**
-     * Changes the minimum number of characters to display in the pane folder
-     * tab. This control how much information will be displayed to the user.
-     * 
-     * @param count
-     *            The number of characters to display in the tab folder; this
-     *            value should be a positive integer.
-     * @see org.eclipse.swt.custom.CTabFolder#setMinimumCharacters(int)
-     * @since 3.1
-     */
-    public void setMinimumCharacters(int count) {
-        paneFolder.setMinimumCharacters(count);
-    }
-    
-    public void setSimpleTabs(boolean simple) {
-        paneFolder.setSimpleTab(simple);
-    }
-    
-    /**
-     * @param item
-     * @return
-     * @since 3.1
-     */
-    protected DefaultTabItem getTab(CTabItem item) {
-        return (DefaultTabItem)item.getData();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#computeSize(int, int)
-     */
-    public Point computeSize(int widthHint, int heightHint) {
-        return paneFolder.computeMinimumSize();
-    }
-
-    /* package */ PaneFolder getFolder() {
-        return paneFolder;
-    }
-    
-    public AbstractTabItem getSelection() {
-        return getTab(paneFolder.getSelection());
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#add(int)
-     */
-    public AbstractTabItem add(int index, int flags) {
-        DefaultTabItem result = new DefaultTabItem((CTabFolder)getFolder().getControl(), index, flags);
-        
-        result.getWidget().setData(result);
-        
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getContentParent()
-     */
-    public Composite getContentParent() {
-        return paneFolder.getContentParent();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setContent(org.eclipse.swt.widgets.Control)
-     */
-    public void setContent(Control newContent) {
-        paneFolder.setContent(newContent);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getItems()
-     */
-    public AbstractTabItem[] getItems() {
-        CTabItem[] items = paneFolder.getItems();
-        
-        AbstractTabItem[] result = new AbstractTabItem[items.length];
-        
-        for (int i = 0; i < result.length; i++) {
-            result[i] = getTab(items[i]);
-        }
-        
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getItemCount()
-     */
-    public int getItemCount() {
-        // Override retrieving all the items when we just want the count.
-        return paneFolder.getItemCount();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setSelection(org.eclipse.ui.internal.presentations.util.AbstractTabItem)
-     */
-    public void setSelection(AbstractTabItem toSelect) {
-        paneFolder.setSelection(indexOf(toSelect));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getToolbarParent()
-     */
-    public Composite getToolbarParent() {
-        return paneFolder.getControl();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getControl()
-     */
-    public Control getControl() {
-        return paneFolder.getControl();
-    }
-    
-    public void setUnselectedCloseVisible(boolean visible) {
-        paneFolder.setUnselectedCloseVisible(visible);
-    }
-
-    public void setUnselectedImageVisible(boolean visible) {
-        paneFolder.setUnselectedImageVisible(visible);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getTabArea()
-     */
-    public Rectangle getTabArea() {
-        return Geometry.toDisplay(paneFolder.getControl(), paneFolder.getTitleArea());
-    }
-
-    /**
-     * @param enabled
-     * @since 3.1
-     */
-    public void enablePaneMenu(boolean enabled) {
-        if (enabled) {
-            paneFolder.setTopRight(viewToolBar);
-            viewToolBar.setVisible(true);
-        } else {
-            paneFolder.setTopRight(null);
-            viewToolBar.setVisible(false);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setSelectedInfo(org.eclipse.ui.internal.presentations.util.PartInfo)
-     */
-    public void setSelectedInfo(PartInfo info) {
-        String newTitle = DefaultTabItem.escapeAmpersands(info.contentDescription);
-        
-        if (!Util.equals(titleLabel.getText(), newTitle)) {
-            titleLabel.setText(newTitle);
-            titleLabel.setToolTipText(newTitle);
-        }
-    	
-        if (!info.contentDescription.equals(Util.ZERO_LENGTH_STRING)) {
-            paneFolder.setTopLeft(titleLabel);
-            titleLabel.setVisible(true);
-        } else {
-            paneFolder.setTopLeft(null);
-            titleLabel.setVisible(false);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getPaneMenuLocation()
-     */
-    public Point getPaneMenuLocation() {
-        Point toolbarSize = viewToolBar.getSize();
-        
-        return viewToolBar.toDisplay(0,toolbarSize.y);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getPartListLocation()
-     */
-    public Point getPartListLocation() {
-        return paneFolder.getControl().toDisplay(paneFolder.getChevronLocation());
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getSystemMenuLocation()
-     */
-    public Point getSystemMenuLocation() {
-        Rectangle bounds = DragUtil.getDisplayBounds(paneFolder.getControl());
-		
-		int idx = paneFolder.getSelectionIndex();
-		if (idx > -1) {
-		    CTabItem item = paneFolder.getItem(idx);
-		    Rectangle itemBounds = item.getBounds();
-		
-		    bounds.x += itemBounds.x;
-		    bounds.y += itemBounds.y;
-		}
-		
-		Point location = new Point(bounds.x, bounds.y
-		        + paneFolder.getTabHeight());
-		
-		return location;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#isOnBorder(org.eclipse.swt.graphics.Point)
-     */
-    public boolean isOnBorder(Point toTest) {
-        Control content = paneFolder.getContent();
-        if (content != null) {
-            Rectangle displayBounds = DragUtil.getDisplayBounds(content);
-            
-            if (paneFolder.getTabPosition() == SWT.TOP) {
-                return toTest.y >= displayBounds.y;
-            }
-            
-            if (toTest.y >= displayBounds.y && toTest.y < displayBounds.y + displayBounds.height) {
-                return true;
-            }
-        }
-        
-        return super.isOnBorder(toTest);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#layout(boolean)
-     */
-    public void layout(boolean flushCache) {
-        paneFolder.layout(flushCache);
-        super.layout(flushCache);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setState(int)
-     */
-    public void setState(int state) {
-        paneFolder.setState(state);
-        super.setState(state);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setActive(int)
-     */
-    public void setActive(int activeState) {
-        super.setActive(activeState);
-        updateColors();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setTabPosition(int)
-     */
-    public void setTabPosition(int tabPosition) {
-        paneFolder.setTabPosition(tabPosition);
-        super.setTabPosition(tabPosition);
-        layout(true);
-    }
-    
-    public void flushToolbarSize() {
-        paneFolder.flushTopCenterSize();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setToolbar(org.eclipse.swt.widgets.Control)
-     */
-    public void setToolbar(Control toolbarControl) {
-        paneFolder.setTopCenter(toolbarControl);
-        super.setToolbar(toolbarControl);
-    }
-    
-    public void setColors(DefaultTabFolderColors colors, int activationState, boolean shellActivationState) {
-        Assert.isTrue(activationState < activeShellColors.length);
-                
-        if (shellActivationState) {
-            activeShellColors[activationState] = colors;
-        } else {
-            inactiveShellColors[activationState] = colors;
-        }
-        
-        if (activationState == getActive() && shellActive == shellActivationState) {
-            updateColors();
-        }
-    }
-    
-    /**
-     * 
-     * @since 3.1
-     */
-    private void updateColors() {
-        DefaultTabFolderColors currentColors = shellActive ? 
-                activeShellColors[getActive()] 
-                : inactiveShellColors[getActive()];
-                
-        paneFolder.setSelectionForeground(currentColors.foreground);
-        paneFolder.setSelectionBackground(currentColors.background, currentColors.percentages, currentColors.vertical);
-    }
-
-    public void setColors(DefaultTabFolderColors colors, int activationState) {
-        setColors(colors, activationState, true);
-        setColors(colors, activationState, false);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#shellActive(boolean)
-     */
-    public void shellActive(boolean isActive) {
-        this.shellActive = isActive;
-        super.shellActive(isActive);
-        
-        updateColors();
-    }
-
-    /**
-     * @param font
-     * @since 3.1
-     */
-    public void setFont(Font font) {
-        if (font != paneFolder.getControl().getFont()) {
-            paneFolder.getControl().setFont(font);
-            layout(true);
-            paneFolder.setTabHeight(computeTabHeight());
-        }
-    }
-    
-    /**
-     * @return the required tab height for this folder.
-     */
-    protected int computeTabHeight() {
-        GC gc = new GC(getControl());
-
-        // Compute the tab height
-        int tabHeight = Math.max(viewToolBar.computeSize(SWT.DEFAULT,
-                SWT.DEFAULT).y, gc.getFontMetrics().getHeight());
-
-        gc.dispose();
-
-        return tabHeight;
-    }
-
-    /**
-     * @param b
-     * @since 3.1
-     */
-    public void setSingleTab(boolean b) {
-        paneFolder.setSingleTab(b);
-        AbstractTabItem[] items = getItems();
-        
-        for (int i = 0; i < items.length; i++) {
-            DefaultTabItem item = (DefaultTabItem)items[i];
-        
-            item.updateTabText();
-        }
-        
-        layout(true);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setVisible(boolean)
-	 */
-	public void setVisible(boolean visible) {
-		super.setVisible(visible);
-		getFolder().setVisible(visible);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#showMinMax(boolean)
-	 */
-	public void showMinMax(boolean show) {
-        paneFolder.showMinMax(show);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolderColors.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolderColors.java
deleted file mode 100644
index 8844b29..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolderColors.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.swt.graphics.Color;
-
-/**
- * @since 3.1
- */
-public final class DefaultTabFolderColors {
-    Color foreground;
-    int[] percentages;
-    Color[] background;
-    boolean vertical;
-    
-    public DefaultTabFolderColors() {
-        
-    }
-    
-    public DefaultTabFolderColors(Color fgColor, Color[] bgColors,
-            int[] percentages, boolean vertical) {
-        
-        foreground = fgColor;
-        background = bgColors;
-        this.percentages = percentages;
-        this.vertical = vertical;
-    }
-    
-    public DefaultTabFolderColors setForeground(Color fg) {
-        foreground = fg;
-        return this;
-    }
-    
-    public DefaultTabFolderColors setBackground(Color[] background, int[] percentages, boolean vertical) {
-        this.background = background;
-        this.percentages = percentages;
-        this.vertical = vertical;
-        return this;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java
deleted file mode 100644
index b866d9a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabItem.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchThemeConstants;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.presentations.util.PartInfo;
-import org.eclipse.ui.internal.presentations.util.WidgetTabItem;
-import org.eclipse.ui.internal.util.Util;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * @since 3.1
- */
-public class DefaultTabItem extends WidgetTabItem {
-
-	public static String DIRTY_PREFIX = "*"; //$NON-NLS-1$
-
-	private boolean busy = false;
-
-	private boolean bold = false;
-
-	private Font lastFont = null;
-
-	private String shortName = Util.ZERO_LENGTH_STRING;
-
-	private String longName = Util.ZERO_LENGTH_STRING;
-
-	public DefaultTabItem(CTabFolder parent, int index, int flags) {
-		super(getTab(parent, index, flags));
-		updateFont();
-	}
-
-	/**
-	 * Get a new tab for the receiver.
-	 * 
-	 * @return CTabItem
-	 */
-	private static CTabItem getTab(CTabFolder parent, int index, int flags) {
-		return new CTabItem(parent, flags, index);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#getBounds()
-	 */
-	public Rectangle getBounds() {
-		return Geometry.toDisplay(getItem().getParent(), getItem().getBounds());
-	}
-
-	public CTabItem getItem() {
-		return (CTabItem) getWidget();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#isShowing()
-	 */
-	public boolean isShowing() {
-		return getItem().isShowing();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#setInfo(org.eclipse.ui.internal.presentations.util.PartInfo)
-	 */
-	public void setInfo(PartInfo info) {
-		CTabItem tabItem = getItem();
-
-		shortName = computeShortName(info);
-		longName = computeLongName(info);
-
-		updateTabText();
-
-		if (tabItem.getImage() != info.image) {
-			tabItem.setImage(info.image);
-		}
-
-		String toolTipText = info.toolTip;
-		if (toolTipText.equals(Util.ZERO_LENGTH_STRING)) {
-			toolTipText = null;
-		}
-
-		if (!Util.equals(toolTipText, tabItem.getToolTipText())) {
-			tabItem.setToolTipText(toolTipText);
-		}
-	}
-
-	public void updateTabText() {
-		CTabItem tabItem = getItem();
-
-		String newName = tabItem.getParent().getSingle() ? longName : shortName;
-
-		newName = escapeAmpersands(newName);
-
-		if (!Util.equals(newName, tabItem.getText())) {
-			tabItem.setText(newName);
-		}
-	}
-
-	/**
-	 * Escapes all the ampersands in the given string such that they can be
-	 * displayed verbatim in an SWT label rather than treated as accelerators.
-	 * 
-	 * @since 3.1
-	 * 
-	 * @return a string where all ampersands are escaped
-	 */
-	public static String escapeAmpersands(String input) {
-		StringBuffer title = new StringBuffer(input.length());
-		for (int i = 0; i < input.length(); i++) {
-			char character = input.charAt(i);
-			title.append(character);
-			if (character == '&') {
-				title.append(character); // escape ampersand
-			}
-		}
-		return title.toString();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#setBold(boolean)
-	 */
-	public void setBold(boolean bold) {
-		this.bold = bold;
-		super.setBold(bold);
-		updateFont();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#setBusy(boolean)
-	 */
-	public void setBusy(boolean busy) {
-		this.busy = busy;
-		super.setBusy(busy);
-		updateFont();
-	}
-
-	private void updateFont() {
-		CTabItem tabItem = getItem();
-
-		// Set the font if necessary
-		FontRegistry registry = PlatformUI.getWorkbench().getThemeManager()
-				.getCurrentTheme().getFontRegistry();
-
-		// Determine the parent font. We will set the tab's font
-		Font targetFont = null;
-
-		if (busy) {
-			targetFont = registry
-					.getItalic(IWorkbenchThemeConstants.TAB_TEXT_FONT);
-		} else {
-
-			if (bold) {
-				targetFont = registry
-						.getBold(IWorkbenchThemeConstants.TAB_TEXT_FONT);
-			}
-		}
-
-		if (lastFont != targetFont) {
-			tabItem.setFont(targetFont);
-			lastFont = targetFont;
-		}
-	}
-
-	private static String computeShortName(PartInfo info) {
-		String text = info.name;
-
-		if (info.dirty) {
-			text = DIRTY_PREFIX + text;
-		}
-
-		return text;
-	}
-
-	private static String computeLongName(PartInfo info) {
-		String text = info.name;
-
-		String contentDescription = info.contentDescription;
-
-		if (contentDescription.equals("")) { //$NON-NLS-1$
-
-			String titleTooltip = info.toolTip.trim();
-
-			if (titleTooltip.endsWith(info.name)) {
-				titleTooltip = titleTooltip.substring(0,
-						titleTooltip.lastIndexOf(info.name)).trim();
-			}
-
-			if (titleTooltip.endsWith("\\")) { //$NON-NLS-1$
-				titleTooltip = titleTooltip.substring(0,
-						titleTooltip.lastIndexOf("\\")).trim(); //$NON-NLS-1$
-			}
-
-			if (titleTooltip.endsWith("/")) { //$NON-NLS-1$
-				titleTooltip = titleTooltip.substring(0,
-						titleTooltip.lastIndexOf("/")).trim(); //$NON-NLS-1$
-			}
-
-			contentDescription = titleTooltip;
-		}
-
-		if (!contentDescription.equals("")) { //$NON-NLS-1$
-			text = MessageFormat.format(
-					WorkbenchMessages.EditorPart_AutoTitleFormat, new String[] {
-							text, contentDescription });
-		}
-
-		if (info.dirty) {
-			text = DIRTY_PREFIX + text;
-		}
-
-		return text;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultThemeListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultThemeListener.java
deleted file mode 100644
index 0de06ba..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultThemeListener.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.ui.internal.IWorkbenchThemeConstants;
-import org.eclipse.ui.internal.preferences.AbstractPropertyListener;
-import org.eclipse.ui.internal.preferences.IPropertyMap;
-import org.eclipse.ui.internal.preferences.PropertyUtil;
-import org.eclipse.ui.internal.themes.LightColorFactory;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * @since 3.1
- */
-public class DefaultThemeListener extends AbstractPropertyListener {
-
-    private DefaultTabFolder folder;
-    private IPropertyMap theme;
-    
-    public DefaultThemeListener(DefaultTabFolder folder, IPropertyMap theme) {
-        this.folder = folder;
-        this.theme = theme;
-    }
-    
-    private Color getColor(String id, Color defaultValue) {
-        Color value = (Color)theme.getValue(id, Color.class);
-        if (value == null) {
-            value = defaultValue;
-        }
-        
-        return value;
-    }
-    
-    private int getInt(String id, int defaultValue) {
-        Integer result = ((Integer)theme.getValue(id, Integer.class));
-        
-        if (result == null) {
-            return defaultValue;
-        }
-        
-        return result.intValue();
-    }
-    
-    private boolean getBoolean(String id, boolean defaultValue) {
-        Boolean result = ((Boolean)theme.getValue(id, Boolean.class));
-        
-        if (result == null) {
-            return defaultValue;
-        }
-        
-        return result.booleanValue();
-    }
-
-    /*
-     * Update the ACTIVE_TAB_HIGHLIGHT_START color in the color registry.
-     * Return true if we're using highlights on tabs, false otherwise.
-     * The highlight color is computed based on the ACTIVE_TAB_BG_START.
-     * We need to do this here, in the ThemeListener, so that we can catch
-     * the change to the ACTIVE_TAB_BG_START begin color and update the
-     * highlight color appropriately.
-     * @return boolean use highlight color
-     */  
-    private boolean updateHighlightColor() {
-    	if(! useHighlight())
-    		return false;
-    	//get newTabBegin from theme, not from ColorRegistry, which may not have been updated yet
-		RGB newTabBegin = getColor(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START, null).getRGB();
-		RGB newHighlight = LightColorFactory.createHighlightStartColor(newTabBegin);
-		//Registry handles lifecycle of colors so no leakage and if RGB s.equals then no change
-		JFaceResources.getColorRegistry().put(IWorkbenchThemeConstants.ACTIVE_TAB_HIGHLIGHT_START, newHighlight);
-		return true;
-    }
-    
-    private boolean useHighlight() {
-     	return PropertyUtil.get(
-     			this.theme,
-     			IWorkbenchThemeConstants.ACTIVE_TAB_HIGHLIGHT,
-     			false);
-    }
-    
-    public void update() {
-    	Color[] activeFocusBackgroundColors = updateHighlightColor()
-    		? new Color[] {
-	            getColor(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START, null),
-	            getColor(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END, null),
-	            JFaceResources.getColorRegistry().get(IWorkbenchThemeConstants.ACTIVE_TAB_HIGHLIGHT_START)
-    			}
-            : new Color[] {
-	            getColor(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START, null),
-	            getColor(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END, null)
-	            };
-    	
-        folder.setColors(new DefaultTabFolderColors(
-                getColor(IWorkbenchThemeConstants.ACTIVE_TAB_TEXT_COLOR, null),
-                activeFocusBackgroundColors,
-                new int[] {
-                        getInt(IWorkbenchThemeConstants.ACTIVE_TAB_PERCENT, 0) },
-                        getBoolean(IWorkbenchThemeConstants.ACTIVE_TAB_VERTICAL, true)),
-                        StackPresentation.AS_ACTIVE_FOCUS, true);
-        
-        folder.setColors(new DefaultTabFolderColors(
-                getColor(IWorkbenchThemeConstants.ACTIVE_NOFOCUS_TAB_TEXT_COLOR, null),
-                new Color[] {
-                        getColor(IWorkbenchThemeConstants.ACTIVE_NOFOCUS_TAB_BG_START, null),
-                        getColor(IWorkbenchThemeConstants.ACTIVE_NOFOCUS_TAB_BG_END, null) 
-                        },
-                new int[] {
-                        getInt(IWorkbenchThemeConstants.ACTIVE_NOFOCUS_TAB_PERCENT, 0) },
-                        getBoolean(IWorkbenchThemeConstants.ACTIVE_NOFOCUS_TAB_VERTICAL, true)),
-                        StackPresentation.AS_ACTIVE_FOCUS, false);
-        
-        folder.setColors(new DefaultTabFolderColors(
-                getColor(IWorkbenchThemeConstants.INACTIVE_TAB_TEXT_COLOR, null),
-                new Color[] {
-                        getColor(IWorkbenchThemeConstants.INACTIVE_TAB_BG_START, null),
-                        getColor(IWorkbenchThemeConstants.INACTIVE_TAB_BG_END, null) },
-                new int[] { 
-                		getInt(IWorkbenchThemeConstants.INACTIVE_TAB_PERCENT, 0) },
-                		getBoolean(IWorkbenchThemeConstants.INACTIVE_TAB_VERTICAL, true)),
-                        StackPresentation.AS_INACTIVE);
-        
-        folder.setColors(new DefaultTabFolderColors(
-                getColor(IWorkbenchThemeConstants.INACTIVE_TAB_TEXT_COLOR, null),
-                new Color[] { 
-                        getColor(IWorkbenchThemeConstants.INACTIVE_TAB_BG_START, null) },
-                new int[0], 
-                true), StackPresentation.AS_ACTIVE_NOFOCUS);
-        
-        folder.setFont((Font)theme.getValue(IWorkbenchThemeConstants.TAB_TEXT_FONT, Font.class));
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabFolder.java
deleted file mode 100644
index fbf57a0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabFolder.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.presentations.util.AbstractTabFolder;
-import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
-import org.eclipse.ui.internal.presentations.util.EnhancedFillLayout;
-import org.eclipse.ui.internal.presentations.util.PartInfo;
-
-/**
- * Implements the AbstractTabFolder interface, however this object only displays
- * the content of the currently selected part. There are no tabs, no title, no toolbar,
- * etc. There is no means to select a different part, unless it is done programmatically.
- * 
- * @since 3.1
- */
-public class EmptyTabFolder extends AbstractTabFolder {
-
-    private Composite control;
-    private Control childControl;
-    private Color borderColor;
-    
-    public EmptyTabFolder(Composite parent, boolean showborder) {
-        control = new Composite(parent, SWT.NONE);
-        EnhancedFillLayout layout = new EnhancedFillLayout();
-        control.setLayout(layout);
-        borderColor = parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
-        if (showborder) {
-            layout.xmargin = 1;
-            layout.ymargin = 1;
-	        control.addPaintListener(new PaintListener() {
-	        	public void paintControl(PaintEvent e) {
-	        		e.gc.setForeground(borderColor);
-	        		Rectangle rect = control.getClientArea();
-	        		rect.width--;
-	        		rect.height--;
-	        		e.gc.drawRectangle(rect);
-	        	}
-	        });
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#computeSize(int, int)
-     */
-    public Point computeSize(int widthHint, int heightHint) {
-        if (childControl != null) {
-        	// Fix for bug 85899 [Perspectives] [RCP]Standalone view does not divide space in 
-        	//   proper ratio with reference when added to IPageLayout with showTitle parameter false
-        	// If the childControl is a content proxy (a Composite with no children -- see PresentablePartFolder constructor),
-        	// then computeSize returns 64x64, which is inappropriate.
-        	// Note that this happens even if the Composite has a Layout that returns 0@0.
-        	// Instead, use the sizes of the margins.  This is equivalent to calling control.computeSize(...)
-        	// if the childControl returned 0@0 for its preferred size.
-        	if (childControl instanceof Composite) {
-        		Composite composite = (Composite) childControl;
-        		if (composite.getChildren().length == 0) {
-        			EnhancedFillLayout layout = (EnhancedFillLayout) control.getLayout();
-        			int w = widthHint == SWT.DEFAULT ? layout.xmargin * 2 : widthHint;
-        			int h = heightHint == SWT.DEFAULT ? layout.ymargin * 2 : heightHint;
-        			return new Point(w, h);
-        		}
-        	}
-            return childControl.computeSize(widthHint, heightHint);
-        }
-        return new Point(0,0);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#add(int, int)
-     */
-    public AbstractTabItem add(int index, int flags) {
-        return new EmptyTabItem();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getContentParent()
-     */
-    public Composite getContentParent() {
-        return control;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setContent(org.eclipse.swt.widgets.Control)
-     */
-    public void setContent(Control newContent) {
-        childControl = newContent;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getItems()
-     */
-    public AbstractTabItem[] getItems() {
-        return new AbstractTabItem[0];
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getSelection()
-     */
-    public AbstractTabItem getSelection() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setSelection(org.eclipse.ui.internal.presentations.util.AbstractTabItem)
-     */
-    public void setSelection(AbstractTabItem toSelect) {
-
-    }
-
-    public void setToolbar(Control toolbar) {
-        if (toolbar != null) {
-            toolbar.setVisible(false);
-        }
-    }
-    
-    public void layout(boolean flushCache) {
-        super.layout(flushCache);
-        
-        control.layout(flushCache);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setSelectedInfo(org.eclipse.ui.internal.presentations.util.PartInfo)
-     */
-    public void setSelectedInfo(PartInfo info) {
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#enablePaneMenu(boolean)
-     */
-    public void enablePaneMenu(boolean enabled) {
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getToolbarParent()
-     */
-    public Composite getToolbarParent() {
-        return control;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getControl()
-     */
-    public Control getControl() {
-        return control;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getTabArea()
-     */
-    public Rectangle getTabArea() {
-        return new Rectangle(0,0,0,0);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabItem.java
deleted file mode 100644
index 57c25f5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/EmptyTabItem.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
-import org.eclipse.ui.internal.presentations.util.PartInfo;
-
-/**
- * @since 3.1
- */
-public class EmptyTabItem extends AbstractTabItem {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#getBounds()
-     */
-    public Rectangle getBounds() {
-        return new Rectangle(0,0,0,0);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#setInfo(org.eclipse.ui.internal.presentations.util.PartInfo)
-     */
-    public void setInfo(PartInfo info) {
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#dispose()
-     */
-    public void dispose() {
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#getData()
-     */
-    public Object getData() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#setData(java.lang.Object)
-     */
-    public void setData(Object data) {
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativePresentationFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativePresentationFactory.java
deleted file mode 100644
index f04301e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativePresentationFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.internal.presentations.util.StandardEditorSystemMenu;
-import org.eclipse.ui.internal.presentations.util.StandardViewSystemMenu;
-import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
-import org.eclipse.ui.presentations.AbstractPresentationFactory;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * @since 3.1
- */
-public class NativePresentationFactory extends AbstractPresentationFactory {
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.presentations.AbstractPresentationFactory
-     */
-    public StackPresentation createEditorPresentation(Composite parent,
-            IStackPresentationSite site) {        
-        return new TabbedStackPresentation(site, new NativeTabFolder(parent), new StandardEditorSystemMenu(site));
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.presentations.AbstractPresentationFactory
-     */
-    public StackPresentation createViewPresentation(Composite parent,
-            IStackPresentationSite site) {
-        return new TabbedStackPresentation(site, new NativeTabFolder(parent), new StandardViewSystemMenu(site));
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.presentations.AbstractPresentationFactory
-     */
-    public StackPresentation createStandaloneViewPresentation(Composite parent,
-            IStackPresentationSite site, boolean showTitle) {
-        // TODO honour showTitle
-        return new TabbedStackPresentation(site, new NativeTabFolder(parent), 
-                new StandardViewSystemMenu(site));
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabFolder.java
deleted file mode 100644
index 64c73c1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabFolder.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.layout.SizeCache;
-import org.eclipse.ui.internal.presentations.util.AbstractTabFolder;
-import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
-import org.eclipse.ui.internal.presentations.util.PartInfo;
-import org.eclipse.ui.internal.presentations.util.ProxyControl;
-import org.eclipse.ui.internal.presentations.util.StandardSystemToolbar;
-import org.eclipse.ui.internal.presentations.util.TabFolderEvent;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * @since 3.1
- */
-public class NativeTabFolder extends AbstractTabFolder {
-
-    private TabFolder control;
-    private ViewForm viewForm;
-    private StandardSystemToolbar systemToolbar;
-    private CLabel title;
-    private ProxyControl topCenter;
-    private SizeCache topCenterCache;
-    
-    private Listener selectionListener = new Listener() {
-        public void handleEvent(Event e) {
-            fireEvent(TabFolderEvent.EVENT_TAB_SELECTED, getTab(e.item));
-        }
-    };
-    
-    private IPropertyListener systemToolbarListener = new IPropertyListener() {
-
-        public void propertyChanged(Object source, int propId) {
-            Point location;
-            
-            if (propId == TabFolderEvent.EVENT_PANE_MENU) {
-                location = getPaneMenuLocation();
-            } else {
-                location = new Point(0,0);
-            }
-            
-            fireEvent(propId, getSelection(), location);
-        }
-        
-    };
-    
-    public NativeTabFolder(Composite parent) {
-        control = new TabFolder(parent, SWT.BOTTOM);
-        control.addListener(SWT.Selection, selectionListener);
-        attachListeners(control, false);
-        
-        viewForm = new ViewForm(control, SWT.FLAT);
-        attachListeners(viewForm, false);
-        systemToolbar = new StandardSystemToolbar(viewForm, true, false, true, true, true);
-        systemToolbar.addListener(systemToolbarListener);
-        viewForm.setTopRight(systemToolbar.getControl());
-        
-        topCenter = new ProxyControl(viewForm);
-        topCenterCache = new SizeCache();
-        
-        title = new CLabel(viewForm, SWT.LEFT);
-        attachListeners(title, false);
-        viewForm.setTopLeft(title);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#computeSize(int, int)
-     */
-    public Point computeSize(int widthHint, int heightHint) {
-        return new Point(50, 50);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#add(int)
-     */
-    public AbstractTabItem add(int index, int flags) {
-        NativeTabItem item = new NativeTabItem(this, index);
-        item.getWidget().setData(item);
-        
-        return item;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#layout(boolean)
-     */
-    public void layout(boolean flushCache) {
-        super.layout(flushCache);
-        
-        Rectangle oldBounds = viewForm.getBounds();
-        Rectangle newBounds = control.getClientArea();
-        
-        viewForm.setBounds(newBounds);
-        
-        if (Util.equals(oldBounds, newBounds)) {
-            viewForm.layout(flushCache);
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getPaneMenuLocation()
-     */
-    public Point getPaneMenuLocation() {
-        return systemToolbar.getPaneMenuLocation();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setState(int)
-     */
-    public void setState(int state) {
-        super.setState(state);
-        
-        systemToolbar.setState(state);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getClientArea()
-     */
-    public Rectangle getClientArea() {
-        Control content = viewForm.getContent();
-        
-        if (content == null) {
-            return new Rectangle(0,0,0,0);
-        }
-        
-        return Geometry.toControl(control, DragUtil.getDisplayBounds(content));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getItems()
-     */
-    public AbstractTabItem[] getItems() {
-        TabItem[] items = control.getItems();
-        
-        AbstractTabItem[] result = new AbstractTabItem[items.length];
-        
-        for (int i = 0; i < result.length; i++) {
-            result[i] = getTab(items[i]);
-        }
-        
-        return result;
-    }
-    
-    /**
-     * @param item
-     * @return
-     * @since 3.1
-     */
-    private AbstractTabItem getTab(Widget item) {
-        return (AbstractTabItem)item.getData();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setSelection(org.eclipse.ui.internal.presentations.util.Widget)
-     */
-    public void setSelection(AbstractTabItem toSelect) {
-        if (toSelect == null) {
-            return;
-        }
-        
-        NativeTabItem tab = (NativeTabItem) toSelect;
-        control.setSelection(new TabItem[] {(TabItem)tab.getWidget()});
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setSelectedInfo(org.eclipse.ui.internal.presentations.util.PartInfo)
-     */
-    public void setSelectedInfo(PartInfo info) {
-        if (!Util.equals(title.getText(), info.title)) {
-            title.setText(info.title);
-        }
-        if (title.getImage() != info.image) {
-            title.setImage(info.image);
-        }
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getToolbarParent()
-     */
-    public Composite getToolbarParent() {
-        return viewForm;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getTabArea()
-     */
-    public Rectangle getTabArea() {
-
-        Rectangle bounds = control.getBounds();
-        
-        Rectangle clientArea = control.getClientArea();
-        
-        bounds.x = 0;
-        bounds.y = 0;
-        Geometry.expand(bounds, 0, 0, - (clientArea.height + clientArea.y), 0);
-        
-        return Geometry.toDisplay(control.getParent(), bounds);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setToolbar(org.eclipse.swt.widgets.Control)
-     */
-    public void setToolbar(Control toolbarControl) {
-        
-        if (toolbarControl != null) { 
-            topCenterCache.setControl(toolbarControl);
-            topCenter.setTarget(topCenterCache);
-            viewForm.setTopCenter(topCenter.getControl());
-        } else {
-            topCenterCache.setControl(null);
-            topCenter.setTarget(null);
-            viewForm.setTopCenter(null);
-        }
-        
-        super.setToolbar(toolbarControl);
-    }
-    
-    public Control getControl() {
-        return control;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#isOnBorder(org.eclipse.swt.graphics.Point)
-     */
-    public boolean isOnBorder(Point globalPos) {
-        Point localPos = getControl().toControl(globalPos);
-        
-        Rectangle clientArea = getClientArea();
-        return localPos.y > clientArea.y && localPos.y < clientArea.y + clientArea.height; 
-    }
-    
-    public AbstractTabItem getSelection() {
-        TabItem[] sel = control.getSelection();
-        
-        if (sel.length == 0) {
-            return null;
-        }
-
-        return getTab(sel[0]);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getContentParent()
-     */
-    public Composite getContentParent() {
-        return viewForm;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#setContent(org.eclipse.swt.widgets.Control)
-     */
-    public void setContent(Control newContent) {
-        viewForm.setContent(newContent);
-    }
-    
-    /**
-     * @return
-     * @since 3.1
-     */
-    public TabFolder getTabFolder() {
-        return control;
-    }
-
-    /**
-     * @param item
-     * @param newTitle
-     * @since 3.1
-     */
-    /* protected */ void setSelectedTitle(String newTitle) {
-        title.setText(newTitle);
-    }
-
-    /**
-     * @param image
-     * @since 3.1
-     */
-    /* protected */ void setSelectedImage(Image image) {
-        title.setImage(image);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabFolder#getItem(org.eclipse.swt.graphics.Point)
-     */
-    public AbstractTabItem getItem(Point toFind) {
-        return getSelection();
-    }
-    
-    /**
-     * @param enabled
-     * @since 3.1
-     */
-    public void enablePaneMenu(boolean enabled) {
-        systemToolbar.enablePaneMenu(enabled);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabItem.java
deleted file mode 100644
index 729d357..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/NativeTabItem.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.defaultpresentation;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.ui.internal.presentations.util.PartInfo;
-import org.eclipse.ui.internal.presentations.util.WidgetTabItem;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * @since 3.1
- */
-public class NativeTabItem extends WidgetTabItem {
-    
-    public NativeTabItem(NativeTabFolder parent, int index) {
-        super(new TabItem(parent.getTabFolder(), SWT.NONE, index));
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#getBounds()
-     */
-    public Rectangle getBounds() {
-        return new Rectangle(0,0,0,0);
-    }
-
-    public void setInfo(PartInfo info) {
-        TabItem widget = (TabItem) getWidget();
-        
-        if (!Util.equals(widget.getText(), info.name)) {
-            widget.setText(info.name);
-        }
-        String oldToolTip = Util.safeString(widget.getToolTipText());
-        
-        if (!Util.equals(info.toolTip, oldToolTip)) {
-            String toolTip = info.toolTip;
-            if (toolTip.length() == 0) {
-                toolTip = null;
-            }
-            widget.setToolTipText(toolTip);
-        }
-    }    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabFolder.java
deleted file mode 100644
index 776e4de..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabFolder.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-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.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.PresentationUtil;
-
-/**
- * @since 3.1
- */
-public abstract class AbstractTabFolder {
-    
-    private List listeners = new ArrayList(1);
-
-    private Control toolbar;
-    private int state;
-
-    public abstract Point computeSize(int widthHint, int heightHint);
-
-    public abstract AbstractTabItem add(int index, int flags);
-
-    public abstract Composite getContentParent();
-    public abstract void setContent(Control newContent);
-    
-    public abstract AbstractTabItem[] getItems();
-
-    public abstract AbstractTabItem getSelection();
-    public abstract void setSelection(AbstractTabItem toSelect);
-    public abstract void setSelectedInfo(PartInfo info);
-    public abstract void enablePaneMenu(boolean enabled);
-    private int activeState = IStackPresentationSite.STATE_RESTORED;
-    
-	private Listener menuListener = new Listener() {
-		/* (non-Javadoc)
-		 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-		 */
-		public void handleEvent(Event event) {
-			Point globalPos = new Point(event.x, event.y);
-		    handleContextMenu(globalPos, event);			
-		}
-	};
-
-    private Listener dragListener = new Listener() {
-        public void handleEvent(Event e) {
-            Point globalPos = ((Control)e.widget).toDisplay(e.x, e.y);
-            handleDragStarted(globalPos, e);
-        }
-    };
-	
-	private MouseListener mouseListener = new MouseAdapter() {
-		
-		// If we single-click on an empty space on the toolbar, move focus to the
-		// active control
-		public void mouseDown(MouseEvent e) {
-			Point p = ((Control)e.widget).toDisplay(e.x, e.y);
-
-			handleMouseDown(p, e);
-		}
-		
-		
-		// If we double-click on the toolbar, maximize the presentation
-		public void mouseDoubleClick(MouseEvent e) {
-			Point p = ((Control)e.widget).toDisplay(e.x, e.y);
-
-			handleDoubleClick(p, e);						
-		}
-	};
-    
-    public void setActive(int activeState) {
-        this.activeState = activeState;
-    }
-    
-    public int getActive() {
-        return activeState;
-    }
-
-    /**
-     * Returns the location where the pane menu should be opened when activated
-     * by a keyboard shortcut (display coordinates)
-     * 
-     * @return the location for the pane menu (display coordinates)
-     * @since 3.1
-     */
-    public Point getPaneMenuLocation() {
-        return getControl().toDisplay(new Point(0,0));
-    }
-
-    /**
-     * Returns the location where the part list should be opened when activated
-     * by a keyboard shortcut (display coordinates)
-     * 
-     * @return the location for the part list (display coordinates)
-     * @since 3.1
-     */
-    public Point getPartListLocation() {
-        return getSystemMenuLocation();
-    }
-
-    /**
-     * Returns the location where the pane menu should be opened when activated
-     * by a keyboard shortcut (display coordinates)
-     * 
-     * @return the location for the pane menu (display coordinates)
-     * @since 3.1
-     */
-    public Point getSystemMenuLocation() {
-        return getControl().toDisplay(new Point(0,0));
-    }
-    
-    /**
-     * Returns the parent composite that should be used for creating the toolbar.
-     * Any control passed into setToolbar must have this composite as its parent.
-     * 
-     * @return the parent composite that should be used for creating the toolbar
-     * 
-     * @since 3.1
-     */
-    public abstract Composite getToolbarParent();
-
-    /**
-     * Returns the main control for this folder.
-     * 
-     * @return the main control for the folder
-     * @since 3.1
-     */
-    public abstract Control getControl();
-    
-    public AbstractTabItem getItem(int idx) {
-        return getItems()[idx];
-    }
-
-    public AbstractTabItem getItem(Point toFind) {
-        AbstractTabItem[] items = getItems();
-        
-        for (int i = 0; i < items.length; i++) {
-            AbstractTabItem item = items[i];
-            
-            if (item.getBounds().contains(toFind)) {
-                return item;
-            }
-        }
-        
-        return null;
-    }
-    
-    public AbstractTabItem findItem(Object dataToFind) {
-        AbstractTabItem[] items = getItems();
-        
-        for (int i = 0; i < items.length; i++) {
-            AbstractTabItem item = items[i];
-            
-            if (item.getData() == dataToFind) {
-                return item;
-            }
-        }
-        
-        return null;
-    }
-    
-    /**
-     * Returns the index of the given item, or -1 if the given item is
-     * not found in this tab folder. Subclasses should override this if
-     * the underlying SWT widget has an equivalent method
-     * 
-     * @param item item to find
-     * @return the index of the given item or -1
-     */
-    public int indexOf(AbstractTabItem item) {
-        AbstractTabItem[] items = getItems();
-
-        for (int idx = 0; idx < items.length; idx++) {
-            AbstractTabItem next = items[idx];
-
-            if (next == item) {
-                return idx;
-            }
-        }
-
-        return -1;
-    }
-
-    public int getItemCount() {
-        return getItems().length;
-    }
-
-    public void setToolbar(Control toolbarControl) {
-        this.toolbar = toolbarControl;
-    }
-
-    public final Control getToolbar() {
-        return toolbar;
-    }
-
-    /**
-     * Sets the current state for the folder
-     * 
-     * @param state one of the IStackPresentationSite.STATE_* constants
-     */
-    public void setState(int state) {
-        this.state = state;
-    }
-
-    /**
-     * Returns the title area for this control (in the control's coordinate system)
-     * 
-     * @return
-     */
-    public abstract Rectangle getTabArea();
-
-    /**
-     * Called when the tab folder's shell becomes active or inactive. Subclasses
-     * can override this to change the appearance of the tabs based on activation.
-     * 
-     * @param isActive
-     */
-    public void shellActive(boolean isActive) {
-    }
-
-    /**
-     * Adds the given listener to this AbstractTabFolder
-     * 
-     * @param newListener the listener to add
-     */
-    public final void addListener(TabFolderListener newListener) {
-        listeners.add(newListener);
-    }
-
-    /**
-     * Removes the given listener from this AbstractTabFolder
-     * 
-     * @param toRemove the listener to remove
-     */
-    public final void removeListener(TabFolderListener toRemove) {
-        listeners.remove(toRemove);
-    }
-
-    public void flushToolbarSize() {
-        
-    }
-    
-    protected final void fireEvent(TabFolderEvent e) {
-        for (Iterator iter = listeners.iterator(); iter.hasNext();) {
-            TabFolderListener next = (TabFolderListener)iter.next();
-
-            next.handleEvent(e);
-        }        
-    }
-    
-    protected final void fireEvent(int id) {
-        fireEvent(new TabFolderEvent(id));
-    }
-    
-    protected final void fireEvent(int id, AbstractTabItem w) {
-        fireEvent(new TabFolderEvent(id, w, 0, 0));
-    }
-    
-    protected final void fireEvent(int id, AbstractTabItem w, Point pos) {
-        fireEvent(new TabFolderEvent(id, w, pos));
-    }
-    
-    public void layout(boolean flushCache) {
-    }
-    
-    public void setTabPosition(int tabPosition) {
-    }
-    
-    public int getTabPosition() {
-        return SWT.TOP;
-    }
-    
-    public int getState() {
-        return state;
-    }
-    
-    protected void attachListeners(Control theControl, boolean recursive) {
-        theControl.addListener(SWT.MenuDetect, menuListener);
-        theControl.addMouseListener(mouseListener);
-        PresentationUtil.addDragListener(theControl, dragListener);
-        
-        if (recursive && theControl instanceof Composite) {
-            Composite composite = (Composite) theControl;
-            Control[] children = composite.getChildren();
-            
-            for (int i = 0; i < children.length; i++) {
-                Control control = children[i];
-                
-                attachListeners(control, recursive);
-            }
-        }
-    }
-    
-    protected void detachListeners(Control theControl, boolean recursive) {
-        theControl.removeListener(SWT.MenuDetect, menuListener);
-        theControl.removeMouseListener(mouseListener);
-        PresentationUtil.removeDragListener(theControl, dragListener);
-        
-        if (recursive && theControl instanceof Composite) {
-            Composite composite = (Composite) theControl;
-            Control[] children = composite.getChildren();
-            
-            for (int i = 0; i < children.length; i++) {
-                Control control = children[i];
-                
-                detachListeners(control, recursive);
-            }
-        }
-    }
-    
-    protected void handleContextMenu(Point displayPos, Event e) {
-        if (isOnBorder(displayPos)) {
-            return;
-        }
-
-        AbstractTabItem tab = getItem(displayPos); 
-        
-        fireEvent(TabFolderEvent.EVENT_SYSTEM_MENU, tab, displayPos);
-    }
-    
-    protected void handleMouseDown(Point displayPos, MouseEvent e) {
-        fireEvent(TabFolderEvent.EVENT_GIVE_FOCUS_TO_PART);
-    }
-
-    protected void handleDoubleClick(Point displayPos, MouseEvent e) {
-        if (isOnBorder(displayPos)) {
-            return;
-        }
-        
-		if (getState() == IStackPresentationSite.STATE_MAXIMIZED) {
-			fireEvent(TabFolderEvent.EVENT_RESTORE);
-		} else {
-		    fireEvent(TabFolderEvent.EVENT_MAXIMIZE);
-		}
-    }
-    
-    protected void handleDragStarted(Point displayPos, Event e) {
-
-        if (isOnBorder(displayPos)) {
-            return;
-        }
-        
-        AbstractTabItem tab = getItem(displayPos);
-        fireEvent(TabFolderEvent.EVENT_DRAG_START, tab, displayPos);
-    }
-
-    /**
-     * Returns true iff the given point is on the border of the folder.
-     * By default, double-clicking, context menus, and drag/drop are disabled
-     * on the folder's border.
-     *  
-     * @param toTest a point (display coordinates)
-     * @return true iff the point is on the presentation border
-     * @since 3.1
-     */
-    public boolean isOnBorder(Point toTest) {
-        return false;
-    }
-    
-    /**
-	 * Set the folder to visible. This can be extended to propogate the
-	 * visibility request to other components in the subclass.
-	 * 
-	 * @param visible
-	 *            <code>true</code> - the folder is visible.
-	 * @since 3.2
-	 */
-    public void setVisible(boolean visible) {
-		getControl().setVisible(visible);
-	}
-
-	/**
-	 * Cause the folder to hide or show its
-	 * Minimize and Maximize affordances.
-	 * 
-	 * @param show
-	 *            <code>true</code> - the min/max buttons are visible.
-	 * @since 3.3
-	 */
-	public void showMinMax(boolean show) {
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabItem.java
deleted file mode 100644
index 434542f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/AbstractTabItem.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- * @since 3.1
- */
-public abstract class AbstractTabItem {
-    public abstract Rectangle getBounds();
-    public abstract void setInfo(PartInfo info);
-    public abstract void dispose();
-    public void setBusy(boolean busy) {}
-    public void setBold(boolean bold) {}
-    
-    public abstract Object getData();
-    public abstract void setData(Object data);
-    
-    public boolean isShowing() {
-        return true;
-    }
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/EnhancedFillLayout.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/EnhancedFillLayout.java
deleted file mode 100644
index 80ba115..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/EnhancedFillLayout.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-
-/**
- * @since 3.1
- */
-public class EnhancedFillLayout extends Layout {
-
-	public int xmargin = 0;
-	public int ymargin = 0;
-	
-    protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) {
-        int resultX = 1;
-        int resultY = 1;
-        
-        Control[] children = composite.getChildren();
-        
-        for (int i = 0; i < children.length; i++) {
-            Control control = children[i];
-            
-            Point sz = control.computeSize(wHint, hHint, flushCache);
-            
-            resultX = Math.max(resultX, sz.x + 2 * xmargin);
-            resultY = Math.max(resultY, sz.y + 2 * ymargin);
-        }
-        
-        return new Point(resultX, resultY);
-    }
-
-    protected void layout(Composite composite, boolean flushCache) {
-        Control[] children = composite.getChildren();
-        
-        for (int i = 0; i < children.length; i++) {
-            Control control = children[i];
-            Rectangle area = composite.getClientArea();
-            Geometry.expand(area, -xmargin, -xmargin, -ymargin, -ymargin );
-            control.setBounds(area);
-        }                
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/IPresentablePartList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/IPresentablePartList.java
deleted file mode 100644
index 5ce0aeb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/IPresentablePartList.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.ui.presentations.IPresentablePart;
-
-/**
- * @since 3.0
- */
-public interface IPresentablePartList {
-    public void insert(IPresentablePart part, int idx);
-
-    public void remove(IPresentablePart part);
-
-    public void move(IPresentablePart part, int newIndex);
-
-    public int size();
-
-    public void select(IPresentablePart part);
-    
-    public IPresentablePart[] getPartList();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ISystemMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ISystemMenu.java
deleted file mode 100644
index 86fa379..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ISystemMenu.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.presentations.IPresentablePart;
-
-/**
- * @since 3.1
- */
-public interface ISystemMenu {
-    void show(Control control, Point displayCoordinates, IPresentablePart currentSelection);
-    
-    /**
-     * Disposes of this system menu.
-     * 
-     * @since 3.3
-     */
-    void dispose();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/LeftToRightTabOrder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/LeftToRightTabOrder.java
deleted file mode 100644
index 64c9a8f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/LeftToRightTabOrder.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IPresentationSerializer;
-
-/**
- * @since 3.0
- */
-public class LeftToRightTabOrder extends TabOrder {
-
-    private IPresentablePartList list;
-    
-    public LeftToRightTabOrder(IPresentablePartList list) {
-        this.list = list;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#add(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void add(IPresentablePart newPart) {
-        list.insert(newPart, list.size());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#addInitial(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void addInitial(IPresentablePart newPart) {
-        add(newPart);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#insert(org.eclipse.ui.presentations.IPresentablePart, int)
-     */
-    public void insert(IPresentablePart newPart, int index) {
-        list.insert(newPart, index);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#remove(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void remove(IPresentablePart removed) {
-        list.remove(removed);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#select(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void select(IPresentablePart selected) {
-        list.select(selected);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#move(org.eclipse.ui.presentations.IPresentablePart, int)
-     */
-    public void move(IPresentablePart toMove, int newIndex) {
-        list.move(toMove, newIndex);
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabOrder#getPartList()
-     */
-    public IPresentablePart[] getPartList() {
-        return list.getPartList();
-    }
-    
-    /**
-     * Restores a presentation from a previously stored state
-     * 
-     * @param serializer (not null)
-     * @param savedState (not null)
-     */
-    public void restoreState(IPresentationSerializer serializer,
-            IMemento savedState) {
-        IMemento[] parts = savedState.getChildren(IWorkbenchConstants.TAG_PART);
-
-        for (int idx = 0; idx < parts.length; idx++) {
-            String id = parts[idx].getString(IWorkbenchConstants.TAG_ID);
-
-            if (id != null) {
-                IPresentablePart part = serializer.getPart(id);
-
-                if (part != null) {
-                    addInitial(part);
-                }
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#saveState(org.eclipse.ui.presentations.IPresentationSerializer, org.eclipse.ui.IMemento)
-     */
-    public void saveState(IPresentationSerializer context, IMemento memento) {
-
-        List parts = Arrays.asList(list.getPartList());
-
-        Iterator iter = parts.iterator();
-        while (iter.hasNext()) {
-            IPresentablePart next = (IPresentablePart) iter.next();
-
-            IMemento childMem = memento
-                    .createChild(IWorkbenchConstants.TAG_PART);
-            childMem.putString(IWorkbenchConstants.TAG_ID, context.getId(next));
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java
deleted file mode 100644
index 3d644f6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PartInfo.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.presentations.IPresentablePart;
-
-/**
- * @since 3.1
- */
-public final class PartInfo {
-    public String name;
-    public String title;
-    public String contentDescription;
-    public String toolTip;
-    public Image image;
-    public boolean dirty;
-    
-    public PartInfo() {
-        name = Util.ZERO_LENGTH_STRING;
-        title = Util.ZERO_LENGTH_STRING;
-        contentDescription = Util.ZERO_LENGTH_STRING;
-        toolTip = Util.ZERO_LENGTH_STRING;
-        image = null;
-    }
-    
-    public PartInfo(IPresentablePart part) {
-        set(part);
-    }
-    
-    public void set(IPresentablePart part) {
-        name = part.getName();
-        title = part.getTitle();
-        contentDescription = part.getTitleStatus();
-        image = part.getTitleImage();
-        toolTip = part.getTitleToolTip();
-        dirty = part.isDirty();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PresentablePartFolder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PresentablePartFolder.java
deleted file mode 100644
index 9eabd9d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/PresentablePartFolder.java
+++ /dev/null
@@ -1,418 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM - bug 51580
- *     Chris Torrence, ITT Visual Information Solutions - bugs 51580 202208
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.events.ShellListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.1
- */
-public final class PresentablePartFolder implements IPresentablePartList {    
-    private AbstractTabFolder folder;
-    private IPresentablePart current;
-    //private ProxyControl toolbarProxy;
-    private Control contentProxy;
-    private static PartInfo tempPartInfo = new PartInfo(); 
-    
-	/**
-	 * Movement listener. Updates the bounds of the target to match the 
-	 * bounds of the dummy control.
-	 */
-	private ControlListener contentListener = new ControlListener() {
-
-		public void controlMoved(ControlEvent e) {
-			layoutContent();
-		}
-
-		public void controlResized(ControlEvent e) {
-		}
-		
-	};
-    
-    private ShellListener shellListener = new ShellAdapter() {
-        public void shellActivated(ShellEvent e) {
-            folder.shellActive(true);
-        }
-
-        public void shellDeactivated(ShellEvent e) {
-            folder.shellActive(false);
-        }
-    };
-
-    /**
-     * Listener attached to all child parts. It responds to changes in part properties
-     */
-    private IPropertyListener childPropertyChangeListener = new IPropertyListener() {
-        public void propertyChanged(Object source, int property) {
-
-            if (source instanceof IPresentablePart) {
-                IPresentablePart part = (IPresentablePart) source;
-
-                childPropertyChanged(part, property);
-            }
-        }
-    };
-
-    /**
-     * Dispose listener that is attached to the main control. It triggers cleanup of
-     * any listeners. This is required to prevent memory leaks.
-     */
-    private DisposeListener tabDisposeListener = new DisposeListener() {
-        public void widgetDisposed(DisposeEvent e) {
-            if (e.widget == folder.getControl()) {
-                // If we're disposing the main control...
-                disposed();
-            }
-        }
-    };
-    private List partList = new ArrayList(4);
-    
-    public PresentablePartFolder(AbstractTabFolder folder) {
-        this.folder = folder;
-        
-        folder.getControl().getShell().addShellListener(shellListener);
-        folder.shellActive(folder.getControl().getDisplay()
-                .getActiveShell() == folder.getControl().getShell());
-
-        folder.getControl().addDisposeListener(tabDisposeListener);
-        
-        //toolbarProxy = new ProxyControl(folder.getToolbarParent());
-        
-        // NOTE: if the shape of contentProxy changes, the fix for bug 85899 in EmptyTabFolder.computeSize may need adjustment.
-        contentProxy = new Composite(folder.getContentParent(), SWT.NONE);
-        contentProxy.setVisible(false);
-        for (Control current = contentProxy; current != folder.getControl().getParent(); current = current.getParent()) {
-            current.addControlListener(contentListener);
-        }
-        folder.setContent(contentProxy);
-        
-    }
-    
-    /**
-     * 
-     * @since 3.1
-     */
-    private void layoutContent() {
-        if (current != null) {
-            Rectangle clientArea = DragUtil.getDisplayBounds(contentProxy);
-            
-            current.setBounds(Geometry.toControl(folder.getControl().getParent(), clientArea));
-        }
-    }
-
-    /**
-     * 
-     * @since 3.1
-     */
-    protected void disposed() {
-        folder.getControl().getShell().removeShellListener(shellListener);
-        Iterator iter = partList.iterator();
-        while(iter.hasNext()) {
-            IPresentablePart next = (IPresentablePart)iter.next();
-            
-            next.removePropertyListener(childPropertyChangeListener);
-        }
-    }
-    
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.presentations.util.IPresentablePartList#getPartList()
-	 */
-	public IPresentablePart[] getPartList() {
-	    AbstractTabItem[] items = folder.getItems();
-	    IPresentablePart[] result = new IPresentablePart[items.length];
-	    
-	    for (int i = 0; i < items.length; i++) {
-            result[i] = getPartForTab(items[i]);
-            
-        }
-	    
-	    return result;
-	}
-    
-    /**
-     * Adds the given presentable part directly into this presentation at the 
-     * given index. Does nothing if a tab already exists for the given part.
-     * This is intended to be called by TabOrder and its subclasses.
-     *
-     * @param part part to add
-     * @param idx index to insert at
-     */
-    public void insert(IPresentablePart part, int idx) {
-        Assert.isTrue(!folder.getControl().isDisposed());
-
-        if (getTab(part) != null) {
-        	if(indexOf(part) != idx)
-        		move(part, idx);
-            return;
-        }
-
-        idx = Math.min(idx, folder.getItemCount());
-
-        AbstractTabItem item;
-
-        int style = SWT.NONE;
-
-        if (part.isCloseable()) {
-            style |= SWT.CLOSE;
-        }
-        
-        item = folder.add(idx, style);
-
-        item.setData(part);
-
-        initTab(item, part);
-
-        part.addPropertyListener(childPropertyChangeListener);
-        partList.add(part);
-    }
-    
-    public void remove(IPresentablePart toRemove) {
-        if (toRemove == current) {
-            select(null);
-        }
-        
-        internalRemove(toRemove);
-    }
-    
-    private void internalRemove(IPresentablePart toRemove) {
-        AbstractTabItem item = getTab(toRemove);
-        if (item != null) {
-            item.dispose();
-        }
-        if (partList.contains(toRemove)) {
-            toRemove.removePropertyListener(childPropertyChangeListener);
-            partList.remove(toRemove);
-        }
-    }
-    
-    /**
-     * Moves the given part to the given index. When this method returns,
-     * indexOf(part) will return newIndex.
-     * 
-     * @param part
-     * @param newIndex
-     */
-    public void move(IPresentablePart part, int newIndex) {
-        int currentIndex = indexOf(part);
-
-        if (currentIndex == newIndex) {
-            return;
-        }
-
-        internalRemove(part);
-        insert(part, newIndex);
-        
-        if (current == part) {
-            folder.setSelection(getTab(part));
-        }
-    }
-
-    /**
-     * Returns the number of parts in this folder
-     */
-    public int size() {
-        return folder.getItemCount();
-    }
-
-    public void setBounds(Rectangle bounds) {
-        Point minSize = folder.computeSize(bounds.width, SWT.DEFAULT);
-        
-        if (folder.getState() == IStackPresentationSite.STATE_MINIMIZED && minSize.y < bounds.height) {
-            bounds = Geometry.copy(bounds);
-            bounds.height = minSize.y;
-        }
-        
-        // Set the tab folder's bounds
-        folder.getControl().setBounds(bounds);
-
-        layout(false);
-    }
-    
-    public void select(IPresentablePart toSelect) {
-        
-        if (toSelect == current) {
-            return;
-        }
-        
-        if (toSelect != null) {
-            toSelect.setVisible(true);
-        }
-        
-        if (current != null) {
-            current.setVisible(false);
-            setToolbar(null);
-        }
-        
-        current = toSelect;
-        
-        AbstractTabItem selectedItem = getTab(toSelect);
-
-        folder.setSelection(selectedItem);
-
-        if (selectedItem != null) {
-            // Determine if we need to un-bold this tab
-            selectedItem.setBold(false);
-            initTab(selectedItem, toSelect);
-        } else {
-            setToolbar(null);
-        }
-
-        layout(true);
-    }
-    
-    private void setToolbar(Control newToolbar) {
-        if (folder.getToolbar() != newToolbar) {
-            folder.setToolbar(newToolbar);
-        }        
-    }
-    private boolean isVisible = true;
-    
-    
-    private void childPropertyChanged(IPresentablePart part, int property) {
-        AbstractTabItem tab = getTab(part);
-        
-        switch (property) {
-        case IPresentablePart.PROP_HIGHLIGHT_IF_BACK:
-            if (tab != null && getCurrent() != part) {//Set bold if it doesn't currently have focus
-                tab.setBold(true);
-                initTab(tab, part);
-            }
-            break;
-            
-        case IPresentablePart.PROP_TOOLBAR:
-            if (tab != null && getCurrent() == part) {
-                folder.flushToolbarSize();
-            }
-            /* falls through */
-        case IPresentablePart.PROP_CONTENT_DESCRIPTION:
-        case IPresentablePart.PROP_PANE_MENU:
-        case IPresentablePart.PROP_TITLE:
-            if (tab != null) {
-                initTab(tab, part);
-                if (getCurrent() == part) {
-                    layout(true);
-                }
-            }
-            break;
-        case IPresentablePart.PROP_PREFERRED_SIZE:
-            folder.fireEvent(new TabFolderEvent(TabFolderEvent.EVENT_PREFERRED_SIZE, tab, 0, 0 ));
-            break;
-        default:
-            if (tab != null) initTab(tab, part);
-        }
-    }
-    
-    protected void initTab(AbstractTabItem item, IPresentablePart part) {
-        tempPartInfo.set(part);
-        item.setInfo(tempPartInfo);
-        
-        item.setBusy(part.isBusy());
-        if (part == getCurrent()) {
-            folder.setSelectedInfo(tempPartInfo);
-            folder.enablePaneMenu(part.getMenu() != null);
-            
-            setToolbar(part.getToolBar());
-        }
-    }
-
-    public boolean isDisposed() {
-        return SwtUtil.isDisposed(folder.getControl());
-    }
-    
-    public IPresentablePart getPartForTab(AbstractTabItem tab) {
-        Assert.isTrue(!isDisposed());
-
-        if (tab == null) {
-            return null;
-        }
-        
-        IPresentablePart part = (IPresentablePart) tab.getData();
-
-        return part;
-    }
-
-    /**
-     * Returns the tab for the given part, or null if there is no such tab
-     * 
-     * @param part the part being searched for
-     * @return the tab for the given part, or null if there is no such tab
-     */
-    public AbstractTabItem getTab(IPresentablePart part) {
-        Assert.isTrue(!isDisposed());
-        
-        return folder.findItem(part);
-    }
-    
-    
-
-    public int indexOf(IPresentablePart part) {
-        AbstractTabItem item = getTab(part);
-
-        if (item == null) {
-            return -1;
-        }
-
-        return folder.indexOf(item);
-    }
-    
-    public AbstractTabFolder getTabFolder() {
-        return folder;
-    }
-    
-    public void setVisible(boolean isVisible) {
-        this.isVisible  = isVisible;
-        getTabFolder().setVisible(isVisible);
-        if (isVisible) {
-            layout(true);
-        }
-    }
-    
-    public void layout(boolean changed) {
-        if (!isVisible) {
-            // Don't bother with layout if we're not visible
-            return;
-        }
-        // Lay out the tab folder and compute the client area
-        folder.layout(changed);
-
-        //toolbarProxy.layout();
-        
-        layoutContent();
-    }
-    
-    public IPresentablePart getCurrent() {
-        return current;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ProxyControl.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ProxyControl.java
deleted file mode 100644
index d64ab56..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ProxyControl.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.internal.dnd.SwtUtil;
-import org.eclipse.ui.internal.layout.SizeCache;
-
-/**
- * A ProxyControl is an invisible control whose size and position are linked
- * with some target control. That is, when the dummy control is asked for its
- * preferred size it returns the preferred size of the target. Changing the
- * bounds of the dummy control also changes the bounds of the target. This allows 
- * any Composite to lay out a control that isn't one of its children.
- * 
- * <p>
- * For example, imagine you have a ViewForm and a ToolBar that share the same parent
- * and you want the ToolBar to be located in the upper-right corner of the ViewForm.
- * If the ToolBar were a child of the ViewForm, this could be done easily by calling
- * viewForm.setTopRight(toolBar). However, this is impossible since ViewForm.setTopRight
- * will only accept a child control. Instead, we create a ProxyControl as a child
- * of the viewForm, and set the toolbar as its target. The ViewForm will treat
- * the ProxyControl just like any other child, but it will actually be arranging the
- * ToolBar. 
- * </p>
- * <p>For example:
- * </p>
- * <code>
- *      // Create a ViewForm and a ToolBar that are siblings
- * 		ViewForm viewForm = new ViewForm(parent, SWT.NONE);
- * 		ToolBar toolBar = new ToolBar(parent, SWT.NONE);
- * 
- *      // Allow the ViewForm to control the position of the ToolBar by creating
- *      // a ProxyControl in the ViewForm that targets the ToolBar.
- * 		ProxyControl toolBarProxy = new ProxyControl(viewForm);
- * 		toolBarProxy.setTarget(toolBar);
- * 		viewForm.setTopRight(toolBarProxy.getControl());
- * </code>
- * 
- * <p>
- * This is intended to simplify management of view toolbars in the presentation API.
- * Presentation objects have no control over where the view toolbars are created in
- * the widget hierarchy, but they may wish to control the position of the view toolbars
- * using traditional SWT layouts and composites. 
- * </p>
- */
-public class ProxyControl {
-    
-    /**
-     * Invisible dummy control 
-     */
-	private Composite control;
-	
-	/**
-	 * Target control (possibly null)
-	 */
-    private Control target = null;
-    
-    /**
-     * Target cache (possibly null)
-     */
-    private SizeCache targetCache = null;
-    
-	/**
-	 * Most specific common ancestor between the target and the proxy controls
-	 */
-	private Control commonAncestor;
-	
-	/**
-	 * Visibility state of the proxy control the last time it had a non-null target.
-	 * Note: when the target is set to null, we force the proxy to become invisible
-	 * and use this variable to remember the initial state when we get a new non-null
-	 * target.
-	 */
-	private boolean visible = true;
-    
-	/**
-	 * Dispose listener. Breaks the link between the target and the proxy if either
-	 * control is disposed.
-	 */
-	private DisposeListener disposeListener = new DisposeListener() {
-		public void widgetDisposed(DisposeEvent e) {
-			if (e.widget == target || e.widget == control) {
-				setTargetControl(null);
-			}
-		}
-	};
-	
-	private Listener visibilityListener = new Listener() {
-
-        public void handleEvent(Event event) {
-            if (target != null) {
-                visible = control.getVisible();
-                target.setVisible(visible);
-            }
-        }
-	    
-	};
-	
-	/**
-	 * Allow the visibility of the proxy control to be updated. When the target
-	 * is not <code>null</code> it's visibility is tied to the listener. But
-	 * in the case where some action causes the target to be populated while
-	 * its visibility is <code>false</code>, it won't re-appear until its
-	 * visibility is set to <code>true</code>.
-	 * 
-	 * @param visible
-	 *            <code>true</code> - set it to visible
-	 * @since 3.2
-	 */
-	public void setVisible(boolean visible) {
-//		this.visible = visible;
-	}
-    
-	/**
-	 * Movement listener. Updates the bounds of the target to match the 
-	 * bounds of the dummy control.
-	 */
-	private ControlListener controlListener = new ControlListener() {
-
-		public void controlMoved(ControlEvent e) {
-			ProxyControl.this.layout();
-		}
-
-		public void controlResized(ControlEvent e) {
-		    //if (e.widget == control) {
-		     //   ProxyControl.this.layout();
-		    //}
-		}
-		
-	};
-	
-	/**
-	 * Creates a new ProxyControl as a child of the given parent. This is an invisible dummy
-	 * control. If given a target, the ProxyControl will update the bounds of the target to
-	 * match the bounds of the dummy control.
-	 * 
-	 * @param parent parent composite
-	 */
-	public ProxyControl(Composite parent) {
-	    // Create the invisible dummy composite
-		control = new Composite(parent, SWT.NO_BACKGROUND);
-		control.setVisible(false);
-		
-		// Attach a layout to the dummy composite. This is used to make the preferred
-		// size of the dummy match the preferred size of the target.
-		control.setLayout(new Layout() {
-			protected void layout (Composite composite, boolean flushCache) {
-			    ProxyControl.this.layout();
-			    // does nothing. The bounds of the target are updated by the controlListener
-			}
-			
-			protected Point computeSize (Composite composite, int wHint, int hHint, boolean flushCache) {
-				if (targetCache == null) {
-                    if (target != null) {
-                        return target.computeSize(wHint, hHint, flushCache);
-                    }
-				    // Note: If we returned (0,0), SWT would ignore the result and use a default value.
-					return new Point(1,1);
-				}
-                
-				return targetCache.computeSize(wHint, hHint);
-			}
-		});
-		
-		// Attach listeners to the dummy
-		control.addDisposeListener(disposeListener);
-		control.addListener(SWT.Show, visibilityListener);
-		control.addListener(SWT.Hide, visibilityListener);
-	}
-    
-    /**
-     * Sets the control whose position will be managed by this proxy
-     * 
-     * @param target the control, or null if none
-     */
-    public void setTargetControl(Control target) {
-        targetCache = null;
-        internalSetTargetControl(target);
-    }
-	
-	private void internalSetTargetControl(Control target) {
-		if (this.target != target) {
-
-		    if (this.target != null) {
-		        for (Control next = control; next != commonAncestor && next != null; next = next.getParent()) {
-		            next.removeControlListener(controlListener);
-		        }
-		        commonAncestor = null;
-		        
-			    // If we already had a target, detach the dispose listener 
-			    // (prevents memory leaks due to listeners)
-				if (!this.target.isDisposed()) {
-					this.target.removeDisposeListener(disposeListener);
-				}				
-		    }
-			
-			if (this.target == null && target != null) {
-			    // If we had previously forced the dummy control invisible, restore its visibility
-			    control.setVisible(visible);
-			}
-			
-			this.target = target;
-			
-			if (target != null) {
-			    commonAncestor = SwtUtil.findCommonAncestor(this.target, control);
-		        for (Control next = control; next != null && next != commonAncestor; next = next.getParent()) {
-		            next.addControlListener(controlListener);
-		        }
-			    
-			    // Make the new target's visiblity match the visibility of the dummy control
-			    target.setVisible(control.getVisible());
-				// Add a dispose listener. Ensures that the target is cleared
-				// if it is ever disposed.
-				target.addDisposeListener(disposeListener);
-			} else {
-			    control.setVisible(false);
-			}
-		}
-	}
-	
-    public void setTarget(SizeCache cache) {
-        targetCache = cache;
-        
-        if (targetCache != null) {
-            setTargetControl(cache.getControl());
-        } else {
-            setTargetControl(null);
-        }
-    }
-    
-	/**
-	 * Returns the proxy control
-	 * 
-	 * @return the proxy control (not null)
-	 */
-	public Control getControl() {
-		return control;
-	}
-	
-	public Control getTarget() {
-        return target;
-	}
-	
-	/**
-	 * Moves the target control on top of the dummy control.
-	 */
-	public void layout() {
-		if (getTarget() == null) {
-			return;
-		}
-		
-		// Compute the unclipped bounds of the target in display coordinates
-		Rectangle displayBounds = Geometry.toDisplay(control.getParent(), control.getBounds());
-		
-		// Clip the bounds of the target so that it doesn't go outside the dummy control's parent
-		Rectangle clippingRegion = DragUtil.getDisplayBounds(control.getParent());
-		displayBounds = displayBounds.intersection(clippingRegion);
-		
-		// Compute the bounds of the target, in the local coordinate system of its parent
-		Rectangle targetBounds = Geometry.toControl(getTarget().getParent(), displayBounds);
-		
-		// Move the target
-		getTarget().setBounds(targetBounds);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ReplaceDragHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ReplaceDragHandler.java
deleted file mode 100644
index f43fb1c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/ReplaceDragHandler.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.dnd.DragUtil;
-import org.eclipse.ui.presentations.StackDropResult;
-
-/**
- * @since 3.0
- */
-public class ReplaceDragHandler extends TabDragHandler {
-
-    private final class DragCookie {
-        int insertPosition;
-
-        public DragCookie(int pos) {
-            insertPosition = pos;
-        }
-    }
-
-    private AbstractTabFolder tabFolder;
-
-    public ReplaceDragHandler(AbstractTabFolder folder) {
-        this.tabFolder = folder;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabDragHandler#dragOver(org.eclipse.swt.widgets.Control, org.eclipse.swt.graphics.Point)
-     */
-    public StackDropResult dragOver(Control currentControl, Point location,
-            int dragStart) {
-
-        // Determine which tab we're currently dragging over
-        //Point localPos = tabFolder.getControl().toControl(location);
-
-        AbstractTabItem tabUnderPointer = tabFolder.getItem(location);
-
-        // This drop target only deals with tabs... if we're not dragging over
-        // a tab, exit.
-        if (tabUnderPointer == null) {
-            Rectangle titleArea = tabFolder.getTabArea();
-
-            // If we're dragging over the title area, treat this as a drop in the last
-            // tab position.
-            if (titleArea.contains(location) && tabFolder.getItemCount() > 0) {
-                int dragOverIndex = tabFolder.getItemCount();
-                AbstractTabItem lastTab = tabFolder.getItem(dragOverIndex - 1);
-
-                // Can't drag to end unless you can see the end
-                if (!lastTab.isShowing()) {
-                    return null;
-                }
-                
-                // If we are unable to compute the bounds for this tab, then ignore the drop
-                Rectangle lastTabBounds = lastTab.getBounds();
-                if (lastTabBounds.isEmpty()) {
-                    return null;
-                }
-
-                if (dragStart >= 0) {
-                    dragOverIndex--;
-
-                    return new StackDropResult(lastTabBounds, new Integer(
-                            dragOverIndex));
-                }
-
-                // Make the drag-over rectangle look like a tab at the end of the tab region.
-                // We don't actually know how wide the tab will be when it's dropped, so just
-                // make it 3 times wider than it is tall.
-                Rectangle dropRectangle = titleArea;
-
-                dropRectangle.x = lastTabBounds.x + lastTabBounds.width;
-                dropRectangle.width = 3 * dropRectangle.height;
-                return new StackDropResult(dropRectangle, new Integer(
-                        dragOverIndex));
-
-            } else {
-                // If the closest side is the side with the tabs, consider this a stack operation.
-                // Otherwise, let the drop fall through to whatever the default behavior is
-                Rectangle displayBounds = DragUtil.getDisplayBounds(tabFolder.getControl());
-                int closestSide = Geometry.getClosestSide(displayBounds, location);
-                if (closestSide == tabFolder.getTabPosition()) {
-                    return new StackDropResult(displayBounds, null);
-                }
-                
-                return null;
-            }
-        }
-
-        if (!tabUnderPointer.isShowing()) {
-            return null;
-        }
-        
-        Rectangle tabBounds = tabUnderPointer.getBounds();
-        
-        if (tabBounds.isEmpty()) {
-            return null;
-        }
-
-        return new StackDropResult(tabBounds, new DragCookie(tabFolder
-                .indexOf(tabUnderPointer)));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.TabDragHandler#getInsertionPosition(java.lang.Object)
-     */
-    public int getInsertionPosition(Object cookie) {
-        if (cookie instanceof DragCookie) {
-            return Math.min(tabFolder.getItemCount(),
-                    ((DragCookie) cookie).insertPosition);
-        }
-
-        return tabFolder.getItemCount();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardEditorSystemMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardEditorSystemMenu.java
deleted file mode 100644
index 204407b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardEditorSystemMenu.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.jface.action.Separator;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.presentations.SystemMenuCloseAll;
-import org.eclipse.ui.internal.presentations.SystemMenuCloseOthers;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * Implements the standard system menu used by the default presentation.
- * Not intended to be subclassed by clients
- * 
- * @since 3.1
- */
-public class StandardEditorSystemMenu extends StandardViewSystemMenu {
-
-    private SystemMenuCloseOthers closeOthers;
-    private SystemMenuCloseAll closeAll;
-    private ActionFactory.IWorkbenchAction openAgain;
-    
-    /**
-     * @param site
-     */
-    public StandardEditorSystemMenu(IStackPresentationSite site) {
-        super(site);
-        
-        closeOthers = new SystemMenuCloseOthers(site);
-        closeAll = new SystemMenuCloseAll(site);
-		openAgain = ActionFactory.NEW_EDITOR.create(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
-        menuManager.add(closeOthers);
-        menuManager.add(closeAll);
-		menuManager.add(new Separator());
-		menuManager.add(openAgain);
-    }
-
-    String getMoveMenuText() {
-    	return WorkbenchMessages.EditorPane_moveEditor;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse.swt.widgets.Control, org.eclipse.swt.graphics.Point, org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void show(Control parent, Point displayCoordinates,
-            IPresentablePart currentSelection) {
-        closeOthers.setTarget(currentSelection);
-        closeAll.update();
-        super.show(parent, displayCoordinates, currentSelection);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.StandardViewSystemMenu#dispose()
-     */
-    public void dispose() {
-    	openAgain.dispose();
-    	super.dispose();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardSystemToolbar.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardSystemToolbar.java
deleted file mode 100644
index adbb5e2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardSystemToolbar.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.1
- */
-public class StandardSystemToolbar extends EventManager {
-    private ToolBarManager toolbarManager;
-    private Composite control;
-    
-    private class SystemMenuContribution extends ContributionItem {
-    	ToolItem item;
-    	Image img;
-    	String text;
-    	int flags;
-    	
-    	public SystemMenuContribution() {
-    		this(SWT.PUSH);
-    	}
-    	
-    	public SystemMenuContribution(int flags) {
-    		this.flags = flags;
-    	}
-    	
-    	public void setToolTipText(String text) {
-    		this.text = text;
-    		if (item != null) {
-    			item.setToolTipText(text);
-    		}
-    	}
-    	
-    	public void setImage(Image img) {
-    		this.img = img;
-    		
-    		if (item != null) {
-    			item.setImage(img);
-    		}
-    	}
-    	
-    	/* (non-Javadoc)
-		 * @see org.eclipse.jface.action.ContributionItem#setVisible(boolean)
-		 */
-		public void setVisible(boolean visible) {
-			if (visible != isVisible()) {
-				toolbarManager.markDirty();
-			}
-			
-			super.setVisible(visible);
-		}
-    	
-    	/* (non-Javadoc)
-		 * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.ToolBar, int)
-		 */
-		public void fill(ToolBar parent, int index) {
-			if (!isVisible()) {
-				return;
-			}
-			
-			item = new ToolItem(parent, flags, index);
-			if (img != null) {
-				item.setImage(img);
-			}
-			if (text != null) {
-				item.setToolTipText(text);
-			}
-			item.addSelectionListener(selectionListener);
-		}
-    }
-    
-    private class PaneMenu extends SystemMenuContribution {
-    	
-    	public PaneMenu() {
-    		super(SWT.NONE);
-    	}
-    	    	
-     	public void setToolTipText(String text) {
-     		super.setToolTipText(text);
-    	}
-    	
-    	public void setImage(Image img) {
-    		
-    		super.setImage(img);
-    	}
-    	
-    	/* (non-Javadoc)
-		 * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.ToolBar, int)
-		 */
-		public void fill(ToolBar parent, int index) {
-			if (!isVisible()) {
-				return;
-			}
-			super.fill(parent, index);
-		}
-    }
-    
-    
-    private MouseListener mouseListener = new MouseAdapter() {
-    	/* (non-Javadoc)
-		 * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent)
-		 */
-		public void mouseDown(MouseEvent e) {
-			ToolItem item = toolbarManager.getControl().getItem(new Point(e.x, e.y));
-			
-    		if (item == paneMenu.item && e.button == 1) {
-    			fireEvent(TabFolderEvent.EVENT_PANE_MENU);
-    		}
-		}
-    };
-    
-    private SystemMenuContribution paneMenu = new PaneMenu();
-    private SystemMenuContribution showToolbar = new SystemMenuContribution();
-    private SystemMenuContribution min = new SystemMenuContribution();
-    private SystemMenuContribution max = new SystemMenuContribution();
-    private SystemMenuContribution close = new SystemMenuContribution();
-    
-    private int state = IStackPresentationSite.STATE_RESTORED;
-    private boolean showingToolbar = true;
-    
-    private SelectionAdapter selectionListener = new SelectionAdapter() {
-		public void widgetSelected(SelectionEvent e) {
-			if (e.widget == paneMenu.item) {
-			    //fireEvent(TabFolderEvent.EVENT_PANE_MENU);
-			} else if (e.widget == showToolbar.item) {
-			    if (showingToolbar) {
-			        fireEvent(TabFolderEvent.EVENT_HIDE_TOOLBAR);
-			    } else {
-			        fireEvent(TabFolderEvent.EVENT_SHOW_TOOLBAR);
-			    }
-			} else if (e.widget == min.item) {
-			    if (state == IStackPresentationSite.STATE_MINIMIZED) {
-			        fireEvent(TabFolderEvent.EVENT_RESTORE);
-			    } else {
-			        fireEvent(TabFolderEvent.EVENT_MINIMIZE);
-			    }
-			} else if (e.widget == max.item) {
-			    if (state == IStackPresentationSite.STATE_MAXIMIZED) {
-			        fireEvent(TabFolderEvent.EVENT_RESTORE);
-			    } else {
-			        fireEvent(TabFolderEvent.EVENT_MAXIMIZE);
-			    }			    
-			} else if (e.widget == close.item) {
-			    fireEvent(TabFolderEvent.EVENT_CLOSE);
-			}
-		}
-    };
-    
-    public StandardSystemToolbar(Composite parent, boolean showPaneMenu, 
-            boolean showHideToolbar, boolean showMinimize, boolean showMaximize, boolean enableClose) {
-        
-        control = new Composite(parent, SWT.NONE);
-        control.setLayout(new EnhancedFillLayout());
-        
-        toolbarManager = new ToolBarManager(SWT.FLAT);
-        toolbarManager.createControl(control);
-        toolbarManager.getControl().addMouseListener(mouseListener);
-        
-        toolbarManager.add(paneMenu);
-        paneMenu.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU_THIN));
-        paneMenu.setVisible(showPaneMenu);
-        paneMenu.setToolTipText(WorkbenchMessages.Menu); 
-
-        toolbarManager.add(showToolbar);
-        showToolbar.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_HIDE_TOOLBAR_THIN));
-        showToolbar.setVisible(showHideToolbar);
-
-        toolbarManager.add(min);
-        min.setVisible(showMinimize);
-
-        toolbarManager.add(max);
-        max.setVisible(showMaximize);
-
-        toolbarManager.add(close);
-        close.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_CLOSE_VIEW_THIN));
-        close.setVisible(enableClose);
-        
-        setState(IStackPresentationSite.STATE_RESTORED);
-        
-        toolbarManager.update(true);
-    }
-    
-    public Point getPaneMenuLocation() {
-        
-        Rectangle bounds = Geometry.toDisplay(paneMenu.item.getParent(), paneMenu.item.getBounds());
-        return new Point(bounds.x, bounds.y + bounds.height);
-    }
-    
-    public void enableClose(boolean enabled) {
-    	close.setVisible(enabled);
-    	toolbarManager.update(false);
-    }
-    
-    public void enableMinimize(boolean enabled) {
-    	min.setVisible(enabled);
-    	toolbarManager.update(false);
-    }
-    
-    public void enableMaximize(boolean enabled) {
-    	max.setVisible(enabled);
-    	toolbarManager.update(false);
-    }
-    
-   public void enableShowToolbar(boolean enabled) {
-   		showToolbar.setVisible(enabled);
-   		toolbarManager.update(false);
-    }
-    
-    public void enablePaneMenu(boolean enabled) {
-    	paneMenu.setVisible(enabled);
-    	toolbarManager.update(false);
-    }
-    
-    /**
-     * Updates the icons on the state buttons to match the given state
-     * @param newState
-     * @since 3.1
-     */
-    public void setState(int newState) {
-        if (min != null) {
-            if (newState == IStackPresentationSite.STATE_MINIMIZED) {
-            	min.setToolTipText(WorkbenchMessages.StandardSystemToolbar_Restore);
-                min.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_RESTORE_VIEW_THIN));
-            } else {
-            	min.setToolTipText(WorkbenchMessages.StandardSystemToolbar_Minimize); 
-                min.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_MIN_VIEW_THIN));
-            }
-        }
-        if (max != null) {
-            if (newState == IStackPresentationSite.STATE_MAXIMIZED) {
-            	max.setToolTipText(WorkbenchMessages.StandardSystemToolbar_Restore);
-                max.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_RESTORE_VIEW_THIN));
-            } else {
-            	max.setToolTipText(WorkbenchMessages.StandardSystemToolbar_Maximize);
-                max.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_MAX_VIEW_THIN));
-            }
-        }
-        
-        state = newState;
-    }
-    
-    public void setToolbarShowing(boolean isShowing) {
-        showingToolbar = isShowing;
-        if (showToolbar != null) {
-            if (isShowing) {
-                showToolbar.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_HIDE_TOOLBAR_THIN));
-            } else {
-                showToolbar.setImage(WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_LCL_SHOW_TOOLBAR_THIN));
-            }
-        } 
-    }
-    
-    public void addListener(IPropertyListener propertyListener) {
-        addListenerObject(propertyListener);
-    }
-    
-    public void removeListener(IPropertyListener propertyListener) {
-        removeListenerObject(propertyListener);
-    }
-    
-    public Control getControl() {
-        return control;
-    }
-    
-    private void fireEvent(int event) {
-        Object[] list = getListeners();
-        
-        for (int i = 0; i < list.length; i++) {
-            IPropertyListener listener = (IPropertyListener)list[i];
-            
-            listener.propertyChanged(this, event);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardViewSystemMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardViewSystemMenu.java
deleted file mode 100644
index 49140ea..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/StandardViewSystemMenu.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.presentations.SystemMenuClose;
-import org.eclipse.ui.internal.presentations.SystemMenuMaximize;
-import org.eclipse.ui.internal.presentations.SystemMenuMinimize;
-import org.eclipse.ui.internal.presentations.SystemMenuMove;
-import org.eclipse.ui.internal.presentations.SystemMenuRestore;
-import org.eclipse.ui.internal.presentations.UpdatingActionContributionItem;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * Implements the system context menu that is used by the default presentation. Not 
- * intended to be subclassed by clients.
- * 
- * @since 3.1
- */
-public class StandardViewSystemMenu implements ISystemMenu {
-
-    /* package */ MenuManager menuManager = new MenuManager();
-    private SystemMenuRestore restore;
-    private SystemMenuMove move; 
-    private SystemMenuMinimize minimize;
-    private SystemMenuMaximize maximize;
-    private SystemMenuClose close;
-    
-    /**
-     * Create the standard view menu
-     * 
-     * @param site the site to associate the view with
-     */
-    public StandardViewSystemMenu(IStackPresentationSite site) {
-        restore = new SystemMenuRestore(site);
-        move = new SystemMenuMove(site, getMoveMenuText(), false);
-        minimize = new SystemMenuMinimize(site);
-        maximize = new SystemMenuMaximize(site);
-        close = new SystemMenuClose(site);
-        
-        { // Initialize system menu
-            menuManager.add(new GroupMarker("misc")); //$NON-NLS-1$
-            menuManager.add(new GroupMarker("restore")); //$NON-NLS-1$
-            menuManager.add(new UpdatingActionContributionItem(restore));
-
-            menuManager.add(move);
-            menuManager.add(new GroupMarker("size")); //$NON-NLS-1$
-            menuManager.add(new GroupMarker("state")); //$NON-NLS-1$
-            menuManager.add(new UpdatingActionContributionItem(minimize));
-
-            menuManager.add(new UpdatingActionContributionItem(maximize));
-            menuManager.add(new Separator("close")); //$NON-NLS-1$
-            menuManager.add(close);
-
-            site.addSystemActions(menuManager);
-        } // End of system menu initialization
-
-    }
-
-    String getMoveMenuText() {
-    	return WorkbenchMessages.ViewPane_moveView;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse.swt.graphics.Point, org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void show(Control parent, Point displayCoordinates, IPresentablePart currentSelection) {
-        restore.update();
-        move.setTarget(currentSelection);
-        move.update();
-        minimize.update();
-        maximize.update();
-        close.setTarget(currentSelection);
-        
-        Menu aMenu = menuManager.createContextMenu(parent);
-        menuManager.update(true);
-        aMenu.setLocation(displayCoordinates.x, displayCoordinates.y);
-        aMenu.setVisible(true);
-    }
-    
-    /**
-     * Dispose resources associated with this menu
-     */
-    public void dispose() {
-        menuManager.dispose();
-        menuManager.removeAll();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabDragHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabDragHandler.java
deleted file mode 100644
index 9d29445..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabDragHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.presentations.StackDropResult;
-
-/**
- * @since 3.0
- */
-public abstract class TabDragHandler {
-
-    /**
-     * Returns the StackDropResult for the location being dragged over.
-     * 
-     * @param currentControl control being dragged over
-     * @param location mouse position (display coordinates)
-     * @param initialTab the index of the tab in this stack being dragged, 
-     * 			or -1 if dragging a tab from another stack. 
-     * @return the StackDropResult for this drag location
-     */
-    public abstract StackDropResult dragOver(Control currentControl,
-            Point location, int initialTab);
-
-    public abstract int getInsertionPosition(Object cookie);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderEvent.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderEvent.java
deleted file mode 100644
index 936e929..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderEvent.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-
-/**
- * @since 3.1
- */
-public class TabFolderEvent {
-    public static final int EVENT_PANE_MENU = 1;
-    public static final int EVENT_HIDE_TOOLBAR = 2;
-    public static final int EVENT_SHOW_TOOLBAR = 3;
-    public static final int EVENT_RESTORE = 4;
-    public static final int EVENT_MINIMIZE = 5;
-    public static final int EVENT_CLOSE = 6;
-    public static final int EVENT_MAXIMIZE = 7;
-    public static final int EVENT_TAB_SELECTED = 8;
-    public static final int EVENT_GIVE_FOCUS_TO_PART = 9;
-    public static final int EVENT_DRAG_START = 10;
-    public static final int EVENT_SHOW_LIST = 11;
-    public static final int EVENT_SYSTEM_MENU = 12;
-    public static final int EVENT_PREFERRED_SIZE = 13;
-    
-    public static int eventIdToStackState(int eventId) {
-        switch(eventId) {
-        	case EVENT_RESTORE: return IStackPresentationSite.STATE_RESTORED;
-        	case EVENT_MINIMIZE: return IStackPresentationSite.STATE_MINIMIZED;
-        	case EVENT_MAXIMIZE: return IStackPresentationSite.STATE_MAXIMIZED;
-        }
-        
-        return 0;
-    }
-    
-    public static int stackStateToEventId(int stackState) {
-        switch(stackState) {
-	    	case IStackPresentationSite.STATE_RESTORED: return EVENT_RESTORE;
-	    	case IStackPresentationSite.STATE_MINIMIZED: return EVENT_MINIMIZE;
-	    	case IStackPresentationSite.STATE_MAXIMIZED: return EVENT_MAXIMIZE;
-        }
-    
-        return 0;        
-    }
-    
-    public AbstractTabItem tab;
-    public int type;
-    public int x;
-    public int y;
-    
-    public TabFolderEvent(int type) {
-        this.type = type;
-    }
-    
-    public TabFolderEvent(int type, AbstractTabItem w, int x, int y) {
-        this.type = type;
-        this.tab = w;
-        this.x = x;
-        this.y = y;
-    }
-    
-    public TabFolderEvent(int type, AbstractTabItem w, Point pos) {
-        this.type = type;
-        this.tab = w;
-        this.x = pos.x;
-        this.y = pos.y;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderListener.java
deleted file mode 100644
index d62ff522..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabFolderListener.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-/**
- * @since 3.1
- */
-public abstract class TabFolderListener {
-    public abstract void handleEvent(TabFolderEvent e);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabOrder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabOrder.java
deleted file mode 100644
index 4aa2b32..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabOrder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IPresentationSerializer;
-
-/**
- * @since 3.0
- */
-public abstract class TabOrder {
-    /**
-     * Adds a part due to a user action that opened a part
-     * 
-     * @param newPart part being added 
-     */
-    public abstract void add(IPresentablePart newPart);
-
-    /**
-     * Adds a part at initialization-time (the part was added as
-     * part of a perspective, rather than by a user action)
-     * 
-     * @param newPart the part being added
-     */
-    public abstract void addInitial(IPresentablePart newPart);
-
-    public abstract void restoreState(IPresentationSerializer serializer,
-            IMemento savedState);
-    
-    public abstract void saveState(IPresentationSerializer serializer, IMemento memento);
-    
-    /**
-     * Adds a part at a particular index due to a drag/drop operation. 
-     * 
-     * @param added part being added
-     * @param index index where the part is added at
-     */
-    public abstract void insert(IPresentablePart added, int index);
-
-    public abstract void move(IPresentablePart toMove, int newIndex);
-    
-    /**
-     * Removes a part
-     * 
-     * @param removed part being removed
-     */
-    public abstract void remove(IPresentablePart removed);
-
-    /**
-     * Selects a part
-     * 
-     * @param selected part being selected
-     */
-    public abstract void select(IPresentablePart selected);
-    
-    public abstract IPresentablePart[] getPartList();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabbedStackPresentation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabbedStackPresentation.java
deleted file mode 100644
index 416404d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/TabbedStackPresentation.java
+++ /dev/null
@@ -1,597 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM - bug 51580
- *     Chris Torrence, ITT Visual Information Solutions - bugs 51580 202208
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.preferences.IDynamicPropertyMap;
-import org.eclipse.ui.internal.preferences.PreferenceStoreAdapter;
-import org.eclipse.ui.internal.preferences.PreferencesAdapter;
-import org.eclipse.ui.internal.preferences.PropertyMapAdapter;
-import org.eclipse.ui.internal.preferences.ThemeManagerAdapter;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultPartList;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.presentations.IPartMenu;
-import org.eclipse.ui.presentations.IPresentablePart;
-import org.eclipse.ui.presentations.IPresentationSerializer;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.presentations.StackDropResult;
-import org.eclipse.ui.presentations.StackPresentation;
-
-/**
- * @since 3.0
- */
-public final class TabbedStackPresentation extends StackPresentation {
-
-    private PresentablePartFolder folder;
-    private ISystemMenu systemMenu;
-    private ISystemMenu partList;
-    private PreferenceStoreAdapter apiPreferences = new PreferenceStoreAdapter(PrefUtil
-            .getAPIPreferenceStore());
-    private ThemeManagerAdapter themePreferences = new ThemeManagerAdapter(
-            PlatformUI.getWorkbench().getThemeManager());
-    
-    private TabOrder tabs;
-
-    private TabDragHandler dragBehavior;
-
-    private boolean initializing = true;
-    private int ignoreSelectionChanges = 0;
-    
-    private TabFolderListener tabFolderListener = new TabFolderListener() {
-        public void handleEvent(TabFolderEvent e) {
-            switch (e.type) {
-             	case TabFolderEvent.EVENT_MINIMIZE: {
-             	    getSite().setState(IStackPresentationSite.STATE_MINIMIZED);
-             		break;
-             	}
-             	case TabFolderEvent.EVENT_MAXIMIZE: {
-             	    getSite().setState(IStackPresentationSite.STATE_MAXIMIZED);
-             		break;
-             	}
-             	case TabFolderEvent.EVENT_RESTORE: {
-             	    getSite().setState(IStackPresentationSite.STATE_RESTORED);
-             		break;
-             	}
-             	case TabFolderEvent.EVENT_CLOSE: {
-                    IPresentablePart part = folder.getPartForTab(e.tab);
-
-             		if (part != null) {
-             		    getSite().close(new IPresentablePart[] { part });
-             		}
-             		break;
-             	}
-             	case TabFolderEvent.EVENT_SHOW_LIST: {
-             	    showPartList();
-             	    break;
-             	}
-             	case TabFolderEvent.EVENT_GIVE_FOCUS_TO_PART: { 
-                    IPresentablePart part = getSite().getSelectedPart();
-             		if (part != null) {
-             		    part.setFocus();
-             		}
-             		break;
-             	}
-             	case TabFolderEvent.EVENT_PANE_MENU: {
-                    IPresentablePart part = getSite().getSelectedPart();
-             		if (part != null) {
-             		    part.setFocus();
-             		}
-             		TabbedStackPresentation.this.showPaneMenu(folder
-             				.getPartForTab(e.tab), new Point(e.x, e.y));
-             		break;
-             	}
-             	case TabFolderEvent.EVENT_DRAG_START: {
-             	    AbstractTabItem beingDragged = e.tab;
-             	    Point initialLocation = new Point(e.x, e.y);
-             	    
-                    if (beingDragged == null) {
-                        getSite().dragStart(initialLocation, false);
-                    } else {
-                        IPresentablePart part = folder.getPartForTab(beingDragged);
-                        
-                        try {
-                            dragStart = folder.indexOf(part);
-                            getSite().dragStart(part, initialLocation, false);                    
-                        } finally {
-                            dragStart = -1;
-                        }
-                    }
-                    break;
-             	}
-             	case TabFolderEvent.EVENT_TAB_SELECTED: {
-                    if (ignoreSelectionChanges > 0) {
-                        return;
-                    }
-                    
-                    IPresentablePart part = folder.getPartForTab(e.tab);
-                    
-                    if (part != null) {
-                        getSite().selectPart(part);
-                    }
-             	    break;
-             	}
-             	case TabFolderEvent.EVENT_SYSTEM_MENU: {
-                    IPresentablePart part = folder.getPartForTab(e.tab);
-                    
-                    if (part == null) {
-                        part = getSite().getSelectedPart();
-                    }
-                    
-                    if (part != null) {
-                        showSystemMenu(new Point(e.x, e.y), part);
-                    }
-             	    break;
-             	}
-             	case TabFolderEvent.EVENT_PREFERRED_SIZE: {
-             	    IPresentablePart part = folder.getPartForTab(e.tab);             	       
-             	    if (part == null) {
-             	        // Standalone views with no title have no tab, so just get the part.
-             	        IPresentablePart[] parts = getSite().getPartList();
-             	        if (parts.length > 0) part = parts[0];
-             	    }
-             	    if (part == getSite().getSelectedPart()) {
-             	        getSite().flushLayout();
-             	    }
-             	    break;
-             	}
-            }
-        }
-    };
-
-    private int dragStart = -1;
-    private Map prefs = new HashMap();
-    
-    public TabbedStackPresentation(IStackPresentationSite site, AbstractTabFolder widget, ISystemMenu systemMenu) {
-        this(site, new PresentablePartFolder(widget), systemMenu);
-    }
-    
-    public TabbedStackPresentation(IStackPresentationSite site, PresentablePartFolder folder, ISystemMenu systemMenu) {
-        this(site, folder, new LeftToRightTabOrder(folder), new ReplaceDragHandler(folder.getTabFolder()), systemMenu);
-    }
-    
-    public TabbedStackPresentation(IStackPresentationSite site,
-            PresentablePartFolder newFolder, TabOrder tabs, TabDragHandler dragBehavior, ISystemMenu systemMenu) {
-        super(site);
-        this.systemMenu = systemMenu;
-        
-        this.folder = newFolder;
-        this.tabs = tabs;
-        this.dragBehavior = dragBehavior;
-
-        // Add a dispose listener. This will call the presentationDisposed()
-        // method when the widget is destroyed.
-        folder.getTabFolder().getControl().addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                presentationDisposed();
-            }
-        });
-
-        folder.getTabFolder().addListener(tabFolderListener);
-        
-        this.partList = new DefaultPartList(site, newFolder);
-    }
-    
-    /**
-     * Restores a presentation from a previously stored state
-     * 
-     * @param serializer (not null)
-     * @param savedState (not null)
-     */
-    public void restoreState(IPresentationSerializer serializer,
-            IMemento savedState) {
-        tabs.restoreState(serializer, savedState);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#saveState(org.eclipse.ui.presentations.IPresentationSerializer, org.eclipse.ui.IMemento)
-     */
-    public void saveState(IPresentationSerializer context, IMemento memento) {
-        super.saveState(context, memento);
-
-        tabs.saveState(context, memento);
-    }
-    
-    /**
-     * Returns true iff the presentation has been disposed
-     * 
-     * @return true iff the presentation has been disposed
-     */
-    private boolean isDisposed() {
-        return folder == null || folder.isDisposed();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#setBounds(org.eclipse.swt.graphics.Rectangle)
-     */
-    public void setBounds(Rectangle bounds) {
-        folder.setBounds(bounds);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#computeMinimumSize()
-     */
-    public Point computeMinimumSize() {
-        return folder.getTabFolder().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-    }
-
-    /**
-     * Returns the minimum size for this stack, taking into account
-     * the available perpendicular space.
-     * @param width indicates whether a width (=true) or a height (=false) is being computed
-     * @param availablePerpendicular available space perpendicular to the direction being measured
-     * or INFINITE if unbounded (pixels).
-     * @return returns the preferred minimum size (pixels).
-     * This is a width if width == true or a height if width == false.  
-     */
-    private int computePreferredMinimumSize(boolean width, int availablePerpendicular) {
-        int minSize;
-        int hint = availablePerpendicular == INFINITE ? SWT.DEFAULT : availablePerpendicular;
-        if (width) {
-            minSize = folder.getTabFolder().computeSize(SWT.DEFAULT, hint).x;
-        } else {
-            minSize = folder.getTabFolder().computeSize(hint, SWT.DEFAULT).y;
-        }
-        return minSize;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.ISizeProvider#computePreferredSize(boolean, int, int, int)
-     */
-    public int computePreferredSize(boolean width, int availableParallel,
-            int availablePerpendicular, int preferredResult) {
-
-        // If there is exactly one part in the stack, this just returns the
-        // preferred size of the part as the preferred size of the stack.
-        IPresentablePart[] parts = getSite().getPartList();
-        if (parts.length == 1 && parts[0] != null 
-        		&& !(getSite().getState() == IStackPresentationSite.STATE_MINIMIZED)) {
-            int partSize = parts[0].computePreferredSize(width,
-                    availableParallel, availablePerpendicular, preferredResult);
-
-            if (partSize == INFINITE)
-            	return partSize;
-            
-            // Adjust preferred size to take into account tab and border trim.
-            int minSize = computePreferredMinimumSize(width, availablePerpendicular);
-            if (width) {
-                // PaneFolder adds some bogus tab spacing, so just find the maximum width.
-                partSize = Math.max(minSize, partSize);
-            } else {
-            	// Add them (but only if there's enough room)
-            	if (INFINITE-minSize > partSize)
-            		partSize += minSize;
-            }
-
-            return partSize;
-        }    
-
-        if (preferredResult != INFINITE || getSite().getState() == IStackPresentationSite.STATE_MINIMIZED) {
-            int minSize = computePreferredMinimumSize(width, availablePerpendicular);
-	        
-	        if (getSite().getState() == IStackPresentationSite.STATE_MINIMIZED) {
-	            return minSize;
-	        }
-	        
-	        return Math.max(minSize, preferredResult);
-        }
-        
-        return INFINITE;
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#getSizeFlags(boolean)
-     */
-    public int getSizeFlags(boolean width) {
-        int flags = 0;
-        // If there is exactly one part in the stack,
-        // then take into account the size flags of the part.
-        IPresentablePart[] parts = getSite().getPartList();
-        if (parts.length == 1 && parts[0] != null) {
-            flags |= parts[0].getSizeFlags(width);
-        }
-
-        return flags | super.getSizeFlags(width);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#showPartList()
-     */
-    public void showPartList() {
-        if (partList != null) {
-            final int numberOfParts = folder.getTabFolder().getItemCount();
-            if (numberOfParts > 0) {
-                partList.show(getControl(), folder.getTabFolder()
-                        .getPartListLocation(), getSite().getSelectedPart());
-            }
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#dispose()
-     */
-    public void dispose() {
-        // Dispose the tab folder's widgetry
-        folder.getTabFolder().getControl().dispose();
-    }
-
-    /**
-     * Called when the tab folder is disposed.
-     */
-    private void presentationDisposed() {
-        apiPreferences.dispose();
-        themePreferences.dispose();
-        
-        Iterator iter = prefs.values().iterator();
-        while(iter.hasNext()) {
-            PropertyMapAdapter next = (PropertyMapAdapter)iter.next();
-            next.dispose();
-        }
-
-        if (systemMenu != null) {
-            systemMenu.dispose();
-        }
-
-        if (partList != null) {
-            partList.dispose();
-        }
-
-        systemMenu = null;
-        partList = null;
-        
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#setActive(int)
-     */
-    public void setActive(int newState) {
-        folder.getTabFolder().setActive(newState);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#setVisible(boolean)
-     */
-    public void setVisible(boolean isVisible) {
-        IPresentablePart current = getSite().getSelectedPart();
-        if (current != null) {
-            current.setVisible(isVisible);
-        }
-
-        folder.setVisible(isVisible);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#setState(int)
-     */
-    public void setState(int state) {
-        folder.getTabFolder().setState(state);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#getControl()
-     */
-    public Control getControl() {
-        return folder.getTabFolder().getControl();
-    }
-
-    /**
-     * @return AbstractTabFolder the presentation's tab folder
-     */
-    public AbstractTabFolder getTabFolder() {
-        return folder.getTabFolder();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#addPart(org.eclipse.ui.presentations.IPresentablePart, java.lang.Object)
-     */
-    public void addPart(IPresentablePart newPart, Object cookie) {
-        ignoreSelectionChanges++;
-        try {
-	        if (initializing) {
-	            tabs.addInitial(newPart);
-	        } else {
-	            if (cookie == null) {
-	                tabs.add(newPart);
-	            } else {
-	                int insertionPoint = dragBehavior
-	                        .getInsertionPosition(cookie);
-	
-	                tabs.insert(newPart, insertionPoint);
-	            }
-	        }
-        } finally {
-            ignoreSelectionChanges--;
-        }
-
-        if (tabs.getPartList().length == 1) {
-            if (newPart.getSizeFlags(true) != 0 || newPart.getSizeFlags(false) != 0) {
-                getSite().flushLayout();
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#movePart(org.eclipse.ui.presentations.IPresentablePart, java.lang.Object)
-     */
-    public void movePart(IPresentablePart toMove, Object cookie) {
-        ignoreSelectionChanges++;
-        try {
-	        int insertionPoint = dragBehavior.getInsertionPosition(cookie);
-	        
-	        if (insertionPoint == folder.indexOf(toMove)) {
-	            return;
-	        }
-	        
-	        tabs.move(toMove, insertionPoint);
-        } finally {
-            ignoreSelectionChanges--;
-        }
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#removePart(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void removePart(IPresentablePart oldPart) {
-        ignoreSelectionChanges++;
-        try {
-            tabs.remove(oldPart);
-        } finally {
-            ignoreSelectionChanges--;
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#selectPart(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public void selectPart(IPresentablePart toSelect) {
-        initializing = false;
-
-        tabs.select(toSelect);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#dragOver(org.eclipse.swt.widgets.Control, org.eclipse.swt.graphics.Point)
-     */
-    public StackDropResult dragOver(Control currentControl, Point location) {
-        return dragBehavior.dragOver(currentControl, location, dragStart);
-    }
-
-    public void showSystemMenu() {
-        showSystemMenu(folder.getTabFolder().getSystemMenuLocation(), getSite().getSelectedPart());
-    }
-    
-    public void showSystemMenu(Point displayCoordinates, IPresentablePart context) {
-        if (context != getSite().getSelectedPart()) {
-            getSite().selectPart(context);
-        }
-        systemMenu.show(getControl(), displayCoordinates, context);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#showPaneMenu()
-     */
-    public void showPaneMenu() {
-        IPresentablePart part = getSite().getSelectedPart();
-        
-        if (part != null) {
-            showPaneMenu(part, folder.getTabFolder().getPaneMenuLocation());
-        }
-    }
-        
-    public void showPaneMenu(IPresentablePart part, Point location) {
-        Assert.isTrue(!isDisposed());
-        
-        IPartMenu menu = part.getMenu();
-
-        if (menu != null) {
-            menu.showMenu(location);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.presentations.StackPresentation#getTabList(org.eclipse.ui.presentations.IPresentablePart)
-     */
-    public Control[] getTabList(IPresentablePart part) {
-        ArrayList list = new ArrayList();
-        if (folder.getTabFolder().getTabPosition() == SWT.BOTTOM) {
-            if (part.getControl() != null) {
-				list.add(part.getControl());
-			}
-        }
-
-        list.add(folder.getTabFolder().getControl());
-        
-        if (part.getToolBar() != null) {
-            list.add(part.getToolBar());
-        }
-        
-        if (folder.getTabFolder().getTabPosition() == SWT.TOP) {
-            if (part.getControl() != null) {
-				list.add(part.getControl());
-			}
-        }
-
-        return (Control[]) list.toArray(new Control[list.size()]);
-    }
-
-    public void setPartList(ISystemMenu menu) {
-        this.partList = menu;
-    }
-    
-    public IDynamicPropertyMap getTheme() {
-        return themePreferences;
-    }
-    
-    public IDynamicPropertyMap getApiPreferences() {
-        return apiPreferences;
-    }
-    
-    public IDynamicPropertyMap getPluginPreferences(Plugin toQuery) {
-        String id = toQuery.getBundle().getSymbolicName();
-        IDynamicPropertyMap result = (IDynamicPropertyMap)prefs.get(id);
-        
-        if (result != null) {
-            return result;
-        }
-        
-        result = new PreferencesAdapter(toQuery.getPluginPreferences());
-        prefs.put(id, result);
-        return result;
-    }
-    
-    /**
-     * Move the tabs around.  This is for testing <b>ONLY</b>.
-     * @param part the part to move
-     * @param index the new index
-     * @since 3.2
-     */
-    public void moveTab(IPresentablePart part, int index) {
-    	tabs.move(part, index);
-    	folder.layout(true);
-    }
-    
-    /**
-     * Get the tab list. This is for testing <b>ONLY</b>.
-     * @return the presentable parts in order.
-     * @since 3.2
-     */
-    public IPresentablePart[] getPartList() {
-    	return tabs.getPartList();
-    }
-
-	/**
-	 * Cause the folder to hide or show its
-	 * Minimize and Maximize affordances.
-	 * 
-	 * @param show
-	 *            <code>true</code> - the min/max buttons are visible.
-	 * @since 3.3
-	 */
-	public void showMinMax(boolean show) {
-        folder.getTabFolder().showMinMax(show);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/WidgetTabItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/WidgetTabItem.java
deleted file mode 100644
index 8bf63a2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/util/WidgetTabItem.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.presentations.util;
-
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * @since 3.1
- */
-public abstract class WidgetTabItem extends AbstractTabItem {
-
-    private Object data;
-    private Widget widget;
-    
-    public WidgetTabItem(Widget theWidget) {
-        this.widget = theWidget;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#dispose()
-     */
-    public void dispose() {
-        widget.dispose();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#getData()
-     */
-    public Object getData() {
-        return data;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.presentations.util.AbstractTabItem#setData(java.lang.Object)
-     */
-    public void setData(Object data) {
-        this.data = data;
-    }
-
-    public Widget getWidget() {
-        return widget;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AbstractProgressViewer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AbstractProgressViewer.java
deleted file mode 100644
index 430bdc5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AbstractProgressViewer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.jface.viewers.StructuredViewer;
-
-/**
- * The AbstractProgressViewer is the abstract superclass of the viewers that
- * show progress.
- * 
- */
-public abstract class AbstractProgressViewer extends StructuredViewer {
-
-	/**
-	 * Add the elements to the receiver.
-	 * @param elements
-	 */
-	public abstract void add(Object[] elements);
-
-	/**
-	 * Remove the elements from the receiver.
-	 * @param elements
-	 */
-	public abstract void remove(Object[] elements);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java
deleted file mode 100644
index bf19fc71..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.WorkbenchWindow;
-
-/**
- * The AnimationItem is the class that manages the animation for the progress.
- */
-public abstract class AnimationItem {
-    WorkbenchWindow window;
-
-    interface IAnimationContainer {
-        /**
-         * The animation has started. 
-         */
-        public abstract void animationStart();
-
-        /**
-         * The animation has ended. 
-         */
-        public abstract void animationDone();
-    }
-
-    //Create a containter that does nothing by default
-    IAnimationContainer animationContainer = new IAnimationContainer() {
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.progress.AnimationItem.IAnimationContainer#animationDone()
-         */
-        public void animationDone() {
-            //Do nothing by default
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.internal.progress.AnimationItem.IAnimationContainer#animationStart()
-         */
-        public void animationStart() {
-            //Do nothing by default
-        }
-    };
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param workbenchWindow
-     *            the window being created
-     */
-    public AnimationItem(WorkbenchWindow workbenchWindow) {
-        this.window = workbenchWindow;
-    }
-
-    /**
-     * Create the canvas that will display the image.
-     * 
-     * @param parent
-     */
-    public void createControl(Composite parent) {
-
-        Control animationItem = createAnimationItem(parent);
-
-        animationItem.addMouseListener(new MouseListener() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt.events.MouseEvent)
-             */
-            public void mouseDoubleClick(MouseEvent arg0) {
-                ProgressManagerUtil.openProgressView(AnimationItem.this.window);
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events.MouseEvent)
-             */
-            public void mouseDown(MouseEvent arg0) {
-                //Do nothing
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events.MouseEvent)
-             */
-            public void mouseUp(MouseEvent arg0) {
-                //Do nothing
-            }
-        });
-        animationItem.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                AnimationManager.getInstance().removeItem(AnimationItem.this);
-            }
-        });
-        AnimationManager.getInstance().addItem(this);
-    }
-
-    /**
-     * Create the animation item control.
-     * @param parent the parent Composite
-     * @return Control
-     */
-    protected abstract Control createAnimationItem(Composite parent);
-
-    /**
-     * Paint the image in the canvas.
-     * 
-     * @param event
-     *            The PaintEvent that generated this call.
-     * @param image
-     *            The image to display
-     * @param imageData
-     *            The array of ImageData. Required to show an animation.
-     */
-    void paintImage(PaintEvent event, Image image, ImageData imageData) {
-        event.gc.drawImage(image, 0, 0);
-    }
-
-    /**
-     * Get the SWT control for the receiver.
-     * 
-     * @return Control
-     */
-    public abstract Control getControl();
-
-    /**
-     * The animation has begun.
-     */
-    void animationStart() {
-        animationContainer.animationStart();
-    }
-
-    /**
-     * The animation has ended.
-     */
-    void animationDone() {
-        animationContainer.animationDone();
-    }
-
-    /**
-     * Get the preferred width of the receiver.
-     * 
-     * @return int
-     */
-    public int getPreferredWidth() {
-        return AnimationManager.getInstance().getPreferredWidth() + 5;
-    }
-
-    /**
-     * Set the container that will be updated when this runs.
-     * @param container The animationContainer to set.
-     */
-    void setAnimationContainer(IAnimationContainer container) {
-        this.animationContainer = container;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationManager.java
deleted file mode 100644
index 76b58f4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationManager.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The AnimationManager is the class that keeps track of the animation items to
- * update.
- */
-public class AnimationManager {
-    private static AnimationManager singleton;
-
-    boolean animated = false;
-
-    private IJobProgressManagerListener listener;
-
-    IAnimationProcessor animationProcessor;
-
-    WorkbenchJob animationUpdateJob;
-
-    public static AnimationManager getInstance() {
-        if (singleton == null) {
-			singleton = new AnimationManager();
-		}
-        return singleton;
-    }
-
-    /**
-     * Get the background color to be used.
-     * 
-     * @param control
-     *            The source of the display.
-     * @return Color
-     */
-    static Color getItemBackgroundColor(Control control) {
-        return control.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND);
-    }
-
-    AnimationManager() {
-
-        animationProcessor = new ProgressAnimationProcessor(this);
-
-        animationUpdateJob = new WorkbenchJob(ProgressMessages.AnimationManager_AnimationStart) {
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-             */
-            public IStatus runInUIThread(IProgressMonitor monitor) {
-
-                if (animated) {
-					animationProcessor.animationStarted();
-				} else {
-					animationProcessor.animationFinished();
-				}
-                return Status.OK_STATUS;
-            }
-        };
-        animationUpdateJob.setSystem(true);
-        
-        listener = getProgressListener();
-        ProgressManager.getInstance().addListener(listener);
-
-
-    }
-
-    /**
-     * Add an item to the list
-     * 
-     * @param item
-     */
-    void addItem(final AnimationItem item) {
-        animationProcessor.addItem(item);
-    }
-
-    /**
-     * Remove an item from the list
-     * 
-     * @param item
-     */
-    void removeItem(final AnimationItem item) {
-        animationProcessor.removeItem(item);
-    }
-
-    /**
-     * Return whether or not the current state is animated.
-     * 
-     * @return boolean
-     */
-    boolean isAnimated() {
-        return animated;
-    }
-
-    /**
-     * Set whether or not the receiver is animated.
-     * 
-     * @param boolean
-     */
-    void setAnimated(final boolean bool) {
-        animated = bool;
-        animationUpdateJob.schedule(100);
-    }
-
-    /**
-     * Dispose the images in the receiver.
-     */
-    void dispose() {
-        setAnimated(false);
-        ProgressManager.getInstance().removeListener(listener);
-    }
-
-    private IJobProgressManagerListener getProgressListener() {
-        return new IJobProgressManagerListener() {
-            Set jobs = Collections.synchronizedSet(new HashSet());
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#addJob(org.eclipse.ui.internal.progress.JobInfo)
-             */
-            public void addJob(JobInfo info) {
-                incrementJobCount(info);
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#refreshJobInfo(org.eclipse.ui.internal.progress.JobInfo)
-             */
-            public void refreshJobInfo(JobInfo info) {
-                int state = info.getJob().getState();
-                if (state == Job.RUNNING) {
-					addJob(info);
-				} else {
-					removeJob(info);
-				}
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#refreshAll()
-             */
-            public void refreshAll() {
-                ProgressManager manager = ProgressManager.getInstance();
-                jobs.clear();
-                setAnimated(false);
-                JobInfo[] currentInfos = manager.getJobInfos(showsDebug());
-                for (int i = 0; i < currentInfos.length; i++) {
-                    addJob(currentInfos[i]);
-                }
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#remove(org.eclipse.ui.internal.progress.JobInfo)
-             */
-            public void removeJob(JobInfo info) {
-                decrementJobCount(info.getJob());
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#showsDebug()
-             */
-            public boolean showsDebug() {
-                return false;
-            }
-
-            private void incrementJobCount(JobInfo info) {
-                //Don't count the animate job itself
-                if (isNotTracked(info)) {
-					return;
-				}
-                if (jobs.isEmpty()) {
-					setAnimated(true);
-				}
-                jobs.add(info.getJob());
-            }
-
-            /*
-             * Decrement the job count for the job
-             */
-            private void decrementJobCount(Job job) {
-                jobs.remove(job);
-                if (jobs.isEmpty()) {
-					setAnimated(false);
-				}
-            }
-
-            /**
-             * If this is one of our jobs or not running then don't bother.
-             */
-            private boolean isNotTracked(JobInfo info) {
-                //We always track errors
-                Job job = info.getJob();
-                return job.getState() != Job.RUNNING
-                        || animationProcessor.isProcessorJob(job);
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#addGroup(org.eclipse.ui.internal.progress.GroupInfo)
-             */
-            public void addGroup(GroupInfo info) {
-                //Don't care about groups
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#removeGroup(org.eclipse.ui.internal.progress.GroupInfo)
-             */
-            public void removeGroup(GroupInfo group) {
-                //Don't care about groups
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#refreshGroup(org.eclipse.ui.internal.progress.GroupInfo)
-             */
-            public void refreshGroup(GroupInfo info) {
-                //Don't care about groups
-            }
-        };
-    }
-
-    /**
-     * Get the preferred width for widgets displaying the animation.
-     * 
-     * @return int. Return 0 if there is no image data.
-     */
-    int getPreferredWidth() {
-        return animationProcessor.getPreferredWidth();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
deleted file mode 100644
index aa02cf0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/BlockedJobsDialog.java
+++ /dev/null
@@ -1,464 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IconAndMessageDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-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.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The BlockedJobsDialog class displays a dialog that provides information on
- * the running jobs.
- */
-public class BlockedJobsDialog extends IconAndMessageDialog {
-	/**
-	 * The singleton dialog instance. A singleton avoids the possibility of
-	 * recursive dialogs being created. The singleton is created when a dialog
-	 * is requested, and cleared when the dialog is disposed.
-	 */
-	protected static BlockedJobsDialog singleton;
-
-	/**
-	 * The running jobs progress viewer.
-	 */
-	private DetailedProgressViewer viewer;
-
-	/**
-	 * The name of the task that is being blocked.
-	 */
-	private String blockedTaskName = ProgressMessages.SubTaskInfo_UndefinedTaskName;
-
-	/**
-	 * The Cancel button control.
-	 */
-	private Button cancelSelected;
-
-	/**
-	 * The cursor for the buttons.
-	 */
-	private Cursor arrowCursor;
-
-	/**
-	 * The cursor for the Shell.
-	 */
-	private Cursor waitCursor;
-
-	private IProgressMonitor blockingMonitor;
-
-	private JobTreeElement blockedElement = new BlockedUIElement();
-
-	/**
-	 * The BlockedUIElement is the JobTreeElement that represents the blocked
-	 * job in the dialog.
-	 */
-	private class BlockedUIElement extends JobTreeElement {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren()
-		 */
-		Object[] getChildren() {
-			return ProgressManagerUtil.EMPTY_OBJECT_ARRAY;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString()
-		 */
-		String getDisplayString() {
-			if (blockedTaskName == null || blockedTaskName.length() == 0) {
-				return ProgressMessages.BlockedJobsDialog_UserInterfaceTreeElement;
-			}
-			return blockedTaskName;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayImage()
-		 */
-		public Image getDisplayImage() {
-			return JFaceResources.getImage(ProgressManager.WAITING_JOB_KEY);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent()
-		 */
-		Object getParent() {
-			return null;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren()
-		 */
-		boolean hasChildren() {
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#isActive()
-		 */
-		boolean isActive() {
-			return true;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#isJobInfo()
-		 */
-		boolean isJobInfo() {
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#cancel()
-		 */
-		public void cancel() {
-			blockingMonitor.setCanceled(true);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.progress.JobTreeElement#isCancellable()
-		 */
-		public boolean isCancellable() {
-			return true;
-		}
-	}
-
-	/**
-	 * Creates a progress monitor dialog under the given shell. It also sets the
-	 * dialog's message. The dialog is opened automatically after a reasonable
-	 * delay. When no longer needed, the dialog must be closed by calling
-	 * <code>close(IProgressMonitor)</code>, where the supplied monitor is
-	 * the same monitor passed to this factory method.
-	 * 
-	 * @param parentShell
-	 *            The parent shell, or <code>null</code> to create a top-level
-	 *            shell. If the parentShell is not null we will open immediately
-	 *            as parenting has been determined. If it is <code>null</code>
-	 *            then the dialog will not open until there is no modal shell
-	 *            blocking it.
-	 * @param blockedMonitor
-	 *            The monitor that is currently blocked
-	 * @param reason
-	 *            A status describing why the monitor is blocked
-	 * @param taskName
-	 *            A name to give the blocking task in the dialog
-	 * @return BlockedJobsDialog
-	 */
-	public static BlockedJobsDialog createBlockedDialog(Shell parentShell,
-			IProgressMonitor blockedMonitor, IStatus reason, String taskName) {
-		// use an existing dialog if available
-		if (singleton != null) {
-			return singleton;
-		}
-		singleton = new BlockedJobsDialog(parentShell, blockedMonitor, reason);
-
-		if (taskName == null || taskName.length() == 0)
-			singleton
-					.setBlockedTaskName(ProgressMessages.BlockedJobsDialog_UserInterfaceTreeElement);
-		else
-			singleton.setBlockedTaskName(taskName);
-
-		/**
-		 * If there is no parent shell we have not been asked for a parent so we
-		 * want to avoid blocking. If there is a parent then it is OK to open.
-		 */
-		if (parentShell == null) {
-			// create the job that will open the dialog after a delay.
-			WorkbenchJob dialogJob = new WorkbenchJob(
-					WorkbenchMessages.EventLoopProgressMonitor_OpenDialogJobName) {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-				 */
-				public IStatus runInUIThread(IProgressMonitor monitor) {
-					if (singleton == null) {
-						return Status.CANCEL_STATUS;
-					}
-					if (ProgressManagerUtil.rescheduleIfModalShellOpen(this)) {
-						return Status.CANCEL_STATUS;
-					}
-					singleton.open();
-					return Status.OK_STATUS;
-				}
-			};
-			// Wait for long operation time to prevent a proliferation
-			// of dialogs
-			dialogJob.setSystem(true);
-			dialogJob.schedule(PlatformUI.getWorkbench().getProgressService()
-					.getLongOperationTime());
-		} else {
-			singleton.open();
-		}
-
-		return singleton;
-	}
-
-	/**
-	 * monitor is done. Clear the receiver.
-	 * 
-	 * @param monitor
-	 *            The monitor that is now cleared.
-	 */
-	public static void clear(IProgressMonitor monitor) {
-		if (singleton == null) {
-			return;
-		}
-		singleton.close(monitor);
-
-	}
-
-	/**
-	 * Creates a progress monitor dialog under the given shell. It also sets the
-	 * dialog's\ message. <code>open</code> is non-blocking.
-	 * 
-	 * @param parentShell
-	 *            The parent shell, or <code>null</code> to create a top-level
-	 *            shell.
-	 * @param blocking
-	 *            The monitor that is blocking the job
-	 * @param blockingStatus
-	 *            A status describing why the monitor is blocked
-	 */
-	private BlockedJobsDialog(Shell parentShell, IProgressMonitor blocking,
-			IStatus blockingStatus) {
-		super(parentShell == null ? ProgressManagerUtil.getDefaultParent()
-				: parentShell);
-		blockingMonitor = blocking;
-		setShellStyle(SWT.BORDER | SWT.TITLE | SWT.APPLICATION_MODAL
-				| SWT.RESIZE | SWT.MAX | getDefaultOrientation());
-		// no close button
-		setBlockOnOpen(false);
-		setMessage(blockingStatus.getMessage());
-	}
-
-	/**
-	 * This method creates the dialog area under the parent composite.
-	 * 
-	 * @param parent
-	 *            The parent Composite.
-	 * 
-	 * @return parent The parent Composite.
-	 */
-	protected Control createDialogArea(Composite parent) {
-		setMessage(message);
-		createMessageArea(parent);
-		showJobDetails(parent);
-		return parent;
-	}
-
-	/**
-	 * This method creates a dialog area in the parent composite and displays a
-	 * progress tree viewer of the running jobs.
-	 * 
-	 * @param parent
-	 *            The parent Composite.
-	 */
-	void showJobDetails(Composite parent) {
-		viewer = new DetailedProgressViewer(parent, SWT.MULTI | SWT.H_SCROLL
-				| SWT.V_SCROLL | SWT.BORDER);
-		viewer.setComparator(new ViewerComparator() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
-			 *      java.lang.Object, java.lang.Object)
-			 */
-			public int compare(Viewer testViewer, Object e1, Object e2) {
-				return ((Comparable) e1).compareTo(e2);
-			}
-		});
-		ProgressViewerContentProvider provider = getContentProvider();
-		viewer.setContentProvider(provider);
-		viewer.setInput(provider);
-		viewer.setLabelProvider(new ProgressLabelProvider());
-		GridData data = new GridData(GridData.GRAB_HORIZONTAL
-				| GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
-		data.horizontalSpan = 2;
-		int heightHint = convertHeightInCharsToPixels(10);
-		data.heightHint = heightHint;
-		viewer.getControl().setLayoutData(data);
-	}
-
-	/**
-	 * Return the content provider used for the receiver.
-	 * 
-	 * @return ProgressTreeContentProvider
-	 */
-	private ProgressViewerContentProvider getContentProvider() {
-		return new ProgressViewerContentProvider(viewer, true, false) {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.progress.ProgressViewerContentProvider#getElements(java.lang.Object)
-			 */
-			public Object[] getElements(Object inputElement) {
-				Object[] elements = super.getElements(inputElement);
-				Object[] result = new Object[elements.length + 1];
-				System.arraycopy(elements, 0, result, 1, elements.length);
-				result[0] = blockedElement;
-				return result;
-			}
-		};
-	}
-
-	/**
-	 * Clear the cursors in the dialog.
-	 */
-	private void clearCursors() {
-		clearCursor(cancelSelected);
-		clearCursor(getShell());
-		if (arrowCursor != null) {
-			arrowCursor.dispose();
-		}
-		if (waitCursor != null) {
-			waitCursor.dispose();
-		}
-		arrowCursor = null;
-		waitCursor = null;
-	}
-
-	/**
-	 * Clear the cursor on the supplied control.
-	 * 
-	 * @param control
-	 */
-	private void clearCursor(Control control) {
-		if (control != null && !control.isDisposed()) {
-			control.setCursor(null);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-		shell.setText(ProgressMessages.BlockedJobsDialog_BlockedTitle);
-		if (waitCursor == null) {
-			waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
-		}
-		shell.setCursor(waitCursor);
-	}
-
-	/**
-	 * This method sets the message in the message label.
-	 * 
-	 * @param messageString -
-	 *            the String for the message area
-	 */
-	private void setMessage(String messageString) {
-		// must not set null text in a label
-		message = messageString == null ? "" : messageString; //$NON-NLS-1$
-		if (messageLabel == null || messageLabel.isDisposed()) {
-			return;
-		}
-		messageLabel.setText(message);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage()
-	 */
-	protected Image getImage() {
-		return getInfoImage();
-	}
-
-	/**
-	 * Returns the progress monitor being used for this dialog. This allows
-	 * recursive blockages to also respond to cancelation.
-	 * 
-	 * @return IProgressMonitor
-	 */
-	public IProgressMonitor getProgressMonitor() {
-		return blockingMonitor;
-	}
-
-	/**
-	 * Requests that the blocked jobs dialog be closed. The supplied monitor
-	 * must be the same one that was passed to the createBlockedDialog method.
-	 * 
-	 * @param monitor
-	 * @return IProgressMonitor
-	 */
-	public boolean close(IProgressMonitor monitor) {
-		// ignore requests to close the dialog from all but the first monitor
-		if (blockingMonitor != monitor) {
-			return false;
-		}
-		return close();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.Dialog#close()
-	 */
-	public boolean close() {
-		// Clear the singleton first
-		singleton = null;
-		clearCursors();
-		return super.close();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createButtonBar(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createButtonBar(Composite parent) {
-		// Do nothing here as we want no buttons
-		return parent;
-	}
-
-	/**
-	 * @param taskName
-	 *            The blockedTaskName to set.
-	 */
-	void setBlockedTaskName(String taskName) {
-		this.blockedTaskName = taskName;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
deleted file mode 100644
index 5edb486..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/DetailedProgressViewer.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.graphics.Point;
-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.Text;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-
-/**
- * The DetailedProgressViewer is a viewer that shows the details of all in
- * progress job or jobs that are finished awaiting user input.
- * 
- * @since 3.2
- * 
- */
-public class DetailedProgressViewer extends AbstractProgressViewer {
-
-	//Maximum number of entries to display so that the view does not flood the UI with events
-	private static final int MAX_DISPLAYED = 20;
-
-	Composite control;
-
-	private ScrolledComposite scrolled;
-
-	private Composite noEntryArea;
-
-	/**
-	 * Create a new instance of the receiver with a control that is a child of
-	 * parent with style style.
-	 * 
-	 * @param parent
-	 * @param style
-	 */
-	public DetailedProgressViewer(Composite parent, int style) {
-		scrolled = new ScrolledComposite(parent, SWT.V_SCROLL | style);
-		int height = JFaceResources.getDefaultFont().getFontData()[0]
-				.getHeight();
-		scrolled.getVerticalBar().setIncrement(height * 2);
-		scrolled.setExpandHorizontal(true);
-		scrolled.setExpandVertical(true);
-
-		control = new Composite(scrolled, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		control.setLayout(layout);
-		control.setBackground(parent.getDisplay().getSystemColor(
-				SWT.COLOR_LIST_BACKGROUND));
-
-		control.addFocusListener(new FocusAdapter() {
-
-			private boolean settingFocus = false;
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.FocusAdapter#focusGained(org.eclipse.swt.events.FocusEvent)
-			 */
-			public void focusGained(FocusEvent e) {
-				if (!settingFocus) {
-					// Prevent new focus events as a result this update
-					// occurring
-					settingFocus = true;
-					setFocus();
-					settingFocus = false;
-				}
-			}
-		});
-
-		control.addControlListener(new ControlListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
-			 */
-			public void controlMoved(ControlEvent e) {
-				updateVisibleItems();
-
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.ControlListener#controlResized(org.eclipse.swt.events.ControlEvent)
-			 */
-			public void controlResized(ControlEvent e) {
-				updateVisibleItems();
-			}
-		});
-
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(control,
-				IWorkbenchHelpContextIds.RESPONSIVE_UI);
-
-		scrolled.setContent(control);
-		hookControl(control);
-
-		noEntryArea = new Composite(scrolled, SWT.NONE);
-		noEntryArea.setLayout(new GridLayout());
-
-		Text noEntryLabel = new Text(noEntryArea, SWT.SINGLE);
-		noEntryLabel.setText(ProgressMessages.ProgressView_NoOperations);
-		noEntryLabel.setBackground(noEntryArea.getDisplay().getSystemColor(
-				SWT.COLOR_WIDGET_BACKGROUND));
-		GridData textData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
-		noEntryLabel.setLayoutData(textData);
-		noEntryLabel.setEditable(false);
-
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(noEntryLabel,
-				IWorkbenchHelpContextIds.RESPONSIVE_UI);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.AbstractProgressViewer#add(java.lang.Object[])
-	 */
-	public void add(Object[] elements) {
-		ViewerComparator sorter = getComparator();
-
-		// Use a Set in case we are getting something added that exists
-		Set newItems = new HashSet(elements.length);
-
-		Control[] existingChildren = control.getChildren();
-		for (int i = 0; i < existingChildren.length; i++) {
-			if (existingChildren[i].getData() != null)
-				newItems.add(existingChildren[i].getData());
-		}
-
-		for (int i = 0; i < elements.length; i++) {
-			if (elements[i] != null)
-				newItems.add(elements[i]);
-		}
-
-		JobTreeElement[] infos = new JobTreeElement[newItems.size()];
-		newItems.toArray(infos);
-
-		if (sorter != null) {
-			sorter.sort(this, infos);
-		}
-
-		// Update with the new elements to prevent flash
-		for (int i = 0; i < existingChildren.length; i++) {
-			((ProgressInfoItem) existingChildren[i]).dispose();
-		}
-
-		int totalSize = Math.min(newItems.size(), MAX_DISPLAYED);
-
-		for (int i = 0; i < totalSize; i++) {
-			ProgressInfoItem item = createNewItem(infos[i]);
-			item.setColor(i);
-		}
-
-		control.layout(true);
-		updateForShowingProgress();
-	}
-
-	/**
-	 * Update for the progress being displayed.
-	 */
-	private void updateForShowingProgress() {
-		if (control.getChildren().length > 0) {
-			scrolled.setContent(control);
-		} else {
-			scrolled.setContent(noEntryArea);
-		}
-	}
-
-	/**
-	 * Create a new item for info.
-	 * 
-	 * @param info
-	 * @return ProgressInfoItem
-	 */
-	private ProgressInfoItem createNewItem(JobTreeElement info) {
-		final ProgressInfoItem item = new ProgressInfoItem(control, SWT.NONE,
-				info);
-
-		item.setIndexListener(new ProgressInfoItem.IndexListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.progress.ProgressInfoItem.IndexListener#selectNext()
-			 */
-			public void selectNext() {
-				DetailedProgressViewer.this.selectNext(item);
-
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.progress.ProgressInfoItem.IndexListener#selectPrevious()
-			 */
-			public void selectPrevious() {
-				DetailedProgressViewer.this.selectPrevious(item);
-
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.progress.ProgressInfoItem.IndexListener#select()
-			 */
-			public void select() {
-
-				Control[] children = control.getChildren();
-				for (int i = 0; i < children.length; i++) {
-					ProgressInfoItem child = (ProgressInfoItem) children[i];
-					if (!item.equals(child)) {
-						child.selectWidgets(false);
-					}
-				}
-				item.selectWidgets(true);
-
-			}
-		});
-
-		// Refresh to populate with the current tasks
-		item.refresh();
-		return item;
-	}
-
-	/**
-	 * Select the previous item in the receiver.
-	 * 
-	 * @param item
-	 */
-	protected void selectPrevious(ProgressInfoItem item) {
-		Control[] children = control.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			ProgressInfoItem child = (ProgressInfoItem) children[i];
-			if (item.equals(child)) {
-				ProgressInfoItem previous;
-				if (i == 0) {
-					previous = (ProgressInfoItem) children[children.length - 1];
-				} else {
-					previous = (ProgressInfoItem) children[i - 1];
-				}
-
-				item.selectWidgets(false);
-				previous.selectWidgets(true);
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Select the next item in the receiver.
-	 * 
-	 * @param item
-	 */
-	protected void selectNext(ProgressInfoItem item) {
-		Control[] children = control.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			ProgressInfoItem child = (ProgressInfoItem) children[i];
-			if (item.equals(child)) {
-				ProgressInfoItem next;
-				if (i == children.length - 1) {
-					next = (ProgressInfoItem) children[0];
-				} else {
-					next = (ProgressInfoItem) children[i + 1];
-				}
-				item.selectWidgets(false);
-				next.selectWidgets(true);
-
-				return;
-			}
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#doFindInputItem(java.lang.Object)
-	 */
-	protected Widget doFindInputItem(Object element) {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#doFindItem(java.lang.Object)
-	 */
-	protected Widget doFindItem(Object element) {
-		Control[] existingChildren = control.getChildren();
-		for (int i = 0; i < existingChildren.length; i++) {
-			if (existingChildren[i].isDisposed()
-					|| existingChildren[i].getData() == null) {
-				continue;
-			}
-			if (existingChildren[i].getData().equals(element)) {
-				return existingChildren[i];
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#doUpdateItem(org.eclipse.swt.widgets.Widget,
-	 *      java.lang.Object, boolean)
-	 */
-	protected void doUpdateItem(Widget item, Object element, boolean fullMap) {
-		if (usingElementMap()) {
-			unmapElement(item);
-		}
-		item.dispose();
-		add(new Object[] { element });
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.Viewer#getControl()
-	 */
-	public Control getControl() {
-		return scrolled;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget()
-	 */
-	protected List getSelectionFromWidget() {
-		return new ArrayList(0);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.Viewer#inputChanged(java.lang.Object,
-	 *      java.lang.Object)
-	 */
-	protected void inputChanged(Object input, Object oldInput) {
-		super.inputChanged(input, oldInput);
-		refreshAll();
-		updateForShowingProgress();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#internalRefresh(java.lang.Object)
-	 */
-	protected void internalRefresh(Object element) {
-		if (element == null) {
-			return;
-		}
-
-		if (element.equals(getRoot())) {
-			refreshAll();
-			return;
-		}
-		Widget widget = findItem(element);
-		if (widget == null) {
-			add(new Object[] { element });
-			return;
-		}
-		((ProgressInfoItem) widget).refresh();
-
-		// Update the minimum size
-		Point size = control.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-		size.x += IDialogConstants.HORIZONTAL_SPACING;
-		size.y += IDialogConstants.VERTICAL_SPACING;
-
-		scrolled.setMinSize(size);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.AbstractProgressViewer#remove(java.lang.Object[])
-	 */
-	public void remove(Object[] elements) {
-
-		for (int i = 0; i < elements.length; i++) {
-			JobTreeElement treeElement = (JobTreeElement) elements[i];
-			// Make sure we are not keeping this one
-			if (FinishedJobs.getInstance().isKept(treeElement)) {
-				Widget item = doFindItem(elements[i]);
-				if (item != null) {
-					((ProgressInfoItem) item).refresh();
-				}
-
-			} else {
-				Widget item = doFindItem(treeElement);
-				if (item == null) {
-					// Is the parent showing?
-					Object parent = treeElement.getParent();
-					if (parent != null)
-						item = doFindItem(parent);
-				}
-				if (item != null) {
-					unmapElement(elements[i]);
-					item.dispose();
-				}
-			}
-		}
-
-		Control[] existingChildren = control.getChildren();
-		for (int i = 0; i < existingChildren.length; i++) {
-			ProgressInfoItem item = (ProgressInfoItem) existingChildren[i];
-			item.setColor(i);
-		}
-		control.layout(true);
-		updateForShowingProgress();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#reveal(java.lang.Object)
-	 */
-	public void reveal(Object element) {
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.StructuredViewer#setSelectionToWidget(java.util.List,
-	 *      boolean)
-	 */
-	protected void setSelectionToWidget(List l, boolean reveal) {
-
-	}
-
-	/**
-	 * Cancel the current selection
-	 * 
-	 */
-	public void cancelSelection() {
-
-	}
-
-	/**
-	 * Set focus on the current selection.
-	 * 
-	 */
-	public void setFocus() {
-		Control[] children = control.getChildren();
-		if (children.length > 0) {
-			for (int i = 0; i < children.length; i++) {
-				ProgressInfoItem item = (ProgressInfoItem) children[i];
-				item.setButtonFocus();
-				return;
-			}
-		} else
-			noEntryArea.setFocus();
-	}
-
-	/**
-	 * Refresh everything as the root is being refreshed.
-	 */
-	private void refreshAll() {
-
-		Object[] infos = getSortedChildren(getRoot());
-		Control[] existingChildren = control.getChildren();
-
-		for (int i = 0; i < existingChildren.length; i++) {
-			existingChildren[i].dispose();
-
-		}
-		
-		int maxLength = Math.min(infos.length,MAX_DISPLAYED);
-		// Create new ones if required
-		for (int i = 0; i < maxLength; i++) {
-			ProgressInfoItem item = createNewItem((JobTreeElement) infos[i]);
-			item.setColor(i);
-		}
-
-		control.layout(true);
-		updateForShowingProgress();
-
-	}
-
-	/**
-	 * Set the virtual items to be visible or not depending on the displayed
-	 * area.
-	 */
-	private void updateVisibleItems() {
-		Control[] children = control.getChildren();
-		int top = scrolled.getOrigin().y;
-		int bottom = top + scrolled.getParent().getBounds().height;
-		for (int i = 0; i < children.length; i++) {
-			ProgressInfoItem item = (ProgressInfoItem) children[i];
-			item.setDisplayed(top, bottom);
-
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java
deleted file mode 100644
index 401d207..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ErrorInfo.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.Date;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.graphics.Image;
-
-import com.ibm.icu.text.DateFormat;
-
-/**
- * ErrorInfo is the info that displays errors.
- */
-public class ErrorInfo extends JobTreeElement {
-
-	private final IStatus errorStatus;
-
-	private final Job job;
-
-	private final long timestamp;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param status
-	 * @param job
-	 *            The Job to create
-	 */
-	public ErrorInfo(IStatus status, Job job) {
-		errorStatus = status;
-		this.job = job;
-		timestamp = System.currentTimeMillis();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent()
-	 */
-	Object getParent() {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren()
-	 */
-	boolean hasChildren() {
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren()
-	 */
-	Object[] getChildren() {
-		return ProgressManagerUtil.EMPTY_OBJECT_ARRAY;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString()
-	 */
-	String getDisplayString() {
-		return NLS.bind(ProgressMessages.JobInfo_Error, (new Object[] {
-				job.getName(),
-				DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG).format(new Date(timestamp)) }));
-	}
-
-	/**
-	 * Return the image for the receiver.
-	 * 
-	 * @return Image
-	 */
-	Image getImage() {
-		return JFaceResources.getImage(ProgressManager.ERROR_JOB_KEY);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isJobInfo()
-	 */
-	boolean isJobInfo() {
-		return false;
-	}
-
-	/**
-	 * Return the current status of the receiver.
-	 * 
-	 * @return IStatus
-	 */
-	IStatus getErrorStatus() {
-		return errorStatus;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isActive()
-	 */
-	boolean isActive() {
-		return true;
-	}
-
-	/**
-	 * Return the job that generated the error.
-	 * 
-	 * @return the job that generated the error
-	 */
-	public Job getJob() {
-		return job;
-	}
-
-	/**
-	 * Return the timestamp for the job.
-	 * 
-	 * @return long
-	 */
-	public long getTimestamp() {
-		return timestamp;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#compareTo(java.lang.Object)
-	 */
-	public int compareTo(Object arg0) {
-		if (arg0 instanceof ErrorInfo) {
-			// Order ErrorInfo by time received
-			long otherTimestamp = ((ErrorInfo) arg0).timestamp;
-			if (timestamp < otherTimestamp) {
-				return -1;
-			} else if (timestamp > otherTimestamp) {
-				return 1;
-			} else {
-				return 0;
-			}
-		}
-		return super.compareTo(arg0);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java
deleted file mode 100644
index bcd8343..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.progress.IProgressConstants;
-
-/**
- * This singleton remembers all JobTreeElements that should be preserved (e.g.
- * because their associated Jobs have the "keep" property set).
- */
-public class FinishedJobs extends EventManager {
-
-	/*
-	 * Interface for notify listeners.
-	 */
-	static interface KeptJobsListener {
-
-		/**
-		 * A job to be kept has finished
-		 * 
-		 * @param jte
-		 */
-		void finished(JobTreeElement jte);
-
-		/**
-		 * A kept job has been removed.
-		 * 
-		 * @param jte
-		 */
-		void removed(JobTreeElement jte);
-	}
-
-	private static FinishedJobs theInstance;
-
-	private IJobProgressManagerListener listener;
-
-	private HashSet keptjobinfos = new HashSet();
-
-	private HashMap finishedTime = new HashMap();
-
-	private static JobTreeElement[] EMPTY_INFOS;
-
-	public static synchronized FinishedJobs getInstance() {
-		if (theInstance == null) {
-			theInstance = new FinishedJobs();
-			EMPTY_INFOS = new JobTreeElement[0];
-		}
-		return theInstance;
-	}
-
-	private FinishedJobs() {
-		listener = new IJobProgressManagerListener() {
-			public void addJob(JobInfo info) {
-				checkForDuplicates(info);
-			}
-
-			public void addGroup(GroupInfo info) {
-				checkForDuplicates(info);
-			}
-
-			public void refreshJobInfo(JobInfo info) {
-				checkTasks(info);
-			}
-
-			public void refreshGroup(GroupInfo info) {
-			}
-
-			public void refreshAll() {
-			}
-
-			public void removeJob(JobInfo info) {
-				if (keep(info)) {
-					checkForDuplicates(info);
-					add(info);
-				}
-			}
-
-			public void removeGroup(GroupInfo group) {
-			}
-
-			public boolean showsDebug() {
-				return false;
-			}
-		};
-		ProgressManager.getInstance().addListener(listener);
-	}
-
-	/**
-	 * Returns true if JobInfo indicates that it must be kept.
-	 */
-	static boolean keep(JobInfo info) {
-		Job job = info.getJob();
-		if (job != null) {
-			Object prop = job.getProperty(ProgressManagerUtil.KEEP_PROPERTY);
-			if (prop instanceof Boolean) {
-				if (((Boolean) prop).booleanValue()) {
-					return true;
-				}
-			}
-
-			prop = job.getProperty(ProgressManagerUtil.KEEPONE_PROPERTY);
-			if (prop instanceof Boolean) {
-				if (((Boolean) prop).booleanValue()) {
-					return true;
-				}
-			}
-
-			IStatus status = job.getResult();
-			if (status != null && status.getSeverity() == IStatus.ERROR) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Register for notification.
-	 */
-	void addListener(KeptJobsListener l) {
-		addListenerObject(l);
-	}
-
-	/**
-	 * Deregister for notification.
-	 */
-	void removeListener(KeptJobsListener l) {
-		removeListenerObject(l);
-	}
-
-	private void checkForDuplicates(GroupInfo info) {
-		Object[] objects = info.getChildren();
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof JobInfo) {
-				checkForDuplicates((JobInfo) objects[i]);
-			}
-		}
-	}
-
-	private void checkForDuplicates(JobTreeElement info) {
-		JobTreeElement[] toBeRemoved = findJobsToRemove(info);
-		if (toBeRemoved != null) {
-			for (int i = 0; i < toBeRemoved.length; i++) {
-				remove(toBeRemoved[i]);
-			}
-		}
-	}
-
-	/**
-	 * Add given Job to list of kept jobs.
-	 */
-	private void add(JobInfo info) {
-		boolean fire = false;
-
-		synchronized (keptjobinfos) {
-			if (!keptjobinfos.contains(info)) {
-				keptjobinfos.add(info);
-
-				long now = System.currentTimeMillis();
-				finishedTime.put(info, new Long(now));
-
-				Object parent = info.getParent();
-				if (!(parent == null || keptjobinfos.contains(parent))) {
-					keptjobinfos.add(parent);
-					finishedTime.put(parent, new Long(now));
-				}
-
-				fire = true;
-			}
-		}
-
-		if (fire) {
-			Object l[] = getListeners();
-			for (int i = 0; i < l.length; i++) {
-				KeptJobsListener jv = (KeptJobsListener) l[i];
-				jv.finished(info);
-			}
-		}
-	}
-
-	static void disposeAction(JobTreeElement jte) {
-		if (jte.isJobInfo()) {
-			JobInfo ji = (JobInfo) jte;
-			Job job = ji.getJob();
-			if (job != null) {
-				Object prop = job
-						.getProperty(IProgressConstants.ACTION_PROPERTY);
-				if (prop instanceof ActionFactory.IWorkbenchAction) {
-					((ActionFactory.IWorkbenchAction) prop).dispose();
-				}
-			}
-		}
-	}
-
-	private JobTreeElement[] findJobsToRemove(JobTreeElement info) {
-
-		if (info.isJobInfo()) {
-			Job myJob = ((JobInfo) info).getJob();
-
-			if (myJob != null) {
-
-				Object prop = myJob
-						.getProperty(ProgressManagerUtil.KEEPONE_PROPERTY);
-				if (prop instanceof Boolean && ((Boolean) prop).booleanValue()) {
-					ArrayList found = null;
-					JobTreeElement[] all;
-					synchronized (keptjobinfos) {
-						all = (JobTreeElement[]) keptjobinfos
-								.toArray(new JobTreeElement[keptjobinfos.size()]);
-					}
-					for (int i = 0; i < all.length; i++) {
-						JobTreeElement jte = all[i];
-						if (jte != info && jte.isJobInfo()) {
-							Job job = ((JobInfo) jte).getJob();
-							if (job != null && job != myJob
-									&& job.belongsTo(myJob)) {
-								if (found == null) {
-									found = new ArrayList();
-								}
-								found.add(jte);
-							}
-						}
-					}
-					if (found != null) {
-						return (JobTreeElement[]) found
-								.toArray(new JobTreeElement[found.size()]);
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	private void checkTasks(JobInfo info) {
-		if (keep(info)) {
-			TaskInfo tinfo = info.getTaskInfo();
-			if (tinfo != null) {
-				JobTreeElement[] toBeRemoved = null;
-				boolean fire = false;
-				JobTreeElement element = (JobTreeElement) tinfo.getParent();
-				synchronized (keptjobinfos) {
-					if (element == info && !keptjobinfos.contains(tinfo)) {
-						toBeRemoved = findJobsToRemove(element);
-						keptjobinfos.add(tinfo);
-						finishedTime.put(tinfo, new Long(System
-								.currentTimeMillis()));
-					}
-				}
-
-				if (toBeRemoved != null) {
-					for (int i = 0; i < toBeRemoved.length; i++) {
-						remove(toBeRemoved[i]);
-					}
-				}
-
-				if (fire) {
-					Object l[] = getListeners();
-					for (int i = 0; i < l.length; i++) {
-						KeptJobsListener jv = (KeptJobsListener) l[i];
-						jv.finished(info);
-					}
-				}
-			}
-		}
-	}
-
-	public void removeErrorJobs() {
-		JobTreeElement[] infos = getKeptElements();
-		for (int i = 0; i < infos.length; i++) {
-			if (infos[i].isJobInfo()) {
-				JobInfo info1 = (JobInfo) infos[i];
-				Job job = info1.getJob();
-				if (job != null) {
-					IStatus status = job.getResult();
-					if (status != null && status.getSeverity() == IStatus.ERROR) {
-						JobTreeElement topElement = (JobTreeElement) info1
-								.getParent();
-						if (topElement == null) {
-							topElement = info1;
-						}
-						FinishedJobs.getInstance().remove(topElement);
-					}
-				}
-			}
-		}
-	}
-
-	boolean remove(JobTreeElement jte) {
-		boolean fire = false;
-		boolean removed = false;
-
-		synchronized (keptjobinfos) {
-			if (keptjobinfos.remove(jte)) {
-				removed = true;
-				finishedTime.remove(jte);
-				disposeAction(jte);
-
-				// delete all elements that have jte as their direct or indirect
-				// parent
-				JobTreeElement jtes[] = (JobTreeElement[]) keptjobinfos
-						.toArray(new JobTreeElement[keptjobinfos.size()]);
-				for (int i = 0; i < jtes.length; i++) {
-					JobTreeElement parent = (JobTreeElement) jtes[i]
-							.getParent();
-					if (parent != null) {
-						if (parent == jte || parent.getParent() == jte) {
-							if (keptjobinfos.remove(jtes[i])) {
-								disposeAction(jtes[i]);
-							}
-							finishedTime.remove(jtes[i]);
-						}
-					}
-				}
-				fire = true;
-			}
-		}
-
-		if (fire) {
-			// notify listeners
-			Object l[] = getListeners();
-			for (int i = 0; i < l.length; i++) {
-				KeptJobsListener jv = (KeptJobsListener) l[i];
-				jv.removed(jte);
-			}
-		}
-		return removed;
-	}
-
-	/**
-	 * Returns all kept elements.
-	 */
-	JobTreeElement[] getKeptElements() {
-		JobTreeElement[] all;
-		if (keptjobinfos.isEmpty()) {
-			return EMPTY_INFOS;
-		}
-
-		synchronized (keptjobinfos) {
-			all = (JobTreeElement[]) keptjobinfos
-					.toArray(new JobTreeElement[keptjobinfos.size()]);
-		}
-		
-		return all;
-	}
-
-	/**
-	 * Get the date that indicates the finish time.
-	 * 
-	 * @param jte
-	 * @return Date
-	 */
-	public Date getFinishDate(JobTreeElement jte) {
-		Object o = finishedTime.get(jte);
-		if (o instanceof Long) {
-			return new Date(((Long) o).longValue());
-		}
-		return null;
-	}
-
-	/**
-	 * Return whether or not the kept infos have the element.
-	 * 
-	 * @param element
-	 * @return boolean
-	 */
-	public boolean isKept(JobTreeElement element) {
-		return keptjobinfos.contains(element);
-	}
-
-	/**
-	 * Clear all kept jobs.
-	 */
-	public void clearAll() {
-		synchronized (keptjobinfos) {
-			JobTreeElement[] all = (JobTreeElement[]) keptjobinfos
-					.toArray(new JobTreeElement[keptjobinfos.size()]);
-			for (int i = 0; i < all.length; i++) {
-				disposeAction(all[i]);
-			}
-			keptjobinfos.clear();
-			finishedTime.clear();
-		}
-
-		// notify listeners
-		Object l[] = getListeners();
-		for (int i = 0; i < l.length; i++) {
-			KeptJobsListener jv = (KeptJobsListener) l[i];
-			jv.removed(null);
-		}
-	}
-
-	/**
-	 * Return the set of kept jobs.
-	 * @return Set
-	 */
-	Set getKeptAsSet() {
-		return keptjobinfos;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java
deleted file mode 100644
index 7bba3d5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/GroupInfo.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Michael Fraenkel <fraenkel@us.ibm.com> - Fix for bug 60698 -
- *     [Progress] ConcurrentModificationException in NewProgressViewer.
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * The GroupInfo is the object used to display group properties.
- */
-
-class GroupInfo extends JobTreeElement implements IProgressMonitor {
-
-	private List infos = new ArrayList();
-
-	private Object lock = new Object();
-
-	private String taskName = ProgressMessages.SubTaskInfo_UndefinedTaskName;
-
-	boolean isActive = false;
-
-	double total = -1;
-
-	double currentWork;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent()
-	 */
-	Object getParent() {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren()
-	 */
-	boolean hasChildren() {
-		synchronized (lock) {
-			return !infos.isEmpty();
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren()
-	 */
-	Object[] getChildren() {
-		synchronized (lock) {
-			return infos.toArray();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString()
-	 */
-	String getDisplayString() {
-		if (total < 0) {
-			return taskName;
-		}
-		String[] messageValues = new String[2];
-		messageValues[0] = taskName;
-		messageValues[1] = String.valueOf(getPercentDone());
-		return NLS.bind(ProgressMessages.JobInfo_NoTaskNameDoneMessage,
-				messageValues);
-
-	}
-
-	/**
-	 * Return an integer representing the amount of work completed.
-	 * 
-	 * @return int
-	 */
-	int getPercentDone() {
-		return (int) (currentWork * 100 / total);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isJobInfo()
-	 */
-	boolean isJobInfo() {
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public int compareTo(Object arg0) {
-		return getDisplayString().compareTo(
-				((JobTreeElement) arg0).getDisplayString());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String,
-	 * int)
-	 */
-	public void beginTask(String name, int totalWork) {
-		if (name == null)
-			name = ProgressMessages.SubTaskInfo_UndefinedTaskName;
-		else
-			taskName = name;
-		total = totalWork;
-		synchronized (lock) {
-			isActive = true;
-		}
-		ProgressManager.getInstance().refreshGroup(this);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IProgressMonitor#done()
-	 */
-	public void done() {
-		synchronized (lock) {
-			isActive = false;
-		}
-		updateInProgressManager();
-
-	}
-
-	/**
-	 * Update the receiver in the progress manager. If all of the jobs are
-	 * finished and the receiver is not being kept then remove it.
-	 */
-	private void updateInProgressManager() {
-		Iterator infoIterator = infos.iterator();
-		while (infoIterator.hasNext()) {
-			JobInfo next = (JobInfo) infoIterator.next();
-			if (!(next.getJob().getState() == Job.NONE)) {
-				ProgressManager.getInstance().refreshGroup(this);
-				return;
-			}
-		}
-
-		if (FinishedJobs.getInstance().isKept(this))
-			ProgressManager.getInstance().refreshGroup(this);
-		else
-			ProgressManager.getInstance().removeGroup(this);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
-	 */
-	public void internalWorked(double work) {
-		synchronized (lock) {
-			currentWork += work;
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IProgressMonitor#isCanceled()
-	 */
-	public boolean isCanceled() {
-		// Just a group so no cancel state
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IProgressMonitor#setCanceled(boolean)
-	 */
-	public void setCanceled(boolean value) {
-		cancel();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-	 */
-	public void setTaskName(String name) {
-		synchronized (this) {
-			isActive = true;
-		}
-		if (name == null)
-			taskName = ProgressMessages.SubTaskInfo_UndefinedTaskName;
-		else
-			taskName = name;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-	 */
-	public void subTask(String name) {
-		// Not interesting for this monitor
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
-	 */
-	public void worked(int work) {
-		internalWorked(work);
-	}
-
-	/**
-	 * Remove the job from the list of jobs.
-	 * 
-	 * @param job
-	 */
-	void removeJobInfo(final JobInfo job) {
-		synchronized (lock) {
-			infos.remove(job);
-			if (infos.isEmpty()) {
-				done();
-			}
-		}
-	}
-
-	/**
-	 * Remove the job from the list of jobs.
-	 * 
-	 * @param job
-	 */
-	void addJobInfo(final JobInfo job) {
-		synchronized (lock) {
-			infos.add(job);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isActive()
-	 */
-	boolean isActive() {
-		return isActive;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#cancel()
-	 */
-	public void cancel() {
-		Object[] jobInfos = getChildren();
-		for (int i = 0; i < jobInfos.length; i++) {
-			((JobInfo) jobInfos[i]).cancel();
-		}
-		// Call the refresh so that this is updated immediately
-		updateInProgressManager();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isCancellable()
-	 */
-	public boolean isCancellable() {
-		return true;
-	}
-
-	/**
-	 * Get the task name for the receiver.
-	 * 
-	 * @return String
-	 */
-	String getTaskName() {
-		return taskName;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IAnimationProcessor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IAnimationProcessor.java
deleted file mode 100644
index de37345..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IAnimationProcessor.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * The IAnimationProcessor is the class that handles the animation of
- * the animation item.
- */
-interface IAnimationProcessor {
-
-    /**
-     * Add an item to the list of the items we are updating.
-     * @param item
-     */
-    void addItem(AnimationItem item);
-
-    /**
-     * Remove an item from the list of the items we are updating.
-     * @param item
-     */
-    void removeItem(AnimationItem item);
-
-    /**
-     * Return whether or not the receiver has any items.
-     * @return
-     */
-    boolean hasItems();
-
-    /**
-     * Animation has begun. Inform any listeners. This is called
-     * from the UI Thread.
-     */
-    void animationStarted();
-
-    /**
-     * Animation has finished. Inform any listeners. This is called
-     * from the UI Thread.
-     */
-    void animationFinished();
-
-    /**
-     * Get the preferred width of the types of items this 
-     * processor manages.
-     * @return
-     */
-    int getPreferredWidth();
-
-    /**
-     * Return whether or not this is a job used by the processor.
-     * @param job
-     * @return
-     */
-    boolean isProcessorJob(Job job);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobBusyListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobBusyListener.java
deleted file mode 100644
index 1ebe085..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobBusyListener.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * The IJobBusyListener is used to listen for running and 
- * terminating of jobs of a particular family.
- */
-interface IJobBusyListener {
-
-    /**
-     * Increment the busy count for job.
-     * @param job
-     */
-    public void incrementBusy(Job job);
-
-    /**
-     * Decrement the busy count for job.
-     * @param job
-     */
-    public void decrementBusy(Job job);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java
deleted file mode 100644
index f88fe6b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IJobProgressManagerListener.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-/**
- * The IJobProgressManagerListener is a class that listeners to the JobProgressManager.
- */
-interface IJobProgressManagerListener {
-
-    /**
-     * Refresh the viewer as a result of an addition of info.
-     * @param info
-     */
-    void addJob(final JobInfo info);
-
-    /**
-     * Refresh the viewer as a result of an addition of group.
-     * @param info
-     */
-    void addGroup(final GroupInfo info);
-
-    /**
-     * Refresh the IJobProgressManagerListeners as a result of a change in info.
-     * @param info
-     */
-    public void refreshJobInfo(JobInfo info);
-
-    /**
-     * Refresh the IJobProgressManagerListeners as a result of a change in groups.
-     * @param info
-     */
-    public void refreshGroup(GroupInfo info);
-
-    /**
-     * Refresh the viewer for all jobs.
-     * @param info
-     */
-    void refreshAll();
-
-    /**
-     * Refresh the viewer as a result of a removal of info.
-     * @param info
-     */
-    void removeJob(final JobInfo info);
-
-    /**
-     * Refresh the viewer as a result of a removal of group.
-     * @param info
-     */
-    void removeGroup(final GroupInfo group);
-
-    /**
-     * Return whether or not this listener shows debug information.
-     * @return boolean
-     */
-    boolean showsDebug();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java
deleted file mode 100644
index a69fd30..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/IProgressUpdateCollector.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-/**
- * The IProgressUpdateCollector is the interface that content providers
- * conform to in order that the ProgressViewUpdater can talk to various
- * types of content provider.
- */
-public interface IProgressUpdateCollector {
-
-    /**
-     * Refresh the viewer.
-     */
-    void refresh();
-
-    /**
-     * Refresh the elements.
-     * @param elements
-     */
-    void refresh(Object[] elements);
-
-    /**
-     * Add the elements.
-     * @param elements Array of JobTreeElement
-     */
-    void add(Object[] elements);
-
-    /**
-     * Remove the elements.
-     * @param elements Array of JobTreeElement
-     */
-    void remove(Object[] elements);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
deleted file mode 100644
index abf3e41..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Brock Janiczak <brockj@tpg.com.au> - Fix for Bug 123169 [Progress] NPE from JobInfo
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * JobInfo is the class that keeps track of the tree structure for objects that
- * display job status in a tree.
- */
-class JobInfo extends JobTreeElement {
-
-    private IStatus blockedStatus;
-
-    private volatile boolean canceled = false;
-    private List children = Collections.synchronizedList(new ArrayList());
-
-    private Job job;
-
-    private GroupInfo parent;
-
-    private TaskInfo taskInfo;
-
-    //Default to no progress
-    private int ticks = -1;
-
-    /**
-     * Create a top level JobInfo.
-     * 
-     * @param enclosingJob
-     */
-    JobInfo(Job enclosingJob) {
-        this.job = enclosingJob;
-    }
-
-    /**
-     * Add the subtask to the receiver.
-     * 
-     * @param subTaskName
-     */
-    void addSubTask(String subTaskName) {
-        children.add(new SubTaskInfo(this, subTaskName));
-    }
-
-    /**
-     * Add the amount of work to the job info.
-     * 
-     * @param workIncrement
-     */
-    void addWork(double workIncrement) {
-        if (taskInfo == null) {
-			return;
-		}
-        if (parent == null || ticks < 1) {
-			taskInfo.addWork(workIncrement);
-		} else {
-			taskInfo.addWork(workIncrement, parent, ticks);
-		}
-    }
-
-    /**
-     * Begin the task called taskName with the supplied work.
-     * 
-     * @param taskName
-     * @param work
-     */
-    void beginTask(String taskName, int work) {
-        taskInfo = new TaskInfo(this, taskName, work);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#cancel()
-     */
-    public void cancel() {
-        this.canceled = true;
-        this.job.cancel();
-        //Call the refresh so that this is updated immediately
-        ProgressManager.getInstance().refreshJobInfo(this);
-    }
-
-    /**
-     * Clear the collection of subtasks an the task info.
-     */
-    void clearChildren() {
-        children.clear();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#isJobInfo()
-     */
-    void clearTaskInfo() {
-        taskInfo = null;
-    }
-
-    /**
-     * Compare the the job of the receiver to job2.
-     * 
-     * @param jobInfo
-     *            The info we are comparing to
-     * @return @see Comparable#compareTo(java.lang.Object)
-     */
-    private int compareJobs(JobInfo jobInfo) {
-
-        Job job2 = jobInfo.getJob();
-
-        //User jobs have top priority
-        if (job.isUser()) {
-            if (!job2.isUser()) {
-				return -1;
-			}
-        } else {
-            if (job2.isUser()) {
-				return 1;
-			}
-        }
-
-        //Show the blocked ones last
-        if (isBlocked()) {
-            if (!jobInfo.isBlocked()) {
-				return 1;
-			}
-        } else {
-            if (jobInfo.isBlocked()) {
-				return -1;
-			}
-        }
-
-        if (job.getPriority() == job2.getPriority()) {
-            return job.getName().compareTo(job2.getName());
-        }
-
-        if (job.getPriority() > job2.getPriority()) {
-			return -1;
-		}
-        return 1;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public int compareTo(Object arg0) {
-
-        if (!(arg0 instanceof JobInfo)) {
-			return super.compareTo(arg0);
-		}
-        JobInfo element = (JobInfo) arg0;
-
-        //If the receiver is cancelled then it is lowest priority
-        if (isCanceled() && !element.isCanceled()) {
-			return 1;
-		}
-
-        if (element.getJob().getState() == getJob().getState()) {
-			return compareJobs(element);
-		}
-
-        if (getJob().getState() == Job.RUNNING) {
-			return -1;
-		}
-        return 1;
-
-    }
-
-    /**
-     * Dispose of the receiver.
-     */
-    void dispose() {
-        if (parent != null) {
-			parent.removeJobInfo(this);
-		}
-    }
-
-    /**
-     * Return the blocked status or <code>null</code> if there isn't one.
-     * 
-     * @return Returns the blockedStatus.
-     */
-    public IStatus getBlockedStatus() {
-        return blockedStatus;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren()
-     */
-    Object[] getChildren() {
-        return children.toArray();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#getCondensedDisplayString()
-     */
-    String getCondensedDisplayString() {
-    	TaskInfo info = getTaskInfo();
-        if (info != null) {
-			return info.getDisplayStringWithoutTask(true);
-		}
-        return getJob().getName();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayImage()
-     */
-    public Image getDisplayImage() {
-        int done = getPercentDone();
-        if (done > 0) {
-            return super.getDisplayImage();
-        }
-        if (isBlocked()) {
-			return JFaceResources.getImage(ProgressManager.BLOCKED_JOB_KEY);
-		}
-        int state = getJob().getState();
-        if (state == Job.SLEEPING) {
-			return JFaceResources.getImage(ProgressManager.SLEEPING_JOB_KEY);
-		}
-        if (state == Job.WAITING) {
-			return JFaceResources.getImage(ProgressManager.WAITING_JOB_KEY);
-		}
-        //By default return the first progress image
-        return super.getDisplayImage();
-
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString()
-     */
-    String getDisplayString() {
-    	return getDisplayString(true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString(boolean)
-     */
-    String getDisplayString(boolean showProgress) {
-        String name = getDisplayStringWithStatus(showProgress);
-        if (job.isSystem()) {
-			return NLS.bind(ProgressMessages.JobInfo_System, (new Object[] { name }));
-		}
-        return name;
-    }
-
-    /**
-     * Get the display string based on the current status and the name of the
-     * job.
-     * @param showProgress a boolean to indicate if we should
-     * show progress or not.
-     * 
-     * @return String
-     */
-    private String getDisplayStringWithStatus(boolean showProgress) {
-        if (isCanceled()) {
-			return NLS.bind(ProgressMessages.JobInfo_Cancelled, (new Object[] { getJob().getName() }));
-		}
-        if (isBlocked()) {
-			return NLS.bind(ProgressMessages.JobInfo_Blocked, (new Object[] { getJob().getName(),
-			blockedStatus.getMessage() }));
-		}
-        if (getJob().getState() == Job.RUNNING) {
-        	TaskInfo info = getTaskInfo();
-            if (info == null) {
-				return getJob().getName();
-			}
-            return info.getDisplayString(showProgress);
-        }
-        if (getJob().getState() == Job.SLEEPING) {
-			return NLS.bind(ProgressMessages.JobInfo_Sleeping, (new Object[] { getJob().getName() }));
-		}
-
-        return NLS.bind(ProgressMessages.JobInfo_Waiting, (new Object[] { getJob().getName() }));
-
-    }
-
-    /**
-     * Return the GroupInfo for the receiver if it' is active.
-     * 
-     * @return GroupInfo or <code>null</code>.
-     */
-    GroupInfo getGroupInfo() {
-        if (parent != null) {
-			return parent;
-		}
-        return null;
-    }
-
-    /**
-     * Return the job that the receiver is collecting data on.
-     * 
-     * @return Job
-     */
-    Job getJob() {
-        return job;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent()
-     */
-    Object getParent() {
-        return parent;
-    }
-
-    /**
-     * Return the amount of progress we have had as a percentage. If there is no
-     * progress or it is indeterminate return IProgressMonitor.UNKNOWN.
-     * 
-     * @return int
-     */
-    int getPercentDone() {
-    	TaskInfo info = getTaskInfo();
-        if (info != null){
-        	if(info.totalWork == IProgressMonitor.UNKNOWN) {
-				return IProgressMonitor.UNKNOWN;
-			}
-        	if(info.totalWork == 0) {
-				return 0;
-			}
-            return (int) info.preWork * 100 / info.totalWork;
-        }
-        return IProgressMonitor.UNKNOWN;
-    }
-
-    /**
-     * @return Returns the taskInfo.
-     */
-    TaskInfo getTaskInfo() {
-        return taskInfo;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren()
-     */
-    boolean hasChildren() {
-        return children.size() > 0;
-    }
-
-    /**
-     * Return whether or not there is a task.
-     * 
-     * @return boolean
-     */
-    boolean hasTaskInfo() {
-        return taskInfo != null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#isActive()
-     */
-    boolean isActive() {
-        return getJob().getState() != Job.NONE;
-    }
-
-    /**
-     * Return whether or not the receiver is blocked.
-     * 
-     * @return boolean <code>true</code> if this is a currently
-     * blocked job.
-     */
-    public boolean isBlocked() {
-        return getBlockedStatus() != null;
-    }
-
-    /**
-     * Return whether or not the job was cancelled in the UI.
-     * 
-     * @return boolean
-     */
-    public boolean isCanceled() {
-        return canceled;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#isCancellable()
-     */
-    public boolean isCancellable() {
-        return super.isCancellable();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.JobTreeElement#isJobInfo()
-     */
-    boolean isJobInfo() {
-        return true;
-    }
-
-    /**
-     * Set the description of the blocking status.
-     * 
-     * @param blockedStatus
-     *            The IStatus that describes the blockage or <code>null</code>
-     */
-    public void setBlockedStatus(IStatus blockedStatus) {
-        this.blockedStatus = blockedStatus;
-    }
-
-    /**
-     * Set the GroupInfo to be the group.
-     * 
-     * @param group
-     */
-    void setGroupInfo(GroupInfo group) {
-        parent = group;
-    }
-
-    /**
-     * Set the name of the taskInfo.
-     * 
-     * @param name
-     */
-    void setTaskName(String name) {
-        taskInfo.setTaskName(name);
-    }
-
-    /**
-     * Set the number of ticks this job represents. Default is indeterminate
-     * (-1).
-     * 
-     * @param ticks
-     *            The ticks to set.
-     */
-    public void setTicks(int ticks) {
-        this.ticks = ticks;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java
deleted file mode 100644
index 5809108..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The JobTreeElement is the abstract superclass of items displayed in the tree.
- */
-abstract class JobTreeElement implements Comparable {
-
-	/**
-	 * Return the parent of this object.
-	 * 
-	 * @return Object
-	 */
-	abstract Object getParent();
-
-	/**
-	 * Return whether or not the receiver has children.
-	 * 
-	 * @return boolean
-	 */
-	abstract boolean hasChildren();
-
-	/**
-	 * Return the children of the receiver.
-	 * 
-	 * @return Object[]
-	 */
-	abstract Object[] getChildren();
-
-	/**
-	 * Return the displayString for the receiver.
-	 * 
-	 * @return String
-	 */
-	abstract String getDisplayString();
-
-	/**
-	 * Return the displayString for the receiver.
-	 * 
-	 * @param showProgress
-	 *            Whether or not progress is being shown (if relevant).
-	 * @return String
-	 */
-	String getDisplayString(boolean showProgress) {
-		return getDisplayString();
-	}
-
-	/**
-	 * Get the image for the reciever. By default there is no image.
-	 * 
-	 * @return Image or <code>null</code>.
-	 */
-	public Image getDisplayImage() {
-		return null;
-	}
-
-	/**
-	 * Return the condensed version of the display string
-	 * 
-	 * @return String
-	 */
-	String getCondensedDisplayString() {
-		return getDisplayString();
-	}
-
-	/**
-	 * Return whether or not the receiver is an info.
-	 * 
-	 * @return boolean
-	 */
-	abstract boolean isJobInfo();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public int compareTo(Object arg0) {
-		if (arg0 instanceof JobTreeElement)
-			return getDisplayString().compareTo(
-					((JobTreeElement) arg0).getDisplayString());
-		return 0;
-	}
-
-	/**
-	 * Return whether or not this is currently active.
-	 * 
-	 * @return boolean
-	 */
-	abstract boolean isActive();
-
-	/**
-	 * Return whether or not the receiver can be cancelled.
-	 * 
-	 * @return boolean
-	 */
-	public boolean isCancellable() {
-		return false;
-	}
-
-	/**
-	 * Cancel the receiver.
-	 */
-	public void cancel() {
-		// By default do nothing.
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java
deleted file mode 100644
index 8db6f8c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobsViewPreferenceDialog.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Sebastian Davids  <sdavids@gmx.de> - Fix for Bug 132156 [Dialogs] Progress Preferences dialog problems
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.preference.BooleanFieldEditor;
-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.Shell;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.preferences.ViewSettingsDialog;
-
-/**
- * The JobsViewPreferenceDialog is the dialog that
- * allows the user to set the preferences.
- */
-public class JobsViewPreferenceDialog extends ViewSettingsDialog {
-
-	private BooleanFieldEditor verboseEditor;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * @param parentShell
-	 */
-	public JobsViewPreferenceDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void configureShell(Shell newShell) {
-		super.configureShell(newShell);
-		newShell.setText(ProgressMessages.JobsViewPreferenceDialog_Title);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite top = (Composite) super.createDialogArea(parent);
-		
-		Composite editArea = new Composite(top, SWT.NONE);
-		editArea.setLayout(new GridLayout());
-		editArea.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
-		
-		verboseEditor = new BooleanFieldEditor("verbose", ProgressMessages.JobsViewPreferenceDialog_Note, editArea);//$NON-NLS-1$ 
-		verboseEditor.setPreferenceName(IWorkbenchPreferenceConstants.SHOW_SYSTEM_JOBS);
-		verboseEditor.setPreferenceStore(PrefUtil.getAPIPreferenceStore());
-		verboseEditor.load();
-		
-		Dialog.applyDialogFont(top);
-		
-		return top;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-	 */
-	protected void okPressed() {
-		verboseEditor.store();
-		super.okPressed();
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.preferences.ViewSettingsDialog#performDefaults()
-	 */
-	protected void performDefaults() {
-		verboseEditor.loadDefault();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
deleted file mode 100644
index 607487e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.progress.IProgressConstants;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * The ProgressAnimationItem is the animation items that uses the progress bar.
- */
-public class ProgressAnimationItem extends AnimationItem implements
-		FinishedJobs.KeptJobsListener {
-
-	ProgressBar bar;
-
-	MouseListener mouseListener;
-
-	Composite top;
-
-	ToolBar toolbar;
-
-	ToolItem toolButton;
-
-	ProgressRegion progressRegion;
-
-	Image noneImage, okImage, errorImage;
-
-	boolean animationRunning;
-
-	// ProgressBar flags
-	private int flags;
-
-	/**
-	 * Create an instance of the receiver in the supplied region.
-	 * 
-	 * @param region
-	 *            The ProgressRegion that contains the receiver.
-	 * @param flags
-	 *            flags to use for creation of the progress bar
-	 */
-	ProgressAnimationItem(ProgressRegion region, int flags) {
-		super(region.workbenchWindow);
-		this.flags = flags;
-		FinishedJobs.getInstance().addListener(this);
-
-		progressRegion = region;
-		mouseListener = new MouseAdapter() {
-			public void mouseDoubleClick(MouseEvent e) {
-				doAction();
-			}
-		};
-	}
-
-	void doAction() {
-
-		JobTreeElement[] jobTreeElements = FinishedJobs.getInstance()
-				.getKeptElements();
-		// search from end (youngest)
-		for (int i = jobTreeElements.length - 1; i >= 0; i--) {
-			if (jobTreeElements[i] instanceof JobInfo) {
-				JobInfo ji = (JobInfo) jobTreeElements[i];
-				Job job = ji.getJob();
-				if (job != null) {
-
-					IStatus status = job.getResult();
-					if (status != null && status.getSeverity() == IStatus.ERROR) {
-						StatusAdapter statusAdapter = StatusAdapterHelper
-								.getInstance().getStatusAdapter(ji);
-
-						if (statusAdapter == null) 
-							statusAdapter = new StatusAdapter(status);
-
-						StatusManager.getManager().handle(statusAdapter,
-								StatusManager.SHOW);
-
-						JobTreeElement topElement = (JobTreeElement) ji
-								.getParent();
-						if (topElement == null) {
-							topElement = ji;
-						}
-						FinishedJobs.getInstance().remove(topElement);
-					}
-
-					IAction action = null;
-					Object property = job
-							.getProperty(IProgressConstants.ACTION_PROPERTY);
-					if (property instanceof IAction) {
-						action = (IAction) property;
-					}
-					if (action != null && action.isEnabled()) {
-						action.run();
-						JobTreeElement topElement = (JobTreeElement) ji
-								.getParent();
-						if (topElement == null) {
-							topElement = ji;
-						}
-						FinishedJobs.getInstance().remove(topElement);
-						return;
-					}
-				}
-			}
-		}
-
-		progressRegion.processDoubleClick();
-		refresh();
-	}
-
-	private IAction getAction(Job job) {
-		Object property = job.getProperty(IProgressConstants.ACTION_PROPERTY);
-		if (property instanceof IAction) {
-			return (IAction) property;
-		}
-		return null;
-	}
-
-	private void refresh() {
-
-		// Abort the refresh if we are in the process of shutting down
-		if (!PlatformUI.isWorkbenchRunning()) {
-			return;
-		}
-
-		if (toolbar == null || toolbar.isDisposed()) {
-			return;
-		}
-
-		JobTreeElement[] jobTreeElements = FinishedJobs.getInstance()
-				.getKeptElements();
-		// search from end (youngest)
-		for (int i = jobTreeElements.length - 1; i >= 0; i--) {
-			if (jobTreeElements[i] instanceof JobInfo) {
-				JobInfo ji = (JobInfo) jobTreeElements[i];
-				Job job = ji.getJob();
-				if (job != null) {
-					IStatus status = job.getResult();
-					if (status != null && status.getSeverity() == IStatus.ERROR) {
-						// green arrow with error overlay
-						initButton(errorImage, NLS.bind(
-								ProgressMessages.ProgressAnimationItem_error,
-								job.getName()));
-						return;
-					}
-					IAction action = getAction(job);
-					if (action != null && action.isEnabled()) {
-						// green arrow with exclamation mark
-						String tt = action.getToolTipText();
-						if (tt == null || tt.trim().length() == 0) {
-							tt = NLS.bind(
-									ProgressMessages.ProgressAnimationItem_ok,
-									job.getName());
-						}
-						initButton(okImage, tt);
-						return;
-					}
-					// just the green arrow
-					initButton(noneImage,
-							ProgressMessages.ProgressAnimationItem_tasks);
-					return;
-				}
-			}
-		}
-
-		if (animationRunning) {
-			initButton(noneImage, ProgressMessages.ProgressAnimationItem_tasks);
-			return;
-		}
-
-		// if nothing found hide tool item
-		toolbar.setVisible(false);
-	}
-
-	private void initButton(Image im, final String tt) {
-		toolButton.setImage(im);
-		toolButton.setToolTipText(tt);
-    	toolbar.setVisible(true);
-		toolbar.getParent().layout(); // must layout
-		
-    	toolbar.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-        	public void getName(AccessibleEvent e) {
-        		e.result = tt;
-        	}
-        });
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.AnimationItem#createAnimationItem(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createAnimationItem(Composite parent) {
-
-		if (okImage == null) {
-			Display display = parent.getDisplay();
-			noneImage = WorkbenchImages.getWorkbenchImageDescriptor(
-					"progress/progress_none.gif").createImage(display); //$NON-NLS-1$
-			okImage = WorkbenchImages.getWorkbenchImageDescriptor(
-					"progress/progress_ok.gif").createImage(display); //$NON-NLS-1$
-			errorImage = WorkbenchImages.getWorkbenchImageDescriptor(
-					"progress/progress_error.gif").createImage(display); //$NON-NLS-1$
-		}
-
-		top = new Composite(parent, SWT.NULL);
-		top.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				FinishedJobs.getInstance().removeListener(
-						ProgressAnimationItem.this);
-				noneImage.dispose();
-				okImage.dispose();
-				errorImage.dispose();
-			}
-		});
-
-		boolean isCarbon = "carbon".equals(SWT.getPlatform()); //$NON-NLS-1$
-
-		GridLayout gl = new GridLayout();
-		if (isHorizontal())
-			gl.numColumns = isCarbon ? 3 : 2;
-		gl.marginHeight = 0;
-		gl.marginWidth = 0;
-		if (isHorizontal()) {
-			gl.horizontalSpacing = 2;
-		} else {
-			gl.verticalSpacing = 2;
-		}
-		top.setLayout(gl);
-
-		bar = new ProgressBar(top, flags | SWT.INDETERMINATE);
-		bar.setVisible(false);
-		bar.addMouseListener(mouseListener);
-
-		GridData gd;
-		int hh = 12;
-		if (isHorizontal()) {
-			gd = new GridData(SWT.BEGINNING, SWT.CENTER, true, false);
-			gd.heightHint = hh;
-		} else {
-			gd = new GridData(SWT.CENTER, SWT.BEGINNING, false, true);
-			gd.widthHint = hh;
-		}
-
-		bar.setLayoutData(gd);
-
-		toolbar = new ToolBar(top, SWT.FLAT);
-		toolbar.setVisible(false);
-
-		toolButton = new ToolItem(toolbar, SWT.NONE);
-		toolButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				doAction();
-			}
-		});
-
-		if (isCarbon) {
-			new Label(top, SWT.NONE).setLayoutData(new GridData(4, 4));
-		}
-
-		refresh();
-
-		return top;
-	}
-
-	/**
-	 * @return <code>true</code> if the control is horizontally oriented
-	 */
-	private boolean isHorizontal() {
-		return (flags & SWT.HORIZONTAL) != 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.AnimationItem#getControl()
-	 */
-	public Control getControl() {
-		return top;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.AnimationItem#animationDone()
-	 */
-	void animationDone() {
-		super.animationDone();
-		animationRunning = false;
-		if (bar.isDisposed()) {
-			return;
-		}
-		bar.setVisible(false);
-		refresh();
-	}
-
-	/**
-	 * @return <code>true</code> when the animation is running
-	 */
-	public boolean animationRunning() {
-		return animationRunning;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.AnimationItem#animationStart()
-	 */
-	void animationStart() {
-		super.animationStart();
-		animationRunning = true;
-		if (bar.isDisposed()) {
-			return;
-		}
-		bar.setVisible(true);
-		refresh();
-	}
-
-	public void removed(JobTreeElement info) {
-		final Display display = Display.getDefault();
-		display.asyncExec(new Runnable() {
-			public void run() {
-				refresh();
-			}
-		});
-	}
-
-	public void finished(final JobTreeElement jte) {
-		final Display display = Display.getDefault();
-		display.asyncExec(new Runnable() {
-			public void run() {
-				refresh();
-			}
-		});
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java
deleted file mode 100644
index 2fe128a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationProcessor.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * The ProgressAnimationProcessor is the processor for the animation using the
- * system progress.
- */
-class ProgressAnimationProcessor implements IAnimationProcessor {
-
-    AnimationManager manager;
-
-    /**
-     * Create a new instance of the receiver and listen to the animation
-     * manager.
-     * 
-     * @param animationManager
-     */
-    ProgressAnimationProcessor(AnimationManager animationManager) {
-        manager = animationManager;
-    }
-
-    List items = Collections.synchronizedList(new ArrayList());
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#startAnimation(org.eclipse.core.runtime.IProgressMonitor)
-     */
-    public void startAnimationLoop(IProgressMonitor monitor) {
-
-        // Create an off-screen image to draw on, and a GC to draw with.
-        // Both are disposed after the animation.
-        if (items.size() == 0) {
-			return;
-		}
-        if (!PlatformUI.isWorkbenchRunning()) {
-			return;
-		}
-
-        while (manager.isAnimated() && !monitor.isCanceled()) {
-            //Do nothing while animation is happening
-        }
-
-        ProgressAnimationItem[] animationItems = getAnimationItems();
-        for (int i = 0; i < animationItems.length; i++) {
-            animationItems[i].animationDone();
-        }
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#addItem(org.eclipse.ui.internal.progress.AnimationItem)
-     */
-    public void addItem(AnimationItem item) {
-        Assert.isTrue(item instanceof ProgressAnimationItem);
-        items.add(item);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#removeItem(org.eclipse.ui.internal.progress.AnimationItem)
-     */
-    public void removeItem(AnimationItem item) {
-        Assert.isTrue(item instanceof ProgressAnimationItem);
-        items.remove(item);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#hasItems()
-     */
-    public boolean hasItems() {
-        return items.size() > 0;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#itemsInactiveRedraw()
-     */
-    public void itemsInactiveRedraw() {
-        //Nothing to do here as SWT handles redraw
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#animationStarted(org.eclipse.core.runtime.IProgressMonitor)
-     */
-    public void animationStarted() {
-        AnimationItem[] animationItems = getAnimationItems();
-        for (int i = 0; i < animationItems.length; i++) {
-            animationItems[i].animationStart();
-        }
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#getPreferredWidth()
-     */
-    public int getPreferredWidth() {
-        return 30;
-    }
-
-    /**
-     * Get the animation items currently registered for the receiver.
-     * 
-     * @return ProgressAnimationItem[]
-     */
-    private ProgressAnimationItem[] getAnimationItems() {
-        ProgressAnimationItem[] animationItems = new ProgressAnimationItem[items
-                .size()];
-        items.toArray(animationItems);
-        return animationItems;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#animationFinished()
-     */
-    public void animationFinished() {
-        AnimationItem[] animationItems = getAnimationItems();
-        for (int i = 0; i < animationItems.length; i++) {
-            animationItems[i].animationDone();
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.IAnimationProcessor#isProcessorJob(org.eclipse.core.runtime.jobs.Job)
-     */
-    public boolean isProcessorJob(Job job) {
-        // We have no jobs
-        return false;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java
deleted file mode 100644
index 7415cc9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressCanvasViewer.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.Transform;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.internal.TrimUtil;
-
-/**
- * The ProgressCanvasViewer is the viewer used by progress windows. It displays text
- * on the canvas.
- */
-public class ProgressCanvasViewer extends AbstractProgressViewer {
-    Canvas canvas;
-
-    Object[] displayedItems = new Object[0];
-
-    private final static List EMPTY_LIST = new ArrayList();
-
-    /**
-     * Font metrics to use for determining pixel sizes.
-     */
-    private FontMetrics fontMetrics;
-
-    private int numShowItems = 1;
-
-    private int maxCharacterWidth;
-
-	private int orientation = SWT.HORIZONTAL;
-
-    /**
-     * Create a new instance of the receiver with the supplied
-     * parent and style bits.
-     * @param parent The composite the Canvas is created in
-     * @param style style bits for the canvas
-     * @param itemsToShow the number of items this will show
-     * @param numChars The number of characters for the width hint.
-     * @param side the side to display text, this helps determine horizontal vs vertical
-     */
-    ProgressCanvasViewer(Composite parent, int style, int itemsToShow, int numChars, int orientation) {
-        super();
-        this.orientation = orientation;
-        numShowItems = itemsToShow;
-        maxCharacterWidth = numChars;
-        canvas = new Canvas(parent, style);
-        hookControl(canvas);
-        // Compute and store a font metric
-        GC gc = new GC(canvas);
-        gc.setFont(JFaceResources.getDefaultFont());
-        fontMetrics = gc.getFontMetrics();
-        gc.dispose();
-        initializeListeners();
-    }
-
-    /**
-     * NE: Copied from ContentViewer.  We don't want the OpenStrategy hooked
-     * in StructuredViewer.hookControl otherwise the canvas will take focus
-     * since it has a key listener.  We don't want this included in the window's
-     * tab traversal order.  Defeating it here is more self-contained then 
-     * setting the tab list on the shell or other parent composite.
-     */
-    protected void hookControl(Control control) {
-        control.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent event) {
-                handleDispose(event);
-            }
-        });
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#doFindInputItem(java.lang.Object)
-     */
-    protected Widget doFindInputItem(Object element) {
-        return null; // No widgets associated with items
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#doFindItem(java.lang.Object)
-     */
-    protected Widget doFindItem(Object element) {
-        return null; // No widgets associated with items
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#doUpdateItem(org.eclipse.swt.widgets.Widget,
-     *      java.lang.Object, boolean)
-     */
-    protected void doUpdateItem(Widget item, Object element, boolean fullMap) {
-        canvas.redraw();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget()
-     */
-    protected List getSelectionFromWidget() {
-        //No selection on a Canvas
-        return EMPTY_LIST;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#internalRefresh(java.lang.Object)
-     */
-    protected void internalRefresh(Object element) {
-        displayedItems = getSortedChildren(getRoot());
-        canvas.redraw();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#reveal(java.lang.Object)
-     */
-    public void reveal(Object element) {
-        //Nothing to do here as we do not scroll
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.StructuredViewer#setSelectionToWidget(java.util.List,
-     *      boolean)
-     */
-    protected void setSelectionToWidget(List l, boolean reveal) {
-        //Do nothing as there is no selection
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.Viewer#getControl()
-     */
-    public Control getControl() {
-        return canvas;
-    }
-
-    private void initializeListeners() {
-        canvas.addPaintListener(new PaintListener() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)
-             */
-            public void paintControl(PaintEvent event) {
-
-                GC gc = event.gc;
-                Transform transform = null;
-                if (orientation == SWT.VERTICAL) {
-	                transform = new Transform(event.display);
-	            	transform.translate(TrimUtil.TRIM_DEFAULT_HEIGHT, 0);
-	            	transform.rotate(90);
-                }
-                ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
-
-                int itemCount = Math.min(displayedItems.length, numShowItems);
-
-                int yOffset = 0;
-                int xOffset = 0;
-                if (numShowItems == 1) {//If there is a single item try to center it
-                    Rectangle clientArea = canvas.getParent().getClientArea();
-                    if (orientation == SWT.HORIZONTAL) {
-                    	int size = clientArea.height;
-	                    yOffset = size - (fontMetrics.getHeight());
-	                    yOffset = yOffset / 2;
-                    } else {
-                    	int size = clientArea.width;
-                    	xOffset = size - (fontMetrics.getHeight());
-                    	xOffset = xOffset / 2;
-                    }
-                }
-
-                for (int i = 0; i < itemCount; i++) {
-                    String string = labelProvider.getText(displayedItems[i]);
-                    if(string == null) {
-						string = "";//$NON-NLS-1$
-					}
-                    if (orientation == SWT.HORIZONTAL) {
-                    	gc.drawString(string, 2, yOffset + (i * fontMetrics.getHeight()), true);
-                    } else {
-		            	gc.setTransform(transform);
-                    	gc.drawString(string, xOffset + (i * fontMetrics.getHeight()), 2, true);
-                    }
-                }
-                if (transform != null)
-                	transform.dispose();
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ContentViewer#setLabelProvider(org.eclipse.jface.viewers.IBaseLabelProvider)
-     */
-    public void setLabelProvider(IBaseLabelProvider labelProvider) {
-        Assert.isTrue(labelProvider instanceof ILabelProvider);
-        super.setLabelProvider(labelProvider);
-    }
-
-    /**
-     * Get the size hints for the receiver. These are used for 
-     * layout data.
-     * @return Point - the preferred x and y coordinates
-     */
-    public Point getSizeHints() {
-
-        Display display = canvas.getDisplay();
-
-        GC gc = new GC(canvas);
-        FontMetrics fm = gc.getFontMetrics();
-        int charWidth = fm.getAverageCharWidth();
-        int charHeight = fm.getHeight();
-        int maxWidth = display.getBounds().width / 2;
-        int maxHeight = display.getBounds().height / 6;
-        int fontWidth = charWidth * maxCharacterWidth;
-        int fontHeight = charHeight * numShowItems;
-        if (maxWidth < fontWidth) {
-			fontWidth = maxWidth;
-		}
-        if (maxHeight < fontHeight) {
-			fontHeight = maxHeight;
-		}
-        gc.dispose();
-        return new Point(fontWidth, fontHeight);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.progress.AbstractProgressViewer#add(java.lang.Object[])
-	 */
-	public void add(Object[] elements) {
-		refresh(true);
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.progress.AbstractProgressViewer#remove(java.lang.Object[])
-	 */
-	public void remove(Object[] elements) {
-		refresh(true);
-		
-	}
-
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java
deleted file mode 100644
index 965c0c3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * The ProgressContentProvider is the content provider used for classes that
- * listen to the progress changes.
- */
-public abstract class ProgressContentProvider implements
-        IProgressUpdateCollector, IStructuredContentProvider {
-
-	/**
-	 * Return whether or not we check the preferences or overide.
-	 */
-    private boolean canShowDebug = false;
-
-    /**
-     * Create a new instance of the receiver with all of the
-     * default values.  
-     */
-    public ProgressContentProvider() {
-    	ProgressViewUpdater.getSingleton().addCollector(this);
-    }
-
-    /**
-     * Create a new instance of the receiver with a flag to 
-     * indicate if there will be debug info shown or not.
-     * @param debug If true debug information will be shown
-     * if the debug flag in the ProgressManager is true.
-     */
-    public ProgressContentProvider(boolean debug) {
-    	this();
-    	canShowDebug = debug;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-     */
-    public Object[] getElements(Object inputElement) {
-
-        return ProgressManager.getInstance().getRootElements(debug());
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-     */
-    public void dispose() {
-        ProgressViewUpdater.getSingleton().removeCollector(this);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-     *      java.lang.Object, java.lang.Object)
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        //No change when input changes
-    }
-    
-    /**
-     * Return whether or not we are debugging. Check the
-     * system settings unless we are overiding them.
-     * @return boolean <code>true</code> if debug
-     * (system) jobs are being shown.
-     */
-    public boolean debug(){
-    	if(!canShowDebug) {
-			return false;
-		}
-    	return ProgressViewUpdater.getSingleton().debug;
-    	
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java
deleted file mode 100644
index a06625b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressInfoItem.java
+++ /dev/null
@@ -1,977 +0,0 @@
-package org.eclipse.ui.internal.progress;
-
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-import java.net.URL;
-import com.ibm.icu.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-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.*;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.layout.GridData;
-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.Link;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.progress.IProgressConstants;
-
-/**
- * ProgressInfoItem is the item used to show jobs.
- * 
- * @since 3.1
- * 
- */
-class ProgressInfoItem extends Composite {
-
-	static String STOP_IMAGE_KEY = "org.eclipse.ui.internal.progress.PROGRESS_STOP"; //$NON-NLS-1$
-
-	static String DISABLED_STOP_IMAGE_KEY = "org.eclipse.ui.internal.progress.DISABLED_PROGRESS_STOP"; //$NON-NLS-1$
-
-	static String CLEAR_FINISHED_JOB_KEY = "org.eclipse.ui.internal.progress.CLEAR_FINISHED_JOB"; //$NON-NLS-1$
-
-	static String DISABLED_CLEAR_FINISHED_JOB_KEY = "org.eclipse.ui.internal.progress.DISABLED_CLEAR_FINISHED_JOB"; //$NON-NLS-1$
-
-	static String DEFAULT_JOB_KEY = "org.eclipse.ui.internal.progress.PROGRESS_DEFAULT"; //$NON-NLS-1$
-
-	static String DARK_COLOR_KEY = "org.eclipse.ui.internal.progress.PROGRESS_DARK_COLOR"; //$NON-NLS-1$
-
-	JobTreeElement info;
-
-	Label progressLabel;
-
-	ToolBar actionBar;
-
-	ToolItem actionButton;
-
-	List taskEntries = new ArrayList(0);
-
-	private ProgressBar progressBar;
-
-	private Label jobImageLabel;
-
-	static final int MAX_PROGRESS_HEIGHT = 12;
-
-	static final int MIN_ICON_SIZE = 16;
-
-	private static final String TEXT_KEY = "Text"; //$NON-NLS-1$
-
-	private static final String ACTION_KEY = "Action";//$NON-NLS-1$
-
-	interface IndexListener {
-		/**
-		 * Select the item previous to the receiver.
-		 */
-		public void selectPrevious();
-
-		/**
-		 * Select the next previous to the receiver.
-		 */
-		public void selectNext();
-
-		/**
-		 * Select the receiver.
-		 */
-		public void select();
-	}
-
-	IndexListener indexListener;
-
-	private int currentIndex;
-
-	private boolean selected;
-
-	private MouseAdapter mouseListener;
-
-	private boolean isShowing = true;
-
-	private ResourceManager resourceManager;
-
-	static {
-		JFaceResources
-				.getImageRegistry()
-				.put(
-						STOP_IMAGE_KEY,
-						WorkbenchImages
-								.getWorkbenchImageDescriptor("elcl16/progress_stop.gif"));//$NON-NLS-1$
-
-		JFaceResources
-				.getImageRegistry()
-				.put(
-						DISABLED_STOP_IMAGE_KEY,
-						WorkbenchImages
-								.getWorkbenchImageDescriptor("dlcl16/progress_stop.gif"));//$NON-NLS-1$
-
-		JFaceResources
-				.getImageRegistry()
-				.put(
-						DEFAULT_JOB_KEY,
-						WorkbenchImages
-								.getWorkbenchImageDescriptor("progress/progress_task.gif")); //$NON-NLS-1$
-
-		JFaceResources
-				.getImageRegistry()
-				.put(
-						CLEAR_FINISHED_JOB_KEY,
-						WorkbenchImages
-								.getWorkbenchImageDescriptor("elcl16/progress_rem.gif")); //$NON-NLS-1$
-
-		JFaceResources
-				.getImageRegistry()
-				.put(
-						DISABLED_CLEAR_FINISHED_JOB_KEY,
-						WorkbenchImages
-								.getWorkbenchImageDescriptor("dlcl16/progress_rem.gif")); //$NON-NLS-1$
-
-		// Mac has different Gamma value
-		int shift = "carbon".equals(SWT.getPlatform()) ? -25 : -10;//$NON-NLS-1$ 
-
-		Color lightColor = PlatformUI.getWorkbench().getDisplay()
-				.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
-
-		// Determine a dark color by shifting the list color
-		RGB darkRGB = new RGB(Math.max(0, lightColor.getRed() + shift), Math
-				.max(0, lightColor.getGreen() + shift), Math.max(0, lightColor
-				.getBlue()
-				+ shift));
-		JFaceResources.getColorRegistry().put(DARK_COLOR_KEY, darkRGB);
-	}
-
-	/**
-	 * Create a new instance of the receiver with the specified parent, style
-	 * and info object/
-	 * 
-	 * @param parent
-	 * @param style
-	 * @param progressInfo
-	 */
-	public ProgressInfoItem(Composite parent, int style,
-			JobTreeElement progressInfo) {
-		super(parent, style);
-		info = progressInfo;
-		createChildren();
-		setData(info);
-		setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
-	}
-
-	/**
-	 * Create the child widgets of the receiver.
-	 */
-	/**
-	 * 
-	 */
-	protected void createChildren() {
-
-		FormLayout layout = new FormLayout();
-		setLayout(layout);
-
-		jobImageLabel = new Label(this, SWT.NONE);
-		jobImageLabel.setImage(getInfoImage());
-		FormData imageData = new FormData();
-		imageData.top = new FormAttachment(IDialogConstants.VERTICAL_SPACING);
-		imageData.left = new FormAttachment(
-				IDialogConstants.HORIZONTAL_SPACING / 2);
-		jobImageLabel.setLayoutData(imageData);
-
-		progressLabel = new Label(this, SWT.NONE);
-		setMainText();
-
-		actionBar = new ToolBar(this, SWT.FLAT);
-		actionBar.setCursor(getDisplay().getSystemCursor(SWT.CURSOR_ARROW)); // set
-		// cursor
-		// to
-		// overwrite
-		// any
-		// busy
-
-		// cursor we might have
-		actionButton = new ToolItem(actionBar, SWT.NONE);
-		actionButton
-				.setToolTipText(ProgressMessages.NewProgressView_CancelJobToolTip);
-		actionButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				actionButton.setEnabled(false);
-				cancelOrRemove();
-			}
-
-		});
-		actionBar.addListener(SWT.Traverse, new Listener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-			 */
-			public void handleEvent(Event event) {
-				if (indexListener == null) {
-					return;
-				}
-				int detail = event.detail;
-				if (detail == SWT.TRAVERSE_ARROW_NEXT) {
-					indexListener.selectNext();
-				}
-				if (detail == SWT.TRAVERSE_ARROW_PREVIOUS) {
-					indexListener.selectPrevious();
-				}
-
-			}
-		});
-		updateToolBarValues();
-
-		FormData progressData = new FormData();
-		progressData.top = new FormAttachment(IDialogConstants.VERTICAL_SPACING);
-		progressData.left = new FormAttachment(jobImageLabel,
-				IDialogConstants.HORIZONTAL_SPACING / 2);
-		progressData.right = new FormAttachment(actionBar,
-				IDialogConstants.HORIZONTAL_SPACING);
-		progressLabel.setLayoutData(progressData);
-
-		mouseListener = new MouseAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events.MouseEvent)
-			 */
-			public void mouseDown(MouseEvent e) {
-				if (indexListener != null) {
-					indexListener.select();
-				}
-			}
-		};
-		addMouseListener(mouseListener);
-		jobImageLabel.addMouseListener(mouseListener);
-		progressLabel.addMouseListener(mouseListener);
-
-		setLayoutsForNoProgress();
-
-		refresh();
-	}
-
-	/**
-	 * Set the main text of the receiver. Truncate to fit the available space.
-	 */
-	private void setMainText() {
-		progressLabel
-				.setText(Dialog.shortenText(getMainTitle(), progressLabel));
-	}
-
-	/**
-	 * Set the layout of the widgets for the no progress case.
-	 * 
-	 */
-	private void setLayoutsForNoProgress() {
-
-		FormData buttonData = new FormData();
-		buttonData.top = new FormAttachment(progressLabel, 0, SWT.TOP);
-		buttonData.right = new FormAttachment(100,
-				IDialogConstants.HORIZONTAL_SPACING * -1);
-
-		actionBar.setLayoutData(buttonData);
-		if (taskEntries.size() > 0) {
-			FormData linkData = new FormData();
-			linkData.top = new FormAttachment(progressLabel,
-					IDialogConstants.VERTICAL_SPACING);
-			linkData.left = new FormAttachment(progressLabel, 0, SWT.LEFT);
-			linkData.right = new FormAttachment(actionBar, 0, SWT.LEFT);
-			((Link) taskEntries.get(0)).setLayoutData(linkData);
-
-		}
-	}
-
-	/**
-	 * Cancel or remove the reciever.
-	 * 
-	 */
-	protected void cancelOrRemove() {
-
-		if (FinishedJobs.getInstance().isKept(info) && isCompleted()) {
-			FinishedJobs.getInstance().remove(info);
-		} else {
-			info.cancel();
-		}
-
-	}
-
-	/**
-	 * Get the image for the info.
-	 * 
-	 * @return Image
-	 */
-	private Image getInfoImage() {
-
-		if (!info.isJobInfo()) {
-			return JFaceResources.getImage(DEFAULT_JOB_KEY);
-		}
-
-		JobInfo jobInfo = (JobInfo) info;
-
-		ImageDescriptor descriptor = null;
-		Object property = jobInfo.getJob().getProperty(
-				IProgressConstants.ICON_PROPERTY);
-
-		if (property instanceof ImageDescriptor) {
-			descriptor = (ImageDescriptor) property;
-		} else if (property instanceof URL) {
-			descriptor = ImageDescriptor.createFromURL((URL) property);
-		}
-
-		Image image = null;
-		if (descriptor == null) {
-			image = ProgressManager.getInstance().getIconFor(jobInfo.getJob());
-		} else {
-			image = getResourceManager().createImageWithDefault(descriptor);
-		}
-
-		if (image == null)
-			image = jobInfo.getDisplayImage();
-
-		return image;
-	}
-
-	/**
-	 * Return a resource manager for the receiver.
-	 * 
-	 * @return {@link ResourceManager}
-	 */
-	private ResourceManager getResourceManager() {
-		if (resourceManager == null)
-			resourceManager = new LocalResourceManager(JFaceResources
-					.getResources());
-		return resourceManager;
-	}
-
-	/**
-	 * Get the main title for the receiver.
-	 * 
-	 * @return String
-	 */
-	private String getMainTitle() {
-		if (info.isJobInfo()) {
-			return getJobNameAndStatus((JobInfo) info);
-		}
-		if (info.hasChildren()) {
-			return ((GroupInfo) info).getTaskName();
-		}
-		return info.getDisplayString();
-
-	}
-
-	/**
-	 * Get the name and status for a jobInfo
-	 * 
-	 * @return String
-	 */
-	protected String getJobNameAndStatus(JobInfo jobInfo) {
-
-		Job job = jobInfo.getJob();
-
-		String name = job.getName();
-
-		if (job.isSystem()) {
-			name = NLS.bind(ProgressMessages.JobInfo_System, name);
-		}
-
-		if (jobInfo.isCanceled()) {
-			if (job.getState() == Job.RUNNING)
-				return NLS
-						.bind(ProgressMessages.JobInfo_Cancel_Requested, name);
-			return NLS.bind(ProgressMessages.JobInfo_Cancelled, name);
-		}
-
-		if (jobInfo.isBlocked()) {
-			IStatus blockedStatus = jobInfo.getBlockedStatus();
-			return NLS.bind(ProgressMessages.JobInfo_Blocked, name,
-					blockedStatus.getMessage());
-		}
-
-		switch (job.getState()) {
-		case Job.RUNNING:
-			return name;
-		case Job.SLEEPING: {
-			return NLS.bind(ProgressMessages.JobInfo_Sleeping, name);
-
-		}
-		case Job.NONE: // Only happens for kept jobs
-			return getJobInfoFinishedString(job, true);
-		default:
-			return NLS.bind(ProgressMessages.JobInfo_Waiting, name);
-		}
-	}
-
-	/**
-	 * Return the finished String for a job.
-	 * 
-	 * @param job
-	 *            the completed Job
-	 * @param withTime
-	 * @return String
-	 */
-	String getJobInfoFinishedString(Job job, boolean withTime) {
-		String time = null;
-		if (withTime) {
-			time = getTimeString();
-		}
-		if (time != null) {
-			return NLS.bind(ProgressMessages.JobInfo_FinishedAt, job.getName(),
-					time);
-		}
-		return NLS.bind(ProgressMessages.JobInfo_Finished, job.getName());
-	}
-
-	/**
-	 * Get the time string the finished job
-	 * 
-	 * @return String or <code>null</code> if this is not one of the finished
-	 *         jobs.
-	 */
-	private String getTimeString() {
-		Date date = FinishedJobs.getInstance().getFinishDate(info);
-		if (date != null) {
-			return DateFormat.getTimeInstance(DateFormat.SHORT).format(date);
-		}
-		return null;
-	}
-
-	/**
-	 * Refresh the contents of the receiver.
-	 * 
-	 */
-	void refresh() {
-
-		// Don't refresh if not visible
-		if (isDisposed() || !isShowing)
-			return;
-
-		jobImageLabel.setImage(getInfoImage());
-		int percentDone = getPercentDone();
-
-		JobInfo[] infos = getJobInfos();
-		if (isRunning()) {
-			if (progressBar == null) {
-				if (percentDone == IProgressMonitor.UNKNOWN) {
-					// Only do it if there is an indeterminate task
-					// There may be no task so we don't want to create it
-					// until we know for sure
-					for (int i = 0; i < infos.length; i++) {
-						if (infos[i].hasTaskInfo()
-								&& infos[i].getTaskInfo().totalWork == IProgressMonitor.UNKNOWN) {
-							createProgressBar(SWT.INDETERMINATE);
-							break;
-						}
-					}
-				} else {
-					createProgressBar(SWT.NONE);
-					progressBar.setMinimum(0);
-					progressBar.setMaximum(100);
-				}
-			}
-
-			// Protect against bad counters
-			if (percentDone >= 0 && percentDone <= 100
-					&& percentDone != progressBar.getSelection()) {
-				progressBar.setSelection(percentDone);
-			}
-		}
-
-		else if (isCompleted()) {
-
-			if (progressBar != null) {
-				progressBar.dispose();
-				progressBar = null;
-			}
-			setLayoutsForNoProgress();
-
-		}
-
-		for (int i = 0; i < infos.length; i++) {
-			JobInfo jobInfo = infos[i];
-			if (jobInfo.hasTaskInfo()) {
-
-				String taskString = jobInfo.getTaskInfo().getTaskName();
-				String subTaskString = null;
-				Object[] jobChildren = jobInfo.getChildren();
-				if (jobChildren.length > 0) {
-					subTaskString = ((JobTreeElement) jobChildren[0])
-							.getDisplayString();
-				}
-
-				if (subTaskString != null) {
-					if (taskString == null || taskString.length() == 0) {
-						taskString = subTaskString;
-					} else {
-						taskString = NLS.bind(
-								ProgressMessages.JobInfo_DoneNoProgressMessage,
-								taskString, subTaskString);
-					}
-				}
-				if (taskString != null) {
-					setLinkText(infos[i].getJob(), taskString, i);
-				}
-			} else {// Check for the finished job state
-				Job job = jobInfo.getJob();
-				IStatus result = job.getResult();
-
-				if (result == null || result.getMessage().length() == 0
-						&& !info.isJobInfo()) {
-					setLinkText(job, getJobNameAndStatus(jobInfo), i);
-				} else {
-					setLinkText(job, result.getMessage(), i);
-
-				}
-
-			}
-			setColor(currentIndex);
-		}
-
-		// Remove completed tasks
-		if (infos.length < taskEntries.size()) {
-			for (int i = infos.length; i < taskEntries.size(); i++) {
-				((Link) taskEntries.get(i)).dispose();
-
-			}
-			if (infos.length > 1)
-				taskEntries = taskEntries.subList(0, infos.length - 1);
-			else
-				taskEntries.clear();
-		}
-
-		updateToolBarValues();
-		setMainText();
-	}
-
-	/**
-	 * Return whether or not the receiver is a completed job.
-	 * 
-	 * @return boolean <code>true</code> if the state is Job#NONE.
-	 */
-	private boolean isCompleted() {
-
-		JobInfo[] infos = getJobInfos();
-		for (int i = 0; i < infos.length; i++) {
-			if (infos[i].getJob().getState() != Job.NONE) {
-				return false;
-			}
-		}
-		// Only completed if there are any jobs
-		return infos.length > 0;
-	}
-
-	/**
-	 * Return the job infos in the receiver.
-	 * 
-	 * @return JobInfo[]
-	 */
-	private JobInfo[] getJobInfos() {
-		if (info.isJobInfo()) {
-			return new JobInfo[] { (JobInfo) info };
-		}
-		Object[] children = info.getChildren();
-		JobInfo[] infos = new JobInfo[children.length];
-		System.arraycopy(children, 0, infos, 0, children.length);
-		return infos;
-	}
-
-	/**
-	 * Return whether or not the receiver is being displayed as running.
-	 * 
-	 * @return boolean
-	 */
-	private boolean isRunning() {
-
-		JobInfo[] infos = getJobInfos();
-		for (int i = 0; i < infos.length; i++) {
-			int state = infos[i].getJob().getState();
-			if (state == Job.WAITING || state == Job.RUNNING)
-				return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Get the current percent done.
-	 * 
-	 * @return int
-	 */
-	private int getPercentDone() {
-		if (info.isJobInfo()) {
-			return ((JobInfo) info).getPercentDone();
-		}
-
-		if (info.hasChildren()) {
-			Object[] roots = ((GroupInfo) info).getChildren();
-			if (roots.length == 1 && roots[0] instanceof JobTreeElement) {
-				TaskInfo ti = ((JobInfo) roots[0]).getTaskInfo();
-				if (ti != null) {
-					return ti.getPercentDone();
-				}
-			}
-			return ((GroupInfo) info).getPercentDone();
-		}
-		return 0;
-	}
-
-	/**
-	 * Set the images in the toolbar based on whether the receiver is finished
-	 * or not. Also update tooltips if required.
-	 * 
-	 */
-	private void updateToolBarValues() {
-		if (isCompleted()) {
-			actionButton.setImage(JFaceResources
-					.getImage(CLEAR_FINISHED_JOB_KEY));
-			actionButton.setDisabledImage(JFaceResources
-					.getImage(DISABLED_CLEAR_FINISHED_JOB_KEY));
-			actionButton
-					.setToolTipText(ProgressMessages.NewProgressView_ClearJobToolTip);
-		} else {
-			actionButton.setImage(JFaceResources.getImage(STOP_IMAGE_KEY));
-			actionButton.setDisabledImage(JFaceResources
-					.getImage(DISABLED_STOP_IMAGE_KEY));
-
-		}
-		JobInfo[] infos = getJobInfos();
-
-		for (int i = 0; i < infos.length; i++) {
-			// Only disable if there is an unresponsive operation
-			if (infos[i].isCanceled() && !isCompleted()) {
-				actionButton.setEnabled(false);
-				return;
-			}
-		}
-		actionButton.setEnabled(true);
-	}
-
-	/**
-	 * Create the progress bar and apply any style bits from style.
-	 * 
-	 * @param style
-	 */
-	void createProgressBar(int style) {
-
-		FormData buttonData = new FormData();
-		buttonData.top = new FormAttachment(progressLabel, 0);
-		buttonData.right = new FormAttachment(100,
-				IDialogConstants.HORIZONTAL_SPACING * -1);
-
-		actionBar.setLayoutData(buttonData);
-
-		progressBar = new ProgressBar(this, SWT.HORIZONTAL | style);
-		FormData barData = new FormData();
-		barData.top = new FormAttachment(actionBar,
-				IDialogConstants.VERTICAL_SPACING, SWT.TOP);
-		barData.left = new FormAttachment(progressLabel, 0, SWT.LEFT);
-		barData.right = new FormAttachment(actionBar,
-				IDialogConstants.HORIZONTAL_SPACING * -1);
-		barData.height = MAX_PROGRESS_HEIGHT;
-		barData.width = 0;// default is too large
-		progressBar.setLayoutData(barData);
-
-		if (taskEntries.size() > 0) {
-			// Reattach the link label if there is one
-			FormData linkData = new FormData();
-			linkData.top = new FormAttachment(progressBar,
-					IDialogConstants.VERTICAL_SPACING);
-			linkData.left = new FormAttachment(
-					IDialogConstants.HORIZONTAL_SPACING);
-			linkData.right = new FormAttachment(progressBar, 0, SWT.RIGHT);
-			// Give an initial value so as to constrain the link shortening
-			linkData.width = IDialogConstants.INDENT;
-
-			((Link) taskEntries.get(0)).setLayoutData(linkData);
-		}
-	}
-
-	/**
-	 * Set the text of the link to the taskString.
-	 * 
-	 * @param taskString
-	 */
-	void setLinkText(Job linkJob, String taskString, int index) {
-
-		Link link;
-		if (index >= taskEntries.size()) {// Is it new?
-			link = new Link(this, SWT.NONE);
-
-			FormData linkData = new FormData();
-			if (index == 0 || taskEntries.size() == 0) {
-				Control top = progressBar;
-				if (top == null) {
-					top = progressLabel;
-				}
-				linkData.top = new FormAttachment(top,
-						IDialogConstants.VERTICAL_SPACING);
-				linkData.left = new FormAttachment(top, 0, SWT.LEFT);
-				linkData.right = new FormAttachment(progressBar, 0, SWT.RIGHT);
-				// Give an initial value so as to constrain the link shortening
-				linkData.width = IDialogConstants.INDENT;
-			} else {
-				Link previous = (Link) taskEntries.get(index - 1);
-				linkData.top = new FormAttachment(previous,
-						IDialogConstants.VERTICAL_SPACING);
-				linkData.left = new FormAttachment(previous, 0, SWT.LEFT);
-				linkData.right = new FormAttachment(previous, 0, SWT.RIGHT);
-				// Give an initial value so as to constrain the link shortening
-				linkData.width = IDialogConstants.INDENT;
-			}
-
-			link.setLayoutData(linkData);
-
-			final Link finalLink = link;
-
-			link.addSelectionListener(new SelectionAdapter() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-				 */
-				public void widgetSelected(SelectionEvent e) {
-
-					IAction action = (IAction) finalLink.getData(ACTION_KEY);
-					action.run();
-
-					updateAction(action, finalLink);
-
-					Object text = finalLink.getData(TEXT_KEY);
-					if (text == null)
-						return;
-
-					// Refresh the text as enablement might have changed
-					updateText((String) text, finalLink);
-				}
-			});
-
-			link.addListener(SWT.Resize, new Listener() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-				 */
-				public void handleEvent(Event event) {
-
-					Object text = finalLink.getData(TEXT_KEY);
-					if (text == null)
-						return;
-
-					updateText((String) text, finalLink);
-
-				}
-			});
-			taskEntries.add(link);
-		} else {
-			link = (Link) taskEntries.get(index);
-		}
-
-		link.setToolTipText(taskString);
-		link.setData(TEXT_KEY, taskString);
-
-		// check for action property
-		Object property = linkJob
-				.getProperty(IProgressConstants.ACTION_PROPERTY);
-		updateAction(property, link);
-
-		updateText(taskString, link);
-
-	}
-
-	/**
-	 * Update the action key if action is enabled or remove it if not
-	 * 
-	 * @param action
-	 *            {@link Object} or <code>null</code>
-	 * @param link
-	 */
-	private void updateAction(Object action, Link link) {
-
-		if (action != null && action instanceof IAction
-				&& ((IAction) action).isEnabled())
-			link.setData(ACTION_KEY, action);
-		else
-			link.setData(ACTION_KEY, null);
-
-	}
-
-	/**
-	 * Update the text in the link
-	 * 
-	 * @param taskString
-	 * @param link
-	 */
-	private void updateText(String taskString, Link link) {
-		taskString = Dialog.shortenText(taskString, link);
-
-		// Put in a hyperlink if there is an action
-		link.setText(link.getData(ACTION_KEY) == null ? taskString : NLS.bind(
-				"<a>{0}</a>", taskString));//$NON-NLS-1$
-	}
-
-	/**
-	 * Set the color base on the index
-	 * 
-	 * @param i
-	 */
-	public void setColor(int i) {
-		currentIndex = i;
-
-		if (selected) {
-			setAllBackgrounds(getDisplay().getSystemColor(
-					SWT.COLOR_LIST_SELECTION));
-			setAllForegrounds(getDisplay().getSystemColor(
-					SWT.COLOR_LIST_SELECTION_TEXT));
-			return;
-		}
-
-		if (i % 2 == 0) {
-			setAllBackgrounds(JFaceResources.getColorRegistry().get(
-					DARK_COLOR_KEY));
-		} else {
-			setAllBackgrounds(getDisplay().getSystemColor(
-					SWT.COLOR_LIST_BACKGROUND));
-		}
-		setAllForegrounds(getDisplay()
-				.getSystemColor(SWT.COLOR_LIST_FOREGROUND));
-	}
-
-	/**
-	 * Set the foreground of all widgets to the supplied color.
-	 * 
-	 * @param color
-	 */
-	private void setAllForegrounds(Color color) {
-		setForeground(color);
-		progressLabel.setForeground(color);
-
-		Iterator taskEntryIterator = taskEntries.iterator();
-		while (taskEntryIterator.hasNext()) {
-			((Link) taskEntryIterator.next()).setForeground(color);
-		}
-
-	}
-
-	/**
-	 * Set the background of all widgets to the supplied color.
-	 * 
-	 * @param color
-	 */
-	private void setAllBackgrounds(Color color) {
-		setBackground(color);
-		progressLabel.setBackground(color);
-		actionBar.setBackground(color);
-		jobImageLabel.setBackground(color);
-
-		Iterator taskEntryIterator = taskEntries.iterator();
-		while (taskEntryIterator.hasNext()) {
-			((Link) taskEntryIterator.next()).setBackground(color);
-		}
-
-	}
-
-	/**
-	 * Set the focus to the button.
-	 * 
-	 */
-	void setButtonFocus() {
-		actionBar.setFocus();
-	}
-
-	/**
-	 * Set the selection colors.
-	 * 
-	 * @param select
-	 *            boolean that indicates whether or not to show selection.
-	 */
-	void selectWidgets(boolean select) {
-		if (select) {
-			setButtonFocus();
-		}
-		selected = select;
-		setColor(currentIndex);
-	}
-
-	/**
-	 * Set the listener for index changes.
-	 * 
-	 * @param indexListener
-	 */
-	void setIndexListener(IndexListener indexListener) {
-		this.indexListener = indexListener;
-	}
-
-	/**
-	 * Return whether or not the receiver is selected.
-	 * 
-	 * @return boolean
-	 */
-	boolean isSelected() {
-		return selected;
-	}
-
-	/**
-	 * Set whether or not the receiver is being displayed based on the top and
-	 * bottom of the currently visible area.
-	 * 
-	 * @param top
-	 * @param bottom
-	 */
-	void setDisplayed(int top, int bottom) {
-		int itemTop = getLocation().y;
-		int itemBottom = itemTop + getBounds().height;
-		setDisplayed(itemTop <= bottom && itemBottom > top);
-
-	}
-
-	/**
-	 * Set whether or not the receiver is being displayed
-	 * 
-	 * @param displayed
-	 */
-	private void setDisplayed(boolean displayed) {
-		// See if this element has been turned off
-		boolean refresh = !isShowing && displayed;
-		isShowing = displayed;
-		if (refresh)
-			refresh();
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.swt.widgets.Widget#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		if(resourceManager != null)
-			resourceManager.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java
deleted file mode 100644
index 27b4034..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * The ProgressLabelProvider is a label provider used for viewers
- * that need anILabelprovider to show JobInfos.
- */
-public class ProgressLabelProvider extends LabelProvider {
-
-    Image image;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-     */
-    public Image getImage(Object element) {
-        return ((JobTreeElement) element).getDisplayImage();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        return ((JobTreeElement) element).getDisplayString();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java
deleted file mode 100644
index fc4bd9c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java
+++ /dev/null
@@ -1,1387 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Teddy Walker <teddy.walker@googlemail.com>
- *     		- Fix for Bug 151204 [Progress] Blocked status of jobs are not applied/reported
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.core.runtime.jobs.ProgressProvider;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.ImageLoader;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor;
-import org.eclipse.ui.internal.dialogs.WorkbenchDialogBlockedHandler;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.progress.IProgressConstants;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.ui.progress.WorkbenchJob;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * JobProgressManager provides the progress monitor to the job manager and
- * informs any ProgressContentProviders of changes.
- */
-public class ProgressManager extends ProgressProvider implements
-		IProgressService {
-	/**
-	 * A property to determine if the job was run in the dialog. Kept for
-	 * backwards compatability.
-	 * 
-	 * @deprecated
-	 * @see IProgressConstants#PROPERTY_IN_DIALOG
-	 */
-	public static final QualifiedName PROPERTY_IN_DIALOG = IProgressConstants.PROPERTY_IN_DIALOG;
-
-	private static final String ERROR_JOB = "errorstate.gif"; //$NON-NLS-1$
-
-	static final String ERROR_JOB_KEY = "ERROR_JOB"; //$NON-NLS-1$
-
-	private static ProgressManager singleton;
-
-	final private Map jobs = Collections.synchronizedMap(new HashMap());
-
-	final private Map familyListeners = Collections
-			.synchronizedMap(new HashMap());
-
-	final Object familyKey = new Object();
-
-	private IJobProgressManagerListener[] listeners = new IJobProgressManagerListener[0];
-
-	final Object listenersKey = new Object();
-
-	IJobChangeListener changeListener;
-
-	static final String PROGRESS_VIEW_NAME = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$
-
-	static final String PROGRESS_FOLDER = "$nl$/icons/full/progress/"; //$NON-NLS-1$
-
-	private static final String SLEEPING_JOB = "sleeping.gif"; //$NON-NLS-1$
-
-	private static final String WAITING_JOB = "waiting.gif"; //$NON-NLS-1$
-
-	private static final String BLOCKED_JOB = "lockedstate.gif"; //$NON-NLS-1$
-
-	/**
-	 * The key for the sleeping job icon.
-	 */
-	public static final String SLEEPING_JOB_KEY = "SLEEPING_JOB"; //$NON-NLS-1$
-
-	/**
-	 * The key for the waiting job icon.
-	 */
-	public static final String WAITING_JOB_KEY = "WAITING_JOB"; //$NON-NLS-1$
-
-	/**
-	 * The key for the locked job icon.
-	 */
-	public static final String BLOCKED_JOB_KEY = "LOCKED_JOB"; //$NON-NLS-1$
-
-	final Map runnableMonitors = Collections.synchronizedMap(new HashMap());
-
-	final Object monitorKey = new Object();
-
-	FinishedJobs finishedJobs;
-
-	// A table that maps families to keys in the Jface image
-	// table
-	private Hashtable imageKeyTable = new Hashtable();
-
-	private static final String IMAGE_KEY = "org.eclipse.ui.progress.images"; //$NON-NLS-1$
-
-	/**
-	 * Get the progress manager currently in use.
-	 * 
-	 * @return JobProgressManager
-	 */
-	public static ProgressManager getInstance() {
-		if (singleton == null) {
-			singleton = new ProgressManager();
-		}
-		return singleton;
-	}
-
-	/**
-	 * Shutdown the singleton if there is one.
-	 */
-	public static void shutdownProgressManager() {
-		if (singleton == null) {
-			return;
-		}
-		singleton.shutdown();
-	}
-
-	/**
-	 * The JobMonitor is the inner class that handles the IProgressMonitor
-	 * integration with the ProgressMonitor.
-	 */
-	class JobMonitor implements IProgressMonitorWithBlocking {
-		Job job;
-
-		String currentTaskName;
-
-		IProgressMonitorWithBlocking listener;
-
-		/**
-		 * Create a monitor on the supplied job.
-		 * 
-		 * @param newJob
-		 */
-		JobMonitor(Job newJob) {
-			job = newJob;
-		}
-
-		/**
-		 * Add monitor as another monitor that
-		 * 
-		 * @param monitor
-		 */
-		void addProgressListener(IProgressMonitorWithBlocking monitor) {
-			listener = monitor;
-			JobInfo info = getJobInfo(job);
-			TaskInfo currentTask = info.getTaskInfo();
-			if (currentTask != null) {
-				listener.beginTask(currentTaskName, currentTask.totalWork);
-				listener.internalWorked(currentTask.preWork);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String,
-		 *      int)
-		 */
-		public void beginTask(String taskName, int totalWork) {
-			JobInfo info = getJobInfo(job);
-			info.beginTask(taskName, totalWork);
-			refreshJobInfo(info);
-			currentTaskName = taskName;
-			if (listener != null) {
-				listener.beginTask(taskName, totalWork);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#done()
-		 */
-		public void done() {
-			JobInfo info = getJobInfo(job);
-			info.clearTaskInfo();
-			info.clearChildren();
-			runnableMonitors.remove(job);
-			if (listener != null) {
-				listener.done();
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
-		 */
-		public void internalWorked(double work) {
-			JobInfo info = getJobInfo(job);
-			if (info.hasTaskInfo()) {
-				info.addWork(work);
-				refreshJobInfo(info);
-			}
-			if (listener != null) {
-				listener.internalWorked(work);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#isCanceled()
-		 */
-		public boolean isCanceled() {
-			// Use the internal get so we don't create a Job Info for
-			// a job that is not running (see bug 149857)
-			JobInfo info = internalGetJobInfo(job);
-			if (info == null)
-				return false;
-			return info.isCanceled();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#setCanceled(boolean)
-		 */
-		public void setCanceled(boolean value) {
-			JobInfo info = getJobInfo(job);
-			// Don't bother cancelling twice
-			if (value && !info.isCanceled()) {
-				info.cancel();
-				// Only inform the first time
-				if (listener != null) {
-					listener.setCanceled(value);
-				}
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-		 */
-		public void setTaskName(String taskName) {
-			JobInfo info = getJobInfo(job);
-			if (info.hasTaskInfo()) {
-				info.setTaskName(taskName);
-			} else {
-				beginTask(taskName, 100);
-				return;
-			}
-			info.clearChildren();
-			refreshJobInfo(info);
-			currentTaskName = taskName;
-			if (listener != null) {
-				listener.setTaskName(taskName);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-		 */
-		public void subTask(String name) {
-			if (name == null) {
-				return;
-			}
-			JobInfo info = getJobInfo(job);
-			info.clearChildren();
-			info.addSubTask(name);
-			refreshJobInfo(info);
-			if (listener != null) {
-				listener.subTask(name);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
-		 */
-		public void worked(int work) {
-			internalWorked(work);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-		 */
-		public void clearBlocked() {
-			JobInfo info = getJobInfo(job);
-			info.setBlockedStatus(null);
-			refreshJobInfo(info);
-			if (listener != null) {
-				listener.clearBlocked();
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-		 */
-		public void setBlocked(IStatus reason) {
-			JobInfo info = getJobInfo(job);
-			info.setBlockedStatus(reason);
-			refreshJobInfo(info);
-			if (listener != null) {
-				listener.setBlocked(reason);
-			}
-		}
-	}
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	ProgressManager() {
-		Job.getJobManager().setProgressProvider(this);
-		Dialog.setBlockedHandler(new WorkbenchDialogBlockedHandler());
-		createChangeListener();
-		Job.getJobManager().addJobChangeListener(this.changeListener);
-		URL iconsRoot = ProgressManagerUtil.getIconsRoot();
-		try {
-			setUpImage(iconsRoot, SLEEPING_JOB, SLEEPING_JOB_KEY);
-			setUpImage(iconsRoot, WAITING_JOB, WAITING_JOB_KEY);
-			setUpImage(iconsRoot, BLOCKED_JOB, BLOCKED_JOB_KEY);
-
-			// Let the error manager set up its own icons
-			setUpImages(iconsRoot);
-		} catch (MalformedURLException e) {
-			ProgressManagerUtil.logException(e);
-		}
-	}
-
-	/**
-	 * Set up any images the error management needs.
-	 * 
-	 * @param iconsRoot
-	 * @throws MalformedURLException
-	 */
-	void setUpImages(URL iconsRoot) throws MalformedURLException {
-		// TODO see ErrorNotificationManager - this method isn't currently used
-		// In the ErrorNotificationManager it is invoked by ProgressManager
-		JFaceResources.getImageRegistry().put(ERROR_JOB_KEY,
-				ImageDescriptor.createFromURL(new URL(iconsRoot, ERROR_JOB)));
-	}
-
-	/**
-	 * Create the IJobChangeListener registered with the Job manager.
-	 */
-	private void createChangeListener() {
-		changeListener = new JobChangeAdapter() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#aboutToRun(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void aboutToRun(IJobChangeEvent event) {
-				JobInfo info = getJobInfo(event.getJob());
-				refreshJobInfo(info);
-				Iterator startListeners = busyListenersForJob(event.getJob())
-						.iterator();
-				while (startListeners.hasNext()) {
-					IJobBusyListener next = (IJobBusyListener) startListeners
-							.next();
-					next.incrementBusy(event.getJob());
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void done(IJobChangeEvent event) {
-				if (!PlatformUI.isWorkbenchRunning()) {
-					return;
-				}
-				Iterator startListeners = busyListenersForJob(event.getJob())
-						.iterator();
-				while (startListeners.hasNext()) {
-					IJobBusyListener next = (IJobBusyListener) startListeners
-							.next();
-					next.decrementBusy(event.getJob());
-				}
-
-				final JobInfo info = getJobInfo(event.getJob());
-				removeJobInfo(info);
-
-				if (event.getResult() != null
-						&& event.getResult().getSeverity() == IStatus.ERROR) {
-					StatusAdapter statusAdapter = new StatusAdapter(event
-							.getResult());
-					statusAdapter.addAdapter(Job.class, event.getJob());
-
-					if (event
-							.getJob()
-							.getProperty(
-									IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY) == Boolean.TRUE) {
-						statusAdapter
-								.setProperty(
-										IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY,
-										Boolean.TRUE);
-						StatusAdapterHelper.getInstance().putStatusAdapter(
-								info, statusAdapter);
-					}
-
-					StatusManager.getManager().handle(statusAdapter,
-							StatusManager.SHOW);
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#scheduled(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void scheduled(IJobChangeEvent event) {
-				updateFor(event);
-				if (event.getJob().isUser()) {
-					boolean noDialog = shouldRunInBackground();
-					if (!noDialog) {
-						final IJobChangeEvent finalEvent = event;
-						WorkbenchJob showJob = new WorkbenchJob(
-								ProgressMessages.ProgressManager_showInDialogName) {
-							/*
-							 * (non-Javadoc)
-							 * 
-							 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-							 */
-							public IStatus runInUIThread(
-									IProgressMonitor monitor) {
-								showInDialog(null, finalEvent.getJob());
-								return Status.OK_STATUS;
-							}
-						};
-						showJob.setSystem(true);
-						showJob.schedule();
-						return;
-					}
-				}
-			}
-
-			/**
-			 * Update the listeners for the receiver for the event.
-			 * 
-			 * @param event
-			 */
-			private void updateFor(IJobChangeEvent event) {
-				if (isInfrastructureJob(event.getJob())) {
-					return;
-				}
-				if (jobs.containsKey(event.getJob())) {
-					refreshJobInfo(getJobInfo(event.getJob()));
-				} else {
-					addJobInfo(new JobInfo(event.getJob()));
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#awake(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void awake(IJobChangeEvent event) {
-				updateFor(event);
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#sleeping(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void sleeping(IJobChangeEvent event) {
-
-				if (jobs.containsKey(event.getJob()))// Are we showing this?
-					sleepJobInfo(getJobInfo(event.getJob()));
-			}
-		};
-	}
-
-	/**
-	 * The job in JobInfo is now sleeping. Refresh it if we are showing it,
-	 * remove it if not.
-	 * 
-	 * @param info
-	 */
-	protected void sleepJobInfo(JobInfo info) {
-		if (isInfrastructureJob(info.getJob()))
-			return;
-
-		GroupInfo group = info.getGroupInfo();
-		if (group != null) {
-			sleepGroup(group,info);
-		}
-
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				IJobProgressManagerListener listener = listeners[i];
-				// Is this one the user never sees?
-				if (isNeverDisplaying(info.getJob(), listener.showsDebug()))
-					continue;
-				if (listener.showsDebug())
-					listener.refreshJobInfo(info);
-				else
-					listener.removeJob(info);
-
-			}
-		}
-
-	}
-
-	/**
-	 * Refresh the group when info is sleeping.
-	 * @param group
-	 */
-	private void sleepGroup(GroupInfo group, JobInfo info) {
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				
-				IJobProgressManagerListener listener = listeners[i];
-				if (isNeverDisplaying(info.getJob(), listener.showsDebug()))
-					continue;
-		
-				if (listener.showsDebug() || group.isActive())
-					listener.refreshGroup(group);
-				else
-					listener.removeGroup(group);
-			}
-		}
-		
-	}
-
-	/**
-	 * Set up the image in the image regsitry.
-	 * 
-	 * @param iconsRoot
-	 * @param fileName
-	 * @param key
-	 * @throws MalformedURLException
-	 */
-	private void setUpImage(URL iconsRoot, String fileName, String key)
-			throws MalformedURLException {
-		JFaceResources.getImageRegistry().put(key,
-				ImageDescriptor.createFromURL(new URL(iconsRoot, fileName)));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.jobs.ProgressProvider#createMonitor(org.eclipse.core.runtime.jobs.Job)
-	 */
-	public IProgressMonitor createMonitor(Job job) {
-		return progressFor(job);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.jobs.ProgressProvider#getDefaultMonitor()
-	 */
-	public IProgressMonitor getDefaultMonitor() {
-		// only need a default monitor for operations the UI thread
-		// and only if there is a display
-		Display display;
-		if (PlatformUI.isWorkbenchRunning()
-				&& !((Workbench) PlatformUI.getWorkbench()).isStarting()) {
-			display = PlatformUI.getWorkbench().getDisplay();
-			if (!display.isDisposed()
-					&& (display.getThread() == Thread.currentThread())) {
-				return new EventLoopProgressMonitor(new NullProgressMonitor());
-			}
-		}
-		return super.getDefaultMonitor();
-	}
-
-	/**
-	 * Return a monitor for the job. Check if we cached a monitor for this job
-	 * previously for a long operation timeout check.
-	 * 
-	 * @param job
-	 * @return IProgressMonitor
-	 */
-	public JobMonitor progressFor(Job job) {
-
-		synchronized (monitorKey) {
-			if (runnableMonitors.containsKey(job)) {
-				return (JobMonitor) runnableMonitors.get(job);
-			}
-			JobMonitor monitor = new JobMonitor(job);
-			runnableMonitors.put(job, monitor);
-			return monitor;
-		}
-
-	}
-
-	/**
-	 * Add an IJobProgressManagerListener to listen to the changes.
-	 * 
-	 * @param listener
-	 */
-	void addListener(IJobProgressManagerListener listener) {
-
-		synchronized (listenersKey) {
-			ArrayList newListeners = new ArrayList(listeners.length + 1);
-			for (int i = 0; i < listeners.length; i++) {
-				newListeners.add(listeners[i]);
-			}
-			newListeners.add(listener);
-			listeners = new IJobProgressManagerListener[newListeners.size()];
-			newListeners.toArray(listeners);
-		}
-
-	}
-
-	/**
-	 * Remove the supplied IJobProgressManagerListener from the list of
-	 * listeners.
-	 * 
-	 * @param listener
-	 */
-	void removeListener(IJobProgressManagerListener listener) {
-		synchronized (listenersKey) {
-			ArrayList newListeners = new ArrayList();
-			for (int i = 0; i < listeners.length; i++) {
-				if (listeners[i].equals(listener)) {
-					continue;
-				}
-				newListeners.add(listeners[i]);
-			}
-			listeners = new IJobProgressManagerListener[newListeners.size()];
-			newListeners.toArray(listeners);
-		}
-	}
-
-	/**
-	 * Get the JobInfo for the job. If it does not exist create it.
-	 * 
-	 * @param job
-	 * @return JobInfo
-	 */
-	JobInfo getJobInfo(Job job) {
-		JobInfo info = internalGetJobInfo(job);
-		if (info == null) {
-			info = new JobInfo(job);
-			jobs.put(job, info);
-		}
-		return info;
-	}
-
-	/**
-	 * Return an existing job info for the given Job or <code>null</code> if
-	 * there isn't one.
-	 * 
-	 * @param job
-	 * @return JobInfo
-	 */
-	JobInfo internalGetJobInfo(Job job) {
-		return (JobInfo) jobs.get(job);
-	}
-
-	/**
-	 * Refresh the IJobProgressManagerListeners as a result of a change in info.
-	 * 
-	 * @param info
-	 */
-	public void refreshJobInfo(JobInfo info) {
-		GroupInfo group = info.getGroupInfo();
-		if (group != null) {
-			refreshGroup(group);
-		}
-
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				IJobProgressManagerListener listener = listeners[i];
-				if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) {
-					listener.refreshJobInfo(info);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Refresh the IJobProgressManagerListeners as a result of a change in info.
-	 * 
-	 * @param info
-	 */
-	public void refreshGroup(GroupInfo info) {
-
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				listeners[i].refreshGroup(info);
-			}
-		}
-	}
-
-	/**
-	 * Refresh all the IJobProgressManagerListener as a result of a change in
-	 * the whole model.
-	 */
-	public void refreshAll() {
-
-		pruneStaleJobs();
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				listeners[i].refreshAll();
-			}
-		}
-
-	}
-
-	/**
-	 * Refresh the content providers as a result of a deletion of info.
-	 * 
-	 * @param info
-	 *            JobInfo
-	 */
-	public void removeJobInfo(JobInfo info) {
-
-		Job job = info.getJob();
-		jobs.remove(job);
-		synchronized (monitorKey) {
-			if (runnableMonitors.containsKey(job)) {
-				runnableMonitors.remove(job);
-			}
-		}
-
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				IJobProgressManagerListener listener = listeners[i];
-				if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) {
-					listener.removeJob(info);
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * Remove the group from the roots and inform the listeners.
-	 * 
-	 * @param group
-	 *            GroupInfo
-	 */
-	public void removeGroup(GroupInfo group) {
-
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				listeners[i].removeGroup(group);
-			}
-		}
-	}
-
-	/**
-	 * Refresh the content providers as a result of an addition of info.
-	 * 
-	 * @param info
-	 */
-	public void addJobInfo(JobInfo info) {
-		GroupInfo group = info.getGroupInfo();
-		if (group != null) {
-			refreshGroup(group);
-		}
-
-		jobs.put(info.getJob(), info);
-		synchronized (listenersKey) {
-			for (int i = 0; i < listeners.length; i++) {
-				IJobProgressManagerListener listener = listeners[i];
-				if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) {
-					listener.addJob(info);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Return whether or not this job is currently displayable.
-	 * 
-	 * @param job
-	 * @param debug
-	 *            If the listener is in debug mode.
-	 * @return boolean <code>true</code> if the job is not displayed.
-	 */
-	boolean isCurrentDisplaying(Job job, boolean debug) {
-		return isNeverDisplaying(job, debug) || job.getState() == Job.SLEEPING;
-	}
-
-	/**
-	 * Return whether or not we even display this job with debug mode set to
-	 * debug.
-	 * 
-	 * @param job
-	 * @param debug
-	 * @return boolean
-	 */
-	boolean isNeverDisplaying(Job job, boolean debug) {
-		if (isInfrastructureJob(job)) {
-			return true;
-		}
-		if (debug)
-			return false;
-
-		return job.isSystem();
-	}
-
-	/**
-	 * Return whether or not this job is an infrastructure job.
-	 * 
-	 * @param job
-	 * @return boolean <code>true</code> if it is never displayed.
-	 */
-	private boolean isInfrastructureJob(Job job) {
-		if (Policy.DEBUG_SHOW_ALL_JOBS)
-			return false;
-		return job.getProperty(ProgressManagerUtil.INFRASTRUCTURE_PROPERTY) != null;
-	}
-
-	/**
-	 * Return the current job infos filtered on debug mode.
-	 * 
-	 * @param debug
-	 * @return JobInfo[]
-	 */
-	public JobInfo[] getJobInfos(boolean debug) {
-		synchronized (jobs) {
-			Iterator iterator = jobs.keySet().iterator();
-			Collection result = new ArrayList();
-			while (iterator.hasNext()) {
-				Job next = (Job) iterator.next();
-				if (!isCurrentDisplaying(next, debug)) {
-					result.add(jobs.get(next));
-				}
-			}
-			JobInfo[] infos = new JobInfo[result.size()];
-			result.toArray(infos);
-			return infos;
-		}
-	}
-
-	/**
-	 * Return the current root elements filtered on the debug mode.
-	 * 
-	 * @param debug
-	 * @return JobTreeElement[]
-	 */
-	public JobTreeElement[] getRootElements(boolean debug) {
-		synchronized (jobs) {
-			Iterator iterator = jobs.keySet().iterator();
-			Collection result = new HashSet();
-			while (iterator.hasNext()) {
-				Job next = (Job) iterator.next();
-				if (!isCurrentDisplaying(next, debug)) {
-					JobInfo jobInfo = (JobInfo) jobs.get(next);
-					GroupInfo group = jobInfo.getGroupInfo();
-					if (group == null) {
-						result.add(jobInfo);
-					} else {
-						result.add(group);
-					}
-				}
-			}
-			JobTreeElement[] infos = new JobTreeElement[result.size()];
-			result.toArray(infos);
-			return infos;
-		}
-	}
-
-	/**
-	 * Return whether or not there are any jobs being displayed.
-	 * 
-	 * @return boolean
-	 */
-	public boolean hasJobInfos() {
-		synchronized (jobs) {
-			Iterator iterator = jobs.keySet().iterator();
-			while (iterator.hasNext()) {
-				return true;
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * Returns the image descriptor with the given relative path.
-	 * 
-	 * @param source
-	 * @return Image
-	 */
-	Image getImage(ImageData source) {
-		ImageData mask = source.getTransparencyMask();
-		return new Image(null, source, mask);
-	}
-
-	/**
-	 * Returns the image descriptor with the given relative path.
-	 * 
-	 * @param fileSystemPath
-	 *            The URL for the file system to the image.
-	 * @param loader -
-	 *            the loader used to get this data
-	 * @return ImageData[]
-	 */
-	ImageData[] getImageData(URL fileSystemPath, ImageLoader loader) {
-		try {
-			InputStream stream = fileSystemPath.openStream();
-			ImageData[] result = loader.load(stream);
-			stream.close();
-			return result;
-		} catch (FileNotFoundException exception) {
-			ProgressManagerUtil.logException(exception);
-			return null;
-		} catch (IOException exception) {
-			ProgressManagerUtil.logException(exception);
-			return null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.progress.IProgressService#busyCursorWhile(org.eclipse.jface.operation.IRunnableWithProgress)
-	 */
-	public void busyCursorWhile(final IRunnableWithProgress runnable)
-			throws InvocationTargetException, InterruptedException {
-		final ProgressMonitorJobsDialog dialog = new ProgressMonitorJobsDialog(
-				ProgressManagerUtil.getDefaultParent());
-		dialog.setOpenOnRun(false);
-		final InvocationTargetException[] invokes = new InvocationTargetException[1];
-		final InterruptedException[] interrupt = new InterruptedException[1];
-		// show a busy cursor until the dialog opens
-		Runnable dialogWaitRunnable = new Runnable() {
-			public void run() {
-				try {
-					dialog.setOpenOnRun(false);
-					setUserInterfaceActive(false);
-					dialog.run(true, true, runnable);
-				} catch (InvocationTargetException e) {
-					invokes[0] = e;
-				} catch (InterruptedException e) {
-					interrupt[0] = e;
-				} finally {
-					setUserInterfaceActive(true);
-				}
-			}
-		};
-		busyCursorWhile(dialogWaitRunnable, dialog);
-		if (invokes[0] != null) {
-			throw invokes[0];
-		}
-		if (interrupt[0] != null) {
-			throw interrupt[0];
-		}
-	}
-
-	/**
-	 * Show the busy cursor while the runnable is running. Schedule a job to
-	 * replace it with a progress dialog.
-	 * 
-	 * @param dialogWaitRunnable
-	 * @param dialog
-	 */
-	private void busyCursorWhile(Runnable dialogWaitRunnable,
-			ProgressMonitorJobsDialog dialog) {
-		// create the job that will open the dialog after a delay
-		scheduleProgressMonitorJob(dialog);
-		final Display display = PlatformUI.getWorkbench().getDisplay();
-		if (display == null) {
-			return;
-		}
-		// show a busy cursor until the dialog opens
-		BusyIndicator.showWhile(display, dialogWaitRunnable);
-	}
-
-	/**
-	 * Schedule the job that will open the progress monitor dialog
-	 * 
-	 * @param dialog
-	 *            the dialog to open
-	 */
-	private void scheduleProgressMonitorJob(
-			final ProgressMonitorJobsDialog dialog) {
-
-		final WorkbenchJob updateJob = new WorkbenchJob(
-				ProgressMessages.ProgressManager_openJobName) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-				setUserInterfaceActive(true);
-				if (ProgressManagerUtil.safeToOpen(dialog, null)) {
-					dialog.open();
-				}
-				return Status.OK_STATUS;
-			}
-		};
-		updateJob.setSystem(true);
-		updateJob.schedule(getLongOperationTime());
-
-	}
-
-	/**
-	 * Shutdown the receiver.
-	 */
-	private void shutdown() {
-		synchronized (listenersKey) {
-			this.listeners = new IJobProgressManagerListener[0];
-		}
-		Job.getJobManager().setProgressProvider(null);
-		Job.getJobManager().removeJobChangeListener(this.changeListener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.jobs.ProgressProvider#createProgressGroup()
-	 */
-	public IProgressMonitor createProgressGroup() {
-		return new GroupInfo();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.jobs.ProgressProvider#createMonitor(org.eclipse.core.runtime.jobs.Job,
-	 *      org.eclipse.core.runtime.IProgressMonitor, int)
-	 */
-	public IProgressMonitor createMonitor(Job job, IProgressMonitor group,
-			int ticks) {
-		JobMonitor monitor = progressFor(job);
-		if (group instanceof GroupInfo) {
-			GroupInfo groupInfo = (GroupInfo) group;
-			JobInfo jobInfo = getJobInfo(job);
-			jobInfo.setGroupInfo(groupInfo);
-			jobInfo.setTicks(ticks);
-			groupInfo.addJobInfo(jobInfo);
-		}
-		return monitor;
-	}
-
-	/**
-	 * Add the listener to the family.
-	 * 
-	 * @param family
-	 * @param listener
-	 */
-	void addListenerToFamily(Object family, IJobBusyListener listener) {
-		synchronized (familyKey) {
-			Collection currentListeners;
-			if (familyListeners.containsKey(family)) {
-				currentListeners = (Collection) familyListeners.get(family);
-			} else {
-				currentListeners = new HashSet();
-			}
-			currentListeners.add(listener);
-			familyListeners.put(family, currentListeners);
-		}
-	}
-
-	/**
-	 * Remove the listener from all families.
-	 * 
-	 * @param listener
-	 */
-	void removeListener(IJobBusyListener listener) {
-		synchronized (familyKey) {
-			Collection keysToRemove = new HashSet();
-			Iterator families = familyListeners.keySet().iterator();
-			while (families.hasNext()) {
-				Object next = families.next();
-				Collection currentListeners = (Collection) familyListeners
-						.get(next);
-				if (currentListeners.contains(listener)) {
-					currentListeners.remove(listener);
-				}
-				if (currentListeners.isEmpty()) {
-					keysToRemove.add(next);
-				} else {
-					familyListeners.put(next, currentListeners);
-				}
-			}
-			// Remove any empty listeners
-			Iterator keysIterator = keysToRemove.iterator();
-			while (keysIterator.hasNext()) {
-				familyListeners.remove(keysIterator.next());
-			}
-		}
-	}
-
-	/**
-	 * Return the listeners for the job.
-	 * 
-	 * @param job
-	 * @return Collection of IJobBusyListener
-	 */
-	private Collection busyListenersForJob(Job job) {
-		if (job.isSystem()) {
-			return Collections.EMPTY_LIST;
-		}
-		synchronized (familyKey) {
-
-			if (familyListeners.isEmpty()) {
-				return Collections.EMPTY_LIST;
-			}
-
-			Iterator families = familyListeners.keySet().iterator();
-			Collection returnValue = new ArrayList();
-			while (families.hasNext()) {
-				Object next = families.next();
-				if (job.belongsTo(next)) {
-					Collection currentListeners = (Collection) familyListeners
-							.get(next);
-					returnValue.addAll(currentListeners);
-				}
-			}
-			return returnValue;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.progress.IProgressService#showInDialog(org.eclipse.swt.widgets.Shell,
-	 *      org.eclipse.core.runtime.jobs.Job)
-	 */
-	public void showInDialog(Shell shell, Job job) {
-		if (shouldRunInBackground()) {
-			return;
-		}
-
-		final ProgressMonitorFocusJobDialog dialog = new ProgressMonitorFocusJobDialog(
-				shell);
-		dialog.show(job, shell);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.operation.IRunnableContext#run(boolean, boolean,
-	 *      org.eclipse.jface.operation.IRunnableWithProgress)
-	 */
-	public void run(boolean fork, boolean cancelable,
-			IRunnableWithProgress runnable) throws InvocationTargetException,
-			InterruptedException {
-		if (fork == false || cancelable == false) {
-			// backward compatible code
-			final ProgressMonitorJobsDialog dialog = new ProgressMonitorJobsDialog(
-					null);
-			dialog.run(fork, cancelable, runnable);
-			return;
-		}
-
-		busyCursorWhile(runnable);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.progress.IProgressService#runInUI(org.eclipse.jface.operation.IRunnableWithProgress,
-	 *      org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public void runInUI(final IRunnableContext context,
-			final IRunnableWithProgress runnable, final ISchedulingRule rule)
-			throws InvocationTargetException, InterruptedException {
-		final IJobManager manager = Job.getJobManager();
-		final InvocationTargetException[] exception = new InvocationTargetException[1];
-		final InterruptedException[] canceled = new InterruptedException[1];
-		BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-			public void run() {
-				try {
-					manager.beginRule(rule,
-							((Workbench) PlatformUI.getWorkbench())
-									.isStarting() ? new NullProgressMonitor()
-									: getEventLoopMonitor());
-					context.run(false, false, runnable);
-				} catch (InvocationTargetException e) {
-					exception[0] = e;
-				} catch (InterruptedException e) {
-					canceled[0] = e;
-				} catch (OperationCanceledException e) {
-					canceled[0] = new InterruptedException(e.getMessage());
-				} finally {
-					manager.endRule(rule);
-				}
-			}
-
-			/**
-			 * Get a progress monitor that forwards to an event loop monitor.
-			 * Override #setBlocked() so that we always open the blocked dialog.
-			 * 
-			 * @return the monitor on the event loop
-			 */
-			private IProgressMonitor getEventLoopMonitor() {
-				return new EventLoopProgressMonitor(new NullProgressMonitor()) {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor#setBlocked(org.eclipse.core.runtime.IStatus)
-					 */
-					public void setBlocked(IStatus reason) {
-
-						// Set a shell to open with as we want to create this
-						// even if there is a modal shell.
-						Dialog.getBlockedHandler().showBlocked(
-								ProgressManagerUtil.getDefaultParent(), this,
-								reason, getTaskName());
-					}
-				};
-			}
-		});
-		if (exception[0] != null) {
-			throw exception[0];
-		}
-		if (canceled[0] != null) {
-			throw canceled[0];
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.progress.IProgressService#getLongOperationTime()
-	 */
-	public int getLongOperationTime() {
-		return 800;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.progress.IProgressService#registerIconForFamily(org.eclipse.jface.resource.ImageDescriptor,
-	 *      java.lang.Object)
-	 */
-	public void registerIconForFamily(ImageDescriptor icon, Object family) {
-		String key = IMAGE_KEY + String.valueOf(imageKeyTable.size());
-		imageKeyTable.put(family, key);
-		ImageRegistry registry = JFaceResources.getImageRegistry();
-
-		// Avoid registering twice
-		if (registry.getDescriptor(key) == null) {
-			registry.put(key, icon);
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.progress.IProgressService#getIconFor(org.eclipse.core.runtime.jobs.Job)
-	 */
-	public Image getIconFor(Job job) {
-		Enumeration families = imageKeyTable.keys();
-		while (families.hasMoreElements()) {
-			Object next = families.nextElement();
-			if (job.belongsTo(next)) {
-				return JFaceResources.getImageRegistry().get(
-						(String) imageKeyTable.get(next));
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Iterate through all of the windows and set them to be disabled or enabled
-	 * as appropriate.'
-	 * 
-	 * @param active
-	 *            The set the windows will be set to.
-	 */
-	private void setUserInterfaceActive(boolean active) {
-		IWorkbench workbench = PlatformUI.getWorkbench();
-		Shell[] shells = workbench.getDisplay().getShells();
-		if (active) {
-			for (int i = 0; i < shells.length; i++) {
-				if (!shells[i].isDisposed()) {
-					shells[i].setEnabled(active);
-				}
-			}
-		} else {
-			// Deactive shells in reverse order
-			for (int i = shells.length - 1; i >= 0; i--) {
-				if (!shells[i].isDisposed()) {
-					shells[i].setEnabled(active);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Check to see if there are any stale jobs we have not cleared out.
-	 * 
-	 * @return <code>true</code> if anything was pruned
-	 */
-	private boolean pruneStaleJobs() {
-		Object[] jobsToCheck = jobs.keySet().toArray();
-		boolean pruned = false;
-		for (int i = 0; i < jobsToCheck.length; i++) {
-			Job job = (Job) jobsToCheck[i];
-			if (checkForStaleness(job)) {
-				if (Policy.DEBUG_STALE_JOBS) {
-					WorkbenchPlugin.log("Stale Job " + job.getName()); //$NON-NLS-1$
-				}
-				pruned = true;
-			}
-		}
-
-		return pruned;
-	}
-
-	/**
-	 * Check the if the job should be removed from the list as it may be stale.
-	 * 
-	 * @param job
-	 * @return boolean
-	 */
-	boolean checkForStaleness(Job job) {
-		if (job.getState() == Job.NONE) {
-			removeJobInfo(getJobInfo(job));
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Return whether or not dialogs should be run in the background
-	 * 
-	 * @return <code>true</code> if the dialog should not be shown.
-	 */
-	private boolean shouldRunInBackground() {
-		return WorkbenchPlugin.getDefault().getPreferenceStore().getBoolean(
-				IPreferenceConstants.RUN_IN_BACKGROUND);
-	}
-
-	/**
-	 * Set whether or not the ProgressViewUpdater should show system jobs.
-	 * 
-	 * @param showSystem
-	 */
-	public void setShowSystemJobs(boolean showSystem) {
-		ProgressViewUpdater updater = ProgressViewUpdater.getSingleton();
-		updater.debug = showSystem;
-		updater.refreshAll();
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java
deleted file mode 100644
index 00a07e8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManagerUtil.java
+++ /dev/null
@@ -1,467 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.RectangleAnimation;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.progress.IProgressConstants;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * The ProgressUtil is a class that contains static utility methods used for the
- * progress API.
- */
-
-public class ProgressManagerUtil {
-	/**
-	 * A constant used by the progress support to determine if an operation is
-	 * too short to show progress.
-	 */
-	public static long SHORT_OPERATION_TIME = 250;
-
-	static final QualifiedName KEEP_PROPERTY = IProgressConstants.KEEP_PROPERTY;
-
-	static final QualifiedName KEEPONE_PROPERTY = IProgressConstants.KEEPONE_PROPERTY;
-
-	static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
-
-	static final QualifiedName INFRASTRUCTURE_PROPERTY = new QualifiedName(
-			WorkbenchPlugin.PI_WORKBENCH, "INFRASTRUCTURE_PROPERTY");//$NON-NLS-1$
-
-	private static String ellipsis = ProgressMessages.ProgressFloatingWindow_EllipsisValue;
-
-	/**
-	 * Return a status for the exception.
-	 * 
-	 * @param exception
-	 * @return IStatus
-	 */
-	static IStatus exceptionStatus(Throwable exception) {
-		return StatusUtil.newStatus(IStatus.ERROR,
-				exception.getMessage() == null ? "" : exception.getMessage(), //$NON-NLS-1$
-				exception);
-	}
-
-	/**
-	 * Log the exception for debugging.
-	 * 
-	 * @param exception
-	 */
-	static void logException(Throwable exception) {
-		BundleUtility.log(PlatformUI.PLUGIN_ID, exception);
-	}
-
-	// /**
-	// * Sets the label provider for the viewer.
-	// *
-	// * @param viewer
-	// */
-	// static void initLabelProvider(ProgressTreeViewer viewer) {
-	// viewer.setLabelProvider(new ProgressLabelProvider());
-	// }
-	/**
-	 * Return a viewer comparator for looking at the jobs.
-	 * 
-	 * @return ViewerComparator
-	 */
-	static ViewerComparator getProgressViewerComparator() {
-		return new ViewerComparator() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
-			 *      java.lang.Object, java.lang.Object)
-			 */
-			public int compare(Viewer testViewer, Object e1, Object e2) {
-				return ((Comparable) e1).compareTo(e2);
-			}
-		};
-	}
-
-	/**
-	 * Open the progress view in the supplied window.
-	 * 
-	 * @param window
-	 */
-	static void openProgressView(WorkbenchWindow window) {
-		IWorkbenchPage page = window.getActivePage();
-		if (page == null) {
-			return;
-		}
-		try {
-			IViewDescriptor reference = WorkbenchPlugin.getDefault()
-					.getViewRegistry()
-					.find(IProgressConstants.PROGRESS_VIEW_ID);
-
-			if (reference == null) {
-				return;
-			}
-			page.showView(IProgressConstants.PROGRESS_VIEW_ID);
-		} catch (PartInitException exception) {
-			logException(exception);
-		}
-	}
-
-	/**
-	 * Shorten the given text <code>t</code> so that its length doesn't exceed
-	 * the given width. The default implementation replaces characters in the
-	 * center of the original string with an ellipsis ("..."). Override if you
-	 * need a different strategy.
-	 * 
-	 * @param textValue
-	 * @param control
-	 * @return String
-	 */
-
-	static String shortenText(String textValue, Control control) {
-		if (textValue == null) {
-			return null;
-		}
-		GC gc = new GC(control);
-		int maxWidth = control.getBounds().width - 5;
-		int maxExtent = gc.textExtent(textValue).x;
-		if (maxExtent < maxWidth) {
-			gc.dispose();
-			return textValue;
-		}
-		int length = textValue.length();
-		int charsToClip = Math.round(0.95f * length
-				* (1 - ((float) maxWidth / maxExtent)));
-		int secondWord = findSecondWhitespace(textValue, gc, maxWidth);
-		int pivot = ((length - secondWord) / 2) + secondWord;
-		int start = pivot - (charsToClip / 2);
-		int end = pivot + (charsToClip / 2) + 1;
-		while (start >= 0 && end < length) {
-			String s1 = textValue.substring(0, start);
-			String s2 = textValue.substring(end, length);
-			String s = s1 + ellipsis + s2;
-			int l = gc.textExtent(s).x;
-			if (l < maxWidth) {
-				gc.dispose();
-				return s;
-			}
-			start--;
-			end++;
-		}
-		gc.dispose();
-		return textValue;
-	}
-
-	/**
-	 * Find the second index of a whitespace. Return the first index if there
-	 * isn't one or 0 if there is no space at all.
-	 * 
-	 * @param textValue
-	 * @param gc
-	 *            The GC to test max length
-	 * @param maxWidth
-	 *            The maximim extent
-	 * @return int
-	 */
-	private static int findSecondWhitespace(String textValue, GC gc,
-			int maxWidth) {
-		int firstCharacter = 0;
-		char[] chars = textValue.toCharArray();
-		// Find the first whitespace
-		for (int i = 0; i < chars.length; i++) {
-			if (Character.isWhitespace(chars[i])) {
-				firstCharacter = i;
-				break;
-			}
-		}
-		// If we didn't find it once don't continue
-		if (firstCharacter == 0) {
-			return 0;
-		}
-		// Initialize to firstCharacter in case there is no more whitespace
-		int secondCharacter = firstCharacter;
-		// Find the second whitespace
-		for (int i = firstCharacter; i < chars.length; i++) {
-			if (Character.isWhitespace(chars[i])) {
-				secondCharacter = i;
-				break;
-			}
-		}
-		// Check that we haven't gone over max width. Throw
-		// out an index that is too high
-		if (gc.textExtent(textValue.substring(0, secondCharacter)).x > maxWidth) {
-			if (gc.textExtent(textValue.substring(0, firstCharacter)).x > maxWidth) {
-				return 0;
-			}
-			return firstCharacter;
-		}
-		return secondCharacter;
-	}
-
-	/**
-	 * If there are any modal shells open reschedule openJob to wait until they
-	 * are closed. Return true if it rescheduled, false if there is nothing
-	 * blocking it.
-	 * 
-	 * @param openJob
-	 * @return boolean. true if the job was rescheduled due to modal dialogs.
-	 */
-	public static boolean rescheduleIfModalShellOpen(Job openJob) {
-		Shell modal = getModalShellExcluding(null);
-		if (modal == null) {
-			return false;
-		}
-
-		// try again in a few seconds
-		openJob.schedule(PlatformUI.getWorkbench().getProgressService()
-				.getLongOperationTime());
-		return true;
-	}
-
-	/**
-	 * Return whether or not it is safe to open this dialog. If so then return
-	 * <code>true</code>. If not then set it to open itself when it has had
-	 * ProgressManager#longOperationTime worth of ticks.
-	 * 
-	 * @param dialog
-	 *            ProgressMonitorJobsDialog that will be opening
-	 * @param excludedShell
-	 *            The shell
-	 * @return boolean. <code>true</code> if it can open. Otherwise return
-	 *         false and set the dialog to tick.
-	 */
-	public static boolean safeToOpen(ProgressMonitorJobsDialog dialog,
-			Shell excludedShell) {
-		Shell modal = getModalShellExcluding(excludedShell);
-		if (modal == null) {
-			return true;
-		}
-
-		dialog.watchTicks();
-		return false;
-	}
-	
-	/**
-	 * Return the modal shell that is currently open. If there isn't one then
-	 * return null. If there are stacked modal shells, return the top one.
-	 * 
-	 * @param shell
-	 *            A shell to exclude from the search. May be <code>null</code>.
-	 * 
-	 * @return Shell or <code>null</code>.
-	 */
-
-	public static Shell getModalShellExcluding(Shell shell) {
-
-			Shell parent = shell;
-			
-	        // Make sure we don't pick a parent that has a modal child (this can lock the app)
-	        if (parent == null || parent.isDisposed()) {
-	            parent = getModalChildExcluding(PlatformUI.getWorkbench().getDisplay().getShells(), shell);
-	        } else {
-	            // If we picked a parent with a modal child, use the modal child instead
-	            Shell modalChild = getModalChildExcluding(parent.getShells(), shell);
-	            if (modalChild != null) {
-	                parent = modalChild;
-	            }
-	        }
-	        return parent;
-	}
-	        
-	/**
-	 * Return the modal shell that is currently open. If there isn't one then
-	 * return null.
-	 * 
-	 * @param toSearch shells to search for modal children
-	 * @param toExclude shell to ignore
-	 * @return the most specific modal child, or null if none
-	 */
-	private static Shell getModalChildExcluding(Shell[] toSearch, Shell toExclude) {
-		int modal = SWT.APPLICATION_MODAL | SWT.SYSTEM_MODAL
-				| SWT.PRIMARY_MODAL;
-
-		for (int i = toSearch.length - 1; i >= 0; i--) {
-			Shell shell = toSearch[i];
-			if(shell.equals(toExclude)) {
-				continue;
-			}
-			
-			// Check if this shell has a modal child
-			Shell[] children = shell.getShells();
-			Shell modalChild = getModalChildExcluding(children, toExclude);
-			if (modalChild != null) {
-				return modalChild;
-			}
-
-			// If not, check if this shell is modal itself
-			if (shell.isVisible() && (shell.getStyle() & modal) != 0) {
-				return shell;
-			}
-		}
-
-		return null;
-	}
-	 
-	/**
-	 * Utility method to get the best parenting possible for a dialog. If there
-	 * is a modal shell create it so as to avoid two modal dialogs. If not then
-	 * return the shell of the active workbench window. If neither can be found
-	 * return null.
-	 * 
-	 * @return Shell or <code>null</code>
-	 */
-	public static Shell getDefaultParent() {
-		Shell modal = getModalShellExcluding(null);
-		if (modal != null) {
-			return modal;
-		}
-
-		return getNonModalShell();
-	}
-
-	/**
-	 * Get the active non modal shell. If there isn't one return null.
-	 * 
-	 * @return Shell
-	 */
-	public static Shell getNonModalShell() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (window == null) {
-			IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
-					.getWorkbenchWindows();
-			if (windows.length > 0)
-				return windows[0].getShell();
-		} else
-			return window.getShell();
-
-		return null;
-	}
-
-	/**
-	 * Animate the closing of a window given the start position down to the
-	 * progress region.
-	 * 
-	 * @param startPosition
-	 *            Rectangle. The position to start drawing from.
-	 */
-	public static void animateDown(Rectangle startPosition) {
-		IWorkbenchWindow currentWindow = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (currentWindow == null) {
-			return;
-		}
-		WorkbenchWindow internalWindow = (WorkbenchWindow) currentWindow;
-
-		ProgressRegion progressRegion = internalWindow.getProgressRegion();
-		if (progressRegion == null) {
-			return;
-		}
-		Rectangle endPosition = progressRegion.getControl().getBounds();
-
-		Point windowLocation = internalWindow.getShell().getLocation();
-		endPosition.x += windowLocation.x;
-		endPosition.y += windowLocation.y;
-		RectangleAnimation animation = new RectangleAnimation(internalWindow
-				.getShell(), startPosition, endPosition);
-		animation.schedule();
-	}
-
-	/**
-	 * Animate the opening of a window given the start position down to the
-	 * progress region.
-	 * 
-	 * @param endPosition
-	 *            Rectangle. The position to end drawing at.
-	 */
-	public static void animateUp(Rectangle endPosition) {
-		IWorkbenchWindow currentWindow = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (currentWindow == null) {
-			return;
-		}
-		WorkbenchWindow internalWindow = (WorkbenchWindow) currentWindow;
-		Point windowLocation = internalWindow.getShell().getLocation();
-
-		ProgressRegion progressRegion = internalWindow.getProgressRegion();
-		if (progressRegion == null) {
-			return;
-		}
-		Rectangle startPosition = progressRegion.getControl().getBounds();
-		startPosition.x += windowLocation.x;
-		startPosition.y += windowLocation.y;
-
-		RectangleAnimation animation = new RectangleAnimation(internalWindow
-				.getShell(), startPosition, endPosition);
-		animation.schedule();
-	}
-
-	/**
-	 * Get the shell provider to use in the progress support dialogs. This
-	 * provider will try to always parent off of an existing modal shell. If
-	 * there isn't one it will use the current workbench window.
-	 * 
-	 * @return IShellProvider
-	 */
-	static IShellProvider getShellProvider() {
-		return new IShellProvider() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.window.IShellProvider#getShell()
-			 */
-			public Shell getShell() {
-				return getDefaultParent();
-			}
-		};
-	}
-
-	/**
-	 * Get the icons root for the progress support.
-	 * 
-	 * @return URL
-	 */
-	public static URL getIconsRoot() {
-		return BundleUtility.find(PlatformUI.PLUGIN_ID,
-				ProgressManager.PROGRESS_FOLDER);
-	}
-
-	/**
-	 * Return the location of the progress spinner.
-	 * 
-	 * @return URL or <code>null</code> if it cannot be found
-	 */
-	public static URL getProgressSpinnerLocation() {
-		try {
-			return new URL(getIconsRoot(), "progress_spinner.gif");//$NON-NLS-1$
-		} catch (MalformedURLException e) {
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java
deleted file mode 100644
index c7b25c3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.osgi.util.NLS;
-
-public class ProgressMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.progress.messages";//$NON-NLS-1$
-
-	public static String PendingUpdateAdapter_PendingLabel;
-	public static String JobInfo_DoneMessage;
-	public static String JobInfo_DoneNoProgressMessage;
-	public static String JobInfo_NoTaskNameDoneMessage;
-	public static String JobsViewPreferenceDialog_Note;
-	public static String JobErrorDialog_CustomJobText;
-	public static String JobInfo_UnknownProgress;
-	public static String JobInfo_Waiting;
-	public static String JobInfo_Sleeping;
-	public static String JobInfo_System;
-	public static String JobInfo_Cancelled;
-	public static String JobInfo_Cancel_Requested;
-	public static String JobInfo_Error;
-	public static String JobInfo_Blocked;
-	public static String JobInfo_Finished;
-	public static String JobInfo_FinishedAt;
-	public static String JobErrorDialog_CloseDialogMessage;
-	public static String Error;
-	public static String DeferredTreeContentManager_NotDeferred;
-	public static String DeferredTreeContentManager_AddingChildren;
-	public static String DeferredTreeContentManager_FetchingName;
-	public static String ProgressView_CancelAction;
-	public static String ProgressView_ClearAllAction;
-	public static String ProgressView_NoOperations;
-	
-	public static String NewProgressView_RemoveAllJobsToolTip;
-	public static String NewProgressView_CancelJobToolTip;
-	public static String NewProgressView_ClearJobToolTip;
-	public static String NewProgressView_errorDialogTitle;
-	public static String NewProgressView_errorDialogMessage;
-	public static String ProgressAnimationItem_tasks;
-	public static String ProgressAnimationItem_ok;
-	public static String ProgressAnimationItem_error;
-	public static String SubTaskInfo_UndefinedTaskName;
-	public static String DeferredTreeContentManager_ClearJob;
-	public static String ProgressContentProvider_UpdateProgressJob;
-	public static String JobErrorDialog_MultipleErrorsTitle;
-	public static String ProgressManager_openJobName;
-	public static String ProgressManager_showInDialogName;
-	public static String ProgressMonitorJobsDialog_DetailsTitle;
-	public static String ProgressMonitorJobsDialog_HideTitle;
-	public static String ErrorNotificationManager_OpenErrorDialogJob;
-	public static String AnimationManager_AnimationStart;
-	public static String ProgressFloatingWindow_EllipsisValue;
-	public static String BlockedJobsDialog_UserInterfaceTreeElement;
-	public static String BlockedJobsDialog_BlockedTitle;
-	public static String WorkbenchSiteProgressService_CursorJob;
-	public static String ProgressMonitorFocusJobDialog_UserDialogJob;
-	public static String ProgressMonitorFocusJobDialog_CLoseDialogJob;
-	public static String ProgressMonitorFocusJobDialog_RunInBackgroundButton;
-
-	public static String JobErrorDialog_MultipleErrorsMessage;
-	public static String JobErrorDialog_CloseDialogTitle;
-	public static String JobsViewPreferenceDialog_Title;
-	public static String JobErrorDialog_DoNotShowAgainMessage;
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, ProgressMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java
deleted file mode 100644
index d87cc2e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorFocusJobDialog.java
+++ /dev/null
@@ -1,535 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-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.ui.PlatformUI;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.progress.IProgressConstants;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The ProgressMonitorFocusJobDialog is a dialog that shows progress for a
- * particular job in a modal dialog so as to give a user accustomed to a modal
- * UI a more familiar feel.
- */
-class ProgressMonitorFocusJobDialog extends ProgressMonitorJobsDialog {
-	Job job;
-	private boolean showDialog;
-
-	/**
-	 * Create a new instance of the receiver with progress reported on the job.
-	 * 
-	 * @param parentShell
-	 *            The shell this is parented from.
-	 */
-	public ProgressMonitorFocusJobDialog(Shell parentShell) {
-		super(parentShell == null ? ProgressManagerUtil.getNonModalShell()
-				: parentShell);
-		setShellStyle(getDefaultOrientation() | SWT.BORDER | SWT.TITLE
-				| SWT.RESIZE | SWT.MAX | SWT.MODELESS);
-		setCancelable(true);
-		enableDetailsButton = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#cancelPressed()
-	 */
-	protected void cancelPressed() {
-		job.cancel();
-		super.cancelPressed();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#configureShell(org.eclipse.swt.widgets.Shell)
-	 */
-	protected void configureShell(Shell shell) {
-		super.configureShell(shell);
-		shell.setText(job.getName());
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		Button runInWorkspace = createButton(
-				parent,
-				IDialogConstants.CLOSE_ID,
-				ProgressMessages.ProgressMonitorFocusJobDialog_RunInBackgroundButton,
-				true);
-		runInWorkspace.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				Rectangle shellPosition = getShell().getBounds();
-				job.setProperty(IProgressConstants.PROPERTY_IN_DIALOG,
-						Boolean.FALSE);
-				finishedRun();
-				ProgressManagerUtil.animateDown(shellPosition);
-			}
-		});
-		runInWorkspace.setCursor(arrowCursor);
-
-		cancel = createButton(parent, IDialogConstants.CANCEL_ID,
-				IDialogConstants.CANCEL_LABEL, false);
-		cancel.setCursor(arrowCursor);
-
-		createDetailsButton(parent);
-	}
-
-	/**
-	 * Returns a listener that will close the dialog when the job completes.
-	 * 
-	 * @return IJobChangeListener
-	 */
-	private IJobChangeListener createCloseListener() {
-		return new JobChangeAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#done(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void done(IJobChangeEvent event) {
-				// first of all, make sure this listener is removed
-				event.getJob().removeJobChangeListener(this);
-				if (!PlatformUI.isWorkbenchRunning()) {
-					return;
-				}
-				// nothing to do if the dialog is already closed
-				if (getShell() == null) {
-					return;
-				}
-				WorkbenchJob closeJob = new WorkbenchJob(
-						ProgressMessages.ProgressMonitorFocusJobDialog_CLoseDialogJob) {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-					 */
-					public IStatus runInUIThread(IProgressMonitor monitor) {
-						Shell currentShell = getShell();
-						if (currentShell == null || currentShell.isDisposed()) {
-							return Status.CANCEL_STATUS;
-						}
-						finishedRun();
-						return Status.OK_STATUS;
-					}
-				};
-				closeJob.setSystem(true);
-				closeJob.schedule();
-			}
-		};
-	}
-
-	/**
-	 * Return the ProgressMonitorWithBlocking for the receiver.
-	 * 
-	 * @return IProgressMonitorWithBlocking
-	 */
-	private IProgressMonitorWithBlocking getBlockingProgressMonitor() {
-		return new IProgressMonitorWithBlocking() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String,
-			 *      int)
-			 */
-			public void beginTask(String name, int totalWork) {
-				final String finalName = name;
-				final int finalWork = totalWork;
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						getProgressMonitor().beginTask(finalName, finalWork);
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-			 */
-			public void clearBlocked() {
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						((IProgressMonitorWithBlocking) getProgressMonitor())
-								.clearBlocked();
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#done()
-			 */
-			public void done() {
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						getProgressMonitor().done();
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
-			 */
-			public void internalWorked(double work) {
-				final double finalWork = work;
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						getProgressMonitor().internalWorked(finalWork);
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#isCanceled()
-			 */
-			public boolean isCanceled() {
-				return getProgressMonitor().isCanceled();
-			}
-
-			/**
-			 * Run the runnable as an asyncExec if we are already open.
-			 * 
-			 * @param runnable
-			 */
-			private void runAsync(final Runnable runnable) {
-
-				if (alreadyClosed) {
-					return;
-				}
-				Shell currentShell = getShell();
-
-				Display display;
-				if (currentShell == null) {
-					display = Display.getDefault();
-				} else {
-					if (currentShell.isDisposed())// Don't bother if it has
-						// been closed
-						return;
-					display = currentShell.getDisplay();
-				}
-
-				display.asyncExec(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						if (alreadyClosed) {
-							return;// Check again as the async may come too
-							// late
-						}
-						Shell shell = getShell();
-						if (shell != null && shell.isDisposed())
-							return;
-
-						runnable.run();
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-			 */
-			public void setBlocked(IStatus reason) {
-				final IStatus finalReason = reason;
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						((IProgressMonitorWithBlocking) getProgressMonitor())
-								.setBlocked(finalReason);
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#setCanceled(boolean)
-			 */
-			public void setCanceled(boolean value) {
-				// Just a listener - doesn't matter.
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-			 */
-			public void setTaskName(String name) {
-				final String finalName = name;
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						getProgressMonitor().setTaskName(finalName);
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-			 */
-			public void subTask(String name) {
-				final String finalName = name;
-				runAsync(new Runnable() {
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see java.lang.Runnable#run()
-					 */
-					public void run() {
-						getProgressMonitor().subTask(finalName);
-					}
-				});
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
-			 */
-			public void worked(int work) {
-				internalWorked(work);
-			}
-		};
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.window.Window#open()
-	 */
-	public int open() {
-		int result = super.open();
-
-		// add a listener that will close the dialog when the job completes.
-		IJobChangeListener listener = createCloseListener();
-		job.addJobChangeListener(listener);
-		if (job.getState() == Job.NONE) {
-			// if the job completed before we had a chance to add
-			// the listener, just remove the listener and return
-			job.removeJobChangeListener(listener);
-			finishedRun();
-			cleanUpFinishedJob();
-		}
-
-		return result;
-	}
-
-	/**
-	 * Opens this dialog for the duration that the given job is running.
-	 * 
-	 * @param jobToWatch
-	 * @param originatingShell
-	 *            The shell this request was created from. Do not block on this
-	 *            shell.
-	 */
-	public void show(Job jobToWatch, final Shell originatingShell) {
-		job = jobToWatch;
-		// after the dialog is opened we can get access to its monitor
-		job.setProperty(IProgressConstants.PROPERTY_IN_DIALOG, Boolean.TRUE);
-
-		ProgressManager.getInstance().progressFor(job).addProgressListener(
-				getBlockingProgressMonitor());
-
-		setOpenOnRun(false);
-		aboutToRun();
-		// start with a quick busy indicator. Lock the UI as we
-		// want to preserve modality
-		BusyIndicator.showWhile(PlatformUI.getWorkbench().getDisplay(),
-				new Runnable() {
-					public void run() {
-						try {
-							Thread
-									.sleep(ProgressManagerUtil.SHORT_OPERATION_TIME);
-						} catch (InterruptedException e) {
-							// Do not log as this is a common operation from the
-							// lock listener
-						}
-					}
-				});
-
-		WorkbenchJob openJob = new WorkbenchJob(
-				ProgressMessages.ProgressMonitorFocusJobDialog_UserDialogJob) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-
-				// if the job is done at this point, we don't need the dialog
-				if (job.getState() == Job.NONE) {
-					finishedRun();
-					cleanUpFinishedJob();
-					return Status.CANCEL_STATUS;
-				}
-
-				// now open the progress dialog if nothing else is
-				if (!ProgressManagerUtil.safeToOpen(
-						ProgressMonitorFocusJobDialog.this, originatingShell)) {
-					return Status.CANCEL_STATUS;
-				}
-
-				// Do not bother if the parent is disposed
-				if (getParentShell() != null && getParentShell().isDisposed()) {
-					return Status.CANCEL_STATUS;
-				}
-
-				open();
-
-				return Status.OK_STATUS;
-			}
-		};
-		openJob.setSystem(true);
-		openJob.schedule();
-
-	}
-
-	/**
-	 * The job finished before we did anything so clean up the finished
-	 * reference.
-	 */
-	private void cleanUpFinishedJob() {
-		ProgressManager.getInstance().checkForStaleness(job);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Control area = super.createDialogArea(parent);
-		// Give the job info as the initial details
-		getProgressMonitor().setTaskName(
-				ProgressManager.getInstance().getJobInfo(this.job)
-						.getDisplayString());
-		return area;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog#createExtendedDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected void createExtendedDialogArea(Composite parent) {
-
-		showDialog = WorkbenchPlugin.getDefault().getPreferenceStore()
-				.getBoolean(IPreferenceConstants.RUN_IN_BACKGROUND);
-		final Button showUserDialogButton = new Button(parent, SWT.CHECK);
-		showUserDialogButton
-				.setText(WorkbenchMessages.WorkbenchPreference_RunInBackgroundButton);
-		showUserDialogButton
-				.setToolTipText(WorkbenchMessages.WorkbenchPreference_RunInBackgroundToolTip);
-		GridData gd = new GridData();
-		gd.horizontalSpan = 2;
-		gd.horizontalAlignment = GridData.FILL;
-		showUserDialogButton.setLayoutData(gd);
-
-		showUserDialogButton.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				showDialog = showUserDialogButton.getSelection();
-			}
-		});
-
-		super.createExtendedDialogArea(parent);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog#close()
-	 */
-	public boolean close() {
-		if (getReturnCode() != CANCEL)
-			WorkbenchPlugin.getDefault().getPreferenceStore().setValue(
-					IPreferenceConstants.RUN_IN_BACKGROUND, showDialog);
-
-		return super.close();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java
deleted file mode 100644
index c79fb8f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMonitorJobsDialog.java
+++ /dev/null
@@ -1,497 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IProgressMonitorWithBlocking;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-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.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.misc.Policy;
-
-/**
- * The ProgressMonitorJobsDialog is the progress monitor dialog used by the
- * progress service to allow locks to show the current jobs.
- */
-public class ProgressMonitorJobsDialog extends ProgressMonitorDialog {
-    private DetailedProgressViewer viewer;
-
-    /**
-     * The height of the viewer. Set when the details button is selected.
-     */
-    private int viewerHeight = -1;
-
-    Composite viewerComposite;
-
-    private Button detailsButton;
-
-    private long watchTime = -1;
-
-    protected boolean alreadyClosed = false;
-
-    private IProgressMonitor wrapperedMonitor;
-
-    //Cache initial enablement in case the enablement state is set
-    //before the button is created
-    protected boolean enableDetailsButton = false;
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param parent
-     */
-    public ProgressMonitorJobsDialog(Shell parent) {
-        super(parent);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createDialogArea(Composite parent) {
-        Composite top = (Composite) super.createDialogArea(parent);
-        createExtendedDialogArea(parent);
-        return top;
-    }
-
-	/**
-	 * Create the extensions to the dialog area.
-	 * @param parent
-	 */
-	protected void createExtendedDialogArea(Composite parent) {
-		viewerComposite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        viewerComposite.setLayout(layout);
-        GridData viewerData = new GridData(GridData.FILL_BOTH);
-        viewerData.horizontalSpan = 2;
-        viewerData.heightHint = 0;
-        viewerComposite.setLayoutData(viewerData);
-	}
-
-    /**
-     * The details button has been selected. Open or close the progress viewer
-     * as appropriate.
-     *  
-     */
-    void handleDetailsButtonSelect() {
-        Shell shell = getShell();
-        Point shellSize = shell.getSize();
-        Composite composite = (Composite) getDialogArea();
-        if (viewer != null) {
-            viewer.getControl().dispose();
-            viewer = null;
-            composite.layout();
-            shell.setSize(shellSize.x, shellSize.y - viewerHeight);
-            detailsButton.setText(ProgressMessages.ProgressMonitorJobsDialog_DetailsTitle);
-        } else {
-            //Abort if there are no jobs visible
-            if (ProgressManager.getInstance().getRootElements(Policy.DEBUG_SHOW_ALL_JOBS).length == 0) {
-                detailsButton.setEnabled(false);
-                return;
-            }
-
-            viewer = new DetailedProgressViewer(viewerComposite, SWT.MULTI
-                    | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-            viewer.setComparator(new ViewerComparator() {
-                /*
-                 * (non-Javadoc)
-                 * 
-                 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
-                 *      java.lang.Object, java.lang.Object)
-                 */
-                public int compare(Viewer testViewer, Object e1, Object e2) {
-                    return ((Comparable) e1).compareTo(e2);
-                }
-            });
-
-            viewer.setContentProvider(new ProgressViewerContentProvider(viewer,true,false){
-            	public Object[] getElements(Object inputElement) {
-            		return super.getElements(inputElement);
-            	}}
-            );
-            
-            viewer.setLabelProvider(new ProgressLabelProvider());
-            viewer.setInput(this);
-            GridData viewerData = new GridData(GridData.FILL_BOTH);
-            viewer.getControl().setLayoutData(viewerData);
-            GridData viewerCompositeData = (GridData) viewerComposite.getLayoutData();
-            viewerCompositeData.heightHint = convertHeightInCharsToPixels(10);
-            viewerComposite.layout(true);
-            viewer.getControl().setVisible(true);
-            viewerHeight = viewerComposite.computeTrim(0, 0, 0, viewerCompositeData.heightHint).height;
-            detailsButton.setText(ProgressMessages.ProgressMonitorJobsDialog_HideTitle); 
-            shell.setSize(shellSize.x, shellSize.y + viewerHeight);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-    protected void createButtonsForButtonBar(Composite parent) {
-        super.createButtonsForButtonBar(parent);
-        createDetailsButton(parent);
-    }
-
-    /**
-     * Create a spacer label to get the layout to not bunch the widgets.
-     * 
-     * @param parent
-     *            The parent of the new button.
-     */
-    protected void createSpacer(Composite parent) {
-        //Make a label to force the spacing
-        Label spacer = new Label(parent, SWT.NONE);
-        spacer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
-                | GridData.GRAB_HORIZONTAL));
-    }
-
-    /**
-     * Create the details button for the receiver.
-     * 
-     * @param parent
-     *            The parent of the new button.
-     */
-    protected void createDetailsButton(Composite parent) {
-        detailsButton = createButton(parent, IDialogConstants.DETAILS_ID,
-                ProgressMessages.ProgressMonitorJobsDialog_DetailsTitle, 
-                false);
-        detailsButton.addSelectionListener(new SelectionAdapter() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-                handleDetailsButtonSelect();
-            }
-        });
-        detailsButton.setCursor(arrowCursor);
-        detailsButton.setEnabled(enableDetailsButton);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createButtonBar(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createButtonBar(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NONE);
-        // create a layout with spacing and margins appropriate for the font
-        // size.
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 1; // this is incremented by createButton
-        layout.makeColumnsEqualWidth = false;
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
-        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
-        composite.setLayout(layout);
-        GridData data = new GridData(GridData.FILL_HORIZONTAL);
-        data.horizontalSpan = 2;
-        data.horizontalAlignment = GridData.END;
-        data.grabExcessHorizontalSpace = true;
-        composite.setLayoutData(data);
-        composite.setFont(parent.getFont());
-        // Add the buttons to the button bar.
-        if (arrowCursor == null) {
-			arrowCursor = new Cursor(parent.getDisplay(), SWT.CURSOR_ARROW);
-		}
-        createButtonsForButtonBar(composite);
-        return composite;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#clearCursors()
-     */
-    protected void clearCursors() {
-        if (detailsButton != null && !detailsButton.isDisposed()) {
-            detailsButton.setCursor(null);
-        }
-        super.clearCursors();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#updateForSetBlocked(org.eclipse.core.runtime.IStatus)
-     */
-    protected void updateForSetBlocked(IStatus reason) {
-    	if(alreadyClosed)
-    		return;
-    	
-        super.updateForSetBlocked(reason);
-        enableDetails(true);
-        if (viewer == null) {
-			handleDetailsButtonSelect();
-		}
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#run(boolean,
-     *      boolean, org.eclipse.jface.operation.IRunnableWithProgress)
-     */
-    public void run(boolean fork, boolean cancelable,
-            IRunnableWithProgress runnable) throws InvocationTargetException,
-            InterruptedException {
-        //if it is run in the UI Thread don't do anything.
-        if (!fork) {
-            enableDetails(false);
-        }
-        super.run(fork, cancelable, runnable);
-    }
-
-    /**
-     * Set the enable state of the details button now or when it will be
-     * created.
-     * 
-     * @param enableState
-     *            a boolean to indicate the preferred' state
-     */
-    protected void enableDetails(boolean enableState) {
-        if (detailsButton == null) {
-			enableDetailsButton = enableState;
-		} else {
-			detailsButton.setEnabled(enableState);
-		}
-    }
-
-    /**
-     * Start watching the ticks. When the long operation time has 
-     * passed open the dialog.
-     */
-    public void watchTicks() {
-        watchTime = System.currentTimeMillis();
-    }
-
-    /**
-     * Create a monitor for the receiver that wrappers the superclasses monitor.
-     *  
-     */
-    public void createWrapperedMonitor() {
-        wrapperedMonitor = new IProgressMonitorWithBlocking() {
-
-            IProgressMonitor superMonitor = ProgressMonitorJobsDialog.super
-                    .getProgressMonitor();
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String,
-             *      int)
-             */
-            public void beginTask(String name, int totalWork) {
-                superMonitor.beginTask(name, totalWork);
-                checkTicking();
-            }
-
-            /**
-             * Check if we have ticked in the last 800ms.
-             */
-            private void checkTicking() {
-                if (watchTime < 0) {
-					return;
-				}
-                if ((System.currentTimeMillis() - watchTime) > ProgressManager
-                        .getInstance().getLongOperationTime()) {
-                    watchTime = -1;
-                    openDialog();
-                }
-            }
-
-            /**
-             * Open the dialog in the ui Thread
-             */
-            private void openDialog() {
-                if (!PlatformUI.isWorkbenchRunning()) {
-					return;
-				}
-
-                PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
-                    /* (non-Javadoc)
-                     * @see java.lang.Runnable#run()
-                     */
-                    public void run() {
-						//Reset the watch if it is not safe to open
-						 if (!ProgressManagerUtil.safeToOpen(ProgressMonitorJobsDialog.this,null)){
-							  watchTicks();
-							  return;
-						 }
-			                 
-                        if (!alreadyClosed) {
-							open();
-						}
-                    }
-                });
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#done()
-             */
-            public void done() {
-                superMonitor.done();
-                checkTicking();
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#internalWorked(double)
-             */
-            public void internalWorked(double work) {
-                superMonitor.internalWorked(work);
-                checkTicking();
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#isCanceled()
-             */
-            public boolean isCanceled() {
-                return superMonitor.isCanceled();
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#setCanceled(boolean)
-             */
-            public void setCanceled(boolean value) {
-                superMonitor.setCanceled(value);
-
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
-             */
-            public void setTaskName(String name) {
-                superMonitor.setTaskName(name);
-                checkTicking();
-
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String)
-             */
-            public void subTask(String name) {
-                superMonitor.subTask(name);
-                checkTicking();
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitor#worked(int)
-             */
-            public void worked(int work) {
-                superMonitor.worked(work);
-                checkTicking();
-
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
-             */
-            public void clearBlocked() {
-                //We want to open on blocking too
-                if (superMonitor instanceof IProgressMonitorWithBlocking) {
-					((IProgressMonitorWithBlocking) superMonitor)
-                            .clearBlocked();
-				}
-
-            }
-
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.core.runtime.IProgressMonitorWithBlocking#setBlocked(org.eclipse.core.runtime.IStatus)
-             */
-            public void setBlocked(IStatus reason) {
-                openDialog();
-                if (superMonitor instanceof IProgressMonitorWithBlocking) {
-					((IProgressMonitorWithBlocking) superMonitor)
-                            .setBlocked(reason);
-				}
-
-            }
-
-        };
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#getProgressMonitor()
-     */
-    public IProgressMonitor getProgressMonitor() {
-        if (wrapperedMonitor == null) {
-			createWrapperedMonitor();
-		}
-        return wrapperedMonitor;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#close()
-     */
-    public boolean close() {
-        alreadyClosed = true;//As this sometimes delayed cache if it was already closed
-        boolean result = super.close();
-        if (!result) {//If it fails reset the flag
-            alreadyClosed = false;
-        }
-        return result;
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-     */
-    protected boolean isResizable() {
-    	return true;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressRegion.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressRegion.java
deleted file mode 100644
index 80a3800..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressRegion.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-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.ui.internal.TrimUtil;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.layout.IWindowTrim;
-
-/**
- * The ProgressRegion is class for the region of the workbench where the
- * progress line and the animation item are shown.
- */
-public class ProgressRegion implements IWindowTrim {
-    ProgressCanvasViewer viewer;
-
-    ProgressAnimationItem animationItem;
-
-    Composite region;
-
-    WorkbenchWindow workbenchWindow;
-    
-	private int fWidthHint = SWT.DEFAULT;
-	
-	private int fHeightHint = SWT.DEFAULT;
-
-	/**
-	 * the side the receiver is placed on
-	 */
-	private int side = SWT.BOTTOM;
-	
-	private boolean forceHorizontal;
-
-    /**
-     * Create a new instance of the receiver.
-     */
-    public ProgressRegion() {
-        //No default behavior.
-    }
-
-    /**
-     * Create the contents of the receiver in the parent. Use the window for the
-     * animation item.
-     * 
-     * @param parent
-     *            The parent widget of the composite.
-     * @param window
-     *            The WorkbenchWindow this is in.
-     * @return Control
-     */
-    public Control createContents(Composite parent, WorkbenchWindow window) {
-        workbenchWindow = window;
-
-        // Test whether or not 'advanced' graphics are available
-        // If not then we'll 'force' the ProgressBar to always be
-        // HORIZONTAL...
-        //TODO: This should likely be at some 'global' level state
-        GC gc = new GC(parent);
-        gc.setAdvanced(true);
-        forceHorizontal = !gc.getAdvanced();
-        gc.dispose();
-        
-        region = new Composite(parent, SWT.NONE) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.widgets.Composite#computeSize(int, int,
-			 *      boolean)
-			 */
-			public Point computeSize(int wHint, int hHint, boolean changed) {
-				Point size = super.computeSize(wHint, hHint, changed);
-				if (isHorizontal(side))
-					size.y = TrimUtil.TRIM_DEFAULT_HEIGHT;
-				else {
-					size.x = TrimUtil.TRIM_DEFAULT_HEIGHT;
-				}
-				return size;
-			}
-		};
-		
-        GridLayout gl = new GridLayout();
-        gl.marginHeight = 0;
-        gl.marginWidth = 0;
-        if (isHorizontal(side))
-        	gl.numColumns = 3;
-        region.setLayout(gl);
-
-        viewer = new ProgressCanvasViewer(region, SWT.NO_FOCUS, 1, 36, isHorizontal(side) ? SWT.HORIZONTAL : SWT.VERTICAL);
-        viewer.setUseHashlookup(true);
-        Control viewerControl = viewer.getControl();
-        GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
-        Point viewerSizeHints = viewer.getSizeHints();
-        if (isHorizontal(side)) {
-        	gd.widthHint = viewerSizeHints.x;
-        	gd.heightHint = viewerSizeHints.y;
-        } else {
-        	gd.widthHint = viewerSizeHints.y;
-        	gd.heightHint = viewerSizeHints.x;
-        }
-        viewerControl.setLayoutData(gd);
-
-        int widthPreference = AnimationManager.getInstance()
-                .getPreferredWidth() + 25;
-        animationItem = new ProgressAnimationItem(this, isHorizontal(side) ? SWT.HORIZONTAL : SWT.VERTICAL);
-        animationItem.createControl(region);
-
-        animationItem.setAnimationContainer(new AnimationItem.IAnimationContainer() {
-            /* (non-Javadoc)
-             * @see org.eclipse.ui.internal.progress.AnimationItem.IAnimationContainer#animationDone()
-             */
-            public void animationDone() {
-                //Add an extra refresh to the viewer in case
-                //of stale input if the controls are not disposed
-                if (viewer.getControl().isDisposed()) {
-					return;
-				}
-                viewer.refresh();
-            }
-
-            /* (non-Javadoc)
-             * @see org.eclipse.ui.internal.progress.AnimationItem.IAnimationContainer#animationStart()
-             */
-            public void animationStart() {
-                // Nothing by default here.
-
-            }
-        });
-        if (isHorizontal(side)) {
-        	gd = new GridData(GridData.FILL_VERTICAL);
-            gd.widthHint = widthPreference;
-        } else { 
-        	gd = new GridData(GridData.FILL_HORIZONTAL);
-            gd.heightHint = widthPreference;
-        }
-
-        animationItem.getControl().setLayoutData(gd);
-
-        viewerControl.addMouseListener(new MouseAdapter() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.swt.events.MouseAdapter#mouseDoubleClick(org.eclipse.swt.events.MouseEvent)
-             */
-            public void mouseDoubleClick(MouseEvent e) {
-                processDoubleClick();
-            }
-        });
-
-        //Never show debug info
-        IContentProvider provider = new ProgressViewerContentProvider(viewer,
-                false,false);
-        viewer.setContentProvider(provider);
-        viewer.setInput(provider);
-        viewer.setLabelProvider(new ProgressViewerLabelProvider(viewerControl));
-        viewer.setComparator(ProgressManagerUtil.getProgressViewerComparator());
-        return region;
-    }
-
-    /**
-     * Return the animationItem for the receiver.
-     * 
-     * @return AnimationItem
-     */
-    public AnimationItem getAnimationItem() {
-        return animationItem;
-    }
-
-    /**
-     * Return the control for the receiver.
-     * 
-     * @return Control
-     */
-    public Control getControl() {
-        return region;
-    }
-
-    /**
-     * Process the double click event.
-     */
-    public void processDoubleClick() {
-        ProgressManagerUtil.openProgressView(workbenchWindow);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#dock(int)
-	 */
-	public void dock(int dropSide) {
-		int oldSide = side;
-		side = dropSide;
-		if (oldSide == dropSide || (isVertical(oldSide) && isVertical(dropSide)) || (isHorizontal(oldSide) && isHorizontal(dropSide)))
-			return;
-		recreate();
-		
-	}
-
-	/**
-	 * Answer true if the side is a horizonal one
-	 * 
-	 * @param dropSide
-	 * @return <code>true</code> if the side is horizontal
-	 */
-	private boolean isHorizontal(int dropSide) {
-		if (forceHorizontal)
-			return true;
-		return dropSide == SWT.TOP || dropSide == SWT.BOTTOM;
-	}
-
-
-	/**
-	 * Answer true if the side is a horizonal one
-	 * 
-	 * @param dropSide
-	 * @return <code>true</code> if the side is horizontal
-	 */
-	private boolean isVertical(int dropSide) {
-		if (forceHorizontal)
-			return false;
-		return dropSide == SWT.LEFT || dropSide == SWT.RIGHT;
-	}
-
-	/**
-	 * Recreate the receiver given the new side
-	 */
-	private void recreate() {
-		if (region != null && !region.isDisposed()) {
-			Composite parent = region.getParent();
-			boolean animating = animationItem.animationRunning();
-	        AnimationManager.getInstance().removeItem(animationItem);
-			region.dispose();
-			createContents(parent, workbenchWindow);
-			if (animating)
-				animationItem.animationStart();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getId()
-	 */
-	public String getId() {
-		return "org.eclipse.ui.internal.progress.ProgressRegion"; //$NON-NLS-1$
-	}
-
-	public String getDisplayName() {
-		return WorkbenchMessages.TrimCommon_Progress_TrimName;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#getValidSides()
-	 */
-	public int getValidSides() {
-		return SWT.BOTTOM | SWT.TOP | SWT.LEFT | SWT.RIGHT ;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#isCloseable()
-	 */
-	public boolean isCloseable() {
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.IWindowTrim#handleClose()
-	 */
-	public void handleClose() {
-		// nothing to do...
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWindowTrim#getWidthHint()
-	 */
-	public int getWidthHint() {
-		return fWidthHint;
-	}
-	
-	/**
-	 * Update the width hint for this control.
-	 * @param w pixels, or SWT.DEFAULT
-	 */
-	public void setWidthHint(int w) {
-		fWidthHint = w;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWindowTrim#getHeightHint()
-	 */
-	public int getHeightHint() {
-		return fHeightHint;
-	}
-	
-	/**
-	 * Update the height hint for this control.
-	 * @param h pixels, or SWT.DEFAULT
-	 */
-	public void setHeightHint(int h) {
-		fHeightHint = h;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWindowTrim#isResizeable()
-	 */
-	public boolean isResizeable() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java
deleted file mode 100644
index c088b069..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressView.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-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.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.preferences.ViewPreferencesAction;
-
-/**
- * The ProgressView is the class that shows the details of the current workbench
- * progress.
- */
-public class ProgressView extends ViewPart implements IViewPart {
-
-	DetailedProgressViewer viewer;
-
-	Action cancelAction;
-
-	Action clearAllAction;
-
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(Composite parent) {
-		viewer = new DetailedProgressViewer(parent, SWT.MULTI | SWT.H_SCROLL);
-		viewer.setComparator(ProgressManagerUtil.getProgressViewerComparator());
-
-		viewer.getControl().setLayoutData(
-				new GridData(SWT.FILL, SWT.FILL, true, true));
-
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.RESPONSIVE_UI);
-		
-		initContentProvider();
-		createClearAllAction();
-		createCancelAction();
-		initContextMenu();
-		initPulldownMenu();
-		initToolBar();
-		getSite().setSelectionProvider(viewer);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPart#setFocus()
-	 */
-	public void setFocus() {
-		if (viewer != null) {
-			viewer.setFocus();
-		}
-	}
-
-	/**
-	 * Sets the content provider for the viewer.
-	 */
-	protected void initContentProvider() {
-		ProgressViewerContentProvider provider = new ProgressViewerContentProvider(viewer, true ,true);
-		viewer.setContentProvider(provider);
-		viewer.setInput(ProgressManager.getInstance());
-	}
-
-	/**
-	 * Initialize the context menu for the receiver.
-	 */
-	private void initContextMenu() {
-		MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		menuMgr.add(cancelAction);
-		menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager manager) {
-				JobInfo info = getSelectedInfo();
-				if (info == null) {
-					return;
-				}
-			}
-		});
-		menuMgr.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-		getSite().registerContextMenu(menuMgr, viewer);
-		viewer.getControl().setMenu(menu);
-	}
-
-	private void initPulldownMenu() {
-		IMenuManager menuMgr = getViewSite().getActionBars().getMenuManager();
-		menuMgr.add(clearAllAction);
-		menuMgr.add(new ViewPreferencesAction() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.preferences.ViewPreferencesAction#openViewPreferencesDialog()
-			 */
-			public void openViewPreferencesDialog() {
-				new JobsViewPreferenceDialog(viewer.getControl().getShell())
-						.open();
-
-			}
-		});
-
-	}
-
-	private void initToolBar() {
-		IActionBars bars = getViewSite().getActionBars();
-		IToolBarManager tm = bars.getToolBarManager();
-		tm.add(clearAllAction);
-	}
-
-	/**
-	 * Return the selected objects. If any of the selections are not JobInfos or
-	 * there is no selection then return null.
-	 * 
-	 * @return JobInfo[] or <code>null</code>.
-	 */
-	private IStructuredSelection getSelection() {
-		// If the provider has not been set yet move on.
-		ISelectionProvider provider = getSite().getSelectionProvider();
-		if (provider == null) {
-			return null;
-		}
-		ISelection currentSelection = provider.getSelection();
-		if (currentSelection instanceof IStructuredSelection) {
-			return (IStructuredSelection) currentSelection;
-		}
-		return null;
-	}
-
-	/**
-	 * Get the currently selected job info. Only return it if it is the only
-	 * item selected and it is a JobInfo.
-	 * 
-	 * @return JobInfo
-	 */
-	JobInfo getSelectedInfo() {
-		IStructuredSelection selection = getSelection();
-		if (selection != null && selection.size() == 1) {
-			JobTreeElement element = (JobTreeElement) selection
-					.getFirstElement();
-			if (element.isJobInfo()) {
-				return (JobInfo) element;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Create the cancel action for the receiver.
-	 */
-	private void createCancelAction() {
-		cancelAction = new Action(ProgressMessages.ProgressView_CancelAction) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.action.Action#run()
-			 */
-			public void run() {
-				viewer.cancelSelection();
-			}
-		};
-
-	}
-
-	/**
-	 * Create the clear all action for the receiver.
-	 */
-	private void createClearAllAction() {
-		clearAllAction = new Action(
-				ProgressMessages.ProgressView_ClearAllAction) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.action.Action#run()
-			 */
-			public void run() {
-				FinishedJobs.getInstance().clearAll();
-			}
-		};
-		clearAllAction
-				.setToolTipText(ProgressMessages.NewProgressView_RemoveAllJobsToolTip);
-		ImageDescriptor id = WorkbenchImages
-				.getWorkbenchImageDescriptor("/elcl16/progress_remall.gif"); //$NON-NLS-1$
-		if (id != null) {
-			clearAllAction.setImageDescriptor(id);
-		}
-		id = WorkbenchImages
-				.getWorkbenchImageDescriptor("/dlcl16/progress_remall.gif"); //$NON-NLS-1$
-		if (id != null) {
-			clearAllAction.setDisabledImageDescriptor(id);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewUpdater.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewUpdater.java
deleted file mode 100644
index 4df676c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewUpdater.java
+++ /dev/null
@@ -1,459 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The ProgressViewUpdater is the singleton that updates viewers.
- */
-class ProgressViewUpdater implements IJobProgressManagerListener {
-
-    private static ProgressViewUpdater singleton;
-
-    private IProgressUpdateCollector[] collectors;
-
-    Job updateJob;
-
-    UpdatesInfo currentInfo = new UpdatesInfo();
-
-    Object updateLock = new Object();
-
-    boolean debug;
-    
-   
-    /**
-     * The UpdatesInfo is a private class for keeping track of the updates
-     * required.
-     */
-    class UpdatesInfo {
-
-        Collection additions = new HashSet();
-
-        Collection deletions = new HashSet();
-
-        Collection refreshes = new HashSet();
-
-        boolean updateAll = false;
-
-        private UpdatesInfo() {
-            //Create a new instance of the info
-        }
-
-        /**
-         * Add an add update
-         * 
-         * @param addition
-         */
-        void add(JobTreeElement addition) {
-            additions.add(addition);
-        }
-
-        /**
-         * Add a remove update
-         * 
-         * @param removal
-         */
-        void remove(JobTreeElement removal) {
-            deletions.add(removal);
-        }
-
-        /**
-         * Add a refresh update
-         * 
-         * @param refresh
-         */
-        void refresh(JobTreeElement refresh) {
-            refreshes.add(refresh);
-        }
-
-        /**
-         * Reset the caches after completion of an update.
-         */
-        void reset() {
-            additions.clear();
-            deletions.clear();
-            refreshes.clear();
-            updateAll = false;
-        }
-
-        void processForUpdate() {
-            HashSet staleAdditions = new HashSet();
-
-            Iterator additionsIterator = additions.iterator();
-            while (additionsIterator.hasNext()) {
-                JobTreeElement treeElement = (JobTreeElement) additionsIterator
-                        .next();
-                if (!treeElement.isActive()) {
-                    if (deletions.contains(treeElement)) {
-						staleAdditions.add(treeElement);
-					}
-                }
-            }
-
-            additions.removeAll(staleAdditions);
-
-            HashSet obsoleteRefresh = new HashSet();
-            Iterator refreshIterator = refreshes.iterator();
-            while (refreshIterator.hasNext()) {
-                JobTreeElement treeElement = (JobTreeElement) refreshIterator
-                        .next();
-                if (deletions.contains(treeElement)
-                        || additions.contains(treeElement)) {
-					obsoleteRefresh.add(treeElement);
-				}
-                
-                //Also check for groups that are being added
-               Object parent = treeElement.getParent();
-               if(parent != null && (deletions.contains(parent)
-                       || additions.contains(parent))){
-            	   obsoleteRefresh.add(treeElement);
-               }
-               
-                if (!treeElement.isActive()) {
-                    //If it is done then delete it
-                    obsoleteRefresh.add(treeElement);
-                    deletions.add(treeElement);
-                }
-            }
-
-            refreshes.removeAll(obsoleteRefresh);
-
-        }
-    }
-
-    /**
-     * Return a new instance of the receiver.
-     * 
-     * @return ProgressViewUpdater
-     */
-   static ProgressViewUpdater getSingleton() {
-        if (singleton == null) {
-			singleton = new ProgressViewUpdater();
-		}
-        return singleton;
-    }
-
-    /**
-     * Return whether or not there is a singleton for updates to avoid creating
-     * extra listeners.
-     * 
-     * @return boolean <code>true</code> if there is already
-     * a singleton
-     */
-    static boolean hasSingleton() {
-        return singleton != null;
-    }
-
-    static void clearSingleton() {
-        if (singleton != null) {
-			ProgressManager.getInstance().removeListener(singleton);
-		}
-        singleton = null;
-    }
-
-    /**
-     * Create a new instance of the receiver.
-     */
-    private ProgressViewUpdater() {
-        createUpdateJob();
-        collectors = new IProgressUpdateCollector[0];
-        ProgressManager.getInstance().addListener(this);
-        debug = 
-        	PrefUtil.getAPIPreferenceStore().
-        		getBoolean(IWorkbenchPreferenceConstants.SHOW_SYSTEM_JOBS);
-    }
-
-    /**
-     * Add the new collector to the list of collectors.
-     * 
-     * @param newCollector
-     */
-    void addCollector(IProgressUpdateCollector newCollector) {
-        IProgressUpdateCollector[] newCollectors = new IProgressUpdateCollector[collectors.length + 1];
-        System.arraycopy(collectors, 0, newCollectors, 0, collectors.length);
-        newCollectors[collectors.length] = newCollector;
-        collectors = newCollectors;
-    }
-
-    /**
-     * Remove the collector from the list of collectors.
-     * 
-     * @param provider
-     */
-    void removeCollector(IProgressUpdateCollector provider) {
-        HashSet newCollectors = new HashSet();
-        for (int i = 0; i < collectors.length; i++) {
-            if (!collectors[i].equals(provider)) {
-				newCollectors.add(collectors[i]);
-			}
-        }
-        IProgressUpdateCollector[] newArray = new IProgressUpdateCollector[newCollectors
-                .size()];
-        newCollectors.toArray(newArray);
-        collectors = newArray;
-        //Remove ourselves if there is nothing to update
-        if (collectors.length == 0) {
-			clearSingleton();
-		}
-    }
-
-    /**
-     * Schedule an update.
-     */
-    void scheduleUpdate() {
-        if (PlatformUI.isWorkbenchRunning()) {
-            //Add in a 100ms delay so as to keep priority low
-            updateJob.schedule(100);
-        }
-    }
-
-    /**
-     * Create the update job that handles the updatesInfo.
-     */
-    private void createUpdateJob() {
-        updateJob = new WorkbenchJob(ProgressMessages.ProgressContentProvider_UpdateProgressJob) {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-             */
-            public IStatus runInUIThread(IProgressMonitor monitor) {
-
-                //Abort the job if there isn't anything
-                if (collectors.length == 0) {
-					return Status.CANCEL_STATUS;
-				}
-
-                if (currentInfo.updateAll) {
-                    synchronized (updateLock) {
-                        currentInfo.reset();
-                    }
-                    for (int i = 0; i < collectors.length; i++) {
-                        collectors[i].refresh();
-                    }
-
-                } else {
-                    //Lock while getting local copies of the caches.
-                    Object[] updateItems;
-                    Object[] additionItems;
-                    Object[] deletionItems;
-                    synchronized (updateLock) {
-                        currentInfo.processForUpdate();
-
-                        updateItems = currentInfo.refreshes.toArray();
-                        additionItems = currentInfo.additions.toArray();
-                        deletionItems = currentInfo.deletions.toArray();
-
-                        currentInfo.reset();
-                    }
-
-                    for (int v = 0; v < collectors.length; v++) {
-                        IProgressUpdateCollector collector = collectors[v];
-
-                        if (updateItems.length > 0) {
-							collector.refresh(updateItems);
-						}
-                        if (additionItems.length > 0) {
-							collector.add(additionItems);
-						}
-                        if (deletionItems.length > 0) {
-							collector.remove(deletionItems);
-						}
-                    }
-                }
-
-                return Status.OK_STATUS;
-            }
-        };
-        updateJob.setSystem(true);
-        updateJob.setPriority(Job.DECORATE);
-        updateJob.setProperty(ProgressManagerUtil.INFRASTRUCTURE_PROPERTY, new Object());
-
-    }
-
-    /**
-     * Get the updates info that we are using in the receiver.
-     * 
-     * @return Returns the currentInfo.
-     */
-    UpdatesInfo getCurrentInfo() {
-        return currentInfo;
-    }
-
-    /**
-     * Refresh the supplied JobInfo.
-     * @param info
-     */
-    public void refresh(JobInfo info) {
-
-        if (isUpdateJob(info.getJob())) {
-			return;
-		}
-
-        synchronized (updateLock) {
-            currentInfo.refresh(info);
-            GroupInfo group = info.getGroupInfo();
-            if (group != null) {
-				currentInfo.refresh(group);
-			}
-        }
-        //Add in a 100ms delay so as to keep priority low
-        scheduleUpdate();
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#refreshJobInfo(org.eclipse.ui.internal.progress.JobInfo)
-     */
-    public void refreshJobInfo(JobInfo info) {
-
-        if (isUpdateJob(info.getJob())) {
-			return;
-		}
-
-        synchronized (updateLock) {
-            currentInfo.refresh(info);
-        }
-        //Add in a 100ms delay so as to keep priority low
-        scheduleUpdate();
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#refreshGroup(org.eclipse.ui.internal.progress.GroupInfo)
-     */
-    public void refreshGroup(GroupInfo info) {
-        synchronized (updateLock) {
-            currentInfo.refresh(info);
-        }
-        //Add in a 100ms delay so as to keep priority low
-        scheduleUpdate();
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#addGroup(org.eclipse.ui.internal.progress.GroupInfo)
-     */
-    public void addGroup(GroupInfo info) {
-
-        synchronized (updateLock) {
-            currentInfo.add(info);
-        }
-        scheduleUpdate();
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#refreshAll()
-     */
-    public void refreshAll() {
-
-        synchronized (updateLock) {
-            currentInfo.updateAll = true;
-        }
-
-        //Add in a 100ms delay so as to keep priority low
-        scheduleUpdate();
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#add(org.eclipse.ui.internal.progress.JobInfo)
-     */
-    public void addJob(JobInfo info) {
-
-        if (isUpdateJob(info.getJob())) {
-			return;
-		}
-
-        synchronized (updateLock) {
-            GroupInfo group = info.getGroupInfo();
-
-            if (group == null) {
-				currentInfo.add(info);
-			} else {
-                currentInfo.refresh(group);
-            }
-        }
-        scheduleUpdate();
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#removeJob(org.eclipse.ui.internal.progress.JobInfo)
-     */
-    public void removeJob(JobInfo info) {
-
-        if (isUpdateJob(info.getJob())) {
-			return;
-		}
-
-        synchronized (updateLock) {
-            GroupInfo group = info.getGroupInfo();
-            if (group == null) {
-				currentInfo.remove(info);
-			} else {
-                currentInfo.refresh(group);
-            }
-        }
-        scheduleUpdate();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#removeGroup(org.eclipse.ui.internal.progress.GroupInfo)
-     */
-    public void removeGroup(GroupInfo group) {
-        synchronized (updateLock) {
-            currentInfo.remove(group);
-        }
-        scheduleUpdate();
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IJobProgressManagerListener#showsDebug()
-     */
-    public boolean showsDebug() {
-        return debug;
-    }
-
-    /**
-     * Return whether or not this is the update job. This is used to determine
-     * if a final refresh is required.
-     * 
-     * @param job
-     * @return boolean <code>true</true> if this is the 
-     * update job
-     */
-    boolean isUpdateJob(Job job) {
-        return job.equals(updateJob);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java
deleted file mode 100644
index 01d598a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerContentProvider.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.internal.progress.FinishedJobs.KeptJobsListener;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The ProgressViewerContentProvider is the content provider progress viewers.
- */
-public class ProgressViewerContentProvider extends ProgressContentProvider {
-	protected AbstractProgressViewer progressViewer;
-
-	private KeptJobsListener keptJobListener;
-
-	private boolean showFinished;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param structured
-	 *            The Viewer we are providing content for
-	 * @param debug
-	 *            If true debug information will be shown if the debug flag in
-	 *            the ProgressManager is true.
-	 * @param showFinished
-	 *            A boolean that indicates whether or not the finished jobs
-	 *            should be shown.
-	 */
-	public ProgressViewerContentProvider(AbstractProgressViewer structured,
-			boolean debug, boolean showFinished) {
-		super(debug);
-		progressViewer = structured;
-		this.showFinished = showFinished;
-		if (showFinished) {
-			FinishedJobs.getInstance().addListener(getKeptJobListener());
-		}
-	}
-
-	/**
-	 * Return a listener for kept jobs.
-	 * 
-	 * @return KeptJobsListener
-	 */
-	private KeptJobsListener getKeptJobListener() {
-		keptJobListener = new KeptJobsListener() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.progress.FinishedJobs.KeptJobsListener#finished(org.eclipse.ui.internal.progress.JobTreeElement)
-			 */
-			public void finished(JobTreeElement jte) {
-				final JobTreeElement element = jte;
-				Job updateJob = new WorkbenchJob("Refresh finished") {//$NON-NLS-1$
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-					 */
-					public IStatus runInUIThread(IProgressMonitor monitor) {
-						refresh(new Object[] { element });
-						return Status.OK_STATUS;
-					}
-					
-					/* (non-Javadoc)
-					 * @see org.eclipse.ui.progress.WorkbenchJob#shouldSchedule()
-					 */
-					public boolean shouldSchedule() {
-						return !progressViewer.getControl().isDisposed();
-					}
-					
-					
-					/* (non-Javadoc)
-					 * @see org.eclipse.ui.progress.WorkbenchJob#shouldRun()
-					 */
-					public boolean shouldRun() {
-						return !progressViewer.getControl().isDisposed();
-					}
-				};
-				updateJob.setSystem(true);
-				updateJob.schedule();
-
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.internal.progress.FinishedJobs.KeptJobsListener#removed(org.eclipse.ui.internal.progress.JobTreeElement)
-			 */
-			public void removed(JobTreeElement jte) {
-				final JobTreeElement element = jte;
-				Job updateJob = new WorkbenchJob("Remove finished") {//$NON-NLS-1$
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-					 */
-					public IStatus runInUIThread(IProgressMonitor monitor) {
-						if (element == null) {
-							refresh();
-						} else {
-							ProgressViewerContentProvider.this
-									.remove(new Object[] { element });
-						}
-						return Status.OK_STATUS;
-					}
-				};
-				updateJob.setSystem(true);
-				updateJob.schedule();
-
-			}
-
-		};
-		return keptJobListener;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.IProgressUpdateCollector#refresh()
-	 */
-	public void refresh() {
-		progressViewer.refresh(true);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.IProgressUpdateCollector#refresh(org.eclipse.ui.internal.progress.JobTreeElement[])
-	 */
-	public void refresh(Object[] elements) {
-		Object[] refreshes = getRoots(elements, true);
-		for (int i = 0; i < refreshes.length; i++) {
-			progressViewer.refresh(refreshes[i], true);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-	 */
-	public Object[] getElements(Object inputElement) {
-		Object[] elements = super.getElements(inputElement);
-
-		if (!showFinished)
-			return elements;
-
-		Set kept = FinishedJobs.getInstance().getKeptAsSet();
-
-		if (kept.size() == 0)
-			return elements;
-
-		Set all = new HashSet();
-
-		for (int i = 0; i < elements.length; i++) {
-			Object element = elements[i];
-			all.add(element);
-		}
-
-		Iterator keptIterator = kept.iterator();
-		while (keptIterator.hasNext()) {
-			JobTreeElement next = (JobTreeElement) keptIterator.next();
-			if (next.getParent() != null && all.contains(next.getParent()))
-				continue;
-			all.add(next);
-
-		}
-
-		return all.toArray();
-	}
-
-	/**
-	 * Get the root elements of the passed elements as we only show roots.
-	 * Replace the element with its parent if subWithParent is true
-	 * 
-	 * @param elements
-	 *            the array of elements.
-	 * @param subWithParent
-	 *            sub with parent flag.
-	 * @return Object[]
-	 */
-	private Object[] getRoots(Object[] elements, boolean subWithParent) {
-		if (elements.length == 0) {
-			return elements;
-		}
-		HashSet roots = new HashSet();
-		for (int i = 0; i < elements.length; i++) {
-			JobTreeElement element = (JobTreeElement) elements[i];
-			if (element.isJobInfo()) {
-				GroupInfo group = ((JobInfo) element).getGroupInfo();
-				if (group == null) {
-					roots.add(element);
-				} else {
-					if (subWithParent) {
-						roots.add(group);
-					}
-				}
-			} else {
-				roots.add(element);
-			}
-		}
-		return roots.toArray();
-	}
-
-	public void add(Object[] elements) {
-		progressViewer.add(elements);
-
-	}
-
-	public void remove(Object[] elements) {
-		progressViewer.remove(elements);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		if (keptJobListener != null) {
-			FinishedJobs.getInstance().removeListener(keptJobListener);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java
deleted file mode 100644
index d7c0319..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressViewerLabelProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * The ProgressViewerLabelProvider is the label provider for progress viewers.
- */
-public class ProgressViewerLabelProvider extends LabelProvider {
-    private Control control;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
-     */
-    public String getText(Object element) {
-        JobTreeElement info = (JobTreeElement) element;
-        return ProgressManagerUtil.shortenText(
-                info.getCondensedDisplayString(), control);
-    }
-
-    /**
-     * Create a new instance of the receiver within the control.
-     * 
-     * @param progressControl The control that the label is
-     * being created for.
-     */
-    public ProgressViewerLabelProvider(Control progressControl) {
-        super();
-        control = progressControl;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java
deleted file mode 100644
index 29477cd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.progress;
-
-import java.util.HashMap;
-
-import org.eclipse.ui.progress.IProgressConstants;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-
-/**
- * StatusAdapterHelper is a class for caching {@link StatusAdapter} instances to make sure
- * they are not created twice within the progress service.
- * @since 3.3
- */
-public class StatusAdapterHelper {
-	private static StatusAdapterHelper instance;
-
-	private HashMap map;
-
-	private StatusAdapterHelper() {
-	}
-
-	/**
-	 * Return the singleton.
-	 * @return StatusAdapterHelper
-	 */
-	public static StatusAdapterHelper getInstance() {
-		if (instance == null) {
-			instance = new StatusAdapterHelper();
-		}
-		return instance;
-	}
-
-	/**
-	 * Set the {@link StatusAdapter} for the {@link JobInfo}
-	 * @param info
-	 * @param statusAdapter
-	 */
-	public void putStatusAdapter(JobInfo info, StatusAdapter statusAdapter) {
-		if (map == null) {
-			map = new HashMap();
-		}
-		map.put(info, statusAdapter);
-	}
-
-	/**
-	 * Return the adapter for this info.
-	 * @param info
-	 * @return
-	 */
-	public StatusAdapter getStatusAdapter(JobInfo info) {
-		if (map == null) {
-			return null;
-		}
-		StatusAdapter statusAdapter = (StatusAdapter) map.remove(info);
-		statusAdapter.setProperty(
-				IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY,
-				Boolean.FALSE);
-		return statusAdapter;
-	}
-
-	public void clear() {
-		if (map != null) {
-			map.clear();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java
deleted file mode 100644
index 44e5801..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-/**
- * SubTaskInfo is the class that displays a subtask in the tree.
- */
-class SubTaskInfo extends JobTreeElement {
-
-	protected String taskName;
-
-	JobInfo jobInfo;
-
-	/**
-	 * Create a new instance of the receiver.
-	 * 
-	 * @param parentJob
-	 * @param name
-	 */
-	SubTaskInfo(JobInfo parentJob, String name) {
-		taskName = name;
-		jobInfo = parentJob;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren()
-	 */
-	Object[] getChildren() {
-		return ProgressManagerUtil.EMPTY_OBJECT_ARRAY;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString()
-	 */
-	String getDisplayString() {
-		if (taskName == null) {
-			return ProgressMessages.SubTaskInfo_UndefinedTaskName;
-		}
-		return taskName;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren()
-	 */
-	boolean hasChildren() {
-		return false;
-	}
-
-	/**
-	 * Set the taskName of the receiver.
-	 * 
-	 * @param name
-	 */
-	void setTaskName(String name) {
-		if (name == null)
-			taskName = ProgressMessages.SubTaskInfo_UndefinedTaskName;
-		else
-			this.taskName = name;
-	}
-
-	/**
-	 * Returns the taskName of the receiver.
-	 */
-	String getTaskName() {
-		return taskName;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent()
-	 */
-	Object getParent() {
-		return jobInfo;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isJobInfo()
-	 */
-	boolean isJobInfo() {
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#isActive()
-	 */
-	boolean isActive() {
-		return jobInfo.isActive();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java
deleted file mode 100644
index 6566b06..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * The TaskInfo is the info on a task with a job. It is assumed that there is
- * only one task running at a time - any previous tasks in a Job will be
- * deleted.
- */
-public class TaskInfo extends SubTaskInfo {
-	double preWork = 0;
-
-	int totalWork = 0;
-
-	/**
-	 * Create a new instance of the receiver with the supplied total work and
-	 * task name.
-	 * 
-	 * @param parentJobInfo
-	 * @param infoName
-	 * @param total
-	 */
-	TaskInfo(JobInfo parentJobInfo, String infoName, int total) {
-		super(parentJobInfo, infoName);
-		totalWork = total;
-	}
-
-	/**
-	 * Add the work increment to the total.
-	 * 
-	 * @param workIncrement
-	 */
-	void addWork(double workIncrement) {
-
-		// Don't bother if we are indeterminate
-		if (totalWork == IProgressMonitor.UNKNOWN) {
-			return;
-		}
-		preWork += workIncrement;
-
-	}
-
-	/**
-	 * Add the amount of work to the recevier. Update a parent monitor by the
-	 * increment scaled to the amount of ticks this represents.
-	 * 
-	 * @param workIncrement
-	 *            int the amount of work in the receiver
-	 * @param parentMonitor
-	 *            The IProgressMonitor that is also listening
-	 * @param parentTicks
-	 *            the number of ticks this monitor represents
-	 */
-	void addWork(double workIncrement, IProgressMonitor parentMonitor,
-			int parentTicks) {
-		// Don't bother if we are indeterminate
-		if (totalWork == IProgressMonitor.UNKNOWN) {
-			return;
-		}
-
-		addWork(workIncrement);
-		parentMonitor.internalWorked(workIncrement * parentTicks / totalWork);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString(boolean)
-	 */
-	String getDisplayString(boolean showProgress) {
-
-		if (totalWork == IProgressMonitor.UNKNOWN) {
-			return unknownProgress();
-		}
-
-		if (taskName == null) {
-			return getDisplayStringWithoutTask(showProgress);
-		}
-
-		if (showProgress) {
-			String[] messageValues = new String[3];
-			messageValues[0] = String.valueOf(getPercentDone());
-			messageValues[1] = jobInfo.getJob().getName();
-			messageValues[2] = taskName;
-
-			return NLS
-					.bind(ProgressMessages.JobInfo_DoneMessage, messageValues);
-		}
-		String[] messageValues = new String[2];
-		messageValues[0] = jobInfo.getJob().getName();
-		messageValues[1] = taskName;
-
-		return NLS.bind(ProgressMessages.JobInfo_DoneNoProgressMessage,
-				messageValues);
-
-	}
-
-	/**
-	 * Get the display String without the task name.
-	 * 
-	 * @param showProgress
-	 *            Whether or not we are showing progress
-	 * 
-	 * @return String
-	 */
-	String getDisplayStringWithoutTask(boolean showProgress) {
-
-		if (!showProgress || totalWork == IProgressMonitor.UNKNOWN) {
-			return jobInfo.getJob().getName();
-		}
-
-		return NLS.bind(ProgressMessages.JobInfo_NoTaskNameDoneMessage, jobInfo
-				.getJob().getName(), String.valueOf(getPercentDone()));
-	}
-
-	/**
-	 * Return an integer representing the amount of work completed. If progress
-	 * is indeterminate return IProgressMonitor.UNKNOWN.
-	 * 
-	 * @return int IProgressMonitor.UNKNOWN or a value between 0 and 100.
-	 */
-	int getPercentDone() {
-		if (totalWork == IProgressMonitor.UNKNOWN) {
-			return IProgressMonitor.UNKNOWN;
-		}
-
-		return Math.min((int) (preWork * 100 / totalWork), 100);
-	}
-
-	/**
-	 * Return the progress for a monitor whose totalWork is
-	 * <code>IProgressMonitor.UNKNOWN</code>.
-	 * 
-	 * @return String
-	 */
-	private String unknownProgress() {
-		if (taskName == null) {
-			return jobInfo.getJob().getName();
-		}
-		String[] messageValues = new String[2];
-		messageValues[0] = jobInfo.getJob().getName();
-		messageValues[1] = taskName;
-		return NLS
-				.bind(ProgressMessages.JobInfo_UnknownProgress, messageValues);
-
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
deleted file mode 100644
index f942b9a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/WorkbenchSiteProgressService.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.progress;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.part.WorkbenchPart;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-/**
- * The WorkbenchSiteProgressService is the concrete implementation of the
- * WorkbenchSiteProgressService used by the workbench components.
- */
-public class WorkbenchSiteProgressService implements
-        IWorkbenchSiteProgressService, IJobBusyListener {
-    PartSite site;
-
-    private Collection busyJobs = Collections.synchronizedSet(new HashSet());
-
-    private Object busyLock = new Object();
-
-    IJobChangeListener listener;
-
-    IPropertyChangeListener[] changeListeners = new IPropertyChangeListener[0];
-
-    private Cursor waitCursor;
-
-    private SiteUpdateJob updateJob;
-
-    /**
-     * Flag that keeps state from calls to {@link #showBusy(boolean)}
-     */
-	private int busyCount = 0;
-
-    private class SiteUpdateJob extends WorkbenchJob {
-        private boolean busy;
-
-        private boolean useWaitCursor = false;
-
-        Object lock = new Object();
-
-        /**
-         * Set whether we are updating with the wait or busy cursor.
-         * 
-         * @param cursorState
-         */
-        void setBusy(boolean cursorState) {
-            synchronized (lock) {
-                busy = cursorState;
-            }
-        }
-
-        private SiteUpdateJob() {
-            super(ProgressMessages.WorkbenchSiteProgressService_CursorJob);
-        }
-
-        /**
-         * Get the wait cursor. Initialize it if required.
-         * @param display the display to create the cursor on.
-         * @return the created cursor
-         */
-        private Cursor getWaitCursor(Display display) {
-            if (waitCursor == null) {
-                waitCursor = new Cursor(display, SWT.CURSOR_APPSTARTING);
-            }
-            return waitCursor;
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-         */
-        public IStatus runInUIThread(IProgressMonitor monitor) {
-            Control control = site.getPane().getControl();
-            if (control == null || control.isDisposed()) {
-				return Status.CANCEL_STATUS;
-			}
-            synchronized (lock) {
-                //Update cursors if we are doing that
-                if (useWaitCursor) {
-                    Cursor cursor = null;
-                    if (busy) {
-						cursor = getWaitCursor(control.getDisplay());
-					}
-                    control.setCursor(cursor);
-                }
-                site.getPane().setBusy(busy);
-                IWorkbenchPart part = site.getPart();
-                 if (part instanceof WorkbenchPart) {
-					((WorkbenchPart) part).showBusy(busy);
-				}
-            }
-            return Status.OK_STATUS;
-        }
-
-        void clearCursors() {
-            if (waitCursor != null) {
-                waitCursor.dispose();
-                waitCursor = null;
-            }
-        }
-    }
-
-    /**
-     * Create a new instance of the receiver with a site of partSite
-     * 
-     * @param partSite
-     *            PartSite.
-     */
-    public WorkbenchSiteProgressService(final PartSite partSite) {
-        site = partSite;
-        updateJob = new SiteUpdateJob();
-        updateJob.setSystem(true);
-    }
-
-    /**
-     * Dispose the resources allocated by the receiver.
-     *
-     */
-    public void dispose() {
-        if (updateJob != null) {
-			updateJob.cancel();
-		}
-
-        ProgressManager.getInstance().removeListener(this);
-
-        if (waitCursor == null) {
-			return;
-		}
-        waitCursor.dispose();
-        waitCursor = null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IProgressService#busyCursorWhile(org.eclipse.jface.operation.IRunnableWithProgress)
-     */
-    public void busyCursorWhile(IRunnableWithProgress runnable)
-            throws InvocationTargetException, InterruptedException {
-        getWorkbenchProgressService().busyCursorWhile(runnable);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#schedule(org.eclipse.core.runtime.jobs.Job,
-     *      long, boolean)
-     */
-    public void schedule(Job job, long delay, boolean useHalfBusyCursor) {
-        job.addJobChangeListener(getJobChangeListener(job, useHalfBusyCursor));
-        job.schedule(delay);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#schedule(org.eclipse.core.runtime.jobs.Job,
-     *      int)
-     */
-    public void schedule(Job job, long delay) {
-        schedule(job, delay, false);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#schedule(org.eclipse.core.runtime.jobs.Job)
-     */
-    public void schedule(Job job) {
-        schedule(job, 0L, false);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#showBusyForFamily(java.lang.Object)
-     */
-    public void showBusyForFamily(Object family) {
-        ProgressManager.getInstance().addListenerToFamily(family, this);
-    }
-
-    /**
-     * Get the job change listener for this site.
-     * 
-     * @param job
-     * @param useHalfBusyCursor
-     * @return IJobChangeListener
-     */
-    public IJobChangeListener getJobChangeListener(final Job job,
-            boolean useHalfBusyCursor) {
-        if (listener == null) {
-            updateJob.useWaitCursor = useHalfBusyCursor;
-            listener = new JobChangeAdapter() {
-                /*
-                 * (non-Javadoc)
-                 * 
-                 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#aboutToRun(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-                 */
-                public void aboutToRun(IJobChangeEvent event) {
-                    incrementBusy(event.getJob());
-                }
-
-                /*
-                 * (non-Javadoc)
-                 * 
-                 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-                 */
-                public void done(IJobChangeEvent event) {
-                    decrementBusy(event.getJob());
-                }
-            };
-        }
-        return listener;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IJobBusyListener#decrementBusy(org.eclipse.core.runtime.jobs.Job)
-     */
-    public void decrementBusy(Job job) {
-        synchronized (busyLock) {
-            if (!busyJobs.contains(job)) {
-				return;
-			}
-            busyJobs.remove(job);
-        }
-        try {
-        	decrementBusy();
-        } catch (Exception ex) {
-        	// protecting against assertion failures
-        	WorkbenchPlugin.log(ex);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.internal.progress.IJobBusyListener#incrementBusy(org.eclipse.core.runtime.jobs.Job)
-     */
-    public void incrementBusy(Job job) {
-        synchronized (busyLock) {
-            if (busyJobs.contains(job)) {
-				return;
-			}
-            busyJobs.add(job);
-        }
-        incrementBusy();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#warnOfContentChange()
-     */
-    public void warnOfContentChange() {
-        site.getPane().showHighlight();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.progress.IProgressService#showInDialog(org.eclipse.swt.widgets.Shell,
-     *      org.eclipse.core.runtime.jobs.Job)
-     */
-    public void showInDialog(Shell shell, Job job) {
-        getWorkbenchProgressService().showInDialog(shell, job);
-    }
-
-    /**
-     * Get the progress service for the workbnech,
-     * 
-     * @return IProgressService
-     */
-    private IProgressService getWorkbenchProgressService() {
-        return site.getWorkbenchWindow().getWorkbench().getProgressService();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.jface.operation.IRunnableContext#run(boolean, boolean,
-     *      org.eclipse.jface.operation.IRunnableWithProgress)
-     */
-    public void run(boolean fork, boolean cancelable,
-            IRunnableWithProgress runnable) throws InvocationTargetException,
-            InterruptedException {
-        getWorkbenchProgressService().run(fork, cancelable, runnable);
-    }
-
-    /*
-     *  (non-Javadoc)
-     * @see org.eclipse.ui.progress.IProgressService#runInUI(org.eclipse.jface.operation.IRunnableContext, org.eclipse.jface.operation.IRunnableWithProgress, org.eclipse.core.runtime.jobs.ISchedulingRule)
-     */
-    public void runInUI(IRunnableContext context,
-            IRunnableWithProgress runnable, ISchedulingRule rule)
-            throws InvocationTargetException, InterruptedException {
-        getWorkbenchProgressService().runInUI(context, runnable, rule);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.progress.IProgressService#getLongOperationTime()
-     */
-    public int getLongOperationTime() {
-        return getWorkbenchProgressService().getLongOperationTime();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.progress.IProgressService#registerIconForFamily(org.eclipse.jface.resource.ImageDescriptor, java.lang.Object)
-     */
-    public void registerIconForFamily(ImageDescriptor icon, Object family) {
-        getWorkbenchProgressService().registerIconForFamily(icon, family);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.progress.IProgressService#getIconFor(org.eclipse.core.runtime.jobs.Job)
-     */
-    public Image getIconFor(Job job) {
-        return getWorkbenchProgressService().getIconFor(job);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#showBusy(boolean)
-     */
-    public void incrementBusy() {
-		synchronized (busyLock) {
-			this.busyCount++;
-			if (busyCount != 1) {
-				return;
-			}
-			updateJob.setBusy(true);
-		}
-		if (PlatformUI.isWorkbenchRunning()) {
-			updateJob.schedule(100);
-		} else {
-			updateJob.cancel();
-		}
-    }
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#showBusy(boolean)
-	 */
-	public void decrementBusy() {
-		synchronized (busyLock) {
-			Assert
-					.isTrue(
-							busyCount > 0,
-							"Ignoring unexpected call to IWorkbenchSiteProgressService.decrementBusy().  This might be due to an earlier call to this method."); //$NON-NLS-1$
-			this.busyCount--;
-			if (busyCount != 0) {
-				return;
-			}
-			updateJob.setBusy(false);
-		}
-		if (PlatformUI.isWorkbenchRunning()) {
-			updateJob.schedule(100);
-		} else {
-			updateJob.cancel();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties
deleted file mode 100644
index e45e811..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties
+++ /dev/null
@@ -1,68 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-#	  Sebastian Davids <sdavids@gmx.de>  - Fix for  Bug 132158 [Progress] Job, Operation, Task used interchangably
-###############################################################################
-PendingUpdateAdapter_PendingLabel=Pending...
-JobInfo_DoneMessage = ({0}%) {1}: {2}
-JobInfo_DoneNoProgressMessage = {0}: {1}
-JobInfo_NoTaskNameDoneMessage = {0}: ({1}%)
-JobsViewPreferenceDialog_Note=&Show sleeping and system operations
-JobErrorDialog_CustomJobText=Custom Operation Action
-JobInfo_UnknownProgress = {0}: {1}
-JobInfo_Waiting = {0} (Waiting)
-JobInfo_Sleeping = {0} (Sleeping)
-JobInfo_System = System: {0}
-JobInfo_Cancelled = {0} (Cancelled)
-JobInfo_Cancel_Requested = {0} (Cancel Requested)
-JobInfo_Error = {0} (Time of error: {1})
-JobInfo_Blocked = {0} (Blocked: {1})
-JobInfo_Finished = {0} (Finished)
-JobInfo_FinishedAt = {0} (Finished at {1})
-JobErrorDialog_CloseDialogMessage=Performing this action will close the error dialog and clear the errors being displayed.
-Error = Error
-DeferredTreeContentManager_NotDeferred=Not an IDeferredWorkbenchAdapter
-DeferredTreeContentManager_AddingChildren=Adding children
-DeferredTreeContentManager_FetchingName = Fetching children of {0}
-ProgressView_CancelAction=&Cancel
-ProgressView_ClearAllAction=Remove &All Finished Operations
-ProgressView_NoOperations=No operations to display at this time.
-
-NewProgressView_RemoveAllJobsToolTip=Remove All Finished Operations
-NewProgressView_CancelJobToolTip=Cancel Operation
-NewProgressView_ClearJobToolTip=Remove From View
-NewProgressView_errorDialogTitle= Error Occurred
-NewProgressView_errorDialogMessage= Operation Finished with Error
-ProgressAnimationItem_tasks=Shows background operations in Progress view
-ProgressAnimationItem_ok=Operation ''{0}'' returned result; press button for details
-ProgressAnimationItem_error=Operation ''{0}'' finished with errors; press button for details
-SubTaskInfo_UndefinedTaskName=Undefined
-DeferredTreeContentManager_ClearJob=Clear
-ProgressContentProvider_UpdateProgressJob=Update Progress
-JobErrorDialog_MultipleErrorsTitle=Multiple Errors have Occurred
-ProgressManager_openJobName=Open progress monitor
-ProgressManager_showInDialogName=Show In Dialog
-
-ProgressMonitorJobsDialog_DetailsTitle=&Details >>
-ProgressMonitorJobsDialog_HideTitle=<< &Details
-ErrorNotificationManager_OpenErrorDialogJob=Open error dialog
-AnimationManager_AnimationStart=Animation start
-ProgressFloatingWindow_EllipsisValue=...
-
-BlockedJobsDialog_UserInterfaceTreeElement=Waiting User Operation
-BlockedJobsDialog_BlockedTitle=User Operation is Waiting
-WorkbenchSiteProgressService_CursorJob=Change cursor
-ProgressMonitorFocusJobDialog_UserDialogJob=Open user dialog
-ProgressMonitorFocusJobDialog_CLoseDialogJob=Close dialog
-ProgressMonitorFocusJobDialog_RunInBackgroundButton=Run in &Background
-
-JobErrorDialog_MultipleErrorsMessage=Multiple operations have reported errors. Select an error to view its details.
-JobErrorDialog_CloseDialogTitle=OK to Close?
-JobsViewPreferenceDialog_Title=Progress Preferences
-JobErrorDialog_DoNotShowAgainMessage=Don't &show this again
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java
deleted file mode 100644
index c3028c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/application/IActionBarConfigurer2.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.provisional.application;
-
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.ui.application.IActionBarConfigurer;
-
-/**
- * Extends <code>IActionBarConfigurer</code> with API to allow the advisor to
- * be decoupled from the implementation types for tool bar managers and tool bar
- * contribution items.
- * 
- * @since 3.2
- */
-public interface IActionBarConfigurer2 extends IActionBarConfigurer {
-	
-	/**
-	 * Creates a tool bar manager for the workbench window's tool bar. The
-	 * action bar advisor should use this factory method rather than creating a
-	 * <code>ToolBarManager</code> directly.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager createToolBarManager();
-
-	/**
-	 * Creates a toolbar contribution item for the window's tool bar. The action
-	 * bar advisor should use this factory method rather than creating a
-	 * <code>ToolBarContributionItem</code> directly.
-	 * 
-	 * @param toolBarManager
-	 *            a tool bar manager for the workbench window's tool bar
-	 * @param id
-	 *            the id of the contribution
-	 * @return the tool bar contribution item
-	 */
-	public IToolBarContributionItem createToolBarContributionItem(
-			IToolBarManager toolBarManager, String id);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/presentations/IActionBarPresentationFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/presentations/IActionBarPresentationFactory.java
deleted file mode 100644
index 83ecb7a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/provisional/presentations/IActionBarPresentationFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.provisional.presentations;
-
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.internal.provisional.action.ICoolBarManager2;
-import org.eclipse.jface.internal.provisional.action.IToolBarContributionItem;
-import org.eclipse.jface.internal.provisional.action.IToolBarManager2;
-
-/**
- * The intention of this class is to allow for replacing the implementation of
- * the cool bar and tool bars in the workbench.
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is a guarantee neither that this API will
- * work nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * 
- * @since 3.2
- */
-public interface IActionBarPresentationFactory {
-	
-	/**
-	 * Creates the cool bar manager for the window's tool bar area.
-	 * 
-	 * @return the cool bar manager
-	 */
-	public ICoolBarManager2 createCoolBarManager();
-
-	/**
-	 * Creates a tool bar manager for window's tool bar area.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager2 createToolBarManager();
-
-	/**
-	 * Creates a tool bar manager for a view's tool bar.
-	 * 
-	 * @return the tool bar manager
-	 */
-	public IToolBarManager2 createViewToolBarManager();
-
-	/**
-	 * Creates a toolbar contribution item for a window toolbar manager to be
-	 * added to the window's cool bar.
-	 * 
-	 * @param toolBarManager
-	 *            the tool bar manager
-	 * @param id
-	 *            the id of the contribution
-	 * @return the toolbar contribution item
-	 */
-	public IToolBarContributionItem createToolBarContributionItem(
-			IToolBarManager toolBarManager, String id);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionElement.java
deleted file mode 100644
index ab938e5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionElement.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.LegacyActionTools;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public class ActionElement extends QuickAccessElement {
-
-	private static final String separator = " - "; //$NON-NLS-1$
-
-	private ActionContributionItem item;
-
-	/* package */ActionElement(ActionContributionItem item, ActionProvider actionProvider) {
-		super(actionProvider);
-		this.item = item;
-	}
-
-	public void execute() {
-		item.getAction().run();
-	}
-
-	public String getId() {
-		return item.getId();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return item.getAction().getImageDescriptor();
-	}
-
-	public String getLabel() {
-		IAction action = item.getAction();
-		if (action.getToolTipText() != null
-				&& action.getToolTipText().length() != 0) {
-			return LegacyActionTools.removeMnemonics(action.getText()
-					+ separator + action.getToolTipText());
-		}
-		return LegacyActionTools.removeMnemonics(action.getText());
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + ((item == null) ? 0 : item.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final ActionElement other = (ActionElement) obj;
-		if (item == null) {
-			if (other.item != null)
-				return false;
-		} else if (!item.equals(other.item))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionProvider.java
deleted file mode 100644
index b486e28..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ActionProvider.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.SubContributionItem;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchWindow;
-
-/**
- * @since 3.3
- * 
- */
-public class ActionProvider extends QuickAccessProvider {
-
-	private Map idToElement;
-
-	public String getId() {
-		return "org.eclipse.ui.actions"; //$NON-NLS-1$
-	}
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (ActionElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (idToElement == null) {
-			idToElement = new HashMap();
-			WorkbenchWindow window = (WorkbenchWindow) PlatformUI
-					.getWorkbench().getActiveWorkbenchWindow();
-			if (window != null) {
-				MenuManager menu = window.getMenuManager();
-				Set result = new HashSet();
-				collectContributions(menu, result);
-				ActionContributionItem[] actions = (ActionContributionItem[]) result
-						.toArray(new ActionContributionItem[result.size()]);
-				for (int i = 0; i < actions.length; i++) {
-					ActionElement actionElement = new ActionElement(actions[i],
-							this);
-					idToElement.put(actionElement.getId(), actionElement);
-				}
-			}
-		}
-		return (ActionElement[]) idToElement.values().toArray(
-				new ActionElement[idToElement.values().size()]);
-	}
-
-	private void collectContributions(MenuManager menu, Set result) {
-		IContributionItem[] items = menu.getItems();
-		for (int i = 0; i < items.length; i++) {
-			IContributionItem item = items[i];
-			if (item instanceof SubContributionItem) {
-				item = ((SubContributionItem) item).getInnerItem();
-			}
-			if (item instanceof MenuManager) {
-				collectContributions((MenuManager) item, result);
-			} else if (item instanceof ActionContributionItem
-					&& item.isEnabled()) {
-				result.add(item);
-			}
-		}
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Menus;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CamelUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CamelUtil.java
deleted file mode 100644
index 0843158..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CamelUtil.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Utility methods for camel case style matching.
- *  
- * @since 3.3
- * 
- */
-public class CamelUtil {
-
-	/**
-	 * Returns a lowercase string consisting of all initials of the words in the
-	 * given String. Words are separated by whitespace and other special
-	 * characters, or by uppercase letters in a word like CamelCase.
-	 * 
-	 * @param s
-	 *            the string
-	 * @return a lowercase string containing the first character of every wordin
-	 *         the given string.
-	 */
-	public static String getCamelCase(String s) {
-		StringBuffer result = new StringBuffer();
-		if (s.length() > 0) {
-			int index = 0;
-			while (index != -1) {
-				result.append(s.charAt(index));
-				index = getNextCamelIndex(s, index + 1);
-			}
-		}
-		return result.toString().toLowerCase();
-	}
-
-	/**
-	 * Return an array with start/end indices for the characters used for camel
-	 * case matching, ignoring the first (start) many camel case characters.
-	 * For example, getCamelCaseIndices("some CamelCase", 1, 2) will return
-	 * {{5,5},{10,10}}.
-	 * 
-	 * @param s the source string
-	 * @param start how many characters of getCamelCase(s) should be ignored
-	 * @param length for how many characters should indices be returned 
-	 * @return an array of length start
-	 */
-	public static int[][] getCamelCaseIndices(String s, int start, int length) {
-		List result = new ArrayList();
-		int index = 0;
-		while (start > 0) {
-			index = getNextCamelIndex(s, index + 1);
-			start--;
-		}
-		while (length > 0) {
-			result.add(new int[] { index, index });
-			index = getNextCamelIndex(s, index + 1);
-			length--;
-		}
-		return (int[][]) result.toArray(new int[result.size()][]);
-	}
-
-	/**
-	 * Returns the next index to be used for camel case matching.
-	 * 
-	 * @param s the string
-	 * @param index the index
-	 * @return the next index, or -1 if not found
-	 */
-	public static int getNextCamelIndex(String s, int index) {
-		char c;
-		while (index < s.length()
-				&& !(isSeparatorForCamelCase(c = s.charAt(index)))
-				&& Character.isLowerCase(c)) {
-			index++;
-		}
-		while (index < s.length() && isSeparatorForCamelCase(c = s.charAt(index))) {
-			index++;
-		}
-		if (index >= s.length()) {
-			index = -1;
-		}
-		return index;
-	}
-
-	/**
-	 * Returns true if the given character is to be considered a separator
-	 * for camel case matching purposes.
-	 * 
-	 * @param c the character
-	 * @return true if the character is a separator
-	 */
-	public static boolean isSeparatorForCamelCase(char c) {
-		return !Character.isLetterOrDigit(c);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java
deleted file mode 100644
index 76e04a9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandElement.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * @since 3.3
- * 
- */
-public class CommandElement extends QuickAccessElement {
-
-	private static final String separator = " - "; //$NON-NLS-1$
-
-	private ParameterizedCommand command;
-
-	private String id;
-
-	/* package */CommandElement(ParameterizedCommand command, String id,
-			CommandProvider commandProvider) {
-		super(commandProvider);
-		this.id = id;
-		this.command = command;
-	}
-
-	public void execute() {
-		Object o = getProvider();
-		if (o instanceof CommandProvider) {
-			CommandProvider provider = (CommandProvider) o;
-			if (provider.getHandlerService()!=null) {
-				try {
-					provider.getHandlerService().executeCommandInContext(
-							command, null, provider.getContextSnapshot());
-				} catch (Exception ex) {
-					StatusUtil.handleStatus(ex, StatusManager.SHOW
-							| StatusManager.LOG);
-				}
-				return;
-			}
-		}
-		
-		// let's try the old fashioned way
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (window != null) {
-			IHandlerService handlerService = (IHandlerService) window
-					.getWorkbench().getService(IHandlerService.class);
-			try {
-				handlerService.executeCommand(command, null);
-			} catch (Exception ex) {
-				StatusUtil.handleStatus(ex, StatusManager.SHOW
-						| StatusManager.LOG);
-			}
-		}
-	}
-
-	public String getId() {
-		return id;
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return null;
-	}
-
-	public String getLabel() {
-		try {
-			Command nestedCommand = command.getCommand();
-			if (nestedCommand != null && nestedCommand.getDescription() != null
-					&& nestedCommand.getDescription().length() != 0) {
-				return command.getName() + separator
-						+ nestedCommand.getDescription();
-			}
-			return command.getName();
-		} catch (NotDefinedException e) {
-			return command.toString();
-		}
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + ((command == null) ? 0 : command.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final CommandElement other = (CommandElement) obj;
-		if (command == null) {
-			if (other.command != null)
-				return false;
-		} else if (!command.equals(other.command))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandProvider.java
deleted file mode 100644
index a01bb57..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/CommandProvider.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * @since 3.3
- * 
- */
-public class CommandProvider extends QuickAccessProvider {
-
-	private Map idToElement;
-	private IEvaluationContext contextSnapshot;
-	private IHandlerService handlerService;
-	
-	public CommandProvider() {
-		// initialize eagerly
-		saveApplicationContext();
-		getElements();
-	}
-
-	public String getId() {
-		return "org.eclipse.ui.commands"; //$NON-NLS-1$
-	}
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (CommandElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (idToElement == null) {
-			idToElement = new HashMap();
-			ICommandService commandService = (ICommandService) PlatformUI
-					.getWorkbench().getService(ICommandService.class);
-			final Collection commandIds = commandService.getDefinedCommandIds();
-			final Iterator commandIdItr = commandIds.iterator();
-			while (commandIdItr.hasNext()) {
-				final String currentCommandId = (String) commandIdItr.next();
-				final Command command = commandService
-						.getCommand(currentCommandId);
-				if (command != null && command.isHandled()
-						&& command.isEnabled()) {
-					try {
-						Collection combinations = ParameterizedCommand
-								.generateCombinations(command);
-						for (Iterator it = combinations.iterator(); it
-								.hasNext();) {
-							ParameterizedCommand pc = (ParameterizedCommand) it.next();
-							String id = pc.serialize();
-							idToElement.put(id,
-									new CommandElement(pc, id, this));
-						}
-					} catch (final NotDefinedException e) {
-						// It is safe to just ignore undefined commands.
-					}
-				}
-			}
-		}
-		return (QuickAccessElement[]) idToElement.values().toArray(
-				new QuickAccessElement[idToElement.values().size()]);
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Commands;
-	}
-	
-	private void saveApplicationContext() {
-		handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
-		contextSnapshot = handlerService.createContextSnapshot(true);
-	}
-	
-	IHandlerService getHandlerService() {
-		return handlerService;
-	}
-	
-	IEvaluationContext getContextSnapshot() {
-		return contextSnapshot;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorElement.java
deleted file mode 100644
index 8cc2f64..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorElement.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @since 3.3
- * 
- */
-public class EditorElement extends QuickAccessElement {
-
-	private static final String DIRTY_MARK = "*"; //$NON-NLS-1$
-
-	private static final String separator = " - "; //$NON-NLS-1$
-
-	private IEditorReference editorReference;
-
-	/* package */EditorElement(IEditorReference editorReference, EditorProvider editorProvider) {
-		super(editorProvider);
-		this.editorReference = editorReference;
-	}
-
-	public void execute() {
-		IWorkbenchPart part = editorReference.getPart(true);
-		if (part != null) {
-			IWorkbenchPage activePage = PlatformUI.getWorkbench()
-					.getActiveWorkbenchWindow().getActivePage();
-			if (activePage != null) {
-				activePage.activate(part);
-			}
-		}
-	}
-
-	public String getId() {
-		return editorReference.getId() + editorReference.getTitleToolTip();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return ImageDescriptor.createFromImage(editorReference.getTitleImage());
-	}
-
-	public String getLabel() {
-		boolean dirty = editorReference.isDirty();
-		return (dirty ? DIRTY_MARK : "") + editorReference.getTitle() + separator + editorReference.getTitleToolTip(); //$NON-NLS-1$
-	}
-
-	public String getSortLabel() {
-		return editorReference.getTitle();
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((editorReference == null) ? 0 : editorReference.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final EditorElement other = (EditorElement) obj;
-		if (editorReference == null) {
-			if (other.editorReference != null)
-				return false;
-		} else if (!editorReference.equals(other.editorReference))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorProvider.java
deleted file mode 100644
index c5cb8be..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/EditorProvider.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * @since 3.3
- * 
- */
-public class EditorProvider extends QuickAccessProvider {
-
-	private Map idToElement;
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (EditorElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (idToElement == null) {
-			idToElement = new HashMap();
-			IWorkbenchPage activePage = PlatformUI.getWorkbench()
-					.getActiveWorkbenchWindow().getActivePage();
-			if (activePage == null) {
-				return new QuickAccessElement[0];
-			}
-			IEditorReference[] editors = activePage.getEditorReferences();
-			for (int i = 0; i < editors.length; i++) {
-				EditorElement editorElement = new EditorElement(editors[i],
-						this);
-				idToElement.put(editorElement.getId(), editorElement);
-			}
-		}
-		return (QuickAccessElement[]) idToElement.values().toArray(
-				new QuickAccessElement[idToElement.values().size()]);
-	}
-
-	public String getId() {
-		return "org.eclipse.ui.editors"; //$NON-NLS-1$
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Editors;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveElement.java
deleted file mode 100644
index 2bfcad8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveElement.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @since 3.3
- * 
- */
-public class PerspectiveElement extends QuickAccessElement {
-
-	private final IPerspectiveDescriptor descriptor;
-
-	/* package */PerspectiveElement(IPerspectiveDescriptor descriptor, PerspectiveProvider perspectiveProvider) {
-		super(perspectiveProvider);
-		this.descriptor = descriptor;
-	}
-
-	public void execute() {
-		IWorkbenchPage activePage = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow().getActivePage();
-		if (activePage != null) {
-			activePage.setPerspective(descriptor);
-		}
-	}
-
-	public String getId() {
-		return descriptor.getId();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return descriptor.getImageDescriptor();
-	}
-
-	public String getLabel() {
-		return descriptor.getLabel();
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((descriptor == null) ? 0 : descriptor.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final PerspectiveElement other = (PerspectiveElement) obj;
-		if (descriptor == null) {
-			if (other.descriptor != null)
-				return false;
-		} else if (!descriptor.equals(other.descriptor))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveProvider.java
deleted file mode 100644
index 64db59c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PerspectiveProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * @since 3.3
- * 
- */
-public class PerspectiveProvider extends QuickAccessProvider {
-
-	private QuickAccessElement[] cachedElements;
-	private Map idToElement = new HashMap();
-
-	public String getId() {
-		return "org.eclipse.ui.perspectives"; //$NON-NLS-1$
-	}
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (PerspectiveElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (cachedElements == null) {
-			IPerspectiveDescriptor[] perspectives = PlatformUI.getWorkbench()
-					.getPerspectiveRegistry().getPerspectives();
-			cachedElements = new QuickAccessElement[perspectives.length];
-			for (int i = 0; i < perspectives.length; i++) {
-				PerspectiveElement perspectiveElement = new PerspectiveElement(
-						perspectives[i], this);
-				cachedElements[i] = perspectiveElement;
-				idToElement.put(perspectiveElement.getId(), perspectiveElement);
-			}
-		}
-		return cachedElements;
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Perspectives;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceElement.java
deleted file mode 100644
index 9483212..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceElement.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog;
-
-/**
- * @since 3.3
- * 
- */
-public class PreferenceElement extends QuickAccessElement {
-
-	private static final String separator = " - "; //$NON-NLS-1$
-
-	private IPreferenceNode preferenceNode;
-
-	private String prefix;
-
-	/* package */PreferenceElement(IPreferenceNode preferenceNode, String prefix, PreferenceProvider preferenceProvider) {
-		super(preferenceProvider);
-		this.preferenceNode = preferenceNode;
-		this.prefix = prefix;
-	}
-
-	public void execute() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (window != null) {
-			WorkbenchPreferenceDialog dialog = WorkbenchPreferenceDialog
-					.createDialogOn(window.getShell(), preferenceNode.getId());
-			dialog.open();
-		}
-	}
-
-	public String getId() {
-		return preferenceNode.getId();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		Image image = preferenceNode.getLabelImage();
-		if (image != null) {
-			ImageDescriptor descriptor = ImageDescriptor.createFromImage(image);
-			return descriptor;
-		}
-		return null;
-	}
-
-	public String getLabel() {
-		if (prefix != null && prefix.length() > 0) {
-			return preferenceNode.getLabelText() + separator
-					+ prefix;
-		}
-		return preferenceNode.getLabelText();
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((preferenceNode == null) ? 0 : preferenceNode.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final PreferenceElement other = (PreferenceElement) obj;
-		if (preferenceNode == null) {
-			if (other.preferenceNode != null)
-				return false;
-		} else if (!preferenceNode.equals(other.preferenceNode))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceProvider.java
deleted file mode 100644
index 68dc070..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PreferenceProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * @since 3.3
- * 
- */
-public class PreferenceProvider extends QuickAccessProvider {
-
-	private QuickAccessElement[] cachedElements;
-	private Map idToElement = new HashMap();
-
-	public String getId() {
-		return "org.eclipse.ui.preferences"; //$NON-NLS-1$
-	}
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (PreferenceElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (cachedElements == null) {
-			List list = new ArrayList(); 
-			collectElements("", PlatformUI.getWorkbench().getPreferenceManager().getRootSubNodes(), list); //$NON-NLS-1$
-			cachedElements = new PreferenceElement[list.size()];
-			for (int i = 0; i < list.size(); i++) {
-				PreferenceElement preferenceElement = (PreferenceElement) list.get(i);
-				cachedElements[i] = preferenceElement;
-				idToElement.put(preferenceElement.getId(), preferenceElement);
-			}
-		}
-		return cachedElements;
-	}
-
-	/**
-	 * @param subNodes
-	 * @return
-	 */
-	private void collectElements(String prefix, IPreferenceNode[] subNodes, List result) {
-		for (int i = 0; i < subNodes.length; i++) {
-			PreferenceElement preferenceElement = new PreferenceElement(
-					subNodes[i], prefix, this);
-			result.add(preferenceElement);
-			String nestedPrefix = prefix.length() == 0 ? subNodes[i].getLabelText() : (prefix + "/" + subNodes[i].getLabelText());  //$NON-NLS-1$
-			collectElements(nestedPrefix, subNodes[i].getSubNodes(), result);
-		}
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Preferences;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesElement.java
deleted file mode 100644
index f0f3d12..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesElement.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dialogs.PropertyDialog;
-
-/**
- * @since 3.3
- *
- */
-public class PropertiesElement extends QuickAccessElement {
-
-	private Object selectedElement;
-	private IPreferenceNode preferenceNode;
-	
-	/* package */PropertiesElement(Object selectedElement, IPreferenceNode preferenceNode, PropertiesProvider propertiesProvider) {
-		super(propertiesProvider);
-		this.selectedElement = selectedElement;
-		this.preferenceNode = preferenceNode;
-	}
-	
-	public void execute() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (window != null) {
-			PropertyDialog dialog = PropertyDialog.createDialogOn(window
-					.getShell(), preferenceNode.getId(), selectedElement);
-			dialog.open();
-		}
-	}
-
-	public String getId() {
-		return preferenceNode.getId();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		Image image = preferenceNode.getLabelImage();
-		if (image != null) {
-			ImageDescriptor descriptor = ImageDescriptor.createFromImage(image);
-			return descriptor;
-		}
-		return null;
-	}
-
-	public String getLabel() {
-		return preferenceNode.getLabelText();
-	}
-	
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((preferenceNode == null) ? 0 : preferenceNode.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final PropertiesElement other = (PropertiesElement) obj;
-		if (preferenceNode == null) {
-			if (other.preferenceNode != null)
-				return false;
-		} else if (!preferenceNode.equals(other.preferenceNode))
-			return false;
-		return true;
-	}	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesProvider.java
deleted file mode 100644
index 81b6f01..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/PropertiesProvider.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
-import org.eclipse.ui.internal.dialogs.PropertyPageManager;
-
-/**
- * @since 3.3
- * 
- */
-public class PropertiesProvider extends QuickAccessProvider {
-
-	private Map idToElement;
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (PropertiesElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (idToElement == null) {
-			idToElement = new HashMap();
-			IWorkbenchPage activePage = PlatformUI.getWorkbench()
-					.getActiveWorkbenchWindow().getActivePage();
-			if (activePage != null) {
-				PropertyPageManager pageManager = new PropertyPageManager();
-				ISelection selection = activePage.getSelection();
-				if (selection instanceof IStructuredSelection
-						&& !selection.isEmpty()) {
-					Object element = ((IStructuredSelection) selection)
-							.getFirstElement();
-					PropertyPageContributorManager.getManager().contribute(
-							pageManager, element);
-					List list = pageManager
-							.getElements(PreferenceManager.PRE_ORDER);
-					IPreferenceNode[] properties = (IPreferenceNode[]) list
-							.toArray(new IPreferenceNode[list.size()]);
-					for (int i = 0; i < properties.length; i++) {
-						PropertiesElement propertiesElement = new PropertiesElement(
-								element, properties[i], this);
-						idToElement.put(propertiesElement.getId(),
-								propertiesElement);
-					}
-				}
-			}
-		}
-		return (QuickAccessElement[]) idToElement.values().toArray(
-				new QuickAccessElement[idToElement.values().size()]);
-	}
-
-	public String getId() {
-		return "org.eclipse.ui.properties"; //$NON-NLS-1$
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Properties;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
deleted file mode 100644
index aa325c8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessDialog.java
+++ /dev/null
@@ -1,786 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.SWTKeySupport;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.resource.FontDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.TextLayout;
-import org.eclipse.swt.graphics.TextStyle;
-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.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.progress.ProgressManagerUtil;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.themes.ColorUtil;
-
-
-/**
- * @since 3.3
- * 
- */
-public class QuickAccessDialog extends PopupDialog {
-	private static final int INITIAL_COUNT_PER_PROVIDER = 5;
-	private static final int MAX_COUNT_TOTAL = 20;
-
-	private Text filterText;
-
-	private QuickAccessProvider[] providers;
-	private IWorkbenchWindow window;
-
-	private Table table;
-
-	private LocalResourceManager resourceManager = new LocalResourceManager(
-			JFaceResources.getResources());
-
-	private static final String TEXT_ARRAY = "textArray"; //$NON-NLS-1$
-	private static final String TEXT_ENTRIES = "textEntries"; //$NON-NLS-1$
-	private static final String ORDERED_PROVIDERS = "orderedProviders"; //$NON-NLS-1$
-	private static final String ORDERED_ELEMENTS = "orderedElements"; //$NON-NLS-1$
-	static final int MAXIMUM_NUMBER_OF_ELEMENTS = 60;
-	static final int MAXIMUM_NUMBER_OF_TEXT_ENTRIES_PER_ELEMENT = 3;
-
-	protected String rememberedText;
-
-	protected Map textMap = new HashMap();
-
-	protected Map elementMap = new HashMap();
-
-	private LinkedList previousPicksList = new LinkedList();
-
-	protected Map providerMap;
-	// private Font italicsFont;
-	private Color grayColor;
-	private TextLayout textLayout;
-	private TriggerSequence[] invokingCommandKeySequences;
-	private Command invokingCommand;
-	private KeyAdapter keyAdapter;
-	private boolean showAllMatches = false;
-	protected boolean resized = false;
-
-
-	QuickAccessDialog(IWorkbenchWindow window, final Command invokingCommand) {
-		super(ProgressManagerUtil.getDefaultParent(), SWT.RESIZE, true, true, // persist size
-				false, // but not location
-				true, true, null,
-				QuickAccessMessages.QuickAccess_StartTypingToFindMatches);
-
-		this.window = window;
-		BusyIndicator.showWhile(window.getShell() == null ? null : window
-				.getShell().getDisplay(), new Runnable() {
-			public void run() {
-				QuickAccessDialog.this.providers = new QuickAccessProvider[] {
-						new PreviousPicksProvider(), new EditorProvider(),
-						new ViewProvider(), new PerspectiveProvider(),
-						new CommandProvider(), new ActionProvider(),
-						new WizardProvider(), new PreferenceProvider(),
-						new PropertiesProvider() };
-				providerMap = new HashMap();
-				for (int i = 0; i < providers.length; i++) {
-					providerMap.put(providers[i].getId(), providers[i]);
-				}
-				restoreDialog();
-				QuickAccessDialog.this.invokingCommand = invokingCommand;
-				if (QuickAccessDialog.this.invokingCommand != null
-						&& !QuickAccessDialog.this.invokingCommand.isDefined()) {
-					QuickAccessDialog.this.invokingCommand = null;
-				} else {
-					// Pre-fetch key sequence - do not change because scope will
-					// change later.
-					getInvokingCommandKeySequences();
-				}
-				// create early
-				create();
-			}
-		});
-		// Ugly hack to avoid bug 184045. If this gets fixed, replace the
-		// following code with a call to refresh("").
-		getShell().getDisplay().asyncExec(new Runnable() {
-			public void run() {
-				final Shell shell = getShell();
-				if (shell != null && !shell.isDisposed()) {
-					Point size = shell.getSize();
-					shell.setSize(size.x, size.y + 1);
-				}
-			}
-		});
-	}
-
-	protected Control createTitleControl(Composite parent) {
-		filterText = new Text(parent, SWT.NONE);
-
-		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
-				.applyTo(filterText);
-
-		filterText.addKeyListener(getKeyAdapter());
-		filterText.addKeyListener(new KeyListener() {
-			public void keyPressed(KeyEvent e) {
-				if (e.keyCode == 0x0D) {
-					handleSelection();
-					return;
-				} else if (e.keyCode == SWT.ARROW_DOWN) {
-					int index = table.getSelectionIndex();
-					if (index != -1 && table.getItemCount() > index + 1) {
-						table.setSelection(index + 1);
-					}
-					table.setFocus();
-				} else if (e.keyCode == SWT.ARROW_UP) {
-					int index = table.getSelectionIndex();
-					if (index != -1 && index >= 1) {
-						table.setSelection(index - 1);
-						table.setFocus();
-					}
-				} else if (e.character == 0x1B) // ESC
-					close();
-			}
-
-			public void keyReleased(KeyEvent e) {
-				// do nothing
-			}
-		});
-		filterText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				String text = ((Text) e.widget).getText().toLowerCase();
-				refresh(text);
-			}
-		});
-
-		return filterText;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.PopupDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite composite = (Composite) super.createDialogArea(parent);
-		boolean isWin32 = "win32".equals(SWT.getPlatform()); //$NON-NLS-1$
-		GridLayoutFactory.fillDefaults().extendedMargins(isWin32 ? 0 : 3, 3, 2, 2).applyTo(composite);
-		Composite tableComposite = new Composite(composite, SWT.NONE);
-		GridDataFactory.fillDefaults().grab(true, true).applyTo(tableComposite);
-		TableColumnLayout tableColumnLayout = new TableColumnLayout();
-		tableComposite.setLayout(tableColumnLayout);
-		table = new Table(tableComposite, SWT.SINGLE | SWT.FULL_SELECTION);
-		textLayout = new TextLayout(table.getDisplay());
-		textLayout.setOrientation(getDefaultOrientation());
-		Font boldFont = resourceManager.createFont(FontDescriptor.createFrom(
-				JFaceResources.getDialogFont()).setStyle(SWT.BOLD));
-		textLayout.setFont(table.getFont());
-		textLayout.setText(QuickAccessMessages.QuickAccess_AvailableCategories);
-		int maxProviderWidth = (int) (textLayout.getBounds().width * 1.1);
-		textLayout.setFont(boldFont);
-		for (int i = 0; i < providers.length; i++) {
-			QuickAccessProvider provider = providers[i];
-			textLayout.setText(provider.getName());
-			int width = (int) (textLayout.getBounds().width * 1.1);
-			if (width > maxProviderWidth) {
-				maxProviderWidth = width;
-			}
-		}
-		tableColumnLayout.setColumnData(new TableColumn(table, SWT.NONE),
-				new ColumnWeightData(0, maxProviderWidth));
-		tableColumnLayout.setColumnData(new TableColumn(table, SWT.NONE),
-				new ColumnWeightData(100, 100));
-		table.getShell().addControlListener(new ControlAdapter() {
-			public void controlResized(ControlEvent e) {
-				if (!showAllMatches) {
-					if (!resized) {
-						resized = true;
-						e.display.timerExec(100, new Runnable() {
-							public void run() {
-								if (getShell() != null
-										&& !getShell().isDisposed()) {
-									refresh(filterText.getText().toLowerCase());
-								}
-								resized = false;
-							}
-						});
-					}
-				}
-			}
-		});
-
-		table.addKeyListener(getKeyAdapter());
-		table.addKeyListener(new KeyListener() {
-			public void keyPressed(KeyEvent e) {
-				if (e.keyCode == SWT.ARROW_UP && table.getSelectionIndex() == 0) {
-					filterText.setFocus();
-				} else if (e.character == SWT.ESC) {
-					close();
-				}
-			}
-
-			public void keyReleased(KeyEvent e) {
-				// do nothing
-			}
-		});
-		table.addMouseListener(new MouseAdapter() {
-			public void mouseUp(MouseEvent e) {
-
-				if (table.getSelectionCount() < 1)
-					return;
-
-				if (e.button != 1)
-					return;
-
-				if (table.equals(e.getSource())) {
-					Object o= table.getItem(new Point(e.x, e.y));
-					TableItem selection= table.getSelection()[0];
-					if (selection.equals(o))
-						handleSelection();
-				}
-			}
-		});
-
-		table.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				// do nothing
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				handleSelection();
-			}
-		});
-
-		// italicsFont = resourceManager.createFont(FontDescriptor.createFrom(
-		// table.getFont()).setStyle(SWT.ITALIC));
-		grayColor = resourceManager.createColor(ColorUtil.blend(table
-				.getBackground().getRGB(), table.getForeground().getRGB()));
-		final TextStyle boldStyle = new TextStyle(boldFont, null, null);
-		Listener listener = new Listener() {
-			public void handleEvent(Event event) {
-				QuickAccessEntry entry = (QuickAccessEntry) event.item
-						.getData();
-				if (entry != null) {
-					switch (event.type) {
-					case SWT.MeasureItem:
-						entry.measure(event, textLayout, resourceManager,
-								boldStyle);
-						break;
-					case SWT.PaintItem:
-						entry.paint(event, textLayout, resourceManager,
-								boldStyle, grayColor);
-						break;
-					case SWT.EraseItem:
-						entry.erase(event);
-						break;
-					}
-				}
-			}
-		};
-		table.addListener(SWT.MeasureItem, listener);
-		table.addListener(SWT.EraseItem, listener);
-		table.addListener(SWT.PaintItem, listener);
-				
-		return composite;
-	}
-
-	/**
-	 * 
-	 */
-	private int computeNumberOfItems() {
-		Rectangle rect = table.getClientArea ();
-		int itemHeight = table.getItemHeight ();
-		int headerHeight = table.getHeaderHeight ();
-		return (rect.height - headerHeight + itemHeight - 1) / (itemHeight + table.getGridLineWidth());
-	}
-
-	/**
-	 * 
-	 */
-	private void refresh(String filter) {
-		int numItems = computeNumberOfItems();
-
-		// perfect match, to be selected in the table if not null
-		QuickAccessElement perfectMatch = (QuickAccessElement) elementMap
-				.get(filter);
-
-		List[] entries = computeMatchingEntries(filter, perfectMatch, numItems);
-
-		int selectionIndex = refreshTable(perfectMatch, entries);
-
-		if (table.getItemCount() > 0) {
-			table.setSelection(selectionIndex);
-		} else if (filter.length() == 0) {
-			{
-				TableItem item = new TableItem(table, SWT.NONE);
-				item.setText(0,
-						QuickAccessMessages.QuickAccess_AvailableCategories);
-				item.setForeground(0, grayColor);
-			}
-			for (int i = 0; i < providers.length; i++) {
-				QuickAccessProvider provider = providers[i];
-				TableItem item = new TableItem(table, SWT.NONE);
-				item.setText(1, provider.getName());
-				item.setForeground(1, grayColor);
-			}
-		}
-
-		if (filter.length() == 0) {
-			setInfoText(QuickAccessMessages.QuickAccess_StartTypingToFindMatches);
-		} else {
-			TriggerSequence[] sequences = getInvokingCommandKeySequences();
-			if (showAllMatches || sequences == null || sequences.length == 0) {
-				setInfoText(""); //$NON-NLS-1$
-			} else {
-				setInfoText(NLS
-						.bind(
-								QuickAccessMessages.QuickAccess_PressKeyToShowAllMatches,
-								sequences[0].format()));
-			}
-		}
-	}
-
-	final protected TriggerSequence[] getInvokingCommandKeySequences() {
-		if (invokingCommandKeySequences == null) {
-			if (invokingCommand != null) {
-				IBindingService bindingService = (IBindingService) window
-						.getWorkbench().getAdapter(IBindingService.class);
-				invokingCommandKeySequences = bindingService
-						.getActiveBindingsFor(invokingCommand.getId());
-			}
-		}
-		return invokingCommandKeySequences;
-	}
-
-	private KeyAdapter getKeyAdapter() {
-		if (keyAdapter == null) {
-			keyAdapter = new KeyAdapter() {
-				public void keyPressed(KeyEvent e) {
-					int accelerator = SWTKeySupport
-							.convertEventToUnmodifiedAccelerator(e);
-					KeySequence keySequence = KeySequence
-							.getInstance(SWTKeySupport
-									.convertAcceleratorToKeyStroke(accelerator));
-					TriggerSequence[] sequences = getInvokingCommandKeySequences();
-					if (sequences == null)
-						return;
-					for (int i = 0; i < sequences.length; i++) {
-						if (sequences[i].equals(keySequence)) {
-							e.doit = false;
-							toggleShowAllMatches();
-							return;
-						}
-					}
-				}
-			};
-		}
-		return keyAdapter;
-	}
-
-	private void toggleShowAllMatches() {
-		showAllMatches = !showAllMatches;
-		refresh(filterText.getText().toLowerCase());
-	}
-
-	private int refreshTable(QuickAccessElement perfectMatch, List[] entries) {
-		if (table.getItemCount() > entries.length
-				&& table.getItemCount() - entries.length > 20) {
-			table.removeAll();
-		}
-		TableItem[] items = table.getItems();
-		int selectionIndex = -1;
-		int index = 0;
-		for (int i = 0; i < providers.length; i++) {
-			if (entries[i] != null) {
-				boolean firstEntry = true;
-				for (Iterator it = entries[i].iterator(); it.hasNext();) {
-					QuickAccessEntry entry = (QuickAccessEntry) it.next();
-					entry.firstInCategory = firstEntry;
-					firstEntry = false;
-					if (!it.hasNext()) {
-						entry.lastInCategory = true;
-					}
-					TableItem item;
-					if (index < items.length) {
-						item = items[index];
-						table.clear(index);
-					} else {
-						item = new TableItem(table, SWT.NONE);
-					}
-					if (perfectMatch == entry.element && selectionIndex == -1) {
-						selectionIndex = index;
-					}
-					item.setData(entry);
-					item.setText(0, entry.provider.getName());
-					item.setText(1, entry.element.getLabel());
-					if (SWT.getPlatform().equals("wpf")) { //$NON-NLS-1$
-						item.setImage(1, entry.getImage(entry.element,
-							resourceManager));
-					}
-					index++;
-				}
-			}
-		}
-		if (index < items.length) {
-			table.remove(index, items.length - 1);
-		}
-		if (selectionIndex == -1) {
-			selectionIndex = 0;
-		}
-		return selectionIndex;
-	}
-
-	private List[] computeMatchingEntries(String filter,
-			QuickAccessElement perfectMatch, int maxCount) {
-		// collect matches in an array of lists
-		List[] entries = new ArrayList[providers.length];
-		int[] indexPerProvider = new int[providers.length];
-		int countPerProvider = Math.min(maxCount / 4,
-				INITIAL_COUNT_PER_PROVIDER);
-		int countTotal = 0;
-		boolean perfectMatchAdded = true;
-		if (perfectMatch != null) {
-			// reserve one entry for the perfect match
-			maxCount--;
-			perfectMatchAdded = false;
-		}
-		boolean done;
-		do {
-			// will be set to false if we find a provider with remaining
-			// elements
-			done = true;
-			for (int i = 0; i < providers.length
-					&& (showAllMatches || countTotal < maxCount); i++) {
-				if (entries[i] == null) {
-					entries[i] = new ArrayList();
-					indexPerProvider[i] = 0;
-				}
-				int count = 0;
-				QuickAccessProvider provider = providers[i];
-				if (filter.length() > 0
-						|| provider instanceof PreviousPicksProvider
-						|| showAllMatches) {
-					QuickAccessElement[] elements = provider
-							.getElementsSorted();
-					int j = indexPerProvider[i];
-					while (j < elements.length
-							&& (showAllMatches || (count < countPerProvider && countTotal < maxCount))) {
-						QuickAccessElement element = elements[j];
-						QuickAccessEntry entry;
-						if (filter.length() == 0) {
-							if (i == 0 || showAllMatches) {
-								entry = new QuickAccessEntry(element, provider,
-										new int[0][0], new int[0][0]);
-							} else {
-								entry = null;
-							}
-						} else {
-							entry = element.match(filter, provider);
-						}
-						if (entry != null) {
-							entries[i].add(entry);
-							count++;
-							countTotal++;
-							if (i == 0 && entry.element == perfectMatch) {
-								perfectMatchAdded = true;
-								maxCount = MAX_COUNT_TOTAL;
-							}
-						}
-						j++;
-					}
-					indexPerProvider[i] = j;
-					if (j < elements.length) {
-						done = false;
-					}
-				}
-			}
-			// from now on, add one element per provider
-			countPerProvider = 1;
-		} while ((showAllMatches || countTotal < maxCount) && !done);
-		if (!perfectMatchAdded) {
-			QuickAccessEntry entry = perfectMatch.match(filter, providers[0]);
-			if (entry != null) {
-				if (entries[0] == null) {
-					entries[0] = new ArrayList();
-					indexPerProvider[0] = 0;
-				}
-				entries[0].add(entry);
-			}
-		}
-		return entries;
-	}
-
-	protected Control getFocusControl() {
-		return filterText;
-	}
-
-	public boolean close() {
-		storeDialog(getDialogSettings());
-		if (textLayout != null && !textLayout.isDisposed()) {
-			textLayout.dispose();
-		}
-		if (resourceManager != null) {
-			resourceManager.dispose();
-			resourceManager = null;
-		}
-		return super.close();
-	}
-
-	protected Point getDefaultSize() {
-		return new Point(350, 420);
-	}
-
-	protected Point getDefaultLocation(Point initialSize) {
-		Point size = new Point(400, 400);
-		Rectangle parentBounds = getParentShell().getBounds();
-		int x = parentBounds.x + parentBounds.width / 2 - size.x / 2;
-		int y = parentBounds.y + parentBounds.height / 2 - size.y / 2;
-		return new Point(x, y);
-	}
-
-	protected IDialogSettings getDialogSettings() {
-		final IDialogSettings workbenchDialogSettings = WorkbenchPlugin
-				.getDefault().getDialogSettings();
-		IDialogSettings result = workbenchDialogSettings.getSection(getId());
-		if (result == null) {
-			result = workbenchDialogSettings.addNewSection(getId());
-		}
-		return result;
-	}
-
-	protected String getId() {
-		return "org.eclipse.ui.internal.QuickAccess"; //$NON-NLS-1$
-	}
-
-	private void storeDialog(IDialogSettings dialogSettings) {
-		String[] orderedElements = new String[previousPicksList.size()];
-		String[] orderedProviders = new String[previousPicksList.size()];
-		String[] textEntries = new String[previousPicksList.size()];
-		ArrayList arrayList = new ArrayList();
-		for (int i = 0; i < orderedElements.length; i++) {
-			QuickAccessElement quickAccessElement = (QuickAccessElement) previousPicksList
-					.get(i);
-			ArrayList elementText = (ArrayList) textMap.get(quickAccessElement);
-			Assert.isNotNull(elementText);
-			orderedElements[i] = quickAccessElement.getId();
-			orderedProviders[i] = quickAccessElement.getProvider().getId();
-			arrayList.addAll(elementText);
-			textEntries[i] = elementText.size() + ""; //$NON-NLS-1$
-		}
-		String[] textArray = (String[]) arrayList.toArray(new String[arrayList
-				.size()]);
-		dialogSettings.put(ORDERED_ELEMENTS, orderedElements);
-		dialogSettings.put(ORDERED_PROVIDERS, orderedProviders);
-		dialogSettings.put(TEXT_ENTRIES, textEntries);
-		dialogSettings.put(TEXT_ARRAY, textArray);
-	}
-
-	private void restoreDialog() {
-		IDialogSettings dialogSettings = getDialogSettings();
-		if (dialogSettings != null) {
-			String[] orderedElements = dialogSettings
-					.getArray(ORDERED_ELEMENTS);
-			String[] orderedProviders = dialogSettings
-					.getArray(ORDERED_PROVIDERS);
-			String[] textEntries = dialogSettings.getArray(TEXT_ENTRIES);
-			String[] textArray = dialogSettings.getArray(TEXT_ARRAY);
-			elementMap = new HashMap();
-			textMap = new HashMap();
-			previousPicksList = new LinkedList();
-			if (orderedElements != null && orderedProviders != null
-					&& textEntries != null && textArray != null) {
-				int arrayIndex = 0;
-				for (int i = 0; i < orderedElements.length; i++) {
-					QuickAccessProvider quickAccessProvider = (QuickAccessProvider) providerMap
-							.get(orderedProviders[i]);
-					int numTexts = Integer.parseInt(textEntries[i]);
-					if (quickAccessProvider != null) {
-						QuickAccessElement quickAccessElement = quickAccessProvider
-								.getElementForId(orderedElements[i]);
-						if (quickAccessElement != null) {
-							ArrayList arrayList = new ArrayList();
-							for (int j = arrayIndex; j < arrayIndex + numTexts; j++) {
-								String text = textArray[j];
-								// text length can be zero for old workspaces, see bug 190006
-								if (text.length() > 0) {
-									arrayList.add(text);
-									elementMap.put(text, quickAccessElement);
-								}
-							}
-							textMap.put(quickAccessElement, arrayList);
-							previousPicksList.add(quickAccessElement);
-						}
-					}
-					arrayIndex += numTexts;
-				}
-			}
-		}
-	}
-
-	protected void handleElementSelected(String text, Object selectedElement) {
-		IWorkbenchPage activePage = window.getActivePage();
-		if (activePage != null) {
-			if (selectedElement instanceof QuickAccessElement) {
-				addPreviousPick(text, selectedElement);
-				storeDialog(getDialogSettings());
-				QuickAccessElement element = (QuickAccessElement) selectedElement;
-				element.execute();
-			}
-		}
-	}
-
-	/**
-	 * @param element
-	 */
-	private void addPreviousPick(String text, Object element) {
-		// previousPicksList:
-		// Remove element from previousPicksList so there are no duplicates
-		// If list is max size, remove last(oldest) element
-		// Remove entries for removed element from elementMap and textMap
-		// Add element to front of previousPicksList
-		previousPicksList.remove(element);
-		if (previousPicksList.size() == MAXIMUM_NUMBER_OF_ELEMENTS) {
-			Object removedElement = previousPicksList.removeLast();
-			ArrayList removedList = (ArrayList) textMap.remove(removedElement);
-			for (int i = 0; i < removedList.size(); i++) {
-				elementMap.remove(removedList.get(i));
-			}
-		}
-		previousPicksList.addFirst(element);
-
-		// textMap:
-		// Get list of strings for element from textMap
-		// Create new list for element if there isn't one and put
-		// element->textList in textMap
-		// Remove rememberedText from list
-		// If list is max size, remove first(oldest) string
-		// Remove text from elementMap
-		// Add rememberedText to list of strings for element in textMap
-		ArrayList textList = (ArrayList) textMap.get(element);
-		if (textList == null) {
-			textList = new ArrayList();
-			textMap.put(element, textList);
-		}
-		
-		textList.remove(text);
-		if (textList.size() == MAXIMUM_NUMBER_OF_TEXT_ENTRIES_PER_ELEMENT) {
-			Object removedText = textList.remove(0);
-			elementMap.remove(removedText);
-		}
-
-		if (text.length() > 0) {
-			textList.add(text);
-			
-			// elementMap:
-			// Put rememberedText->element in elementMap
-			// If it replaced a different element update textMap and
-			// PreviousPicksList
-			Object replacedElement = elementMap.put(text, element);
-			if (replacedElement != null && !replacedElement.equals(element)) {
-				textList = (ArrayList) textMap.get(replacedElement);
-				if (textList != null) {
-					textList.remove(text);
-					if (textList.isEmpty()) {
-						textMap.remove(replacedElement);
-						previousPicksList.remove(replacedElement);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * 
-	 */
-	private void handleSelection() {
-		QuickAccessElement selectedElement = null;
-		String text = filterText.getText().toLowerCase();
-		if (table.getSelectionCount() == 1) {
-			QuickAccessEntry entry = (QuickAccessEntry) table
-					.getSelection()[0].getData();
-			selectedElement = entry == null ? null : entry.element;
-		}
-		close();
-		if (selectedElement != null) {
-			handleElementSelected(text, selectedElement);
-		}
-	}
-
-	private class PreviousPicksProvider extends QuickAccessProvider {
-
-		public QuickAccessElement getElementForId(String id) {
-			return null;
-		}
-
-		public QuickAccessElement[] getElements() {
-			return (QuickAccessElement[]) previousPicksList
-					.toArray(new QuickAccessElement[previousPicksList.size()]);
-		}
-
-		public QuickAccessElement[] getElementsSorted() {
-			return getElements();
-		}
-
-		public String getId() {
-			return "org.eclipse.ui.previousPicks"; //$NON-NLS-1$
-		}
-
-		public ImageDescriptor getImageDescriptor() {
-			return WorkbenchImages
-					.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-		}
-
-		public String getName() {
-			return QuickAccessMessages.QuickAccess_Previous;
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java
deleted file mode 100644
index e1929d1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessElement.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public abstract class QuickAccessElement {
-
-	private static final int[][] EMPTY_INDICES = new int[0][0];
-	private QuickAccessProvider provider;
-
-	/**
-	 * @param provider
-	 */
-	public QuickAccessElement(QuickAccessProvider provider) {
-		super();
-		this.provider = provider;
-	}
-
-	/**
-	 * Returns the label to be displayed to the user.
-	 * 
-	 * @return the label
-	 */
-	public abstract String getLabel();
-
-	/**
-	 * Returns the image descriptor for this element.
-	 * 
-	 * @return an image descriptor, or null if no image is available
-	 */
-	public abstract ImageDescriptor getImageDescriptor();
-
-	/**
-	 * Returns the id for this element. The id has to be unique within the
-	 * QuickAccessProvider that provided this element.
-	 * 
-	 * @return the id
-	 */
-	public abstract String getId();
-
-	/**
-	 * Executes the associated action for this element.
-	 */
-	public abstract void execute();
-
-	/**
-	 * Return the label to be used for sorting and matching elements.
-	 * 
-	 * @return the sort label
-	 */
-	public String getSortLabel() {
-		return getLabel();
-	}
-
-	/**
-	 * @return Returns the provider.
-	 */
-	public QuickAccessProvider getProvider() {
-		return provider;
-	}
-
-	/**
-	 * @param filter
-	 * @return
-	 */
-	public QuickAccessEntry match(String filter,
-			QuickAccessProvider providerForMatching) {
-		String sortLabel = getLabel();
-		int index = sortLabel.toLowerCase().indexOf(filter);
-		if (index != -1) {
-			return new QuickAccessEntry(this, providerForMatching,
-					new int[][] { { index, index + filter.length() - 1 } },
-					EMPTY_INDICES);
-		}
-		String combinedLabel = (providerForMatching.getName() + " " + getLabel()); //$NON-NLS-1$
-		index = combinedLabel.toLowerCase().indexOf(filter);
-		if (index != -1) {
-			int lengthOfElementMatch = index + filter.length()
-					- providerForMatching.getName().length() - 1;
-			if (lengthOfElementMatch > 0) {
-				return new QuickAccessEntry(this, providerForMatching,
-						new int[][] { { 0, lengthOfElementMatch - 1 } },
-						new int[][] { { index, index + filter.length() - 1 } });
-			}
-			return new QuickAccessEntry(this, providerForMatching,
-					EMPTY_INDICES, new int[][] { { index,
-							index + filter.length() - 1 } });
-		}
-		String camelCase = CamelUtil.getCamelCase(sortLabel);
-		index = camelCase.indexOf(filter);
-		if (index != -1) {
-			int[][] indices = CamelUtil.getCamelCaseIndices(sortLabel, index, filter
-					.length());
-			return new QuickAccessEntry(this, providerForMatching, indices,
-					EMPTY_INDICES);
-		}
-		String combinedCamelCase = CamelUtil.getCamelCase(combinedLabel);
-		index = combinedCamelCase.indexOf(filter);
-		if (index != -1) {
-			String providerCamelCase = CamelUtil.getCamelCase(providerForMatching
-					.getName());
-			int lengthOfElementMatch = index + filter.length()
-					- providerCamelCase.length();
-			if (lengthOfElementMatch > 0) {
-				return new QuickAccessEntry(
-						this,
-						providerForMatching,
-						CamelUtil.getCamelCaseIndices(sortLabel, 0, lengthOfElementMatch),
-						CamelUtil.getCamelCaseIndices(providerForMatching.getName(),
-								index, filter.length() - lengthOfElementMatch));
-			}
-			return new QuickAccessEntry(this, providerForMatching,
-					EMPTY_INDICES, CamelUtil.getCamelCaseIndices(providerForMatching
-							.getName(), index, filter.length()));
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
deleted file mode 100644
index 8a9b998..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessEntry.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.TextLayout;
-import org.eclipse.swt.graphics.TextStyle;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-class QuickAccessEntry {
-	boolean firstInCategory;
-	boolean lastInCategory;
-	QuickAccessElement element;
-	QuickAccessProvider provider;
-	int[][] elementMatchRegions;
-	int[][] providerMatchRegions;
-
-	QuickAccessEntry(QuickAccessElement element, QuickAccessProvider provider,
-			int[][] elementMatchRegions, int[][] providerMatchRegions) {
-		this.element = element;
-		this.provider = provider;
-		this.elementMatchRegions = elementMatchRegions;
-		this.providerMatchRegions = providerMatchRegions;
-	}
-
-	Image getImage(QuickAccessElement element, ResourceManager resourceManager) {
-		Image image = findOrCreateImage(element.getImageDescriptor(),
-				resourceManager);
-		if (image == null) {
-			image = WorkbenchImages
-					.getImage(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT);
-		}
-		return image;
-	}
-
-	private Image findOrCreateImage(ImageDescriptor imageDescriptor,
-			ResourceManager resourceManager) {
-		if (imageDescriptor == null) {
-			return null;
-		}
-		Image image = (Image) resourceManager.find(imageDescriptor);
-		if (image == null) {
-			try {
-				image = resourceManager.createImage(imageDescriptor);
-			} catch (DeviceResourceException e) {
-				WorkbenchPlugin.log(e);
-			}
-		}
-		return image;
-	}
-
-	/**
-	 * @param event
-	 * @param boldStyle
-	 */
-	public void measure(Event event, TextLayout textLayout,
-			ResourceManager resourceManager, TextStyle boldStyle) {
-		Table table = ((TableItem) event.item).getParent();
-		textLayout.setFont(table.getFont());
-		event.width = 0;
-		switch (event.index) {
-		case 0:
-			if (firstInCategory || providerMatchRegions.length > 0) {
-				textLayout.setText(provider.getName());
-				for (int i = 0; i < providerMatchRegions.length; i++) {
-					int[] matchRegion = providerMatchRegions[i];
-					textLayout.setStyle(boldStyle, matchRegion[0],
-							matchRegion[1]);
-				}
-			} else {
-				textLayout.setText(""); //$NON-NLS-1$
-			}
-			break;
-		case 1:
-			Image image = getImage(element, resourceManager);
-			Rectangle imageRect = image.getBounds();
-			event.width += imageRect.width + 4;
-			event.height = Math.max(event.height, imageRect.height + 2);
-			textLayout.setText(element.getLabel());
-			for (int i = 0; i < elementMatchRegions.length; i++) {
-				int[] matchRegion = elementMatchRegions[i];
-				textLayout.setStyle(boldStyle, matchRegion[0], matchRegion[1]);
-			}
-			break;
-		}
-		Rectangle rect = textLayout.getBounds();
-		event.width += rect.width + 4;
-		event.height = Math.max(event.height, rect.height + 2);
-	}
-
-	/**
-	 * @param event
-	 * @param textLayout
-	 * @param resourceManager
-	 * @param boldStyle
-	 */
-	public void paint(Event event, TextLayout textLayout,
-			ResourceManager resourceManager, TextStyle boldStyle, Color grayColor) {
-		final Table table = ((TableItem) event.item).getParent();
-		textLayout.setFont(table.getFont());
-		switch (event.index) {
-		case 0:
-			if (firstInCategory || providerMatchRegions.length > 0) {
-				textLayout.setText(provider.getName());
-				for (int i = 0; i < providerMatchRegions.length; i++) {
-					int[] matchRegion = providerMatchRegions[i];
-					textLayout.setStyle(boldStyle, matchRegion[0],
-							matchRegion[1]);
-				}
-				if (providerMatchRegions.length > 0 && !firstInCategory) {
-					event.gc.setForeground(grayColor);
-				}
-				Rectangle availableBounds = ((TableItem) event.item).getTextBounds(event.index);
-				Rectangle requiredBounds = textLayout.getBounds();
-				textLayout.draw(event.gc, availableBounds.x + 1, availableBounds.y
-						+ (availableBounds.height - requiredBounds.height) / 2);
-			}
-			break;
-		case 1:
-			Image image = getImage(element, resourceManager);
-			event.gc.drawImage(image, event.x + 1, event.y + 1);
-			textLayout.setText(element.getLabel());
-			for (int i = 0; i < elementMatchRegions.length; i++) {
-				int[] matchRegion = elementMatchRegions[i];
-				textLayout.setStyle(boldStyle, matchRegion[0], matchRegion[1]);
-			}
-			Rectangle availableBounds = ((TableItem) event.item).getTextBounds(event.index);
-			Rectangle requiredBounds = textLayout.getBounds();
-			textLayout.draw(event.gc, availableBounds.x + 1 + image.getBounds().width, availableBounds.y
-					+ (availableBounds.height - requiredBounds.height) / 2);
-			break;
-		}
-		if (lastInCategory) {
-			event.gc.setForeground(table.getDisplay().getSystemColor(SWT.COLOR_GRAY));
-			Rectangle bounds = ((TableItem)event.item).getBounds(event.index);
-			event.gc.drawLine(Math.max(0, bounds.x - 1), bounds.y + bounds.height - 1, bounds.x + bounds.width, bounds.y
-					+ bounds.height - 1);
-		}
-	}
-
-	/**
-	 * @param event
-	 */
-	public void erase(Event event) {
-		// We are only custom drawing the foreground.
-		event.detail &= ~SWT.FOREGROUND;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
deleted file mode 100644
index ffe3f75..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Handler for quick access pop-up dialog, showing UI elements such as editors,
- * views, commands.
- * 
- */
-public class QuickAccessHandler extends AbstractHandler {
-
-	private IWorkbenchWindow window;
-
-	/**
-	 * The constructor.
-	 */
-	public QuickAccessHandler() {
-	}
-
-	public Object execute(ExecutionEvent executionEvent) {
-
-		window = HandlerUtil.getActiveWorkbenchWindow(executionEvent);
-		if (window == null) {
-			return null;
-		}
-
-		final PopupDialog popupDialog = new QuickAccessDialog(window, executionEvent.getCommand());
-		popupDialog.open();
-		return null;
-	}
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java
deleted file mode 100644
index f8b730f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessMessages.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * @since 3.2
- * 
- */
-public class QuickAccessMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.quickaccess.messages"; //$NON-NLS-1$
-	public static String QuickAccess_Perspectives;
-	public static String QuickAccess_Commands;
-	public static String QuickAccess_Properties;
-	public static String QuickAccess_Editors;
-	public static String QuickAccess_Menus;
-	public static String QuickAccess_New;
-	public static String QuickAccess_Preferences;
-	public static String QuickAccess_Previous;
-	public static String QuickAccess_Views;
-	public static String QuickAccess_PressKeyToShowAllMatches;
-	public static String QuickAccess_StartTypingToFindMatches;
-	public static String QuickAccess_AvailableCategories;
-	static {
-		// initialize resource bundle
-		NLS.initializeMessages(BUNDLE_NAME, QuickAccessMessages.class);
-	}
-
-	private QuickAccessMessages() {
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java
deleted file mode 100644
index 0994377..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessProvider.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public abstract class QuickAccessProvider {
-
-	private QuickAccessElement[] sortedElements;
-
-	/**
-	 * Returns the unique ID of this provider.
-	 * 
-	 * @return the unique ID
-	 */
-	public abstract String getId();
-
-	/**
-	 * Returns the name of this provider to be displayed to the user.
-	 * 
-	 * @return the name
-	 */
-	public abstract String getName();
-
-	/**
-	 * Returns the image descriptor for this provider.
-	 * 
-	 * @return the image descriptor, or null if not defined
-	 */
-	public abstract ImageDescriptor getImageDescriptor();
-
-	/**
-	 * Returns the elements provided by this provider.
-	 * 
-	 * @return this provider's elements
-	 */
-	public abstract QuickAccessElement[] getElements();
-
-	public QuickAccessElement[] getElementsSorted() {
-		if (sortedElements == null) {
-			sortedElements = getElements();
-			Arrays.sort(sortedElements, new Comparator() {
-				public int compare(Object o1, Object o2) {
-					QuickAccessElement e1 = (QuickAccessElement) o1;
-					QuickAccessElement e2 = (QuickAccessElement) o2;
-					return e1.getLabel().compareTo(e2.getLabel());
-				}
-			});
-		}
-		return sortedElements;
-	}
-	
-	/**
-	 * Returns the element for the given ID if available, or null if no matching
-	 * element is available.
-	 * 
-	 * @param id
-	 *            the ID of an element
-	 * @return the element with the given ID, or null if not found.
-	 */
-	public abstract QuickAccessElement getElementForId(String id);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewElement.java
deleted file mode 100644
index 59a689a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewElement.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public class ViewElement extends QuickAccessElement {
-
-	private final IViewDescriptor viewDescriptor;
-
-	/* package */ViewElement(IViewDescriptor viewDescriptor, ViewProvider viewProvider) {
-		super(viewProvider);
-		this.viewDescriptor = viewDescriptor;
-	}
-
-	public void execute() {
-		IWorkbenchPage activePage = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow().getActivePage();
-		if (activePage != null) {
-			try {
-				activePage.showView(viewDescriptor.getId());
-			} catch (PartInitException e) {
-			}
-		}
-	}
-
-	public String getId() {
-		return viewDescriptor.getId();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return viewDescriptor.getImageDescriptor();
-	}
-
-	public String getLabel() {
-		return viewDescriptor.getLabel();
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((viewDescriptor == null) ? 0 : viewDescriptor.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final ViewElement other = (ViewElement) obj;
-		if (viewDescriptor == null) {
-			if (other.viewDescriptor != null)
-				return false;
-		} else if (!viewDescriptor.equals(other.viewDescriptor))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewProvider.java
deleted file mode 100644
index 91a000a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/ViewProvider.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public class ViewProvider extends QuickAccessProvider {
-
-	private QuickAccessElement[] cachedElements;
-	private Map idToElement = new HashMap();
-
-	public String getId() {
-		return "org.eclipse.ui.views"; //$NON-NLS-1$
-	}
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (ViewElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (cachedElements == null) {
-			IViewDescriptor[] views = PlatformUI.getWorkbench()
-					.getViewRegistry().getViews();
-			cachedElements = new QuickAccessElement[views.length];
-			for (int i = 0; i < views.length; i++) {
-				ViewElement viewElement = new ViewElement(views[i], this);
-				cachedElements[i] = viewElement;
-				idToElement.put(viewElement.getId(), viewElement);
-			}
-		}
-		return cachedElements;
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_VIEW_DEFAULTVIEW_MISC);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_Views;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardElement.java
deleted file mode 100644
index a64964d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardElement.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.actions.NewWizardShortcutAction;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public class WizardElement extends QuickAccessElement {
-
-	private static final String separator = " - "; //$NON-NLS-1$
-
-	private IWizardDescriptor wizardDescriptor;
-
-	/* package */WizardElement(IWizardDescriptor wizardDescriptor, WizardProvider wizardProvider) {
-		super(wizardProvider);
-		this.wizardDescriptor = wizardDescriptor;
-	}
-
-	public void execute() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		if (window != null) {
-			NewWizardShortcutAction wizardAction = new NewWizardShortcutAction(
-					window, wizardDescriptor);
-			wizardAction.run();
-		}
-	}
-
-	public String getId() {
-		return wizardDescriptor.getId();
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return wizardDescriptor.getImageDescriptor();
-	}
-
-	public String getLabel() {
-		return wizardDescriptor.getLabel() + separator
-				+ wizardDescriptor.getDescription();
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime
-				* result
-				+ ((wizardDescriptor == null) ? 0 : wizardDescriptor.hashCode());
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		final WizardElement other = (WizardElement) obj;
-		if (wizardDescriptor == null) {
-			if (other.wizardDescriptor != null)
-				return false;
-		} else if (!wizardDescriptor.equals(other.wizardDescriptor))
-			return false;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardProvider.java
deleted file mode 100644
index 1d6e8ff..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/WizardProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.quickaccess;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public class WizardProvider extends QuickAccessProvider {
-
-	private QuickAccessElement[] cachedElements;
-	private Map idToElement = new HashMap();
-
-	public QuickAccessElement getElementForId(String id) {
-		getElements();
-		return (WizardElement) idToElement.get(id);
-	}
-
-	public QuickAccessElement[] getElements() {
-		if (cachedElements == null) {
-			IWizardCategory rootCategory = WorkbenchPlugin.getDefault()
-					.getNewWizardRegistry().getRootCategory();
-			List result = new ArrayList();
-			collectWizards(rootCategory, result);
-			IWizardDescriptor[] wizards = (IWizardDescriptor[]) result
-					.toArray(new IWizardDescriptor[result.size()]);
-			cachedElements = new QuickAccessElement[wizards.length];
-			for (int i = 0; i < wizards.length; i++) {
-				WizardElement wizardElement = new WizardElement(wizards[i], this);
-				cachedElements[i] = wizardElement;
-				idToElement.put(wizardElement.getId(), wizardElement);
-			}
-		}
-		return cachedElements;
-	}
-
-	private void collectWizards(IWizardCategory category, List result) {
-		result.addAll(Arrays.asList(category.getWizards()));
-		IWizardCategory[] childCategories = category.getCategories();
-		for (int i = 0; i < childCategories.length; i++) {
-			collectWizards(childCategories[i], result);
-		}
-	}
-
-	public String getId() {
-		return "org.eclipse.ui.wizards"; //$NON-NLS-1$
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		return WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE);
-	}
-
-	public String getName() {
-		return QuickAccessMessages.QuickAccess_New;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
deleted file mode 100644
index 43da045..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-QuickAccess_Editors=Editors
-QuickAccess_Views=Views
-QuickAccess_Perspectives=Perspectives
-QuickAccess_Commands=Commands
-QuickAccess_Menus=Menus
-QuickAccess_New=New
-QuickAccess_Preferences=Preferences
-QuickAccess_Previous=Previous Choices
-QuickAccess_Properties=Properties
-QuickAccess_PressKeyToShowAllMatches=Press ''{0}'' to show all matches.
-QuickAccess_StartTypingToFindMatches=Start typing to find matches.
-QuickAccess_AvailableCategories=Available categories:
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetDescriptor.java
deleted file mode 100644
index e5c5f79..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetDescriptor.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.PluginActionSet;
-import org.eclipse.ui.internal.PluginActionSetReader;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * ActionSetDescriptor
- */
-public class ActionSetDescriptor implements IActionSetDescriptor, IAdaptable,
-        IWorkbenchAdapter, IPluginContribution {
-    private static final Object[] NO_CHILDREN = new Object[0];
-
-    private static final String INITIALLY_HIDDEN_PREF_ID_PREFIX = "actionSet.initiallyHidden."; //$NON-NLS-1$
-
-    private String id;
-
-    private String pluginId;
-
-    private String label;
-
-    private boolean visible;
-
-    private String description;
-
-    private IConfigurationElement configElement;
-
-    /**
-     * Create a descriptor from a configuration element.
-     * 
-     * @param configElement the configuration element
-     * @throws CoreException thrown if there is an issue creating the descriptor
-     */
-    public ActionSetDescriptor(IConfigurationElement configElement)
-            throws CoreException {
-        super();
-        this.configElement = configElement;
-        id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        pluginId = configElement.getNamespace();
-        label = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-        description = configElement.getAttribute(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-        String str = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_VISIBLE);
-        if (str != null && str.equals("true")) { //$NON-NLS-1$
-			visible = true;
-		}
-
-        // Sanity check.
-        if (label == null) {
-            throw new CoreException(new Status(IStatus.ERROR,
-                    WorkbenchPlugin.PI_WORKBENCH, 0,
-                    "Invalid extension (missing label): " + id,//$NON-NLS-1$
-                    null));
-        }
-    }
-
-    /**
-     * Returns the action set for this descriptor.
-     *
-     * @return the action set
-     */
-    public IActionSet createActionSet() throws CoreException {
-        return new PluginActionSet(this);
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * @see IWorkbenchAdapter#getChildren
-     */
-    public Object[] getChildren(Object o) {
-        if (o == this) {
-			return (new PluginActionSetReader()).readActionDescriptors(this);
-		}
-
-        return NO_CHILDREN;
-    }
-
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IActionSetDescriptor#getConfigurationElement()
-     */
-    public IConfigurationElement getConfigurationElement() {
-        return configElement;
-    }
-
-    /**
-     * Returns this action set's description. 
-     * This is the value of its <code>"description"</code> attribute.
-     *
-     * @return the description
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Returns this action set's id. 
-     * This is the value of its <code>"id"</code> attribute.
-     * <p>
-     *
-     * @return the action set id
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns this action set's label. 
-     * This is the value of its <code>"label"</code> attribute.
-     *
-     * @return the label
-     */
-    public String getLabel() {
-        return label;
-    }
-
-    /**
-     * @see IWorkbenchAdapter#getLabel
-     */
-    public String getLabel(Object o) {
-        if (o == this) {
-			return getLabel();
-		}
-        return "Unknown Label";//$NON-NLS-1$
-    }
-
-    /**
-     * Returns whether this action set is initially visible.
-     */
-    public boolean isInitiallyVisible() {
-        if (id == null) {
-			return visible;
-		}
-        Preferences prefs = WorkbenchPlugin.getDefault().getPluginPreferences();
-        String prefId = INITIALLY_HIDDEN_PREF_ID_PREFIX + getId();
-        if (prefs.getBoolean(prefId)) {
-			return false;
-		}
-        return visible;
-    }
-
-    /**
-     * Sets whether this action set is initially visible.
-     * If the action set identifier is undefined, then this is ignored.
-     * 
-     * @since 3.0
-     */
-    public void setInitiallyVisible(boolean newValue) {
-        if (id == null) {
-			return;
-		}
-        Preferences prefs = WorkbenchPlugin.getDefault().getPluginPreferences();
-        String prefId = INITIALLY_HIDDEN_PREF_ID_PREFIX + getId();
-        prefs.setValue(prefId, !newValue);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
-     */
-    public ImageDescriptor getImageDescriptor(Object object) {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
-     */
-    public Object getParent(Object o) {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return pluginId;
-    }
-    
-    public boolean equals(Object arg0) {
-        if (!(arg0 instanceof ActionSetDescriptor)) {
-            return false;
-        }
-        
-        ActionSetDescriptor descr = (ActionSetDescriptor) arg0;
-        
-        return id.equals(descr.id) && descr.pluginId.equals(pluginId);
-    }
-    
-    public int hashCode() {
-        return id.hashCode() + pluginId.hashCode();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetRegistry.java
deleted file mode 100644
index bb0dff0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ActionSetRegistry.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.commands.contexts.Context;
-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.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * The registry of action set extensions.
- */
-public class ActionSetRegistry implements IExtensionChangeHandler {
-    
-    /** 
-     * @since 3.1
-     */
-    private class ActionSetPartAssociation {
-        /**
-         * @param partId 
-         * @param actionSetId 
-         */
-        public ActionSetPartAssociation(String partId, String actionSetId) {
-            this.partId = partId;
-            this.actionSetId = actionSetId;
-        }
-        
-        
-        String partId;
-        String actionSetId;
-    }
-    
-    private ArrayList children = new ArrayList();
-
-    private Map mapPartToActionSetIds = new HashMap();
-    
-    private Map mapPartToActionSets = new HashMap();
-
-	private IContextService contextService;
-    
-    /**
-     * Creates the action set registry.
-     */
-    public ActionSetRegistry() {
-    	contextService = (IContextService) PlatformUI
-				.getWorkbench().getService(IContextService.class);
-		PlatformUI.getWorkbench().getExtensionTracker().registerHandler(
-                this,
-                ExtensionTracker
-                        .createExtensionPointFilter(new IExtensionPoint[] {
-                                getActionSetExtensionPoint(),
-                                getActionSetPartAssociationExtensionPoint() }));
-        readFromRegistry();
-    }
-
-    /**
-     * Return the action set part association extension point.
-     * 
-     * @return the action set part association extension point
-     * @since 3.1
-     */
-    private IExtensionPoint getActionSetPartAssociationExtensionPoint() {
-        return Platform
-        .getExtensionRegistry().getExtensionPoint(
-                PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_ACTION_SET_PART_ASSOCIATIONS);
-    }
-
-    /**
-     * Return the action set extension point.
-     * 
-     * @return the action set extension point
-     * @since 3.1
-     */
-    private IExtensionPoint getActionSetExtensionPoint() {
-        return Platform
-                .getExtensionRegistry().getExtensionPoint(
-                        PlatformUI.PLUGIN_ID,
-                        IWorkbenchRegistryConstants.PL_ACTION_SETS);
-    }
-
-    /**
-     * Adds an action set.
-     * @param desc
-     */
-    private void addActionSet(ActionSetDescriptor desc) {
-		children.add(desc);
-		Context actionSetContext = contextService.getContext(desc.getId());
-		if (!actionSetContext.isDefined()) {
-			actionSetContext.define(desc.getLabel(), desc.getDescription(),
-					"org.eclipse.ui.contexts.actionSet"); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Remove the action set.
-	 * 
-	 * @param desc
-	 */
-	private void removeActionSet(IActionSetDescriptor desc) {
-		Context actionSetContext = contextService.getContext(desc.getId());
-		if (actionSetContext.isDefined()) {
-			actionSetContext.undefine();
-		}
-		children.remove(desc);
-	}
-
-	/**
-     * Adds an association between an action set an a part.
-     */
-    private Object addAssociation(String actionSetId, String partId) {
-        // get the action set ids for this part
-        ArrayList actionSets = (ArrayList) mapPartToActionSetIds.get(partId);
-        if (actionSets == null) {
-            actionSets = new ArrayList();
-            mapPartToActionSetIds.put(partId, actionSets);
-        }
-        actionSets.add(actionSetId);
-        
-        ActionSetPartAssociation association = new ActionSetPartAssociation(partId, actionSetId);
-        return association;
-    }
-
-    /**
-     * Finds and returns the registered action set with the given id.
-     *
-     * @param id the action set id 
-     * @return the action set, or <code>null</code> if none
-     * @see IActionSetDescriptor#getId
-     */
-    public IActionSetDescriptor findActionSet(String id) {
-        Iterator i = children.iterator();
-        while (i.hasNext()) {
-            IActionSetDescriptor desc = (IActionSetDescriptor) i.next();
-            if (desc.getId().equals(id)) {
-				return desc;
-			}
-        }
-        return null;
-    }
-
-    /**
-     * Returns a list of the action sets known to the workbench.
-     *
-     * @return a list of action sets
-     */
-    public IActionSetDescriptor[] getActionSets() {
-        return (IActionSetDescriptor []) children.toArray(new IActionSetDescriptor [children.size()]);
-    }
-
-    /**
-     * Returns a list of the action sets associated with the given part id.
-     * 
-     * @param partId the part id
-     * @return a list of action sets
-     */
-    public IActionSetDescriptor[] getActionSetsFor(String partId) {
-        // check the resolved map first
-        ArrayList actionSets = (ArrayList) mapPartToActionSets.get(partId);
-        if (actionSets != null) {
-            return (IActionSetDescriptor[]) actionSets
-                    .toArray(new IActionSetDescriptor[actionSets.size()]);
-        }
-        
-        // get the action set ids for this part
-        ArrayList actionSetIds = (ArrayList) mapPartToActionSetIds.get(partId);
-        if (actionSetIds == null) {
-			return new IActionSetDescriptor[0];
-		}
-        
-        // resolve to action sets
-        actionSets = new ArrayList(actionSetIds.size());
-        for (Iterator i = actionSetIds.iterator(); i.hasNext();) {
-            String actionSetId = (String) i.next();
-            IActionSetDescriptor actionSet = findActionSet(actionSetId);
-            if (actionSet != null) {
-				actionSets.add(actionSet);
-			} else {
-               WorkbenchPlugin.log("Unable to associate action set with part: " + //$NON-NLS-1$
-                        partId + ". Action set " + actionSetId + " not found."); //$NON-NLS-2$ //$NON-NLS-1$
-            }
-        }
-        
-        mapPartToActionSets.put(partId, actionSets);
-        
-        return (IActionSetDescriptor[]) actionSets
-                .toArray(new IActionSetDescriptor[actionSets.size()]);
-    }
-
-    /**
-     * Reads the registry.
-     */
-    private void readFromRegistry() {      
-        IExtension[] extensions = getActionSetExtensionPoint().getExtensions();
-        for (int i = 0; i < extensions.length; i++) {
-            addActionSets(PlatformUI.getWorkbench().getExtensionTracker(),
-                    extensions[i]);
-        }
-
-        extensions = getActionSetPartAssociationExtensionPoint()
-                .getExtensions();
-        for (int i = 0; i < extensions.length; i++) {
-            addActionSetPartAssociations(PlatformUI.getWorkbench()
-                    .getExtensionTracker(), extensions[i]);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-     */
-    public void addExtension(IExtensionTracker tracker, IExtension extension) {
-        String extensionPointUniqueIdentifier = extension.getExtensionPointUniqueIdentifier();
-        if (extensionPointUniqueIdentifier.equals(getActionSetExtensionPoint().getUniqueIdentifier())) {
-            addActionSets(tracker, extension);
-        }
-        else if (extensionPointUniqueIdentifier.equals(getActionSetPartAssociationExtensionPoint().getUniqueIdentifier())){
-            addActionSetPartAssociations(tracker, extension);
-        }
-    }
-
-    /**
-     * @param tracker
-     * @param extension
-     */
-    private void addActionSetPartAssociations(IExtensionTracker tracker, IExtension extension) {
-        IConfigurationElement [] elements = extension.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-            IConfigurationElement element = elements[i];
-            if (element.getName().equals(IWorkbenchRegistryConstants.TAG_ACTION_SET_PART_ASSOCIATION)) {
-                String actionSetId = element.getAttribute(IWorkbenchRegistryConstants.ATT_TARGET_ID);
-                IConfigurationElement[] children = element.getChildren();
-                for (int j = 0; j < children.length; j++) {
-                    IConfigurationElement child = children[j];
-                    if (child.getName().equals(IWorkbenchRegistryConstants.TAG_PART)) {
-                        String partId = child.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-                        if (partId != null) {
-                            Object trackingObject = addAssociation(actionSetId, partId);
-                            if (trackingObject != null) {
-                                tracker.registerObject(extension,
-                                        trackingObject,
-                                        IExtensionTracker.REF_STRONG);
-
-                            }
-                            
-                        }
-                    } else {
-                        WorkbenchPlugin.log("Unable to process element: " + //$NON-NLS-1$
-                                child.getName() + " in action set part associations extension: " + //$NON-NLS-1$
-                                extension.getUniqueIdentifier());
-                    }
-                }
-            }
-        }
-
-        // TODO: optimize
-        mapPartToActionSets.clear();
-    }
-
-    /**
-     * @param tracker
-     * @param extension
-     */
-    private void addActionSets(IExtensionTracker tracker, IExtension extension) {
-        IConfigurationElement [] elements = extension.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-            IConfigurationElement element = elements[i];
-            if (element.getName().equals(IWorkbenchRegistryConstants.TAG_ACTION_SET)) {
-                try {
-                    ActionSetDescriptor desc = new ActionSetDescriptor(element);
-                    addActionSet(desc);
-                    tracker.registerObject(extension, desc, IExtensionTracker.REF_WEAK);
-
-                } catch (CoreException e) {
-                    // log an error since its not safe to open a dialog here
-                    WorkbenchPlugin
-                            .log(
-                                    "Unable to create action set descriptor.", e.getStatus());//$NON-NLS-1$
-                }
-            } 
-        }   
-
-        // TODO: optimize
-        mapPartToActionSets.clear();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-     */
-    public void removeExtension(IExtension extension, Object[] objects) {
-        String extensionPointUniqueIdentifier = extension.getExtensionPointUniqueIdentifier();
-        if (extensionPointUniqueIdentifier.equals(getActionSetExtensionPoint().getUniqueIdentifier())) {
-            removeActionSets(objects);
-        }
-        else if (extensionPointUniqueIdentifier.equals(getActionSetPartAssociationExtensionPoint().getUniqueIdentifier())){
-            removeActionSetPartAssociations(objects);
-        }
-    }
-
-    /**
-     * @param objects 
-     */
-    private void removeActionSetPartAssociations(Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            Object object = objects[i];
-            if (object instanceof ActionSetPartAssociation) {
-                ActionSetPartAssociation association = (ActionSetPartAssociation) object;
-                String actionSetId = association.actionSetId;
-                ArrayList actionSets = (ArrayList) mapPartToActionSetIds.get(association.partId);
-                if (actionSets == null) {
-					return;
-				}
-                actionSets.remove(actionSetId);
-                if (actionSets.isEmpty()) {
-					mapPartToActionSetIds.remove(association.partId);
-				}  
-            }
-        }
-        // TODO: optimize
-        mapPartToActionSets.clear();
-        
-    }
-
-    /**
-     * @param objects
-     */
-    private void removeActionSets(Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            Object object = objects[i];
-            if (object instanceof IActionSetDescriptor) {
-                IActionSetDescriptor desc = (IActionSetDescriptor) object;
-                removeActionSet(desc);
-
-                // now clean up the part associations
-                // TODO: this is expensive. We should consider another map from
-                // actionsets
-                // to parts.
-                for (Iterator j = mapPartToActionSetIds.values().iterator(); j
-                        .hasNext();) {
-                    ArrayList list = (ArrayList) j.next();
-                    list.remove(desc.getId());
-                    if (list.isEmpty()) {
-						j.remove();
-					}
-                }
-            }
-        }
-        // TODO: optimize
-        mapPartToActionSets.clear();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java
deleted file mode 100644
index 86ee553..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/CategorizedPageRegistryReader.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Oakland Software (Francis Upton) <francisu@ieee.org> - bug 219273 
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * The CategorizedPageRegistryReader is the abstract super class
- * of registry readers for page that have categorization.
- */
-public abstract class CategorizedPageRegistryReader extends RegistryReader {
-
-	public static final String ATT_CATEGORY = "category"; //$NON-NLS-1$
-
-	static final String PREFERENCE_SEPARATOR = "/"; //$NON-NLS-1$
-
-	List topLevelNodes;
-
-	/**
-	 * Internal class used to sort all the preference page nodes
-	 * based on the category.
-	 */
-	abstract class CategoryNode {
-		/**
-		 * Comment for <code>reader</code>
-		 */
-		private final CategorizedPageRegistryReader reader;
-
-		//private WorkbenchPreferenceNode node;
-
-		private String flatCategory;
-
-		/**
-		 * Default constructor
-		 */
-		public CategoryNode(CategorizedPageRegistryReader reader) {
-			this.reader = reader;
-		}
-
-		/**
-		 * Return the flatten category
-		 */
-		public String getFlatCategory() {
-			if (flatCategory == null) {
-				initialize();
-				if (flatCategory == null) {
-					flatCategory = getLabelText();
-				}
-			}
-			return flatCategory;
-		}
-
-		/**
-		 * Get the label text for this node.
-		 * @return String
-		 */
-		abstract String getLabelText();
-
-		/*
-		 * Initialize the flat category to include the parents'
-		 * category names and the current node's label
-		 */
-		private void initialize() {
-			String category = reader.getCategory(getNode());
-			if (category == null) {
-				return;
-			}
-
-			StringBuffer sb = new StringBuffer();
-			StringTokenizer stok = new StringTokenizer(category, PREFERENCE_SEPARATOR);
-			Object immediateParent = null;
-			while (stok.hasMoreTokens()) {
-				String pathID = stok.nextToken();
-				immediateParent = this.reader.findNode(pathID);
-				if (immediateParent == null) {
-					return;
-				}
-				if (sb.length() > 0) {
-					sb.append(PREFERENCE_SEPARATOR);
-				}
-				sb.append(getLabelText(immediateParent));
-			}
-
-			if (sb.length() > 0) {
-				sb.append(PREFERENCE_SEPARATOR);
-			}
-			sb.append(getLabelText());
-			flatCategory = sb.toString();
-		}
-
-		/**
-		 * Return the label text for the passed element.
-		 * @param element
-		 * @return String
-		 */
-		abstract String getLabelText(Object element);
-
-		/**
-		 * Get the node the receiver represents.
-		 * @return Object
-		 */
-		abstract Object getNode();
-	}
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	public CategorizedPageRegistryReader() {
-		super();
-	}
-
-	/**
-	 * Process the preference page nodes.
-	 */
-	void processNodes() {
-		topLevelNodes = new ArrayList();
-		//root nodes (which contain subnodes)
-
-		//Add root nodes to the contributions vector	
-		StringTokenizer tokenizer;
-		String currentToken;
-
-
-		CategoryNode[] nodes = createCategoryNodes(getNodes());
-		// flag to indicate that some work was done in the inner loop over the nodes
-		boolean workDone;
-		do {
-			//reset the flag
-			workDone = false;
-			List deferred = new ArrayList();
-			for (int i = 0; i < nodes.length; i++) {
-				// Iterate through all the nodes
-				CategoryNode categoryNode = nodes[i];
-				Object node = categoryNode.getNode();
-
-				String category = getCategory(node);
-				if (category == null) {
-					topLevelNodes.add(node);
-					continue;
-				}
-				// has category
-				tokenizer = new StringTokenizer(category, PREFERENCE_SEPARATOR);
-				Object parent = null;
-				while (tokenizer.hasMoreElements()) {
-					currentToken = tokenizer.nextToken();
-					Object child = null;
-					if (parent == null) {
-						child = findNode(currentToken);
-					} else {
-						child = findNode(parent, currentToken);
-					}
-
-					if (child == null) {
-						parent = null;
-						break;
-					}
-					parent = child;
-				}
-				if (parent != null) {
-					//we've done some work - the number of nodes to process has decreased
-					workDone = true;
-					add(parent, node);
-				} else {
-					// we haven't done any work - the parent for this node has not been found.
-					deferred.add(categoryNode);
-				}
-			}
-			// reset the nodes to all that have yet to find their proper parent
-			nodes = (CategoryNode[]) deferred.toArray(new CategoryNode[deferred
-					.size()]);
-		} while (nodes.length > 0 && workDone); // loop while we still have nodes to work on and the list is shrinking
-		
-		// log anything left over.
-		for (int i = 0; i < nodes.length; i++) {
-			CategoryNode categoryNode = nodes[i];
-			// Could not find the parent - log
-			WorkbenchPlugin
-					.log("Invalid preference page path: " + categoryNode.getFlatCategory()); //$NON-NLS-1$
-			topLevelNodes.add(categoryNode.getNode());
-		}
-	}
-
-	/**
-	 * Get the category for the node if there is one. If there
-	 * isn't return <code>null</code>.
-	 * @param node
-	 * @return String or <code>null</code>.
-	 */
-	abstract String getCategory(Object node);
-
-	/**
-	 * Add the node to the parent.
-	 * @param parent
-	 * @param node
-	 */
-	abstract void add(Object parent, Object node);
-
-	/**
-	 * Get the nodes for the receiver.
-	 * @return Collection of Object
-	 */
-	abstract Collection getNodes();
-
-	/**
-	 * Sort the nodes based on full category + name. Category used for sorting
-	 * is created by substituting node IDs with labels of the referenced
-	 * nodes. workbench node is excluded from sorting because it always
-	 * appears first in the dialog.
-	 */
-	CategoryNode[] createCategoryNodes(Collection nodesToCategorize) {
-		//sort by categories
-		List nodes = new ArrayList();
-
-		Iterator nodesIterator = nodesToCategorize.iterator();
-		while (nodesIterator.hasNext()) {
-			nodes.add(createCategoryNode(this, nodesIterator.next()));
-		}
-
-		return (CategoryNode[]) nodes.toArray(new CategoryNode[nodes.size()]);
-	}
-
-	/**
-	 * Create a node for categorization from the reader 
-	 * and the supplied object.
-	 * @param reader
-	 * @param object
-	 * @return CategoryNode
-	 */
-	abstract CategoryNode createCategoryNode(CategorizedPageRegistryReader reader, Object object);
-
-	/**
-	 * Searches for the top-level node with the given id.
-	 * @param id
-	 * @return Object of the type being categorized or
-	 * <code>null</code>
-	 */
-	abstract Object findNode(String id);
-
-	/**
-	 * Find the node with the given parent with the id
-	 * of currentToken.
-	 * @param parent
-	 * @param currentToken
-	 * @return
-	 */
-	abstract Object findNode(Object parent, String currentToken);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/Category.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/Category.java
deleted file mode 100644
index 126ea4d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/Category.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * Category provides for hierarchical grouping of elements
- * registered in the registry. One extension normally defines
- * a category, and other reference it via its ID.
- * <p>
- * A category may specify its parent category in order to
- * achieve hierarchy.
- * </p>
- */
-public class Category implements IWorkbenchAdapter, IPluginContribution, IAdaptable {
-    /**
-     * Name of the miscellaneous category
-     */
-    public final static String MISC_NAME = WorkbenchMessages.ICategory_other;
-
-    /**
-     * Identifier of the miscellaneous category
-     */
-    public final static String MISC_ID = "org.eclipse.ui.internal.otherCategory"; //$NON-NLS-1$
-
-    private String id;
-
-    private String name;
-
-    private String[] parentPath;
-
-    private ArrayList elements;
-
-    private IConfigurationElement configurationElement;
-
-	private String pluginId;
-
-    /**
-     * Creates an instance of <code>Category</code> as a
-     * miscellaneous category.
-     */
-    public Category() {
-        this.id = MISC_ID;
-        this.name = MISC_NAME;
-        this.pluginId = MISC_ID; // TODO: remove hack for bug 55172
-    }
-
-    /**
-     * Creates an instance of <code>Category</code> with
-     * an ID and label.
-     * 
-     * @param id the unique identifier for the category
-     * @param label the presentation label for this category
-     */
-    public Category(String id, String label) {
-        this.id = id;
-        this.name = label;
-    }
-
-    /**
-     * Creates an instance of <code>Category</code> using the
-     * information from the specified configuration element.
-     * 
-     * @param configElement the <code>IConfigurationElement<code> containing
-     * 		the ID, label, and optional parent category path.
-     * @throws WorkbenchException if the ID or label is <code>null</code
-     */
-    public Category(IConfigurationElement configElement)
-            throws WorkbenchException {
-        id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-
-        configurationElement = configElement;
-        if (id == null || getLabel() == null) {
-			throw new WorkbenchException("Invalid category: " + id); //$NON-NLS-1$
-		}
-    }
-
-
-    /**
-     * Add an element to this category.
-     * 
-     * @param element the element to add
-     */
-    public void addElement(Object element) {
-        if (elements == null) {
-			elements = new ArrayList(5);
-		}
-        elements.add(element);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IAdaptable.
-     */
-    public Object getAdapter(Class adapter) {
-        if (adapter == IWorkbenchAdapter.class) {
-			return this;
-		} else if (adapter == IConfigurationElement.class) {
-			return configurationElement;
-		} else {
-			return null;
-		}
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchAdapter.
-     */
-    public Object[] getChildren(Object o) {
-        return getElements().toArray();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchAdapter.
-     */
-    public ImageDescriptor getImageDescriptor(Object object) {
-        return WorkbenchImages.getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchAdapter.
-     */
-    public String getLabel(Object o) {
-        return getLabel();
-    }
-
-    /**
-     * Return the id for this category.
-     * @return the id
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Return the label for this category.
-     * 
-     * @return the label
-     */
-    public String getLabel() {
-        return configurationElement == null ? name : configurationElement
-				.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-    }
-
-    /**
-     * Return the parent path for this category.
-     * 
-     * @return the parent path
-     */
-    public String[] getParentPath() {
-    	if (parentPath != null) {
-			return parentPath;
-		}
-    	
-    	String unparsedPath = getRawParentPath();
-        if (unparsedPath != null) {
-            StringTokenizer stok = new StringTokenizer(unparsedPath, "/"); //$NON-NLS-1$
-            parentPath = new String[stok.countTokens()];
-            for (int i = 0; stok.hasMoreTokens(); i++) {
-                parentPath[i] = stok.nextToken();
-            }
-        }
-
-        return parentPath;
-    }
-    
-    /**
-     * Return the unparsed parent path.  May be <code>null</code>.
-     * 
-     * @return the unparsed parent path or <code>null</code>
-     */
-    public String getRawParentPath() {
-        return configurationElement == null ? null
-                : configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_PARENT_CATEGORY);
-    }
-
-    /**
-     * Return the root path for this category.
-     * 
-     * @return the root path
-     */
-    public String getRootPath() {
-        String[] path = getParentPath();
-        if (path != null && path.length > 0) {
-			return path[0];
-		}
-        
-        return id;
-    }
-
-    /**
-     * Return the elements contained in this category.
-     * 
-     * @return the elements
-     */
-    public ArrayList getElements() {
-        return elements;
-    }
-
-    /**
-     * Return whether a given object exists in this category.
-     * 
-     * @param o the object to search for
-     * @return whether the object is in this category
-     */
-    public boolean hasElement(Object o) {
-        if (elements == null) {
-			return false;
-		}
-        if (elements.isEmpty()) {
-			return false;
-		}
-        return elements.contains(o);
-    }
-
-    /**
-     * Return whether this category has child elements.
-     * 
-     * @return whether this category has child elements
-     */
-    public boolean hasElements() {
-        if (elements != null) {
-			return !elements.isEmpty();
-		}
-        
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
-     */
-    public Object getParent(Object o) {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return configurationElement == null ? pluginId : configurationElement
-				.getNamespace();
-    }
-
-	/**
-	 * Clear all elements from this category.
-	 * 
-	 * @since 3.1
-	 */
-	public void clear() {
-		if (elements != null) {
-			elements.clear();
-		}	
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorDescriptor.java
deleted file mode 100644
index c7e1c1e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorDescriptor.java
+++ /dev/null
@@ -1,631 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.io.File;
-import java.io.Serializable;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.program.Program;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorMatchingStrategy;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.ProgramImageDescriptor;
-import org.eclipse.ui.internal.tweaklets.InterceptContributions;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * @see IEditorDescriptor
- */
-public final class EditorDescriptor implements IEditorDescriptor, Serializable,
-        IPluginContribution {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3905241225668998961L;
-
-    // @issue the following constants need not be public; see bug 47600
-    /**
-     * Open internal constant.  Value <code>0x01</code>.
-     */
-    public static final int OPEN_INTERNAL = 0x01;
-
-    /**
-     * Open in place constant.  Value <code>0x02</code>.
-     */
-    public static final int OPEN_INPLACE = 0x02;
-
-    /**
-     * Open external constant.  Value <code>0x04</code>.
-     */
-    public static final int OPEN_EXTERNAL = 0x04;
-
-    private String editorName;
-
-    private String imageFilename;
-
-    private transient ImageDescriptor imageDesc;
-
-    private boolean testImage = true;
-
-    private String className;
-
-    private String launcherName;
-
-    private String fileName;
-
-    private String id = Util.ZERO_LENGTH_STRING;
-
-    private boolean matchingStrategyChecked = false;
-    private IEditorMatchingStrategy matchingStrategy;
-
-    private Program program;
-
-    //The id of the plugin which contributed this editor, null for external editors
-    private String pluginIdentifier;
-
-    private int openMode = 0;
-
-    private transient IConfigurationElement configurationElement;
-
-	/**
-     * Create a new instance of an editor descriptor. Limited
-     * to internal framework calls.
-     * @param element
-     * @param id2
-     */
-    /* package */EditorDescriptor(String id2, IConfigurationElement element) {
-        setID(id2);
-        setConfigurationElement(element);
-    }
-
-    
-
-	/**
-	 * Create a new instance of an editor descriptor. Limited
-     * to internal framework calls.
-	 */
-    /* package */ EditorDescriptor() {
-		super();
-	}
-
-
-
-	/**
-     * Creates a descriptor for an external program.
-     * 
-     * @param filename the external editor full path and filename
-     * @return the editor descriptor
-     */
-    public static EditorDescriptor createForProgram(String filename) {
-        if (filename == null) {
-            throw new IllegalArgumentException();
-        }
-        EditorDescriptor editor = new EditorDescriptor();
-
-        editor.setFileName(filename);
-        editor.setID(filename);
-        editor.setOpenMode(OPEN_EXTERNAL);
-
-        //Isolate the program name (no directory or extension)
-        int start = filename.lastIndexOf(File.separator);
-        String name;
-        if (start != -1) {
-            name = filename.substring(start + 1);
-        } else {
-            name = filename;
-        }
-        int end = name.lastIndexOf('.');
-        if (end != -1) {
-            name = name.substring(0, end);
-        }
-        editor.setName(name);
-
-        // get the program icon without storing it in the registry
-        ImageDescriptor imageDescriptor = new ProgramImageDescriptor(filename,
-                0);
-        editor.setImageDescriptor(imageDescriptor);
-
-        return editor;
-    }
-
-    /**
-     * Return the program called programName. Return null if it is not found.
-     * @return org.eclipse.swt.program.Program
-     */
-    private static Program findProgram(String programName) {
-
-        Program[] programs = Program.getPrograms();
-        for (int i = 0; i < programs.length; i++) {
-            if (programs[i].getName().equals(programName)) {
-				return programs[i];
-			}
-        }
-
-        return null;
-    }
-
-    /**
-     * Create the editor action bar contributor for editors of this type.
-     * 
-     * @return the action bar contributor, or <code>null</code>
-     */
-    public IEditorActionBarContributor createActionBarContributor() {
-        // Handle case for predefined editor descriptors, like the
-        // one for IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID, which
-        // don't have a configuration element.
-        if (configurationElement == null) {
-            return null;
-        }
-
-        // Get the contributor class name.
-        String className = configurationElement
-                .getAttribute(IWorkbenchRegistryConstants.ATT_CONTRIBUTOR_CLASS);
-        if (className == null) {
-			return null;
-		}
-
-        // Create the contributor object.
-        IEditorActionBarContributor contributor = null;
-        try {
-            contributor = (IEditorActionBarContributor) WorkbenchPlugin
-                    .createExtension(configurationElement,
-                            IWorkbenchRegistryConstants.ATT_CONTRIBUTOR_CLASS);
-        } catch (CoreException e) {
-            WorkbenchPlugin.log("Unable to create editor contributor: " + //$NON-NLS-1$
-                    id, e.getStatus());
-        }
-        return contributor;
-    }
-
-    /**
-     * Return the editor class name.
-     * 
-     * @return the class name
-     */
-    public String getClassName() {
-    	if (configurationElement == null) {
-    		return className;
-    	}
-    	return RegistryReader.getClassValue(configurationElement,
-                IWorkbenchRegistryConstants.ATT_CLASS);
-    }
-
-    /**
-     * Return the configuration element used to define this editor, or <code>null</code>.
-     * 
-     * @return the element or null
-     */
-    public IConfigurationElement getConfigurationElement() {
-        return configurationElement;
-    }
-    
-    /**
-     * Create an editor part based on this descriptor.
-     * 
-     * @return the editor part
-     * @throws CoreException thrown if there is an issue creating the editor
-     */
-    public IEditorPart createEditor() throws CoreException {        
-        Object extension = WorkbenchPlugin.createExtension(getConfigurationElement(), IWorkbenchRegistryConstants.ATT_CLASS);
-        return ((InterceptContributions)Tweaklets.get(InterceptContributions.KEY)).tweakEditor(extension);
-    }
-
-    /**
-     * Return the file name of the command to execute for this editor.
-     * 
-     * @return the file name to execute
-     */
-    public String getFileName() {
-        if (program == null) {
-        	if (configurationElement == null) {
-        		return fileName;
-        	}
-        	return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_COMMAND);
-    	}
-        return program.getName();
-    }
-
-    /**
-     * Return the id for this editor.
-     * 
-     * @return the id
-     */
-    public String getId() {        
-        if (program == null) {
-        	if (configurationElement == null) {
-        		return Util.safeString(id);
-        	}
-        	return Util.safeString(configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID));
-        	
-        }
-        return Util.safeString(program.getName());
-    }
-
-    /**
-     * Return the image descriptor describing this editor.
-     * 
-     * @return the image descriptor
-     */
-    public ImageDescriptor getImageDescriptor() {
-    	if (testImage) {
-    		testImage = false;
-			if (imageDesc == null) {
-				String imageFileName = getImageFilename();
-				String command = getFileName();
-				if (imageFileName != null && configurationElement != null) {
-					imageDesc = AbstractUIPlugin.imageDescriptorFromPlugin(
-							configurationElement.getNamespace(), imageFileName);
-				} else if (command != null) {
-					imageDesc = WorkbenchImages.getImageDescriptorFromProgram(
-							command, 0);
-				}
-			}
-			verifyImage();    		
-    	}
-    	
-        return imageDesc;
-    }
-
-    /**
-	 * Verifies that the image descriptor generates an image.  If not, the 
-	 * descriptor is replaced with the default image.
-	 * 
-	 * @since 3.1
-	 */
-	private void verifyImage() {
-		if (imageDesc == null) {
-			imageDesc = WorkbenchImages
-         		.getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
-		}
-		else {
-			Image img = imageDesc.createImage(false);
-			if (img == null) {
-			    // @issue what should be the default image?
-			    imageDesc = WorkbenchImages
-			            .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
-			} else {
-			    img.dispose();
-			}
-		}
-	}
-
-    /**
-     * The name of the image describing this editor.
-     * 
-     * @return the image file name
-     */
-    public String getImageFilename() {
-    	if (configurationElement == null) {
-			return imageFilename;
-		}
-    	return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-    }
-
-    /**
-     * Return the user printable label for this editor.
-     * 
-     * @return the label
-     */
-    public String getLabel() {
-        if (program == null) {
-        	if (configurationElement == null) {
-        		return editorName;        		
-        	}
-        	return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-        }
-        return program.getName();
-    }
-
-    /**
-     * Returns the class name of the launcher.
-     * 
-     * @return the launcher class name
-     */
-    public String getLauncher() {
-    	if (configurationElement == null) {
-			return launcherName;
-		}
-    	return configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_LAUNCHER);
-    }
-
-    /**
-     * Return the contributing plugin id.
-     * 
-     * @return the contributing plugin id
-     */
-    public String getPluginID() {
-    	if (configurationElement != null) {
-			return configurationElement.getNamespace();
-		}
-    	return pluginIdentifier;
-    }
-
-    /**
-     * Get the program for the receiver if there is one.
-     * @return Program
-     */
-    public Program getProgram() {
-        return this.program;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorDescriptor#isInternal
-     */
-    public boolean isInternal() {
-        return getOpenMode() == OPEN_INTERNAL;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorDescriptor#isOpenInPlace
-     */
-    public boolean isOpenInPlace() {
-        return getOpenMode() == OPEN_INPLACE;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorDescriptor#isOpenExternal
-     */
-    public boolean isOpenExternal() {
-        return getOpenMode() == OPEN_EXTERNAL;
-    }
-
-    /**
-     * Load the object properties from a memento.
-     * 
-     * @return <code>true</code> if the values are valid, <code>false</code> otherwise
-     */
-    protected boolean loadValues(IMemento memento) {
-        editorName = memento.getString(IWorkbenchConstants.TAG_LABEL);
-        imageFilename = memento.getString(IWorkbenchConstants.TAG_IMAGE);
-        className = memento.getString(IWorkbenchConstants.TAG_CLASS);
-        launcherName = memento.getString(IWorkbenchConstants.TAG_LAUNCHER);
-        fileName = memento.getString(IWorkbenchConstants.TAG_FILE);
-        id = Util.safeString(memento.getString(IWorkbenchConstants.TAG_ID));
-        pluginIdentifier = memento.getString(IWorkbenchConstants.TAG_PLUGIN);
-
-        Integer openModeInt = memento
-                .getInteger(IWorkbenchConstants.TAG_OPEN_MODE);
-        if (openModeInt != null) {
-            openMode = openModeInt.intValue();
-        } else {
-            // legacy: handle the older attribute names, needed to allow reading of pre-3.0-RCP workspaces 
-            boolean internal = new Boolean(memento
-                    .getString(IWorkbenchConstants.TAG_INTERNAL))
-                    .booleanValue();
-            boolean openInPlace = new Boolean(memento
-                    .getString(IWorkbenchConstants.TAG_OPEN_IN_PLACE))
-                    .booleanValue();
-            if (internal) {
-                openMode = OPEN_INTERNAL;
-            } else {
-                if (openInPlace) {
-                    openMode = OPEN_INPLACE;
-                } else {
-                    openMode = OPEN_EXTERNAL;
-                }
-            }
-        }
-        if (openMode != OPEN_EXTERNAL && openMode != OPEN_INTERNAL
-                && openMode != OPEN_INPLACE) {
-            WorkbenchPlugin
-                    .log("Ignoring editor descriptor with invalid openMode: " + this); //$NON-NLS-1$
-            return false;
-        }
-
-        String programName = memento
-                .getString(IWorkbenchConstants.TAG_PROGRAM_NAME);
-        if (programName != null) {
-            this.program = findProgram(programName);
-        }
-        return true;
-    }
-
-    /**
-     * Save the object values in a IMemento
-     */
-    protected void saveValues(IMemento memento) {
-        memento.putString(IWorkbenchConstants.TAG_LABEL, getLabel());
-        memento.putString(IWorkbenchConstants.TAG_IMAGE, getImageFilename());
-        memento.putString(IWorkbenchConstants.TAG_CLASS, getClassName());
-        memento.putString(IWorkbenchConstants.TAG_LAUNCHER, getLauncher());
-        memento.putString(IWorkbenchConstants.TAG_FILE, getFileName());
-        memento.putString(IWorkbenchConstants.TAG_ID, getId());
-        memento.putString(IWorkbenchConstants.TAG_PLUGIN, getPluginId());
-
-        memento.putInteger(IWorkbenchConstants.TAG_OPEN_MODE, getOpenMode());
-        // legacy: handle the older attribute names, needed to allow reading of workspace by pre-3.0-RCP eclipses
-        memento.putString(IWorkbenchConstants.TAG_INTERNAL, String
-                .valueOf(isInternal()));
-        memento.putString(IWorkbenchConstants.TAG_OPEN_IN_PLACE, String
-                .valueOf(isOpenInPlace()));
-
-        if (this.program != null) {
-			memento.putString(IWorkbenchConstants.TAG_PROGRAM_NAME,
-                    this.program.getName());
-		}
-    }
-
-    /**
-     * Return the open mode of this editor.
-     *
-	 * @return the open mode of this editor
-	 * @since 3.1
-	 */
-	private int getOpenMode() {
-		if (configurationElement == null) { // if we've been serialized, return our serialized value
-			return openMode;
-		}
-		else if (getLauncher() != null) {
-            // open using a launcer
-        	return EditorDescriptor.OPEN_EXTERNAL;
-        } else if (getFileName() != null) {
-            // open using an external editor 	
-            return EditorDescriptor.OPEN_EXTERNAL;
-        } else if (getPluginId() != null) {
-        	// open using an internal editor
-        	return EditorDescriptor.OPEN_INTERNAL;
-        }
-        else {
-        	return 0; // default for system editor
-        }
-	}
-
-	/**
-     * Set the class name of an internal editor.
-     */
-    /* package */void setClassName(String newClassName) {
-        className = newClassName;
-    }
-
-    /**
-     * Set the configuration element which contributed this editor.
-     */
-    /* package */void setConfigurationElement(
-            IConfigurationElement newConfigurationElement) {
-        configurationElement = newConfigurationElement;
-    }
-
-    /**
-     * Set the filename of an external editor.
-     */
-    /* package */void setFileName(String aFileName) {
-        fileName = aFileName;
-    }
-
-    /**
-     * Set the id of the editor.
-     * For internal editors this is the id as provided in the extension point
-     * For external editors it is path and filename of the editor
-     */
-    /* package */void setID(String anID) {
-        Assert.isNotNull(anID);
-        id = anID;
-    }
-
-    /**
-     * The Image to use to repesent this editor
-     */
-    /* package */void setImageDescriptor(ImageDescriptor desc) {
-        imageDesc = desc;
-        testImage = true;
-    }
-
-    /**
-     * The name of the image to use for this editor.
-     */
-    /* package */void setImageFilename(String aFileName) {
-        imageFilename = aFileName;
-    }
-
-    /**
-     * Sets the new launcher class name
-     *
-     * @param newLauncher the new launcher
-     */
-    /* package */void setLauncher(String newLauncher) {
-        launcherName = newLauncher;
-    }
-
-    /**
-     * The label to show for this editor.
-     */
-    /* package */void setName(String newName) {
-        editorName = newName;
-    }
-
-    /**
-     * Sets the open mode of this editor descriptor.
-     * 
-     * @param mode the open mode
-     * 
-     * @issue this method is public as a temporary fix for bug 47600
-     */
-    public void setOpenMode(int mode) {
-        openMode = mode;
-    }
-
-    /**
-     * The id of the plugin which contributed this editor, null for external editors.
-     */
-    /* package */void setPluginIdentifier(String anID) {
-        pluginIdentifier = anID;
-    }
-
-    /**
-     * Set the receivers program.
-     * @param newProgram
-     */
-    /* package */void setProgram(Program newProgram) {
-
-        this.program = newProgram;
-        if (editorName == null) {
-			setName(newProgram.getName());
-		}
-    }
-
-    /**
-     * For debugging purposes only.
-     */
-    public String toString() {
-        return "EditorDescriptor(id=" + getId() + ", label=" + getLabel() + ")"; //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return getPluginID();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IEditorDescriptor#getEditorManagementPolicy()
-     */
-    public IEditorMatchingStrategy getEditorMatchingStrategy() {
-        if (matchingStrategy == null && !matchingStrategyChecked) {
-            matchingStrategyChecked = true;
-            if (program == null && configurationElement != null) {
-                if (configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_MATCHING_STRATEGY) != null) {
-                    try {
-                        matchingStrategy = (IEditorMatchingStrategy) WorkbenchPlugin.createExtension(configurationElement, IWorkbenchRegistryConstants.ATT_MATCHING_STRATEGY);
-                    } catch (CoreException e) {
-                        WorkbenchPlugin.log("Error creating editor management policy for editor id " + getId(), e); //$NON-NLS-1$
-                    }
-                }
-            }
-        }
-        return matchingStrategy;
-    }
-    
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
deleted file mode 100644
index 78ab64d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
+++ /dev/null
@@ -1,1707 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.commands.common.EventManager;
-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.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.program.Program;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IFileEditorMapping;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.editorsupport.ComponentSupport;
-import org.eclipse.ui.internal.misc.ExternalProgramImageDescriptor;
-import org.eclipse.ui.internal.misc.ProgramImageDescriptor;
-import org.eclipse.ui.internal.util.Util;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * Provides access to the collection of defined editors for resource types.
- */
-public class EditorRegistry extends EventManager implements IEditorRegistry,
-		IExtensionChangeHandler {
-	
-	private final static IEditorDescriptor [] EMPTY = new IEditorDescriptor[0];
-	
-	class RelatedRegistry {
-
-		/**
-         * Return the objects related to the type.
-         * 
-         * @param type
-         * @return the objects related to the type
-		 */
-		public IEditorDescriptor[] getRelatedObjects(IContentType type) {			
-			IEditorDescriptor[] relatedObjects = (IEditorDescriptor[]) contentTypeToEditorMappings.get(type);
-			if (relatedObjects == null) {
-				return EMPTY;
-			}
-			return (IEditorDescriptor[]) WorkbenchActivityHelper.restrictArray(relatedObjects);
-		}
-
-		/**
-         * Return the objects related to the filename
-         * @param fileName
-         * @return the objects related to the filename
-		 */
-		public IEditorDescriptor[] getRelatedObjects(String fileName) {
-			IFileEditorMapping mapping = getMappingFor(fileName);
-			if (mapping == null) {
-				return EMPTY;
-			}
-			
-			return (IEditorDescriptor[]) WorkbenchActivityHelper.restrictArray(mapping.getEditors());
-		}
-		
-	}
-	
-	private Map contentTypeToEditorMappings = new HashMap();
-	
-    /*
-     * Cached images - these include images from registered editors (via
-     * plugins) and others hence this table is not one to one with the mappings
-     * table. It is in fact a superset of the keys one would find in
-     * typeEditorMappings
-     */
-    private Map extensionImages = new HashMap();
-
-    /**
-     * Vector of EditorDescriptor - all the editors loaded from plugin files.
-     * The list is kept in order to be able to show in the editor selection
-     * dialog of the resource associations page.  This list is sorted based on the 
-     * human readable label of the editor descriptor.
-     * 
-     * @see #comparer
-     */
-    private List sortedEditorsFromPlugins = new ArrayList();
-
-    // Map of EditorDescriptor - map editor id to editor.
-    private Map mapIDtoEditor = initialIdToEditorMap(10);
-
-    // Map of FileEditorMapping (extension to FileEditorMapping)
-    private EditorMap typeEditorMappings;
-
-    /*
-     * Compares the labels from two IEditorDescriptor objects
-     */
-    private static final Comparator comparer = new Comparator() {
-        private Collator collator = Collator.getInstance();
-
-        public int compare(Object arg0, Object arg1) {
-            String s1 = ((IEditorDescriptor) arg0).getLabel();
-            String s2 = ((IEditorDescriptor) arg1).getLabel();
-            return collator.compare(s1, s2);
-        }
-    };
-
-	private RelatedRegistry relatedRegistry;
-
-	public static final String EMPTY_EDITOR_ID = "org.eclipse.ui.internal.emptyEditorTab"; //$NON-NLS-1$
-
-    /**
-     * Return an instance of the receiver. Adds listeners into the extension
-     * registry for dynamic UI purposes.
-     */
-    public EditorRegistry() {
-        super();
-        initializeFromStorage();
-        IExtensionTracker tracker = PlatformUI.getWorkbench().getExtensionTracker();
-        tracker.registerHandler(this, ExtensionTracker.createExtensionPointFilter(getExtensionPointFilter()));
-		relatedRegistry = new RelatedRegistry();
-    }
-
-    /**
-     * Add an editor for the given extensions with the specified (possibly null)
-     * extended type. The editor is being registered from a plugin
-     * 
-     * @param editor
-     *            The description of the editor (as obtained from the plugin
-     *            file and built by the registry reader)
-     * @param extensions
-     *            Collection of file extensions the editor applies to
-     * @param filenames
-     *            Collection of filenames the editor applies to
-     * @param contentTypeVector 
-     * @param bDefault
-     *            Indicates whether the editor should be made the default editor
-     *            and hence appear first inside a FileEditorMapping
-     * 
-     * This method is not API and should not be called outside the workbench
-     * code.
-     */
-    public void addEditorFromPlugin(EditorDescriptor editor, List extensions,
-            List filenames, List contentTypeVector, boolean bDefault) {
-
-    	PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-				editor.getConfigurationElement().getDeclaringExtension(),
-				editor, IExtensionTracker.REF_WEAK);
-        // record it in our quick reference list
-        sortedEditorsFromPlugins.add(editor);
-
-        // add it to the table of mappings
-        Iterator itr = extensions.iterator();
-        while (itr.hasNext()) {
-            String fileExtension = (String) itr.next();
-
-            if (fileExtension != null && fileExtension.length() > 0) {
-                FileEditorMapping mapping = getMappingFor("*." + fileExtension); //$NON-NLS-1$
-                if (mapping == null) { // no mapping for that extension
-                    mapping = new FileEditorMapping(fileExtension);
-                    typeEditorMappings.putDefault(mappingKeyFor(mapping),
-                            mapping);
-                }
-                mapping.addEditor(editor);
-                if (bDefault) {
-					mapping.setDefaultEditor(editor);
-				}
-            }
-        }
-
-        // add it to the table of mappings
-        itr = filenames.iterator();
-        while (itr.hasNext()) {
-            String filename = (String) itr.next();
-
-            if (filename != null && filename.length() > 0) {
-                FileEditorMapping mapping = getMappingFor(filename);
-                if (mapping == null) { // no mapping for that extension
-                    String name;
-                    String extension;
-                    int index = filename.indexOf('.');
-                    if (index < 0) {
-                        name = filename;
-                        extension = ""; //$NON-NLS-1$
-                    } else {
-                        name = filename.substring(0, index);
-                        extension = filename.substring(index + 1);
-                    }
-                    mapping = new FileEditorMapping(name, extension);
-                    typeEditorMappings.putDefault(mappingKeyFor(mapping),
-                            mapping);
-                }
-                mapping.addEditor(editor);
-                if (bDefault) {
-					mapping.setDefaultEditor(editor);
-				}
-            }
-        }
-		
-		
-		itr = contentTypeVector.iterator();
-		while(itr.hasNext()) {
-			String contentTypeId = (String) itr.next();
-			if (contentTypeId != null && contentTypeId.length() > 0) {
-				IContentType contentType = Platform.getContentTypeManager().getContentType(contentTypeId);
-				if (contentType != null) {
-					IEditorDescriptor [] editorArray = (IEditorDescriptor[]) contentTypeToEditorMappings.get(contentType);
-					if (editorArray == null) {
-						editorArray = new IEditorDescriptor[] {editor};
-						contentTypeToEditorMappings.put(contentType, editorArray);
-					}
-					else {
-						IEditorDescriptor [] newArray = new IEditorDescriptor[editorArray.length + 1];
-						if (bDefault) { // default editors go to the front of the line
-							newArray[0] = editor;
-							System.arraycopy(editorArray, 0, newArray, 1, editorArray.length);
-						}
-						else {
-							newArray[editorArray.length] = editor;
-							System.arraycopy(editorArray, 0, newArray, 0, editorArray.length);
-						}
-						contentTypeToEditorMappings.put(contentType, newArray);
-					}
-				}
-			}
-		}
-
-        // Update editor map.
-        mapIDtoEditor.put(editor.getId(), editor);
-    }
-
-    /**
-     * Add external editors to the editor mapping.
-     */
-    private void addExternalEditorsToEditorMap() {
-        IEditorDescriptor desc = null;
-
-        // Add registered editors (may include external editors).
-        FileEditorMapping maps[] = typeEditorMappings.allMappings();
-        for (int i = 0; i < maps.length; i++) {
-            FileEditorMapping map = maps[i];
-            IEditorDescriptor[] descArray = map.getEditors();
-            for (int n = 0; n < descArray.length; n++) {
-                desc = descArray[n];
-                mapIDtoEditor.put(desc.getId(), desc);
-            }
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public void addPropertyListener(IPropertyListener l) {
-        addListenerObject(l);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public IEditorDescriptor findEditor(String id) {
-        Object desc = mapIDtoEditor.get(id);
-        if (WorkbenchActivityHelper.restrictUseOf(desc)) {
-        	return null;
-        }
-		return (IEditorDescriptor) desc;
-    }
-
-    /**
-     * Fires a property changed event to all registered listeners.
-     * 
-     * @param type the type of event
-     * @see IEditorRegistry#PROP_CONTENTS
-     */
-    private void firePropertyChange(final int type) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            final IPropertyListener l = (IPropertyListener) array[nX];
-            Platform.run(new SafeRunnable() {
-                public void run() {
-                    l.propertyChanged(EditorRegistry.this, type);
-                }
-            });
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     * 
-     * @deprecated
-     */
-    public IEditorDescriptor getDefaultEditor() {
-        // the default editor will always be the system external editor
-        // this should never return null
-        return findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public IEditorDescriptor getDefaultEditor(String filename) {
-		return getDefaultEditor(filename, guessAtContentType(filename));
-    }
-
-	/**
-	 * Return the (approximated) content type for a file with the given name.
-	 * 
-	 * @param filename the filename
-	 * @return the content type or <code>null</code> if it could not be determined
-	 * @since 3.1
-	 */
-	private IContentType guessAtContentType(String filename) {
-		return Platform.getContentTypeManager().findContentTypeFor(filename);
-	}
-
-    /**
-     * Returns the default file image descriptor.
-     * 
-     * @return the image descriptor
-     */
-    private ImageDescriptor getDefaultImage() {
-        // @issue what should be the default image?
-        return WorkbenchImages.getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public IEditorDescriptor[] getEditors(String filename) {
-		return getEditors(filename, guessAtContentType(filename));
-	}
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public IFileEditorMapping[] getFileEditorMappings() {
-        FileEditorMapping[] array = typeEditorMappings.allMappings();
-        final Collator collator = Collator.getInstance();
-        Arrays.sort(array, new Comparator() {
-            
-            /* (non-Javadoc)
-             * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-             */
-            public int compare(Object o1, Object o2) {
-                String s1 = ((FileEditorMapping) o1).getLabel();
-                String s2 = ((FileEditorMapping) o2).getLabel();
-                return collator.compare(s1, s2);
-            }
-        });
-        return array;
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public ImageDescriptor getImageDescriptor(String filename) {
-		return getImageDescriptor(filename, guessAtContentType(filename));
-	}
-
-	/**
-     * Find the file editor mapping for the file extension. Returns
-     * <code>null</code> if not found.
-     * 
-     * @param ext
-     *            the file extension
-     * @return the mapping, or <code>null</code>
-     */
-    private FileEditorMapping getMappingFor(String ext) {
-        if (ext == null) {
-			return null;
-		}
-        String key = mappingKeyFor(ext);
-        return typeEditorMappings.get(key);
-    }
-
-    /**
-     * Find the file editor mappings for the given filename.
-     * <p>
-     * Return an array of two FileEditorMapping items, where the first mapping
-     * is for the entire filename, and the second mapping is for the filename's
-     * extension only. These items can be null if no mapping exist on the
-     * filename and/or filename's extension.</p>
-     * 
-     * @param filename the filename 
-     * @return the mappings
-     */
-    private FileEditorMapping[] getMappingForFilename(String filename) {
-        FileEditorMapping[] mapping = new FileEditorMapping[2];
-
-        // Lookup on entire filename
-        mapping[0] = getMappingFor(filename);
-
-        // Lookup on filename's extension
-        int index = filename.lastIndexOf('.');
-        if (index > -1) {
-            String extension = filename.substring(index);
-            mapping[1] = getMappingFor("*" + extension); //$NON-NLS-1$
-        }
-
-        return mapping;
-    }
-
-    /**
-     * Return the editor descriptors pulled from the OS.
-     * <p>
-     * WARNING! The image described by each editor descriptor is *not* known by
-     * the workbench's graphic registry. Therefore clients must take care to
-     * ensure that if they access any of the images held by these editors that
-     * they also dispose them
-     * </p>
-     * @return the editor descriptors
-     */
-    public IEditorDescriptor[] getSortedEditorsFromOS() {
-        List externalEditors = new ArrayList();
-        Program[] programs = Program.getPrograms();
-
-        for (int i = 0; i < programs.length; i++) {
-            //1FPLRL2: ITPUI:WINNT - NOTEPAD editor cannot be launched
-            //Some entries start with %SystemRoot%
-            //For such cases just use the file name as they are generally
-            //in directories which are on the path
-            /*
-             * if (fileName.charAt(0) == '%') { fileName = name + ".exe"; }
-             */
-
-            EditorDescriptor editor = new EditorDescriptor();
-            editor.setOpenMode(EditorDescriptor.OPEN_EXTERNAL);
-            editor.setProgram(programs[i]);
-
-            // determine the program icon this editor would need (do not let it
-            // be cached in the workbench registry)
-            ImageDescriptor desc = new ExternalProgramImageDescriptor(
-                    programs[i]);
-            editor.setImageDescriptor(desc);
-            externalEditors.add(editor);
-        }
-
-        Object[] tempArray = sortEditors(externalEditors);
-        IEditorDescriptor[] array = new IEditorDescriptor[externalEditors
-                .size()];
-        for (int i = 0; i < tempArray.length; i++) {
-            array[i] = (IEditorDescriptor) tempArray[i];
-        }
-        return array;
-    }
-
-    /**
-     * Return the editors loaded from plugins.
-     * 
-     * @return the sorted array of editors declared in plugins
-     * @see #comparer
-     */
-    public IEditorDescriptor[] getSortedEditorsFromPlugins() {
-		Collection descs = WorkbenchActivityHelper
-				.restrictCollection(sortedEditorsFromPlugins, new ArrayList());
-		return (IEditorDescriptor[]) descs.toArray(new IEditorDescriptor[descs
-				.size()]);
-	}
-
-    /**
-	 * Answer an intial id to editor map. This will create a new map and
-	 * populate it with the default system editors.
-	 * 
-	 * @param initialSize
-	 *            the initial size of the map
-	 * @return the new map
-	 */
-    private HashMap initialIdToEditorMap(int initialSize) {
-        HashMap map = new HashMap(initialSize);
-        addSystemEditors(map);
-        return map;
-    }
-
-    /**
-     * Add the system editors to the provided map. This will always add an
-     * editor with an id of {@link #SYSTEM_EXTERNAL_EDITOR_ID} and may also add
-     * an editor with id of {@link #SYSTEM_INPLACE_EDITOR_ID} if the system
-     * configuration supports it.
-     * 
-     * @param map the map to augment
-     */
-    private void addSystemEditors(HashMap map) {
-        // there will always be a system external editor descriptor
-        EditorDescriptor editor = new EditorDescriptor();
-        editor.setID(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
-        editor.setName(WorkbenchMessages.SystemEditorDescription_name); 
-        editor.setOpenMode(EditorDescriptor.OPEN_EXTERNAL);
-        // @issue we need a real icon for this editor?
-        map.put(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID, editor);
-
-        // there may be a system in-place editor if supported by platform
-        if (ComponentSupport.inPlaceEditorSupported()) {
-            editor = new EditorDescriptor();
-            editor.setID(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID);
-            editor.setName(WorkbenchMessages.SystemInPlaceDescription_name);
-            editor.setOpenMode(EditorDescriptor.OPEN_INPLACE);
-            // @issue we need a real icon for this editor?
-            map.put(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID, editor);
-        }
-        
-		EditorDescriptor emptyEditorDescriptor = new EditorDescriptor();
-		emptyEditorDescriptor.setID(EMPTY_EDITOR_ID);
-		emptyEditorDescriptor.setName("(Empty)"); //$NON-NLS-1$
-		emptyEditorDescriptor
-				.setImageDescriptor(WorkbenchImages
-						.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT));
-		map.put(EMPTY_EDITOR_ID, emptyEditorDescriptor);
-    }
-
-    /**
-     * Initialize the registry state from plugin declarations and preference
-     * overrides.
-     */
-    private void initializeFromStorage() {
-        typeEditorMappings = new EditorMap();
-        extensionImages = new HashMap();
-
-        //Get editors from the registry
-        EditorRegistryReader registryReader = new EditorRegistryReader();
-        registryReader.addEditors(this);
-        sortInternalEditors();
-        rebuildInternalEditorMap();
-
-        IPreferenceStore store = PlatformUI.getPreferenceStore();
-        String defaultEditors = store
-                .getString(IPreferenceConstants.DEFAULT_EDITORS);
-        String chachedDefaultEditors = store
-                .getString(IPreferenceConstants.DEFAULT_EDITORS_CACHE);
-
-        //If defaults has changed load it afterwards so it overrides the users
-        // associations.
-        if (defaultEditors == null
-                || defaultEditors.equals(chachedDefaultEditors)) {
-            setProductDefaults(defaultEditors);
-            loadAssociations(); //get saved earlier state
-        } else {
-            loadAssociations(); //get saved earlier state
-            setProductDefaults(defaultEditors);
-            store.putValue(IPreferenceConstants.DEFAULT_EDITORS_CACHE,
-                    defaultEditors);
-        }
-        addExternalEditorsToEditorMap();
-    }
-
-    /**
-     * Set the default editors according to the preference store which can be
-     * overwritten in the file properties.ini.  In the form: 
-     * <p>
-     * <code>ext1:id1;ext2:id2;...</code>
-     * </p>
-     * 
-     * @param defaultEditors the default editors to set
-     */
-    private void setProductDefaults(String defaultEditors) {
-        if (defaultEditors == null || defaultEditors.length() == 0) {
-			return;
-		}
-
-        StringTokenizer extEditors = new StringTokenizer(defaultEditors,
-                new Character(IPreferenceConstants.SEPARATOR).toString());
-        while (extEditors.hasMoreTokens()) {
-            String extEditor = extEditors.nextToken().trim();
-            int index = extEditor.indexOf(':');
-            if (extEditor.length() < 3 || index <= 0
-                    || index >= (extEditor.length() - 1)) {
-                //Extension and id must have at least one char.
-                WorkbenchPlugin
-                        .log("Error setting default editor. Could not parse '" + extEditor + "'. Default editors should be specified as '*.ext1:editorId1;*.ext2:editorId2'"); //$NON-NLS-1$ //$NON-NLS-2$
-                return;
-            }
-            String ext = extEditor.substring(0, index).trim();
-            String editorId = extEditor.substring(index + 1).trim();
-            FileEditorMapping mapping = getMappingFor(ext);
-            if (mapping == null) {
-                WorkbenchPlugin
-                        .log("Error setting default editor. Could not find mapping for '" + ext + "'."); //$NON-NLS-1$ //$NON-NLS-2$
-                continue;
-            }
-            EditorDescriptor editor = (EditorDescriptor) findEditor(editorId);
-            if (editor == null) {
-                WorkbenchPlugin
-                        .log("Error setting default editor. Could not find editor: '" + editorId + "'."); //$NON-NLS-1$ //$NON-NLS-2$
-                continue;
-            }
-            mapping.setDefaultEditor(editor);
-        }
-    }
-
-    /**
-     * Read the editors defined in the preferences store.
-     * 
-     * @param editorTable
-     *            Editor table to store the editor definitions.
-     * @return true if the table is built succesfully.
-     */
-    private boolean readEditors(Map editorTable) {
-        //Get the workbench plugin's working directory
-        IPath workbenchStatePath = WorkbenchPlugin.getDefault().getDataLocation();
-        if(workbenchStatePath == null) {
-			return false;
-		}        
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        Reader reader = null;
-        try {
-            // Get the editors defined in the preferences store
-            String xmlString = store.getString(IPreferenceConstants.EDITORS);
-            if (xmlString == null || xmlString.length() == 0) {
-                FileInputStream stream = new FileInputStream(workbenchStatePath
-                        .append(IWorkbenchConstants.EDITOR_FILE_NAME)
-                        .toOSString());
-                reader = new BufferedReader(new InputStreamReader(stream,
-                        "utf-8")); //$NON-NLS-1$
-            } else {
-                reader = new StringReader(xmlString);
-            }
-            XMLMemento memento = XMLMemento.createReadRoot(reader);
-            EditorDescriptor editor;
-            IMemento[] edMementos = memento
-                    .getChildren(IWorkbenchConstants.TAG_DESCRIPTOR);
-            // Get the editors and validate each one
-            for (int i = 0; i < edMementos.length; i++) {
-                editor = new EditorDescriptor();
-                boolean valid = editor.loadValues(edMementos[i]);
-                if (!valid) {
-                    continue;
-                }
-                if (editor.getPluginID() != null) {
-                    //If the editor is from a plugin we use its ID to look it
-                    // up in the mapping of editors we
-                    //have obtained from plugins. This allows us to verify that
-                    // the editor is still valid
-                    //and allows us to get the editor description from the
-                    // mapping table which has
-                    //a valid config element field.
-                    EditorDescriptor validEditorDescritor = (EditorDescriptor) mapIDtoEditor
-                            .get(editor.getId());
-                    if (validEditorDescritor != null) {
-                        editorTable.put(validEditorDescritor.getId(),
-                                validEditorDescritor);
-                    }
-                } else { //This is either from a program or a user defined
-                    // editor
-                    ImageDescriptor descriptor;
-                    if (editor.getProgram() == null) {
-						descriptor = new ProgramImageDescriptor(editor
-                                .getFileName(), 0);
-					} else {
-						descriptor = new ExternalProgramImageDescriptor(editor
-                                .getProgram());
-					}
-                    editor.setImageDescriptor(descriptor);
-                    editorTable.put(editor.getId(), editor);
-                }
-            }
-        } catch (IOException e) {
-            try {
-                if (reader != null) {
-					reader.close();
-				}
-            } catch (IOException ex) {
-                e.printStackTrace();
-            }
-            //Ignore this as the workbench may not yet have saved any state
-            return false;
-        } catch (WorkbenchException e) {
-            ErrorDialog.openError((Shell) null, WorkbenchMessages.EditorRegistry_errorTitle,
-                    WorkbenchMessages.EditorRegistry_errorMessage, 
-                    e.getStatus());
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Read the file types and associate them to their defined editor(s).
-     * 
-     * @param editorTable
-     *            The editor table containing the defined editors.
-     * @param reader
-     *            Reader containing the preferences content for the resources.
-     * 
-     * @throws WorkbenchException
-     */
-    public void readResources(Map editorTable, Reader reader)
-            throws WorkbenchException {
-        XMLMemento memento = XMLMemento.createReadRoot(reader);
-        String versionString = memento.getString(IWorkbenchConstants.TAG_VERSION);
-        boolean versionIs31 = "3.1".equals(versionString); //$NON-NLS-1$
-        
-        IMemento[] extMementos = memento
-                .getChildren(IWorkbenchConstants.TAG_INFO);
-        for (int i = 0; i < extMementos.length; i++) {
-            String name = extMementos[i]
-                    .getString(IWorkbenchConstants.TAG_NAME);
-            if (name == null) {
-				name = "*"; //$NON-NLS-1$
-			}
-            String extension = extMementos[i]
-                    .getString(IWorkbenchConstants.TAG_EXTENSION);
-            IMemento[] idMementos = extMementos[i]
-                    .getChildren(IWorkbenchConstants.TAG_EDITOR);
-            String[] editorIDs = new String[idMementos.length];
-            for (int j = 0; j < idMementos.length; j++) {
-                editorIDs[j] = idMementos[j]
-                        .getString(IWorkbenchConstants.TAG_ID);
-            }
-            idMementos = extMementos[i]
-                    .getChildren(IWorkbenchConstants.TAG_DELETED_EDITOR);
-            String[] deletedEditorIDs = new String[idMementos.length];
-            for (int j = 0; j < idMementos.length; j++) {
-                deletedEditorIDs[j] = idMementos[j]
-                        .getString(IWorkbenchConstants.TAG_ID);
-            }
-            FileEditorMapping mapping = getMappingFor(name + "." + extension); //$NON-NLS-1$
-            if (mapping == null) {
-                mapping = new FileEditorMapping(name, extension);
-            }
-            List editors = new ArrayList();
-            for (int j = 0; j < editorIDs.length; j++) {
-                if (editorIDs[j] != null) {
-                    EditorDescriptor editor = (EditorDescriptor) editorTable
-                            .get(editorIDs[j]);
-                    if (editor != null) {
-                        editors.add(editor);
-                    }
-                }
-            }
-            List deletedEditors = new ArrayList();
-            for (int j = 0; j < deletedEditorIDs.length; j++) {
-                if (deletedEditorIDs[j] != null) {
-                    EditorDescriptor editor = (EditorDescriptor) editorTable
-                            .get(deletedEditorIDs[j]);
-                    if (editor != null) {
-                        deletedEditors.add(editor);
-                    }
-                }
-            }
-            
-            List defaultEditors = new ArrayList();
-            
-            if (versionIs31) { // parse the new format
-				idMementos = extMementos[i]
-						.getChildren(IWorkbenchConstants.TAG_DEFAULT_EDITOR);
-				String[] defaultEditorIds = new String[idMementos.length];
-				for (int j = 0; j < idMementos.length; j++) {
-					defaultEditorIds[j] = idMementos[j]
-							.getString(IWorkbenchConstants.TAG_ID);
-				}
-				for (int j = 0; j < defaultEditorIds.length; j++) {
-					if (defaultEditorIds[j] != null) {
-						EditorDescriptor editor = (EditorDescriptor) editorTable
-								.get(defaultEditorIds[j]);
-						if (editor != null) {
-							defaultEditors.add(editor);
-						}
-					}
-				}
-			}
-            else { // guess at pre 3.1 format defaults
-            		if (!editors.isEmpty()) {
-            			EditorDescriptor editor = (EditorDescriptor) editors.get(0);
-            			if (editor != null) {
-                			defaultEditors.add(editor);	
-                		}
-            		}
-            		defaultEditors.addAll(Arrays.asList(mapping.getDeclaredDefaultEditors()));
-            }
-            
-            // Add any new editors that have already been read from the registry
-            // which were not deleted.
-            IEditorDescriptor[] editorsArray = mapping.getEditors();
-            for (int j = 0; j < editorsArray.length; j++) {
-                if (!contains(editors, editorsArray[j])
-                        && !deletedEditors.contains(editorsArray[j])) {
-                    editors.add(editorsArray[j]);
-                }
-            }
-            // Map the editor(s) to the file type
-            mapping.setEditorsList(editors);
-            mapping.setDeletedEditorsList(deletedEditors);
-            mapping.setDefaultEditors(defaultEditors);
-            typeEditorMappings.put(mappingKeyFor(mapping), mapping);
-        }
-    }
-
-    /**
-     * Determine if the editors list contains the editor descriptor.
-     * 
-     * @param editorsArray
-     * 			The list of editors
-     * @param editorDescriptor
-     * 			The editor descriptor
-     * @return <code>true</code> if the editors list contains the editor descriptor
-     */
-    private boolean contains(List editorsArray,
-            IEditorDescriptor editorDescriptor) {
-        IEditorDescriptor currentEditorDescriptor = null;
-        Iterator i = editorsArray.iterator();
-        while (i.hasNext()) {
-            currentEditorDescriptor = (IEditorDescriptor) i.next();
-            if (currentEditorDescriptor.getId()
-                    .equals(editorDescriptor.getId())) {
-				return true;
-			}
-        }
-        return false;
-
-    }
-
-    /**
-     * Creates the reader for the resources preferences defined in the
-     * preference store.
-     * 
-     * @param editorTable
-     *            The editor table containing the defined editors.
-     * @return true if the resources are read succesfully.
-     */
-    private boolean readResources(Map editorTable) {
-        //Get the workbench plugin's working directory
-        IPath workbenchStatePath = WorkbenchPlugin.getDefault().getDataLocation();
-        // XXX: nobody cares about this return value
-        if(workbenchStatePath == null) {
-			return false;
-		}
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-        Reader reader = null;
-        try {
-            // Get the resource types
-            String xmlString = store.getString(IPreferenceConstants.RESOURCES);
-            if (xmlString == null || xmlString.length() == 0) {
-                FileInputStream stream = new FileInputStream(workbenchStatePath
-                        .append(IWorkbenchConstants.RESOURCE_TYPE_FILE_NAME)
-                        .toOSString());
-                reader = new BufferedReader(new InputStreamReader(stream,
-                        "utf-8")); //$NON-NLS-1$
-            } else {
-                reader = new StringReader(xmlString);
-            }
-            // Read the defined resources into the table
-            readResources(editorTable, reader);
-        } catch (IOException e) {
-            try {
-                if (reader != null) {
-					reader.close();
-				}
-            } catch (IOException ex) {
-                ex.printStackTrace();
-            }
-            MessageDialog.openError((Shell) null, WorkbenchMessages.EditorRegistry_errorTitle,
-                    WorkbenchMessages.EditorRegistry_errorMessage);
-            return false;
-        } catch (WorkbenchException e) {
-            ErrorDialog.openError((Shell) null, WorkbenchMessages.EditorRegistry_errorTitle,
-                    WorkbenchMessages.EditorRegistry_errorMessage,
-                    e.getStatus());
-            return false;
-        }
-        return true;
-
-    }
-
-    /**
-     * Load the serialized resource associations Return true if the operation
-     * was successful, false otherwise
-     */
-    private boolean loadAssociations() {
-        Map editorTable = new HashMap();
-        if (!readEditors(editorTable)) {
-            return false;
-        }
-        return readResources(editorTable);
-    }
-
-    /**
-     * Return a friendly version of the given key suitable for use in the editor
-     * map.
-     */
-    private String mappingKeyFor(String type) {
-        // keep everyting lower case for case-sensitive platforms
-        return type.toLowerCase();
-    }
-
-    /**
-     * Return a key that combines the file's name and extension of the given
-     * mapping
-     * 
-     * @param mapping the mapping to generate a key for
-     */
-    private String mappingKeyFor(FileEditorMapping mapping) {
-        return mappingKeyFor(mapping.getName()
-                + (mapping.getExtension().length() == 0 ? "" : "." + mapping.getExtension())); //$NON-NLS-1$ //$NON-NLS-2$
-    }
-
-    /**
-     * Rebuild the editor map
-     */
-    private void rebuildEditorMap() {
-        rebuildInternalEditorMap();
-        addExternalEditorsToEditorMap();
-    }
-
-    /**
-     * Rebuild the internal editor mapping.
-     */
-    private void rebuildInternalEditorMap() {
-        Iterator itr = null;
-        IEditorDescriptor desc = null;
-
-        // Allocate a new map.
-        mapIDtoEditor = initialIdToEditorMap(mapIDtoEditor.size());
-
-        // Add plugin editors.
-        itr = sortedEditorsFromPlugins.iterator();
-        while (itr.hasNext()) {
-            desc = (IEditorDescriptor) itr.next();
-            mapIDtoEditor.put(desc.getId(), desc);
-        }
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public void removePropertyListener(IPropertyListener l) {
-        removeListenerObject(l);
-    }
-
-    /**
-     * Save the registry to the filesystem by serializing the current resource
-     * associations.
-     */
-    public void saveAssociations() {
-        //Save the resource type descriptions
-        List editors = new ArrayList();
-        IPreferenceStore store = WorkbenchPlugin.getDefault()
-                .getPreferenceStore();
-
-        XMLMemento memento = XMLMemento
-                .createWriteRoot(IWorkbenchConstants.TAG_EDITORS);
-        memento.putString(IWorkbenchConstants.TAG_VERSION, "3.1"); //$NON-NLS-1$
-        FileEditorMapping maps[] = typeEditorMappings.userMappings();
-        for (int mapsIndex = 0; mapsIndex < maps.length; mapsIndex++) {
-            FileEditorMapping type = maps[mapsIndex];
-            IMemento editorMemento = memento
-                    .createChild(IWorkbenchConstants.TAG_INFO);
-            editorMemento.putString(IWorkbenchConstants.TAG_NAME, type
-                    .getName());
-            editorMemento.putString(IWorkbenchConstants.TAG_EXTENSION, type
-                    .getExtension());
-            IEditorDescriptor[] editorArray = type.getEditors();
-            for (int i = 0; i < editorArray.length; i++) {
-                EditorDescriptor editor = (EditorDescriptor) editorArray[i];
-                if (!editors.contains(editor)) {
-                    editors.add(editor);
-                }
-                IMemento idMemento = editorMemento
-                        .createChild(IWorkbenchConstants.TAG_EDITOR);
-                idMemento.putString(IWorkbenchConstants.TAG_ID, editorArray[i]
-                        .getId());
-            }
-            editorArray = type.getDeletedEditors();
-            for (int i = 0; i < editorArray.length; i++) {
-                EditorDescriptor editor = (EditorDescriptor) editorArray[i];
-                if (!editors.contains(editor)) {
-                    editors.add(editor);
-                }
-                IMemento idMemento = editorMemento
-                        .createChild(IWorkbenchConstants.TAG_DELETED_EDITOR);
-                idMemento.putString(IWorkbenchConstants.TAG_ID, editorArray[i]
-                        .getId());
-            }
-            editorArray = type.getDeclaredDefaultEditors();
-            for (int i = 0; i < editorArray.length; i++) {
-                EditorDescriptor editor = (EditorDescriptor) editorArray[i];
-                if (!editors.contains(editor)) {
-                    editors.add(editor);
-                }
-                IMemento idMemento = editorMemento
-                        .createChild(IWorkbenchConstants.TAG_DEFAULT_EDITOR);
-                idMemento.putString(IWorkbenchConstants.TAG_ID, editorArray[i]
-                        .getId());
-            }
-        }
-        Writer writer = null;
-        try {
-            writer = new StringWriter();
-            memento.save(writer);
-            writer.close();
-            store.setValue(IPreferenceConstants.RESOURCES, writer.toString());
-        } catch (IOException e) {
-            try {
-                if (writer != null) {
-					writer.close();
-				}
-            } catch (IOException ex) {
-                ex.printStackTrace();
-            }
-            MessageDialog.openError((Shell) null, "Saving Problems", //$NON-NLS-1$
-                    "Unable to save resource associations."); //$NON-NLS-1$
-            return;
-        }
-
-        memento = XMLMemento.createWriteRoot(IWorkbenchConstants.TAG_EDITORS);
-        Iterator itr = editors.iterator();
-        while (itr.hasNext()) {
-            EditorDescriptor editor = (EditorDescriptor) itr.next();
-            IMemento editorMemento = memento
-                    .createChild(IWorkbenchConstants.TAG_DESCRIPTOR);
-            editor.saveValues(editorMemento);
-        }
-        writer = null;
-        try {
-            writer = new StringWriter();
-            memento.save(writer);
-            writer.close();
-            store.setValue(IPreferenceConstants.EDITORS, writer.toString());
-        } catch (IOException e) {
-            try {
-                if (writer != null) {
-					writer.close();
-				}
-            } catch (IOException ex) {
-                ex.printStackTrace();
-            }
-            MessageDialog.openError((Shell) null,
-                    "Error", "Unable to save resource associations."); //$NON-NLS-1$ //$NON-NLS-2$
-            return;
-        }
-    }
-
-    /**
-     * Set the collection of FileEditorMappings. The given collection is
-     * converted into the internal hash table for faster lookup Each mapping
-     * goes from an extension to the collection of editors that work on it. This
-     * operation will rebuild the internal editor mappings.
-     * 
-     * @param newResourceTypes
-     *            te new file editor mappings.
-     */
-    public void setFileEditorMappings(FileEditorMapping[] newResourceTypes) {
-        typeEditorMappings = new EditorMap();
-        for (int i = 0; i < newResourceTypes.length; i++) {
-            FileEditorMapping mapping = newResourceTypes[i];
-            typeEditorMappings.put(mappingKeyFor(mapping), mapping);
-        }
-        extensionImages = new HashMap();
-        rebuildEditorMap();
-        firePropertyChange(PROP_CONTENTS);
-    }
-
-    /*
-     * (non-Javadoc) Method declared on IEditorRegistry.
-     */
-    public void setDefaultEditor(String fileName, String editorId) {
-        EditorDescriptor desc = (EditorDescriptor) findEditor(editorId);
-        FileEditorMapping[] mapping = getMappingForFilename(fileName);
-        if (mapping[0] != null) {
-			mapping[0].setDefaultEditor(desc);
-		}
-        if (mapping[1] != null) {
-			mapping[1].setDefaultEditor(desc);
-		}
-    }
-
-    /**
-     * Alphabetically sort the internal editors.
-     * 
-     * @see #comparer
-     */
-    private Object[] sortEditors(List unsortedList) {
-        Object[] array = new Object[unsortedList.size()];
-        unsortedList.toArray(array);
-
-        Collections.sort(Arrays.asList(array), comparer);
-        return array;
-    }
-
-    /**
-     * Alphabetically sort the internal editors.
-     * 
-     * @see #comparer
-     */
-    private void sortInternalEditors() {
-        Object[] array = sortEditors(sortedEditorsFromPlugins);
-        sortedEditorsFromPlugins = new ArrayList();
-        for (int i = 0; i < array.length; i++) {
-            sortedEditorsFromPlugins.add(array[i]);
-        }
-    }
-
-    /**
-     * Map of FileEditorMapping (extension to FileEditorMapping) Uses two
-     * java.util.HashMap: one keeps the default which are set by the plugins and
-     * the other keeps the changes made by the user through the preference page.
-     */
-    private static class EditorMap {
-        HashMap defaultMap = new HashMap();
-
-        HashMap map = new HashMap();
-
-        /**
-         * Put a default mapping into the editor map.
-         * 
-         * @param key the key to set
-         * @param value the value to associate
-         */
-        public void putDefault(String key, FileEditorMapping value) {
-            defaultMap.put(key, value);
-        }
-
-        /**
-         * Put a mapping into the user editor map.
-         * 
-         * @param key the key to set
-         * @param value the value to associate
-         */
-        public void put(String key, FileEditorMapping value) {
-            Object result = defaultMap.get(key);
-            if (value.equals(result)) {
-				map.remove(key);
-			} else {
-				map.put(key, value);
-			}
-        }
-
-        /**
-         * Return the mapping associated to the key. First searches user
-         * map, and then falls back to the default map if there is no match. May
-         * return <code>null</code>
-         * 
-         * @param key
-         *            the key to search for
-         * @return the mapping associated to the key or <code>null</code>
-         */
-        public FileEditorMapping get(String key) {
-            Object result = map.get(key);
-            if (result == null) {
-				result = defaultMap.get(key);
-			}
-            return (FileEditorMapping) result;
-        }
-
-        /**
-         * Return all mappings. This will return default mappings overlayed with
-         * user mappings.
-         * 
-         * @return the mappings
-         */
-        public FileEditorMapping[] allMappings() {
-            HashMap merge = (HashMap) defaultMap.clone();
-            merge.putAll(map);
-            Collection values = merge.values();
-            FileEditorMapping result[] = new FileEditorMapping[values.size()];
-            return (FileEditorMapping[]) values.toArray(result);
-        }
-
-        /**
-         * Return all user mappings.
-         * 
-         * @return the mappings
-         */
-        public FileEditorMapping[] userMappings() {
-            Collection values = map.values();
-            FileEditorMapping result[] = new FileEditorMapping[values.size()];
-            return (FileEditorMapping[]) values.toArray(result);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IEditorRegistry#isSystemInPlaceEditorAvailable(String)
-     */
-    public boolean isSystemInPlaceEditorAvailable(String filename) {
-        return ComponentSupport.inPlaceEditorAvailable(filename);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IEditorRegistry#isSystemExternalEditorAvailable(String)
-     */
-    public boolean isSystemExternalEditorAvailable(String filename) {
-        int nDot = filename.lastIndexOf('.');
-        if (nDot >= 0) {
-            String strName = filename.substring(nDot);
-            return Program.findProgram(strName) != null;
-        }
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.IEditorRegistry#getSystemExternalEditorImageDescriptor(java.lang.String)
-     */
-    public ImageDescriptor getSystemExternalEditorImageDescriptor(
-            String filename) {
-        Program externalProgram = null;
-        int extensionIndex = filename.lastIndexOf('.');
-        if (extensionIndex >= 0) {
-            externalProgram = Program.findProgram(filename
-                    .substring(extensionIndex));
-        }
-        if (externalProgram == null) {
-            return null;
-        } 
-        
-        return new ExternalProgramImageDescriptor(externalProgram);
-    }
-    
-    /**
-     * Removes the entry with the value of the editor descriptor from the given
-     * map. If the descriptor is the last descriptor in a given
-     * FileEditorMapping then the mapping is removed from the map.
-     * 
-     * @param map
-     *            the map to search
-     * @param desc
-     *            the descriptor value to remove
-     */
-    private void removeEditorFromMapping(HashMap map, IEditorDescriptor desc) {
-        Iterator iter = map.values().iterator();
-        FileEditorMapping mapping;
-        IEditorDescriptor[] editors;
-        while (iter.hasNext()) {
-            mapping = (FileEditorMapping) iter.next();
-            editors = mapping.getEditors();
-            for (int i = 0; i < editors.length; i++) {
-				if (editors[i] == desc) {
-                    mapping.removeEditor((EditorDescriptor) editors[i]);
-                    break;
-                }
-			}
-            if (editors.length <= 0) {
-                map.remove(mapping);
-                break;
-            }
-        }
-    }
-
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-     */
-    public void removeExtension(IExtension source, Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            if (objects[i] instanceof EditorDescriptor) {
-                EditorDescriptor desc = (EditorDescriptor) objects[i];
-
-                sortedEditorsFromPlugins.remove(desc);
-                mapIDtoEditor.values().remove(desc);
-                removeEditorFromMapping(typeEditorMappings.defaultMap, desc);
-                removeEditorFromMapping(typeEditorMappings.map, desc);
-				//TODO remove from content type mappings
-            }
-
-        }
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-        EditorRegistryReader eReader = new EditorRegistryReader();
-        IConfigurationElement[] elements = extension.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-            String id = elements[i].getAttribute(IWorkbenchConstants.TAG_ID);
-            if (id != null && findEditor(id) != null) {
-				continue;
-			}
-            eReader.readElement(this, elements[i]);
-        }
-	}
-
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_EDITOR);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IEditorRegistry#getDefaultEditor(java.lang.String, org.eclipse.core.runtime.content.IContentType)
-	 */
-	public IEditorDescriptor getDefaultEditor(String fileName, IContentType contentType) {
-        return getEditorForContentType(fileName, contentType);
-	}
-
-	/**
-	 * Return the editor for a file with a given content type.
-	 * 
-	 * @param filename the file name
-	 * @param contentType the content type
-	 * @return the editor for a file with a given content type
-	 * @since 3.1
-	 */
-	private IEditorDescriptor getEditorForContentType(String filename,
-			IContentType contentType) {
-		IEditorDescriptor desc = null;
-		Object[] contentTypeResults = findRelatedObjects(contentType, filename, relatedRegistry);
-		if (contentTypeResults != null && contentTypeResults.length > 0) {
-			desc = (IEditorDescriptor) contentTypeResults[0];
-		}
-		return desc;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IEditorRegistry#getEditors(java.lang.String, org.eclipse.core.runtime.content.IContentType)
-	 */
-	public IEditorDescriptor[] getEditors(String fileName, IContentType contentType) {
-		return findRelatedObjects(contentType, fileName, relatedRegistry);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IEditorRegistry#getImageDescriptor(java.lang.String, org.eclipse.core.runtime.content.IContentType)
-	 */
-	public ImageDescriptor getImageDescriptor(String filename, IContentType contentType) {
-        if (filename == null) {
-			return getDefaultImage();
-		}
-
-		if (contentType != null) {
-			IEditorDescriptor desc = getEditorForContentType(filename, contentType);
-			if (desc != null) {
-				ImageDescriptor anImage = (ImageDescriptor) extensionImages.get(desc);	
-				if (anImage != null) {
-					return anImage;
-				}
-				anImage = desc.getImageDescriptor();
-				extensionImages.put(desc, anImage);
-				return anImage;				
-			}
-		}
-        // Lookup in the cache first...
-        String key = mappingKeyFor(filename);
-        ImageDescriptor anImage = (ImageDescriptor) extensionImages.get(key);
-        if (anImage != null) {
-			return anImage;
-		}
-
-        // See if we have a mapping for the filename or extension
-        FileEditorMapping[] mapping = getMappingForFilename(filename);
-        for (int i = 0; i < 2; i++) {
-            if (mapping[i] != null) {
-                // Lookup in the cache first...
-                String mappingKey = mappingKeyFor(mapping[i]);
-                ImageDescriptor mappingImage = (ImageDescriptor) extensionImages
-                        .get(key);
-                if (mappingImage != null) {
-					return mappingImage;
-				}
-                // Create it and cache it
-                IEditorDescriptor editor = mapping[i].getDefaultEditor();
-                if (editor != null) {
-                    mappingImage = editor.getImageDescriptor();
-                    extensionImages.put(mappingKey, mappingImage);
-                    return mappingImage;
-                }
-            }
-        }
-
-        // Nothing - time to look externally for the icon
-        anImage = getSystemExternalEditorImageDescriptor(filename);
-        if (anImage == null) {
-			anImage = getDefaultImage();
-		}
-        //	for dynamic UI - comment out the next line
-        //extensionImages.put(key, anImage);
-        return anImage;
-
-	}
-    
-    /**
-	 * Find objects related to the content type.
-	 * 
-	 * This method is temporary and exists only to back us off of the
-	 * soon-to-be-removed IContentTypeManager.IRelatedRegistry API.
-	 * 
-	 * @param type
-	 * @param fileName
-	 * @param registry
-	 * @return the related objects
-	 */
-	private IEditorDescriptor [] findRelatedObjects(IContentType type, String fileName,
-			RelatedRegistry registry) {
-		List allRelated = new ArrayList();
-		List nonDefaultFileEditors = new ArrayList();
-		IEditorDescriptor [] related;
-		
-		if (fileName != null) {
-			FileEditorMapping mapping = getMappingFor(fileName);
-			if (mapping != null) {
-				// backwards compatibility - add editors flagged as "default"
-				related = mapping.getDeclaredDefaultEditors();
-				for (int i = 0; i < related.length; i++) {
-					// we don't want to return duplicates
-					if (!allRelated.contains(related[i])) {
-						// if it's not filtered, add it to the list
-						if (!WorkbenchActivityHelper.filterItem(related[i])) {
-							allRelated.add(related[i]);
-						}
-					}
-				}
-				
-				// add all filename editors to the nonDefaultList
-				// we'll later try to add them all after content types are resolved
-				// duplicates (ie: default editors) will be ignored
-				nonDefaultFileEditors.addAll(Arrays.asList(mapping.getEditors()));
-			}
-			
-			int index = fileName.lastIndexOf('.');
-			if (index > -1) {
-				String extension = "*" + fileName.substring(index); //$NON-NLS-1$
-				mapping = getMappingFor(extension);
-				if (mapping != null) {
-					related = mapping.getDeclaredDefaultEditors();
-					for (int i = 0; i < related.length; i++) {
-						// we don't want to return duplicates
-						if (!allRelated.contains(related[i])) {
-							// if it's not filtered, add it to the list
-							if (!WorkbenchActivityHelper.filterItem(related[i])) {
-								allRelated.add(related[i]);
-							}
-						}
-					}
-					nonDefaultFileEditors.addAll(Arrays.asList(mapping.getEditors()));
-				}
-			}
-		}
-		
-		if (type != null) {
-			// now add any objects directly related to the content type
-			related = registry.getRelatedObjects(type);
-			for (int i = 0; i < related.length; i++) {
-				// we don't want to return duplicates
-				if (!allRelated.contains(related[i])) {
-					// if it's not filtered, add it to the list
-					if (!WorkbenchActivityHelper.filterItem(related[i])) {
-						allRelated.add(related[i]);
-					}
-				}
-			}
-
-		}
-
-		if (type != null) {
-			// now add any indirectly related objects, walking up the content type hierarchy 
-			while ((type = type.getBaseType()) != null) {
-				related = registry.getRelatedObjects(type);
-				for (int i = 0; i < related.length; i++) {
-					// we don't want to return duplicates
-					if (!allRelated.contains(related[i])) {
-						// if it's not filtered, add it to the list
-						if (!WorkbenchActivityHelper.filterItem(related[i])) {
-							allRelated.add(related[i]);
-						}
-					}
-				}
-			}
-		}
-			
-		// add all non-default editors to the list
-		for (Iterator i = nonDefaultFileEditors.iterator(); i.hasNext();) {
-			IEditorDescriptor editor = (IEditorDescriptor) i.next();
-			if (!allRelated.contains(editor) && !WorkbenchActivityHelper.filterItem(editor)) {
-				allRelated.add(editor);
-			}
-		}
-		
-		return (IEditorDescriptor []) allRelated.toArray(new IEditorDescriptor [allRelated
-				.size()]);
-	}
-
-	/**
-	 * Return the editors bound to this content type, either directly or indirectly.
-	 * 
-	 * @param type the content type to check
-	 * @return the editors
-	 * @since 3.1
-     *
-     * TODO: this should be rolled in with the above findRelatedObjects code
-	 */
-	public IEditorDescriptor [] getEditorsForContentType(IContentType type) {
-		ArrayList allRelated = new ArrayList();
-		if (type == null) {
-			return new IEditorDescriptor [0];
-		}
-		
-		Object [] related = relatedRegistry.getRelatedObjects(type);
-		for (int i = 0; i < related.length; i++) {	
-			// we don't want to return duplicates
-			if (!allRelated.contains(related[i])) {
-				// if it's not filtered, add it to the list
-				if (!WorkbenchActivityHelper.filterItem(related[i])) {
-					allRelated.add(related[i]);
-				}
-				
-			}
-		}
-		
-		// now add any indirectly related objects, walking up the content type hierarchy 
-		while ((type = type.getBaseType()) != null) {
-			related = relatedRegistry.getRelatedObjects(type);
-			for (int i = 0; i < related.length; i++) {
-				// we don't want to return duplicates
-				if (!allRelated.contains(related[i])) {
-					// if it's not filtered, add it to the list
-					if (!WorkbenchActivityHelper.filterItem(related[i])) {
-						allRelated.add(related[i]);
-					}
-				}
-			}
-		}
-		
-		return (IEditorDescriptor[]) allRelated.toArray(new IEditorDescriptor[allRelated.size()]);
-	}
-	
-	/**
-	 * Get filemappings for all defined filetypes, including those defined by content type.
-	 * 
-	 * @return the filetypes
-	 * @since 3.1
-	 */
-	public IFileEditorMapping [] getUnifiedMappings() {
-        IFileEditorMapping[] standardMappings = PlatformUI.getWorkbench()
-                .getEditorRegistry().getFileEditorMappings();
-        
-        List allMappings = new ArrayList(Arrays.asList(standardMappings));
-        // mock-up content type extensions into IFileEditorMappings
-        IContentType [] contentTypes = Platform.getContentTypeManager().getAllContentTypes();
-        for (int i = 0; i < contentTypes.length; i++) {
-			IContentType type = contentTypes[i];
-			String [] extensions = type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
-			for (int j = 0; j < extensions.length; j++) {
-				String extension = extensions[j];
-				boolean found = false;
-				for (Iterator k = allMappings.iterator(); k.hasNext();) {
-					IFileEditorMapping mapping = (IFileEditorMapping) k.next();
-					if ("*".equals(mapping.getName()) && extension.equals(mapping.getExtension())) { //$NON-NLS-1$
-						found = true;
-						break;
-					}
-				}
-				if (!found) {
-					MockMapping mockMapping = new MockMapping(type, "*", extension); //$NON-NLS-1$
-					allMappings.add(mockMapping);
-				}
-			}
-		
-			String [] filenames = type.getFileSpecs(IContentType.FILE_NAME_SPEC);
-			for (int j = 0; j < filenames.length; j++) {
-				String wholename = filenames[j];
-				int idx = wholename.indexOf('.');				
-				String name = idx == -1 ? wholename : wholename.substring(0, idx);
-				String extension = idx == -1 ? "" : wholename.substring(idx + 1); //$NON-NLS-1$
-				
-				boolean found = false;
-				for (Iterator k = allMappings.iterator(); k.hasNext();) {
-					IFileEditorMapping mapping = (IFileEditorMapping) k.next();
-					if (name.equals(mapping.getName()) && extension.equals(mapping.getExtension())) {
-						found = true;
-						break;
-					}
-				}
-				if (!found) {
-					MockMapping mockMapping = new MockMapping(type, name, extension);
-					allMappings.add(mockMapping);
-				}
-			}
-		}
-        
-        return (IFileEditorMapping []) allMappings
-				.toArray(new IFileEditorMapping [allMappings.size()]);
-	}
-	
-}
-
-
-class MockMapping implements IFileEditorMapping {
-
-	private IContentType contentType;
-	private String extension;
-	private String filename;
-	
-	MockMapping(IContentType type, String name, String ext) {
-		this.contentType = type;
-		this.filename = name;
-		this.extension = ext;
-	}
-
-	public IEditorDescriptor getDefaultEditor() {
-		IEditorDescriptor[] candidates = ((EditorRegistry) PlatformUI
-				.getWorkbench().getEditorRegistry())
-				.getEditorsForContentType(contentType);
-		if (candidates.length == 0
-				|| WorkbenchActivityHelper.restrictUseOf(candidates[0])) {
-			return null;
-		}
-		return candidates[0];
-	}
-
-	public IEditorDescriptor[] getEditors() {
-		IEditorDescriptor[] editorsForContentType = ((EditorRegistry) PlatformUI
-				.getWorkbench().getEditorRegistry())
-				.getEditorsForContentType(contentType);
-		return (IEditorDescriptor[]) WorkbenchActivityHelper
-				.restrictArray(editorsForContentType);
-	}
-
-	public IEditorDescriptor[] getDeletedEditors() {
-		return new IEditorDescriptor[0];
-	}
-
-	public String getExtension() {
-		return extension;
-	}
-
-	public ImageDescriptor getImageDescriptor() {
-		IEditorDescriptor editor = getDefaultEditor();
-		if (editor == null) {
-			return WorkbenchImages
-					.getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
-		}
-
-		return editor.getImageDescriptor();
-	}
-
-	public String getLabel() {
-		return filename + '.' + extension; 
-	}
-
-	public String getName() {
-		return filename;
-    }	
-
-    /* (non-Javadoc)
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object obj) {
-		if (this == obj) {
-			return true;
-		}
-
-		if (!(obj instanceof MockMapping)) {
-			return false;
-		}
-
-		MockMapping mapping = (MockMapping) obj;
-		if (!this.filename.equals(mapping.filename)) {
-			return false;
-		}
-
-		if (!this.extension.equals(mapping.extension)) {
-			return false;
-		}
-
-		if (!Util.equals(this.getEditors(), mapping.getEditors())) {
-			return false;
-		}
-		return Util.equals(this.getDeletedEditors(), mapping
-				.getDeletedEditors());
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistryReader.java
deleted file mode 100644
index a526468..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistryReader.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This class is used to read resource editor registry descriptors from
- * the platform registry.
- */
-public class EditorRegistryReader extends RegistryReader {
-
-    private EditorRegistry editorRegistry;
-
-    /**
-     * Get the editors that are defined in the registry
-     * and add them to the ResourceEditorRegistry
-     *
-     * Warning:
-     * The registry must be passed in because this method is called during the
-     * process of setting up the registry and at this time it has not been
-     * safely setup with the plugin.
-     */
-    protected void addEditors(EditorRegistry registry) {
-        IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
-        this.editorRegistry = registry;
-        readRegistry(extensionRegistry, PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_EDITOR);
-    }
-
-    /**
-     * Implementation of the abstract method that
-     * processes one configuration element.
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        if (!element.getName().equals(IWorkbenchRegistryConstants.TAG_EDITOR)) {
-			return false;
-		}
-
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id == null) {
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_ID);
-            return true;
-        }
-        
-        EditorDescriptor editor = new EditorDescriptor(id, element);
-        
-        List extensionsVector = new ArrayList();
-        List filenamesVector = new ArrayList();
-		List contentTypeVector = new ArrayList();
-        boolean defaultEditor = false;
-
-        // Get editor name (required field).
-        if (element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME) == null) {
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_NAME);
-            return true;
-        }
-        
-        // Get target extensions (optional field)
-        String extensionsString = element.getAttribute(IWorkbenchRegistryConstants.ATT_EXTENSIONS);
-        if (extensionsString != null) {
-            StringTokenizer tokenizer = new StringTokenizer(extensionsString,
-                    ",");//$NON-NLS-1$
-            while (tokenizer.hasMoreTokens()) {
-                extensionsVector.add(tokenizer.nextToken().trim());
-            }
-        }
-        String filenamesString = element.getAttribute(IWorkbenchRegistryConstants.ATT_FILENAMES);
-        if (filenamesString != null) {
-            StringTokenizer tokenizer = new StringTokenizer(filenamesString,
-                    ",");//$NON-NLS-1$
-            while (tokenizer.hasMoreTokens()) {
-                filenamesVector.add(tokenizer.nextToken().trim());
-            }
-        }
-        
-		IConfigurationElement [] bindings = element.getChildren(IWorkbenchRegistryConstants.TAG_CONTENT_TYPE_BINDING);
-		for (int i = 0; i < bindings.length; i++) {
-			String contentTypeId = bindings[i].getAttribute(IWorkbenchRegistryConstants.ATT_CONTENT_TYPE_ID);
-			if (contentTypeId == null) {
-				continue;
-			}
-			contentTypeVector.add(contentTypeId);
-		}
-		
-        // Is this the default editor?
-        String def = element.getAttribute(IWorkbenchRegistryConstants.ATT_DEFAULT);
-        if (def != null) {
-			defaultEditor = Boolean.valueOf(def).booleanValue();
-		}
-
-        // Add the editor to the manager.	
-        editorRegistry.addEditorFromPlugin(editor, extensionsVector,
-                filenamesVector, contentTypeVector, defaultEditor);
-        return true;
-    }
-
-
-    /**
-     * @param editorRegistry
-     * @param element
-     */
-    public void readElement(EditorRegistry editorRegistry,
-            IConfigurationElement element) {
-        this.editorRegistry = editorRegistry;
-        readElement(element);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
deleted file mode 100644
index 3a242ca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osgi.util.TextProcessor;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IFileEditorMapping;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * Implementation of IFileEditorMapping.
- * 
- */
-public class FileEditorMapping extends Object implements IFileEditorMapping, 
-    Cloneable {
-	
-	private static final String STAR = "*"; //$NON-NLS-1$ 
-	private static final String DOT = ".";	//$NON-NLS-1$ 
-	
-    private String name = STAR;
-
-    private String extension;
-
-    // Collection of EditorDescriptor, where the first one
-    // if considered the default one.
-    private List editors = new ArrayList(1);
-
-    private List deletedEditors = new ArrayList(1);
-
-	private List declaredDefaultEditors = new ArrayList(1);
-
-    /**
-     *  Create an instance of this class.
-     *
-     *  @param extension java.lang.String
-     */
-    public FileEditorMapping(String extension) {
-        this(STAR, extension); 
-    }
-
-    /**
-     *  Create an instance of this class.
-     *
-     *  @param name java.lang.String
-     *  @param extension java.lang.String
-     */
-    public FileEditorMapping(String name, String extension) {
-        super();
-        if (name == null || name.length() < 1) {
-            setName(STAR);
-        } else {
-			setName(name);
-		}
-        if (extension == null) {
-			setExtension("");//$NON-NLS-1$
-		} else {
-			setExtension(extension);
-		}
-    }
-
-    /**
-     * Add the given editor to the list of editors registered.
-     * 
-     * @param editor the editor to add
-     */
-    public void addEditor(EditorDescriptor editor) {
-        editors.add(editor);
-        deletedEditors.remove(editor);
-    }
-
-    /**
-     * Clone the receiver.
-     */
-    public Object clone() {
-        try {
-            FileEditorMapping clone = (FileEditorMapping) super.clone();
-            clone.editors = (List) ((ArrayList) editors).clone();
-            return clone;
-        } catch (CloneNotSupportedException e) {
-            return null;
-        }
-    }
-	
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (this == obj) {
-			return true;
-		}
-        if (!(obj instanceof FileEditorMapping)) {
-			return false;
-		}
-        FileEditorMapping mapping = (FileEditorMapping) obj;
-        if (!this.name.equals(mapping.name)) {
-			return false;
-		}
-        if (!this.extension.equals(mapping.extension)) {
-			return false;
-		}
-
-        if (!compareList(this.editors, mapping.editors)) {
-			return false;
-		}
-        return compareList(this.deletedEditors, mapping.deletedEditors);
-    }
-
-    /**
-     * Compare the editor ids from both lists and return true if they
-     * are equals.
-     */
-    private boolean compareList(List l1, List l2) {
-        if (l1.size() != l2.size()) {
-			return false;
-		}
-
-        Iterator i1 = l1.iterator();
-        Iterator i2 = l2.iterator();
-        while (i1.hasNext() && i2.hasNext()) {
-            Object o1 = i1.next();
-            Object o2 = i2.next();
-            if (!(o1 == null ? o2 == null : o1.equals(o2))) {
-				return false;
-			}
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public IEditorDescriptor getDefaultEditor() {
-
-        if (editors.size() == 0 || WorkbenchActivityHelper.restrictUseOf(editors.get(0))) {
-			return null;
-		}
-        
-        return (IEditorDescriptor) editors.get(0);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public IEditorDescriptor[] getEditors() {
-    	Collection descs = WorkbenchActivityHelper.restrictCollection(editors, new ArrayList());
-		return (IEditorDescriptor[]) descs.toArray(new IEditorDescriptor[descs.size()]);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public IEditorDescriptor[] getDeletedEditors() {
-        IEditorDescriptor[] array = new IEditorDescriptor[deletedEditors.size()];
-        deletedEditors.toArray(array);
-        return array;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public String getExtension() {
-        return extension;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public ImageDescriptor getImageDescriptor() {
-        IEditorDescriptor editor = getDefaultEditor();
-        if (editor == null) {
-            return WorkbenchImages
-                    .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
-        } 
-        return editor.getImageDescriptor();   
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public String getLabel() {
-        return TextProcessor.process(name + (extension.length() == 0 ? "" : DOT + extension), STAR + DOT); 	//$NON-NLS-1$  
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IFileEditorMapping.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Remove the given editor from the set of editors registered.
-     * 
-     * @param editor the editor to remove
-     */
-    public void removeEditor(EditorDescriptor editor) {
-        editors.remove(editor);
-        deletedEditors.add(editor);
-        declaredDefaultEditors.remove(editor);
-    }
-
-    /**
-     * Set the default editor registered for file type
-     * described by this mapping.
-     * 
-     * @param editor the editor to be set as default
-     */
-    public void setDefaultEditor(EditorDescriptor editor) {
-        editors.remove(editor);
-        editors.add(0, editor);
-        declaredDefaultEditors.remove(editor);
-        declaredDefaultEditors.add(0, editor);
-    }
-
-    /**
-     * Set the collection of all editors (EditorDescriptor)
-     * registered for the file type described by this mapping.
-     * Typically an editor is registered either through a plugin or explicitly by
-     * the user modifying the associations in the preference pages.
-     * This modifies the internal list to share the passed list.
-     * (hence the clear indication of list in the method name)
-     * 
-     * @param newEditors the new list of associated editors
-     */
-    public void setEditorsList(List newEditors) {
-        editors = newEditors;       
-        declaredDefaultEditors.retainAll(newEditors);
-    }
-
-    /**
-     * Set the collection of all editors (EditorDescriptor)
-     * formally registered for the file type described by this mapping 
-     * which have been deleted by the user.
-     * This modifies the internal list to share the passed list.
-     * (hence the clear indication of list in the method name)
-     * 
-     * @param newDeletedEditors the new list of associated (but deleted) editors
-     */
-    public void setDeletedEditorsList(List newDeletedEditors) {
-        deletedEditors = newDeletedEditors;
-    }
-
-    /**
-     * Set the file's extension.
-     * 
-     * @param extension the file extension for this mapping
-     */
-    public void setExtension(String extension) {
-        this.extension = extension;
-    }
-
-    /**
-     * Set the file's name.
-     * 
-     * @param name the file name for this mapping
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-	 * Get the editors that have been declared as default. This may be via plugin
-	 * declarations or the preference page.
-	 * 
-	 * @return the editors the default editors
-	 * @since 3.1
-	 */
-	public IEditorDescriptor [] getDeclaredDefaultEditors() {
-		Collection descs = WorkbenchActivityHelper.restrictCollection(declaredDefaultEditors, new ArrayList());
-		return (IEditorDescriptor []) descs.toArray(new IEditorDescriptor[descs.size()]);
-	}
-	
-	/**
-	 * Return whether the editor is declared default.
-	 * If this is EditorDescriptor fails the ExpressionsCheck it will always
-	 * return <code>false</code>, even if it's the original default editor.
-	 * 
-	 * @param editor the editor to test
-	 * @return whether the editor is declared default
-	 * @since 3.1
-	 */
-	public boolean isDeclaredDefaultEditor (IEditorDescriptor editor) {
-		return declaredDefaultEditors.contains(editor)
-				&& !WorkbenchActivityHelper.restrictUseOf(editor);
-	}
-
-	/**
-	 * Set the default editors for this mapping.
-	 * 
-	 * @param defaultEditors the editors
-	 * @since 3.1
-	 */
-	public void setDefaultEditors(List defaultEditors) {
-		declaredDefaultEditors = defaultEditors;		
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSet.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSet.java
deleted file mode 100644
index c3d85cf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSet.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * An action set is responsible for the creation of actions.
- * The end user may add these actions to a workbench page menu and tool bar
- * if they are deemed useful to the particular task at hand.
- * <p>
- * [Issue: This interface is not exposed in API, but time may
- * demonstrate that it should be.  For the short term leave it be.
- * In the long term its use should be re-evaluated. ]
- * </p>
- * <p>
- * In the current workbench implementation the desktop provides the
- * only implementation of this class in PluginActionSet.  So, it may
- * be useful to phase this interface out at some point.  PluginActionSet
- * provides a lazy load strategy, where the actions are declared in
- * XML and represented at runtime by a PluginAction.  
- * </p>
- */
-public interface IActionSet {
-    /**
-     * Disposes of this action set.
-     * <p>
-     * Implementation should remove any references to the window and action bars 
-     * created in the <code>init</code>.
-     * </p>
-     * <p>
-     * [Issue: Should this say: "...should remove anything they contributed
-     *  in <code>init</code>? Or is most of the withdrawal done automatically?
-     * ]
-     * </p>
-     */
-    public void dispose();
-
-    /**
-     * Initializes this action set, which is expected to add it actions as required
-     * to the given workbench window and action bars.
-     *
-     * @param window the workbench window
-     * @param bars the action bars
-     */
-    public void init(IWorkbenchWindow window, IActionBars bars);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSetDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSetDescriptor.java
deleted file mode 100644
index 84cd05a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IActionSetDescriptor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-/**
- * A named set of actions which is defined as an extension to the workbench
- * via the standard workbench actions extension point
- * (<code>"org.eclipse.ui.workbenchActions"</code>). 
- * <p>
- * [Issue: This interface is not exposed in API, but time may
- * demonstrate that it should be.  For the short term leave it be.
- * In the long term its use should be re-evaluated. ]
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see ActionSetRegistry
- */
-public interface IActionSetDescriptor {
-    
-    /**
-     * Creates a new action set from this descriptor.
-     * <p>
-     * [Issue: Consider throwing WorkbenchException rather than CoreException.]
-     * </p>
-     *
-     * @return the new action set
-     * @exception CoreException if the action set cannot be created
-     */
-    public IActionSet createActionSet() throws CoreException;
-
-    /**
-     * Returns the description of this action set.
-     * This is the value of its <code>"description"</code> attribute.
-     *
-     * @return the description
-     */
-    public String getDescription();
-
-    /**
-     * Returns the id of this action set. 
-     * This is the value of its <code>"id"</code> attribute.
-     *
-     * @return the action set id
-     */
-    public String getId();
-
-    /**
-     * Returns the label of this action set. 
-     * This is the value of its <code>"label"</code> attribute.
-     *
-     * @return the label
-     */
-    public String getLabel();
-
-    /**
-     * Returns whether this action set is initially visible.
-     * 
-     * @return whether this action set is initially visible
-     */
-    public boolean isInitiallyVisible();
-
-    /**
-     * Sets whether this action set is initially visible.
-     * 
-     * @param visible whether the action set should be visible initially.
-     * @since 3.0
-     */
-    public void setInitiallyVisible(boolean visible);
-    
-    /**
-     * Returns the conconfigurationfig element.
-     * 
-     * @return the configuration element
-     * @since 3.1
-     */
-    public IConfigurationElement getConfigurationElement();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java
deleted file mode 100644
index 6ccd8bd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/IWorkbenchRegistryConstants.java
+++ /dev/null
@@ -1,1325 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Dan Rubel <dan_rubel@instantiations.com>
- *     - Fix for bug 11490 - define hidden view (placeholder for view) in plugin.xml    
- *     Markus Alexander Kuppe, Versant Corporation - bug #215797
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Interface containing various registry constants (tag and attribute names).
- * 
- * @since 3.1
- */
-public interface IWorkbenchRegistryConstants {
-
-	/**
-	 * Accelerator attribute. Value <code>accelerator</code>.
-	 */
-	public static String ATT_ACCELERATOR = "accelerator"; //$NON-NLS-1$
-
-	/**
-	 * Adaptable attribute. Value <code>adaptable</code>.
-	 */
-	public static String ATT_ADAPTABLE = "adaptable"; //$NON-NLS-1$
-
-	/**
-	 * Advisor id attribute. Value <code>triggerPointAdvisorId</code>.
-	 */
-	public static String ATT_ADVISORID = "triggerPointAdvisorId"; //$NON-NLS-1$
-
-	/**
-	 * Allow label update attribute. Value <code>allowLabelUpdate</code>.
-	 */
-	public static String ATT_ALLOW_LABEL_UPDATE = "allowLabelUpdate";//$NON-NLS-1$
-
-	/**
-	 * View multiple attribute. Value <code>allowMultiple</code>.
-	 */
-	public static String ATT_ALLOW_MULTIPLE = "allowMultiple"; //$NON-NLS-1$
-
-	/**
-	 * Attribute that specifies whether a view gets restored upon workbench restart. Value <code>restorable</code>.
-	 */
-	public static String ATT_RESTORABLE = "restorable"; //$NON-NLS-1$
-	
-	/**
-	 * Attribute that specifies whether a wizard is immediately capable of
-	 * finishing. Value <code>canFinishEarly</code>.
-	 */
-	public static String ATT_CAN_FINISH_EARLY = "canFinishEarly"; //$NON-NLS-1$
-
-	/**
-	 * The name of the category attribute, which appears on a command
-	 * definition.
-	 */
-	public static String ATT_CATEGORY = "category"; //$NON-NLS-1$
-
-	/**
-	 * Category id attribute. Value <code>categoryId</code>.
-	 */
-	public static String ATT_CATEGORY_ID = "categoryId"; //$NON-NLS-1$
-	
-	/**
-	 * The name of the attribute storing checkEnabled for the visibleWhen
-	 * element. Value <code>checkEnabled</code>.
-	 */
-	public static String ATT_CHECK_ENABLED = "checkEnabled"; //$NON-NLS-1$
-
-	/**
-	 * Class attribute. Value <code>class</code>.
-	 */
-	public static String ATT_CLASS = "class"; //$NON-NLS-1$
-
-	/**
-	 * Sticky view closable attribute. Value <code>closable</code>.
-	 */
-	public static String ATT_CLOSEABLE = "closeable"; //$NON-NLS-1$    
-
-	/**
-	 * Color factory attribute. Value <code>colorFactory</code>.
-	 */
-	public static String ATT_COLORFACTORY = "colorFactory"; //$NON-NLS-1$
-
-	/**
-	 * Editor command attribute. Value <code>command</code>.
-	 */
-	public static String ATT_COMMAND = "command";//$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the command id.
-	 */
-	public static String ATT_COMMAND_ID = "commandId"; //$NON-NLS-1$
-
-	/**
-	 * The name of the configuration attribute storing the scheme id for a
-	 * binding.
-	 */
-	public static String ATT_CONFIGURATION = "configuration"; //$NON-NLS-1$
-
-	/**
-	 * Intro content detector class attribute (optional). Value <code>contentDetector</code>.
-	 */
-	public static String ATT_CONTENT_DETECTOR = "contentDetector"; //$NON-NLS-1$
-	
-	/**
-	 * Editor content type id binding attribute. Value
-	 * <code>contentTypeId</code>.
-	 */
-	public static String ATT_CONTENT_TYPE_ID = "contentTypeId"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the context id for a binding.
-	 */
-	public static String ATT_CONTEXT_ID = "contextId"; //$NON-NLS-1$
-
-	/**
-	 * Editor contributor class attribute. Value <code>contributorClass</code>.
-	 */
-	public static String ATT_CONTRIBUTOR_CLASS = "contributorClass"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the AbstractParameterValueConverter for
-	 * a commandParameterType.
-	 */
-	public static String ATT_CONVERTER = "converter"; //$NON-NLS-1$
-
-	/**
-	 * Perspective default attribute. Value <code>default</code>.
-	 */
-	public static String ATT_DEFAULT = "default";//$NON-NLS-1$
-
-	/**
-	 * The name of the default handler attribute, which appears on a command
-	 * definition.
-	 */
-	public static String ATT_DEFAULT_HANDLER = "defaultHandler"; //$NON-NLS-1$
-
-	/**
-	 * Defaults-to attribute. Value <code>defaultsTo</code>.
-	 */
-	public static String ATT_DEFAULTS_TO = "defaultsTo"; //$NON-NLS-1$
-
-	/**
-	 * Action definition id attribute. Value <code>definitionId</code>.
-	 */
-	public static String ATT_DEFINITION_ID = "definitionId";//$NON-NLS-1$
-
-	/**
-	 * The name of the description attribute, which appears on named handle
-	 * objects.
-	 */
-	public static String ATT_DESCRIPTION = "description"; //$NON-NLS-1$
-
-	/**
-	 * Description image attribute. Value <code>descriptionImage</code>.
-	 */
-	public static String ATT_DESCRIPTION_IMAGE = "descriptionImage"; //$NON-NLS-1$
-
-	/**
-	 * Disabled icon attribute. Value <code>disabledIcon</code>.
-	 */
-	public static String ATT_DISABLEDICON = "disabledIcon";//$NON-NLS-1$
-
-	/**
-	 * Enables-for attribute. Value <code>enablesFor</code>.
-	 */
-	public static String ATT_ENABLES_FOR = "enablesFor"; //$NON-NLS-1$
-
-	/**
-	 * Editor extensions attribute. Value <code>extensions</code>.
-	 */
-	public static String ATT_EXTENSIONS = "extensions";//$NON-NLS-1$
-
-	/**
-	 * View ratio attribute. Value <code>fastViewWidthRatio</code>.
-	 */
-	public static String ATT_FAST_VIEW_WIDTH_RATIO = "fastViewWidthRatio"; //$NON-NLS-1$
-
-	/**
-	 * Editor filenames attribute. Value <code>filenames</code>.
-	 */
-	public static String ATT_FILENAMES = "filenames";//$NON-NLS-1$
-
-	/**
-	 * Trim fill major attribute. Value <code>fillMajor</code>.
-	 */
-	public static String ATT_FILL_MAJOR = "fillMajor";//$NON-NLS-1$
-
-	/**
-	 * Trim fill minor attribute. Value <code>fillMinor</code>.
-	 */
-	public static String ATT_FILL_MINOR = "fillMinor";//$NON-NLS-1$
-
-	/**
-	 * Perspective fixed attribute. Value <code>fixed</code>.
-	 */
-	public static String ATT_FIXED = "fixed";//$NON-NLS-1$
-
-	/**
-	 * Attribute that specifies whether a wizard has any pages. Value
-	 * <code>hasPages</code>.
-	 */
-	public static String ATT_HAS_PAGES = "hasPages"; //$NON-NLS-1$
-
-	/**
-	 * Help context id attribute. Value <code>helpContextId</code>.
-	 */
-	public static String ATT_HELP_CONTEXT_ID = "helpContextId";//$NON-NLS-1$
-
-	/**
-	 * Help url attribute. Value <code>helpHref</code>.
-	 */
-	public static String ATT_HELP_HREF = "helpHref"; //$NON-NLS-1$
-
-	/**
-	 * Hover icon attribute. Value <code>hoverIcon</code>.
-	 */
-	public static String ATT_HOVERICON = "hoverIcon";//$NON-NLS-1$
-
-	/**
-	 * Icon attribute. Value <code>icon</code>.
-	 */
-	public static String ATT_ICON = "icon"; //$NON-NLS-1$
-
-	/**
-	 * Id attribute. Value <code>id</code>.
-	 */
-	public static String ATT_ID = "id"; //$NON-NLS-1$
-
-	/**
-	 * The name of the image style attribute, which is used on location elements
-	 * in the menus extension point.
-	 */
-	public static String ATT_IMAGE_STYLE = "imageStyle"; //$NON-NLS-1$
-
-	/**
-	 * Is-editable attribute. Value <code>isEditable</code>.
-	 */
-	public static String ATT_IS_EDITABLE = "isEditable"; //$NON-NLS-1$
-
-	/**
-	 * Keys attribute. Value <code>keys</code>.
-	 */
-	public static String ATT_KEY = "key"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the identifier for the active key
-	 * configuration identifier. This provides legacy support for the
-	 * <code>activeKeyConfiguration</code> element in the commands extension
-	 * point.
-	 */
-	public static String ATT_KEY_CONFIGURATION_ID = "keyConfigurationId"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the trigger sequence for a binding.
-	 * This is called a 'keySequence' for legacy reasons.
-	 */
-	public static String ATT_KEY_SEQUENCE = "keySequence"; //$NON-NLS-1$
-
-	/**
-	 * Label attribute. Value <code>label</code>.
-	 */
-	public static String ATT_LABEL = "label"; //$NON-NLS-1$
-
-	/**
-	 * Editor launcher attribute. Value <code>launcher</code>.
-	 */
-	public static String ATT_LAUNCHER = "launcher";//$NON-NLS-1$
-
-	/**
-	 * Lightweight decorator tag. Value <code>lightweight</code>.
-	 */
-	public static String ATT_LIGHTWEIGHT = "lightweight"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the locale for a binding.
-	 */
-	public static String ATT_LOCALE = "locale"; //$NON-NLS-1$
-
-	/**
-	 * Sticky view location attribute. Value <code>location</code>.
-	 */
-	public static String ATT_LOCATION = "location"; //$NON-NLS-1$
-
-	/**
-	 * Editor management strategy attribute. Value <code>matchingStrategy</code>.
-	 */
-	public static String ATT_MATCHING_STRATEGY = "matchingStrategy"; //$NON-NLS-1$
-
-	/**
-	 * The name of the menu identifier attribute, which appears on items.
-	 */
-	public static String ATT_MENU_ID = "menuId"; //$NON-NLS-1$
-
-	/**
-	 * Menubar path attribute. Value <code>menubarPath</code>.
-	 */
-	public static String ATT_MENUBAR_PATH = "menubarPath";//$NON-NLS-1$
-
-	/**
-	 * The name of the mnemonic attribute, which appears on locations.
-	 */
-	public static String ATT_MNEMONIC = "mnemonic"; //$NON-NLS-1$
-
-	/**
-	 * The name of the minimized attribute, which appears
-	 * when adding a view in a perspectiveExtension.
-	 */
-	public static String ATT_MINIMIZED = "minimized"; //$NON-NLS-1$
-
-	/**
-	 * Sticky view moveable attribute. Value <code>moveable</code>.
-	 */
-	public static String ATT_MOVEABLE = "moveable"; //$NON-NLS-1$
-
-	/**
-	 * Name attribute. Value <code>name</code>.
-	 */
-	public static String ATT_NAME = "name"; //$NON-NLS-1$
-
-	/**
-	 * Name filter attribute. Value <code>nameFilter</code>.
-	 */
-	public static String ATT_NAME_FILTER = "nameFilter"; //$NON-NLS-1$
-
-	/**
-	 * Node attribute. Value <code>node</code>.
-	 */
-	public static String ATT_NODE = "node"; //$NON-NLS-1$
-
-	/**
-	 * Object class attribute. Value <code>objectClass</code>.
-	 */
-	public static String ATT_OBJECTCLASS = "objectClass";//$NON-NLS-1$
-
-	/**
-	 * The name of the optional attribute, which appears on parameter
-	 * definitions.
-	 */
-	public static String ATT_OPTIONAL = "optional"; //$NON-NLS-1$
-
-	/**
-	 * Operating system attribute. Value <code>os</code>.
-	 */
-	public static String ATT_OS = "os"; //$NON-NLS-1$
-
-	/**
-	 * The name of the deprecated parent attribute, which appears on scheme
-	 * definitions.
-	 */
-	public static String ATT_PARENT = "parent"; //$NON-NLS-1$
-
-	/**
-	 * View parent category attribute. Value <code>parentCategory</code>.
-	 */
-	public static String ATT_PARENT_CATEGORY = "parentCategory"; //$NON-NLS-1$
-
-	/**
-	 * Parent id attribute. Value <code>parentId</code>.
-	 */
-	public static String ATT_PARENT_ID = "parentId"; //$NON-NLS-1$
-
-	/**
-	 * The name of the deprecated parent scope attribute, which appears on
-	 * contexts definitions.
-	 */
-	public static String ATT_PARENT_SCOPE = "parentScope"; //$NON-NLS-1$
-
-	/**
-	 * Path attribute. Value <code>path</code>.
-	 */
-	public static String ATT_PATH = "path"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the platform for a binding.
-	 */
-	public static String ATT_PLATFORM = "platform"; //$NON-NLS-1$
-
-	/**
-	 * The name of the position attribute, which appears on order elements.
-	 */
-	public static String ATT_POSITION = "position"; //$NON-NLS-1$
-
-	/**
-	 * Presentation id attribute. Value <code>presentationId</code>.
-	 */
-	public static String ATT_PRESENTATIONID = "presentationId"; //$NON-NLS-1$
-
-	/**
-	 * Product id attribute. Value <code>productId</code>.
-	 */
-	public static String ATT_PRODUCTID = "productId"; //$NON-NLS-1$
-
-	/**
-	 * Project attribute. Value <code>project</code>.
-	 */
-	// @issue project-specific attribute and behavior
-	public static String ATT_PROJECT = "project";//$NON-NLS-1$	/**
-
-	/**
-	 * The name of the pulldown attribute, which indicates whether the class is
-	 * a pulldown delegate.
-	 */
-	public static String ATT_PULLDOWN = "pulldown"; //$NON-NLS-1$
-
-	/**
-	 * View ratio attribute. Value <code>ratio</code>.
-	 */
-	public static String ATT_RATIO = "ratio"; //$NON-NLS-1$
-
-	/**
-	 * Relationship attribute. Value <code>relationship</code>.
-	 */
-	public static String ATT_RELATIONSHIP = "relationship";//$NON-NLS-1$
-
-	/**
-	 * Relative attribute. Value <code>relative</code>.
-	 */
-	public static String ATT_RELATIVE = "relative";//$NON-NLS-1$
-
-	/**
-	 * The name of the relativeTo attribute, which appears on order elements.
-	 */
-	public static String ATT_RELATIVE_TO = "relativeTo"; //$NON-NLS-1$
-
-	/**
-	 * Retarget attribute. Value <code>retarget</code>.
-	 */
-	public static String ATT_RETARGET = "retarget";//$NON-NLS-1$
-
-	/**
-	 * The name of the returnTypeId attribute, which appears on command
-	 * elements.
-	 */
-	public static String ATT_RETURN_TYPE_ID = "returnTypeId"; //$NON-NLS-1$
-
-	/**
-	 * The name of the attribute storing the identifier for the active scheme.
-	 * This is called a 'keyConfigurationId' for legacy reasons.
-	 */
-	public static String ATT_SCHEME_ID = "schemeId"; //$NON-NLS-1$
-
-	/**
-	 * Scope attribute. Value <code>scope</code>.
-	 */
-	public static String ATT_SCOPE = "scope"; //$NON-NLS-1$
-
-	/**
-	 * The name of the separatorsVisible attribute, which appears on group
-	 * elements.
-	 */
-	public static String ATT_SEPARATORS_VISIBLE = "separatorsVisible"; //$NON-NLS-1$
-
-	/**
-	 * The name of the sequence attribute for a key binding.
-	 */
-	public static String ATT_SEQUENCE = "sequence"; //$NON-NLS-1$
-
-	/**
-	 * Show title attribute. Value <code>showTitle</code>.
-	 */
-	public static String ATT_SHOW_TITLE = "showTitle";//$NON-NLS-1$
-
-	/**
-	 * Perspective singleton attribute. Value <code>singleton</code>.
-	 */
-	public static String ATT_SINGLETON = "singleton";//$NON-NLS-1$
-	
-	/**
-	 * Splash id attribute.  Value <code>splashId</code>.
-	 * 
-	 * @since 3.3
-	 */
-	public static String ATT_SPLASH_ID = "splashId"; //$NON-NLS-1$
-
-	/**
-	 * Standalone attribute. Value <code>standalone</code>.
-	 */
-	public static String ATT_STANDALONE = "standalone";//$NON-NLS-1$
-
-	/**
-	 * Action state attribute. Value <code>state</code>.
-	 */
-	public static String ATT_STATE = "state";//$NON-NLS-1$
-
-	/**
-	 * The name of the string attribute (key sequence) for a binding in the
-	 * commands extension point.
-	 */
-	public static String ATT_STRING = "string"; //$NON-NLS-1$
-
-	/**
-	 * Action style attribute. Value <code>style</code>.
-	 */
-	public static String ATT_STYLE = "style";//$NON-NLS-1$
-
-	/**
-	 * Target attribute. Value <code>targetID</code>.
-	 */
-	public static String ATT_TARGET_ID = "targetID";//$NON-NLS-1$
-
-	/**
-	 * Toolbar path attribute. Value <code>toolbarPath</code>.
-	 */
-	public static String ATT_TOOLBAR_PATH = "toolbarPath";//$NON-NLS-1$
-
-	/**
-	 * Tooltip attribute. Value <code>tooltip</code>.
-	 */
-	public static String ATT_TOOLTIP = "tooltip";//$NON-NLS-1$
-
-	/**
-	 * The name of the type attribute, which appears on bar elements and
-	 * commandParameterType elments.
-	 */
-	public static String ATT_TYPE = "type"; //$NON-NLS-1$
-
-	/**
-	 * The name of the typeId attribute, which appears on commandParameter
-	 * elements.
-	 */
-	public static String ATT_TYPE_ID = "typeId"; //$NON-NLS-1$
-
-	/**
-	 * Value attribute. Value <code>value</code>.
-	 */
-	public static String ATT_VALUE = "value"; //$NON-NLS-1$
-
-	/**
-	 * Visible attribute. Value <code>visible</code>.
-	 */
-	// ATT_VISIBLE added by dan_rubel@instantiations.com
-	public static String ATT_VISIBLE = "visible";//$NON-NLS-1$
-
-	/**
-	 * Windowing system attribute. Value <code>ws</code>.
-	 */
-	public static String ATT_WS = "ws"; //$NON-NLS-1$
-
-	/**
-	 * The prefix that all auto-generated identifiers start with. This makes the
-	 * identifier recognizable as auto-generated, and further helps ensure that
-	 * it does not conflict with existing identifiers.
-	 */
-	public static String AUTOGENERATED_PREFIX = "AUTOGEN:::"; //$NON-NLS-1$
-
-	/**
-	 * The legacy extension point (2.1.x and earlier) for specifying a key
-	 * binding scheme.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_ACCELERATOR_CONFIGURATIONS = "acceleratorConfigurations"; //$NON-NLS-1$
-
-	/**
-	 * The legacy extension point (2.1.x and earlier) for specifying a context.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_ACCELERATOR_SCOPES = "acceleratorScopes"; //$NON-NLS-1$
-
-	/**
-	 * The legacy extension point (2.1.x and earlier) for specifying a command.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_ACTION_DEFINITIONS = "actionDefinitions"; //$NON-NLS-1$
-
-	public static String PL_ACTION_SET_PART_ASSOCIATIONS = "actionSetPartAssociations"; //$NON-NLS-1$
-
-	public static String PL_ACTION_SETS = "actionSets"; //$NON-NLS-1$
-
-	public static String PL_ACTIVITIES = "activities"; //$NON-NLS-1$
-
-	public static String PL_ACTIVITYSUPPORT = "activitySupport"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (3.1 and later) for specifying bindings, such as
-	 * keyboard shortcuts.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_BINDINGS = "bindings"; //$NON-NLS-1$
-
-	public static String PL_BROWSER_SUPPORT = "browserSupport"; //$NON-NLS-1$
-
-	public static String PL_COLOR_DEFINITIONS = "colorDefinitions"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (3.2 and later) for associating images with commands.
-	 * 
-	 * @since 3.2
-	 */
-	public static String PL_COMMAND_IMAGES = "commandImages"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (2.1.x and later) for specifying a command. A lot of
-	 * other things have appeared first in this extension point and then been
-	 * moved to their own extension point.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_COMMANDS = "commands"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (3.0 and later) for specifying a context.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_CONTEXTS = "contexts"; //$NON-NLS-1$
-
-	public static String PL_DECORATORS = "decorators"; //$NON-NLS-1$
-
-	public static String PL_DROP_ACTIONS = "dropActions"; //$NON-NLS-1$
-
-	public static String PL_EDITOR = "editors"; //$NON-NLS-1$
-
-	public static String PL_EDITOR_ACTIONS = "editorActions"; //$NON-NLS-1$
-
-	public static String PL_ELEMENT_FACTORY = "elementFactories"; //$NON-NLS-1$
-
-	/**
-	 * The extension point for encoding definitions.
-	 */
-	public static String PL_ENCODINGS = "encodings"; //$NON-NLS-1$
-
-	public static String PL_EXPORT = "exportWizards"; //$NON-NLS-1$
-
-	public static String PL_FONT_DEFINITIONS = "fontDefinitions"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (3.1 and later) for specifying handlers.
-	 * 
-	 * @since 3.1.1
-	 */
-	public static String PL_HANDLERS = "handlers"; //$NON-NLS-1$
-
-	public static String PL_HELPSUPPORT = "helpSupport"; //$NON-NLS-1$
-
-	public static String PL_IMPORT = "importWizards"; //$NON-NLS-1$
-
-	public static String PL_INTRO = "intro"; //$NON-NLS-1$
-
-	/**
-	 * The extension point for keyword definitions.
-	 * 
-	 * @since 3.1
-	 */
-	public static String PL_KEYWORDS = "keywords"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (3.2 and later) for specifying menu contributions.
-	 * 
-	 * @since 3.2
-	 */
-	public static String PL_MENUS = "menus"; //$NON-NLS-1$
-
-	/**
-	 * The extension point (3.3 and later) for specifying menu contributions.
-	 * 
-	 * @since 3.3
-	 */
-	public static String PL_MENU_CONTRIBUTION = "menuContribution"; //$NON-NLS-1$
-
-	public static String PL_NEW = "newWizards"; //$NON-NLS-1$
-
-	public static String PL_PERSPECTIVE_EXTENSIONS = "perspectiveExtensions"; //$NON-NLS-1$
-
-	public static String PL_PERSPECTIVES = "perspectives"; //$NON-NLS-1$
-
-	public static String PL_POPUP_MENU = "popupMenus"; //$NON-NLS-1$
-
-	public static String PL_PREFERENCE_TRANSFER = "preferenceTransfer"; //$NON-NLS-1$
-
-	public static String PL_PREFERENCES = "preferencePages"; //$NON-NLS-1$
-
-	public static String PL_PRESENTATION_FACTORIES = "presentationFactories"; //$NON-NLS-1$
-
-	public static String PL_PROPERTY_PAGES = "propertyPages"; //$NON-NLS-1$
-
-	public static String PL_STARTUP = "startup"; //$NON-NLS-1$
-	
-	/**
-	 * @since 3.3
-	 */
-	public static String PL_SPLASH_HANDLERS = "splashHandlers"; //$NON-NLS-1$
-
-	public static String PL_SYSTEM_SUMMARY_SECTIONS = "systemSummarySections"; //$NON-NLS-1$
-
-	public static String PL_THEMES = "themes"; //$NON-NLS-1$
-
-	public static String PL_VIEW_ACTIONS = "viewActions"; //$NON-NLS-1$
-
-	public static String PL_VIEWS = "views"; //$NON-NLS-1$
-
-	public static String PL_WORKINGSETS = "workingSets"; //$NON-NLS-1$
-
-	/**
-	 * The name of the deprecated accelerator configurations extension point.
-	 */
-	public static String EXTENSION_ACCELERATOR_CONFIGURATIONS = PlatformUI.PLUGIN_ID
-			+ '.' + PL_ACCELERATOR_CONFIGURATIONS;
-
-	/**
-	 * The name of the accelerator scopes extension point.
-	 */
-	public static String EXTENSION_ACCELERATOR_SCOPES = PlatformUI.PLUGIN_ID
-			+ '.' + PL_ACCELERATOR_SCOPES;
-
-	/**
-	 * The name of the action definitions extension point.
-	 */
-	public static String EXTENSION_ACTION_DEFINITIONS = PlatformUI.PLUGIN_ID
-			+ '.' + PL_ACTION_DEFINITIONS;
-
-	/**
-	 * The name of the <code>org.eclipse.ui.actionSets</code> extension point.
-	 */
-	public static String EXTENSION_ACTION_SETS = PlatformUI.PLUGIN_ID
-			+ '.' + IWorkbenchRegistryConstants.PL_ACTION_SETS;
-
-	/**
-	 * The name of the bindings extension point.
-	 */
-	public static String EXTENSION_BINDINGS = PlatformUI.PLUGIN_ID + '.'
-			+ PL_BINDINGS;
-
-	/**
-	 * The name of the commands extension point.
-	 */
-	public static String EXTENSION_COMMAND_IMAGES = PlatformUI.PLUGIN_ID
-			+ '.' + PL_COMMAND_IMAGES;
-
-	/**
-	 * The name of the commands extension point, and the name of the key for the
-	 * commands preferences.
-	 */
-	public static String EXTENSION_COMMANDS = PlatformUI.PLUGIN_ID + '.'
-			+ PL_COMMANDS;
-
-	/**
-	 * The name of the contexts extension point.
-	 */
-	public static String EXTENSION_CONTEXTS = PlatformUI.PLUGIN_ID + '.'
-			+ PL_CONTEXTS;
-
-	/**
-	 * The name of the <code>org.eclipse.ui.editorActions</code> extension
-	 * point.
-	 */
-	public static String EXTENSION_EDITOR_ACTIONS = PlatformUI.PLUGIN_ID
-			+ '.' + PL_EDITOR_ACTIONS;
-
-	/**
-	 * The name of the commands extension point.
-	 */
-	public static String EXTENSION_HANDLERS = PlatformUI.PLUGIN_ID + '.'
-			+ PL_HANDLERS;
-
-	/**
-	 * The name of the <code>org.eclipse.ui.menus</code> extension point.
-	 */
-	public static String EXTENSION_MENUS = PlatformUI.PLUGIN_ID + '.'
-			+ PL_MENUS;
-
-	/**
-	 * The name of the <code>org.eclipse.ui.menus2</code> extension point.
-	 */
-	public static String COMMON_MENU_ADDITIONS = PlatformUI.PLUGIN_ID + '.'
-			+ PL_MENUS + '2';
-
-	/**
-	 * The name of the <code>org.eclipse.ui.popupMenus</code> extension point.
-	 */
-	public static String EXTENSION_POPUP_MENUS = PlatformUI.PLUGIN_ID
-			+ '.' + PL_POPUP_MENU;
-
-	/**
-	 * The name of the <code>org.eclipse.ui.viewActions</code> extension
-	 * point.
-	 */
-	public static String EXTENSION_VIEW_ACTIONS = PlatformUI.PLUGIN_ID
-			+ '.' + PL_VIEW_ACTIONS;
-
-	/**
-	 * The constant for the position attribute corresponding to
-	 * {@link SOrder#POSITION_AFTER}.
-	 */
-	public static String POSITION_AFTER = "after"; //$NON-NLS-1$
-
-	/**
-	 * The constant for the position attribute corresponding to
-	 * {@link SOrder#POSITION_BEFORE}.
-	 */
-	public static String POSITION_BEFORE = "before"; //$NON-NLS-1$
-
-	/**
-	 * The constant for the position attribute corresponding to
-	 * {@link SOrder#POSITION_END}.
-	 */
-	public static String POSITION_END = "end"; //$NON-NLS-1$
-
-	/**
-	 * The constant for the position attribute corresponding to
-	 * {@link SOrder#POSITION_START}.
-	 */
-	public static String POSITION_START = "start"; //$NON-NLS-1$
-
-	/**
-	 * The action style for drop-down menus.
-	 */
-	public static String STYLE_PULLDOWN = "pulldown"; //$NON-NLS-1$
-
-	/**
-	 * The action style for radio buttons.
-	 */
-	public static String STYLE_RADIO = "radio"; //$NON-NLS-1$
-
-	/**
-	 * The action style for check boxes.
-	 */
-	public static String STYLE_TOGGLE = "toggle"; //$NON-NLS-1$
-
-	/**
-	 * The name of the deprecated accelerator configuration element. This
-	 * element was used in 2.1.x and earlier to define groups of what are now
-	 * called schemes.
-	 */
-	public static String TAG_ACCELERATOR_CONFIGURATION = "acceleratorConfiguration"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a deprecated accelerator scope.
-	 */
-	public static String TAG_ACCELERATOR_SCOPE = "acceleratorScope"; //$NON-NLS-1$
-
-	/**
-	 * Action tag. Value <code>action</code>.
-	 */
-	public static String TAG_ACTION = "action"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing an action definition. This element only
-	 * existed in
-	 */
-	public static String TAG_ACTION_DEFINITION = "actionDefinition"; //$NON-NLS-1$
-
-	/**
-	 * Action set tag. Value <code>actionSet</code>.
-	 */
-	public static String TAG_ACTION_SET = "actionSet";//$NON-NLS-1$
-
-	/**
-	 * Part association tag. Value <code>actionSetPartAssociation</code>.
-	 */
-	public static String TAG_ACTION_SET_PART_ASSOCIATION = "actionSetPartAssociation";//$NON-NLS-1$
-
-	/**
-	 * The name of the element storing the active key configuration from the
-	 * commands extension point.
-	 */
-	public static String TAG_ACTIVE_KEY_CONFIGURATION = "activeKeyConfiguration"; //$NON-NLS-1$
-
-	/**
-	 * The name of the active when element, which appears on a handler
-	 * definition.
-	 */
-	public static String TAG_ACTIVE_WHEN = "activeWhen"; //$NON-NLS-1$
-
-	/**
-	 * Activity image binding tag. Value <code>activityImageBindingw</code>.
-	 */
-	public static String TAG_ACTIVITY_IMAGE_BINDING = "activityImageBinding"; //$NON-NLS-1$
-
-	/**
-	 * Advisor to product binding element. Value
-	 * <code>triggerPointAdvisorProductBinding</code>.
-	 */
-	public static String TAG_ADVISORPRODUCTBINDING = "triggerPointAdvisorProductBinding"; //$NON-NLS-1$
-
-	/**
-	 * The name of the bar element, which appears in a location definition.
-	 */
-	public static String TAG_BAR = "bar"; //$NON-NLS-1$
-
-	/**
-	 * Category tag. Value <code>category</code>.
-	 */
-	public static String TAG_CATEGORY = "category";//$NON-NLS-1$
-
-	/**
-	 * Category image binding tag. Value <code>categoryImageBinding</code>.
-	 */
-	public static String TAG_CATEGORY_IMAGE_BINDING = "categoryImageBinding"; //$NON-NLS-1$
-
-	/**
-	 * Element category tag. Value <code>themeElementCategory</code>.
-	 */
-	public static String TAG_CATEGORYDEFINITION = "themeElementCategory"; //$NON-NLS-1$
-
-	/**
-	 * Category presentation tag. Value <code>categoryPresentationBinding</code>.
-	 */
-	public static String TAG_CATEGORYPRESENTATIONBINDING = "categoryPresentationBinding"; //$NON-NLS-1$
-
-	/**
-	 * The name of the class element, which appears on an executable extension.
-	 */
-	public static String TAG_CLASS = ATT_CLASS;
-
-	/**
-	 * Color definition tag. Value <code>colorDefinition</code>.
-	 */
-	public static String TAG_COLORDEFINITION = "colorDefinition"; //$NON-NLS-1$
-
-	/**
-	 * Color override tag. Value <code>colorOverride</code>.
-	 */
-	public static String TAG_COLOROVERRIDE = "colorOverride"; //$NON-NLS-1$    
-
-	/**
-	 * Color value tag. Value <code>colorValue</code>.
-	 */
-	public static String TAG_COLORVALUE = "colorValue"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a command.
-	 */
-	public static String TAG_COMMAND = "command"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a parameter.
-	 */
-	public static String TAG_COMMAND_PARAMETER = "commandParameter"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a parameter type.
-	 */
-	public static String TAG_COMMAND_PARAMETER_TYPE = "commandParameterType"; //$NON-NLS-1$
-
-	/**
-	 * Editor content type binding tag. Value <code>contentTypeBinding</code>.
-	 */
-	public static String TAG_CONTENT_TYPE_BINDING = "contentTypeBinding"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a context.
-	 */
-	public static String TAG_CONTEXT = "context"; //$NON-NLS-1$
-
-	/**
-	 * Data tag. Value <code>data</code>.
-	 */
-	public static String TAG_DATA = "data"; //$NON-NLS-1$
-
-	/**
-	 * The name of the default handler element, which appears on a command
-	 * definition.
-	 */
-	public static String TAG_DEFAULT_HANDLER = ATT_DEFAULT_HANDLER;
-
-	/**
-	 * Description element. Value <code>description</code>.
-	 */
-	public static String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
-
-	/**
-	 * The name of the dynamic menu element, which appears in a group or menu
-	 * definition.
-	 */
-	public static String TAG_DYNAMIC = "dynamic"; //$NON-NLS-1$
-
-	/**
-	 * Editor tag. Value <code>editor</code>.
-	 */
-	public static String TAG_EDITOR = "editor";//$NON-NLS-1$
-
-	/**
-	 * The name of the deprecated editorContribution element. This is used for
-	 * contributing actions to the top-level menus and tool bars when particular
-	 * editors are visible.
-	 */
-	public static String TAG_EDITOR_CONTRIBUTION = "editorContribution"; //$NON-NLS-1$
-
-	/**
-	 * The name of the enabled when element, which appears on a handler
-	 * definition.
-	 */
-	public static String TAG_ENABLED_WHEN = "enabledWhen"; //$NON-NLS-1$
-
-	/**
-	 * Enablement tag. Value <code>enablement</code>.
-	 */
-	public static String TAG_ENABLEMENT = "enablement"; //$NON-NLS-1$
-
-	/**
-	 * Entry tag. Value <code>entry</code>.
-	 */
-	public static String TAG_ENTRY = "entry"; //$NON-NLS-1$
-
-	/**
-	 * Filter tag. Value <code>filter</code>.
-	 */
-	public static String TAG_FILTER = "filter"; //$NON-NLS-1$
-
-	/***************************************************************************
-	 * Font definition tag. Value <code>fontDefinition</code>.
-	 */
-	public static String TAG_FONTDEFINITION = "fontDefinition"; //$NON-NLS-1$
-
-	/**
-	 * Font override tag. Value <code>fontOverride</code>.
-	 */
-	public static String TAG_FONTOVERRIDE = "fontOverride"; //$NON-NLS-1$
-
-	/**
-	 * Font value tag. Value <code>fontValue</code>.
-	 */
-	public static String TAG_FONTVALUE = "fontValue"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a group.
-	 */
-	public static String TAG_GROUP = "group"; //$NON-NLS-1$ 
-
-	/**
-	 * Group marker tag. Value <code>groupMarker</code>.
-	 */
-	public static String TAG_GROUP_MARKER = "groupMarker"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a handler.
-	 */
-	public static String TAG_HANDLER = "handler"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a handler submission.
-	 */
-	public static String TAG_HANDLER_SUBMISSION = "handlerSubmission"; //$NON-NLS-1$
-
-	/**
-	 * Trigger point hint tag. Value <code>hint</code>.
-	 */
-	public static String TAG_HINT = "hint"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing an image.
-	 */
-	public static String TAG_IMAGE = "image"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a key binding.
-	 */
-	public static String TAG_KEY = "key"; //$NON-NLS-1$
-
-	/**
-	 * The name of the key binding element in the commands extension point.
-	 */
-	public static String TAG_KEY_BINDING = "keyBinding"; //$NON-NLS-1$
-
-	/**
-	 * The name of the deprecated key configuration element in the commands
-	 * extension point. This element has been replaced with the scheme element
-	 * in the bindings extension point.
-	 */
-	public static String TAG_KEY_CONFIGURATION = "keyConfiguration"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a location.
-	 */
-	public static String TAG_LOCATION = "location"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element defining the insertion point for menu
-	 * additions.
-	 * 
-	 * @since 3.3
-	 */
-	public static String TAG_LOCATION_URI = "locationURI"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing trim layout info for a widget.
-	 */
-	public static String TAG_LAYOUT = "layout"; //$NON-NLS-1$
-
-	/**
-	 * Mapping tag. Value <code>mapping</code>.
-	 */
-	public static String TAG_MAPPING = "mapping"; //$NON-NLS-1$
-
-	/**
-	 * Menu tag. Value <code>menu</code>.
-	 */
-	public static String TAG_MENU = "menu"; //$NON-NLS-1$
-
-	/**
-	 * Wizard shortcut tag. Value <code>newWizardShortcut</code>.
-	 */
-	public static String TAG_NEW_WIZARD_SHORTCUT = "newWizardShortcut";//$NON-NLS-1$
-
-	/**
-	 * Object contribution tag. Value <code>objectContribution</code>.
-	 */
-	public static String TAG_OBJECT_CONTRIBUTION = "objectContribution";//$NON-NLS-1$
-
-	/**
-	 * The name of the element storing the ordering information.
-	 */
-	public static String TAG_ORDER = "order"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a parameter.
-	 */
-	public static String TAG_PARAMETER = "parameter"; //$NON-NLS-1$
-
-	/**
-	 * Part tag. Value <code>part</code>.
-	 */
-	public static String TAG_PART = "part";//$NON-NLS-1$
-
-	/**
-	 * Perspective shortcut tag. Value <code>perspectiveShortcut</code>.
-	 */
-	public static String TAG_PERSP_SHORTCUT = "perspectiveShortcut";//$NON-NLS-1$
-
-	/**
-	 * Perspective tag. Value <code>perspective</code>.
-	 */
-	public static String TAG_PERSPECTIVE = "perspective";//$NON-NLS-1$
-
-	/**
-	 * Perspective extension tag. Value <code>perspectiveExtension</code>.
-	 */
-	public static String TAG_PERSPECTIVE_EXTENSION = "perspectiveExtension";//$NON-NLS-1$
-
-	/**
-	 * Primary wizard tag. Value <code>primaryWizard</code>.
-	 */
-	public static String TAG_PRIMARYWIZARD = "primaryWizard"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing the a menu element reference.
-	 */
-	public static String TAG_REFERENCE = "reference"; //$NON-NLS-1$
-
-	/**
-	 * The name of the scheme element in the bindings extension point.
-	 */
-	public static String TAG_SCHEME = "scheme"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a deprecated scope.
-	 */
-	public static String TAG_SCOPE = "scope"; //$NON-NLS-1$
-
-	/**
-	 * Selectiont tag. Value <code>selection</code>.
-	 */
-	public static String TAG_SELECTION = "selection"; //$NON-NLS-1$
-
-	/**
-	 * Separator tag. Value <code>separator</code>.
-	 */
-	public static String TAG_SEPARATOR = "separator"; //$NON-NLS-1$
-	
-	
-	/**
-	 * Tag for the settings transfer entry.
-	 */
-	public static String TAG_SETTINGS_TRANSFER = "settingsTransfer"; //$NON-NLS-1$
-
-	/**
-	 * Show in part tag. Value <code>showInPart</code>.
-	 */
-	public static String TAG_SHOW_IN_PART = "showInPart";//$NON-NLS-1$
-
-	/**
-	 * The name of the element storing some state.
-	 */
-	public static String TAG_STATE = "state"; //$NON-NLS-1$
-	
-	
-	/**
-	 * The name of the element describing splash handlers. Value
-	 * <code>splashHandler</code>.
-	 * @since 3.3
-	 */
-	public static String TAG_SPLASH_HANDLER = "splashHandler"; //$NON-NLS-1$
-	
-
-	/**
-	 * The name of the element describing splash handler product bindings. Value
-	 * <code>splashHandlerProductBinding</code>.
-	 * @since 3.3
-	 */
-	public static String TAG_SPLASH_HANDLER_PRODUCT_BINDING = "splashHandlerProductBinding"; //$NON-NLS-1$
-	
-	/**
-	 * Sticky view tag. Value <code>stickyView</code>.
-	 */
-	public static String TAG_STICKYVIEW = "stickyView";//$NON-NLS-1$
-
-	/**
-	 * Browser support tag. Value <code>support</code>.
-	 */
-	public static String TAG_SUPPORT = "support"; //$NON-NLS-1$
-
-	/**
-	 * Theme tag. Value <code>theme</code>.
-	 */
-	public static String TAG_THEME = "theme";//$NON-NLS-1$
-
-	/**
-	 * Transfer tag. Value <code>transfer</code>.
-	 */
-	public static String TAG_TRANSFER = "transfer";//$NON-NLS-1$
-
-	/**
-	 * Trigger point tag. Value <code>triggerPoint</code>.
-	 */
-	public static String TAG_TRIGGERPOINT = "triggerPoint"; //$NON-NLS-1$
-
-	/**
-	 * Advisor tag. Value <code>triggerPointAdvisor</code>.
-	 */
-	public static String TAG_TRIGGERPOINTADVISOR = "triggerPointAdvisor"; //$NON-NLS-1$
-
-	/**
-	 * View tag. Value <code>view</code>.
-	 */
-	public static String TAG_VIEW = "view";//$NON-NLS-1$
-
-	/**
-	 * View shortcut tag. Value <code>viewShortcut</code>.
-	 */
-	public static String TAG_VIEW_SHORTCUT = "viewShortcut";//$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a view contribution.
-	 */
-	public static String TAG_VIEW_CONTRIBUTION = "viewContribution"; //$NON-NLS-1$
-
-	/**
-	 * Viewer contribution tag. Value <code>viewerContribution</code>.
-	 */
-	public static String TAG_VIEWER_CONTRIBUTION = "viewerContribution"; //$NON-NLS-1$
-
-	/**
-	 * Visibility tag. Value <code>visibility</code>.
-	 */
-	public static String TAG_VISIBILITY = "visibility"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing the visible when condition.
-	 */
-	public static String TAG_VISIBLE_WHEN = "visibleWhen"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a widget.
-	 */
-	public static String TAG_WIDGET = "widget"; //$NON-NLS-1$
-
-	/**
-	 * The name of the element storing a control hosted in a ToolBar.
-	 */
-	public static String TAG_CONTROL = "control"; //$NON-NLS-1$
-
-	/**
-	 * Wizard tag. Value <code>wizard</code>.
-	 */
-	public static String TAG_WIZARD = "wizard";//$NON-NLS-1$
-
-	/**
-	 * Working set tag. Value <code>workingSet</code>.
-	 */
-	public static String TAG_WORKING_SET = "workingSet"; //$NON-NLS-1$
-
-	/**
-	 * The type of reference which refers to a group.
-	 */
-	public static String TYPE_GROUP = "group"; //$NON-NLS-1$
-
-	/**
-	 * The type of reference which refers to an item.
-	 */
-	public static String TYPE_ITEM = "item"; //$NON-NLS-1$
-
-	/**
-	 * The type of reference which refers to an menu.
-	 */
-	public static String TYPE_MENU = "menu"; //$NON-NLS-1$
-
-	/**
-	 * The type of reference which refers to the widget.
-	 */
-	public static String TYPE_WIDGET = "widget"; //$NON-NLS-1$
-
-	public static String TAG_TOOLBAR = "toolbar"; //$NON-NLS-1$
-	
-	public static String TAG_SERVICE_FACTORY = "serviceFactory"; //$NON-NLS-1$
-	
-	public static String TAG_SERVICE = "service"; //$NON-NLS-1$
-
-	public static final String ATTR_FACTORY_CLASS = "factoryClass"; //$NON-NLS-1$
-
-	public static final String ATTR_SERVICE_CLASS = "serviceClass"; //$NON-NLS-1$
-	
-	public static final String TAG_SOURCE_PROVIDER = "sourceProvider"; //$NON-NLS-1$
-
-	public static final String ATTR_PROVIDER = "provider"; //$NON-NLS-1$
-
-	public static final String TAG_VARIABLE = "variable"; //$NON-NLS-1$
-
-	public static final String ATT_PRIORITY_LEVEL = "priorityLevel"; //$NON-NLS-1$
-	
-	public static final String ATT_MODE = "mode"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/KeywordRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/KeywordRegistry.java
deleted file mode 100644
index faa2b92..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/KeywordRegistry.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Contains extensions defined on the <code>keywords</code> extension point.
- * 
- * @since 3.1
- */
-public final class KeywordRegistry implements IExtensionChangeHandler {
-
-	private static final String ATT_ID = "id"; //$NON-NLS-1$
-
-	private static final String ATT_LABEL = "label"; //$NON-NLS-1$
-
-	private static KeywordRegistry instance;
-
-	private static final String TAG_KEYWORD = "keyword"; //$NON-NLS-1$
-
-	/**
-	 * Return the singleton instance of the <code>KeywordRegistry</code>.
-	 * 
-	 * @return the singleton registry
-	 */
-	public static KeywordRegistry getInstance() {
-		if (instance == null) {
-			instance = new KeywordRegistry();
-		}
-
-		return instance;
-	}
-
-	/**
-	 * Map of id->labels.
-	 */
-	private Map internalKeywordMap = new HashMap();
-	
-	/**
-	 * Private constructor.
-	 */
-	private KeywordRegistry() {
-		IExtensionTracker tracker = PlatformUI.getWorkbench().getExtensionTracker();
-        tracker.registerHandler(this, ExtensionTracker.createExtensionPointFilter(getExtensionPointFilter()));
-		IExtension[] extensions = getExtensionPointFilter().getExtensions();
-		for (int i = 0; i < extensions.length; i++) {
-			addExtension(PlatformUI.getWorkbench().getExtensionTracker(),
-					extensions[i]);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		IConfigurationElement[] elements = extension.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			if (elements[i].getName().equals(TAG_KEYWORD)) {
-				String name = elements[i].getAttribute(ATT_LABEL);
-				String id = elements[i].getAttribute(ATT_ID);
-				internalKeywordMap.put(id, name);
-				PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-						extension, id, IExtensionTracker.REF_WEAK);
-			}
-		}
-	}
-
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_KEYWORDS);
-	}
-	
-	/**
-	 * Return the label associated with the given keyword.
-	 * 
-	 * @param id the keyword id
-	 * @return the label or <code>null</code>
-	 */
-	public String getKeywordLabel(String id) {
-		return (String) internalKeywordMap.get(id);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof String) {
-				internalKeywordMap.remove(objects[i]);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
deleted file mode 100644
index 1c5d67a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveDescriptor.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Brock Janiczak (brockj_eclipse@ihug.com.au) - handler registration
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveFactory;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * PerspectiveDescriptor.
- * <p>
- * A PerspectiveDesciptor has 3 states:
- * </p>
- * <ol>
- * <li>It <code>isPredefined()</code>, in which case it was defined from an
- * extension point.</li>
- * <li>It <code>isPredefined()</code> and <code>hasCustomFile</code>, in
- * which case the user has customized a predefined perspective.</li>
- * <li>It <code>hasCustomFile</code>, in which case the user created a new
- * perspective.</li>
- * </ol>
- * 
- */
-public class PerspectiveDescriptor implements IPerspectiveDescriptor,
-		IPluginContribution {
-	private String id;
-
-	private String pluginId;
-
-	private String originalId;
-
-	private String label;
-
-	private String className;
-
-	private String description;
-
-	private boolean singleton;
-
-	private boolean fixed;
-
-	private ImageDescriptor image;
-
-	private IConfigurationElement configElement;
-
-	/**
-	 * Create a new empty descriptor.
-	 * 
-	 * @param id
-	 *            the id of the new descriptor
-	 * @param label
-	 *            the label of the new descriptor
-	 * @param originalDescriptor
-	 *            the descriptor that this descriptor is based on
-	 */
-	public PerspectiveDescriptor(String id, String label,
-			PerspectiveDescriptor originalDescriptor) {
-		this.id = id;
-		this.label = label;
-		if (originalDescriptor != null) {
-			this.originalId = originalDescriptor.getOriginalId();
-			this.image = originalDescriptor.image;
-
-			// This perspective is based on a perspective in some bundle -- if
-			// that
-			// bundle goes away then I think it makes sense to treat this
-			// perspective
-			// the same as any other -- so store it with the original
-			// descriptor's
-			// bundle's list.
-			//
-			// It might also make sense the other way...removing the following
-			// line
-			// will allow the perspective to stay around when the originating
-			// bundle
-			// is unloaded.
-			//
-			// This might also have an impact on upgrade cases -- should we
-			// really be
-			// destroying all user customized perspectives when the older
-			// version is
-			// removed?
-			//
-			// I'm leaving this here for now since its a good example, but
-			// wouldn't be
-			// surprised if we ultimately decide on the opposite.
-			//
-			// The reason this line is important is that this is the value used
-			// to
-			// put the object into the UI level registry. When that bundle goes
-			// away,
-			// the registry will remove the entire list of objects. So if this
-			// desc
-			// has been put into that list -- it will go away.
-			this.pluginId = originalDescriptor.getPluginId();
-		}
-	}
-
-	/**
-	 * Create a descriptor from a config element.
-	 * 
-	 * @param id
-	 *            the id of the element to create
-	 * @param configElement
-	 *            the element to base this perspective on
-	 * @throws CoreException
-	 *             thrown if there are any missing attributes
-	 */
-	public PerspectiveDescriptor(String id, IConfigurationElement configElement)
-			throws CoreException {
-		this.configElement = configElement;
-		this.id = id;
-		// Sanity check.
-		if ((getId() == null) || (getLabel() == null)
-				|| (getClassName() == null)) {
-			throw new CoreException(
-					new Status(
-							IStatus.ERROR,
-							WorkbenchPlugin.PI_WORKBENCH,
-							0,
-							"Invalid extension (missing label, id or class name): " + getId(),//$NON-NLS-1$
-							null));
-		}
-	}
-
-	/**
-	 * Creates a factory for a predefined perspective. If the perspective is not
-	 * predefined return <code>null</code>.
-	 * 
-	 * @return the IPerspectiveFactory or <code>null</code>
-	 * @throws CoreException
-	 *             if the object could not be instantiated.
-	 */
-	public IPerspectiveFactory createFactory() throws CoreException {
-		// if there is an originalId, then use that descriptor instead
-		if (originalId != null) {
-			// Get the original descriptor to create the factory. If the
-			// original is gone then nothing can be done.
-			IPerspectiveDescriptor target = ((PerspectiveRegistry) WorkbenchPlugin
-					.getDefault().getPerspectiveRegistry())
-					.findPerspectiveWithId(originalId);
-
-			return target == null ? null : ((PerspectiveDescriptor) target)
-					.createFactory();
-		}
-
-		// otherwise try to create the executable extension
-		if (configElement != null) {
-			try {
-				return (IPerspectiveFactory) configElement
-						.createExecutableExtension(IWorkbenchRegistryConstants.ATT_CLASS);
-			} catch (CoreException e) {
-				// do nothing
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Deletes the custom definition for a perspective..
-	 */
-	public void deleteCustomDefinition() {
-		((PerspectiveRegistry) WorkbenchPlugin.getDefault()
-				.getPerspectiveRegistry()).deleteCustomDefinition(this);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveDescriptor#getDescription()
-	 */
-	public String getDescription() {
-		return configElement == null ? description : RegistryReader
-				.getDescription(configElement);
-	}
-
-	/**
-	 * Returns whether or not this perspective is fixed.
-	 * 
-	 * @return whether or not this perspective is fixed
-	 */
-	public boolean getFixed() {
-		return configElement == null ? fixed : Boolean.valueOf(
-				configElement
-						.getAttribute(IWorkbenchRegistryConstants.ATT_FIXED))
-				.booleanValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveDescriptor#getId()
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveDescriptor#getImageDescriptor()
-	 */
-	public ImageDescriptor getImageDescriptor() {
-		if (image == null) {
-			if (configElement != null) {
-				String icon = configElement
-						.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-				if (icon != null) {
-					image = AbstractUIPlugin.imageDescriptorFromPlugin(
-							configElement.getNamespace(), icon);
-				}
-				if (image == null) {
-					image = WorkbenchImages
-							.getImageDescriptor(ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE);
-				}
-			}
-		}
-		return image;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveDescriptor#getLabel()
-	 */
-	public String getLabel() {
-		return configElement == null ? label : configElement
-				.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-	}
-
-	/**
-	 * Return the original id of this descriptor.
-	 * 
-	 * @return the original id of this descriptor
-	 */
-	public String getOriginalId() {
-		if (originalId == null) {
-			return getId();
-		}
-		return originalId;
-	}
-
-	/**
-	 * Returns <code>true</code> if this perspective has a custom definition.
-	 * 
-	 * @return whether this perspective has a custom definition
-	 */
-	public boolean hasCustomDefinition() {
-		return ((PerspectiveRegistry) WorkbenchPlugin.getDefault()
-				.getPerspectiveRegistry()).hasCustomDefinition(this);
-	}
-
-	/**
-	 * Returns <code>true</code> if this perspective wants to be default.
-	 * 
-	 * @return whether this perspective wants to be default
-	 */
-	public boolean hasDefaultFlag() {
-		if (configElement == null) {
-			return false;
-		}
-
-		return Boolean.valueOf(
-				configElement
-						.getAttribute(IWorkbenchRegistryConstants.ATT_DEFAULT))
-				.booleanValue();
-	}
-
-	/**
-	 * Returns <code>true</code> if this perspective is predefined by an
-	 * extension.
-	 * 
-	 * @return boolean whether this perspective is predefined by an extension
-	 */
-	public boolean isPredefined() {
-		return getClassName() != null && configElement != null;
-	}
-
-	/**
-	 * Returns <code>true</code> if this perspective is a singleton.
-	 * 
-	 * @return whether this perspective is a singleton
-	 */
-	public boolean isSingleton() {
-		return configElement == null ? singleton
-				: configElement
-						.getAttributeAsIs(IWorkbenchRegistryConstants.ATT_SINGLETON) != null;
-	}
-
-	/**
-	 * Restore the state of a perspective from a memento.
-	 * 
-	 * @param memento
-	 *            the memento to restore from
-	 * @return the <code>IStatus</code> of the operation
-	 * @see org.eclipse.ui.IPersistableElement
-	 */
-	public IStatus restoreState(IMemento memento) {
-		IMemento childMem = memento
-				.getChild(IWorkbenchConstants.TAG_DESCRIPTOR);
-		if (childMem != null) {
-			id = childMem.getString(IWorkbenchConstants.TAG_ID);
-			originalId = childMem.getString(IWorkbenchConstants.TAG_DESCRIPTOR);
-			label = childMem.getString(IWorkbenchConstants.TAG_LABEL);
-			className = childMem.getString(IWorkbenchConstants.TAG_CLASS);
-			singleton = (childMem.getInteger(IWorkbenchConstants.TAG_SINGLETON) != null);
-
-			// Find a descriptor in the registry.
-			IPerspectiveDescriptor descriptor = WorkbenchPlugin.getDefault()
-					.getPerspectiveRegistry().findPerspectiveWithId(
-							getOriginalId());
-
-			if (descriptor != null) {
-				// Copy the state from the registred descriptor.
-				image = descriptor.getImageDescriptor();
-			}
-		}
-		return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-	}
-
-	/**
-	 * Revert to the predefined extension template. Does nothing if this
-	 * descriptor is user defined.
-	 */
-	public void revertToPredefined() {
-		if (isPredefined()) {
-			deleteCustomDefinition();
-		}
-	}
-
-	/**
-	 * Save the state of a perspective to a memento.
-	 * 
-	 * @param memento
-	 *            the memento to restore from
-	 * @return the <code>IStatus</code> of the operation
-	 * @see org.eclipse.ui.IPersistableElement
-	 */
-	public IStatus saveState(IMemento memento) {
-		IMemento childMem = memento
-				.createChild(IWorkbenchConstants.TAG_DESCRIPTOR);
-		childMem.putString(IWorkbenchConstants.TAG_ID, getId());
-		if (originalId != null) {
-			childMem.putString(IWorkbenchConstants.TAG_DESCRIPTOR, originalId);
-		}
-		childMem.putString(IWorkbenchConstants.TAG_LABEL, getLabel());
-		childMem.putString(IWorkbenchConstants.TAG_CLASS, getClassName());
-		if (singleton) {
-			childMem.putInteger(IWorkbenchConstants.TAG_SINGLETON, 1);
-		}
-		return new Status(IStatus.OK, PlatformUI.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
-	}
-
-	/**
-	 * Return the configuration element used to create this perspective, if one
-	 * was used.
-	 * 
-	 * @return the configuration element used to create this perspective
-	 * @since 3.0
-	 */
-	public IConfigurationElement getConfigElement() {
-		return configElement;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-	 */
-	public String getLocalId() {
-		return getId();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-	 */
-	public String getPluginId() {
-		return configElement == null ? pluginId : configElement.getNamespace();
-	}
-
-	/**
-	 * Returns the factory class name for this descriptor.
-	 * 
-	 * @return the factory class name for this descriptor
-	 * @since 3.1
-	 */
-	public String getClassName() {
-		return configElement == null ? className : RegistryReader
-				.getClassValue(configElement,
-						IWorkbenchRegistryConstants.ATT_CLASS);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveExtensionReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveExtensionReader.java
deleted file mode 100644
index 7ce884b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveExtensionReader.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Dan Rubel <dan_rubel@instantiations.com>
- *     - Fix for bug 11490 - define hidden view (placeholder for view) in plugin.xml
- *     Chris Gross <schtoo@schtoo.com> 
- *     - Fix for 99155 - allow standalone view placeholders
- *******************************************************************************/
-
-package org.eclipse.ui.internal.registry;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewLayout;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.DirtyPerspectiveMarker;
-import org.eclipse.ui.internal.PageLayout;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * A strategy to read perspective extension from the registry.
- * A pespective extension is one of a view, viewAction, perspAction,
- * newWizardAction, or actionSet.
- */
-public class PerspectiveExtensionReader extends RegistryReader {
-    private String targetID;
-
-    private PageLayout pageLayout;
-
-    private Set includeOnlyTags = null;
-
-    private static final String VAL_LEFT = "left";//$NON-NLS-1$
-
-    private static final String VAL_RIGHT = "right";//$NON-NLS-1$
-
-    private static final String VAL_TOP = "top";//$NON-NLS-1$
-
-    private static final String VAL_BOTTOM = "bottom";//$NON-NLS-1$
-
-    private static final String VAL_STACK = "stack";//$NON-NLS-1$
-
-    private static final String VAL_FAST = "fast";//$NON-NLS-1$
-
-    private static final String VAL_TRUE = "true";//$NON-NLS-1$	
-
-    // VAL_FALSE added by dan_rubel@instantiations.com  
-    // TODO: this logic is backwards... we should be checking for true, but
-    // technically this is API now...
-    private static final String VAL_FALSE = "false";//$NON-NLS-1$	
-
-	private IExtensionTracker tracker;
-
-    /**
-     * PerspectiveExtensionReader constructor..
-     */
-    public PerspectiveExtensionReader() {
-        // do nothing
-    }
-
-    /**
-     * Read the view extensions within a registry.
-     * 
-     * @param extensionTracker the tracker 
-     * @param id the id 
-     * @param out the layout
-     */
-    public void extendLayout(IExtensionTracker extensionTracker, String id, PageLayout out) {
-    	tracker = extensionTracker;
-    	targetID = id;
-        pageLayout = out;
-        readRegistry(Platform.getExtensionRegistry(), PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_PERSPECTIVE_EXTENSIONS);
-    }
-
-    /**
-     * Returns whether the given tag should be included.
-     */
-    private boolean includeTag(String tag) {
-        return includeOnlyTags == null || includeOnlyTags.contains(tag);
-    }
-
-    /**
-     * Process an action set.
-     */
-    private boolean processActionSet(IConfigurationElement element) {
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id != null) {
-			pageLayout.addActionSet(id);
-		}
-        return true;
-    }
-
-    /**
-     * Process an extension.
-     * Assumption: Extension is for current perspective.
-     */
-    private boolean processExtension(IConfigurationElement element) {
-        IConfigurationElement[] children = element.getChildren();
-        for (int nX = 0; nX < children.length; nX++) {
-            IConfigurationElement child = children[nX];
-            String type = child.getName();
-            if (includeTag(type)) {
-                boolean result = false;
-                if (type.equals(IWorkbenchRegistryConstants.TAG_ACTION_SET)) {
-					result = processActionSet(child);
-				} else if (type.equals(IWorkbenchRegistryConstants.TAG_VIEW)) {
-					result = processView(child);
-				} else if (type.equals(IWorkbenchRegistryConstants.TAG_VIEW_SHORTCUT)) {
-					result = processViewShortcut(child);
-				} else if (type.equals(IWorkbenchRegistryConstants.TAG_NEW_WIZARD_SHORTCUT)) {
-					result = processWizardShortcut(child);
-				} else if (type.equals(IWorkbenchRegistryConstants.TAG_PERSP_SHORTCUT)) {
-					result = processPerspectiveShortcut(child);
-				} else if (type.equals(IWorkbenchRegistryConstants.TAG_SHOW_IN_PART)) {
-					result = processShowInPart(child);
-				}
-                if (!result) {
-                    WorkbenchPlugin.log("Unable to process element: " + //$NON-NLS-1$
-                            type
-                            + " in perspective extension: " + //$NON-NLS-1$
-                            element.getDeclaringExtension()
-                                    .getUniqueIdentifier());
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Process a perspective shortcut
-     */
-    private boolean processPerspectiveShortcut(IConfigurationElement element) {
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id != null) {
-			pageLayout.addPerspectiveShortcut(id);
-		}
-        return true;
-    }
-
-    /**
-     * Process a show in element.
-     */
-    private boolean processShowInPart(IConfigurationElement element) {
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id != null) {
-			pageLayout.addShowInPart(id);
-		}
-        return true;
-    }
-
-    // processView(IConfigurationElement) modified by dan_rubel@instantiations.com
-    /**
-     * Process a view
-     */
-    private boolean processView(IConfigurationElement element) {
-        // Get id, relative, and relationship.
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        String relative = element.getAttribute(IWorkbenchRegistryConstants.ATT_RELATIVE);
-        String relationship = element.getAttribute(IWorkbenchRegistryConstants.ATT_RELATIONSHIP);
-        String ratioString = element.getAttribute(IWorkbenchRegistryConstants.ATT_RATIO);
-        boolean visible = !VAL_FALSE.equals(element.getAttribute(IWorkbenchRegistryConstants.ATT_VISIBLE));
-        String closeable = element.getAttribute(IWorkbenchRegistryConstants.ATT_CLOSEABLE);
-        String moveable = element.getAttribute(IWorkbenchRegistryConstants.ATT_MOVEABLE);
-        String standalone = element.getAttribute(IWorkbenchRegistryConstants.ATT_STANDALONE);
-        String showTitle = element.getAttribute(IWorkbenchRegistryConstants.ATT_SHOW_TITLE);
-        
-        // Default to 'false'
-        String minVal = element.getAttribute(IWorkbenchRegistryConstants.ATT_MINIMIZED);
-        boolean minimized = minVal != null && VAL_TRUE.equals(minVal);
-
-        float ratio;
-
-        if (id == null) {
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_ID);
-            return false;
-        }
-        if (relationship == null) {
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_RELATIONSHIP);
-            return false;
-        }
-        if (!VAL_FAST.equals(relationship) && relative == null) {
-            logError(
-					element,
-					"Attribute '" + IWorkbenchRegistryConstants.ATT_RELATIVE + "' not defined.  This attribute is required when " + IWorkbenchRegistryConstants.ATT_RELATIONSHIP + "=\"" + relationship + "\"."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-			return false;
-        }
-
-        // Get the ratio.
-        if (ratioString == null) {
-            // The ratio has not been specified.
-            ratio = IPageLayout.NULL_RATIO;
-        } else {
-            try {
-                ratio = new Float(ratioString).floatValue();
-            } catch (NumberFormatException e) {
-                return false;
-            }
-            // If the ratio is outside the allowable range, mark it as invalid.
-            if (ratio < IPageLayout.RATIO_MIN || ratio > IPageLayout.RATIO_MAX) {
-				ratio = IPageLayout.INVALID_RATIO;
-			}
-        }
-
-        // Get relationship details.
-        boolean stack = false;
-        boolean fast = false;
-        int intRelation = 0;
-        if (relationship.equals(VAL_LEFT)) {
-			intRelation = IPageLayout.LEFT;
-		} else if (relationship.equals(VAL_RIGHT)) {
-			intRelation = IPageLayout.RIGHT;
-		} else if (relationship.equals(VAL_TOP)) {
-			intRelation = IPageLayout.TOP;
-		} else if (relationship.equals(VAL_BOTTOM)) {
-			intRelation = IPageLayout.BOTTOM;
-		} else if (relationship.equals(VAL_STACK)) {
-			stack = true;
-		} else if (relationship.equals(VAL_FAST)) {
-			fast = true;
-		} else {
-			return false;
-		}
-
-        if (visible) {
-        	// If adding a view (not just a placeholder), remove any existing placeholder.
-        	// See bug 85948 [Perspectives] Adding register & expressions view by default to debug perspective fails
-        	pageLayout.removePlaceholder(id);
-        }
-        
-        // If stack ..
-        if (stack) {
-            if (visible) {
-				pageLayout.stackView(id, relative);
-			} else {
-				pageLayout.stackPlaceholder(id, relative);
-			}
-        }
-
-        // If the view is a fast view...
-        else if (fast) {
-            if (ratio == IPageLayout.NULL_RATIO) {
-                // The ratio has not been specified.
-                pageLayout.addFastView(id);
-            } else {
-                pageLayout.addFastView(id, ratio);
-            }
-        } else {
-
-            // The view is a regular view.
-            // If the ratio is not specified or is invalid, use the default ratio.
-            if (ratio == IPageLayout.NULL_RATIO
-                    || ratio == IPageLayout.INVALID_RATIO) {
-				ratio = IPageLayout.DEFAULT_VIEW_RATIO;
-			}
-
-            if (visible) {
-                if (VAL_TRUE.equals(standalone)) {
-                    pageLayout.addStandaloneView(id, !VAL_FALSE
-                            .equals(showTitle), intRelation, ratio, relative);
-                } else {
-                    pageLayout.addView(id, intRelation, ratio, relative, minimized);
-                }
-            } else {
-				// Fix for 99155, CGross (schtoo@schtoo.com)
-				// Adding standalone placeholder for standalone views
-				if (VAL_TRUE.equals(standalone)) {
-					pageLayout.addStandaloneViewPlaceholder(id, intRelation,
-							ratio, relative, !VAL_FALSE.equals(showTitle));
-				} else {
-					pageLayout.addPlaceholder(id, intRelation, ratio, relative);
-				}
-			}
-        }
-        IViewLayout viewLayout = pageLayout.getViewLayout(id);
-        // may be null if it's been filtered by activity
-        if (viewLayout != null) {
-			if (closeable != null) {
-				viewLayout.setCloseable(!VAL_FALSE.equals(closeable));
-			}
-			if (moveable != null) {
-				viewLayout.setMoveable(!VAL_FALSE.equals(moveable));
-			}
-		}
-
-        return true;
-    }
-
-    /**
-	 * Process a view shortcut
-	 */
-    private boolean processViewShortcut(IConfigurationElement element) {
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id != null) {
-			pageLayout.addShowViewShortcut(id);
-		}
-        return true;
-    }
-
-    /**
-     * Process a wizard shortcut
-     */
-    private boolean processWizardShortcut(IConfigurationElement element) {
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id != null) {
-			pageLayout.addNewWizardShortcut(id);
-		}
-        return true;
-    }
-
-    protected boolean readElement(IConfigurationElement element) {
-        String type = element.getName();
-        if (type.equals(IWorkbenchRegistryConstants.TAG_PERSPECTIVE_EXTENSION)) {
-            String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_TARGET_ID);
-            if (targetID.equals(id) || "*".equals(id)) { //$NON-NLS-1$
-            	if (tracker != null) {
-					tracker.registerObject(element.getDeclaringExtension(), new DirtyPerspectiveMarker(id), IExtensionTracker.REF_STRONG);
-				}
-                return processExtension(element);
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets the tags to include.  All others are ignored.
-     * 
-     * @param tags the tags to include
-     */
-    public void setIncludeOnlyTags(String[] tags) {
-        includeOnlyTags = new HashSet();
-        for (int i = 0; i < tags.length; i++) {
-            includeOnlyTags.add(tags[i]);
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java
deleted file mode 100644
index 1134fa6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveParameterValues.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.registry;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * Provides the parameter values for the show perspective command.
- * 
- * @since 3.1
- */
-public final class PerspectiveParameterValues implements IParameterValues {
-
-	public final Map getParameterValues() {
-		final Map values = new HashMap();
-
-		final IPerspectiveDescriptor[] perspectives = WorkbenchPlugin
-				.getDefault().getPerspectiveRegistry().getPerspectives();
-		for (int i = 0; i < perspectives.length; i++) {
-			final IPerspectiveDescriptor perspective = perspectives[i];
-			values.put(perspective.getLabel(), perspective.getId());
-		}
-
-		return values;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistry.java
deleted file mode 100644
index 1a2faf5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistry.java
+++ /dev/null
@@ -1,733 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveRegistry;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.handlers.ClosePerspectiveHandler;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Perspective registry.
- */
-public class PerspectiveRegistry implements IPerspectiveRegistry,
-		IExtensionChangeHandler {
-	private String defaultPerspID;
-
-	private static final String EXT = "_persp.xml"; //$NON-NLS-1$
-
-	private static final String ID_DEF_PERSP = "PerspectiveRegistry.DEFAULT_PERSP"; //$NON-NLS-1$
-
-	private static final String PERSP = "_persp"; //$NON-NLS-1$
-
-	private static final char SPACE_DELIMITER = ' ';
-
-	private List perspectives = new ArrayList(10);
-
-	// keep track of the perspectives the user has selected to remove or revert
-	private ArrayList perspToRemove = new ArrayList(5);
-
-	private IPropertyChangeListener preferenceListener;
-
-	/**
-	 * Construct a new registry.
-	 */
-	public PerspectiveRegistry() {
-		IExtensionTracker tracker = PlatformUI.getWorkbench()
-				.getExtensionTracker();
-		tracker.registerHandler(this, null);
-
-		initializePreferenceChangeListener();
-		WorkbenchPlugin.getDefault().getPreferenceStore()
-				.addPropertyChangeListener(preferenceListener);
-
-	}
-
-	/**
-	 * Initialize the preference change listener.
-	 */
-	private void initializePreferenceChangeListener() {
-		preferenceListener = new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				/*
-				 * To ensure the that no custom perspective definitions are
-				 * deleted when preferences are imported, merge old and new
-				 * values
-				 */
-				if (event.getProperty().endsWith(PERSP)) {
-					/* A Perspective is being changed, merge */
-					mergePerspectives(event);
-				} else if (event.getProperty().equals(
-						IPreferenceConstants.PERSPECTIVES)) {
-					/* The list of perpsectives is being changed, merge */
-					updatePreferenceList((IPreferenceStore) event.getSource());
-				}
-			}
-
-			private void mergePerspectives(PropertyChangeEvent event) {
-				IPreferenceStore store = (IPreferenceStore) event.getSource();
-				if (event.getNewValue() == null
-						|| event.getNewValue().equals("")) { //$NON-NLS-1$
-					/*
-					 * Perpsective is being removed; if the user has deleted or
-					 * reverted a custom perspective, let the change pass
-					 * through. Otherwise, restore the custom perspective entry
-					 */
-
-					// Find the matching descriptor in the registry
-					IPerspectiveDescriptor[] perspectiveList = getPerspectives();
-					for (int i = 0; i < perspectiveList.length; i++) {
-						String id = perspectiveList[i].getId();
-						if (event.getProperty().equals(id + PERSP)) { // found
-							// descriptor
-							// see if the perspective has been flagged for
-							// reverting or deleting
-							if (!perspToRemove.contains(id)) { // restore
-								store.setValue(id + PERSP, (String) event
-										.getOldValue());
-							} else { // remove element from the list
-								perspToRemove.remove(id);
-							}
-						}
-					}
-				} else if ((event.getOldValue() == null || event.getOldValue()
-						.equals(""))) { //$NON-NLS-1$
-
-					/*
-					 * New perspective is being added, update the
-					 * perspectiveRegistry to contain the new custom perspective
-					 */
-
-					String id = event.getProperty().substring(0,
-							event.getProperty().lastIndexOf(PERSP));
-					if (findPerspectiveWithId(id) == null) {
-						// perspective does not already exist in registry, add
-						// it
-						PerspectiveDescriptor desc = new PerspectiveDescriptor(
-								null, null, null);
-						StringReader reader = new StringReader((String) event
-								.getNewValue());
-						try {
-							XMLMemento memento = XMLMemento
-									.createReadRoot(reader);
-							desc.restoreState(memento);
-							addPerspective(desc);
-						} catch (WorkbenchException e) {
-							unableToLoadPerspective(e.getStatus());
-						}
-					}
-				}
-				/* If necessary, add to the list of perspectives */
-				updatePreferenceList(store);
-			}
-
-			/*
-			 * Update the list of perspectives from the registry. This will be
-			 * called for each perspective during an import preferences, but is
-			 * necessary to ensure the perspectives list stays consistent with
-			 * the registry
-			 */
-			private void updatePreferenceList(IPreferenceStore store) {
-				IPerspectiveDescriptor[] perspectiveList = getPerspectives();
-				StringBuffer perspBuffer = new StringBuffer();
-				for (int i = 0; i < perspectiveList.length; i++) {
-					PerspectiveDescriptor desc = (PerspectiveDescriptor) perspectiveList[i];
-					if (hasCustomDefinition(desc)) {
-						perspBuffer.append(desc.getId())
-								.append(SPACE_DELIMITER);
-					}
-				}
-				String newList = perspBuffer.toString().trim();
-				store.setValue(IPreferenceConstants.PERSPECTIVES, newList);
-			}
-		};
-	}
-
-	/**
-	 * Adds a perspective. This is typically used by the reader.
-	 * 
-	 * @param desc
-	 */
-	public void addPerspective(PerspectiveDescriptor desc) {
-		if (desc == null) {
-			return;
-		}
-		add(desc);
-	}
-
-	/**
-	 * @param desc
-	 */
-	private void add(PerspectiveDescriptor desc) {
-		perspectives.add(desc);
-		IConfigurationElement element = desc.getConfigElement();
-		if (element != null) {
-			PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-					element.getDeclaringExtension(), desc,
-					IExtensionTracker.REF_WEAK);
-		}
-	}
-
-	/**
-	 * Create a new perspective.
-	 * 
-	 * @param label
-	 *            the name of the new descriptor
-	 * @param originalDescriptor
-	 *            the descriptor on which to base the new descriptor
-	 * @return a new perspective descriptor or <code>null</code> if the
-	 *         creation failed.
-	 */
-	public PerspectiveDescriptor createPerspective(String label,
-			PerspectiveDescriptor originalDescriptor) {
-		// Sanity check to avoid invalid or duplicate labels.
-		if (!validateLabel(label)) {
-			return null;
-		}
-		if (findPerspectiveWithLabel(label) != null) {
-			return null;
-		}
-
-		// Calculate ID.
-		String id = label.replace(' ', '_');
-		id = id.trim();
-
-		// Create descriptor.
-		PerspectiveDescriptor desc = new PerspectiveDescriptor(id, label,
-				originalDescriptor);
-		add(desc);
-		return desc;
-	}
-
-	/**
-	 * Reverts a list of perspectives back to the plugin definition
-	 * 
-	 * @param perspToRevert
-	 */
-	public void revertPerspectives(ArrayList perspToRevert) {
-		// indicate that the user is removing these perspectives
-		for (int i = 0; i < perspToRevert.size(); i++) {
-			PerspectiveDescriptor desc = (PerspectiveDescriptor) perspToRevert
-					.get(i);
-			perspToRemove.add(desc.getId());
-			desc.revertToPredefined();
-		}
-	}
-
-	/**
-	 * Deletes a list of perspectives
-	 * 
-	 * @param perspToDelete
-	 */
-	public void deletePerspectives(ArrayList perspToDelete) {
-		for (int i = 0; i < perspToDelete.size(); i++) {
-			deletePerspective((IPerspectiveDescriptor) perspToDelete.get(i));
-		}
-	}
-
-	/**
-	 * Delete a perspective. Has no effect if the perspective is defined in an
-	 * extension.
-	 * 
-	 * @param in
-	 */
-	public void deletePerspective(IPerspectiveDescriptor in) {
-		PerspectiveDescriptor desc = (PerspectiveDescriptor) in;
-		// Don't delete predefined perspectives
-		if (!desc.isPredefined()) {
-			perspToRemove.add(desc.getId());
-			perspectives.remove(desc);
-			desc.deleteCustomDefinition();
-			verifyDefaultPerspective();
-		}
-	}
-
-	/**
-	 * Delete a perspective. This will remove perspectives defined in
-	 * extensions.
-	 * 
-	 * @param desc
-	 *            the perspective to delete
-	 * @since 3.1
-	 */
-	private void internalDeletePerspective(PerspectiveDescriptor desc) {
-		perspToRemove.add(desc.getId());
-		perspectives.remove(desc);
-		desc.deleteCustomDefinition();
-		verifyDefaultPerspective();
-	}
-
-	/**
-	 * Removes the custom definition of a perspective from the preference store
-	 * 
-	 * @param desc
-	 */
-	/* package */
-	void deleteCustomDefinition(PerspectiveDescriptor desc) {
-		// remove the entry from the preference store.
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-
-		/*
-		 * To delete the perspective definition from the preference store, use
-		 * the setToDefault method. Since no default is defined, this will
-		 * remove the entry
-		 */
-		store.setToDefault(desc.getId() + PERSP);
-
-	}
-
-	/**
-	 * Method hasCustomDefinition.
-	 * 
-	 * @param desc
-	 */
-	/* package */
-	boolean hasCustomDefinition(PerspectiveDescriptor desc) {
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		return store.contains(desc.getId() + PERSP);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveRegistry#findPerspectiveWithId(java.lang.String)
-	 */
-	public IPerspectiveDescriptor findPerspectiveWithId(String id) {	    
-		for (Iterator i = perspectives.iterator(); i.hasNext();) {
-		    PerspectiveDescriptor desc = (PerspectiveDescriptor) i.next();
-			if (desc.getId().equals(id)) {
-			    if (WorkbenchActivityHelper.restrictUseOf(desc)) {
-			        return null;
-			    }
-				return desc;
-			}
-		}
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveRegistry#findPerspectiveWithLabel(java.lang.String)
-	 */
-	public IPerspectiveDescriptor findPerspectiveWithLabel(String label) {
-		for (Iterator i = perspectives.iterator(); i.hasNext();) {
-			PerspectiveDescriptor desc = (PerspectiveDescriptor) i.next();
-			if (desc.getLabel().equals(label)) {
-			    if (WorkbenchActivityHelper.restrictUseOf(desc)) {
-			        return null;
-			    }
-				return desc;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * @see IPerspectiveRegistry#getDefaultPerspective()
-	 */
-	public String getDefaultPerspective() {
-		return defaultPerspID;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveRegistry#getPerspectives()
-	 */
-	public IPerspectiveDescriptor[] getPerspectives() {
-		Collection descs = WorkbenchActivityHelper.restrictCollection(perspectives, new ArrayList());
-		return (IPerspectiveDescriptor[]) descs.toArray(new IPerspectiveDescriptor[descs.size()]);
-	}
-
-	/**
-	 * Loads the registry.
-	 */
-	public void load() {
-		// Load the registries.
-		loadPredefined();
-		loadCustom();
-
-		// Get default perspective.
-		// Get it from the R1.0 dialog settings first. Fixes bug 17039
-		IDialogSettings dialogSettings = WorkbenchPlugin.getDefault()
-				.getDialogSettings();
-		String str = dialogSettings.get(ID_DEF_PERSP);
-		if (str != null && str.length() > 0) {
-			setDefaultPerspective(str);
-			dialogSettings.put(ID_DEF_PERSP, ""); //$NON-NLS-1$
-		}
-		verifyDefaultPerspective();
-	}
-
-	/**
-	 * Read children from the file system.
-	 */
-	private void loadCustom() {
-		Reader reader = null;
-
-		/* Get the entries from the Preference store */
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-
-		/* Get the space-delimited list of custom perspective ids */
-		String customPerspectives = store
-				.getString(IPreferenceConstants.PERSPECTIVES);
-		String[] perspectivesList = StringConverter.asArray(customPerspectives);
-
-		for (int i = 0; i < perspectivesList.length; i++) {
-			try {
-				String xmlString = store.getString(perspectivesList[i] + PERSP);
-				if (xmlString != null && xmlString.length() != 0) {
-					reader = new StringReader(xmlString);
-				}
-
-				// Restore the layout state.
-				XMLMemento memento = XMLMemento.createReadRoot(reader);
-				PerspectiveDescriptor newPersp = new PerspectiveDescriptor(
-						null, null, null);
-				newPersp.restoreState(memento);
-				String id = newPersp.getId();
-				IPerspectiveDescriptor oldPersp = findPerspectiveWithId(id);
-				if (oldPersp == null) {
-					add(newPersp);
-				}
-				reader.close();
-			} catch (IOException e) {
-				unableToLoadPerspective(null);
-			} catch (WorkbenchException e) {
-				unableToLoadPerspective(e.getStatus());
-			}
-		}
-
-		// Get the entries from files, if any
-		// if -data @noDefault specified the state location may not be
-		// initialized
-		IPath path = WorkbenchPlugin.getDefault().getDataLocation();
-		if (path == null) {
-			return;
-		}
-
-		File folder = path.toFile();
-
-		if (folder.isDirectory()) {
-			File[] fileList = folder.listFiles();
-			int nSize = fileList.length;
-			for (int nX = 0; nX < nSize; nX++) {
-				File file = fileList[nX];
-				if (file.getName().endsWith(EXT)) {
-					// get the memento
-					InputStream stream = null;
-					try {
-						stream = new FileInputStream(file);
-						reader = new BufferedReader(new InputStreamReader(
-								stream, "utf-8")); //$NON-NLS-1$
-
-						// Restore the layout state.
-						XMLMemento memento = XMLMemento.createReadRoot(reader);
-						PerspectiveDescriptor newPersp = new PerspectiveDescriptor(
-								null, null, null);
-						newPersp.restoreState(memento);
-						IPerspectiveDescriptor oldPersp = findPerspectiveWithId(newPersp
-								.getId());
-						if (oldPersp == null) {
-							add(newPersp);
-						}
-
-						// save to the preference store
-						saveCustomPersp(newPersp, memento);
-
-						// delete the file
-						file.delete();
-
-						reader.close();
-						stream.close();
-					} catch (IOException e) {
-						unableToLoadPerspective(null);
-					} catch (WorkbenchException e) {
-						unableToLoadPerspective(e.getStatus());
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param status
-	 */
-	private void unableToLoadPerspective(IStatus status) {
-		String msg = WorkbenchMessages.Perspective_errorLoadingState;
-		if (status == null) {
-			IStatus errStatus = new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH, msg); 
-	    	StatusManager.getManager().handle(errStatus, StatusManager.SHOW);
-		} else {
-			IStatus errStatus = StatusUtil.newStatus(status, msg); 
-	    	StatusManager.getManager().handle(errStatus, StatusManager.SHOW);
-		}
-	}
-
-	/**
-	 * Saves a custom perspective definition to the preference store.
-	 * 
-	 * @param desc
-	 *            the perspective
-	 * @param memento
-	 *            the memento to save to
-	 * @throws IOException
-	 */
-	public void saveCustomPersp(PerspectiveDescriptor desc, XMLMemento memento)
-			throws IOException {
-
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-
-		// Save it to the preference store.
-		Writer writer = new StringWriter();
-
-		memento.save(writer);
-		writer.close();
-		store.setValue(desc.getId() + PERSP, writer.toString());
-
-	}
-
-	/**
-	 * Gets the Custom perspective definition from the preference store.
-	 * 
-	 * @param id
-	 *            the id of the perspective to find
-	 * @return IMemento a memento containing the perspective description
-	 * 
-	 * @throws WorkbenchException
-	 * @throws IOException
-	 */
-	public IMemento getCustomPersp(String id) throws WorkbenchException,
-			IOException {
-		Reader reader = null;
-
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		String xmlString = store.getString(id + PERSP);
-		if (xmlString != null && xmlString.length() != 0) { // defined in store
-			reader = new StringReader(xmlString);
-		}
-		XMLMemento memento = XMLMemento.createReadRoot(reader);
-		reader.close();
-		return memento;
-	}
-
-	/**
-	 * Read children from the plugin registry.
-	 */
-	private void loadPredefined() {
-		PerspectiveRegistryReader reader = new PerspectiveRegistryReader(this);
-		reader.readPerspectives(Platform.getExtensionRegistry());
-	}
-
-	/**
-	 * @see IPerspectiveRegistry#setDefaultPerspective(String)
-	 */
-	public void setDefaultPerspective(String id) {
-		IPerspectiveDescriptor desc = findPerspectiveWithId(id);
-		if (desc != null) {
-			defaultPerspID = id;
-			PrefUtil.getAPIPreferenceStore().setValue(
-					IWorkbenchPreferenceConstants.DEFAULT_PERSPECTIVE_ID, id);
-		}
-	}
-
-	/**
-	 * Return <code>true</code> if a label is valid. This checks only the
-	 * given label in isolation. It does not check whether the given label is
-	 * used by any existing perspectives.
-	 * 
-	 * @param label
-	 *            the label to test
-	 * @return whether the label is valid
-	 */
-	public boolean validateLabel(String label) {
-		label = label.trim();
-		if (label.length() <= 0) {
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Verifies the id of the default perspective. If the default perspective is
-	 * invalid use the workbench default.
-	 */
-	private void verifyDefaultPerspective() {
-		// Step 1: Try current defPerspId value.
-		IPerspectiveDescriptor desc = null;
-		if (defaultPerspID != null) {
-			desc = findPerspectiveWithId(defaultPerspID);
-		}
-		if (desc != null) {
-			return;
-		}
-
-		// Step 2. Read default value.
-		String str = PrefUtil.getAPIPreferenceStore().getString(
-				IWorkbenchPreferenceConstants.DEFAULT_PERSPECTIVE_ID);
-		if (str != null && str.length() > 0) {
-			desc = findPerspectiveWithId(str);
-		}
-		if (desc != null) {
-			defaultPerspID = str;
-			return;
-		}
-
-		// Step 3. Use application-specific default
-		defaultPerspID = Workbench.getInstance().getDefaultPerspectiveId();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveRegistry#clonePerspective(java.lang.String,
-	 *      java.lang.String, org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public IPerspectiveDescriptor clonePerspective(String id, String label,
-			IPerspectiveDescriptor originalDescriptor) {
-
-		// Check for invalid labels
-		if (label == null || !(label.trim().length() > 0)) {
-			throw new IllegalArgumentException();
-		}
-
-		// Check for duplicates
-		IPerspectiveDescriptor desc = findPerspectiveWithId(id);
-		if (desc != null) {
-			throw new IllegalArgumentException();
-		}
-
-		// Create descriptor.
-		desc = new PerspectiveDescriptor(id, label,
-				(PerspectiveDescriptor) originalDescriptor);
-		add((PerspectiveDescriptor) desc);
-		return desc;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveRegistry#revertPerspective(org.eclipse.ui.IPerspectiveDescriptor)
-	 */
-	public void revertPerspective(IPerspectiveDescriptor perspToRevert) {
-		PerspectiveDescriptor desc = (PerspectiveDescriptor) perspToRevert;
-		perspToRemove.add(desc.getId());
-		desc.revertToPredefined();
-	}
-
-	/**
-	 * Dispose the receiver.
-	 */
-	public void dispose() {
-		PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(this);
-		WorkbenchPlugin.getDefault().getPreferenceStore()
-				.removePropertyChangeListener(preferenceListener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension,
-	 *      java.lang.Object[])
-	 */
-	public void removeExtension(IExtension source, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof PerspectiveDescriptor) {
-				// close the perspective in all windows
-				IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
-						.getWorkbenchWindows();
-				PerspectiveDescriptor desc = (PerspectiveDescriptor) objects[i];
-				for (int w = 0; w < windows.length; ++w) {
-					IWorkbenchWindow window = windows[w];
-					IWorkbenchPage[] pages = window.getPages();
-					for (int p = 0; p < pages.length; ++p) {
-						WorkbenchPage page = (WorkbenchPage) pages[p];
-						ClosePerspectiveHandler.closePerspective(page, page
-								.findPerspective(desc));
-					}
-				}
-
-				// ((Workbench)PlatformUI.getWorkbench()).getPerspectiveHistory().removeItem(desc);
-
-				internalDeletePerspective(desc);
-			}
-
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker,
-	 *      org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker,
-			IExtension addedExtension) {
-		IConfigurationElement[] addedElements = addedExtension
-				.getConfigurationElements();
-		for (int i = 0; i < addedElements.length; i++) {
-			PerspectiveRegistryReader reader = new PerspectiveRegistryReader(
-					this);
-			reader.readElement(addedElements[i]);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistryReader.java
deleted file mode 100644
index 244c93f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PerspectiveRegistryReader.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * A strategy to read view extensions from the registry.
- */
-public class PerspectiveRegistryReader extends RegistryReader {
-    private PerspectiveRegistry registry;
-
-    /**
-     * RegistryViewReader constructor comment.
-     * 
-     * @param out the output registry
-     */
-    public PerspectiveRegistryReader(PerspectiveRegistry out) {
-        super();
-    	registry = out;
-    }
-
-    /**
-     * readElement method comment.
-     */
-    // for dynamic UI - change access from protected to public
-    protected boolean readElement(IConfigurationElement element) {
-        if (element.getName().equals(IWorkbenchRegistryConstants.TAG_PERSPECTIVE)) {
-            try {
-                PerspectiveDescriptor desc = new PerspectiveDescriptor(element.getAttribute(IWorkbenchRegistryConstants.ATT_ID), element);
-                registry.addPerspective(desc);
-            } catch (CoreException e) {
-                // log an error since its not safe to open a dialog here
-                WorkbenchPlugin.log(
-                        "Unable to create layout descriptor.", e.getStatus());//$NON-NLS-1$
-            }
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Read the view extensions within a registry.
-     * 
-     * @param in the registry to read
-     */
-    public void readPerspectives(IExtensionRegistry in) {
-        readRegistry(in, PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_PERSPECTIVES);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java
deleted file mode 100644
index c3108f4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageParameterValues.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.registry;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * <p>
- * Provides the parameter values for the show preferences command.
- * </p>
- * <p>
- * To disambiguate preference pages with the same local label, names are
- * constructed incorporating the full path of preference page labels. For
- * instance names like <code>General > Appearance</code> and
- * <code>Java > Appearance</code> avoid the problem of trying to put two
- * <code>Appearance</code> keys into the parameter values map.
- * </p>
- * <p>
- * This is only intended for use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class PreferencePageParameterValues implements IParameterValues {
-
-	public PreferencePageParameterValues() {
-		Platform.getExtensionRegistry().addRegistryChangeListener(
-				new IRegistryChangeListener() {
-
-					/*
-					 * (non-Javadoc)
-					 * 
-					 * @see org.eclipse.core.runtime.IRegistryChangeListener#registryChanged(org.eclipse.core.runtime.IRegistryChangeEvent)
-					 */
-					public void registryChanged(IRegistryChangeEvent event) {
-						if (event.getExtensionDeltas(PlatformUI.PLUGIN_ID,
-								IWorkbenchRegistryConstants.PL_PREFERENCES).length > 0) {
-							preferenceMap = null;
-						}
-					}
-				});
-	}
-
-	private Map preferenceMap;
-
-	/**
-	 * Iterate through the preference page and build the map of preference page
-	 * names to ids.
-	 * 
-	 * @param values
-	 *            The Map being populated with parameter values.
-	 * @param preferenceNodes
-	 *            An array of <code>IPreferenceNode</code> to process.
-	 * @param namePrefix
-	 *            A string incorporating the names of each parent
-	 *            <code>IPreferenceNode</code> up to the root of the
-	 *            preference page tree. This will be <code>null</code> for the
-	 *            root level preference page nodes.
-	 */
-	private final void collectParameterValues(final Map values,
-			final IPreferenceNode[] preferenceNodes, final String namePrefix) {
-
-		for (int i = 0; i < preferenceNodes.length; i++) {
-			final IPreferenceNode preferenceNode = preferenceNodes[i];
-
-			final String name;
-			if (namePrefix == null) {
-				name = preferenceNode.getLabelText();
-			} else {
-				name = namePrefix
-						+ WorkbenchMessages.PreferencePageParameterValues_pageLabelSeparator
-						+ preferenceNode.getLabelText();
-			}
-			final String value = preferenceNode.getId();
-			values.put(name, value);
-
-			collectParameterValues(values, preferenceNode.getSubNodes(), name);
-		}
-	}
-
-	public final Map getParameterValues() {
-		if (preferenceMap == null) {
-			preferenceMap = new TreeMap();
-
-			final PreferenceManager preferenceManager = PlatformUI
-					.getWorkbench().getPreferenceManager();
-			collectParameterValues(preferenceMap, preferenceManager
-					.getRootSubNodes(), null);
-		}
-
-		return preferenceMap;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java
deleted file mode 100644
index 3955d6d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferencePageRegistryReader.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceNode;
-
-/**
- *  Instances access the registry that is provided at creation time in order
- *  to determine the contributed preference pages
- */
-public class PreferencePageRegistryReader extends CategorizedPageRegistryReader {
-
-	private static final String TAG_PAGE = "page"; //$NON-NLS-1$
-
-	private List nodes;
-
-	private IWorkbench workbench;
-	
-
-	class PreferencesCategoryNode extends CategoryNode {
-
-		WorkbenchPreferenceNode node;
-
-		/**
-		 * Create a new instance of the receiver.
-		 * @param reader
-		 * @param nodeToCategorize
-		 */
-		public PreferencesCategoryNode(CategorizedPageRegistryReader reader,
-				WorkbenchPreferenceNode nodeToCategorize) {
-			super(reader);
-			this.node = nodeToCategorize;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader.CategoryNode#getLabelText()
-		 */
-		String getLabelText() {
-			return node.getLabelText();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader.CategoryNode#getLabelText(java.lang.Object)
-		 */
-		String getLabelText(Object element) {
-			return ((WorkbenchPreferenceNode) element).getLabelText();
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader.CategoryNode#getNode()
-		 */
-		Object getNode() {
-			return node;
-		}
-	}
-
-	/**
-	 * Create a new instance configured with the workbench
-	 * 
-	 * @param newWorkbench the workbench
-	 */
-	public PreferencePageRegistryReader(IWorkbench newWorkbench) {
-		workbench = newWorkbench;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#findNode(java.lang.String)
-	 */
-	Object findNode(String id) {
-		for (int i = 0; i < nodes.size(); i++) {
-			WorkbenchPreferenceNode node = (WorkbenchPreferenceNode) nodes.get(i);
-			if (node.getId().equals(id)) {
-				return node;
-			}
-		}
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#findNode(java.lang.Object, java.lang.String)
-	 */
-	Object findNode(Object parent, String currentToken) {
-		IPreferenceNode[] subNodes = ((WorkbenchPreferenceNode) parent).getSubNodes();
-		for (int i = 0; i < subNodes.length; i++) {
-			WorkbenchPreferenceNode node = (WorkbenchPreferenceNode) subNodes[i];
-			if (node.getId().equals(currentToken)) {
-				return node;
-			}
-		}
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#add(java.lang.Object, java.lang.Object)
-	 */
-	void add(Object parent, Object node) {
-		((IPreferenceNode) parent).add((IPreferenceNode) node);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#createCategoryNode(org.eclipse.ui.internal.registry.CategorizedPageRegistryReader, java.lang.Object)
-	 */
-	CategoryNode createCategoryNode(CategorizedPageRegistryReader reader, Object object) {
-		return new PreferencesCategoryNode(reader, (WorkbenchPreferenceNode) object);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#getCategory(java.lang.Object)
-	 */
-	String getCategory(Object node) {
-		return ((WorkbenchPreferenceNode) node).getCategory();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#getNodes()
-	 */
-	Collection getNodes() {
-		return nodes;
-	}
-
-	/**
-	 * Load the preference page contirbutions from the registry and
-	 * organize preference node contributions by category into hierarchies
-	 * If there is no page for a given node in the hierarchy then a blank
-	 * page will be created.
-	 * If no category has been specified or category information
-	 * is incorrect, page will appear at the root level. workbench
-	 * log entry will be created for incorrect category information.
-	 * 
-	 * @param registry the extension registry
-	 */
-	public void loadFromRegistry(IExtensionRegistry registry) {
-		nodes = new ArrayList();
-
-		readRegistry(registry, PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_PREFERENCES);
-
-		processNodes();
-
-	}
-
-	/**
-	 * Read preference page element.
-	 */
-	protected boolean readElement(IConfigurationElement element) {
-		if (element.getName().equals(TAG_PAGE) == false) {
-			return false;
-		}
-		WorkbenchPreferenceNode node = createNode(element);
-		if (node != null) {
-			if (node.getId().equals(((Workbench) workbench).getMainPreferencePageId()))
-				node.setPriority(-1);
-			nodes.add(node);
-		}
-		return true;
-	}
-
-	/**
-	 * Create a workbench preference node.
-	 * @param element
-	 * @return WorkbenchPreferenceNode
-	 */
-	public static WorkbenchPreferenceNode createNode(IConfigurationElement element) {
-		boolean nameMissing = element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME) == null;
-		String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);		
-		boolean classMissing = getClassValue(element, IWorkbenchRegistryConstants.ATT_CLASS) == null;
-
-		if (nameMissing) {
-			logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_NAME);
-		}
-		if (id == null) {
-			logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_ID);
-		}
-		if (classMissing) {
-			logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_CLASS);
-		}
-		
-		if (nameMissing || id == null || classMissing) {
-			return null;
-		}
-
-		WorkbenchPreferenceNode node = new WorkbenchPreferenceNode(id, element);
-		return node;
-	}
-
-	/**
-	 * Return the top level IPreferenceNodes, minus the one which fail the
-	 * Expression check.
-	 * @return  Collection of IPreferenceNode.
-	 */
-	public Collection getTopLevelNodes() {
-		return WorkbenchActivityHelper.restrictCollection(topLevelNodes, new ArrayList());
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java
deleted file mode 100644
index b728c71..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PreferenceTransferRegistryReader.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.registry;
-
-import com.ibm.icu.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.PreferenceFilterEntry;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
-
-/**
- * Preference Transfer registry reader to read extenders of the
- * preferenceTranser schema.
- * 
- * @since 3.1
- */
-public class PreferenceTransferRegistryReader extends RegistryReader {
-	private List preferenceTransfers;
-
-	private String pluginPoint;
-
-	/**
-	 * Create an instance of this class.
-	 * 
-	 * @param pluginPointId
-	 *            java.lang.String
-	 */
-	public PreferenceTransferRegistryReader(String pluginPointId) {
-		pluginPoint = pluginPointId;
-	}
-
-
-
-	/**
-	 * Returns a new PreferenceTransferElement 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
-	 */
-	protected PreferenceTransferElement createPreferenceTransferElement(
-			IConfigurationElement element) {
-		// PreferenceTransfers must have a name and class attribute
-		if (element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME) == null) {
-			logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_NAME);
-			return null;
-		}
-
-		// must specifiy a mapping
-		if (element.getChildren(IWorkbenchRegistryConstants.TAG_MAPPING) == null) {
-			logMissingElement(element, IWorkbenchRegistryConstants.TAG_MAPPING);
-			return null;
-		}
-
-		return new PreferenceTransferElement(element);
-	}
-
-	/**
-	 * Returns a sorted list of preference transfers.
-	 * 
-	 * @return an array of <code>IPreferenceTransfer</code> objects
-	 */
-	public PreferenceTransferElement[] getPreferenceTransfers() {
-		readPreferenceTransfers();
-		PreferenceTransferElement[] transfers = new PreferenceTransferElement[preferenceTransfers
-				.size()];
-		Collections.sort(preferenceTransfers, new Comparator() {
-			public int compare(Object o1, Object o2) {
-				String name1 = ((PreferenceTransferElement) o1).getName();
-				String name2 = ((PreferenceTransferElement) o2).getName();
-
-				return Collator.getInstance().compare(name1, name2);
-			}
-		});
-		preferenceTransfers.toArray(transfers);
-		return transfers;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-	 */
-	protected boolean readElement(IConfigurationElement element) {
-		if (element.getName().equals(IWorkbenchRegistryConstants.TAG_TRANSFER)) {
-
-			PreferenceTransferElement transfer = createPreferenceTransferElement(element);
-			if (transfer != null)
-				preferenceTransfers.add(transfer);
-			return true;
-		}
-
-		// Allow settings transfers as well.
-
-		return element.getName().equals(
-				IWorkbenchRegistryConstants.TAG_SETTINGS_TRANSFER);
-	}
-
-	/**
-	 * Reads the wizards in a registry.
-	 */
-	protected void readPreferenceTransfers() {
-		preferenceTransfers = new ArrayList();
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		readRegistry(registry, WorkbenchPlugin.PI_WORKBENCH, pluginPoint);
-	}
-
-	/**
-	 * Get the preference mappings.
-	 * 
-	 * @param configElement
-	 * @return the child configuration elements
-	 */
-	public static IConfigurationElement[] getMappings(
-			IConfigurationElement configElement) {
-		IConfigurationElement[] children = configElement
-				.getChildren(IWorkbenchRegistryConstants.TAG_MAPPING);
-		if (children.length < 1) {
-			logMissingElement(configElement,
-					IWorkbenchRegistryConstants.TAG_MAPPING);
-			return null;
-		}
-		return children;
-	}
-
-	/**
-	 * @param element
-	 * @return the scope attribute for this element
-	 */
-	public static String getScope(IConfigurationElement element) {
-		return element.getAttribute(IWorkbenchRegistryConstants.ATT_SCOPE);
-	}
-
-	/**
-	 * @param element
-	 * @return the maps mapping nodes to keys for this element
-	 */
-	public static Map getEntry(IConfigurationElement element) {
-		IConfigurationElement[] entries = element
-				.getChildren(IWorkbenchRegistryConstants.TAG_ENTRY);
-		if (entries.length == 0) {
-			return null;
-		}
-		Map map = new HashMap(entries.length);
-		for (int i = 0; i < entries.length; i++) {
-			IConfigurationElement entry = entries[i];
-			IConfigurationElement[] keys = entry
-					.getChildren(IWorkbenchRegistryConstants.ATT_KEY);
-			PreferenceFilterEntry[] prefFilters = null;
-			if (keys.length > 0) {
-				prefFilters = new PreferenceFilterEntry[keys.length];
-				for (int j = 0; j < keys.length; j++) {
-					IConfigurationElement keyElement = keys[j];
-					prefFilters[j] = new PreferenceFilterEntry(keyElement
-							.getAttribute(IWorkbenchRegistryConstants.ATT_NAME));
-				}
-			}
-			map.put(entry.getAttribute(IWorkbenchRegistryConstants.ATT_NODE),
-					prefFilters);
-		}
-		return map;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java
deleted file mode 100644
index eccaed8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/PropertyPagesRegistryReader.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
-import org.eclipse.ui.internal.dialogs.RegistryPageContributor;
-
-/**
- * This class loads property pages from the registry.
- */
-public class PropertyPagesRegistryReader extends CategorizedPageRegistryReader {
-
-	/**
-	 * Value "<code>nameFilter</code>".
-	 */
-	public static final String ATT_NAME_FILTER = "nameFilter";//$NON-NLS-1$
-
-	/**
-	 * Value "<code>name</code>".
-	 */
-	public static final String ATT_FILTER_NAME = "name";//$NON-NLS-1$
-
-	/**
-	 * Value "<code>value</code>".
-	 */
-	public static final String ATT_FILTER_VALUE = "value";//$NON-NLS-1$
-
-	private static final String TAG_PAGE = "page";//$NON-NLS-1$
-
-	/**
-	 * Value "<code>filter</code>".
-	 */
-	public static final String TAG_FILTER = "filter";//$NON-NLS-1$
-
-	/**
-	 * Value "<code>keywordReference</code>".
-	 */
-	public static final String TAG_KEYWORD_REFERENCE = "keywordReference";//$NON-NLS-1$
-
-	/**
-	 * Value "<code>objectClass</code>".
-	 */
-	public static final String ATT_OBJECTCLASS = "objectClass";//$NON-NLS-1$
-
-	/**
-	 * Value "<code>adaptable</code>".
-	 */
-	public static final String ATT_ADAPTABLE = "adaptable";//$NON-NLS-1$
-
-	private static final String CHILD_ENABLED_WHEN = "enabledWhen"; //$NON-NLS-1$;
-
-	private Collection pages = new ArrayList();
-
-	private PropertyPageContributorManager manager;
-
-	class PropertyCategoryNode extends CategoryNode {
-
-		RegistryPageContributor page;
-
-		/**
-		 * Create a new category node on the given reader for the property page.
-		 * 
-		 * @param reader
-		 * @param propertyPage
-		 */
-		PropertyCategoryNode(CategorizedPageRegistryReader reader,
-				RegistryPageContributor propertyPage) {
-			super(reader);
-			page = propertyPage;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader.CategoryNode#getLabelText()
-		 */
-		String getLabelText() {
-			return page.getPageName();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader.CategoryNode#getLabelText(java.lang.Object)
-		 */
-		String getLabelText(Object element) {
-			return ((RegistryPageContributor) element).getPageName();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader.CategoryNode#getNode()
-		 */
-		Object getNode() {
-			return page;
-		}
-	}
-
-	/**
-	 * The constructor.
-	 * 
-	 * @param manager
-	 *            the manager
-	 */
-	public PropertyPagesRegistryReader(PropertyPageContributorManager manager) {
-		this.manager = manager;
-	}
-
-	/**
-	 * Reads static property page specification.
-	 */
-	private void processPageElement(IConfigurationElement element) {
-		String pageId = element
-				.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-
-		if (pageId == null) {
-			logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_ID);
-			return;
-		}
-
-		RegistryPageContributor contributor = new RegistryPageContributor(
-				pageId, element);
-
-		String pageClassName = getClassValue(element,
-				IWorkbenchRegistryConstants.ATT_CLASS);
-		if (pageClassName == null) {
-			logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_CLASS);
-			return;
-		}
-		if (element.getAttribute(ATT_OBJECTCLASS) == null) {
-			pages.add(contributor);
-			manager.registerContributor(contributor, Object.class.getName());
-		} else {
-			List objectClassNames = new ArrayList();
-			objectClassNames.add(element.getAttribute(ATT_OBJECTCLASS));
-			registerContributors(contributor, objectClassNames);
-		}
-	}
-
-	/**
-	 * Register the contributor for all of the relevant classes.
-	 * 
-	 * @param contributor
-	 * @param objectClassNames
-	 */
-	private void registerContributors(RegistryPageContributor contributor,
-			List objectClassNames) {
-
-		pages.add(contributor);
-		for (Iterator iter = objectClassNames.iterator(); iter.hasNext();) {
-			manager.registerContributor(contributor, (String) iter.next());
-		}
-
-	}
-
-
-	/**
-	 * Reads the next contribution element.
-	 * 
-	 * public for dynamic UI
-	 */
-	public boolean readElement(IConfigurationElement element) {
-		if (element.getName().equals(TAG_PAGE)) {
-			processPageElement(element);
-			readElementChildren(element);
-			return true;
-		}
-		if (element.getName().equals(TAG_FILTER)) {
-			return true;
-		}
-
-		if (element.getName().equals(CHILD_ENABLED_WHEN)) {
-			return true;
-		}
-
-		if (element.getName().equals(TAG_KEYWORD_REFERENCE)) {
-			return true;
-		}
-
-		return false;
-	}
-
-	/**
-	 * Reads all occurances of propertyPages extension in the registry.
-	 * 
-	 * @param registry
-	 *            the registry
-	 */
-	public void registerPropertyPages(IExtensionRegistry registry) {
-		readRegistry(registry, PlatformUI.PLUGIN_ID,
-				IWorkbenchRegistryConstants.PL_PROPERTY_PAGES);
-		processNodes();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#add(java.lang.Object,
-	 *      java.lang.Object)
-	 */
-	void add(Object parent, Object node) {
-		((RegistryPageContributor) parent)
-				.addSubPage((RegistryPageContributor) node);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#createCategoryNode(org.eclipse.ui.internal.registry.CategorizedPageRegistryReader,
-	 *      java.lang.Object)
-	 */
-	CategoryNode createCategoryNode(CategorizedPageRegistryReader reader,
-			Object object) {
-		return new PropertyCategoryNode(reader,
-				(RegistryPageContributor) object);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#findNode(java.lang.Object,
-	 *      java.lang.String)
-	 */
-	Object findNode(Object parent, String currentToken) {
-		return ((RegistryPageContributor) parent).getChild(currentToken);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#findNode(java.lang.String)
-	 */
-	Object findNode(String id) {
-		Iterator iterator = pages.iterator();
-		while (iterator.hasNext()) {
-			RegistryPageContributor next = (RegistryPageContributor) iterator
-					.next();
-			if (next.getPageId().equals(id))
-				return next;
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#getCategory(java.lang.Object)
-	 */
-	String getCategory(Object node) {
-		return ((RegistryPageContributor) node).getCategory();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.registry.CategorizedPageRegistryReader#getNodes()
-	 */
-	Collection getNodes() {
-		return pages;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/RegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/RegistryReader.java
deleted file mode 100644
index e1ade98..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/RegistryReader.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- *	Template implementation of a registry reader that creates objects
- *	representing registry contents. Typically, an extension
- * contains one element, but this reader handles multiple
- * elements per extension.
- *
- * To start reading the extensions from the registry for an
- * extension point, call the method <code>readRegistry</code>.
- *
- * To read children of an IConfigurationElement, call the
- * method <code>readElementChildren</code> from your implementation
- * of the method <code>readElement</code>, as it will not be
- * done by default.
- */
-public abstract class RegistryReader {
-	
-    // for dynamic UI - remove this cache to avoid inconsistency
-    //protected static Hashtable extensionPoints = new Hashtable();
-    /**
-     * The constructor.
-     */
-    protected RegistryReader() {
-    }
-
-    /**
-     * Logs the error in the workbench log using the provided
-     * text and the information in the configuration element.
-     */
-    protected static void logError(IConfigurationElement element, String text) {
-        IExtension extension = element.getDeclaringExtension();
-        StringBuffer buf = new StringBuffer();
-        buf
-                .append("Plugin " + extension.getNamespace() + ", extension " + extension.getExtensionPointUniqueIdentifier());//$NON-NLS-2$//$NON-NLS-1$
-        // look for an ID if available - this should help debugging
-        String id = element.getAttribute("id"); //$NON-NLS-1$
-        if (id != null) {
-        	buf.append(", id "); //$NON-NLS-1$
-        	buf.append(id);
-        }
-        buf.append(": " + text);//$NON-NLS-1$
-        WorkbenchPlugin.log(buf.toString());
-    }
-
-    /**
-     * Logs a very common registry error when a required attribute is missing.
-     */
-    protected static void logMissingAttribute(IConfigurationElement element,
-            String attributeName) {
-        logError(element,
-                "Required attribute '" + attributeName + "' not defined");//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Logs a very common registry error when a required child is missing.
-     */
-    protected static void logMissingElement(IConfigurationElement element,
-            String elementName) {
-        logError(element,
-                "Required sub element '" + elementName + "' not defined");//$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /**
-     * Logs a registry error when the configuration element is unknown.
-     */
-    protected static void logUnknownElement(IConfigurationElement element) {
-        logError(element, "Unknown extension tag found: " + element.getName());//$NON-NLS-1$
-    }
-
-    /**
-     * Apply a reproducable order to the list of extensions
-     * provided, such that the order will not change as
-     * extensions are added or removed.
-     * @param extensions the extensions to order
-     * @return ordered extensions
-     */
-    public static IExtension[] orderExtensions(IExtension[] extensions) {
-        // By default, the order is based on plugin id sorted
-        // in ascending order. The order for a plugin providing
-        // more than one extension for an extension point is
-        // dependent in the order listed in the XML file.
-        IExtension[] sortedExtension = new IExtension[extensions.length];
-        System.arraycopy(extensions, 0, sortedExtension, 0, extensions.length);
-        Comparator comparer = new Comparator() {
-            public int compare(Object arg0, Object arg1) {
-                String s1 = ((IExtension) arg0).getNamespace();
-                String s2 = ((IExtension) arg1).getNamespace();
-                return s1.compareToIgnoreCase(s2);
-            }
-        };
-        Collections.sort(Arrays.asList(sortedExtension), comparer);
-        return sortedExtension;
-    }
-
-    /**
-     * Implement this method to read element's attributes.
-     * If children should also be read, then implementor
-     * is responsible for calling <code>readElementChildren</code>.
-     * Implementor is also responsible for logging missing 
-     * attributes.
-     *
-     * @return true if element was recognized, false if not.
-     */
-    protected abstract boolean readElement(IConfigurationElement element);
-
-    /**
-     * Read the element's children. This is called by
-     * the subclass' readElement method when it wants
-     * to read the children of the element.
-     */
-    protected void readElementChildren(IConfigurationElement element) {
-        readElements(element.getChildren());
-    }
-
-    /**
-     * Read each element one at a time by calling the
-     * subclass implementation of <code>readElement</code>.
-     *
-     * Logs an error if the element was not recognized.
-     */
-    protected void readElements(IConfigurationElement[] elements) {
-        for (int i = 0; i < elements.length; i++) {
-            if (!readElement(elements[i])) {
-				logUnknownElement(elements[i]);
-			}
-        }
-    }
-
-    /**
-     * Read one extension by looping through its
-     * configuration elements.
-     */
-    protected void readExtension(IExtension extension) {
-        readElements(extension.getConfigurationElements());
-    }
-
-    /**
-     *	Start the registry reading process using the
-     * supplied plugin ID and extension point.
-     * 
-     * @param registry the registry to read from
-     * @param pluginId the plugin id of the extenion point
-     * @param extensionPoint the extension point id
-     */
-    public void readRegistry(IExtensionRegistry registry, String pluginId,
-            String extensionPoint) {
-        IExtensionPoint point = registry.getExtensionPoint(pluginId,
-                extensionPoint);
-        if (point == null) {
-			return;
-		}
-        IExtension[] extensions = point.getExtensions();
-        extensions = orderExtensions(extensions);
-        for (int i = 0; i < extensions.length; i++) {
-			readExtension(extensions[i]);
-		}
-    }
-    
-    /**
-     * Utility for extracting the description child of an element.
-     * 
-     * @param configElement the element
-     * @return the description
-     * @since 3.1
-     */
-    public static String getDescription(IConfigurationElement configElement) {
-		IConfigurationElement[] children = configElement.getChildren(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-	    if (children.length >= 1) {
-	        return children[0].getValue();
-	    }
-	    return "";//$NON-NLS-1$
-    }
-    
-    /**
-	 * Utility for extracting the value of a class attribute or a nested class
-	 * element that follows the pattern set forth by
-	 * {@link org.eclipse.core.runtime.IExecutableExtension}.
-	 * 
-	 * @param configElement
-	 *            the element
-	 * @param classAttributeName
-	 *            the name of the class attribute to check
-	 * @return the value of the attribute or nested class element
-	 * @since 3.1
-	 */
-    public static String getClassValue(IConfigurationElement configElement, String classAttributeName) {
-    	String className = configElement.getAttribute(classAttributeName);
-    	if (className != null) {
-			return className;
-		}
-		IConfigurationElement [] candidateChildren = configElement.getChildren(classAttributeName);
-		if (candidateChildren.length == 0) {
-			return null;
-		}
-	
-		return candidateChildren[0].getAttribute(IWorkbenchRegistryConstants.ATT_CLASS);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ShowViewHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ShowViewHandler.java
deleted file mode 100644
index 7ea6e54..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ShowViewHandler.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * Command handler to show a particular view.
- * 
- * @since 3.0
- */
-public final class ShowViewHandler extends AbstractHandler {
-	
-	/**
-	 * The identifier of the view this handler should open. This value should
-	 * never be <code>null</code>.
-	 */
-	private final String viewId;
-
-	/**
-	 * Constructs a new instance of <code>ShowViewHandler</code>.
-	 * 
-	 * @param viewId
-	 *            The identifier of the view this handler should open; must not
-	 *            be <code>null</code>.
-	 */
-	public ShowViewHandler(final String viewId) {
-		this.viewId = viewId;
-	}
-
-	public final Object execute(final ExecutionEvent event) 
-			throws ExecutionException {
-		final IWorkbenchWindow activeWorkbenchWindow = HandlerUtil
-				.getActiveWorkbenchWindowChecked(event);
-
-		final IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
-		if (activePage == null) {
-			return null;
-		}
-
-		try {
-			activePage.showView(viewId);
-		} catch (PartInitException e) {
-			IStatus status = StatusUtil
-					.newStatus(e.getStatus(), e.getMessage());
-			StatusManager.getManager().handle(status, StatusManager.SHOW);
-		}
-
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/StickyViewDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/StickyViewDescriptor.java
deleted file mode 100644
index 6d77dee..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/StickyViewDescriptor.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.views.IStickyViewDescriptor;
-
-/**
- * @since 3.0
- */
-public class StickyViewDescriptor implements IStickyViewDescriptor, 
-	IPluginContribution {
-
-    private IConfigurationElement configurationElement;
-
-	private String id;
-	
-	/**
-	 * Folder constant for right sticky views.
-	 */
-	public static final String STICKY_FOLDER_RIGHT = "stickyFolderRight"; //$NON-NLS-1$
-
-	/**
-	 * Folder constant for left sticky views.
-	 */
-	public static final String STICKY_FOLDER_LEFT = "stickyFolderLeft"; //$NON-NLS-1$
-
-	/**
-	 * Folder constant for top sticky views.
-	 */
-	public static final String STICKY_FOLDER_TOP = "stickyFolderTop"; //$NON-NLS-1$
-
-	/**
-	 * Folder constant for bottom sticky views.
-	 */	
-	public static final String STICKY_FOLDER_BOTTOM = "stickyFolderBottom"; //$NON-NLS-1$
-
-    /**
-     * @param element
-     * @throws CoreException
-     */
-    public StickyViewDescriptor(IConfigurationElement element)
-            throws CoreException {
-    	this.configurationElement = element;
-    	id = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        if (id == null) {
-			throw new CoreException(new Status(IStatus.ERROR, element
-                    .getNamespace(), 0,
-                    "Invalid extension (missing id) ", null));//$NON-NLS-1$
-		}
-    }
-    
-	/**
-     * Return the configuration element.
-     * 
-	 * @return the configuration element
-	 */
-	public IConfigurationElement getConfigurationElement() {
-		return configurationElement;
-	}
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.IStickyViewDescriptor#getLocation()
-     */
-    public int getLocation() {
-    	int direction = IPageLayout.RIGHT;
-    	
-    	String location = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_LOCATION);
-        if (location != null) {
-            if (location.equalsIgnoreCase("left")) { //$NON-NLS-1$
-				direction = IPageLayout.LEFT;
-			} else if (location.equalsIgnoreCase("top")) { //$NON-NLS-1$
-				direction = IPageLayout.TOP;
-			} else if (location.equalsIgnoreCase("bottom")) { //$NON-NLS-1$
-				direction = IPageLayout.BOTTOM;
-            //no else for right - it is the default value;
-			}
-        }    	
-        return direction;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IStickyViewDescriptor#getId()
-     */
-    public String getId() {
-        return id;
-    }
-    
-    public String getLocalId() {
-    	return id;
-    }
-
-    public String getPluginId() {
-    	return configurationElement.getContributor().getName();
-    }
-    
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IStickyViewDescriptor#isFixed()
-     */
-    public boolean isCloseable() {
-    	boolean closeable = true;
-    	String closeableString = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_CLOSEABLE);
-        if (closeableString != null) {
-            closeable = !closeableString.equals("false"); //$NON-NLS-1$
-        }
-        return closeable;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IStickyViewDescriptor#isMoveable()
-     */
-    public boolean isMoveable() {
-    	boolean moveable = true;
-    	String moveableString = configurationElement.getAttribute(IWorkbenchRegistryConstants.ATT_MOVEABLE);
-        if (moveableString != null) {
-            moveable = !moveableString.equals("false"); //$NON-NLS-1$
-        }    	
-        return moveable;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/UIExtensionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/UIExtensionTracker.java
deleted file mode 100644
index 5154f71..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/UIExtensionTracker.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * @since 3.1
- */
-public class UIExtensionTracker extends ExtensionTracker {
-    private Display display;
-
-    // SOMETHING HAS NOT BEEN DONE IN THE REGISTTRY CHANGED CODE
-    // if (!PlatformUI.isWorkbenchRunning())
-    // return;
-    // int numDeltas = 0;
-    // Display display = PlatformUI.getWorkbench().getDisplay();
-    // if (display == null || display.isDisposed())
-    // return;
-    // It seems that the tracker should be closed.
-
-    /**
-	 * @param display
-	 */
-	public UIExtensionTracker(Display display) {
-		this.display = display;
-	}
-
-	protected void applyRemove(final IExtensionChangeHandler handler, final IExtension removedExtension, final Object[] objects) {
-        display.syncExec(new Runnable() {
-
-            public void run() {
-                try {
-                    handler.removeExtension(removedExtension, objects);
-                } catch (Exception e) {
-                    WorkbenchPlugin.log(getClass(), "doRemove", e); //$NON-NLS-1$
-                }
-            }
-        });
-    }
-
-    protected void applyAdd(final IExtensionChangeHandler handler, final IExtension addedExtension) {
-        display.syncExec(new Runnable() {
-            public void run() {
-                try {
-                    handler.addExtension(UIExtensionTracker.this, addedExtension);
-                } catch (Exception e) {
-                    WorkbenchPlugin.log(getClass(), "doAdd", e); //$NON-NLS-1$
-                }
-            }
-        });
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewDescriptor.java
deleted file mode 100644
index 17008e8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewDescriptor.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Markus Alexander Kuppe, Versant Corporation - bug #215797
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.tweaklets.InterceptContributions;
-import org.eclipse.ui.internal.tweaklets.Tweaklets;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Capture the attributes of a view extension.
- */
-public class ViewDescriptor implements IViewDescriptor, IPluginContribution {
-    private String id;
-
-    private ImageDescriptor imageDescriptor;
-
-    private IConfigurationElement configElement;
-
-    private String[] categoryPath;
-
-    private float fastViewWidthRatio;
-    
-    /**
-     * Create a new <code>ViewDescriptor</code> for an extension.
-     * 
-     * @param e the configuration element
-     * @throws CoreException thrown if there are errors in the configuration
-     */
-    public ViewDescriptor(IConfigurationElement e)
-            throws CoreException {
-        configElement = e;
-        loadFromExtension();
-    }    
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IViewDescriptor#createView()
-     */
-    public IViewPart createView() throws CoreException {
-        Object extension = WorkbenchPlugin.createExtension(
-                getConfigurationElement(),
-                IWorkbenchRegistryConstants.ATT_CLASS);
-        return ((InterceptContributions) Tweaklets
-				.get(InterceptContributions.KEY)).tweakView(extension);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IViewDescriptor#getCategoryPath()
-     */
-    public String[] getCategoryPath() {
-        return categoryPath;
-    }
-
-    /**
-     * Return the configuration element for this descriptor.
-     * 
-     * @return the configuration element
-     */
-    public IConfigurationElement getConfigurationElement() {
-        return configElement;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IViewDescriptor#getDescription()
-     */
-    public String getDescription() {
-    	return RegistryReader.getDescription(configElement);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartDescriptor#getId()
-     */
-    public String getId() {
-        return id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartDescriptor#getImageDescriptor()
-     */
-    public ImageDescriptor getImageDescriptor() {
-        if (imageDescriptor != null) {
-			return imageDescriptor;
-		}
-        String iconName = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-        // If the icon attribute was omitted, use the default one
-        if (iconName == null) {
-			return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
-                    ISharedImages.IMG_DEF_VIEW);
-		}
-        IExtension extension = configElement.getDeclaringExtension();
-        String extendingPluginId = extension.getNamespace();
-        imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-                extendingPluginId, iconName);
-        // If the icon attribute was invalid, use the error icon
-        if (imageDescriptor == null) {
-            imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
-        }
-        
-        return imageDescriptor;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPartDescriptor#getLabel()
-     */
-    public String getLabel() {
-        return configElement.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-    }
-
-    /**
-     * Return the accelerator attribute.
-     * 
-     * @return the accelerator attribute
-     */
-    public String getAccelerator() {
-        return configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ACCELERATOR);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IViewDescriptor#getFastViewWidthRatio()
-     */
-    public float getFastViewWidthRatio() {
-    	configElement.getAttribute(IWorkbenchRegistryConstants.ATT_FAST_VIEW_WIDTH_RATIO); // check to ensure the element is still valid - exception thrown if it isn't
-        return fastViewWidthRatio;
-    }
-
-    /**
-     * load a view descriptor from the registry.
-     */
-    private void loadFromExtension() throws CoreException {    	
-        id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-  
-        String category = configElement.getAttribute(IWorkbenchRegistryConstants.TAG_CATEGORY);
-
-        // Sanity check.
-        if ((configElement.getAttribute(IWorkbenchRegistryConstants.ATT_NAME) == null)
-                || (RegistryReader.getClassValue(configElement,
-                        IWorkbenchRegistryConstants.ATT_CLASS) == null)) {
-            throw new CoreException(new Status(IStatus.ERROR, configElement
-                    .getNamespace(), 0,
-                    "Invalid extension (missing label or class name): " + id, //$NON-NLS-1$
-                    null));
-        }
-        
-        if (category != null) {
-            StringTokenizer stok = new StringTokenizer(category, "/"); //$NON-NLS-1$
-            categoryPath = new String[stok.countTokens()];
-            // Parse the path tokens and store them
-            for (int i = 0; stok.hasMoreTokens(); i++) {
-                categoryPath[i] = stok.nextToken();
-            }
-        }
-        
-        String ratio = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_FAST_VIEW_WIDTH_RATIO);
-        if (ratio != null) {
-            try {
-                fastViewWidthRatio = new Float(ratio).floatValue();
-                if (fastViewWidthRatio > IPageLayout.RATIO_MAX) {
-					fastViewWidthRatio = IPageLayout.RATIO_MAX;
-				}
-                if (fastViewWidthRatio < IPageLayout.RATIO_MIN) {
-					fastViewWidthRatio = IPageLayout.RATIO_MIN;
-				}
-            } catch (NumberFormatException e) {
-                fastViewWidthRatio = IPageLayout.DEFAULT_FASTVIEW_RATIO;
-            }
-        } else {
-            fastViewWidthRatio = IPageLayout.DEFAULT_FASTVIEW_RATIO;
-        }        
-    }
-
-    /**
-     * Returns a string representation of this descriptor. For debugging
-     * purposes only.
-     */
-    public String toString() {
-        return "View(" + getId() + ")"; //$NON-NLS-2$//$NON-NLS-1$
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-    	String pluginId = configElement.getNamespace();
-        return pluginId == null ? "" : pluginId; //$NON-NLS-1$    
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.activities.support.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getId() == null ? "" : getId(); //$NON-NLS-1$	
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IViewDescriptor#getAllowMultiple()
-     */
-    public boolean getAllowMultiple() {
-    	String string = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ALLOW_MULTIPLE);    	
-        return string == null ? false : Boolean.valueOf(string).booleanValue();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.IViewDescriptor#getRestorable()
-     */
-    public boolean isRestorable() {
-    	String string = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_RESTORABLE);    	
-        return string == null ? true : Boolean.valueOf(string).booleanValue();
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter.equals(IConfigurationElement.class)) {
-			return getConfigurationElement();
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewParameterValues.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewParameterValues.java
deleted file mode 100644
index 73772e6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewParameterValues.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.registry;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Provides the parameter values for the show view command.
- * 
- * @since 3.1
- */
-public final class ViewParameterValues implements IParameterValues {
-
-	public final Map getParameterValues() {
-		final Map values = new HashMap();
-
-		final IViewDescriptor[] views = PlatformUI.getWorkbench()
-				.getViewRegistry().getViews();
-		for (int i = 0; i < views.length; i++) {
-			final IViewDescriptor view = views[i];
-			values.put(view.getLabel(), view.getId());
-		}
-
-		return values;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistry.java
deleted file mode 100644
index fc55b01..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistry.java
+++ /dev/null
@@ -1,445 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-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.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.views.IStickyViewDescriptor;
-import org.eclipse.ui.views.IViewCategory;
-import org.eclipse.ui.views.IViewDescriptor;
-import org.eclipse.ui.views.IViewRegistry;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * The central manager for view descriptors.
- */
-public class ViewRegistry implements IViewRegistry, IExtensionChangeHandler {
-	
-    /**
-	 * @since 3.4
-	 *
-	 */
-	private static final class ViewDescriptorComparator implements Comparator {
-		public int compare(Object o1, Object o2) {
-			String id1 = ((ViewDescriptor) o1).getId();
-			String id2 = ((ViewDescriptor) o2).getId();
-			
-			return id1.compareTo(id2);
-		}
-	}
-
-	/**
-     * Proxies a Category implementation.
-     * 
-     * @since 3.1
-     */
-    private static class ViewCategoryProxy implements IViewCategory, IPluginContribution {
-
-        private Category rawCategory;
-
-        /**
-         * Create a new instance of this class
-         * 
-         * @param rawCategory the category
-         */
-        public ViewCategoryProxy(Category rawCategory) {
-            this.rawCategory = rawCategory;
-        }
-        
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.views.IViewCategory#getViews()
-         */
-        public IViewDescriptor[] getViews() {
-            ArrayList elements = rawCategory.getElements();
-            if (elements == null) {
-                return new IViewDescriptor[0];
-            }
-            // Returns the views of this category,
-            // minus the one which failed the evaluation check.
-            Collection descs = WorkbenchActivityHelper.restrictCollection(elements, new ArrayList());
-            return (IViewDescriptor[])descs.toArray(new IViewDescriptor[descs.size()]);
-        }
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see org.eclipse.ui.views.IViewCategory#getId()
-         */
-        public String getId() {
-            return rawCategory.getId();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.views.IViewCategory#getPath()
-         */
-        public IPath getPath() {
-            String rawParentPath = rawCategory.getRawParentPath();
-            if (rawParentPath == null) {
-				return new Path(""); //$NON-NLS-1$
-			}
-            return new Path(rawParentPath);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.views.IViewCategory#getLabel()
-         */
-        public String getLabel() {
-            return rawCategory.getLabel();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IPluginContribution#getLocalId()
-         */
-        public String getLocalId() {
-            return getId();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IPluginContribution#getPluginId()
-         */
-        public String getPluginId() {
-            return rawCategory.getPluginId();
-        }
-		
-		/* (non-Javadoc)
-		 * @see java.lang.Object#equals(java.lang.Object)
-		 */
-		public boolean equals(Object o) {
-			if (o instanceof IViewCategory) {
-				return getId().equals(((IViewCategory)o).getId());
-			}
-			return false;
-		}
-		
-		/* (non-Javadoc)
-		 * @see java.lang.Object#hashCode()
-		 */
-		public int hashCode() {
-			return getId().hashCode();
-		}
-    }
-    
-	private static String EXTENSIONPOINT_UNIQUE_ID = WorkbenchPlugin.PI_WORKBENCH + "." + IWorkbenchRegistryConstants.PL_VIEWS; //$NON-NLS-1$
-	
-	/**
-	 * A set that will only ever contain ViewDescriptors.
-	 */
-    private SortedSet views = new TreeSet(new ViewDescriptorComparator());
-
-    private List categories;
-
-    private List sticky;
-
-    private Category miscCategory;
-
-    protected static final String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
-    
-    private ViewRegistryReader reader = new ViewRegistryReader();
-
-	private boolean dirtyViewCategoryMappings = true;
-
-    /**
-     * Create a new ViewRegistry.
-     */
-    public ViewRegistry() {
-        super();    
-        categories = new ArrayList();       
-        sticky = new ArrayList();        
-        PlatformUI.getWorkbench().getExtensionTracker().registerHandler(this, ExtensionTracker.createExtensionPointFilter(getExtensionPointFilter()));
-        reader.readViews(Platform.getExtensionRegistry(), this);
-    }
-
-    /**
-     * Add a category to the registry.
-     * 
-     * @param desc the descriptor to add
-     */
-    public void add(Category desc) {
-        /* fix for 1877 */
-		if (internalFindCategory(desc.getId()) == null) {
-			dirtyViewCategoryMappings = true;
-			// Mark categories list as dirty
-			categories.add(desc);
-			IConfigurationElement element = (IConfigurationElement) Util.getAdapter(desc, IConfigurationElement.class);
-			if (element == null) {
-				return;
-			}
-			PlatformUI.getWorkbench().getExtensionTracker()
-					.registerObject(
-							element.getDeclaringExtension(),
-							desc,
-							IExtensionTracker.REF_WEAK);
-		}
-    }
-
-    /**
-     * Add a descriptor to the registry.
-     * 
-     * @param desc the descriptor to add
-     */
-    public void add(ViewDescriptor desc) {
-    	if (views.add(desc)) {
-            dirtyViewCategoryMappings = true;
-            PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-                    desc.getConfigurationElement().getDeclaringExtension(),
-                    desc, IExtensionTracker.REF_WEAK);
-        }
-    }
-    
-    /**
-     * Add a sticky descriptor to the registry.
-     * 
-     * @param desc the descriptor to add
-     */
-    public void add(StickyViewDescriptor desc) {
-    	if (!sticky.contains(desc)) {
-	        sticky.add(desc);
-	        PlatformUI.getWorkbench().getExtensionTracker()
-			.registerObject(
-					desc.getConfigurationElement().getDeclaringExtension(),
-					desc, 
-					IExtensionTracker.REF_WEAK);
-    	}
-    }
-
-//    /**
-//     * Return the sticky view descriptor.
-//     * 
-//     * @param id the id to searc for 
-//     * @return the sticky view descriptor
-//     */
-//    private IStickyViewDescriptor findSticky(String id) {
-//        for (Iterator i = sticky.iterator(); i.hasNext();) {
-//            IStickyViewDescriptor desc = (IStickyViewDescriptor) i.next();
-//            if (id.equals(desc.getId()))
-//                return desc;
-//        }
-//        return null;
-//    }
-
-    /**
-     * Find a descriptor in the registry.
-     * 
-     * @return The descriptor. But even if the descriptor exists, it returns 
-     * 		   <code>null</code> if the descriptor fails the Expressions check. 
-     */
-    public IViewDescriptor find(String id) {
-        Iterator itr = views.iterator();
-        while (itr.hasNext()) {
-            IViewDescriptor desc = (IViewDescriptor) itr.next();
-            if (id.equals(desc.getId())) {
-                if (WorkbenchActivityHelper.restrictUseOf(desc)) {
-                    return null;
-                }
-                return desc;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Find a category with a given name.
-     * 
-     * @param id the id to search for
-     * @return the category or <code>null</code>
-     */
-    public IViewCategory findCategory(String id) {
-    	mapViewsToCategories();
-        Category category = internalFindCategory(id);
-        if (category == null) {
-			return null;
-		}
-        return new ViewCategoryProxy(category);
-    }
-
-    /**
-     * Returns the category with no updating of the view/category mappings.
-     *
-	 * @param id the category id
-	 * @return the Category
-     * @since 3.1
-	 */
-	private Category internalFindCategory(String id) {
-		Iterator itr = categories.iterator();
-        while (itr.hasNext()) {
-            Category cat = (Category) itr.next();
-            if (id.equals(cat.getRootPath())) {
-                return cat;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Get the list of view categories.
-     */
-    public IViewCategory[] getCategories() {
-    	mapViewsToCategories();
-        int nSize = categories.size();
-        IViewCategory[] retArray = new IViewCategory[nSize];
-        int i = 0;
-        for (Iterator itr = categories.iterator(); itr.hasNext();) {
-            retArray[i++] = new ViewCategoryProxy((Category) itr.next());
-        }
-        return retArray;
-    }
-
-    /**
-     * Get the list of sticky views minus the sticky views which failed the
-     * Expressions check.
-     */
-    public IStickyViewDescriptor[] getStickyViews() {
-    	Collection descs = WorkbenchActivityHelper.restrictCollection(sticky, new ArrayList());
-    	return (IStickyViewDescriptor[]) descs.toArray(new IStickyViewDescriptor[descs.size()]);
-    }
-
-    /**
-     * Returns the Misc category. This may be <code>null</code> if there are
-     * no miscellaneous views.
-     * 
-     * @return the misc category or <code>null</code>
-     */
-    public Category getMiscCategory() {
-        return miscCategory;
-    }
-
-    /**
-     * Get an enumeration of view descriptors.
-     * 
-     * Returns an enumeration of view descriptors, but without the view
-     * descriptors which failed the test. 
-     */
-    public IViewDescriptor[] getViews() {
-    	Collection descs = WorkbenchActivityHelper.restrictCollection(views, new TreeSet(new ViewDescriptorComparator()));
-    	return (IViewDescriptor[]) descs.toArray(new IViewDescriptor[descs.size()]);
-    }
-
-    /**
-     * Adds each view in the registry to a particular category.
-     * The view category may be defined in xml.  If not, the view is
-     * added to the "misc" category.
-     */
-    public void mapViewsToCategories() {
-    	if (dirtyViewCategoryMappings) {
-    		dirtyViewCategoryMappings = false;
-	    	// clear all category mappings
-	    	for (Iterator i = categories.iterator(); i.hasNext(); ) {
-	    		Category category = (Category) i.next();
-	    		category.clear(); // this is bad    		
-	    	}
-	    	
-	    	if (miscCategory != null) {
-	    		miscCategory.clear();
-	    	}
-	    	
-	    	for (Iterator i = views.iterator(); i.hasNext(); ) {
-	            IViewDescriptor desc = (IViewDescriptor) i.next();
-	            Category cat = null;
-	            String[] catPath = desc.getCategoryPath();
-	            if (catPath != null) {
-	                String rootCat = catPath[0];
-	                cat = internalFindCategory(rootCat);
-	            }
-	            if (cat != null) {
-	                if (!cat.hasElement(desc)) {
-	                    cat.addElement(desc);
-	                }
-	            } else {
-	                if (miscCategory == null) {
-	                    miscCategory = new Category();
-	                    add(miscCategory);                    
-	                }
-	                if (catPath != null) {
-	                    // If we get here, this view specified a category which
-	                    // does not exist. Add this view to the 'Other' category
-	                    // but give out a message (to the log only) indicating 
-	                    // this has been done.
-	                    String fmt = "Category {0} not found for view {1}.  This view added to ''{2}'' category."; //$NON-NLS-1$
-	                    WorkbenchPlugin.log(MessageFormat
-	                            .format(fmt, new Object[] { catPath[0],
-	                                    desc.getId(), miscCategory.getLabel() }));
-	                }
-	                miscCategory.addElement(desc);
-	            }
-	        }	        
-    	}
-    }
-
-    /**
-     * Dispose of this registry.
-     */
-    public void dispose() {
-    	PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(this);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-     */
-    public void removeExtension(IExtension extension,Object[] objects) {
-        for (int i = 0; i < objects.length; i++) {
-            if (objects[i] instanceof StickyViewDescriptor) {           
-                sticky.remove(objects[i]);
-            }
-            else if (objects[i] instanceof ViewDescriptor) {
-                views.remove(objects[i]);
-                dirtyViewCategoryMappings = true;
-            }
-            else if (objects[i] instanceof Category) {
-                categories.remove(objects[i]);
-                dirtyViewCategoryMappings = true;
-            }
-        }
-
-	}
-
-    private IExtensionPoint getExtensionPointFilter() {
-      return Platform.getExtensionRegistry().getExtensionPoint(EXTENSIONPOINT_UNIQUE_ID);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-     */
-    public void addExtension(IExtensionTracker tracker,IExtension addedExtension){
-        IConfigurationElement[] addedElements = addedExtension.getConfigurationElements();
-        for (int i = 0; i < addedElements.length; i++) {
-            IConfigurationElement element = addedElements[i];
-    		if (element.getName().equals(IWorkbenchRegistryConstants.TAG_VIEW)) {
-    			reader.readView(element);
-    		} else if (element.getName().equals(IWorkbenchRegistryConstants.TAG_CATEGORY)) {
-    			reader.readCategory(element);
-    		} else if (element.getName().equals(IWorkbenchRegistryConstants.TAG_STICKYVIEW)) {
-    			reader.readSticky(element);
-    		}			
-        }
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistryReader.java
deleted file mode 100644
index 96283de..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ViewRegistryReader.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * A strategy to read view extensions from the registry.
- */
-public class ViewRegistryReader extends RegistryReader {
-	/**
-	 * General view category id 
-	 */
-	public static String GENERAL_VIEW_ID = "org.eclipse.ui";	//$NON-NLS-1$
-	
-	private ViewRegistry viewRegistry;
-
-    /**
-     * RegistryViewReader constructor comment.
-     */
-    public ViewRegistryReader() {
-        super();
-    }
-
-    /**
-     * Reads the category element.
-     */
-    protected void readCategory(IConfigurationElement element) {
-        try {
-            viewRegistry.add(new Category(element));
-        } catch (CoreException e) {
-            // log an error since its not safe to show a dialog here
-            WorkbenchPlugin.log(
-                    "Unable to create view category.", e.getStatus());//$NON-NLS-1$
-        }
-    }
-
-    /**
-     * readElement method comment.
-     */
-    protected boolean readElement(IConfigurationElement element) {
-        String elementName = element.getName();
-        if (elementName.equals(IWorkbenchRegistryConstants.TAG_VIEW)) {
-            readView(element);
-            return true;
-        }
-        if (elementName.equals(IWorkbenchRegistryConstants.TAG_CATEGORY)) {
-            readCategory(element);
-            readElementChildren(element);
-            return true;
-        }
-        if (elementName.equals(IWorkbenchRegistryConstants.TAG_STICKYVIEW)) {
-            readSticky(element);
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Reads the sticky view element.
-     */
-    protected void readSticky(IConfigurationElement element) {
-        try {
-            viewRegistry.add(new StickyViewDescriptor(element));
-        } catch (CoreException e) {
-            // log an error since its not safe to open a dialog here
-            WorkbenchPlugin.log(
-                    "Unable to create sticky view descriptor.", e.getStatus());//$NON-NLS-1$
-
-        }
-    }
-
-    /**
-     * Reads the view element.
-     */
-    protected void readView(IConfigurationElement element) {
-        try {
-            viewRegistry.add(new ViewDescriptor(element));
-        } catch (CoreException e) {
-            // log an error since its not safe to open a dialog here
-            WorkbenchPlugin.log(
-                    "Unable to create view descriptor.", e.getStatus());//$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Read the view extensions within a registry.
-     * @param in the extension registry
-     * @param out the view registry
-     */
-    public void readViews(IExtensionRegistry in, ViewRegistry out) {
-        // this does not seem to really ever be throwing an the exception
-        viewRegistry = out;
-        readRegistry(in, PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_VIEWS);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardParameterValues.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardParameterValues.java
deleted file mode 100644
index 800b1f4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardParameterValues.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.IParameterValues;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-import org.eclipse.ui.wizards.IWizardRegistry;
-
-/**
- * Provides the parameter values for a show wizard command.
- * <p>
- * This class is only intended to be extended by the three inner classes (<code>Export</code>,
- * <code>Import</code> and <code>New</code>) defined here.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class WizardParameterValues implements IParameterValues {
-
-	/**
-	 * Provides the parameter values for export wizards.
-	 */
-	public static final class Export extends WizardParameterValues {
-		protected IWizardRegistry getWizardRegistry() {
-			return PlatformUI.getWorkbench().getExportWizardRegistry();
-		}
-	}
-
-	/**
-	 * Provides the parameter values for import wizards.
-	 */
-	public static final class Import extends WizardParameterValues {
-		protected IWizardRegistry getWizardRegistry() {
-			return PlatformUI.getWorkbench().getImportWizardRegistry();
-		}
-	}
-
-	/**
-	 * Provides the parameter values for new wizards.
-	 */
-	public static final class New extends WizardParameterValues {
-		protected IWizardRegistry getWizardRegistry() {
-			return PlatformUI.getWorkbench().getNewWizardRegistry();
-		}
-	}
-
-	private void addParameterValues(Map values, IWizardCategory wizardCategory) {
-
-		final IWizardDescriptor[] wizardDescriptors = wizardCategory
-				.getWizards();
-		for (int i = 0; i < wizardDescriptors.length; i++) {
-			final IWizardDescriptor wizardDescriptor = wizardDescriptors[i];
-
-			// Note: using description instead of label for the name
-			// to reduce possibilities of key collision in the map
-			// final String name = wizardDescriptor.getDescription();
-			
-			// by request
-			String name = wizardDescriptor.getLabel();
-			final String id = wizardDescriptor.getId();
-			final String value = (String) values.get(name);
-			if (value!=null && !value.equals(id)) {
-				name = name + " (" + id + ")"; //$NON-NLS-1$//$NON-NLS-2$
-			}
-			values.put(name, id);
-		}
-
-		final IWizardCategory[] childCategories = wizardCategory
-				.getCategories();
-		for (int i = 0; i < childCategories.length; i++) {
-			final IWizardCategory childCategory = childCategories[i];
-			addParameterValues(values, childCategory);
-		}
-	}
-
-	public Map getParameterValues() {
-		final Map values = new HashMap();
-
-		final IWizardRegistry wizardRegistry = getWizardRegistry();
-		addParameterValues(values, wizardRegistry.getRootCategory());
-
-		return values;
-	}
-
-	/**
-	 * Returns the wizard registry for the concrete
-	 * <code>WizardParameterValues</code> implementation class.
-	 * 
-	 * @return The wizard registry for the concrete
-	 *         <code>WizardParameterValues</code> implementation class.
-	 */
-	protected abstract IWizardRegistry getWizardRegistry();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardsRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardsRegistryReader.java
deleted file mode 100644
index d54d14d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WizardsRegistryReader.java
+++ /dev/null
@@ -1,557 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.dialogs.WizardCollectionElement;
-import org.eclipse.ui.internal.dialogs.WorkbenchWizardElement;
-import org.eclipse.ui.internal.util.Util;
-
-import com.ibm.icu.text.Collator;
-
-/**
- *  Instances access the registry that is provided at creation time
- *  in order to determine the contained Wizards
- */
-public class WizardsRegistryReader extends RegistryReader {
-
-	private String pluginPoint;
-    
-    private WizardCollectionElement wizardElements = null;
-
-    private ArrayList deferWizards = null;
-
-    private ArrayList deferCategories = null;
-
-    private Set deferPrimary;
-
-    // constants
-    /**
-     * Examples wizard category id
-     */    
-    public final static String FULL_EXAMPLES_WIZARD_CATEGORY = "org.eclipse.ui.Examples";//$NON-NLS-1$
-    /**
-     * Other wizard category id
-     */
-    final public static String UNCATEGORIZED_WIZARD_CATEGORY = "org.eclipse.ui.Other";//$NON-NLS-1$
-    /**
-     * General wizard category id
-     */
-    final public static String GENERAL_WIZARD_CATEGORY = "org.eclipse.ui.Basic";	//$NON-NLS-1$
-
-    final private static String UNCATEGORIZED_WIZARD_CATEGORY_LABEL = WorkbenchMessages.NewWizardsRegistryReader_otherCategory;
-    
-    private final static String CATEGORY_SEPARATOR = "/";//$NON-NLS-1$
-
-    private WorkbenchWizardElement[] primaryWizards = new WorkbenchWizardElement[0];
-    
-    private class CategoryNode {
-        private Category category;
-
-        private String path;
-
-        CategoryNode(Category cat) {
-            category = cat;
-            path = ""; //$NON-NLS-1$
-            String[] categoryPath = category.getParentPath();
-            if (categoryPath != null) {
-                for (int nX = 0; nX < categoryPath.length; nX++) {
-                    path += categoryPath[nX] + '/';
-                }
-            }
-            path += cat.getId();
-        }
-
-        String getPath() {
-            return path;
-        }
-
-        Category getCategory() {
-            return category;
-        }
-    }
-
-    private static final Comparator comparer = new Comparator() {
-        private Collator collator = Collator.getInstance();
-
-        public int compare(Object arg0, Object arg1) {
-            String s1 = ((CategoryNode) arg0).getPath();
-            String s2 = ((CategoryNode) arg1).getPath();
-            return collator.compare(s1, s2);
-        }
-    };
-
-	private boolean readAll = true;
-
-	private String plugin;
-
-    /**
-     *Create an instance of this class.
-     *
-     * @param pluginId the plugin id
-     * @param pluginPointId java.lang.String
-     */
-    public WizardsRegistryReader(String pluginId, String pluginPointId) {
-        pluginPoint = pluginPointId;
-        plugin = pluginId;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on WizardRegistryReader.  
-     * <p>
-     * This implementation uses a defering strategy.  For more info see
-     * <code>readWizards</code>.
-     * </p>
-     */
-    protected void addNewElementToResult(WorkbenchWizardElement element,
-            IConfigurationElement config) {
-        // TODO: can we remove the config parameter?
-        deferWizard(element);
-    }
-
-    /**
-     * 
-     * @param parent
-     * @param element
-     * @since 3.1
-     */
-    private WizardCollectionElement createCollectionElement(WizardCollectionElement parent, IConfigurationElement element) {
-        WizardCollectionElement newElement = new WizardCollectionElement(
-				element, parent);
-
-        parent.add(newElement);
-        return newElement;		
-	}
-    /**
-     *	Create and answer a new WizardCollectionElement, configured as a
-     *	child of <code>parent</code>
-     *
-     *	@return org.eclipse.ui.internal.model.WizardCollectionElement
-     *	@param parent org.eclipse.ui.internal.model.WizardCollectionElement
-     *  @param id the id of the new collection
-     *  @param pluginId the originating plugin id of the collection, if any. <code>null</code> otherwise.
-     *	@param label java.lang.String
-     */
-    protected WizardCollectionElement createCollectionElement(
-            WizardCollectionElement parent, String id, String pluginId,
-            String label) {
-        WizardCollectionElement newElement = new WizardCollectionElement(id,
-                pluginId, label, parent);
-
-        parent.add(newElement);
-        return newElement;
-    }
-
-    /**
-     * Creates empty element collection. Overrider to fill
-     * initial elements, if needed.
-     */
-    protected void createEmptyWizardCollection() {
-        wizardElements = new WizardCollectionElement("root", null, "root", null);//$NON-NLS-2$//$NON-NLS-1$
-    }
-    
-    /**
-     * Set the initial wizard set for supplemental reading via dynamic plugin loading.
-     * 
-     * @param wizards the wizards
-     * @since 3.1
-     */
-    public void setInitialCollection(WizardCollectionElement wizards) {
-    	wizardElements = wizards;
-    	readAll = false;
-    }
-
-    /**
-     * Stores a category element for deferred addition.
-     */
-    private void deferCategory(IConfigurationElement config) {
-        // Create category.
-        Category category = null;
-        try {
-            category = new Category(config);
-        } catch (CoreException e) {
-            WorkbenchPlugin.log("Cannot create category: ", e.getStatus());//$NON-NLS-1$
-            return;
-        }
-
-        // Defer for later processing.
-        if (deferCategories == null) {
-			deferCategories = new ArrayList(20);
-		}
-        deferCategories.add(category);
-    }
-
-
-    /**
-     * Stores a wizard element for deferred addition.
-     */
-    private void deferWizard(WorkbenchWizardElement element) {
-        if (deferWizards == null) {
-			deferWizards = new ArrayList(50);
-		}
-        deferWizards.add(element);
-    }
-
-    /**
-     * Finishes the addition of categories.  The categories are sorted and
-     * added in a root to depth traversal.
-     */
-    private void finishCategories() {
-        // If no categories just return.
-        if (deferCategories == null) {
-			return;
-		}
-
-        // Sort categories by flattened name.
-        CategoryNode[] flatArray = new CategoryNode[deferCategories.size()];
-        for (int i = 0; i < deferCategories.size(); i++) {
-            flatArray[i] = new CategoryNode((Category) deferCategories.get(i));
-        }
-        Collections.sort(Arrays.asList(flatArray), comparer);
-
-        // Add each category.
-        for (int nX = 0; nX < flatArray.length; nX++) {
-            Category cat = flatArray[nX].getCategory();
-            finishCategory(cat);
-        }
-
-        // Cleanup.
-        deferCategories = null;
-    }
-
-    /**
-     * Save new category definition.
-     */
-    private void finishCategory(Category category) {
-        String[] categoryPath = category.getParentPath();
-        WizardCollectionElement parent = wizardElements; // ie.- root
-
-        // Traverse down into parent category.	
-        if (categoryPath != null) {
-            for (int i = 0; i < categoryPath.length; i++) {
-                WizardCollectionElement tempElement = getChildWithID(parent,
-                        categoryPath[i]);
-                if (tempElement == null) {
-                    // The parent category is invalid.  By returning here the
-                    // category will be dropped and any wizard within the category
-                    // will be added to the "Other" category.
-                    return;
-                }
-                parent = tempElement;
-            }
-        }
-
-        // If another category already exists with the same id ignore this one.
-        Object test = getChildWithID(parent, category.getId());
-        if (test != null) {
-			return;
-		}
-
-        if (parent != null) {
-			createCollectionElement(parent, (IConfigurationElement) Util.getAdapter(category,
-					IConfigurationElement.class));
-		}
-    }
-
-
-	/**
-     * Finishes the recognition of primary wizards.
-     */
-    private void finishPrimary() {
-        if (deferPrimary != null) {
-            ArrayList primary = new ArrayList();
-            for (Iterator i = deferPrimary.iterator(); i.hasNext();) {
-                String id = (String) i.next();
-                WorkbenchWizardElement element = wizardElements == null ? null : wizardElements.findWizard(id, true);
-                if (element != null) {
-                    primary.add(element);
-                }
-            }
-
-            primaryWizards = (WorkbenchWizardElement[]) primary
-                    .toArray(new WorkbenchWizardElement[primary.size()]);
-
-            deferPrimary = null;
-        }
-    }
-
-
-    /**
-     *	Insert the passed wizard element into the wizard collection appropriately
-     *	based upon its defining extension's CATEGORY tag value
-     *
-     *	@param element WorkbenchWizardElement
-     *	@param config configuration element
-     */
-    private void finishWizard(WorkbenchWizardElement element,
-            IConfigurationElement config) {
-        StringTokenizer familyTokenizer = new StringTokenizer(
-                getCategoryStringFor(config), CATEGORY_SEPARATOR);
-
-        // use the period-separated sections of the current Wizard's category
-        // to traverse through the NamedSolution "tree" that was previously created
-        WizardCollectionElement currentCollectionElement = wizardElements; // ie.- root
-        boolean moveToOther = false;
-
-        while (familyTokenizer.hasMoreElements()) {
-            WizardCollectionElement tempCollectionElement = getChildWithID(
-                    currentCollectionElement, familyTokenizer.nextToken());
-
-            if (tempCollectionElement == null) { // can't find the path; bump it to uncategorized
-                moveToOther = true;
-                break;
-            } 
-            currentCollectionElement = tempCollectionElement;
-        }
-
-        if (moveToOther) {
-			moveElementToUncategorizedCategory(wizardElements, element);
-		} else {
-            currentCollectionElement.add(element);
-            element.setParent(currentCollectionElement);
-        }
-    }
-
-    /**
-     * Finishes the addition of wizards.  The wizards are processed and categorized.
-     */
-    private void finishWizards() {
-        if (deferWizards != null) {
-            Iterator iter = deferWizards.iterator();
-            while (iter.hasNext()) {
-                WorkbenchWizardElement wizard = (WorkbenchWizardElement) iter
-                        .next();
-                IConfigurationElement config = wizard.getConfigurationElement();
-                finishWizard(wizard, config);
-            }
-            deferWizards = null;
-        }
-    }
-
-    /**
-     *	Return the appropriate category (tree location) for this Wizard.
-     *	If a category is not specified then return a default one.
-     */
-    protected String getCategoryStringFor(IConfigurationElement config) {
-        String result = config.getAttribute(IWorkbenchRegistryConstants.TAG_CATEGORY);
-        if (result == null) {
-			result = UNCATEGORIZED_WIZARD_CATEGORY;
-		}
-
-        return result;
-    }
-
-    /**
-     *	Go through the children of  the passed parent and answer the child
-     *	with the passed name.  If no such child is found then return null.
-     *
-     *	@return org.eclipse.ui.internal.model.WizardCollectionElement
-     *	@param parent org.eclipse.ui.internal.model.WizardCollectionElement
-     *	@param id java.lang.String
-     */
-    protected WizardCollectionElement getChildWithID(
-            WizardCollectionElement parent, String id) {
-        Object[] children = parent.getChildren(null);
-        for (int i = 0; i < children.length; ++i) {
-            WizardCollectionElement currentChild = (WizardCollectionElement) children[i];
-            if (currentChild.getId().equals(id)) {
-				return currentChild;
-			}
-        }
-        return null;
-    }
-
-    /**
-     *	Moves given element to "Other" category, previously creating one if missing.
-     */
-    protected void moveElementToUncategorizedCategory(
-            WizardCollectionElement root, WorkbenchWizardElement element) {
-        WizardCollectionElement otherCategory = getChildWithID(root,
-                UNCATEGORIZED_WIZARD_CATEGORY);
-
-        if (otherCategory == null) {
-			otherCategory = createCollectionElement(root,
-                    UNCATEGORIZED_WIZARD_CATEGORY, null,
-                    UNCATEGORIZED_WIZARD_CATEGORY_LABEL);
-		}
-
-        otherCategory.add(element);
-        element.setParent(otherCategory);
-    }
-
-    /**
-     * Removes the empty categories from a wizard collection. 
-     */
-    private void pruneEmptyCategories(WizardCollectionElement parent) {
-        Object[] children = parent.getChildren(null);
-        for (int nX = 0; nX < children.length; nX++) {
-            WizardCollectionElement child = (WizardCollectionElement) children[nX];
-            pruneEmptyCategories(child);
-            boolean shouldPrune = child.getId().equals(FULL_EXAMPLES_WIZARD_CATEGORY);
-            if (child.isEmpty() && shouldPrune) {
-				parent.remove(child);
-			}
-        }
-    }
-
-    /**
-     * Implement this method to read element attributes.
-     */
-    public boolean readElement(IConfigurationElement element) {
-        if (element.getName().equals(IWorkbenchRegistryConstants.TAG_CATEGORY)) {
-            deferCategory(element);
-            return true;
-        } else if (element.getName().equals(IWorkbenchRegistryConstants.TAG_PRIMARYWIZARD)) {
-            if (deferPrimary == null) {
-				deferPrimary = new HashSet();
-			}
-            deferPrimary.add(element.getAttribute(IWorkbenchRegistryConstants.ATT_ID));
-
-            return true;
-        } else {
-            if (!element.getName().equals(IWorkbenchRegistryConstants.TAG_WIZARD)) {
-				return false;
-			}
-            WorkbenchWizardElement wizard = createWizardElement(element);
-            if (wizard != null) {
-				addNewElementToResult(wizard, element);
-			}
-            return true;
-        }
-    }
-
-    /**
-     * Reads the wizards in a registry.  
-     * <p>
-     * This implementation uses a defering strategy.  All of the elements 
-     * (categories, wizards) are read.  The categories are created as the read occurs. 
-     * The wizards are just stored for later addition after the read completes.
-     * This ensures that wizard categorization is performed after all categories
-     * have been read.
-     * </p>
-     */
-    protected void readWizards() {
-    	if (readAll) {
-    	       if (!areWizardsRead()) {
-                createEmptyWizardCollection();
-                IExtensionRegistry registry = Platform.getExtensionRegistry();
-                readRegistry(registry, plugin, pluginPoint);
-            }
-    	}
-        finishCategories();
-        finishWizards();
-        finishPrimary();
-        if (wizardElements != null) {
-            pruneEmptyCategories(wizardElements);
-        }
-    }
-
-    /**
-     * Returns the list of wizards that are considered 'primary'.
-     * 
-     * The return value for this method is cached since computing its value
-     * requires non-trivial work.  
-     * 
-     * @return the primary wizards
-     */
-    public WorkbenchWizardElement [] getPrimaryWizards() {
-        if (!areWizardsRead()) {
-            readWizards();
-        }
-        return (WorkbenchWizardElement[]) WorkbenchActivityHelper.restrictArray(primaryWizards);
-    }
-
-
-    /**
-     * Returns whether the wizards have been read already
-     */
-    protected boolean areWizardsRead() {
-        return wizardElements != null && readAll;
-    }
-
-    /**
-     * Returns a list of wizards, project and not.
-     *
-     * The return value for this method is cached since computing its value
-     * requires non-trivial work.  
-     * 
-     * @return the wizard collection
-     */
-    public WizardCollectionElement getWizardElements() {
-        if (!areWizardsRead()) {
-            readWizards();
-        }
-        return wizardElements;
-    }
-
-    protected Object[] getWizardCollectionElements() {
-        if (!areWizardsRead()) {
-            readWizards();
-        }
-        return wizardElements.getChildren();
-    }
-    
-    /**
-     * Returns a new WorkbenchWizardElement 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
-     */
-    protected WorkbenchWizardElement createWizardElement(
-            IConfigurationElement element) {
-        // WizardElements must have a name attribute
-        if (element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME) == null) {
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_NAME);
-            return null;
-        }
-        
-        if (getClassValue(element, IWorkbenchRegistryConstants.ATT_CLASS) == null) {       
-            logMissingAttribute(element, IWorkbenchRegistryConstants.ATT_CLASS);
-            return null;
-        }
-        return new WorkbenchWizardElement(element);
-    }
-
-    /**
-     * Returns the first wizard with a given id.
-     * 
-     * @param id wizard id to search for
-     * @return WorkbenchWizardElement matching the given id, if found; null otherwise
-     */
-    public WorkbenchWizardElement findWizard(String id) {
-        Object[] wizards = getWizardCollectionElements();
-        for (int nX = 0; nX < wizards.length; nX++) {
-            WizardCollectionElement collection = (WizardCollectionElement) wizards[nX];
-            WorkbenchWizardElement element = collection.findWizard(id, true);
-            if (element != null && !WorkbenchActivityHelper.restrictUseOf(element)) {
-				return element;
-			}
-        }
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java
deleted file mode 100644
index 235191f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetDescriptor.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.IWorkingSetElementAdapter;
-import org.eclipse.ui.IWorkingSetUpdater;
-import org.eclipse.ui.dialogs.IWorkingSetPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * A working set descriptor stores the plugin registry data for 
- * a working set page extension.
- * 
- * @since 2.0
- */
-public class WorkingSetDescriptor implements IPluginContribution {
-    private String id;
-
-    private String name;
-
-    private String icon;
-
-    private String pageClassName;
-    
-    private String updaterClassName;
-
-    private IConfigurationElement configElement;
-    
-    private String[] classTypes;
-
-	private String[] adapterTypes;
-
-    private static final String ATT_ID = "id"; //$NON-NLS-1$
-
-    private static final String ATT_NAME = "name"; //$NON-NLS-1$
-
-    private static final String ATT_ICON = "icon"; //$NON-NLS-1$	
-
-    private static final String ATT_PAGE_CLASS = "pageClass"; //$NON-NLS-1$
-    
-    private static final String ATT_UPDATER_CLASS = "updaterClass";  //$NON-NLS-1$
-    
-    private static final String ATT_ELEMENT_ADAPTER_CLASS = "elementAdapterClass";  //$NON-NLS-1$
-
-    private static final String TAG_APPLICABLE_TYPE = "applicableType"; //$NON-NLS-1$
-    
-    /**
-     * Creates a descriptor from a configuration element.
-     * 
-     * @param configElement configuration element to create a descriptor from
-     */
-    public WorkingSetDescriptor(IConfigurationElement configElement)
-            throws CoreException {
-        super();
-        this.configElement = configElement;
-        id = configElement.getAttribute(ATT_ID);
-        name = configElement.getAttribute(ATT_NAME);
-        icon = configElement.getAttribute(ATT_ICON);
-        pageClassName = configElement.getAttribute(ATT_PAGE_CLASS);
-        updaterClassName = configElement.getAttribute(ATT_UPDATER_CLASS);
-
-        if (name == null) {
-            throw new CoreException(new Status(IStatus.ERROR,
-                    WorkbenchPlugin.PI_WORKBENCH, 0,
-                    "Invalid extension (missing class name): " + id, //$NON-NLS-1$
-                    null));
-        }
-        
-        IConfigurationElement[] containsChildren = configElement
-				.getChildren(TAG_APPLICABLE_TYPE);
-		if (containsChildren.length > 0) {
-			List byClassList = new ArrayList(containsChildren.length);
-			List byAdapterList = new ArrayList(containsChildren.length);
-			for (int i = 0; i < containsChildren.length; i++) {
-				IConfigurationElement child = containsChildren[i];
-				String className = child
-						.getAttribute(IWorkbenchRegistryConstants.ATT_CLASS);
-				if (className != null)
-					byClassList.add(className);
-				if ("true".equals(child.getAttribute(IWorkbenchRegistryConstants.ATT_ADAPTABLE)))  //$NON-NLS-1$
-					byAdapterList.add(className);
-			}
-			if (!byClassList.isEmpty()) {
-				classTypes = (String[]) byClassList.toArray(new String[byClassList
-						.size()]);
-				Arrays.sort(classTypes);
-			}
-			
-			if (!byAdapterList.isEmpty()) {
-				adapterTypes = (String[]) byAdapterList.toArray(new String[byAdapterList
-						.size()]);
-				Arrays.sort(adapterTypes);
-			}
-		}
-    }
-    
-    /**
-     * Returns the name space that declares this working set.
-     * 
-     * @return the name space declaring this working set
-     */
-    public String getDeclaringNamespace() {
-    	return configElement.getNamespace();
-    }
-    
-    /**
-	 * Return the namespace that contains the class referenced by the
-	 * updaterClass. May be the bundle that declared this extension or another
-	 * bundle that contains the referenced class.
-	 * 
-	 * @return the namespace
-	 * @since 3.3
-	 */
-	public String getUpdaterNamespace() {
-		return WorkbenchPlugin.getBundleForExecutableExtension(configElement,
-				ATT_UPDATER_CLASS).getSymbolicName();
-	}
-    
-    /**
-	 * Return the namespace that contains the class referenced by the
-	 * elementAdapterClass. May be the bundle that declared this extension or
-	 * another bundle that contains the referenced class.
-	 * 
-	 * @return the namespace
-	 * @since 3.3
-	 */
-	public String getElementAdapterNamespace() {
-		return WorkbenchPlugin.getBundleForExecutableExtension(configElement,
-				ATT_UPDATER_CLASS).getSymbolicName();
-	}
-
-    /**
-	 * Creates a working set page from this extension descriptor.
-	 * 
-	 * @return a working set page created from this extension descriptor.
-	 */
-    public IWorkingSetPage createWorkingSetPage() {
-        Object page = null;
-
-        if (pageClassName != null) {
-            try {
-                page = WorkbenchPlugin.createExtension(configElement,
-                        ATT_PAGE_CLASS);
-            } catch (CoreException exception) {
-                WorkbenchPlugin.log("Unable to create working set page: " + //$NON-NLS-1$
-                        pageClassName, exception.getStatus());
-            }
-        }
-        return (IWorkingSetPage) page;
-    }
-
-    /**
-     * Returns the page's icon
-     * 
-     * @return the page's icon
-     */
-    public ImageDescriptor getIcon() {
-        if (icon == null) {
-			return null;
-		}
-
-        IExtension extension = configElement.getDeclaringExtension();
-        String extendingPluginId = extension.getNamespace();
-        return AbstractUIPlugin.imageDescriptorFromPlugin(extendingPluginId,
-                icon);
-    }
-
-    /**
-     * Returns the working set page id.
-     * 
-     * @return the working set page id.
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the working set page class name
-     * 
-     * @return the working set page class name or <code>null</code> if
-     *  no page class name has been provided by the extension
-     */
-    public String getPageClassName() {
-        return pageClassName;
-    }
-
-    /**
-     * Returns the name of the working set element type the 
-     * page works with.
-     * 
-     * @return the working set element type name
-     */
-    public String getName() {
-        return name;
-    }
-    
-    /**
-     * Returns the working set updater class name
-     * 
-     * @return the working set updater class name or <code>null</code> if
-     *  no updater class name has been provided by the extension
-     */
-    public String getUpdaterClassName() {
-    	return updaterClassName;
-    }
-    
-    /**
-	 * Creates a working set element adapter.
-	 * 
-	 * @return the element adapter or <code>null</code> if no adapter has been
-	 *         declared
-	 */
-	public IWorkingSetElementAdapter createWorkingSetElementAdapter() {
-		if (!WorkbenchPlugin.hasExecutableExtension(configElement, ATT_ELEMENT_ADAPTER_CLASS))
-			return null;
-		IWorkingSetElementAdapter result = null;
-		try {
-			result = (IWorkingSetElementAdapter) WorkbenchPlugin
-					.createExtension(configElement, ATT_ELEMENT_ADAPTER_CLASS);
-		} catch (CoreException exception) {
-			WorkbenchPlugin.log("Unable to create working set element adapter: " + //$NON-NLS-1$
-					result, exception.getStatus());
-		}
-		return result;
-	}
-    
-    /**
-	 * Creates a working set updater.
-	 * 
-	 * @return the working set updater or <code>null</code> if no updater has
-	 *         been declared
-	 */
-    public IWorkingSetUpdater createWorkingSetUpdater() {
-    	if (updaterClassName == null) {
-			return null;
-		}
-    	IWorkingSetUpdater result = null;
-        try {
-            result = (IWorkingSetUpdater)WorkbenchPlugin.createExtension(configElement, ATT_UPDATER_CLASS);
-        } catch (CoreException exception) {
-            WorkbenchPlugin.log("Unable to create working set updater: " + //$NON-NLS-1$
-            	updaterClassName, exception.getStatus());
-        }
-        return result;   	
-    }
-    
-    public boolean isUpdaterClassLoaded() {
-    	return WorkbenchPlugin.isBundleLoadedForExecutableExtension(configElement, ATT_UPDATER_CLASS);
-    }
-    
-    public boolean isElementAdapterClassLoaded() {
-    	return WorkbenchPlugin.isBundleLoadedForExecutableExtension(configElement, ATT_ELEMENT_ADAPTER_CLASS);
-    }
-    
-    /**
-     * Returns whether working sets based on this descriptor are editable.
-     * 
-     * @return <code>true</code> if working sets based on this descriptor are editable; otherwise
-     *  <code>false</code>
-     * 
-     * @since 3.1
-     */
-    public boolean isEditable() {
-        return getPageClassName() != null;
-    }
-
-	public String getLocalId() {
-		return getId();
-	}
-
-	public String getPluginId() {
-		return getDeclaringNamespace();
-	}
-	
-	/**
-	 * Return the config element for this descriptor.
-	 * 
-	 * @return the config element
-	 * @since 3.3
-	 */
-	public IConfigurationElement getConfigurationElement() {
-		return configElement;
-	}
-	
-	/**
-	 * Return the description for this working set type.
-	 * 
-	 * @return the description for this type. May be an empty string.
-	 * @since 3.4
-	 */
-	public String getDescription() {
-		String description = configElement
-				.getAttribute(IWorkbenchRegistryConstants.ATT_DESCRIPTION);
-		if (description == null)
-			description = ""; //$NON-NLS-1$
-		return description;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistry.java
deleted file mode 100644
index 84f71a8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistry.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.IWorkingSetPage;
-
-/**
- * Stores working set descriptors for working set extensions.
- */
-public class WorkingSetRegistry implements IExtensionChangeHandler {
-    // used in Workbench plugin.xml for default workingSet extension
-    // @issue this is an IDE specific working set page!
-    private static final String DEFAULT_PAGE_ID = "org.eclipse.ui.resourceWorkingSetPage"; //$NON-NLS-1$
-
-    private HashMap/*<String, WorkingSetDescriptor>*/ workingSetDescriptors = new HashMap();
-
-    /**
-	 * 
-	 */
-	public WorkingSetRegistry() {
-		IExtensionTracker tracker = PlatformUI.getWorkbench()
-				.getExtensionTracker();
-		tracker.registerHandler(this, ExtensionTracker
-				.createExtensionPointFilter(getExtensionPointFilter()));
-
-	}
-
-	/**
-	 * 
-	 * @return
-	 * @since 3.3
-	 */
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(
-				PlatformUI.PLUGIN_ID,
-				IWorkbenchRegistryConstants.PL_WORKINGSETS);
-	}
-	
-    /**
-     * Adds a working set descriptor.
-     * 
-     * @param descriptor working set descriptor to add. Must not 
-     * 	exist in the registry yet.
-     */
-    public void addWorkingSetDescriptor(WorkingSetDescriptor descriptor) {
-		Assert.isTrue(!workingSetDescriptors.containsValue(descriptor),
-				"working set descriptor already registered"); //$NON-NLS-1$
-		IExtensionTracker tracker = PlatformUI.getWorkbench()
-				.getExtensionTracker();
-		tracker.registerObject(descriptor.getConfigurationElement()
-				.getDeclaringExtension(), descriptor,
-				IExtensionTracker.REF_WEAK);
-		workingSetDescriptors.put(descriptor.getId(), descriptor);
-	}
-
-    /**
-	 * Returns the default, resource based, working set page
-	 * 
-	 * @return the default working set page.
-	 */
-    public IWorkingSetPage getDefaultWorkingSetPage() {
-        // @issue this will return the IDE resource working set page... not good for generic workbench
-        WorkingSetDescriptor descriptor = (WorkingSetDescriptor) workingSetDescriptors
-                .get(DEFAULT_PAGE_ID);
-
-        if (descriptor != null) {
-            return descriptor.createWorkingSetPage();
-        }
-        return null;
-    }
-
-    /**
-     * Returns the working set descriptor with the given id.
-     * 
-     * @param pageId working set page id
-     * @return the working set descriptor with the given id.
-     */
-    public WorkingSetDescriptor getWorkingSetDescriptor(String pageId) {
-        return (WorkingSetDescriptor) workingSetDescriptors.get(pageId);
-    }
-
-    /**
-     * Returns an array of all working set descriptors.
-     * 
-     * @return an array of all working set descriptors.
-     */
-    public WorkingSetDescriptor[] getWorkingSetDescriptors() {
-        return (WorkingSetDescriptor[]) workingSetDescriptors.values().toArray(
-                new WorkingSetDescriptor[workingSetDescriptors.size()]);
-    }
-    
-    /**
-     * Returns an array of all working set descriptors having
-     * a page class attribute
-     * 
-     * @return an array of all working set descriptors having a 
-     * page class attribute
-     */
-    public WorkingSetDescriptor[] getNewPageWorkingSetDescriptors() {
-    	Collection descriptors= workingSetDescriptors.values();
-        List result= new ArrayList(descriptors.size());
-        for (Iterator iter= descriptors.iterator(); iter.hasNext();) {
-			WorkingSetDescriptor descriptor= (WorkingSetDescriptor)iter.next();
-			if (descriptor.getPageClassName() != null) {
-				result.add(descriptor);
-			}
-		}
-        return (WorkingSetDescriptor[])result.toArray(new WorkingSetDescriptor[result.size()]);
-    }
-    
-    /**
-     * Returns <code>true</code> if there is a working set descriptor with
-     * a page class attribute. Otherwise <code>false</code> is returned.
-     * 
-     * @return whether a descriptor with a page class attribute exists
-     */
-    public boolean hasNewPageWorkingSetDescriptor() {
-    	Collection descriptors= workingSetDescriptors.values();
-        for (Iterator iter= descriptors.iterator(); iter.hasNext();) {
-			WorkingSetDescriptor descriptor= (WorkingSetDescriptor)iter.next();
-			if (descriptor.getPageClassName() != null) {
-				return true;
-			}
-		}
-    	return false;
-    }
-    
-    public WorkingSetDescriptor[] getUpdaterDescriptorsForNamespace(
-			String namespace) {
-    	if (namespace == null) // fix for Bug 84225
-    		return new WorkingSetDescriptor[0];
-		Collection descriptors = workingSetDescriptors.values();
-		List result = new ArrayList();
-		for (Iterator iter = descriptors.iterator(); iter.hasNext();) {
-			WorkingSetDescriptor descriptor = (WorkingSetDescriptor) iter
-					.next();
-			if (namespace.equals(descriptor.getUpdaterNamespace())) {
-				result.add(descriptor);
-			}
-		}
-		return (WorkingSetDescriptor[]) result
-				.toArray(new WorkingSetDescriptor[result.size()]);
-	}
-    
-    public WorkingSetDescriptor[] getElementAdapterDescriptorsForNamespace(
-			String namespace) {
-    	if (namespace == null) // fix for Bug 84225
-    		return new WorkingSetDescriptor[0];
-		Collection descriptors = workingSetDescriptors.values();
-		List result = new ArrayList();
-		for (Iterator iter = descriptors.iterator(); iter.hasNext();) {
-			WorkingSetDescriptor descriptor = (WorkingSetDescriptor) iter
-					.next();
-			if (namespace.equals(descriptor.getDeclaringNamespace())) {
-				result.add(descriptor);
-			}
-		}
-		return (WorkingSetDescriptor[]) result
-				.toArray(new WorkingSetDescriptor[result.size()]);
-	}
-
-    /**
-     * Returns the working set page with the given id.
-     * 
-     * @param pageId working set page id
-     * @return the working set page with the given id.
-     */
-    public IWorkingSetPage getWorkingSetPage(String pageId) {
-        WorkingSetDescriptor descriptor = (WorkingSetDescriptor) workingSetDescriptors
-                .get(pageId);
-
-        if (descriptor == null) {
-            return null;
-        }
-        return descriptor.createWorkingSetPage();
-    }
-
-    /**
-     * Loads the working set registry.
-     */
-    public void load() {
-        WorkingSetRegistryReader reader = new WorkingSetRegistryReader();
-        reader.readWorkingSets(Platform.getExtensionRegistry(), this);
-    }
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		WorkingSetRegistryReader reader = new WorkingSetRegistryReader(this);
-		IConfigurationElement[] elements = extension.getConfigurationElements();
-        for (int i = 0; i < elements.length; i++) {
-			reader.readElement(elements[i]);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-            if (objects[i] instanceof WorkingSetDescriptor) {
-                WorkingSetDescriptor desc = (WorkingSetDescriptor) objects[i];
-                workingSetDescriptors.remove(desc.getId());
-            }
-        }
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java
deleted file mode 100644
index 5eac376..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/WorkingSetRegistryReader.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.registry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * A strategy to read working set extensions from the registry.
- */
-public class WorkingSetRegistryReader extends RegistryReader {
-    
-
-    private WorkingSetRegistry registry;
-
-    /**
-     * Create a new instance of this reader.
-     */
-    public WorkingSetRegistryReader() {
-        super();
-    }
-
-    /**
-     * Create a new instance of this reader.
-     * 
-     * @param registry the registry to populate
-     */
-    public WorkingSetRegistryReader(WorkingSetRegistry registry) {
-        super();
-        this.registry = registry;
-    }
-
-    /**
-     * Overrides method in RegistryReader.
-     * 
-     * @see RegistryReader#readElement(IConfigurationElement)
-     */
-    public boolean readElement(IConfigurationElement element) {
-        if (element.getName().equals(IWorkbenchRegistryConstants.TAG_WORKING_SET)) {
-            try {
-                WorkingSetDescriptor desc = new WorkingSetDescriptor(element);
-                registry.addWorkingSetDescriptor(desc);
-            } catch (CoreException e) {
-                // log an error since its not safe to open a dialog here
-                WorkbenchPlugin
-                        .log(
-                                "Unable to create working set descriptor.", e.getStatus());//$NON-NLS-1$
-            }
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Reads the working set extensions within a registry.
-     * 
-     * @param in the plugin registry to read from
-     * @param out the working set registry to store read entries in.
-     */
-    public void readWorkingSets(IExtensionRegistry in, WorkingSetRegistry out) {
-        registry = out;
-        readRegistry(in, PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_WORKINGSETS);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActionSetSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActionSetSourceProvider.java
deleted file mode 100644
index e421c78..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActionSetSourceProvider.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.internal.ActionSetsEvent;
-import org.eclipse.ui.internal.menus.IActionSetsListener;
-import org.eclipse.ui.internal.registry.IActionSetDescriptor;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * A listener to changes in the action sets.
- * </p>
- * <p>
- * This class is only intended for internal use within
- * <code>org.eclipse.ui.workbench</code>.
- * </p>
- * 
- * @since 3.2
- */
-public final class ActionSetSourceProvider extends AbstractSourceProvider
-		implements IActionSetsListener {
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] { ISources.ACTIVE_ACTION_SETS_NAME };
-
-	/**
-	 * The action sets last seen as active by this source provider. This value
-	 * may be <code>null</code>.
-	 */
-	private IActionSetDescriptor[] activeActionSets;
-
-	public ActionSetSourceProvider() {
-		super();
-	}
-
-	public final void actionSetsChanged(final ActionSetsEvent event) {
-		final IActionSetDescriptor[] newActionSets = event.getNewActionSets();
-		if (!Util.equals(newActionSets, activeActionSets)) {
-			if (DEBUG) {
-				final StringBuffer message = new StringBuffer();
-				message.append("Action sets changed to ["); //$NON-NLS-1$
-				if (newActionSets != null) {
-					for (int i = 0; i < newActionSets.length; i++) {
-						message.append(newActionSets[i].getLabel());
-						if (i < newActionSets.length - 1) {
-							message.append(", "); //$NON-NLS-1$
-						}
-					}
-				}
-				message.append(']');
-				logDebuggingInfo(message.toString());
-			}
-
-			activeActionSets = newActionSets;
-			fireSourceChanged(ISources.ACTIVE_ACTION_SETS,
-					ISources.ACTIVE_ACTION_SETS_NAME, activeActionSets);
-
-		}
-	}
-
-	public final void dispose() {
-		activeActionSets = null;
-	}
-
-	public final Map getCurrentState() {
-		final Map currentState = new HashMap();
-		currentState.put(ISources.ACTIVE_ACTION_SETS_NAME, activeActionSets);
-		return currentState;
-	}
-
-	public final String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActivePartSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActivePartSourceProvider.java
deleted file mode 100755
index f2b0df2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActivePartSourceProvider.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWindowListener;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.part.IShowInSource;
-import org.eclipse.ui.part.ShowInContext;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Provides notifications when the active part changes.
- * 
- * @since 3.1
- */
-public class ActivePartSourceProvider extends AbstractSourceProvider {
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] {
-			ISources.ACTIVE_EDITOR_ID_NAME, ISources.ACTIVE_EDITOR_NAME,
-			ISources.ACTIVE_PART_ID_NAME, ISources.ACTIVE_PART_NAME,
-			ISources.ACTIVE_SITE_NAME, ISources.SHOW_IN_SELECTION,
-			ISources.SHOW_IN_INPUT };
-
-	/**
-	 * The last active editor part seen as active by this provider. This value
-	 * may be <code>null</code> if there is no currently active editor.
-	 */
-	private IEditorPart lastActiveEditor = null;
-
-	/**
-	 * The last active editor id seen as active by this provider. This value may
-	 * be <code>null</code> if there is no currently active editor.
-	 */
-	private String lastActiveEditorId = null;
-
-	/**
-	 * The last active part seen as active by this provider. This value may be
-	 * <code>null</code> if there is no currently active part.
-	 */
-	private IWorkbenchPart lastActivePart = null;
-
-	/**
-	 * The last active part id seen as active by this provider. This value may
-	 * be <code>null</code> if there is no currently active part.
-	 */
-	private String lastActivePartId = null;
-
-	/**
-	 * The last active part site seen by this provider. This value may be
-	 * <code>null</code> if there is no currently active site.
-	 */
-	private IWorkbenchPartSite lastActivePartSite = null;
-
-	private Object lastShowInInput = null;
-	private ISelection lastShowInSelection = null;
-
-	private final IPartListener partListener = new IPartListener() {
-
-		public final void partActivated(final IWorkbenchPart part) {
-			checkActivePart();
-		}
-
-		public final void partBroughtToTop(final IWorkbenchPart part) {
-			checkActivePart();
-		}
-
-		public final void partClosed(final IWorkbenchPart part) {
-			checkActivePart();
-		}
-
-		public final void partDeactivated(final IWorkbenchPart part) {
-			checkActivePart();
-		}
-
-		public final void partOpened(final IWorkbenchPart part) {
-			checkActivePart();
-		}
-
-	};
-
-	private final IWindowListener windowListener = new IWindowListener() {
-
-		public final void windowActivated(final IWorkbenchWindow window) {
-			checkActivePart();
-		}
-
-		public final void windowClosed(final IWorkbenchWindow window) {
-			if (window != null) {
-				window.getPartService().removePartListener(partListener);
-			}
-			checkActivePart();
-		}
-
-		public final void windowDeactivated(final IWorkbenchWindow window) {
-			checkActivePart();
-		}
-
-		public final void windowOpened(final IWorkbenchWindow window) {
-			if (window != null) {
-				window.getPartService().addPartListener(partListener);
-			}
-		}
-
-	};
-	
-	private Shell lastActiveShell = null;
-	public void handleCheck(Shell s) {
-		if (s != lastActiveShell) {
-			lastActiveShell = s;
-			checkActivePart();
-		}
-	}
-
-	/**
-	 * The workbench on which this source provider will act.
-	 */
-	private IWorkbench workbench;
-
-	public final void checkActivePart() {
-		final Map currentState = getCurrentState();
-		int sources = 0;
-
-		// Figure out what was changed.
-		final Object newActivePart = currentState
-				.get(ISources.ACTIVE_PART_NAME);
-		if (!Util.equals(newActivePart, lastActivePart)) {
-			sources |= ISources.ACTIVE_PART;
-			if (newActivePart != IEvaluationContext.UNDEFINED_VARIABLE) {
-				lastActivePart = (IWorkbenchPart) newActivePart;
-			} else {
-				lastActivePart = null;
-			}
-		}
-		final Object newActivePartId = currentState
-				.get(ISources.ACTIVE_PART_ID_NAME);
-		if (!Util.equals(newActivePartId, lastActivePartId)) {
-			sources |= ISources.ACTIVE_PART_ID;
-			if (newActivePartId != IEvaluationContext.UNDEFINED_VARIABLE) {
-				lastActivePartId = (String) newActivePartId;
-			} else {
-				lastActivePartId = null;
-			}
-		}
-		final Object newActivePartSite = currentState
-				.get(ISources.ACTIVE_SITE_NAME);
-		if (!Util.equals(newActivePartSite, lastActivePartSite)) {
-			sources |= ISources.ACTIVE_SITE;
-			if (newActivePartSite != IEvaluationContext.UNDEFINED_VARIABLE) {
-				lastActivePartSite = (IWorkbenchPartSite) newActivePartSite;
-			} else {
-				lastActivePartSite = null;
-			}
-		}
-		final Object newShowInInput = currentState.get(ISources.SHOW_IN_INPUT);
-		if (!Util.equals(newShowInInput, lastShowInInput)) {
-			sources |= ISources.ACTIVE_SITE;
-			lastShowInInput = newShowInInput;
-		}
-		final Object newShowInSelection = currentState
-				.get(ISources.SHOW_IN_SELECTION);
-		if (!Util.equals(newShowInSelection, lastShowInSelection)) {
-			sources |= ISources.ACTIVE_SITE;
-			if (newShowInSelection != IEvaluationContext.UNDEFINED_VARIABLE) {
-				lastShowInSelection = (ISelection) newShowInSelection;
-			} else {
-				lastShowInSelection = null;
-			}
-		}
-		final Object newActiveEditor = currentState
-				.get(ISources.ACTIVE_EDITOR_NAME);
-		if (!Util.equals(newActiveEditor, lastActiveEditor)) {
-			sources |= ISources.ACTIVE_EDITOR;
-			if (newActiveEditor != IEvaluationContext.UNDEFINED_VARIABLE) {
-				lastActiveEditor = (IEditorPart) newActiveEditor;
-			} else {
-				lastActiveEditor = null;
-			}
-		}
-		final Object newActiveEditorId = currentState
-				.get(ISources.ACTIVE_EDITOR_ID_NAME);
-		if (!Util.equals(newActiveEditorId, lastActiveEditorId)) {
-			sources |= ISources.ACTIVE_EDITOR_ID;
-			if (newActiveEditorId != IEvaluationContext.UNDEFINED_VARIABLE) {
-				lastActiveEditorId = (String) newActiveEditorId;
-			} else {
-				lastActiveEditorId = null;
-			}
-		}
-
-		// Fire the event, if something has changed.
-		if (sources != 0) {
-			if (DEBUG) {
-				if ((sources & ISources.ACTIVE_PART) != 0) {
-					logDebuggingInfo("Active part changed to " //$NON-NLS-1$
-							+ lastActivePart);
-				}
-				if ((sources & ISources.ACTIVE_PART_ID) != 0) {
-					logDebuggingInfo("Active part id changed to " //$NON-NLS-1$
-							+ lastActivePartId);
-				}
-				if ((sources & ISources.ACTIVE_SITE) != 0) {
-					logDebuggingInfo("Active site changed to " //$NON-NLS-1$
-							+ lastActivePartSite);
-				}
-				if ((sources & ISources.ACTIVE_EDITOR) != 0) {
-					logDebuggingInfo("Active editor changed to " //$NON-NLS-1$
-							+ lastActiveEditor);
-				}
-				if ((sources & ISources.ACTIVE_EDITOR_ID) != 0) {
-					logDebuggingInfo("Active editor id changed to " //$NON-NLS-1$
-							+ lastActiveEditorId);
-				}
-			}
-			fireSourceChanged(sources, currentState);
-		}
-	}
-
-	private IShowInSource getShowInSource(IWorkbenchPart sourcePart) {
-		return (IShowInSource) Util.getAdapter(sourcePart, IShowInSource.class);
-	}
-
-	private ShowInContext getContext(IWorkbenchPart sourcePart) {
-		IShowInSource source = getShowInSource(sourcePart);
-		if (source != null) {
-			ShowInContext context = source.getShowInContext();
-			if (context != null) {
-				return context;
-			}
-		} else if (sourcePart instanceof IEditorPart) {
-			Object input = ((IEditorPart) sourcePart).getEditorInput();
-			ISelectionProvider sp = sourcePart.getSite().getSelectionProvider();
-			ISelection sel = sp == null ? null : sp.getSelection();
-			return new ShowInContext(input, sel);
-		}
-		return null;
-	}
-
-	public final void dispose() {
-		workbench.removeWindowListener(windowListener);
-	}
-
-	public final Map getCurrentState() {
-		final Map currentState = new HashMap(7);
-		currentState.put(ISources.ACTIVE_SITE_NAME,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-		currentState.put(ISources.ACTIVE_PART_NAME,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-		currentState.put(ISources.ACTIVE_PART_ID_NAME,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-		currentState.put(ISources.ACTIVE_EDITOR_NAME,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-		currentState.put(ISources.ACTIVE_EDITOR_ID_NAME,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-		currentState.put(ISources.SHOW_IN_INPUT,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-		currentState.put(ISources.SHOW_IN_SELECTION,
-				IEvaluationContext.UNDEFINED_VARIABLE);
-
-		final IWorkbenchWindow activeWorkbenchWindow = getActiveWindow();
-		if (activeWorkbenchWindow != null) {
-			final IWorkbenchPage activeWorkbenchPage = activeWorkbenchWindow
-					.getActivePage();
-			if (activeWorkbenchPage != null) {
-				// Check the active workbench part.
-				final IWorkbenchPart newActivePart = activeWorkbenchPage
-						.getActivePart();
-				currentState.put(ISources.ACTIVE_PART_NAME, newActivePart);
-				if (newActivePart != null) {
-					final IWorkbenchPartSite activeWorkbenchPartSite = newActivePart
-							.getSite();
-					currentState.put(ISources.ACTIVE_SITE_NAME,
-							activeWorkbenchPartSite);
-					if (activeWorkbenchPartSite != null) {
-						final String newActivePartId = activeWorkbenchPartSite
-								.getId();
-						currentState.put(ISources.ACTIVE_PART_ID_NAME,
-								newActivePartId);
-					}
-					ShowInContext context = getContext(newActivePart);
-					if (context != null) {
-						Object input = context.getInput();
-						if (input != null) {
-							currentState.put(ISources.SHOW_IN_INPUT, input);
-						}
-						ISelection selection = context.getSelection();
-						if (selection != null) {
-							currentState.put(ISources.SHOW_IN_SELECTION,
-									selection);
-						}
-					}
-				}
-
-				// Check the active editor part.
-				final IEditorPart newActiveEditor = activeWorkbenchPage
-						.getActiveEditor();
-				currentState.put(ISources.ACTIVE_EDITOR_NAME, newActiveEditor);
-				if (newActiveEditor != null) {
-					final IEditorSite activeEditorSite = newActiveEditor
-							.getEditorSite();
-					if (activeEditorSite != null) {
-						final String newActiveEditorId = activeEditorSite
-								.getId();
-						currentState.put(ISources.ACTIVE_EDITOR_ID_NAME,
-								newActiveEditorId);
-					}
-				}
-			}
-		}
-
-		return currentState;
-	}
-
-	private IWorkbenchWindow getActiveWindow() {
-		final Shell newActiveShell = workbench.getDisplay().getActiveShell();
-		final IContextService contextService = (IContextService) workbench
-				.getService(IContextService.class);
-		if (contextService != null) {
-			final int shellType = contextService.getShellType(newActiveShell);
-			if (shellType != IContextService.TYPE_DIALOG) {
-				return workbench.getActiveWorkbenchWindow();
-			}
-		}
-		return null;
-	}
-
-	public final String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-
-	public void initialize(IServiceLocator locator) {
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		workbench = wls.getWorkbench();
-		workbench.addWindowListener(windowListener);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActiveShellSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActiveShellSourceProvider.java
deleted file mode 100644
index bb004f5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ActiveShellSourceProvider.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.services.ISourceProviderService;
-
-/**
- * A provider of notifications for when the active shell changes.
- * 
- * @since 3.1
- */
-public final class ActiveShellSourceProvider extends AbstractSourceProvider {
-
-	private static final String STATUS_LINE_VIS = ISources.ACTIVE_WORKBENCH_WINDOW_NAME
-			+ ".isStatusLineVisible"; //$NON-NLS-1$
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] {
-			ISources.ACTIVE_SHELL_NAME, ISources.ACTIVE_WORKBENCH_WINDOW_NAME,
-			ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME,
-			ISources.ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME,
-			ISources.ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME,
-			ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME,
-			STATUS_LINE_VIS };
-
-	/**
-	 * The display on which this provider is working.
-	 */
-	private Display display;
-
-	/**
-	 * The last shell seen as active by this provider. This value may be
-	 * <code>null</code> if the last call to
-	 * <code>Display.getActiveShell()</code> returned <code>null</code>.
-	 */
-	private Shell lastActiveShell = null;
-
-	/**
-	 * The last workbench window shell seen as active by this provider. This
-	 * value may be <code>null</code> if the last call to
-	 * <code>workbench.getActiveWorkbenchWindow()</code> returned
-	 * <code>null</code>.
-	 */
-	private Shell lastActiveWorkbenchWindowShell = null;
-
-	/**
-	 * The last workbench window seen as active by this provider. This value may
-	 * be null if the last call to
-	 * <code>workbench.getActiveWorkbenchWindow()</code> returned
-	 * <code>null</code>.
-	 * 
-	 * @since 3.3
-	 */
-	private WorkbenchWindow lastActiveWorkbenchWindow = null;
-
-	/**
-	 * The result of the last visibility check on the coolbar of the last active
-	 * workbench window.
-	 * 
-	 * @since 3.3
-	 */
-	private Boolean lastCoolbarVisibility = Boolean.FALSE;
-
-	/**
-	 * The result of the last visibility check on the perspective bar of the
-	 * last active workbench window.
-	 * 
-	 * @since 3.3
-	 */
-	private Boolean lastPerspectiveBarVisibility = Boolean.FALSE;
-
-	/**
-	 * The result of the last visibility check on the status line for the last
-	 * workbench window.
-	 * 
-	 * @since 3.4
-	 */
-	private Boolean lastStatusLineVisibility = Boolean.FALSE;
-
-	/**
-	 * The last perspective id that was provided by this source.
-	 * 
-	 * @since 3.4
-	 */
-	private String lastPerspectiveId = null;
-
-	/**
-	 * The listener to individual window properties.
-	 * 
-	 * @since 3.3
-	 */
-	private final IPropertyChangeListener propertyListener = new IPropertyChangeListener() {
-
-		public void propertyChange(PropertyChangeEvent event) {
-			if (WorkbenchWindow.PROP_COOLBAR_VISIBLE
-					.equals(event.getProperty())) {
-				Object newValue = event.getNewValue();
-				if (newValue == null || !(newValue instanceof Boolean))
-					return;
-				if (!lastCoolbarVisibility.equals(newValue)) {
-					fireSourceChanged(
-							ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE,
-							ISources.ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME,
-							newValue);
-					lastCoolbarVisibility = (Boolean) newValue;
-				}
-			} else if (WorkbenchWindow.PROP_PERSPECTIVEBAR_VISIBLE.equals(event
-					.getProperty())) {
-				Object newValue = event.getNewValue();
-				if (newValue == null || !(newValue instanceof Boolean))
-					return;
-				if (!lastPerspectiveBarVisibility.equals(newValue)) {
-					fireSourceChanged(
-							ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE,
-							ISources.ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME,
-							newValue);
-					lastPerspectiveBarVisibility = (Boolean) newValue;
-				}
-			} else if (WorkbenchWindow.PROP_STATUS_LINE_VISIBLE.equals(event
-					.getProperty())) {
-				Object newValue = event.getNewValue();
-				if (newValue == null || !(newValue instanceof Boolean))
-					return;
-				if (!lastStatusLineVisibility.equals(newValue)) {
-					fireSourceChanged(
-							ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE,
-							ISources.ACTIVE_WORKBENCH_WINDOW_NAME
-									+ ".isStatusLineVisible", newValue); //$NON-NLS-1$
-					lastStatusLineVisibility = (Boolean) newValue;
-				}
-			}
-		}
-
-	};
-
-	IPerspectiveListener perspectiveListener = new IPerspectiveListener() {
-		public void perspectiveActivated(IWorkbenchPage page,
-				IPerspectiveDescriptor perspective) {
-			String id = perspective == null ? null : perspective.getId();
-			if (Util.equals(lastPerspectiveId, id)) {
-				return;
-			}
-			fireSourceChanged(ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE,
-					ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME,
-					id);
-			lastPerspectiveId = id;
-		}
-
-		public void perspectiveChanged(IWorkbenchPage page,
-				IPerspectiveDescriptor perspective, String changeId) {
-		}
-	};
-
-	/**
-	 * The listener to shell activations on the display.
-	 */
-	private final Listener listener = new Listener() {
-		/**
-		 * Notifies all listeners that the source has changed.
-		 */
-		public final void handleEvent(final Event event) {
-			if (!(event.widget instanceof Shell)) {
-				if (DEBUG) {
-					logDebuggingInfo("ASSP: passOnEvent: " + event.widget); //$NON-NLS-1$
-				}
-				return;
-			}
-
-			if (DEBUG) {
-				logDebuggingInfo("\tASSP:lastActiveShell: " + lastActiveShell); //$NON-NLS-1$
-				logDebuggingInfo("\tASSP:lastActiveWorkbenchWindowShell" + lastActiveWorkbenchWindowShell); //$NON-NLS-1$
-			}
-
-			final Map currentState = getCurrentState();
-			final Shell newActiveShell = (Shell) currentState
-					.get(ISources.ACTIVE_SHELL_NAME);
-			final WorkbenchWindow newActiveWorkbenchWindow = (WorkbenchWindow) currentState
-					.get(ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
-			final Shell newActiveWorkbenchWindowShell = (Shell) currentState
-					.get(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME);
-
-			// dont update the coolbar/perspective bar visibility unless we're
-			// processing a workbench window change
-			final Boolean newCoolbarVisibility = newActiveWorkbenchWindow == null ? lastCoolbarVisibility
-					: (newActiveWorkbenchWindow.getCoolBarVisible() ? Boolean.TRUE
-							: Boolean.FALSE);
-			final Boolean newPerspectiveBarVisibility = newActiveWorkbenchWindow == null ? lastPerspectiveBarVisibility
-					: (newActiveWorkbenchWindow.getPerspectiveBarVisible() ? Boolean.TRUE
-							: Boolean.FALSE);
-			final Boolean newStatusLineVis = newActiveWorkbenchWindow == null ? lastStatusLineVisibility
-					: (newActiveWorkbenchWindow.getStatusLineVisible() ? Boolean.TRUE
-							: Boolean.FALSE);
-
-			String perspectiveId = lastPerspectiveId;
-			if (newActiveWorkbenchWindow != null) {
-				IWorkbenchPage activePage = newActiveWorkbenchWindow
-						.getActivePage();
-				if (activePage != null) {
-					IPerspectiveDescriptor perspective = activePage
-							.getPerspective();
-					if (perspective != null) {
-						perspectiveId = perspective.getId();
-					}
-				}
-			}
-
-			// Figure out which variables have changed.
-			final boolean shellChanged = newActiveShell != lastActiveShell;
-			final boolean windowChanged = newActiveWorkbenchWindowShell != lastActiveWorkbenchWindowShell;
-			final boolean coolbarChanged = newCoolbarVisibility != lastCoolbarVisibility;
-			final boolean statusLineChanged = newStatusLineVis != lastStatusLineVisibility;
-
-			final boolean perspectiveBarChanged = newPerspectiveBarVisibility != lastPerspectiveBarVisibility;
-			final boolean perspectiveIdChanged = !Util.equals(
-					lastPerspectiveId, perspectiveId);
-			// Fire an event for those sources that have changed.
-			if (shellChanged && windowChanged) {
-				final Map sourceValuesByName = new HashMap(5);
-				sourceValuesByName.put(ISources.ACTIVE_SHELL_NAME,
-						newActiveShell);
-				sourceValuesByName.put(ISources.ACTIVE_WORKBENCH_WINDOW_NAME,
-						newActiveWorkbenchWindow);
-				sourceValuesByName.put(
-						ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME,
-						newActiveWorkbenchWindowShell);
-				int sourceFlags = ISources.ACTIVE_SHELL
-						| ISources.ACTIVE_WORKBENCH_WINDOW;
-
-				if (coolbarChanged) {
-					sourceValuesByName
-							.put(
-									ISources.ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME,
-									newCoolbarVisibility);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-				if (statusLineChanged) {
-					sourceValuesByName.put(STATUS_LINE_VIS, newStatusLineVis);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-				if (perspectiveBarChanged) {
-					sourceValuesByName
-							.put(
-									ISources.ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME,
-									newPerspectiveBarVisibility);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-				if (perspectiveIdChanged) {
-					sourceValuesByName
-							.put(
-									ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME,
-									perspectiveId);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-
-				if (DEBUG) {
-					logDebuggingInfo("Active shell changed to " //$NON-NLS-1$
-							+ newActiveShell);
-					logDebuggingInfo("Active workbench window changed to " //$NON-NLS-1$
-							+ newActiveWorkbenchWindow);
-					logDebuggingInfo("Active workbench window shell changed to " //$NON-NLS-1$
-							+ newActiveWorkbenchWindowShell);
-					logDebuggingInfo("Active workbench window coolbar visibility " //$NON-NLS-1$
-							+ newCoolbarVisibility);
-					logDebuggingInfo("Active workbench window perspective bar visibility " //$NON-NLS-1$
-							+ newPerspectiveBarVisibility);
-					logDebuggingInfo("Active workbench window status line visibility " //$NON-NLS-1$
-							+ newStatusLineVis);
-				}
-
-				fireSourceChanged(sourceFlags, sourceValuesByName);
-				hookListener(lastActiveWorkbenchWindow,
-						newActiveWorkbenchWindow);
-
-			} else if (shellChanged) {
-				if (DEBUG) {
-					logDebuggingInfo("Active shell changed to " //$NON-NLS-1$
-							+ newActiveShell);
-				}
-				fireSourceChanged(ISources.ACTIVE_SHELL,
-						ISources.ACTIVE_SHELL_NAME, newActiveShell);
-			} else if (windowChanged) {
-				final Map sourceValuesByName = new HashMap(4);
-				sourceValuesByName.put(ISources.ACTIVE_WORKBENCH_WINDOW_NAME,
-						newActiveWorkbenchWindow);
-				sourceValuesByName.put(
-						ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME,
-						newActiveWorkbenchWindowShell);
-
-				int sourceFlags = ISources.ACTIVE_SHELL
-						| ISources.ACTIVE_WORKBENCH_WINDOW;
-
-				if (coolbarChanged) {
-					sourceValuesByName
-							.put(
-									ISources.ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME,
-									newCoolbarVisibility);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-				if (statusLineChanged) {
-					sourceValuesByName.put(STATUS_LINE_VIS, newStatusLineVis);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-				if (perspectiveBarChanged) {
-					sourceValuesByName
-							.put(
-									ISources.ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME,
-									newPerspectiveBarVisibility);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-				if (perspectiveIdChanged) {
-					sourceValuesByName
-							.put(
-									ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME,
-									perspectiveId);
-					sourceFlags |= ISources.ACTIVE_WORKBENCH_WINDOW_SUBORDINATE;
-				}
-
-				if (DEBUG) {
-					logDebuggingInfo("Active workbench window changed to " //$NON-NLS-1$
-							+ newActiveWorkbenchWindow);
-					logDebuggingInfo("Active workbench window shell changed to " //$NON-NLS-1$
-							+ newActiveWorkbenchWindowShell);
-					logDebuggingInfo("Active workbench window coolbar visibility " //$NON-NLS-1$
-							+ newCoolbarVisibility);
-					logDebuggingInfo("Active workbench window perspective bar visibility " //$NON-NLS-1$
-							+ newPerspectiveBarVisibility);
-					logDebuggingInfo("Active workbench window status line visibility " //$NON-NLS-1$
-							+ newStatusLineVis);
-				}
-
-				fireSourceChanged(sourceFlags, sourceValuesByName);
-				hookListener(lastActiveWorkbenchWindow,
-						newActiveWorkbenchWindow);
-			}
-
-			if (shellChanged || windowChanged) {
-				checkOtherSources((Shell) event.widget);
-			}
-			
-			// Update the member variables.
-			lastActiveShell = newActiveShell;
-			lastActiveWorkbenchWindowShell = newActiveWorkbenchWindowShell;
-			lastActiveWorkbenchWindow = newActiveWorkbenchWindow;
-			lastCoolbarVisibility = newCoolbarVisibility;
-			lastStatusLineVisibility = newStatusLineVis;
-			lastPerspectiveBarVisibility = newPerspectiveBarVisibility;
-			lastPerspectiveId = perspectiveId;
-		}
-	};
-
-	/**
-	 * The workbench on which to work; never <code>null</code>.
-	 */
-	private IWorkbench workbench;
-
-	public final void dispose() {
-		display.removeFilter(SWT.Activate, listener);
-		hookListener(lastActiveWorkbenchWindow, null);
-		lastActiveWorkbenchWindow = null;
-		lastActiveWorkbenchWindowShell = null;
-		lastActiveShell = null;
-	}
-
-	protected void checkOtherSources(Shell s) {
-		ISourceProviderService sps = (ISourceProviderService) workbench
-				.getService(ISourceProviderService.class);
-		if (sps==null) {
-			return;
-		}
-		ISourceProvider sp = sps.getSourceProvider(ISources.ACTIVE_PART_ID_NAME);
-		if (sp instanceof ActivePartSourceProvider) {
-			((ActivePartSourceProvider)sp).handleCheck(s);
-		}
-		sp = sps.getSourceProvider(ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		if (sp instanceof CurrentSelectionSourceProvider) {
-			((CurrentSelectionSourceProvider)sp).handleCheck(s);
-		}
-	}
-
-	public final Map getCurrentState() {
-		final Map currentState = new HashMap(4);
-
-		final Shell newActiveShell = display.getActiveShell();
-		currentState.put(ISources.ACTIVE_SHELL_NAME, newActiveShell);
-
-		/*
-		 * We will fallback to the workbench window, but only if a dialog is not
-		 * open.
-		 */
-		final IContextService contextService = (IContextService) workbench
-				.getService(IContextService.class);
-		final int shellType = contextService.getShellType(newActiveShell);
-		if (shellType != IContextService.TYPE_DIALOG) {
-			final WorkbenchWindow newActiveWorkbenchWindow = (WorkbenchWindow) workbench
-					.getActiveWorkbenchWindow();
-			final Shell newActiveWorkbenchWindowShell;
-			if (newActiveWorkbenchWindow == null) {
-				newActiveWorkbenchWindowShell = null;
-			} else {
-				newActiveWorkbenchWindowShell = newActiveWorkbenchWindow
-						.getShell();
-			}
-			currentState.put(ISources.ACTIVE_WORKBENCH_WINDOW_NAME,
-					newActiveWorkbenchWindow);
-			currentState.put(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME,
-					newActiveWorkbenchWindowShell);
-
-			final Boolean newCoolbarVisibility = newActiveWorkbenchWindow == null ? lastCoolbarVisibility
-					: (newActiveWorkbenchWindow.getCoolBarVisible() ? Boolean.TRUE
-							: Boolean.FALSE);
-			final Boolean newPerspectiveBarVisibility = newActiveWorkbenchWindow == null ? lastPerspectiveBarVisibility
-					: (newActiveWorkbenchWindow.getPerspectiveBarVisible() ? Boolean.TRUE
-							: Boolean.FALSE);
-			final Boolean newStatusLineVis = newActiveWorkbenchWindow == null ? lastStatusLineVisibility
-					: (newActiveWorkbenchWindow.getStatusLineVisible() ? Boolean.TRUE
-							: Boolean.FALSE);
-
-			String perspectiveId = lastPerspectiveId;
-			if (newActiveWorkbenchWindow != null) {
-				IWorkbenchPage activePage = newActiveWorkbenchWindow
-						.getActivePage();
-				if (activePage != null) {
-					IPerspectiveDescriptor perspective = activePage
-							.getPerspective();
-					if (perspective != null) {
-						perspectiveId = perspective.getId();
-					}
-				}
-			}
-
-			currentState.put(
-					ISources.ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME,
-					newCoolbarVisibility);
-
-			currentState
-					.put(
-							ISources.ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME,
-							newPerspectiveBarVisibility);
-			currentState.put(STATUS_LINE_VIS, newStatusLineVis);
-
-			currentState.put(
-					ISources.ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME,
-					perspectiveId);
-
-		}
-
-		return currentState;
-	}
-
-	public final String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-
-	private void hookListener(WorkbenchWindow lastActiveWorkbenchWindow,
-			WorkbenchWindow newActiveWorkbenchWindow) {
-		if (lastActiveWorkbenchWindow != null) {
-			lastActiveWorkbenchWindow
-					.removePropertyChangeListener(propertyListener);
-			lastActiveWorkbenchWindow
-					.removePerspectiveListener(perspectiveListener);
-		}
-
-		if (newActiveWorkbenchWindow != null) {
-			newActiveWorkbenchWindow
-					.addPropertyChangeListener(propertyListener);
-			newActiveWorkbenchWindow
-					.addPerspectiveListener(perspectiveListener);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.AbstractSourceProvider#initializeSource(org.eclipse.ui
-	 * .services.IServiceLocator)
-	 */
-	public void initialize(IServiceLocator locator) {
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		workbench = wls.getWorkbench();
-		display = workbench.getDisplay();
-		display.addFilter(SWT.Activate, listener);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/CurrentSelectionSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/CurrentSelectionSourceProvider.java
deleted file mode 100644
index 4bceb62..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/CurrentSelectionSourceProvider.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.DetachedWindow;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * <p>
- * This listens to changes to the current selection, and propagates them through
- * the <code>ISourceProvider</code> framework (a common language in which events
- * are communicated to expression-based services).
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class CurrentSelectionSourceProvider extends
-		AbstractSourceProvider implements INullSelectionListener {
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] { ISources.ACTIVE_CURRENT_SELECTION_NAME };
-	
-	public void handleCheck(Shell s) {
-		IWorkbenchWindow window = null;
-		if (s.getData() instanceof WorkbenchWindow) {
-			window = (IWorkbenchWindow) s.getData();
-		} else if (s.getData() instanceof DetachedWindow) {
-			window = ((DetachedWindow) s.getData()).getWorkbenchPage()
-					.getWorkbenchWindow();
-		}
-		updateWindows(window);
-	}
-
-	/**
-	 * The workbench on which this source provider is acting. This value is
-	 * never <code>null</code>.
-	 */
-	private IWorkbench workbench;
-
-	private IWorkbenchWindow lastWindow = null;
-	
-	public void dispose() {
-		
-	}
-
-	public final Map getCurrentState() {
-		final Map currentState = new TreeMap();
-		final IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
-		if (window != null) {
-			final ISelectionService service = window.getSelectionService();
-			final ISelection selection = service.getSelection();
-			currentState.put(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
-		} else {
-			currentState.put(ISources.ACTIVE_CURRENT_SELECTION_NAME,
-					IEvaluationContext.UNDEFINED_VARIABLE);
-		}
-		return currentState;
-	}
-
-	public final String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-
-	public final void selectionChanged(final IWorkbenchPart part,
-			final ISelection selection) {
-		if (DEBUG) {
-			logDebuggingInfo("Selection changed to " + selection); //$NON-NLS-1$
-		}
-
-		fireSourceChanged(ISources.ACTIVE_CURRENT_SELECTION,
-				ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
-	}
-
-	private final void updateWindows(IWorkbenchWindow newWindow) {
-		if (lastWindow == newWindow) {
-			return;
-		}
-
-		ISelection selection = null;
-		if (lastWindow != null) {
-			lastWindow.getSelectionService().removeSelectionListener(
-					CurrentSelectionSourceProvider.this);
-		}
-		if (newWindow != null) {
-			newWindow.getSelectionService().addSelectionListener(
-					CurrentSelectionSourceProvider.this);
-			selection = newWindow.getSelectionService().getSelection();
-		}
-		selectionChanged(null, selection);
-		lastWindow = newWindow;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.AbstractSourceProvider#initializeSource(org.eclipse.ui
-	 * .services.IServiceLocator)
-	 */
-	public void initialize(IServiceLocator locator) {
-		IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
-				.getService(IWorkbenchLocationService.class);
-		workbench = wls.getWorkbench();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationAuthority.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationAuthority.java
deleted file mode 100644
index f110d19..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationAuthority.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.util.Tracing;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * @since 3.3
- * 
- */
-public class EvaluationAuthority extends ExpressionAuthority {
-
-	/**
-	 * 
-	 */
-	private static final String COMPONENT = "EVALUATION"; //$NON-NLS-1$
-
-	/**
-	 * A bucket sort of the evaluation references based on source priority. Each
-	 * reference will appear only once per set, but may appear in multiple sets.
-	 * If no references are defined for a particular priority level, then the
-	 * array at that index will only contain <code>null</code>.
-	 */
-	private final Map cachesBySourceName = new HashMap();
-	private ListenerList serviceListeners = new ListenerList();
-	private int notifying = 0;
-
-	// private final Map cachesByExpression = new HashMap();
-
-	public void addEvaluationListener(IEvaluationReference ref) {
-		// we update the source priority bucket sort of activations.
-		String[] sourceNames = getNames(ref);
-		for (int i = 0; i < sourceNames.length; i++) {
-			Map cachesByExpression = (HashMap) cachesBySourceName
-					.get(sourceNames[i]);
-			if (cachesByExpression == null) {
-				cachesByExpression = new HashMap(1);
-				cachesBySourceName.put(sourceNames[i], cachesByExpression);
-			}
-			final Expression expression = ref.getExpression();
-			Set caches = (Set) cachesByExpression.get(expression);
-			if (caches == null) {
-				caches = new HashSet();
-				cachesByExpression.put(expression, caches);
-			}
-			caches.add(ref);
-		}
-
-		boolean result = evaluate(ref);
-		firePropertyChange(ref, null, valueOf(result));
-	}
-
-	private Boolean valueOf(boolean result) {
-		return result ? Boolean.TRUE : Boolean.FALSE;
-	}
-
-	private String[] getNames(IEvaluationReference ref) {
-		ExpressionInfo info = new ExpressionInfo();
-		ref.getExpression().collectExpressionInfo(info);
-		ArrayList allNames = new ArrayList(Arrays.asList(info
-				.getAccessedVariableNames()));
-		if (info.hasDefaultVariableAccess()) {
-			allNames.add(ISources.ACTIVE_CURRENT_SELECTION_NAME);
-		}
-		allNames.addAll(Arrays.asList(info.getAccessedPropertyNames()));
-		return (String[]) allNames.toArray(new String[allNames.size()]);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.ExpressionAuthority#sourceChanged(int)
-	 */
-	protected void sourceChanged(int sourcePriority) {
-		// no-op, we want the other one
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.ExpressionAuthority#sourceChanged(java.lang.String[])
-	 */
-	protected void sourceChanged(String[] sourceNames) {
-		startSourceChange(sourceNames);
-		try {
-			// evaluations to recompute
-			for (int i = 0; i < sourceNames.length; i++) {
-				Map cachesByExpression = (HashMap) cachesBySourceName
-						.get(sourceNames[i]);
-				if (cachesByExpression != null) {
-					Collection v = cachesByExpression.values();
-					Set[] expressionCaches = (Set[]) v
-							.toArray(new Set[v.size()]);
-					for (int j = 0; j < expressionCaches.length; j++) {
-						if (expressionCaches[j].size() > 0) {
-							EvaluationReference[] refs = (EvaluationReference[]) expressionCaches[j]
-									.toArray(new EvaluationReference[expressionCaches[j]
-											.size()]);
-							refsWithSameExpression(refs);
-						}
-					}
-				}
-			}
-		} finally {
-			endSourceChange(sourceNames);
-		}
-	}
-
-	/**
-	 * This will evaluate all refs with the same expression.
-	 * 
-	 * @param refs
-	 */
-	private void refsWithSameExpression(EvaluationReference[] refs) {
-		int k = 0;
-		while (k < refs.length && !refs[k].isPostingChanges()) {
-			k++;
-		}
-		if (k >= refs.length) {
-			return;
-		}
-		EvaluationReference ref = refs[k];
-		boolean oldValue = evaluate(ref);
-		ref.clearResult();
-		final boolean newValue = evaluate(ref);
-		if (oldValue != newValue) {
-			firePropertyChange(ref, valueOf(oldValue), valueOf(newValue));
-		}
-		for (k++; k < refs.length; k++) {
-			ref = refs[k];
-			// this is not as expensive as it looks
-			if (ref.isPostingChanges()) {
-				oldValue = evaluate(ref);
-				if (oldValue != newValue) {
-					ref.setResult(newValue);
-					firePropertyChange(ref, valueOf(oldValue),
-							valueOf(newValue));
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param sourceNames
-	 */
-	private void startSourceChange(final String[] sourceNames) {
-		if (Policy.DEBUG_SOURCES) {
-			Tracing.printTrace(COMPONENT, "start source changed: " //$NON-NLS-1$
-					+ Arrays.asList(sourceNames));
-		}
-		notifying++;
-		if (notifying == 1) {
-			fireServiceChange(IEvaluationService.PROP_NOTIFYING, Boolean.FALSE,
-					Boolean.TRUE);
-		}
-	}
-
-	/**
-	 * @param sourceNames
-	 */
-	private void endSourceChange(final String[] sourceNames) {
-		if (Policy.DEBUG_SOURCES) {
-			Tracing.printTrace(COMPONENT, "end source changed: " //$NON-NLS-1$
-					+ Arrays.asList(sourceNames));
-		}
-		if (notifying == 1) {
-			fireServiceChange(IEvaluationService.PROP_NOTIFYING, Boolean.TRUE,
-					Boolean.FALSE);
-		}
-		notifying--;
-	}
-
-	/**
-	 * @param ref
-	 */
-	public void removeEvaluationListener(IEvaluationReference ref) {
-		// Next we update the source priority bucket sort of activations.
-		String[] sourceNames = getNames(ref);
-		for (int i = 0; i < sourceNames.length; i++) {
-			Map cachesByExpression = (HashMap) cachesBySourceName
-					.get(sourceNames[i]);
-			if (cachesByExpression != null) {
-				Set caches = (Set) cachesByExpression.get(ref.getExpression());
-				if (caches != null) {
-					caches.remove(ref);
-					if (caches.isEmpty()) {
-						cachesByExpression.remove(ref.getExpression());
-					}
-				}
-				if (cachesByExpression.isEmpty()) {
-					cachesBySourceName.remove(sourceNames[i]);
-				}
-			}
-		}
-		boolean result = evaluate(ref);
-		firePropertyChange(ref, valueOf(result), null);
-	}
-
-	/**
-	 * @param ref
-	 * @param oldValue
-	 * @param newValue
-	 */
-	private void firePropertyChange(IEvaluationReference ref, Object oldValue,
-			Object newValue) {
-		ref.getListener().propertyChange(
-				new PropertyChangeEvent(ref, ref.getProperty(), oldValue,
-						newValue));
-	}
-
-	private void fireServiceChange(final String property,
-			final Object oldValue, final Object newValue) {
-		Object[] listeners = serviceListeners.getListeners();
-		for (int i = 0; i < listeners.length; i++) {
-			final IPropertyChangeListener listener = (IPropertyChangeListener) listeners[i];
-			SafeRunner.run(new ISafeRunnable() {
-				public void handleException(Throwable exception) {
-					WorkbenchPlugin.log(exception);
-				}
-
-				public void run() throws Exception {
-					listener.propertyChange(new PropertyChangeEvent(
-							EvaluationAuthority.this, property, oldValue,
-							newValue));
-				}
-			});
-		}
-	}
-
-	/**
-	 * @param listener
-	 */
-	public void addServiceListener(IPropertyChangeListener listener) {
-		serviceListeners.add(listener);
-	}
-
-	/**
-	 * @param listener
-	 */
-	public void removeServiceListener(IPropertyChangeListener listener) {
-		serviceListeners.remove(listener);
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the handlers (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 */
-	final void updateShellKludge() {
-		updateCurrentState();
-		sourceChanged(new String[] { ISources.ACTIVE_SHELL_NAME });
-	}
-
-	/**
-	 * Returns the currently active shell.
-	 * 
-	 * @return The currently active shell; may be <code>null</code>.
-	 */
-	final Shell getActiveShell() {
-		return (Shell) getVariable(ISources.ACTIVE_SHELL_NAME);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationReference.java
deleted file mode 100644
index 4f403ea..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationReference.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.ui.services.IEvaluationReference;
-
-/**
- * @since 3.3
- * 
- */
-public class EvaluationReference extends EvaluationResultCache implements
-		IEvaluationReference {
-
-	private IPropertyChangeListener listener;
-	private String property;
-	private boolean postingChanges = true;
-
-	/**
-	 * @param expression
-	 */
-	public EvaluationReference(Expression expression,
-			IPropertyChangeListener listener, String property) {
-		super(expression);
-		this.listener = listener;
-		this.property = property;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IEvaluationReference#getListener()
-	 */
-	public IPropertyChangeListener getListener() {
-		return listener;
-	}
-	
-	public String getProperty() {
-		return property;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.services.IEvaluationReference#setFlopping(boolean)
-	 */
-	public void setPostingChanges(boolean evaluationEnabled) {
-		this.postingChanges = evaluationEnabled;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.services.IEvaluationReference#isFlopping()
-	 */
-	public boolean isPostingChanges() {
-		return postingChanges;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCache.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCache.java
deleted file mode 100644
index 85048dd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCache.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.ISources;
-
-/**
- * <p>
- * A token representing the activation or contribution of some expression-based
- * element. This caches the evaluation result so that it is only re-computed as
- * necessary.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class EvaluationResultCache implements IEvaluationResultCache {
-
-	/**
-	 * The previous computed evaluation result. If no evaluation result is
-	 * available, then this value is <code>null</code>.
-	 */
-	private EvaluationResult evaluationResult = null;
-
-	/**
-	 * The expression to evaluate. This value may be <code>null</code>, in
-	 * which case the evaluation result is always <code>true</code>.
-	 */
-	private final Expression expression;
-
-	/**
-	 * The priority that has been given to this expression.
-	 */
-	private final int sourcePriority;
-
-	/**
-	 * Constructs a new instance of <code>EvaluationResultCache</code>.
-	 * 
-	 * @param expression
-	 *            The expression that must evaluate to <code>true</code>
-	 *            before this handler is active. This value may be
-	 *            <code>null</code> if it is always active.
-	 * @see ISources
-	 */
-	protected EvaluationResultCache(final Expression expression) {
-		this.expression = expression;
-		this.sourcePriority = SourcePriorityNameMapping
-				.computeSourcePriority(expression);
-	}
-
-	public final void clearResult() {
-		evaluationResult = null;
-	}
-
-	public final boolean evaluate(final IEvaluationContext context) {
-		if (expression == null) {
-			return true;
-		}
-
-		if (evaluationResult == null) {
-			try {
-				evaluationResult = expression.evaluate(context);
-			} catch (final CoreException e) {
-				/*
-				 * Swallow the exception. It simply means the variable is not
-				 * valid it some (most frequently, that the value is null). This
-				 * kind of information is not really useful to us, so we can
-				 * just treat it as null.
-				 */
-				evaluationResult = EvaluationResult.FALSE;
-				return false;
-			}
-		}
-
-		// return true if  the result is FALSE or NOT_LOADED
-		return evaluationResult != EvaluationResult.FALSE;
-	}
-
-	public final Expression getExpression() {
-		return expression;
-	}
-
-	public final int getSourcePriority() {
-		return sourcePriority;
-	}
-
-	public final void setResult(final boolean result) {
-		if (result) {
-			evaluationResult = EvaluationResult.TRUE;
-		} else {
-			evaluationResult = EvaluationResult.FALSE;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCacheComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCacheComparator.java
deleted file mode 100644
index d979a0c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationResultCacheComparator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.Comparator;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * Compares two evaluation result caches ({@link IEvaluationResultCache}). The
- * cache with the lowest source priority is considered "greater". In the event
- * of a tie, other characteristics are checked.
- * </p>
- * <p>
- * This class is only intended for use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- * 
- */
-public final class EvaluationResultCacheComparator implements Comparator {
-
-	public final int compare(final Object object1, final Object object2) {
-		if (Util.equals(object2, object1)) {
-			return 0;
-		}
-
-		final IEvaluationResultCache cache1 = (IEvaluationResultCache) object1;
-		final IEvaluationResultCache cache2 = (IEvaluationResultCache) object2;
-		int comparison;
-
-		/*
-		 * Note: all of the comparisons are flipped intentionally. This allows
-		 * those items with greater values to appear earlier when using an
-		 * iterator.
-		 */
-		// if objects went to the trouble to implement Comparable
-		// we should use it ... this algorithm can accept a natural ordering
-		// that's not compatible with equals.
-		if (object1 instanceof Comparable && object2 instanceof Comparable) {
-			comparison = Util.compare((Comparable) object2,
-					(Comparable) object1);
-			if (comparison != 0) {
-				return comparison;
-			}
-		}
-
-		return Util.compareIdentity(cache2, cache1);
-	}
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java
deleted file mode 100644
index aca8941..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * @since 3.3
- * 
- */
-public final class EvaluationService implements IEvaluationService {
-
-	private EvaluationAuthority evaluationAuthority;
-
-	public EvaluationService() {
-		evaluationAuthority = new EvaluationAuthority();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IEvaluationService#addEvaluationListener(org.eclipse.core.expressions.Expression,
-	 *      org.eclipse.jface.util.IPropertyChangeListener, java.lang.String)
-	 */
-	public IEvaluationReference addEvaluationListener(Expression expression,
-			IPropertyChangeListener listener, String property) {
-		IEvaluationReference expressionReference = new EvaluationReference(
-				expression, listener, property);
-
-		evaluationAuthority.addEvaluationListener(expressionReference);
-		return expressionReference;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IEvaluationService#addEvaluationReference(org.eclipse.ui.services.IEvaluationReference)
-	 */
-	public void addEvaluationReference(IEvaluationReference ref) {
-		Assert.isLegal(ref instanceof EvaluationReference, "Invalid type: " //$NON-NLS-1$
-				+ ref.getClass().getName());
-		evaluationAuthority.addEvaluationListener(ref);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IEvaluationService#removeEvaluationListener(org.eclipse.ui.internal.services.IEvaluationReference)
-	 */
-	public void removeEvaluationListener(IEvaluationReference ref) {
-		evaluationAuthority.removeEvaluationListener(ref);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IServiceWithSources#addSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public void addSourceProvider(ISourceProvider provider) {
-		evaluationAuthority.addSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IServiceWithSources#removeSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public void removeSourceProvider(ISourceProvider provider) {
-		evaluationAuthority.removeSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		evaluationAuthority.dispose();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IEvaluationService#getCurrentState()
-	 */
-	public IEvaluationContext getCurrentState() {
-		return evaluationAuthority.getCurrentState();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IEvaluationService#addServiceListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void addServiceListener(IPropertyChangeListener listener) {
-		evaluationAuthority.addServiceListener(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.IEvaluationService#removeServiceListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void removeServiceListener(IPropertyChangeListener listener) {
-		evaluationAuthority.removeServiceListener(listener);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.services.IEvaluationService#requestEvaluation(java.lang.String)
-	 */
-	public void requestEvaluation(String propertyName) {
-		evaluationAuthority.sourceChanged(new String[] { propertyName });
-	}
-
-	public void updateShellKludge() {
-		evaluationAuthority.updateShellKludge();
-	}
-
-	/**
-	 * <p>
-	 * Bug 95792. A mechanism by which the key binding architecture can force an
-	 * update of the handlers (based on the active shell) before trying to
-	 * execute a command. This mechanism is required for GTK+ only.
-	 * </p>
-	 * <p>
-	 * DO NOT CALL THIS METHOD.
-	 * </p>
-	 * 
-	 * @param shell
-	 *            The shell that should be considered active; must not be
-	 *            <code>null</code>.
-	 */
-	public final void updateShellKludge(final Shell shell) {
-		final Shell currentActiveShell = evaluationAuthority.getActiveShell();
-		if (currentActiveShell != shell) {
-			evaluationAuthority.sourceChanged(ISources.ACTIVE_SHELL,
-					ISources.ACTIVE_SHELL_NAME, shell);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationServiceFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationServiceFactory.java
deleted file mode 100644
index 5e79763..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationServiceFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IEvaluationService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.4
- * 
- */
-public class EvaluationServiceFactory extends AbstractServiceFactory {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.AbstractServiceFactory#create(java.lang.Class,
-	 *      org.eclipse.ui.services.IServiceLocator,
-	 *      org.eclipse.ui.services.IServiceLocator)
-	 */
-	public Object create(Class serviceInterface, IServiceLocator parentLocator,
-			IServiceLocator locator) {
-		if (!IEvaluationService.class.equals(serviceInterface)) {
-			return null;
-		}
-		Object parent = parentLocator.getService(serviceInterface);
-		if (parent == null) {
-			return null;
-		}
-		return new SlaveEvaluationService((IEvaluationService)parent);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ExpressionAuthority.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ExpressionAuthority.java
deleted file mode 100644
index c02a5b0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ExpressionAuthority.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.ISourceProviderListener;
-import org.eclipse.ui.ISources;
-
-/**
- * <p>
- * Provides common functionality for evaluating expressions and listening to
- * {@link ISourceProvider} (i.e., the common event framework for commands).
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- * @see ISourceProvider
- * @see ISources
- * @see Expression
- * @see IEvaluationContext
- */
-public abstract class ExpressionAuthority implements ISourceProviderListener {
-
-	/**
-	 * The evaluation context instance to use when evaluating expression. This
-	 * context is shared, and so all calls into <code>sourceChanged</code>
-	 * must happen on the event thread.
-	 */
-	private final IEvaluationContext context;
-
-	/**
-	 * The current state of this authority. This is a child of the
-	 * {@link #context} that has been given the selection as the default
-	 * variable. This value is cleared to <code>null</code> whenever the
-	 * selection changes.
-	 */
-	private IEvaluationContext currentState = null;
-
-	/**
-	 * The collection of source providers used by this authority. This
-	 * collection is consulted whenever a contribution is made. This collection
-	 * only contains instances of <code>ISourceProvider</code>.
-	 */
-	private final Collection providers = new ArrayList();
-
-	/**
-	 * Constructs a new instance of <code>ExpressionAuthority</code>.
-	 */
-	protected ExpressionAuthority() {
-		context = new EvaluationContext(null, this);
-		context.setAllowPluginActivation(true);
-		context.addVariable("org.eclipse.core.runtime.Platform", Platform.class); //$NON-NLS-1$
-		// this is not as useful as it appears
-		// context.addVariable("java.lang.System", System.class); //$NON-NLS-1$
-	}
-
-	/**
-	 * Adds a source provider to a list of providers to check when updating.
-	 * This also attaches this authority as a listener to the provider.
-	 * 
-	 * @param provider
-	 *            The provider to add; must not be <code>null</code>.
-	 */
-	public final void addSourceProvider(final ISourceProvider provider) {
-		provider.addSourceProviderListener(this);
-		providers.add(provider);
-
-		// Update the current state.
-		final Map currentState = provider.getCurrentState();
-		final Iterator variableItr = currentState.entrySet().iterator();
-		while (variableItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) variableItr.next();
-			final String variableName = (String) entry.getKey();
-			final Object variableValue = entry.getValue();
-
-			/*
-			 * Bug 84056. If we update the active workbench window, then we risk
-			 * falling back to that shell when the active shell has registered
-			 * as "none".
-			 */
-			if ((variableName != null)
-					&& (!ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME
-							.equals(variableName))) {
-				changeVariable(variableName, variableValue);
-			}
-		}
-	}
-
-	/**
-	 * Removes all of the source provider listeners. Subclasses may extend, but
-	 * must not override.
-	 */
-	public void dispose() {
-		final Iterator providerItr = providers.iterator();
-		while (providerItr.hasNext()) {
-			final ISourceProvider provider = (ISourceProvider) providerItr
-					.next();
-			provider.removeSourceProviderListener(this);
-		}
-
-		providers.clear();
-	}
-
-	/**
-	 * Returns whether at least one of the <code>IEvaluationResultCache</code>
-	 * instances in <code>collection</code> evaluates to <code>true</code>.
-	 * 
-	 * @param collection
-	 *            The evaluation result caches to check; must not be
-	 *            <code>null</code>, but may be empty.
-	 * @return <code>true</code> if there is at least one expression that
-	 *         evaluates to <code>true</code>; <code>false</code>
-	 *         otherwise.
-	 */
-	protected final boolean evaluate(final Collection collection) {
-		final Iterator iterator = collection.iterator();
-		while (iterator.hasNext()) {
-			final IEvaluationResultCache cache = (IEvaluationResultCache) iterator
-					.next();
-			if (evaluate(cache)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Returns whether the <code>IEvaluationResultCache</code> evaluates to
-	 * <code>true</code>.
-	 * 
-	 * @param expression
-	 *            The evaluation result cache to check; must not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if the expression evaluates to
-	 *         <code>true</code>; <code>false</code> otherwise.
-	 */
-	protected final boolean evaluate(final IEvaluationResultCache expression) {
-		final IEvaluationContext contextWithDefaultVariable = getCurrentState();
-		return expression.evaluate(contextWithDefaultVariable);
-	}
-
-	/**
-	 * Creates a new evaluation context based on the current evaluation context
-	 * (i.e., the current state), and places the current selection as the
-	 * default variable.
-	 * 
-	 * @return An evaluation context that can be used for evaluating
-	 *         expressions; never <code>null</code>.
-	 */
-	public final IEvaluationContext getCurrentState() {
-		if (currentState == null) {
-			final Object defaultVariable = context
-					.getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME);
-			final IEvaluationContext contextWithDefaultVariable;
-			if (defaultVariable instanceof IStructuredSelection) {
-				final IStructuredSelection selection = (IStructuredSelection) defaultVariable;
-				contextWithDefaultVariable = new EvaluationContext(context,
-						selection.toList());
-			} else if ((defaultVariable instanceof ISelection)
-					&& (!((ISelection) defaultVariable).isEmpty())) {
-				contextWithDefaultVariable = new EvaluationContext(context,
-						Collections.singleton(defaultVariable));
-			} else {
-				contextWithDefaultVariable = new EvaluationContext(context,
-						Collections.EMPTY_LIST);
-			}
-			currentState = contextWithDefaultVariable;
-		}
-
-		return currentState;
-	}
-
-	/**
-	 * Returns the variable of the given name.
-	 * 
-	 * @param name
-	 *            The name of the variable to get; must not be <code>null</code>.
-	 * @return The variable of the given name; <code>null</code> if none.
-	 */
-	protected final Object getVariable(final String name) {
-		return context.getVariable(name);
-	}
-
-	/**
-	 * Removes this source provider from the list, and detaches this authority
-	 * as a listener.
-	 * 
-	 * @param provider
-	 *            The provider to remove; must not be <code>null</code>.
-	 */
-	public final void removeSourceProvider(final ISourceProvider provider) {
-		provider.removeSourceProviderListener(this);
-		providers.remove(provider);
-
-		final Map currentState = provider.getCurrentState();
-		final Iterator variableItr = currentState.entrySet().iterator();
-		while (variableItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) variableItr.next();
-			final String variableName = (String) entry.getKey();
-			changeVariable(variableName, null);
-		}
-	}
-
-	/**
-	 * Changes the variable of the given name. If the <code>value</code> is
-	 * <code>null</code>, then the variable is removed.
-	 * 
-	 * @param name
-	 *            The name of the variable to change; must not be
-	 *            <code>null</code>.
-	 * @param value
-	 *            The new value; the variable should be removed if this is
-	 *            <code>null</code>.
-	 */
-	protected final void changeVariable(final String name, final Object value) {
-		if (value == null) {
-			context.removeVariable(name);
-		} else {
-			context.addVariable(name, value);
-		}
-	}
-
-	/**
-	 * Carries out the actual source change notification. It assumed that by the
-	 * time this method is called, <code>getEvaluationContext()</code> is
-	 * up-to-date with the current state of the application.
-	 * 
-	 * @param sourcePriority
-	 *            A bit mask of all the source priorities that have changed.
-	 */
-	protected abstract void sourceChanged(final int sourcePriority);
-
-	/**
-	 * Similar to sourceChanged(int) this notifies the subclass about the
-	 * change, but using the array of source names that changed instead of the
-	 * priority ... int based.
-	 * <p>
-	 * Clients may override this method.
-	 * </p>
-	 * 
-	 * @param sourceNames
-	 *            The array of names that changed.
-	 * @since 3.3
-	 */
-	protected void sourceChanged(final String[] sourceNames) {
-		// this is a no-op, since we're late in the game
-	}
-
-	public final void sourceChanged(final int sourcePriority,
-			final Map sourceValuesByName) {
-		// If the selection has changed, invalidate the current state.
-		if (sourceValuesByName
-				.containsKey(ISources.ACTIVE_CURRENT_SELECTION_NAME)) {
-			currentState = null;
-		}
-
-		final Iterator entryItr = sourceValuesByName.entrySet().iterator();
-		while (entryItr.hasNext()) {
-			final Map.Entry entry = (Map.Entry) entryItr.next();
-			final String sourceName = (String) entry.getKey();
-			final Object sourceValue = entry.getValue();
-			updateEvaluationContext(sourceName, sourceValue);
-		}
-		sourceChanged(sourcePriority, (String[]) sourceValuesByName.keySet()
-				.toArray(new String[0]));
-	}
-
-	public final void sourceChanged(final int sourcePriority,
-			final String sourceName, final Object sourceValue) {
-		// If the selection has changed, invalidate the current state.
-		if (ISources.ACTIVE_CURRENT_SELECTION_NAME.equals(sourceName)) {
-			currentState = null;
-		}
-
-		updateEvaluationContext(sourceName, sourceValue);
-		sourceChanged(sourcePriority, new String[] { sourceName });
-	}
-
-	/**
-	 * @param sourcePriority
-	 * @param strings
-	 */
-	private void sourceChanged(int sourcePriority, String[] sourceNames) {
-		sourceChanged(sourcePriority);
-		sourceChanged(sourceNames);
-	}
-
-	/**
-	 * Updates the evaluation context with the current state from all of the
-	 * source providers.
-	 */
-	protected final void updateCurrentState() {
-		final Iterator providerItr = providers.iterator();
-		while (providerItr.hasNext()) {
-			final ISourceProvider provider = (ISourceProvider) providerItr
-					.next();
-			final Map currentState = provider.getCurrentState();
-			final Iterator variableItr = currentState.entrySet().iterator();
-			while (variableItr.hasNext()) {
-				final Map.Entry entry = (Map.Entry) variableItr.next();
-				final String variableName = (String) entry.getKey();
-				final Object variableValue = entry.getValue();
-				/*
-				 * Bug 84056. If we update the active workbench window, then we
-				 * risk falling back to that shell when the active shell has
-				 * registered as "none".
-				 */
-				if ((variableName != null)
-						&& (!ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME
-								.equals(variableName))) {
-					changeVariable(variableName, variableValue);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Updates this authority's evaluation context.
-	 * 
-	 * @param name
-	 *            The name of the variable to update; must not be
-	 *            <code>null</code>.
-	 * @param value
-	 *            The new value of the variable. If this value is
-	 *            <code>null</code>, then the variable is removed.
-	 */
-	protected void updateEvaluationContext(final String name, final Object value) {
-		if (name != null) {
-			changeVariable(name, value);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IEvaluationResultCache.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IEvaluationResultCache.java
deleted file mode 100644
index c77bd15..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IEvaluationResultCache.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.ui.ISources;
-
-/**
- * <p>
- * A cache of the result of an expression. This also provides the source
- * priority for the expression.
- * </p>
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @since 3.2
- * @see org.eclipse.ui.ISources
- * @see org.eclipse.ui.ISourceProvider
- */
-public interface IEvaluationResultCache {
-
-	/**
-	 * Clears the cached computation of the <code>evaluate</code> method, if
-	 * any. This method is only intended for internal use. It provides a
-	 * mechanism by which <code>ISourceProvider</code> events can invalidate
-	 * state on a <code>IEvaluationResultCache</code> instance.
-	 */
-	public void clearResult();
-
-	/**
-	 * Returns the expression controlling the activation or visibility of this
-	 * item.
-	 * 
-	 * @return The expression associated with this item; may be
-	 *         <code>null</code>.
-	 */
-	public Expression getExpression();
-
-	/**
-	 * Returns the priority that has been given to this expression.
-	 * 
-	 * @return The priority.
-	 * @see ISources
-	 */
-	public int getSourcePriority();
-
-	/**
-	 * Evaluates the expression -- given the current state of the workbench.
-	 * This method should cache its computation. The cache will be cleared by a
-	 * call to <code>clearResult</code>.
-	 * 
-	 * @param context
-	 *            The context in which this state should be evaluated; must not
-	 *            be <code>null</code>.
-	 * @return <code>true</code> if the expression currently evaluates to
-	 *         <code>true</code>; <code>false</code> otherwise.
-	 */
-	public boolean evaluate(IEvaluationContext context);
-
-	/**
-	 * Forces the cached result to be a particular value. This will <b>not</b>
-	 * notify any users of the cache that it has changed.
-	 * 
-	 * @param result
-	 *            The cached result to use.
-	 * @since 3.3
-	 */
-	public void setResult(boolean result);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/INestable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/INestable.java
deleted file mode 100644
index 2c2d118..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/INestable.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-/**
- * </p>
- * A service which can appear on a component which is wholly contained with
- * another component. The component on which it appears can be active or
- * inactive -- depending on the state of the application. For example, a
- * workbench part is a component which appears within a workbench window. This
- * workbench part can either be active or inactive, depending on what the user
- * is doing.
- * </p>
- * <p>
- * Services implement this interface, and are then notified by the component
- * when the activation changes. It is the responsibility of the component to
- * notify such services when the activation changes.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.
- * </p>
- * <p>
- * This class should eventually move to <code>org.eclipse.ui.services</code>.
- * </p>
- * 
- * @since 3.2
- */
-public interface INestable {
-
-	/**
-	 * Notifies this service that the component within which it exists has
-	 * become active. The service should modify its state as appropriate.
-	 * 
-	 */
-	public void activate();
-
-	/**
-	 * Notifies this service that the component within which it exists has
-	 * become inactive. The service should modify its state as appropriate.
-	 */
-	public void deactivate();
-}
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IServiceLocatorCreator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IServiceLocatorCreator.java
deleted file mode 100644
index c719926..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IServiceLocatorCreator.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * When creating components this service can be used to create the appropriate
- * service locator for the new component. For use with the component framework.
- * <p>
- * <b>Note:</b> Must not be implemented or extended by clients.
- * <p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team.  This might disappear in 3.4 M5.
- * </p>
- * 
- * 
- * @since 3.4
- */
-public interface IServiceLocatorCreator {
-	/**
-	 * Creates a service locator that can be used for hosting a new service
-	 * context. It will have the appropriate child services created as needed,
-	 * and can be used with the Dependency Injection framework to reuse
-	 * components (by simply providing your own implementation for certain
-	 * services).
-	 * 
-	 * @param parent
-	 *            the parent locator
-	 * @param factory
-	 *            a factory that can lazily provide services if requested. This
-	 *            may be <code>null</code>
-	 * @param owner
-	 *            an object whose {@link IDisposable#dispose()} method will be
-	 *            called on the UI thread if the created service locator needs
-	 *            to be disposed (typically, because a plug-in contributing
-	 *            services to the service locator via an
-	 *            {@link AbstractServiceFactory} is no longer available). The
-	 *            owner can be any object that implements {@link IDisposable}.
-	 *            The recommended implementation of the owner's dispose method
-	 *            is to do whatever is necessary to stop using the created
-	 *            service locator, and then to call
-	 *            {@link IDisposable#dispose()} on the service locator.
-	 * @return the created service locator. The returned service locator will be
-	 *         an instance of {@link IDisposable}.
-	 */
-	public IServiceLocator createServiceLocator(IServiceLocator parent,
-			AbstractServiceFactory factory, IDisposable owner);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IWorkbenchLocationService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IWorkbenchLocationService.java
deleted file mode 100644
index dd01891..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/IWorkbenchLocationService.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.part.MultiPageEditorSite;
-import org.eclipse.ui.part.PageBookView;
-import org.eclipse.ui.services.IServiceScopes;
-
-/**
- * Query where you are in the workbench hierarchy.
- * 
- * @since 3.4
- */
-public interface IWorkbenchLocationService {
-	/**
-	 * Get the service scope.
-	 * 
-	 * @return the service scope. May return <code>null</code>.
-	 * @see IServiceScopes#PARTSITE_SCOPE
-	 */
-	public String getServiceScope();
-
-	/**
-	 * A more numeric representation of the service level.
-	 * 
-	 * @return the level - 0==workbench, 1==workbench window, etc
-	 */
-	public int getServiceLevel();
-
-	/**
-	 * @return the workbench. May return <code>null</code>.
-	 */
-	public IWorkbench getWorkbench();
-
-	/**
-	 * @return the workbench window in this service locator hierarchy. May
-	 * 	return <code>null</code>.
-	 */
-	public IWorkbenchWindow getWorkbenchWindow();
-
-	/**
-	 * @return the part site in this service locator hierarchy. May return
-	 * 	<code>null</code>.
-	 */
-	public IWorkbenchPartSite getPartSite();
-
-	/**
-	 * @return the inner editor site for a multi-page editor in this service
-	 * 	locator hierarchy. May return <code>null</code>.
-	 * @see MultiPageEditorSite
-	 */
-	public IEditorSite getMultiPageEditorSite();
-
-	/**
-	 * @return the inner page site for a page based view in this service locator
-	 * 	hierarchy. May return <code>null</code>.
-	 * @see PageBookView
-	 */
-	public IPageSite getPageSite();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/MenuSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/MenuSourceProvider.java
deleted file mode 100644
index 088f895..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/MenuSourceProvider.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.ISources;
-
-/**
- * <p>
- * A listener to changes in the showing menus. This is used to activate handlers
- * just for the span of a menu being shown. This is needed for full support for
- * legacy action-based extension points.
- * </p>
- * <p>
- * This class is only intended for internal use within
- * <code>org.eclipse.ui.workbench</code>.
- * </p>
- * 
- * @since 3.2
- */
-public final class MenuSourceProvider extends AbstractSourceProvider {
-
-	/**
-	 * The names of the sources supported by this source provider.
-	 */
-	private static final String[] PROVIDED_SOURCE_NAMES = new String[] {
-			ISources.ACTIVE_MENU_NAME, ISources.ACTIVE_MENU_SELECTION_NAME,
-			ISources.ACTIVE_MENU_EDITOR_INPUT_NAME };
-
-	/**
-	 * The menu ids that are currently showing, as known by this source
-	 * provider. This value may be <code>null</code>.
-	 */
-	private Set menuIds = new HashSet();
-
-	/**
-	 * Adds all of the given menu identifiers as being shown.
-	 * 
-	 * @param menuIds
-	 *            The ids of the menu that is now showing; must not be
-	 *            <code>null</code>.
-	 */
-	public final void addShowingMenus(final Set menuIds,
-			final ISelection localSelection, final ISelection localEditorInput) {
-		this.menuIds.addAll(menuIds);
-		if (DEBUG) {
-			logDebuggingInfo("Menu ids changed to " + this.menuIds); //$NON-NLS-1$
-		}
-		Map m = new HashMap();
-		m.put(ISources.ACTIVE_MENU_NAME, this.menuIds);
-		if (selection != localSelection) {
-			selection = localSelection;
-			m.put(ISources.ACTIVE_MENU_SELECTION_NAME,
-					selection == null ? IEvaluationContext.UNDEFINED_VARIABLE
-							: selection);
-		}
-		if (input != localEditorInput) {
-			input = localEditorInput;
-			m.put(ISources.ACTIVE_MENU_EDITOR_INPUT_NAME,
-					input == null ? IEvaluationContext.UNDEFINED_VARIABLE
-							: input);
-		}
-
-		fireSourceChanged(ISources.ACTIVE_MENU, m);
-	}
-
-	public final void dispose() {
-		menuIds.clear();
-		selection = null;
-		input = null;
-	}
-
-	public final Map getCurrentState() {
-		final Map state = new HashMap();
-		state.put(ISources.ACTIVE_MENU_NAME, menuIds);
-		state.put(ISources.ACTIVE_MENU_SELECTION_NAME,
-				selection == null ? IEvaluationContext.UNDEFINED_VARIABLE
-						: selection);
-		state.put(ISources.ACTIVE_MENU_EDITOR_INPUT_NAME,
-				input == null ? IEvaluationContext.UNDEFINED_VARIABLE : input);
-		return state;
-	}
-
-	public final String[] getProvidedSourceNames() {
-		return PROVIDED_SOURCE_NAMES;
-	}
-
-	/**
-	 * Removes all of the given menu identifiers as being shown.
-	 * 
-	 * @param menuIds
-	 *            The ids of the menu that is no longer shown; must not be
-	 *            <code>null</code>.
-	 */
-	public final void removeShowingMenus(final Set menuIds,
-			final ISelection localSelection, final ISelection localEditorInput) {
-		this.menuIds.removeAll(menuIds);
-		if (DEBUG) {
-			logDebuggingInfo("Menu ids changed to " + this.menuIds); //$NON-NLS-1$
-		}
-		Map m = new HashMap();
-		m.put(ISources.ACTIVE_MENU_NAME, this.menuIds);
-		if (selection != localSelection) {
-			selection = localSelection;
-			m.put(ISources.ACTIVE_MENU_SELECTION_NAME,
-					selection == null ? IEvaluationContext.UNDEFINED_VARIABLE
-							: selection);
-		}
-		if (input != localEditorInput) {
-			input = localEditorInput;
-			m.put(ISources.ACTIVE_MENU_EDITOR_INPUT_NAME,
-					input == null ? IEvaluationContext.UNDEFINED_VARIABLE
-							: input);
-		}
-		fireSourceChanged(ISources.ACTIVE_MENU, m);
-	}
-
-	private ISelection selection = null;
-	private ISelection input = null;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/PreferencePersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/PreferencePersistence.java
deleted file mode 100644
index 5a34c56..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/PreferencePersistence.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.Parameterization;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * A manager for items parsed from the preference store. This attaches a
- * listener to the registry after the first read, and monitors the preference
- * for changes from that point on. When {@link #dispose()} is called, the
- * listener is detached.
- * </p>
- * <p>
- * This class is only intended for internal use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class PreferencePersistence extends RegistryPersistence {
-
-	/**
-	 * Inserts the given element into the indexed two-dimensional array in the
-	 * array at the index. The array is grown as necessary.
-	 * 
-	 * @param elementToAdd
-	 *            The element to add to the indexed array; may be
-	 *            <code>null</code>
-	 * @param indexedArray
-	 *            The two-dimensional array that is indexed by element type;
-	 *            must not be <code>null</code>.
-	 * @param index
-	 *            The index at which the element should be added; must be a
-	 *            valid index.
-	 * @param currentCount
-	 *            The current number of items in the array at the index.
-	 */
-	protected static final void addElementToIndexedArray(
-			final IMemento elementToAdd, final IMemento[][] indexedArray,
-			final int index, final int currentCount) {
-		final IMemento[] elements;
-		if (currentCount == 0) {
-			elements = new IMemento[1];
-			indexedArray[index] = elements;
-		} else {
-			if (currentCount >= indexedArray[index].length) {
-				final IMemento[] copy = new IMemento[indexedArray[index].length * 2];
-				System.arraycopy(indexedArray[index], 0, copy, 0, currentCount);
-				elements = copy;
-				indexedArray[index] = elements;
-			} else {
-				elements = indexedArray[index];
-			}
-		}
-		elements[currentCount] = elementToAdd;
-	}
-
-	/**
-	 * Adds a warning to be logged at some later point in time.
-	 * 
-	 * @param warningsToLog
-	 *            The collection of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @param message
-	 *            The mesaage to log; must not be <code>null</code>.
-	 */
-	protected static final void addWarning(final List warningsToLog,
-			final String message) {
-		addWarning(warningsToLog, message, null, null, null);
-	}
-
-	/**
-	 * Adds a warning to be logged at some later point in time. This logs the
-	 * identifier of the item.
-	 * 
-	 * @param warningsToLog
-	 *            The collection of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @param message
-	 *            The mesaage to log; must not be <code>null</code>.
-	 * @param id
-	 *            The identifier of the item for which a warning is being
-	 *            logged; may be <code>null</code>.
-	 */
-	protected static final void addWarning(final List warningsToLog,
-			final String message, final String id) {
-		addWarning(warningsToLog, message, id, null, null);
-	}
-
-	/**
-	 * Adds a warning to be logged at some later point in time. This logs the
-	 * identifier of the item, as well as an extra attribute.
-	 * 
-	 * @param warningsToLog
-	 *            The collection of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @param message
-	 *            The mesaage to log; must not be <code>null</code>.
-	 * @param id
-	 *            The identifier of the item for which a warning is being
-	 *            logged; may be <code>null</code>.
-	 * @param extraAttributeName
-	 *            The name of extra attribute to be logged; may be
-	 *            <code>null</code>.
-	 * @param extraAttributeValue
-	 *            The value of the extra attribute to be logged; may be
-	 *            <code>null</code>.
-	 */
-	protected static final void addWarning(final List warningsToLog,
-			final String message, final String id,
-			final String extraAttributeName, final String extraAttributeValue) {
-		String statusMessage = message;
-		if (id != null) {
-			statusMessage = statusMessage + ": id='" + id + '\''; //$NON-NLS-1$
-		}
-		if (extraAttributeName != null) {
-			if (id != null) {
-				statusMessage = statusMessage + ',';
-			} else {
-				statusMessage = statusMessage + ':';
-			}
-			statusMessage = statusMessage + ' ' + extraAttributeName + "='" //$NON-NLS-1$
-					+ extraAttributeValue + '\'';
-		}
-
-		final IStatus status = new Status(IStatus.WARNING,
-				WorkbenchPlugin.PI_WORKBENCH, 0, statusMessage, null);
-		warningsToLog.add(status);
-	}
-
-	/**
-	 * Reads a boolean attribute from a memnto.
-	 * 
-	 * @param memento
-	 *            The memento from which to read the attribute; must not be
-	 *            <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @param defaultValue
-	 *            The default boolean value.
-	 * @return The attribute's value; may be <code>null</code> if none.
-	 */
-	protected static final boolean readBoolean(final IMemento memento,
-			final String attribute, final boolean defaultValue) {
-		final String value = memento.getString(attribute);
-		if (value == null) {
-			return defaultValue;
-		}
-
-		if (defaultValue) {
-			return !value.equalsIgnoreCase("false"); //$NON-NLS-1$
-		}
-
-		return !value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads an optional attribute from a memento. This converts zero-length
-	 * strings into <code>null</code>.
-	 * 
-	 * @param memento
-	 *            The memento from which to read the attribute; must not be
-	 *            <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @return The attribute's value; may be <code>null</code> if none.
-	 */
-	protected static final String readOptional(final IMemento memento,
-			final String attribute) {
-		String value = memento.getString(attribute);
-		if ((value != null) && (value.length() == 0)) {
-			value = null;
-		}
-
-		return value;
-	}
-
-	/**
-	 * Reads the parameterized command from a parent memento. This is used to
-	 * read the parameter sub-elements from a key element, as well as the
-	 * command id. Each parameter is guaranteed to be valid. If invalid
-	 * parameters are found, then a warning status will be appended to the
-	 * <code>warningsToLog</code> list. The command id is required, or a
-	 * warning will be logged.
-	 * 
-	 * @param memento
-	 *            The memento from which the parameters should be read; must not
-	 *            be <code>null</code>.
-	 * @param commandService
-	 *            The service providing commands for the workbench; must not be
-	 *            <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings found during parsing. Warnings found will
-	 *            parsing the parameters will be appended to this list. This
-	 *            value must not be <code>null</code>.
-	 * @param message
-	 *            The message to print if the command identifier is not present;
-	 *            must not be <code>null</code>.
-	 * @return The array of parameters found for this configuration element;
-	 *         <code>null</code> if none can be found.
-	 */
-	protected static final ParameterizedCommand readParameterizedCommand(
-			final IMemento memento, final ICommandService commandService,
-			final List warningsToLog, final String message, final String id) {
-		final String commandId = readRequired(memento, ATT_COMMAND_ID,
-				warningsToLog, message, id);
-		if (commandId == null) {
-			return null;
-		}
-
-		final Command command = commandService.getCommand(commandId);
-		final ParameterizedCommand parameterizedCommand = readParameters(
-				memento, warningsToLog, command);
-
-		return parameterizedCommand;
-	}
-
-	/**
-	 * Reads the parameters from a parent memento. This is used to read the
-	 * parameter sub-elements from a key element. Each parameter is guaranteed
-	 * to be valid. If invalid parameters are found, then a warning status will
-	 * be appended to the <code>warningsToLog</code> list.
-	 * 
-	 * @param memento
-	 *            The memento from which the parameters should be read; must not
-	 *            be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings found during parsing. Warnings found will
-	 *            parsing the parameters will be appended to this list. This
-	 *            value must not be <code>null</code>.
-	 * @param command
-	 *            The command around which the parameterization should be
-	 *            created; must not be <code>null</code>.
-	 * @return The array of parameters found for this memento; <code>null</code>
-	 *         if none can be found.
-	 */
-	protected static final ParameterizedCommand readParameters(
-			final IMemento memento, final List warningsToLog,
-			final Command command) {
-		final IMemento[] parameterMementos = memento
-				.getChildren(TAG_PARAMETER);
-		if ((parameterMementos == null) || (parameterMementos.length == 0)) {
-			return new ParameterizedCommand(command, null);
-		}
-
-		final Collection parameters = new ArrayList();
-		for (int i = 0; i < parameterMementos.length; i++) {
-			final IMemento parameterMemento = parameterMementos[i];
-
-			// Read out the id.
-			final String id = parameterMemento.getString(ATT_ID);
-			if ((id == null) || (id.length() == 0)) {
-				// The name should never be null. This is invalid.
-				addWarning(warningsToLog, "Parameters need a name"); //$NON-NLS-1$
-				continue;
-			}
-
-			// Find the parameter on the command.
-			IParameter parameter = null;
-			try {
-				final IParameter[] commandParameters = command.getParameters();
-				if (parameters != null) {
-					for (int j = 0; j < commandParameters.length; j++) {
-						final IParameter currentParameter = commandParameters[j];
-						if (Util.equals(currentParameter.getId(), id)) {
-							parameter = currentParameter;
-							break;
-						}
-					}
-
-				}
-			} catch (final NotDefinedException e) {
-				// This should not happen.
-			}
-			if (parameter == null) {
-				// The name should never be null. This is invalid.
-				addWarning(warningsToLog,
-						"Could not find a matching parameter", id); //$NON-NLS-1$
-				continue;
-			}
-
-			// Read out the value.
-			final String value = parameterMemento.getString(ATT_VALUE);
-			if ((value == null) || (value.length() == 0)) {
-				// The name should never be null. This is invalid.
-				addWarning(warningsToLog, "Parameters need a value", id); //$NON-NLS-1$
-				continue;
-			}
-
-			parameters.add(new Parameterization(parameter, value));
-		}
-
-		if (parameters.isEmpty()) {
-			return new ParameterizedCommand(command, null);
-		}
-
-		return new ParameterizedCommand(command,
-				(Parameterization[]) parameters
-						.toArray(new Parameterization[parameters.size()]));
-	}
-
-	/**
-	 * Reads a required attribute from the memento.
-	 * 
-	 * @param memento
-	 *            The memento from which to read; must not be <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings; must not be <code>null</code>.
-	 * @param message
-	 *            The warning message to use if the attribute is missing; must
-	 *            not be <code>null</code>.
-	 * @return The required attribute; may be <code>null</code> if missing.
-	 */
-	protected static final String readRequired(final IMemento memento,
-			final String attribute, final List warningsToLog,
-			final String message) {
-		return readRequired(memento, attribute, warningsToLog, message, null);
-	}
-
-	/**
-	 * Reads a required attribute from the memento. This logs the identifier of
-	 * the item if this required element cannot be found.
-	 * 
-	 * @param memento
-	 *            The memento from which to read; must not be <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings; must not be <code>null</code>.
-	 * @param message
-	 *            The warning message to use if the attribute is missing; must
-	 *            not be <code>null</code>.
-	 * @param id
-	 *            The identifier of the element for which this is a required
-	 *            attribute; may be <code>null</code>.
-	 * @return The required attribute; may be <code>null</code> if missing.
-	 */
-	protected static final String readRequired(final IMemento memento,
-			final String attribute, final List warningsToLog,
-			final String message, final String id) {
-		final String value = memento.getString(attribute);
-		if ((value == null) || (value.length() == 0)) {
-			addWarning(warningsToLog, message, id);
-			return null;
-		}
-
-		return value;
-	}
-
-	/**
-	 * Whether the preference and registry change listeners have been attached
-	 * yet.
-	 */
-	protected boolean preferenceListenerAttached = false;
-
-	/**
-	 * The registry change listener for this class.
-	 */
-	private final IPropertyChangeListener preferenceChangeListener;
-
-	/**
-	 * Detaches the preference change listener from the registry.
-	 */
-	public final void dispose() {
-		super.dispose();
-
-		final IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		store.removePropertyChangeListener(preferenceChangeListener);
-	}
-
-	/**
-	 * Checks whether the preference change could affect this persistence class.
-	 * 
-	 * @param event
-	 *            The event indicating the preference change; must not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if the persistence instance is affected by
-	 *         this change; <code>false</code> otherwise.
-	 */
-	protected abstract boolean isChangeImportant(final PropertyChangeEvent event);
-
-	/**
-	 * Reads the various elements from the registry. Subclasses should extend,
-	 * but must not override.
-	 */
-	protected void read() {
-		super.read();
-
-		if (!preferenceListenerAttached) {
-			final IPreferenceStore store = WorkbenchPlugin.getDefault()
-					.getPreferenceStore();
-			store.addPropertyChangeListener(preferenceChangeListener);
-		}
-	}
-
-	/**
-	 * Constructs a new instance of {@link PreferencePersistence}. A preference
-	 * change listener is created.
-	 */
-	protected PreferencePersistence() {
-		super();
-
-		preferenceChangeListener = new IPropertyChangeListener() {
-			public final void propertyChange(final PropertyChangeEvent event) {
-				if (isChangeImportant(event)) {
-					read();
-				}
-			}
-		};
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/RegistryPersistence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/RegistryPersistence.java
deleted file mode 100644
index 9e8df9d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/RegistryPersistence.java
+++ /dev/null
@@ -1,638 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.Parameterization;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.expressions.ElementHandler;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * <p>
- * A manager for items parsed from the registry. This attaches a listener to the
- * registry after the first read, and monitors the registry for changes from
- * that point on. When {@link #dispose()} is called, the listener is detached.
- * </p>
- * <p>
- * This class is only intended for internal use within the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public abstract class RegistryPersistence implements IDisposable,
-		IWorkbenchRegistryConstants {
-
-	/**
-	 * The expression to return when there is an error. Never <code>null</code>.
-	 */
-	protected static final Expression ERROR_EXPRESSION = new Expression() {
-		public final EvaluationResult evaluate(final IEvaluationContext context) {
-			return null;
-		}
-	};
-
-	/**
-	 * Inserts the given element into the indexed two-dimensional array in the
-	 * array at the index. The array is grown as necessary.
-	 * 
-	 * @param elementToAdd
-	 *            The element to add to the indexed array; may be
-	 *            <code>null</code>
-	 * @param indexedArray
-	 *            The two-dimensional array that is indexed by element type;
-	 *            must not be <code>null</code>.
-	 * @param index
-	 *            The index at which the element should be added; must be a
-	 *            valid index.
-	 * @param currentCount
-	 *            The current number of items in the array at the index.
-	 */
-	protected static final void addElementToIndexedArray(
-			final IConfigurationElement elementToAdd,
-			final IConfigurationElement[][] indexedArray, final int index,
-			final int currentCount) {
-		final IConfigurationElement[] elements;
-		if (currentCount == 0) {
-			elements = new IConfigurationElement[1];
-			indexedArray[index] = elements;
-		} else {
-			if (currentCount >= indexedArray[index].length) {
-				final IConfigurationElement[] copy = new IConfigurationElement[indexedArray[index].length * 2];
-				System.arraycopy(indexedArray[index], 0, copy, 0, currentCount);
-				elements = copy;
-				indexedArray[index] = elements;
-			} else {
-				elements = indexedArray[index];
-			}
-		}
-		elements[currentCount] = elementToAdd;
-	}
-
-	/**
-	 * Adds a warning to be logged at some later point in time.
-	 * 
-	 * @param warningsToLog
-	 *            The collection of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @param message
-	 *            The mesaage to log; must not be <code>null</code>.
-	 * @param element
-	 *            The element from which the warning originates; may be
-	 *            <code>null</code>.
-	 */
-	protected static final void addWarning(final List warningsToLog,
-			final String message, final IConfigurationElement element) {
-		addWarning(warningsToLog, message, element, null, null, null);
-	}
-
-	/**
-	 * Adds a warning to be logged at some later point in time. This logs the
-	 * identifier of the item.
-	 * 
-	 * @param warningsToLog
-	 *            The collection of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @param message
-	 *            The mesaage to log; must not be <code>null</code>.
-	 * @param element
-	 *            The element from which the warning originates; may be
-	 *            <code>null</code>.
-	 * @param id
-	 *            The identifier of the item for which a warning is being
-	 *            logged; may be <code>null</code>.
-	 */
-	protected static final void addWarning(final List warningsToLog,
-			final String message, final IConfigurationElement element,
-			final String id) {
-		addWarning(warningsToLog, message, element, id, null, null);
-	}
-
-	/**
-	 * Adds a warning to be logged at some later point in time. This logs the
-	 * identifier of the item, as well as an extra attribute.
-	 * 
-	 * @param warningsToLog
-	 *            The collection of warnings to be logged; must not be
-	 *            <code>null</code>.
-	 * @param message
-	 *            The mesaage to log; must not be <code>null</code>.
-	 * @param element
-	 *            The element from which the warning originates; may be
-	 *            <code>null</code>.
-	 * @param id
-	 *            The identifier of the item for which a warning is being
-	 *            logged; may be <code>null</code>.
-	 * @param extraAttributeName
-	 *            The name of extra attribute to be logged; may be
-	 *            <code>null</code>.
-	 * @param extraAttributeValue
-	 *            The value of the extra attribute to be logged; may be
-	 *            <code>null</code>.
-	 */
-	protected static final void addWarning(final List warningsToLog,
-			final String message, final IConfigurationElement element,
-			final String id, final String extraAttributeName,
-			final String extraAttributeValue) {
-		String statusMessage = message;
-		if (element != null) {
-			statusMessage = statusMessage
-					+ ": plug-in='" + element.getNamespace() + '\''; //$NON-NLS-1$
-		}
-		if (id != null) {
-			if (element != null) {
-				statusMessage = statusMessage + ',';
-			} else {
-				statusMessage = statusMessage + ':';
-			}
-			statusMessage = statusMessage + " id='" + id + '\''; //$NON-NLS-1$
-		}
-		if (extraAttributeName != null) {
-			if ((element != null) || (id != null)) {
-				statusMessage = statusMessage + ',';
-			} else {
-				statusMessage = statusMessage + ':';
-			}
-			statusMessage = statusMessage + ' ' + extraAttributeName + "='" //$NON-NLS-1$
-					+ extraAttributeValue + '\'';
-		}
-
-		final IStatus status = new Status(IStatus.WARNING,
-				WorkbenchPlugin.PI_WORKBENCH, 0, statusMessage, null);
-		warningsToLog.add(status);
-	}
-
-	/**
-	 * Checks that the class attribute or element exists for this element. This
-	 * is used for executable extensions that are being read in.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element which should contain a class
-	 *            attribute or a class child element; must not be
-	 *            <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings to be logged; never <code>null</code>.
-	 * @param message
-	 *            The message to log if something goes wrong; may be
-	 *            <code>null</code>.
-	 * @param id
-	 *            The identifier of the handle object; may be <code>null</code>.
-	 * @return <code>true</code> if the class attribute or element exists;
-	 *         <code>false</code> otherwise.
-	 */
-	protected static final boolean checkClass(
-			final IConfigurationElement configurationElement,
-			final List warningsToLog, final String message, final String id) {
-		// Check to see if we have a handler class.
-		if ((configurationElement.getAttribute(ATT_CLASS) == null)
-				&& (configurationElement.getChildren(TAG_CLASS).length == 0)) {
-			addWarning(warningsToLog, message, configurationElement, id);
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * Checks to see whether the configuration element represents a pulldown
-	 * action. This involves reading the <code>style</code> and
-	 * <code>pulldown</code> attributes.
-	 * 
-	 * @param element
-	 *            The element to check; must not be <code>null</code>.
-	 * @return <code>true</code> if the element is a pulldown action;
-	 *         <code>false</code> otherwise.
-	 */
-	protected static final boolean isPulldown(
-			final IConfigurationElement element) {
-		final String style = readOptional(element, ATT_STYLE);
-		final boolean pulldown = readBoolean(element, ATT_PULLDOWN, false);
-		return (pulldown || STYLE_PULLDOWN.equals(style));
-	}
-
-	/**
-	 * Logs any warnings in <code>warningsToLog</code>.
-	 * 
-	 * @param warningsToLog
-	 *            The warnings to log; may be <code>null</code>.
-	 * @param message
-	 *            The message to include in the log entry; must not be
-	 *            <code>null</code>.
-	 */
-	protected static final void logWarnings(final List warningsToLog,
-			final String message) {
-		// If there were any warnings, then log them now.
-		if ((warningsToLog != null) && (!warningsToLog.isEmpty())) {
-			final IStatus status = new MultiStatus(
-					WorkbenchPlugin.PI_WORKBENCH, 0, (IStatus[]) warningsToLog
-							.toArray(new IStatus[warningsToLog.size()]),
-					message, null);
-			WorkbenchPlugin.log(status);
-		}
-	}
-
-	/**
-	 * Reads a boolean attribute from an element.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which to read the attribute;
-	 *            must not be <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @param defaultValue
-	 *            The default boolean value.
-	 * @return The attribute's value; may be <code>null</code> if none.
-	 */
-	protected static final boolean readBoolean(
-			final IConfigurationElement configurationElement,
-			final String attribute, final boolean defaultValue) {
-		final String value = configurationElement.getAttribute(attribute);
-		if (value == null) {
-			return defaultValue;
-		}
-
-		if (defaultValue) {
-			return !value.equalsIgnoreCase("false"); //$NON-NLS-1$
-		}
-
-		return value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Reads an optional attribute from an element. This converts zero-length
-	 * strings into <code>null</code>.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which to read the attribute;
-	 *            must not be <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @return The attribute's value; may be <code>null</code> if none.
-	 */
-	protected static final String readOptional(
-			final IConfigurationElement configurationElement,
-			final String attribute) {
-		String value = configurationElement.getAttribute(attribute);
-		if ((value != null) && (value.length() == 0)) {
-			value = null;
-		}
-
-		return value;
-	}
-
-	/**
-	 * Reads the parameterized command from a parent configuration element. This
-	 * is used to read the parameter sub-elements from a key element, as well as
-	 * the command id. Each parameter is guaranteed to be valid. If invalid
-	 * parameters are found, then a warning status will be appended to the
-	 * <code>warningsToLog</code> list. The command id is required, or a
-	 * warning will be logged.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the parameters should be
-	 *            read; must not be <code>null</code>.
-	 * @param commandService
-	 *            The service providing commands for the workbench; must not be
-	 *            <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings found during parsing. Warnings found will
-	 *            parsing the parameters will be appended to this list. This
-	 *            value must not be <code>null</code>.
-	 * @param message
-	 *            The message to print if the command identifier is not present;
-	 *            must not be <code>null</code>.
-	 * @return The array of parameters found for this configuration element;
-	 *         <code>null</code> if none can be found.
-	 */
-	protected static final ParameterizedCommand readParameterizedCommand(
-			final IConfigurationElement configurationElement,
-			final ICommandService commandService, final List warningsToLog,
-			final String message, final String id) {
-		final String commandId = readRequired(configurationElement,
-				ATT_COMMAND_ID, warningsToLog, message, id);
-		if (commandId == null) {
-			return null;
-		}
-
-		final Command command = commandService.getCommand(commandId);
-		final ParameterizedCommand parameterizedCommand = readParameters(
-				configurationElement, warningsToLog, command);
-
-		return parameterizedCommand;
-	}
-
-	/**
-	 * Reads the parameters from a parent configuration element. This is used to
-	 * read the parameter sub-elements from a key element. Each parameter is
-	 * guaranteed to be valid. If invalid parameters are found, then a warning
-	 * status will be appended to the <code>warningsToLog</code> list.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which the parameters should be
-	 *            read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings found during parsing. Warnings found will
-	 *            parsing the parameters will be appended to this list. This
-	 *            value must not be <code>null</code>.
-	 * @param command
-	 *            The command around which the parameterization should be
-	 *            created; must not be <code>null</code>.
-	 * @return The array of parameters found for this configuration element;
-	 *         <code>null</code> if none can be found.
-	 */
-	protected static final ParameterizedCommand readParameters(
-			final IConfigurationElement configurationElement,
-			final List warningsToLog, final Command command) {
-		final IConfigurationElement[] parameterElements = configurationElement
-				.getChildren(TAG_PARAMETER);
-		if ((parameterElements == null) || (parameterElements.length == 0)) {
-			return new ParameterizedCommand(command, null);
-		}
-
-		final Collection parameters = new ArrayList();
-		for (int i = 0; i < parameterElements.length; i++) {
-			final IConfigurationElement parameterElement = parameterElements[i];
-
-			// Read out the id.
-			final String id = parameterElement.getAttribute(ATT_ID);
-			if ((id == null) || (id.length() == 0)) {
-				// The name should never be null. This is invalid.
-				addWarning(warningsToLog, "Parameters need a name", //$NON-NLS-1$
-						configurationElement);
-				continue;
-			}
-
-			// Find the parameter on the command.
-			IParameter parameter = null;
-			try {
-				final IParameter[] commandParameters = command.getParameters();
-				if (parameters != null) {
-					for (int j = 0; j < commandParameters.length; j++) {
-						final IParameter currentParameter = commandParameters[j];
-						if (Util.equals(currentParameter.getId(), id)) {
-							parameter = currentParameter;
-							break;
-						}
-					}
-
-				}
-			} catch (final NotDefinedException e) {
-				// This should not happen.
-			}
-			if (parameter == null) {
-				// The name should never be null. This is invalid.
-				addWarning(warningsToLog,
-						"Could not find a matching parameter", //$NON-NLS-1$
-						configurationElement, id);
-				continue;
-			}
-
-			// Read out the value.
-			final String value = parameterElement.getAttribute(ATT_VALUE);
-			if ((value == null) || (value.length() == 0)) {
-				// The name should never be null. This is invalid.
-				addWarning(warningsToLog, "Parameters need a value", //$NON-NLS-1$
-						configurationElement, id);
-				continue;
-			}
-
-			parameters.add(new Parameterization(parameter, value));
-		}
-
-		if (parameters.isEmpty()) {
-			return new ParameterizedCommand(command, null);
-		}
-
-		return new ParameterizedCommand(command,
-				(Parameterization[]) parameters
-						.toArray(new Parameterization[parameters.size()]));
-	}
-
-	/**
-	 * Reads a required attribute from the configuration element.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which to read; must not be
-	 *            <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings; must not be <code>null</code>.
-	 * @param message
-	 *            The warning message to use if the attribute is missing; must
-	 *            not be <code>null</code>.
-	 * @return The required attribute; may be <code>null</code> if missing.
-	 */
-	protected static final String readRequired(
-			final IConfigurationElement configurationElement,
-			final String attribute, final List warningsToLog,
-			final String message) {
-		return readRequired(configurationElement, attribute, warningsToLog,
-				message, null);
-	}
-
-	/**
-	 * Reads a required attribute from the configuration element. This logs the
-	 * identifier of the item if this required element cannot be found.
-	 * 
-	 * @param configurationElement
-	 *            The configuration element from which to read; must not be
-	 *            <code>null</code>.
-	 * @param attribute
-	 *            The attribute to read; must not be <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings; must not be <code>null</code>.
-	 * @param message
-	 *            The warning message to use if the attribute is missing; must
-	 *            not be <code>null</code>.
-	 * @param id
-	 *            The identifier of the element for which this is a required
-	 *            attribute; may be <code>null</code>.
-	 * @return The required attribute; may be <code>null</code> if missing.
-	 */
-	protected static final String readRequired(
-			final IConfigurationElement configurationElement,
-			final String attribute, final List warningsToLog,
-			final String message, final String id) {
-		final String value = configurationElement.getAttribute(attribute);
-		if ((value == null) || (value.length() == 0)) {
-			addWarning(warningsToLog, message, configurationElement, id);
-			return null;
-		}
-
-		return value;
-	}
-
-	/**
-	 * Reads a <code>when</code> child element from the given configuration
-	 * element. Warnings will be appended to <code>warningsToLog</code>.
-	 * 
-	 * @param parentElement
-	 *            The configuration element which might have a <code>when</code>
-	 *            element as a child; never <code>null</code>.
-	 * @param whenElementName
-	 *            The name of the when element to find; never <code>null</code>.
-	 * @param id
-	 *            The identifier of the menu element whose <code>when</code>
-	 *            expression is being read; never <code>null</code>.
-	 * @param warningsToLog
-	 *            The list of warnings while parsing the extension point; never
-	 *            <code>null</code>.
-	 * @return The <code>when</code> expression for the
-	 *         <code>configurationElement</code>, if any; otherwise,
-	 *         <code>null</code>.
-	 */
-	protected static final Expression readWhenElement(
-			final IConfigurationElement parentElement,
-			final String whenElementName, final String id,
-			final List warningsToLog) {
-		// Check to see if we have an when expression.
-		final IConfigurationElement[] whenElements = parentElement
-				.getChildren(whenElementName);
-		Expression whenExpression = null;
-		if (whenElements.length > 0) {
-			// Check if we have too many when elements.
-			if (whenElements.length > 1) {
-				// There should only be one when element
-				addWarning(warningsToLog,
-						"There should only be one when element", parentElement, //$NON-NLS-1$
-						id, "whenElementName", //$NON-NLS-1$
-						whenElementName);
-				return ERROR_EXPRESSION;
-			}
-
-			final IConfigurationElement whenElement = whenElements[0];
-			final IConfigurationElement[] expressionElements = whenElement
-					.getChildren();
-			if (expressionElements.length > 0) {
-				// Check if we have too many expression elements
-				if (expressionElements.length > 1) {
-					// There should only be one expression element
-					addWarning(
-							warningsToLog,
-							"There should only be one expression element", parentElement, //$NON-NLS-1$
-							id, "whenElementName", //$NON-NLS-1$
-							whenElementName);
-					return ERROR_EXPRESSION;
-				}
-
-				// Convert the activeWhen element into an expression.
-				final ElementHandler elementHandler = ElementHandler
-						.getDefault();
-				final ExpressionConverter converter = ExpressionConverter
-						.getDefault();
-				final IConfigurationElement expressionElement = expressionElements[0];
-				try {
-					whenExpression = elementHandler.create(converter,
-							expressionElement);
-				} catch (final CoreException e) {
-					// There when expression could not be created.
-					addWarning(
-							warningsToLog,
-							"Problem creating when element", //$NON-NLS-1$
-							parentElement, id,
-							"whenElementName", whenElementName); //$NON-NLS-1$
-					return ERROR_EXPRESSION;
-				}
-			}
-		}
-
-		return whenExpression;
-	}
-
-	/**
-	 * The registry change listener for this class.
-	 */
-	private final IRegistryChangeListener registryChangeListener;
-
-	/**
-	 * Whether the preference and registry change listeners have been attached
-	 * yet.
-	 */
-	protected boolean registryListenerAttached = false;
-
-	/**
-	 * Constructs a new instance of {@link RegistryPersistence}. A registry
-	 * change listener is created.
-	 */
-	protected RegistryPersistence() {
-		registryChangeListener = new IRegistryChangeListener() {
-			public final void registryChanged(final IRegistryChangeEvent event) {
-				if (isChangeImportant(event)) {
-					Display.getDefault().asyncExec(new Runnable() {
-						public final void run() {
-							read();
-						}
-					});
-				}
-			}
-		};
-	}
-
-	/**
-	 * Detaches the registry change listener from the registry.
-	 */
-	public void dispose() {
-		final IExtensionRegistry registry = Platform.getExtensionRegistry();
-		registry.removeRegistryChangeListener(registryChangeListener);
-		registryListenerAttached = false;
-	}
-
-	/**
-	 * Checks whether the registry change could affect this persistence class.
-	 * 
-	 * @param event
-	 *            The event indicating the registry change; must not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if the persistence instance is affected by
-	 *         this change; <code>false</code> otherwise.
-	 */
-	protected abstract boolean isChangeImportant(
-			final IRegistryChangeEvent event);
-
-	/**
-	 * Reads the various elements from the registry. Subclasses should extend,
-	 * but must not override.
-	 */
-	protected void read() {
-		if (!registryListenerAttached) {
-			final IExtensionRegistry registry = Platform.getExtensionRegistry();
-			registry.addRegistryChangeListener(registryChangeListener);
-			registryListenerAttached = true;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocator.java
deleted file mode 100644
index b267545..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocator.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * @since 3.2
- * 
- */
-public final class ServiceLocator implements IDisposable, INestable,
-		IServiceLocator {
-	boolean activated = false;
-
-	private static class ParentLocator implements IServiceLocator {
-		private IServiceLocator locator;
-		private Class key;
-
-		public ParentLocator(IServiceLocator parent, Class serviceInterface) {
-			locator = parent;
-			key = serviceInterface;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.services.IServiceLocator#getService(java.lang.Class)
-		 */
-		public Object getService(Class api) {
-			if (key.equals(api)) {
-				return locator.getService(key);
-			}
-			return null;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.ui.services.IServiceLocator#hasService(java.lang.Class)
-		 */
-		public boolean hasService(Class api) {
-			if (key.equals(api)) {
-				return true;
-			}
-			return false;
-		}
-	}
-
-	private AbstractServiceFactory factory;
-
-	/**
-	 * The parent for this service locator. If a service can't be found in this
-	 * locator, then the parent is asked. This value may be <code>null</code>
-	 * if there is no parent.
-	 */
-	private IServiceLocator parent;
-
-	/**
-	 * The map of servicesThis value is <code>null</code> until a service is
-	 * registered.
-	 */
-	private Map services = null;
-
-	private boolean disposed;
-	
-	private final IDisposable owner;
-	
-	/**
-	 * Constructs a service locator with no parent.
-	 */
-	public ServiceLocator() {
-		this(null, null, null);
-	}
-
-	/**
-	 * Constructs a service locator with the given parent.
-	 * 
-	 * @param parent
-	 *            The parent for this service locator; this value may be
-	 *            <code>null</code>.
-	 * @param factory
-	 *            a local factory that can provide services at this level
-	 * @param owner 
-	 */
-	public ServiceLocator(final IServiceLocator parent,
-			AbstractServiceFactory factory, IDisposable owner) {
-		this.parent = parent;
-		this.factory = factory;
-		this.owner = owner;
-	}
-
-	public final void activate() {
-		activated = true;
-		if (services != null) {
-			final Iterator serviceItr = services.values().iterator();
-			while (serviceItr.hasNext()) {
-				final Object service = serviceItr.next();
-				if (service instanceof INestable) {
-					final INestable nestableService = (INestable) service;
-					nestableService.activate();
-				}
-			}
-		}
-	}
-
-	public final void deactivate() {
-		activated = false;
-		if (services != null) {
-			final Iterator serviceItr = services.values().iterator();
-			while (serviceItr.hasNext()) {
-				final Object service = serviceItr.next();
-				if (service instanceof INestable) {
-					final INestable nestableService = (INestable) service;
-					nestableService.deactivate();
-				}
-			}
-		}
-	}
-
-	public final void dispose() {
-		if (services != null) {
-			final Iterator serviceItr = services.values().iterator();
-			while (serviceItr.hasNext()) {
-				final Object object = serviceItr.next();
-				if (object instanceof IDisposable) {
-					final IDisposable service = (IDisposable) object;
-					service.dispose();
-				}
-			}
-			services = null;
-		}
-		parent = null;
-		disposed = true;
-	}
-
-	public final Object getService(final Class key) {
-		if (disposed) {
-			return null;
-		}
-		Object service;
-		if (services != null) {
-			service = services.get(key);
-		} else {
-			service = null;
-		}
-		if (service == null) {
-			// if we don't have a service in our cache then:
-			// 1. check our local factory
-			// 2. go to the registry
-			// or 3. use the parent service
-			IServiceLocator factoryParent = WorkbenchServiceRegistry.GLOBAL_PARENT;
-			if (parent != null) {
-				factoryParent = new ParentLocator(parent, key);
-			}
-			if (factory != null) {
-				service = factory.create(key, factoryParent, this);
-			}
-			if (service == null) {
-				service = WorkbenchServiceRegistry.getRegistry().getService(
-						key, factoryParent, this);
-			}
-			if (service == null) {
-				service = factoryParent.getService(key);
-			} else {
-				registerService(key, service);
-			}
-		}
-		return service;
-	}
-
-	public final boolean hasService(final Class key) {
-		if (disposed) {
-			return false;
-		}
-		if (services != null) {
-			if (services.containsKey(key)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Registers a service with this locator. If there is an existing service
-	 * matching the same <code>api</code> and it implements
-	 * {@link IDisposable}, it will be disposed.
-	 * 
-	 * @param api
-	 *            This is the interface that the service implements. Must not be
-	 *            <code>null</code>.
-	 * @param service
-	 *            The service to register. This must be some implementation of
-	 *            <code>api</code>. This value must not be <code>null</code>.
-	 */
-	public final void registerService(final Class api, final Object service) {
-		if (api == null) {
-			throw new NullPointerException("The service key cannot be null"); //$NON-NLS-1$
-		}
-
-		if (!api.isInstance(service)) {
-			throw new IllegalArgumentException(
-					"The service does not implement the given interface"); //$NON-NLS-1$
-		}
-
-		if (services == null) {
-			services = new HashMap();
-		}
-
-		if (services.containsKey(api)) {
-			final Object currentService = services.remove(api);
-			if (currentService instanceof IDisposable) {
-				final IDisposable disposable = (IDisposable) currentService;
-				disposable.dispose();
-			}
-		}
-
-		if (service == null) {
-			if (services.isEmpty()) {
-				services = null;
-			}
-		} else {
-			services.put(api, service);
-			if (service instanceof INestable && activated) {
-				((INestable)service).activate();
-			}
-		}
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean isDisposed() {
-		return disposed;
-	}
-
-	/**
-	 * Some services that were contributed to this locator are no longer available
-	 * (because the plug-in containing the AbstractServiceFactory is no longer
-	 * available). Notify the owner of the locator about this.
-	 */
-	public void unregisterServices(String[] serviceNames) {
-		if (owner != null) {
-			owner.dispose();
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocatorCreator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocatorCreator.java
deleted file mode 100644
index 6904384..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/ServiceLocatorCreator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * A simple service locator creator.
- * 
- * @since 3.4
- */
-public class ServiceLocatorCreator implements IServiceLocatorCreator {
-
-	public IServiceLocator createServiceLocator(IServiceLocator parent,
-			AbstractServiceFactory factory, IDisposable owner) {
-		return new ServiceLocator(parent, factory, owner);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SlaveEvaluationService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SlaveEvaluationService.java
deleted file mode 100644
index 6c56a0f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SlaveEvaluationService.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.services.IEvaluationReference;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * @since 3.4
- * 
- */
-public class SlaveEvaluationService implements IEvaluationService {
-
-	private IEvaluationService parentService;
-
-	private Collection sourceProviders = new ArrayList();
-
-	private Collection serviceListeners = new ArrayList();
-
-	private Collection evaluationReferences = new ArrayList();
-
-	/**
-	 * @param parent
-	 */
-	public SlaveEvaluationService(IEvaluationService parent) {
-		parentService = parent;
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IEvaluationService#addEvaluationListener(org.eclipse.core.expressions.Expression,
-	 *      org.eclipse.jface.util.IPropertyChangeListener, java.lang.String)
-	 */
-	public IEvaluationReference addEvaluationListener(Expression expression,
-			IPropertyChangeListener listener, String property) {
-		IEvaluationReference ref = parentService.addEvaluationListener(
-				expression, listener, property);
-		if (!evaluationReferences.contains(ref)) {
-			evaluationReferences.add(ref);
-		}
-		return ref;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.services.IEvaluationService#addEvaluationReference(org.eclipse.ui.services.IEvaluationReference)
-	 */
-	public void addEvaluationReference(IEvaluationReference ref) {
-		if (!evaluationReferences.contains(ref)) {
-			evaluationReferences.add(ref);
-		}
-		parentService.addEvaluationReference(ref);
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IEvaluationService#addServiceListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void addServiceListener(IPropertyChangeListener listener) {
-		if (!serviceListeners.contains(listener)) {
-			serviceListeners.add(listener);
-		}
-		parentService.addServiceListener(listener);
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IServiceWithSources#addSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public void addSourceProvider(ISourceProvider provider) {
-		if (!sourceProviders.contains(provider)) {
-			sourceProviders.add(provider);
-		}
-		parentService.addSourceProvider(provider);
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IEvaluationService#getCurrentState()
-	 */
-	public IEvaluationContext getCurrentState() {
-		return parentService.getCurrentState();
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IEvaluationService#removeEvaluationListener(org.eclipse.ui.services.IEvaluationReference)
-	 */
-	public void removeEvaluationListener(IEvaluationReference ref) {
-		evaluationReferences.remove(ref);
-		parentService.removeEvaluationListener(ref);
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IEvaluationService#removeServiceListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void removeServiceListener(IPropertyChangeListener listener) {
-		serviceListeners.remove(listener);
-		parentService.removeServiceListener(listener);
-	}
-
-	/**
-	 * @see org.eclipse.ui.services.IServiceWithSources#removeSourceProvider(org.eclipse.ui.ISourceProvider)
-	 */
-	public void removeSourceProvider(ISourceProvider provider) {
-		sourceProviders.remove(provider);
-		parentService.removeSourceProvider(provider);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		if (!evaluationReferences.isEmpty()) {
-			Object[] array = evaluationReferences.toArray();
-			for (int i = 0; i < array.length; i++) {
-				parentService
-						.removeEvaluationListener((IEvaluationReference) array[i]);
-			}
-		}
-		if (!serviceListeners.isEmpty()) {
-			Object[] array = serviceListeners.toArray();
-			for (int i = 0; i < array.length; i++) {
-				parentService
-						.removeServiceListener((IPropertyChangeListener) array[i]);
-			}
-			serviceListeners.clear();
-		}
-		// Remove any "resource", like listeners, that were associated
-		// with this service.
-		if (!sourceProviders.isEmpty()) {
-			Object[] array = sourceProviders.toArray();
-			for (int i = 0; i < array.length; i++) {
-				parentService.removeSourceProvider((ISourceProvider) array[i]);
-			}
-			sourceProviders.clear();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.services.IEvaluationService#requestEvaluation(java.lang.String)
-	 */
-	public void requestEvaluation(String propertyName) {
-		parentService.requestEvaluation(propertyName);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
deleted file mode 100644
index 501849f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourcePriorityNameMapping.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.ui.ISources;
-
-/**
- * <p>
- * A static class linking the names of variables in an IEvaluationContext to the
- * priority they should be given when doing conflict resolution.
- * </p>
- * <p>
- * In the future, it will possible to define a new variable (i.e., piece of
- * application state) that you want to use inside of the
- * <code>org.eclipse.ui.contexts</code>, <code>org.eclipse.ui.handlers</code>
- * or <code>org.eclipse.ui.menus</code> extension points. As it stands right
- * now, it is not possible to run code soon enough for the
- * <code>IHandlerService</code>, <code>IMenuService</code> or
- * <code>IContextService</code> to become aware of the new variables. This
- * will likely be fixed with a new extension point.
- * </p>
- * <p>
- * TODO Move to "org.eclipse.ui" and resolve the above issue.
- * </p>
- * 
- * @since 3.2
- * @see org.eclipse.ui.ISources
- * @see org.eclipse.ui.contexts.IContextService
- * @see org.eclipse.ui.handlers.IHandlerService
- * @see org.eclipse.ui.menus.IMenuService
- */
-public final class SourcePriorityNameMapping implements ISources {
-
-	/**
-	 * The variable name to use when boosting priority on an activation.
-	 */
-	public static final String LEGACY_LEGACY_NAME = "LEGACY"; //$NON-NLS-1$
-
-	/**
-	 * The value returned if there is source priority for the given name
-	 * 
-	 * @see SourcePriorityNameMapping#getMapping(String)
-	 */
-	public static final int NO_SOURCE_PRIORITY = 0;
-
-	/**
-	 * The map of source priorities indexed by name. This value is never
-	 * <code>null</code>.
-	 */
-	private static final Map sourcePrioritiesByName = new HashMap();
-
-	static {
-		addMapping(ACTIVE_ACTION_SETS_NAME, ACTIVE_ACTION_SETS);
-		addMapping(ACTIVE_CONTEXT_NAME, ACTIVE_CONTEXT);
-		addMapping(ACTIVE_CURRENT_SELECTION_NAME, ACTIVE_CURRENT_SELECTION);
-		addMapping(ACTIVE_EDITOR_NAME, ACTIVE_EDITOR);
-		addMapping(ACTIVE_EDITOR_ID_NAME, ACTIVE_EDITOR_ID);
-		addMapping(ACTIVE_MENU_NAME, ACTIVE_MENU);
-		addMapping(ACTIVE_MENU_SELECTION_NAME, ACTIVE_MENU);
-		addMapping(ACTIVE_MENU_EDITOR_INPUT_NAME, ACTIVE_MENU);
-		addMapping(ACTIVE_FOCUS_CONTROL_ID_NAME, ACTIVE_MENU);
-		addMapping(ACTIVE_FOCUS_CONTROL_NAME, ACTIVE_MENU);
-		addMapping(ACTIVE_PART_NAME, ACTIVE_PART);
-		addMapping(ACTIVE_PART_ID_NAME, ACTIVE_PART_ID);
-		addMapping(ACTIVE_SHELL_NAME, ACTIVE_SHELL);
-		addMapping(ACTIVE_SITE_NAME, ACTIVE_SITE);
-		addMapping(ACTIVE_WORKBENCH_WINDOW_NAME, ACTIVE_WORKBENCH_WINDOW);
-		addMapping(ACTIVE_WORKBENCH_WINDOW_SHELL_NAME,
-				ACTIVE_WORKBENCH_WINDOW_SHELL);
-		addMapping(ACTIVE_WORKBENCH_WINDOW_IS_COOLBAR_VISIBLE_NAME,
-				ACTIVE_WORKBENCH_WINDOW_SUBORDINATE);
-		addMapping(ACTIVE_WORKBENCH_WINDOW_ACTIVE_PERSPECTIVE_NAME,
-				ACTIVE_WORKBENCH_WINDOW_SUBORDINATE);
-		addMapping(ACTIVE_WORKBENCH_WINDOW_IS_PERSPECTIVEBAR_VISIBLE_NAME,
-				ACTIVE_WORKBENCH_WINDOW_SUBORDINATE);
-		addMapping(LEGACY_LEGACY_NAME, LEGACY_LEGACY);
-		addMapping("workbench", WORKBENCH); //$NON-NLS-1$
-	}
-
-	/**
-	 * Adds a mapping between a source name and a source priority. This method
-	 * also cleans up any existing mappings using the same name or priority.
-	 * There is a one-to-one relationship between name and priority.
-	 * 
-	 * @param sourceName
-	 *            The name of the variable as it would appear in an XML
-	 *            expression; must not be <code>null</code>.
-	 * @param sourcePriority
-	 *            The priority of the source with respect to other sources. A
-	 *            higher value means that expressions including this priority
-	 *            will win ties more often. It is recommended that this value is
-	 *            simply a single bit shifted to a particular place.
-	 * @see ISources
-	 */
-	public static final void addMapping(final String sourceName,
-			final int sourcePriority) {
-		if (sourceName == null) {
-			throw new NullPointerException("The source name cannot be null."); //$NON-NLS-1$
-		}
-
-		if (!sourcePrioritiesByName.containsKey(sourceName)) {
-			final Integer priority = new Integer(sourcePriority);
-
-			sourcePrioritiesByName.put(sourceName, priority);
-		}
-	}
-
-	/**
-	 * Computes the source priority for the given expression. The source
-	 * priority is a bit mask of all of the variables references by the
-	 * expression. The default variable is considered to be
-	 * {@link ISources#ACTIVE_CURRENT_SELECTION}. The source priority is used
-	 * to minimize recomputations of the expression, and it can also be used for
-	 * conflict resolution.
-	 * 
-	 * @param expression
-	 *            The expression for which the source priority should be
-	 *            computed; may be <code>null</code>.
-	 * @return The bit mask of all the sources required for this expression;
-	 *         <code>0</code> if none.
-	 */
-	public static final int computeSourcePriority(final Expression expression) {
-		int sourcePriority = ISources.WORKBENCH;
-
-		if (expression == null) {
-			return sourcePriority;
-		}
-
-		final ExpressionInfo info = expression.computeExpressionInfo();
-
-		// Add the default variable, if any.
-		if (info.hasDefaultVariableAccess()) {
-			sourcePriority |= ISources.ACTIVE_CURRENT_SELECTION;
-		}
-
-		// Add all of the reference variables.
-		final String[] sourceNames = info.getAccessedVariableNames();
-		for (int i = 0; i < sourceNames.length; i++) {
-			final String sourceName = sourceNames[i];
-			sourcePriority |= getMapping(sourceName);
-		}
-
-		return sourcePriority;
-	}
-
-	/**
-	 * Gets the priority for the source with the given name.
-	 * 
-	 * @param sourceName
-	 *            The name of the variable as it would appear in an XML
-	 *            expression; should not be <code>null</code>.
-	 * @return The source priority that matches, if any;
-	 *         <code>NO_SOURCE_PRIORITY</code> if none is found.
-	 */
-	public static final int getMapping(final String sourceName) {
-		final Object object = sourcePrioritiesByName.get(sourceName);
-		if (object instanceof Integer) {
-			return ((Integer) object).intValue();
-		}
-
-		return NO_SOURCE_PRIORITY;
-	}
-
-	/**
-	 * This class should not be instantiated.
-	 */
-	private SourcePriorityNameMapping() {
-		// This class should not be instantiated.
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourceProviderService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourceProviderService.java
deleted file mode 100644
index 8816c08..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/SourceProviderService.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.ISourceProvider;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.services.ISourceProviderService;
-
-/**
- * <p>
- * A service holding all of the registered source providers.
- * </p>
- * <p>
- * This class is not intended for use outside of the
- * <code>org.eclipse.ui.workbench</code> plug-in.
- * </p>
- * 
- * @since 3.2
- */
-public final class SourceProviderService implements ISourceProviderService,
-		IDisposable {
-
-	/**
-	 * The source providers registered with this service. This value is never
-	 * <code>null</code>. This is a map of the source name ({@link String})
-	 * to the source provider ({@link ISourceProvider}).
-	 */
-	private final Map sourceProvidersByName = new HashMap();
-
-	/**
-	 * All of the source providers registered with this service. This value is
-	 * never <code>null</code>.
-	 */
-	private final Set sourceProviders = new HashSet();
-
-	private IServiceLocator locator;
-	
-	public SourceProviderService(final IServiceLocator locator) {
-		this.locator = locator;
-	}
-
-	public final void dispose() {
-		final Iterator sourceProviderItr = sourceProviders.iterator();
-		while (sourceProviderItr.hasNext()) {
-			final ISourceProvider sourceProvider = (ISourceProvider) sourceProviderItr
-					.next();
-			sourceProvider.dispose();
-		}
-		sourceProviders.clear();
-		sourceProvidersByName.clear();
-	}
-
-	public final ISourceProvider getSourceProvider(final String sourceName) {
-		return (ISourceProvider) sourceProvidersByName.get(sourceName);
-	}
-
-	public final ISourceProvider[] getSourceProviders() {
-		return (ISourceProvider[]) sourceProviders
-				.toArray(new ISourceProvider[sourceProviders.size()]);
-	}
-
-	public final void registerProvider(final ISourceProvider sourceProvider) {
-		if (sourceProvider == null) {
-			throw new NullPointerException("The source provider cannot be null"); //$NON-NLS-1$
-		}
-
-		final String[] sourceNames = sourceProvider.getProvidedSourceNames();
-		for (int i = 0; i < sourceNames.length; i++) {
-			final String sourceName = sourceNames[i];
-			sourceProvidersByName.put(sourceName, sourceProvider);
-		}
-		sourceProviders.add(sourceProvider);
-	}
-
-	public final void unregisterProvider(ISourceProvider sourceProvider) {
-		if (sourceProvider == null) {
-			throw new NullPointerException("The source provider cannot be null"); //$NON-NLS-1$
-		}
-
-		final String[] sourceNames = sourceProvider.getProvidedSourceNames();
-		for (int i = 0; i < sourceNames.length; i++) {
-			sourceProvidersByName.remove(sourceNames[i]);
-		}
-		sourceProviders.remove(sourceProvider);
-	}
-		
-	public final void readRegistry() {
-		AbstractSourceProvider[] sp = WorkbenchServiceRegistry.getRegistry().getSourceProviders();
-		for (int i = 0; i < sp.length; i++) {
-			sp[i].initialize(locator);
-			registerProvider(sp[i]);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchLocationService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchLocationService.java
deleted file mode 100644
index 8984bbc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchLocationService.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * @since 3.4
- * 
- */
-public class WorkbenchLocationService implements IWorkbenchLocationService,
-		IDisposable {
-
-	private IEditorSite mpepSite;
-	private IPageSite pageSite;
-	private IWorkbenchPartSite partSite;
-	private String serviceScope;
-	private IWorkbench workbench;
-	private IWorkbenchWindow window;
-	private int level;
-
-	public WorkbenchLocationService(String serviceScope, IWorkbench workbench,
-			IWorkbenchWindow window, IWorkbenchPartSite partSite,
-			IEditorSite mpepSite, IPageSite pageSite, int level) {
-		this.mpepSite = mpepSite;
-		this.pageSite = pageSite;
-		this.partSite = partSite;
-		this.serviceScope = serviceScope;
-		this.window = window;
-		this.workbench = workbench;
-		this.level = level;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seeorg.eclipse.ui.internal.services.IWorkbenchLocationService#
-	 * getMultiPageEditorSite()
-	 */
-	public IEditorSite getMultiPageEditorSite() {
-		return mpepSite;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.services.IWorkbenchLocationService#getPageSite()
-	 */
-	public IPageSite getPageSite() {
-		return pageSite;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.services.IWorkbenchLocationService#getPartSite()
-	 */
-	public IWorkbenchPartSite getPartSite() {
-		return partSite;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.services.IWorkbenchLocationService#getServiceScope
-	 * ()
-	 */
-	public String getServiceScope() {
-		return serviceScope;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.services.IWorkbenchLocationService#getWorkbench()
-	 */
-	public IWorkbench getWorkbench() {
-		return workbench;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.internal.services.IWorkbenchLocationService#getWorkbenchWindow
-	 * ()
-	 */
-	public IWorkbenchWindow getWorkbenchWindow() {
-		return window;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.services.IDisposable#dispose()
-	 */
-	public void dispose() {
-		mpepSite = null;
-		pageSite = null;
-		partSite = null;
-		serviceScope = null;
-		workbench = null;
-		window = null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.services.IWorkbenchLocationService#getServiceLevel()
-	 */
-	public int getServiceLevel() {
-		return level;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java
deleted file mode 100644
index a3e6621..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/WorkbenchServiceRegistry.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.services;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.WeakHashMap;
-
-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.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.AbstractSourceProvider;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.services.AbstractServiceFactory;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * This class will create a service from the matching factory. If the factory
- * doesn't exist, it will try and load it from the registry.
- * 
- * @since 3.4
- */
-public class WorkbenchServiceRegistry implements IExtensionChangeHandler {
-	/**
-	 * 
-	 */
-	private static final String WORKBENCH_LEVEL = "workbench"; //$NON-NLS-1$
-
-	private static final String EXT_ID_SERVICES = "org.eclipse.ui.services"; //$NON-NLS-1$
-
-	private static WorkbenchServiceRegistry registry = null;
-
-	public static WorkbenchServiceRegistry getRegistry() {
-		if (registry == null) {
-			registry = new WorkbenchServiceRegistry();
-		}
-		return registry;
-	}
-	
-	private WorkbenchServiceRegistry() {
-		PlatformUI.getWorkbench().getExtensionTracker().registerHandler(
-				this,
-				ExtensionTracker
-						.createExtensionPointFilter(getExtensionPoint()));
-	}
-
-	/**
-	 * Used as the global service locator's parent.
-	 */
-	public static final IServiceLocator GLOBAL_PARENT = new IServiceLocator() {
-		public Object getService(Class api) {
-			return null;
-		}
-
-		public boolean hasService(Class api) {
-			return false;
-		}
-	};
-
-	private Map factories = new HashMap();
-	
-	static class ServiceFactoryHandle {
-		AbstractServiceFactory factory;
-		WeakHashMap serviceLocators = new WeakHashMap();
-		String[] serviceNames;
-		ServiceFactoryHandle(AbstractServiceFactory factory) {
-			this.factory = factory;
-		}
-	}
-
-	public Object getService(Class key, IServiceLocator parentLocator,
-			ServiceLocator locator) {
-		ServiceFactoryHandle handle = (ServiceFactoryHandle) factories.get(key.getName());
-		if (handle == null) {
-			handle = loadFromRegistry(key);
-		}
-		if (handle != null) {
-			Object result = handle.factory.create(key, parentLocator, locator);
-			if (result != null) {
-				handle.serviceLocators.put(locator, new Object());
-				return result;
-			}
-		}
-		return null;
-	}
-
-	private ServiceFactoryHandle loadFromRegistry(Class key) {
-		ServiceFactoryHandle result = null;
-		IConfigurationElement[] serviceFactories = getExtensionPoint()
-				.getConfigurationElements();
-		try {
-			final String requestedName = key.getName();
-			boolean done = false;
-			for (int i = 0; i < serviceFactories.length && !done; i++) {
-				final IConfigurationElement[] serviceNameElements = serviceFactories[i]
-						.getChildren(IWorkbenchRegistryConstants.TAG_SERVICE);
-				for (int j = 0; j < serviceNameElements.length && !done; j++) {
-					String serviceName = serviceNameElements[j]
-							.getAttribute(IWorkbenchRegistryConstants.ATTR_SERVICE_CLASS);
-					if (requestedName.equals(serviceName)) {
-						done = true;
-					}
-				}
-				if (done) {
-					final AbstractServiceFactory f = (AbstractServiceFactory) serviceFactories[i]
-							.createExecutableExtension(IWorkbenchRegistryConstants.ATTR_FACTORY_CLASS);
-					ServiceFactoryHandle handle = new ServiceFactoryHandle(f);
-			    	PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-			    			serviceFactories[i].getDeclaringExtension(),
-							handle, IExtensionTracker.REF_WEAK);
-
-			    	List serviceNames = new ArrayList();
-					for (int j = 0; j < serviceNameElements.length; j++) {
-						String serviceName = serviceNameElements[j].getAttribute(IWorkbenchRegistryConstants.ATTR_SERVICE_CLASS);
-						if (factories.containsKey(serviceName)) {
-							WorkbenchPlugin.log("Factory already exists for " //$NON-NLS-1$
-									+ serviceName);
-						} else {
-							factories.put(serviceName, handle);
-							serviceNames.add(serviceName);
-						}
-					}
-					handle.serviceNames = (String[]) serviceNames.toArray(new String[serviceNames
-							.size()]);
-					result = handle;
-				}
-			}
-		} catch (CoreException e) {
-			StatusManager.getManager().handle(e.getStatus());
-		}
-		return result;
-	}
-
-	private IExtensionPoint getExtensionPoint() {
-		IExtensionRegistry reg = Platform.getExtensionRegistry();
-		IExtensionPoint ep = reg.getExtensionPoint(EXT_ID_SERVICES);
-		return ep;
-	}
-
-	public AbstractSourceProvider[] getSourceProviders() {
-		ArrayList providers = new ArrayList();
-		IExtensionPoint ep = getExtensionPoint();
-		IConfigurationElement[] elements = ep.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			if (elements[i].getName().equals(
-					IWorkbenchRegistryConstants.TAG_SOURCE_PROVIDER)) {
-				try {
-					providers
-							.add(elements[i]
-									.createExecutableExtension(IWorkbenchRegistryConstants.ATTR_PROVIDER));
-					processVariables(elements[i]
-							.getChildren(IWorkbenchRegistryConstants.TAG_VARIABLE));
-				} catch (CoreException e) {
-					StatusManager.getManager().handle(e.getStatus());
-				}
-			}
-		}
-		return (AbstractSourceProvider[]) providers
-				.toArray(new AbstractSourceProvider[providers.size()]);
-	}
-
-	private static final String[] supportedLevels = { ISources.ACTIVE_CONTEXT_NAME,
-			ISources.ACTIVE_SHELL_NAME, 
-			ISources.ACTIVE_WORKBENCH_WINDOW_NAME, 
-			ISources.ACTIVE_EDITOR_ID_NAME,
-			ISources.ACTIVE_PART_ID_NAME, 
-			ISources.ACTIVE_SITE_NAME
-	};
-
-	private void processVariables(IConfigurationElement[] children) {
-		for (int i = 0; i < children.length; i++) {
-			String name = children[i]
-					.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-			if (name == null || name.length() == 0) {
-				continue;
-			}
-			String level = children[i]
-					.getAttribute(IWorkbenchRegistryConstants.ATT_PRIORITY_LEVEL);
-			if (level == null || level.length() == 0) {
-				level = WORKBENCH_LEVEL;
-			} else {
-				boolean found = false;
-				for (int j = 0; j < supportedLevels.length && !found; j++) {
-					if (supportedLevels[j].equals(level)) {
-						found = true;
-					}
-				}
-				if (!found) {
-					level = WORKBENCH_LEVEL;
-				}
-			}
-			int existingPriority = SourcePriorityNameMapping.getMapping(level);
-			int newPriority = existingPriority << 1;
-			SourcePriorityNameMapping.addMapping(name, newPriority);
-		}
-	}
-
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		// we don't need to react to adds because we are not caching the extensions we find -
-		// next time a service is requested, we will look at all extensions again in
-		// loadFromRegistry
-	}
-
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			Object object = objects[i];
-			if (object instanceof ServiceFactoryHandle) {
-				ServiceFactoryHandle handle = (ServiceFactoryHandle) object;
-				Set locatorSet = handle.serviceLocators.keySet();
-				ServiceLocator[] locators = (ServiceLocator[]) locatorSet.toArray(new ServiceLocator[locatorSet.size()]);
-				Arrays.sort(locators, new Comparator(){
-					public int compare(Object o1, Object o2) {
-						ServiceLocator loc1 = (ServiceLocator) o1;
-						ServiceLocator loc2 = (ServiceLocator) o2;
-						int l1 = ((IWorkbenchLocationService) loc1
-								.getService(IWorkbenchLocationService.class))
-								.getServiceLevel();						
-						int l2 = ((IWorkbenchLocationService) loc2
-								.getService(IWorkbenchLocationService.class))
-								.getServiceLevel();						
-						return l1 < l2 ? -1 : (l1 > l2 ? 1 : 0);
-					}
-				});
-				for (int j = 0; j < locators.length; j++) {
-					ServiceLocator serviceLocator = locators[j];
-					if (!serviceLocator.isDisposed()) {
-						serviceLocator.unregisterServices(handle.serviceNames);
-					}
-				}
-				handle.factory = null;
-				for (int j = 0; j < handle.serviceNames.length; j++) {
-					String serviceName = handle.serviceNames[j];
-					if (factories.get(serviceName) == handle) {
-						factories.remove(serviceName);
-					}
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/EclipseSplashHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/EclipseSplashHandler.java
deleted file mode 100644
index 0511b25..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/EclipseSplashHandler.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.splash;
-
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.branding.IProductConstants;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.splash.BasicSplashHandler;
-
-/**
- * Parses the well known product constants and constructs a splash handler
- * accordingly.
- */
-public class EclipseSplashHandler extends BasicSplashHandler {
-
-	public void init(Shell splash) {
-		super.init(splash);
-		String progressRectString = null;
-		String messageRectString = null;
-		String foregroundColorString = null;
-		IProduct product = Platform.getProduct();
-		if (product != null) {
-			progressRectString = product
-					.getProperty(IProductConstants.STARTUP_PROGRESS_RECT);
-			messageRectString = product
-					.getProperty(IProductConstants.STARTUP_MESSAGE_RECT);
-			foregroundColorString = product
-					.getProperty(IProductConstants.STARTUP_FOREGROUND_COLOR);
-		}
-		Rectangle progressRect = StringConverter.asRectangle(
-				progressRectString, new Rectangle(10, 10, 300, 15));
-		setProgressRect(progressRect);
-
-		Rectangle messageRect = StringConverter.asRectangle(messageRectString,
-				new Rectangle(10, 35, 300, 15));
-		setMessageRect(messageRect);
-
-		int foregroundColorInteger;
-		try {
-			foregroundColorInteger = Integer
-					.parseInt(foregroundColorString, 16);
-		} catch (Exception ex) {
-			foregroundColorInteger = 0xD2D7FF; // off white
-		}
-
-		setForeground(new RGB((foregroundColorInteger & 0xFF0000) >> 16,
-				(foregroundColorInteger & 0xFF00) >> 8,
-				foregroundColorInteger & 0xFF));
-		// the following code will be removed for release time
-		if (PrefUtil.getInternalPreferenceStore().getBoolean(
-				"SHOW_BUILDID_ON_STARTUP")) { //$NON-NLS-1$
-			final String buildId = System.getProperty(
-					"eclipse.buildId", "Unknown Build"); //$NON-NLS-1$ //$NON-NLS-2$
-			// find the specified location.  Not currently API
-			// hardcoded to be sensible with our current Europa Graphic
-			String buildIdLocString = product.getProperty("buildIdLocation"); //$NON-NLS-1$
-			final Point buildIdPoint = StringConverter.asPoint(buildIdLocString,
-					new Point(322, 190));
-			getContent().addPaintListener(new PaintListener() {
-
-				public void paintControl(PaintEvent e) {
-					e.gc.setForeground(getForeground());
-					e.gc.drawText(buildId, buildIdPoint.x, buildIdPoint.y, true);
-				}
-			});
-		}
-		else {
-			getContent(); // ensure creation of the progress
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/SplashHandlerFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/SplashHandlerFactory.java
deleted file mode 100644
index 7942dc3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/splash/SplashHandlerFactory.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.splash;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.splash.AbstractSplashHandler;
-
-/**
- * Simple non-caching access to the splashHandler extension point.
- * 
- * @since 3.3
- */
-public final class SplashHandlerFactory {
-
-	/**
-	 * Find the splash handler for the given product or <code>null</code> if
-	 * it cannot be found.
-	 * 
-	 * @param product
-	 *            the product
-	 * @return the splash or <code>null</code>
-	 */
-	public static AbstractSplashHandler findSplashHandlerFor(IProduct product) {
-		if (product == null)
-			return null;
-
-		IExtensionPoint point = Platform.getExtensionRegistry()
-				.getExtensionPoint(PlatformUI.PLUGIN_ID,
-						IWorkbenchRegistryConstants.PL_SPLASH_HANDLERS);
-
-		if (point == null)
-			return null;
-
-		IExtension[] extensions = point.getExtensions();
-		Map idToSplash = new HashMap(); // String->ConfigurationElement
-		String[] targetId = new String[1];
-		for (int i = 0; i < extensions.length; i++) {
-			IConfigurationElement[] children = extensions[i]
-					.getConfigurationElements();
-			for (int j = 0; j < children.length; j++) {
-				AbstractSplashHandler handler = processElement(children[j],
-						idToSplash, targetId, product);
-				if (handler != null)
-					return handler;
-
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Process a given element.
-	 * 
-	 * @param configurationElement
-	 *            the element to process
-	 * @param idToSplash
-	 *            the map of current splash elements
-	 * @param targetId
-	 *            the target id if known
-	 * @param product
-	 *            the product to search for
-	 * @return a splash matching the target id from this element or
-	 *         <code>null</code>
-	 */
-	private static AbstractSplashHandler processElement(
-			IConfigurationElement configurationElement, Map idToSplash,
-			String[] targetId, IProduct product) {
-		String type = configurationElement.getName();
-		if (IWorkbenchRegistryConstants.TAG_SPLASH_HANDLER.equals(type)) {
-			String id = configurationElement
-					.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-			if (id == null)
-				return null;
-
-			// we know the target and this element is it
-			if (targetId[0] != null && id.equals(targetId[0])) {
-				return create(configurationElement);
-			}
-			// store for later examination
-			idToSplash.put(id, configurationElement);
-
-		} else if (IWorkbenchRegistryConstants.TAG_SPLASH_HANDLER_PRODUCT_BINDING
-				.equals(type)) {
-			String productId = configurationElement
-					.getAttribute(IWorkbenchRegistryConstants.ATT_PRODUCTID);
-			if (product.getId().equals(productId) && targetId[0] == null) { // we
-				// found the target ID
-				targetId[0] = configurationElement
-						.getAttribute(IWorkbenchRegistryConstants.ATT_SPLASH_ID);
-				// check all currently located splashes
-				IConfigurationElement splashElement = (IConfigurationElement) idToSplash
-						.get(targetId[0]);
-				if (splashElement != null)
-					return create(splashElement);
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Create the splash implementation.
-	 * 
-	 * @param splashElement
-	 *            the element to create from
-	 * @return the element or <code>null</code> if it couldn't be created
-	 */
-	private static AbstractSplashHandler create(
-			final IConfigurationElement splashElement) {
-		final AbstractSplashHandler[] handler = new AbstractSplashHandler[1];
-		SafeRunner.run(new SafeRunnable() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.ISafeRunnable#run()
-			 */
-			public void run() throws Exception {
-				handler[0] = (AbstractSplashHandler) WorkbenchPlugin
-						.createExtension(splashElement,
-								IWorkbenchRegistryConstants.ATT_CLASS);
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.util.SafeRunnable#handleException(java.lang.Throwable)
-			 */
-			public void handleException(Throwable e) {
-				WorkbenchPlugin
-						.log("Problem creating splash implementation", e); //$NON-NLS-1$
-			}
-		});
-
-		return handler[0];
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java
deleted file mode 100644
index 4febac5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/DefaultDetailsArea.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.statushandlers;
-
-import java.util.Date;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.List;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.internal.progress.ProgressMessages;
-import org.eclipse.ui.statushandlers.AbstractStatusAreaProvider;
-import org.eclipse.ui.statushandlers.IStatusAdapterConstants;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager;
-
-import com.ibm.icu.text.DateFormat;
-
-/**
- * The default details area displaying a tree of statuses.
- * 
- * @since 3.4
- */
-public class DefaultDetailsArea extends AbstractStatusAreaProvider {
-
-	private WorkbenchStatusDialogManager workbenchStatusDialog;
-
-	public DefaultDetailsArea(WorkbenchStatusDialogManager wsd){
-		this.workbenchStatusDialog = wsd;
-	}
-	
-	/*
-	 * All statuses should be displayed.
-	 */
-	protected static final int MASK = IStatus.CANCEL | IStatus.ERROR
-			| IStatus.INFO | IStatus.WARNING;
-
-	/*
-	 * New child entry in the list will be shifted by two spaces.
-	 */
-	private static final Object NESTING_INDENT = "  "; //$NON-NLS-1$
-
-	/*
-	 * Displays statuses.
-	 */
-	private List list;
-
-	private Clipboard clipboard;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.statushandlers.AbstractStatusAreaProvider#createSupportArea(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.ui.statushandlers.StatusAdapter)
-	 */
-	public Control createSupportArea(Composite parent,
-			StatusAdapter statusAdapter) {
-		Composite area = createArea(parent);
-		setStatusAdapter(statusAdapter);
-		return area;
-	}
-
-	protected Composite createArea(Composite parent) {
-		parent = new Composite(parent, SWT.NONE);
-		parent.setLayout(new GridLayout());
-		parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		list = new List(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI
-				| SWT.BORDER);
-		GridData gd = new GridData(GridData.FILL_BOTH);
-		gd.grabExcessHorizontalSpace = true;
-		gd.grabExcessVerticalSpace = true;
-		gd.widthHint = 250;
-		gd.heightHint = 100;
-		list.setLayoutData(gd);
-		list.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				if (clipboard != null) {
-					clipboard.dispose();
-				}
-			}
-		});
-		list.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				list.selectAll();
-				super.widgetSelected(e);
-			}
-		});
-		createDNDSource();
-		createCopyAction(parent);
-		Dialog.applyDialogFont(parent);
-		return parent;
-	}
-
-	protected void setStatusAdapter(StatusAdapter adapter) {
-		list.removeAll();
-		populateList(list, adapter.getStatus(), 0);
-		if (workbenchStatusDialog.getStatusAdapters().size() == 1) {
-			Long timestamp = (Long) adapter
-					.getProperty(IStatusAdapterConstants.TIMESTAMP_PROPERTY);
-
-			if (timestamp != null) {
-				String date = DateFormat.getDateTimeInstance(DateFormat.LONG,
-						DateFormat.LONG)
-						.format(new Date(timestamp.longValue()));
-				list.add(NLS.bind(ProgressMessages.JobInfo_Error,
-						(new Object[] { "", date }))); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Creates DND source for the list
-	 */
-	private void createDNDSource() {
-		DragSource ds = new DragSource(list, DND.DROP_COPY);
-		ds.setTransfer(new Transfer[] { TextTransfer.getInstance() });
-		ds.addDragListener(new DragSourceListener() {
-			public void dragFinished(DragSourceEvent event) {
-			}
-
-			public void dragSetData(DragSourceEvent event) {
-				if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
-					event.data = prepareCopyString();
-				}
-			}
-			
-			public void dragStart(DragSourceEvent event) {
-				list.selectAll();
-			}
-		});
-	}
-
-	private void createCopyAction(final Composite parent) {
-		Menu menu = new Menu(parent.getShell(), SWT.POP_UP);
-		MenuItem copyAction = new MenuItem(menu, SWT.PUSH);
-		copyAction.setText(JFaceResources.getString("copy")); //$NON-NLS-1$
-		copyAction.addSelectionListener(new SelectionAdapter() {
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				clipboard = new Clipboard(parent.getDisplay());
-				clipboard.setContents(new Object[] { prepareCopyString() },
-						new Transfer[] { TextTransfer.getInstance() });
-				super.widgetSelected(e);
-			}
-
-		});
-		list.setMenu(menu);
-	}
-
-	private String prepareCopyString() {
-		if (list == null || list.isDisposed()) {
-			return ""; //$NON-NLS-1$
-		}
-		StringBuffer sb = new StringBuffer();
-		String newLine = System.getProperty("line.separator"); //$NON-NLS-1$
-		for (int i = 0; i < list.getItemCount(); i++) {
-			sb.append(list.getItem(i));
-			sb.append(newLine);
-		}
-		return sb.toString();
-	}
-
-	private void populateList(List list, IStatus status, int nesting) {
-		if (!status.matches(MASK)) {
-			return;
-		}
-		StringBuffer buffer = new StringBuffer();
-		for (int i = 0; i < nesting; i++) {
-			buffer.append(NESTING_INDENT);
-		}
-		buffer.append(status.getMessage());
-		list.add(buffer.toString());
-
-		// Look for a nested core exception
-		Throwable t = status.getException();
-		if (t instanceof CoreException) {
-			CoreException ce = (CoreException) t;
-			populateList(list, ce.getStatus(), nesting + 1);
-		} else if (t != null) {
-			// Include low-level exception message
-			buffer = new StringBuffer();
-			for (int i = 0; i < nesting; i++) {
-				buffer.append(NESTING_INDENT);
-			}
-			String message = t.getLocalizedMessage();
-			if (message == null) {
-				message = t.toString();
-			}
-			buffer.append(message);
-			list.add(buffer.toString());
-		}
-
-		IStatus[] children = status.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			populateList(list, children[i], nesting + 1);
-		}
-	}
-
-	/**
-	 * @return Returns the list.
-	 */
-	public List getList() {
-		return list;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
deleted file mode 100644
index 393b999..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StackTraceSupportArea.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.statushandlers;
-
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.statushandlers.AbstractStatusAreaProvider;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.WorkbenchErrorHandler;
-import org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager;
-
-/**
- * This class is responsible for displaying stack trace retrieved from IStatus.
- * It has similar functionality as details area in {@link WorkbenchStatusDialogManager}.
- * This class will be visible only if it is enabled in
- * {@link WorkbenchStatusDialogManager} and no support provider is passed by
- * {@link Policy}
- * 
- * @see Policy#setErrorSupportProvider
- * @see Policy#getErrorSupportProvider()
- * @see WorkbenchStatusDialogManager#enableDefaultSupportArea
- * @see WorkbenchErrorHandler
- * @since 3.4
- */
-public class StackTraceSupportArea extends AbstractStatusAreaProvider {
-
-	/*
-	 * Displays statuses.
-	 */
-	private List list;
-
-	private Clipboard clipboard;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.statushandlers.AbstractStatusAreaProvider#createSupportArea(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.ui.statushandlers.StatusAdapter)
-	 */
-	public Control createSupportArea(final Composite parent,
-			StatusAdapter statusAdapter) {
-
-		Label label = new Label(parent, SWT.NONE);
-		label.setText(WorkbenchMessages.StackTraceSupportArea_Title);
-
-		list = new List(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI);
-		GridData gd = new GridData(GridData.FILL_BOTH);
-		gd.grabExcessHorizontalSpace = true;
-		gd.grabExcessVerticalSpace = true;
-		gd.widthHint = 250;
-		list.setLayoutData(gd);
-		list.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				if (clipboard != null) {
-					clipboard.dispose();
-				}
-			}
-		});
-		list.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				list.selectAll();
-				super.widgetSelected(e);
-			}
-		});
-		list.removeAll();
-		populateList(statusAdapter.getStatus().getException());
-		createDNDSource();
-		createCopyAction(parent);
-		return parent;
-	}
-
-	/**
-	 * Creates DND source for the list
-	 */
-	private void createDNDSource() {
-		DragSource ds = new DragSource(list, DND.DROP_COPY);
-		ds.setTransfer(new Transfer[] { TextTransfer.getInstance() });
-		ds.addDragListener(new DragSourceListener() {
-			public void dragFinished(DragSourceEvent event) {
-
-			}
-
-			public void dragSetData(DragSourceEvent event) {
-				if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
-					event.data = prepareCopyString();
-				}
-			}
-
-			public void dragStart(DragSourceEvent event) {
-				list.selectAll();
-			}
-		});
-	}
-
-	private void createCopyAction(final Composite parent) {
-		Menu menu = new Menu(parent.getShell(), SWT.POP_UP);
-		MenuItem copyAction = new MenuItem(menu, SWT.PUSH);
-		copyAction.setText("&Copy"); //$NON-NLS-1$
-		copyAction.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				clipboard = new Clipboard(parent.getDisplay());
-				clipboard.setContents(new Object[] { prepareCopyString() },
-						new Transfer[] { TextTransfer.getInstance() });
-				super.widgetSelected(e);
-			}
-		});
-		list.setMenu(menu);
-	}
-
-	private String prepareCopyString() {
-		if (list == null || list.isDisposed()) {
-			return ""; //$NON-NLS-1$
-		}
-		StringBuffer sb = new StringBuffer();
-		String newLine = System.getProperty("line.separator"); //$NON-NLS-1$
-		for (int i = 0; i < list.getItemCount(); i++) {
-			sb.append(list.getItem(i));
-			sb.append(newLine);
-		}
-		return sb.toString();
-	}
-
-	private void populateList(Throwable t) {
-		if (t == null) {
-			list.add(WorkbenchMessages.StackTraceSupportArea_NoStackTrace);
-			return;
-		}
-		list.add(t.toString());
-		StackTraceElement[] ste = t.getStackTrace();
-		for (int i = 0; i < ste.length; i++) {
-			list.add(ste[i].toString());
-		}
-		if (t.getCause() != null) {
-			list.add(WorkbenchMessages.StackTraceSupportArea_CausedBy);
-			populateList(t.getCause());
-		}
-	}
-
-	/**
-	 * @return Returns the list.
-	 */
-	public List getList() {
-		return list;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java
deleted file mode 100644
index 7d6e839..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptor.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.statushandlers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.statushandlers.AbstractStatusHandler;
-
-/**
- * The status handler descriptor.
- * 
- * @since 3.3
- */
-public class StatusHandlerDescriptor implements IPluginContribution {
-
-	private AbstractStatusHandler cachedInstance;
-
-	private final static String PREFIX = "prefix"; //$NON-NLS-1$
-
-	private IConfigurationElement configElement;
-
-	private String id;
-
-	private String pluginId;
-
-	private String prefix;
-
-	/**
-	 * @param configElement
-	 */
-	public StatusHandlerDescriptor(IConfigurationElement configElement) {
-		super();
-		this.configElement = configElement;
-		id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-		pluginId = configElement.getContributor().getName();
-	}
-
-	/**
-	 * Gets an instance of the status handler defined in the descriptor.
-	 * 
-	 * @return the status handler
-	 * @throws CoreException
-	 *             thrown if there is a problem creating the handler
-	 */
-	public synchronized AbstractStatusHandler getStatusHandler()
-			throws CoreException {
-		if (cachedInstance == null) {
-			AbstractStatusHandler statusHandler = (AbstractStatusHandler) configElement
-					.createExecutableExtension(IWorkbenchRegistryConstants.ATT_CLASS);
-			statusHandler.setId(configElement
-					.getAttribute(IWorkbenchRegistryConstants.ATT_ID));
-
-			IConfigurationElement parameters[] = configElement
-					.getChildren(IWorkbenchRegistryConstants.TAG_PARAMETER);
-
-			Map params = new HashMap();
-
-			for (int i = 0; i < parameters.length; i++) {
-				params
-						.put(
-								parameters[i]
-										.getAttribute(IWorkbenchRegistryConstants.ATT_NAME),
-								parameters[i]
-										.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE));
-			}
-
-			statusHandler.setParams(params);
-			cachedInstance = statusHandler;
-		}
-		return cachedInstance;
-	}
-
-	/**
-	 * Gets prefix parameter for the status handler defined in the descriptor.
-	 * 
-	 * @return prefix parameter
-	 */
-	public String getPrefix() {
-		IConfigurationElement parameters[] = configElement
-				.getChildren(IWorkbenchRegistryConstants.TAG_PARAMETER);
-
-		for (int i = 0; i < parameters.length; i++) {
-			if (parameters[i]
-					.getAttribute(IWorkbenchRegistryConstants.ATT_NAME).equals(
-							PREFIX)) {
-				prefix = parameters[i]
-						.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-			}
-		}
-		return prefix;
-	}
-
-	/**
-	 * Returns the id of the status handler.
-	 * 
-	 * @return the id
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPluginContribution#getLocalId()
-	 */
-	public String getLocalId() {
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPluginContribution#getPluginId()
-	 */
-	public String getPluginId() {
-		return pluginId;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java
deleted file mode 100644
index 833f343..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerDescriptorsMap.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.statushandlers;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Helper class supporting the prefix based status handling policy.
- * 
- * @since 3.3
- */
-class StatusHandlerDescriptorsMap {
-
-	private final String ASTERISK = "*"; //$NON-NLS-1$
-
-	private HashMap map;
-
-	/**
-	 * Creates a new instance of the class
-	 */
-	public StatusHandlerDescriptorsMap() {
-		map = new HashMap();
-	}
-
-	/**
-	 * Adds a new handler descriptor to the prefix tree
-	 * 
-	 * @param handlerDescriptor
-	 *            the handler descriptor to add
-	 */
-	public void addHandlerDescriptor(StatusHandlerDescriptor handlerDescriptor) {
-		add(this.map, handlerDescriptor.getPrefix(), handlerDescriptor);
-	}
-
-	/*
-	 * Recursively searches the tree for the best place for the handler
-	 * descriptor
-	 */
-	private void add(Map map, String prefix,
-			StatusHandlerDescriptor handlerDescriptor) {
-		if (prefix == null) {
-			if (map.get(ASTERISK) == null) {
-				map.put(ASTERISK, new ArrayList());
-			}
-
-			((List) map.get(ASTERISK)).add(handlerDescriptor);
-		} else {
-			int delimIndex = prefix.indexOf("."); //$NON-NLS-1$
-
-			String pre = null;
-			String post = null;
-
-			if (delimIndex != -1) {
-				pre = prefix.substring(0, delimIndex);
-
-				if (delimIndex < prefix.length() - 1) {
-					post = prefix.substring(delimIndex + 1);
-				}
-			} else {
-				pre = prefix;
-			}
-
-			if (map.get(pre) == null) {
-				map.put(pre, new HashMap());
-			}
-
-			add((Map) map.get(pre), post, handlerDescriptor);
-		}
-	}
-
-	public void clear() {
-		map.clear();
-	}
-
-	/**
-	 * Returns status handler descriptors whose prefixes are the most specific
-	 * for given pluginId.
-	 * 
-	 * @param pluginId
-	 * @return handler descriptors list
-	 */
-	public List getHandlerDescriptors(String pluginId) {
-		return get(pluginId, this.map);
-	}
-
-	/*
-	 * Recursively searches the prefix tree for the most specific handler
-	 * descriptor for the given pluginId.
-	 */
-	private List get(String pluginId, Map map) {
-		if (pluginId == null) {
-			return getAsteriskList(map);
-		}
-
-		int delimIndex = pluginId.indexOf("."); //$NON-NLS-1$
-
-		String pre = null;
-		String post = null;
-
-		if (delimIndex != -1) {
-			pre = pluginId.substring(0, delimIndex);
-
-			if (delimIndex < pluginId.length() - 1) {
-				post = pluginId.substring(delimIndex + 1);
-			}
-		} else {
-			pre = pluginId;
-		}
-
-		if (map.get(pre) == null) {
-			return getAsteriskList(map);
-		}
-
-		return get(post, (Map) map.get(pre));
-	}
-
-	private List getAsteriskList(Map map) {
-		Object list = map.get(ASTERISK);
-		if (list != null) {
-			return (List) list;
-		}
-
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java
deleted file mode 100644
index 55ffdc5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerProductBindingDescriptor.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.statushandlers;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * The status handler product binding descriptor.
- * 
- * @since 3.3
- */
-class StatusHandlerProductBindingDescriptor implements
-		IPluginContribution {
-	
-	/**
-	 * Handler id attribute. Value <code>handlerId</code>.
-	 */
-	private static String ATT_HANDLER_ID = "handlerId"; //$NON-NLS-1$
-
-	private String id;
-
-	private String pluginId;
-
-	private String productId;
-
-	private String handlerId;
-
-	/**
-	 * @param configElement
-	 */
-	public StatusHandlerProductBindingDescriptor(
-			IConfigurationElement configElement) {
-		super();
-		id = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-		pluginId = configElement.getContributor().getName();
-		productId = configElement.getAttribute(IWorkbenchRegistryConstants.ATT_PRODUCTID);
-		handlerId = configElement.getAttribute(ATT_HANDLER_ID);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPluginContribution#getLocalId()
-	 */
-	public String getLocalId() {
-		return id;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPluginContribution#getPluginId()
-	 */
-	public String getPluginId() {
-		return pluginId;
-	}
-
-	/**
-	 * @return Returns the productId.
-	 */
-	public String getProductId() {
-		return productId;
-	}
-
-	/**
-	 * @return Returns the handlerId.
-	 */
-	public String getHandlerId() {
-		return handlerId;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java
deleted file mode 100644
index 2542e48..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/StatusHandlerRegistry.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.statushandlers;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * The registry of status handlers extensions.
- * 
- * @since 3.3
- * 
- */
-public class StatusHandlerRegistry implements IExtensionChangeHandler {
-
-	private static final String STATUSHANDLERS_POINT_NAME = "statusHandlers"; //$NON-NLS-1$
-
-	private static final String TAG_STATUSHANDLER = "statusHandler"; //$NON-NLS-1$
-
-	private static final String TAG_STATUSHANDLER_PRODUCTBINDING = "statusHandlerProductBinding"; //$NON-NLS-1$
-
-	private ArrayList statusHandlerDescriptors = new ArrayList();
-
-	private ArrayList productBindingDescriptors = new ArrayList();
-
-	private StatusHandlerDescriptorsMap statusHandlerDescriptorsMap;
-
-	private StatusHandlerDescriptor defaultHandlerDescriptor;
-
-	private static StatusHandlerRegistry instance;
-
-	/**
-	 * Creates an instance of the class.
-	 */
-	private StatusHandlerRegistry() {
-		IExtensionTracker tracker = PlatformUI.getWorkbench()
-				.getExtensionTracker();
-		IExtensionPoint handlersPoint = Platform.getExtensionRegistry()
-				.getExtensionPoint(WorkbenchPlugin.PI_WORKBENCH,
-						STATUSHANDLERS_POINT_NAME);
-		IExtension[] extensions = handlersPoint.getExtensions();
-
-		statusHandlerDescriptorsMap = new StatusHandlerDescriptorsMap();
-
-		// initial population
-		for (int i = 0; i < extensions.length; i++) {
-			addExtension(tracker, extensions[i]);
-		}
-
-		tracker.registerHandler(this, ExtensionTracker
-				.createExtensionPointFilter(handlersPoint));
-
-		// registers on products ext. point to, needed
-		// for changing the default handler if product is changed
-		IExtensionPoint productsPoint = Platform.getExtensionRegistry()
-				.getExtensionPoint(Platform.PI_RUNTIME, Platform.PT_PRODUCT);
-
-		tracker.registerHandler(this, ExtensionTracker
-				.createExtensionPointFilter(productsPoint));
-	}
-
-	/**
-	 * Returns StatusHandlerRegistry singleton instance.
-	 * 
-	 * @return StatusHandlerRegistry instance
-	 */
-	public static StatusHandlerRegistry getDefault() {
-		if (instance == null) {
-			instance = new StatusHandlerRegistry();
-		}
-		return instance;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker,
-	 *      org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		IConfigurationElement[] configElements = extension
-				.getConfigurationElements();
-		for (int j = 0; j < configElements.length; j++) {
-			if (configElements[j].getName().equals(TAG_STATUSHANDLER)) {
-				StatusHandlerDescriptor descriptor = new StatusHandlerDescriptor(
-						configElements[j]);
-				tracker.registerObject(extension, descriptor,
-						IExtensionTracker.REF_STRONG);
-				statusHandlerDescriptors.add(descriptor);
-			} else if (configElements[j].getName().equals(
-					TAG_STATUSHANDLER_PRODUCTBINDING)) {
-				StatusHandlerProductBindingDescriptor descriptor = new StatusHandlerProductBindingDescriptor(
-						configElements[j]);
-				tracker.registerObject(extension, descriptor,
-						IExtensionTracker.REF_STRONG);
-				productBindingDescriptors.add(descriptor);
-			}
-		}
-		buildHandlersStructure();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension,
-	 *      java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		for (int i = 0; i < objects.length; i++) {
-			if (objects[i] instanceof StatusHandlerDescriptor) {
-				statusHandlerDescriptors.remove(objects[i]);
-			} else if (objects[i] instanceof StatusHandlerProductBindingDescriptor) {
-				productBindingDescriptors.remove(objects[i]);
-			}
-		}
-		buildHandlersStructure();
-	}
-
-	/**
-	 * Returns the default product handler descriptor, or null if the product is
-	 * not defined or there is no product binding
-	 * 
-	 * @return the default handler
-	 */
-	public StatusHandlerDescriptor getDefaultHandlerDescriptor() {
-		return defaultHandlerDescriptor;
-	}
-
-	/**
-	 * Returns a list of handler descriptors which should be used for statuses
-	 * with given plugin id.
-	 * 
-	 * @param pluginId
-	 * @return list of handler descriptors
-	 */
-	public List getHandlerDescriptors(String pluginId) {
-		return statusHandlerDescriptorsMap.getHandlerDescriptors(pluginId);
-	}
-
-	/**
-	 * Returns status handler descriptor for given id.
-	 * 
-	 * @param statusHandlerId
-	 *            the id to get for
-	 * @return the status handler descriptor
-	 */
-	public StatusHandlerDescriptor getHandlerDescriptor(String statusHandlerId) {
-		StatusHandlerDescriptor descriptor = null;
-		for (Iterator it = statusHandlerDescriptors.iterator(); it.hasNext();) {
-			descriptor = (StatusHandlerDescriptor) it.next();
-			if (descriptor.getId().equals(statusHandlerId)) {
-				return descriptor;
-			}
-		}
-
-		if (defaultHandlerDescriptor != null
-				&& defaultHandlerDescriptor.getId().equals(statusHandlerId)) {
-			return defaultHandlerDescriptor;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Disposes the registry.
-	 */
-	public void dispose() {
-		PlatformUI.getWorkbench().getExtensionTracker().unregisterHandler(this);
-	}
-
-	/**
-	 * Sets the default product handler descriptor if product exists and binding
-	 * is defined and creates handler descriptors tree due to the prefix policy.
-	 */
-	private void buildHandlersStructure() {
-		statusHandlerDescriptorsMap.clear();
-		defaultHandlerDescriptor = null;
-
-		String productId = Platform.getProduct() != null ? Platform
-				.getProduct().getId() : null;
-
-		List allHandlers = new ArrayList();
-
-		String defaultHandlerId = null;
-
-		for (Iterator it = productBindingDescriptors.iterator(); it.hasNext();) {
-			StatusHandlerProductBindingDescriptor descriptor = ((StatusHandlerProductBindingDescriptor) it
-					.next());
-
-			if (descriptor.getProductId().equals(productId)) {
-				defaultHandlerId = descriptor.getHandlerId();
-			}
-		}
-
-		for (Iterator it = statusHandlerDescriptors.iterator(); it.hasNext();) {
-			StatusHandlerDescriptor descriptor = ((StatusHandlerDescriptor) it
-					.next());
-
-			allHandlers.add(descriptor);
-		}
-
-		StatusHandlerDescriptor handlerDescriptor = null;
-
-		for (Iterator it = allHandlers.iterator(); it.hasNext();) {
-			handlerDescriptor = (StatusHandlerDescriptor) it.next();
-
-			if (handlerDescriptor.getId().equals(defaultHandlerId)) {
-				defaultHandlerDescriptor = handlerDescriptor;
-			} else {
-				statusHandlerDescriptorsMap
-						.addHandlerDescriptor(handlerDescriptor);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/package.html
deleted file mode 100644
index d720e2b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/statushandlers/package.html
+++ /dev/null
@@ -1,16 +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.5 [en] (Win98; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-To be written.
-<h2>
-Package Specification</h2>
-<p>
-This package provides classes that can be used to ...</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
deleted file mode 100755
index f154044..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.testing;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.testing.IWorkbenchPartTestable;
-
-/**
- * Implementation of {@link IWorkbenchPartTestable}.
- * 
- * @since 3.3
- */
-public class WorkbenchPartTestable implements IWorkbenchPartTestable {
-
-	private Composite composite;
-	
-	/**
-	 * Create a new instance of this class based on the provided part.
-	 * 
-	 * @param partSite the part to test
-	 */
-	public WorkbenchPartTestable(PartSite partSite) {
-		Composite paneComposite = (Composite)partSite.getPane().getControl();
-		Control [] paneChildren = paneComposite.getChildren();
-		this.composite = ((Composite) paneChildren[0]);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.testing.IWorkbenchPartTestable#getControl()
-	 */
-	public Composite getControl() {
-		return composite;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchTestable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchTestable.java
deleted file mode 100644
index 03735c0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchTestable.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.testing;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.testing.TestableObject;
-
-/**
- * The Workbench's testable object facade to a test harness.
- * 
- * @since 3.0
- */
-public class WorkbenchTestable extends TestableObject {
-
-    private Display display;
-
-    private IWorkbench workbench;
-
-    private boolean oldAutomatedMode;
-
-    private boolean oldIgnoreErrors;
-
-    /**
-     * Constructs a new workbench testable object.
-     */
-    public WorkbenchTestable() {
-        // do nothing
-    }
-
-    /**
-     * Initializes the workbench testable with the display and workbench,
-     * and notifies all listeners that the tests can be run.
-     * 
-     * @param display the display
-     * @param workbench the workbench
-     */
-    public void init(Display display, IWorkbench workbench) {
-        Assert.isNotNull(display);
-        Assert.isNotNull(workbench);
-        this.display = display;
-        this.workbench = workbench;
-        if (getTestHarness() != null) {
-        	// don't use a job, since tests often wait for all jobs to complete before proceeding
-            Runnable runnable = new Runnable() {
-                public void run() {
-                	// Some tests (notably the startup performance tests) do not want to wait for early startup.
-                	// Allow this to be disabled by specifying the system property: org.eclipse.ui.testsWaitForEarlyStartup=false
-                	// For details, see bug 94129 [Workbench] Performance test regression caused by workbench harness change
-                	if (!"false".equalsIgnoreCase(System.getProperty(PlatformUI.PLUGIN_ID + ".testsWaitForEarlyStartup"))) {  //$NON-NLS-1$ //$NON-NLS-2$
-                		waitForEarlyStartup();
-                	}
-                    getTestHarness().runTests();
-                }
-            };
-            new Thread(runnable, "WorkbenchTestable").start(); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Waits for the early startup job to complete.
-     */
-    private void waitForEarlyStartup() {
-		try {
-			Platform.getJobManager().join(Workbench.EARLY_STARTUP_FAMILY, null);
-		} catch (OperationCanceledException e) {
-			// ignore
-		} catch (InterruptedException e) {
-			// ignore
-		}    	
-    }
-    
-    /**
-     * The <code>WorkbenchTestable</code> implementation of this 
-     * <code>TestableObject</code> method ensures that the workbench
-     * has been set.
-     */
-    public void testingStarting() {
-        Assert.isNotNull(workbench);
-        oldAutomatedMode = ErrorDialog.AUTOMATED_MODE;
-        ErrorDialog.AUTOMATED_MODE = true;
-        oldIgnoreErrors = SafeRunnable.getIgnoreErrors();
-        SafeRunnable.setIgnoreErrors(true);
-    }
-
-    /**
-     * The <code>WorkbenchTestable</code> implementation of this 
-     * <code>TestableObject</code> method flushes the event queue,
-     * runs the test in a <code>syncExec</code>, then flushes the
-     * event queue again.
-     */
-    public void runTest(Runnable testRunnable) {
-        Assert.isNotNull(workbench);
-        display.syncExec(testRunnable);
-    }
-
-    /**
-     * The <code>WorkbenchTestable</code> implementation of this 
-     * <code>TestableObject</code> method flushes the event queue, 
-     * then closes the workbench.
-     */
-    public void testingFinished() {
-        // force events to be processed, and ensure the close is done in the UI thread
-        display.syncExec(new Runnable() {
-            public void run() {
-                Assert.isTrue(workbench.close());
-            }
-        });
-        ErrorDialog.AUTOMATED_MODE = oldAutomatedMode;
-        SafeRunnable.setIgnoreErrors(oldIgnoreErrors);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingColorRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingColorRegistry.java
deleted file mode 100644
index ed24062..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingColorRegistry.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @since 3.0
- */
-public class CascadingColorRegistry extends ColorRegistry {
-
-    private ColorRegistry parent;
-
-    private IPropertyChangeListener listener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-        	// check to see if we have an override for the given key. If so,
-			// then a change in our parent registry shouldn't cause a change in
-			// us. Without this check we will propagate a new value
-			// (event.getNewValue()) to our listeners despite the fact that this
-			// value is NOT our current value.
-			if (!hasOverrideFor(event.getProperty()))
-				fireMappingChanged(event.getProperty(), event.getOldValue(),
-						event.getNewValue());
-        }
-    };
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param parent the parent registry
-     */
-    public CascadingColorRegistry(ColorRegistry parent) {
-    	super(Display.getCurrent(), false);
-        this.parent = parent;
-        parent.addListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ColorRegistry#get(java.lang.String)
-     */
-    public Color get(String symbolicName) {
-        if (super.hasValueFor(symbolicName)) {
-			return super.get(symbolicName);
-		}
-        
-        return parent.get(symbolicName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ColorRegistry#getKeySet()
-     */
-    public Set getKeySet() {
-        Set keyUnion = new HashSet(super.getKeySet());
-        keyUnion.addAll(parent.getKeySet());
-        return keyUnion;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ColorRegistry#getRGB(java.lang.String)
-     */
-    public RGB getRGB(String symbolicName) {
-        if (super.hasValueFor(symbolicName)) {
-			return super.getRGB(symbolicName);
-		}
-        
-        return parent.getRGB(symbolicName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ColorRegistry#hasValueFor(java.lang.String)
-     */
-    public boolean hasValueFor(String colorKey) {
-        return super.hasValueFor(colorKey) || parent.hasValueFor(colorKey);
-    }
-
-    /**
-     * Returns whether this cascading registry has an override for the provided 
-     * color key.
-     * 
-     * @param colorKey the provided color key
-     * @return hether this cascading registry has an override
-     */
-    public boolean hasOverrideFor(String colorKey) {
-        return super.hasValueFor(colorKey);
-    }
-
-    /**
-     * Disposes of all allocated resources.
-     */
-    public void dispose() {
-        parent.removeListener(listener);
-        PlatformUI.getWorkbench().getDisplay().asyncExec(displayRunnable);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingFontRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingFontRegistry.java
deleted file mode 100644
index 7c0b4f2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingFontRegistry.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @since 3.0
- */
-public class CascadingFontRegistry extends FontRegistry {
-
-    private FontRegistry parent;
-
-    private IPropertyChangeListener listener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-        	// check to see if we have an override for the given key. If so,
-			// then a change in our parent registry shouldn't cause a change in
-			// us. Without this check we will propagate a new value
-			// (event.getNewValue()) to our listeners despite the fact that this
-			// value is NOT our current value.
-			if (!hasOverrideFor(event.getProperty()))
-            fireMappingChanged(event.getProperty(), event.getOldValue(), event
-                    .getNewValue());
-			
-        }
-    };
-
-    /**
-     * Create a new instance of this class.
-     * 
-     * @param parent the parent registry
-     */
-    public CascadingFontRegistry(FontRegistry parent) {
-    	super(Display.getCurrent(), false);
-        this.parent = parent;
-        parent.addListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.FontRegistry#get(java.lang.String)
-     */
-    public Font get(String symbolicName) {
-        if (super.hasValueFor(symbolicName)) {
-			return super.get(symbolicName);
-		}
-        return parent.get(symbolicName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.FontRegistry#getKeySet()
-     */
-    public Set getKeySet() {
-        Set keyUnion = new HashSet(super.getKeySet());
-        keyUnion.addAll(parent.getKeySet());
-        return keyUnion;
-    }
-
-    public FontData[] getFontData(String symbolicName) {
-        if (super.hasValueFor(symbolicName)) {
-			return super.getFontData(symbolicName);
-		}
-        return parent.getFontData(symbolicName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.resource.ColorRegistry#hasValueFor(java.lang.String)
-     */
-    public boolean hasValueFor(String colorKey) {
-        return super.hasValueFor(colorKey) || parent.hasValueFor(colorKey);
-    }
-
-    /**
-     * Returns whether this cascading registry has an override for the provided 
-     * color key.
-     * 
-     * @param fontKey the provided color key
-     * @return hether this cascading registry has an override
-     */
-    public boolean hasOverrideFor(String fontKey) {
-        return super.hasValueFor(fontKey);
-    }
-
-    /**
-     * Disposes of all allocated resources.
-     */
-    public void dispose() {
-        parent.removeListener(listener);
-        PlatformUI.getWorkbench().getDisplay().asyncExec(displayRunnable);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingMap.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingMap.java
deleted file mode 100644
index aa58a71..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingMap.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @since 3.0
- */
-public class CascadingMap {
-
-    private Map base, override;
-
-    /** 
-     * @param base the base (default) map
-     * @param override the override map
-     */
-    public CascadingMap(Map base, Map override) {
-        this.base = base;
-        this.override = override;
-    }
-
-    /**
-     * Return the union of the parent and child key sets.  
-     * 
-     * @return the union.  This set is read only.
-     */
-    public Set keySet() {
-        Set keySet = new HashSet(base.keySet());
-        keySet.addAll(override.keySet());
-        return Collections.unmodifiableSet(keySet);
-    }
-
-    /**
-     * Get the value.  Preference will be given to entries in the override map.
-     * 
-     * @param key the key
-     * @return the value
-     */
-    public Object get(Object key) {
-        if (override.containsKey(key)) {
-			return override.get(key);
-		}
-        return base.get(key);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java
deleted file mode 100644
index 057ef0e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/CascadingTheme.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Set;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.themes.ITheme;
-
-/**
- * @since 3.0
- */
-public class CascadingTheme extends EventManager implements ITheme {
-
-    private CascadingFontRegistry fontRegistry;
-
-    private CascadingColorRegistry colorRegistry;
-
-    private ITheme currentTheme;
-
-    private IPropertyChangeListener listener = new IPropertyChangeListener() {
-
-        public void propertyChange(PropertyChangeEvent event) {
-            fire(event);
-        }
-    };
-
-    /**
-     * @param colorRegistry
-     * @param fontRegistry
-     */
-    public CascadingTheme(ITheme currentTheme,
-            CascadingColorRegistry colorRegistry,
-            CascadingFontRegistry fontRegistry) {
-        this.currentTheme = currentTheme;
-        this.colorRegistry = colorRegistry;
-        this.fontRegistry = fontRegistry;
-
-        fontRegistry.addListener(listener);
-        colorRegistry.addListener(listener);
-    }
-
-    /**
-     * @param event
-     */
-    protected void fire(PropertyChangeEvent event) {
-        Object[] listeners = getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyChangeListener) listeners[i]).propertyChange(event);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener) {
-        addListenerObject(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener) {
-        removeListenerObject(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getId()
-     */
-    public String getId() {
-        return currentTheme.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getLabel()
-     */
-    public String getLabel() {
-        return currentTheme.getLabel();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getColorRegistry()
-     */
-    public ColorRegistry getColorRegistry() {
-        return colorRegistry;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getFontRegistry()
-     */
-    public FontRegistry getFontRegistry() {
-        return fontRegistry;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#dispose()
-     */
-    public void dispose() {
-        colorRegistry.removeListener(listener);
-        fontRegistry.removeListener(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getString(java.lang.String)
-     */
-    public String getString(String key) {
-        return currentTheme.getString(key);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getInt(java.lang.String)
-     */
-    public int getInt(String key) {
-        return currentTheme.getInt(key);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getBoolean(java.lang.String)
-     */
-    public boolean getBoolean(String key) {
-        return currentTheme.getBoolean(key);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#keySet()
-     */
-    public Set keySet() {
-        return currentTheme.keySet();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java
deleted file mode 100644
index 20e24f7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorDefinition.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.DataFormatException;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.themes.ColorUtil;
-
-/**
- * A <code>ColorDefiniton </code> is the representation of the extensions 
- * defined by the <code>org.eclipse.ui.colorDefinitions</code> extension point.
- * 
- *  @since 3.0
- */
-public class ColorDefinition implements IPluginContribution,
-        IHierarchalThemeElementDefinition, ICategorizedThemeElementDefinition,
-        IEditable {
-	
-	/**
-	 * Default color value - black - for colors that cannot be parsed.
-	 */
-    private static final RGB DEFAULT_COLOR_VALUE = new RGB(0,0,0);
-
-	private String defaultsTo;
-
-    private String description;
-
-    private String id;
-
-    private String label;
-
-    private String pluginId;
-
-    private String rawValue;
-
-    private String categoryId;
-
-    boolean isEditable;
-
-    private RGB parsedValue;
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param label the label for this definition
-     * @param id the identifier for this definition
-     * @param defaultsTo the id of a definition that this definition will 
-     * 		default to.
-     * @param value the default value of this definition, either in the form 
-     * rrr,ggg,bbb or the name of an SWT color constant. 
-     * @param description the description for this definition.
-     * @param pluginId the identifier of the plugin that contributed this 
-     * 		definition.
-     */
-    public ColorDefinition(String label, String id, String defaultsTo,
-            String value, String categoryId, boolean isEditable,
-            String description, String pluginId) {
-
-        this.label = label;
-        this.id = id;
-        this.defaultsTo = defaultsTo;
-        this.rawValue = value;
-        this.categoryId = categoryId;
-        this.description = description;
-        this.isEditable = isEditable;
-        this.pluginId = pluginId;
-    }
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param original the original definition.  This will be used to populate 
-     * all fields except defaultsTo and value.  defaultsTo will always be 
-     * <code>null</code>.
-     * @param value the RGB value
-     */
-    public ColorDefinition(ColorDefinition original, RGB value) {
-
-        this.label = original.getName();
-        this.id = original.getId();
-        this.categoryId = original.getCategoryId();
-        this.description = original.getDescription();
-        this.isEditable = original.isEditable();
-        this.pluginId = original.getPluginId();
-
-        this.parsedValue = value;
-    }
-
-    /**
-     * @return the categoryId, or <code>null</code> if none was supplied.
-     */
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    /**
-     * @return the defaultsTo value, or <code>null</code> if none was supplied.
-     */
-    public String getDefaultsTo() {
-        return defaultsTo;
-    }
-
-    /**
-     * @return the description text, or <code>null</code> if none was supplied.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * @return the id of this definition.  Should not be <code>null</code>.
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * @return the label text.  Should not be <code>null</code>.
-     */
-    public String getName() {
-        return label;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return pluginId;
-    }
-
-    /**
-     * @return the value. Any SWT constants  supplied to the constructor will be 
-     * evaluated and converted into their RGB value.
-     */
-    public RGB getValue() {
-        if (parsedValue == null) {
-			try {
-				parsedValue = ColorUtil.getColorValue(rawValue);
-			} catch (DataFormatException e) {
-				parsedValue = DEFAULT_COLOR_VALUE;
-				IStatus status = StatusUtil.newStatus(IStatus.WARNING,
-						"Could not parse value for theme color " + id, e); //$NON-NLS-1$
-				StatusManager.getManager().handle(status, StatusManager.LOG);
-			}
-		}
-        return parsedValue;
-    }
-
-    /*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-    public String toString() {
-        return getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IEditable#isEditable()
-     */
-    public boolean isEditable() {
-        return isEditable;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof ColorDefinition) {
-            return getId().equals(((ColorDefinition)obj).getId());
-        }
-        return false;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return id.hashCode();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
deleted file mode 100644
index 470c9d1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.java
+++ /dev/null
@@ -1,2002 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.preference.ColorSelector;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.DefaultToolTip;
-import org.eclipse.jface.window.ToolTip;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.layout.FillLayout;
-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.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.FontDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemeManager;
-import org.eclipse.ui.themes.IThemePreview;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Preference page for management of system colors, gradients and fonts.
- * 
- * @since 3.0
- */
-public final class ColorsAndFontsPreferencePage extends PreferencePage
-        implements IWorkbenchPreferencePage {
-	
-	private static final String SELECTED_ELEMENT_PREF = "ColorsAndFontsPreferencePage.selectedElement"; //$NON-NLS-1$
-	/**
-	 * The preference that stores the expanded state.
-	 */
-	private static final String EXPANDED_ELEMENTS_PREF = "ColorsAndFontsPreferencePage.expandedCategories"; //$NON-NLS-1$
-	/**
-	 * The token that separates expanded elements in EXPANDED_ELEMENTS_PREF.
-	 */
-	private static final String EXPANDED_ELEMENTS_TOKEN = "\t"; //$NON-NLS-1$
-	
-	/**
-     * Marks category tokens in EXPANDED_ELEMENTS_PREF and SELECTED_ELEMENT_PREF.
-     */
-	private static final char MARKER_CATEGORY = 'T';
-	
-	/**
-	 * Marks color tokens in EXPANDED_ELEMENTS_PREF and SELECTED_ELEMENT_PREF.
-	 */
-	private static final char MARKER_COLOR = 'C';
-	
-	/**
-	 * Marks font tokens in EXPANDED_ELEMENTS_PREF and SELECTED_ELEMENT_PREF.
-	 */
-	private static final char MARKER_FONT = 'F';
-			
-    private class ThemeContentProvider implements ITreeContentProvider {
-
-        private IThemeRegistry registry;
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-         */
-        public Object[] getChildren(Object parentElement) {
-            if (parentElement instanceof ThemeElementCategory) {
-                String categoryId = ((ThemeElementCategory) parentElement)
-                        .getId();
-                Object[] defintions = (Object[]) categoryMap.get(categoryId);
-                if (defintions == null) {
-                    defintions = getCategoryChildren(categoryId);
-                    categoryMap.put(categoryId, defintions);
-                }
-                return defintions;
-            }
-
-			ArrayList list = new ArrayList();
-			IHierarchalThemeElementDefinition def = (IHierarchalThemeElementDefinition) parentElement;
-			String id = def.getId();
-			IHierarchalThemeElementDefinition[] defs;
-			if (def instanceof ColorDefinition) {
-				defs = registry.getColors();
-			} else {
-				defs = registry.getFonts();
-			}
-
-			for (int i = 0; i < defs.length; i++) {
-				if (id.equals(defs[i].getDefaultsTo())
-						&& ColorsAndFontsPreferencePage.equals(
-								((ICategorizedThemeElementDefinition) def)
-										.getCategoryId(),
-								((ICategorizedThemeElementDefinition) defs[i])
-										.getCategoryId())) {
-					list.add(defs[i]);
-				}
-			}
-			return list.toArray();
-        }
-
-        private Object[] getCategoryChildren(String categoryId) {
-            ArrayList list = new ArrayList();
-
-            if (categoryId != null) {
-                ThemeElementCategory[] categories = registry.getCategories();
-                for (int i = 0; i < categories.length; i++) {
-                    if (categoryId.equals(categories[i].getParentId())) {
-                        Set bindings = themeRegistry
-                                .getPresentationsBindingsFor(categories[i]);
-                        if (bindings == null
-                                || bindings.contains(workbench
-                                        .getPresentationId())) {
-							list.add(categories[i]);
-						}
-                    }
-                }
-            }
-            {
-                ColorDefinition[] colorDefinitions = themeRegistry
-                        .getColorsFor(currentTheme.getId());
-                for (int i = 0; i < colorDefinitions.length; i++) {
-                    if (!colorDefinitions[i].isEditable()) {
-						continue;
-					}
-                    String catId = colorDefinitions[i].getCategoryId();
-                    if ((catId == null && categoryId == null)
-                            || (catId != null && categoryId != null && categoryId
-                                    .equals(catId))) {
-                        if (colorDefinitions[i].getDefaultsTo() != null
-                                && parentIsInSameCategory(colorDefinitions[i])) {
-							continue;
-						}
-                        list.add(colorDefinitions[i]);
-                    }
-                }
-            }
-            {
-                FontDefinition[] fontDefinitions = themeRegistry
-                        .getFontsFor(currentTheme.getId());
-                for (int i = 0; i < fontDefinitions.length; i++) {
-                    if (!fontDefinitions[i].isEditable()) {
-						continue;
-					}
-                    String catId = fontDefinitions[i].getCategoryId();
-                    if ((catId == null && categoryId == null)
-                            || (catId != null && categoryId != null && categoryId
-                                    .equals(catId))) {
-                        if (fontDefinitions[i].getDefaultsTo() != null
-                                && parentIsInSameCategory(fontDefinitions[i])) {
-							continue;
-						}
-                        list.add(fontDefinitions[i]);
-                    }
-                }
-            }
-            return list.toArray(new Object[list.size()]);
-        }
-
-        private boolean parentIsInSameCategory(ColorDefinition definition) {
-            String defaultsTo = definition.getDefaultsTo();
-            ColorDefinition[] defs = registry.getColors();
-            for (int i = 0; i < defs.length; i++) {
-                if (defs[i].getId().equals(defaultsTo)
-                        && ColorsAndFontsPreferencePage.equals(defs[i]
-                                .getCategoryId(), definition.getCategoryId())) {
-					return true;
-				}
-            }
-            return false;
-        }
-
-        private boolean parentIsInSameCategory(FontDefinition definition) {
-            String defaultsTo = definition.getDefaultsTo();
-            FontDefinition[] defs = registry.getFonts();
-            for (int i = 0; i < defs.length; i++) {
-                if (defs[i].getId().equals(defaultsTo)
-                        && ColorsAndFontsPreferencePage.equals(defs[i]
-                                .getCategoryId(), definition.getCategoryId())) {
-					return true;
-				}
-            }
-            return false;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-         */
-        public Object getParent(Object element) {
-            return null;
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-         */
-        public boolean hasChildren(Object element) {
-            if (element instanceof ThemeElementCategory) {
-				return true;
-			}
-
-			IHierarchalThemeElementDefinition def = (IHierarchalThemeElementDefinition) element;
-			String id = def.getId();
-			IHierarchalThemeElementDefinition[] defs;
-			if (def instanceof ColorDefinition) {
-				defs = registry.getColors();
-			} else {
-				defs = registry.getFonts();
-			}
-
-			for (int i = 0; i < defs.length; i++) {
-				if (id.equals(defs[i].getDefaultsTo())
-						&& ColorsAndFontsPreferencePage.equals(
-								((ICategorizedThemeElementDefinition) def)
-										.getCategoryId(),
-								((ICategorizedThemeElementDefinition) defs[i])
-										.getCategoryId())) {
-					return true;
-				}
-			}
-
-            return false;
-        }
-
-        /*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-		 */
-        public Object[] getElements(Object inputElement) {
-            ArrayList list = new ArrayList();
-            Object[] uncatChildren = getCategoryChildren(null);
-            list.addAll(Arrays.asList(uncatChildren));
-            ThemeElementCategory[] categories = ((IThemeRegistry) inputElement)
-                    .getCategories();
-            for (int i = 0; i < categories.length; i++) {
-                if (categories[i].getParentId() == null) {
-                    Set bindings = themeRegistry
-                            .getPresentationsBindingsFor(categories[i]);
-                    if (bindings == null
-                            || bindings.contains(workbench.getPresentationId())) {
-						list.add(categories[i]);
-					}
-                }
-            }
-            return list.toArray(new Object[list.size()]);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-         */
-        public void dispose() {
-            categoryMap.clear();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-         */
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-            categoryMap.clear();
-            registry = (IThemeRegistry) newInput;
-        }
-
-    }
-
-    private class PresentationLabelProvider extends LabelProvider implements
-            IFontProvider {
-
-        private HashMap fonts = new HashMap();
-
-        private HashMap images = new HashMap();
-
-        private int imageSize = -1;
-
-        private int usableImageSize = -1;
-
-        private IPropertyChangeListener listener = new IPropertyChangeListener() {
-            public void propertyChange(PropertyChangeEvent event) {
-                fireLabelProviderChanged(new LabelProviderChangedEvent(
-                        PresentationLabelProvider.this));
-            }
-        };
-
-        private Image emptyImage;
-
-        public PresentationLabelProvider() {
-            hookListeners();
-        }
-
-        /**
-         * Hook the listeners onto the various registries.
-         */
-        public void hookListeners() {
-            colorRegistry.addListener(listener);
-            fontRegistry.addListener(listener);
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-         */
-        public void dispose() {
-            super.dispose();
-            colorRegistry.removeListener(listener);
-            fontRegistry.removeListener(listener);
-            for (Iterator i = images.values().iterator(); i.hasNext();) {
-                ((Image) i.next()).dispose();
-            }
-            images.clear();
-
-            if (emptyImage != null) {
-                emptyImage.dispose();
-                emptyImage = null;
-            }
-
-            //clear the fonts.
-            clearFontCache();
-        }
-
-        /**
-         * Clears and disposes all fonts.
-         */
-        public void clearFontCache() {
-            for (Iterator i = fonts.values().iterator(); i.hasNext();) {
-                ((Font) i.next()).dispose();
-            }
-            fonts.clear();
-        }
-        
-        /**
-         * Clears and disposes all fonts and fires a label update.
-         */
-        public void clearFontCacheAndUpdate() {
-        	clearFontCache();
-        	fireLabelProviderChanged(new LabelProviderChangedEvent(
-                    PresentationLabelProvider.this));
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
-         */
-        public Font getFont(Object element) {
-            Display display = tree.getDisplay();
-            if (element instanceof FontDefinition) {
-                int parentHeight = tree.getViewer().getControl().getFont()
-                        .getFontData()[0].getHeight();
-                Font baseFont = fontRegistry.get(((FontDefinition) element)
-                        .getId());
-                Font font = (Font) fonts.get(baseFont);
-                if (font == null) {
-                    FontData[] data = baseFont.getFontData();
-                    for (int i = 0; i < data.length; i++) {
-                        data[i].setHeight(parentHeight);
-                    }
-                    font = new Font(display, data);
-
-                    fonts.put(baseFont, font);
-                }
-                return font;
-            }
-
-            return JFaceResources.getDialogFont();
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-         */
-        public Image getImage(Object element) {
-            if (element instanceof ColorDefinition) {
-                Color c = colorRegistry
-                        .get(((ColorDefinition) element).getId());
-                Image image = (Image) images.get(c);
-                if (image == null) {
-                    Display display = tree.getDisplay();
-                    ensureImageSize();
-                    //int size = presentationList.getControl().getFont().getFontData()[0].getHeight();
-                    image = new Image(display, imageSize, imageSize);
-
-                    GC gc = new GC(image);
-                    gc.setBackground(tree.getViewer().getControl()
-                            .getBackground());
-                    gc.setForeground(tree.getViewer().getControl()
-                            .getBackground());
-                    gc.drawRectangle(0, 0, imageSize - 1, imageSize - 1);
-
-                    gc.setForeground(tree.getViewer().getControl()
-                            .getForeground());
-                    gc.setBackground(c);
-
-                    int offset = (imageSize - usableImageSize) / 2;
-                    gc.drawRectangle(offset, offset, usableImageSize - offset,
-                            usableImageSize - offset);
-                    gc.fillRectangle(offset + 1, offset + 1, usableImageSize
-                            - offset - 1, usableImageSize - offset - 1);
-                    gc.dispose();
-
-                    images.put(c, image);
-                }
-                return image;
-
-            } else if (element instanceof FontDefinition) {
-                return workbench.getSharedImages().getImage(
-                        IWorkbenchGraphicConstants.IMG_OBJ_FONT);
-            } else {
-                return workbench.getSharedImages().getImage(
-                        IWorkbenchGraphicConstants.IMG_OBJ_THEME_CATEGORY);
-            }
-        }
-
-        private void ensureImageSize() {
-            if (imageSize == -1) {
-                imageSize = tree.getViewer().getTree().getItemHeight();
-                usableImageSize = Math.max(1, imageSize - 4);
-            }
-        }
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-         */
-        public String getText(Object element) {
-            if (element instanceof IHierarchalThemeElementDefinition) {
-                IHierarchalThemeElementDefinition themeElement = (IHierarchalThemeElementDefinition) element;
-				if (themeElement
-                        .getDefaultsTo() != null) {
-                    String myCategory = ((ICategorizedThemeElementDefinition) themeElement)
-                            .getCategoryId();
-                    ICategorizedThemeElementDefinition def;
-                    if (element instanceof ColorDefinition) {
-						def = themeRegistry
-                                .findColor(themeElement
-                                        .getDefaultsTo());
-					} else {
-						def = themeRegistry
-                                .findFont(themeElement
-                                        .getDefaultsTo());
-					}
-
-                    if (!ColorsAndFontsPreferencePage.equals(def
-                            .getCategoryId(), myCategory)) {
-                    		if (isDefault(themeElement)) {
-							return MessageFormat
-									.format(
-											RESOURCE_BUNDLE
-													.getString("defaultFormat_default"), new Object[] { themeElement.getName(), def.getName() }); //$NON-NLS-1$
-						}
-                		
-                			return MessageFormat
-							.format(
-									RESOURCE_BUNDLE
-											.getString("defaultFormat_override"), new Object[] { themeElement.getName(), def.getName() }); //$NON-NLS-1$
-                    }
-                }
-            }
-            return ((IThemeElementDefinition) element).getName();
-        }
-
-        /**
-         * Return whether the element is set to default.
-         * 
-         * @param def the definition
-         * @return whether the element is set to default
-         * @since 3.2
-         */
-		private boolean isDefault(IThemeElementDefinition def) {
-			if (def instanceof FontDefinition) {
-				return ColorsAndFontsPreferencePage.this.isDefault((FontDefinition)def);
-			} else if (def instanceof ColorDefinition) {
-				return ColorsAndFontsPreferencePage.this.isDefault((ColorDefinition)def);
-			}
-			return false;
-		}
-    }
-
-    /**
-     * The translation bundle in which to look up internationalized text.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(ColorsAndFontsPreferencePage.class.getName());
-
-    /**
-     * Map to precalculate category color lists.
-     */
-    private Map categoryMap = new HashMap(7);
-
-    private Font appliedDialogFont;
-
-    /**
-     * The composite containing all color-specific controls. 
-     */
-    private Composite colorControls;
-
-    /**
-     * Map of definition id->RGB objects that map to changes expressed in this
-     * UI session.  These changes should be made in preferences and the 
-     * registry.
-     */
-    private Map colorPreferencesToSet = new HashMap(7);
-
-    private CascadingColorRegistry colorRegistry;
-
-    private Button colorResetButton;
-
-    private ColorSelector colorSelector;
-
-    /**
-     * Map of definition id->RGB objects that map to changes expressed in this
-     * UI session.  These changes should be made in the registry.
-     */
-    private Map colorValuesToSet = new HashMap(7);
-
-    /**
-     * The composite that contains the font or color controls (or none).
-     */
-    private Composite controlArea;
-
-    /**
-     * The layout for the controlArea.
-     */
-    private StackLayout controlAreaLayout;
-
-    /**
-     * The composite to use when no preview is available. 
-     */
-    private Composite defaultPreviewControl;
-
-    private Text descriptionText;
-
-    private List dialogFontWidgets = new ArrayList();
-
-    private Button fontChangeButton;
-
-    /**
-     * The composite containing all font-specific controls. 
-     */
-    private Composite fontControls;
-
-    private Map fontPreferencesToSet = new HashMap(7);
-
-    private CascadingFontRegistry fontRegistry;
-
-    private Button fontResetButton;
-
-    private Button fontSystemButton;
-
-    /**
-     * Map of definition id->FontData[] objects that map to changes expressed in 
-     * this UI session.  These changes should be made in preferences and the 
-     * registry.
-     */
-    private Map fontValuesToSet = new HashMap(7);
-
-    /**
-     * The list of fonts and colors.
-     */
-    //private TreeViewer presentationList;
-    /**
-     * The composite that is parent to all previews.
-     */
-    private Composite previewComposite;
-
-    /**
-     * A mapping from PresentationCategory->Composite for the created previews.
-     */
-    private Map previewMap = new HashMap(7);
-
-    /**
-     * Set containing all IPresentationPreviews created. 
-     */
-    private Set previewSet = new HashSet(7);
-
-    /**
-     * The layout for the previewComposite.
-     */
-    private StackLayout stackLayout;
-
-    private final IThemeRegistry themeRegistry;
-
-    private ITheme currentTheme;
-
-    private PresentationLabelProvider labelProvider;
-
-    private CascadingTheme cascadingTheme;
-
-    private IPropertyChangeListener themeChangeListener;
-
-    private Workbench workbench;
-
-    private FilteredTree tree;
-
-    /**
-     * Create a new instance of the receiver. 
-     */
-    public ColorsAndFontsPreferencePage() {
-        themeRegistry = WorkbenchPlugin.getDefault().getThemeRegistry();
-        //no-op
-    }
-
-    private static boolean equals(String string, String string2) {
-        if ((string == null && string2 == null)) {
-			return true;
-		}
-        if (string == null || string2 == null) {
-			return false;
-		}
-        if (string.equals(string2)) {
-			return true;
-		}
-
-        return false;
-    }
-
-    /**
-     * Create a button for the preference page.
-     * @param parent
-     * @param label
-     */
-    private Button createButton(Composite parent, String label) {
-        Button button = new Button(parent, SWT.PUSH | SWT.CENTER);
-        button.setText(label);
-        myApplyDialogFont(button);
-        setButtonLayoutData(button);
-        button.setEnabled(false);
-        return button;
-    }
-
-    /**
-     * Create the color selection control. 
-     */
-    private void createColorControl() {
-        Composite composite = new Composite(colorControls, SWT.NONE);
-        GridLayout layout = new GridLayout(2, false);
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        composite.setLayout(layout);
-
-        colorSelector = new ColorSelector(composite);
-        colorSelector.getButton().setLayoutData(new GridData());
-        myApplyDialogFont(colorSelector.getButton());
-        colorSelector.setEnabled(false);
-
-        colorResetButton = createButton(composite, RESOURCE_BUNDLE
-                .getString("reset")); //$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-     */
-    protected Control createContents(Composite parent) {
-    	
-    	PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
-				IWorkbenchHelpContextIds.FONTS_PREFERENCE_PAGE);
-    	
-        parent.addDisposeListener(new DisposeListener() {
-            public void widgetDisposed(DisposeEvent e) {
-                if (appliedDialogFont != null) {
-					appliedDialogFont.dispose();
-				}
-            }
-        });
-        Composite mainColumn = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        mainColumn.setFont(parent.getFont());
-        mainColumn.setLayout(layout);
-
-        GridData data = new GridData(GridData.BEGINNING);
-        Label label = new Label(mainColumn, SWT.LEFT);
-        label.setText(RESOURCE_BUNDLE.getString("colorsAndFonts")); //$NON-NLS-1$
-        myApplyDialogFont(label);
-        label.setLayoutData(data);
-
-        Composite controlRow = new Composite(mainColumn, SWT.NONE);
-        layout = new GridLayout();
-        layout.numColumns = 2;
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        controlRow.setLayout(layout);
-        data = new GridData(GridData.FILL_HORIZONTAL);
-        controlRow.setLayoutData(data);
-
-        createTree(controlRow);
-        Composite controlColumn = new Composite(controlRow, SWT.NONE);
-        data = new GridData(GridData.FILL_VERTICAL);
-        controlColumn.setLayoutData(data);
-        layout = new GridLayout();
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        controlColumn.setLayout(layout);
-
-        controlArea = new Composite(controlColumn, SWT.NONE);
-        controlAreaLayout = new StackLayout();
-        controlArea.setLayout(controlAreaLayout);
-
-        colorControls = new Composite(controlArea, SWT.NONE);
-        colorControls.setLayout(new FillLayout());
-        createColorControl();
-
-        fontControls = new Composite(controlArea, SWT.NONE);
-        fontControls.setLayout(new FillLayout());
-        createFontControl();
-
-        createDescriptionControl(mainColumn);
-
-        createPreviewControl(mainColumn);
-
-        hookListeners();
-        
-        updateTreeSelection(tree.getViewer().getSelection());
-
-        return mainColumn;
-    }
-
-    /**
-     * Create the text box that will contain the current color/font description 
-     * text (if any).
-     * 
-     * @param parent the parent <code>Composite</code>.
-     */
-    private void createDescriptionControl(Composite parent) {
-        Composite composite = new Composite(parent, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        layout.marginHeight = 0;
-        composite.setLayout(layout);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = convertHeightInCharsToPixels(5);
-        composite.setLayoutData(data);
-
-        Label label = new Label(composite, SWT.LEFT);
-        label.setText(RESOURCE_BUNDLE.getString("description")); //$NON-NLS-1$
-        myApplyDialogFont(label);
-
-        descriptionText = new Text(composite, SWT.H_SCROLL | SWT.V_SCROLL
-                | SWT.READ_ONLY | SWT.BORDER | SWT.WRAP);
-        data = new GridData(GridData.FILL_BOTH);
-        descriptionText.setLayoutData(data);
-        myApplyDialogFont(descriptionText);
-    }
-
-    private void createFontControl() {
-        Composite composite = new Composite(fontControls, SWT.NONE);
-        GridLayout layout = new GridLayout(1, false);
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        composite.setLayout(layout);
-
-        fontSystemButton = createButton(composite, WorkbenchMessages.FontsPreference_useSystemFont);
-
-        fontChangeButton = createButton(composite, JFaceResources
-                .getString("openChange")); //$NON-NLS-1$
-
-        fontResetButton = createButton(composite, RESOURCE_BUNDLE
-                .getString("reset")); //$NON-NLS-1$
-    }
-
-    /**
-     * Create the <code>ListViewer</code> that will contain all color 
-     * definitions as defined in the extension point.
-     * 
-     * @param parent the parent <code>Composite</code>.
-     */
-    private void createTree(Composite parent) {
-        labelProvider = new PresentationLabelProvider();
-        // create a new tree with a custom pattern matcher that will allow
-        // non-category elements to be returned in the event that their children
-        // do not
-        tree = new FilteredTree(parent, SWT.SINGLE | SWT.H_SCROLL
-                | SWT.V_SCROLL | SWT.BORDER, new PatternFilter() {
-            
-            /* (non-Javadoc)
-             * @see org.eclipse.ui.dialogs.PatternFilter#isParentMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object)
-             */
-            protected boolean isParentMatch(Viewer viewer, Object element) {
-                Object[] children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer)
-                        .getContentProvider()).getChildren(element);
-                if (children.length > 0
-                        && element instanceof ThemeElementCategory) {
-					return filter(viewer, element, children).length > 0;
-				}
-                return false;
-            }
-        });
-
-        GridData data = new GridData(GridData.FILL_HORIZONTAL
-                | GridData.VERTICAL_ALIGN_FILL);
-        data.heightHint = Math.max(175, convertHeightInCharsToPixels(10));
-        tree.setLayoutData(data);
-        myApplyDialogFont(tree.getViewer().getControl());
-        Text filterText = tree.getFilterControl();
-        if (filterText != null) {
-			myApplyDialogFont(filterText);
-		}
-
-        tree.getViewer().setLabelProvider(labelProvider);
-        tree.getViewer().setContentProvider(new ThemeContentProvider());
-        tree.getViewer().setComparator(new ViewerComparator() {
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.viewers.ViewerComparator#category(java.lang.Object)
-             */
-            public int category(Object element) {
-                if (element instanceof ThemeElementCategory) {
-					return 0;
-				}
-                return 1;
-            }
-        });
-        tree.getViewer().setInput(
-                WorkbenchPlugin.getDefault().getThemeRegistry());
-        tree.getViewer().addDoubleClickListener(new IDoubleClickListener() {
-            /*
-             * (non-Javadoc)
-             * 
-             * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-             */
-            public void doubleClick(DoubleClickEvent event) {
-                IStructuredSelection s = (IStructuredSelection) event
-                        .getSelection();
-                Object element = s.getFirstElement();
-                if (tree.getViewer().isExpandable(element)) {
-                    tree.getViewer().setExpandedState(element,
-                            !tree.getViewer().getExpandedState(element));
-                }
-                
-                if (element instanceof FontDefinition) {
-                		editFont(tree.getDisplay());
-                }
-                else if (element instanceof ColorDefinition) {
-                		colorSelector.open();
-                }
-            }
-        });
-        
-        // disable conventional tooltips
-        tree.getViewer().getTree().setToolTipText(""); //$NON-NLS-1$
-        new DefaultToolTip(tree.getViewer().getControl(), ToolTip.NO_RECREATE, false) {
-        	
-        	/* (non-Javadoc)
-        	 * @see org.eclipse.jface.window.DefaultToolTip#getText(org.eclipse.swt.widgets.Event)
-        	 */
-        	protected String getText(Event event) {
-				Object o = getHoveredElement(event);
-
-				if (o instanceof FontDefinition) {
-					FontData[] fontData = fontRegistry
-							.getFontData(((FontDefinition) o).getId());
-					StringBuffer fontTextBuffer = new StringBuffer();
-					for (int i = 0; i < fontData.length; i++) {
-						formatFontData(fontTextBuffer, fontData[i]);
-						if (i != fontData.length - 1)
-							fontTextBuffer.append('\n');
-					}
-					return fontTextBuffer.toString();
-				} else if (o instanceof ColorDefinition) {
-					RGB rgb = colorRegistry.getRGB(((ColorDefinition) o)
-							.getId());
-
-					return MessageFormat
-							.format(
-									"{0}, {1}, {2}", new Object[] { new Integer(rgb.red), new Integer(rgb.green), new Integer(rgb.blue) }); //$NON-NLS-1$
-
-				}
-				return labelProvider.getText(o);
-			}
-        	
-        	/* (non-Javadoc)
-        	 * @see org.eclipse.jface.window.ToolTip#shouldCreateToolTip(org.eclipse.swt.widgets.Event)
-        	 */
-        	protected boolean shouldCreateToolTip(Event event) {
-        		return (getHoveredElement(event) != null && super.shouldCreateToolTip(event));
-        	}
-
-			private Object getHoveredElement(Event event) {
-				TreeItem item = tree.getViewer().getTree().getItem(
-						new Point(event.x, event.y));
-				if (item != null)
-					return item.getData();
-				return null;
-			}
-        
-			private void formatFontData(StringBuffer buffer, FontData fontData) {
-				buffer.append(fontData.getName());
-				buffer.append(' ');
-				buffer.append(fontData.getHeight());				
-			}};
-			
-        restoreTreeExpansion();
-        restoreTreeSelection();
-    }
-
-    private void createPreviewControl(Composite mainColumn) {
-        Composite composite = new Composite(mainColumn, SWT.NONE);
-        GridData data = new GridData(GridData.FILL_BOTH);
-        data.heightHint = 175;
-        composite.setLayoutData(data);
-        GridLayout layout = new GridLayout(1, true);
-        layout.marginHeight = 0;
-        layout.marginWidth = 0;
-        composite.setLayout(layout);
-
-        Label label = new Label(composite, SWT.LEFT);
-        label.setText(RESOURCE_BUNDLE.getString("preview")); //$NON-NLS-1$
-        myApplyDialogFont(label);
-        previewComposite = new Composite(composite, SWT.NONE);
-        data = new GridData(GridData.FILL_BOTH);
-        previewComposite.setLayoutData(data);
-        stackLayout = new StackLayout();
-        previewComposite.setLayout(stackLayout);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.dialogs.IDialogPage#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-
-        workbench.getThemeManager().removePropertyChangeListener(
-                themeChangeListener);
-
-        clearPreviews();
-
-        colorRegistry.dispose();
-        fontRegistry.dispose();
-
-    }
-
-    /**
-     * Clear all previews.
-     */
-    private void clearPreviews() {
-        if (cascadingTheme != null) {
-			cascadingTheme.dispose();
-		}
-
-        for (Iterator i = previewSet.iterator(); i.hasNext();) {
-            IThemePreview preview = (IThemePreview) i.next();
-            try {
-                preview.dispose();
-            } catch (RuntimeException e) {
-                WorkbenchPlugin
-                        .log(
-                                RESOURCE_BUNDLE
-                                        .getString("errorDisposePreviewLog"), StatusUtil.newStatus(IStatus.ERROR, e.getMessage(), e)); //$NON-NLS-1$
-            }
-        }
-
-        previewSet.clear();
-    }
-
-    /**
-     * Get the ancestor of the given color, if any.
-     * 
-     * @param definition the descendant <code>ColorDefinition</code>.
-     * @return the ancestor <code>ColorDefinition</code>, or <code>null</code> 
-     * 		if none.
-     */
-    private ColorDefinition getColorAncestor(ColorDefinition definition) {
-        String defaultsTo = definition.getDefaultsTo();
-        if (defaultsTo == null) {
-			return null;
-		}
-
-        return themeRegistry.findColor(defaultsTo);
-    }
-
-    /**
-     * Get the RGB value of the given colors ancestor, if any.
-     * 
-     * @param definition the descendant <code>ColorDefinition</code>.
-     * @return the ancestor <code>RGB</code>, or <code>null</code> if none.
-     */
-    private RGB getColorAncestorValue(ColorDefinition definition) {
-        ColorDefinition ancestor = getColorAncestor(definition);
-        if (ancestor == null) {
-			return null;
-		}
-
-        return getColorValue(ancestor);
-    }
-
-    /**
-     * Get the RGB value for the specified definition.  Cascades through 
-     * preferenceToSet, valuesToSet and finally the registry.
-     * 
-     * @param definition the <code>ColorDefinition</code>.
-     * @return the <code>RGB</code> value.
-     */
-    private RGB getColorValue(ColorDefinition definition) {
-        String id = definition.getId();
-        RGB updatedRGB = (RGB) colorPreferencesToSet.get(id);
-        if (updatedRGB == null) {
-            updatedRGB = (RGB) colorValuesToSet.get(id);
-            if (updatedRGB == null) {
-				updatedRGB = currentTheme.getColorRegistry().getRGB(id);
-			}
-        }
-        return updatedRGB;
-    }
-
-    /**
-     * @return Return the default "No preview available." preview.
-     */
-    private Composite getDefaultPreviewControl() {
-        if (defaultPreviewControl == null) {
-            defaultPreviewControl = new Composite(previewComposite, SWT.NONE);
-            defaultPreviewControl.setLayout(new FillLayout());
-            Label l = new Label(defaultPreviewControl, SWT.LEFT);
-            l.setText(RESOURCE_BUNDLE.getString("noPreviewAvailable")); //$NON-NLS-1$
-            myApplyDialogFont(l);
-        }
-        return defaultPreviewControl;
-    }
-
-    /**
-     * Get colors that descend from the provided color.
-     * 
-     * @param definition the ancestor <code>ColorDefinition</code>.
-     * @return the ColorDefinitions that have the provided definition as their 
-     * 		defaultsTo attribute.
-     */
-    private ColorDefinition[] getDescendantColors(ColorDefinition definition) {
-        List list = new ArrayList(5);
-        String id = definition.getId();
-
-        ColorDefinition[] colors = themeRegistry.getColors();
-        ColorDefinition[] sorted = new ColorDefinition[colors.length];
-        System.arraycopy(colors, 0, sorted, 0, sorted.length);
-
-        Arrays.sort(sorted, new IThemeRegistry.HierarchyComparator(colors));
-
-        for (int i = 0; i < sorted.length; i++) {
-            if (id.equals(sorted[i].getDefaultsTo())) {
-				list.add(sorted[i]);
-			}
-        }
-
-        return (ColorDefinition[]) list
-                .toArray(new ColorDefinition[list.size()]);
-    }
-
-    private FontDefinition[] getDescendantFonts(FontDefinition definition) {
-        List list = new ArrayList(5);
-        String id = definition.getId();
-
-        FontDefinition[] fonts = themeRegistry.getFonts();
-        FontDefinition[] sorted = new FontDefinition[fonts.length];
-        System.arraycopy(fonts, 0, sorted, 0, sorted.length);
-
-        Arrays.sort(sorted, new IThemeRegistry.HierarchyComparator(fonts));
-
-        for (int i = 0; i < sorted.length; i++) {
-            if (id.equals(sorted[i].getDefaultsTo())) {
-				list.add(sorted[i]);
-			}
-        }
-
-        return (FontDefinition[]) list.toArray(new FontDefinition[list.size()]);
-    }
-
-    private FontDefinition getFontAncestor(FontDefinition definition) {
-        String defaultsTo = definition.getDefaultsTo();
-        if (defaultsTo == null) {
-			return null;
-		}
-
-        return themeRegistry.findFont(defaultsTo);
-    }
-
-    private FontData[] getFontAncestorValue(FontDefinition definition) {
-        FontDefinition ancestor = getFontAncestor(definition);
-        if (ancestor == null) {
-			return PreferenceConverter.getDefaultFontDataArray(
-                    getPreferenceStore(), ThemeElementHelper
-                            .createPreferenceKey(currentTheme, definition
-                                    .getId()));
-		}
-
-        return getFontValue(ancestor);
-    }
-
-    protected FontData[] getFontValue(FontDefinition definition) {
-        String id = definition.getId();
-        FontData[] updatedFD = (FontData[]) fontPreferencesToSet.get(id);
-        if (updatedFD == null) {
-            updatedFD = (FontData[]) fontValuesToSet.get(id);
-            if (updatedFD == null) {
-				updatedFD = currentTheme.getFontRegistry().getFontData(id);
-			}
-        }
-        return updatedFD;
-    }
-
-    protected ColorDefinition getSelectedColorDefinition() {
-        Object o = ((IStructuredSelection) tree.getViewer().getSelection())
-                .getFirstElement();
-        if (o instanceof ColorDefinition) {
-			return (ColorDefinition) o;
-		}
-        return null;
-    }
-
-    protected FontDefinition getSelectedFontDefinition() {
-        Object o = ((IStructuredSelection) tree.getViewer().getSelection())
-                .getFirstElement();
-        if (o instanceof FontDefinition) {
-			return (FontDefinition) o;
-		}
-        return null;
-    }
-
-    /**
-     * Hook all control listeners.
-     */
-    private void hookListeners() {
-        colorSelector.addListener(new IPropertyChangeListener() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-             */
-            public void propertyChange(PropertyChangeEvent event) {
-                ColorDefinition definition = getSelectedColorDefinition();
-
-                RGB newRGB = (RGB) event.getNewValue();
-                if (definition != null && newRGB != null
-                        && !newRGB.equals(event.getOldValue())) {
-                    setColorPreferenceValue(definition, newRGB);
-                    setRegistryValue(definition, newRGB);
-                }
-
-                updateColorControls(definition);
-            }
-        });
-
-        TreeViewer viewer = tree.getViewer();
-		viewer.addSelectionChangedListener(
-                new ISelectionChangedListener() {
-
-                    /* (non-Javadoc)
-                     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-                     */
-                    public void selectionChanged(SelectionChangedEvent event) {
-                        updateTreeSelection(event.getSelection());
-                    }
-                });
-
-        colorResetButton.addSelectionListener(new SelectionAdapter() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-                ColorDefinition definition = getSelectedColorDefinition();
-                if (resetColor(definition)) {
-					updateColorControls(definition);
-				}
-            }
-        });
-
-        fontResetButton.addSelectionListener(new SelectionAdapter() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-             */
-            public void widgetSelected(SelectionEvent e) {
-                FontDefinition definition = getSelectedFontDefinition();
-                if (resetFont(definition)) {
-					updateFontControls(definition);
-				}
-            }
-        });
-
-        fontChangeButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent event) {
-            	Display display = event.display;
-            	editFont(display);
-            }
-        });
-
-        fontSystemButton.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent event) {
-                FontDefinition definition = getSelectedFontDefinition();
-                if (definition != null) {
-                    FontData[] defaultFontData = JFaceResources
-                            .getDefaultFont().getFontData();
-                    setFontPreferenceValue(definition, defaultFontData);
-                    setRegistryValue(definition, defaultFontData);
-
-                    updateFontControls(definition);
-                }
-            }
-        });
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-     */
-    public void init(IWorkbench aWorkbench) {
-        this.workbench = (Workbench) aWorkbench;
-        setPreferenceStore(PrefUtil.getInternalPreferenceStore());
-
-        final IThemeManager themeManager = aWorkbench.getThemeManager();
-
-        themeChangeListener = new IPropertyChangeListener() {
-
-            /* (non-Javadoc)
-             * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-             */
-            public void propertyChange(PropertyChangeEvent event) {
-                if (event.getProperty().equals(
-                        IThemeManager.CHANGE_CURRENT_THEME)) {
-                    updateThemeInfo(themeManager);
-                    refreshCategory();
-                    tree.getViewer().refresh(); // refresh all the labels in the tree
-                }
-            }
-        };
-        themeManager.addPropertyChangeListener(themeChangeListener);
-
-        updateThemeInfo(themeManager);
-    }
-
-    private void updateThemeInfo(IThemeManager manager) {
-        clearPreviews();
-        categoryMap.clear();
-
-        if (labelProvider != null) {
-			labelProvider.dispose(); // nuke the old cache
-		}
-
-        currentTheme = manager.getCurrentTheme();
-
-        if (colorRegistry != null) {
-			colorRegistry.dispose();
-		}
-        if (fontRegistry != null) {
-			fontRegistry.dispose();
-		}
-
-        currentTheme = manager.getCurrentTheme();
-
-        colorRegistry = new CascadingColorRegistry(currentTheme
-                .getColorRegistry());
-        fontRegistry = new CascadingFontRegistry(currentTheme.getFontRegistry());
-
-        fontPreferencesToSet.clear();
-        fontValuesToSet.clear();
-
-        colorPreferencesToSet.clear();
-        colorValuesToSet.clear();
-
-        if (labelProvider != null) {
-			labelProvider.hookListeners(); // rehook the listeners	    
-		}
-    }
-
-    /**
-     * Answers whether the definition is currently set to the default value.
-     * 
-     * @param definition the <code>ColorDefinition</code> to check.
-     * @return Return whether the definition is currently mapped to the default 
-     * 		value, either in the preference store or in the local change record 
-     * 		of this preference page.
-     */
-    private boolean isDefault(ColorDefinition definition) {
-        String id = definition.getId();
-
-        if (colorPreferencesToSet.containsKey(id)) {
-            if (definition.getValue() != null) { // value-based color
-                if (colorPreferencesToSet.get(id).equals(definition.getValue())) {
-					return true;
-				}
-            } else {
-                if (colorPreferencesToSet.get(id).equals(
-                        getColorAncestorValue(definition))) {
-					return true;
-				}
-            }
-        } else {
-            if (definition.getValue() != null) { // value-based color
-                if (getPreferenceStore().isDefault(
-                        ThemeElementHelper
-                                .createPreferenceKey(currentTheme, id))) {
-					return true;
-				}
-            } else {
-                // a descendant is default if it's the same value as its ancestor
-                if (getColorValue(definition).equals(
-                        getColorAncestorValue(definition))) {
-					return true;
-				}
-            }
-        }
-        return false;
-    }
-
-    private boolean isDefault(FontDefinition definition) {
-        String id = definition.getId();
-
-        if (fontPreferencesToSet.containsKey(id)) {
-            if (definition.getValue() != null) { // value-based font
-                if (Arrays.equals((FontData[]) fontPreferencesToSet.get(id),
-                        definition.getValue())) {
-					return true;
-				}
-            } else {
-                FontData[] ancestor = getFontAncestorValue(definition);
-                if (Arrays.equals((FontData[]) fontPreferencesToSet.get(id),
-                        ancestor)) {
-					return true;
-				}
-            }
-        } else {
-            if (definition.getValue() != null) { // value-based font
-                if (getPreferenceStore().isDefault(
-                        ThemeElementHelper
-                                .createPreferenceKey(currentTheme, id))) {
-					return true;
-				}
-            } else {
-                FontData[] ancestor = getFontAncestorValue(definition);
-                if (ancestor == null) {
-					return true;
-				}
-
-                // a descendant is default if it's the same value as its ancestor
-                if (Arrays.equals(getFontValue(definition), ancestor)) {
-					return true;
-				}
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Apply the dialog font to the control and store 
-     * it for later so that it can be used for a later
-     * update.
-     * @param control
-     */
-    private void myApplyDialogFont(Control control) {
-        control.setFont(JFaceResources.getDialogFont());
-        dialogFontWidgets.add(control);
-    }
-
-    /**
-     * @see org.eclipse.jface.preference.PreferencePage#performApply()
-     */
-    protected void performApply() {
-        super.performApply();
-
-        //Apply the default font to the dialog.
-        Font oldFont = appliedDialogFont;
-
-        FontDefinition fontDefinition = themeRegistry
-                .findFont(JFaceResources.DIALOG_FONT);
-        if (fontDefinition == null) {
-			return;
-		}
-
-        FontData[] newData = getFontValue(fontDefinition);
-
-        appliedDialogFont = new Font(getControl().getDisplay(), newData);
-
-        updateForDialogFontChange(appliedDialogFont);
-        getApplyButton().setFont(appliedDialogFont);
-        getDefaultsButton().setFont(appliedDialogFont);
-
-        if (oldFont != null) {
-			oldFont.dispose();
-		}
-    }
-
-    private void performColorDefaults() {
-        ColorDefinition[] definitions = themeRegistry.getColors();
-
-        // apply defaults in depth-order.
-        ColorDefinition[] definitionsCopy = new ColorDefinition[definitions.length];
-        System
-                .arraycopy(definitions, 0, definitionsCopy, 0,
-                        definitions.length);
-
-        Arrays.sort(definitionsCopy, new IThemeRegistry.HierarchyComparator(
-                definitions));
-
-        for (int i = 0; i < definitionsCopy.length; i++) {
-			resetColor(definitionsCopy[i]);
-		}
-
-        updateColorControls(getSelectedColorDefinition());
-    }
-
-    private boolean performColorOk() {
-        for (Iterator i = colorPreferencesToSet.keySet().iterator(); i
-                .hasNext();) {
-            String id = (String) i.next();
-            String key = ThemeElementHelper.createPreferenceKey(currentTheme,
-                    id);
-            RGB rgb = (RGB) colorPreferencesToSet.get(id);
-            String rgbString = StringConverter.asString(rgb);
-            String storeString = getPreferenceStore().getString(key);
-
-            if (!rgbString.equals(storeString)) {
-                getPreferenceStore().setValue(key, rgbString);
-            }
-        }
-
-        colorValuesToSet.clear();
-        colorPreferencesToSet.clear();
-        
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
-     */
-    protected void performDefaults() {
-        performColorDefaults();
-        performFontDefaults();
-    }
-
-    private void performFontDefaults() {
-        FontDefinition[] definitions = themeRegistry.getFonts();
-
-        // apply defaults in depth-order.
-        FontDefinition[] definitionsCopy = new FontDefinition[definitions.length];
-        System
-                .arraycopy(definitions, 0, definitionsCopy, 0,
-                        definitions.length);
-
-        Arrays.sort(definitionsCopy, new IThemeRegistry.HierarchyComparator(
-                definitions));
-
-        for (int i = 0; i < definitionsCopy.length; i++) {
-			resetFont(definitionsCopy[i]);
-		}
-
-        updateFontControls(getSelectedFontDefinition());
-    }
-
-    private boolean performFontOk() {
-        for (Iterator i = fontPreferencesToSet.keySet().iterator(); i.hasNext();) {
-            String id = (String) i.next();
-            String key = ThemeElementHelper.createPreferenceKey(currentTheme,
-                    id);
-            FontData[] fd = (FontData[]) fontPreferencesToSet.get(id);
-
-            String fdString = PreferenceConverter.getStoredRepresentation(fd);
-            String storeString = getPreferenceStore().getString(key);
-
-            if (!fdString.equals(storeString)) {
-                getPreferenceStore().setValue(key, fdString);
-            }
-        }
-
-        fontValuesToSet.clear();
-        fontPreferencesToSet.clear();
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.IPreferencePage#performOk()
-     */
-    public boolean performOk() {
-    	saveTreeExpansion();
-    	saveTreeSelection();
-        boolean result =  performColorOk() && performFontOk();
-        if(result) {
-			PrefUtil.savePrefs();
-		}
-        return result;
-    }
-
-    /**
-     * Refreshes the category.
-     */
-    private void refreshCategory() {
-        updateColorControls(null);
-        updateFontControls(null);
-    }
-
-    /**
-     * Resets the supplied definition to its default value.
-     * 
-     * @param definition the <code>ColorDefinition</code> to reset.
-     * @return whether any change was made.
-     */
-    private boolean resetColor(ColorDefinition definition) {
-        if (!isDefault(definition)) {
-
-            RGB newRGB;
-            if (definition.getValue() != null) {
-                newRGB = definition.getValue();
-            } else {
-                newRGB = getColorAncestorValue(definition);
-            }
-
-            if (newRGB != null) {
-                setColorPreferenceValue(definition, newRGB);
-                setRegistryValue(definition, newRGB);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    protected boolean resetFont(FontDefinition definition) {
-        if (!isDefault(definition)) {
-
-            FontData[] newFD;
-            if (definition.getDefaultsTo() != null) {
-                newFD = getFontAncestorValue(definition);
-            } else {
-                newFD = PreferenceConverter.getDefaultFontDataArray(
-                        getPreferenceStore(), ThemeElementHelper
-                                .createPreferenceKey(currentTheme, definition
-                                        .getId()));
-            }
-
-            if (newFD != null) {
-                setFontPreferenceValue(definition, newFD);
-                setRegistryValue(definition, newFD);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Set the value (in preferences) for the given color.  
-     * 
-     * @param definition the <code>ColorDefinition</code> to set.
-     * @param newRGB the new <code>RGB</code> value for the definitions 
-     * 		identifier.
-     */
-    protected void setColorPreferenceValue(ColorDefinition definition,
-            RGB newRGB) {
-        setDescendantRegistryValues(definition, newRGB);
-        colorPreferencesToSet.put(definition.getId(), newRGB);
-    }
-
-    /**
-     * Set the value (in registry) for the given colors children.  
-     * 
-     * @param definition the <code>ColorDefinition</code> whose children should 
-     * 		be set.
-     * @param newRGB the new <code>RGB</code> value for the definitions 
-     * 		identifier.
-     */
-    private void setDescendantRegistryValues(ColorDefinition definition,
-            RGB newRGB) {
-        ColorDefinition[] children = getDescendantColors(definition);
-
-        for (int i = 0; i < children.length; i++) {
-            if (isDefault(children[i])) {
-                setDescendantRegistryValues(children[i], newRGB);
-                setRegistryValue(children[i], newRGB);
-                colorValuesToSet.put(children[i].getId(), newRGB);
-            }
-        }
-    }
-
-    private void setDescendantRegistryValues(FontDefinition definition,
-            FontData[] datas) {
-        FontDefinition[] children = getDescendantFonts(definition);
-
-        for (int i = 0; i < children.length; i++) {
-            if (isDefault(children[i])) {
-                setDescendantRegistryValues(children[i], datas);
-                setRegistryValue(children[i], datas);
-                fontValuesToSet.put(children[i].getId(), datas);
-            }
-        }
-    }
-
-    protected void setFontPreferenceValue(FontDefinition definition,
-            FontData[] datas) {
-        setDescendantRegistryValues(definition, datas);
-        fontPreferencesToSet.put(definition.getId(), datas);
-    }
-
-    /**
-     * Updates the working registry.
-     * @param definition
-     * @param newRGB
-     */
-    protected void setRegistryValue(ColorDefinition definition, RGB newRGB) {
-        colorRegistry.put(definition.getId(), newRGB);
-    }
-
-    protected void setRegistryValue(FontDefinition definition, FontData[] datas) {
-        fontRegistry.put(definition.getId(), datas);
-    }
-
-    /**
-     * Swap in the color selection controls.
-     */
-    protected void swapColorControls() {
-        controlAreaLayout.topControl = colorControls;
-        controlArea.layout();
-    }
-
-    /**
-     * Swap in the font selection controls.
-     */
-    protected void swapFontControls() {
-        controlAreaLayout.topControl = fontControls;
-        controlArea.layout();
-    }
-
-    /**
-     * Swap in no controls (empty the control area)
-     */
-    protected void swapNoControls() {
-        controlAreaLayout.topControl = null;
-        controlArea.layout();
-    }
-
-    /**
-     * Set the color list.
-     * @param category the category to use.
-     */
-    private void updateCategorySelection(ThemeElementCategory category) {
-
-        Composite previewControl = (Composite) previewMap.get(category);
-        if (previewControl == null) {
-            if (category != null) {
-                try {
-                    IThemePreview preview = getThemePreview(category);
-                    if (preview != null) {
-                        previewControl = new Composite(previewComposite,
-                                SWT.NONE);
-                        previewControl.setLayout(new FillLayout());
-                        ITheme theme = getCascadingTheme();
-                        preview.createControl(previewControl, theme);
-                        previewSet.add(preview);
-                    }
-                } catch (CoreException e) {
-                    previewControl = new Composite(previewComposite, SWT.NONE);
-                    previewControl.setLayout(new FillLayout());
-                    myApplyDialogFont(previewControl);
-                    Text error = new Text(previewControl, SWT.WRAP
-                            | SWT.READ_ONLY);
-                    error.setText(RESOURCE_BUNDLE
-                            .getString("errorCreatingPreview")); //$NON-NLS-1$
-                    WorkbenchPlugin
-                            .log(
-                                    RESOURCE_BUNDLE
-                                            .getString("errorCreatePreviewLog"), StatusUtil.newStatus(IStatus.ERROR, e.getMessage(), e)); //$NON-NLS-1$
-                }
-            }
-        }
-        if (previewControl == null) {
-            previewControl = getDefaultPreviewControl();
-        }
-        previewMap.put(category, previewControl);
-        stackLayout.topControl = previewControl;
-        previewComposite.layout();
-    }
-
-    /**
-     * Returns the preview for the category.
-     * @param category the category
-     * @return the preview for the category, or its ancestors preview if it does not have one.
-     */
-    private IThemePreview getThemePreview(ThemeElementCategory category)
-            throws CoreException {
-        IThemePreview preview = category.createPreview();
-        if (preview != null) {
-			return preview;
-		}
-
-        if (category.getParentId() != null) {
-            int idx = Arrays.binarySearch(themeRegistry.getCategories(),
-                    category.getParentId(), IThemeRegistry.ID_COMPARATOR);
-            if (idx >= 0) {
-				return getThemePreview(themeRegistry.getCategories()[idx]);
-			}
-        }
-
-        return null;
-    }
-
-    private ITheme getCascadingTheme() {
-        if (cascadingTheme == null) {
-			cascadingTheme = new CascadingTheme(currentTheme, colorRegistry,
-                    fontRegistry);
-		}
-        return cascadingTheme;
-    }
-
-    /**
-     * Update the color controls based on the supplied definition.
-     * 
-     * @param definition The currently selected <code>ColorDefinition</code>.
-     */
-    protected void updateColorControls(ColorDefinition definition) {
-        if (definition == null) {
-            colorResetButton.setEnabled(false);
-            colorSelector.setEnabled(false);
-            descriptionText.setText(""); //$NON-NLS-1$
-            return;
-        }
-
-        colorSelector.setColorValue(getColorValue(definition));
-
-        colorResetButton.setEnabled(!isDefault(definition));
-        colorSelector.setEnabled(true);
-        String description = definition.getDescription();
-        descriptionText.setText(description == null ? "" : description); //$NON-NLS-1$		
-    }
-
-    protected void updateFontControls(FontDefinition definition) {
-        if (definition == null) {
-            fontSystemButton.setEnabled(false);
-            fontResetButton.setEnabled(false);
-            fontChangeButton.setEnabled(false);
-            descriptionText.setText(""); //$NON-NLS-1$
-            return;
-        }
-
-        fontSystemButton.setEnabled(true);
-        fontResetButton.setEnabled(!isDefault(definition));
-        fontChangeButton.setEnabled(true);
-        String description = definition.getDescription();
-        descriptionText.setText(description == null ? "" : description); //$NON-NLS-1$		
-    }
-
-    /**
-     * Update for a change in the dialog font.
-     * @param newFont
-     */
-    private void updateForDialogFontChange(Font newFont) {
-        Iterator iterator = dialogFontWidgets.iterator();
-        while (iterator.hasNext()) {
-            ((Control) iterator.next()).setFont(newFont);
-        }
-
-        //recalculate the fonts for the tree
-        labelProvider.clearFontCacheAndUpdate();
-    }
-    
-    private void updateTreeSelection(ISelection selection) {
-		if (selection.isEmpty()) {
-		    swapNoControls();
-		    updateColorControls(null);
-		    updateCategorySelection(null);
-		} else {
-		    Object element = ((IStructuredSelection) selection).getFirstElement();
-		    if (element instanceof ThemeElementCategory) {
-		        swapNoControls();
-		        String description = ((ThemeElementCategory) element)
-		                .getDescription();
-		        descriptionText
-		                .setText(description == null ? "" : description); //$NON-NLS-1$
-		        updateCategorySelection((ThemeElementCategory) element);
-		    } else if (element instanceof ColorDefinition) {
-		        updateColorControls((ColorDefinition) element);
-		        swapColorControls();
-		        updateCategorySelection(WorkbenchPlugin
-		                .getDefault().getThemeRegistry()
-		                .findCategory(
-		                        ((ColorDefinition) element)
-		                                .getCategoryId()));
-		    } else if (element instanceof FontDefinition) {
-		        updateFontControls((FontDefinition) element);
-		        swapFontControls();
-		        updateCategorySelection(WorkbenchPlugin
-		                .getDefault().getThemeRegistry()
-		                .findCategory(
-		                        ((FontDefinition) element)
-		                                .getCategoryId()));
-		    }
-		}
-	}
-
-    /**
-	 * Restore the selection state of the tree.
-	 * 
-	 * @since 3.1
-	 */
-	private void restoreTreeSelection() {
-		String selectedElementString = getPreferenceStore().getString(
-				SELECTED_ELEMENT_PREF);
-
-		if (selectedElementString == null) {
-			return;
-		}
-
-		Object element = findElementFromMarker(selectedElementString);
-		if (element == null) {
-			return;
-		}
-
-		tree.getViewer().setSelection(new StructuredSelection(element), true);
-	}
-
-	/**
-	 * Save the selection state of the tree.
-	 *
-	 * @since 3.1
-	 */
-	private void saveTreeSelection() {
-		IStructuredSelection selection = (IStructuredSelection) tree
-				.getViewer().getSelection();
-		Object element = selection.getFirstElement();
-		StringBuffer buffer = new StringBuffer();
-		appendMarkerToBuffer(buffer, element);
-		if (buffer.length() > 0) {
-			buffer.append(((IThemeElementDefinition) element).getId());
-		}
-		getPreferenceStore().setValue(SELECTED_ELEMENT_PREF, buffer.toString());
-	}
-
-	/**
-	 * Restore the expansion state of the tree.
-	 * 
-	 * @since 3.1
-	 */
-	private void restoreTreeExpansion() {
-		String expandedElementsString = getPreferenceStore().getString(
-				EXPANDED_ELEMENTS_PREF);
-		if (expandedElementsString == null) {
-			return;
-		}
-
-		String[] expandedElementIDs = Util.getArrayFromList(expandedElementsString, EXPANDED_ELEMENTS_TOKEN);
-		if (expandedElementIDs.length == 0) {
-			return;
-		}
-
-		List elements = new ArrayList(expandedElementIDs.length);
-		for (int i = 0; i < expandedElementIDs.length; i++) {
-			IThemeElementDefinition def = findElementFromMarker(expandedElementIDs[i]);
-
-			if (def != null) {
-				elements.add(def);
-			}
-		}
-		tree.getViewer().setExpandedElements(elements.toArray());
-	}
-
-	/**
-	 * Find the theme element from the given string. It will check the first
-	 * character against the known constants and then call the appropriate
-	 * method on the theme registry. If the element does not exist or the string
-	 * is invalid <code>null</code> is returned.
-	 * 
-	 * @param string the string to parse
-	 * @return the element, or <code>null</code>
-	 */
-	private IThemeElementDefinition findElementFromMarker(String string) {
-		if (string.length() < 2) {
-			return null;
-		}
-
-		char marker = string.charAt(0);
-		String id = string.substring(1);
-		IThemeElementDefinition def = null;
-		switch (marker) {
-		case MARKER_FONT:
-			def = themeRegistry.findFont(id);
-			break;
-		case MARKER_COLOR:
-			def = themeRegistry.findColor(id);
-			break;
-		case MARKER_CATEGORY:
-			def = themeRegistry.findCategory(id);
-			break;
-		}
-		return def;
-	}
-
-	/**
-	 * Saves the expansion state of the tree.
-	 * 
-	 * @since 3.1
-	 */
-	private void saveTreeExpansion() {
-		Object[] elements = tree.getViewer().getExpandedElements();
-		List elementIds = new ArrayList(elements.length);
-
-		StringBuffer buffer = new StringBuffer();
-		for (int i = 0; i < elements.length; i++) {
-			Object object = elements[i];
-			appendMarkerToBuffer(buffer, object);
-
-			if (buffer.length() != 0) {
-				buffer.append(((IThemeElementDefinition) object).getId());
-				elementIds.add(buffer.toString());
-			}
-			buffer.setLength(0);
-		}
-
-		for (Iterator i = elementIds.iterator(); i.hasNext();) {
-			String id = (String) i.next();
-			buffer.append(id);
-			if (i.hasNext()) {
-				buffer.append(EXPANDED_ELEMENTS_TOKEN);
-			}
-		}
-
-		getPreferenceStore()
-				.setValue(EXPANDED_ELEMENTS_PREF, buffer.toString());
-	}
-
-	private void appendMarkerToBuffer(StringBuffer buffer, Object object) {
-		if (object instanceof FontDefinition) {
-			buffer.append(MARKER_FONT);
-		} else if (object instanceof ColorDefinition) {
-			buffer.append(MARKER_COLOR);
-		} else if (object instanceof ThemeElementCategory) {
-			buffer.append(MARKER_CATEGORY);
-		}
-	}
-
-	/**
-	 * Edit the currently selected font.
-	 * 
-	 * @param display the display to open the dialog on
-	 * @since 3.2
-	 */
-	private void editFont(Display display) {
-		final FontDefinition definition = getSelectedFontDefinition();
-		if (definition != null) {
-			final FontDialog fontDialog = new FontDialog(fontChangeButton
-					.getShell());
-			fontDialog.setFontList(getFontValue(definition));
-			final FontData data = fontDialog.open();
-			
-			if (data != null) {
-				setFontPreferenceValue(definition, fontDialog.getFontList());
-				setRegistryValue(definition, fontDialog.getFontList());
-			}
-
-			updateFontControls(definition);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties
deleted file mode 100644
index b94c4d5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ColorsAndFontsPreferencePage.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-reset=&Reset
-value=&Value
-colorsAndFonts=Colors and &Fonts (? = any character, * = any string):
-description=Descriptio&n:
-preview=Previe&w:
-noPreviewAvailable=No preview available.
-errorCreatingPreview=There was an error creating this preview.  Please see your log for details.
-errorCreatePreviewLog=Error creating preview.
-errorDisposePreviewLog=Error disposing preview.
-defaultFormat_default={0} (set to default: {1})
-defaultFormat_override={0} (overrides default: {1})
-editParent=&Go to parent
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java
deleted file mode 100644
index 51214b1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/FontDefinition.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.ui.internal.Workbench;
-
-/**
- * The FontDefiniton is the representation of the fontDefinition
- * from the plugin.xml of a type.
- */
-public class FontDefinition implements IHierarchalThemeElementDefinition,
-        ICategorizedThemeElementDefinition, IEditable {
-
-    private String label;
-
-    private String id;
-
-    private String defaultsTo;
-
-    private String categoryId;
-
-    private String description;
-
-    private String value;
-
-    private boolean isEditable;
-
-    private FontData[] parsedValue;
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param fontName The name display
-     * ed in the preference page.
-     * @param uniqueId The id used to refer to this definition.
-     * @param defaultsId The id of the font this defaults to.
-     * @param fontDescription The description of the font in the preference page.
-     */
-    public FontDefinition(String fontName, String uniqueId, String defaultsId,
-            String value, String categoryId, boolean isEditable,
-            String fontDescription) {
-        this.label = fontName;
-        this.id = uniqueId;
-        this.defaultsTo = defaultsId;
-        this.value = value;
-        this.categoryId = categoryId;
-        this.description = fontDescription;
-        this.isEditable = isEditable;
-    }
-
-    /**
-     * Create a new instance of the receiver.
-     * 
-     * @param originalFont the original definition.  This will be used to populate 
-     * all fields except defaultsTo and value.  defaultsTo will always be 
-     * <code>null</code>.
-     * @param datas the FontData[] value
-     */
-    public FontDefinition(FontDefinition originalFont, FontData[] datas) {
-        this.label = originalFont.getName();
-        this.id = originalFont.getId();
-        this.categoryId = originalFont.getCategoryId();
-        this.description = originalFont.getDescription();
-        this.isEditable = originalFont.isEditable();
-        this.parsedValue = datas;
-    }
-
-    /**
-     * Returns the defaultsTo. This is the id of the text font
-     * that this font defualts to.
-     * @return String or <pre>null</pre>.
-     */
-    public String getDefaultsTo() {
-        return defaultsTo;
-    }
-
-    /**
-     * Returns the description.
-     * @return String or <pre>null</pre>.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Returns the label.
-     * @return String
-     */
-    public String getName() {
-        return label;
-    }
-
-    /**
-     * Returns the id.
-     * @return String
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the categoryId.
-     * @return String
-     */
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    /**
-     * Returns the value.
-     * 
-     * @return FontData []
-     */
-    public FontData[] getValue() {
-        if (value == null) {
-			return null;
-		}
-        if (parsedValue == null) {
-            parsedValue = JFaceResources.getFontRegistry().filterData(
-                    StringConverter.asFontDataArray(value),
-                    Workbench.getInstance().getDisplay());
-        }
-
-        return parsedValue;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IEditable#isEditable()
-     */
-    public boolean isEditable() {
-        return isEditable;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof FontDefinition) {
-            return getId().equals(((FontDefinition)obj).getId());
-        }
-        return false;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return id.hashCode();
-    }    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java
deleted file mode 100644
index d5ee4ca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ICategorizedThemeElementDefinition.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-/**
- * A theme element that may belong to a category.
- * 
- * @since 3.0
- */
-public interface ICategorizedThemeElementDefinition extends
-        IThemeElementDefinition {
-
-    /**
-     * Returns the category of this element.
-     * 
-     * @return the category of this element, or <code>null</code> if it does not belong to one.
-     */
-    String getCategoryId();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IEditable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IEditable.java
deleted file mode 100644
index 6fd4b6f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IEditable.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.themes;
-
-/**
- * Theme elements which may potentially be editted by the user should implement 
- * this interface.
- * 
- * @since 3.0
- */
-public interface IEditable {
-
-    /**
-     * Returns whether this object is editable.
-     * 
-     * @return whether this object is editable.
-     */
-    public boolean isEditable();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java
deleted file mode 100644
index ccf6503..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IHierarchalThemeElementDefinition.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-/**
- * A theme element whose value may default to that of another theme element.
- * 
- * @since 3.0
- */
-public interface IHierarchalThemeElementDefinition extends
-        IThemeElementDefinition {
-
-    /**
-     * Return the id of the element this element defaults to.
-     * 
-     * @return the id of the element this element defaults to, or 
-     * <code>null</code> if it does not default to another element.
-     */
-    String getDefaultsTo();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeDescriptor.java
deleted file mode 100644
index 939aae7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeDescriptor.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Map;
-
-/**
- * Interface for the Theme descriptors
- *
- * @since 3.0
- */
-public interface IThemeDescriptor extends IThemeElementDefinition {
-    public static final String TAB_BORDER_STYLE = "TAB_BORDER_STYLE"; //$NON-NLS-1$
-
-    /**
-     * Returns the color overrides for this theme.
-     * @return ColorDefinition []
-     */
-    public ColorDefinition[] getColors();
-
-    /**
-     * Returns the font overrides for this theme.
-     * @return GradientDefinition []
-     */
-    public FontDefinition[] getFonts();
-
-    /**
-     * Returns the data map for this theme.
-     * 
-     * @return the data map.  This will be read only.
-     */
-    public Map getData();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeElementDefinition.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeElementDefinition.java
deleted file mode 100644
index a9ab03f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeElementDefinition.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-/**
- * A basic element (color, font) of a theme must implement this 
- * interface.
- * 
- * @since 3.0
- */
-public interface IThemeElementDefinition {
-
-    /**
-     * Returns the name for this element.
-     * 
-     * @return the name for this element
-     */
-    public String getName();
-
-    /**
-     * Returns the id for this element.
-     * 
-     * @return the id for this element.  This will never be <code>null</code>.
-     */
-    public String getId();
-
-    /**
-     * Returns the description for this element.
-     * 
-     * @return the description for this element.  This may be <code>null</code>.
-     */
-    public String getDescription();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeRegistry.java
deleted file mode 100644
index f6f6baa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/IThemeRegistry.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Registry of color, font, gradient, category and theme descriptors.
- *
- * @since 3.0
- */
-public interface IThemeRegistry {
-
-    /**
-     * A comparator that will sort IHierarchalThemeElementDefinition elements
-     * by defaultsTo depth.
-     * 
-     * @since 3.0
-     */
-    public static class HierarchyComparator implements Comparator {
-
-        private IHierarchalThemeElementDefinition[] definitions;
-
-        /**
-         * Create a new comparator.
-         * 
-         * @param definitions the elements to be sorted by depth, in ID order.
-         */
-        public HierarchyComparator(
-                IHierarchalThemeElementDefinition[] definitions) {
-            this.definitions = definitions;
-        }
-
-        /* (non-Javadoc)
-         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-         */
-        public int compare(Object arg0, Object arg1) {
-            String def0 = arg0 == null ? null
-                    : ((IHierarchalThemeElementDefinition) arg0)
-                            .getDefaultsTo();
-            String def1 = arg1 == null ? null
-                    : ((IHierarchalThemeElementDefinition) arg1)
-                            .getDefaultsTo();
-
-            if (def0 == null && def1 == null) {
-				return 0;
-			}
-
-            if (def0 == null) {
-				return -1;
-			}
-
-            if (def1 == null) {
-				return 1;
-			}
-
-            return compare(getDefaultsTo(def0), getDefaultsTo(def1));
-        }
-
-        /** 
-         * @param id the identifier to search for.
-         * @return the <code>IHierarchalThemeElementDefinition</code> that 
-         * matches the id.
-         */
-        private IHierarchalThemeElementDefinition getDefaultsTo(String id) {
-            int idx = Arrays.binarySearch(definitions, id, ID_COMPARATOR);
-            if (idx >= 0) {
-				return definitions[idx];
-			}
-            return null;
-        }
-    }
-
-    /**
-     * A comparator that will sort <code>IThemeElementDefinition</code> elements
-     * by id depth.  You may use this on both <code>String</code> and 
-     * <code>IThemeElementDefinition</code> objects in order to perform 
-     * searching.
-     * 
-     * @since 3.0
-     */
-    public static final Comparator ID_COMPARATOR = new Comparator() {
-
-        /* (non-Javadoc)
-         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-         */
-        public int compare(Object arg0, Object arg1) {
-            String str0 = getCompareString(arg0);
-            String str1 = getCompareString(arg1);
-            return str0.compareTo(str1);
-        }
-
-        /**
-         * @param object
-         * @return <code>String</code> representation of the object.
-         */
-        private String getCompareString(Object object) {
-            if (object instanceof String) {
-				return (String) object;
-			} else if (object instanceof IThemeElementDefinition) {
-				return ((IThemeElementDefinition) object).getId();
-			}
-            return ""; //$NON-NLS-1$
-        }
-    };
-
-    /**
-     * Returns the category matching the provided id.
-     * 
-     * @param id the id to search for
-     * @return the element matching the provided id, or <code>null</code> if 
-     * not found
-     */
-    public ThemeElementCategory findCategory(String id);
-
-    /**
-     * Returns the color matching the provided id.
-     * 
-     * @param id the id to search for
-     * @return the element matching the provided id, or <code>null</code> if 
-     * not found
-     */
-    public ColorDefinition findColor(String id);
-
-    /**
-     * Returns the font matching the provided id.
-     * 
-     * @param id the id to search for
-     * @return the element matching the provided id, or <code>null</code> if 
-     * not found
-     */
-    public FontDefinition findFont(String id);
-
-    /**
-     *  Returns the theme matching the provided id.
-     * 
-     * @param id the id to search for
-     * @return the element matching the provided id, or <code>null</code> if 
-     * not found
-     */
-    public IThemeDescriptor findTheme(String id);
-
-    /**
-     * Returns a list of categories defined in the registry.
-     * 
-     * @return the categories in this registry
-     */
-    public ThemeElementCategory[] getCategories();
-
-    /**
-     * Returns a list of colors defined in the registry.
-     * 
-     * @return the colors in this registry
-     */
-    public ColorDefinition[] getColors();
-
-    /**
-     * Returns a list of colors defined for the given theme.  This is the
-     * set of base colours overlayed with any theme specific overrides.
-     * 
-     * @param themeId the theme id
-     * @return the colors in this theme
-     */
-    public ColorDefinition[] getColorsFor(String themeId);
-
-    /**
-     * Returns a list of fonts defined for the given theme.  This is the
-     * set of base fonts overlayed with any theme specific overrides.
-     * 
-     * @param themeId the theme id
-     * @return the fonts in this theme
-     */
-    public FontDefinition[] getFontsFor(String themeId);
-
-    /**
-     * Returns a list of fonts defined in the registry.
-     * 
-     * @return the fonts in this registry
-     */
-    public FontDefinition[] getFonts();
-
-    /**
-     * Returns a list of themes defined in the registry.
-     * 
-     * @return the themes in this registry
-     */
-    public IThemeDescriptor[] getThemes();
-
-    /**
-     * Return the data map.
-     * 
-     * @return the data map
-     */
-    public Map getData();
-
-    /**
-     * Return the set of category presentation bindings.
-     * 
-     * @param category the category to test
-     * @return the set of bindings or <code>null</code> if this category has no bindings
-     */
-    public Set getPresentationsBindingsFor(ThemeElementCategory category);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/LightColorFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/LightColorFactory.java
deleted file mode 100644
index c7832ad..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/LightColorFactory.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.themes;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.themes.ColorUtil;
-import org.eclipse.ui.themes.IColorFactory;
-
-/**
- * LightColorFactory returns tab begin and end colours based on taking
- * a system color as input, analyzing it, and lightening it appropriately.
- * 
- * @since 3.3
- * 
- */
-public class LightColorFactory implements IColorFactory,
-		IExecutableExtension {
-
-	protected static final RGB white = ColorUtil.getColorValue("COLOR_WHITE"); //$NON-NLS-1$
-	protected static final RGB black = ColorUtil.getColorValue("COLOR_BLACK"); //$NON-NLS-1$
-	
-	String baseColorName;
-	String definitionId; 
-
-	/**
-	 * Return the highlight start (top of tab) color as an RGB
-	 * @return the highlight start RGB
-	 */
-	
-	public static RGB createHighlightStartColor(RGB tabStartColor) {
-		return ColorUtil.blend(white, tabStartColor);
-	}
-
-	/**
-	 * This executable extension requires parameters to be explicitly declared
-	 * via the second method described in the <code>IExecutableExtension</code>
-	 * documentation. The following parameters are parsed:
-	 * <code>base</code>, describes the base color to produce all other colours from.
-	 * This value may either be an RGB triple or an SWT constant.
-	 * <code>definitionId</code>, describes the id of color we are looking for, one of
-	 * "org.eclipse.ui.workbench.ACTIVE_TAB_BG_START"
-	 * "org.eclipse.ui.workbench.ACTIVE_TAB_BG_END"
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config,
-			String propertyName, Object data) {
-
-		if (data instanceof Hashtable) {
-			Hashtable table = (Hashtable) data;
-			baseColorName = (String) table.get("base"); //$NON-NLS-1$
-			definitionId = (String) table.get("definitionId"); //$NON-NLS-1$
-		}
-	}
-
-	/* 
-	 * Return the number of RGB values in test that are
-	 * equal to or between lower and upper.
-	 */
-	protected int valuesInRange(RGB test, int lower, int upper) {
-		int hits = 0;
-		if(test.red >= lower && test.red <= upper) hits++;
-		if(test.blue >= lower && test.blue <= upper) hits++;
-		if(test.green >= lower && test.green <= upper) hits++;
-
-		return hits;
-	}
-	
-	/*
-	 * Return the RGB value for the bottom tab color
-	 * based on a blend of white and sample color
-	 */
-	private RGB getLightenedColor(RGB sample) {
-		//Group 1
-		if(valuesInRange(sample, 180, 255) >= 2)
-			return sample;
-		
-		//Group 2
-		if(valuesInRange(sample, 100, 179) >= 2)
-			return ColorUtil.blend(white, sample, 40);
-		
-		//Group 3
-		if(valuesInRange(sample, 0, 99) >= 2)
-			return ColorUtil.blend(white, sample, 60);
-		
-		//Group 4
-		return ColorUtil.blend(white, sample, 30);
-	}
-
-	/*
-	 * Return the Start (top of tab) color as an RGB
-	 */
-	private RGB getActiveFocusStartColor() {
-		if (Display.getCurrent().getDepth() < 15)
-				return getActiveFocusEndColor();
-
-		RGB startColor = ColorUtil.blend(white, getActiveFocusEndColor(), 75);
-		return startColor;
-	}
-
-	/*
-	 * Return the End (top of tab) color as an RGB
-	 */
-	private RGB getActiveFocusEndColor() {
-		if (Display.getCurrent().getDepth() < 15)
-			return ColorUtil.getColorValue(baseColorName);
-	
-		return getLightenedColor(
-				ColorUtil.getColorValue(baseColorName));
-	}	
-
-	/*
-	 * Return the active focus tab text color as an RGB
-	 */
-	private RGB getActiveFocusTextColor() {
-		if (Display.getCurrent().getDepth() < 15)
-			return ColorUtil.getColorValue(baseColorName);  //typically TITLE_FOREGROUND
-	
-		return ColorUtil.getColorValue("COLOR_BLACK"); //$NON-NLS-1$
-	}
-	/*
-	 * Return the RGB value for the top tab color.
-	 */
-	private RGB getActiveNofocusStartColor() {
-		RGB base = ColorUtil.getColorValue(baseColorName);
-		if (Display.getCurrent().getDepth() < 15)
-			return base;
-		
-		return ColorUtil.blend(white, base, 40);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.themes.IColorFactory#createColor()
-	 */
-	public RGB createColor() {
-		//should have base, otherwise error in the xml
-		if (baseColorName == null || definitionId == null) 
-			return white;
-
-		if (definitionId.equals("org.eclipse.ui.workbench.ACTIVE_TAB_BG_START")) //$NON-NLS-1$
-			return getActiveFocusStartColor();
-		if (definitionId.equals("org.eclipse.ui.workbench.ACTIVE_TAB_BG_END")) //$NON-NLS-1$
-			return getActiveFocusEndColor();
-		if (definitionId.equals("org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR")) //$NON-NLS-1$
-			return getActiveFocusTextColor();
-		if (definitionId.equals("org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START")) //$NON-NLS-1$
-			return getActiveNofocusStartColor();
-		
-		//should be one of start or end, otherwise error in the xml
-		return white;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBContrastFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBContrastFactory.java
deleted file mode 100644
index e8a73d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/RGBContrastFactory.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.ui.themes.ColorUtil;
-import org.eclipse.ui.themes.IColorFactory;
-
-/**
- * A <code>IColorFactory</code> that may be used to select a colour with
- * a higher contrast.  The colors to blend are specified as per method
- * number two in  {@link org.eclipse.core.runtime.IExecutableExtension}.
- * <p>
- * Example usage:
- * <br/>
- * <code>
- * &lt;colorDefinition
- *     label="Red/Blue Contrast"
- *     id="example.redblueblend"&gt;
- *     &lt;colorFactory 
- * 				plugin="org.eclipse.ui" 
- * 				class="org.eclipse.ui.internal.themes.RGBContrastFactory"&gt;
- *      	&lt;parameter name="foreground" value="0,0,0" /&gt;
- *  		&lt;parameter name="background1" value="COLOR_RED" /&gt;
- *          &lt;parameter name="background2" value="COLOR_BLUE" /&gt;
- *     &lt;/colorFactory&gt;
- * &lt;/colorDefinition&gt;
- * </code>
- * </p>
- * 
- * <p>
- * This will select whichever of Red or Blue has a higher contrst with black.
- * The color values may be specified as RGB triples or as SWT constants.
- * </p>
- * 
- * @see org.eclipse.swt.SWT
- * @since 3.0
- */
-public class RGBContrastFactory implements IColorFactory, IExecutableExtension {
-    private String fg, bg1, bg2;
-
-    /**
-     * Returns the intensity of an RGB component using the
-     * sRGB gamma function.
-     * 
-     * @param val Value to convert.
-     * @return Light intensity of the component.
-     */
-    double voltage_to_intensity_srgb(double val) {
-        /* Handle invalid values before doing a gamma transform. */
-        if (val < 0.0) {
-			return 0.0;
-		}
-        if (val > 1.0) {
-			return 1.0;
-		}
-
-        if (val <= 0.04045) {
-            return val / 12.92;
-        }
-        return Math.pow((val + 0.055) / 1.055, 2.4);
-    }
-
-    /**
-     * Returns a measure of the lightness in the perceptual colourspace
-     * IPT.
-     * 
-     * @param color The colour in sRGB
-     * @return Lightness in IPT space.
-     */
-    double lightness(RGB color) {
-        double r = voltage_to_intensity_srgb(color.red / 255.0);
-        double g = voltage_to_intensity_srgb(color.green / 255.0);
-        double b = voltage_to_intensity_srgb(color.blue / 255.0);
-        double l = (0.3139 * r) + (0.6395 * g) + (0.0466 * b);
-        double m = (0.1516 * r) + (0.7482 * g) + (0.1000 * b);
-        double s = (0.0177 * r) + (0.1095 * g) + (0.8729 * b);
-        double lp, mp, sp;
-
-        if (l < 0.0) {
-			lp = -Math.pow(-l, 0.43);
-		} else {
-			lp = Math.pow(l, 0.43);
-		}
-        if (m < 0.0) {
-			mp = -Math.pow(-m, 0.43);
-		} else {
-			mp = Math.pow(m, 0.43);
-		}
-        if (s < 0.0) {
-			sp = -Math.pow(-s, 0.43);
-		} else {
-			sp = Math.pow(s, 0.43);
-		}
-
-        return (0.4000 * lp) + (0.4000 * mp) + (0.2000 * sp);
-    }
-
-    public RGB createColor() {
-        /**
-         * Determine which pair has a higher contrast by selecting
-         * the colour with the furthest distance in lightness.
-         */
-        RGB cfg, cbg1, cbg2;
-
-        if (fg != null) {
-            cfg = ColorUtil.getColorValue(fg);
-        } else {
-            cfg = new RGB(255, 255, 255);
-        }
-        if (bg1 != null) {
-            cbg1 = ColorUtil.getColorValue(bg1);
-        } else {
-            cbg1 = new RGB(0, 0, 0);
-        }
-        if (bg2 != null) {
-            cbg2 = ColorUtil.getColorValue(bg2);
-        } else {
-            cbg2 = new RGB(0, 0, 0);
-        }
-
-        double lfg = lightness(cfg);
-        double lbg1 = lightness(cbg1);
-        double lbg2 = lightness(cbg2);
-
-        if (Math.abs(lbg1 - lfg) > Math.abs(lbg2 - lfg)) {
-            return cbg1;
-        } else {
-            return cbg2;
-        }
-    }
-
-    /**
-     * This executable extension requires parameters to be explicitly declared 
-     * via the second method described in the <code>IExecutableExtension</code> 
-     * documentation.  This class expects that there will be three parameters, 
-     * <code>foreground</code>, <code>background1</code> and
-     * <code>background2</code>, that describe the two colors to be blended.
-     * These values may either be RGB triples or SWT constants.
-     * 
-     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
-     */
-    public void setInitializationData(IConfigurationElement config,
-            String propertyName, Object data) throws CoreException {
-        if (data instanceof Hashtable) {
-            Hashtable table = (Hashtable) data;
-            fg = (String) table.get("foreground"); //$NON-NLS-1$
-            bg1 = (String) table.get("background1"); //$NON-NLS-1$
-            bg2 = (String) table.get("background2"); //$NON-NLS-1$
-        }
-
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.java
deleted file mode 100644
index 6b7d5b8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.DataFormatException;
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @since 3.0
- */
-public class Theme extends EventManager implements ITheme {
-
-    /**
-     * The translation bundle in which to look up internationalized text.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(Theme.class.getName());
-
-    private CascadingColorRegistry themeColorRegistry;
-
-    private CascadingFontRegistry themeFontRegistry;
-
-    private IThemeDescriptor descriptor;
-
-    private IPropertyChangeListener themeListener;
-
-    private CascadingMap dataMap;
-
-    private ThemeRegistry themeRegistry;
-
-    private IPropertyChangeListener propertyListener;
-
-    /**
-     * @param descriptor
-     */
-    public Theme(IThemeDescriptor descriptor) {
-        themeRegistry = ((ThemeRegistry) WorkbenchPlugin.getDefault()
-                .getThemeRegistry());
-        this.descriptor = descriptor;
-        IWorkbench workbench = PlatformUI.getWorkbench();
-        if (descriptor != null) {
-        	ITheme defaultTheme = workbench.getThemeManager().getTheme(
-                    IThemeManager.DEFAULT_THEME);
-        	
-            ColorDefinition[] colorDefinitions = this.descriptor.getColors();
-            themeColorRegistry = new CascadingColorRegistry(defaultTheme
-                    .getColorRegistry());
-            if (colorDefinitions.length > 0) {
-                ThemeElementHelper.populateRegistry(this, colorDefinitions,
-                		PrefUtil.getInternalPreferenceStore());
-            }
-
-            FontDefinition[] fontDefinitions = this.descriptor.getFonts();
-            themeFontRegistry = new CascadingFontRegistry(defaultTheme
-                    .getFontRegistry());
-            if (fontDefinitions.length > 0) {
-                ThemeElementHelper.populateRegistry(this, fontDefinitions,
-                		PrefUtil.getInternalPreferenceStore());
-            }
-
-            dataMap = new CascadingMap(((ThemeRegistry) WorkbenchPlugin
-                    .getDefault().getThemeRegistry()).getData(), descriptor
-                    .getData());
-        }
-
-        getColorRegistry().addListener(getCascadeListener());
-        getFontRegistry().addListener(getCascadeListener());
-        PrefUtil.getInternalPreferenceStore().addPropertyChangeListener(
-                getPropertyListener());
-    }
-
-    /**
-     * Listener that is responsible for responding to preference changes.
-     * 
-     * @return the property change listener
-     */
-    private IPropertyChangeListener getPropertyListener() {
-        if (propertyListener == null) {
-            propertyListener = new IPropertyChangeListener() {
-
-                /* (non-Javadoc)
-                 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-                 */
-                public void propertyChange(PropertyChangeEvent event) {
-                    String[] split = ThemeElementHelper.splitPropertyName(
-                            Theme.this, event.getProperty());
-                    String key = split[1];
-                    String theme = split[0];
-                    if (key.equals(IWorkbenchPreferenceConstants.CURRENT_THEME_ID)) {
-						return;
-					}
-                    try {
-                    	String thisTheme = getId();
-                                          
-                        if (Util.equals(thisTheme, theme)) {
-							if (getFontRegistry().hasValueFor(key)) {
-								FontData[] data = PreferenceConverter
-										.basicGetFontData((String) event
-												.getNewValue());
-								
-								getFontRegistry().put(key, data);
-								processDefaultsTo(key, data);
-								return;
-							}
-							else if (getColorRegistry().hasValueFor(key)) {
-								RGB rgb = StringConverter.asRGB((String) event
-										.getNewValue());
-								getColorRegistry().put(key, rgb);
-								processDefaultsTo(key, rgb);
-								return;
-							}
-						}                        
-                    } catch (DataFormatException e) {
-                        //no-op
-                    }
-                }
-
-                /**
-                 * Process all fonts that default to the given ID.
-                 * 
-                 * @param key the font ID
-                 * @param fd the new FontData for defaulted fonts
-                 */
-                private void processDefaultsTo(String key, FontData[] fd) {
-                    FontDefinition[] defs = WorkbenchPlugin.getDefault()
-                            .getThemeRegistry().getFontsFor(getId());
-                    for (int i = 0; i < defs.length; i++) {
-                        String defaultsTo = defs[i].getDefaultsTo();
-                        if (defaultsTo != null && defaultsTo.equals(key)) {
-                            IPreferenceStore store = WorkbenchPlugin
-                                    .getDefault().getPreferenceStore();
-                            if (store.isDefault(ThemeElementHelper
-                                    .createPreferenceKey(Theme.this, defs[i]
-                                            .getId()))) {
-                                getFontRegistry().put(defs[i].getId(), fd);
-                                processDefaultsTo(defs[i].getId(), fd);
-                            }
-                        }
-                    }
-                }
-
-                /**
-                 * Process all colors that default to the given ID.
-                 * 
-                 * @param key the color ID
-                 * @param rgb the new RGB value for defaulted colors
-                 */
-                private void processDefaultsTo(String key, RGB rgb) {
-                    ColorDefinition[] defs = WorkbenchPlugin.getDefault()
-                            .getThemeRegistry().getColorsFor(getId());
-                    for (int i = 0; i < defs.length; i++) {
-                        String defaultsTo = defs[i].getDefaultsTo();
-                        if (defaultsTo != null && defaultsTo.equals(key)) {
-                            IPreferenceStore store = WorkbenchPlugin
-                                    .getDefault().getPreferenceStore();
-                            if (store.isDefault(ThemeElementHelper
-                                    .createPreferenceKey(Theme.this, defs[i]
-                                            .getId()))) {
-                                getColorRegistry().put(defs[i].getId(), rgb);
-                                processDefaultsTo(defs[i].getId(), rgb);
-                            }
-                        }
-                    }
-                }
-            };
-        }
-        return propertyListener;
-    }
-
-    /**
-     * Listener that is responsible for rebroadcasting events fired from the base font/color registry
-     */
-    private IPropertyChangeListener getCascadeListener() {
-        if (themeListener == null) {
-            themeListener = new IPropertyChangeListener() {
-
-                /* (non-Javadoc)
-                 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-                 */
-                public void propertyChange(PropertyChangeEvent event) {
-                    firePropertyChange(event);
-                }
-            };
-        }
-        return themeListener;
-    }
-
-    public ColorRegistry getColorRegistry() {
-		if (themeColorRegistry != null) {
-			return themeColorRegistry;
-		}
-
-		return WorkbenchThemeManager.getInstance()
-				.getDefaultThemeColorRegistry();
-	}
-
-    public FontRegistry getFontRegistry() {
-		if (themeFontRegistry != null) {
-			return themeFontRegistry;
-		}
-
-		return WorkbenchThemeManager.getInstance()
-				.getDefaultThemeFontRegistry();
-	}
-
-    public void dispose() {
-        if (themeColorRegistry != null) {
-            themeColorRegistry.removeListener(themeListener);
-            themeColorRegistry.dispose();
-        }
-        if (themeFontRegistry != null) {
-            themeFontRegistry.removeListener(themeListener);
-            themeFontRegistry.dispose();
-        }
-        PrefUtil.getInternalPreferenceStore()
-                .removePropertyChangeListener(getPropertyListener());
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.ITheme#getId()
-     */
-    public String getId() {
-        return descriptor == null ? IThemeManager.DEFAULT_THEME : descriptor
-                .getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void addPropertyChangeListener(IPropertyChangeListener listener) {
-        addListenerObject(listener);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbench#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void removePropertyChangeListener(IPropertyChangeListener listener) {
-        removeListenerObject(listener);
-    }
-
-    private void firePropertyChange(PropertyChangeEvent event) {
-        Object[] listeners = getListeners();
-        for (int i = 0; i < listeners.length; i++) {
-            ((IPropertyChangeListener) listeners[i]).propertyChange(event);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.ITheme#getLabel()
-     */
-    public String getLabel() {
-        return descriptor == null ? RESOURCE_BUNDLE
-                .getString("DefaultTheme.label") : descriptor.getName(); //$NON-NLS-1$ 
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getString(java.lang.String)
-     */
-    public String getString(String key) {
-        if (dataMap != null) {
-			return (String) dataMap.get(key);
-		}
-        return (String) themeRegistry.getData().get(key);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#keySet()
-     */
-    public Set keySet() {
-        if (dataMap != null) {
-			return dataMap.keySet();
-		}
-
-        return themeRegistry.getData().keySet();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getInt(java.lang.String)
-     */
-    public int getInt(String key) {
-        String string = getString(key);
-        if (string == null) {
-			return 0;
-		}
-        try {
-            return Integer.parseInt(string);
-        } catch (NumberFormatException e) {
-            return 0;
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.ITheme#getBoolean(java.lang.String)
-     */
-    public boolean getBoolean(String key) {
-        String string = getString(key);
-        if (string == null) {
-			return false;
-		}
-
-        return Boolean.valueOf(getString(key)).booleanValue();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.properties
deleted file mode 100644
index 5f50caa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/Theme.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-DefaultTheme.label=Default
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeDescriptor.java
deleted file mode 100644
index ef1b1ea..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeDescriptor.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-
-/**
- * Concrete implementation of a theme descriptor.
- *
- * @since 3.0
- */
-public class ThemeDescriptor implements IThemeDescriptor {
-
-    /* Theme */
-    public static final String ATT_ID = "id";//$NON-NLS-1$
-
-    private static final String ATT_NAME = "name";//$NON-NLS-1$	
-
-    private Collection colors = new HashSet();
-
-    private String description;
-
-    private Collection fonts = new HashSet();
-
-    private String id;
-
-    private String name;
-
-    private Map dataMap = new HashMap();
-
-    /**
-     * Create a new ThemeDescriptor
-     * @param id
-     */
-    public ThemeDescriptor(String id) {
-        this.id = id;
-    }
-
-    /**
-     * Add a color override to this descriptor.
-     * 
-     * @param definition the definition to add
-     */
-    void add(ColorDefinition definition) {
-    	if (colors.contains(definition)) {
-    		colors.remove(definition);
-		}
-        colors.add(definition);
-    }
-
-    /**
-     * Add a font override to this descriptor.
-     * 
-     * @param definition the definition to add
-     */
-    void add(FontDefinition definition) {
-        if (fonts.contains(definition)) {
-			return;
-		}
-        fonts.add(definition);
-    }
-
-    /**
-     * Add a data object to this descriptor.
-     * 
-     * @param key the key
-     * @param data the data
-     */
-    void setData(String key, Object data) {
-        if (dataMap.containsKey(key)) {
-			return;
-		}
-            
-        dataMap.put(key, data);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeDescriptor#getColorOverrides()
-     */
-    public ColorDefinition[] getColors() {
-        ColorDefinition[] defs = (ColorDefinition[]) colors
-                .toArray(new ColorDefinition[colors.size()]);
-        Arrays.sort(defs, IThemeRegistry.ID_COMPARATOR);
-        return defs;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeElementDefinition#getDescription()
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeDescriptor#getFontOverrides()
-     */
-    public FontDefinition[] getFonts() {
-        FontDefinition[] defs = (FontDefinition[]) fonts
-                .toArray(new FontDefinition[fonts.size()]);
-        Arrays.sort(defs, IThemeRegistry.ID_COMPARATOR);
-        return defs;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IThemeDescriptor#getID()
-     */
-    public String getId() {
-        return id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IThemeDescriptor#getName()
-     */
-    public String getName() {
-    	if (name == null)
-    		return getId();
-        return name;
-    }
-
-    /*
-     * load the name if it is not already set.
-     */
-    void extractName(IConfigurationElement configElement) {
-        if (name == null) {
-			name = configElement.getAttribute(ATT_NAME);
-		}
-    }
-
-    /**
-     * Set the description.
-     * 
-     * @param description the description
-     */
-    void setDescription(String description) {
-        if (this.description == null) {
-			this.description = description;
-		}
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeDescriptor#getData()
-     */
-    public Map getData() {
-        return Collections.unmodifiableMap(dataMap);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementCategory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementCategory.java
deleted file mode 100644
index 3d7b847..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementCategory.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IPluginContribution;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.themes.IThemePreview;
-
-/**
- * @since 3.0
- */
-public class ThemeElementCategory implements IPluginContribution,
-        IThemeElementDefinition {
-
-    private String description;
-
-    private IConfigurationElement element;
-
-    private String id;
-
-    private String parentId;
-
-    private String label;
-
-    private String pluginId;
-
-    /**
-     * 
-     * @param label
-     * @param id
-     * @param parentId 
-     * @param description
-     * @param pluginId
-     * @param element
-     */
-    public ThemeElementCategory(String label, String id, String parentId,
-            String description, String pluginId, IConfigurationElement element) {
-
-        this.label = label;
-        this.id = id;
-        this.parentId = parentId;
-        this.description = description;
-        this.pluginId = pluginId;
-        this.element = element;
-    }
-
-    /**
-     * @return Returns the <code>IColorExample</code> for this category.  If one
-     * is not available, <code>null</code> is returned.
-     * @throws CoreException thrown if there is a problem instantiating the preview
-     */
-    public IThemePreview createPreview() throws CoreException {
-        String classString = element.getAttribute(IWorkbenchRegistryConstants.ATT_CLASS);
-        if (classString == null || "".equals(classString)) { //$NON-NLS-1$
-			return null;
-		}
-        return (IThemePreview) WorkbenchPlugin.createExtension(element,
-                IWorkbenchRegistryConstants.ATT_CLASS);
-    }
-
-    /**
-     * @return Returns the description.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * @return Returns the element.
-     */
-    public IConfigurationElement getElement() {
-        return element;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeElementDefinition#getId()
-     */
-    public String getId() {
-        return id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeElementDefinition#getLabel()
-     */
-    public String getName() {
-        return label;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getLocalId()
-     */
-    public String getLocalId() {
-        return id;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPluginContribution#getPluginId()
-     */
-    public String getPluginId() {
-        return pluginId;
-    }
-
-    /**
-     * @return Returns the parentId.  May be <code>null</code>.
-     */
-    public String getParentId() {
-        return parentId;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof ThemeElementCategory) {
-            return getId().equals(((ThemeElementCategory)obj).getId());
-        }
-        return false;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return id.hashCode();
-    }    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementHelper.java
deleted file mode 100644
index 33b90fd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeElementHelper.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Arrays;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @since 3.0
- */
-public final class ThemeElementHelper {
-
-    public static void populateRegistry(ITheme theme,
-            FontDefinition[] definitions, IPreferenceStore store) {
-        // sort the definitions by dependant ordering so that we process 
-        // ancestors before children.		
-        FontDefinition[] copyOfDefinitions = null;
-
-        // the colors to set a default value for, but not a registry value
-        FontDefinition[] defaults = null;
-        if (!theme.getId().equals(IThemeManager.DEFAULT_THEME)) {
-            definitions = addDefaulted(definitions);
-            //compute the defaults only if we're setting preferences at this time
-            if (store != null) {
-				defaults = getDefaults(definitions);
-			}
-        }
-
-        copyOfDefinitions = new FontDefinition[definitions.length];
-        System.arraycopy(definitions, 0, copyOfDefinitions, 0,
-                definitions.length);
-        Arrays.sort(copyOfDefinitions, new IThemeRegistry.HierarchyComparator(
-                definitions));
-
-        for (int i = 0; i < copyOfDefinitions.length; i++) {
-            FontDefinition definition = copyOfDefinitions[i];
-            installFont(definition, theme, store, true);
-        }
-
-        if (defaults != null) {
-            for (int i = 0; i < defaults.length; i++) {
-                installFont(defaults[i], theme, store, false);
-            }
-        }
-    }
-
-    /**
-     * @param definitions
-     * @return
-     */
-    private static FontDefinition[] addDefaulted(FontDefinition[] definitions) {
-        IThemeRegistry registry = WorkbenchPlugin.getDefault()
-                .getThemeRegistry();
-        FontDefinition[] allDefs = registry.getFonts();
-
-        SortedSet set = addDefaulted(definitions, allDefs);
-        return (FontDefinition[]) set.toArray(new FontDefinition[set.size()]);
-    }
-
-    /**
-     * Installs the given font in the preference store and optionally the font 
-     * registry.
-     * 
-     * @param definition
-     *            the font definition
-     * @param registry
-     *            the font registry
-     * @param store
-     *            the preference store from which to set and obtain font data
-     * @param setInRegistry
-     * 			  whether the color should be put into the registry as well as
-     *            having its default preference set
-     */
-    private static void installFont(FontDefinition definition, ITheme theme,
-            IPreferenceStore store, boolean setInRegistry) {
-        FontRegistry registry = theme.getFontRegistry();
-
-        String id = definition.getId();
-        String key = createPreferenceKey(theme, id);
-        FontData[] prefFont = store != null ? PreferenceConverter
-                .getFontDataArray(store, key) : null;
-        FontData[] defaultFont = null;
-        if (definition.getValue() != null) {
-			defaultFont = definition.getValue();
-		} else if (definition.getDefaultsTo() != null) {
-			defaultFont = registry.filterData(registry
-                    .getFontData(definition.getDefaultsTo()), Workbench
-                    .getInstance().getDisplay());
-		} else {
-            // values pushed in from jface property files.  Very ugly.
-			Display display = Workbench.getInstance().getDisplay();
-			
-			//If in high contrast, ignore the defaults in jface and use the default (system) font.
-			//This is a hack to address bug #205474. See bug #228207 for a future fix.
-			FontData[] fontData = JFaceResources.getFontRegistry().getFontData(
-				display.getHighContrast()
-					? JFaceResources.DEFAULT_FONT
-					: id
-			);
-			defaultFont = registry.bestDataArray(fontData, display);
-        }
-
-        if (setInRegistry) {
-            if (prefFont == null
-                    || prefFont == PreferenceConverter.FONTDATA_ARRAY_DEFAULT_DEFAULT) {
-                prefFont = defaultFont;
-            }
-
-            if (prefFont != null) {
-                registry.put(id, prefFont);
-            }
-        }
-
-        if (defaultFont != null && store != null) {
-            PreferenceConverter.setDefault(store, key, defaultFont);
-        }
-    }
-
-    public static void populateRegistry(ITheme theme,
-            ColorDefinition[] definitions, IPreferenceStore store) {
-        // sort the definitions by dependant ordering so that we process 
-        // ancestors before children.		
-
-        ColorDefinition[] copyOfDefinitions = null;
-
-        // the colors to set a default value for, but not a registry value
-        ColorDefinition[] defaults = null;
-        if (!theme.getId().equals(IThemeManager.DEFAULT_THEME)) {
-            definitions = addDefaulted(definitions);
-            //compute defaults only if we're setting preferences
-            if (store != null) {
-				defaults = getDefaults(definitions);
-			}
-        }
-
-        copyOfDefinitions = new ColorDefinition[definitions.length];
-        System.arraycopy(definitions, 0, copyOfDefinitions, 0,
-                definitions.length);
-        Arrays.sort(copyOfDefinitions, new IThemeRegistry.HierarchyComparator(
-                definitions));
-
-        for (int i = 0; i < copyOfDefinitions.length; i++) {
-            ColorDefinition definition = copyOfDefinitions[i];
-            installColor(definition, theme, store, true);
-        }
-
-        if (defaults != null) {
-            for (int i = 0; i < defaults.length; i++) {
-                installColor(defaults[i], theme, store, false);
-            }
-        }
-    }
-
-    /**
-     * Return the definitions that should have their default preference value
-     * set but nothing else.
-     * 
-     * @param definitions the definitions that will be fully handled
-     * @return the remaining definitions that should be defaulted
-     */
-    private static ColorDefinition[] getDefaults(ColorDefinition[] definitions) {
-        IThemeRegistry registry = WorkbenchPlugin.getDefault()
-                .getThemeRegistry();
-        ColorDefinition[] allDefs = registry.getColors();
-
-        SortedSet set = new TreeSet(IThemeRegistry.ID_COMPARATOR);
-        set.addAll(Arrays.asList(allDefs));
-        set.removeAll(Arrays.asList(definitions));
-        return (ColorDefinition[]) set.toArray(new ColorDefinition[set.size()]);
-    }
-
-    /**
-     * Return the definitions that should have their default preference value
-     * set but nothing else.
-     * 
-     * @param definitions the definitions that will be fully handled
-     * @return the remaining definitions that should be defaulted
-     */
-    private static FontDefinition[] getDefaults(FontDefinition[] definitions) {
-        IThemeRegistry registry = WorkbenchPlugin.getDefault()
-                .getThemeRegistry();
-        FontDefinition[] allDefs = registry.getFonts();
-
-        SortedSet set = new TreeSet(IThemeRegistry.ID_COMPARATOR);
-        set.addAll(Arrays.asList(allDefs));
-        set.removeAll(Arrays.asList(definitions));
-        return (FontDefinition[]) set.toArray(new FontDefinition[set.size()]);
-    }
-
-    /**
-     * @param definitions
-     * @return
-     */
-    private static ColorDefinition[] addDefaulted(ColorDefinition[] definitions) {
-        IThemeRegistry registry = WorkbenchPlugin.getDefault()
-                .getThemeRegistry();
-        ColorDefinition[] allDefs = registry.getColors();
-
-        SortedSet set = addDefaulted(definitions, allDefs);
-        return (ColorDefinition[]) set.toArray(new ColorDefinition[set.size()]);
-    }
-
-    /**
-     * @param definitions
-     * @param allDefs
-     * @return
-     */
-    private static SortedSet addDefaulted(
-            IHierarchalThemeElementDefinition[] definitions,
-            IHierarchalThemeElementDefinition[] allDefs) {
-        SortedSet set = new TreeSet(IThemeRegistry.ID_COMPARATOR);
-        set.addAll(Arrays.asList(definitions));
-        
-        IHierarchalThemeElementDefinition copy [] = new IHierarchalThemeElementDefinition[allDefs.length];
-		System.arraycopy(allDefs, 0, copy, 0, allDefs.length);
-		
-        Arrays.sort(allDefs, new IThemeRegistry.HierarchyComparator(copy));
-        for (int i = 0; i < allDefs.length; i++) {
-            IHierarchalThemeElementDefinition def = allDefs[i];
-            if (def.getDefaultsTo() != null) {
-                if (set.contains(def.getDefaultsTo())) {
-					set.add(def);
-				}
-            }
-        }
-        return set;
-    }
-
-    /**
-     * Installs the given color in the preference store and optionally the color 
-     * registry.
-     * 
-     * @param definition
-     *            the color definition
-     * @param theme
-     *            the theme defining the color
-     * @param store
-     *            the preference store from which to set and obtain color data
-     * @param setInRegistry
-     * 			  whether the color should be put into the registry
-     */
-    
-    private static void installColor(ColorDefinition definition, ITheme theme,
-            IPreferenceStore store, boolean setInRegistry) {
-
-        //TODO: store shouldn't be null, should assert instead of checking null all over
-    	
-    	ColorRegistry registry = theme.getColorRegistry();
-
-        String id = definition.getId();
-        String key = createPreferenceKey(theme, id);
-        RGB prefColor = store != null 
-        	? PreferenceConverter.getColor(store, key) 
-        	: null;
-        RGB defaultColor = (definition.getValue() != null)
-        	? definition.getValue()
-            : registry.getRGB(definition.getDefaultsTo());
-     
-        if (defaultColor == null) {
-			// default is null, likely because we have a bad definition - the
-			// defaultsTo color doesn't exist. We still need a sensible default,
-			// however.
-			defaultColor = PreferenceConverter.COLOR_DEFAULT_DEFAULT;
-		}
-        	
-        if (prefColor == null
-                || prefColor == PreferenceConverter.COLOR_DEFAULT_DEFAULT) {
-            prefColor = defaultColor;
-        }
-
-        //if the preference value isn't the default then retain that pref value
-        RGB colorToUse = ! store.isDefault(key)
-        	 ? prefColor
-             : defaultColor;
-
-        if (setInRegistry) {
-        	registry.put(id, colorToUse);
-        }
-
-        if (store != null) {
-            PreferenceConverter.setDefault(store, key, defaultColor);
-        }
-    }
-
-    /**
-     * @param theme
-     * @param id
-     * @return
-     */
-    public static String createPreferenceKey(ITheme theme, String id) {
-        String themeId = theme.getId();
-        if (themeId.equals(IThemeManager.DEFAULT_THEME)) {
-			return id;
-		}
-
-        return themeId + '.' + id;
-    }
-
-    /**
-     * @param theme
-     * @param property
-     * @return
-     */
-    public static String[] splitPropertyName(Theme theme, String property) {
-    	IThemeDescriptor[] descriptors = WorkbenchPlugin.getDefault()
-				.getThemeRegistry().getThemes();
-		for (int i = 0; i < descriptors.length; i++) {
-			IThemeDescriptor themeDescriptor = descriptors[i];
-			String id = themeDescriptor.getId();
-			if (property.startsWith(id + '.')) { // the property starts with
-													// a known theme ID -
-													// extract and return it and
-													// the remaining property
-				return new String[] { property.substring(0, id.length()),
-						property.substring(id.length() + 1) };
-			}
-		}
-
-		// default is simply return the default theme ID and the raw property
-		return new String[] { IThemeManager.DEFAULT_THEME, property };
-    }
-
-    /**
-	 * Not intended to be instantiated.
-	 */
-    private ThemeElementHelper() {
-        // no-op
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistry.java
deleted file mode 100644
index 7761de6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistry.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.ui.themes.IThemeManager;
-
-/**
- * The central manager for Theme descriptors.
- *
- * @since 3.0
- */
-public class ThemeRegistry implements IThemeRegistry {
-
-    private List themes;
-
-    private List colors;
-
-    private List fonts;
-
-    private List categories;
-
-    private Map dataMap;
-
-    /**
-     * Map from String (categoryId) -> Set (presentationIds)
-     */
-    private Map categoryBindingMap;
-
-    /**
-     * Create a new ThemeRegistry.
-     */
-    public ThemeRegistry() {
-        themes = new ArrayList();
-        colors = new ArrayList();
-        fonts = new ArrayList();
-        categories = new ArrayList();
-        dataMap = new HashMap();
-        categoryBindingMap = new HashMap();
-    }
-
-    /**
-     * Add a descriptor to the registry.
-     */
-    void add(IThemeDescriptor desc) {
-        if (findTheme(desc.getId()) != null) {
-			return;
-		}
-        themes.add(desc);
-    }
-
-    /**
-     * Add a descriptor to the registry.
-     */
-    void add(ColorDefinition desc) {
-    	addOrReplaceDescriptor(colors, desc);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#findCategory(java.lang.String)
-     */
-    public ThemeElementCategory findCategory(String id) {
-        return (ThemeElementCategory) findDescriptor(getCategories(), id);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#findColor(java.lang.String)
-     */
-    public ColorDefinition findColor(String id) {
-        return (ColorDefinition) findDescriptor(getColors(), id);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IThemeRegistry#find(java.lang.String)
-     */
-    public IThemeDescriptor findTheme(String id) {
-        return (IThemeDescriptor) findDescriptor(getThemes(), id);
-    }
-
-    /**
-     * @param descriptors
-     * @param id
-     * @return
-     */
-    private IThemeElementDefinition findDescriptor(
-            IThemeElementDefinition[] descriptors, String id) {
-        int idx = Arrays.binarySearch(descriptors, id, ID_COMPARATOR);
-        if (idx < 0) {
-			return null;
-		}
-        return descriptors[idx];
-    }
-
-    /*
-     * Add newElement to descriptors.
-     * If one with the same id already exists, replace it.
-     * Return the existing element in the case of replacing, null in the case of adding.
-     */
-    private IThemeElementDefinition addOrReplaceDescriptor(
-            List descriptors, IThemeElementDefinition newElement) {
-    	String id = newElement.getId();
-    	for (int i = 0; i < descriptors.size(); i++) {
-    		IThemeElementDefinition existingElement = (IThemeElementDefinition) descriptors.get(i);
-    		if(existingElement.getId().equals(id)) {
-    			descriptors.remove(i);
-    			descriptors.add(newElement);
-    			return existingElement;
-    		}
-		}
-    	descriptors.add(newElement);
-        return null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IThemeRegistry#getLookNFeels()
-     */
-    public IThemeDescriptor[] getThemes() {
-        int nSize = themes.size();
-        IThemeDescriptor[] retArray = new IThemeDescriptor[nSize];
-        themes.toArray(retArray);
-        Arrays.sort(retArray, ID_COMPARATOR);
-        return retArray;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.IThemeRegistry#getLookNFeels()
-     */
-    public ColorDefinition[] getColors() {
-        int nSize = colors.size();
-        ColorDefinition[] retArray = new ColorDefinition[nSize];
-        colors.toArray(retArray);
-        Arrays.sort(retArray, ID_COMPARATOR);
-        return retArray;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#getColorsFor(java.lang.String)
-     */
-    public ColorDefinition[] getColorsFor(String themeId) {
-        ColorDefinition[] defs = getColors();
-        if (themeId.equals(IThemeManager.DEFAULT_THEME)) {
-			return defs;
-		}
-
-        IThemeDescriptor desc = findTheme(themeId);
-        ColorDefinition[] overrides = desc.getColors();
-        return (ColorDefinition[]) overlay(defs, overrides);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#getFontsFor(java.lang.String)
-     */
-    public FontDefinition[] getFontsFor(String themeId) {
-        FontDefinition[] defs = getFonts();
-        if (themeId.equals(IThemeManager.DEFAULT_THEME)) {
-			return defs;
-		}
-
-        IThemeDescriptor desc = findTheme(themeId);
-        FontDefinition[] overrides = desc.getFonts();
-        return (FontDefinition[]) overlay(defs, overrides);
-    }
-
-    /**
-     * Overlay the overrides onto the base definitions.
-     * 
-     * @param defs the base definitions
-     * @param overrides the overrides
-     * @return the overlayed elements
-     */
-    private IThemeElementDefinition[] overlay(IThemeElementDefinition[] defs,
-            IThemeElementDefinition[] overrides) {
-        for (int i = 0; i < overrides.length; i++) {
-            int idx = Arrays.binarySearch(defs, overrides[i],
-                    IThemeRegistry.ID_COMPARATOR);
-            if (idx >= 0) {
-                defs[idx] = overlay(defs[idx], overrides[i]);
-            }
-        }
-        return defs;
-    }
-
-    /**
-     * Overlay the override onto the base definition.
-     * 
-     * @param defs the base definition
-     * @param overrides the override
-     * @return the overlayed element
-     */
-    private IThemeElementDefinition overlay(IThemeElementDefinition original,
-            IThemeElementDefinition overlay) {
-        if (original instanceof ColorDefinition) {
-            ColorDefinition originalColor = (ColorDefinition) original;
-            ColorDefinition overlayColor = (ColorDefinition) overlay;
-            return new ColorDefinition(originalColor, overlayColor.getValue());
-        } else if (original instanceof FontDefinition) {
-            FontDefinition originalFont = (FontDefinition) original;
-            FontDefinition overlayFont = (FontDefinition) overlay;
-            return new FontDefinition(originalFont, overlayFont.getValue());
-        }
-        return null;
-    }
-
-    /**
-     * @param definition
-     */
-    void add(FontDefinition definition) {
-        if (findFont(definition.getId()) != null) {
-			return;
-		}
-        fonts.add(definition);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#getGradients()
-     */
-    public FontDefinition[] getFonts() {
-        int nSize = fonts.size();
-        FontDefinition[] retArray = new FontDefinition[nSize];
-        fonts.toArray(retArray);
-        Arrays.sort(retArray, ID_COMPARATOR);
-        return retArray;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#findFont(java.lang.String)
-     */
-    public FontDefinition findFont(String id) {
-        return (FontDefinition) findDescriptor(getFonts(), id);
-    }
-
-    /**
-     * @param definition
-     */
-    void add(ThemeElementCategory definition) {
-        if (findCategory(definition.getId()) != null) {
-			return;
-		}
-        categories.add(definition);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#getCategories()
-     */
-    public ThemeElementCategory[] getCategories() {
-        int nSize = categories.size();
-        ThemeElementCategory[] retArray = new ThemeElementCategory[nSize];
-        categories.toArray(retArray);
-        Arrays.sort(retArray, ID_COMPARATOR);
-        return retArray;
-    }
-
-    /**
-     * @param name
-     * @param value
-     */
-    void setData(String name, String value) {
-        if (dataMap.containsKey(name)) {
-			return;
-		}
-        
-        dataMap.put(name, value);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#getData()
-     */
-    public Map getData() {
-        return Collections.unmodifiableMap(dataMap);
-    }
-
-    /**
-     * Add the data from another map to this data
-     * 
-     * @param otherData the other data to add
-     */
-    public void addData(Map otherData) {
-        for (Iterator i = otherData.keySet().iterator(); i.hasNext();) {
-            Object key = i.next();
-            if (dataMap.containsKey(key)) {
-				continue;
-			}
-            dataMap.put(key, otherData.get(key));
-        }
-    }
-
-    /**
-     * Add a category presentation binding.  The given category will only be 
-     * availible if the given presentation is active.
-     * 
-     * @param categoryId the category id
-     * @param presentationId the presentation id
-     */
-    public void addCategoryPresentationBinding(String categoryId,
-            String presentationId) {
-        Set presentations = (Set) categoryBindingMap.get(categoryId);
-        if (presentations == null) {
-            presentations = new HashSet();
-            categoryBindingMap.put(categoryId, presentations);
-        }
-        presentations.add(presentationId);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.themes.IThemeRegistry#getPresentationsBindingsFor(org.eclipse.ui.internal.themes.ThemeElementCategory)
-     */
-    public Set getPresentationsBindingsFor(ThemeElementCategory category) {
-        return (Set) categoryBindingMap.get(category.getId());
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.java
deleted file mode 100644
index d8a32b4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.java
+++ /dev/null
@@ -1,467 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.registry.RegistryReader;
-import org.eclipse.ui.themes.IColorFactory;
-
-/**
- * Registry reader for themes.
- *
- * @since 3.0
- */
-public class ThemeRegistryReader extends RegistryReader {
-
-    /**
-     * The translation bundle in which to look up internationalized text.
-     */
-    private final static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-            .getBundle(ThemeRegistryReader.class.getName());
-
-    private Collection categoryDefinitions = new HashSet();
-
-    private Collection colorDefinitions = new HashSet();
-
-    private Collection fontDefinitions = new HashSet();
-
-    private ThemeDescriptor themeDescriptor = null;
-
-    private ThemeRegistry themeRegistry;
-
-    private Map dataMap = new HashMap();
-
-    /**
-     * ThemeRegistryReader constructor comment.
-     */
-    public ThemeRegistryReader() {
-        super();
-    }
-
-    /**
-     * Returns the category definitions.
-     *
-     * @return the category definitions
-     */
-    public Collection getCategoryDefinitions() {
-        return categoryDefinitions;
-    }
-
-    /**
-     * Returns the color definitions.
-     *
-     * @return the color definitions
-     */
-    public Collection getColorDefinitions() {
-        return colorDefinitions;
-    }
-
-    /**
-     * Returns the data map.
-     * 
-     * @return the data map
-     */
-    public Map getData() {
-        return dataMap;
-    }
-
-    /**     
-     * Returns the font definitions.
-     *
-     * @return the font definitions
-     */
-    public Collection getFontDefinitions() {
-        return fontDefinitions;
-    }
-
-    /**
-     * Read a category.
-     * 
-     * @param element the element to read
-     * @return the new category
-     */
-    private ThemeElementCategory readCategory(IConfigurationElement element) {
-        String name = element.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-        String parentId = element.getAttribute(IWorkbenchRegistryConstants.ATT_PARENT_ID);
-
-        String description = null;
-
-        IConfigurationElement[] descriptions = element
-                .getChildren(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-
-        if (descriptions.length > 0) {
-			description = descriptions[0].getValue();
-		}
-
-        return new ThemeElementCategory(name, id, parentId, description,
-                element.getNamespace(), element);
-    }
-
-    /**
-     * Read a color.
-     * 
-     * @param element the element to read
-     * @return the new color
-     */
-    private ColorDefinition readColor(IConfigurationElement element) {
-        String name = element.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-
-        String defaultMapping = element.getAttribute(IWorkbenchRegistryConstants.ATT_DEFAULTS_TO);
-
-        String value = getPlatformSpecificColorValue(element
-                .getChildren(IWorkbenchRegistryConstants.TAG_COLORVALUE));
-
-        if (value == null) {
-            value = getColorValue(element);
-        }
-
-        if ((value == null && defaultMapping == null)
-                || (value != null && defaultMapping != null)) {
-            logError(element, RESOURCE_BUNDLE.getString("Colors.badDefault")); //$NON-NLS-1$
-            return null;
-        }
-
-        String categoryId = element.getAttribute(IWorkbenchRegistryConstants.ATT_CATEGORY_ID);
-
-        String description = null;
-        boolean isEditable = true;
-        String isEditableString = element.getAttribute(IWorkbenchRegistryConstants.ATT_IS_EDITABLE);
-        if (isEditableString != null) {
-            isEditable = Boolean.valueOf(isEditableString).booleanValue();
-        }
-
-        IConfigurationElement[] descriptions = element
-                .getChildren(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-
-        if (descriptions.length > 0) {
-			description = descriptions[0].getValue();
-		}
-
-        return new ColorDefinition(name, id, defaultMapping, value, categoryId,
-                isEditable, description, element.getDeclaringExtension()
-                        .getNamespace());
-    }
-
-    /**
-     * Gets the color value, either via the value attribute or from a color 
-     * factory.
-     * 
-     * @param element the element to check
-     * @return the color string
-     */
-    private String getColorValue(IConfigurationElement element) {
-        if (element == null) {
-			return null;
-		}
-
-        String value = element.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-        if (value == null) {
-            value = checkColorFactory(element);
-        }
-        return value;
-    }
-
-    /**
-     * Check for platform specific color values.  This will return the 
-     * "best match" for the current platform.
-     * 
-     * @param elements the elements to check
-     * @return the platform specific color, if any
-     */
-    private String getPlatformSpecificColorValue(
-            IConfigurationElement[] elements) {
-        return getColorValue(getBestPlatformMatch(elements));
-    }
-
-    /**
-     * Get the element that has os/ws attributes that best match the current 
-     * platform.
-     * 
-     * @param elements the elements to check
-     * @return the best match, if any
-     */
-    private IConfigurationElement getBestPlatformMatch(
-            IConfigurationElement[] elements) {
-        IConfigurationElement match = null;
-
-        String osname = Platform.getOS();
-        String wsname = Platform.getWS();
-
-        for (int i = 0; i < elements.length; i++) {
-            IConfigurationElement element = elements[i];
-            String elementOs = element.getAttribute(IWorkbenchRegistryConstants.ATT_OS);
-            String elementWs = element.getAttribute(IWorkbenchRegistryConstants.ATT_WS);
-
-            if (osname.equalsIgnoreCase(elementOs)) {
-                if (wsname.equalsIgnoreCase(elementWs)) {
-                    // best possible match.  Return
-                    return element;
-                }
-                match = element;
-            } else if (wsname.equalsIgnoreCase(elementWs)) {
-                match = element;
-            }
-        }
-
-        return match;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.registry.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-     */
-    public boolean readElement(IConfigurationElement element) {
-        String elementName = element.getName();
-        if (themeDescriptor == null && elementName.equals(IWorkbenchRegistryConstants.TAG_COLORDEFINITION)) {
-            ColorDefinition definition = readColor(element);
-            if (definition != null) {
-                if (!colorDefinitions.contains(definition)) {
-	                colorDefinitions.add(definition);
-	                themeRegistry.add(definition);
-                }
-            }
-            return true;
-        } else if (themeDescriptor != null
-                && elementName.equals(IWorkbenchRegistryConstants.TAG_COLOROVERRIDE)) {
-            ColorDefinition definition = readColor(element);
-            if (definition != null) {                
-                themeDescriptor.add(definition);
-            }
-            return true;
-        } else if (themeDescriptor == null
-                && elementName.equals(IWorkbenchRegistryConstants.TAG_FONTDEFINITION)) {
-            FontDefinition definition = readFont(element);
-            if (definition != null) {
-                if (!fontDefinitions.contains(definition)) {
-	                fontDefinitions.add(definition);
-	                themeRegistry.add(definition);
-                }
-            }
-            return true;
-        } else if (themeDescriptor != null
-                && elementName.equals(IWorkbenchRegistryConstants.TAG_FONTOVERRIDE)) {
-            FontDefinition definition = readFont(element);
-            if (definition != null) {
-                themeDescriptor.add(definition);
-            }
-            return true;
-        } else if (themeDescriptor == null
-                && elementName.equals(IWorkbenchRegistryConstants.TAG_CATEGORYDEFINITION)) {
-            ThemeElementCategory definition = readCategory(element);
-            if (definition != null) {
-                if (!categoryDefinitions.contains(definition)) {
-	                categoryDefinitions.add(definition);
-	                themeRegistry.add(definition);
-                }
-            }
-            return true;
-        } else if (element.getName().equals(IWorkbenchRegistryConstants.TAG_THEME)) {
-            if (themeDescriptor != null) {
-				logError(element, RESOURCE_BUNDLE
-                        .getString("Themes.badNesting")); //$NON-NLS-1$
-			} else {
-                themeDescriptor = readTheme(element);
-                if (themeDescriptor != null) {
-                    readElementChildren(element);
-                    themeDescriptor = null;
-                }
-                return true;
-            }
-        } else if (themeDescriptor != null
-                && elementName.equals(IWorkbenchRegistryConstants.TAG_DESCRIPTION)) {
-            themeDescriptor.setDescription(element.getValue());
-            return true;
-        } else if (elementName.equals(IWorkbenchRegistryConstants.TAG_DATA)) {
-            String name = element.getAttribute(IWorkbenchRegistryConstants.ATT_NAME);
-            String value = element.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-            if (name == null || value == null) {
-                logError(element, RESOURCE_BUNDLE.getString("Data.badData")); //$NON-NLS-1$			    
-            } else {
-                if (themeDescriptor != null) {
-                    themeDescriptor.setData(name, value);
-                } else {
-                    themeRegistry.setData(name, value);
-                    if (!dataMap.containsKey(name)) {
-						dataMap.put(name, value);
-					}
-                }
-            }
-            return true;
-        } else if (elementName.equals(IWorkbenchRegistryConstants.TAG_CATEGORYPRESENTATIONBINDING)) {
-            String categoryId = element.getAttribute(IWorkbenchRegistryConstants.ATT_CATEGORY_ID);
-            String presentationId = element.getAttribute(IWorkbenchRegistryConstants.ATT_PRESENTATIONID);
-            themeRegistry.addCategoryPresentationBinding(categoryId,
-                    presentationId);
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Read a font.
-     * 
-     * @param element the element to read
-     * @return the new font
-     */
-    private FontDefinition readFont(IConfigurationElement element) {
-        String name = element.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-
-        String id = element.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
-
-        String defaultMapping = element.getAttribute(IWorkbenchRegistryConstants.ATT_DEFAULTS_TO);
-
-        String value = getPlatformSpecificFontValue(element
-                .getChildren(IWorkbenchRegistryConstants.TAG_FONTVALUE));
-        if (value == null) {
-            value = element.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-        }
-
-        if (value != null && defaultMapping != null) {
-            logError(element, RESOURCE_BUNDLE.getString("Fonts.badDefault")); //$NON-NLS-1$
-            return null;
-        }
-
-        String categoryId = element.getAttribute(IWorkbenchRegistryConstants.ATT_CATEGORY_ID);
-
-        boolean isEditable = true;
-        String isEditableString = element.getAttribute(IWorkbenchRegistryConstants.ATT_IS_EDITABLE);
-        if (isEditableString != null) {
-            isEditable = Boolean.valueOf(isEditableString).booleanValue();
-        }
-
-        String description = null;
-
-        IConfigurationElement[] descriptions = element
-                .getChildren(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
-
-        if (descriptions.length > 0) {
-			description = descriptions[0].getValue();
-		}
-
-        return new FontDefinition(name, id, defaultMapping, value, categoryId,
-                isEditable, description);
-    }
-
-    /**
-     * Check for platform specific font values.  This will return the 
-     * "best match" for the current platform.
-     * 
-     * @param elements the elements to check
-     * @return the platform specific font, if any
-     */
-    private String getPlatformSpecificFontValue(IConfigurationElement[] elements) {
-        return getFontValue(getBestPlatformMatch(elements));
-    }
-
-    /**
-     * Gets the font valu from the value attribute.
-     * 
-     * @param element the element to check
-     * @return the font string
-     */
-    private String getFontValue(IConfigurationElement element) {
-        if (element == null) {
-			return null;
-		}
-
-        return element.getAttribute(IWorkbenchRegistryConstants.ATT_VALUE);
-    }
-
-    /**
-     * Attempt to load the color value from the colorFactory attribute.
-     *
-     * @param element the element to load from 
-     * @return the value, or null if it could not be obtained
-     */
-    private String checkColorFactory(IConfigurationElement element) {
-        String value = null;
-        if (element.getAttribute(IWorkbenchRegistryConstants.ATT_COLORFACTORY) != null
-                || element.getChildren(IWorkbenchRegistryConstants.ATT_COLORFACTORY).length > 0) {
-            try {
-                IColorFactory factory = (IColorFactory) element
-                        .createExecutableExtension(IWorkbenchRegistryConstants.ATT_COLORFACTORY);
-                value = StringConverter.asString(factory.createColor());
-            } catch (Exception e) {
-                WorkbenchPlugin.log(RESOURCE_BUNDLE
-                        .getString("Colors.badFactory"), //$NON-NLS-1$ 
-                        WorkbenchPlugin.getStatus(e));
-            }
-        }
-        return value;
-    }
-
-    /**
-     * Read a theme.
-     * 
-     * @param element the element to read
-     * @return the new theme
-     */
-    protected ThemeDescriptor readTheme(IConfigurationElement element) {
-        ThemeDescriptor desc = null;
-
-        String id = element.getAttribute(ThemeDescriptor.ATT_ID);
-        if (id == null) {
-			return null;
-		}
-        //see if the theme has already been created in another extension
-        desc = (ThemeDescriptor) themeRegistry.findTheme(id);
-        //if not, create it
-        if (desc == null) {
-            desc = new ThemeDescriptor(id);
-            themeRegistry.add(desc);
-        }
-        //set the name as applicable
-        desc.extractName(element);
-    
-        return desc;
-    }
-
-    /**
-     * Read the theme extensions within a registry.
-     * 
-     * @param in the registry to read
-     * @param out the registry to write to
-     */
-    public void readThemes(IExtensionRegistry in, ThemeRegistry out) {
-        // this does not seem to really ever be throwing an the exception
-        setRegistry(out);
-        readRegistry(in, PlatformUI.PLUGIN_ID, IWorkbenchRegistryConstants.PL_THEMES);
-
-        // support for old font definitions
-        readRegistry(in, PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_FONT_DEFINITIONS);
-    }
-
-    /**
-     * Set the output registry.
-     * 
-     * @param out the output registry
-     */
-    public void setRegistry(ThemeRegistry out) {
-        themeRegistry = out;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties
deleted file mode 100644
index e3ba517..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/ThemeRegistryReader.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-Colors.badFactory=Could not create color factory.
-Colors.badDefault=Only one of value or defaultMapping may be set.
-Fonts.badDefault=Only one or neither of value or defaultMapping may be set.
-Gradients.badPercentage=Percentage must be a positive integer.
-Gradients.badGradientValue=Value must be present.
-Themes.badNesting=Cannot have nested themes.
-Data.badData=Name and value must be present for data elements.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchPreview.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchPreview.java
deleted file mode 100644
index 238233e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchPreview.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.IWorkbenchThemeConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemePreview;
-
-/**
- * @since 3.0
- */
-public class WorkbenchPreview implements IThemePreview {
-	
-	  // don't reset this dynamically, so just keep the information static.
-	// see bug:
-	//   75422 [Presentations] Switching presentation to R21 switches immediately, but only partially
-    private static int tabPos = PlatformUI.getPreferenceStore().getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-  
-    private boolean disposed = false;
-
-    private CTabFolder folder;
-
-    private ITheme theme;
-
-    private ToolBar toolBar;
-
-    private CLabel viewMessage;
-
-    private ViewForm viewForm;
-
-    private IPropertyChangeListener fontAndColorListener = new IPropertyChangeListener() {
-        public void propertyChange(PropertyChangeEvent event) {
-            if (!disposed) {
-                setColorsAndFonts();
-                //viewMessage.setSize(viewMessage.computeSize(SWT.DEFAULT, SWT.DEFAULT, true));
-                viewForm.layout(true);
-            }
-        }
-    };
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPresentationPreview#createControl(org.eclipse.swt.widgets.Composite, org.eclipse.ui.themes.ITheme)
-     */
-    public void createControl(Composite parent, ITheme currentTheme) {
-        this.theme = currentTheme;
-        folder = new CTabFolder(parent, SWT.BORDER);
-        folder.setUnselectedCloseVisible(false);
-        folder.setEnabled(false);
-        folder.setMaximizeVisible(true);
-        folder.setMinimizeVisible(true);
-
-        viewForm = new ViewForm(folder, SWT.NONE);
-        viewForm.marginHeight = 0;
-        viewForm.marginWidth = 0;
-        viewForm.verticalSpacing = 0;
-        viewForm.setBorderVisible(false);
-        toolBar = new ToolBar(viewForm, SWT.FLAT | SWT.WRAP);
-        ToolItem toolItem = new ToolItem(toolBar, SWT.PUSH);
-
-        Image hoverImage = WorkbenchImages
-                .getImage(IWorkbenchGraphicConstants.IMG_LCL_VIEW_MENU);
-        toolItem.setImage(hoverImage);
-
-        viewForm.setTopRight(toolBar);
-
-        viewMessage = new CLabel(viewForm, SWT.NONE);
-        viewMessage.setText("Etu?"); //$NON-NLS-1$
-        viewForm.setTopLeft(viewMessage);
-
-        CTabItem item = new CTabItem(folder, SWT.CLOSE);
-        item.setText("Lorem"); //$NON-NLS-1$
-        Label text = new Label(viewForm, SWT.NONE);
-        viewForm.setContent(text);
-        text.setText("Lorem ipsum dolor sit amet"); //$NON-NLS-1$
-        item = new CTabItem(folder, SWT.CLOSE);
-        item.setText("Ipsum"); //$NON-NLS-1$
-        item.setControl(viewForm);
-        item.setImage(WorkbenchImages.getImage(ISharedImages.IMG_TOOL_COPY));
-
-        folder.setSelection(item);
-
-        item = new CTabItem(folder, SWT.CLOSE);
-        item.setText("Dolor"); //$NON-NLS-1$
-        item = new CTabItem(folder, SWT.CLOSE);
-        item.setText("Sit"); //$NON-NLS-1$
-
-        currentTheme.addPropertyChangeListener(fontAndColorListener);
-        setColorsAndFonts();
-        setTabPosition();
-        setTabStyle();
-    }
-
-    /**
-     * Set the tab style from preferences.
-     */
-    protected void setTabStyle() {
-        boolean traditionalTab = PlatformUI.getPreferenceStore()
-                .getBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS);
-        folder.setSimple(traditionalTab);
-    }
-
-    /**
-     * Set the tab location from preferences.
-     */
-    protected void setTabPosition() {
-        tabPos = PlatformUI.getPreferenceStore().getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-        folder.setTabPosition(tabPos);
-    }
-
-    /**
-     * Set the folder colors and fonts
-     */
-    private void setColorsAndFonts() {
-        folder.setSelectionForeground(theme.getColorRegistry().get(
-                IWorkbenchThemeConstants.ACTIVE_TAB_TEXT_COLOR));
-        folder.setForeground(theme.getColorRegistry().get(
-                IWorkbenchThemeConstants.INACTIVE_TAB_TEXT_COLOR));
-
-        Color[] colors = new Color[2];
-        colors[0] = theme.getColorRegistry().get(
-                IWorkbenchThemeConstants.INACTIVE_TAB_BG_START);
-        colors[1] = theme.getColorRegistry().get(
-                IWorkbenchThemeConstants.INACTIVE_TAB_BG_END);
-        colors[0] = theme.getColorRegistry().get(
-                IWorkbenchThemeConstants.ACTIVE_TAB_BG_START);
-        colors[1] = theme.getColorRegistry().get(
-                IWorkbenchThemeConstants.ACTIVE_TAB_BG_END);
-        folder.setSelectionBackground(colors, new int[] { theme
-                .getInt(IWorkbenchThemeConstants.ACTIVE_TAB_PERCENT) }, theme
-                .getBoolean(IWorkbenchThemeConstants.ACTIVE_TAB_VERTICAL));
-
-        folder.setFont(theme.getFontRegistry().get(
-                IWorkbenchThemeConstants.TAB_TEXT_FONT));
-        viewMessage.setFont(theme.getFontRegistry().get(
-                IWorkbenchThemeConstants.VIEW_MESSAGE_TEXT_FONT));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IPresentationPreview#dispose()
-     */
-    public void dispose() {
-        disposed = true;
-        theme.removePropertyChangeListener(fontAndColorListener);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java
deleted file mode 100644
index 4a64fdd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/themes/WorkbenchThemeManager.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.themes;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.util.PrefUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-import org.eclipse.ui.themes.ITheme;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * Theme manager for the Workbench.
- * 
- * @since 3.0
- */
-public class WorkbenchThemeManager extends EventManager implements
-		IThemeManager {
-
-	private static final String SYSTEM_DEFAULT_THEME = "org.eclipse.ui.ide.systemDefault";//$NON-NLS-1$
-
-	private static WorkbenchThemeManager instance;
-
-	/**
-	 * Returns the singelton instance of the WorkbenchThemeManager
-	 * 
-	 * @return singleton instance
-	 */
-	public static synchronized WorkbenchThemeManager getInstance() {
-		if (instance == null) {
-			instance = new WorkbenchThemeManager();
-			instance.getCurrentTheme(); // initialize the current theme
-		}
-		return instance;
-	}
-
-	private ITheme currentTheme;
-
-	private IPropertyChangeListener currentThemeListener = new IPropertyChangeListener() {
-
-		public void propertyChange(PropertyChangeEvent event) {
-			firePropertyChange(event);
-			if (event.getSource() instanceof FontRegistry) {
-				JFaceResources.getFontRegistry().put(event.getProperty(),
-						(FontData[]) event.getNewValue());
-			} else if (event.getSource() instanceof ColorRegistry) {
-				JFaceResources.getColorRegistry().put(event.getProperty(),
-						(RGB) event.getNewValue());
-			}
-		}
-	};
-
-	private ColorRegistry defaultThemeColorRegistry;
-
-	private FontRegistry defaultThemeFontRegistry;
-
-	private IThemeRegistry themeRegistry;
-
-	private Map themes = new HashMap(7);
-
-	/*
-	 * Initialize the WorkbenchThemeManager.
-	 * Determine the default theme according to the following rules:
-	 *   1) If we're in HC mode then default to system default
-	 *   2) Otherwise, if preference already set (e.g. via plugin_customization.ini), then observe that value
-	 *   3) Otherwise, use our default
-	 * Call dispose when we close.
-	 */
-	private WorkbenchThemeManager() {
-		defaultThemeColorRegistry = new ColorRegistry(PlatformUI.getWorkbench()
-				.getDisplay());
-
-		defaultThemeFontRegistry = new FontRegistry(PlatformUI.getWorkbench()
-				.getDisplay());
-
-		// copy the font values from preferences.
-		FontRegistry jfaceFonts = JFaceResources.getFontRegistry();
-		for (Iterator i = jfaceFonts.getKeySet().iterator(); i.hasNext();) {
-			String key = (String) i.next();
-			defaultThemeFontRegistry.put(key, jfaceFonts.getFontData(key));
-		}
-
-		//Theme might be set via plugin_configuration.ini
-		String themeId = PrefUtil.getAPIPreferenceStore().getDefaultString(IWorkbenchPreferenceConstants.CURRENT_THEME_ID);
-
-		//If not set, use default
-		if(themeId.length() == 0)
-			themeId = IThemeManager.DEFAULT_THEME;
-			
-		// Check if we are in high contrast mode. If so then set the theme to
-		// the system default
-		if (PlatformUI.getWorkbench().getDisplay() != null) {
-			// Determine the high contrast setting before
-			// any access to preferences
-			final boolean[] highContrast = new boolean[] { false };
-			PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see java.lang.Runnable#run()
-				 */
-				public void run() {
-					highContrast[0] = Display.getCurrent().getHighContrast();
-
-					Display.getCurrent().addListener(SWT.Settings, new Listener() {
-						public void handleEvent(Event event) {
-							updateThemes();
-						}
-					});
-				}
-			});
-			
-			//If in HC, *always* use the system default.
-			//This ignores any default theme set via plugin_customization.ini
-			if (highContrast[0])
-				themeId = SYSTEM_DEFAULT_THEME;
-		}
-
-		PrefUtil.getAPIPreferenceStore().setDefault(
-				IWorkbenchPreferenceConstants.CURRENT_THEME_ID, themeId);
-	}
-
-	/*
-	 * Update existing theme contents, descriptors, and registries.
-	 * Reread the themes and recompute the registries.
-	 */	
-	private void updateThemes() {
-		//reread the themes since their descriptors have changed in value
-        ThemeRegistryReader reader = new ThemeRegistryReader();
-        reader.readThemes(Platform.getExtensionRegistry(),(ThemeRegistry) getThemeRegistry());   
-
-        //DEFAULT_THEME is not in getThemes() list so must be handled special
-        ThemeElementHelper.populateRegistry(getTheme(IThemeManager.DEFAULT_THEME), getThemeRegistry().getColors(), PrefUtil.getInternalPreferenceStore());			
-        
-        IThemeDescriptor[] themeDescriptors = getThemeRegistry().getThemes();
-
-       	for (int i=0; i < themeDescriptors.length; i++) {
-        	IThemeDescriptor themeDescriptor = themeDescriptors[i];
-    		ITheme theme = (ITheme) themes.get(themeDescriptor);
-    		//If theme is in our themes table then its already been populated
-    		if (theme != null) {
-                ColorDefinition[] colorDefinitions = themeDescriptor.getColors();
-              
-               if (colorDefinitions.length > 0) {
-                	ThemeElementHelper.populateRegistry(theme, colorDefinitions,PrefUtil.getInternalPreferenceStore());
-                }
-    		}
-		}
-	}
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.themes.IThemeManager#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		addListenerObject(listener);
-	}
-
-	/**
-	 * Disposes all ThemeEntries.
-	 */
-	public void dispose() {
-		for (Iterator i = themes.values().iterator(); i.hasNext();) {
-			ITheme theme = (ITheme) i.next();
-			theme.removePropertyChangeListener(currentThemeListener);
-			theme.dispose();
-		}
-		themes.clear();
-	}
-
-	private boolean doSetCurrentTheme(String id) {
-		ITheme oldTheme = currentTheme;
-		ITheme newTheme = getTheme(id);
-		if (oldTheme != newTheme && newTheme != null) {
-			currentTheme = newTheme;
-			return true;
-		}
-
-		return false;
-	}
-
-	protected void firePropertyChange(PropertyChangeEvent event) {
-		Object[] listeners = getListeners();
-
-		for (int i = 0; i < listeners.length; i++) {
-			((IPropertyChangeListener) listeners[i]).propertyChange(event);
-		}
-	}
-
-	protected void firePropertyChange(String changeId, ITheme oldTheme,
-			ITheme newTheme) {
-
-		PropertyChangeEvent event = new PropertyChangeEvent(this, changeId,
-				oldTheme, newTheme);
-		firePropertyChange(event);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.themes.IThemeManager#getCurrentTheme()
-	 */
-	public ITheme getCurrentTheme() {
-		if (currentTheme == null) {
-			String themeId = PrefUtil.getAPIPreferenceStore().getString(
-					IWorkbenchPreferenceConstants.CURRENT_THEME_ID);
-
-			if (themeId == null) // missing preference
-				setCurrentTheme(IThemeManager.DEFAULT_THEME);
-			else {
-				setCurrentTheme(themeId);
-				if (currentTheme == null) { // still null - the preference
-											// didn't resolve to a proper theme
-					setCurrentTheme(IThemeManager.DEFAULT_THEME);
-					StatusManager
-							.getManager()
-							.handle(
-									StatusUtil
-											.newStatus(
-													PlatformUI.PLUGIN_ID,
-													"Could not restore current theme: " + themeId, null)); //$NON-NLS-1$
-				}
-			}			
-		}
-		return currentTheme;
-	}
-
-	/**
-	 * Return the default color registry.
-	 * 
-	 * @return the default color registry
-	 */
-	public ColorRegistry getDefaultThemeColorRegistry() {
-		return defaultThemeColorRegistry;
-	}
-
-	/**
-	 * Return the default font registry.
-	 * 
-	 * @return the default font registry
-	 */
-	public FontRegistry getDefaultThemeFontRegistry() {
-		return defaultThemeFontRegistry;
-	}
-
-	private ITheme getTheme(IThemeDescriptor td) {
-		ITheme theme = (ITheme) themes.get(td);
-		if (theme == null) {
-			theme = new Theme(td);
-			themes.put(td, theme);
-		}
-		return theme;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.themes.IThemeManager#getTheme(java.lang.String)
-	 */
-	public ITheme getTheme(String id) {
-		if (id.equals(IThemeManager.DEFAULT_THEME)) {
-			return getTheme((IThemeDescriptor) null);
-		}
-
-		IThemeDescriptor td = getThemeRegistry().findTheme(id);
-		if (td == null) {
-			return null;
-		}
-		return getTheme(td);
-	}
-
-	/**
-	 * Answer the IThemeRegistry for the Workbench
-	 */
-	private IThemeRegistry getThemeRegistry() {
-		if (themeRegistry == null) {
-			themeRegistry = WorkbenchPlugin.getDefault().getThemeRegistry();
-		}
-		return themeRegistry;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.themes.IThemeManager#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		removeListenerObject(listener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.themes.IThemeManager#setCurrentTheme(java.lang.String)
-	 */
-	public void setCurrentTheme(String id) {
-		ITheme oldTheme = currentTheme;
-		if (WorkbenchThemeManager.getInstance().doSetCurrentTheme(id)) {
-			firePropertyChange(CHANGE_CURRENT_THEME, oldTheme,
-					getCurrentTheme());
-			if (oldTheme != null) {
-				oldTheme.removePropertyChangeListener(currentThemeListener);
-			}
-			currentTheme.addPropertyChangeListener(currentThemeListener);
-
-			// update the preference if required.
-			if (!PrefUtil.getAPIPreferenceStore().getString(
-					IWorkbenchPreferenceConstants.CURRENT_THEME_ID).equals(id)) {
-				PrefUtil.getAPIPreferenceStore().setValue(
-						IWorkbenchPreferenceConstants.CURRENT_THEME_ID, id);
-				PrefUtil.saveAPIPrefs();
-			}
-
-			// update the jface registries
-			{
-				ColorRegistry jfaceColors = JFaceResources.getColorRegistry();
-				ColorRegistry themeColors = currentTheme.getColorRegistry();
-				for (Iterator i = themeColors.getKeySet().iterator(); i
-						.hasNext();) {
-					String key = (String) i.next();
-					jfaceColors.put(key, themeColors.getRGB(key));
-				}
-			}
-			{
-				FontRegistry jfaceFonts = JFaceResources.getFontRegistry();
-				FontRegistry themeFonts = currentTheme.getFontRegistry();
-				for (Iterator i = themeFonts.getKeySet().iterator(); i
-						.hasNext();) {
-					String key = (String) i.next();
-					jfaceFonts.put(key, themeFonts.getFontData(key));
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/AllowGrabFocus.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/AllowGrabFocus.java
deleted file mode 100644
index 05e449e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/AllowGrabFocus.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * @since 3.3
- * 
- */
-public class AllowGrabFocus extends GrabFocus {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.tweaklets.GrabFocusManager#allowGrabFocus(org.eclipse.ui.IWorkbenchPart)
-	 */
-	public boolean grabFocusAllowed(IWorkbenchPart part) {
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.tweaklets.GrabFocusManager#init(Display)
-	 */
-	public void init(Display display) {
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.GrabFocusManager#dispose()
-	 */
-	public void dispose() {
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Animations.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Animations.java
deleted file mode 100644
index f5edb33..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Animations.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.RectangleAnimationFeedbackBase;
-import org.eclipse.ui.internal.tweaklets.Tweaklets.TweakKey;
-
-/**
- * Animation tweaklet base class. Create (and register) a tweaklet
- * extension derived from this class to provide alternate animation
- * behavior. Currently only affects animations produced by the new
- * min / max behavior. 
- * 
- * @since 3.3
- *
- */
-public abstract class Animations {
-	public static TweakKey KEY = new Tweaklets.TweakKey(Animations.class);
-
-	static {
-		Tweaklets.setDefault(Animations.KEY, new LegacyAnimations());
-	}
-
-	/** Default c'tor */
-	public Animations() {}
-	
-	/**
-	 * Create and return the animation feedback you want to use.
-	 * 
-	 * @param shell The shell that the animation will be in
-	 * @return The feedback renderer to use.
-	 */
-	public abstract RectangleAnimationFeedbackBase createFeedback(Shell shell);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/GrabFocus.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/GrabFocus.java
deleted file mode 100644
index f68f3df..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/GrabFocus.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.tweaklets.Tweaklets.TweakKey;
-
-/**
- * The tweaklet provider can prevent the workbench page from grabbing focus.
- * 
- * @since 3.3
- */
-public abstract class GrabFocus {
-	public static TweakKey KEY = new Tweaklets.TweakKey(GrabFocus.class);
-
-	static {
-		Tweaklets.setDefault(GrabFocus.KEY, new AllowGrabFocus());
-	}
-
-	public abstract boolean grabFocusAllowed(IWorkbenchPart part);
-
-	public abstract void init(Display display);
-
-	public abstract void dispose();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/ImageAnimationTweak.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/ImageAnimationTweak.java
deleted file mode 100644
index c610926..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/ImageAnimationTweak.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.RectangleAnimationFeedbackBase;
-import org.eclipse.ui.internal.RectangleAnimationImageFeedback;
-
-/**
- * Return an animation feedback that uses images.
- * 
- * @since 3.3
- *
- */
-public class ImageAnimationTweak extends Animations {
-	/** Default c'tor */
-	public ImageAnimationTweak() {}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.Animations#getFeedback()
-	 */
-	public RectangleAnimationFeedbackBase createFeedback(Shell shell) {
-		return new RectangleAnimationImageFeedback(shell, null, null);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/InterceptContributions.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/InterceptContributions.java
deleted file mode 100644
index 145b7ce..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/InterceptContributions.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.internal.tweaklets.Tweaklets.TweakKey;
-
-/**
- * @since 3.4
- * 
- */
-public abstract class InterceptContributions {
-	public static TweakKey KEY = new Tweaklets.TweakKey(
-			InterceptContributions.class);
-
-	static {
-		Tweaklets.setDefault(InterceptContributions.KEY,
-				new InterceptContributions() {
-					public IViewPart tweakView(Object viewContribution) {
-						return (IViewPart) viewContribution;
-					}
-					public IEditorPart tweakEditor(Object editorContribution) {
-						return (IEditorPart) editorContribution;
-					}
-				});
-	}
-
-	/** Default constructor */
-	public InterceptContributions() {
-	}
-
-	/**
-	 * Tweak the given view contribution.
-	 * 
-	 * @param viewContribution
-	 *            The contributed instance
-	 * @return The view part to use
-	 */
-	public abstract IViewPart tweakView(Object viewContribution);
-
-	/**
-	 * Tweak the given editor contribution.
-	 * 
-	 * @param editorContribution
-	 *            The contributed instance
-	 * @return The editor part to use
-	 */
-	public abstract IEditorPart tweakEditor(Object editorContribution);
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/LegacyAnimations.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/LegacyAnimations.java
deleted file mode 100644
index 668f053..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/LegacyAnimations.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.LegacyAnimationFeedback;
-import org.eclipse.ui.internal.RectangleAnimationFeedbackBase;
-
-/**
- * Return the default (legacy) animation.
- * 
- * @since 3.3
- *
- */
-public class LegacyAnimations extends Animations {
-	/** Default c'tor */
-	public LegacyAnimations() {}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.Animations#getFeedback()
-	 */
-	public RectangleAnimationFeedbackBase createFeedback(Shell shell) {
-		return new LegacyAnimationFeedback(shell, null, null);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviour.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviour.java
deleted file mode 100644
index 6736ce5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviour.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.internal.EditorAreaHelper;
-import org.eclipse.ui.internal.EditorManager;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-import org.eclipse.ui.internal.tweaklets.Tweaklets.TweakKey;
-
-/**
- * @since 3.3
- * 
- */
-public abstract class TabBehaviour {
-
-	public static TweakKey KEY = new Tweaklets.TweakKey(TabBehaviour.class);
-
-	static {
-		Tweaklets.setDefault(TabBehaviour.KEY, new TabBehaviourMRU());
-	}
-
-	/**
-	 * 
-	 * @return
-	 */
-	public abstract boolean alwaysShowPinAction();
-
-	/**
-	 * 
-	 * @param page
-	 * @return
-	 */
-	public abstract IEditorReference findReusableEditor(WorkbenchPage page);
-
-	public abstract IEditorReference reuseInternalEditor(WorkbenchPage page,
-			EditorManager manager, EditorAreaHelper editorPresentation,
-			EditorDescriptor desc, IEditorInput input,
-			IEditorReference reusableEditorRef);
-
-	/**
-	 * Does nothing by default. Can be overridden by subclasses. 
-	 * 
-	 * @param editorReuseGroup
-	 * @param showMultipleEditorTabs
-	 */
-	public void setPreferenceVisibility(Composite editorReuseGroup,
-			Button showMultipleEditorTabs) {
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean autoPinOnDirty() {
-		return false;
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean isPerTabHistoryEnabled() {
-		return false;
-	}
-
-	/**
-	 * @param originalMatchFlags
-	 * @return
-	 */
-	public int getReuseEditorMatchFlags(int originalMatchFlags) {
-		return originalMatchFlags;
-	}
-
-	/**
-	 * @return
-	 */
-	public int getEditorReuseThreshold() {
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		return store.getInt(IPreferenceConstants.REUSE_EDITORS);
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean enableMRUTabVisibility() {
-		return true;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java
deleted file mode 100644
index eb67b1f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/TabBehaviourMRU.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IReusableEditor;
-import org.eclipse.ui.internal.EditorAreaHelper;
-import org.eclipse.ui.internal.EditorManager;
-import org.eclipse.ui.internal.EditorReference;
-import org.eclipse.ui.internal.EditorSite;
-import org.eclipse.ui.internal.IPreferenceConstants;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog;
-import org.eclipse.ui.internal.registry.EditorDescriptor;
-
-/**
- * @since 3.3
- * 
- */
-public class TabBehaviourMRU extends TabBehaviour {
-
-	public boolean alwaysShowPinAction() {
-		return false;
-	}
-
-	public IEditorReference findReusableEditor(WorkbenchPage page) {
-		boolean reuse = WorkbenchPlugin.getDefault().getPreferenceStore()
-				.getBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN);
-		if (!reuse) {
-			return null;
-		}
-
-		IEditorReference editors[] = page.getSortedEditors();
-		if (editors.length < page.getEditorReuseThreshold()) {
-			return null;
-		}
-
-		IEditorReference dirtyEditor = null;
-
-		// Find a editor to be reused
-		for (int i = 0; i < editors.length; i++) {
-			IEditorReference editor = editors[i];
-			// if(editor == activePart)
-			// continue;
-			if (editor.isPinned()) {
-				continue;
-			}
-			if (editor.isDirty()) {
-				if (dirtyEditor == null) {
-					dirtyEditor = editor;
-				}
-				continue;
-			}
-			return editor;
-		}
-		if (dirtyEditor == null) {
-			return null;
-		}
-
-		/* fix for 11122 */
-		boolean reuseDirty = WorkbenchPlugin.getDefault().getPreferenceStore()
-				.getBoolean(IPreferenceConstants.REUSE_DIRTY_EDITORS);
-		if (!reuseDirty) {
-			return null;
-		}
-
-		MessageDialog dialog = new MessageDialog(page.getWorkbenchWindow()
-				.getShell(),
-				WorkbenchMessages.EditorManager_reuseEditorDialogTitle,
-				null, // accept the default window icon
-				NLS.bind(WorkbenchMessages.EditorManager_saveChangesQuestion,
-						dirtyEditor.getName()), MessageDialog.QUESTION,
-				new String[] { IDialogConstants.YES_LABEL,
-						IDialogConstants.NO_LABEL,
-						WorkbenchMessages.EditorManager_openNewEditorLabel }, 0);
-		int result = dialog.open();
-		if (result == 0) { // YES
-			ProgressMonitorDialog pmd = new ProgressMonitorJobsDialog(dialog
-					.getShell());
-			pmd.open();
-			dirtyEditor.getEditor(true).doSave(pmd.getProgressMonitor());
-			pmd.close();
-		} else if ((result == 2) || (result == -1)) {
-			return null;
-		}
-		return dirtyEditor;
-	}
-
-	public IEditorReference reuseInternalEditor(WorkbenchPage page,
-			EditorManager manager, EditorAreaHelper editorPresentation,
-			EditorDescriptor desc, IEditorInput input,
-			IEditorReference reusableEditorRef) {
-		IEditorPart reusableEditor = reusableEditorRef.getEditor(false);
-		if (reusableEditor == null) {
-			IEditorReference result = new EditorReference(manager, input, desc);
-			page.closeEditor(reusableEditorRef, false);
-			return result;
-		}
-
-		EditorSite site = (EditorSite) reusableEditor.getEditorSite();
-		EditorDescriptor oldDesc = site.getEditorDescriptor();
-		if ((desc.getId().equals(oldDesc.getId()))
-				&& (reusableEditor instanceof IReusableEditor)) {
-			Workbench wb = (Workbench) page.getWorkbenchWindow().getWorkbench();
-			editorPresentation.moveEditor(reusableEditor, -1);
-			wb.getEditorHistory().add(reusableEditor.getEditorInput(),
-					site.getEditorDescriptor());
-			page.reuseEditor((IReusableEditor) reusableEditor, input);
-			return reusableEditorRef;
-		}
-		// findReusableEditor(...) checks pinned and saves editor if
-		// necessary, so it's OK to close "reusableEditor"
-		IEditorReference ref = new EditorReference(manager, input, desc);
-		reusableEditor.getEditorSite().getPage().closeEditor(reusableEditor,
-				false);
-		return ref;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Tweaklets.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Tweaklets.java
deleted file mode 100644
index 5abfcaa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Tweaklets.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * @since 3.3
- * 
- */
-public class Tweaklets {
-	
-	public static class TweakKey {
-		Class tweakClass;
-
-		/**
-		 * @param tweakClass
-		 */
-		public TweakKey(Class tweakClass) {
-			this.tweakClass = tweakClass;
-		}
-
-		/* (non-Javadoc)
-		 * @see java.lang.Object#hashCode()
-		 */
-		public int hashCode() {
-			final int prime = 31;
-			int result = 1;
-			result = prime * result
-					+ ((tweakClass == null) ? 0 : tweakClass.hashCode());
-			return result;
-		}
-
-		/* (non-Javadoc)
-		 * @see java.lang.Object#equals(java.lang.Object)
-		 */
-		public boolean equals(Object obj) {
-			if (this == obj)
-				return true;
-			if (obj == null)
-				return false;
-			if (getClass() != obj.getClass())
-				return false;
-			final TweakKey other = (TweakKey) obj;
-			if (tweakClass == null) {
-				if (other.tweakClass != null)
-					return false;
-			} else if (!tweakClass.equals(other.tweakClass))
-				return false;
-			return true;
-		}
-	}
-
-	private static Map defaults = new HashMap();
-	private static Map tweaklets = new HashMap();
-
-	public static void setDefault(TweakKey definition, Object implementation) {
-		defaults.put(definition, implementation);
-	}
-	
-	public static Object get(TweakKey definition) {
-		Object result = tweaklets.get(definition);
-		if (result == null) {
-			result = createTweaklet(definition);
-			if (result == null) {
-				result = getDefault(definition);
-			}
-			Assert.isNotNull(result);
-			tweaklets.put(definition, result);
-		}
-		return result;
-	}
-
-	/**
-	 * @param definition
-	 * @return
-	 */
-	private static Object getDefault(TweakKey definition) {
-		return defaults.get(definition);
-	}
-
-	/**
-	 * @param definition
-	 * @return
-	 */
-	private static Object createTweaklet(TweakKey definition) {
-		IConfigurationElement[] elements = Platform
-				.getExtensionRegistry()
-				.getConfigurationElementsFor("org.eclipse.ui.internalTweaklets"); //$NON-NLS-1$
-		for (int i = 0; i < elements.length; i++) {
-			if (definition.tweakClass.getName().equals(
-					elements[i].getAttribute("definition"))) { //$NON-NLS-1$
-				try {
-					Object tweaklet = elements[i].createExecutableExtension("implementation"); //$NON-NLS-1$
-					tweaklets.put(definition, tweaklet);
-					return tweaklet;
-				} catch (CoreException e) {
-					StatusManager.getManager().handle(
-							StatusUtil.newStatus(IStatus.ERROR,
-									"Error with extension " + elements[i], e), //$NON-NLS-1$
-							StatusManager.LOG);
-				}
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Workbench3xImplementation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Workbench3xImplementation.java
deleted file mode 100644
index 3549cf3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/Workbench3xImplementation.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
-
-/**
- * @since 3.4
- *
- */
-public class Workbench3xImplementation extends WorkbenchImplementation {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.WorkbenchImplementation#createWBW(int)
-	 */
-	public WorkbenchWindow createWorkbenchWindow(int newWindowNumber) {
-		return new WorkbenchWindow(newWindowNumber);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.WorkbenchImplementation#createWBPage(org.eclipse.ui.internal.WorkbenchWindow, java.lang.String, org.eclipse.core.runtime.IAdaptable)
-	 */
-	public WorkbenchPage createWorkbenchPage(WorkbenchWindow workbenchWindow,
-			String perspID, IAdaptable input) throws WorkbenchException {
-		return new WorkbenchPage(workbenchWindow, perspID, input);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.WorkbenchImplementation#createWBPage(org.eclipse.ui.internal.WorkbenchWindow, org.eclipse.core.runtime.IAdaptable)
-	 */
-	public WorkbenchPage createWorkbenchPage(WorkbenchWindow workbenchWindow,
-			IAdaptable finalInput) throws WorkbenchException {
-		return new WorkbenchPage(workbenchWindow, finalInput);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.tweaklets.WorkbenchImplementation#createPerspective(org.eclipse.ui.internal.registry.PerspectiveDescriptor, org.eclipse.ui.internal.WorkbenchPage)
-	 */
-	public Perspective createPerspective(PerspectiveDescriptor desc,
-			WorkbenchPage workbenchPage) throws WorkbenchException {
-		return new Perspective(desc, workbenchPage);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/WorkbenchImplementation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/WorkbenchImplementation.java
deleted file mode 100644
index 1c7afed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/tweaklets/WorkbenchImplementation.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.internal.tweaklets;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
-import org.eclipse.ui.internal.tweaklets.Tweaklets.TweakKey;
-
-/**
- * Tweak that enables experimental Eclipse 4.0 functionality
- * 
- * @since 3.4
- *
- */
-public abstract class WorkbenchImplementation {
-	public static TweakKey KEY = new Tweaklets.TweakKey(WorkbenchImplementation.class);
-
-	static {
-		Tweaklets.setDefault(WorkbenchImplementation.KEY, new Workbench3xImplementation());
-	}
-
-	/** Default c'tor */
-	public WorkbenchImplementation() {}
-
-	/**
-	 * @param newWindowNumber
-	 * @return
-	 */
-	public abstract WorkbenchWindow createWorkbenchWindow(int newWindowNumber);
-
-	/**
-	 * @param workbenchWindow
-	 * @param perspID
-	 * @param input
-	 * @return
-	 * @throws WorkbenchException 
-	 */
-	public abstract WorkbenchPage createWorkbenchPage(WorkbenchWindow workbenchWindow,
-			String perspID, IAdaptable input) throws WorkbenchException;
-
-	/**
-	 * @param workbenchWindow
-	 * @param finalInput
-	 * @return
-	 * @throws WorkbenchException 
-	 */
-	public abstract WorkbenchPage createWorkbenchPage(WorkbenchWindow workbenchWindow,
-			IAdaptable finalInput) throws WorkbenchException;
-
-	/**
-	 * @param desc
-	 * @param workbenchPage
-	 * @return
-	 * @throws WorkbenchException 
-	 */
-	public abstract Perspective createPerspective(PerspectiveDescriptor desc,
-			WorkbenchPage workbenchPage) throws WorkbenchException;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/BundleUtility.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/BundleUtility.java
deleted file mode 100644
index f2db5fa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/BundleUtility.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.util;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.osgi.framework.Bundle;
-
-/**
- * A set of static methods that provide an nicer interface to common platform
- * operations related to bundle management.
- */
-public class BundleUtility {
-	public static boolean isActive(Bundle bundle) {
-		if (bundle == null) {
-			return false;
-		}
-		return bundle.getState() == Bundle.ACTIVE;
-	}
-
-    public static boolean isActivated(Bundle bundle) {
-    	if ((bundle.getState() & Bundle.STARTING) != 0)
-    		return WorkbenchPlugin.getDefault().isStarting(bundle);
-        return bundle != null && (bundle.getState() & (Bundle.ACTIVE | Bundle.STOPPING)) != 0;
-    }
-
-    // TODO: needs a better name
-    public static boolean isReady(Bundle bundle) {
-    	return bundle != null && isReady(bundle.getState());
-    }
-
-    public static boolean isReady(int bundleState) {
-    	return (bundleState & (Bundle.RESOLVED | Bundle.STARTING | Bundle.ACTIVE | Bundle.STOPPING)) != 0;
-	}
-
-    public static boolean isActive(String bundleId) {
-		return isActive(Platform.getBundle(bundleId));
-	}
-
-    public static boolean isActivated(String bundleId) {
-        return isActivated(Platform.getBundle(bundleId));
-    }
-
-    public static boolean isReady(String bundleId) {
-        return isReady(Platform.getBundle(bundleId));
-    }
-
-    public static URL find(Bundle bundle, String path) {
-        if (bundle == null) {
-			return null;
-		}
-        return Platform.find(bundle, new Path(path));
-    }
-
-    public static URL find(String bundleId, String path) {
-        return find(Platform.getBundle(bundleId), path);
-    }
-
-    public static void log(String bundleId, Throwable exception) {
-        Bundle bundle = Platform.getBundle(bundleId);
-        if (bundle == null) {
-			return;
-		}
-        IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.ERROR,
-                exception.getMessage() == null ? "" : exception.getMessage(), //$NON-NLS-1$
-                exception);
-        Platform.getLog(bundle).log(status);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ConfigurationElementMemento.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ConfigurationElementMemento.java
deleted file mode 100644
index 8ca315f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ConfigurationElementMemento.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.util;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IMemento;
-
-public final class ConfigurationElementMemento implements IMemento {
-
-    private IConfigurationElement configurationElement;
-
-    public ConfigurationElementMemento(
-            IConfigurationElement configurationElement) {
-        if (configurationElement == null) {
-			throw new NullPointerException();
-		}
-
-        this.configurationElement = configurationElement;
-    }
-
-    public IMemento createChild(String type) {
-        return null;
-    }
-
-    public IMemento createChild(String type, String id) {
-        return null;
-    }
-
-    public IMemento getChild(String type) {
-        IConfigurationElement[] configurationElements = configurationElement
-                .getChildren(type);
-
-        if (configurationElements != null && configurationElements.length >= 1) {
-			return new ConfigurationElementMemento(configurationElements[0]);
-		}
-
-        return null;
-    }
-
-    public IMemento[] getChildren(String type) {
-        IConfigurationElement[] configurationElements = configurationElement
-                .getChildren(type);
-
-        if (configurationElements != null && configurationElements.length >= 1) {
-            IMemento mementos[] = new ConfigurationElementMemento[configurationElements.length];
-
-            for (int i = 0; i < configurationElements.length; i++) {
-				mementos[i] = new ConfigurationElementMemento(
-                        configurationElements[i]);
-			}
-
-            return mementos;
-        }
-
-        return new IMemento[0];
-    }
-
-    public Float getFloat(String key) {
-        String string = configurationElement.getAttribute(key);
-
-        if (string != null) {
-			try {
-                return new Float(string);
-            } catch (NumberFormatException eNumberFormat) {
-            }
-		}
-
-        return null;
-    }
-
-    public String getType() {
-        return configurationElement.getName();
-    }
-
-    public String getID() {
-        return configurationElement.getAttribute(TAG_ID);
-    }
-
-    public Integer getInteger(String key) {
-        String string = configurationElement.getAttribute(key);
-
-        if (string != null) {
-			try {
-                return new Integer(string);
-            } catch (NumberFormatException eNumberFormat) {
-            }
-		}
-
-        return null;
-    }
-
-    public String getString(String key) {
-        return configurationElement.getAttribute(key);
-    }
-
-    public Boolean getBoolean(String key) {
-        String string = configurationElement.getAttribute(key);
-        if (string==null) {
-        	return null;
-        }
-        return Boolean.valueOf(string);
-    }
-
-    public String getTextData() {
-        return configurationElement.getValue();
-    }
-    
-    public String[] getAttributeKeys() {
-    	return configurationElement.getAttributeNames();
-    }
-
-    public void putFloat(String key, float value) {
-    }
-
-    public void putInteger(String key, int value) {
-    }
-
-    public void putMemento(IMemento memento) {
-    }
-
-    public void putString(String key, String value) {
-    }
-    
-    public void putBoolean(String key, boolean value) {
-    }
-
-    public void putTextData(String data) {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Descriptors.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Descriptors.java
deleted file mode 100644
index f124498..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Descriptors.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.util;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.resource.ColorDescriptor;
-import org.eclipse.jface.resource.DeviceResourceDescriptor;
-import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.FontDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * Contains a bunch of helper methods that allow JFace resource descriptors to be passed
- * directly to SWT widgets without worrying about resource allocation. This class is internal,
- * but it should be moved into JFace if the pattern is found generally useful. The current
- * implementation uses a lot of reflection to save repeated code, but this could all be inlined
- * (without reflection) if performance turns out to be a problem.
- *  
- * <p>
- * For example, an Image might be passed to a TableItem as follows: 
- * <p>
- * 
- * <code>
- *      ImageDescriptor someDescriptor = ...;
- *      TableItem someTableItem = ...;
- *      ResourceManager manager = JFaceResources.getResources();
- *      
- *      Image actualImage = manager.createImage(someDescriptor);
- *      someTableItem.setImage(actualImage);
- *      
- *      // do something with the table item
- *      
- *      someTableItem.dispose();
- *      manager.destroyImage(someDescriptor);
- * </code>
- *
- * <p>
- * It is much more convenient to do the following:
- * </p>
- * 
- * <code>
- *      ImageDescriptor someDescriptor = ...;
- *      TableItem someTableItem = ...;
- *      
- *      Descriptors.setImage(someTableItem, someDescriptor);
- *      
- *      // do something with the table item
- *      
- *      someTableItem.dispose();
- * </code>
- * 
- * <p>
- * This class tries to behave as if the table item itself had a set method that took a descriptor.
- * Resource allocation and deallocation happens for free. All the methods are leakproof. That is, 
- * if any images, colors, etc. need to be allocated and passed to the SWT widget, they will be 
- * deallocated automatically when the widget goes away (the implementation hooks a dispose listener 
- * on the widget which cleans up as soon as the widget is disposed). 
- * </p>
- * 
- * @since 3.1
- */
-public final class Descriptors {
-    private static final String DISPOSE_LIST = "Descriptors.disposeList"; //$NON-NLS-1$
-    
-    private Descriptors() {
-    }
-    
-    private static final class ResourceMethod {
-        ResourceMethod(Method m, String id) {
-            method = m;
-            this.id = id;
-        }
-        
-        Method method;
-        DeviceResourceDescriptor oldDescriptor;
-        String id;
-                
-        public void invoke(Widget toCall, DeviceResourceDescriptor newDescriptor) {
-            if (newDescriptor == oldDescriptor) {
-                return;
-            }
-            
-            ResourceManager mgr = JFaceResources.getResources(toCall.getDisplay());
-            
-            Object newResource;
-            try {
-                newResource = newDescriptor == null? null : mgr.create(newDescriptor);
-            } catch (DeviceResourceException e1) {
-                WorkbenchPlugin.log(e1);
-                return;
-            }
-            
-            try {
-                method.invoke(toCall, new Object[] {newResource});
-            } catch (IllegalArgumentException e) {
-                throw e;
-            } catch (IllegalAccessException e) {
-                WorkbenchPlugin.log(e);
-                return;
-            } catch (InvocationTargetException e) {
-                if (e.getTargetException() instanceof RuntimeException) {
-                    throw (RuntimeException)e.getTargetException();
-                }
-                WorkbenchPlugin.log(e);
-                return;
-            }
-            
-            // Deallocate the old image 
-            if (oldDescriptor != null) {
-                // Dispose the image
-                mgr.destroy(oldDescriptor);
-            }
-            
-            // Remember the new image for next time
-            
-            oldDescriptor = newDescriptor;            
-        }
-
-        public void dispose() {
-            // Deallocate the old image 
-            if (oldDescriptor != null) {
-                ResourceManager mgr = JFaceResources.getResources();
-                // Dispose the image
-                mgr.destroy(oldDescriptor);
-                oldDescriptor = null;
-            }                
-
-        }
-    }
-    
-    private static DisposeListener disposeListener = new DisposeListener() {
-        public void widgetDisposed(DisposeEvent e) {
-            doDispose(e.widget);
-        }
-    };
-    
-    // Item //////////////////////////////////////////////////////////////////////////////////
-   
-    /**
-     * Sets the image on the given ToolItem. The image will be automatically allocated and
-     * disposed as needed.
-     * 
-     * @since 3.1 
-     *
-     * @param item
-     * @param descriptor
-     */
-    public static void setImage(Item item, ImageDescriptor descriptor) {
-        callMethod(item, "setImage", descriptor, Image.class); //$NON-NLS-1$
-    }
-    
-    // ToolItem //////////////////////////////////////////////////////////////////////////////
-   
-    public static void setHotImage(ToolItem item, ImageDescriptor descriptor) {
-        callMethod(item, "setHotImage", descriptor, Image.class); //$NON-NLS-1$
-    }
-
-    public static void setDisabledImage(ToolItem item, ImageDescriptor descriptor) {
-        callMethod(item, "setDisabledImage", descriptor, Image.class); //$NON-NLS-1$
-    }
-
-    // TableItem //////////////////////////////////////////////////////////////////////////////
-    
-    public static void setFont(TableItem item, FontDescriptor descriptor) {
-        callMethod(item, "setFont", descriptor, Font.class); //$NON-NLS-1$
-    }
-    
-    public static void setBackground(TableItem item, ColorDescriptor descriptor) {
-        callMethod(item, "setBackground", descriptor, Color.class); //$NON-NLS-1$
-    }
-
-    public static void setForeground(TableItem item, ColorDescriptor descriptor) {
-        callMethod(item, "setForeground", descriptor, Color.class); //$NON-NLS-1$
-    }
-    
-    // Control ///////////////////////////////////////////////////////////////////////////////
-    
-    public static void setBackground(Control control, ColorDescriptor descriptor) {
-        callMethod(control, "setBackground", descriptor, Color.class); //$NON-NLS-1$
-    }
-    
-    public static void setForeground(Control control, ColorDescriptor descriptor) {
-        callMethod(control, "setForeground", descriptor, Color.class); //$NON-NLS-1$
-    }
-    
-    // Button ///////////////////////////////////////////////////////////////////////////////
-    
-    public static void setImage(Button button, ImageDescriptor descriptor) {
-        callMethod(button, "setImage", descriptor, Image.class); //$NON-NLS-1$
-    }
-
-    public static void setImage(Label label, ImageDescriptor descriptor) {
-        callMethod(label, "setImage", descriptor, Image.class); //$NON-NLS-1$
-    }
-    
-    private static ResourceMethod getResourceMethod(Widget toCall, String methodName, Class resourceType) throws NoSuchMethodException {
-        Object oldData = toCall.getData(DISPOSE_LIST);
-        
-        if (oldData instanceof List) {
-            // Check for existing data
-            for (Iterator iter = ((List)oldData).iterator(); iter.hasNext();) {
-                ResourceMethod method = (ResourceMethod) iter.next();
-                
-                if (method.id == methodName) {
-                    return method;
-                }
-            }
-        } if (oldData instanceof ResourceMethod) {
-            if (((ResourceMethod)oldData).id == methodName) {
-                return ((ResourceMethod)oldData); 
-            }
-            
-            List newList = new ArrayList();
-            newList.add(oldData);
-            oldData = newList;
-            toCall.setData(DISPOSE_LIST, oldData);
-        }
-        
-        // At this point, the DISPOSE_LIST data is either null or points to an ArrayList
-        
-        Class clazz = toCall.getClass();
-        
-        Method method;
-        try {
-            method = clazz.getMethod(methodName, new Class[] {resourceType});
-        } catch (SecurityException e) {
-            throw e;
-        }
-        
-        ResourceMethod result = new ResourceMethod(method, methodName);
-
-        if (oldData == null) {
-            toCall.setData(DISPOSE_LIST, result);
-            toCall.addDisposeListener(disposeListener);
-        } else {
-            ((List)oldData).add(result);
-        }
-        
-        return result;
-    }
-    
-    private static void callMethod(Widget toCall, String methodName, DeviceResourceDescriptor descriptor, Class resourceType) {
-        ResourceMethod method;
-        try {
-            method = getResourceMethod(toCall, methodName, resourceType);
-        } catch (NoSuchMethodException e) {
-            WorkbenchPlugin.log(e);
-            return;
-        }
-       
-        method.invoke(toCall, descriptor);        
-    }
-    
-    private static void doDispose(Widget widget) {
-        Object oldData = widget.getData(DISPOSE_LIST);
-        
-        if (oldData instanceof ArrayList) {
-            ArrayList list = ((ArrayList)oldData);
-            ResourceMethod[] data = (ResourceMethod[]) list.toArray(new ResourceMethod[list.size()]);
-            
-            // Clear out the images
-            for (int i = 0; i < data.length; i++) {
-                ResourceMethod method = data[i];
-
-                method.dispose();                
-            }
-        } 
-        
-        if (oldData instanceof ResourceMethod) {
-            ((ResourceMethod)oldData).dispose();
-        }
-    }
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ImageSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ImageSupport.java
deleted file mode 100644
index f94f7fe..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/ImageSupport.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.util;
-
-import java.net.URL;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.PlatformUI;
-
-public final class ImageSupport {
-
-    public static ImageDescriptor getImageDescriptor(String path) {
-        URL url = BundleUtility.find(PlatformUI.PLUGIN_ID, path);
-        return ImageDescriptor.createFromURL(url);
-    }
-
-    private ImageSupport() {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/PrefUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/PrefUtil.java
deleted file mode 100644
index 28d2bc1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/PrefUtil.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.util;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * Internal utility class to help with getting/setting preferences.
- * <p>
- * API preferences are defined in {@link org.eclipse.ui.IWorkbenchPreferenceConstants}
- * and are obtained from the <code>org.eclipse.ui</code> plug-in's preference store.
- * </p>
- * <p>
- * Internal preferences are defined in {@link org.eclipse.ui.internal.IPreferenceConstants}
- * and are obtained from the <code>org.eclipse.ui.workbench</code> plug-in's preference store.
- * </p>
- * 
- * @since 3.0
- */
-public class PrefUtil {
-
-    private PrefUtil() {
-        // prevents instantiation
-    }
-
-    /**
-     * Callback interface to obtain and save the UI preference store.
-     */
-    public static interface ICallback {
-        IPreferenceStore getPreferenceStore();
-
-        void savePreferences();
-    }
-
-    private static ICallback uiCallback;
-
-    private static IPreferenceStore uiPreferenceStore;
-
-    /**
-     * Sets the callback used to obtain and save the UI preference store.
-     */
-    public static final void setUICallback(ICallback callback) {
-        Assert.isTrue(uiCallback == null);
-        uiCallback = callback;
-    }
-
-    /**
-     * Returns the API preference store.
-     * 
-     * @return the API preference store
-     */
-    public static IPreferenceStore getAPIPreferenceStore() {
-        if (uiPreferenceStore == null) {
-            Assert.isNotNull(uiCallback);
-            uiPreferenceStore = uiCallback.getPreferenceStore();
-        }
-        return uiPreferenceStore;
-    }
-
-    /**
-     * Returns the internal preference store.
-     * 
-     * @return the internal preference store
-     */
-    public static IPreferenceStore getInternalPreferenceStore() {
-        return WorkbenchPlugin.getDefault().getPreferenceStore();
-    }
-
-    /**
-     * Saves both the API and internal preference stores.
-     */
-    public static void savePrefs() {
-        saveAPIPrefs();
-        saveInternalPrefs();
-    }
-
-    /**
-     * Saves the API preference store, if needed.
-     */
-    public static void saveAPIPrefs() {
-        Assert.isNotNull(uiCallback);
-        uiCallback.savePreferences();
-    }
-
-    /**
-     * Saves the internal preference store, if needed.
-     */
-    public static void saveInternalPrefs() {
-        WorkbenchPlugin.getDefault().savePluginPreferences();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java
deleted file mode 100644
index ee33369..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/util/Util.java
+++ /dev/null
@@ -1,824 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.internal.util;
-
-import java.util.ArrayList;
-import java.util.Collection;
-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.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-public final class Util {
-
-    public final static SortedMap EMPTY_SORTED_MAP = Collections
-            .unmodifiableSortedMap(new TreeMap());
-
-    public final static SortedSet EMPTY_SORTED_SET = Collections
-            .unmodifiableSortedSet(new TreeSet());
-
-    public final static String ZERO_LENGTH_STRING = ""; //$NON-NLS-1$
-
-    /**
-     * Ensures that a string is not null. Converts null strings into empty
-     * strings, and leaves any other string unmodified. Use this to help
-     * wrap calls to methods that return null instead of the empty string.
-     * Can also help protect against implementation errors in methods that
-     * are not supposed to return null. 
-     * 
-     * @param input input string (may be null)
-     * @return input if not null, or the empty string if input is null
-     */
-    public static String safeString(String input) {
-        if (input != null) {
-            return input;
-        }
-
-        return ZERO_LENGTH_STRING;
-    }
-    
-    /**
-     * If it is possible to adapt the given object to the given type, this
-     * returns the adapter. Performs the following checks:
-     * 
-     * <ol>
-     * <li>Returns <code>sourceObject</code> if it is an instance of the
-     * adapter type.</li>
-     * <li>If sourceObject implements IAdaptable, it is queried for adapters.</li>
-     * <li>If sourceObject is not an instance of PlatformObject (which would have
-     * already done so), the adapter manager is queried for adapters</li>
-     * </ol>
-     * 
-     * Otherwise returns null.
-     * 
-     * @param sourceObject
-     *            object to adapt, or null
-     * @param adapterType
-     *            type to adapt to
-     * @return a representation of sourceObject that is assignable to the
-     *         adapter type, or null if no such representation exists
-     */
-    public static Object getAdapter(Object sourceObject, Class adapterType) {
-    	Assert.isNotNull(adapterType);
-        if (sourceObject == null) {
-            return null;
-        }
-        if (adapterType.isInstance(sourceObject)) {
-            return sourceObject;
-        }
-
-        if (sourceObject instanceof IAdaptable) {
-            IAdaptable adaptable = (IAdaptable) sourceObject;
-
-            Object result = adaptable.getAdapter(adapterType);
-            if (result != null) {
-                // Sanity-check
-                Assert.isTrue(adapterType.isInstance(result));
-                return result;
-            }
-        } 
-        
-        if (!(sourceObject instanceof PlatformObject)) {
-            Object result = Platform.getAdapterManager().getAdapter(sourceObject, adapterType);
-            if (result != null) {
-                return result;
-            }
-        }
-
-        return null;
-    }
-
-    public static void assertInstance(Object object, Class c) {
-        assertInstance(object, c, false);
-    }
-
-    public static void assertInstance(Object object, Class c, boolean allowNull) {
-        if (object == null && allowNull) {
-			return;
-		}
-
-        if (object == null || c == null) {
-			throw new NullPointerException();
-		} else if (!c.isInstance(object)) {
-			throw new IllegalArgumentException();
-		}
-    }
-
-    public static int compare(boolean left, boolean right) {
-        return left == false ? (right == true ? -1 : 0) : 1;
-    }
-
-    public static int compare(Comparable left, Comparable right) {
-        if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-			return left.compareTo(right);
-		}
-    }
-
-    public static int compare(Comparable[] left, Comparable[] right) {
-        if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-            int l = left.length;
-            int r = right.length;
-
-            if (l != r) {
-				return l - r;
-			} else {
-                for (int i = 0; i < l; i++) {
-                    int compareTo = compare(left[i], right[i]);
-
-                    if (compareTo != 0) {
-						return compareTo;
-					}
-                }
-
-                return 0;
-            }
-        }
-    }
-
-    public static int compare(int left, int right) {
-        return left - right;
-    }
-
-    public static int compare(List left, List right) {
-        if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-            int l = left.size();
-            int r = right.size();
-
-            if (l != r) {
-				return l - r;
-			} else {
-                for (int i = 0; i < l; i++) {
-                    int compareTo = compare((Comparable) left.get(i),
-                            (Comparable) right.get(i));
-
-                    if (compareTo != 0) {
-						return compareTo;
-					}
-                }
-
-                return 0;
-            }
-        }
-    }
-
-    public static int compare(Object left, Object right) {
-        if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else if (left == right) {
-			return 0;
-		} else {
-			return compare(System.identityHashCode(left), System
-                    .identityHashCode(right));
-		}
-    }
-
-    /**
-     * An optimized comparison that uses identity hash codes to perform the
-     * comparison between non- <code>null</code> objects.
-     * 
-     * @param left
-     *            The left-hand side of the comparison; may be <code>null</code>.
-     * @param right
-     *            The right-hand side of the comparison; may be
-     *            <code>null</code>.
-     * @return <code>0</code> if they are the same, <code>-1</code> if left
-     *         is <code>null</code>;<code>1</code> if right is
-     *         <code>null</code>. Otherwise, the left identity hash code
-     *         minus the right identity hash code.
-     */
-    public static final int compareIdentity(Object left, Object right) {
-        if (left == null && right == null) {
-			return 0;
-		} else if (left == null) {
-			return -1;
-		} else if (right == null) {
-			return 1;
-		} else {
-			return System.identityHashCode(left)
-                    - System.identityHashCode(right);
-		}
-    }
-
-    public static void diff(Map left, Map right, Set leftOnly, Set different,
-            Set rightOnly) {
-        if (left == null || right == null || leftOnly == null
-                || different == null || rightOnly == null) {
-			throw new NullPointerException();
-		}
-
-        Iterator iterator = left.keySet().iterator();
-
-        while (iterator.hasNext()) {
-            Object key = iterator.next();
-
-            if (!right.containsKey(key)) {
-				leftOnly.add(key);
-			} else if (!Util.equals(left.get(key), right.get(key))) {
-				different.add(key);
-			}
-        }
-
-        iterator = right.keySet().iterator();
-
-        while (iterator.hasNext()) {
-            Object key = iterator.next();
-
-            if (!left.containsKey(key)) {
-				rightOnly.add(key);
-			}
-        }
-    }
-
-    public static void diff(Set left, Set right, Set leftOnly, Set rightOnly) {
-        if (left == null || right == null || leftOnly == null
-                || rightOnly == null) {
-			throw new NullPointerException();
-		}
-
-        Iterator iterator = left.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-
-            if (!right.contains(object)) {
-				leftOnly.add(object);
-			}
-        }
-
-        iterator = right.iterator();
-
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-
-            if (!left.contains(object)) {
-				rightOnly.add(object);
-			}
-        }
-    }
-
-    public static boolean endsWith(List left, List right, boolean equals) {
-        if (left == null || right == null) {
-			return false;
-		} else {
-            int l = left.size();
-            int r = right.size();
-
-            if (r > l || !equals && r == l) {
-				return false;
-			}
-
-            for (int i = 0; i < r; i++) {
-				if (!equals(left.get(l - i - 1), right.get(r - i - 1))) {
-					return false;
-				}
-			}
-
-            return true;
-        }
-    }
-
-    public static boolean endsWith(Object[] left, Object[] right, boolean equals) {
-        if (left == null || right == null) {
-			return false;
-		} else {
-            int l = left.length;
-            int r = right.length;
-
-            if (r > l || !equals && r == l) {
-				return false;
-			}
-
-            for (int i = 0; i < r; i++) {
-				if (!equals(left[l - i - 1], right[r - i - 1])) {
-					return false;
-				}
-			}
-
-            return true;
-        }
-    }
-
-    public static boolean equals(boolean left, boolean right) {
-        return left == right;
-    }
-
-    public static boolean equals(int left, int right) {
-        return left == right;
-    }
-
-    public static boolean equals(Object left, Object right) {
-        return left == null ? right == null : ((right != null) && left
-                .equals(right));
-    }
-
-	/**
-	 * Tests whether two arrays of objects are equal to each other. The arrays
-	 * must not be <code>null</code>, but their elements may be
-	 * <code>null</code>.
-	 * 
-	 * @param leftArray
-	 *            The left array to compare; may be <code>null</code>, and
-	 *            may be empty and may contain <code>null</code> elements.
-	 * @param rightArray
-	 *            The right array to compare; may be <code>null</code>, and
-	 *            may be empty and may contain <code>null</code> elements.
-	 * @return <code>true</code> if the arrays are equal length and the
-	 *         elements at the same position are equal; <code>false</code>
-	 *         otherwise.
-	 */
-	public static final boolean equals(final Object[] leftArray,
-			final Object[] rightArray) {
-		if (leftArray == rightArray) {
-			return true;
-		}
-
-		if (leftArray == null) {
-			return (rightArray == null);
-		} else if (rightArray == null) {
-			return false;
-		}
-
-		if (leftArray.length != rightArray.length) {
-			return false;
-		}
-
-		for (int i = 0; i < leftArray.length; i++) {
-			final Object left = leftArray[i];
-			final Object right = rightArray[i];
-			final boolean equal = (left == null) ? (right == null) : (left
-					.equals(right));
-			if (!equal) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-    public static int hashCode(boolean b) {
-        return b ? Boolean.TRUE.hashCode() : Boolean.FALSE.hashCode();
-    }
-
-    public static int hashCode(int i) {
-        return i;
-    }
-
-    public static int hashCode(Object object) {
-        return object != null ? object.hashCode() : 0;
-    }
-
-    public static Collection safeCopy(Collection collection, Class c) {
-        return safeCopy(collection, c, false);
-    }
-
-    public static Collection safeCopy(Collection collection, Class c,
-            boolean allowNullElements) {
-        if (collection == null || c == null) {
-			throw new NullPointerException();
-		}
-
-        collection = Collections.unmodifiableCollection(new ArrayList(
-                collection));
-        Iterator iterator = collection.iterator();
-
-        while (iterator.hasNext()) {
-			assertInstance(iterator.next(), c, allowNullElements);
-		}
-
-        return collection;
-    }
-
-    public static List safeCopy(List list, Class c) {
-        return safeCopy(list, c, false);
-    }
-
-    public static List safeCopy(List list, Class c, boolean allowNullElements) {
-        if (list == null || c == null) {
-			throw new NullPointerException();
-		}
-
-        list = Collections.unmodifiableList(new ArrayList(list));
-        Iterator iterator = list.iterator();
-
-        while (iterator.hasNext()) {
-			assertInstance(iterator.next(), c, allowNullElements);
-		}
-
-        return list;
-    }
-
-    public static Map safeCopy(Map map, Class keyClass, Class valueClass) {
-        return safeCopy(map, keyClass, valueClass, false, false);
-    }
-
-    public static Map safeCopy(Map map, Class keyClass, Class valueClass,
-            boolean allowNullKeys, boolean allowNullValues) {
-        if (map == null || keyClass == null || valueClass == null) {
-			throw new NullPointerException();
-		}
-
-        map = Collections.unmodifiableMap(new HashMap(map));
-        Iterator iterator = map.entrySet().iterator();
-
-        while (iterator.hasNext()) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            assertInstance(entry.getKey(), keyClass, allowNullKeys);
-            assertInstance(entry.getValue(), valueClass, allowNullValues);
-        }
-
-        return map;
-    }
-
-    public static Set safeCopy(Set set, Class c) {
-        return safeCopy(set, c, false);
-    }
-
-    public static Set safeCopy(Set set, Class c, boolean allowNullElements) {
-        if (set == null || c == null) {
-			throw new NullPointerException();
-		}
-
-        set = Collections.unmodifiableSet(new HashSet(set));
-        Iterator iterator = set.iterator();
-
-        while (iterator.hasNext()) {
-			assertInstance(iterator.next(), c, allowNullElements);
-		}
-
-        return set;
-    }
-
-    public static SortedMap safeCopy(SortedMap sortedMap, Class keyClass,
-            Class valueClass) {
-        return safeCopy(sortedMap, keyClass, valueClass, false, false);
-    }
-
-    public static SortedMap safeCopy(SortedMap sortedMap, Class keyClass,
-            Class valueClass, boolean allowNullKeys, boolean allowNullValues) {
-        if (sortedMap == null || keyClass == null || valueClass == null) {
-			throw new NullPointerException();
-		}
-
-        sortedMap = Collections.unmodifiableSortedMap(new TreeMap(sortedMap));
-        Iterator iterator = sortedMap.entrySet().iterator();
-
-        while (iterator.hasNext()) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            assertInstance(entry.getKey(), keyClass, allowNullKeys);
-            assertInstance(entry.getValue(), valueClass, allowNullValues);
-        }
-
-        return sortedMap;
-    }
-
-    public static SortedSet safeCopy(SortedSet sortedSet, Class c) {
-        return safeCopy(sortedSet, c, false);
-    }
-
-    public static SortedSet safeCopy(SortedSet sortedSet, Class c,
-            boolean allowNullElements) {
-        if (sortedSet == null || c == null) {
-			throw new NullPointerException();
-		}
-
-        sortedSet = Collections.unmodifiableSortedSet(new TreeSet(sortedSet));
-        Iterator iterator = sortedSet.iterator();
-
-        while (iterator.hasNext()) {
-			assertInstance(iterator.next(), c, allowNullElements);
-		}
-
-        return sortedSet;
-    }
-
-    public static boolean startsWith(List left, List right, boolean equals) {
-        if (left == null || right == null) {
-			return false;
-		} else {
-            int l = left.size();
-            int r = right.size();
-
-            if (r > l || !equals && r == l) {
-				return false;
-			}
-
-            for (int i = 0; i < r; i++) {
-				if (!equals(left.get(i), right.get(i))) {
-					return false;
-				}
-			}
-
-            return true;
-        }
-    }
-
-    public static boolean startsWith(Object[] left, Object[] right,
-            boolean equals) {
-        if (left == null || right == null) {
-			return false;
-		} else {
-            int l = left.length;
-            int r = right.length;
-
-            if (r > l || !equals && r == l) {
-				return false;
-			}
-
-            for (int i = 0; i < r; i++) {
-				if (!equals(left[i], right[i])) {
-					return false;
-				}
-			}
-
-            return true;
-        }
-    }
-
-    public static String translateString(ResourceBundle resourceBundle,
-            String key) {
-        return Util.translateString(resourceBundle, key, key, true, true);
-    }
-
-    public static String translateString(ResourceBundle resourceBundle,
-            String key, String string, boolean signal, boolean trim) {
-        if (resourceBundle != null && key != null) {
-			try {
-                final String translatedString = resourceBundle.getString(key);
-
-                if (translatedString != null) {
-					return trim ? translatedString.trim() : translatedString;
-				}
-            } catch (MissingResourceException eMissingResource) {
-                if (signal) {
-					WorkbenchPlugin.log(eMissingResource);
-				}
-            }
-		}
-
-        return trim ? string.trim() : string;
-    }
-    
-    public static void arrayCopyWithRemoval(Object [] src, Object [] dst, int idxToRemove) {
-    	if (src == null || dst == null || src.length - 1 != dst.length || idxToRemove < 0 || idxToRemove >= src.length) {
-			throw new IllegalArgumentException();
-		}
-    	
-    	if (idxToRemove == 0) {
-    		System.arraycopy(src, 1, dst, 0, src.length - 1);    		
-    	}
-    	else if (idxToRemove == src.length - 1) {
-    		System.arraycopy(src, 0, dst, 0, src.length - 1);
-    	}
-    	else {
-    		System.arraycopy(src, 0, dst, 0, idxToRemove);
-    		System.arraycopy(src, idxToRemove + 1, dst, idxToRemove, src.length - idxToRemove - 1);
-    	}    	
-    }
-
-    /**
-     * Appends array2 to the end of array1 and returns the result
-     * 
-     * @param array1
-     * @param array2
-     * @return
-     * @since 3.1
-     */
-    public static Object[] appendArray(Object[] array1, Object[] array2) {        
-        Object[] result = new Object[array1.length + array2.length];
-        System.arraycopy(array1, 0, result, 0, array1.length);
-        System.arraycopy(array2, 0, result, array1.length, array2.length);
-        return result;               
-    }
-    
-    private Util() {
-    }
-
-	/**
-	 * Returns an interned representation of the given string
-	 * @param string The string to intern
-	 * @return The interned string
-	 */
-	public static String intern(String string) {
-		return string == null ? null : string.intern();
-	}
-	
-	/**
-	 * Returns the result of converting a list of comma-separated tokens into an array.
-	 * Used as a replacement for <code>String.split(String)</code>, to allow compilation
-	 * against JCL Foundation (bug 80053).
-	 * 
-	 * @param prop the initial comma-separated string
-	 * @param separator the separator characters
-	 * @return the array of string tokens
-	 * @since 3.1
-	 */
-	public static String[] getArrayFromList(String prop, String separator) {
-		if (prop == null || prop.trim().equals("")) { //$NON-NLS-1$
-			return new String[0];
-		}
-		ArrayList list = new ArrayList();
-		StringTokenizer tokens = new StringTokenizer(prop, separator); 
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (!token.equals("")) { //$NON-NLS-1$
-				list.add(token);
-			}
-		}
-		return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[list.size()]);
-	}
-
-	/**
-	 * Return the window for the given shell or the currently active window if
-	 * one could not be determined.
-	 * 
-	 * @param shellToCheck
-	 *            the shell to search on
-	 * @return the window for the given shell or the currently active window if
-	 *         one could not be determined
-	 * @since 3.2
-	 */
-	public static IWorkbenchWindow getWorkbenchWindowForShell(Shell shellToCheck) {
-		IWorkbenchWindow workbenchWindow = null;
-		while (workbenchWindow == null && shellToCheck != null) {
-			if (shellToCheck.getData() instanceof IWorkbenchWindow) {
-				workbenchWindow = (IWorkbenchWindow) shellToCheck.getData();
-			} else {
-				shellToCheck = (Shell) shellToCheck.getParent();
-			}
-		}
-
-		if (workbenchWindow == null) {
-			workbenchWindow = PlatformUI.getWorkbench()
-					.getActiveWorkbenchWindow();
-		}
-
-		return workbenchWindow;
-	}
-	
-	/**
-	 * Return an appropriate shell to parent dialogs on. This will be one of the
-	 * workbench windows (the active one) should any exist. Otherwise
-	 * <code>null</code> is returned.
-	 * 
-	 * @return the shell to parent on or <code>null</code> if there is no
-	 *         appropriate shell
-	 * @since 3.3
-	 */
-	public static Shell getShellToParentOn() {
-		IWorkbench workbench = PlatformUI.getWorkbench();
-		IWorkbenchWindow activeWindow = workbench.getActiveWorkbenchWindow();
-		IWorkbenchWindow windowToParentOn = activeWindow == null ? (workbench
-				.getWorkbenchWindowCount() > 0 ? workbench
-				.getWorkbenchWindows()[0] : null) : activeWindow;
-		return windowToParentOn == null ? null : activeWindow.getShell();
-	}
-	
-	/**
-	 * Splits a string at the first occurance of the delimiting char.
-	 * If the source string is null then so is the result. If the source
-	 * string is badly formatted then it is returned in the first array
-	 * entry and the second entry is an empty string.
-	 * 
-	 * @param src The string to be split
-	 * @param delim The character to split on
-	 * @return A two entry string array containing the left/right pair.
-	 */
-	public static String[] split(String src, char delim) {
-		if (src == null)
-			return null;
-		
-		String[] splitStr = new String[2];
-		int delimIndex = src.indexOf(delim);
-		if (delimIndex == -1 || delimIndex == 0 || delimIndex == src.length()-1) {
-			splitStr[0] = src;
-			splitStr[1] = ZERO_LENGTH_STRING;
-			return splitStr;
-		}
-		
-		splitStr[0] = src.substring(0, delimIndex);
-		splitStr[1] = src.substring(delimIndex+1);
-		
-		return splitStr;
-	}
-	
-	/**
-	 * Foundation replacement for String.replaceAll(*).
-	 * 
-	 * @param src the starting string.
-	 * @param find the string to find.
-	 * @param replacement the string to replace.
-	 * @return The new string.
-	 * @since 3.3
-	 */
-	public static String replaceAll(String src, String find, String replacement) {
-		return org.eclipse.jface.util.Util.replaceAll(src, find, replacement);
-	}
-	
-	/**
-	 * Attempt to load the executable extension from the element/attName. If
-	 * the load fails or the resulting object is not castable to the
-	 * provided classSpec (if any) an error is logged and a null is returned.
-	 * 
-	 * @param element The {@link IConfigurationElement} containing the
-	 * executable extension's specification 
-	 * @param attName The attribute name of the executable extension
-	 * @param classSpec An optional <code>Class</code> defining the type
-	 * that the loaded Object must be castable to. This is optional to support
-	 * code where the client has a choice of mutually non-castable types to
-	 * choose from.
-	 * 
-	 * @return The loaded object which is guaranteed to be
-	 * castable to the given classSpec or null if a failure occurred 
-	 */
-	public static Object safeLoadExecutableExtension(IConfigurationElement element, 
-			String attName, Class classSpec) {
-		Object loadedEE = null;
-		
-		// Load the handler.
-		try {
-			loadedEE = element.createExecutableExtension(attName);
-		} catch (final CoreException e) {
-			// TODO: give more info (eg plugin id)....
-			// Gather formatting info
-			final String classDef = element.getAttribute(attName);			
-
-			final String message = "Class load Failure: '" + classDef + "'";  //$NON-NLS-1$//$NON-NLS-2$
-			IStatus status = new Status(IStatus.ERROR,
-					WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-			WorkbenchPlugin.log(message, status);
-		}
-		
-		// Check the loaded object's type
-		if (classSpec != null && loadedEE != null && !classSpec.isInstance(loadedEE)) {
-			// ooops, the loaded class is not castable to the given type
-			final String message = "Loaded class is of incorrect type: expected(" + //$NON-NLS-1$
-				classSpec.getName() + ") got (" + loadedEE.getClass().getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-
-			IllegalArgumentException e = new IllegalArgumentException(message);			
-			final IStatus status = new Status(IStatus.ERROR,
-					WorkbenchPlugin.PI_WORKBENCH, 0, message, e);
-			WorkbenchPlugin.log(message, status);
-			
-			// This 'failed'
-			loadedEE = null;
-		}
-		
-		return loadedEE;
-	}
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java
deleted file mode 100644
index aa453af..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractExtensionWizardRegistry.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dialogs.WizardCollectionElement;
-import org.eclipse.ui.internal.dialogs.WorkbenchWizardElement;
-import org.eclipse.ui.internal.registry.WizardsRegistryReader;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-
-/**
- * Abstract baseclass for wizard registries that listen to extension changes.
- * 
- * @since 3.1
- */
-public abstract class AbstractExtensionWizardRegistry extends
-		AbstractWizardRegistry implements IExtensionChangeHandler{
-
-	/**
-	 * Create a new instance of this class.
-	 */
-	public AbstractExtensionWizardRegistry() {
-		super();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#addExtension(org.eclipse.core.runtime.dynamicHelpers.IExtensionTracker, org.eclipse.core.runtime.IExtension)
-	 */
-	public void addExtension(IExtensionTracker tracker, IExtension extension) {
-		WizardsRegistryReader reader = new WizardsRegistryReader(getPlugin(),
-				getExtensionPoint());
-		reader.setInitialCollection(getWizardElements());
-		IConfigurationElement[] configurationElements = extension
-				.getConfigurationElements();
-		for (int i = 0; i < configurationElements.length; i++) {
-			reader.readElement(configurationElements[i]);
-		}
-		// no need to reset the wizard elements - getWizardElements will parse
-		// the
-		// results of the registry reading
-		setWizardElements(reader.getWizardElements());
-		// reregister all object handles - it'd be better to process the deltas
-		// in this case
-		registerWizards(getWizardElements());
-
-		// handle the primary wizards
-		WorkbenchWizardElement[] additionalPrimary = reader.getPrimaryWizards();
-		if (additionalPrimary.length == 0) {
-			return;
-		}
-		IWizardDescriptor[] localPrimaryWizards = getPrimaryWizards();
-		WorkbenchWizardElement[] newPrimary = new WorkbenchWizardElement[additionalPrimary.length
-				+ localPrimaryWizards.length];
-		System.arraycopy(localPrimaryWizards, 0, newPrimary, 0,
-				localPrimaryWizards.length);
-		System.arraycopy(additionalPrimary, 0, newPrimary,
-				localPrimaryWizards.length, additionalPrimary.length);
-		setPrimaryWizards(newPrimary);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractWizardRegistry#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		PlatformUI.getWorkbench().getExtensionTracker()
-				.unregisterHandler(this);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.wizards.AbstractWizardRegistry#doInitialize()
-	 */
-	protected void doInitialize() {
-        
-		PlatformUI.getWorkbench().getExtensionTracker().registerHandler(this, ExtensionTracker.createExtensionPointFilter(getExtensionPointFilter()));
-
-		WizardsRegistryReader reader = new WizardsRegistryReader(getPlugin(),
-				getExtensionPoint());
-		setWizardElements(reader.getWizardElements());
-		setPrimaryWizards(reader.getPrimaryWizards());
-		registerWizards(getWizardElements());
-	}
-
-	/**
-	 * Return the extension point id that should be used for extension registry
-	 * queries.
-	 * 
-	 * @return the extension point id
-	 */
-	protected abstract String getExtensionPoint();
-
-	private IExtensionPoint getExtensionPointFilter() {
-		return Platform.getExtensionRegistry().getExtensionPoint(getPlugin(),
-				getExtensionPoint());
-	}
-
-	/**
-	 * Return the plugin id that should be used for extension registry queries.
-	 * 
-	 * @return the plugin id
-	 */
-	protected abstract String getPlugin();
-
-	/**
-	 * Register the object with the workbench tracker.
-	 * 
-	 * @param extension
-	 *            the originating extension
-	 * @param object
-	 *            the object to track
-	 */
-	private void register(IExtension extension, Object object) {
-		PlatformUI.getWorkbench().getExtensionTracker().registerObject(
-				extension, object, IExtensionTracker.REF_WEAK);
-	}
-
-	/**
-	 * Register all wizards in the given collection with the extension tracker.
-	 * 
-	 * @param collection
-	 *            the collection to register
-	 */
-	private void registerWizards(WizardCollectionElement collection) {
-		registerWizards(collection.getWorkbenchWizardElements());
-
-		WizardCollectionElement[] collections = collection
-				.getCollectionElements();
-		for (int i = 0; i < collections.length; i++) {
-			IConfigurationElement configurationElement = collections[i]
-					.getConfigurationElement();
-			if (configurationElement != null) {
-				register(configurationElement.getDeclaringExtension(),
-						collections[i]);
-			}
-			registerWizards(collections[i]);
-		}
-	}
-
-	/**
-	 * Register all wizards in the given array.
-	 * 
-	 * @param wizards
-	 *            the wizards to register
-	 */
-	private void registerWizards(WorkbenchWizardElement[] wizards) {
-		for (int i = 0; i < wizards.length; i++) {
-			register(wizards[i].getConfigurationElement()
-					.getDeclaringExtension(), wizards[i]);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.dynamicHelpers.IExtensionChangeHandler#removeExtension(org.eclipse.core.runtime.IExtension, java.lang.Object[])
-	 */
-	public void removeExtension(IExtension extension, Object[] objects) {
-		if (!extension.getExtensionPointUniqueIdentifier().equals(
-				getExtensionPointFilter().getUniqueIdentifier())) {
-			return;
-		}
-		for (int i = 0; i < objects.length; i++) {
-			Object object = objects[i];
-			if (object instanceof WizardCollectionElement) {
-				// TODO: should we move child wizards to the "other" node?
-				WizardCollectionElement collection = (WizardCollectionElement) object;
-				collection.getParentCollection().remove(collection);
-			} else if (object instanceof WorkbenchWizardElement) {
-				WorkbenchWizardElement wizard = (WorkbenchWizardElement) object;
-				WizardCollectionElement parent = wizard.getCollectionElement();
-				if (parent != null) {
-					parent.remove(wizard);
-				}
-				IWizardDescriptor[] primaryWizards = getPrimaryWizards();
-				for (int j = 0; j < primaryWizards.length; j++) {
-					if (primaryWizards[j] == wizard) {
-						WorkbenchWizardElement[] newPrimary = new WorkbenchWizardElement[primaryWizards.length - 1];
-						Util
-								.arrayCopyWithRemoval(primaryWizards,
-										newPrimary, j);
-						primaryWizards = newPrimary;
-						break;
-					}
-				}
-				setPrimaryWizards((WorkbenchWizardElement[]) primaryWizards);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java
deleted file mode 100644
index 335d3af..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/AbstractWizardRegistry.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards;
-
-import org.eclipse.ui.internal.dialogs.WizardCollectionElement;
-import org.eclipse.ui.internal.dialogs.WorkbenchWizardElement;
-import org.eclipse.ui.wizards.IWizardCategory;
-import org.eclipse.ui.wizards.IWizardDescriptor;
-import org.eclipse.ui.wizards.IWizardRegistry;
-
-/**
- * Abstract base class for various workbench wizards.
- * 
- * @since 3.1
- */
-public abstract class AbstractWizardRegistry implements IWizardRegistry {
-
-	private boolean initialized = false;
-
-	private WorkbenchWizardElement[] primaryWizards;
-
-	private WizardCollectionElement wizardElements;
-
-	/**
-	 * Create a new instance of this class.
-	 */
-	public AbstractWizardRegistry() {
-		super();
-	}
-	
-	/**
-	 * Dispose of this registry.
-	 */
-	public void dispose() {
-		primaryWizards = null;
-		wizardElements = null;
-		initialized = false;
-	}
-
-	/**
-	 * Perform initialization of this registry. Should never be called by
-	 * implementations. 
-	 */
-	protected abstract void doInitialize();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.wizards.IWizardRegistry#findCategory(java.lang.String)
-	 */
-	public IWizardCategory findCategory(String id) {
-		initialize();
-		return wizardElements.findCategory(id);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.wizards.IWizardRegistry#findWizard(java.lang.String)
-	 */
-	public IWizardDescriptor findWizard(String id) {
-		initialize();
-		return wizardElements.findWizard(id, true);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.wizards.IWizardRegistry#getPrimaryWizards()
-	 */
-	public IWizardDescriptor[] getPrimaryWizards() {
-		initialize();
-		return primaryWizards;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.wizards.IWizardRegistry#getRootCategory()
-	 */
-	public IWizardCategory getRootCategory() {
-		initialize();
-		return wizardElements;
-	}
-
-	/**
-	 * Return the wizard elements.
-	 * 
-	 * @return the wizard elements
-	 */
-	protected WizardCollectionElement getWizardElements() {
-		initialize();
-		return wizardElements;
-	}
-
-	/**
-	 * Read the contents of the registry if necessary.
-	 */
-	protected final synchronized void initialize() {
-		if (isInitialized()) {
-			return;
-		}
-
-		initialized = true;
-		doInitialize();
-	}
-
-	/**
-	 * Return whether the registry has been read.
-	 * 
-	 * @return whether the registry has been read
-	 */
-	private boolean isInitialized() {
-		return initialized;
-	}
-
-	/**
-	 * Set the primary wizards.
-	 * 
-	 * @param primaryWizards
-	 *            the primary wizards
-	 */
-	protected void setPrimaryWizards(WorkbenchWizardElement[] primaryWizards) {
-		this.primaryWizards = primaryWizards;
-	}
-
-	/**
-	 * Set the wizard elements.
-	 * 
-	 * @param wizardElements
-	 *            the wizard elements
-	 */
-	protected void setWizardElements(WizardCollectionElement wizardElements) {
-		this.wizardElements = wizardElements;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java
deleted file mode 100644
index 9874d67..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ExportWizardRegistry.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards;
-
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Registry that contains wizards contributed via the <code>exportWizards</code>
- * extension point.
- * 
- * @since 3.1
- */
-public class ExportWizardRegistry extends AbstractExtensionWizardRegistry {
-
-	private static ExportWizardRegistry singleton;
-	
-	/**
-	 * Return the singleton instance of this class.
-	 * 
-	 * @return the singleton instance of this class
-	 */
-	public static synchronized ExportWizardRegistry getInstance() {		
-		if (singleton == null) {
-			singleton = new ExportWizardRegistry();
-		}
-		return singleton;
-	}
-	
-	/**
-	 * 
-	 */
-	public ExportWizardRegistry() {
-		super();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractExtensionWizardRegistry#getExtensionPoint()
-	 */
-	protected String getExtensionPoint() {
-		return IWorkbenchRegistryConstants.PL_EXPORT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractExtensionWizardRegistry#getPlugin()
-	 */
-	protected String getPlugin() {
-		return PlatformUI.PLUGIN_ID;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java
deleted file mode 100644
index 4b6f7f5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/ImportWizardRegistry.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards;
-
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Registry that contains wizards contributed via the <code>importWizards</code>
- * extension point.
- * 
- * @since 3.1
- */
-public class ImportWizardRegistry extends AbstractExtensionWizardRegistry {
-
-	private static ImportWizardRegistry singleton;
-	
-	/**
-	 * Return the singleton instance of this class.
-	 * 
-	 * @return the singleton instance of this class
-	 */
-	public static synchronized ImportWizardRegistry getInstance() {		
-		if (singleton == null) {
-			singleton = new ImportWizardRegistry();
-		}
-		return singleton;
-	}
-		
-	
-	/**
-	 * 
-	 */
-	public ImportWizardRegistry() {
-		super();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractExtensionWizardRegistry#getExtensionPoint()
-	 */
-	protected String getExtensionPoint() {
-		return IWorkbenchRegistryConstants.PL_IMPORT;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractExtensionWizardRegistry#getPlugin()
-	 */
-	protected String getPlugin() {
-		return PlatformUI.PLUGIN_ID;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/NewWizardRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/NewWizardRegistry.java
deleted file mode 100644
index 234d4af..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/NewWizardRegistry.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards;
-
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Registry that contains wizards contributed via the <code>newWizards</code>
- * extension point.
- * 
- * @since 3.1
- */
-public final class NewWizardRegistry extends AbstractExtensionWizardRegistry {
-
-	private static NewWizardRegistry singleton;
-	
-	/**
-	 * Return the singleton instance of this class.
-	 * 
-	 * @return the singleton instance of this class
-	 */
-	public static synchronized NewWizardRegistry getInstance() {		
-		if (singleton == null) {
-			singleton = new NewWizardRegistry();
-		}
-		return singleton;
-	}
-		
-	/**
-	 * Private constructor.
-	 */
-	private NewWizardRegistry() {
-		super();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractExtensionWizardRegistry#getExtensionPoint()
-	 */
-	protected String getExtensionPoint() {
-		return IWorkbenchRegistryConstants.PL_NEW;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.AbstractExtensionWizardRegistry#getPlugin()
-	 */
-	protected String getPlugin() {
-		return PlatformUI.PLUGIN_ID;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java
deleted file mode 100644
index d21cd4a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesExportWizard.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards.preferences;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IExportWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * Standard workbench wizard for exporting preferences from the workspace
- * to the local file system.
- * <p>
- * This class may be instantiated and used without further configuration;
- * this class is not intended to be subclassed.
- * </p>
- * <p>
- * Example:
- * <pre>
- * IWizard wizard = new PreferencesExportWizard();
- * wizard.init(workbench, selection);
- * WizardDialog dialog = new WizardDialog(shell, wizard);
- * dialog.open();
- * </pre>
- * During the call to <code>open</code>, the wizard dialog is presented to the
- * user. When the user hits Finish, the user-selected workspace preferences 
- * are exported to the user-specified location in the local file system,
- * the dialog closes, and the call to <code>open</code> returns.
- * </p>
- * 
- * @since 3.1
- * 
- */
-public class PreferencesExportWizard extends Wizard implements IExportWizard {
-
-    private WizardPreferencesExportPage1 mainPage;
-
-    /**
-     * Creates a wizard for exporting workspace preferences to the local file system.
-     */
-    public PreferencesExportWizard() {
-        IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault().getDialogSettings();
-        IDialogSettings section = workbenchSettings
-                .getSection("PreferencesExportWizard");//$NON-NLS-1$
-        if (section == null) {
-			section = workbenchSettings.addNewSection("PreferencesExportWizard");//$NON-NLS-1$
-		}
-        setDialogSettings(section);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizard.
-     */
-    public void addPages() {
-        super.addPages();
-        mainPage = new WizardPreferencesExportPage1();
-        addPage(mainPage);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchWizard.
-     */
-    public void init(IWorkbench workbench, IStructuredSelection currentSelection) {
-        setWindowTitle(PreferencesMessages.PreferencesExportWizard_export);
-        setDefaultPageImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_PREF_WIZ));
-        setNeedsProgressMonitor(true);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizard.
-     */
-    public boolean performFinish() {
-        return mainPage.finish();
-    }
-    
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java
deleted file mode 100644
index 4904034..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesImportWizard.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards.preferences;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IImportWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-
-/**
- * Standard workbench wizard for importing resources from the local file system
- * into the workspace.
- * <p>
- * This class may be instantiated and used without further configuration;
- * this class is not intended to be subclassed.
- * </p>
- * <p>
- * Example:
- * <pre>
- * IWizard wizard = new PreferencesImportWizard();
- * wizard.init(workbench, selection);
- * WizardDialog dialog = new WizardDialog(shell, wizard);
- * dialog.open();
- * </pre>
- * During the call to <code>open</code>, the wizard dialog is presented to the
- * user. When the user hits Finish, the user-selected files are imported
- * into the workspace, the dialog closes, and the call to <code>open</code>
- * returns.
- * </p>
- *  
- * @since 3.1
- * 
- */
-public class PreferencesImportWizard extends Wizard implements IImportWizard {
-
-    private WizardPreferencesImportPage1 mainPage;
-	
-    /**
-     * Creates a wizard for importing resources into the workspace from
-     * the file system.
-     */
-    public PreferencesImportWizard() {
-        IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault().getDialogSettings();
-        IDialogSettings section = workbenchSettings
-                .getSection("PreferencesImportWizard");//$NON-NLS-1$
-        if (section == null) {
-			section = workbenchSettings.addNewSection("PreferencesImportWizard");//$NON-NLS-1$
-		}
-        setDialogSettings(section);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizard.
-     */
-    public void addPages() {
-        super.addPages();
-        mainPage = new WizardPreferencesImportPage1();
-        addPage(mainPage);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchWizard.
-     */
-    public void init(IWorkbench workbench, IStructuredSelection currentSelection) {
-        setWindowTitle(PreferencesMessages.PreferencesImportWizard_import);
-        setDefaultPageImageDescriptor(WorkbenchImages
-                .getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_IMPORT_PREF_WIZ));
-        setNeedsProgressMonitor(true);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWizard.
-     */
-    public boolean performFinish() {
-        return mainPage.finish();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java
deleted file mode 100644
index 38c2e2a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/PreferencesMessages.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ui.internal.wizards.preferences;
-
-import org.eclipse.osgi.util.NLS;
-
-
-/**
- * NLS messages class for preferences messages. 
-
- * @since 3.1
- * 
- */
-public class PreferencesMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.wizards.preferences.messages";//$NON-NLS-1$
-
-	public static String WizardPreferences_description;
-	public static String WizardPreferencesPage_noOptionsSelected;
-	public static String WizardPreferences_noSpecificPreferenceDescription;
-	 
-	public static String PreferencesExportWizard_export;
-	public static String WizardPreferencesExportPage1_exportTitle;
-	public static String WizardPreferencesExportPage1_exportDescription;
-	public static String WizardPreferencesExportPage1_preferences;
-	public static String WizardPreferencesExportPage1_noPrefFile;
-	public static String WizardPreferencesExportPage1_overwrite;
-	public static String WizardPreferencesExportPage1_title;
-	public static String WizardPreferencesExportPage1_all;
-	public static String WizardPreferencesExportPage1_choose;
-	public static String WizardPreferencesExportPage1_file;
-
-	public static String PreferencesExport_error;
-	public static String PreferencesExport_browse;
-	public static String PreferencesExport_createTargetDirectory;
-	public static String PreferencesExport_directoryCreationError;
-	public static String ExportFile_overwriteExisting;
-
-	public static String PreferencesImportWizard_import;
-	public static String WizardPreferencesImportPage1_importTitle;
-	public static String WizardPreferencesImportPage1_importDescription;
-	public static String WizardPreferencesImportPage1_all;
-	public static String WizardPreferencesImportPage1_choose;
-	public static String WizardPreferencesImportPage1_file;
-	public static String WizardPreferencesImportPage1_title;
-	public static String WizardPreferencesImportPage1_invalidPrefFile;
-	
-	public static String SelectionDialog_selectLabel;
-	public static String SelectionDialog_deselectLabel;
-
-	
-	public static String WizardDataTransfer_existsQuestion;
-	public static String WizardDataTransfer_overwriteNameAndPathQuestion;
-	public static String Question;
-	
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, PreferencesMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
deleted file mode 100644
index 87d09bd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesExportPage1.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards.preferences;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IPreferenceFilter;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
-
-/**
- * Page 1 of the base preference export Wizard
- * 
- * @since 3.1
- */
-public class WizardPreferencesExportPage1 extends WizardPreferencesPage  {
-
-	// constants
-	private static final String PREFERENCESEXPORTPAGE1 = "preferencesExportPage1"; // //$NON-NLS-1$
-
-	/**
-	 * Create an instance of this class
-	 */
-	protected WizardPreferencesExportPage1(String name) {
-		super(name);
-		setTitle(PreferencesMessages.WizardPreferencesExportPage1_exportTitle);
-		setDescription(PreferencesMessages.WizardPreferencesExportPage1_exportDescription);
-	}
-
-	/**
-	 * Create an instance of this class
-	 */
-	public WizardPreferencesExportPage1() {
-		this(PREFERENCESEXPORTPAGE1);
-	}
-
-	protected String getOutputSuffix() {
-    	return ".epf"; //$NON-NLS-1$
-    }
-	
-	/**
-	 * Answer the contents of self's destination specification widget
-	 * 
-	 * @return java.lang.String
-	 */
-	protected String getDestinationValue() {
-		String idealSuffix = getOutputSuffix();
-        String destinationText = super.getDestinationValue();
-
-        // only append a suffix if the destination doesn't already have a . in 
-        // its last path segment.  
-        // Also prevent the user from selecting a directory.  Allowing this will 
-        // create a ".epf" file in the directory
-        if (destinationText.length() != 0
-                && !destinationText.endsWith(File.separator)) {
-            int dotIndex = destinationText.lastIndexOf('.');
-            if (dotIndex != -1) {
-                // the last path seperator index
-                int pathSepIndex = destinationText.lastIndexOf(File.separator);
-                if (pathSepIndex != -1 && dotIndex < pathSepIndex) {
-                    destinationText += idealSuffix;
-                }
-            } else {
-                destinationText += idealSuffix;
-            }
-        }
-
-        return destinationText;
-    }
-
-		
-	protected String getAllButtonText() {
-		return PreferencesMessages.WizardPreferencesExportPage1_all;
-	}
-
-	protected String getChooseButtonText() {
-		return PreferencesMessages.WizardPreferencesExportPage1_choose;
-	}
-
-	/**
-	 * @param composite
-	 */
-	protected void createTransferArea(Composite composite) {
-		createTransfersList(composite);
-		createDestinationGroup(composite);
-		createOptionsGroup(composite);
-	}
-
-	/**
-	 * Answer the string to display in self as the destination type
-	 * 
-	 * @return java.lang.String
-	 */
-	protected String getDestinationLabel() {
-		return PreferencesMessages.WizardPreferencesExportPage1_file;
-	}
-
-	/*
-	 * return the PreferenceTransgerElements specified
-	 */
-	protected PreferenceTransferElement[] getTransfers() {
-		PreferenceTransferElement[] elements = super.getTransfers();
-		PreferenceTransferElement[] returnElements = new PreferenceTransferElement[elements.length];
-		IPreferenceFilter[] filters = new IPreferenceFilter[1];
-		IPreferenceFilter[] matches;
-		IPreferencesService service = Platform.getPreferencesService();
-		int count = 0;
-		try {
-			for (int i = 0; i < elements.length; i++) {
-				PreferenceTransferElement element = elements[i];
-				filters[0] = element.getFilter();
-				matches = service.matches((IEclipsePreferences) service
-						.getRootNode().node("instance"), filters); //$NON-NLS-1$
-				if (matches.length > 0) {
-					returnElements[count++] = element;
-				}
-			}
-			elements = new PreferenceTransferElement[count];
-			System.arraycopy(returnElements, 0, elements, 0, count);
-		} catch (CoreException e) {
-			WorkbenchPlugin.log(e.getMessage(), e);
-			return new PreferenceTransferElement[0];
-		}
-		return elements;
-	}
-
-	/**
-	 * @param transfers
-	 * @return <code>true</code> if the transfer was succesful, and
-	 *         <code>false</code> otherwise
-	 */
-	protected boolean transfer(IPreferenceFilter[] transfers) {
-		File exportFile = new File(getDestinationValue());
-		if (!ensureTargetIsValid(exportFile)) {
-			return false;
-		}
-		FileOutputStream fos = null;
-		try {
-			if (transfers.length > 0) {
-				try {
-					fos = new FileOutputStream(exportFile);
-				} catch (FileNotFoundException e) {
-					WorkbenchPlugin.log(e.getMessage(), e);
-					MessageDialog.openError(getControl().getShell(), new String(), e.getLocalizedMessage());
-					return false;
-				}
-				IPreferencesService service = Platform.getPreferencesService();
-				try {
-					service.exportPreferences(service.getRootNode(), transfers,
-							fos);
-				} catch (CoreException e) {
-					WorkbenchPlugin.log(e.getMessage(), e);
-					MessageDialog.openError(getControl().getShell(), new String(), e.getLocalizedMessage());
-					return false;
-				}
-			}
-		} finally {
-			if (fos != null) {
-				try {
-					fos.close();
-				} catch (IOException e) {
-					WorkbenchPlugin.log(e.getMessage(), e);
-					MessageDialog.openError(getControl().getShell(), new String(), e.getLocalizedMessage());
-					return false;
-				}
-			}
-		}
-		return true;
-	}
-
-	protected String getFileDialogTitle() {
-		return PreferencesMessages.WizardPreferencesExportPage1_title;
-	}
-
-	protected int getFileDialogStyle() {
-		return SWT.SAVE;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getInvalidDestinationMessage()
-	 */
-	protected String getInvalidDestinationMessage() {
-		return PreferencesMessages.WizardPreferencesExportPage1_noPrefFile;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
deleted file mode 100644
index c5dd946..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesImportPage1.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards.preferences;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.IExportedPreferences;
-import org.eclipse.core.runtime.preferences.IPreferenceFilter;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
-
-/**
- * Page 1 of the base preference import Wizard
- * 
- * 
- * @since 3.1
- */
-public class WizardPreferencesImportPage1 extends WizardPreferencesPage {
-
-    /**
-     * Create a new instance of the receiver with name pageName.
-     * @param pageName
-     */
-    protected WizardPreferencesImportPage1(String pageName) {
-        super(pageName);
-        setTitle(PreferencesMessages.WizardPreferencesImportPage1_importTitle);
-        setDescription(PreferencesMessages.WizardPreferencesImportPage1_importDescription);
-    }
-
-    /**
-     * Create an instance of this class
-     */
-    public WizardPreferencesImportPage1() {
-        this("preferencesImportPage1");//$NON-NLS-1$
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getAllButtonText()
-     */
-    protected String getAllButtonText() {
-        return PreferencesMessages.WizardPreferencesImportPage1_all;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getChooseButtonText()
-     */
-    protected String getChooseButtonText() {
-        return PreferencesMessages.WizardPreferencesImportPage1_choose;
-    }
-
-   
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getTransfers()
-     */
-    protected PreferenceTransferElement[] getTransfers() {
-        if (validFromFile()) {
-            FileInputStream fis;
-
-            try {
-                fis = new FileInputStream(getDestinationValue());
-            } catch (FileNotFoundException e) {
-                WorkbenchPlugin.log(e.getMessage(), e);
-                return new PreferenceTransferElement[0];
-            }
-            IPreferencesService service = Platform.getPreferencesService();
-            try {
-                IExportedPreferences prefs;
-                prefs = service.readPreferences(fis);
-                PreferenceTransferElement[] transfers = super.getTransfers();
-                IPreferenceFilter[] filters = new IPreferenceFilter[transfers.length];
-                for (int i = 0; i < transfers.length; i++) {
-                    PreferenceTransferElement transfer = transfers[i];
-                    filters[i] = transfer.getFilter();
-                }
-                IPreferenceFilter[] matches = service.matches(prefs, filters);
-                PreferenceTransferElement[] returnTransfers = new PreferenceTransferElement[matches.length];
-                int index = 0;
-                for (int i = 0; i < matches.length; i++) {
-                    IPreferenceFilter filter = matches[i];
-                    for (int j = 0; j < transfers.length; j++) {
-                        PreferenceTransferElement element = transfers[j];
-                        if (element.getFilter().equals(filter)) {
-							returnTransfers[index++] = element;
-						}                        
-                    }
-                }
-
-                PreferenceTransferElement[] destTransfers = new PreferenceTransferElement[index];
-                System.arraycopy(returnTransfers, 0, destTransfers, 0, index);
-                return destTransfers;
-            } catch (CoreException e) {
-            	//Do not log core exceptions, they indicate the chosen file is not valid
-                //WorkbenchPlugin.log(e.getMessage(), e);
-            } finally {
-                try {
-                    fis.close();
-                } catch (IOException e) {
-                    WorkbenchPlugin.log(e.getMessage(), e);
-                }
-            }
-        }
-
-        return new PreferenceTransferElement[0];
-    }
-
-    /**
-     * Return whether or not the file is valid.
-     * @return <code>true</code> of the file is an existing
-     * file and not a directory
-     */
-    private boolean validFromFile() {
-        File fromFile = new File(getDestinationValue());
-        return fromFile.exists() && !fromFile.isDirectory();
-    }
-
-    protected void setPreferenceTransfers() {
-    	super.setPreferenceTransfers();	
-    	
-		if(validFromFile() && (transfersTable.getItemCount() == 0)) {
-			text.setText(PreferencesMessages.WizardPreferences_noSpecificPreferenceDescription);
-		} else {
-			text.setText(""); //$NON-NLS-1$
-		}
-	}
-  
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#createTransferArea(org.eclipse.swt.widgets.Composite)
-     */
-    protected void createTransferArea(Composite composite) {
-        createDestinationGroup(composite);
-        createTransfersList(composite);
-    }
-
-    /**
-     * Answer the string to display in self as the destination type
-     * 
-     * @return java.lang.String
-     */
-    protected String getDestinationLabel() {
-        return PreferencesMessages.WizardPreferencesImportPage1_file;
-    }
-
-    /**
-     * @param filters
-     * @return <code>true</code> if the transfer was succesful, and
-     *         <code>false</code> otherwise
-     */
-    protected boolean transfer(IPreferenceFilter[] filters) {
-        File importFile = new File(getDestinationValue());
-        FileInputStream fis = null;
-        try {
-            if (filters.length > 0) {
-                try {
-                    fis = new FileInputStream(importFile);
-                } catch (FileNotFoundException e) {
-                    WorkbenchPlugin.log(e.getMessage(), e);
-                    MessageDialog.openError(getControl().getShell(), new String(), e.getLocalizedMessage());
-                    return false;
-                }
-                IPreferencesService service = Platform.getPreferencesService();
-                try {
-                    IExportedPreferences prefs = service.readPreferences(fis);
-                    
-                    service.applyPreferences(prefs, filters);
-                } catch (CoreException e) {
-                    WorkbenchPlugin.log(e.getMessage(), e);
-                    MessageDialog.openError(getControl().getShell(), new String(), e.getLocalizedMessage());
-                    return false;
-                }
-            }
-        } finally {
-            if (fis != null) {
-				try {
-                    fis.close();
-                } catch (IOException e) {
-                	WorkbenchPlugin.log(e.getMessage(), e);
-                	MessageDialog.openError(getControl().getShell(), new String(), e.getLocalizedMessage());
-                }
-			}
-        }
-        return true;
-    }
-
-    /**
-     * Handle events and enablements for widgets in this page
-     * 
-     * @param e
-     *            Event
-     */
-    public void handleEvent(Event e) {
-        if (e.widget == destinationNameField) {
-			setPreferenceTransfers();
-		}
-
-        super.handleEvent(e);
-    }
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getFileDialogTitle()
-     */
-    protected String getFileDialogTitle(){
-		return PreferencesMessages.WizardPreferencesImportPage1_title;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getFileDialogStyle()
-	 */
-	protected int getFileDialogStyle() {
-		return SWT.OPEN;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#validDestination()
-	 */
-	protected boolean validDestination() {
-		return super.validDestination() && validFromFile();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getInvalidDestinationMessage()
-	 */
-	protected String getInvalidDestinationMessage() {
-		return PreferencesMessages.WizardPreferencesImportPage1_invalidPrefFile;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java
deleted file mode 100644
index 9b7145b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/WizardPreferencesPage.java
+++ /dev/null
@@ -1,1010 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.wizards.preferences;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.preferences.ConfigurationScope;
-import org.eclipse.core.runtime.preferences.IPreferenceFilter;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.osgi.util.NLS;
-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.Font;
-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.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.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.dialogs.IOverwriteQuery;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
-import org.eclipse.ui.internal.preferences.PreferenceTransferManager;
-
-/**
- * Base class for preference export/import pages.
- * 
- * @since 3.1
- */
-public abstract class WizardPreferencesPage extends WizardPage implements
-		Listener, IOverwriteQuery {
-
-	// widgets
-	protected Combo destinationNameField;
-
-	// constants
-	private Button destinationBrowseButton;
-
-	private Button overwriteExistingFilesCheckbox;
-
-	protected Table transfersTable;
-	
-	protected Text text;
-
-	private Composite buttonComposite;
-
-	private Button allButton;
-
-	protected Button chooseImportsButton;
-
-	private Group group;
-
-	// dialog store id constants
-	private static final String STORE_DESTINATION_NAMES_ID = "WizardPreferencesExportPage1.STORE_DESTINATION_NAMES_ID";//$NON-NLS-1$
-
-	private static final String STORE_OVERWRITE_EXISTING_FILES_ID = "WizardPreferencesExportPage1.STORE_OVERWRITE_EXISTING_FILES_ID";//$NON-NLS-1$
-
-	private static final String TRANSFER_ALL_PREFERENCES_ID = "WizardPreferencesExportPage1.EXPORT_ALL_PREFERENCES_ID"; //$NON-NLS-1$
-
-	private Hashtable imageTable;
-
-	private PreferenceTransferElement[] transfers;
-
-	private String currentMessage;
-
-	private static final String STORE_DESTINATION_ID = null;
-
-    protected static final int COMBO_HISTORY_LENGTH = 5;
-    
-	/**
-	 * @param pageName
-	 */
-	protected WizardPreferencesPage(String pageName) {
-		super(pageName);
-	}
-
-	/**
-	 * Creates a new button with the given id.
-	 * <p>
-	 * The <code>Dialog</code> implementation of this framework method creates
-	 * a standard push button, registers for selection events including button
-	 * presses and registers default buttons with its shell. The button id is
-	 * stored as the buttons client data. Note that the parent's layout is
-	 * assumed to be a GridLayout and the number of columns in this layout is
-	 * incremented. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent composite
-	 * @param id
-	 *            the id of the button (see <code>IDialogConstants.*_ID</code>
-	 *            constants for standard dialog button ids)
-	 * @param label
-	 *            the label from the button
-	 * @param defaultButton
-	 *            <code>true</code> if the button is to be the default button,
-	 *            and <code>false</code> otherwise
-	 */
-	protected Button createButton(Composite parent, int id, String label,
-			boolean defaultButton) {
-		// increment the number of columns in the button bar
-		((GridLayout) parent.getLayout()).numColumns++;
-
-		Button button = new Button(parent, SWT.PUSH);
-		button.setFont(parent.getFont());
-
-		GridData buttonData = new GridData(GridData.FILL_HORIZONTAL);
-		button.setLayoutData(buttonData);
-
-		button.setData(new Integer(id));
-		button.setText(label);
-
-		if (defaultButton) {
-			Shell shell = parent.getShell();
-			if (shell != null) {
-				shell.setDefaultButton(button);
-			}
-			button.setFocus();
-		}
-		return button;
-	}
-
-	/**
-	 * Add the passed value to self's destination widget's history
-	 * 
-	 * @param value
-	 *            java.lang.String
-	 */
-	protected void addDestinationItem(String value) {
-		destinationNameField.add(value);
-	}
-
-	/**
-	 * (non-Javadoc) Method declared on IDialogPage.
-	 */
-	public void createControl(Composite parent) {
-		initializeDialogUnits(parent);
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayout(new GridLayout());
-		composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL
-				| GridData.HORIZONTAL_ALIGN_FILL));
-		
-
-		createTransferArea(composite);
-
-		restoreWidgetValues();
-		// updateWidgetEnablements();
-
-		// can not finish initially, but don't want to start with an error
-		// message either
-		if (!(validDestination() && validateOptionsGroup() && validateSourceGroup())) {
-			setPageComplete(false);
-		}
-
-		setPreferenceTransfers();
-		setControl(composite);
-
-		giveFocusToDestination();
-		Dialog.applyDialogFont(composite);
-	}
-
-	/**
-	 * @param composite
-	 */
-	protected abstract void createTransferArea(Composite composite);
-
-	/**
-	 * Validate the destination group.
-	 * @return <code>true</code> if the group is valid. If
-	 * not set the error message and return <code>false</code>.
-	 */
-	protected boolean validateDestinationGroup() {
-		if (!validDestination()) {
-			currentMessage = getInvalidDestinationMessage();
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * Return the message that indicates an invalid destination.
-	 * @return String
-	 */
-	abstract protected String getInvalidDestinationMessage();
-
-	private String getNoOptionsMessage() {
-		return PreferencesMessages.WizardPreferencesPage_noOptionsSelected;
-	}
-	
-	protected boolean validDestination() {
-		File file = new File(getDestinationValue());
-		return !(file.getPath().length() <= 0 || file.isDirectory());
-	}
-
-	/**
-	 * 
-	 */
-	protected void setPreferenceTransfers() {
-		PreferenceTransferElement[] transfers = getTransfers();
-		transfersTable.removeAll();
-		for (int i = 0; i < transfers.length; i++) {
-			PreferenceTransferElement element = transfers[i];
-			createItem(element, transfersTable);
-		}
-	}
-
-	/*
-	 * return the PreferenceTransgerElements specified
-	 */
-	protected PreferenceTransferElement[] getTransfers() {
-		if (transfers == null) {
-			transfers = PreferenceTransferManager.getPreferenceTransfers();
-		}
-		return transfers;
-	}
-
-	/**
-	 * @param element
-	 * @param table
-	 */
-	private void createItem(PreferenceTransferElement element, Table table) {
-		TableItem item = new TableItem(table, SWT.CHECK);
-		item.setText(element.getName());
-		item.setData(element);
-		ImageDescriptor descriptor = element.getImageDescriptor();
-		Image image = null;
-		if (descriptor != null) {
-			Hashtable images = getImageTable();
-			image = (Image) images.get(descriptor);
-			if (image == null) {
-				image = descriptor.createImage();
-				images.put(descriptor, image);
-			}
-			item.setImage(image);
-		}
-
-	}
-
-	/**
-	 * @return <code>Hashtable</code> the table of images
-	 */
-	private Hashtable getImageTable() {
-		if (imageTable == null) {
-			imageTable = new Hashtable(10);
-		}
-		return imageTable;
-	}
-
-	/**
-	 * @param composite
-	 */
-	protected void createTransfersList(Composite composite) {
-
-		allButton = new Button(composite, SWT.RADIO);
-		allButton.setText(getAllButtonText());
-		
-		chooseImportsButton = new Button(composite, SWT.RADIO);
-		chooseImportsButton.setText(getChooseButtonText());
-		
-		group = new Group(composite, SWT.NONE);
-		group.setText(PreferencesMessages.WizardPreferencesExportPage1_preferences);
-		GridData data = new GridData(GridData.FILL_BOTH);
-		data.horizontalSpan = 2;
-		group.setLayoutData(data);
-
-		GridLayout layout = new GridLayout();
-		group.setLayout(layout);
-		
-		transfersTable = new Table(group, SWT.CHECK | SWT.BORDER);
-		transfersTable.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		Label description = new Label(group, SWT.NONE);
-		description.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		description.setText(PreferencesMessages.WizardPreferences_description);
-		
-		text = new Text(group, SWT.V_SCROLL | SWT.READ_ONLY
-				| SWT.BORDER | SWT.WRAP);
-		text.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		SelectionListener selection = new SelectionListener() {
-
-			public void widgetSelected(SelectionEvent e) {
-				// Selecting an item in the list forces 
-				// the radio buttons to get selected 
-				if (e.widget == transfersTable) {
-					updateState(e);
-					updateDescription();
-				}
-				updatePageCompletion();
-			}
-
-			private void updateState(SelectionEvent e) {
-				if (((TableItem)e.item).getChecked()) {
-					allButton.setSelection(false);
-					chooseImportsButton.setSelection(true);
-				}
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				widgetSelected(e);
-			}
-
-			private void updateDescription() {
-				if (transfersTable.getSelectionCount() > 0) {
-					TableItem item = transfersTable.getSelection()[0];
-					text.setText(((PreferenceTransferElement) item.getData())
-							.getDescription());
-				} else {
-					text.setText(""); //$NON-NLS-1$
-				}
-			}
-		};
-
-		transfersTable.addSelectionListener(selection);
-		chooseImportsButton.addSelectionListener(selection);
-		allButton.addSelectionListener(selection);
-		
-		addSelectionButtons(group);
-
-	}
-
-	protected abstract String getChooseButtonText();
-
-	protected abstract String getAllButtonText();
-
-	/**
-	 * Add the selection and deselection buttons to the composite.
-	 * 
-	 * @param composite
-	 *            org.eclipse.swt.widgets.Composite
-	 */
-	private void addSelectionButtons(Composite composite) {
-		Font parentFont = composite.getFont();
-		buttonComposite = new Composite(composite, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		buttonComposite.setLayout(layout);
-		GridData data = new GridData(GridData.GRAB_HORIZONTAL);
-		data.grabExcessHorizontalSpace = true;
-		buttonComposite.setLayoutData(data);
-		buttonComposite.setFont(parentFont);
-		
-		Button selectButton = createButton(buttonComposite,
-				IDialogConstants.SELECT_ALL_ID,
-				PreferencesMessages.SelectionDialog_selectLabel, false);
-
-		SelectionListener listener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				setAllChecked(true);
-				updatePageCompletion();
-			}
-		};
-		selectButton.addSelectionListener(listener);
-		selectButton.setFont(parentFont);
-		
-		Button deselectButton = createButton(buttonComposite,
-				IDialogConstants.DESELECT_ALL_ID,
-				PreferencesMessages.SelectionDialog_deselectLabel, false);
-
-		listener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				setAllChecked(false);
-				updatePageCompletion();
-			}
-		};
-		deselectButton.addSelectionListener(listener);
-		deselectButton.setFont(parentFont);
-	}
-
-	/**
-	 * @param bool
-	 */
-	protected void setAllChecked(boolean bool) {
-		TableItem[] items = transfersTable.getItems();
-		for (int i = 0; i < items.length; i++) {
-			TableItem item = items[i];
-			item.setChecked(bool);
-		}
-	}
-
-	/**
-	 * Create the export destination specification widgets
-	 * 
-	 * @param parent
-	 *            org.eclipse.swt.widgets.Composite
-	 */
-	protected void createDestinationGroup(Composite parent) {
-		// destination specification group
-		Composite destinationSelectionGroup = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 3;
-		destinationSelectionGroup.setLayout(layout);
-		destinationSelectionGroup.setLayoutData(new GridData(
-				GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-		
-		Label dest = new Label(destinationSelectionGroup, SWT.NONE);
-		dest.setText(getDestinationLabel());
-		
-		// destination name entry field
-		destinationNameField = new Combo(destinationSelectionGroup, SWT.SINGLE
-				| SWT.BORDER);
-		destinationNameField.addListener(SWT.Modify, this);
-		destinationNameField.addListener(SWT.Selection, this);
-		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-				| GridData.GRAB_HORIZONTAL);
-		destinationNameField.setLayoutData(data);
-		
-		// destination browse button
-		destinationBrowseButton = new Button(destinationSelectionGroup,
-				SWT.PUSH);
-		destinationBrowseButton
-				.setText(PreferencesMessages.PreferencesExport_browse);
-		destinationBrowseButton.setLayoutData(new GridData(
-				GridData.HORIZONTAL_ALIGN_FILL));
-		destinationBrowseButton.addListener(SWT.Selection, this);
-		
-		new Label(parent, SWT.NONE); // vertical spacer
-	}
-
-	/**
-	 * Create the export options specification widgets.
-	 * 
-	 * @param parent
-	 *            org.eclipse.swt.widgets.Composite
-	 */
-	protected void createOptionsGroup(Composite parent) {
-		// options group
-	
-		Composite optionsGroup = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		optionsGroup.setLayout(layout);
-		optionsGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
-				| GridData.GRAB_HORIZONTAL));
-	
-		// overwrite... checkbox
-		overwriteExistingFilesCheckbox = new Button(optionsGroup, SWT.CHECK
-				| SWT.LEFT);
-		overwriteExistingFilesCheckbox
-				.setText(PreferencesMessages.ExportFile_overwriteExisting);
-		
-	}
-
-	/**
-	 * Attempts to ensure that the specified directory exists on the local file
-	 * system. Answers a boolean indicating success.
-	 * 
-	 * @return boolean
-	 * @param directory
-	 *            java.io.File
-	 */
-	protected boolean ensureDirectoryExists(File directory) {
-		if (!directory.exists()) {
-			if (!queryYesNoQuestion(PreferencesMessages.PreferencesExport_createTargetDirectory)) {
-				return false;
-			}
-
-			if (!directory.mkdirs()) {
-				MessageDialog
-						.openError(
-								getContainer().getShell(),
-								PreferencesMessages.PreferencesExport_error,
-								PreferencesMessages.PreferencesExport_directoryCreationError);
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Displays a Yes/No question to the user with the specified message and
-	 * returns the user's response.
-	 * 
-	 * @param message
-	 *            the question to ask
-	 * @return <code>true</code> for Yes, and <code>false</code> for No
-	 */
-	protected boolean queryYesNoQuestion(String message) {
-		MessageDialog dialog = new MessageDialog(getContainer().getShell(),
-				PreferencesMessages.Question, (Image) null, message,
-				MessageDialog.NONE, new String[] { IDialogConstants.YES_LABEL,
-						IDialogConstants.NO_LABEL }, 0);
-		// ensure yes is the default
-
-		return dialog.open() == 0;
-	}
-
-	/**
-	 * If the target for export does not exist then attempt to create it. Answer
-	 * a boolean indicating whether the target exists (ie.- if it either
-	 * pre-existed or this method was able to create it)
-	 * 
-	 * @return boolean
-	 */
-	protected boolean ensureTargetIsValid(File file) {
-		if (file.exists()) {
-			if (!getOverwriteExisting()) {
-				String msg = NLS
-						.bind(
-								PreferencesMessages.WizardPreferencesExportPage1_overwrite,
-								file.getAbsolutePath());
-				if (!queryYesNoQuestion(msg)) {
-					return false;
-				}
-			}
-			file.delete();
-		} else if (!file.isDirectory()) {
-			File parent = file.getParentFile();
-			if (parent != null) {
-				file.getParentFile().mkdirs();
-			}
-		}
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.dialogs.WizardDataTransferPage#saveWidgetValues()
-	 */
-	protected void saveWidgetValues() {
-		// allow subclasses to save values
-		internalSaveWidgetValues();
-	}
-
-	/**
-	 * 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() {
-		// about to invoke the operation so save our state
-		saveWidgetValues();
-
-		IPreferenceFilter[] transfers = null;
-
-		if (getTransferAll()) {
-			// export all
-			transfers = new IPreferenceFilter[1];
-
-			// For export all create a preference filter that can export
-			// all nodes of the Instance and Configuration scopes
-			transfers[0] = new IPreferenceFilter() {
-
-				public String[] getScopes() {
-					return new String[] { InstanceScope.SCOPE,
-							ConfigurationScope.SCOPE };
-				}
-
-				public Map getMapping(String scope) {
-					return null;
-				}
-			};
-		} else {
-			transfers = getFilters();
-		}
-
-		boolean success = transfer(transfers);
-		// if it was a successful tranfer then store the name of the file to use
-		// it on the next export
-		if (success) {
-			saveWidgetValues();
-		}
-		return success;
-	}
-
-	/**
-	 * @return the preference transfer filters
-	 */
-	protected IPreferenceFilter[] getFilters() {
-		IPreferenceFilter[] filters = null;
-		PreferenceTransferElement[] transferElements;
-		transferElements = getPreferenceTransferElements();
-		if (transferElements != null) {
-			filters = new IPreferenceFilter[transferElements.length];
-			for (int j = 0; j < transferElements.length; j++) {
-				PreferenceTransferElement element = transferElements[j];
-				try {
-					filters[j] = element.getFilter();
-				} catch (CoreException e) {
-					WorkbenchPlugin.log(e.getMessage(), e);
-				}
-			}
-		} else {
-			filters = new IPreferenceFilter[0];
-		}
-
-		return filters;
-	}
-
-	/**
-	 * @return the list of transfer elements
-	 */
-	protected PreferenceTransferElement[] getPreferenceTransferElements() {
-		PreferenceTransferElement[] transferElements;
-		// export selected transfer types
-		TableItem[] items = transfersTable.getItems();
-		List transferList = new ArrayList();
-		for (int i = 0; i < items.length; i++) {
-			TableItem item = items[i];
-			if (item.getChecked()) {
-				transferList.add(item.getData());
-			}
-		}
-		transferElements = new PreferenceTransferElement[transferList.size()];
-		int i = 0;
-		for (Iterator iter = transferList.iterator(); iter.hasNext();) {
-			transferElements[i] = (PreferenceTransferElement) iter.next();
-			i++;
-		}
-		return transferElements;
-	}
-
-	/**
-	 * @param transfers
-	 * @return boolean
-	 */
-	protected abstract boolean transfer(IPreferenceFilter[] transfers);
-
-	/**
-	 * Check whether the internal state of the page is complete and update the
-	 * dialog
-	 */
-	public void setPageComplete() {
-		boolean complete = true;
-
-		if (!determinePageCompletion()) {
-			complete = false;
-		}
-
-		super.setPageComplete(complete);
-	}
-
-	/**
-	 * Returns whether this page is complete. This determination is made based
-	 * upon the current contents of this page's controls. Subclasses wishing to
-	 * include their controls in this determination should override the hook
-	 * methods <code>validateSourceGroup</code> and/or
-	 * <code>validateOptionsGroup</code>.
-	 * 
-	 * @return <code>true</code> if this page is complete, and
-	 *         <code>false</code> if incomplete
-	 * @see #validateSourceGroup
-	 * @see #validateOptionsGroup
-	 */
-	protected boolean determinePageCompletion() {
-		
-		// validate groups in order of priority so error message is the most important one
-		boolean complete = validateSourceGroup() && validateDestinationGroup()
-				&& validateOptionsGroup();
-
-		// Avoid draw flicker by not clearing the error
-		// message unless all is valid.
-		if (complete) {
-			setErrorMessage(null);
-		} else {
-			setErrorMessage(currentMessage);
-		}
-
-		return complete;
-	}
-
-	/**
-	 * Returns whether this page's options group's controls currently all
-	 * contain valid values.
-	 * <p>
-	 * The <code>WizardPreferencesPage</code> implementation of this method
-	 * returns <code>true</code> if the button to transfer all preferences is 
-	 * selected OR at least one of the individual items are checked. Subclasses 
-	 * may reimplement this method.
-	 * </p>
-	 * 
-	 * @return <code>true</code> indicating validity of all controls in the
-	 *         options group
-	 */
-	protected boolean validateOptionsGroup() {
-		if (chooseImportsButton.getSelection()) {
-			TableItem[] items = transfersTable.getItems();
-			for (int i = 0; i < items.length; i++) {
-				TableItem item = items[i];
-				if (item.getChecked()) {
-					return true;
-				}
-			}
-			currentMessage = getNoOptionsMessage();
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Returns whether this page's source specification controls currently all
-	 * contain valid values.
-	 * <p>
-	 * The <code>WizardDataTransferPage</code> implementation of this method
-	 * returns <code>true</code>. Subclasses may reimplement this hook
-	 * method.
-	 * </p>
-	 * 
-	 * @return <code>true</code> indicating validity of all controls in the
-	 *         source specification group
-	 */
-	protected boolean validateSourceGroup() {
-		return true;
-	}
-
-	/**
-	 * Answer the string to display in self as the destination type
-	 * 
-	 * @return java.lang.String
-	 */
-	protected abstract String getDestinationLabel();
-
-	/**
-	 * Answer the contents of self's destination specification widget
-	 * 
-	 * @return java.lang.String
-	 */
-	protected String getDestinationValue() {
-		return destinationNameField.getText().trim();
-	}
-
-	/**
-	 * Set the current input focus to self's destination entry field
-	 */
-	protected void giveFocusToDestination() {
-		destinationNameField.setFocus();
-	}
-
-	/**
-	 * Open an appropriate destination browser so that the user can specify a
-	 * source to import from
-	 */
-	protected void handleDestinationBrowseButtonPressed() {
-		FileDialog dialog = new FileDialog(getContainer().getShell(),
-				getFileDialogStyle());
-		dialog.setText(getFileDialogTitle());
-		dialog.setFilterPath(getDestinationValue());
-		dialog.setFilterExtensions(new String[] { "*.epf" ,"*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
-		String selectedFileName = dialog.open();
-
-		if (selectedFileName != null) {
-			setDestinationValue(selectedFileName);
-		}
-	}
-
-	protected abstract String getFileDialogTitle();
-
-	protected abstract int getFileDialogStyle();
-
-	/**
-	 * Handle all events and enablements for widgets in this page
-	 * 
-	 * @param e
-	 *            Event
-	 */
-	public void handleEvent(Event e) {
-		Widget source = e.widget;
-
-		if (source == destinationBrowseButton) {
-			handleDestinationBrowseButtonPressed();
-		}
-
-		updatePageCompletion();
-	}
-
-	/**
-	 * Determine if the page is complete and update the page appropriately.
-	 */
-	protected void updatePageCompletion() {
-		boolean pageComplete = determinePageCompletion();
-		setPageComplete(pageComplete);
-		if (pageComplete) {
-			setMessage(null);
-		}
-	}
-
-	/**
-	 * Hook method for saving widget values for restoration by the next instance
-	 * of this class.
-	 */
-	protected void internalSaveWidgetValues() {
-		// update directory names history
-		IDialogSettings settings = getDialogSettings();
-		if (settings != null) {
-			String[] directoryNames = settings
-					.getArray(STORE_DESTINATION_NAMES_ID);
-			if (directoryNames == null) {
-				directoryNames = new String[0];
-			}
-
-			directoryNames = addToHistory(directoryNames, getDestinationValue());
-			settings.put(STORE_DESTINATION_NAMES_ID, directoryNames);
-			String current = getDestinationValue();
-			if (current != null && !current.equals("")) { //$NON-NLS-1$
-				settings.put(STORE_DESTINATION_ID, current);
-			}
-			// options
-			if (overwriteExistingFilesCheckbox != null) {
-				settings.put(STORE_OVERWRITE_EXISTING_FILES_ID,
-						overwriteExistingFilesCheckbox.getSelection());
-			}
-			settings.put(TRANSFER_ALL_PREFERENCES_ID, allButton.getSelection());
-
-		}
-	}
-
-	  /**
-     * 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>WizardDataTransferPage.COMBO_HISTORY_LENGTH</code>.
-     *
-     * @param history the current history
-     * @param newEntry the entry to add to the history
-     */
-    protected String[] addToHistory(String[] history, String newEntry) {
-        java.util.ArrayList l = new java.util.ArrayList(Arrays.asList(history));
-        addToHistory(l, newEntry);
-        String[] r = new String[l.size()];
-        l.toArray(r);
-        return r;
-    }
-
-    /**
-     * 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>WizardDataTransferPage.COMBO_HISTORY_LENGTH</code>.
-     *
-     * @param history the current history
-     * @param newEntry the entry to add to the history
-     */
-    protected 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);
-		}
-    }
-
-	/**
-	 * Hook method for restoring widget values to the values that they held last
-	 * time this wizard was used to completion.
-	 */
-	protected void restoreWidgetValues() {
-		IDialogSettings settings = getDialogSettings();
-		boolean all = true;
-		if (settings != null) {
-			String[] directoryNames = settings
-					.getArray(STORE_DESTINATION_NAMES_ID);
-			if (directoryNames != null) {
-				// destination
-				setDestinationValue(directoryNames[0]);
-				for (int i = 0; i < directoryNames.length; i++) {
-					addDestinationItem(directoryNames[i]);
-				}
-
-				String current = settings.get(STORE_DESTINATION_ID);
-				if (current != null) {
-					setDestinationValue(current);
-				}
-				// options
-				if (overwriteExistingFilesCheckbox != null) {
-					overwriteExistingFilesCheckbox.setSelection(settings
-							.getBoolean(STORE_OVERWRITE_EXISTING_FILES_ID));
-				}
-				all = settings.getBoolean(TRANSFER_ALL_PREFERENCES_ID);
-			}
-		}
-		if (all) {
-			allButton.setSelection(true);
-		} else {
-			chooseImportsButton.setSelection(true);
-		}
-
-	}
-
-	private boolean getOverwriteExisting() {
-		return overwriteExistingFilesCheckbox.getSelection();
-	}
-
-	private boolean getTransferAll() {
-		return allButton.getSelection();
-	}
-
-	/**
-	 * Set the contents of self's destination specification widget to the passed
-	 * value
-	 * 
-	 * @param value
-	 *            java.lang.String
-	 */
-	protected void setDestinationValue(String value) {
-		destinationNameField.setText(value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.DialogPage#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		if (imageTable == null) {
-			return;
-		}
-
-		for (Iterator i = imageTable.values().iterator(); i.hasNext();) {
-			((Image) i.next()).dispose();
-		}
-		imageTable = null;
-		transfers = null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.dialogs.WizardDataTransferPage#allowNewContainerName()
-	 */
-	protected boolean allowNewContainerName() {
-		return true;
-	}
-
-	/**
-	 * The <code>WizardDataTransfer</code> implementation of this
-	 * <code>IOverwriteQuery</code> method asks the user whether the existing
-	 * resource at the given path should be overwritten.
-	 * 
-	 * @param pathString
-	 * @return the user's reply: one of <code>"YES"</code>, <code>"NO"</code>,
-	 *         <code>"ALL"</code>, or <code>"CANCEL"</code>
-	 */
-	public String queryOverwrite(String pathString) {
-
-		Path path = new Path(pathString);
-
-		String messageString;
-		// Break the message up if there is a file name and a directory
-		// and there are at least 2 segments.
-		if (path.getFileExtension() == null || path.segmentCount() < 2) {
-			messageString = NLS.bind(
-					PreferencesMessages.WizardDataTransfer_existsQuestion,
-					pathString);
-		} else {
-			messageString = NLS
-					.bind(
-							PreferencesMessages.WizardDataTransfer_overwriteNameAndPathQuestion,
-							path.lastSegment(), path.removeLastSegments(1)
-									.toOSString());
-		}
-
-		final MessageDialog dialog = new MessageDialog(getContainer()
-				.getShell(), PreferencesMessages.Question, null, messageString,
-				MessageDialog.QUESTION, new String[] {
-						IDialogConstants.YES_LABEL,
-						IDialogConstants.YES_TO_ALL_LABEL,
-						IDialogConstants.NO_LABEL,
-						IDialogConstants.NO_TO_ALL_LABEL,
-						IDialogConstants.CANCEL_LABEL }, 0);
-		String[] response = new String[] { YES, ALL, NO, NO_ALL, CANCEL };
-		// run in syncExec because callback is from an operation,
-		// which is probably not running in the UI thread.
-		getControl().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				dialog.open();
-			}
-		});
-		return dialog.getReturnCode() < 0 ? CANCEL : response[dialog
-				.getReturnCode()];
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/messages.properties
deleted file mode 100644
index af7ed93..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/wizards/preferences/messages.properties
+++ /dev/null
@@ -1,50 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-WizardPreferences_description=Descrip&tion:
-WizardPreferencesPage_noOptionsSelected=No specific preferences are selected.
-WizardPreferences_noSpecificPreferenceDescription=Empty list.\nNote: Not all preferences support individual import.
-PreferencesExportWizard_export=Export Preferences
-WizardPreferencesExportPage1_exportTitle=Export Preferences
-WizardPreferencesExportPage1_exportDescription=Export preferences to the local file system.
-
-WizardPreferencesExportPage1_preferences=Preferences
-WizardPreferencesExportPage1_noPrefFile=Preference file not set, or is not a normal file.
-WizardPreferencesExportPage1_overwrite=The file {0} already exists, do you want to overwrite it?
-WizardPreferencesExportPage1_title=Export to File
-WizardPreferencesExportPage1_all=Export &all
-WizardPreferencesExportPage1_choose=&Choose specific preferences to export
-WizardPreferencesExportPage1_file=To &preference file:
-
-PreferencesImportWizard_import=Import Preferences
-WizardPreferencesImportPage1_importTitle=Import Preferences
-WizardPreferencesImportPage1_importDescription=Import preferences from the local file system.
-WizardPreferencesImportPage1_all=Import &all
-WizardPreferencesImportPage1_choose=C&hoose specific preferences to import
-WizardPreferencesImportPage1_file=From &preference file:
-WizardPreferencesImportPage1_title=Import from File
-WizardPreferencesImportPage1_invalidPrefFile=Preference file does not exist or is a directory.
-
-PreferencesExport_error=Error
-PreferencesExport_browse=B&rowse...
-PreferencesExport_createTargetDirectory=Target directory does not exist.  Would you like to create it?
-PreferencesExport_directoryCreationError=Target directory could not be created.
-
-ExportFile_overwriteExisting=&Overwrite existing files without warning
-
-SelectionDialog_selectLabel = &Select All
-SelectionDialog_deselectLabel = &Deselect All
-
-WizardDataTransfer_existsQuestion = ''{0}'' already exists.  Would you like to overwrite it?
-WizardDataTransfer_overwriteNameAndPathQuestion = Overwrite ''{0}'' in folder ''{1}''?
-
-Question = Question
-
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroManager.java
deleted file mode 100644
index 49c06bf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroManager.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.intro;
-
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Manages the intro part that introduces the product to new users.
- * The intro part is typically shown the first time a product is started up.
- * <p>
- * The initial behavior of the intro part is controlled by the application
- * from via the {@link org.eclipse.ui.application.WorkbenchWindowAdvisor#openIntro()}
- * method.
- * </p>
- * <p>
- * See {@link org.eclipse.ui.intro.IIntroPart} for details on where intro parts
- * come from.
- * </p>
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.IWorkbench#getIntroManager()
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IIntroManager {
-
-    /**
-     * Closes the given intro part.
-     * 
-     * @param part the intro part
-     * @return <code>true</code> if the intro part was closed, and 
-     * <code>false</code> otherwise.  <code>false</code> is returned 
-     * if part is <code>null</code> or it is not the intro part returned
-     * by {@link #getIntro()}.
-     */
-    public boolean closeIntro(IIntroPart part);
-
-    /**
-     * Returns the intro part. Returns <code>null</code> if there is no intro
-     * part, if it has been previously closed via {@link #closeIntro(IIntroPart)}
-     * or if there is an intro part but {@link #showIntro(IWorkbenchWindow, boolean)} 
-     * has not yet been called to create it.
-     * 
-     * @return the intro part, or <code>null</code> if none is available
-     */
-    public IIntroPart getIntro();
-
-    /**
-     * Return whether an intro is available. Note that this checks whether
-     * there is an applicable intro part that could be instantiated and shown
-     * to the user. 
-     * Use {@link #getIntro()} to discover whether an intro part has already
-     * been created.
-     * 
-     * @return <code>true</code> if there is an intro that could be shown, and
-     * <code>false</code> if there is no intro
-     */
-    public boolean hasIntro();
-
-    /**
-     * Return the standby state of the given intro part.
-     * 
-     * @param part the intro part
-     * @return <code>true</code> if the part in its partially
-     * visible standy mode, and <code>false</code> if in its fully visible state.
-     * <code>false</code> is returned if part is <code>null</code> or it is not 
-     * the intro part returned by {@link #getIntro()}.    
-     */
-    boolean isIntroStandby(IIntroPart part);
-
-    /**
-     * Sets the standby state of the given intro part. Intro part usually should
-     * render themselves differently in the full and standby modes. In standby
-     * mode, the part should be partially visible to the user but otherwise
-     * allow them to work. In full mode, the part should be fully visible and
-     * be the center of the user's attention.
-     * <p>
-     * This method does nothing if the part is <code>null</code> or is not 
-     * the intro part returned by {@link #getIntro()}.
-     * </p>
-     * 
-     * @param part the intro part, or <code>null</code>
-     * @param standby <code>true</code> to put the part in its partially
-     * visible standy mode, and <code>false</code> to make it fully visible.  
-     */
-    public void setIntroStandby(IIntroPart part, boolean standby);
-
-    /**
-     * Shows the intro part in the given workbench window. If the intro part has
-     * not been created yet, one will be created. If the intro part is currently
-     * being shown in some workbench window, that other window is made active.
-     * 
-     * @param preferredWindow the preferred workbench window, or 
-     * <code>null</code> to indicate the currently active workbench window
-     * @param standby <code>true</code> to put the intro part in its partially
-     * visible standy mode, and <code>false</code> to make it fully visible
-     * @return the newly-created or existing intro part, or <code>null</code>
-     * if no intro part is available or if <code>preferredWindow</code> is
-     * <code>null</code> and there is no currently active workbench window
-     */
-    public IIntroPart showIntro(IWorkbenchWindow preferredWindow,
-            boolean standby);
-    
-    /**
-	 * Returns <code>true</code> if there is an intro content detector and it
-	 * reports that new intro content is available.
-	 * 
-	 * @return <code>true</code> if new intro content is available
-	 * 
-	 * @since 3.3
-	 */
-    public boolean isNewContentAvailable();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroPart.java
deleted file mode 100644
index 89e87b6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroPart.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.intro;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-
-/**
- * The intro part is a visual component within the workbench responsible for
- * introducing the product to new users. The intro part is typically shown the
- * first time a product is started up.
- * <p>
- * The intro part implementation is contributed to the workbench via the
- * <code>org.eclipse.ui.intro</code> extension point.  There can be several
- * intro part implementations, and associations between intro part
- * implementations and products. The workbench will only make use of the intro
- * part implementation for the current product (as given by
- * {@link org.eclipse.core.runtime.Platform#getProduct()}. There is at most one
- * intro part instance in the entire workbench, and it resides in exactly one
- * workbench window at a time.
- * </p>
- * <p>
- * This interface in not intended to be directly implemented. Rather, clients
- * providing a intro part implementation should subclass 
- * {@link org.eclipse.ui.part.IntroPart}. 
- * </p>
- * 
- * @see org.eclipse.ui.intro.IIntroManager#showIntro(org.eclipse.ui.IWorkbenchWindow, boolean)
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IIntroPart extends IAdaptable {
-
-    /**
-	 * The property id for <code>getTitleImage</code> and
-	 * <code>getTitle</code>.
-	 * 
-	 * @since 3.2 this property now covers changes to <code>getTitle</code> in
-	 *        addition to <code>getTitleImage</code>
-	 */
-	public static final int PROP_TITLE = IWorkbenchPart.PROP_TITLE;
-
-    /**
-	 * Returns the site for this intro part.
-	 * 
-	 * @return the intro site
-	 */
-    IIntroSite getIntroSite();
-
-    /**
-     * Initializes this intro part with the given intro site. A memento is
-     * passed to the part which contains a snapshot of the part state from a
-     * previous session. Where possible, the part should try to recreate that
-     * state.
-     * <p>
-     * This method is automatically called by the workbench shortly after
-     * part construction.  It marks the start of the intro's lifecycle. Clients
-     * must not call this method.
-     * </p>
-     *
-     * @param site the intro site
-     * @param memento the intro part state or <code>null</code> if there is no previous
-     * saved state
-     * @exception PartInitException if this part was not initialized
-     * successfully
-     */
-    public void init(IIntroSite site, IMemento memento)
-            throws PartInitException;
-
-    /**
-     * Sets the standby state of this intro part. An intro part should render
-     * itself differently in the full and standby modes. In standby mode, the
-     * part should be partially visible to the user but otherwise allow them
-     * to work. In full mode, the part should be fully visible and be the center
-     * of the user's attention. 
-     * <p>
-     * This method is automatically called by the workbench at appropriate
-     * times. Clients must not call this method directly (call
-     * {@link IIntroManager#setIntroStandby(IIntroPart, boolean)} instead.
-     * </p>
-     * 
-     * @param standby <code>true</code> to put this part in its partially
-     * visible standy mode, and <code>false</code> to make it fully visible
-     */
-    public void standbyStateChanged(boolean standby);
-
-    /**
-     * Saves the object state within a memento.
-     * <p>
-     * This method is automatically called by the workbench at appropriate
-     * times. Clients must not call this method directly.
-     * </p>
-     *
-     * @param memento a memento to receive the object state
-     */
-    public void saveState(IMemento memento);
-
-    /**
-     * Adds a listener for changes to properties of this intro part.
-     * Has no effect if an identical listener is already registered.
-     * <p>
-     * The properties ids are as follows:
-     * <ul>
-     *   <li><code>IIntroPart.PROP_TITLE</code> </li>
-     * </ul>
-     * </p>
-     *
-     * @param listener a property listener
-     */
-    public void addPropertyListener(IPropertyListener listener);
-
-    /**
-     * Creates the SWT controls for this intro part.
-     * <p>
-     * Clients should not call this method (the workbench calls this method when
-     * it needs to, which may be never).
-     * </p>
-     * <p>
-     * For implementors this is a multi-step process:
-     * <ol>
-     *   <li>Create one or more controls within the parent.</li>
-     *   <li>Set the parent layout as needed.</li>
-     *   <li>Register any global actions with the <code>IActionService</code>.</li>
-     *   <li>Register any popup menus with the <code>IActionService</code>.</li>
-     *   <li>Register a selection provider with the <code>ISelectionService</code>
-     *     (optional). </li>
-     * </ol>
-     * </p>
-     *
-     * @param parent the parent control
-     */
-    public void createPartControl(Composite parent);
-
-    /**
-     * Disposes of this intro part.
-     * <p>
-     * This is the last method called on the <code>IIntroPart</code>.  At this
-     * point the part controls (if they were ever created) have been disposed as part 
-     * of an SWT composite.  There is no guarantee that createPartControl() has been 
-     * called, so the part controls may never have been created.
-     * </p>
-     * <p>
-     * Within this method a part may release any resources, fonts, images, etc.&nbsp; 
-     * held by this part.  It is also very important to deregister all listeners
-     * from the workbench.
-     * </p>
-     * <p>
-     * Clients should not call this method (the workbench calls this method at
-     * appropriate times).
-     * </p>
-     */
-    public void dispose();
-
-    /**
-     * Returns the title image of this intro part.  If this value changes 
-     * the part must fire a property listener event with 
-     * {@link IIntroPart#PROP_TITLE}.
-     * <p>
-     * The title image is usually used to populate the title bar of this part's
-     * visual container. Since this image is managed by the part itself, callers
-     * must <b>not</b> dispose the returned image.
-     * </p>
-     *
-     * @return the title image
-     */
-    public Image getTitleImage();
-    
-    /**
-     * Returns the title of this intro part. If this value changes 
-     * the part must fire a property listener event with 
-     * {@link IIntroPart#PROP_TITLE}.
-     * <p>
-     * The title is used to populate the title bar of this part's visual
-     * container.  
-     * </p>
-     *
-     * @return the intro part title (not <code>null</code>)
-     * @since 3.2
-     */
-    public String getTitle();
-
-    /**
-     * Removes the given property listener from this intro part.
-     * Has no affect if an identical listener is not registered.
-     *
-     * @param listener a property listener
-     */
-    public void removePropertyListener(IPropertyListener listener);
-
-    /**
-     * Asks this part to take focus within the workbench.
-     * <p>
-     * Clients should not call this method (the workbench calls this method at
-     * appropriate times).  To have the workbench activate a part, use
-     * {@link IIntroManager#showIntro(IWorkbenchWindow, boolean)}.
-     * </p>
-     */
-    public void setFocus();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroSite.java
deleted file mode 100644
index a74a461..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IIntroSite.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.intro;
-
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.IWorkbenchSite;
-
-/** 
- * The primary interface between an intro part and the workbench.
- * <p>
- * The workbench exposes its implemention of intro part sites via this 
- * interface, which is not intended to be implemented or extended by clients.
- * </p>
- *  
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IIntroSite extends IWorkbenchSite {
-
-    /**
-     * Returns the part registry extension id for this intro site's part.
-     * <p>
-     * The name comes from the <code>id</code> attribute in the configuration
-     * element.
-     * </p>
-     *
-     * @return the registry extension id
-     */
-    public String getId();
-
-    /**
-     * Returns the unique identifier of the plug-in that defines this intro
-     * site's part.
-     *
-     * @return the unique identifier of the declaring plug-in
-     * @see org.eclipse.core.runtime.IPluginDescriptor#getUniqueIdentifier()
-     */
-    public String getPluginId();
-
-    /**
-     * Returns the key binding service in use.
-     * <p>
-     * The part will access this service to register
-     * all of its actions, to set the active scope.
-     * </p>
-     * 
-     * @return the key binding service in use
-     * @deprecated Use IServiceLocator#getService(*) to retrieve
-     * IContextService and IHandlerService instead.
-     */
-    public IKeyBindingService getKeyBindingService();
-
-    /**
-     * Returns the action bars for this part site.
-     * The intro part has exclusive use of its site's action bars.
-     * 
-     * @return the action bars
-     */
-    public IActionBars getActionBars();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IntroContentDetector.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IntroContentDetector.java
deleted file mode 100644
index fb8dfaa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/IntroContentDetector.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.intro;
-
-/**
- * An intro content detector is used when starting the Workbench to determine if
- * new intro content is available. Since calling this method is part of the
- * Workbench start sequence, subclasses should be implemented with care as not
- * to introduce noticeable delay at startup. If an intro content detector
- * reports new available content, the view part showing the content will be
- * opened again even if the user had closed it in a previous session. Because of
- * this, the intro view part should draw the user's attention to the new content
- * to avoid confusion about why the intro view part was opened again without the
- * user requesting it.
- * 
- * @since 3.3
- * 
- */
-public abstract class IntroContentDetector {
-
-	/**
-	 * Returns <code>true</code> if new intro content is available.
-	 * 
-	 * @return <code>true</code> if new intro content is available
-	 */
-	public abstract boolean isNewContentAvailable();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/package.html
deleted file mode 100644
index 01819cd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/intro/package.html
+++ /dev/null
@@ -1,16 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>Package Specification</h2>
-This package provides application programming interfaces for dealing with
-intro parts.  An intro part is a visual component within the workbench 
-responsible for introducing the product to new users. The intro part is 
-typically shown the first time a product is started up.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/CharacterKey.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/CharacterKey.java
deleted file mode 100644
index 2f7354b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/CharacterKey.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-
-/**
- * <p>
- * Instances of <code>CharacterKey</code> represent keys on the keyboard which
- * represent unicode characters.
- * </p>
- * <p>
- * <code>CharacterKey</code> objects are immutable. Clients are not permitted
- * to extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyStroke and
- *             org.eclipse.jface.bindings.keys.KeyLookupFactory
- * @since 3.0
- */
-public final class CharacterKey extends NaturalKey {
-
-	/**
-	 * An internal map used to lookup instances of <code>CharacterKey</code>
-	 * given the formal string representation of a character key.
-	 */
-	static SortedMap characterKeysByName = new TreeMap();
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the backspace key (U+0008).
-	 */
-	public final static CharacterKey BS;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the carriage return (U+000D) key
-	 */
-	public final static CharacterKey CR;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the delete (U+007F) key.
-	 */
-	public final static CharacterKey DEL;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the escape (U+001B) key.
-	 */
-	public final static CharacterKey ESC;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the form feed (U+000C) key.
-	 */
-	public final static CharacterKey FF;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the line feed (U+000A) key.
-	 */
-	public final static CharacterKey LF;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the null (U+0000) key.
-	 */
-	public final static CharacterKey NUL;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the space (U+0020) key.
-	 */
-	public final static CharacterKey SPACE;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the tab (U+0009) key.
-	 */
-	public final static CharacterKey TAB;
-
-	/**
-	 * The single static instance of <code>CharacterKey</code> which
-	 * represents the vertical tab (U+000B) key.
-	 */
-	public final static CharacterKey VT;
-
-	/**
-	 * Creates an instance of <code>CharacterKey</code> given a unicode
-	 * character. This method determines the correct name for the key based on
-	 * character. Typically, this name is a string of one-character in length
-	 * equal to the character that this instance represents.
-	 * 
-	 * @param character
-	 *            the character that the resultant <code>CharacterKey</code>
-	 *            instance is to represent.
-	 * @return an instance of <code>CharacterKey</code> representing the
-	 *         character.
-	 */
-	public static final CharacterKey getInstance(final char character) {
-		return new CharacterKey(character);
-	}
-
-	static {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		BS = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.BS_NAME));
-		CR = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.CR_NAME));
-		DEL = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.DEL_NAME));
-		ESC = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.ESC_NAME));
-		FF = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.FF_NAME));
-		LF = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.LF_NAME));
-		NUL = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.NUL_NAME));
-		SPACE = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.SPACE_NAME));
-		TAB = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.TAB_NAME));
-		VT = new CharacterKey(lookup.formalKeyLookup(IKeyLookup.VT_NAME));
-
-		characterKeysByName.put(IKeyLookup.BS_NAME, CharacterKey.BS);
-		characterKeysByName.put(IKeyLookup.BACKSPACE_NAME, CharacterKey.BS);
-		characterKeysByName.put(IKeyLookup.CR_NAME, CharacterKey.CR);
-		characterKeysByName.put(IKeyLookup.ENTER_NAME, CharacterKey.CR);
-		characterKeysByName.put(IKeyLookup.RETURN_NAME, CharacterKey.CR);
-		characterKeysByName.put(IKeyLookup.DEL_NAME, CharacterKey.DEL);
-		characterKeysByName.put(IKeyLookup.DELETE_NAME, CharacterKey.DEL);
-		characterKeysByName.put(IKeyLookup.ESC_NAME, CharacterKey.ESC);
-		characterKeysByName.put(IKeyLookup.ESCAPE_NAME, CharacterKey.ESC);
-		characterKeysByName.put(IKeyLookup.FF_NAME, CharacterKey.FF);
-		characterKeysByName.put(IKeyLookup.LF_NAME, CharacterKey.LF);
-		characterKeysByName.put(IKeyLookup.NUL_NAME, CharacterKey.NUL);
-		characterKeysByName.put(IKeyLookup.SPACE_NAME, CharacterKey.SPACE);
-		characterKeysByName.put(IKeyLookup.TAB_NAME, CharacterKey.TAB);
-		characterKeysByName.put(IKeyLookup.VT_NAME, CharacterKey.VT);
-	}
-
-	/**
-	 * Constructs an instance of <code>CharacterKey</code> given a unicode
-	 * character and a name.
-	 * 
-	 * @param key
-	 *            The key to be wrapped.
-	 */
-	private CharacterKey(final int key) {
-		super(key);
-	}
-
-	/**
-	 * Gets the character that this object represents.
-	 * 
-	 * @return the character that this object represents.
-	 */
-	public final char getCharacter() {
-		return (char) key;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IBindingService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IBindingService.java
deleted file mode 100644
index 3710131..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IBindingService.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.keys;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.Scheme;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.services.IDisposable;
-
-/**
- * <p>
- * Provides services related to the binding architecture (e.g., keyboard
- * shortcuts) within the workbench. This service can be used to access the
- * currently active bindings, as well as the current state of the binding
- * architecture.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IBindingService service = (IBindingService) getSite().getService(IBindingService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @since 3.1
- */
-public interface IBindingService extends IDisposable {
-
-	/**
-	 * The default default value for the active scheme id. This value can be
-	 * overridden using the "plugin_customization.ini" file. The
-	 * <code>BindingPersistence</code> code needs to know this value so it can
-	 * try to decide if someone overrode the default.
-	 */
-	public static final String DEFAULT_DEFAULT_ACTIVE_SCHEME_ID = "org.eclipse.ui.defaultAcceleratorConfiguration"; //$NON-NLS-1$
-
-	/**
-	 * Gets the active bindings for a given parameterized command.
-	 * 
-	 * @param parameterizedCommand
-	 *            The fully-parameterized command for which the active bindings
-	 *            should be found; must not be <code>null</code>.
-	 * @return The array of all active bindings for the given command. This
-	 *         collection may be empty, but it is never <code>null</code>.
-	 */
-	public TriggerSequence[] getActiveBindingsFor(
-			ParameterizedCommand parameterizedCommand);
-
-	/**
-	 * Gets the active bindings for a given command identifier. It is assumed
-	 * that the command has no parameters.
-	 * 
-	 * @param commandId
-	 *            The id of the command for which the active bindings should be
-	 *            found; must not be <code>null</code>.
-	 * @return The array of all active bindings for the given command. This
-	 *         collection may be empty, but it is never <code>null</code>.
-	 */
-	public TriggerSequence[] getActiveBindingsFor(String commandId);
-
-	/**
-	 * Returns the currently active scheme.
-	 * 
-	 * @return The currently active scheme. This value may (in certain rare
-	 *         circumstances) be <code>null</code>.
-	 */
-	public Scheme getActiveScheme();
-
-	/**
-	 * Gets the best active binding for a command. The best binding is the one
-	 * that would be most appropriate to show in a menu. Bindings which belong
-	 * to a child scheme are given preference over those in a parent scheme.
-	 * Bindings which belong to a particular locale or platform are given
-	 * preference over those that do not. The rest of the calculation is based
-	 * most on various concepts of "length", as well as giving some modifier
-	 * keys preference (e.g., <code>Alt</code> is less likely to appear than
-	 * <code>Ctrl</code>).
-	 * 
-	 * @param command
-	 *            The command for which the best active binding should be
-	 *            retrieved; must not be <code>null</code>.
-	 * @return The trigger sequence for the best binding; may be
-	 *         <code>null</code> if no bindings are active for the given
-	 *         command.
-	 * @since 3.4
-	 */
-	public TriggerSequence getBestActiveBindingFor(ParameterizedCommand command);
-
-	/**
-	 * Gets the best active binding for a command. The best binding is the one
-	 * that would be most appropriate to show in a menu. Bindings which belong
-	 * to a child scheme are given preference over those in a parent scheme.
-	 * Bindings which belong to a particular locale or platform are given
-	 * preference over those that do not. The rest of the calculaton is based
-	 * most on various concepts of "length", as well as giving some modifier
-	 * keys preference (e.g., <code>Alt</code> is less likely to appear than
-	 * <code>Ctrl</code>).
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the best active
-	 *            binding should be retrieved; must not be <code>null</code>.
-	 * @return The trigger sequence for the best binding; may be
-	 *         <code>null</code> if no bindings are active for the given
-	 *         command.
-	 * @since 3.2
-	 * @see #getBestActiveBindingFor(ParameterizedCommand)
-	 */
-	public TriggerSequence getBestActiveBindingFor(String commandId);
-	
-	/**
-	 * Gets the formatted string representing the best active binding for a
-	 * command. The best binding is the one that would be most appropriate to
-	 * show in a menu. Bindings which belong to a child scheme are given
-	 * preference over those in a parent scheme. The rest of the calculaton is
-	 * based most on various concepts of "length", as well as giving some
-	 * modifier keys preference (e.g., <code>Alt</code> is less likely to
-	 * appear than <code>Ctrl</code>).
-	 * 
-	 * @param commandId
-	 *            The identifier of the command for which the best active
-	 *            binding should be retrieved; must not be <code>null</code>.
-	 * @return The formatted string for the best binding; may be
-	 *         <code>null</code> if no bindings are active for the given
-	 *         command.
-	 * @since 3.2
-	 * @see #getBestActiveBindingFor(ParameterizedCommand)
-	 */
-	public String getBestActiveBindingFormattedFor(String commandId);
-
-	/**
-	 * Returns the current set of bindings.
-	 * 
-	 * @return The current array of bindings (<code>Binding</code>).
-	 */
-	public Binding[] getBindings();
-
-	/**
-	 * Returns the current state of the key binding buffer. This will contain
-	 * all of the keys currently awaiting processing. If the system is currently
-	 * executing a command (as a result of a key press), then this will contain
-	 * the trigger sequence used to execute the command. If the key binding
-	 * architecture has seen part of multi-key binding, then this will contain
-	 * the part that it has seen. Otherwise, this will return nothing.
-	 * 
-	 * @return The trigger sequence indicating the current state of the key
-	 *         binding buffer; never <code>null</code>, but may be empty if
-	 *         there is nothing in the buffer.
-	 * @since 3.2
-	 */
-	public TriggerSequence getBuffer();
-
-	/**
-	 * Returns the default scheme identifier for the currently running
-	 * application.
-	 * 
-	 * @return The default scheme identifier (<code>String</code>); never
-	 *         <code>null</code>, but may be empty or point to an undefined
-	 *         scheme.
-	 */
-	public String getDefaultSchemeId();
-
-	/**
-	 * Returns the array of defined schemes in the workbench.
-	 * 
-	 * @return The array of schemes (<code>Scheme</code>) that are defined;
-	 *         it may be <code>null</code>, and it may be empty.
-	 */
-	public Scheme[] getDefinedSchemes();
-
-	/**
-	 * Returns the currently active locale.
-	 * 
-	 * @return The current locale.
-	 */
-	public String getLocale();
-
-	/**
-	 * Returns all of the possible bindings that start with the given trigger
-	 * (but are not equal to the given trigger).
-	 * 
-	 * @param trigger
-	 *            The prefix to look for; must not be <code>null</code>.
-	 * @return A map of triggers (<code>TriggerSequence</code>) to bindings (<code>Binding</code>).
-	 *         This map may be empty, but it is never <code>null</code>.
-	 */
-	public Map getPartialMatches(TriggerSequence trigger);
-
-	/**
-	 * Returns the command identifier for the active binding matching this
-	 * trigger, if any.
-	 * 
-	 * @param trigger
-	 *            The trigger to match; may be <code>null</code>.
-	 * @return The binding that matches, if any; <code>null</code> otherwise.
-	 */
-	public Binding getPerfectMatch(TriggerSequence trigger);
-
-	/**
-	 * Returns the currently active platform.
-	 * 
-	 * @return The current platform.
-	 */
-	public String getPlatform();
-
-	/**
-	 * Retrieves the scheme with the given identifier. If no such scheme exists,
-	 * then an undefined scheme with the given id is created.
-	 * 
-	 * @param schemeId
-	 *            The identifier to find; must not be <code>null</code>.
-	 * @return A scheme with the given identifier, either defined or undefined.
-	 */
-	public Scheme getScheme(String schemeId);
-
-	/**
-	 * Tests whether the global key binding architecture is currently active.
-	 * 
-	 * @return <code>true</code> if the key bindings are active;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean isKeyFilterEnabled();
-
-	/**
-	 * Returns whether the given trigger sequence is a partial match for the
-	 * given sequence.
-	 * 
-	 * @param trigger
-	 *            The sequence which should be the prefix for some binding;
-	 *            should not be <code>null</code>.
-	 * @return <code>true</code> if the trigger can be found in the active
-	 *         bindings; <code>false</code> otherwise.
-	 */
-	public boolean isPartialMatch(TriggerSequence trigger);
-
-	/**
-	 * Returns whether the given trigger sequence is a perfect match for the
-	 * given sequence.
-	 * 
-	 * @param trigger
-	 *            The sequence which should match exactly; should not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> if the trigger can be found in the active
-	 *         bindings; <code>false</code> otherwise.
-	 */
-	public boolean isPerfectMatch(TriggerSequence trigger);
-
-	/**
-	 * Opens the key assistant dialog positioned near the key binding entry in
-	 * the status bar.
-	 */
-	public void openKeyAssistDialog();
-
-	/**
-	 * <p>
-	 * Reads the binding information from the registry and the preferences. This
-	 * will overwrite any of the existing information in the binding service.
-	 * This method is intended to be called during start-up. When this method
-	 * completes, this binding service will reflect the current state of the
-	 * registry and preference store.
-	 * </p>
-	 * 
-	 * @param commandService
-	 *            Ignored.
-	 */
-	public void readRegistryAndPreferences(ICommandService commandService);
-
-	/**
-	 * <p>
-	 * Writes the given active scheme and bindings to the preference store. Only
-	 * the bindings that are of the <code>Binding.USER</code> type will be
-	 * written; the others will be ignored. This should only be used by
-	 * applications trying to persist user preferences. If you are trying to
-	 * change the active scheme as an RCP application, then you should be using
-	 * the <code>plugin_customization.ini</code> file. If you are trying to
-	 * switch between groups of bindings dynamically, you should be using
-	 * contexts.
-	 * </p>
-	 * <p>
-	 * This method also updates the active scheme and bindings in the system to
-	 * match those written to the preference store.
-	 * </p>
-	 * 
-	 * @param activeScheme
-	 *            The scheme which should be persisted; may be <code>null</code>.
-	 * @param bindings
-	 *            The bindings which should be persisted; may be
-	 *            <code>null</code>.
-	 * @throws IOException
-	 *             If something goes wrong while writing to the preference
-	 *             store.
-	 * @see org.eclipse.ui.IWorkbenchPreferenceConstants
-	 * @see org.eclipse.ui.contexts.IContextService
-	 */
-	public void savePreferences(Scheme activeScheme, Binding[] bindings)
-			throws IOException;
-
-	/**
-	 * <p>
-	 * Enables or disables the global key binding architecture. The architecture
-	 * should be enabled by default.
-	 * </p>
-	 * <p>
-	 * When enabled, keyboard shortcuts are active, and that key events can
-	 * trigger commands. This also means that widgets may not see all key events
-	 * (as they might be trapped as a keyboard shortcut).
-	 * </p>
-	 * <p>
-	 * When disabled, no key events will trapped as keyboard shortcuts, and that
-	 * no commands can be triggered by keyboard events. (Exception: it is
-	 * possible that someone listening for key events on a widget could trigger
-	 * a command.)
-	 * </p>
-	 * 
-	 * @param enabled
-	 *            Whether the key filter should be enabled.
-	 */
-	public void setKeyFilterEnabled(boolean enabled);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IKeyFormatter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IKeyFormatter.java
deleted file mode 100644
index 4478e27..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/IKeyFormatter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-/**
- * Any formatter capable of taking key sequence or a key stroke and converting
- * it into a string. These formatters are used to produce the strings that the
- * user sees in the keys preference page and the menus, as well as the strings
- * that are used for persistent storage.
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.IKeyFormatter
- * @since 3.0
- */
-public interface IKeyFormatter {
-
-    /**
-     * Formats an individual key into a human readable format. This uses an
-     * internationalization resource bundle to look up the key. This does not
-     * do any platform-specific formatting (e.g., Carbon's command character).
-     * 
-     * @param key
-     *            The key to format; must not be <code>null</code>.
-     * @return The key formatted as a string; should not be <code>null</code>.
-     */
-    String format(Key key);
-
-    /**
-     * Format the given key sequence into a string. The manner of the
-     * conversion is dependent on the formatter. It is required that unequal
-     * key seqeunces return unequal strings.
-     * 
-     * @param keySequence
-     *            The key sequence to convert; must not be <code>null</code>.
-     * @return A string representation of the key sequence; must not be <code>null</code>.
-     */
-    String format(KeySequence keySequence);
-
-    /**
-     * Format the given key strokes into a string. The manner of the conversion
-     * is dependent on the formatter. It is required that unequal key strokes
-     * return unequal strings.
-     * 
-     * @param keyStroke
-     *            The key stroke to convert; must not be <Code>null</code>.
-     * @return A string representation of the key stroke; must not be <code>
-     *         null</code>
-     */
-    String format(KeyStroke keyStroke);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/Key.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/Key.java
deleted file mode 100644
index ecee769..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/Key.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * <code>Key</code> is the abstract base class for all objects representing
- * keys on the keyboard.
- * </p>
- * <p>
- * All <code>Key</code> objects have a formal string representation, called
- * the 'name' of the key, available via the <code>toString()</code> method.
- * </p>
- * <p>
- * All <code>Key</code> objects, via the <code>format()</code> method,
- * provide a version of their formal string representation translated by
- * platform and locale, suitable for display to a user.
- * </p>
- * <p>
- * <code>Key</code> objects are immutable. Clients are not permitted to extend
- * this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyStroke and
- *             org.eclipse.jface.bindings.keys.KeyLookupFactory
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class Key implements Comparable {
-
-	/**
-	 * The key from which this key was constructed. This value is defined by
-	 * <code>KeyLookupFactory.getDefault()</code>.
-	 */
-	protected final int key;
-
-	/**
-	 * Constructs an instance of <code>Key</code> given its formal string
-	 * representation.
-	 * 
-	 * @param key
-	 *            the integer representation of this key, as defined by
-	 *            <code>KeyLookupFactory.getDefault()</code>.
-	 */
-	Key(final int key) {
-		this.key = key;
-	}
-
-	/**
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public final int compareTo(final Object object) {
-		return Util.compare(key, ((Key) object).key);
-	}
-
-	/**
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public final boolean equals(final Object object) {
-		if (!(object instanceof Key)) {
-			return false;
-		}
-
-		return key == ((Key) object).key;
-	}
-
-	/**
-	 * @see java.lang.Object#hashCode()
-	 */
-	public final int hashCode() {
-		return Util.hashCode(key);
-	}
-
-	/**
-	 * Returns the formal string representation for this key.
-	 * 
-	 * @return The formal string representation for this key. Guaranteed not to
-	 *         be <code>null</code>.
-	 * @see java.lang.Object#toString()
-	 */
-	public final String toString() {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		return lookup.formalNameLookup(key);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyFormatterFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyFormatterFactory.java
deleted file mode 100644
index de1a348..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyFormatterFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import org.eclipse.ui.internal.keys.CompactKeyFormatter;
-import org.eclipse.ui.internal.keys.EmacsKeyFormatter;
-import org.eclipse.ui.internal.keys.FormalKeyFormatter;
-
-/**
- * A cache for formatters. It keeps a few instances of pre-defined instances of
- * <code>IKeyFormatter</code> available for use. It also allows the default
- * formatter to be changed.
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyFormatterFactory
- * @since 3.0
- * @see org.eclipse.ui.keys.IKeyFormatter
- */
-public final class KeyFormatterFactory {
-    private static final IKeyFormatter COMPACT_KEY_FORMATTER = new CompactKeyFormatter();
-
-    private static final IKeyFormatter FORMAL_KEY_FORMATTER = new FormalKeyFormatter();
-
-    private static final IKeyFormatter EMACS_KEY_FORMATTER = new EmacsKeyFormatter();
-
-    private static IKeyFormatter defaultKeyFormatter = FORMAL_KEY_FORMATTER;
-
-    /**
-     * Provides an instance of <code>CompactKeyFormatter</code>.
-     * 
-     * @return The compact formatter; never <code>null</code>.
-     */
-    public static final IKeyFormatter getCompactKeyFormatter() {
-        return COMPACT_KEY_FORMATTER;
-    }
-
-    /**
-     * An accessor for the current default key formatter.
-     * 
-     * @return The default formatter; never <code>null</code>.
-     */
-    public static IKeyFormatter getDefault() {
-        return defaultKeyFormatter;
-    }
-
-    /**
-     * Provides an instance of <code>EmacsKeyFormatter</code>.
-     * 
-     * @return The Xemacs formatter; never <code>null</code>.
-     */
-    public static IKeyFormatter getEmacsKeyFormatter() {
-        return EMACS_KEY_FORMATTER;
-    }
-
-    /**
-     * Provides an instance of <code>FormalKeyFormatter</code>.
-     * 
-     * @return The formal formatter; never <code>null</code>.
-     */
-    public static IKeyFormatter getFormalKeyFormatter() {
-        return FORMAL_KEY_FORMATTER;
-    }
-
-    /**
-     * Sets the default key formatter.
-     * 
-     * @param defaultKeyFormatter
-     *            the default key formatter. Must not be <code>null</code>.
-     */
-    public static void setDefault(IKeyFormatter defaultKeyFormatter) {
-        if (defaultKeyFormatter == null) {
-			throw new NullPointerException();
-		}
-
-        KeyFormatterFactory.defaultKeyFormatter = defaultKeyFormatter;
-    }
-
-    private KeyFormatterFactory() {
-        // Not to be constructred.
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeySequence.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeySequence.java
deleted file mode 100644
index 83469b5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeySequence.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * A <code>KeySequence</code> is defined as a list of zero or more
- * <code>KeyStrokes</code>, with the stipulation that all
- * <code>KeyStroke</code> objects must be complete, save for the last one,
- * whose completeness is optional. A <code>KeySequence</code> is said to be
- * complete if all of its <code>KeyStroke</code> objects are complete.
- * </p>
- * <p>
- * All <code>KeySequence</code> objects have a formal string representation
- * available via the <code>toString()</code> method. There are a number of
- * methods to get instances of <code>KeySequence</code> objects, including one
- * which can parse this formal string representation.
- * </p>
- * <p>
- * All <code>KeySequence</code> objects, via the <code>format()</code>
- * method, provide a version of their formal string representation translated by
- * platform and locale, suitable for display to a user.
- * </p>
- * <p>
- * <code>KeySequence</code> objects are immutable. Clients are not permitted
- * to extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeySequence
- * @since 3.0
- */
-public final class KeySequence implements Comparable {
-
-    /**
-     * The delimiter between multiple key strokes in a single key sequence --
-     * expressed in the formal key stroke grammar. This is not to be displayed
-     * to the user. It is only intended as an internal representation.
-     */
-    public final static String KEY_STROKE_DELIMITER = "\u0020"; //$NON-NLS-1$
-
-    /**
-     * An empty key sequence instance for use by everyone.
-     */
-    private final static KeySequence EMPTY_KEY_SEQUENCE = new KeySequence(
-            Collections.EMPTY_LIST);
-
-    /**
-     * An internal constant used only in this object's hash code algorithm.
-     */
-    private final static int HASH_FACTOR = 89;
-
-    /**
-     * An internal constant used only in this object's hash code algorithm.
-     */
-    private final static int HASH_INITIAL = KeySequence.class.getName()
-            .hashCode();
-
-    /**
-     * The set of delimiters for <code>KeyStroke</code> objects allowed
-     * during parsing of the formal string representation.
-     */
-    public final static String KEY_STROKE_DELIMITERS = KEY_STROKE_DELIMITER
-            + "\b\r\u007F\u001B\f\n\0\t\u000B"; //$NON-NLS-1$
-
-    /**
-     * Gets an instance of <code>KeySequence</code>.
-     * 
-     * @return a key sequence. This key sequence will have no key strokes.
-     *         Guaranteed not to be <code>null</code>.
-     */
-    public static KeySequence getInstance() {
-        return EMPTY_KEY_SEQUENCE;
-    }
-
-    /**
-     * Gets an instance of <code>KeySequence</code> given a key sequence and
-     * a key stroke.
-     * 
-     * @param keySequence
-     *            a key sequence. Must not be <code>null</code>.
-     * @param keyStroke
-     *            a key stroke. Must not be <code>null</code>.
-     * @return a key sequence that is equal to the given key sequence with the
-     *         given key stroke appended to the end. Guaranteed not to be
-     *         <code>null</code>.
-     */
-    public static KeySequence getInstance(KeySequence keySequence,
-            KeyStroke keyStroke) {
-        if (keySequence == null || keyStroke == null) {
-			throw new NullPointerException();
-		}
-
-        List keyStrokes = new ArrayList(keySequence.getKeyStrokes());
-        keyStrokes.add(keyStroke);
-        return new KeySequence(keyStrokes);
-    }
-
-    /**
-     * Gets an instance of <code>KeySequence</code> given a single key
-     * stroke.
-     * 
-     * @param keyStroke
-     *            a single key stroke. Must not be <code>null</code>.
-     * @return a key sequence. Guaranteed not to be <code>null</code>.
-     */
-    public static KeySequence getInstance(KeyStroke keyStroke) {
-        return new KeySequence(Collections.singletonList(keyStroke));
-    }
-
-    /**
-     * Gets an instance of <code>KeySequence</code> given an array of key
-     * strokes.
-     * 
-     * @param keyStrokes
-     *            the array of key strokes. This array may be empty, but it
-     *            must not be <code>null</code>. This array must not contain
-     *            <code>null</code> elements.
-     * @return a key sequence. Guaranteed not to be <code>null</code>.
-     */
-    public static KeySequence getInstance(KeyStroke[] keyStrokes) {
-        return new KeySequence(Arrays.asList(keyStrokes));
-    }
-
-    /**
-     * Gets an instance of <code>KeySequence</code> given a list of key
-     * strokes.
-     * 
-     * @param keyStrokes
-     *            the list of key strokes. This list may be empty, but it must
-     *            not be <code>null</code>. If this list is not empty, it
-     *            must only contain instances of <code>KeyStroke</code>.
-     * @return a key sequence. Guaranteed not to be <code>null</code>.
-     */
-    public static KeySequence getInstance(List keyStrokes) {
-        return new KeySequence(keyStrokes);
-    }
-	
-	/**
-	 * Gets an instance of <code>KeySequence</code> given a new-style key
-	 * sequence.
-	 * 
-	 * @param newKeySequence
-	 *            The new-style key sequence to convert into a legacy key
-	 *            sequence; must not be <code>null</code>.
-	 * @return a key sequence; never <code>null</code>.
-	 */
-	public static final KeySequence getInstance(
-			final org.eclipse.jface.bindings.keys.KeySequence newKeySequence) {
-		final org.eclipse.jface.bindings.keys.KeyStroke[] newKeyStrokes = newKeySequence
-				.getKeyStrokes();
-		final int newKeyStrokesCount = newKeyStrokes.length;
-		final List legacyKeyStrokes = new ArrayList(newKeyStrokesCount);
-
-		for (int i = 0; i < newKeyStrokesCount; i++) {
-			final org.eclipse.jface.bindings.keys.KeyStroke newKeyStroke = newKeyStrokes[i];
-			legacyKeyStrokes.add(SWTKeySupport
-					.convertAcceleratorToKeyStroke(newKeyStroke
-							.getModifierKeys()
-							| newKeyStroke.getNaturalKey()));
-		}
-		
-		return new KeySequence(legacyKeyStrokes);
-	}
-
-    /**
-     * Gets an instance of <code>KeySequence</code> by parsing a given a
-     * formal string representation.
-     * 
-     * @param string
-     *            the formal string representation to parse.
-     * @return a key sequence. Guaranteed not to be <code>null</code>.
-     * @throws ParseException
-     *             if the given formal string representation could not be
-     *             parsed to a valid key sequence.
-     */
-    public static KeySequence getInstance(String string) throws ParseException {
-        if (string == null) {
-			throw new NullPointerException();
-		}
-
-        List keyStrokes = new ArrayList();
-        StringTokenizer stringTokenizer = new StringTokenizer(string,
-                KEY_STROKE_DELIMITERS);
-
-        while (stringTokenizer.hasMoreTokens()) {
-			keyStrokes.add(KeyStroke.getInstance(stringTokenizer.nextToken()));
-		}
-
-        try {
-            return new KeySequence(keyStrokes);
-        } catch (Throwable t) {
-            throw new ParseException(
-                    "Could not construct key sequence with these key strokes: " //$NON-NLS-1$
-                            + keyStrokes);
-        }
-    }
-
-    /**
-     * The cached hash code for this object. Because <code>KeySequence</code>
-     * objects are immutable, their hash codes need only to be computed once.
-     * After the first call to <code>hashCode()</code>, the computed value
-     * is cached here for all subsequent calls.
-     */
-    private transient int hashCode;
-
-    /**
-     * A flag to determine if the <code>hashCode</code> field has already
-     * been computed.
-     */
-    private transient boolean hashCodeComputed;
-
-    /**
-     * The list of key strokes for this key sequence.
-     */
-    private List keyStrokes;
-
-    /**
-     * Constructs an instance of <code>KeySequence</code> given a list of key
-     * strokes.
-     * 
-     * @param keyStrokes
-     *            the list of key strokes. This list may be empty, but it must
-     *            not be <code>null</code>. If this list is not empty, it
-     *            must only contain instances of <code>KeyStroke</code>.
-     */
-    private KeySequence(List keyStrokes) {
-        this.keyStrokes = Util.safeCopy(keyStrokes, KeyStroke.class);
-
-        for (int i = 0; i < this.keyStrokes.size() - 1; i++) {
-            KeyStroke keyStroke = (KeyStroke) this.keyStrokes.get(i);
-
-            if (!keyStroke.isComplete()) {
-				throw new IllegalArgumentException();
-			}
-        }
-    }
-
-    /**
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public int compareTo(Object object) {
-        KeySequence castedObject = (KeySequence) object;
-        int compareTo = Util.compare(keyStrokes, castedObject.keyStrokes);
-        return compareTo;
-    }
-
-    /**
-     * Returns whether or not this key sequence ends with the given key
-     * sequence.
-     * 
-     * @param keySequence
-     *            a key sequence. Must not be <code>null</code>.
-     * @param equals
-     *            whether or not an identical key sequence should be considered
-     *            as a possible match.
-     * @return <code>true</code>, iff the given key sequence ends with this
-     *         key sequence.
-     */
-    public boolean endsWith(KeySequence keySequence, boolean equals) {
-        if (keySequence == null) {
-			throw new NullPointerException();
-		}
-
-        return Util.endsWith(keyStrokes, keySequence.keyStrokes, equals);
-    }
-
-    /**
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object object) {
-        if (!(object instanceof KeySequence)) {
-			return false;
-		}
-
-        return keyStrokes.equals(((KeySequence) object).keyStrokes);
-    }
-
-    /**
-     * Formats this key sequence into the current default look.
-     * 
-     * @return A string representation for this key sequence using the default
-     *         look; never <code>null</code>.
-     */
-    public String format() {
-        return KeyFormatterFactory.getDefault().format(this);
-    }
-
-    /**
-     * Returns the list of key strokes for this key sequence.
-     * 
-     * @return the list of key strokes keys. This list may be empty, but is
-     *         guaranteed not to be <code>null</code>. If this list is not
-     *         empty, it is guaranteed to only contain instances of <code>KeyStroke</code>.
-     */
-    public List getKeyStrokes() {
-        return keyStrokes;
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        if (!hashCodeComputed) {
-            hashCode = HASH_INITIAL;
-            hashCode = hashCode * HASH_FACTOR + keyStrokes.hashCode();
-            hashCodeComputed = true;
-        }
-
-        return hashCode;
-    }
-
-    /**
-     * Returns whether or not this key sequence is complete. Key sequences are
-     * complete iff all of their key strokes are complete.
-     * 
-     * @return <code>true</code>, iff the key sequence is complete.
-     */
-    public boolean isComplete() {
-        return keyStrokes.isEmpty()
-                || ((KeyStroke) keyStrokes.get(keyStrokes.size() - 1))
-                        .isComplete();
-    }
-
-    /**
-     * Returns whether or not this key sequence is empty. Key sequences are
-     * complete iff they have no key strokes.
-     * 
-     * @return <code>true</code>, iff the key sequence is empty.
-     */
-    public boolean isEmpty() {
-        return keyStrokes.isEmpty();
-    }
-
-    /**
-     * Returns whether or not this key sequence starts with the given key
-     * sequence.
-     * 
-     * @param keySequence
-     *            a key sequence. Must not be <code>null</code>.
-     * @param equals
-     *            whether or not an identical key sequence should be considered
-     *            as a possible match.
-     * @return <code>true</code>, iff the given key sequence starts with
-     *         this key sequence.
-     */
-    public boolean startsWith(KeySequence keySequence, boolean equals) {
-        if (keySequence == null) {
-			throw new NullPointerException();
-		}
-
-        return Util.startsWith(keyStrokes, keySequence.keyStrokes, equals);
-    }
-
-    /**
-     * Returns the formal string representation for this key sequence.
-     * 
-     * @return The formal string representation for this key sequence.
-     *         Guaranteed not to be <code>null</code>.
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return KeyFormatterFactory.getFormalKeyFormatter().format(this);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyStroke.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyStroke.java
deleted file mode 100644
index 23c0f13..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/KeyStroke.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.StringTokenizer;
-import java.util.TreeSet;
-
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * A <code>KeyStroke</code> is defined as an optional set of modifier keys
- * followed optionally by a natural key. A <code>KeyStroke</code> is said to
- * be complete if it contains a natural key. A natural key is any Unicode
- * character (e.g., "backspace", etc.), any character belonging to a natural
- * language (e.g., "A", "1", "[", etc.), or any special control character
- * specific to computers (e.g., "F10", "PageUp", etc.).
- * </p>
- * <p>
- * All <code>KeyStroke</code> objects have a formal string representation
- * available via the <code>toString()</code> method. There are a number of
- * methods to get instances of <code>KeyStroke</code> objects, including one
- * which can parse this formal string representation.
- * </p>
- * <p>
- * All <code>KeyStroke</code> objects, via the <code>format()</code> method,
- * provide a version of their formal string representation translated by
- * platform and locale, suitable for display to a user.
- * </p>
- * <p>
- * <code>KeyStroke</code> objects are immutable. Clients are not permitted to
- * extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyStroke
- * @since 3.0
- * @see org.eclipse.ui.keys.ModifierKey
- * @see org.eclipse.ui.keys.NaturalKey
- */
-public final class KeyStroke implements Comparable {
-
-    /**
-     * The delimiter between multiple keys in a single key strokes -- expressed
-     * in the formal key stroke grammar. This is not to be displayed to the
-     * user. It is only intended as an internal representation.
-     */
-    public final static String KEY_DELIMITER = "\u002B"; //$NON-NLS-1$
-
-    /**
-     * An internal constant used only in this object's hash code algorithm.
-     */
-    private final static int HASH_FACTOR = 89;
-
-    /**
-     * An internal constant used only in this object's hash code algorithm.
-     */
-    private final static int HASH_INITIAL = KeyStroke.class.getName()
-            .hashCode();
-
-    /**
-     * The set of delimiters for <code>Key</code> objects allowed during
-     * parsing of the formal string representation.
-     */
-    public final static String KEY_DELIMITERS = KEY_DELIMITER;
-
-    /**
-     * Gets an instance of <code>KeyStroke</code> given a single modifier key
-     * and a natural key.
-     * 
-     * @param modifierKey
-     *            a modifier key. Must not be <code>null</code>.
-     * @param naturalKey
-     *            the natural key. May be <code>null</code>.
-     * @return a key stroke. Guaranteed not to be <code>null</code>.
-     */
-    public static KeyStroke getInstance(ModifierKey modifierKey,
-            NaturalKey naturalKey) {
-        if (modifierKey == null) {
-			throw new NullPointerException();
-		}
-
-        return new KeyStroke(
-                new TreeSet(Collections.singletonList(modifierKey)), naturalKey);
-    }
-
-    /**
-     * Gets an instance of <code>KeyStroke</code> given an array of modifier
-     * keys and a natural key.
-     * 
-     * @param modifierKeys
-     *            the array of modifier keys. This array may be empty, but it
-     *            must not be <code>null</code>. If this array is not empty,
-     *            it must not contain <code>null</code> elements.
-     * @param naturalKey
-     *            the natural key. May be <code>null</code>.
-     * @return a key stroke. Guaranteed not to be <code>null</code>.
-     */
-    public static KeyStroke getInstance(ModifierKey[] modifierKeys,
-            NaturalKey naturalKey) {
-        Util.assertInstance(modifierKeys, ModifierKey.class);
-        return new KeyStroke(new TreeSet(Arrays.asList(modifierKeys)),
-                naturalKey);
-    }
-
-    /**
-     * Gets an instance of <code>KeyStroke</code> given a natural key.
-     * 
-     * @param naturalKey
-     *            the natural key. May be <code>null</code>.
-     * @return a key stroke. This key stroke will have no modifier keys.
-     *         Guaranteed not to be <code>null</code>.
-     */
-    public static KeyStroke getInstance(NaturalKey naturalKey) {
-        return new KeyStroke(Util.EMPTY_SORTED_SET, naturalKey);
-    }
-
-    /**
-     * Gets an instance of <code>KeyStroke</code> given a set of modifier
-     * keys and a natural key.
-     * 
-     * @param modifierKeys
-     *            the set of modifier keys. This set may be empty, but it must
-     *            not be <code>null</code>. If this set is not empty, it
-     *            must only contain instances of <code>ModifierKey</code>.
-     * @param naturalKey
-     *            the natural key. May be <code>null</code>.
-     * @return a key stroke. Guaranteed not to be <code>null</code>.
-     */
-    public static KeyStroke getInstance(SortedSet modifierKeys,
-            NaturalKey naturalKey) {
-        return new KeyStroke(modifierKeys, naturalKey);
-    }
-
-    /**
-     * Gets an instance of <code>KeyStroke</code> by parsing a given a formal
-     * string representation.
-     * 
-     * @param string
-     *            the formal string representation to parse.
-     * @return a key stroke. Guaranteed not to be <code>null</code>.
-     * @throws ParseException
-     *             if the given formal string representation could not be
-     *             parsed to a valid key stroke.
-     */
-    public static KeyStroke getInstance(String string) throws ParseException {
-        if (string == null) {
-			throw new NullPointerException();
-		}
-
-        SortedSet modifierKeys = new TreeSet();
-        NaturalKey naturalKey = null;
-        StringTokenizer stringTokenizer = new StringTokenizer(string,
-                KEY_DELIMITERS, true);
-        int i = 0;
-
-        while (stringTokenizer.hasMoreTokens()) {
-            String token = stringTokenizer.nextToken();
-
-            if (i % 2 == 0) {
-                if (stringTokenizer.hasMoreTokens()) {
-                    token = token.toUpperCase();
-                    ModifierKey modifierKey = (ModifierKey) ModifierKey.modifierKeysByName
-                            .get(token);
-
-                    if (modifierKey == null || !modifierKeys.add(modifierKey)) {
-						throw new ParseException(
-                                "Cannot create key stroke with duplicate or non-existent modifier key: " //$NON-NLS-1$
-                                        + token);
-					}
-                } else if (token.length() == 1) {
-                    naturalKey = CharacterKey.getInstance(token.charAt(0));
-                    break;
-                } else {
-                    token = token.toUpperCase();
-                    naturalKey = (NaturalKey) CharacterKey.characterKeysByName
-                            .get(token);
-
-                    if (naturalKey == null) {
-						naturalKey = (NaturalKey) SpecialKey.specialKeysByName
-                                .get(token);
-					}
-
-                    if (naturalKey == null) {
-						throw new ParseException(
-                                "Cannot create key stroke with invalid natural key: " //$NON-NLS-1$
-                                        + token);
-					}
-                }
-            }
-
-            i++;
-        }
-
-        try {
-            return new KeyStroke(modifierKeys, naturalKey);
-        } catch (Throwable t) {
-            throw new ParseException("Cannot create key stroke with " //$NON-NLS-1$
-                    + modifierKeys + " and " + naturalKey); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * The cached hash code for this object. Because <code>KeyStroke</code>
-     * objects are immutable, their hash codes need only to be computed once.
-     * After the first call to <code>hashCode()</code>, the computed value
-     * is cached here for all subsequent calls.
-     */
-    private transient int hashCode;
-
-    /**
-     * A flag to determine if the <code>hashCode</code> field has already
-     * been computed.
-     */
-    private transient boolean hashCodeComputed;
-
-    /**
-     * The set of modifier keys for this key stroke.
-     */
-    private SortedSet modifierKeys;
-
-    /**
-     * The set of modifier keys for this key stroke in the form of an array.
-     * Used internally by <code>int compareTo(Object)</code>.
-     */
-    private transient ModifierKey[] modifierKeysAsArray;
-
-    /**
-     * The natural key for this key stroke.
-     */
-    private NaturalKey naturalKey;
-
-    /**
-     * Constructs an instance of <code>KeyStroke</code> given a set of
-     * modifier keys and a natural key.
-     * 
-     * @param modifierKeys
-     *            the set of modifier keys. This set may be empty, but it must
-     *            not be <code>null</code>. If this set is not empty, it
-     *            must only contain instances of <code>ModifierKey</code>.
-     * @param naturalKey
-     *            the natural key. May be <code>null</code>.
-     */
-    private KeyStroke(SortedSet modifierKeys, NaturalKey naturalKey) {
-        this.modifierKeys = Util.safeCopy(modifierKeys, ModifierKey.class);
-        this.naturalKey = naturalKey;
-        this.modifierKeysAsArray = (ModifierKey[]) this.modifierKeys
-                .toArray(new ModifierKey[this.modifierKeys.size()]);
-    }
-
-    /**
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public int compareTo(Object object) {
-        KeyStroke castedObject = (KeyStroke) object;
-        int compareTo = Util.compare(modifierKeysAsArray,
-                castedObject.modifierKeysAsArray);
-
-        if (compareTo == 0) {
-			compareTo = Util.compare(naturalKey, castedObject.naturalKey);
-		}
-
-        return compareTo;
-    }
-
-    /**
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object object) {
-        if (!(object instanceof KeyStroke)) {
-			return false;
-		}
-
-        KeyStroke castedObject = (KeyStroke) object;
-        
-        if (!modifierKeys.equals(castedObject.modifierKeys)) {
-			return false;
-		}
-        return Util.equals(naturalKey, castedObject.naturalKey);
-    }
-
-    /**
-     * Formats this key stroke into the current default look.
-     * 
-     * @return A string representation for this key stroke using the default
-     *         look; never <code>null</code>.
-     */
-    public String format() {
-        return KeyFormatterFactory.getDefault().format(this);
-    }
-
-    /**
-     * Returns the set of modifier keys for this key stroke.
-     * 
-     * @return the set of modifier keys. This set may be empty, but is
-     *         guaranteed not to be <code>null</code>. If this set is not
-     *         empty, it is guaranteed to only contain instances of <code>ModifierKey</code>.
-     */
-    public Set getModifierKeys() {
-        return Collections.unmodifiableSet(modifierKeys);
-    }
-
-    /**
-     * Returns the natural key for this key stroke.
-     * 
-     * @return the natural key. May be <code>null</code>.
-     */
-    public NaturalKey getNaturalKey() {
-        return naturalKey;
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        if (!hashCodeComputed) {
-            hashCode = HASH_INITIAL;
-            hashCode = hashCode * HASH_FACTOR + modifierKeys.hashCode();
-            hashCode = hashCode * HASH_FACTOR + Util.hashCode(naturalKey);
-            hashCodeComputed = true;
-        }
-
-        return hashCode;
-    }
-
-    /**
-     * Returns whether or not this key stroke is complete. Key strokes are
-     * complete iff they have a natural key which is not <code>null</code>.
-     * 
-     * @return <code>true</code>, iff the key stroke is complete.
-     */
-    public boolean isComplete() {
-        return naturalKey != null;
-    }
-
-    /**
-     * Returns the formal string representation for this key stroke.
-     * 
-     * @return The formal string representation for this key stroke. Guaranteed
-     *         not to be <code>null</code>.
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return KeyFormatterFactory.getFormalKeyFormatter().format(this);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ModifierKey.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ModifierKey.java
deleted file mode 100644
index b96dd0d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ModifierKey.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-import org.eclipse.swt.SWT;
-
-/**
- * <p>
- * Instances of <code>ModifierKey</code> represent the four keys on the
- * keyboard recognized by convention as 'modifier keys', those keys typically
- * pressed in combination with themselves and/or a
- * {@link org.eclipse.ui.keys.NaturalKey}.
- * </p>
- * <p>
- * <code>ModifierKey</code> objects are immutable. Clients are not permitted
- * to extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyStroke and
- *             org.eclipse.jface.bindings.keys.KeyLookupFactory
- * @since 3.0
- * @see org.eclipse.ui.keys.NaturalKey
- */
-public final class ModifierKey extends Key {
-
-	/**
-	 * An internal map used to lookup instances of <code>ModifierKey</code>
-	 * given the formal string representation of a modifier key.
-	 */
-	static SortedMap modifierKeysByName = new TreeMap();
-
-	/**
-	 * The single static instance of <code>ModifierKey</code> which represents
-	 * the 'Alt' key.
-	 */
-	public final static ModifierKey ALT;
-
-	/**
-	 * The single static instance of <code>ModifierKey</code> which represents
-	 * the 'Command' key.
-	 */
-	public final static ModifierKey COMMAND;
-
-	/**
-	 * The single static instance of <code>ModifierKey</code> which represents
-	 * the 'Ctrl' key.
-	 */
-	public final static ModifierKey CTRL;
-
-	/**
-	 * The name of the 'M1' key.
-	 */
-	private final static String M1_NAME = "M1"; //$NON-NLS-1$	
-
-	/**
-	 * The name of the 'M2' key.
-	 */
-	private final static String M2_NAME = "M2"; //$NON-NLS-1$
-
-	/**
-	 * The name of the 'M3' key.
-	 */
-	private final static String M3_NAME = "M3"; //$NON-NLS-1$
-
-	/**
-	 * The name of the 'M4' key.
-	 */
-	private final static String M4_NAME = "M4"; //$NON-NLS-1$	
-
-	/**
-	 * The single static instance of <code>ModifierKey</code> which represents
-	 * the 'Shift' key.
-	 */
-	public final static ModifierKey SHIFT;
-
-	static {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		ALT = new ModifierKey(lookup.getAlt());
-		COMMAND = new ModifierKey(lookup.getCommand());
-		CTRL = new ModifierKey(lookup.getCtrl());
-		SHIFT = new ModifierKey(lookup.getShift());
-		
-		modifierKeysByName.put(ModifierKey.ALT.toString(), ModifierKey.ALT);
-		modifierKeysByName.put(ModifierKey.COMMAND.toString(),
-				ModifierKey.COMMAND);
-		modifierKeysByName.put(ModifierKey.CTRL.toString(), ModifierKey.CTRL);
-		modifierKeysByName.put(ModifierKey.SHIFT.toString(), ModifierKey.SHIFT);
-		modifierKeysByName
-				.put(
-						M1_NAME,
-						"carbon".equals(SWT.getPlatform()) ? ModifierKey.COMMAND : ModifierKey.CTRL); //$NON-NLS-1$
-		modifierKeysByName.put(M2_NAME, ModifierKey.SHIFT);
-		modifierKeysByName.put(M3_NAME, ModifierKey.ALT);
-		modifierKeysByName
-				.put(
-						M4_NAME,
-						"carbon".equals(SWT.getPlatform()) ? ModifierKey.CTRL : ModifierKey.COMMAND); //$NON-NLS-1$
-	}
-
-	/**
-	 * Constructs an instance of <code>ModifierKey</code> given a name.
-	 * 
-	 * @param key
-	 *            The key which this key wraps.
-	 */
-	private ModifierKey(final int key) {
-		super(key);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/NaturalKey.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/NaturalKey.java
deleted file mode 100644
index d5896c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/NaturalKey.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-/**
- * </p>
- * Instances of <code>NaturalKey</code> represent all keys on the keyboard not
- * known by convention as 'modifier keys'. These can either be keys that belong
- * to a natural language of some kind(e.g., "A", "1"), any Unicode character
- * (e.g., "backspace"), or they can be special controls keys used by computers
- * (e.g., "F10", "PageUp").
- * </p>
- * <p>
- * <code>NaturalKey</code> objects are immutable. Clients are not permitted to
- * extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyStroke and
- *             org.eclipse.jface.bindings.keys.KeyLookupFactory
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class NaturalKey extends Key {
-
-	/**
-	 * Constructs an instance of <code>NaturalKey</code> given a name.
-	 * 
-	 * @param key
-	 *            The key to be wrapped.
-	 */
-	NaturalKey(final int key) {
-		super(key);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ParseException.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ParseException.java
deleted file mode 100644
index 7c42052..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/ParseException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-/**
- * <p>
- * An exception indicating problems while parsing formal string representations
- * of either <code>KeyStroke</code> or <code>KeySequence</code> objects.
- * </p>
- * <p>
- * <code>ParseException</code> objects are immutable. Clients are not
- * permitted to extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.ParseException
- * @since 3.0
- */
-public final class ParseException extends Exception {
-
-    /**
-     * Generated serial version UID for this class.
-     * @since 3.1
-     */
-    private static final long serialVersionUID = 3257009864814376241L;
-
-    /**
-     * Constructs a <code>ParseException</code> with the specified detail
-     * message.
-     * 
-     * @param s
-     *            the detail message.
-     */
-    public ParseException(final String s) {
-        super(s);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SWTKeySupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SWTKeySupport.java
deleted file mode 100644
index 28d3f6c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SWTKeySupport.java
+++ /dev/null
@@ -1,462 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import java.util.Iterator;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.internal.keys.NativeKeyFormatter;
-
-/**
- * A utility class for converting SWT events into key strokes.
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.SWTKeySupport
- * @since 3.0
- */
-public final class SWTKeySupport {
-
-    /**
-     * Given an SWT accelerator value, provide the corresponding key stroke.
-     * 
-     * @param accelerator
-     *            The accelerator to convert; should be a valid SWT accelerator
-     *            value.
-     * @return The equivalent key stroke; never <code>null</code>.
-     */
-    public static KeyStroke convertAcceleratorToKeyStroke(int accelerator) {
-        final SortedSet modifierKeys = new TreeSet();
-        NaturalKey naturalKey = null;
-
-        if ((accelerator & SWT.ALT) != 0) {
-			modifierKeys.add(ModifierKey.ALT);
-		}
-
-        if ((accelerator & SWT.COMMAND) != 0) {
-			modifierKeys.add(ModifierKey.COMMAND);
-		}
-
-        if ((accelerator & SWT.CTRL) != 0) {
-			modifierKeys.add(ModifierKey.CTRL);
-		}
-
-        if ((accelerator & SWT.SHIFT) != 0) {
-			modifierKeys.add(ModifierKey.SHIFT);
-		}
-
-        if (((accelerator & SWT.KEY_MASK) == 0) && (accelerator != 0)) {
-            // There were only accelerators
-            naturalKey = null;
-        } else {
-            // There were other keys.
-            accelerator &= SWT.KEY_MASK;
-
-            switch (accelerator) {
-            case SWT.ARROW_DOWN:
-                naturalKey = SpecialKey.ARROW_DOWN;
-                break;
-            case SWT.ARROW_LEFT:
-                naturalKey = SpecialKey.ARROW_LEFT;
-                break;
-            case SWT.ARROW_RIGHT:
-                naturalKey = SpecialKey.ARROW_RIGHT;
-                break;
-            case SWT.ARROW_UP:
-                naturalKey = SpecialKey.ARROW_UP;
-                break;
-            case SWT.BREAK:
-                naturalKey = SpecialKey.BREAK;
-                break;
-            case SWT.CAPS_LOCK:
-                naturalKey = SpecialKey.CAPS_LOCK;
-                break;
-            case SWT.END:
-                naturalKey = SpecialKey.END;
-                break;
-            case SWT.F1:
-                naturalKey = SpecialKey.F1;
-                break;
-            case SWT.F10:
-                naturalKey = SpecialKey.F10;
-                break;
-            case SWT.F11:
-                naturalKey = SpecialKey.F11;
-                break;
-            case SWT.F12:
-                naturalKey = SpecialKey.F12;
-                break;
-            case SWT.F2:
-                naturalKey = SpecialKey.F2;
-                break;
-            case SWT.F3:
-                naturalKey = SpecialKey.F3;
-                break;
-            case SWT.F4:
-                naturalKey = SpecialKey.F4;
-                break;
-            case SWT.F5:
-                naturalKey = SpecialKey.F5;
-                break;
-            case SWT.F6:
-                naturalKey = SpecialKey.F6;
-                break;
-            case SWT.F7:
-                naturalKey = SpecialKey.F7;
-                break;
-            case SWT.F8:
-                naturalKey = SpecialKey.F8;
-                break;
-            case SWT.F9:
-                naturalKey = SpecialKey.F9;
-                break;
-            case SWT.HOME:
-                naturalKey = SpecialKey.HOME;
-                break;
-            case SWT.INSERT:
-                naturalKey = SpecialKey.INSERT;
-                break;
-            case SWT.KEYPAD_0:
-                naturalKey = SpecialKey.NUMPAD_0;
-                break;
-            case SWT.KEYPAD_1:
-                naturalKey = SpecialKey.NUMPAD_1;
-                break;
-            case SWT.KEYPAD_2:
-                naturalKey = SpecialKey.NUMPAD_2;
-                break;
-            case SWT.KEYPAD_3:
-                naturalKey = SpecialKey.NUMPAD_3;
-                break;
-            case SWT.KEYPAD_4:
-                naturalKey = SpecialKey.NUMPAD_4;
-                break;
-            case SWT.KEYPAD_5:
-                naturalKey = SpecialKey.NUMPAD_5;
-                break;
-            case SWT.KEYPAD_6:
-                naturalKey = SpecialKey.NUMPAD_6;
-                break;
-            case SWT.KEYPAD_7:
-                naturalKey = SpecialKey.NUMPAD_7;
-                break;
-            case SWT.KEYPAD_8:
-                naturalKey = SpecialKey.NUMPAD_8;
-                break;
-            case SWT.KEYPAD_9:
-                naturalKey = SpecialKey.NUMPAD_9;
-                break;
-            case SWT.KEYPAD_ADD:
-                naturalKey = SpecialKey.NUMPAD_ADD;
-                break;
-            case SWT.KEYPAD_CR:
-                naturalKey = SpecialKey.NUMPAD_ENTER;
-                break;
-            case SWT.KEYPAD_DECIMAL:
-                naturalKey = SpecialKey.NUMPAD_DECIMAL;
-                break;
-            case SWT.KEYPAD_DIVIDE:
-                naturalKey = SpecialKey.NUMPAD_DIVIDE;
-                break;
-            case SWT.KEYPAD_EQUAL:
-                naturalKey = SpecialKey.NUMPAD_EQUAL;
-                break;
-            case SWT.KEYPAD_MULTIPLY:
-                naturalKey = SpecialKey.NUMPAD_MULTIPLY;
-                break;
-            case SWT.KEYPAD_SUBTRACT:
-                naturalKey = SpecialKey.NUMPAD_SUBTRACT;
-                break;
-            case SWT.NUM_LOCK:
-                naturalKey = SpecialKey.NUM_LOCK;
-                break;
-            case SWT.PAGE_DOWN:
-                naturalKey = SpecialKey.PAGE_DOWN;
-                break;
-            case SWT.PAGE_UP:
-                naturalKey = SpecialKey.PAGE_UP;
-                break;
-            case SWT.PAUSE:
-                naturalKey = SpecialKey.PAUSE;
-                break;
-            case SWT.PRINT_SCREEN:
-                naturalKey = SpecialKey.PRINT_SCREEN;
-                break;
-            case SWT.SCROLL_LOCK:
-                naturalKey = SpecialKey.SCROLL_LOCK;
-                break;
-            default:
-                naturalKey = CharacterKey
-                        .getInstance((char) (accelerator & 0xFFFF));
-            }
-        }
-
-        return KeyStroke.getInstance(modifierKeys, naturalKey);
-    }
-
-    /**
-     * <p>
-     * Converts the given event into an SWT accelerator value -- considering the
-     * modified character with the shift modifier. This is the third accelerator
-     * value that should be checked.
-     * </p>
-     * <p>
-     * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-     * "Ctrl+Shift+%".
-     * </p>
-     * 
-     * @param event
-     *            The event to be converted; must not be <code>null</code>.
-     * @return The combination of the state mask and the unmodified character.
-     */
-    public static int convertEventToModifiedAccelerator(Event event) {
-        int modifiers = event.stateMask & SWT.MODIFIER_MASK;
-        char character = topKey(event);
-        return modifiers + toUpperCase(character);
-    }
-
-    /**
-     * <p>
-     * Converts the given event into an SWT accelerator value -- considering the
-     * unmodified character with all modifier keys. This is the first
-     * accelerator value that should be checked. However, all alphabetic
-     * characters are considered as their uppercase equivalents.
-     * </p>
-     * <p>
-     * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-     * "Ctrl+Shift+5".
-     * </p>
-     * 
-     * @param event
-     *            The event to be converted; must not be <code>null</code>.
-     * @return The combination of the state mask and the unmodified character.
-     */
-    public static int convertEventToUnmodifiedAccelerator(Event event) {
-        return convertEventToUnmodifiedAccelerator(event.stateMask,
-                event.keyCode);
-    }
-
-    /**
-     * <p>
-     * Converts the given state mask and key code into an SWT accelerator value --
-     * considering the unmodified character with all modifier keys. All
-     * alphabetic characters are considered as their uppercase equivalents.
-     * </p>
-     * <p>
-     * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-     * "Ctrl+Shift+5".
-     * </p>
-     * 
-     * @param stateMask
-     *            The integer mask of modifiers keys depressed when this was
-     *            pressed.
-     * @param keyCode
-     *            The key that was pressed, before being modified.
-     * @return The combination of the state mask and the unmodified character.
-     */
-    private static int convertEventToUnmodifiedAccelerator(int stateMask,
-            int keyCode) {
-        int modifiers = stateMask & SWT.MODIFIER_MASK;
-        int character = keyCode;
-        return modifiers + toUpperCase(character);
-    }
-
-    /**
-     * <p>
-     * Converts the given event into an SWT accelerator value -- considering the
-     * unmodified character with all modifier keys. This is the first
-     * accelerator value that should be checked. However, all alphabetic
-     * characters are considered as their uppercase equivalents.
-     * </p>
-     * <p>
-     * For example, on a standard US keyboard, "Ctrl+Shift+5" would be viewed as
-     * "Ctrl+%".
-     * </p>
-     * 
-     * @param event
-     *            The event to be converted; must not be <code>null</code>.
-     * @return The combination of the state mask and the unmodified character.
-     */
-    public static int convertEventToUnmodifiedAccelerator(KeyEvent event) {
-        return convertEventToUnmodifiedAccelerator(event.stateMask,
-                event.keyCode);
-    }
-
-    /**
-     * Converts the given event into an SWT accelerator value -- considering
-     * the modified character without the shift modifier. This is the second
-     * accelerator value that should be checked. Key strokes with alphabetic
-     * natural keys are run through <code>convertEventToUnmodifiedAccelerator</code>
-     * 
-     * @param event
-     *            The event to be converted; must not be <code>null</code>.
-     * @return The combination of the state mask without shift, and the
-     *         modified character.
-     */
-    public static int convertEventToUnshiftedModifiedAccelerator(Event event) {
-        // Disregard alphabetic key strokes.
-        if (Character.isLetter((char) event.keyCode)) {
-            return convertEventToUnmodifiedAccelerator(event);
-        }
-
-        int modifiers = event.stateMask & (SWT.MODIFIER_MASK ^ SWT.SHIFT);
-        char character = topKey(event);
-        return modifiers + toUpperCase(character);
-    }
-
-    /**
-     * Given a key stroke, this method provides the equivalent SWT accelerator
-     * value. The functional inverse of <code>convertAcceleratorToKeyStroke</code>.
-     * 
-     * @param keyStroke
-     *            The key stroke to convert; must not be <code>null</code>.
-     * @return The SWT accelerator value
-     */
-    public static final int convertKeyStrokeToAccelerator(
-            final KeyStroke keyStroke) {
-        int accelerator = 0;
-        final Iterator iterator = keyStroke.getModifierKeys().iterator();
-
-        while (iterator.hasNext()) {
-            final ModifierKey modifierKey = (ModifierKey) iterator.next();
-
-            if (modifierKey == ModifierKey.ALT) {
-				accelerator |= SWT.ALT;
-			} else if (modifierKey == ModifierKey.COMMAND) {
-				accelerator |= SWT.COMMAND;
-			} else if (modifierKey == ModifierKey.CTRL) {
-				accelerator |= SWT.CTRL;
-			} else if (modifierKey == ModifierKey.SHIFT) {
-				accelerator |= SWT.SHIFT;
-			}
-        }
-
-        final NaturalKey naturalKey = keyStroke.getNaturalKey();
-
-        if (naturalKey instanceof CharacterKey) {
-			accelerator |= ((CharacterKey) naturalKey).getCharacter();
-		} else if (naturalKey instanceof SpecialKey) {
-            final SpecialKey specialKey = (SpecialKey) naturalKey;
-
-            if (specialKey == SpecialKey.ARROW_DOWN) {
-				accelerator |= SWT.ARROW_DOWN;
-			} else if (specialKey == SpecialKey.ARROW_LEFT) {
-				accelerator |= SWT.ARROW_LEFT;
-			} else if (specialKey == SpecialKey.ARROW_RIGHT) {
-				accelerator |= SWT.ARROW_RIGHT;
-			} else if (specialKey == SpecialKey.ARROW_UP) {
-				accelerator |= SWT.ARROW_UP;
-			} else if (specialKey == SpecialKey.END) {
-				accelerator |= SWT.END;
-			} else if (specialKey == SpecialKey.F1) {
-				accelerator |= SWT.F1;
-			} else if (specialKey == SpecialKey.F10) {
-				accelerator |= SWT.F10;
-			} else if (specialKey == SpecialKey.F11) {
-				accelerator |= SWT.F11;
-			} else if (specialKey == SpecialKey.F12) {
-				accelerator |= SWT.F12;
-			} else if (specialKey == SpecialKey.F2) {
-				accelerator |= SWT.F2;
-			} else if (specialKey == SpecialKey.F3) {
-				accelerator |= SWT.F3;
-			} else if (specialKey == SpecialKey.F4) {
-				accelerator |= SWT.F4;
-			} else if (specialKey == SpecialKey.F5) {
-				accelerator |= SWT.F5;
-			} else if (specialKey == SpecialKey.F6) {
-				accelerator |= SWT.F6;
-			} else if (specialKey == SpecialKey.F7) {
-				accelerator |= SWT.F7;
-			} else if (specialKey == SpecialKey.F8) {
-				accelerator |= SWT.F8;
-			} else if (specialKey == SpecialKey.F9) {
-				accelerator |= SWT.F9;
-			} else if (specialKey == SpecialKey.HOME) {
-				accelerator |= SWT.HOME;
-			} else if (specialKey == SpecialKey.INSERT) {
-				accelerator |= SWT.INSERT;
-			} else if (specialKey == SpecialKey.PAGE_DOWN) {
-				accelerator |= SWT.PAGE_DOWN;
-			} else if (specialKey == SpecialKey.PAGE_UP) {
-				accelerator |= SWT.PAGE_UP;
-			}
-        }
-
-        return accelerator;
-    }
-
-    private static final IKeyFormatter NATIVE_FORMATTER = new NativeKeyFormatter();
-
-    /**
-     * Provides an instance of <code>IKeyFormatter</code> appropriate for the
-     * current instance.
-     * 
-     * @return an instance of <code>IKeyFormatter</code> appropriate for the
-     *         current instance; never <code>null</code>.
-     */
-    public static IKeyFormatter getKeyFormatterForPlatform() {
-        return NATIVE_FORMATTER;
-    }
-
-    /**
-     * Makes sure that a fully-modified character is converted to the normal
-     * form. This means that "Ctrl+" key strokes must reverse the modification
-     * caused by control-escaping. Also, all lower case letters are converted
-     * to uppercase.
-     * 
-     * @param event
-     *            The event from which the fully-modified character should be
-     *            pulled.
-     * @return The modified character, uppercase and without control-escaping.
-     */
-    private static char topKey(Event event) {
-        char character = event.character;
-        boolean ctrlDown = (event.stateMask & SWT.CTRL) != 0;
-
-        if (ctrlDown && event.character != event.keyCode
-                && event.character < 0x20) {
-			character += 0x40;
-		}
-
-        return character;
-    }
-
-    /**
-     * Makes the given character uppercase if it is a letter.
-     * 
-     * @param keyCode
-     *            The character to convert.
-     * @return The uppercase equivalent, if any; otherwise, the character
-     *         itself.
-     */
-    private static int toUpperCase(int keyCode) {
-        // Will this key code be truncated?
-        if (keyCode > 0xFFFF) {
-            return keyCode;
-        }
-
-        // Downcast in safety. Only make characters uppercase.
-        char character = (char) keyCode;
-        return Character.isLetter(character) ? Character.toUpperCase(character)
-                : keyCode;
-    }
-
-    /**
-     * This class should never be instantiated.
-     */
-    private SWTKeySupport() {
-        // This class should never be instantiated.
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SpecialKey.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SpecialKey.java
deleted file mode 100644
index 396f1ed..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/SpecialKey.java
+++ /dev/null
@@ -1,490 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.keys;
-
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.eclipse.jface.bindings.keys.IKeyLookup;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
-
-/**
- * <p>
- * Instances of <code>SpecialKey</code> represent the keys on keyboard
- * recognized as neither modifier keys nor character keys. These are special
- * control keys specific to computers (e.g., "left arrow", "page down", "F10",
- * etc.). They do not include keys representing letters, numbers or punctuation
- * from a natural language, nor do they include any key that can be represented
- * by a Unicode character (e.g., "backspace").
- * </p>
- * <p>
- * <code>SpecialKey</code> objects are immutable. Clients are not permitted to
- * extend this class.
- * </p>
- * 
- * @deprecated Please use org.eclipse.jface.bindings.keys.KeyStroke and
- *             org.eclipse.jface.bindings.keys.KeyLookupFactory
- * @since 3.0
- */
-public final class SpecialKey extends NaturalKey {
-
-	/**
-	 * An internal map used to lookup instances of <code>SpecialKey</code>
-	 * given the formal string representation of a special key.
-	 */
-	static SortedMap specialKeysByName = new TreeMap();
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Arrow Down' key.
-	 */
-	public final static SpecialKey ARROW_DOWN;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Arrow Left' key.
-	 */
-	public final static SpecialKey ARROW_LEFT;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Arrow Right' key.
-	 */
-	public final static SpecialKey ARROW_RIGHT;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Arrow Up' key.
-	 */
-	public final static SpecialKey ARROW_UP;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Break' key.
-	 */
-	public final static SpecialKey BREAK;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Caps Lock' key.
-	 */
-	public final static SpecialKey CAPS_LOCK;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'End' key.
-	 */
-	public final static SpecialKey END;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F1' key.
-	 */
-	public final static SpecialKey F1;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F10' key.
-	 */
-	public final static SpecialKey F10;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F11' key.
-	 */
-	public final static SpecialKey F11;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F12' key.
-	 */
-	public final static SpecialKey F12;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F13' key.
-	 */
-	public final static SpecialKey F13;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F14' key.
-	 */
-	public final static SpecialKey F14;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F15' key.
-	 */
-	public final static SpecialKey F15;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F2' key.
-	 */
-	public final static SpecialKey F2;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F3' key.
-	 */
-	public final static SpecialKey F3;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F4' key.
-	 */
-	public final static SpecialKey F4;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F5' key.
-	 */
-	public final static SpecialKey F5;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F6' key.
-	 */
-	public final static SpecialKey F6;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F7' key.
-	 */
-	public final static SpecialKey F7;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F8' key.
-	 */
-	public final static SpecialKey F8;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'F9' key.
-	 */
-	public final static SpecialKey F9;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Home' key.
-	 */
-	public final static SpecialKey HOME;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Insert' key.
-	 */
-	public final static SpecialKey INSERT;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'NumLock' key.
-	 */
-	public final static SpecialKey NUM_LOCK;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '0' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_0;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '1' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_1;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '2' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_2;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '3' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_3;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '4' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_4;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '5' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_5;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '6' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_6;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '7' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_7;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '8' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_8;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '9' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_9;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Add' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_ADD;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Decimal' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_DECIMAL;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Divide' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_DIVIDE;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Enter' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_ENTER;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the '=' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_EQUAL;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Multiply' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_MULTIPLY;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Subtract' key on the numpad.
-	 */
-	public final static SpecialKey NUMPAD_SUBTRACT;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Page Down' key.
-	 */
-	public final static SpecialKey PAGE_DOWN;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Page Up' key.
-	 */
-	public final static SpecialKey PAGE_UP;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Pause' key.
-	 */
-	public final static SpecialKey PAUSE;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Print Screen' key.
-	 */
-	public final static SpecialKey PRINT_SCREEN;
-
-	/**
-	 * The single static instance of <code>SpecialKey</code> which represents
-	 * the 'Scroll Lock' key.
-	 */
-	public final static SpecialKey SCROLL_LOCK;
-
-	static {
-		final IKeyLookup lookup = KeyLookupFactory.getDefault();
-		ARROW_DOWN = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.ARROW_DOWN_NAME));
-		ARROW_LEFT = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.ARROW_LEFT_NAME));
-		ARROW_RIGHT = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.ARROW_RIGHT_NAME));
-		ARROW_UP = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.ARROW_UP_NAME));
-		BREAK = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.BREAK_NAME));
-		CAPS_LOCK = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.CAPS_LOCK_NAME));
-		END = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.END_NAME));
-		F1 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F1_NAME));
-		F2 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F2_NAME));
-		F3 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F3_NAME));
-		F4 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F4_NAME));
-		F5 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F5_NAME));
-		F6 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F6_NAME));
-		F7 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F7_NAME));
-		F8 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F8_NAME));
-		F9 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F9_NAME));
-		F10 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F10_NAME));
-		F11 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F11_NAME));
-		F12 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F12_NAME));
-		F13 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F13_NAME));
-		F14 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F14_NAME));
-		F15 = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.F15_NAME));
-		HOME = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.HOME_NAME));
-		INSERT = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.INSERT_NAME));
-		NUM_LOCK = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUM_LOCK_NAME));
-		NUMPAD_0 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_0_NAME));
-		NUMPAD_1 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_1_NAME));
-		NUMPAD_2 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_2_NAME));
-		NUMPAD_3 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_3_NAME));
-		NUMPAD_4 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_4_NAME));
-		NUMPAD_5 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_5_NAME));
-		NUMPAD_6 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_6_NAME));
-		NUMPAD_7 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_7_NAME));
-		NUMPAD_8 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_8_NAME));
-		NUMPAD_9 = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_9_NAME));
-		NUMPAD_ADD = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_ADD_NAME));
-		NUMPAD_DECIMAL = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_DECIMAL_NAME));
-		NUMPAD_DIVIDE = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_DIVIDE_NAME));
-		NUMPAD_ENTER = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_ENTER_NAME));
-		NUMPAD_EQUAL = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_EQUAL_NAME));
-		NUMPAD_MULTIPLY = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_MULTIPLY_NAME));
-		NUMPAD_SUBTRACT = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.NUMPAD_SUBTRACT_NAME));
-		PAGE_DOWN = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.PAGE_DOWN_NAME));
-		PAGE_UP = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.PAGE_UP_NAME));
-		PAUSE = new SpecialKey(lookup.formalKeyLookup(IKeyLookup.PAUSE_NAME));
-		PRINT_SCREEN = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.PRINT_SCREEN_NAME));
-		SCROLL_LOCK = new SpecialKey(lookup
-				.formalKeyLookup(IKeyLookup.SCROLL_LOCK_NAME));
-
-		specialKeysByName.put(SpecialKey.ARROW_DOWN.toString(),
-				SpecialKey.ARROW_DOWN);
-		specialKeysByName.put(SpecialKey.ARROW_LEFT.toString(),
-				SpecialKey.ARROW_LEFT);
-		specialKeysByName.put(SpecialKey.ARROW_RIGHT.toString(),
-				SpecialKey.ARROW_RIGHT);
-		specialKeysByName.put(SpecialKey.ARROW_UP.toString(),
-				SpecialKey.ARROW_UP);
-		specialKeysByName.put(SpecialKey.BREAK.toString(), SpecialKey.BREAK);
-		specialKeysByName.put(SpecialKey.CAPS_LOCK.toString(),
-				SpecialKey.CAPS_LOCK);
-		specialKeysByName.put(SpecialKey.END.toString(), SpecialKey.END);
-		specialKeysByName.put(SpecialKey.F1.toString(), SpecialKey.F1);
-		specialKeysByName.put(SpecialKey.F10.toString(), SpecialKey.F10);
-		specialKeysByName.put(SpecialKey.F11.toString(), SpecialKey.F11);
-		specialKeysByName.put(SpecialKey.F12.toString(), SpecialKey.F12);
-		specialKeysByName.put(SpecialKey.F13.toString(), SpecialKey.F13);
-		specialKeysByName.put(SpecialKey.F14.toString(), SpecialKey.F14);
-		specialKeysByName.put(SpecialKey.F15.toString(), SpecialKey.F15);
-		specialKeysByName.put(SpecialKey.F2.toString(), SpecialKey.F2);
-		specialKeysByName.put(SpecialKey.F3.toString(), SpecialKey.F3);
-		specialKeysByName.put(SpecialKey.F4.toString(), SpecialKey.F4);
-		specialKeysByName.put(SpecialKey.F5.toString(), SpecialKey.F5);
-		specialKeysByName.put(SpecialKey.F6.toString(), SpecialKey.F6);
-		specialKeysByName.put(SpecialKey.F7.toString(), SpecialKey.F7);
-		specialKeysByName.put(SpecialKey.F8.toString(), SpecialKey.F8);
-		specialKeysByName.put(SpecialKey.F9.toString(), SpecialKey.F9);
-		specialKeysByName.put(SpecialKey.NUM_LOCK.toString(),
-				SpecialKey.NUM_LOCK);
-		specialKeysByName.put(SpecialKey.NUMPAD_0.toString(),
-				SpecialKey.NUMPAD_0);
-		specialKeysByName.put(SpecialKey.NUMPAD_1.toString(),
-				SpecialKey.NUMPAD_1);
-		specialKeysByName.put(SpecialKey.NUMPAD_2.toString(),
-				SpecialKey.NUMPAD_2);
-		specialKeysByName.put(SpecialKey.NUMPAD_3.toString(),
-				SpecialKey.NUMPAD_3);
-		specialKeysByName.put(SpecialKey.NUMPAD_4.toString(),
-				SpecialKey.NUMPAD_4);
-		specialKeysByName.put(SpecialKey.NUMPAD_5.toString(),
-				SpecialKey.NUMPAD_5);
-		specialKeysByName.put(SpecialKey.NUMPAD_6.toString(),
-				SpecialKey.NUMPAD_6);
-		specialKeysByName.put(SpecialKey.NUMPAD_7.toString(),
-				SpecialKey.NUMPAD_7);
-		specialKeysByName.put(SpecialKey.NUMPAD_8.toString(),
-				SpecialKey.NUMPAD_8);
-		specialKeysByName.put(SpecialKey.NUMPAD_9.toString(),
-				SpecialKey.NUMPAD_9);
-		specialKeysByName.put(SpecialKey.NUMPAD_ADD.toString(),
-				SpecialKey.NUMPAD_ADD);
-		specialKeysByName.put(SpecialKey.NUMPAD_DECIMAL.toString(),
-				SpecialKey.NUMPAD_DECIMAL);
-		specialKeysByName.put(SpecialKey.NUMPAD_DIVIDE.toString(),
-				SpecialKey.NUMPAD_DIVIDE);
-		specialKeysByName.put(SpecialKey.NUMPAD_ENTER.toString(),
-				SpecialKey.NUMPAD_ENTER);
-		specialKeysByName.put(SpecialKey.NUMPAD_EQUAL.toString(),
-				SpecialKey.NUMPAD_EQUAL);
-		specialKeysByName.put(SpecialKey.NUMPAD_MULTIPLY.toString(),
-				SpecialKey.NUMPAD_MULTIPLY);
-		specialKeysByName.put(SpecialKey.NUMPAD_SUBTRACT.toString(),
-				SpecialKey.NUMPAD_SUBTRACT);
-		specialKeysByName.put(SpecialKey.HOME.toString(), SpecialKey.HOME);
-		specialKeysByName.put(SpecialKey.INSERT.toString(), SpecialKey.INSERT);
-		specialKeysByName.put(SpecialKey.PAGE_DOWN.toString(),
-				SpecialKey.PAGE_DOWN);
-		specialKeysByName
-				.put(SpecialKey.PAGE_UP.toString(), SpecialKey.PAGE_UP);
-		specialKeysByName.put(SpecialKey.PAUSE.toString(), SpecialKey.PAUSE);
-		specialKeysByName.put(SpecialKey.PRINT_SCREEN.toString(),
-				SpecialKey.PRINT_SCREEN);
-		specialKeysByName.put(SpecialKey.SCROLL_LOCK.toString(),
-				SpecialKey.SCROLL_LOCK);
-	}
-
-	/**
-	 * Constructs an instance of <code>SpecialKey</code> given a name.
-	 * 
-	 * @param key
-	 *            The key to be wrapped.
-	 */
-	private SpecialKey(final int key) {
-		super(key);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/package.html
deleted file mode 100644
index b986f5e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/keys/package.html
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java
deleted file mode 100755
index c8e14a5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * ContributionFactories are used by the IMenuService to populate
- * ContributionManagers. In {@link #createContributionItems(IServiceLocator, IContributionRoot)}
- * you fill in the additions List with {@link IContributionItem} to be inserted at this
- * factory's location. For example:
- * <p>
- * 
- * <pre>
- * AbstractContributionFactory contributions = new AbstractContributionFactory(
- * 		&quot;menu:org.eclipse.ui.tests.api.MenuTestHarness?after=additions&quot;) {
- * 	public void createContributionItems(IMenuService menuService, List additions) {
- * 		CommandContributionItem item = new CommandContributionItem(
- * 				&quot;org.eclipse.ui.tests.menus.helloWorld&quot;,
- * 				&quot;org.eclipse.ui.tests.commands.enabledHelloWorld&quot;, null, null,
- * 				&quot;Say Hello&quot;, null);
- * 		additions.add(item);
- * 		item = new CommandContributionItem(
- * 				&quot;org.eclipse.ui.tests.menus.refresh&quot;,
- * 				&quot;org.eclipse.ui.tests.commands.refreshView&quot;, null, null,
- * 				&quot;Refresh&quot;, null);
- * 		menuService.registerVisibleWhen(item, new MyActiveContextExpression(
- * 				&quot;org.eclipse.ui.tests.myview.context&quot;));
- * 		additions.add(item);
- * 	}
- * 
- * 	public void releaseContributionItems(IMenuService menuService, List items) {
- * 		// we have nothing to do
- * 	}
- * };
- * IMenuService service = (IMenuService) PlatformUI.getWorkbench().getService(
- * 		IMenuService.class);
- * service.addContributionFactory(contributions);
- * </pre>
- * 
- * </p>
- * <p>
- * Only the abstract methods may be implemented.
- * </p>
- * 
- * @since 3.3
- * @see org.eclipse.ui.menus.IMenuService
- * @see org.eclipse.jface.action.MenuManager
- * @see org.eclipse.jface.action.ToolBarManager
- */
-public abstract class AbstractContributionFactory {
-	private String location = null;
-	private String namespace;
-
-	/**
-	 * The contribution factories must be instantiated with their location,
-	 * which which specifies the contributions insertion location.
-	 * 
-	 * @param location
-	 *            the addition location in Menu API URI format. It must not be
-	 *            <code>null</code>.
-	 * @param namespace
-	 *            the namespace for this contribution. May be <code>null</code>.
-	 * @see #getNamespace()
-	 */
-	public AbstractContributionFactory(String location, String namespace) {
-		this.location = location;
-		this.namespace = namespace;
-	}
-
-	/**
-	 * Return the location as a String.
-	 * 
-	 * @return the location - never <code>null</code>.
-	 */
-	public String getLocation() {
-		return location;
-	}
-
-	/**
-	 * This factory should create the IContributionItems that it wants to
-	 * contribute, and add them to the additions list. The menu service will
-	 * call this method at the appropriate time. It should always return new
-	 * instances of its contributions in the additions list.
-	 * <p>
-	 * This method is not meant to be called by clients. It will be called by
-	 * the menu service at the appropriate time.
-	 * </p>
-	 * 
-	 * @param serviceLocator
-	 *            a service locator that may be used in the construction of
-	 *            items created by this factory
-	 * @param additions
-	 *            A {@link IContributionRoot} supplied by the framework. It will
-	 *            never be <code>null</code>.
-	 * @see org.eclipse.ui.menus.CommandContributionItem
-	 * @see org.eclipse.jface.action.MenuManager
-	 */
-	public abstract void createContributionItems(IServiceLocator serviceLocator,
-			IContributionRoot additions);
-
-	/**
-	 * Return the namespace for this cache. This corresponds to the plug-in that
-	 * is contributing this factory.
-	 * 
-	 * @return the namespace the namespace of this factory
-	 */
-	public String getNamespace() {
-		return namespace;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java
deleted file mode 100644
index 7f82247..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractWorkbenchTrimWidget.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.jface.menus.AbstractTrimWidget;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Extension for trim widgets contributed to the workbench.
- * The extension point handler will call the <code>init</code>
- * method to inform the contributed widgets as to which
- * workbench window they're currently being hosted in.
- * 
- * @since 3.2
- *
- */
-public abstract class AbstractWorkbenchTrimWidget extends AbstractTrimWidget implements IWorkbenchWidget {
-	
-	private IWorkbenchWindow wbWindow;
-
-	/**
-	 * 
-	 */
-	public AbstractWorkbenchTrimWidget() {
-		super();
-	}
-	
-
-	/**
-	 * Define the IWorkbenchWindow that this trim is being hosted in.
-	 * Note that subclasses may extend but should not override. The
-	 * base implementation caches the value for access through the
-	 * <code>getWorkbenchWindow</code> method.
-	 * 
-	 * @see org.eclipse.ui.menus.IWorkbenchWidget#init(org.eclipse.ui.IWorkbenchWindow)
-	 */
-	public void init(IWorkbenchWindow workbenchWindow) {
-		wbWindow = workbenchWindow;
-	}
-	
-	/**
-	 * Convenience method to get the IWorkbenchWindow that is
-	 * hosting this widget.
-	 * 
-	 * @return The IWorkbenchWindow hosting this widget.
-	 */
-	public IWorkbenchWindow getWorkbenchWindow() {
-		return wbWindow;
-	}
-	
-	/**
-	 * @return The preferred size of this item
-	 * @since 3.3
-	 */
-	public Point getPreferredSize() {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
deleted file mode 100755
index 92671e3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
+++ /dev/null
@@ -1,765 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.menus;
-
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.CommandEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.ICommandListener;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.commands.ICommandImageService;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.commands.IElementReference;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.help.IWorkbenchHelpSystem;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.keys.IBindingService;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * A contribution item which delegates to a command. It can be used in {@link
- * AbstractContributionFactory#createContributionItems(IServiceLocator,
- * IContributionRoot)}.
- * <p>
- * It currently supports placement in menus and toolbars.
- * </p>
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * 
- * @since 3.3
- */
-public final class CommandContributionItem extends ContributionItem {
-	/**
-	 * A push button tool item or menu item.
-	 */
-	public static final int STYLE_PUSH = SWT.PUSH;
-
-	/**
-	 * A checked tool item or menu item.
-	 */
-	public static final int STYLE_CHECK = SWT.CHECK;
-
-	/**
-	 * A radio-button style menu item.
-	 */
-	public static final int STYLE_RADIO = SWT.RADIO;
-
-	/**
-	 * A ToolBar pulldown item.
-	 */
-	public static final int STYLE_PULLDOWN = SWT.DROP_DOWN;
-
-	/**
-	 * Mode bit: Show text on tool items or buttons, even if an image is
-	 * present. If this mode bit is not set, text is only shown on tool items if
-	 * there is no image present.
-	 * 
-	 * @since 3.4
-	 */
-	public static int MODE_FORCE_TEXT = 1;
-
-	private LocalResourceManager localResourceManager;
-
-	private Listener menuItemListener;
-
-	private Widget widget;
-
-	private IMenuService menuService;
-
-	private ICommandService commandService;
-
-	private IHandlerService handlerService;
-
-	private IBindingService bindingService;
-
-	private ParameterizedCommand command;
-
-	private ImageDescriptor icon;
-
-	private String label;
-
-	private String tooltip;
-
-	private ImageDescriptor disabledIcon;
-
-	private ImageDescriptor hoverIcon;
-
-	private String mnemonic;
-
-	private IElementReference elementRef;
-
-	private boolean checkedState;
-
-	private int style;
-
-	private ICommandListener commandListener;
-
-	private String dropDownMenuOverride;
-
-	private IWorkbenchHelpSystem workbenchHelpSystem;
-
-	private String helpContextId;
-
-	private int mode = 0;
-
-	/**
-	 * This is <code>true</code> when the menu contribution's visibleWhen
-	 * checkEnabled attribute is <code>true</code>.
-	 */
-	private boolean visibleEnabled;
-
-	/**
-	 * Create a CommandContributionItem to place in a ContributionManager.
-	 * 
-	 * @param contributionParameters
-	 * 		parameters necessary to render this contribution item.
-	 * @since 3.4
-	 */
-	public CommandContributionItem(
-			CommandContributionItemParameter contributionParameters) {
-		super(contributionParameters.id);
-
-		this.icon = contributionParameters.icon;
-		this.disabledIcon = contributionParameters.disabledIcon;
-		this.hoverIcon = contributionParameters.hoverIcon;
-		this.label = contributionParameters.label;
-		this.mnemonic = contributionParameters.mnemonic;
-		this.tooltip = contributionParameters.tooltip;
-		this.style = contributionParameters.style;
-		this.helpContextId = contributionParameters.helpContextId;
-		this.visibleEnabled = contributionParameters.visibleEnabled;
-		this.mode = contributionParameters.mode;
-
-		menuService = (IMenuService) contributionParameters.serviceLocator
-				.getService(IMenuService.class);
-		commandService = (ICommandService) contributionParameters.serviceLocator
-				.getService(ICommandService.class);
-		handlerService = (IHandlerService) contributionParameters.serviceLocator
-				.getService(IHandlerService.class);
-		bindingService = (IBindingService) contributionParameters.serviceLocator
-				.getService(IBindingService.class);
-		createCommand(contributionParameters.commandId,
-				contributionParameters.parameters);
-
-		if (command != null) {
-			try {
-				UIElement callback = new UIElement(
-						contributionParameters.serviceLocator) {
-
-					public void setChecked(boolean checked) {
-						CommandContributionItem.this.setChecked(checked);
-					}
-
-					public void setDisabledIcon(ImageDescriptor desc) {
-						CommandContributionItem.this.setDisabledIcon(desc);
-					}
-
-					public void setHoverIcon(ImageDescriptor desc) {
-						CommandContributionItem.this.setHoverIcon(desc);
-					}
-
-					public void setIcon(ImageDescriptor desc) {
-						CommandContributionItem.this.setIcon(desc);
-					}
-
-					public void setText(String text) {
-						CommandContributionItem.this.setText(text);
-					}
-
-					public void setTooltip(String text) {
-						CommandContributionItem.this.setTooltip(text);
-					}
-
-					public void setDropDownId(String id) {
-						dropDownMenuOverride = id;
-					}
-				};
-				elementRef = commandService.registerElementForCommand(command,
-						callback);
-				command.getCommand().addCommandListener(getCommandListener());
-				setImages(contributionParameters.serviceLocator,
-						contributionParameters.iconStyle);
-
-				if (contributionParameters.helpContextId == null) {
-					try {
-						this.helpContextId = commandService
-								.getHelpContextId(contributionParameters.commandId);
-					} catch (NotDefinedException e) {
-						// it's OK to not have a helpContextId
-					}
-				}
-				IWorkbenchLocationService wls = (IWorkbenchLocationService) contributionParameters.serviceLocator
-						.getService(IWorkbenchLocationService.class);
-				final IWorkbench workbench = wls.getWorkbench();
-				if (workbench != null && helpContextId != null) {
-					this.workbenchHelpSystem = workbench.getHelpSystem();
-				}
-			} catch (NotDefinedException e) {
-				WorkbenchPlugin
-						.log("Unable to register menu item \"" + getId() //$NON-NLS-1$
-								+ "\", command \"" + contributionParameters.commandId + "\" not defined"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-	}
-
-	/**
-	 * Create a CommandContributionItem to place in a ContributionManager.
-	 * 
-	 * @param serviceLocator
-	 * 		a service locator that is most appropriate for this contribution.
-	 * 		Typically the local {@link IWorkbenchWindow} or {@link
-	 * 		IWorkbenchPartSite} will be sufficient.
-	 * @param id
-	 * 		The id for this item. May be <code>null</code>. Items without an id
-	 * 		cannot be referenced later.
-	 * @param commandId
-	 * 		A command id for a defined command. Must not be <code>null</code>.
-	 * @param parameters
-	 * 		A map of strings to strings which represent parameter names to
-	 * 		values. The parameter names must match those in the command
-	 * 		definition.
-	 * @param icon
-	 * 		An icon for this item. May be <code>null</code>.
-	 * @param disabledIcon
-	 * 		A disabled icon for this item. May be <code>null</code>.
-	 * @param hoverIcon
-	 * 		A hover icon for this item. May be <code>null</code>.
-	 * @param label
-	 * 		A label for this item. May be <code>null</code>.
-	 * @param mnemonic
-	 * 		A mnemonic for this item to be applied to the label. May be
-	 * 		<code>null</code>.
-	 * @param tooltip
-	 * 		A tooltip for this item. May be <code>null</code>. Tooltips are
-	 * 		currently only valid for toolbar contributions.
-	 * @param style
-	 * 		The style of this menu contribution. See the STYLE_* contants.
-	 * @deprecated create the {@link CommandContributionItemParameter}
-	 */
-	public CommandContributionItem(IServiceLocator serviceLocator, String id,
-			String commandId, Map parameters, ImageDescriptor icon,
-			ImageDescriptor disabledIcon, ImageDescriptor hoverIcon,
-			String label, String mnemonic, String tooltip, int style) {
-		this(new CommandContributionItemParameter(serviceLocator, id,
-				commandId, parameters, icon, disabledIcon, hoverIcon, label,
-				mnemonic, tooltip, style, null, false));
-	}
-
-	private void setImages(IServiceLocator locator, String iconStyle) {
-		if (icon == null) {
-			ICommandImageService service = (ICommandImageService) locator
-					.getService(ICommandImageService.class);
-			icon = service.getImageDescriptor(command.getId(),
-					ICommandImageService.TYPE_DEFAULT, iconStyle);
-			disabledIcon = service.getImageDescriptor(command.getId(),
-					ICommandImageService.TYPE_DISABLED, iconStyle);
-			hoverIcon = service.getImageDescriptor(command.getId(),
-					ICommandImageService.TYPE_HOVER, iconStyle);
-		}
-	}
-
-	private ICommandListener getCommandListener() {
-		if (commandListener == null) {
-			commandListener = new ICommandListener() {
-				public void commandChanged(CommandEvent commandEvent) {
-					if (commandEvent.isHandledChanged()
-							|| commandEvent.isEnabledChanged()
-							|| commandEvent.isDefinedChanged()) {
-						updateCommandProperties(commandEvent);
-					}
-				}
-			};
-		}
-		return commandListener;
-	}
-
-	private void updateCommandProperties(final CommandEvent commandEvent) {
-		if (commandEvent.isHandledChanged()) {
-			dropDownMenuOverride = null;
-		}
-		if (widget == null || widget.isDisposed()) {
-			return;
-		}
-		Display display = widget.getDisplay();
-		Runnable update = new Runnable() {
-			public void run() {
-				if (commandEvent.getCommand().isDefined()) {
-					update(null);
-				}
-				if (commandEvent.isEnabledChanged()
-						|| commandEvent.isHandledChanged()) {
-					if (visibleEnabled) {
-						IContributionManager parent = getParent();
-						if (parent != null) {
-							parent.update(true);
-						}
-					}
-				}
-			}
-		};
-		if (display.getThread() == Thread.currentThread()) {
-			update.run();
-		} else {
-			display.asyncExec(update);
-		}
-	}
-
-	ParameterizedCommand getCommand() {
-		return command;
-	}
-
-	void createCommand(String commandId, Map parameters) {
-		if (commandId == null) {
-			WorkbenchPlugin.log("Unable to create menu item \"" + getId() //$NON-NLS-1$
-					+ "\", no command id"); //$NON-NLS-1$
-			return;
-		}
-		Command cmd = commandService.getCommand(commandId);
-		if (!cmd.isDefined()) {
-			WorkbenchPlugin.log("Unable to create menu item \"" + getId() //$NON-NLS-1$
-					+ "\", command \"" + commandId + "\" not defined"); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		command = ParameterizedCommand.generateCommand(cmd, parameters);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets
-	 * .Menu, int)
-	 */
-	public void fill(Menu parent, int index) {
-		if (command == null) {
-			return;
-		}
-		if (widget != null || parent == null) {
-			return;
-		}
-
-		// Menus don't support the pulldown style
-		int tmpStyle = style;
-		if (tmpStyle == STYLE_PULLDOWN)
-			tmpStyle = STYLE_PUSH;
-
-		MenuItem item = null;
-		if (index >= 0) {
-			item = new MenuItem(parent, tmpStyle, index);
-		} else {
-			item = new MenuItem(parent, tmpStyle);
-		}
-		item.setData(this);
-		if (workbenchHelpSystem != null) {
-			workbenchHelpSystem.setHelp(item, helpContextId);
-		}
-		item.addListener(SWT.Dispose, getItemListener());
-		item.addListener(SWT.Selection, getItemListener());
-		widget = item;
-
-		update(null);
-		updateIcons();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets
-	 * .ToolBar, int)
-	 */
-	public void fill(ToolBar parent, int index) {
-		if (command == null) {
-			return;
-		}
-		if (widget != null || parent == null) {
-			return;
-		}
-
-		ToolItem item = null;
-		if (index >= 0) {
-			item = new ToolItem(parent, style, index);
-		} else {
-			item = new ToolItem(parent, style);
-		}
-
-		item.setData(this);
-
-		item.addListener(SWT.Selection, getItemListener());
-		item.addListener(SWT.Dispose, getItemListener());
-		widget = item;
-
-		update(null);
-		updateIcons();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.ContributionItem#update()
-	 */
-	public void update() {
-		update(null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.ContributionItem#update(java.lang.String)
-	 */
-	public void update(String id) {
-		if (widget != null) {
-			if (widget instanceof MenuItem) {
-				MenuItem item = (MenuItem) widget;
-
-				String text = label;
-				if (text == null) {
-					if (command != null) {
-						try {
-							text = command.getCommand().getName();
-						} catch (NotDefinedException e) {
-							WorkbenchPlugin.log("Update item failed " //$NON-NLS-1$
-									+ getId(), e);
-						}
-					}
-				}
-				text = updateMnemonic(text);
-
-				String keyBindingText = null;
-				if (command != null) {
-					TriggerSequence binding = bindingService
-							.getBestActiveBindingFor(command);
-					if (binding != null) {
-						keyBindingText = binding.format();
-					}
-				}
-				if (text != null) {
-					if (keyBindingText == null) {
-						item.setText(text);
-					} else {
-						item.setText(text + '\t' + keyBindingText);
-					}
-				}
-
-				if (item.getSelection() != checkedState) {
-					item.setSelection(checkedState);
-				}
-
-				boolean shouldBeEnabled = isEnabled();
-				if (item.getEnabled() != shouldBeEnabled) {
-					item.setEnabled(shouldBeEnabled);
-				}
-			} else if (widget instanceof ToolItem) {
-				ToolItem item = (ToolItem) widget;
-
-				String text = label;
-				if (text == null) {
-					if (command != null) {
-						try {
-							text = command.getCommand().getName();
-						} catch (NotDefinedException e) {
-							WorkbenchPlugin.log("Update item failed " //$NON-NLS-1$
-									+ getId(), e);
-						}
-					}
-				}
-
-				if ((icon == null || (mode & MODE_FORCE_TEXT) == MODE_FORCE_TEXT)
-						&& text != null) {
-					item.setText(text);
-				}
-
-				if (tooltip != null)
-					item.setToolTipText(tooltip);
-				else {
-					if (text != null) {
-						item.setToolTipText(text);
-					}
-				}
-
-				if (item.getSelection() != checkedState) {
-					item.setSelection(checkedState);
-				}
-
-				boolean shouldBeEnabled = isEnabled();
-				if (item.getEnabled() != shouldBeEnabled) {
-					item.setEnabled(shouldBeEnabled);
-				}
-			}
-		}
-	}
-
-	private String updateMnemonic(String s) {
-		if (mnemonic == null || s == null) {
-			return s;
-		}
-		int idx = s.indexOf(mnemonic);
-		if (idx == -1) {
-			return s;
-		}
-
-		return s.substring(0, idx) + '&' + s.substring(idx);
-	}
-
-	private void handleWidgetDispose(Event event) {
-		if (event.widget == widget) {
-			widget.removeListener(SWT.Selection, getItemListener());
-			widget.removeListener(SWT.Dispose, getItemListener());
-			widget = null;
-			disposeOldImages();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.ContributionItem#dispose()
-	 */
-	public void dispose() {
-		if (widget != null) {
-			widget.dispose();
-			widget = null;
-		}
-		if (elementRef != null) {
-			commandService.unregisterElement(elementRef);
-			elementRef = null;
-		}
-		if (commandListener != null) {
-			command.getCommand().removeCommandListener(commandListener);
-			commandListener = null;
-		}
-		command = null;
-		commandService = null;
-		bindingService = null;
-		menuService = null;
-		handlerService = null;
-		disposeOldImages();
-		super.dispose();
-	}
-
-	private void disposeOldImages() {
-		if (localResourceManager != null) {
-			localResourceManager.dispose();
-			localResourceManager = null;
-		}
-	}
-
-	private Listener getItemListener() {
-		if (menuItemListener == null) {
-			menuItemListener = new Listener() {
-				public void handleEvent(Event event) {
-					switch (event.type) {
-					case SWT.Dispose:
-						handleWidgetDispose(event);
-						break;
-					case SWT.Selection:
-						if (event.widget != null) {
-							handleWidgetSelection(event);
-						}
-						break;
-					}
-				}
-			};
-		}
-		return menuItemListener;
-	}
-
-	private void handleWidgetSelection(Event event) {
-		// Special check for ToolBar dropdowns...
-		if (openDropDownMenu(event))
-			return;
-
-		if ((style & (SWT.TOGGLE | SWT.CHECK)) != 0) {
-			if (event.widget instanceof ToolItem) {
-				checkedState = ((ToolItem) event.widget).getSelection();
-			} else if (event.widget instanceof MenuItem) {
-				checkedState = ((MenuItem) event.widget).getSelection();
-			}
-		}
-
-		try {
-			handlerService.executeCommand(command, event);
-		} catch (ExecutionException e) {
-			WorkbenchPlugin.log("Failed to execute item " //$NON-NLS-1$
-					+ getId(), e);
-		} catch (NotDefinedException e) {
-			WorkbenchPlugin.log("Failed to execute item " //$NON-NLS-1$
-					+ getId(), e);
-		} catch (NotEnabledException e) {
-			WorkbenchPlugin.log("Failed to execute item " //$NON-NLS-1$
-					+ getId(), e);
-		} catch (NotHandledException e) {
-			WorkbenchPlugin.log("Failed to execute item " //$NON-NLS-1$
-					+ getId(), e);
-		}
-	}
-
-	/**
-	 * Determines if the selection was on the dropdown affordance and, if so,
-	 * opens the drop down menu (populated using the same id as this item...
-	 * 
-	 * @param event
-	 * 		The <code>SWT.Selection</code> event to be tested
-	 * 
-	 * @return <code>true</code> iff a drop down menu was opened
-	 */
-	private boolean openDropDownMenu(Event event) {
-		Widget item = event.widget;
-		if (item != null) {
-			int style = item.getStyle();
-			if ((style & SWT.DROP_DOWN) != 0) {
-				if (event.detail == 4) { // on drop-down button
-					ToolItem ti = (ToolItem) item;
-
-					final MenuManager menuManager = new MenuManager();
-					Menu menu = menuManager.createContextMenu(ti.getParent());
-					if (workbenchHelpSystem != null) {
-						workbenchHelpSystem.setHelp(menu, helpContextId);
-					}
-					menuManager.addMenuListener(new IMenuListener() {
-						public void menuAboutToShow(IMenuManager manager) {
-							String id = getId();
-							if (dropDownMenuOverride != null) {
-								id = dropDownMenuOverride;
-							}
-							menuService.populateContributionManager(
-									menuManager, "menu:" + id); //$NON-NLS-1$
-						}
-					});
-
-					// position the menu below the drop down item
-					Point point = ti.getParent().toDisplay(
-							new Point(event.x, event.y));
-					menu.setLocation(point.x, point.y); // waiting for SWT
-					// 0.42
-					menu.setVisible(true);
-					return true; // we don't fire the action
-				}
-			}
-		}
-
-		return false;
-	}
-
-	private void setIcon(ImageDescriptor desc) {
-		icon = desc;
-		updateIcons();
-	}
-
-	private void updateIcons() {
-		if (widget instanceof MenuItem) {
-			MenuItem item = (MenuItem) widget;
-			LocalResourceManager m = new LocalResourceManager(JFaceResources
-					.getResources());
-			item.setImage(icon == null ? null : m.createImage(icon));
-			disposeOldImages();
-			localResourceManager = m;
-		} else if (widget instanceof ToolItem) {
-			ToolItem item = (ToolItem) widget;
-			LocalResourceManager m = new LocalResourceManager(JFaceResources
-					.getResources());
-			item.setDisabledImage(disabledIcon == null ? null : m
-					.createImage(disabledIcon));
-			item.setHotImage(hoverIcon == null ? null : m
-					.createImage(hoverIcon));
-			item.setImage(icon == null ? null : m.createImage(icon));
-			disposeOldImages();
-			localResourceManager = m;
-		}
-	}
-
-	private void setText(String text) {
-		label = text;
-		update(null);
-	}
-
-	private void setChecked(boolean checked) {
-		if (checkedState == checked) {
-			return;
-		}
-		checkedState = checked;
-		if (widget instanceof MenuItem) {
-			((MenuItem) widget).setSelection(checkedState);
-		} else if (widget instanceof ToolItem) {
-			((ToolItem) widget).setSelection(checkedState);
-		}
-	}
-
-	private void setTooltip(String text) {
-		tooltip = text;
-		if (widget instanceof ToolItem) {
-			((ToolItem) widget).setToolTipText(text);
-		}
-	}
-
-	private void setDisabledIcon(ImageDescriptor desc) {
-		disabledIcon = desc;
-		updateIcons();
-	}
-
-	private void setHoverIcon(ImageDescriptor desc) {
-		hoverIcon = desc;
-		updateIcons();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.action.ContributionItem#isEnabled()
-	 */
-	public boolean isEnabled() {
-		if (command != null) {
-			command.getCommand().setEnabled(menuService.getCurrentState());
-			return command.getCommand().isEnabled();
-		}
-		return false;
-	}
-
-	/**
-	 * @since 3.4
-	 */
-	public boolean isVisible() {
-		if (visibleEnabled) {
-			return super.isVisible() && isEnabled();
-		}
-		return super.isVisible();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java
deleted file mode 100644
index daf4ee6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * A help class for the various parameters that can be used with command
- * contributions. Mandatory parameters are in the constructor, and public fields
- * can be set to fill in other parameters.
- * 
- * @since 3.4
- */
-public class CommandContributionItemParameter {
-	/**
-	 * a service locator that is most appropriate for this contribution.
-	 * Typically the local {@link IWorkbenchWindow} or
-	 * {@link IWorkbenchPartSite} will be sufficient. Must not be
-	 * <code>null</code>.
-	 */
-	public IServiceLocator serviceLocator;
-
-	/**
-	 * The id for this item. May be <code>null</code>. Items without an id
-	 * cannot be referenced later.
-	 */
-	public String id;
-
-	/**
-	 * A command id for a defined command. Must not be <code>null</code>.
-	 */
-	public String commandId;
-
-	/**
-	 * A map of strings to strings which represent parameter names to values.
-	 * The parameter names must match those in the command definition. May be
-	 * <code>null</code>
-	 */
-	public Map parameters;
-
-	/**
-	 * An icon for this item. May be <code>null</code>.
-	 */
-	public ImageDescriptor icon;
-
-	/**
-	 * A disabled icon for this item. May be <code>null</code>.
-	 */
-	public ImageDescriptor disabledIcon;
-
-	/**
-	 * A hover icon for this item. May be <code>null</code>.
-	 */
-	public ImageDescriptor hoverIcon;
-
-	/**
-	 * A label for this item. May be <code>null</code>.
-	 */
-	public String label;
-
-	/**
-	 * A mnemonic for this item to be applied to the label. May be
-	 * <code>null</code>.
-	 */
-	public String mnemonic;
-
-	/**
-	 * A tooltip for this item. May be <code>null</code>. Tooltips are
-	 * currently only valid for toolbar contributions.
-	 */
-	public String tooltip;
-
-	/**
-	 * The style of this menu contribution. See the CommandContributionItem
-	 * STYLE_* contants.
-	 */
-	public int style;
-
-	/**
-	 * The help context id to be applied to this contribution. May be
-	 * <code>null</code>
-	 */
-	public String helpContextId;
-
-	/**
-	 * The icon style to use. May be <code>null</code> for default style.
-	 * 
-	 * @see org.eclipse.ui.commands.ICommandImageService
-	 */
-	public String iconStyle;
-
-	/**
-	 * The visibility tracking for a menu contribution.
-	 */
-	public boolean visibleEnabled;
-
-	/**
-	 * Any number of mode bits, like
-	 * {@link CommandContributionItem#MODE_FORCE_TEXT}.
-	 */
-	public int mode;
-
-	/**
-	 * Create the parameter object. Nullable attributes can be set directly.
-	 * 
-	 * @param serviceLocator
-	 *            a service locator that is most appropriate for this
-	 *            contribution. Typically the local {@link IWorkbenchWindow} or
-	 *            {@link IWorkbenchPartSite} will be sufficient. Must not be
-	 *            <code>null</code>.
-	 * @param id
-	 *            The id for this item. May be <code>null</code>. Items
-	 *            without an id cannot be referenced later.
-	 * @param commandId
-	 *            A command id for a defined command. Must not be
-	 *            <code>null</code>.
-	 * @param style
-	 *            The style of this menu contribution. See the STYLE_* contants.
-	 */
-	public CommandContributionItemParameter(IServiceLocator serviceLocator,
-			String id, String commandId, int style) {
-		this.serviceLocator = serviceLocator;
-		this.id = id;
-		this.commandId = commandId;
-		this.style = style;
-	}
-
-	/**
-	 * Build the parameter object.
-	 * <p>
-	 * <b>Note:</b> This method should not be called outside the framework.
-	 * </p>
-	 * 
-	 * @param serviceLocator
-	 *            a service locator that is most appropriate for this
-	 *            contribution. Typically the local {@link IWorkbenchWindow} or
-	 *            {@link IWorkbenchPartSite} will be sufficient. Must not be
-	 *            <code>null</code>.
-	 * @param id
-	 *            The id for this item. May be <code>null</code>. Items
-	 *            without an id cannot be referenced later.
-	 * @param commandId
-	 *            A command id for a defined command. Must not be
-	 *            <code>null</code>.
-	 * @param parameters
-	 *            A map of strings to strings which represent parameter names to
-	 *            values. The parameter names must match those in the command
-	 *            definition. May be <code>null</code>
-	 * @param icon
-	 *            An icon for this item. May be <code>null</code>.
-	 * @param disabledIcon
-	 *            A disabled icon for this item. May be <code>null</code>.
-	 * @param hoverIcon
-	 *            A hover icon for this item. May be <code>null</code>.
-	 * @param label
-	 *            A label for this item. May be <code>null</code>.
-	 * @param mnemonic
-	 *            A mnemonic for this item to be applied to the label. May be
-	 *            <code>null</code>.
-	 * @param tooltip
-	 *            A tooltip for this item. May be <code>null</code>. Tooltips
-	 *            are currently only valid for toolbar contributions.
-	 * @param style
-	 *            The style of this menu contribution. See the STYLE_* contants.
-	 * @param helpContextId
-	 *            the help context id to be applied to this contribution. May be
-	 *            <code>null</code>
-	 * @param visibleEnabled
-	 *            Visibility tracking for the menu contribution.
-	 */
-	public CommandContributionItemParameter(IServiceLocator serviceLocator,
-			String id, String commandId, Map parameters, ImageDescriptor icon,
-			ImageDescriptor disabledIcon, ImageDescriptor hoverIcon,
-			String label, String mnemonic, String tooltip, int style,
-			String helpContextId, boolean visibleEnabled) {
-		this.serviceLocator = serviceLocator;
-		this.id = id;
-		this.commandId = commandId;
-		this.parameters = parameters;
-		this.icon = icon;
-		this.disabledIcon = disabledIcon;
-		this.hoverIcon = hoverIcon;
-		this.label = label;
-		this.mnemonic = mnemonic;
-		this.tooltip = tooltip;
-		this.style = style;
-		this.helpContextId = helpContextId;
-		this.visibleEnabled = visibleEnabled;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IContributionRoot.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IContributionRoot.java
deleted file mode 100644
index c0916ca..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IContributionRoot.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-
-/**
- * Instances of this interface represent a position in the contribution
- * hierarchy into which {@link AbstractContributionFactory} instances may insert
- * elements. Instances of this interface are provided by the platform and this
- * interface should <b>NOT</b> be implemented by clients.
- * 
- * 
- * @since 3.3
- */
-public interface IContributionRoot {
-	/**
-	 * Adds a given contribution item with provided visibility expression and
-	 * kill-switch filtering as a direct child of this container. This should be
-	 * called for all top-level elements created in
-	 * {@link AbstractContributionFactory#createContributionItems(org.eclipse.ui.services.IServiceLocator, IContributionRoot)}
-	 * 
-	 * @param item
-	 *            the item to add
-	 * @param visibleWhen
-	 *            the visibility expression. May be <code>null</code>.
-	 */
-	public void addContributionItem(IContributionItem item,
-			Expression visibleWhen);
-
-	/**
-	 * Registers visibilty for arbitrary {@link IContributionItem} instances
-	 * that are <b>NOT</b> direct children of this container. Ie: children of a
-	 * {@link IContributionManager} that has been previously registered with a
-	 * call to {{@link #addContributionItem(IContributionItem, Expression)}.
-	 * 
-	 * @param item
-	 *            the item for which to register a visibility clause
-	 * @param visibleWhen
-	 *            the visibility expression. May be <code>null</code> in which
-	 *            case this method is a no-op.
-	 */
-	public void registerVisibilityForChild(IContributionItem item,
-			Expression visibleWhen);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IMenuService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IMenuService.java
deleted file mode 100644
index dfca095..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IMenuService.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.menus;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.ui.services.IServiceWithSources;
-
-/**
- * <p>
- * Provides services related to the menu architecture within the workbench. It
- * can be used to contribute additional items to the menu, tool bar and status
- * line.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IMenuService service = (IMenuService) getSite().getService(IMenuService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @since 3.3
- */
-public interface IMenuService extends IServiceWithSources {
-
-	/**
-	 * Contribute and initialize the contribution factory. This should only be
-	 * called once per factory. After the call, the factory should be treated as
-	 * an unmodifiable object.
-	 * <p>
-	 * <b>Note:</b> factories should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param factory
-	 *            the contribution factory. Must not be <code>null</code>
-	 * @see #removeContributionFactory(AbstractContributionFactory)
-	 */
-	public void addContributionFactory(AbstractContributionFactory factory);
-
-	/**
-	 * Remove the contributed factory from the menu service. If the factory is
-	 * not contained by this service, this call does nothing.
-	 * 
-	 * @param factory
-	 *            the contribution factory to remove. Must not be
-	 *            <code>null</code>.
-	 */
-	public void removeContributionFactory(AbstractContributionFactory factory);
-
-	/**
-	 * Populate a <code>ContributionManager</code> at the specified starting
-	 * location with a set of <code>IContributionItems</code>s. It applies
-	 * <code>AbstractContributionFactory</code>s that are stored against the
-	 * provided location.
-	 * 
-	 * @param mgr
-	 *            The ContributionManager to populate
-	 * @param location
-	 *            The starting location to begin populating this contribution
-	 *            manager. The format is the Menu API URI format.
-	 * @see #releaseContributions(ContributionManager)
-	 */
-	public void populateContributionManager(ContributionManager mgr,
-			String location);
-
-	/**
-	 * Before calling dispose() on a ContributionManager populated by the menu
-	 * service, you must inform the menu service to release its contributions.
-	 * This takes care of unregistering any IContributionItems that have their
-	 * visibleWhen clause managed by this menu service.
-	 * 
-	 * @param mgr
-	 *            The manager that was populated by a call to
-	 *            {@link #populateContributionManager(ContributionManager, String)}
-	 */
-	public void releaseContributions(ContributionManager mgr);
-
-	/**
-	 * Get the current state of eclipse as seen by the menu service.
-	 * 
-	 * @return an IEvaluationContext containing state variables.
-	 * 
-	 * @see org.eclipse.ui.ISources
-	 * @see org.eclipse.ui.services.IEvaluationService
-	 */
-	public IEvaluationContext getCurrentState();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchContribution.java
deleted file mode 100644
index eb737d2..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchContribution.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Allow a menu contribution to be initialized with the appropriate service
- * locator.
- * 
- * @since 3.4
- */
-public interface IWorkbenchContribution {
-	/**
-	 * The service locator for this contribution. It will potentially exist
-	 * longer than the lifecycle of this specific contribution, so
-	 * ContributionItems should remove themselves from any listeners or services
-	 * in their dispose() calls.
-	 * 
-	 * @param serviceLocator
-	 *            the locator which services can be retrieved. Will not be
-	 *            <code>null</code>
-	 */
-	public void initialize(IServiceLocator serviceLocator);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchWidget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchWidget.java
deleted file mode 100644
index 88a8c02..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/IWorkbenchWidget.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.jface.menus.IWidget;
-import org.eclipse.ui.IWorkbenchWindow;
-
-
-/**
- * Interface used for IWidget's contributed to the
- * Workbench. Allows the contributed widget to be
- * informed as to which WorkbenchWindow it's being
- * hosted in.
- *
- * @see org.eclipse.jface.menus.IWidget
- *
- * @since 3.2
- */
-public interface IWorkbenchWidget extends IWidget {
-    /**
-     * Initializes this widget contribution by supplying the
-     * <code>IWorkbenchWindow</code> that it's being hosted in.
-     * <p>
-     * This method is called after the no argument constructor and
-     * before other methods are called.
-     * </p>
-     *
-     * @param workbenchWindow the current workbench
-     */
-    void init(IWorkbenchWindow workbenchWindow);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java
deleted file mode 100644
index 1c17de8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/MenuUtil.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-/**
- * Provides utilities and constants for use with the new menus API.
- * 
- * @since 3.3
- * 
- */
-public class MenuUtil {
-	/** Main Menu */
-	public final static String MAIN_MENU = "menu:org.eclipse.ui.main.menu"; //$NON-NLS-1$
-	/** Main ToolBar (CoolBar) */
-	public final static String MAIN_TOOLBAR = "toolbar:org.eclipse.ui.main.toolbar"; //$NON-NLS-1$
-
-	/** -Any- Popup Menu */
-	public final static String ANY_POPUP = "popup:org.eclipse.ui.popup.any"; //$NON-NLS-1$
-
-	/** Top Left Trim Area */
-	public final static String TRIM_COMMAND1 = "toolbar:org.eclipse.ui.trim.command1"; //$NON-NLS-1$
-	/** Top Right Trim Area */
-	public final static String TRIM_COMMAND2 = "toolbar:org.eclipse.ui.trim.command2"; //$NON-NLS-1$
-	/** Left Vertical Trim Area */
-	public final static String TRIM_VERTICAL1 = "toolbar:org.eclipse.ui.trim.vertical1"; //$NON-NLS-1$
-	/** Right Vertical Trim Area */
-	public final static String TRIM_VERTICAL2 = "toolbar:org.eclipse.ui.trim.vertical2"; //$NON-NLS-1$
-	/** Bottom (Status) Trim Area */
-	public final static String TRIM_STATUS = "toolbar:org.eclipse.ui.trim.status"; //$NON-NLS-1$
-
-	/**
-	 * Contributions of targets to this location will be included with the show
-	 * in menu.
-	 * 
-	 * @since 3.4
-	 */
-	public final static String SHOW_IN_MENU_ID = "popup:org.eclipse.ui.menus.showInMenu"; //$NON-NLS-1$
-
-	/**
-	 * @param id
-	 *            The menu's id
-	 * @return The locator URI for a menu with the given id
-	 */
-	public static String menuUri(String id) {
-		return "menu:" + id; //$NON-NLS-1$
-	}
-
-	/**
-	 * @param id
-	 *            The id of the menu
-	 * @param location
-	 *            The relative location specifier
-	 * @param refId
-	 *            The id of the menu element to be relative to
-	 * @return A location URI formatted with the given parameters
-	 */
-	public static String menuAddition(String id, String location, String refId) {
-		return menuUri(id) + '?' + location + '=' + refId;
-	}
-
-	/**
-	 * Convenience method to create a standard menu addition The resulting
-	 * string has the format: "menu:[id]?after=additions"
-	 * 
-	 * @param id
-	 *            The id of the root element to contribute to
-	 * @return The formatted string
-	 */
-	public static String menuAddition(String id) {
-		return menuAddition(id, "after", "additions"); //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-	/**
-	 * @param id
-	 *            The toolbar's id
-	 * @return The lcoation URI for a toolbar with the given id
-	 */
-	public static String toolbarUri(String id) {
-		return "toolbar:" + id; //$NON-NLS-1$
-	}
-
-	/**
-	 * @param id
-	 *            The id of the toolbar
-	 * @param location
-	 *            The relative location specifier
-	 * @param refId
-	 *            The id of the toolbar element to be relative to
-	 * @return A location URI formatted with the given parameters
-	 */
-	public static String toolbarAddition(String id, String location,
-			String refId) {
-		return toolbarUri(id) + '?' + location + '=' + refId;
-	}
-
-	/**
-	 * Convenience method to create a standard toolbar addition The resulting
-	 * string has the format: "toolbar:[id]?after=additions"
-	 * 
-	 * @param id
-	 *            The id of the root element to contribute to
-	 * @return The formatted string
-	 */
-	public static String toolbarAddition(String id) {
-		return toolbarAddition(id, "after", "additions"); //$NON-NLS-1$//$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java
deleted file mode 100755
index 4a79e57..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * Allow a command or application to provide feedback to a user through updating
- * a MenuItem or ToolItem. Initially used to update properties for UI elements
- * created by the CommandContributionItem.
- * <p>
- * This class may be extended by clients.
- * </p>
- * 
- * @since 3.3
- */
-public abstract class UIElement {
-
-	private IServiceLocator serviceLocator;
-
-	/**
-	 * Construct a new instance of this class keyed off of the provided service
-	 * locator.
-	 * 
-	 * @param serviceLocator
-	 *            the locator. May not be <code>null</code>.
-	 */
-	protected UIElement(IServiceLocator serviceLocator)
-			throws IllegalArgumentException {
-		if (serviceLocator == null)
-			throw new IllegalArgumentException();
-		this.serviceLocator = serviceLocator;
-	}
-
-	/**
-	 * Update the label on this UI element.
-	 * 
-	 * @param text
-	 *            The new label to display.
-	 */
-	public abstract void setText(String text);
-
-	/**
-	 * Update the tooltip on this UI element. Tooltips are currently only valid
-	 * for toolbar contributions.
-	 * 
-	 * @param text
-	 *            The new tooltip to display.
-	 */
-	public abstract void setTooltip(String text);
-
-	/**
-	 * Update the icon on this UI element.
-	 * 
-	 * @param desc
-	 *            The descriptor for the new icon to display.
-	 */
-	public abstract void setIcon(ImageDescriptor desc);
-
-	/**
-	 * Update the disabled icon on this UI element.
-	 * 
-	 * @param desc
-	 *            The descriptor for the new icon to display.
-	 */
-	public abstract void setDisabledIcon(ImageDescriptor desc);
-
-	/**
-	 * Update the hover icon on this UI element.
-	 * 
-	 * @param desc
-	 *            The descriptor for the new icon to display.
-	 */
-	public abstract void setHoverIcon(ImageDescriptor desc);
-
-	/**
-	 * Update the checked state on this UI element. For example, if this was a
-	 * toggle or radio button.
-	 * 
-	 * @param checked
-	 *            true to set toggle on
-	 */
-	public abstract void setChecked(boolean checked);
-
-	/**
-	 * Get the service locator scope in which this UI element resides. May not
-	 * be <code>null</code>.
-	 * 
-	 * <p>
-	 * The locator may be used to obtain services that are scoped in the same
-	 * way as the {@link UIElement}. Such services include but are not limited
-	 * to {@link IWorkbench}, {@link IWorkbenchWindow}, and
-	 * {@link IWorkbenchPartSite}. While this method may not return
-	 * <code>null</code> requests for any of these particular services may
-	 * return <code>null</code>.
-	 * </p>
-	 * 
-	 * @return the service locator for this element
-	 * @see IServiceLocator#getService(Class)
-	 */
-	public final IServiceLocator getServiceLocator() {
-		return serviceLocator;
-	}
-
-	/**
-	 * Set the menu contribution id to use. This is only applicable to menu
-	 * contributions that support a drop-down style menu. The default
-	 * implementation does nothing.
-	 * <p>
-	 * Example: element.setDropdownId("org.eclipse.ui.navigate.back.my.menu");
-	 * </p>
-	 * 
-	 * @param id
-	 *            used to populate the dropdown menu. Must not be
-	 *            <code>null</code>.
-	 */
-	public void setDropDownId(String id) {
-		// This does nothing.
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java
deleted file mode 100644
index ca71217..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/WorkbenchWindowControlContribution.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.menus;
-
-import org.eclipse.jface.action.ControlContribution;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.menus.InternalControlContribution;
-
-/**
- * Abstract base class from which all controls contributions to
- * the workbench through the 'org.eclipse.ui.menus' extension
- * point must derive.
- * <p>
- * The extends the {@link ControlContribution} by adding accessor
- * methods that provide extra state information about the placement
- * of the control:
- * <ul>
- * <li>getWorkbenchWindow() - indicates which workbench window this control
- * is being hosted by</li>
- * <li>getCurSide() - indicates which side of the workbench window the
- * control is being displayed on</li>
- * </ul>
- * </p>
- * 
- * @since 3.3
- *
- * @see ControlContribution
- */
-public abstract class WorkbenchWindowControlContribution extends InternalControlContribution {
-
-	/**
-	 * Default contstructor that allows the use of this class as
-	 * the basis for XML contributions and will be used by the
-	 * workbench implementation. This is public only by necessity
-	 * and should not be used outside of the workbench implemenation
-	 * code. 
-	 */
-	public WorkbenchWindowControlContribution() {
-		this("unknown ID"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Constructor for use by clients programmatically creating
-	 * control contributions in the workbench.
-	 * 
-	 * @param id The id of this contribution
-	 */
-	public WorkbenchWindowControlContribution(String id) {
-		super(id);
-	}
-
-	/**
-	 * @return Returns the workbench window currently hosting
-	 * the control.
-	 */
-	public final IWorkbenchWindow getWorkbenchWindow() {
-		return super.getWorkbenchWindow();
-	}
-
-	/**
-	 * @return Returns the side of the workbench window that the
-	 * control is currently being display on. This allows derivatives
-	 * to tailor their created control based on the orientation...
-	 */
-	public final int getCurSide() {
-		return super.getCurSide();
-	}
-	
-	public final int getOrientation() {
-		if (getCurSide() == SWT.LEFT || getCurSide() == SWT.RIGHT)
-			return SWT.VERTICAL;
-		
-		return SWT.HORIZONTAL;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/package.html
deleted file mode 100644
index af3889b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/package.html
+++ /dev/null
@@ -1,17 +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">
-<title>Package-level Javadoc</title>
-</head>
-
-<body>
-
-Provides the public API and default implementation for contributing menu
-and toolbars to the menu service.  Also for contributed Trim
-widgets.
-
-</body>
-
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/AdaptableList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/AdaptableList.java
deleted file mode 100644
index 9306f8e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/AdaptableList.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * A modifiable list of <code>IAdaptable</code> objects.
- * The list is adaptable to <code>IWorkbenchAdapter</code>, and can be used to
- * display an arbitrary set of adaptable objects in a viewer.
- * <p>
- * This class is not intended to be subclassed.
- * </p>
- * 
- * @since 3.0
- * @see org.eclipse.ui.model.IWorkbenchAdapter
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class AdaptableList extends WorkbenchAdapter implements IAdaptable {
-
-    protected List children = null;
-
-    /**
-     * Creates a new adaptable list. All of the elements in the list must 
-     * implement <code>IAdaptable</code>.
-     */
-    public AdaptableList() {
-        children = new ArrayList();
-    }
-
-    /**
-     * Creates a new adaptable list with the given initial capacity.
-     * All of the elements in the list must implement <code>IAdaptable</code>.
-     * 
-     * @param initialCapacity the initial capacity of the list
-     */
-    public AdaptableList(int initialCapacity) {
-        children = new ArrayList(initialCapacity);
-    }
-
-    /**
-     * Creates a new adaptable list containing the given children.
-     * 
-     * @param newChildren the list of children
-     */
-    public AdaptableList(IAdaptable[] newChildren) {
-        this(newChildren.length);
-        for (int i = 0; i < newChildren.length; i++) {
-            children.add(newChildren[i]);
-        }
-    }
-
-    /**
-     * Creates a new adaptable list containing the elements of the specified
-     * collection, in the order they are returned by the collection's iterator.
-     * All of the elements in the list must implement <code>IAdaptable</code>.
-     * 
-     * @param c the initial elements of this list (element type: 
-     * <code>IAdaptable</code>)
-     */
-    public AdaptableList(Collection c) {
-        this(c.size());
-        children.addAll(c);
-    }
-
-    /**
-     * Adds the given adaptable object to this list.  
-     * 
-     * @param adaptable the new element
-     * @return this list
-     */
-    public AdaptableList add(IAdaptable adaptable) {
-        Assert.isNotNull(adaptable);
-        children.add(adaptable);
-        return this;
-    }
-
-    /**
-     * Removes the given adaptable object from this list.
-     * 
-     * @param adaptable the element to remove
-     */
-    public void remove(IAdaptable adaptable) {
-        Assert.isNotNull(adaptable);
-        children.remove(adaptable);
-    }
-
-    /**
-     * Returns the number of children in this list.
-     * 
-     * @return the length of this list
-     */
-    public int size() {
-        return children.size();
-    }
-
-    /* (non-Javadoc)
-     * @see IAdaptable#getAdapter
-     */
-    public Object getAdapter(Class adapter) {
-        if (adapter == IWorkbenchAdapter.class) {
-            return this;
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see IWorkbenchAdapter
-     */
-    public Object[] getChildren(Object o) {
-        // @issue suspicious - does not reference parameter
-        return children.toArray();
-    }
-
-    /**
-     * Returns the elements in this list.
-     * 
-     * @return the elements in this list
-     */
-    public Object[] getChildren() {
-        return children.toArray();
-    }
-    
-    /**
-     * Return the elements in this list in an array of the given type.
-     * 
-     * @param type the type of the array to create
-     * @return the elements in the list
-     * @since 3.1
-     */
-    public Object[] getTypedChildren(Class type) {
-		return children.toArray((Object[]) Array.newInstance(type, children
-				.size()));
-	}
-
-    /* (non-javadoc)
-     * For debugging purposes only.
-     */
-    public String toString() {
-        return children.toString();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/BaseWorkbenchContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/BaseWorkbenchContentProvider.java
deleted file mode 100644
index 6803f26..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/BaseWorkbenchContentProvider.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Tree content provider for objects that can be adapted to the interface
- * {@link org.eclipse.ui.model.IWorkbenchAdapter IWorkbenchAdapter}.
- * <p>
- * This class may be instantiated, or subclassed.
- * </p>
- * 
- * @see IWorkbenchAdapter
- * @since 3.0
- */
-public class BaseWorkbenchContentProvider implements ITreeContentProvider {
-
-    /**
-     * Creates a new workbench content provider.
-     *
-     */
-    public BaseWorkbenchContentProvider() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContentProvider.
-     */
-    public void dispose() {
-        // do nothing
-    }
-
-    /**
-     * Returns the implementation of IWorkbenchAdapter for the given
-     * object.  Returns null if the adapter is not defined or the
-     * object is not adaptable.
-     * <p>
-     * </p>
-     * 
-     * @param element the element
-     * @return the corresponding workbench adapter object
-     */
-    protected IWorkbenchAdapter getAdapter(Object element) {
-        return (IWorkbenchAdapter)Util.getAdapter(element, IWorkbenchAdapter.class);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ITreeContentProvider.
-     */
-    public Object[] getChildren(Object element) {
-        IWorkbenchAdapter adapter = getAdapter(element);
-        if (adapter != null) {
-            return adapter.getChildren(element);
-        }
-        return new Object[0];
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IStructuredContentProvider.
-     */
-    public Object[] getElements(Object element) {
-        return getChildren(element);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ITreeContentProvider.
-     */
-    public Object getParent(Object element) {
-        IWorkbenchAdapter adapter = getAdapter(element);
-        if (adapter != null) {
-            return adapter.getParent(element);
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ITreeContentProvider.
-     */
-    public boolean hasChildren(Object element) {
-        return getChildren(element).length > 0;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IContentProvider.
-     */
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        // do nothing
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/ContributionComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/ContributionComparator.java
deleted file mode 100644
index 07a7b79..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/ContributionComparator.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.model;
-
-import java.util.Comparator;
-
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-
-/**
- * A ContributionComparator is capable of ordering
- * {@link IComparableContribution} instances, either as a
- * {@link ViewerComparator} (for {@link StructuredViewer}s) or as a traditional
- * {@link Comparator}.
- * 
- * This class orders contributions by first grouping by priority ({@link IComparableContribution#getPriority()})
- * and then by utilizing the JFace policy comparator to order by label ({@link IComparableContribution#getLabel()}).
- * 
- * @see IComparableContribution
- * 
- * @since 3.4
- */
-public class ContributionComparator extends ViewerComparator implements
-		Comparator {
-
-	/**
-	 * This implementation of {@link Comparator#compare(Object, Object)} does a
-	 * blind cast on each element to {@link IComparableContribution}.
-	 */
-	public int compare(Object o1, Object o2) {
-		IComparableContribution c1 = null, c2 = null;
-		
-		if (o1 instanceof IComparableContribution)
-			c1 = (IComparableContribution) o1;
-		
-		if (o2 instanceof IComparableContribution)
-			c2 = (IComparableContribution) o2;
-		
-		// neither are comparable contributions, we need to be consistent
-		if (c1 == null && c2 == null) {
-			String s1 = getComparisonString(o1); 
-			String s2 = getComparisonString(o2);
-			
-			return Policy.getComparator().compare(s1, s2);
-		}
-		
-		// if we're in a mixed scenario the comparable contribution wins. 
-		if (c1 == null)
-			return 1;
-		if (c2 == null)
-			return -1;
-		return compare(c1, c2);
-	}
-
-	/**
-	 * Tries to extract a useful string for comparison from the provided object.
-	 * This method is a workaround for bug 226547. Looking forward we need a
-	 * more sensible answer to this problem.
-	 * 
-	 * @param o
-	 * 		the object to test
-	 * @return the comparison string
-	 * TODO : remove this method and replace it with a sensible solution
-	 */
-	private String getComparisonString(Object o) {
-		if (o instanceof IPreferenceNode) {
-			return ((IPreferenceNode)o).getLabelText();
-		}
-		return o.toString();
-	}
-
-	/**
-	 * Returns a negative, zero, or positive number depending on whether the
-	 * first element is less than, equal to, or greater than the second element.
-	 * <p>
-	 * The default implementation of this method is based on comparing the
-	 * elements' categories as computed by the <code>category</code> framework
-	 * method. Elements within the same category are further subjected to a case
-	 * insensitive compare of their label strings. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param c1
-	 *            the first element
-	 * @param c2
-	 *            the second element
-	 * @return a negative number if the first element is less than the second
-	 *         element; the value <code>0</code> if the first element is equal
-	 *         to the second element; and a positive number if the first element
-	 *         is greater than the second element
-	 */
-	public int compare(IComparableContribution c1, IComparableContribution c2) {
-		int cat1 = category(c1);
-		int cat2 = category(c2);
-
-		if (cat1 != cat2) {
-			return cat1 - cat2;
-		}
-
-		String name1 = c1.getLabel();
-		String name2 = c2.getLabel();
-
-		if (name1 == null) {
-			name1 = "";//$NON-NLS-1$
-		}
-		if (name2 == null) {
-			name2 = "";//$NON-NLS-1$
-		}
-
-		// use the comparator to compare the strings
-		return Policy.getComparator().compare(name1, name2);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
-	 *      java.lang.Object, java.lang.Object)
-	 */
-	public int compare(Viewer viewer, Object e1, Object e2) {
-		return compare(e1, e2);
-	}
-
-	/**
-	 * Returns the category of the given element. The category is a number used
-	 * to allocate elements to bins; the bins are arranged in ascending numeric
-	 * order. The elements within a bin are arranged via a second level sort
-	 * criterion.
-	 * <p>
-	 * The default implementation of this framework method returns the result of
-	 * {@link IComparableContribution#getPriority()}. Subclasses may
-	 * re-implement this method to provide non-trivial categorization.
-	 * </p>
-	 * 
-	 * @param c
-	 *            the element
-	 * @return the category
-	 */
-	public int category(IComparableContribution c) {
-		return c.getPriority();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ViewerComparator#category(java.lang.Object)
-	 */
-	public int category(Object element) {
-		return category((IComparableContribution) element);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IComparableContribution.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IComparableContribution.java
deleted file mode 100644
index 8a05670..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IComparableContribution.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.model;
-
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * Instances of this interface represent a contribution within the workbench.
- * This interface is typically implemented by the workbench itself although
- * extension developers may wish to implement it as well for their own
- * extensions.
- * 
- * @since 3.4
- */
-public interface IComparableContribution extends IAdaptable {
-
-	/**
-	 * The default priority (0);
-	 */
-	public static final int PRIORITY_DEFAULT = 0;
-
-	/**
-	 * Return the priority of this contribution. Lower values constitute higher
-	 * priorities.
-	 * 
-	 * @return the priority
-	 */
-	int getPriority();
-
-	/**
-	 * Return the human readable label for this contribution. Must not be
-	 * <code>null</code>.
-	 * 
-	 * @return the label for this contribution
-	 */
-	String getLabel();
-
-	/**
-	 * Possible adaptations include:
-	 * <dl>
-	 * <dt>{@link org.eclipse.core.runtime.IConfigurationElement}</dt>
-	 * <dd>useful for contributions that eventually work back to registry
-	 * elements. The majority of {@link IComparableContribution} instances
-	 * provided by the platform will provide this adapter.</dd>
-	 * </dl>
-	 */
-	public Object getAdapter(Class adapter);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IContributionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IContributionService.java
deleted file mode 100644
index f6975b6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IContributionService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.model;
-
-/**
- * Instances of this service are capable of providing standard mechanisms that
- * clients may use to order, display, and generally work with contributions to
- * the Workbench.
- * 
- * @since 3.4
- * 
- */
-public interface IContributionService {
-
-	/**
-	 * contributionType value for the PropertyDialog
-	 */
-	public static final String TYPE_PROPERTY = "property"; //$NON-NLS-1$
-
-	/**
-	 * contributionType value for Preferences
-	 */
-	public static final String TYPE_PREFERENCE = "preference"; //$NON-NLS-1$
-
-	/**
-	 * Return a comparator for ordering contributions within the user interface.
-	 * 
-	 * @param contributionType
-	 *            the type of contribution, must not be <code>null</code>. 
-	 * @return the comparator
-	 * @see #TYPE_PREFERENCE
-	 * @see #TYPE_PROPERTY
-	 */
-	public ContributionComparator getComparatorFor(String contributionType);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter.java
deleted file mode 100644
index a381256..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * This adapter interface provides visual presentation and hierarchical structure
- * for workbench elements, allowing them to be displayed in the UI
- * without having to know the concrete type of the element.
- * <p>
- * There is an associate label provider and content provider for showing
- * elements with a registered workbench adapter in JFace structured viewers.
- * </p>
- * @see WorkbenchLabelProvider
- * @see BaseWorkbenchContentProvider
- */
-public interface IWorkbenchAdapter {
-    /**
-     * 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 o The object to get the children for.
-     * @return Object[]
-     */
-    public Object[] getChildren(Object o);
-
-    /**
-     * Returns an image descriptor to be used for displaying an object in the workbench.
-     * Returns <code>null</code> if there is no appropriate image.
-     *
-     * @param object The object to get an image descriptor for.
-     * @return ImageDescriptor
-     */
-    public ImageDescriptor getImageDescriptor(Object object);
-
-    /**
-     * Returns the label text for this element.  This is typically
-     * used to assign a label to this object when displayed
-     * in the UI.  Returns an empty string if there is no appropriate
-     * label text for this object.
-     *
-     * @param o The object to get a label for.
-     * @return String
-     */
-    public String getLabel(Object o);
-
-    /**
-     * 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 o The object to get the parent for.
-     * @return Object
-     */
-    public Object getParent(Object o);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter2.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter2.java
deleted file mode 100644
index 0588900..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/IWorkbenchAdapter2.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * Extension interface for <code>IWorkbenchAdapter</code> that allows for color 
- * and font support.
- * <p>
- * There is an associate label provider and content provider for showing
- * elements with a registered workbench adapter in JFace structured viewers.
- * </p>
- * @see IWorkbenchAdapter
- * @see WorkbenchLabelProvider
- * @see BaseWorkbenchContentProvider
- * @since 3.0
- */
-public interface IWorkbenchAdapter2 {
-
-    /**
-     * Provides a foreground color for the given element.
-     * 
-     * @param element the element
-     * @return	the foreground color for the element, or <code>null</code> 
-     *   to use the default foreground color
-     */
-    public RGB getForeground(Object element);
-
-    /**
-     * Provides a background color for the given element.
-     * 
-     * @param element the element
-     * @return	the background color for the element, or <code>null</code> 
-     *   to use the default background color
-     */
-    public RGB getBackground(Object element);
-
-    /**
-     * Provides a font the given element.
-     * 
-     * @param element the element
-     * @return	the font for the element, or <code>null</code> 
-     *   to use the default font
-     */
-    public FontData getFont(Object element);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/PerspectiveLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/PerspectiveLabelProvider.java
deleted file mode 100644
index 02b7509..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/PerspectiveLabelProvider.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * A table label provider implementation for showing workbench perspectives 
- * (objects of type <code>IPerspectiveDescriptor</code>) in table- and 
- * tree-structured viewers.
- * <p>
- * Clients may instantiate this class. It is not intended to be subclassed.
- * </p>
- * 
- * @since 3.0
- */
-public final class PerspectiveLabelProvider extends LabelProvider implements
-        ITableLabelProvider {
-
-    /**
-     * List of all Image objects this label provider is responsible for.
-     */
-    private HashMap imageCache = new HashMap(5);
-
-    /**
-     * Indicates whether the default perspective is visually marked.
-     */
-    private boolean markDefault;
-
-    /**
-     * Creates a new label provider for perspectives.
-     * The default perspective is visually marked.
-     */
-    public PerspectiveLabelProvider() {
-        this(true);
-    }
-
-    /**
-     * Creates a new label provider for perspectives.
-     * 
-     * @param markDefault <code>true</code> if the default perspective is to be
-     * visually marked, and <code>false</code> if the default perspective is
-     * not treated as anything special
-     */
-    public PerspectiveLabelProvider(boolean markDefault) {
-        super();
-        this.markDefault = markDefault;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider
-     */
-    public final Image getImage(Object element) {
-        if (element instanceof IPerspectiveDescriptor) {
-            IPerspectiveDescriptor desc = (IPerspectiveDescriptor) element;
-            ImageDescriptor imageDescriptor = desc.getImageDescriptor();
-            if (imageDescriptor == null) {
-                imageDescriptor = WorkbenchImages
-                        .getImageDescriptor(ISharedImages.IMG_ETOOL_DEF_PERSPECTIVE);
-            }
-            Image image = (Image) imageCache.get(imageDescriptor);
-            if (image == null) {
-                image = imageDescriptor.createImage();
-                imageCache.put(imageDescriptor, image);
-            }
-            return image;
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider
-     */
-    public final void dispose() {
-        for (Iterator i = imageCache.values().iterator(); i.hasNext();) {
-            ((Image) i.next()).dispose();
-        }
-        imageCache.clear();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider
-     */
-    public final String getText(Object element) {
-        if (element instanceof IPerspectiveDescriptor) {
-            IPerspectiveDescriptor desc = (IPerspectiveDescriptor) element;
-            String label = desc.getLabel();
-            if (markDefault) {
-                String def = PlatformUI.getWorkbench().getPerspectiveRegistry()
-                        .getDefaultPerspective();
-                if (desc.getId().equals(def)) {
-                    label = NLS.bind(WorkbenchMessages.PerspectivesPreference_defaultLabel, label );
-                }
-            }
-            return label;
-        }
-        return WorkbenchMessages.PerspectiveLabelProvider_unknown;
-    }
-
-    /**
-     * @see ITableLabelProvider#getColumnImage
-     */
-    public final Image getColumnImage(Object element, int columnIndex) {
-        return getImage(element);
-    }
-
-    /**
-     * @see ITableLabelProvider#getColumnText
-     */
-    public final String getColumnText(Object element, int columnIndex) {
-        return getText(element);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchAdapter.java
deleted file mode 100644
index 235384e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchAdapter.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * Abstract base class with basic implementations of the IWorkbenchAdapter
- * interface. Intended to be subclassed.
- * 
- * @since 3.0
- */
-public abstract class WorkbenchAdapter implements IWorkbenchAdapter,
-        IWorkbenchAdapter2 {
-    /**
-     * The empty list of children.
-     */
-    protected static final Object[] NO_CHILDREN = new Object[0];
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter</code> method
-     * returns the empty list. Subclasses may override.
-     */
-    public Object[] getChildren(Object object) {
-        return NO_CHILDREN;
-    }
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter</code> method
-     * returns <code>null</code>. Subclasses may override.
-     */
-    public ImageDescriptor getImageDescriptor(Object object) {
-        return null;
-    }
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter</code> method
-     * returns the empty string if the object is <code>null</code>, and
-     * the object's <code>toString</code> otherwise. Subclasses may override.
-     */
-    public String getLabel(Object object) {
-        return object == null ? "" : object.toString(); //$NON-NLS-1$
-    }
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter</code> method
-     * returns <code>null</code>. Subclasses may override.
-     */
-    public Object getParent(Object object) {
-        return null;
-    }
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter2</code> method
-     * returns <code>null</code>. Subclasses may override.
-     */
-    public RGB getBackground(Object element) {
-        return null;
-    }
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter2</code> method
-     * returns <code>null</code>. Subclasses may override.
-     */
-    public RGB getForeground(Object element) {
-        return null;
-    }
-
-    /**
-     * The default implementation of this <code>IWorkbenchAdapter2</code> method
-     * returns <code>null</code>. Subclasses may override.
-     */
-    public FontData getFont(Object element) {
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchLabelProvider.java
deleted file mode 100644
index 92ab947..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchLabelProvider.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import org.eclipse.jface.resource.ColorDescriptor;
-import org.eclipse.jface.resource.FontDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Provides basic labels for adaptable objects that have the
- * <code>IWorkbenchAdapter</code> adapter associated with them.  All dispensed
- * images are cached until the label provider is explicitly disposed.
- * This class provides a facility for subclasses to define annotations
- * on the labels and icons of adaptable objects.
- */
-public class WorkbenchLabelProvider extends LabelProvider implements
-        IColorProvider, IFontProvider {
-
-    /**
-     * Returns a workbench label provider that is hooked up to the decorator
-     * mechanism.
-     * 
-     * @return a new <code>DecoratingLabelProvider</code> which wraps a <code>
-     *   new <code>WorkbenchLabelProvider</code>
-     */
-    public static ILabelProvider getDecoratingWorkbenchLabelProvider() {
-        return new DecoratingLabelProvider(new WorkbenchLabelProvider(),
-                PlatformUI.getWorkbench().getDecoratorManager()
-                        .getLabelDecorator());
-    }
-    
-    /**
-     * Listener that tracks changes to the editor registry and does a full update
-     * when it changes, since many workbench adapters derive their icon from the file
-     * associations in the registry.
-     */
-    private IPropertyListener editorRegistryListener = new IPropertyListener() {
-		public void propertyChanged(Object source, int propId) {
-			if (propId == IEditorRegistry.PROP_CONTENTS) {
-				fireLabelProviderChanged(new LabelProviderChangedEvent(WorkbenchLabelProvider.this));
-			}
-		}
-	};		
-	private ResourceManager resourceManager;
-
-    /**
-     * Creates a new workbench label provider.
-     */
-    public WorkbenchLabelProvider() {
-    	PlatformUI.getWorkbench().getEditorRegistry().addPropertyListener(editorRegistryListener);
-    	this.resourceManager = new LocalResourceManager(JFaceResources.getResources());
-    }
-
-    /**
-     * Returns an image descriptor that is based on the given descriptor,
-     * but decorated with additional information relating to the state
-     * of the provided object.
-     *
-     * Subclasses may reimplement this method to decorate an object's
-     * image.
-     * 
-     * @param input The base image to decorate.
-     * @param element The element used to look up decorations.
-     * @return the resuling ImageDescriptor.
-     * @see org.eclipse.jface.resource.CompositeImageDescriptor
-     */
-    protected ImageDescriptor decorateImage(ImageDescriptor input,
-            Object element) {
-        return input;
-    }
-
-    /**
-     * Returns a label that is based on the given label,
-     * but decorated with additional information relating to the state
-     * of the provided object.
-     *
-     * Subclasses may implement this method to decorate an object's
-     * label.
-     * @param input The base text to decorate.
-     * @param element The element used to look up decorations.
-     * @return the resulting text
-     */
-    protected String decorateText(String input, Object element) {
-        return input;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ILabelProvider
-     */
-    public void dispose() {
-    	PlatformUI.getWorkbench().getEditorRegistry().removePropertyListener(editorRegistryListener);
-    	resourceManager.dispose();
-    	resourceManager = null;
-    	super.dispose();
-    }
-    
-    /**
-     * Returns the implementation of IWorkbenchAdapter for the given
-     * object.  
-     * @param o the object to look up.
-     * @return IWorkbenchAdapter or<code>null</code> if the adapter is not defined or the
-     * object is not adaptable. 
-     */
-    protected final IWorkbenchAdapter getAdapter(Object o) {
-        return (IWorkbenchAdapter)Util.getAdapter(o, IWorkbenchAdapter.class);
-    }
-
-    /**
-     * Returns the implementation of IWorkbenchAdapter2 for the given
-     * object.  
-     * @param o the object to look up.
-     * @return IWorkbenchAdapter2 or<code>null</code> if the adapter is not defined or the
-     * object is not adaptable. 
-     */
-    protected final IWorkbenchAdapter2 getAdapter2(Object o) {
-        return (IWorkbenchAdapter2)Util.getAdapter(o, IWorkbenchAdapter2.class);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ILabelProvider
-     */
-    public final Image getImage(Object element) {
-        //obtain the base image by querying the element
-        IWorkbenchAdapter adapter = getAdapter(element);
-        if (adapter == null) {
-            return null;
-        }
-        ImageDescriptor descriptor = adapter.getImageDescriptor(element);
-        if (descriptor == null) {
-            return null;
-        }
-
-        //add any annotations to the image descriptor
-        descriptor = decorateImage(descriptor, element);
-
-        return (Image)resourceManager.get(descriptor);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ILabelProvider
-     */
-    public final String getText(Object element) {
-        //query the element for its label
-        IWorkbenchAdapter adapter = getAdapter(element);
-        if (adapter == null) {
-            return ""; //$NON-NLS-1$
-        }
-        String label = adapter.getLabel(element);
-
-        //return the decorated label
-        return decorateText(label, element);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object)
-     */
-    public Color getForeground(Object element) {
-        return getColor(element, true);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object)
-     */
-    public Color getBackground(Object element) {
-        return getColor(element, false);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
-     */
-    public Font getFont(Object element) {
-        IWorkbenchAdapter2 adapter = getAdapter2(element);
-        if (adapter == null) {
-            return null;
-        }
-
-        FontData descriptor = adapter.getFont(element);
-        if (descriptor == null) {
-            return null;
-        }
-
-        return (Font)resourceManager.get(FontDescriptor.createFrom(descriptor));
-    }
-
-    private Color getColor(Object element, boolean forground) {
-        IWorkbenchAdapter2 adapter = getAdapter2(element);
-        if (adapter == null) {
-            return null;
-        }
-        RGB descriptor = forground ? adapter.getForeground(element) : adapter
-                .getBackground(element);
-        if (descriptor == null) {
-            return null;
-        }
-
-        return (Color)resourceManager.get(ColorDescriptor.createFrom(descriptor));
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchPartLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchPartLabelProvider.java
deleted file mode 100644
index 82f78c8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchPartLabelProvider.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import java.util.HashMap;
-
-import org.eclipse.jface.resource.DeviceResourceException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.Saveable;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * A table label provider implementation for showing workbench views and
- * editors (objects of type <code>IWorkbenchPart</code>) in tree- and
- * table-structured viewers.
- * <p>
- * Clients may instantiate this class. It is not intended to be subclassed.
- * </p>
- * 
- * @since 3.0
- */
-public final class WorkbenchPartLabelProvider extends LabelProvider implements
-        ITableLabelProvider {
-
-	private ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources());
-	private HashMap images = new HashMap();
-	
-    /**
-     * Creates a new label provider for workbench parts.
-     */
-    public WorkbenchPartLabelProvider() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider
-     */
-    public final Image getImage(Object element) {
-        if (element instanceof IWorkbenchPart) {
-            return ((IWorkbenchPart) element).getTitleImage();
-        }
-        if (element instanceof Saveable) {
-        	Saveable model = (Saveable) element;
-        	ImageDescriptor imageDesc = model.getImageDescriptor();
-        	// convert from ImageDescriptor to Image
-        	if (imageDesc == null) {
-				return null;
-			}
-        	Image image = (Image) images.get(imageDesc);
-        	if (image == null) {
-        		try {
-        			image = resourceManager.createImage(imageDesc);
-        			images.put(imageDesc, image);
-        		}
-        		catch (DeviceResourceException e) {
-        			WorkbenchPlugin.log(getClass(), "getImage", e); //$NON-NLS-1$
-        		}
-        	}
-        	return image;
-        }
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ILabelProvider
-     */
-    public final String getText(Object element) {
-        if (element instanceof IWorkbenchPart) {
-            IWorkbenchPart part = (IWorkbenchPart) element;
-            String path = part.getTitleToolTip();
-            if (path == null || path.trim().length() == 0) {
-                return part.getTitle();
-            }
-            return part.getTitle() + "  [" + path + "]"; //$NON-NLS-1$ //$NON-NLS-2$
-        }
-        if (element instanceof Saveable) {
-        	Saveable model = (Saveable) element;
-            String path = model.getToolTipText();
-            if (path == null || path.trim().length() == 0) {
-                return model.getName();
-            }
-            return model.getName() + "  [" + path + "]";  //$NON-NLS-1$ //$NON-NLS-2$
-        	
-        }
-        return null;
-    }
-
-    /**
-     * @see ITableLabelProvider#getColumnImage
-     */
-    public final Image getColumnImage(Object element, int columnIndex) {
-        return getImage(element);
-    }
-
-    /**
-     * @see ITableLabelProvider#getColumnText
-     */
-    public final String getColumnText(Object element, int columnIndex) {
-        return getText(element);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.LabelProvider#dispose()
-     * 
-     * @since 3.2
-     */
-    public void dispose() {
-    	resourceManager.dispose();
-    	super.dispose();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerComparator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerComparator.java
deleted file mode 100644
index cf2f25f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerComparator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import java.util.Comparator;
-
-import org.eclipse.jface.viewers.IBasicPropertyConstants;
-import org.eclipse.jface.viewers.ViewerComparator;
-
-/**
- * 
- * A viewer comparator that sorts elements with registered workbench adapters by
- * their text property. Note that capitalization differences are not considered
- * by this sorter, so a &gt; B &gt; c
- * 
- * @see IWorkbenchAdapter
- * @since 3.3
- */
-public class WorkbenchViewerComparator extends ViewerComparator {
-
-    /**
-     * Creates a workbench viewer sorter using the default collator.
-     */
-    public WorkbenchViewerComparator() {
-        super();
-    }
-
-    /**
-     * Creates a workbench viewer sorter using the given collator.
-     *
-     * @param comparator the comparator to use to sort strings
-     */
-    public WorkbenchViewerComparator(Comparator comparator) {
-        super(comparator);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ViewerComparator.
-     */
-    public boolean isSorterProperty(Object element, String propertyId) {
-        return propertyId.equals(IBasicPropertyConstants.P_TEXT);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerSorter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerSorter.java
deleted file mode 100644
index a2b94d9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/WorkbenchViewerSorter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.model;
-
-import java.text.Collator; // can't use ICU, public API
-
-import org.eclipse.jface.viewers.IBasicPropertyConstants;
-import org.eclipse.jface.viewers.ViewerSorter;
-
-/**
- * A viewer sorter that sorts elements with registered workbench adapters by their text property.
- * Note that capitalization differences are not considered by this
- * sorter, so a &gt; B &gt; c
- *
- * @see IWorkbenchAdapter
- * @deprecated as of 3.3, use {@link WorkbenchViewerComparator} instead
- */
-public class WorkbenchViewerSorter extends ViewerSorter {
-
-    /**
-     * Creates a workbench viewer sorter using the default collator.
-     */
-    public WorkbenchViewerSorter() {
-        super();
-    }
-
-    /**
-     * Creates a workbench viewer sorter using the given collator.
-     *
-     * @param collator the collator to use to sort strings
-     */
-    public WorkbenchViewerSorter(Collator collator) {
-        super(collator);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on ViewerSorter.
-     */
-    public boolean isSorterProperty(Object element, String propertyId) {
-        return propertyId.equals(IBasicPropertyConstants.P_TEXT);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/package.html
deleted file mode 100644
index 7652c46..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/model/package.html
+++ /dev/null
@@ -1,20 +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="Microsoft FrontPage 4.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Package-level Javadoc</title>
-</head>
-
-<body>
-
-Provides a workbench adapter for displaying workbench elements in the UI without
-having to know the concrete type of the element, and various label providers for
-workbench-specific objects like editors, views, and perspectives.
-
-</body>
-
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/IWorkbenchOperationSupport.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/IWorkbenchOperationSupport.java
deleted file mode 100644
index ee00567..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/IWorkbenchOperationSupport.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.operations;
-
-import org.eclipse.core.commands.operations.IOperationHistory;
-import org.eclipse.core.commands.operations.IUndoContext;
-
-/**
- * An instance of this interface provides support for managing a
- * a shared operations history and an shared undo context at the <code>IWorkbench</code>
- * level.
- * <p>
- * This interface is not intended to be extended or implemented by clients.
- * </p>
- * 
- * @since 3.1
- * 
- * @see org.eclipse.ui.IWorkbench#getOperationSupport()
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchOperationSupport {
-
-	/**
-	 * Returns the undo context for workbench-wide operations.
-	 * 
-	 * @return the workbench operation context
-	 */
-	public IUndoContext getUndoContext();
-
-	/**
-	 * Returns the operation history for the workbench.
-	 * 
-	 * @return the workbench operation history
-	 */
-	public IOperationHistory getOperationHistory();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java
deleted file mode 100644
index 3f48f22..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/LinearUndoViolationUserApprover.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.operations;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IOperationHistory;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
-import org.eclipse.core.commands.operations.LinearUndoViolationDetector;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart2;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * <p>
- * An operation approver that prompts the user to see if linear undo violations
- * are permitted. A linear undo violation is detected when an operation being
- * undone or redone shares an undo context with another operation appearing more
- * recently in the history.
- * </p>
- * <p>
- * This class may be instantiated by clients.
- * </p>
- * 
- * @since 3.1
- */
-public final class LinearUndoViolationUserApprover extends
-		LinearUndoViolationDetector {
-
-	private IWorkbenchPart part;
-
-	private IUndoContext context;
-
-	/**
-	 * Create a LinearUndoViolationUserApprover associated with the specified
-	 * workbench part.
-	 * 
-	 * @param context
-	 *            the undo context with the linear undo violation
-	 * @param part
-	 *            the part that should be used for prompting the user
-	 */
-	public LinearUndoViolationUserApprover(IUndoContext context,
-			IWorkbenchPart part) {
-		super();
-		this.part = part;
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.LinearUndoViolationDetector#allowLinearRedoViolation(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IUndoContext,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	protected IStatus allowLinearRedoViolation(IUndoableOperation operation,
-			IUndoContext context, IOperationHistory history, IAdaptable uiInfo) {
-
-		if (this.context != context) {
-			return Status.OK_STATUS;
-		}
-
-		final String message = NLS.bind(
-				WorkbenchMessages.Operations_linearRedoViolation,
-				getTitle(part), operation.getLabel());
-		final boolean [] proceed = new boolean[1];
-		Workbench.getInstance().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				// Show a dialog.
-				part.setFocus();
-				proceed[0] = MessageDialog.openQuestion(part.getSite()
-						.getShell(), getTitle(part), message);
-			}
-		});
-
-		if (proceed[0]) {
-			// redo the local changes first
-			while (operation != history.getRedoOperation(context)) {
-				try {
-					IStatus status = history.redo(context, null, uiInfo);
-					if (!status.isOK()) {
-						// flush the redo history because the operation
-						// failed
-						history.dispose(context, false, true, false);
-						return Status.CANCEL_STATUS;
-					}
-				} catch (ExecutionException e) {
-					// flush the redo history here because it failed.
-					history.dispose(context, false, true, false);
-					return Status.CANCEL_STATUS;
-				}
-			}
-			return Status.OK_STATUS;
-		}
-
-		return Status.CANCEL_STATUS;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.LinearUndoViolationDetector#allowLinearUndoViolation(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IUndoContext,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	protected IStatus allowLinearUndoViolation(IUndoableOperation operation,
-			IUndoContext context, IOperationHistory history, IAdaptable uiInfo) {
-
-		if (this.context != context) {
-			return Status.OK_STATUS;
-		}
-
-		final String message = NLS.bind(
-				WorkbenchMessages.Operations_linearUndoViolation,
-				getTitle(part), operation.getLabel());
-		final boolean [] proceed = new boolean[1];
-		Workbench.getInstance().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				// Show a dialog.
-				part.setFocus();
-				proceed[0] = MessageDialog.openQuestion(part.getSite()
-						.getShell(), getTitle(part), message);
-			}
-		});
-
-		if (proceed[0]) {
-			// redo the local changes first
-			while (operation != history.getUndoOperation(context)) {
-				try {
-					IStatus status = history.undo(context, null, uiInfo);
-					if (!status.isOK()) {
-						// flush the operation history because the operation
-						// failed.
-						history.dispose(context, true, false, false);
-						return Status.CANCEL_STATUS;
-					}
-				} catch (ExecutionException e) {
-					// flush the undo history here because something went wrong.
-					history.dispose(context, true, false, false);
-					return Status.CANCEL_STATUS;
-				}
-			}
-			return Status.OK_STATUS;
-		}
-		return Status.CANCEL_STATUS;
-	}
-
-	/*
-	 * Get the title for the specified part. Use the newer interface
-	 * IWorkbenchPart2 if available.
-	 */
-	private String getTitle(IWorkbenchPart part) {
-		String title;
-		if (part instanceof IWorkbenchPart2) {
-			title = ((IWorkbenchPart2) part).getPartName();
-		} else {
-			title = part.getTitle();
-		}
-		// Null title is unexpected, but use an empty string if encountered.
-		if (title == null) {
-			title = ""; //$NON-NLS-1$
-		}
-		return title;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/NonLocalUndoUserApprover.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/NonLocalUndoUserApprover.java
deleted file mode 100644
index d3e5e82..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/NonLocalUndoUserApprover.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.operations;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.commands.operations.IAdvancedUndoableOperation;
-import org.eclipse.core.commands.operations.IOperationApprover;
-import org.eclipse.core.commands.operations.IOperationHistory;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * <p>
- * An operation approver that prompts the user to see if a non-local undo should
- * proceed inside an editor. A non-local undo is detected when an operation
- * being undone or redone affects elements other than those described by the
- * editor itself. Clients can optionally specify a class, the preferred
- * comparison class, that should be used when comparing objects affected by the
- * editor with objects affected by an undo or redo operation. Comparisons
- * between the affected objects inside the editor and those described by the
- * operation will first be done by simply performing an equality check, using
- * {@link java.lang.Object#equals(java.lang.Object)}. If an object described by
- * an operation is not equal to one of the objects affected by the editor, and
- * if it is not an instance of the preferred comparison class, but is an
- * instance of {@link org.eclipse.core.runtime.IAdaptable}, then the operation
- * approver will also attempt to retrieve an adapter on that object for the
- * preferred comparison class and perform a second equality check using the
- * adapter.
- * </p>
- * <p>
- * This class may be instantiated by clients.
- * </p>
- * 
- * 
- * @since 3.1
- */
-public final class NonLocalUndoUserApprover implements IOperationApprover {
-
-	private IUndoContext context;
-
-	private IEditorPart part;
-
-	private Object[] elements;
-
-	private Class affectedObjectsClass;
-
-	private ArrayList elementsAndAdapters;
-
-	/**
-	 * Create a NonLocalUndoUserApprover associated with the specified editor
-	 * and undo context
-	 * 
-	 * @param context
-	 *            the undo context of operations in question.
-	 * @param part
-	 *            the editor part that is displaying the element
-	 * @param affectedObjects
-	 *            the objects that are affected by the editor and considered to
-	 *            be objects local to the editor. The objects are typically
-	 *            instances of the preferredComparisonClass or else provide
-	 *            adapters for the preferredComparisonClass, although this is
-	 *            not required.
-	 * @param preferredComparisonClass
-	 *            the preferred class to be used when comparing the editor's
-	 *            affectedObjects with those provided by the undoable operation
-	 *            using
-	 *            {@link org.eclipse.core.commands.operations.IAdvancedUndoableOperation#getAffectedObjects()}.
-	 *            If the operation's affected objects are not instances of the
-	 *            specified class, but are instances of
-	 *            {@link org.eclipse.core.runtime.IAdaptable}, then an adapter
-	 *            for this class will be requested. The preferredComparisonClass
-	 *            may be <code>null</code>, which indicates that there is no
-	 *            expected class or adapter necessary for the comparison.
-	 */
-	public NonLocalUndoUserApprover(IUndoContext context, IEditorPart part,
-			Object[] affectedObjects, Class preferredComparisonClass) {
-		super();
-		this.context = context;
-		this.part = part;
-		this.affectedObjectsClass = preferredComparisonClass;
-		this.elements = affectedObjects;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.IOperationApprover#proceedRedoing(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	public IStatus proceedRedoing(IUndoableOperation operation,
-			IOperationHistory history, IAdaptable uiInfo) {
-
-		// return immediately if the operation is not relevant
-		if (!requiresApproval(operation, uiInfo)) {
-			return Status.OK_STATUS;
-		}
-
-		String message = NLS.bind(
-				WorkbenchMessages.Operations_nonLocalRedoWarning, operation
-						.getLabel(), part.getEditorInput().getName());
-		return proceedWithOperation(operation, message, WorkbenchMessages.Operations_discardRedo, WorkbenchMessages.Workbench_redoToolTip);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.commands.operations.IOperationApprover#proceedUndoing(org.eclipse.core.commands.operations.IUndoableOperation,
-	 *      org.eclipse.core.commands.operations.IOperationHistory,
-	 *      org.eclipse.core.runtime.IAdaptable)
-	 */
-	public IStatus proceedUndoing(IUndoableOperation operation,
-			IOperationHistory history, IAdaptable uiInfo) {
-
-		// return immediately if the operation is not relevant
-		if (!requiresApproval(operation, uiInfo)) {
-			return Status.OK_STATUS;
-		}
-
-		String message = NLS.bind(
-				WorkbenchMessages.Operations_nonLocalUndoWarning, operation
-						.getLabel(), part.getEditorInput().getName());
-		return proceedWithOperation(operation, message, WorkbenchMessages.Operations_discardUndo, WorkbenchMessages.Workbench_undoToolTip);
-
-	}
-
-	/*
-	 * Determine whether the operation in question affects elements outside of
-	 * the editor. If this can be determined and it does affect other elements,
-	 * prompt the user as to whether the operation should proceed.
-	 */
-	private IStatus proceedWithOperation(IUndoableOperation operation,
-			final String message, final String discardButton, final String title) {
-
-		// if the operation cannot tell us about its modified elements, there's
-		// nothing we can do.
-		if (!(operation instanceof IAdvancedUndoableOperation)) {
-			return Status.OK_STATUS;
-		}
-
-		// Obtain the operation's affected objects.
-		Object[] modifiedElements = ((IAdvancedUndoableOperation) operation)
-				.getAffectedObjects();
-
-		// Since the operation participates in describing its affected objects,
-		// we assume for the rest of this method that an inability to
-		// determine a match implies that a non-local operation is occurring.
-		// This is a conservative assumption that provides more user prompting.
-
-		boolean local;
-		if (modifiedElements == null) {
-			// The operation could not determine which elements are affected.
-			// Consider the operation non-local.
-			local = false;
-		} else {
-			// The operation answered some array of affected objects. Consider
-			// the operation local until a non-match is found. Note that an
-			// empty
-			// array of affected objects is considered a local change.
-			local = true;
-			for (int i = 0; i < modifiedElements.length; i++) {
-				Object modifiedElement = modifiedElements[i];
-				if (!elementsContains(modifiedElement)) {
-					// the modified element is not known by the editor
-					local = false;
-					// one last try - try to adapt the modified element if a
-					// preferred
-					// comparison class has been provided.
-					if (affectedObjectsClass != null) {
-						Object adapter = Util.getAdapter(modifiedElement, 
-								affectedObjectsClass);
-						if (adapter != null && elementsContains(adapter)) {
-							local = true;
-						}
-					}
-					// if the element did not match the affected objects, no
-					// need to check any others.
-					if (!local) {
-						break;
-					}
-				}
-			}
-		}
-		if (local) {
-			return Status.OK_STATUS;
-		}
-
-		// The operation affects more than just our element.  Find out if
-		// we should proceed, cancel, or discard the undo.  Must be done in
-		// a syncExec because operation approval notifications may come from
-		// a background thread.
-		final int[] answer = new int[1];
-		Workbench.getInstance().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				MessageDialog dialog = new MessageDialog(part.getSite().getShell(), title,
-						null, message, MessageDialog.QUESTION, new String[] { IDialogConstants.OK_LABEL,
-		                        discardButton, IDialogConstants.CANCEL_LABEL }, 0); // yes is the default
-		        answer[0] = dialog.open();
-		}});
-		switch (answer[0]) {
-		case 0:
-			return Status.OK_STATUS;
-		case 1:
-			return IOperationHistory.OPERATION_INVALID_STATUS;
-		default:
-			// Cancel by default to include ESC key and shell close,
-			// which return SWT.DEFAULT, and any other unexpected return codes
-			return Status.CANCEL_STATUS;
-		}
-	}
-
-	/*
-	 * Answer whether this operation is relevant enough to this operation
-	 * approver that it should be examined in detail.
-	 */
-	private boolean requiresApproval(IUndoableOperation operation,
-			IAdaptable uiInfo) {
-		// no approval is required if the operation doesn't have our undo
-		// context
-		if (!(operation.hasContext(context))) {
-			return false;
-		}
-
-		// no approval is required if the operation only has our context
-		if (operation.getContexts().length == 1) {
-			return false;
-		}
-
-		// no approval is required if we can ascertain that the operation did
-		// not originate
-		// in our context.
-		if (uiInfo != null) {
-			IUndoContext originatingContext = (IUndoContext) Util.getAdapter(uiInfo, 
-					IUndoContext.class);
-			if (originatingContext != null
-					&& !(originatingContext.matches(context))) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	/*
-	 * Return whether or not the collection of editor elements plus any of their
-	 * adapters contains the specified object.
-	 */
-	private boolean elementsContains(Object someObject) {
-		if (elements == null) {
-			return false;
-		}
-		if (elementsAndAdapters == null) {
-			// Compute a list of not just the elements, but any adapters they
-			// may provide on the preferred class if they are not instances of
-			// the preferred class. This is done only once.
-			elementsAndAdapters = new ArrayList(elements.length);
-			for (int i = 0; i < elements.length; i++) {
-				Object element = elements[i];
-				elementsAndAdapters.add(element);
-				if (affectedObjectsClass != null
-						&& !affectedObjectsClass.isInstance(element)) {
-					Object adapter = Util.getAdapter(element, affectedObjectsClass);
-					if (adapter != null) {
-						elementsAndAdapters.add(adapter);
-					}
-				}
-			}
-		}
-		for (int i = 0; i < elementsAndAdapters.size(); i++) {
-			if (elementsAndAdapters.get(i).equals(someObject)) {
-				return true;
-			}
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/OperationHistoryActionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/OperationHistoryActionHandler.java
deleted file mode 100644
index f9f023a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/OperationHistoryActionHandler.java
+++ /dev/null
@@ -1,505 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.operations;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IAdvancedUndoableOperation2;
-import org.eclipse.core.commands.operations.IOperationHistory;
-import org.eclipse.core.commands.operations.IOperationHistoryListener;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
-import org.eclipse.core.commands.operations.OperationHistoryEvent;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.operations.TimeTriggeredProgressMonitorDialog;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.part.MultiPageEditorSite;
-import org.eclipse.ui.statushandlers.StatusManager;
-
-/**
- * <p>
- * OperationHistoryActionHandler implements common behavior for the undo and
- * redo actions. It supports filtering of undo or redo on a particular undo
- * context. If an undo context is not specified, or there has been no history
- * available for the specified undo context, then the workbench undo context
- * will be used.
- * </p>
- * <p>
- * OperationHistoryActionHandler provides an adapter in the info parameter of
- * the IOperationHistory undo and redo methods that is used to get UI info for
- * prompting the user during operations or operation approval. Adapters are
- * provided for org.eclipse.ui.IWorkbenchWindow, org.eclipse.swt.widgets.Shell,
- * org.eclipse.ui.IWorkbenchPart, org.eclipse.core.commands.IUndoContext, and
- * org.eclipse.runtime.IProgressMonitor.
- * </p>
- * <p>
- * OperationHistoryActionHandler assumes a linear undo/redo model. When the
- * handler is run, the operation history is asked to perform the most recent
- * undo/redo for the handler's undo context. The handler can be configured
- * (using #setPruneHistory(true)) to flush the operation undo or redo history
- * for the handler's undo context when there is no valid operation on top of the
- * history. This avoids keeping a stale history of invalid operations. By
- * default, pruning does not occur and it is assumed that clients of the
- * particular undo context are pruning the history when necessary.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class OperationHistoryActionHandler extends Action implements
-		ActionFactory.IWorkbenchAction, IAdaptable {
-
-	private static final int MAX_LABEL_LENGTH = 32;
-
-	private class PartListener implements IPartListener {
-		/**
-		 * @see IPartListener#partActivated(IWorkbenchPart)
-		 */
-		public void partActivated(IWorkbenchPart part) {
-		}
-
-		/**
-		 * @see IPartListener#partBroughtToTop(IWorkbenchPart)
-		 */
-		public void partBroughtToTop(IWorkbenchPart part) {
-		}
-
-		/**
-		 * @see IPartListener#partClosed(IWorkbenchPart)
-		 */
-		public void partClosed(IWorkbenchPart part) {
-			if (site != null && part.equals(site.getPart())) {
-				dispose();
-				// Special case for MultiPageEditorSite
-				// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=103379
-			} else if ((site instanceof MultiPageEditorSite)
-					&& (part.equals(((MultiPageEditorSite) site)
-							.getMultiPageEditor()))) {
-				dispose();
-			}
-		}
-
-		/**
-		 * @see IPartListener#partDeactivated(IWorkbenchPart)
-		 */
-		public void partDeactivated(IWorkbenchPart part) {
-		}
-
-		/**
-		 * @see IPartListener#partOpened(IWorkbenchPart)
-		 */
-		public void partOpened(IWorkbenchPart part) {
-		}
-
-	}
-
-	private class HistoryListener implements IOperationHistoryListener {
-		public void historyNotification(final OperationHistoryEvent event) {
-			Display display = getWorkbenchWindow().getWorkbench().getDisplay();
-			switch (event.getEventType()) {
-			case OperationHistoryEvent.OPERATION_ADDED:
-			case OperationHistoryEvent.OPERATION_REMOVED:
-			case OperationHistoryEvent.UNDONE:
-			case OperationHistoryEvent.REDONE:
-				if (display != null
-						&& event.getOperation().hasContext(undoContext)) {
-					display.asyncExec(new Runnable() {
-						public void run() {
-							update();
-						}
-					});
-				}
-				break;
-			case OperationHistoryEvent.OPERATION_NOT_OK:
-				if (display != null
-						&& event.getOperation().hasContext(undoContext)) {
-					display.asyncExec(new Runnable() {
-						public void run() {
-							if (pruning) {
-								IStatus status = event.getStatus();
-								/*
-								 * Prune the history unless we can determine
-								 * that this was a cancelled attempt. See
-								 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=101215
-								 */
-								if (status == null
-										|| status.getSeverity() != IStatus.CANCEL) {
-									flush();
-								}
-								// not all flushes will trigger an update so
-								// force it here
-								update();
-							} else {
-								update();
-							}
-						}
-					});
-				}
-				break;
-			case OperationHistoryEvent.OPERATION_CHANGED:
-				if (display != null && event.getOperation() == getOperation()) {
-					display.asyncExec(new Runnable() {
-						public void run() {
-							update();
-						}
-					});
-				}
-				break;
-			}
-		}
-	}
-
-	private boolean pruning = false;
-
-	private IPartListener partListener = new PartListener();
-
-	private IOperationHistoryListener historyListener = new HistoryListener();
-
-	private TimeTriggeredProgressMonitorDialog progressDialog;
-
-	private IUndoContext undoContext = null;
-
-	IWorkbenchPartSite site;
-
-	/**
-	 * Construct an operation history action for the specified workbench window
-	 * with the specified undo context.
-	 * 
-	 * @param site -
-	 *            the workbench part site for the action.
-	 * @param context -
-	 *            the undo context to be used
-	 */
-	OperationHistoryActionHandler(IWorkbenchPartSite site, IUndoContext context) {
-		// string will be reset inside action
-		super(""); //$NON-NLS-1$
-		this.site = site;
-		undoContext = context;
-		site.getPage().addPartListener(partListener);
-		getHistory().addOperationHistoryListener(historyListener);
-		// An update must be forced in case the undo limit is 0.
-		// see bug #89707
-		update();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction#dispose()
-	 */
-	public void dispose() {
-
-		IOperationHistory history = getHistory();
-		if (history != null) {
-			history.removeOperationHistoryListener(historyListener);
-		}
-
-		if (isInvalid()) {
-			return;
-		}
-
-		site.getPage().removePartListener(partListener);
-		site = null;
-		progressDialog = null;
-		// We do not flush the history for our undo context because it may be
-		// used elsewhere. It is up to clients to clean up the history
-		// appropriately.
-		// We do null out the context to signify that this handler is no longer
-		// accessing the history.
-		undoContext = null;
-	}
-
-	/*
-	 * Flush the history associated with this action.
-	 */
-	abstract void flush();
-
-	/*
-	 * Return the string describing the command, including the binding for the
-	 * operation label.
-	 */
-	abstract String getCommandString();
-
-	/*
-	 * Return the string describing the command for a tooltip, including the
-	 * binding for the operation label.
-	 */
-	abstract String getTooltipString();
-
-	/*
-	 * Return the simple string describing the command, with no binding to any
-	 * operation.
-	 */
-	abstract String getSimpleCommandString();
-
-	/*
-	 * Return the simple string describing the tooltip, with no binding to any
-	 * operation.
-	 */
-	abstract String getSimpleTooltipString();
-
-	/*
-	 * Return the operation history we are using.
-	 */
-	IOperationHistory getHistory() {
-		if (PlatformUI.getWorkbench() == null) {
-			return null;
-		}
-
-		return PlatformUI.getWorkbench().getOperationSupport()
-				.getOperationHistory();
-	}
-
-	/*
-	 * Return the current operation.
-	 */
-	abstract IUndoableOperation getOperation();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction#run()
-	 */
-	public final void run() {
-		if (isInvalid()) {
-			return;
-		}
-
-		Shell parent = getWorkbenchWindow().getShell();
-		progressDialog = new TimeTriggeredProgressMonitorDialog(parent,
-				getWorkbenchWindow().getWorkbench().getProgressService()
-						.getLongOperationTime());
-		IRunnableWithProgress runnable = new IRunnableWithProgress() {
-			public void run(IProgressMonitor pm)
-					throws InvocationTargetException {
-				try {
-					runCommand(pm);
-				} catch (ExecutionException e) {
-					if (pruning) {
-						flush();
-					}
-					throw new InvocationTargetException(e);
-				}
-			}
-		};
-		try {
-			boolean runInBackground = false;
-			if (getOperation() instanceof IAdvancedUndoableOperation2) {
-				runInBackground = ((IAdvancedUndoableOperation2) getOperation())
-						.runInBackground();
-			}
-			progressDialog.run(runInBackground, true, runnable);
-		} catch (InvocationTargetException e) {
-			Throwable t = e.getTargetException();
-			if (t == null) {
-				reportException(e);
-			} else {
-				reportException(t);
-			}
-		} catch (InterruptedException e) {
-			// Operation was cancelled and acknowledged by runnable with this
-			// exception.
-			// Do nothing.
-		} catch (OperationCanceledException e) {
-			// the operation was cancelled. Do nothing.
-		} finally {
-			progressDialog = null;
-		}
-	}
-
-	abstract IStatus runCommand(IProgressMonitor pm) throws ExecutionException;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter.equals(IUndoContext.class)) {
-			return undoContext;
-		}
-		if (adapter.equals(IProgressMonitor.class)) {
-			if (progressDialog != null) {
-				return progressDialog.getProgressMonitor();
-			}
-		}
-		if (site != null) {
-			if (adapter.equals(Shell.class)) {
-				return getWorkbenchWindow().getShell();
-			}
-			if (adapter.equals(IWorkbenchWindow.class)) {
-				return getWorkbenchWindow();
-			}
-			if (adapter.equals(IWorkbenchPart.class)) {
-				return site.getPart();
-			}
-			// Refer all other requests to the part itself.
-			// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=108144
-			IWorkbenchPart part = site.getPart();
-			if (part != null) {
-				return Util.getAdapter(part, adapter);
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * Return the workbench window for this action handler
-	 */
-	private IWorkbenchWindow getWorkbenchWindow() {
-		if (site != null) {
-			return site.getWorkbenchWindow();
-		}
-		return null;
-	}
-
-	/**
-	 * The undo and redo subclasses should implement this.
-	 * 
-	 * @return - a boolean indicating enablement state
-	 */
-	abstract boolean shouldBeEnabled();
-
-	/**
-	 * Set the context shown by the handler. Normally the context is set up when
-	 * the action handler is created, but the context can also be changed
-	 * dynamically.
-	 * 
-	 * @param context
-	 *            the context to be used for the undo history
-	 */
-	public void setContext(IUndoContext context) {
-		// optimization - do nothing if there was no real change
-		if (context == undoContext) {
-			return;
-		}
-		undoContext = context;
-		update();
-	}
-
-	/**
-	 * Specify whether the action handler should actively prune the operation
-	 * history when invalid operations are encountered. The default value is
-	 * <code>false</code>.
-	 * 
-	 * @param prune
-	 *            <code>true</code> if the history should be pruned by the
-	 *            handler, and <code>false</code> if it should not.
-	 * 
-	 */
-	public void setPruneHistory(boolean prune) {
-		pruning = prune;
-	}
-
-	/**
-	 * Update enabling and labels according to the current status of the
-	 * operation history.
-	 */
-	public void update() {
-		if (isInvalid()) {
-			return;
-		}
-
-		boolean enabled = shouldBeEnabled();
-		String text, tooltipText;
-		if (enabled) {
-			tooltipText = NLS.bind(getTooltipString(), getOperation()
-					.getLabel());
-			text = NLS.bind(getCommandString(), shortenText(getOperation()
-					.getLabel()));
-		} else {
-			tooltipText = NLS.bind(
-					WorkbenchMessages.Operations_undoRedoCommandDisabled,
-					getSimpleTooltipString());
-			text = getSimpleCommandString();
-			/*
-			 * if there is nothing to do and we are pruning the history, flush
-			 * the history of this context.
-			 */
-			if (undoContext != null && pruning) {
-				flush();
-			}
-		}
-		setText(text);
-		setToolTipText(tooltipText);
-		setEnabled(enabled);
-	}
-
-	/*
-	 * Shorten the specified command label if it is too long
-	 */
-	private String shortenText(String message) {
-		int length = message.length();
-		if (length > MAX_LABEL_LENGTH) {
-			StringBuffer result = new StringBuffer();
-			int mid = MAX_LABEL_LENGTH / 2;
-			result.append(message.substring(0, mid));
-			result.append("..."); //$NON-NLS-1$
-			result.append(message.substring(length - mid));
-			return result.toString();
-		}
-		return message;
-	}
-
-	/*
-	 * Report the specified exception to the log and to the user.
-	 */
-	final void reportException(Throwable t) {
-		// get any nested exceptions
-		Throwable nestedException = StatusUtil.getCause(t);
-		Throwable exception = (nestedException == null) ? t : nestedException;
-
-		// Messages
-		String exceptionMessage = exception.getMessage();
-		if (exceptionMessage == null) {
-			exceptionMessage = WorkbenchMessages.WorkbenchWindow_exceptionMessage;
-		}
-		IStatus status = StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-				exceptionMessage, exception);
-
-		// Log and show the problem
-		WorkbenchPlugin.log(exceptionMessage, status);
-		StatusUtil.handleStatus(status, StatusManager.SHOW,
-				getWorkbenchWindow().getShell());
-	}
-
-	/*
-	 * Answer true if the receiver is not valid for running commands, accessing
-	 * the history, etc.
-	 */
-	final boolean isInvalid() {
-		return undoContext == null || site == null;
-	}
-
-	/*
-	 * Get the undo context that should be used.
-	 */
-	final IUndoContext getUndoContext() {
-		return undoContext;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/RedoActionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/RedoActionHandler.java
deleted file mode 100644
index 52d7e0b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/RedoActionHandler.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.operations;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * <p>
- * RedoActionHandler provides common behavior for redoing an operation, as well
- * as labelling and enabling the menu item.  This class may be instantiated by 
- * clients.
- * </p>
- * 
- * @since 3.1
- */
-public final class RedoActionHandler extends OperationHistoryActionHandler {
-
-	/**
-	 * Construct an action handler that handles the labelling and enabling of
-	 * the redo action for the specified undo context.
-	 * 
-	 * @param site 
-	 *            the workbench part site that created the action.
-	 * @param context 
-	 *            the undo context to be used for redoing.
-	 */
-	public RedoActionHandler(IWorkbenchPartSite site, IUndoContext context) {
-		super(site, context);
-		setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
-				.getImageDescriptor(ISharedImages.IMG_TOOL_REDO));
-		setDisabledImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
-				.getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED));
-	}
-
-	void flush() {
-		getHistory().dispose(getUndoContext(), false, true, false);
-	}
-
-	String getCommandString() {
-		return WorkbenchMessages.Operations_redoCommand;
-	}
-	
-	String getTooltipString() {
-		return WorkbenchMessages.Operations_redoTooltipCommand;
-	}
-	
-	String getSimpleCommandString() {
-		return WorkbenchMessages.Workbench_redo;
-	}
-	
-	String getSimpleTooltipString() {
-		return WorkbenchMessages.Workbench_redoToolTip;
-	}
-
-
-	IUndoableOperation getOperation() {
-		return getHistory().getRedoOperation(getUndoContext());
-	}
-
-	IStatus runCommand(IProgressMonitor pm) throws ExecutionException {
-		return getHistory().redo(getUndoContext(), pm, this);
-	}
-
-	boolean shouldBeEnabled() {
-		return getHistory().canRedo(getUndoContext());
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoActionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoActionHandler.java
deleted file mode 100644
index 37fb66e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoActionHandler.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.operations;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-
-/**
- * <p>
- * UndoActionHandler provides common behavior for performing an undo, as
- * well as labelling and enabling the undo menu item.  This class may be
- * instantiated by clients.
- * </p>
- * 
- * @since 3.1
- */
-public final class UndoActionHandler extends OperationHistoryActionHandler {
-
-	/**
-	 * Construct an action handler that handles the labelling and enabling of
-	 * the undo action for the specified undo context.
-	 * 
-	 * @param site 
-	 *            the workbench part site that created the action.
-	 * @param context 
-	 *            the undo context to be used for the undo
-	 */
-	public UndoActionHandler(IWorkbenchPartSite site, IUndoContext context) {
-		super(site, context);
-        setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
-                .getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));
-        setDisabledImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
-                .getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED));
-	}
-
-	void flush() {
-		getHistory().dispose(getUndoContext(), true, false, false);
-	}
-
-	String getCommandString() {
-		return WorkbenchMessages.Operations_undoCommand;
-	}
-	
-	String getTooltipString() {
-		return WorkbenchMessages.Operations_undoTooltipCommand;
-	}
-	
-	String getSimpleCommandString() {
-		return WorkbenchMessages.Workbench_undo;
-	}
-	
-	String getSimpleTooltipString() {
-		return WorkbenchMessages.Workbench_undoToolTip;		
-	}
-
-	IUndoableOperation getOperation() {
-		return getHistory().getUndoOperation(getUndoContext());
-
-	}
-
-	IStatus runCommand(IProgressMonitor pm) throws ExecutionException  {
-		return getHistory().undo(getUndoContext(), pm, this);
-	}
-
-	boolean shouldBeEnabled() {
-		return getHistory().canUndo(getUndoContext());
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoRedoActionGroup.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoRedoActionGroup.java
deleted file mode 100644
index 09f6f9d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/UndoRedoActionGroup.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.operations;
-
-import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.ActionGroup;
-
-/**
- * <p>
- * UndoRedoActionGroup provides standard undo and redo action handlers for a
- * workbench part site. It supports filtering of undo or redo on a particular
- * undo context. The undo context can be optionally pruned, which means the
- * context will be flushed actively whenever an invalid operation is found on
- * top of its history. This class may be instantiated by clients.
- * </p>
- * 
- * @since 3.1
- */
-public final class UndoRedoActionGroup extends ActionGroup {
-
-	private UndoActionHandler undoActionHandler;
-
-	private RedoActionHandler redoActionHandler;
-
-	/**
-	 * Construct an undo redo action group for the specified workbench part
-	 * site, using the specified undo context.
-	 * 
-	 * @param site
-	 *            the workbench part site that is creating the action group
-	 * @param undoContext
-	 *            the undo context to be used for filtering the operation
-	 *            history
-	 * @param pruneHistory
-	 *            a boolean that indicates whether the history for the specified
-	 *            context should be pruned whenever an invalid operation is
-	 *            encountered.
-	 */
-	public UndoRedoActionGroup(IWorkbenchPartSite site,
-			IUndoContext undoContext, boolean pruneHistory) {
-
-		// create the undo action handler
-		undoActionHandler = new UndoActionHandler(site, undoContext);
-		undoActionHandler.setPruneHistory(pruneHistory);
-
-		// create the redo action handler
-		redoActionHandler = new RedoActionHandler(site, undoContext);
-		redoActionHandler.setPruneHistory(pruneHistory);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
-	 */
-	public void fillActionBars(IActionBars actionBars) {
-		super.fillActionBars(actionBars);
-		if (undoActionHandler != null) {
-			actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
-					undoActionHandler);
-			actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(),
-					redoActionHandler);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/package.html
deleted file mode 100644
index 9bc8a30..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/operations/package.html
+++ /dev/null
@@ -1,24 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes that provide the basic workbench UI support for undo and redo of
-operations. 
-<h2>
-Package Specification</h2>
-This package provides utilities that implement the common function for interacting
-with the workbench operation history.  The <b>workbench operation support</b> provides 
-access to the operation history used by the workbench and a context that should
-be used to identify operations global to the workbench.  The workbench history is used 
-to maintain all undoable operations that occur in the workbench.  Standard action 
-handlers and an associated action group are provided so that any view or editor 
-can easily add undo/redo support that works with the workbench operations history. 
-Specialized <b>operation approvers</b> can be used by clients to get user approval
-for unexpected conditions in the operation history. 
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/package.html
deleted file mode 100644
index 08c8791..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/package.html
+++ /dev/null
@@ -1,39 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-This package provides application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<p>The <b>PlatformUI</b> class provides access to a single <b>workbench</b>.&nbsp;
-A workbench is the root object for the UI and has one or more <b>workbench
-windows</b>.&nbsp; Each workbench window has a collection of <b>workbench
-pages</b>, only one of which is active and visible to the end user.&nbsp;
-Each workbench page has a collection of <b>workbench parts.&nbsp; </b>A
-page's parts are arranged (tiled or stacked) for presentation on the screen.&nbsp;
-Within a page and its parts the user can interact with and modify a model
-(typically resources in a workspace).&nbsp;&nbsp; There are two kinds of
-workbench parts: views and editors.&nbsp; An editor is typically used to
-edit or browse a document or input object.&nbsp; A view is typically used
-to navigate a hierarchy of information (like the workspace), open an editor,
-or display properties for the active editor.
-<p>The platform creates a workbench when the workbench plug-in is activated.&nbsp;
-Since this happens at most once during the life of the running platform,
-there is only one workbench instance. Due to its singular nature, it is
-commonly referred to as <i>the</i> workbench.
-<p>Within a workbench the user will interact with many different resource
-types.&nbsp; Because different tools are required for each, the workbench
-defines a number of extension points which allow for the integration of
-new tools.&nbsp; There are extension points for views, editors, action
-sets, import wizards, export wizards, etc.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CellEditorActionHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CellEditorActionHandler.java
deleted file mode 100644
index 4d4586e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CellEditorActionHandler.java
+++ /dev/null
@@ -1,802 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Handles the redirection of the global actions Cut, Copy, Paste,
- * Delete, Select All, Find, Undo and Redo to either the current
- * inline cell editor or the part's supplied action handler.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p><p>
- * Example usage:
- * <pre>
- * actionHandler = new CellEditorActionHandler(this.getViewSite().getActionBars());
- * actionHandler.addCellEditor(textCellEditor1);
- * actionHandler.addCellEditor(textCellEditor2);
- * actionHandler.setSelectAllAction(selectAllAction);
- * </pre>
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class CellEditorActionHandler {
-    private CutActionHandler cellCutAction = new CutActionHandler();
-
-    private CopyActionHandler cellCopyAction = new CopyActionHandler();
-
-    private PasteActionHandler cellPasteAction = new PasteActionHandler();
-
-    private DeleteActionHandler cellDeleteAction = new DeleteActionHandler();
-
-    private SelectAllActionHandler cellSelectAllAction = new SelectAllActionHandler();
-
-    private FindActionHandler cellFindAction = new FindActionHandler();
-
-    private UndoActionHandler cellUndoAction = new UndoActionHandler();
-
-    private RedoActionHandler cellRedoAction = new RedoActionHandler();
-
-    private IAction cutAction;
-
-    private IAction copyAction;
-
-    private IAction pasteAction;
-
-    private IAction deleteAction;
-
-    private IAction selectAllAction;
-
-    private IAction findAction;
-
-    private IAction undoAction;
-
-    private IAction redoAction;
-
-    private IPropertyChangeListener cutActionListener = new ActionEnabledChangeListener(
-            cellCutAction);
-
-    private IPropertyChangeListener copyActionListener = new ActionEnabledChangeListener(
-            cellCopyAction);
-
-    private IPropertyChangeListener pasteActionListener = new ActionEnabledChangeListener(
-            cellPasteAction);
-
-    private IPropertyChangeListener deleteActionListener = new ActionEnabledChangeListener(
-            cellDeleteAction);
-
-    private IPropertyChangeListener selectAllActionListener = new ActionEnabledChangeListener(
-            cellSelectAllAction);
-
-    private IPropertyChangeListener findActionListener = new ActionEnabledChangeListener(
-            cellFindAction);
-
-    private IPropertyChangeListener undoActionListener = new ActionEnabledChangeListener(
-            cellUndoAction);
-
-    private IPropertyChangeListener redoActionListener = new ActionEnabledChangeListener(
-            cellRedoAction);
-
-    private CellEditor activeEditor;
-
-    private IPropertyChangeListener cellListener = new CellChangeListener();
-
-    private Listener controlListener = new ControlListener();
-
-    private HashMap controlToEditor = new HashMap();
-
-    private class ControlListener implements Listener {
-        public void handleEvent(Event event) {
-            switch (event.type) {
-            case SWT.Activate:
-                activeEditor = (CellEditor) controlToEditor.get(event.widget);
-                if (activeEditor != null) {
-					activeEditor.addPropertyChangeListener(cellListener);
-				}
-                updateActionsEnableState();
-                break;
-            case SWT.Deactivate:
-                if (activeEditor != null) {
-					activeEditor.removePropertyChangeListener(cellListener);
-				}
-                activeEditor = null;
-                updateActionsEnableState();
-                break;
-            default:
-                break;
-            }
-        }
-    }
-
-    private class ActionEnabledChangeListener implements
-            IPropertyChangeListener {
-        private IAction actionHandler;
-
-        protected ActionEnabledChangeListener(IAction actionHandler) {
-            super();
-            this.actionHandler = actionHandler;
-        }
-
-        public void propertyChange(PropertyChangeEvent event) {
-            if (activeEditor != null) {
-				return;
-			}
-            if (event.getProperty().equals(IAction.ENABLED)) {
-                Boolean bool = (Boolean) event.getNewValue();
-                actionHandler.setEnabled(bool.booleanValue());
-                return;
-            }
-            // If the underlying action's text has changed, we need to
-            // change the text.  See
-            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=154410
-            if (event.getProperty().equals(IAction.TEXT)) {
-                String text = (String) event.getNewValue();
-                actionHandler.setText(text);
-                return;
-            }
-            if (event.getProperty().equals(IAction.TOOL_TIP_TEXT)) {
-                String text = (String) event.getNewValue();
-                actionHandler.setToolTipText(text);
-                return;
-            }
-        }
-    }
-
-    private class CellChangeListener implements IPropertyChangeListener {
-        public void propertyChange(PropertyChangeEvent event) {
-            if (activeEditor == null) {
-				return;
-			}
-            if (event.getProperty().equals(CellEditor.CUT)) {
-                cellCutAction.setEnabled(activeEditor.isCutEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.COPY)) {
-                cellCopyAction.setEnabled(activeEditor.isCopyEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.PASTE)) {
-                cellPasteAction.setEnabled(activeEditor.isPasteEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.DELETE)) {
-                cellDeleteAction.setEnabled(activeEditor.isDeleteEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.SELECT_ALL)) {
-                cellSelectAllAction.setEnabled(activeEditor
-                        .isSelectAllEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.FIND)) {
-                cellFindAction.setEnabled(activeEditor.isFindEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.UNDO)) {
-                cellUndoAction.setEnabled(activeEditor.isUndoEnabled());
-                return;
-            }
-            if (event.getProperty().equals(CellEditor.REDO)) {
-                cellRedoAction.setEnabled(activeEditor.isRedoEnabled());
-                return;
-            }
-        }
-    }
-
-    private class CutActionHandler extends Action {
-        protected CutActionHandler() {
-            setId("CellEditorCutActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_CUT_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performCut();
-                return;
-            }
-            if (cutAction != null) {
-                cutAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isCutEnabled());
-                return;
-            }
-            if (cutAction != null) {
-                setEnabled(cutAction.isEnabled());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class CopyActionHandler extends Action {
-        protected CopyActionHandler() {
-            setId("CellEditorCopyActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_COPY_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performCopy();
-                return;
-            }
-            if (copyAction != null) {
-                copyAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isCopyEnabled());
-                return;
-            }
-            if (copyAction != null) {
-                setEnabled(copyAction.isEnabled());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class PasteActionHandler extends Action {
-        protected PasteActionHandler() {
-            setId("CellEditorPasteActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_PASTE_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performPaste();
-                return;
-            }
-            if (pasteAction != null) {
-                pasteAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isPasteEnabled());
-                return;
-            }
-            if (pasteAction != null) {
-                setEnabled(pasteAction.isEnabled());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class DeleteActionHandler extends Action {
-        protected DeleteActionHandler() {
-            setId("CellEditorDeleteActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_DELETE_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performDelete();
-                return;
-            }
-            if (deleteAction != null) {
-                deleteAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isDeleteEnabled());
-                return;
-            }
-            if (deleteAction != null) {
-                setEnabled(deleteAction.isEnabled());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class SelectAllActionHandler extends Action {
-        protected SelectAllActionHandler() {
-            setId("CellEditorSelectAllActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_SELECT_ALL_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performSelectAll();
-                return;
-            }
-            if (selectAllAction != null) {
-                selectAllAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isSelectAllEnabled());
-                return;
-            }
-            if (selectAllAction != null) {
-                setEnabled(selectAllAction.isEnabled());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class FindActionHandler extends Action {
-        protected FindActionHandler() {
-            setId("CellEditorFindActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_FIND_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performFind();
-                return;
-            }
-            if (findAction != null) {
-                findAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isFindEnabled());
-                return;
-            }
-            if (findAction != null) {
-                setEnabled(findAction.isEnabled());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class UndoActionHandler extends Action {
-        protected UndoActionHandler() {
-            setId("CellEditorUndoActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_UNDO_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performUndo();
-                return;
-            }
-            if (undoAction != null) {
-                undoAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isUndoEnabled());
-                setText(WorkbenchMessages.Workbench_undo);
-                setToolTipText(WorkbenchMessages.Workbench_undoToolTip);
-                return;
-            }
-            if (undoAction != null) {
-                setEnabled(undoAction.isEnabled());
-                setText(undoAction.getText());
-                setToolTipText(undoAction.getToolTipText());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    private class RedoActionHandler extends Action {
-        protected RedoActionHandler() {
-            setId("CellEditorRedoActionHandler");//$NON-NLS-1$
-            setEnabled(false);
-            PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IWorkbenchHelpContextIds.CELL_REDO_ACTION);
-        }
-
-        public void runWithEvent(Event event) {
-            if (activeEditor != null) {
-                activeEditor.performRedo();
-                return;
-            }
-            if (redoAction != null) {
-                redoAction.runWithEvent(event);
-                return;
-            }
-        }
-
-        public void updateEnabledState() {
-            if (activeEditor != null) {
-                setEnabled(activeEditor.isRedoEnabled());
-                setText(WorkbenchMessages.Workbench_redo);
-                setToolTipText(WorkbenchMessages.Workbench_redoToolTip);
-                return;
-            }
-            if (redoAction != null) {
-                setEnabled(redoAction.isEnabled());
-                setText(redoAction.getText());
-                setToolTipText(redoAction.getToolTipText());
-                return;
-            }
-            setEnabled(false);
-        }
-    }
-
-    /**
-     * Creates a <code>CellEditor</code> action handler
-     * for the global Cut, Copy, Paste, Delete, Select All,
-     * Find, Undo, and Redo of the action bar.
-     *
-     * @param actionBar the action bar to register global
-     *    action handlers.
-     */
-    public CellEditorActionHandler(IActionBars actionBar) {
-        super();
-        actionBar.setGlobalActionHandler(ActionFactory.CUT.getId(),
-                cellCutAction);
-        actionBar.setGlobalActionHandler(ActionFactory.COPY.getId(),
-                cellCopyAction);
-        actionBar.setGlobalActionHandler(ActionFactory.PASTE.getId(),
-                cellPasteAction);
-        actionBar.setGlobalActionHandler(ActionFactory.DELETE.getId(),
-                cellDeleteAction);
-        actionBar.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(),
-                cellSelectAllAction);
-        actionBar.setGlobalActionHandler(ActionFactory.FIND.getId(),
-                cellFindAction);
-        actionBar.setGlobalActionHandler(ActionFactory.UNDO.getId(),
-                cellUndoAction);
-        actionBar.setGlobalActionHandler(ActionFactory.REDO.getId(),
-                cellRedoAction);
-    }
-
-    /**
-     * Adds a <code>CellEditor</code> to the handler so that the
-     * Cut, Copy, Paste, Delete, Select All, Find, Undo, and Redo
-     * actions are redirected to it when active.
-     *
-     * @param editor the <code>CellEditor</code>
-     */
-    public void addCellEditor(CellEditor editor) {
-        if (editor == null) {
-			return;
-		}
-
-        Control control = editor.getControl();
-        Assert.isNotNull(control);
-        controlToEditor.put(control, editor);
-        control.addListener(SWT.Activate, controlListener);
-        control.addListener(SWT.Deactivate, controlListener);
-
-        if (control.isFocusControl()) {
-            activeEditor = editor;
-            editor.addPropertyChangeListener(cellListener);
-            updateActionsEnableState();
-        }
-    }
-
-    /**
-     * Disposes of this action handler
-     */
-    public void dispose() {
-        setCutAction(null);
-        setCopyAction(null);
-        setPasteAction(null);
-        setDeleteAction(null);
-        setSelectAllAction(null);
-        setFindAction(null);
-        setUndoAction(null);
-        setRedoAction(null);
-
-        Iterator itr = controlToEditor.keySet().iterator();
-        while (itr.hasNext()) {
-            Control control = (Control) itr.next();
-            if (!control.isDisposed()) {
-                control.removeListener(SWT.Activate, controlListener);
-                control.removeListener(SWT.Deactivate, controlListener);
-            }
-        }
-        controlToEditor.clear();
-
-        if (activeEditor != null) {
-			activeEditor.removePropertyChangeListener(cellListener);
-		}
-        activeEditor = null;
-
-    }
-
-    /**
-     * Removes a <code>CellEditor</code> from the handler
-     * so that the Cut, Copy, Paste, Delete, Select All, Find
-     * Undo, and Redo actions are no longer redirected to it.
-     *
-     * @param editor the <code>CellEditor</code>
-     */
-    public void removeCellEditor(CellEditor editor) {
-        if (editor == null) {
-			return;
-		}
-
-        if (activeEditor == editor) {
-            activeEditor.removePropertyChangeListener(cellListener);
-            activeEditor = null;
-        }
-
-        Control control = editor.getControl();
-        if (control != null) {
-            controlToEditor.remove(control);
-            if (!control.isDisposed()) {
-                control.removeListener(SWT.Activate, controlListener);
-                control.removeListener(SWT.Deactivate, controlListener);
-            }
-        }
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Copy
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Copy action, or <code>null</code> if not interested.
-     */
-    public void setCopyAction(IAction action) {
-        if (copyAction == action) {
-			return;
-		}
-
-        if (copyAction != null) {
-			copyAction.removePropertyChangeListener(copyActionListener);
-		}
-
-        copyAction = action;
-
-        if (copyAction != null) {
-			copyAction.addPropertyChangeListener(copyActionListener);
-		}
-
-        cellCopyAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Cut
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Cut action, or <code>null</code> if not interested.
-     */
-    public void setCutAction(IAction action) {
-        if (cutAction == action) {
-			return;
-		}
-
-        if (cutAction != null) {
-			cutAction.removePropertyChangeListener(cutActionListener);
-		}
-
-        cutAction = action;
-
-        if (cutAction != null) {
-			cutAction.addPropertyChangeListener(cutActionListener);
-		}
-
-        cellCutAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Delete
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Delete action, or <code>null</code> if not interested.
-     */
-    public void setDeleteAction(IAction action) {
-        if (deleteAction == action) {
-			return;
-		}
-
-        if (deleteAction != null) {
-			deleteAction.removePropertyChangeListener(deleteActionListener);
-		}
-
-        deleteAction = action;
-
-        if (deleteAction != null) {
-			deleteAction.addPropertyChangeListener(deleteActionListener);
-		}
-
-        cellDeleteAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Find
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Find action, or <code>null</code> if not interested.
-     */
-    public void setFindAction(IAction action) {
-        if (findAction == action) {
-			return;
-		}
-
-        if (findAction != null) {
-			findAction.removePropertyChangeListener(findActionListener);
-		}
-
-        findAction = action;
-
-        if (findAction != null) {
-			findAction.addPropertyChangeListener(findActionListener);
-		}
-
-        cellFindAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Paste
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Paste action, or <code>null</code> if not interested.
-     */
-    public void setPasteAction(IAction action) {
-        if (pasteAction == action) {
-			return;
-		}
-
-        if (pasteAction != null) {
-			pasteAction.removePropertyChangeListener(pasteActionListener);
-		}
-
-        pasteAction = action;
-
-        if (pasteAction != null) {
-			pasteAction.addPropertyChangeListener(pasteActionListener);
-		}
-
-        cellPasteAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Redo
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Redo action, or <code>null</code> if not interested.
-     */
-    public void setRedoAction(IAction action) {
-        if (redoAction == action) {
-			return;
-		}
-
-        if (redoAction != null) {
-			redoAction.removePropertyChangeListener(redoActionListener);
-		}
-
-        redoAction = action;
-
-        if (redoAction != null) {
-			redoAction.addPropertyChangeListener(redoActionListener);
-		}
-
-        cellRedoAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Select All
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Select All action, or <code>null</code> if not interested.
-     */
-    public void setSelectAllAction(IAction action) {
-        if (selectAllAction == action) {
-			return;
-		}
-
-        if (selectAllAction != null) {
-			selectAllAction
-                    .removePropertyChangeListener(selectAllActionListener);
-		}
-
-        selectAllAction = action;
-
-        if (selectAllAction != null) {
-			selectAllAction.addPropertyChangeListener(selectAllActionListener);
-		}
-
-        cellSelectAllAction.updateEnabledState();
-    }
-
-    /**
-     * Sets the default <code>IAction</code> handler for the Undo
-     * action. This <code>IAction</code> is run only if no active
-     * cell editor control.
-     *
-     * @param action the <code>IAction</code> to run for the
-     *    Undo action, or <code>null</code> if not interested.
-     */
-    public void setUndoAction(IAction action) {
-        if (undoAction == action) {
-			return;
-		}
-
-        if (undoAction != null) {
-			undoAction.removePropertyChangeListener(undoActionListener);
-		}
-
-        undoAction = action;
-
-        if (undoAction != null) {
-			undoAction.addPropertyChangeListener(undoActionListener);
-		}
-
-        cellUndoAction.updateEnabledState();
-    }
-
-    /**
-     * Updates the enable state of the Cut, Copy,
-     * Paste, Delete, Select All, Find, Undo, and
-     * Redo action handlers
-     */
-    private void updateActionsEnableState() {
-        cellCutAction.updateEnabledState();
-        cellCopyAction.updateEnabledState();
-        cellPasteAction.updateEnabledState();
-        cellDeleteAction.updateEnabledState();
-        cellSelectAllAction.updateEnabledState();
-        cellFindAction.updateEnabledState();
-        cellUndoAction.updateEnabledState();
-        cellRedoAction.updateEnabledState();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CoolItemGroupMarker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CoolItemGroupMarker.java
deleted file mode 100644
index 51045c9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/CoolItemGroupMarker.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.action.GroupMarker;
-
-/**
- * A group marker used by EditorActionBars to delineate CoolItem groups.
- * Use this marker when contributing to the ToolBar for the EditorActionBar.  
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class CoolItemGroupMarker extends GroupMarker {
-    /**
-     * Create a new group marker with the given name.
-     * The group name must not be <code>null</code> or the empty string.
-     * The group name is also used as the item id.
-     * 
-     * Note that CoolItemGroupMarkers must have a group name and the name must
-     * be unique.
-     * 
-     * @param groupName the name of the group
-     */
-    public CoolItemGroupMarker(String groupName) {
-        super(groupName);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownAdapter.java
deleted file mode 100644
index ff1c274..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownAdapter.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-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.TreeViewer;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * Implements a simple web style navigation metaphor for a <code>TreeViewer</code>.  
- * Home, back, and "drill into" functions are supported for the viewer,
- * <p>
- * To use the <code>DrillDownAdapter</code> ..
- * </p>
- * <ul>
- * <li>Create an instance of <code>TreeViewer</code>. </li>
- * <li>Create a <code>DrillDownAdapter</code> for the viewer. </li>
- * <li>Create a container for your viewer with a toolbar or a popup menu.
- *		Add actions for "goBack", "goHome", and "goInto" to either one by calling
- *		</code>addNavigationActions</code> with the popup menu or toolbar.</li>
- * </ol>
- * <p>
- * If the input for the underlying viewer is changed by something other than the 
- * adapter the <code>reset</code> method should be called.  This will clear
- * the drill stack and update the navigation buttons to reflect the new 
- * state of the underlying viewer.
- * </p>
- * </p>
- */
-public class DrillDownAdapter implements ISelectionChangedListener {
-    private TreeViewer fChildTree;
-
-    private DrillStack fDrillStack;
-
-    private Action homeAction;
-
-    private Action backAction;
-
-    private Action forwardAction;
-
-    /**
-     * Allocates a new DrillDownTreePart.
-     *
-     * @param tree the target tree for refocusing
-     */
-    public DrillDownAdapter(TreeViewer tree) {
-        fDrillStack = new DrillStack();
-        fChildTree = tree;
-    }
-
-    /**
-     * Adds actions for "go back", "go home", and "go into" to a menu manager.
-     *
-     * @param manager is the target manager to update
-     */
-    public void addNavigationActions(IMenuManager manager) {
-        createActions();
-        manager.add(homeAction);
-        manager.add(backAction);
-        manager.add(forwardAction);
-        updateNavigationButtons();
-    }
-
-    /**
-     * Adds actions for "go back", "go home", and "go into" to a tool bar manager.
-     *
-     * @param toolBar is the target manager to update
-     */
-    public void addNavigationActions(IToolBarManager toolBar) {
-        createActions();
-        toolBar.add(homeAction);
-        toolBar.add(backAction);
-        toolBar.add(forwardAction);
-        updateNavigationButtons();
-    }
-
-    /**
-     * Returns whether expansion is possible for the current selection.  This
-     * will only be true if it has children.
-     *
-     * @param element the object to test for expansion
-     * @return <code>true</code> if expansion is possible; otherwise 
-     *		return <code>false</code
-     */
-    public boolean canExpand(Object element) {
-        return fChildTree.isExpandable(element);
-    }
-
-    /**
-     * Returns whether "go back" is possible for child tree.  This is only possible 
-     * if the client has performed one or more drilling operations.
-     *
-     * @return <code>true</code> if "go back" is possible; <code>false</code> otherwise
-     */
-    public boolean canGoBack() {
-        return fDrillStack.canGoBack();
-    }
-
-    /**
-     * Returns whether "go home" is possible for child tree.  This is only possible 
-     * if the client has performed one or more drilling operations.
-     *
-     * @return <code>true</code> if "go home" is possible; <code>false</code> otherwise
-     */
-    public boolean canGoHome() {
-        return fDrillStack.canGoHome();
-    }
-
-    /**
-     * Returns whether "go into" is possible for child tree.  This is only possible 
-     * if the current selection in the client has one item and it has children.
-     *
-     * @return <code>true</code> if "go into" is possible; <code>false</code> otherwise
-     */
-    public boolean canGoInto() {
-        IStructuredSelection oSelection = (IStructuredSelection) fChildTree
-                .getSelection();
-        if (oSelection == null || oSelection.size() != 1) {
-			return false;
-		}
-        Object anElement = oSelection.getFirstElement();
-        return canExpand(anElement);
-    }
-
-    /**
-     * Create the actions for navigation.
-     *
-     */
-    private void createActions() {
-        // Only do this once.
-        if (homeAction != null) {
-			return;
-		}
-
-        // Home.	
-        homeAction = new Action(WorkbenchMessages.GoHome_text) {
-            public void run() {
-                goHome();
-            }
-        };
-        homeAction
-                .setToolTipText(WorkbenchMessages.GoHome_toolTip);
-        homeAction
-                .setImageDescriptor(WorkbenchImages
-                        .getImageDescriptor(ISharedImages.IMG_ETOOL_HOME_NAV));
-
-        // Back.
-        ISharedImages images = PlatformUI.getWorkbench().getSharedImages();
-        backAction = new Action(WorkbenchMessages.GoBack_text) {
-            public void run() {
-                goBack();
-            }
-        };
-        backAction
-                .setToolTipText(WorkbenchMessages.GoBack_toolTip); 
-        backAction.setImageDescriptor(images
-                .getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
-        backAction.setDisabledImageDescriptor(images
-                .getImageDescriptor(ISharedImages.IMG_TOOL_BACK_DISABLED));
-
-        // Forward.
-        forwardAction = new Action(WorkbenchMessages.GoInto_text) { 
-            public void run() {
-                goInto();
-            }
-        };
-        forwardAction.setToolTipText(WorkbenchMessages.GoInto_toolTip); 
-        forwardAction.setImageDescriptor(images
-                .getImageDescriptor(ISharedImages.IMG_TOOL_FORWARD));
-        forwardAction.setDisabledImageDescriptor(images
-                .getImageDescriptor(ISharedImages.IMG_TOOL_FORWARD_DISABLED));
-
-        // Update the buttons when a selection change occurs.
-        fChildTree.addSelectionChangedListener(this);
-        updateNavigationButtons();
-    }
-
-    /**
-     * Expands the given items in the tree.  The list of items passed should be
-     * derived by calling <code>getExpanded</code>.
-     *
-     * @param items is a list of items within the tree which should be expanded
-     */
-    private void expand(List items) {
-        fChildTree.setExpandedElements(items.toArray());
-    }
-
-    /**
-     * Returns a list of elements corresponding to expanded nodes in 
-     * child tree.
-     *
-     * @return a list of expandd elements
-     */
-    private List getExpanded() {
-        return Arrays.asList(fChildTree.getExpandedElements());
-    }
-
-    /**
-     * Reverts the input for the tree back to the state when <code>goInto</code>
-     * was last called.
-     * <p>
-     * A frame is removed from the drill stack.  Then that frame is used to reset the
-     * input and expansion state for the child tree.
-     * </p>
-     */
-    public void goBack() {
-        Object currentInput = fChildTree.getInput();
-        DrillFrame oFrame = fDrillStack.goBack();
-        Object input = oFrame.getElement();
-        fChildTree.setInput(input);
-        expand(oFrame.getExpansion());
-        // if there was a selection, it should have been preserved,
-        // but if not, select the element that was drilled into
-        if (fChildTree.getSelection().isEmpty()) {
-			fChildTree
-                    .setSelection(new StructuredSelection(currentInput), true);
-		}
-        updateNavigationButtons();
-    }
-
-    /**
-     * Reverts the input for the tree back to the state when the adapter was
-     * created.
-     * <p>
-     * All of the frames are removed from the drill stack.  Then the oldest frame is 
-     * used to reset the input and expansion state for the child tree.
-     * </p>
-     */
-    public void goHome() {
-        Object currentInput = fChildTree.getInput();
-        DrillFrame oFrame = fDrillStack.goHome();
-        Object input = oFrame.getElement();
-        fChildTree.setInput(input);
-        expand(oFrame.getExpansion());
-        // if there was a selection, it should have been preserved,
-        // but if not, select the element that was last drilled into
-        if (fChildTree.getSelection().isEmpty()) {
-			fChildTree
-                    .setSelection(new StructuredSelection(currentInput), true);
-		}
-        updateNavigationButtons();
-    }
-
-    /**
-     * Sets the input for the tree to the current selection.
-     * <p>
-     * The current input and expansion state are saved in a frame and added to the 
-     * drill stack.  Then the input for the tree is changed to be the current selection.  
-     * The expansion state for the tree is maintained during the operation.
-     * </p><p>
-     * On return the client may revert back to the previous state by invoking 
-     * <code>goBack</code> or <code>goHome</code>.
-     * </p>
-     */
-    public void goInto() {
-        IStructuredSelection sel = (IStructuredSelection) fChildTree
-                .getSelection();
-        Object element = sel.getFirstElement();
-        goInto(element);
-    }
-
-    /**
-     * Sets the input for the tree to a particular item in the tree.
-     * <p>
-     * The current input and expansion state are saved in a frame and added to the 
-     * drill stack.  Then the input for the tree is changed to be <code>newInput</code>.  
-     * The expansion state for the tree is maintained during the operation.
-     * </p><p>
-     * On return the client may revert back to the previous state by invoking 
-     * <code>goBack</code> or <code>goHome</code>.
-     * </p>
-     *
-     * @param newInput the new input element
-     */
-    public void goInto(Object newInput) {
-        // If we can drill ..
-        if (canExpand(newInput)) {
-            // Save the old state.
-            Object oldInput = fChildTree.getInput();
-            List expandedList = getExpanded();
-            fDrillStack.add(new DrillFrame(oldInput, "null", expandedList));//$NON-NLS-1$
-
-            // Install the new state.
-            fChildTree.setInput(newInput);
-            expand(expandedList);
-            updateNavigationButtons();
-        }
-    }
-
-    /**
-     * Resets the drill down adapter. 
-     * <p>
-     * This method is typically called when the input for the underlying view
-     * is reset by something other than the adapter.
-     * On return the drill stack has been cleared and the navigation buttons
-     * reflect the new state of the underlying viewer.
-     * </p>
-     */
-    public void reset() {
-        fDrillStack.reset();
-        updateNavigationButtons();
-    }
-
-    /**
-     * Updates the navigation buttons when a selection change occurs
-     * in the tree.
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        updateNavigationButtons();
-    }
-
-    /**
-     * Updates the enabled state for each navigation button.  
-     */
-    protected void updateNavigationButtons() {
-        if (homeAction != null) {
-            homeAction.setEnabled(canGoHome());
-            backAction.setEnabled(canGoBack());
-            forwardAction.setEnabled(canGoInto());
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownComposite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownComposite.java
deleted file mode 100644
index b369d6a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillDownComposite.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.action.ToolBarManager;
-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.ToolBar;
-
-/**
- * Class <code>DrillDownComposite</code> implements a simple web
- * style navigation metaphor.  Home, back, and "drill into" buttons are
- * added to a tree viewer for easier navigation.
- * <p>
- * To use the DrillDownComposite..
- * </p>
- * <ul>
- * <li>Create an instance of <code>DrillDownComposite</code>.</li>
- * <li>Create a tree viewer.  </li>
- * <li>Pass the second tree viewer into the composite by 
- *   calling <code>setChildTree</code>.</li>
- * </ol>
- */
-public class DrillDownComposite extends Composite {
-    private ToolBarManager toolBarMgr;
-
-    private TreeViewer fChildTree;
-
-    private DrillDownAdapter adapter;
-
-    /**
-     * Constructs a new DrillDownTreeViewer.
-     *
-     * @param parent the parent composite for this control
-     * @param style the SWT style for this control
-     */
-    public DrillDownComposite(Composite parent, int style) {
-        super(parent, style);
-        createNavigationButtons();
-    }
-
-    /**
-     * Creates the navigation buttons for this viewer.
-     */
-    protected void createNavigationButtons() {
-        GridData gid;
-        GridLayout layout;
-
-        // Define layout.
-        layout = new GridLayout();
-        layout.marginHeight = layout.marginWidth = layout.horizontalSpacing = layout.verticalSpacing = 0;
-        setLayout(layout);
-
-        // Create a toolbar.
-        toolBarMgr = new ToolBarManager(SWT.FLAT);
-        ToolBar toolBar = toolBarMgr.createControl(this);
-        gid = new GridData();
-        gid.horizontalAlignment = GridData.FILL;
-        gid.verticalAlignment = GridData.BEGINNING;
-        toolBar.setLayoutData(gid);
-    }
-
-    /**
-     * Sets the child viewer.  This method should only be called once, after the
-     * viewer has been created.
-     *
-     * @param aViewer the new child viewer
-     */
-    public void setChildTree(TreeViewer aViewer) {
-        // Save viewer.
-        fChildTree = aViewer;
-
-        // Create adapter.
-        adapter = new DrillDownAdapter(fChildTree);
-        adapter.addNavigationActions(toolBarMgr);
-        toolBarMgr.update(true);
-
-        // Set tree layout.
-        fChildTree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-        layout();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillFrame.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillFrame.java
deleted file mode 100644
index f852ec5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillFrame.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.List;
-
-/* (non-Javadoc)
- * A <code>DrillFrame</code> is used to record the input element and
- * selection state for one frame in a <code>DrillDownTreeViewer</code>.
- * This class is not intended for use beyond the package.
- */
-/* package */class DrillFrame {
-    Object fElement;
-
-    Object fPropertyName;
-
-    List fExpansion = null;
-
-    /**
-     * Allocates a new DrillFrame.
-     *
-     * @param oElement the tree input element
-     * @param strPropertyName the visible tree property
-     * @param vExpansion the current expansion state of the tree
-     */
-    public DrillFrame(Object oElement, Object strPropertyName, List vExpansion) {
-        fElement = oElement;
-        fPropertyName = strPropertyName;
-        fExpansion = vExpansion;
-    }
-
-    /**
-     * Compares two Objects for equality.
-     * <p>
-     *
-     * @param   obj   the reference object with which to compare.
-     * @return  <code>true</code> if this object is the same as the obj
-     *          argument; <code>false</code> otherwise.
-     */
-    public boolean equals(Object obj) {
-        // Compare handles.
-        if (this == obj) {
-			return true;
-		}
-
-        // Compare class.
-        if (!(obj instanceof DrillFrame)) {
-			return false;
-		}
-
-        // Compare contents.
-        DrillFrame oOther = (DrillFrame) obj;
-        return ((fElement == oOther.fElement) && (fPropertyName
-                .equals(oOther.fPropertyName)));
-    }
-
-    /**
-     * Returns the input element.
-     *
-     * @return the input element
-     */
-    public Object getElement() {
-        return fElement;
-    }
-
-    /**
-     * Returns the expansion state for a tree.
-     *
-     * @return the expansion state for a tree
-     */
-    public List getExpansion() {
-        return fExpansion;
-    }
-
-    /**
-     * Returns the property name.
-     *
-     * @return the property name
-     */
-    public Object getPropertyName() {
-        return fPropertyName;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillStack.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillStack.java
deleted file mode 100644
index 81071e1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/DrillStack.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.Stack;
-
-/* (non-Javadoc)
- * A <code>DrillStack</code> manages a stack of DrillFrames.
- * This class is not intended for use beyond the package.
- */
-/* package */class DrillStack {
-    Stack fStack = null;
-
-    /**
-     * Allocates a new DrillStack.
-     */
-    public DrillStack() {
-        reset();
-    }
-
-    /**
-     * Adds a drill frame to the stack.
-     *
-     * @param oRecord the new drill frame
-     */
-    public DrillFrame add(DrillFrame oRecord) {
-        fStack.push(oRecord);
-        return oRecord;
-    }
-
-    /**
-     * Returns true if backward navigation is possible.  This is only true
-     * if the stack size is greater than 0.
-     *
-     * @return true if backward navigation is possible
-     */
-    public boolean canGoBack() {
-        return (fStack.size() > 0);
-    }
-
-    /**
-     * Returns true if "go home" is possible.  This is only true
-     * if the stack size is greater than 0.
-     *
-     * @return true if "go home" is possible
-     */
-    public boolean canGoHome() {
-        return (fStack.size() > 0);
-    }
-
-    /**
-     * Navigate backwards one record.
-     */
-    public DrillFrame goBack() {
-        DrillFrame aFrame = (DrillFrame) fStack.pop();
-        return aFrame;
-    }
-
-    /**
-     * Navigate to the home record.
-     */
-    public DrillFrame goHome() {
-        DrillFrame aFrame = (DrillFrame) fStack.elementAt(0);
-        reset();
-        return aFrame;
-    }
-
-    /**
-     * Clears the navigation stack.
-     */
-    public void reset() {
-        fStack = new Stack();
-    }
-
-    /**
-     * Returns the stack size.
-     *
-     * @return the stack size
-     */
-    public int size() {
-        return fStack.size();
-    }
-
-    /**
-     * Returns the top element on the stack.
-     *
-     * @return the top element on the stack
-     */
-    public DrillFrame top() {
-        return (DrillFrame) fStack.peek();
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorActionBarContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorActionBarContributor.java
deleted file mode 100644
index e9c9dac..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorActionBarContributor.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.action.ICoolBarManager;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IActionBars2;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-
-/**
- * Standard implementation of <code>IEditorActionBarContributor</code>.
- * <p>
- * If instantiated and used as-is, nothing is contribututed. Clients should
- * subclass in order to contribute to some or all of the action bars.
- * <p>
- * Subclasses may reimplement the following methods:
- * <ul>
- *   <li><code>contributeToMenu</code> - reimplement to contribute to menu</li>
- *   <li><code>contributeToToolBar</code> - reimplement to contribute to tool
- *     bar</li>
- *   <li><code>contributeToStatusLine</code> - reimplement to contribute to 
- *     status line</li>
- *   <li><code>setActiveEditor</code> - reimplement to react to editor changes</li>
- * </ul>
- * </p>
- */
-public class EditorActionBarContributor implements IEditorActionBarContributor {
-    /**
-     * The action bars; <code>null</code> until <code>init</code> is called.
-     */
-    private IActionBars bars;
-
-    /**
-     * The workbench page; <code>null</code> until <code>init</code> is called.
-     */
-    private IWorkbenchPage page;
-
-    /**
-     * Creates an empty editor action bar contributor. The action bars are
-     * furnished later via the <code>init</code> method.
-     */
-    public EditorActionBarContributor() {
-    }
-
-    /**
-     * Contributes to the given menu.
-     * <p>
-     * The <code>EditorActionBarContributor</code> implementation of this method
-     * does nothing. Subclasses may reimplement to add to the menu portion of this
-     * contribution.
-     * </p>
-     *
-     * @param menuManager the manager that controls the menu
-     */
-    public void contributeToMenu(IMenuManager menuManager) {
-    }
-
-    /**
-     * Contributes to the given status line.
-     * <p>
-     * The <code>EditorActionBarContributor</code> implementation of this method
-     * does nothing. Subclasses may reimplement to add to the status line portion of
-     * this contribution.
-     * </p>
-     *
-     * @param statusLineManager the manager of the status line
-     */
-    public void contributeToStatusLine(IStatusLineManager statusLineManager) {
-    }
-
-    /**
-     * Contributes to the given tool bar.
-     * <p>
-     * The <code>EditorActionBarContributor</code> implementation of this method
-     * does nothing. Subclasses may reimplement to add to the tool bar portion of
-     * this contribution.
-     * </p>
-     *
-     * @param toolBarManager the manager that controls the workbench tool bar
-     */
-    public void contributeToToolBar(IToolBarManager toolBarManager) {
-    }
-
-    /**
-     * Contributes to the given cool bar.
-     * <p>
-     * The <code>EditorActionBarContributor</code> implementation of this method
-     * does nothing. Subclasses may reimplement to add to the cool bar portion of
-     * this contribution. There can only be contributions from a cool bar or a tool bar.
-     * </p>
-     *
-     * @param coolBarManager the manager that controls the workbench cool bar.
-     * 
-     * @since 3.0
-     */
-    public void contributeToCoolBar(ICoolBarManager coolBarManager) {
-    }
-
-    /**
-     * Returns this contributor's action bars.
-     *
-     * @return the action bars
-     */
-    public IActionBars getActionBars() {
-        return bars;
-    }
-
-    /**
-     * Returns this contributor's workbench page.
-     *
-     * @return the workbench page
-     */
-    public IWorkbenchPage getPage() {
-        return page;
-    }
-
-    /**
-     * The <code>EditorActionBarContributor</code> implementation of this 
-     * <code>IEditorActionBarContributor</code> method does nothing,
-     * subclasses may override.
-     */
-    public void dispose() {
-    }
-
-    /**
-     * The <code>EditorActionBarContributor</code> implementation of this 
-     * <code>IEditorActionBarContributor</code> method remembers the page
-     * then forwards the call to <code>init(IActionBars)</code> for
-     * backward compatibility
-     */
-    public void init(IActionBars bars, IWorkbenchPage page) {
-        this.page = page;
-        init(bars);
-    }
-
-    /**
-     * This method calls:
-     * <ul>
-     *  <li><code>contributeToMenu</code> with <code>bars</code>' menu manager</li>
-     *  <li><code>contributeToToolBar</code> with <code>bars</code>' tool bar
-     *    manager</li>
-     *  <li><code>contributeToCoolBar</code> with <code>bars</code>' cool bar
-     *    manager if <code>IActionBars</code> is of extended type <code>IActionBars2</code> </li>
-     *  <li><code>contributeToStatusLine</code> with <code>bars</code>' status line
-     *    manager</li>
-     * </ul>
-     * The given action bars are also remembered and made accessible via 
-     * <code>getActionBars</code>.
-     * 
-     * @param bars the action bars
-     */
-    public void init(IActionBars bars) {
-        this.bars = bars;
-        contributeToMenu(bars.getMenuManager());
-        contributeToToolBar(bars.getToolBarManager());
-        if (bars instanceof IActionBars2) {
-            contributeToCoolBar(((IActionBars2) bars).getCoolBarManager());
-        }
-        contributeToStatusLine(bars.getStatusLineManager());
-
-    }
-
-    /**
-     * Sets the active editor for the contributor.
-     * <p>
-     * The <code>EditorActionBarContributor</code> implementation of this method does
-     * nothing. Subclasses may reimplement. This generally entails disconnecting
-     * from the old editor, connecting to the new editor, and updating the actions
-     * to reflect the new editor.
-     * </p>
-     * 
-     * @param targetEditor the new target editor
-     */
-    public void setActiveEditor(IEditorPart targetEditor) {
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorInputTransfer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorInputTransfer.java
deleted file mode 100644
index d7b0b42..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorInputTransfer.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.swt.dnd.ByteArrayTransfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IElementFactory;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.eclipse.ui.XMLMemento;
-
-/**
- * The <code>EditorInputTransfer</code> class is used to transfer an
- * <code>IEditorInput</code> and corresponding editorId from one part to another
- * in a drag and drop operation.  Only opening of internal editors is supported.
- * <p> 
- * In every drag and drop operation there is a <code>DragSource</code> and a
- * <code>DropTarget</code>.  When a drag occurs a <code>Transfer</code> is used
- * to marshall the drag data from the source into a byte array.  If a drop
- * occurs another <code>Transfer</code> is used to marshall the byte array into
- * drop data for the target.
- * </p>
- * <p>
- * This class can be used for a <code>Viewer</code> or an SWT component directly.
- * A singleton is provided which may be serially reused (see <code>getInstance</code>).  
- * For an implementor of <code>IEditorInput</code> to be supported by
- * <code>EditorInputTransfer</code>, it must provide a proper implementation of
- * <code>IEditorInput</code>.<code>getPersistable</code>.  For further details,
- * consult the <code>org.eclipse.ui.elementFactories</code> extension point.
- * </p>
- * <p> 
- * The data for a transfer is represented by the <code>EditorInputData</code>
- * class, and a convenience method <code>createEditorInputData</code> is
- * provided.  A <code>DragSource</code>.<code>dragSetData</code> implementation
- * should set the data to an array of <code>EditorInputData</code>.  In this
- * way, the dragging of multiple editor inputs is supported.
- * </p>
- * <p>
- * Below is an example of how to set the data for dragging a single editor
- * input using a <code>EditorInputTransfer</code>.
- * </p>
- * <p>
- * <pre>
- * public void dragSetData(DragSourceEvent event) {
- * 		if (EditorInputTransfer.getInstance().isSupportedType(event.dataType)) {
- * 
- * 			EditorInputTransfer.EditorInputData data = 
- * 				EditorInputTransfer.
- * 				createEditorInputData(EDITOR_ID, getEditorInput());
- * 			event.data = new EditorInputTransfer.EditorInputData [] {data};
- * 		}
- * }
- * </pre>
- * </p>
- *
- * @see org.eclipse.jface.viewers.StructuredViewer
- * @see org.eclipse.swt.dnd.DropTarget
- * @see org.eclipse.swt.dnd.DragSource
- * @see org.eclipse.ui.IEditorInput
- * @see org.eclipse.ui.IPersistableElement
- * @see org.eclipse.ui.IElementFactory
- */
-public class EditorInputTransfer extends ByteArrayTransfer {
-
-    /**
-     * Singleton instance.
-     */
-    private static final EditorInputTransfer instance = new EditorInputTransfer();
-
-    // Create a unique ID to make sure that different Eclipse
-    // applications use different "types" of <code>EditorInputTransfer</code>
-    private static final String TYPE_NAME = "editor-input-transfer-format:" + System.currentTimeMillis() + ":" + instance.hashCode(); //$NON-NLS-2$//$NON-NLS-1$
-
-    private static final int TYPEID = registerType(TYPE_NAME);
-
-    public static class EditorInputData {
-
-        public String editorId;
-
-        public IEditorInput input;
-
-        private EditorInputData(String editorId, IEditorInput input) {
-            this.editorId = editorId;
-            this.input = input;
-        }
-    }
-
-    /**
-     * Creates a new transfer object.
-     */
-    private EditorInputTransfer() {
-    }
-
-    /**
-     * Returns the singleton instance.
-     *
-     * @return the singleton instance
-     */
-    public static EditorInputTransfer getInstance() {
-        return instance;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Transfer.
-     */
-    protected int[] getTypeIds() {
-        return new int[] { TYPEID };
-    }
-
-    /* (non-Javadoc)
-     * Returns the type names.
-     *
-     * @return the list of type names
-     */
-    protected String[] getTypeNames() {
-        return new String[] { TYPE_NAME };
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Transfer.
-     */
-    public void javaToNative(Object data, TransferData transferData) {
-
-        if (!(data instanceof EditorInputData[])) {
-            return;
-        }
-
-        EditorInputData[] editorInputs = (EditorInputData[]) data;
-        /**
-         * The editor input serialization format is:
-         * (int)	number of editor inputs
-         * Then, the following for each editor input:
-         * (String)	editorId
-         * (String)	factoryId 
-         * (String)	data used to recreate the IEditorInput
-         */
-
-        int editorInputCount = editorInputs.length;
-
-        try {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            DataOutputStream dataOut = new DataOutputStream(out);
-
-            //write the number of resources
-            dataOut.writeInt(editorInputCount);
-
-            //write each resource
-            for (int i = 0; i < editorInputs.length; i++) {
-                writeEditorInput(dataOut, editorInputs[i]);
-            }
-
-            //cleanup
-            dataOut.close();
-            out.close();
-            byte[] bytes = out.toByteArray();
-            super.javaToNative(bytes, transferData);
-        } catch (IOException e) {
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Transfer.
-     */
-    public Object nativeToJava(TransferData transferData) {
-
-        byte[] bytes = (byte[]) super.nativeToJava(transferData);
-        if (bytes == null) {
-			return null;
-		}
-        DataInputStream in = new DataInputStream(
-                new ByteArrayInputStream(bytes));
-        try {
-            int count = in.readInt();
-            EditorInputData[] results = new EditorInputData[count];
-            for (int i = 0; i < count; i++) {
-                results[i] = readEditorInput(in);
-            }
-            return results;
-        } catch (IOException e) {
-            return null;
-        } catch (WorkbenchException e) {
-            return null;
-        }
-
-    }
-
-    /**
-     * Method readEditorInput.
-     * @param in
-     * @return EditorInputData
-     */
-    private EditorInputData readEditorInput(DataInputStream dataIn)
-            throws IOException, WorkbenchException {
-
-        String editorId = dataIn.readUTF();
-        String factoryId = dataIn.readUTF();
-        String xmlString = dataIn.readUTF();
-
-        if (xmlString == null || xmlString.length() == 0) {
-			return null;
-		}
-
-        StringReader reader = new StringReader(xmlString);
-
-        // Restore the editor input
-        XMLMemento memento = XMLMemento.createReadRoot(reader);
-
-        IElementFactory factory = PlatformUI.getWorkbench().getElementFactory(
-                factoryId);
-
-        if (factory != null) {
-            IAdaptable adaptable = factory.createElement(memento);
-            if (adaptable != null && (adaptable instanceof IEditorInput)) {
-                return new EditorInputData(editorId, (IEditorInput) adaptable);
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Method writeEditorInput.
-     * @param dataOut
-     * @param editorInputData
-     */
-    private void writeEditorInput(DataOutputStream dataOut,
-            EditorInputData editorInputData) throws IOException {
-        //write the id of the editor
-        dataOut.writeUTF(editorInputData.editorId);
-
-        //write the information needed to recreate the editor input
-        if (editorInputData.input != null) {
-            // Capture the editor information
-            XMLMemento memento = XMLMemento.createWriteRoot("IEditorInput");//$NON-NLS-1$
-
-            IPersistableElement element = editorInputData.input
-                    .getPersistable();
-            if (element != null) {
-                //get the IEditorInput to save its state
-                element.saveState(memento);
-
-                //convert memento to String
-                StringWriter writer = new StringWriter();
-                memento.save(writer);
-                writer.close();
-
-                //write the factor ID and state information
-                dataOut.writeUTF(element.getFactoryId());
-                dataOut.writeUTF(writer.toString());
-            }
-        }
-    }
-
-    public static EditorInputData createEditorInputData(String editorId,
-            IEditorInput input) {
-        return new EditorInputData(editorId, input);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorPart.java
deleted file mode 100644
index ea93d00..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/EditorPart.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PartInitException;
-
-/**
- * Abstract base implementation of all workbench editors.
- * <p>
- * This class should be subclassed by clients wishing to define new editors.
- * The name of the subclass should be given as the <code>"class"</code> 
- * attribute in a <code>editor</code> extension contributed to the workbench's
- * view extension point (named <code>"org.eclipse.ui.editors"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.editors"&GT;
- *      &LT;editor id="com.example.myplugin.ed"
- *         name="My Editor"
- *         icon="./images/cedit.gif"
- * 		   extensions="foo" 
- * 		   class="com.example.myplugin.MyFooEditor" 
- * 		   contributorClass="com.example.myplugin.MyFooEditorContributor" 
- *      /&GT;
- * &LT;/extension&GT;
- * </pre>
- * where <code>com.example.myplugin.MyEditor</code> is the name of the
- * <code>EditorPart</code> subclass.
- * </p>
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- *   <li><code>IEditorPart.init</code> - to initialize editor when assigned its site</li>
- *   <li><code>IWorkbenchPart.createPartControl</code> - to create the editor's controls </li>
- *   <li><code>IWorkbenchPart.setFocus</code> - to accept focus</li>
- *   <li><code>IEditorPart.isDirty</code> - to decide whether a significant change has
- *       occurred</li>
- *   <li><code>IEditorPart.doSave</code> - to save contents of editor</li>
- *   <li><code>IEditorPart.doSaveAs</code> - to save contents of editor</li>
- *   <li><code>IEditorPart.isSaveAsAllowed</code> - to control Save As</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend or reimplement the following methods as required:
- * <ul>
- *   <li><code>IExecutableExtension.setInitializationData</code> - extend to provide additional 
- *       initialization when editor extension is instantiated</li>
- *   <li><code>IWorkbenchPart.dispose</code> - extend to provide additional cleanup</li>
- *   <li><code>IAdaptable.getAdapter</code> - reimplement to make the editor
- *       adaptable</li>
- * </ul>
- * </p>
- */
-public abstract class EditorPart extends WorkbenchPart implements IEditorPart {
-
-    /**
-     * Editor input, or <code>null</code> if none.
-     */
-    private IEditorInput editorInput = null;
-
-    /**
-     * Listens to PROP_TITLE property changes in this object until the first call to
-     * setContentDescription. Used for compatibility with old parts that call setTitle
-     * or overload getTitle instead of using setContentDescription. 
-     */
-    private IPropertyListener compatibilityTitleListener = new IPropertyListener() {
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int)
-         */
-        public void propertyChanged(Object source, int propId) {
-            if (propId == IWorkbenchPartConstants.PROP_TITLE) {
-                setDefaultPartName();
-            }
-        }
-    };
-
-    /**
-     * Creates a new workbench editor.
-     */
-    protected EditorPart() {
-        super();
-
-        addPropertyListener(compatibilityTitleListener);
-    }
-
-    /* (non-Javadoc)
-     * Saves the contents of this editor.
-     * <p>
-     * Subclasses must override this method to implement the open-save-close lifecycle
-     * for an editor.  For greater details, see <code>IEditorPart</code>
-     * </p>
-     *
-     * @see IEditorPart
-     */
-    public abstract void doSave(IProgressMonitor monitor);
-
-    /* (non-Javadoc)
-     * Saves the contents of this editor to another object.
-     * <p>
-     * Subclasses must override this method to implement the open-save-close lifecycle
-     * for an editor.  For greater details, see <code>IEditorPart</code>
-     * </p>
-     *
-     * @see IEditorPart
-     */
-    public abstract void doSaveAs();
-
-    /* (non-Javadoc)
-     * Method declared on IEditorPart.
-     */
-    public IEditorInput getEditorInput() {
-        return editorInput;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IEditorPart.
-     */
-    public IEditorSite getEditorSite() {
-        return (IEditorSite) getSite();
-    }
-
-    /* (non-Javadoc)
-     * Gets the title tool tip text of this part.
-     *
-     * @return the tool tip text
-     */
-    public String getTitleToolTip() {
-        if (editorInput == null) {
-			return super.getTitleToolTip();
-		} else {
-			return editorInput.getToolTipText();
-		}
-    }
-
-    /* (non-Javadoc)
-     * Initializes the editor part with a site and input.
-     * <p>
-     * Subclasses of <code>EditorPart</code> must implement this method.  Within
-     * the implementation subclasses should verify that the input type is acceptable
-     * and then save the site and input.  Here is sample code:
-     * </p>
-     * <pre>
-     *		if (!(input instanceof IFileEditorInput))
-     *			throw new PartInitException("Invalid Input: Must be IFileEditorInput");
-     *		setSite(site);
-     *		setInput(input);
-     * </pre>
-     */
-    public abstract void init(IEditorSite site, IEditorInput input)
-            throws PartInitException;
-
-    /* (non-Javadoc)
-     * Returns whether the contents of this editor have changed since the last save
-     * operation.
-     * <p>
-     * Subclasses must override this method to implement the open-save-close lifecycle
-     * for an editor.  For greater details, see <code>IEditorPart</code>
-     * </p>
-     *
-     * @see IEditorPart
-     */
-    public abstract boolean isDirty();
-
-    /* (non-Javadoc)
-     * Returns whether the "save as" operation is supported by this editor.
-     * <p>
-     * Subclasses must override this method to implement the open-save-close lifecycle
-     * for an editor.  For greater details, see <code>IEditorPart</code>
-     * </p>
-     *
-     * @see IEditorPart
-     */
-    public abstract boolean isSaveAsAllowed();
-
-    /* (non-Javadoc)
-     * Returns whether the contents of this editor should be saved when the editor
-     * is closed.
-     * <p>
-     * This method returns <code>true</code> if and only if the editor is dirty 
-     * (<code>isDirty</code>).
-     * </p>
-     */
-    public boolean isSaveOnCloseNeeded() {
-        return isDirty();
-    }
-
-    /**
-     * Sets the input to this editor.  This method simply updates the internal
-     * member variable.
-     * 
-     * <p>Unlike most of the other set methods on this class, this method does 
-     * not fire a property change. Clients that call this method from a subclass 
-     * must ensure that they fire an IWorkbenchPartConstants.PROP_INPUT property 
-     * change after calling this method but before leaving whatever public method
-     * they are in. Clients that expose this method as public API must fire
-     * the property change within their implementation of setInput.</p>
-     * 
-     * <p>Note that firing a property change may cause listeners to immediately 
-     * reach back and call methods on this editor. Care should be taken not to 
-     * fire the property change until the editor has fully updated its internal 
-     * state to reflect the new input.</p>
-     *
-     * @param input the editor input
-     * 
-     * @see #setInputWithNotify(IEditorInput)
-     */
-    protected void setInput(IEditorInput input) {
-        editorInput = input;
-    }
-    
-    /**
-     * Sets the input to this editor and fires a PROP_INPUT property change if
-     * the input has changed.  This is the convenience method implementation.
-     * 
-     * <p>Note that firing a property change may cause other objects to reach back
-     * and invoke methods on the editor. Care should be taken not to call this method
-     * until the editor has fully updated its internal state to reflect the
-     * new input.</p>
-     * 
-     * @since 3.2
-     *
-     * @param input the editor input
-     */
-    protected void setInputWithNotify(IEditorInput input) {
-        if (input != editorInput) {
-            editorInput = input;
-            firePropertyChange(PROP_INPUT);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.part.WorkbenchPart#setContentDescription(java.lang.String)
-     */
-    protected void setContentDescription(String description) {
-        if (compatibilityTitleListener != null) {
-            removePropertyListener(compatibilityTitleListener);
-            compatibilityTitleListener = null;
-        }
-
-        super.setContentDescription(description);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.part.WorkbenchPart#setPartName(java.lang.String)
-     */
-    protected void setPartName(String partName) {
-        if (compatibilityTitleListener != null) {
-            removePropertyListener(compatibilityTitleListener);
-            compatibilityTitleListener = null;
-        }
-
-        super.setPartName(partName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
-     */
-    public void setInitializationData(IConfigurationElement cfig,
-            String propertyName, Object data) {
-        super.setInitializationData(cfig, propertyName, data);
-
-        setDefaultPartName();
-    }
-    
-
-    private void setDefaultPartName() {
-        if (compatibilityTitleListener == null) {
-            return;
-        }
-
-        internalSetPartName(getTitle());
-    }
-
-    /**
-     * Set the default title for the receiver.
-     */
-    void setDefaultTitle() {
-        setTitle(getPartName());
-    }
-
-    /**
-     * Checks that the given site is valid for this type of part.
-     * The site for an editor must be an <code>IEditorSite</code>.
-     * 
-     * @param site the site to check
-     * @since 3.1
-     */
-    protected final void checkSite(IWorkbenchPartSite site) {
-        super.checkSite(site);
-        Assert.isTrue(site instanceof IEditorSite, "The site for an editor must be an IEditorSite"); //$NON-NLS-1$
-    }    
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IContributedContentsView.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IContributedContentsView.java
deleted file mode 100644
index a3c11c0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IContributedContentsView.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * This interface is used to identify workbench views which
- * allow other parts (typically the active part) to supply
- * their contents.
- * The interface allows access to the part which contributed the current
- * contents.
- */
-public interface IContributedContentsView {
-    /**
-     * Returns the workbench part which contributed the
-     * current contents of this view.
-     *
-     * @return the part which contributed the current contents
-     */
-    public IWorkbenchPart getContributingPart();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IDropActionDelegate.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IDropActionDelegate.java
deleted file mode 100644
index 4b551a4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IDropActionDelegate.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-/**
- * Interface for actions supplied by extensions to the
- * org.eclipse.ui.dropActions extension point.
- */
-public interface IDropActionDelegate {
-    /**
-     * Runs the drop action on the given source and target.
-     * @param source The object that is being dragged.
-     * @param target The object that the drop is occurring over.
-     * @return boolean True if the drop was successful, and false otherwise.
-     */
-    public boolean run(Object source, Object target);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPage.java
deleted file mode 100644
index 608321e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPage.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IActionBars;
-
-/**
- * This interface has been replaced by <code>IPageBookViewPage</code>
- * but is preserved for backward compatibility.
- * <p>
- * This class is not intended to be directly implemented by clients; clients
- * should instead subclass <code>Page</code>.
- * </p>
- *
- * @see PageBookView
- * @see Page
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPage {
-    /**
-     * Creates the SWT control for this page under the given parent 
-     * control.
-     * <p>
-     * Clients should not call this method (the workbench calls this method when
-     * it needs to, which may be never).
-     * </p>
-     *
-     * @param parent the parent control
-     */
-    public void createControl(Composite parent);
-
-    /**
-     * Disposes of this page.
-     * <p>
-     * This is the last method called on the <code>IPage</code>. Implementors should 
-     * clean up any resources associated with the page.
-     * </p>
-     * Callers of this method should ensure that the page's control (if it exists)
-     * has been disposed before calling this method. However, for backward compatibilty,
-     * implementors must also ensure that the page's control has been disposed before
-     * this method returns.  
-     * </p>
-     * <p>
-     * Note that there is no guarantee that createControl() has been called, 
-     * so the control may never have been created.
-     * </p>
-     */
-    public void dispose();
-
-    /**
-     * Returns the SWT control for this page.
-     *
-     * @return the SWT control for this page, or <code>null</code> if this
-     *   page does not have a control
-     */
-    public Control getControl();
-
-    /**
-     * Allows the page to make contributions to the given action bars.
-     * The contributions will be visible when the page is visible.
-     * <p>
-     * This method is automatically called shortly after 
-     * <code>createControl</code> is called
-     * </p>
-     *
-     * @param actionBars the action bars for this page
-     */
-    public void setActionBars(IActionBars actionBars);
-
-    /**
-     * Asks this page to take focus within its pagebook view.
-     */
-    public void setFocus();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageBookViewPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageBookViewPage.java
deleted file mode 100644
index ca1df11..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageBookViewPage.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.ui.PartInitException;
-
-/**
- * Interface for a page in a pagebook view.
- * <p>
- * Pages should implement this interface.
- * </p>	
- * @see PageBookView
- * @see Page
- */
-public interface IPageBookViewPage extends IPage {
-    /**
-     * Returns the site for this page. May be <code>null</code>
-     * if no site has been set.
-     *
-     * @return the page site or <code>null</code>
-     */
-    public IPageSite getSite();
-
-    /**
-     * Initializes this page with the given page site.  
-     * <p>
-     * This method is automatically called by the workbench shortly after page 
-     * construction.  It marks the start of the pages's lifecycle. Clients must 
-     * not call this method.
-     * </p>
-     *
-     * @param site the page site
-     * @exception PartInitException if this page was not initialized successfully
-     */
-    public void init(IPageSite site) throws PartInitException;
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageSite.java
deleted file mode 100644
index 4b44064..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IPageSite.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchSite;
-
-/**
- * The primary interface between a page and the outside world.
- * <p>
- * The workbench exposes its implemention of page sites via this interface,
- * which is not intended to be implemented or extended by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- */
-
-public interface IPageSite extends IWorkbenchSite {
-    /**
-     * Registers a pop-up menu with a particular id for extension.
-     * <p>
-     * Within the workbench one plug-in may extend the pop-up menus for a view
-     * or editor within another plug-in.  In order to be eligible for extension,
-     * the menu must be registered by calling <code>registerContextMenu</code>.
-     * Once this has been done the workbench will automatically insert any action 
-     * extensions which exist.
-     * </p>
-     * <p>
-     * A unique menu id must be provided for each registered menu. This id should
-     * be published in the Javadoc for the page.
-     * </p>
-     * <p>
-     * Any pop-up menu which is registered with the workbench should also define a  
-     * <code>GroupMarker</code> in the registered menu with id 
-     * <code>IWorkbenchActionConstants.MB_ADDITIONS</code>.  Other plug-ins will use this 
-     * group as a reference point for insertion.  The marker should be defined at an 
-     * appropriate location within the menu for insertion.  
-     * </p>
-     *
-     * @param menuId the menu id
-     * @param menuManager the menu manager
-     * @param selectionProvider the selection provider
-     */
-    public void registerContextMenu(String menuId, MenuManager menuManager,
-            ISelectionProvider selectionProvider);
-
-    /**
-     * Returns the action bars for this page site.
-     * Pages have exclusive use of their site's action bars.
-     *
-     * @return the action bars
-     */
-    public IActionBars getActionBars();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ISetSelectionTarget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ISetSelectionTarget.java
deleted file mode 100644
index 5b04b68..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ISetSelectionTarget.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.viewers.ISelection;
-
-/**
- * Interface for views which support reveal and select.
- * <p>
- * This interface may be implemented by subclasses of <code>ViewPart</code>.
- * This interface is commonly used by a New wizard to reveal and select a
- * resource in a workbench part which it has just created.
- * </p>
- *
- * @see org.eclipse.ui.IViewPart
- * @see org.eclipse.ui.part.ViewPart
- */
-public interface ISetSelectionTarget {
-    /**
-     * Reveals and selects the given element within this target view.
-     *
-     * @param selection the new element to select
-     */
-    public void selectReveal(ISelection selection);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInSource.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInSource.java
deleted file mode 100644
index d0eefc0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInSource.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-/**
- * Parts which need to provide a particular context to a Show In...
- * target can provide this interface.
- * The part can either directly implement this interface, or provide it
- * via <code>IAdaptable.getAdapter(IShowInSource.class)</code>.
- * 
- * @see IShowInTarget
- * 
- * @since 2.1
- */
-public interface IShowInSource {
-
-    /**
-     * Returns the context to show, or <code>null</code> if there is 
-     * currently no valid context to show.
-     * 
-     * @return the context to show, or <code>null</code>
-     */
-    public ShowInContext getShowInContext();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTarget.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTarget.java
deleted file mode 100644
index 912dcab..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTarget.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-/**
- * This interface must be provided by Show In targets (parts listed
- * in the Show In prompter).
- * The part can either directly implement this interface, or provide it
- * via <code>IAdaptable.getAdapter(IShowInTarget.class)</code>.
- * 
- * @see org.eclipse.ui.IPageLayout#addShowInPart
- * 
- * @since 2.1
- */
-public interface IShowInTarget {
-
-    /**
-     * Shows the given context in this target.
-     * The target should check the context's selection for elements
-     * to show.  If there are no relevant elements in the selection,
-     * then it should check the context's input. 
-     *
-     * @param context the context to show
-     * @return <code>true</code> if the context could be shown,
-     *   <code>false</code> otherwise
-     */
-    public boolean show(ShowInContext context);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTargetList.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTargetList.java
deleted file mode 100644
index b5238a4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IShowInTargetList.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-/**
- * Show In sources which need to provide additional entries to the Show In list of targets
- * can provide this interface.
- * The part can either directly implement this interface, or provide it
- * via <code>IAdaptable.getAdapter(IShowInTargetList)</code>.
- * 
- * @see IShowInSource
- * @see IShowInTarget
- * 
- * @since 2.1
- */
-public interface IShowInTargetList {
-
-    /**
-     * Returns the identifiers for the target parts to show.
-     * The target parts must be Show In targets.
-     * 
-     * @return the identifiers for the target parts to show
-     * 
-     * @see IShowInTarget
-     */
-    public String[] getShowInTargetIds();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IWorkbenchPartOrientation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IWorkbenchPartOrientation.java
deleted file mode 100644
index bf2baa0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IWorkbenchPartOrientation.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-
-/**
- * The IWorkbenchPartOrientation is the interface that defines the orientation
- * of the part. If a type does not implement this interface an orientation of
- * SWT.NONE will be assumed.
- * 
- * @see org.eclipse.swt.SWT#RIGHT_TO_LEFT
- * @see org.eclipse.swt.SWT#LEFT_TO_RIGHT 
- * @see org.eclipse.swt.SWT#NONE
- * @see Window#getDefaultOrientation()
- * @since 3.1
- */
-public interface IWorkbenchPartOrientation {
-	/**
-	 * Return the orientation of this part.
-	 * 
-	 * @return int SWT#RIGHT_TO_LEFT or SWT#LEFT_TO_RIGHT
-	 * @see Window#getDefaultOrientation()
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 * @see Window#getDefaultOrientation()
-	 */
-	public int getOrientation();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IntroPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IntroPart.java
deleted file mode 100644
index 8a6bb1a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/IntroPart.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.intro.IntroMessages;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.intro.IIntroPart;
-import org.eclipse.ui.intro.IIntroSite;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Abstract base implementation of an intro part.
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- * <li><code>createPartControl</code>- to create the intro part's controls
- * </li>
- * <li><code>setFocus</code>- to accept focus</li>
- * <li><code>standbyStateChanged</code>- to change the standby mode</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend or reimplement the following methods as required:
- * <ul>
- * <li><code>setInitializationData</code>- extend to provide additional
- * initialization when the intro extension is instantiated</li>
- * <li><code>init(IIntroSite, IMemento)</code>- extend to provide additional
- * initialization when intro is assigned its site</li>
- * <li><code>dispose</code>- extend to provide additional cleanup</li>
- * <li><code>getAdapter</code>- reimplement to make their intro adaptable
- * </li>
- * </ul>
- * </p>
- * @since 3.0
- */
-public abstract class IntroPart extends EventManager implements IIntroPart,
-		IExecutableExtension {
-
-    private IConfigurationElement configElement;
-
-    private ImageDescriptor imageDescriptor;
-
-    private IIntroSite partSite;
-
-    private Image titleImage;
-
-	private String titleLabel;
-
-    /**
-     * Creates a new intro part.
-     */
-    protected IntroPart() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.intro.IIntroPart#addPropertyListener(org.eclipse.ui.IPropertyListener)
-     */
-    public void addPropertyListener(IPropertyListener l) {
-        addListenerObject(l);
-    }
-
-    /*
-     * (non-Javadoc) Creates the SWT controls for this intro part. <p>
-     * Subclasses must implement this method. For a detailed description of the
-     * requirements see <code> IIntroPart </code></p>
-     * 
-     * @param parent the parent control
-     * 
-     * @see IIntroPart
-     */
-    public abstract void createPartControl(Composite parent);
-
-    /**
-     * The <code>IntroPart</code> implementation of this
-     * <code>IIntroPart</code> method disposes the title image loaded by
-     * <code>setInitializationData</code>. Subclasses may extend.
-     */
-    public void dispose() {
-        if (titleImage != null) {
-            JFaceResources.getResources().destroyImage(imageDescriptor);
-            titleImage = null;
-        }
-
-        // Clear out the property change listeners as we
-        // should not be notifying anyone after the part
-        // has been disposed.
-        clearListeners();
-    }
-
-    /**
-     * Fires a property changed event.
-     * 
-     * @param propertyId
-     *            the id of the property that changed
-     */
-    protected void firePropertyChange(final int propertyId) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            final IPropertyListener l = (IPropertyListener) array[nX];
-            Platform.run(new SafeRunnable() {
-
-                public void run() {
-                    l.propertyChanged(this, propertyId);
-                }
-            });
-        }
-    }
-
-    /**
-     * This implementation of the method declared by <code>IAdaptable</code>
-     * passes the request along to the platform's adapter manager; roughly
-     * <code>Platform.getAdapterManager().getAdapter(this, adapter)</code>.
-     * Subclasses may override this method (however, if they do so, they should
-     * invoke the method on their superclass to ensure that the Platform's
-     * adapter manager is consulted).
-     */
-    public Object getAdapter(Class adapter) {
-        return Platform.getAdapterManager().getAdapter(this, adapter);
-    }
-
-    /**
-     * Returns the configuration element for this part. The configuration
-     * element comes from the plug-in registry entry for the extension defining
-     * this part.
-     * 
-     * @return the configuration element for this part
-     */
-    protected IConfigurationElement getConfigurationElement() {
-        return configElement;
-    }
-
-    /**
-     * Returns the default title image.
-     * 
-     * @return the default image
-     */
-    protected Image getDefaultImage() {
-        return PlatformUI.getWorkbench().getSharedImages().getImage(
-                ISharedImages.IMG_DEF_VIEW);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.eclipse.ui.intro.IIntroPart#getIntroSite()
-     */
-    public final IIntroSite getIntroSite() {
-        return partSite;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.intro.IIntroPart#getTitleImage()
-     */
-    public Image getTitleImage() {
-        if (titleImage != null) {
-            return titleImage;
-        }
-        return getDefaultImage();
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.intro.IIntroPart#getTitle()
-     */
-    public String getTitle() {
-    	if (titleLabel != null) {
-    		return titleLabel;
-    	}
-    	return getDefaultTitle();
-    }
-
-    /**
-     * Return the default title string.
-     * 
-	 * @return the default title string
-	 */
-	private String getDefaultTitle() {
-		return IntroMessages.Intro_default_title;
-	}
-
-	/**
-     * The base implementation of this {@link org.eclipse.ui.intro.IIntroPart}method ignores the
-     * memento and initializes the part in a fresh state. Subclasses may extend
-     * to perform any state restoration, but must call the super method.
-     * 
-     * @param site
-     *            the intro site
-     * @param memento
-     *            the intro part state or <code>null</code> if there is no
-     *            previous saved state
-     * @exception PartInitException
-     *                if this part was not initialized successfully
-     */
-    public void init(IIntroSite site, IMemento memento)
-            throws PartInitException {
-        setSite(site);
-    }
-
-    /**
-     * Sets the part site.
-     * <p>
-     * Subclasses must invoke this method from {@link org.eclipse.ui.intro.IIntroPart#init(IIntroSite, IMemento)}.
-     * </p>
-     *
-     * @param site the intro part site
-     */
-    protected void setSite(IIntroSite site) {
-        this.partSite = site;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.intro.IIntroPart#removePropertyListener(org.eclipse.ui.IPropertyListener)
-     */
-    public void removePropertyListener(IPropertyListener l) {
-        removeListenerObject(l);
-    }
-
-    /**
-     * The base implementation of this {@link org.eclipse.ui.intro.IIntroPart} method does nothing.
-     * Subclasses may override.
-     * 
-     * @param memento
-     *            a memento to receive the object state
-     */
-    public void saveState(IMemento memento) {
-        //no-op
-    }
-
-    /*
-     * (non-Javadoc) Asks this part to take focus within the workbench. 
-     * <p>
-     * Subclasses must implement this method. For a detailed description of the
-     * requirements see <code>IIntroPart</code>
-     * </p>
-     * 
-     * @see IIntroPart
-     */
-    public abstract void setFocus();
-
-    /**
-     * The <code>IntroPart</code> implementation of this
-     * <code>IExecutableExtension</code> records the configuration element in
-     * and internal state variable (accessible via <code>getConfigElement</code>).
-     * It also loads the title image, if one is specified in the configuration
-     * element. Subclasses may extend.
-     * 
-     * Should not be called by clients. It is called by the core plugin when
-     * creating this executable extension.
-     */
-    public void setInitializationData(IConfigurationElement cfig,
-            String propertyName, Object data) {
-
-        // Save config element.
-        configElement = cfig;
-
-        titleLabel = cfig.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
-        
-        // Icon.
-        String strIcon = cfig.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
-        if (strIcon == null) {
-			return;
-		}
-
-        imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-                configElement.getNamespace(), strIcon);
-
-        if (imageDescriptor == null) {
-			return;
-		}
-
-        Image image = JFaceResources.getResources().createImageWithDefault(imageDescriptor);
-        titleImage = image;
-    }
-
-    /**
-     * Sets or clears the title image of this part.
-     * 
-     * @param titleImage
-     *            the title image, or <code>null</code> to clear
-     */
-    protected void setTitleImage(Image titleImage) {
-        Assert.isTrue(titleImage == null || !titleImage.isDisposed());
-        //Do not send changes if they are the same
-        if (this.titleImage == titleImage) {
-			return;
-		}
-        this.titleImage = titleImage;
-        firePropertyChange(IIntroPart.PROP_TITLE);
-    }
-    
-    /**
-     * Set the title string for this part.
-     * 
-     * @param titleLabel the title string.  Must not be <code>null</code>.
-     * @since 3.2
-     */
-    protected void setTitle(String titleLabel) {
-    	Assert.isNotNull(titleLabel);
-    	if (Util.equals(this.titleLabel, titleLabel))
-    		return;
-    	this.titleLabel = titleLabel;
-    	firePropertyChange(IIntroPart.PROP_TITLE);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MessagePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MessagePage.java
deleted file mode 100644
index 2a7c4b0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MessagePage.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-
-/**
- * A message page display a message in a pagebook view.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- *
- * @see PageBookView
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class MessagePage extends Page {
-    private Composite pgComp;
-
-    private Label msgLabel;
-
-    private String message = "";//$NON-NLS-1$
-
-    /**
-     * Creates a new page. The message is the empty string.
-     */
-    public MessagePage() {
-        // do nothing
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPage.
-     */
-    public void createControl(Composite parent) {
-        // Message in default page of Outline should have margins
-        pgComp = new Composite(parent, SWT.NULL);
-        pgComp.setLayout(new FillLayout());
-
-        msgLabel = new Label(pgComp, SWT.LEFT | SWT.TOP | SWT.WRAP);
-        msgLabel.setText(message);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPage.
-     */
-    public Control getControl() {
-        return pgComp;
-    }
-
-    /**
-     * Sets focus to a part in the page.
-     */
-    public void setFocus() {
-        // important to give focus to the composite rather than the label
-        // as the composite will actually take focus (though hidden),
-        // but setFocus on a Label is a no-op
-        pgComp.setFocus();
-    }
-
-    /**
-     * Sets the message to the given string.
-     *
-     * @param message the message text
-     */
-    public void setMessage(String message) {
-        this.message = message;
-        if (msgLabel != null) {
-			msgLabel.setText(message);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditor.java
deleted file mode 100644
index d81f9d0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditor.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.EditorSite;
-import org.eclipse.ui.internal.IWorkbenchThemeConstants;
-import org.eclipse.ui.internal.PartService;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchWindow;
-import org.eclipse.ui.themes.ITheme;
-
-/**
- * A MultiEditor is a composite of editors.
- * 
- * This class is intended to be subclassed.
- * 		
- */
-public abstract class MultiEditor extends EditorPart {
-
-    private int activeEditorIndex;
-
-    private IEditorPart innerEditors[];
-
-	private IPartListener2 propagationListener;
-
-    /**
-     * Constructor for TileEditor.
-     */
-    public MultiEditor() {
-        super();
-    }
-
-    /*
-     * @see IEditorPart#doSave(IProgressMonitor)
-     */
-    public void doSave(IProgressMonitor monitor) {
-        for (int i = 0; i < innerEditors.length; i++) {
-            IEditorPart e = innerEditors[i];
-            e.doSave(monitor);
-        }
-    }
-
-    /**
-     * Create the control of the inner editor.
-     * 
-     * Must be called by subclass.
-     */
-    public Composite createInnerPartControl(Composite parent,
-            final IEditorPart e) {
-        Composite content = new Composite(parent, SWT.NONE);
-        content.setLayout(new FillLayout());
-        e.createPartControl(content);
-        parent.addListener(SWT.Activate, new Listener() {
-            public void handleEvent(Event event) {
-                if (event.type == SWT.Activate) {
-					activateEditor(e);
-				}
-            }
-        });
-        return content;
-    }
-
-    /*
-     * @see IEditorPart#doSaveAs()
-     */
-    public void doSaveAs() {
-        //no-op
-    }
-
-    /*
-     * @see IEditorPart#init(IEditorSite, IEditorInput)
-     */
-    public void init(IEditorSite site, IEditorInput input)
-            throws PartInitException {
-        init(site, (MultiEditorInput) input);
-    }
-
-    /*
-     * @see IEditorPart#init(IEditorSite, IEditorInput)
-     */
-    public void init(IEditorSite site, MultiEditorInput input)
-            throws PartInitException {
-        setInput(input);
-        setSite(site);
-        setPartName(input.getName());
-        setTitleToolTip(input.getToolTipText());
-        setupEvents();
-    }
-
-    /*
-     * @see IEditorPart#isDirty()
-     */
-    public boolean isDirty() {
-        for (int i = 0; i < innerEditors.length; i++) {
-            IEditorPart e = innerEditors[i];
-            if (e.isDirty()) {
-				return true;
-			}
-        }
-        return false;
-    }
-
-    /*
-     * @see IEditorPart#isSaveAsAllowed()
-     */
-    public boolean isSaveAsAllowed() {
-        return false;
-    }
-
-    /*
-     * @see IWorkbenchPart#setFocus()
-     */
-    public void setFocus() {
-        innerEditors[activeEditorIndex].setFocus();
-        updateGradient(innerEditors[activeEditorIndex]);
-    }
-
-    /**
-     * Returns the active inner editor.
-     */
-    public final IEditorPart getActiveEditor() {
-        return innerEditors[activeEditorIndex];
-    }
-
-    /**
-     * Returns an array with all inner editors.
-     */
-    public final IEditorPart[] getInnerEditors() {
-        return innerEditors;
-    }
-
-    /**
-     * Set the inner editors.
-     * 
-     * Should not be called by clients.
-     */
-    public final void setChildren(IEditorPart[] children) {
-        innerEditors = children;
-        activeEditorIndex = 0;
-    }
-
-    /**
-     * Activates the given nested editor.
-     * 
-     * @param part the nested editor
-     * @since 3.0
-     */
-    protected void activateEditor(IEditorPart part) {
-        IEditorPart oldEditor = getActiveEditor();
-        activeEditorIndex = getIndex(part);
-        IEditorPart e = getActiveEditor();
-        EditorSite innerSite = (EditorSite) e.getEditorSite();
-        ((WorkbenchPage) innerSite.getPage()).requestActivation(e);
-        updateGradient(oldEditor);
-    }
-
-    /**
-     * Returns the index of the given nested editor.
-     * 
-     * @return the index of the nested editor
-     * @since 3.0
-     */
-    protected int getIndex(IEditorPart editor) {
-        for (int i = 0; i < innerEditors.length; i++) {
-            if (innerEditors[i] == editor) {
-				return i;
-			}
-        }
-        return -1;
-    }
-
-    /**
-     * Updates the gradient in the title bar.
-     */
-    public void updateGradient(IEditorPart editor) {
-        boolean activeEditor = editor == getSite().getPage().getActiveEditor();
-        boolean activePart = editor == getSite().getPage().getActivePart();
-
-        ITheme theme = editor.getEditorSite().getWorkbenchWindow()
-                .getWorkbench().getThemeManager().getCurrentTheme();
-        Gradient g = new Gradient();
-
-        ColorRegistry colorRegistry = theme.getColorRegistry();
-        if (activePart) {
-            g.fgColor = colorRegistry
-                    .get(IWorkbenchThemeConstants.ACTIVE_TAB_TEXT_COLOR);
-            g.bgColors = new Color[2];
-            g.bgColors[0] = colorRegistry
-                    .get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START);
-            g.bgColors[1] = colorRegistry
-                    .get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END);
-        } else {
-            if (activeEditor) {
-                g.fgColor = colorRegistry
-                        .get(IWorkbenchThemeConstants.ACTIVE_TAB_TEXT_COLOR);
-                g.bgColors = new Color[2];
-                g.bgColors[0] = colorRegistry
-                        .get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START);
-                g.bgColors[1] = colorRegistry
-                        .get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END);
-            } else {
-                g.fgColor = colorRegistry
-                        .get(IWorkbenchThemeConstants.INACTIVE_TAB_TEXT_COLOR);
-                g.bgColors = new Color[2];
-                g.bgColors[0] = colorRegistry
-                        .get(IWorkbenchThemeConstants.INACTIVE_TAB_BG_START);
-                g.bgColors[1] = colorRegistry
-                        .get(IWorkbenchThemeConstants.INACTIVE_TAB_BG_END);
-            }
-        }
-        g.bgPercents = new int[] { theme
-                .getInt(IWorkbenchThemeConstants.ACTIVE_TAB_PERCENT) };
-
-        drawGradient(editor, g);
-    }
-
-    /**
-     * Draw the gradient in the title bar.
-     */
-    protected abstract void drawGradient(IEditorPart innerEditor, Gradient g);
-
-    /**
-     * Return true if the shell is activated.
-     */
-    protected boolean getShellActivated() {
-        WorkbenchWindow window = (WorkbenchWindow) getSite().getPage()
-                .getWorkbenchWindow();
-        return window.getShellActivated();
-    }
-
-    /**
-     * The colors used to draw the title bar of the inner editors
-     */
-    public static class Gradient {
-        public Color fgColor;
-
-        public Color[] bgColors;
-
-        public int[] bgPercents;
-    }
-    
-    
-    
-    /**
-     * Set up the MultiEditor to propagate events like partClosed().
-     *
-     * @since 3.2
-     */
-    private void setupEvents() {
-		propagationListener = new IPartListener2() {
-			public void partActivated(IWorkbenchPartReference partRef) {
-			}
-
-			public void partBroughtToTop(IWorkbenchPartReference partRef) {
-			}
-
-			public void partClosed(IWorkbenchPartReference partRef) {
-				IWorkbenchPart part = partRef.getPart(false);
-				if (part == MultiEditor.this && innerEditors != null) {
-					PartService partService = ((WorkbenchPage) getSite()
-							.getPage()).getPartService();
-					for (int i = 0; i < innerEditors.length; i++) {
-						IEditorPart editor = innerEditors[i];
-						IWorkbenchPartReference innerRef = ((PartSite) editor
-								.getSite()).getPartReference();
-						partService.firePartClosed(innerRef);
-					}
-				}
-			}
-
-			public void partDeactivated(IWorkbenchPartReference partRef) {
-			}
-
-			public void partOpened(IWorkbenchPartReference partRef) {
-				IWorkbenchPart part = partRef.getPart(false);
-				if (part == MultiEditor.this && innerEditors != null) {
-					PartService partService = ((WorkbenchPage) getSite()
-							.getPage()).getPartService();
-					for (int i = 0; i < innerEditors.length; i++) {
-						IEditorPart editor = innerEditors[i];
-						IWorkbenchPartReference innerRef = ((PartSite) editor
-								.getSite()).getPartReference();
-						partService.firePartOpened(innerRef);
-					}
-				}
-			}
-
-			public void partHidden(IWorkbenchPartReference partRef) {
-			}
-
-			public void partVisible(IWorkbenchPartReference partRef) {
-			}
-
-			public void partInputChanged(IWorkbenchPartReference partRef) {
-			}
-		};
-		getSite().getPage().addPartListener(propagationListener);
-    }
-
-    /**
-     * Release the added listener.
-     * 
-     * @since 3.2
-     */
-	public void dispose() {
-		getSite().getPage().removePartListener(propagationListener);
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditorInput.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditorInput.java
deleted file mode 100644
index 86abc39..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiEditorInput.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-
-/**
- * Implements an input for a <code>MultiEditor</code>.
- * 
- * This class is intended to be instantiated by clients but is 
- * not intended to be subclassed.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class MultiEditorInput implements IEditorInput {
-
-    IEditorInput input[];
-
-    String editors[];
-
-    /**
-     * Constructs a new MultiEditorInput.
-     */
-    public MultiEditorInput(String[] editorIDs, IEditorInput[] innerEditors) {
-        Assert.isNotNull(editorIDs);
-        Assert.isNotNull(innerEditors);
-        editors = editorIDs;
-        input = innerEditors;
-    }
-
-    /**
-     * Returns an array with the input of all inner editors.
-     */
-    public IEditorInput[] getInput() {
-        return input;
-    }
-
-    /**
-     * Retunrs an array with the id of all inner editors.
-     */
-    public String[] getEditors() {
-        return editors;
-    }
-
-    /*
-     * @see IEditorInput#exists()
-     */
-    public boolean exists() {
-        return true;
-    }
-
-    /*
-     * @see IEditorInput#getImageDescriptor()
-     */
-    public ImageDescriptor getImageDescriptor() {
-        return null;
-    }
-
-    /*
-     * @see IEditorInput#getName()
-     */
-    public String getName() {
-        String name = ""; //$NON-NLS-1$
-        for (int i = 0; i < (input.length - 1); i++) {
-            name = name + input[i].getName() + "/"; //$NON-NLS-1$
-        }
-        name = name + input[input.length - 1].getName();
-        return name;
-    }
-
-    /*
-     * @see IEditorInput#getPersistable()
-     */
-    public IPersistableElement getPersistable() {
-        return null;
-    }
-
-    /*
-     * @see IEditorInput#getToolTipText()
-     */
-    public String getToolTipText() {
-        return getName();
-    }
-
-    /*
-     * @see IAdaptable#getAdapter(Class)
-     */
-    public Object getAdapter(Class adapter) {
-        return null;
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        if (this == obj) {
-			return true;
-		}
-        if (!(obj instanceof MultiEditorInput)) {
-			return false;
-		}
-        MultiEditorInput other = (MultiEditorInput) obj;
-        return Arrays.equals(this.editors, other.editors) && Arrays.equals(this.input, other.input);
-    }
-    
-    
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        int hash = 0;
-        for (int i = 0; i < editors.length; i++) {
-            hash = hash * 37 + editors[i].hashCode();
-        }
-        for (int i = 0; i < input.length; i++) {
-            hash = hash * 37 + input[i].hashCode();
-        }
-        return hash;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditor.java
deleted file mode 100644
index 22cc531..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditor.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.TabFolder;
-
-/**
- * Abstract superclass of all multi-page workbench editors.
- * <p>
- * This class should be subclassed by clients wishing to define new 
- * multi-page editor.
- * </p>
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- *   <li><code>createPartControl</code> - to create the view's controls </li>
- *   <li><code>setFocus</code> - to accept focus</li>
- *   <li><code>isDirty</code> - to decide whether a significant change has
- *       occurred</li>
- *   <li><code>doSave</code> - to save contents of editor</li>
- *   <li><code>doSaveAs</code> - to save contents of editor</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend or reimplement the following methods as required:
- * <ul>
- *   <li><code>setInitializationData</code> - extend to provide additional 
- *       initialization when editor extension is instantiated</li>
- *   <li><code>init(IEditorSite,IEditorInput)</code> - extend to provide 
- *       additional initialization when editor is assigned its site</li>
- *   <li><code>isSaveOnCloseNeeded</code> - override to control saving</li>
- *   <li><code>isSaveAsAllowed</code> - override to control saving</li>
- *   <li><code>gotoMarker</code> - reimplement to make selections based on
- *       markers</li>
- *   <li><code>dispose</code> - extend to provide additional cleanup</li>
- *   <li><code>getAdapter</code> - reimplement to make their editor
- *       adaptable</li>
- * </ul>
- * </p>
- * 
- * @deprecated Use the class <code>MultiPageEditorPart</code> instead
- */
-public abstract class MultiPageEditor extends EditorPart {
-    private List syncVector;
-
-    private TabFolder tabFolder;
-
-    /**
-     * Creates a new multi-page editor.
-     * 
-     * @deprecated Use the class <code>MultiPageEditorPart</code> instead
-     */
-    public MultiPageEditor() {
-        super();
-    }
-
-    /**
-     * Adds a synchronized pagebook to this editor.  Once added, the
-     * visible page of the pagebook and the visible page of the editor 
-     * will be synchronized.
-     *
-     * @param pageBook the pagebook to add
-     */
-    protected void addSyncroPageBook(PageBook pageBook) {
-        // Add the page.
-        if (syncVector == null) {
-			syncVector = new ArrayList(1);
-		}
-        syncVector.add(pageBook);
-
-        // Set the visible page.
-        syncPageBook(pageBook);
-    }
-
-    /**
-     * The <code>MultiPageEditor</code> implementation of this <code>IWorkbenchPart</code>
-     * method creates a <code>TabFolder</code> control.
-     */
-    public void createPartControl(Composite parent) {
-        tabFolder = new TabFolder(parent, SWT.NONE);
-        tabFolder.addSelectionListener(new SelectionAdapter() {
-            public void widgetSelected(SelectionEvent e) {
-                sync();
-            }
-        });
-    }
-
-    /**
-     * Returns this editor's workbook.
-     *
-     * @return the editor workbook
-     */
-    protected TabFolder getFolder() {
-        return tabFolder;
-    }
-
-    /**
-     * Indicates that a page change has occurred.  Updates the sync vector.
-     */
-    protected void onPageChange() {
-        if (syncVector != null) {
-            Iterator itr = syncVector.iterator();
-            while (itr.hasNext()) {
-                PageBook pageBook = (PageBook) itr.next();
-                syncPageBook(pageBook);
-            }
-        }
-    }
-
-    /**
-     * Removes a synchronized pagebook from this editor. 
-     *
-     * @param pageBook the pagebook to remove 
-     * @see #addSyncroPageBook(PageBook)
-     */
-    protected void removeSyncroPageBook(PageBook pageBook) {
-        if (syncVector != null) {
-			syncVector.remove(pageBook);
-		}
-        pageBook.dispose();
-    }
-
-    /**
-     * Synchronizes each registered pagebook with the editor page.
-     */
-    protected void sync() {
-        if (syncVector != null) {
-            Iterator itr = syncVector.iterator();
-            while (itr.hasNext()) {
-                PageBook pageBook = (PageBook) itr.next();
-                syncPageBook(pageBook);
-            }
-        }
-    }
-
-    /**
-     * Sets the visible page of the given pagebook to be the same as
-     * the visible page of this editor.
-     *
-     * @param pageBook a pagebook to synchronize
-     */
-    protected void syncPageBook(PageBook pageBook) {
-        int pos = tabFolder.getSelectionIndex();
-        Control children[] = pageBook.getChildren();
-        int size = children.length;
-        if (pos < size) {
-			pageBook.showPage(children[pos]);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java
deleted file mode 100644
index 80d9cee..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorActionBarContributor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.ui.IEditorPart;
-
-/**
- * Abstract base class for managing the installation/deinstallation of global
- * actions for multi-page editors.
- * <p>
- * Subclasses must implement <code>setActivePage</code>, and may reimplement 
- * any of the following methods:
- * <ul>
- *   <li><code>contributeToMenu</code> - reimplement to contribute to menu</li>
- *   <li><code>contributeToToolBar</code> - reimplement to contribute to tool
- *     bar</li>
- *   <li><code>contributeToStatusLine</code> - reimplement to contribute to 
- *     status line</li>
- * </ul>
- * </p>
- */
-public abstract class MultiPageEditorActionBarContributor extends
-        EditorActionBarContributor {
-    /**
-     * Creates a multi-page editor action contributor.
-     */
-    protected MultiPageEditorActionBarContributor() {
-        super();
-    }
-
-    /* (non-JavaDoc)
-     * Method declared on EditorActionBarContributor
-     * Registers the contributor with the multi-page editor for future 
-     * editor action redirection when the active page is changed, and sets
-     * the active page.
-     */
-    public void setActiveEditor(IEditorPart part) {
-        IEditorPart activeNestedEditor = null;
-        if (part instanceof MultiPageEditorPart) {
-            activeNestedEditor = ((MultiPageEditorPart) part).getActiveEditor();
-        }
-        setActivePage(activeNestedEditor);
-    }
-
-    /**
-     * Sets the active page of the the multi-page editor to be the given editor.
-     * Redirect actions to the given editor if actions are not already being sent to it.
-     * <p>
-     * This method is called whenever the page changes. 
-     * Subclasses must implement this method to redirect actions to the given 
-     * editor (if not already directed to it).
-     * </p>
-     *
-     * @param activeEditor the new active editor, or <code>null</code> if there is no active page, or if the
-     *   active page does not have a corresponding editor
-     */
-    public abstract void setActivePage(IEditorPart activeEditor);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java
deleted file mode 100644
index 897764d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorPart.java
+++ /dev/null
@@ -1,1114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.SafeRunner;
-
-import org.eclipse.core.commands.util.Tracing;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Item;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.INestableKeyBindingService;
-import org.eclipse.ui.IPartService;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.Policy;
-import org.eclipse.ui.internal.services.INestable;
-import org.eclipse.ui.internal.services.IServiceLocatorCreator;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * A multi-page editor is an editor with multiple pages, each of which may
- * contain an editor or an arbitrary SWT control.
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- * <li><code>createPages</code> - to create the required pages by calling one
- * of the <code>addPage</code> methods</li>
- * <li><code>IEditorPart.doSave</code> - to save contents of editor</li>
- * <li><code>IEditorPart.doSaveAs</code> - to save contents of editor</li>
- * <li><code>IEditorPart.isSaveAsAllowed</code> - to enable Save As</li>
- * <li><code>IEditorPart.gotoMarker</code> - to scroll to a marker</li>
- * </ul>
- * </p>
- * <p>
- * Multi-page editors have a single action bar contributor, which manages
- * contributions for all the pages. The contributor must be a subclass of
- * <code>AbstractMultiPageEditorActionBarContributor</code>. Note that since
- * any nested editors are created directly in code by callers of
- * <code>addPage(IEditorPart,IEditorInput)</code>, nested editors do not have
- * their own contributors.
- * </p>
- * 
- * @see org.eclipse.ui.part.MultiPageEditorActionBarContributor
- */
-public abstract class MultiPageEditorPart extends EditorPart {
-	
-	/**
-	 * Subclasses that override {@link #createPageContainer(Composite)} can use
-	 * this constant to get a site for the container that can be active while
-	 * the current page is deactivated.
-	 * 
-	 * @since 3.4
-	 * @see #activateSite()
-	 * @see #deactivateSite(boolean, boolean)
-	 * @see #getPageSite(int)
-	 */
-	protected static final int PAGE_CONTAINER_SITE = 65535;
-
-	/**
-	 * Private tracing output.
-	 */
-	private static final String TRACING_COMPONENT = "MPE"; //$NON-NLS-1$
-
-	/**
-	 * The active service locator. This value may be <code>null</code> if
-	 * there is no selected page, or if the selected page is a control with
-	 * no site.
-	 */
-	private INestable activeServiceLocator;
-
-	/**
-	 * The container widget.
-	 */
-	private CTabFolder container;
-
-	/**
-	 * List of nested editors. Element type: IEditorPart. Need to hang onto them
-	 * here, in addition to using get/setData on the items, because dispose()
-	 * needs to access them, but widgetry has already been disposed at that
-	 * point.
-	 */
-	private ArrayList nestedEditors = new ArrayList(3);
-	
-	private List pageSites = new ArrayList(3);
-
-	private IServiceLocator pageContainerSite;
-
-	/**
-	 * Creates an empty multi-page editor with no pages.
-	 */
-	protected MultiPageEditorPart() {
-		super();
-	}
-
-	/**
-	 * Creates and adds a new page containing the given control to this
-	 * multi-page editor. The control may be <code>null</code>, allowing it
-	 * to be created and set later using <code>setControl</code>.
-	 * 
-	 * @param control
-	 *            the control, or <code>null</code>
-	 * @return the index of the new page
-	 * 
-	 * @see MultiPageEditorPart#setControl(int, Control)
-	 */
-	public int addPage(Control control) {
-		int index = getPageCount();
-		addPage(index, control);
-		return index;
-	}
-
-	/**
-	 * Creates and adds a new page containing the given control to this
-	 * multi-page editor. The page is added at the given index. The control may
-	 * be <code>null</code>, allowing it to be created and set later using
-	 * <code>setControl</code>.
-	 * 
-	 * @param index
-	 *            the index at which to add the page (0-based)
-	 * @param control
-	 *            the control, or <code>null</code>
-	 * 
-	 * @see MultiPageEditorPart#setControl(int, Control)
-	 */
-	public void addPage(int index, Control control) {
-		createItem(index, control);
-	}
-
-	/**
-	 * Creates and adds a new page containing the given editor to this
-	 * multi-page editor. This also hooks a property change listener on the
-	 * nested editor.
-	 * 
-	 * @param editor
-	 *            the nested editor
-	 * @param input
-	 *            the input for the nested editor
-	 * @return the index of the new page
-	 * @exception PartInitException
-	 *                if a new page could not be created
-	 * 
-	 * @see MultiPageEditorPart#handlePropertyChange(int) the handler for
-	 *      property change events from the nested editor
-	 */
-	public int addPage(IEditorPart editor, IEditorInput input)
-			throws PartInitException {
-		int index = getPageCount();
-		addPage(index, editor, input);
-		return index;
-	}
-
-	/**
-	 * Creates and adds a new page containing the given editor to this
-	 * multi-page editor. The page is added at the given index. This also hooks
-	 * a property change listener on the nested editor.
-	 * 
-	 * @param index
-	 *            the index at which to add the page (0-based)
-	 * @param editor
-	 *            the nested editor
-	 * @param input
-	 *            the input for the nested editor
-	 * @exception PartInitException
-	 *                if a new page could not be created
-	 * 
-	 * @see MultiPageEditorPart#handlePropertyChange(int) the handler for
-	 *      property change events from the nested editor
-	 */
-	public void addPage(int index, IEditorPart editor, IEditorInput input)
-			throws PartInitException {
-		IEditorSite site = createSite(editor);
-		// call init first so that if an exception is thrown, we have created no
-		// new widgets
-		editor.init(site, input);
-		Composite parent2 = new Composite(getContainer(),
-				getOrientation(editor));
-		parent2.setLayout(new FillLayout());
-		editor.createPartControl(parent2);
-		editor.addPropertyListener(new IPropertyListener() {
-			public void propertyChanged(Object source, int propertyId) {
-				MultiPageEditorPart.this.handlePropertyChange(propertyId);
-			}
-		});
-		// create item for page only after createPartControl has succeeded
-		Item item = createItem(index, parent2);
-		// remember the editor, as both data on the item, and in the list of
-		// editors (see field comment)
-		item.setData(editor);
-		nestedEditors.add(editor);
-	}
-
-	/**
-	 * Get the orientation of the editor.
-	 * 
-	 * @param editor
-	 * @return int the orientation flag
-	 * @see SWT#RIGHT_TO_LEFT
-	 * @see SWT#LEFT_TO_RIGHT
-	 * @see SWT#NONE
-	 */
-	private int getOrientation(IEditorPart editor) {
-		if (editor instanceof IWorkbenchPartOrientation) {
-			return ((IWorkbenchPartOrientation) editor).getOrientation();
-		}
-		return getOrientation();
-	}
-
-	/**
-	 * Creates an empty container. Creates a CTabFolder with no style bits set,
-	 * and hooks a selection listener which calls <code>pageChange()</code>
-	 * whenever the selected tab changes.
-	 * 
-	 * @param parent
-	 *            The composite in which the container tab folder should be
-	 *            created; must not be <code>null</code>.
-	 * @return a new container
-	 */
-	private CTabFolder createContainer(Composite parent) {
-		// use SWT.FLAT style so that an extra 1 pixel border is not reserved
-		// inside the folder
-		parent.setLayout(new FillLayout());
-		final CTabFolder newContainer = new CTabFolder(parent, SWT.BOTTOM
-				| SWT.FLAT);
-		newContainer.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				int newPageIndex = newContainer.indexOf((CTabItem) e.item);
-				pageChange(newPageIndex);
-			}
-		});
-		return newContainer;
-	}
-
-	/**
-	 * Creates a tab item at the given index and places the given control in the
-	 * new item. The item is a CTabItem with no style bits set.
-	 * 
-	 * @param index
-	 *            the index at which to add the control
-	 * @param control
-	 *            is the control to be placed in an item
-	 * @return a new item
-	 */
-	private CTabItem createItem(int index, Control control) {
-		CTabItem item = new CTabItem(getTabFolder(), SWT.NONE, index);
-		item.setControl(control);
-		return item;
-	}
-
-	/**
-	 * Creates the pages of this multi-page editor.
-	 * <p>
-	 * Subclasses must implement this method.
-	 * </p>
-	 */
-	protected abstract void createPages();
-
-	/**
-	 * The <code>MultiPageEditor</code> implementation of this
-	 * <code>IWorkbenchPart</code> method creates the control for the
-	 * multi-page editor by calling <code>createContainer</code>, then
-	 * <code>createPages</code>. Subclasses should implement
-	 * <code>createPages</code> rather than overriding this method.
-	 * 
-	 * @param parent
-	 *            The parent in which the editor should be created; must not be
-	 *            <code>null</code>.
-	 */
-	public final void createPartControl(Composite parent) {
-		Composite pageContainer = createPageContainer(parent);
-		this.container = createContainer(pageContainer);
-		createPages();
-		// set the active page (page 0 by default), unless it has already been
-		// done
-		if (getActivePage() == -1) {
-			setActivePage(0);
-			IEditorPart part = getEditor(0);
-			if (part!=null) {
-				final IServiceLocator serviceLocator = part.getEditorSite();
-				if (serviceLocator instanceof INestable) {
-					activeServiceLocator = (INestable) serviceLocator;
-					activeServiceLocator.activate();
-				}
-			}
-		}
-		initializePageSwitching();
-	}
-
-	/**
-	 * Initialize the MultiPageEditorPart to use the page switching command.
-	 * Clients can override this method with an empty body if they wish to
-	 * opt-out.
-	 * 
-	 * @since 3.4
-	 */
-	protected void initializePageSwitching() {
-		new PageSwitcher(this) {
-			public Object[] getPages() {
-				int pageCount = getPageCount();
-				Object[] result = new Object[pageCount];
-				for (int i = 0; i < pageCount; i++) {
-					result[i] = new Integer(i);
-				}
-				return result;
-			}
-
-			public String getName(Object page) {
-				return getPageText(((Integer) page).intValue());
-			}
-
-			public ImageDescriptor getImageDescriptor(Object page) {
-				Image image = getPageImage(((Integer) page).intValue());
-				if (image == null)
-					return null;
-
-				return ImageDescriptor.createFromImage(image);
-			}
-
-			public void activatePage(Object page) {
-				setActivePage(((Integer) page).intValue());
-			}
-
-			public int getCurrentPageIndex() {
-				return getActivePage();
-			}
-		};
-	}
-
-	/**
-	 * Creates the parent control for the container returned by
-	 * {@link #getContainer() }.
-	 * 
-	 * <p>
-	 * Subclasses may extend and must call super implementation first.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            the parent for all of the editors contents.
-	 * @return the parent for this editor's container. Must not be
-	 *         <code>null</code>.
-	 * 
-	 * @since 3.2
-	 */
-	protected Composite createPageContainer(Composite parent) {
-		return parent;
-	}
-
-	/**
-	 * Creates the site for the given nested editor. The
-	 * <code>MultiPageEditorPart</code> implementation of this method creates
-	 * an instance of <code>MultiPageEditorSite</code>. Subclasses may
-	 * reimplement to create more specialized sites.
-	 * 
-	 * @param editor
-	 *            the nested editor
-	 * @return the editor site
-	 */
-	protected IEditorSite createSite(IEditorPart editor) {
-		return new MultiPageEditorSite(this, editor);
-	}
-
-	/**
-	 * The <code>MultiPageEditorPart</code> implementation of this
-	 * <code>IWorkbenchPart</code> method disposes all nested editors.
-	 * Subclasses may extend.
-	 */
-	public void dispose() {
-		for (int i = 0; i < nestedEditors.size(); ++i) {
-			IEditorPart editor = (IEditorPart) nestedEditors.get(i);
-			disposePart(editor);
-		}
-		nestedEditors.clear();
-		if (pageContainerSite instanceof IDisposable) {
-			((IDisposable) pageContainerSite).dispose();
-			pageContainerSite = null;
-		}
-		for (int i = 0; i < pageSites.size(); i++) {
-			IServiceLocator sl = (IServiceLocator) pageSites.get(i);
-			if (sl instanceof IDisposable) {
-				((IDisposable) sl).dispose();
-			}
-		}
-		pageSites.clear();
-		super.dispose();
-	}
-
-	/**
-	 * Returns the active nested editor if there is one.
-	 * <p>
-	 * Subclasses should not override this method
-	 * </p>
-	 * 
-	 * @return the active nested editor, or <code>null</code> if none
-	 */
-	protected IEditorPart getActiveEditor() {
-		int index = getActivePage();
-		if (index != -1) {
-			return getEditor(index);
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the index of the currently active page, or -1 if there is no
-	 * active page.
-	 * <p>
-	 * Subclasses should not override this method
-	 * </p>
-	 * 
-	 * @return the index of the active page, or -1 if there is no active page
-	 */
-	protected int getActivePage() {
-		CTabFolder tabFolder = getTabFolder();
-		if (tabFolder != null && !tabFolder.isDisposed()) {
-			return tabFolder.getSelectionIndex();
-		}
-		return -1;
-	}
-
-	/**
-	 * Returns the composite control containing this multi-page editor's pages.
-	 * This should be used as the parent when creating controls for the
-	 * individual pages. That is, when calling <code>addPage(Control)</code>,
-	 * the passed control should be a child of this container.
-	 * <p>
-	 * Warning: Clients should not assume that the container is any particular
-	 * subclass of Composite. The actual class used may change in order to
-	 * improve the look and feel of multi-page editors. Any code making
-	 * assumptions on the particular subclass would thus be broken.
-	 * </p>
-	 * <p>
-	 * Subclasses should not override this method
-	 * </p>
-	 * 
-	 * @return the composite, or <code>null</code> if
-	 *         <code>createPartControl</code> has not been called yet
-	 */
-	protected Composite getContainer() {
-		return container;
-	}
-
-	/**
-	 * Returns the control for the given page index, or <code>null</code> if
-	 * no control has been set for the page. The page index must be valid.
-	 * <p>
-	 * Subclasses should not override this method
-	 * </p>
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @return the control for the specified page, or <code>null</code> if
-	 *         none has been set
-	 */
-	protected Control getControl(int pageIndex) {
-		return getItem(pageIndex).getControl();
-	}
-
-	/**
-	 * Returns the editor for the given page index. The page index must be
-	 * valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @return the editor for the specified page, or <code>null</code> if the
-	 *         specified page was not created with
-	 *         <code>addPage(IEditorPart,IEditorInput)</code>
-	 */
-	protected IEditorPart getEditor(int pageIndex) {
-		Item item = getItem(pageIndex);
-		if (item != null) {
-			Object data = item.getData();
-			if (data instanceof IEditorPart) {
-				return (IEditorPart) data;
-			}
-		}
-		return null;
-	}
-	
-	/**
-	 * Returns the service locator for the given page index. This method can be
-	 * used to create service locators for pages that are just controls. The
-	 * page index must be valid.
-	 * <p>
-	 * This will return the editor site service locator for an editor, and
-	 * create one for a page that is just a control.
-	 * </p>
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @return the editor for the specified page, or <code>null</code> if the
-	 *         specified page was not created with
-	 *         <code>addPage(IEditorPart,IEditorInput)</code>
-	 * @since 3.4
-	 */
-	protected final IServiceLocator getPageSite(int pageIndex) {
-		if (pageIndex == PAGE_CONTAINER_SITE) {
-			return getPageContainerSite();
-		}
-		
-		Item item = getItem(pageIndex);
-		if (item != null) {
-			Object data = item.getData();
-			if (data instanceof IEditorPart) {
-				return ((IEditorPart) data).getSite();
-			} else if (data instanceof IServiceLocator) {
-				return (IServiceLocator) data;
-			} else if (data == null) {
-				IServiceLocatorCreator slc = (IServiceLocatorCreator) getSite()
-						.getService(IServiceLocatorCreator.class);
-				IServiceLocator sl = slc.createServiceLocator(getSite(), null, new IDisposable(){
-					public void dispose() {
-						final Control control = ((PartSite)getSite()).getPane().getControl();
-						if (control != null && !control.isDisposed()) {
-							((PartSite)getSite()).getPane().doHide();
-						}
-					}
-				});
-				item.setData(sl);
-				pageSites.add(sl);
-				return sl;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * @return A site that can be used with a header.
-	 * @since 3.4
-	 * @see #createPageContainer(Composite)
-	 * @see #PAGE_CONTAINER_SITE
-	 * @see #getPageSite(int)
-	 */
-	private IServiceLocator getPageContainerSite() {
-		if (pageContainerSite == null) {
-			IServiceLocatorCreator slc = (IServiceLocatorCreator) getSite()
-					.getService(IServiceLocatorCreator.class);
-			pageContainerSite = slc.createServiceLocator(getSite(), null, new IDisposable(){
-				public void dispose() {
-					final Control control = ((PartSite)getSite()).getPane().getControl();
-					if (control != null && !control.isDisposed()) {
-						((PartSite)getSite()).getPane().doHide();
-					}
-				}
-			});
-		}
-		return pageContainerSite;
-	}
-
-	/**
-	 * Returns the tab item for the given page index (page index is 0-based).
-	 * The page index must be valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @return the tab item for the given page index
-	 */
-	private CTabItem getItem(int pageIndex) {
-		return getTabFolder().getItem(pageIndex);
-	}
-
-	/**
-	 * Returns the number of pages in this multi-page editor.
-	 * 
-	 * @return the number of pages
-	 */
-	protected int getPageCount() {
-		CTabFolder folder = getTabFolder();
-		// May not have been created yet, or may have been disposed.
-		if (folder != null && !folder.isDisposed()) {
-			return folder.getItemCount();
-		}
-		return 0;
-	}
-
-	/**
-	 * Returns the image for the page with the given index, or <code>null</code>
-	 * if no image has been set for the page. The page index must be valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @return the image, or <code>null</code> if none
-	 */
-	protected Image getPageImage(int pageIndex) {
-		return getItem(pageIndex).getImage();
-	}
-
-	/**
-	 * Returns the text label for the page with the given index. Returns the
-	 * empty string if no text label has been set for the page. The page index
-	 * must be valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @return the text label for the page
-	 */
-	protected String getPageText(int pageIndex) {
-		return getItem(pageIndex).getText();
-	}
-
-	/**
-	 * Returns the tab folder containing this multi-page editor's pages.
-	 * 
-	 * @return the tab folder, or <code>null</code> if
-	 *         <code>createPartControl</code> has not been called yet
-	 */
-	private CTabFolder getTabFolder() {
-		return container;
-	}
-
-	/**
-	 * Handles a property change notification from a nested editor. The default
-	 * implementation simply forwards the change to listeners on this multi-page
-	 * editor by calling <code>firePropertyChange</code> with the same
-	 * property id. For example, if the dirty state of a nested editor changes
-	 * (property id <code>IEditorPart.PROP_DIRTY</code>), this method handles
-	 * it by firing a property change event for
-	 * <code>IEditorPart.PROP_DIRTY</code> to property listeners on this
-	 * multi-page editor.
-	 * <p>
-	 * Subclasses may extend or reimplement this method.
-	 * </p>
-	 * 
-	 * @param propertyId
-	 *            the id of the property that changed
-	 */
-	protected void handlePropertyChange(int propertyId) {
-		firePropertyChange(propertyId);
-	}
-
-	/**
-	 * The <code>MultiPageEditorPart</code> implementation of this
-	 * <code>IEditorPart</code> method sets its site to the given site, its
-	 * input to the given input, and the site's selection provider to a
-	 * <code>MultiPageSelectionProvider</code>. Subclasses may extend this
-	 * method.
-	 * 
-	 * @param site
-	 *            The site for which this part is being created; must not be
-	 *            <code>null</code>.
-	 * @param input
-	 *            The input on which this editor should be created; must not be
-	 *            <code>null</code>.
-	 * @throws PartInitException
-	 *             If the initialization of the part fails -- currently never.
-	 */
-	public void init(IEditorSite site, IEditorInput input)
-			throws PartInitException {
-		setSite(site);
-		setInput(input);
-		site.setSelectionProvider(new MultiPageSelectionProvider(this));
-	}
-
-	/**
-	 * The <code>MultiPageEditorPart</code> implementation of this
-	 * <code>IEditorPart</code> method returns whether the contents of any of
-	 * this multi-page editor's nested editors have changed since the last save.
-	 * Pages created with <code>addPage(Control)</code> are ignored.
-	 * <p>
-	 * Subclasses may extend or reimplement this method.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if any of the nested editors are dirty;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean isDirty() {
-		// use nestedEditors to avoid SWT requests; see bug 12996
-		for (Iterator i = nestedEditors.iterator(); i.hasNext();) {
-			IEditorPart editor = (IEditorPart) i.next();
-			if (editor.isDirty()) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Notifies this multi-page editor that the page with the given id has been
-	 * activated. This method is called when the user selects a different tab.
-	 * <p>
-	 * The <code>MultiPageEditorPart</code> implementation of this method sets
-	 * focus to the new page, and notifies the action bar contributor (if there
-	 * is one). This checks whether the action bar contributor is an instance of
-	 * <code>MultiPageEditorActionBarContributor</code>, and, if so, calls
-	 * <code>setActivePage</code> with the active nested editor. This also
-	 * fires a selection change event if required.
-	 * </p>
-	 * <p>
-	 * Subclasses may extend this method.
-	 * </p>
-	 * 
-	 * @param newPageIndex
-	 *            the index of the activated page
-	 */
-	protected void pageChange(int newPageIndex) {
-		deactivateSite(false, false);
-
-		IPartService partService = (IPartService) getSite().getService(
-				IPartService.class);
-		if (partService.getActivePart() == this) {
-			setFocus();
-		}
-
-		IEditorPart activeEditor = getEditor(newPageIndex);
-
-		IEditorActionBarContributor contributor = getEditorSite()
-				.getActionBarContributor();
-		if (contributor != null
-				&& contributor instanceof MultiPageEditorActionBarContributor) {
-			((MultiPageEditorActionBarContributor) contributor)
-					.setActivePage(activeEditor);
-		}
-
-		if (activeEditor != null) {
-			ISelectionProvider selectionProvider = activeEditor.getSite()
-					.getSelectionProvider();
-			if (selectionProvider != null) {
-				ISelectionProvider outerProvider = getSite()
-						.getSelectionProvider();
-				if (outerProvider instanceof MultiPageSelectionProvider) {
-					SelectionChangedEvent event = new SelectionChangedEvent(
-							selectionProvider, selectionProvider.getSelection());
-
-					MultiPageSelectionProvider provider = (MultiPageSelectionProvider) outerProvider;
-					provider.fireSelectionChanged(event);
-					provider.firePostSelectionChanged(event);
-				} else {
-					if (Policy.DEBUG_MPE) {
-						Tracing.printTrace(TRACING_COMPONENT,
-								"MultiPageEditorPart " + getTitle() //$NON-NLS-1$
-										+ " did not propogate selection for " //$NON-NLS-1$
-										+ activeEditor.getTitle());
-					}
-				}
-			}
-		}
-
-		activateSite();
-	}
-	
-	/**
-	 * This method can be used by implementors of
-	 * {@link MultiPageEditorPart#createPageContainer(Composite)} to deactivate
-	 * the active inner editor services while their header has focus. A
-	 * deactivateSite() must have a matching call to activateSite() when
-	 * appropriate.
-	 * <p>
-	 * An new inner editor will have its site activated on a
-	 * {@link MultiPageEditorPart#pageChange(int)}.
-	 * </p>
-	 * <p>
-	 * <b>Note:</b> This API is evolving in 3.4 and this might not be its final
-	 * form.
-	 * </p>
-	 * 
-	 * @param immediate
-	 *            immediately deactivate the legacy keybinding service
-	 * @param containerSiteActive
-	 *            Leave the page container site active.
-	 * @since 3.4
-	 * @see #activateSite()
-	 * @see #createPageContainer(Composite)
-	 * @see #getPageSite(int)
-	 * @see #PAGE_CONTAINER_SITE
-	 */
-	protected final void deactivateSite(boolean immediate,
-			boolean containerSiteActive) {
-		// Deactivate the nested services from the last active service locator.
-		if (activeServiceLocator != null) {
-			activeServiceLocator.deactivate();
-			activeServiceLocator = null;
-		}
-
-		final int pageIndex = getActivePage();
-		final IKeyBindingService service = getSite().getKeyBindingService();
-		if (pageIndex < 0 || pageIndex >= getPageCount() || immediate) {
-			// There is no selected page, so deactivate the active service.
-			if (service instanceof INestableKeyBindingService) {
-				final INestableKeyBindingService nestableService = (INestableKeyBindingService) service;
-				nestableService.activateKeyBindingService(null);
-			} else {
-				WorkbenchPlugin
-						.log("MultiPageEditorPart.deactivateSite()   Parent key binding service was not an instance of INestableKeyBindingService.  It was an instance of " + service.getClass().getName() + " instead."); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		
-		if (containerSiteActive) {
-			IServiceLocator containerSite = getPageContainerSite();
-			if (containerSite instanceof INestable) {
-				activeServiceLocator = (INestable) containerSite;
-				activeServiceLocator.activate();
-			}
-		}
-	}
-	
-	/**
-	 * This method can be used by implementors of
-	 * {@link #createPageContainer(Composite)} to activate the active inner
-	 * editor services when their header loses focus.
-	 * <p>
-	 * An new inner editor will have its site activated on a
-	 * {@link #pageChange(int)}.
-	 * </p>
-	 * <p>
-	 * <b>Note:</b> This API is evolving in 3.4 and this might not be its final
-	 * form.
-	 * </p>
-	 * 
-	 * @since 3.4
-	 * @see #deactivateSite(boolean,boolean)
-	 * @see #createPageContainer(Composite)
-	 * @see #getPageSite(int)
-	 */
-	protected final void activateSite() {
-		if (activeServiceLocator != null) {
-			activeServiceLocator.deactivate();
-			activeServiceLocator = null;
-		}
-
-		final IKeyBindingService service = getSite().getKeyBindingService();
-		final int pageIndex = getActivePage();
-		final IEditorPart editor = getEditor(pageIndex);
-
-		if (editor != null) {
-			// active the service for this inner editor
-			if (service instanceof INestableKeyBindingService) {
-				final INestableKeyBindingService nestableService = (INestableKeyBindingService) service;
-				nestableService.activateKeyBindingService(editor
-						.getEditorSite());
-
-			} else {
-				WorkbenchPlugin
-						.log("MultiPageEditorPart.activateSite()   Parent key binding service was not an instance of INestableKeyBindingService.  It was an instance of " + service.getClass().getName() + " instead."); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			// Activate the services for the new service locator.
-			final IServiceLocator serviceLocator = editor.getEditorSite();
-			if (serviceLocator instanceof INestable) {
-				activeServiceLocator = (INestable) serviceLocator;
-				activeServiceLocator.activate();
-			}
-
-		} else {
-			Item item = getItem(pageIndex);
-
-			// There is no selected editor, so deactivate the active service.
-			if (service instanceof INestableKeyBindingService) {
-				final INestableKeyBindingService nestableService = (INestableKeyBindingService) service;
-				nestableService.activateKeyBindingService(null);
-			} else {
-				WorkbenchPlugin
-						.log("MultiPageEditorPart.activateSite()   Parent key binding service was not an instance of INestableKeyBindingService.  It was an instance of " + service.getClass().getName() + " instead."); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			if (item.getData() instanceof INestable) {
-				activeServiceLocator = (INestable) item.getData();
-				activeServiceLocator.activate();
-			}
-		}
-	}
-
-	/**
-	 * Disposes the given part and its site.
-	 * 
-	 * @param part
-	 *            The part to dispose; must not be <code>null</code>.
-	 */
-	private void disposePart(final IWorkbenchPart part) {
-		SafeRunner.run(new ISafeRunnable() {
-			public void run() {
-				IWorkbenchPartSite partSite = part.getSite();
-				part.dispose();
-				if (partSite instanceof MultiPageEditorSite) {
-					((MultiPageEditorSite) partSite).dispose();
-				}
-			}
-
-			public void handleException(Throwable e) {
-				// Exception has already being logged by Core. Do nothing.
-			}
-		});
-	}
-
-	/**
-	 * Removes the page with the given index from this multi-page editor. The
-	 * controls for the page are disposed of; if the page has an editor, it is
-	 * disposed of too. The page index must be valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @see MultiPageEditorPart#addPage(Control)
-	 * @see MultiPageEditorPart#addPage(IEditorPart, IEditorInput)
-	 */
-	public void removePage(int pageIndex) {
-		Assert.isTrue(pageIndex >= 0 && pageIndex < getPageCount());
-		// get editor (if any) before disposing item
-		IEditorPart editor = getEditor(pageIndex);
-
-		// get control for the item if it's not an editor
-		CTabItem item = getItem(pageIndex);
-		IServiceLocator pageLocator = null;
-		if (item.getData() instanceof IServiceLocator) {
-			pageLocator = (IServiceLocator) item.getData();
-		}
-		Control pageControl = item.getControl();
-
-		// dispose item before disposing editor, in case there's an exception
-		// in editor's dispose
-		item.dispose();
-
-		if (pageControl != null) {
-			pageControl.dispose();
-		}
-
-		// dispose editor (if any)
-		if (editor != null) {
-			nestedEditors.remove(editor);
-			disposePart(editor);
-		}
-		if (pageLocator != null) {
-			pageSites.remove(pageLocator);
-			if (pageLocator instanceof IDisposable) {
-				((IDisposable) pageLocator).dispose();
-			}
-		}
-	}
-
-	/**
-	 * Sets the currently active page.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page to be activated; the index must be valid
-	 */
-	protected void setActivePage(int pageIndex) {
-		Assert.isTrue(pageIndex >= 0 && pageIndex < getPageCount());
-		getTabFolder().setSelection(pageIndex);
-		pageChange(pageIndex);
-	}
-
-	/**
-	 * Sets the control for the given page index. The page index must be valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @param control
-	 *            the control for the specified page, or <code>null</code> to
-	 *            clear the control
-	 */
-	protected void setControl(int pageIndex, Control control) {
-		getItem(pageIndex).setControl(control);
-	}
-
-	/**
-	 * The <code>MultiPageEditor</code> implementation of this
-	 * <code>IWorkbenchPart</code> method sets focus on the active nested
-	 * editor, if there is one.
-	 * <p>
-	 * Subclasses may extend or reimplement.
-	 * </p>
-	 */
-	public void setFocus() {
-		setFocus(getActivePage());
-	}
-
-	/**
-	 * Sets focus to the control for the given page. If the page has an editor,
-	 * this calls its <code>setFocus()</code> method. Otherwise, this calls
-	 * <code>setFocus</code> on the control for the page.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 */
-	private void setFocus(int pageIndex) {
-		if (pageIndex < 0 || pageIndex >= getPageCount()) {
-			// page index out of bounds, don't set focus.
-			return;
-		}
-		final IEditorPart editor = getEditor(pageIndex);
-		if (editor != null) {
-			editor.setFocus();
-
-		} else {
-			// Give the page's control focus.
-			final Control control = getControl(pageIndex);
-			if (control != null) {
-				control.setFocus();
-			}
-		}
-	}
-
-	/**
-	 * Sets the image for the page with the given index, or <code>null</code>
-	 * to clear the image for the page. The page index must be valid.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @param image
-	 *            the image, or <code>null</code>
-	 */
-	protected void setPageImage(int pageIndex, Image image) {
-		getItem(pageIndex).setImage(image);
-	}
-
-	/**
-	 * Sets the text label for the page with the given index. The page index
-	 * must be valid. The text label must not be null.
-	 * 
-	 * @param pageIndex
-	 *            the index of the page
-	 * @param text
-	 *            the text label
-	 */
-	protected void setPageText(int pageIndex, String text) {
-		getItem(pageIndex).setText(text);
-	}
-
-	/**
-	 * If there is an adapter registered against the subclass of
-	 * MultiPageEditorPart return that. Otherwise, delegate to the internal
-	 * editor.
-	 * 
-	 * @see org.eclipse.ui.part.WorkbenchPart#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		Object result = super.getAdapter(adapter);
-		// restrict delegating to the UI thread for bug 144851
-		if (result == null && Display.getCurrent()!=null) {
-			IEditorPart innerEditor = getActiveEditor();
-			// see bug 138823 - prevent some subclasses from causing
-			// an infinite loop
-			if (innerEditor != null && innerEditor != this) {
-				result = Util.getAdapter(innerEditor, adapter);
-			}
-		}
-		return result;
-	}
-	
-	/**
-	 * Find the editors contained in this multi-page editor
-	 * whose editor input match the provided input.
-	 * @param input the editor input
-	 * @return the editors contained in this multi-page editor
-	 * whose editor input match the provided input
-	 * @since 3.3
-	 */
-	public final IEditorPart[] findEditors(IEditorInput input) {
-		List result = new ArrayList();
-		int count = getPageCount();
-		for (int i = 0; i < count; i++) {
-			IEditorPart editor = getEditor(i);
-			if (editor != null 
-					&& editor.getEditorInput() != null
-					&& editor.getEditorInput().equals(input)) {
-				result.add(editor);
-			}
-		}
-		return (IEditorPart[]) result.toArray(new IEditorPart[result.size()]);
-	}
-	
-	/**
-	 * Set the active page of this multi-page editor to the
-	 * page that contains the given editor part. This method has
-	 * no effect of the given editor part is not contained in this
-	 * multi-page editor.
-	 * @param editorPart the editor part
-	 * @since 3.3
-	 */
-	public final void setActiveEditor(IEditorPart editorPart) {
-		int count = getPageCount();
-		for (int i = 0; i < count; i++) {
-			IEditorPart editor = getEditor(i);
-			if (editor == editorPart) {
-				setActivePage(i);
-				break;
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java
deleted file mode 100644
index 01883fc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageEditorSite.java
+++ /dev/null
@@ -1,535 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.INestableKeyBindingService;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.PopupMenuExtender;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.services.INestable;
-import org.eclipse.ui.internal.services.IServiceLocatorCreator;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.services.ServiceLocator;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.internal.services.WorkbenchLocationService;
-import org.eclipse.ui.services.IServiceLocator;
-import org.eclipse.ui.services.IServiceScopes;
-
-/**
- * Site for a nested editor within a multi-page editor. Selection is handled by
- * forwarding the event to the multi-page editor's selection listeners; most
- * other methods are forwarded to the multi-page editor's site.
- * <p>
- * The base implementation of <code>MultiPageEditor.createSite</code> creates
- * an instance of this class. This class may be instantiated or subclassed.
- * </p>
- */
-public class MultiPageEditorSite implements IEditorSite, INestable {
-
-	/**
-	 * The nested editor.
-	 */
-	private IEditorPart editor;
-
-	/**
-	 * The list of popup menu extenders; <code>null</code> if none registered.
-	 */
-	private ArrayList menuExtenders;
-
-	/**
-	 * The multi-page editor.
-	 */
-	private MultiPageEditorPart multiPageEditor;
-
-	/**
-	 * The post selection changed listener.
-	 */
-	private ISelectionChangedListener postSelectionChangedListener = null;
-
-	/**
-	 * The selection change listener, initialized lazily; <code>null</code> if
-	 * not yet created.
-	 */
-	private ISelectionChangedListener selectionChangedListener = null;
-
-	/**
-	 * The selection provider; <code>null</code> if none.
-	 * 
-	 * @see MultiPageEditorSite#setSelectionProvider(ISelectionProvider)
-	 */
-	private ISelectionProvider selectionProvider = null;
-
-	/**
-	 * The cached copy of the key binding service specific to this multi-page
-	 * editor site. This value is <code>null</code> if it is not yet
-	 * initialized.
-	 */
-	private IKeyBindingService service = null;
-
-	/**
-	 * The local service locator for this multi-page editor site. This value is
-	 * never <code>null</code>.
-	 */
-	private final ServiceLocator serviceLocator;
-
-	/**
-	 * Creates a site for the given editor nested within the given multi-page
-	 * editor.
-	 * 
-	 * @param multiPageEditor
-	 *            the multi-page editor
-	 * @param editor
-	 *            the nested editor
-	 */
-	public MultiPageEditorSite(MultiPageEditorPart multiPageEditor,
-			IEditorPart editor) {
-		Assert.isNotNull(multiPageEditor);
-		Assert.isNotNull(editor);
-		this.multiPageEditor = multiPageEditor;
-		this.editor = editor;
-
-		final IServiceLocator parentServiceLocator = multiPageEditor.getSite();
-		IServiceLocatorCreator slc = (IServiceLocatorCreator) parentServiceLocator
-				.getService(IServiceLocatorCreator.class);
-		this.serviceLocator = (ServiceLocator) slc.createServiceLocator(
-				multiPageEditor.getSite(), null, new IDisposable(){
-					public void dispose() {
-						final Control control = ((PartSite)getMultiPageEditor().getSite()).getPane().getControl();
-						if (control != null && !control.isDisposed()) {
-							((PartSite)getMultiPageEditor().getSite()).getPane().doHide();
-						}
-					}});
-
-		initializeDefaultServices();
-	}
-
-	/**
-	 * Initialize the slave services for this site.
-	 */
-	private void initializeDefaultServices() {
-		serviceLocator.registerService(IWorkbenchLocationService.class,
-				new WorkbenchLocationService(IServiceScopes.MPESITE_SCOPE,
-						getWorkbenchWindow().getWorkbench(),
-						getWorkbenchWindow(), getMultiPageEditor().getSite(),
-						this, null, 3));
-	}
-
-	/**
-	 * Notifies the multi page editor service that the component within which it 
-	 * exists has become active.
-	 * 
-	 * @since 3.2
-	 */
-	public final void activate() {
-		serviceLocator.activate();
-	}
-
-	/**
-	 * Notifies the multi page editor service that the component within which it 
-	 * exists has been deactived.
-	 * 
-	 * @since 3.2
-	 */
-	public final void deactivate() {
-		serviceLocator.deactivate();
-	}
-
-	/**
-	 * Dispose the contributions.
-	 */
-	public void dispose() {
-		if (menuExtenders != null) {
-			for (int i = 0; i < menuExtenders.size(); i++) {
-				((PopupMenuExtender) menuExtenders.get(i)).dispose();
-			}
-			menuExtenders = null;
-		}
-
-		// Remove myself from the list of nested key binding services.
-		if (service != null) {
-			IKeyBindingService parentService = getEditor().getSite()
-					.getKeyBindingService();
-			if (parentService instanceof INestableKeyBindingService) {
-				INestableKeyBindingService nestableParent = (INestableKeyBindingService) parentService;
-				nestableParent.removeKeyBindingService(this);
-			}
-			service = null;
-		}
-
-		if (serviceLocator != null) {
-			serviceLocator.dispose();
-		}
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IEditorSite</code> method returns <code>null</code>, since
-	 * nested editors do not have their own action bar contributor.
-	 * 
-	 * @return <code>null</code>
-	 */
-	public IEditorActionBarContributor getActionBarContributor() {
-		return null;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IEditorSite</code> method forwards to the multi-page editor to
-	 * return the action bars.
-	 * 
-	 * @return The action bars from the parent multi-page editor.
-	 */
-	public IActionBars getActionBars() {
-		return multiPageEditor.getEditorSite().getActionBars();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method forwards to the multi-page
-	 * editor to return the decorator manager.
-	 * 
-	 * @return The decorator from the workbench window.
-	 * @deprecated use IWorkbench.getDecoratorManager()
-	 */
-	public ILabelDecorator getDecoratorManager() {
-		return getWorkbenchWindow().getWorkbench().getDecoratorManager()
-				.getLabelDecorator();
-	}
-
-	/**
-	 * Returns the nested editor.
-	 * 
-	 * @return the nested editor
-	 */
-	public IEditorPart getEditor() {
-		return editor;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method returns an empty string since
-	 * the nested editor is not created from the registry.
-	 * 
-	 * @return An empty string.
-	 */
-	public String getId() {
-		return ""; //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IEditorSite.
-	 */
-	public IKeyBindingService getKeyBindingService() {
-		if (service == null) {
-			service = getMultiPageEditor().getEditorSite()
-					.getKeyBindingService();
-			if (service instanceof INestableKeyBindingService) {
-				INestableKeyBindingService nestableService = (INestableKeyBindingService) service;
-				service = nestableService.getKeyBindingService(this);
-
-			} else {
-				/*
-				 * This is an internal reference, and should not be copied by
-				 * client code. If you are thinking of copying this, DON'T DO
-				 * IT.
-				 */
-				WorkbenchPlugin
-						.log("MultiPageEditorSite.getKeyBindingService()   Parent key binding service was not an instance of INestableKeyBindingService.  It was an instance of " + service.getClass().getName() + " instead."); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return service;
-	}
-
-	/**
-	 * Returns the multi-page editor.
-	 * 
-	 * @return the multi-page editor
-	 */
-	public MultiPageEditorPart getMultiPageEditor() {
-		return multiPageEditor;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method forwards to the multi-page
-	 * editor to return the workbench page.
-	 * 
-	 * @return The workbench page in which this editor site resides.
-	 */
-	public IWorkbenchPage getPage() {
-		return getMultiPageEditor().getSite().getPage();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchPartSite#getPart()
-	 */
-	public IWorkbenchPart getPart() {
-		return editor;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method returns an empty string since
-	 * the nested editor is not created from the registry.
-	 * 
-	 * @return An empty string.
-	 */
-	public String getPluginId() {
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the post selection change listener which listens to the nested
-	 * editor's selection changes.
-	 * 
-	 * @return the post selection change listener.
-	 */
-	private ISelectionChangedListener getPostSelectionChangedListener() {
-		if (postSelectionChangedListener == null) {
-			postSelectionChangedListener = new ISelectionChangedListener() {
-				public void selectionChanged(SelectionChangedEvent event) {
-					MultiPageEditorSite.this.handlePostSelectionChanged(event);
-				}
-			};
-		}
-		return postSelectionChangedListener;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method returns an empty string since
-	 * the nested editor is not created from the registry.
-	 * 
-	 * @return An empty string.
-	 */
-	public String getRegisteredName() {
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the selection changed listener which listens to the nested
-	 * editor's selection changes, and calls <code>handleSelectionChanged</code>.
-	 * 
-	 * @return the selection changed listener
-	 */
-	private ISelectionChangedListener getSelectionChangedListener() {
-		if (selectionChangedListener == null) {
-			selectionChangedListener = new ISelectionChangedListener() {
-				public void selectionChanged(SelectionChangedEvent event) {
-					MultiPageEditorSite.this.handleSelectionChanged(event);
-				}
-			};
-		}
-		return selectionChangedListener;
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method returns the selection provider
-	 * set by <code>setSelectionProvider</code>.
-	 * 
-	 * @return The current selection provider.
-	 */
-	public ISelectionProvider getSelectionProvider() {
-		return selectionProvider;
-	}
-
-	public final Object getService(final Class key) {
-		return serviceLocator.getService(key);
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method forwards to the multi-page
-	 * editor to return the shell.
-	 * 
-	 * @return The shell in which this editor site resides.
-	 */
-	public Shell getShell() {
-		return getMultiPageEditor().getSite().getShell();
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method forwards to the multi-page
-	 * editor to return the workbench window.
-	 * 
-	 * @return The workbench window in which this editor site resides.
-	 */
-	public IWorkbenchWindow getWorkbenchWindow() {
-		return getMultiPageEditor().getSite().getWorkbenchWindow();
-	}
-
-	/**
-	 * Handles a post selection changed even from the nexted editor.
-	 * <p>
-	 * Subclasses may extend or reimplement this method
-	 * 
-	 * @param event  the event
-	 * 
-	 * @since 3.2
-	 */
-	protected void handlePostSelectionChanged(SelectionChangedEvent event) {
-		ISelectionProvider parentProvider = getMultiPageEditor().getSite()
-				.getSelectionProvider();
-		if (parentProvider instanceof MultiPageSelectionProvider) {
-			SelectionChangedEvent newEvent = new SelectionChangedEvent(
-					parentProvider, event.getSelection());
-			MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
-			prov.firePostSelectionChanged(newEvent);
-		}
-	}
-
-	/**
-	 * Handles a selection changed event from the nested editor. The default
-	 * implementation gets the selection provider from the multi-page editor's
-	 * site, and calls <code>fireSelectionChanged</code> on it (only if it is
-	 * an instance of <code>MultiPageSelectionProvider</code>), passing a new
-	 * event object.
-	 * <p>
-	 * Subclasses may extend or reimplement this method.
-	 * </p>
-	 * 
-	 * @param event
-	 *            the event
-	 */
-	protected void handleSelectionChanged(SelectionChangedEvent event) {
-		ISelectionProvider parentProvider = getMultiPageEditor().getSite()
-				.getSelectionProvider();
-		if (parentProvider instanceof MultiPageSelectionProvider) {
-			SelectionChangedEvent newEvent = new SelectionChangedEvent(
-					parentProvider, event.getSelection());
-			MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
-			prov.fireSelectionChanged(newEvent);
-		}
-	}
-
-	public final boolean hasService(final Class key) {
-		return serviceLocator.hasService(key);
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method forwards to the multi-page
-	 * editor for registration.
-	 * 
-	 * @param menuManager
-	 *            The menu manager
-	 * @param selProvider
-	 *            The selection provider.
-	 */
-	public void registerContextMenu(MenuManager menuManager,
-			ISelectionProvider selProvider) {
-		getMultiPageEditor().getSite().registerContextMenu(menuManager,
-				selProvider);
-	}
-
-	public final void registerContextMenu(final MenuManager menuManager,
-			final ISelectionProvider selectionProvider,
-			final boolean includeEditorInput) {
-		registerContextMenu(getId(), menuManager, selectionProvider,
-				includeEditorInput);
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method forwards to the multi-page
-	 * editor for registration.
-	 * 
-	 * @param menuID
-	 *            The identifier for the menu.
-	 * @param menuMgr
-	 *            The menu manager
-	 * @param selProvider
-	 *            The selection provider.
-	 */
-	public void registerContextMenu(String menuID, MenuManager menuMgr,
-			ISelectionProvider selProvider) {
-		if (menuExtenders == null) {
-			menuExtenders = new ArrayList(1);
-		}
-		PartSite.registerContextMenu(menuID, menuMgr, selProvider, true,
-				editor, menuExtenders);
-	}
-
-	public final void registerContextMenu(final String menuId,
-			final MenuManager menuManager,
-			final ISelectionProvider selectionProvider,
-			final boolean includeEditorInput) {
-		if (menuExtenders == null) {
-			menuExtenders = new ArrayList(1);
-		}
-		PartSite.registerContextMenu(menuId, menuManager, selectionProvider,
-				includeEditorInput, editor, menuExtenders);
-	}
-
-	/**
-	 * The <code>MultiPageEditorSite</code> implementation of this
-	 * <code>IWorkbenchPartSite</code> method remembers the selection
-	 * provider, and also hooks a listener on it, which calls
-	 * <code>handleSelectionChanged</code> when a selection changed event
-	 * occurs.
-	 * 
-	 * @param provider
-	 *            The selection provider.
-	 * @see MultiPageEditorSite#handleSelectionChanged(SelectionChangedEvent)
-	 */
-	public void setSelectionProvider(ISelectionProvider provider) {
-		ISelectionProvider oldSelectionProvider = selectionProvider;
-		selectionProvider = provider;
-		if (oldSelectionProvider != null) {
-			oldSelectionProvider
-					.removeSelectionChangedListener(getSelectionChangedListener());
-			if (oldSelectionProvider instanceof IPostSelectionProvider) {
-				((IPostSelectionProvider) oldSelectionProvider)
-						.removePostSelectionChangedListener(getPostSelectionChangedListener());
-			}
-		}
-		if (selectionProvider != null) {
-			selectionProvider
-					.addSelectionChangedListener(getSelectionChangedListener());
-			if (selectionProvider instanceof IPostSelectionProvider) {
-				((IPostSelectionProvider) selectionProvider)
-						.addPostSelectionChangedListener(getPostSelectionChangedListener());
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageSelectionProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageSelectionProvider.java
deleted file mode 100644
index 39eb4f9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/MultiPageSelectionProvider.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IEditorPart;
-
-/**
- * Manages the current selection in a multi-page editor by tracking the active
- * nested editor within the multi-page editor. When the selection changes,
- * notifications are sent to all registered listeners.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * The base implementation of <code>MultiPageEditor.init</code> creates 
- * an instance of this class.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class MultiPageSelectionProvider implements IPostSelectionProvider {
-
-    /**
-     * Registered selection changed listeners (element type: 
-     * <code>ISelectionChangedListener</code>).
-     */
-    private ListenerList listeners = new ListenerList();
-    
-    /**
-     * Registered post selection changed listeners.
-     */
-    private ListenerList postListeners = new ListenerList();
-
-    /**
-     * The multi-page editor.
-     */
-    private MultiPageEditorPart multiPageEditor;
-
-    /**
-     * Creates a selection provider for the given multi-page editor.
-     *
-     * @param multiPageEditor the multi-page editor
-     */
-    public MultiPageSelectionProvider(MultiPageEditorPart multiPageEditor) {
-        Assert.isNotNull(multiPageEditor);
-        this.multiPageEditor = multiPageEditor;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on <code>ISelectionProvider</code>.
-     */
-    public void addSelectionChangedListener(ISelectionChangedListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     * Adds a listener for post selection changes in this multi page selection provider.
-     *
-     * @param listener a selection changed listener
-     * @since 3.2
-     */
-    public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
-    	postListeners.add(listener);
-	}
-
-	/**
-     * Notifies all registered selection changed listeners that the editor's 
-     * selection has changed. Only listeners registered at the time this method is
-     * called are notified.
-     *
-     * @param event the selection changed event
-     */
-    public void fireSelectionChanged(final SelectionChangedEvent event) {
-        Object[] listeners = this.listeners.getListeners();
-        fireEventChange(event, listeners);
-    }
-
-    /**
-     * Notifies all post selection changed listeners that the editor's
-     * selection has changed.
-     * 
-     * @param event the event to propogate.
-     * @since 3.2
-     */
-    public void firePostSelectionChanged(final SelectionChangedEvent event) {
-		Object[] listeners = postListeners.getListeners();
-		fireEventChange(event, listeners);
-	}
-
-	private void fireEventChange(final SelectionChangedEvent event, Object[] listeners) {
-		for (int i = 0; i < listeners.length; ++i) {
-            final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-            SafeRunner.run(new SafeRunnable() {
-                public void run() {
-                    l.selectionChanged(event);
-                }
-            });
-        }
-	}
-    
-    /**
-	 * Returns the multi-page editor.
-	 * @return the multi-page editor.
-	 */
-    public MultiPageEditorPart getMultiPageEditor() {
-        return multiPageEditor;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on <code>ISelectionProvider</code>.
-     */
-    public ISelection getSelection() {
-        IEditorPart activeEditor = multiPageEditor.getActiveEditor();
-        if (activeEditor != null) {
-            ISelectionProvider selectionProvider = activeEditor.getSite()
-                    .getSelectionProvider();
-            if (selectionProvider != null) {
-				return selectionProvider.getSelection();
-			}
-        }
-        return StructuredSelection.EMPTY;
-    }
-
-    /* (non-JavaDoc)
-     * Method declaed on <code>ISelectionProvider</code>.
-     */
-    public void removeSelectionChangedListener(
-            ISelectionChangedListener listener) {
-        listeners.remove(listener);
-    }
-    
-    /**
-     * Removes a listener for post selection changes in this multi page selection provider.
-     *
-     * @param listener a selection changed listener
-     * @since 3.2
-     */
-    public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
-    	postListeners.remove(listener);
-	}
-
-	/* (non-Javadoc)
-     * Method declared on <code>ISelectionProvider</code>.
-     */
-    public void setSelection(ISelection selection) {
-        IEditorPart activeEditor = multiPageEditor.getActiveEditor();
-        if (activeEditor != null) {
-            ISelectionProvider selectionProvider = activeEditor.getSite()
-                    .getSelectionProvider();
-            if (selectionProvider != null) {
-				selectionProvider.setSelection(selection);
-			}
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/Page.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/Page.java
deleted file mode 100644
index 438756d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/Page.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IActionBars;
-
-/**
- * Abstract base superclass for pages in a pagebook view.
- * <p>
- * This class should be subclassed by clients wishing to define new types
- * of pages for multi-page views.
- * </p>
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- *   <li><code>createControl</code> - to create the page's control</li>
- *   <li><code>getControl</code> - to retrieve the page's control</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend or reimplement the following methods as required:
- * <ul>
- *   <li><code>dispose</code> - extend to provide additional cleanup</li>
- *   <li><code>setFocus</code> - reimplement to accept focus</li>
- *   <li><code>setActionBars</code> - reimplement to make contributions</li>
- *   <li><code>makeContributions</code> - this method exists to support previous versions</li>
- *   <li><code>setActionBars</code> - this method exists to support previous versions</li>
- *   <li><code>init</code> - extend to provide additional setup</li>
- * </ul>
- * </p>
- *
- * @see PageBookView
- */
-public abstract class Page implements IPageBookViewPage {
-    /**
-     * The site which contains this page
-     */
-    private IPageSite site;
-
-    /* 
-     * Creates a new page for a pagebook view.
-     */
-    protected Page() {
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IPage.
-     */
-    public abstract void createControl(Composite parent);
-
-    /**
-     * The <code>Page</code> implementation of this <code>IPage</code> method 
-     * disposes of this page's control (if it has one and it has not already
-     * been disposed). Subclasses may extend.
-     */
-    public void dispose() {
-        Control ctrl = getControl();
-        if (ctrl != null && !ctrl.isDisposed()) {
-			ctrl.dispose();
-		}
-    }
-
-    /**
-     * The <code>Page</code> implementation of this <code>IPage</code> method returns
-     * <code>null</code>. Subclasses must reimplement.
-     */
-    public abstract Control getControl();
-
-    /* (non-Javadoc)
-     * This method exists for backward compatibility.
-     * Subclasses should reimplement <code>init</code>.
-     */
-    public void makeContributions(IMenuManager menuManager,
-            IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
-    }
-
-    /* (non-Javadoc)
-     * This method exists for backward compatibility.
-     * Subclasses should reimplement <code>init</code>.
-     */
-    public void setActionBars(IActionBars actionBars) {
-        makeContributions(actionBars.getMenuManager(), actionBars
-                .getToolBarManager(), actionBars.getStatusLineManager());
-    }
-
-    /**
-     * The <code>Page</code> implementation of this <code>IPageBookViewPage</code> method
-     * stores a reference to the supplied site (the site which contains this 
-     * page). 
-     * <p>
-     * Subclasses may extend.
-     * </p>
-     * 
-     * @since 2.0
-     */
-    public void init(IPageSite pageSite) {
-        site = pageSite;
-    }
-
-    /**
-     * Returns the site which contains this page.
-     * 
-     * @return the site which contains this page
-     */
-    public IPageSite getSite() {
-        return site;
-    }
-
-    /**
-     * The <code>Page</code> implementation of this <code>IPage</code> method
-     * does nothing. Subclasses must implement.
-     */
-    public abstract void setFocus();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBook.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBook.java
deleted file mode 100644
index 7a764bd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBook.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-
-/**
- * A pagebook is a composite control where only a single control is visible
- * at a time. It is similar to a notebook, but without tabs.
- * <p>
- * This class may be instantiated; it is not intended to be subclassed.
- * </p>
- * <p>
- * Note that although this class is a subclass of <code>Composite</code>,
- * it does not make sense to set a layout on it.
- * </p>
- *
- * @see PageBookView
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PageBook extends Composite {
-
-    /**
-     * <p>
-     * [Issue: This class should be declared private.]
-     * </p>
-     */
-    public class PageBookLayout extends Layout {
-
-        protected Point computeSize(Composite composite, int wHint, int hHint,
-                boolean flushCache) {
-            if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
-				return new Point(wHint, hHint);
-			}
-
-            Point result = null;
-            if (currentPage != null) {
-                result = currentPage.computeSize(wHint, hHint, flushCache);
-            } else {
-                //Rectangle rect= composite.getClientArea();
-                //result= new Point(rect.width, rect.height);
-                result = new Point(0, 0);
-            }
-            if (wHint != SWT.DEFAULT) {
-				result.x = wHint;
-			}
-            if (hHint != SWT.DEFAULT) {
-				result.y = hHint;
-			}
-            return result;
-        }
-
-        protected void layout(Composite composite, boolean flushCache) {
-            if (currentPage != null) {
-                currentPage.setBounds(composite.getClientArea());
-            }
-        }
-    }
-
-    /**
-     * The current control; <code>null</code> if none.
-     */
-    private Control currentPage = null;
-
-    /**
-     * Creates a new empty pagebook.
-     *
-     * @param parent the parent composite
-     * @param style the SWT style bits
-     */
-    public PageBook(Composite parent, int style) {
-        super(parent, style);
-        setLayout(new PageBookLayout());
-    }
-
-    /**
-     * Shows the given page. This method has no effect if the given page is not
-     * contained in this pagebook.
-     *
-     * @param page the page to show
-     */
-    public void showPage(Control page) {
-
-        if (page == currentPage) {
-			return;
-		}
-        if (page.getParent() != this) {
-			return;
-		}
-
-        Control oldPage = currentPage;
-        currentPage = page;
-
-        // show new page
-        if (page != null) {
-            if (!page.isDisposed()) {
-                page.setVisible(true);
-                layout(true);
-                //				if (fRequestFocusOnShowPage)
-                //					page.setFocus();
-            }
-        }
-
-        // hide old *after* new page has been made visible in order to avoid flashing
-        if (oldPage != null && !oldPage.isDisposed()) {
-			oldPage.setVisible(false);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java
deleted file mode 100644
index f380bc4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageBookView.java
+++ /dev/null
@@ -1,993 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Abstract superclass of all multi-page workbench views.
- * <p>
- * Within the workbench there are many views which track the active part. If a
- * part is activated these views display some properties for the active part. A
- * simple example is the <code>Outline View</code>, which displays the
- * outline for the active editor. To avoid loss of context when part activation
- * changes, these views may implement a multi-page approach. A separate page is
- * maintained within the view for each source view. If a part is activated the
- * associated page for the part is brought to top. If a part is closed the
- * associated page is disposed. <code>PageBookView</code> is a base
- * implementation for multi page views.
- * </p>
- * <p>
- * <code>PageBookView</code>s provide an <code>IPageSite</code> for each of
- * their pages. This site is supplied during the page's initialization. The page
- * may supply a selection provider for this site. <code>PageBookView</code>s
- * deal with these selection providers in a similar way to a workbench page's
- * <code>SelectionService</code>. When a page is made visible, if its site
- * has a selection provider, then changes in the selection are listened for and
- * the current selection is obtained and fired as a selection change event.
- * Selection changes are no longer listened for when a page is made invisible.
- * </p>
- * <p>
- * This class should be subclassed by clients wishing to define new multi-page
- * views.
- * </p>
- * <p>
- * When a <code>PageBookView</code> is created the following methods are
- * invoked. Subclasses must implement these.
- * <ul>
- * <li><code>createDefaultPage</code> - called to create a default page for
- * the view. This page is displayed when the active part in the workbench does
- * not have a page.</li>
- * <li><code>getBootstrapPart</code> - called to determine the active part in
- * the workbench. A page will be created for this part</li>
- * </ul>
- * </p>
- * <p>
- * When a part is activated the base implementation does not know if a page
- * should be created for the part. Therefore, it delegates creation to the
- * subclass.
- * <ul>
- * <li><code>isImportant</code> - called when a workbench part is activated.
- * Subclasses return whether a page should be created for the new part.</li>
- * <li><code>doCreatePage</code> - called to create a page for a particular
- * part in the workbench. This is only invoked when <code>isImportant</code>
- * returns </code>true</code>.</li>
- * </ul>
- * </p>
- * <p>
- * When a part is closed the base implementation will destroy the page
- * associated with the particular part. The page was created by a subclass, so
- * the subclass must also destroy it. Subclasses must implement these.
- * <ul>
- * <li><code>doDestroyPage</code> - called to destroy a page for a particular
- * part in the workbench.</li>
- * </ul>
- * </p>
- */
-public abstract class PageBookView extends ViewPart implements IPartListener {
-	/**
-	 * The pagebook control, or <code>null</code> if not initialized.
-	 */
-	private PageBook book;
-
-	/**
-	 * The page record for the default page.
-	 */
-	private PageRec defaultPageRec;
-
-	/**
-	 * Map from parts to part records (key type: <code>IWorkbenchPart</code>;
-	 * value type: <code>PartRec</code>).
-	 */
-	private Map mapPartToRec = new HashMap();
-
-	/**
-	 * Map from pages to view sites Note that view sites were not added to page
-	 * recs to avoid breaking binary compatibility with previous builds
-	 */
-	private Map mapPageToSite = new HashMap();
-
-	/**
-	 * Map from pages to the number of pageRecs actively associated with a page.
-	 */
-	private Map mapPageToNumRecs = new HashMap();
-
-	/**
-	 * The page rec which provided the current page or <code>null</code>
-	 */
-	private PageRec activeRec;
-
-	/**
-	 * The action bar property listener.
-	 */
-	private IPropertyChangeListener actionBarPropListener = new IPropertyChangeListener() {
-		public void propertyChange(PropertyChangeEvent event) {
-			if (event.getProperty().equals(SubActionBars.P_ACTION_HANDLERS)
-					&& activeRec != null
-					&& event.getSource() == activeRec.subActionBars) {
-				refreshGlobalActionHandlers();
-			}
-		}
-	};
-
-	/**
-	 * Selection change listener to listen for page selection changes
-	 */
-	private ISelectionChangedListener selectionChangedListener = new ISelectionChangedListener() {
-		public void selectionChanged(SelectionChangedEvent event) {
-			pageSelectionChanged(event);
-		}
-	};
-
-	/**
-	 * Selection change listener to listen for page selection changes
-	 */
-	private ISelectionChangedListener postSelectionListener = new ISelectionChangedListener() {
-		public void selectionChanged(SelectionChangedEvent event) {
-			postSelectionChanged(event);
-		}
-	};
-
-	/**
-	 * Selection provider for this view's site
-	 */
-	private SelectionProvider selectionProvider = new SelectionProvider();
-
-	/**
-	 * A data structure used to store the information about a single page within
-	 * a pagebook view.
-	 */
-	protected static class PageRec {
-
-		/**
-		 * The part.
-		 */
-		public IWorkbenchPart part;
-
-		/**
-		 * The page.
-		 */
-		public IPage page;
-
-		/**
-		 * The page's action bars
-		 */
-		public SubActionBars subActionBars;
-
-		/**
-		 * Creates a new page record initialized to the given part and page.
-		 * 
-		 * @param part
-		 * @param page
-		 */
-		public PageRec(IWorkbenchPart part, IPage page) {
-			this.part = part;
-			this.page = page;
-		}
-
-		/**
-		 * Disposes of this page record by <code>null</code>ing its fields.
-		 */
-		public void dispose() {
-			part = null;
-			page = null;
-		}
-	}
-
-	private static class SelectionManager extends EventManager {
-		/**
-		 * 
-		 * @param listener
-		 *            listen
-		 */
-		public void addSelectionChangedListener(
-				ISelectionChangedListener listener) {
-			addListenerObject(listener);
-		}
-
-		/**
-		 * 
-		 * @param listener
-		 *            listen
-		 */
-		public void removeSelectionChangedListener(
-				ISelectionChangedListener listener) {
-			removeListenerObject(listener);
-		}
-
-		/**
-		 * 
-		 * @param event
-		 *            the event
-		 */
-		public void selectionChanged(final SelectionChangedEvent event) {
-			// pass on the notification to listeners
-			Object[] listeners = getListeners();
-			for (int i = 0; i < listeners.length; ++i) {
-				final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-				Platform.run(new SafeRunnable() {
-					public void run() {
-						l.selectionChanged(event);
-					}
-				});
-			}
-		}
-
-	}
-
-	/**
-	 * A selection provider/listener for this view. It is a selection provider
-	 * for this view's site.
-	 */
-	protected class SelectionProvider implements IPostSelectionProvider {
-
-		private SelectionManager fSelectionListener = new SelectionManager();
-
-		private SelectionManager fPostSelectionListeners = new SelectionManager();
-
-		/*
-		 * (non-Javadoc) Method declared on ISelectionProvider.
-		 */
-		public void addSelectionChangedListener(
-				ISelectionChangedListener listener) {
-			fSelectionListener.addSelectionChangedListener(listener);
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on ISelectionProvider.
-		 */
-		public ISelection getSelection() {
-			// get the selection provider from the current page
-			IPage currentPage = getCurrentPage();
-			// during workbench startup we may be in a state when
-			// there is no current page
-			if (currentPage == null) {
-				return StructuredSelection.EMPTY;
-			}
-			IPageSite site = getPageSite(currentPage);
-			if (site == null) {
-				return StructuredSelection.EMPTY;
-			}
-			ISelectionProvider selProvider = site.getSelectionProvider();
-			if (selProvider != null) {
-				return selProvider.getSelection();
-			}
-			return StructuredSelection.EMPTY;
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on ISelectionProvider.
-		 */
-		public void removeSelectionChangedListener(
-				ISelectionChangedListener listener) {
-			fSelectionListener.removeSelectionChangedListener(listener);
-		}
-
-		/**
-		 * The selection has changed. Process the event, notifying selection
-		 * listeners and post selection listeners.
-		 * 
-		 * @param event
-		 *            the change
-		 */
-		public void selectionChanged(final SelectionChangedEvent event) {
-			fSelectionListener.selectionChanged(event);
-		}
-
-		/**
-		 * The selection has changed, so notify any post-selection listeners.
-		 * 
-		 * @param event
-		 *            the change
-		 */
-		public void postSelectionChanged(final SelectionChangedEvent event) {
-			fPostSelectionListeners.selectionChanged(event);			
-		}
-
-		/*
-		 * (non-Javadoc) Method declared on ISelectionProvider.
-		 */
-		public void setSelection(ISelection selection) {
-			// get the selection provider from the current page
-			IPage currentPage = getCurrentPage();
-			// during workbench startup we may be in a state when
-			// there is no current page
-			if (currentPage == null) {
-				return;
-			}
-			IPageSite site = getPageSite(currentPage);
-			if (site == null) {
-				return;
-			}
-			ISelectionProvider selProvider = site.getSelectionProvider();
-			// and set its selection
-			if (selProvider != null) {
-				selProvider.setSelection(selection);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IPostSelectionProvider#addPostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-		 */
-		public void addPostSelectionChangedListener(
-				ISelectionChangedListener listener) {
-			fPostSelectionListeners.addSelectionChangedListener(listener);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IPostSelectionProvider#removePostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-		 */
-		public void removePostSelectionChangedListener(
-				ISelectionChangedListener listener) {
-			fPostSelectionListeners.removeSelectionChangedListener(listener);
-		}
-	}
-
-	/**
-	 * Creates a new pagebook view.
-	 */
-	protected PageBookView() {
-		super();
-	}
-
-	/**
-	 * Creates and returns the default page for this view.
-	 * <p>
-	 * Subclasses must implement this method.
-	 * </p>
-	 * <p>
-	 * Subclasses must call initPage with the new page (if it is an
-	 * <code>IPageBookViewPage</code>) before calling createControl on the
-	 * page.
-	 * </p>
-	 * 
-	 * @param book
-	 *            the pagebook control
-	 * @return the default page
-	 */
-	protected abstract IPage createDefaultPage(PageBook book);
-
-	/**
-	 * Creates a page for a given part. Adds it to the pagebook but does not
-	 * show it.
-	 * 
-	 * @param part
-	 *            The part we are making a page for.
-	 * @return IWorkbenchPart
-	 */
-	private PageRec createPage(IWorkbenchPart part) {
-		PageRec rec = doCreatePage(part);
-		if (rec != null) {
-			mapPartToRec.put(part, rec);
-			preparePage(rec);
-		}
-		return rec;
-	}
-
-	/**
-	 * Prepares the page in the given page rec for use in this view.
-	 * 
-	 * @param rec
-	 */
-	private void preparePage(PageRec rec) {
-		IPageSite site = null;
-		Integer count;
-
-		if (!doesPageExist(rec.page)) {
-			if (rec.page instanceof IPageBookViewPage) {
-				site = ((IPageBookViewPage) rec.page).getSite();
-			}
-			if (site == null) {
-				// We will create a site for our use
-				site = new PageSite(getViewSite());
-			}
-			mapPageToSite.put(rec.page, site);
-
-			rec.subActionBars = (SubActionBars) site.getActionBars();
-			rec.subActionBars.addPropertyChangeListener(actionBarPropListener);
-			// for backward compability with IPage
-			rec.page.setActionBars(rec.subActionBars);
-
-			count = new Integer(0);
-		} else {
-			site = (IPageSite) mapPageToSite.get(rec.page);
-			rec.subActionBars = (SubActionBars) site.getActionBars();
-			count = ((Integer) mapPageToNumRecs.get(rec.page));
-		}
-
-		mapPageToNumRecs.put(rec.page, new Integer(count.intValue() + 1));
-	}
-
-	/**
-	 * Initializes the given page with a page site.
-	 * <p>
-	 * Subclasses should call this method after the page is created but before
-	 * creating its controls.
-	 * </p>
-	 * <p>
-	 * Subclasses may override
-	 * </p>
-	 * 
-	 * @param page
-	 *            The page to initialize
-	 */
-	protected void initPage(IPageBookViewPage page) {
-		try {
-			page.init(new PageSite(getViewSite()));
-		} catch (PartInitException e) {
-			WorkbenchPlugin.log(getClass(), "initPage", e); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IWorkbenchPart</code> method creates a <code>PageBook</code>
-	 * control with its default page showing. Subclasses may extend.
-	 */
-	public void createPartControl(Composite parent) {
-
-		// Create the page book.
-		book = new PageBook(parent, SWT.NONE);
-
-		// Create the default page rec.
-		IPage defaultPage = createDefaultPage(book);
-		defaultPageRec = new PageRec(null, defaultPage);
-		preparePage(defaultPageRec);
-
-		// Show the default page
-		showPageRec(defaultPageRec);
-
-		// Listen to part activation events.
-		getSite().getPage().addPartListener(this);
-		showBootstrapPart();
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IWorkbenchPart</code> method cleans up all the pages. Subclasses
-	 * may extend.
-	 */
-	public void dispose() {
-		// stop listening to part activation
-		getSite().getPage().removePartListener(this);
-
-		// Deref all of the pages.
-		activeRec = null;
-		if (defaultPageRec != null) {
-			// check for null since the default page may not have
-			// been created (ex. perspective never visible)
-			defaultPageRec.page.dispose();
-			defaultPageRec = null;
-		}
-		Map clone = (Map) ((HashMap) mapPartToRec).clone();
-		Iterator itr = clone.values().iterator();
-		while (itr.hasNext()) {
-			PageRec rec = (PageRec) itr.next();
-			removePage(rec);
-		}
-
-		// Run super.
-		super.dispose();
-	}
-
-	/**
-	 * Creates a new page in the pagebook for a particular part. This page will
-	 * be made visible whenever the part is active, and will be destroyed with a
-	 * call to <code>doDestroyPage</code>.
-	 * <p>
-	 * Subclasses must implement this method.
-	 * </p>
-	 * <p>
-	 * Subclasses must call initPage with the new page (if it is an
-	 * <code>IPageBookViewPage</code>) before calling createControl on the
-	 * page.
-	 * </p>
-	 * 
-	 * @param part
-	 *            the input part
-	 * @return the record describing a new page for this view
-	 * @see #doDestroyPage
-	 */
-	protected abstract PageRec doCreatePage(IWorkbenchPart part);
-
-	/**
-	 * Destroys a page in the pagebook for a particular part. This page was
-	 * returned as a result from <code>doCreatePage</code>.
-	 * <p>
-	 * Subclasses must implement this method.
-	 * </p>
-	 * 
-	 * @param part
-	 *            the input part
-	 * @param pageRecord
-	 *            a page record for the part
-	 * @see #doCreatePage
-	 */
-	protected abstract void doDestroyPage(IWorkbenchPart part,
-			PageRec pageRecord);
-
-	/**
-	 * Returns true if the page has already been created.
-	 * 
-	 * @param page
-	 *            the page to test
-	 * @return true if this page has already been created.
-	 */
-	protected boolean doesPageExist(IPage page) {
-		return mapPageToNumRecs.containsKey(page);
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IAdaptable</code> method delegates to the current page, if it
-	 * implements <code>IAdaptable</code>.
-	 */
-	public Object getAdapter(Class key) {
-		// delegate to the current page, if supported
-		IPage page = getCurrentPage();
-		Object adapter = Util.getAdapter(page, key);
-		if (adapter != null) {
-			return adapter;
-		}
-		// if the page did not find the adapter, look for one provided by
-		// this view before delegating to super.
-		adapter = getViewAdapter(key);
-		if (adapter != null) {
-			return adapter;
-		}
-		// delegate to super
-		return super.getAdapter(key);
-	}
-
-	/**
-	 * Returns an adapter of the specified type, as provided by this view (not
-	 * the current page), or <code>null</code> if this view does not provide
-	 * an adapter of the specified adapter.
-	 * <p>
-	 * The default implementation returns <code>null</code>. Subclasses may
-	 * override.
-	 * </p>
-	 * 
-	 * @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
-	 * @since 3.2
-	 */
-	protected Object getViewAdapter(Class adapter) {
-		return null;
-	}
-
-	/**
-	 * Returns the active, important workbench part for this view.
-	 * <p>
-	 * When the page book view is created it has no idea which part within the
-	 * workbook should be used to generate the first page. Therefore, it
-	 * delegates the choice to subclasses of <code>PageBookView</code>.
-	 * </p>
-	 * <p>
-	 * Implementors of this method should return an active, important part in
-	 * the workbench or <code>null</code> if none found.
-	 * </p>
-	 * <p>
-	 * Subclasses must implement this method.
-	 * </p>
-	 * 
-	 * @return the active important part, or <code>null</code> if none
-	 */
-	protected abstract IWorkbenchPart getBootstrapPart();
-
-	/**
-	 * Returns the part which contributed the current page to this view.
-	 * 
-	 * @return the part which contributed the current page or <code>null</code>
-	 *         if no part contributed the current page
-	 */
-	protected IWorkbenchPart getCurrentContributingPart() {
-		if (activeRec == null) {
-			return null;
-		}
-		return activeRec.part;
-	}
-
-	/**
-	 * Returns the currently visible page for this view or <code>null</code>
-	 * if no page is currently visible.
-	 * 
-	 * @return the currently visible page
-	 */
-	public IPage getCurrentPage() {
-		if (activeRec == null) {
-			return null;
-		}
-		return activeRec.page;
-	}
-
-	/**
-	 * Returns the view site for the given page of this view.
-	 * 
-	 * @param page
-	 *            the page
-	 * @return the corresponding site, or <code>null</code> if not found
-	 */
-	protected PageSite getPageSite(IPage page) {
-		return (PageSite) mapPageToSite.get(page);
-	}
-
-	/**
-	 * Returns the default page for this view.
-	 * 
-	 * @return the default page
-	 */
-	public IPage getDefaultPage() {
-		return defaultPageRec.page;
-	}
-
-	/**
-	 * Returns the pagebook control for this view.
-	 * 
-	 * @return the pagebook control, or <code>null</code> if not initialized
-	 */
-	protected PageBook getPageBook() {
-		return book;
-	}
-
-	/**
-	 * Returns the page record for the given part.
-	 * 
-	 * @param part
-	 *            the part
-	 * @return the corresponding page record, or <code>null</code> if not
-	 *         found
-	 */
-	protected PageRec getPageRec(IWorkbenchPart part) {
-		return (PageRec) mapPartToRec.get(part);
-	}
-
-	/**
-	 * Returns the page record for the given page of this view.
-	 * 
-	 * @param page
-	 *            the page
-	 * @return the corresponding page record, or <code>null</code> if not
-	 *         found
-	 */
-	protected PageRec getPageRec(IPage page) {
-		Iterator itr = mapPartToRec.values().iterator();
-		while (itr.hasNext()) {
-			PageRec rec = (PageRec) itr.next();
-			if (rec.page == page) {
-				return rec;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns whether the given part should be added to this view.
-	 * <p>
-	 * Subclasses must implement this method.
-	 * </p>
-	 * 
-	 * @param part
-	 *            the input part
-	 * @return <code>true</code> if the part is relevant, and
-	 *         <code>false</code> otherwise
-	 */
-	protected abstract boolean isImportant(IWorkbenchPart part);
-
-	/*
-	 * (non-Javadoc) Method declared on IViewPart.
-	 */
-	public void init(IViewSite site) throws PartInitException {
-		site.setSelectionProvider(selectionProvider);
-		super.init(site);
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IPartListener</code> method shows the page when the given part is
-	 * activated. Subclasses may extend.
-	 */
-	public void partActivated(IWorkbenchPart part) {
-		// Is this an important part? If not just return.
-		if (!isImportant(part)) {
-			return;
-		}
-
-		// Create a page for the part.
-		PageRec rec = getPageRec(part);
-		if (rec == null) {
-			rec = createPage(part);
-		}
-
-		// Show the page.
-		if (rec != null) {
-			showPageRec(rec);
-		} else {
-			showPageRec(defaultPageRec);
-		}
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IPartListener</code> method does nothing. Subclasses may extend.
-	 */
-	public void partBroughtToTop(IWorkbenchPart part) {
-		// Do nothing by default
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IPartListener</code> method deal with the closing of the active
-	 * part. Subclasses may extend.
-	 */
-	public void partClosed(IWorkbenchPart part) {
-		// Update the active part.
-		if (activeRec != null && activeRec.part == part) {
-			showPageRec(defaultPageRec);
-		}
-
-		// Find and remove the part page.
-		PageRec rec = getPageRec(part);
-		if (rec != null) {
-			removePage(rec);
-		}
-	}
-
-	/**
-	 * The <code>PageBookView</code> implementation of this
-	 * <code>IPartListener</code> method does nothing. Subclasses may extend.
-	 */
-	public void partDeactivated(IWorkbenchPart part) {
-		// Do nothing.
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart)
-	 */
-	public void partOpened(IWorkbenchPart part) {
-		// Do nothing by default.
-	}
-
-	/**
-	 * Refreshes the global actions for the active page.
-	 */
-	private void refreshGlobalActionHandlers() {
-		// Clear old actions.
-		IActionBars bars = getViewSite().getActionBars();
-		bars.clearGlobalActionHandlers();
-
-		// Set new actions.
-		Map newActionHandlers = activeRec.subActionBars
-				.getGlobalActionHandlers();
-		if (newActionHandlers != null) {
-			Set keys = newActionHandlers.entrySet();
-			Iterator iter = keys.iterator();
-			while (iter.hasNext()) {
-				Map.Entry entry = (Map.Entry) iter.next();
-				bars.setGlobalActionHandler((String) entry.getKey(),
-						(IAction) entry.getValue());
-			}
-		}
-	}
-
-	/**
-	 * Removes a page record. If it is the last reference to the page dispose of
-	 * it - otherwise just decrement the reference count.
-	 * 
-	 * @param rec
-	 */
-	private void removePage(PageRec rec) {
-		mapPartToRec.remove(rec.part);
-
-		int newCount = ((Integer) mapPageToNumRecs.get(rec.page)).intValue() - 1;
-
-		if (newCount == 0) {
-			Object site = mapPageToSite.remove(rec.page);
-			mapPageToNumRecs.remove(rec.page);
-
-			Control control = rec.page.getControl();
-			if (control != null && !control.isDisposed()) {
-				// Dispose the page's control so pages don't have to do this in
-				// their
-				// dispose method.
-				// The page's control is a child of this view's control so if
-				// this view
-				// is closed, the page's control will already be disposed.
-				control.dispose();
-			}
-
-			// free the page
-			doDestroyPage(rec.part, rec);
-
-			if (rec.subActionBars != null) {
-				rec.subActionBars.dispose();
-			}
-
-			if (site instanceof PageSite) {
-				((PageSite) site).dispose();
-			}
-		} else {
-			mapPageToNumRecs.put(rec.page, new Integer(newCount));
-		}
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IWorkbenchPart.
-	 */
-	public void setFocus() {
-		// first set focus on the page book, in case the page
-		// doesn't properly handle setFocus
-		if (book != null) {
-			book.setFocus();
-		}
-		// then set focus on the page, if any
-		if (activeRec != null) {
-			activeRec.page.setFocus();
-		}
-	}
-
-	/**
-	 * Handle page selection changes.
-	 * 
-	 * @param event
-	 */
-	private void pageSelectionChanged(SelectionChangedEvent event) {
-		// forward this change from a page to our site's selection provider
-		SelectionProvider provider = (SelectionProvider) getSite()
-				.getSelectionProvider();
-		if (provider != null) {
-			provider.selectionChanged(event);
-		}
-	}
-
-	/**
-	 * Handle page selection changes.
-	 * 
-	 * @param event
-	 */
-	private void postSelectionChanged(SelectionChangedEvent event) {
-		// forward this change from a page to our site's selection provider
-		SelectionProvider provider = (SelectionProvider) getSite()
-				.getSelectionProvider();
-		if (provider != null) {
-			provider.postSelectionChanged(event);
-		}
-	}
-
-	/**
-	 * Shows a page for the active workbench part.
-	 */
-	private void showBootstrapPart() {
-		IWorkbenchPart part = getBootstrapPart();
-		if (part != null) {
-			partActivated(part);
-		}
-	}
-
-	/**
-	 * Shows page contained in the given page record in this view. The page
-	 * record must be one from this pagebook view.
-	 * <p>
-	 * The <code>PageBookView</code> implementation of this method asks the
-	 * pagebook control to show the given page's control, and records that the
-	 * given page is now current. Subclasses may extend.
-	 * </p>
-	 * 
-	 * @param pageRec
-	 *            the page record containing the page to show
-	 */
-	protected void showPageRec(PageRec pageRec) {
-		// If already showing do nothing
-		if (activeRec == pageRec) {
-			return;
-		}
-		// If the page is the same, just set activeRec to pageRec
-		if (activeRec != null && pageRec != null
-				&& activeRec.page == pageRec.page) {
-			activeRec = pageRec;
-			return;
-		}
-
-		// Hide old page.
-		if (activeRec != null) {
-			PageSite pageSite = (PageSite) mapPageToSite.get(activeRec.page);
-
-			activeRec.subActionBars.deactivate();
-
-			// deactivate the nested services
-			pageSite.deactivate();
-
-			// remove our selection listener
-			ISelectionProvider provider = pageSite.getSelectionProvider();
-			if (provider != null) {
-				provider
-						.removeSelectionChangedListener(selectionChangedListener);
-				if (provider instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) provider)
-							.removePostSelectionChangedListener(postSelectionListener);
-				}
-			}
-		}
-
-		// Show new page.
-		activeRec = pageRec;
-		Control pageControl = activeRec.page.getControl();
-		if (pageControl != null && !pageControl.isDisposed()) {
-			PageSite pageSite = (PageSite) mapPageToSite.get(activeRec.page);
-
-			// Verify that the page control is not disposed
-			// If we are closing, it may have already been disposed
-			book.showPage(pageControl);
-			activeRec.subActionBars.activate();
-			refreshGlobalActionHandlers();
-
-			// activate the nested services
-			pageSite.activate();
-
-			// add our selection listener
-			ISelectionProvider provider = pageSite.getSelectionProvider();
-			if (provider != null) {
-				provider.addSelectionChangedListener(selectionChangedListener);
-				if (provider instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) provider)
-							.addPostSelectionChangedListener(postSelectionListener);
-				}
-			}
-			// Update action bars.
-			getViewSite().getActionBars().updateActionBars();
-		}
-	}
-
-	/**
-	 * Returns the selectionProvider for this page book view.
-	 * 
-	 * @return a SelectionProvider
-	 */
-	protected SelectionProvider getSelectionProvider() {
-		return selectionProvider;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSite.java
deleted file mode 100644
index e329ac6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSite.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.PopupMenuExtender;
-import org.eclipse.ui.internal.services.INestable;
-import org.eclipse.ui.internal.services.IServiceLocatorCreator;
-import org.eclipse.ui.internal.services.IWorkbenchLocationService;
-import org.eclipse.ui.internal.services.ServiceLocator;
-import org.eclipse.ui.internal.services.WorkbenchLocationService;
-import org.eclipse.ui.services.IDisposable;
-import org.eclipse.ui.services.IServiceScopes;
-
-/**
- * This implementation of <code>IPageSite</code> provides a site for a page
- * within a <code>PageBookView</code>. Most methods are forwarded to the
- * view's site.
- */
-public class PageSite implements IPageSite, INestable {
-
-	/**
-	 * The list of menu extender for each registered menu.
-	 */
-	private ArrayList menuExtenders;
-
-	/**
-	 * The "parent" view site
-	 */
-	private IViewSite parentSite;
-
-	/**
-	 * A selection provider set by the page. Value is <code>null</code> until
-	 * set.
-	 */
-	private ISelectionProvider selectionProvider;
-
-	/**
-	 * The localized service locator for this page site. This locator is never
-	 * <code>null</code>.
-	 */
-	private final ServiceLocator serviceLocator;
-
-	/**
-	 * The action bars for this site
-	 */
-	private SubActionBars subActionBars;
-
-	/**
-	 * Creates a new sub view site of the given parent view site.
-	 * 
-	 * @param parentViewSite
-	 *            the parent view site
-	 */
-	public PageSite(final IViewSite parentViewSite) {
-		Assert.isNotNull(parentViewSite);
-		parentSite = parentViewSite;
-		subActionBars = new SubActionBars(parentViewSite.getActionBars(), this);
-
-		// Initialize the service locator.
-		IServiceLocatorCreator slc = (IServiceLocatorCreator) parentSite
-				.getService(IServiceLocatorCreator.class);
-		this.serviceLocator = (ServiceLocator) slc.createServiceLocator(
-				parentViewSite, null, new IDisposable(){
-					public void dispose() {
-						final Control control = ((PartSite)parentViewSite).getPane().getControl();
-						if (control != null && !control.isDisposed()) {
-							((PartSite)parentViewSite).getPane().doHide();
-						}
-					}
-				});
-		initializeDefaultServices();
-	}
-
-	/**
-	 * Initialize the slave services for this site.
-	 */
-	private void initializeDefaultServices() {
-		serviceLocator.registerService(IWorkbenchLocationService.class,
-				new WorkbenchLocationService(IServiceScopes.PAGESITE_SCOPE,
-						getWorkbenchWindow().getWorkbench(),
-						getWorkbenchWindow(), parentSite, null, this, 3));
-	}
-
-	/**
-	 * Disposes of the menu extender contributions.
-	 */
-	protected void dispose() {
-		if (menuExtenders != null) {
-			HashSet managers = new HashSet(menuExtenders.size());
-			for (int i = 0; i < menuExtenders.size(); i++) {
-				PopupMenuExtender ext = (PopupMenuExtender) menuExtenders.get(i);
-				managers.add(ext.getManager());
-				ext.dispose();
-			}
-			if (managers.size()>0) {
-				for (Iterator iterator = managers.iterator(); iterator
-						.hasNext();) {
-					MenuManager mgr = (MenuManager) iterator.next();
-					mgr.dispose();
-				}
-			}
-			menuExtenders = null;
-		}
-		subActionBars.dispose();
-		serviceLocator.dispose();
-	}
-
-	/**
-	 * The PageSite implementation of this <code>IPageSite</code> method
-	 * returns the <code>SubActionBars</code> for this site.
-	 * 
-	 * @return the subactionbars for this site
-	 */
-	public IActionBars getActionBars() {
-		return subActionBars;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		return Platform.getAdapterManager().getAdapter(this, adapter);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPageSite.
-	 */
-	public IWorkbenchPage getPage() {
-		return parentSite.getPage();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPageSite.
-	 */
-	public ISelectionProvider getSelectionProvider() {
-		return selectionProvider;
-	}
-
-	public final Object getService(final Class key) {
-		return serviceLocator.getService(key);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPageSite.
-	 */
-	public Shell getShell() {
-		return parentSite.getShell();
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPageSite.
-	 */
-	public IWorkbenchWindow getWorkbenchWindow() {
-		return parentSite.getWorkbenchWindow();
-	}
-
-	public final boolean hasService(final Class key) {
-		return serviceLocator.hasService(key);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPageSite.
-	 */
-	public void registerContextMenu(String menuID, MenuManager menuMgr,
-			ISelectionProvider selProvider) {
-		if (menuExtenders == null) {
-			menuExtenders = new ArrayList(1);
-		}
-		PartSite.registerContextMenu(menuID, menuMgr, selProvider, false,
-				parentSite.getPart(), menuExtenders);
-	}
-
-	/*
-	 * (non-Javadoc) Method declared on IPageSite.
-	 */
-	public void setSelectionProvider(ISelectionProvider provider) {
-		selectionProvider = provider;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.INestable#activate()
-	 * 
-	 * @since 3.2
-	 */
-	public void activate() {
-		serviceLocator.activate();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.internal.services.INestable#deactivate()
-	 * 
-	 * @since 3.2
-	 */
-	public void deactivate() {
-		serviceLocator.deactivate();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSwitcher.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSwitcher.java
deleted file mode 100644
index b00fca8..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PageSwitcher.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.handlers.CyclePageHandler;
-
-/**
- * Provides the implementation for switching pages in a view. A view may track
- * pages however it wishes. The view should subclass PageSwitcher to provide the
- * abstract methods, and then instantiate their page switcher once.
- * 
- * @since 3.4
- * 
- */
-public abstract class PageSwitcher {
-
-	private static final String COMMAND_PREVIOUS_PAGE = "org.eclipse.ui.part.previousPage"; //$NON-NLS-1$
-	private static final String COMMAND_NEXT_PAGE = "org.eclipse.ui.part.nextPage"; //$NON-NLS-1$
-
-	/**
-	 * Register the handlers for page switching with this view or editor.
-	 * 
-	 * @param part
-	 *            The part to register against.
-	 */
-	public PageSwitcher(IWorkbenchPart part) {
-		IHandlerService service = (IHandlerService) part.getSite().getService(
-				IHandlerService.class);
-		service.activateHandler(COMMAND_NEXT_PAGE, new CyclePageHandler(this));
-		service.activateHandler(COMMAND_PREVIOUS_PAGE, new CyclePageHandler(
-				this));
-	}
-
-	/**
-	 * Displays the given page in the view. The page must already exist in the
-	 * view.
-	 * 
-	 * @param page
-	 *            the page to display, never <code>null</code>.
-	 */
-	public abstract void activatePage(Object page);
-
-	/**
-	 * Returns an {@link ImageDescriptor} for the page.
-	 * 
-	 * @param page
-	 *            the page to retrieve an {@link ImageDescriptor}
-	 * @return An {@link ImageDescriptor} for the page, may be <code>null</code>.
-	 */
-	public abstract ImageDescriptor getImageDescriptor(Object page);
-
-	/**
-	 * Returns a readable name to identify the page.
-	 * 
-	 * @param page
-	 *            the page to get the name
-	 * @return the name of the page
-	 */
-	public abstract String getName(Object page);
-
-	/**
-	 * Returns the pages available in the view. These may be used for populating
-	 * the pop-up dialog when switching pages. These are the objects that will
-	 * be used in {@link #activatePage(Object)}.
-	 * 
-	 * @return an array of pages
-	 */
-	public abstract Object[] getPages();
-
-	/**
-	 * Returns the index of the currently active page. The default
-	 * implementation returns 0. Subclasses can override.
-	 * 
-	 * @return the 0-based index of the currently active page from
-	 *         {@link #getPages()}, or an arbitrary value if
-	 *         {@link #getPages()} is an empty array.
-	 */
-	public int getCurrentPageIndex() {
-		return 0;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginDropAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginDropAdapter.java
deleted file mode 100644
index 362dbd0..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginDropAdapter.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-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.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-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.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
-
-/**
- * Adapter for adding handling of the <code>PluginTransfer</code> drag and drop
- * transfer type to a drop action.
- * <p>
- * This class may be instantiated or subclassed.
- * </p>
- */
-public class PluginDropAdapter extends ViewerDropAdapter {
-    /**
-     * The extension point attribute that defines the drop action class.
-     */
-    public static final String ATT_CLASS = "class";//$NON-NLS-1$
-
-    /**
-     * The current transfer data, or <code>null</code> if none.
-     */
-    private TransferData currentTransfer;
-
-    /** 
-     * Creates a plug-in drop adapter for the given viewer.
-     *
-     * @param viewer the viewer
-     */
-    public PluginDropAdapter(StructuredViewer viewer) {
-        super(viewer);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on DropTargetAdapter.
-     * The user has dropped something on the desktop viewer.
-     */
-    public void drop(DropTargetEvent event) {
-        try {
-            if (PluginTransfer.getInstance().isSupportedType(
-                    event.currentDataType)) {
-                PluginTransferData pluginData = (PluginTransferData) event.data;
-                IDropActionDelegate delegate = getPluginAdapter(pluginData);
-                if (!delegate.run(pluginData.getData(), getCurrentTarget())) {
-                    event.detail = DND.DROP_NONE;
-                }
-            } else {
-                super.drop(event);
-            }
-        } catch (CoreException e) {
-            WorkbenchPlugin.log("Drop Failed", e.getStatus());//$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Returns the current transfer.
-     */
-    protected TransferData getCurrentTransfer() {
-        return currentTransfer;
-    }
-
-    /**
-     * Loads the class that will perform the action associated with the given drop
-     * data.
-     *
-     * @param data the drop data
-     * @return the viewer drop adapter
-     */
-    protected static IDropActionDelegate getPluginAdapter(
-            PluginTransferData data) throws CoreException {
-
-        IExtensionRegistry registry = Platform.getExtensionRegistry();
-        String adapterName = data.getExtensionId();
-        IExtensionPoint xpt = registry.getExtensionPoint(PlatformUI.PLUGIN_ID,
-                IWorkbenchRegistryConstants.PL_DROP_ACTIONS);
-        IExtension[] extensions = xpt.getExtensions();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configs = extensions[i]
-                    .getConfigurationElements();
-            if (configs != null && configs.length > 0) {
-                String id = configs[0].getAttribute("id");//$NON-NLS-1$
-                if (id != null && id.equals(adapterName)) {
-                    return (IDropActionDelegate) WorkbenchPlugin
-                            .createExtension(configs[0], ATT_CLASS);
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @see ViewerDropAdapter#performDrop
-     */
-    public boolean performDrop(Object data) {
-        //should never be called, since we override the drop() method.
-        return false;
-    }
-
-    /**
-     * The <code>PluginDropAdapter</code> implementation of this
-     * <code>ViewerDropAdapter</code> method is used to notify the action that some
-     * aspect of the drop operation has changed. Subclasses may override.
-     */
-    public boolean validateDrop(Object target, int operation,
-            TransferData transferType) {
-        currentTransfer = transferType;
-        if (currentTransfer != null
-                && PluginTransfer.getInstance()
-                        .isSupportedType(currentTransfer)) {
-            //plugin cannot be loaded without the plugin data
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransfer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransfer.java
deleted file mode 100644
index 8a8929a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransfer.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.eclipse.swt.dnd.ByteArrayTransfer;
-import org.eclipse.swt.dnd.TransferData;
-
-/**
- * This class can be used to transfer an instance of <code>PluginTransferData</code>
- * between two parts in a workbench in a drag and drop operation.
- * <p>
- * In every drag and drop operation there is a <code>DragSource</code> and 
- * a <code>DropTarget</code>.  When a drag occurs a <code>Transfer</code> is 
- * used to marshall the drag data from the source into a byte array.  If a drop 
- * occurs another <code>Transfer</code> is used to marshall the byte array into
- * drop data for the target.
- * </p><p>
- * A <code>PluginTransferData</code> contains the id of a drop action extension.  
- * If a drop occurs the extension is invoked to perform a drop action.  As a benefit, 
- * the destination viewer doesn't need to have any knowledge of the items being 
- * dropped into it.  
- * </p><p>
- * This class can be used for a <code>Viewer<code> or an SWT component directly.
- * A singleton is provided which may be serially reused (see <code>getInstance</code>).  
- * It is not intended to be subclassed.
- * </p>
- *
- * @see org.eclipse.jface.viewers.StructuredViewer
- * @see org.eclipse.swt.dnd.DropTarget
- * @see org.eclipse.swt.dnd.DragSource
- */
-public class PluginTransfer extends ByteArrayTransfer {
-
-    private static final String TYPE_NAME = "pluggable-transfer-format";//$NON-NLS-1$
-
-    private static final int TYPEID = registerType(TYPE_NAME);
-
-    /**
-     * Singleton instance.
-     */
-    private static PluginTransfer instance = new PluginTransfer();
-
-    /**
-     * Creates a new transfer object.
-     */
-    private PluginTransfer() {
-        super();
-    }
-
-    /**
-     * Returns the singleton instance.
-     *
-     * @return the singleton instance
-     */
-    public static PluginTransfer getInstance() {
-        return instance;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Transfer.
-     */
-    protected int[] getTypeIds() {
-        return new int[] { TYPEID };
-    }
-
-    /* (non-Javadoc)
-     * Returns the type names.
-     *
-     * @return the list of type names
-     */
-    protected String[] getTypeNames() {
-        return new String[] { TYPE_NAME };
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Transfer.
-     */
-    protected void javaToNative(Object data, TransferData transferData) {
-        PluginTransferData realData = (PluginTransferData) data;
-        if (data == null) {
-			return;
-		}
-        try {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            DataOutputStream dataOut = new DataOutputStream(out);
-            dataOut.writeUTF(realData.getExtensionId());
-            dataOut.writeInt(realData.getData().length);
-            dataOut.write(realData.getData());
-            dataOut.close();
-            super.javaToNative(out.toByteArray(), transferData);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /* (non-Javadoc)
-     * Method declared on Transfer.
-     */
-    protected Object nativeToJava(TransferData transferData) {
-        try {
-            byte[] bytes = (byte[]) super.nativeToJava(transferData);
-            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
-            DataInputStream dataIn = new DataInputStream(in);
-            String extensionName = dataIn.readUTF();
-            int len = dataIn.readInt();
-            byte[] pluginData = new byte[len];
-            dataIn.readFully(pluginData);
-            return new PluginTransferData(extensionName, pluginData);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        //can't get here
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransferData.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransferData.java
deleted file mode 100644
index 6fec43b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/PluginTransferData.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-/**
- * Record for transferring data during a drag and drop operation between
- * different plug-ins. This object contains an extension identifier and a block
- * of bytes. When the drop occurs, the data is interpreted by an action defined
- * in the specified extension.
- * <p>
- * Clients using PluginTransfer should create an instance to contain the
- * drop data.
- * </p>
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class PluginTransferData {
-    String extensionName;
-
-    byte[] transferData;
-
-    /**
-     * Creates a new record for the given extension id and data.
-     *
-     * @param extensionId the extension id
-     * @param data the data to transfer
-     */
-    public PluginTransferData(String extensionId, byte[] data) {
-        this.extensionName = extensionId;
-        this.transferData = data;
-    }
-
-    /**
-     * Returns the data being transferred.
-     *
-     * @return the data
-     */
-    public byte[] getData() {
-        return transferData;
-    }
-
-    /**
-     * Returns the id of the extension that will provide the drop action.
-     *
-     * @return the extension id
-     */
-    public String getExtensionId() {
-        return extensionName;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ShowInContext.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ShowInContext.java
deleted file mode 100644
index b3ddecc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ShowInContext.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.part;
-
-import org.eclipse.jface.viewers.ISelection;
-
-/**
- * Carries the context for the Show In action.
- * The default implementation carries an input and a selection.
- * Subclasses may extend.
- *
- * @see IShowInSource
- * @see IShowInTarget
- * 
- * @since 2.1
- */
-public class ShowInContext {
-
-    private Object input;
-
-    private ISelection selection;
-
-    /**
-     * Constructs a new <code>ShowInContext</code> with the given input and 
-     * selection.
-     * 
-     * @param input the input or <code>null</code> 
-     * @param selection the selection or <code>null</code>
-     */
-    public ShowInContext(Object input, ISelection selection) {
-        setInput(input);
-        setSelection(selection);
-    }
-
-    /**
-     * Returns the input, or <code>null</code> to indicate no input
-     * 
-     * @return the input or <code>null</code>.
-     */
-    public Object getInput() {
-        return input;
-    }
-
-    /**
-     * Returns the selection, or <code>null</code> to indicate no selection.
-     * 
-     * @return the selection or <code>null</code>
-     */
-    public ISelection getSelection() {
-        return selection;
-    }
-
-    /**
-     * Sets the input, or <code>null</code> to indicate no input.
-     * 
-     * @param input the input or <code>null</code> 
-     */
-    public void setInput(Object input) {
-        this.input = input;
-    }
-
-    /**
-     * Sets the selection, or <code>null</code> to indicate no selection.
-     * 
-     * @param selection the selection or <code>null</code>
-     */
-    public void setSelection(ISelection selection) {
-        this.selection = selection;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ViewPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ViewPart.java
deleted file mode 100644
index 5ddced1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/ViewPart.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.internal.util.Util;
-
-/**
- * Abstract base implementation of all workbench views.
- * <p>
- * This class should be subclassed by clients wishing to define new views.
- * The name of the subclass should be given as the <code>"class"</code> 
- * attribute in a <code>view</code> extension contributed to the workbench's
- * view extension point (named <code>"org.eclipse.ui.views"</code>).
- * For example, the plug-in's XML markup might contain:
- * <pre>
- * &LT;extension point="org.eclipse.ui.views"&GT;
- *      &LT;view id="com.example.myplugin.view"
- *         name="My View"
- *         class="com.example.myplugin.MyView"
- *         icon="images/eview.gif"
- *      /&GT;
- * &LT;/extension&GT;
- * </pre>
- * where <code>com.example.myplugin.MyView</code> is the name of the
- * <code>ViewPart</code> subclass.
- * </p>
- * <p>
- * Subclasses must implement the following methods:
- * <ul>
- *   <li><code>createPartControl</code> - to create the view's controls </li>
- *   <li><code>setFocus</code> - to accept focus</li>
- * </ul>
- * </p>
- * <p>
- * Subclasses may extend or reimplement the following methods as required:
- * <ul>
- *   <li><code>setInitializationData</code> - extend to provide additional 
- *       initialization when view extension is instantiated</li>
- *   <li><code>init(IWorkbenchPartSite)</code> - extend to provide additional
- *       initialization when view is assigned its site</li>
- *   <li><code>dispose</code> - extend to provide additional cleanup</li>
- *   <li><code>getAdapter</code> - reimplement to make their view adaptable</li>
- * </ul>
- * </p>
- */
-public abstract class ViewPart extends WorkbenchPart implements IViewPart {
-
-    /**
-     * Listens to PROP_TITLE property changes in this object until the first call to
-     * setContentDescription. Used for compatibility with old parts that call setTitle
-     * or overload getTitle instead of using setContentDescription. 
-     */
-    private IPropertyListener compatibilityTitleListener = new IPropertyListener() {
-        /* (non-Javadoc)
-         * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int)
-         */
-        public void propertyChanged(Object source, int propId) {
-            if (propId == IWorkbenchPartConstants.PROP_TITLE) {
-                setDefaultContentDescription();
-            }
-        }
-    };
-
-    /**
-     * Creates a new view.
-     */
-    protected ViewPart() {
-        super();
-
-        addPropertyListener(compatibilityTitleListener);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IViewPart.
-     */
-    public IViewSite getViewSite() {
-        return (IViewSite) getSite();
-    }
-
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewPart#init(org.eclipse.ui.IViewSite)
-     */
-    public void init(IViewSite site) throws PartInitException {
-        setSite(site);
-
-        setDefaultContentDescription();
-    }
-
-    /* 
-     * (non-Javadoc)
-     * @see org.eclipse.ui.IViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento)
-     */
-    public void init(IViewSite site, IMemento memento) throws PartInitException {
-    	/*
-    	* Initializes this view with the given view site.  A memento is passed to
-        * the view which contains a snapshot of the views state from a previous
-        * session.  Where possible, the view should try to recreate that state
-        * within the part controls.
-        * <p>
-        * This implementation will ignore the memento and initialize the view in
-        * a fresh state.  Subclasses may override the implementation to perform any
-        * state restoration as needed.
-        */
-        init(site);
-    }
-
-  
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IViewPart#saveState(org.eclipse.ui.IMemento)
-     */
-    public void saveState(IMemento memento) {
-        // do nothing
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.part.WorkbenchPart#setPartName(java.lang.String)
-     */
-    protected void setPartName(String partName) {
-        if (compatibilityTitleListener != null) {
-            removePropertyListener(compatibilityTitleListener);
-            compatibilityTitleListener = null;
-        }
-
-        super.setPartName(partName);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.part.WorkbenchPart#setContentDescription(java.lang.String)
-     */
-    protected void setContentDescription(String description) {
-        if (compatibilityTitleListener != null) {
-            removePropertyListener(compatibilityTitleListener);
-            compatibilityTitleListener = null;
-        }
-
-        super.setContentDescription(description);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
-     */
-    public void setInitializationData(IConfigurationElement cfig,
-            String propertyName, Object data) {
-        super.setInitializationData(cfig, propertyName, data);
-
-        setDefaultContentDescription();
-    }
-
-    private void setDefaultContentDescription() {
-        if (compatibilityTitleListener == null) {
-            return;
-        }
-
-        String partName = getPartName();
-        String title = getTitle();
-
-        if (Util.equals(partName, title)) {
-            internalSetContentDescription(""); //$NON-NLS-1$
-        } else {
-            internalSetContentDescription(title);
-        }
-    }
-
-    /**
-     * Checks that the given site is valid for this type of part.
-     * The site for a view must be an <code>IViewSite</code>.
-     * 
-     * @param site the site to check
-     * @since 3.1
-     */
-    protected final void checkSite(IWorkbenchPartSite site) {
-        super.checkSite(site);
-        Assert.isTrue(site instanceof IViewSite, "The site for a view must be an IViewSite"); //$NON-NLS-1$
-    }    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/WorkbenchPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/WorkbenchPart.java
deleted file mode 100644
index 7b6d44e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/WorkbenchPart.java
+++ /dev/null
@@ -1,533 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.part;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPart3;
-import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Abstract base implementation of all workbench parts.
- * <p>
- * This class is not intended to be subclassed by clients outside this
- * package; clients should instead subclass <code>ViewPart</code> or
- * <code>EditorPart</code>.
- * </p>
- * 
- * @see org.eclipse.ui.part.ViewPart
- * @see org.eclipse.ui.part.EditorPart
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class WorkbenchPart extends EventManager implements
-		IWorkbenchPart3, IExecutableExtension, IWorkbenchPartOrientation {
-    private String title = ""; //$NON-NLS-1$
-
-    private ImageDescriptor imageDescriptor;
-
-    private Image titleImage;
-
-    private String toolTip = ""; //$NON-NLS-1$
-
-    private IConfigurationElement configElement;
-
-    private IWorkbenchPartSite partSite;
-
-    private String partName = ""; //$NON-NLS-1$
-
-    private String contentDescription = ""; //$NON-NLS-1$
-    
-    private ListenerList partChangeListeners = new ListenerList();
-
-    /**
-     * Creates a new workbench part.
-     */
-    protected WorkbenchPart() {
-        super();
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchPart.
-     */
-    public void addPropertyListener(IPropertyListener l) {
-        addListenerObject(l);
-    }
-
-    /* (non-Javadoc)
-     * Creates the SWT controls for this workbench part.
-     * <p>
-     * Subclasses must implement this method.  For a detailed description of the
-     * requirements see <code>IWorkbenchPart</code>
-     * </p>
-     *
-     * @param parent the parent control
-     * @see IWorkbenchPart
-     */
-    public abstract void createPartControl(Composite parent);
-
-    /**
-     * The <code>WorkbenchPart</code> implementation of this 
-     * <code>IWorkbenchPart</code> method disposes the title image
-     * loaded by <code>setInitializationData</code>. Subclasses may extend.
-     */
-    public void dispose() {
-        if (imageDescriptor != null) {
-            JFaceResources.getResources().destroyImage(imageDescriptor);
-        }
-
-        // Clear out the property change listeners as we
-        // should not be notifying anyone after the part
-        // has been disposed.
-        clearListeners();
-        partChangeListeners.clear();
-    }
-
-    /**
-     * Fires a property changed event.
-     *
-     * @param propertyId the id of the property that changed
-     */
-    protected void firePropertyChange(final int propertyId) {
-        Object[] array = getListeners();
-        for (int nX = 0; nX < array.length; nX++) {
-            final IPropertyListener l = (IPropertyListener) array[nX];
-            try {
-                l.propertyChanged(WorkbenchPart.this, propertyId);
-            } catch (RuntimeException e) {
-                WorkbenchPlugin.log(e);
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * Subclasses may override this method (however, if they do so, they
-     * should invoke the method on their superclass to ensure that the
-     * Platform's adapter manager is consulted).
-     */
-    public Object getAdapter(Class adapter) {
-
-        /**
-         * This implementation of the method declared by <code>IAdaptable</code>
-         * passes the request along to the platform's adapter manager; roughly
-         * <code>Platform.getAdapterManager().getAdapter(this, adapter)</code>.
-         */
-
-        return Platform.getAdapterManager().getAdapter(this, adapter);
-    }
-
-    /**
-     * Returns the configuration element for this part. The configuration element
-     * comes from the plug-in registry entry for the extension defining this part.
-     *
-     * @return the configuration element for this part
-     */
-    protected IConfigurationElement getConfigurationElement() {
-        return configElement;
-    }
-
-    /**
-     * Returns the default title image.
-     *
-     * @return the default image
-     */
-    protected Image getDefaultImage() {
-        return PlatformUI.getWorkbench().getSharedImages().getImage(
-                ISharedImages.IMG_DEF_VIEW);
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchPart.
-     */
-    public IWorkbenchPartSite getSite() {
-        return partSite;
-    }
-
-    /**
-     * {@inheritDoc}
-     * <p>
-     * It is considered bad practise to overload or extend this method.
-     * Parts should set their title by calling setPartName and/or setContentDescription.
-     * </p>
-     */
-    public String getTitle() {
-        return title;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchPart.
-     */
-    public Image getTitleImage() {
-        if (titleImage != null) {
-            return titleImage;
-        }
-        return getDefaultImage();
-    }
-
-    /* (non-Javadoc)
-     * Gets the title tool tip text of this part.
-     *
-     * @return the tool tip text
-     */
-    public String getTitleToolTip() {
-        return toolTip;
-    }
-
-    /* (non-Javadoc)
-     * Method declared on IWorkbenchPart.
-     */
-    public void removePropertyListener(IPropertyListener l) {
-        removeListenerObject(l);
-    }
-
-    /* (non-Javadoc)
-     * Asks this part to take focus within the workbench.
-     * <p>
-     * Subclasses must implement this method.  For a detailed description of the
-     * requirements see <code>IWorkbenchPart</code>
-     * </p>
-     *
-     * @see IWorkbenchPart
-     */
-    public abstract void setFocus();
-
-    /**
-     * {@inheritDoc}
-     * The <code>WorkbenchPart</code> implementation of this
-     * <code>IExecutableExtension</code> records the configuration element in
-     * and internal state variable (accessible via <code>getConfigElement</code>).
-     * It also loads the title image, if one is specified in the configuration element.
-     * Subclasses may extend.
-     * 
-     * Should not be called by clients. It is called by the core plugin when creating
-     * this executable extension.
-     */
-    public void setInitializationData(IConfigurationElement cfig,
-            String propertyName, Object data) {
-
-        // Save config element.
-        configElement = cfig;
-
-        // Part name and title.  
-        partName = Util.safeString(cfig.getAttribute("name"));//$NON-NLS-1$;
-        title = partName;
-
-        // Icon.
-        String strIcon = cfig.getAttribute("icon");//$NON-NLS-1$
-        if (strIcon == null) {
-			return;
-		}
-
-        imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
-                configElement.getNamespace(), strIcon);
-
-        if (imageDescriptor == null) {
-			return;
-		}
-
-        titleImage = JFaceResources.getResources().createImageWithDefault(imageDescriptor);
-    }
-
-    /**
-     * Sets the part site.
-     * <p>
-     * Subclasses must invoke this method from <code>IEditorPart.init</code>
-     * and <code>IViewPart.init</code>.
-     *
-     * @param site the workbench part site
-     */
-    protected void setSite(IWorkbenchPartSite site) {
-        checkSite(site);
-        this.partSite = site;
-    }
-
-    /**
-     * Checks that the given site is valid for this type of part.
-     * The default implementation does nothing.
-     * 
-     * @param site the site to check
-     * @since 3.1
-     */
-    protected void checkSite(IWorkbenchPartSite site) {
-        // do nothing
-    }
-
-    /**
-     * Sets or clears the title of this part. Clients should call this method instead 
-     * of overriding getTitle.
-     * <p>
-     * This may change a title that was previously set using setPartName or setContentDescription.
-     * </p>
-     *
-     * @deprecated new code should use setPartName and setContentDescription
-     *
-     * @param title the title, or <code>null</code> to clear
-     */
-    protected void setTitle(String title) {
-        title = Util.safeString(title);
-
-        //Do not send changes if they are the same
-        if (Util.equals(this.title, title)) {
-			return;
-		}
-        this.title = title;
-        firePropertyChange(IWorkbenchPart.PROP_TITLE);
-    }
-
-    /**
-     * Sets or clears the title image of this part.
-     *
-     * @param titleImage the title image, or <code>null</code> to clear
-     */
-    protected void setTitleImage(Image titleImage) {
-        Assert.isTrue(titleImage == null || !titleImage.isDisposed());
-        //Do not send changes if they are the same
-        if (this.titleImage == titleImage) {
-			return;
-		}
-        this.titleImage = titleImage;
-        firePropertyChange(IWorkbenchPart.PROP_TITLE);
-        if (imageDescriptor != null) {
-            JFaceResources.getResources().destroyImage(imageDescriptor);
-            imageDescriptor = null;
-        }
-    }
-
-    /**
-     * Sets or clears the title tool tip text of this part. Clients should
-     * call this method instead of overriding <code>getTitleToolTip</code>
-     *
-     * @param toolTip the new tool tip text, or <code>null</code> to clear
-     */
-    protected void setTitleToolTip(String toolTip) {
-        toolTip = Util.safeString(toolTip);
-        //Do not send changes if they are the same
-        if (Util.equals(this.toolTip, toolTip)) {
-			return;
-		}
-        this.toolTip = toolTip;
-        firePropertyChange(IWorkbenchPart.PROP_TITLE);
-    }
-
-    /**
-     * Show that this part is busy due to a Job running that it 
-     * is listening to.
-     * @param busy boolean to indicate that the busy state has started
-     *  	or ended.
-     * @see org.eclipse.ui.progress.IWorkbenchSiteProgressService#showBusyForFamily(Object)
-     * @since 3.0
-     */
-    public void showBusy(boolean busy) {
-        //By default do nothing
-    }
-
-    /**
-     * {@inheritDoc}
-     * <p>
-     * It is considered bad practise to overload or extend this method.
-     * Parts should call setPartName to change their part name. 
-     * </p>
-     */
-    public String getPartName() {
-        return partName;
-    }
-
-    /**
-     * Sets the name of this part. The name will be shown in the tab area for 
-     * the part. Clients should call this method instead of overriding getPartName.
-     * Setting this to the empty string will cause a default part name to be used.
-     * 
-     * <p>
-     * setPartName and setContentDescription are intended to replace setTitle.
-     * This may change a value that was previously set using setTitle.  
-     * </p>
-     *
-     * @param partName the part name, as it should be displayed in tabs.
-     * 
-     * @since 3.0
-     */
-    protected void setPartName(String partName) {
-
-        internalSetPartName(partName);
-
-        setDefaultTitle();
-    }
-
-    void setDefaultTitle() {
-        String description = getContentDescription();
-        String name = getPartName();
-        String newTitle = name;
-
-        if (!Util.equals(description, "")) { //$NON-NLS-1$
-            newTitle = MessageFormat
-                    .format(
-                            WorkbenchMessages.WorkbenchPart_AutoTitleFormat, new String[] { name, description });
-        }
-
-        setTitle(newTitle);
-    }
-
-    /**
-     * {@inheritDoc}
-     * <p>
-     * It is considered bad practise to overload or extend this method.
-     * Parts should call setContentDescription to change their content description. 
-     * </p>
-     */
-    public String getContentDescription() {
-        return contentDescription;
-    }
-
-    /**
-     * Sets the content description for this part. The content description is typically
-     * a short string describing the current contents of the part. Setting this to the
-     * empty string will cause a default content description to be used. Clients should
-     * call this method instead of overriding getContentDescription(). For views, the
-     * content description is shown (by default) in a line near the top of the view. For
-     * editors, the content description is shown beside the part name when showing a
-     * list of editors. If the editor is open on a file, this typically contains the path 
-     * to the input file, without the filename or trailing slash.
-     *
-     * <p>
-     * This may overwrite a value that was previously set in setTitle
-     * </p>
-     * 
-     * @param description the content description
-     * 
-     * @since 3.0
-     */
-    protected void setContentDescription(String description) {
-        internalSetContentDescription(description);
-
-        setDefaultTitle();
-    }
-
-    void internalSetContentDescription(String description) {
-        Assert.isNotNull(description);
-
-        //Do not send changes if they are the same
-        if (Util.equals(contentDescription, description)) {
-			return;
-		}
-        this.contentDescription = description;
-
-        firePropertyChange(IWorkbenchPartConstants.PROP_CONTENT_DESCRIPTION);
-    }
-
-    void internalSetPartName(String partName) {
-        partName = Util.safeString(partName);
-
-        Assert.isNotNull(partName);
-
-        //Do not send changes if they are the same
-        if (Util.equals(this.partName, partName)) {
-			return;
-		}
-        this.partName = partName;
-
-        firePropertyChange(IWorkbenchPartConstants.PROP_PART_NAME);
-
-    }
-    
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.part.IWorkbenchPartOrientation#getOrientation()
-     */
-    public int getOrientation(){
-		//By default use the orientation in Window
-    	return Window.getDefaultOrientation();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart3#addPartPropertyListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void addPartPropertyListener(IPropertyChangeListener listener) {
-    	partChangeListeners.add(listener);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart3#removePartPropertyListener(org.eclipse.jface.util.IPropertyChangeListener)
-     */
-    public void removePartPropertyListener(IPropertyChangeListener listener) {
-    	partChangeListeners.remove(listener);
-    }
-    
-    /**
-	 * @since 3.3
-	 */
-    protected void firePartPropertyChanged(String key, String oldValue, String newValue) {
-    	final PropertyChangeEvent event = new PropertyChangeEvent(this, key, oldValue, newValue);
-    	Object[] l = partChangeListeners.getListeners();
-    	for (int i = 0; i < l.length; i++) {
-			try {
-				((IPropertyChangeListener)l[i]).propertyChange(event);
-			} catch (RuntimeException e) {
-				WorkbenchPlugin.log(e);
-			}
-		}
-    }
-    
-    private Map partProperties = new HashMap();
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart3#setPartProperty(java.lang.String, java.lang.String)
-     */
-    public void setPartProperty(String key, String value) {
-    	String oldValue = (String) partProperties.get(key);
-    	if (value==null) {
-    		partProperties.remove(key);
-    	} else {
-    		partProperties.put(key, value);
-    	}
-    	firePartPropertyChanged(key, oldValue, value);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart3#getPartProperty(java.lang.String)
-     */
-    public String getPartProperty(String key) {
-    	return (String)partProperties.get(key);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPart3#getPartProperties()
-     */
-    public Map getPartProperties() {
-    	return Collections.unmodifiableMap(partProperties);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/package.html
deleted file mode 100644
index d29290b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/part/package.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=iso-8859-1">
-   <meta name="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes for the creation of workbench parts that integrate
-with the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-A <b>workbench part</b> is a visual component within a <b>workbench page</b>.&nbsp;
-There are two types: <b>view</b> and <b>editor</b>, as defined by <tt>IViewPart</tt>
-and <tt>IEditorPart</tt>.&nbsp;&nbsp; An editor is typically used to edit
-or browse a document or input object.&nbsp; A view is typically used to
-navigate a hierarchy of information (like the workspace), open an editor,
-or display properties for the active editor.&nbsp; This package provides
-a base implementation for the definition of views and editors.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java
deleted file mode 100644
index b396389..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/AbstractUIPlugin.java
+++ /dev/null
@@ -1,712 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.plugin;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.dialogs.DialogSettings;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WWinPluginAction;
-import org.eclipse.ui.internal.util.BundleUtility;
-import org.eclipse.ui.preferences.ScopedPreferenceStore;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleListener;
-
-/**
- * Abstract base class for plug-ins that integrate with the Eclipse platform UI.
- * <p>
- * Subclasses obtain the following capabilities:
- * </p>
- * <p>
- * Preferences
- * <ul>
- * <li> The platform core runtime contains general support for plug-in
- *      preferences (<code>org.eclipse.core.runtime.Preferences</code>). 
- *      This class provides appropriate conversion to the older JFace preference 
- *      API (<code>org.eclipse.jface.preference.IPreferenceStore</code>).</li>
- * <li> The method <code>getPreferenceStore</code> returns the JFace preference
- *      store (cf. <code>Plugin.getPluginPreferences</code> which returns
- *      a core runtime preferences object.</li>
- * <li> Subclasses may reimplement <code>initializeDefaultPreferences</code>
- *      to set up any default values for preferences using JFace API. In this
- *      case, <code>initializeDefaultPluginPreferences</code> should not be
- *      overridden.</li>
- * <li> Subclasses may reimplement
- *      <code>initializeDefaultPluginPreferences</code> to set up any default
- *      values for preferences using core runtime API. In this
- *      case, <code>initializeDefaultPreferences</code> should not be
- *      overridden.</li>
- * <li> Preferences are also saved automatically on plug-in shutdown.
- *      However, saving preferences immediately after changing them is
- *      strongly recommended, since that ensures that preference settings
- *      are not lost even in the event of a platform crash.</li>
- * </ul>
- * Dialogs
- * <ul>
- * <li> The dialog store is read the first time <code>getDialogSettings</code> 
- *      is called.</li>
- * <li> The dialog store allows the plug-in to "record" important choices made
- *      by the user in a wizard or dialog, so that the next time the
- *      wizard/dialog is used the widgets can be defaulted to better values. A
- *      wizard could also use it to record the last 5 values a user entered into
- *      an editable combo - to show "recent values". </li>
- * <li> The dialog store is found in the file whose name is given by the
- *      constant <code>FN_DIALOG_STORE</code>. A dialog store file is first
- *      looked for in the plug-in's read/write state area; if not found there,
- *      the plug-in's install directory is checked.
- *      This allows a plug-in to ship with a read-only copy of a dialog store
- *      file containing initial values for certain settings.</li>
- * <li> Plug-in code can call <code>saveDialogSettings</code> to cause settings to
- *      be saved in the plug-in's read/write state area. A plug-in may opt to do
- *      this each time a wizard or dialog is closed to ensure the latest 
- *      information is always safe on disk. </li>
- * <li> Dialog settings are also saved automatically on plug-in shutdown.</li>
- * </ul>
- * Images
- * <ul>
- * <li> A typical UI plug-in will have some images that are used very frequently
- *      and so need to be cached and shared.  The plug-in's image registry 
- *      provides a central place for a plug-in to store its common images. 
- *      Images managed by the registry are created lazily as needed, and will be
- *      automatically disposed of when the plug-in shuts down. Note that the
- *      number of registry images should be kept to a minimum since many OSs
- *      have severe limits on the number of images that can be in memory at once.
- * </ul>
- * <p>
- * For easy access to your plug-in object, use the singleton pattern. Declare a
- * static variable in your plug-in class for the singleton. Store the first
- * (and only) instance of the plug-in class in the singleton when it is created.
- * Then access the singleton when needed through a static <code>getDefault</code>
- * method.
- * </p>
- * <p>
- * See the description on {@link Plugin}.
- * </p>
- */
-public abstract class AbstractUIPlugin extends Plugin {
-
-    /**
-     * The name of the dialog settings file (value 
-     * <code>"dialog_settings.xml"</code>).
-     */
-    private static final String FN_DIALOG_SETTINGS = "dialog_settings.xml"; //$NON-NLS-1$
-
-    /**
-     * Storage for dialog and wizard data; <code>null</code> if not yet
-     * initialized.
-     */
-    private DialogSettings dialogSettings = null;
-
-    /**
-     * Storage for preferences.
-     */
-    private ScopedPreferenceStore preferenceStore;
-
-    /**
-     * The registry for all graphic images; <code>null</code> if not yet
-     * initialized.
-     */
-    private ImageRegistry imageRegistry = null;
-
-    /**
-     * The bundle listener used for kicking off refreshPluginActions().
-     * 
-     * @since 3.0.1
-     */
-    private BundleListener bundleListener;
-    
-    /**
-     * Creates an abstract UI plug-in runtime object for the given plug-in
-     * descriptor.
-     * <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
-     * @see Plugin#Plugin(org.eclipse.core.runtime.IPluginDescriptor descriptor)
-     * @deprecated
-     * In Eclipse 3.0 this constructor has been replaced by
-     * {@link #AbstractUIPlugin()}. Implementations of
-     * <code>MyPlugin(IPluginDescriptor descriptor)</code> should be changed to 
-     * <code>MyPlugin()</code> and call <code>super()</code> instead of
-     * <code>super(descriptor)</code>.
-     * The <code>MyPlugin(IPluginDescriptor descriptor)</code> constructor is
-     * called only for plug-ins which explicitly require the
-     * org.eclipse.core.runtime.compatibility plug-in (or, as in this case,
-     * subclasses which might).
-     */
-    public AbstractUIPlugin(IPluginDescriptor descriptor) {
-        super(descriptor);
-    }
-
-    /**
-     * Creates an abstract UI plug-in runtime object.
-     * <p>
-     * Plug-in runtime classes are <code>BundleActivators</code> and so must
-     * have an default constructor.  This method is called by the runtime when 
-     * the associated bundle is being activated.  
-     * <p>
-     * For more details, see <code>Plugin</code>'s default constructor.
-     *
-     * @see Plugin#Plugin()
-     * @since 3.0
-     */
-    public AbstractUIPlugin() {
-        super();
-    }
-
-    /** 
-     * Returns a new image registry for this plugin-in.  The registry will be
-     * used to manage images which are frequently used by the plugin-in.
-     * <p>
-     * The default implementation of this method creates an empty registry.
-     * Subclasses may override this method if needed.
-     * </p>
-     *
-     * @return ImageRegistry the resulting registry.
-     * @see #getImageRegistry
-     */
-    protected ImageRegistry createImageRegistry() {
-    	
-    	//If we are in the UI Thread use that
-    	if(Display.getCurrent() != null) {
-			return new ImageRegistry(Display.getCurrent());
-		}
-    	
-    	if(PlatformUI.isWorkbenchRunning()) {
-			return new ImageRegistry(PlatformUI.getWorkbench().getDisplay());
-		}
-    	
-    	//Invalid thread access if it is not the UI Thread 
-    	//and the workbench is not created.
-    	throw new SWTError(SWT.ERROR_THREAD_INVALID_ACCESS);
-    }
-    
-    /**
-     * Returns the dialog settings for this UI plug-in.
-     * The dialog settings is used to hold persistent state data for the various
-     * wizards and dialogs of this plug-in in the context of a workbench. 
-     * <p>
-     * If an error occurs reading the dialog store, an empty one is quietly created
-     * and returned.
-     * </p>
-     * <p>
-     * Subclasses may override this method but are not expected to.
-     * </p>
-     *
-     * @return the dialog settings
-     */
-    public IDialogSettings getDialogSettings() {
-        if (dialogSettings == null) {
-			loadDialogSettings();
-		}
-        return dialogSettings;
-    }
-
-    /**
-     * Returns the image registry for this UI plug-in. 
-     * <p>
-     * The image registry contains the images used by this plug-in that are very 
-     * frequently used and so need to be globally shared within the plug-in. Since 
-     * many OSs have a severe limit on the number of images that can be in memory at 
-     * any given time, a plug-in should only keep a small number of images in their 
-     * registry.
-     * <p>
-     * Subclasses should reimplement <code>initializeImageRegistry</code> if they have
-     * custom graphic images to load.
-     * </p>
-     * <p>
-     * Subclasses may override this method but are not expected to.
-     * </p>
-     *
-     * @return the image registry
-     */
-    public ImageRegistry getImageRegistry() {
-        if (imageRegistry == null) {
-            imageRegistry = createImageRegistry();
-            initializeImageRegistry(imageRegistry);
-        }
-        return imageRegistry;
-    }
-
-    /**
-     * Returns the preference store for this UI plug-in.
-     * This preference store is used to hold persistent settings for this plug-in in
-     * the context of a workbench. Some of these settings will be user controlled, 
-     * whereas others may be internal setting that are never exposed to the user.
-     * <p>
-     * If an error occurs reading the preference store, an empty preference store is
-     * quietly created, initialized with defaults, and returned.
-     * </p>
-     * <p>
-     * <strong>NOTE:</strong> As of Eclipse 3.1 this method is
-     * no longer referring to the core runtime compatibility layer and so
-     * plug-ins relying on Plugin#initializeDefaultPreferences
-     * will have to access the compatibility layer themselves.
-     * </p>
-     *
-     * @return the preference store 
-     */
-    public IPreferenceStore getPreferenceStore() {
-        // Create the preference store lazily.
-        if (preferenceStore == null) {
-            preferenceStore = new ScopedPreferenceStore(new InstanceScope(),getBundle().getSymbolicName());
-
-        }
-        return preferenceStore;
-    }
-
-    /**
-     * Returns the Platform UI workbench.  
-     * <p> 
-     * This method exists as a convenience for plugin implementors.  The
-     * workbench can also be accessed by invoking <code>PlatformUI.getWorkbench()</code>.
-     * </p>
-     * @return IWorkbench the workbench for this plug-in
-     */
-    public IWorkbench getWorkbench() {
-        return PlatformUI.getWorkbench();
-    }
-
-    /** 
-     * Initializes a preference store with default preference values 
-     * for this plug-in.
-     * <p>
-     * This method is called after the preference store is initially loaded
-     * (default values are never stored in preference stores).
-     * </p>
-     * <p>
-     * The default implementation of this method does nothing.
-     * Subclasses should reimplement this method if the plug-in has any preferences.
-     * </p>
-     * <p>
-     * A subclass may reimplement this method to set default values for the 
-     * preference store using JFace API. This is the older way of initializing 
-     * default values. If this method is reimplemented, do not override
-     * <code>initializeDefaultPluginPreferences()</code>.
-     * </p>
-     * 
-     * @param store the preference store to fill
-     * 
-     * @deprecated this is only called if the runtime compatibility layer is
-     *             present. See {@link #initializeDefaultPluginPreferences}.
-     */
-    protected void initializeDefaultPreferences(IPreferenceStore store) {
-        // spec'ed to do nothing
-    }
-
-    /**
-     * The <code>AbstractUIPlugin</code> implementation of this
-     * <code>Plugin</code> method forwards to
-     * <code>initializeDefaultPreferences(IPreferenceStore)</code>.
-     * <p>
-     * A subclass may reimplement this method to set default values for the core
-     * runtime preference store in the standard way. This is the recommended way
-     * to do this. The older
-     * <code>initializeDefaultPreferences(IPreferenceStore)</code> method
-     * serves a similar purpose. If this method is reimplemented, do not send
-     * super, and do not override
-     * <code>initializeDefaultPreferences(IPreferenceStore)</code>.
-     * </p>
-     * 
-     * @deprecated this is only called if the runtime compatibility layer is
-     *             present. See the deprecated comment in
-     *             {@link Plugin#initializeDefaultPluginPreferences}.
-     * 
-     * @see #initializeDefaultPreferences
-     * @since 2.0
-     */
-    protected void initializeDefaultPluginPreferences() {
-        // N.B. by the time this method is called, the plug-in has a 
-        // core runtime preference store (no default values)
-
-        // call loadPreferenceStore (only) for backwards compatibility with Eclipse 1.0
-        loadPreferenceStore();
-        // call initializeDefaultPreferences (only) for backwards compatibility 
-        // with Eclipse 1.0
-        initializeDefaultPreferences(getPreferenceStore());
-    }
-
-    /** 
-     * Initializes an image registry with images which are frequently used by the 
-     * plugin.
-     * <p>
-     * The image registry contains the images used by this plug-in that are very
-     * frequently used and so need to be globally shared within the plug-in. Since
-     * many OSs have a severe limit on the number of images that can be in memory
-     * at any given time, each plug-in should only keep a small number of images in 
-     * its registry.
-     * </p><p>
-     * Implementors should create a JFace image descriptor for each frequently used
-     * image.  The descriptors describe how to create/find the image should it be needed. 
-     * The image described by the descriptor is not actually allocated until someone 
-     * retrieves it.
-     * </p><p>
-     * Subclasses may override this method to fill the image registry.
-     * </p>
-     * @param reg the registry to initalize
-     *
-     * @see #getImageRegistry
-     */
-    protected void initializeImageRegistry(ImageRegistry reg) {
-        // spec'ed to do nothing
-    }
-
-    /**
-     * Loads the dialog settings for this plug-in.
-     * The default implementation first looks for a standard named file in the 
-     * plug-in's read/write state area; if no such file exists, the plug-in's
-     * install directory is checked to see if one was installed with some default
-     * settings; if no file is found in either place, a new empty dialog settings
-     * is created. If a problem occurs, an empty settings is silently used.
-     * <p>
-     * This framework method may be overridden, although this is typically
-     * unnecessary.
-     * </p>
-     */
-    protected void loadDialogSettings() {
-        dialogSettings = new DialogSettings("Workbench"); //$NON-NLS-1$
-
-        // bug 69387: The instance area should not be created (in the call to
-        // #getStateLocation) if -data @none or -data @noDefault was used
-        IPath dataLocation = getStateLocationOrNull();
-        if (dataLocation != null) {
-	        // try r/w state area in the local file system
-	        String readWritePath = dataLocation.append(FN_DIALOG_SETTINGS)
-	                .toOSString();
-	        File settingsFile = new File(readWritePath);
-	        if (settingsFile.exists()) {
-	            try {
-	                dialogSettings.load(readWritePath);
-	            } catch (IOException e) {
-	                // load failed so ensure we have an empty settings
-	                dialogSettings = new DialogSettings("Workbench"); //$NON-NLS-1$
-	            }
-	            
-	            return;
-	        }
-        }
-
-        // otherwise look for bundle specific dialog settings
-        URL dsURL = BundleUtility.find(getBundle(), FN_DIALOG_SETTINGS);
-        if (dsURL == null) {
-			return;
-		}
-
-        InputStream is = null;
-        try {
-            is = dsURL.openStream();
-            BufferedReader reader = new BufferedReader(
-                    new InputStreamReader(is, "utf-8")); //$NON-NLS-1$
-            dialogSettings.load(reader);
-        } catch (IOException e) {
-            // load failed so ensure we have an empty settings
-            dialogSettings = new DialogSettings("Workbench"); //$NON-NLS-1$
-        } finally {
-            try {
-                if (is != null) {
-					is.close();
-				}
-            } catch (IOException e) {
-                // do nothing
-            }
-        }
-    }
-
-    /**
-     * Loads the preference store for this plug-in.
-     * The default implementation looks for a standard named file in the 
-     * plug-in's read/write state area. If no file is found or a problem
-     * occurs, a new empty preference store is silently created. 
-     * <p>
-     * This framework method may be overridden, although this is typically 
-     * unnecessary.
-     * </p>
-     * 
-     * @deprecated As of Eclipse 2.0, a basic preference store exists for all
-     * plug-ins. This method now exists only for backwards compatibility.
-     * It is called as the plug-in's preference store is being initialized.
-     * The plug-ins preferences are loaded from the file regardless of what
-     * this method does.
-     */
-    protected void loadPreferenceStore() {
-        // do nothing by default 
-    }
-
-    /**
-     * Refreshes the actions for the plugin.
-     * This method is called from <code>startup</code>.
-     * <p>
-     * This framework method may be overridden, although this is typically 
-     * unnecessary.
-     * </p>
-     */
-    protected void refreshPluginActions() {
-        // If the workbench is not started yet, or is no longer running, do nothing.
-        if (!PlatformUI.isWorkbenchRunning()) {
-			return;
-		}
-
-        // startup() is not guaranteed to be called in the UI thread,
-        // but refreshPluginActions must run in the UI thread, 
-        // so use asyncExec.  See bug 6623 for more details.
-        Display.getDefault().asyncExec(new Runnable() {
-            public void run() {
-                WWinPluginAction.refreshActionList();
-            }
-        });
-    }
-
-    /**
-     * Saves this plug-in's dialog settings.
-     * Any problems which arise are silently ignored.
-     */
-    protected void saveDialogSettings() {
-        if (dialogSettings == null) {
-            return;
-        }
-
-        try {
-        	IPath path = getStateLocationOrNull();
-        	if(path == null) {
-				return;
-			}
-            String readWritePath = path
-                    .append(FN_DIALOG_SETTINGS).toOSString();
-            dialogSettings.save(readWritePath);
-        } catch (IOException e) {
-            // spec'ed to ignore problems
-        } catch (IllegalStateException e) {
-            // spec'ed to ignore problems
-        }
-    }
-
-    /**
-     * Saves this plug-in's preference store.
-     * Any problems which arise are silently ignored.
-     * 
-     * @see Plugin#savePluginPreferences()
-     * @deprecated As of Eclipse 2.0, preferences exist for all plug-ins. The 
-     * equivalent of this method is <code>Plugin.savePluginPreferences</code>. 
-     * This method now calls <code>savePluginPreferences</code>, and exists only for
-     * backwards compatibility.
-     */
-    protected void savePreferenceStore() {
-        savePluginPreferences();
-    }
-
-    /**
-     * The <code>AbstractUIPlugin</code> implementation of this <code>Plugin</code>
-     * method does nothing.  Subclasses may extend this method, but must send
-     * super first.
-     * <p>
-     * WARNING: Plug-ins may not be started in the UI thread.
-     * The <code>startup()</code> method should not assume that its code runs in
-     * the UI thread, otherwise SWT thread exceptions may occur on startup.'
-     * @deprecated 
-     * In Eclipse 3.0, <code>startup</code> has been replaced by {@link Plugin#start(BundleContext context)}.
-     * Implementations of <code>startup</code> should be changed to extend
-     * <code>start(BundleContext context)</code> and call <code>super.start(context)</code>
-     * instead of <code>super.startup()</code>. Like <code>super.startup()</code>,
-     * <code>super.stop(context)</code> must be called as the very first thing.
-     * The <code>startup</code> method is called only for plug-ins which explicitly require the 
-     * org.eclipse.core.runtime.compatibility plug-in; in contrast,
-     * the <code>start</code> method is always called.
-     */
-    public void startup() throws CoreException {
-        // this method no longer does anything
-        // the code that used to be here in 2.1 has moved to start(BundleContext)
-        super.startup();
-    }
-
-    /**
-     * The <code>AbstractUIPlugin</code> implementation of this <code>Plugin</code>
-     * method does nothing. Subclasses may extend this method, but must send
-     * super first.
-     * @deprecated 
-     * In Eclipse 3.0, <code>shutdown</code> has been replaced by {@link Plugin#stop(BundleContext context)}.
-     * Implementations of <code>shutdown</code> should be changed to extend 
-     * <code>stop(BundleContext context)</code> and call <code>super.stop(context)</code> 
-     * instead of <code>super.shutdown()</code>. Unlike <code>super.shutdown()</code>, 
-     * <code>super.stop(context)</code> must be called as the very <b>last</b> thing rather
-     * than as the very first thing. The <code>shutdown</code> method is called
-     * only for plug-ins which explicitly require the 
-     * org.eclipse.core.runtime.compatibility plug-in; 
-     * in contrast, the <code>stop</code> method is always called.
-     */
-    public void shutdown() throws CoreException {
-        // this method no longer does anything interesting
-        // the code that used to be here in 2.1 has moved to stop(BundleContext),
-        //   which is called regardless of whether the plug-in being instantiated
-        //   requires org.eclipse.core.runtime.compatibility
-        super.shutdown();
-    }
-
-    /**
-     * The <code>AbstractUIPlugin</code> implementation of this <code>Plugin</code>
-     * method refreshes the plug-in actions.  Subclasses may extend this method,
-     * but must send super <b>first</b>.
-     * {@inheritDoc}
-     * 
-     * @since 3.0
-     */
-    public void start(BundleContext context) throws Exception {
-        super.start(context);
-		final BundleContext fc = context;
-        // Should only attempt refreshPluginActions() once the bundle
-        // has been fully started.  Otherwise, action delegates
-        // can be created while in the process of creating 
-        // a triggering action delegate (if UI events are processed during startup).  
-        // Also, if the start throws an exception, the bundle will be shut down.  
-        // We don't want to have created any delegates if this happens.
-        // See bug 63324 for more details.
-        bundleListener = new BundleListener() {
-            public void bundleChanged(BundleEvent event) {
-                if (event.getBundle() == getBundle()) {
-                    if (event.getType() == BundleEvent.STARTED) {
-                        // We're getting notified that the bundle has been started.
-                        // Make sure it's still active.  It may have been shut down between
-                        // the time this event was queued and now.
-                        if (getBundle().getState() == Bundle.ACTIVE) {
-                            refreshPluginActions();
-                        }
-                        fc.removeBundleListener(this);
-                    }
-                }
-            }
-        };
-        context.addBundleListener(bundleListener);
-        // bundleListener is removed in stop(BundleContext)
-    }
-
-    /**
-     * The <code>AbstractUIPlugin</code> implementation of this <code>Plugin</code>
-     * method saves this plug-in's preference and dialog stores and shuts down 
-     * its image registry (if they are in use). Subclasses may extend this
-     * method, but must send super <b>last</b>. A try-finally statement should
-     * be used where necessary to ensure that <code>super.shutdown()</code> is
-     * always done.
-     * {@inheritDoc}
-     * 
-     * @since 3.0
-     */
-    public void stop(BundleContext context) throws Exception {
-        try {
-            if (bundleListener != null) {
-                context.removeBundleListener(bundleListener);
-            }
-            saveDialogSettings();
-            savePreferenceStore();
-            preferenceStore = null;
-            if (imageRegistry != null)
-            	imageRegistry.dispose();
-            imageRegistry = null;
-        } finally {
-            super.stop(context);
-        }
-    }
-
-    /**
-     * Creates and returns a new image descriptor for an image file located
-     * within the specified plug-in.
-     * <p>
-     * This is a convenience method that simply locates the image file in
-     * within the plug-in (no image registries are involved). The path is
-     * relative to the root of the plug-in, and takes into account files
-     * coming from plug-in fragments. The path may include $arg$ elements.
-     * However, the path must not have a leading "." or path separator.
-     * Clients should use a path like "icons/mysample.gif" rather than 
-     * "./icons/mysample.gif" or "/icons/mysample.gif".
-     * </p>
-     * 
-     * @param pluginId the id of the plug-in containing the image file; 
-     * <code>null</code> is returned if the plug-in does not exist
-     * @param imageFilePath the relative path of the image file, relative to the
-     * root of the plug-in; the path must be legal
-     * @return an image descriptor, or <code>null</code> if no image
-     * could be found
-     * @since 3.0
-     */
-    public static ImageDescriptor imageDescriptorFromPlugin(String pluginId,
-            String imageFilePath) {
-        if (pluginId == null || imageFilePath == null) {
-            throw new IllegalArgumentException();
-        }
-
-        // if the bundle is not ready then there is no image
-        Bundle bundle = Platform.getBundle(pluginId);
-        if (!BundleUtility.isReady(bundle)) {
-			return null;
-		}
-
-        // look for the image (this will check both the plugin and fragment folders
-        URL fullPathString = BundleUtility.find(bundle, imageFilePath);
-        if (fullPathString == null) {
-            try {
-                fullPathString = new URL(imageFilePath);
-            } catch (MalformedURLException e) {
-                return null;
-            }
-        }
-
-        if (fullPathString == null) {
-			return null;
-		}
-        return ImageDescriptor.createFromURL(fullPathString);
-    }
-    
-    /**
-     * FOR INTERNAL WORKBENCH USE ONLY. 
-     * 
-     * Returns the path to a location in the file system that can be used 
-     * to persist/restore state between workbench invocations.
-     * If the location did not exist prior to this call it will  be created.
-     * Returns <code>null</code> if no such location is available.
-     * 
-     * @return path to a location in the file system where this plug-in can
-     * persist data between sessions, or <code>null</code> if no such
-     * location is available.
-     * @since 3.1
-     */
-    private IPath getStateLocationOrNull() {
-        try {
-            return getStateLocation();
-        } catch (IllegalStateException e) {
-            // This occurs if -data=@none is explicitly specified, so ignore this silently.
-            // Is this OK? See bug 85071.
-            return null;
-        }
-    }    
-    
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/package.html
deleted file mode 100644
index 45c39da..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/plugin/package.html
+++ /dev/null
@@ -1,19 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Class hierarchies for plug-ins that integrate with
-the Eclipse Platform UI.
-<h2>
-Package Specification</h2>
-A <b>Plug-in</b> is a bundle of extensions for the Platform.&nbsp; This
-package contains support for the creation of User Interface Plug-ins, plug-ins
-which define extension points for the Platform User Interface.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java
deleted file mode 100644
index ad1049d..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkbenchPreferenceContainer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.preferences;
-
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * IWorkbenchPreferenceContainer is the class that specifies
- * the workbench specific preferences support.
- * @since 3.1
- *
- */
-public interface IWorkbenchPreferenceContainer {
-	
-	/**
-	 * Open the page specified in the org.eclipse.ui.preferencePage
-	 * extension point with id pageId. Apply data to it 
-	 * when it is opened.
-	 * @param preferencePageId String the id specified for a page in
-	 *    the plugin.xml of its defining plug-in.
-	 * @param data The data to be applied to the page when it 
-	 * 		opens.
-	 * @return boolean <code>true</code> if the page was
-	 * opened successfully and data was applied.
-	 */
-	public boolean openPage(String preferencePageId, Object data);
-	
-	/**
-	 * Get the working copy manager in use by this preference
-	 * page container. This IWorkingCopyManager will have 
-	 * IWorkingCopyManager#applyChanges()
-	 * @return IWorkingCopyManager
-	 */
-	public IWorkingCopyManager getWorkingCopyManager();
-	
-	/**
-	 * Register a job to be run after the container has been closed.
-	 * @param job
-	 */
-	public void registerUpdateJob(Job job);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkingCopyManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkingCopyManager.java
deleted file mode 100644
index 1e86d62..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/IWorkingCopyManager.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.preferences;
-
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * IWorkingCopyManager is the interface for the working copy
- * support for references to shared preference nodes.
- * @since 3.1
- *
- */
-public interface IWorkingCopyManager {
-	/**
-	 * Return a working copy instance based on the given preference node. If a
-	 * working copy already exists then return it, otherwise create one and keep
-	 * track of it for other clients who are looking for it.
-	 * 
-	 * @param original
-	 *            the original node
-	 * @return the working copy node
-	 */
-	public IEclipsePreferences getWorkingCopy(IEclipsePreferences original);
-
-	/**
-	 * Apply the changes for <em>all</em> working copies, to their original
-	 * preference nodes. Alternatively, if a client wishes to apply the changes
-	 * for a single working copy they can call <code>#flush</code> on that
-	 * working copy node.
-	 * 
-	 * @throws BackingStoreException
-	 *             if there were problems accessing the backing store
-	 */
-	public void applyChanges() throws BackingStoreException;
-
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ScopedPreferenceStore.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ScopedPreferenceStore.java
deleted file mode 100644
index cad50d7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ScopedPreferenceStore.java
+++ /dev/null
@@ -1,862 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Yves YANG <yves.yang@soyatec.com> - 
- *     		Initial Fix for Bug 138078 [Preferences] Preferences Store for i18n support
- *******************************************************************************/
-package org.eclipse.ui.preferences;
-
-import java.io.IOException;
-
-import org.eclipse.core.commands.common.EventManager;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
-import org.eclipse.jface.preference.IPersistentPreferenceStore;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * The ScopedPreferenceStore is an IPreferenceStore that uses the scopes
- * provided in org.eclipse.core.runtime.preferences.
- * <p>
- * A ScopedPreferenceStore does the lookup of a preference based on it's search
- * scopes and sets the value of the preference based on its store scope.
- * </p>
- * <p>
- * The default scope is always included in the search scopes when searching for
- * preference values.
- * </p>
- * 
- * @see org.eclipse.core.runtime.preferences
- * @since 3.1
- */
-public class ScopedPreferenceStore extends EventManager implements
-		IPreferenceStore, IPersistentPreferenceStore {
-
-	/**
-	 * The storeContext is the context where values will stored with the
-	 * setValue methods. If there are no searchContexts this will be the search
-	 * context. (along with the "default" context)
-	 */
-	private IScopeContext storeContext;
-
-	/**
-	 * The searchContext is the array of contexts that will be used by the get
-	 * methods for searching for values.
-	 */
-	private IScopeContext[] searchContexts;
-
-	/**
-	 * A boolean to indicate the property changes should not be propagated.
-	 */
-	protected boolean silentRunning = false;
-
-	/**
-	 * The listener on the IEclipsePreferences. This is used to forward updates
-	 * to the property change listeners on the preference store.
-	 */
-	IEclipsePreferences.IPreferenceChangeListener preferencesListener;
-
-	/**
-	 * The default context is the context where getDefault and setDefault
-	 * methods will search. This context is also used in the search.
-	 */
-	private IScopeContext defaultContext = new DefaultScope();
-
-	/**
-	 * The nodeQualifer is the string used to look up the node in the contexts.
-	 */
-	String nodeQualifier;
-
-	/**
-	 * The defaultQualifier is the string used to look up the default node.
-	 */
-	String defaultQualifier;
-
-	/**
-	 * Boolean value indicating whether or not this store has changes to be
-	 * saved.
-	 */
-	private boolean dirty;
-
-	/**
-	 * Create a new instance of the receiver. Store the values in context in the
-	 * node looked up by qualifier. <strong>NOTE:</strong> Any instance of
-	 * ScopedPreferenceStore should call
-	 * 
-	 * @param context
-	 *            the scope to store to
-	 * @param qualifier
-	 *            the qualifier used to look up the preference node
-	 * @param defaultQualifierPath
-	 *            the qualifier used when looking up the defaults
-	 */
-	public ScopedPreferenceStore(IScopeContext context, String qualifier,
-			String defaultQualifierPath) {
-		this(context, qualifier);
-		this.defaultQualifier = defaultQualifierPath;
-	}
-
-	/**
-	 * Create a new instance of the receiver. Store the values in context in the
-	 * node looked up by qualifier.
-	 * 
-	 * @param context
-	 *            the scope to store to
-	 * @param qualifier
-	 *            the qualifer used to look up the preference node
-	 */
-	public ScopedPreferenceStore(IScopeContext context, String qualifier) {
-		storeContext = context;
-		this.nodeQualifier = qualifier;
-		this.defaultQualifier = qualifier;
-
-		((IEclipsePreferences) getStorePreferences().parent())
-				.addNodeChangeListener(getNodeChangeListener());
-	}
-
-	/**
-	 * Return a node change listener that adds a removes the receiver when nodes
-	 * change.
-	 * 
-	 * @return INodeChangeListener
-	 */
-	private INodeChangeListener getNodeChangeListener() {
-		return new IEclipsePreferences.INodeChangeListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener#added(org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent)
-			 */
-			public void added(NodeChangeEvent event) {
-				if (nodeQualifier.equals(event.getChild().name())
-						&& isListenerAttached()) {
-					getStorePreferences().addPreferenceChangeListener(
-							preferencesListener);
-				}
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener#removed(org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent)
-			 */
-			public void removed(NodeChangeEvent event) {
-				// Do nothing as there are no events from removed node
-			}
-		};
-	}
-
-	/**
-	 * Initialize the preferences listener.
-	 */
-	private void initializePreferencesListener() {
-		if (preferencesListener == null) {
-			preferencesListener = new IEclipsePreferences.IPreferenceChangeListener() {
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent)
-				 */
-				public void preferenceChange(PreferenceChangeEvent event) {
-
-					if (silentRunning) {
-						return;
-					}
-
-					Object oldValue = event.getOldValue();
-					Object newValue = event.getNewValue();
-					String key = event.getKey();
-					if (newValue == null) {
-						newValue = getDefault(key, oldValue);
-					} else if (oldValue == null) {
-						oldValue = getDefault(key, newValue);
-					}
-					firePropertyChangeEvent(event.getKey(), oldValue, newValue);
-				}
-			};
-			getStorePreferences().addPreferenceChangeListener(
-					preferencesListener);
-		}
-
-	}
-
-	/**
-	 * Does its best at determining the default value for the given key. Checks
-	 * the given object's type and then looks in the list of defaults to see if
-	 * a value exists. If not or if there is a problem converting the value, the
-	 * default default value for that type is returned.
-	 * 
-	 * @param key
-	 *            the key to search
-	 * @param obj
-	 *            the object who default we are looking for
-	 * @return Object or <code>null</code>
-	 */
-	Object getDefault(String key, Object obj) {
-		IEclipsePreferences defaults = getDefaultPreferences();
-		if (obj instanceof String) {
-			return defaults.get(key, STRING_DEFAULT_DEFAULT);
-		} else if (obj instanceof Integer) {
-			return new Integer(defaults.getInt(key, INT_DEFAULT_DEFAULT));
-		} else if (obj instanceof Double) {
-			return new Double(defaults.getDouble(key, DOUBLE_DEFAULT_DEFAULT));
-		} else if (obj instanceof Float) {
-			return new Float(defaults.getFloat(key, FLOAT_DEFAULT_DEFAULT));
-		} else if (obj instanceof Long) {
-			return new Long(defaults.getLong(key, LONG_DEFAULT_DEFAULT));
-		} else if (obj instanceof Boolean) {
-			return defaults.getBoolean(key, BOOLEAN_DEFAULT_DEFAULT) ? Boolean.TRUE
-					: Boolean.FALSE;
-		} else {
-			return null;
-		}
-	}
-
-	/**
-	 * Return the IEclipsePreferences node associated with this store.
-	 * 
-	 * @return the preference node for this store
-	 */
-	IEclipsePreferences getStorePreferences() {
-		return storeContext.getNode(nodeQualifier);
-	}
-
-	/**
-	 * Return the default IEclipsePreferences for this store.
-	 * 
-	 * @return this store's default preference node
-	 */
-	private IEclipsePreferences getDefaultPreferences() {
-		return defaultContext.getNode(defaultQualifier);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		initializePreferencesListener();// Create the preferences listener if it
-		// does not exist
-		addListenerObject(listener);
-	}
-
-	/**
-	 * Return the preference path to search preferences on. This is the list of
-	 * preference nodes based on the scope contexts for this store. If there are
-	 * no search contexts set, then return this store's context.
-	 * <p>
-	 * Whether or not the default context should be included in the resulting
-	 * list is specified by the <code>includeDefault</code> parameter.
-	 * </p>
-	 * 
-	 * @param includeDefault
-	 *            <code>true</code> if the default context should be included
-	 *            and <code>false</code> otherwise
-	 * @return IEclipsePreferences[]
-	 * @since 3.4 public, was added in 3.1 as private method
-	 */
-	public IEclipsePreferences[] getPreferenceNodes(boolean includeDefault) {
-		// if the user didn't specify a search order, then return the scope that
-		// this store was created on. (and optionally the default)
-		if (searchContexts == null) {
-			if (includeDefault) {
-				return new IEclipsePreferences[] { getStorePreferences(),
-						getDefaultPreferences() };
-			}
-			return new IEclipsePreferences[] { getStorePreferences() };
-		}
-		// otherwise the user specified a search order so return the appropriate
-		// nodes based on it
-		int length = searchContexts.length;
-		if (includeDefault) {
-			length++;
-		}
-		IEclipsePreferences[] preferences = new IEclipsePreferences[length];
-		for (int i = 0; i < searchContexts.length; i++) {
-			preferences[i] = searchContexts[i].getNode(nodeQualifier);
-		}
-		if (includeDefault) {
-			preferences[length - 1] = getDefaultPreferences();
-		}
-		return preferences;
-	}
-
-	/**
-	 * Set the search contexts to scopes. When searching for a value the seach
-	 * will be done in the order of scope contexts and will not search the
-	 * storeContext unless it is in this list.
-	 * <p>
-	 * If the given list is <code>null</code>, then clear this store's search
-	 * contexts. This means that only this store's scope context and default
-	 * scope will be used during preference value searching.
-	 * </p>
-	 * <p>
-	 * The defaultContext will be added to the end of this list automatically
-	 * and <em>MUST NOT</em> be included by the user.
-	 * </p>
-	 * 
-	 * @param scopes
-	 *            a list of scope contexts to use when searching, or
-	 *            <code>null</code>
-	 */
-	public void setSearchContexts(IScopeContext[] scopes) {
-		this.searchContexts = scopes;
-		if (scopes == null) {
-			return;
-		}
-
-		// Assert that the default was not included (we automatically add it to
-		// the end)
-		for (int i = 0; i < scopes.length; i++) {
-			if (scopes[i].equals(defaultContext)) {
-				Assert
-						.isTrue(
-								false,
-								WorkbenchMessages.ScopedPreferenceStore_DefaultAddedError);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#contains(java.lang.String)
-	 */
-	public boolean contains(String name) {
-		if (name == null) {
-			return false;
-		}
-		return (Platform.getPreferencesService().get(name, null,
-				getPreferenceNodes(true))) != null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#firePropertyChangeEvent(java.lang.String,
-	 *      java.lang.Object, java.lang.Object)
-	 */
-	public void firePropertyChangeEvent(String name, Object oldValue,
-			Object newValue) {
-		// important: create intermediate array to protect against listeners
-		// being added/removed during the notification
-		final Object[] list = getListeners();
-		if (list.length == 0) {
-			return;
-		}
-		final PropertyChangeEvent event = new PropertyChangeEvent(this, name,
-				oldValue, newValue);
-		for (int i = 0; i < list.length; i++) {
-			final IPropertyChangeListener listener = (IPropertyChangeListener) list[i];
-			SafeRunner.run(new SafeRunnable(JFaceResources
-					.getString("PreferenceStore.changeError")) { //$NON-NLS-1$
-						public void run() {
-							listener.propertyChange(event);
-						}
-					});
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getBoolean(java.lang.String)
-	 */
-	public boolean getBoolean(String name) {
-		String value = internalGet(name);
-		return value == null ? BOOLEAN_DEFAULT_DEFAULT : Boolean.valueOf(value)
-				.booleanValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultBoolean(java.lang.String)
-	 */
-	public boolean getDefaultBoolean(String name) {
-		return getDefaultPreferences()
-				.getBoolean(name, BOOLEAN_DEFAULT_DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultDouble(java.lang.String)
-	 */
-	public double getDefaultDouble(String name) {
-		return getDefaultPreferences().getDouble(name, DOUBLE_DEFAULT_DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultFloat(java.lang.String)
-	 */
-	public float getDefaultFloat(String name) {
-		return getDefaultPreferences().getFloat(name, FLOAT_DEFAULT_DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultInt(java.lang.String)
-	 */
-	public int getDefaultInt(String name) {
-		return getDefaultPreferences().getInt(name, INT_DEFAULT_DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultLong(java.lang.String)
-	 */
-	public long getDefaultLong(String name) {
-		return getDefaultPreferences().getLong(name, LONG_DEFAULT_DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultString(java.lang.String)
-	 */
-	public String getDefaultString(String name) {
-		return getDefaultPreferences().get(name, STRING_DEFAULT_DEFAULT);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getDouble(java.lang.String)
-	 */
-	public double getDouble(String name) {
-		String value = internalGet(name);
-		if (value == null) {
-			return DOUBLE_DEFAULT_DEFAULT;
-		}
-		try {
-			return Double.parseDouble(value);
-		} catch (NumberFormatException e) {
-			return DOUBLE_DEFAULT_DEFAULT;
-		}
-	}
-
-	/**
-	 * Return the string value for the specified key. Look in the nodes which
-	 * are specified by this object's list of search scopes. If the value does
-	 * not exist then return <code>null</code>.
-	 * 
-	 * @param key
-	 *            the key to search with
-	 * @return String or <code>null</code> if the value does not exist.
-	 */
-	private String internalGet(String key) {
-		return Platform.getPreferencesService().get(key, null,
-				getPreferenceNodes(true));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getFloat(java.lang.String)
-	 */
-	public float getFloat(String name) {
-		String value = internalGet(name);
-		if (value == null) {
-			return FLOAT_DEFAULT_DEFAULT;
-		}
-		try {
-			return Float.parseFloat(value);
-		} catch (NumberFormatException e) {
-			return FLOAT_DEFAULT_DEFAULT;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getInt(java.lang.String)
-	 */
-	public int getInt(String name) {
-		String value = internalGet(name);
-		if (value == null) {
-			return INT_DEFAULT_DEFAULT;
-		}
-		try {
-			return Integer.parseInt(value);
-		} catch (NumberFormatException e) {
-			return INT_DEFAULT_DEFAULT;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getLong(java.lang.String)
-	 */
-	public long getLong(String name) {
-		String value = internalGet(name);
-		if (value == null) {
-			return LONG_DEFAULT_DEFAULT;
-		}
-		try {
-			return Long.parseLong(value);
-		} catch (NumberFormatException e) {
-			return LONG_DEFAULT_DEFAULT;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#getString(java.lang.String)
-	 */
-	public String getString(String name) {
-		String value = internalGet(name);
-		return value == null ? STRING_DEFAULT_DEFAULT : value;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#isDefault(java.lang.String)
-	 */
-	public boolean isDefault(String name) {
-		if (name == null) {
-			return false;
-		}
-		return (Platform.getPreferencesService().get(name, null,
-				getPreferenceNodes(false))) == null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#needsSaving()
-	 */
-	public boolean needsSaving() {
-		return dirty;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#putValue(java.lang.String,
-	 *      java.lang.String)
-	 */
-	public void putValue(String name, String value) {
-		try {
-			// Do not notify listeners
-			silentRunning = true;
-			getStorePreferences().put(name, value);
-		} finally {
-			// Be sure that an exception does not stop property updates
-			silentRunning = false;
-			dirty = true;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		removeListenerObject(listener);
-		if (!isListenerAttached()) {
-			disposePreferenceStoreListener();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String,
-	 *      double)
-	 */
-	public void setDefault(String name, double value) {
-		getDefaultPreferences().putDouble(name, value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String,
-	 *      float)
-	 */
-	public void setDefault(String name, float value) {
-		getDefaultPreferences().putFloat(name, value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String,
-	 *      int)
-	 */
-	public void setDefault(String name, int value) {
-		getDefaultPreferences().putInt(name, value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String,
-	 *      long)
-	 */
-	public void setDefault(String name, long value) {
-		getDefaultPreferences().putLong(name, value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String,
-	 *      java.lang.String)
-	 */
-	public void setDefault(String name, String defaultObject) {
-		getDefaultPreferences().put(name, defaultObject);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setDefault(java.lang.String,
-	 *      boolean)
-	 */
-	public void setDefault(String name, boolean value) {
-		getDefaultPreferences().putBoolean(name, value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setToDefault(java.lang.String)
-	 */
-	public void setToDefault(String name) {
-
-		String oldValue = getString(name);
-		String defaultValue = getDefaultString(name);
-		try {
-			silentRunning = true;// Turn off updates from the store
-			// removing a non-existing preference is a no-op so call the Core
-			// API directly
-			getStorePreferences().remove(name);
-			if (oldValue != defaultValue){
-				dirty = true;
-				firePropertyChangeEvent(name, oldValue, defaultValue);
-			}
-				
-		} finally {
-			silentRunning = false;// Restart listening to preferences
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String,
-	 *      double)
-	 */
-	public void setValue(String name, double value) {
-		double oldValue = getDouble(name);
-		if (oldValue == value) {
-			return;
-		}
-		try {
-			silentRunning = true;// Turn off updates from the store
-			if (getDefaultDouble(name) == value) {
-				getStorePreferences().remove(name);
-			} else {
-				getStorePreferences().putDouble(name, value);
-			}
-			dirty = true;
-			firePropertyChangeEvent(name, new Double(oldValue), new Double(
-					value));
-		} finally {
-			silentRunning = false;// Restart listening to preferences
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String,
-	 *      float)
-	 */
-	public void setValue(String name, float value) {
-		float oldValue = getFloat(name);
-		if (oldValue == value) {
-			return;
-		}
-		try {
-			silentRunning = true;// Turn off updates from the store
-			if (getDefaultFloat(name) == value) {
-				getStorePreferences().remove(name);
-			} else {
-				getStorePreferences().putFloat(name, value);
-			}
-			dirty = true;
-			firePropertyChangeEvent(name, new Float(oldValue), new Float(value));
-		} finally {
-			silentRunning = false;// Restart listening to preferences
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String,
-	 *      int)
-	 */
-	public void setValue(String name, int value) {
-		int oldValue = getInt(name);
-		if (oldValue == value) {
-			return;
-		}
-		try {
-			silentRunning = true;// Turn off updates from the store
-			if (getDefaultInt(name) == value) {
-				getStorePreferences().remove(name);
-			} else {
-				getStorePreferences().putInt(name, value);
-			}
-			dirty = true;
-			firePropertyChangeEvent(name, new Integer(oldValue), new Integer(
-					value));
-		} finally {
-			silentRunning = false;// Restart listening to preferences
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String,
-	 *      long)
-	 */
-	public void setValue(String name, long value) {
-		long oldValue = getLong(name);
-		if (oldValue == value) {
-			return;
-		}
-		try {
-			silentRunning = true;// Turn off updates from the store
-			if (getDefaultLong(name) == value) {
-				getStorePreferences().remove(name);
-			} else {
-				getStorePreferences().putLong(name, value);
-			}
-			dirty = true;
-			firePropertyChangeEvent(name, new Long(oldValue), new Long(value));
-		} finally {
-			silentRunning = false;// Restart listening to preferences
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String,
-	 *      java.lang.String)
-	 */
-	public void setValue(String name, String value) {
-		// Do not turn on silent running here as Strings are propagated
-		if (getDefaultString(name).equals(value)) {
-			getStorePreferences().remove(name);
-		} else {
-			getStorePreferences().put(name, value);
-		}
-		dirty = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPreferenceStore#setValue(java.lang.String,
-	 *      boolean)
-	 */
-	public void setValue(String name, boolean value) {
-		boolean oldValue = getBoolean(name);
-		if (oldValue == value) {
-			return;
-		}
-		try {
-			silentRunning = true;// Turn off updates from the store
-			if (getDefaultBoolean(name) == value) {
-				getStorePreferences().remove(name);
-			} else {
-				getStorePreferences().putBoolean(name, value);
-			}
-			dirty = true;
-			firePropertyChangeEvent(name, oldValue ? Boolean.TRUE
-					: Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE);
-		} finally {
-			silentRunning = false;// Restart listening to preferences
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.preference.IPersistentPreferenceStore#save()
-	 */
-	public void save() throws IOException {
-		try {
-			getStorePreferences().flush();
-			dirty = false;
-		} catch (BackingStoreException e) {
-			throw new IOException(e.getMessage());
-		}
-
-	}
-
-	/**
-	 * Dispose the receiver.
-	 */
-	private void disposePreferenceStoreListener() {
-
-		IEclipsePreferences root = (IEclipsePreferences) Platform
-				.getPreferencesService().getRootNode().node(
-						Plugin.PLUGIN_PREFERENCE_SCOPE);
-		try {
-			if (!(root.nodeExists(nodeQualifier))) {
-				return;
-			}
-		} catch (BackingStoreException e) {
-			return;// No need to report here as the node won't have the
-			// listener
-		}
-
-		IEclipsePreferences preferences = getStorePreferences();
-		if (preferences == null) {
-			return;
-		}
-		if (preferencesListener != null) {
-			preferences.removePreferenceChangeListener(preferencesListener);
-			preferencesListener = null;
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/SettingsTransfer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/SettingsTransfer.java
deleted file mode 100644
index 590547e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/SettingsTransfer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.preferences;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ui.internal.preferences.SettingsTransferRegistryReader;
-
-/**
- * The SettingsTransfer is the abstract superclass of settings transfers
- * used when switching workspaces.
- * @since 3.3
- *
- */
-public abstract class SettingsTransfer {
-	
-	/**
-	 * Return the configuration elements for all of the settings 
-	 * transfers.
-	 * @return IConfigurationElement[]
-	 */
-	public static IConfigurationElement[] getSettingsTransfers(){
-		return (new SettingsTransferRegistryReader()).getSettingTransfers();
-	}
-	
-	/**
-	 * Transfer the settings to a workspace rooted at newWorkspacwe
-	 * @param newWorkspaceRoot
-	 * @return {@link IStatus} the status of the transfer.
-	 */
-	public abstract IStatus transferSettings(IPath newWorkspaceRoot);
-
-	/**
-	 * Return the name for the receiver.
-	 * @return String
-	 */
-	public abstract String getName() ;
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewPreferencesAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewPreferencesAction.java
deleted file mode 100644
index a81b5ab..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewPreferencesAction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.preferences;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.internal.WorkbenchMessages;
-
-/**
- * The ViewPreferencesAction is the action for opening
- * a view preferences dialog on a class.
- * 
- * @since 3.1
- */
-public abstract class ViewPreferencesAction extends Action {
-
-	/**
-	 * Create a new instance of the receiver.
-	 */
-	public ViewPreferencesAction() {
-		super(WorkbenchMessages.OpenPreferences_text); 
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.Action#run()
-	 */
-	public void run() {
-		openViewPreferencesDialog();
-	}
-
-	/**
-	 * Open a view preferences dialog for the receiver.
-	 */
-	public abstract void openViewPreferencesDialog();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewSettingsDialog.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewSettingsDialog.java
deleted file mode 100644
index 3157267..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/ViewSettingsDialog.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.preferences;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.JFaceResources;
-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.Shell;
-
-/**
- * The ViewSettingsDialog is an abstract class that
- * provides some common functionality for view preferences.
- * 
- * @since 3.1
- */
-public class ViewSettingsDialog extends Dialog {
-	
-	private static int DEFAULTS_BUTTON_ID = 25;
-	
-	/**
-	 * Create a new instance of the receiver.
-	 * @param parentShell
-	 */
-	public ViewSettingsDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
-	 */
-	protected void buttonPressed(int buttonId) {
-		if (buttonId == DEFAULTS_BUTTON_ID) {
-			performDefaults();
-		}
-		super.buttonPressed(buttonId);
-	}
-
-	 /**
-     * Performs special processing when this dialog Defaults button has been pressed.
-     * <p>
-     * This is a framework hook method for subclasses to do special things when
-     * the Defaults button has been pressed.
-     * Subclasses may override, but should call <code>super.performDefaults</code>.
-     * </p>
-     */
-	protected void performDefaults() {
-		//Do nothing by default
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-		createButton(parent, DEFAULTS_BUTTON_ID, JFaceResources.getString("defaults"), false); //$NON-NLS-1$
-
-		Label l = new Label(parent, SWT.NONE);
-		l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-		l = new Label(parent, SWT.NONE);
-		l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-		GridLayout layout = (GridLayout) parent.getLayout();
-		layout.numColumns += 2;
-		layout.makeColumnsEqualWidth = false;
-
-		super.createButtonsForButtonBar(parent);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WizardPropertyPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WizardPropertyPage.java
deleted file mode 100644
index 811dbd5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WizardPropertyPage.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.preferences;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.IWizardContainer;
-import org.eclipse.jface.wizard.IWizardPage;
-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.ui.dialogs.PropertyPage;
-
-/**
- * The wizard property page can wrap a property page around a wizard.
- * The property page shows the first page of the wizard. It is therefore
- * required, that the wizard consists of exactly one page.
- * 
- * @since 3.4
- */
-public abstract class WizardPropertyPage extends PropertyPage {
-	
-	private static final class PropertyPageWizardContainer implements IWizardContainer {
-		
-		private final IWizard fWizard;
-		private final PropertyPage fPage;
-		private String fMessage;
-		
-		private PropertyPageWizardContainer(PropertyPage page, IWizard wizard) {
-			Assert.isLegal(wizard.getPageCount() == 1);
-			
-			fPage= page;
-			fWizard= wizard;
-		}
-		
-		public IWizardPage getCurrentPage() {
-			return fWizard.getPages()[0];
-		}
-		
-		public Shell getShell() {
-			return fPage.getShell();
-		}
-		
-		public void showPage(IWizardPage page) {
-		}
-		
-		public void updateButtons() {
-			fPage.setValid(fWizard.canFinish());
-		}
-		
-		public void updateMessage() {
-			IWizardPage page= getCurrentPage();
-			
-			String message= fPage.getMessage();
-			if (message != null &&
-					fMessage == null)
-				fMessage= message;
-			
-			if (page.getErrorMessage() != null) {
-				fPage.setMessage(page.getErrorMessage(), ERROR);
-			} else if (page instanceof IMessageProvider) {
-				IMessageProvider messageProvider= (IMessageProvider)page;
-				if (messageProvider.getMessageType() != IMessageProvider.NONE) {
-					fPage.setMessage(messageProvider.getMessage(), messageProvider.getMessageType());
-				} else {
-					if (messageProvider.getMessage() != null &&
-							fMessage == null)
-						fMessage= messageProvider.getMessage();
-					
-					fPage.setMessage(fMessage, NONE);
-				}
-			} else {
-				fPage.setErrorMessage(null);
-			}
-		}
-		
-		public void updateTitleBar() {
-			IWizardPage page= getCurrentPage();
-			String name= page.getTitle();
-			if (name == null)
-				name= page.getName();
-			
-			fPage.setMessage(name);
-		}
-		
-		public void updateWindowTitle() {
-		}
-		
-		public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
-			ProgressMonitorDialog dialog= new ProgressMonitorDialog(getShell());
-			dialog.run(fork, cancelable, runnable);
-		}
-	}
-	
-	private IWizard fWizard;
-	private Composite fWizardPageContainer;
-	
-	public WizardPropertyPage() {
-	}
-	
-	/**
-	 * @return the wizard which is wrapped by this page or <b>null</b> if not yet created
-	 */
-	public IWizard getWizard() {
-		return fWizard;
-	}
-	
-	/**
-	 * Return a wizard.
-	 * 
-	 * @return an instance of the wizard to be wrapped or <b>null</b> if creation failed
-	 */
-	protected abstract IWizard createWizard();
-	
-	/**
-	 * Apply the changes made on the property page
-	 */
-	protected abstract void applyChanges();
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	protected Control createContents(final Composite parent) {
-		fWizardPageContainer= new Composite(parent, SWT.NONE);
-		fWizardPageContainer.setFont(parent.getFont());
-		fWizardPageContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		GridLayout layout= new GridLayout(1, false);
-		layout.marginHeight= 0;
-		layout.marginWidth= 0;
-		fWizardPageContainer.setLayout(layout);
-		
-		createWizardPageContent(fWizardPageContainer);
-		
-		return fWizardPageContainer;
-	}
-	
-	private void createWizardPageContent(Composite parent) {
-		fWizard= createWizard();
-		if (fWizard == null)
-			return;
-		
-		fWizard.addPages();
-		
-		PropertyPageWizardContainer wizardContainer= new PropertyPageWizardContainer(this, fWizard);
-		wizardContainer.updateButtons();
-		wizardContainer.updateMessage();
-		fWizard.setContainer(wizardContainer);
-		
-		Composite messageComposite= new Composite(parent, SWT.NONE);
-		messageComposite.setFont(parent.getFont());
-		messageComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-		GridLayout layout= new GridLayout(1, false);
-		layout.marginHeight= 0;
-		messageComposite.setLayout(layout);
-		
-		Label messageLabel= new Label(messageComposite, SWT.WRAP);
-		messageLabel.setFont(messageComposite.getFont());
-		messageLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		
-		fWizard.createPageControls(parent);
-		
-		IWizardPage page= fWizard.getPages()[0];
-		if (page.getControl() == null)
-			page.createControl(parent);
-		
-		Control pageControl= page.getControl();
-		pageControl.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-		
-		setPageName(page);
-		setDescription(page, messageLabel);
-		
-		page.setVisible(true);
-		
-		setValid(fWizard.canFinish());
-	}
-	
-	private void setPageName(IWizardPage page) {
-		String name= page.getTitle();
-		if (name == null)
-			name= page.getName();
-		
-		setMessage(name);
-	}
-	
-	private void setDescription(IWizardPage page, Label messageLabel) {
-		String description= null;
-		if (page.getDescription() != null) {
-			description= page.getDescription();
-		} else if (page instanceof IMessageProvider) {
-			IMessageProvider messageProvider= (IMessageProvider)page;
-			if (messageProvider.getMessageType() == IMessageProvider.NONE) {
-				description= messageProvider.getMessage();
-			}
-		}
-		
-		if (description != null) {
-			messageLabel.setText(description);
-		} else {
-			messageLabel.setVisible(false);
-		}
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public boolean performOk() {
-		fWizard.performFinish();
-		applyChanges();
-		fWizard.dispose();
-		
-		return super.performOk();
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public boolean performCancel() {
-		fWizard.performCancel();
-		fWizard.dispose();
-		
-		return super.performCancel();
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	protected void performApply() {
-		fWizard.performFinish();
-		applyChanges();
-		fWizard.dispose();
-		
-		rebuildWizardPage();
-		
-		super.performApply();
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	protected void performDefaults() {
-		fWizard.performCancel();
-		fWizard.dispose();
-		
-		rebuildWizardPage();
-		
-		super.performDefaults();
-	}
-	
-	/**
-	 * Rebuilds the wizard page
-	 */
-	private void rebuildWizardPage() {
-		Control[] children= fWizardPageContainer.getChildren();
-		for (int i= 0; i < children.length; i++) {
-			children[i].dispose();
-		}
-		
-		createWizardPageContent(fWizardPageContainer);
-		fWizardPageContainer.getParent().layout(true, true);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WorkingCopyManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WorkingCopyManager.java
deleted file mode 100644
index 6732619..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/WorkingCopyManager.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.preferences;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.ui.internal.preferences.WorkingCopyPreferences;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * WorkingCopyManager is a concrete implementation of an
- * IWorkingCopyManager.
- * <p>
- * This class is not intended to be sub-classed by clients.
- * </p>
- * @since 3.2
- */
-public class WorkingCopyManager implements IWorkingCopyManager{
-
-	private static final String EMPTY_STRING = "";//$NON-NLS-1$
-	// all working copies - maps absolute path to PreferencesWorkingCopy instance
-	private Map workingCopies = new HashMap();
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.preferences.IWorkingCopyManager#getWorkingCopy(org.eclipse.core.runtime.preferences.IEclipsePreferences)
-	 */
-	public IEclipsePreferences getWorkingCopy(IEclipsePreferences original) {
-		if (original instanceof WorkingCopyPreferences) {
-			throw new IllegalArgumentException("Trying to get a working copy of a working copy"); //$NON-NLS-1$
-		}
-		String absolutePath = original.absolutePath();
-		IEclipsePreferences preferences = (IEclipsePreferences) workingCopies.get(absolutePath);
-		if (preferences == null) {
-			preferences = new WorkingCopyPreferences(original, this);
-			workingCopies.put(absolutePath, preferences);
-		}
-		return preferences;
-	}
-
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.preferences.IWorkingCopyManager#applyChanges()
-	 */
-	public void applyChanges() throws BackingStoreException {
-		Collection values = workingCopies.values();
-		WorkingCopyPreferences[] valuesArray = (WorkingCopyPreferences[]) values.toArray(new WorkingCopyPreferences[values.size()]);
-		for (int i = 0; i < valuesArray.length; i++) {
-			WorkingCopyPreferences prefs = valuesArray[i];
-			if (prefs.nodeExists(EMPTY_STRING)) 
-				prefs.flush();
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/package.html
deleted file mode 100644
index 2e10186..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/preferences/package.html
+++ /dev/null
@@ -1,17 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Classes for using the preferences support in org.eclipse.core.runtime.preferences 
-<h2>
-Package Specification</h2>
-This package has the convenience classes provided by the Eclipse workbench for 
-use by clients who wish to use the core preference support added in 3.0.<br>
-&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/AbstractPresentationFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/AbstractPresentationFactory.java
deleted file mode 100644
index 231eb98..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/AbstractPresentationFactory.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Matthew Hatem Matthew_Hatem@notesdev.ibm.com Bug 189953
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.StatusLineManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Sash;
-
-/**
- * This is a factory for presentation objects that control the appearance of
- * editors, views and other components in the workbench.
- * 
- * @since 3.0
- */
-public abstract class AbstractPresentationFactory {
-	
-	/**
-	 * Bit value for the createSash method's 'style' parameter.
-	 * @since 3.4
-	 */
-	public static int SASHTYPE_NORMAL = 0;
-	/**
-	 * Bit value for the createSash method's 'style' parameter.
-	 * @since 3.4
-	 */
-	public static int SASHTYPE_FLOATING = 1<<1;
-	/**
-	 * Bit value for the createSash method's 'style' parameter.
-	 * @since 3.4
-	 */
-	public static int SASHORIENTATION_HORIZONTAL = SWT.HORIZONTAL; // 1<<8
-	/**
-	 * Bit value for the createSash method's 'style' parameter.
-	 * @since 3.4
-	 */
-	public static int SASHORIENTATION_VERTICAL = SWT.VERTICAL; // 1<<9
-	
-	private static final int SASH_SIZE = 3;
-
-    /**
-     * Creates an editor presentation for presenting editors.
-     * <p>
-     * The presentation creates its controls under the given parent composite.
-     * </p>
-     * 
-     * @param parent
-     *            the parent composite to use for the presentation's controls
-     * @param site
-     *            the site used for communication between the presentation and
-     *            the workbench
-     * @return a newly created part presentation
-     */
-    public abstract StackPresentation createEditorPresentation(
-            Composite parent, IStackPresentationSite site);
-
-    /**
-     * Creates a stack presentation for presenting regular docked views.
-     * <p>
-     * The presentation creates its controls under the given parent composite.
-     * </p>
-     * 
-     * @param parent
-     *            the parent composite to use for the presentation's controls
-     * @param site
-     *            the site used for communication between the presentation and
-     *            the workbench
-     * @return a newly created part presentation
-     */
-    public abstract StackPresentation createViewPresentation(Composite parent,
-            IStackPresentationSite site);
-
-    /**
-     * Creates a standalone stack presentation for presenting a standalone view.
-     * A standalone view cannot be docked together with other views. The title
-     * of a standalone view may be hidden.
-     * <p>
-     * The presentation creates its controls under the given parent composite.
-     * </p>
-     * 
-     * @param parent
-     *            the parent composite to use for the presentation's controls
-     * @param site
-     *            the site used for communication between the presentation and
-     *            the workbench
-     * @param showTitle
-     *            <code>true</code> to show the title for the view,
-     *            <code>false</code> to hide it
-     * @return a newly created part presentation
-     */
-    public abstract StackPresentation createStandaloneViewPresentation(
-            Composite parent, IStackPresentationSite site, boolean showTitle);
-
-    /**
-     * Creates the status line manager for the window.
-     * Subclasses may override.
-     * 
-     * @return the window's status line manager
-     */
-    public IStatusLineManager createStatusLineManager() {
-        return new StatusLineManager();
-    }
-
-    /**
-     * Creates the control for the window's status line.
-     * Subclasses may override.
-     * 
-     * @param statusLine the window's status line manager
-     * @param parent the parent composite
-     * @return the window's status line control
-     */
-    public Control createStatusLineControl(IStatusLineManager statusLine,
-            Composite parent) {
-        return ((StatusLineManager) statusLine).createControl(parent, SWT.NONE);
-    }
-    
-    /**
-     * Returns a globally unique identifier for this type of presentation factory. This is used
-     * to ensure that one presentation is not restored from mementos saved by a different
-     * presentation.
-     * 
-     * @return a globally unique identifier for this type of presentation factory.
-     */
-    public String getId() {
-        return this.getClass().getName();
-    }
-    
-    /**
-     * Creates the Sash control that is used to separate view and editor parts.
-     * 
-     * @param parent the parent composite
-     * @param style A bit set giving both the 'type' of the desired sash and
-     * its orientation (i.e. one 'SASHTYPE' value and one "SASHORIENTATION" value). 
-     * @return the sash control
-     * @since 3.4
-     */
-    public Sash createSash(Composite parent, int style) {
-    	int swtOrientation = style & (SASHORIENTATION_HORIZONTAL|SASHORIENTATION_VERTICAL);
-    	Sash sash = new Sash(parent, swtOrientation | SWT.SMOOTH);
-        return sash;
-    }
-    
-    /**
-     * Returns the size of the Sash control that is used to separate view and editor parts.
-     * 
-     * @param style A bit set giving both the 'type' of the desired sash and
-     * its orientation.
-     * @return the sash size
-     * @since 3.4
-     */
-    public int getSashSize(int style) {
-    	return SASH_SIZE;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java
deleted file mode 100644
index bb30e59..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.swt.graphics.Point;
-
-/**
- * Interface to a menu created by a part that will be displayed in a presentation.
- * 
- * This interface is not intended to be implemented by clients.
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPartMenu {
-    /**
-     * Displays the local menu for this part as a popup at the given location.
-     * 
-     * @param location position to display the menu at (display coordinates, not null)
-     * @since 3.0
-     */
-    public void showMenu(Point location);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentablePart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentablePart.java
deleted file mode 100644
index 5a5c3e3..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentablePart.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Stefan Xenos, IBM; Chris Torrence, ITT Visual Information Solutions - bug 51580
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISizeProvider;
-import org.eclipse.ui.IWorkbenchPartConstants;
-
-/**
- * This is a skin's interface to the contents of a view or editor. Note that this
- * is essentially the same as IWorkbenchPart, except it does not provide access
- * to lifecycle events and allows repositioning of the part.
- * 
- * Not intended to be implemented by clients.
- * 
- * @since 3.0
- * @since 3.4 now extends {@link org.eclipse.ui.ISizeProvider}
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPresentablePart extends ISizeProvider {
-
-    /**
-     * The property id for <code>isDirty</code>.
-     */
-    public static final int PROP_DIRTY = IWorkbenchPartConstants.PROP_DIRTY;
-
-    /**
-     * The property id for <code>getEditorInput</code>.
-     */
-    public static final int PROP_INPUT = IWorkbenchPartConstants.PROP_INPUT;
-
-    /**
-     * The property id for <code>getTitle</code>, <code>getTitleImage</code>
-     * and <code>getTitleToolTip</code>.
-     */
-    public static final int PROP_TITLE = IWorkbenchPartConstants.PROP_TITLE;
-
-    /**
-     * The property id for <code>IWorkbenchPart2.getContentDescription()</code>
-     */
-    public static final int PROP_CONTENT_DESCRIPTION = IWorkbenchPartConstants.PROP_CONTENT_DESCRIPTION;
-
-    /**
-     * The property id for <code>IWorkbenchPart2.getContentDescription()</code>
-     */
-    public static final int PROP_PART_NAME = IWorkbenchPartConstants.PROP_PART_NAME;
-
-    /**
-     * The property id for <code>isBusy</code>.
-     */
-    public static final int PROP_BUSY = 0x92;
-
-    /**
-     * The property id for toolbar changes
-     */
-    public static final int PROP_TOOLBAR = 0x93;
-
-    /**
-     * The property id for highlighting the 
-     * part if it is not in front.
-     */
-    public static final int PROP_HIGHLIGHT_IF_BACK = 0x94;
-
-    /**
-     * The property id for pane menu changes
-     */
-    public static final int PROP_PANE_MENU = 0x302;
-
-    /**
-     * The property id for preferred size changes
-     * @since 3.4
-     */
-    public static final int PROP_PREFERRED_SIZE = IWorkbenchPartConstants.PROP_PREFERRED_SIZE;
-    
-    /**
-     * Sets the bounds of this part.
-     *  
-     * @param bounds bounding rectangle (not null)
-     */
-    public void setBounds(Rectangle bounds);
-
-    /**
-     * Notifies the part whether or not it is visible in the current
-     * perspective. A part is visible iff any part of its widgetry can
-     * be seen.
-     * 
-     * @param isVisible true if the part has just become visible, false
-     * if the part has just become hidden
-     */
-    public void setVisible(boolean isVisible);
-
-    /**
-     * Forces this part to have focus.
-     */
-    public void setFocus();
-
-    /**
-     * Adds a listener for changes to properties of this workbench part.
-     * Has no effect if an identical listener is already registered.
-     * <p>
-     * The properties ids are defined by the PROP_* constants, above.
-     * </p>
-     *
-     * @param listener a property listener (not null)
-     */
-    public void addPropertyListener(IPropertyListener listener);
-
-    /**
-     * Remove a listener that was previously added using addPropertyListener.
-     *
-     * @param listener a property listener (not null)
-     */
-    public void removePropertyListener(IPropertyListener listener);
-
-    /**
-     * Returns the short name of the part. This is used as the text on
-     * the tab when this part is stacked on top of other parts.
-     * 
-     * @return the short name of the part (not null)
-     */
-    public String getName();
-
-    /**
-     * Returns the title of this workbench part. If this value changes 
-     * the part must fire a property listener event with 
-     * <code>PROP_TITLE</code>.
-     * <p>
-     * The title is used to populate the title bar of this part's visual
-     * container.  
-     * </p>
-     *
-     * @return the workbench part title (not null)
-     */
-    public String getTitle();
-
-    /**
-     * Returns the status message from the part's title, or the empty string if none. 
-     * This is a substring of the part's title. A typical title will consist of
-     * the part name, a separator, and a status message describing the current contents.
-     * <p>
-     * Presentations can query getName() and getTitleStatus() if they want to display
-     * the status message and name separately, or they can use getTitle() if they want
-     * to display the entire title.
-     * </p> 
-     * 
-     * @return the status message or the empty string if none (not null)
-     */
-    public String getTitleStatus();
-
-    /**
-     * Returns the title image of this workbench part.  If this value changes 
-     * the part must fire a property listener event with 
-     * <code>PROP_TITLE</code>.
-     * <p>
-     * The title image is usually used to populate the title bar of this part's
-     * visual container. Since this image is managed by the part itself, callers
-     * must <b>not</b> dispose the returned image.
-     * </p>
-     *
-     * @return the title image
-     */
-    public Image getTitleImage();
-
-    /**
-     * Returns the title tool tip text of this workbench part. If this value 
-     * changes the part must fire a property listener event with 
-     * <code>PROP_TITLE</code>.
-     * <p>
-     * The tool tip text is used to populate the title bar of this part's 
-     * visual container.  
-     * </p>
-     *
-     * @return the workbench part title tool tip (not null)
-     */
-    public String getTitleToolTip();
-
-    /**
-     * Returns true iff the contents of this part have changed recently. For
-     * editors, this indicates that the part has changed since the last save.
-     * For views, this indicates that the view contains interesting changes
-     * that it wants to draw the user's attention to.
-     * 
-     * @return true iff the part is dirty
-     */
-    public boolean isDirty();
-
-    /**
-     * Return true if the the receiver is currently in a busy state.
-     * @return boolean true if busy
-     */
-    public boolean isBusy();
-    
-    /**
-     * Returns true iff this part can be closed
-     * 
-     * @return true iff this part can be closed
-     * @since 3.1
-     */
-    public boolean isCloseable();
-    
-    /**
-     * Returns the local toolbar for this part, or null if this part does not
-     * have a local toolbar. Callers must not dispose or downcast the return value.
-     * 
-     * @return the local toolbar for the part, or null if none
-     */
-    public Control getToolBar();
-
-    /**
-     * Returns the menu for this part or null if none
-     * 
-     * @return the menu for this part or null if none
-     */
-    public IPartMenu getMenu();
-
-    /**
-     * Returns an SWT control that can be used to indicate the tab order for
-     * this part. This can be returned as part of the result to 
-     * {@link StackPresentation#getTabList(IPresentablePart)}. Any other use of this control is
-     * unsupported. This may return a placeholder control that is only
-     * meaningful in the context of <code>getTabList</code>.
-     * 
-     * @return the part's control (not null)
-     */
-    public Control getControl();
-
-    /**
-	 * Get a property from the part's arbitrary property set.
-	 * <p>
-	 * <b>Note:</b> this is a different set of properties than the ones covered
-	 * by the PROP_* constants.
-	 * </p>
-	 * 
-	 * @param key
-	 *            The property key to retrieve. Must not be <code>null</code>.
-	 * @return the property, or <code>null</code> if that property is not set.
-	 * @since 3.3
-	 */
-	public String getPartProperty(String key);
-	
-	/**
-	 * Add a listener for changes in the arbitrary properties set.
-	 * <p>
-	 * <b>Note:</b> this is a different set of properties than the ones covered
-	 * by the PROP_* constants.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            Must not be <code>null</code>.
-	 * @since 3.3
-	 */
-	public void addPartPropertyListener(IPropertyChangeListener listener);
-	
-	/**
-	 * Remove a change listener from the arbitrary properties set.
-	 * <p>
-	 * <b>Note:</b> this is a different set of properties than the ones covered
-	 * by the PROP_* constants.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            Must not be <code>null</code>.
-	 * @since 3.3
-	 */
-	public void removePartPropertyListener(IPropertyChangeListener listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentationSerializer.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentationSerializer.java
deleted file mode 100644
index dc73e53..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPresentationSerializer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-/**
- * This interface is given to a StackPresentation when it is loading or saving
- * its state.
- * 
- * Not intended to be implemented by clients
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPresentationSerializer {
-    /**
-     * Returns a unique identifier for the given part. The identifier can later
-     * be used to restore the original part by calling getPart(...). This identifier 
-     * is guaranteed to be unique within a particular StackPresentation. However, 
-     * the same part may be assigned a different ID each time the presentation is saved. 
-     * 
-     * @param part a part to be identified (not null)
-     * @return a unique identifier for the part (not null)
-     */
-    public String getId(IPresentablePart part);
-
-    /**
-     * Returns a presentable part, given an id that was generated when the presentation 
-     * was saved.
-     * 
-     * @param id an ID that was generated by getId(IPresentablePart) when the presentation
-     * was saved
-     * @return the presentable part associated with the given id, or null if none. Note
-     * that even if the ID was valid when the presentation was saved, it may not
-     * be valid when the presentation is restored. Callers must be prepared
-     * to handle a null result.
-     */
-    public IPresentablePart getPart(String id);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IStackPresentationSite.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IStackPresentationSite.java
deleted file mode 100644
index 7eb858c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IStackPresentationSite.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Chris Gross chris.gross@us.ibm.com Bug 107443
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.swt.graphics.Point;
-
-/**
- * Represents the main interface between a StackPresentation and the workbench.
- * 
- * Not intended to be implemented by clients.
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IStackPresentationSite {
-    public static int STATE_MINIMIZED = 0;
-
-    public static int STATE_MAXIMIZED = 1;
-
-    public static int STATE_RESTORED = 2;
-
-    /**
-     * Sets the state of the container. Called by the presentation when the
-     * user causes the the container to be minimized, maximized, etc.
-     * 
-     * @param newState one of the STATE_* constants
-     */
-    public void setState(int newState);
-
-    /**
-     * Returns the current state of the site (one of the STATE_* constants)
-     * 
-     * @return the current state of the site (one of the STATE_* constants)
-     */
-    public int getState();
-
-    /**
-     * Returns true iff the site supports the given state
-     * 
-     * @param state one of the STATE_* constants, above
-     * @return true iff the site supports the given state
-     */
-    public boolean supportsState(int state);
-
-    /**
-     * Begins dragging the given part
-     * 
-     * @param beingDragged the part to drag (not null)
-     * @param initialPosition the mouse position at the time of the initial mousedown 
-     * (display coordinates, not null)
-     * @param keyboard true iff the drag was initiated via mouse dragging,
-     * and false if the drag may be using the keyboard
-     */
-    public void dragStart(IPresentablePart beingDragged, Point initialPosition,
-            boolean keyboard);
-
-    /**
-     * Closes the given set of parts.
-     * 
-     * @param toClose the set of parts to close (Not null. All of the entries must be non-null)
-     */
-    public void close(IPresentablePart[] toClose);
-
-    /**
-     * Begins dragging the entire stack of parts
-     * 
-     * @param initialPosition the mouse position at the time of the initial mousedown (display coordinates, 
-     * not null)
-     * @param keyboard true iff the drag was initiated via mouse dragging,
-     * and false if the drag may be using the keyboard	 
-     */
-    public void dragStart(Point initialPosition, boolean keyboard);
-
-    /**
-     * Returns true iff this site will allow the given part to be closed
-     * 
-     * @param toClose part to test (not null)
-     * @return true iff the part may be closed
-     */
-    public boolean isCloseable(IPresentablePart toClose);
-
-    /**
-     * Returns true iff the given part can be dragged. If this
-     * returns false, the given part should not trigger a drag.
-     * 
-     * @param toMove part to test (not null)
-     * @return true iff this part is a valid drag source
-     */
-    public boolean isPartMoveable(IPresentablePart toMove);
-
-    /**
-     * Returns true iff this entire stack can be dragged
-     * 
-     * @return tre iff the stack can be dragged
-     */
-    public boolean isStackMoveable();
-
-    /**
-     * Makes the given part active
-     * 
-     * @param toSelect
-     */
-    public void selectPart(IPresentablePart toSelect);
-
-    /**
-     * Returns the currently selected part or null if the stack is empty 
-     * 
-     * @return the currently selected part or null if the stack is empty
-     */
-    public IPresentablePart getSelectedPart();
-
-    /**
-     * Adds system actions to the given menu manager. The site may
-     * make use of the following group ids:
-     * <ul>
-     * <li><code>close</code>, for close actions</li>
-     * <li><code>size</code>, for resize actions</li>
-     * <li><code>misc</code>, for miscellaneous actions</li>
-     * </ul>
-     * The presentation can control the insertion position by creating
-     * these group IDs where appropriate. 
-     * 
-     * @param menuManager the menu manager to populate
-     */
-    public void addSystemActions(IMenuManager menuManager);
-    
-    /**
-     * Notifies the workbench that the preferred size of the presentation has
-     * changed. Hints to the workbench that it should trigger a layout at the
-     * next opportunity.
-     * 
-     * @since 3.1
-     */
-    public void flushLayout();
-    
-    /**
-     * Returns the list of presentable parts currently in this site
-     * 
-     * @return the list of presentable parts currently in this site
-     * @since 3.1
-     */
-    public IPresentablePart[] getPartList();
-    
-    /**
-	 * Returns the property with the given id or <code>null</code>. Folder
-	 * properties are an extensible mechanism for perspective authors to
-	 * customize the appearance of view stacks. The list of customizable
-	 * properties is determined by the presentation factory, and set in the
-	 * perspective factory.
-	 * 
-	 * @param id
-	 *            Must not be <code>null</code>.
-	 * @return property value, or <code>null</code> if the property is not
-	 *         set.
-	 * @since 3.3
-	 */
-    public String getProperty(String id);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/PresentationUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/PresentationUtil.java
deleted file mode 100644
index b3f3948..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/PresentationUtil.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.internal.dnd.DragUtil;
-
-/**
- * Contains various utility methods for Presentation authors
- * 
- * @since 3.0
- */
-public class PresentationUtil {
-    private static Point anchor;
-
-    private final static int HYSTERESIS = 16;
-    
-    private static int initialMouseButton = 0;
-
-    private final static String LISTENER_ID = PresentationUtil.class.getName()
-            + ".dragListener"; //$NON-NLS-1$
-
-    private static Event dragEvent;
-
-    private static Listener currentListener = null;
-
-    private static Control dragSource;
-
-    private static Listener dragListener = new Listener() {
-        public void handleEvent(Event event) {
-            dragEvent = event;
-            if (dragSource != event.widget) {
-                dragSource = null;
-                currentListener = null;
-            }
-        }
-    };
-
-    /**
-     * Returns whether the mouse has moved enough to warrant
-     * opening a tracker.
-     */
-    private static boolean hasMovedEnough(Event event) {
-        return Geometry.distanceSquared(DragUtil.getEventLoc(event), anchor) >= HYSTERESIS
-                * HYSTERESIS;
-    }
-
-    private static Listener moveListener = new Listener() {
-        public void handleEvent(Event event) {
-            handleMouseMove(event);
-        }
-    };
-
-    private static Listener clickListener = new Listener() {
-        public void handleEvent(Event e) {
-            handleMouseClick(e);
-        }
-    };
-
-    private static Listener mouseDownListener = new Listener() {
-        public void handleEvent(Event event) {
-            if (event.widget instanceof Control) {
-            	// Remember the button that started the drag so we
-            	// can forward it on the call to the 'externalDragListener'
-            	initialMouseButton = event.button;
-            	
-                dragSource = (Control) event.widget;
-                currentListener = (Listener) dragSource.getData(LISTENER_ID);
-                anchor = DragUtil.getEventLoc(event);
-
-                if (dragEvent != null && (dragEvent.widget != dragSource)) {
-                    dragEvent = null;
-                }
-            }
-        }
-    };
-
-    private static void handleMouseClick(Event event) {
-        cancelDrag();
-    }
-
-    private static void handleMouseMove(Event e) {
-        if (currentListener != null && dragEvent != null && hasMovedEnough(e)) {
-            if (dragSource != null && !dragSource.isDisposed()
-                    && dragSource == e.widget) {
-                Event de = dragEvent;
-                
-                // cache the current value so we can restore it later
-                int originalMouseButton = de.button;
-                
-                // Update the button field so that the drag listener
-                // can detect whether or not it's a 'right button' drag
-                de.button = initialMouseButton;
-                
-                Listener l = currentListener;
-                cancelDrag();
-                l.handleEvent(de);
-                
-                // Restore the event's state so that other listeners see 
-                // the original values
-                de.button = originalMouseButton;
-            } else {
-                cancelDrag();
-            }
-        }
-    }
-
-    private static void cancelDrag() {
-        currentListener = null;
-        dragEvent = null;
-        dragSource = null;
-
-        initialMouseButton = 0;
-    }
-
-    /**
-     * Adds a drag listener to the given control. The behavior is very similar
-     * to control.addListener(SWT.DragDetect, dragListener), however the listener
-     * attached by this method is less sensitive. The drag event is only fired
-     * once the user moves the cursor more than HYSTERESIS pixels. 
-     * <p>
-     * This is useful for registering a listener that will trigger an editor or
-     * view drag, since an overly sensitive drag listener can cause users to accidentally
-     * drag views when trying to select a tab.</p>
-     * <p>
-     * Currently, only one such drag listener can be registered at a time. </p> 
-     * 
-     * @param control the control containing the drag listener
-     * @param externalDragListener the drag listener to attach
-     */
-    public static void addDragListener(Control control,
-            Listener externalDragListener) {
-        control.addListener(SWT.DragDetect, dragListener);
-        control.addListener(SWT.MouseUp, clickListener);
-        control.addListener(SWT.MouseDoubleClick, clickListener);
-        control.addListener(SWT.MouseDown, mouseDownListener);
-        control.addListener(SWT.MouseMove, moveListener);
-        control.setData(LISTENER_ID, externalDragListener);
-    }
-
-    /**
-     * Removes a drag listener that was previously attached using addDragListener
-     * 
-     * @param control the control containing the drag listener
-     * @param externalDragListener the drag listener to remove
-     */
-    public static void removeDragListener(Control control,
-            Listener externalDragListener) {
-        control.removeListener(SWT.DragDetect, dragListener);
-        control.removeListener(SWT.MouseUp, clickListener);
-        control.removeListener(SWT.MouseDoubleClick, clickListener);
-        control.removeListener(SWT.MouseDown, mouseDownListener);
-        control.removeListener(SWT.MouseMove, moveListener);
-        control.setData(LISTENER_ID, null);
-        if (externalDragListener == currentListener) {
-            cancelDrag();
-        }
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackDropResult.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackDropResult.java
deleted file mode 100644
index 52cbe4f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackDropResult.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.swt.graphics.Rectangle;
-
-/**
- * This structure describes a drop event that will cause a dragged part
- * to be stacked in a position currently occupied by another part. 
- * 
- * @since 3.0
- */
-public final class StackDropResult {
-
-    private Rectangle snapRectangle;
-
-    private Object cookie;
-
-    /**
-     * Creates a drop result
-     * 
-     * @param snapRectangle region that should be highlighted by the tracking
-     * rectangle (display coordinates) 
-     * @param cookie the presentation may attach an object to this drop result 
-     * in order to identify the drop location. This object will be passed back into the
-     * presentation's add method.
-     */
-    public StackDropResult(Rectangle snapRectangle, Object cookie) {
-        this.snapRectangle = snapRectangle;
-        this.cookie = cookie;
-    }
-
-    /**
-     * Returns a rectangle (screen coordinates) describing the target location
-     * for this drop operation. While dragging, the tracking rectangle will
-     * snap to this position.
-     * 
-     * @return a snap rectangle (not null)
-     */
-    public Rectangle getSnapRectangle() {
-        return snapRectangle;
-    }
-
-    /**
-     * Returns the cookie for this drop result. This object provided by the presentation,
-     * but is remembered by the workbench. It will be given back to the presentation's add
-     * method to indicate that a part is being added as a result of a drop operation.
-     * 
-     * @return the drop cookie for this drop result
-     */
-    public Object getCookie() {
-        return cookie;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackPresentation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackPresentation.java
deleted file mode 100644
index ca6c6da..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/StackPresentation.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.presentations;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.Geometry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.ISizeProvider;
-
-/**
- * This represents an object that can supply trim around a IPresentablePart. 
- * Clients can implement subclasses to provide the appearance for editor workbooks,
- * view folders, fast views, and detached windows.
- * <p>
- * StackPresentations do not store any persistent state and cannot
- * directly make changes to the workbench. They are given an IStackPresentationSite 
- * reference on creation, which allows them to send events and requests to the workbench.
- * However, the workbench is free to ignore these requests. The workbench will call one
- * of the public methods on StackPresentation when (and if) the presentation is expected to 
- * change state. 
- * </p>
- * <p>
- * For example, if the user clicks a button that is intended to close a part, the
- * StackPresentation will send a close request to its site, but should not assume
- * that the part has been closed until the workbench responds with a call 
- * <code>StackPresentation.remove</code>. 
- * </p>
- * 
- * @since 3.0
- */
-public abstract class StackPresentation implements ISizeProvider {
-
-    /**
-     * Inactive state. This is the default state for deselected presentations.
-     */
-    public static final int AS_INACTIVE = 0;
-
-    /**
-     * Activation state indicating that one of the parts in the presentation currently has focus
-     */
-    public static final int AS_ACTIVE_FOCUS = 1;
-
-    /**
-     * Activation state indicating that none of the parts in the presentation have focus, but
-     * one of the parts is being used as the context for global menus and toolbars
-     */
-    public static final int AS_ACTIVE_NOFOCUS = 2;
-
-    /**
-     * The presentation site.
-     */
-    private IStackPresentationSite site;
-
-    /**
-     * Constructs a new stack presentation with the given site.
-     * 
-     * @param stackSite the stack site
-     */
-    protected StackPresentation(IStackPresentationSite stackSite) {
-        Assert.isNotNull(stackSite);
-        site = stackSite;
-    }
-
-    /**
-     * Returns the presentation site (not null).
-     * @return  IStackPresentationSite
-     */
-    protected IStackPresentationSite getSite() {
-        return site;
-    }
-
-    /**
-     * Sets the bounding rectangle for this presentation. 
-     * 
-     * @param bounds new bounding rectangle (not null)
-     */
-    public abstract void setBounds(Rectangle bounds);
-
-    /**
-     * Returns the minimum size for this stack. The stack is prevented
-     * from being resized smaller than this amount, and this is used as
-     * the default size for the stack when it is minimized. Typically,
-     * this is the amount of space required to fit the minimize, close,
-     * and maximize buttons and one tab. 
-     * 
-     * @return the minimum size for this stack (not null)
-     * 
-     * @deprecated replaced by computePreferredSize
-     */
-    public Point computeMinimumSize() {
-        return new Point(0,0);
-    }
-    
-    /*
-     * @see ISizeProvider#getSizeFlags(boolean) 
-     */
-    public int getSizeFlags(boolean width) {
-        boolean hasMaximumSize = getSite().getState() == IStackPresentationSite.STATE_MINIMIZED; 
-        
-        return SWT.MIN | (hasMaximumSize ? SWT.MAX : 0);
-    }
-    
-    /*
-     * @see ISizeProvider#computePreferredSize(boolean, int, int, int)
-     */
-    public int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredResult) {
-        int minSize = Geometry.getCoordinate(computeMinimumSize(), width);
-        
-    	if (getSite().getState() == IStackPresentationSite.STATE_MINIMIZED || preferredResult < minSize) {
-    	    return minSize;
-    	}
-    	
-    	return preferredResult;
-    }
-    
-    /**
-     * Disposes all SWT resources being used by the stack. This is the
-     * last method that will be invoked on the stack. 
-     */
-    public abstract void dispose();
-
-    /**
-     * This is invoked to notify the presentation that its activation
-     * state has changed. StackPresentations can have three possible activation
-     * states (see the AS_* constants above)
-     * 
-     * @param newState one of AS_INACTIVE, AS_ACTIVE, or AS_ACTIVE_NOFOCUS
-     */
-    public abstract void setActive(int newState);
-
-    /**
-     * This causes the presentation to become visible or invisible. 
-     * When a presentation is invisible, it must not respond to user
-     * input or modify its parts. For example, a presentations will 
-     * be made invisible if it belongs to a perspective and the user
-     * switches to another perspective.
-     * 
-     * @param isVisible the state to set visibility to
-     * 
-     * @since 3.0
-     */
-    public abstract void setVisible(boolean isVisible);
-
-    /**
-     * Sets the state of the presentation. That is, notifies the presentation
-     * that is has been minimized, maximized, or restored. Note that this method
-     * is the only way that a presentation is allowed to change its state.
-     * <p>
-     * If a presentation wishes to minimize itself, it must call setState
-     * on its associated IStackPresentationSite. If the site chooses to respond
-     * to the state change, it will call this method at the correct time.
-     * The presentation should not call this method directly. 
-     * </p>
-     * 
-     * @param state one of the IStackPresentationSite.STATE_* constants.
-     */
-    public abstract void setState(int state);
-
-    /**
-     * Returns the control for this presentation
-     * 
-     * @return the control for this presentation (not null)
-     */
-    public abstract Control getControl();
-
-    /**
-     * Adds the given part to the stack. The presentation is free to determine
-     * where the part should be inserted. If the part is being inserted as the
-     * result of a drag/drop operation, it will be given a cookie
-     * identifying the drop location. Has no effect if an identical part is
-     * already in the presentation.
-     * 
-     * @param newPart the new part to add (not null)
-     * @param cookie an identifier for a drop location, or null. When the presentation
-     * attaches a cookie to a StackDropResult, that cookie is passed back into
-     * addPart when a part is actually dropped in that location.
-     */
-    public abstract void addPart(IPresentablePart newPart, Object cookie);
-
-    /**
-     * Removes the given part from the stack.
-     * 
-     * @param oldPart the part to remove (not null)
-     */
-    public abstract void removePart(IPresentablePart oldPart);
-
-    /**
-     * Moves a part to a new location as the result of a drag/drop
-     * operation within this presentation.
-     * 
-     * @param toMove a part that already belongs to this presentation
-     * @param cookie a drop cookie returned by <code>StackPresentation#dragOver</code> 
-     * @since 3.1
-     */
-    public void movePart(IPresentablePart toMove, Object cookie) {
-        removePart(toMove);
-        addPart(toMove, cookie);
-        
-        if (getSite().getSelectedPart() == toMove) {
-            selectPart(toMove);
-            toMove.setFocus();
-        }
-    }
-    
-    /**
-     * Brings the specified part to the foreground. This should not affect
-     * the current focus.
-     * 
-     * @param toSelect the new active part (not null)
-     */
-    public abstract void selectPart(IPresentablePart toSelect);
-
-    /**
-     * This method is invoked whenever a part is dragged over the stack's control.
-     * It returns a StackDropResult if and only if the part may be dropped in this
-     * location.
-     *
-     * @param currentControl the control being dragged over
-     * @param location cursor location (display coordinates)
-     * @return a StackDropResult or null if the presentation does not have
-     * a drop target in this location.
-     */
-    public abstract StackDropResult dragOver(Control currentControl,
-            Point location);
-
-    /**
-     * Instructs the presentation to display the system menu
-     *
-     */
-    public abstract void showSystemMenu();
-
-    /**
-     * Instructs the presentation to display the pane menu 
-     */
-    public abstract void showPaneMenu();
-
-    /**
-     * Instructs the presentation to display a list of all parts in the stack, and
-     * allow the user to change the selection using the keyboard.
-     */
-    public void showPartList() {
-
-    }
-
-    /**
-     * Saves the state of this presentation to the given memento.
-     * 
-     * @param context object that can be used to generate unique IDs for IPresentableParts (this
-     * may be a temporary object - the presentation should not keep any references to it)
-     * @param memento memento where the data will be saved
-     */
-    public void saveState(IPresentationSerializer context, IMemento memento) {
-
-    }
-
-    /**
-     * Restores the state of this presentation to a previously saved state.
-     * 
-     * @param context object that can be used to find IPresentableParts given string IDs (this
-     * may be a temporary object - the presentation should not keep any references to it)
-     * @param memento memento where the data will be saved
-     */
-    public void restoreState(IPresentationSerializer context, IMemento memento) {
-
-    }
-
-    /**
-     * Returns the tab-key traversal order for the given <code>IPresentablePart</code>.
-     * 
-     * @param part the part
-     * @return the tab-key traversal order
-     */
-    public abstract Control[] getTabList(IPresentablePart part);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/WorkbenchPresentationFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/WorkbenchPresentationFactory.java
deleted file mode 100644
index 3539c45..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/WorkbenchPresentationFactory.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.presentations;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultMultiTabListener;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultSimpleTabListener;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultThemeListener;
-import org.eclipse.ui.internal.presentations.defaultpresentation.EmptyTabFolder;
-import org.eclipse.ui.internal.presentations.util.PresentablePartFolder;
-import org.eclipse.ui.internal.presentations.util.StandardEditorSystemMenu;
-import org.eclipse.ui.internal.presentations.util.StandardViewSystemMenu;
-import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
-
-/**
- * The default presentation factory for the Workbench.
- * 
- * @since 3.0
- */
-public class WorkbenchPresentationFactory extends AbstractPresentationFactory {
-
-	// don't reset these dynamically, so just keep the information static.
-	// see bug:
-	// 75422 [Presentations] Switching presentation to R21 switches immediately,
-	// but only partially
-	private static int editorTabPosition = PlatformUI.getPreferenceStore()
-			.getInt(IWorkbenchPreferenceConstants.EDITOR_TAB_POSITION);
-	private static int viewTabPosition = PlatformUI.getPreferenceStore()
-			.getInt(IWorkbenchPreferenceConstants.VIEW_TAB_POSITION);
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.AbstractPresentationFactory#createEditorPresentation(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.ui.presentations.IStackPresentationSite)
-	 */
-	public StackPresentation createEditorPresentation(Composite parent,
-			IStackPresentationSite site) {
-		DefaultTabFolder folder = new DefaultTabFolder(parent,
-				editorTabPosition | SWT.BORDER, site
-						.supportsState(IStackPresentationSite.STATE_MINIMIZED),
-				site.supportsState(IStackPresentationSite.STATE_MAXIMIZED));
-
-		/*
-		 * Set the minimum characters to display, if the preference is something
-		 * other than the default. This is mainly intended for RCP applications
-		 * or for expert users (i.e., via the plug-in customization file).
-		 * 
-		 * Bug 32789.
-		 */
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		if (store
-				.contains(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS)) {
-			final int minimumCharacters = store
-					.getInt(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS);
-			if (minimumCharacters >= 0) {
-				folder.setMinimumCharacters(minimumCharacters);
-			}
-		}
-
-		PresentablePartFolder partFolder = new PresentablePartFolder(folder);
-
-		TabbedStackPresentation result = new TabbedStackPresentation(site,
-				partFolder, new StandardEditorSystemMenu(site));
-
-		DefaultThemeListener themeListener = new DefaultThemeListener(folder,
-				result.getTheme());
-		result.getTheme().addListener(themeListener);
-
-		new DefaultMultiTabListener(result.getApiPreferences(),
-				IWorkbenchPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS, folder);
-
-		new DefaultSimpleTabListener(result.getApiPreferences(),
-				IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
-				folder);
-
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.AbstractPresentationFactory#createViewPresentation(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.ui.presentations.IStackPresentationSite)
-	 */
-	public StackPresentation createViewPresentation(Composite parent,
-			IStackPresentationSite site) {
-
-		DefaultTabFolder folder = new DefaultTabFolder(parent, viewTabPosition
-				| SWT.BORDER, site
-				.supportsState(IStackPresentationSite.STATE_MINIMIZED), site
-				.supportsState(IStackPresentationSite.STATE_MAXIMIZED));
-
-		final IPreferenceStore store = PlatformUI.getPreferenceStore();
-		final int minimumCharacters = store
-				.getInt(IWorkbenchPreferenceConstants.VIEW_MINIMUM_CHARACTERS);
-		if (minimumCharacters >= 0) {
-			folder.setMinimumCharacters(minimumCharacters);
-		}
-
-		PresentablePartFolder partFolder = new PresentablePartFolder(folder);
-
-		folder.setUnselectedCloseVisible(false);
-		folder.setUnselectedImageVisible(true);
-
-		TabbedStackPresentation result = new TabbedStackPresentation(site,
-				partFolder, new StandardViewSystemMenu(site));
-
-		DefaultThemeListener themeListener = new DefaultThemeListener(folder,
-				result.getTheme());
-		result.getTheme().addListener(themeListener);
-
-		new DefaultSimpleTabListener(result.getApiPreferences(),
-				IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
-				folder);
-
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.presentations.AbstractPresentationFactory#createStandaloneViewPresentation(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.ui.presentations.IStackPresentationSite, boolean)
-	 */
-	public StackPresentation createStandaloneViewPresentation(Composite parent,
-			IStackPresentationSite site, boolean showTitle) {
-
-		if (showTitle) {
-			return createViewPresentation(parent, site);
-		}
-		EmptyTabFolder folder = new EmptyTabFolder(parent, true);
-		TabbedStackPresentation presentation = new TabbedStackPresentation(
-				site, folder, new StandardViewSystemMenu(site));
-
-		return presentation;
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/package.html
deleted file mode 100755
index 49a2577..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/package.html
+++ /dev/null
@@ -1,19 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Classes for contributing presentations to eclipse.</p>
-<h2>
-Package Specification</h2>
-<p>
-This package has the presentation API support, for customizing the
-presentation of stacks for view and editors.
-</p>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java
deleted file mode 100644
index 68d8323..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/DeferredTreeContentManager.java
+++ /dev/null
@@ -1,479 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.progress.ProgressMessages;
-import org.eclipse.ui.internal.util.Util;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * The DeferredContentManager is a class that helps an ITreeContentProvider get
- * its deferred input.
- * 
- * <b>NOTE</b> AbstractTreeViewer#isExpandable may need to be implemented in
- * AbstractTreeViewer subclasses with deferred content that use filtering as a
- * call to #getChildren may be required to determine the correct state of the
- * expanding control.
- * 
- * AbstractTreeViewers which use this class may wish to sacrifice accuracy of
- * the expandable state indicator for the performance benefits of deferring
- * content.
- * 
- * @see IDeferredWorkbenchAdapter
- * @since 3.0
- */
-public class DeferredTreeContentManager {
-
-	AbstractTreeViewer treeViewer;
-
-	IWorkbenchSiteProgressService progressService;
-
-	private IJobChangeListener updateCompleteListener;
-
-	/**
-	 * The DeferredContentFamily is a class used to keep track of a
-	 * manager-object pair so that only jobs scheduled by the receiver are
-	 * cancelled by the receiver.
-	 * 
-	 * @since 3.1
-	 * 
-	 */
-	class DeferredContentFamily {
-		protected DeferredTreeContentManager manager;
-		protected Object element;
-
-		/**
-		 * Create a new instance of the receiver to define a family for object
-		 * in a particular scheduling manager.
-		 * 
-		 * @param schedulingManager
-		 * @param object
-		 */
-		DeferredContentFamily(DeferredTreeContentManager schedulingManager,
-				Object object) {
-			this.manager = schedulingManager;
-			this.element = object;
-		}
-	}
-
-	/**
-	 * Create a new instance of the receiver using the supplied content provider
-	 * and viewer. Run any jobs using the site.
-	 * 
-	 * @param provider
-	 * @param viewer
-	 * @param site
-	 * @deprecated in 3.4. provider is not used by this class
-	 */
-	public DeferredTreeContentManager(ITreeContentProvider provider,
-			AbstractTreeViewer viewer, IWorkbenchPartSite site) {
-		this(viewer, site);
-	}
-
-	/**
-	 * Create a new instance of the receiver using the supplied content provider
-	 * and viewer.
-	 * 
-	 * @param provider
-	 *            The content provider that will be updated
-	 * @param viewer
-	 *            The tree viewer that the results are added to
-	 * @deprecated in 3.4. provider is not used by this class
-	 */
-	public DeferredTreeContentManager(ITreeContentProvider provider,
-			AbstractTreeViewer viewer) {
-		this(viewer);
-	}
-
-	/**
-	 * Create a new instance of the receiver using the supplied content provider
-	 * and viewer. Run any jobs using the site.
-	 * 
-	 * @param viewer
-	 * @param site
-	 * 
-	 * @since 3.4
-	 */
-	public DeferredTreeContentManager(AbstractTreeViewer viewer,
-			IWorkbenchPartSite site) {
-		this(viewer);
-		Object siteService = Util.getAdapter(site,
-				IWorkbenchSiteProgressService.class);
-		if (siteService != null) {
-			progressService = (IWorkbenchSiteProgressService) siteService;
-		}
-	}
-
-	/**
-	 * Create a new instance of the receiver using the supplied content provider
-	 * and viewer.
-	 * 
-	 * @param viewer
-	 *            The tree viewer that the results are added to
-	 * 
-	 * @since 3.4
-	 */
-	public DeferredTreeContentManager(AbstractTreeViewer viewer) {
-		treeViewer = viewer;
-	}
-
-	/**
-	 * Provides an optimized lookup for determining if an element has children.
-	 * This is required because elements that are populated lazilly can't answer
-	 * <code>getChildren</code> just to determine the potential for children.
-	 * Throw an AssertionFailedException if element is null.
-	 * 
-	 * @param element
-	 *            The Object being tested. This should not be <code>null</code>.
-	 * @return boolean <code>true</code> if there are potentially children.
-	 * @throws RuntimeException
-	 *             if the element is null.
-	 */
-	public boolean mayHaveChildren(Object element) {
-		Assert.isNotNull(element,
-				ProgressMessages.DeferredTreeContentManager_NotDeferred);
-		IDeferredWorkbenchAdapter adapter = getAdapter(element);
-		return adapter != null && adapter.isContainer();
-	}
-
-	/**
-	 * Returns the child elements of the given element, or in the case of a
-	 * deferred element, returns a placeholder. If a deferred element is used, a
-	 * job is created to fetch the children in the background.
-	 * 
-	 * @param parent
-	 *            The parent object.
-	 * @return Object[] or <code>null</code> if parent is not an instance of
-	 *         IDeferredWorkbenchAdapter.
-	 */
-	public Object[] getChildren(final Object parent) {
-		IDeferredWorkbenchAdapter element = getAdapter(parent);
-		if (element == null) {
-			return null;
-		}
-		PendingUpdateAdapter placeholder = createPendingUpdateAdapter();
-		startFetchingDeferredChildren(parent, element, placeholder);
-		return new Object[] { placeholder };
-	}
-
-	/**
-	 * Factory method for creating the pending update adapter representing the
-	 * placeholder node. Subclasses may override.
-	 * 
-	 * @return a pending update adapter
-	 * @since 3.2
-	 */
-	protected PendingUpdateAdapter createPendingUpdateAdapter() {
-		return new PendingUpdateAdapter();
-	}
-
-	/**
-	 * Return the IDeferredWorkbenchAdapter for element or the element if it is
-	 * an instance of IDeferredWorkbenchAdapter. If it does not exist return
-	 * null.
-	 * 
-	 * @param element
-	 * @return IDeferredWorkbenchAdapter or <code>null</code>
-	 */
-	protected IDeferredWorkbenchAdapter getAdapter(Object element) {
-		return (IDeferredWorkbenchAdapter) Util.getAdapter(element,
-				IDeferredWorkbenchAdapter.class);
-	}
-
-	/**
-	 * Starts a job and creates a collector for fetching the children of this
-	 * deferred adapter. If children are waiting to be retrieved for this parent
-	 * already, that job is cancelled and another is started.
-	 * 
-	 * @param parent
-	 *            The parent object being filled in,
-	 * @param adapter
-	 *            The adapter being used to fetch the children.
-	 * @param placeholder
-	 *            The adapter that will be used to indicate that results are
-	 *            pending.
-	 */
-	protected void startFetchingDeferredChildren(final Object parent,
-			final IDeferredWorkbenchAdapter adapter,
-			final PendingUpdateAdapter placeholder) {
-		final IElementCollector collector = createElementCollector(parent,
-				placeholder);
-		// Cancel any jobs currently fetching children for the same parent
-		// instance.
-		cancel(parent);
-		String jobName = getFetchJobName(parent, adapter);
-		Job job = new Job(jobName) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus run(IProgressMonitor monitor) {
-				adapter.fetchDeferredChildren(parent, collector, monitor);
-				if (monitor.isCanceled()) {
-					return Status.CANCEL_STATUS;
-				}
-				return Status.OK_STATUS;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.jobs.Job#belongsTo(java.lang.Object)
-			 */
-			public boolean belongsTo(Object family) {
-				if (family instanceof DeferredContentFamily) {
-					DeferredContentFamily contentFamily = (DeferredContentFamily) family;
-					if (contentFamily.manager == DeferredTreeContentManager.this) {
-						return isParent(contentFamily, parent);
-					}
-				}
-				return false;
-
-			}
-
-			/**
-			 * Check if the parent of element is equal to the parent used in
-			 * this job.
-			 * 
-			 * @param family
-			 *            The DeferredContentFamily that defines a potential
-			 *            ancestor of the current parent in a particualr
-			 *            manager.
-			 * @param child
-			 *            The object to check against.
-			 * @return boolean <code>true</code> if the child or one of its
-			 *         parents are the same as the element of the family.
-			 */
-			private boolean isParent(DeferredContentFamily family, Object child) {
-				if (family.element.equals(child)) {
-					return true;
-				}
-				IWorkbenchAdapter workbenchAdapter = getWorkbenchAdapter(child);
-				if (workbenchAdapter == null) {
-					return false;
-				}
-				Object elementParent = workbenchAdapter.getParent(child);
-				if (elementParent == null) {
-					return false;
-				}
-				return isParent(family, elementParent);
-			}
-
-			/**
-			 * Get the workbench adapter for the element.
-			 * 
-			 * @param element
-			 *            The object we are adapting to.
-			 */
-			private IWorkbenchAdapter getWorkbenchAdapter(Object element) {
-				return (IWorkbenchAdapter) Util.getAdapter(element,
-						IWorkbenchAdapter.class);
-			}
-		};
-		job.addJobChangeListener(new JobChangeAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-			 */
-			public void done(IJobChangeEvent event) {
-				runClearPlaceholderJob(placeholder);
-			}
-		});
-		job.setRule(adapter.getRule(parent));
-		if (progressService == null) {
-			job.schedule();
-		} else {
-			progressService.schedule(job);
-		}
-	}
-
-	/**
-	 * Returns a name to use for the job that fetches children of the given
-	 * parent. Subclasses may override. Default job name is parent's label.
-	 * 
-	 * @param parent
-	 *            parent that children are to be fetched for
-	 * @param adapter
-	 *            parent's deferred adapter
-	 * @return job name
-	 */
-	protected String getFetchJobName(Object parent,
-			IDeferredWorkbenchAdapter adapter) {
-		return NLS.bind(
-				ProgressMessages.DeferredTreeContentManager_FetchingName,
-				adapter.getLabel(parent));
-	}
-
-	/**
-	 * Create a UIJob to add the children to the parent in the tree viewer.
-	 * 
-	 * @param parent
-	 * @param children
-	 * @param monitor
-	 */
-	protected void addChildren(final Object parent, final Object[] children,
-			IProgressMonitor monitor) {
-		WorkbenchJob updateJob = new WorkbenchJob(
-				ProgressMessages.DeferredTreeContentManager_AddingChildren) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus runInUIThread(IProgressMonitor updateMonitor) {
-				// Cancel the job if the tree viewer got closed
-				if (treeViewer.getControl().isDisposed()
-						|| updateMonitor.isCanceled()) {
-					return Status.CANCEL_STATUS;
-				}
-				treeViewer.add(parent, children);
-				return Status.OK_STATUS;
-			}
-		};
-		updateJob.setSystem(true);
-		updateJob.schedule();
-
-	}
-
-	/**
-	 * Return whether or not the element is or adapts to an
-	 * IDeferredWorkbenchAdapter.
-	 * 
-	 * @param element
-	 * @return boolean <code>true</code> if the element is an
-	 *         IDeferredWorkbenchAdapter
-	 */
-	public boolean isDeferredAdapter(Object element) {
-		return getAdapter(element) != null;
-	}
-
-	/**
-	 * Run a job to clear the placeholder. This is used when the update for the
-	 * tree is complete so that the user is aware that no more updates are
-	 * pending.
-	 * 
-	 * @param placeholder
-	 */
-	protected void runClearPlaceholderJob(final PendingUpdateAdapter placeholder) {
-		if (placeholder.isRemoved() || !PlatformUI.isWorkbenchRunning()) {
-			return;
-		}
-		// Clear the placeholder if it is still there
-		WorkbenchJob clearJob = new WorkbenchJob(
-				ProgressMessages.DeferredTreeContentManager_ClearJob) {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public IStatus runInUIThread(IProgressMonitor monitor) {
-				if (!placeholder.isRemoved()) {
-					Control control = treeViewer.getControl();
-					if (control.isDisposed()) {
-						return Status.CANCEL_STATUS;
-					}
-					treeViewer.remove(placeholder);
-					placeholder.setRemoved(true);
-				}
-				return Status.OK_STATUS;
-			}
-		};
-		clearJob.setSystem(true);
-		
-		if(updateCompleteListener != null)
-			clearJob.addJobChangeListener(updateCompleteListener);
-		clearJob.schedule();
-	}
-
-	/**
-	 * Cancel all jobs that are fetching content for the given parent or any of
-	 * its children.
-	 * 
-	 * @param parent
-	 */
-	public void cancel(Object parent) {
-		if (parent == null) {
-			return;
-		}
-
-		Job.getJobManager().cancel(new DeferredContentFamily(this, parent));
-	}
-
-	/**
-	 * Create the element collector for the receiver.
-	 * 
-	 * @param parent
-	 *            The parent object being filled in,
-	 * @param placeholder
-	 *            The adapter that will be used to indicate that results are
-	 *            pending.
-	 * @return IElementCollector
-	 */
-	protected IElementCollector createElementCollector(final Object parent,
-			final PendingUpdateAdapter placeholder) {
-		return new IElementCollector() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.progress.IElementCollector#add(java.lang.Object,
-			 *      org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public void add(Object element, IProgressMonitor monitor) {
-				add(new Object[] { element }, monitor);
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.progress.IElementCollector#add(java.lang.Object[],
-			 *      org.eclipse.core.runtime.IProgressMonitor)
-			 */
-			public void add(Object[] elements, IProgressMonitor monitor) {
-				addChildren(parent, elements, monitor);
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.progress.IElementCollector#done()
-			 */
-			public void done() {
-				runClearPlaceholderJob(placeholder);
-			}
-		};
-	}
-	
-	/**
-	 * Add a listener to the job that updates the content after all
-	 * has been loaded by clearing the Pending entry etc.
-	 * @param listener
-	 * @since 3.4
-	 */
-	public void addUpdateCompleteListener(IJobChangeListener listener){
-		updateCompleteListener = listener;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java
deleted file mode 100644
index 59b3c98..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IDeferredWorkbenchAdapter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This adapter interface provides support for lazy initialization of UI workbench elements
- * that are displayed visually. This adapter is used with an associated deferred content provider.
- * 
- * @see DeferredTreeContentManager
- * @since 3.0
- */
-public interface IDeferredWorkbenchAdapter extends IWorkbenchAdapter {
-
-    /**
-     * Called by a job run in a separate thread to fetch the children of this adapter.
-     * The adapter should in return notify of new children via the collector.
-     * This is generally used when a content provider is getting elements.
-     * <p>
-     * It is good practice to check the passed in monitor for cancellation. This will 
-     * provide good responsiveness for cancellation requests made by the user.
-     * </p>
-     * 
-     * @param object the object to fetch the children for
-     * @param collector the collector to notify about new children. Should not
-     * 		be <code>null</code>.
-     * @param  monitor a progress monitor that will never be <code>null<code> to
-     *                   support reporting and cancellation.
-     */
-    public void fetchDeferredChildren(Object object,
-            IElementCollector collector, IProgressMonitor monitor);
-
-    /**
-     * Returns whether this adapter may have children. This is an optimized method
-     * used by content providers to allow showing the [+] expand icon without having
-     * yet fetched the children for the element.
-     * <p>
-     * If <code>false</code> is returned, then the content provider may assume
-     * that this adapter has no children. If <code>true</code> is returned, 
-     * then the job manager may assume that this adapter may have children.
-     * <p>
-     * 
-     * @return <code>true</code>if the adapter may have childen, and <code>false</code>
-     * 	otherwise.
-     */
-    public boolean isContainer();
-
-    /**
-     * Returns the rule used to schedule the deferred fetching of children for this adapter.
-     * 
-     * @param object the object whose children are being fetched
-     * @return the scheduling rule. May be <code>null</code>.
-     * @see org.eclipse.core.runtime.jobs.Job#setRule(ISchedulingRule)
-     */
-    public ISchedulingRule getRule(Object object);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IElementCollector.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IElementCollector.java
deleted file mode 100644
index 5ba1d7c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IElementCollector.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * IElementCollector is a type that allows for the incremental update of a
- * collection of objects. This used for updating trees incrementally with
- * a progress monitor so that the update can be reported.
- * 
- * @see org.eclipse.ui.progress.IDeferredWorkbenchAdapter
- * @see org.eclipse.ui.progress.DeferredTreeContentManager
- * @since 3.0
- */
-public interface IElementCollector {
-    /**
-     * Add the element to the IElementCollector. Send any progress information
-     * to monitor.
-     * 
-     * @param element
-     *            The element being added
-     * @param monitor
-     *            The monitor to send updates to.
-     */
-    public void add(Object element, IProgressMonitor monitor);
-
-    /**
-     * Add the elements to the IElementCollector. Send any progress information
-     * to monitor.
-     * 
-     * @param elements
-     *            The elements being added
-     * @param monitor
-     *            The monitor to send updates to.
-     */
-    public void add(Object[] elements, IProgressMonitor monitor);
-
-    /**
-     * The element collection is done. Clean up any temporary state.
-     *  
-     */
-    public void done();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IJobRunnable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IJobRunnable.java
deleted file mode 100644
index b6a0788..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IJobRunnable.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * Interface for runnables that can be run as jobs.
- * 
- * @since 3.3
- */
-public interface IJobRunnable {
-
-	/**
-	 * Executes this runnable. Returns the result of the execution.
-	 * <p>
-	 * The provided monitor can be used to report progress and respond to
-	 * cancellation. If the progress monitor has been canceled, the runnable should
-	 * finish its execution at the earliest convenience and return a result
-	 * status of severity <code>IStatus.CANCEL</code>. The singleton cancel
-	 * status <code>Status.CANCEL_STATUS</code> can be used for this purpose.
-	 * <p>
-	 * 
-	 * @param monitor
-	 *            the monitor to be used for reporting progress and responding
-	 *            to cancelation. The monitor is never <code>null</code>
-	 * @return resulting status of the run. The result must not be
-	 *         <code>null</code>
-	 */
-	public IStatus run(IProgressMonitor monitor);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants.java
deleted file mode 100644
index 48a9379..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressConstants.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Constants relating to progress UI functionality of the workbench plug-in.
- * <p>
- * The four constants define property keys that are used to associate
- * UI related information with Jobs (<code>org.eclipse.core.runtime.jobs.Job</code>).
- * 
- * @see org.eclipse.core.runtime.jobs.Job#setProperty
- * @since 3.0
- */
-public interface IProgressConstants {
-
-    /**
-     * Common prefix for properties defined in this interface.
-     */
-    static final String PROPERTY_PREFIX = PlatformUI.PLUGIN_ID
-            + ".workbench.progress"; //$NON-NLS-1$
-
-    /**
-     * This property provides a hint to the progress UI to keep Jobs 
-     * in the UI after they have finished. This can be used to communicate results of a Job
-     * back to the user.
-     * <p>
-     * The property must be of type <code>Boolean</code> and the hint is used
-     * if its value is <code>true</code>.
-     * </p>
-     */
-    public static final QualifiedName KEEP_PROPERTY = new QualifiedName(
-            PROPERTY_PREFIX, "keep"); //$NON-NLS-1$
-
-    /** 
-     * The KEEPONE_PROPERTY is an extension to the KEEP_PROPERTY, that provides a hint
-     * to the progress UI to ensure that only a single Job of a Job family is kept in the
-     * set of kept Jobs. That is, whenever a Job that has the KEEPONE_PROPERTY starts or finishes,
-     * all other kept Jobs of the same family are removed first.
-     * <p>
-     * Membership to family is determined using a Job's <code>belongsTo</code>
-     * method. The progress service will pass each job that currently exists in the
-     * view to the <code>belongsTo</code> method of a newly added job. Clients who
-     * set the <code>KEEPONE_PROPERTY</code> must implement a <code>belongsTo</code>
-     * method that determines if the passed job is of the same family as their job
-     * and return <code>true</code> if it is.
-     * </p>
-     * <p>
-     * Please note that other Jobs of the same family are only removed if they have finished.
-     * Non finished jobs of the same family are left alone.
-     * </p>
-     **/
-    public static final QualifiedName KEEPONE_PROPERTY = new QualifiedName(
-            PROPERTY_PREFIX, "keepone"); //$NON-NLS-1$
-
-    /**
-     * This property is used to associate an <code>IAction</code> with a Job.
-     * If the Job is shown in the UI, the action might be represented as a button or
-     * hyper link to allow the user to trigger a job specific action, like showing
-     * the Job's results.
-     * <p>
-     * The progress UI will track the enabled state of the action and its tooltip text.
-     * </p>
-     * <p>
-     * If the action implements <code>ActionFactory.IWorkbenchAction</code>, its
-     * <code>dispose</code> method will be called as soon as the Job is finally
-     * removed from the set of kept jobs.
-     * </p>
-     * @see org.eclipse.jface.action.IAction
-     * @see org.eclipse.ui.actions.ActionFactory.IWorkbenchAction
-     **/
-    public static final QualifiedName ACTION_PROPERTY = new QualifiedName(
-            PROPERTY_PREFIX, "action"); //$NON-NLS-1$
-
-    /**
-     * This property is used to associate an <code>ImageDescriptor</code> with a Job.
-     * If the Job is shown in the UI, this descriptor is used to create an icon that
-     * represents the Job.
-     * <p>
-     * Please note, that this property is only used if no <code>ImageDescriptor</code> has been
-     * registered for the Job family with the <code>IProgressService</code>.
-     * </p>
-     * @see org.eclipse.jface.resource.ImageDescriptor
-     * @see org.eclipse.ui.progress.IProgressService
-     **/
-    public static final QualifiedName ICON_PROPERTY = new QualifiedName(
-            PROPERTY_PREFIX, "icon"); //$NON-NLS-1$
-
-    /**
-     * Constant for the progress view id.
-     */
-    public static String PROGRESS_VIEW_ID = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$
-
-    /**
-     * This is a property set on a user job if the user has not decided to
-     * run the job in the background. 
-     * The value is set to <code>true</code> when the job starts and set to 
-     * <code>false</code> if the user subsequently decides to complete the job in the 
-     * background.
-     * <p>
-     * This property is not intended to be set by clients.
-     * </p>
-     * @see org.eclipse.core.runtime.jobs.Job#isUser()
-     */
-    public static final QualifiedName PROPERTY_IN_DIALOG = new QualifiedName(
-            IProgressConstants.PROPERTY_PREFIX, "inDialog"); //$NON-NLS-1$
-    
-    /**
-     * This property provides a hint to the progress UI to not prompt on errors
-     * immediately but instead make the errors available through the progress UI.
-     * <p>
-     * The property must be of type <code>Boolean</code> and the hint is used
-     * if its value is <code>true</code>.
-     * </p>
-     * @since 3.1
-     */
-    public static final QualifiedName NO_IMMEDIATE_ERROR_PROMPT_PROPERTY = new QualifiedName(
-            PROPERTY_PREFIX, "delayErrorPrompt"); //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressService.java
deleted file mode 100644
index 28df879..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IProgressService.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.ProgressProvider;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * The progress service is the primary interface to the workbench progress
- * support. It can be obtained from the workbench and then used to show progress
- * for both background operations and operations that run in the UI thread.
- * <p>
- * All methods on the progress service must be called from the UI thread.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IProgressService service = (IProgressService) getSite().getService(IProgressService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * <p>
- * <strong>NOTE</strong> The progress service must be referenced at least once
- * before it will become the progress provider for the {@link IJobManager} in
- * the workbench. This connection is done lazily so that RCP applications will
- * not have to use the {@link IProgressService} as the {@link ProgressProvider}
- * to the jobs framework if they do not wish to reference it.
- * </p>
- * 
- * @see org.eclipse.ui.IWorkbench#getProgressService()
- * @see IJobManager#setProgressProvider(org.eclipse.core.runtime.jobs.ProgressProvider)
- * @see org.eclipse.ui.services.IServiceLocator#getService(Class)
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IProgressService extends IRunnableContext {
-
-    /**
-     * The time at which an operation becomes considered a long
-     * operation. Used to determine when the busy cursor will 
-     * be replaced with a progress monitor.
-     * @return int 
-     * @see IProgressService#busyCursorWhile(IRunnableWithProgress)
-     */
-    public int getLongOperationTime();
-
-    /**
-     * Register the ImageDescriptor to be the icon used for
-     * all jobs that belong to family within the workbench.
-     * @param icon ImageDescriptor that will be used when the job is being displayed
-     * @param family The family to associate with
-     * @see Job#belongsTo(Object)
-     */
-    public void registerIconForFamily(ImageDescriptor icon, Object family);
-
-    /**
-     * Runs the given operation in the UI thread using the given runnable context.  
-     * The given scheduling rule, if any, will be acquired for the duration of the operation. 
-     * If the rule is not available when this method is called, a progress dialog will be 
-     * displayed that gives users control over the background processes that may 
-     * be blocking the runnable from proceeding.
-     * <p>
-     * This method can act as a wrapper for uses of <tt>IRunnableContext</tt>
-     * where the <tt>fork</tt> parameter was <tt>false</tt>. 
-     * <p>
-     * Note: Running long operations in the UI thread is generally not 
-     * recommended. This can result in the UI becoming unresponsive for
-     * the duration of the operation. Where possible, <tt>busyCursorWhile</tt>
-     * should be used instead.  
-     * </p>
-     * <p>
-     * Modal dialogs should also be avoided in the runnable as there will already
-     * be a modal progress dialog open when this operation runs.
-     * </p>
-     * @see org.eclipse.jface.dialogs.Dialog
-     * @see org.eclipse.swt.SWT#APPLICATION_MODAL
-     * 
-     * @param context The runnable context to run the operation in
-     * @param runnable The operation to run
-     * @param rule A scheduling rule, or <code>null</code>
-     * @throws InvocationTargetException wraps any exception or error which occurs 
-     *  while running the runnable
-     * @throws InterruptedException propagated by the context if the runnable 
-     *  acknowledges cancelation by throwing this exception.
-     *  
-     */
-    public void runInUI(IRunnableContext context,
-            IRunnableWithProgress runnable, ISchedulingRule rule)
-            throws InvocationTargetException, InterruptedException;
-
-    /**
-     * Get the icon that has been registered for a Job by
-     * checking if the job belongs to any of the registered 
-     * families.
-     * @param job
-     * @return Icon or <code>null</code> if there isn't one.
-     * @see IProgressService#registerIconForFamily(ImageDescriptor,Object)
-     */
-    public Image getIconFor(Job job);
-
-    /**
-     * Set the cursor to busy and run the runnable in a non-UI Thread.
-     * The calling thread will be blocked for the duration of the execution
-     * of the supplied runnable.
-     * 
-     * After the cursor has been running for 
-     * <code>getLongOperationTime()</code> replace it with
-     * a ProgressMonitorDialog so that the user may cancel.
-     * Do not open the ProgressMonitorDialog if there is already a modal
-     * dialog open.
-     * 
-     * @param runnable The runnable to execute and show the progress for.
-     * @see IProgressService#getLongOperationTime
-     * @throws InvocationTargetException
-     * @throws InterruptedException
-     */
-    public void busyCursorWhile(IRunnableWithProgress runnable)
-            throws InvocationTargetException, InterruptedException;
-
-    /**
-     * This specialization of IRunnableContext#run(boolean, boolean,
-     * IRunnableWithProgress) might run the runnable asynchronously
-     * if <code>fork</code> is <code>true</code>.
-     * 
-     * @since 3.2
-     */
-    public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException;
-    
-    /**
-     * Open a dialog on job when it starts to run and close it 
-     * when the job is finished. Wait for ProgressManagerUtil#SHORT_OPERATION_TIME
-     * before opening the dialog. Do not open if it is already done or
-     * if the user has set a preference to always run in the background.
-     * 
-     * Parent the dialog from the shell.
-     * 
-     * @param shell The Shell to parent the dialog from or 
-     * <code>null</code> if the active shell is to be used.
-     * @param job The Job that will be reported in the dialog. job
-     * must not be <code>null</code>.
-     */
-    public void showInDialog(Shell shell, Job job);
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
deleted file mode 100644
index c67266b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/IWorkbenchSiteProgressService.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.presentations.IPresentablePart;
-
-/**
- * IWorkbenchPartProgressService is an IProgressService that adds API for jobs
- * that change the state in a IWorkbenchPartSite while they are being run.
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) getSite().getService(IWorkbenchSiteProgressService.class);
- * </pre>
- * <ul>
- * <li>This service is not available globally, only at the part site level.</li>
- * </ul>
- * </p>
- * <p>
- * WorkbenchParts may access an instance of IWorkbenchSiteProgressService by
- * calling <code>getSite.getAdapter(IWorkbenchSiteProgressService.class);</code>,
- * although getService(IWorkbenchSiteProgressService.class) is preferred.
- * </p>
- * 
- * @see IWorkbenchPartSite#getAdapter(Class)
- * @see org.eclipse.ui.services.IServiceLocator#getService(Class)
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWorkbenchSiteProgressService extends IProgressService {
-
-    /**
-     * The property that is sent with busy notifications.
-     * @deprecated this property is no longer in use in the Eclipse SDK
-     */
-    public static final String BUSY_PROPERTY = "SITE_BUSY"; //$NON-NLS-1$
-
-    /**
-     * Jobs scheduled with this method will cause the part's presentation 
-     * to be changed to indicate that the part is busy and in a transient 
-     * state until the job completes. Parts can also add customized busy 
-     * indication by overriding <code>WorkbenchPart.setBusy()</code>.
-     * If useHalfBusyCursor is true then the cursor will change to
-     * the half busy cursor for the duration of the job.
-     * @param job The job to schedule
-     * @param delay The delay in scheduling.
-     * @param useHalfBusyCursor A boolean to indicate if the half busy
-     * 		cursor should be used while this job is running.
-     * @see Job#schedule(long)
-     */
-    public void schedule(Job job, long delay, boolean useHalfBusyCursor);
-
-    /**
-     * Jobs scheduled with this method will cause the part's presentation 
-     * to be changed to indicate that the part is busy and in a transient 
-     * state until the job completes. Parts can also add customized busy 
-     * indication by overriding <code>WorkbenchPart.setBusy</code>.
-     * @param job The job to schedule
-     * @param delay The delay in scheduling.
-     * @see Job#schedule(long)
-     */
-    public void schedule(Job job, long delay);
-
-    /**
-     * Jobs scheduled with this method will cause the part's presentation 
-     * to be changed to indicate that the part is busy and in a transient 
-     * state until the job completes. Parts can also add customized busy 
-     * indication by overriding <code>WorkbenchPart.setBusy</code>.
-     * @param job The job to schedule
-     * @see Job#schedule()
-     */
-    public void schedule(Job job);
-
-    /**
-     * Show busy state if any job of the specified family is running.
-     * @param family Object
-     * @see Job#belongsTo(Object)
-     */
-    public void showBusyForFamily(Object family);
-
-    /**
-     * Warn that the content of the receiver has 
-     * changed. The method of this is determined by
-     * how the presentation shows this. 
-     * @see IPresentablePart#PROP_HIGHLIGHT_IF_BACK
-     */
-    public void warnOfContentChange();
-    
-    /**
-	 * Increments the busy counter for this workbench site. This API should only
-	 * be used for background work that does not use jobs. As long as there have
-	 * been more calls to incrementBusy() than to decrementBusy(), the part will
-	 * show a busy affordance. Each call to incrementBusy must be followed by a
-	 * call to decrementBusy once the caller no longer needs the part to show
-	 * the busy affordance.
-	 * <p>
-	 * Note that the job-related methods on this class are another way to let
-	 * the part show a busy affordance.  A part will only appear non-busy if no
-	 * jobs have been scheduled through this service, and the internal busy
-	 * counter is not positive.
-	 * </p>
-	 * 
-	 * @since 3.3
-	 */
-	public void incrementBusy();
-
-    /**
-	 * Decrements the busy counter for this workbench site. This API should only
-	 * be used for background work that does not use jobs. It is an error to call
-	 * this method without first making a matching call to {@link #incrementBusy()}.
-	 * 
-	 * @since 3.3
-	 */
-	public void decrementBusy();
-	
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/PendingUpdateAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/PendingUpdateAdapter.java
deleted file mode 100644
index 411a7f6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/PendingUpdateAdapter.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.internal.progress.ProgressMessages;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * The PendingUpdateAdapter is a convenience object that can be used
- * by a BaseWorkbenchContentProvider that wants to show a pending update.
- * 
- * @since 3.2
- */
-public class PendingUpdateAdapter implements IWorkbenchAdapter, IAdaptable {
-
-    private boolean removed = false;
-
-    /**
-     * Return whether or not this has been removed from the tree.
-     * @return boolean
-     */
-    protected boolean isRemoved() {
-        return removed;
-    }
-
-    /**
-     * Set whether or not this has been removed from the tree.
-     * @param removedValue boolean
-     */
-    protected void setRemoved(boolean removedValue) {
-        this.removed = removedValue;
-    }
-
-    /**
-     * Create a new instance of the receiver.
-     */
-    public PendingUpdateAdapter() {
-        //No initial behavior
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class adapter) {
-        if (adapter == IWorkbenchAdapter.class) {
-			return this;
-		}
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
-     */
-    public Object[] getChildren(Object o) {
-        return new Object[0];
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
-     */
-    public ImageDescriptor getImageDescriptor(Object object) {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
-     */
-    public String getLabel(Object o) {
-        return ProgressMessages.PendingUpdateAdapter_PendingLabel;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
-     */
-    public Object getParent(Object o) {
-        return null;
-    }
-    
-    /**
-	 * @since 3.4
-	 */
-    public String toString() {
-    	return getLabel(null);
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/UIJob.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/UIJob.java
deleted file mode 100644
index 6aa7a04..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/UIJob.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.UIStats;
-import org.eclipse.ui.internal.progress.ProgressMessages;
-
-/**
- * The UIJob is a Job that runs within the UI Thread via an asyncExec.
- * 
- * @since 3.0
- */
-public abstract class UIJob extends Job {
-    private Display cachedDisplay;
-
-    /**
-     * Create a new instance of the receiver with the supplied name. The display
-     * used will be the one from the workbench if this is available. UIJobs with
-     * this constructor will determine their display at runtime.
-     * 
-     * @param name
-     *            the job name
-     *  
-     */
-    public UIJob(String name) {
-        super(name);
-    }
-
-    /**
-     * Create a new instance of the receiver with the supplied Display.
-     * 
-     * @param jobDisplay
-     *            the display
-     * @param name
-     *            the job name
-     * @see Job
-     */
-    public UIJob(Display jobDisplay, String name) {
-        this(name);
-        setDisplay(jobDisplay);
-    }
-
-    /**
-     * Convenience method to return a status for an exception.
-     * 
-     * @param exception
-     * @return IStatus an error status built from the exception
-     * @see Job
-     */
-    public static IStatus errorStatus(Throwable exception) {
-        return WorkbenchPlugin.getStatus(exception); 
-    }
-
-    /**
-     * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-     *      Note: this message is marked final. Implementors should use
-     *      runInUIThread() instead.
-     */
-    public final IStatus run(final IProgressMonitor monitor) {
-        if (monitor.isCanceled()) {
-			return Status.CANCEL_STATUS;
-		}
-        Display asyncDisplay = getDisplay();
-        if (asyncDisplay == null || asyncDisplay.isDisposed()) {
-            return Status.CANCEL_STATUS;
-        }
-        asyncDisplay.asyncExec(new Runnable() {
-            public void run() {
-                IStatus result = null;
-                try {
-                    //As we are in the UI Thread we can
-                    //always know what to tell the job.
-                    setThread(Thread.currentThread());
-                    if (monitor.isCanceled()) {
-						result = Status.CANCEL_STATUS;
-					} else {
-                       	UIStats.start(UIStats.UI_JOB, getName());
-                        result = runInUIThread(monitor);
-                    }
-
-                } finally {
-               		UIStats.end(UIStats.UI_JOB, UIJob.this, getName());
-                    if (result == null) {
-						result = new Status(IStatus.ERROR,
-                                PlatformUI.PLUGIN_ID, IStatus.ERROR,
-                                ProgressMessages.Error,
-                                null);
-					}
-                    done(result);
-                }
-            }
-        });
-        return Job.ASYNC_FINISH;
-    }
-
-    /**
-     * Run the job in the UI Thread.
-     * 
-     * @param monitor
-     * @return IStatus
-     */
-    public abstract IStatus runInUIThread(IProgressMonitor monitor);
-
-    /**
-     * Sets the display to execute the asyncExec in. Generally this is not'
-     * used if there is a valid display available via PlatformUI.isWorkbenchRunning().
-     * 
-     * @param runDisplay
-     *            Display
-     * @see UIJob#getDisplay()
-     * @see PlatformUI#isWorkbenchRunning()
-     */
-    public void setDisplay(Display runDisplay) {
-        Assert.isNotNull(runDisplay);
-        cachedDisplay = runDisplay;
-    }
-
-    /**
-     * Returns the display for use by the receiver when running in an
-     * asyncExec. If it is not set then the display set in the workbench
-     * is used.
-     * If the display is null the job will not be run.
-     * 
-     * @return Display or <code>null</code>.
-     */
-    public Display getDisplay() {
-        //If it was not set get it from the workbench
-        if (cachedDisplay == null && PlatformUI.isWorkbenchRunning()) {
-			return PlatformUI.getWorkbench().getDisplay();
-		}
-        return cachedDisplay;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/WorkbenchJob.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/WorkbenchJob.java
deleted file mode 100644
index bc34c52..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/WorkbenchJob.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.progress;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * WorkbenchJob is a type of job that implements a done listener
- * and does the shutdown checks before scheduling. This is used if 
- * a job is not meant to run when the Workbench is shutdown.
- * @since 3.0
- */
-public abstract class WorkbenchJob extends UIJob {
-
-    /**
-     * Create a new instance of the receiver with the
-     * supplied display and name.
-     * Normally this constructor would not be used as
-     * it is best to let the job find the display from
-     *  the workbench
-     * @param jobDisplay Display. The display to run the
-     * 		job with.
-     * @param name String
-     */
-    public WorkbenchJob(Display jobDisplay, String name) {
-        super(jobDisplay, name);
-        addDefaultJobChangeListener();
-    }
-
-    /**
-     * Add a new instance of the reciever with the 
-     * supplied name.
-     * @param name String
-     */
-    public WorkbenchJob(String name) {
-        super(name);
-        addDefaultJobChangeListener();
-    }
-
-    /**
-     * Add a job change listeners that handles a done
-     * event if the result was IStatus.OK.
-     *
-     */
-    private void addDefaultJobChangeListener() {
-        addJobChangeListener(new JobChangeAdapter() {
-            /* (non-Javadoc)
-             * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core.runtime.jobs.IJobChangeEvent)
-             */
-            public void done(IJobChangeEvent event) {
-
-                //Abort if it is not running
-                if (!PlatformUI.isWorkbenchRunning()) {
-					return;
-				}
-
-                if (event.getResult().getCode() == IStatus.OK) {
-					performDone(event);
-				}
-            }
-        });
-    }
-
-    /**
-     * Perform done with the supplied event. This will
-     * only occur if the returned status was OK.
-     * This is called only if the job is finished with an IStatus.OK
-     * result and the workbench is still running.
-     * @param event IJobChangeEvent
-     */
-    public void performDone(IJobChangeEvent event) {
-        //Do nothing by default.
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.internal.jobs.InternalJob#shouldSchedule()
-     */
-    public boolean shouldSchedule() {
-        return super.shouldSchedule() && PlatformUI.isWorkbenchRunning();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-     */
-    public boolean shouldRun() {
-        return super.shouldRun() && PlatformUI.isWorkbenchRunning();
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/package.html
deleted file mode 100644
index 5991ddf..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/progress/package.html
+++ /dev/null
@@ -1,15 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>Package Specification</h2>
-This package provides API for connecting to the progress support in the Eclipse 
-Workbench. The classes in this package are used to add information about the progress 
-of org.eclipse.core.runtime.Jobs created by plug-ins. 
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/AbstractServiceFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/AbstractServiceFactory.java
deleted file mode 100644
index 6482164..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/AbstractServiceFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.services;
-
-/**
- * A factory for creating services for use with the
- * <code>org.eclipse.ui.services</code> extension point. You are given a
- * service locator to look up other services, and can retrieve your parent
- * service (if one has already been created).
- * 
- * @since 3.4
- */
-public abstract class AbstractServiceFactory {
-
-	/**
-	 * When a service locator cannot find a service it will request one from the
-	 * registry, which will call this factory create method.
-	 * <p>
-	 * You can use the locator to get any needed services and a parent service
-	 * locator will be provided if you need access to the parent service. If the
-	 * parent object return from the parent locator is not <code>null</code>
-	 * it can be cast to the service interface that is requested. The parent
-	 * service locator will only return the serviceInterface service.
-	 * </p>
-	 * 
-	 * @param serviceInterface
-	 *            the service we need to create. Will not be <code>null</code>.
-	 * @param parentLocator
-	 *            A locator that can return a parent service instance if
-	 *            desired. The parent service can be cast to serviceInterface.
-	 *            Will not be <code>null</code>.
-	 * @param locator
-	 *            the service locator which can be used to retrieve dependent
-	 *            services. Will not be <code>null</code>
-	 * @return the created service or <code>null</code>
-	 */
-	public abstract Object create(Class serviceInterface,
-			IServiceLocator parentLocator, IServiceLocator locator);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IDisposable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IDisposable.java
deleted file mode 100644
index a6243eb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IDisposable.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.services;
-
-/**
- * <p>
- * The interface that should be implemented by services that make themselves
- * available through the <code>IAdaptable</code> mechanism. This is the
- * interface that drives the majority of services provided at the workbench
- * level.
- * </p>
- * <p>
- * A service has life-cycle. When the constructor completes, the service must be
- * fully functional. When it comes time for the service to go away, then the
- * service will receive a {@link #dispose()} call. At this point, the service
- * must release all resources and detach all listeners. A service can only be
- * disposed once; it cannot be reused.
- * </p>
- * <p>
- * This interface has nothing to do with OSGi services.
- * </p>
- * <p>
- * This interface can be extended or implemented by clients.
- * </p>
- * 
- * @since 3.2
- */
-public interface IDisposable {
-
-	/**
-	 * Disposes of this service. All resources must be freed. All listeners must
-	 * be detached. Dispose will only be called once during the life cycle of a
-	 * service.
-	 */
-	public void dispose();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationReference.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationReference.java
deleted file mode 100644
index 2dbef59..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationReference.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.services;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.ui.internal.services.IEvaluationResultCache;
-
-/**
- * A token representing a core expression and property change listener currently
- * working in the <code>IEvaluationService</code>.
- * <p>
- * Note:This is not meant to be implemented or extended by clients.
- * </p>
- * <p>
- * <strong>PROVISIONAL</strong>. This class or interface has been added as part
- * of a work in progress. There is a guarantee neither that this API will work
- * nor that it will remain the same. Please do not use this API without
- * consulting with the Platform/UI team. This might disappear in 3.4 M5.
- * </p>
- * 
- * @since 3.4
- */
-public interface IEvaluationReference extends IEvaluationResultCache {
-	/**
-	 * The property change listener associated with the evaluated expression.
-	 * 
-	 * @return the listener for updates.
-	 */
-	public IPropertyChangeListener getListener();
-
-	/**
-	 * The property used in change notifications.
-	 * 
-	 * @return the property name.
-	 */
-	public String getProperty();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationService.java
deleted file mode 100644
index a0228dc..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IEvaluationService.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.services;
-
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.ui.ISources;
-
-/**
- * Evaluate a core expression against the workbench application context and
- * report updates using a Boolean property. Clients supply an
- * <code>IPropertyChangeListener</code> that will be notified as changes
- * occur.
- * <p>
- * This can be used to implement core expressions in client extension points
- * similar to the &lt;enabledWhen&gt; of
- * <code>org.eclipse.ui.handlers/handler</code> elements.
- * </p>
- * <p>
- * The service will fire <code>Boolean.TRUE</code> and
- * <code>Boolean.FALSE</code> for the oldValue and newValue in the property
- * change events.
- * </p>
- * <p>
- * Adding the evaluation listener will fire one change with oldValue=<code>null</code>
- * and newValue=&quot;evaluated expression&quot;. Remove the
- * <code>IEvaluationReference</code> will fire one change with
- * oldValue=&quot;last evaluated value&quot; and newValue=<code>null</code>.
- * </p>
- * <p>
- * Adding a service listener will fire the {@link #PROP_NOTIFYING} property
- * change event with newValue=<code>Boolean.TRUE</code> when a source change
- * causes expression evaluations to update and another {@link #PROP_NOTIFYING}
- * property change event with newValue=<code>Boolean.FALSE</code> when the
- * changes that started with a specific source change have finished. The
- * {@link #PROP_NOTIFYING} change events will not be fired for source changes
- * caused by the outer most recalculations.
- * </p>
- * <p>
- * Variable sources can be provided to this service using the <code>org.eclipse.ui.services</code>
- * Extension Point.  This makes the available to &lt;with/&gt; expressions.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IEvaluationService service = (IEvaluationService) getSite().getService(IEvaluationService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @since 3.4
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IEvaluationService extends IServiceWithSources {
-	/**
-	 * A general property that can be used.
-	 */
-	public static final String RESULT = "org.eclipse.ui.services.result"; //$NON-NLS-1$
-
-	/**
-	 * The property used to notify any service listeners.
-	 */
-	public static final String PROP_NOTIFYING = "org.eclipse.ui.services.notifying"; //$NON-NLS-1$
-
-	/**
-	 * When a source change starts recalculating expressions the
-	 * {@link #PROP_NOTIFYING} property change is fired with the newValue=<code>Boolean.TRUE</code>.
-	 * This property is not fired for any source changes caused by the outer
-	 * recalculations.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param listener
-	 *            The listener to be notified. Must not be <code>null</code>.
-	 *            Has no effect if the listener has already been added.
-	 */
-	public void addServiceListener(IPropertyChangeListener listener);
-
-	/**
-	 * Remove the listener for {@link #PROP_NOTIFYING} property changes.
-	 * 
-	 * @param listener
-	 *            The listener to remove. Must not be <code>null</code>. Has
-	 *            no effect if the listener is not currently registered.
-	 */
-	public void removeServiceListener(IPropertyChangeListener listener);
-
-	/**
-	 * Add a listener that can be notified when the workbench application
-	 * context causes the expression evaluation value to change.
-	 * <p>
-	 * <b>Note:</b> listeners should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param expression
-	 *            the core expression to evaluate.
-	 * @param listener
-	 *            the listener to be notified.
-	 * @param property
-	 *            the property contained in the notification
-	 * @return a token that can be used to remove this listener.
-	 * {@link #removeEvaluationListener(IEvaluationReference)}
-	 */
-	public IEvaluationReference addEvaluationListener(Expression expression,
-			IPropertyChangeListener listener, String property);
-
-	/**
-	 * Re-add a property change listener that has already been removed by
-	 * {@link #removeEvaluationListener(IEvaluationReference)}.
-	 * <p>
-	 * It will only accept IEvaluationReferences returned from a previous call
-	 * to
-	 * {@link #addEvaluationListener(Expression, IPropertyChangeListener, String)}
-	 * on this service.
-	 * </p>
-	 * <p>
-	 * <b>Note:</b> references should be removed when no longer necessary. If
-	 * not, they will be removed when the IServiceLocator used to acquire this
-	 * service is disposed.
-	 * </p>
-	 * 
-	 * @param ref
-	 *            The listener to re-add.
-	 * @see #removeEvaluationListener(IEvaluationReference)
-	 */
-	public void addEvaluationReference(IEvaluationReference ref);
-
-	/**
-	 * Remove the listener represented by the evaluation reference.
-	 * 
-	 * @param ref
-	 *            the reference to be removed.
-	 */
-	public void removeEvaluationListener(IEvaluationReference ref);
-
-	/**
-	 * Get an IEvaluationContext that contains the current state of the
-	 * workbench application context. This context changes with the application
-	 * state, but becomes invalid when the global current selection changes.
-	 * <p>
-	 * Note: This context should not be modified.
-	 * </p>
-	 * 
-	 * @return the latest context.
-	 * @see ISources#ACTIVE_CURRENT_SELECTION_NAME
-	 */
-	public IEvaluationContext getCurrentState();
-
-	/**
-	 * Request that this service re-evaluate all registered core expressions
-	 * that contain a property tester for the given property name. This will
-	 * fire a {@link #PROP_NOTIFYING} property change event to service
-	 * listeners.
-	 * <p>
-	 * Notes:
-	 * <ul>
-	 * <li>the property must be able to return the new value before this
-	 * re-evaluation is requested</li>
-	 * <li>limit calls to this method to avoid unnecessary churn</li>
-	 * <li>A re-evaluation that does not change the value of an expression will
-	 * not fire a property change event</li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @param propertyName
-	 *            The fully qualified property name, like
-	 *            <code>org.eclipse.core.resources.name</code>. Must not be
-	 *            <code>null</code>.
-	 * @since 3.4
-	 */
-	public void requestEvaluation(String propertyName);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceLocator.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceLocator.java
deleted file mode 100644
index 1534aec..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceLocator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.services;
-
-/**
- * <p>
- * A component with which one or more services are registered. The services can
- * be retrieved from this locator using some key -- typically the class
- * representing the interface the service must implement. For example:
- * </p>
- * 
- * <pre>
- * IHandlerService service = (IHandlerService) workbenchWindow
- * 		.getService(IHandlerService.class);
- * </pre>
- * 
- * <p>
- * This interface is not to be implemented or extended by clients.
- * </p>
- * 
- * @since 3.2
- */
-public interface IServiceLocator {
-
-	/**
-	 * Retrieves the service corresponding to the given API.
-	 * 
-	 * @param api
-	 *            This is the interface that the service implements. Must not be
-	 *            <code>null</code>.
-	 * @return The service, or <code>null</code> if no such service could be
-	 *         found.
-	 */
-	public Object getService(Class api);
-
-	/**
-	 * Whether this service exists within the scope of this service locator.
-	 * This does not include looking for the service within the scope of the
-	 * parents. This method can be used to determine whether a particular
-	 * service supports nesting in this scope.
-	 * 
-	 * @param api
-	 *            This is the interface that the service implements. Must not be
-	 *            <code>null</code>.
-	 * @return <code>true</code> iff the service locator can find a service
-	 *         for the given API; <code>false</code> otherwise.
-	 */
-	public boolean hasService(Class api);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceScopes.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceScopes.java
deleted file mode 100644
index b039f9b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceScopes.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.services;
-
-
-/**
- * Different levels of service locators supported by the workbench.
- * 
- * @since 3.3
- */
-public interface IServiceScopes {
-	/**
-	 * The global service locator scope.
-	 */
-	public static final String WORKBENCH_SCOPE = "org.eclipse.ui.services.IWorkbench"; //$NON-NLS-1$
-
-	/**
-	 * A workbench window service locator scope.
-	 */
-	public static final String WINDOW_SCOPE = "org.eclipse.ui.IWorkbenchWindow"; //$NON-NLS-1$
-	
-	/**
-	 * A part site service locator scope.  Found in editors and views.
-	 */
-	public static final String PARTSITE_SCOPE = "org.eclipse.ui.part.IWorkbenchPartSite"; //$NON-NLS-1$
-	
-	/**
-	 * A page site service locator scope.  Found in pages in a PageBookView.
-	 */
-	public static final String PAGESITE_SCOPE = "org.eclipse.ui.part.PageSite"; //$NON-NLS-1$
-	
-	/**
-	 * An editor site within a MultiPageEditorPart.
-	 */
-	public static final String MPESITE_SCOPE = "org.eclipse.ui.part.MultiPageEditorSite"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceWithSources.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceWithSources.java
deleted file mode 100644
index 9ae1a67..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/IServiceWithSources.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.services;
-
-import org.eclipse.ui.ISourceProvider;
-
-/**
- * <p>
- * A service that responds to changes in one or more sources. These sources can
- * be plugged into the service. Sources represent a common event framework for
- * services.
- * </p>
- * <p>
- * Clients must not extend or implement.
- * </p>
- * 
- * @since 3.2
- */
-public interface IServiceWithSources extends IDisposable {
-
-	/**
-	 * Adds a source provider to this service. A source provider will notify the
-	 * service when the source it provides changes. An example of a source might
-	 * be an active editor or the current selection. This amounts to a pluggable
-	 * state tracker for the service.
-	 * 
-	 * @param provider
-	 *            The provider to add; must not be <code>null</code>.
-	 */
-	public void addSourceProvider(ISourceProvider provider);
-
-	/**
-	 * Removes a source provider from this service. Most of the time, this
-	 * method call is not required as source providers typically share the same
-	 * life span as the workbench itself.
-	 * 
-	 * @param provider
-	 *            The provider to remove; must not be <code>null</code>.
-	 */
-	public void removeSourceProvider(ISourceProvider provider);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/ISourceProviderService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/ISourceProviderService.java
deleted file mode 100644
index eb0ef1c..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/ISourceProviderService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.services;
-
-import org.eclipse.ui.ISourceProvider;
-
-/**
- * <p>
- * A service from which all of the source providers can be retrieved.
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	ISourceProviderService service = (ISourceProviderService) getSite().getService(ISourceProviderService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @since 3.4
- * @see org.eclipse.ui.services.IEvaluationService
- */
-public interface ISourceProviderService {
-
-	/**
-	 * Retrieves a source provider providing the given source. This is used by
-	 * clients who only need specific sources.
-	 * 
-	 * @param sourceName
-	 *            The name of the source; must not be <code>null</code>.
-	 * @return A source provider which provides the request source, or
-	 *         <code>null</code> if no such source exists.
-	 * @see org.eclipse.ui.ISources
-	 */
-	public ISourceProvider getSourceProvider(final String sourceName);
-
-	/**
-	 * Retrieves all of the source providers registered with this service at the
-	 * time of this call.
-	 * <p>
-	 * <code>org.eclipse.ui.services.IEvaluationService</code> can be used 
-	 * to receive notifications about source variable changes and to
-	 * evaluate core expressions against source providers.
-	 * </p>
-	 * 
-	 * @return The source providers registered with this service. This value is
-	 *         never <code>null</code>, but may be empty.
-	 */
-	public ISourceProvider[] getSourceProviders();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html
deleted file mode 100755
index 5ee7669..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html
+++ /dev/null
@@ -1,20 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Classes for service support.</p>
-<h2>
-Package Specification</h2>
-<p>
-This package has the base service support API.  IServiceLocator is used
-to retrieve any of the services contributed to the workbench, workbench
-window, or part site.
-</p>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/AbstractSplashHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/AbstractSplashHandler.java
deleted file mode 100644
index 2bf2fa5..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/AbstractSplashHandler.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.splash;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferenceConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-
-/**
- * Baseclass for splash implementations. Please note that methods on this class
- * will be invoked while the Workbench is being instantiated. As such, any
- * resource provided by the workbench plug-in cannot be guarenteed to be
- * available to this class while executing. No attempt should be made to access
- * {@link IWorkbench} or any subordinate interfaces or resources.
- * 
- * @since 3.3
- */
-public abstract class AbstractSplashHandler {
-
-	private Shell shell;
-
-	/**
-	 * Initialize this splash implementation. This is called very early in the
-	 * workbench lifecycle before any window is created. The provided shell will
-	 * already have a background image provided to it but subclasses are free to
-	 * customize the shell in whatever way they see fit. Subclasses should
-	 * ensure that they call the base implementation of this method at some
-	 * point after their own method is invoked.
-	 * 
-	 * <p>
-	 * Calls to this method will be made from the UI thread.
-	 * </p>
-	 * 
-	 * @param splash
-	 *            the splash shell
-	 */
-	public void init(Shell splash) {
-		this.shell = splash;
-	}
-
-	/**
-	 * Signal the handler to end the splash and dispose of any resources.
-	 * Subclasses should ensure that they call the base implementation of this
-	 * method at some point after their own method is invoked.
-	 * 
-	 * <p>
-	 * Calls to this method will be made from the UI thread.
-	 * </p>
-	 */
-	public void dispose() {
-		shell.close();
-		shell = null;
-	}
-
-	/**
-	 * Return the progress monitor responsible for showing bundle loading.
-	 * Default implementation returns a null progress monitor.
-	 * 
-	 * <p>
-	 * Calls made to methods on this progress monitor may be made from non-UI
-	 * threads so implementors must take care to ensure proper synchronization
-	 * with the UI thread if necessary.
-	 * </p>
-	 * 
-	 * <p>
-	 * Please note that progress will only be shown if the
-	 * "org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP" property has been set to
-	 * <code>true</code>. Because this property defaults to <code>false</code>
-	 * RCP developers must set this property via a
-	 * <code>plugin_customization.ini</code> file or by setting the preference
-	 * on the Platform UI perference store in the
-	 * {@link WorkbenchAdvisor#initialize(org.eclipse.ui.application.IWorkbenchConfigurer)}
-	 * method if they wish to have progress reported on startup.
-	 * </p>
-	 * 
-	 * @return the progress monitor
-	 * @see NullProgressMonitor
-	 * @see PlatformUI#getPreferenceStore()
-	 * @see IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
-	 * @see WorkbenchAdvisor#initialize(org.eclipse.ui.application.IWorkbenchConfigurer)
-	 */
-	public IProgressMonitor getBundleProgressMonitor() {
-		return new NullProgressMonitor();
-	}
-
-	/**
-	 * Get the {@link Shell} associated with this splash screen. If this method
-	 * returns a non-<code>null</code> value prior to the
-	 * {@link #init(Shell)} being invoked then this shell will be used for the
-	 * splash shell and it will subsequently be passed to the
-	 * {@link #init(Shell)} method. In this way a splash handler may participate
-	 * in splash processes prior to the workbench startup.
-	 * 
-	 * <p>
-	 * Calls to this method may be made from any thread. Implementors must take
-	 * care to ensure proper synchronization with the UI thread if necessary.
-	 * </p>
-	 * 
-	 * @return the splash shell
-	 */
-	public Shell getSplash() {
-		return shell;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/BasicSplashHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/BasicSplashHandler.java
deleted file mode 100644
index ec88b17..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/BasicSplashHandler.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.splash;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.ProgressIndicator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.ProgressMonitorPart;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.internal.StartupThreading.StartupRunnable;
-
-/**
- * Basic splash implementation that provides an absolute positioned progress bar
- * and message string that is hooked up to a progress monitor.
- * 
- * @since 3.3
- */
-public abstract class BasicSplashHandler extends AbstractSplashHandler {
-
-	/**
-	 * Hacks the progress monitor to have absolute positioning for its controls.
-	 * In addition, all methods that access the controls will be wrapped in an
-	 * asynchExec().
-	 */
-	class AbsolutePositionProgressMonitorPart extends ProgressMonitorPart {
-		public AbsolutePositionProgressMonitorPart(Composite parent) {
-			super(parent, null);
-			setLayout(null);
-		}
-
-		public ProgressIndicator getProgressIndicator() {
-			return fProgressIndicator;
-		}
-
-		public Label getProgressText() {
-			return fLabel;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.wizard.ProgressMonitorPart#beginTask(java.lang.String, int)
-		 */
-		public void beginTask(final String name, final int totalWork) {
-
-			updateUI(new Runnable() {
-
-				public void run() {
-					if (isDisposed())
-						return;
-					AbsolutePositionProgressMonitorPart.super.beginTask(name,
-							totalWork);
-				}
-			});
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.wizard.ProgressMonitorPart#done()
-		 */
-		public void done() {
-
-			updateUI(new Runnable() {
-
-				public void run() {
-					if (isDisposed())
-						return;
-					AbsolutePositionProgressMonitorPart.super.done();
-				}
-			});
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.wizard.ProgressMonitorPart#internalWorked(double)
-		 */
-		public void internalWorked(final double work) {
-
-			updateUI(new Runnable() {
-
-				public void run() {
-					if (isDisposed())
-						return;
-					AbsolutePositionProgressMonitorPart.super
-							.internalWorked(work);
-				}
-			});
-
-		}
-		
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.wizard.ProgressMonitorPart#setFont(org.eclipse.swt.graphics.Font)
-		 */
-		public void setFont(final Font font) {
-
-			updateUI(new Runnable() {
-
-				public void run() {
-					if (isDisposed())
-						return;
-					AbsolutePositionProgressMonitorPart.super.setFont(font);
-				}
-			});
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.wizard.ProgressMonitorPart#updateLabel()
-		 */
-		protected void updateLabel() {
-
-			updateUI(new Runnable() {
-
-				public void run() {
-					if (isDisposed())
-						return;
-					AbsolutePositionProgressMonitorPart.super.updateLabel();
-				}
-			});
-
-		}
-	}
-
-	private Color foreground = null;
-	private AbsolutePositionProgressMonitorPart monitor;
-	private Rectangle messageRect;
-	private Rectangle progressRect;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.splash.AbstractSplashHandler#getBundleProgressMonitor()
-	 */
-	public IProgressMonitor getBundleProgressMonitor() {
-		if (monitor == null) {
-			Composite parent = new Composite(getSplash(), Window.getDefaultOrientation());
-			Point size = getSplash().getSize();
-			parent.setBounds(new Rectangle(0,0,size.x,size.y));
-			monitor = new AbsolutePositionProgressMonitorPart(parent);
-			monitor.setSize(size);
-			if (progressRect != null)
-				monitor.getProgressIndicator().setBounds(progressRect);
-			else
-				monitor.getProgressIndicator().setVisible(false);
-
-			if (messageRect != null)
-				monitor.getProgressText().setBounds(messageRect);
-			else
-				monitor.getProgressText().setVisible(false);
-
-			if (foreground != null)
-				monitor.getProgressText().setForeground(foreground);
-			monitor.setBackgroundMode(SWT.INHERIT_FORCE);
-			monitor.setBackgroundImage(getSplash().getShell()
-					.getBackgroundImage());
-		}
-		return monitor;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.splash.AbstractSplashHandler#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		if (foreground != null)
-			foreground.dispose();
-	}
-
-	/**
-	 * Set the foreground text color. This method has no effect after
-	 * {@link #getBundleProgressMonitor()} has been invoked.
-	 * 
-	 * @param foregroundRGB
-	 *            the color
-	 */
-	protected void setForeground(RGB foregroundRGB) {
-		if (monitor != null)
-			return;
-		if (this.foreground != null)
-			this.foreground.dispose();
-		this.foreground = new Color(getSplash().getShell().getDisplay(),
-				foregroundRGB);
-	}
-	
-	/**
-	 * Get the foreground text color. This color should not be disposed by
-	 * callers.
-	 * 
-	 * @return the foreground color
-	 */
-	protected Color getForeground() {
-		return foreground;
-	}
-
-	/**
-	 * Set the location of the message text in the splash. This method has no
-	 * effect after {@link #getBundleProgressMonitor()} has been invoked.
-	 * 
-	 * @param messageRect
-	 *            the location of the message text
-	 */
-	protected void setMessageRect(Rectangle messageRect) {
-		this.messageRect = messageRect;
-	}
-
-	/**
-	 * Set the location of the progress bar in the splash. This method has no
-	 * effect after {@link #getBundleProgressMonitor()} has been invoked.
-	 * 
-	 * @param progressRect
-	 *            the location of the progress bar
-	 */
-	protected void setProgressRect(Rectangle progressRect) {
-		this.progressRect = progressRect;
-	}
-	
-	/**
-	 * Get the composite on which any supplemental controls should be drawn.
-	 * This will not have a layout set and clients are responsible for setting
-	 * the location of child controls manually.
-	 * 
-	 * <p>
-	 * This method must be called in the
-	 * {@link #init(org.eclipse.swt.widgets.Shell)} method of a subclasses to
-	 * ensure proper creation of controls
-	 * </p>
-	 * 
-	 * <p>
-	 * Please note that the default implementation of this method assumes that
-	 * the {@link IProgressMonitor} returned from
-	 * {@link #getBundleProgressMonitor()} can be safely casted to a
-	 * {@link Composite}. If this is not the case this method must be
-	 * reimplemented to reflect the new progress controls.
-	 * </p>
-	 * 
-	 * @see #init(org.eclipse.swt.widgets.Shell)
-	 * @return the composite
-	 */
-	protected Composite getContent() {
-		return (Composite) getBundleProgressMonitor();
-	}
-	
-	/**
-	 * Perform some update on the splash. If called from a non-UI thread it will
-	 * be wrapped by a runnable that may be run before the workbench has been
-	 * fully realized.
-	 * 
-	 * @param r
-	 *            the update runnable
-	 * @throws Throwable
-	 */
-	private void updateUI(final Runnable r) {
-		Shell splashShell = getSplash();
-		if (splashShell == null || splashShell.isDisposed())
-			return;
-		
-		Display display = splashShell.getDisplay();
-		
-		if (Thread.currentThread() == display.getThread())
-			r.run(); // run immediatley if we're on the UI thread
-		else {
-			// wrapper with a StartupRunnable to ensure that it will run before
-			// the UI is fully initialized
-			StartupRunnable startupRunnable = new StartupRunnable() {
-
-				public void runWithException() throws Throwable {
-					r.run();
-				}
-			};
-			display.asyncExec(startupRunnable);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/package.html
deleted file mode 100644
index 32c4dc1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/splash/package.html
+++ /dev/null
@@ -1,13 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>Package Specification</h2>
-This package provides API for augmenting or replacing the Eclipse splash process.  See the org.eclipse.ui.splashHandlers extension point.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
deleted file mode 100644
index 49d8da7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusAreaProvider.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.ErrorSupportProvider;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * <p>
- * A status area provider creates an area that displays detailed information
- * about {@link StatusAdapter} or {@link IStatus}.
- * </p>
- * 
- * <p>
- * The area provider can be set in {@link WorkbenchStatusDialogManager} as well as in
- * JFace {@link Policy} since its extends {@link ErrorSupportProvider}.
- * </p>
- * 
- * @see Policy#setErrorSupportProvider(ErrorSupportProvider)
- * @see WorkbenchStatusDialogManager#setSupportAreaProvider(AbstractStatusAreaProvider)
- * @see WorkbenchStatusDialogManager#setDetailsAreaProvider(AbstractStatusAreaProvider)
- * @since 3.4
- */
-public abstract class AbstractStatusAreaProvider extends ErrorSupportProvider {
-
-	/**
-	 * Create an area for detailed support area as a child of the given parent.
-	 * 
-	 * @param parent
-	 *            A {@link Composite} that will host support area.
-	 * @param statusAdapter
-	 *            The {@link StatusAdapter} to be supported.
-	 * @return a control, that hold all support elements.
-	 */
-	public abstract Control createSupportArea(Composite parent,
-			StatusAdapter statusAdapter);
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.dialogs.ErrorSupportProvider#createSupportArea(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.core.runtime.IStatus)
-	 */
-	public final Control createSupportArea(Composite parent, IStatus status) {
-		return createSupportArea(parent, new StatusAdapter(status));
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java
deleted file mode 100644
index 86d519f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import java.util.Map;
-
-import org.eclipse.ui.application.WorkbenchAdvisor;
-
-/**
- * <p>
- * Status handlers are part of the status handling facility. The facility is
- * responsible for handling errors and other important issues in Eclipse based
- * applications. The handlers are responsible for presenting this errors by
- * logging or showing error dialogs.
- * </p>
- * 
- * <p>
- * All status handlers extends
- * <code>org.eclipse.ui.statushandlers.AbstractStatusHandler</code>. Each
- * handler implements <code>handle(StatusAdapter status, int style)</code>.
- * This method handles statuses due to handling style. The style indicates how
- * status handler should handle a status.
- * </p>
- * 
- * <p>
- * For acceptable styles check {@link StatusManager}.
- * </p>
- * 
- * <p>
- * Handlers shoudn't be used directly but through the {@link StatusManager}. It
- * chooses which handler should be used for handling. There are two ways for
- * adding handlers to the handling flow. First using extension point
- * <code>org.eclipse.ui.statusHandlers</code>, second by the workbench
- * advisor and its method {@link WorkbenchAdvisor#getWorkbenchErrorHandler()}.
- * If a handler is associated with a product, it is used instead of this defined
- * in advisor.
- * </p>
- * 
- * <p>
- * A status handler has the id and a set of parameters. The handler can use them
- * during handling. If the handler is added as an extension, both are set during
- * initialization of the handler using elements and attributes of
- * <code>statusHandler</code> element.
- * </p>
- * 
- * @since 3.3
- */
-public abstract class AbstractStatusHandler {
-
-	private Map params;
-
-	private String id;
-
-	/**
-	 * Handles {@link StatusAdapter} objects based on the set style. 
-	 * 
-	 * @param statusAdapter
-	 *            the status adapter. May not be <code>null</code>.
-	 * @param style
-	 *            style constant. Acceptable values are defined in
-	 *            {@link StatusManager} and can be combined with logical OR.
-	 * 
-	 * @see StatusManager#BLOCK
-	 * @see StatusManager#NONE
-	 * @see StatusManager#SHOW
-	 * @see StatusManager#LOG
-	 */
-	public abstract void handle(StatusAdapter statusAdapter, int style);
-
-	/**
-	 * Returns all parameters of the handler.
-	 * 
-	 * @return the parameters
-	 */
-	public Map getParams() {
-		return params;
-	}
-
-	/**
-	 * Returns the value of the handler's parameter identified by the given key,
-	 * or <code>null</code> if this handler has no such parameter.
-	 * 
-	 * @param key
-	 *            the name of the property
-	 * @return the value of the parameter, or <code>null</code> if this
-	 *         handler has no such parameter
-	 */
-	public Object getParam(Object key) {
-		if (params != null) {
-			return params.get(key);
-		}
-
-		return null;
-	}
-
-	/**
-	 * Sets the parameters for the handler. If the handler is added via the
-	 * <code> org.eclipse.ui.statushandlers extension</code>, the parameters are set 
-	 * during initialization of the handler using <code>parameter</code> 
-	 * elements from <code>statusHandler</code>
-	 * element.
-	 * 
-	 * @param params
-	 *            the parameters to set
-	 */
-	public void setParams(Map params) {
-		this.params = params;
-	}
-
-	/**
-	 * Returns the id of the handler.
-	 * 
-	 * @return the id
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * Sets the id for the handler. If the handler is added as an extension, the
-	 * id is set during initialization of the handler using <code>id</code>
-	 * attribute of <code>statusHandler</code> element.
-	 * 
-	 * @param id
-	 *            the id to set
-	 */
-	public void setId(String id) {
-		this.id = id;
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java
deleted file mode 100644
index b93b068..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/IStatusAdapterConstants.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * This interface contains common constants important for
- * <code>StatusAdapter</code>.
- * 
- * <p>
- * This interface should not be implemented or extended by clients.
- * </p>
- * 
- * @since 3.4
- */
-public interface IStatusAdapterConstants {
-
-	/**
-	 * Common prefix for properties defined in this interface.
-	 */
-	static final String PROPERTY_PREFIX = PlatformUI.PLUGIN_ID
-			+ ".workbench.statusHandlers.adapters"; //$NON-NLS-1$
-
-	/**
-	 * This property is used to add title to the adapter. If the adapter is
-	 * shown in a dialog, this property is used to create title of the dialog.
-	 * 
-	 * <p>
-	 * The property must be of type <code>String</code>.
-	 * </p>
-	 */
-	public static final QualifiedName TITLE_PROPERTY = new QualifiedName(
-			PROPERTY_PREFIX, "title"); //$NON-NLS-1$
-
-	/**
-	 * This property is used to add a timestamp to the adapter. If the adapter
-	 * is shown in the UI, this property can be used for sorting and showing
-	 * information about the status creation time.
-	 * 
-	 * <p>
-	 * The property must be of type <code>Long</code>.
-	 * </p>
-	 */
-	public static final QualifiedName TIMESTAMP_PROPERTY = new QualifiedName(
-			PROPERTY_PREFIX, "timestamp"); //$NON-NLS-1$
-
-	/**
-	 * This property is used to add an explanation to the adapter. If the
-	 * adapter is shown in the UI, this property should be used to present
-	 * additional explanation for the status.
-	 * 
-	 * <p>
-	 * The property must be of type <code>String</code>.
-	 * </p>
-	 */
-	public static final QualifiedName EXPLANATION_PROPERTY = new QualifiedName(
-			PROPERTY_PREFIX, "explanation"); //$NON-NLS-1$
-
-	/**
-	 * This property is used to add a hint to the adapter. If the adapter is
-	 * shown in the UI, this property should be used to present suggested
-	 * actions that have to be performed by the user.
-	 * 
-	 * <p>
-	 * The property must be of type <code>String</code>.
-	 * </p>
-	 */
-	public static final QualifiedName HINT_PROPERTY = new QualifiedName(
-			PROPERTY_PREFIX, "suggestedAction"); //$NON-NLS-1$
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusAdapter.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusAdapter.java
deleted file mode 100644
index 35c5eb9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusAdapter.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import java.util.HashMap;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.QualifiedName;
-
-/**
- * <p>
- * The StatusAdapter wraps an instance of IStatus subclass and can hold
- * additional information either by using properties or by adding a new adapter. Used during
- * status handling process.
- * </p>
- * 
- * @since 3.3
- */
-public class StatusAdapter implements IAdaptable {
-
-	/**
-	 * This property is used to add title to the adapter. If the adapter is
-	 * shown in a dialog, this property is used to create title of the dialog.
-	 * 
-	 * @deprecated use {@link IStatusAdapterConstants#TITLE_PROPERTY} instead
-	 */
-	public static final QualifiedName TITLE_PROPERTY = IStatusAdapterConstants.TITLE_PROPERTY;
-
-	/**
-	 * This property is used to add a timestamp to the adapter. If the adapter
-	 * is shown in the UI, this property can be used for sorting and showing
-	 * information about the status creation time.
-	 * 
-	 * <p>
-	 * The property must be of type <code>Long</code>.
-	 * </p>
-	 * 
-	 * @deprecated use {@link IStatusAdapterConstants#TIMESTAMP_PROPERTY}
-	 *             instead
-	 */
-	public static final QualifiedName TIMESTAMP_PROPERTY = IStatusAdapterConstants.TIMESTAMP_PROPERTY;
-
-	private IStatus status;
-
-	private HashMap properties;
-
-	private HashMap adapters;
-
-	/**
-	 * Creates an instance of this class.
-	 * 
-	 * @param status
-	 *            the status to wrap. May not be <code>null</code>.
-	 */
-	public StatusAdapter(IStatus status) {
-		this.status = status;
-	}
-
-	/**
-	 * Associates new object which is an instance of the given class with this
-	 * adapter. object will be returned when {@link IAdaptable#getAdapter(Class)}
-	 * is called on the receiver with {@link Class} adapter as a parameter.
-	 * 
-	 * @param adapter
-	 *            the adapter class
-	 * @param object
-	 *            the adapter instance
-	 */
-	public void addAdapter(Class adapter, Object object) {
-		if (adapters == null) {
-			adapters = new HashMap();
-		}
-		adapters.put(adapter, object);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapters == null) {
-			return null;
-		}
-		return adapters.get(adapter);
-	}
-
-	/**
-	 * Returns the wrapped status.
-	 * 
-	 * @return the wrapped status set in the constructor or in
-	 *         <code>setStatus(IStatus)</code>. Will not be <code>null</code>.
-	 */
-	public IStatus getStatus() {
-		return status;
-	}
-
-	/**
-	 * Sets a new status for this adapter.
-	 * 
-	 * @param status
-	 *            the status to set. May not be <code>null</code>.
-	 */
-	public void setStatus(IStatus status) {
-		this.status = status;
-	}
-
-	/**
-	 * Returns the value of the adapter's property identified by the given key,
-	 * or <code>null</code> if this adapter has no such property.
-	 * 
-	 * @param key
-	 *            the qualified name of the property
-	 * @return the value of the property, or <code>null</code> if this adapter
-	 *         has no such property
-	 */
-	public Object getProperty(QualifiedName key) {
-		if (properties == null) {
-			return null;
-		}
-		return properties.get(key);
-	}
-
-	/**
-	 * Sets the value of the receiver's property identified by the given key.
-	 * 
-	 * @param key
-	 *            the qualified name of the property
-	 * @param value
-	 *            the value of the property
-	 */
-	public void setProperty(QualifiedName key, Object value) {
-		if (properties == null) {
-			properties = new HashMap();
-		}
-		properties.put(key, value);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java
deleted file mode 100644
index 0e72e07..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.ILogListener;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.internal.WorkbenchErrorHandlerProxy;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.misc.StatusUtil;
-import org.eclipse.ui.internal.progress.FinishedJobs;
-import org.eclipse.ui.internal.progress.StatusAdapterHelper;
-import org.eclipse.ui.internal.statushandlers.StatusHandlerRegistry;
-import org.eclipse.ui.progress.IProgressConstants;
-
-/**
- * <p>
- * StatusManager is the entry point for all statuses to be reported in the user
- * interface.
- * </p>
- * 
- * <p>
- * Handlers shoudn't be used directly but through the StatusManager singleton
- * which keeps the status handling policy and chooses handlers.
- * <code>StatusManager.getManager().handle(IStatus)</code> and
- * <code>handle(IStatus status, int style)</code> are the methods are the
- * primary access points to the StatusManager.
- * </p>
- * 
- * <p>
- * Acceptable styles (can be combined with logical OR)
- * <ul>
- * <li>NONE - a style indicating that the status should not be acted on. This
- * is used by objects such as log listeners that do not want to report a status
- * twice</li>
- * <li>LOG - a style indicating that the status should be logged only</li>
- * <li>SHOW - a style indicating that handlers should show a problem to an user
- * without blocking the calling method while awaiting user response. This is
- * generally done using a non modal {@link Dialog}</li>
- * <li>BLOCK - a style indicating that the handling should block the calling
- * method until the user has responded. This is generally done using a modal
- * window such as a {@link Dialog}</li>
- * </ul>
- * </p>
- * 
- * <p>
- * Handlers are intended to be accessed via the status manager. The
- * StatusManager chooses which handler should be used for a particular error.
- * There are two ways for adding handlers to the handling flow. First using
- * extension point <code>org.eclipse.ui.statusHandlers</code>, second by the
- * workbench advisor and its method
- * {@link WorkbenchAdvisor#getWorkbenchErrorHandler()}. If a handler is
- * associated with a product, it is used instead of this defined in advisor.
- * </p>
- * 
- * @since 3.3
- * @see AbstractStatusHandler
- */
-public class StatusManager {
-	/**
-	 * A style indicating that the status should not be acted on. This is used
-	 * by objects such as log listeners that do not want to report a status
-	 * twice.
-	 */
-	public static final int NONE = 0;
-
-	/**
-	 * A style indicating that the status should be logged only.
-	 */
-	public static final int LOG = 0x01;
-
-	/**
-	 * A style indicating that handlers should show a problem to an user without
-	 * blocking the calling method while awaiting user response. This is
-	 * generally done using a non modal {@link Dialog}.
-	 */
-	public static final int SHOW = 0x02;
-
-	/**
-	 * A style indicating that the handling should block the calling method
-	 * until the user has responded. This is generally done using a modal window
-	 * such as a {@link Dialog}.
-	 */
-	public static final int BLOCK = 0x04;
-
-	private static StatusManager MANAGER;
-
-	private AbstractStatusHandler workbenchHandler;
-
-	private List loggedStatuses = new ArrayList();
-
-	/**
-	 * Returns StatusManager singleton instance.
-	 * 
-	 * @return the manager instance
-	 */
-	public static StatusManager getManager() {
-		if (MANAGER == null) {
-			MANAGER = new StatusManager();
-		}
-		return MANAGER;
-	}
-
-	private StatusManager() {
-		Platform.addLogListener(new StatusManagerLogListener());
-	}
-
-	/**
-	 * @return the workbench status handler
-	 */
-	private AbstractStatusHandler getWorkbenchHandler() {
-		if (workbenchHandler == null) {
-			workbenchHandler = new WorkbenchErrorHandlerProxy();
-		}
-
-		return workbenchHandler;
-	}
-
-	/**
-	 * Handles the given status adapter due to the style. Because the facility
-	 * depends on Workbench, this method will log the status, if Workbench isn't
-	 * initialized and the style isn't {@link #NONE}. If Workbench isn't
-	 * initialized and the style is {@link #NONE}, the manager will do nothing.
-	 * 
-	 * @param statusAdapter
-	 *            the status adapter
-	 * @param style
-	 *            the style. Value can be combined with logical OR. One of
-	 *            {@link #NONE}, {@link #LOG}, {@link #SHOW} and
-	 *            {@link #BLOCK}.
-	 */
-	public void handle(StatusAdapter statusAdapter, int style) {
-		try {
-			// The manager will only log the error when the status adapter or
-			// the embedded status is null.
-			if (statusAdapter == null) {
-				logError(
-						"Error occurred during status handling",//$NON-NLS-1$
-						new NullPointerException("StatusAdapter object is null")); //$NON-NLS-1$
-				return;
-			}
-			if (statusAdapter.getStatus() == null) {
-				logError("Error occurred during status handling",//$NON-NLS-1$
-						new NullPointerException("Status object is null")); //$NON-NLS-1$
-				return;
-			}
-
-			// The manager will only log the status, if Workbench isn't
-			// initialized and the style isn't NONE. If Workbench isn't
-			// initialized and the style is NONE, the manager will do nothing.
-			if (!PlatformUI.isWorkbenchRunning()) {
-				if (style != StatusManager.NONE) {
-					logError(statusAdapter.getStatus());
-				}
-				return;
-			}
-
-			// tries to handle the problem with default (product) handler
-			if (StatusHandlerRegistry.getDefault()
-					.getDefaultHandlerDescriptor() != null) {
-				try {
-					StatusHandlerRegistry.getDefault()
-							.getDefaultHandlerDescriptor().getStatusHandler()
-							.handle(statusAdapter, style);
-					// if statuses are shown, all finished jobs with error will
-					// be removed,
-					// we should remove it from the status manager, when error
-					// icon
-					// will be part of handlers not ProgressAnimationItem
-					if (((style & StatusManager.SHOW) == StatusManager.SHOW || (style & StatusManager.BLOCK) == StatusManager.BLOCK)
-							&& statusAdapter
-									.getProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY) != Boolean.TRUE) {
-						FinishedJobs.getInstance().removeErrorJobs();
-						StatusAdapterHelper.getInstance().clear();
-					}
-					return;
-				} catch (CoreException ex) {
-					logError("Errors during the default handler creating", ex); //$NON-NLS-1$
-				}
-			}
-
-			// delegates the problem to workbench handler
-			getWorkbenchHandler().handle(statusAdapter, style);
-
-			// if statuses are shown, all finished jobs with error will be
-			// removed,
-			// we should remove it from the status manager, when error icon
-			// will be part of handlers not ProgressAnimationItem
-			if (((style & StatusManager.SHOW) == StatusManager.SHOW || (style & StatusManager.BLOCK) == StatusManager.BLOCK)
-					&& statusAdapter
-							.getProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY) != Boolean.TRUE) {
-				FinishedJobs.getInstance().removeErrorJobs();
-			}
-		} catch (Throwable ex) {
-			// The used status handler failed
-			logError(statusAdapter.getStatus());
-			logError("Error occurred during status handling", ex); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Handles the given status adapter. The {@link #LOG} style is used when
-	 * this method is called.
-	 * 
-	 * @param statusAdapter
-	 *            the status adapter
-	 */
-	public void handle(StatusAdapter statusAdapter) {
-		handle(statusAdapter, StatusManager.LOG);
-	}
-
-	/**
-	 * Handles the given status due to the style. Because the facility depends
-	 * on Workbench, this method will log the status, if Workbench isn't
-	 * initialized and the style isn't {@link #NONE}. If Workbench isn't
-	 * initialized and the style is {@link #NONE}, the manager will do nothing.
-	 * 
-	 * @param status
-	 *            the status to handle
-	 * @param style
-	 *            the style. Value can be combined with logical OR. One of
-	 *            {@link #NONE}, {@link #LOG}, {@link #SHOW} and
-	 *            {@link #BLOCK}.
-	 */
-	public void handle(IStatus status, int style) {
-		StatusAdapter statusAdapter = new StatusAdapter(status);
-		handle(statusAdapter, style);
-	}
-
-	/**
-	 * Handles the given status. The {@link #LOG} style is used when this method
-	 * is called.
-	 * 
-	 * @param status
-	 *            the status to handle
-	 */
-	public void handle(IStatus status) {
-		handle(status, StatusManager.LOG);
-	}
-
-	/**
-	 * Handles given CoreException. This method has been introduced to prevent
-	 * anti-pattern: <br/><code>
-	 * StatusManager.getManager().handle(coreException.getStatus());
-	 * </code><br/>
-	 * that does not print the stack trace to the log.
-	 * 
-	 * @param coreException
-	 *            a CoreException to be handled.
-	 * @param pluginId
-	 *            the unique identifier of the relevant plug-in
-	 * @see StatusManager#handle(IStatus)
-	 * @since 3.4
-	 * 
-	 */
-	public void handle(CoreException coreException,String pluginId) {
-		handle(new Status(IStatus.WARNING, pluginId, coreException
-				.getLocalizedMessage(), coreException));
-	}
-
-	/**
-	 * This method informs the StatusManager that this IStatus is being handled
-	 * by the handler and to ignore it when it shows up in our ILogListener.
-	 * 
-	 * @param status
-	 *            already handled and logged status
-	 */
-	public void addLoggedStatus(IStatus status) {
-		loggedStatuses.add(status);
-	}
-
-	private void logError(String message, Throwable ex) {
-		IStatus status = StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH,
-				message, ex);
-		addLoggedStatus(status);
-		WorkbenchPlugin.log(status);
-	}
-
-	private void logError(IStatus status) {
-		addLoggedStatus(status);
-		WorkbenchPlugin.log(status);
-	}
-
-	/**
-	 * This log listener handles statuses added to a plug-in's log. If our own
-	 * WorkbenchErrorHandler inserts it into the log, then ignore it.
-	 * 
-	 * @see #addLoggedStatus(IStatus)
-	 * @since 3.3
-	 */
-	private class StatusManagerLogListener implements ILogListener {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.ILogListener#logging(org.eclipse.core.runtime.IStatus,
-		 *      java.lang.String)
-		 */
-		public void logging(IStatus status, String plugin) {
-			if (!loggedStatuses.contains(status)) {
-				handle(status, StatusManager.NONE);
-			} else {
-				loggedStatuses.remove(status);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java
deleted file mode 100644
index 7f58bcb..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.application.WorkbenchAdvisor;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * This is a default workbench error handler.
- * 
- * @see WorkbenchAdvisor#getWorkbenchErrorHandler()
- * @since 3.3
- */
-public class WorkbenchErrorHandler extends AbstractStatusHandler {
-
-	private WorkbenchStatusDialogManager statusDialog;
-
-	/**
-	 * For testing purposes only. This method must not be used by any other
-	 * clients.
-	 * 
-	 * @param dialog
-	 *            a new WorkbenchStatusDialog to be set.
-	 */
-	void setStatusDialog(WorkbenchStatusDialogManager dialog) {
-		statusDialog = dialog;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.statushandlers.AbstractStatusHandler#handle(org.eclipse.ui.statushandlers.StatusAdapter,
-	 *      int)
-	 */
-	public void handle(final StatusAdapter statusAdapter, int style) {
-		if (((style & StatusManager.SHOW) == StatusManager.SHOW)
-				|| ((style & StatusManager.BLOCK) == StatusManager.BLOCK)) {
-
-			// INFO status is set in the adapter when the passed adapter has OK
-			// or CANCEL status
-			if (statusAdapter.getStatus().getSeverity() == IStatus.OK
-					|| statusAdapter.getStatus().getSeverity() == IStatus.CANCEL) {
-				IStatus status = statusAdapter.getStatus();
-				statusAdapter.setStatus(new Status(IStatus.INFO, status
-						.getPlugin(), status.getMessage(), status
-						.getException()));
-			}
-
-			final boolean modal = ((style & StatusManager.BLOCK) == StatusManager.BLOCK);
-			if (Display.getCurrent() != null) {
-				getStatusDialogManager().addStatusAdapter(statusAdapter, modal);
-			} else {
-				Display.getDefault().asyncExec(new Runnable() {
-					public void run() {
-						if (!PlatformUI.isWorkbenchRunning()) {
-							// we are shutting down, so just log
-							WorkbenchPlugin.log(statusAdapter.getStatus());
-							return;
-						}
-						getStatusDialogManager().addStatusAdapter(
-								statusAdapter, modal);
-					}
-				});
-			}
-		}
-
-		if ((style & StatusManager.LOG) == StatusManager.LOG) {
-			StatusManager.getManager().addLoggedStatus(
-					statusAdapter.getStatus());
-			WorkbenchPlugin.getDefault().getLog()
-					.log(statusAdapter.getStatus());
-		}
-	}
-
-	/**
-	 * This method returns current {@link WorkbenchStatusDialogManager}.
-	 * 
-	 * @return current {@link WorkbenchStatusDialogManager}
-	 */
-	private WorkbenchStatusDialogManager getStatusDialogManager() {
-		if (statusDialog == null) {
-			initStatusDialogManager();
-		}
-		return statusDialog;
-	}
-
-	/**
-	 * This methods should be overridden to configure
-	 * {@link WorkbenchStatusDialogManager} behavior. It is advised to use only
-	 * following methods of {@link WorkbenchStatusDialogManager}:
-	 * <ul>
-	 * <li>{@link WorkbenchStatusDialogManager#enableDefaultSupportArea(boolean)}</li>
-	 * <li>{@link WorkbenchStatusDialogManager#setDetailsAreaProvider(AbstractStatusAreaProvider)}</li>
-	 * <li>{@link WorkbenchStatusDialogManager#setSupportAreaProvider(AbstractStatusAreaProvider)}</li>
-	 * </ul>
-	 * Default configuration does nothing.
-	 * 
-	 * @param statusDialog
-	 *            a status dialog to be configured.
-	 * @since 3.4
-	 */
-	protected void configureStatusDialog(
-			final WorkbenchStatusDialogManager statusDialog) {
-		// default configuration does nothing
-	}
-
-	/**
-	 * This method initializes {@link WorkbenchStatusDialogManager} and is called only
-	 * once.
-	 */
-	private void initStatusDialogManager() {
-		statusDialog = new WorkbenchStatusDialogManager(null);
-		configureStatusDialog(statusDialog);
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java
deleted file mode 100644
index 5e980b4..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java
+++ /dev/null
@@ -1,2198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.ui.statushandlers;
-
-import java.net.URL;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.DialogTray;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.ErrorSupportProvider;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
-import org.eclipse.jface.dialogs.TrayDialog;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.LocalResourceManager;
-import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.util.Policy;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-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.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-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.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.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.progress.ProgressManager;
-import org.eclipse.ui.internal.progress.ProgressManagerUtil;
-import org.eclipse.ui.internal.progress.ProgressMessages;
-import org.eclipse.ui.internal.statushandlers.DefaultDetailsArea;
-import org.eclipse.ui.internal.statushandlers.StackTraceSupportArea;
-import org.eclipse.ui.progress.IProgressConstants;
-
-import com.ibm.icu.text.DateFormat;
-
-/**
- * <p>
- * The {@link WorkbenchStatusDialogManager} is a utility class for displaying
- * one or more messages (errors, warnings or infos) to the user. The dialog
- * supplied has a Details button that opens/closes the details area. The default
- * {@link AbstractStatusAreaProvider} displays a tree of {@link StatusAdapter}s
- * related to the selected item on the messages list. The dialog also hasa
- * Support button that opens/closes the support area which contains the provided
- * {@link AbstractStatusAreaProvider}. The Support button is disabled and not
- * visible unless
- * {@link WorkbenchStatusDialogManager#enableDefaultSupportArea(boolean)} is
- * invoked.
- * </p>
- * 
- * <p>
- * The default details area can be replaced using
- * {@link WorkbenchStatusDialogManager#setDetailsAreaProvider(AbstractStatusAreaProvider)}
- * </p>
- * 
- * <p>
- * The default support area can be replaced using
- * {@link WorkbenchStatusDialogManager#setSupportAreaProvider(AbstractStatusAreaProvider)}
- * or {@link Policy#setErrorSupportProvider(ErrorSupportProvider)}.
- * </p>
- * 
- * <p>
- * The manager can switch from a non-modal dialog to a modal dialog. See
- * {@link #addStatusAdapter(StatusAdapter, boolean)}
- * </p>
- * 
- * <p>
- * IMPORTANT: This class is <em>not</em> intended to be subclassed by clients.
- * </p>
- * 
- * @see Policy#setErrorSupportProvider(ErrorSupportProvider)
- * @see ErrorSupportProvider
- * @see AbstractStatusAreaProvider
- * @since 3.4
- */
-public class WorkbenchStatusDialogManager {
-
-	/**
-	 * This class is responsible for managing details area.
-	 * 
-	 * @since 3.4
-	 */
-	private final class DetailsAreaManager {
-		private AbstractStatusAreaProvider provider = null;
-		private Control control = null;
-
-		/**
-		 * Closes the details area
-		 */
-		public void close() {
-			if (control != null && !control.isDisposed()) {
-				control.dispose();
-			}
-		}
-
-		/**
-		 * This method is responsible for creating details area on the specified
-		 * Composite and displaying specified StatusAdapter
-		 * 
-		 * @param parent
-		 *            A composite on which should be the details area created.
-		 * @param statusAdapter
-		 *            StatusAdapter for which should be the details area
-		 *            created.
-		 */
-		public void createDetailsArea(Composite parent,
-				StatusAdapter statusAdapter) {
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(GridLayoutFactory.fillDefaults().create());
-			container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-			getProvider().createSupportArea(container, statusAdapter);
-			control = container;
-		}
-
-		/**
-		 * Returns current detail area provider.
-		 * 
-		 * @return current detail area provider.
-		 */
-		private AbstractStatusAreaProvider getProvider() {
-			if (provider == null) {
-				provider = new DefaultDetailsArea(
-						WorkbenchStatusDialogManager.this);
-			}
-			return provider;
-		}
-
-		/**
-		 * This method allows to check if the details area is open (physically
-		 * constructed).
-		 * 
-		 * @return true if the area is open, false otherwise
-		 */
-		public boolean isOpen() {
-			if (control == null || control.isDisposed()) {
-				return false;
-			}
-			return true;
-		}
-
-		/**
-		 * This method sets the details area provider. If null is set, the
-		 * default area provider (status tree) will be used.
-		 * 
-		 * @param provider
-		 *            A provider that will create contents for details area.
-		 */
-		public void setDetailsAreaProvider(AbstractStatusAreaProvider provider) {
-			this.provider = provider;
-		}
-	}
-
-	/**
-	 * Parent window actually does not use its Shell to build dialog on. The
-	 * window passes the shell to the InternalDialog, and it can do switching
-	 * modality and recreate the window silently.
-	 * 
-	 * @since 3.4
-	 */
-	private class InternalDialog extends TrayDialog {
-
-		private WorkbenchStatusDialogManager statusDialog;
-
-		/**
-		 * Instantiates the internal dialog on the given shell. Created dialog
-		 * uses statusDialog methods to create its contents.
-		 * 
-		 * @param parentShell -
-		 *            a parent shell for the dialog
-		 * @param statusDialog -
-		 *            a dialog from which methods should be used to create
-		 *            contents
-		 * @param modal -
-		 *            true if created dialog should be modal, false otherwise.
-		 */
-		public InternalDialog(Shell parentShell,
-				WorkbenchStatusDialogManager statusDialog, boolean modal) {
-			super(parentShell);
-
-			this.statusDialog = statusDialog;
-			setShellStyle(SWT.RESIZE | SWT.MAX | SWT.MIN | getShellStyle());
-			setBlockOnOpen(false);
-
-			if (!modal) {
-				setShellStyle(~SWT.APPLICATION_MODAL & getShellStyle());
-			}
-		}
-
-		protected void buttonPressed(int id) {
-			if (id == GOTO_ACTION_ID) {
-				IAction gotoAction = getGotoAction();
-				if (gotoAction != null) {
-					if (isPromptToClose()) {
-						okPressed(); // close the dialog
-						gotoAction.run(); // run the goto action
-					}
-				}
-			}
-			if (id == IDialogConstants.DETAILS_ID) {
-				// was the details button pressed?
-				detailsOpened = toggleDetailsArea();
-			} else {
-				super.buttonPressed(id);
-			}
-		}
-
-		/*
-		 * (non-Javadoc) Method declared in Window.
-		 */
-		final protected void configureShell(Shell shell) {
-			super.configureShell(shell);
-			if (title != null) {
-				shell.setText(title);
-			}
-		}
-
-		public int convertHeightInCharsToPixels(int chars) {
-			return super.convertHeightInCharsToPixels(chars);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#convertHorizontalDLUsToPixels(int)
-		 */
-		public int convertHorizontalDLUsToPixels(int dlus) {
-			return super.convertHorizontalDLUsToPixels(dlus);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#convertVerticalDLUsToPixels(int)
-		 */
-		public int convertVerticalDLUsToPixels(int dlus) {
-			return super.convertVerticalDLUsToPixels(dlus);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#convertWidthInCharsToPixels(int)
-		 */
-		public int convertWidthInCharsToPixels(int chars) {
-			return super.convertWidthInCharsToPixels(chars);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#createButton(org.eclipse.swt.widgets.Composite,
-		 *      int, java.lang.String, boolean)
-		 */
-		public Button createButton(Composite parent, int id, String label,
-				boolean defaultButton) {
-			return super.createButton(parent, id, label, defaultButton);
-		}
-		
-		/**
-		 * Status dialog button should be aligned SWT.END. 
-		 */
-		protected void setButtonLayoutData(Button button) {
-			GridData data = new GridData(SWT.END, SWT.FILL, false, false);
-			int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
-			Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-			data.widthHint = Math.max(widthHint, minSize.x);
-			button.setLayoutData(data);
-		}
-
-		protected Control createButtonBar(Composite parent) {
-			return statusDialog.createButtonBar(parent);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-		 */
-		protected Control createDialogArea(Composite parent) {
-			return statusDialog.createDialogArea(parent);
-		}
-
-		public Button getButton(int id) {
-			return super.getButton(id);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#initializeBounds()
-		 */
-		protected void initializeBounds() {
-			super.initializeBounds();
-			this.statusDialog.initializeBounds();
-		}
-
-		/**
-		 * This function checks if the dialog is modal.
-		 * 
-		 * @return true if the dialog is modal, false otherwise
-		 * 
-		 */
-		public boolean isModal() {
-			return ((getShellStyle() & SWT.APPLICATION_MODAL) == SWT.APPLICATION_MODAL);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.Dialog#isResizable()
-		 */
-		protected boolean isResizable() {
-			return true;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.window.Window#open()
-		 */
-		public int open() {
-			if (shouldDisplay(statusAdapter, displayMask)) {
-				int result = super.open();
-				if (modalitySwitch) {
-					if (detailsOpened) {
-						showDetailsArea();
-					}
-					if (trayOpened) {
-						openTray(supportTray);
-					}
-				}
-				return result;
-			}
-			setReturnCode(OK);
-			return OK;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.dialogs.TrayDialog#closeTray()
-		 */
-		public void closeTray() throws IllegalStateException {
-			super.closeTray();
-			trayOpened = false;
-			if (launchTrayButton != null && !launchTrayButton.isDisposed()) {
-				launchTrayButton.setEnabled(supportTray.providesSupport() && !trayOpened);
-			}
-		}
-		
-	}
-
-	/**
-	 * This class is responsible for disposing dialog elements when the dialog
-	 * is closed.
-	 * 
-	 * @since 3.4
-	 * 
-	 */
-	private final class StatusDialogDisposeListener implements DisposeListener {
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
-		 */
-		public void widgetDisposed(org.eclipse.swt.events.DisposeEvent e) {
-			dialog = null;
-			statusListViewer = null;
-			statusAdapter = null;
-			errors.clear();
-			modals.clear();
-		}
-	}
-
-	/**
-	 * This class is responsible for displaying the support area on the right
-	 * side of the status dialog.
-	 * 
-	 * @since 3.4
-	 * 
-	 */
-	private class SupportTray extends DialogTray implements
-			ISelectionChangedListener {
-
-		private IContributionItem closeAction;
-		private Image normal;
-		private Image hover;
-
-		private Composite supportArea;
-		private Composite supportAreaContent;
-
-		private StatusAdapter lastSelectedStatus;
-		private boolean defaultSupportAreaEnabled;
-
-		/**
-		 * Creates any actions needed by the tray.
-		 */
-		private void createActions() {
-			createImages();
-			closeAction = new ContributionItem() {
-				public void fill(ToolBar parent, int index) {
-					final ToolItem item = new ToolItem(parent, SWT.PUSH);
-					item.setImage(normal);
-					item.setHotImage(hover);
-					item.setToolTipText(JFaceResources.getString("close")); //$NON-NLS-1$
-					item.addListener(SWT.Selection, new Listener() {
-						public void handleEvent(Event event) {
-							trayOpened = false;
-
-							// close the tray
-							closeTray();
-
-							// set focus back to shell
-							getShell().setFocus();
-						}
-					});
-				}
-			};
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.dialogs.DialogTray#createContents(org.eclipse.swt.widgets.Composite)
-		 */
-		protected Control createContents(Composite parent) {
-			Composite container = new Composite(parent, SWT.NONE);
-
-			// nothing to display. Should never happen, cause button is disabled
-			// when nothing to display.
-
-			if (!providesSupport()) {
-				return container;
-			}
-
-			GridLayout layout = new GridLayout();
-			layout.marginWidth = layout.marginHeight = 0;
-			layout.verticalSpacing = 0;
-			container.setLayout(layout);
-			GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
-			container.setLayoutData(layoutData);
-
-			container.addListener(SWT.Dispose, new Listener() {
-				public void handleEvent(Event event) {
-					// dispose event
-				}
-			});
-
-			ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
-			toolBarManager.createControl(container);
-			GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
-			gd.grabExcessHorizontalSpace = true;
-			toolBarManager.getControl().setLayoutData(gd);
-			Label separator = new Label(container, SWT.SEPARATOR
-					| SWT.HORIZONTAL);
-			gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-			gd.heightHint = 1;
-			separator.setLayoutData(gd);
-
-			createActions();
-			toolBarManager.add(closeAction);
-
-			toolBarManager.update(true);
-
-			supportArea = new Composite(container, SWT.NONE);
-			layout = new GridLayout();
-			layout.marginWidth = layout.marginHeight = 0;
-			layout.verticalSpacing = 0;
-			supportArea.setLayout(layout);
-			gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-					| GridData.VERTICAL_ALIGN_FILL);
-			gd.horizontalSpan = 1;
-			gd.grabExcessHorizontalSpace = true;
-			gd.grabExcessVerticalSpace = true;
-			supportArea.setLayoutData(gd);
-			
-			// if only one status adapter is displayed,
-			// selection listener does not work, so it is necessary to
-			// set the last selected status manually
-			if (getStatusAdapters().size() == 1) {
-				lastSelectedStatus = statusAdapter;
-			}
-
-			if (lastSelectedStatus != null)
-				createSupportArea(supportArea, lastSelectedStatus);
-
-			Point shellSize = getShell().getSize();
-			Point desiredSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			
-			if(desiredSize.y > shellSize.y){
-				getShell().setSize(shellSize.x, Math.min(desiredSize.y,500));
-			}
-
-			return container;
-		}
-
-		/**
-		 * Creates any custom needed by the tray, such as the close button.
-		 */
-		private void createImages() {
-			Display display = Display.getCurrent();
-			int[] shape = new int[] { 3, 3, 5, 3, 7, 5, 8, 5, 10, 3, 12, 3, 12,
-					5, 10, 7, 10, 8, 12, 10, 12, 12, 10, 12, 8, 10, 7, 10, 5,
-					12, 3, 12, 3, 10, 5, 8, 5, 7, 3, 5 };
-
-			/*
-			 * Use magenta as transparency color since it is used infrequently.
-			 */
-			Color border = display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW);
-			Color background = display
-					.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
-			Color backgroundHot = new Color(display, new RGB(252, 160, 160));
-			Color transparent = display.getSystemColor(SWT.COLOR_MAGENTA);
-
-			PaletteData palette = new PaletteData(new RGB[] {
-					transparent.getRGB(), border.getRGB(), background.getRGB(),
-					backgroundHot.getRGB() });
-			ImageData data = new ImageData(16, 16, 8, palette);
-			data.transparentPixel = 0;
-
-			normal = new Image(display, data);
-			normal.setBackground(transparent);
-			GC gc = new GC(normal);
-			gc.setBackground(background);
-			gc.fillPolygon(shape);
-			gc.setForeground(border);
-			gc.drawPolygon(shape);
-			gc.dispose();
-
-			hover = new Image(display, data);
-			hover.setBackground(transparent);
-			gc = new GC(hover);
-			gc.setBackground(backgroundHot);
-			gc.fillPolygon(shape);
-			gc.setForeground(border);
-			gc.drawPolygon(shape);
-			gc.dispose();
-
-			backgroundHot.dispose();
-		}
-
-		/**
-		 * Create the area for extra error support information.
-		 * 
-		 * @param parent
-		 *            A composite on which should be the support area created.
-		 * @param statusAdapter
-		 *            StatusAdapter for which should be the support area
-		 *            created.
-		 */
-		private void createSupportArea(Composite parent,
-				StatusAdapter statusAdapter) {
-
-			ErrorSupportProvider provider = Policy.getErrorSupportProvider();
-
-			if (userSupportProvider != null) {
-				provider = userSupportProvider;
-			}
-
-			if (defaultSupportAreaEnabled && provider == null) {
-				provider = new StackTraceSupportArea();
-			}
-
-			// default support area was disabled
-			if (provider == null)
-				return;
-
-			if (supportAreaContent != null)
-				supportAreaContent.dispose();
-
-			supportAreaContent = new Composite(parent, SWT.FILL);
-
-			GridData supportData = new GridData(SWT.FILL, SWT.FILL, true, true);
-			supportAreaContent.setLayoutData(supportData);
-			if (supportAreaContent.getLayout() == null) {
-				GridLayout layout = new GridLayout();
-				layout.marginWidth = 0;
-				layout.marginHeight = 0;
-				supportAreaContent.setLayout(layout); // Give it a default
-				// layout
-			}
-
-			if (provider instanceof AbstractStatusAreaProvider) {
-				((AbstractStatusAreaProvider) provider).createSupportArea(
-						supportAreaContent, statusAdapter);
-			} else {
-				provider.createSupportArea(supportAreaContent, statusAdapter
-						.getStatus());
-			}
-		}
-
-		/**
-		 * This method manages the enablement of the default support area.
-		 * 
-		 * @param enable
-		 *            true enables, false disables.
-		 */
-		public void enableDefaultSupportArea(boolean enable) {
-			this.defaultSupportAreaEnabled = enable;
-		}
-
-		private StatusAdapter getStatusAdapterFromEvent(
-				SelectionChangedEvent event) {
-
-			ISelection selection = event.getSelection();
-
-			if (selection instanceof StructuredSelection) {
-				StructuredSelection structuredSelection = (StructuredSelection) selection;
-				Object element = structuredSelection.getFirstElement();
-				if (element instanceof StatusAdapter) {
-					return (StatusAdapter) element;
-				}
-			}
-			return null;
-		}
-
-		/**
-		 * Checks if the support dialog has any support areas.
-		 * 
-		 * @return true if support dialog has any support areas to display,
-		 *         false otherwise
-		 * 
-		 */
-		private boolean providesSupport() {
-			if (Policy.getErrorSupportProvider() != null) {
-				return true;
-			}
-			if (userSupportProvider != null) {
-				return true;
-			}
-			return defaultSupportAreaEnabled;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-		 */
-		public void selectionChanged(SelectionChangedEvent event) {
-			lastSelectedStatus = getStatusAdapterFromEvent(event);
-			if (supportArea != null && !supportArea.isDisposed()) {
-				if (lastSelectedStatus != null) {
-					createSupportArea(supportArea, lastSelectedStatus);
-					supportArea.layout(true);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Preference used to indicate whether the user should be prompted to
-	 * confirm the execution of the job's goto action
-	 */
-	private static final String PREF_SKIP_GOTO_ACTION_PROMPT = "pref_skip_goto_action_prompt"; //$NON-NLS-1$
-
-	/**
-	 * The id of the goto action button
-	 */
-	private static final int GOTO_ACTION_ID = IDialogConstants.CLIENT_ID + 1;
-
-	/**
-	 * Returns whether the given StatusAdapter object should be displayed.
-	 * 
-	 * @param statusAdapter
-	 *            a status object
-	 * @param mask
-	 *            a mask as per <code>IStatus.matches</code>
-	 * @return <code>true</code> if the given status should be displayed, and
-	 *         <code>false</code> otherwise
-	 * @see org.eclipse.core.runtime.IStatus#matches(int)
-	 */
-	private static boolean shouldDisplay(StatusAdapter statusAdapter, int mask) {
-		IStatus status = statusAdapter.getStatus();
-		IStatus[] children = status.getChildren();
-		if (children == null || children.length == 0) {
-			return status.matches(mask);
-		}
-		for (int i = 0; i < children.length; i++) {
-			if (children[i].matches(mask)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Stores statuses.
-	 */
-	private Collection errors = Collections.synchronizedSet(new HashSet());
-
-	/**
-	 * Stores information, which statuses should be displayed in modal window.
-	 */
-	private HashMap modals = new HashMap();
-
-	/**
-	 * This field stores the real dialog that appears to the user.
-	 */
-	private InternalDialog dialog;
-
-	/**
-	 * This composite holds all components of the dialog.
-	 */
-	private Composite dialogArea;
-
-	/**
-	 * This composite is initially scrolled to the 0 x 0 size. When more than
-	 * one status arrives, listArea is resized and a list is created on it to
-	 * present statuses to the user.
-	 */
-	private Composite listArea;
-
-	/**
-	 * On this composite are presented additional elements for displaying single
-	 * status. Currently it is the second label that displays the second most
-	 * important message to the user.
-	 */
-	private Composite singleStatusDisplayArea;
-
-	/**
-	 * This label is used to display the second most important message to the
-	 * user. It is placed on singleStatusDisplayArea.
-	 */
-	private Label singleStatusLabel;
-
-	/**
-	 * A list from which the user selects statuses. The list is placed on
-	 * listArea.
-	 */
-	private TableViewer statusListViewer;
-
-	/**
-	 * A list label provider
-	 */
-	private ITableLabelProvider statusListLabelProvider = new ITableLabelProvider() {
-		ResourceManager manager = new LocalResourceManager(JFaceResources.getResources());
-	
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void addListener(ILabelProviderListener listener) {
-			// Do nothing
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-		 */
-		public void dispose() {
-			manager.dispose();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
-		 *      int)
-		 */
-		public Image getColumnImage(Object element, int columnIndex) {
-			Image result = null;
-			if (element != null) {
-				StatusAdapter statusAdapter = ((StatusAdapter) element);
-				Job job = (Job) (statusAdapter.getAdapter(Job.class));
-				if (job != null) {
-					result = getIcon(job);
-				}
-			}
-			// if somehow disposed image was received (should not happen)
-			if (result != null && result.isDisposed()) {
-				result = null;
-			}
-			return result;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
-		 *      int)
-		 */
-		public String getColumnText(Object element, int columnIndex) {
-			StatusAdapter statusAdapter = (StatusAdapter) element;
-			String text = WorkbenchMessages.WorkbenchStatusDialog_ProblemOccurred;
-			if (getStatusAdapters().size() == 1) {
-				Job job = (Job) (statusAdapter.getAdapter(Job.class));
-				if (job != null) {
-					text = getPrimaryMessage(statusAdapter);
-				} else {
-					text = getSecondaryMessage(statusAdapter);
-				}
-			} else {
-				Job job = (Job) (statusAdapter.getAdapter(Job.class));
-				if (job != null) {
-					text = job.getName();
-				} else {
-					text = getPrimaryMessage(statusAdapter);
-				}
-			}
-			Long timestamp = (Long) statusAdapter
-					.getProperty(IStatusAdapterConstants.TIMESTAMP_PROPERTY);
-
-			if (timestamp != null && getStatusAdapters().size() > 1) {
-				String date = DateFormat.getDateTimeInstance(DateFormat.LONG,
-						DateFormat.LONG)
-						.format(new Date(timestamp.longValue()));
-				return NLS.bind(ProgressMessages.JobInfo_Error, (new Object[] {
-						text, date }));
-			}
-			return text;
-		}
-
-		/*
-		 * Get the icon for the job.
-		 */
-		private Image getIcon(Job job) {
-			if (job != null) {
-				Object property = job
-						.getProperty(IProgressConstants.ICON_PROPERTY);
-
-				// Create an image from the job's icon property or family
-				if (property instanceof ImageDescriptor) {
-					return manager.createImage((ImageDescriptor) property);
-				} else if (property instanceof URL) {
-					return manager.createImage(ImageDescriptor
-							.createFromURL((URL) property));
-				} else {
-					// Let the progress manager handle the resource management
-					return ProgressManager.getInstance().getIconFor(job);
-				}
-			}
-			return null;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
-		 *      java.lang.String)
-		 */
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-		 */
-		public void removeListener(ILabelProviderListener listener) {
-			// Do nothing
-		}
-	};
-
-	/**
-	 * This variable holds current details area provider.
-	 */
-	private DetailsAreaManager detailsManager = new DetailsAreaManager();
-
-	private DisposeListener disposeListener = new StatusDialogDisposeListener();
-
-	/**
-	 * The title of the dialog.
-	 */
-	private String title;
-
-	/**
-	 * The current clipboard. To be disposed when closing the dialog.
-	 */
-	private Clipboard clipboard;
-
-	/**
-	 * Filter mask for determining which status items to display. Default allows
-	 * for displaying all statuses.
-	 */
-	private int displayMask = 0xFFFF;
-
-	/**
-	 * Currently selected status adapter.
-	 */
-	private StatusAdapter statusAdapter;
-
-	/**
-	 * In this support tray status support providers are displayed.
-	 */
-	private SupportTray supportTray = new WorkbenchStatusDialogManager.SupportTray();
-
-	/**
-	 * Toolbar on the left botom corner. Allows for opening support tray.
-	 */
-	private ToolBar toolBar;
-	
-	/**
-	 * This item is used to launch support tray
-	 */
-	private ToolItem launchTrayButton;
-
-	/**
-	 * This flag indicates if the dialog is switching modality. For now it is
-	 * possible only to change from non-modal to modal.
-	 */
-	private boolean modalitySwitch = false;
-
-	/**
-	 * This fields holds the information about dialog position and size when
-	 * switching the modality.
-	 */
-	private Rectangle shellBounds;
-
-	/**
-	 * This flag indicates if the details area was opened before switching the
-	 * modality or not.
-	 */
-	private boolean detailsOpened = false;
-
-	/**
-	 * This flag indicates if the support area was opened before switching the
-	 * modality or not.
-	 */
-	private boolean trayOpened = false;
-
-	/**
-	 * This field contains the support provider set by the user.
-	 */
-	private AbstractStatusAreaProvider userSupportProvider;
-
-	/**
-	 * Main dialog image holder.
-	 */
-	private Label titleImageLabel;
-
-	/**
-	 * Message in the header.
-	 */
-	private Label mainMessageLabel;
-
-	/**
-	 * Header area.
-	 */
-	private Composite titleArea;
-
-	/**
-	 * Creates workbench status dialog.
-	 * 
-	 * @param displayMask
-	 *            the mask used to filter the handled <code>StatusAdapter</code>
-	 *            objects, the mask is a logical sum of status severities
-	 * @param dialogTitle
-	 *            the title of the dialog. If null, than default will be used.
-	 */
-	
-	public WorkbenchStatusDialogManager(int displayMask, String dialogTitle) {
-		
-		Assert.isNotNull(Display.getCurrent(),
-						"WorkbenchStatusDialogManager must be instantiated in UI thread"); //$NON-NLS-1$
-
-		this.displayMask = displayMask;
-		this.title = dialogTitle == null ? JFaceResources
-				.getString("Problem_Occurred") : //$NON-NLS-1$
-				dialogTitle;
-	}
-	
-	/**
-	 * Creates workbench status dialog.
-	 * 
-	 * @param parentShell
-	 *            the parent shell for the dialog. It may be null.
-	 * @param displayMask
-	 *            the mask used to filter the handled <code>StatusAdapter</code>
-	 *            objects, the mask is a logical sum of status severities
-	 * @param dialogTitle
-	 *            the title of the dialog. If null, than default will be used.
-	 * @deprecated As of 3.4 the <code>parentShell<code> is ignored
-	 * @see #WorkbenchStatusDialogManager(int, String)
-	 */
-	public WorkbenchStatusDialogManager(Shell parentShell, int displayMask,
-			String dialogTitle) {
-
-		this(displayMask, dialogTitle);
-	}
-
-	/**
-	 * Creates workbench status dialog.
-	 * 
-	 * @param dialogTitle
-	 *            the title of the dialog. If null, than default will be used.
-	 */
-	public WorkbenchStatusDialogManager(String dialogTitle) {
-		this(IStatus.INFO | IStatus.WARNING | IStatus.ERROR, dialogTitle);
-	}
-
-	/**
-	 * Creates workbench status dialog.
-	 * 
-	 * @param parentShell
-	 *            the parent shell for the dialog. It may be null.
-	 * @param dialogTitle
-	 *            the title of the dialog. If null, than default will be used.
-	 * @deprecated As of 3.4 the <code>parentShell<code> is ignored
-	 * @see #WorkbenchStatusDialogManager(String)
-	 */
-	public WorkbenchStatusDialogManager(Shell parentShell, String dialogTitle) {
-		this(dialogTitle);
-	}
-
-	/**
-	 * <p>
-	 * Adds a new {@link StatusAdapter} to the status adapters list in the
-	 * dialog.
-	 * </p>
-	 * <p>
-	 * If the dialog is already visible, the status adapter will be shown
-	 * immediately. Otherwise, the dialog with the added status adapter will
-	 * show up, if all conditions below are false.
-	 * <ul>
-	 * <li>the status adapter has
-	 * {@link IProgressConstants#NO_IMMEDIATE_ERROR_PROMPT_PROPERTY} set to true</li>
-	 * </ul>
-	 * </p>
-	 * <p>
-	 * All not shown status adapters will be displayed as soon as the dialog
-	 * shows up.
-	 * </p>
-	 * 
-	 * @param modal
-	 *            <code>true</code> if the dialog should be modal,
-	 *            <code>false</code> otherwise
-	 * @param statusAdapter
-	 *            the status adapter
-	 */
-	public void addStatusAdapter(final StatusAdapter statusAdapter,
-			final boolean modal) {
-
-		if (ErrorDialog.AUTOMATED_MODE == true) {
-			return;
-		}
-		
-		Assert.isNotNull(Display.getCurrent(),
-						"WorkbenchStatusDialogManager#addStatusAdapter must be called from UI thread"); //$NON-NLS-1$
-
-		if (!PlatformUI.isWorkbenchRunning()) {
-			// we are shutting down, so just log
-			WorkbenchPlugin.log(statusAdapter.getStatus());
-			return;
-		}
-
-		// Add the error in the UI thread to ensure thread safety in the
-		// dialog
-		if (dialog == null || dialog.getShell().isDisposed()) {
-
-			errors.add(statusAdapter);
-			modals.put(statusAdapter, new Boolean(modal));
-			// Delay prompting if the status adapter property is set
-			if (shouldPrompt(statusAdapter)) {
-				if (dialog == null) {
-					dialog = new InternalDialog(getParentShell(),
-							WorkbenchStatusDialogManager.this, shouldBeModal());
-					setSelectedStatusAdapter(statusAdapter);
-					dialog.open();
-					dialog.getShell().addDisposeListener(disposeListener);
-				}
-				refresh();
-				refreshDialogSize();
-			}
-
-		} else {
-			if (statusAdapter
-					.getProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY) != null) {
-				statusAdapter.setProperty(
-						IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY,
-						Boolean.FALSE);
-			}
-			openStatusDialog(modal, statusAdapter);
-		}
-	}
-
-	/**
-	 * This method closes the dialog.
-	 */
-	private boolean close() {
-		if (detailsOpened) {
-			toggleDetailsArea();
-		}
-		if (trayOpened) {
-			closeTray();
-		}
-		shellBounds = getShell().getBounds();
-		if (clipboard != null) {
-			clipboard.dispose();
-		}
-		statusListViewer = null;
-		boolean result = this.dialog.close();
-		if (!modalitySwitch) {
-			ProgressManagerUtil.animateDown(shellBounds);
-		}
-		return result;
-	}
-
-	/**
-	 * Closes the dialog tray (it is support area at the right side of the
-	 * dialog)
-	 * 
-	 * @throws IllegalStateException
-	 */
-	private void closeTray() throws IllegalStateException {
-		this.dialog.closeTray();
-	}
-
-	/**
-	 * This method creates button bar that is available on the bottom of the
-	 * dialog.
-	 */
-	private Control createButtonBar(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginWidth = dialog
-				.convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		layout.marginHeight = dialog
-				.convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
-		toolBar = createSupportToolbar(composite);
-
-		// Add the buttons to the button bar.
-		createButtonsForButtonBar(composite);
-
-		composite.layout();
-		return composite;
-	}
-
-	/**
-	 * This method creates buttons that are placed on button bar.
-	 */
-	private void createButtonsForButtonBar(Composite parent) {
-		IAction gotoAction = getGotoAction();
-		String text = null;
-		if (gotoAction != null) {
-			text = gotoAction.getText();
-		}
-		Button button = dialog.createButton(parent, GOTO_ACTION_ID,
-				text == null ? "" : text, //$NON-NLS-1$
-				false);
-		if (text == null)
-			hideButton(button, true);
-
-		dialog.createButton(parent, IDialogConstants.OK_ID,
-				IDialogConstants.OK_LABEL, true);
-
-		dialog.createButton(parent, IDialogConstants.DETAILS_ID,
-				IDialogConstants.SHOW_DETAILS_LABEL, false);
-	}
-
-	/**
-	 * This method creates dialog area.
-	 */
-	private Control createDialogArea(Composite parent) {
-		createTitleArea(parent);
-		createListArea(parent);
-		dialogArea = parent;
-		Dialog.applyDialogFont(dialogArea);
-		return parent;
-	}
-
-	/**
-	 * Create an area which allows the user to view the status if only one is
-	 * created or to select one of reported statuses when there are many.
-	 * 
-	 * @param parent
-	 *            the parent composite on which all components should be placed.
-	 */
-	private void createListArea(Composite parent) {
-		listArea = new Composite(parent, SWT.NONE);
-		GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		layoutData.heightHint = 0;
-		layoutData.widthHint = 0;
-		listArea.setLayoutData(layoutData);
-		GridLayout layout = new GridLayout();
-		listArea.setLayout(layout);
-		if(getStatusAdapters().size() > 1){
-			fillListArea(listArea);
-		}
-	}
-
-	/**
-	 * This method creates additional display area for {@link StatusAdapter}
-	 * when only one is available.
-	 * 
-	 * It creates one label on a composite currently for secondary message.
-	 * 
-	 * @param parent
-	 *            A parent composite on which all components should be placed.
-	 * @return composite the composite on which are all components for
-	 *         displaying status when only one is available.
-	 */
-	private Composite createSingleStatusDisplayArea(Composite parent) {
-		// secondary message is displayed on separate composite with no margins
-		Composite singleStatusParent = new Composite(parent, SWT.NONE);
-		GridLayout gridLayout = new GridLayout();
-		gridLayout.marginWidth = 0;
-		singleStatusParent.setLayout(gridLayout);
-		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
-		singleStatusParent.setLayoutData(gd);
-
-		// label that wraps
-		singleStatusLabel = new Label(singleStatusParent, SWT.WRAP);
-		GridData labelLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		labelLayoutData.widthHint = dialog.convertWidthInCharsToPixels(50);
-		singleStatusLabel.setLayoutData(labelLayoutData);
-		// main message set up early, to address bug 222391
-		singleStatusLabel.setText(statusListLabelProvider.getColumnText(
-				statusAdapter, 0));
-
-		singleStatusLabel.addMouseListener(new MouseListener() {	
-			public void mouseDoubleClick(MouseEvent e) {
-			}
-
-			public void mouseDown(MouseEvent e) {
-				showDetailsArea();
-			}
-
-			public void mouseUp(MouseEvent e) {
-			}
-		});
-		return singleStatusParent;
-	}
-
-	/**
-	 * Creates a new control that provides access to support providers.
-	 * <p>
-	 * The <code>WorkbenchStatusDialog</code> implementation of this method
-	 * creates the control, registers it for selection events including
-	 * selection, Note that the parent's layout is assumed to be a
-	 * <code>GridLayout</code> and the number of columns in this layout is
-	 * incremented. Subclasses may override.
-	 * </p>
-	 * 
-	 * @param parent
-	 *            A parent composite on which all components should be placed.
-	 * @return the report control
-	 */
-	private ToolBar createSupportToolbar(Composite parent) {
-		ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.NO_FOCUS);
-		((GridLayout) parent.getLayout()).numColumns++;
-		GridData layoutData = new GridData(SWT.BEGINNING, SWT.FILL, true, false);
-		toolBar.setLayoutData(layoutData);
-		final Cursor cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-		toolBar.setCursor(cursor);
-		toolBar.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				cursor.dispose();
-			}
-		});
-		toolBar.setEnabled(false);
-		return toolBar;
-	}
-
-	/**
-	 * Creates a button with a report image. This is only used if there is an
-	 * image available.
-	 */
-	private ToolItem createShowSupportToolItem(ToolBar parent) {
-		ImageDescriptor descriptor = WorkbenchImages
-				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_DTOOL_SHOW_SUPPORT);
-		final Image image = new Image(parent.getDisplay(), descriptor
-				.getImageData());
-
-		ToolItem toolItem = new ToolItem(parent, SWT.NONE);
-		toolItem.setImage(image);
-		toolItem
-				.setToolTipText(WorkbenchMessages.WorkbenchStatusDialog_Support);
-		toolItem.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				openTray(supportTray);
-			}
-		});
-		toolItem.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				image.dispose();
-			}
-		});
-		return toolItem;
-	}
-
-	/**
-	 * Creates title area.
-	 * 
-	 * @param parent
-	 *            A composite on which the title area should be created.
-	 */
-	private void createTitleArea(Composite parent) {
-		titleArea = new Composite(parent, SWT.NONE);
-		titleArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.horizontalSpacing = 10;
-		layout.marginLeft = 10;
-		layout.marginTop = 10;
-		layout.marginBottom = 0;
-		titleArea.setLayout(layout);
-
-		titleImageLabel = new Label(titleArea, SWT.NONE);
-		titleImageLabel.setImage(getErrorImage());
-		GridData layoutData = new GridData();
-		layoutData.verticalSpan = 2;
-		layoutData.verticalAlignment = SWT.TOP;
-		titleImageLabel.setLayoutData(layoutData);
-
-		GridData messageData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		messageData.widthHint = dialog.convertWidthInCharsToPixels(50);
-		mainMessageLabel = new Label(titleArea, SWT.WRAP);
-		mainMessageLabel.setLayoutData(messageData);
-		// main message set up early, to address bug 222391
-		mainMessageLabel.setText(getMainMessage(statusAdapter));
-		if (getStatusAdapters().size() == 1) {
-			singleStatusDisplayArea = createSingleStatusDisplayArea(titleArea);
-		}
-	}
-
-	/**
-	 * Enables the default support area that shows stack trace of the exception
-	 * contained in the selected status.
-	 * 
-	 * @param enable
-	 *            true enables, false disables default support
-	 */
-	public void enableDefaultSupportArea(boolean enable) {
-		supportTray.enableDefaultSupportArea(enable);
-	}
-
-	/**
-	 * This method creates display area for {@link StatusAdapter}s when more is
-	 * available.
-	 * 
-	 * @param parent
-	 *            A parent composite on which all components should be placed.
-	 */
-	private void fillListArea(Composite parent) {
-		// it is necessary to make list parent composite taller
-		GridData listAreaGD = (GridData) parent.getLayoutData();
-		listAreaGD.grabExcessHorizontalSpace = true;
-		listAreaGD.grabExcessVerticalSpace = true;
-		listAreaGD.heightHint = SWT.DEFAULT;
-
-		// create list viewer
-		statusListViewer = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL
-				| SWT.V_SCROLL | SWT.BORDER);
-		statusListViewer.setComparator(getViewerComparator());
-		Control control = statusListViewer.getControl();
-		GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
-		data.heightHint = dialog.convertHeightInCharsToPixels(5);
-		statusListViewer.addSelectionChangedListener(supportTray);
-		control.setLayoutData(data);
-		initContentProvider();
-		initLabelProvider();
-		statusListViewer
-				.addSelectionChangedListener(new ISelectionChangedListener() {
-					public void selectionChanged(SelectionChangedEvent event) {
-						handleSelectionChange();
-					}
-				});
-		Dialog.applyDialogFont(parent);
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying an error.
-	 * 
-	 * @return image the error image
-	 */
-	private Image getErrorImage() {
-		return getSWTImage(SWT.ICON_ERROR);
-	}
-
-	/**
-	 * Returns {@link IAction} associated with selected StatusAdapter.
-	 * 
-	 * @return {@link IAction} that is set as {@link StatusAdapter} property
-	 *         with Job.class key.
-	 */
-	private IAction getGotoAction() {
-		Object property = null;
-
-		Job job = (Job) (statusAdapter.getAdapter(Job.class));
-		if (job != null) {
-			property = job.getProperty(IProgressConstants.ACTION_PROPERTY);
-		}
-
-		if (property instanceof IAction) {
-			return (IAction) property;
-		}
-		return null;
-	}
-
-	/**
-	 * Gets {@link Image} associated with current {@link StatusAdapter}
-	 * severity.
-	 * 
-	 * @return {@link Image} associated with current {@link StatusAdapter}
-	 *         severity.
-	 */
-	private Image getImage() {
-		if (statusAdapter != null) {
-			IStatus status = statusAdapter.getStatus();
-			if (status != null) {
-				if (status.getSeverity() == IStatus.WARNING) {
-					return getWarningImage();
-				}
-				if (status.getSeverity() == IStatus.INFO) {
-					return getInfoImage();
-				}
-			}
-		}
-		// If it was not a warning or an error then return the error image
-		return getErrorImage();
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying information.
-	 * 
-	 * @return image the information image
-	 */
-	private Image getInfoImage() {
-		return getSWTImage(SWT.ICON_INFORMATION);
-	}
-
-	/**
-	 * This method computes the dialog main message.
-	 * 
-	 * If there is only one reported status adapter, main message should be:
-	 * <ul>
-	 * <li>information about job that reported an error.</li>
-	 * <li>primary message, if the statusAdapter was not reported by job</li>
-	 * </ul>
-	 * 
-	 * If there is more reported statusAdapters, main message should be:
-	 * <ul>
-	 * <li>primary message for job reported statusAdapters</li>
-	 * <li>secondary message for statuses not reported by jobs</li>
-	 * </ul>
-	 * 
-	 * If nothing can be found, some general information should be displayed.
-	 * 
-	 * @param statusAdapter
-	 *            A status adapter which is used as the base for computation.
-	 * @return main message of the dialog.
-	 * 
-	 * @see WorkbenchStatusDialogManager#getPrimaryMessage(StatusAdapter)
-	 * @see WorkbenchStatusDialogManager#getSecondaryMessage(StatusAdapter)
-	 * @see WorkbenchStatusDialogManager#setStatusListLabelProvider(ITableLabelProvider)
-	 */
-	private String getMainMessage(StatusAdapter statusAdapter) {
-		if (errors.size() == 1) {
-			Job job = (Job) (statusAdapter.getAdapter(Job.class));
-			// job
-			if (job != null) {
-				return NLS
-						.bind(
-								WorkbenchMessages.WorkbenchStatusDialog_ProblemOccurredInJob,
-								job.getName());
-			}
-			// we are not handling job
-			return getPrimaryMessage(statusAdapter);
-		}
-		// we have a list. primary message or job name or on the list name (both
-		// with timestamp if available).
-		// we display secondary message or status
-		if (errors.size() > 1) {
-			Job job = (Job) (statusAdapter.getAdapter(Job.class));
-			// job
-			if (job != null) {
-				return getPrimaryMessage(statusAdapter);
-			}
-
-			// plain status
-			return getSecondaryMessage(statusAdapter);
-		}
-		return WorkbenchMessages.WorkbenchStatusDialog_ProblemOccurred;
-	}
-
-	/**
-	 * Return the parent shell.
-	 * 
-	 * @return the parent shell of the dialog.
-	 */
-	private Shell getParentShell() {
-		return ProgressManagerUtil.getDefaultParent();
-	}
-
-	/**
-	 * Retrieves primary message from passed statusAdapter. Primary message
-	 * should be (from the most important):
-	 * <ul>
-	 * <li>statusAdapter title</li>
-	 * <li>IStatus message</li>
-	 * <li>pointing to child statuses if IStatus has them.</li>
-	 * <li>exception message</li>
-	 * <li>exception class</li>
-	 * <li>general message informing about error (no details at all)</li>
-	 * </ul>
-	 * 
-	 * @param statusAdapter
-	 *            an status adapter to retrieve primary message from
-	 * @return String containing primary message
-	 * 
-	 * @see WorkbenchStatusDialogManager#getMainMessage(StatusAdapter)
-	 * @see WorkbenchStatusDialogManager#getSecondaryMessage(StatusAdapter)
-	 */
-	private String getPrimaryMessage(StatusAdapter statusAdapter) {
-		// if there was nonempty title set, display the title
-		Object property = statusAdapter
-				.getProperty(IStatusAdapterConstants.TITLE_PROPERTY);
-		if (property instanceof String) {
-			String header = (String) property;
-			if (header.trim().length() > 0) {
-				return header;
-			}
-		}
-		// if there was message set in the status
-		IStatus status = statusAdapter.getStatus();
-		if (status.getMessage() != null
-				&& status.getMessage().trim().length() > 0) {
-			return status.getMessage();
-		}
-
-		// if status has children
-		if (status.getChildren().length > 0) {
-			return WorkbenchMessages.WorkbenchStatusDialog_StatusWithChildren;
-		}
-
-		// check the exception
-		Throwable t = status.getException();
-		if (t != null) {
-			if (t.getMessage() != null && t.getMessage().trim().length() > 0) {
-				return t.getMessage();
-			}
-			return t.getClass().getName();
-		}
-		return WorkbenchMessages.WorkbenchStatusDialog_ProblemOccurred;
-	}
-
-	/**
-	 * Retrieves secondary message from the passed statusAdapter. Secondary
-	 * message is one level lower than primary. Secondary message should be
-	 * (from the most important):
-	 * <ul>
-	 * <li>IStatus message</li>
-	 * <li>pointing to child statuses if IStatus has them.</li>
-	 * <li>exception message</li>
-	 * <li>exception class</li>
-	 * </ul>
-	 * Secondary message should not be the same as primary one. If no secondary
-	 * message can be extracted, details should be pointed.
-	 * 
-	 * @param statusAdapter
-	 *            an status adapter to retrieve secondary message from
-	 * @return String containing secondary message
-	 * 
-	 * @see WorkbenchStatusDialogManager#getMainMessage(StatusAdapter)
-	 * @see WorkbenchStatusDialogManager#getPrimaryMessage(StatusAdapter)
-	 */
-	private String getSecondaryMessage(StatusAdapter statusAdapter) {
-		String primary = getPrimaryMessage(statusAdapter);
-		// we can skip the title, it is always displayed as primary message
-
-		// if there was message set in the status
-		IStatus status = statusAdapter.getStatus();
-		if (status.getMessage() != null
-				&& status.getMessage().trim().length() > 0
-				&& !primary.equals(status.getMessage())) { // we have not
-			// displayed it yet
-			return status.getMessage();
-		}
-		// if status has children
-		if (status.getChildren().length > 0
-				&& !primary.equals(status.getMessage())) {
-			return WorkbenchMessages.WorkbenchStatusDialog_StatusWithChildren;
-		}
-
-		// check the exception
-		Throwable t = status.getException();
-		if (t != null) {
-			if (t.getMessage() != null && t.getMessage().trim().length() > 0
-					&& !primary.equals(status.getMessage())) {
-				return t.getMessage();
-			}
-			return t.getClass().getName();
-		}
-		return WorkbenchMessages.WorkbenchStatusDialog_SeeDetails;
-	}
-
-	/**
-	 * Returns the shell of the dialog.
-	 */
-	private Shell getShell() {
-		return this.dialog.getShell();
-	}
-
-	/**
-	 * Get the single selection. Return null if the selection is not just one
-	 * element.
-	 * 
-	 * @return StatusAdapter or <code>null</code>.
-	 */
-	private StatusAdapter getSingleSelection() {
-		ISelection rawSelection = statusListViewer.getSelection();
-		if (rawSelection != null
-				&& rawSelection instanceof IStructuredSelection) {
-			IStructuredSelection selection = (IStructuredSelection) rawSelection;
-			if (selection.size() == 1) {
-				return (StatusAdapter) selection.getFirstElement();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Gets a collection of status adapters that were passed to the dialog.
-	 * 
-	 * @return collection of {@link StatusAdapter} objects
-	 */
-	public Collection getStatusAdapters() {
-		return Collections.unmodifiableCollection(errors);
-	}
-
-	/**
-	 * Get an <code>Image</code> from the provide SWT image constant.
-	 * 
-	 * @param imageID
-	 *            the SWT image constant
-	 * @return image the image
-	 */
-	private Image getSWTImage(final int imageID) {
-		return getShell().getDisplay().getSystemImage(imageID);
-	}
-
-	/**
-	 * Return a viewer sorter for looking at the jobs.
-	 * 
-	 * @return ViewerSorter
-	 */
-	private ViewerComparator getViewerComparator() {
-		return new ViewerComparator() {
-			private int compare(StatusAdapter s1, StatusAdapter s2) {
-				Long timestamp1 = ((Long) s1
-						.getProperty(IStatusAdapterConstants.TIMESTAMP_PROPERTY));
-				Long timestamp2 = ((Long) s2
-						.getProperty(IStatusAdapterConstants.TIMESTAMP_PROPERTY));
-				if (timestamp1 == null || timestamp2 == null
-						|| (timestamp1.equals(timestamp2))) {
-					String text1 = statusListLabelProvider.getColumnText(s1, 0);
-					String text2 = statusListLabelProvider.getColumnText(s2, 0);
-					return text1.compareTo(text2);
-				}
-
-				if (timestamp1.longValue() < timestamp2.longValue()) {
-					return -1;
-				}
-				if (timestamp1.longValue() > timestamp2.longValue()) {
-					return 1;
-				}
-				// should be never called
-				return 0;
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
-			 *      java.lang.Object, java.lang.Object)
-			 */
-			public int compare(Viewer testViewer, Object o1, Object o2) {
-				if (o1 instanceof StatusAdapter && o2 instanceof StatusAdapter) {
-					return compare((StatusAdapter) o1, (StatusAdapter) o2);
-				}
-				// should not happen
-				if (o1.hashCode() < o2.hashCode()) {
-					return -1;
-				}
-				if (o2.hashCode() > o2.hashCode()) {
-					return 1;
-				}
-				return 0;
-			}
-		};
-	}
-
-	/**
-	 * Return the <code>Image</code> to be used when displaying a warning.
-	 * 
-	 * @return image the warning image
-	 */
-	private Image getWarningImage() {
-		return getSWTImage(SWT.ICON_WARNING);
-	}
-
-	/**
-	 * The selection in the multiple job list has changed. Update widget
-	 * enablements, repopulate the list and show details.
-	 */
-	private void handleSelectionChange() {
-		StatusAdapter newSelection = getSingleSelection();
-		if (newSelection != null) {
-			setSelectedStatusAdapter(newSelection);
-			showDetailsArea();
-			refresh();
-		}
-	}
-
-	/**
-	 * Sets the content provider for the viewer.
-	 */
-	private void initContentProvider() {
-		IContentProvider provider = new IStructuredContentProvider() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-			 */
-			public void dispose() {
-				// Nothing of interest here
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-			 */
-			public Object[] getElements(Object inputElement) {
-				return getStatusAdapters().toArray();
-			}
-
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
-			 *      java.lang.Object, java.lang.Object)
-			 */
-			public void inputChanged(Viewer viewer, Object oldInput,
-					Object newInput) {
-				if (newInput != null) {
-					refreshStatusListArea();
-				}
-			}
-		};
-		statusListViewer.setContentProvider(provider);
-		statusListViewer.setInput(this);
-		statusListViewer.setSelection(new StructuredSelection(statusAdapter));
-	}
-
-	/**
-	 * This method should initialize the dialog bounds.
-	 */
-	private void initializeBounds() {
-		refreshDialogSize();
-		if (!modalitySwitch) {
-			Rectangle shellPosition = getShell().getBounds();
-			ProgressManagerUtil.animateUp(shellPosition);
-		} else {
-			getShell().setBounds(shellBounds);
-		}
-	}
-
-	/**
-	 * Sets initial label provider.
-	 */
-	private void initLabelProvider() {
-		statusListViewer.setLabelProvider(statusListLabelProvider);
-	}
-
-	/*
-	 * Prompt to inform the user that the dialog will close and the errors
-	 * cleared.
-	 */
-	private boolean isPromptToClose() {
-		IPreferenceStore store = WorkbenchPlugin.getDefault()
-				.getPreferenceStore();
-		if (!store.contains(PREF_SKIP_GOTO_ACTION_PROMPT)
-				|| !store.getString(PREF_SKIP_GOTO_ACTION_PROMPT).equals(
-						MessageDialogWithToggle.ALWAYS)) {
-			MessageDialogWithToggle dialog = MessageDialogWithToggle
-					.openOkCancelConfirm(
-							getShell(),
-							ProgressMessages.JobErrorDialog_CloseDialogTitle,
-							ProgressMessages.JobErrorDialog_CloseDialogMessage,
-							ProgressMessages.JobErrorDialog_DoNotShowAgainMessage,
-							false, store, PREF_SKIP_GOTO_ACTION_PROMPT);
-			return dialog.getReturnCode() == Window.OK;
-		}
-		return true;
-	}
-
-	/**
-	 * Opens status dialog with particular statusAdapter selected.
-	 * 
-	 * @param modal
-	 *            decides if window is modal or not.
-	 * @param statusAdapter
-	 *            status adapter to be selected.
-	 */
-	private void openStatusDialog(final boolean modal,
-			final StatusAdapter statusAdapter) {
-		errors.add(statusAdapter);
-		modals.put(statusAdapter, new Boolean(modal));
-		boolean shouldBeModal = shouldBeModal();
-		if (shouldBeModal ^ dialog.isModal()) {
-			dialog.getShell().removeDisposeListener(disposeListener);
-			modalitySwitch = true;
-			close();
-			setSelectedStatusAdapter(statusAdapter);
-			dialog = new InternalDialog(getParentShell(), this, modal);
-			dialog.open();
-			dialog.getShell().addDisposeListener(disposeListener);
-			modalitySwitch = false;
-		}
-		refresh();
-	}
-
-	/**
-	 * Opens the dialog tray (support area at the right side of the dialog)
-	 */
-	private void openTray(DialogTray tray) throws IllegalStateException,
-			UnsupportedOperationException {
-		launchTrayButton.setEnabled(false);
-		this.dialog.openTray(tray);
-		trayOpened = true;
-	}
-
-	/**
-	 * Method which should be invoked when new errors become available for
-	 * display.
-	 */
-	private void refresh() {
-		if (dialog == null) {
-			return;
-		}
-		if (dialogArea == null || dialogArea.isDisposed()) {
-			return;
-		}
-		updateTitleArea();
-		updateListArea();
-		updateEnablements();
-		// adjust width if necessary
-		Point currentSize = getShell().getSize();
-		Point desiredSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-		if(currentSize.x < desiredSize.x){
-			getShell().setSize(desiredSize.x, currentSize.y);
-		} else {
-			getShell().layout();
-		}
-	}
-
-	private void refreshDialogSize() {
-		Point newSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-		getShell().setSize(newSize);
-	}
-
-	/**
-	 * Refreshes the single status area. Is called only when there is one and
-	 * only one error.
-	 */
-	private void refreshSingleStatusArea() {
-		String description = statusListLabelProvider.getColumnText(
-				statusAdapter, 0);
-		if (description.equals(singleStatusLabel.getText()))
-			singleStatusLabel.setText(" "); //$NON-NLS-1$
-		singleStatusLabel.setText(description);
-		singleStatusDisplayArea.layout();
-		getShell().setText(title);
-	}
-
-	/**
-	 * Refresh the contents of the viewer.
-	 */
-	private void refreshStatusListArea() {
-		if (statusListViewer != null
-				&& !statusListViewer.getControl().isDisposed()) {
-			statusListViewer.refresh();
-			if (statusListViewer.getTable().getItemCount() > 1) {
-				getShell()
-						.setText(
-								WorkbenchMessages.WorkbenchStatusDialog_MultipleProblemsHaveOccured);
-			} else {
-				getShell().setText(this.title);
-			}
-		}
-	}
-
-	/**
-	 * Sets the details area provider. If null is set, the default area provider
-	 * will be used.
-	 * 
-	 * @param provider
-	 *            A details area provider to be set.
-	 */
-	public void setDetailsAreaProvider(AbstractStatusAreaProvider provider) {
-		this.detailsManager.setDetailsAreaProvider(provider);
-	}
-
-	/**
-	 * Sets current status adapter.
-	 * 
-	 * @param statusAdapter
-	 *            The statusAdapter to set.
-	 */
-	private void setSelectedStatusAdapter(StatusAdapter statusAdapter) {
-		if (this.statusAdapter != statusAdapter) {
-			this.statusAdapter = statusAdapter;
-		}
-	}
-
-	/**
-	 * Sets new label provider for the status list. This label provider is used
-	 * also to display the second message on the dialog if only one status is
-	 * available.
-	 * 
-	 * @param labelProvider
-	 *            a label provider to be used when displaying status adapters.
-	 *            It must not be null.
-	 */
-	public void setStatusListLabelProvider(ITableLabelProvider labelProvider) {
-		if (statusListLabelProvider != null) {
-			throw new NullPointerException("Label provider cannot be null"); //$NON-NLS-1$
-		}
-		statusListLabelProvider = labelProvider;
-	}
-
-	/**
-	 * Sets the support provider.
-	 * 
-	 * The policy for choosing support provider is:
-	 * <ol>
-	 * <li>use the support provider set by this method, if set</li>
-	 * <li>use the support provider set in JFace Policy, if set</li>
-	 * <li>use the default support area, if enabled</li>
-	 * </ol>
-	 * 
-	 * @param provider
-	 *            Support provider to be set.
-	 */
-	public void setSupportAreaProvider(AbstractStatusAreaProvider provider) {
-		userSupportProvider = provider;
-	}
-
-	/**
-	 * Decides if dialog should be modal. Dialog will be modal if any of the
-	 * statuses contained by StatusAdapters had been reported with
-	 * {@link StatusManager#BLOCK} flag.
-	 * 
-	 * @return true if any StatusHandler should be displayed in modal window
-	 */
-	private boolean shouldBeModal() {
-		for (Iterator it = modals.keySet().iterator(); it.hasNext();) {
-			Object o = it.next();
-			Object value = modals.get(o);
-			if (value instanceof Boolean) {
-				Boolean b = (Boolean) value;
-				if (b.booleanValue()) {
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Checks if the user should be prompted immediately about
-	 * {@link StatusAdapter}
-	 * 
-	 * @param statusAdapter
-	 *            to be checked.
-	 * @return true if the statusAdapter should be prompted, false otherwise.
-	 */
-	private boolean shouldPrompt(final StatusAdapter statusAdapter) {
-		Object noPromptProperty = statusAdapter
-				.getProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY);
-
-		boolean prompt = true;
-		if (noPromptProperty instanceof Boolean) {
-			prompt = !((Boolean) noPromptProperty).booleanValue();
-		}
-		return prompt;
-	}
-
-	/**
-	 * Show the details portion of the dialog if it is not already visible. This
-	 * method will only work when it is invoked after the control of the dialog
-	 * has been set. In other words, after the <code>createContents</code>
-	 * method has been invoked and has returned the control for the content area
-	 * of the dialog. Invoking the method before the content area has been set
-	 * or after the dialog has been disposed will have no effect.
-	 */
-	private void showDetailsArea() {
-		if (dialogArea != null && !dialogArea.isDisposed()) {
-			if (detailsManager.isOpen()) {
-				detailsManager.close();
-				detailsManager.createDetailsArea(dialogArea, statusAdapter);
-			} else {
-				toggleDetailsArea();
-				detailsOpened = true;
-			}
-			dialogArea.layout();
-		}
-	}
-
-	/**
-	 * Toggles the unfolding of the details area. This is triggered by the user
-	 * pressing the details button.
-	 * 
-	 */
-	private boolean toggleDetailsArea() {
-		boolean opened = false;
-		Point windowSize = getShell().getSize();
-		if (detailsManager.isOpen()) {
-			detailsManager.close();
-			dialog.getButton(IDialogConstants.DETAILS_ID).setText(
-					IDialogConstants.SHOW_DETAILS_LABEL);
-			opened = false;
-		} else {
-			detailsManager.createDetailsArea(dialogArea, statusAdapter);
-			dialog.getButton(IDialogConstants.DETAILS_ID).setText(
-					IDialogConstants.HIDE_DETAILS_LABEL);
-			opened = true;
-		}
-		if(getStatusAdapters().size() == 1){
-			GridData gd = (GridData) listArea.getLayoutData();
-			if(opened){
-				gd.heightHint = 0;
-				gd.grabExcessVerticalSpace = false;
-			} else {
-				gd.grabExcessVerticalSpace = true;
-			}
-			listArea.setLayoutData(gd);
-		}
-		Point newSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-		int diffY = newSize.y - windowSize.y;
-		// increase the dialog height if details were opened and such increase is necessary
-		// decrease the dialog height if details were closed and empty space appeared
-		if ((opened && diffY > 0) || (!opened && diffY < 0)) {
-			getShell().setSize(new Point(windowSize.x, windowSize.y + (diffY)));
-		}
-		dialogArea.layout();
-		return opened;
-	}
-
-	/**
-	 * Update the button enablements
-	 */
-	private void updateEnablements() {
-		Button details = dialog.getButton(IDialogConstants.DETAILS_ID);
-		if (details != null) {
-			details.setEnabled(true);
-		}
-		Button gotoButton = dialog.getButton(GOTO_ACTION_ID);
-		if (gotoButton != null) {
-			IAction gotoAction = getGotoAction();
-			boolean hasValidGotoAction = (gotoAction != null) && (gotoAction.getText() != null);
-			if (hasValidGotoAction) {
-				hideButton(gotoButton,false);
-				gotoButton.setText(gotoAction.getText());
-				
-				((GridData) gotoButton.getLayoutData()).widthHint = gotoButton
-						.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
-				gotoButton.getParent().layout();
-			}
-			else	
-				hideButton(gotoButton,true);
-		}
-		// and tray enablement button
-		if (supportTray.providesSupport()) {
-			if(launchTrayButton == null || launchTrayButton.isDisposed()){
-				launchTrayButton = createShowSupportToolItem(toolBar);
-			}
-			launchTrayButton.setEnabled(!trayOpened);
-		} else {
-			if(launchTrayButton != null && !launchTrayButton.isDisposed()){
-				launchTrayButton.dispose();
-				launchTrayButton = null;
-			}
-		}
-		toolBar.getParent().layout();
-		toolBar.setEnabled(toolBar.getItemCount() > 0);
-	}
-
-	/**
-	 * Hide the button if hide is <code>true</code>.
-	 * 
-	 * @param button
-	 * @param hide
-	 */
-	private void hideButton(Button button, boolean hide) {
-		((GridData) button.getLayoutData()).exclude = hide;
-		button.setVisible(!hide);
-		button.setEnabled(!hide);
-	}
-
-	/**
-	 * This methods switches StatusAdapters presentation depending if there is
-	 * one status or more.
-	 */
-	private void updateListArea() {
-		// take care about list area if there is more than one status
-		if (errors.size() > 1) {
-			if (singleStatusDisplayArea != null) {
-				singleStatusDisplayArea.dispose();
-			}
-			if (statusListViewer == null
-					|| statusListViewer.getControl().isDisposed()) {
-				fillListArea(listArea);
-				getShell().setSize(
-						getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));
-			}
-			refreshStatusListArea();
-		}
-	}
-
-	/**
-	 * Updated title area. Adjust title, title message and title image according
-	 * to selected {@link StatusAdapter}.
-	 */
-	private void updateTitleArea() {
-		Image image = getImage();
-		titleImageLabel.setImage(image);
-		if (statusAdapter != null) {
-			mainMessageLabel.setText(getMainMessage(statusAdapter));
-		}
-		if (getStatusAdapters().size() > 1 && singleStatusDisplayArea != null) {
-			singleStatusDisplayArea.dispose();
-		} else {
-			refreshSingleStatusArea();
-		}
-		titleArea.layout();
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/package.html
deleted file mode 100644
index 7a7a092..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/package.html
+++ /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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>Package Specification</h2>
-This package provides API for handling problems occured in the Eclipse based applications.
-See the org.eclipse.ui.statusHandlers extension point. 
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/IFocusService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/IFocusService.java
deleted file mode 100644
index 4ed8639..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/IFocusService.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.swt;
-
-import org.eclipse.swt.widgets.Control;
-
-/**
- * Tracks focusGained and focusLost events for a Control registered with this
- * service, and provides the control and its registered ID as variables to the
- * application evaluation context for evaluation by the various services.
- * <p>
- * This service provides 2 variables, activeFocusControl (a Control) and
- * activeFocusControlId (the ID registered with the service).
- * </p>
- * <p>
- * You can use this service to provide default cut/copy/paste/selectAll for
- * specific text controls outside of the normal workbench part lifecycle, like a
- * control contributed to the trim. For example:
- * </p>
- * <p>
- * 
- * <pre>
- * &lt;handler
- *      class=&quot;org.eclipse.ui.internal.handlers.WidgetMethodHandler:paste&quot;
- *      commandId=&quot;org.eclipse.ui.edit.paste&quot;&gt;
- *   &lt;activeWhen&gt;
- *      &lt;with variable=&quot;activeFocusControlId&quot;&gt;
- *         &lt;equals value=&quot;org.eclipse.ui.tests.focusText&quot;/&gt;
- *      &lt;/with&gt;
- *   &lt;/activeWhen&gt;
- * &lt;/handler&gt;
- * </pre>
- * 
- * </p>
- * <p>
- * This service can be acquired from your service locator:
- * <pre>
- * 	IFocusService service = (IFocusService) getSite().getService(IFocusService.class);
- * </pre>
- * <ul>
- * <li>This service is available globally.</li>
- * </ul>
- * </p>
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * 
- * @see org.eclipse.ui.ISources
- * @since 3.3
- */
-public interface IFocusService {
-	/**
-	 * Use the value to provide default copy behaviour in a handler element
-	 * class attribute.
-	 */
-	public static final String COPY_HANDLER = "org.eclipse.ui.internal.handlers.WidgetMethodHandler:copy"; //$NON-NLS-1$
-
-	/**
-	 * Use the value to provide default paste behaviour in a handler element
-	 * class attribute.
-	 */
-	public static final String PASTE_HANDLER = "org.eclipse.ui.internal.handlers.WidgetMethodHandler:paste"; //$NON-NLS-1$
-
-	/**
-	 * Use the value to provide default cut behaviour in a handler element class
-	 * attribute.
-	 */
-	public static final String CUT_HANDLER = "org.eclipse.ui.internal.handlers.WidgetMethodHandler:cut"; //$NON-NLS-1$
-
-	/**
-	 * Use the value to provide default select all behaviour in a handler
-	 * element class attribute.
-	 */
-	public static final String SELECT_ALL_HANDLER = "org.eclipse.ui.internal.handlers.SelectAllHandler"; //$NON-NLS-1$
-
-	/**
-	 * A Control for which the service will track focus. When in focus, this
-	 * Control and its ID will be provided as variables to core expressions for
-	 * the various services, as activeFocusControl and activeFocusControlId
-	 * respectively.
-	 * <p>
-	 * A control must only be registered once, but different controls can be
-	 * registered with the same ID. Expressions evaluated against the
-	 * activeFocusControlId would then be true for all of the controls thus
-	 * registered.
-	 * </p>
-	 * <p>
-	 * We will remove ourselves as a listener when the Control is disposed.
-	 * </p>
-	 * 
-	 * @param control
-	 *            the control. Must not be <code>null</code>. If the control
-	 *            is already registered with this service this call is a no-op.
-	 * @param id
-	 *            an ID for this control. Must not be <code>null</code>.
-	 */
-	public void addFocusTracker(Control control, String id);
-
-	/**
-	 * No longer track focus events for this control. Use this method when the
-	 * control should no longer be tracked, but is not disposed.
-	 * 
-	 * @param control
-	 *            the control registered with the service. Must not be
-	 *            <code>null</code>.
-	 */
-	public void removeFocusTracker(Control control);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/package.html
deleted file mode 100644
index 0fed817..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/swt/package.html
+++ /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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>Package Specification</h2>
-This package provides API so an in-focus control can participate in the Commands
-and Handlers framework.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/ITestHarness.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/ITestHarness.java
deleted file mode 100644
index cc23643..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/ITestHarness.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.testing;
-
-/**
- * Represents an arbitrary test harness.
- * 
- * @since 3.0
- */
-public interface ITestHarness {
-
-    /**
-     * Runs the tests.
-     */
-    public void runTests();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/IWorkbenchPartTestable.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/IWorkbenchPartTestable.java
deleted file mode 100755
index 701bd76..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/IWorkbenchPartTestable.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.testing;
-
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * This interface provides methods that allow introspection of workbench parts.
- * Instances may be obtained by calling
- * {@link org.eclipse.core.runtime.IAdaptable#getAdapter(Class)} on
- * {@link org.eclipse.ui.IWorkbenchPartSite}.
- * 
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @since 3.3
- */
-public interface IWorkbenchPartTestable {
-
-	/**
-	 * Get the {@link org.eclipse.swt.widgets.Composite} provided to the parts
-	 * {@link org.eclipse.ui.IWorkbenchPart#createPartControl(Composite)}
-	 * method.
-	 * 
-	 * @return the composite
-	 */
-	public Composite getControl();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/TestableObject.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/TestableObject.java
deleted file mode 100644
index 037f06b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/TestableObject.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ui.testing;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A testable object.
- * Allows a test harness to register itself with a testable object.
- * The test harness is notified of test-related lifecycle events,
- * such as when is an appropriate time to run tests on the object.
- * This also provides API for running tests as a runnable, and for signaling
- * when the tests are starting and when they are finished.
- * <p>
- * The workbench provides an implementation of this facade, available
- * via <code>PlatformUI.getTestableObject()</code>.
- * </p>
- * 
- * @since 3.0
- */
-public class TestableObject {
-
-    private ITestHarness testHarness;
-
-    /**
-     * Returns the test harness, or <code>null</code> if it has not yet been set.
-     * 
-     * @return the test harness or <code>null</code>
-     */
-    public ITestHarness getTestHarness() {
-        return testHarness;
-    }
-
-    /**
-     * Sets the test harness.
-     * 
-     * @param testHarness the test harness
-     */
-    public void setTestHarness(ITestHarness testHarness) {
-        Assert.isNotNull(testHarness);
-        this.testHarness = testHarness;
-    }
-
-    /**
-     * Runs the given test runnable.
-     * The default implementation simply invokes <code>run</code> on the
-     * given test runnable.  Subclasses may extend.
-     * 
-     * @param testRunnable the test runnable to run
-     */
-    public void runTest(Runnable testRunnable) {
-        testRunnable.run();
-    }
-
-    /**
-     * Notification from the test harness that it is starting to run
-     * the tests.
-     * The default implementation does nothing.
-     * Subclasses may override.
-     */
-    public void testingStarting() {
-        // do nothing
-    }
-
-    /**
-     * Notification from the test harness that it has finished running the
-     * tests.
-     * The default implementation does nothing.
-     * Subclasses may override.
-     */
-    public void testingFinished() {
-        // do nothing
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/package.html
deleted file mode 100755
index ff89871..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/package.html
+++ /dev/null
@@ -1,18 +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.5 [en] (WinNT; I) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-<p>Classes for testing support.</p>
-<h2>
-Package Specification</h2>
-<p>
-This package has some test support objects.
-</p>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java
deleted file mode 100755
index b308e31..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.themes;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-
-import org.eclipse.jface.resource.DataFormatException;
-import org.eclipse.jface.resource.StringConverter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * Useful color utilities.
- * 
- * @since 3.0 - initial release
- * @since 3.2 - public API
- */
-public final class ColorUtil {
-
-	private static Field[] cachedFields;
-	
-	/**
-	 * Process the given string and return a corresponding RGB object.
-	 * 
-	 * @param value
-	 *            the SWT constant <code>String</code>
-	 * @return the value of the SWT constant, or <code>SWT.COLOR_BLACK</code>
-	 *         if it could not be determined
-	 */
-	private static RGB process(String value) {
-		Field [] fields = getFields();
-		try {
-			for (int i = 0; i < fields.length; i++) {
-				Field field = fields[i];
-				if (field.getName().equals(value)) {
-					return getSystemColor(field.getInt(null));
-				}
-			}
-		} catch (IllegalArgumentException e) {
-			// no op - shouldnt happen. We check for static before calling
-			// getInt(null)
-		} catch (IllegalAccessException e) {
-			// no op - shouldnt happen. We check for public before calling
-			// getInt(null)
-		}
-		return getSystemColor(SWT.COLOR_BLACK);
-	}
-
-	/**
-	 * Get the SWT constant fields.
-	 * 
-	 * @return the fields
-	 * @since 3.3
-	 */
-	private static Field[] getFields() {
-		if (cachedFields == null) {
-			Class clazz = SWT.class;		
-			Field[] allFields = clazz.getDeclaredFields();
-			ArrayList applicableFields = new ArrayList(allFields.length);
-			
-			for (int i = 0; i < allFields.length; i++) {
-				Field field = allFields[i];
-				if (field.getType() == Integer.TYPE
-						&& Modifier.isStatic(field.getModifiers())
-						&& Modifier.isPublic(field.getModifiers())
-						&& Modifier.isFinal(field.getModifiers())
-						&& field.getName().startsWith("COLOR")) { //$NON-NLS-1$
-				
-					applicableFields.add(field);
-				}
-			}
-			cachedFields = (Field []) applicableFields.toArray(new Field [applicableFields.size()]);
-		}
-		return cachedFields;
-	}
-
-	/**
-	 * Blends the two color values according to the provided ratio.
-	 * 
-	 * @param c1
-	 *            first color
-	 * @param c2
-	 *            second color
-	 * @param ratio
-	 *            percentage of the first color in the blend (0-100)
-	 * @return the RGB value of the blended color
-	 * 
-	 * @since 3.3
-	 */
-	public static RGB blend(RGB c1, RGB c2, int ratio) {
-		int r = blend(c1.red, c2.red, ratio);
-		int g = blend(c1.green, c2.green, ratio);
-		int b = blend(c1.blue, c2.blue, ratio);
-		return new RGB(r, g, b);
-	}
-
-	private static int blend(int v1, int v2, int ratio) {
-		int b = (ratio * v1 + (100 - ratio) * v2) / 100;
-		return Math.min(255, b);
-	}
-	
-	/**
-	 * Blend the two color values returning a value that is halfway between
-	 * them.
-	 * 
-	 * @param val1
-	 *            the first value
-	 * @param val2
-	 *            the second value
-	 * @return the blended color
-	 */
-	public static RGB blend(RGB val1, RGB val2) {
-		int red = blend(val1.red, val2.red);
-		int green = blend(val1.green, val2.green);
-		int blue = blend(val1.blue, val2.blue);
-		return new RGB(red, green, blue);
-	}
-
-	/**
-	 * Blend the two color values returning a value that is halfway between
-	 * them.
-	 * 
-	 * @param temp1
-	 *            the first value
-	 * @param temp2
-	 *            the second value
-	 * @return the blended int value
-	 */
-	private static int blend(int temp1, int temp2) {
-		return (Math.abs(temp1 - temp2) / 2) + Math.min(temp1, temp2);
-	}
-
-	/**
-	 * Return the system color that matches the provided SWT constant value.
-	 * 
-	 * @param colorId
-	 *            the system color identifier
-	 * @return the RGB value of the supplied system color
-	 */
-	private static RGB getSystemColor(int colorId) {
-		return Display.getCurrent().getSystemColor(colorId).getRGB();
-	}
-
-	/**
-	 * Get the RGB value for a given color.
-	 * 
-	 * @param rawValue
-	 *            the raw value, either an RGB triple or an SWT constant name
-	 * @return the RGB value
-	 * @throws DataFormatException
-	 *             thrown if the value cannot be interpreted as a color
-	 */
-	public static RGB getColorValue(String rawValue) throws DataFormatException {
-		if (rawValue == null) {
-			return null;
-		}
-
-		rawValue = rawValue.trim();
-
-		if (!isDirectValue(rawValue)) {
-			return process(rawValue);
-		}
-
-		return StringConverter.asRGB(rawValue);
-	}
-
-	/**
-	 * Get the RGB values for a given color array.
-	 * 
-	 * @param rawValues
-	 *            the raw values, either RGB triple or an SWT constant
-	 * @return the RGB values
-	 */
-	public static RGB[] getColorValues(String[] rawValues) {
-		RGB[] values = new RGB[rawValues.length];
-		for (int i = 0; i < rawValues.length; i++) {
-			values[i] = getColorValue(rawValues[i]);
-		}
-		return values;
-	}
-
-	/**
-	 * Return whether the value returned by <code>getValue()</code> is already
-	 * in RGB form.
-	 * 
-	 * @return whether the value returned by <code>getValue()</code> is
-	 *         already in RGB form
-	 */
-	private static boolean isDirectValue(String rawValue) {
-		return rawValue.indexOf(',') >= 0;
-	}
-
-	/**
-	 * Not intended to be instantiated.
-	 */
-	private ColorUtil() {
-		// no-op
-	}
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IColorFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IColorFactory.java
deleted file mode 100644
index 46e75ef..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IColorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.themes;
-
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * A factory interface that may be used to specify a color value.  This is 
- * (optionally) used by the themes extension point for color value 
- * definitions.
- * <p>
- * Example usage:
- * <br/>
- * <code>
- * &lt;colorDefinition
- *     label="Custom Color"
- *     id="example.customColor"
- * 	   colorFactory="some.implementor.of.IColorFactory"&gt;
- * &lt;/colorDefinition&gt;
- * </code>
- * </p>
- * 
- * @since 3.0
- */
-public interface IColorFactory {
-
-    /**
-     * Create a new color.
-     * 
-     * @return a new color.  This must never be <code>null</code>.
-     */
-    RGB createColor();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ITheme.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ITheme.java
deleted file mode 100644
index b8d498f..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ITheme.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.themes;
-
-import java.util.Set;
-
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.FontRegistry;
-import org.eclipse.jface.util.IPropertyChangeListener;
-
-/**
- * A theme is a collection of colors, fonts and supporting data that may 
- * be used by plugins to help provide uniform look and feel to their components.
- * The workbench has a default theme (one whos id has the value {@link org.eclipse.ui.themes.IThemeManager#DEFAULT_THEME}) 
- * that defines the initial values for a collection of fonts and colors.  Other
- * themes may extend and override the default theme to provide new values.
- * 
- * <p>
- * Clients may obtain themes via {@link org.eclipse.ui.themes.IThemeManager#getTheme(String)}.
- * </p>
- * 
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p> 
- * 
- * @see org.eclipse.ui.IWorkbench#getThemeManager()  
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ITheme {
-
-    /**
-     * Adds a property listener to the theme.  Any events fired by the 
-     * underlying registries will cause an event to be fired.  This event is the
-     * same event that was fired by the registry.  As such, the "source" 
-     * attribute of the event will not be this theme, but rather the color or 
-     * font registry.
-     * 
-     * @param listener the listener to add
-     */
-    void addPropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Dispose of this theme.  This method is called by the workbench when
-     * appropriate and should never be called by a user.
-     */
-    void dispose();
-
-    /**
-     * Get arbitrary data associated with this theme.
-     *
-     * @param key the key
-     * @return the data, or the default value <code>false</code> if none exists 
-     * or if the value cannot be treated as a boolean.
-     */
-    boolean getBoolean(String key);
-
-    /**
-     * Return this themes color registry.
-     * 
-     * @return this themes color registry
-     */
-    ColorRegistry getColorRegistry();
-
-    /**
-     * Return this themes font registry.
-     * 
-     * @return this themes font registry
-     */
-    FontRegistry getFontRegistry();
-
-    /**
-     * Returns the id of this theme.
-     * 
-     * @return the id of this theme.  Guaranteed not to be <code>null</code>.
-     */
-    String getId();
-
-    /**
-     * Get arbitrary data associated with this theme.
-     *
-     * @param key the key
-     * @return the data, or the default value <code>0</code> if none exists or 
-     * if the value cannot be treated as an integer.
-     */
-    public int getInt(String key);
-
-    /**
-     * Returns the label of this theme.
-     * 
-     * @return the label of this theme.  Guaranteed not be <code>null</code>.
-     */
-    String getLabel();
-
-    /**
-     * Get arbitrary data associated with this theme.
-     *
-     * @param key the key
-     * @return the data, or <code>null</code> if none exists.
-     */
-    String getString(String key);
-
-    /**
-     * Get the set of keys associated with this theme.
-     *  
-     * @return the Set of keys
-     */
-    Set keySet();
-
-    /**
-     * Removes a property listener from the theme.
-     * 
-     * @param listener the listener to remove
-     */
-    void removePropertyChangeListener(IPropertyChangeListener listener);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemeManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemeManager.java
deleted file mode 100644
index be63901..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemeManager.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.themes;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-
-/**
- * A theme manager is an object that contains references to usable 
- * <code>ITheme</code> objects and maintains a reference to the currently active
- * theme.  This theme will be used by the workbench to decorate tab folders and
- * other controls where possible.  The workbench implementation of this 
- * interface will push the values of the current theme into the underlying jface
- * registries ({@link org.eclipse.jface.resource.ColorRegistry} and 
- * {@link org.eclipse.jface.resource.FontRegistry} whenever the current theme 
- * changes.  Clients who do not need access to specific themes may instead 
- * attach listeners to these registries directly.  
- * 
- * <p>
- * This interface is not intended to be implemented or extended by clients.
- * </p>
- * 
- * @see org.eclipse.ui.IWorkbench#getThemeManager()
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IThemeManager {
-
-    /**
-     * Indicates that the current theme has changed to a new theme.
-     */
-    public static final String CHANGE_CURRENT_THEME = "CHANGE_CURRENT_THEME"; //$NON-NLS-1$
-
-    /**
-     * The default theme id.
-     */
-    public static final String DEFAULT_THEME = "org.eclipse.ui.defaultTheme"; //$NON-NLS-1$ 
-
-    /**
-     * Adds a property listener to the manager.  Any events fired by the 
-     * underlying registries of the current theme will cause an event to be 
-     * fired.  This event is the same event that was fired by the registry.
-     * As such, the "source" attribute of the event will not be this manager, 
-     * but rather the color or font registry.  Additionally, an event is fired 
-     * when the current theme changes to a new theme.  The "property" attribute
-     * of such an event will have the value {@link IThemeManager#CHANGE_CURRENT_THEME}.
-     * 
-     * @param listener the listener to add
-     */
-    void addPropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Get the currently active theme.
-     * 
-     * @return the current theme.  This will never be <code>null</code>.
-     */
-    ITheme getCurrentTheme();
-
-    /**
-     * Get a theme.
-     * 
-     * @param id the theme to find.
-     * @return the <code>ITheme</code> or <code>null</code> if it cannot be found.
-     */
-    ITheme getTheme(String id);
-
-    /**
-     * Removes a property listener from the workbench.
-     * 
-     * @param listener the listener to remove 
-     */
-    void removePropertyChangeListener(IPropertyChangeListener listener);
-
-    /**
-     * Set the currently active theme.
-     * 
-     * @param id the id of the new active theme
-     */
-    void setCurrentTheme(String id);
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemePreview.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemePreview.java
deleted file mode 100644
index 148ecaa..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/IThemePreview.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.themes;
-
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Interface used by theme element developers to preview the usage of their 
- * elements within the colors and fonts preference page.
- * 
- * @since 3.0
- */
-public interface IThemePreview {
-
-    /**
-     * Create the preview control.
-     *  
-     * @param parent the Composite in which to create the example
-     * @param currentTheme the theme to preview
-     */
-    void createControl(Composite parent, ITheme currentTheme);
-
-    /**
-     * Dispose of resources used by this previewer.   This method is called by 
-     * the workbench when appropriate and should never be called by a user.
-     */
-    void dispose();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/RGBBlendColorFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/RGBBlendColorFactory.java
deleted file mode 100644
index fb77ec7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/RGBBlendColorFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.themes;
-
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * A resuable <code>IColorFactory</code> that may be used to blend two colors.  
- * The colors to blend are specified as per method number two in 
- * {@link org.eclipse.core.runtime.IExecutableExtension}.
- * <p>
- * Example usage:
- * <br/>
- * <code>
- * &lt;colorDefinition
- *     label="Red/Blue Blend"
- *     id="example.redblueblend"&gt;
- *     &lt;colorFactory 
- * 				plugin="org.eclipse.ui" 
- * 				class="org.eclipse.ui.themes.RGBBlendColorFactory"&gt;
- *      	&lt;parameter name="color1" value="255,0,0" /&gt;
- *  		&lt;parameter name="color2" value="COLOR_BLUE" /&gt;
- *     &lt;/colorFactory&gt;
- * &lt;/colorDefinition&gt;
- * </code>
- * </p>
- * 
- * <p>
- * The color values may be specified as RGB triples or as SWT constants.
- * </p>
- * 
- * @see org.eclipse.swt.SWT
- * @since 3.0
- */
-public class RGBBlendColorFactory implements IColorFactory,
-        IExecutableExtension {
-
-    private String color1, color2;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.themes.IColorFactory#createColor()
-     */
-    public RGB createColor() {
-        if (color1 == null && color2 == null) {
-            return new RGB(0, 0, 0);
-        } else if (color1 != null && color2 == null) {
-            return ColorUtil.getColorValue(color1);
-        } else if (color1 == null && color2 != null) {
-            return ColorUtil.getColorValue(color2);
-        } else {
-            RGB rgb1 = ColorUtil.getColorValue(color1);
-            RGB rgb2 = ColorUtil.getColorValue(color2);
-            return ColorUtil.blend(rgb1, rgb2);
-        }
-    }
-
-    /**
-     * This executable extension requires parameters to be explicitly declared 
-     * via the second method described in the <code>IExecutableExtension</code> 
-     * documentation.  This class expects that there will be two parameters, 
-     * <code>color1</code> and <code>color2</code>, that describe the two colors
-     * to be blended.  These values may either be RGB triples or SWT constants.
-     * 
-     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
-     */
-    public void setInitializationData(IConfigurationElement config,
-            String propertyName, Object data) throws CoreException {
-
-        if (data instanceof Hashtable) {
-            Hashtable table = (Hashtable) data;
-            color1 = (String) table.get("color1"); //$NON-NLS-1$
-            color2 = (String) table.get("color2"); //$NON-NLS-1$            
-        }
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/package.html
deleted file mode 100644
index 59d2ffd..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/package.html
+++ /dev/null
@@ -1,19 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-This package provides application programming interfaces for interaction
-with the themes.  A theme is a collection of fonts, colors, and supporting data
-that may be used by plugin developers to apply a certain look and feel to their 
-components.  Themes are also used by the workbench to apply look and feel to their
-active presentation component.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IStickyViewDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IStickyViewDescriptor.java
deleted file mode 100644
index c772074..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IStickyViewDescriptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views;
-
-/**
- * Supplemental view interface that describes various sticky characteristics
- * that a view may possess.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.views.IViewRegistry
- * @see org.eclipse.ui.views.IViewDescriptor
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IStickyViewDescriptor {
-    /**
-     * Return the id of the view to be made sticky.
-     * 
-     * @return the id of the view to be made sticky
-     */
-    public String getId();
-
-    /**
-     * Return the location of this sticky view.  Must be one of 
-     * <code>IPageLayout.LEFT</code>, <code>IPageLayout.RIGHT</code>, 
-     * <code>IPageLayout.TOP</code>, or <code>IPageLayout.BOTTOM</code>.
-     * 
-     * @return the location constant
-     */
-    public int getLocation();
-
-    /**
-     * Return whether this view should be closeable.
-     * 
-     * @return whether this view should be closeeable
-     */
-    public boolean isCloseable();
-
-    /**
-     * Return whether this view should be moveable.
-     * 
-     * @return whether this view should be moveable
-     */
-    public boolean isMoveable();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewCategory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewCategory.java
deleted file mode 100644
index 85e735b..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewCategory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.views;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * Represents a categorization of views.
- * 
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.1
- */
-public interface IViewCategory {
-
-    /**
-     * Return the views contained within this category. Never <code>null</code>,
-     * but may be empty.
-     * 
-     * @return the views contained within this category
-     */
-    IViewDescriptor[] getViews();
-
-    /**
-     * Return the id of this category.  Never <code>null</code>.
-     * 
-     * @return the id
-     */
-    String getId();
-
-    /**
-     * Return the human readable name of this view category.  Never <code>null</code>.
-     * 
-     * @return the label
-     */
-    String getLabel();
-
-    /**
-     * Return this categories path. The segments of this path will correspond to
-     * category ids.
-     * 
-     * @return the path
-     */
-    IPath getPath();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewDescriptor.java
deleted file mode 100644
index c38aea7..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewDescriptor.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Markus Alexander Kuppe, Versant Corporation - bug #215797
- *******************************************************************************/
-package org.eclipse.ui.views;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPartDescriptor;
-
-/**
- * This is a view descriptor. It provides a "description" of a given
- * given view so that the view can later be constructed.
- * <p>
- * The view registry provides facilities to map from an extension
- * to a IViewDescriptor.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.views.IViewRegistry
- * @since 3.1 
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IViewDescriptor extends IWorkbenchPartDescriptor, IAdaptable {
-    /**
-     * Creates an instance of the view defined in the descriptor.
-     * 
-     * @return the view part
-     * @throws CoreException thrown if there is a problem creating the part
-     */
-    public IViewPart createView() throws CoreException;
-
-    /**
-     * Returns an array of strings that represent
-     * view's category path. This array will be used
-     * for hierarchical presentation of the
-     * view in places like submenus.
-     * @return array of category tokens or null if not specified.
-     */
-    public String[] getCategoryPath();
-
-    /**
-     * Returns the description of this view.
-     *
-     * @return the description
-     */
-    public String getDescription();
-
-    /**
-     * Returns the id of the view.
-     * 
-     * @return the id
-     */
-    public String getId();
-
-    /**
-     * Returns the descriptor for the icon to show for this view.
-     */
-    public ImageDescriptor getImageDescriptor();
-
-    /**
-     * Returns the label to show for this view.
-     * 
-     * @return the label
-     */
-    public String getLabel();
-
-    /**
-     * Returns the default fast view width ratio for this view.
-     * 
-     * @return the fast view width ratio
-     */
-    public float getFastViewWidthRatio();
-
-    /**
-     * Returns whether this view allows multiple instances.
-     * 
-     * @return whether this view allows multiple instances
-     */
-    public boolean getAllowMultiple();
-
-    /**
-     * Returns whether this view can be restored upon workbench restart.
-     * 
-     * @return whether whether this view can be restored upon workbench restart
-     * @since 3.4
-     */
-    public boolean isRestorable();
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewRegistry.java
deleted file mode 100644
index 1793a57..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/IViewRegistry.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.views;
-
-
-/**
- * The view registry maintains a list of views explicitly registered
- * against the view extension point..
- * <p>
- * The description of a given view is kept in a <code>IViewDescriptor</code>.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.ui.views.IViewDescriptor
- * @see org.eclipse.ui.views.IStickyViewDescriptor
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IViewRegistry {
-    /**
-     * Return a view descriptor with the given extension id.  If no view exists
-     * with the id return <code>null</code>.
-     * Will also return <code>null</code> if the view descriptor exists, but
-     * is filtered by an expression-based activity.
-     * 
-     * @param id the id to search for
-     * @return the descriptor or <code>null</code>
-     */
-    public IViewDescriptor find(String id);
-
-    /**
-     * Returns an array of view categories.
-     * 
-     * @return the categories.  Never <code>null</code>.
-     */
-    public IViewCategory[] getCategories();
-
-    /**
-     * Return a list of views defined in the registry.
-     * 
-     * @return the views.  Never <code>null</code>.
-     */
-    public IViewDescriptor[] getViews();
-
-    /**
-     * Return a list of sticky views defined in the registry.
-     * 
-     * @return the sticky views.  Never <code>null</code>.
-     */
-    public IStickyViewDescriptor[] getStickyViews();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/package.html
deleted file mode 100644
index d73f41a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/views/package.html
+++ /dev/null
@@ -1,16 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction
-with and extension of the Eclipse Platform User Interface.
-<h2>
-Package Specification</h2>
-This package provides API for querying the installed views and their properties.
-The view registry can be obtained using {@link org.eclipse.ui.IWorkbench#getViewRegistry()}.
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardCategory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardCategory.java
deleted file mode 100644
index 110504e..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardCategory.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jan-Hendrik Diederich, Bredex GmbH - bug 201052
- *******************************************************************************/
-package org.eclipse.ui.wizards;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * A wizard category may contain other categories or wizard elements. 
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWizardCategory {
-
-	/**
-	 * Returns the category child object corresponding to the passed path
-	 * (relative to this object), or <code>null</code> if such an object could
-	 * not be found.  The segments of this path should correspond to category ids.
-	 * 
-	 * @param path
-	 *            the search path
-	 * @return the category or <code>null</code>
-	 */
-	IWizardCategory findCategory(IPath path);
-
-	/**
-	 * Find a wizard that has the provided id. This will search recursivly over
-	 * this categories children.
-	 * 
-	 * @param id
-	 *            the id to search for
-	 * @return the wizard or <code>null</code>
-	 */
-	IWizardDescriptor findWizard(String id);
-
-	/**
-	 * Return the immediate child categories.
-	 * 
-	 * @return the child categories. Never <code>null</code>.
-	 */
-	IWizardCategory[] getCategories();
-
-	/**
-	 * Return the identifier of this category.
-	 * 
-	 * @return the identifier of this category
-	 */
-	String getId();
-
-	/**
-	 * Return the label for this category.
-	 * 
-	 * @return the label for this category
-	 */
-	String getLabel();
-
-	/**
-	 * Return the parent category.
-	 * 
-	 * @return the parent category. May be <code>null</code>.
-	 */
-	IWizardCategory getParent();
-
-	/**
-	 * Return this wizards path. The segments of this path will correspond to
-	 * category ids.
-	 * 
-	 * @return the path
-	 */
-	IPath getPath();
-
-	/**
-	 * Return the wizards in this category, minus the wizards which failed
-	 * the Expressions check.
-	 * 
-	 * @return the wizards in this category. Never <code>null</code>
-	 */
-	IWizardDescriptor[] getWizards();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardDescriptor.java
deleted file mode 100644
index bbe8bd9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardDescriptor.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.wizards;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchPartDescriptor;
-import org.eclipse.ui.IWorkbenchWizard;
-
-/**
- * Base interface for all wizards defined via workbench extension points.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWizardDescriptor extends IWorkbenchPartDescriptor, IAdaptable {
-
-	/**
-	 * Answer the selection for the reciever based on whether the it can handle
-	 * the selection. If it can return the selection. If it can handle the
-	 * adapted to IResource value of the selection. If it satisfies neither of
-	 * these conditions return an empty IStructuredSelection.
-	 * 
-	 * @return IStructuredSelection
-	 * @param selection
-	 *            IStructuredSelection
-	 */
-	IStructuredSelection adaptedSelection(IStructuredSelection selection);
-
-	/**
-	 * Return the description.
-	 * 
-	 * @return the description
-	 */
-	String getDescription();
-	
-	/**
-	 * Return the tags associated with this wizard.
-	 * 
-	 * @return the tags associated with this wizard
-	 */
-	String [] getTags();
-	
-	/**
-	 * Create a wizard.
-	 * 
-	 * @return the wizard 
-	 * @throws CoreException thrown if there is a problem creating the wizard
-	 */
-	IWorkbenchWizard createWizard() throws CoreException;
-	
-	/**
-	 * Return the description image for this wizard.
-	 * 
-	 * @return the description image for this wizard or <code>null</code>
-	 */
-	public ImageDescriptor getDescriptionImage();
-
-	/**
-	 * Return the help system href for this wizard.
-	 * 
-	 * @return the help system href for this wizard or <code>null</code>
-	 */
-	String getHelpHref();	
-
-	/**
-	 * Return the category for this wizard.  
-	 * 
-	 * @return the category or <code>null</code>
-	 */
-	IWizardCategory getCategory();
-	
-	/**
-	 * Answer <code>true</code> if this wizard is able to finish without
-	 * loading any pages. This is a hint to any
-	 * {@link org.eclipse.jface.wizard.WizardSelectionPage} or container that
-	 * may contain this wizard to allow the finish button to be pressed without
-	 * actually entering the wizard. If this occurs the
-	 * {@link org.eclipse.jface.wizard.IWizard#performFinish()} method should be
-	 * invoked by the containing wizard without creating any pages.
-	 * 
-	 * @return <code>true</code> if this wizard can finish immediately
-	 */
-	boolean canFinishEarly();
-
-	/**
-	 * Answer <code>true</code> if this wizard has any pages. This is a
-	 * hint to any {@link org.eclipse.jface.wizard.WizardSelectionPage} or
-	 * container that may contain this wizard that they should enable the "Next"
-	 * button, if appropriate.
-	 * 
-	 * @return <code>true</code> if this wizard has wizard pages
-	 */
-	boolean hasPages();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardRegistry.java
deleted file mode 100644
index b981a28..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/IWizardRegistry.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.wizards;
-
-
-/**
- * A registry describing all wizard extensions known to the workbench.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IWizardRegistry {
-
-	/**
-	 * Find a wizard with the given id.
-	 * 
-	 * @param id the id to search for
-	 * @return the wizard descriptor matching the given id or <code>null</code>
-	 */
-	IWizardDescriptor findWizard(String id);
-	
-	/**
-	 * Return the wizards that have been designated as "primary".
-	 * 
-	 * @return the primary wizard descriptors.  Never <code>null</code>.
-	 */
-	IWizardDescriptor [] getPrimaryWizards();
-
-	/**
-	 * Find the category with the given id.
-	 * 
-	 * @param id the id of the category to search for
-	 * @return the category matching the given id or <code>null</code>
-	 */
-	IWizardCategory findCategory(String id);
-	
-	/**
-	 * Return the root category.
-	 * 
-	 * @return the root category.  Never <code>null</code>.
-	 */
-	IWizardCategory getRootCategory();
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/package.html b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/package.html
deleted file mode 100644
index 5077aef..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/wizards/package.html
+++ /dev/null
@@ -1,18 +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">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Application programming interfaces for interaction with and extension of the Eclipse 
-Platform User Interface wizard support. See the org.eclipse.ui.wizards extension 
-point. 
-<h2>
-Package Specification</h2>
-This package provides application programming interfaces for support for wizards 
-such as registries, categories and descriptors. These types are used to build 
-wizard selection interfaces such as the new, import and export wizards. 
-</body>
-</html>
diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
deleted file mode 100644
index fafc70c..0000000
--- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,105 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ui.workbench; singleton:=true
-Bundle-Version: 3.4.1.qualifier
-Bundle-ClassPath: compatibility.jar,
- .
-Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin
-Bundle-ActivationPolicy: lazy
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.ui;ui.workbench=split;mandatory:="ui.workbench",
- org.eclipse.ui.about,
- org.eclipse.ui.actions;ui.workbench=split;mandatory:="ui.workbench",
- org.eclipse.ui.activities,
- org.eclipse.ui.application,
- org.eclipse.ui.branding,
- org.eclipse.ui.browser;ui.workbench=split;mandatory:="ui.workbench",
- org.eclipse.ui.commands,
- org.eclipse.ui.contexts,
- org.eclipse.ui.dialogs;ui.workbench=split;mandatory:="ui.workbench",
- org.eclipse.ui.dnd,
- org.eclipse.ui.fieldassist,
- org.eclipse.ui.handlers,
- org.eclipse.ui.help,
- org.eclipse.ui.internal;ui.workbench=split;mandatory:="ui.workbench";
-  x-friends:="org.eclipse.ui,
-   org.eclipse.ui.intro,
-   org.eclipse.ui.ide,
-   org.eclipse.ui.presentations.r21",
- org.eclipse.ui.internal.about;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.actions;x-internal:=true,
- org.eclipse.ui.internal.activities;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.activities.ws;x-internal:=true,
- org.eclipse.ui.internal.application;x-internal:=true,
- org.eclipse.ui.internal.browser;ui.workbench=split;mandatory:="ui.workbench";x-internal:=true,
- org.eclipse.ui.internal.commands;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.contexts;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.decorators;x-friends:="org.eclipse.ui.ide",
- org.eclipse.ui.internal.dialogs;x-internal:=true,
- org.eclipse.ui.internal.dnd;x-friends:="org.eclipse.ui.intro,org.eclipse.ui.presentations.r21",
- org.eclipse.ui.internal.editorsupport;x-internal:=true,
- org.eclipse.ui.internal.expressions;x-internal:=true,
- org.eclipse.ui.internal.handlers;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.help;x-internal:=true,
- org.eclipse.ui.internal.intro;x-internal:=true,
- org.eclipse.ui.internal.keys;x-internal:=true,
- org.eclipse.ui.internal.keys.model;x-internal:=true,
- org.eclipse.ui.internal.layout;x-friends:="org.eclipse.ui.presentations.r21,org.eclipse.ui.intro",
- org.eclipse.ui.internal.menus;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.misc;x-internal:=true,
- org.eclipse.ui.internal.model;x-internal:=true,
- org.eclipse.ui.internal.operations;x-internal:=true,
- org.eclipse.ui.internal.part;x-internal:=true,
- org.eclipse.ui.internal.preferences;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.presentations;ui.workbench=split;mandatory:="ui.workbench";x-friends:="org.eclipse.ui.presentations.r21",
- org.eclipse.ui.internal.presentations.classic;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.presentations.defaultpresentation;x-internal:=true,
- org.eclipse.ui.internal.presentations.util;x-friends:="org.eclipse.ui.presentations.r21",
- org.eclipse.ui.internal.progress;x-internal:=true,
- org.eclipse.ui.internal.provisional.application;x-internal:=true,
- org.eclipse.ui.internal.provisional.presentations;x-internal:=true,
- org.eclipse.ui.internal.quickaccess;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.registry;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.services;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.splash;x-internal:=true,
- org.eclipse.ui.internal.statushandlers;x-internal:=true,
- org.eclipse.ui.internal.testing;x-internal:=true,
- org.eclipse.ui.internal.themes;x-friends:="org.eclipse.ui",
- org.eclipse.ui.internal.tweaklets;x-internal:=true,
- org.eclipse.ui.internal.util;x-friends:="org.eclipse.ui,org.eclipse.ui.presentations.r21,org.eclipse.ui.ide",
- org.eclipse.ui.internal.wizards;x-internal:=true,
- org.eclipse.ui.internal.wizards.preferences;x-internal:=true,
- org.eclipse.ui.intro,
- org.eclipse.ui.keys,
- org.eclipse.ui.menus,
- org.eclipse.ui.model;ui.workbench=split;mandatory:="ui.workbench",
- org.eclipse.ui.operations,
- org.eclipse.ui.part;ui.workbench=split;mandatory:="ui.workbench",
- org.eclipse.ui.plugin,
- org.eclipse.ui.preferences,
- org.eclipse.ui.presentations,
- org.eclipse.ui.progress,
- org.eclipse.ui.services,
- org.eclipse.ui.splash,
- org.eclipse.ui.statushandlers,
- org.eclipse.ui.swt,
- org.eclipse.ui.testing,
- org.eclipse.ui.themes,
- org.eclipse.ui.views,
- org.eclipse.ui.wizards
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jface;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.swt;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.core.expressions;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jface.databinding;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.core.databinding;bundle-version="[1.0.0,2.0.0)"
-Import-Package: com.ibm.icu.text,
- javax.xml.parsers,
- org.w3c.dom,
- org.xml.sax
-Bundle-RequiredExecutionEnvironment: J2SE-1.4,
- CDC-1.0/Foundation-1.0,
- J2SE-1.3
diff --git a/bundles/org.eclipse.ui.workbench/about.html b/bundles/org.eclipse.ui.workbench/about.html
deleted file mode 100644
index 4602330..0000000
--- a/bundles/org.eclipse.ui.workbench/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 2, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation 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
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.ui.workbench/build.properties b/bundles/org.eclipse.ui.workbench/build.properties
deleted file mode 100644
index fd94d2e..0000000
--- a/bundles/org.eclipse.ui.workbench/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.properties,\
-               plugin.xml,\
-               about.html,\
-               .,\
-               META-INF/,\
-               .options
-src.includes = about.html
-source.. = Eclipse UI/,\
-                       Eclipse UI Editor Support/
diff --git a/bundles/org.eclipse.ui.workbench/plugin.properties b/bundles/org.eclipse.ui.workbench/plugin.properties
deleted file mode 100644
index da386a0..0000000
--- a/bundles/org.eclipse.ui.workbench/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName= Workbench
-providerName= Eclipse.org
diff --git a/bundles/org.eclipse.ui.workbench/plugin.xml b/bundles/org.eclipse.ui.workbench/plugin.xml
deleted file mode 100644
index 007596f..0000000
--- a/bundles/org.eclipse.ui.workbench/plugin.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-
-     <extension
-         point="org.eclipse.core.runtime.preferences">
-      <initializer
-            class="org.eclipse.ui.internal.WorkbenchPreferenceInitializer"/>
-   </extension>
-
-</plugin>
diff --git a/bundles/org.eclipse.ui.workbench/scripts/exportplugin.xml b/bundles/org.eclipse.ui.workbench/scripts/exportplugin.xml
deleted file mode 100644
index 6778fee..0000000
--- a/bundles/org.eclipse.ui.workbench/scripts/exportplugin.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<project name="Export Workbench" default="export" basedir="..">
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.eclipse.ui.workbench" />
-		<property name="version"  value="_2.1.0" />
-		<property name="dest"  value="${destdir}/${plugin}${version}" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-		<jar 
-			jarfile="${dest}/workbench.jar"
-			basedir="bin"
-		/>
-		<copy file="plugin.xml" todir="${dest}"/>
-		<copy file="plugin.properties" todir="${dest}"/>
-		<zip zipfile="${dest}/workbenchsrc.zip">
-		    <fileset dir="Eclipse UI" />
-		    <fileset dir="Eclipse UI Editor Support" />
-  		</zip>				
-	</target>
-
-</project>
\ No newline at end of file